From 5f1551577edbd390dd47ed47cff9c55fa26a743b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 09:31:55 -0300 Subject: [PATCH 001/195] Removing useless if from example --- examples/LinkWireless_demo/src/main.cpp | 30 ++++++++++++------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 40dc9bb..c481558 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -316,29 +316,27 @@ void messageLoop() { // (7) Receive data LinkWireless::Message messages[LINK_WIRELESS_QUEUE_SIZE]; linkWireless->receive(messages); - if (messages[0].packetId != LINK_WIRELESS_END) { - for (u32 i = 0; i < LINK_WIRELESS_QUEUE_SIZE; i++) { - auto message = messages[i]; - if (message.packetId == LINK_WIRELESS_END) - break; + for (u32 i = 0; i < LINK_WIRELESS_QUEUE_SIZE; i++) { + auto message = messages[i]; + if (message.packetId == LINK_WIRELESS_END) + break; #ifndef PROFILING_ENABLED - u32 expected = counters[message.playerId] + 1; + u32 expected = counters[message.playerId] + 1; #endif - counters[message.playerId] = message.data; + counters[message.playerId] = message.data; #ifndef PROFILING_ENABLED - // Check for packet loss - if (altView && message.data != expected) { - lostPackets++; - lastLostPacketPlayerId = message.playerId; - lastLostPacketExpected = expected; - lastLostPacketReceived = message.data; - lastLostPacketReceivedPacketId = message.packetId; - } -#endif + // Check for packet loss + if (altView && message.data != expected) { + lostPackets++; + lastLostPacketPlayerId = message.playerId; + lastLostPacketExpected = expected; + lastLostPacketReceived = message.data; + lastLostPacketReceivedPacketId = message.packetId; } +#endif } // (8) Disconnect From 366518faaf526b0dc30c55ddc8b996d9a1608324 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 09:55:26 -0300 Subject: [PATCH 002/195] Improving documentation --- README.md | 2 ++ lib/LinkCable.hpp | 11 ++++++----- lib/LinkCableMultiboot.hpp | 1 + lib/LinkGPIO.hpp | 2 +- lib/LinkPS2Keyboard.hpp | 2 +- lib/LinkPS2Mouse.hpp | 2 +- lib/LinkRawCable.hpp | 3 +-- lib/LinkSPI.hpp | 3 +-- lib/LinkUART.hpp | 5 ++--- lib/LinkUniversal.hpp | 11 ++++++----- lib/LinkWireless.hpp | 5 ++--- lib/LinkWirelessMultiboot.hpp | 8 +++----- 12 files changed, 27 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 3677315..348ddb4 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,8 @@ Name | Return type | Description ⚠️ for better results, turn on the GBAs **after** calling the `sendRom` method! +⚠️ stop DMA before sending the ROM! _(you might need to stop your audio player)_ + # 🔧👾 LinkRawCable - This is a minimal hardware wrapper designed for the *Multi-Play mode*. diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 74a705d..e4e23d3 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -31,10 +31,11 @@ // That causes packet loss. You REALLY want to use libugba's instead. // (see examples) // -------------------------------------------------------------------------- -// (*2) The hardware is very sensitive to timing. Make sure your interrupt -// handlers are short, so `LINK_CABLE_ISR_SERIAL()` is called on time. -// Another option would be activating nested interrupts by setting -// `REG_IME=1` at the start of your interrupt handler. +// (*2) The hardware is very sensitive to timing. Make sure that +// `LINK_CABLE_ISR_SERIAL()` is handled on time. That means: +// Be careful with DMA usage (which stops the CPU), and write short +// interrupt handlers (or activate nested interrupts by setting +// `REG_IME=1` at the start of your handlers). // -------------------------------------------------------------------------- // `send(...)` restrictions: // - 0xFFFF and 0x0 are reserved values, so don't send them! @@ -118,7 +119,7 @@ class LinkCable { rear = -1; } - int size() { return count; } + u32 size() { return count; } bool isEmpty() { return size() == 0; } bool isFull() { return size() == LINK_CABLE_QUEUE_SIZE; } diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 6702b66..88cb461 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -21,6 +21,7 @@ // -------------------------------------------------------------------------- // considerations: // - for better results, turn on the GBAs after calling the `sendRom` method! +// - stop DMA before sending the ROM! (you might need to stop your audio player) // -------------------------------------------------------------------------- #include diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 7966266..ec2cde4 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -2,7 +2,7 @@ #define LINK_GPIO_H // -------------------------------------------------------------------------- -// A General Purpose Input-Output handler for the Link Port. +// A GPIO handler for the Link Port. // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index d93e23d..66bcf4d 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -2,7 +2,7 @@ #define LINK_PS2_KEYBOARD_H // -------------------------------------------------------------------------- -// A PS/2 Keyboard Adapter for the GBA +// A PS/2 Keyboard Adapter for the GBA. // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 6bd64e5..ae0e82d 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -2,7 +2,7 @@ #define LINK_PS2_MOUSE_H // -------------------------------------------------------------------------- -// A PS/2 Mouse Adapter for the GBA +// A PS/2 Mouse Adapter for the GBA. // (Based on https://github.com/kristopher/PS2-Mouse-Arduino, MIT license) // -------------------------------------------------------------------------- // Usage: diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 646cf7b..438278e 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -127,8 +127,7 @@ class LinkRawCable { } void transferAsync(u16 data) { - transfer( - data, []() { return false; }, true); + transfer(data, []() { return false; }, true); } Response getAsyncData() { diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 05fb5f9..7b401f2 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -170,8 +170,7 @@ class LinkSPI { } void transferAsync(LINK_SPI_DATA_TYPE data) { - transfer( - data, []() { return false; }, true); + transfer(data, []() { return false; }, true); } template diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 9423195..9415095 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -2,7 +2,7 @@ #define LINK_UART_H // -------------------------------------------------------------------------- -// An UART handler for the Link Port (8N1, 7N1, 8E1, 7E1, 8O1, 7E1). +// A UART handler for the Link Port (8N1, 7N1, 8E1, 7E1, 8O1, 7E1). // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: @@ -115,8 +115,7 @@ class LinkUART { } bool readLine(char* string, u32 limit = LINK_UART_QUEUE_SIZE) { - return readLine( - string, []() { return false; }, limit); + return readLine(string, []() { return false; }, limit); } template diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index a2c1371..0df0473 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -2,7 +2,7 @@ #define LINK_UNIVERSAL_H // -------------------------------------------------------------------------- -// A multiplayer connection for the Link Cable and the Wireless Adapter. +// A multiplayer connection for the Link Cable and the Wireless Adapter. // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: @@ -34,10 +34,11 @@ // (see examples) // -------------------------------------------------------------------------- // (*2) For CABLE mode: -// The hardware is very sensitive to timing. Make sure your interrupt -// handlers are short, so `LINK_UNIVERSAL_ISR_SERIAL()` is called on time. -// Another option would be activating nested interrupts by setting -// `REG_IME=1` at the start of your interrupt handler. +// The hardware is very sensitive to timing. Make sure that +// `LINK_CABLE_ISR_SERIAL()` is handled on time. That means: +// Be careful with DMA usage (which stops the CPU), and write short +// interrupt handlers (or activate nested interrupts by setting +// `REG_IME=1` at the start of your handlers). // -------------------------------------------------------------------------- // `send(...)` restrictions: // - 0xFFFF and 0x0 are reserved values, so don't use them! diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index c3c620b..8eb1ec6 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -781,7 +781,7 @@ class LinkWireless { rear = -1; } - int size() { return count; } + u32 size() { return count; } bool isEmpty() { return size() == 0; } bool isFull() { return size() == LINK_WIRELESS_QUEUE_SIZE; } @@ -1585,8 +1585,7 @@ class LinkWireless { } void transferAsync(u32 data) { - linkSPI->transfer( - data, []() { return false; }, true, true); + linkSPI->transfer(data, []() { return false; }, true, true); } u32 transfer(u32 data, bool customAck = true) { diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 6649109..f393601 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -15,7 +15,7 @@ // LinkWirelessMultiboot::Result result = linkWirelessMultiboot->sendRom( // romBytes, // for current ROM, use: ((const u8*)MEM_EWRAM) // romLength, // in bytes -// Multiboot", // game name +// "Multiboot", // game name // "Test", // user name // 0xffff, // game id // 2, // number of players @@ -627,10 +627,8 @@ class LinkWirelessMultiboot { } template - __attribute__((noinline)) Result exchangeData(u8 clientNumber, - F sendAction, - V validatePacket, - C cancel) { + __attribute__((noinline)) Result + exchangeData(u8 clientNumber, F sendAction, V validatePacket, C cancel) { bool hasFinished = false; while (!hasFinished) { if (cancel(progress)) From 7c458e7a3af118596cdf797d0bc81539a63be434 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 10:09:34 -0300 Subject: [PATCH 003/195] FIX: Preventing sync / async transfer collisions in LinkWireless --- lib/LinkWireless.hpp | 47 +++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 8eb1ec6..08d5076 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -189,7 +189,8 @@ class LinkWireless { RECEIVE_DATA_FAILED = 8, ACKNOWLEDGE_FAILED = 9, TIMEOUT = 10, - REMOTE_TIMEOUT = 11 + REMOTE_TIMEOUT = 11, + BUSY_TRY_AGAIN = 12, }; struct Message { @@ -262,6 +263,10 @@ class LinkWireless { lastError = WRONG_STATE; return false; } + if (asyncCommand.isActive) { + lastError = BUSY_TRY_AGAIN; + return false; + } if (std::strlen(gameName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH) { lastError = GAME_NAME_TOO_LONG; return false; @@ -877,6 +882,7 @@ class LinkWireless { volatile bool isReadingMessages = false; volatile bool isAddingMessage = false; volatile bool isPendingClearActive = false; + volatile bool isSendingSyncCommand = false; Error lastError = NONE; volatile bool isEnabled = false; @@ -964,8 +970,8 @@ class LinkWireless { if (state == SERVING && !sessionState.acceptCalled && sessionState.playerCount < config.maxPlayers) { // AcceptConnections (start) - sendCommandAsync(LINK_WIRELESS_COMMAND_ACCEPT_CONNECTIONS); - sessionState.acceptCalled = true; + if (sendCommandAsync(LINK_WIRELESS_COMMAND_ACCEPT_CONNECTIONS)) + sessionState.acceptCalled = true; } else if (state == CONNECTED || isConnected()) { #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH bool shouldReceive = @@ -988,8 +994,8 @@ class LinkWireless { void sendPendingData() { // (irq only) copyOutgoingState(); int lastPacketId = setDataFromOutgoingMessages(); - sendCommandAsync(LINK_WIRELESS_COMMAND_SEND_DATA, true); - clearOutgoingMessagesIfNeeded(lastPacketId); + if (sendCommandAsync(LINK_WIRELESS_COMMAND_SEND_DATA, true)) + clearOutgoingMessagesIfNeeded(lastPacketId); } int setDataFromOutgoingMessages() { // (irq only) @@ -1362,6 +1368,8 @@ class LinkWireless { this->sessionState.tmpMessagesToSend.clear(); else isPendingClearActive = true; + + isSendingSyncCommand = false; } void stop() { @@ -1457,13 +1465,21 @@ class LinkWireless { CommandResult result; u32 command = buildCommand(type, withData ? (u16)nextCommandDataSize : 0); - if (transfer(command) != LINK_WIRELESS_DATA_REQUEST) + LINK_WIRELESS_BARRIER; + isSendingSyncCommand = true; + LINK_WIRELESS_BARRIER; + + if (transfer(command) != LINK_WIRELESS_DATA_REQUEST) { + isSendingSyncCommand = false; return result; + } if (withData) { for (u32 i = 0; i < nextCommandDataSize; i++) { - if (transfer(nextCommandData[i]) != LINK_WIRELESS_DATA_REQUEST) + if (transfer(nextCommandData[i]) != LINK_WIRELESS_DATA_REQUEST) { + isSendingSyncCommand = false; return result; + } } } @@ -1475,20 +1491,27 @@ class LinkWireless { if (header != LINK_WIRELESS_COMMAND_HEADER || ack != type + LINK_WIRELESS_RESPONSE_ACK || - responses > LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH) + responses > LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH) { + isSendingSyncCommand = false; return result; + } for (u32 i = 0; i < responses; i++) result.responses[i] = transfer(LINK_WIRELESS_DATA_REQUEST); result.responsesSize = responses; result.success = true; + + LINK_WIRELESS_BARRIER; + isSendingSyncCommand = false; + LINK_WIRELESS_BARRIER; + return result; } - void sendCommandAsync(u8 type, bool withData = false) { // (irq only) - if (asyncCommand.isActive) - return; + bool sendCommandAsync(u8 type, bool withData = false) { // (irq only) + if (asyncCommand.isActive || isSendingSyncCommand) + return false; asyncCommand.type = type; if (withData) { @@ -1508,6 +1531,8 @@ class LinkWireless { u32 command = buildCommand(type, asyncCommand.totalParameters); transferAsync(command); + + return true; } void updateAsyncCommand(u32 newData) { // (irq only) From af429fa5656e50a0be0b50924b28daed89abcccf Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 10:11:20 -0300 Subject: [PATCH 004/195] Version => v6.4.0 --- examples/LinkCableMultiboot_demo/src/main.cpp | 2 +- examples/LinkCable_basic/src/main.cpp | 2 +- examples/LinkCable_full/src/main.cpp | 4 ++-- examples/LinkCable_stress/src/main.cpp | 4 ++-- examples/LinkGPIO_demo/src/main.cpp | 2 +- examples/LinkPS2Keyboard_demo/src/main.cpp | 2 +- examples/LinkPS2Mouse_demo/src/main.cpp | 2 +- examples/LinkRawCable_demo/src/main.cpp | 2 +- examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp | 2 +- examples/LinkSPI_demo/src/main.cpp | 2 +- examples/LinkUART_demo/src/main.cpp | 2 +- examples/LinkUniversal_basic/src/main.cpp | 2 +- .../LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp | 2 +- examples/LinkWireless_demo/src/main.cpp | 2 +- lib/LinkCable.hpp | 2 +- lib/LinkCableMultiboot.hpp | 2 +- lib/LinkGPIO.hpp | 2 +- lib/LinkPS2Keyboard.hpp | 2 +- lib/LinkPS2Mouse.hpp | 2 +- lib/LinkRawCable.hpp | 2 +- lib/LinkRawWireless.hpp | 2 +- lib/LinkSPI.hpp | 2 +- lib/LinkUART.hpp | 2 +- lib/LinkUniversal.hpp | 2 +- lib/LinkWireless.hpp | 2 +- lib/LinkWirelessMultiboot.hpp | 2 +- lib/LinkWirelessOpenSDK.hpp | 2 +- 27 files changed, 29 insertions(+), 29 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 9ed5b9a..d7691e7 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -49,7 +49,7 @@ int main() { // Sender options if (isSenderMode) { if (result != LinkCableMultiboot::Result::SUCCESS) - log("LinkCableMultiboot_demo\n (v6.3.0)\n\nPress START to send the " + log("LinkCableMultiboot_demo\n (v6.4.0)\n\nPress START to send the " "ROM...\nPress B to set client mode..."); if (keys & KEY_START) { diff --git a/examples/LinkCable_basic/src/main.cpp b/examples/LinkCable_basic/src/main.cpp index 9aecd15..ab15eb2 100644 --- a/examples/LinkCable_basic/src/main.cpp +++ b/examples/LinkCable_basic/src/main.cpp @@ -45,7 +45,7 @@ int main() { u16 keys = ~REG_KEYS & KEY_ANY; linkCable->send(keys + 1); // (avoid using 0) - std::string output = "LinkCable_basic (v6.3.0)\n\n"; + std::string output = "LinkCable_basic (v6.4.0)\n\n"; if (linkCable->isConnected()) { u8 playerCount = linkCable->playerCount(); u8 currentPlayerId = linkCable->currentPlayerId(); diff --git a/examples/LinkCable_full/src/main.cpp b/examples/LinkCable_full/src/main.cpp index a4e47c1..2b14b76 100644 --- a/examples/LinkCable_full/src/main.cpp +++ b/examples/LinkCable_full/src/main.cpp @@ -93,10 +93,10 @@ inline void setUpInterrupts() { void printTutorial() { #ifndef USE_LINK_UNIVERSAL - DEBULOG("LinkCable_full (v6.3.0)"); + DEBULOG("LinkCable_full (v6.4.0)"); #endif #ifdef USE_LINK_UNIVERSAL - DEBULOG("LinkUniversal_full (v6.3.0)"); + DEBULOG("LinkUniversal_full (v6.4.0)"); #endif DEBULOG(""); diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index c6ce241..ad6ccb3 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -89,10 +89,10 @@ int main() { while (true) { #ifndef USE_LINK_UNIVERSAL - std::string output = "LinkCable_stress (v6.3.0)\n\n"; + std::string output = "LinkCable_stress (v6.4.0)\n\n"; #endif #ifdef USE_LINK_UNIVERSAL - std::string output = "LinkUniversal_stress (v6.3.0)\n\n"; + std::string output = "LinkUniversal_stress (v6.4.0)\n\n"; #endif linkConnection->deactivate(); diff --git a/examples/LinkGPIO_demo/src/main.cpp b/examples/LinkGPIO_demo/src/main.cpp index 1f9cb63..fed1d89 100644 --- a/examples/LinkGPIO_demo/src/main.cpp +++ b/examples/LinkGPIO_demo/src/main.cpp @@ -27,7 +27,7 @@ int main() { while (true) { // (3) Use the pins - std::string output = "LinkGPIO_demo (v6.3.0)\n\n"; + std::string output = "LinkGPIO_demo (v6.4.0)\n\n"; // Commands u16 keys = ~REG_KEYS & KEY_ANY; diff --git a/examples/LinkPS2Keyboard_demo/src/main.cpp b/examples/LinkPS2Keyboard_demo/src/main.cpp index 3822a07..f847fc9 100644 --- a/examples/LinkPS2Keyboard_demo/src/main.cpp +++ b/examples/LinkPS2Keyboard_demo/src/main.cpp @@ -37,7 +37,7 @@ int main() { init(); while (true) { - std::string output = "LinkPS2Keyboard_demo (v6.3.0)\n\n"; + std::string output = "LinkPS2Keyboard_demo (v6.4.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkPS2Keyboard->isActive()) { diff --git a/examples/LinkPS2Mouse_demo/src/main.cpp b/examples/LinkPS2Mouse_demo/src/main.cpp index bf84ea5..0bd4af7 100644 --- a/examples/LinkPS2Mouse_demo/src/main.cpp +++ b/examples/LinkPS2Mouse_demo/src/main.cpp @@ -28,7 +28,7 @@ int main() { init(); while (true) { - std::string output = "LinkPS2Mouse_demo (v6.3.0)\n\n"; + std::string output = "LinkPS2Mouse_demo (v6.4.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkPS2Mouse->isActive()) { diff --git a/examples/LinkRawCable_demo/src/main.cpp b/examples/LinkRawCable_demo/src/main.cpp index 8afe7eb..50575a2 100644 --- a/examples/LinkRawCable_demo/src/main.cpp +++ b/examples/LinkRawCable_demo/src/main.cpp @@ -33,7 +33,7 @@ int main() { u16 prevKeys = 0; while (true) { - std::string output = "LinkRawCable_demo (v6.3.0)\n\n"; + std::string output = "LinkRawCable_demo (v6.4.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkRawCable->isActive()) { diff --git a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp index 34651d8..52b484f 100644 --- a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp +++ b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp @@ -139,7 +139,7 @@ void DebugScene::load() { log("---"); log("LinkRawWireless demo"); - log(" (v6.3.0)"); + log(" (v6.4.0)"); log(""); log("START: reset wireless adapter"); log("A: send command"); diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index 82312fc..f2a5b0e 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -32,7 +32,7 @@ int main() { u32 counter = 0; while (true) { - std::string output = "LinkSPI_demo (v6.3.0)\n\n"; + std::string output = "LinkSPI_demo (v6.4.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkSPI->isActive()) { diff --git a/examples/LinkUART_demo/src/main.cpp b/examples/LinkUART_demo/src/main.cpp index cef56a6..5f5222b 100644 --- a/examples/LinkUART_demo/src/main.cpp +++ b/examples/LinkUART_demo/src/main.cpp @@ -32,7 +32,7 @@ int main() { bool firstTransfer = false; while (true) { - std::string output = "LinkUART_demo (v6.3.0)\n\n"; + std::string output = "LinkUART_demo (v6.4.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkUART->isActive()) { diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index 62049bf..b05e081 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -21,7 +21,7 @@ void init() { int main() { init(); - log("LinkUniversal_basic (v6.3.0)\n\n\nPress A to start\n\n\nhold LEFT on " + log("LinkUniversal_basic (v6.4.0)\n\n\nPress A to start\n\n\nhold LEFT on " "start:\n -> force cable\n\nhold RIGHT on start:\n -> force " "wireless\n\nhold UP on start:\n -> force wireless server\n\nhold DOWN " "on start:\n -> force wireless client\n\nhold B on start:\n -> set 2 " diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index c9c22d0..2dac1c4 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -133,7 +133,7 @@ void MultibootScene::load() { log("---"); log("LinkWirelessMultiboot demo"); - log(" (v6.3.0)"); + log(" (v6.4.0)"); log(""); if (fs == NULL) { log("! GBFS file not found"); diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index c481558..b7e2773 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -47,7 +47,7 @@ int main() { start: // Options - log("LinkWireless_demo (v6.3.0)\n\n\n\nPress A to start\n\n\n\n\nhold LEFT " + log("LinkWireless_demo (v6.4.0)\n\n\n\nPress A to start\n\n\n\n\nhold LEFT " "on start:\n -> disable forwarding\n\nhold UP on start:\n -> disable " "retransmission\n\nhold B on start:\n -> set 2 players\n\nhold START on " "start:\n -> async ACK"); diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index e4e23d3..0fbb606 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -68,7 +68,7 @@ #define LINK_CABLE_BIT_GENERAL_PURPOSE_HIGH 15 #define LINK_CABLE_BARRIER asm volatile("" ::: "memory") -static volatile char LINK_CABLE_VERSION[] = "LinkCable/v6.3.0"; +static volatile char LINK_CABLE_VERSION[] = "LinkCable/v6.4.0"; void LINK_CABLE_ISR_VBLANK(); void LINK_CABLE_ISR_SERIAL(); diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 88cb461..0bc35ff 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -56,7 +56,7 @@ return error(FAILURE_DURING_HANDSHAKE); static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = - "LinkCableMultiboot/v6.3.0"; + "LinkCableMultiboot/v6.4.0"; const u8 LINK_CABLE_MULTIBOOT_CLIENT_IDS[] = {0b0010, 0b0100, 0b1000}; diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index ec2cde4..495062f 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -36,7 +36,7 @@ else \ REG &= ~(1 << BIT); -static volatile char LINK_GPIO_VERSION[] = "LinkGPIO/v6.3.0"; +static volatile char LINK_GPIO_VERSION[] = "LinkGPIO/v6.4.0"; const u8 LINK_GPIO_DATA_BITS[] = {2, 3, 1, 0}; const u8 LINK_GPIO_DIRECTION_BITS[] = {6, 7, 5, 4}; diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 66bcf4d..53851b7 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -60,7 +60,7 @@ #define LINK_PS2_KEYBOARD_SO_DATA 0b1000 #define LINK_PS2_KEYBOARD_TIMEOUT_FRAMES 15 // (~250ms) -static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v6.3.0"; +static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v6.4.0"; class LinkPS2Keyboard { public: diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index ae0e82d..18b49ed 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -47,7 +47,7 @@ const u16 LINK_PS2_MOUSE_IRQ_IDS[] = {IRQ_TIMER0, IRQ_TIMER1, IRQ_TIMER2, IRQ_TIMER3}; -static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v6.3.0"; +static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v6.4.0"; class LinkPS2Mouse { public: diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 438278e..2bd1888 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -55,7 +55,7 @@ } \ } -static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v6.3.0"; +static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v6.4.0"; class LinkRawCable { public: diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index 40432cf..f0759b0 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -66,7 +66,7 @@ #define LINK_RAW_WIRELESS_COMMAND_WAIT 0x27 #define LINK_RAW_WIRELESS_COMMAND_BYE 0x3d -static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v6.3.0"; +static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v6.4.0"; const u16 LINK_RAW_WIRELESS_LOGIN_PARTS[] = { 0x494e, 0x494e, 0x544e, 0x544e, 0x4e45, 0x4e45, 0x4f44, 0x4f44, 0x8001}; diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 7b401f2..7fd361c 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -76,7 +76,7 @@ #define LINK_SPI_BIT_GENERAL_PURPOSE_LOW 14 #define LINK_SPI_BIT_GENERAL_PURPOSE_HIGH 15 -static volatile char LINK_SPI_VERSION[] = "LinkSPI/v6.3.0"; +static volatile char LINK_SPI_VERSION[] = "LinkSPI/v6.4.0"; const u32 LINK_SPI_MASK_CLEAR_SO_BIT = ~(1 << LINK_SPI_BIT_SO); const u32 LINK_SPI_MASK_SET_START_BIT = (1 << LINK_SPI_BIT_START); diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 9415095..7a5a5ad 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -46,7 +46,7 @@ #define LINK_UART_BIT_GENERAL_PURPOSE_HIGH 15 #define LINK_UART_BARRIER asm volatile("" ::: "memory") -static volatile char LINK_UART_VERSION[] = "LinkUART/v6.3.0"; +static volatile char LINK_UART_VERSION[] = "LinkUART/v6.4.0"; void LINK_UART_ISR_SERIAL(); diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 0df0473..47fd3d7 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -68,7 +68,7 @@ #define LINK_UNIVERSAL_SERVE_WAIT_FRAMES 60 #define LINK_UNIVERSAL_SERVE_WAIT_FRAMES_RANDOM 30 -static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v6.3.0"; +static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v6.4.0"; void LINK_UNIVERSAL_ISR_VBLANK(); void LINK_UNIVERSAL_ISR_SERIAL(); diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 08d5076..a822225 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -139,7 +139,7 @@ if (!reset()) \ return false; -static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v6.3.0"; +static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v6.4.0"; void LINK_WIRELESS_ISR_VBLANK(); void LINK_WIRELESS_ISR_SERIAL(); diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index f393601..b5a5b71 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -73,7 +73,7 @@ const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_OFFSET = 4; const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_SIZE = 12; static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = - "LinkWirelessMultiboot/v6.3.0"; + "LinkWirelessMultiboot/v6.4.0"; class LinkWirelessMultiboot { public: diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index 955243b..17a0089 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -34,7 +34,7 @@ LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT) static volatile char LINK_WIRELESS_OPEN_SDK_VERSION[] = - "LinkWirelessOpenSDK/v6.3.0"; + "LinkWirelessOpenSDK/v6.4.0"; class LinkWirelessOpenSDK { public: From b7bcd7848d46d863d83f3c472258c9591efdca89 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 10:28:27 -0300 Subject: [PATCH 005/195] Adding pinout and parity check to PS/2 implementation --- README.md | 28 +++++++++++++++++++++++++-- lib/LinkPS2Keyboard.hpp | 43 ++++++++++++++++++++++++++++------------- 2 files changed, 56 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 348ddb4..bfc4dbf 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. ## Usage -- Include the library you want (e.g. [LinkCable.hpp](lib/LinkCable.hpp)) in your game code, and refer to its comments for instructions. Most of these libraries are provided as single header files for simplicity. The only external dependency is **libtonc**, which comes preinstalled with *devkitPro*. +- Include the library you want (e.g. [LinkCable.hpp](lib/LinkCable.hpp)) in your game code, and refer to its comments for instructions. Most of these libraries are provided as single header files for simplicity. The only external dependency is **libtonc**, which comes preinstalled with *devkitARM*. - Check out the [examples](examples) folder. * Builds are available in [Releases](https://github.com/afska/gba-link-connection/releases). * They can be tested on real GBAs or using emulators. @@ -406,6 +406,18 @@ Name | Return type | Description `deactivate()` | - | Deactivates the library. `report(data[3])` | - | Fills the `data` int array with a report. The first int contains _clicks_ that you can check against the bitmasks `LINK_PS2_MOUSE_LEFT_CLICK`, `LINK_PS2_MOUSE_MIDDLE_CLICK`, and `LINK_PS2_MOUSE_RIGHT_CLICK`. The second int is the _X movement_, and the third int is the _Y movement_. +## Pinout + +``` + ____________ +|PS/2 --- GBA| +|------------| +|CLOCK -> SI | +|DATA --> SO | +|VCC ---> VCC| +|GND ---> GND| +``` + # ⌨️ LinkPS2Keyboard A PS/2 keyboard driver for the GBA. Use it to add keyboard support to your homebrew games. @@ -422,4 +434,16 @@ Name | Return type | Description --- | --- | --- `isActive()` | **bool** | Returns whether the library is active or not. `activate()` | - | Activates the library. -`deactivate()` | - | Deactivates the library. \ No newline at end of file +`deactivate()` | - | Deactivates the library. + +## Pinout + +``` + ____________ +|PS/2 --- GBA| +|------------| +|CLOCK -> SI | +|DATA --> SO | +|VCC ---> VCC| +|GND ---> GND| +``` \ No newline at end of file diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 53851b7..02d287a 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -78,6 +78,7 @@ class LinkPS2Keyboard { bitcount = 0; incoming = 0; + parityBit = 0; prevFrame = 0; frameCounter = 0; @@ -94,33 +95,52 @@ class LinkPS2Keyboard { void _onVBlank() { frameCounter++; } void _onSerial() { + if (!isEnabled) + return; + u8 val = (REG_RCNT & LINK_PS2_KEYBOARD_SO_DATA) != 0; u32 nowFrame = frameCounter; if (nowFrame - prevFrame > LINK_PS2_KEYBOARD_TIMEOUT_FRAMES) { bitcount = 0; incoming = 0; + parityBit = 0; } prevFrame = nowFrame; - u8 n = bitcount - 1; - if (n <= 7) - incoming |= (val << n); - bitcount++; - - if (bitcount == 11) { - onEvent(incoming); + if (bitcount == 0 && val == 0) { // start bit detected + // start bit is always 0, so only proceed if val is 0 + bitcount++; + } else if (bitcount >= 1 && bitcount <= 8) { // data bits + incoming |= (val << (bitcount - 1)); + bitcount++; + } else if (bitcount == 9) { // parity bit + // store parity bit for later check + parityBit = val; + bitcount++; + } else if (bitcount == 10) { // stop bit + if (val == 1) { // stop bit should be 1 + // calculate parity (including the stored parity bit from previous IRQ) + u8 parity = 0; + for (u8 i = 0; i < 8; i++) + parity += (incoming >> i) & 1; + parity += parityBit; + if (parity % 2 != 0) // odd parity as expected + onEvent(incoming); + } bitcount = 0; incoming = 0; + parityBit = 0; } } private: bool isEnabled = false; - uint8_t bitcount = 0; - uint8_t incoming = 0; - uint32_t prevFrame = 0; + u8 bitcount = 0; + u8 incoming = 0; + u8 parityBit = 0; + u32 prevFrame = 0; u32 frameCounter = 0; std::function onEvent; }; @@ -135,9 +155,6 @@ inline void LINK_PS2_KEYBOARD_ISR_VBLANK() { } inline void LINK_PS2_KEYBOARD_ISR_SERIAL() { - if (!linkPS2Keyboard->isActive()) - return; - linkPS2Keyboard->_onSerial(); } From a113eccb1f5eb9177e06586d99d461e9211cbd35 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 23:50:29 -0300 Subject: [PATCH 006/195] Dropping tonc dependency in LinkRawCable --- README.md | 2 +- examples/LinkRawCable_demo/src/main.cpp | 6 ++-- lib/LinkRawCable.hpp | 38 ++++++++++++--------- lib/_link_common.h | 44 +++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 20 deletions(-) create mode 100644 lib/_link_common.h diff --git a/README.md b/README.md index bfc4dbf..7691f08 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. ## Usage -- Include the library you want (e.g. [LinkCable.hpp](lib/LinkCable.hpp)) in your game code, and refer to its comments for instructions. Most of these libraries are provided as single header files for simplicity. The only external dependency is **libtonc**, which comes preinstalled with *devkitARM*. +- Include the `lib/` folder in your project's include directory, and use the library you want (e.g. [LinkCable.hpp](lib/LinkCable.hpp)). Refer to its comments for instructions. No external dependencies are required. - Check out the [examples](examples) folder. * Builds are available in [Releases](https://github.com/afska/gba-link-connection/releases). * They can be tested on real GBAs or using emulators. diff --git a/examples/LinkRawCable_demo/src/main.cpp b/examples/LinkRawCable_demo/src/main.cpp index 50575a2..e7b27c7 100644 --- a/examples/LinkRawCable_demo/src/main.cpp +++ b/examples/LinkRawCable_demo/src/main.cpp @@ -1,10 +1,10 @@ +// (0) Include the header +#include "../../../lib/LinkRawCable.hpp" + #include #include #include "../../_lib/interrupt.h" -// (0) Include the header -#include "../../../lib/LinkRawCable.hpp" - void log(std::string text); void wait(u32 verticalLines); inline void VBLANK() {} diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 2bd1888..d795da5 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -17,15 +17,15 @@ // LinkRawCable::Response data = linkRawCable->transfer(0x1234); // // (this blocks the console indefinitely) // - 5) Exchange data with a cancellation callback: -// u16 data = linkRawCable->transfer(0x1234, []() { -// u16 keys = ~REG_KEYS & KEY_ANY; +// auto data = linkRawCable->transfer(0x1234, []() { +// auto keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; // }); // - 6) Exchange data asynchronously: // linkRawCable->transferAsync(0x1234); // // ... // if (linkRawCable->getAsyncState() == LinkRawCable::AsyncState::READY) { -// u16 data = linkRawCable->getAsyncData(); +// auto data = linkRawCable->getAsyncData(); // // ... // } // -------------------------------------------------------------------------- @@ -34,7 +34,7 @@ // - only transfer(...) if isReady() // -------------------------------------------------------------------------- -#include +#include "_link_common.h" #define LINK_RAW_CABLE_MAX_PLAYERS 4 #define LINK_RAW_CABLE_DISCONNECTED 0xffff @@ -58,6 +58,10 @@ static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v6.4.0"; class LinkRawCable { + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + public: enum BaudRate { BAUD_RATE_0, // 9600 bps @@ -162,26 +166,28 @@ class LinkRawCable { volatile bool isEnabled = false; void setMultiPlayMode() { - REG_RCNT = REG_RCNT & ~(1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH); - REG_SIOCNT = (1 << LINK_RAW_CABLE_BIT_MULTIPLAYER); - REG_SIOCNT |= baudRate; - REG_SIOMLT_SEND = 0; + Link::_REG_RCNT = + Link::_REG_RCNT & ~(1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_SIOCNT = (1 << LINK_RAW_CABLE_BIT_MULTIPLAYER); + Link::_REG_SIOCNT |= baudRate; + Link::_REG_SIOMLT_SEND = 0; } void setGeneralPurposeMode() { - REG_RCNT = (REG_RCNT & ~(1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_LOW)) | - (1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_RCNT = + (Link::_REG_RCNT & ~(1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_LOW)) | + (1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH); } - void setData(u16 data) { REG_SIOMLT_SEND = data; } + void setData(u16 data) { Link::_REG_SIOMLT_SEND = data; } Response getData() { Response response = LINK_RAW_CABLE_EMPTY_RESPONSE; for (u32 i = 0; i < LINK_RAW_CABLE_MAX_PLAYERS; i++) - response.data[i] = REG_SIOMULTI[i]; + response.data[i] = Link::_REG_SIOMULTI[i]; response.playerId = - (REG_SIOCNT & (0b11 << LINK_RAW_CABLE_BITS_PLAYER_ID)) >> + (Link::_REG_SIOCNT & (0b11 << LINK_RAW_CABLE_BITS_PLAYER_ID)) >> LINK_RAW_CABLE_BITS_PLAYER_ID; return response; @@ -196,9 +202,9 @@ class LinkRawCable { void setInterruptsOn() { setBitHigh(LINK_RAW_CABLE_BIT_IRQ); } void setInterruptsOff() { setBitLow(LINK_RAW_CABLE_BIT_IRQ); } - bool isBitHigh(u8 bit) { return (REG_SIOCNT >> bit) & 1; } - void setBitHigh(u8 bit) { REG_SIOCNT |= 1 << bit; } - void setBitLow(u8 bit) { REG_SIOCNT &= ~(1 << bit); } + bool isBitHigh(u8 bit) { return (Link::_REG_SIOCNT >> bit) & 1; } + void setBitHigh(u8 bit) { Link::_REG_SIOCNT |= 1 << bit; } + void setBitLow(u8 bit) { Link::_REG_SIOCNT &= ~(1 << bit); } }; extern LinkRawCable* linkRawCable; diff --git a/lib/_link_common.h b/lib/_link_common.h new file mode 100644 index 0000000..4c89d7e --- /dev/null +++ b/lib/_link_common.h @@ -0,0 +1,44 @@ +#ifndef LINK_COMMON_H +#define LINK_COMMON_H + +namespace Link { + +using u32 = unsigned int; +using u16 = unsigned short; +using u8 = unsigned char; + +struct _TMR_REC { + union { + u16 start; + u16 count; + } __attribute__((packed)); + + u16 cnt; +} __attribute__((aligned(4))); + +constexpr u32 _REG_BASE = 0x04000000; + +inline volatile u16& _REG_RCNT = + *reinterpret_cast(_REG_BASE + 0x0134); + +inline volatile u16& _REG_SIOCNT = + *reinterpret_cast(_REG_BASE + 0x0128); + +inline volatile u32& _REG_SIODATA32 = + *reinterpret_cast(_REG_BASE + 0x0120); + +inline volatile u16& _REG_SIODATA8 = + *reinterpret_cast(_REG_BASE + 0x012A); + +inline volatile u16& _REG_SIOMLT_SEND = + *reinterpret_cast(_REG_BASE + 0x012A); + +inline volatile u16* const _REG_SIOMULTI = + reinterpret_cast(_REG_BASE + 0x0120); + +inline volatile _TMR_REC* const _REG_TM = + reinterpret_cast(_REG_BASE + 0x0100); + +} // namespace Link + +#endif // LINK_COMMON_H From c67c324b3149ae07e0f3af52ec80e5f6eae282cb Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 00:11:45 -0300 Subject: [PATCH 007/195] Moving private constants to LinkRawCable --- lib/LinkRawCable.hpp | 91 ++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index d795da5..36c8a0e 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -36,32 +36,26 @@ #include "_link_common.h" -#define LINK_RAW_CABLE_MAX_PLAYERS 4 -#define LINK_RAW_CABLE_DISCONNECTED 0xffff -#define LINK_RAW_CABLE_BIT_SLAVE 2 -#define LINK_RAW_CABLE_BIT_READY 3 -#define LINK_RAW_CABLE_BITS_PLAYER_ID 4 -#define LINK_RAW_CABLE_BIT_ERROR 6 -#define LINK_RAW_CABLE_BIT_START 7 -#define LINK_RAW_CABLE_BIT_MULTIPLAYER 13 -#define LINK_RAW_CABLE_BIT_IRQ 14 -#define LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_LOW 14 -#define LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH 15 -#define LINK_RAW_CABLE_EMPTY_RESPONSE \ - { \ - { \ - LINK_RAW_CABLE_DISCONNECTED, LINK_RAW_CABLE_DISCONNECTED, \ - LINK_RAW_CABLE_DISCONNECTED, LINK_RAW_CABLE_DISCONNECTED \ - } \ - } - static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v6.4.0"; class LinkRawCable { + private: using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; + static constexpr int MAX_PLAYERS = 4; + static constexpr int DISCONNECTED = 0xffff; + static constexpr int BIT_SLAVE = 2; + static constexpr int BIT_READY = 3; + static constexpr int BITS_PLAYER_ID = 4; + static constexpr int BIT_ERROR = 6; + static constexpr int BIT_START = 7; + static constexpr int BIT_MULTIPLAYER = 13; + static constexpr int BIT_IRQ = 14; + static constexpr int BIT_GENERAL_PURPOSE_LOW = 14; + static constexpr int BIT_GENERAL_PURPOSE_HIGH = 15; + public: enum BaudRate { BAUD_RATE_0, // 9600 bps @@ -70,17 +64,24 @@ class LinkRawCable { BAUD_RATE_3 // 115200 bps }; struct Response { - u16 data[LINK_RAW_CABLE_MAX_PLAYERS]; + u16 data[LinkRawCable::MAX_PLAYERS] = {DISCONNECTED, DISCONNECTED, + DISCONNECTED, DISCONNECTED}; int playerId = -1; // (-1 = unknown) }; enum AsyncState { IDLE, WAITING, READY }; + private: + static constexpr Response EMPTY_RESPONSE = { + {DISCONNECTED, DISCONNECTED, DISCONNECTED, DISCONNECTED}, + -1}; + + public: bool isActive() { return isEnabled; } void activate(BaudRate baudRate = BaudRate::BAUD_RATE_1) { this->baudRate = baudRate; this->asyncState = IDLE; - this->asyncData = LINK_RAW_CABLE_EMPTY_RESPONSE; + this->asyncData = LinkRawCable::EMPTY_RESPONSE; setMultiPlayMode(); isEnabled = true; @@ -92,7 +93,7 @@ class LinkRawCable { baudRate = BaudRate::BAUD_RATE_1; asyncState = IDLE; - asyncData = LINK_RAW_CABLE_EMPTY_RESPONSE; + asyncData = LinkRawCable::EMPTY_RESPONSE; } Response transfer(u16 data) { @@ -102,7 +103,7 @@ class LinkRawCable { template Response transfer(u16 data, F cancel, bool _async = false) { if (asyncState != IDLE) - return LINK_RAW_CABLE_EMPTY_RESPONSE; + return LinkRawCable::EMPTY_RESPONSE; setData(data); @@ -116,18 +117,18 @@ class LinkRawCable { startTransfer(); if (_async) - return LINK_RAW_CABLE_EMPTY_RESPONSE; + return LinkRawCable::EMPTY_RESPONSE; while (isSending()) if (cancel()) { stopTransfer(); - return LINK_RAW_CABLE_EMPTY_RESPONSE; + return LinkRawCable::EMPTY_RESPONSE; } if (isReady() && !hasError()) return getData(); - return LINK_RAW_CABLE_EMPTY_RESPONSE; + return LinkRawCable::EMPTY_RESPONSE; } void transferAsync(u16 data) { @@ -136,7 +137,7 @@ class LinkRawCable { Response getAsyncData() { if (asyncState != READY) - return LINK_RAW_CABLE_EMPTY_RESPONSE; + return LinkRawCable::EMPTY_RESPONSE; Response data = asyncData; asyncState = IDLE; @@ -144,8 +145,8 @@ class LinkRawCable { } BaudRate getBaudRate() { return baudRate; } - bool isMaster() { return !isBitHigh(LINK_RAW_CABLE_BIT_SLAVE); } - bool isReady() { return isBitHigh(LINK_RAW_CABLE_BIT_READY); } + bool isMaster() { return !isBitHigh(LinkRawCable::BIT_SLAVE); } + bool isReady() { return isBitHigh(LinkRawCable::BIT_READY); } AsyncState getAsyncState() { return asyncState; } void _onSerial() { @@ -154,7 +155,7 @@ class LinkRawCable { setInterruptsOff(); asyncState = READY; - asyncData = LINK_RAW_CABLE_EMPTY_RESPONSE; + asyncData = LinkRawCable::EMPTY_RESPONSE; if (isReady() && !hasError()) asyncData = getData(); } @@ -162,45 +163,45 @@ class LinkRawCable { private: BaudRate baudRate = BaudRate::BAUD_RATE_1; AsyncState asyncState = IDLE; - Response asyncData = LINK_RAW_CABLE_EMPTY_RESPONSE; + Response asyncData = LinkRawCable::EMPTY_RESPONSE; volatile bool isEnabled = false; void setMultiPlayMode() { Link::_REG_RCNT = - Link::_REG_RCNT & ~(1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH); - Link::_REG_SIOCNT = (1 << LINK_RAW_CABLE_BIT_MULTIPLAYER); + Link::_REG_RCNT & ~(1 << LinkRawCable::BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_SIOCNT = (1 << LinkRawCable::BIT_MULTIPLAYER); Link::_REG_SIOCNT |= baudRate; Link::_REG_SIOMLT_SEND = 0; } void setGeneralPurposeMode() { Link::_REG_RCNT = - (Link::_REG_RCNT & ~(1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_LOW)) | - (1 << LINK_RAW_CABLE_BIT_GENERAL_PURPOSE_HIGH); + (Link::_REG_RCNT & ~(1 << LinkRawCable::BIT_GENERAL_PURPOSE_LOW)) | + (1 << LinkRawCable::BIT_GENERAL_PURPOSE_HIGH); } void setData(u16 data) { Link::_REG_SIOMLT_SEND = data; } Response getData() { - Response response = LINK_RAW_CABLE_EMPTY_RESPONSE; + Response response = LinkRawCable::EMPTY_RESPONSE; - for (u32 i = 0; i < LINK_RAW_CABLE_MAX_PLAYERS; i++) + for (u32 i = 0; i < LinkRawCable::MAX_PLAYERS; i++) response.data[i] = Link::_REG_SIOMULTI[i]; response.playerId = - (Link::_REG_SIOCNT & (0b11 << LINK_RAW_CABLE_BITS_PLAYER_ID)) >> - LINK_RAW_CABLE_BITS_PLAYER_ID; + (Link::_REG_SIOCNT & (0b11 << LinkRawCable::BITS_PLAYER_ID)) >> + LinkRawCable::BITS_PLAYER_ID; return response; } - bool hasError() { return isBitHigh(LINK_RAW_CABLE_BIT_ERROR); } - bool isSending() { return isBitHigh(LINK_RAW_CABLE_BIT_START); } + bool hasError() { return isBitHigh(LinkRawCable::BIT_ERROR); } + bool isSending() { return isBitHigh(LinkRawCable::BIT_START); } - void startTransfer() { setBitHigh(LINK_RAW_CABLE_BIT_START); } - void stopTransfer() { setBitLow(LINK_RAW_CABLE_BIT_START); } + void startTransfer() { setBitHigh(LinkRawCable::BIT_START); } + void stopTransfer() { setBitLow(LinkRawCable::BIT_START); } - void setInterruptsOn() { setBitHigh(LINK_RAW_CABLE_BIT_IRQ); } - void setInterruptsOff() { setBitLow(LINK_RAW_CABLE_BIT_IRQ); } + void setInterruptsOn() { setBitHigh(LinkRawCable::BIT_IRQ); } + void setInterruptsOff() { setBitLow(LinkRawCable::BIT_IRQ); } bool isBitHigh(u8 bit) { return (Link::_REG_SIOCNT >> bit) & 1; } void setBitHigh(u8 bit) { Link::_REG_SIOCNT |= 1 << bit; } From a2f4b523695ac120d56ca095b72526b907f78af0 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 00:54:24 -0300 Subject: [PATCH 008/195] Adding Doxygen-style docs for IDE autocompletion in LinkRawCable --- README.md | 4 +-- lib/LinkRawCable.hpp | 71 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7691f08..3d1f3f3 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. ## Usage -- Include the `lib/` folder in your project's include directory, and use the library you want (e.g. [LinkCable.hpp](lib/LinkCable.hpp)). Refer to its comments for instructions. No external dependencies are required. +- Copy the `lib/` folder into your project's `include` directory and include the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp). For initial instructions and setup details, refer to the big comment block at the beginning of each file, the documentation included here, and the provided examples. No external dependencies are required. - Check out the [examples](examples) folder. * Builds are available in [Releases](https://github.com/afska/gba-link-connection/releases). * They can be tested on real GBAs or using emulators. @@ -125,7 +125,7 @@ Name | Return type | Description `transfer(data, cancel)` | **LinkRawCable::Response** | Like `transfer(data)` but accepts a `cancel()` function. The library will continuously invoke it, and abort the transfer if it returns `true`. `transferAsync(data)` | - | Schedules a `data` transfer and returns. After this, call `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the async data, normal `transfer(...)`s won't do anything! `getAsyncState()` | **LinkRawCable::AsyncState** | Returns the state of the last async transfer (one of `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or `LinkRawCable::AsyncState::READY`). -`getAsyncData()` | **LinkRawCable::Response** | If the async state is `READY`, returns the remote data and switches the state back to `IDLE`. +`getAsyncData()` | **LinkRawCable::Response** | If the async state is `READY`, returns the remote data and switches the state back to `IDLE`. If not, returns an empty response. `isMaster()` | **bool** | Returns whether the console is connected as master or not. Returns garbage when the cable is not properly connected. `isReady()` | **bool** | Returns whether all connected consoles have entered the multiplayer mode. Returns garbage when the cable is not properly connected. `getBaudRate()` | **LinkRawCable::BaudRate** | Returns the current `baudRate`. diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 36c8a0e..bd9e3a3 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -38,6 +38,9 @@ static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v6.4.0"; +/** + * @brief A low level handler for the Link Port (Multi-Play Mode). + */ class LinkRawCable { private: using u32 = unsigned int; @@ -76,8 +79,16 @@ class LinkRawCable { -1}; public: - bool isActive() { return isEnabled; } + /** + * @brief Returns whether the library is active or not. + */ + [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library in a specific `baudRate`. + * @param baudRate One of the enum values from `LinkRawCable::BaudRate`. + * Defaults to `LinkRawCable::BaudRate::BAUD_RATE_1` (38400 bps). + */ void activate(BaudRate baudRate = BaudRate::BAUD_RATE_1) { this->baudRate = baudRate; this->asyncState = IDLE; @@ -87,6 +98,9 @@ class LinkRawCable { isEnabled = true; } + /** + * @brief Deactivates the library. + */ void deactivate() { isEnabled = false; setGeneralPurposeMode(); @@ -96,10 +110,22 @@ class LinkRawCable { asyncData = LinkRawCable::EMPTY_RESPONSE; } + /** + * @brief Exchanges `data` with the connected consoles. Returns the received + * data from each player, including the assigned player id. + * @param data The value to be sent. + */ Response transfer(u16 data) { return transfer(data, []() { return false; }); } + /** + * @brief Exchanges `data` with the connected consoles. Returns the received + * data from each player, including the assigned player id. + * @param data The value to be sent. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted and the return value will be empty. + */ template Response transfer(u16 data, F cancel, bool _async = false) { if (asyncState != IDLE) @@ -131,11 +157,21 @@ class LinkRawCable { return LinkRawCable::EMPTY_RESPONSE; } + /** + * @brief Schedules a `data` transfer and returns. After this, call + * `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the + * async data, normal `transfer(...)`s won't do anything! + * @param data The value to be sent. + */ void transferAsync(u16 data) { transfer(data, []() { return false; }, true); } - Response getAsyncData() { + /** + * @brief If the async state is `READY`, returns the remote data and switches + * the state back to `IDLE`. If not, returns an empty response. + */ + [[nodiscard]] Response getAsyncData() { if (asyncState != READY) return LinkRawCable::EMPTY_RESPONSE; @@ -144,11 +180,34 @@ class LinkRawCable { return data; } - BaudRate getBaudRate() { return baudRate; } - bool isMaster() { return !isBitHigh(LinkRawCable::BIT_SLAVE); } - bool isReady() { return isBitHigh(LinkRawCable::BIT_READY); } - AsyncState getAsyncState() { return asyncState; } + /** + * @brief Returns the current `baudRate`. + */ + [[nodiscard]] BaudRate getBaudRate() { return baudRate; } + /** + * @brief Returns whether the console is connected as master or not. Returns + * garbage when the cable is not properly connected. + */ + [[nodiscard]] bool isMaster() { return !isBitHigh(LinkRawCable::BIT_SLAVE); } + + /** + * @brief Returns whether all connected consoles have entered the multiplayer + * mode. Returns garbage when the cable is not properly connected. + */ + [[nodiscard]] bool isReady() { return isBitHigh(LinkRawCable::BIT_READY); } + + /** + * @brief Returns the state of the last async transfer (one of + * `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or + * `LinkRawCable::AsyncState::READY`). + */ + [[nodiscard]] AsyncState getAsyncState() { return asyncState; } + + /** + * @brief This method is called by the SERIAL interrupt handler. You shouldn't + * call it manually! + */ void _onSerial() { if (!isEnabled || asyncState != WAITING) return; From d6099fa552134a334b3a0510f7ef28ebe8c5816d Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 01:27:33 -0300 Subject: [PATCH 009/195] Removing namespace where inside the class --- lib/LinkRawCable.hpp | 55 +++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index bd9e3a3..d6cb32c 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -67,8 +67,8 @@ class LinkRawCable { BAUD_RATE_3 // 115200 bps }; struct Response { - u16 data[LinkRawCable::MAX_PLAYERS] = {DISCONNECTED, DISCONNECTED, - DISCONNECTED, DISCONNECTED}; + u16 data[MAX_PLAYERS] = {DISCONNECTED, DISCONNECTED, DISCONNECTED, + DISCONNECTED}; int playerId = -1; // (-1 = unknown) }; enum AsyncState { IDLE, WAITING, READY }; @@ -92,7 +92,7 @@ class LinkRawCable { void activate(BaudRate baudRate = BaudRate::BAUD_RATE_1) { this->baudRate = baudRate; this->asyncState = IDLE; - this->asyncData = LinkRawCable::EMPTY_RESPONSE; + this->asyncData = EMPTY_RESPONSE; setMultiPlayMode(); isEnabled = true; @@ -107,7 +107,7 @@ class LinkRawCable { baudRate = BaudRate::BAUD_RATE_1; asyncState = IDLE; - asyncData = LinkRawCable::EMPTY_RESPONSE; + asyncData = EMPTY_RESPONSE; } /** @@ -129,7 +129,7 @@ class LinkRawCable { template Response transfer(u16 data, F cancel, bool _async = false) { if (asyncState != IDLE) - return LinkRawCable::EMPTY_RESPONSE; + return EMPTY_RESPONSE; setData(data); @@ -143,18 +143,18 @@ class LinkRawCable { startTransfer(); if (_async) - return LinkRawCable::EMPTY_RESPONSE; + return EMPTY_RESPONSE; while (isSending()) if (cancel()) { stopTransfer(); - return LinkRawCable::EMPTY_RESPONSE; + return EMPTY_RESPONSE; } if (isReady() && !hasError()) return getData(); - return LinkRawCable::EMPTY_RESPONSE; + return EMPTY_RESPONSE; } /** @@ -173,7 +173,7 @@ class LinkRawCable { */ [[nodiscard]] Response getAsyncData() { if (asyncState != READY) - return LinkRawCable::EMPTY_RESPONSE; + return EMPTY_RESPONSE; Response data = asyncData; asyncState = IDLE; @@ -189,13 +189,13 @@ class LinkRawCable { * @brief Returns whether the console is connected as master or not. Returns * garbage when the cable is not properly connected. */ - [[nodiscard]] bool isMaster() { return !isBitHigh(LinkRawCable::BIT_SLAVE); } + [[nodiscard]] bool isMaster() { return !isBitHigh(BIT_SLAVE); } /** * @brief Returns whether all connected consoles have entered the multiplayer * mode. Returns garbage when the cable is not properly connected. */ - [[nodiscard]] bool isReady() { return isBitHigh(LinkRawCable::BIT_READY); } + [[nodiscard]] bool isReady() { return isBitHigh(BIT_READY); } /** * @brief Returns the state of the last async transfer (one of @@ -214,7 +214,7 @@ class LinkRawCable { setInterruptsOff(); asyncState = READY; - asyncData = LinkRawCable::EMPTY_RESPONSE; + asyncData = EMPTY_RESPONSE; if (isReady() && !hasError()) asyncData = getData(); } @@ -222,45 +222,42 @@ class LinkRawCable { private: BaudRate baudRate = BaudRate::BAUD_RATE_1; AsyncState asyncState = IDLE; - Response asyncData = LinkRawCable::EMPTY_RESPONSE; + Response asyncData = EMPTY_RESPONSE; volatile bool isEnabled = false; void setMultiPlayMode() { - Link::_REG_RCNT = - Link::_REG_RCNT & ~(1 << LinkRawCable::BIT_GENERAL_PURPOSE_HIGH); - Link::_REG_SIOCNT = (1 << LinkRawCable::BIT_MULTIPLAYER); + Link::_REG_RCNT = Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_SIOCNT = (1 << BIT_MULTIPLAYER); Link::_REG_SIOCNT |= baudRate; Link::_REG_SIOMLT_SEND = 0; } void setGeneralPurposeMode() { - Link::_REG_RCNT = - (Link::_REG_RCNT & ~(1 << LinkRawCable::BIT_GENERAL_PURPOSE_LOW)) | - (1 << LinkRawCable::BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_RCNT = (Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_LOW)) | + (1 << BIT_GENERAL_PURPOSE_HIGH); } void setData(u16 data) { Link::_REG_SIOMLT_SEND = data; } Response getData() { - Response response = LinkRawCable::EMPTY_RESPONSE; + Response response = EMPTY_RESPONSE; - for (u32 i = 0; i < LinkRawCable::MAX_PLAYERS; i++) + for (u32 i = 0; i < MAX_PLAYERS; i++) response.data[i] = Link::_REG_SIOMULTI[i]; response.playerId = - (Link::_REG_SIOCNT & (0b11 << LinkRawCable::BITS_PLAYER_ID)) >> - LinkRawCable::BITS_PLAYER_ID; + (Link::_REG_SIOCNT & (0b11 << BITS_PLAYER_ID)) >> BITS_PLAYER_ID; return response; } - bool hasError() { return isBitHigh(LinkRawCable::BIT_ERROR); } - bool isSending() { return isBitHigh(LinkRawCable::BIT_START); } + bool hasError() { return isBitHigh(BIT_ERROR); } + bool isSending() { return isBitHigh(BIT_START); } - void startTransfer() { setBitHigh(LinkRawCable::BIT_START); } - void stopTransfer() { setBitLow(LinkRawCable::BIT_START); } + void startTransfer() { setBitHigh(BIT_START); } + void stopTransfer() { setBitLow(BIT_START); } - void setInterruptsOn() { setBitHigh(LinkRawCable::BIT_IRQ); } - void setInterruptsOff() { setBitLow(LinkRawCable::BIT_IRQ); } + void setInterruptsOn() { setBitHigh(BIT_IRQ); } + void setInterruptsOff() { setBitLow(BIT_IRQ); } bool isBitHigh(u8 bit) { return (Link::_REG_SIOCNT >> bit) & 1; } void setBitHigh(u8 bit) { Link::_REG_SIOCNT |= 1 << bit; } From 94b7dce26a0df2a497ac01886c331853f194d02e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 01:44:57 -0300 Subject: [PATCH 010/195] Dropping tonc dependency in LinkGPIO --- examples/LinkGPIO_demo/src/main.cpp | 6 ++-- lib/LinkGPIO.hpp | 52 ++++++++++++++++------------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/examples/LinkGPIO_demo/src/main.cpp b/examples/LinkGPIO_demo/src/main.cpp index fed1d89..d78e912 100644 --- a/examples/LinkGPIO_demo/src/main.cpp +++ b/examples/LinkGPIO_demo/src/main.cpp @@ -1,9 +1,9 @@ -#include -#include - // (0) Include the header #include "../../../lib/LinkGPIO.hpp" +#include +#include + void log(std::string text); std::string mode(std::string name, LinkGPIO::Pin pin); std::string value(std::string name, LinkGPIO::Pin pin, bool isHigh); diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 495062f..f0b5009 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -24,52 +24,56 @@ // - call reset() when you finish doing GPIO stuff! // -------------------------------------------------------------------------- -#include - -#define LINK_GPIO_RCNT_GENERAL_PURPOSE (1 << 15) -#define LINK_GPIO_SIOCNT_GENERAL_PURPOSE 0 -#define LINK_GPIO_BIT_SI_INTERRUPT 8 -#define LINK_GPIO_GET(REG, BIT) ((REG >> BIT) & 1) -#define LINK_GPIO_SET(REG, BIT, DATA) \ - if (DATA) \ - REG |= 1 << BIT; \ - else \ - REG &= ~(1 << BIT); - -static volatile char LINK_GPIO_VERSION[] = "LinkGPIO/v6.4.0"; - -const u8 LINK_GPIO_DATA_BITS[] = {2, 3, 1, 0}; -const u8 LINK_GPIO_DIRECTION_BITS[] = {6, 7, 5, 4}; +#include "_link_common.h" class LinkGPIO { + private: + using u16 = unsigned short; + using u8 = unsigned char; + + static constexpr int RCNT_GENERAL_PURPOSE = (1 << 15); + static constexpr int SIOCNT_GENERAL_PURPOSE = 0; + static constexpr int BIT_SI_INTERRUPT = 8; + static inline int _GET_BIT(volatile u16 REG, int BIT) { + return (REG >> BIT) & 1; + } + static inline void _SET_BIT(volatile u16& REG, int BIT, bool DATA) { + if (DATA) + REG |= 1 << BIT; + else + REG &= ~(1 << BIT); + } + static constexpr u8 DATA_BITS[] = {2, 3, 1, 0}; + static constexpr u8 DIRECTION_BITS[] = {6, 7, 5, 4}; + public: enum Pin { SI, SO, SD, SC }; enum Direction { INPUT, OUTPUT }; void reset() { - REG_RCNT = LINK_GPIO_RCNT_GENERAL_PURPOSE; - REG_SIOCNT = LINK_GPIO_SIOCNT_GENERAL_PURPOSE; + Link::_REG_RCNT = RCNT_GENERAL_PURPOSE; + Link::_REG_SIOCNT = SIOCNT_GENERAL_PURPOSE; } void setMode(Pin pin, Direction direction) { - LINK_GPIO_SET(REG_RCNT, LINK_GPIO_DIRECTION_BITS[pin], - direction == Direction::OUTPUT); + _SET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin], + direction == Direction::OUTPUT); } Direction getMode(Pin pin) { - return Direction(LINK_GPIO_GET(REG_RCNT, LINK_GPIO_DIRECTION_BITS[pin])); + return Direction(_GET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin])); } bool readPin(Pin pin) { - return (REG_RCNT & (1 << LINK_GPIO_DATA_BITS[pin])) != 0; + return (Link::_REG_RCNT & (1 << DATA_BITS[pin])) != 0; } void writePin(Pin pin, bool isHigh) { - LINK_GPIO_SET(REG_RCNT, LINK_GPIO_DATA_BITS[pin], isHigh); + _SET_BIT(Link::_REG_RCNT, DATA_BITS[pin], isHigh); } void setSIInterrupts(bool isEnabled) { - LINK_GPIO_SET(REG_RCNT, LINK_GPIO_BIT_SI_INTERRUPT, isEnabled); + _SET_BIT(Link::_REG_RCNT, BIT_SI_INTERRUPT, isEnabled); } }; From 4085482c754aec79b359bfbcccc64f015564bcf8 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 01:54:38 -0300 Subject: [PATCH 011/195] Adding Doxygen-style docs for IDE autocompletion in LinkGPIO --- lib/LinkGPIO.hpp | 28 ++++++++++++++++++++++++++++ lib/LinkRawCable.hpp | 3 +++ 2 files changed, 31 insertions(+) diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index f0b5009..bf3d5d6 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -50,28 +50,56 @@ class LinkGPIO { enum Pin { SI, SO, SD, SC }; enum Direction { INPUT, OUTPUT }; + /** + * @brief Resets communication mode to General Purpose. + * \warning Required to initialize the library! + */ void reset() { Link::_REG_RCNT = RCNT_GENERAL_PURPOSE; Link::_REG_SIOCNT = SIOCNT_GENERAL_PURPOSE; } + /** + * @brief Configures a `pin` to use a `direction` (input or output). + * @param pin One of the enum values from `LinkGPIO::Pin`. + * @param direction One of the enum values from `LinkGPIO::Direction`. + */ void setMode(Pin pin, Direction direction) { _SET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin], direction == Direction::OUTPUT); } + /** + * @brief Returns the direction set at `pin`. + */ Direction getMode(Pin pin) { return Direction(_GET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin])); } + /** + * @brief Returns whether a `pin` is *HIGH* or not (when set as an input). + * @param pin One of the enum values from `LinkGPIO::Pin`. + */ bool readPin(Pin pin) { return (Link::_REG_RCNT & (1 << DATA_BITS[pin])) != 0; } + /** + * @brief Sets a `pin` to be high or not (when set as an output). + * + * @param pin One of the enum values from `LinkGPIO::Pin`. + * @param isHigh `true` = HIGH, `false` = LOW. + */ void writePin(Pin pin, bool isHigh) { _SET_BIT(Link::_REG_RCNT, DATA_BITS[pin], isHigh); } + /** + * @brief If it `isEnabled`, an IRQ will be generated when `SI` changes from + * HIGH to LOW. + * + * @param isEnabled Enable SI-falling interrupts. + */ void setSIInterrupts(bool isEnabled) { _SET_BIT(Link::_REG_RCNT, BIT_SI_INTERRUPT, isEnabled); } diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index d6cb32c..07d4cfa 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -266,6 +266,9 @@ class LinkRawCable { extern LinkRawCable* linkRawCable; +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_RAW_CABLE_ISR_SERIAL() { linkRawCable->_onSerial(); } From 80b7d6f294925b43b937fb2e89ed1adcc19a6398 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 01:56:45 -0300 Subject: [PATCH 012/195] Using [[nodiscard]] in LinkGPIO --- lib/LinkGPIO.hpp | 4 ++-- lib/LinkRawCable.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index bf3d5d6..ffbbcaf 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -72,7 +72,7 @@ class LinkGPIO { /** * @brief Returns the direction set at `pin`. */ - Direction getMode(Pin pin) { + [[nodiscard]] Direction getMode(Pin pin) { return Direction(_GET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin])); } @@ -80,7 +80,7 @@ class LinkGPIO { * @brief Returns whether a `pin` is *HIGH* or not (when set as an input). * @param pin One of the enum values from `LinkGPIO::Pin`. */ - bool readPin(Pin pin) { + [[nodiscard]] bool readPin(Pin pin) { return (Link::_REG_RCNT & (1 << DATA_BITS[pin])) != 0; } diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 07d4cfa..e4d2230 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -124,7 +124,7 @@ class LinkRawCable { * data from each player, including the assigned player id. * @param data The value to be sent. * @param cancel A function that will be continuously invoked. If it returns - * `true`, the transfer will be aborted and the return value will be empty. + * `true`, the transfer will be aborted and the response will be empty. */ template Response transfer(u16 data, F cancel, bool _async = false) { From 69fa07409a97cf80d7ecf74ebc0021ce8f611296 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 02:51:12 -0300 Subject: [PATCH 013/195] Version => v7.0.0 --- examples/LinkCableMultiboot_demo/src/main.cpp | 2 +- examples/LinkCable_basic/src/main.cpp | 2 +- examples/LinkCable_full/src/main.cpp | 4 ++-- examples/LinkCable_stress/src/main.cpp | 4 ++-- examples/LinkGPIO_demo/src/main.cpp | 2 +- examples/LinkPS2Keyboard_demo/src/main.cpp | 2 +- examples/LinkPS2Mouse_demo/src/main.cpp | 2 +- examples/LinkRawCable_demo/src/main.cpp | 2 +- examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp | 2 +- examples/LinkSPI_demo/src/main.cpp | 2 +- examples/LinkUART_demo/src/main.cpp | 2 +- examples/LinkUniversal_basic/src/main.cpp | 2 +- .../LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp | 2 +- examples/LinkWireless_demo/src/main.cpp | 2 +- lib/LinkCable.hpp | 2 +- lib/LinkCableMultiboot.hpp | 2 +- lib/LinkPS2Keyboard.hpp | 2 +- lib/LinkPS2Mouse.hpp | 2 +- lib/LinkRawCable.hpp | 2 +- lib/LinkRawWireless.hpp | 2 +- lib/LinkSPI.hpp | 2 +- lib/LinkUART.hpp | 2 +- lib/LinkUniversal.hpp | 2 +- lib/LinkWireless.hpp | 2 +- lib/LinkWirelessMultiboot.hpp | 2 +- lib/LinkWirelessOpenSDK.hpp | 2 +- 26 files changed, 28 insertions(+), 28 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index d7691e7..3563c5f 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -49,7 +49,7 @@ int main() { // Sender options if (isSenderMode) { if (result != LinkCableMultiboot::Result::SUCCESS) - log("LinkCableMultiboot_demo\n (v6.4.0)\n\nPress START to send the " + log("LinkCableMultiboot_demo\n (v7.0.0)\n\nPress START to send the " "ROM...\nPress B to set client mode..."); if (keys & KEY_START) { diff --git a/examples/LinkCable_basic/src/main.cpp b/examples/LinkCable_basic/src/main.cpp index ab15eb2..0c4578c 100644 --- a/examples/LinkCable_basic/src/main.cpp +++ b/examples/LinkCable_basic/src/main.cpp @@ -45,7 +45,7 @@ int main() { u16 keys = ~REG_KEYS & KEY_ANY; linkCable->send(keys + 1); // (avoid using 0) - std::string output = "LinkCable_basic (v6.4.0)\n\n"; + std::string output = "LinkCable_basic (v7.0.0)\n\n"; if (linkCable->isConnected()) { u8 playerCount = linkCable->playerCount(); u8 currentPlayerId = linkCable->currentPlayerId(); diff --git a/examples/LinkCable_full/src/main.cpp b/examples/LinkCable_full/src/main.cpp index 2b14b76..3670c45 100644 --- a/examples/LinkCable_full/src/main.cpp +++ b/examples/LinkCable_full/src/main.cpp @@ -93,10 +93,10 @@ inline void setUpInterrupts() { void printTutorial() { #ifndef USE_LINK_UNIVERSAL - DEBULOG("LinkCable_full (v6.4.0)"); + DEBULOG("LinkCable_full (v7.0.0)"); #endif #ifdef USE_LINK_UNIVERSAL - DEBULOG("LinkUniversal_full (v6.4.0)"); + DEBULOG("LinkUniversal_full (v7.0.0)"); #endif DEBULOG(""); diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index ad6ccb3..7df0236 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -89,10 +89,10 @@ int main() { while (true) { #ifndef USE_LINK_UNIVERSAL - std::string output = "LinkCable_stress (v6.4.0)\n\n"; + std::string output = "LinkCable_stress (v7.0.0)\n\n"; #endif #ifdef USE_LINK_UNIVERSAL - std::string output = "LinkUniversal_stress (v6.4.0)\n\n"; + std::string output = "LinkUniversal_stress (v7.0.0)\n\n"; #endif linkConnection->deactivate(); diff --git a/examples/LinkGPIO_demo/src/main.cpp b/examples/LinkGPIO_demo/src/main.cpp index d78e912..043e2c9 100644 --- a/examples/LinkGPIO_demo/src/main.cpp +++ b/examples/LinkGPIO_demo/src/main.cpp @@ -27,7 +27,7 @@ int main() { while (true) { // (3) Use the pins - std::string output = "LinkGPIO_demo (v6.4.0)\n\n"; + std::string output = "LinkGPIO_demo (v7.0.0)\n\n"; // Commands u16 keys = ~REG_KEYS & KEY_ANY; diff --git a/examples/LinkPS2Keyboard_demo/src/main.cpp b/examples/LinkPS2Keyboard_demo/src/main.cpp index f847fc9..f00efe7 100644 --- a/examples/LinkPS2Keyboard_demo/src/main.cpp +++ b/examples/LinkPS2Keyboard_demo/src/main.cpp @@ -37,7 +37,7 @@ int main() { init(); while (true) { - std::string output = "LinkPS2Keyboard_demo (v6.4.0)\n\n"; + std::string output = "LinkPS2Keyboard_demo (v7.0.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkPS2Keyboard->isActive()) { diff --git a/examples/LinkPS2Mouse_demo/src/main.cpp b/examples/LinkPS2Mouse_demo/src/main.cpp index 0bd4af7..5509664 100644 --- a/examples/LinkPS2Mouse_demo/src/main.cpp +++ b/examples/LinkPS2Mouse_demo/src/main.cpp @@ -28,7 +28,7 @@ int main() { init(); while (true) { - std::string output = "LinkPS2Mouse_demo (v6.4.0)\n\n"; + std::string output = "LinkPS2Mouse_demo (v7.0.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkPS2Mouse->isActive()) { diff --git a/examples/LinkRawCable_demo/src/main.cpp b/examples/LinkRawCable_demo/src/main.cpp index e7b27c7..043832e 100644 --- a/examples/LinkRawCable_demo/src/main.cpp +++ b/examples/LinkRawCable_demo/src/main.cpp @@ -33,7 +33,7 @@ int main() { u16 prevKeys = 0; while (true) { - std::string output = "LinkRawCable_demo (v6.4.0)\n\n"; + std::string output = "LinkRawCable_demo (v7.0.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkRawCable->isActive()) { diff --git a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp index 52b484f..60ab1d2 100644 --- a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp +++ b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp @@ -139,7 +139,7 @@ void DebugScene::load() { log("---"); log("LinkRawWireless demo"); - log(" (v6.4.0)"); + log(" (v7.0.0)"); log(""); log("START: reset wireless adapter"); log("A: send command"); diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index f2a5b0e..a9423d7 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -32,7 +32,7 @@ int main() { u32 counter = 0; while (true) { - std::string output = "LinkSPI_demo (v6.4.0)\n\n"; + std::string output = "LinkSPI_demo (v7.0.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkSPI->isActive()) { diff --git a/examples/LinkUART_demo/src/main.cpp b/examples/LinkUART_demo/src/main.cpp index 5f5222b..53f72a9 100644 --- a/examples/LinkUART_demo/src/main.cpp +++ b/examples/LinkUART_demo/src/main.cpp @@ -32,7 +32,7 @@ int main() { bool firstTransfer = false; while (true) { - std::string output = "LinkUART_demo (v6.4.0)\n\n"; + std::string output = "LinkUART_demo (v7.0.0)\n\n"; u16 keys = ~REG_KEYS & KEY_ANY; if (!linkUART->isActive()) { diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index b05e081..e939c85 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -21,7 +21,7 @@ void init() { int main() { init(); - log("LinkUniversal_basic (v6.4.0)\n\n\nPress A to start\n\n\nhold LEFT on " + log("LinkUniversal_basic (v7.0.0)\n\n\nPress A to start\n\n\nhold LEFT on " "start:\n -> force cable\n\nhold RIGHT on start:\n -> force " "wireless\n\nhold UP on start:\n -> force wireless server\n\nhold DOWN " "on start:\n -> force wireless client\n\nhold B on start:\n -> set 2 " diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index 2dac1c4..aaa25f2 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -133,7 +133,7 @@ void MultibootScene::load() { log("---"); log("LinkWirelessMultiboot demo"); - log(" (v6.4.0)"); + log(" (v7.0.0)"); log(""); if (fs == NULL) { log("! GBFS file not found"); diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index b7e2773..275d5c5 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -47,7 +47,7 @@ int main() { start: // Options - log("LinkWireless_demo (v6.4.0)\n\n\n\nPress A to start\n\n\n\n\nhold LEFT " + log("LinkWireless_demo (v7.0.0)\n\n\n\nPress A to start\n\n\n\n\nhold LEFT " "on start:\n -> disable forwarding\n\nhold UP on start:\n -> disable " "retransmission\n\nhold B on start:\n -> set 2 players\n\nhold START on " "start:\n -> async ACK"); diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 0fbb606..64b215f 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -68,7 +68,7 @@ #define LINK_CABLE_BIT_GENERAL_PURPOSE_HIGH 15 #define LINK_CABLE_BARRIER asm volatile("" ::: "memory") -static volatile char LINK_CABLE_VERSION[] = "LinkCable/v6.4.0"; +static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; void LINK_CABLE_ISR_VBLANK(); void LINK_CABLE_ISR_SERIAL(); diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 0bc35ff..81d8585 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -56,7 +56,7 @@ return error(FAILURE_DURING_HANDSHAKE); static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = - "LinkCableMultiboot/v6.4.0"; + "LinkCableMultiboot/v7.0.0"; const u8 LINK_CABLE_MULTIBOOT_CLIENT_IDS[] = {0b0010, 0b0100, 0b1000}; diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 02d287a..5d80b0a 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -60,7 +60,7 @@ #define LINK_PS2_KEYBOARD_SO_DATA 0b1000 #define LINK_PS2_KEYBOARD_TIMEOUT_FRAMES 15 // (~250ms) -static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v6.4.0"; +static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v7.0.0"; class LinkPS2Keyboard { public: diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 18b49ed..9c98610 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -47,7 +47,7 @@ const u16 LINK_PS2_MOUSE_IRQ_IDS[] = {IRQ_TIMER0, IRQ_TIMER1, IRQ_TIMER2, IRQ_TIMER3}; -static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v6.4.0"; +static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v7.0.0"; class LinkPS2Mouse { public: diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index e4d2230..e991c75 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -36,7 +36,7 @@ #include "_link_common.h" -static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v6.4.0"; +static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v7.0.0"; /** * @brief A low level handler for the Link Port (Multi-Play Mode). diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index f0759b0..6aef489 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -66,7 +66,7 @@ #define LINK_RAW_WIRELESS_COMMAND_WAIT 0x27 #define LINK_RAW_WIRELESS_COMMAND_BYE 0x3d -static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v6.4.0"; +static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v7.0.0"; const u16 LINK_RAW_WIRELESS_LOGIN_PARTS[] = { 0x494e, 0x494e, 0x544e, 0x544e, 0x4e45, 0x4e45, 0x4f44, 0x4f44, 0x8001}; diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 7fd361c..8d08566 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -76,7 +76,7 @@ #define LINK_SPI_BIT_GENERAL_PURPOSE_LOW 14 #define LINK_SPI_BIT_GENERAL_PURPOSE_HIGH 15 -static volatile char LINK_SPI_VERSION[] = "LinkSPI/v6.4.0"; +static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; const u32 LINK_SPI_MASK_CLEAR_SO_BIT = ~(1 << LINK_SPI_BIT_SO); const u32 LINK_SPI_MASK_SET_START_BIT = (1 << LINK_SPI_BIT_START); diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 7a5a5ad..c5fe342 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -46,7 +46,7 @@ #define LINK_UART_BIT_GENERAL_PURPOSE_HIGH 15 #define LINK_UART_BARRIER asm volatile("" ::: "memory") -static volatile char LINK_UART_VERSION[] = "LinkUART/v6.4.0"; +static volatile char LINK_UART_VERSION[] = "LinkUART/v7.0.0"; void LINK_UART_ISR_SERIAL(); diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 47fd3d7..f6c00ba 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -68,7 +68,7 @@ #define LINK_UNIVERSAL_SERVE_WAIT_FRAMES 60 #define LINK_UNIVERSAL_SERVE_WAIT_FRAMES_RANDOM 30 -static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v6.4.0"; +static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v7.0.0"; void LINK_UNIVERSAL_ISR_VBLANK(); void LINK_UNIVERSAL_ISR_SERIAL(); diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index a822225..a944d75 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -139,7 +139,7 @@ if (!reset()) \ return false; -static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v6.4.0"; +static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; void LINK_WIRELESS_ISR_VBLANK(); void LINK_WIRELESS_ISR_SERIAL(); diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index b5a5b71..50a99c5 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -73,7 +73,7 @@ const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_OFFSET = 4; const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_SIZE = 12; static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = - "LinkWirelessMultiboot/v6.4.0"; + "LinkWirelessMultiboot/v7.0.0"; class LinkWirelessMultiboot { public: diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index 17a0089..13044a6 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -34,7 +34,7 @@ LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT) static volatile char LINK_WIRELESS_OPEN_SDK_VERSION[] = - "LinkWirelessOpenSDK/v6.4.0"; + "LinkWirelessOpenSDK/v7.0.0"; class LinkWirelessOpenSDK { public: From aa1c98bfb05eed95e740367fe71bd8240f8e2d3b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 06:55:43 -0300 Subject: [PATCH 014/195] Dropping tonc dependency in LinkSPI --- examples/LinkSPI_demo/src/main.cpp | 6 +- lib/LinkPS2Keyboard.hpp | 4 ++ lib/LinkPS2Mouse.hpp | 2 +- lib/LinkRawCable.hpp | 10 +++- lib/LinkSPI.hpp | 93 +++++++++++++++--------------- 5 files changed, 62 insertions(+), 53 deletions(-) diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index a9423d7..cdab63a 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -1,10 +1,10 @@ +// (0) Include the header +#include "../../../lib/LinkSPI.hpp" + #include #include #include "../../_lib/interrupt.h" -// (0) Include the header -#include "../../../lib/LinkSPI.hpp" - void log(std::string text); void wait(u32 verticalLines); inline void VBLANK() {} diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 5d80b0a..2c5f0b2 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -17,6 +17,10 @@ // linkPS2Keyboard->activate(); // - 4) Handle events in the callback sent to LinkPS2Keyboard's constructor! // -------------------------------------------------------------------------- +// (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. +// That causes packet loss. You REALLY want to use libugba's instead. +// (see examples) +// -------------------------------------------------------------------------- // ____________ // | Pinout | // |PS/2 --- GBA| diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 9c98610..8d713c2 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -8,7 +8,7 @@ // Usage: // - 1) Include this header in your main.cpp file and add: // LinkPS2Mouse* linkPS2Mouse = new LinkPS2Mouse(); -// - 2) Add the required interrupt service routines: (*) +// - 2) Add the required interrupt service routines: // irq_init(NULL); // irq_add(II_TIMER2, NULL); // - 3) Initialize the library with: diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index e991c75..7cd1310 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -7,7 +7,7 @@ // Usage: // - 1) Include this header in your main.cpp file and add: // LinkRawCable* linkRawCable = new LinkRawCable(); -// - 2) (Optional) Add the interrupt service routines: +// - 2) (Optional) Add the interrupt service routines: (*) // irq_init(NULL); // irq_add(II_SERIAL, LINK_RAW_CABLE_ISR_SERIAL); // // (this is only required for `transferAsync`) @@ -17,7 +17,7 @@ // LinkRawCable::Response data = linkRawCable->transfer(0x1234); // // (this blocks the console indefinitely) // - 5) Exchange data with a cancellation callback: -// auto data = linkRawCable->transfer(0x1234, []() { +// LinkRawCable::Response data = linkRawCable->transfer(0x1234, []() { // auto keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; // }); @@ -25,10 +25,14 @@ // linkRawCable->transferAsync(0x1234); // // ... // if (linkRawCable->getAsyncState() == LinkRawCable::AsyncState::READY) { -// auto data = linkRawCable->getAsyncData(); +// LinkRawCable::Response data = linkRawCable->getAsyncData(); // // ... // } // -------------------------------------------------------------------------- +// (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. +// That causes packet loss. You REALLY want to use libugba's instead. +// (see examples) +// -------------------------------------------------------------------------- // considerations: // - don't send 0xFFFF, it's a reserved value that means // - only transfer(...) if isReady() diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 8d08566..ba5ca6d 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -2,7 +2,7 @@ #define LINK_SPI_H // -------------------------------------------------------------------------- -// An SPI handler for the Link Port (Normal Mode, 32bits). +// An SPI handler for the Link Port (Normal Mode, either 32 or 8 bits). // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: @@ -15,18 +15,18 @@ // linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); // // (use LinkSPI::Mode::SLAVE on the other end) // - 4) Exchange 32-bit data with the other end: -// u32 data = linkSPI->transfer(0x12345678); +// auto data = linkSPI->transfer(0x12345678); // // (this blocks the console indefinitely) // - 5) Exchange data with a cancellation callback: -// u32 data = linkSPI->transfer(0x12345678, []() { -// u16 keys = ~REG_KEYS & KEY_ANY; +// auto data = linkSPI->transfer(0x12345678, []() { +// auto keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; // }); // - 6) Exchange data asynchronously: // linkSPI->transferAsync(0x12345678); // // ... // if (linkSPI->getAsyncState() == LinkSPI::AsyncState::READY) { -// u32 data = linkSPI->getAsyncData(); +// auto data = linkSPI->getAsyncData(); // // ... // } // -------------------------------------------------------------------------- @@ -40,7 +40,7 @@ // - don't send 0xFFFFFFFF, it's reserved for errors! // -------------------------------------------------------------------------- -#include +#include "_link_common.h" // 8-bit mode (uncomment to enable) // #define LINK_SPI_8BIT_MODE @@ -53,10 +53,10 @@ #endif #ifdef LINK_SPI_8BIT_MODE -#define LINK_SPI_DATA_REG REG_SIODATA8 +#define LINK_SPI_DATA_REG Link::_REG_SIODATA8 #endif #ifndef LINK_SPI_8BIT_MODE -#define LINK_SPI_DATA_REG REG_SIODATA32 +#define LINK_SPI_DATA_REG Link::_REG_SIODATA32 #endif #ifdef LINK_SPI_8BIT_MODE @@ -66,27 +66,28 @@ #define LINK_SPI_NO_DATA 0xffffffff #endif -#define LINK_SPI_BIT_CLOCK 0 -#define LINK_SPI_BIT_CLOCK_SPEED 1 -#define LINK_SPI_BIT_SI 2 -#define LINK_SPI_BIT_SO 3 -#define LINK_SPI_BIT_START 7 -#define LINK_SPI_BIT_LENGTH 12 -#define LINK_SPI_BIT_IRQ 14 -#define LINK_SPI_BIT_GENERAL_PURPOSE_LOW 14 -#define LINK_SPI_BIT_GENERAL_PURPOSE_HIGH 15 - static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; -const u32 LINK_SPI_MASK_CLEAR_SO_BIT = ~(1 << LINK_SPI_BIT_SO); -const u32 LINK_SPI_MASK_SET_START_BIT = (1 << LINK_SPI_BIT_START); - class LinkSPI { + private: + using u32 = unsigned int; + using u8 = unsigned char; + + static constexpr int BIT_CLOCK = 0; + static constexpr int BIT_CLOCK_SPEED = 1; + static constexpr int BIT_SI = 2; + static constexpr int BIT_SO = 3; + static constexpr int BIT_START = 7; + static constexpr int BIT_LENGTH = 12; + static constexpr int BIT_IRQ = 14; + static constexpr int BIT_GENERAL_PURPOSE_LOW = 14; + static constexpr int BIT_GENERAL_PURPOSE_HIGH = 15; + public: enum Mode { SLAVE, MASTER_256KBPS, MASTER_2MBPS }; enum AsyncState { IDLE, WAITING, READY }; - bool isActive() { return isEnabled; } + [[nodiscard]] bool isActive() { return isEnabled; } void activate(Mode mode) { this->mode = mode; @@ -178,7 +179,7 @@ class LinkSPI { transfer(data, cancel, true); } - LINK_SPI_DATA_TYPE getAsyncData() { + [[nodiscard]] LINK_SPI_DATA_TYPE getAsyncData() { if (asyncState != READY) return LINK_SPI_NO_DATA; @@ -187,10 +188,10 @@ class LinkSPI { return data; } - Mode getMode() { return mode; } + [[nodiscard]] Mode getMode() { return mode; } void setWaitModeActive(bool isActive) { waitMode = isActive; } - bool isWaitModeActive() { return waitMode; } - AsyncState getAsyncState() { return asyncState; } + [[nodiscard]] bool isWaitModeActive() { return waitMode; } + [[nodiscard]] AsyncState getAsyncState() { return asyncState; } void _onSerial(bool _customAck = false) { if (!isEnabled || asyncState != WAITING) @@ -204,9 +205,9 @@ class LinkSPI { asyncData = getData(); } - void _setSOHigh() { setBitHigh(LINK_SPI_BIT_SO); } - void _setSOLow() { setBitLow(LINK_SPI_BIT_SO); } - bool _isSIHigh() { return isBitHigh(LINK_SPI_BIT_SI); } + void _setSOHigh() { setBitHigh(BIT_SO); } + void _setSOLow() { setBitLow(BIT_SO); } + [[nodiscard]] bool _isSIHigh() { return isBitHigh(BIT_SI); } private: Mode mode = Mode::SLAVE; @@ -216,18 +217,18 @@ class LinkSPI { volatile bool isEnabled = false; void setNormalMode32Bit() { - REG_RCNT = REG_RCNT & ~(1 << LINK_SPI_BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_RCNT = Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_HIGH); #ifdef LINK_SPI_8BIT_MODE - REG_SIOCNT = 0; + Link::_REG_SIOCNT = 0; #endif #ifndef LINK_SPI_8BIT_MODE - REG_SIOCNT = 1 << LINK_SPI_BIT_LENGTH; + Link::_REG_SIOCNT = 1 << BIT_LENGTH; #endif } void setGeneralPurposeMode() { - REG_RCNT = (REG_RCNT & ~(1 << LINK_SPI_BIT_GENERAL_PURPOSE_LOW)) | - (1 << LINK_SPI_BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_RCNT = (Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_LOW)) | + (1 << BIT_GENERAL_PURPOSE_HIGH); } void setData(LINK_SPI_DATA_TYPE data) { LINK_SPI_DATA_REG = data; } @@ -235,22 +236,22 @@ class LinkSPI { void enableTransfer() { _setSOLow(); } void disableTransfer() { _setSOHigh(); } - void startTransfer() { setBitHigh(LINK_SPI_BIT_START); } - void stopTransfer() { setBitLow(LINK_SPI_BIT_START); } - bool isReady() { return !isBitHigh(LINK_SPI_BIT_START); } + void startTransfer() { setBitHigh(BIT_START); } + void stopTransfer() { setBitLow(BIT_START); } + bool isReady() { return !isBitHigh(BIT_START); } bool isSlaveReady() { return !_isSIHigh(); } - void setMasterMode() { setBitHigh(LINK_SPI_BIT_CLOCK); } - void setSlaveMode() { setBitLow(LINK_SPI_BIT_CLOCK); } - void set256KbpsSpeed() { setBitLow(LINK_SPI_BIT_CLOCK_SPEED); } - void set2MbpsSpeed() { setBitHigh(LINK_SPI_BIT_CLOCK_SPEED); } - void setInterruptsOn() { setBitHigh(LINK_SPI_BIT_IRQ); } - void setInterruptsOff() { setBitLow(LINK_SPI_BIT_IRQ); } + void setMasterMode() { setBitHigh(BIT_CLOCK); } + void setSlaveMode() { setBitLow(BIT_CLOCK); } + void set256KbpsSpeed() { setBitLow(BIT_CLOCK_SPEED); } + void set2MbpsSpeed() { setBitHigh(BIT_CLOCK_SPEED); } + void setInterruptsOn() { setBitHigh(BIT_IRQ); } + void setInterruptsOff() { setBitLow(BIT_IRQ); } bool isMaster() { return mode != SLAVE; } - bool isBitHigh(u8 bit) { return (REG_SIOCNT >> bit) & 1; } - void setBitHigh(u8 bit) { REG_SIOCNT |= 1 << bit; } - void setBitLow(u8 bit) { REG_SIOCNT &= ~(1 << bit); } + bool isBitHigh(u8 bit) { return (Link::_REG_SIOCNT >> bit) & 1; } + void setBitHigh(u8 bit) { Link::_REG_SIOCNT |= 1 << bit; } + void setBitLow(u8 bit) { Link::_REG_SIOCNT &= ~(1 << bit); } }; extern LinkSPI* linkSPI; From 93dea32481fa58ca546a19c977af0256d6dab5bd Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 07:31:11 -0300 Subject: [PATCH 015/195] Adding Doxygen-style docs for IDE autocompletion in LinkSPI --- README.md | 10 +++-- lib/LinkGPIO.hpp | 1 + lib/LinkRawCable.hpp | 20 ++++----- lib/LinkSPI.hpp | 104 +++++++++++++++++++++++++++++++++++++++---- 4 files changed, 113 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 3d1f3f3..63d095f 100644 --- a/README.md +++ b/README.md @@ -126,9 +126,9 @@ Name | Return type | Description `transferAsync(data)` | - | Schedules a `data` transfer and returns. After this, call `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the async data, normal `transfer(...)`s won't do anything! `getAsyncState()` | **LinkRawCable::AsyncState** | Returns the state of the last async transfer (one of `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or `LinkRawCable::AsyncState::READY`). `getAsyncData()` | **LinkRawCable::Response** | If the async state is `READY`, returns the remote data and switches the state back to `IDLE`. If not, returns an empty response. +`getBaudRate()` | **LinkRawCable::BaudRate** | Returns the current `baudRate`. `isMaster()` | **bool** | Returns whether the console is connected as master or not. Returns garbage when the cable is not properly connected. `isReady()` | **bool** | Returns whether all connected consoles have entered the multiplayer mode. Returns garbage when the cable is not properly connected. -`getBaudRate()` | **LinkRawCable::BaudRate** | Returns the current `baudRate`. - don't send `0xFFFF`, it's a reserved value that means *disconnected client* - only `transfer(...)` if `isReady()` @@ -315,20 +315,22 @@ Name | Return type | Description `transfer(data, cancel)` | **u32** | Like `transfer(data)` but accepts a `cancel()` function. The library will continuously invoke it, and abort the transfer if it returns `true`. `transferAsync(data, [cancel])` | - | Schedules a `data` transfer and returns. After this, call `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the async data, normal `transfer(...)`s won't do anything! `getAsyncState()` | **LinkSPI::AsyncState** | Returns the state of the last async transfer (one of `LinkSPI::AsyncState::IDLE`, `LinkSPI::AsyncState::WAITING`, or `LinkSPI::AsyncState::READY`). -`getAsyncData()` | **u32** | If the async state is `READY`, returns the remote data and switches the state back to `IDLE`. +`getAsyncData()` | **u32** | If the async state is `READY`, returns the remote data and switches the state back to `IDLE`. If not, returns an empty response. `getMode()` | **LinkSPI::Mode** | Returns the current `mode`. `setWaitModeActive(isActive)` | - | Enables or disables `waitMode` (*). `isWaitModeActive()` | **bool** | Returns whether `waitMode` (*) is active or not. -> (*) `waitMode`: The GBA adds an extra feature over SPI. When working as master, it can check whether the other terminal is ready to receive, and wait if it's not. That makes the connection more reliable, but it's not always supported on other hardware units (e.g. the Wireless Adapter), so it must be disabled in those cases. +> (*) `waitMode`: The GBA adds an extra feature over SPI. When working as master, it can check whether the other terminal is ready to receive (ready: `MISO=LOW`), and wait if it's not (not ready: `MISO=HIGH`). That makes the connection more reliable, but it's not always supported on other hardware units (e.g. the Wireless Adapter), so it must be disabled in those cases. > > `waitMode` is disabled by default. +> +> `MISO` means `SO` on the slave side and `SI` on the master side. ⚠️ when using Normal Mode between two GBAs, use a GBC Link Cable! ⚠️ only use the 2Mbps mode with custom hardware (very short wires)! -⚠️ don't send `0xFFFFFFFF`, it's reserved for errors! +⚠️ don't send `0xFFFFFFFF` (or `0xFF` in 8-bit mode), it's reserved for errors! ## SPI Configuration diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index ffbbcaf..1a6f8da 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -28,6 +28,7 @@ class LinkGPIO { private: + using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 7cd1310..5d9aaa9 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -18,7 +18,7 @@ // // (this blocks the console indefinitely) // - 5) Exchange data with a cancellation callback: // LinkRawCable::Response data = linkRawCable->transfer(0x1234, []() { -// auto keys = ~REG_KEYS & KEY_ANY; +// u16 keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; // }); // - 6) Exchange data asynchronously: @@ -171,6 +171,13 @@ class LinkRawCable { transfer(data, []() { return false; }, true); } + /** + * @brief Returns the state of the last async transfer (one of + * `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or + * `LinkRawCable::AsyncState::READY`). + */ + [[nodiscard]] AsyncState getAsyncState() { return asyncState; } + /** * @brief If the async state is `READY`, returns the remote data and switches * the state back to `IDLE`. If not, returns an empty response. @@ -202,15 +209,8 @@ class LinkRawCable { [[nodiscard]] bool isReady() { return isBitHigh(BIT_READY); } /** - * @brief Returns the state of the last async transfer (one of - * `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or - * `LinkRawCable::AsyncState::READY`). - */ - [[nodiscard]] AsyncState getAsyncState() { return asyncState; } - - /** - * @brief This method is called by the SERIAL interrupt handler. You shouldn't - * call it manually! + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! */ void _onSerial() { if (!isEnabled || asyncState != WAITING) diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index ba5ca6d..95e329a 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -15,18 +15,18 @@ // linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); // // (use LinkSPI::Mode::SLAVE on the other end) // - 4) Exchange 32-bit data with the other end: -// auto data = linkSPI->transfer(0x12345678); +// u32 data = linkSPI->transfer(0x12345678); // // (this blocks the console indefinitely) // - 5) Exchange data with a cancellation callback: -// auto data = linkSPI->transfer(0x12345678, []() { -// auto keys = ~REG_KEYS & KEY_ANY; +// u32 data = linkSPI->transfer(0x12345678, []() { +// u16 keys = ~REG_KEYS & KEY_ANY; // return keys & KEY_START; // }); // - 6) Exchange data asynchronously: // linkSPI->transferAsync(0x12345678); // // ... // if (linkSPI->getAsyncState() == LinkSPI::AsyncState::READY) { -// auto data = linkSPI->getAsyncData(); +// u32 data = linkSPI->getAsyncData(); // // ... // } // -------------------------------------------------------------------------- @@ -37,7 +37,7 @@ // considerations: // - when using Normal Mode between two GBAs, use a GBC Link Cable! // - only use the 2Mbps mode with custom hardware (very short wires)! -// - don't send 0xFFFFFFFF, it's reserved for errors! +// - don't send 0xFFFFFFFF (or 0xFF in 8-bit mode), it's reserved for errors! // -------------------------------------------------------------------------- #include "_link_common.h" @@ -68,9 +68,14 @@ static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; +/** + * @brief An SPI handler for the Link Port (Normal Mode, either 32 or 8 bits). + * 32-bit transfers by default. Set `LINK_SPI_8BIT_MODE` for 8-bit transfers. + */ class LinkSPI { private: using u32 = unsigned int; + using u16 = unsigned short; using u8 = unsigned char; static constexpr int BIT_CLOCK = 0; @@ -87,8 +92,17 @@ class LinkSPI { enum Mode { SLAVE, MASTER_256KBPS, MASTER_2MBPS }; enum AsyncState { IDLE, WAITING, READY }; + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library in a specific `mode`. + * + * @param mode One of `LinkSPI::Mode::SLAVE`, `LinkSPI::Mode::MASTER_256KBPS`, + * or `LinkSPI::Mode::MASTER_2MBPS`. + */ void activate(Mode mode) { this->mode = mode; this->waitMode = false; @@ -112,6 +126,9 @@ class LinkSPI { isEnabled = true; } + /** + * @brief Deactivates the library. + */ void deactivate() { isEnabled = false; setGeneralPurposeMode(); @@ -122,10 +139,20 @@ class LinkSPI { asyncData = 0; } + /** + * @brief Exchanges `data` with the other end. Returns the received data. + * @param data The value to be sent. + */ LINK_SPI_DATA_TYPE transfer(LINK_SPI_DATA_TYPE data) { return transfer(data, []() { return false; }); } + /** + * @brief Exchanges `data` with the other end. Returns the received data. + * @param data The value to be sent. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted and the response will be empty. + */ template LINK_SPI_DATA_TYPE transfer(LINK_SPI_DATA_TYPE data, F cancel, @@ -170,15 +197,40 @@ class LinkSPI { return getData(); } + /** + * @brief Schedules a `data` transfer and returns. After this, call + * `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the + * async data, normal `transfer(...)`s won't do anything! + * @param data The value to be sent. + */ void transferAsync(LINK_SPI_DATA_TYPE data) { transfer(data, []() { return false; }, true); } + /** + * @brief Schedules a `data` transfer and returns. After this, call + * `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the + * async data, normal `transfer(...)`s won't do anything! + * @param data The value to be sent. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted and the response will be empty. + */ template void transferAsync(LINK_SPI_DATA_TYPE data, F cancel) { transfer(data, cancel, true); } + /** + * @brief Returns the state of the last async transfer (one of + * `LinkSPI::AsyncState::IDLE`, `LinkSPI::AsyncState::WAITING`, or + * `LinkSPI::AsyncState::READY`). + */ + [[nodiscard]] AsyncState getAsyncState() { return asyncState; } + + /** + * @brief If the async state is `READY`, returns the remote data and switches + * the state back to `IDLE`. If not, returns an empty response. + */ [[nodiscard]] LINK_SPI_DATA_TYPE getAsyncData() { if (asyncState != READY) return LINK_SPI_NO_DATA; @@ -188,11 +240,33 @@ class LinkSPI { return data; } + /** + * @brief Returns the current `mode`. + */ [[nodiscard]] Mode getMode() { return mode; } - void setWaitModeActive(bool isActive) { waitMode = isActive; } - [[nodiscard]] bool isWaitModeActive() { return waitMode; } - [[nodiscard]] AsyncState getAsyncState() { return asyncState; } + /** + * @brief Enables or disables `waitMode`: The GBA adds an extra feature over + * SPI. When working as master, it can check whether the other terminal is + * ready to receive (ready: `MISO=LOW`), and wait if it's not (not ready: + * `MISO=HIGH`). That makes the connection more reliable, but it's not always + * supported on other hardware units (e.g. the Wireless Adapter), so it must + * be disabled in those cases. + * \warning `waitMode` is disabled by default. + * \warning `MISO` means `SO` on the slave side and `SI` on the master side. + */ + void setWaitModeActive(bool isActive) { waitMode = isActive; } + + /** + * @brief Returns whether `waitMode` (*) is active or not. + * \warning See `setWaitModeActive(...)`. + */ + [[nodiscard]] bool isWaitModeActive() { return waitMode; } + + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ void _onSerial(bool _customAck = false) { if (!isEnabled || asyncState != WAITING) return; @@ -205,8 +279,22 @@ class LinkSPI { asyncData = getData(); } + /** + * @brief Sets SO output to HIGH. + * \warning This is internal API! + */ void _setSOHigh() { setBitHigh(BIT_SO); } + + /** + * @brief Sets SO output to LOW. + * \warning This is internal API! + */ void _setSOLow() { setBitLow(BIT_SO); } + + /** + * @brief Returns whether SI is HIGH or LOW. + * \warning This is internal API! + */ [[nodiscard]] bool _isSIHigh() { return isBitHigh(BIT_SI); } private: From c0633cec2c3be788fbf2efd919bf739ad738a1d5 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 08:48:10 -0300 Subject: [PATCH 016/195] Dropping tonc dependency in LinkCableMultiboot --- examples/LinkCableMultiboot_demo/src/main.cpp | 10 +- lib/LinkCableMultiboot.hpp | 189 ++++++++++-------- lib/LinkGPIO.hpp | 29 +-- lib/_link_common.h | 3 + 4 files changed, 132 insertions(+), 99 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 3563c5f..80cb73e 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -1,11 +1,11 @@ -#include -#include -#include "../../_lib/interrupt.h" - -#include "../../../lib/LinkCable.hpp" // (0) Include the header #include "../../../lib/LinkCableMultiboot.hpp" +#include +#include +#include "../../../lib/LinkCable.hpp" +#include "../../_lib/interrupt.h" + void log(std::string text); LinkCable* linkCable = new LinkCable(); diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 81d8585..52fac12 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -24,28 +24,8 @@ // - stop DMA before sending the ROM! (you might need to stop your audio player) // -------------------------------------------------------------------------- -#include -#include #include "LinkRawCable.hpp" -#define LINK_CABLE_MULTIBOOT_MIN_ROM_SIZE (0x100 + 0xc0) -#define LINK_CABLE_MULTIBOOT_MAX_ROM_SIZE (256 * 1024) -#define LINK_CABLE_MULTIBOOT_WAIT_BEFORE_RETRY ((160 + 68) * 60) -#define LINK_CABLE_MULTIBOOT_WAIT_BEFORE_TRANSFER 50 -#define LINK_CABLE_MULTIBOOT_DETECTION_TRIES 16 -#define LINK_CABLE_MULTIBOOT_PALETTE_DATA 0x93 -#define LINK_CABLE_MULTIBOOT_CLIENTS 3 -#define LINK_CABLE_MULTIBOOT_CLIENT_NO_DATA 0xff -#define LINK_CABLE_MULTIBOOT_HANDSHAKE 0x6200 -#define LINK_CABLE_MULTIBOOT_HANDSHAKE_RESPONSE 0x7200 -#define LINK_CABLE_MULTIBOOT_CONFIRM_CLIENTS 0x6100 -#define LINK_CABLE_MULTIBOOT_SEND_PALETTE 0x6300 -#define LINK_CABLE_MULTIBOOT_HANDSHAKE_DATA 0x11 -#define LINK_CABLE_MULTIBOOT_CONFIRM_HANDSHAKE_DATA 0x6400 -#define LINK_CABLE_MULTIBOOT_ACK_RESPONSE 0x73 -#define LINK_CABLE_MULTIBOOT_HEADER_SIZE 0xC0 -#define LINK_CABLE_MULTIBOOT_SWI_MULTIPLAYER_MODE 1 -#define LINK_CABLE_MULTIBOOT_MAX_BAUD_RATE LinkRawCable::BaudRate::BAUD_RATE_3 #define LINK_CABLE_MULTIBOOT_TRY(CALL) \ do { \ partialResult = CALL; \ @@ -58,9 +38,68 @@ static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = "LinkCableMultiboot/v7.0.0"; -const u8 LINK_CABLE_MULTIBOOT_CLIENT_IDS[] = {0b0010, 0b0100, 0b1000}; - class LinkCableMultiboot { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + + static constexpr int MIN_ROM_SIZE = 0x100 + 0xc0; + static constexpr int MAX_ROM_SIZE = 256 * 1024; + static constexpr int WAIT_BEFORE_RETRY = (160 + 68) * 60; + static constexpr int WAIT_BEFORE_TRANSFER = 50; + static constexpr int DETECTION_TRIES = 16; + static constexpr int PALETTE_DATA = 0x93; + static constexpr int CLIENTS = 3; + static constexpr int CLIENT_NO_DATA = 0xff; + static constexpr int HANDSHAKE = 0x6200; + static constexpr int HANDSHAKE_RESPONSE = 0x7200; + static constexpr int CONFIRM_CLIENTS = 0x6100; + static constexpr int SEND_PALETTE = 0x6300; + static constexpr int HANDSHAKE_DATA = 0x11; + static constexpr int CONFIRM_HANDSHAKE_DATA = 0x6400; + static constexpr int ACK_RESPONSE = 0x73; + static constexpr int HEADER_SIZE = 0xC0; + static constexpr int SWI_MULTIPLAYER_MODE = 1; + static constexpr auto MAX_BAUD_RATE = LinkRawCable::BaudRate::BAUD_RATE_3; + static constexpr u8 CLIENT_IDS[] = {0b0010, 0b0100, 0b1000}; + + typedef struct { + u32 reserved1[5]; + u8 handshake_data; + u8 padding; + u16 handshake_timeout; + u8 probe_count; + u8 client_data[3]; + u8 palette_data; + u8 response_bit; + u8 client_bit; + u8 reserved2; + u8* boot_srcp; + u8* boot_endp; + u8* masterp; + u8* reserved3[3]; + u32 system_work2[4]; + u8 sendflag; + u8 probe_target_bit; + u8 check_wait; + u8 server_type; + } _MultiBootParam; + + inline int _MultiBoot(_MultiBootParam* mb, u32 mode) { + int result; + asm volatile( + "mov r0, %1\n" // mb => r0 + "mov r1, %2\n" // mode => r1 + "swi 0x25\n" // call 0x25 + "mov %0, r0\n" // r0 => output + : "=r"(result) // output + : "r"(mb), "r"(mode) // inputs + : "r0", "r1" // clobbered registers + ); + return result; + } + public: enum Result { SUCCESS, @@ -72,21 +111,21 @@ class LinkCableMultiboot { template Result sendRom(const u8* rom, u32 romSize, F cancel) { - if (romSize < LINK_CABLE_MULTIBOOT_MIN_ROM_SIZE) + if (romSize < MIN_ROM_SIZE) return INVALID_SIZE; - if (romSize > LINK_CABLE_MULTIBOOT_MAX_ROM_SIZE) + if (romSize > MAX_ROM_SIZE) return INVALID_SIZE; if ((romSize % 0x10) != 0) return INVALID_SIZE; PartialResult partialResult; - MultiBootParam multiBootParameters; - multiBootParameters.client_data[0] = LINK_CABLE_MULTIBOOT_CLIENT_NO_DATA; - multiBootParameters.client_data[1] = LINK_CABLE_MULTIBOOT_CLIENT_NO_DATA; - multiBootParameters.client_data[2] = LINK_CABLE_MULTIBOOT_CLIENT_NO_DATA; - multiBootParameters.palette_data = LINK_CABLE_MULTIBOOT_PALETTE_DATA; + _MultiBootParam multiBootParameters; + multiBootParameters.client_data[0] = CLIENT_NO_DATA; + multiBootParameters.client_data[1] = CLIENT_NO_DATA; + multiBootParameters.client_data[2] = CLIENT_NO_DATA; + multiBootParameters.palette_data = PALETTE_DATA; multiBootParameters.client_bit = 0; - multiBootParameters.boot_srcp = (u8*)rom + LINK_CABLE_MULTIBOOT_HEADER_SIZE; + multiBootParameters.boot_srcp = (u8*)rom + HEADER_SIZE; multiBootParameters.boot_endp = (u8*)rom + romSize; LINK_CABLE_MULTIBOOT_TRY(detectClients(multiBootParameters, cancel)) @@ -96,16 +135,15 @@ class LinkCableMultiboot { LINK_CABLE_MULTIBOOT_TRY(reconfirm(multiBootParameters, cancel)) LINK_CABLE_MULTIBOOT_TRY(sendPalette(multiBootParameters, cancel)) - multiBootParameters.handshake_data = (LINK_CABLE_MULTIBOOT_HANDSHAKE_DATA + - multiBootParameters.client_data[0] + - multiBootParameters.client_data[1] + - multiBootParameters.client_data[2]) % - 256; + multiBootParameters.handshake_data = + (HANDSHAKE_DATA + multiBootParameters.client_data[0] + + multiBootParameters.client_data[1] + + multiBootParameters.client_data[2]) % + 256; LINK_CABLE_MULTIBOOT_TRY(confirmHandshakeData(multiBootParameters, cancel)) - int result = MultiBoot(&multiBootParameters, - LINK_CABLE_MULTIBOOT_SWI_MULTIPLAYER_MODE); + int result = _MultiBoot(&multiBootParameters, SWI_MULTIPLAYER_MODE); linkRawCable->deactivate(); @@ -120,22 +158,20 @@ class LinkCableMultiboot { enum PartialResult { NEEDS_RETRY, FINISHED, ABORTED, ERROR }; struct Responses { - u16 d[LINK_CABLE_MULTIBOOT_CLIENTS]; + u16 d[CLIENTS]; }; template - PartialResult detectClients(MultiBootParam& multiBootParameters, F cancel) { - linkRawCable->activate(LINK_CABLE_MULTIBOOT_MAX_BAUD_RATE); + PartialResult detectClients(_MultiBootParam& multiBootParameters, F cancel) { + linkRawCable->activate(MAX_BAUD_RATE); - for (u32 t = 0; t < LINK_CABLE_MULTIBOOT_DETECTION_TRIES; t++) { - auto response = - linkRawCable->transfer(LINK_CABLE_MULTIBOOT_HANDSHAKE, cancel); + for (u32 t = 0; t < DETECTION_TRIES; t++) { + auto response = linkRawCable->transfer(HANDSHAKE, cancel); if (cancel()) return ABORTED; - for (u32 i = 0; i < LINK_CABLE_MULTIBOOT_CLIENTS; i++) { - if ((response.data[1 + i] & 0xfff0) == - LINK_CABLE_MULTIBOOT_HANDSHAKE_RESPONSE) { + for (u32 i = 0; i < CLIENTS; i++) { + if ((response.data[1 + i] & 0xfff0) == HANDSHAKE_RESPONSE) { auto clientId = response.data[1 + i] & 0xf; switch (clientId) { @@ -154,7 +190,7 @@ class LinkCableMultiboot { if (multiBootParameters.client_bit == 0) { linkRawCable->deactivate(); - wait(LINK_CABLE_MULTIBOOT_WAIT_BEFORE_RETRY); + wait(WAIT_BEFORE_RETRY); return NEEDS_RETRY; } @@ -162,30 +198,27 @@ class LinkCableMultiboot { } template - PartialResult confirmClients(MultiBootParam& multiBootParameters, F cancel) { - return compare( - multiBootParameters, - LINK_CABLE_MULTIBOOT_CONFIRM_CLIENTS | multiBootParameters.client_bit, - LINK_CABLE_MULTIBOOT_HANDSHAKE_RESPONSE, cancel); + PartialResult confirmClients(_MultiBootParam& multiBootParameters, F cancel) { + return compare(multiBootParameters, + CONFIRM_CLIENTS | multiBootParameters.client_bit, + HANDSHAKE_RESPONSE, cancel); } template - PartialResult confirmHeader(MultiBootParam& multiBootParameters, F cancel) { - return compare(multiBootParameters, LINK_CABLE_MULTIBOOT_HANDSHAKE, 0, - cancel); + PartialResult confirmHeader(_MultiBootParam& multiBootParameters, F cancel) { + return compare(multiBootParameters, HANDSHAKE, 0, cancel); } template - PartialResult reconfirm(MultiBootParam& multiBootParameters, F cancel) { - return compare(multiBootParameters, LINK_CABLE_MULTIBOOT_HANDSHAKE, - LINK_CABLE_MULTIBOOT_HANDSHAKE_RESPONSE, cancel); + PartialResult reconfirm(_MultiBootParam& multiBootParameters, F cancel) { + return compare(multiBootParameters, HANDSHAKE, HANDSHAKE_RESPONSE, cancel); } template PartialResult sendHeader(const u8* rom, F cancel) { u16* headerOut = (u16*)rom; - for (int i = 0; i < LINK_CABLE_MULTIBOOT_HEADER_SIZE; i += 2) { + for (int i = 0; i < HEADER_SIZE; i += 2) { linkRawCable->transfer(*(headerOut++), cancel); if (cancel()) return ABORTED; @@ -195,25 +228,24 @@ class LinkCableMultiboot { } template - PartialResult sendPalette(MultiBootParam& multiBootParameters, F cancel) { - auto data = - LINK_CABLE_MULTIBOOT_SEND_PALETTE | LINK_CABLE_MULTIBOOT_PALETTE_DATA; + PartialResult sendPalette(_MultiBootParam& multiBootParameters, F cancel) { + auto data = SEND_PALETTE | PALETTE_DATA; auto response = linkRawCable->transfer(data, cancel); if (cancel()) return ABORTED; - for (u32 i = 0; i < LINK_CABLE_MULTIBOOT_CLIENTS; i++) { - if (response.data[1 + i] >> 8 == LINK_CABLE_MULTIBOOT_ACK_RESPONSE) + for (u32 i = 0; i < CLIENTS; i++) { + if (response.data[1 + i] >> 8 == ACK_RESPONSE) multiBootParameters.client_data[i] = response.data[1 + i] & 0xff; } - for (u32 i = 0; i < LINK_CABLE_MULTIBOOT_CLIENTS; i++) { - u8 clientId = LINK_CABLE_MULTIBOOT_CLIENT_IDS[i]; + for (u32 i = 0; i < CLIENTS; i++) { + u8 clientId = CLIENT_IDS[i]; bool isClientConnected = multiBootParameters.client_bit & clientId; - if (isClientConnected && multiBootParameters.client_data[i] == - LINK_CABLE_MULTIBOOT_CLIENT_NO_DATA) + if (isClientConnected && + multiBootParameters.client_data[i] == CLIENT_NO_DATA) return NEEDS_RETRY; } @@ -221,21 +253,18 @@ class LinkCableMultiboot { } template - PartialResult confirmHandshakeData(MultiBootParam& multiBootParameters, + PartialResult confirmHandshakeData(_MultiBootParam& multiBootParameters, F cancel) { - u16 data = LINK_CABLE_MULTIBOOT_CONFIRM_HANDSHAKE_DATA | - multiBootParameters.handshake_data; + u16 data = CONFIRM_HANDSHAKE_DATA | multiBootParameters.handshake_data; auto response = linkRawCable->transfer(data, cancel); if (cancel()) return ABORTED; - return (response.data[1] >> 8) == LINK_CABLE_MULTIBOOT_ACK_RESPONSE - ? FINISHED - : ERROR; + return (response.data[1] >> 8) == ACK_RESPONSE ? FINISHED : ERROR; } template - PartialResult compare(MultiBootParam& multiBootParameters, + PartialResult compare(_MultiBootParam& multiBootParameters, u16 data, u16 expectedResponse, F cancel) { @@ -243,8 +272,8 @@ class LinkCableMultiboot { if (cancel()) return ABORTED; - for (u32 i = 0; i < LINK_CABLE_MULTIBOOT_CLIENTS; i++) { - u8 clientId = LINK_CABLE_MULTIBOOT_CLIENT_IDS[i]; + for (u32 i = 0; i < CLIENTS; i++) { + u8 clientId = CLIENT_IDS[i]; u16 expectedResponseWithId = expectedResponse | clientId; bool isClientConnected = multiBootParameters.client_bit & clientId; @@ -262,12 +291,12 @@ class LinkCableMultiboot { void wait(u32 verticalLines) { u32 count = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; while (count < verticalLines) { - if (REG_VCOUNT != vCount) { + if (Link::_REG_VCOUNT != vCount) { count++; - vCount = REG_VCOUNT; + vCount = Link::_REG_VCOUNT; } }; } diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 1a6f8da..9379ae9 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -35,15 +35,6 @@ class LinkGPIO { static constexpr int RCNT_GENERAL_PURPOSE = (1 << 15); static constexpr int SIOCNT_GENERAL_PURPOSE = 0; static constexpr int BIT_SI_INTERRUPT = 8; - static inline int _GET_BIT(volatile u16 REG, int BIT) { - return (REG >> BIT) & 1; - } - static inline void _SET_BIT(volatile u16& REG, int BIT, bool DATA) { - if (DATA) - REG |= 1 << BIT; - else - REG &= ~(1 << BIT); - } static constexpr u8 DATA_BITS[] = {2, 3, 1, 0}; static constexpr u8 DIRECTION_BITS[] = {6, 7, 5, 4}; @@ -66,15 +57,15 @@ class LinkGPIO { * @param direction One of the enum values from `LinkGPIO::Direction`. */ void setMode(Pin pin, Direction direction) { - _SET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin], - direction == Direction::OUTPUT); + setBit(Link::_REG_RCNT, DIRECTION_BITS[pin], + direction == Direction::OUTPUT); } /** * @brief Returns the direction set at `pin`. */ [[nodiscard]] Direction getMode(Pin pin) { - return Direction(_GET_BIT(Link::_REG_RCNT, DIRECTION_BITS[pin])); + return Direction(getBit(Link::_REG_RCNT, DIRECTION_BITS[pin])); } /** @@ -92,7 +83,7 @@ class LinkGPIO { * @param isHigh `true` = HIGH, `false` = LOW. */ void writePin(Pin pin, bool isHigh) { - _SET_BIT(Link::_REG_RCNT, DATA_BITS[pin], isHigh); + setBit(Link::_REG_RCNT, DATA_BITS[pin], isHigh); } /** @@ -102,7 +93,17 @@ class LinkGPIO { * @param isEnabled Enable SI-falling interrupts. */ void setSIInterrupts(bool isEnabled) { - _SET_BIT(Link::_REG_RCNT, BIT_SI_INTERRUPT, isEnabled); + setBit(Link::_REG_RCNT, BIT_SI_INTERRUPT, isEnabled); + } + + private: + int getBit(volatile u16 reg, int bit) { return (reg >> bit) & 1; } + + void setBit(volatile u16& reg, int bit, bool data) { + if (data) + reg |= 1 << bit; + else + reg &= ~(1 << bit); } }; diff --git a/lib/_link_common.h b/lib/_link_common.h index 4c89d7e..6552727 100644 --- a/lib/_link_common.h +++ b/lib/_link_common.h @@ -36,6 +36,9 @@ inline volatile u16& _REG_SIOMLT_SEND = inline volatile u16* const _REG_SIOMULTI = reinterpret_cast(_REG_BASE + 0x0120); +inline volatile u16& _REG_VCOUNT = + *reinterpret_cast(_REG_BASE + 0x0006); + inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); From 8c3fc70fa77805567300f2c4c808a6369343e9bf Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 09:42:11 -0300 Subject: [PATCH 017/195] Adding Doxygen-style docs for IDE autocompletion in LinkCableMultiboot --- lib/LinkCableMultiboot.hpp | 74 +++++++++++++++----------------------- lib/_link_common.h | 39 ++++++++++++++++++++ 2 files changed, 67 insertions(+), 46 deletions(-) diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 52fac12..3fa9954 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -38,6 +38,10 @@ static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = "LinkCableMultiboot/v7.0.0"; +/** + * @brief A Multiboot tool to send small programs from one GBA to up to 3 + * slaves. + */ class LinkCableMultiboot { private: using u32 = unsigned int; @@ -64,42 +68,6 @@ class LinkCableMultiboot { static constexpr auto MAX_BAUD_RATE = LinkRawCable::BaudRate::BAUD_RATE_3; static constexpr u8 CLIENT_IDS[] = {0b0010, 0b0100, 0b1000}; - typedef struct { - u32 reserved1[5]; - u8 handshake_data; - u8 padding; - u16 handshake_timeout; - u8 probe_count; - u8 client_data[3]; - u8 palette_data; - u8 response_bit; - u8 client_bit; - u8 reserved2; - u8* boot_srcp; - u8* boot_endp; - u8* masterp; - u8* reserved3[3]; - u32 system_work2[4]; - u8 sendflag; - u8 probe_target_bit; - u8 check_wait; - u8 server_type; - } _MultiBootParam; - - inline int _MultiBoot(_MultiBootParam* mb, u32 mode) { - int result; - asm volatile( - "mov r0, %1\n" // mb => r0 - "mov r1, %2\n" // mode => r1 - "swi 0x25\n" // call 0x25 - "mov %0, r0\n" // r0 => output - : "=r"(result) // output - : "r"(mb), "r"(mode) // inputs - : "r0", "r1" // clobbered registers - ); - return result; - } - public: enum Result { SUCCESS, @@ -109,8 +77,17 @@ class LinkCableMultiboot { FAILURE_DURING_TRANSFER }; + /** + * @brief Sends the `rom`. Once completed, the return value should be + * `LinkCableMultiboot::Result::SUCCESS`. + * @param rom A pointer to ROM data. + * @param romSize Size of the ROM in bytes. It must be a number between `448` + * and `262144`, and a multiple of `16`. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted. + */ template - Result sendRom(const u8* rom, u32 romSize, F cancel) { + [[nodiscard]] Result sendRom(const u8* rom, u32 romSize, F cancel) { if (romSize < MIN_ROM_SIZE) return INVALID_SIZE; if (romSize > MAX_ROM_SIZE) @@ -119,7 +96,7 @@ class LinkCableMultiboot { return INVALID_SIZE; PartialResult partialResult; - _MultiBootParam multiBootParameters; + Link::_MultiBootParam multiBootParameters; multiBootParameters.client_data[0] = CLIENT_NO_DATA; multiBootParameters.client_data[1] = CLIENT_NO_DATA; multiBootParameters.client_data[2] = CLIENT_NO_DATA; @@ -143,7 +120,7 @@ class LinkCableMultiboot { LINK_CABLE_MULTIBOOT_TRY(confirmHandshakeData(multiBootParameters, cancel)) - int result = _MultiBoot(&multiBootParameters, SWI_MULTIPLAYER_MODE); + int result = Link::_MultiBoot(&multiBootParameters, SWI_MULTIPLAYER_MODE); linkRawCable->deactivate(); @@ -162,7 +139,8 @@ class LinkCableMultiboot { }; template - PartialResult detectClients(_MultiBootParam& multiBootParameters, F cancel) { + PartialResult detectClients(Link::_MultiBootParam& multiBootParameters, + F cancel) { linkRawCable->activate(MAX_BAUD_RATE); for (u32 t = 0; t < DETECTION_TRIES; t++) { @@ -198,19 +176,22 @@ class LinkCableMultiboot { } template - PartialResult confirmClients(_MultiBootParam& multiBootParameters, F cancel) { + PartialResult confirmClients(Link::_MultiBootParam& multiBootParameters, + F cancel) { return compare(multiBootParameters, CONFIRM_CLIENTS | multiBootParameters.client_bit, HANDSHAKE_RESPONSE, cancel); } template - PartialResult confirmHeader(_MultiBootParam& multiBootParameters, F cancel) { + PartialResult confirmHeader(Link::_MultiBootParam& multiBootParameters, + F cancel) { return compare(multiBootParameters, HANDSHAKE, 0, cancel); } template - PartialResult reconfirm(_MultiBootParam& multiBootParameters, F cancel) { + PartialResult reconfirm(Link::_MultiBootParam& multiBootParameters, + F cancel) { return compare(multiBootParameters, HANDSHAKE, HANDSHAKE_RESPONSE, cancel); } @@ -228,7 +209,8 @@ class LinkCableMultiboot { } template - PartialResult sendPalette(_MultiBootParam& multiBootParameters, F cancel) { + PartialResult sendPalette(Link::_MultiBootParam& multiBootParameters, + F cancel) { auto data = SEND_PALETTE | PALETTE_DATA; auto response = linkRawCable->transfer(data, cancel); @@ -253,7 +235,7 @@ class LinkCableMultiboot { } template - PartialResult confirmHandshakeData(_MultiBootParam& multiBootParameters, + PartialResult confirmHandshakeData(Link::_MultiBootParam& multiBootParameters, F cancel) { u16 data = CONFIRM_HANDSHAKE_DATA | multiBootParameters.handshake_data; auto response = linkRawCable->transfer(data, cancel); @@ -264,7 +246,7 @@ class LinkCableMultiboot { } template - PartialResult compare(_MultiBootParam& multiBootParameters, + PartialResult compare(Link::_MultiBootParam& multiBootParameters, u16 data, u16 expectedResponse, F cancel) { diff --git a/lib/_link_common.h b/lib/_link_common.h index 6552727..ad45a82 100644 --- a/lib/_link_common.h +++ b/lib/_link_common.h @@ -1,6 +1,9 @@ #ifndef LINK_COMMON_H #define LINK_COMMON_H +/** + * @brief This namespace contains the parts of libtonc used by this library. + */ namespace Link { using u32 = unsigned int; @@ -42,6 +45,42 @@ inline volatile u16& _REG_VCOUNT = inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); +typedef struct { + u32 reserved1[5]; + u8 handshake_data; + u8 padding; + u16 handshake_timeout; + u8 probe_count; + u8 client_data[3]; + u8 palette_data; + u8 response_bit; + u8 client_bit; + u8 reserved2; + u8* boot_srcp; + u8* boot_endp; + u8* masterp; + u8* reserved3[3]; + u32 system_work2[4]; + u8 sendflag; + u8 probe_target_bit; + u8 check_wait; + u8 server_type; +} _MultiBootParam; + +inline int _MultiBoot(_MultiBootParam* mb, u32 mode) { + int result; + asm volatile( + "mov r0, %1\n" // mb => r0 + "mov r1, %2\n" // mode => r1 + "swi 0x25\n" // call 0x25 + "mov %0, r0\n" // r0 => output + : "=r"(result) // output + : "r"(mb), "r"(mode) // inputs + : "r0", "r1" // clobbered registers + ); + return result; +} + } // namespace Link #endif // LINK_COMMON_H From be65e8dc9d5a1a5762d1924ca362e412cbb950ad Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 09:56:58 -0300 Subject: [PATCH 018/195] Renaming _link_common.h => _link_common.hpp --- lib/LinkGPIO.hpp | 2 +- lib/LinkRawCable.hpp | 2 +- lib/LinkSPI.hpp | 2 +- lib/{_link_common.h => _link_common.hpp} | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename lib/{_link_common.h => _link_common.hpp} (100%) diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 9379ae9..c3810b8 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -24,7 +24,7 @@ // - call reset() when you finish doing GPIO stuff! // -------------------------------------------------------------------------- -#include "_link_common.h" +#include "_link_common.hpp" class LinkGPIO { private: diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 5d9aaa9..d4556df 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -38,7 +38,7 @@ // - only transfer(...) if isReady() // -------------------------------------------------------------------------- -#include "_link_common.h" +#include "_link_common.hpp" static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v7.0.0"; diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 95e329a..944c22a 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -40,7 +40,7 @@ // - don't send 0xFFFFFFFF (or 0xFF in 8-bit mode), it's reserved for errors! // -------------------------------------------------------------------------- -#include "_link_common.h" +#include "_link_common.hpp" // 8-bit mode (uncomment to enable) // #define LINK_SPI_8BIT_MODE diff --git a/lib/_link_common.h b/lib/_link_common.hpp similarity index 100% rename from lib/_link_common.h rename to lib/_link_common.hpp From eaf930e71b846813a69b60447907783a798ba478 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 22:29:38 -0300 Subject: [PATCH 019/195] Dropping tonc dependency in LinkCable --- README.md | 1 + examples/LinkCable_basic/src/main.cpp | 8 +- examples/LinkCable_full/src/main.cpp | 6 +- examples/LinkCable_full/src/main.h | 13 ++- examples/LinkCable_stress/src/main.cpp | 8 +- examples/LinkCable_stress/src/main.h | 13 ++- lib/LinkCable.hpp | 111 +++++++++++++------------ lib/LinkCableMultiboot.hpp | 6 +- lib/LinkSPI.hpp | 4 +- lib/_link_common.hpp | 27 ++++++ 10 files changed, 118 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 63d095f..b6bb9c1 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. - Copy the `lib/` folder into your project's `include` directory and include the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp). For initial instructions and setup details, refer to the big comment block at the beginning of each file, the documentation included here, and the provided examples. No external dependencies are required. - Check out the [examples](examples) folder. + * The example code uses [libtonc](https://github.com/gbadev-org/libtonc) (and [libugba](https://github.com/AntonioND/libugba) for interrupts), but any library can be used. * Builds are available in [Releases](https://github.com/afska/gba-link-connection/releases). * They can be tested on real GBAs or using emulators. * For `LinkCable`/`LinkWireless`/`LinkUniversal` there are stress tests that you can use to tweak your configuration. diff --git a/examples/LinkCable_basic/src/main.cpp b/examples/LinkCable_basic/src/main.cpp index 0c4578c..2f92560 100644 --- a/examples/LinkCable_basic/src/main.cpp +++ b/examples/LinkCable_basic/src/main.cpp @@ -1,13 +1,13 @@ -#include -#include -#include "../../_lib/interrupt.h" - // BASIC: // This example sends the pressed buttons to other players. // (0) Include the header #include "../../../lib/LinkCable.hpp" +#include +#include +#include "../../_lib/interrupt.h" + void log(std::string text); // (1) Create a LinkCable instance diff --git a/examples/LinkCable_full/src/main.cpp b/examples/LinkCable_full/src/main.cpp index 3670c45..ecdcae5 100644 --- a/examples/LinkCable_full/src/main.cpp +++ b/examples/LinkCable_full/src/main.cpp @@ -1,12 +1,12 @@ +// FULL: +// This example has a menu and lets the user send data in different ways. + #include "main.h" #include #include "../../_lib/interrupt.h" #include "scenes/TestScene.h" #include "utils/SceneUtils.h" -// FULL: -// This example has a menu and lets the user send data in different ways. - void setUpInterrupts(); void printTutorial(); static std::shared_ptr engine{new GBAEngine()}; diff --git a/examples/LinkCable_full/src/main.h b/examples/LinkCable_full/src/main.h index b7001b1..07ba353 100644 --- a/examples/LinkCable_full/src/main.h +++ b/examples/LinkCable_full/src/main.h @@ -1,12 +1,17 @@ #ifndef MAIN_H #define MAIN_H -#include -#include "../../../lib/LinkCable.hpp" -#include "../../../lib/LinkUniversal.hpp" - // #define USE_LINK_UNIVERSAL +#ifndef USE_LINK_UNIVERSAL +#include "../../../lib/LinkCable.hpp" +#endif +#ifdef USE_LINK_UNIVERSAL +#include "../../../lib/LinkUniversal.hpp" +#endif + +#include + #ifndef USE_LINK_UNIVERSAL extern LinkCable* linkConnection; #endif diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 7df0236..861cc21 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -1,7 +1,3 @@ -#include "main.h" -#include -#include "../../_lib/interrupt.h" - // STRESS: // This example can perform multiple stress tests. // A) Packet loss test: @@ -18,6 +14,10 @@ // R) Measure ping-pong latency: // - Like (L), but adding a validation response and adding that time. +#include "main.h" +#include +#include "../../_lib/interrupt.h" + #define FINAL_VALUE 65534 void test(bool withSync); diff --git a/examples/LinkCable_stress/src/main.h b/examples/LinkCable_stress/src/main.h index b7001b1..07ba353 100644 --- a/examples/LinkCable_stress/src/main.h +++ b/examples/LinkCable_stress/src/main.h @@ -1,12 +1,17 @@ #ifndef MAIN_H #define MAIN_H -#include -#include "../../../lib/LinkCable.hpp" -#include "../../../lib/LinkUniversal.hpp" - // #define USE_LINK_UNIVERSAL +#ifndef USE_LINK_UNIVERSAL +#include "../../../lib/LinkCable.hpp" +#endif +#ifdef USE_LINK_UNIVERSAL +#include "../../../lib/LinkUniversal.hpp" +#endif + +#include + #ifndef USE_LINK_UNIVERSAL extern LinkCable* linkConnection; #endif diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 64b215f..56fe458 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -42,41 +42,42 @@ // (they mean 'disconnected' and 'no data' respectively) // -------------------------------------------------------------------------- -#include -#include +#include "_link_common.hpp" // Buffer size #define LINK_CABLE_QUEUE_SIZE 15 +static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; + #define LINK_CABLE_MAX_PLAYERS 4 -#define LINK_CABLE_DISCONNECTED 0xffff -#define LINK_CABLE_NO_DATA 0x0 #define LINK_CABLE_DEFAULT_TIMEOUT 3 #define LINK_CABLE_DEFAULT_REMOTE_TIMEOUT 5 #define LINK_CABLE_DEFAULT_INTERVAL 50 #define LINK_CABLE_DEFAULT_SEND_TIMER_ID 3 -#define LINK_CABLE_BASE_FREQUENCY TM_FREQ_1024 -#define LINK_CABLE_REMOTE_TIMEOUT_OFFLINE -1 -#define LINK_CABLE_BIT_SLAVE 2 -#define LINK_CABLE_BIT_READY 3 -#define LINK_CABLE_BITS_PLAYER_ID 4 -#define LINK_CABLE_BIT_ERROR 6 -#define LINK_CABLE_BIT_START 7 -#define LINK_CABLE_BIT_MULTIPLAYER 13 -#define LINK_CABLE_BIT_IRQ 14 -#define LINK_CABLE_BIT_GENERAL_PURPOSE_LOW 14 -#define LINK_CABLE_BIT_GENERAL_PURPOSE_HIGH 15 #define LINK_CABLE_BARRIER asm volatile("" ::: "memory") -static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; - -void LINK_CABLE_ISR_VBLANK(); -void LINK_CABLE_ISR_SERIAL(); -void LINK_CABLE_ISR_TIMER(); -const u16 LINK_CABLE_TIMER_IRQ_IDS[] = {IRQ_TIMER0, IRQ_TIMER1, IRQ_TIMER2, - IRQ_TIMER3}; - class LinkCable { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + using vs32 = volatile signed int; + using vu32 = volatile unsigned int; + + static constexpr u16 DISCONNECTED = 0xffff; + static constexpr u16 NO_DATA = 0x0; + static constexpr u16 BASE_FREQUENCY = Link::_TM_FREQ_1024; + static constexpr int REMOTE_TIMEOUT_OFFLINE = -1; + static constexpr int BIT_SLAVE = 2; + static constexpr int BIT_READY = 3; + static constexpr int BITS_PLAYER_ID = 4; + static constexpr int BIT_ERROR = 6; + static constexpr int BIT_START = 7; + static constexpr int BIT_MULTIPLAYER = 13; + static constexpr int BIT_IRQ = 14; + static constexpr int BIT_GENERAL_PURPOSE_LOW = 14; + static constexpr int BIT_GENERAL_PURPOSE_HIGH = 15; + public: enum BaudRate { BAUD_RATE_0, // 9600 bps @@ -98,7 +99,7 @@ class LinkCable { u16 pop() { if (isEmpty()) - return LINK_CABLE_NO_DATA; + return NO_DATA; auto x = arr[front]; front = (front + 1) % LINK_CABLE_QUEUE_SIZE; @@ -109,7 +110,7 @@ class LinkCable { u16 peek() { if (isEmpty()) - return LINK_CABLE_NO_DATA; + return NO_DATA; return arr[front]; } @@ -202,7 +203,8 @@ class LinkCable { sync(); while (isConnected() && !canRead(playerId) && !cancel()) { - IntrWait(1, IRQ_SERIAL | LINK_CABLE_TIMER_IRQ_IDS[config.sendTimerId]); + Link::_IntrWait( + 1, Link::_IRQ_SERIAL | Link::_TIMER_IRQ_IDS[config.sendTimerId]); sync(); } @@ -218,7 +220,7 @@ class LinkCable { u16 peek(u8 playerId) { return state.incomingMessages[playerId].peek(); } void send(u16 data) { - if (data == LINK_CABLE_DISCONNECTED || data == LINK_CABLE_NO_DATA) + if (data == DISCONNECTED || data == NO_DATA) return; LINK_CABLE_BARRIER; @@ -263,10 +265,10 @@ class LinkCable { u8 newPlayerCount = 0; for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { - u16 data = REG_SIOMULTI[i]; + u16 data = Link::_REG_SIOMULTI[i]; - if (data != LINK_CABLE_DISCONNECTED) { - if (data != LINK_CABLE_NO_DATA && i != state.currentPlayerId) + if (data != DISCONNECTED) { + if (data != NO_DATA && i != state.currentPlayerId) _state.newMessages[i].push(data); newPlayerCount++; setOnline(i); @@ -284,8 +286,7 @@ class LinkCable { state.playerCount = newPlayerCount; state.currentPlayerId = - (REG_SIOCNT & (0b11 << LINK_CABLE_BITS_PLAYER_ID)) >> - LINK_CABLE_BITS_PLAYER_ID; + (Link::_REG_SIOCNT & (0b11 << BITS_PLAYER_ID)) >> BITS_PLAYER_ID; if (!isMaster()) sendPendingData(); @@ -341,10 +342,10 @@ class LinkCable { volatile bool isAddingMessage = false; volatile bool isAddingWhileResetting = false; - bool isMaster() { return !isBitHigh(LINK_CABLE_BIT_SLAVE); } - bool isReady() { return isBitHigh(LINK_CABLE_BIT_READY); } - bool hasError() { return isBitHigh(LINK_CABLE_BIT_ERROR); } - bool isSending() { return isBitHigh(LINK_CABLE_BIT_START); } + bool isMaster() { return !isBitHigh(BIT_SLAVE); } + bool isReady() { return isBitHigh(BIT_READY); } + bool hasError() { return isBitHigh(BIT_ERROR); } + bool isSending() { return isBitHigh(BIT_START); } bool didTimeout() { return _state.IRQTimeout >= config.timeout; } void sendPendingData() { @@ -357,10 +358,10 @@ class LinkCable { } void transfer(u16 data) { - REG_SIOMLT_SEND = data; + Link::_REG_SIOMLT_SEND = data; if (isMaster()) - setBitHigh(LINK_CABLE_BIT_START); + setBitHigh(BIT_START); } void reset() { @@ -401,14 +402,14 @@ class LinkCable { } void stopTimer() { - REG_TM[config.sendTimerId].cnt = - REG_TM[config.sendTimerId].cnt & (~TM_ENABLE); + Link::_REG_TM[config.sendTimerId].cnt = + Link::_REG_TM[config.sendTimerId].cnt & (~Link::_TM_ENABLE); } void startTimer() { - REG_TM[config.sendTimerId].start = -config.interval; - REG_TM[config.sendTimerId].cnt = - TM_ENABLE | TM_IRQ | LINK_CABLE_BASE_FREQUENCY; + Link::_REG_TM[config.sendTimerId].start = -config.interval; + Link::_REG_TM[config.sendTimerId].cnt = + Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } void clearIncomingMessages() { @@ -434,30 +435,30 @@ class LinkCable { } bool isOnline(u8 playerId) { - return _state.timeouts[playerId] != LINK_CABLE_REMOTE_TIMEOUT_OFFLINE; + return _state.timeouts[playerId] != REMOTE_TIMEOUT_OFFLINE; } void setOnline(u8 playerId) { _state.timeouts[playerId] = 0; } void setOffline(u8 playerId) { - _state.timeouts[playerId] = LINK_CABLE_REMOTE_TIMEOUT_OFFLINE; + _state.timeouts[playerId] = REMOTE_TIMEOUT_OFFLINE; } - void setInterruptsOn() { setBitHigh(LINK_CABLE_BIT_IRQ); } + void setInterruptsOn() { setBitHigh(BIT_IRQ); } void setMultiPlayMode() { - REG_RCNT = REG_RCNT & ~(1 << LINK_CABLE_BIT_GENERAL_PURPOSE_HIGH); - REG_SIOCNT = (1 << LINK_CABLE_BIT_MULTIPLAYER); - REG_SIOCNT |= config.baudRate; - REG_SIOMLT_SEND = 0; + Link::_REG_RCNT = Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_SIOCNT = (1 << BIT_MULTIPLAYER); + Link::_REG_SIOCNT |= config.baudRate; + Link::_REG_SIOMLT_SEND = 0; } void setGeneralPurposeMode() { - REG_RCNT = (REG_RCNT & ~(1 << LINK_CABLE_BIT_GENERAL_PURPOSE_LOW)) | - (1 << LINK_CABLE_BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_RCNT = (Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_LOW)) | + (1 << BIT_GENERAL_PURPOSE_HIGH); } - bool isBitHigh(u8 bit) { return (REG_SIOCNT >> bit) & 1; } - void setBitHigh(u8 bit) { REG_SIOCNT |= 1 << bit; } - void setBitLow(u8 bit) { REG_SIOCNT &= ~(1 << bit); } + bool isBitHigh(u8 bit) { return (Link::_REG_SIOCNT >> bit) & 1; } + void setBitHigh(u8 bit) { Link::_REG_SIOCNT |= 1 << bit; } + void setBitLow(u8 bit) { Link::_REG_SIOCNT &= ~(1 << bit); } }; extern LinkCable* linkCable; diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 3fa9954..ef85085 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -26,6 +26,9 @@ #include "LinkRawCable.hpp" +static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = + "LinkCableMultiboot/v7.0.0"; + #define LINK_CABLE_MULTIBOOT_TRY(CALL) \ do { \ partialResult = CALL; \ @@ -35,9 +38,6 @@ else if (partialResult == ERROR) \ return error(FAILURE_DURING_HANDSHAKE); -static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = - "LinkCableMultiboot/v7.0.0"; - /** * @brief A Multiboot tool to send small programs from one GBA to up to 3 * slaves. diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 944c22a..ec945cd 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -45,6 +45,8 @@ // 8-bit mode (uncomment to enable) // #define LINK_SPI_8BIT_MODE +static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; + #ifdef LINK_SPI_8BIT_MODE #define LINK_SPI_DATA_TYPE u8 #endif @@ -66,8 +68,6 @@ #define LINK_SPI_NO_DATA 0xffffffff #endif -static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; - /** * @brief An SPI handler for the Link Port (Normal Mode, either 32 or 8 bits). * 32-bit transfers by default. Set `LINK_SPI_8BIT_MODE` for 8-bit transfers. diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index ad45a82..7b81fca 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -45,6 +45,33 @@ inline volatile u16& _REG_VCOUNT = inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); +static constexpr u16 _TM_FREQ_1 = 0; // 1 cycle/tick (16.7 MHz) +static constexpr u16 _TM_FREQ_64 = 0x0001; // 64 cycles/tick (262 kHz) +static constexpr u16 _TM_FREQ_256 = 0x0002; // 256 cycles/tick (66 kHz) +static constexpr u16 _TM_FREQ_1024 = 0x0003; // 1024 cycles/tick (16 kHz) +static constexpr u16 _TM_IRQ = 0x0040; +static constexpr u16 _TM_ENABLE = 0x0080; + +static constexpr u16 _IRQ_VBLANK = 0x0001; //!< Catch VBlank irq +static constexpr u16 _IRQ_TIMER0 = 0x0008; //!< Catch timer 0 irq +static constexpr u16 _IRQ_TIMER1 = 0x0010; //!< Catch timer 1 irq +static constexpr u16 _IRQ_TIMER2 = 0x0020; //!< Catch timer 2 irq +static constexpr u16 _IRQ_TIMER3 = 0x0040; //!< Catch timer 3 irq +static constexpr u16 _IRQ_SERIAL = 0x0080; //!< Catch serial comm irq +static constexpr u16 _TIMER_IRQ_IDS[] = {_IRQ_TIMER0, _IRQ_TIMER1, _IRQ_TIMER2, + _IRQ_TIMER3}; + +inline void _IntrWait(u32 flagClear, u32 irq) { + asm volatile( + "mov r0, %0\n" // flagClear => r0 + "mov r1, %1\n" // irq => r1 + "swi 0x04\n" // call 0x04 + : // outputs + : "r"(flagClear), "r"(irq) // inputs + : "r0", "r1" // clobbered registers + ); +} + typedef struct { u32 reserved1[5]; u8 handshake_data; From 657e2069ac4b10dc9cf406f890760261e1b150d6 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 23:06:40 -0300 Subject: [PATCH 020/195] Adding --print-memory-usage to examples --- examples/LinkCableMultiboot_demo/Makefile | 2 +- examples/LinkCable_basic/Makefile | 2 +- examples/LinkCable_full/Makefile | 2 +- examples/LinkCable_stress/Makefile | 2 +- examples/LinkGPIO_demo/Makefile | 2 +- examples/LinkPS2Keyboard_demo/Makefile | 2 +- examples/LinkPS2Mouse_demo/Makefile | 2 +- examples/LinkRawCable_demo/Makefile | 2 +- examples/LinkRawWireless_demo/Makefile | 2 +- examples/LinkSPI_demo/Makefile | 2 +- examples/LinkUART_demo/Makefile | 2 +- examples/LinkUniversal_basic/Makefile | 2 +- examples/LinkWirelessMultiboot_demo/Makefile | 2 +- examples/LinkWireless_demo/Makefile | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index 862164e..0f82627 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkCable_basic/Makefile b/examples/LinkCable_basic/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkCable_basic/Makefile +++ b/examples/LinkCable_basic/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkCable_full/Makefile b/examples/LinkCable_full/Makefile index 9ad0b2f..c6e99da 100644 --- a/examples/LinkCable_full/Makefile +++ b/examples/LinkCable_full/Makefile @@ -159,7 +159,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkCable_stress/Makefile b/examples/LinkCable_stress/Makefile index 1f143ca..e87c1fd 100644 --- a/examples/LinkCable_stress/Makefile +++ b/examples/LinkCable_stress/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkGPIO_demo/Makefile b/examples/LinkGPIO_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkGPIO_demo/Makefile +++ b/examples/LinkGPIO_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkPS2Keyboard_demo/Makefile b/examples/LinkPS2Keyboard_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkPS2Keyboard_demo/Makefile +++ b/examples/LinkPS2Keyboard_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkPS2Mouse_demo/Makefile b/examples/LinkPS2Mouse_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkPS2Mouse_demo/Makefile +++ b/examples/LinkPS2Mouse_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkRawCable_demo/Makefile b/examples/LinkRawCable_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkRawCable_demo/Makefile +++ b/examples/LinkRawCable_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkRawWireless_demo/Makefile b/examples/LinkRawWireless_demo/Makefile index 9ad0b2f..c6e99da 100644 --- a/examples/LinkRawWireless_demo/Makefile +++ b/examples/LinkRawWireless_demo/Makefile @@ -159,7 +159,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkSPI_demo/Makefile b/examples/LinkSPI_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkSPI_demo/Makefile +++ b/examples/LinkSPI_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkUART_demo/Makefile b/examples/LinkUART_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkUART_demo/Makefile +++ b/examples/LinkUART_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkUniversal_basic/Makefile b/examples/LinkUniversal_basic/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkUniversal_basic/Makefile +++ b/examples/LinkUniversal_basic/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 5b2ffc2..4f5647c 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -160,7 +160,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkWireless_demo/Makefile b/examples/LinkWireless_demo/Makefile index 7cff424..c835cc7 100644 --- a/examples/LinkWireless_demo/Makefile +++ b/examples/LinkWireless_demo/Makefile @@ -168,7 +168,7 @@ CFLAGS += -ffast-math -fno-strict-aliasing CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- From 4065926f28f7c5dc550ae2b277286ce67ac16045 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 23:30:53 -0300 Subject: [PATCH 021/195] Adding clarification on LINK_CABLE_QUEUE_SIZE --- README.md | 2 ++ lib/LinkCable.hpp | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b6bb9c1..28bb950 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,8 @@ You can update these values at any time without creating a new instance: You can also change these compile-time constants: - `LINK_CABLE_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max **per player**). The default value is `15`, which seems fine for most games. + - This affects how much memory is allocated. With the default value it's `390` bytes. There are 2 temporary queues, 1 incoming queue and 1 outgoing queue. To calculate it: + - `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` ## Methods diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 56fe458..5368970 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -44,7 +44,15 @@ #include "_link_common.hpp" -// Buffer size +/** + * @brief Buffer size (how many incoming and outgoing messages + * the queues can store at max **per player**). The default value is `15`, which + * seems fine for most games. + * \warning This affects how much memory is allocated. With the default value, + * it's `390` bytes. There are 2 temporary queues, 1 incoming queue and 1 + * outgoing queue. To calculate it: `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * + * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` + */ #define LINK_CABLE_QUEUE_SIZE 15 static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; @@ -56,6 +64,9 @@ static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; #define LINK_CABLE_DEFAULT_SEND_TIMER_ID 3 #define LINK_CABLE_BARRIER asm volatile("" ::: "memory") +/** + * @brief A Link Cable connection for Multi-Play mode. + */ class LinkCable { private: using u32 = unsigned int; From 84d1f596f8dfccde6ee579a5160f73088ef8128b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 6 Aug 2024 23:38:51 -0300 Subject: [PATCH 022/195] Adding sanity checks in LinkUniversal and LinkWireless on max players and reported player ids --- lib/LinkSPI.hpp | 7 ++++++- lib/LinkUniversal.hpp | 6 ++++-- lib/LinkWireless.hpp | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index ec945cd..c1a2041 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -42,7 +42,9 @@ #include "_link_common.hpp" -// 8-bit mode (uncomment to enable) +/** + * @brief 8-bit mode (uncomment to enable) + */ // #define LINK_SPI_8BIT_MODE static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; @@ -344,6 +346,9 @@ class LinkSPI { extern LinkSPI* linkSPI; +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_SPI_ISR_SERIAL() { linkSPI->_onSerial(); } diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index f6c00ba..6d4d506 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -325,7 +325,8 @@ class LinkUniversal { volatile bool isEnabled = false; void receiveCableMessages() { - for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { + int maxPlayers = min(LINK_CABLE_MAX_PLAYERS, LINK_UNIVERSAL_MAX_PLAYERS); + for (u32 i = 0; i < maxPlayers; i++) { while (linkCable->canRead(i)) incomingMessages[i].push(linkCable->read(i)); } @@ -340,7 +341,8 @@ class LinkUniversal { if (message.packetId == LINK_WIRELESS_END) break; - incomingMessages[message.playerId].push(message.data); + if (message.playerId < LINK_UNIVERSAL_MAX_PLAYERS) + incomingMessages[message.playerId].push(message.data); } } diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index a944d75..fc3351b 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -1047,7 +1047,7 @@ class LinkWireless { MessageHeader header = serializer.asStruct; u32 partialPacketId = header.partialPacketId; bool isConfirmation = header.isConfirmation; - u8 remotePlayerId = header.playerId; + u8 remotePlayerId = min(header.playerId, config.maxPlayers - 1); u8 remotePlayerCount = LINK_WIRELESS_MIN_PLAYERS + header.clientCount; u32 checksum = header.dataChecksum; bool isPing = data == LINK_WIRELESS_MSG_PING; From 880613e6e5f6fad02a7ef4a681669fe607f04b20 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 00:12:31 -0300 Subject: [PATCH 023/195] Improving documentation --- README.md | 11 ++++++----- lib/LinkCable.hpp | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 28bb950..fc3b66c 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,8 @@ You can update these values at any time without creating a new instance: You can also change these compile-time constants: - `LINK_CABLE_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max **per player**). The default value is `15`, which seems fine for most games. - - This affects how much memory is allocated. With the default value it's `390` bytes. There are 2 temporary queues, 1 incoming queue and 1 outgoing queue. To calculate it: + - This affects how much memory is allocated. With the default value, it's `390` bytes. There's a double-buffered pending queue (to avoid data races), `1` incoming queue and `1` outgoing queue. + - You can calculate the memory usage with: - `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` ## Methods @@ -384,13 +385,13 @@ Name | Return type | Description ## UART Configuration -The GBA operates using 1 stop bit, but everything else can be configured. By default, the library uses `8N1`, which means 8-bit data and no parity bit. RTS/CTS is disabled by default. +The GBA operates using `1` stop bit, but everything else can be configured. By default, the library uses `8N1`, which means 8-bit data and no parity bit. RTS/CTS is disabled by default. ![diagram](https://github.com/afska/gba-link-connection/assets/1631752/a6a58f94-da24-4fd9-9603-9c7c9a493f93) -- Black wire (GND) -> GBA GND. -- Green wire (TX) -> GBA SI. -- White wire (RX) -> GBA SO. +- Black wire (`GND`) -> GBA `GND`. +- Green wire (`TX`) -> GBA `SI`. +- White wire (`RX`) -> GBA `SO`. # 🖱️ LinkPS2Mouse diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 5368970..58dcdd9 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -49,9 +49,9 @@ * the queues can store at max **per player**). The default value is `15`, which * seems fine for most games. * \warning This affects how much memory is allocated. With the default value, - * it's `390` bytes. There are 2 temporary queues, 1 incoming queue and 1 - * outgoing queue. To calculate it: `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * - * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` + * it's `390` bytes. There's a double-buffered pending queue (to avoid data + * races), 1 incoming queue and 1 outgoing queue. + * \warning You can calculate the memory usage with `LINK_CABLE_QUEUE_SIZE * 26` */ #define LINK_CABLE_QUEUE_SIZE 15 From f4ad572973a88fbb352a54e2b631353d4c1315f2 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 00:44:08 -0300 Subject: [PATCH 024/195] Adding Doxygen-style docs for IDE autocompletion in LinkCable --- README.md | 7 +-- lib/LinkCable.hpp | 113 ++++++++++++++++++++++++++++++++++++++++++---- lib/LinkGPIO.hpp | 3 ++ 3 files changed, 111 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index fc3b66c..60f375c 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The library uses message queues to send/receive data and transmits when it's pos Name | Type | Default | Description --- | --- | --- | --- `baudRate` | **BaudRate** | `BAUD_RATE_1` | Sets a specific baud rate. -`timeout` | **u32** | `3` | Number of *frames* without an `II_SERIAL` IRQ to reset the connection. +`timeout` | **u32** | `3` | Number of *frames* without a `SERIAL` IRQ to reset the connection. `remoteTimeout` | **u32** | `5` | Number of *messages* with `0xFFFF` to mark a player as disconnected. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. @@ -86,8 +86,8 @@ Name | Return type | Description `waitFor(playerId)` | **bool** | Waits for data from player #`playerId`. Returns `true` on success, or `false` on disconnection. `waitFor(playerId, cancel)` | **bool** | Like `waitFor(playerId)` but accepts a `cancel()` function. The library will continuously invoke it, and abort the wait if it returns `true`. `canRead(playerId)` | **bool** | Returns `true` if there are pending messages from player #`playerId`. Keep in mind that if this returns `false`, it will keep doing so until you *fetch new data* with `sync()`. -`read(playerId)` | **u16** | Dequeues and returns the next message from player #`playerId`. -`peek(playerId)` | **u16** | Returns the next message from player #`playerId` without dequeuing it. +`read(playerId)` | **u16** | Dequeues and returns the next message from player #`playerId`. If there's no data from that player, a `0` will be returned. +`peek(playerId)` | **u16** | Returns the next message from player #`playerId` without dequeuing it. If there's no data from that player, a `0` will be returned. `send(data)` | - | Sends `data` to all connected players. ⚠️ `0xFFFF` and `0x0` are reserved values, so don't send them! @@ -171,6 +171,7 @@ You can also change these compile-time constants: - `LINK_WIRELESS_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max). The default value is `30`, which seems fine for most games. - `LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH` and `LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH`: to set the biggest allowed transfer per timer tick. Transfers contain retransmission headers and multiple user messages. These values must be in the range `[6;20]` for servers and `[2;4]` for clients. The default values are `20` and `4`, but you might want to set them a bit lower to reduce CPU usage. - `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions (~3.5KB) in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. + - If you enable this, make sure that `LinkWireless.cpp` gets compiled! For example, in a Makefile-based project, verify that the file is in your `SRCDIRS` list. - `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce some latency but reduce overall CPU usage. ## Methods diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 58dcdd9..22d0e4b 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -75,9 +75,9 @@ class LinkCable { using vs32 = volatile signed int; using vu32 = volatile unsigned int; - static constexpr u16 DISCONNECTED = 0xffff; - static constexpr u16 NO_DATA = 0x0; - static constexpr u16 BASE_FREQUENCY = Link::_TM_FREQ_1024; + static constexpr int DISCONNECTED = 0xffff; + static constexpr int NO_DATA = 0x0; + static constexpr int BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int REMOTE_TIMEOUT_OFFLINE = -1; static constexpr int BIT_SLAVE = 2; static constexpr int BIT_READY = 3; @@ -142,6 +142,18 @@ class LinkCable { vu32 count = 0; }; + /** + * @brief Constructs a new LinkCable object. + * @param baudRate Sets a specific baud rate. + * @param timeout Number of *frames* without a `SERIAL` IRQ to reset the + * connection. + * @param remoteTimeout Number of *messages* with `0xFFFF` to mark a player as + * disconnected. + * @param interval Number of *1024-cycle ticks* (61.04μs) between transfers + * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values + * will transfer faster but also consume more CPU. + * @param sendTimerId `(0~3)` GBA Timer to use for sending. + */ explicit LinkCable(BaudRate baudRate = BAUD_RATE_1, u32 timeout = LINK_CABLE_DEFAULT_TIMEOUT, u32 remoteTimeout = LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, @@ -154,8 +166,14 @@ class LinkCable { this->config.sendTimerId = sendTimerId; } - bool isActive() { return isEnabled; } + /** + * @brief Returns whether the library is active or not. + */ + [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library. + */ void activate() { LINK_CABLE_BARRIER; isEnabled = false; @@ -169,6 +187,9 @@ class LinkCable { LINK_CABLE_BARRIER; } + /** + * @brief Deactivates the library. + */ void deactivate() { LINK_CABLE_BARRIER; isEnabled = false; @@ -179,13 +200,26 @@ class LinkCable { clearIncomingMessages(); } - bool isConnected() { + /** + * @brief Returns `true` if there are at least 2 connected players. + */ + [[nodiscard]] bool isConnected() { return state.playerCount > 1 && state.currentPlayerId < state.playerCount; } - u8 playerCount() { return state.playerCount; } - u8 currentPlayerId() { return state.currentPlayerId; } + /** + * @brief Returns the number of connected players (`0~4`). + */ + [[nodiscard]] u8 playerCount() { return state.playerCount; } + /** + * @brief Returns the current player id (`0~3`). + */ + [[nodiscard]] u8 currentPlayerId() { return state.currentPlayerId; } + + /** + * @brief Call this method every time you need to fetch new data. + */ void sync() { if (!isEnabled) return; @@ -205,10 +239,22 @@ class LinkCable { clearIncomingMessages(); } + /** + * @brief Waits for data from player #`playerId`. Returns `true` on success, + * or `false` on disconnection. + * @param playerId A player id. + */ bool waitFor(u8 playerId) { return waitFor(playerId, []() { return false; }); } + /** + * @brief Waits for data from player #`playerId`. Returns `true` on success, + * or `false` on disconnection. + * @param playerId Number of player to wait data from. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the wait be aborted. + */ template bool waitFor(u8 playerId, F cancel) { sync(); @@ -222,14 +268,38 @@ class LinkCable { return isConnected() && canRead(playerId); } - bool canRead(u8 playerId) { + /** + * @brief Returns `true` if there are pending messages from player + * #`playerId`. + * @param playerId A player id. + * \warning Keep in mind that if this returns `false`, it will keep doing so + * until you *fetch new data* with `sync()`. + */ + [[nodiscard]] bool canRead(u8 playerId) { return !state.incomingMessages[playerId].isEmpty(); } + /** + * @brief Dequeues and returns the next message from player #`playerId`. + * @param playerId A player id. + * \warning If there's no data from that player, a `0` will be returned. + */ u16 read(u8 playerId) { return state.incomingMessages[playerId].pop(); } - u16 peek(u8 playerId) { return state.incomingMessages[playerId].peek(); } + /** + * @brief Returns the next message from player #`playerId` without dequeuing + * it. + * @param playerId A player id. + * \warning If there's no data from that player, a `0` will be returned. + */ + [[nodiscard]] u16 peek(u8 playerId) { + return state.incomingMessages[playerId].peek(); + } + /** + * @brief Sends `data` to all connected players. + * @param data The value to be sent. + */ void send(u16 data) { if (data == DISCONNECTED || data == NO_DATA) return; @@ -250,6 +320,10 @@ class LinkCable { } } + /** + * @brief This method is called by the VBLANK interrupt handler. + * \warning This is internal API! + */ void _onVBlank() { if (!isEnabled) return; @@ -262,6 +336,10 @@ class LinkCable { copyState(); } + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ void _onSerial() { if (!isEnabled) return; @@ -305,6 +383,10 @@ class LinkCable { copyState(); } + /** + * @brief This method is called by the TIMER interrupt handler. + * \warning This is internal API! + */ void _onTimer() { if (!isEnabled) return; @@ -328,6 +410,10 @@ class LinkCable { u8 sendTimerId; }; + /** + * @brief LinkCable configuration. + * \warning `deactivate()` first, change the config, and `activate()` again! + */ Config config; private: @@ -474,14 +560,23 @@ class LinkCable { extern LinkCable* linkCable; +/** + * @brief VBLANK interrupt handler. + */ inline void LINK_CABLE_ISR_VBLANK() { linkCable->_onVBlank(); } +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_CABLE_ISR_SERIAL() { linkCable->_onSerial(); } +/** + * @brief TIMER interrupt handler. + */ inline void LINK_CABLE_ISR_TIMER() { linkCable->_onTimer(); } diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index c3810b8..9786dc4 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -26,6 +26,9 @@ #include "_link_common.hpp" +/** + * @brief A GPIO handler for the Link Port. + */ class LinkGPIO { private: using u32 = unsigned int; From 74192900b2aac66c1368f45bd596c475b6a5a806 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 05:21:35 -0300 Subject: [PATCH 025/195] Making SWI inline asm methods more reliable? --- lib/_link_common.hpp | 85 ++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 7b81fca..a188366 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -6,10 +6,14 @@ */ namespace Link { +// Types + using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; +// Structs + struct _TMR_REC { union { u16 start; @@ -19,6 +23,30 @@ struct _TMR_REC { u16 cnt; } __attribute__((aligned(4))); +typedef struct { + u32 reserved1[5]; + u8 handshake_data; + u8 padding; + u16 handshake_timeout; + u8 probe_count; + u8 client_data[3]; + u8 palette_data; + u8 response_bit; + u8 client_bit; + u8 reserved2; + u8* boot_srcp; + u8* boot_endp; + u8* masterp; + u8* reserved3[3]; + u32 system_work2[4]; + u8 sendflag; + u8 probe_target_bit; + u8 check_wait; + u8 server_type; +} _MultiBootParam; + +// I/O Registers + constexpr u32 _REG_BASE = 0x04000000; inline volatile u16& _REG_RCNT = @@ -61,51 +89,24 @@ static constexpr u16 _IRQ_SERIAL = 0x0080; //!< Catch serial comm irq static constexpr u16 _TIMER_IRQ_IDS[] = {_IRQ_TIMER0, _IRQ_TIMER1, _IRQ_TIMER2, _IRQ_TIMER3}; -inline void _IntrWait(u32 flagClear, u32 irq) { - asm volatile( - "mov r0, %0\n" // flagClear => r0 - "mov r1, %1\n" // irq => r1 - "swi 0x04\n" // call 0x04 - : // outputs - : "r"(flagClear), "r"(irq) // inputs - : "r0", "r1" // clobbered registers - ); +// SWI + +static inline __attribute__((always_inline)) void _IntrWait(u32 flagClear, + u32 irq) { + register u32 r0 asm("r0") = flagClear; + register u32 r1 asm("r1") = irq; + + asm volatile("swi 0x04\n" : : "r"(r0), "r"(r1)); } -typedef struct { - u32 reserved1[5]; - u8 handshake_data; - u8 padding; - u16 handshake_timeout; - u8 probe_count; - u8 client_data[3]; - u8 palette_data; - u8 response_bit; - u8 client_bit; - u8 reserved2; - u8* boot_srcp; - u8* boot_endp; - u8* masterp; - u8* reserved3[3]; - u32 system_work2[4]; - u8 sendflag; - u8 probe_target_bit; - u8 check_wait; - u8 server_type; -} _MultiBootParam; +static inline __attribute__((always_inline)) int _MultiBoot(_MultiBootParam* mb, + u32 mode) { + register _MultiBootParam* r0 asm("r0") = mb; + register u32 r1 asm("r1") = mode; -inline int _MultiBoot(_MultiBootParam* mb, u32 mode) { - int result; - asm volatile( - "mov r0, %1\n" // mb => r0 - "mov r1, %2\n" // mode => r1 - "swi 0x25\n" // call 0x25 - "mov %0, r0\n" // r0 => output - : "=r"(result) // output - : "r"(mb), "r"(mode) // inputs - : "r0", "r1" // clobbered registers - ); - return result; + asm volatile("swi 0x25\n" : "+r"(r0) : "r"(r1)); + + return (int)r0; } } // namespace Link From 76cba03aafd091b26943477b18f006ac1be0efb4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 06:01:23 -0300 Subject: [PATCH 026/195] Restoring some old symbols for retrocompatibility --- examples/LinkCable_full/src/main.cpp | 10 +++++++--- lib/LinkCable.hpp | 14 +++++++------- lib/LinkRawCable.hpp | 13 +++++++------ 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/examples/LinkCable_full/src/main.cpp b/examples/LinkCable_full/src/main.cpp index ecdcae5..9f8410e 100644 --- a/examples/LinkCable_full/src/main.cpp +++ b/examples/LinkCable_full/src/main.cpp @@ -41,13 +41,17 @@ int main() { DEBULOG("! started"); } + static constexpr int BIT_READY = 3; + static constexpr int BIT_ERROR = 6; + static constexpr int BIT_START = 7; + // log player id/count and important flags TextStream::instance().setText( "P" + asStr(linkConnection->currentPlayerId()) + "/" + asStr(linkConnection->playerCount()) + "-R" + - asStr(isBitHigh(REG_SIOCNT, LINK_CABLE_BIT_READY)) + "-S" + - asStr(isBitHigh(REG_SIOCNT, LINK_CABLE_BIT_START)) + "-E" + - asStr(isBitHigh(REG_SIOCNT, LINK_CABLE_BIT_ERROR)), + asStr(isBitHigh(REG_SIOCNT, BIT_READY)) + "-S" + + asStr(isBitHigh(REG_SIOCNT, BIT_ERROR)) + "-E" + + asStr(isBitHigh(REG_SIOCNT, BIT_START)), 0, 14); engine->update(); diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 22d0e4b..57bbc54 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -62,6 +62,8 @@ static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; #define LINK_CABLE_DEFAULT_REMOTE_TIMEOUT 5 #define LINK_CABLE_DEFAULT_INTERVAL 50 #define LINK_CABLE_DEFAULT_SEND_TIMER_ID 3 +#define LINK_CABLE_DISCONNECTED 0xffff +#define LINK_CABLE_NO_DATA 0x0 #define LINK_CABLE_BARRIER asm volatile("" ::: "memory") /** @@ -75,8 +77,6 @@ class LinkCable { using vs32 = volatile signed int; using vu32 = volatile unsigned int; - static constexpr int DISCONNECTED = 0xffff; - static constexpr int NO_DATA = 0x0; static constexpr int BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int REMOTE_TIMEOUT_OFFLINE = -1; static constexpr int BIT_SLAVE = 2; @@ -110,7 +110,7 @@ class LinkCable { u16 pop() { if (isEmpty()) - return NO_DATA; + return LINK_CABLE_NO_DATA; auto x = arr[front]; front = (front + 1) % LINK_CABLE_QUEUE_SIZE; @@ -121,7 +121,7 @@ class LinkCable { u16 peek() { if (isEmpty()) - return NO_DATA; + return LINK_CABLE_NO_DATA; return arr[front]; } @@ -301,7 +301,7 @@ class LinkCable { * @param data The value to be sent. */ void send(u16 data) { - if (data == DISCONNECTED || data == NO_DATA) + if (data == LINK_CABLE_DISCONNECTED || data == LINK_CABLE_NO_DATA) return; LINK_CABLE_BARRIER; @@ -356,8 +356,8 @@ class LinkCable { for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { u16 data = Link::_REG_SIOMULTI[i]; - if (data != DISCONNECTED) { - if (data != NO_DATA && i != state.currentPlayerId) + if (data != LINK_CABLE_DISCONNECTED) { + if (data != LINK_CABLE_NO_DATA && i != state.currentPlayerId) _state.newMessages[i].push(data); newPlayerCount++; setOnline(i); diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index d4556df..5b58690 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -42,6 +42,9 @@ static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v7.0.0"; +#define LINK_RAW_CABLE_MAX_PLAYERS 4 +#define LINK_RAW_CABLE_DISCONNECTED 0xffff + /** * @brief A low level handler for the Link Port (Multi-Play Mode). */ @@ -51,8 +54,6 @@ class LinkRawCable { using u16 = unsigned short; using u8 = unsigned char; - static constexpr int MAX_PLAYERS = 4; - static constexpr int DISCONNECTED = 0xffff; static constexpr int BIT_SLAVE = 2; static constexpr int BIT_READY = 3; static constexpr int BITS_PLAYER_ID = 4; @@ -71,15 +72,15 @@ class LinkRawCable { BAUD_RATE_3 // 115200 bps }; struct Response { - u16 data[MAX_PLAYERS] = {DISCONNECTED, DISCONNECTED, DISCONNECTED, - DISCONNECTED}; + u16 data[LINK_RAW_CABLE_MAX_PLAYERS]; int playerId = -1; // (-1 = unknown) }; enum AsyncState { IDLE, WAITING, READY }; private: static constexpr Response EMPTY_RESPONSE = { - {DISCONNECTED, DISCONNECTED, DISCONNECTED, DISCONNECTED}, + {LINK_RAW_CABLE_DISCONNECTED, LINK_RAW_CABLE_DISCONNECTED, + LINK_RAW_CABLE_DISCONNECTED, LINK_RAW_CABLE_DISCONNECTED}, -1}; public: @@ -245,7 +246,7 @@ class LinkRawCable { Response getData() { Response response = EMPTY_RESPONSE; - for (u32 i = 0; i < MAX_PLAYERS; i++) + for (u32 i = 0; i < LINK_RAW_CABLE_MAX_PLAYERS; i++) response.data[i] = Link::_REG_SIOMULTI[i]; response.playerId = From 4b383aae78dab2c4228a6b92eb20e5a015b8bf70 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 07:04:32 -0300 Subject: [PATCH 027/195] Dropping tonc and std::function dependencies in LinkPS2Keyboard, and adding scan code list --- README.md | 2 +- lib/LinkPS2Keyboard.hpp | 153 ++++++++++++++++++++++++++++------------ lib/LinkUniversal.hpp | 4 +- 3 files changed, 113 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 60f375c..ebada10 100644 --- a/README.md +++ b/README.md @@ -433,7 +433,7 @@ A PS/2 keyboard driver for the GBA. Use it to add keyboard support to your homeb ## Constructor -`new LinkPS2Keyboard(onEvent)`, where `onEvent` is a function pointer that will receive the scan codes (`u8`). You should check a PS/2 scan code list online, but there are some examples included like `LINK_PS2_KEYBOARD_KEY_ENTER` and `LINK_PS2_KEYBOARD_KEY_RELEASE`. +`new LinkPS2Keyboard(onEvent)`, where `onEvent` is a function pointer that will receive the scan codes (`u8`). You should check a PS/2 scan code list online, but most common keys/events are included in enums like `LINK_PS2_KEYBOARD_KEY::ENTER` and `LINK_PS2_KEYBOARD_KEY::RELEASE`. ## Methods diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 2c5f0b2..e38a781 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -31,54 +31,35 @@ // |GND ---> GND| // -------------------------------------------------------------------------- -#include -#include - -// Example Scan Codes: (Num Lock OFF) -#define LINK_PS2_KEYBOARD_KEY_Z 26 // Z -#define LINK_PS2_KEYBOARD_KEY_Q 21 // Q -#define LINK_PS2_KEYBOARD_KEY_S 27 // S -#define LINK_PS2_KEYBOARD_KEY_E 36 // E -#define LINK_PS2_KEYBOARD_KEY_C 33 // C -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_1 105 // Numpad 1 -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_7 108 // Numpad 7 -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_5 115 // Numpad 5 -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_9 125 // Numpad 9 -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_3 122 // Numpad 3 -#define LINK_PS2_KEYBOARD_KEY_ENTER 90 // Enter -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_PLUS 121 // Numpad + -#define LINK_PS2_KEYBOARD_KEY_BACKSPACE 102 // Backspace -#define LINK_PS2_KEYBOARD_KEY_NUMPAD_MINUS 123 // Numpad - -#define LINK_PS2_KEYBOARD_KEY_LEFT 107 // Left -#define LINK_PS2_KEYBOARD_KEY_RIGHT 116 // Right -#define LINK_PS2_KEYBOARD_KEY_UP 117 // Up -#define LINK_PS2_KEYBOARD_KEY_ESC 118 // ESC -#define LINK_PS2_KEYBOARD_KEY_SUPR 113 // Supr -// --- -#define LINK_PS2_KEYBOARD_KEY_RELEASE 240 // Triggered before each key release -#define LINK_PS2_KEYBOARD_KEY_SPECIAL 224 // Triggered before special keys - -#define LINK_PS2_KEYBOARD_SI_DIRECTION 0b1000000 -#define LINK_PS2_KEYBOARD_SO_DIRECTION 0b10000000 -#define LINK_PS2_KEYBOARD_SI_DATA 0b100 -#define LINK_PS2_KEYBOARD_SO_DATA 0b1000 -#define LINK_PS2_KEYBOARD_TIMEOUT_FRAMES 15 // (~250ms) +#include "_link_common.hpp" static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v7.0.0"; class LinkPS2Keyboard { - public: - explicit LinkPS2Keyboard(std::function onEvent) { - this->onEvent = onEvent; - } + private: + using EventCallback = void (*)(u8 event); + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; - bool isActive() { return isEnabled; } + static constexpr int RCNT_GPIO_AND_SI_IRQ = 0b1000000100000000; + static constexpr int RCNT_GPIO = 0b1000000000000000; + static constexpr int SI_DIRECTION = 0b1000000; + static constexpr int SO_DIRECTION = 0b10000000; + static constexpr int SI_DATA = 0b100; + static constexpr int SO_DATA = 0b1000; + static constexpr int TIMEOUT_FRAMES = 15; // (~250ms) + + public: + explicit LinkPS2Keyboard(EventCallback onEvent) { this->onEvent = onEvent; } + + [[nodiscard]] bool isActive() { return isEnabled; } void activate() { deactivate(); - REG_RCNT = 0b1000000100000000; // General Purpose Mode + SI interrupts - REG_SIOCNT = 0; // Unused + Link::_REG_RCNT = RCNT_GPIO_AND_SI_IRQ; + Link::_REG_SIOCNT = 0; bitcount = 0; incoming = 0; @@ -92,8 +73,8 @@ class LinkPS2Keyboard { void deactivate() { isEnabled = false; - REG_RCNT = 0b1000000000000000; // General Purpose Mode - REG_SIOCNT = 0; // Unused + Link::_REG_RCNT = RCNT_GPIO; + Link::_REG_SIOCNT = 0; } void _onVBlank() { frameCounter++; } @@ -102,10 +83,10 @@ class LinkPS2Keyboard { if (!isEnabled) return; - u8 val = (REG_RCNT & LINK_PS2_KEYBOARD_SO_DATA) != 0; + u8 val = (Link::_REG_RCNT & SO_DATA) != 0; u32 nowFrame = frameCounter; - if (nowFrame - prevFrame > LINK_PS2_KEYBOARD_TIMEOUT_FRAMES) { + if (nowFrame - prevFrame > TIMEOUT_FRAMES) { bitcount = 0; incoming = 0; parityBit = 0; @@ -146,7 +127,7 @@ class LinkPS2Keyboard { u8 parityBit = 0; u32 prevFrame = 0; u32 frameCounter = 0; - std::function onEvent; + EventCallback onEvent; }; extern LinkPS2Keyboard* linkPS2Keyboard; @@ -162,4 +143,88 @@ inline void LINK_PS2_KEYBOARD_ISR_SERIAL() { linkPS2Keyboard->_onSerial(); } +// Example Scan Codes: (Num Lock OFF) +enum LINK_PS2_KEYBOARD_KEY { + ESC = 118, + F1 = 112, + F2 = 121, + F3 = 123, + F4 = 125, + F5 = 130, + F6 = 137, + F7 = 139, + F8 = 143, + F9 = 145, + F10 = 148, + F11 = 153, + F12 = 156, + BACKSPACE = 102, + TAB = 26, + ENTER = 90, + SHIFT = 18, + CTRL = 17, + ALT = 20, + SPACE = 33, + CAPS_LOCK = 58, + NUM_LOCK = 90, + SCROLL_LOCK = 119, + INSERT = 99, + DELETE = 113, + HOME = 103, + END = 107, + PAGE_UP = 104, + PAGE_DOWN = 109, + UP = 117, + DOWN = 119, + LEFT = 107, + RIGHT = 116, + A = 28, + B = 50, + C = 33, + D = 30, + E = 36, + F = 34, + G = 35, + H = 43, + I = 44, + J = 45, + K = 46, + L = 47, + M = 50, + N = 49, + O = 48, + P = 49, + Q = 21, + R = 38, + S = 27, + T = 40, + U = 42, + V = 32, + W = 24, + X = 29, + Y = 41, + Z = 26, + NUMPAD_0 = 104, + NUMPAD_1 = 105, + NUMPAD_2 = 110, + NUMPAD_3 = 122, + NUMPAD_4 = 108, + NUMPAD_5 = 115, + NUMPAD_6 = 111, + NUMPAD_7 = 108, + NUMPAD_8 = 114, + NUMPAD_9 = 125, + NUMPAD_PLUS = 121, + NUMPAD_MINUS = 123, + NUMPAD_ENTER = 96, + NUMPAD_DOT = 99, + NUMPAD_ASTERISK = 55, + NUMPAD_SLASH = 53 +}; + +enum LINK_PS2_KEYBOARD_EVENT { + RELEASE = 240, // Triggered before each key release + SPECIAL = 224 // Triggered before special keys +}; + #endif // LINK_PS2_KEYBOARD_H \ No newline at end of file diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 6d4d506..80ea30f 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -325,7 +325,9 @@ class LinkUniversal { volatile bool isEnabled = false; void receiveCableMessages() { - int maxPlayers = min(LINK_CABLE_MAX_PLAYERS, LINK_UNIVERSAL_MAX_PLAYERS); + int maxPlayers = + min(LINK_CABLE_MAX_PLAYERS, + LINK_UNIVERSAL_MAX_PLAYERS); // TODO: MOVE TO CONSTEXPR for (u32 i = 0; i < maxPlayers; i++) { while (linkCable->canRead(i)) incomingMessages[i].push(linkCable->read(i)); From 8e6fc11c3b1ac0f8af919cb137f72f4a5053635a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 07:10:03 -0300 Subject: [PATCH 028/195] Adding Doxygen-style docs for IDE autocompletion in LinkPS2Keyboard --- lib/LinkPS2Keyboard.hpp | 51 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index e38a781..46e99c5 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -17,9 +17,15 @@ // linkPS2Keyboard->activate(); // - 4) Handle events in the callback sent to LinkPS2Keyboard's constructor! // -------------------------------------------------------------------------- -// (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. -// That causes packet loss. You REALLY want to use libugba's instead. -// (see examples) +// (*1) libtonc's interrupt handler sometimes ignores interrupts due to a bug. +// That causes packet loss. You REALLY want to use libugba's instead. +// (see examples) +// -------------------------------------------------------------------------- +// (*2) The hardware is very sensitive to timing. Make sure that +// `LINK_PS2_KEYBOARD_ISR_SERIAL()` is handled on time. That means: +// Be careful with DMA usage (which stops the CPU), and write short +// interrupt handlers (or activate nested interrupts by setting +// `REG_IME=1` at the start of your handlers). // -------------------------------------------------------------------------- // ____________ // | Pinout | @@ -35,6 +41,9 @@ static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v7.0.0"; +/** + * @brief A PS/2 Keyboard Adapter for the GBA. + */ class LinkPS2Keyboard { private: using EventCallback = void (*)(u8 event); @@ -51,10 +60,22 @@ class LinkPS2Keyboard { static constexpr int TIMEOUT_FRAMES = 15; // (~250ms) public: + /** + * @brief Constructs a new LinkPS2Keyboard object. + * + * @param onEvent Function pointer that will receive the scan codes (`u8`). + * Check out `LINK_PS2_KEYBOARD_KEY` and `LINK_PS2_KEYBOARD_EVENT` for codes. + */ explicit LinkPS2Keyboard(EventCallback onEvent) { this->onEvent = onEvent; } + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library. + */ void activate() { deactivate(); @@ -70,6 +91,9 @@ class LinkPS2Keyboard { isEnabled = true; } + /** + * @brief Deactivates the library. + */ void deactivate() { isEnabled = false; @@ -77,8 +101,16 @@ class LinkPS2Keyboard { Link::_REG_SIOCNT = 0; } + /** + * @brief This method is called by the VBLANK interrupt handler. + * \warning This is internal API! + */ void _onVBlank() { frameCounter++; } + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ void _onSerial() { if (!isEnabled) return; @@ -132,6 +164,9 @@ class LinkPS2Keyboard { extern LinkPS2Keyboard* linkPS2Keyboard; +/** + * @brief VBLANK interrupt handler. + */ inline void LINK_PS2_KEYBOARD_ISR_VBLANK() { if (!linkPS2Keyboard->isActive()) return; @@ -139,11 +174,16 @@ inline void LINK_PS2_KEYBOARD_ISR_VBLANK() { linkPS2Keyboard->_onVBlank(); } +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_PS2_KEYBOARD_ISR_SERIAL() { linkPS2Keyboard->_onSerial(); } -// Example Scan Codes: (Num Lock OFF) +/** + * @brief Key Scan Code list. + */ enum LINK_PS2_KEYBOARD_KEY { ESC = 118, F1 = 112, @@ -222,6 +262,9 @@ enum LINK_PS2_KEYBOARD_KEY { NUMPAD_SLASH = 53 }; +/** + * @brief Event Scan Code list. + */ enum LINK_PS2_KEYBOARD_EVENT { RELEASE = 240, // Triggered before each key release SPECIAL = 224 // Triggered before special keys From fc663d0abe557058cbaea86e45c317f01066ccfc Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 07:40:59 -0300 Subject: [PATCH 029/195] Fixing scan code list --- examples/LinkPS2Keyboard_demo/src/main.cpp | 8 +- lib/LinkPS2Keyboard.hpp | 123 +++++++++++---------- 2 files changed, 71 insertions(+), 60 deletions(-) diff --git a/examples/LinkPS2Keyboard_demo/src/main.cpp b/examples/LinkPS2Keyboard_demo/src/main.cpp index f00efe7..c75e2c7 100644 --- a/examples/LinkPS2Keyboard_demo/src/main.cpp +++ b/examples/LinkPS2Keyboard_demo/src/main.cpp @@ -41,7 +41,9 @@ int main() { u16 keys = ~REG_KEYS & KEY_ANY; if (!linkPS2Keyboard->isActive()) { - output += "Press A to read keyboard input"; + output += + "Press A to read keyboard input\n" + "Press B to clear logs"; if (keys & KEY_A) { // (3) Initialize the library @@ -51,6 +53,10 @@ int main() { continue; } } else { + if (keys & KEY_B) { + scanCodes = ""; + irqs = 0; + } output += std::to_string(irqs) + " - " + scanCodes; } diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 46e99c5..f4506eb 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -186,88 +186,93 @@ inline void LINK_PS2_KEYBOARD_ISR_SERIAL() { */ enum LINK_PS2_KEYBOARD_KEY { ESC = 118, - F1 = 112, - F2 = 121, - F3 = 123, - F4 = 125, - F5 = 130, - F6 = 137, - F7 = 139, - F8 = 143, - F9 = 145, - F10 = 148, - F11 = 153, - F12 = 156, + F1 = 5, + F2 = 6, + F3 = 4, + F4 = 12, + F5 = 3, + F6 = 11, + F7 = 131, + F8 = 10, + F9 = 1, + F10 = 9, + F11 = 120, + F12 = 7, BACKSPACE = 102, - TAB = 26, + TAB = 13, ENTER = 90, - SHIFT = 18, - CTRL = 17, - ALT = 20, - SPACE = 33, - CAPS_LOCK = 58, - NUM_LOCK = 90, - SCROLL_LOCK = 119, - INSERT = 99, - DELETE = 113, - HOME = 103, - END = 107, - PAGE_UP = 104, - PAGE_DOWN = 109, - UP = 117, - DOWN = 119, - LEFT = 107, - RIGHT = 116, + SHIFT_L = 18, + SHIFT_R = 89, + SUPER = 97, + CTRL_L = 20, + SPECIAL_CTRL_R = 224 + 20, + ALT_L = 17, + SPECIAL_ALT_R = 224 + 17, + SPACE = 41, + CAPS_LOCK = 88, + NUM_LOCK = 119, + SCROLL_LOCK = 126, + SPECIAL_INSERT = 224 + 112, + SPECIAL_DELETE = 224 + 113, + SPECIAL_HOME = 224 + 108, + SPECIAL_END = 224 + 105, + SPECIAL_PAGE_UP = 224 + 125, + SPECIAL_PAGE_DOWN = 224 + 122, + SPECIAL_UP = 224 + 117, + SPECIAL_DOWN = 224 + 114, + SPECIAL_LEFT = 224 + 107, + SPECIAL_RIGHT = 224 + 116, A = 28, B = 50, C = 33, - D = 30, + D = 35, E = 36, - F = 34, - G = 35, - H = 43, - I = 44, - J = 45, - K = 46, - L = 47, - M = 50, + F = 43, + G = 52, + H = 51, + I = 67, + J = 59, + K = 66, + L = 75, + M = 58, N = 49, - O = 48, - P = 49, + O = 68, + P = 77, Q = 21, - R = 38, + R = 45, S = 27, - T = 40, - U = 42, - V = 32, - W = 24, - X = 29, - Y = 41, + T = 44, + U = 60, + V = 42, + W = 29, + X = 34, + Y = 53, Z = 26, - NUMPAD_0 = 104, + NUMPAD_0 = 112, NUMPAD_1 = 105, - NUMPAD_2 = 110, + NUMPAD_2 = 114, NUMPAD_3 = 122, - NUMPAD_4 = 108, + NUMPAD_4 = 107, NUMPAD_5 = 115, - NUMPAD_6 = 111, + NUMPAD_6 = 116, NUMPAD_7 = 108, - NUMPAD_8 = 114, + NUMPAD_8 = 117, NUMPAD_9 = 125, NUMPAD_PLUS = 121, NUMPAD_MINUS = 123, - NUMPAD_ENTER = 96, - NUMPAD_DOT = 99, - NUMPAD_ASTERISK = 55, - NUMPAD_SLASH = 53 + SPECIAL_NUMPAD_ENTER = 224 + 90, + NUMPAD_DOT = 113, + NUMPAD_ASTERISK = 124, + NUMPAD_SLASH = 74 }; /** * @brief Event Scan Code list. */ enum LINK_PS2_KEYBOARD_EVENT { - RELEASE = 240, // Triggered before each key release - SPECIAL = 224 // Triggered before special keys + SELF_TEST_PASSED = 0xAA, // Triggered when hot-plugging the keyboard + RELEASE = 240, // Triggered before each key release + SPECIAL = 224 // Triggered before special keys }; #endif // LINK_PS2_KEYBOARD_H \ No newline at end of file From 8c2db38a1d550ee29426c13a6e18dcb5e0de5934 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 08:01:06 -0300 Subject: [PATCH 030/195] Dropping tonc dependency in LinkPS2Mouse --- examples/LinkPS2Mouse_demo/src/main.cpp | 6 +- lib/LinkPS2Keyboard.hpp | 3 +- lib/LinkPS2Mouse.hpp | 81 +++++++++++++------------ lib/_link_common.hpp | 4 ++ 4 files changed, 52 insertions(+), 42 deletions(-) diff --git a/examples/LinkPS2Mouse_demo/src/main.cpp b/examples/LinkPS2Mouse_demo/src/main.cpp index 5509664..bbfdb13 100644 --- a/examples/LinkPS2Mouse_demo/src/main.cpp +++ b/examples/LinkPS2Mouse_demo/src/main.cpp @@ -1,10 +1,10 @@ +// (0) Include the header +#include "../../../lib/LinkPS2Mouse.hpp" + #include #include #include "../../_lib/interrupt.h" -// (0) Include the header -#include "../../../lib/LinkPS2Mouse.hpp" - void log(std::string text); inline void VBLANK() {} inline void TIMER() {} diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index f4506eb..ae500b4 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -46,7 +46,6 @@ static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v7.0.0"; */ class LinkPS2Keyboard { private: - using EventCallback = void (*)(u8 event); using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; @@ -60,6 +59,8 @@ class LinkPS2Keyboard { static constexpr int TIMEOUT_FRAMES = 15; // (~250ms) public: + using EventCallback = void (*)(u8 event); + /** * @brief Constructs a new LinkPS2Keyboard object. * diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 8d713c2..2545d09 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -31,29 +31,32 @@ // |GND ---> GND| // -------------------------------------------------------------------------- -#include -#include +#include "_link_common.hpp" + +static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v7.0.0"; #define LINK_PS2_MOUSE_LEFT_CLICK 0b001 #define LINK_PS2_MOUSE_RIGHT_CLICK 0b010 #define LINK_PS2_MOUSE_MIDDLE_CLICK 0b100 -#define LINK_PS2_MOUSE_SI_DIRECTION 0b1000000 -#define LINK_PS2_MOUSE_SO_DIRECTION 0b10000000 -#define LINK_PS2_MOUSE_SI_DATA 0b100 -#define LINK_PS2_MOUSE_SO_DATA 0b1000 -#define LINK_PS2_MOUSE_TO_TICKS 17 - -const u16 LINK_PS2_MOUSE_IRQ_IDS[] = {IRQ_TIMER0, IRQ_TIMER1, IRQ_TIMER2, - IRQ_TIMER3}; - -static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v7.0.0"; - class LinkPS2Mouse { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + using s16 = signed short; + + static constexpr int RCNT_GPIO = 0b1000000000000000; + static constexpr int SI_DIRECTION = 0b1000000; + static constexpr int SO_DIRECTION = 0b10000000; + static constexpr int SI_DATA = 0b100; + static constexpr int SO_DATA = 0b1000; + static constexpr int TO_TICKS = 17; + public: explicit LinkPS2Mouse(u8 waitTimerId) { this->waitTimerId = waitTimerId; } - bool isActive() { return isEnabled; } + [[nodiscard]] bool isActive() { return isEnabled; } void activate() { deactivate(); @@ -76,8 +79,8 @@ class LinkPS2Mouse { void deactivate() { isEnabled = false; - REG_RCNT = 0b1000000000000000; // General Purpose Mode - REG_SIOCNT = 0; // Unused + Link::_REG_RCNT = RCNT_GPIO; + Link::_REG_SIOCNT = 0; } void report(int (&data)[3]) { @@ -188,48 +191,50 @@ class LinkPS2Mouse { } void waitMilliseconds(u16 milliseconds) { - u16 ticksOf1024Cycles = milliseconds * LINK_PS2_MOUSE_TO_TICKS; - REG_TM[waitTimerId].start = -ticksOf1024Cycles; - REG_TM[waitTimerId].cnt = TM_ENABLE | TM_IRQ | TM_FREQ_1024; - IntrWait(1, LINK_PS2_MOUSE_IRQ_IDS[waitTimerId]); - REG_TM[waitTimerId].cnt = 0; + u16 ticksOf1024Cycles = milliseconds * TO_TICKS; + Link::_REG_TM[waitTimerId].start = -ticksOf1024Cycles; + Link::_REG_TM[waitTimerId].cnt = + Link::_TM_ENABLE | Link::_TM_IRQ | Link::_TM_FREQ_1024; + Link::_IntrWait(1, Link::_TIMER_IRQ_IDS[waitTimerId]); + Link::_REG_TM[waitTimerId].cnt = 0; } void waitMicroseconds(u16 microseconds) { - u16 cycles = microseconds * LINK_PS2_MOUSE_TO_TICKS; - REG_TM[waitTimerId].start = -cycles; - REG_TM[waitTimerId].cnt = TM_ENABLE | TM_IRQ | TM_FREQ_1; - IntrWait(1, LINK_PS2_MOUSE_IRQ_IDS[waitTimerId]); - REG_TM[waitTimerId].cnt = 0; + u16 cycles = microseconds * TO_TICKS; + Link::_REG_TM[waitTimerId].start = -cycles; + Link::_REG_TM[waitTimerId].cnt = + Link::_TM_ENABLE | Link::_TM_IRQ | Link::_TM_FREQ_1; + Link::_IntrWait(1, Link::_TIMER_IRQ_IDS[waitTimerId]); + Link::_REG_TM[waitTimerId].cnt = 0; } bool getClock() { - REG_RCNT &= ~LINK_PS2_MOUSE_SI_DIRECTION; - return (REG_RCNT & LINK_PS2_MOUSE_SI_DATA) >> 0; + Link::_REG_RCNT &= ~SI_DIRECTION; + return (Link::_REG_RCNT & SI_DATA) >> 0; } bool getData() { - REG_RCNT &= ~LINK_PS2_MOUSE_SO_DIRECTION; - return (REG_RCNT & LINK_PS2_MOUSE_SO_DATA) >> 1; + Link::_REG_RCNT &= ~SO_DIRECTION; + return (Link::_REG_RCNT & SO_DATA) >> 1; } void setClockHigh() { - REG_RCNT |= LINK_PS2_MOUSE_SI_DIRECTION; - REG_RCNT |= LINK_PS2_MOUSE_SI_DATA; + Link::_REG_RCNT |= SI_DIRECTION; + Link::_REG_RCNT |= SI_DATA; } void setClockLow() { - REG_RCNT |= LINK_PS2_MOUSE_SI_DIRECTION; - REG_RCNT &= ~LINK_PS2_MOUSE_SI_DATA; + Link::_REG_RCNT |= SI_DIRECTION; + Link::_REG_RCNT &= ~SI_DATA; } void setDataHigh() { - REG_RCNT |= LINK_PS2_MOUSE_SO_DIRECTION; - REG_RCNT |= LINK_PS2_MOUSE_SO_DATA; + Link::_REG_RCNT |= SO_DIRECTION; + Link::_REG_RCNT |= SO_DATA; } void setDataLow() { - REG_RCNT |= LINK_PS2_MOUSE_SO_DIRECTION; - REG_RCNT &= ~LINK_PS2_MOUSE_SO_DATA; + Link::_REG_RCNT |= SO_DIRECTION; + Link::_REG_RCNT &= ~SO_DATA; } }; diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index a188366..928685f 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -12,6 +12,10 @@ using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; +using vs32 = volatile signed int; +using vu32 = volatile unsigned int; +using s16 = signed short; + // Structs struct _TMR_REC { From d72a11273261747caaab1492b46249e91fa67dac Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 08:34:27 -0300 Subject: [PATCH 031/195] Adding Doxygen-style docs for IDE autocompletion in LinkPS2Mouse --- README.md | 6 +++-- examples/LinkPS2Mouse_demo/src/main.cpp | 13 ++++++++++- lib/LinkGPIO.hpp | 1 - lib/LinkPS2Keyboard.hpp | 1 - lib/LinkPS2Mouse.hpp | 30 +++++++++++++++++++++++++ lib/LinkSPI.hpp | 1 - 6 files changed, 46 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ebada10..df165bb 100644 --- a/README.md +++ b/README.md @@ -396,7 +396,9 @@ The GBA operates using `1` stop bit, but everything else can be configured. By d # 🖱️ LinkPS2Mouse -A PS/2 mouse driver for the GBA. Use it to add mouse support to your homebrew games. +A PS/2 mouse driver for the GBA. Use it to add mouse support to your homebrew games. It's a straight port from [this library](https://github.com/kristopher/PS2-Mouse-Arduino). + +⚠️ calling `activate()` or `report(...)` could freeze the system if nothing is connected: detecting timeouts using timer interrupts is the user's responsibility. ![photo](https://github.com/afska/gba-link-connection/assets/1631752/6856ff0d-0f06-4a9d-8ded-280052e02b8d) @@ -411,7 +413,7 @@ Name | Return type | Description `isActive()` | **bool** | Returns whether the library is active or not. `activate()` | - | Activates the library. `deactivate()` | - | Deactivates the library. -`report(data[3])` | - | Fills the `data` int array with a report. The first int contains _clicks_ that you can check against the bitmasks `LINK_PS2_MOUSE_LEFT_CLICK`, `LINK_PS2_MOUSE_MIDDLE_CLICK`, and `LINK_PS2_MOUSE_RIGHT_CLICK`. The second int is the _X movement_, and the third int is the _Y movement_. +`report(data[3])` | - | Fills the `data` int array with a report. The first int contains *clicks* that you can check against the bitmasks `LINK_PS2_MOUSE_LEFT_CLICK`, `LINK_PS2_MOUSE_MIDDLE_CLICK`, and `LINK_PS2_MOUSE_RIGHT_CLICK`. The second int is the *X movement*, and the third int is the *Y movement*. ## Pinout diff --git a/examples/LinkPS2Mouse_demo/src/main.cpp b/examples/LinkPS2Mouse_demo/src/main.cpp index bbfdb13..e3b7840 100644 --- a/examples/LinkPS2Mouse_demo/src/main.cpp +++ b/examples/LinkPS2Mouse_demo/src/main.cpp @@ -12,6 +12,10 @@ inline void TIMER() {} // (1) Create a LinkPS2Mouse instance LinkPS2Mouse* linkPS2Mouse = new LinkPS2Mouse(2); +inline void KEYPAD() { + SoftReset(); +} + void init() { REG_DISPCNT = DCNT_MODE0 | DCNT_BG0; tte_init_se_default(0, BG_CBB(0) | BG_SBB(31)); @@ -22,6 +26,11 @@ void init() { interrupt_enable(INTR_VBLANK); interrupt_set_handler(INTR_TIMER2, TIMER); interrupt_enable(INTR_TIMER2); + + // Interrupt to handle B event (to reset) + REG_KEYCNT = 0b10 | (1 << 14); + interrupt_set_handler(INTR_KEYPAD, KEYPAD); + interrupt_enable(INTR_KEYPAD); } int main() { @@ -32,7 +41,9 @@ int main() { u16 keys = ~REG_KEYS & KEY_ANY; if (!linkPS2Mouse->isActive()) { - output += "Press A to read mouse input"; + output += + "Press A to read mouse input\n" + "Press B to cancel"; if (keys & KEY_A) { // (3) Initialize the library diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 9786dc4..20fd2dd 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -81,7 +81,6 @@ class LinkGPIO { /** * @brief Sets a `pin` to be high or not (when set as an output). - * * @param pin One of the enum values from `LinkGPIO::Pin`. * @param isHigh `true` = HIGH, `false` = LOW. */ diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index ae500b4..40385b5 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -63,7 +63,6 @@ class LinkPS2Keyboard { /** * @brief Constructs a new LinkPS2Keyboard object. - * * @param onEvent Function pointer that will receive the scan codes (`u8`). * Check out `LINK_PS2_KEYBOARD_KEY` and `LINK_PS2_KEYBOARD_EVENT` for codes. */ diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 2545d09..8d4b95b 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -21,6 +21,10 @@ // data[1] // X movement // data[2] // Y movement // -------------------------------------------------------------------------- +// considerations: +// - `activate()` or `report(...)` could freeze the system if not connected! +// - detecting timeouts using timer interrupts is the user's responsibility! +// -------------------------------------------------------------------------- // ____________ // | Pinout | // |PS/2 --- GBA| @@ -39,6 +43,9 @@ static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v7.0.0"; #define LINK_PS2_MOUSE_RIGHT_CLICK 0b010 #define LINK_PS2_MOUSE_MIDDLE_CLICK 0b100 +/** + * @brief A PS/2 Mouse Adapter for the GBA. + */ class LinkPS2Mouse { private: using u32 = unsigned int; @@ -54,10 +61,22 @@ class LinkPS2Mouse { static constexpr int TO_TICKS = 17; public: + /** + * @brief Constructs a new LinkPS2Mouse object. + * @param waitTimerId `(0~3)` GBA Timer used for delays. + */ explicit LinkPS2Mouse(u8 waitTimerId) { this->waitTimerId = waitTimerId; } + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library. + * \warning Could freeze the system if nothing is connected! + * \warning Detect timeouts using timer interrupts! + */ void activate() { deactivate(); @@ -76,6 +95,9 @@ class LinkPS2Mouse { isEnabled = true; } + /** + * @brief Deactivates the library. + */ void deactivate() { isEnabled = false; @@ -83,6 +105,14 @@ class LinkPS2Mouse { Link::_REG_SIOCNT = 0; } + /** + * @brief Fills the `data` int array with a report. The first int contains + * *clicks* that you can check against the bitmasks + * `LINK_PS2_MOUSE_LEFT_CLICK`, `LINK_PS2_MOUSE_MIDDLE_CLICK`, and + * `LINK_PS2_MOUSE_RIGHT_CLICK`. The second int is the *X movement*, and the + * third int is the *Y movement*. + * @param data The array to be filled with data. + */ void report(int (&data)[3]) { write(0xeb); // send read data readByte(); // read ack byte diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index c1a2041..44b2c7d 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -101,7 +101,6 @@ class LinkSPI { /** * @brief Activates the library in a specific `mode`. - * * @param mode One of `LinkSPI::Mode::SLAVE`, `LinkSPI::Mode::MASTER_256KBPS`, * or `LinkSPI::Mode::MASTER_2MBPS`. */ From 21bb2cc250f0c51c6dee31287a6786af1adc0686 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 09:21:04 -0300 Subject: [PATCH 032/195] Dropping tonc dependency in LinkRawWireless --- examples/LinkRawWireless_demo/src/main.cpp | 3 +- .../src/scenes/DebugScene.cpp | 3 +- lib/LinkRawWireless.hpp | 241 +++++++++--------- lib/_link_common.hpp | 10 + 4 files changed, 131 insertions(+), 126 deletions(-) diff --git a/examples/LinkRawWireless_demo/src/main.cpp b/examples/LinkRawWireless_demo/src/main.cpp index b44ec52..260432a 100644 --- a/examples/LinkRawWireless_demo/src/main.cpp +++ b/examples/LinkRawWireless_demo/src/main.cpp @@ -1,6 +1,7 @@ +#include "../../../lib/LinkRawWireless.hpp" + #include #include -#include "../../../lib/LinkRawWireless.hpp" #include "../../_lib/interrupt.h" #include "scenes/DebugScene.h" #include "utils/SceneUtils.h" diff --git a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp index 60ab1d2..41d9edf 100644 --- a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp +++ b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp @@ -1,3 +1,5 @@ +#include "../../../../lib/LinkRawWireless.hpp" + #include "DebugScene.h" #include @@ -5,7 +7,6 @@ #include #include -#include "../../../../lib/LinkRawWireless.hpp" #include "utils/InputHandler.h" #include "utils/SceneUtils.h" diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index 6aef489..fb4921f 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -8,8 +8,8 @@ // - If you're building a game, use `LinkWireless`. // -------------------------------------------------------------------------- -#include -#include +#include "_link_common.hpp" + #include #include #include "LinkGPIO.hpp" @@ -25,53 +25,56 @@ #define LRWLOG(str) #endif +static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v7.0.0"; + #define LINK_RAW_WIRELESS_MAX_PLAYERS 5 -#define LINK_RAW_WIRELESS_PING_WAIT 50 -#define LINK_RAW_WIRELESS_TRANSFER_WAIT 15 -#define LINK_RAW_WIRELESS_CMD_TIMEOUT 100 #define LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 #define LINK_RAW_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH 4 #define LINK_RAW_WIRELESS_MAX_GAME_ID 0x7fff #define LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH 14 #define LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH 8 -#define LINK_RAW_WIRELESS_LOGIN_STEPS 9 -#define LINK_RAW_WIRELESS_COMMAND_HEADER 0x9966 -#define LINK_RAW_WIRELESS_RESPONSE_ACK 0x80 -#define LINK_RAW_WIRELESS_DATA_REQUEST 0x80000000 -#define LINK_RAW_WIRELESS_SETUP_MAGIC 0x003c0000 -#define LINK_RAW_WIRELESS_STILL_CONNECTING 0x01000000 -#define LINK_RAW_WIRELESS_BROADCAST_LENGTH 6 -#define LINK_RAW_WIRELESS_BROADCAST_RESPONSE_LENGTH \ - (1 + LINK_RAW_WIRELESS_BROADCAST_LENGTH) #define LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 23 -#define LINK_RAW_WIRELESS_MAX_SERVERS \ - (LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH / \ - LINK_RAW_WIRELESS_BROADCAST_RESPONSE_LENGTH) -#define LINK_RAW_WIRELESS_COMMAND_HELLO 0x10 -#define LINK_RAW_WIRELESS_COMMAND_SETUP 0x17 -#define LINK_RAW_WIRELESS_COMMAND_BROADCAST 0x16 -#define LINK_RAW_WIRELESS_COMMAND_START_HOST 0x19 -#define LINK_RAW_WIRELESS_COMMAND_SLOT_STATUS 0x14 -#define LINK_RAW_WIRELESS_COMMAND_ACCEPT_CONNECTIONS 0x1a -#define LINK_RAW_WIRELESS_COMMAND_END_HOST 0x1b -#define LINK_RAW_WIRELESS_COMMAND_BROADCAST_READ_START 0x1c -#define LINK_RAW_WIRELESS_COMMAND_BROADCAST_READ_POLL 0x1d -#define LINK_RAW_WIRELESS_COMMAND_BROADCAST_READ_END 0x1e -#define LINK_RAW_WIRELESS_COMMAND_CONNECT 0x1f -#define LINK_RAW_WIRELESS_COMMAND_IS_FINISHED_CONNECT 0x20 -#define LINK_RAW_WIRELESS_COMMAND_FINISH_CONNECTION 0x21 -#define LINK_RAW_WIRELESS_COMMAND_SEND_DATA 0x24 -#define LINK_RAW_WIRELESS_COMMAND_SEND_DATA_AND_WAIT 0x25 -#define LINK_RAW_WIRELESS_COMMAND_RECEIVE_DATA 0x26 -#define LINK_RAW_WIRELESS_COMMAND_WAIT 0x27 -#define LINK_RAW_WIRELESS_COMMAND_BYE 0x3d - -static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v7.0.0"; - -const u16 LINK_RAW_WIRELESS_LOGIN_PARTS[] = { - 0x494e, 0x494e, 0x544e, 0x544e, 0x4e45, 0x4e45, 0x4f44, 0x4f44, 0x8001}; class LinkRawWireless { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + + static constexpr int PING_WAIT = 50; + static constexpr int TRANSFER_WAIT = 15; + static constexpr int CMD_TIMEOUT = 100; + static constexpr int LOGIN_STEPS = 9; + static constexpr int COMMAND_HEADER = 0x9966; + static constexpr int RESPONSE_ACK = 0x80; + static constexpr u32 DATA_REQUEST = 0x80000000; + static constexpr int SETUP_MAGIC = 0x003c0000; + static constexpr int WAIT_STILL_CONNECTING = 0x01000000; + static constexpr int BROADCAST_LENGTH = 6; + static constexpr int BROADCAST_RESPONSE_LENGTH = 1 + BROADCAST_LENGTH; + static constexpr int MAX_SERVERS = + LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH / BROADCAST_RESPONSE_LENGTH; + static constexpr int COMMAND_HELLO = 0x10; + static constexpr int COMMAND_SETUP = 0x17; + static constexpr int COMMAND_BROADCAST = 0x16; + static constexpr int COMMAND_START_HOST = 0x19; + static constexpr int COMMAND_SLOT_STATUS = 0x14; + static constexpr int COMMAND_ACCEPT_CONNECTIONS = 0x1a; + static constexpr int COMMAND_END_HOST = 0x1b; + static constexpr int COMMAND_BROADCAST_READ_START = 0x1c; + static constexpr int COMMAND_BROADCAST_READ_POLL = 0x1d; + static constexpr int COMMAND_BROADCAST_READ_END = 0x1e; + static constexpr int COMMAND_CONNECT = 0x1f; + static constexpr int COMMAND_IS_FINISHED_CONNECT = 0x20; + static constexpr int COMMAND_FINISH_CONNECTION = 0x21; + static constexpr int COMMAND_SEND_DATA = 0x24; + static constexpr int COMMAND_SEND_DATA_AND_WAIT = 0x25; + static constexpr int COMMAND_RECEIVE_DATA = 0x26; + static constexpr int COMMAND_WAIT = 0x27; + static constexpr int COMMAND_BYE = 0x3d; + static constexpr u16 LOGIN_PARTS[] = {0x494e, 0x494e, 0x544e, 0x544e, 0x4e45, + 0x4e45, 0x4f44, 0x4f44, 0x8001}; + public: #ifdef LINK_RAW_WIRELESS_ENABLE_LOGGING typedef void (*Logger)(std::string); @@ -129,7 +132,7 @@ class LinkRawWireless { }; struct BroadcastReadPollResponse { - std::array servers; + std::array servers; u32 serversSize = 0; }; @@ -146,7 +149,7 @@ class LinkRawWireless { u32 dataSize = 0; }; - bool isActive() { return isEnabled; } + [[nodiscard]] bool isActive() { return isEnabled; } bool activate() { isEnabled = false; @@ -158,7 +161,7 @@ class LinkRawWireless { } bool deactivate() { - bool success = sendCommand(LINK_RAW_WIRELESS_COMMAND_BYE).success; + bool success = sendCommand(COMMAND_BYE).success; isEnabled = false; resetState(); @@ -170,12 +173,12 @@ class LinkRawWireless { bool setup(u8 maxPlayers = LINK_RAW_WIRELESS_MAX_PLAYERS, u8 maxTransmissions = 4, u8 waitTimeout = 32, - u32 magic = LINK_RAW_WIRELESS_SETUP_MAGIC) { + u32 magic = SETUP_MAGIC) { u32 config = (u32)(magic | (((LINK_RAW_WIRELESS_MAX_PLAYERS - maxPlayers) & 0b11) << 16) | (maxTransmissions << 8) | waitTimeout); - return sendCommand(LINK_RAW_WIRELESS_COMMAND_SETUP, {config}, 1).success; + return sendCommand(COMMAND_SETUP, {config}, 1).success; } bool broadcast(const char* gameName = "", @@ -197,7 +200,7 @@ class LinkRawWireless { bool success = sendCommand( - LINK_RAW_WIRELESS_COMMAND_BROADCAST, + COMMAND_BROADCAST, {buildU32(buildU16(finalGameName[1], finalGameName[0]), gameId), buildU32(buildU16(finalGameName[5], finalGameName[4]), buildU16(finalGameName[3], finalGameName[2])), @@ -209,7 +212,7 @@ class LinkRawWireless { buildU16(finalUserName[1], finalUserName[0])), buildU32(buildU16(finalUserName[7], finalUserName[6]), buildU16(finalUserName[5], finalUserName[4]))}, - LINK_RAW_WIRELESS_BROADCAST_LENGTH) + BROADCAST_LENGTH) .success; if (!success) { @@ -221,14 +224,14 @@ class LinkRawWireless { } bool startHost() { - bool success = sendCommand(LINK_RAW_WIRELESS_COMMAND_START_HOST).success; + bool success = sendCommand(COMMAND_START_HOST).success; if (!success) { reset(); return false; } - wait(LINK_RAW_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); LRWLOG("state = SERVING"); state = SERVING; @@ -236,7 +239,7 @@ class LinkRawWireless { } bool getSlotStatus(SlotStatusResponse& response) { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_SLOT_STATUS); + auto result = sendCommand(COMMAND_SLOT_STATUS); if (!result.success) { reset(); @@ -258,7 +261,7 @@ class LinkRawWireless { } bool acceptConnections(AcceptConnectionsResponse& response) { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_ACCEPT_CONNECTIONS); + auto result = sendCommand(COMMAND_ACCEPT_CONNECTIONS); if (!result.success) { reset(); @@ -281,7 +284,7 @@ class LinkRawWireless { } bool endHost(AcceptConnectionsResponse& response) { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_END_HOST); + auto result = sendCommand(COMMAND_END_HOST); if (!result.success) { reset(); @@ -304,8 +307,7 @@ class LinkRawWireless { } bool broadcastReadStart() { - bool success = - sendCommand(LINK_RAW_WIRELESS_COMMAND_BROADCAST_READ_START).success; + bool success = sendCommand(COMMAND_BROADCAST_READ_START).success; if (!success) { reset(); @@ -319,22 +321,20 @@ class LinkRawWireless { } bool broadcastReadPoll(BroadcastReadPollResponse& response) { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_BROADCAST_READ_POLL); + auto result = sendCommand(COMMAND_BROADCAST_READ_POLL); bool success = - result.success && - result.responsesSize % LINK_RAW_WIRELESS_BROADCAST_RESPONSE_LENGTH == 0; + result.success && result.responsesSize % BROADCAST_RESPONSE_LENGTH == 0; if (!success) { reset(); return false; } - u32 totalBroadcasts = - result.responsesSize / LINK_RAW_WIRELESS_BROADCAST_RESPONSE_LENGTH; + u32 totalBroadcasts = result.responsesSize / BROADCAST_RESPONSE_LENGTH; response.serversSize = 0; for (u32 i = 0; i < totalBroadcasts; i++) { - u32 start = LINK_RAW_WIRELESS_BROADCAST_RESPONSE_LENGTH * i; + u32 start = BROADCAST_RESPONSE_LENGTH * i; Server server; server.id = (u16)result.responses[start]; @@ -358,8 +358,7 @@ class LinkRawWireless { } bool broadcastReadEnd() { - bool success = - sendCommand(LINK_RAW_WIRELESS_COMMAND_BROADCAST_READ_END).success; + bool success = sendCommand(COMMAND_BROADCAST_READ_END).success; if (!success) { reset(); @@ -373,8 +372,7 @@ class LinkRawWireless { } bool connect(u16 serverId) { - bool success = - sendCommand(LINK_RAW_WIRELESS_COMMAND_CONNECT, {serverId}, 1).success; + bool success = sendCommand(COMMAND_CONNECT, {serverId}, 1).success; if (!success) { reset(); @@ -388,7 +386,7 @@ class LinkRawWireless { } bool keepConnecting(ConnectionStatus& response) { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_IS_FINISHED_CONNECT); + auto result = sendCommand(COMMAND_IS_FINISHED_CONNECT); if (!result.success || result.responsesSize == 0) { if (result.responsesSize == 0) LRWLOG("! empty response"); @@ -396,7 +394,7 @@ class LinkRawWireless { return false; } - if (result.responses[0] == LINK_RAW_WIRELESS_STILL_CONNECTING) { + if (result.responses[0] == WAIT_STILL_CONNECTING) { response.phase = STILL_CONNECTING; return true; } @@ -416,7 +414,7 @@ class LinkRawWireless { } bool finishConnection() { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_FINISH_CONNECTION); + auto result = sendCommand(COMMAND_FINISH_CONNECTION); if (!result.success || result.responsesSize == 0) { if (result.responsesSize == 0) LRWLOG("! empty response"); @@ -453,9 +451,7 @@ class LinkRawWireless { dataSize++; LRWLOG("using header " + toHex(header)); - bool success = - sendCommand(LINK_RAW_WIRELESS_COMMAND_SEND_DATA, data, dataSize) - .success; + bool success = sendCommand(COMMAND_SEND_DATA, data, dataSize).success; if (!success) { reset(); @@ -480,8 +476,7 @@ class LinkRawWireless { dataSize++; LRWLOG("using header " + toHex(header)); - if (!sendCommand(LINK_RAW_WIRELESS_COMMAND_SEND_DATA_AND_WAIT, data, - dataSize, true) + if (!sendCommand(COMMAND_SEND_DATA_AND_WAIT, data, dataSize, true) .success) { reset(); return false; @@ -493,7 +488,7 @@ class LinkRawWireless { } bool receiveData(ReceiveDataResponse& response) { - auto result = sendCommand(LINK_RAW_WIRELESS_COMMAND_RECEIVE_DATA); + auto result = sendCommand(COMMAND_RECEIVE_DATA); for (u32 i = 0; i < result.responsesSize; i++) response.data[i] = result.responses[i]; response.dataSize = result.responsesSize; @@ -522,7 +517,7 @@ class LinkRawWireless { } bool wait(RemoteCommand& remoteCommand) { - if (!sendCommand(LINK_RAW_WIRELESS_COMMAND_WAIT, {}, 0, true).success) { + if (!sendCommand(COMMAND_WAIT, {}, 0, true).success) { reset(); return false; } @@ -543,8 +538,8 @@ class LinkRawWireless { u32 r; LRWLOG("sending command 0x" + toHex(command)); - if ((r = transfer(command)) != LINK_RAW_WIRELESS_DATA_REQUEST) { - logExpectedButReceived(LINK_RAW_WIRELESS_DATA_REQUEST, r); + if ((r = transfer(command)) != DATA_REQUEST) { + logExpectedButReceived(DATA_REQUEST, r); return result; } @@ -553,37 +548,34 @@ class LinkRawWireless { u32 param = params[i]; LRWLOG("sending param" + std::to_string(parameterCount) + ": 0x" + toHex(param)); - if ((r = transfer(param)) != LINK_RAW_WIRELESS_DATA_REQUEST) { - logExpectedButReceived(LINK_RAW_WIRELESS_DATA_REQUEST, r); + if ((r = transfer(param)) != DATA_REQUEST) { + logExpectedButReceived(DATA_REQUEST, r); return result; } parameterCount++; } LRWLOG("sending response request"); - u32 response = - invertsClock - ? transferAndStartClockInversionACK(LINK_RAW_WIRELESS_DATA_REQUEST) - : transfer(LINK_RAW_WIRELESS_DATA_REQUEST); + u32 response = invertsClock + ? transferAndStartClockInversionACK(DATA_REQUEST) + : transfer(DATA_REQUEST); u16 header = msB32(response); u16 data = lsB32(response); u8 responses = msB16(data); u8 ack = lsB16(data); - if (header != LINK_RAW_WIRELESS_COMMAND_HEADER) { + if (header != COMMAND_HEADER) { LRWLOG("! expected HEADER 0x9966"); LRWLOG("! but received 0x" + toHex(header)); return result; } - if (ack != type + LINK_RAW_WIRELESS_RESPONSE_ACK) { + if (ack != type + RESPONSE_ACK) { if (ack == 0xee && responses == 1 && !invertsClock) { - u8 __attribute__((unused)) code = - (u8)transfer(LINK_RAW_WIRELESS_DATA_REQUEST); + u8 __attribute__((unused)) code = (u8)transfer(DATA_REQUEST); LRWLOG("! error received"); LRWLOG(code == 1 ? "! invalid state" : "! unknown cmd"); } else { - LRWLOG("! expected ACK 0x" + - toHex(type + LINK_RAW_WIRELESS_RESPONSE_ACK)); + LRWLOG("! expected ACK 0x" + toHex(type + RESPONSE_ACK)); LRWLOG("! but received 0x" + toHex(ack)); } return result; @@ -594,7 +586,7 @@ class LinkRawWireless { for (u32 i = 0; i < responses; i++) { LRWLOG("response " + std::to_string(i + 1) + "/" + std::to_string(responses) + ":"); - u32 responseData = transfer(LINK_RAW_WIRELESS_DATA_REQUEST); + u32 responseData = transfer(DATA_REQUEST); result.responses[result.responsesSize++] = responseData; LRWLOG("<< " + toHex(responseData)); } @@ -611,8 +603,8 @@ class LinkRawWireless { linkSPI->activate(LinkSPI::Mode::SLAVE); LRWLOG("WAITING for adapter cmd"); - u32 command = linkSPI->transfer( - LINK_RAW_WIRELESS_DATA_REQUEST, []() { return false; }, false, true); + u32 command = + linkSPI->transfer(DATA_REQUEST, []() { return false; }, false, true); if (!reverseAcknowledge()) { linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); reset(); @@ -623,7 +615,7 @@ class LinkRawWireless { u16 data = lsB32(command); u8 params = msB16(data); u8 commandId = lsB16(data); - if (header != LINK_RAW_WIRELESS_COMMAND_HEADER) { + if (header != COMMAND_HEADER) { LRWLOG("! expected HEADER 0x9966"); LRWLOG("! but received 0x" + toHex(header)); linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); @@ -636,8 +628,8 @@ class LinkRawWireless { for (u32 i = 0; i < params; i++) { LRWLOG("param " + std::to_string(i + 1) + "/" + std::to_string(params) + ":"); - u32 paramData = linkSPI->transfer( - LINK_RAW_WIRELESS_DATA_REQUEST, []() { return false; }, false, true); + u32 paramData = + linkSPI->transfer(DATA_REQUEST, []() { return false; }, false, true); if (!reverseAcknowledge()) { linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); reset(); @@ -657,7 +649,7 @@ class LinkRawWireless { return remoteCommand; } - if (command != LINK_RAW_WIRELESS_DATA_REQUEST) { + if (command != DATA_REQUEST) { LRWLOG("! expected CMD request"); LRWLOG("! but received 0x" + toHex(command)); linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); @@ -668,7 +660,7 @@ class LinkRawWireless { LRWLOG("setting SPI to 2Mbps"); linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); - wait(LINK_RAW_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); remoteCommand.success = true; remoteCommand.commandId = commandId; @@ -676,16 +668,18 @@ class LinkRawWireless { return remoteCommand; } - u32 getDeviceTransferLength() { + [[nodiscard]] u32 getDeviceTransferLength() { return state == SERVING ? LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH : LINK_RAW_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH; } - State getState() { return state; } - bool isConnected() { return sessionState.playerCount > 1; } - bool isSessionActive() { return state == SERVING || state == CONNECTED; } - u8 playerCount() { return sessionState.playerCount; } - u8 currentPlayerId() { return sessionState.currentPlayerId; } + [[nodiscard]] State getState() { return state; } + [[nodiscard]] bool isConnected() { return sessionState.playerCount > 1; } + [[nodiscard]] bool isSessionActive() { + return state == SERVING || state == CONNECTED; + } + [[nodiscard]] u8 playerCount() { return sessionState.playerCount; } + [[nodiscard]] u8 currentPlayerId() { return sessionState.currentPlayerId; } ~LinkRawWireless() { delete linkSPI; @@ -763,10 +757,10 @@ class LinkRawWireless { if (!login()) return false; - wait(LINK_RAW_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); LRWLOG("sending HELLO command"); - if (!sendCommand(LINK_RAW_WIRELESS_COMMAND_HELLO).success) + if (!sendCommand(COMMAND_HELLO).success) return false; LRWLOG("setting SPI to 2Mbps"); @@ -784,7 +778,7 @@ class LinkRawWireless { linkGPIO->setMode(LinkGPIO::Pin::SD, LinkGPIO::Direction::OUTPUT); LRWLOG("setting SD = HIGH"); linkGPIO->writePin(LinkGPIO::SD, true); - wait(LINK_RAW_WIRELESS_PING_WAIT); + wait(PING_WAIT); LRWLOG("setting SD = LOW"); linkGPIO->writePin(LinkGPIO::SD, false); } @@ -793,14 +787,13 @@ class LinkRawWireless { LoginMemory memory; LRWLOG("sending initial login packet"); - if (!exchangeLoginPacket(LINK_RAW_WIRELESS_LOGIN_PARTS[0], 0, memory)) + if (!exchangeLoginPacket(LOGIN_PARTS[0], 0, memory)) return false; - for (u32 i = 0; i < LINK_RAW_WIRELESS_LOGIN_STEPS; i++) { + for (u32 i = 0; i < LOGIN_STEPS; i++) { LRWLOG("sending login packet " + std::to_string(i + 1) + "/" + - std::to_string(LINK_RAW_WIRELESS_LOGIN_STEPS)); - if (!exchangeLoginPacket(LINK_RAW_WIRELESS_LOGIN_PARTS[i], - LINK_RAW_WIRELESS_LOGIN_PARTS[i], memory)) + std::to_string(LOGIN_STEPS)); + if (!exchangeLoginPacket(LOGIN_PARTS[i], LOGIN_PARTS[i], memory)) return false; } @@ -827,15 +820,15 @@ class LinkRawWireless { } u32 buildCommand(u8 type, u8 length = 0) { - return buildU32(LINK_RAW_WIRELESS_COMMAND_HEADER, buildU16(length, type)); + return buildU32(COMMAND_HEADER, buildU16(length, type)); } u32 transfer(u32 data, bool customAck = true) { if (!customAck) - wait(LINK_RAW_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; u32 receivedData = linkSPI->transfer( data, [this, &lines, &vCount]() { return cmdTimeout(lines, vCount); }, false, customAck); @@ -848,7 +841,7 @@ class LinkRawWireless { u32 transferAndStartClockInversionACK(u32 data) { u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; u32 receivedData = linkSPI->transfer( data, [this, &lines, &vCount]() { return cmdTimeout(lines, vCount); }, false, true); @@ -861,7 +854,7 @@ class LinkRawWireless { bool acknowledge() { u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; linkSPI->_setSOLow(); while (!linkSPI->_isSIHigh()) { @@ -886,7 +879,7 @@ class LinkRawWireless { bool reverseAcknowledgeStart() { u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; linkSPI->_setSOLow(); wait(1); @@ -905,7 +898,7 @@ class LinkRawWireless { bool reverseAcknowledge(bool isLastPart = false) { u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; linkSPI->_setSOLow(); while (linkSPI->_isSIHigh()) { @@ -940,13 +933,13 @@ class LinkRawWireless { } bool cmdTimeout(u32& lines, u32& vCount) { - return timeout(LINK_RAW_WIRELESS_CMD_TIMEOUT, lines, vCount); + return timeout(CMD_TIMEOUT, lines, vCount); } bool timeout(u32 limit, u32& lines, u32& vCount) { - if (REG_VCOUNT != vCount) { - lines += max((int)REG_VCOUNT - (int)vCount, 0); - vCount = REG_VCOUNT; + if (Link::_REG_VCOUNT != vCount) { + lines += Link::_max((int)Link::_REG_VCOUNT - (int)vCount, 0); + vCount = Link::_REG_VCOUNT; } return lines > limit; @@ -954,12 +947,12 @@ class LinkRawWireless { void wait(u32 verticalLines) { u32 count = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; while (count < verticalLines) { - if (REG_VCOUNT != vCount) { + if (Link::_REG_VCOUNT != vCount) { count++; - vCount = REG_VCOUNT; + vCount = Link::_REG_VCOUNT; } }; } diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 928685f..e22b0a2 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -113,6 +113,16 @@ static inline __attribute__((always_inline)) int _MultiBoot(_MultiBootParam* mb, return (int)r0; } +// Helpers + +static inline int _max(int a, int b) { + return (a > b) ? (a) : (b); +} + +static inline int _min(int a, int b) { + return (a < b) ? (a) : (b); +} + } // namespace Link #endif // LINK_COMMON_H From c8e5a4745d87bbbf895bbaccfc97dd6724000814 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 10:11:46 -0300 Subject: [PATCH 033/195] Adding Doxygen-style docs for IDE autocompletion in LinkRawWireless --- README.md | 10 +- docs/wireless_adapter.md | 2 +- examples/LinkCable_full/src/main.cpp | 2 +- .../src/scenes/DebugScene.cpp | 2 +- lib/LinkCable.hpp | 10 +- lib/LinkRawCable.hpp | 4 +- lib/LinkRawWireless.hpp | 273 +++++++++++++++++- lib/LinkWirelessMultiboot.hpp | 2 +- 8 files changed, 274 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index df165bb..06998fd 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ Name | Return type | Description `deactivate()` | - | Deactivates the library. `isConnected()` | **bool** | Returns `true` if there are at least 2 connected players. `playerCount()` | **u8** *(0~4)* | Returns the number of connected players. -`currentPlayerId()` | **u8** *(0~3)* | Returns the current player id. +`currentPlayerId()` | **u8** *(0~3)* | Returns the current player ID. `sync()` | - | Call this method every time you need to fetch new data. `waitFor(playerId)` | **bool** | Waits for data from player #`playerId`. Returns `true` on success, or `false` on disconnection. `waitFor(playerId, cancel)` | **bool** | Like `waitFor(playerId)` but accepts a `cancel()` function. The library will continuously invoke it, and abort the wait if it returns `true`. @@ -125,7 +125,7 @@ Name | Return type | Description `isActive()` | **bool** | Returns whether the library is active or not. `activate(baudRate = BAUD_RATE_1)` | - | Activates the library in a specific `baudRate` (`LinkRawCable::BaudRate`). `deactivate()` | - | Deactivates the library. -`transfer(data)` | **LinkRawCable::Response** | Exchanges `data` with the connected consoles. Returns the received data, including the assigned player id. +`transfer(data)` | **LinkRawCable::Response** | Exchanges `data` with the connected consoles. Returns the received data, including the assigned player ID. `transfer(data, cancel)` | **LinkRawCable::Response** | Like `transfer(data)` but accepts a `cancel()` function. The library will continuously invoke it, and abort the transfer if it returns `true`. `transferAsync(data)` | - | Schedules a `data` transfer and returns. After this, call `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the async data, normal `transfer(...)`s won't do anything! `getAsyncState()` | **LinkRawCable::AsyncState** | Returns the state of the last async transfer (one of `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or `LinkRawCable::AsyncState::READY`). @@ -191,14 +191,14 @@ Name | Return type | Description `getServersAsyncStart()` | **bool** | Starts looking for broadcasting servers and changes the state to `SEARCHING`. After this, call `getServersAsyncEnd(...)` 1 second later. `getServersAsyncEnd(servers)` | **bool** | Fills the `servers` array with all the currently broadcasting servers. Changes the state to `AUTHENTICATED` again. `connect(serverId)` | **bool** | Starts a connection with `serverId` and changes the state to `CONNECTING`. -`keepConnecting()` | **bool** | When connecting, this needs to be called until the state is `CONNECTED`. It assigns a player id. Keep in mind that `isConnected()` and `playerCount()` won't be updated until the first message from server arrives. +`keepConnecting()` | **bool** | When connecting, this needs to be called until the state is `CONNECTED`. It assigns a player ID. Keep in mind that `isConnected()` and `playerCount()` won't be updated until the first message from server arrives. `send(data)` | **bool** | Enqueues `data` to be sent to other nodes. `receive(messages)` | **bool** | Fills the `messages` array with incoming messages, forwarding if needed. `getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). `isConnected()` | **bool** | Returns true if the player count is higher than 1. `isSessionActive()` | **bool** | Returns true if the state is `SERVING` or `CONNECTED`. `playerCount()` | **u8** *(1~5)* | Returns the number of connected players. -`currentPlayerId()` | **u8** *(0~4)* | Returns the current player id. +`currentPlayerId()` | **u8** *(0~4)* | Returns the current player ID. `getLastError([clear])` | **LinkWireless::Error** | If one of the other methods returns `false`, you can inspect this to know the cause. After this call, the last error is cleared if `clear` is `true` (default behavior). ⚠️ `0xFFFF` is a reserved value, so don't send it! @@ -227,7 +227,7 @@ Name | Return type | Description ## Methods -- There's one method for every supported wireless adapter command. +- There's one method for every supported Wireless Adapter command. - Use `sendCommand(...)` to send arbitrary commands. # 🔧🏛 LinkWirelessOpenSDK diff --git a/docs/wireless_adapter.md b/docs/wireless_adapter.md index 911f9b5..af01c4c 100644 --- a/docs/wireless_adapter.md +++ b/docs/wireless_adapter.md @@ -290,7 +290,7 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg * The number of available slots depends on `maxPlayers` (see [Setup](#setup---0x17)) and/or [EndHost](#endhost---0x1b). * 4th byte: Zero. -🆔 IDs are randomly generated. Each time you broadcast or connect, the adapter assigns you a new id. +🆔 IDs are randomly generated. Each time you broadcast or connect, the adapter assigns you a new ID. ✅ Reading broadcasts is a three-step process: First, you send `0x1c` (you will get an ACK instantly), and start waiting until the adapter retrieves data (games usually wait 1 full second). Then, send a `0x1d` and it will return what's described above. Lastly, send a `0x1e` to finish the process (you can ignore what the adapter returns here). If you don't send that last `0x1e`, the next command will fail. diff --git a/examples/LinkCable_full/src/main.cpp b/examples/LinkCable_full/src/main.cpp index 9f8410e..fe10b35 100644 --- a/examples/LinkCable_full/src/main.cpp +++ b/examples/LinkCable_full/src/main.cpp @@ -45,7 +45,7 @@ int main() { static constexpr int BIT_ERROR = 6; static constexpr int BIT_START = 7; - // log player id/count and important flags + // log player ID/count and important flags TextStream::instance().setText( "P" + asStr(linkConnection->currentPlayerId()) + "/" + asStr(linkConnection->playerCount()) + "-R" + diff --git a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp index 41d9edf..11cf04b 100644 --- a/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp +++ b/examples/LinkRawWireless_demo/src/scenes/DebugScene.cpp @@ -772,7 +772,7 @@ genericWait: } int DebugScene::selectServerId() { - switch (selectOption("Which server id?", std::vector{ + switch (selectOption("Which server ID?", std::vector{ "", "", "", "", ""})) { case 0: { diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 57bbc54..8e65d73 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -213,7 +213,7 @@ class LinkCable { [[nodiscard]] u8 playerCount() { return state.playerCount; } /** - * @brief Returns the current player id (`0~3`). + * @brief Returns the current player ID (`0~3`). */ [[nodiscard]] u8 currentPlayerId() { return state.currentPlayerId; } @@ -242,7 +242,7 @@ class LinkCable { /** * @brief Waits for data from player #`playerId`. Returns `true` on success, * or `false` on disconnection. - * @param playerId A player id. + * @param playerId A player ID. */ bool waitFor(u8 playerId) { return waitFor(playerId, []() { return false; }); @@ -271,7 +271,7 @@ class LinkCable { /** * @brief Returns `true` if there are pending messages from player * #`playerId`. - * @param playerId A player id. + * @param playerId A player ID. * \warning Keep in mind that if this returns `false`, it will keep doing so * until you *fetch new data* with `sync()`. */ @@ -281,7 +281,7 @@ class LinkCable { /** * @brief Dequeues and returns the next message from player #`playerId`. - * @param playerId A player id. + * @param playerId A player ID. * \warning If there's no data from that player, a `0` will be returned. */ u16 read(u8 playerId) { return state.incomingMessages[playerId].pop(); } @@ -289,7 +289,7 @@ class LinkCable { /** * @brief Returns the next message from player #`playerId` without dequeuing * it. - * @param playerId A player id. + * @param playerId A player ID. * \warning If there's no data from that player, a `0` will be returned. */ [[nodiscard]] u16 peek(u8 playerId) { diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 5b58690..3eece97 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -117,7 +117,7 @@ class LinkRawCable { /** * @brief Exchanges `data` with the connected consoles. Returns the received - * data from each player, including the assigned player id. + * data from each player, including the assigned player ID. * @param data The value to be sent. */ Response transfer(u16 data) { @@ -126,7 +126,7 @@ class LinkRawCable { /** * @brief Exchanges `data` with the connected consoles. Returns the received - * data from each player, including the assigned player id. + * data from each player, including the assigned player ID. * @param data The value to be sent. * @param cancel A function that will be continuously invoked. If it returns * `true`, the transfer will be aborted and the response will be empty. diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index fb4921f..f41637d 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -15,16 +15,12 @@ #include "LinkGPIO.hpp" #include "LinkSPI.hpp" -// Enable logging (set `linkRawWireless->logger` and uncomment to enable) +/** + * @brief Enable logging. + * \warning Set `linkRawWireless->logger` and uncomment to enable! + */ // #define LINK_RAW_WIRELESS_ENABLE_LOGGING -#ifdef LINK_RAW_WIRELESS_ENABLE_LOGGING -#include -#define LRWLOG(str) logger(str) -#else -#define LRWLOG(str) -#endif - static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v7.0.0"; #define LINK_RAW_WIRELESS_MAX_PLAYERS 5 @@ -35,6 +31,18 @@ static volatile char LINK_RAW_WIRELESS_VERSION[] = "LinkRawWireless/v7.0.0"; #define LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH 8 #define LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 23 +#ifdef LINK_RAW_WIRELESS_ENABLE_LOGGING +#include +#define LRWLOG(str) logger(str) +#else +#define LRWLOG(str) +#endif + +/** + * @brief A low level driver for the GBA Wireless Adapter. + * \warning Advanced usage only! + * \warning If you're building a game, use `LinkWireless`. + */ class LinkRawWireless { private: using u32 = unsigned int; @@ -149,8 +157,15 @@ class LinkRawWireless { u32 dataSize = 0; }; + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library. + * Returns whether initialization was successful or not. + */ bool activate() { isEnabled = false; @@ -160,6 +175,9 @@ class LinkRawWireless { return success; } + /** + * @brief Deactivates the library. + */ bool deactivate() { bool success = sendCommand(COMMAND_BYE).success; @@ -170,6 +188,17 @@ class LinkRawWireless { return success; } + /** + * @brief Calls the Setup (`0x17`) command. + * @param maxPlayers `(2~5)` Maximum players in hosted rooms. Clients should + * set this to `0`. + * @param maxTransmissions Number of transmissions before marking a player as + * disconnected. `0` means infinite retransmissions. + * @param waitTimeout Timeout of the *waiting commands*, in frames (16.6ms). + * `0` means no timeout. + * @param magic A part of the protocol that hasn't been reverse-engineered + * yet. For now, it's magic (`0x003c0000`). + */ bool setup(u8 maxPlayers = LINK_RAW_WIRELESS_MAX_PLAYERS, u8 maxTransmissions = 4, u8 waitTimeout = 32, @@ -181,6 +210,12 @@ class LinkRawWireless { return sendCommand(COMMAND_SETUP, {config}, 1).success; } + /** + * @brief Calls the Broadcast (`0x16`) command. + * @param gameName Game name. Maximum `14` characters + NULL terminator. + * @param userName User name. Maximum `8` characters + NULL terminator. + * @param gameId `(0 ~ 0x7FFF)` Game ID. + */ bool broadcast(const char* gameName = "", const char* userName = "", u16 gameId = LINK_RAW_WIRELESS_MAX_GAME_ID) { @@ -223,6 +258,9 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the StartHost (`0x19`) command. + */ bool startHost() { bool success = sendCommand(COMMAND_START_HOST).success; @@ -238,6 +276,10 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the SlotStatus (`0x14`) command. + * @param response A structure that will be filled with the response data. + */ bool getSlotStatus(SlotStatusResponse& response) { auto result = sendCommand(COMMAND_SLOT_STATUS); @@ -260,6 +302,10 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the AcceptConnections (`0x1a`) command. + * @param response A structure that will be filled with the response data. + */ bool acceptConnections(AcceptConnectionsResponse& response) { auto result = sendCommand(COMMAND_ACCEPT_CONNECTIONS); @@ -283,6 +329,10 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the EndHost (`0x1b`) command. + * @param response A structure that will be filled with the response data. + */ bool endHost(AcceptConnectionsResponse& response) { auto result = sendCommand(COMMAND_END_HOST); @@ -306,6 +356,9 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the BroadcastRead1 (`0x1c`) command. + */ bool broadcastReadStart() { bool success = sendCommand(COMMAND_BROADCAST_READ_START).success; @@ -320,6 +373,9 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the BroadcastRead2 (`0x1d`) command. + */ bool broadcastReadPoll(BroadcastReadPollResponse& response) { auto result = sendCommand(COMMAND_BROADCAST_READ_POLL); bool success = @@ -357,6 +413,9 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the BroadcastRead3 (`0x1e`) command. + */ bool broadcastReadEnd() { bool success = sendCommand(COMMAND_BROADCAST_READ_END).success; @@ -371,6 +430,10 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the Connect (`0x1f`) command. + * @param serverId Device ID of the server. + */ bool connect(u16 serverId) { bool success = sendCommand(COMMAND_CONNECT, {serverId}, 1).success; @@ -385,6 +448,10 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the IsFinishedConnect (`0x20`) command. + * @param response A structure that will be filled with the response data. + */ bool keepConnecting(ConnectionStatus& response) { auto result = sendCommand(COMMAND_IS_FINISHED_CONNECT); if (!result.success || result.responsesSize == 0) { @@ -413,6 +480,9 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the FinishConnection (`0x21`) command. + */ bool finishConnection() { auto result = sendCommand(COMMAND_FINISH_CONNECTION); if (!result.success || result.responsesSize == 0) { @@ -437,6 +507,13 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the SendData (`0x24`) command. + * @param data The values to be sent. + * @param dataSize The number of 32-bit values in the `data` array. + * @param _bytes The number of BYTES to send. If `0`, the method will use + * `dataSize * 4` instead. + */ bool sendData( std::array data, u32 dataSize, @@ -461,6 +538,15 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the SendDataAndWait (`0x25`) command. + * @param data The values to be sent. + * @param dataSize The number of 32-bit values in the `data` array. + * @param remoteCommand A structure that will be filled with the remote + * command from the adapter. + * @param _bytes The number of BYTES to send. If `0`, the method will use + * `dataSize * 4` instead. + */ bool sendDataAndWait( std::array data, u32 dataSize, @@ -487,6 +573,10 @@ class LinkRawWireless { return remoteCommand.success; } + /** + * @brief Calls the ReceiveData (`0x26`) command. + * @param response A structure that will be filled with the response data. + */ bool receiveData(ReceiveDataResponse& response) { auto result = sendCommand(COMMAND_RECEIVE_DATA); for (u32 i = 0; i < result.responsesSize; i++) @@ -516,6 +606,11 @@ class LinkRawWireless { return true; } + /** + * @brief Calls the Wait (`0x27`) command. + * @param remoteCommand A structure that will be filled with the remote + * command from the adapter. + */ bool wait(RemoteCommand& remoteCommand) { if (!sendCommand(COMMAND_WAIT, {}, 0, true).success) { reset(); @@ -527,6 +622,13 @@ class LinkRawWireless { return remoteCommand.success; } + /** + * @brief Calls an arbitrary command and returns the response. + * @param type The ID of the command. + * @param params The command parameters. + * @param length The number of 32-bit values in the `params` array. + * @param invertsClock Whether this command inverts the clock or not (Wait). + */ CommandResult sendCommand( u8 type, std::array params = @@ -596,6 +698,10 @@ class LinkRawWireless { return result; } + /** + * @brief Inverts the clock and waits until the adapter sends a command. + * Returns the remote command. + */ RemoteCommand receiveCommandFromAdapter() { RemoteCommand remoteCommand; @@ -668,17 +774,40 @@ class LinkRawWireless { return remoteCommand; } + /** + * @brief Returns the maximum number of transferrable 32-bit values. + * It's 23 for servers and 4 for clients. + */ [[nodiscard]] u32 getDeviceTransferLength() { return state == SERVING ? LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH : LINK_RAW_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH; } + /** + * @brief Returns the current state. + */ [[nodiscard]] State getState() { return state; } + + /** + * @brief Returns true if the player count is higher than 1. + */ [[nodiscard]] bool isConnected() { return sessionState.playerCount > 1; } + + /** + * @brief Returns true if the state is `SERVING` or `CONNECTED`. + */ [[nodiscard]] bool isSessionActive() { return state == SERVING || state == CONNECTED; } + + /** + * @brief Returns the number of connected players. + */ [[nodiscard]] u8 playerCount() { return sessionState.playerCount; } + + /** + * @brief Returns the current player ID. + */ [[nodiscard]] u8 currentPlayerId() { return sessionState.currentPlayerId; } ~LinkRawWireless() { @@ -702,6 +831,13 @@ class LinkRawWireless { State state = NEEDS_RESET; volatile bool isEnabled = false; + /** + * @brief Copies a null-terminated `source` string to a `target` destination + * (up to `length` characters). + * @param target Target string. + * @param source Source string. + * @param length Number of characters. + */ void copyName(char* target, const char* source, u32 length) { u32 len = std::strlen(source); @@ -712,6 +848,14 @@ class LinkRawWireless { target[i] = '\0'; } + /** + * @brief Recovers parts of the `name` of a Wireless Adapter room. + * @param name Target string. + * @param nameCursor Current position within `name`. + * @param word Current value. + * @param includeFirstTwoBytes Whether the first two bytes from `word` should + * be used. + */ void recoverName(char* name, u32& nameCursor, u32 word, @@ -733,6 +877,10 @@ class LinkRawWireless { name[nameCursor++] = character; } + /** + * @brief Resets the adapter + * @param initialize Whether it's an initialization (first time) or not. + */ bool reset(bool initialize = false) { resetState(); if (initialize) @@ -740,6 +888,9 @@ class LinkRawWireless { return initialize && start(); } + /** + * @brief Resets all the state. + */ void resetState() { LRWLOG("state = NEEDS_RESET"); this->state = NEEDS_RESET; @@ -747,8 +898,14 @@ class LinkRawWireless { this->sessionState.currentPlayerId = 0; } + /** + * @brief Stops the communication. + */ void stop() { linkSPI->deactivate(); } + /** + * @brief Starts the communication. + */ bool start() { pingAdapter(); LRWLOG("setting SPI to 256Kbps"); @@ -771,6 +928,9 @@ class LinkRawWireless { return true; } + /** + * @brief Sends the signal to reset the adapter. + */ void pingAdapter() { LRWLOG("setting SO as OUTPUT"); linkGPIO->setMode(LinkGPIO::Pin::SO, LinkGPIO::Direction::OUTPUT); @@ -783,6 +943,9 @@ class LinkRawWireless { linkGPIO->writePin(LinkGPIO::SD, false); } + /** + * @brief Sends the login sequence to the adapter. + */ bool login() { LoginMemory memory; @@ -800,6 +963,12 @@ class LinkRawWireless { return true; } + /** + * @brief Exchanges part of the login sequence with the adapter. + * @param data The value to be sent. + * @param expectedResponse The expected response. + * @param memory A structure that holds memory of the previous values. + */ bool exchangeLoginPacket(u16 data, u16 expectedResponse, LoginMemory& memory) { @@ -819,10 +988,21 @@ class LinkRawWireless { return true; } + /** + * @brief Builds a 32-bit value representing the command. + * @param type The ID of the command. + * @param length The number of 32-bit values that will be sent. + */ u32 buildCommand(u8 type, u8 length = 0) { return buildU32(COMMAND_HEADER, buildU16(length, type)); } + /** + * @brief Transfers `data` via SPI and performs the adapter's ACK procedure. + * Returns the received value. + * @param data The value to be sent. + * @param customAck Whether the adapter's ACK procedure should be used or not. + */ u32 transfer(u32 data, bool customAck = true) { if (!customAck) wait(TRANSFER_WAIT); @@ -839,6 +1019,11 @@ class LinkRawWireless { return receivedData; } + /** + * @brief Transfers `data` via SPI and performs the inverted adapter's ACK + * procedure. Returns the received value. + * @param data The value to be sent. + */ u32 transferAndStartClockInversionACK(u32 data) { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; @@ -852,6 +1037,9 @@ class LinkRawWireless { return receivedData; } + /** + * @brief Performs the adapter's ACK procedure. + */ bool acknowledge() { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; @@ -877,6 +1065,9 @@ class LinkRawWireless { return true; } + /** + * @brief Starts performing the inverted adapter's ACK procedure. + */ bool reverseAcknowledgeStart() { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; @@ -896,6 +1087,12 @@ class LinkRawWireless { return true; } + /** + * @brief Performs the inverted adapter's ACK procedure. + * @param isLastPart Whether it's the last part of the procedure or not. + * \warning `isLastPart` is required when there's no subsequent + * `linkSPI->transfer(...)` call. + */ bool reverseAcknowledge(bool isLastPart = false) { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; @@ -932,10 +1129,21 @@ class LinkRawWireless { return true; } + /** + * @brief Evaluates a timeout defined by `CMD_TIMEOUT`. + * @param lines A line counter that will be updated. + * @param vCount Starting `VCOUNT`. + */ bool cmdTimeout(u32& lines, u32& vCount) { return timeout(CMD_TIMEOUT, lines, vCount); } + /** + * @brief Evaluates a timeout defined by `limit`. + * @param limit Maximum number of lines to wait. + * @param lines A line counter that will be updated. + * @param vCount Starting `VCOUNT`. + */ bool timeout(u32 limit, u32& lines, u32& vCount) { if (Link::_REG_VCOUNT != vCount) { lines += Link::_max((int)Link::_REG_VCOUNT - (int)vCount, 0); @@ -945,6 +1153,10 @@ class LinkRawWireless { return lines > limit; } + /** + * @brief Waits a number of `verticalLines`. + * @param verticalLines Number of lines to wait. + */ void wait(u32 verticalLines) { u32 count = 0; u32 vCount = Link::_REG_VCOUNT; @@ -957,14 +1169,22 @@ class LinkRawWireless { }; } + /** + * @brief Logs an error message (expected vs received). + * @param expected The expected number. + * @param received The received number. + */ void logExpectedButReceived(u32 expected, u32 received) { LRWLOG("! expected 0x" + toHex(expected)); LRWLOG("! but received 0x" + toHex(received)); } #ifdef LINK_RAW_WIRELESS_ENABLE_LOGGING + /** + * @brief Converts `w` to an hexadecimal string. + */ template - std::string toHex(I w, size_t hex_len = sizeof(I) << 1) { + [[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1) { static const char* digits = "0123456789ABCDEF"; std::string rc(hex_len, '0'); for (size_t i = 0, j = (hex_len - 1) * 4; i < hex_len; ++i, j -= 4) @@ -973,12 +1193,35 @@ class LinkRawWireless { } #endif - u32 buildU32(u16 msB, u16 lsB) { return (msB << 16) | lsB; } - u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } - u16 msB32(u32 value) { return value >> 16; } - u16 lsB32(u32 value) { return value & 0xffff; } - u8 msB16(u16 value) { return value >> 8; } - u8 lsB16(u16 value) { return value & 0xff; } + /** + * @brief Builds a u32 numbers from `msB` and `lsB` + */ + [[nodiscard]] u32 buildU32(u16 msB, u16 lsB) { return (msB << 16) | lsB; } + + /** + * @brief Builds a u16 numbers from `msB` and `lsB` + */ + [[nodiscard]] u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } + + /** + * @brief Returns the higher 16 bits of `value`. + */ + [[nodiscard]] u16 msB32(u32 value) { return value >> 16; } + + /** + * @brief Returns the lower 16 bits of `value`. + */ + [[nodiscard]] u16 lsB32(u32 value) { return value & 0xffff; } + + /** + * @brief Returns the higher 8 bits of `value`. + */ + [[nodiscard]] u8 msB16(u16 value) { return value >> 8; } + + /** + * @brief Returns the lower 8 bits of `value`. + */ + [[nodiscard]] u8 lsB16(u16 value) { return value & 0xff; } }; extern LinkRawWireless* linkRawWireless; diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 50a99c5..c82f851 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -17,7 +17,7 @@ // romLength, // in bytes // "Multiboot", // game name // "Test", // user name -// 0xffff, // game id +// 0xffff, // game ID // 2, // number of players // [](LinkWirelessMultiboot::MultibootProgress progress) { // // check progress.[state,connectedClients,percentage] From e56153a758bab778f6ee828bb43ab4ecdba7555f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 10:20:10 -0300 Subject: [PATCH 034/195] Renaming setNormalMode() method --- lib/LinkSPI.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 44b2c7d..541478c 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -110,7 +110,7 @@ class LinkSPI { this->asyncState = IDLE; this->asyncData = 0; - setNormalMode32Bit(); + setNormalMode(); disableTransfer(); if (mode == SLAVE) @@ -305,7 +305,7 @@ class LinkSPI { LINK_SPI_DATA_TYPE asyncData = 0; volatile bool isEnabled = false; - void setNormalMode32Bit() { + void setNormalMode() { Link::_REG_RCNT = Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_HIGH); #ifdef LINK_SPI_8BIT_MODE Link::_REG_SIOCNT = 0; From 370aac4e9bd5575a01984b35c26741f176a3ab17 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 10:56:50 -0300 Subject: [PATCH 035/195] Dropping tonc dependency in LinkUART --- examples/LinkUART_demo/src/main.cpp | 6 +- lib/LinkUART.hpp | 100 +++++++++++++++------------- 2 files changed, 57 insertions(+), 49 deletions(-) diff --git a/examples/LinkUART_demo/src/main.cpp b/examples/LinkUART_demo/src/main.cpp index 53f72a9..394d085 100644 --- a/examples/LinkUART_demo/src/main.cpp +++ b/examples/LinkUART_demo/src/main.cpp @@ -1,10 +1,10 @@ +// (0) Include the header +#include "../../../lib/LinkUART.hpp" + #include #include #include "../../_lib/interrupt.h" -// (0) Include the header -#include "../../../lib/LinkUART.hpp" - void log(std::string text); inline void VBLANK() {} diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index c5fe342..311b2fe 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -24,33 +24,39 @@ // (see examples) // -------------------------------------------------------------------------- -#include +#include "_link_common.hpp" // Buffer size #define LINK_UART_QUEUE_SIZE 256 -#define LINK_UART_BIT_CTS 2 -#define LINK_UART_BIT_PARITY_CONTROL 3 -#define LINK_UART_BIT_SEND_DATA_FLAG 4 -#define LINK_UART_BIT_RECEIVE_DATA_FLAG 5 -#define LINK_UART_BIT_ERROR_FLAG 6 -#define LINK_UART_BIT_DATA_LENGTH 7 -#define LINK_UART_BIT_FIFO_ENABLE 8 -#define LINK_UART_BIT_PARITY_ENABLE 9 -#define LINK_UART_BIT_SEND_ENABLE 10 -#define LINK_UART_BIT_RECEIVE_ENABLE 11 -#define LINK_UART_BIT_UART_1 12 -#define LINK_UART_BIT_UART_2 13 -#define LINK_UART_BIT_IRQ 14 -#define LINK_UART_BIT_GENERAL_PURPOSE_LOW 14 -#define LINK_UART_BIT_GENERAL_PURPOSE_HIGH 15 -#define LINK_UART_BARRIER asm volatile("" ::: "memory") - static volatile char LINK_UART_VERSION[] = "LinkUART/v7.0.0"; -void LINK_UART_ISR_SERIAL(); +#define LINK_UART_BARRIER asm volatile("" ::: "memory") class LinkUART { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + using vs32 = volatile signed int; + using vu32 = volatile unsigned int; + + static constexpr int BIT_CTS = 2; + static constexpr int BIT_PARITY_CONTROL = 3; + static constexpr int BIT_SEND_DATA_FLAG = 4; + static constexpr int BIT_RECEIVE_DATA_FLAG = 5; + static constexpr int BIT_ERROR_FLAG = 6; + static constexpr int BIT_DATA_LENGTH = 7; + static constexpr int BIT_FIFO_ENABLE = 8; + static constexpr int BIT_PARITY_ENABLE = 9; + static constexpr int BIT_SEND_ENABLE = 10; + static constexpr int BIT_RECEIVE_ENABLE = 11; + static constexpr int BIT_UART_1 = 12; + static constexpr int BIT_UART_2 = 13; + static constexpr int BIT_IRQ = 14; + static constexpr int BIT_GENERAL_PURPOSE_LOW = 14; + static constexpr int BIT_GENERAL_PURPOSE_HIGH = 15; + public: enum BaudRate { BAUD_RATE_0, // 9600 bps @@ -68,7 +74,7 @@ class LinkUART { this->config.useCTS = false; } - bool isActive() { return isEnabled; } + [[nodiscard]] bool isActive() { return isEnabled; } void activate(BaudRate baudRate = BAUD_RATE_0, DataSize dataSize = SIZE_8_BITS, @@ -154,10 +160,12 @@ class LinkUART { return size; } - bool canRead() { return !incomingQueue.isEmpty(); } - bool canSend() { return !outgoingQueue.isFull(); } - u32 availableForRead() { return incomingQueue.size(); } - u32 availableForSend() { return LINK_UART_QUEUE_SIZE - outgoingQueue.size(); } + [[nodiscard]] bool canRead() { return !incomingQueue.isEmpty(); } + [[nodiscard]] bool canSend() { return !outgoingQueue.isFull(); } + [[nodiscard]] u32 availableForRead() { return incomingQueue.size(); } + [[nodiscard]] u32 availableForSend() { + return LINK_UART_QUEUE_SIZE - outgoingQueue.size(); + } u8 read() { LINK_UART_BARRIER; @@ -190,10 +198,10 @@ class LinkUART { return; if (!isReading && canReceive()) - incomingQueue.push((u8)REG_SIODATA8); + incomingQueue.push((u8)Link::_REG_SIODATA8); if (!isAdding && canTransfer() && needsTransfer()) - REG_SIODATA8 = outgoingQueue.pop(); + Link::_REG_SIODATA8 = outgoingQueue.pop(); } private: @@ -256,9 +264,9 @@ class LinkUART { volatile bool isReading = false; volatile bool isAdding = false; - bool canReceive() { return !isBitHigh(LINK_UART_BIT_RECEIVE_DATA_FLAG); } - bool canTransfer() { return !isBitHigh(LINK_UART_BIT_SEND_DATA_FLAG); } - bool hasError() { return isBitHigh(LINK_UART_BIT_ERROR_FLAG); } + bool canReceive() { return !isBitHigh(BIT_RECEIVE_DATA_FLAG); } + bool canTransfer() { return !isBitHigh(BIT_SEND_DATA_FLAG); } + bool hasError() { return isBitHigh(BIT_ERROR_FLAG); } bool needsTransfer() { return outgoingQueue.size() > 0; } void reset() { @@ -291,30 +299,30 @@ class LinkUART { setReceiveOn(); } - void set8BitData() { setBitHigh(LINK_UART_BIT_DATA_LENGTH); } - void setParityOn() { setBitHigh(LINK_UART_BIT_PARITY_ENABLE); } - void setOddParity() { setBitHigh(LINK_UART_BIT_PARITY_CONTROL); } - void setCTSOn() { setBitHigh(LINK_UART_BIT_CTS); } - void setFIFOOn() { setBitHigh(LINK_UART_BIT_FIFO_ENABLE); } - void setInterruptsOn() { setBitHigh(LINK_UART_BIT_IRQ); } - void setSendOn() { setBitHigh(LINK_UART_BIT_SEND_ENABLE); } - void setReceiveOn() { setBitHigh(LINK_UART_BIT_RECEIVE_ENABLE); } + void set8BitData() { setBitHigh(BIT_DATA_LENGTH); } + void setParityOn() { setBitHigh(BIT_PARITY_ENABLE); } + void setOddParity() { setBitHigh(BIT_PARITY_CONTROL); } + void setCTSOn() { setBitHigh(BIT_CTS); } + void setFIFOOn() { setBitHigh(BIT_FIFO_ENABLE); } + void setInterruptsOn() { setBitHigh(BIT_IRQ); } + void setSendOn() { setBitHigh(BIT_SEND_ENABLE); } + void setReceiveOn() { setBitHigh(BIT_RECEIVE_ENABLE); } void setUARTMode() { - REG_RCNT = REG_RCNT & ~(1 << LINK_UART_BIT_GENERAL_PURPOSE_HIGH); - REG_SIOCNT = (1 << LINK_UART_BIT_UART_1) | (1 << LINK_UART_BIT_UART_2); - REG_SIOCNT |= config.baudRate; - REG_SIOMLT_SEND = 0; + Link::_REG_RCNT = Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_SIOCNT = (1 << BIT_UART_1) | (1 << BIT_UART_2); + Link::_REG_SIOCNT |= config.baudRate; + Link::_REG_SIOMLT_SEND = 0; } void setGeneralPurposeMode() { - REG_RCNT = (REG_RCNT & ~(1 << LINK_UART_BIT_GENERAL_PURPOSE_LOW)) | - (1 << LINK_UART_BIT_GENERAL_PURPOSE_HIGH); + Link::_REG_RCNT = (Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_LOW)) | + (1 << BIT_GENERAL_PURPOSE_HIGH); } - bool isBitHigh(u8 bit) { return (REG_SIOCNT >> bit) & 1; } - void setBitHigh(u8 bit) { REG_SIOCNT |= 1 << bit; } - void setBitLow(u8 bit) { REG_SIOCNT &= ~(1 << bit); } + bool isBitHigh(u8 bit) { return (Link::_REG_SIOCNT >> bit) & 1; } + void setBitHigh(u8 bit) { Link::_REG_SIOCNT |= 1 << bit; } + void setBitLow(u8 bit) { Link::_REG_SIOCNT &= ~(1 << bit); } }; extern LinkUART* linkUART; From 6681ef759f0cfe566ec926f962fc06850a7cdbab Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 11:21:35 -0300 Subject: [PATCH 036/195] Adding Doxygen-style docs for IDE autocompletion in LinkUART --- lib/LinkCableMultiboot.hpp | 1 + lib/LinkRawCable.hpp | 2 + lib/LinkSPI.hpp | 6 +++ lib/LinkUART.hpp | 101 ++++++++++++++++++++++++++++++++++++- 4 files changed, 109 insertions(+), 1 deletion(-) diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index ef85085..e4e49d6 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -85,6 +85,7 @@ class LinkCableMultiboot { * and `262144`, and a multiple of `16`. * @param cancel A function that will be continuously invoked. If it returns * `true`, the transfer will be aborted. + * \warning Blocks the system until completion or cancellation. */ template [[nodiscard]] Result sendRom(const u8* rom, u32 romSize, F cancel) { diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 3eece97..f79dddf 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -119,6 +119,7 @@ class LinkRawCable { * @brief Exchanges `data` with the connected consoles. Returns the received * data from each player, including the assigned player ID. * @param data The value to be sent. + * \warning Blocks the system until completion. */ Response transfer(u16 data) { return transfer(data, []() { return false; }); @@ -130,6 +131,7 @@ class LinkRawCable { * @param data The value to be sent. * @param cancel A function that will be continuously invoked. If it returns * `true`, the transfer will be aborted and the response will be empty. + * \warning Blocks the system until completion or cancellation. */ template Response transfer(u16 data, F cancel, bool _async = false) { diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 541478c..227ce79 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -143,6 +143,7 @@ class LinkSPI { /** * @brief Exchanges `data` with the other end. Returns the received data. * @param data The value to be sent. + * \warning Blocks the system until completion. */ LINK_SPI_DATA_TYPE transfer(LINK_SPI_DATA_TYPE data) { return transfer(data, []() { return false; }); @@ -153,6 +154,7 @@ class LinkSPI { * @param data The value to be sent. * @param cancel A function that will be continuously invoked. If it returns * `true`, the transfer will be aborted and the response will be empty. + * \warning Blocks the system until completion or cancellation. */ template LINK_SPI_DATA_TYPE transfer(LINK_SPI_DATA_TYPE data, @@ -203,6 +205,8 @@ class LinkSPI { * `getAsyncState()` and `getAsyncData()`. Note that until you retrieve the * async data, normal `transfer(...)`s won't do anything! * @param data The value to be sent. + * \warning If `waitMode` (*) is active, blocks the system until completion. + * See `setWaitModeActive(...)`. */ void transferAsync(LINK_SPI_DATA_TYPE data) { transfer(data, []() { return false; }, true); @@ -215,6 +219,8 @@ class LinkSPI { * @param data The value to be sent. * @param cancel A function that will be continuously invoked. If it returns * `true`, the transfer will be aborted and the response will be empty. + * \warning If `waitMode` (*) is active, blocks the system until completion or + * cancellation. See `setWaitModeActive(...)`. */ template void transferAsync(LINK_SPI_DATA_TYPE data, F cancel) { diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 311b2fe..24dc111 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -26,13 +26,18 @@ #include "_link_common.hpp" -// Buffer size +/** + * @brief Buffer size in bytes. + */ #define LINK_UART_QUEUE_SIZE 256 static volatile char LINK_UART_VERSION[] = "LinkUART/v7.0.0"; #define LINK_UART_BARRIER asm volatile("" ::: "memory") +/** + * @brief A UART handler for the Link Port (8N1, 7N1, 8E1, 7E1, 8O1, 7E1). + */ class LinkUART { private: using u32 = unsigned int; @@ -67,6 +72,9 @@ class LinkUART { enum DataSize { SIZE_7_BITS, SIZE_8_BITS }; enum Parity { NO, EVEN, ODD }; + /** + * @brief Constructs a new LinkUART object. + */ explicit LinkUART() { this->config.baudRate = BAUD_RATE_0; this->config.dataSize = SIZE_8_BITS; @@ -74,8 +82,19 @@ class LinkUART { this->config.useCTS = false; } + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library using a specific UART mode. + * Defaults: 9600bps, 8-bit data, no parity bit, no CTS_ + * @param baudRate One of the enum values from `LinkUART::BaudRate`. + * @param dataSize One of the enum values from `LinkUART::DataSize`. + * @param parity One of the enum values from `LinkUART::Parity`. + * @param useCTS Enable RTS/CTS flow. + */ void activate(BaudRate baudRate = BAUD_RATE_0, DataSize dataSize = SIZE_8_BITS, Parity parity = NO, @@ -96,6 +115,9 @@ class LinkUART { LINK_UART_BARRIER; } + /** + * @brief Deactivates the library. + */ void deactivate() { LINK_UART_BARRIER; isEnabled = false; @@ -105,10 +127,24 @@ class LinkUART { stop(); } + /** + * @brief Takes a null-terminated `string`, and sends it followed by a `'\n'` + * character. The null character is not sent. + * @param string The null-terminated string. + * \warning Blocks the system until completion. + */ void sendLine(const char* string) { sendLine(string, []() { return false; }); } + /** + * @brief Takes a null-terminated `string`, and sends it followed by a `'\n'` + * character. The null character is not sent. + * @param string The null-terminated string. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted. + * \warning Blocks the system until completion or cancellation. + */ template void sendLine(const char* string, F cancel) { for (u32 i = 0; string[i] != '\0'; i++) { @@ -120,10 +156,30 @@ class LinkUART { send('\n'); } + /** + * @brief Reads characters into `string` until finding a `'\n'` character or a + * character `limit` is reached. A null terminator is added at the end. + * Returns `false` if the limit has been reached without finding a newline + * character. + * @param string The output string buffer. + * @param limit The character limit. + * \warning Blocks the system until completion. + */ bool readLine(char* string, u32 limit = LINK_UART_QUEUE_SIZE) { return readLine(string, []() { return false; }, limit); } + /** + * @brief Reads characters into `string` until finding a `'\n'` character or a + * character `limit` is reached. A null terminator is added at the end. + * Returns `false` if the limit has been reached without finding a newline + * character. + * @param string The output string buffer. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted. + * @param limit The character limit. + * \warning Blocks the system until completion or cancellation. + */ template bool readLine(char* string, F cancel, u32 limit = LINK_UART_QUEUE_SIZE) { u32 readBytes = 0; @@ -145,11 +201,24 @@ class LinkUART { return !aborted && readBytes > 1; } + /** + * @brief Sends `size` bytes from `buffer`, starting at byte `offset`. + * @param buffer The source buffer. + * @param size The size in bytes. + * @param offset The starting offset. + */ void send(const u8* buffer, u32 size, u32 offset = 0) { for (u32 i = 0; i < size; i++) send(buffer[offset + i]); } + /** + * @brief Tries to read `size` bytes into `(u8*)(buffer + offset)`. Returns + * the number of read bytes. + * @param buffer The target buffer. + * @param size The size in bytes. + * @param offset The offset from target buffer. + */ u32 read(u8* buffer, u32 size, u32 offset = 0) { for (u32 i = 0; i < size; i++) { if (!canRead()) @@ -160,13 +229,32 @@ class LinkUART { return size; } + /** + * @brief Returns whether there are bytes to read or not. + */ [[nodiscard]] bool canRead() { return !incomingQueue.isEmpty(); } + + /** + * @brief Returns whether there is room to send new messages or not. + */ [[nodiscard]] bool canSend() { return !outgoingQueue.isFull(); } + + /** + * @brief Returns the number of bytes available for read. + */ [[nodiscard]] u32 availableForRead() { return incomingQueue.size(); } + + /** + * @brief Returns the number of bytes available for send (buffer size - queued + * bytes). + */ [[nodiscard]] u32 availableForSend() { return LINK_UART_QUEUE_SIZE - outgoingQueue.size(); } + /** + * @brief Reads a byte. Returns 0 if nothing is found. + */ u8 read() { LINK_UART_BARRIER; isReading = true; @@ -181,6 +269,10 @@ class LinkUART { return data; } + /** + * @brief Sends a `data` byte. + * @param data The value to be sent. + */ void send(u8 data) { LINK_UART_BARRIER; isAdding = true; @@ -193,6 +285,10 @@ class LinkUART { LINK_UART_BARRIER; } + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ void _onSerial() { if (!isEnabled || hasError()) return; @@ -327,6 +423,9 @@ class LinkUART { extern LinkUART* linkUART; +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_UART_ISR_SERIAL() { linkUART->_onSerial(); } From 691b8fcddf1d7735e9b108b2918feaee46862491 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 7 Aug 2024 11:28:04 -0300 Subject: [PATCH 037/195] Enforcing constructors in LinkPS2Keyboard and LinkPS2Mouse --- lib/LinkPS2Keyboard.hpp | 2 ++ lib/LinkPS2Mouse.hpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 40385b5..6768a5e 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -58,6 +58,8 @@ class LinkPS2Keyboard { static constexpr int SO_DATA = 0b1000; static constexpr int TIMEOUT_FRAMES = 15; // (~250ms) + LinkPS2Keyboard() = delete; + public: using EventCallback = void (*)(u8 event); diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 8d4b95b..e07494d 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -60,6 +60,8 @@ class LinkPS2Mouse { static constexpr int SO_DATA = 0b1000; static constexpr int TO_TICKS = 17; + LinkPS2Mouse() = delete; + public: /** * @brief Constructs a new LinkPS2Mouse object. From 703a41aa2d911207981c235ca00aa1e1bd5ecd80 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 00:27:29 -0300 Subject: [PATCH 038/195] Improving Usage section in README --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 06998fd..6e8a80d 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,13 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. ## Usage -- Copy the `lib/` folder into your project's `include` directory and include the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp). For initial instructions and setup details, refer to the big comment block at the beginning of each file, the documentation included here, and the provided examples. No external dependencies are required. +- Copy the contents of the `lib/` folder into a directory that is part of your project's include path. Then, `#include` the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp), in your project. No external dependencies are required. +- For initial instructions and setup details, refer to the big comment block at the beginning of each file, the documentation included here, and the provided examples. - Check out the [examples](examples) folder. * The example code uses [libtonc](https://github.com/gbadev-org/libtonc) (and [libugba](https://github.com/AntonioND/libugba) for interrupts), but any library can be used. - * Builds are available in [Releases](https://github.com/afska/gba-link-connection/releases). - * They can be tested on real GBAs or using emulators. - * For `LinkCable`/`LinkWireless`/`LinkUniversal` there are stress tests that you can use to tweak your configuration. + * Compiled ROMs are available in [Releases](https://github.com/afska/gba-link-connection/releases). + * The examples can be tested on real GBAs or using emulators. + * For `LinkCable`/`LinkWireless`/`LinkUniversal`, there are stress tests that you can use to tweak your configuration. To learn implementation details, you might also want to check out the [docs](docs) folder, which contains important documentation. From f456592d9a3fe1f53e24c1aa044530a1b2a93591 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 00:59:06 -0300 Subject: [PATCH 039/195] Dropping tonc dependency in LinkWirelessOpenSDK and LinkWirelessMultiboot --- .../LinkWirelessMultiboot_demo/src/main.cpp | 3 +- .../src/scenes/MultibootScene.cpp | 3 +- lib/LinkCableMultiboot.hpp | 2 +- lib/LinkWirelessMultiboot.hpp | 134 +++++++++--------- lib/LinkWirelessOpenSDK.hpp | 125 ++++++++-------- 5 files changed, 133 insertions(+), 134 deletions(-) diff --git a/examples/LinkWirelessMultiboot_demo/src/main.cpp b/examples/LinkWirelessMultiboot_demo/src/main.cpp index a326e8f..e6d4898 100644 --- a/examples/LinkWirelessMultiboot_demo/src/main.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/main.cpp @@ -1,6 +1,7 @@ +#include "../../../lib/LinkWirelessMultiboot.hpp" + #include #include -#include "../../../lib/LinkWirelessMultiboot.hpp" #include "../../_lib/interrupt.h" #include "scenes/MultibootScene.h" #include "utils/SceneUtils.h" diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index aaa25f2..53236e7 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -1,10 +1,11 @@ +#include "../../../../lib/LinkWirelessMultiboot.hpp" + #include "MultibootScene.h" #include #include #include -#include "../../../../lib/LinkWirelessMultiboot.hpp" #include "utils/InputHandler.h" #include "utils/SceneUtils.h" diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index e4e49d6..fc30d2f 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -88,7 +88,7 @@ class LinkCableMultiboot { * \warning Blocks the system until completion or cancellation. */ template - [[nodiscard]] Result sendRom(const u8* rom, u32 romSize, F cancel) { + Result sendRom(const u8* rom, u32 romSize, F cancel) { if (romSize < MIN_ROM_SIZE) return INVALID_SIZE; if (romSize > MAX_ROM_SIZE) diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index c82f851..52bfe54 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -30,13 +30,26 @@ // // `result` should be LinkWirelessMultiboot::Result::SUCCESS // -------------------------------------------------------------------------- -#include +#include "_link_common.hpp" + #include "LinkRawWireless.hpp" #include "LinkWirelessOpenSDK.hpp" // Enable logging (set `linkWirelessMultiboot->logger` and uncomment to enable) // #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING +static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = + "LinkWirelessMultiboot/v7.0.0"; + +#define LINK_WIRELESS_MULTIBOOT_MIN_ROM_SIZE (0x100 + 0xc0) +#define LINK_WIRELESS_MULTIBOOT_MAX_ROM_SIZE (256 * 1024) +#define LINK_WIRELESS_MULTIBOOT_MIN_PLAYERS 2 +#define LINK_WIRELESS_MULTIBOOT_MAX_PLAYERS 5 +#define LINK_WIRELESS_MULTIBOOT_TRY(CALL) \ + if ((lastResult = CALL) != SUCCESS) { \ + return finish(lastResult); \ + } + #ifdef LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING #include #define LWMLOG(str) logger(str) @@ -44,38 +57,30 @@ #define LWMLOG(str) #endif -#define LINK_WIRELESS_MULTIBOOT_MIN_ROM_SIZE (0x100 + 0xc0) -#define LINK_WIRELESS_MULTIBOOT_MAX_ROM_SIZE (256 * 1024) -#define LINK_WIRELESS_MULTIBOOT_MIN_PLAYERS 2 -#define LINK_WIRELESS_MULTIBOOT_MAX_PLAYERS 5 -#define LINK_WIRELESS_MULTIBOOT_HEADER_SIZE 0xC0 -#define LINK_WIRELESS_MULTIBOOT_SETUP_MAGIC 0x003c0000 -#define LINK_WIRELESS_MULTIBOOT_SETUP_TX 1 -#define LINK_WIRELESS_MULTIBOOT_SETUP_WAIT_TIMEOUT 32 -#define LINK_WIRELESS_MULTIBOOT_GAME_ID_MULTIBOOT_FLAG (1 << 15) -#define LINK_WIRELESS_MULTIBOOT_FRAME_LINES 228 -#define LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS 4 -#define LINK_WIRELESS_MULTIBOOT_TRY(CALL) \ - if ((lastResult = CALL) != SUCCESS) { \ - return finish(lastResult); \ - } - -const u8 LINK_WIRELESS_MULTIBOOT_CMD_START[] = {0x00, 0x54, 0x00, 0x00, - 0x00, 0x02, 0x00}; -const u8 LINK_WIRELESS_MULTIBOOT_CMD_START_SIZE = 7; -const u8 LINK_WIRELESS_MULTIBOOT_BOOTLOADER_HANDSHAKE[][6] = { - {0x00, 0x00, 0x52, 0x46, 0x55, 0x2d}, - {0x4d, 0x42, 0x2d, 0x44, 0x4c, 0x00}}; -const u8 LINK_WIRELESS_MULTIBOOT_BOOTLOADER_HANDSHAKE_SIZE = 6; -const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH[] = { - 0x52, 0x46, 0x55, 0x2d, 0x4d, 0x42, 0x4f, 0x4f, 0x54, 0x00, 0x00, 0x00}; -const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_OFFSET = 4; -const u8 LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_SIZE = 12; - -static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = - "LinkWirelessMultiboot/v7.0.0"; - class LinkWirelessMultiboot { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + + static constexpr int HEADER_SIZE = 0xC0; + static constexpr int SETUP_MAGIC = 0x003c0000; + static constexpr int SETUP_TX = 1; + static constexpr int SETUP_WAIT_TIMEOUT = 32; + static constexpr int GAME_ID_MULTIBOOT_FLAG = (1 << 15); + static constexpr int FRAME_LINES = 228; + static constexpr int MAX_INFLIGHT_PACKETS = 4; + static constexpr u8 CMD_START[] = {0x00, 0x54, 0x00, 0x00, 0x00, 0x02, 0x00}; + static constexpr u8 CMD_START_SIZE = 7; + static constexpr u8 BOOTLOADER_HANDSHAKE[][6] = { + {0x00, 0x00, 0x52, 0x46, 0x55, 0x2d}, + {0x4d, 0x42, 0x2d, 0x44, 0x4c, 0x00}}; + static constexpr u8 BOOTLOADER_HANDSHAKE_SIZE = 6; + static constexpr u8 ROM_HEADER_PATCH[] = {0x52, 0x46, 0x55, 0x2d, 0x4d, 0x42, + 0x4f, 0x4f, 0x54, 0x00, 0x00, 0x00}; + static constexpr u8 ROM_HEADER_PATCH_OFFSET = 4; + static constexpr u8 ROM_HEADER_PATCH_SIZE = 12; + public: #ifdef LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING typedef void (*Logger)(std::string); @@ -126,7 +131,7 @@ class LinkWirelessMultiboot { LWMLOG("all players are connected"); progress.state = PREPARING; - linkRawWireless->wait(LINK_WIRELESS_MULTIBOOT_FRAME_LINES); + linkRawWireless->wait(FRAME_LINES); LWMLOG("rom start command..."); LINK_WIRELESS_MULTIBOOT_TRY(sendRomStartCommand(cancel)) @@ -158,13 +163,12 @@ class LinkWirelessMultiboot { }; struct PendingTransferList { - std::array - transfers; + std::array transfers; PendingTransfer* max(bool ack = false) { int maxCursor = -1; int maxI = -1; - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) { + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && (int)transfers[i].cursor > maxCursor && (!ack || transfers[i].ack)) { maxCursor = transfers[i].cursor; @@ -177,7 +181,7 @@ class LinkWirelessMultiboot { PendingTransfer* minWithoutAck() { u32 minCursor = 0xffffffff; int minI = -1; - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) { + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && transfers[i].cursor < minCursor && !transfers[i].ack) { minCursor = transfers[i].cursor; @@ -192,7 +196,7 @@ class LinkWirelessMultiboot { if (maxTransfer != NULL && newCursor <= maxTransfer->cursor) return; - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) { + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (!transfers[i].isActive) { transfers[i].cursor = newCursor; transfers[i].ack = false; @@ -220,19 +224,17 @@ class LinkWirelessMultiboot { } void cleanup() { - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) { + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && transfers[i].ack) transfers[i].isActive = false; } } - bool isFull() { - return size() == LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; - } + bool isFull() { return size() == MAX_INFLIGHT_PACKETS; } u32 size() { u32 size = 0; - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) if (transfers[i].isActive) size++; return size; @@ -240,7 +242,7 @@ class LinkWirelessMultiboot { private: bool isAckCompleteUpTo(u32 cursor) { - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) if (transfers[i].isActive && !transfers[i].ack && transfers[i].cursor < cursor) return false; @@ -248,7 +250,7 @@ class LinkWirelessMultiboot { } int findIndex(LinkWirelessOpenSDK::SequenceNumber sequence) { - for (u32 i = 0; i < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS; i++) { + for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && LinkWirelessOpenSDK::SequenceNumber::fromPacketId( transfers[i].cursor) == sequence) { @@ -268,7 +270,7 @@ class LinkWirelessMultiboot { u32 pendingCount = pendingTransferList.size(); if (canSendInflightPackets && pendingCount > 0 && - pendingCount < LINK_WIRELESS_MULTIBOOT_MAX_INFLIGHT_PACKETS) { + pendingCount < MAX_INFLIGHT_PACKETS) { return pendingTransferList.max()->cursor + 1; } else { auto minWithoutAck = pendingTransferList.minWithoutAck(); @@ -282,7 +284,7 @@ class LinkWirelessMultiboot { } u32 transferred() { - return cursor * LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER; + return cursor * LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; } LinkWirelessOpenSDK::SequenceNumber sequence() { @@ -308,17 +310,15 @@ class LinkWirelessMultiboot { const char* userName, const u16 gameId, u8 players) { - if (!linkRawWireless->setup(players, LINK_WIRELESS_MULTIBOOT_SETUP_TX, - LINK_WIRELESS_MULTIBOOT_SETUP_WAIT_TIMEOUT, - LINK_WIRELESS_MULTIBOOT_SETUP_MAGIC)) { + if (!linkRawWireless->setup(players, SETUP_TX, SETUP_WAIT_TIMEOUT, + SETUP_MAGIC)) { LWMLOG("! setup failed"); return FAILURE; } LWMLOG("setup ok"); - if (!linkRawWireless->broadcast( - gameName, userName, - gameId | LINK_WIRELESS_MULTIBOOT_GAME_ID_MULTIBOOT_FLAG)) { + if (!linkRawWireless->broadcast(gameName, userName, + gameId | GAME_ID_MULTIBOOT_FLAG)) { LWMLOG("! broadcast failed"); return FAILURE; } @@ -420,10 +420,9 @@ class LinkWirelessMultiboot { LWMLOG("validating name..."); for (u32 i = 0; i < 2; i++) { auto receivedPayload = handshakePackets[i].payload; - auto expectedPayload = LINK_WIRELESS_MULTIBOOT_BOOTLOADER_HANDSHAKE[i]; + auto expectedPayload = BOOTLOADER_HANDSHAKE[i]; - for (u32 j = 0; j < LINK_WIRELESS_MULTIBOOT_BOOTLOADER_HANDSHAKE_SIZE; - j++) { + for (u32 j = 0; j < BOOTLOADER_HANDSHAKE_SIZE; j++) { if (!hasReceivedName || receivedPayload[j] != expectedPayload[j]) { LWMLOG("! bad payload"); return finish(BAD_HANDSHAKE); @@ -455,8 +454,7 @@ class LinkWirelessMultiboot { LINK_WIRELESS_MULTIBOOT_TRY(exchangeNewData( i, linkWirelessOpenSDK->createServerBuffer( - LINK_WIRELESS_MULTIBOOT_CMD_START, - LINK_WIRELESS_MULTIBOOT_CMD_START_SIZE, + CMD_START, CMD_START_SIZE, {1, 0, LinkWirelessOpenSDK::CommState::STARTING}, 1 << i), cancel)) } @@ -470,14 +468,12 @@ class LinkWirelessMultiboot { C cancel) { LinkWirelessOpenSDK::ChildrenData childrenData; std::array transfers; - u8 firstPagePatch[LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER]; - for (u32 i = 0; i < LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER; i++) { + u8 firstPagePatch[LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; + for (u32 i = 0; i < LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; i++) { firstPagePatch[i] = - i >= LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_OFFSET && - i < LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_OFFSET + - LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_SIZE - ? LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH - [i - LINK_WIRELESS_MULTIBOOT_ROM_HEADER_PATCH_OFFSET] + i >= ROM_HEADER_PATCH_OFFSET && + i < ROM_HEADER_PATCH_OFFSET + ROM_HEADER_PATCH_SIZE + ? ROM_HEADER_PATCH[i - ROM_HEADER_PATCH_OFFSET] : rom[i]; } @@ -490,7 +486,7 @@ class LinkWirelessMultiboot { return finish(CANCELED); u32 cursor = findMinCursor(transfers); - u32 offset = cursor * LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER; + u32 offset = cursor * LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; auto sequence = LinkWirelessOpenSDK::SequenceNumber::fromPacketId(cursor); const u8* bufferToSend = cursor == 0 ? (const u8*)firstPagePatch : rom; @@ -517,9 +513,9 @@ class LinkWirelessMultiboot { } } - u32 newPercentage = - min(transfers[findMinClient(transfers)].transferred() * 100 / romSize, - 100); + u32 newPercentage = Link::_min( + transfers[findMinClient(transfers)].transferred() * 100 / romSize, + 100); if (newPercentage != progress.percentage) { progress.percentage = newPercentage; LWMLOG("-> " + std::to_string(newPercentage)); diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index 13044a6..70a0d30 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -4,44 +4,43 @@ // -------------------------------------------------------------------------- // An open-source implementation of the "official" Wireless Adapter protocol. // -------------------------------------------------------------------------- -// - Check out README.md for documentation. +// - Advanced usage only! +// - You only need this if you want to interact with N software. // -------------------------------------------------------------------------- -#include -#include +#include "_link_common.hpp" + #include "LinkRawWireless.hpp" -#define LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_WORDS 23 -#define LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_BYTES_SERVER 87 -#define LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_BYTES_CLIENT 16 -#define LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER 3 -#define LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT 2 -#define LINK_WIRELESS_OPEN_SDK_HEADER_MASK_SERVER \ - ((1 << (LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER * 8)) - 1) -#define LINK_WIRELESS_OPEN_SDK_HEADER_MASK_CLIENT \ - ((1 << (LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT * 8)) - 1) -#define LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER \ - (LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_BYTES_SERVER - \ - LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER) -#define LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_CLIENT \ - (LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_BYTES_CLIENT - \ - LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT) -#define LINK_WIRELESS_OPEN_SDK_MAX_PACKETS_SERVER \ - (LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_BYTES_SERVER / \ - LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER) -#define LINK_WIRELESS_OPEN_SDK_MAX_PACKETS_CLIENT \ - (LINK_WIRELESS_OPEN_SDK_MAX_TRANSFER_BYTES_CLIENT / \ - LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT) - -static volatile char LINK_WIRELESS_OPEN_SDK_VERSION[] = - "LinkWirelessOpenSDK/v7.0.0"; +static volatile char VERSION[] = "LinkWirelessOpenSDK/v7.0.0"; class LinkWirelessOpenSDK { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + + static constexpr int MAX_TRANSFER_WORDS = 23; + static constexpr int MAX_TRANSFER_BYTES_SERVER = 87; + static constexpr int MAX_TRANSFER_BYTES_CLIENT = 16; + static constexpr int HEADER_SIZE_SERVER = 3; + static constexpr int HEADER_SIZE_CLIENT = 2; + static constexpr int HEADER_MASK_SERVER = (1 << (HEADER_SIZE_SERVER * 8)) - 1; + static constexpr int HEADER_MASK_CLIENT = (1 << (HEADER_SIZE_CLIENT * 8)) - 1; + static constexpr int MAX_PAYLOAD_SERVER = + MAX_TRANSFER_BYTES_SERVER - HEADER_SIZE_SERVER; + static constexpr int MAX_PAYLOAD_CLIENT = + MAX_TRANSFER_BYTES_CLIENT - HEADER_SIZE_CLIENT; + static constexpr int MAX_PACKETS_SERVER = + MAX_TRANSFER_BYTES_SERVER / HEADER_SIZE_SERVER; + static constexpr int MAX_PACKETS_CLIENT = + MAX_TRANSFER_BYTES_CLIENT / HEADER_SIZE_CLIENT; + public: template struct SendBuffer { T header; - std::array data; + std::array data; u32 dataSize = 0; u32 totalByteCount = 0; }; @@ -90,10 +89,10 @@ class LinkWirelessOpenSDK { }; struct ServerPacket { ServerSDKHeader header; - u8 payload[LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER]; + u8 payload[MAX_PAYLOAD_SERVER]; }; struct ServerResponse { - ServerPacket packets[LINK_WIRELESS_OPEN_SDK_MAX_PACKETS_SERVER]; + ServerPacket packets[MAX_PACKETS_SERVER]; u32 packetsSize = 0; }; struct ParentData { @@ -117,16 +116,17 @@ class LinkWirelessOpenSDK { }; struct ClientPacket { ClientSDKHeader header; - u8 payload[LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_CLIENT]; + u8 payload[MAX_PAYLOAD_CLIENT]; }; struct ClientResponse { - ClientPacket packets[LINK_WIRELESS_OPEN_SDK_MAX_PACKETS_CLIENT]; + ClientPacket packets[MAX_PACKETS_CLIENT]; u32 packetsSize = 0; }; struct ChildrenData { ClientResponse responses[4]; }; + [[nodiscard]] ChildrenData getChildrenData(LinkRawWireless::ReceiveDataResponse response) { u8* buffer = (u8*)response.data; u32 cursor = 0; @@ -141,18 +141,17 @@ class LinkWirelessOpenSDK { ClientResponse* clientResponse = &childrenData.responses[i - 1]; u32 remainingBytes = response.sentBytes[i]; - while (remainingBytes >= LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT) { + while (remainingBytes >= HEADER_SIZE_CLIENT) { ClientPacket* packet = &clientResponse->packets[clientResponse->packetsSize]; u32 headerInt = *((u16*)(buffer + cursor)); packet->header = parseClientHeader(headerInt); - cursor += LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT; - remainingBytes -= LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT; + cursor += HEADER_SIZE_CLIENT; + remainingBytes -= HEADER_SIZE_CLIENT; if (packet->header.payloadSize > 0 && - packet->header.payloadSize <= - LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_CLIENT && + packet->header.payloadSize <= MAX_PAYLOAD_CLIENT && remainingBytes >= packet->header.payloadSize) { for (u32 j = 0; j < packet->header.payloadSize; j++) packet->payload[j] = buffer[cursor++]; @@ -166,6 +165,7 @@ class LinkWirelessOpenSDK { return childrenData; } + [[nodiscard]] ParentData getParentData(LinkRawWireless::ReceiveDataResponse response) { u8* buffer = (u8*)response.data; u32 cursor = 0; @@ -177,19 +177,18 @@ class LinkWirelessOpenSDK { ServerResponse* serverResponse = &parentData.response; u32 remainingBytes = response.sentBytes[0]; - while (remainingBytes >= LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER) { + while (remainingBytes >= HEADER_SIZE_SERVER) { ServerPacket* packet = &serverResponse->packets[serverResponse->packetsSize]; u32 headerInt = (*((u16*)(buffer + cursor))) | (((*((u8*)(buffer + cursor + 2)))) << 16); packet->header = parseServerHeader(headerInt); - cursor += LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER; - remainingBytes -= LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER; + cursor += HEADER_SIZE_SERVER; + remainingBytes -= HEADER_SIZE_SERVER; if (packet->header.payloadSize > 0 && - packet->header.payloadSize <= - LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER && + packet->header.payloadSize <= MAX_PAYLOAD_SERVER && remainingBytes >= packet->header.payloadSize) { for (u32 j = 0; j < packet->header.payloadSize; j++) packet->payload[j] = buffer[cursor++]; @@ -202,14 +201,14 @@ class LinkWirelessOpenSDK { return parentData; } + [[nodiscard]] SendBuffer createServerBuffer(const u8* fullPayload, u32 fullPayloadSize, SequenceNumber sequence, u8 targetSlots = 0b1111, u32 offset = 0) { SendBuffer buffer; - u32 payloadSize = - min(fullPayloadSize, LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER); + u32 payloadSize = Link::_min(fullPayloadSize, MAX_PAYLOAD_SERVER); buffer.header.isACK = 0; buffer.header.targetSlots = targetSlots; @@ -226,8 +225,7 @@ class LinkWirelessOpenSDK { for (u32 i = 1; i < payloadSize; i += 4) { u32 word = 0; for (u32 j = 0; j < 4; j++) { - if (offset + i + j < fullPayloadSize && - i + j < LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_SERVER) { + if (offset + i + j < fullPayloadSize && i + j < MAX_PAYLOAD_SERVER) { u8 byte = fullPayload[offset + i + j]; word |= byte << (j * 8); } @@ -235,12 +233,12 @@ class LinkWirelessOpenSDK { buffer.data[buffer.dataSize++] = word; } - buffer.totalByteCount = - LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER + payloadSize; + buffer.totalByteCount = HEADER_SIZE_SERVER + payloadSize; return buffer; } + [[nodiscard]] SendBuffer createServerACKBuffer( ClientSDKHeader clientHeader, u8 clientNumber) { @@ -250,18 +248,18 @@ class LinkWirelessOpenSDK { u32 headerInt = serializeServerHeader(buffer.header); buffer.data[buffer.dataSize++] = headerInt; - buffer.totalByteCount = LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_SERVER; + buffer.totalByteCount = HEADER_SIZE_SERVER; return buffer; } + [[nodiscard]] SendBuffer createClientBuffer(const u8* fullPayload, u32 fullPayloadSize, SequenceNumber sequence, u32 offset = 0) { SendBuffer buffer; - u32 payloadSize = - min(fullPayloadSize, LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_CLIENT); + u32 payloadSize = Link::_min(fullPayloadSize, MAX_PAYLOAD_CLIENT); buffer.header.isACK = 0; buffer.header.payloadSize = payloadSize; @@ -279,8 +277,7 @@ class LinkWirelessOpenSDK { for (u32 i = 2; i < payloadSize; i += 4) { u32 word = 0; for (u32 j = 0; j < 4; j++) { - if (offset + i + j < fullPayloadSize && - i + j < LINK_WIRELESS_OPEN_SDK_MAX_PAYLOAD_CLIENT) { + if (offset + i + j < fullPayloadSize && i + j < MAX_PAYLOAD_CLIENT) { u8 byte = fullPayload[offset + i + j]; word |= byte << (j * 8); } @@ -288,12 +285,12 @@ class LinkWirelessOpenSDK { buffer.data[buffer.dataSize++] = word; } - buffer.totalByteCount = - LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT + payloadSize; + buffer.totalByteCount = HEADER_SIZE_CLIENT + payloadSize; return buffer; } + [[nodiscard]] SendBuffer createClientACKBuffer( ServerSDKHeader serverHeader) { SendBuffer buffer; @@ -302,11 +299,12 @@ class LinkWirelessOpenSDK { u16 headerInt = serializeClientHeader(buffer.header); buffer.data[buffer.dataSize++] = headerInt; - buffer.totalByteCount = LINK_WIRELESS_OPEN_SDK_HEADER_SIZE_CLIENT; + buffer.totalByteCount = HEADER_SIZE_CLIENT; return buffer; } + [[nodiscard]] ServerSDKHeader createACKHeaderFor(ClientSDKHeader clientHeader, u8 clientNumber) { ServerSDKHeader serverHeader; @@ -320,6 +318,7 @@ class LinkWirelessOpenSDK { return serverHeader; } + [[nodiscard]] ClientSDKHeader createACKHeaderFor(ServerSDKHeader serverHeader) { ClientSDKHeader clientHeader; clientHeader.isACK = 1; @@ -331,30 +330,32 @@ class LinkWirelessOpenSDK { return clientHeader; } + [[nodiscard]] ClientSDKHeader parseClientHeader(u32 clientHeaderInt) { ClientSDKHeaderSerializer clientSerializer; - clientSerializer.asInt = - clientHeaderInt & LINK_WIRELESS_OPEN_SDK_HEADER_MASK_CLIENT; + clientSerializer.asInt = clientHeaderInt & HEADER_MASK_CLIENT; return clientSerializer.asStruct; } + [[nodiscard]] u16 serializeClientHeader(ClientSDKHeader clientHeader) { ClientSDKHeaderSerializer clientSerializer; clientSerializer.asStruct = clientHeader; - return clientSerializer.asInt & LINK_WIRELESS_OPEN_SDK_HEADER_MASK_CLIENT; + return clientSerializer.asInt & HEADER_MASK_CLIENT; } + [[nodiscard]] ServerSDKHeader parseServerHeader(u32 serverHeaderInt) { ServerSDKHeaderSerializer serverSerializer; - serverSerializer.asInt = - serverHeaderInt & LINK_WIRELESS_OPEN_SDK_HEADER_MASK_SERVER; + serverSerializer.asInt = serverHeaderInt & HEADER_MASK_SERVER; return serverSerializer.asStruct; } + [[nodiscard]] u32 serializeServerHeader(ServerSDKHeader serverHeader) { ServerSDKHeaderSerializer serverSerializer; serverSerializer.asStruct = serverHeader; - return serverSerializer.asInt & LINK_WIRELESS_OPEN_SDK_HEADER_MASK_SERVER; + return serverSerializer.asInt & HEADER_MASK_SERVER; } }; From 3f5784c767567d90d293f3d6265d98ad6777c26c Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 01:20:11 -0300 Subject: [PATCH 040/195] Adding Doxygen-style docs for IDE autocompletion in LinkWirelessOpenSDK and LinkWirelessMultiboot --- lib/LinkWirelessMultiboot.hpp | 26 +++++++++++++++- lib/LinkWirelessOpenSDK.hpp | 58 +++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 52bfe54..3fc3201 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -35,7 +35,10 @@ #include "LinkRawWireless.hpp" #include "LinkWirelessOpenSDK.hpp" -// Enable logging (set `linkWirelessMultiboot->logger` and uncomment to enable) +/** + * @brief Enable logging. + * \warning Set `linkWirelessMultiboot->logger` and uncomment to enable! + */ // #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = @@ -57,6 +60,10 @@ static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = #define LWMLOG(str) #endif +/** + * @brief A Wireless Multiboot tool to send small ROMs from a GBA to up to 4 + * slaves. + */ class LinkWirelessMultiboot { private: using u32 = unsigned int; @@ -104,6 +111,23 @@ class LinkWirelessMultiboot { u32 percentage = 0; }; + /** + * @brief Sends the `rom`. Once completed, the return value should be + * `LinkWirelessMultiboot::Result::SUCCESS`. + * @param rom A pointer to ROM data. + * @param romSize Size of the ROM in bytes. It must be a number between + * `448` and `262144`. It's recommended to use a ROM size that is a multiple + * of `16`, as this also ensures compatibility with Multiboot via Link Cable. + * @param gameName Game name. Maximum `14` characters + NULL terminator. + * @param userName User name. Maximum `8` characters + NULL terminator. + * @param gameId `(0 ~ 0x7FFF)` Game ID. + * @param players The exact number of consoles that will download the ROM. + * Once this number of players is reached, the code will start transmitting + * the ROM bytes. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the transfer will be aborted. + * \warning Blocks the system until completion or cancellation. + */ template Result sendRom(const u8* rom, u32 romSize, diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index 70a0d30..fdec092 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -14,6 +14,12 @@ static volatile char VERSION[] = "LinkWirelessOpenSDK/v7.0.0"; +/** + * @brief An open-source implementation of the "official" Wireless Adapter + * protocol. + * \warning Advanced usage only! + * \warning You only need this if you want to interact with N software. + */ class LinkWirelessOpenSDK { private: using u32 = unsigned int; @@ -126,6 +132,11 @@ class LinkWirelessOpenSDK { ClientResponse responses[4]; }; + /** + * @brief Parses the `response` and returns a struct containing all the + * received packets from the connected clients. + * @param response The response to be parsed. + */ [[nodiscard]] ChildrenData getChildrenData(LinkRawWireless::ReceiveDataResponse response) { u8* buffer = (u8*)response.data; @@ -165,6 +176,11 @@ class LinkWirelessOpenSDK { return childrenData; } + /** + * @brief Parses the `response` and returns a struct containing all the + * received packets from the host. + * @param response The response to be parsed. + */ [[nodiscard]] ParentData getParentData(LinkRawWireless::ReceiveDataResponse response) { u8* buffer = (u8*)response.data; @@ -201,6 +217,23 @@ class LinkWirelessOpenSDK { return parentData; } + /** + * @brief Creates a buffer for the host to send a `fullPayload` with a valid + * header. If `fullPayloadSize` is higher than `84` (the maximum payload + * size), the buffer will only contain the **first** `84` bytes (unless an + * `offset` > 0 is used). A `sequence` number must be created by using + * `LinkWirelessOpenSDK::SequenceNumber::fromPacketId(...)`. Optionally, a + * `targetSlots` bit array can be used to exclude some clients from the + * transmissions (the default is `0b1111`). + * @param fullPayload A pointer to the payload buffer. + * @param fullPayloadSize Total size of the payload. + * @param sequence A sequence number created using + * `LinkWirelessOpenSDK::SequenceNumber::fromPacketId(...)`. + * @param targetSlots `(Optional)` A bit array that can be used to exclude + * some clients (the default is `0b1111`). + * @param offset `(Optional)` The offset within the `fullPayload` pointer. + * Defaults to `0`. + */ [[nodiscard]] SendBuffer createServerBuffer(const u8* fullPayload, u32 fullPayloadSize, @@ -238,6 +271,12 @@ class LinkWirelessOpenSDK { return buffer; } + /** + * @brief Creates a buffer for the host to acknowledge a header received from + * a certain `clientNumber`. + * @param clientHeader The header of the received packet. + * @param clientNumber `(0~3)` The client number that sent the packet. + */ [[nodiscard]] SendBuffer createServerACKBuffer( ClientSDKHeader clientHeader, @@ -253,6 +292,19 @@ class LinkWirelessOpenSDK { return buffer; } + /** + * @brief Creates a buffer for the client to send a `fullPayload` with a valid + * header. If `fullPayloadSize` is higher than `14` (the maximum payload + * size), the buffer will only contain the **first** `14` bytes (unless an + * `offset` > 0 is used). A `sequence` number must be created by using + * `LinkWirelessOpenSDK::SequenceNumber::fromPacketId(...)`. + * @param fullPayload A pointer to the payload buffer. + * @param fullPayloadSize Total size of the payload. + * @param sequence A sequence number created using + * `LinkWirelessOpenSDK::SequenceNumber::fromPacketId(...)`. + * @param offset `(Optional)` The offset within the `fullPayload` pointer. + * Defaults to `0`. + */ [[nodiscard]] SendBuffer createClientBuffer(const u8* fullPayload, u32 fullPayloadSize, @@ -290,6 +342,11 @@ class LinkWirelessOpenSDK { return buffer; } + /** + * @brief Creates a buffer for the client to acknowledge a header received + * from the host. + * @param serverHeader The header of the received packet. + */ [[nodiscard]] SendBuffer createClientACKBuffer( ServerSDKHeader serverHeader) { @@ -304,6 +361,7 @@ class LinkWirelessOpenSDK { return buffer; } + private: [[nodiscard]] ServerSDKHeader createACKHeaderFor(ClientSDKHeader clientHeader, u8 clientNumber) { From 0115a21778623e653370728d6a00743bed13413f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 02:17:33 -0300 Subject: [PATCH 041/195] gcc: pls stop inlining this code --- docs/wireless_adapter.md | 2 + lib/LinkWirelessMultiboot.hpp | 92 +++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 32 deletions(-) diff --git a/docs/wireless_adapter.md b/docs/wireless_adapter.md index af01c4c..fe44f07 100644 --- a/docs/wireless_adapter.md +++ b/docs/wireless_adapter.md @@ -573,6 +573,8 @@ The bootloader will only accept ROMs with valid headers: they must contain this When the bootloader accepts the ROM, it will run the jump instruction located at the first byte. No extra headers are required apart from these 16 bytes. +`LinkWirelessMultiboot` patches the header on the fly, so users can compile their ROMs for cabled Multiboot and also use them wirelessly. + ### Official protocol > You can learn more details by reading [LinkWirelessOpenSDK.hpp](../lib/LinkWirelessOpenSDK.hpp)'s code. diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 3fc3201..f98652b 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -1,9 +1,6 @@ #ifndef LINK_WIRELESS_MULTIBOOT_H #define LINK_WIRELESS_MULTIBOOT_H -#pragma GCC push_options -#pragma GCC optimize("O2") - // -------------------------------------------------------------------------- // A Wireless Multiboot tool to send small ROMs from a GBA to up to 4 slaves. // -------------------------------------------------------------------------- @@ -39,7 +36,7 @@ * @brief Enable logging. * \warning Set `linkWirelessMultiboot->logger` and uncomment to enable! */ -// #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING +#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = "LinkWirelessMultiboot/v7.0.0"; @@ -48,7 +45,9 @@ static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = #define LINK_WIRELESS_MULTIBOOT_MAX_ROM_SIZE (256 * 1024) #define LINK_WIRELESS_MULTIBOOT_MIN_PLAYERS 2 #define LINK_WIRELESS_MULTIBOOT_MAX_PLAYERS 5 +#define LINK_WIRELESS_MULTIBOOT_BARRIER asm volatile("" ::: "memory") #define LINK_WIRELESS_MULTIBOOT_TRY(CALL) \ + LINK_WIRELESS_MULTIBOOT_BARRIER; \ if ((lastResult = CALL) != SUCCESS) { \ return finish(lastResult); \ } @@ -129,13 +128,13 @@ class LinkWirelessMultiboot { * \warning Blocks the system until completion or cancellation. */ template - Result sendRom(const u8* rom, - u32 romSize, - const char* gameName, - const char* userName, - const u16 gameId, - u8 players, - C cancel) { + __attribute__((noinline)) Result sendRom(const u8* rom, + u32 romSize, + const char* gameName, + const char* userName, + const u16 gameId, + u8 players, + C cancel) { if (romSize < LINK_WIRELESS_MULTIBOOT_MIN_ROM_SIZE) return INVALID_SIZE; if (romSize > LINK_WIRELESS_MULTIBOOT_MAX_ROM_SIZE) @@ -163,6 +162,7 @@ class LinkWirelessMultiboot { LWMLOG("SENDING ROM!"); progress.state = SENDING; LINK_WIRELESS_MULTIBOOT_TRY(sendRomBytes(rom, romSize, cancel)) + linkRawWireless->wait(FRAME_LINES); progress.state = CONFIRMING; LINK_WIRELESS_MULTIBOOT_TRY(confirm(cancel)) @@ -189,7 +189,7 @@ class LinkWirelessMultiboot { struct PendingTransferList { std::array transfers; - PendingTransfer* max(bool ack = false) { + __attribute__((noinline)) PendingTransfer* max(bool ack = false) { int maxCursor = -1; int maxI = -1; for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { @@ -202,7 +202,7 @@ class LinkWirelessMultiboot { return maxI > -1 ? &transfers[maxI] : NULL; } - PendingTransfer* minWithoutAck() { + __attribute__((noinline)) PendingTransfer* minWithoutAck() { u32 minCursor = 0xffffffff; int minI = -1; for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { @@ -215,7 +215,7 @@ class LinkWirelessMultiboot { return minI > -1 ? &transfers[minI] : NULL; } - void addIfNeeded(u32 newCursor) { + __attribute__((noinline)) void addIfNeeded(u32 newCursor) { auto maxTransfer = max(); if (maxTransfer != NULL && newCursor <= maxTransfer->cursor) return; @@ -230,7 +230,8 @@ class LinkWirelessMultiboot { } } - int ack(LinkWirelessOpenSDK::SequenceNumber sequence) { + __attribute__((noinline)) int ack( + LinkWirelessOpenSDK::SequenceNumber sequence) { int index = findIndex(sequence); if (index == -1) return -1; @@ -247,16 +248,18 @@ class LinkWirelessMultiboot { return canUpdateCursor ? maxAckTransfer->cursor + 1 : -1; } - void cleanup() { + __attribute__((noinline)) void cleanup() { for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && transfers[i].ack) transfers[i].isActive = false; } } - bool isFull() { return size() == MAX_INFLIGHT_PACKETS; } + __attribute__((noinline)) bool isFull() { + return size() == MAX_INFLIGHT_PACKETS; + } - u32 size() { + __attribute__((noinline)) u32 size() { u32 size = 0; for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) if (transfers[i].isActive) @@ -265,7 +268,7 @@ class LinkWirelessMultiboot { } private: - bool isAckCompleteUpTo(u32 cursor) { + __attribute__((noinline)) bool isAckCompleteUpTo(u32 cursor) { for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) if (transfers[i].isActive && !transfers[i].ack && transfers[i].cursor < cursor) @@ -273,7 +276,8 @@ class LinkWirelessMultiboot { return true; } - int findIndex(LinkWirelessOpenSDK::SequenceNumber sequence) { + __attribute__((noinline)) int findIndex( + LinkWirelessOpenSDK::SequenceNumber sequence) { for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && LinkWirelessOpenSDK::SequenceNumber::fromPacketId( @@ -290,7 +294,7 @@ class LinkWirelessMultiboot { u32 cursor = 0; PendingTransferList pendingTransferList; - u32 nextCursor(bool canSendInflightPackets) { + __attribute__((noinline)) u32 nextCursor(bool canSendInflightPackets) { u32 pendingCount = pendingTransferList.size(); if (canSendInflightPackets && pendingCount > 0 && @@ -302,22 +306,22 @@ class LinkWirelessMultiboot { } } - void addIfNeeded(u32 newCursor) { + __attribute__((noinline)) void addIfNeeded(u32 newCursor) { if (newCursor >= cursor) pendingTransferList.addIfNeeded(newCursor); } - u32 transferred() { + __attribute__((noinline)) u32 transferred() { return cursor * LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; } - LinkWirelessOpenSDK::SequenceNumber sequence() { + __attribute__((noinline)) LinkWirelessOpenSDK::SequenceNumber sequence() { return LinkWirelessOpenSDK::SequenceNumber::fromPacketId(cursor); } }; MultibootProgress progress; - Result lastResult; + volatile Result lastResult; LinkWirelessOpenSDK::ClientSDKHeader lastValidHeader; __attribute__((noinline)) Result activate() { @@ -384,9 +388,9 @@ class LinkWirelessMultiboot { } template - Result handshakeClient(u8 clientNumber, C cancel) { + __attribute__((noinline)) Result handshakeClient(u8 clientNumber, C cancel) { LinkWirelessOpenSDK::ClientPacket handshakePackets[2]; - bool hasReceivedName = false; + volatile bool hasReceivedName = false; LWMLOG("new client: " + std::to_string(clientNumber)); LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( @@ -455,7 +459,7 @@ class LinkWirelessMultiboot { } LWMLOG("draining queue..."); - bool hasFinished = false; + volatile bool hasFinished = false; while (!hasFinished) { if (cancel(progress)) return finish(CANCELED); @@ -597,6 +601,8 @@ class LinkWirelessMultiboot { cancel)) } + LINK_WIRELESS_MULTIBOOT_BARRIER; + LWMLOG("confirming (2/2)..."); for (u32 i = 0; i < progress.connectedClients; i++) { LinkRawWireless::ReceiveDataResponse response; @@ -615,6 +621,8 @@ class LinkWirelessMultiboot { LinkWirelessOpenSDK::SendBuffer sendBuffer, C cancel) { + LINK_WIRELESS_MULTIBOOT_BARRIER; + LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( clientNumber, [this, &sendBuffer](LinkRawWireless::ReceiveDataResponse& response) { @@ -627,6 +635,8 @@ class LinkWirelessMultiboot { }, cancel)) + LINK_WIRELESS_MULTIBOOT_BARRIER; + return SUCCESS; } @@ -634,6 +644,8 @@ class LinkWirelessMultiboot { __attribute__((noinline)) Result exchangeACKData(u8 clientNumber, V validatePacket, C cancel) { + LINK_WIRELESS_MULTIBOOT_BARRIER; + LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( clientNumber, [this, clientNumber](LinkRawWireless::ReceiveDataResponse& response) { @@ -643,13 +655,17 @@ class LinkWirelessMultiboot { }, validatePacket, cancel)) + LINK_WIRELESS_MULTIBOOT_BARRIER; + return SUCCESS; } template __attribute__((noinline)) Result exchangeData(u8 clientNumber, F sendAction, V validatePacket, C cancel) { - bool hasFinished = false; + LINK_WIRELESS_MULTIBOOT_BARRIER; + + volatile bool hasFinished = false; while (!hasFinished) { if (cancel(progress)) return finish(CANCELED); @@ -670,6 +686,8 @@ class LinkWirelessMultiboot { } } + LINK_WIRELESS_MULTIBOOT_BARRIER; + return SUCCESS; } @@ -687,21 +705,28 @@ class LinkWirelessMultiboot { u32 _bytes, LinkRawWireless::ReceiveDataResponse& response) { LinkRawWireless::RemoteCommand remoteCommand; - bool success = false; + volatile bool success = false; success = linkRawWireless->sendDataAndWait(data, dataSize, remoteCommand, _bytes); + + LINK_WIRELESS_MULTIBOOT_BARRIER; + if (!success) { LWMLOG("! sendDataAndWait failed"); return FAILURE; } + LINK_WIRELESS_MULTIBOOT_BARRIER; + if (remoteCommand.commandId != 0x28) { LWMLOG("! expected EVENT 0x28"); LWMLOG("! but got " + toHex(remoteCommand.commandId)); return FAILURE; } + LINK_WIRELESS_MULTIBOOT_BARRIER; + if (remoteCommand.paramsSize > 0) { u8 expectedActiveChildren = 0; for (u32 i = 0; i < progress.connectedClients; i++) @@ -717,7 +742,12 @@ class LinkWirelessMultiboot { } } + LINK_WIRELESS_MULTIBOOT_BARRIER; + success = linkRawWireless->receiveData(response); + + LINK_WIRELESS_MULTIBOOT_BARRIER; + if (!success) { LWMLOG("! receiveData failed"); return FAILURE; @@ -756,6 +786,4 @@ extern LinkWirelessMultiboot* linkWirelessMultiboot; #undef LWMLOG -#pragma GCC pop_options - #endif // LINK_WIRELESS_MULTIBOOT_H \ No newline at end of file From 743ea22f152a4aa2132acb86811b2f0e90bf97a9 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 02:31:38 -0300 Subject: [PATCH 042/195] Fixing wrong constant usage --- lib/LinkWirelessMultiboot.hpp | 22 +++++----------------- lib/LinkWirelessOpenSDK.hpp | 1 + 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index f98652b..23ad36a 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -36,7 +36,7 @@ * @brief Enable logging. * \warning Set `linkWirelessMultiboot->logger` and uncomment to enable! */ -#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING +// #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = "LinkWirelessMultiboot/v7.0.0"; @@ -312,7 +312,7 @@ class LinkWirelessMultiboot { } __attribute__((noinline)) u32 transferred() { - return cursor * LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; + return cursor * LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; } __attribute__((noinline)) LinkWirelessOpenSDK::SequenceNumber sequence() { @@ -496,8 +496,8 @@ class LinkWirelessMultiboot { C cancel) { LinkWirelessOpenSDK::ChildrenData childrenData; std::array transfers; - u8 firstPagePatch[LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; - for (u32 i = 0; i < LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; i++) { + u8 firstPagePatch[LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER]; + for (u32 i = 0; i < LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; i++) { firstPagePatch[i] = i >= ROM_HEADER_PATCH_OFFSET && i < ROM_HEADER_PATCH_OFFSET + ROM_HEADER_PATCH_SIZE @@ -514,7 +514,7 @@ class LinkWirelessMultiboot { return finish(CANCELED); u32 cursor = findMinCursor(transfers); - u32 offset = cursor * LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; + u32 offset = cursor * LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; auto sequence = LinkWirelessOpenSDK::SequenceNumber::fromPacketId(cursor); const u8* bufferToSend = cursor == 0 ? (const u8*)firstPagePatch : rom; @@ -621,8 +621,6 @@ class LinkWirelessMultiboot { LinkWirelessOpenSDK::SendBuffer sendBuffer, C cancel) { - LINK_WIRELESS_MULTIBOOT_BARRIER; - LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( clientNumber, [this, &sendBuffer](LinkRawWireless::ReceiveDataResponse& response) { @@ -635,8 +633,6 @@ class LinkWirelessMultiboot { }, cancel)) - LINK_WIRELESS_MULTIBOOT_BARRIER; - return SUCCESS; } @@ -644,8 +640,6 @@ class LinkWirelessMultiboot { __attribute__((noinline)) Result exchangeACKData(u8 clientNumber, V validatePacket, C cancel) { - LINK_WIRELESS_MULTIBOOT_BARRIER; - LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( clientNumber, [this, clientNumber](LinkRawWireless::ReceiveDataResponse& response) { @@ -655,16 +649,12 @@ class LinkWirelessMultiboot { }, validatePacket, cancel)) - LINK_WIRELESS_MULTIBOOT_BARRIER; - return SUCCESS; } template __attribute__((noinline)) Result exchangeData(u8 clientNumber, F sendAction, V validatePacket, C cancel) { - LINK_WIRELESS_MULTIBOOT_BARRIER; - volatile bool hasFinished = false; while (!hasFinished) { if (cancel(progress)) @@ -686,8 +676,6 @@ class LinkWirelessMultiboot { } } - LINK_WIRELESS_MULTIBOOT_BARRIER; - return SUCCESS; } diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index fdec092..bb45b54 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -26,6 +26,7 @@ class LinkWirelessOpenSDK { using u16 = unsigned short; using u8 = unsigned char; + public: static constexpr int MAX_TRANSFER_WORDS = 23; static constexpr int MAX_TRANSFER_BYTES_SERVER = 87; static constexpr int MAX_TRANSFER_BYTES_CLIENT = 16; From d6d7862703a2a409d493e299fbe69910d420b9a7 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 04:20:16 -0300 Subject: [PATCH 043/195] Using type aliases for readability --- lib/LinkWirelessMultiboot.hpp | 102 ++++++++++++++++------------------ 1 file changed, 49 insertions(+), 53 deletions(-) diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 23ad36a..a69e04d 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -69,6 +69,14 @@ class LinkWirelessMultiboot { using u16 = unsigned short; using u8 = unsigned char; + using CommState = LinkWirelessOpenSDK::CommState; + using Sequence = LinkWirelessOpenSDK::SequenceNumber; + using ClientHeader = LinkWirelessOpenSDK::ClientSDKHeader; + using ClientPacket = LinkWirelessOpenSDK::ClientPacket; + using ChildrenData = LinkWirelessOpenSDK::ChildrenData; + using SendBuffer = + LinkWirelessOpenSDK::SendBuffer; + static constexpr int HEADER_SIZE = 0xC0; static constexpr int SETUP_MAGIC = 0x003c0000; static constexpr int SETUP_TX = 1; @@ -230,8 +238,7 @@ class LinkWirelessMultiboot { } } - __attribute__((noinline)) int ack( - LinkWirelessOpenSDK::SequenceNumber sequence) { + __attribute__((noinline)) int ack(Sequence sequence) { int index = findIndex(sequence); if (index == -1) return -1; @@ -276,12 +283,10 @@ class LinkWirelessMultiboot { return true; } - __attribute__((noinline)) int findIndex( - LinkWirelessOpenSDK::SequenceNumber sequence) { + __attribute__((noinline)) int findIndex(Sequence sequence) { for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { if (transfers[i].isActive && - LinkWirelessOpenSDK::SequenceNumber::fromPacketId( - transfers[i].cursor) == sequence) { + Sequence::fromPacketId(transfers[i].cursor) == sequence) { return i; } } @@ -315,14 +320,17 @@ class LinkWirelessMultiboot { return cursor * LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; } - __attribute__((noinline)) LinkWirelessOpenSDK::SequenceNumber sequence() { - return LinkWirelessOpenSDK::SequenceNumber::fromPacketId(cursor); + __attribute__((noinline)) Sequence sequence() { + return Sequence::fromPacketId(cursor); } }; MultibootProgress progress; volatile Result lastResult; - LinkWirelessOpenSDK::ClientSDKHeader lastValidHeader; + ClientHeader lastValidHeader; + + using TransferArray = + std::array; __attribute__((noinline)) Result activate() { if (!linkRawWireless->activate()) { @@ -389,7 +397,7 @@ class LinkWirelessMultiboot { template __attribute__((noinline)) Result handshakeClient(u8 clientNumber, C cancel) { - LinkWirelessOpenSDK::ClientPacket handshakePackets[2]; + ClientPacket handshakePackets[2]; volatile bool hasReceivedName = false; LWMLOG("new client: " + std::to_string(clientNumber)); @@ -398,16 +406,15 @@ class LinkWirelessMultiboot { [this](LinkRawWireless::ReceiveDataResponse& response) { return sendAndExpectData(toArray(), 0, 1, response); }, - [](LinkWirelessOpenSDK::ClientPacket packet) { return true; }, cancel)) + [](ClientPacket packet) { return true; }, cancel)) // (initial client packet received) LWMLOG("handshake (1/2)..."); LINK_WIRELESS_MULTIBOOT_TRY(exchangeACKData( clientNumber, - [](LinkWirelessOpenSDK::ClientPacket packet) { + [](ClientPacket packet) { auto header = packet.header; - return header.n == 2 && - header.commState == LinkWirelessOpenSDK::CommState::STARTING; + return header.n == 2 && header.commState == CommState::STARTING; }, cancel)) // (n = 2, commState = 1) @@ -415,11 +422,10 @@ class LinkWirelessMultiboot { LWMLOG("handshake (2/2)..."); LINK_WIRELESS_MULTIBOOT_TRY(exchangeACKData( clientNumber, - [&handshakePackets](LinkWirelessOpenSDK::ClientPacket packet) { + [&handshakePackets](ClientPacket packet) { auto header = packet.header; - bool isValid = - header.n == 1 && header.phase == 0 && - header.commState == LinkWirelessOpenSDK::CommState::COMMUNICATING; + bool isValid = header.n == 1 && header.phase == 0 && + header.commState == CommState::COMMUNICATING; if (isValid) handshakePackets[0] = packet; return isValid; @@ -430,17 +436,15 @@ class LinkWirelessMultiboot { LWMLOG("receiving name..."); LINK_WIRELESS_MULTIBOOT_TRY(exchangeACKData( clientNumber, - [this, &handshakePackets, - &hasReceivedName](LinkWirelessOpenSDK::ClientPacket packet) { + [this, &handshakePackets, &hasReceivedName](ClientPacket packet) { auto header = packet.header; lastValidHeader = header; if (header.n == 1 && header.phase == 1 && - header.commState == - LinkWirelessOpenSDK::CommState::COMMUNICATING) { + header.commState == CommState::COMMUNICATING) { handshakePackets[1] = packet; hasReceivedName = true; } - return header.commState == LinkWirelessOpenSDK::CommState::OFF; + return header.commState == CommState::OFF; }, cancel)) // (commState = 0) @@ -482,8 +486,7 @@ class LinkWirelessMultiboot { LINK_WIRELESS_MULTIBOOT_TRY(exchangeNewData( i, linkWirelessOpenSDK->createServerBuffer( - CMD_START, CMD_START_SIZE, - {1, 0, LinkWirelessOpenSDK::CommState::STARTING}, 1 << i), + CMD_START, CMD_START_SIZE, {1, 0, CommState::STARTING}, 1 << i), cancel)) } @@ -494,8 +497,8 @@ class LinkWirelessMultiboot { __attribute__((noinline)) Result sendRomBytes(const u8* rom, u32 romSize, C cancel) { - LinkWirelessOpenSDK::ChildrenData childrenData; - std::array transfers; + ChildrenData childrenData; + TransferArray transfers; u8 firstPagePatch[LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER]; for (u32 i = 0; i < LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; i++) { firstPagePatch[i] = @@ -515,7 +518,7 @@ class LinkWirelessMultiboot { u32 cursor = findMinCursor(transfers); u32 offset = cursor * LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; - auto sequence = LinkWirelessOpenSDK::SequenceNumber::fromPacketId(cursor); + auto sequence = Sequence::fromPacketId(cursor); const u8* bufferToSend = cursor == 0 ? (const u8*)firstPagePatch : rom; auto sendBuffer = linkWirelessOpenSDK->createServerBuffer( @@ -553,9 +556,7 @@ class LinkWirelessMultiboot { return SUCCESS; } - __attribute__((noinline)) u32 findMinClient( - std::array& - transfers) { + __attribute__((noinline)) u32 findMinClient(TransferArray& transfers) { u32 minTransferredBytes = 0xffffffff; u32 minClient = 0; @@ -570,9 +571,7 @@ class LinkWirelessMultiboot { return minClient; } - __attribute__((noinline)) u32 findMinCursor( - std::array& - transfers) { + __attribute__((noinline)) u32 findMinCursor(TransferArray& transfers) { u32 minNextCursor = 0xffffffff; bool canSendInflightPackets = true; @@ -594,11 +593,11 @@ class LinkWirelessMultiboot { __attribute__((noinline)) Result confirm(C cancel) { LWMLOG("confirming (1/2)..."); for (u32 i = 0; i < progress.connectedClients; i++) { - LINK_WIRELESS_MULTIBOOT_TRY(exchangeNewData( - i, - linkWirelessOpenSDK->createServerBuffer( - {}, 0, {0, 0, LinkWirelessOpenSDK::CommState::ENDING}, 1 << i), - cancel)) + LINK_WIRELESS_MULTIBOOT_TRY( + exchangeNewData(i, + linkWirelessOpenSDK->createServerBuffer( + {}, 0, {0, 0, CommState::ENDING}, 1 << i), + cancel)) } LINK_WIRELESS_MULTIBOOT_BARRIER; @@ -606,27 +605,25 @@ class LinkWirelessMultiboot { LWMLOG("confirming (2/2)..."); for (u32 i = 0; i < progress.connectedClients; i++) { LinkRawWireless::ReceiveDataResponse response; - LINK_WIRELESS_MULTIBOOT_TRY(sendAndExpectData( - linkWirelessOpenSDK->createServerBuffer( - {}, 0, {1, 0, LinkWirelessOpenSDK::CommState::OFF}, 1 << i), - response)) + LINK_WIRELESS_MULTIBOOT_TRY( + sendAndExpectData(linkWirelessOpenSDK->createServerBuffer( + {}, 0, {1, 0, CommState::OFF}, 1 << i), + response)) } return SUCCESS; } template - __attribute__((noinline)) Result exchangeNewData( - u8 clientNumber, - LinkWirelessOpenSDK::SendBuffer - sendBuffer, - C cancel) { + __attribute__((noinline)) Result exchangeNewData(u8 clientNumber, + SendBuffer sendBuffer, + C cancel) { LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( clientNumber, [this, &sendBuffer](LinkRawWireless::ReceiveDataResponse& response) { return sendAndExpectData(sendBuffer, response); }, - [&sendBuffer](LinkWirelessOpenSDK::ClientPacket packet) { + [&sendBuffer](ClientPacket packet) { auto header = packet.header; return header.isACK == 1 && header.sequence() == sendBuffer.header.sequence(); @@ -679,10 +676,9 @@ class LinkWirelessMultiboot { return SUCCESS; } - __attribute__((noinline)) Result sendAndExpectData( - LinkWirelessOpenSDK::SendBuffer - sendBuffer, - LinkRawWireless::ReceiveDataResponse& response) { + __attribute__((noinline)) Result + sendAndExpectData(SendBuffer sendBuffer, + LinkRawWireless::ReceiveDataResponse& response) { return sendAndExpectData(sendBuffer.data, sendBuffer.dataSize, sendBuffer.totalByteCount, response); } From f7a2b218a42db6c76bb47ff5fd1f7c81e47471a2 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 06:50:50 -0300 Subject: [PATCH 044/195] Dropping tonc dependency in LinkWireless --- README.md | 2 +- examples/LinkWireless_demo/src/main.cpp | 6 +- lib/LinkCable.hpp | 2 +- lib/LinkWireless.hpp | 347 ++++++++++++------------ lib/_link_common.hpp | 1 + 5 files changed, 182 insertions(+), 176 deletions(-) diff --git a/README.md b/README.md index 6e8a80d..8f37432 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ You can update these values at any time without creating a new instance: You can also change these compile-time constants: - `LINK_WIRELESS_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max). The default value is `30`, which seems fine for most games. - `LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH` and `LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH`: to set the biggest allowed transfer per timer tick. Transfers contain retransmission headers and multiple user messages. These values must be in the range `[6;20]` for servers and `[2;4]` for clients. The default values are `20` and `4`, but you might want to set them a bit lower to reduce CPU usage. -- `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions (~3.5KB) in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. +- `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. - If you enable this, make sure that `LinkWireless.cpp` gets compiled! For example, in a Makefile-based project, verify that the file is in your `SRCDIRS` list. - `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce some latency but reduce overall CPU usage. diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 275d5c5..3971e44 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -1,12 +1,12 @@ +// (0) Include the header +#include "../../../lib/LinkWireless.hpp" + #include #include #include #include #include "../../_lib/interrupt.h" -// (0) Include the header -#include "../../../lib/LinkWireless.hpp" - #ifdef PROFILING_ENABLED #include #endif diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 8e65d73..2329df2 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -77,7 +77,7 @@ class LinkCable { using vs32 = volatile signed int; using vu32 = volatile unsigned int; - static constexpr int BASE_FREQUENCY = Link::_TM_FREQ_1024; + static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int REMOTE_TIMEOUT_OFFLINE = -1; static constexpr int BIT_SLAVE = 2; static constexpr int BIT_READY = 3; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index fc3351b..abfc759 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -54,8 +54,8 @@ // - 0xFFFF is a reserved value, so don't use it! // -------------------------------------------------------------------------- -#include -#include +#include "_link_common.hpp" + #include #include "LinkGPIO.hpp" #include "LinkSPI.hpp" @@ -78,55 +78,24 @@ // Use send/receive latch (uncomment to enable) // #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH +static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; + #define LINK_WIRELESS_MAX_PLAYERS 5 #define LINK_WIRELESS_MIN_PLAYERS 2 +#define LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 22 +#define LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 +#define LINK_WIRELESS_BROADCAST_LENGTH 6 +#define LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH \ + (1 + LINK_WIRELESS_BROADCAST_LENGTH) +#define LINK_WIRELESS_MAX_SERVERS \ + (LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH / \ + LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH) #define LINK_WIRELESS_END 0 #define LINK_WIRELESS_DEFAULT_TIMEOUT 10 #define LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT 10 #define LINK_WIRELESS_DEFAULT_INTERVAL 50 #define LINK_WIRELESS_DEFAULT_SEND_TIMER_ID 3 #define LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID -1 -#define LINK_WIRELESS_BASE_FREQUENCY TM_FREQ_1024 -#define LINK_WIRELESS_PACKET_ID_BITS 6 -#define LINK_WIRELESS_MAX_PACKET_IDS (1 << LINK_WIRELESS_PACKET_ID_BITS) -#define LINK_WIRELESS_PACKET_ID_MASK (LINK_WIRELESS_MAX_PACKET_IDS - 1) -#define LINK_WIRELESS_MSG_PING 0xffff -#define LINK_WIRELESS_PING_WAIT 50 -#define LINK_WIRELESS_TRANSFER_WAIT 15 -#define LINK_WIRELESS_BROADCAST_SEARCH_WAIT_FRAMES 60 -#define LINK_WIRELESS_CMD_TIMEOUT 100 -#define LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 -#define LINK_WIRELESS_MAX_GAME_ID 0x7fff -#define LINK_WIRELESS_MAX_GAME_NAME_LENGTH 14 -#define LINK_WIRELESS_MAX_USER_NAME_LENGTH 8 -#define LINK_WIRELESS_LOGIN_STEPS 9 -#define LINK_WIRELESS_COMMAND_HEADER 0x9966 -#define LINK_WIRELESS_RESPONSE_ACK 0x80 -#define LINK_WIRELESS_DATA_REQUEST 0x80000000 -#define LINK_WIRELESS_SETUP_MAGIC 0x003c0420 -#define LINK_WIRELESS_SETUP_MAX_PLAYERS_BIT 16 -#define LINK_WIRELESS_STILL_CONNECTING 0x01000000 -#define LINK_WIRELESS_BROADCAST_LENGTH 6 -#define LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH \ - (1 + LINK_WIRELESS_BROADCAST_LENGTH) -#define LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 22 -#define LINK_WIRELESS_MAX_SERVERS \ - (LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH / \ - LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH) -#define LINK_WIRELESS_COMMAND_HELLO 0x10 -#define LINK_WIRELESS_COMMAND_SETUP 0x17 -#define LINK_WIRELESS_COMMAND_BROADCAST 0x16 -#define LINK_WIRELESS_COMMAND_START_HOST 0x19 -#define LINK_WIRELESS_COMMAND_ACCEPT_CONNECTIONS 0x1a -#define LINK_WIRELESS_COMMAND_BROADCAST_READ_START 0x1c -#define LINK_WIRELESS_COMMAND_BROADCAST_READ_POLL 0x1d -#define LINK_WIRELESS_COMMAND_BROADCAST_READ_END 0x1e -#define LINK_WIRELESS_COMMAND_CONNECT 0x1f -#define LINK_WIRELESS_COMMAND_IS_FINISHED_CONNECT 0x20 -#define LINK_WIRELESS_COMMAND_FINISH_CONNECTION 0x21 -#define LINK_WIRELESS_COMMAND_SEND_DATA 0x24 -#define LINK_WIRELESS_COMMAND_RECEIVE_DATA 0x26 -#define LINK_WIRELESS_COMMAND_BYE 0x3d #define LINK_WIRELESS_BARRIER asm volatile("" ::: "memory") #define LINK_WIRELESS_CODE_IWRAM \ __attribute__((section(".iwram"), target("arm"), noinline)) @@ -139,17 +108,51 @@ if (!reset()) \ return false; -static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; - -void LINK_WIRELESS_ISR_VBLANK(); -void LINK_WIRELESS_ISR_SERIAL(); -void LINK_WIRELESS_ISR_TIMER(); -const u16 LINK_WIRELESS_LOGIN_PARTS[] = {0x494e, 0x494e, 0x544e, 0x544e, 0x4e45, - 0x4e45, 0x4f44, 0x4f44, 0x8001}; -const u16 LINK_WIRELESS_TIMER_IRQ_IDS[] = {IRQ_TIMER0, IRQ_TIMER1, IRQ_TIMER2, - IRQ_TIMER3}; - class LinkWireless { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + using vs32 = volatile signed int; + using vu32 = volatile unsigned int; + using s8 = signed char; + + static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; + static constexpr int PACKET_ID_BITS = 6; + static constexpr int MAX_PACKET_IDS = (1 << PACKET_ID_BITS); + static constexpr int PACKET_ID_MASK = (MAX_PACKET_IDS - 1); + static constexpr int MSG_PING = 0xffff; + static constexpr int PING_WAIT = 50; + static constexpr int TRANSFER_WAIT = 15; + static constexpr int BROADCAST_SEARCH_WAIT_FRAMES = 60; + static constexpr int CMD_TIMEOUT = 100; + static constexpr int MAX_GAME_ID = 0x7fff; + static constexpr int MAX_GAME_NAME_LENGTH = 14; + static constexpr int MAX_USER_NAME_LENGTH = 8; + static constexpr int LOGIN_STEPS = 9; + static constexpr int COMMAND_HEADER_VALUE = 0x9966; + static constexpr int RESPONSE_ACK_VALUE = 0x80; + static constexpr u32 DATA_REQUEST_VALUE = 0x80000000; + static constexpr int SETUP_MAGIC = 0x003c0420; + static constexpr int SETUP_MAX_PLAYERS_BIT = 16; + static constexpr int WAIT_STILL_CONNECTING = 0x01000000; + static constexpr int COMMAND_HELLO = 0x10; + static constexpr int COMMAND_SETUP = 0x17; + static constexpr int COMMAND_BROADCAST = 0x16; + static constexpr int COMMAND_START_HOST = 0x19; + static constexpr int COMMAND_ACCEPT_CONNECTIONS = 0x1a; + static constexpr int COMMAND_BROADCAST_READ_START = 0x1c; + static constexpr int COMMAND_BROADCAST_READ_POLL = 0x1d; + static constexpr int COMMAND_BROADCAST_READ_END = 0x1e; + static constexpr int COMMAND_CONNECT = 0x1f; + static constexpr int COMMAND_IS_FINISHED_CONNECT = 0x20; + static constexpr int COMMAND_FINISH_CONNECTION = 0x21; + static constexpr int COMMAND_SEND_DATA = 0x24; + static constexpr int COMMAND_RECEIVE_DATA = 0x26; + static constexpr int COMMAND_BYE = 0x3d; + static constexpr u16 LOGIN_PARTS[] = {0x494e, 0x494e, 0x544e, 0x544e, 0x4e45, + 0x4e45, 0x4f44, 0x4f44, 0x8001}; + public: // std::function debug; // #define PROFILING_ENABLED @@ -203,8 +206,8 @@ class LinkWireless { struct Server { u16 id = 0; u16 gameId; - char gameName[LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; - char userName[LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1]; + char gameName[MAX_GAME_NAME_LENGTH + 1]; + char userName[MAX_USER_NAME_LENGTH + 1]; u8 currentPlayerCount; bool isFull() { return currentPlayerCount == 0; } @@ -229,7 +232,7 @@ class LinkWireless { this->config.asyncACKTimerId = asyncACKTimerId; } - bool isActive() { return isEnabled; } + [[nodiscard]] bool isActive() { return isEnabled; } bool activate() { lastError = NONE; @@ -245,7 +248,7 @@ class LinkWireless { bool deactivate() { activate(); - bool success = sendCommand(LINK_WIRELESS_COMMAND_BYE).success; + bool success = sendCommand(COMMAND_BYE).success; lastError = NONE; isEnabled = false; @@ -257,7 +260,7 @@ class LinkWireless { bool serve(const char* gameName = "", const char* userName = "", - u16 gameId = LINK_WIRELESS_MAX_GAME_ID) { + u16 gameId = MAX_GAME_ID) { LINK_WIRELESS_RESET_IF_NEEDED if (state != AUTHENTICATED && state != SERVING) { lastError = WRONG_STATE; @@ -267,25 +270,25 @@ class LinkWireless { lastError = BUSY_TRY_AGAIN; return false; } - if (std::strlen(gameName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH) { + if (std::strlen(gameName) > MAX_GAME_NAME_LENGTH) { lastError = GAME_NAME_TOO_LONG; return false; } - if (std::strlen(userName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH) { + if (std::strlen(userName) > MAX_GAME_NAME_LENGTH) { lastError = USER_NAME_TOO_LONG; return false; } - char finalGameName[LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; - char finalUserName[LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1]; - copyName(finalGameName, gameName, LINK_WIRELESS_MAX_GAME_NAME_LENGTH); - copyName(finalUserName, userName, LINK_WIRELESS_MAX_USER_NAME_LENGTH); + char finalGameName[MAX_GAME_NAME_LENGTH + 1]; + char finalUserName[MAX_USER_NAME_LENGTH + 1]; + copyName(finalGameName, gameName, MAX_GAME_NAME_LENGTH); + copyName(finalUserName, userName, MAX_USER_NAME_LENGTH); if (state != SERVING) setup(config.maxPlayers); addData(buildU32(buildU16(finalGameName[1], finalGameName[0]), - gameId & LINK_WIRELESS_MAX_GAME_ID), + gameId & MAX_GAME_ID), true); addData(buildU32(buildU16(finalGameName[5], finalGameName[4]), buildU16(finalGameName[3], finalGameName[2]))); @@ -298,11 +301,10 @@ class LinkWireless { addData(buildU32(buildU16(finalUserName[7], finalUserName[6]), buildU16(finalUserName[5], finalUserName[4]))); - bool success = sendCommand(LINK_WIRELESS_COMMAND_BROADCAST, true).success; + bool success = sendCommand(COMMAND_BROADCAST, true).success; if (state != SERVING) { - success = - success && sendCommand(LINK_WIRELESS_COMMAND_START_HOST).success; + success = success && sendCommand(COMMAND_START_HOST).success; } if (!success) { @@ -311,7 +313,7 @@ class LinkWireless { return false; } - wait(LINK_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); state = SERVING; return true; @@ -326,7 +328,7 @@ class LinkWireless { if (!getServersAsyncStart()) return false; - waitVBlanks(LINK_WIRELESS_BROADCAST_SEARCH_WAIT_FRAMES, onWait); + waitVBlanks(BROADCAST_SEARCH_WAIT_FRAMES, onWait); if (!getServersAsyncEnd(servers)) return false; @@ -341,8 +343,7 @@ class LinkWireless { return false; } - bool success = - sendCommand(LINK_WIRELESS_COMMAND_BROADCAST_READ_START).success; + bool success = sendCommand(COMMAND_BROADCAST_READ_START).success; if (!success) { reset(); @@ -362,7 +363,7 @@ class LinkWireless { return false; } - auto result = sendCommand(LINK_WIRELESS_COMMAND_BROADCAST_READ_POLL); + auto result = sendCommand(COMMAND_BROADCAST_READ_POLL); bool success1 = result.success && result.responsesSize % LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH == 0; @@ -373,8 +374,7 @@ class LinkWireless { return false; } - bool success2 = - sendCommand(LINK_WIRELESS_COMMAND_BROADCAST_READ_END).success; + bool success2 = sendCommand(COMMAND_BROADCAST_READ_END).success; if (!success2) { reset(); @@ -390,7 +390,7 @@ class LinkWireless { Server server; server.id = (u16)result.responses[start]; - server.gameId = result.responses[start + 1] & LINK_WIRELESS_MAX_GAME_ID; + server.gameId = result.responses[start + 1] & MAX_GAME_ID; u32 gameI = 0, userI = 0; recoverName(server.gameName, gameI, result.responses[start + 1], false); recoverName(server.gameName, gameI, result.responses[start + 2]); @@ -420,7 +420,7 @@ class LinkWireless { } addData(serverId, true); - bool success = sendCommand(LINK_WIRELESS_COMMAND_CONNECT, true).success; + bool success = sendCommand(COMMAND_CONNECT, true).success; if (!success) { reset(); @@ -440,14 +440,14 @@ class LinkWireless { return false; } - auto result1 = sendCommand(LINK_WIRELESS_COMMAND_IS_FINISHED_CONNECT); + auto result1 = sendCommand(COMMAND_IS_FINISHED_CONNECT); if (!result1.success || result1.responsesSize == 0) { reset(); lastError = COMMAND_FAILED; return false; } - if (result1.responses[0] == LINK_WIRELESS_STILL_CONNECTING) + if (result1.responses[0] == WAIT_STILL_CONNECTING) return true; u8 assignedPlayerId = 1 + (u8)msB32(result1.responses[0]); @@ -457,7 +457,7 @@ class LinkWireless { return false; } - auto result2 = sendCommand(LINK_WIRELESS_COMMAND_FINISH_CONNECTION); + auto result2 = sendCommand(COMMAND_FINISH_CONNECTION); if (!result2.success) { reset(); lastError = COMMAND_FAILED; @@ -528,12 +528,14 @@ class LinkWireless { return true; } - State getState() { return state; } - bool isConnected() { return sessionState.playerCount > 1; } - bool isSessionActive() { return state == SERVING || state == CONNECTED; } - u8 playerCount() { return sessionState.playerCount; } - u8 currentPlayerId() { return sessionState.currentPlayerId; } - Error getLastError(bool clear = true) { + [[nodiscard]] State getState() { return state; } + [[nodiscard]] bool isConnected() { return sessionState.playerCount > 1; } + [[nodiscard]] bool isSessionActive() { + return state == SERVING || state == CONNECTED; + } + [[nodiscard]] u8 playerCount() { return sessionState.playerCount; } + [[nodiscard]] u8 currentPlayerId() { return sessionState.currentPlayerId; } + [[nodiscard]] Error getLastError(bool clear = true) { Error error = lastError; if (clear) lastError = NONE; @@ -545,21 +547,27 @@ class LinkWireless { delete linkGPIO; } - bool _hasActiveAsyncCommand() { return asyncCommand.isActive; } - bool _canSend() { return !sessionState.outgoingMessages.isFull(); } - u32 _getPendingCount() { return sessionState.outgoingMessages.size(); } - u32 _lastPacketId() { return sessionState.lastPacketId; } - u32 _lastConfirmationFromClient1() { + [[nodiscard]] bool _hasActiveAsyncCommand() { return asyncCommand.isActive; } + [[nodiscard]] bool _canSend() { + return !sessionState.outgoingMessages.isFull(); + } + [[nodiscard]] u32 _getPendingCount() { + return sessionState.outgoingMessages.size(); + } + [[nodiscard]] u32 _lastPacketId() { return sessionState.lastPacketId; } + [[nodiscard]] u32 _lastConfirmationFromClient1() { return sessionState.lastConfirmationFromClients[1]; } - u32 _lastPacketIdFromClient1() { + [[nodiscard]] u32 _lastPacketIdFromClient1() { return sessionState.lastPacketIdFromClients[1]; } - u32 _lastConfirmationFromServer() { + [[nodiscard]] u32 _lastConfirmationFromServer() { return sessionState.lastConfirmationFromServer; } - u32 _lastPacketIdFromServer() { return sessionState.lastPacketIdFromServer; } - u32 _nextPendingPacketId() { + [[nodiscard]] u32 _lastPacketIdFromServer() { + return sessionState.lastPacketIdFromServer; + } + [[nodiscard]] u32 _nextPendingPacketId() { return sessionState.outgoingMessages.isEmpty() ? 0 : sessionState.outgoingMessages.peek().packetId; @@ -824,7 +832,7 @@ class LinkWireless { }; struct MessageHeader { - unsigned int partialPacketId : LINK_WIRELESS_PACKET_ID_BITS; + unsigned int partialPacketId : PACKET_ID_BITS; unsigned int isConfirmation : 1; unsigned int playerId : 3; unsigned int clientCount : 2; @@ -893,9 +901,9 @@ class LinkWireless { void processAsyncCommand() { // (irq only) if (!asyncCommand.result.success) { - if (asyncCommand.type == LINK_WIRELESS_COMMAND_SEND_DATA) + if (asyncCommand.type == COMMAND_SEND_DATA) lastError = SEND_DATA_FAILED; - else if (asyncCommand.type == LINK_WIRELESS_COMMAND_RECEIVE_DATA) + else if (asyncCommand.type == COMMAND_RECEIVE_DATA) lastError = RECEIVE_DATA_FAILED; else lastError = COMMAND_FAILED; @@ -907,14 +915,14 @@ class LinkWireless { asyncCommand.isActive = false; switch (asyncCommand.type) { - case LINK_WIRELESS_COMMAND_ACCEPT_CONNECTIONS: { + case COMMAND_ACCEPT_CONNECTIONS: { // AcceptConnections (end) - sessionState.playerCount = - min(1 + asyncCommand.result.responsesSize, config.maxPlayers); + sessionState.playerCount = Link::_min( + 1 + asyncCommand.result.responsesSize, config.maxPlayers); break; } - case LINK_WIRELESS_COMMAND_SEND_DATA: { + case COMMAND_SEND_DATA: { // SendData (end) #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH @@ -925,13 +933,13 @@ class LinkWireless { #ifndef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH if (state == SERVING) { // ReceiveData (start) - sendCommandAsync(LINK_WIRELESS_COMMAND_RECEIVE_DATA); + sendCommandAsync(COMMAND_RECEIVE_DATA); } #endif break; } - case LINK_WIRELESS_COMMAND_RECEIVE_DATA: { + case COMMAND_RECEIVE_DATA: { // ReceiveData (end) #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH @@ -970,7 +978,7 @@ class LinkWireless { if (state == SERVING && !sessionState.acceptCalled && sessionState.playerCount < config.maxPlayers) { // AcceptConnections (start) - if (sendCommandAsync(LINK_WIRELESS_COMMAND_ACCEPT_CONNECTIONS)) + if (sendCommandAsync(COMMAND_ACCEPT_CONNECTIONS)) sessionState.acceptCalled = true; } else if (state == CONNECTED || isConnected()) { #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH @@ -983,7 +991,7 @@ class LinkWireless { if (shouldReceive) { // ReceiveData (start) - sendCommandAsync(LINK_WIRELESS_COMMAND_RECEIVE_DATA); + sendCommandAsync(COMMAND_RECEIVE_DATA); } else { // SendData (start) sendPendingData(); @@ -994,7 +1002,7 @@ class LinkWireless { void sendPendingData() { // (irq only) copyOutgoingState(); int lastPacketId = setDataFromOutgoingMessages(); - if (sendCommandAsync(LINK_WIRELESS_COMMAND_SEND_DATA, true)) + if (sendCommandAsync(COMMAND_SEND_DATA, true)) clearOutgoingMessagesIfNeeded(lastPacketId); } @@ -1047,10 +1055,10 @@ class LinkWireless { MessageHeader header = serializer.asStruct; u32 partialPacketId = header.partialPacketId; bool isConfirmation = header.isConfirmation; - u8 remotePlayerId = min(header.playerId, config.maxPlayers - 1); + u8 remotePlayerId = Link::_min(header.playerId, config.maxPlayers - 1); u8 remotePlayerCount = LINK_WIRELESS_MIN_PLAYERS + header.clientCount; u32 checksum = header.dataChecksum; - bool isPing = data == LINK_WIRELESS_MSG_PING; + bool isPing = data == MSG_PING; sessionState.timeouts[0] = 0; sessionState.timeouts[remotePlayerId] = 0; @@ -1082,7 +1090,7 @@ class LinkWireless { if (state == SERVING) { u32 expectedPacketId = (sessionState.lastPacketIdFromClients[message.playerId] + 1) % - LINK_WIRELESS_MAX_PACKET_IDS; + MAX_PACKET_IDS; if (config.retransmission && !isConfirmation && message.packetId != expectedPacketId) @@ -1092,8 +1100,8 @@ class LinkWireless { message.packetId = ++sessionState.lastPacketIdFromClients[message.playerId]; } else { - u32 expectedPacketId = (sessionState.lastPacketIdFromServer + 1) % - LINK_WIRELESS_MAX_PACKET_IDS; + u32 expectedPacketId = + (sessionState.lastPacketIdFromServer + 1) % MAX_PACKET_IDS; if (config.retransmission && !isConfirmation && message.packetId != expectedPacketId) @@ -1121,7 +1129,7 @@ class LinkWireless { Message pingMessage; pingMessage.packetId = newPacketId(); pingMessage.playerId = sessionState.currentPlayerId; - pingMessage.data = LINK_WIRELESS_MSG_PING; + pingMessage.data = MSG_PING; sessionState.outgoingMessages.push(pingMessage); sessionState.pingSent = true; } @@ -1205,7 +1213,7 @@ class LinkWireless { // confirmation messages "repurpose" some message header fields: // packetId => high 6 bits of confirmation // data => low 16 bits of confirmation - u8 highPart = (confirmationData >> 16) & LINK_WIRELESS_PACKET_ID_MASK; + u8 highPart = (confirmationData >> 16) & PACKET_ID_MASK; u16 lowPart = confirmationData & 0xffff; return buildMessageHeader(playerId, highPart, buildChecksum(lowPart), true); } @@ -1215,7 +1223,7 @@ class LinkWireless { u8 dataChecksum, bool isConfirmation = false) { // (irq only) MessageHeader header; - header.partialPacketId = packetId % LINK_WIRELESS_MAX_PACKET_IDS; + header.partialPacketId = packetId % MAX_PACKET_IDS; header.isConfirmation = isConfirmation; header.playerId = playerId; header.clientCount = sessionState.playerCount - LINK_WIRELESS_MIN_PLAYERS; @@ -1288,14 +1296,14 @@ class LinkWireless { } void startACKTimer() { - REG_TM[config.asyncACKTimerId].start = -1; - REG_TM[config.asyncACKTimerId].cnt = - TM_ENABLE | TM_IRQ | LINK_WIRELESS_BASE_FREQUENCY; + Link::_REG_TM[config.asyncACKTimerId].start = -1; + Link::_REG_TM[config.asyncACKTimerId].cnt = + Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } void stopACKTimer() { - REG_TM[config.asyncACKTimerId].cnt = - REG_TM[config.asyncACKTimerId].cnt & (~TM_ENABLE); + Link::_REG_TM[config.asyncACKTimerId].cnt = + Link::_REG_TM[config.asyncACKTimerId].cnt & (~Link::_TM_ENABLE); } void copyName(char* target, const char* source, u32 length) { @@ -1389,9 +1397,9 @@ class LinkWireless { if (!login()) return false; - wait(LINK_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); - if (!sendCommand(LINK_WIRELESS_COMMAND_HELLO).success) + if (!sendCommand(COMMAND_HELLO).success) return false; if (!setup()) @@ -1404,33 +1412,32 @@ class LinkWireless { } void stopTimer() { - REG_TM[config.sendTimerId].cnt = - REG_TM[config.sendTimerId].cnt & (~TM_ENABLE); + Link::_REG_TM[config.sendTimerId].cnt = + Link::_REG_TM[config.sendTimerId].cnt & (~Link::_TM_ENABLE); } void startTimer() { - REG_TM[config.sendTimerId].start = -config.interval; - REG_TM[config.sendTimerId].cnt = - TM_ENABLE | TM_IRQ | LINK_WIRELESS_BASE_FREQUENCY; + Link::_REG_TM[config.sendTimerId].start = -config.interval; + Link::_REG_TM[config.sendTimerId].cnt = + Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } void pingAdapter() { linkGPIO->setMode(LinkGPIO::Pin::SO, LinkGPIO::Direction::OUTPUT); linkGPIO->setMode(LinkGPIO::Pin::SD, LinkGPIO::Direction::OUTPUT); linkGPIO->writePin(LinkGPIO::SD, true); - wait(LINK_WIRELESS_PING_WAIT); + wait(PING_WAIT); linkGPIO->writePin(LinkGPIO::SD, false); } bool login() { LoginMemory memory; - if (!exchangeLoginPacket(LINK_WIRELESS_LOGIN_PARTS[0], 0, memory)) + if (!exchangeLoginPacket(LOGIN_PARTS[0], 0, memory)) return false; - for (u32 i = 0; i < LINK_WIRELESS_LOGIN_STEPS; i++) { - if (!exchangeLoginPacket(LINK_WIRELESS_LOGIN_PARTS[i], - LINK_WIRELESS_LOGIN_PARTS[i], memory)) + for (u32 i = 0; i < LOGIN_STEPS; i++) { + if (!exchangeLoginPacket(LOGIN_PARTS[i], LOGIN_PARTS[i], memory)) return false; } @@ -1454,11 +1461,10 @@ class LinkWireless { } bool setup(u8 maxPlayers = LINK_WIRELESS_MAX_PLAYERS) { - addData(LINK_WIRELESS_SETUP_MAGIC | - (((LINK_WIRELESS_MAX_PLAYERS - maxPlayers) & 0b11) - << LINK_WIRELESS_SETUP_MAX_PLAYERS_BIT), + addData(SETUP_MAGIC | (((LINK_WIRELESS_MAX_PLAYERS - maxPlayers) & 0b11) + << SETUP_MAX_PLAYERS_BIT), true); - return sendCommand(LINK_WIRELESS_COMMAND_SETUP, true).success; + return sendCommand(COMMAND_SETUP, true).success; } CommandResult sendCommand(u8 type, bool withData = false) { @@ -1469,35 +1475,34 @@ class LinkWireless { isSendingSyncCommand = true; LINK_WIRELESS_BARRIER; - if (transfer(command) != LINK_WIRELESS_DATA_REQUEST) { + if (transfer(command) != DATA_REQUEST_VALUE) { isSendingSyncCommand = false; return result; } if (withData) { for (u32 i = 0; i < nextCommandDataSize; i++) { - if (transfer(nextCommandData[i]) != LINK_WIRELESS_DATA_REQUEST) { + if (transfer(nextCommandData[i]) != DATA_REQUEST_VALUE) { isSendingSyncCommand = false; return result; } } } - u32 response = transfer(LINK_WIRELESS_DATA_REQUEST); + u32 response = transfer(DATA_REQUEST_VALUE); u16 header = msB32(response); u16 data = lsB32(response); u8 responses = msB16(data); u8 ack = lsB16(data); - if (header != LINK_WIRELESS_COMMAND_HEADER || - ack != type + LINK_WIRELESS_RESPONSE_ACK || + if (header != COMMAND_HEADER_VALUE || ack != type + RESPONSE_ACK_VALUE || responses > LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH) { isSendingSyncCommand = false; return result; } for (u32 i = 0; i < responses; i++) - result.responses[i] = transfer(LINK_WIRELESS_DATA_REQUEST); + result.responses[i] = transfer(DATA_REQUEST_VALUE); result.responsesSize = responses; result.success = true; @@ -1538,7 +1543,7 @@ class LinkWireless { void updateAsyncCommand(u32 newData) { // (irq only) switch (asyncCommand.step) { case AsyncCommand::Step::COMMAND_HEADER: { - if (newData != LINK_WIRELESS_DATA_REQUEST) { + if (newData != DATA_REQUEST_VALUE) { asyncCommand.state = AsyncCommand::State::COMPLETED; return; } @@ -1547,7 +1552,7 @@ class LinkWireless { break; } case AsyncCommand::Step::COMMAND_PARAMETERS: { - if (newData != LINK_WIRELESS_DATA_REQUEST) { + if (newData != DATA_REQUEST_VALUE) { asyncCommand.state = AsyncCommand::State::COMPLETED; return; } @@ -1561,8 +1566,8 @@ class LinkWireless { u8 responses = msB16(data); u8 ack = lsB16(data); - if (header != LINK_WIRELESS_COMMAND_HEADER || - ack != asyncCommand.type + LINK_WIRELESS_RESPONSE_ACK || + if (header != COMMAND_HEADER_VALUE || + ack != asyncCommand.type + RESPONSE_ACK_VALUE || responses > LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH) { asyncCommand.state = AsyncCommand::State::COMPLETED; return; @@ -1591,14 +1596,14 @@ class LinkWireless { asyncCommand.sentParameters++; } else { asyncCommand.step = AsyncCommand::Step::RESPONSE_REQUEST; - transferAsync(LINK_WIRELESS_DATA_REQUEST); + transferAsync(DATA_REQUEST_VALUE); } } void receiveAsyncCommandResponseOrFinish() { // (irq only) if (asyncCommand.receivedResponses < asyncCommand.totalResponses) { asyncCommand.step = AsyncCommand::Step::DATA_REQUEST; - transferAsync(LINK_WIRELESS_DATA_REQUEST); + transferAsync(DATA_REQUEST_VALUE); } else { asyncCommand.result.success = true; asyncCommand.state = AsyncCommand::State::COMPLETED; @@ -1606,7 +1611,7 @@ class LinkWireless { } u32 buildCommand(u8 type, u8 length = 0) { - return buildU32(LINK_WIRELESS_COMMAND_HEADER, buildU16(length, type)); + return buildU32(COMMAND_HEADER_VALUE, buildU16(length, type)); } void transferAsync(u32 data) { @@ -1615,10 +1620,10 @@ class LinkWireless { u32 transfer(u32 data, bool customAck = true) { if (!customAck) - wait(LINK_WIRELESS_TRANSFER_WAIT); + wait(TRANSFER_WAIT); u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; u32 receivedData = linkSPI->transfer( data, [this, &lines, &vCount]() { return cmdTimeout(lines, vCount); }, false, customAck); @@ -1631,7 +1636,7 @@ class LinkWireless { bool acknowledge() { u32 lines = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; linkSPI->_setSOLow(); while (!linkSPI->_isSIHigh()) @@ -1649,13 +1654,13 @@ class LinkWireless { bool usesAsyncACK() { return config.asyncACKTimerId > -1; } bool cmdTimeout(u32& lines, u32& vCount) { - return timeout(LINK_WIRELESS_CMD_TIMEOUT, lines, vCount); + return timeout(CMD_TIMEOUT, lines, vCount); } bool timeout(u32 limit, u32& lines, u32& vCount) { - if (REG_VCOUNT != vCount) { - lines += max((int)REG_VCOUNT - (int)vCount, 0); - vCount = REG_VCOUNT; + if (Link::_REG_VCOUNT != vCount) { + lines += Link::_max((int)Link::_REG_VCOUNT - (int)vCount, 0); + vCount = Link::_REG_VCOUNT; } return lines > limit; @@ -1663,12 +1668,12 @@ class LinkWireless { void wait(u32 verticalLines) { u32 count = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; while (count < verticalLines) { - if (REG_VCOUNT != vCount) { + if (Link::_REG_VCOUNT != vCount) { count++; - vCount = REG_VCOUNT; + vCount = Link::_REG_VCOUNT; } }; } @@ -1676,11 +1681,11 @@ class LinkWireless { template void waitVBlanks(u32 vBlanks, F onVBlank) { u32 count = 0; - u32 vCount = REG_VCOUNT; + u32 vCount = Link::_REG_VCOUNT; while (count < vBlanks) { - if (REG_VCOUNT != vCount) { - vCount = REG_VCOUNT; + if (Link::_REG_VCOUNT != vCount) { + vCount = Link::_REG_VCOUNT; if (vCount == 160) { onVBlank(); @@ -1699,21 +1704,21 @@ class LinkWireless { #ifdef PROFILING_ENABLED void profileStart() { - REG_TM1CNT_L = 0; - REG_TM2CNT_L = 0; + Link::_REG_TM1CNT_L = 0; + Link::_REG_TM2CNT_L = 0; - REG_TM1CNT_H = 0; - REG_TM2CNT_H = 0; + Link::_REG_TM1CNT_H = 0; + Link::_REG_TM2CNT_H = 0; - REG_TM2CNT_H = TM_ENABLE | TM_CASCADE; - REG_TM1CNT_H = TM_ENABLE | TM_FREQ_1; + Link::_REG_TM2CNT_H = Link::_TM_ENABLE | Link::_TM_CASCADE; + Link::_REG_TM1CNT_H = Link::_TM_ENABLE | Link::_TM_FREQ_1; } u32 profileStop() { - REG_TM1CNT_H = 0; - REG_TM2CNT_H = 0; + Link::_REG_TM1CNT_H = 0; + Link::_REG_TM2CNT_H = 0; - return (REG_TM1CNT_L | (REG_TM2CNT_L << 16)); + return (Link::_REG_TM1CNT_L | (Link::_REG_TM2CNT_L << 16)); } public: diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index e22b0a2..680b745 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -15,6 +15,7 @@ using u8 = unsigned char; using vs32 = volatile signed int; using vu32 = volatile unsigned int; using s16 = signed short; +using s8 = signed char; // Structs From 184419f7de35375d3dc53ed8395e64c5ff493d15 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 07:30:48 -0300 Subject: [PATCH 045/195] Improving documentation --- README.md | 11 +++++++---- lib/LinkCable.hpp | 2 +- lib/LinkWirelessOpenSDK.hpp | 10 ++++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8f37432..493d1a7 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ You can also change these compile-time constants: - `LINK_CABLE_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max **per player**). The default value is `15`, which seems fine for most games. - This affects how much memory is allocated. With the default value, it's `390` bytes. There's a double-buffered pending queue (to avoid data races), `1` incoming queue and `1` outgoing queue. - You can calculate the memory usage with: - - `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` + - `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` <=> `LINK_CABLE_QUEUE_SIZE * 26` ## Methods @@ -156,7 +156,7 @@ Name | Type | Default | Description --- | --- | --- | --- `forwarding` | **bool** | `true` | If `true`, the server forwards all messages to the clients. Otherwise, clients only see messages sent from the server (ignoring other peers). `retransmission` | **bool** | `true` | If `true`, the library handles retransmission for you, so there should be no packet loss. -`maxPlayers` | **u8** *(2~5)* | `5` | Maximum number of allowed players. The adapter will accept connections after reaching the limit, but the library will ignore them. If your game only supports -for example- two players, set this to `2` as it will make transfers faster. +`maxPlayers` | **u8** *(2~5)* | `5` | Maximum number of allowed players. If your game only supports -for example- two players, set this to `2` as it will make transfers faster. `timeout` | **u32** | `10` | Number of *frames* without receiving *any* data to reset the connection. `remoteTimeout` | **u32** | `10` | Number of *successful transfers* without a message from a client to mark the player as disconnected. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. @@ -170,10 +170,13 @@ You can update these values at any time without creating a new instance: You can also change these compile-time constants: - `LINK_WIRELESS_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max). The default value is `30`, which seems fine for most games. + - This affects how much memory is allocated. With the default value, it's `960` bytes. There's a double-buffered incoming queue and a double-buffered outgoing queue (to avoid data races). + - You can calculate the memory usage with: + - `LINK_WIRELESS_QUEUE_SIZE * sizeof(Message) * 4` <=> `LINK_WIRELESS_QUEUE_SIZE * 32` - `LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH` and `LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH`: to set the biggest allowed transfer per timer tick. Transfers contain retransmission headers and multiple user messages. These values must be in the range `[6;20]` for servers and `[2;4]` for clients. The default values are `20` and `4`, but you might want to set them a bit lower to reduce CPU usage. - `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. - If you enable this, make sure that `LinkWireless.cpp` gets compiled! For example, in a Makefile-based project, verify that the file is in your `SRCDIRS` list. -- `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce some latency but reduce overall CPU usage. +- `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce some latency but also reduce overall CPU usage. ## Methods @@ -187,7 +190,7 @@ Name | Return type | Description `isActive()` | **bool** | Returns whether the library is active or not. `activate()` | **bool** | Activates the library. When an adapter is connected, it changes the state to `AUTHENTICATED`. It can also be used to disconnect or reset the adapter. `deactivate()` | **bool** | Puts the adapter into a low consumption mode and then deactivates the library. It returns a boolean indicating whether the transition to low consumption mode was successful. -`serve([gameName], [userName], [gameId])` | **bool** | Starts broadcasting a server and changes the state to `SERVING`. You can, optionally, provide a `gameName` (max `14` characters), a `userName` (max `8` characters), and a `gameId` *(0 ~ 0x7FFF)* that games will be able to read. The strings must be null-terminated character arrays. If the adapter is already serving, this method only updates the broadcast data. +`serve([gameName], [userName], [gameId])` | **bool** | Starts broadcasting a server and changes the state to `SERVING`. You can, optionally, provide a `gameName` (max `14` characters), a `userName` (max `8` characters), and a `gameId` *(0 ~ 0x7FFF)* that games will be able to read. The strings must be null-terminated character arrays. If the adapter is already serving, this method only updates the broadcast data. Updating broadcast data while serving can fail if the adapter is busy. In that case, this will return `false` and `getLastError()` will be `BUSY_TRY_AGAIN`. `getServers(servers, [onWait])` | **bool** | Fills the `servers` array with all the currently broadcasting servers. This action takes 1 second to complete, but you can optionally provide an `onWait()` function which will be invoked each time VBlank starts. `getServersAsyncStart()` | **bool** | Starts looking for broadcasting servers and changes the state to `SEARCHING`. After this, call `getServersAsyncEnd(...)` 1 second later. `getServersAsyncEnd(servers)` | **bool** | Fills the `servers` array with all the currently broadcasting servers. Changes the state to `AUTHENTICATED` again. diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 2329df2..68de756 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -51,7 +51,7 @@ * \warning This affects how much memory is allocated. With the default value, * it's `390` bytes. There's a double-buffered pending queue (to avoid data * races), 1 incoming queue and 1 outgoing queue. - * \warning You can calculate the memory usage with `LINK_CABLE_QUEUE_SIZE * 26` + * \warning You can calculate the usage with `LINK_CABLE_QUEUE_SIZE * 26`. */ #define LINK_CABLE_QUEUE_SIZE 15 diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index bb45b54..d118351 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -230,10 +230,9 @@ class LinkWirelessOpenSDK { * @param fullPayloadSize Total size of the payload. * @param sequence A sequence number created using * `LinkWirelessOpenSDK::SequenceNumber::fromPacketId(...)`. - * @param targetSlots `(Optional)` A bit array that can be used to exclude - * some clients (the default is `0b1111`). - * @param offset `(Optional)` The offset within the `fullPayload` pointer. - * Defaults to `0`. + * @param targetSlots A bit array that can be used to exclude some clients + * (the default is `0b1111`). + * @param offset The offset within the `fullPayload` pointer. Defaults to `0`. */ [[nodiscard]] SendBuffer createServerBuffer(const u8* fullPayload, @@ -303,8 +302,7 @@ class LinkWirelessOpenSDK { * @param fullPayloadSize Total size of the payload. * @param sequence A sequence number created using * `LinkWirelessOpenSDK::SequenceNumber::fromPacketId(...)`. - * @param offset `(Optional)` The offset within the `fullPayload` pointer. - * Defaults to `0`. + * @param offset The offset within the `fullPayload` pointer. Defaults to `0`. */ [[nodiscard]] SendBuffer createClientBuffer(const u8* fullPayload, From 514c02ccf0cc82185148aff0c5e7b5404cab24bc Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 07:49:03 -0300 Subject: [PATCH 046/195] Adding Doxygen-style docs for IDE autocompletion in LinkWireless --- README.md | 6 +- lib/LinkRawWireless.hpp | 4 +- lib/LinkWireless.hpp | 229 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 228 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 493d1a7..317c6d5 100644 --- a/README.md +++ b/README.md @@ -195,12 +195,12 @@ Name | Return type | Description `getServersAsyncStart()` | **bool** | Starts looking for broadcasting servers and changes the state to `SEARCHING`. After this, call `getServersAsyncEnd(...)` 1 second later. `getServersAsyncEnd(servers)` | **bool** | Fills the `servers` array with all the currently broadcasting servers. Changes the state to `AUTHENTICATED` again. `connect(serverId)` | **bool** | Starts a connection with `serverId` and changes the state to `CONNECTING`. -`keepConnecting()` | **bool** | When connecting, this needs to be called until the state is `CONNECTED`. It assigns a player ID. Keep in mind that `isConnected()` and `playerCount()` won't be updated until the first message from server arrives. +`keepConnecting()` | **bool** | When connecting, this needs to be called until the state is `CONNECTED`. It assigns a player ID. Keep in mind that `isConnected()` and `playerCount()` won't be updated until the first message from the server arrives. `send(data)` | **bool** | Enqueues `data` to be sent to other nodes. `receive(messages)` | **bool** | Fills the `messages` array with incoming messages, forwarding if needed. `getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). -`isConnected()` | **bool** | Returns true if the player count is higher than 1. -`isSessionActive()` | **bool** | Returns true if the state is `SERVING` or `CONNECTED`. +`isConnected()` | **bool** | Returns `true` if the player count is higher than `1`. +`isSessionActive()` | **bool** | Returns `true` if the state is `SERVING` or `CONNECTED`. `playerCount()` | **u8** *(1~5)* | Returns the number of connected players. `currentPlayerId()` | **u8** *(0~4)* | Returns the current player ID. `getLastError([clear])` | **LinkWireless::Error** | If one of the other methods returns `false`, you can inspect this to know the cause. After this call, the last error is cleared if `clear` is `true` (default behavior). diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index f41637d..5705a74 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -789,12 +789,12 @@ class LinkRawWireless { [[nodiscard]] State getState() { return state; } /** - * @brief Returns true if the player count is higher than 1. + * @brief Returns `true` if the player count is higher than `1`. */ [[nodiscard]] bool isConnected() { return sessionState.playerCount > 1; } /** - * @brief Returns true if the state is `SERVING` or `CONNECTED`. + * @brief Returns `true` if the state is `SERVING` or `CONNECTED`. */ [[nodiscard]] bool isSessionActive() { return state == SERVING || state == CONNECTED; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index abfc759..02503e0 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -63,19 +63,43 @@ // #include // #include -// Buffer size +/** + * @brief Buffer size (how many incoming and outgoing messages the queues can + * store at max). The default value is `30`, which seems fine for most games. + * \warning This affects how much memory is allocated. With the default value, + * it's `960` bytes. There's a double-buffered incoming queue and a + * double-buffered outgoing queue (to avoid data races). + * \warning You can calculate the usage with `LINK_WIRELESS_QUEUE_SIZE * 32`. + */ #define LINK_WIRELESS_QUEUE_SIZE 30 -// Max server transfer length +/** + * @brief Max server transfer length per timer tick. Must be in the range + * `[6;20]`. The default value is `20`, but you might want to set it a bit lower + * to reduce CPU usage. + */ #define LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH 20 -// Max client transfer length +/** + * @brief Max client transfer length per timer tick. Must be in the range + * `[2;4]`. The default value is `4`. Changing this is not recommended, it's + * already too low. + */ #define LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH 4 -// Put Interrupt Service Routines (ISR) in IWRAM (uncomment to enable) +/** + * @brief Put Interrupt Service Routines (ISR) in IWRAM (uncomment to enable). + * This can significantly improve performance due to its faster access, but it's + * disabled by default to conserve IWRAM space, which is limited. + */ // #define LINK_WIRELESS_PUT_ISR_IN_IWRAM -// Use send/receive latch (uncomment to enable) +/** + * @brief Use send/receive latch (uncomment to enable). + * This makes it alternate between sends and receives on each timer tick + * (instead of doing both things). Enabling it will introduce some latency but + * also reduce overall CPU usage. + */ // #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; @@ -108,6 +132,9 @@ static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; if (!reset()) \ return false; +/** + * @brief A high level driver for the GBA Wireless Adapter. + */ class LinkWireless { private: using u32 = unsigned int; @@ -213,6 +240,27 @@ class LinkWireless { bool isFull() { return currentPlayerCount == 0; } }; + /** + * @brief Constructs a new LinkWireless object. + * @param forwarding If `true`, the server forwards all messages to the + * clients. Otherwise, clients only see messages sent from the server + * (ignoring other peers). + * @param retransmission If `true`, the library handles retransmission for + * you, so there should be no packet loss. + * @param maxPlayers Maximum number of allowed players. If your game only + * supports -for example- two players, set this to `2` as it will make + * transfers faster. + * @param timeout Number of *frames* without receiving *any* data to reset the + * connection. + * @param remoteTimeout Number of *successful transfers* without a message + * from a client to mark the player as disconnected. + * @param interval Number of *1024-cycle ticks* (61.04μs) between transfers + * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values + * will transfer faster but also consume more CPU. + * @param sendTimerId GBA Timer to use for sending. + * @param asyncACKTimerId GBA Timer to use for ACKs. If you have free timers, + * use one here to reduce CPU usage. + */ explicit LinkWireless( bool forwarding = true, bool retransmission = true, @@ -232,8 +280,16 @@ class LinkWireless { this->config.asyncACKTimerId = asyncACKTimerId; } + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library. When an adapter is connected, it changes the + * state to `AUTHENTICATED`. It can also be used to disconnect or reset the + * adapter. + */ bool activate() { lastError = NONE; isEnabled = false; @@ -246,6 +302,11 @@ class LinkWireless { return success; } + /** + * @brief Puts the adapter into a low consumption mode and then deactivates + * the library. It returns a boolean indicating whether the transition to low + * consumption mode was successful. + */ bool deactivate() { activate(); bool success = sendCommand(COMMAND_BYE).success; @@ -258,6 +319,17 @@ class LinkWireless { return success; } + /** + * @brief Starts broadcasting a server and changes the state to `SERVING`. You + * can optionally provide data that games will be able to read. If the adapter + * is already serving, this method only updates the broadcast data. + * @param gameName Game name. Maximum `14` characters + NULL terminator. + * @param userName User name. Maximum `8` characters + NULL terminator. + * @param gameId `(0 ~ 0x7FFF)` Game ID. + * \warning Updating broadcast data while serving can fail if the adapter is + * busy. In that case, this will return `false` and `getLastError()` will be + * `BUSY_TRY_AGAIN`. + */ bool serve(const char* gameName = "", const char* userName = "", u16 gameId = MAX_GAME_ID) { @@ -319,10 +391,25 @@ class LinkWireless { return true; } + /** + * @brief Fills the `servers` array with all the currently broadcasting + * servers. + * @param servers The array to be filled with data. + * \warning This action takes 1 second to complete. + * \warning For an async version, see `getServersAsyncStart()`. + */ bool getServers(Server servers[]) { return getServers(servers, []() {}); } + /** + * @brief Fills the `servers` array with all the currently broadcasting + * servers. + * @param servers The array to be filled with data. + * @param onWait A function which will be invoked each time VBlank starts. + * \warning This action takes 1 second to complete. + * \warning For an async version, see `getServersAsyncStart()`. + */ template bool getServers(Server servers[], F onWait) { if (!getServersAsyncStart()) @@ -336,6 +423,10 @@ class LinkWireless { return true; } + /** + * @brief Starts looking for broadcasting servers and changes the state to + * `SEARCHING`. After this, call `getServersAsyncEnd(...)` 1 second later. + */ bool getServersAsyncStart() { LINK_WIRELESS_RESET_IF_NEEDED if (state != AUTHENTICATED) { @@ -356,6 +447,11 @@ class LinkWireless { return true; } + /** + * @brief Fills the `servers` array with all the currently broadcasting + * servers. Changes the state to `AUTHENTICATED` again. + * @param servers The array to be filled with data. + */ bool getServersAsyncEnd(Server servers[]) { LINK_WIRELESS_RESET_IF_NEEDED if (state != SEARCHING) { @@ -412,6 +508,11 @@ class LinkWireless { return true; } + /** + * @brief Starts a connection with `serverId` and changes the state to + * `CONNECTING`. + * @param serverId Device ID of the server. + */ bool connect(u16 serverId) { LINK_WIRELESS_RESET_IF_NEEDED if (state != AUTHENTICATED) { @@ -433,6 +534,12 @@ class LinkWireless { return true; } + /** + * @brief When connecting, this needs to be called until the state is + * `CONNECTED`. It assigns a player ID. Keep in mind that `isConnected()` and + * `playerCount()` won't be updated until the first message from the server + * arrives. + */ bool keepConnecting() { LINK_WIRELESS_RESET_IF_NEEDED if (state != CONNECTING) { @@ -470,6 +577,10 @@ class LinkWireless { return true; } + /** + * @brief Enqueues `data` to be sent to other nodes. + * @param data The value to be sent. + */ bool send(u16 data, int _author = -1) { LINK_WIRELESS_RESET_IF_NEEDED if (!isSessionActive()) { @@ -505,6 +616,11 @@ class LinkWireless { return true; } + /** + * @brief Fills the `messages` array with incoming messages, forwarding if + * needed. + * @param messages The array to be filled with data. + */ bool receive(Message messages[]) { if (!isEnabled || state == NEEDS_RESET || !isSessionActive()) return false; @@ -528,14 +644,43 @@ class LinkWireless { return true; } + /** + * @brief Returns the current state (one of + * `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, + * `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, + * `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). + */ [[nodiscard]] State getState() { return state; } + + /** + * @brief Returns `true` if the player count is higher than `1`. + */ [[nodiscard]] bool isConnected() { return sessionState.playerCount > 1; } + + /** + * @brief Returns `true` if the state is `SERVING` or `CONNECTED`. + */ [[nodiscard]] bool isSessionActive() { return state == SERVING || state == CONNECTED; } + + /** + * @brief Returns the number of connected players. + */ [[nodiscard]] u8 playerCount() { return sessionState.playerCount; } + + /** + * @brief Returns the current player ID. + */ [[nodiscard]] u8 currentPlayerId() { return sessionState.currentPlayerId; } - [[nodiscard]] Error getLastError(bool clear = true) { + + /** + * @brief If one of the other methods returns `false`, you can inspect this to + * know the cause. After this call, the last error is cleared if `clear` is + * `true` (default behavior). + * @param clear Whether it should clear the error or not. + */ + Error getLastError(bool clear = true) { Error error = lastError; if (clear) lastError = NONE; @@ -547,32 +692,80 @@ class LinkWireless { delete linkGPIO; } + /** + * @brief Returns whether it's running an async command or not. + * \warning This is internal API! + */ [[nodiscard]] bool _hasActiveAsyncCommand() { return asyncCommand.isActive; } + + /** + * @brief Returns whether there's room for new outgoing messages or not. + * \warning This is internal API! + */ [[nodiscard]] bool _canSend() { return !sessionState.outgoingMessages.isFull(); } + + /** + * @brief Returns the number of pending outgoing messages. + * \warning This is internal API! + */ [[nodiscard]] u32 _getPendingCount() { return sessionState.outgoingMessages.size(); } + + /** + * @brief Returns the last packet ID. + * \warning This is internal API! + */ [[nodiscard]] u32 _lastPacketId() { return sessionState.lastPacketId; } + + /** + * @brief Returns the last confirmation received from player ID 1. + * \warning This is internal API! + */ [[nodiscard]] u32 _lastConfirmationFromClient1() { return sessionState.lastConfirmationFromClients[1]; } + + /** + * @brief Returns the last packet ID received from player ID 1. + * \warning This is internal API! + */ [[nodiscard]] u32 _lastPacketIdFromClient1() { return sessionState.lastPacketIdFromClients[1]; } + + /** + * @brief Returns the last confirmation received from the server. + * \warning This is internal API! + */ [[nodiscard]] u32 _lastConfirmationFromServer() { return sessionState.lastConfirmationFromServer; } + + /** + * @brief Returns the last packet ID received from the server. + * \warning This is internal API! + */ [[nodiscard]] u32 _lastPacketIdFromServer() { return sessionState.lastPacketIdFromServer; } + + /** + * @brief Returns the next pending packet ID. + * \warning This is internal API! + */ [[nodiscard]] u32 _nextPendingPacketId() { return sessionState.outgoingMessages.isEmpty() ? 0 : sessionState.outgoingMessages.peek().packetId; } + /** + * @brief This method is called by the VBLANK interrupt handler. + * \warning This is internal API! + */ void _onVBlank() { if (!isEnabled) return; @@ -625,6 +818,10 @@ class LinkWireless { void _onACKTimer() { __onACKTimer(); } #endif + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ LINK_WIRELESS_ALWAYS_INLINE void __onSerial() { if (!isEnabled) return; @@ -679,6 +876,10 @@ class LinkWireless { #endif } + /** + * @brief This method is called by the TIMER interrupt handler. + * \warning This is internal API! + */ LINK_WIRELESS_ALWAYS_INLINE void __onTimer() { if (!isEnabled) return; @@ -699,6 +900,10 @@ class LinkWireless { #endif } + /** + * @brief This method is called by the other TIMER interrupt handler. + * \warning This is internal API! + */ LINK_WIRELESS_ALWAYS_INLINE void __onACKTimer() { if (!isEnabled || !asyncCommand.isActive || asyncCommand.ackStep == AsyncCommand::ACKStep::READY) @@ -1732,18 +1937,30 @@ class LinkWireless { extern LinkWireless* linkWireless; +/** + * @brief VBLANK interrupt handler. + */ inline void LINK_WIRELESS_ISR_VBLANK() { linkWireless->_onVBlank(); } +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_WIRELESS_ISR_SERIAL() { linkWireless->_onSerial(); } +/** + * @brief TIMER interrupt handler used for sending. + */ inline void LINK_WIRELESS_ISR_TIMER() { linkWireless->_onTimer(); } +/** + * @brief TIMER interrupt handler used for ACKs. + */ inline void LINK_WIRELESS_ISR_ACK_TIMER() { linkWireless->_onACKTimer(); } From fc3e9641e41e8c510995f1ca75a55a74ceae75a0 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 08:21:09 -0300 Subject: [PATCH 047/195] Dropping tonc dependency in LinkUniversal --- README.md | 1 + examples/LinkCableMultiboot_demo/src/main.cpp | 5 +- examples/LinkCable_stress/src/main.cpp | 3 +- examples/LinkUniversal_basic/src/main.cpp | 23 +-- .../src/scenes/MultibootScene.cpp | 2 +- examples/LinkWireless_demo/src/main.cpp | 10 +- lib/LinkUniversal.hpp | 141 ++++++++++-------- lib/LinkWireless.hpp | 30 ++-- lib/_link_common.hpp | 16 +- 9 files changed, 132 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 317c6d5..a79cd84 100644 --- a/README.md +++ b/README.md @@ -265,6 +265,7 @@ Name | Type | Default | Description `gameName` | **const char\*** | `""` | The game name that will be broadcasted in wireless sessions (max `14` characters). The string must be a null-terminated character array. The library uses this to only connect to servers from the same game. `cableOptions` | **LinkUniversal::CableOptions** | *same as LinkCable* | All the [👾 LinkCable](#-LinkCable) constructor parameters in one *struct*. `wirelessOptions` | **LinkUniversal::WirelessOptions** | *same as LinkWireless* | All the [📻 LinkWireless](#-LinkWireless) constructor parameters in one *struct*. +`randomSeed` | **int** | `123` | Random seed used for waits to prevent livelocks. If you use _libtonc_, pass `__qran_seed`. You can also change these compile-time constants: - `LINK_UNIVERSAL_MAX_PLAYERS`: to set a maximum number of players. The default value is `5`, but since LinkCable's limit is `4`, you might want to decrease it. diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 80cb73e..86cfc2c 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -49,8 +49,9 @@ int main() { // Sender options if (isSenderMode) { if (result != LinkCableMultiboot::Result::SUCCESS) - log("LinkCableMultiboot_demo\n (v7.0.0)\n\nPress START to send the " - "ROM...\nPress B to set client mode..."); + log("LinkCableMultiboot_demo\n (v7.0.0)\n\n" + "Press START to send the ROM...\n" + "Press B to set client mode..."); if (keys & KEY_START) { log("Sending... (SELECT to cancel)"); diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 861cc21..96fed59 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -52,7 +52,8 @@ LinkUniversal* linkUniversal = .remoteTimeout = LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, .interval = LINK_WIRELESS_DEFAULT_INTERVAL, .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - .asyncACKTimerId = 0}); + .asyncACKTimerId = 0}, + __qran_seed); LinkUniversal* linkConnection = linkUniversal; #endif diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index e939c85..37c9740 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -1,13 +1,13 @@ -#include -#include -#include "../../_lib/interrupt.h" - // BASIC: // This example sends the pressed buttons to other players. // (0) Include the header #include "../../../lib/LinkUniversal.hpp" +#include +#include +#include "../../_lib/interrupt.h" + void log(std::string text); void waitFor(u16 key); @@ -21,11 +21,13 @@ void init() { int main() { init(); - log("LinkUniversal_basic (v7.0.0)\n\n\nPress A to start\n\n\nhold LEFT on " - "start:\n -> force cable\n\nhold RIGHT on start:\n -> force " - "wireless\n\nhold UP on start:\n -> force wireless server\n\nhold DOWN " - "on start:\n -> force wireless client\n\nhold B on start:\n -> set 2 " - "players (wireless)"); + log("LinkUniversal_basic (v7.0.0)\n\n\n" + "Press A to start\n\n\n" + "hold LEFT on start:\n -> force cable\n\n" + "hold RIGHT on start:\n -> force wireless\n\n" + "hold UP on start:\n -> force wireless server\n\n" + "hold DOWN on start:\n -> force wireless client\n\n" + "hold B on start:\n -> set 2 players (wireless)"); waitFor(KEY_A); u16 initialKeys = ~REG_KEYS & KEY_ANY; bool forceCable = initialKeys & KEY_LEFT; @@ -56,7 +58,8 @@ int main() { .remoteTimeout = LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, .interval = LINK_WIRELESS_DEFAULT_INTERVAL, .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - .asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}); + .asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, + __qran_seed); // (2) Add the required interrupt service routines interrupt_init(); diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index 53236e7..300f374 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -150,7 +150,7 @@ void MultibootScene::load() { log("B: toggle players"); log("UP/DOWN: scroll up/down"); log("L/R: scroll page up/down"); - log("UP+L/DOWN+R: scroll to top/bottom"); + log("UP+L/DOWN+R: scroll top/bottom"); log("SELECT: clear"); log("---"); log(""); diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 3971e44..573a386 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -47,10 +47,12 @@ int main() { start: // Options - log("LinkWireless_demo (v7.0.0)\n\n\n\nPress A to start\n\n\n\n\nhold LEFT " - "on start:\n -> disable forwarding\n\nhold UP on start:\n -> disable " - "retransmission\n\nhold B on start:\n -> set 2 players\n\nhold START on " - "start:\n -> async ACK"); + log("LinkWireless_demo (v7.0.0)\n\n\n\n" + "Press A to start\n\n\n\n\n" + "hold LEFT on start:\n -> disable forwarding\n\n" + "hold UP on start:\n -> disable retransmission\n\n" + "hold B on start:\n -> set 2 players\n\n" + "hold START on start:\n -> async ACK"); waitFor(KEY_A); u16 initialKeys = ~REG_KEYS & KEY_ANY; forwarding = !(initialKeys & KEY_LEFT); diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 80ea30f..87f5495 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -45,9 +45,8 @@ // (they mean 'disconnected' and 'no data' respectively) // -------------------------------------------------------------------------- -#include -#include -#include +#include "_link_common.hpp" + #include #include "LinkCable.hpp" #include "LinkWireless.hpp" @@ -58,23 +57,26 @@ // Game ID Filter. Default = 0 (no filter) #define LINK_UNIVERSAL_GAME_ID_FILTER 0 -#define LINK_UNIVERSAL_DISCONNECTED LINK_CABLE_DISCONNECTED -#define LINK_UNIVERSAL_NO_DATA LINK_CABLE_NO_DATA -#define LINK_UNIVERSAL_MAX_ROOM_NUMBER 32000 -#define LINK_UNIVERSAL_INIT_WAIT_FRAMES 10 -#define LINK_UNIVERSAL_SWITCH_WAIT_FRAMES 25 -#define LINK_UNIVERSAL_SWITCH_WAIT_FRAMES_RANDOM 10 -#define LINK_UNIVERSAL_BROADCAST_SEARCH_WAIT_FRAMES 10 -#define LINK_UNIVERSAL_SERVE_WAIT_FRAMES 60 -#define LINK_UNIVERSAL_SERVE_WAIT_FRAMES_RANDOM 30 - static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v7.0.0"; -void LINK_UNIVERSAL_ISR_VBLANK(); -void LINK_UNIVERSAL_ISR_SERIAL(); -void LINK_UNIVERSAL_ISR_TIMER(); +#define LINK_UNIVERSAL_DISCONNECTED LINK_CABLE_DISCONNECTED +#define LINK_UNIVERSAL_NO_DATA LINK_CABLE_NO_DATA class LinkUniversal { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + using s8 = signed char; + + static constexpr int MAX_ROOM_NUMBER = 32000; + static constexpr int INIT_WAIT_FRAMES = 10; + static constexpr int SWITCH_WAIT_FRAMES = 25; + static constexpr int SWITCH_WAIT_FRAMES_RANDOM = 10; + static constexpr int BROADCAST_SEARCH_WAIT_FRAMES = 10; + static constexpr int SERVE_WAIT_FRAMES = 60; + static constexpr int SERVE_WAIT_FRAMES_RANDOM = 30; + public: enum State { INITIALIZING, WAITING, CONNECTED }; enum Mode { LINK_CABLE, LINK_WIRELESS }; @@ -104,25 +106,29 @@ class LinkUniversal { s8 asyncACKTimerId; }; - explicit LinkUniversal( - Protocol protocol = AUTODETECT, - const char* gameName = "", - CableOptions cableOptions = - CableOptions{ - LinkCable::BaudRate::BAUD_RATE_1, LINK_CABLE_DEFAULT_TIMEOUT, - LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, LINK_CABLE_DEFAULT_INTERVAL, - LINK_CABLE_DEFAULT_SEND_TIMER_ID}, - WirelessOptions wirelessOptions = WirelessOptions{ - true, LINK_UNIVERSAL_MAX_PLAYERS, LINK_WIRELESS_DEFAULT_TIMEOUT, - LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, LINK_WIRELESS_DEFAULT_INTERVAL, - LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}) { + explicit LinkUniversal(Protocol protocol = AUTODETECT, + const char* gameName = "", + CableOptions cableOptions = + CableOptions{LinkCable::BaudRate::BAUD_RATE_1, + LINK_CABLE_DEFAULT_TIMEOUT, + LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, + LINK_CABLE_DEFAULT_INTERVAL, + LINK_CABLE_DEFAULT_SEND_TIMER_ID}, + WirelessOptions wirelessOptions = + WirelessOptions{ + true, LINK_UNIVERSAL_MAX_PLAYERS, + LINK_WIRELESS_DEFAULT_TIMEOUT, + LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, + LINK_WIRELESS_DEFAULT_INTERVAL, + LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, + LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, + int randomSeed = 123) { this->linkCable = new LinkCable( cableOptions.baudRate, cableOptions.timeout, cableOptions.remoteTimeout, cableOptions.interval, cableOptions.sendTimerId); this->linkWireless = new LinkWireless( wirelessOptions.retransmission, true, - min(wirelessOptions.maxPlayers, LINK_UNIVERSAL_MAX_PLAYERS), + Link::_min(wirelessOptions.maxPlayers, LINK_UNIVERSAL_MAX_PLAYERS), wirelessOptions.timeout, wirelessOptions.remoteTimeout, wirelessOptions.interval, wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId); @@ -131,7 +137,7 @@ class LinkUniversal { this->config.gameName = gameName; } - bool isActive() { return isEnabled; } + [[nodiscard]] bool isActive() { return isEnabled; } void activate() { reset(); @@ -146,16 +152,16 @@ class LinkUniversal { } void setProtocol(Protocol protocol) { this->config.protocol = protocol; } - Protocol getProtocol() { return this->config.protocol; } + [[nodiscard]] Protocol getProtocol() { return this->config.protocol; } - bool isConnected() { return state == CONNECTED; } + [[nodiscard]] bool isConnected() { return state == CONNECTED; } - u8 playerCount() { + [[nodiscard]] u8 playerCount() { return mode == LINK_CABLE ? linkCable->playerCount() : linkWireless->playerCount(); } - u8 currentPlayerId() { + [[nodiscard]] u8 currentPlayerId() { return mode == LINK_CABLE ? linkCable->currentPlayerId() : linkWireless->currentPlayerId(); } @@ -164,10 +170,10 @@ class LinkUniversal { if (!isEnabled) return; - u16 keys = ~REG_KEYS & KEY_ANY; - __qran_seed += keys; - __qran_seed += REG_RCNT; - __qran_seed += REG_SIOCNT; + u16 keys = ~Link::_REG_KEYS & Link::_KEY_ANY; + randomSeed += keys; + randomSeed += Link::_REG_RCNT; + randomSeed += Link::_REG_SIOCNT; if (mode == LINK_CABLE) linkCable->sync(); @@ -175,7 +181,7 @@ class LinkUniversal { switch (state) { case INITIALIZING: { waitCount++; - if (waitCount > LINK_UNIVERSAL_INIT_WAIT_FRAMES) + if (waitCount > INIT_WAIT_FRAMES) start(); break; }; @@ -242,18 +248,22 @@ class LinkUniversal { : linkWireless->config.sendTimerId; while (isConnected() && !canRead(playerId) && !cancel()) { - IntrWait(1, IRQ_SERIAL | LINK_CABLE_TIMER_IRQ_IDS[timerId]); + Link::_IntrWait(1, Link::_IRQ_SERIAL | Link::_TIMER_IRQ_IDS[timerId]); sync(); } return isConnected() && canRead(playerId); } - bool canRead(u8 playerId) { return !incomingMessages[playerId].isEmpty(); } + [[nodiscard]] bool canRead(u8 playerId) { + return !incomingMessages[playerId].isEmpty(); + } u16 read(u8 playerId) { return incomingMessages[playerId].pop(); } - u16 peek(u8 playerId) { return incomingMessages[playerId].peek(); } + [[nodiscard]] u16 peek(u8 playerId) { + return incomingMessages[playerId].peek(); + } bool send(u16 data) { if (data == LINK_CABLE_DISCONNECTED || data == LINK_CABLE_NO_DATA) @@ -267,17 +277,19 @@ class LinkUniversal { } } - State getState() { return state; } - Mode getMode() { return mode; } - LinkWireless::State getWirelessState() { return linkWireless->getState(); } + [[nodiscard]] State getState() { return state; } + [[nodiscard]] Mode getMode() { return mode; } + [[nodiscard]] LinkWireless::State getWirelessState() { + return linkWireless->getState(); + } ~LinkUniversal() { delete linkCable; delete linkWireless; } - u32 _getWaitCount() { return waitCount; } - u32 _getSubWaitCount() { return subWaitCount; } + [[nodiscard]] u32 _getWaitCount() { return waitCount; } + [[nodiscard]] u32 _getSubWaitCount() { return subWaitCount; } void _onVBlank() { if (mode == LINK_CABLE) @@ -322,13 +334,16 @@ class LinkUniversal { u32 switchWait = 0; u32 subWaitCount = 0; u32 serveWait = 0; + int randomSeed = 0; volatile bool isEnabled = false; void receiveCableMessages() { - int maxPlayers = - min(LINK_CABLE_MAX_PLAYERS, - LINK_UNIVERSAL_MAX_PLAYERS); // TODO: MOVE TO CONSTEXPR - for (u32 i = 0; i < maxPlayers; i++) { + static constexpr u32 MAX_PLAYERS = + LINK_CABLE_MAX_PLAYERS < LINK_UNIVERSAL_MAX_PLAYERS + ? LINK_CABLE_MAX_PLAYERS + : LINK_UNIVERSAL_MAX_PLAYERS; + + for (u32 i = 0; i < MAX_PLAYERS; i++) { while (linkCable->canRead(i)) incomingMessages[i].push(linkCable->read(i)); } @@ -360,7 +375,7 @@ class LinkUniversal { waitCount = 0; subWaitCount++; - if (subWaitCount >= LINK_UNIVERSAL_BROADCAST_SEARCH_WAIT_FRAMES) { + if (subWaitCount >= BROADCAST_SEARCH_WAIT_FRAMES) { if (!tryConnectOrServeWirelessSession()) return false; } @@ -407,8 +422,7 @@ class LinkUniversal { (LINK_UNIVERSAL_GAME_ID_FILTER == 0 || server.gameId == LINK_UNIVERSAL_GAME_ID_FILTER)) { u32 randomNumber = safeStoi(server.userName); - if (randomNumber > maxRandomNumber && - randomNumber < LINK_UNIVERSAL_MAX_ROOM_NUMBER) { + if (randomNumber > maxRandomNumber && randomNumber < MAX_ROOM_NUMBER) { maxRandomNumber = randomNumber; serverIndex = i; } @@ -423,9 +437,8 @@ class LinkUniversal { return false; subWaitCount = 0; - serveWait = LINK_UNIVERSAL_SERVE_WAIT_FRAMES + - qran_range(1, LINK_UNIVERSAL_SERVE_WAIT_FRAMES_RANDOM); - u32 randomNumber = qran_range(1, LINK_UNIVERSAL_MAX_ROOM_NUMBER); + serveWait = SERVE_WAIT_FRAMES + _qran_range(1, SERVE_WAIT_FRAMES_RANDOM); + u32 randomNumber = _qran_range(1, MAX_ROOM_NUMBER); char randomNumberStr[6]; std::snprintf(randomNumberStr, sizeof(randomNumberStr), "%d", randomNumber); @@ -503,8 +516,7 @@ class LinkUniversal { void resetState() { waitCount = 0; - switchWait = LINK_UNIVERSAL_SWITCH_WAIT_FRAMES + - qran_range(1, LINK_UNIVERSAL_SWITCH_WAIT_FRAMES_RANDOM); + switchWait = SWITCH_WAIT_FRAMES + _qran_range(1, SWITCH_WAIT_FRAMES_RANDOM); subWaitCount = 0; serveWait = 0; for (u32 i = 0; i < LINK_UNIVERSAL_MAX_PLAYERS; i++) @@ -524,6 +536,15 @@ class LinkUniversal { return num; } + + int _qran(void) { + randomSeed = 1664525 * randomSeed + 1013904223; + return (randomSeed >> 16) & 0x7FFF; + } + + int _qran_range(int min, int max) { + return (_qran() * (max - min) >> 15) + min; + } }; extern LinkUniversal* linkUniversal; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 02503e0..92b727b 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -106,6 +106,7 @@ static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; #define LINK_WIRELESS_MAX_PLAYERS 5 #define LINK_WIRELESS_MIN_PLAYERS 2 +#define LINK_WIRELESS_END 0 #define LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 22 #define LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 #define LINK_WIRELESS_BROADCAST_LENGTH 6 @@ -114,7 +115,9 @@ static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; #define LINK_WIRELESS_MAX_SERVERS \ (LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH / \ LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH) -#define LINK_WIRELESS_END 0 +#define LINK_WIRELESS_MAX_GAME_ID 0x7fff +#define LINK_WIRELESS_MAX_GAME_NAME_LENGTH 14 +#define LINK_WIRELESS_MAX_USER_NAME_LENGTH 8 #define LINK_WIRELESS_DEFAULT_TIMEOUT 10 #define LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT 10 #define LINK_WIRELESS_DEFAULT_INTERVAL 50 @@ -153,9 +156,6 @@ class LinkWireless { static constexpr int TRANSFER_WAIT = 15; static constexpr int BROADCAST_SEARCH_WAIT_FRAMES = 60; static constexpr int CMD_TIMEOUT = 100; - static constexpr int MAX_GAME_ID = 0x7fff; - static constexpr int MAX_GAME_NAME_LENGTH = 14; - static constexpr int MAX_USER_NAME_LENGTH = 8; static constexpr int LOGIN_STEPS = 9; static constexpr int COMMAND_HEADER_VALUE = 0x9966; static constexpr int RESPONSE_ACK_VALUE = 0x80; @@ -233,8 +233,8 @@ class LinkWireless { struct Server { u16 id = 0; u16 gameId; - char gameName[MAX_GAME_NAME_LENGTH + 1]; - char userName[MAX_USER_NAME_LENGTH + 1]; + char gameName[LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; + char userName[LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1]; u8 currentPlayerCount; bool isFull() { return currentPlayerCount == 0; } @@ -332,7 +332,7 @@ class LinkWireless { */ bool serve(const char* gameName = "", const char* userName = "", - u16 gameId = MAX_GAME_ID) { + u16 gameId = LINK_WIRELESS_MAX_GAME_ID) { LINK_WIRELESS_RESET_IF_NEEDED if (state != AUTHENTICATED && state != SERVING) { lastError = WRONG_STATE; @@ -342,25 +342,25 @@ class LinkWireless { lastError = BUSY_TRY_AGAIN; return false; } - if (std::strlen(gameName) > MAX_GAME_NAME_LENGTH) { + if (std::strlen(gameName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH) { lastError = GAME_NAME_TOO_LONG; return false; } - if (std::strlen(userName) > MAX_GAME_NAME_LENGTH) { + if (std::strlen(userName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH) { lastError = USER_NAME_TOO_LONG; return false; } - char finalGameName[MAX_GAME_NAME_LENGTH + 1]; - char finalUserName[MAX_USER_NAME_LENGTH + 1]; - copyName(finalGameName, gameName, MAX_GAME_NAME_LENGTH); - copyName(finalUserName, userName, MAX_USER_NAME_LENGTH); + char finalGameName[LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; + char finalUserName[LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1]; + copyName(finalGameName, gameName, LINK_WIRELESS_MAX_GAME_NAME_LENGTH); + copyName(finalUserName, userName, LINK_WIRELESS_MAX_USER_NAME_LENGTH); if (state != SERVING) setup(config.maxPlayers); addData(buildU32(buildU16(finalGameName[1], finalGameName[0]), - gameId & MAX_GAME_ID), + gameId & LINK_WIRELESS_MAX_GAME_ID), true); addData(buildU32(buildU16(finalGameName[5], finalGameName[4]), buildU16(finalGameName[3], finalGameName[2]))); @@ -486,7 +486,7 @@ class LinkWireless { Server server; server.id = (u16)result.responses[start]; - server.gameId = result.responses[start + 1] & MAX_GAME_ID; + server.gameId = result.responses[start + 1] & LINK_WIRELESS_MAX_GAME_ID; u32 gameI = 0, userI = 0; recoverName(server.gameName, gameI, result.responses[start + 1], false); recoverName(server.gameName, gameI, result.responses[start + 2]); diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 680b745..3e12c2a 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -75,15 +75,19 @@ inline volatile u16* const _REG_SIOMULTI = inline volatile u16& _REG_VCOUNT = *reinterpret_cast(_REG_BASE + 0x0006); +inline volatile u16& _REG_KEYS = + *reinterpret_cast(_REG_BASE + 0x0130); + inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); -static constexpr u16 _TM_FREQ_1 = 0; // 1 cycle/tick (16.7 MHz) -static constexpr u16 _TM_FREQ_64 = 0x0001; // 64 cycles/tick (262 kHz) -static constexpr u16 _TM_FREQ_256 = 0x0002; // 256 cycles/tick (66 kHz) -static constexpr u16 _TM_FREQ_1024 = 0x0003; // 1024 cycles/tick (16 kHz) -static constexpr u16 _TM_IRQ = 0x0040; -static constexpr u16 _TM_ENABLE = 0x0080; +static constexpr u16 _KEY_ANY = 0x03FF; //!< Here's the Any key :) +static constexpr u16 _TM_FREQ_1 = 0; //!< 1 cycle/tick (16.7 MHz) +static constexpr u16 _TM_FREQ_64 = 0x0001; //!< 64 cycles/tick (262 kHz) +static constexpr u16 _TM_FREQ_256 = 0x0002; //!< 256 cycles/tick (66 kHz) +static constexpr u16 _TM_FREQ_1024 = 0x0003; //!< 1024 cycles/tick (16 kHz) +static constexpr u16 _TM_IRQ = 0x0040; //!< Enable timer irq +static constexpr u16 _TM_ENABLE = 0x0080; //!< Enable timer static constexpr u16 _IRQ_VBLANK = 0x0001; //!< Catch VBlank irq static constexpr u16 _IRQ_TIMER0 = 0x0008; //!< Catch timer 0 irq From 908c67679c2dd97ff7fd3b3b8507590235f5b60d Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 08:43:17 -0300 Subject: [PATCH 048/195] Adding Doxygen-style docs for IDE autocompletion in LinkUniversal --- README.md | 4 +- lib/LinkRawCable.hpp | 5 +- lib/LinkSPI.hpp | 8 +-- lib/LinkUniversal.hpp | 148 ++++++++++++++++++++++++++++++++++++++++-- lib/LinkWireless.hpp | 6 +- 5 files changed, 152 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index a79cd84..7a9bb06 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ Name | Type | Default | Description You can also change these compile-time constants: - `LINK_UNIVERSAL_MAX_PLAYERS`: to set a maximum number of players. The default value is `5`, but since LinkCable's limit is `4`, you might want to decrease it. -- `LINK_UNIVERSAL_GAME_ID_FILTER`: to restrict wireless connections to rooms with a specific game ID (`0x0000` - `0x7fff`). The default value (`0`) connects to any game ID and uses `0x7fff` when serving. +- `LINK_UNIVERSAL_GAME_ID_FILTER`: to restrict wireless connections to rooms with a specific game ID (`0x0000` ~ `0x7fff`). The default value (`0`) connects to any game ID and uses `0x7fff` when serving. ## Methods @@ -280,8 +280,8 @@ Name | Return type | Description `getState()` | **LinkUniversal::State** | Returns the current state (one of `LinkUniversal::State::INITIALIZING`, `LinkUniversal::State::WAITING`, or `LinkUniversal::State::CONNECTED`). `getMode()` | **LinkUniversal::Mode** | Returns the active mode (one of `LinkUniversal::Mode::LINK_CABLE`, or `LinkUniversal::Mode::LINK_WIRELESS`). `getProtocol()` | **LinkUniversal::Protocol** | Returns the active protocol (one of `LinkUniversal::Protocol::AUTODETECT`, `LinkUniversal::Protocol::CABLE`, `LinkUniversal::Protocol::WIRELESS_AUTO`, `LinkUniversal::Protocol::WIRELESS_SERVER`, or `LinkUniversal::Protocol::WIRELESS_CLIENT`). -`setProtocol(protocol)` | - | Sets the active `protocol`. `getWirelessState()` | **LinkWireless::State** | Returns the wireless state (same as [📻 LinkWireless](#-LinkWireless)'s `getState()`). +`setProtocol(protocol)` | - | Sets the active `protocol`. # 🔌 LinkGPIO diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index f79dddf..16ed230 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -175,9 +175,8 @@ class LinkRawCable { } /** - * @brief Returns the state of the last async transfer (one of - * `LinkRawCable::AsyncState::IDLE`, `LinkRawCable::AsyncState::WAITING`, or - * `LinkRawCable::AsyncState::READY`). + * @brief Returns the state of the last async transfer + * @return One of the enum values from `LinkRawCable::AsyncState`. */ [[nodiscard]] AsyncState getAsyncState() { return asyncState; } diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 227ce79..c0f40b8 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -101,8 +101,7 @@ class LinkSPI { /** * @brief Activates the library in a specific `mode`. - * @param mode One of `LinkSPI::Mode::SLAVE`, `LinkSPI::Mode::MASTER_256KBPS`, - * or `LinkSPI::Mode::MASTER_2MBPS`. + * @param mode One of the enum values from `LinkSPI::Mode`. */ void activate(Mode mode) { this->mode = mode; @@ -228,9 +227,8 @@ class LinkSPI { } /** - * @brief Returns the state of the last async transfer (one of - * `LinkSPI::AsyncState::IDLE`, `LinkSPI::AsyncState::WAITING`, or - * `LinkSPI::AsyncState::READY`). + * @brief Returns the state of the last async transfer. + * @return One of the enum values from `LinkSPI::AsyncState`. */ [[nodiscard]] AsyncState getAsyncState() { return asyncState; } diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 87f5495..22df8be 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -51,10 +51,17 @@ #include "LinkCable.hpp" #include "LinkWireless.hpp" -// Max players. Default = 5 (keep in mind that LinkCable's limit is 4) +/** + * @brief Maximum number of players. Default = 5 + * \warning Keep in mind that LinkCable's limit is 4. + */ #define LINK_UNIVERSAL_MAX_PLAYERS LINK_WIRELESS_MAX_PLAYERS -// Game ID Filter. Default = 0 (no filter) +/** + * @brief Game ID Filter (`0x0000` ~ `0x7fff`). Default = 0 (no filter) + * This restricts wireless connections to rooms with a specific game ID. + * When disabled, it connects to any game ID and uses `0x7fff` when serving. + */ #define LINK_UNIVERSAL_GAME_ID_FILTER 0 static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v7.0.0"; @@ -62,6 +69,9 @@ static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v7.0.0"; #define LINK_UNIVERSAL_DISCONNECTED LINK_CABLE_DISCONNECTED #define LINK_UNIVERSAL_NO_DATA LINK_CABLE_NO_DATA +/** + * @brief A multiplayer connection for the Link Cable and the Wireless Adapter. + */ class LinkUniversal { private: using u32 = unsigned int; @@ -106,6 +116,18 @@ class LinkUniversal { s8 asyncACKTimerId; }; + /** + * @brief Constructs a new LinkUniversal object. + * @param protocol One of the enum values from `LinkUniversal::Protocol`. + * @param gameName The game name that will be broadcasted in wireless sessions + * (max `14` characters). The string must be a null-terminated character + * array. The library uses this to only connect to servers from the same game. + * @param cableOptions All the LinkCable constructor parameters in one struct. + * @param wirelessOptions All the LinkWireless constructor parameters in one + * struct. + * @param randomSeed Random seed used for waits to prevent livelocks. If you + * use _libtonc_, pass `__qran_seed`. + */ explicit LinkUniversal(Protocol protocol = AUTODETECT, const char* gameName = "", CableOptions cableOptions = @@ -137,13 +159,22 @@ class LinkUniversal { this->config.gameName = gameName; } + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief Activates the library. + */ void activate() { reset(); isEnabled = true; } + /** + * @brief Deactivates the library. + */ void deactivate() { isEnabled = false; linkCable->deactivate(); @@ -151,21 +182,30 @@ class LinkUniversal { resetState(); } - void setProtocol(Protocol protocol) { this->config.protocol = protocol; } - [[nodiscard]] Protocol getProtocol() { return this->config.protocol; } - + /** + * @brief Returns `true` if there are at least 2 connected players. + */ [[nodiscard]] bool isConnected() { return state == CONNECTED; } + /** + * @brief Returns the number of connected players (`0~5`). + */ [[nodiscard]] u8 playerCount() { return mode == LINK_CABLE ? linkCable->playerCount() : linkWireless->playerCount(); } + /** + * @brief Returns the current player ID (`0~4`). + */ [[nodiscard]] u8 currentPlayerId() { return mode == LINK_CABLE ? linkCable->currentPlayerId() : linkWireless->currentPlayerId(); } + /** + * @brief Call this method every time you need to fetch new data. + */ void sync() { if (!isEnabled) return; @@ -236,10 +276,22 @@ class LinkUniversal { } } + /** + * @brief Waits for data from player #`playerId`. Returns `true` on success, + * or `false` on disconnection. + * @param playerId A player ID. + */ bool waitFor(u8 playerId) { return waitFor(playerId, []() { return false; }); } + /** + * @brief Waits for data from player #`playerId`. Returns `true` on success, + * or `false` on disconnection. + * @param playerId Number of player to wait data from. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the wait be aborted. + */ template bool waitFor(u8 playerId, F cancel) { sync(); @@ -255,16 +307,40 @@ class LinkUniversal { return isConnected() && canRead(playerId); } + /** + * @brief Returns `true` if there are pending messages from player + * #`playerId`. + * @param playerId A player ID. + * \warning Keep in mind that if this returns `false`, it will keep doing so + * until you *fetch new data* with `sync()`. + */ [[nodiscard]] bool canRead(u8 playerId) { return !incomingMessages[playerId].isEmpty(); } + /** + * @brief Dequeues and returns the next message from player #`playerId`. + * @param playerId A player ID. + * \warning If there's no data from that player, a `0` will be returned. + */ u16 read(u8 playerId) { return incomingMessages[playerId].pop(); } + /** + * @brief Returns the next message from player #`playerId` without dequeuing + * it. + * @param playerId A player ID. + * \warning If there's no data from that player, a `0` will be returned. + */ [[nodiscard]] u16 peek(u8 playerId) { return incomingMessages[playerId].peek(); } + /** + * @brief Sends `data` to all connected players. + * If the buffers are full, it either drops the oldest message (on cable mode) + * or ignores it returning `false` (on wireless mode). + * @param data The value to be sent. + */ bool send(u16 data) { if (data == LINK_CABLE_DISCONNECTED || data == LINK_CABLE_NO_DATA) return false; @@ -277,20 +353,58 @@ class LinkUniversal { } } + /** + * @brief Returns the current state. + * @return One of the enum values from `LinkUniversal::State`. + */ [[nodiscard]] State getState() { return state; } + + /** + * @brief Returns the active mode. + * @return One of the enum values from `LinkUniversal::Mode`. + */ [[nodiscard]] Mode getMode() { return mode; } + + /** + * @brief Returns the active protocol + * @return One of the enum values from `LinkUniversal::Protocol`. + */ + [[nodiscard]] Protocol getProtocol() { return this->config.protocol; } + + /** + * @brief Returns the wireless state (same as `LinkWireless::getState()`). + */ [[nodiscard]] LinkWireless::State getWirelessState() { return linkWireless->getState(); } + /** + * @brief Sets the active `protocol`. + * @param protocol One of the enum values from `LinkUniversal::Protocol`. + */ + void setProtocol(Protocol protocol) { this->config.protocol = protocol; } + ~LinkUniversal() { delete linkCable; delete linkWireless; } + /** + * @brief Returns the wait count. + * \warning This is internal API! + */ [[nodiscard]] u32 _getWaitCount() { return waitCount; } + + /** + * @brief Returns the sub-wait count. + * \warning This is internal API! + */ [[nodiscard]] u32 _getSubWaitCount() { return subWaitCount; } + /** + * @brief This method is called by the VBLANK interrupt handler. + * \warning This is internal API! + */ void _onVBlank() { if (mode == LINK_CABLE) linkCable->_onVBlank(); @@ -298,6 +412,10 @@ class LinkUniversal { linkWireless->_onVBlank(); } + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ void _onSerial() { if (mode == LINK_CABLE) linkCable->_onSerial(); @@ -305,6 +423,10 @@ class LinkUniversal { linkWireless->_onSerial(); } + /** + * @brief This method is called by the TIMER interrupt handler. + * \warning This is internal API! + */ void _onTimer() { if (mode == LINK_CABLE) linkCable->_onTimer(); @@ -312,6 +434,10 @@ class LinkUniversal { linkWireless->_onTimer(); } + /** + * @brief This method is called by the other TIMER interrupt handler. + * \warning This is internal API! + */ void _onACKTimer() { if (mode == LINK_WIRELESS) linkWireless->_onACKTimer(); @@ -549,18 +675,30 @@ class LinkUniversal { extern LinkUniversal* linkUniversal; +/** + * @brief VBLANK interrupt handler. + */ inline void LINK_UNIVERSAL_ISR_VBLANK() { linkUniversal->_onVBlank(); } +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_UNIVERSAL_ISR_SERIAL() { linkUniversal->_onSerial(); } +/** + * @brief TIMER interrupt handler used for sending. + */ inline void LINK_UNIVERSAL_ISR_TIMER() { linkUniversal->_onTimer(); } +/** + * @brief TIMER interrupt handler used for ACKs. + */ inline void LINK_UNIVERSAL_ISR_ACK_TIMER() { linkUniversal->_onACKTimer(); } diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 92b727b..ca6a845 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -645,10 +645,8 @@ class LinkWireless { } /** - * @brief Returns the current state (one of - * `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, - * `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, - * `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). + * @brief Returns the current state. + * @return One of the enum values from `LinkWireless::State`. */ [[nodiscard]] State getState() { return state; } From de9c8c79c175a94d09f34c82cab8be78dc470c8e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 09:37:17 -0300 Subject: [PATCH 049/195] Renaming queues with more descriptive names and adding developer notes --- lib/LinkCable.hpp | 37 +++++++++++++++++++++++++++---------- lib/LinkWireless.hpp | 26 +++++++++++++------------- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 68de756..ddf5c30 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -229,7 +229,7 @@ class LinkCable { LINK_CABLE_BARRIER; for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) - move(_state.pendingMessages[i], state.incomingMessages[i]); + move(_state.readyToSyncMessages[i], state.syncedIncomingMessages[i]); LINK_CABLE_BARRIER; isReadingMessages = false; @@ -276,7 +276,7 @@ class LinkCable { * until you *fetch new data* with `sync()`. */ [[nodiscard]] bool canRead(u8 playerId) { - return !state.incomingMessages[playerId].isEmpty(); + return !state.syncedIncomingMessages[playerId].isEmpty(); } /** @@ -284,7 +284,7 @@ class LinkCable { * @param playerId A player ID. * \warning If there's no data from that player, a `0` will be returned. */ - u16 read(u8 playerId) { return state.incomingMessages[playerId].pop(); } + u16 read(u8 playerId) { return state.syncedIncomingMessages[playerId].pop(); } /** * @brief Returns the next message from player #`playerId` without dequeuing @@ -293,7 +293,7 @@ class LinkCable { * \warning If there's no data from that player, a `0` will be returned. */ [[nodiscard]] u16 peek(u8 playerId) { - return state.incomingMessages[playerId].peek(); + return state.syncedIncomingMessages[playerId].peek(); } /** @@ -418,14 +418,14 @@ class LinkCable { private: struct ExternalState { - U16Queue incomingMessages[LINK_CABLE_MAX_PLAYERS]; + U16Queue syncedIncomingMessages[LINK_CABLE_MAX_PLAYERS]; u8 playerCount; u8 currentPlayerId; }; struct InternalState { U16Queue outgoingMessages; - U16Queue pendingMessages[LINK_CABLE_MAX_PLAYERS]; + U16Queue readyToSyncMessages[LINK_CABLE_MAX_PLAYERS]; U16Queue newMessages[LINK_CABLE_MAX_PLAYERS]; int timeouts[LINK_CABLE_MAX_PLAYERS]; bool IRQFlag; @@ -478,7 +478,7 @@ class LinkCable { for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { if (!isReadingMessages) - _state.pendingMessages[i].clear(); + _state.readyToSyncMessages[i].clear(); _state.newMessages[i].clear(); setOffline(i); @@ -511,7 +511,7 @@ class LinkCable { void clearIncomingMessages() { for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) - state.incomingMessages[i].clear(); + state.syncedIncomingMessages[i].clear(); } void copyState() { @@ -520,9 +520,9 @@ class LinkCable { for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { if (isOnline(i)) - move(_state.newMessages[i], _state.pendingMessages[i]); + move(_state.newMessages[i], _state.readyToSyncMessages[i]); else - _state.pendingMessages[i].clear(); + _state.readyToSyncMessages[i].clear(); } } @@ -581,4 +581,21 @@ inline void LINK_CABLE_ISR_TIMER() { linkCable->_onTimer(); } +/** + * NOTES: + * For end users: + * - `sync()` fills an incoming queue (`syncedIncomingMessages`). + * - `read(...)` pops one message from that queue. + * - `send(...)` pushes one message to an outgoing queue (`outgoingMessages`). + * Behind the curtains: + * - On each SERIAL IRQ: + * -> Each new message is pushed to `newMessages`. + * - On each VBLANK, SERIAL, or TIMER IRQ: + * -> **If the user is not syncing**: + * -> All `newMessages` are moved to `readyToSyncMessages`. + * -> **If the user is not sending**: + * -> Pops one message from `outgoingMessages` and transfers it. + * - `sync()` moves all `readyToSyncMessages` to `syncedIncomingMessages`. + */ + #endif // LINK_CABLE_H diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index ca6a845..c4b627a 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -602,14 +602,14 @@ class LinkWireless { isAddingMessage = true; LINK_WIRELESS_BARRIER; - sessionState.tmpMessagesToSend.push(message); + sessionState.newOutgoingMessages.push(message); LINK_WIRELESS_BARRIER; isAddingMessage = false; LINK_WIRELESS_BARRIER; if (isPendingClearActive) { - sessionState.tmpMessagesToSend.clear(); + sessionState.newOutgoingMessages.clear(); isPendingClearActive = false; } @@ -1009,10 +1009,10 @@ class LinkWireless { }; struct SessionState { - MessageQueue incomingMessages; // read by user, write by irq&user - MessageQueue outgoingMessages; // read and write by irq - MessageQueue tmpMessagesToReceive; // read and write by irq - MessageQueue tmpMessagesToSend; // read by irq, write by user&irq + MessageQueue incomingMessages; // read by user, write by irq&user + MessageQueue outgoingMessages; // read and write by irq + MessageQueue newIncomingMessages; // read and write by irq + MessageQueue newOutgoingMessages; // read by irq, write by user&irq u32 timeouts[LINK_WIRELESS_MAX_PLAYERS]; u32 recvTimeout = 0; u32 frameRecvCount = 0; @@ -1281,7 +1281,7 @@ class LinkWireless { if (!handleConfirmation(message)) continue; } else { - sessionState.tmpMessagesToReceive.push(message); + sessionState.newIncomingMessages.push(message); } } copyIncomingState(); @@ -1467,11 +1467,11 @@ class LinkWireless { if (isAddingMessage) return; - while (!sessionState.tmpMessagesToSend.isEmpty()) { + while (!sessionState.newOutgoingMessages.isEmpty()) { if (!_canSend()) break; - auto message = sessionState.tmpMessagesToSend.pop(); + auto message = sessionState.newOutgoingMessages.pop(); message.packetId = newPacketId(); sessionState.outgoingMessages.push(message); } @@ -1481,8 +1481,8 @@ class LinkWireless { if (isReadingMessages) return; - while (!sessionState.tmpMessagesToReceive.isEmpty()) { - auto message = sessionState.tmpMessagesToReceive.pop(); + while (!sessionState.newIncomingMessages.isEmpty()) { + auto message = sessionState.newIncomingMessages.pop(); sessionState.incomingMessages.push(message); } } @@ -1574,9 +1574,9 @@ class LinkWireless { this->sessionState.incomingMessages.clear(); this->sessionState.outgoingMessages.clear(); - this->sessionState.tmpMessagesToReceive.clear(); + this->sessionState.newIncomingMessages.clear(); if (!isAddingMessage) - this->sessionState.tmpMessagesToSend.clear(); + this->sessionState.newOutgoingMessages.clear(); else isPendingClearActive = true; From 89b96fcebc0778aaf319f1717ac55cc23fe342a6 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 10:29:09 -0300 Subject: [PATCH 050/195] Adding missing timer registers for wireless profiler --- lib/LinkUniversal.hpp | 2 +- lib/_link_common.hpp | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 22df8be..cd7fad1 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -663,7 +663,7 @@ class LinkUniversal { return num; } - int _qran(void) { + int _qran() { randomSeed = 1664525 * randomSeed + 1013904223; return (randomSeed >> 16) & 0x7FFF; } diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 3e12c2a..8d748ab 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -78,6 +78,18 @@ inline volatile u16& _REG_VCOUNT = inline volatile u16& _REG_KEYS = *reinterpret_cast(_REG_BASE + 0x0130); +inline volatile u16& _REG_TM1CNT_L = + *reinterpret_cast(_REG_BASE + 0x0104); + +inline volatile u16& _REG_TM1CNT_H = + *reinterpret_cast(_REG_BASE + 0x0106); + +inline volatile u16& _REG_TM2CNT_L = + *reinterpret_cast(_REG_BASE + 0x0108); + +inline volatile u16& _REG_TM2CNT_H = + *reinterpret_cast(_REG_BASE + 0x010a); + inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); @@ -86,8 +98,10 @@ static constexpr u16 _TM_FREQ_1 = 0; //!< 1 cycle/tick (16.7 MHz) static constexpr u16 _TM_FREQ_64 = 0x0001; //!< 64 cycles/tick (262 kHz) static constexpr u16 _TM_FREQ_256 = 0x0002; //!< 256 cycles/tick (66 kHz) static constexpr u16 _TM_FREQ_1024 = 0x0003; //!< 1024 cycles/tick (16 kHz) -static constexpr u16 _TM_IRQ = 0x0040; //!< Enable timer irq -static constexpr u16 _TM_ENABLE = 0x0080; //!< Enable timer +static constexpr u16 _TM_CASCADE = + 0x0004; //!< Increment when preceding timer overflows +static constexpr u16 _TM_IRQ = 0x0040; //!< Enable timer irq +static constexpr u16 _TM_ENABLE = 0x0080; //!< Enable timer static constexpr u16 _IRQ_VBLANK = 0x0001; //!< Catch VBlank irq static constexpr u16 _IRQ_TIMER0 = 0x0008; //!< Catch timer 0 irq From 6c7713376df6ab059fbcaae610fb1f5d8c373c7c Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 11:25:41 -0300 Subject: [PATCH 051/195] Updating examples to libugba v0.3.0 --- examples/_lib/interrupt.cpp | 2 +- .../libugba/include/{ => ugba}/background.h | 0 .../_lib/libugba/include/{ => ugba}/bios.h | 0 .../include/{ => ugba}/bios_wrappers.h | 0 .../_lib/libugba/include/{ => ugba}/console.h | 0 .../_lib/libugba/include/{ => ugba}/debug.h | 0 .../libugba/include/{ => ugba}/definitions.h | 1 + .../_lib/libugba/include/{ => ugba}/display.h | 0 .../_lib/libugba/include/{ => ugba}/dma.h | 0 .../_lib/libugba/include/{ => ugba}/fp_math.h | 0 .../libugba/include/{ => ugba}/hardware.h | 8 +++++ .../_lib/libugba/include/{ => ugba}/input.h | 0 .../libugba/include/{ => ugba}/interrupts.h | 33 +++++++++--------- .../_lib/libugba/include/{ => ugba}/obj.h | 0 .../_lib/libugba/include/{ => ugba}/sound.h | 0 .../_lib/libugba/include/{ => ugba}/sram.h | 0 .../_lib/libugba/include/{ => ugba}/timer.h | 0 .../_lib/libugba/include/{ => ugba}/ugba.h | 11 +++--- .../_lib/libugba/include/{ => ugba}/version.h | 4 +-- .../_lib/libugba/include/{ => ugba}/vram.h | 0 examples/_lib/libugba/lib/libugba.a | Bin 245498 -> 12364 bytes 21 files changed, 34 insertions(+), 25 deletions(-) rename examples/_lib/libugba/include/{ => ugba}/background.h (100%) rename examples/_lib/libugba/include/{ => ugba}/bios.h (100%) rename examples/_lib/libugba/include/{ => ugba}/bios_wrappers.h (100%) rename examples/_lib/libugba/include/{ => ugba}/console.h (100%) rename examples/_lib/libugba/include/{ => ugba}/debug.h (100%) rename examples/_lib/libugba/include/{ => ugba}/definitions.h (97%) rename examples/_lib/libugba/include/{ => ugba}/display.h (100%) rename examples/_lib/libugba/include/{ => ugba}/dma.h (100%) rename examples/_lib/libugba/include/{ => ugba}/fp_math.h (100%) rename examples/_lib/libugba/include/{ => ugba}/hardware.h (99%) rename examples/_lib/libugba/include/{ => ugba}/input.h (100%) rename examples/_lib/libugba/include/{ => ugba}/interrupts.h (72%) rename examples/_lib/libugba/include/{ => ugba}/obj.h (100%) rename examples/_lib/libugba/include/{ => ugba}/sound.h (100%) rename examples/_lib/libugba/include/{ => ugba}/sram.h (100%) rename examples/_lib/libugba/include/{ => ugba}/timer.h (100%) rename examples/_lib/libugba/include/{ => ugba}/ugba.h (87%) rename examples/_lib/libugba/include/{ => ugba}/version.h (92%) rename examples/_lib/libugba/include/{ => ugba}/vram.h (100%) diff --git a/examples/_lib/interrupt.cpp b/examples/_lib/interrupt.cpp index ab575d9..7dc5b16 100644 --- a/examples/_lib/interrupt.cpp +++ b/examples/_lib/interrupt.cpp @@ -1,5 +1,5 @@ #include "interrupt.h" -#include +#include void interrupt_init(void) { IRQ_Init(); diff --git a/examples/_lib/libugba/include/background.h b/examples/_lib/libugba/include/ugba/background.h similarity index 100% rename from examples/_lib/libugba/include/background.h rename to examples/_lib/libugba/include/ugba/background.h diff --git a/examples/_lib/libugba/include/bios.h b/examples/_lib/libugba/include/ugba/bios.h similarity index 100% rename from examples/_lib/libugba/include/bios.h rename to examples/_lib/libugba/include/ugba/bios.h diff --git a/examples/_lib/libugba/include/bios_wrappers.h b/examples/_lib/libugba/include/ugba/bios_wrappers.h similarity index 100% rename from examples/_lib/libugba/include/bios_wrappers.h rename to examples/_lib/libugba/include/ugba/bios_wrappers.h diff --git a/examples/_lib/libugba/include/console.h b/examples/_lib/libugba/include/ugba/console.h similarity index 100% rename from examples/_lib/libugba/include/console.h rename to examples/_lib/libugba/include/ugba/console.h diff --git a/examples/_lib/libugba/include/debug.h b/examples/_lib/libugba/include/ugba/debug.h similarity index 100% rename from examples/_lib/libugba/include/debug.h rename to examples/_lib/libugba/include/ugba/debug.h diff --git a/examples/_lib/libugba/include/definitions.h b/examples/_lib/libugba/include/ugba/definitions.h similarity index 97% rename from examples/_lib/libugba/include/definitions.h rename to examples/_lib/libugba/include/ugba/definitions.h index dfa1e0c..db2f052 100644 --- a/examples/_lib/libugba/include/definitions.h +++ b/examples/_lib/libugba/include/ugba/definitions.h @@ -34,6 +34,7 @@ # define EXPORT_API __declspec(dllexport) # else # define EXPORT_API __attribute__((visibility("default"))) +// TODO: Is this one below needed in MinGW? //# define EXPORT_API __attribute__((dllexport)) # endif #endif diff --git a/examples/_lib/libugba/include/display.h b/examples/_lib/libugba/include/ugba/display.h similarity index 100% rename from examples/_lib/libugba/include/display.h rename to examples/_lib/libugba/include/ugba/display.h diff --git a/examples/_lib/libugba/include/dma.h b/examples/_lib/libugba/include/ugba/dma.h similarity index 100% rename from examples/_lib/libugba/include/dma.h rename to examples/_lib/libugba/include/ugba/dma.h diff --git a/examples/_lib/libugba/include/fp_math.h b/examples/_lib/libugba/include/ugba/fp_math.h similarity index 100% rename from examples/_lib/libugba/include/fp_math.h rename to examples/_lib/libugba/include/ugba/fp_math.h diff --git a/examples/_lib/libugba/include/hardware.h b/examples/_lib/libugba/include/ugba/hardware.h similarity index 99% rename from examples/_lib/libugba/include/hardware.h rename to examples/_lib/libugba/include/ugba/hardware.h index 519bcb8..beffe5c 100644 --- a/examples/_lib/libugba/include/hardware.h +++ b/examples/_lib/libugba/include/ugba/hardware.h @@ -529,6 +529,14 @@ EXPORT_API uintptr_t *UGBA_RegDMA3DAD(void); // 3) When starting a timer by writing to: // // REG_TM0CNT_H, REG_TM1CNT_H, REG_TM2CNT_H, REG_TM3CNT_H +// +// 4) When IME or IE have been 0 for some time, IF isn't 0, and IME or IE are +// set to a value that would trigger an interrupt: +// +// REG_IE, REG_IME +// +// Note that writing to IF doesn't work on the SDL2 port. On the GBA, writing +// a 1 to a bit sets it to 0. On the SDL2 port, it sets the bit to 1. #ifdef __GBA__ # define UGBA_RegisterUpdatedOffset(offset) do { (void)(offset); } while (0) diff --git a/examples/_lib/libugba/include/input.h b/examples/_lib/libugba/include/ugba/input.h similarity index 100% rename from examples/_lib/libugba/include/input.h rename to examples/_lib/libugba/include/ugba/input.h diff --git a/examples/_lib/libugba/include/interrupts.h b/examples/_lib/libugba/include/ugba/interrupts.h similarity index 72% rename from examples/_lib/libugba/include/interrupts.h rename to examples/_lib/libugba/include/ugba/interrupts.h index 3c0d7a9..5761146 100644 --- a/examples/_lib/libugba/include/interrupts.h +++ b/examples/_lib/libugba/include/ugba/interrupts.h @@ -6,26 +6,25 @@ #define INTERRUPTS_H__ #include -#include #include "definitions.h" typedef enum { - IRQ_VBLANK = 0, - IRQ_HBLANK = 1, - IRQ_VCOUNT = 2, - IRQ_TIMER0 = 3, - IRQ_TIMER1 = 4, - IRQ_TIMER2 = 5, - IRQ_TIMER3 = 6, - IRQ_SERIAL = 7, - IRQ_DMA0 = 8, - IRQ_DMA1 = 9, - IRQ_DMA2 = 10, - IRQ_DMA3 = 11, - IRQ_KEYPAD = 12, - IRQ_GAMEPAK = 13, - IRQ_NUMBER + IRQ_VBLANK = 0, + IRQ_HBLANK = 1, + IRQ_VCOUNT = 2, + IRQ_TIMER0 = 3, + IRQ_TIMER1 = 4, + IRQ_TIMER2 = 5, + IRQ_TIMER3 = 6, + IRQ_SERIAL = 7, + IRQ_DMA0 = 8, + IRQ_DMA1 = 9, + IRQ_DMA2 = 10, + IRQ_DMA3 = 11, + IRQ_KEYPAD = 12, + IRQ_GAMEPAK = 13, + IRQ_NUMBER } irq_index; typedef void (*irq_vector)(void); @@ -47,4 +46,4 @@ EXPORT_API void IRQ_Disable(irq_index index); // Set the reference VCOUNT that triggers the VCOUNT interrupt. EXPORT_API void IRQ_SetReferenceVCOUNT(uint32_t y); -#endif // INTERRUPTS_H__ +#endif // INTERRUPTS_H__ diff --git a/examples/_lib/libugba/include/obj.h b/examples/_lib/libugba/include/ugba/obj.h similarity index 100% rename from examples/_lib/libugba/include/obj.h rename to examples/_lib/libugba/include/ugba/obj.h diff --git a/examples/_lib/libugba/include/sound.h b/examples/_lib/libugba/include/ugba/sound.h similarity index 100% rename from examples/_lib/libugba/include/sound.h rename to examples/_lib/libugba/include/ugba/sound.h diff --git a/examples/_lib/libugba/include/sram.h b/examples/_lib/libugba/include/ugba/sram.h similarity index 100% rename from examples/_lib/libugba/include/sram.h rename to examples/_lib/libugba/include/ugba/sram.h diff --git a/examples/_lib/libugba/include/timer.h b/examples/_lib/libugba/include/ugba/timer.h similarity index 100% rename from examples/_lib/libugba/include/timer.h rename to examples/_lib/libugba/include/ugba/timer.h diff --git a/examples/_lib/libugba/include/ugba.h b/examples/_lib/libugba/include/ugba/ugba.h similarity index 87% rename from examples/_lib/libugba/include/ugba.h rename to examples/_lib/libugba/include/ugba/ugba.h index 8c86941..aeba47a 100644 --- a/examples/_lib/libugba/include/ugba.h +++ b/examples/_lib/libugba/include/ugba/ugba.h @@ -13,10 +13,10 @@ extern "C" { #include "bios.h" #include "bios_wrappers.h" #include "console.h" +#include "dma.h" +#include "display.h" #include "debug.h" #include "definitions.h" -#include "display.h" -#include "dma.h" #include "fp_math.h" #include "hardware.h" #include "input.h" @@ -25,16 +25,17 @@ extern "C" { #include "sound.h" #include "sram.h" #include "timer.h" +#include "version.h" #include "vram.h" // Initialize library. This function needs to be called at the start of main(). -EXPORT_API void UGBA_Init(int* argc, char** argv[]); +EXPORT_API void UGBA_Init(int *argc, char **argv[]); #ifndef __GBA__ // Initialize library with no video output (for testing). This function needs to // be called at the start of main(). Not implemented in GBA as it isn't usedul // there. -EXPORT_API void UGBA_InitHeadless(int* argc, char** argv[]); +EXPORT_API void UGBA_InitHeadless(int *argc, char **argv[]); #endif // This function tries to detect specific flashcarts with special needs and @@ -46,4 +47,4 @@ EXPORT_API uint16_t UGBA_FlashcartOptimizedWaitstates(void); } #endif -#endif // UGBA_H__ +#endif // UGBA_H__ diff --git a/examples/_lib/libugba/include/version.h b/examples/_lib/libugba/include/ugba/version.h similarity index 92% rename from examples/_lib/libugba/include/version.h rename to examples/_lib/libugba/include/ugba/version.h index c90e198..525b030 100644 --- a/examples/_lib/libugba/include/version.h +++ b/examples/_lib/libugba/include/ugba/version.h @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT // -// Copyright (c) 2020 Antonio Niño Díaz +// Copyright (c) 2020-2022 Antonio Niño Díaz #ifndef VERSION_H__ #define VERSION_H__ @@ -10,7 +10,7 @@ // This library follows the Semantic Versioning rules: https://semver.org/ #define LIBUGBA_VERSION_MAJOR (0U) -#define LIBUGBA_VERSION_MINOR (2U) +#define LIBUGBA_VERSION_MINOR (3U) #define LIBUGBA_VERSION_PATCH (0U) #define LIBUGBA_VERSION ((LIBUGBA_VERSION_MAJOR << 16) | \ diff --git a/examples/_lib/libugba/include/vram.h b/examples/_lib/libugba/include/ugba/vram.h similarity index 100% rename from examples/_lib/libugba/include/vram.h rename to examples/_lib/libugba/include/ugba/vram.h diff --git a/examples/_lib/libugba/lib/libugba.a b/examples/_lib/libugba/lib/libugba.a index b0f3793390026f6807338d9e7171f46f2c79c689..991c0903c200dccd6674c08f5420ad56ce085650 100644 GIT binary patch delta 4151 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 literal 245498 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 From ac9d4cd4e3d135a66c1e9726b82f61f916070619 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 8 Aug 2024 11:45:49 -0300 Subject: [PATCH 052/195] Making compiling more friendly on macOS --- .gitignore | 1 + examples/compile.sh | 47 ++++++++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 2815716..f9324da 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ build .vscode # Files +.DS_Store *.elf *.gba *.sav diff --git a/examples/compile.sh b/examples/compile.sh index debd85d..f7f9adf 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -1,5 +1,12 @@ #!/bin/bash +if [ "$(uname)" = "Darwin" ]; then + # macOS + sed_inplace_option="-i \"\"" +else + sed_inplace_option="-i" +fi + cd LinkCable_basic/ make rebuild cp LinkCable_basic.gba ../ @@ -41,9 +48,9 @@ cp LinkRawCable_demo.gba ../ cd .. cd LinkRawWireless_demo/ -sed -i -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp make rebuild -sed -i -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp +sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp cp LinkRawWireless_demo.gba ../ cd .. @@ -58,55 +65,55 @@ cp LinkUART_demo.gba ../ cd .. cd LinkUniversal_basic/ -sed -i -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp make rebuild cp LinkUniversal_basic.gba ../ -sed -i -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. cd LinkCable_full/ -sed -i -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h -sed -i -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp mv LinkCable_full.gba backup.gba make rebuild cp LinkCable_full.gba ../LinkUniversal_full.gba mv backup.gba LinkCable_full.gba -sed -i -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h -sed -i -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. cd LinkCable_stress/ -sed -i -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h -sed -i -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp mv LinkCable_stress.gba backup.gba make rebuild cp LinkCable_stress.gba ../LinkUniversal_stress.gba mv backup.gba LinkCable_stress.gba -sed -i -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h -sed -i -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. cd LinkWireless_demo/ -sed -i -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp make rebuild -sed -i -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cp LinkWireless_demo.gba ../ cd .. cd LinkWireless_demo/ -sed -i -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -sed -i -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp mv LinkWireless_demo.gba backup.gba make rebuild cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba mv backup.gba LinkWireless_demo.gba -sed -i -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -sed -i -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp cd .. cd LinkWirelessMultiboot_demo/ -sed -i -e "s/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp make rebuild cp LinkWirelessMultiboot_demo.out.gba ../LinkWirelessMultiboot_demo.gba -sed -i -e "s/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp cd .. From 6516744b6d4e0675e564942055ae95d4a608c617 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 10 Aug 2024 07:14:20 -0300 Subject: [PATCH 053/195] Normalizing file format --- lib/LinkCable.hpp | 2 +- lib/LinkPS2Keyboard.hpp | 2 +- lib/LinkPS2Mouse.hpp | 2 +- lib/LinkUniversal.hpp | 2 +- lib/LinkWireless.cpp | 2 +- lib/LinkWirelessMultiboot.hpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index ddf5c30..875aa0b 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -251,7 +251,7 @@ class LinkCable { /** * @brief Waits for data from player #`playerId`. Returns `true` on success, * or `false` on disconnection. - * @param playerId Number of player to wait data from. + * @param playerId ID of player to wait data from. * @param cancel A function that will be continuously invoked. If it returns * `true`, the wait be aborted. */ diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 6768a5e..5132bbd 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -277,4 +277,4 @@ enum LINK_PS2_KEYBOARD_EVENT { SPECIAL = 224 // Triggered before special keys }; -#endif // LINK_PS2_KEYBOARD_H \ No newline at end of file +#endif // LINK_PS2_KEYBOARD_H diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index e07494d..4e3a295 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -272,4 +272,4 @@ class LinkPS2Mouse { extern LinkPS2Mouse* linkPS2Mouse; -#endif // LINK_PS2_MOUSE_H \ No newline at end of file +#endif // LINK_PS2_MOUSE_H diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index cd7fad1..589ccbf 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -288,7 +288,7 @@ class LinkUniversal { /** * @brief Waits for data from player #`playerId`. Returns `true` on success, * or `false` on disconnection. - * @param playerId Number of player to wait data from. + * @param playerId ID of player to wait data from. * @param cancel A function that will be continuously invoked. If it returns * `true`, the wait be aborted. */ diff --git a/lib/LinkWireless.cpp b/lib/LinkWireless.cpp index 1e4858f..89b6ede 100644 --- a/lib/LinkWireless.cpp +++ b/lib/LinkWireless.cpp @@ -10,4 +10,4 @@ LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onTimer() { LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onACKTimer() { __onACKTimer(); } -#endif \ No newline at end of file +#endif diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index a69e04d..547ad8d 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -770,4 +770,4 @@ extern LinkWirelessMultiboot* linkWirelessMultiboot; #undef LWMLOG -#endif // LINK_WIRELESS_MULTIBOOT_H \ No newline at end of file +#endif // LINK_WIRELESS_MULTIBOOT_H From 91005296d2869fa09e8b47a66ba0ad9f554a031f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 10 Aug 2024 07:21:36 -0300 Subject: [PATCH 054/195] Adding EditorConfig to normalize code style --- .editorconfig | 23 + docs/gbatek.md | 213 ++++----- docs/multiboot.md | 2 +- docs/wireless_adapter.md | 443 +++++++++--------- examples/LinkCableMultiboot_demo/src/main.cpp | 2 +- examples/LinkCable_basic/src/main.cpp | 2 +- .../LinkCable_full/src/utils/InputHandler.h | 2 +- examples/LinkCable_stress/src/main.cpp | 2 +- examples/LinkGPIO_demo/src/main.cpp | 2 +- examples/LinkRawCable_demo/Makefile | 14 +- examples/LinkRawCable_demo/src/main.cpp | 2 +- .../src/utils/InputHandler.h | 2 +- examples/LinkSPI_demo/Makefile | 14 +- examples/LinkSPI_demo/src/main.cpp | 2 +- examples/LinkUART_demo/Makefile | 14 +- examples/LinkUART_demo/Test.js | 10 +- examples/LinkUniversal_basic/src/main.cpp | 2 +- examples/LinkUniversal_full/README.md | 2 +- examples/LinkUniversal_stress/README.md | 2 +- .../src/utils/InputHandler.h | 2 +- examples/LinkWireless_demo/Makefile | 14 +- examples/LinkWireless_demo/src/main.cpp | 2 +- examples/_lib/interrupt.cpp | 2 +- examples/_lib/interrupt.h | 2 +- 24 files changed, 391 insertions(+), 386 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6d360c1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,23 @@ +# EditorConfig helps developers define and maintain consistent +# coding styles between different editors and IDEs +# editorconfig.org + +root = true + +[*] + +# Change these settings to your own preference +indent_style = space +indent_size = 2 + +# We recommend you to keep these unchanged +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/docs/gbatek.md b/docs/gbatek.md index 9c6eacf..4e8d42c 100644 --- a/docs/gbatek.md +++ b/docs/gbatek.md @@ -4,8 +4,8 @@ The GBAs Serial Port may be used in various different communication modes. Normal mode may exchange data between two GBAs (or to transfer data from master GBA to several slave GBAs in one-way direction). Multi-player mode may exchange data between up to four GBAs. UART mode works much like a RS232 interface. JOY Bus mode uses a standardized Nintendo protocol. And General Purpose mode allows to mis-use the 'serial' port as bi-directional 4bit parallel port. -Note: The Nintendo DS does not include a Serial Port. - +Note: The Nintendo DS does not include a Serial Port. + - SIO Normal Mode - SIO Multi-Player Mode - SIO General-Purpose Mode @@ -13,12 +13,12 @@ Note: The Nintendo DS does not include a Serial Port. - GBA Wireless Adapter # SIO Normal Mode - + This mode is used to communicate between two units. Transfer rates of 256Kbit/s or 2Mbit/s can be selected, however, the fast 2Mbit/s is intended ONLY for special hardware expansions that are DIRECTLY connected to the GBA link port (ie. without a cable being located between the GBA and expansion hardware). In normal cases, always use 256Kbit/s transfer rate which provides stable results. -Transfer lengths of 8bit or 32bit may be used, the 8bit mode is the same as for older DMG/CGB gameboys, however, the voltages for "GBA cartridges in GBAs" are different as for "DMG/CGB cartridges in DMG/CGB/GBAs", ie. it is not possible to communicate between DMG/CGB games and GBA games. +Transfer lengths of 8bit or 32bit may be used, the 8bit mode is the same as for older DMG/CGB gameboys, however, the voltages for "GBA cartridges in GBAs" are different as for "DMG/CGB cartridges in DMG/CGB/GBAs", ie. it is not possible to communicate between DMG/CGB games and GBA games. -**4000134h - RCNT (R) - Mode Selection, in Normal/Multiplayer/UART modes (R/W)** +**4000134h - RCNT (R) - Mode Selection, in Normal/Multiplayer/UART modes (R/W)** ``` Bit Expl. @@ -29,7 +29,7 @@ Transfer lengths of 8bit or 32bit may be used, the 8bit mode is the same as for 15 Must be zero (0) for Normal/Multiplayer/UART modes ``` -**4000128h - SIOCNT - SIO Control, usage in NORMAL Mode (R/W)** +**4000128h - SIOCNT - SIO Control, usage in NORMAL Mode (R/W)** ``` Bit Expl. @@ -46,23 +46,23 @@ Transfer lengths of 8bit or 32bit may be used, the 8bit mode is the same as for 15 Not used (Read only, always 0) ``` -The Start bit is automatically reset when the transfer completes, ie. when all 8 or 32 bits are transferred, at that time an IRQ may be generated. - -**400012Ah - SIODATA8 - SIO Normal Communication 8bit Data (R/W)** +The Start bit is automatically reset when the transfer completes, ie. when all 8 or 32 bits are transferred, at that time an IRQ may be generated. -For 8bit normal mode. Contains 8bit data (only lower 8bit are used). Outgoing data should be written to this register before starting the transfer. During transfer, transmitted bits are shifted-out (MSB first), and received bits are shifted-in simultaneously. Upon transfer completion, the register contains the received 8bit value. - -**4000120h - SIODATA32\_L - SIO Normal Communication lower 16bit data (R/W)** -**4000122h - SIODATA32\_H - SIO Normal Communication upper 16bit data (R/W)** +**400012Ah - SIODATA8 - SIO Normal Communication 8bit Data (R/W)** + +For 8bit normal mode. Contains 8bit data (only lower 8bit are used). Outgoing data should be written to this register before starting the transfer. During transfer, transmitted bits are shifted-out (MSB first), and received bits are shifted-in simultaneously. Upon transfer completion, the register contains the received 8bit value. + +**4000120h - SIODATA32_L - SIO Normal Communication lower 16bit data (R/W)** +**4000122h - SIODATA32_H - SIO Normal Communication upper 16bit data (R/W)** Same as above SIODATA8, for 32bit normal transfer mode respectively. -SIOCNT/RCNT must be set to 32bit normal mode writing to SIODATA32. - +SIOCNT/RCNT must be set to 32bit normal mode writing to SIODATA32. + **Initialization** First, initialize RCNT register. Second, set mode/clock bits in SIOCNT with startbit cleared. For master: select internal clock, and (in most cases) specify 256KHz as transfer rate. For slave: select external clock, the local transfer rate selection is then ignored, as the transfer rate is supplied by the remote GBA (or other computer, which might supply custom transfer rates). -Third, set the startbit in SIOCNT with mode/clock bits unchanged. - +Third, set the startbit in SIOCNT with mode/clock bits unchanged. + **Recommended Communication Procedure for SLAVE unit (external clock)** \- Initialize data which is to be sent to master. \- Set Start flag. @@ -71,41 +71,41 @@ Third, set the startbit in SIOCNT with mode/clock bits unchanged. \- Set SO to HIGH to indicate that we are not ready. \- Process received data. \- Repeat procedure if more data is to be transferred. -(or is so=high done automatically? would be fine - more stable - otherwise master may still need delay) - +(or is so=high done automatically? would be fine - more stable - otherwise master may still need delay) + **Recommended Communication Procedure for SLAVE unit (external clock)** \- Initialize data which is to be sent to master. \- Set Start=0 and SO=0 (SO=LOW indicates that slave is (almost) ready). -\- Set Start=1 and SO=1 (SO=HIGH indicates not ready, applied after transfer). +\- Set Start=1 and SO=1 (SO=HIGH indicates not ready, applied after transfer). -> (Expl. Old SO=LOW kept output until 1st clock bit received). +> (Expl. Old SO=LOW kept output until 1st clock bit received). -> (Expl. New SO=HIGH is automatically output at transfer completion). +> (Expl. New SO=HIGH is automatically output at transfer completion). \- Set SO to LOW to indicate that master may start now. \- Wait for IRQ (or for Start bit to become zero). (Check timeout here!) \- Process received data. -\- Repeat procedure if more data is to be transferred. - +\- Repeat procedure if more data is to be transferred. + **Recommended Communication Procedure for MASTER unit (internal clock)** \- Initialize data which is to be sent to slave. \- Wait for SI to become LOW (slave ready). (Check timeout here!) \- Set Start flag. \- Wait for IRQ (or for Start bit to become zero). \- Process received data. -\- Repeat procedure if more data is to be transferred. - +\- Repeat procedure if more data is to be transferred. + **Cable Protocol** During inactive transfer, the shift clock (SC) is high. The transmit (SO) and receive (SI) data lines may be manually controlled as described above. -When master sends SC=LOW, each master and slave must output the next outgoing data bit to SO. When master sends SC=HIGH, each master and slave must read out the opponents data bit from SI. This is repeated for each of the 8 or 32 bits, and when completed SC will be kept high again. - +When master sends SC=LOW, each master and slave must output the next outgoing data bit to SO. When master sends SC=HIGH, each master and slave must read out the opponents data bit from SI. This is repeated for each of the 8 or 32 bits, and when completed SC will be kept high again. + **Transfer Rates** Either 256KHz or 2MHz rates can be selected for SC, so max 32KBytes (256Kbit) or 128KBytes (2Mbit) can be transferred per second. However, the software must process each 8bit or 32bit of transmitted data separately, so the actual transfer rate will be reduced by the time spent on handling each data unit. -Only 256KHz provides stable results in most cases (such like when linking between two GBAs). The 2MHz rate is intended for special expansion hardware (with very short wires) only. - +Only 256KHz provides stable results in most cases (such like when linking between two GBAs). The 2MHz rate is intended for special expansion hardware (with very short wires) only. + **Using Normal mode for One-Way Multiplayer communication** When using normal mode with multiplay-cables, data isn't exchanged between first and second GBA as usually. Instead, data is shifted from first to last GBA (the first GBA receives zero, because master SI is shortcut to GND). -This behaviour may be used for fast ONE-WAY data transfer from master to all other GBAs. For example (3 GBAs linked): +This behaviour may be used for fast ONE-WAY data transfer from master to all other GBAs. For example (3 GBAs linked): ``` Step Sender 1st Recipient 2nd Recipient @@ -116,13 +116,13 @@ This behaviour may be used for fast ONE-WAY data transfer from master to all oth ``` The recipients should not output any own data, instead they should forward the previously received data to the next recipient during next transfer (just keep the incoming data unmodified in the data register). -Due to the delayed forwarding, 2nd recipient should ignore the first incoming data. After the last transfer, the sender must send one (or more) dummy data unit(s), so that the last data is forwarded to the 2nd (or further) recipient(s). +Due to the delayed forwarding, 2nd recipient should ignore the first incoming data. After the last transfer, the sender must send one (or more) dummy data unit(s), so that the last data is forwarded to the 2nd (or further) recipient(s). # SIO Multi-Player Mode - -Multi-Player mode can be used to communicate between up to 4 units. - -**4000134h - RCNT (R) - Mode Selection, in Normal/Multiplayer/UART modes (R/W)** + +Multi-Player mode can be used to communicate between up to 4 units. + +**4000134h - RCNT (R) - Mode Selection, in Normal/Multiplayer/UART modes (R/W)** ``` Bit Expl. @@ -133,9 +133,9 @@ Multi-Player mode can be used to communicate between up to 4 units. 15 Must be zero (0) for Normal/Multiplayer/UART modes ``` -Note: Even though undocumented, many Nintendo games are using Bit 0 to test current SC state in multiplay mode. - -**4000128h - SIOCNT - SIO Control, usage in MULTI-PLAYER Mode (R/W)** +Note: Even though undocumented, many Nintendo games are using Bit 0 to test current SC state in multiplay mode. + +**4000128h - SIOCNT - SIO Control, usage in MULTI-PLAYER Mode (R/W)** ``` Bit Expl. @@ -152,34 +152,34 @@ Note: Even though undocumented, many Nintendo games are using Bit 0 to test curr 15 Not used (Read only, always 0) ``` -The ID Bits are undefined until the first transfer has completed. - -**400012Ah - SIOMLT\_SEND - Data Send Register (R/W)** -Outgoing data (16 bit) which is to be sent to the other GBAs. - +The ID Bits are undefined until the first transfer has completed. + +**400012Ah - SIOMLT_SEND - Data Send Register (R/W)** +Outgoing data (16 bit) which is to be sent to the other GBAs. + **4000120h - SIOMULTI0 - SIO Multi-Player Data 0 (Parent) (R/W)** **4000122h - SIOMULTI1 - SIO Multi-Player Data 1 (1st child) (R/W)** **4000124h - SIOMULTI2 - SIO Multi-Player Data 2 (2nd child) (R/W)** **4000126h - SIOMULTI3 - SIO Multi-Player Data 3 (3rd child) (R/W)** These registers are automatically reset to FFFFh upon transfer start. -After transfer, these registers contain incoming data (16bit each) from all remote GBAs (if any / otherwise still FFFFh), as well as the local outgoing SIOMLT\_SEND data. -Ie. after the transfer, all connected GBAs will contain the same values in their SIOMULTI0-3 registers. - +After transfer, these registers contain incoming data (16bit each) from all remote GBAs (if any / otherwise still FFFFh), as well as the local outgoing SIOMLT_SEND data. +Ie. after the transfer, all connected GBAs will contain the same values in their SIOMULTI0-3 registers. + **Initialization** \- Initialize RCNT Bit 14-15 and SIOCNT Bit 12-13 to select Multi-Player mode. \- Read SIOCNT Bit 3 to verify that all GBAs are in Multi-Player mode. -\- Read SIOCNT Bit 2 to detect whether this is the Parent/Master unit. - +\- Read SIOCNT Bit 2 to detect whether this is the Parent/Master unit. + **Recommended Transmission Procedure** -\- Write outgoing data to SIODATA\_SEND. +\- Write outgoing data to SIODATA_SEND. \- Master must set Start bit. \- All units must process received data in SIOMULTI0-3 when transfer completed. \- After the first successful transfer, ID Bits in SIOCNT are valid. \- If more data is to be transferred, repeat procedure. The parent unit blindly sends data regardless of whether childs have already processed old data/supplied new data. So, parent unit might be required to insert delays between each transfer, and/or perform error checking. -Also, slave units may signalize that they are not ready by temporarily switching into another communication mode (which does not output SD High, as Multi-Player mode does during inactivity). - +Also, slave units may signalize that they are not ready by temporarily switching into another communication mode (which does not output SD High, as Multi-Player mode does during inactivity). + **Transfer Protocol** Beginning \- The masters SI pin is always LOW. @@ -211,15 +211,15 @@ Step D Transfer end \- Master sets SC=HIGH, all GBAs set SO=HIGH. \- The Start/Busy bits of all GBAs are automatically cleared. -\- Interrupts are requested in all GBAs (as far as enabled). - +\- Interrupts are requested in all GBAs (as far as enabled). + **Error Bit** This bit is set when a slave did not receive SI=LOW even though SC=LOW signalized a transfer (this might happen when connecting more than 4 GBAs, or when the previous child is not connected). Also, the bit is set when a Stopbit wasn't HIGH. The error bit may be undefined during active transfer - read only after transfer completion (the transfer continues and completes as normal even if errors have occurred for some or all GBAs). -Don't know: The bit is automatically reset/initialized with each transfer, or must be manually reset? - +Don't know: The bit is automatically reset/initialized with each transfer, or must be manually reset? + **Transmission Time** -The transmission time depends on the selected Baud rate. And on the amount of Bits (16 data bits plus start/stop bits for each GBA), delays between data for each GBA, plus final timeout (if less than 4 GBAs). That is, depending on the number of connected GBAs: +The transmission time depends on the selected Baud rate. And on the amount of Bits (16 data bits plus start/stop bits for each GBA), delays between data for each GBA, plus final timeout (if less than 4 GBAs). That is, depending on the number of connected GBAs: ``` GBAs Bits Delays Timeout @@ -230,17 +230,17 @@ The transmission time depends on the selected Baud rate. And on the amount of Bi ``` (The average Delay and Timeout periods are unknown?) -Above is not counting the additional CPU time that must be spent on initiating and processing each transfer. - +Above is not counting the additional CPU time that must be spent on initiating and processing each transfer. + **Fast One-Way Transmission** -Beside for the actual SIO Multiplayer mode, you can also use SIO Normal mode for fast one-way data transfer from Master unit to all Child unit(s). See chapter about SIO Normal mode for details. - +Beside for the actual SIO Multiplayer mode, you can also use SIO Normal mode for fast one-way data transfer from Master unit to all Child unit(s). See chapter about SIO Normal mode for details. + # SIO General-Purpose Mode -In this mode, the SIO is 'misused' as a 4bit bi-directional parallel port, each of the SI,SO,SC,SD pins may be directly controlled, each can be separately declared as input (with internal pull-up) or as output signal. - +In this mode, the SIO is 'misused' as a 4bit bi-directional parallel port, each of the SI,SO,SC,SD pins may be directly controlled, each can be separately declared as input (with internal pull-up) or as output signal. + **4000134h - RCNT (R) - SIO Mode, usage in GENERAL-PURPOSE Mode (R/W)** -Interrupts can be requested when SI changes from HIGH to LOW, as General Purpose mode does not require a serial shift clock, this interrupt may be produced even when the GBA is in Stop (low power standby) state. +Interrupts can be requested when SI changes from HIGH to LOW, as General Purpose mode does not require a serial shift clock, this interrupt may be produced even when the GBA is in Stop (low power standby) state. ``` Bit Expl. @@ -258,14 +258,14 @@ Interrupts can be requested when SI changes from HIGH to LOW, as General Purpose 15 Must be "1" for General-Purpose or JOYBUS Mode ``` -SI should be always used as Input to avoid problems with other hardware which does not expect data to be output there. - +SI should be always used as Input to avoid problems with other hardware which does not expect data to be output there. + **4000128h - SIOCNT - SIO Control, not used in GENERAL-PURPOSE Mode** -This register is not used in general purpose mode. That is, the separate bits of SIOCNT still exist and are read- and/or write-able in the same manner as for Normal, Multiplay, or UART mode (depending on SIOCNT Bit 12,13), but are having no effect on data being output to the link port. - +This register is not used in general purpose mode. That is, the separate bits of SIOCNT still exist and are read- and/or write-able in the same manner as for Normal, Multiplay, or UART mode (depending on SIOCNT Bit 12,13), but are having no effect on data being output to the link port. + # SIO Control Registers Summary - -**Mode Selection (by RCNT.15-14 and SIOCNT.13-12)** + +**Mode Selection (by RCNT.15-14 and SIOCNT.13-12)** ``` R.15 R.14 S.13 S.12 Mode @@ -276,8 +276,8 @@ This register is not used in general purpose mode. That is, the separate bits of 1 0 x x General Purpose 1 1 x x JOY BUS ``` - -**SIOCNT** + +**SIOCNT** ``` Bit 0 1 2 3 4 5 6 7 8 9 10 11 @@ -287,16 +287,17 @@ This register is not used in general purpose mode. That is, the separate bits of ``` # GBA Wireless Adapter - -**GBA Wireless Adapter (AGB-015 or OXY-004)** + +**GBA Wireless Adapter (AGB-015 or OXY-004)** + - GBA Wireless Adapter Games - GBA Wireless Adapter Login - GBA Wireless Adapter Commands - GBA Wireless Adapter Component Lists - + ## GBA Wireless Adapter Games -**GBA Wireless Adapter compatible Games** +**GBA Wireless Adapter compatible Games** ``` bit Generations series (Japan only) @@ -341,11 +342,11 @@ This register is not used in general purpose mode. That is, the separate bits of Sennen Kazoku (Japan only) Shrek SuperSlam Sonic Advance 3 -``` +``` ## GBA Wireless Adapter Login -**GBA Wireless Adapter Login** +**GBA Wireless Adapter Login** ``` rcnt=8000h ;\\ @@ -373,8 +374,8 @@ This register is not used in general purpose mode. That is, the separate bits of ret @@key\_string db 'NINTENDO',01h,80h ;10 bytes (5 halfwords; index=0..4) ``` - -**Data exchanged during Login** + +**Data exchanged during Login** ``` GBA ADAPTER @@ -394,11 +395,11 @@ This register is not used in general purpose mode. That is, the separate bits of \\ \\ MSBs=Inverse of MSBs=Own Prev.Data.From.Adapter Data.From.Adapter -``` +``` # GBA Wireless Adapter Commands - -**Wireless Command/Parameter Transmission** + +**Wireless Command/Parameter Transmission** ``` GBA Adapter @@ -412,7 +413,7 @@ This register is not used in general purpose mode. That is, the separate bits of ... ... ;/ ``` -Wireless 32bit Transfers +Wireless 32bit Transfers ``` wait until \[4000128h\].Bit2=0 ;want SI=0 @@ -421,9 +422,9 @@ Wireless 32bit Transfers set \[4000128h\].Bit3=0,Bit7=1 ;set SO=0 and start 32bit transfer ``` -All command/param/reply transfers should be done at Internal Clock (except, Response Words for command 25h,27h,35h,37h should use External Clock). - -**Wireless Commands** +All command/param/reply transfers should be done at Internal Clock (except, Response Words for command 25h,27h,35h,37h should use External Clock). + +**Wireless Commands** ``` Cmd Para Reply Name @@ -444,7 +445,7 @@ All command/param/reply transfers should be done at Internal Clock (except, Resp 1Eh - NN Get Directory? (receive list of game/user names?) 1Fh 1 - Select Game for Download (send 16bit Game\_ID) - + 20h - 1 21h - 1 Good/Bad response to cmd 1Fh ? @@ -463,7 +464,7 @@ All command/param/reply transfers should be done at Internal Clock (except, Resp 2Eh 2Fh - + 30h 1 - 31h @@ -483,11 +484,11 @@ All command/param/reply transfers should be done at Internal Clock (except, Resp 3Fh ``` -Special Response 996601EEh for error or so? (only at software side?) - +Special Response 996601EEh for error or so? (only at software side?) + ## GBA Wireless Adapter Component Lists - -Main Chipset + +Main Chipset ``` U1 32pin Freescale MC13190 (2.4 GHz ISM band transceiver) @@ -497,9 +498,9 @@ Main Chipset The MC13190 is a Short-Range, Low-Power 2.4 GHz ISM band transceiver. The processor is Motorola's 32-bit M-Core RISC engine. (?) MCT3000 (?) -See also: [http://www.eetimes.com/document.asp?doc\_id=1271943](http://www.eetimes.com/document.asp?doc_id=1271943) - -Version with GERMAN Postal Code on sticker: +See also: [http://www.eetimes.com/document.asp?doc_id=1271943](http://www.eetimes.com/document.asp?doc_id=1271943) + +Version with GERMAN Postal Code on sticker: ``` Sticker on Case: @@ -514,7 +515,7 @@ Version with GERMAN Postal Code on sticker: X3 2pin "D959L4I" (9.5MHz) (top side) (ca. 19 clks per 2us) ``` -Further components... top side (A-7) +Further components... top side (A-7) ``` D1 5pin "D6F, 44" (top side, below X3) @@ -531,7 +532,7 @@ Further components... top side (A-7) CN1 6pin connector to GBA link port (top side) ``` -Further components... bottom side (B-7) +Further components... bottom side (B-7) ``` U201 5pin "LXVB" (bottom side, near CN1) @@ -540,8 +541,8 @@ Further components... bottom side (B-7) B70 6pin "\[\]" (bottom side, near ANT, small white chip) ``` -Plus, resistors and capacitors (without any markings). - +Plus, resistors and capacitors (without any markings). + Version WITHOUT sticker: ``` @@ -554,7 +555,7 @@ Version WITHOUT sticker: X3 2pin "9.5SKSS4GT" (top side) ``` -Further components... top side (A-1) +Further components... top side (A-1) ``` D1 5pin "D6F, 31" (top side, below X3) @@ -570,7 +571,7 @@ Further components... top side (A-1) CN1 6pin connector to GBA link port (top side) ``` -Further components... bottom side (B-1) +Further components... bottom side (B-1) ``` U201 5pin "LXV2" (bottom side, near CN1) @@ -579,9 +580,9 @@ Further components... bottom side (B-1) B70 6pin "\[\]" (bottom side, near ANT, small white chip) ``` -Plus, resistors and capacitors (without any markings). - -Major Differences +Plus, resistors and capacitors (without any markings). + +Major Differences ``` Sticker "N/A" vs "Grossosteim P/AGB-A-WA-EUR-2 E3" @@ -591,4 +592,4 @@ Major Differences U70/U72 U70 "AAG" (6pin) vs U72 "BMs" (4pin) ``` -Purpose of the changes is unknown (either older/newer revisions, or different regions with different FCC regulations). \ No newline at end of file +Purpose of the changes is unknown (either older/newer revisions, or different regions with different FCC regulations). diff --git a/docs/multiboot.md b/docs/multiboot.md index ece70b4..88e01ff 100644 --- a/docs/multiboot.md +++ b/docs/multiboot.md @@ -137,4 +137,4 @@
  • MultiPlay mode: https://www.problemkaputt.de/gbatek.htm#siomultiplayermode
  • - \ No newline at end of file + diff --git a/docs/wireless_adapter.md b/docs/wireless_adapter.md index fe44f07..b35ecd5 100644 --- a/docs/wireless_adapter.md +++ b/docs/wireless_adapter.md @@ -1,17 +1,15 @@ -Game Boy Advance Wireless Adapter -------------------------------------------------- +## Game Boy Advance Wireless Adapter - 🌎 **Original post**: https://blog.kuiper.dev/gba-wireless-adapter 🌎 - ✏️ **Updates**: [@davidgfnet](https://github.com/davidgfnet) and I were discovering new things and we added them here! > You can learn more details by reading [LinkRawWireless.hpp](../lib/LinkRawWireless.hpp)'s code. -The Wireless Adapter -==================== +# The Wireless Adapter [![The Game Boy Advance Wireless Adapter](img/wirelessadapter.jpg)](img/wirelessadapter.jpg) -*The Game Boy Advance Wireless Adapter* +_The Game Boy Advance Wireless Adapter_ The wireless adapter is a piece of hardware that connects to the link cable port of a GBA that then communicates wirelessly with other adapters. It also contains a multibootable[1](#fn:multiboot) rom for playing games only one player has a copy of (although I am not aware of many games that use it, some NES classic games use this). However, the most notable games to use it is probably the Pokémon games Fire Red, Leaf Green and Emerald (Sapphire and Ruby do _not_ have wireless adapter support)[2](#fn:list_of_games). @@ -19,32 +17,29 @@ The wireless adapter is a piece of hardware that connects to the link cable port multiboot rom from the wireless adapter showing a game title of AGB.RS and a username of CORWIN](img/multiboot.jpg)](img/multiboot.jpg) -*You can make this screen display any game* +_You can make this screen display any game_ -Communicating with the adapter -============================== +# Communicating with the adapter When I started, I used the following resources to start being able to talk with the wireless adapter: -* [This Gist contains some details](wireless.txt) -* [GBATEK has a section on the wireless adapter](gbatek.md) +- [This Gist contains some details](wireless.txt) +- [GBATEK has a section on the wireless adapter](gbatek.md) -Pinout ------- +## Pinout The wireless adapter connects using the link cable port to the GBA. It uses -* 3.3V -* Serial In -* Serial out -* SD -* Clock -* Ground +- 3.3V +- Serial In +- Serial out +- SD +- Clock +- Ground which is all 6 of the pins. If you are going to mess with interfacing with the link cable yourself, make sure you know which pin is which. If you just want to use the wireless adapter as part of the GBA this isn’t relevant. -Serial Peripheral Interface ---------------------------- +## Serial Peripheral Interface Broadly speaking the GBA communicates with the wireless adapter using the Serial Peripheral Interface (SPI), however it can be somewhat weird. In the case of the GBA this is a three or four wire protocol depending on how you count. The clock, two data wires, and what is normally chip select but operates more as a reset. @@ -54,22 +49,21 @@ Broadly speaking the GBA communicates with the wireless adapter using the Serial analyser displaying an SPI trace from the GBA and wireless adapter communications](img/init.png)](img/init.png) -*A logic analyser can be used to probe the link cable protocol between the GBA and a Wireless Adapter* +_A logic analyser can be used to probe the link cable protocol between the GBA and a Wireless Adapter_ I will break up the ways in which you communicate into three parts: -* Initialisation -* Commands -* Waiting for data +- Initialisation +- Commands +- Waiting for data One thing to make note of is that when I have screenshots showing the logic analyser traces, these all come from Pokémon Emerald as it is what I had at the time I did a lot of this. -Initialisation --------------- +## Initialisation [![The initialisation sequence captured using a logic analyser](img/full_initialisation.png)](img/full_initialisation.png) -*The initialisation sequence captured using a logic analyser* +_The initialisation sequence captured using a logic analyser_ Before starting sending and receiving commands, a handshake with the adapter needs to be done. During this, the clocks runs at 256 kHz. Real games start this process by resetting the adapter. @@ -86,22 +80,22 @@ The GBA and the adapter exchange the word “NINTENDO” with each other in quit [![GBA sends `0x7FFF494E` and wireless adapter sends `0x00000000`.](img/first_single_u32.png)](img/first_single_u32.png) -*GBA sends `0x7FFF494E` and wireless adapter sends `0x00000000`.* +_GBA sends `0x7FFF494E` and wireless adapter sends `0x00000000`._ The GBA here sends `0x7FFF494E`, of this the relevant part is the `0x494E`. If we look up what the bytes `0x49, 0x4E` are you will find them to be the letters `NI`. As exchanges happen simultaneously, at this point the adapter doesn’t know what to respond with and so responds with all zeros. [![GBA sends `0xFFFF494E` and wireless adapter sends `0x494EB6B1`.](img/first_nintendo_32.png)](img/first_nintendo_32.png) -*GBA sends `0xFFFF494E` and wireless adapter sends `0x494EB6B1`.* +_GBA sends `0xFFFF494E` and wireless adapter sends `0x494EB6B1`._ Next the GBA sends `0xFFFF494E` and now the wireless adapter does respond and responds with `0x494EB6B1`. I can assure you there is a pattern here: -* GBA: - * Two _most_ significant bytes are the inverse of the adapters previous _most_ significant bytes. - * Two _least_ significant bytes are the GBA’s own data. -* Adapter: - * Two _least_ significant bytes are the inverse of the GBA’s previous _least_ significant bytes. - * Two most significant bytes are the adapters own data. +- GBA: + - Two _most_ significant bytes are the inverse of the adapters previous _most_ significant bytes. + - Two _least_ significant bytes are the GBA’s own data. +- Adapter: + - Two _least_ significant bytes are the inverse of the GBA’s previous _least_ significant bytes. + - Two most significant bytes are the adapters own data. The “own” data are the bytes of the string “NINTENDO”, and you advance to the next pair when the most significant bytes equal the inverse of the least significant bytes. @@ -160,48 +154,48 @@ Following these rules the transfer looks like Although note that due to the rules, the first few transfers may contain some junk data and be different to this in practice. And after this, you can start sending commands. -Commands --------- +## Commands [![A command being sent by the GBA and acknowledged by the adapter](img/0x17.png)](img/0x17.png) -*A command being sent by the GBA and acknowledged by the adapter* +_A command being sent by the GBA and acknowledged by the adapter_ Commands are how you tell the adapter to do things. When in command mode the clock operates at 2 mHz. Some examples of commands include connect to adapter, send message, and receive message. All commands follow the same form: -* Command - - The command is a 32 bit value of the form `0x9966LLCC`: - - * LL - * The length of the data payload in number of 32 bit values. For example here it is `0x01`, so one value is transmitted after this. - * CC - * The command type, there are a bunch of these! In this case the command type is `0x17`. -* Data - - All the data along with the command, must transmit the number given in the command - -* Acknowledge - - The adapter responds with a command, the length is the number of 32 bit values and the command type is always what you send + `0x80`. In this case the length is zero and the command is `0x17` + `0x80` = `0x97`. - - * ⚠️ When you send invalid commands or a one you're not supposed to send in the current state (like sending a `0x1d` before a `0x1c`), the adapter responds `0x996601ee`. If you read the next word (as the response size is `01`), it gives you an error code (`2` when using an invalid command, `1` when using a valid command in an invalid state, or `0`). +- Command -* Response - - The data that the adapter responds with. Equal to the length given in the acknowledgement. + The command is a 32 bit value of the form `0x9966LLCC`: -* Ready - - In the figure, you’ll see that after exchanging any 32 bit value using SPI, some out of clock communication happens. This is the GBA and the Adapter signalling to each other that they are ready to communicate. This happens over the following stages: - - 1. The GBA goes low as soon as it can. - 2. The adapter goes high. - 3. The GBA goes high. - 4. The adapter goes low _when it’s ready_. - 5. The GBA goes low when it’s ready. - 6. The GBA starts a transfer, clock starts pulsing, and both sides exchange the next 32 bit value. + - LL + - The length of the data payload in number of 32 bit values. For example here it is `0x01`, so one value is transmitted after this. + - CC + - The command type, there are a bunch of these! In this case the command type is `0x17`. + +- Data + + All the data along with the command, must transmit the number given in the command + +- Acknowledge + + The adapter responds with a command, the length is the number of 32 bit values and the command type is always what you send + `0x80`. In this case the length is zero and the command is `0x17` + `0x80` = `0x97`. + + - ⚠️ When you send invalid commands or a one you're not supposed to send in the current state (like sending a `0x1d` before a `0x1c`), the adapter responds `0x996601ee`. If you read the next word (as the response size is `01`), it gives you an error code (`2` when using an invalid command, `1` when using a valid command in an invalid state, or `0`). + +- Response + + The data that the adapter responds with. Equal to the length given in the acknowledgement. + +- Ready + + In the figure, you’ll see that after exchanging any 32 bit value using SPI, some out of clock communication happens. This is the GBA and the Adapter signalling to each other that they are ready to communicate. This happens over the following stages: + + 1. The GBA goes low as soon as it can. + 2. The adapter goes high. + 3. The GBA goes high. + 4. The adapter goes low _when it’s ready_. + 5. The GBA goes low when it’s ready. + 6. The GBA starts a transfer, clock starts pulsing, and both sides exchange the next 32 bit value. ⌛ If this acknowledge procedure doesn't complete, the adapter "gives up" after ~800μs and start listening again for commands. That means that if a game doesn't implement this logic, it has to wait almost 1 millisecond between transfers (vs ~40μs in normal scenarios). @@ -213,21 +207,20 @@ Whenever either side expects something to be sent from the other (as SPI is alwa [![Image without alt text or caption](img/0x10.png)](img/0x10.png) -* Send length: 0, Response length: 0 - -* First thing to be called after finishing the initialisation sequence. +- Send length: 0, Response length: 0 +- First thing to be called after finishing the initialisation sequence. #### Setup - `0x17` [![Image without alt text or caption](img/0x17.png)](img/0x17.png) -* Send length: 1, response length: 0 - -* Games set this. It seems to setup the adapter's configuration. +- Send length: 1, response length: 0 +- Games set this. It seems to setup the adapter's configuration. Both Pokemon games and the multiboot ROM that the adapter sends when no cartridge is inserted use `0x003C0420`. 🔝 For a game, the most important bits are bits `16-17` (let's call this `maxPlayers`), which specify the maximum number of allowed players: + - `00`: 5 players (1 host and 4 clients) - `01`: 4 players - `10`: 3 players @@ -243,9 +236,8 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg [![Image without alt text or caption](img/0x16.png)](img/0x16.png) -* Send length: 6, response length: 0 - -* The data to be broadcast out to all adapters. Examples of use include the union room, broadcasting game name and username in download play, and the username in direct multiplayer in Pokémon. +- Send length: 6, response length: 0 +- The data to be broadcast out to all adapters. Examples of use include the union room, broadcasting game name and username in download play, and the username in direct multiplayer in Pokémon. 💻 This is the first command used to start a server. The 6 parameters are the ASCII characters of the game and user name, plus some bytes indicating whether the server should appear in the Download Play list or not. Here's a byte by byte explanation: @@ -259,36 +251,33 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### StartHost - `0x19` -* Send length: 0, response length: 0 - -* This uses the broadcast data given by the broadcast command and actually does the broadcasting. +- Send length: 0, response length: 0 +- This uses the broadcast data given by the broadcast command and actually does the broadcasting. #### EndHost - `0x1b` -* Send length: 0, response length: 2+ - -* This command stops host broadcast. This allows to "close" the session and stop allowing new clients, but also **keeping the existing connections alive**. Sends and Receives still work, but: - - Clients cannot connect, even if they already know the host ID (`FinishConnection` will fail). - - Calls to `AcceptConnections` on the host side will fail, unless `StartHost` is called again. - +- Send length: 0, response length: 2+ +- This command stops host broadcast. This allows to "close" the session and stop allowing new clients, but also **keeping the existing connections alive**. Sends and Receives still work, but: + - Clients cannot connect, even if they already know the host ID (`FinishConnection` will fail). + - Calls to `AcceptConnections` on the host side will fail, unless `StartHost` is called again. + #### BroadcastRead - `0x1c`, `0x1d` and `0x1e` [![Image without alt text or caption](img/0x1d.png)](img/0x1d.png) -* Send length: 0, response length: 7 \* number of broadcasts (maximum: 4) - -* All currently broadcasting devices are returned here along with a word of **metadata** (the metadata word first, then 6 words with broadcast data). -* The metadata contains: - * First 2 bytes: Server ID. IDs have 16 bits. - * 3rd byte: Next available slot. This can be used to check whether a player can join a room or not. - * `0b00`: If you join this room, your `clientNumber` will be 0. - * `0b01`: If you join this room, your `clientNumber` will be 1. - * `0b10`: If you join this room, your `clientNumber` will be 2. - * `0b11`: If you join this room, your `clientNumber` will be 3. - * `0xff`: The server is full. You cannot join this room. - * Although `LinkWireless` uses this to know the number of connected players, that only works because -by design- rooms are closed when a player disconnects. The hardware allows disconnecting specific clients, so if the next available slot is e.g. 2, it can mean that there are 3 connected players (1 host + 2 clients) or that there are more players, but the third client (`clientNumber` = 2) has disconnected and the slot is now free. - * The number of available slots depends on `maxPlayers` (see [Setup](#setup---0x17)) and/or [EndHost](#endhost---0x1b). - * 4th byte: Zero. +- Send length: 0, response length: 7 \* number of broadcasts (maximum: 4) +- All currently broadcasting devices are returned here along with a word of **metadata** (the metadata word first, then 6 words with broadcast data). +- The metadata contains: + - First 2 bytes: Server ID. IDs have 16 bits. + - 3rd byte: Next available slot. This can be used to check whether a player can join a room or not. + - `0b00`: If you join this room, your `clientNumber` will be 0. + - `0b01`: If you join this room, your `clientNumber` will be 1. + - `0b10`: If you join this room, your `clientNumber` will be 2. + - `0b11`: If you join this room, your `clientNumber` will be 3. + - `0xff`: The server is full. You cannot join this room. + - Although `LinkWireless` uses this to know the number of connected players, that only works because -by design- rooms are closed when a player disconnects. The hardware allows disconnecting specific clients, so if the next available slot is e.g. 2, it can mean that there are 3 connected players (1 host + 2 clients) or that there are more players, but the third client (`clientNumber` = 2) has disconnected and the slot is now free. + - The number of available slots depends on `maxPlayers` (see [Setup](#setup---0x17)) and/or [EndHost](#endhost---0x1b). + - 4th byte: Zero. 🆔 IDs are randomly generated. Each time you broadcast or connect, the adapter assigns you a new ID. @@ -300,10 +289,9 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### AcceptConnections - `0x1a` -* Send length: 0, response length: 0+ - -* Accepts new connections and returns a list with the connected adapters. The length of the response is zero if there are no connected adapters. -* It includes one value per connected client, in which the most significant byte is the `clientNumber` (see [IsFinishedConnect](#isfinishedconnect---0x20)) and the least significant byte is the ID. +- Send length: 0, response length: 0+ +- Accepts new connections and returns a list with the connected adapters. The length of the response is zero if there are no connected adapters. +- It includes one value per connected client, in which the most significant byte is the `clientNumber` (see [IsFinishedConnect](#isfinishedconnect---0x20)) and the least significant byte is the ID. 🔗 If this command reports 3 connected consoles, after turning off one of them, it will still report 3 consoles. Servers need to detect timeouts in another way. @@ -311,18 +299,16 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg [![Image without alt text or caption](img/0x1f.png)](img/0x1f.png) -* Send length: 1, response length: 0 - -* Send the ID of the adapter you want to connect to from [BroadcastRead](#broadcastread---0x1c-0x1d-and-0x1e). +- Send length: 1, response length: 0 +- Send the ID of the adapter you want to connect to from [BroadcastRead](#broadcastread---0x1c-0x1d-and-0x1e). #### IsFinishedConnect - `0x20` [![Image without alt text or caption](img/0x20.png)](img/0x20.png) -* Send length: 0, response length: 1 - -* Responds with a 16 bit ID as lower 16 bits if finished, otherwise responds with `0x01000000`. - +- Send length: 0, response length: 1 +- Responds with a 16 bit ID as lower 16 bits if finished, otherwise responds with `0x01000000`. + 👆 It also responds in its bits 16 and 17 a number that represents the `clientNumber` (0 to 3). Lets say our ID is `abcd`, it will respond `0x0000abcd` if we are the first client that connects to that server, `0x0001abcd` if we are the second one, `0x0002abcd` third, and `0x0003abcd` fourth. Rooms allow 5 simultaneous adapters at max. 💥 If the connection failed, the `clientNumber` will be a number higher than `3`. @@ -331,54 +317,55 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg [![Image without alt text or caption](img/0x21.png)](img/0x21.png) -* Send length: 0, response length: 1 - -* Called after [IsFinishedConnect](#isfinishedconnect---0x20), responds with the final device ID (which tends to be equal to the ID from the previous command), the `clientNumber` in bits 16 and 17, and if all went well, zeros in its remaining bits. +- Send length: 0, response length: 1 +- Called after [IsFinishedConnect](#isfinishedconnect---0x20), responds with the final device ID (which tends to be equal to the ID from the previous command), the `clientNumber` in bits 16 and 17, and if all went well, zeros in its remaining bits. #### SendData - `0x24` -* Send length: N, response length: 0 - -* Send N 32 bit values to connected adapter. - +- Send length: N, response length: 0 +- Send N 32 bit values to connected adapter. + ⚠️ The first value **is a header**, and has to be correct. Otherwise, the adapter will ignore the command and won't send any data. The header is as follows: + - For hosts: the number of `bytes` that come next. For example, if we want to send `0xaabbccdd` and `0x12345678` in the same command, we need to send: - * `0x00000008`, `0xaabbccdd`, `0x12345678`. + - `0x00000008`, `0xaabbccdd`, `0x12345678`. - For clients: `(bytes << (3 + (1+clientNumber) * 5))`. The `clientNumber` is what I described in [IsFinishedConnect](#isfinishedconnect---0x20). For example, if we want to send a single 4-byte value (`0xaabbccdd`): - * The first client should send: `0x400`, `0xaabbccdd` - * The second client should send: `0x8000`, `0xaabbccdd` - * The third client should send: `0x100000`, `0xaabbccdd` - * The fourth client should send: `0x2000000`, `0xaabbccdd` + - The first client should send: `0x400`, `0xaabbccdd` + - The second client should send: `0x8000`, `0xaabbccdd` + - The third client should send: `0x100000`, `0xaabbccdd` + - The fourth client should send: `0x2000000`, `0xaabbccdd` 🔝 Each `SendData` can send up to: + - **Host:** 87 bytes (or 21.75 values) - **Clients:** 16 bytes (or 4 values) -- *(the header doesn't count)* +- _(the header doesn't count)_ 🗂️ Any non-multiple of 4 byte count will send LSB bytes first. For example, a host sending `0x00000003`, `0xaabbccdd` will result in bytes `0xbb`, `0xcc` and `0xdd` being received by clients (the clients will receive `0x00bbccdd`). 🤝 Note that when having more than 2 connected adapters, data is not transferred between different clients. If a client wants to tell something to another client, it has to talk first with the host with `SendData`, and then the host needs to relay that information to the other client. 👑 Internally, data is only sent when **the host** calls `SendData`: + - The send/receive buffer size is 1 packet, so calling `SendData` multiple times on either side (before the other side calls `ReceiveData`) will result in data loss. - Clients only **schedule** the data transfer, but they don't do it until the host sends something. This is problematic because the command overrides previously scheduled transfers, so calling `SendData` multiple times on the client side before the host calls `SendData` would also result in data loss. I believe this is why most games use `SendDataWait` on the client side. - Here's an example of this behavior: - - **Client**: `SendData` `{sndHeader}`, `10` - - **Host**: `SendData` `{sndHeader}`, `1` **(\*)** - - *(here, the adapter internally receives the 10 from the client)* - - **Host**: `SendData` `{sndHeader}`, `2` - - *(here, the previous packet with 1 is lost since nobody received it yet)* - - **Client**: `ReceiveData` - - Receives `{rcvHeader}`, `2` - - **Client**: `SendData` `{sndHeader}`, `20` - - **Host**: `ReceiveData` - - Receives `{rcvHeader}`, `10` *(pending from **(\*)**)* - - **Host**: `ReceiveData` - - Receives nothing - - **Host**: `SendData` `{sndHeader}`, `3` - - *(here, the adapter internally receives the 20 from the client)* - - **Host**: `ReceiveData` - - Receives `{rcvHeader}`, 20 + - **Client**: `SendData` `{sndHeader}`, `10` + - **Host**: `SendData` `{sndHeader}`, `1` **(\*)** + - _(here, the adapter internally receives the 10 from the client)_ + - **Host**: `SendData` `{sndHeader}`, `2` + - _(here, the previous packet with 1 is lost since nobody received it yet)_ + - **Client**: `ReceiveData` + - Receives `{rcvHeader}`, `2` + - **Client**: `SendData` `{sndHeader}`, `20` + - **Host**: `ReceiveData` + - Receives `{rcvHeader}`, `10` _(pending from **(\*)**)_ + - **Host**: `ReceiveData` + - Receives nothing + - **Host**: `SendData` `{sndHeader}`, `3` + - _(here, the adapter internally receives the 20 from the client)_ + - **Host**: `ReceiveData` + - Receives `{rcvHeader}`, 20 🔁 This command can also be used with one header and **no data**. In this case, it will resend the last N bytes (based on the header) of the last packet. Until we have a better name, we'll call this **ghost sends**. @@ -386,19 +373,17 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg [![Image without alt text or caption](img/0x25.png)](img/0x25.png) -* Send length: N, response length: 0 - -* The same as [SendData](#senddata---0x24) but with the additional effect of [Wait](#wait---0x27) -* See [Waiting](#waiting) for more details on this. +- Send length: N, response length: 0 +- The same as [SendData](#senddata---0x24) but with the additional effect of [Wait](#wait---0x27) +- See [Waiting](#waiting) for more details on this. #### ReceiveData - `0x26` [![Image without alt text or caption](img/0x26.png)](img/0x26.png) -* Send length: 0, response length: N - -* Responds with all the data from all adapters. No IDs are included, this is just what was sent concatenated together. -* Once data has been pulled out, it clears the data buffer, so calling this again can only get new data. +- Send length: 0, response length: N +- Responds with all the data from all adapters. No IDs are included, this is just what was sent concatenated together. +- Once data has been pulled out, it clears the data buffer, so calling this again can only get new data. 🧩 The data is only concatenated on the host side, and its order is based on the `clientNumber`. It doesn't matter who called `SendData` first. @@ -412,32 +397,31 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg - The rest of the bits are `0`. 🧱 Concatenation is done at **byte** level. So, for example, if client 3 sends 3 bytes (`0xAABBCC`) and client 1 sends 2 bytes (`0xDDEE`), the host would receive 3 words: - - (header) `0b0000_00011_00000_00000_00010_0_0000000`, `0xEEAABBCC`, `0x000000DD` + +- (header) `0b0000_00011_00000_00000_00010_0_0000000`, `0xEEAABBCC`, `0x000000DD` #### Wait - `0x27` [![Image without alt text or caption](img/0x27.png)](img/0x27.png) -* Send length: 0, response length: 0 - -* See [Waiting](#waiting) for more details on this. - +- Send length: 0, response length: 0 +- See [Waiting](#waiting) for more details on this. + #### DisconnectClient - `0x30` [![Image without alt text or caption](img/0x30.png)](img/0x30.png) -* Send length 1, reponse length: 0 - -* This command disconnects clients. The argument is a bitmask of the client ID to disconnect. Sending `0x1` means "disconnect client number 0", sending `0x2` means "disconnect client number 1", and sending `0xF` would disconnect all the clients. After disconnecting a client, its ID won't appear on `AcceptConnection` calls and its `clientNumber` will be liberated, so other peers can connect. +- Send length 1, reponse length: 0 +- This command disconnects clients. The argument is a bitmask of the client ID to disconnect. Sending `0x1` means "disconnect client number 0", sending `0x2` means "disconnect client number 1", and sending `0xF` would disconnect all the clients. After disconnecting a client, its ID won't appear on `AcceptConnection` calls and its `clientNumber` will be liberated, so other peers can connect. ⚡ The clients also are able to disconnect themselves using this command, but they can only send its corresponding bit or `0xF`, other bits are ignored (they cannot disconnect other clients). Also, the host won't know if a client disconnects itself, so this feature is not very useful: - * The host still needs to monitor clients to ensure they are still alive (ie. through some PING like mechanism) and disconnect them if they are not, to allow new clients to connect. [4](#pokered) + +- The host still needs to monitor clients to ensure they are still alive (ie. through some PING like mechanism) and disconnect them if they are not, to allow new clients to connect. [4](#pokered) #### Bye - `0x3d` -* Send length: 0, Response length: 0 - -* This sets the adapter in a low power consumption mode. Games use it when the player exits the multiplayer mode. To use the adapter again after this command, a new reset/initialization is needed. +- Send length: 0, Response length: 0 +- This sets the adapter in a low power consumption mode. Games use it when the player exits the multiplayer mode. To use the adapter again after this command, a new reset/initialization is needed. ### Other commands @@ -445,58 +429,59 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg [![Image without alt text or caption](img/0x11.png)](img/0x11.png) -* Send length: 0, response length: 1 - -* This returns the signal level of the other adapters from `0` to `0xFF` (`0` means disconnected). -* The levels are returned in a single value, the first byte being the signal level of client 0, and the last byte being the signal level of client 3. -* When called from a client, it only returns the signal level of that client in its corresponding byte. The rest of the bytes will be `0`. +- Send length: 0, response length: 1 +- This returns the signal level of the other adapters from `0` to `0xFF` (`0` means disconnected). +- The levels are returned in a single value, the first byte being the signal level of client 0, and the last byte being the signal level of client 3. +- When called from a client, it only returns the signal level of that client in its corresponding byte. The rest of the bytes will be `0`. #### VersionStatus - `0x12` -* Send length: 0, Response length: 1 +- Send length: 0, Response length: 1 -* In my adapter, it always returns `8585495` (decimal). It contains the hardware and firmware version of the adapter. +- In my adapter, it always returns `8585495` (decimal). It contains the hardware and firmware version of the adapter. #### SystemStatus - `0x13` -* Send length: 0, Response length: 1 +- Send length: 0, Response length: 1 -* Returns some information about the current connection and device state. The returned word contains: -- Bits `0-15`: The device ID (or zero if the device is not connected nor hosting). -- Bits `16-23`: A 4-bit array with slots. If the console is a client, it'll have a 1 in the position assigned to that slot (e.g. the one with `clientNumber` 3 will have `0100`). The host will always have `0000` here. -- Bits `24-31`: A number indicating the state of the adapter - - `0` = idle - - `1`/`2` = serving (host) - - `3` = searching - - `4` = connecting - - `5` = connected (client) +- Returns some information about the current connection and device state. The returned word contains: + +* Bits `0-15`: The device ID (or zero if the device is not connected nor hosting). +* Bits `16-23`: A 4-bit array with slots. If the console is a client, it'll have a 1 in the position assigned to that slot (e.g. the one with `clientNumber` 3 will have `0100`). The host will always have `0000` here. +* Bits `24-31`: A number indicating the state of the adapter + - `0` = idle + - `1`/`2` = serving (host) + - `3` = searching + - `4` = connecting + - `5` = connected (client) #### SlotStatus - `0x14` -* Send length: 0, Response length: 1+ +- Send length: 0, Response length: 1+ -* It's returns a list of the connected adapters, similar to what `AcceptConnections` responds, but also: +- It's returns a list of the connected adapters, similar to what `AcceptConnections` responds, but also: - - `SlotStatus` has an extra word at the start of the response, indicating the `clientNumber` that the next connection will have (or `0xFF` if the room is not accepting new clients). - - `SlotStatus` can be called after `EndHost`, while `AcceptConnections` fails. + - `SlotStatus` has an extra word at the start of the response, indicating the `clientNumber` that the next connection will have (or `0xFF` if the room is not accepting new clients). + - `SlotStatus` can be called after `EndHost`, while `AcceptConnections` fails. #### ConfigStatus - `0x15` -* Send length: 0, Response length: 7 (as client), or 8 (as host) -* Returns the adapter configuration. +- Send length: 0, Response length: 7 (as client), or 8 (as host) +- Returns the adapter configuration. 🤔 In my tests... + - As client, it returned: `0, 0, 0, 0, 0, 0, 257`. - As host, it returned: `1, 2, 3, 4, 5, 6, 3933216, 257`. - * `1, 2, 3, 4, 5, 6` would be the broadcast data. - * `3933216` is the value used in the [Setup](#setup---0x17) command (`0x003C0420`). - * No idea what `257` this means. + - `1, 2, 3, 4, 5, 6` would be the broadcast data. + - `3933216` is the value used in the [Setup](#setup---0x17) command (`0x003C0420`). + - No idea what `257` this means. #### RetransmitAndWait - `0x37` -* Send length: 0, Response length: 0 -* Retransmits the last data from a host to all clients, with the additional effect of [Wait](#wait---0x27) -* See [Waiting](#waiting) for more details on this. +- Send length: 0, Response length: 0 +- Retransmits the last data from a host to all clients, with the additional effect of [Wait](#wait---0x27) +- See [Waiting](#waiting) for more details on this. ### Unknown commands @@ -510,16 +495,15 @@ If we analyze whether a command ID throws an 'invalid command' error (`0x996601e - `0x38` - `0x39` -Waiting -------- +## Waiting [![Image without alt text or caption](img/wake-up.png)](img/wake-up.png) -* After either [SendDataWait](#senddatawait---0x25) or [Wait](#wait---0x27), clock control switches to the wireless adapter. -* Once the adapter has something to tell the GBA about, the _adapter_ sends a command to the GBA (usually `0x99660028`). -* These transfers are dealt with in much the same way as before but with the roles of the GBA and the adapter reversed, see the figure! -* The GBA then sends the response back (e.g. `0x996600A8` as `0x28` + `0x80` = `0xA8`). -* After this, control of the clock returns to the GBA, and it can start sending commands back again. For example this might be receiving the command sent by the other device using [ReceiveData](#receivedata---0x26). +- After either [SendDataWait](#senddatawait---0x25) or [Wait](#wait---0x27), clock control switches to the wireless adapter. +- Once the adapter has something to tell the GBA about, the _adapter_ sends a command to the GBA (usually `0x99660028`). +- These transfers are dealt with in much the same way as before but with the roles of the GBA and the adapter reversed, see the figure! +- The GBA then sends the response back (e.g. `0x996600A8` as `0x28` + `0x80` = `0xA8`). +- After this, control of the clock returns to the GBA, and it can start sending commands back again. For example this might be receiving the command sent by the other device using [ReceiveData](#receivedata---0x26). ⌚ This timeouts after 500ms of the adapter not having anything to tell the GBA about. In this case, the adapter sends `0x99660027`. **This is only true if the console has used the [Setup](#setup---0x17) command before**. The value that most games use (`0x003C0420`) contains this timeout value, but the default is zero (no timeout). @@ -528,14 +512,16 @@ Waiting 💨 Clients receive the `0x28` when new data from the host is available, but the host receives it immediately (well, after the transfer completes), as it can be used to know which clients received data or are disconnected. ⚠️ If some children didn't receive the data, the adapter sends to the host GBA a `0x99660128`. - - The extra parameter has two bitarrays: - * Bits `0-4`: The clients that _received_ data. - * Bits `8-11`: The clients marked as _inactive_. This depends on the # of maximum transmissions configured with the [Setup](#setup---0x17) command. + +- The extra parameter has two bitarrays: + - Bits `0-4`: The clients that _received_ data. + - Bits `8-11`: The clients marked as _inactive_. This depends on the # of maximum transmissions configured with the [Setup](#setup---0x17) command. 🔗 When the adapter is disconnected from the host, it sends a `0x99660029`. - - Bit 8 of the response indicates the reason: - * `0` = manual disconnect (aka the host used [DisconnectClient](#disconnectclient---0x30)) - * `1` = the connection was lost + +- Bit 8 of the response indicates the reason: + - `0` = manual disconnect (aka the host used [DisconnectClient](#disconnectclient---0x30)) + - `1` = the connection was lost ◀ **Inverted ACKs** @@ -548,20 +534,19 @@ While the clock is inverted, the acknowledge procedure is 'standard' but with th 5. The adapter goes low when it's ready. 6. The adapter starts a transfer, clock starts pulsing, and both sides exchange the next 32 bit value. -Wireless Multiboot ------------------- +## Wireless Multiboot > You can learn more details by reading [LinkWirelessMultiboot.hpp](../lib/LinkWirelessMultiboot.hpp)'s code. To host a 'multiboot' room, a host sets the **multiboot flag** (bit 15) in its game ID (inside broadcast data) and starts serving. -- 1) For each new client that connects, it runs a small handshake where the client sends their 'game name' and 'player name'. The bootloader always sends `RFU-MB-DL` as game name and `PLAYER A` (or `B`, `C`, `D`) as player name. +- 1. For each new client that connects, it runs a small handshake where the client sends their 'game name' and 'player name'. The bootloader always sends `RFU-MB-DL` as game name and `PLAYER A` (or `B`, `C`, `D`) as player name. -- 2) When the host player confirms that all players are ready, it sends a 'rom start' command. +- 2. When the host player confirms that all players are ready, it sends a 'rom start' command. -- 3) The host sends the rom bytes in 84-byte chunks. +- 3. The host sends the rom bytes in 84-byte chunks. -- 4) The host sends a 'rom end' command and the games boot. +- 4. The host sends a 'rom end' command and the games boot. ### Valid header @@ -637,37 +622,37 @@ enum CommState : unsigned int { - Payload: `0x01`, `0x06`, `0x00`, `0x1A`, `0x00`, `0x00` - Server: ACKs the packet (`size=0, n=1, ph=0, ack=1, commState=1`) - Client: sends `0x00000501` - - Header: `0x0501` (`size=1, n=2, ph=0, ack=0, commState=1`) - - Payload: `0x00` + - Header: `0x0501` (`size=1, n=2, ph=0, ack=0, commState=1`) + - Payload: `0x00` - Server: ACKs the packet - Client: sends `0x00000886`, `0x2D554652` - - Header: `0x0886` (`size=6, n=1, ph=0, ack=0, commState=2`) (`2 = COMMUNICATING`) - - Payload: `0x00`, `0x00`, `0x52`, `0x46`, `0x55`, `0x2D` - - => `RFU-` + - Header: `0x0886` (`size=6, n=1, ph=0, ack=0, commState=2`) (`2 = COMMUNICATING`) + - Payload: `0x00`, `0x00`, `0x52`, `0x46`, `0x55`, `0x2D` + - => `RFU-` - Server: ACKs the packet - Client: sends `0x424D08A6`, `0x004C442D` - - Header: `0x08A6` (`size=6, n=1, ph=1, ack=0, commState=2`) - - Payload: `MB-DL` + - Header: `0x08A6` (`size=6, n=1, ph=1, ack=0, commState=2`) + - Payload: `MB-DL` - Server: ACKs the packet - Client: sends `0x000008C6`, `0x50000000` - - Header: `0x08C6` (`size=6, n=1, ph=2, ack=0, commState=2`) - - Payload: `P` + - Header: `0x08C6` (`size=6, n=1, ph=2, ack=0, commState=2`) + - Payload: `P` - Server: ACKs the packet - Client: sends `0x414C08E6`, `0x20524559` - - Header: `0x08E6` (`size=6, n=1, ph=3, ack=0, commState=2`) - - Payload: `LAYER` + - Header: `0x08E6` (`size=6, n=1, ph=3, ack=0, commState=2`) + - Payload: `LAYER` - Server: ACKs the packet - Client: sends `0x00410902` - - Header: `0x0902` (`size=2, n=2, ph=0, ack=0, commState=2`) - - Payload: `A` + - Header: `0x0902` (`size=2, n=2, ph=0, ack=0, commState=2`) + - Payload: `A` - Server: ACKs the packet - Client: sends `0x00000C00` - - Header: `0x0C00` (`size=0, n=0, ph=0, ack=0, commState=3`) (`3 = ENDING`) - - No payload + - Header: `0x0C00` (`size=0, n=0, ph=0, ack=0, commState=3`) (`3 = ENDING`) + - No payload - Server: ACKs the packet - Client: sends `0x00000080` - - Header: `0x0080` (`size=0, n=1, ph=0, ack=0, commState=0`) (`0 = OFF`) - - No payload + - Header: `0x0080` (`size=0, n=1, ph=0, ack=0, commState=0`) (`0 = OFF`) + - No payload - Server: ACKs the packet ## (2) ROM start command @@ -691,22 +676,18 @@ After all ROM chunks are ACK'd, the last transfers are: - `size=0, n=0, ph=0, ack=0, commState=3` (`3 = ENDING`) - `size=0, n=1, ph=0, ack=0, commState=0` (`0 = OFF`) -SPI config ----------- +## SPI config Here's how SPI works on the GBA: [![Image without alt text or caption](img/logic2.png)](img/logic2.png) -I know more! -============ +# I know more! If you know any extra details about the wireless adapter, get in touch!. For specific details I’ve left footnotes around if you happen to know that piece of information. 1. Multiboot is what we call a rom that can be booted over link cable. This can be used for something akin to download play software for the DS. [↩︎](#fnref:multiboot) - 2. [Games compatible with the wireless adapter](https://en.wikipedia.org/wiki/Game_Boy_Advance_Wireless_Adapter#Compatible_games) [↩︎](#fnref:list_of_games) - 3. [Send me an email if you know more about this](https://blog.kuiper.dev/contact) 4. Some interesting data about the RFU adapter can be found in Pokemon Games, see the [FireRed Decompilation](https://github.com/pret/pokefirered/blob/49ea462d7f421e75a76b25d7e85c92494c0a9798/include/librfu.h#L44) for more information. diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 86cfc2c..2701f1e 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -133,4 +133,4 @@ void log(std::string text) { tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); -} \ No newline at end of file +} diff --git a/examples/LinkCable_basic/src/main.cpp b/examples/LinkCable_basic/src/main.cpp index 2f92560..dd109b3 100644 --- a/examples/LinkCable_basic/src/main.cpp +++ b/examples/LinkCable_basic/src/main.cpp @@ -77,4 +77,4 @@ void log(std::string text) { tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); -} \ No newline at end of file +} diff --git a/examples/LinkCable_full/src/utils/InputHandler.h b/examples/LinkCable_full/src/utils/InputHandler.h index 163e02e..ebe25fe 100644 --- a/examples/LinkCable_full/src/utils/InputHandler.h +++ b/examples/LinkCable_full/src/utils/InputHandler.h @@ -36,4 +36,4 @@ class InputHandler { bool isWaiting = false; }; -#endif // INPUT_HANDLER_H \ No newline at end of file +#endif // INPUT_HANDLER_H diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 96fed59..525690c 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -367,4 +367,4 @@ u32 toMs(u32 cycles) { // CPU Frequency * time per frame = cycles per frame // 16780000 * (1/60) ~= 279666 return (cycles * 1000) / (279666 * 60); -} \ No newline at end of file +} diff --git a/examples/LinkGPIO_demo/src/main.cpp b/examples/LinkGPIO_demo/src/main.cpp index 043e2c9..5d598b8 100644 --- a/examples/LinkGPIO_demo/src/main.cpp +++ b/examples/LinkGPIO_demo/src/main.cpp @@ -104,4 +104,4 @@ std::string value(std::string name, LinkGPIO::Pin pin, bool isHigh) { return linkGPIO->getMode(pin) == LinkGPIO::Direction::INPUT ? "< " + title + std::to_string(linkGPIO->readPin(pin)) + "\n" : "> " + title + std::to_string(isHigh) + "\n"; -} \ No newline at end of file +} diff --git a/examples/LinkRawCable_demo/Makefile b/examples/LinkRawCable_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkRawCable_demo/Makefile +++ b/examples/LinkRawCable_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkRawCable_demo/src/main.cpp b/examples/LinkRawCable_demo/src/main.cpp index 043832e..466d870 100644 --- a/examples/LinkRawCable_demo/src/main.cpp +++ b/examples/LinkRawCable_demo/src/main.cpp @@ -131,4 +131,4 @@ void wait(u32 verticalLines) { vCount = REG_VCOUNT; } }; -} \ No newline at end of file +} diff --git a/examples/LinkRawWireless_demo/src/utils/InputHandler.h b/examples/LinkRawWireless_demo/src/utils/InputHandler.h index 163e02e..ebe25fe 100644 --- a/examples/LinkRawWireless_demo/src/utils/InputHandler.h +++ b/examples/LinkRawWireless_demo/src/utils/InputHandler.h @@ -36,4 +36,4 @@ class InputHandler { bool isWaiting = false; }; -#endif // INPUT_HANDLER_H \ No newline at end of file +#endif // INPUT_HANDLER_H diff --git a/examples/LinkSPI_demo/Makefile b/examples/LinkSPI_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkSPI_demo/Makefile +++ b/examples/LinkSPI_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index cdab63a..bf447b0 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -123,4 +123,4 @@ void wait(u32 verticalLines) { vCount = REG_VCOUNT; } }; -} \ No newline at end of file +} diff --git a/examples/LinkUART_demo/Makefile b/examples/LinkUART_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkUART_demo/Makefile +++ b/examples/LinkUART_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkUART_demo/Test.js b/examples/LinkUART_demo/Test.js index 1c2ed82..89ee736 100644 --- a/examples/LinkUART_demo/Test.js +++ b/examples/LinkUART_demo/Test.js @@ -1,13 +1,13 @@ -const { SerialPort, ReadlineParser } = require('serialport') // "^12.0.0" +const { SerialPort, ReadlineParser } = require("serialport"); // "^12.0.0" var serialPort = new SerialPort({ path: "COM9", // (*nix: /dev/ttyACMX, Windows: COMX) - baudRate: 9600 + baudRate: 9600, }); const parser = serialPort.pipe(new ReadlineParser()); -parser.on('data', (it) => console.log(it)) +parser.on("data", (it) => console.log(it)); setInterval(() => { - serialPort.write('<< node\n') -}, 1000); \ No newline at end of file + serialPort.write("<< node\n"); +}, 1000); diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index 37c9740..a212a12 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -134,4 +134,4 @@ void waitFor(u16 key) { do { keys = ~REG_KEYS & KEY_ANY; } while (!(keys & key)); -} \ No newline at end of file +} diff --git a/examples/LinkUniversal_full/README.md b/examples/LinkUniversal_full/README.md index 6053a46..222e3ec 100644 --- a/examples/LinkUniversal_full/README.md +++ b/examples/LinkUniversal_full/README.md @@ -2,4 +2,4 @@ - Reuse code from `examples/LinkCable_full` - Uncomment `USE_LINK_UNIVERSAL` in `src/main.h` -- Compile! \ No newline at end of file +- Compile! diff --git a/examples/LinkUniversal_stress/README.md b/examples/LinkUniversal_stress/README.md index 8db2b42..6434f38 100644 --- a/examples/LinkUniversal_stress/README.md +++ b/examples/LinkUniversal_stress/README.md @@ -2,4 +2,4 @@ - Reuse code from `examples/LinkCable_stress` - Uncomment `USE_LINK_UNIVERSAL` in `src/main.h` -- Compile! \ No newline at end of file +- Compile! diff --git a/examples/LinkWirelessMultiboot_demo/src/utils/InputHandler.h b/examples/LinkWirelessMultiboot_demo/src/utils/InputHandler.h index 163e02e..ebe25fe 100644 --- a/examples/LinkWirelessMultiboot_demo/src/utils/InputHandler.h +++ b/examples/LinkWirelessMultiboot_demo/src/utils/InputHandler.h @@ -36,4 +36,4 @@ class InputHandler { bool isWaiting = false; }; -#endif // INPUT_HANDLER_H \ No newline at end of file +#endif // INPUT_HANDLER_H diff --git a/examples/LinkWireless_demo/Makefile b/examples/LinkWireless_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkWireless_demo/Makefile +++ b/examples/LinkWireless_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 573a386..bd02298 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -470,4 +470,4 @@ void wait(u32 verticalLines) { void hang() { waitFor(KEY_DOWN); -} \ No newline at end of file +} diff --git a/examples/_lib/interrupt.cpp b/examples/_lib/interrupt.cpp index 7dc5b16..57f3797 100644 --- a/examples/_lib/interrupt.cpp +++ b/examples/_lib/interrupt.cpp @@ -19,4 +19,4 @@ void interrupt_disable(interrupt_index index) { void interrupt_set_reference_vcount(unsigned long y) { IRQ_SetReferenceVCOUNT(y); -} \ No newline at end of file +} diff --git a/examples/_lib/interrupt.h b/examples/_lib/interrupt.h index 47c5b27..1974864 100644 --- a/examples/_lib/interrupt.h +++ b/examples/_lib/interrupt.h @@ -27,4 +27,4 @@ void interrupt_enable(interrupt_index index); void interrupt_disable(interrupt_index index); void interrupt_set_reference_vcount(unsigned long y); -#endif // INTERRUPT_H \ No newline at end of file +#endif // INTERRUPT_H From 8cb119c523204fd36ba5901ae46b8ecbae48a717 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 00:29:22 -0300 Subject: [PATCH 055/195] Formatting Makefiles --- examples/LinkCableMultiboot_demo/Makefile | 14 +++++++------- examples/LinkCable_basic/Makefile | 14 +++++++------- examples/LinkCable_stress/Makefile | 14 +++++++------- examples/LinkGPIO_demo/Makefile | 14 +++++++------- examples/LinkPS2Keyboard_demo/Makefile | 14 +++++++------- examples/LinkPS2Mouse_demo/Makefile | 14 +++++++------- examples/LinkUART_demo/Test.js | 1 + examples/LinkUniversal_basic/Makefile | 14 +++++++------- 8 files changed, 50 insertions(+), 49 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index 0f82627..11126ae 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkCable_basic/Makefile b/examples/LinkCable_basic/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkCable_basic/Makefile +++ b/examples/LinkCable_basic/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkCable_stress/Makefile b/examples/LinkCable_stress/Makefile index e87c1fd..3fad2e9 100644 --- a/examples/LinkCable_stress/Makefile +++ b/examples/LinkCable_stress/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkGPIO_demo/Makefile b/examples/LinkGPIO_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkGPIO_demo/Makefile +++ b/examples/LinkGPIO_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkPS2Keyboard_demo/Makefile b/examples/LinkPS2Keyboard_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkPS2Keyboard_demo/Makefile +++ b/examples/LinkPS2Keyboard_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkPS2Mouse_demo/Makefile b/examples/LinkPS2Mouse_demo/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkPS2Mouse_demo/Makefile +++ b/examples/LinkPS2Mouse_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/examples/LinkUART_demo/Test.js b/examples/LinkUART_demo/Test.js index 89ee736..4b77f35 100644 --- a/examples/LinkUART_demo/Test.js +++ b/examples/LinkUART_demo/Test.js @@ -1,3 +1,4 @@ +// node v14 const { SerialPort, ReadlineParser } = require("serialport"); // "^12.0.0" var serialPort = new SerialPort({ diff --git a/examples/LinkUniversal_basic/Makefile b/examples/LinkUniversal_basic/Makefile index c835cc7..f1378cc 100644 --- a/examples/LinkUniversal_basic/Makefile +++ b/examples/LinkUniversal_basic/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- From 3f1d790aa8549d6df4be01251f9dac87c1ec9395 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 23:38:58 -0300 Subject: [PATCH 056/195] Extracting generic Queue in _link_common.hpp --- lib/LinkCable.hpp | 46 +---------------------------- lib/LinkUART.hpp | 48 ++---------------------------- lib/_link_common.hpp | 69 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 71 insertions(+), 92 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 875aa0b..2651d6e 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -76,6 +76,7 @@ class LinkCable { using u8 = unsigned char; using vs32 = volatile signed int; using vu32 = volatile unsigned int; + using U16Queue = Link::Queue; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int REMOTE_TIMEOUT_OFFLINE = -1; @@ -97,51 +98,6 @@ class LinkCable { BAUD_RATE_3 // 115200 bps }; - class U16Queue { - public: - void push(u16 item) { - if (isFull()) - pop(); - - rear = (rear + 1) % LINK_CABLE_QUEUE_SIZE; - arr[rear] = item; - count++; - } - - u16 pop() { - if (isEmpty()) - return LINK_CABLE_NO_DATA; - - auto x = arr[front]; - front = (front + 1) % LINK_CABLE_QUEUE_SIZE; - count--; - - return x; - } - - u16 peek() { - if (isEmpty()) - return LINK_CABLE_NO_DATA; - - return arr[front]; - } - - void clear() { - front = count = 0; - rear = -1; - } - - u32 size() { return count; } - bool isEmpty() { return size() == 0; } - bool isFull() { return size() == LINK_CABLE_QUEUE_SIZE; } - - private: - u16 arr[LINK_CABLE_QUEUE_SIZE]; - vs32 front = 0; - vs32 rear = -1; - vu32 count = 0; - }; - /** * @brief Constructs a new LinkCable object. * @param baudRate Sets a specific baud rate. diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 24dc111..dea5839 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -45,6 +45,7 @@ class LinkUART { using u8 = unsigned char; using vs32 = volatile signed int; using vu32 = volatile unsigned int; + using U8Queue = Link::Queue; static constexpr int BIT_CTS = 2; static constexpr int BIT_PARITY_CONTROL = 3; @@ -301,51 +302,6 @@ class LinkUART { } private: - class U8Queue { - public: - void push(u8 item) { - if (isFull()) - pop(); - - rear = (rear + 1) % LINK_UART_QUEUE_SIZE; - arr[rear] = item; - count++; - } - - u16 pop() { - if (isEmpty()) - return 0; - - auto x = arr[front]; - front = (front + 1) % LINK_UART_QUEUE_SIZE; - count--; - - return x; - } - - u16 peek() { - if (isEmpty()) - return 0; - - return arr[front]; - } - - void clear() { - front = count = 0; - rear = -1; - } - - u32 size() { return count; } - bool isEmpty() { return size() == 0; } - bool isFull() { return size() == LINK_UART_QUEUE_SIZE; } - - private: - u8 arr[LINK_UART_QUEUE_SIZE]; - vs32 front = 0; - vs32 rear = -1; - vu32 count = 0; - }; - struct Config { BaudRate baudRate; DataSize dataSize; @@ -363,7 +319,7 @@ class LinkUART { bool canReceive() { return !isBitHigh(BIT_RECEIVE_DATA_FLAG); } bool canTransfer() { return !isBitHigh(BIT_SEND_DATA_FLAG); } bool hasError() { return isBitHigh(BIT_ERROR_FLAG); } - bool needsTransfer() { return outgoingQueue.size() > 0; } + bool needsTransfer() { return !outgoingQueue.isEmpty(); } void reset() { resetState(); diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 8d748ab..d24e2c2 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -2,7 +2,8 @@ #define LINK_COMMON_H /** - * @brief This namespace contains the parts of libtonc used by this library. + * @brief This namespace contains shared code between all libraries. + * \warning Most of these things are borrowed from libtonc. */ namespace Link { @@ -142,6 +143,72 @@ static inline int _min(int a, int b) { return (a < b) ? (a) : (b); } +template +struct DefaultNullValue { + static constexpr T value = T{}; +}; + +template +class Queue { + public: + void push(T item) { + if (isFull()) { + if constexpr (Overwrite) { + pop(); + } else { + return; + } + } + + rear = (rear + 1) % Size; + arr[rear] = item; + count++; + } + + T pop() { + if (isEmpty()) + return NullValue; + + auto x = arr[front]; + front = (front + 1) % Size; + count--; + + return x; + } + + T peek() { + if (isEmpty()) + return NullValue; + return arr[front]; + } + + template + void forEach(F action) { + vs32 currentFront = front; + + for (u32 i = 0; i < count; i++) { + if (!action(arr[currentFront])) + return; + currentFront = (currentFront + 1) % Size; + } + } + + void clear() { + front = count = 0; + rear = -1; + } + + u32 size() { return count; } + bool isEmpty() { return size() == 0; } + bool isFull() { return size() == Size; } + + private: + T arr[Size]; + vs32 front = 0; + vs32 rear = -1; + vu32 count = 0; +}; + } // namespace Link #endif // LINK_COMMON_H From ad8ca1686e747d296178d0b436f40c0e2fb8c247 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 14 Aug 2024 08:47:42 -0300 Subject: [PATCH 057/195] Moving ObjectQueue to _link_common --- lib/LinkWireless.hpp | 59 +++------------------------------------ lib/_link_common.hpp | 66 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 66 insertions(+), 59 deletions(-) diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index c4b627a..92f6359 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -230,6 +230,10 @@ class LinkWireless { u8 playerId = 0; }; + private: + using MessageQueue = Link::ObjectQueue; + + public: struct Server { u16 id = 0; u16 gameId; @@ -953,61 +957,6 @@ class LinkWireless { Config config; private: - class MessageQueue { - public: - void push(Message item) { - if (isFull()) - return; - - rear = (rear + 1) % LINK_WIRELESS_QUEUE_SIZE; - arr[rear] = item; - count++; - } - - Message pop() { - if (isEmpty()) - return Message{}; - - auto x = arr[front]; - front = (front + 1) % LINK_WIRELESS_QUEUE_SIZE; - count--; - - return x; - } - - Message peek() { - if (isEmpty()) - return Message{}; - return arr[front]; - } - - template - void forEach(F action) { - int currentFront = front; - - for (u32 i = 0; i < count; i++) { - if (!action(arr[currentFront])) - return; - currentFront = (currentFront + 1) % LINK_WIRELESS_QUEUE_SIZE; - } - } - - void clear() { - front = count = 0; - rear = -1; - } - - u32 size() { return count; } - bool isEmpty() { return size() == 0; } - bool isFull() { return size() == LINK_WIRELESS_QUEUE_SIZE; } - - private: - Message arr[LINK_WIRELESS_QUEUE_SIZE]; - vs32 front = 0; - vs32 rear = -1; - vu32 count = 0; - }; - struct SessionState { MessageQueue incomingMessages; // read by user, write by irq&user MessageQueue outgoingMessages; // read and write by irq diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index d24e2c2..215d386 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -143,10 +143,7 @@ static inline int _min(int a, int b) { return (a < b) ? (a) : (b); } -template -struct DefaultNullValue { - static constexpr T value = T{}; -}; +// Queues template class Queue { @@ -209,6 +206,67 @@ class Queue { vu32 count = 0; }; +template +class ObjectQueue { + public: + void push(T item) { + if (isFull()) { + if constexpr (Overwrite) { + pop(); + } else { + return; + } + } + + rear = (rear + 1) % Size; + arr[rear] = item; + count++; + } + + T pop() { + if (isEmpty()) + return T{}; + + auto x = arr[front]; + front = (front + 1) % Size; + count--; + + return x; + } + + T peek() { + if (isEmpty()) + return T{}; + return arr[front]; + } + + template + void forEach(F action) { + vs32 currentFront = front; + + for (u32 i = 0; i < count; i++) { + if (!action(arr[currentFront])) + return; + currentFront = (currentFront + 1) % Size; + } + } + + void clear() { + front = count = 0; + rear = -1; + } + + u32 size() { return count; } + bool isEmpty() { return size() == 0; } + bool isFull() { return size() == Size; } + + private: + T arr[Size]; + vs32 front = 0; + vs32 rear = -1; + vu32 count = 0; +}; + } // namespace Link #endif // LINK_COMMON_H From 016f0cd91edbd137097dad4de6460450049bf0b9 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 14 Aug 2024 09:19:09 -0300 Subject: [PATCH 058/195] FIX: Preventing concurrent usage of array between interrupts and main code --- lib/LinkWireless.hpp | 57 ++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 92f6359..0c0cdf0 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -1039,6 +1039,8 @@ class LinkWireless { State state = NEEDS_RESET; u32 nextCommandData[LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; u32 nextCommandDataSize = 0; + u32 nextAsyncCommandData[LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; + u32 nextAsyncCommandDataSize = 0; volatile bool isReadingMessages = false; volatile bool isAddingMessage = false; volatile bool isPendingClearActive = false; @@ -1161,7 +1163,7 @@ class LinkWireless { int setDataFromOutgoingMessages() { // (irq only) u32 maxTransferLength = getDeviceTransferLength(); - addData(0, true); + addAsyncData(0, true); if (config.retransmission) addConfirmations(); @@ -1170,27 +1172,28 @@ class LinkWireless { int lastPacketId = -1; - sessionState.outgoingMessages.forEach( - [this, maxTransferLength, &lastPacketId](Message message) { - u16 header = buildMessageHeader(message.playerId, message.packetId, - buildChecksum(message.data)); - u32 rawMessage = buildU32(header, message.data); + sessionState.outgoingMessages.forEach([this, maxTransferLength, + &lastPacketId](Message message) { + u16 header = buildMessageHeader(message.playerId, message.packetId, + buildChecksum(message.data)); + u32 rawMessage = buildU32(header, message.data); - if (nextCommandDataSize /* -1 (wireless header) + 1 (rawMessage) */ > - maxTransferLength) - return false; + if (nextAsyncCommandDataSize /* -1 (wireless header) + 1 (rawMessage) */ > + maxTransferLength) + return false; - addData(rawMessage); - lastPacketId = message.packetId; + addAsyncData(rawMessage); + lastPacketId = message.packetId; - return true; - }); + return true; + }); // (add wireless header) - u32 bytes = (nextCommandDataSize - 1) * 4; - nextCommandData[0] = sessionState.currentPlayerId == 0 - ? bytes - : bytes << (3 + sessionState.currentPlayerId * 5); + u32 bytes = (nextAsyncCommandDataSize - 1) * 4; + nextAsyncCommandData[0] = + sessionState.currentPlayerId == 0 + ? bytes + : bytes << (3 + sessionState.currentPlayerId * 5); return lastPacketId; } @@ -1297,21 +1300,21 @@ class LinkWireless { u32 lastPacketId = sessionState.lastPacketId; u16 header = buildConfirmationHeader(0, lastPacketId); u32 rawMessage = buildU32(header, lastPacketId & 0xffff); - addData(rawMessage); + addAsyncData(rawMessage); } for (int i = 0; i < config.maxPlayers - 1; i++) { u32 confirmationData = sessionState.lastPacketIdFromClients[1 + i]; u16 header = buildConfirmationHeader(1 + i, confirmationData); u32 rawMessage = buildU32(header, confirmationData & 0xffff); - addData(rawMessage); + addAsyncData(rawMessage); } } else { u32 confirmationData = sessionState.lastPacketIdFromServer; u16 header = buildConfirmationHeader(sessionState.currentPlayerId, confirmationData); u32 rawMessage = buildU32(header, confirmationData & 0xffff); - addData(rawMessage); + addAsyncData(rawMessage); } } @@ -1447,6 +1450,13 @@ class LinkWireless { nextCommandDataSize++; } + void addAsyncData(u32 value, bool start = false) { + if (start) + nextAsyncCommandDataSize = 0; + nextAsyncCommandData[nextAsyncCommandDataSize] = value; + nextAsyncCommandDataSize++; + } + void startACKTimer() { Link::_REG_TM[config.asyncACKTimerId].start = -1; Link::_REG_TM[config.asyncACKTimerId].cnt = @@ -1518,6 +1528,7 @@ class LinkWireless { } this->asyncCommand.isActive = false; this->nextCommandDataSize = 0; + this->nextAsyncCommandDataSize = 0; if (!isReadingMessages) this->sessionState.incomingMessages.clear(); @@ -1672,14 +1683,14 @@ class LinkWireless { asyncCommand.type = type; if (withData) { - for (u32 i = 0; i < nextCommandDataSize; i++) - asyncCommand.parameters[i] = nextCommandData[i]; + for (u32 i = 0; i < nextAsyncCommandDataSize; i++) + asyncCommand.parameters[i] = nextAsyncCommandData[i]; } asyncCommand.result.success = false; asyncCommand.state = AsyncCommand::State::PENDING; asyncCommand.step = AsyncCommand::Step::COMMAND_HEADER; asyncCommand.sentParameters = 0; - asyncCommand.totalParameters = withData ? nextCommandDataSize : 0; + asyncCommand.totalParameters = withData ? nextAsyncCommandDataSize : 0; asyncCommand.receivedResponses = 0; asyncCommand.totalResponses = 0; asyncCommand.pendingData = 0; From d63dc3f250a46d6b3f8131d71de6a13f51f40892 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 00:07:49 -0300 Subject: [PATCH 059/195] Adding prefix to LWMLOG --- lib/LinkWirelessMultiboot.hpp | 70 +++++++++++++++++------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 547ad8d..4597f8d 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -54,9 +54,9 @@ static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = #ifdef LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING #include -#define LWMLOG(str) logger(str) +#define _LWMLOG_(str) logger(str) #else -#define LWMLOG(str) +#define _LWMLOG_(str) #endif /** @@ -151,23 +151,23 @@ class LinkWirelessMultiboot { players > LINK_WIRELESS_MULTIBOOT_MAX_PLAYERS) return INVALID_PLAYERS; - LWMLOG("starting..."); + _LWMLOG_("starting..."); LINK_WIRELESS_MULTIBOOT_TRY(activate()) progress.state = INITIALIZING; LINK_WIRELESS_MULTIBOOT_TRY(initialize(gameName, userName, gameId, players)) - LWMLOG("waiting for connections..."); + _LWMLOG_("waiting for connections..."); progress.state = WAITING; LINK_WIRELESS_MULTIBOOT_TRY(waitForClients(players, cancel)) - LWMLOG("all players are connected"); + _LWMLOG_("all players are connected"); progress.state = PREPARING; linkRawWireless->wait(FRAME_LINES); - LWMLOG("rom start command..."); + _LWMLOG_("rom start command..."); LINK_WIRELESS_MULTIBOOT_TRY(sendRomStartCommand(cancel)) - LWMLOG("SENDING ROM!"); + _LWMLOG_("SENDING ROM!"); progress.state = SENDING; LINK_WIRELESS_MULTIBOOT_TRY(sendRomBytes(rom, romSize, cancel)) linkRawWireless->wait(FRAME_LINES); @@ -175,7 +175,7 @@ class LinkWirelessMultiboot { progress.state = CONFIRMING; LINK_WIRELESS_MULTIBOOT_TRY(confirm(cancel)) - LWMLOG("SUCCESS!"); + _LWMLOG_("SUCCESS!"); return finish(SUCCESS); } @@ -334,10 +334,10 @@ class LinkWirelessMultiboot { __attribute__((noinline)) Result activate() { if (!linkRawWireless->activate()) { - LWMLOG("! adapter not detected"); + _LWMLOG_("! adapter not detected"); return ADAPTER_NOT_DETECTED; } - LWMLOG("activated"); + _LWMLOG_("activated"); return SUCCESS; } @@ -348,23 +348,23 @@ class LinkWirelessMultiboot { u8 players) { if (!linkRawWireless->setup(players, SETUP_TX, SETUP_WAIT_TIMEOUT, SETUP_MAGIC)) { - LWMLOG("! setup failed"); + _LWMLOG_("! setup failed"); return FAILURE; } - LWMLOG("setup ok"); + _LWMLOG_("setup ok"); if (!linkRawWireless->broadcast(gameName, userName, gameId | GAME_ID_MULTIBOOT_FLAG)) { - LWMLOG("! broadcast failed"); + _LWMLOG_("! broadcast failed"); return FAILURE; } - LWMLOG("broadcast data set"); + _LWMLOG_("broadcast data set"); if (!linkRawWireless->startHost()) { - LWMLOG("! start host failed"); + _LWMLOG_("! start host failed"); return FAILURE; } - LWMLOG("host started"); + _LWMLOG_("host started"); return SUCCESS; } @@ -400,7 +400,7 @@ class LinkWirelessMultiboot { ClientPacket handshakePackets[2]; volatile bool hasReceivedName = false; - LWMLOG("new client: " + std::to_string(clientNumber)); + _LWMLOG_("new client: " + std::to_string(clientNumber)); LINK_WIRELESS_MULTIBOOT_TRY(exchangeData( clientNumber, [this](LinkRawWireless::ReceiveDataResponse& response) { @@ -409,7 +409,7 @@ class LinkWirelessMultiboot { [](ClientPacket packet) { return true; }, cancel)) // (initial client packet received) - LWMLOG("handshake (1/2)..."); + _LWMLOG_("handshake (1/2)..."); LINK_WIRELESS_MULTIBOOT_TRY(exchangeACKData( clientNumber, [](ClientPacket packet) { @@ -419,7 +419,7 @@ class LinkWirelessMultiboot { cancel)) // (n = 2, commState = 1) - LWMLOG("handshake (2/2)..."); + _LWMLOG_("handshake (2/2)..."); LINK_WIRELESS_MULTIBOOT_TRY(exchangeACKData( clientNumber, [&handshakePackets](ClientPacket packet) { @@ -433,7 +433,7 @@ class LinkWirelessMultiboot { cancel)) // (n = 1, commState = 2) - LWMLOG("receiving name..."); + _LWMLOG_("receiving name..."); LINK_WIRELESS_MULTIBOOT_TRY(exchangeACKData( clientNumber, [this, &handshakePackets, &hasReceivedName](ClientPacket packet) { @@ -449,20 +449,20 @@ class LinkWirelessMultiboot { cancel)) // (commState = 0) - LWMLOG("validating name..."); + _LWMLOG_("validating name..."); for (u32 i = 0; i < 2; i++) { auto receivedPayload = handshakePackets[i].payload; auto expectedPayload = BOOTLOADER_HANDSHAKE[i]; for (u32 j = 0; j < BOOTLOADER_HANDSHAKE_SIZE; j++) { if (!hasReceivedName || receivedPayload[j] != expectedPayload[j]) { - LWMLOG("! bad payload"); + _LWMLOG_("! bad payload"); return finish(BAD_HANDSHAKE); } } } - LWMLOG("draining queue..."); + _LWMLOG_("draining queue..."); volatile bool hasFinished = false; while (!hasFinished) { if (cancel(progress)) @@ -475,7 +475,7 @@ class LinkWirelessMultiboot { } // (no more client packets) - LWMLOG("client " + std::to_string(clientNumber) + " accepted"); + _LWMLOG_("client " + std::to_string(clientNumber) + " accepted"); return SUCCESS; } @@ -549,7 +549,7 @@ class LinkWirelessMultiboot { 100); if (newPercentage != progress.percentage) { progress.percentage = newPercentage; - LWMLOG("-> " + std::to_string(newPercentage)); + _LWMLOG_("-> " + std::to_string(newPercentage)); } } @@ -591,7 +591,7 @@ class LinkWirelessMultiboot { template __attribute__((noinline)) Result confirm(C cancel) { - LWMLOG("confirming (1/2)..."); + _LWMLOG_("confirming (1/2)..."); for (u32 i = 0; i < progress.connectedClients; i++) { LINK_WIRELESS_MULTIBOOT_TRY( exchangeNewData(i, @@ -602,7 +602,7 @@ class LinkWirelessMultiboot { LINK_WIRELESS_MULTIBOOT_BARRIER; - LWMLOG("confirming (2/2)..."); + _LWMLOG_("confirming (2/2)..."); for (u32 i = 0; i < progress.connectedClients; i++) { LinkRawWireless::ReceiveDataResponse response; LINK_WIRELESS_MULTIBOOT_TRY( @@ -697,15 +697,15 @@ class LinkWirelessMultiboot { LINK_WIRELESS_MULTIBOOT_BARRIER; if (!success) { - LWMLOG("! sendDataAndWait failed"); + _LWMLOG_("! sendDataAndWait failed"); return FAILURE; } LINK_WIRELESS_MULTIBOOT_BARRIER; if (remoteCommand.commandId != 0x28) { - LWMLOG("! expected EVENT 0x28"); - LWMLOG("! but got " + toHex(remoteCommand.commandId)); + _LWMLOG_("! expected EVENT 0x28"); + _LWMLOG_("! but got " + toHex(remoteCommand.commandId)); return FAILURE; } @@ -719,9 +719,9 @@ class LinkWirelessMultiboot { (remoteCommand.params[0] >> 8) & expectedActiveChildren; if (activeChildren != expectedActiveChildren) { - LWMLOG("! client timeout [" + std::to_string(activeChildren) + "]"); - LWMLOG("! vs expected: [" + std::to_string(expectedActiveChildren) + - "]"); + _LWMLOG_("! client timeout [" + std::to_string(activeChildren) + "]"); + _LWMLOG_("! vs expected: [" + std::to_string(expectedActiveChildren) + + "]"); return FAILURE; } } @@ -733,7 +733,7 @@ class LinkWirelessMultiboot { LINK_WIRELESS_MULTIBOOT_BARRIER; if (!success) { - LWMLOG("! receiveData failed"); + _LWMLOG_("! receiveData failed"); return FAILURE; } @@ -768,6 +768,6 @@ class LinkWirelessMultiboot { extern LinkWirelessMultiboot* linkWirelessMultiboot; -#undef LWMLOG +#undef _LWMLOG_ #endif // LINK_WIRELESS_MULTIBOOT_H From a5dd98c4fc9c1ed6b384d7ea00e768fe749d440e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 11:09:46 -0300 Subject: [PATCH 060/195] Preventing flickers in examples caused by slow logging --- examples/LinkCableMultiboot_demo/src/main.cpp | 4 ++++ examples/LinkCable_basic/src/main.cpp | 4 ++++ examples/LinkCable_stress/src/main.cpp | 4 ++++ examples/LinkGPIO_demo/src/main.cpp | 4 ++++ examples/LinkPS2Keyboard_demo/src/main.cpp | 4 ++++ examples/LinkPS2Mouse_demo/src/main.cpp | 4 ++++ examples/LinkRawCable_demo/src/main.cpp | 4 ++++ examples/LinkSPI_demo/src/main.cpp | 4 ++++ examples/LinkUART_demo/src/main.cpp | 4 ++++ examples/LinkUniversal_basic/src/main.cpp | 4 ++++ examples/LinkWireless_demo/src/main.cpp | 4 ++++ 11 files changed, 44 insertions(+) diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 2701f1e..30ec694 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -129,8 +129,12 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } diff --git a/examples/LinkCable_basic/src/main.cpp b/examples/LinkCable_basic/src/main.cpp index dd109b3..57e2c9d 100644 --- a/examples/LinkCable_basic/src/main.cpp +++ b/examples/LinkCable_basic/src/main.cpp @@ -73,8 +73,12 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 525690c..398f86f 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -315,10 +315,14 @@ void forceSync() { linkConnection->read(remotePlayerId); } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } void waitFor(u16 key) { diff --git a/examples/LinkGPIO_demo/src/main.cpp b/examples/LinkGPIO_demo/src/main.cpp index 5d598b8..6da9642 100644 --- a/examples/LinkGPIO_demo/src/main.cpp +++ b/examples/LinkGPIO_demo/src/main.cpp @@ -86,10 +86,14 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } std::string mode(std::string name, LinkGPIO::Pin pin) { diff --git a/examples/LinkPS2Keyboard_demo/src/main.cpp b/examples/LinkPS2Keyboard_demo/src/main.cpp index c75e2c7..f272806 100644 --- a/examples/LinkPS2Keyboard_demo/src/main.cpp +++ b/examples/LinkPS2Keyboard_demo/src/main.cpp @@ -69,8 +69,12 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } diff --git a/examples/LinkPS2Mouse_demo/src/main.cpp b/examples/LinkPS2Mouse_demo/src/main.cpp index e3b7840..f209828 100644 --- a/examples/LinkPS2Mouse_demo/src/main.cpp +++ b/examples/LinkPS2Mouse_demo/src/main.cpp @@ -68,8 +68,12 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } diff --git a/examples/LinkRawCable_demo/src/main.cpp b/examples/LinkRawCable_demo/src/main.cpp index 466d870..529a78b 100644 --- a/examples/LinkRawCable_demo/src/main.cpp +++ b/examples/LinkRawCable_demo/src/main.cpp @@ -115,10 +115,14 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } void wait(u32 verticalLines) { diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index bf447b0..c54c07d 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -107,10 +107,14 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } void wait(u32 verticalLines) { diff --git a/examples/LinkUART_demo/src/main.cpp b/examples/LinkUART_demo/src/main.cpp index 394d085..75fad76 100644 --- a/examples/LinkUART_demo/src/main.cpp +++ b/examples/LinkUART_demo/src/main.cpp @@ -89,8 +89,12 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index a212a12..ea6f858 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -123,10 +123,14 @@ int main() { return 0; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } void waitFor(u16 key) { diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index bd02298..5224146 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -443,10 +443,14 @@ void messageLoop() { } } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } void waitFor(u16 key) { From ae2bada2ff4b7172ad6e3b7fc322e7f0c1a4d915 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 5 Aug 2024 07:21:09 -0300 Subject: [PATCH 061/195] Adding template for LinkMobile implementation --- examples/LinkMobile_demo/Makefile | 284 ++++++++++++++++++++++++++ examples/LinkMobile_demo/src/main.cpp | 156 ++++++++++++++ lib/LinkMobile.hpp | 259 +++++++++++++++++++++++ 3 files changed, 699 insertions(+) create mode 100644 examples/LinkMobile_demo/Makefile create mode 100644 examples/LinkMobile_demo/src/main.cpp create mode 100644 lib/LinkMobile.hpp diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile new file mode 100644 index 0000000..7cff424 --- /dev/null +++ b/examples/LinkMobile_demo/Makefile @@ -0,0 +1,284 @@ +# +# Template tonc makefile +# +# Yoinked mostly from DKP's template +# + +# === SETUP =========================================================== + +# --- No implicit rules --- +.SUFFIXES: + +# --- Paths --- +export TONCLIB := ${DEVKITPRO}/libtonc + +# === TONC RULES ====================================================== +# +# Yes, this is almost, but not quite, completely like to +# DKP's base_rules and gba_rules +# + +export PATH := $(DEVKITARM)/bin:$(PATH) + + +# --- Executable names --- + +PREFIX ?= arm-none-eabi- + +export CC := $(PREFIX)gcc +export CXX := $(PREFIX)g++ +export AS := $(PREFIX)as +export AR := $(PREFIX)ar +export NM := $(PREFIX)nm +export OBJCOPY := $(PREFIX)objcopy + +# LD defined in Makefile + + +# === LINK / TRANSLATE ================================================ + +%.gba : %.elf + @$(OBJCOPY) -O binary $< $@ + @echo built ... $(notdir $@) + @gbafix $@ -t$(TITLE) + +#---------------------------------------------------------------------- + +%.mb.elf : + @echo Linking multiboot + $(LD) -specs=gba_mb.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(NM) -Sn $@ > $(basename $(notdir $@)).map + +#---------------------------------------------------------------------- + +%.elf : + @echo Linking cartridge + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(NM) -Sn $@ > $(basename $(notdir $@)).map + +#---------------------------------------------------------------------- + +%.a : + @echo $(notdir $@) + @rm -f $@ + $(AR) -crs $@ $^ + + +# === OBJECTIFY ======================================================= + +%.iwram.o : %.iwram.cpp + @echo $(notdir $<) + $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ + +#---------------------------------------------------------------------- +%.iwram.o : %.iwram.c + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) $(IARCH) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.cpp + @echo $(notdir $<) + $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(RARCH) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.c + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) $(RARCH) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.s + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.S + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ + + +#---------------------------------------------------------------------- +# canned command sequence for binary data +#---------------------------------------------------------------------- + +define bin2o + bin2s $< | $(AS) -o $(@) + echo "extern const u8" `(echo $( `(echo $(> `(echo $(> `(echo $( $(BUILD)/$(TARGET).map + +all : $(BUILD) + +clean: + @echo clean ... + @rm -rf $(BUILD) $(TARGET).elf $(TARGET).gba $(TARGET).sav + + +else # If we're here, we should be in the BUILD dir + +DEPENDS := $(OFILES:.o=.d) + +# --- Main targets ---- + +$(OUTPUT).gba : $(OUTPUT).elf + +$(OUTPUT).elf : $(OFILES) + +-include $(DEPENDS) + + +endif # End BUILD switch + +# --- More targets ---------------------------------------------------- + +.PHONY: clean rebuild start + +rebuild: clean $(BUILD) + +start: + start "$(TARGET).gba" + +restart: rebuild start + +# EOF diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp new file mode 100644 index 0000000..da4a21d --- /dev/null +++ b/examples/LinkMobile_demo/src/main.cpp @@ -0,0 +1,156 @@ +// (0) Include the header +#include "../../../lib/LinkMobile.hpp" + +#include +#include +#include +#include +#include "../../_lib/interrupt.h" + +#define CHECK_ERRORS(MESSAGE) \ + if ((lastError = linkMobile->getLastError()) || \ + linkMobile->getState() == LinkMobile::State::NEEDS_RESET) { \ + log(std::string(MESSAGE) + " (" + std::to_string(lastError) + ") [" + \ + std::to_string(linkMobile->getState()) + "]"); \ + hang(); \ + linkMobile->activate(); \ + return; \ + } + +void activate(); +void log(std::string text); +void waitFor(u16 key); +void wait(u32 verticalLines); +void hang(); + +LinkMobile::Error lastError; +LinkMobile* linkMobile = NULL; + +void init() { + REG_DISPCNT = DCNT_MODE0 | DCNT_BG0; + tte_init_se_default(0, BG_CBB(0) | BG_SBB(31)); +} + +int main() { + init(); + + bool firstTime = true; + +start: + // Options + log("LinkMobile_demo (v6.7.0)\n\n\n\n" + "Press A to start"); + waitFor(KEY_A); + // u16 initialKeys = ~REG_KEYS & KEY_ANY; + // forwarding = !(initialKeys & KEY_LEFT); + // retransmission = !(initialKeys & KEY_UP); + // maxPlayers = (initialKeys & KEY_B) ? 2 : LINK_MOBILE_MAX_PLAYERS; + // asyncACK = initialKeys & KEY_START; + + // (1) Create a LinkMobile instance + linkMobile = new LinkMobile(); + linkMobile->debug = [](std::string str) { log(str); }; + + if (firstTime) { + // (2) Add the required interrupt service routines + interrupt_init(); + interrupt_set_handler(INTR_VBLANK, LINK_MOBILE_ISR_VBLANK); + interrupt_enable(INTR_VBLANK); + interrupt_set_handler(INTR_SERIAL, LINK_MOBILE_ISR_SERIAL); + interrupt_enable(INTR_SERIAL); + interrupt_set_handler(INTR_TIMER3, LINK_MOBILE_ISR_TIMER); + interrupt_enable(INTR_TIMER3); + + firstTime = false; + } + + // (3) Initialize the library + linkMobile->activate(); + + bool activating = false; + + while (true) { + u16 keys = ~REG_KEYS & KEY_ANY; + + // Menu + log(std::string("") + + "L = Serve\nR = Connect\n\n (DOWN = ok)\n " + "(SELECT = cancel)\n (START = activate)"); + + // SELECT = back + if (keys & KEY_SELECT) { + linkMobile->deactivate(); + delete linkMobile; + linkMobile = NULL; + goto start; + } + + // START = Activate + if ((keys & KEY_START) && !activating) { + activating = true; + activate(); + } + if (activating && !(keys & KEY_START)) + activating = false; + + // L = Serve + // if ((keys & KEY_L) && !serving) { + // serving = true; + // serve(); + // } + // if (serving && !(keys & KEY_L)) + // serving = false; + + // R = Connect + // if (!connecting && (keys & KEY_R)) { + // connecting = true; + // connect(); + // } + // if (connecting && !(keys & KEY_R)) + // connecting = false; + + VBlankIntrWait(); + } + + return 0; +} + +void activate() { + log("Trying..."); + + if (linkMobile->activate()) + log("Activated!"); + else + log("Activation failed! :("); + + hang(); +} + +void log(std::string text) { + tte_erase_screen(); + tte_write("#{P:0,0}"); + tte_write(text.c_str()); +} + +void waitFor(u16 key) { + u16 keys; + do { + keys = ~REG_KEYS & KEY_ANY; + } while (!(keys & key)); +} + +void wait(u32 verticalLines) { + u32 count = 0; + u32 vCount = REG_VCOUNT; + + while (count < verticalLines) { + if (REG_VCOUNT != vCount) { + count++; + vCount = REG_VCOUNT; + } + }; +} + +void hang() { + waitFor(KEY_DOWN); +} \ No newline at end of file diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp new file mode 100644 index 0000000..0874e8a --- /dev/null +++ b/lib/LinkMobile.hpp @@ -0,0 +1,259 @@ +#ifndef LINK_MOBILE_H +#define LINK_MOBILE_H + +// -------------------------------------------------------------------------- +// A high level driver for the GB Mobile Adapter. +// -------------------------------------------------------------------------- +// Usage: +// - 1) Include this header in your main.cpp file and add: +// LinkMobile* linkMobile = new LinkMobile(); +// - 2) Add the required interrupt service routines: (*) +// irq_init(NULL); +// irq_add(II_VBLANK, LINK_MOBILE_ISR_VBLANK); +// irq_add(II_SERIAL, LINK_MOBILE_ISR_SERIAL); +// irq_add(II_TIMER3, LINK_MOBILE_ISR_TIMER); +// - 3) Initialize the library with: +// linkMobile->activate(); +// -------------------------------------------------------------------------- +// (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. +// That causes packet loss. You REALLY want to use libugba's instead. +// (see examples) +// -------------------------------------------------------------------------- + +#include "_link_common.hpp" + +#include +#include "LinkGPIO.hpp" +#include "LinkSPI.hpp" + +// TODO: Remove +#include +#include + +#define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") + +#define LINK_MOBILE_RESET_IF_NEEDED \ + if (!isEnabled) \ + return false; \ + if (state == NEEDS_RESET) \ + if (!reset()) \ + return false; + +static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v6.7.0"; + +void LINK_MOBILE_ISR_VBLANK(); +void LINK_MOBILE_ISR_SERIAL(); +void LINK_MOBILE_ISR_TIMER(); + +class LinkMobile { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + + public: + std::function debug; // TODO: REMOVE + + enum State { + NEEDS_RESET, + AUTHENTICATED, + SEARCHING, + SERVING, + CONNECTING, + CONNECTED + }; + + enum Error { + // User errors + NONE = 0, + WRONG_STATE = 1, + // Communication errors + // ... + }; + + explicit LinkMobile() { + // TODO: Fill config + } + + [[nodiscard]] bool isActive() { return isEnabled; } + + bool activate() { + lastError = NONE; + isEnabled = false; + + LINK_MOBILE_BARRIER; + bool success = reset(); + LINK_MOBILE_BARRIER; + + isEnabled = true; + return success; + } + + bool deactivate() { + activate(); + // bool success = sendCommand(LINK_MOBILE_COMMAND_BYE).success; + + lastError = NONE; + isEnabled = false; + resetState(); + stop(); + + return true; + } + + [[nodiscard]] State getState() { return state; } + Error getLastError(bool clear = true) { + Error error = lastError; + if (clear) + lastError = NONE; + return error; + } + + ~LinkMobile() { delete linkSPI; } + + void _onVBlank() { + if (!isEnabled) + return; + } + + void _onSerial() { + if (!isEnabled) + return; + } + + void _onTimer() { + if (!isEnabled) + return; + } + + struct Config { + // TODO: Define + }; + + Config config; + + private: + LinkSPI* linkSPI = new LinkSPI(); + State state = NEEDS_RESET; + Error lastError = NONE; + volatile bool isEnabled = false; + + void copyName(char* target, const char* source, u32 length) { + u32 len = std::strlen(source); + + for (u32 i = 0; i < length + 1; i++) + if (i < len) + target[i] = source[i]; + else + target[i] = '\0'; + } + + bool reset() { + resetState(); + stop(); + return start(); + } + + void resetState() { this->state = NEEDS_RESET; } + + void stop() { + stopTimer(); + linkSPI->deactivate(); + } + + bool start() { + startTimer(); + + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); + + if (!login()) + return false; + + // TODO: SWITCH TO 32BITS? + + state = AUTHENTICATED; + + return true; + } + + void stopTimer() { + // Link::_REG_TM[config.sendTimerId].cnt = + // Link::_REG_TM[config.sendTimerId].cnt & (~Link::_TM_ENABLE); + } + + void startTimer() { + // Link::_REG_TM[config.sendTimerId].start = -config.interval; + // Link::_REG_TM[config.sendTimerId].cnt = + // Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; + } + + bool login() { + // TODO: ASD + return false; + } + + bool cmdTimeout(u32& lines, u32& vCount) { + return timeout(100, lines, vCount); + } + + bool timeout(u32 limit, u32& lines, u32& vCount) { + if (Link::_REG_VCOUNT != vCount) { + lines += Link::_max((int)Link::_REG_VCOUNT - (int)vCount, 0); + vCount = Link::_REG_VCOUNT; + } + + return lines > limit; + } + + void wait(u32 verticalLines) { + u32 count = 0; + u32 vCount = Link::_REG_VCOUNT; + + while (count < verticalLines) { + if (Link::_REG_VCOUNT != vCount) { + count++; + vCount = Link::_REG_VCOUNT; + } + }; + } + + template + void waitVBlanks(u32 vBlanks, F onVBlank) { + u32 count = 0; + u32 vCount = Link::_REG_VCOUNT; + + while (count < vBlanks) { + if (Link::_REG_VCOUNT != vCount) { + vCount = Link::_REG_VCOUNT; + + if (vCount == 160) { + onVBlank(); + count++; + } + } + }; + } + + u32 buildU32(u16 msB, u16 lsB) { return (msB << 16) | lsB; } + u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } + u16 msB32(u32 value) { return value >> 16; } + u16 lsB32(u32 value) { return value & 0xffff; } + u8 msB16(u16 value) { return value >> 8; } + u8 lsB16(u16 value) { return value & 0xff; } +}; + +extern LinkMobile* linkMobile; + +inline void LINK_MOBILE_ISR_VBLANK() { + linkMobile->_onVBlank(); +} + +inline void LINK_MOBILE_ISR_SERIAL() { + linkMobile->_onSerial(); +} + +inline void LINK_MOBILE_ISR_TIMER() { + linkMobile->_onTimer(); +} + +#endif // LINK_MOBILE_H From ee097dd80ef9f7c2b4ddbc35f4403c73e46c22ee Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 9 Aug 2024 07:11:49 -0300 Subject: [PATCH 062/195] Making SPI receive the DataSize so 8-bit and 32-bit packets can be used in the same project --- README.md | 5 +- examples/LinkSPI_demo/src/main.cpp | 7 ++- lib/LinkRawWireless.hpp | 4 +- lib/LinkSPI.hpp | 98 +++++++++++++++--------------- lib/LinkWireless.hpp | 2 +- 5 files changed, 59 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 7a9bb06..0795219 100644 --- a/README.md +++ b/README.md @@ -310,7 +310,7 @@ Name | Return type | Description *(aka Normal Mode)* -This is the GBA's implementation of SPI. You can use this to interact with other GBAs or computers that know SPI. By default, it uses 32-bit packets, but you can switch to 8-bit by enabling the compile-time constant `LINK_SPI_8BIT_MODE`. +This is the GBA's implementation of SPI. You can use this to interact with other GBAs or computers that know SPI. ![screenshot](https://user-images.githubusercontent.com/1631752/213068614-875049f6-bb01-41b6-9e30-98c73cc69b25.png) @@ -319,7 +319,7 @@ This is the GBA's implementation of SPI. You can use this to interact with other Name | Return type | Description --- | --- | --- `isActive()` | **bool** | Returns whether the library is active or not. -`activate(mode)` | - | Activates the library in a specific `mode` (one of `LinkSPI::Mode::SLAVE`, `LinkSPI::Mode::MASTER_256KBPS`, or `LinkSPI::Mode::MASTER_2MBPS`). +`activate(mode, [dataSize])` | - | Activates the library in a specific `mode` (one of `LinkSPI::Mode::SLAVE`, `LinkSPI::Mode::MASTER_256KBPS`, or `LinkSPI::Mode::MASTER_2MBPS`). By default, the `dataSize` is 32-bit, but can be changed to `LinkSPI::DataSize::SIZE_8BIT`. `deactivate()` | - | Deactivates the library. `transfer(data)` | **u32** | Exchanges `data` with the other end. Returns the received data. `transfer(data, cancel)` | **u32** | Like `transfer(data)` but accepts a `cancel()` function. The library will continuously invoke it, and abort the transfer if it returns `true`. @@ -327,6 +327,7 @@ Name | Return type | Description `getAsyncState()` | **LinkSPI::AsyncState** | Returns the state of the last async transfer (one of `LinkSPI::AsyncState::IDLE`, `LinkSPI::AsyncState::WAITING`, or `LinkSPI::AsyncState::READY`). `getAsyncData()` | **u32** | If the async state is `READY`, returns the remote data and switches the state back to `IDLE`. If not, returns an empty response. `getMode()` | **LinkSPI::Mode** | Returns the current `mode`. +`getDataSize()` | **LinkSPI::DataSize** | Returns the current `dataSize`. `setWaitModeActive(isActive)` | - | Enables or disables `waitMode` (*). `isWaitModeActive()` | **bool** | Returns whether `waitMode` (*) is active or not. diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index c54c07d..23212e3 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -42,14 +42,17 @@ int main() { output += "\n(stop: press L+R)\n"; output += "(hold A on start for async)\n"; output += "(hold B on start for waitMode)\n"; + output += "(hold UP for 8-bit mode)\n"; output += - "\n\n\n\n\n\n\n\n\n\n\n\n[!] to test this demo...\n " + "\n\n\n\n\n\n\n\n\n[!] to test this demo...\n " "...use a GBC Link Cable!"; if ((keys & KEY_START) | (keys & KEY_SELECT)) { // (3) Initialize the library linkSPI->activate((keys & KEY_START) ? LinkSPI::Mode::MASTER_256KBPS - : LinkSPI::Mode::SLAVE); + : LinkSPI::Mode::SLAVE, + (keys & KEY_UP) ? LinkSPI::DataSize::SIZE_8BIT + : LinkSPI::DataSize::SIZE_32BIT); linkSPI->setWaitModeActive(keys & KEY_B); // see `waitMode` in README.md if (keys & KEY_A) diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index 5705a74..e055272 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -1014,7 +1014,7 @@ class LinkRawWireless { false, customAck); if (customAck && !acknowledge()) - return LINK_SPI_NO_DATA; + return LINK_SPI_NO_DATA_32; return receivedData; } @@ -1032,7 +1032,7 @@ class LinkRawWireless { false, true); if (!reverseAcknowledgeStart()) - return LINK_SPI_NO_DATA; + return LINK_SPI_NO_DATA_32; return receivedData; } diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index c0f40b8..cf61d3a 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -42,37 +42,14 @@ #include "_link_common.hpp" -/** - * @brief 8-bit mode (uncomment to enable) - */ -// #define LINK_SPI_8BIT_MODE - static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; -#ifdef LINK_SPI_8BIT_MODE -#define LINK_SPI_DATA_TYPE u8 -#endif -#ifndef LINK_SPI_8BIT_MODE -#define LINK_SPI_DATA_TYPE u32 -#endif - -#ifdef LINK_SPI_8BIT_MODE -#define LINK_SPI_DATA_REG Link::_REG_SIODATA8 -#endif -#ifndef LINK_SPI_8BIT_MODE -#define LINK_SPI_DATA_REG Link::_REG_SIODATA32 -#endif - -#ifdef LINK_SPI_8BIT_MODE -#define LINK_SPI_NO_DATA 0xff -#endif -#ifndef LINK_SPI_8BIT_MODE -#define LINK_SPI_NO_DATA 0xffffffff -#endif +#define LINK_SPI_NO_DATA_32 0xffffffff +#define LINK_SPI_NO_DATA_8 0xff +#define LINK_SPI_NO_DATA LINK_SPI_NO_DATA_32 /** * @brief An SPI handler for the Link Port (Normal Mode, either 32 or 8 bits). - * 32-bit transfers by default. Set `LINK_SPI_8BIT_MODE` for 8-bit transfers. */ class LinkSPI { private: @@ -92,6 +69,7 @@ class LinkSPI { public: enum Mode { SLAVE, MASTER_256KBPS, MASTER_2MBPS }; + enum DataSize { SIZE_32BIT, SIZE_8BIT }; enum AsyncState { IDLE, WAITING, READY }; /** @@ -102,9 +80,11 @@ class LinkSPI { /** * @brief Activates the library in a specific `mode`. * @param mode One of the enum values from `LinkSPI::Mode`. + * @param dataSize One of the enum values from `LinkSPI::DataSize`. */ - void activate(Mode mode) { + void activate(Mode mode, DataSize dataSize = SIZE_32BIT) { this->mode = mode; + this->dataSize = dataSize; this->waitMode = false; this->asyncState = IDLE; this->asyncData = 0; @@ -144,7 +124,7 @@ class LinkSPI { * @param data The value to be sent. * \warning Blocks the system until completion. */ - LINK_SPI_DATA_TYPE transfer(LINK_SPI_DATA_TYPE data) { + u32 transfer(u32 data) { return transfer(data, []() { return false; }); } @@ -156,12 +136,12 @@ class LinkSPI { * \warning Blocks the system until completion or cancellation. */ template - LINK_SPI_DATA_TYPE transfer(LINK_SPI_DATA_TYPE data, - F cancel, - bool _async = false, - bool _customAck = false) { + u32 transfer(u32 data, + F cancel, + bool _async = false, + bool _customAck = false) { if (asyncState != IDLE) - return LINK_SPI_NO_DATA; + return noData(); setData(data); @@ -177,20 +157,20 @@ class LinkSPI { disableTransfer(); setInterruptsOff(); asyncState = IDLE; - return LINK_SPI_NO_DATA; + return noData(); } enableTransfer(); startTransfer(); if (_async) - return LINK_SPI_NO_DATA; + return noData(); while (!isReady()) if (cancel()) { stopTransfer(); disableTransfer(); - return LINK_SPI_NO_DATA; + return noData(); } if (!_customAck) @@ -207,7 +187,7 @@ class LinkSPI { * \warning If `waitMode` (*) is active, blocks the system until completion. * See `setWaitModeActive(...)`. */ - void transferAsync(LINK_SPI_DATA_TYPE data) { + void transferAsync(u32 data) { transfer(data, []() { return false; }, true); } @@ -222,7 +202,7 @@ class LinkSPI { * cancellation. See `setWaitModeActive(...)`. */ template - void transferAsync(LINK_SPI_DATA_TYPE data, F cancel) { + void transferAsync(u32 data, F cancel) { transfer(data, cancel, true); } @@ -236,11 +216,11 @@ class LinkSPI { * @brief If the async state is `READY`, returns the remote data and switches * the state back to `IDLE`. If not, returns an empty response. */ - [[nodiscard]] LINK_SPI_DATA_TYPE getAsyncData() { + [[nodiscard]] u32 getAsyncData() { if (asyncState != READY) - return LINK_SPI_NO_DATA; + return noData(); - LINK_SPI_DATA_TYPE data = asyncData; + u32 data = asyncData; asyncState = IDLE; return data; } @@ -250,6 +230,11 @@ class LinkSPI { */ [[nodiscard]] Mode getMode() { return mode; } + /** + * @brief Returns the current `dataSize`. + */ + [[nodiscard]] DataSize getDataSize() { return dataSize; } + /** * @brief Enables or disables `waitMode`: The GBA adds an extra feature over * SPI. When working as master, it can check whether the other terminal is @@ -304,19 +289,19 @@ class LinkSPI { private: Mode mode = Mode::SLAVE; + DataSize dataSize = DataSize::SIZE_32BIT; bool waitMode = false; AsyncState asyncState = IDLE; - LINK_SPI_DATA_TYPE asyncData = 0; + u32 asyncData = 0; volatile bool isEnabled = false; void setNormalMode() { Link::_REG_RCNT = Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_HIGH); -#ifdef LINK_SPI_8BIT_MODE - Link::_REG_SIOCNT = 0; -#endif -#ifndef LINK_SPI_8BIT_MODE - Link::_REG_SIOCNT = 1 << BIT_LENGTH; -#endif + + if (dataSize == SIZE_32BIT) + Link::_REG_SIOCNT = 1 << BIT_LENGTH; + else + Link::_REG_SIOCNT = 0; } void setGeneralPurposeMode() { @@ -324,8 +309,21 @@ class LinkSPI { (1 << BIT_GENERAL_PURPOSE_HIGH); } - void setData(LINK_SPI_DATA_TYPE data) { LINK_SPI_DATA_REG = data; } - LINK_SPI_DATA_TYPE getData() { return LINK_SPI_DATA_REG; } + void setData(u32 data) { + if (dataSize == SIZE_32BIT) + Link::_REG_SIODATA32 = data; + else + Link::_REG_SIODATA8 = data & 0xff; + } + + u32 getData() { + return dataSize == SIZE_32BIT ? Link::_REG_SIODATA32 + : Link::_REG_SIODATA8 & 0xff; + } + + u32 noData() { + return dataSize == SIZE_32BIT ? LINK_SPI_NO_DATA_32 : LINK_SPI_NO_DATA_8; + } void enableTransfer() { _setSOLow(); } void disableTransfer() { _setSOHigh(); } diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 0c0cdf0..4dca399 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -1792,7 +1792,7 @@ class LinkWireless { false, customAck); if (customAck && !acknowledge()) - return LINK_SPI_NO_DATA; + return LINK_SPI_NO_DATA_32; return receivedData; } From 9ffcb5dd07c7dfc315b7e247399b67caf36edb7f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 9 Aug 2024 09:23:51 -0300 Subject: [PATCH 063/195] Adding command list and packet structs --- lib/LinkMobile.hpp | 68 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 0874e8a..633c5f1 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -51,6 +51,24 @@ class LinkMobile { using u16 = unsigned short; using u8 = unsigned char; + static constexpr int COMMAND_BEGIN_SESSION = 0x10; + static constexpr int COMMAND_END_SESSION = 0x11; + static constexpr int COMMAND_DIAL_TELEPHONE = 0x12; + static constexpr int COMMAND_HANG_UP_TELEPHONE = 0x13; + static constexpr int COMMAND_WAIT_FOR_TELEPHONE_CALL = 0x14; + static constexpr int COMMAND_TRANSFER_DATA = 0x15; + static constexpr int COMMAND_TELEPHONE_STATUS = 0x17; + static constexpr int COMMAND_SIO32 = 0x18; + static constexpr int COMMAND_READ_CONFIGURATION_DATA = 0x19; + static constexpr int COMMAND_ISP_LOGIN = 0x21; + static constexpr int COMMAND_ISP_LOGOUT = 0x22; + static constexpr int COMMAND_OPEN_TCP_CONNECTION = 0x23; + static constexpr int COMMAND_CLOSE_TCP_CONNECTION = 0x24; + static constexpr int COMMAND_OPEN_UDP_CONNECTION = 0x25; + static constexpr int COMMAND_CLOSE_UDP_CONNECTION = 0x26; + static constexpr int COMMAND_DNS_QUERY = 0x28; + static constexpr int COMMAND_ERROR_STATUS = 0x6E; + public: std::function debug; // TODO: REMOVE @@ -133,6 +151,51 @@ class LinkMobile { Config config; private: + struct MagicBytes { + u8 magic1 = 0x99; + u8 magic2 = 0x66; + } __attribute__((packed)); + + struct PacketHeader { + u8 commandId; + u8 _unused_; + u8 dataSizeH; // The Mobile Adapter discards any packets bigger than 255 + // bytes, effectively forcing the high byte of the packet + // data length to be 0. + u8 dataSizeL; + } __attribute__((packed)); + + struct PacketChecksum { + // The Packet Checksum is simply the 16-bit sum of all previous header bytes + // and all previous packet data bytes. It does not include the magic bytes. + // The checksum is transmitted big-endian. + u8 checksumH; + u8 checksumL; + } __attribute__((packed)); + + struct AcknowledgementSignal { + u8 deviceId; // The first byte is the Device ID OR'ed with the value 0x80 + u8 commandAck; // The second byte is 0x00 for the sender. The receiver + // transfers the Command ID from the Packet Header XOR'ed by + // 0x80. + + /* Device ID | OR Value | Device Type + 0x01 | 0x81 | Game Boy Advance + 0x08 | 0x88 | PDC Mobile Adapter (Blue) + 0x09 | 0x89 | cdmaOne Mobile Adapter (Yellow) + 0x0A | 0x8A | PHS Mobile Adapter (Green) + 0x0B | 0x8B | DDI Mobile Adapter (Red) + */ + } __attribute__((packed)); + + struct Command { + MagicBytes magicBytes; + PacketHeader packetHeader; + u8 data[255]; + PacketChecksum packetChecksum; + AcknowledgementSignal acknowledgementSignal; + }; + LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; Error lastError = NONE; @@ -164,7 +227,8 @@ class LinkMobile { bool start() { startTimer(); - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_8BIT); if (!login()) return false; @@ -188,7 +252,7 @@ class LinkMobile { } bool login() { - // TODO: ASD + // TODO: IMPLEMENT return false; } From a0934eaa1d5aca2b57b907eccc5bf5879a48d95c Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 10 Aug 2024 00:21:51 -0300 Subject: [PATCH 064/195] Adding basic packet sending (works!!) --- README.md | 2 +- lib/LinkMobile.hpp | 228 +++++++++++++++++++++++++++++++++++++++--- lib/LinkSPI.hpp | 2 +- lib/_link_tonc_mgba.h | 45 +++++++++ 4 files changed, 263 insertions(+), 14 deletions(-) create mode 100644 lib/_link_tonc_mgba.h diff --git a/README.md b/README.md index 0795219..beb274e 100644 --- a/README.md +++ b/README.md @@ -341,7 +341,7 @@ Name | Return type | Description ⚠️ only use the 2Mbps mode with custom hardware (very short wires)! -⚠️ don't send `0xFFFFFFFF` (or `0xFF` in 8-bit mode), it's reserved for errors! +⚠️ returns `0xFFFFFFFF` (or `0xFF`) on misuse or cancelled transfers! ## SPI Configuration diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 633c5f1..c994d34 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -29,6 +29,7 @@ // TODO: Remove #include #include +#include "_link_tonc_mgba.h" #define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") @@ -41,9 +42,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v6.7.0"; -void LINK_MOBILE_ISR_VBLANK(); -void LINK_MOBILE_ISR_SERIAL(); -void LINK_MOBILE_ISR_TIMER(); +#define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 class LinkMobile { private: @@ -51,12 +50,27 @@ class LinkMobile { using u16 = unsigned short; using u8 = unsigned char; + static constexpr int FRAME_LINES = 228; + static constexpr int PING_WAIT = FRAME_LINES * 7; + static constexpr int CMD_TIMEOUT = 100; + static constexpr int ADAPTER_WAITING = 0xD2; + static constexpr int GBA_WAITING = 0x4B; + static constexpr int OR_VALUE = 0x80; + static constexpr int LOGIN_STEPS = 8; + static constexpr int COMMAND_HEADER_VALUE1 = 0x99; + static constexpr int COMMAND_HEADER_VALUE2 = 0x66; + static constexpr int DEVICE_GBA = 0x1; + static constexpr int DEVICE_ADAPTER_BLUE = 0x8; + static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; + static constexpr int DEVICE_ADAPTER_GREEN = 0xA; + static constexpr int DEVICE_ADAPTER_RED = 0xB; static constexpr int COMMAND_BEGIN_SESSION = 0x10; static constexpr int COMMAND_END_SESSION = 0x11; static constexpr int COMMAND_DIAL_TELEPHONE = 0x12; static constexpr int COMMAND_HANG_UP_TELEPHONE = 0x13; static constexpr int COMMAND_WAIT_FOR_TELEPHONE_CALL = 0x14; static constexpr int COMMAND_TRANSFER_DATA = 0x15; + static constexpr int COMMAND_RESET = 0x16; static constexpr int COMMAND_TELEPHONE_STATUS = 0x17; static constexpr int COMMAND_SIO32 = 0x18; static constexpr int COMMAND_READ_CONFIGURATION_DATA = 0x19; @@ -68,6 +82,12 @@ class LinkMobile { static constexpr int COMMAND_CLOSE_UDP_CONNECTION = 0x26; static constexpr int COMMAND_DNS_QUERY = 0x28; static constexpr int COMMAND_ERROR_STATUS = 0x6E; + static constexpr u8 LOGIN_PARTS[] = {0x4e, 0x49, 0x4e, 0x54, + 0x45, 0x4e, 0x44, 0x4f}; + static constexpr int SUPPORTED_DEVICES_SIZE = 4; + static constexpr u8 SUPPORTED_DEVICES[] = { + DEVICE_ADAPTER_BLUE, DEVICE_ADAPTER_YELLOW, DEVICE_ADAPTER_GREEN, + DEVICE_ADAPTER_RED}; public: std::function debug; // TODO: REMOVE @@ -152,17 +172,27 @@ class LinkMobile { private: struct MagicBytes { - u8 magic1 = 0x99; - u8 magic2 = 0x66; + u8 magic1 = COMMAND_HEADER_VALUE1; + u8 magic2 = COMMAND_HEADER_VALUE2; + + bool isValid() { + return magic1 == COMMAND_HEADER_VALUE1 && magic2 == COMMAND_HEADER_VALUE2; + } + } __attribute__((packed)); + + struct PacketData { + u8 bytes[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; } __attribute__((packed)); struct PacketHeader { u8 commandId; - u8 _unused_; - u8 dataSizeH; // The Mobile Adapter discards any packets bigger than 255 - // bytes, effectively forcing the high byte of the packet - // data length to be 0. + u8 _unused_ = 0; + u8 _unusedDataSizeH_ = 0; // The Mobile Adapter discards any packets bigger + // than 255 bytes, effectively forcing the high + // byte of the packet data length to be 0. u8 dataSizeL; + + u16 sum() { return commandId + _unused_ + _unusedDataSizeH_ + dataSizeL; } } __attribute__((packed)); struct PacketChecksum { @@ -191,16 +221,34 @@ class LinkMobile { struct Command { MagicBytes magicBytes; PacketHeader packetHeader; - u8 data[255]; + PacketData packetData; PacketChecksum packetChecksum; AcknowledgementSignal acknowledgementSignal; }; + struct CommandResponse { + bool success = false; + Command command; + }; + + static constexpr u32 HEADER_SIZE = sizeof(MagicBytes) + sizeof(PacketHeader); + static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); + LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; + PacketData nextCommandData; + u32 nextCommandDataSize = 0; + volatile bool isSendingSyncCommand = false; Error lastError = NONE; volatile bool isEnabled = false; + void addData(u8 value, bool start = false) { + if (start) + nextCommandDataSize = 0; + nextCommandData.bytes[nextCommandDataSize] = value; + nextCommandDataSize++; + } + void copyName(char* target, const char* source, u32 length) { u32 len = std::strlen(source); @@ -230,6 +278,8 @@ class LinkMobile { linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_8BIT); + pingAdapter(); + if (!login()) return false; @@ -251,13 +301,167 @@ class LinkMobile { // Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } + void pingAdapter() { + transfer(0); + wait(PING_WAIT); + } + bool login() { - // TODO: IMPLEMENT + for (u32 i = 0; i < LOGIN_STEPS; i++) + addData(LOGIN_PARTS[i], i == 0); + auto command = buildCommand(COMMAND_BEGIN_SESSION, true); + + LINK_MOBILE_BARRIER; + isSendingSyncCommand = true; + LINK_MOBILE_BARRIER; + + sendCommand(command); + + LINK_MOBILE_BARRIER; + isSendingSyncCommand = false; + LINK_MOBILE_BARRIER; + return false; } + CommandResponse sendCommand(Command command) { + CommandResponse response; + + mgbalog("----------"); + mgbalog("sending command: %d (%d bytes).", command.packetHeader.commandId, + command.packetHeader.dataSizeL); + + // COMMAND + const u8* commandBytes = (const u8*)&command; + for (u32 i = 0; i < HEADER_SIZE + command.packetHeader.dataSizeL; i++) { + u8 r; + if ((r = transfer(commandBytes[i])) != ADAPTER_WAITING) { + mgbalog("! not waiting: %d", r); + return response; + } + } + mgbalog("header + data sent"); + commandBytes += HEADER_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + for (u32 i = 0; i < CHECKSUM_SIZE; i++) { + u8 r; + if ((r = transfer(commandBytes[i])) != ADAPTER_WAITING) { + mgbalog("! not waiting: %d (i = %d)", r, i); + return response; + } + } + mgbalog("checksum sent"); + if (!exchangeACK(0, command.packetHeader.commandId ^ OR_VALUE)) { + mgbalog("! invalid ack"); + return response; + } + mgbalog("COMMAND SENT!"); + + // wait for response???? + u8 rr; + while ((rr = transfer(GBA_WAITING)) == ADAPTER_WAITING) { + mgbalog("waiting %d", rr); + } + mgbalog("AND NOW %d", rr); + if (rr != COMMAND_HEADER_VALUE1) { + mgbalog("invalid magic response 1! %d", rr); + return response; + } + rr = transfer(GBA_WAITING); + if (rr != COMMAND_HEADER_VALUE2) { + mgbalog("invalid magic response 2! %d", rr); + return response; + } + + u8* responseCommandBytes = (u8*)&response.command; + for (u32 i = 2; i < HEADER_SIZE; i++) + responseCommandBytes[i] = transfer(GBA_WAITING); + responseCommandBytes += HEADER_SIZE; + // TODO: VALIDATE high bytes = 0? + mgbalog("header received, %d bytes", + response.command.packetHeader.dataSizeL); + for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) + responseCommandBytes[i] = transfer(GBA_WAITING); + responseCommandBytes += LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + mgbalog("bytes received"); + for (u32 i = 0; i < CHECKSUM_SIZE; i++) + responseCommandBytes[i] = transfer(GBA_WAITING); + mgbalog("checksum received"); + + // VALIDATE CHECKSUM + u32 rChecksum = response.command.packetHeader.sum(); + for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) + rChecksum += response.command.packetData.bytes[i]; + if (msB16(rChecksum) != response.command.packetChecksum.checksumH) { + mgbalog("wrong checksum H: expected %d but got %d", msB16(rChecksum), + response.command.packetChecksum.checksumH); + return response; + } + if (lsB16(rChecksum) != response.command.packetChecksum.checksumL) { + mgbalog("wrong checksum L: expected %d but got %d", lsB16(rChecksum), + response.command.packetChecksum.checksumL); + return response; + } + + if (!exchangeACK(response.command.packetHeader.commandId ^ OR_VALUE, 0)) { + mgbalog("! invalid ack response"); + return response; + } + + mgbalog("I think everything worked? %d", + response.command.packetHeader.dataSizeL); + + return response; + } + + bool exchangeACK(u8 localCommandAck, u8 remoteCommandAck) { + if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) + return false; + if (transfer(localCommandAck) != remoteCommandAck) + return false; + + return true; + } + + bool isSupportedAdapter(u8 ack) { + for (u32 i = 0; i < SUPPORTED_DEVICES_SIZE; i++) { + if ((SUPPORTED_DEVICES[i] | OR_VALUE) == ack) + return true; + } + + return false; + } + + Command buildCommand(u8 type, bool withData = false) { + Command command; + command.packetHeader.commandId = type; + command.packetHeader._unused_ = 0; + command.packetHeader._unusedDataSizeH_ = 0; + command.packetHeader.dataSizeL = withData ? (u8)nextCommandDataSize : 0; + if (withData) + command.packetData = nextCommandData; + u16 checksum = command.packetHeader.sum(); + for (u32 i = 0; i < command.packetHeader.dataSizeL; i++) + checksum += command.packetData.bytes[i]; + command.packetChecksum.checksumH = msB16(checksum); + command.packetChecksum.checksumL = lsB16(checksum); + command.acknowledgementSignal.deviceId = DEVICE_GBA | OR_VALUE; + command.acknowledgementSignal.commandAck = 0; + + return command; + } + + u32 transfer(u32 data) { + u32 lines = 0; + u32 vCount = Link::_REG_VCOUNT; + // mgbalog("SENDING %d", data); + u32 receivedData = linkSPI->transfer( + data, [this, &lines, &vCount]() { return cmdTimeout(lines, vCount); }); + + return receivedData; + } + bool cmdTimeout(u32& lines, u32& vCount) { - return timeout(100, lines, vCount); + return timeout(CMD_TIMEOUT, lines, vCount); } bool timeout(u32 limit, u32& lines, u32& vCount) { diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index cf61d3a..79b5f01 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -37,7 +37,7 @@ // considerations: // - when using Normal Mode between two GBAs, use a GBC Link Cable! // - only use the 2Mbps mode with custom hardware (very short wires)! -// - don't send 0xFFFFFFFF (or 0xFF in 8-bit mode), it's reserved for errors! +// - returns 0xFFFFFFFF (or 0xFF) on misuse or cancelled transfers! // -------------------------------------------------------------------------- #include "_link_common.hpp" diff --git a/lib/_link_tonc_mgba.h b/lib/_link_tonc_mgba.h new file mode 100644 index 0000000..340d67a --- /dev/null +++ b/lib/_link_tonc_mgba.h @@ -0,0 +1,45 @@ +#ifndef LINK_TONC_MGBA +#define LINK_TONC_MGBA + +#include +#include +#include "tonc_types.h" + +// -------------------------------------------------------------------- +// STRUCTS +// -------------------------------------------------------------------- + +typedef enum LogLevel { + LOG_FATAL = 0x100, + LOG_ERR = 0x101, + LOG_WARN = 0x102, + LOG_INFO = 0x103 +} LogLevel; + +// -------------------------------------------------------------------- +// MACROS +// -------------------------------------------------------------------- + +#define REG_LOG_ENABLE *(vu16*)0x4FFF780 +#define REG_LOG_LEVEL *(vu16*)0x4FFF700 + +// -------------------------------------------------------------------- +// INLINES +// -------------------------------------------------------------------- + +static inline void mgbalog(const char* fmt, ...) { + REG_LOG_ENABLE = 0xC0DE; + + va_list args; + va_start(args, fmt); + + char* const log = (char*)0x4FFF600; + vsnprintf(log, 0x100, fmt, args); + REG_LOG_LEVEL = LogLevel::LOG_WARN; + + va_end(args); +} + +#endif // LINK_TONC_MGBA + +// EOF \ No newline at end of file From 7f571d8b65e41c4ea37972deb9a7af1be11b20d1 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 10 Aug 2024 03:20:51 -0300 Subject: [PATCH 065/195] Refactoring initial LinkMobile implementation --- lib/LinkMobile.hpp | 281 ++++++++++++++++++++++++++------------------- 1 file changed, 164 insertions(+), 117 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index c994d34..40540d0 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -2,7 +2,7 @@ #define LINK_MOBILE_H // -------------------------------------------------------------------------- -// A high level driver for the GB Mobile Adapter. +// A high level driver for the Mobile Adapter GB. // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: @@ -40,7 +40,7 @@ if (!reset()) \ return false; -static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v6.7.0"; +static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 @@ -52,13 +52,12 @@ class LinkMobile { static constexpr int FRAME_LINES = 228; static constexpr int PING_WAIT = FRAME_LINES * 7; - static constexpr int CMD_TIMEOUT = 100; + static constexpr int CMD_TIMEOUT = FRAME_LINES * 3; static constexpr int ADAPTER_WAITING = 0xD2; static constexpr int GBA_WAITING = 0x4B; static constexpr int OR_VALUE = 0x80; - static constexpr int LOGIN_STEPS = 8; - static constexpr int COMMAND_HEADER_VALUE1 = 0x99; - static constexpr int COMMAND_HEADER_VALUE2 = 0x66; + static constexpr int COMMAND_MAGIC_VALUE1 = 0x99; + static constexpr int COMMAND_MAGIC_VALUE2 = 0x66; static constexpr int DEVICE_GBA = 0x1; static constexpr int DEVICE_ADAPTER_BLUE = 0x8; static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; @@ -81,9 +80,12 @@ class LinkMobile { static constexpr int COMMAND_OPEN_UDP_CONNECTION = 0x25; static constexpr int COMMAND_CLOSE_UDP_CONNECTION = 0x26; static constexpr int COMMAND_DNS_QUERY = 0x28; - static constexpr int COMMAND_ERROR_STATUS = 0x6E; + static constexpr int COMMAND_ERROR_STATUS = 0x6E | OR_VALUE; + + static constexpr int LOGIN_PARTS_SIZE = 8; static constexpr u8 LOGIN_PARTS[] = {0x4e, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x44, 0x4f}; + static constexpr int SUPPORTED_DEVICES_SIZE = 4; static constexpr u8 SUPPORTED_DEVICES[] = { DEVICE_ADAPTER_BLUE, DEVICE_ADAPTER_YELLOW, DEVICE_ADAPTER_GREEN, @@ -172,11 +174,11 @@ class LinkMobile { private: struct MagicBytes { - u8 magic1 = COMMAND_HEADER_VALUE1; - u8 magic2 = COMMAND_HEADER_VALUE2; + u8 magic1 = COMMAND_MAGIC_VALUE1; + u8 magic2 = COMMAND_MAGIC_VALUE2; bool isValid() { - return magic1 == COMMAND_HEADER_VALUE1 && magic2 == COMMAND_HEADER_VALUE2; + return magic1 == COMMAND_MAGIC_VALUE1 && magic2 == COMMAND_MAGIC_VALUE2; } } __attribute__((packed)); @@ -203,35 +205,32 @@ class LinkMobile { u8 checksumL; } __attribute__((packed)); - struct AcknowledgementSignal { - u8 deviceId; // The first byte is the Device ID OR'ed with the value 0x80 - u8 commandAck; // The second byte is 0x00 for the sender. The receiver - // transfers the Command ID from the Packet Header XOR'ed by - // 0x80. - - /* Device ID | OR Value | Device Type - 0x01 | 0x81 | Game Boy Advance - 0x08 | 0x88 | PDC Mobile Adapter (Blue) - 0x09 | 0x89 | cdmaOne Mobile Adapter (Yellow) - 0x0A | 0x8A | PHS Mobile Adapter (Green) - 0x0B | 0x8B | DDI Mobile Adapter (Red) - */ - } __attribute__((packed)); - struct Command { MagicBytes magicBytes; PacketHeader packetHeader; PacketData packetData; PacketChecksum packetChecksum; - AcknowledgementSignal acknowledgementSignal; + }; + + enum CommandStatus { + SUCCESS, + NOT_WAITING, + INVALID_DEVICE_ID, + INVALID_COMMAND_ACK, + INVALID_MAGIC_BYTES, + WEIRD_DATA_SIZE, + WRONG_CHECKSUM, + ERROR, + UNEXPECTED_RESPONSE }; struct CommandResponse { - bool success = false; + CommandStatus status; Command command; }; - static constexpr u32 HEADER_SIZE = sizeof(MagicBytes) + sizeof(PacketHeader); + static constexpr u32 PREAMBLE_SIZE = + sizeof(MagicBytes) + sizeof(PacketHeader); static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); LinkSPI* linkSPI = new LinkSPI(); @@ -307,119 +306,170 @@ class LinkMobile { } bool login() { - for (u32 i = 0; i < LOGIN_STEPS; i++) + for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) addData(LOGIN_PARTS[i], i == 0); auto command = buildCommand(COMMAND_BEGIN_SESSION, true); + return withSyncCommand([&command, this]() { + auto response = sendCommandWithResponse(command); + if (response.status != CommandStatus::SUCCESS) { + // TODO: RESET + if (response.status == CommandStatus::ERROR) { + mgbalog("error %d", response.command.packetData.bytes[1]); + } else { + mgbalog("status %d", response.status); + } + return false; + } + + mgbalog("SUCCESS!"); + + return true; + }); + } + + template + bool withSyncCommand(F action) { LINK_MOBILE_BARRIER; isSendingSyncCommand = true; LINK_MOBILE_BARRIER; - sendCommand(command); + bool result = action(); LINK_MOBILE_BARRIER; isSendingSyncCommand = false; LINK_MOBILE_BARRIER; - return false; + return result; } - CommandResponse sendCommand(Command command) { + CommandResponse sendCommandWithResponse(Command command) { CommandResponse response; + CommandStatus status = sendCommand(command); + if (status != CommandStatus::SUCCESS) { + response.status = status; + return response; + } - mgbalog("----------"); - mgbalog("sending command: %d (%d bytes).", command.packetHeader.commandId, - command.packetHeader.dataSizeL); - - // COMMAND - const u8* commandBytes = (const u8*)&command; - for (u32 i = 0; i < HEADER_SIZE + command.packetHeader.dataSizeL; i++) { - u8 r; - if ((r = transfer(commandBytes[i])) != ADAPTER_WAITING) { - mgbalog("! not waiting: %d", r); + response = receiveCommand(); + auto remoteCommand = response.command.packetHeader.commandId; + if (remoteCommand == COMMAND_ERROR_STATUS) { + if (response.command.packetHeader.dataSizeL != 2 || + response.command.packetData.bytes[0] != + command.packetHeader.commandId) { + response.status = CommandStatus::UNEXPECTED_RESPONSE; + return response; + } else { + response.status = CommandStatus::ERROR; return response; } } - mgbalog("header + data sent"); - commandBytes += HEADER_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - for (u32 i = 0; i < CHECKSUM_SIZE; i++) { - u8 r; - if ((r = transfer(commandBytes[i])) != ADAPTER_WAITING) { - mgbalog("! not waiting: %d (i = %d)", r, i); - return response; - } - } - mgbalog("checksum sent"); - if (!exchangeACK(0, command.packetHeader.commandId ^ OR_VALUE)) { - mgbalog("! invalid ack"); - return response; - } - mgbalog("COMMAND SENT!"); - // wait for response???? - u8 rr; - while ((rr = transfer(GBA_WAITING)) == ADAPTER_WAITING) { - mgbalog("waiting %d", rr); - } - mgbalog("AND NOW %d", rr); - if (rr != COMMAND_HEADER_VALUE1) { - mgbalog("invalid magic response 1! %d", rr); + if (remoteCommand != (command.packetHeader.commandId | OR_VALUE)) { + response.status = CommandStatus::UNEXPECTED_RESPONSE; return response; } - rr = transfer(GBA_WAITING); - if (rr != COMMAND_HEADER_VALUE2) { - mgbalog("invalid magic response 2! %d", rr); - return response; - } - - u8* responseCommandBytes = (u8*)&response.command; - for (u32 i = 2; i < HEADER_SIZE; i++) - responseCommandBytes[i] = transfer(GBA_WAITING); - responseCommandBytes += HEADER_SIZE; - // TODO: VALIDATE high bytes = 0? - mgbalog("header received, %d bytes", - response.command.packetHeader.dataSizeL); - for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) - responseCommandBytes[i] = transfer(GBA_WAITING); - responseCommandBytes += LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - mgbalog("bytes received"); - for (u32 i = 0; i < CHECKSUM_SIZE; i++) - responseCommandBytes[i] = transfer(GBA_WAITING); - mgbalog("checksum received"); - - // VALIDATE CHECKSUM - u32 rChecksum = response.command.packetHeader.sum(); - for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) - rChecksum += response.command.packetData.bytes[i]; - if (msB16(rChecksum) != response.command.packetChecksum.checksumH) { - mgbalog("wrong checksum H: expected %d but got %d", msB16(rChecksum), - response.command.packetChecksum.checksumH); - return response; - } - if (lsB16(rChecksum) != response.command.packetChecksum.checksumL) { - mgbalog("wrong checksum L: expected %d but got %d", lsB16(rChecksum), - response.command.packetChecksum.checksumL); - return response; - } - - if (!exchangeACK(response.command.packetHeader.commandId ^ OR_VALUE, 0)) { - mgbalog("! invalid ack response"); - return response; - } - - mgbalog("I think everything worked? %d", - response.command.packetHeader.dataSizeL); return response; } - bool exchangeACK(u8 localCommandAck, u8 remoteCommandAck) { - if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) - return false; - if (transfer(localCommandAck) != remoteCommandAck) - return false; + CommandStatus sendCommand(Command command) { + const u8* commandBytes = (const u8*)&command; - return true; + // Magic Bytes + Packet Header + Data + for (u32 i = 0; i < PREAMBLE_SIZE + command.packetHeader.dataSizeL; i++) { + if (transfer(commandBytes[i]) != ADAPTER_WAITING) + return CommandStatus::NOT_WAITING; + } + commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + + // Packet Checksum + for (u32 i = 0; i < CHECKSUM_SIZE; i++) { + if (transfer(commandBytes[i]) != ADAPTER_WAITING) + return CommandStatus::NOT_WAITING; + } + + // Acknowledgement Signal + auto ackResult = acknowledge(0, command.packetHeader.commandId ^ OR_VALUE); + if (ackResult != SUCCESS) + return ackResult; + + return CommandStatus::SUCCESS; + } + + CommandResponse receiveCommand() { + CommandResponse response; + u8* responseBytes = (u8*)&response.command; + + // Magic Bytes + if (waitForMeaningfulByte() != COMMAND_MAGIC_VALUE1) { + response.status = CommandStatus::INVALID_MAGIC_BYTES; + return response; + } + if (transfer(GBA_WAITING) != COMMAND_MAGIC_VALUE2) { + response.status = CommandStatus::INVALID_MAGIC_BYTES; + return response; + } + + // Packet Header + for (u32 i = 2; i < PREAMBLE_SIZE; i++) + responseBytes[i] = transfer(GBA_WAITING); + responseBytes += PREAMBLE_SIZE; + if (response.command.packetHeader._unusedDataSizeH_ != 0) { + response.status = CommandStatus::WEIRD_DATA_SIZE; + return response; + } + + // Data + for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) + responseBytes[i] = transfer(GBA_WAITING); + responseBytes += LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + + // Packet Checksum + for (u32 i = 0; i < CHECKSUM_SIZE; i++) + responseBytes[i] = transfer(GBA_WAITING); + u32 rChecksum = response.command.packetHeader.sum(); + for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) + rChecksum += response.command.packetData.bytes[i]; + if (msB16(rChecksum) != response.command.packetChecksum.checksumH || + lsB16(rChecksum) != response.command.packetChecksum.checksumL) { + response.status = CommandStatus::WRONG_CHECKSUM; + return response; + } + + // Acknowledgement Signal + auto ackResult = + acknowledge(response.command.packetHeader.commandId ^ OR_VALUE, 0); + if (ackResult != SUCCESS) { + response.status = ackResult; + return response; + } + + response.status = CommandStatus::SUCCESS; + + return response; + } + + u8 waitForMeaningfulByte() { + u32 lines = 0; + u32 vCount = Link::_REG_VCOUNT; + + u8 value = GBA_WAITING; + while ((value = transfer(GBA_WAITING)) == ADAPTER_WAITING) { + if (cmdTimeout(lines, vCount)) + break; + } + + return value; + } + + CommandStatus acknowledge(u8 localCommandAck, u8 remoteCommandAck) { + if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) + return CommandStatus::INVALID_DEVICE_ID; + if (transfer(localCommandAck) != remoteCommandAck) + return CommandStatus::INVALID_COMMAND_ACK; + + return CommandStatus::SUCCESS; } bool isSupportedAdapter(u8 ack) { @@ -444,8 +494,6 @@ class LinkMobile { checksum += command.packetData.bytes[i]; command.packetChecksum.checksumH = msB16(checksum); command.packetChecksum.checksumL = lsB16(checksum); - command.acknowledgementSignal.deviceId = DEVICE_GBA | OR_VALUE; - command.acknowledgementSignal.commandAck = 0; return command; } @@ -453,7 +501,6 @@ class LinkMobile { u32 transfer(u32 data) { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; - // mgbalog("SENDING %d", data); u32 receivedData = linkSPI->transfer( data, [this, &lines, &vCount]() { return cmdTimeout(lines, vCount); }); From 0549f3c5013f1779e90697225e0a0c571be69990 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 10 Aug 2024 07:34:42 -0300 Subject: [PATCH 066/195] Implementing async command sending --- examples/LinkMobile_demo/src/main.cpp | 9 +- lib/LinkCableMultiboot.hpp | 2 +- lib/LinkMobile.hpp | 278 ++++++++++++++++++-------- lib/LinkPS2Mouse.hpp | 6 +- 4 files changed, 208 insertions(+), 87 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index da4a21d..bfe0218 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -64,8 +64,13 @@ start: firstTime = false; } +again: // (3) Initialize the library - linkMobile->activate(); + if (!linkMobile->activate()) { + log("Adapter not connected!\n\nPress A to try again"); + waitFor(KEY_A); + goto again; + } bool activating = false; @@ -153,4 +158,4 @@ void wait(u32 verticalLines) { void hang() { waitFor(KEY_DOWN); -} \ No newline at end of file +} diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index fc30d2f..bd874fd 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -200,7 +200,7 @@ class LinkCableMultiboot { PartialResult sendHeader(const u8* rom, F cancel) { u16* headerOut = (u16*)rom; - for (int i = 0; i < HEADER_SIZE; i += 2) { + for (u32 i = 0; i < HEADER_SIZE; i += 2) { linkRawCable->transfer(*(headerOut++), cancel); if (cancel()) return ABORTED; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 40540d0..1117c39 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -96,11 +96,7 @@ class LinkMobile { enum State { NEEDS_RESET, - AUTHENTICATED, - SEARCHING, - SERVING, - CONNECTING, - CONNECTED + SESSION_ACTIVE, }; enum Error { @@ -119,20 +115,22 @@ class LinkMobile { bool activate() { lastError = NONE; - isEnabled = false; + isEnabled = false; // TODO: EARLY ACTIVATE LINK_MOBILE_BARRIER; bool success = reset(); LINK_MOBILE_BARRIER; + if (!success) { + deactivate(); + return false; + } + isEnabled = true; - return success; + return true; } bool deactivate() { - activate(); - // bool success = sendCommand(LINK_MOBILE_COMMAND_BYE).success; - lastError = NONE; isEnabled = false; resetState(); @@ -159,6 +157,33 @@ class LinkMobile { void _onSerial() { if (!isEnabled) return; + + linkSPI->_onSerial(); + if (linkSPI->getAsyncState() != LinkSPI::AsyncState::READY) { + mgbalog("NOT READY"); + return; + } + u32 newData = linkSPI->getAsyncData(); + + if (state != SESSION_ACTIVE) { // TODO: AUTHENTICATING state + mgbalog("SESSION NOT ACTIVE"); + return; + } + + if (asyncCommand.isActive) { + if (asyncCommand.state == AsyncCommand::State::PENDING) { + if (isSIO32Mode()) { + // TODO: IMPLEMENT + mgbalog("sio32"); + } else { + updateAsyncCommandSIO8(newData); + } + + if (asyncCommand.state == AsyncCommand::State::COMPLETED) { + processAsyncCommand(); + } + } + } } void _onTimer() { @@ -176,10 +201,6 @@ class LinkMobile { struct MagicBytes { u8 magic1 = COMMAND_MAGIC_VALUE1; u8 magic2 = COMMAND_MAGIC_VALUE2; - - bool isValid() { - return magic1 == COMMAND_MAGIC_VALUE1 && magic2 == COMMAND_MAGIC_VALUE2; - } } __attribute__((packed)); struct PacketData { @@ -212,7 +233,8 @@ class LinkMobile { PacketChecksum packetChecksum; }; - enum CommandStatus { + enum CommandResult { + PENDING, SUCCESS, NOT_WAITING, INVALID_DEVICE_ID, @@ -225,14 +247,28 @@ class LinkMobile { }; struct CommandResponse { - CommandStatus status; + CommandResult result = CommandResult::PENDING; Command command; }; + struct AsyncCommand { + enum State { PENDING, COMPLETED }; + enum Direction { SENDING, RECEIVING }; + + volatile State state; + volatile CommandResult result; + volatile u32 transferred; // (in SIO32: words; in SIO8: bytes) + Command cmd; + volatile Direction direction; + volatile bool isWaiting; + volatile bool isActive = false; + }; + static constexpr u32 PREAMBLE_SIZE = sizeof(MagicBytes) + sizeof(PacketHeader); static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); + AsyncCommand asyncCommand; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; PacketData nextCommandData; @@ -241,6 +277,12 @@ class LinkMobile { Error lastError = NONE; volatile bool isEnabled = false; + void processAsyncCommand() { // (irq only) + asyncCommand.isActive = false; + // TODO: IMPLEMENT + mgbalog("PROCESSED! %d", asyncCommand.result); + } + void addData(u8 value, bool start = false) { if (start) nextCommandDataSize = 0; @@ -264,7 +306,10 @@ class LinkMobile { return start(); } - void resetState() { this->state = NEEDS_RESET; } + void resetState() { + this->asyncCommand.isActive = false; + this->state = NEEDS_RESET; + } void stop() { stopTimer(); @@ -284,7 +329,7 @@ class LinkMobile { // TODO: SWITCH TO 32BITS? - state = AUTHENTICATED; + state = SESSION_ACTIVE; return true; } @@ -312,19 +357,19 @@ class LinkMobile { return withSyncCommand([&command, this]() { auto response = sendCommandWithResponse(command); - if (response.status != CommandStatus::SUCCESS) { + if (response.result != CommandResult::SUCCESS) { // TODO: RESET - if (response.status == CommandStatus::ERROR) { + if (response.result == CommandResult::ERROR) { mgbalog("error %d", response.command.packetData.bytes[1]); } else { - mgbalog("status %d", response.status); + mgbalog("result %d", response.result); } return false; + } else { + mgbalog("success size %d", response.command.packetHeader.dataSizeL); } - mgbalog("SUCCESS!"); - - return true; + return response.result == CommandResult::SUCCESS; }); } @@ -345,9 +390,15 @@ class LinkMobile { CommandResponse sendCommandWithResponse(Command command) { CommandResponse response; - CommandStatus status = sendCommand(command); - if (status != CommandStatus::SUCCESS) { - response.status = status; + + isEnabled = true; // TODO: !!! + state = SESSION_ACTIVE; // TODO: !!! + sendCommandAsync(command); + while (asyncCommand.isActive) + ; + if (asyncCommand.result != CommandResult::SUCCESS) { + mgbalog("NOT SUCCESS 1 %d", asyncCommand.result); + response.result = asyncCommand.result; return response; } @@ -357,57 +408,33 @@ class LinkMobile { if (response.command.packetHeader.dataSizeL != 2 || response.command.packetData.bytes[0] != command.packetHeader.commandId) { - response.status = CommandStatus::UNEXPECTED_RESPONSE; + response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } else { - response.status = CommandStatus::ERROR; + response.result = CommandResult::ERROR; return response; } } if (remoteCommand != (command.packetHeader.commandId | OR_VALUE)) { - response.status = CommandStatus::UNEXPECTED_RESPONSE; + response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } return response; } - CommandStatus sendCommand(Command command) { - const u8* commandBytes = (const u8*)&command; - - // Magic Bytes + Packet Header + Data - for (u32 i = 0; i < PREAMBLE_SIZE + command.packetHeader.dataSizeL; i++) { - if (transfer(commandBytes[i]) != ADAPTER_WAITING) - return CommandStatus::NOT_WAITING; - } - commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - - // Packet Checksum - for (u32 i = 0; i < CHECKSUM_SIZE; i++) { - if (transfer(commandBytes[i]) != ADAPTER_WAITING) - return CommandStatus::NOT_WAITING; - } - - // Acknowledgement Signal - auto ackResult = acknowledge(0, command.packetHeader.commandId ^ OR_VALUE); - if (ackResult != SUCCESS) - return ackResult; - - return CommandStatus::SUCCESS; - } - CommandResponse receiveCommand() { CommandResponse response; u8* responseBytes = (u8*)&response.command; // Magic Bytes if (waitForMeaningfulByte() != COMMAND_MAGIC_VALUE1) { - response.status = CommandStatus::INVALID_MAGIC_BYTES; + response.result = CommandResult::INVALID_MAGIC_BYTES; return response; } if (transfer(GBA_WAITING) != COMMAND_MAGIC_VALUE2) { - response.status = CommandStatus::INVALID_MAGIC_BYTES; + response.result = CommandResult::INVALID_MAGIC_BYTES; return response; } @@ -416,7 +443,7 @@ class LinkMobile { responseBytes[i] = transfer(GBA_WAITING); responseBytes += PREAMBLE_SIZE; if (response.command.packetHeader._unusedDataSizeH_ != 0) { - response.status = CommandStatus::WEIRD_DATA_SIZE; + response.result = CommandResult::WEIRD_DATA_SIZE; return response; } @@ -433,7 +460,7 @@ class LinkMobile { rChecksum += response.command.packetData.bytes[i]; if (msB16(rChecksum) != response.command.packetChecksum.checksumH || lsB16(rChecksum) != response.command.packetChecksum.checksumL) { - response.status = CommandStatus::WRONG_CHECKSUM; + response.result = CommandResult::WRONG_CHECKSUM; return response; } @@ -441,15 +468,110 @@ class LinkMobile { auto ackResult = acknowledge(response.command.packetHeader.commandId ^ OR_VALUE, 0); if (ackResult != SUCCESS) { - response.status = ackResult; + response.result = ackResult; return response; } - response.status = CommandStatus::SUCCESS; + response.result = CommandResult::SUCCESS; return response; } + bool sendCommandAsync(Command command) { // (irq only) + if (asyncCommand.isActive /* || isSendingSyncCommand*/) + return false; + + mgbalog("Sending"); + + asyncCommand.state = AsyncCommand::State::PENDING; + asyncCommand.result = CommandResult::PENDING; + asyncCommand.transferred = 0; + asyncCommand.cmd = command; + asyncCommand.direction = AsyncCommand::Direction::SENDING; + asyncCommand.isWaiting = false; + asyncCommand.isActive = true; + + if (isSIO32Mode()) { + transferAsync(*((u32*)&command)); // TODO: CHECK ENDIANNESS + asyncCommand.transferred += 4; + } else { + transferAsync(command.magicBytes.magic1); + asyncCommand.transferred++; + } + + return true; + } + + void updateAsyncCommandSIO8(u32 newData) { // (irq only) + mgbalog("Updating"); + const u8* commandBytes = (const u8*)&asyncCommand.cmd; + u32 preambleAndDataSize = + PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; + + if (asyncCommand.transferred < preambleAndDataSize) { + // Magic Bytes + Packet Header + Data + if (newData != ADAPTER_WAITING) { + asyncCommand.result = CommandResult::NOT_WAITING; + asyncCommand.state = AsyncCommand::State::COMPLETED; + return; + } + + transferAsync(commandBytes[asyncCommand.transferred]); + asyncCommand.transferred++; + } else if (asyncCommand.transferred < preambleAndDataSize + CHECKSUM_SIZE) { + commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + + // Packet Checksum + if (newData != ADAPTER_WAITING) { + asyncCommand.result = CommandResult::NOT_WAITING; + asyncCommand.state = AsyncCommand::State::COMPLETED; + return; + } + + transferAsync( + commandBytes[asyncCommand.transferred - preambleAndDataSize]); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == + preambleAndDataSize + CHECKSUM_SIZE) { + // Acknowledgement Signal (1) + if (newData != ADAPTER_WAITING) { + asyncCommand.result = CommandResult::NOT_WAITING; + asyncCommand.state = AsyncCommand::State::COMPLETED; + return; + } + + transferAsync(DEVICE_GBA | OR_VALUE); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == + preambleAndDataSize + CHECKSUM_SIZE + 1) { + // Acknowledgement Signal (2) + if (!isSupportedAdapter(newData)) { + asyncCommand.result = CommandResult::INVALID_DEVICE_ID; + asyncCommand.state = AsyncCommand::State::COMPLETED; + return; + } + + transferAsync(0); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == + preambleAndDataSize + CHECKSUM_SIZE + 2) { + // Acknowledgement Signal (3) + if (newData != (asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE)) { + asyncCommand.result = CommandResult::INVALID_COMMAND_ACK; + asyncCommand.state = AsyncCommand::State::COMPLETED; + mgbalog("COMMAND ACK: %d, expected %d, cmd %d", newData, + asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE, + asyncCommand.cmd.packetHeader.commandId); + return; + } + + asyncCommand.result = CommandResult::SUCCESS; + asyncCommand.state = AsyncCommand::State::COMPLETED; + } else { + mgbalog("wtf"); // TODO: REMOVE + } + } + u8 waitForMeaningfulByte() { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; @@ -463,13 +585,13 @@ class LinkMobile { return value; } - CommandStatus acknowledge(u8 localCommandAck, u8 remoteCommandAck) { + CommandResult acknowledge(u8 localCommandAck, u8 remoteCommandAck) { if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) - return CommandStatus::INVALID_DEVICE_ID; + return CommandResult::INVALID_DEVICE_ID; if (transfer(localCommandAck) != remoteCommandAck) - return CommandStatus::INVALID_COMMAND_ACK; + return CommandResult::INVALID_COMMAND_ACK; - return CommandStatus::SUCCESS; + return CommandResult::SUCCESS; } bool isSupportedAdapter(u8 ack) { @@ -498,6 +620,13 @@ class LinkMobile { return command; } + void transferAsync(u32 data) { + // TODO: SEND WITH TIMER INTERRUPT; ADD SMALL WAIT (4 ticks for sio8, 8 + // ticks for sio32) + linkSPI->transferAsync(data); + // TODO: asyncCommand.isWaiting = true; + } + u32 transfer(u32 data) { u32 lines = 0; u32 vCount = Link::_REG_VCOUNT; @@ -507,6 +636,10 @@ class LinkMobile { return receivedData; } + bool isSIO32Mode() { + return linkSPI->getDataSize() == LinkSPI::DataSize::SIZE_32BIT; + } + bool cmdTimeout(u32& lines, u32& vCount) { return timeout(CMD_TIMEOUT, lines, vCount); } @@ -532,23 +665,6 @@ class LinkMobile { }; } - template - void waitVBlanks(u32 vBlanks, F onVBlank) { - u32 count = 0; - u32 vCount = Link::_REG_VCOUNT; - - while (count < vBlanks) { - if (Link::_REG_VCOUNT != vCount) { - vCount = Link::_REG_VCOUNT; - - if (vCount == 160) { - onVBlank(); - count++; - } - } - }; - } - u32 buildU32(u16 msB, u16 lsB) { return (msB << 16) | lsB; } u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } u16 msB32(u32 value) { return value >> 16; } diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 4e3a295..f395712 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -136,7 +136,7 @@ class LinkPS2Mouse { s16 x = readByte(); if ((status & (1 << 4)) != 0) // negative - for (int i = 8; i < 16; i++) + for (u32 i = 8; i < 16; i++) x |= 1 << i; return x; } @@ -145,7 +145,7 @@ class LinkPS2Mouse { s16 y = readByte(); if ((status & (1 << 5)) != 0) // negative - for (int i = 8; i < 16; i++) + for (u32 i = 8; i < 16; i++) y |= 1 << i; return y; } @@ -203,7 +203,7 @@ class LinkPS2Mouse { ; while (!getClock()) ; // eat start bit - for (int i = 0; i < 8; i++) { + for (u32 i = 0; i < 8; i++) { data |= readBit() << i; } readBit(); // parity bit From 7fe1c9f13a89471d50808360071d0703b71840c8 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 12 Aug 2024 04:32:56 -0300 Subject: [PATCH 067/195] Simplifying updateAsyncCommandSIO8 --- lib/LinkMobile.hpp | 54 +++++++++++++++------------------------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 1117c39..1ba3250 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -397,7 +397,7 @@ class LinkMobile { while (asyncCommand.isActive) ; if (asyncCommand.result != CommandResult::SUCCESS) { - mgbalog("NOT SUCCESS 1 %d", asyncCommand.result); + mgbalog("NOT SUCCESS %d", asyncCommand.result); response.result = asyncCommand.result; return response; } @@ -503,47 +503,31 @@ class LinkMobile { } void updateAsyncCommandSIO8(u32 newData) { // (irq only) - mgbalog("Updating"); const u8* commandBytes = (const u8*)&asyncCommand.cmd; - u32 preambleAndDataSize = - PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; - if (asyncCommand.transferred < preambleAndDataSize) { + bool isAcknowledgement = + asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; + if (!isAcknowledgement && newData != ADAPTER_WAITING) { + asyncCommand.result = CommandResult::NOT_WAITING; + asyncCommand.state = AsyncCommand::State::COMPLETED; + return; + } + + if (asyncCommand.transferred < mainSize) { // Magic Bytes + Packet Header + Data - if (newData != ADAPTER_WAITING) { - asyncCommand.result = CommandResult::NOT_WAITING; - asyncCommand.state = AsyncCommand::State::COMPLETED; - return; - } - transferAsync(commandBytes[asyncCommand.transferred]); asyncCommand.transferred++; - } else if (asyncCommand.transferred < preambleAndDataSize + CHECKSUM_SIZE) { - commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - + } else if (asyncCommand.transferred < mainSize + CHECKSUM_SIZE) { // Packet Checksum - if (newData != ADAPTER_WAITING) { - asyncCommand.result = CommandResult::NOT_WAITING; - asyncCommand.state = AsyncCommand::State::COMPLETED; - return; - } - - transferAsync( - commandBytes[asyncCommand.transferred - preambleAndDataSize]); + commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + transferAsync(commandBytes[asyncCommand.transferred - mainSize]); asyncCommand.transferred++; - } else if (asyncCommand.transferred == - preambleAndDataSize + CHECKSUM_SIZE) { + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { // Acknowledgement Signal (1) - if (newData != ADAPTER_WAITING) { - asyncCommand.result = CommandResult::NOT_WAITING; - asyncCommand.state = AsyncCommand::State::COMPLETED; - return; - } - transferAsync(DEVICE_GBA | OR_VALUE); asyncCommand.transferred++; - } else if (asyncCommand.transferred == - preambleAndDataSize + CHECKSUM_SIZE + 1) { + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) if (!isSupportedAdapter(newData)) { asyncCommand.result = CommandResult::INVALID_DEVICE_ID; @@ -553,15 +537,11 @@ class LinkMobile { transferAsync(0); asyncCommand.transferred++; - } else if (asyncCommand.transferred == - preambleAndDataSize + CHECKSUM_SIZE + 2) { + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { // Acknowledgement Signal (3) if (newData != (asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE)) { asyncCommand.result = CommandResult::INVALID_COMMAND_ACK; asyncCommand.state = AsyncCommand::State::COMPLETED; - mgbalog("COMMAND ACK: %d, expected %d, cmd %d", newData, - asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE, - asyncCommand.cmd.packetHeader.commandId); return; } From c5abe13afdb2df7e719eea8bdc3f54651df54d07 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 12 Aug 2024 05:46:50 -0300 Subject: [PATCH 068/195] Implementing receiveAsyncCommandSIO8 --- lib/LinkMobile.hpp | 207 ++++++++++++++++++++++++++------------------- 1 file changed, 121 insertions(+), 86 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 1ba3250..7db81cc 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -176,7 +176,10 @@ class LinkMobile { // TODO: IMPLEMENT mgbalog("sio32"); } else { - updateAsyncCommandSIO8(newData); + if (asyncCommand.direction == AsyncCommand::Direction::SENDING) + sendAsyncCommandSIO8(newData); + else + receiveAsyncCommandSIO8(newData); } if (asyncCommand.state == AsyncCommand::State::COMPLETED) { @@ -260,8 +263,14 @@ class LinkMobile { volatile u32 transferred; // (in SIO32: words; in SIO8: bytes) Command cmd; volatile Direction direction; + volatile u16 expectedChecksum; volatile bool isWaiting; volatile bool isActive = false; + + void fail(CommandResult result) { + result = CommandResult::NOT_WAITING; + state = AsyncCommand::State::COMPLETED; + } }; static constexpr u32 PREAMBLE_SIZE = @@ -397,12 +406,22 @@ class LinkMobile { while (asyncCommand.isActive) ; if (asyncCommand.result != CommandResult::SUCCESS) { - mgbalog("NOT SUCCESS %d", asyncCommand.result); + mgbalog("NOT SUCCESS SEND %d", asyncCommand.result); response.result = asyncCommand.result; return response; } - response = receiveCommand(); + receiveCommandAsync(); + while (asyncCommand.isActive) + ; + if (asyncCommand.result != CommandResult::SUCCESS) { + mgbalog("NOT SUCCESS RESPONSE %d", asyncCommand.result); + response.result = asyncCommand.result; + return response; + } + response.result = asyncCommand.result; + response.command = asyncCommand.cmd; + auto remoteCommand = response.command.packetHeader.commandId; if (remoteCommand == COMMAND_ERROR_STATUS) { if (response.command.packetHeader.dataSizeL != 2 || @@ -424,59 +443,6 @@ class LinkMobile { return response; } - CommandResponse receiveCommand() { - CommandResponse response; - u8* responseBytes = (u8*)&response.command; - - // Magic Bytes - if (waitForMeaningfulByte() != COMMAND_MAGIC_VALUE1) { - response.result = CommandResult::INVALID_MAGIC_BYTES; - return response; - } - if (transfer(GBA_WAITING) != COMMAND_MAGIC_VALUE2) { - response.result = CommandResult::INVALID_MAGIC_BYTES; - return response; - } - - // Packet Header - for (u32 i = 2; i < PREAMBLE_SIZE; i++) - responseBytes[i] = transfer(GBA_WAITING); - responseBytes += PREAMBLE_SIZE; - if (response.command.packetHeader._unusedDataSizeH_ != 0) { - response.result = CommandResult::WEIRD_DATA_SIZE; - return response; - } - - // Data - for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) - responseBytes[i] = transfer(GBA_WAITING); - responseBytes += LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - - // Packet Checksum - for (u32 i = 0; i < CHECKSUM_SIZE; i++) - responseBytes[i] = transfer(GBA_WAITING); - u32 rChecksum = response.command.packetHeader.sum(); - for (u32 i = 0; i < response.command.packetHeader.dataSizeL; i++) - rChecksum += response.command.packetData.bytes[i]; - if (msB16(rChecksum) != response.command.packetChecksum.checksumH || - lsB16(rChecksum) != response.command.packetChecksum.checksumL) { - response.result = CommandResult::WRONG_CHECKSUM; - return response; - } - - // Acknowledgement Signal - auto ackResult = - acknowledge(response.command.packetHeader.commandId ^ OR_VALUE, 0); - if (ackResult != SUCCESS) { - response.result = ackResult; - return response; - } - - response.result = CommandResult::SUCCESS; - - return response; - } - bool sendCommandAsync(Command command) { // (irq only) if (asyncCommand.isActive /* || isSendingSyncCommand*/) return false; @@ -488,6 +454,7 @@ class LinkMobile { asyncCommand.transferred = 0; asyncCommand.cmd = command; asyncCommand.direction = AsyncCommand::Direction::SENDING; + asyncCommand.expectedChecksum = 0; asyncCommand.isWaiting = false; asyncCommand.isActive = true; @@ -502,20 +469,37 @@ class LinkMobile { return true; } - void updateAsyncCommandSIO8(u32 newData) { // (irq only) + bool receiveCommandAsync() { // (irq only) + if (asyncCommand.isActive /* || isSendingSyncCommand*/) + return false; + + mgbalog("Receiving"); + + asyncCommand.state = AsyncCommand::State::PENDING; + asyncCommand.result = CommandResult::PENDING; + asyncCommand.transferred = 0; + asyncCommand.cmd = Command{}; + asyncCommand.direction = AsyncCommand::Direction::RECEIVING; + asyncCommand.expectedChecksum = 0; + asyncCommand.isWaiting = false; + asyncCommand.isActive = true; + + transferAsync(GBA_WAITING); + + return true; + } + + void sendAsyncCommandSIO8(u32 newData) { // (irq only) const u8* commandBytes = (const u8*)&asyncCommand.cmd; u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; bool isAcknowledgement = asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; - if (!isAcknowledgement && newData != ADAPTER_WAITING) { - asyncCommand.result = CommandResult::NOT_WAITING; - asyncCommand.state = AsyncCommand::State::COMPLETED; - return; - } + if (!isAcknowledgement && newData != ADAPTER_WAITING) + return asyncCommand.fail(CommandResult::NOT_WAITING); if (asyncCommand.transferred < mainSize) { - // Magic Bytes + Packet Header + Data + // Magic Bytes + Packet Header + Packet Data transferAsync(commandBytes[asyncCommand.transferred]); asyncCommand.transferred++; } else if (asyncCommand.transferred < mainSize + CHECKSUM_SIZE) { @@ -529,42 +513,93 @@ class LinkMobile { asyncCommand.transferred++; } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) - if (!isSupportedAdapter(newData)) { - asyncCommand.result = CommandResult::INVALID_DEVICE_ID; - asyncCommand.state = AsyncCommand::State::COMPLETED; - return; - } - + if (!isSupportedAdapter(newData)) + return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); transferAsync(0); asyncCommand.transferred++; } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { // Acknowledgement Signal (3) - if (newData != (asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE)) { - asyncCommand.result = CommandResult::INVALID_COMMAND_ACK; - asyncCommand.state = AsyncCommand::State::COMPLETED; - return; - } - + if (newData != (asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE)) + return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; - } else { - mgbalog("wtf"); // TODO: REMOVE } } - u8 waitForMeaningfulByte() { - u32 lines = 0; - u32 vCount = Link::_REG_VCOUNT; + void receiveAsyncCommandSIO8(u32 newData) { // (irq only) + u8* commandBytes = (u8*)&asyncCommand.cmd; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; - u8 value = GBA_WAITING; - while ((value = transfer(GBA_WAITING)) == ADAPTER_WAITING) { - if (cmdTimeout(lines, vCount)) - break; + if (asyncCommand.transferred == 0) { + // Magic Bytes (1) + if (newData == ADAPTER_WAITING) + return transferAsync(GBA_WAITING); + if (newData != COMMAND_MAGIC_VALUE1) + return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); + transferAsync(GBA_WAITING); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == 1) { + // Magic Bytes (1) + if (newData != COMMAND_MAGIC_VALUE2) + return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); + transferAsync(GBA_WAITING); + asyncCommand.transferred++; + } else if (asyncCommand.transferred < PREAMBLE_SIZE) { + // Packet Header + commandBytes[asyncCommand.transferred] = newData; + if (asyncCommand.cmd.packetHeader._unusedDataSizeH_ != 0) + return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); + transferAsync(GBA_WAITING); + asyncCommand.transferred++; + if (asyncCommand.transferred == PREAMBLE_SIZE) + asyncCommand.expectedChecksum = asyncCommand.cmd.packetHeader.sum(); + } else if (asyncCommand.transferred < mainSize) { + // Packet Data + commandBytes[asyncCommand.transferred] = newData; + asyncCommand.expectedChecksum += newData; + transferAsync(GBA_WAITING); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == mainSize) { + // Packet Checksum (1) + if (newData != msB16(asyncCommand.expectedChecksum)) + return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); + transferAsync(GBA_WAITING); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == mainSize + 1) { + // Packet Checksum (2) + if (newData != lsB16(asyncCommand.expectedChecksum)) + return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); + transferAsync(DEVICE_GBA | OR_VALUE); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { + // Acknowledgement Signal (1) + if (!isSupportedAdapter(newData)) + return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); + transferAsync(asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE); + asyncCommand.transferred++; + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { + // Acknowledgement Signal (2) + if (newData != 0) + return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); + asyncCommand.result = CommandResult::SUCCESS; + asyncCommand.state = AsyncCommand::State::COMPLETED; } - - return value; } + // TODO: USE? + // u8 waitForMeaningfulByte() { + // u32 lines = 0; + // u32 vCount = Link::_REG_VCOUNT; + + // u8 value = GBA_WAITING; + // while ((value = transfer(GBA_WAITING)) == ADAPTER_WAITING) { + // if (cmdTimeout(lines, vCount)) + // break; + // } + + // return value; + // } + CommandResult acknowledge(u8 localCommandAck, u8 remoteCommandAck) { if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) return CommandResult::INVALID_DEVICE_ID; From e897f78a1bf1d9d3d898bde9fd9e1edcaeab9e90 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 12 Aug 2024 06:37:13 -0300 Subject: [PATCH 069/195] Refactoring async receive --- lib/LinkMobile.hpp | 226 +++++++++++++++++++-------------------------- 1 file changed, 96 insertions(+), 130 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 7db81cc..9e8d5f5 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -52,7 +52,7 @@ class LinkMobile { static constexpr int FRAME_LINES = 228; static constexpr int PING_WAIT = FRAME_LINES * 7; - static constexpr int CMD_TIMEOUT = FRAME_LINES * 3; + static constexpr int CMD_TIMEOUT = FRAME_LINES * 5; static constexpr int ADAPTER_WAITING = 0xD2; static constexpr int GBA_WAITING = 0x4B; static constexpr int OR_VALUE = 0x80; @@ -96,6 +96,7 @@ class LinkMobile { enum State { NEEDS_RESET, + AUTHENTICATING, SESSION_ACTIVE, }; @@ -113,9 +114,14 @@ class LinkMobile { [[nodiscard]] bool isActive() { return isEnabled; } + /** + * @brief ... + * + * \warning Blocks the system for ~15 frames! + */ bool activate() { lastError = NONE; - isEnabled = false; // TODO: EARLY ACTIVATE + isEnabled = false; LINK_MOBILE_BARRIER; bool success = reset(); @@ -165,10 +171,8 @@ class LinkMobile { } u32 newData = linkSPI->getAsyncData(); - if (state != SESSION_ACTIVE) { // TODO: AUTHENTICATING state - mgbalog("SESSION NOT ACTIVE"); + if (state == NEEDS_RESET) return; - } if (asyncCommand.isActive) { if (asyncCommand.state == AsyncCommand::State::PENDING) { @@ -182,9 +186,8 @@ class LinkMobile { receiveAsyncCommandSIO8(newData); } - if (asyncCommand.state == AsyncCommand::State::COMPLETED) { + if (asyncCommand.state == AsyncCommand::State::COMPLETED) processAsyncCommand(); - } } } } @@ -213,27 +216,22 @@ class LinkMobile { struct PacketHeader { u8 commandId; u8 _unused_ = 0; - u8 _unusedDataSizeH_ = 0; // The Mobile Adapter discards any packets bigger - // than 255 bytes, effectively forcing the high - // byte of the packet data length to be 0. - u8 dataSizeL; + u8 _unusedSizeHigh_ = 0; + u8 size; - u16 sum() { return commandId + _unused_ + _unusedDataSizeH_ + dataSizeL; } + u16 sum() { return commandId + _unused_ + _unusedSizeHigh_ + size; } } __attribute__((packed)); struct PacketChecksum { - // The Packet Checksum is simply the 16-bit sum of all previous header bytes - // and all previous packet data bytes. It does not include the magic bytes. - // The checksum is transmitted big-endian. - u8 checksumH; - u8 checksumL; + u8 high; + u8 low; } __attribute__((packed)); struct Command { MagicBytes magicBytes; - PacketHeader packetHeader; - PacketData packetData; - PacketChecksum packetChecksum; + PacketHeader header; + PacketData data; + PacketChecksum checksum; }; enum CommandResult { @@ -246,7 +244,8 @@ class LinkMobile { WEIRD_DATA_SIZE, WRONG_CHECKSUM, ERROR, - UNEXPECTED_RESPONSE + UNEXPECTED_RESPONSE, + TIMEOUT }; struct CommandResponse { @@ -282,11 +281,10 @@ class LinkMobile { State state = NEEDS_RESET; PacketData nextCommandData; u32 nextCommandDataSize = 0; - volatile bool isSendingSyncCommand = false; Error lastError = NONE; volatile bool isEnabled = false; - void processAsyncCommand() { // (irq only) + void processAsyncCommand() { asyncCommand.isActive = false; // TODO: IMPLEMENT mgbalog("PROCESSED! %d", asyncCommand.result); @@ -333,6 +331,11 @@ class LinkMobile { pingAdapter(); + LINK_MOBILE_BARRIER; + state = AUTHENTICATING; + isEnabled = true; + LINK_MOBILE_BARRIER; + if (!login()) return false; @@ -352,6 +355,7 @@ class LinkMobile { // Link::_REG_TM[config.sendTimerId].start = -config.interval; // Link::_REG_TM[config.sendTimerId].cnt = // Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; + // TODO: START TIMER AFTER transferAsync } void pingAdapter() { @@ -364,69 +368,44 @@ class LinkMobile { addData(LOGIN_PARTS[i], i == 0); auto command = buildCommand(COMMAND_BEGIN_SESSION, true); - return withSyncCommand([&command, this]() { - auto response = sendCommandWithResponse(command); - if (response.result != CommandResult::SUCCESS) { - // TODO: RESET - if (response.result == CommandResult::ERROR) { - mgbalog("error %d", response.command.packetData.bytes[1]); - } else { - mgbalog("result %d", response.result); - } + auto response = sendCommandWithResponse(command); + if (response.result != CommandResult::SUCCESS) + return false; + + if (response.command.header.size != LOGIN_PARTS_SIZE) + return false; + for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) { + if (response.command.data.bytes[i] != LOGIN_PARTS[i]) return false; - } else { - mgbalog("success size %d", response.command.packetHeader.dataSizeL); - } + } - return response.result == CommandResult::SUCCESS; - }); - } - - template - bool withSyncCommand(F action) { - LINK_MOBILE_BARRIER; - isSendingSyncCommand = true; - LINK_MOBILE_BARRIER; - - bool result = action(); - - LINK_MOBILE_BARRIER; - isSendingSyncCommand = false; - LINK_MOBILE_BARRIER; - - return result; + return true; } CommandResponse sendCommandWithResponse(Command command) { CommandResponse response; - isEnabled = true; // TODO: !!! - state = SESSION_ACTIVE; // TODO: !!! sendCommandAsync(command); - while (asyncCommand.isActive) - ; + waitUntilAsyncCommandFinishes(); if (asyncCommand.result != CommandResult::SUCCESS) { - mgbalog("NOT SUCCESS SEND %d", asyncCommand.result); response.result = asyncCommand.result; return response; } receiveCommandAsync(); - while (asyncCommand.isActive) - ; + waitUntilAsyncCommandFinishes(); if (asyncCommand.result != CommandResult::SUCCESS) { - mgbalog("NOT SUCCESS RESPONSE %d", asyncCommand.result); response.result = asyncCommand.result; return response; } + response.result = asyncCommand.result; response.command = asyncCommand.cmd; - auto remoteCommand = response.command.packetHeader.commandId; + auto remoteCommand = response.command.header.commandId; if (remoteCommand == COMMAND_ERROR_STATUS) { - if (response.command.packetHeader.dataSizeL != 2 || - response.command.packetData.bytes[0] != - command.packetHeader.commandId) { + if (response.command.header.size != 2 || + response.command.data.bytes[0] != command.header.commandId) { response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } else { @@ -435,7 +414,7 @@ class LinkMobile { } } - if (remoteCommand != (command.packetHeader.commandId | OR_VALUE)) { + if (remoteCommand != (command.header.commandId | OR_VALUE)) { response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } @@ -443,11 +422,22 @@ class LinkMobile { return response; } - bool sendCommandAsync(Command command) { // (irq only) - if (asyncCommand.isActive /* || isSendingSyncCommand*/) - return false; + void waitUntilAsyncCommandFinishes() { + u32 lines = 0; + u32 vCount = Link::_REG_VCOUNT; - mgbalog("Sending"); + while (asyncCommand.isActive) + if (cmdTimeout(lines, vCount)) { + asyncCommand.isActive = false; + asyncCommand.state = AsyncCommand::State::COMPLETED; + asyncCommand.result = CommandResult::TIMEOUT; + break; + } + } + + bool sendCommandAsync(Command command) { + if (asyncCommand.isActive) + return false; asyncCommand.state = AsyncCommand::State::PENDING; asyncCommand.result = CommandResult::PENDING; @@ -461,20 +451,16 @@ class LinkMobile { if (isSIO32Mode()) { transferAsync(*((u32*)&command)); // TODO: CHECK ENDIANNESS asyncCommand.transferred += 4; - } else { - transferAsync(command.magicBytes.magic1); - asyncCommand.transferred++; - } + } else + advance(command.magicBytes.magic1); return true; } - bool receiveCommandAsync() { // (irq only) - if (asyncCommand.isActive /* || isSendingSyncCommand*/) + bool receiveCommandAsync() { + if (asyncCommand.isActive) return false; - mgbalog("Receiving"); - asyncCommand.state = AsyncCommand::State::PENDING; asyncCommand.result = CommandResult::PENDING; asyncCommand.transferred = 0; @@ -489,9 +475,9 @@ class LinkMobile { return true; } - void sendAsyncCommandSIO8(u32 newData) { // (irq only) + void sendAsyncCommandSIO8(u32 newData) { const u8* commandBytes = (const u8*)&asyncCommand.cmd; - u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; bool isAcknowledgement = asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; @@ -500,35 +486,31 @@ class LinkMobile { if (asyncCommand.transferred < mainSize) { // Magic Bytes + Packet Header + Packet Data - transferAsync(commandBytes[asyncCommand.transferred]); - asyncCommand.transferred++; + advance(commandBytes[asyncCommand.transferred]); } else if (asyncCommand.transferred < mainSize + CHECKSUM_SIZE) { // Packet Checksum commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - transferAsync(commandBytes[asyncCommand.transferred - mainSize]); - asyncCommand.transferred++; + advance(commandBytes[asyncCommand.transferred - mainSize]); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { // Acknowledgement Signal (1) - transferAsync(DEVICE_GBA | OR_VALUE); - asyncCommand.transferred++; + advance(DEVICE_GBA | OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - transferAsync(0); - asyncCommand.transferred++; + advance(0); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { // Acknowledgement Signal (3) - if (newData != (asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE)) + if (newData != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; } } - void receiveAsyncCommandSIO8(u32 newData) { // (irq only) + void receiveAsyncCommandSIO8(u32 newData) { u8* commandBytes = (u8*)&asyncCommand.cmd; - u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.packetHeader.dataSizeL; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; if (asyncCommand.transferred == 0) { // Magic Bytes (1) @@ -536,47 +518,40 @@ class LinkMobile { return transferAsync(GBA_WAITING); if (newData != COMMAND_MAGIC_VALUE1) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); - transferAsync(GBA_WAITING); - asyncCommand.transferred++; + advance(GBA_WAITING); } else if (asyncCommand.transferred == 1) { // Magic Bytes (1) if (newData != COMMAND_MAGIC_VALUE2) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); - transferAsync(GBA_WAITING); - asyncCommand.transferred++; + advance(GBA_WAITING); } else if (asyncCommand.transferred < PREAMBLE_SIZE) { // Packet Header commandBytes[asyncCommand.transferred] = newData; - if (asyncCommand.cmd.packetHeader._unusedDataSizeH_ != 0) + if (asyncCommand.cmd.header._unusedSizeHigh_ != 0) return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); - transferAsync(GBA_WAITING); - asyncCommand.transferred++; + advance(GBA_WAITING); if (asyncCommand.transferred == PREAMBLE_SIZE) - asyncCommand.expectedChecksum = asyncCommand.cmd.packetHeader.sum(); + asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); } else if (asyncCommand.transferred < mainSize) { // Packet Data commandBytes[asyncCommand.transferred] = newData; asyncCommand.expectedChecksum += newData; - transferAsync(GBA_WAITING); - asyncCommand.transferred++; + advance(GBA_WAITING); } else if (asyncCommand.transferred == mainSize) { // Packet Checksum (1) if (newData != msB16(asyncCommand.expectedChecksum)) return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); - transferAsync(GBA_WAITING); - asyncCommand.transferred++; + advance(GBA_WAITING); } else if (asyncCommand.transferred == mainSize + 1) { // Packet Checksum (2) if (newData != lsB16(asyncCommand.expectedChecksum)) return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); - transferAsync(DEVICE_GBA | OR_VALUE); - asyncCommand.transferred++; + advance(DEVICE_GBA | OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { // Acknowledgement Signal (1) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - transferAsync(asyncCommand.cmd.packetHeader.commandId ^ OR_VALUE); - asyncCommand.transferred++; + advance(asyncCommand.cmd.header.commandId ^ OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) if (newData != 0) @@ -586,20 +561,6 @@ class LinkMobile { } } - // TODO: USE? - // u8 waitForMeaningfulByte() { - // u32 lines = 0; - // u32 vCount = Link::_REG_VCOUNT; - - // u8 value = GBA_WAITING; - // while ((value = transfer(GBA_WAITING)) == ADAPTER_WAITING) { - // if (cmdTimeout(lines, vCount)) - // break; - // } - - // return value; - // } - CommandResult acknowledge(u8 localCommandAck, u8 remoteCommandAck) { if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) return CommandResult::INVALID_DEVICE_ID; @@ -620,21 +581,26 @@ class LinkMobile { Command buildCommand(u8 type, bool withData = false) { Command command; - command.packetHeader.commandId = type; - command.packetHeader._unused_ = 0; - command.packetHeader._unusedDataSizeH_ = 0; - command.packetHeader.dataSizeL = withData ? (u8)nextCommandDataSize : 0; + command.header.commandId = type; + command.header._unused_ = 0; + command.header._unusedSizeHigh_ = 0; + command.header.size = withData ? (u8)nextCommandDataSize : 0; if (withData) - command.packetData = nextCommandData; - u16 checksum = command.packetHeader.sum(); - for (u32 i = 0; i < command.packetHeader.dataSizeL; i++) - checksum += command.packetData.bytes[i]; - command.packetChecksum.checksumH = msB16(checksum); - command.packetChecksum.checksumL = lsB16(checksum); + command.data = nextCommandData; + u16 checksum = command.header.sum(); + for (u32 i = 0; i < command.header.size; i++) + checksum += command.data.bytes[i]; + command.checksum.high = msB16(checksum); + command.checksum.low = lsB16(checksum); return command; } + void advance(u32 data) { + transferAsync(data); + asyncCommand.transferred++; + } + void transferAsync(u32 data) { // TODO: SEND WITH TIMER INTERRUPT; ADD SMALL WAIT (4 ticks for sio8, 8 // ticks for sio32) From 58f3489c9b7ceec5b1ff2918a568755ace26ff48 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 12 Aug 2024 20:44:10 -0300 Subject: [PATCH 070/195] Adding small delay before each transfer --- lib/LinkMobile.hpp | 66 ++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 9e8d5f5..a6916bd 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -43,6 +43,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 +#define LINK_MOBILE_DEFAULT_TIMER_ID 3 class LinkMobile { private: @@ -50,6 +51,7 @@ class LinkMobile { using u16 = unsigned short; using u8 = unsigned char; + static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int FRAME_LINES = 228; static constexpr int PING_WAIT = FRAME_LINES * 7; static constexpr int CMD_TIMEOUT = FRAME_LINES * 5; @@ -85,6 +87,7 @@ class LinkMobile { static constexpr int LOGIN_PARTS_SIZE = 8; static constexpr u8 LOGIN_PARTS[] = {0x4e, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x44, 0x4f}; + static constexpr u8 WAIT_TICKS[] = {4, 8}; static constexpr int SUPPORTED_DEVICES_SIZE = 4; static constexpr u8 SUPPORTED_DEVICES[] = { @@ -108,8 +111,8 @@ class LinkMobile { // ... }; - explicit LinkMobile() { - // TODO: Fill config + explicit LinkMobile(u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { + this->config.timerId = timerId; } [[nodiscard]] bool isActive() { return isEnabled; } @@ -193,12 +196,16 @@ class LinkMobile { } void _onTimer() { - if (!isEnabled) + if (!isEnabled || !asyncCommand.isActive || !asyncCommand.isWaiting) return; + + linkSPI->transferAsync(asyncCommand.pendingData); + stopTimer(); + asyncCommand.isWaiting = false; } struct Config { - // TODO: Define + u32 timerId; }; Config config; @@ -263,9 +270,22 @@ class LinkMobile { Command cmd; volatile Direction direction; volatile u16 expectedChecksum; + volatile u32 pendingData; volatile bool isWaiting; volatile bool isActive = false; + void reset() { + state = AsyncCommand::State::PENDING; + result = CommandResult::PENDING; + transferred = 0; + cmd = Command{}; + direction = AsyncCommand::Direction::SENDING; + expectedChecksum = 0; + pendingData = 0; + isWaiting = false; + isActive = true; + } + void fail(CommandResult result) { result = CommandResult::NOT_WAITING; state = AsyncCommand::State::COMPLETED; @@ -324,8 +344,6 @@ class LinkMobile { } bool start() { - startTimer(); - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_8BIT); @@ -347,15 +365,14 @@ class LinkMobile { } void stopTimer() { - // Link::_REG_TM[config.sendTimerId].cnt = - // Link::_REG_TM[config.sendTimerId].cnt & (~Link::_TM_ENABLE); + Link::_REG_TM[config.timerId].cnt = + Link::_REG_TM[config.timerId].cnt & (~Link::_TM_ENABLE); } - void startTimer() { - // Link::_REG_TM[config.sendTimerId].start = -config.interval; - // Link::_REG_TM[config.sendTimerId].cnt = - // Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; - // TODO: START TIMER AFTER transferAsync + void startTimer(u16 interval) { + Link::_REG_TM[config.timerId].start = -interval; + Link::_REG_TM[config.timerId].cnt = + Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } void pingAdapter() { @@ -439,14 +456,8 @@ class LinkMobile { if (asyncCommand.isActive) return false; - asyncCommand.state = AsyncCommand::State::PENDING; - asyncCommand.result = CommandResult::PENDING; - asyncCommand.transferred = 0; + asyncCommand.reset(); asyncCommand.cmd = command; - asyncCommand.direction = AsyncCommand::Direction::SENDING; - asyncCommand.expectedChecksum = 0; - asyncCommand.isWaiting = false; - asyncCommand.isActive = true; if (isSIO32Mode()) { transferAsync(*((u32*)&command)); // TODO: CHECK ENDIANNESS @@ -461,14 +472,8 @@ class LinkMobile { if (asyncCommand.isActive) return false; - asyncCommand.state = AsyncCommand::State::PENDING; - asyncCommand.result = CommandResult::PENDING; - asyncCommand.transferred = 0; - asyncCommand.cmd = Command{}; + asyncCommand.reset(); asyncCommand.direction = AsyncCommand::Direction::RECEIVING; - asyncCommand.expectedChecksum = 0; - asyncCommand.isWaiting = false; - asyncCommand.isActive = true; transferAsync(GBA_WAITING); @@ -602,10 +607,9 @@ class LinkMobile { } void transferAsync(u32 data) { - // TODO: SEND WITH TIMER INTERRUPT; ADD SMALL WAIT (4 ticks for sio8, 8 - // ticks for sio32) - linkSPI->transferAsync(data); - // TODO: asyncCommand.isWaiting = true; + asyncCommand.isWaiting = true; + asyncCommand.pendingData = data; + startTimer(WAIT_TICKS[isSIO32Mode()]); } u32 transfer(u32 data) { From 0b50475181529850ea85a40457a8362ec01cc106 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 12 Aug 2024 21:33:08 -0300 Subject: [PATCH 071/195] Adding logout command --- examples/LinkMobile_demo/src/main.cpp | 4 +--- lib/LinkMobile.hpp | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index bfe0218..86c4456 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -78,9 +78,7 @@ again: u16 keys = ~REG_KEYS & KEY_ANY; // Menu - log(std::string("") + - "L = Serve\nR = Connect\n\n (DOWN = ok)\n " - "(SELECT = cancel)\n (START = activate)"); + log(std::string("") + "L = Read Configuration\n\n(START = activate)"); // SELECT = back if (keys & KEY_SELECT) { diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index a6916bd..7db6b75 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -131,7 +131,7 @@ class LinkMobile { LINK_MOBILE_BARRIER; if (!success) { - deactivate(); + deactivate(false); return false; } @@ -139,13 +139,20 @@ class LinkMobile { return true; } - bool deactivate() { + bool deactivate(bool logoutFirst = true) { + bool success = true; + + if (logoutFirst) { + activate(); + success = logout(); + } + lastError = NONE; isEnabled = false; resetState(); stop(); - return true; + return success; } [[nodiscard]] State getState() { return state; } @@ -354,6 +361,8 @@ class LinkMobile { isEnabled = true; LINK_MOBILE_BARRIER; + logout(); + if (!login()) return false; @@ -399,6 +408,12 @@ class LinkMobile { return true; } + bool logout() { + auto command = buildCommand(COMMAND_END_SESSION, true); + auto response = sendCommandWithResponse(command); + return response.result == CommandResult::SUCCESS; + } + CommandResponse sendCommandWithResponse(Command command) { CommandResponse response; From 38d8e7df0535ccd1abce750262191373e949b6fe Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 12 Aug 2024 23:05:45 -0300 Subject: [PATCH 072/195] Adding read configuration command --- examples/LinkMobile_demo/src/main.cpp | 62 ++++++++++++++++++++------- lib/LinkMobile.hpp | 52 ++++++++++++++++++++++ 2 files changed, 98 insertions(+), 16 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 86c4456..d25ada9 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -18,6 +18,7 @@ } void activate(); +void readConfiguration(); void log(std::string text); void waitFor(u16 key); void wait(u32 verticalLines); @@ -73,12 +74,15 @@ again: } bool activating = false; + bool reading = false; while (true) { u16 keys = ~REG_KEYS & KEY_ANY; // Menu - log(std::string("") + "L = Read Configuration\n\n(START = activate)"); + log(std::string("") + + "L = Read Configuration\n\n " + "(SELECT = cancel)\n (START = reactivate)"); // SELECT = back if (keys & KEY_SELECT) { @@ -96,21 +100,13 @@ again: if (activating && !(keys & KEY_START)) activating = false; - // L = Serve - // if ((keys & KEY_L) && !serving) { - // serving = true; - // serve(); - // } - // if (serving && !(keys & KEY_L)) - // serving = false; - - // R = Connect - // if (!connecting && (keys & KEY_R)) { - // connecting = true; - // connect(); - // } - // if (connecting && !(keys & KEY_R)) - // connecting = false; + // L = Read Configuration + if ((keys & KEY_L) && !reading) { + reading = true; + readConfiguration(); + } + if (reading && !(keys & KEY_L)) + reading = false; VBlankIntrWait(); } @@ -129,6 +125,40 @@ void activate() { hang(); } +std::string toStr(char* chars, int size) { + char copiedChars[255]; + for (int i = 0; i < size; i++) + copiedChars[i] = chars[i]; + copiedChars[size] = '\0'; + return std::string(copiedChars); +} + +void readConfiguration() { + log("Reading..."); + + LinkMobile::ConfigurationData data; + if (!linkMobile->readConfiguration(data)) { + log("Read failed :("); + hang(); + return; + } + + log("Magic:\n " + toStr(data.magic, 2) + "\nIsRegistering:\n " + + (data.isRegistering ? "Yes" : "No") + "\nPrimary DNS:\n " + + std::to_string(data.primaryDNS[0]) + "." + + std::to_string(data.primaryDNS[1]) + "." + + std::to_string(data.primaryDNS[2]) + "." + + std::to_string(data.primaryDNS[3]) + "\nSecondary DNS:\n " + + std::to_string(data.secondaryDNS[0]) + "." + + std::to_string(data.secondaryDNS[1]) + "." + + std::to_string(data.secondaryDNS[2]) + "." + + std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + + toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + + "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + "\nPOP Server:\n " + + toStr(data.popServer, 19)); + hang(); +} + void log(std::string text) { tte_erase_screen(); tte_write("#{P:0,0}"); diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 7db6b75..b6cd094 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -65,6 +65,7 @@ class LinkMobile { static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; static constexpr int DEVICE_ADAPTER_GREEN = 0xA; static constexpr int DEVICE_ADAPTER_RED = 0xB; + static constexpr int CONFIGURATION_DATA_SIZE = 192; static constexpr int COMMAND_BEGIN_SESSION = 0x10; static constexpr int COMMAND_END_SESSION = 0x11; static constexpr int COMMAND_DIAL_TELEPHONE = 0x12; @@ -111,6 +112,26 @@ class LinkMobile { // ... }; + struct ConfigurationData { + char magic[2]; + bool isRegistering; + u8 _unused1_; + u8 primaryDNS[4]; + u8 secondaryDNS[4]; + char loginID[10]; + u8 _unused2_[22]; + char email[24]; + u8 _unused3_[6]; + char smtpServer[20]; + char popServer[19]; + u8 _unused4_[5]; + u8 configurationSlot1[24]; + u8 configurationSlot2[24]; + u8 configurationSlot3[24]; + u8 checksumHigh; + u8 checksumLow; + } __attribute__((packed)); + explicit LinkMobile(u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { this->config.timerId = timerId; } @@ -155,6 +176,37 @@ class LinkMobile { return success; } + bool readConfiguration(ConfigurationData& configurationData) { + static constexpr u8 CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; + u8* configurationDataBytes = (u8*)&configurationData; + + addData(0, true); + addData(CONFIGURATION_DATA_CHUNK); + auto response1 = sendCommandWithResponse( + buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + if (response1.result != CommandResult::SUCCESS || + response1.command.header.size != CONFIGURATION_DATA_CHUNK + 1) + return false; + + addData(CONFIGURATION_DATA_CHUNK, true); + addData(CONFIGURATION_DATA_CHUNK); + auto response2 = sendCommandWithResponse( + buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + if (response2.result != CommandResult::SUCCESS || + response2.command.header.size != CONFIGURATION_DATA_CHUNK + 1) + return false; + + u8* response1Bytes = (u8*)&response1.command.data.bytes; + u8* response2Bytes = (u8*)&response2.command.data.bytes; + for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) + configurationDataBytes[i] = response1Bytes[1 + i]; + for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) + configurationDataBytes[CONFIGURATION_DATA_CHUNK + i] = + response2Bytes[1 + i]; + + return true; + } + [[nodiscard]] State getState() { return state; } Error getLastError(bool clear = true) { Error error = lastError; From 9a0fc323e7fca33e0cb7f0b3739a37d17920339a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 00:19:16 -0300 Subject: [PATCH 073/195] Starting refactor to serialize commands --- examples/LinkMobile_demo/Makefile | 14 ++-- lib/LinkMobile.hpp | 114 +++++++++++++++--------------- 2 files changed, 63 insertions(+), 65 deletions(-) diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index 7cff424..fd6a029 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -14,7 +14,7 @@ export TONCLIB := ${DEVKITPRO}/libtonc # === TONC RULES ====================================================== # -# Yes, this is almost, but not quite, completely like to +# Yes, this is almost, but not quite, completely like to # DKP's base_rules and gba_rules # @@ -53,7 +53,7 @@ export OBJCOPY := $(PREFIX)objcopy %.elf : @echo Linking cartridge - $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ $(NM) -Sn $@ > $(basename $(notdir $@)).map #---------------------------------------------------------------------- @@ -69,7 +69,7 @@ export OBJCOPY := $(PREFIX)objcopy %.iwram.o : %.iwram.cpp @echo $(notdir $<) $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ - + #---------------------------------------------------------------------- %.iwram.o : %.iwram.c @echo $(notdir $<) @@ -148,8 +148,8 @@ bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) # === BUILD FLAGS ===================================================== # This is probably where you can stop editing -# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck -# up things (gcse seems fond of building masks inside a loop instead of +# NOTE: I've noticed that -fgcse and -ftree-loop-optimize sometimes muck +# up things (gcse seems fond of building masks inside a loop instead of # outside them for example). Removing them sometimes helps # --- Architecture --- @@ -203,7 +203,7 @@ endif ifneq ($(BUILD),$(notdir $(CURDIR))) -# Still in main dir: +# Still in main dir: # * Define/export some extra variables # * Invoke this file again from the build dir # PONDER: what happens if BUILD == "" ? @@ -238,7 +238,7 @@ export OFILES := $(addsuffix .o, $(BINFILES)) \ export INCLUDE := $(foreach dir,$(INCDIRS),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) - + export LIBPATHS := -L$(CURDIR) $(foreach dir,$(LIBDIRS),-L$(dir)/lib) # --- Create BUILD if necessary, and run this makefile from there --- diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index b6cd094..b84336a 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -58,8 +58,10 @@ class LinkMobile { static constexpr int ADAPTER_WAITING = 0xD2; static constexpr int GBA_WAITING = 0x4B; static constexpr int OR_VALUE = 0x80; - static constexpr int COMMAND_MAGIC_VALUE1 = 0x99; - static constexpr int COMMAND_MAGIC_VALUE2 = 0x66; + static constexpr int COMMAND_MAGIC_VALUE_HIGH = 0x99; + static constexpr int COMMAND_MAGIC_VALUE_LOW = 0x66; + static constexpr u32 PREAMBLE_SIZE = 2 + 4; + static constexpr u32 CHECKSUM_SIZE = 2; static constexpr int DEVICE_GBA = 0x1; static constexpr int DEVICE_ADAPTER_BLUE = 0x8; static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; @@ -185,7 +187,7 @@ class LinkMobile { auto response1 = sendCommandWithResponse( buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); if (response1.result != CommandResult::SUCCESS || - response1.command.header.size != CONFIGURATION_DATA_CHUNK + 1) + response1.command.size != CONFIGURATION_DATA_CHUNK + 1) return false; addData(CONFIGURATION_DATA_CHUNK, true); @@ -193,11 +195,11 @@ class LinkMobile { auto response2 = sendCommandWithResponse( buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); if (response2.result != CommandResult::SUCCESS || - response2.command.header.size != CONFIGURATION_DATA_CHUNK + 1) + response2.command.size != CONFIGURATION_DATA_CHUNK + 1) return false; - u8* response1Bytes = (u8*)&response1.command.data.bytes; - u8* response2Bytes = (u8*)&response2.command.data.bytes; + u8* response1Bytes = (u8*)&response1.command.bytes; + u8* response2Bytes = (u8*)&response2.command.bytes; for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) configurationDataBytes[i] = response1Bytes[1 + i]; for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) @@ -220,6 +222,8 @@ class LinkMobile { void _onVBlank() { if (!isEnabled) return; + + // TODO: Keep adapter alive } void _onSerial() { @@ -270,34 +274,30 @@ class LinkMobile { Config config; private: - struct MagicBytes { - u8 magic1 = COMMAND_MAGIC_VALUE1; - u8 magic2 = COMMAND_MAGIC_VALUE2; - } __attribute__((packed)); + struct Command { + // Magic Bytes + u8 magicHigh; + u8 magicLow; - struct PacketData { - u8 bytes[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; - } __attribute__((packed)); - - struct PacketHeader { + // Packet Header u8 commandId; u8 _unused_ = 0; u8 _unusedSizeHigh_ = 0; u8 size; - u16 sum() { return commandId + _unused_ + _unusedSizeHigh_ + size; } - } __attribute__((packed)); + // Packet Data + u8 bytes[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 1]; - struct PacketChecksum { - u8 high; - u8 low; - } __attribute__((packed)); + // Packet Checksum + u8 checksumHigh; + u8 checksumLow; - struct Command { - MagicBytes magicBytes; - PacketHeader header; - PacketData data; - PacketChecksum checksum; + u16 checksum() { + u16 sum = commandId + _unused_ + _unusedSizeHigh_ + size; + for (u32 i = 0; i < size; i++) + sum += bytes[i]; + return sum; + } }; enum CommandResult { @@ -351,14 +351,10 @@ class LinkMobile { } }; - static constexpr u32 PREAMBLE_SIZE = - sizeof(MagicBytes) + sizeof(PacketHeader); - static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); - AsyncCommand asyncCommand; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; - PacketData nextCommandData; + u8 nextCommandData[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 1]; u32 nextCommandDataSize = 0; Error lastError = NONE; volatile bool isEnabled = false; @@ -372,7 +368,7 @@ class LinkMobile { void addData(u8 value, bool start = false) { if (start) nextCommandDataSize = 0; - nextCommandData.bytes[nextCommandDataSize] = value; + nextCommandData[nextCommandDataSize] = value; nextCommandDataSize++; } @@ -450,10 +446,10 @@ class LinkMobile { if (response.result != CommandResult::SUCCESS) return false; - if (response.command.header.size != LOGIN_PARTS_SIZE) + if (response.command.size != LOGIN_PARTS_SIZE) return false; for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) { - if (response.command.data.bytes[i] != LOGIN_PARTS[i]) + if (response.command.bytes[i] != LOGIN_PARTS[i]) return false; } @@ -486,10 +482,10 @@ class LinkMobile { response.result = asyncCommand.result; response.command = asyncCommand.cmd; - auto remoteCommand = response.command.header.commandId; + auto remoteCommand = response.command.commandId; if (remoteCommand == COMMAND_ERROR_STATUS) { - if (response.command.header.size != 2 || - response.command.data.bytes[0] != command.header.commandId) { + if (response.command.size != 2 || + response.command.bytes[0] != command.commandId) { response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } else { @@ -498,7 +494,7 @@ class LinkMobile { } } - if (remoteCommand != (command.header.commandId | OR_VALUE)) { + if (remoteCommand != (command.commandId | OR_VALUE)) { response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } @@ -530,7 +526,7 @@ class LinkMobile { transferAsync(*((u32*)&command)); // TODO: CHECK ENDIANNESS asyncCommand.transferred += 4; } else - advance(command.magicBytes.magic1); + advance(command.magicHigh); return true; } @@ -549,7 +545,7 @@ class LinkMobile { void sendAsyncCommandSIO8(u32 newData) { const u8* commandBytes = (const u8*)&asyncCommand.cmd; - u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.size; bool isAcknowledgement = asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; @@ -573,7 +569,7 @@ class LinkMobile { advance(0); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { // Acknowledgement Signal (3) - if (newData != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) + if (newData != (asyncCommand.cmd.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; @@ -582,28 +578,28 @@ class LinkMobile { void receiveAsyncCommandSIO8(u32 newData) { u8* commandBytes = (u8*)&asyncCommand.cmd; - u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.size; if (asyncCommand.transferred == 0) { // Magic Bytes (1) if (newData == ADAPTER_WAITING) return transferAsync(GBA_WAITING); - if (newData != COMMAND_MAGIC_VALUE1) + if (newData != COMMAND_MAGIC_VALUE_HIGH) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); advance(GBA_WAITING); } else if (asyncCommand.transferred == 1) { // Magic Bytes (1) - if (newData != COMMAND_MAGIC_VALUE2) + if (newData != COMMAND_MAGIC_VALUE_LOW) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); advance(GBA_WAITING); } else if (asyncCommand.transferred < PREAMBLE_SIZE) { // Packet Header commandBytes[asyncCommand.transferred] = newData; - if (asyncCommand.cmd.header._unusedSizeHigh_ != 0) + if (asyncCommand.cmd._unusedSizeHigh_ != 0) return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); advance(GBA_WAITING); if (asyncCommand.transferred == PREAMBLE_SIZE) - asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); + asyncCommand.expectedChecksum = asyncCommand.cmd.checksum(); } else if (asyncCommand.transferred < mainSize) { // Packet Data commandBytes[asyncCommand.transferred] = newData; @@ -623,7 +619,7 @@ class LinkMobile { // Acknowledgement Signal (1) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - advance(asyncCommand.cmd.header.commandId ^ OR_VALUE); + advance(asyncCommand.cmd.commandId ^ OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) if (newData != 0) @@ -653,17 +649,19 @@ class LinkMobile { Command buildCommand(u8 type, bool withData = false) { Command command; - command.header.commandId = type; - command.header._unused_ = 0; - command.header._unusedSizeHigh_ = 0; - command.header.size = withData ? (u8)nextCommandDataSize : 0; - if (withData) - command.data = nextCommandData; - u16 checksum = command.header.sum(); - for (u32 i = 0; i < command.header.size; i++) - checksum += command.data.bytes[i]; - command.checksum.high = msB16(checksum); - command.checksum.low = lsB16(checksum); + command.commandId = type; + command._unused_ = 0; + command._unusedSizeHigh_ = 0; + command.size = withData ? (u8)nextCommandDataSize : 0; + if (withData) { + u32* nextCommandDataWords = (u32*)&nextCommandData; + u32* commandWords = (u32*)&command.bytes; + for (int i = 0; i < 1 + command.size / 4; i += 4) + commandWords[i] = nextCommandDataWords[i]; + } + u16 checksum = command.checksum(); + command.checksumHigh = msB16(checksum); + command.checksumLow = lsB16(checksum); return command; } From 9b3343e57e8affddc4966bd0bb1c942ae4aa8e99 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 01:37:55 -0300 Subject: [PATCH 074/195] (WIP) Serializing packets --- lib/LinkMobile.hpp | 117 +++++++++++++++++++++++++++------------------ 1 file changed, 71 insertions(+), 46 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index b84336a..e8ebd16 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -43,6 +43,8 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 +#define LINK_MOBILE_MAX_COMMAND_BYTES (4 + 4 + 252 + 4 + 4) +// SIO32: (4 + 4 + 252 + 4 + 4), SIO8: (2 + 4 + 255 + 2 + 2) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 class LinkMobile { @@ -185,7 +187,7 @@ class LinkMobile { addData(0, true); addData(CONFIGURATION_DATA_CHUNK); auto response1 = sendCommandWithResponse( - buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + serializeCommand(COMMAND_READ_CONFIGURATION_DATA, true)); if (response1.result != CommandResult::SUCCESS || response1.command.size != CONFIGURATION_DATA_CHUNK + 1) return false; @@ -193,7 +195,7 @@ class LinkMobile { addData(CONFIGURATION_DATA_CHUNK, true); addData(CONFIGURATION_DATA_CHUNK); auto response2 = sendCommandWithResponse( - buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + serializeCommand(COMMAND_READ_CONFIGURATION_DATA, true)); if (response2.result != CommandResult::SUCCESS || response2.command.size != CONFIGURATION_DATA_CHUNK + 1) return false; @@ -300,6 +302,12 @@ class LinkMobile { } }; + struct SerializedCommand { + u8 bytes[LINK_MOBILE_MAX_COMMAND_BYTES]; + u32 size = 0; + u32 mainSize = 0; + } + enum CommandResult { PENDING, SUCCESS, @@ -326,7 +334,7 @@ class LinkMobile { volatile State state; volatile CommandResult result; volatile u32 transferred; // (in SIO32: words; in SIO8: bytes) - Command cmd; + SerializedCommand cmd; volatile Direction direction; volatile u16 expectedChecksum; volatile u32 pendingData; @@ -337,7 +345,7 @@ class LinkMobile { state = AsyncCommand::State::PENDING; result = CommandResult::PENDING; transferred = 0; - cmd = Command{}; + cmd = SerializedCommand{}; direction = AsyncCommand::Direction::SENDING; expectedChecksum = 0; pendingData = 0; @@ -440,7 +448,7 @@ class LinkMobile { bool login() { for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) addData(LOGIN_PARTS[i], i == 0); - auto command = buildCommand(COMMAND_BEGIN_SESSION, true); + auto command = serializeCommand(COMMAND_BEGIN_SESSION, true); auto response = sendCommandWithResponse(command); if (response.result != CommandResult::SUCCESS) @@ -457,15 +465,15 @@ class LinkMobile { } bool logout() { - auto command = buildCommand(COMMAND_END_SESSION, true); + auto command = serializeCommand(COMMAND_END_SESSION, true); auto response = sendCommandWithResponse(command); return response.result == CommandResult::SUCCESS; } - CommandResponse sendCommandWithResponse(Command command) { + CommandResponse sendCommandWithResponse(SerializedCommand serializedCommand) { CommandResponse response; - sendCommandAsync(command); + sendCommandAsync(serializedCommand); waitUntilAsyncCommandFinishes(); if (asyncCommand.result != CommandResult::SUCCESS) { response.result = asyncCommand.result; @@ -515,7 +523,7 @@ class LinkMobile { } } - bool sendCommandAsync(Command command) { + bool sendCommandAsync(SerializedCommand serializedCommand) { if (asyncCommand.isActive) return false; @@ -544,33 +552,24 @@ class LinkMobile { } void sendAsyncCommandSIO8(u32 newData) { - const u8* commandBytes = (const u8*)&asyncCommand.cmd; - u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.size; + const u8* commandBytes = (const u8*)&asyncCommand.cmd.bytes; + u32 mainSize = asyncCommand.cmd.mainSize; - bool isAcknowledgement = - asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; - if (!isAcknowledgement && newData != ADAPTER_WAITING) - return asyncCommand.fail(CommandResult::NOT_WAITING); - - if (asyncCommand.transferred < mainSize) { - // Magic Bytes + Packet Header + Packet Data - advance(commandBytes[asyncCommand.transferred]); - } else if (asyncCommand.transferred < mainSize + CHECKSUM_SIZE) { - // Packet Checksum - commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - advance(commandBytes[asyncCommand.transferred - mainSize]); - } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { - // Acknowledgement Signal (1) - advance(DEVICE_GBA | OR_VALUE); - } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { - // Acknowledgement Signal (2) + if (async.transferred < mainSize + CHECKSUM_SIZE + 1) { + if (newData != ADAPTER_WAITING) + return asyncCommand.fail(CommandResult::NOT_WAITING); + } else if (async.transferred == mainSize + CHECKSUM_SIZE + 1) { if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - advance(0); - } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { - // Acknowledgement Signal (3) + } else if (async.transferred == asyncCommand.transferred == + mainSize + CHECKSUM_SIZE + 2) { if (newData != (asyncCommand.cmd.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); + } + + if (asyncCommand.transferred < asyncCommand.cmd.totalSize) { + advance(asyncCommand.cmd.bytes[asyncCommand.transferred]); + } else { asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; } @@ -578,7 +577,7 @@ class LinkMobile { void receiveAsyncCommandSIO8(u32 newData) { u8* commandBytes = (u8*)&asyncCommand.cmd; - u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.size; + u32 mainSize = asyncCommand.mainSize; if (asyncCommand.transferred == 0) { // Magic Bytes (1) @@ -647,21 +646,47 @@ class LinkMobile { return false; } - Command buildCommand(u8 type, bool withData = false) { - Command command; - command.commandId = type; - command._unused_ = 0; - command._unusedSizeHigh_ = 0; - command.size = withData ? (u8)nextCommandDataSize : 0; - if (withData) { - u32* nextCommandDataWords = (u32*)&nextCommandData; - u32* commandWords = (u32*)&command.bytes; - for (int i = 0; i < 1 + command.size / 4; i += 4) - commandWords[i] = nextCommandDataWords[i]; + SerializedCommand serializeCommand(u8 type, bool withData = false) { + SerializedCommand serializedCommand; + u8 dataSize = withData ? (u8)nextCommandDataSize : 0; + + // Magic Bytes + serializedCommand.bytes[0] = COMMAND_MAGIC_VALUE_HIGH; + serializedCommand.bytes[1] = COMMAND_MAGIC_VALUE_LOW; + + // Packet Header + serializedCommand.bytes[2] = type; + serializedCommand.bytes[3] = 0; + serializedCommand.bytes[4] = 0; + serializedCommand.bytes[5] = dataSize; + + // Packet Data + u32 padding = 0; + u16 checksum = type + dataSize; + if (isSIO32Mode() && dataSize % 4 != 0) + padding = 4 - dataSize % 4; + for (u32 i = 0; i < dataSize + padding; i++) { + serializedCommand.bytes[PREAMBLE_SIZE + i] = nextCommandData[i]; + checksum += nextCommandData[i]; } - u16 checksum = command.checksum(); - command.checksumHigh = msB16(checksum); - command.checksumLow = lsB16(checksum); + u32 mainSize = PREAMBLE_SIZE + dataSize + padding; + serializedCommand.mainSize = mainSize; + + // Packet Checksum + serializedCommand.bytes[mainSize] = msB16(checksum); + serializedCommand.bytes[mainSize + 1] = lsB16(checksum); + + // Acknowledgement Signal + serializedCommand.bytes[mainSize + 2] = DEVICE_GBA | OR_VALUE; + serializedCommand.bytes[mainSize + 3] = 0; + serializedCommand.totalSize = mainSize + 4; + if (isSIO32Mode()) { + for (u32 i = 0; i < 2; i++) + serializedCommand.bytes[mainSize + 4 + i] = 0; + serializedCommand.totalSize += 2; + } + + // TODO: CHECK SIZE IN SIO32. IT HAS TO BE MULTIPLE OF 4 return command; } From 465a7e250134c78bda2dcc8246f703aae241716a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 01:38:55 -0300 Subject: [PATCH 075/195] Reverting serialization --- lib/LinkMobile.hpp | 203 ++++++++++++++++++++------------------------- 1 file changed, 90 insertions(+), 113 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index e8ebd16..b6cd094 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -43,8 +43,6 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 -#define LINK_MOBILE_MAX_COMMAND_BYTES (4 + 4 + 252 + 4 + 4) -// SIO32: (4 + 4 + 252 + 4 + 4), SIO8: (2 + 4 + 255 + 2 + 2) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 class LinkMobile { @@ -60,10 +58,8 @@ class LinkMobile { static constexpr int ADAPTER_WAITING = 0xD2; static constexpr int GBA_WAITING = 0x4B; static constexpr int OR_VALUE = 0x80; - static constexpr int COMMAND_MAGIC_VALUE_HIGH = 0x99; - static constexpr int COMMAND_MAGIC_VALUE_LOW = 0x66; - static constexpr u32 PREAMBLE_SIZE = 2 + 4; - static constexpr u32 CHECKSUM_SIZE = 2; + static constexpr int COMMAND_MAGIC_VALUE1 = 0x99; + static constexpr int COMMAND_MAGIC_VALUE2 = 0x66; static constexpr int DEVICE_GBA = 0x1; static constexpr int DEVICE_ADAPTER_BLUE = 0x8; static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; @@ -187,21 +183,21 @@ class LinkMobile { addData(0, true); addData(CONFIGURATION_DATA_CHUNK); auto response1 = sendCommandWithResponse( - serializeCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); if (response1.result != CommandResult::SUCCESS || - response1.command.size != CONFIGURATION_DATA_CHUNK + 1) + response1.command.header.size != CONFIGURATION_DATA_CHUNK + 1) return false; addData(CONFIGURATION_DATA_CHUNK, true); addData(CONFIGURATION_DATA_CHUNK); auto response2 = sendCommandWithResponse( - serializeCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); if (response2.result != CommandResult::SUCCESS || - response2.command.size != CONFIGURATION_DATA_CHUNK + 1) + response2.command.header.size != CONFIGURATION_DATA_CHUNK + 1) return false; - u8* response1Bytes = (u8*)&response1.command.bytes; - u8* response2Bytes = (u8*)&response2.command.bytes; + u8* response1Bytes = (u8*)&response1.command.data.bytes; + u8* response2Bytes = (u8*)&response2.command.data.bytes; for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) configurationDataBytes[i] = response1Bytes[1 + i]; for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) @@ -224,8 +220,6 @@ class LinkMobile { void _onVBlank() { if (!isEnabled) return; - - // TODO: Keep adapter alive } void _onSerial() { @@ -276,38 +270,36 @@ class LinkMobile { Config config; private: - struct Command { - // Magic Bytes - u8 magicHigh; - u8 magicLow; + struct MagicBytes { + u8 magic1 = COMMAND_MAGIC_VALUE1; + u8 magic2 = COMMAND_MAGIC_VALUE2; + } __attribute__((packed)); - // Packet Header + struct PacketData { + u8 bytes[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; + } __attribute__((packed)); + + struct PacketHeader { u8 commandId; u8 _unused_ = 0; u8 _unusedSizeHigh_ = 0; u8 size; - // Packet Data - u8 bytes[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 1]; + u16 sum() { return commandId + _unused_ + _unusedSizeHigh_ + size; } + } __attribute__((packed)); - // Packet Checksum - u8 checksumHigh; - u8 checksumLow; + struct PacketChecksum { + u8 high; + u8 low; + } __attribute__((packed)); - u16 checksum() { - u16 sum = commandId + _unused_ + _unusedSizeHigh_ + size; - for (u32 i = 0; i < size; i++) - sum += bytes[i]; - return sum; - } + struct Command { + MagicBytes magicBytes; + PacketHeader header; + PacketData data; + PacketChecksum checksum; }; - struct SerializedCommand { - u8 bytes[LINK_MOBILE_MAX_COMMAND_BYTES]; - u32 size = 0; - u32 mainSize = 0; - } - enum CommandResult { PENDING, SUCCESS, @@ -334,7 +326,7 @@ class LinkMobile { volatile State state; volatile CommandResult result; volatile u32 transferred; // (in SIO32: words; in SIO8: bytes) - SerializedCommand cmd; + Command cmd; volatile Direction direction; volatile u16 expectedChecksum; volatile u32 pendingData; @@ -345,7 +337,7 @@ class LinkMobile { state = AsyncCommand::State::PENDING; result = CommandResult::PENDING; transferred = 0; - cmd = SerializedCommand{}; + cmd = Command{}; direction = AsyncCommand::Direction::SENDING; expectedChecksum = 0; pendingData = 0; @@ -359,10 +351,14 @@ class LinkMobile { } }; + static constexpr u32 PREAMBLE_SIZE = + sizeof(MagicBytes) + sizeof(PacketHeader); + static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); + AsyncCommand asyncCommand; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; - u8 nextCommandData[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 1]; + PacketData nextCommandData; u32 nextCommandDataSize = 0; Error lastError = NONE; volatile bool isEnabled = false; @@ -376,7 +372,7 @@ class LinkMobile { void addData(u8 value, bool start = false) { if (start) nextCommandDataSize = 0; - nextCommandData[nextCommandDataSize] = value; + nextCommandData.bytes[nextCommandDataSize] = value; nextCommandDataSize++; } @@ -448,16 +444,16 @@ class LinkMobile { bool login() { for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) addData(LOGIN_PARTS[i], i == 0); - auto command = serializeCommand(COMMAND_BEGIN_SESSION, true); + auto command = buildCommand(COMMAND_BEGIN_SESSION, true); auto response = sendCommandWithResponse(command); if (response.result != CommandResult::SUCCESS) return false; - if (response.command.size != LOGIN_PARTS_SIZE) + if (response.command.header.size != LOGIN_PARTS_SIZE) return false; for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) { - if (response.command.bytes[i] != LOGIN_PARTS[i]) + if (response.command.data.bytes[i] != LOGIN_PARTS[i]) return false; } @@ -465,15 +461,15 @@ class LinkMobile { } bool logout() { - auto command = serializeCommand(COMMAND_END_SESSION, true); + auto command = buildCommand(COMMAND_END_SESSION, true); auto response = sendCommandWithResponse(command); return response.result == CommandResult::SUCCESS; } - CommandResponse sendCommandWithResponse(SerializedCommand serializedCommand) { + CommandResponse sendCommandWithResponse(Command command) { CommandResponse response; - sendCommandAsync(serializedCommand); + sendCommandAsync(command); waitUntilAsyncCommandFinishes(); if (asyncCommand.result != CommandResult::SUCCESS) { response.result = asyncCommand.result; @@ -490,10 +486,10 @@ class LinkMobile { response.result = asyncCommand.result; response.command = asyncCommand.cmd; - auto remoteCommand = response.command.commandId; + auto remoteCommand = response.command.header.commandId; if (remoteCommand == COMMAND_ERROR_STATUS) { - if (response.command.size != 2 || - response.command.bytes[0] != command.commandId) { + if (response.command.header.size != 2 || + response.command.data.bytes[0] != command.header.commandId) { response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } else { @@ -502,7 +498,7 @@ class LinkMobile { } } - if (remoteCommand != (command.commandId | OR_VALUE)) { + if (remoteCommand != (command.header.commandId | OR_VALUE)) { response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } @@ -523,7 +519,7 @@ class LinkMobile { } } - bool sendCommandAsync(SerializedCommand serializedCommand) { + bool sendCommandAsync(Command command) { if (asyncCommand.isActive) return false; @@ -534,7 +530,7 @@ class LinkMobile { transferAsync(*((u32*)&command)); // TODO: CHECK ENDIANNESS asyncCommand.transferred += 4; } else - advance(command.magicHigh); + advance(command.magicBytes.magic1); return true; } @@ -552,24 +548,33 @@ class LinkMobile { } void sendAsyncCommandSIO8(u32 newData) { - const u8* commandBytes = (const u8*)&asyncCommand.cmd.bytes; - u32 mainSize = asyncCommand.cmd.mainSize; + const u8* commandBytes = (const u8*)&asyncCommand.cmd; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; - if (async.transferred < mainSize + CHECKSUM_SIZE + 1) { - if (newData != ADAPTER_WAITING) - return asyncCommand.fail(CommandResult::NOT_WAITING); - } else if (async.transferred == mainSize + CHECKSUM_SIZE + 1) { + bool isAcknowledgement = + asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; + if (!isAcknowledgement && newData != ADAPTER_WAITING) + return asyncCommand.fail(CommandResult::NOT_WAITING); + + if (asyncCommand.transferred < mainSize) { + // Magic Bytes + Packet Header + Packet Data + advance(commandBytes[asyncCommand.transferred]); + } else if (asyncCommand.transferred < mainSize + CHECKSUM_SIZE) { + // Packet Checksum + commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; + advance(commandBytes[asyncCommand.transferred - mainSize]); + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { + // Acknowledgement Signal (1) + advance(DEVICE_GBA | OR_VALUE); + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { + // Acknowledgement Signal (2) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - } else if (async.transferred == asyncCommand.transferred == - mainSize + CHECKSUM_SIZE + 2) { - if (newData != (asyncCommand.cmd.commandId ^ OR_VALUE)) + advance(0); + } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { + // Acknowledgement Signal (3) + if (newData != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); - } - - if (asyncCommand.transferred < asyncCommand.cmd.totalSize) { - advance(asyncCommand.cmd.bytes[asyncCommand.transferred]); - } else { asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; } @@ -577,28 +582,28 @@ class LinkMobile { void receiveAsyncCommandSIO8(u32 newData) { u8* commandBytes = (u8*)&asyncCommand.cmd; - u32 mainSize = asyncCommand.mainSize; + u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; if (asyncCommand.transferred == 0) { // Magic Bytes (1) if (newData == ADAPTER_WAITING) return transferAsync(GBA_WAITING); - if (newData != COMMAND_MAGIC_VALUE_HIGH) + if (newData != COMMAND_MAGIC_VALUE1) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); advance(GBA_WAITING); } else if (asyncCommand.transferred == 1) { // Magic Bytes (1) - if (newData != COMMAND_MAGIC_VALUE_LOW) + if (newData != COMMAND_MAGIC_VALUE2) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); advance(GBA_WAITING); } else if (asyncCommand.transferred < PREAMBLE_SIZE) { // Packet Header commandBytes[asyncCommand.transferred] = newData; - if (asyncCommand.cmd._unusedSizeHigh_ != 0) + if (asyncCommand.cmd.header._unusedSizeHigh_ != 0) return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); advance(GBA_WAITING); if (asyncCommand.transferred == PREAMBLE_SIZE) - asyncCommand.expectedChecksum = asyncCommand.cmd.checksum(); + asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); } else if (asyncCommand.transferred < mainSize) { // Packet Data commandBytes[asyncCommand.transferred] = newData; @@ -618,7 +623,7 @@ class LinkMobile { // Acknowledgement Signal (1) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - advance(asyncCommand.cmd.commandId ^ OR_VALUE); + advance(asyncCommand.cmd.header.commandId ^ OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) if (newData != 0) @@ -646,47 +651,19 @@ class LinkMobile { return false; } - SerializedCommand serializeCommand(u8 type, bool withData = false) { - SerializedCommand serializedCommand; - u8 dataSize = withData ? (u8)nextCommandDataSize : 0; - - // Magic Bytes - serializedCommand.bytes[0] = COMMAND_MAGIC_VALUE_HIGH; - serializedCommand.bytes[1] = COMMAND_MAGIC_VALUE_LOW; - - // Packet Header - serializedCommand.bytes[2] = type; - serializedCommand.bytes[3] = 0; - serializedCommand.bytes[4] = 0; - serializedCommand.bytes[5] = dataSize; - - // Packet Data - u32 padding = 0; - u16 checksum = type + dataSize; - if (isSIO32Mode() && dataSize % 4 != 0) - padding = 4 - dataSize % 4; - for (u32 i = 0; i < dataSize + padding; i++) { - serializedCommand.bytes[PREAMBLE_SIZE + i] = nextCommandData[i]; - checksum += nextCommandData[i]; - } - u32 mainSize = PREAMBLE_SIZE + dataSize + padding; - serializedCommand.mainSize = mainSize; - - // Packet Checksum - serializedCommand.bytes[mainSize] = msB16(checksum); - serializedCommand.bytes[mainSize + 1] = lsB16(checksum); - - // Acknowledgement Signal - serializedCommand.bytes[mainSize + 2] = DEVICE_GBA | OR_VALUE; - serializedCommand.bytes[mainSize + 3] = 0; - serializedCommand.totalSize = mainSize + 4; - if (isSIO32Mode()) { - for (u32 i = 0; i < 2; i++) - serializedCommand.bytes[mainSize + 4 + i] = 0; - serializedCommand.totalSize += 2; - } - - // TODO: CHECK SIZE IN SIO32. IT HAS TO BE MULTIPLE OF 4 + Command buildCommand(u8 type, bool withData = false) { + Command command; + command.header.commandId = type; + command.header._unused_ = 0; + command.header._unusedSizeHigh_ = 0; + command.header.size = withData ? (u8)nextCommandDataSize : 0; + if (withData) + command.data = nextCommandData; + u16 checksum = command.header.sum(); + for (u32 i = 0; i < command.header.size; i++) + checksum += command.data.bytes[i]; + command.checksum.high = msB16(checksum); + command.checksum.low = lsB16(checksum); return command; } From 9d354b0a8fdc0a8c475cc8f58440ba7478186b23 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 03:27:51 -0300 Subject: [PATCH 076/195] Implementing SIO32 mode --- lib/LinkMobile.hpp | 251 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 206 insertions(+), 45 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index b6cd094..202d6b0 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -43,6 +43,8 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 +#define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ + (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 class LinkMobile { @@ -56,7 +58,9 @@ class LinkMobile { static constexpr int PING_WAIT = FRAME_LINES * 7; static constexpr int CMD_TIMEOUT = FRAME_LINES * 5; static constexpr int ADAPTER_WAITING = 0xD2; + static constexpr u32 ADAPTER_WAITING_32BIT = 0xD2D2D2D2; static constexpr int GBA_WAITING = 0x4B; + static constexpr u32 GBA_WAITING_32BIT = 0x4B4B4B4B; static constexpr int OR_VALUE = 0x80; static constexpr int COMMAND_MAGIC_VALUE1 = 0x99; static constexpr int COMMAND_MAGIC_VALUE2 = 0x66; @@ -65,6 +69,7 @@ class LinkMobile { static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; static constexpr int DEVICE_ADAPTER_GREEN = 0xA; static constexpr int DEVICE_ADAPTER_RED = 0xB; + static constexpr int ACK_SENDER = 0; static constexpr int CONFIGURATION_DATA_SIZE = 192; static constexpr int COMMAND_BEGIN_SESSION = 0x10; static constexpr int COMMAND_END_SESSION = 0x11; @@ -177,6 +182,19 @@ class LinkMobile { } bool readConfiguration(ConfigurationData& configurationData) { + mgbalog("READING CONFIGURATION!!!"); + addData(1, true); + auto sio32Response = + sendCommandWithResponse(buildCommand(COMMAND_SIO32, true)); + if (sio32Response.result != CommandResult::SUCCESS) { + mgbalog("SIO32 FAILED!!!"); + return false; + } + wait(PING_WAIT); + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_32BIT); + mgbalog("SIO32 ACTIVATED!!! now sending read configuration"); + static constexpr u8 CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; u8* configurationDataBytes = (u8*)&configurationData; @@ -227,11 +245,10 @@ class LinkMobile { return; linkSPI->_onSerial(); - if (linkSPI->getAsyncState() != LinkSPI::AsyncState::READY) { - mgbalog("NOT READY"); + if (linkSPI->getAsyncState() != LinkSPI::AsyncState::READY) return; - } u32 newData = linkSPI->getAsyncData(); + mgbalog("RECEIVED 0x%X", newData); if (state == NEEDS_RESET) return; @@ -239,8 +256,10 @@ class LinkMobile { if (asyncCommand.isActive) { if (asyncCommand.state == AsyncCommand::State::PENDING) { if (isSIO32Mode()) { - // TODO: IMPLEMENT - mgbalog("sio32"); + if (asyncCommand.direction == AsyncCommand::Direction::SENDING) + sendAsyncCommandSIO32(newData); + else + receiveAsyncCommandSIO32(newData); } else { if (asyncCommand.direction == AsyncCommand::Direction::SENDING) sendAsyncCommandSIO8(newData); @@ -248,8 +267,10 @@ class LinkMobile { receiveAsyncCommandSIO8(newData); } - if (asyncCommand.state == AsyncCommand::State::COMPLETED) + if (asyncCommand.state == AsyncCommand::State::COMPLETED) { + mgbalog("completed?! %d", asyncCommand.result); processAsyncCommand(); + } } } } @@ -258,6 +279,7 @@ class LinkMobile { if (!isEnabled || !asyncCommand.isActive || !asyncCommand.isWaiting) return; + mgbalog("SENT 0x%X", asyncCommand.pendingData); linkSPI->transferAsync(asyncCommand.pendingData); stopTimer(); asyncCommand.isWaiting = false; @@ -276,21 +298,21 @@ class LinkMobile { } __attribute__((packed)); struct PacketData { - u8 bytes[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; + u8 bytes[LINK_MOBILE_COMMAND_TRANSFER_BUFFER] = {}; } __attribute__((packed)); struct PacketHeader { - u8 commandId; + u8 commandId = 0; u8 _unused_ = 0; u8 _unusedSizeHigh_ = 0; - u8 size; + u8 size = 0; u16 sum() { return commandId + _unused_ + _unusedSizeHigh_ + size; } } __attribute__((packed)); struct PacketChecksum { - u8 high; - u8 low; + u8 high = 0; + u8 low = 0; } __attribute__((packed)); struct Command { @@ -325,7 +347,7 @@ class LinkMobile { volatile State state; volatile CommandResult result; - volatile u32 transferred; // (in SIO32: words; in SIO8: bytes) + volatile u32 transferred; Command cmd; volatile Direction direction; volatile u16 expectedChecksum; @@ -345,9 +367,10 @@ class LinkMobile { isActive = true; } - void fail(CommandResult result) { - result = CommandResult::NOT_WAITING; + void fail(CommandResult _result) { + result = _result; state = AsyncCommand::State::COMPLETED; + mgbalog("COMPLETED FAIL %d", result); } }; @@ -365,8 +388,8 @@ class LinkMobile { void processAsyncCommand() { asyncCommand.isActive = false; - // TODO: IMPLEMENT mgbalog("PROCESSED! %d", asyncCommand.result); + // TODO: IMPLEMENT } void addData(u8 value, bool start = false) { @@ -413,7 +436,8 @@ class LinkMobile { isEnabled = true; LINK_MOBILE_BARRIER; - logout(); + bool logr = logout(); + mgbalog("---logout--- %d", logr); if (!login()) return false; @@ -472,6 +496,7 @@ class LinkMobile { sendCommandAsync(command); waitUntilAsyncCommandFinishes(); if (asyncCommand.result != CommandResult::SUCCESS) { + mgbalog("not success? %d", asyncCommand.result); response.result = asyncCommand.result; return response; } @@ -515,6 +540,7 @@ class LinkMobile { asyncCommand.isActive = false; asyncCommand.state = AsyncCommand::State::COMPLETED; asyncCommand.result = CommandResult::TIMEOUT; + mgbalog("COMPLETED TIMEOUT %d", asyncCommand.result); break; } } @@ -526,11 +552,11 @@ class LinkMobile { asyncCommand.reset(); asyncCommand.cmd = command; - if (isSIO32Mode()) { - transferAsync(*((u32*)&command)); // TODO: CHECK ENDIANNESS - asyncCommand.transferred += 4; - } else - advance(command.magicBytes.magic1); + if (isSIO32Mode()) // Magic+Header + advance32(buildU32(command.magicBytes.magic1, command.magicBytes.magic2, + command.header.commandId, command.header._unused_)); + else // Magic Bytes (1) + advance8(command.magicBytes.magic1); return true; } @@ -542,7 +568,10 @@ class LinkMobile { asyncCommand.reset(); asyncCommand.direction = AsyncCommand::Direction::RECEIVING; - transferAsync(GBA_WAITING); + if (isSIO32Mode()) + transferAsync(GBA_WAITING_32BIT); + else + transferAsync(GBA_WAITING); return true; } @@ -557,26 +586,81 @@ class LinkMobile { return asyncCommand.fail(CommandResult::NOT_WAITING); if (asyncCommand.transferred < mainSize) { - // Magic Bytes + Packet Header + Packet Data - advance(commandBytes[asyncCommand.transferred]); + // Magic Bytes (2) + Packet Header + Packet Data + advance8(commandBytes[asyncCommand.transferred]); } else if (asyncCommand.transferred < mainSize + CHECKSUM_SIZE) { // Packet Checksum - commandBytes += PREAMBLE_SIZE + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH; - advance(commandBytes[asyncCommand.transferred - mainSize]); + commandBytes += PREAMBLE_SIZE + LINK_MOBILE_COMMAND_TRANSFER_BUFFER; + advance8(commandBytes[asyncCommand.transferred - mainSize]); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { // Acknowledgement Signal (1) - advance(DEVICE_GBA | OR_VALUE); + advance8(DEVICE_GBA | OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - advance(0); + advance8(ACK_SENDER); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 2) { // Acknowledgement Signal (3) if (newData != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; + mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); + } + } + + void sendAsyncCommandSIO32(u32 newData) { + u32 dataSize = asyncCommand.cmd.header.size; + u32 alignment = dataSize % 4; + u32 padding = alignment != 0 ? 4 - alignment : 0; + u32 mainSize = PREAMBLE_SIZE + dataSize + padding; + + bool isAcknowledgement = asyncCommand.transferred >= mainSize + 4; + if (!isAcknowledgement && newData != ADAPTER_WAITING && + newData != ADAPTER_WAITING_32BIT) { + mgbalog("NOT WAITING!!!"); + return asyncCommand.fail(CommandResult::NOT_WAITING); + } + + if (asyncCommand.transferred == 4) { + // Header+Data || Header+Checksum + advance32(dataSize > 0 + ? buildU32(asyncCommand.cmd.header._unusedSizeHigh_, + asyncCommand.cmd.header.size, + asyncCommand.cmd.data.bytes[0], + asyncCommand.cmd.data.bytes[1]) + : buildU32(asyncCommand.cmd.header._unusedSizeHigh_, + asyncCommand.cmd.header.size, + asyncCommand.cmd.checksum.high, + asyncCommand.cmd.checksum.low)); + } else if (asyncCommand.transferred < mainSize) { + // Data || Data+Checksum + u32 transferredDataCount = asyncCommand.transferred - PREAMBLE_SIZE; + u32 pendingDataCount = (dataSize + padding) - transferredDataCount; + advance32( + pendingDataCount > 2 + ? buildU32(asyncCommand.cmd.data.bytes[transferredDataCount], + asyncCommand.cmd.data.bytes[transferredDataCount + 1], + asyncCommand.cmd.data.bytes[transferredDataCount + 2], + asyncCommand.cmd.data.bytes[transferredDataCount + 3]) + : buildU32(asyncCommand.cmd.data.bytes[transferredDataCount], + asyncCommand.cmd.data.bytes[transferredDataCount + 1], + asyncCommand.cmd.checksum.high, + asyncCommand.cmd.checksum.low)); + } else if (!isAcknowledgement) { + // Acknowledgement Signal (1) + advance32(buildU32(DEVICE_GBA | OR_VALUE, ACK_SENDER, 0, 0)); + } else { + // Acknowledgement Signal (2) + u16 ackData = msB32(newData); + if (!isSupportedAdapter(msB16(ackData))) + return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); + if (lsB16(ackData) != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) + return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); + asyncCommand.result = CommandResult::SUCCESS; + asyncCommand.state = AsyncCommand::State::COMPLETED; + mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); } } @@ -590,56 +674,126 @@ class LinkMobile { return transferAsync(GBA_WAITING); if (newData != COMMAND_MAGIC_VALUE1) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); - advance(GBA_WAITING); + advance8(GBA_WAITING); } else if (asyncCommand.transferred == 1) { // Magic Bytes (1) if (newData != COMMAND_MAGIC_VALUE2) return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); - advance(GBA_WAITING); + advance8(GBA_WAITING); } else if (asyncCommand.transferred < PREAMBLE_SIZE) { // Packet Header commandBytes[asyncCommand.transferred] = newData; if (asyncCommand.cmd.header._unusedSizeHigh_ != 0) return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); - advance(GBA_WAITING); + advance8(GBA_WAITING); if (asyncCommand.transferred == PREAMBLE_SIZE) asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); } else if (asyncCommand.transferred < mainSize) { // Packet Data commandBytes[asyncCommand.transferred] = newData; asyncCommand.expectedChecksum += newData; - advance(GBA_WAITING); + advance8(GBA_WAITING); } else if (asyncCommand.transferred == mainSize) { // Packet Checksum (1) if (newData != msB16(asyncCommand.expectedChecksum)) return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); - advance(GBA_WAITING); + advance8(GBA_WAITING); } else if (asyncCommand.transferred == mainSize + 1) { // Packet Checksum (2) if (newData != lsB16(asyncCommand.expectedChecksum)) return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); - advance(DEVICE_GBA | OR_VALUE); + advance8(DEVICE_GBA | OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE) { // Acknowledgement Signal (1) if (!isSupportedAdapter(newData)) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - advance(asyncCommand.cmd.header.commandId ^ OR_VALUE); + advance8(asyncCommand.cmd.header.commandId ^ OR_VALUE); } else if (asyncCommand.transferred == mainSize + CHECKSUM_SIZE + 1) { // Acknowledgement Signal (2) - if (newData != 0) + if (newData != ACK_SENDER) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; + mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); } } - CommandResult acknowledge(u8 localCommandAck, u8 remoteCommandAck) { - if (!isSupportedAdapter(transfer(DEVICE_GBA | OR_VALUE))) - return CommandResult::INVALID_DEVICE_ID; - if (transfer(localCommandAck) != remoteCommandAck) - return CommandResult::INVALID_COMMAND_ACK; + void receiveAsyncCommandSIO32(u32 newData) { + u32 dataSize = asyncCommand.cmd.header.size; + u32 alignment = dataSize % 4; + u32 padding = alignment != 0 ? 4 - alignment : 0; + u32 mainSize = PREAMBLE_SIZE + dataSize + padding; - return CommandResult::SUCCESS; + if (asyncCommand.transferred == 0) { + // Magic+Header + if (newData == ADAPTER_WAITING || newData == ADAPTER_WAITING_32BIT) + return transferAsync(GBA_WAITING_32BIT); + u16 magic = msB32(newData); + u16 firstHalfHeader = lsB32(newData); + if (msB16(magic) != COMMAND_MAGIC_VALUE1 || + lsB16(magic) != COMMAND_MAGIC_VALUE2) + return asyncCommand.fail(CommandResult::INVALID_MAGIC_BYTES); + asyncCommand.cmd.header.commandId = msB16(firstHalfHeader); + asyncCommand.cmd.header._unused_ = lsB16(firstHalfHeader); + advance32(GBA_WAITING_32BIT); + } else if (asyncCommand.transferred == 4) { + // Header+Data || Header+Checksum + u16 secondHalfHeader = msB32(newData); + asyncCommand.cmd.header._unusedSizeHigh_ = msB16(secondHalfHeader); + asyncCommand.cmd.header.size = lsB16(secondHalfHeader); + asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); + + if (asyncCommand.cmd.header.size > 0) { + u16 firstData = lsB32(newData); + asyncCommand.cmd.data.bytes[0] = msB16(firstData); + asyncCommand.cmd.data.bytes[1] = lsB16(firstData); + } else { + u16 checksum = lsB32(newData); + // if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || + // lsB16(checksum) != msB16(asyncCommand.expectedChecksum)) + // return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); + asyncCommand.cmd.checksum.high = msB16(checksum); + asyncCommand.cmd.checksum.low = lsB16(checksum); + } + advance32(GBA_WAITING_32BIT); + } else if (asyncCommand.transferred < mainSize) { + // Data || Data+Checksum + u32 transferredDataCount = asyncCommand.transferred - PREAMBLE_SIZE; + u32 pendingDataCount = (dataSize + padding) - transferredDataCount; + if (pendingDataCount > 2) { + u16 dataHigh = msB32(newData); + u16 dataLow = lsB32(newData); + u8 b0 = msB16(dataHigh), b1 = lsB16(dataHigh), b2 = msB16(dataLow), + b3 = lsB16(dataLow); + asyncCommand.cmd.data.bytes[transferredDataCount] = b0; + asyncCommand.cmd.data.bytes[transferredDataCount + 1] = b1; + asyncCommand.cmd.data.bytes[transferredDataCount + 2] = b2; + asyncCommand.cmd.data.bytes[transferredDataCount + 3] = b3; + asyncCommand.expectedChecksum += b0 + b1 + b2 + b3; + advance32(GBA_WAITING_32BIT); + } else { + u16 lastData = msB32(newData); + asyncCommand.cmd.data.bytes[transferredDataCount] = msB16(lastData); + asyncCommand.cmd.data.bytes[transferredDataCount + 1] = lsB16(lastData); + asyncCommand.expectedChecksum += msB16(lastData) + lsB16(lastData); + u16 checksum = lsB32(newData); + // if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || + // lsB16(checksum) != msB16(asyncCommand.expectedChecksum)) + // return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); + asyncCommand.cmd.checksum.high = msB16(checksum); + asyncCommand.cmd.checksum.low = lsB16(checksum); + advance32(buildU32(DEVICE_GBA | OR_VALUE, + asyncCommand.cmd.header.commandId ^ OR_VALUE, 0, 0)); + } + } else { + // Acknowledgement Signal + u32 ackData = msB32(newData); + if (!isSupportedAdapter(msB16(ackData)) || lsB16(ackData) != ACK_SENDER) + return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); + asyncCommand.result = CommandResult::SUCCESS; + asyncCommand.state = AsyncCommand::State::COMPLETED; + mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); + } } bool isSupportedAdapter(u8 ack) { @@ -668,11 +822,16 @@ class LinkMobile { return command; } - void advance(u32 data) { + void advance8(u32 data) { transferAsync(data); asyncCommand.transferred++; } + void advance32(u32 data) { + transferAsync(data); + asyncCommand.transferred += 4; + } + void transferAsync(u32 data) { asyncCommand.isWaiting = true; asyncCommand.pendingData = data; @@ -717,8 +876,10 @@ class LinkMobile { }; } - u32 buildU32(u16 msB, u16 lsB) { return (msB << 16) | lsB; } - u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } + u32 buildU32(u8 msB, u8 byte2, u8 byte3, u8 lsB) { + return ((msB & 0xFF) << 24) | ((byte2 & 0xFF) << 16) | + ((byte3 & 0xFF) << 8) | (lsB & 0xFF); + } u16 msB32(u32 value) { return value >> 16; } u16 lsB32(u32 value) { return value & 0xffff; } u8 msB16(u16 value) { return value >> 8; } From b82deda44e93042d149c2d12b6e90e566ad9f29a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 09:34:19 -0300 Subject: [PATCH 077/195] Fixing checksum --- lib/LinkMobile.hpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 202d6b0..608b354 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -745,13 +745,15 @@ class LinkMobile { if (asyncCommand.cmd.header.size > 0) { u16 firstData = lsB32(newData); - asyncCommand.cmd.data.bytes[0] = msB16(firstData); - asyncCommand.cmd.data.bytes[1] = lsB16(firstData); + u8 b0 = msB16(firstData), b1 = lsB16(firstData); + asyncCommand.cmd.data.bytes[0] = b0; + asyncCommand.cmd.data.bytes[1] = b1; + asyncCommand.expectedChecksum += b0 + b1; } else { u16 checksum = lsB32(newData); - // if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || - // lsB16(checksum) != msB16(asyncCommand.expectedChecksum)) - // return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); + if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || + lsB16(checksum) != msB16(asyncCommand.expectedChecksum)) + return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); asyncCommand.cmd.checksum.high = msB16(checksum); asyncCommand.cmd.checksum.low = lsB16(checksum); } @@ -773,13 +775,14 @@ class LinkMobile { advance32(GBA_WAITING_32BIT); } else { u16 lastData = msB32(newData); - asyncCommand.cmd.data.bytes[transferredDataCount] = msB16(lastData); - asyncCommand.cmd.data.bytes[transferredDataCount + 1] = lsB16(lastData); - asyncCommand.expectedChecksum += msB16(lastData) + lsB16(lastData); + u8 b0 = msB16(lastData), b1 = lsB16(lastData); + asyncCommand.cmd.data.bytes[transferredDataCount] = b0; + asyncCommand.cmd.data.bytes[transferredDataCount + 1] = b1; + asyncCommand.expectedChecksum += b0 + b1; u16 checksum = lsB32(newData); - // if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || - // lsB16(checksum) != msB16(asyncCommand.expectedChecksum)) - // return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); + if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || + lsB16(checksum) != lsB16(asyncCommand.expectedChecksum)) + return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); asyncCommand.cmd.checksum.high = msB16(checksum); asyncCommand.cmd.checksum.low = lsB16(checksum); advance32(buildU32(DEVICE_GBA | OR_VALUE, From 431820ba375afa3c93a16db2d346c6d46224544b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 13 Aug 2024 09:49:40 -0300 Subject: [PATCH 078/195] FIX: Sending zeroes in padding bytes --- examples/LinkMobile_demo/src/main.cpp | 10 +++++--- lib/LinkMobile.hpp | 35 +++++++++++++++++++++------ 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index d25ada9..9f300c7 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -81,7 +81,7 @@ again: // Menu log(std::string("") + - "L = Read Configuration\n\n " + "L = Read Configuration\n\n (DOWN = ok)\n " "(SELECT = cancel)\n (START = reactivate)"); // SELECT = back @@ -155,8 +155,12 @@ void readConfiguration() { std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + "\nPOP Server:\n " + - toStr(data.popServer, 19)); - hang(); + toStr(data.popServer, 19) + "\n\nMode: " + + (linkMobile->linkSPI->getDataSize() == LinkSPI::DataSize::SIZE_32BIT + ? "SIO32" + : "SIO8")); + while (true) + ; } void log(std::string text) { diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 608b354..a71de80 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -182,6 +182,9 @@ class LinkMobile { } bool readConfiguration(ConfigurationData& configurationData) { + while (linkSPI->getAsyncState() != LinkSPI::AsyncState::IDLE) + ; // wait + mgbalog("READING CONFIGURATION!!!"); addData(1, true); auto sio32Response = @@ -190,10 +193,14 @@ class LinkMobile { mgbalog("SIO32 FAILED!!!"); return false; } - wait(PING_WAIT); - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, - LinkSPI::DataSize::SIZE_32BIT); - mgbalog("SIO32 ACTIVATED!!! now sending read configuration"); + if (sio32Response.command.header.commandId != (COMMAND_RESET | OR_VALUE)) { + wait(PING_WAIT); + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_32BIT); + mgbalog("SIO32 ACTIVATED!!! now sending read configuration"); + } else { + mgbalog("Adapter returned RESET, keeping SIO8 mode"); + } static constexpr u8 CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; u8* configurationDataBytes = (u8*)&configurationData; @@ -238,6 +245,11 @@ class LinkMobile { void _onVBlank() { if (!isEnabled) return; + + // if (!asyncCommand.isActive && + // linkSPI->getAsyncState() == LinkSPI::AsyncState::IDLE) { + // linkSPI->transfer(GBA_WAITING); + // } } void _onSerial() { @@ -248,7 +260,6 @@ class LinkMobile { if (linkSPI->getAsyncState() != LinkSPI::AsyncState::READY) return; u32 newData = linkSPI->getAsyncData(); - mgbalog("RECEIVED 0x%X", newData); if (state == NEEDS_RESET) return; @@ -279,7 +290,6 @@ class LinkMobile { if (!isEnabled || !asyncCommand.isActive || !asyncCommand.isWaiting) return; - mgbalog("SENT 0x%X", asyncCommand.pendingData); linkSPI->transferAsync(asyncCommand.pendingData); stopTimer(); asyncCommand.isWaiting = false; @@ -291,7 +301,7 @@ class LinkMobile { Config config; - private: + // private: // TODO: RECOVER struct MagicBytes { u8 magic1 = COMMAND_MAGIC_VALUE1; u8 magic2 = COMMAND_MAGIC_VALUE2; @@ -393,8 +403,10 @@ class LinkMobile { } void addData(u8 value, bool start = false) { - if (start) + if (start) { nextCommandDataSize = 0; + nextCommandData = PacketData{}; + } nextCommandData.bytes[nextCommandDataSize] = value; nextCommandDataSize++; } @@ -524,6 +536,12 @@ class LinkMobile { } if (remoteCommand != (command.header.commandId | OR_VALUE)) { + if (command.header.commandId == COMMAND_SIO32 && + remoteCommand == (COMMAND_RESET | OR_VALUE)) { + // Exception + return response; + } + response.result = CommandResult::UNEXPECTED_RESPONSE; return response; } @@ -836,6 +854,7 @@ class LinkMobile { } void transferAsync(u32 data) { + mgbalog("SENT %X", data); asyncCommand.isWaiting = true; asyncCommand.pendingData = data; startTimer(WAIT_TICKS[isSIO32Mode()]); From 0f65175a5b4678ac60bbd194a487a09cdc2a380b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 01:53:40 -0300 Subject: [PATCH 079/195] Refactoring LinkMobile to be completely async and don't block the system at all --- examples/LinkMobile_demo/src/main.cpp | 28 +- lib/LinkCable.hpp | 2 +- lib/LinkMobile.hpp | 550 ++++++++++++-------------- lib/LinkUART.hpp | 2 +- lib/LinkUniversal.hpp | 3 +- lib/LinkWireless.hpp | 6 +- lib/_link_common.hpp | 86 ++-- lib/_link_tonc_mgba.h | 45 --- 8 files changed, 320 insertions(+), 402 deletions(-) delete mode 100644 lib/_link_tonc_mgba.h diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 9f300c7..f1c521c 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -1,3 +1,5 @@ +#define LINK_ENABLE_DEBUG_LOGS 1 + // (0) Include the header #include "../../../lib/LinkMobile.hpp" @@ -7,16 +9,6 @@ #include #include "../../_lib/interrupt.h" -#define CHECK_ERRORS(MESSAGE) \ - if ((lastError = linkMobile->getLastError()) || \ - linkMobile->getState() == LinkMobile::State::NEEDS_RESET) { \ - log(std::string(MESSAGE) + " (" + std::to_string(lastError) + ") [" + \ - std::to_string(linkMobile->getState()) + "]"); \ - hang(); \ - linkMobile->activate(); \ - return; \ - } - void activate(); void readConfiguration(); void log(std::string text); @@ -50,7 +42,6 @@ start: // (1) Create a LinkMobile instance linkMobile = new LinkMobile(); - linkMobile->debug = [](std::string str) { log(str); }; if (firstTime) { // (2) Add the required interrupt service routines @@ -67,11 +58,7 @@ start: again: // (3) Initialize the library - if (!linkMobile->activate()) { - log("Adapter not connected!\n\nPress A to try again"); - waitFor(KEY_A); - goto again; - } + linkMobile->activate(); bool activating = false; bool reading = false; @@ -115,14 +102,7 @@ again: } void activate() { - log("Trying..."); - - if (linkMobile->activate()) - log("Activated!"); - else - log("Activation failed! :("); - - hang(); + linkMobile->activate(); } std::string toStr(char* chars, int size) { diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 2651d6e..4dc199b 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -74,8 +74,8 @@ class LinkCable { using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; - using vs32 = volatile signed int; using vu32 = volatile unsigned int; + using vs32 = volatile signed int; using U16Queue = Link::Queue; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index a71de80..6874a19 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -22,23 +22,15 @@ #include "_link_common.hpp" -#include +#include // TODO: for std::strlen #include "LinkGPIO.hpp" #include "LinkSPI.hpp" -// TODO: Remove -#include -#include -#include "_link_tonc_mgba.h" - -#define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") - -#define LINK_MOBILE_RESET_IF_NEEDED \ - if (!isEnabled) \ - return false; \ - if (state == NEEDS_RESET) \ - if (!reset()) \ - return false; +/** + * @brief ... + * + */ +#define LINK_MOBILE_TODO_KNOB 10 static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; @@ -46,6 +38,13 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 +#define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") + +#if LINK_ENABLE_DEBUG_LOGS != 0 +#define _LMLOG_(...) Link::log(__VA_ARGS__) +#else +#define _LMLOG_(str) +#endif class LinkMobile { private: @@ -54,9 +53,7 @@ class LinkMobile { using u8 = unsigned char; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; - static constexpr int FRAME_LINES = 228; - static constexpr int PING_WAIT = FRAME_LINES * 7; - static constexpr int CMD_TIMEOUT = FRAME_LINES * 5; + static constexpr int PING_WAIT_FRAMES = 7; static constexpr int ADAPTER_WAITING = 0xD2; static constexpr u32 ADAPTER_WAITING_32BIT = 0xD2D2D2D2; static constexpr int GBA_WAITING = 0x4B; @@ -78,7 +75,6 @@ class LinkMobile { static constexpr int COMMAND_WAIT_FOR_TELEPHONE_CALL = 0x14; static constexpr int COMMAND_TRANSFER_DATA = 0x15; static constexpr int COMMAND_RESET = 0x16; - static constexpr int COMMAND_TELEPHONE_STATUS = 0x17; static constexpr int COMMAND_SIO32 = 0x18; static constexpr int COMMAND_READ_CONFIGURATION_DATA = 0x19; static constexpr int COMMAND_ISP_LOGIN = 0x21; @@ -90,31 +86,38 @@ class LinkMobile { static constexpr int COMMAND_DNS_QUERY = 0x28; static constexpr int COMMAND_ERROR_STATUS = 0x6E | OR_VALUE; + static constexpr u8 WAIT_TICKS[] = {4, 8}; static constexpr int LOGIN_PARTS_SIZE = 8; static constexpr u8 LOGIN_PARTS[] = {0x4e, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x44, 0x4f}; - static constexpr u8 WAIT_TICKS[] = {4, 8}; - static constexpr int SUPPORTED_DEVICES_SIZE = 4; static constexpr u8 SUPPORTED_DEVICES[] = { DEVICE_ADAPTER_BLUE, DEVICE_ADAPTER_YELLOW, DEVICE_ADAPTER_GREEN, DEVICE_ADAPTER_RED}; public: - std::function debug; // TODO: REMOVE - enum State { NEEDS_RESET, - AUTHENTICATING, + PINGING, + WAITING_TO_START, + ENDING_SESSION, + STARTING_SESSION, + ACTIVATING_SIO32, + WAITING_TO_SWITCH, + READING_CONFIGURATION, SESSION_ACTIVE, + SESSION_ACTIVE_CALL, + SESSION_ACTIVE_ISP }; enum Error { // User errors - NONE = 0, - WRONG_STATE = 1, + NONE, + WRONG_STATE, // Communication errors - // ... + NOT_CONNECTED, + FAILURE_ACTIVATING_SIO32, + FAILURE_READING_CONFIGURATION, }; struct ConfigurationData { @@ -145,89 +148,81 @@ class LinkMobile { /** * @brief ... - * - * \warning Blocks the system for ~15 frames! */ - bool activate() { + void activate() { lastError = NONE; + + LINK_MOBILE_BARRIER; isEnabled = false; - - LINK_MOBILE_BARRIER; - bool success = reset(); LINK_MOBILE_BARRIER; - if (!success) { - deactivate(false); - return false; - } + resetState(); + stop(); + LINK_MOBILE_BARRIER; isEnabled = true; - return true; + LINK_MOBILE_BARRIER; + + start(); } - bool deactivate(bool logoutFirst = true) { - bool success = true; - - if (logoutFirst) { - activate(); - success = logout(); - } - + void deactivate() { lastError = NONE; isEnabled = false; resetState(); stop(); - - return success; } + // TODO: REFACTOR bool readConfiguration(ConfigurationData& configurationData) { - while (linkSPI->getAsyncState() != LinkSPI::AsyncState::IDLE) - ; // wait + // while (linkSPI->getAsyncState() != LinkSPI::AsyncState::IDLE) + // ; // wait - mgbalog("READING CONFIGURATION!!!"); - addData(1, true); - auto sio32Response = - sendCommandWithResponse(buildCommand(COMMAND_SIO32, true)); - if (sio32Response.result != CommandResult::SUCCESS) { - mgbalog("SIO32 FAILED!!!"); - return false; - } - if (sio32Response.command.header.commandId != (COMMAND_RESET | OR_VALUE)) { - wait(PING_WAIT); - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, - LinkSPI::DataSize::SIZE_32BIT); - mgbalog("SIO32 ACTIVATED!!! now sending read configuration"); - } else { - mgbalog("Adapter returned RESET, keeping SIO8 mode"); - } + // _LMLOG_("READING CONFIGURATION!!!"); + // // TODO: FIX THIS MESS + // addData(1, true); + // auto sio32Response = + // sendCommandWithResponse(buildCommand(COMMAND_SIO32, true)); + // if (sio32Response.result != CommandResult::SUCCESS) { + // _LMLOG_("SIO32 FAILED!!!"); + // return false; + // } + // if (sio32Response.command.header.commandId != (COMMAND_RESET | OR_VALUE)) + // { + // wait(PING_WAIT); + // linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + // LinkSPI::DataSize::SIZE_32BIT); + // _LMLOG_("SIO32 ACTIVATED!!! now sending read configuration"); + // } else { + // _LMLOG_("Adapter returned RESET, keeping SIO8 mode"); + // } - static constexpr u8 CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; - u8* configurationDataBytes = (u8*)&configurationData; + // static constexpr u8 CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / + // 2; u8* configurationDataBytes = (u8*)&configurationData; - addData(0, true); - addData(CONFIGURATION_DATA_CHUNK); - auto response1 = sendCommandWithResponse( - buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); - if (response1.result != CommandResult::SUCCESS || - response1.command.header.size != CONFIGURATION_DATA_CHUNK + 1) - return false; + // addData(0, true); + // addData(CONFIGURATION_DATA_CHUNK); + // auto response1 = sendCommandWithResponse( + // buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + // if (response1.result != CommandResult::SUCCESS || + // response1.command.header.size != CONFIGURATION_DATA_CHUNK + 1) + // return false; - addData(CONFIGURATION_DATA_CHUNK, true); - addData(CONFIGURATION_DATA_CHUNK); - auto response2 = sendCommandWithResponse( - buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); - if (response2.result != CommandResult::SUCCESS || - response2.command.header.size != CONFIGURATION_DATA_CHUNK + 1) - return false; + // addData(CONFIGURATION_DATA_CHUNK, true); + // addData(CONFIGURATION_DATA_CHUNK); + // auto response2 = sendCommandWithResponse( + // buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); + // if (response2.result != CommandResult::SUCCESS || + // response2.command.header.size != CONFIGURATION_DATA_CHUNK + 1) + // return false; - u8* response1Bytes = (u8*)&response1.command.data.bytes; - u8* response2Bytes = (u8*)&response2.command.data.bytes; - for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) - configurationDataBytes[i] = response1Bytes[1 + i]; - for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) - configurationDataBytes[CONFIGURATION_DATA_CHUNK + i] = - response2Bytes[1 + i]; + // u8* response1Bytes = (u8*)&response1.command.data.bytes; + // u8* response2Bytes = (u8*)&response2.command.data.bytes; + // for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) + // configurationDataBytes[i] = response1Bytes[1 + i]; + // for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) + // configurationDataBytes[CONFIGURATION_DATA_CHUNK + i] = + // response2Bytes[1 + i]; return true; } @@ -246,10 +241,7 @@ class LinkMobile { if (!isEnabled) return; - // if (!asyncCommand.isActive && - // linkSPI->getAsyncState() == LinkSPI::AsyncState::IDLE) { - // linkSPI->transfer(GBA_WAITING); - // } + processNewFrame(); } void _onSerial() { @@ -257,13 +249,8 @@ class LinkMobile { return; linkSPI->_onSerial(); - if (linkSPI->getAsyncState() != LinkSPI::AsyncState::READY) - return; u32 newData = linkSPI->getAsyncData(); - if (state == NEEDS_RESET) - return; - if (asyncCommand.isActive) { if (asyncCommand.state == AsyncCommand::State::PENDING) { if (isSIO32Mode()) { @@ -279,26 +266,32 @@ class LinkMobile { } if (asyncCommand.state == AsyncCommand::State::COMPLETED) { - mgbalog("completed?! %d", asyncCommand.result); + asyncCommand.isActive = false; processAsyncCommand(); } } + } else { + processLoosePacket(newData); } } void _onTimer() { - if (!isEnabled || !asyncCommand.isActive || !asyncCommand.isWaiting) + if (!isEnabled || !hasPendingTransfer) return; - linkSPI->transferAsync(asyncCommand.pendingData); + linkSPI->transferAsync(pendingTransfer); stopTimer(); - asyncCommand.isWaiting = false; + hasPendingTransfer = false; } struct Config { u32 timerId; }; + /** + * @brief LinkMobile configuration. + * \warning `deactivate()` first, change the config, and `activate()` again! + */ Config config; // private: // TODO: RECOVER @@ -355,15 +348,14 @@ class LinkMobile { enum State { PENDING, COMPLETED }; enum Direction { SENDING, RECEIVING }; - volatile State state; - volatile CommandResult result; - volatile u32 transferred; + State state; + CommandResult result; + u32 transferred; Command cmd; - volatile Direction direction; - volatile u16 expectedChecksum; - volatile u32 pendingData; - volatile bool isWaiting; - volatile bool isActive = false; + Direction direction; + u16 expectedChecksum; + bool expectsResponse; + bool isActive = false; void reset() { state = AsyncCommand::State::PENDING; @@ -372,15 +364,19 @@ class LinkMobile { cmd = Command{}; direction = AsyncCommand::Direction::SENDING; expectedChecksum = 0; - pendingData = 0; - isWaiting = false; + expectsResponse = false; isActive = true; } + bool respondsTo(u8 commandId) { + return direction == AsyncCommand::Direction::RECEIVING && + cmd.header.commandId == (commandId | OR_VALUE); + } + void fail(CommandResult _result) { result = _result; state = AsyncCommand::State::COMPLETED; - mgbalog("COMPLETED FAIL %d", result); + // TODO: Command fail log } }; @@ -389,17 +385,130 @@ class LinkMobile { static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); AsyncCommand asyncCommand; + u32 waitFrames = 0; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; PacketData nextCommandData; u32 nextCommandDataSize = 0; + bool hasPendingTransfer = false; + u32 pendingTransfer = 0; Error lastError = NONE; volatile bool isEnabled = false; + void processNewFrame() { + switch (state) { + case WAITING_TO_START: { + waitFrames--; + if (waitFrames == 0) { + auto command = buildCommand(COMMAND_END_SESSION, true); + sendCommandAsync(command, true); + setState(ENDING_SESSION); + } + break; + } + case WAITING_TO_SWITCH: { + waitFrames--; + if (waitFrames == 0) { + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_32BIT); + setState(SESSION_ACTIVE); + } + break; + } + default: { + } + } + } + void processAsyncCommand() { - asyncCommand.isActive = false; - mgbalog("PROCESSED! %d", asyncCommand.result); - // TODO: IMPLEMENT + // TODO: Command success log + + // TODO: PARSE ERRORS + /* + auto remoteCommand = response.command.header.commandId; + if (remoteCommand == COMMAND_ERROR_STATUS) { + if (response.command.header.size != 2 || + response.command.data.bytes[0] != command.header.commandId) { + response.result = CommandResult::UNEXPECTED_RESPONSE; + return response; + } else { + response.result = CommandResult::ERROR; + return response; + } + } + */ + if (asyncCommand.expectsResponse) { + if (asyncCommand.result != CommandResult::SUCCESS) { + // lastError = Error::; + reset(); + return; + } + receiveCommandAsync(); + return; + } + + switch (state) { + case ENDING_SESSION: { + if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) + return; + + for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) + addData(LOGIN_PARTS[i], i == 0); + sendCommandAsync(buildCommand(COMMAND_BEGIN_SESSION, true), true); + setState(STARTING_SESSION); + break; + } + case STARTING_SESSION: { + if (!asyncCommand.respondsTo(COMMAND_BEGIN_SESSION)) + return; + if (asyncCommand.result != CommandResult::SUCCESS) { + reset(); + return; + } + + if (asyncCommand.cmd.header.size != LOGIN_PARTS_SIZE) { + reset(); + return; + } + for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) { + if (asyncCommand.cmd.data.bytes[i] != LOGIN_PARTS[i]) { + reset(); + return; + } + } + + addData(1, true); + sendCommandAsync(buildCommand(COMMAND_SIO32, true), true); + setState(ACTIVATING_SIO32); + + break; + } + case ACTIVATING_SIO32: { + if (!asyncCommand.respondsTo(COMMAND_SIO32)) + return; // TODO: Also react to 0x16 + if (asyncCommand.result != CommandResult::SUCCESS) { + reset(); + return; + } + + waitFrames = PING_WAIT_FRAMES; + setState(WAITING_TO_SWITCH); + + break; + } + } + } + + void processLoosePacket(u32 newData) { + switch (state) { + case PINGING: { + waitFrames = PING_WAIT_FRAMES; + setState(WAITING_TO_START); + break; + } + default: { + } + } } void addData(u8 value, bool start = false) { @@ -411,25 +520,35 @@ class LinkMobile { nextCommandDataSize++; } - void copyName(char* target, const char* source, u32 length) { - u32 len = std::strlen(source); + // TODO: USE + // void copyName(char* target, const char* source, u32 length) { + // u32 len = std::strlen(source); - for (u32 i = 0; i < length + 1; i++) - if (i < len) - target[i] = source[i]; - else - target[i] = '\0'; + // for (u32 i = 0; i < length + 1; i++) + // if (i < len) + // target[i] = source[i]; + // else + // target[i] = '\0'; + // } + + void setState(State newState) { + state = newState; + _LMLOG_("!! New state: %d", newState); } - bool reset() { + void reset() { resetState(); stop(); - return start(); + start(); } void resetState() { + setState(NEEDS_RESET); + this->asyncCommand.isActive = false; - this->state = NEEDS_RESET; + this->waitFrames = 0; + this->hasPendingTransfer = false; + this->pendingTransfer = 0; } void stop() { @@ -437,28 +556,12 @@ class LinkMobile { linkSPI->deactivate(); } - bool start() { + void start() { linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_8BIT); - pingAdapter(); - - LINK_MOBILE_BARRIER; - state = AUTHENTICATING; - isEnabled = true; - LINK_MOBILE_BARRIER; - - bool logr = logout(); - mgbalog("---logout--- %d", logr); - - if (!login()) - return false; - - // TODO: SWITCH TO 32BITS? - - state = SESSION_ACTIVE; - - return true; + transferAsync(0); + setState(PINGING); } void stopTimer() { @@ -472,117 +575,19 @@ class LinkMobile { Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } - void pingAdapter() { - transfer(0); - wait(PING_WAIT); - } - - bool login() { - for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) - addData(LOGIN_PARTS[i], i == 0); - auto command = buildCommand(COMMAND_BEGIN_SESSION, true); - - auto response = sendCommandWithResponse(command); - if (response.result != CommandResult::SUCCESS) - return false; - - if (response.command.header.size != LOGIN_PARTS_SIZE) - return false; - for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) { - if (response.command.data.bytes[i] != LOGIN_PARTS[i]) - return false; - } - - return true; - } - - bool logout() { - auto command = buildCommand(COMMAND_END_SESSION, true); - auto response = sendCommandWithResponse(command); - return response.result == CommandResult::SUCCESS; - } - - CommandResponse sendCommandWithResponse(Command command) { - CommandResponse response; - - sendCommandAsync(command); - waitUntilAsyncCommandFinishes(); - if (asyncCommand.result != CommandResult::SUCCESS) { - mgbalog("not success? %d", asyncCommand.result); - response.result = asyncCommand.result; - return response; - } - - receiveCommandAsync(); - waitUntilAsyncCommandFinishes(); - if (asyncCommand.result != CommandResult::SUCCESS) { - response.result = asyncCommand.result; - return response; - } - - response.result = asyncCommand.result; - response.command = asyncCommand.cmd; - - auto remoteCommand = response.command.header.commandId; - if (remoteCommand == COMMAND_ERROR_STATUS) { - if (response.command.header.size != 2 || - response.command.data.bytes[0] != command.header.commandId) { - response.result = CommandResult::UNEXPECTED_RESPONSE; - return response; - } else { - response.result = CommandResult::ERROR; - return response; - } - } - - if (remoteCommand != (command.header.commandId | OR_VALUE)) { - if (command.header.commandId == COMMAND_SIO32 && - remoteCommand == (COMMAND_RESET | OR_VALUE)) { - // Exception - return response; - } - - response.result = CommandResult::UNEXPECTED_RESPONSE; - return response; - } - - return response; - } - - void waitUntilAsyncCommandFinishes() { - u32 lines = 0; - u32 vCount = Link::_REG_VCOUNT; - - while (asyncCommand.isActive) - if (cmdTimeout(lines, vCount)) { - asyncCommand.isActive = false; - asyncCommand.state = AsyncCommand::State::COMPLETED; - asyncCommand.result = CommandResult::TIMEOUT; - mgbalog("COMPLETED TIMEOUT %d", asyncCommand.result); - break; - } - } - - bool sendCommandAsync(Command command) { - if (asyncCommand.isActive) - return false; - + void sendCommandAsync(Command command, bool expectsResponse = false) { asyncCommand.reset(); asyncCommand.cmd = command; + asyncCommand.expectsResponse = expectsResponse; if (isSIO32Mode()) // Magic+Header advance32(buildU32(command.magicBytes.magic1, command.magicBytes.magic2, command.header.commandId, command.header._unused_)); else // Magic Bytes (1) advance8(command.magicBytes.magic1); - - return true; } - bool receiveCommandAsync() { - if (asyncCommand.isActive) - return false; - + void receiveCommandAsync() { asyncCommand.reset(); asyncCommand.direction = AsyncCommand::Direction::RECEIVING; @@ -590,8 +595,6 @@ class LinkMobile { transferAsync(GBA_WAITING_32BIT); else transferAsync(GBA_WAITING); - - return true; } void sendAsyncCommandSIO8(u32 newData) { @@ -624,7 +627,6 @@ class LinkMobile { return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; - mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); } } @@ -636,10 +638,8 @@ class LinkMobile { bool isAcknowledgement = asyncCommand.transferred >= mainSize + 4; if (!isAcknowledgement && newData != ADAPTER_WAITING && - newData != ADAPTER_WAITING_32BIT) { - mgbalog("NOT WAITING!!!"); + newData != ADAPTER_WAITING_32BIT) return asyncCommand.fail(CommandResult::NOT_WAITING); - } if (asyncCommand.transferred == 4) { // Header+Data || Header+Checksum @@ -678,7 +678,6 @@ class LinkMobile { return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; - mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); } } @@ -732,7 +731,6 @@ class LinkMobile { return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; - mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); } } @@ -760,7 +758,6 @@ class LinkMobile { asyncCommand.cmd.header._unusedSizeHigh_ = msB16(secondHalfHeader); asyncCommand.cmd.header.size = lsB16(secondHalfHeader); asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); - if (asyncCommand.cmd.header.size > 0) { u16 firstData = lsB32(newData); u8 b0 = msB16(firstData), b1 = lsB16(firstData); @@ -813,7 +810,6 @@ class LinkMobile { return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); asyncCommand.result = CommandResult::SUCCESS; asyncCommand.state = AsyncCommand::State::COMPLETED; - mgbalog("COMPLETED SUCCESS %d", asyncCommand.result); } } @@ -854,50 +850,16 @@ class LinkMobile { } void transferAsync(u32 data) { - mgbalog("SENT %X", data); - asyncCommand.isWaiting = true; - asyncCommand.pendingData = data; + _LMLOG_(">> %X", data); + hasPendingTransfer = true; + pendingTransfer = data; startTimer(WAIT_TICKS[isSIO32Mode()]); } - u32 transfer(u32 data) { - u32 lines = 0; - u32 vCount = Link::_REG_VCOUNT; - u32 receivedData = linkSPI->transfer( - data, [this, &lines, &vCount]() { return cmdTimeout(lines, vCount); }); - - return receivedData; - } - bool isSIO32Mode() { return linkSPI->getDataSize() == LinkSPI::DataSize::SIZE_32BIT; } - bool cmdTimeout(u32& lines, u32& vCount) { - return timeout(CMD_TIMEOUT, lines, vCount); - } - - bool timeout(u32 limit, u32& lines, u32& vCount) { - if (Link::_REG_VCOUNT != vCount) { - lines += Link::_max((int)Link::_REG_VCOUNT - (int)vCount, 0); - vCount = Link::_REG_VCOUNT; - } - - return lines > limit; - } - - void wait(u32 verticalLines) { - u32 count = 0; - u32 vCount = Link::_REG_VCOUNT; - - while (count < verticalLines) { - if (Link::_REG_VCOUNT != vCount) { - count++; - vCount = Link::_REG_VCOUNT; - } - }; - } - u32 buildU32(u8 msB, u8 byte2, u8 byte3, u8 lsB) { return ((msB & 0xFF) << 24) | ((byte2 & 0xFF) << 16) | ((byte3 & 0xFF) << 8) | (lsB & 0xFF); @@ -922,4 +884,8 @@ inline void LINK_MOBILE_ISR_TIMER() { linkMobile->_onTimer(); } +#undef _LMLOG_ + #endif // LINK_MOBILE_H + +// TODO: Implement state timeouts (e.g. PINGING) diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index dea5839..6eb8d08 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -43,8 +43,8 @@ class LinkUART { using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; - using vs32 = volatile signed int; using vu32 = volatile unsigned int; + using vs32 = volatile signed int; using U8Queue = Link::Queue; static constexpr int BIT_CTS = 2; diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 589ccbf..9a4a545 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -78,6 +78,7 @@ class LinkUniversal { using u16 = unsigned short; using u8 = unsigned char; using s8 = signed char; + using U16Queue = Link::Queue; static constexpr int MAX_ROOM_NUMBER = 32000; static constexpr int INIT_WAIT_FRAMES = 10; @@ -452,7 +453,7 @@ class LinkUniversal { const char* gameName; }; - LinkCable::U16Queue incomingMessages[LINK_UNIVERSAL_MAX_PLAYERS]; + U16Queue incomingMessages[LINK_UNIVERSAL_MAX_PLAYERS]; Config config; State state = INITIALIZING; Mode mode = LINK_CABLE; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 4dca399..12b3596 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -143,8 +143,8 @@ class LinkWireless { using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; - using vs32 = volatile signed int; using vu32 = volatile unsigned int; + using vs32 = volatile signed int; using s8 = signed char; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; @@ -954,6 +954,10 @@ class LinkWireless { s8 asyncACKTimerId; }; + /** + * @brief LinkWireless configuration. + * \warning `deactivate()` first, change the config, and `activate()` again! + */ Config config; private: diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 215d386..cdeb6b8 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -1,6 +1,18 @@ #ifndef LINK_COMMON_H #define LINK_COMMON_H +/** + * @brief Enable mGBA debug logging. + */ +#ifndef LINK_ENABLE_DEBUG_LOGS +#define LINK_ENABLE_DEBUG_LOGS 0 +#endif + +#if LINK_ENABLE_DEBUG_LOGS != 0 +#include +#include +#endif + /** * @brief This namespace contains shared code between all libraries. * \warning Most of these things are borrowed from libtonc. @@ -13,11 +25,14 @@ using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; -using vs32 = volatile signed int; -using vu32 = volatile unsigned int; using s16 = signed short; using s8 = signed char; +using vu32 = volatile unsigned int; +using vs32 = volatile signed int; +using vu16 = volatile unsigned short; +using vs16 = volatile signed short; + // Structs struct _TMR_REC { @@ -55,41 +70,18 @@ typedef struct { constexpr u32 _REG_BASE = 0x04000000; -inline volatile u16& _REG_RCNT = - *reinterpret_cast(_REG_BASE + 0x0134); - -inline volatile u16& _REG_SIOCNT = - *reinterpret_cast(_REG_BASE + 0x0128); - -inline volatile u32& _REG_SIODATA32 = - *reinterpret_cast(_REG_BASE + 0x0120); - -inline volatile u16& _REG_SIODATA8 = - *reinterpret_cast(_REG_BASE + 0x012A); - -inline volatile u16& _REG_SIOMLT_SEND = - *reinterpret_cast(_REG_BASE + 0x012A); - -inline volatile u16* const _REG_SIOMULTI = - reinterpret_cast(_REG_BASE + 0x0120); - -inline volatile u16& _REG_VCOUNT = - *reinterpret_cast(_REG_BASE + 0x0006); - -inline volatile u16& _REG_KEYS = - *reinterpret_cast(_REG_BASE + 0x0130); - -inline volatile u16& _REG_TM1CNT_L = - *reinterpret_cast(_REG_BASE + 0x0104); - -inline volatile u16& _REG_TM1CNT_H = - *reinterpret_cast(_REG_BASE + 0x0106); - -inline volatile u16& _REG_TM2CNT_L = - *reinterpret_cast(_REG_BASE + 0x0108); - -inline volatile u16& _REG_TM2CNT_H = - *reinterpret_cast(_REG_BASE + 0x010a); +inline vu16& _REG_RCNT = *reinterpret_cast(_REG_BASE + 0x0134); +inline vu16& _REG_SIOCNT = *reinterpret_cast(_REG_BASE + 0x0128); +inline vu32& _REG_SIODATA32 = *reinterpret_cast(_REG_BASE + 0x0120); +inline vu16& _REG_SIODATA8 = *reinterpret_cast(_REG_BASE + 0x012A); +inline vu16& _REG_SIOMLT_SEND = *reinterpret_cast(_REG_BASE + 0x012A); +inline vu16* const _REG_SIOMULTI = reinterpret_cast(_REG_BASE + 0x0120); +inline vu16& _REG_VCOUNT = *reinterpret_cast(_REG_BASE + 0x0006); +inline vu16& _REG_KEYS = *reinterpret_cast(_REG_BASE + 0x0130); +inline vu16& _REG_TM1CNT_L = *reinterpret_cast(_REG_BASE + 0x0104); +inline vu16& _REG_TM1CNT_H = *reinterpret_cast(_REG_BASE + 0x0106); +inline vu16& _REG_TM2CNT_L = *reinterpret_cast(_REG_BASE + 0x0108); +inline vu16& _REG_TM2CNT_H = *reinterpret_cast(_REG_BASE + 0x010a); inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); @@ -267,6 +259,26 @@ class ObjectQueue { vu32 count = 0; }; +// mGBA Logging + +#if LINK_ENABLE_DEBUG_LOGS != 0 +inline vu16& _REG_LOG_ENABLE = *reinterpret_cast(0x4FFF780); +inline vu16& _REG_LOG_LEVEL = *reinterpret_cast(0x4FFF700); + +static inline void log(const char* fmt, ...) { + _REG_LOG_ENABLE = 0xC0DE; + + va_list args; + va_start(args, fmt); + + char* const log = (char*)0x4FFF600; + vsnprintf(log, 0x100, fmt, args); + _REG_LOG_LEVEL = 0x102; // Level: WARN + + va_end(args); +} +#endif + } // namespace Link #endif // LINK_COMMON_H diff --git a/lib/_link_tonc_mgba.h b/lib/_link_tonc_mgba.h deleted file mode 100644 index 340d67a..0000000 --- a/lib/_link_tonc_mgba.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef LINK_TONC_MGBA -#define LINK_TONC_MGBA - -#include -#include -#include "tonc_types.h" - -// -------------------------------------------------------------------- -// STRUCTS -// -------------------------------------------------------------------- - -typedef enum LogLevel { - LOG_FATAL = 0x100, - LOG_ERR = 0x101, - LOG_WARN = 0x102, - LOG_INFO = 0x103 -} LogLevel; - -// -------------------------------------------------------------------- -// MACROS -// -------------------------------------------------------------------- - -#define REG_LOG_ENABLE *(vu16*)0x4FFF780 -#define REG_LOG_LEVEL *(vu16*)0x4FFF700 - -// -------------------------------------------------------------------- -// INLINES -// -------------------------------------------------------------------- - -static inline void mgbalog(const char* fmt, ...) { - REG_LOG_ENABLE = 0xC0DE; - - va_list args; - va_start(args, fmt); - - char* const log = (char*)0x4FFF600; - vsnprintf(log, 0x100, fmt, args); - REG_LOG_LEVEL = LogLevel::LOG_WARN; - - va_end(args); -} - -#endif // LINK_TONC_MGBA - -// EOF \ No newline at end of file From feca76d946aa300077d459d4b7790139eb10f06b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 05:55:27 -0300 Subject: [PATCH 080/195] Making read configuration a part of the initialization ritual --- examples/LinkMobile_demo/src/main.cpp | 9 +- lib/LinkMobile.hpp | 183 ++++++++++++++++---------- 2 files changed, 117 insertions(+), 75 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index f1c521c..c00f8c4 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -56,7 +56,6 @@ start: firstTime = false; } -again: // (3) Initialize the library linkMobile->activate(); @@ -116,6 +115,9 @@ std::string toStr(char* chars, int size) { void readConfiguration() { log("Reading..."); + while (linkMobile->getState() != LinkMobile::State::SESSION_ACTIVE) + ; + LinkMobile::ConfigurationData data; if (!linkMobile->readConfiguration(data)) { log("Read failed :("); @@ -136,9 +138,8 @@ void readConfiguration() { toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + "\nPOP Server:\n " + toStr(data.popServer, 19) + "\n\nMode: " + - (linkMobile->linkSPI->getDataSize() == LinkSPI::DataSize::SIZE_32BIT - ? "SIO32" - : "SIO8")); + (linkMobile->getDataSize() == LinkSPI::DataSize::SIZE_32BIT ? "SIO32" + : "SIO8")); while (true) ; } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 6874a19..787efb7 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -43,7 +43,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #if LINK_ENABLE_DEBUG_LOGS != 0 #define _LMLOG_(...) Link::log(__VA_ARGS__) #else -#define _LMLOG_(str) +#define _LMLOG_(...) #endif class LinkMobile { @@ -68,6 +68,7 @@ class LinkMobile { static constexpr int DEVICE_ADAPTER_RED = 0xB; static constexpr int ACK_SENDER = 0; static constexpr int CONFIGURATION_DATA_SIZE = 192; + static constexpr int CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; static constexpr int COMMAND_BEGIN_SESSION = 0x10; static constexpr int COMMAND_END_SESSION = 0x11; static constexpr int COMMAND_DIAL_TELEPHONE = 0x12; @@ -173,61 +174,20 @@ class LinkMobile { stop(); } - // TODO: REFACTOR bool readConfiguration(ConfigurationData& configurationData) { - // while (linkSPI->getAsyncState() != LinkSPI::AsyncState::IDLE) - // ; // wait - - // _LMLOG_("READING CONFIGURATION!!!"); - // // TODO: FIX THIS MESS - // addData(1, true); - // auto sio32Response = - // sendCommandWithResponse(buildCommand(COMMAND_SIO32, true)); - // if (sio32Response.result != CommandResult::SUCCESS) { - // _LMLOG_("SIO32 FAILED!!!"); - // return false; - // } - // if (sio32Response.command.header.commandId != (COMMAND_RESET | OR_VALUE)) - // { - // wait(PING_WAIT); - // linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, - // LinkSPI::DataSize::SIZE_32BIT); - // _LMLOG_("SIO32 ACTIVATED!!! now sending read configuration"); - // } else { - // _LMLOG_("Adapter returned RESET, keeping SIO8 mode"); - // } - - // static constexpr u8 CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / - // 2; u8* configurationDataBytes = (u8*)&configurationData; - - // addData(0, true); - // addData(CONFIGURATION_DATA_CHUNK); - // auto response1 = sendCommandWithResponse( - // buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); - // if (response1.result != CommandResult::SUCCESS || - // response1.command.header.size != CONFIGURATION_DATA_CHUNK + 1) - // return false; - - // addData(CONFIGURATION_DATA_CHUNK, true); - // addData(CONFIGURATION_DATA_CHUNK); - // auto response2 = sendCommandWithResponse( - // buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); - // if (response2.result != CommandResult::SUCCESS || - // response2.command.header.size != CONFIGURATION_DATA_CHUNK + 1) - // return false; - - // u8* response1Bytes = (u8*)&response1.command.data.bytes; - // u8* response2Bytes = (u8*)&response2.command.data.bytes; - // for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) - // configurationDataBytes[i] = response1Bytes[1 + i]; - // for (u32 i = 0; i < CONFIGURATION_DATA_CHUNK; i++) - // configurationDataBytes[CONFIGURATION_DATA_CHUNK + i] = - // response2Bytes[1 + i]; + if (state != SESSION_ACTIVE) + return false; + configurationData = adapterConfiguration.fields; return true; } [[nodiscard]] State getState() { return state; } + + [[nodiscard]] LinkSPI::DataSize getDataSize() { + return linkSPI->getDataSize(); + } + Error getLastError(bool clear = true) { Error error = lastError; if (clear) @@ -294,7 +254,25 @@ class LinkMobile { */ Config config; - // private: // TODO: RECOVER + private: + union AdapterConfiguration { + ConfigurationData fields; + char bytes[CONFIGURATION_DATA_SIZE]; + + bool isValid() { return calculatedChecksum() == reportedChecksum(); } + + u16 calculatedChecksum() { + u16 result = 0; + for (u32 i = 0; i < CONFIGURATION_DATA_SIZE - 2; i++) + result += bytes[i]; + return result; + } + + u16 reportedChecksum() { + return buildU16(fields.checksumHigh, fields.checksumLow); + } + }; + struct MagicBytes { u8 magic1 = COMMAND_MAGIC_VALUE1; u8 magic2 = COMMAND_MAGIC_VALUE2; @@ -384,6 +362,7 @@ class LinkMobile { sizeof(MagicBytes) + sizeof(PacketHeader); static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); + AdapterConfiguration adapterConfiguration; AsyncCommand asyncCommand; u32 waitFrames = 0; LinkSPI* linkSPI = new LinkSPI(); @@ -399,19 +378,21 @@ class LinkMobile { switch (state) { case WAITING_TO_START: { waitFrames--; + if (waitFrames == 0) { - auto command = buildCommand(COMMAND_END_SESSION, true); - sendCommandAsync(command, true); setState(ENDING_SESSION); + cmdEndSession(); } break; } case WAITING_TO_SWITCH: { waitFrames--; + if (waitFrames == 0) { linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_32BIT); - setState(SESSION_ACTIVE); + setState(READING_CONFIGURATION); + cmdReadConfigurationData(0, CONFIGURATION_DATA_CHUNK); } break; } @@ -421,9 +402,9 @@ class LinkMobile { } void processAsyncCommand() { - // TODO: Command success log - // TODO: PARSE ERRORS + // TODO: ADAPTER NOT CONNECTED ERROR + /* auto remoteCommand = response.command.header.commandId; if (remoteCommand == COMMAND_ERROR_STATUS) { @@ -437,12 +418,19 @@ class LinkMobile { } } */ + _LMLOG_("%s $%X [%d]", + asyncCommand.direction == AsyncCommand::Direction::SENDING ? ">!" + : " %d", oldState, newState); + (void)oldState; } void reset() { @@ -545,6 +582,7 @@ class LinkMobile { void resetState() { setState(NEEDS_RESET); + this->adapterConfiguration = AdapterConfiguration{}; this->asyncCommand.isActive = false; this->waitFrames = 0; this->hasPendingTransfer = false; @@ -560,8 +598,8 @@ class LinkMobile { linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_8BIT); - transferAsync(0); setState(PINGING); + transferAsync(0); } void stopTimer() { @@ -576,6 +614,8 @@ class LinkMobile { } void sendCommandAsync(Command command, bool expectsResponse = false) { + _LMLOG_(">> $%X [%d]%s", command.header.commandId, command.header.size, + expectsResponse ? " (...)" : ""); asyncCommand.reset(); asyncCommand.cmd = command; asyncCommand.expectsResponse = expectsResponse; @@ -588,6 +628,7 @@ class LinkMobile { } void receiveCommandAsync() { + _LMLOG_("<< ..."); asyncCommand.reset(); asyncCommand.direction = AsyncCommand::Direction::RECEIVING; @@ -850,7 +891,6 @@ class LinkMobile { } void transferAsync(u32 data) { - _LMLOG_(">> %X", data); hasPendingTransfer = true; pendingTransfer = data; startTimer(WAIT_TICKS[isSIO32Mode()]); @@ -860,14 +900,15 @@ class LinkMobile { return linkSPI->getDataSize() == LinkSPI::DataSize::SIZE_32BIT; } - u32 buildU32(u8 msB, u8 byte2, u8 byte3, u8 lsB) { + static u32 buildU32(u8 msB, u8 byte2, u8 byte3, u8 lsB) { return ((msB & 0xFF) << 24) | ((byte2 & 0xFF) << 16) | ((byte3 & 0xFF) << 8) | (lsB & 0xFF); } - u16 msB32(u32 value) { return value >> 16; } - u16 lsB32(u32 value) { return value & 0xffff; } - u8 msB16(u16 value) { return value >> 8; } - u8 lsB16(u16 value) { return value & 0xff; } + static u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } + static u16 msB32(u32 value) { return value >> 16; } + static u16 lsB32(u32 value) { return value & 0xffff; } + static u8 msB16(u16 value) { return value >> 8; } + static u8 lsB16(u16 value) { return value & 0xff; } }; extern LinkMobile* linkMobile; From c6e4b3bd214153a08cfeaee4a2d3df9503029bed Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 10:08:16 -0300 Subject: [PATCH 081/195] Parsing errors, detecting timeouts --- lib/LinkMobile.hpp | 224 ++++++++++++++++++++++++--------------------- 1 file changed, 118 insertions(+), 106 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 787efb7..f0f04ec 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -22,16 +22,9 @@ #include "_link_common.hpp" -#include // TODO: for std::strlen #include "LinkGPIO.hpp" #include "LinkSPI.hpp" -/** - * @brief ... - * - */ -#define LINK_MOBILE_TODO_KNOB 10 - static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 @@ -54,6 +47,7 @@ class LinkMobile { static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int PING_WAIT_FRAMES = 7; + static constexpr int TIMEOUT_INIT_FRAMES = 30; static constexpr int ADAPTER_WAITING = 0xD2; static constexpr u32 ADAPTER_WAITING_32BIT = 0xD2D2D2D2; static constexpr int GBA_WAITING = 0x4B; @@ -111,14 +105,35 @@ class LinkMobile { SESSION_ACTIVE_ISP }; - enum Error { - // User errors - NONE, - WRONG_STATE, - // Communication errors - NOT_CONNECTED, - FAILURE_ACTIVATING_SIO32, - FAILURE_READING_CONFIGURATION, + enum CommandResult { + PENDING, + SUCCESS, + NOT_WAITING, + INVALID_DEVICE_ID, + INVALID_COMMAND_ACK, + INVALID_MAGIC_BYTES, + WEIRD_DATA_SIZE, + WRONG_CHECKSUM, + ERROR, + WEIRD_ERROR, + TIMEOUT + }; + + struct Error { + enum Type { + NONE, + ADAPTER_NOT_CONNECTED, + UNEXPECTED_FAILURE, + WEIRD_RESPONSE, + BAD_CONFIGURATION_CHECKSUM + }; + + Error::Type type = Error::Type::NONE; + State state = State::NEEDS_RESET; + u8 cmdId = 0; + CommandResult cmdResult = CommandResult::PENDING; + u8 cmdErrorCode = 0; + bool cmdIsSending = false; }; struct ConfigurationData { @@ -151,7 +166,7 @@ class LinkMobile { * @brief ... */ void activate() { - lastError = NONE; + lastError = {}; LINK_MOBILE_BARRIER; isEnabled = false; @@ -168,7 +183,7 @@ class LinkMobile { } void deactivate() { - lastError = NONE; + lastError = {}; isEnabled = false; resetState(); stop(); @@ -189,9 +204,9 @@ class LinkMobile { } Error getLastError(bool clear = true) { - Error error = lastError; + auto error = lastError; if (clear) - lastError = NONE; + lastError = {}; return error; } @@ -201,6 +216,12 @@ class LinkMobile { if (!isEnabled) return; + if (state > NEEDS_RESET && state < SESSION_ACTIVE) { + timeoutFrames++; + if (timeoutFrames >= TIMEOUT_INIT_FRAMES) + return abort(Error::Type::ADAPTER_NOT_CONNECTED); + } + processNewFrame(); } @@ -303,20 +324,6 @@ class LinkMobile { PacketChecksum checksum; }; - enum CommandResult { - PENDING, - SUCCESS, - NOT_WAITING, - INVALID_DEVICE_ID, - INVALID_COMMAND_ACK, - INVALID_MAGIC_BYTES, - WEIRD_DATA_SIZE, - WRONG_CHECKSUM, - ERROR, - UNEXPECTED_RESPONSE, - TIMEOUT - }; - struct CommandResponse { CommandResult result = CommandResult::PENDING; Command command; @@ -333,6 +340,7 @@ class LinkMobile { Direction direction; u16 expectedChecksum; bool expectsResponse; + u8 errorCode; bool isActive = false; void reset() { @@ -343,7 +351,8 @@ class LinkMobile { direction = AsyncCommand::Direction::SENDING; expectedChecksum = 0; expectsResponse = false; - isActive = true; + errorCode = 0; + isActive = false; } bool respondsTo(u8 commandId) { @@ -351,10 +360,24 @@ class LinkMobile { cmd.header.commandId == (commandId | OR_VALUE); } + void finish() { + if (cmd.header.commandId == COMMAND_ERROR_STATUS) { + if (cmd.header.size != 2) { + result = CommandResult::WEIRD_ERROR; + errorCode = cmd.data.bytes[1]; + } else { + result = CommandResult::ERROR; + } + } else { + result = CommandResult::SUCCESS; + } + + state = AsyncCommand::State::COMPLETED; + } + void fail(CommandResult _result) { result = _result; state = AsyncCommand::State::COMPLETED; - // TODO: Command fail log } }; @@ -365,13 +388,14 @@ class LinkMobile { AdapterConfiguration adapterConfiguration; AsyncCommand asyncCommand; u32 waitFrames = 0; + u32 timeoutFrames = 0; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; PacketData nextCommandData; u32 nextCommandDataSize = 0; bool hasPendingTransfer = false; u32 pendingTransfer = 0; - Error lastError = NONE; + Error lastError = {}; volatile bool isEnabled = false; void processNewFrame() { @@ -402,36 +426,23 @@ class LinkMobile { } void processAsyncCommand() { - // TODO: PARSE ERRORS - // TODO: ADAPTER NOT CONNECTED ERROR - - /* - auto remoteCommand = response.command.header.commandId; - if (remoteCommand == COMMAND_ERROR_STATUS) { - if (response.command.header.size != 2 || - response.command.data.bytes[0] != command.header.commandId) { - response.result = CommandResult::UNEXPECTED_RESPONSE; - return response; - } else { - response.result = CommandResult::ERROR; - return response; - } + if (asyncCommand.result != CommandResult::SUCCESS) { + if (state >= STARTING_SESSION && state < SESSION_ACTIVE) + return abort(Error::Type::UNEXPECTED_FAILURE); } - */ + _LMLOG_("%s $%X [%d]", asyncCommand.direction == AsyncCommand::Direction::SENDING ? ">!" : " %d", oldState, newState); (void)oldState; } + void abort(Error::Type errorType) { + lastError = + Error{.type = errorType, + .state = state, + .cmdId = (u8)(asyncCommand.cmd.header.commandId & (~OR_VALUE)), + .cmdResult = asyncCommand.result, + .cmdErrorCode = asyncCommand.errorCode, + .cmdIsSending = + asyncCommand.direction == AsyncCommand::Direction::SENDING}; + + _LMLOG_( + "!! aborted:\n error:%d\n cmdId=%s%d\n cmdResult=%d\n " + "cmdErrorCode=%d", + lastError.type, lastError.cmdIsSending ? ">" : "<", lastError.cmdId, + lastError.cmdResult, lastError.cmdErrorCode); + + resetState(); + stop(); + } + void reset() { resetState(); stop(); @@ -583,8 +597,10 @@ class LinkMobile { setState(NEEDS_RESET); this->adapterConfiguration = AdapterConfiguration{}; - this->asyncCommand.isActive = false; + this->asyncCommand.reset(); this->waitFrames = 0; + this->timeoutFrames = 0; + this->nextCommandDataSize = 0; this->hasPendingTransfer = false; this->pendingTransfer = 0; } @@ -619,6 +635,7 @@ class LinkMobile { asyncCommand.reset(); asyncCommand.cmd = command; asyncCommand.expectsResponse = expectsResponse; + asyncCommand.isActive = true; if (isSIO32Mode()) // Magic+Header advance32(buildU32(command.magicBytes.magic1, command.magicBytes.magic2, @@ -631,6 +648,7 @@ class LinkMobile { _LMLOG_("<< ..."); asyncCommand.reset(); asyncCommand.direction = AsyncCommand::Direction::RECEIVING; + asyncCommand.isActive = true; if (isSIO32Mode()) transferAsync(GBA_WAITING_32BIT); @@ -666,8 +684,7 @@ class LinkMobile { // Acknowledgement Signal (3) if (newData != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); - asyncCommand.result = CommandResult::SUCCESS; - asyncCommand.state = AsyncCommand::State::COMPLETED; + asyncCommand.finish(); } } @@ -717,8 +734,7 @@ class LinkMobile { return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); if (lsB16(ackData) != (asyncCommand.cmd.header.commandId ^ OR_VALUE)) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); - asyncCommand.result = CommandResult::SUCCESS; - asyncCommand.state = AsyncCommand::State::COMPLETED; + asyncCommand.finish(); } } @@ -770,8 +786,7 @@ class LinkMobile { // Acknowledgement Signal (2) if (newData != ACK_SENDER) return asyncCommand.fail(CommandResult::INVALID_COMMAND_ACK); - asyncCommand.result = CommandResult::SUCCESS; - asyncCommand.state = AsyncCommand::State::COMPLETED; + asyncCommand.finish(); } } @@ -849,8 +864,7 @@ class LinkMobile { u32 ackData = msB32(newData); if (!isSupportedAdapter(msB16(ackData)) || lsB16(ackData) != ACK_SENDER) return asyncCommand.fail(CommandResult::INVALID_DEVICE_ID); - asyncCommand.result = CommandResult::SUCCESS; - asyncCommand.state = AsyncCommand::State::COMPLETED; + asyncCommand.finish(); } } @@ -928,5 +942,3 @@ inline void LINK_MOBILE_ISR_TIMER() { #undef _LMLOG_ #endif // LINK_MOBILE_H - -// TODO: Implement state timeouts (e.g. PINGING) From f6a7f3b2e614f110f07bbe6091ff5e8643bc2376 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 10:25:27 -0300 Subject: [PATCH 082/195] Updating README and fixing mobile stuff --- README.md | 6 ++++-- examples/LinkMobile_demo/src/main.cpp | 22 ++++------------------ lib/LinkMobile.hpp | 24 ++++++++++++------------ 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index beb274e..684e33c 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,9 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. * The examples can be tested on real GBAs or using emulators. * For `LinkCable`/`LinkWireless`/`LinkUniversal`, there are stress tests that you can use to tweak your configuration. -To learn implementation details, you might also want to check out the [docs](docs) folder, which contains important documentation. +> The example ROMs were compiled using [devkitPro](https://devkitpro.org) with GCC `14.1.0`. + +> To learn implementation details, you might also want to check out the [docs](docs) folder, which contains important documentation. ### Makefile actions (for all examples) @@ -461,4 +463,4 @@ Name | Return type | Description |DATA --> SO | |VCC ---> VCC| |GND ---> GND| -``` \ No newline at end of file +``` diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index c00f8c4..c0214c6 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -16,7 +16,6 @@ void waitFor(u16 key); void wait(u32 verticalLines); void hang(); -LinkMobile::Error lastError; LinkMobile* linkMobile = NULL; void init() { @@ -31,14 +30,9 @@ int main() { start: // Options - log("LinkMobile_demo (v6.7.0)\n\n\n\n" + log("LinkMobile_demo (v7.0.0)\n\n" "Press A to start"); waitFor(KEY_A); - // u16 initialKeys = ~REG_KEYS & KEY_ANY; - // forwarding = !(initialKeys & KEY_LEFT); - // retransmission = !(initialKeys & KEY_UP); - // maxPlayers = (initialKeys & KEY_B) ? 2 : LINK_MOBILE_MAX_PLAYERS; - // asyncACK = initialKeys & KEY_START; // (1) Create a LinkMobile instance linkMobile = new LinkMobile(); @@ -59,16 +53,16 @@ start: // (3) Initialize the library linkMobile->activate(); - bool activating = false; bool reading = false; while (true) { u16 keys = ~REG_KEYS & KEY_ANY; // Menu - log(std::string("") + + log(std::string("") + "State = " + std::to_string(linkMobile->getState()) + + "\n\n" + "L = Read Configuration\n\n (DOWN = ok)\n " - "(SELECT = cancel)\n (START = reactivate)"); + "(SELECT = stop)"); // SELECT = back if (keys & KEY_SELECT) { @@ -78,14 +72,6 @@ start: goto start; } - // START = Activate - if ((keys & KEY_START) && !activating) { - activating = true; - activate(); - } - if (activating && !(keys & KEY_START)) - activating = false; - // L = Read Configuration if ((keys & KEY_L) && !reading) { reading = true; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index f0f04ec..1500121 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -166,7 +166,7 @@ class LinkMobile { * @brief ... */ void activate() { - lastError = {}; + error = {}; LINK_MOBILE_BARRIER; isEnabled = false; @@ -183,7 +183,7 @@ class LinkMobile { } void deactivate() { - lastError = {}; + error = {}; isEnabled = false; resetState(); stop(); @@ -203,11 +203,11 @@ class LinkMobile { return linkSPI->getDataSize(); } - Error getLastError(bool clear = true) { - auto error = lastError; + Error getError(bool clear = true) { + auto err = error; if (clear) - lastError = {}; - return error; + error = {}; + return err; } ~LinkMobile() { delete linkSPI; } @@ -395,7 +395,7 @@ class LinkMobile { u32 nextCommandDataSize = 0; bool hasPendingTransfer = false; u32 pendingTransfer = 0; - Error lastError = {}; + Error error = {}; volatile bool isEnabled = false; void processNewFrame() { @@ -568,7 +568,7 @@ class LinkMobile { } void abort(Error::Type errorType) { - lastError = + error = Error{.type = errorType, .state = state, .cmdId = (u8)(asyncCommand.cmd.header.commandId & (~OR_VALUE)), @@ -578,10 +578,10 @@ class LinkMobile { asyncCommand.direction == AsyncCommand::Direction::SENDING}; _LMLOG_( - "!! aborted:\n error:%d\n cmdId=%s%d\n cmdResult=%d\n " - "cmdErrorCode=%d", - lastError.type, lastError.cmdIsSending ? ">" : "<", lastError.cmdId, - lastError.cmdResult, lastError.cmdErrorCode); + "!! aborted:\n error: %d\n cmdId: %s$%X\n cmdResult: %d\n " + "cmdErrorCode: %d", + error.type, error.cmdIsSending ? ">" : "<", error.cmdId, + error.cmdResult, error.cmdErrorCode); resetState(); stop(); From 9d5ede98ee8b0a69d99dd1f84696bdf090d7102f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 11:07:08 -0300 Subject: [PATCH 083/195] Avoiding flicker in example --- examples/LinkMobile_demo/src/main.cpp | 4 ++++ lib/LinkMobile.hpp | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index c0214c6..7c98439 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -130,10 +130,14 @@ void readConfiguration() { ; } +std::string lastLoggedText = ""; void log(std::string text) { + if (text == lastLoggedText) + return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); + lastLoggedText = text; } void waitFor(u16 key) { diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 1500121..860a7e7 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -942,3 +942,8 @@ inline void LINK_MOBILE_ISR_TIMER() { #undef _LMLOG_ #endif // LINK_MOBILE_H + +// TODO: Stop keeps running commands and changing state +// TODO: Error screen +// TODO: Keep adapter alive with Wait For Telephone Call +// TODO: Write text fast From 36efafde17cc884b56d8defed2c1d4d2d53f393c Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 21:39:02 -0300 Subject: [PATCH 084/195] Preventing UB in wireless and mobile examples after disabling the adapter --- examples/LinkMobile_demo/src/main.cpp | 25 +++++++++---------- examples/LinkWireless_demo/src/main.cpp | 32 ++++++++++++------------- lib/LinkMobile.hpp | 2 -- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 7c98439..c2b0f7b 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -26,8 +26,6 @@ void init() { int main() { init(); - bool firstTime = true; - start: // Options log("LinkMobile_demo (v7.0.0)\n\n" @@ -37,18 +35,14 @@ start: // (1) Create a LinkMobile instance linkMobile = new LinkMobile(); - if (firstTime) { - // (2) Add the required interrupt service routines - interrupt_init(); - interrupt_set_handler(INTR_VBLANK, LINK_MOBILE_ISR_VBLANK); - interrupt_enable(INTR_VBLANK); - interrupt_set_handler(INTR_SERIAL, LINK_MOBILE_ISR_SERIAL); - interrupt_enable(INTR_SERIAL); - interrupt_set_handler(INTR_TIMER3, LINK_MOBILE_ISR_TIMER); - interrupt_enable(INTR_TIMER3); - - firstTime = false; - } + // (2) Add the required interrupt service routines + interrupt_init(); + interrupt_set_handler(INTR_VBLANK, LINK_MOBILE_ISR_VBLANK); + interrupt_enable(INTR_VBLANK); + interrupt_set_handler(INTR_SERIAL, LINK_MOBILE_ISR_SERIAL); + interrupt_enable(INTR_SERIAL); + interrupt_set_handler(INTR_TIMER3, LINK_MOBILE_ISR_TIMER); + interrupt_enable(INTR_TIMER3); // (3) Initialize the library linkMobile->activate(); @@ -67,6 +61,9 @@ start: // SELECT = back if (keys & KEY_SELECT) { linkMobile->deactivate(); + interrupt_disable(INTR_VBLANK); + interrupt_disable(INTR_SERIAL); + interrupt_disable(INTR_TIMER3); delete linkMobile; linkMobile = NULL; goto start; diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 5224146..0f3b74a 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -43,8 +43,6 @@ void init() { int main() { init(); - bool firstTime = true; - start: // Options log("LinkWireless_demo (v7.0.0)\n\n\n\n" @@ -67,22 +65,18 @@ start: LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, asyncACK ? 0 : -1); // linkWireless->debug = [](std::string str) { log(str); }; - if (firstTime) { - // (2) Add the required interrupt service routines - interrupt_init(); - interrupt_set_handler(INTR_VBLANK, LINK_WIRELESS_ISR_VBLANK); - interrupt_enable(INTR_VBLANK); - interrupt_set_handler(INTR_SERIAL, LINK_WIRELESS_ISR_SERIAL); - interrupt_enable(INTR_SERIAL); - interrupt_set_handler(INTR_TIMER3, LINK_WIRELESS_ISR_TIMER); - interrupt_enable(INTR_TIMER3); + // (2) Add the required interrupt service routines + interrupt_init(); + interrupt_set_handler(INTR_VBLANK, LINK_WIRELESS_ISR_VBLANK); + interrupt_enable(INTR_VBLANK); + interrupt_set_handler(INTR_SERIAL, LINK_WIRELESS_ISR_SERIAL); + interrupt_enable(INTR_SERIAL); + interrupt_set_handler(INTR_TIMER3, LINK_WIRELESS_ISR_TIMER); + interrupt_enable(INTR_TIMER3); - // (only required when using async ACK) - interrupt_set_handler(INTR_TIMER0, LINK_WIRELESS_ISR_ACK_TIMER); - interrupt_enable(INTR_TIMER0); - - firstTime = false; - } + // (only required when using async ACK) + interrupt_set_handler(INTR_TIMER0, LINK_WIRELESS_ISR_ACK_TIMER); + interrupt_enable(INTR_TIMER0); // (3) Initialize the library linkWireless->activate(); @@ -106,6 +100,10 @@ start: // SELECT = back if (keys & KEY_SELECT) { linkWireless->deactivate(); + interrupt_disable(INTR_VBLANK); + interrupt_disable(INTR_SERIAL); + interrupt_disable(INTR_TIMER3); + interrupt_disable(INTR_TIMER0); delete linkWireless; linkWireless = NULL; goto start; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 860a7e7..aba9d70 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -943,7 +943,5 @@ inline void LINK_MOBILE_ISR_TIMER() { #endif // LINK_MOBILE_H -// TODO: Stop keeps running commands and changing state // TODO: Error screen // TODO: Keep adapter alive with Wait For Telephone Call -// TODO: Write text fast From 28d4738daacf19d35258cecc467027beb7e732dd Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 15 Aug 2024 22:06:03 -0300 Subject: [PATCH 085/195] Adding error logs and improving stability --- examples/LinkMobile_demo/src/main.cpp | 166 ++++++++++++++++++++------ lib/LinkMobile.hpp | 59 +++++---- 2 files changed, 167 insertions(+), 58 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index c2b0f7b..3d907dd 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -10,12 +10,18 @@ #include "../../_lib/interrupt.h" void activate(); -void readConfiguration(); +std::string readConfiguration(); +std::string getStateString(LinkMobile::State state); +std::string getErrorString(LinkMobile::Error::Type errorType); +std::string getResultString(LinkMobile::CommandResult cmdResult); void log(std::string text); void waitFor(u16 key); void wait(u32 verticalLines); void hang(); +template +[[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1); + LinkMobile* linkMobile = NULL; void init() { @@ -53,10 +59,29 @@ start: u16 keys = ~REG_KEYS & KEY_ANY; // Menu - log(std::string("") + "State = " + std::to_string(linkMobile->getState()) + - "\n\n" + - "L = Read Configuration\n\n (DOWN = ok)\n " - "(SELECT = stop)"); + std::string output = ""; + bool wait = false; + output += "State = " + getStateString(linkMobile->getState()) + "\n\n"; + + auto error = linkMobile->getError(); + bool hasError = error.type != LinkMobile::Error::NONE; + if (hasError) { + output += "ERROR\n"; + output += " Type: " + getErrorString(error.type) + "\n"; + output += " State: " + getStateString(error.state) + "\n"; + output += " CmdID: " + std::string(error.cmdIsSending ? ">" : "<") + + "$" + toHex(error.cmdId) + "\n"; + output += " CmdResult: " + getResultString(error.cmdResult) + "\n"; + output += + " CmdErrorCode: " + std::to_string(error.cmdErrorCode) + "\n\n"; + + output += " (SELECT = stop)"; + } else if (linkMobile->getState() == LinkMobile::SESSION_ACTIVE) { + output += "L = Read Configuration\n\n"; + output += " (DOWN = ok)\n (SELECT = stop)"; + } else { + output += " (SELECT = stop)"; + } // SELECT = back if (keys & KEY_SELECT) { @@ -72,12 +97,16 @@ start: // L = Read Configuration if ((keys & KEY_L) && !reading) { reading = true; - readConfiguration(); + output = readConfiguration(); + wait = true; } if (reading && !(keys & KEY_L)) reading = false; VBlankIntrWait(); + log(output); + if (wait) + hang(); } return 0; @@ -95,36 +124,96 @@ std::string toStr(char* chars, int size) { return std::string(copiedChars); } -void readConfiguration() { - log("Reading..."); - - while (linkMobile->getState() != LinkMobile::State::SESSION_ACTIVE) - ; - +std::string readConfiguration() { LinkMobile::ConfigurationData data; - if (!linkMobile->readConfiguration(data)) { - log("Read failed :("); - hang(); - return; - } + if (!linkMobile->readConfiguration(data)) + return "Read failed :("; - log("Magic:\n " + toStr(data.magic, 2) + "\nIsRegistering:\n " + - (data.isRegistering ? "Yes" : "No") + "\nPrimary DNS:\n " + - std::to_string(data.primaryDNS[0]) + "." + - std::to_string(data.primaryDNS[1]) + "." + - std::to_string(data.primaryDNS[2]) + "." + - std::to_string(data.primaryDNS[3]) + "\nSecondary DNS:\n " + - std::to_string(data.secondaryDNS[0]) + "." + - std::to_string(data.secondaryDNS[1]) + "." + - std::to_string(data.secondaryDNS[2]) + "." + - std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + - toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + - "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + "\nPOP Server:\n " + - toStr(data.popServer, 19) + "\n\nMode: " + - (linkMobile->getDataSize() == LinkSPI::DataSize::SIZE_32BIT ? "SIO32" - : "SIO8")); - while (true) - ; + return ("Magic:\n " + toStr(data.magic, 2) + "\nIsRegistering:\n " + + (data.isRegistering ? "Yes" : "No") + "\nPrimary DNS:\n " + + std::to_string(data.primaryDNS[0]) + "." + + std::to_string(data.primaryDNS[1]) + "." + + std::to_string(data.primaryDNS[2]) + "." + + std::to_string(data.primaryDNS[3]) + "\nSecondary DNS:\n " + + std::to_string(data.secondaryDNS[0]) + "." + + std::to_string(data.secondaryDNS[1]) + "." + + std::to_string(data.secondaryDNS[2]) + "." + + std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + + toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + + "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + + "\nPOP Server:\n " + toStr(data.popServer, 19) + "\n\nMode: " + + (linkMobile->getDataSize() == LinkSPI::DataSize::SIZE_32BIT + ? "SIO32" + : "SIO8")); +} + +std::string getStateString(LinkMobile::State state) { + switch (state) { + case LinkMobile::State::NEEDS_RESET: + return "NEEDS_RESET"; + case LinkMobile::State::PINGING: + return "PINGING"; + case LinkMobile::State::WAITING_TO_START: + return "WAITING_TO_START"; + case LinkMobile::State::ENDING_SESSION: + return "ENDING_SESSION"; + case LinkMobile::State::STARTING_SESSION: + return "STARTING_SESSION"; + case LinkMobile::State::ACTIVATING_SIO32: + return "ACTIVATING_SIO32"; + case LinkMobile::State::WAITING_TO_SWITCH: + return "WAITING_TO_SWITCH"; + case LinkMobile::State::READING_CONFIGURATION: + return "READING_CONFIGURATION"; + case LinkMobile::State::SESSION_ACTIVE: + return "SESSION_ACTIVE"; + default: + return "???"; + } +} + +std::string getErrorString(LinkMobile::Error::Type errorType) { + switch (errorType) { + case LinkMobile::Error::Type::ADAPTER_NOT_CONNECTED: + return "ADAPTER_NOT_CONNECTED"; + case LinkMobile::Error::Type::UNEXPECTED_FAILURE: + return "UNEXPECTED_FAILURE"; + case LinkMobile::Error::Type::WEIRD_RESPONSE: + return "WEIRD_RESPONSE"; + case LinkMobile::Error::Type::BAD_CONFIGURATION_CHECKSUM: + return "BAD_CONFIGURATION_CHECKSUM"; + default: + return "???"; + } +} + +std::string getResultString(LinkMobile::CommandResult cmdResult) { + switch (cmdResult) { + case LinkMobile::CommandResult::PENDING: + return "PENDING"; + case LinkMobile::CommandResult::SUCCESS: + return "SUCCESS"; + case LinkMobile::CommandResult::NOT_WAITING: + return "NOT_WAITING"; + case LinkMobile::CommandResult::INVALID_DEVICE_ID: + return "INVALID_DEVICE_ID"; + case LinkMobile::CommandResult::INVALID_COMMAND_ACK: + return "INVALID_COMMAND_ACK"; + case LinkMobile::CommandResult::INVALID_MAGIC_BYTES: + return "INVALID_MAGIC_BYTES"; + case LinkMobile::CommandResult::WEIRD_DATA_SIZE: + return "WEIRD_DATA_SIZE"; + case LinkMobile::CommandResult::WRONG_CHECKSUM: + return "WRONG_CHECKSUM"; + case LinkMobile::CommandResult::ERROR_CODE: + return "ERROR_CODE"; + case LinkMobile::CommandResult::WEIRD_ERROR_CODE: + return "WEIRD_ERROR_CODE"; + case LinkMobile::CommandResult::TIMEOUT: + return "TIMEOUT"; + default: + return "???"; + } } std::string lastLoggedText = ""; @@ -159,3 +248,12 @@ void wait(u32 verticalLines) { void hang() { waitFor(KEY_DOWN); } + +template +[[nodiscard]] std::string toHex(I w, size_t hex_len) { + static const char* digits = "0123456789ABCDEF"; + std::string rc(hex_len, '0'); + for (size_t i = 0, j = (hex_len - 1) * 4; i < hex_len; ++i, j -= 4) + rc[i] = digits[(w >> j) & 0x0f]; + return rc; +} diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index aba9d70..2bcee6f 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -114,9 +114,9 @@ class LinkMobile { INVALID_MAGIC_BYTES, WEIRD_DATA_SIZE, WRONG_CHECKSUM, - ERROR, - WEIRD_ERROR, - TIMEOUT + ERROR_CODE, + WEIRD_ERROR_CODE, + TIMEOUT // TODO: USE }; struct Error { @@ -203,12 +203,7 @@ class LinkMobile { return linkSPI->getDataSize(); } - Error getError(bool clear = true) { - auto err = error; - if (clear) - error = {}; - return err; - } + [[nodiscard]] Error getError() { return error; } ~LinkMobile() { delete linkSPI; } @@ -216,7 +211,7 @@ class LinkMobile { if (!isEnabled) return; - if (state > NEEDS_RESET && state < SESSION_ACTIVE) { + if (shouldAbortOnTimeout()) { timeoutFrames++; if (timeoutFrames >= TIMEOUT_INIT_FRAMES) return abort(Error::Type::ADAPTER_NOT_CONNECTED); @@ -363,10 +358,10 @@ class LinkMobile { void finish() { if (cmd.header.commandId == COMMAND_ERROR_STATUS) { if (cmd.header.size != 2) { - result = CommandResult::WEIRD_ERROR; - errorCode = cmd.data.bytes[1]; + result = CommandResult::WEIRD_ERROR_CODE; } else { - result = CommandResult::ERROR; + result = CommandResult::ERROR_CODE; + errorCode = cmd.data.bytes[1]; } } else { result = CommandResult::SUCCESS; @@ -427,8 +422,10 @@ class LinkMobile { void processAsyncCommand() { if (asyncCommand.result != CommandResult::SUCCESS) { - if (state >= STARTING_SESSION && state < SESSION_ACTIVE) + if (shouldAbortOnCommandFailure()) return abort(Error::Type::UNEXPECTED_FAILURE); + else + abort(Error::Type::UNEXPECTED_FAILURE, false); // (log the error) } _LMLOG_("%s $%X [%d]", @@ -536,7 +533,7 @@ class LinkMobile { } void cmdEndSession() { - sendCommandAsync(buildCommand(COMMAND_END_SESSION, true), true); + sendCommandAsync(buildCommand(COMMAND_END_SESSION), true); } void cmdSIO32() { @@ -550,6 +547,14 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true), true); } + bool shouldAbortOnTimeout() { + return state > NEEDS_RESET && state < SESSION_ACTIVE; + } + + bool shouldAbortOnCommandFailure() { + return state >= STARTING_SESSION && state < SESSION_ACTIVE; + } + void addData(u8 value, bool start = false) { if (start) { nextCommandDataSize = 0; @@ -567,8 +572,8 @@ class LinkMobile { (void)oldState; } - void abort(Error::Type errorType) { - error = + void abort(Error::Type errorType, bool fatal = true) { + auto newError = Error{.type = errorType, .state = state, .cmdId = (u8)(asyncCommand.cmd.header.commandId & (~OR_VALUE)), @@ -578,13 +583,18 @@ class LinkMobile { asyncCommand.direction == AsyncCommand::Direction::SENDING}; _LMLOG_( - "!! aborted:\n error: %d\n cmdId: %s$%X\n cmdResult: %d\n " + "!! %s:\n error: %d\n cmdId: %s$%X\n cmdResult: %d\n " "cmdErrorCode: %d", - error.type, error.cmdIsSending ? ">" : "<", error.cmdId, - error.cmdResult, error.cmdErrorCode); + fatal ? "aborted" : "failed", newError.type, + newError.cmdIsSending ? ">" : "<", newError.cmdId, newError.cmdResult, + newError.cmdErrorCode); + (void)newError; - resetState(); - stop(); + if (fatal) { + error = newError; + resetState(); + stop(); + } } void reset() { @@ -662,8 +672,10 @@ class LinkMobile { bool isAcknowledgement = asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; - if (!isAcknowledgement && newData != ADAPTER_WAITING) + if (!isAcknowledgement && newData != ADAPTER_WAITING) { + _LMLOG_("NOT WAITING: %X", newData); // TODO: REMOVE return asyncCommand.fail(CommandResult::NOT_WAITING); + } if (asyncCommand.transferred < mainSize) { // Magic Bytes (2) + Packet Header + Packet Data @@ -943,5 +955,4 @@ inline void LINK_MOBILE_ISR_TIMER() { #endif // LINK_MOBILE_H -// TODO: Error screen // TODO: Keep adapter alive with Wait For Telephone Call From b272ebafdbf0072377f01df234aa2de7a3380794 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 00:45:10 -0300 Subject: [PATCH 086/195] Adding gracefully shutdown method --- examples/LinkMobile_demo/src/main.cpp | 51 +++++++++----- lib/LinkMobile.hpp | 96 +++++++++++++++++++++------ 2 files changed, 109 insertions(+), 38 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 3d907dd..ed5b82a 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -60,7 +60,7 @@ start: // Menu std::string output = ""; - bool wait = false; + bool shouldHang = false; output += "State = " + getStateString(linkMobile->getState()) + "\n\n"; auto error = linkMobile->getError(); @@ -76,36 +76,47 @@ start: " CmdErrorCode: " + std::to_string(error.cmdErrorCode) + "\n\n"; output += " (SELECT = stop)"; - } else if (linkMobile->getState() == LinkMobile::SESSION_ACTIVE) { + } else if (linkMobile->isSessionActive()) { output += "L = Read Configuration\n\n"; output += " (DOWN = ok)\n (SELECT = stop)"; } else { output += " (SELECT = stop)"; } - // SELECT = back + // SELECT = stop if (keys & KEY_SELECT) { - linkMobile->deactivate(); - interrupt_disable(INTR_VBLANK); - interrupt_disable(INTR_SERIAL); - interrupt_disable(INTR_TIMER3); - delete linkMobile; - linkMobile = NULL; - goto start; + bool didShutdown = linkMobile->getState() == LinkMobile::State::SHUTDOWN; + if (hasError || didShutdown) { + linkMobile->deactivate(); + interrupt_disable(INTR_VBLANK); + interrupt_disable(INTR_SERIAL); + interrupt_disable(INTR_TIMER3); + delete linkMobile; + linkMobile = NULL; + + if (!didShutdown) { + log("Waiting..."); + wait(228 * 60 * 3); + } + + goto start; + } else if (linkMobile->isSessionActive()) { + linkMobile->shutdown(); + } } // L = Read Configuration if ((keys & KEY_L) && !reading) { reading = true; output = readConfiguration(); - wait = true; + shouldHang = true; } if (reading && !(keys & KEY_L)) reading = false; VBlankIntrWait(); log(output); - if (wait) + if (shouldHang) hang(); } @@ -155,18 +166,26 @@ std::string getStateString(LinkMobile::State state) { return "PINGING"; case LinkMobile::State::WAITING_TO_START: return "WAITING_TO_START"; - case LinkMobile::State::ENDING_SESSION: - return "ENDING_SESSION"; case LinkMobile::State::STARTING_SESSION: return "STARTING_SESSION"; case LinkMobile::State::ACTIVATING_SIO32: return "ACTIVATING_SIO32"; - case LinkMobile::State::WAITING_TO_SWITCH: - return "WAITING_TO_SWITCH"; + case LinkMobile::State::WAITING_32BIT_SWITCH: + return "WAITING_32BIT_SWITCH"; case LinkMobile::State::READING_CONFIGURATION: return "READING_CONFIGURATION"; case LinkMobile::State::SESSION_ACTIVE: return "SESSION_ACTIVE"; + case LinkMobile::State::SHUTDOWN_REQUESTED: + return "SHUTDOWN_REQUESTED"; + case LinkMobile::State::DEACTIVATING_SIO32: + return "DEACTIVATING_SIO32"; + case LinkMobile::State::WAITING_8BIT_SWITCH: + return "WAITING_8BIT_SWITCH"; + case LinkMobile::State::ENDING_SESSION: + return "ENDING_SESSION"; + case LinkMobile::State::SHUTDOWN: + return "SHUTDOWN"; default: return "???"; } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 2bcee6f..d81dba5 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -95,14 +95,18 @@ class LinkMobile { NEEDS_RESET, PINGING, WAITING_TO_START, - ENDING_SESSION, STARTING_SESSION, ACTIVATING_SIO32, - WAITING_TO_SWITCH, + WAITING_32BIT_SWITCH, READING_CONFIGURATION, SESSION_ACTIVE, SESSION_ACTIVE_CALL, - SESSION_ACTIVE_ISP + SESSION_ACTIVE_ISP, + SHUTDOWN_REQUESTED, + DEACTIVATING_SIO32, + WAITING_8BIT_SWITCH, + ENDING_SESSION, + SHUTDOWN }; enum CommandResult { @@ -182,6 +186,15 @@ class LinkMobile { start(); } + bool shutdown() { + if (!isSessionActive()) + return false; + + error = {}; + setState(SHUTDOWN_REQUESTED); + return true; + } + void deactivate() { error = {}; isEnabled = false; @@ -190,7 +203,7 @@ class LinkMobile { } bool readConfiguration(ConfigurationData& configurationData) { - if (state != SESSION_ACTIVE) + if (!isSessionActive()) return false; configurationData = adapterConfiguration.fields; @@ -199,6 +212,13 @@ class LinkMobile { [[nodiscard]] State getState() { return state; } + /** + * @brief Returns `true` if the session is active. + */ + [[nodiscard]] bool isSessionActive() { + return state >= SESSION_ACTIVE && state < SHUTDOWN_REQUESTED; + } + [[nodiscard]] LinkSPI::DataSize getDataSize() { return linkSPI->getDataSize(); } @@ -249,6 +269,8 @@ class LinkMobile { } else { processLoosePacket(newData); } + + _LMLOG_("<<<< %X", newData); } void _onTimer() { @@ -399,12 +421,12 @@ class LinkMobile { waitFrames--; if (waitFrames == 0) { - setState(ENDING_SESSION); - cmdEndSession(); + setState(STARTING_SESSION); + cmdBeginSession(); } break; } - case WAITING_TO_SWITCH: { + case WAITING_32BIT_SWITCH: { waitFrames--; if (waitFrames == 0) { @@ -415,6 +437,24 @@ class LinkMobile { } break; } + case SHUTDOWN_REQUESTED: { + if (!asyncCommand.isActive) { + setState(DEACTIVATING_SIO32); + cmdSIO32(false); + } + break; + } + case WAITING_8BIT_SWITCH: { + waitFrames--; + + if (waitFrames == 0) { + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_8BIT); + setState(ENDING_SESSION); + cmdEndSession(); + } + break; + } default: { } } @@ -444,14 +484,6 @@ class LinkMobile { } switch (state) { - case ENDING_SESSION: { - if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) - return; - - setState(STARTING_SESSION); - cmdBeginSession(); - break; - } case STARTING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_BEGIN_SESSION)) return; @@ -464,7 +496,7 @@ class LinkMobile { } setState(ACTIVATING_SIO32); - cmdSIO32(); + cmdSIO32(true); break; } case ACTIVATING_SIO32: { @@ -479,7 +511,7 @@ class LinkMobile { if (!asyncCommand.respondsTo(COMMAND_SIO32)) return; - setState(WAITING_TO_SWITCH); + setState(WAITING_32BIT_SWITCH); waitFrames = PING_WAIT_FRAMES; break; } @@ -509,6 +541,22 @@ class LinkMobile { setState(SESSION_ACTIVE); break; } + case DEACTIVATING_SIO32: { + if (!asyncCommand.respondsTo(COMMAND_SIO32) && + !asyncCommand.respondsTo(COMMAND_RESET)) + return abort(Error::Type::WEIRD_RESPONSE); + + setState(WAITING_8BIT_SWITCH); + waitFrames = PING_WAIT_FRAMES; + break; + } + case ENDING_SESSION: { + if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) + return; + + setState(SHUTDOWN); + break; + } default: { } } @@ -536,8 +584,8 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_END_SESSION), true); } - void cmdSIO32() { - addData(1, true); + void cmdSIO32(bool enabled) { + addData(enabled, true); sendCommandAsync(buildCommand(COMMAND_SIO32, true), true); } @@ -568,7 +616,7 @@ class LinkMobile { State oldState = state; state = newState; timeoutFrames = 0; - _LMLOG_("!! New state: %d -> %d", oldState, newState); + _LMLOG_("!! new state: %d -> %d", oldState, newState); (void)oldState; } @@ -673,7 +721,7 @@ class LinkMobile { bool isAcknowledgement = asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; if (!isAcknowledgement && newData != ADAPTER_WAITING) { - _LMLOG_("NOT WAITING: %X", newData); // TODO: REMOVE + _LMLOG_("!! not waiting: %X", newData); return asyncCommand.fail(CommandResult::NOT_WAITING); } @@ -708,8 +756,10 @@ class LinkMobile { bool isAcknowledgement = asyncCommand.transferred >= mainSize + 4; if (!isAcknowledgement && newData != ADAPTER_WAITING && - newData != ADAPTER_WAITING_32BIT) + newData != ADAPTER_WAITING_32BIT) { + _LMLOG_("!! not waiting: %X", newData); return asyncCommand.fail(CommandResult::NOT_WAITING); + } if (asyncCommand.transferred == 4) { // Header+Data || Header+Checksum @@ -917,6 +967,8 @@ class LinkMobile { } void transferAsync(u32 data) { + _LMLOG_(">>>> %X", data); + hasPendingTransfer = true; pendingTransfer = data; startTimer(WAIT_TICKS[isSIO32Mode()]); From ff8885d877929ee3d170f1c30340b647440a446b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 04:46:10 -0300 Subject: [PATCH 087/195] FIX: ack and checksum bugs in SIO32 mode --- lib/LinkMobile.hpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index d81dba5..3fb23a0 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -269,8 +269,6 @@ class LinkMobile { } else { processLoosePacket(newData); } - - _LMLOG_("<<<< %X", newData); } void _onTimer() { @@ -599,9 +597,7 @@ class LinkMobile { return state > NEEDS_RESET && state < SESSION_ACTIVE; } - bool shouldAbortOnCommandFailure() { - return state >= STARTING_SESSION && state < SESSION_ACTIVE; - } + bool shouldAbortOnCommandFailure() { return true; } void addData(u8 value, bool start = false) { if (start) { @@ -754,7 +750,7 @@ class LinkMobile { u32 padding = alignment != 0 ? 4 - alignment : 0; u32 mainSize = PREAMBLE_SIZE + dataSize + padding; - bool isAcknowledgement = asyncCommand.transferred >= mainSize + 4; + bool isAcknowledgement = asyncCommand.transferred >= mainSize; if (!isAcknowledgement && newData != ADAPTER_WAITING && newData != ADAPTER_WAITING_32BIT) { _LMLOG_("!! not waiting: %X", newData); @@ -786,7 +782,7 @@ class LinkMobile { asyncCommand.cmd.data.bytes[transferredDataCount + 1], asyncCommand.cmd.checksum.high, asyncCommand.cmd.checksum.low)); - } else if (!isAcknowledgement) { + } else if (asyncCommand.transferred < mainSize + 4) { // Acknowledgement Signal (1) advance32(buildU32(DEVICE_GBA | OR_VALUE, ACK_SENDER, 0, 0)); } else { @@ -884,8 +880,7 @@ class LinkMobile { asyncCommand.expectedChecksum += b0 + b1; } else { u16 checksum = lsB32(newData); - if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || - lsB16(checksum) != msB16(asyncCommand.expectedChecksum)) + if (checksum != asyncCommand.expectedChecksum) return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); asyncCommand.cmd.checksum.high = msB16(checksum); asyncCommand.cmd.checksum.low = lsB16(checksum); @@ -913,8 +908,7 @@ class LinkMobile { asyncCommand.cmd.data.bytes[transferredDataCount + 1] = b1; asyncCommand.expectedChecksum += b0 + b1; u16 checksum = lsB32(newData); - if (msB16(checksum) != msB16(asyncCommand.expectedChecksum) || - lsB16(checksum) != lsB16(asyncCommand.expectedChecksum)) + if (checksum != asyncCommand.expectedChecksum) return asyncCommand.fail(CommandResult::WRONG_CHECKSUM); asyncCommand.cmd.checksum.high = msB16(checksum); asyncCommand.cmd.checksum.low = lsB16(checksum); @@ -967,8 +961,6 @@ class LinkMobile { } void transferAsync(u32 data) { - _LMLOG_(">>>> %X", data); - hasPendingTransfer = true; pendingTransfer = data; startTimer(WAIT_TICKS[isSIO32Mode()]); From 36c39cf457f8e86b1da300c77b247eea4355ac09 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 05:38:13 -0300 Subject: [PATCH 088/195] Extracting pureCommandId() --- lib/LinkMobile.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 3fb23a0..782e795 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -325,6 +325,7 @@ class LinkMobile { u8 size = 0; u16 sum() { return commandId + _unused_ + _unusedSizeHigh_ + size; } + u8 pureCommandId() { return commandId & ~(OR_VALUE); } } __attribute__((packed)); struct PacketChecksum { @@ -469,7 +470,7 @@ class LinkMobile { _LMLOG_("%s $%X [%d]", asyncCommand.direction == AsyncCommand::Direction::SENDING ? ">!" : " Date: Fri, 16 Aug 2024 05:42:10 -0300 Subject: [PATCH 089/195] 0x11 already resets the adapter --- examples/LinkMobile_demo/src/main.cpp | 6 ++---- lib/LinkMobile.hpp | 22 ++++++---------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index ed5b82a..42ab86b 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -178,12 +178,10 @@ std::string getStateString(LinkMobile::State state) { return "SESSION_ACTIVE"; case LinkMobile::State::SHUTDOWN_REQUESTED: return "SHUTDOWN_REQUESTED"; - case LinkMobile::State::DEACTIVATING_SIO32: - return "DEACTIVATING_SIO32"; - case LinkMobile::State::WAITING_8BIT_SWITCH: - return "WAITING_8BIT_SWITCH"; case LinkMobile::State::ENDING_SESSION: return "ENDING_SESSION"; + case LinkMobile::State::WAITING_8BIT_SWITCH: + return "WAITING_8BIT_SWITCH"; case LinkMobile::State::SHUTDOWN: return "SHUTDOWN"; default: diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 782e795..f09f404 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -103,9 +103,8 @@ class LinkMobile { SESSION_ACTIVE_CALL, SESSION_ACTIVE_ISP, SHUTDOWN_REQUESTED, - DEACTIVATING_SIO32, - WAITING_8BIT_SWITCH, ENDING_SESSION, + WAITING_8BIT_SWITCH, SHUTDOWN }; @@ -438,8 +437,8 @@ class LinkMobile { } case SHUTDOWN_REQUESTED: { if (!asyncCommand.isActive) { - setState(DEACTIVATING_SIO32); - cmdSIO32(false); + setState(ENDING_SESSION); + cmdEndSession(); } break; } @@ -449,8 +448,7 @@ class LinkMobile { if (waitFrames == 0) { linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_8BIT); - setState(ENDING_SESSION); - cmdEndSession(); + setState(SHUTDOWN); } break; } @@ -540,20 +538,12 @@ class LinkMobile { setState(SESSION_ACTIVE); break; } - case DEACTIVATING_SIO32: { - if (!asyncCommand.respondsTo(COMMAND_SIO32) && - !asyncCommand.respondsTo(COMMAND_RESET)) - return abort(Error::Type::WEIRD_RESPONSE); - - setState(WAITING_8BIT_SWITCH); - waitFrames = PING_WAIT_FRAMES; - break; - } case ENDING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) return; - setState(SHUTDOWN); + setState(WAITING_8BIT_SWITCH); + waitFrames = PING_WAIT_FRAMES; break; } default: { From 78ff5ec6547ce607fe4123c0223bbcb052a40db3 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 06:50:14 -0300 Subject: [PATCH 090/195] Calling 'Wait for telephone call' regularly --- examples/LinkMobile_demo/src/main.cpp | 10 ++--- lib/LinkMobile.hpp | 65 +++++++++++++++++++-------- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 42ab86b..4d6a0d2 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -185,7 +185,7 @@ std::string getStateString(LinkMobile::State state) { case LinkMobile::State::SHUTDOWN: return "SHUTDOWN"; default: - return "???"; + return "?"; } } @@ -193,14 +193,14 @@ std::string getErrorString(LinkMobile::Error::Type errorType) { switch (errorType) { case LinkMobile::Error::Type::ADAPTER_NOT_CONNECTED: return "ADAPTER_NOT_CONNECTED"; - case LinkMobile::Error::Type::UNEXPECTED_FAILURE: - return "UNEXPECTED_FAILURE"; + case LinkMobile::Error::Type::COMMAND_FAILED: + return "COMMAND_FAILED"; case LinkMobile::Error::Type::WEIRD_RESPONSE: return "WEIRD_RESPONSE"; case LinkMobile::Error::Type::BAD_CONFIGURATION_CHECKSUM: return "BAD_CONFIGURATION_CHECKSUM"; default: - return "???"; + return "?"; } } @@ -229,7 +229,7 @@ std::string getResultString(LinkMobile::CommandResult cmdResult) { case LinkMobile::CommandResult::TIMEOUT: return "TIMEOUT"; default: - return "???"; + return "?"; } } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index f09f404..068cb4b 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -126,7 +126,7 @@ class LinkMobile { enum Type { NONE, ADAPTER_NOT_CONNECTED, - UNEXPECTED_FAILURE, + COMMAND_FAILED, WEIRD_RESPONSE, BAD_CONFIGURATION_CHECKSUM }; @@ -324,7 +324,7 @@ class LinkMobile { u8 size = 0; u16 sum() { return commandId + _unused_ + _unusedSizeHigh_ + size; } - u8 pureCommandId() { return commandId & ~(OR_VALUE); } + u8 pureCommandId() { return commandId & (~OR_VALUE); } } __attribute__((packed)); struct PacketChecksum { @@ -355,6 +355,7 @@ class LinkMobile { Direction direction; u16 expectedChecksum; bool expectsResponse; + u8 errorCommandId; u8 errorCode; bool isActive = false; @@ -366,13 +367,21 @@ class LinkMobile { direction = AsyncCommand::Direction::SENDING; expectedChecksum = 0; expectsResponse = false; + errorCommandId = 0; errorCode = 0; isActive = false; } + u8 relatedCommandId() { + return result == CommandResult::ERROR_CODE ? errorCommandId + : cmd.header.pureCommandId(); + } + bool respondsTo(u8 commandId) { return direction == AsyncCommand::Direction::RECEIVING && - cmd.header.commandId == (commandId | OR_VALUE); + (result == CommandResult::ERROR_CODE + ? errorCommandId == commandId + : cmd.header.commandId == (commandId | OR_VALUE)); } void finish() { @@ -381,6 +390,7 @@ class LinkMobile { result = CommandResult::WEIRD_ERROR_CODE; } else { result = CommandResult::ERROR_CODE; + errorCommandId = cmd.data.bytes[0]; errorCode = cmd.data.bytes[1]; } } else { @@ -435,6 +445,12 @@ class LinkMobile { } break; } + case SESSION_ACTIVE: { + if (!asyncCommand.isActive) + cmdWaitForTelephoneCall(); + + break; + } case SHUTDOWN_REQUESTED: { if (!asyncCommand.isActive) { setState(ENDING_SESSION); @@ -460,9 +476,9 @@ class LinkMobile { void processAsyncCommand() { if (asyncCommand.result != CommandResult::SUCCESS) { if (shouldAbortOnCommandFailure()) - return abort(Error::Type::UNEXPECTED_FAILURE); + return abort(Error::Type::COMMAND_FAILED); else - abort(Error::Type::UNEXPECTED_FAILURE, false); // (log the error) + abort(Error::Type::COMMAND_FAILED, false); // (log the error) } _LMLOG_("%s $%X [%d]", @@ -472,11 +488,8 @@ class LinkMobile { asyncCommand.cmd.header.size); if (asyncCommand.direction == AsyncCommand::Direction::SENDING) { - if (asyncCommand.expectsResponse) { - if (asyncCommand.result != CommandResult::SUCCESS) - return; + if (asyncCommand.expectsResponse) receiveCommandAsync(); - } return; } @@ -538,6 +551,15 @@ class LinkMobile { setState(SESSION_ACTIVE); break; } + case SESSION_ACTIVE: { + if (asyncCommand.respondsTo(COMMAND_WAIT_FOR_TELEPHONE_CALL)) { + if (asyncCommand.result == CommandResult::SUCCESS) { + // Call received + } else { + // No call received + } + } + } case ENDING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) return; @@ -573,6 +595,10 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_END_SESSION), true); } + void cmdWaitForTelephoneCall() { + sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL), true); + } + void cmdSIO32(bool enabled) { addData(enabled, true); sendCommandAsync(buildCommand(COMMAND_SIO32, true), true); @@ -588,7 +614,11 @@ class LinkMobile { return state > NEEDS_RESET && state < SESSION_ACTIVE; } - bool shouldAbortOnCommandFailure() { return true; } + bool shouldAbortOnCommandFailure() { + u8 commandId = asyncCommand.relatedCommandId(); + return asyncCommand.direction == AsyncCommand::Direction::SENDING || + (commandId != COMMAND_WAIT_FOR_TELEPHONE_CALL); + } void addData(u8 value, bool start = false) { if (start) { @@ -608,14 +638,13 @@ class LinkMobile { } void abort(Error::Type errorType, bool fatal = true) { - auto newError = - Error{.type = errorType, - .state = state, - .cmdId = (u8)(asyncCommand.cmd.header.pureCommandId()), - .cmdResult = asyncCommand.result, - .cmdErrorCode = asyncCommand.errorCode, - .cmdIsSending = - asyncCommand.direction == AsyncCommand::Direction::SENDING}; + auto newError = Error{.type = errorType, + .state = state, + .cmdId = asyncCommand.relatedCommandId(), + .cmdResult = asyncCommand.result, + .cmdErrorCode = asyncCommand.errorCode, + .cmdIsSending = asyncCommand.direction == + AsyncCommand::Direction::SENDING}; _LMLOG_( "!! %s:\n error: %d\n cmdId: %s$%X\n cmdResult: %d\n " From 47ab5ced310dc9493af8c03e3d73a306dcca4fe1 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 07:29:20 -0300 Subject: [PATCH 091/195] Retrieving adapter type, start thinking about calls --- examples/LinkMobile_demo/src/main.cpp | 60 ++++++++++++++++----------- lib/LinkMobile.hpp | 19 ++++++++- 2 files changed, 53 insertions(+), 26 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 4d6a0d2..0e6e9a8 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -9,12 +9,13 @@ #include #include "../../_lib/interrupt.h" -void activate(); std::string readConfiguration(); std::string getStateString(LinkMobile::State state); -std::string getErrorString(LinkMobile::Error::Type errorType); +std::string getErrorString(LinkMobile::Error error); +std::string getErrorTypeString(LinkMobile::Error::Type errorType); std::string getResultString(LinkMobile::CommandResult cmdResult); void log(std::string text); +std::string toStr(char* chars, int size); void waitFor(u16 key); void wait(u32 verticalLines); void hang(); @@ -54,6 +55,7 @@ start: linkMobile->activate(); bool reading = false; + bool calling = false; while (true) { u16 keys = ~REG_KEYS & KEY_ANY; @@ -66,18 +68,11 @@ start: auto error = linkMobile->getError(); bool hasError = error.type != LinkMobile::Error::NONE; if (hasError) { - output += "ERROR\n"; - output += " Type: " + getErrorString(error.type) + "\n"; - output += " State: " + getStateString(error.state) + "\n"; - output += " CmdID: " + std::string(error.cmdIsSending ? ">" : "<") + - "$" + toHex(error.cmdId) + "\n"; - output += " CmdResult: " + getResultString(error.cmdResult) + "\n"; - output += - " CmdErrorCode: " + std::to_string(error.cmdErrorCode) + "\n\n"; - + output += getErrorString(error); output += " (SELECT = stop)"; } else if (linkMobile->isSessionActive()) { - output += "L = Read Configuration\n\n"; + output += "L = Read Configuration\n"; + output += "R = Call localhost\n\n"; output += " (DOWN = ok)\n (SELECT = stop)"; } else { output += " (SELECT = stop)"; @@ -114,6 +109,14 @@ start: if (reading && !(keys & KEY_L)) reading = false; + // R = Call localhost + if ((keys & KEY_R) && !calling) { + calling = true; + // TODO: CALL + } + if (calling && !(keys & KEY_R)) + calling = false; + VBlankIntrWait(); log(output); if (shouldHang) @@ -123,18 +126,6 @@ start: return 0; } -void activate() { - linkMobile->activate(); -} - -std::string toStr(char* chars, int size) { - char copiedChars[255]; - for (int i = 0; i < size; i++) - copiedChars[i] = chars[i]; - copiedChars[size] = '\0'; - return std::string(copiedChars); -} - std::string readConfiguration() { LinkMobile::ConfigurationData data; if (!linkMobile->readConfiguration(data)) @@ -189,7 +180,18 @@ std::string getStateString(LinkMobile::State state) { } } -std::string getErrorString(LinkMobile::Error::Type errorType) { +std::string getErrorString(LinkMobile::Error error) { + return "ERROR" + "\n Type: " + + getErrorTypeString(error.type) + + "\n State: " + getStateString(error.state) + + "\n CmdID: " + std::string(error.cmdIsSending ? ">" : "<") + "$" + + toHex(error.cmdId) + + "\n CmdResult: " + getResultString(error.cmdResult) + + "\n CmdErrorCode: " + std::to_string(error.cmdErrorCode) + "\n\n"; +} + +std::string getErrorTypeString(LinkMobile::Error::Type errorType) { switch (errorType) { case LinkMobile::Error::Type::ADAPTER_NOT_CONNECTED: return "ADAPTER_NOT_CONNECTED"; @@ -243,6 +245,14 @@ void log(std::string text) { lastLoggedText = text; } +std::string toStr(char* chars, int size) { + char copiedChars[255]; + for (int i = 0; i < size; i++) + copiedChars[i] = chars[i]; + copiedChars[size] = '\0'; + return std::string(copiedChars); +} + void waitFor(u16 key) { u16 keys; do { diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 068cb4b..2c78b22 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -89,6 +89,7 @@ class LinkMobile { static constexpr u8 SUPPORTED_DEVICES[] = { DEVICE_ADAPTER_BLUE, DEVICE_ADAPTER_YELLOW, DEVICE_ADAPTER_GREEN, DEVICE_ADAPTER_RED}; + static constexpr u8 DIAL_PHONE_FIRST_BYTE[] = {0, 2, 1, 1}; public: enum State { @@ -201,6 +202,14 @@ class LinkMobile { stop(); } + // phoneNumber = 32 bytes + bool call(char* phoneNumber) { + if (!isSessionActive()) + return false; + + // TODO: IMPLEMENT + } + bool readConfiguration(ConfigurationData& configurationData) { if (!isSessionActive()) return false; @@ -290,6 +299,8 @@ class LinkMobile { Config config; private: + enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; + union AdapterConfiguration { ConfigurationData fields; char bytes[CONFIGURATION_DATA_SIZE]; @@ -420,6 +431,7 @@ class LinkMobile { u32 nextCommandDataSize = 0; bool hasPendingTransfer = false; u32 pendingTransfer = 0; + AdapterType adapterType = AdapterType::UNKNOWN; Error error = {}; volatile bool isEnabled = false; @@ -677,6 +689,7 @@ class LinkMobile { this->nextCommandDataSize = 0; this->hasPendingTransfer = false; this->pendingTransfer = 0; + this->adapterType = AdapterType::UNKNOWN; } void stop() { @@ -946,8 +959,12 @@ class LinkMobile { bool isSupportedAdapter(u8 ack) { for (u32 i = 0; i < SUPPORTED_DEVICES_SIZE; i++) { - if ((SUPPORTED_DEVICES[i] | OR_VALUE) == ack) + if ((SUPPORTED_DEVICES[i] | OR_VALUE) == ack) { + if (adapterType == AdapterType::UNKNOWN) + adapterType = static_cast(i); + return true; + } } return false; From 6249152311964da923369bbffcb8764016ea65b8 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 08:35:19 -0300 Subject: [PATCH 092/195] Adding user requests system --- examples/LinkMobile_demo/src/main.cpp | 6 ++ lib/LinkMobile.hpp | 97 +++++++++++++++++++++------ lib/LinkWireless.hpp | 5 +- 3 files changed, 83 insertions(+), 25 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 0e6e9a8..521aba7 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -167,6 +167,12 @@ std::string getStateString(LinkMobile::State state) { return "READING_CONFIGURATION"; case LinkMobile::State::SESSION_ACTIVE: return "SESSION_ACTIVE"; + case LinkMobile::State::CALL_REQUESTED: + return "CALL_REQUESTED"; + case LinkMobile::State::CALLING: + return "CALLING"; + case LinkMobile::State::CALL_ESTABLISHED: + return "CALL_ESTABLISHED"; case LinkMobile::State::SHUTDOWN_REQUESTED: return "SHUTDOWN_REQUESTED"; case LinkMobile::State::ENDING_SESSION: diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 2c78b22..b1e8d3b 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -25,9 +25,15 @@ #include "LinkGPIO.hpp" #include "LinkSPI.hpp" +/** + * @brief ... + */ +#define LINK_MOBILE_QUEUE_SIZE 10 + static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 +#define LINK_MOBILE_MAX_PHONE_NUMBER_SIZE 32 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 @@ -101,7 +107,9 @@ class LinkMobile { WAITING_32BIT_SWITCH, READING_CONFIGURATION, SESSION_ACTIVE, - SESSION_ACTIVE_CALL, + CALL_REQUESTED, + CALLING, + CALL_ESTABLISHED, SESSION_ACTIVE_ISP, SHUTDOWN_REQUESTED, ENDING_SESSION, @@ -187,11 +195,10 @@ class LinkMobile { } bool shutdown() { - if (!isSessionActive()) + if (!isSessionActive() || userRequests.isFull()) return false; - error = {}; - setState(SHUTDOWN_REQUESTED); + pushRequest(UserRequest{.type = UserRequest::Type::SHUTDOWN}); return true; } @@ -204,7 +211,7 @@ class LinkMobile { // phoneNumber = 32 bytes bool call(char* phoneNumber) { - if (!isSessionActive()) + if (state != SESSION_ACTIVE) return false; // TODO: IMPLEMENT @@ -245,6 +252,7 @@ class LinkMobile { return abort(Error::Type::ADAPTER_NOT_CONNECTED); } + processUserRequests(); processNewFrame(); } @@ -301,6 +309,13 @@ class LinkMobile { private: enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; + struct UserRequest { + enum Type { CALL, SHUTDOWN }; + + Type type; + char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_SIZE]; + }; + union AdapterConfiguration { ConfigurationData fields; char bytes[CONFIGURATION_DATA_SIZE]; @@ -365,7 +380,6 @@ class LinkMobile { Command cmd; Direction direction; u16 expectedChecksum; - bool expectsResponse; u8 errorCommandId; u8 errorCode; bool isActive = false; @@ -377,7 +391,6 @@ class LinkMobile { cmd = Command{}; direction = AsyncCommand::Direction::SENDING; expectedChecksum = 0; - expectsResponse = false; errorCommandId = 0; errorCode = 0; isActive = false; @@ -421,6 +434,9 @@ class LinkMobile { sizeof(MagicBytes) + sizeof(PacketHeader); static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); + using RequestQueue = Link::ObjectQueue; + + RequestQueue userRequests; AdapterConfiguration adapterConfiguration; AsyncCommand asyncCommand; u32 waitFrames = 0; @@ -432,9 +448,28 @@ class LinkMobile { bool hasPendingTransfer = false; u32 pendingTransfer = 0; AdapterType adapterType = AdapterType::UNKNOWN; + volatile bool isPushingRequest = false; + volatile bool isPendingClearActive = false; Error error = {}; volatile bool isEnabled = false; + void processUserRequests() { + if (isPushingRequest || userRequests.isEmpty()) + return; + + auto request = userRequests.pop(); + + switch (request.type) { + case UserRequest::Type::SHUTDOWN: { + if (isSessionActive()) + setState(SHUTDOWN_REQUESTED); + break; + } + default: { + } + } + } + void processNewFrame() { switch (state) { case WAITING_TO_START: { @@ -476,6 +511,7 @@ class LinkMobile { if (waitFrames == 0) { linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, LinkSPI::DataSize::SIZE_8BIT); + error = {}; setState(SHUTDOWN); } break; @@ -500,8 +536,7 @@ class LinkMobile { asyncCommand.cmd.header.size); if (asyncCommand.direction == AsyncCommand::Direction::SENDING) { - if (asyncCommand.expectsResponse) - receiveCommandAsync(); + receiveCommandAsync(); return; } @@ -597,29 +632,45 @@ class LinkMobile { } } + // TODO: Reify this idea as synchronized queue + void pushRequest(UserRequest userRequest) { + LINK_MOBILE_BARRIER; + isPushingRequest = true; + LINK_MOBILE_BARRIER; + + userRequests.push(userRequest); + + LINK_MOBILE_BARRIER; + isPushingRequest = false; + LINK_MOBILE_BARRIER; + + if (isPendingClearActive) { + userRequests.clear(); + isPendingClearActive = false; + } + } + void cmdBeginSession() { for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) addData(LOGIN_PARTS[i], i == 0); - sendCommandAsync(buildCommand(COMMAND_BEGIN_SESSION, true), true); + sendCommandAsync(buildCommand(COMMAND_BEGIN_SESSION, true)); } - void cmdEndSession() { - sendCommandAsync(buildCommand(COMMAND_END_SESSION), true); - } + void cmdEndSession() { sendCommandAsync(buildCommand(COMMAND_END_SESSION)); } void cmdWaitForTelephoneCall() { - sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL), true); + sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL)); } void cmdSIO32(bool enabled) { addData(enabled, true); - sendCommandAsync(buildCommand(COMMAND_SIO32, true), true); + sendCommandAsync(buildCommand(COMMAND_SIO32, true)); } void cmdReadConfigurationData(u8 offset, u8 size) { addData(offset, true); addData(CONFIGURATION_DATA_CHUNK); - sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true), true); + sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); } bool shouldAbortOnTimeout() { @@ -683,6 +734,7 @@ class LinkMobile { setState(NEEDS_RESET); this->adapterConfiguration = AdapterConfiguration{}; + this->userRequests.clear(); this->asyncCommand.reset(); this->waitFrames = 0; this->timeoutFrames = 0; @@ -690,6 +742,11 @@ class LinkMobile { this->hasPendingTransfer = false; this->pendingTransfer = 0; this->adapterType = AdapterType::UNKNOWN; + + if (!isPushingRequest) + userRequests.clear(); + else + isPendingClearActive = true; } void stop() { @@ -716,12 +773,10 @@ class LinkMobile { Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; } - void sendCommandAsync(Command command, bool expectsResponse = false) { - _LMLOG_(">> $%X [%d]%s", command.header.commandId, command.header.size, - expectsResponse ? " (...)" : ""); + void sendCommandAsync(Command command) { + _LMLOG_(">> $%X [%d] (...)", command.header.commandId, command.header.size); asyncCommand.reset(); asyncCommand.cmd = command; - asyncCommand.expectsResponse = expectsResponse; asyncCommand.isActive = true; if (isSIO32Mode()) // Magic+Header @@ -1035,5 +1090,3 @@ inline void LINK_MOBILE_ISR_TIMER() { #undef _LMLOG_ #endif // LINK_MOBILE_H - -// TODO: Keep adapter alive with Wait For Telephone Call diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 12b3596..c97b22e 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -230,9 +230,6 @@ class LinkWireless { u8 playerId = 0; }; - private: - using MessageQueue = Link::ObjectQueue; - public: struct Server { u16 id = 0; @@ -961,6 +958,8 @@ class LinkWireless { Config config; private: + using MessageQueue = Link::ObjectQueue; + struct SessionState { MessageQueue incomingMessages; // read by user, write by irq&user MessageQueue outgoingMessages; // read and write by irq From 6983d9df5f36a7099c9f216e2a043cc9bd1c5542 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 08:51:50 -0300 Subject: [PATCH 093/195] Using a single queue for all projects --- lib/LinkCable.hpp | 2 +- lib/LinkMobile.hpp | 2 +- lib/LinkUniversal.hpp | 2 +- lib/LinkWireless.hpp | 2 +- lib/_link_common.hpp | 65 ++----------------------------------------- 5 files changed, 6 insertions(+), 67 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 4dc199b..4200433 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -76,7 +76,7 @@ class LinkCable { using u8 = unsigned char; using vu32 = volatile unsigned int; using vs32 = volatile signed int; - using U16Queue = Link::Queue; + using U16Queue = Link::Queue; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int REMOTE_TIMEOUT_OFFLINE = -1; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index b1e8d3b..be51d7b 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -434,7 +434,7 @@ class LinkMobile { sizeof(MagicBytes) + sizeof(PacketHeader); static constexpr u32 CHECKSUM_SIZE = sizeof(PacketChecksum); - using RequestQueue = Link::ObjectQueue; + using RequestQueue = Link::Queue; RequestQueue userRequests; AdapterConfiguration adapterConfiguration; diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 9a4a545..09af52c 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -78,7 +78,7 @@ class LinkUniversal { using u16 = unsigned short; using u8 = unsigned char; using s8 = signed char; - using U16Queue = Link::Queue; + using U16Queue = Link::Queue; static constexpr int MAX_ROOM_NUMBER = 32000; static constexpr int INIT_WAIT_FRAMES = 10; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index c97b22e..475c30d 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -958,7 +958,7 @@ class LinkWireless { Config config; private: - using MessageQueue = Link::ObjectQueue; + using MessageQueue = Link::Queue; struct SessionState { MessageQueue incomingMessages; // read by user, write by irq&user diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index cdeb6b8..54d7e83 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -135,71 +135,10 @@ static inline int _min(int a, int b) { return (a < b) ? (a) : (b); } -// Queues +// Queue -template +template class Queue { - public: - void push(T item) { - if (isFull()) { - if constexpr (Overwrite) { - pop(); - } else { - return; - } - } - - rear = (rear + 1) % Size; - arr[rear] = item; - count++; - } - - T pop() { - if (isEmpty()) - return NullValue; - - auto x = arr[front]; - front = (front + 1) % Size; - count--; - - return x; - } - - T peek() { - if (isEmpty()) - return NullValue; - return arr[front]; - } - - template - void forEach(F action) { - vs32 currentFront = front; - - for (u32 i = 0; i < count; i++) { - if (!action(arr[currentFront])) - return; - currentFront = (currentFront + 1) % Size; - } - } - - void clear() { - front = count = 0; - rear = -1; - } - - u32 size() { return count; } - bool isEmpty() { return size() == 0; } - bool isFull() { return size() == Size; } - - private: - T arr[Size]; - vs32 front = 0; - vs32 rear = -1; - vu32 count = 0; -}; - -template -class ObjectQueue { public: void push(T item) { if (isFull()) { From e14fd0f0d0148648c5f33066f6d36995c4ad20f2 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 09:12:04 -0300 Subject: [PATCH 094/195] Moving synchronized queue logic to Queue in all projects --- lib/LinkCable.hpp | 24 +++--------------------- lib/LinkWireless.hpp | 34 +++++++--------------------------- lib/_link_common.hpp | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 4200433..2f0e02d 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -260,20 +260,7 @@ class LinkCable { if (data == LINK_CABLE_DISCONNECTED || data == LINK_CABLE_NO_DATA) return; - LINK_CABLE_BARRIER; - isAddingMessage = true; - LINK_CABLE_BARRIER; - - _state.outgoingMessages.push(data); - - LINK_CABLE_BARRIER; - isAddingMessage = false; - LINK_CABLE_BARRIER; - - if (isAddingWhileResetting) { - _state.outgoingMessages.clear(); - isAddingWhileResetting = false; - } + _state.outgoingMessages.syncPush(data); } /** @@ -392,8 +379,6 @@ class LinkCable { InternalState _state; volatile bool isEnabled = false; volatile bool isReadingMessages = false; - volatile bool isAddingMessage = false; - volatile bool isAddingWhileResetting = false; bool isMaster() { return !isBitHigh(BIT_SLAVE); } bool isReady() { return isBitHigh(BIT_READY); } @@ -402,7 +387,7 @@ class LinkCable { bool didTimeout() { return _state.IRQTimeout >= config.timeout; } void sendPendingData() { - if (isAddingMessage) + if (_state.outgoingMessages.isWriting()) return; LINK_CABLE_BARRIER; @@ -427,10 +412,7 @@ class LinkCable { state.playerCount = 0; state.currentPlayerId = 0; - if (isAddingMessage || isAddingWhileResetting) - isAddingWhileResetting = true; - else - _state.outgoingMessages.clear(); + _state.outgoingMessages.syncClear(); for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { if (!isReadingMessages) diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 475c30d..1b4a5ad 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -599,20 +599,7 @@ class LinkWireless { message.playerId = _author >= 0 ? _author : sessionState.currentPlayerId; message.data = data; - LINK_WIRELESS_BARRIER; - isAddingMessage = true; - LINK_WIRELESS_BARRIER; - - sessionState.newOutgoingMessages.push(message); - - LINK_WIRELESS_BARRIER; - isAddingMessage = false; - LINK_WIRELESS_BARRIER; - - if (isPendingClearActive) { - sessionState.newOutgoingMessages.clear(); - isPendingClearActive = false; - } + sessionState.newOutgoingMessages.syncPush(message); return true; } @@ -627,7 +614,7 @@ class LinkWireless { return false; LINK_WIRELESS_BARRIER; - isReadingMessages = true; + sessionState.incomingMessages.startReading(); LINK_WIRELESS_BARRIER; u32 i = 0; @@ -639,7 +626,7 @@ class LinkWireless { } LINK_WIRELESS_BARRIER; - isReadingMessages = false; + sessionState.incomingMessages.stopReading(); LINK_WIRELESS_BARRIER; return true; @@ -1044,9 +1031,6 @@ class LinkWireless { u32 nextCommandDataSize = 0; u32 nextAsyncCommandData[LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; u32 nextAsyncCommandDataSize = 0; - volatile bool isReadingMessages = false; - volatile bool isAddingMessage = false; - volatile bool isPendingClearActive = false; volatile bool isSendingSyncCommand = false; Error lastError = NONE; volatile bool isEnabled = false; @@ -1419,7 +1403,7 @@ class LinkWireless { } void copyOutgoingState() { // (irq only) - if (isAddingMessage) + if (sessionState.newOutgoingMessages.isWriting()) return; while (!sessionState.newOutgoingMessages.isEmpty()) { @@ -1433,7 +1417,7 @@ class LinkWireless { } void copyIncomingState() { // (irq only) - if (isReadingMessages) + if (sessionState.newIncomingMessages.isReading()) return; while (!sessionState.newIncomingMessages.isEmpty()) { @@ -1533,15 +1517,11 @@ class LinkWireless { this->nextCommandDataSize = 0; this->nextAsyncCommandDataSize = 0; - if (!isReadingMessages) - this->sessionState.incomingMessages.clear(); + this->sessionState.incomingMessages.syncClear(); this->sessionState.outgoingMessages.clear(); this->sessionState.newIncomingMessages.clear(); - if (!isAddingMessage) - this->sessionState.newOutgoingMessages.clear(); - else - isPendingClearActive = true; + this->sessionState.newOutgoingMessages.syncClear(); isSendingSyncCommand = false; } diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 54d7e83..c2fe9c0 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -187,15 +187,50 @@ class Queue { rear = -1; } + void startReading() { _isReading = true; } + void stopReading() { _isReading = false; } + + void syncPush(T item) { + _isWriting = true; + asm volatile("" ::: "memory"); + + push(item); + + asm volatile("" ::: "memory"); + _isWriting = false; + asm volatile("" ::: "memory"); + + if (_needsClear) { + clear(); + _needsClear = false; + } + } + + void syncClear() { + if (_isReading) + return; // (it will be cleared later anyway) + + if (!_isWriting) + clear(); + else + _needsClear = true; + } + u32 size() { return count; } bool isEmpty() { return size() == 0; } bool isFull() { return size() == Size; } + bool isReading() { return _isReading; } + bool isWriting() { return _isWriting; } + bool canMutate() { return !_isReading && !_isWriting; } private: T arr[Size]; vs32 front = 0; vs32 rear = -1; vu32 count = 0; + volatile bool _isReading = false; + volatile bool _isWriting = false; + volatile bool _needsClear = false; }; // mGBA Logging From db43d1eb184565a357e16d349ced8c6aad7bfb25 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 09:46:45 -0300 Subject: [PATCH 095/195] Adjusted max size to 254 --- lib/LinkMobile.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index be51d7b..b09bffa 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -32,7 +32,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; -#define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 +#define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 254 #define LINK_MOBILE_MAX_PHONE_NUMBER_SIZE 32 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) From 8dbe5f25728f45a4a5629b028ec5f202ebea7c32 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 10:19:33 -0300 Subject: [PATCH 096/195] Adding basic call feature --- examples/LinkMobile_demo/src/main.cpp | 6 +- lib/LinkMobile.hpp | 123 +++++++++++++++++--------- 2 files changed, 85 insertions(+), 44 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 521aba7..71d0e86 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -70,7 +70,7 @@ start: if (hasError) { output += getErrorString(error); output += " (SELECT = stop)"; - } else if (linkMobile->isSessionActive()) { + } else if (linkMobile->getState() == LinkMobile::State::SESSION_ACTIVE) { output += "L = Read Configuration\n"; output += "R = Call localhost\n\n"; output += " (DOWN = ok)\n (SELECT = stop)"; @@ -95,7 +95,7 @@ start: } goto start; - } else if (linkMobile->isSessionActive()) { + } else if (linkMobile->canShutdown()) { linkMobile->shutdown(); } } @@ -112,7 +112,7 @@ start: // R = Call localhost if ((keys & KEY_R) && !calling) { calling = true; - // TODO: CALL + linkMobile->call("127000000001"); } if (calling && !(keys & KEY_R)) calling = false; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index b09bffa..02c808d 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -22,6 +22,7 @@ #include "_link_common.hpp" +#include #include "LinkGPIO.hpp" #include "LinkSPI.hpp" @@ -195,7 +196,7 @@ class LinkMobile { } bool shutdown() { - if (!isSessionActive() || userRequests.isFull()) + if (!canShutdown() || userRequests.isFull()) return false; pushRequest(UserRequest{.type = UserRequest::Type::SHUTDOWN}); @@ -209,12 +210,15 @@ class LinkMobile { stop(); } - // phoneNumber = 32 bytes - bool call(char* phoneNumber) { - if (state != SESSION_ACTIVE) + bool call(const char* phoneNumber) { + if (state != SESSION_ACTIVE || userRequests.isFull()) return false; - // TODO: IMPLEMENT + auto request = UserRequest{.type = UserRequest::Type::CALL}; + copyString(request.phoneNumber, phoneNumber, + LINK_MOBILE_MAX_PHONE_NUMBER_SIZE); + pushRequest(request); + return true; } bool readConfiguration(ConfigurationData& configurationData) { @@ -231,7 +235,11 @@ class LinkMobile { * @brief Returns `true` if the session is active. */ [[nodiscard]] bool isSessionActive() { - return state >= SESSION_ACTIVE && state < SHUTDOWN_REQUESTED; + return state >= SESSION_ACTIVE && state <= SHUTDOWN_REQUESTED; + } + + [[nodiscard]] bool canShutdown() { + return isSessionActive() && state != SHUTDOWN_REQUESTED; } [[nodiscard]] LinkSPI::DataSize getDataSize() { @@ -313,7 +321,7 @@ class LinkMobile { enum Type { CALL, SHUTDOWN }; Type type; - char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_SIZE]; + char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_SIZE + 1]; }; union AdapterConfiguration { @@ -448,21 +456,46 @@ class LinkMobile { bool hasPendingTransfer = false; u32 pendingTransfer = 0; AdapterType adapterType = AdapterType::UNKNOWN; - volatile bool isPushingRequest = false; - volatile bool isPendingClearActive = false; Error error = {}; volatile bool isEnabled = false; void processUserRequests() { - if (isPushingRequest || userRequests.isEmpty()) + if (!userRequests.canMutate() || userRequests.isEmpty()) return; - auto request = userRequests.pop(); + auto request = userRequests.peek(); switch (request.type) { + case UserRequest::Type::CALL: { + if (!isSessionActive()) { + userRequests.pop(); + return; + } + + if (state != CALL_REQUESTED) + setState(CALL_REQUESTED); + + if (!asyncCommand.isActive) { + setState(CALLING); + cmdDialTelephone(request.phoneNumber); + userRequests.pop(); + } + break; + } case UserRequest::Type::SHUTDOWN: { - if (isSessionActive()) + if (!isSessionActive()) { + userRequests.pop(); + return; + } + + if (state != SHUTDOWN_REQUESTED) setState(SHUTDOWN_REQUESTED); + + if (!asyncCommand.isActive) { + setState(ENDING_SESSION); + cmdEndSession(); + userRequests.pop(); + } break; } default: { @@ -498,13 +531,6 @@ class LinkMobile { break; } - case SHUTDOWN_REQUESTED: { - if (!asyncCommand.isActive) { - setState(ENDING_SESSION); - cmdEndSession(); - } - break; - } case WAITING_8BIT_SWITCH: { waitFrames--; @@ -599,13 +625,25 @@ class LinkMobile { break; } case SESSION_ACTIVE: { + // TODO: Allow users to opt-out receiving calls if (asyncCommand.respondsTo(COMMAND_WAIT_FOR_TELEPHONE_CALL)) { if (asyncCommand.result == CommandResult::SUCCESS) { - // Call received + setState(CALL_ESTABLISHED); } else { - // No call received + // (no call received) } } + break; + } + case CALLING: { + if (!asyncCommand.respondsTo(COMMAND_DIAL_TELEPHONE)) + return; + + if (asyncCommand.result == CommandResult::SUCCESS) + setState(CALL_ESTABLISHED); + else + setState(SESSION_ACTIVE); + break; } case ENDING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) @@ -632,22 +670,8 @@ class LinkMobile { } } - // TODO: Reify this idea as synchronized queue void pushRequest(UserRequest userRequest) { - LINK_MOBILE_BARRIER; - isPushingRequest = true; - LINK_MOBILE_BARRIER; - - userRequests.push(userRequest); - - LINK_MOBILE_BARRIER; - isPushingRequest = false; - LINK_MOBILE_BARRIER; - - if (isPendingClearActive) { - userRequests.clear(); - isPendingClearActive = false; - } + userRequests.syncPush(userRequest); } void cmdBeginSession() { @@ -658,6 +682,13 @@ class LinkMobile { void cmdEndSession() { sendCommandAsync(buildCommand(COMMAND_END_SESSION)); } + void cmdDialTelephone(char* phoneNumber) { + addData(DIAL_PHONE_FIRST_BYTE[adapterType], true); + for (u32 i = 0; i < std::strlen(phoneNumber); i++) + addData(phoneNumber[i]); + sendCommandAsync(buildCommand(COMMAND_DIAL_TELEPHONE, true)); + } + void cmdWaitForTelephoneCall() { sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL)); } @@ -680,7 +711,8 @@ class LinkMobile { bool shouldAbortOnCommandFailure() { u8 commandId = asyncCommand.relatedCommandId(); return asyncCommand.direction == AsyncCommand::Direction::SENDING || - (commandId != COMMAND_WAIT_FOR_TELEPHONE_CALL); + (commandId != COMMAND_WAIT_FOR_TELEPHONE_CALL && + commandId != COMMAND_DIAL_TELEPHONE); } void addData(u8 value, bool start = false) { @@ -692,6 +724,16 @@ class LinkMobile { nextCommandDataSize++; } + void copyString(char* target, const char* source, u32 length) { + u32 len = std::strlen(source); + + for (u32 i = 0; i < length + 1; i++) + if (i < len) + target[i] = source[i]; + else + target[i] = '\0'; + } + void setState(State newState) { State oldState = state; state = newState; @@ -743,10 +785,7 @@ class LinkMobile { this->pendingTransfer = 0; this->adapterType = AdapterType::UNKNOWN; - if (!isPushingRequest) - userRequests.clear(); - else - isPendingClearActive = true; + userRequests.syncClear(); } void stop() { @@ -1089,4 +1128,6 @@ inline void LINK_MOBILE_ISR_TIMER() { #undef _LMLOG_ +// TODO: Wait for calls every second instead of every frame + #endif // LINK_MOBILE_H From 72bd5e46357f7953c728a8cea40a304455267aef Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 10:41:32 -0300 Subject: [PATCH 097/195] Adding dontReceiveCalls boolean (test) --- examples/LinkMobile_demo/src/main.cpp | 4 +++- lib/LinkMobile.hpp | 13 +++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 71d0e86..68f8ba5 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -38,9 +38,11 @@ start: log("LinkMobile_demo (v7.0.0)\n\n" "Press A to start"); waitFor(KEY_A); + u16 initialKeys = ~REG_KEYS & KEY_ANY; + bool dontReceiveCalls = (initialKeys & KEY_START); // TODO: REMOVE // (1) Create a LinkMobile instance - linkMobile = new LinkMobile(); + linkMobile = new LinkMobile(dontReceiveCalls); // (2) Add the required interrupt service routines interrupt_init(); diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 02c808d..4b439e4 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -169,7 +169,10 @@ class LinkMobile { u8 checksumLow; } __attribute__((packed)); - explicit LinkMobile(u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { + bool dontReceiveCalls = false; // TODO: REMOVE + explicit LinkMobile(bool _dontReceiveCalls, + u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { + this->dontReceiveCalls = _dontReceiveCalls; this->config.timerId = timerId; } @@ -526,8 +529,11 @@ class LinkMobile { break; } case SESSION_ACTIVE: { - if (!asyncCommand.isActive) - cmdWaitForTelephoneCall(); + // TODO: Allow users to opt-out receiving calls (move to config) + if (!dontReceiveCalls) { + if (!asyncCommand.isActive) + cmdWaitForTelephoneCall(); + } break; } @@ -625,7 +631,6 @@ class LinkMobile { break; } case SESSION_ACTIVE: { - // TODO: Allow users to opt-out receiving calls if (asyncCommand.respondsTo(COMMAND_WAIT_FOR_TELEPHONE_CALL)) { if (asyncCommand.result == CommandResult::SUCCESS) { setState(CALL_ESTABLISHED); From 7d7b75c982cdf42572e7d7eaf20ecdd433302625 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 20:36:51 -0300 Subject: [PATCH 098/195] Adding send/receive test --- lib/LinkMobile.hpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 4b439e4..30183b9 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -537,6 +537,12 @@ class LinkMobile { break; } + case CALL_ESTABLISHED: { + const char* newData = dontReceiveCalls ? "call" : "recv"; + if (!asyncCommand.isActive) + cmdTransferData(0xff, (u8*)newData, 5); + break; + } case WAITING_8BIT_SWITCH: { waitFrames--; @@ -650,6 +656,20 @@ class LinkMobile { setState(SESSION_ACTIVE); break; } + case CALL_ESTABLISHED: { + if (!asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) + return; + + if (asyncCommand.result == CommandResult::SUCCESS) { + char received[254]; + received[0] = '\0'; + for (u32 i = 0; i < 5; i++) + received[i] = asyncCommand.cmd.data.bytes[1 + i]; + _LMLOG_("!! received: %s", received); + } else { + setState(SESSION_ACTIVE); + } + } case ENDING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) return; @@ -698,6 +718,13 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL)); } + void cmdTransferData(u8 connectionId, u8* data, u8 size) { + addData(connectionId, true); + for (u32 i = 0; i < size; i++) + addData(data[i]); + sendCommandAsync(buildCommand(COMMAND_TRANSFER_DATA, true)); + } + void cmdSIO32(bool enabled) { addData(enabled, true); sendCommandAsync(buildCommand(COMMAND_SIO32, true)); @@ -1133,6 +1160,4 @@ inline void LINK_MOBILE_ISR_TIMER() { #undef _LMLOG_ -// TODO: Wait for calls every second instead of every frame - #endif // LINK_MOBILE_H From 84608a688f057d84dc1eb94ad323b3e713b6b0ad Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 16 Aug 2024 23:51:47 -0300 Subject: [PATCH 099/195] Extracting methods to transfer data and adding extra checks to data size in SIO32 --- lib/LinkMobile.hpp | 97 +++++++++++++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 28 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 30183b9..4e82c84 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -129,7 +129,7 @@ class LinkMobile { WRONG_CHECKSUM, ERROR_CODE, WEIRD_ERROR_CODE, - TIMEOUT // TODO: USE + TIMEOUT // TODO: USE (for `UserRequest`s) }; struct Error { @@ -169,6 +169,12 @@ class LinkMobile { u8 checksumLow; } __attribute__((packed)); + struct DataTransfer { + u8 data[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH] = {}; + u8 size = 0; + bool completed = false; + }; + bool dontReceiveCalls = false; // TODO: REMOVE explicit LinkMobile(bool _dontReceiveCalls, u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { @@ -202,7 +208,7 @@ class LinkMobile { if (!canShutdown() || userRequests.isFull()) return false; - pushRequest(UserRequest{.type = UserRequest::Type::SHUTDOWN}); + userRequests.syncPush(UserRequest{.type = UserRequest::Type::SHUTDOWN}); return true; } @@ -220,7 +226,25 @@ class LinkMobile { auto request = UserRequest{.type = UserRequest::Type::CALL}; copyString(request.phoneNumber, phoneNumber, LINK_MOBILE_MAX_PHONE_NUMBER_SIZE); - pushRequest(request); + userRequests.syncPush(request); + return true; + } + + /** + * @brief ... + * @param data The value to be sent. + */ + bool transfer(DataTransfer dataToSend, DataTransfer* receivedData) { + if (state != CALL_ESTABLISHED || userRequests.isFull()) + return false; + + auto request = UserRequest{.type = UserRequest::Type::TRANSFER, + .send = {.data = {}, .size = dataToSend.size}, + .receive = receivedData, + .commandSent = false}; + for (u32 i = 0; i < dataToSend.size; i++) + request.send.data[i] = dataToSend.data[i]; + userRequests.syncPush(request); return true; } @@ -321,10 +345,13 @@ class LinkMobile { enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; struct UserRequest { - enum Type { CALL, SHUTDOWN }; + enum Type { CALL, TRANSFER, SHUTDOWN }; Type type; char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_SIZE + 1]; + DataTransfer send; + DataTransfer* receive; + bool commandSent; }; union AdapterConfiguration { @@ -466,15 +493,15 @@ class LinkMobile { if (!userRequests.canMutate() || userRequests.isEmpty()) return; + if (!isSessionActive()) { + userRequests.clear(); + return; + } + auto request = userRequests.peek(); switch (request.type) { case UserRequest::Type::CALL: { - if (!isSessionActive()) { - userRequests.pop(); - return; - } - if (state != CALL_REQUESTED) setState(CALL_REQUESTED); @@ -485,12 +512,14 @@ class LinkMobile { } break; } - case UserRequest::Type::SHUTDOWN: { - if (!isSessionActive()) { - userRequests.pop(); - return; + case UserRequest::Type::TRANSFER: { + if (!asyncCommand.isActive && !request.commandSent) { + cmdTransferData(0xff, request.send.data, request.send.size); + request.commandSent = true; } - + break; + } + case UserRequest::Type::SHUTDOWN: { if (state != SHUTDOWN_REQUESTED) setState(SHUTDOWN_REQUESTED); @@ -538,9 +567,11 @@ class LinkMobile { break; } case CALL_ESTABLISHED: { - const char* newData = dontReceiveCalls ? "call" : "recv"; - if (!asyncCommand.isActive) - cmdTransferData(0xff, (u8*)newData, 5); + // TODO: KEEP IT ALIVE + // const char* newData = dontReceiveCalls ? "call" : "recv"; + // if (!asyncCommand.isActive) + // cmdTransferData(0xff, (u8*)newData, 5); + break; } case WAITING_8BIT_SWITCH: { @@ -660,12 +691,20 @@ class LinkMobile { if (!asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) return; + auto request = userRequests.peek(); + if (asyncCommand.result == CommandResult::SUCCESS) { - char received[254]; - received[0] = '\0'; - for (u32 i = 0; i < 5; i++) - received[i] = asyncCommand.cmd.data.bytes[1 + i]; - _LMLOG_("!! received: %s", received); + if (asyncCommand.cmd.header.size == 0) + return abort(Error::Type::WEIRD_RESPONSE); + + if (request.type == UserRequest::TRANSFER) { + u32 size = asyncCommand.cmd.header.size - 1; + for (u32 i = 0; i < size; i++) + request.receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; + request.receive->size = size; + request.receive->completed = true; + userRequests.pop(); + } } else { setState(SESSION_ACTIVE); } @@ -695,10 +734,6 @@ class LinkMobile { } } - void pushRequest(UserRequest userRequest) { - userRequests.syncPush(userRequest); - } - void cmdBeginSession() { for (u32 i = 0; i < LOGIN_PARTS_SIZE; i++) addData(LOGIN_PARTS[i], i == 0); @@ -718,7 +753,7 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL)); } - void cmdTransferData(u8 connectionId, u8* data, u8 size) { + void cmdTransferData(u8 connectionId, const u8* data, u8 size) { addData(connectionId, true); for (u32 i = 0; i < size; i++) addData(data[i]); @@ -974,7 +1009,9 @@ class LinkMobile { } else if (asyncCommand.transferred < PREAMBLE_SIZE) { // Packet Header commandBytes[asyncCommand.transferred] = newData; - if (asyncCommand.cmd.header._unusedSizeHigh_ != 0) + if (asyncCommand.cmd.header._unusedSizeHigh_ != 0 || + asyncCommand.cmd.header.size > + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH) return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); advance8(GBA_WAITING); if (asyncCommand.transferred == PREAMBLE_SIZE) @@ -1030,6 +1067,10 @@ class LinkMobile { u16 secondHalfHeader = msB32(newData); asyncCommand.cmd.header._unusedSizeHigh_ = msB16(secondHalfHeader); asyncCommand.cmd.header.size = lsB16(secondHalfHeader); + if (asyncCommand.cmd.header._unusedSizeHigh_ != 0 || + asyncCommand.cmd.header.size > + LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH) + return asyncCommand.fail(CommandResult::WEIRD_DATA_SIZE); asyncCommand.expectedChecksum = asyncCommand.cmd.header.sum(); if (asyncCommand.cmd.header.size > 0) { u16 firstData = lsB32(newData); From 8ffc30d740e09dcda7f260391eded830758589f2 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 00:43:20 -0300 Subject: [PATCH 100/195] Moving transfer requests to example --- examples/LinkMobile_demo/src/main.cpp | 45 +++++++++++++++++++++++++++ lib/LinkMobile.hpp | 1 + 2 files changed, 46 insertions(+) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 68f8ba5..4624a3d 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -9,6 +9,7 @@ #include #include "../../_lib/interrupt.h" +void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text); std::string readConfiguration(); std::string getStateString(LinkMobile::State state); std::string getErrorString(LinkMobile::Error error); @@ -56,8 +57,12 @@ start: // (3) Initialize the library linkMobile->activate(); + bool isConnected = false; bool reading = false; bool calling = false; + u32 counter = 0; + LinkMobile::DataTransfer dataTransfer; + LinkMobile::DataTransfer lastCompletedTransfer; while (true) { u16 keys = ~REG_KEYS & KEY_ANY; @@ -80,6 +85,38 @@ start: output += " (SELECT = stop)"; } + if (linkMobile->getState() == LinkMobile::State::CALL_ESTABLISHED) { + if (!isConnected) { + isConnected = true; + dataTransfer = {}; + lastCompletedTransfer = {}; + transfer(dataTransfer, dontReceiveCalls ? "caller" : "receiver"); + } + + if (dataTransfer.completed) { + if (dataTransfer.size > 0) { + lastCompletedTransfer = dataTransfer; + counter++; + } + + transfer(dataTransfer, (dontReceiveCalls ? "caller: " : "receiver: ") + + std::to_string(counter)); + } + if (lastCompletedTransfer.completed) { + char received[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; + for (u32 i = 0; i < lastCompletedTransfer.size; i++) + received[i] = lastCompletedTransfer.data[i]; + received[lastCompletedTransfer.size] = '\0'; + output += "\n\n<< " + std::string(received); + } + } else { + if (isConnected) { + isConnected = false; + dataTransfer = {}; + lastCompletedTransfer = {}; + } + } + // SELECT = stop if (keys & KEY_SELECT) { bool didShutdown = linkMobile->getState() == LinkMobile::State::SHUTDOWN; @@ -128,6 +165,14 @@ start: return 0; } +void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text) { + for (u32 i = 0; i < text.size(); i++) + dataTransfer.data[i] = text[i]; + dataTransfer.data[text.size()] = '\0'; + dataTransfer.size = text.size() + 1; + linkMobile->transfer(dataTransfer, &dataTransfer); +} + std::string readConfiguration() { LinkMobile::ConfigurationData data; if (!linkMobile->readConfiguration(data)) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 4e82c84..73efcc5 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -238,6 +238,7 @@ class LinkMobile { if (state != CALL_ESTABLISHED || userRequests.isFull()) return false; + receivedData->completed = false; auto request = UserRequest{.type = UserRequest::Type::TRANSFER, .send = {.data = {}, .size = dataToSend.size}, .receive = receivedData, From 6d7203e213eb83c57e10c51f69afc9194f01ea1f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 01:42:48 -0300 Subject: [PATCH 101/195] Adding methods to retrieve role --- examples/LinkMobile_demo/src/main.cpp | 13 +++++++++---- lib/LinkMobile.hpp | 18 ++++++++++++++++-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 4624a3d..4155f77 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -85,12 +85,14 @@ start: output += " (SELECT = stop)"; } - if (linkMobile->getState() == LinkMobile::State::CALL_ESTABLISHED) { + if (linkMobile->isConnected()) { if (!isConnected) { isConnected = true; dataTransfer = {}; lastCompletedTransfer = {}; - transfer(dataTransfer, dontReceiveCalls ? "caller" : "receiver"); + transfer(dataTransfer, linkMobile->getRole() == LinkMobile::Role::CALLER + ? "caller" + : "receiver"); } if (dataTransfer.completed) { @@ -99,8 +101,11 @@ start: counter++; } - transfer(dataTransfer, (dontReceiveCalls ? "caller: " : "receiver: ") + - std::to_string(counter)); + transfer( + dataTransfer, + (linkMobile->getRole() == LinkMobile::Role::CALLER ? "caller: " + : "receiver: ") + + std::to_string(counter)); } if (lastCompletedTransfer.completed) { char received[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 73efcc5..d79d2e3 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -132,6 +132,8 @@ class LinkMobile { TIMEOUT // TODO: USE (for `UserRequest`s) }; + enum Role { NOT_CONNECTED, CALLER, RECEIVER }; + struct Error { enum Type { NONE, @@ -259,6 +261,8 @@ class LinkMobile { [[nodiscard]] State getState() { return state; } + [[nodiscard]] Role getRole() { return role; } + /** * @brief Returns `true` if the session is active. */ @@ -266,6 +270,11 @@ class LinkMobile { return state >= SESSION_ACTIVE && state <= SHUTDOWN_REQUESTED; } + /** + * @brief + */ + [[nodiscard]] bool isConnected() { return state == CALL_ESTABLISHED; } + [[nodiscard]] bool canShutdown() { return isSessionActive() && state != SHUTDOWN_REQUESTED; } @@ -480,6 +489,7 @@ class LinkMobile { AsyncCommand asyncCommand; u32 waitFrames = 0; u32 timeoutFrames = 0; + Role role = Role::NOT_CONNECTED; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; PacketData nextCommandData; @@ -672,6 +682,7 @@ class LinkMobile { if (asyncCommand.respondsTo(COMMAND_WAIT_FOR_TELEPHONE_CALL)) { if (asyncCommand.result == CommandResult::SUCCESS) { setState(CALL_ESTABLISHED); + role = Role::RECEIVER; } else { // (no call received) } @@ -682,9 +693,10 @@ class LinkMobile { if (!asyncCommand.respondsTo(COMMAND_DIAL_TELEPHONE)) return; - if (asyncCommand.result == CommandResult::SUCCESS) + if (asyncCommand.result == CommandResult::SUCCESS) { setState(CALL_ESTABLISHED); - else + role = Role::CALLER; + } else setState(SESSION_ACTIVE); break; } @@ -803,6 +815,7 @@ class LinkMobile { } void setState(State newState) { + role = Role::NOT_CONNECTED; State oldState = state; state = newState; timeoutFrames = 0; @@ -848,6 +861,7 @@ class LinkMobile { this->asyncCommand.reset(); this->waitFrames = 0; this->timeoutFrames = 0; + this->role = Role::NOT_CONNECTED; this->nextCommandDataSize = 0; this->hasPendingTransfer = false; this->pendingTransfer = 0; From 049af89e74555ae4811f9e3b813b750d7ed75ef4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 02:37:55 -0300 Subject: [PATCH 102/195] Adding constant ping (telephone status), manual hang up, and hang up detection --- examples/LinkMobile_demo/src/main.cpp | 14 ++++ lib/LinkMobile.hpp | 114 +++++++++++++++++++------- 2 files changed, 98 insertions(+), 30 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 4155f77..4072d96 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -60,6 +60,7 @@ start: bool isConnected = false; bool reading = false; bool calling = false; + bool hangingUp = false; u32 counter = 0; LinkMobile::DataTransfer dataTransfer; LinkMobile::DataTransfer lastCompletedTransfer; @@ -82,6 +83,8 @@ start: output += "R = Call localhost\n\n"; output += " (DOWN = ok)\n (SELECT = stop)"; } else { + if (linkMobile->isConnected()) + output += "\n (START = hang up)"; output += " (SELECT = stop)"; } @@ -144,6 +147,14 @@ start: } } + // START = hang up + if ((keys & KEY_START) && !hangingUp) { + hangingUp = true; + linkMobile->hangUp(); + } + if (hangingUp && !(keys & KEY_START)) + hangingUp = false; + // L = Read Configuration if ((keys & KEY_L) && !reading) { reading = true; @@ -342,3 +353,6 @@ template rc[i] = digits[(w >> j) & 0x0f]; return rc; } + +// TODO: ADD NUMPAD +// TODO: ADD SELECTIVE SEND diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index d79d2e3..1dba0d2 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -37,6 +37,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_PHONE_NUMBER_SIZE 32 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) +#define LINK_MOBILE_DEFAULT_TIMEOUT 480 #define LINK_MOBILE_DEFAULT_TIMER_ID 3 #define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") @@ -53,8 +54,9 @@ class LinkMobile { using u8 = unsigned char; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; - static constexpr int PING_WAIT_FRAMES = 7; - static constexpr int TIMEOUT_INIT_FRAMES = 30; + static constexpr int INIT_WAIT_FRAMES = 7; + static constexpr int INIT_TIMEOUT_FRAMES = 30; + static constexpr int PING_FREQUENCY_FRAMES = 60; static constexpr int ADAPTER_WAITING = 0xD2; static constexpr u32 ADAPTER_WAITING_32BIT = 0xD2D2D2D2; static constexpr int GBA_WAITING = 0x4B; @@ -77,6 +79,7 @@ class LinkMobile { static constexpr int COMMAND_WAIT_FOR_TELEPHONE_CALL = 0x14; static constexpr int COMMAND_TRANSFER_DATA = 0x15; static constexpr int COMMAND_RESET = 0x16; + static constexpr int COMMAND_TELEPHONE_STATUS = 0x17; static constexpr int COMMAND_SIO32 = 0x18; static constexpr int COMMAND_READ_CONFIGURATION_DATA = 0x19; static constexpr int COMMAND_ISP_LOGIN = 0x21; @@ -177,10 +180,9 @@ class LinkMobile { bool completed = false; }; - bool dontReceiveCalls = false; // TODO: REMOVE - explicit LinkMobile(bool _dontReceiveCalls, + explicit LinkMobile(u32 timeout = LINK_MOBILE_DEFAULT_TIMEOUT, u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { - this->dontReceiveCalls = _dontReceiveCalls; + this->config.timeout = timeout; this->config.timerId = timerId; } @@ -251,6 +253,14 @@ class LinkMobile { return true; } + bool hangUp() { + if (state != CALL_ESTABLISHED || userRequests.isFull()) + return false; + + userRequests.syncPush(UserRequest{.type = UserRequest::Type::HANG_UP}); + return true; + } + bool readConfiguration(ConfigurationData& configurationData) { if (!isSessionActive()) return false; @@ -291,12 +301,19 @@ class LinkMobile { if (!isEnabled) return; - if (shouldAbortOnTimeout()) { - timeoutFrames++; - if (timeoutFrames >= TIMEOUT_INIT_FRAMES) + if (shouldAbortOnStateTimeout()) { + timeoutStateFrames++; + if (timeoutStateFrames >= INIT_TIMEOUT_FRAMES) return abort(Error::Type::ADAPTER_NOT_CONNECTED); } + pingFrameCount++; + if (pingFrameCount >= PING_FREQUENCY_FRAMES && isSessionActive() && + !asyncCommand.isActive) { + pingFrameCount = 0; + cmdTelephoneStatus(); + } + processUserRequests(); processNewFrame(); } @@ -342,6 +359,7 @@ class LinkMobile { } struct Config { + u32 timeout; u32 timerId; }; @@ -355,7 +373,7 @@ class LinkMobile { enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; struct UserRequest { - enum Type { CALL, TRANSFER, SHUTDOWN }; + enum Type { CALL, TRANSFER, HANG_UP, SHUTDOWN }; Type type; char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_SIZE + 1]; @@ -488,7 +506,8 @@ class LinkMobile { AdapterConfiguration adapterConfiguration; AsyncCommand asyncCommand; u32 waitFrames = 0; - u32 timeoutFrames = 0; + u32 timeoutStateFrames = 0; + u32 pingFrameCount = 0; Role role = Role::NOT_CONNECTED; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; @@ -513,6 +532,10 @@ class LinkMobile { switch (request.type) { case UserRequest::Type::CALL: { + if (state != SESSION_ACTIVE && state != CALL_REQUESTED) { + userRequests.pop(); + return; + } if (state != CALL_REQUESTED) setState(CALL_REQUESTED); @@ -524,12 +547,25 @@ class LinkMobile { break; } case UserRequest::Type::TRANSFER: { + if (state != CALL_ESTABLISHED) { + userRequests.pop(); + return; + } if (!asyncCommand.isActive && !request.commandSent) { cmdTransferData(0xff, request.send.data, request.send.size); request.commandSent = true; } break; } + case UserRequest::Type::HANG_UP: { + if (state != CALL_ESTABLISHED) { + userRequests.pop(); + return; + } + if (!asyncCommand.isActive) + cmdHangUpTelephone(); + break; + } case UserRequest::Type::SHUTDOWN: { if (state != SHUTDOWN_REQUESTED) setState(SHUTDOWN_REQUESTED); @@ -569,19 +605,8 @@ class LinkMobile { break; } case SESSION_ACTIVE: { - // TODO: Allow users to opt-out receiving calls (move to config) - if (!dontReceiveCalls) { - if (!asyncCommand.isActive) - cmdWaitForTelephoneCall(); - } - - break; - } - case CALL_ESTABLISHED: { - // TODO: KEEP IT ALIVE - // const char* newData = dontReceiveCalls ? "call" : "recv"; - // if (!asyncCommand.isActive) - // cmdTransferData(0xff, (u8*)newData, 5); + if (!asyncCommand.isActive) + cmdWaitForTelephoneCall(); break; } @@ -620,6 +645,18 @@ class LinkMobile { return; } + if (asyncCommand.respondsTo(COMMAND_TELEPHONE_STATUS)) { + if (asyncCommand.cmd.header.size != 3) + return abort(Error::Type::WEIRD_RESPONSE); + if (state == CALL_ESTABLISHED) { + if (!isBitHigh(asyncCommand.cmd.data.bytes[0], 2)) { + // (call terminated) + setState(SESSION_ACTIVE); + } + } + return; + } + switch (state) { case STARTING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_BEGIN_SESSION)) @@ -649,7 +686,7 @@ class LinkMobile { return; setState(WAITING_32BIT_SWITCH); - waitFrames = PING_WAIT_FRAMES; + waitFrames = INIT_WAIT_FRAMES; break; } case READING_CONFIGURATION: { @@ -696,11 +733,18 @@ class LinkMobile { if (asyncCommand.result == CommandResult::SUCCESS) { setState(CALL_ESTABLISHED); role = Role::CALLER; - } else + } else { + // (call terminated) setState(SESSION_ACTIVE); + } break; } case CALL_ESTABLISHED: { + if (asyncCommand.respondsTo(COMMAND_HANG_UP_TELEPHONE)) { + setState(SESSION_ACTIVE); + return; + } + if (!asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) return; @@ -727,7 +771,7 @@ class LinkMobile { return; setState(WAITING_8BIT_SWITCH); - waitFrames = PING_WAIT_FRAMES; + waitFrames = INIT_WAIT_FRAMES; break; } default: { @@ -739,7 +783,7 @@ class LinkMobile { switch (state) { case PINGING: { setState(WAITING_TO_START); - waitFrames = PING_WAIT_FRAMES; + waitFrames = INIT_WAIT_FRAMES; break; } default: { @@ -762,6 +806,10 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_DIAL_TELEPHONE, true)); } + void cmdHangUpTelephone() { + sendCommandAsync(buildCommand(COMMAND_HANG_UP_TELEPHONE, true)); + } + void cmdWaitForTelephoneCall() { sendCommandAsync(buildCommand(COMMAND_WAIT_FOR_TELEPHONE_CALL)); } @@ -773,6 +821,10 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_TRANSFER_DATA, true)); } + void cmdTelephoneStatus() { + sendCommandAsync(buildCommand(COMMAND_TELEPHONE_STATUS, true)); + } + void cmdSIO32(bool enabled) { addData(enabled, true); sendCommandAsync(buildCommand(COMMAND_SIO32, true)); @@ -784,7 +836,7 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); } - bool shouldAbortOnTimeout() { + bool shouldAbortOnStateTimeout() { return state > NEEDS_RESET && state < SESSION_ACTIVE; } @@ -818,7 +870,8 @@ class LinkMobile { role = Role::NOT_CONNECTED; State oldState = state; state = newState; - timeoutFrames = 0; + timeoutStateFrames = 0; + pingFrameCount = 0; _LMLOG_("!! new state: %d -> %d", oldState, newState); (void)oldState; } @@ -860,7 +913,7 @@ class LinkMobile { this->userRequests.clear(); this->asyncCommand.reset(); this->waitFrames = 0; - this->timeoutFrames = 0; + this->timeoutStateFrames = 0; this->role = Role::NOT_CONNECTED; this->nextCommandDataSize = 0; this->hasPendingTransfer = false; @@ -1198,6 +1251,7 @@ class LinkMobile { static u16 lsB32(u32 value) { return value & 0xffff; } static u8 msB16(u16 value) { return value >> 8; } static u8 lsB16(u16 value) { return value & 0xff; } + bool isBitHigh(u8 byte, u8 bit) { return (byte >> bit) & 1; } }; extern LinkMobile* linkMobile; From 804f6a32ab87a37c066f8e32499221509290e389 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 05:10:56 -0300 Subject: [PATCH 103/195] Adding timeout error --- examples/LinkMobile_demo/src/main.cpp | 4 ++-- lib/LinkMobile.hpp | 26 +++++++++++++++++++------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 4072d96..a61b6a9 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -270,6 +270,8 @@ std::string getErrorTypeString(LinkMobile::Error::Type errorType) { return "WEIRD_RESPONSE"; case LinkMobile::Error::Type::BAD_CONFIGURATION_CHECKSUM: return "BAD_CONFIGURATION_CHECKSUM"; + case LinkMobile::Error::Type::TIMEOUT: + return "TIMEOUT"; default: return "?"; } @@ -297,8 +299,6 @@ std::string getResultString(LinkMobile::CommandResult cmdResult) { return "ERROR_CODE"; case LinkMobile::CommandResult::WEIRD_ERROR_CODE: return "WEIRD_ERROR_CODE"; - case LinkMobile::CommandResult::TIMEOUT: - return "TIMEOUT"; default: return "?"; } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 1dba0d2..554a6e3 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -131,8 +131,7 @@ class LinkMobile { WEIRD_DATA_SIZE, WRONG_CHECKSUM, ERROR_CODE, - WEIRD_ERROR_CODE, - TIMEOUT // TODO: USE (for `UserRequest`s) + WEIRD_ERROR_CODE }; enum Role { NOT_CONNECTED, CALLER, RECEIVER }; @@ -143,7 +142,8 @@ class LinkMobile { ADAPTER_NOT_CONNECTED, COMMAND_FAILED, WEIRD_RESPONSE, - BAD_CONFIGURATION_CHECKSUM + BAD_CONFIGURATION_CHECKSUM, + TIMEOUT }; Error::Type type = Error::Type::NONE; @@ -212,7 +212,7 @@ class LinkMobile { if (!canShutdown() || userRequests.isFull()) return false; - userRequests.syncPush(UserRequest{.type = UserRequest::Type::SHUTDOWN}); + pushRequest(UserRequest{.type = UserRequest::Type::SHUTDOWN}); return true; } @@ -230,7 +230,7 @@ class LinkMobile { auto request = UserRequest{.type = UserRequest::Type::CALL}; copyString(request.phoneNumber, phoneNumber, LINK_MOBILE_MAX_PHONE_NUMBER_SIZE); - userRequests.syncPush(request); + pushRequest(request); return true; } @@ -249,7 +249,7 @@ class LinkMobile { .commandSent = false}; for (u32 i = 0; i < dataToSend.size; i++) request.send.data[i] = dataToSend.data[i]; - userRequests.syncPush(request); + pushRequest(request); return true; } @@ -257,7 +257,7 @@ class LinkMobile { if (state != CALL_ESTABLISHED || userRequests.isFull()) return false; - userRequests.syncPush(UserRequest{.type = UserRequest::Type::HANG_UP}); + pushRequest(UserRequest{.type = UserRequest::Type::HANG_UP}); return true; } @@ -325,6 +325,9 @@ class LinkMobile { linkSPI->_onSerial(); u32 newData = linkSPI->getAsyncData(); + if (state == NEEDS_RESET) + return; + if (asyncCommand.isActive) { if (asyncCommand.state == AsyncCommand::State::PENDING) { if (isSIO32Mode()) { @@ -380,6 +383,7 @@ class LinkMobile { DataTransfer send; DataTransfer* receive; bool commandSent; + u32 timeout; }; union AdapterConfiguration { @@ -529,6 +533,9 @@ class LinkMobile { } auto request = userRequests.peek(); + request.timeout++; + if (request.timeout >= config.timeout) + return abort(Error::Type::TIMEOUT); switch (request.type) { case UserRequest::Type::CALL: { @@ -836,6 +843,11 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); } + void pushRequest(UserRequest userRequest) { + userRequest.timeout = 0; + userRequests.syncPush(userRequest); + } + bool shouldAbortOnStateTimeout() { return state > NEEDS_RESET && state < SESSION_ACTIVE; } From d63956e0a002610564d421fc621c96b99aec1cda Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 06:02:13 -0300 Subject: [PATCH 104/195] Adding numpad to example and timeouts --- examples/LinkMobile_demo/src/main.cpp | 230 ++++++++++++++++-------- examples/LinkWireless_demo/src/main.cpp | 36 ++-- lib/LinkMobile.hpp | 37 ++-- 3 files changed, 200 insertions(+), 103 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index a61b6a9..8224a96 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -11,18 +11,23 @@ void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text); std::string readConfiguration(); +std::string getNumberInput(); std::string getStateString(LinkMobile::State state); std::string getErrorString(LinkMobile::Error error); std::string getErrorTypeString(LinkMobile::Error::Type errorType); std::string getResultString(LinkMobile::CommandResult cmdResult); void log(std::string text); std::string toStr(char* chars, int size); -void waitFor(u16 key); void wait(u32 verticalLines); -void hang(); +bool didPress(u16 key, bool& pressed); +void waitForA(); template [[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1); +bool left = false, right = false, up = false, down = false; +bool a = false, b = false, l = false, r = false; +bool start = false, select = false; +std::string selectedNumber = ""; LinkMobile* linkMobile = NULL; @@ -38,12 +43,10 @@ start: // Options log("LinkMobile_demo (v7.0.0)\n\n" "Press A to start"); - waitFor(KEY_A); - u16 initialKeys = ~REG_KEYS & KEY_ANY; - bool dontReceiveCalls = (initialKeys & KEY_START); // TODO: REMOVE + waitForA(); // (1) Create a LinkMobile instance - linkMobile = new LinkMobile(dontReceiveCalls); + linkMobile = new LinkMobile(); // (2) Add the required interrupt service routines interrupt_init(); @@ -58,75 +61,88 @@ start: linkMobile->activate(); bool isConnected = false; - bool reading = false; - bool calling = false; - bool hangingUp = false; - u32 counter = 0; LinkMobile::DataTransfer dataTransfer; LinkMobile::DataTransfer lastCompletedTransfer; + std::string outgoingData = ""; + u32 counter = 0; + u32 frameCounter = 0; while (true) { + // (one transfer for every N frames) + constexpr static int TRANSFER_FREQUENCY = 30; + u16 keys = ~REG_KEYS & KEY_ANY; // Menu std::string output = ""; - bool shouldHang = false; - output += "State = " + getStateString(linkMobile->getState()) + "\n\n"; + bool shouldWaitForA = false; + output += "State = " + getStateString(linkMobile->getState()) + "\n"; auto error = linkMobile->getError(); bool hasError = error.type != LinkMobile::Error::NONE; if (hasError) { output += getErrorString(error); - output += " (SELECT = stop)"; + output += "\n (SELECT = stop)"; } else if (linkMobile->getState() == LinkMobile::State::SESSION_ACTIVE) { - output += "L = Read Configuration\n"; - output += "R = Call localhost\n\n"; - output += " (DOWN = ok)\n (SELECT = stop)"; + output += "\nL = Read Configuration"; + output += "\nR = Call someone\n"; + output += "\n (A = ok)\n (SELECT = stop)"; } else { - if (linkMobile->isConnected()) - output += "\n (START = hang up)"; - output += " (SELECT = stop)"; + if (linkMobile->isConnected()) { + output += "\n (A = send)"; + output += "\n (L = hang up)"; + } + output += "\n (SELECT = stop)"; } if (linkMobile->isConnected()) { if (!isConnected) { isConnected = true; - dataTransfer = {}; - lastCompletedTransfer = {}; - transfer(dataTransfer, linkMobile->getRole() == LinkMobile::Role::CALLER - ? "caller" - : "receiver"); + outgoingData = linkMobile->getRole() == LinkMobile::Role::CALLER + ? "caller!!!" + : "receiver!!!"; + transfer(dataTransfer, outgoingData); } if (dataTransfer.completed) { - if (dataTransfer.size > 0) { + if (dataTransfer.size > 0) lastCompletedTransfer = dataTransfer; + + if (keys & KEY_A) { counter++; + outgoingData = (linkMobile->getRole() == LinkMobile::Role::CALLER + ? "caller: " + : "receiver: ") + + std::to_string(counter); } - transfer( - dataTransfer, - (linkMobile->getRole() == LinkMobile::Role::CALLER ? "caller: " - : "receiver: ") + - std::to_string(counter)); + frameCounter++; + if (frameCounter >= TRANSFER_FREQUENCY) { + frameCounter = 0; + transfer(dataTransfer, outgoingData); + } } if (lastCompletedTransfer.completed) { - char received[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH]; + char received[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH]; for (u32 i = 0; i < lastCompletedTransfer.size; i++) received[i] = lastCompletedTransfer.data[i]; received[lastCompletedTransfer.size] = '\0'; - output += "\n\n<< " + std::string(received); + output += "\n\n>> " + std::string(outgoingData); + output += "\n<< " + std::string(received); } } else { if (isConnected) { isConnected = false; dataTransfer = {}; lastCompletedTransfer = {}; + counter = 0; + frameCounter = 0; + outgoingData = ""; } } // SELECT = stop - if (keys & KEY_SELECT) { + if (didPress(KEY_SELECT, select)) { bool didShutdown = linkMobile->getState() == LinkMobile::State::SHUTDOWN; if (hasError || didShutdown) { linkMobile->deactivate(); @@ -147,35 +163,36 @@ start: } } - // START = hang up - if ((keys & KEY_START) && !hangingUp) { - hangingUp = true; - linkMobile->hangUp(); - } - if (hangingUp && !(keys & KEY_START)) - hangingUp = false; + switch (linkMobile->getState()) { + case LinkMobile::State::SESSION_ACTIVE: { + // L = Read Configuration + if (didPress(KEY_L, l)) { + output = readConfiguration(); + shouldWaitForA = true; + } - // L = Read Configuration - if ((keys & KEY_L) && !reading) { - reading = true; - output = readConfiguration(); - shouldHang = true; + // R = Call someone + if (didPress(KEY_R, r)) { + std::string number = getNumberInput(); + if (number != "") + linkMobile->call(number.c_str()); + } + break; + } + case LinkMobile::State::CALL_ESTABLISHED: { + // L = hang up + if (didPress(KEY_L, l)) + linkMobile->hangUp(); + break; + } + default: { + } } - if (reading && !(keys & KEY_L)) - reading = false; - - // R = Call localhost - if ((keys & KEY_R) && !calling) { - calling = true; - linkMobile->call("127000000001"); - } - if (calling && !(keys & KEY_R)) - calling = false; VBlankIntrWait(); log(output); - if (shouldHang) - hang(); + if (shouldWaitForA) + waitForA(); } return 0; @@ -212,6 +229,75 @@ std::string readConfiguration() { : "SIO8")); } +std::string getNumberInput() { + VBlankIntrWait(); + + int selectedX = 0; + int selectedY = 0; + std::vector> rows; + rows.push_back({"1", "2", "3"}); + rows.push_back({"4", "5", "6"}); + rows.push_back({"7", "8", "9"}); + rows.push_back({"*", "0", "#"}); + + while (true) { + std::string output = "Type a number:\n\n"; + output += ">> " + selectedNumber + "\n\n"; + + if (didPress(KEY_RIGHT, right)) { + selectedX++; + if (selectedX >= (int)rows[0].size()) + selectedX = rows[0].size() - 1; + } + if (didPress(KEY_LEFT, left)) { + selectedX--; + if (selectedX < 0) + selectedX = 0; + } + if (didPress(KEY_UP, up)) { + selectedY--; + if (selectedY < 0) + selectedY = 0; + } + if (didPress(KEY_DOWN, down)) { + selectedY++; + if (selectedY >= (int)rows.size()) + selectedY = rows.size() - 1; + } + if (didPress(KEY_B, b)) { + if (selectedNumber.size() > 0) + selectedNumber = selectedNumber.substr(0, selectedNumber.size() - 1); + else + return ""; + } + if (didPress(KEY_A, a)) { + if (selectedNumber.size() < LINK_MOBILE_MAX_PHONE_NUMBER_SIZE) + selectedNumber += rows[selectedY][selectedX]; + } + if (didPress(KEY_SELECT, select)) + selectedNumber = "127000000001"; + if (didPress(KEY_START, start)) + return selectedNumber; + + for (int y = 0; y < (int)rows.size(); y++) { + for (int x = 0; x < (int)rows[y].size(); x++) { + bool isSelected = selectedX == x && selectedY == y; + output += std::string("") + "|" + (isSelected ? "<" : " ") + + rows[y][x] + (isSelected ? ">" : " ") + "|"; + output += " "; + } + output += "\n"; + } + + output += + "\n (B = back)\n (A = select)\n (SELECT = localhost)\n (START = " + "confirm)"; + + VBlankIntrWait(); + log(output); + } +} + std::string getStateString(LinkMobile::State state) { switch (state) { case LinkMobile::State::NEEDS_RESET: @@ -257,7 +343,8 @@ std::string getErrorString(LinkMobile::Error error) { "\n CmdID: " + std::string(error.cmdIsSending ? ">" : "<") + "$" + toHex(error.cmdId) + "\n CmdResult: " + getResultString(error.cmdResult) + - "\n CmdErrorCode: " + std::to_string(error.cmdErrorCode) + "\n\n"; + "\n CmdErrorCode: " + std::to_string(error.cmdErrorCode) + + "\n ReqType: " + std::to_string(error.reqType) + "\n\n"; } std::string getErrorTypeString(LinkMobile::Error::Type errorType) { @@ -322,13 +409,6 @@ std::string toStr(char* chars, int size) { return std::string(copiedChars); } -void waitFor(u16 key) { - u16 keys; - do { - keys = ~REG_KEYS & KEY_ANY; - } while (!(keys & key)); -} - void wait(u32 verticalLines) { u32 count = 0; u32 vCount = REG_VCOUNT; @@ -341,8 +421,21 @@ void wait(u32 verticalLines) { }; } -void hang() { - waitFor(KEY_DOWN); +bool didPress(u16 key, bool& pressed) { + u16 keys = ~REG_KEYS & KEY_ANY; + bool isPressedNow = false; + if ((keys & key) && !pressed) { + pressed = true; + isPressedNow = true; + } + if (pressed && !(keys & key)) + pressed = false; + return isPressedNow; +} + +void waitForA() { + while (!didPress(KEY_A, a)) + ; } template @@ -353,6 +446,3 @@ template rc[i] = digits[(w >> j) & 0x0f]; return rc; } - -// TODO: ADD NUMPAD -// TODO: ADD SELECTIVE SEND diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 0f3b74a..3d42acc 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -27,6 +27,7 @@ void connect(); void messageLoop(); void log(std::string text); void waitFor(u16 key); +bool didPress(u16 key, bool& pressed); void wait(u32 verticalLines); void hang(); @@ -110,28 +111,16 @@ start: } // START = Activate - if ((keys & KEY_START) && !activating) { - activating = true; + if (didPress(KEY_START, activating)) activate(); - } - if (activating && !(keys & KEY_START)) - activating = false; // L = Serve - if ((keys & KEY_L) && !serving) { - serving = true; + if (didPress(KEY_L, serving)) serve(); - } - if (serving && !(keys & KEY_L)) - serving = false; // R = Connect - if (!connecting && (keys & KEY_R)) { - connecting = true; + if (didPress(KEY_R, connecting)) connect(); - } - if (connecting && !(keys & KEY_R)) - connecting = false; VBlankIntrWait(); } @@ -346,8 +335,7 @@ void messageLoop() { } // Packet loss check setting - if (!switching && (keys & KEY_UP)) { - switching = true; + if (didPress(KEY_UP, switching)) { altView = !altView; #ifndef PROFILING_ENABLED if (!altView) { @@ -358,8 +346,6 @@ void messageLoop() { } #endif } - if (switching && (!(keys & KEY_UP))) - switching = false; // Normal output std::string output = @@ -458,6 +444,18 @@ void waitFor(u16 key) { } while (!(keys & key)); } +bool didPress(u16 key, bool& pressed) { + u16 keys = ~REG_KEYS & KEY_ANY; + bool isPressedNow = false; + if ((keys & key) && !pressed) { + pressed = true; + isPressedNow = true; + } + if (pressed && !(keys & key)) + pressed = false; + return isPressedNow; +} + void wait(u32 verticalLines) { u32 count = 0; u32 vCount = REG_VCOUNT; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 554a6e3..49e228c 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -33,11 +33,12 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; -#define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 254 +#define LINK_MOBILE_MAX_USER_TRANSFER_LENGTH 254 +#define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 #define LINK_MOBILE_MAX_PHONE_NUMBER_SIZE 32 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) -#define LINK_MOBILE_DEFAULT_TIMEOUT 480 +#define LINK_MOBILE_DEFAULT_TIMEOUT (60 * 3) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 #define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") @@ -152,6 +153,7 @@ class LinkMobile { CommandResult cmdResult = CommandResult::PENDING; u8 cmdErrorCode = 0; bool cmdIsSending = false; + int reqType = -1; }; struct ConfigurationData { @@ -175,7 +177,7 @@ class LinkMobile { } __attribute__((packed)); struct DataTransfer { - u8 data[LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH] = {}; + u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; u8 size = 0; bool completed = false; }; @@ -534,7 +536,7 @@ class LinkMobile { auto request = userRequests.peek(); request.timeout++; - if (request.timeout >= config.timeout) + if (shouldAbortOnRequestTimeout() && request.timeout >= config.timeout) return abort(Error::Type::TIMEOUT); switch (request.type) { @@ -843,15 +845,19 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); } - void pushRequest(UserRequest userRequest) { - userRequest.timeout = 0; - userRequests.syncPush(userRequest); + void pushRequest(UserRequest request) { + request.timeout = 0; + userRequests.syncPush(request); } bool shouldAbortOnStateTimeout() { return state > NEEDS_RESET && state < SESSION_ACTIVE; } + bool shouldAbortOnRequestTimeout() { + return userRequests.peek().type != UserRequest::Type::CALL; + } + bool shouldAbortOnCommandFailure() { u8 commandId = asyncCommand.relatedCommandId(); return asyncCommand.direction == AsyncCommand::Direction::SENDING || @@ -889,13 +895,16 @@ class LinkMobile { } void abort(Error::Type errorType, bool fatal = true) { - auto newError = Error{.type = errorType, - .state = state, - .cmdId = asyncCommand.relatedCommandId(), - .cmdResult = asyncCommand.result, - .cmdErrorCode = asyncCommand.errorCode, - .cmdIsSending = asyncCommand.direction == - AsyncCommand::Direction::SENDING}; + auto newError = Error{ + .type = errorType, + .state = state, + .cmdId = asyncCommand.relatedCommandId(), + .cmdResult = asyncCommand.result, + .cmdErrorCode = asyncCommand.errorCode, + .cmdIsSending = + asyncCommand.direction == AsyncCommand::Direction::SENDING, + + .reqType = userRequests.isEmpty() ? -1 : userRequests.peek().type}; _LMLOG_( "!! %s:\n error: %d\n cmdId: %s$%X\n cmdResult: %d\n " From d957b50ed3380890d94b809697f27c3995d7d793 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 09:21:28 -0300 Subject: [PATCH 105/195] Adding Doxygen docs --- examples/LinkMobile_demo/src/main.cpp | 12 +- lib/LinkMobile.hpp | 151 +++++++++++++++++++++++--- 2 files changed, 142 insertions(+), 21 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 8224a96..78fb4f2 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -45,7 +45,7 @@ start: "Press A to start"); waitForA(); - // (1) Create a LinkMobile instance + // (1) Create a LinkWireless instance linkMobile = new LinkMobile(); // (2) Add the required interrupt service routines @@ -159,6 +159,7 @@ start: goto start; } else if (linkMobile->canShutdown()) { + // (7) Turn off the adapter linkMobile->shutdown(); } } @@ -174,15 +175,19 @@ start: // R = Call someone if (didPress(KEY_R, r)) { std::string number = getNumberInput(); - if (number != "") + if (number != "") { + // (4) Call someone linkMobile->call(number.c_str()); + } } break; } case LinkMobile::State::CALL_ESTABLISHED: { // L = hang up - if (didPress(KEY_L, l)) + if (didPress(KEY_L, l)) { + // (6) Hang up linkMobile->hangUp(); + } break; } default: { @@ -199,6 +204,7 @@ start: } void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text) { + // (5) Send/receive data for (u32 i = 0; i < text.size(); i++) dataTransfer.data[i] = text[i]; dataTransfer.data[text.size()] = '\0'; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 49e228c..25f8b22 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -3,6 +3,7 @@ // -------------------------------------------------------------------------- // A high level driver for the Mobile Adapter GB. +// Check out the REON project -> https://github.com/REONTeam // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: @@ -14,6 +15,21 @@ // irq_add(II_TIMER3, LINK_MOBILE_ISR_TIMER); // - 3) Initialize the library with: // linkMobile->activate(); +// // (do something until `linkMobile->isSessionActive()` returns `true`) +// - 4) Call someone: +// linkMobile->call("127000000001"); +// // (do something until `linkMobile->isConnected()` returns `true`) +// - 5) Send/receive data: +// LinkMobile::DataTransfer dataTransfer = { .size = 5 }; +// for (u32 i = 0; i < 5; i++) +// dataTransfer.data[i] = ((u8*)"hello")[i]; +// linkMobile->transfer(dataTransfer, &dataTransfer); +// // (do something until `dataTransfer.completed` is `true`) +// // (use `dataTransfer` as the received data) +// - 6) Hang up: +// linkMobile->hangUp(); +// - 7) Turn off the adapter: +// linkMobile->shutdown(); // -------------------------------------------------------------------------- // (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. // That causes packet loss. You REALLY want to use libugba's instead. @@ -27,7 +43,10 @@ #include "LinkSPI.hpp" /** - * @brief ... + * @brief Request queue size (how many commands can be queued at the same time). + * The default value is `10`, which seems fine for most games. + * \warning This affects how much memory is allocated. With the default value, + * it's around 3 KB. */ #define LINK_MOBILE_QUEUE_SIZE 10 @@ -48,6 +67,10 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define _LMLOG_(...) #endif +/** + * @brief A high level driver for the Mobile Adapter GB. + * \warning Check out the REON project -> https://github.com/REONTeam + */ class LinkMobile { private: using u32 = unsigned int; @@ -91,7 +114,6 @@ class LinkMobile { static constexpr int COMMAND_CLOSE_UDP_CONNECTION = 0x26; static constexpr int COMMAND_DNS_QUERY = 0x28; static constexpr int COMMAND_ERROR_STATUS = 0x6E | OR_VALUE; - static constexpr u8 WAIT_TICKS[] = {4, 8}; static constexpr int LOGIN_PARTS_SIZE = 8; static constexpr u8 LOGIN_PARTS[] = {0x4e, 0x49, 0x4e, 0x54, @@ -135,7 +157,7 @@ class LinkMobile { WEIRD_ERROR_CODE }; - enum Role { NOT_CONNECTED, CALLER, RECEIVER }; + enum Role { NO_P2P_CONNECTION, CALLER, RECEIVER }; struct Error { enum Type { @@ -182,16 +204,27 @@ class LinkMobile { bool completed = false; }; + /** + * @brief Constructs a new LinkMobile object. + * @param timeout Number of *frames* without completing a request to reset a + * connection. + * @param timerId GBA Timer to use for waiting. + */ explicit LinkMobile(u32 timeout = LINK_MOBILE_DEFAULT_TIMEOUT, u8 timerId = LINK_MOBILE_DEFAULT_TIMER_ID) { this->config.timeout = timeout; this->config.timerId = timerId; } + /** + * @brief Returns whether the library is active or not. + */ [[nodiscard]] bool isActive() { return isEnabled; } /** - * @brief ... + * @brief Activates the library. After some time, if an adapter is connected, + * the state will be changed to `SESSION_ACTIVE`. If not, the state will be + * `NEEDS_RESET`, and you can retrieve the error with `getError()`. */ void activate() { error = {}; @@ -210,6 +243,25 @@ class LinkMobile { start(); } + /** + * @brief Deactivates the library, resetting the serial mode to GPIO. + * Calling `shutdown()` first is recommended, but the adapter will put itself + * in sleep mode after 3 seconds anyway. + */ + void deactivate() { + error = {}; + isEnabled = false; + resetState(); + stop(); + } + + /** + * @brief Gracefully shutdowns the adapter, closing all connections. + * After some time, the state will be changed to `SHUTDOWN`, and only then + * it's safe to call `deactivate()`. + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active session or available request slots. + */ bool shutdown() { if (!canShutdown() || userRequests.isFull()) return false; @@ -218,13 +270,16 @@ class LinkMobile { return true; } - void deactivate() { - error = {}; - isEnabled = false; - resetState(); - stop(); - } - + /** + * @brief Initiates a P2P connection with a `phoneNumber`. After some time, + * the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the + * connection fails or ends. + * @param phoneNumber The phone number to call. In REON/libmobile this can be + * a number assigned by the relay server, or a 12-digit IPv4 address (for + * example, "127000000001" would be 127.0.0.1). + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active session or available request slots. + */ bool call(const char* phoneNumber) { if (state != SESSION_ACTIVE || userRequests.isFull()) return false; @@ -237,8 +292,14 @@ class LinkMobile { } /** - * @brief ... - * @param data The value to be sent. + * @brief Requests a data transfer within a P2P connection and responds the + * received data. + * @param dataToSend The data to send, up to 254 bytes. + * @param receivedData A pointer to a `LinkWireless::DataTransfer` struct that + * will be filled with data. It can point to `dataToSend`. When the transfer + * is completed, the `completed` field will be `true`. + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active call or available request slots. */ bool transfer(DataTransfer dataToSend, DataTransfer* receivedData) { if (state != CALL_ESTABLISHED || userRequests.isFull()) @@ -255,6 +316,11 @@ class LinkMobile { return true; } + /** + * @brief Hangs up the current P2P call. + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active call or available request slots. + */ bool hangUp() { if (state != CALL_ESTABLISHED || userRequests.isFull()) return false; @@ -263,7 +329,15 @@ class LinkMobile { return true; } - bool readConfiguration(ConfigurationData& configurationData) { + /** + * @brief Returns the adapter configuration. + * @param configurationData A structure that will be filled with the + * configuration data. If the adapter has an active session, the data is + * already loaded, so it's instantaneous. + * \warning Returns `true` if `configurationData` has been filled, or `false` + * if there's no active session. + */ + [[nodiscard]] bool readConfiguration(ConfigurationData& configurationData) { if (!isSessionActive()) return false; @@ -271,8 +345,16 @@ class LinkMobile { return true; } + /** + * @brief Returns the current state. + * @return One of the enum values from `LinkMobile::State`. + */ [[nodiscard]] State getState() { return state; } + /** + * @brief Returns the current role in the P2P connection. + * @return One of the enum values from `LinkMobile::Role`. + */ [[nodiscard]] Role getRole() { return role; } /** @@ -283,22 +365,38 @@ class LinkMobile { } /** - * @brief + * @brief Returns `true` if a P2P call is established (the state is + * `CALL_ESTABLISHED`). */ [[nodiscard]] bool isConnected() { return state == CALL_ESTABLISHED; } + /** + * @brief Returns `true` if there's an active session and there's no previous + * shutdown requests. + */ [[nodiscard]] bool canShutdown() { return isSessionActive() && state != SHUTDOWN_REQUESTED; } + /** + * @brief Returns the current operation mode (`LinkSPI::DataSize`). + */ [[nodiscard]] LinkSPI::DataSize getDataSize() { return linkSPI->getDataSize(); } + /** + * @brief Returns details about the last error that caused the connection to + * be aborted. + */ [[nodiscard]] Error getError() { return error; } ~LinkMobile() { delete linkSPI; } + /** + * @brief This method is called by the VBLANK interrupt handler. + * \warning This is internal API! + */ void _onVBlank() { if (!isEnabled) return; @@ -320,6 +418,10 @@ class LinkMobile { processNewFrame(); } + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ void _onSerial() { if (!isEnabled) return; @@ -354,6 +456,10 @@ class LinkMobile { } } + /** + * @brief This method is called by the TIMER interrupt handler. + * \warning This is internal API! + */ void _onTimer() { if (!isEnabled || !hasPendingTransfer) return; @@ -514,7 +620,7 @@ class LinkMobile { u32 waitFrames = 0; u32 timeoutStateFrames = 0; u32 pingFrameCount = 0; - Role role = Role::NOT_CONNECTED; + Role role = Role::NO_P2P_CONNECTION; LinkSPI* linkSPI = new LinkSPI(); State state = NEEDS_RESET; PacketData nextCommandData; @@ -885,7 +991,7 @@ class LinkMobile { } void setState(State newState) { - role = Role::NOT_CONNECTED; + role = Role::NO_P2P_CONNECTION; State oldState = state; state = newState; timeoutStateFrames = 0; @@ -935,7 +1041,7 @@ class LinkMobile { this->asyncCommand.reset(); this->waitFrames = 0; this->timeoutStateFrames = 0; - this->role = Role::NOT_CONNECTED; + this->role = Role::NO_P2P_CONNECTION; this->nextCommandDataSize = 0; this->hasPendingTransfer = false; this->pendingTransfer = 0; @@ -1277,14 +1383,23 @@ class LinkMobile { extern LinkMobile* linkMobile; +/** + * @brief VBLANK interrupt handler. + */ inline void LINK_MOBILE_ISR_VBLANK() { linkMobile->_onVBlank(); } +/** + * @brief SERIAL interrupt handler. + */ inline void LINK_MOBILE_ISR_SERIAL() { linkMobile->_onSerial(); } +/** + * @brief TIMER interrupt handler. + */ inline void LINK_MOBILE_ISR_TIMER() { linkMobile->_onTimer(); } From 8b1e426609cdc0496e51f99a2deaace2bb6d13aa Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 17 Aug 2024 10:44:56 -0300 Subject: [PATCH 106/195] Adding LinkMobile documentation --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++-- lib/LinkMobile.hpp | 22 ++++++++--------- lib/LinkPS2Mouse.hpp | 2 +- 3 files changed, 67 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 684e33c..0a29db2 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. - [🔌](#-LinkGPIO) [LinkGPIO.hpp](lib/LinkGPIO.hpp): Use the Link Port however you want to control **any device** (like LEDs, rumble motors, and that kind of stuff)! - [🔗](#-LinkSPI) [LinkSPI.hpp](lib/LinkSPI.hpp): Connect with a PC (like a **Raspberry Pi**) or another GBA (with a GBC Link Cable) using this mode. Transfer up to 2Mbit/s! - [⏱️](#%EF%B8%8F-LinkUART) [LinkUART.hpp](lib/LinkUART.hpp): Easily connect to **any PC** using a USB to UART cable! +- [📱](#-LinkMobile) [LinkMobile.hpp](lib/LinkMobile.hpp): Connect to **the internet** using the *Mobile Adapter GB*, brought back to life thanks to the [REON](https://github.com/REONTeam) project! - [🖱️](#%EF%B8%8F-LinkPS2Mouse) [LinkPS2Mouse.hpp](lib/LinkPS2Mouse.hpp): Connect a **PS/2 mouse** to the GBA for extended controls! - [⌨️](#%EF%B8%8F-LinkPS2Keyboard) [LinkPS2Keyboard.hpp](lib/LinkPS2Keyboard.hpp): Connect a **PS/2 keyboard** to the GBA for extended controls! @@ -402,12 +403,62 @@ The GBA operates using `1` stop bit, but everything else can be configured. By d - Green wire (`TX`) -> GBA `SI`. - White wire (`RX`) -> GBA `SO`. +# 📱 LinkMobile + +*(aka Mobile Adapter GB)* + +This is a driver for an accessory that enables online P2P connections between 2 players, or up to two TCP/UDP connections. The protocol was reverse-engineered by the *REON Team*. + +The original accessory was sold in Japan only and doesn't work anymore since it relies on old tech, but REON has created an open-source implementation called [libmobile](https://github.com/REONTeam/libmobile), as well as support for emulators and microcontrollers. + +![screenshot](https://github.com/user-attachments/assets/ff0ea09f-807c-4ba9-9dac-9cae8f831408) + +## Constructor + +`new LinkMobile(...)` accepts these **optional** parameters: + +Name | Type | Default | Description +--- | --- | --- | --- +`timeout` | **u32** | `180` | Number of *frames* without completing a request to reset a connection. +`timerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. + +You can update these values at any time without creating a new instance: +- Call `deactivate()`. +- Mutate the `config` property. +- Call `activate()`. + +You can also change these compile-time constants: +- `LINK_MOBILE_QUEUE_SIZE`: to set a custom request queue size (how many commands can be queued at the same time). The default value is `10`, which seems fine for most games. + - This affects how much memory is allocated. With the default value, it's around `3` KB. + +## Methods + +- All actions are asynchronous/nonblocking. That means, they will return `true` if nothing is awfully wrong, but the actual consequence will occur some frames later. You can call `getState()` at any time to know what it's doing. +- On fatal errors, the library will transition to a `NEEDS_RESET` state. In that case, you can call `getError()` to know more details on what happened, and then `activate()` to restart. +- When calling `deactivate()`, the adapter automatically turns itself off after `3` seconds of inactivity. However, to gracefully turn it off, it's recommended to call `shutdown()` first, wait until the state is `SHUTDOWN`, and then `deactivate()`. + +Name | Return type | Description +--- | --- | --- +`isActive()` | **bool** | Returns whether the library is active or not. +`activate()` | - | Activates the library. After some time, if an adapter is connected, the state will be changed to `SESSION_ACTIVE`. If not, the state will be `NEEDS_RESET`, and you can retrieve the error with `getError()`. +`deactivate()` | - | Deactivates the library, resetting the serial mode to GPIO. Calling `shutdown()` first is recommended, but the adapter will put itself in sleep mode after 3 seconds anyway. +`shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. +`call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the connection fails or ends. In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). +`transfer(dataToSend, receivedData)` | **bool** | Requests a data transfer (up to `254` bytes) within a P2P connection and responds the received data. The `receivedData` is a pointer to a `LinkWireless::DataTransfer` struct that will be filled with data. It can point to `dataToSend`. When the transfer is completed, the `completed` field will be `true`. +`hangUp()` | **bool** | Hangs up the current P2P call. +`readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. +`getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::SESSION_ACTIVE_ISP`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). +`getRole()` | **LinkMobile::Role** | Returns the current role in the P2P connection (one of `LinkMobile::Role::NO_P2P_CONNECTION`, `LinkMobile::Role::CALLER`, or `LinkMobile::Role::RECEIVER`). +`isConnected()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). +`isSessionActive()` | **bool** | Returns `true` if the session is active. +`canShutdown()` | **bool** | Returns `true` if there's an active session and there's no previous shutdown requests. +`getDataSize()` | **LinkSPI::DataSize** | Returns the current operation mode (`LinkSPI::DataSize`). +`getError()` | **LinkMobile::Error** | Returns details about the last error that caused the connection to be aborted. + # 🖱️ LinkPS2Mouse A PS/2 mouse driver for the GBA. Use it to add mouse support to your homebrew games. It's a straight port from [this library](https://github.com/kristopher/PS2-Mouse-Arduino). -⚠️ calling `activate()` or `report(...)` could freeze the system if nothing is connected: detecting timeouts using timer interrupts is the user's responsibility. - ![photo](https://github.com/afska/gba-link-connection/assets/1631752/6856ff0d-0f06-4a9d-8ded-280052e02b8d) ## Constructor @@ -423,6 +474,8 @@ Name | Return type | Description `deactivate()` | - | Deactivates the library. `report(data[3])` | - | Fills the `data` int array with a report. The first int contains *clicks* that you can check against the bitmasks `LINK_PS2_MOUSE_LEFT_CLICK`, `LINK_PS2_MOUSE_MIDDLE_CLICK`, and `LINK_PS2_MOUSE_RIGHT_CLICK`. The second int is the *X movement*, and the third int is the *Y movement*. +⚠️ calling `activate()` or `report(...)` could freeze the system if nothing is connected: detecting timeouts using interrupts is the user's responsibility. + ## Pinout ``` diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 25f8b22..6c5982b 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -207,7 +207,7 @@ class LinkMobile { /** * @brief Constructs a new LinkMobile object. * @param timeout Number of *frames* without completing a request to reset a - * connection. + * connection. Defaults to 180 (3 seconds). * @param timerId GBA Timer to use for waiting. */ explicit LinkMobile(u32 timeout = LINK_MOBILE_DEFAULT_TIMEOUT, @@ -245,8 +245,8 @@ class LinkMobile { /** * @brief Deactivates the library, resetting the serial mode to GPIO. - * Calling `shutdown()` first is recommended, but the adapter will put itself - * in sleep mode after 3 seconds anyway. + * \warning Calling `shutdown()` first is recommended, but the adapter will + * put itself in sleep mode after 3 seconds anyway. */ void deactivate() { error = {}; @@ -256,7 +256,7 @@ class LinkMobile { } /** - * @brief Gracefully shutdowns the adapter, closing all connections. + * @brief Gracefully shuts down the adapter, closing all connections. * After some time, the state will be changed to `SHUTDOWN`, and only then * it's safe to call `deactivate()`. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no @@ -330,7 +330,7 @@ class LinkMobile { } /** - * @brief Returns the adapter configuration. + * @brief Retrieves the adapter configuration. * @param configurationData A structure that will be filled with the * configuration data. If the adapter has an active session, the data is * already loaded, so it's instantaneous. @@ -357,6 +357,12 @@ class LinkMobile { */ [[nodiscard]] Role getRole() { return role; } + /** + * @brief Returns `true` if a P2P call is established (the state is + * `CALL_ESTABLISHED`). + */ + [[nodiscard]] bool isConnected() { return state == CALL_ESTABLISHED; } + /** * @brief Returns `true` if the session is active. */ @@ -364,12 +370,6 @@ class LinkMobile { return state >= SESSION_ACTIVE && state <= SHUTDOWN_REQUESTED; } - /** - * @brief Returns `true` if a P2P call is established (the state is - * `CALL_ESTABLISHED`). - */ - [[nodiscard]] bool isConnected() { return state == CALL_ESTABLISHED; } - /** * @brief Returns `true` if there's an active session and there's no previous * shutdown requests. diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index f395712..c8d922b 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -23,7 +23,7 @@ // -------------------------------------------------------------------------- // considerations: // - `activate()` or `report(...)` could freeze the system if not connected! -// - detecting timeouts using timer interrupts is the user's responsibility! +// - detecting timeouts using interrupts is the user's responsibility! // -------------------------------------------------------------------------- // ____________ // | Pinout | From e7b9f0026694e390ca914a885cd66aa46a8e6f82 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 01:29:25 -0300 Subject: [PATCH 107/195] Removing BAD_CONFIGURATION_CHECKSUM --- examples/LinkMobile_demo/src/main.cpp | 2 -- lib/LinkMobile.hpp | 5 ----- 2 files changed, 7 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 78fb4f2..0a66392 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -361,8 +361,6 @@ std::string getErrorTypeString(LinkMobile::Error::Type errorType) { return "COMMAND_FAILED"; case LinkMobile::Error::Type::WEIRD_RESPONSE: return "WEIRD_RESPONSE"; - case LinkMobile::Error::Type::BAD_CONFIGURATION_CHECKSUM: - return "BAD_CONFIGURATION_CHECKSUM"; case LinkMobile::Error::Type::TIMEOUT: return "TIMEOUT"; default: diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 6c5982b..002525b 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -165,7 +165,6 @@ class LinkMobile { ADAPTER_NOT_CONNECTED, COMMAND_FAILED, WEIRD_RESPONSE, - BAD_CONFIGURATION_CHECKSUM, TIMEOUT }; @@ -819,10 +818,6 @@ class LinkMobile { adapterConfiguration.bytes[offset + i] = asyncCommand.cmd.data.bytes[1 + i]; - if (offset == CONFIGURATION_DATA_CHUNK && - !adapterConfiguration.isValid()) - return abort(Error::Type::BAD_CONFIGURATION_CHECKSUM); - if (offset == 0) cmdReadConfigurationData(CONFIGURATION_DATA_CHUNK, CONFIGURATION_DATA_CHUNK); From fc68b304f6da8db8ec5fc2ab3cdc2e558afbc381 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 01:40:54 -0300 Subject: [PATCH 108/195] Adding isConfigurationValid() --- README.md | 1 + examples/LinkMobile_demo/src/main.cpp | 7 ++++--- lib/LinkMobile.hpp | 19 +++++++++++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0a29db2..ab756e5 100644 --- a/README.md +++ b/README.md @@ -449,6 +449,7 @@ Name | Return type | Description `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::SESSION_ACTIVE_ISP`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). `getRole()` | **LinkMobile::Role** | Returns the current role in the P2P connection (one of `LinkMobile::Role::NO_P2P_CONNECTION`, `LinkMobile::Role::CALLER`, or `LinkMobile::Role::RECEIVER`). +`isConfigurationValid()` | **int** | Returns whether the adapter has been configured or not. Returns `1` = yes, `0` = no, `-1` = unknown (no session active). `isConnected()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). `isSessionActive()` | **bool** | Returns `true` if the session is active. `canShutdown()` | **bool** | Returns `true` if there's an active session and there's no previous shutdown requests. diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 0a66392..92d546b 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -217,8 +217,8 @@ std::string readConfiguration() { if (!linkMobile->readConfiguration(data)) return "Read failed :("; - return ("Magic:\n " + toStr(data.magic, 2) + "\nIsRegistering:\n " + - (data.isRegistering ? "Yes" : "No") + "\nPrimary DNS:\n " + + return ("Magic:\n " + toStr(data.magic, 2) + "\nRegistered:\n $" + + toHex(data.registrationState) + "\nPrimary DNS:\n " + std::to_string(data.primaryDNS[0]) + "." + std::to_string(data.primaryDNS[1]) + "." + std::to_string(data.primaryDNS[2]) + "." + @@ -229,7 +229,8 @@ std::string readConfiguration() { std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + - "\nPOP Server:\n " + toStr(data.popServer, 19) + "\n\nMode: " + + "\nPOP Server:\n " + toStr(data.popServer, 19) + "\nIs Valid:\n " + + std::to_string(linkMobile->isConfigurationValid()) + "\n\nMode: " + (linkMobile->getDataSize() == LinkSPI::DataSize::SIZE_32BIT ? "SIO32" : "SIO8")); diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 002525b..e5ee945 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -179,7 +179,7 @@ class LinkMobile { struct ConfigurationData { char magic[2]; - bool isRegistering; + u8 registrationState; u8 _unused1_; u8 primaryDNS[4]; u8 secondaryDNS[4]; @@ -356,6 +356,17 @@ class LinkMobile { */ [[nodiscard]] Role getRole() { return role; } + /** + * @brief Returns whether the adapter has been configured or not. + * @return 1 = yes, 0 = no, -1 = unknown (no session active). + */ + [[nodiscard]] int isConfigurationValid() { + if (!isSessionActive()) + return -1; + + return (int)adapterConfiguration.isValid(); + } + /** * @brief Returns `true` if a P2P call is established (the state is * `CALL_ESTABLISHED`). @@ -497,7 +508,11 @@ class LinkMobile { ConfigurationData fields; char bytes[CONFIGURATION_DATA_SIZE]; - bool isValid() { return calculatedChecksum() == reportedChecksum(); } + bool isValid() { + return fields.magic[0] == 'M' && fields.magic[1] == 'A' && + (fields.registrationState & 1) == 1 && + calculatedChecksum() == reportedChecksum(); + } u16 calculatedChecksum() { u16 result = 0; From bbcfc99a0d2201d62fcc96f6a5368aa89b8c4ab6 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 01:46:09 -0300 Subject: [PATCH 109/195] Renaming isConnected() => isP2PConnected() --- README.md | 2 +- examples/LinkMobile_demo/src/main.cpp | 4 ++-- lib/LinkMobile.hpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ab756e5..0e79d03 100644 --- a/README.md +++ b/README.md @@ -450,7 +450,7 @@ Name | Return type | Description `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::SESSION_ACTIVE_ISP`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). `getRole()` | **LinkMobile::Role** | Returns the current role in the P2P connection (one of `LinkMobile::Role::NO_P2P_CONNECTION`, `LinkMobile::Role::CALLER`, or `LinkMobile::Role::RECEIVER`). `isConfigurationValid()` | **int** | Returns whether the adapter has been configured or not. Returns `1` = yes, `0` = no, `-1` = unknown (no session active). -`isConnected()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). +`isP2PConnected()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). `isSessionActive()` | **bool** | Returns `true` if the session is active. `canShutdown()` | **bool** | Returns `true` if there's an active session and there's no previous shutdown requests. `getDataSize()` | **LinkSPI::DataSize** | Returns the current operation mode (`LinkSPI::DataSize`). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 92d546b..95844ed 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -88,14 +88,14 @@ start: output += "\nR = Call someone\n"; output += "\n (A = ok)\n (SELECT = stop)"; } else { - if (linkMobile->isConnected()) { + if (linkMobile->isP2PConnected()) { output += "\n (A = send)"; output += "\n (L = hang up)"; } output += "\n (SELECT = stop)"; } - if (linkMobile->isConnected()) { + if (linkMobile->isP2PConnected()) { if (!isConnected) { isConnected = true; outgoingData = linkMobile->getRole() == LinkMobile::Role::CALLER diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index e5ee945..41f504d 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -18,7 +18,7 @@ // // (do something until `linkMobile->isSessionActive()` returns `true`) // - 4) Call someone: // linkMobile->call("127000000001"); -// // (do something until `linkMobile->isConnected()` returns `true`) +// // (do something until `linkMobile->isP2PConnected()` returns `true`) // - 5) Send/receive data: // LinkMobile::DataTransfer dataTransfer = { .size = 5 }; // for (u32 i = 0; i < 5; i++) @@ -371,7 +371,7 @@ class LinkMobile { * @brief Returns `true` if a P2P call is established (the state is * `CALL_ESTABLISHED`). */ - [[nodiscard]] bool isConnected() { return state == CALL_ESTABLISHED; } + [[nodiscard]] bool isP2PConnected() { return state == CALL_ESTABLISHED; } /** * @brief Returns `true` if the session is active. From a0221f29713b0cddb5787598c9f722344373a04b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 01:57:00 -0300 Subject: [PATCH 110/195] Request timeout always active? --- lib/LinkMobile.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 41f504d..4c23e24 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -970,9 +970,7 @@ class LinkMobile { return state > NEEDS_RESET && state < SESSION_ACTIVE; } - bool shouldAbortOnRequestTimeout() { - return userRequests.peek().type != UserRequest::Type::CALL; - } + bool shouldAbortOnRequestTimeout() { return true; } bool shouldAbortOnCommandFailure() { u8 commandId = asyncCommand.relatedCommandId(); From 0f2d09229f705ab4d7dcf05fdcd30b74732377d7 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 04:09:43 -0300 Subject: [PATCH 111/195] Starting ISP connection --- README.md | 2 +- examples/LinkMobile_demo/src/main.cpp | 48 ++++++++++-------- lib/LinkMobile.hpp | 70 ++++++++++++++++++++++++--- 3 files changed, 92 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 0e79d03..7a2eda8 100644 --- a/README.md +++ b/README.md @@ -447,7 +447,7 @@ Name | Return type | Description `transfer(dataToSend, receivedData)` | **bool** | Requests a data transfer (up to `254` bytes) within a P2P connection and responds the received data. The `receivedData` is a pointer to a `LinkWireless::DataTransfer` struct that will be filled with data. It can point to `dataToSend`. When the transfer is completed, the `completed` field will be `true`. `hangUp()` | **bool** | Hangs up the current P2P call. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. -`getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::SESSION_ACTIVE_ISP`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). +`getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). `getRole()` | **LinkMobile::Role** | Returns the current role in the P2P connection (one of `LinkMobile::Role::NO_P2P_CONNECTION`, `LinkMobile::Role::CALLER`, or `LinkMobile::Role::RECEIVER`). `isConfigurationValid()` | **int** | Returns whether the adapter has been configured or not. Returns `1` = yes, `0` = no, `-1` = unknown (no session active). `isP2PConnected()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 95844ed..02a6594 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -85,7 +85,8 @@ start: output += "\n (SELECT = stop)"; } else if (linkMobile->getState() == LinkMobile::State::SESSION_ACTIVE) { output += "\nL = Read Configuration"; - output += "\nR = Call someone\n"; + output += "\nR = Call someone"; + output += "\nSTART = Call the ISP"; output += "\n (A = ok)\n (SELECT = stop)"; } else { if (linkMobile->isP2PConnected()) { @@ -217,23 +218,24 @@ std::string readConfiguration() { if (!linkMobile->readConfiguration(data)) return "Read failed :("; - return ("Magic:\n " + toStr(data.magic, 2) + "\nRegistered:\n $" + - toHex(data.registrationState) + "\nPrimary DNS:\n " + - std::to_string(data.primaryDNS[0]) + "." + - std::to_string(data.primaryDNS[1]) + "." + - std::to_string(data.primaryDNS[2]) + "." + - std::to_string(data.primaryDNS[3]) + "\nSecondary DNS:\n " + - std::to_string(data.secondaryDNS[0]) + "." + - std::to_string(data.secondaryDNS[1]) + "." + - std::to_string(data.secondaryDNS[2]) + "." + - std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + - toStr(data.loginID, 10) + "\nEmail:\n " + toStr(data.email, 24) + - "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + - "\nPOP Server:\n " + toStr(data.popServer, 19) + "\nIs Valid:\n " + - std::to_string(linkMobile->isConfigurationValid()) + "\n\nMode: " + - (linkMobile->getDataSize() == LinkSPI::DataSize::SIZE_32BIT - ? "SIO32" - : "SIO8")); + return ( + "Magic:\n " + toStr(data.magic, 2) + ", $" + + toHex(data.registrationState) + "\nPrimary DNS:\n " + + std::to_string(data.primaryDNS[0]) + "." + + std::to_string(data.primaryDNS[1]) + "." + + std::to_string(data.primaryDNS[2]) + "." + + std::to_string(data.primaryDNS[3]) + "\nSecondary DNS:\n " + + std::to_string(data.secondaryDNS[0]) + "." + + std::to_string(data.secondaryDNS[1]) + "." + + std::to_string(data.secondaryDNS[2]) + "." + + std::to_string(data.secondaryDNS[3]) + "\nLoginID:\n " + + toStr(data.loginId, 10) + "\nEmail:\n " + toStr(data.email, 24) + + "\nSMTP Server:\n " + toStr(data.smtpServer, 20) + "\nPOP Server:\n " + + toStr(data.popServer, 19) + "\nISP Number #1:\n " + + std::string(data._ispNumber1) + "\n\nIs Valid: " + + std::to_string(linkMobile->isConfigurationValid()) + "\nMode: " + + (linkMobile->getDataSize() == LinkSPI::DataSize::SIZE_32BIT ? "SIO32" + : "SIO8")); } std::string getNumberInput() { @@ -278,7 +280,7 @@ std::string getNumberInput() { return ""; } if (didPress(KEY_A, a)) { - if (selectedNumber.size() < LINK_MOBILE_MAX_PHONE_NUMBER_SIZE) + if (selectedNumber.size() < LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH) selectedNumber += rows[selectedY][selectedX]; } if (didPress(KEY_SELECT, select)) @@ -329,6 +331,14 @@ std::string getStateString(LinkMobile::State state) { return "CALLING"; case LinkMobile::State::CALL_ESTABLISHED: return "CALL_ESTABLISHED"; + case LinkMobile::State::ISP_CALL_REQUESTED: + return "ISP_CALL_REQUESTED"; + case LinkMobile::State::ISP_CALLING: + return "ISP_CALLING"; + case LinkMobile::State::ISP_LOGIN: + return "ISP_LOGIN"; + case LinkMobile::State::ISP_ACTIVE: + return "ISP_ACTIVE"; case LinkMobile::State::SHUTDOWN_REQUESTED: return "SHUTDOWN_REQUESTED"; case LinkMobile::State::ENDING_SESSION: diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 4c23e24..18dacac 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -54,7 +54,9 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_USER_TRANSFER_LENGTH 254 #define LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 -#define LINK_MOBILE_MAX_PHONE_NUMBER_SIZE 32 +#define LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH 32 +#define LINK_MOBILE_MAX_LOGIN_ID_LENGTH 32 +#define LINK_MOBILE_MAX_PASSWORD_LENGTH 32 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) #define LINK_MOBILE_DEFAULT_TIMEOUT (60 * 3) @@ -96,6 +98,7 @@ class LinkMobile { static constexpr int ACK_SENDER = 0; static constexpr int CONFIGURATION_DATA_SIZE = 192; static constexpr int CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; + static constexpr const char* FALLBACK_ISP_NUMBER = "#9677"; static constexpr int COMMAND_BEGIN_SESSION = 0x10; static constexpr int COMMAND_END_SESSION = 0x11; static constexpr int COMMAND_DIAL_TELEPHONE = 0x12; @@ -137,7 +140,10 @@ class LinkMobile { CALL_REQUESTED, CALLING, CALL_ESTABLISHED, - SESSION_ACTIVE_ISP, + ISP_CALL_REQUESTED, + ISP_CALLING, + ISP_LOGIN, + ISP_ACTIVE, SHUTDOWN_REQUESTED, ENDING_SESSION, WAITING_8BIT_SWITCH, @@ -183,7 +189,7 @@ class LinkMobile { u8 _unused1_; u8 primaryDNS[4]; u8 secondaryDNS[4]; - char loginID[10]; + char loginId[10]; u8 _unused2_[22]; char email[24]; u8 _unused3_[6]; @@ -195,6 +201,8 @@ class LinkMobile { u8 configurationSlot3[24]; u8 checksumHigh; u8 checksumLow; + + char _ispNumber1[16 + 1]; // (parsed from `configurationSlot1`) } __attribute__((packed)); struct DataTransfer { @@ -285,7 +293,39 @@ class LinkMobile { auto request = UserRequest{.type = UserRequest::Type::CALL}; copyString(request.phoneNumber, phoneNumber, - LINK_MOBILE_MAX_PHONE_NUMBER_SIZE); + LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH); + pushRequest(request); + return true; + } + + /** + * @brief Calls the ISP number registered in the adapter configuration, or a + * default number if the adapter hasn't been configured. Then, performs a + * login operation using the provided `password` and `loginId`. If `loginId` + * is empty and the adapter has been configured, it will use the one stored in + * the configuration. + * @param password The password, as a null-terminated string (max `32` + * characters). + * @param loginId The login ID, as a null-terminated string (max `32` + * characters). It can be empty if it's already stored in the configuration. + * \warning Non-blocking. Returns `true` immediately, or `false` + * if there's no active session, no available request slots, or no login ID. + */ + bool callISP(const char* password, const char* loginId = "") { + if (state != SESSION_ACTIVE || userRequests.isFull()) + return false; + + auto request = UserRequest{.type = UserRequest::Type::ISP_LOGIN}; + copyString(request.password, password, LINK_MOBILE_MAX_PASSWORD_LENGTH); + + if (std::strlen(loginId) > 0) + copyString(request.loginId, loginId, LINK_MOBILE_MAX_LOGIN_ID_LENGTH); + else if (adapterConfiguration.isValid()) + copyString(request.loginId, adapterConfiguration.fields._ispNumber1, + LINK_MOBILE_MAX_LOGIN_ID_LENGTH); + else + return false; + pushRequest(request); return true; } @@ -494,12 +534,14 @@ class LinkMobile { enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; struct UserRequest { - enum Type { CALL, TRANSFER, HANG_UP, SHUTDOWN }; + enum Type { CALL, ISP_LOGIN, TRANSFER, HANG_UP, SHUTDOWN }; Type type; - char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_SIZE + 1]; + char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH + 1]; DataTransfer send; DataTransfer* receive; + char loginId[LINK_MOBILE_MAX_LOGIN_ID_LENGTH + 1]; + char password[LINK_MOBILE_MAX_PASSWORD_LENGTH + 1]; bool commandSent; u32 timeout; }; @@ -833,11 +875,13 @@ class LinkMobile { adapterConfiguration.bytes[offset + i] = asyncCommand.cmd.data.bytes[1 + i]; - if (offset == 0) + if (offset == 0) { cmdReadConfigurationData(CONFIGURATION_DATA_CHUNK, CONFIGURATION_DATA_CHUNK); - else + } else { + setISPNumber(); setState(SESSION_ACTIVE); + } break; } case SESSION_ACTIVE: { @@ -961,6 +1005,16 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); } + void setISPNumber() { + static const char BCD[16] = "0123456789#*cde"; + + for (u32 i = 0; i < 8; i++) { + u8 b = adapterConfiguration.fields.configurationSlot1[i]; + adapterConfiguration.fields._ispNumber1[i * 2] = BCD[b >> 4]; + adapterConfiguration.fields._ispNumber1[i * 2 + 1] = BCD[b & 0xF]; + } + } + void pushRequest(UserRequest request) { request.timeout = 0; userRequests.syncPush(request); From c1f01cd5af455273bb00a72cf68b3e09d0815845 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 05:43:59 -0300 Subject: [PATCH 112/195] ISP calling and login completed --- README.md | 5 +- examples/LinkMobile_demo/src/main.cpp | 18 +++- lib/LinkMobile.hpp | 113 +++++++++++++++++++++++--- 3 files changed, 121 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7a2eda8..9049de9 100644 --- a/README.md +++ b/README.md @@ -445,12 +445,13 @@ Name | Return type | Description `shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. `call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the connection fails or ends. In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). `transfer(dataToSend, receivedData)` | **bool** | Requests a data transfer (up to `254` bytes) within a P2P connection and responds the received data. The `receivedData` is a pointer to a `LinkWireless::DataTransfer` struct that will be filled with data. It can point to `dataToSend`. When the transfer is completed, the `completed` field will be `true`. -`hangUp()` | **bool** | Hangs up the current P2P call. +`hangUp()` | **bool** | Hangs up the current P2P or ISP call. Closes all connections. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). `getRole()` | **LinkMobile::Role** | Returns the current role in the P2P connection (one of `LinkMobile::Role::NO_P2P_CONNECTION`, `LinkMobile::Role::CALLER`, or `LinkMobile::Role::RECEIVER`). `isConfigurationValid()` | **int** | Returns whether the adapter has been configured or not. Returns `1` = yes, `0` = no, `-1` = unknown (no session active). -`isP2PConnected()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). +`isConnectedP2P()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). +`isConnectedISP()` | **bool** | Returns `true` if an ISP call is active (the state is `ISP_ACTIVE`). `isSessionActive()` | **bool** | Returns `true` if the session is active. `canShutdown()` | **bool** | Returns `true` if there's an active session and there's no previous shutdown requests. `getDataSize()` | **LinkSPI::DataSize** | Returns the current operation mode (`LinkSPI::DataSize`). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 02a6594..7aff5a4 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -89,14 +89,16 @@ start: output += "\nSTART = Call the ISP"; output += "\n (A = ok)\n (SELECT = stop)"; } else { - if (linkMobile->isP2PConnected()) { + if (linkMobile->isConnectedP2P()) { output += "\n (A = send)"; output += "\n (L = hang up)"; + } else if (linkMobile->isConnectedISP()) { + output += "\n (L = hang up)"; } output += "\n (SELECT = stop)"; } - if (linkMobile->isP2PConnected()) { + if (linkMobile->isConnectedP2P()) { if (!isConnected) { isConnected = true; outgoingData = linkMobile->getRole() == LinkMobile::Role::CALLER @@ -181,9 +183,15 @@ start: linkMobile->call(number.c_str()); } } + + // START = Call the ISP + if (didPress(KEY_START, start)) { + linkMobile->callISP("asdasd"); + } break; } - case LinkMobile::State::CALL_ESTABLISHED: { + case LinkMobile::State::CALL_ESTABLISHED: + case LinkMobile::State::ISP_ACTIVE: { // L = hang up if (didPress(KEY_L, l)) { // (6) Hang up @@ -368,12 +376,16 @@ std::string getErrorTypeString(LinkMobile::Error::Type errorType) { switch (errorType) { case LinkMobile::Error::Type::ADAPTER_NOT_CONNECTED: return "ADAPTER_NOT_CONNECTED"; + case LinkMobile::Error::Type::ISP_LOGIN_FAILED: + return "ISP_LOGIN_FAILED"; case LinkMobile::Error::Type::COMMAND_FAILED: return "COMMAND_FAILED"; case LinkMobile::Error::Type::WEIRD_RESPONSE: return "WEIRD_RESPONSE"; case LinkMobile::Error::Type::TIMEOUT: return "TIMEOUT"; + case LinkMobile::Error::Type::WTF: + return "WTF"; default: return "?"; } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 18dacac..864a93f 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -18,7 +18,7 @@ // // (do something until `linkMobile->isSessionActive()` returns `true`) // - 4) Call someone: // linkMobile->call("127000000001"); -// // (do something until `linkMobile->isP2PConnected()` returns `true`) +// // (do something until `linkMobile->isConnectedP2P()` returns `true`) // - 5) Send/receive data: // LinkMobile::DataTransfer dataTransfer = { .size = 5 }; // for (u32 i = 0; i < 5; i++) @@ -30,6 +30,7 @@ // linkMobile->hangUp(); // - 7) Turn off the adapter: // linkMobile->shutdown(); +// TODO: DOCUMENT ISP METHODS // -------------------------------------------------------------------------- // (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. // That causes packet loss. You REALLY want to use libugba's instead. @@ -169,9 +170,11 @@ class LinkMobile { enum Type { NONE, ADAPTER_NOT_CONNECTED, + ISP_LOGIN_FAILED, COMMAND_FAILED, WEIRD_RESPONSE, - TIMEOUT + TIMEOUT, + WTF }; Error::Type type = Error::Type::NONE; @@ -356,12 +359,13 @@ class LinkMobile { } /** - * @brief Hangs up the current P2P call. + * @brief Hangs up the current P2P or ISP call. Closes all connections. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no * active call or available request slots. */ bool hangUp() { - if (state != CALL_ESTABLISHED || userRequests.isFull()) + if ((state != CALL_ESTABLISHED && state != ISP_ACTIVE) || + userRequests.isFull()) return false; pushRequest(UserRequest{.type = UserRequest::Type::HANG_UP}); @@ -411,7 +415,13 @@ class LinkMobile { * @brief Returns `true` if a P2P call is established (the state is * `CALL_ESTABLISHED`). */ - [[nodiscard]] bool isP2PConnected() { return state == CALL_ESTABLISHED; } + [[nodiscard]] bool isConnectedP2P() { return state == CALL_ESTABLISHED; } + + /** + * @brief Returns `true` if an ISP call is active (the state is + * `ISP_ACTIVE`). + */ + [[nodiscard]] bool isConnectedISP() { return state == ISP_ACTIVE; } /** * @brief Returns `true` if the session is active. @@ -544,6 +554,7 @@ class LinkMobile { char password[LINK_MOBILE_MAX_PASSWORD_LENGTH + 1]; bool commandSent; u32 timeout; + bool finished; }; union AdapterConfiguration { @@ -696,6 +707,11 @@ class LinkMobile { return; } + if (userRequests.peek().finished) + userRequests.pop(); + if (userRequests.isEmpty()) + return; + auto request = userRequests.peek(); request.timeout++; if (shouldAbortOnRequestTimeout() && request.timeout >= config.timeout) @@ -717,6 +733,23 @@ class LinkMobile { } break; } + case UserRequest::Type::ISP_LOGIN: { + if (state != SESSION_ACTIVE && state != ISP_CALL_REQUESTED && + state != ISP_CALLING) { + userRequests.pop(); + return; + } + if (state == SESSION_ACTIVE) + setState(ISP_CALL_REQUESTED); + + if (!asyncCommand.isActive && state == ISP_CALL_REQUESTED) { + setState(ISP_CALLING); + cmdDialTelephone(adapterConfiguration.isValid() + ? adapterConfiguration.fields._ispNumber1 + : FALLBACK_ISP_NUMBER); + } + break; + } case UserRequest::Type::TRANSFER: { if (state != CALL_ESTABLISHED) { userRequests.pop(); @@ -729,7 +762,7 @@ class LinkMobile { break; } case UserRequest::Type::HANG_UP: { - if (state != CALL_ESTABLISHED) { + if (state != CALL_ESTABLISHED && state != ISP_ACTIVE) { userRequests.pop(); return; } @@ -913,9 +946,10 @@ class LinkMobile { setState(SESSION_ACTIVE); return; } - if (!asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) return; + if (userRequests.isEmpty()) + return abort(Error::Type::WTF); auto request = userRequests.peek(); @@ -929,12 +963,50 @@ class LinkMobile { request.receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; request.receive->size = size; request.receive->completed = true; - userRequests.pop(); - } + request.finished = true; + } else + return abort(Error::Type::WTF); } else { setState(SESSION_ACTIVE); } } + case ISP_CALLING: { + if (!asyncCommand.respondsTo(COMMAND_DIAL_TELEPHONE)) + return; + if (userRequests.isEmpty()) + return abort(Error::Type::WTF); + + auto request = userRequests.peek(); + + if (request.type == UserRequest::ISP_LOGIN) { + if (asyncCommand.result == CommandResult::SUCCESS) { + setState(ISP_LOGIN); + cmdISPLogin(request.loginId, request.password); + } + request.finished = true; + } else + return abort(Error::Type::WTF); + + break; + } + case ISP_LOGIN: { + if (!asyncCommand.respondsTo(COMMAND_ISP_LOGIN)) + return; + if (asyncCommand.result != CommandResult::SUCCESS) + return abort(Error::Type::ISP_LOGIN_FAILED); + + setState(ISP_ACTIVE); + break; + } + case ISP_ACTIVE: { + if (asyncCommand.respondsTo(COMMAND_HANG_UP_TELEPHONE)) { + setState(SESSION_ACTIVE); + return; + } + + // TODO: IMPLEMENT + break; + } case ENDING_SESSION: { if (!asyncCommand.respondsTo(COMMAND_END_SESSION)) return; @@ -968,7 +1040,7 @@ class LinkMobile { void cmdEndSession() { sendCommandAsync(buildCommand(COMMAND_END_SESSION)); } - void cmdDialTelephone(char* phoneNumber) { + void cmdDialTelephone(const char* phoneNumber) { addData(DIAL_PHONE_FIRST_BYTE[adapterType], true); for (u32 i = 0; i < std::strlen(phoneNumber); i++) addData(phoneNumber[i]); @@ -1005,6 +1077,26 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_READ_CONFIGURATION_DATA, true)); } + void cmdISPLogin(const char* loginId, const char* password) { + u32 loginIdLength = std::strlen(loginId); + addData(loginIdLength, true); + for (u32 i = 0; i < loginIdLength; i++) + addData(loginId[i]); + + u32 passwordLength = std::strlen(password); + addData(passwordLength); + for (u32 i = 0; i < passwordLength; i++) + addData(password[i]); + + bool isConfigured = isConfigurationValid(); + for (u32 i = 0; i < 4; i++) + addData(isConfigured ? adapterConfiguration.fields.primaryDNS[i] : 0); + for (u32 i = 0; i < 4; i++) + addData(isConfigured ? adapterConfiguration.fields.secondaryDNS[i] : 0); + + sendCommandAsync(buildCommand(COMMAND_ISP_LOGIN, true)); + } + void setISPNumber() { static const char BCD[16] = "0123456789#*cde"; @@ -1017,6 +1109,7 @@ class LinkMobile { void pushRequest(UserRequest request) { request.timeout = 0; + request.finished = false; userRequests.syncPush(request); } From f74504bb3e32bbf5ae813f11a5a3bd1331134840 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 06:22:42 -0300 Subject: [PATCH 113/195] Adding password input to example --- examples/LinkMobile_demo/src/main.cpp | 106 ++++++++++++++++++++------ 1 file changed, 83 insertions(+), 23 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 7aff5a4..3006807 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -12,6 +12,15 @@ void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text); std::string readConfiguration(); std::string getNumberInput(); +std::string getPasswordInput(); +std::string getInput(std::string& field, + u32 maxChars, + std::string inputName, + std::vector> rows, + std::vector> altRows, + std::string defaultValue, + std::string defaultValueName, + std::string altName); std::string getStateString(LinkMobile::State state); std::string getErrorString(LinkMobile::Error error); std::string getErrorTypeString(LinkMobile::Error::Type errorType); @@ -28,6 +37,7 @@ bool left = false, right = false, up = false, down = false; bool a = false, b = false, l = false, r = false; bool start = false, select = false; std::string selectedNumber = ""; +std::string selectedPassword = ""; LinkMobile* linkMobile = NULL; @@ -186,7 +196,10 @@ start: // START = Call the ISP if (didPress(KEY_START, start)) { - linkMobile->callISP("asdasd"); + std::string password = getPasswordInput(); + if (password != "") { + linkMobile->callISP(password.c_str()); + } } break; } @@ -247,24 +260,67 @@ std::string readConfiguration() { } std::string getNumberInput() { - VBlankIntrWait(); - - int selectedX = 0; - int selectedY = 0; std::vector> rows; rows.push_back({"1", "2", "3"}); rows.push_back({"4", "5", "6"}); rows.push_back({"7", "8", "9"}); rows.push_back({"*", "0", "#"}); + std::vector> altRows; + + return getInput(selectedNumber, LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH, + "a number", rows, altRows, "127000000001", "localhost", ""); +} + +std::string getPasswordInput() { + std::vector> rows; + rows.push_back({"a", "b", "c", "d", "e"}); + rows.push_back({"f", "g", "h", "i", "j"}); + rows.push_back({"k", "l", "m", "n", "o"}); + rows.push_back({"p", "q", "r", "s", "t"}); + rows.push_back({"u", "v", "w", "x", "y"}); + rows.push_back({"z", "1", "2", "3", "4"}); + rows.push_back({"5", "6", "7", "8", "9"}); + rows.push_back({"0", "!", "?", "#", "*"}); + + std::vector> altRows; + altRows.push_back({"A", "B", "C", "D", "E"}); + altRows.push_back({"F", "G", "H", "I", "J"}); + altRows.push_back({"K", "L", "M", "N", "O"}); + altRows.push_back({"P", "Q", "R", "S", "T"}); + altRows.push_back({"U", "V", "W", "X", "Y"}); + altRows.push_back({"Z", "1", "2", "3", "4"}); + altRows.push_back({"5", "6", "7", "8", "9"}); + altRows.push_back({"0", "!", "?", "#", "*"}); + + return getInput(selectedPassword, LINK_MOBILE_MAX_PASSWORD_LENGTH, + "your password", rows, altRows, "pass123", "pass123", + "caps lock"); +} + +std::string getInput(std::string& field, + u32 maxChars, + std::string inputName, + std::vector> rows, + std::vector> altRows, + std::string defaultValue, + std::string defaultValueName, + std::string altName) { + VBlankIntrWait(); + + int selectedX = 0; + int selectedY = 0; + bool altActive = false; while (true) { - std::string output = "Type a number:\n\n"; - output += ">> " + selectedNumber + "\n\n"; + auto renderRows = altActive ? altRows : rows; + + std::string output = "Type " + inputName + ":\n\n"; + output += ">> " + field + "\n\n"; if (didPress(KEY_RIGHT, right)) { selectedX++; - if (selectedX >= (int)rows[0].size()) - selectedX = rows[0].size() - 1; + if (selectedX >= (int)renderRows[0].size()) + selectedX = renderRows[0].size() - 1; } if (didPress(KEY_LEFT, left)) { selectedX--; @@ -278,37 +334,41 @@ std::string getNumberInput() { } if (didPress(KEY_DOWN, down)) { selectedY++; - if (selectedY >= (int)rows.size()) - selectedY = rows.size() - 1; + if (selectedY >= (int)renderRows.size()) + selectedY = renderRows.size() - 1; } if (didPress(KEY_B, b)) { - if (selectedNumber.size() > 0) - selectedNumber = selectedNumber.substr(0, selectedNumber.size() - 1); + if (field.size() > 0) + field = field.substr(0, field.size() - 1); else return ""; } if (didPress(KEY_A, a)) { - if (selectedNumber.size() < LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH) - selectedNumber += rows[selectedY][selectedX]; + if (field.size() < maxChars) + field += renderRows[selectedY][selectedX]; } if (didPress(KEY_SELECT, select)) - selectedNumber = "127000000001"; + field = defaultValue; if (didPress(KEY_START, start)) - return selectedNumber; + return field; + if (altName != "" && didPress(KEY_L, l)) + altActive = !altActive; - for (int y = 0; y < (int)rows.size(); y++) { - for (int x = 0; x < (int)rows[y].size(); x++) { + for (int y = 0; y < (int)renderRows.size(); y++) { + for (int x = 0; x < (int)renderRows[y].size(); x++) { bool isSelected = selectedX == x && selectedY == y; output += std::string("") + "|" + (isSelected ? "<" : " ") + - rows[y][x] + (isSelected ? ">" : " ") + "|"; + renderRows[y][x] + (isSelected ? ">" : " ") + "|"; output += " "; } output += "\n"; } - output += - "\n (B = back)\n (A = select)\n (SELECT = localhost)\n (START = " - "confirm)"; + output += "\n (B = back)\n (A = select)\n (SELECT = " + defaultValueName + + ")\n (START = confirm)"; + + if (altName != "") + output += "\n\n (L = " + altName + ")"; VBlankIntrWait(); log(output); From f994270ee0d25160aba7a9c91fcd36104a8370fd Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 07:55:25 -0300 Subject: [PATCH 114/195] Implementing DNS query --- README.md | 6 +- examples/LinkMobile_demo/src/main.cpp | 105 +++++++--- .../_lib/libugba/include/ugba/definitions.h | 2 +- lib/LinkMobile.hpp | 197 +++++++++++++----- lib/_link_common.hpp | 6 + 5 files changed, 240 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index 9049de9..c32bbe2 100644 --- a/README.md +++ b/README.md @@ -437,6 +437,8 @@ You can also change these compile-time constants: - On fatal errors, the library will transition to a `NEEDS_RESET` state. In that case, you can call `getError()` to know more details on what happened, and then `activate()` to restart. - When calling `deactivate()`, the adapter automatically turns itself off after `3` seconds of inactivity. However, to gracefully turn it off, it's recommended to call `shutdown()` first, wait until the state is `SHUTDOWN`, and then `deactivate()`. +// TODO: Add ISP methods + Name | Return type | Description --- | --- | --- `isActive()` | **bool** | Returns whether the library is active or not. @@ -444,7 +446,9 @@ Name | Return type | Description `deactivate()` | - | Deactivates the library, resetting the serial mode to GPIO. Calling `shutdown()` first is recommended, but the adapter will put itself in sleep mode after 3 seconds anyway. `shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. `call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the connection fails or ends. In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). -`transfer(dataToSend, receivedData)` | **bool** | Requests a data transfer (up to `254` bytes) within a P2P connection and responds the received data. The `receivedData` is a pointer to a `LinkWireless::DataTransfer` struct that will be filled with data. It can point to `dataToSend`. When the transfer is completed, the `completed` field will be `true`. +`callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). +`dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. +`transfer(dataToSend, result)` | **bool** | Requests a data transfer (up to `254` bytes) within a P2P connection and responds the received data. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the transfer is completed, the `completed` field will be `true`. `hangUp()` | **bool** | Hangs up the current P2P or ISP call. Closes all connections. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 3006807..bb9d1df 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -13,6 +13,12 @@ void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text); std::string readConfiguration(); std::string getNumberInput(); std::string getPasswordInput(); +std::string getDomainInput(); +std::string getTextInput(std::string& field, + u32 maxChars, + std::string inputName, + std::string defaultValue, + std::string defaultValueName); std::string getInput(std::string& field, u32 maxChars, std::string inputName, @@ -38,6 +44,7 @@ bool a = false, b = false, l = false, r = false; bool start = false, select = false; std::string selectedNumber = ""; std::string selectedPassword = ""; +std::string selectedDomain = ""; LinkMobile* linkMobile = NULL; @@ -73,6 +80,8 @@ start: bool isConnected = false; LinkMobile::DataTransfer dataTransfer; LinkMobile::DataTransfer lastCompletedTransfer; + LinkMobile::DNSQuery dnsQuery; + bool waitingDNS = false; std::string outgoingData = ""; u32 counter = 0; u32 frameCounter = 0; @@ -83,7 +92,6 @@ start: u16 keys = ~REG_KEYS & KEY_ANY; - // Menu std::string output = ""; bool shouldWaitForA = false; output += "State = " + getStateString(linkMobile->getState()) + "\n"; @@ -97,12 +105,13 @@ start: output += "\nL = Read Configuration"; output += "\nR = Call someone"; output += "\nSTART = Call the ISP"; - output += "\n (A = ok)\n (SELECT = stop)"; + output += "\n\n (A = ok)\n (SELECT = stop)"; } else { if (linkMobile->isConnectedP2P()) { output += "\n (A = send)"; output += "\n (L = hang up)"; } else if (linkMobile->isConnectedISP()) { + output += "\n (LEFT = DNS query)"; output += "\n (L = hang up)"; } output += "\n (SELECT = stop)"; @@ -116,25 +125,26 @@ start: : "receiver!!!"; transfer(dataTransfer, outgoingData); } - if (dataTransfer.completed) { if (dataTransfer.size > 0) lastCompletedTransfer = dataTransfer; - - if (keys & KEY_A) { - counter++; - outgoingData = (linkMobile->getRole() == LinkMobile::Role::CALLER - ? "caller: " - : "receiver: ") + - std::to_string(counter); - } - - frameCounter++; - if (frameCounter >= TRANSFER_FREQUENCY) { - frameCounter = 0; - transfer(dataTransfer, outgoingData); - } + dataTransfer.completed = false; } + + if (keys & KEY_A) { + counter++; + outgoingData = + (linkMobile->getRole() == LinkMobile::Role::CALLER ? "caller: " + : "receiver: ") + + std::to_string(counter); + } + + frameCounter++; + if (frameCounter >= TRANSFER_FREQUENCY) { + frameCounter = 0; + transfer(dataTransfer, outgoingData); + } + if (lastCompletedTransfer.completed) { char received[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH]; for (u32 i = 0; i < lastCompletedTransfer.size; i++) @@ -143,11 +153,28 @@ start: output += "\n\n>> " + std::string(outgoingData); output += "\n<< " + std::string(received); } + } else if (linkMobile->isConnectedISP()) { + if (!isConnected) + isConnected = true; + + if (waitingDNS && dnsQuery.completed) { + waitingDNS = false; + log("DNS Response:\n " + std::to_string(dnsQuery.ipv4[0]) + "." + + std::to_string(dnsQuery.ipv4[1]) + "." + + std::to_string(dnsQuery.ipv4[2]) + "." + + std::to_string(dnsQuery.ipv4[3]) + "\n\n" + + (dnsQuery.success ? "Success!" : "Failure!")); + waitForA(); + } + + output += waitingDNS ? "\n\nWaiting DNS..." : ""; } else { if (isConnected) { isConnected = false; dataTransfer = {}; lastCompletedTransfer = {}; + dnsQuery = {}; + waitingDNS = false; counter = 0; frameCounter = 0; outgoingData = ""; @@ -198,13 +225,30 @@ start: if (didPress(KEY_START, start)) { std::string password = getPasswordInput(); if (password != "") { + // (7) Connect to the internet linkMobile->callISP(password.c_str()); } } break; } - case LinkMobile::State::CALL_ESTABLISHED: + case LinkMobile::State::CALL_ESTABLISHED: { + // L = hang up + if (didPress(KEY_L, l)) { + // (6) Hang up + linkMobile->hangUp(); + } + break; + } case LinkMobile::State::ISP_ACTIVE: { + // LEFT = DNS query + if (didPress(KEY_LEFT, left)) { + std::string domain = getDomainInput(); + if (domain != "") { + // (8) Run DNS queries + linkMobile->dnsQuery(domain.c_str(), &dnsQuery); + waitingDNS = true; + } + } // L = hang up if (didPress(KEY_L, l)) { // (6) Hang up @@ -272,6 +316,20 @@ std::string getNumberInput() { } std::string getPasswordInput() { + return getTextInput(selectedPassword, LINK_MOBILE_MAX_PASSWORD_LENGTH, + "your password", "pass123", "pass123"); +} + +std::string getDomainInput() { + return getTextInput(selectedDomain, LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH, + "a domain name", "something.com", "something.com"); +} + +std::string getTextInput(std::string& field, + u32 maxChars, + std::string inputName, + std::string defaultValue, + std::string defaultValueName) { std::vector> rows; rows.push_back({"a", "b", "c", "d", "e"}); rows.push_back({"f", "g", "h", "i", "j"}); @@ -280,7 +338,7 @@ std::string getPasswordInput() { rows.push_back({"u", "v", "w", "x", "y"}); rows.push_back({"z", "1", "2", "3", "4"}); rows.push_back({"5", "6", "7", "8", "9"}); - rows.push_back({"0", "!", "?", "#", "*"}); + rows.push_back({"0", ".", "#", "/", "?"}); std::vector> altRows; altRows.push_back({"A", "B", "C", "D", "E"}); @@ -290,11 +348,10 @@ std::string getPasswordInput() { altRows.push_back({"U", "V", "W", "X", "Y"}); altRows.push_back({"Z", "1", "2", "3", "4"}); altRows.push_back({"5", "6", "7", "8", "9"}); - altRows.push_back({"0", "!", "?", "#", "*"}); + altRows.push_back({"0", ".", "#", "/", "?"}); - return getInput(selectedPassword, LINK_MOBILE_MAX_PASSWORD_LENGTH, - "your password", rows, altRows, "pass123", "pass123", - "caps lock"); + return getInput(field, maxChars, inputName, rows, altRows, defaultValue, + defaultValueName, "caps lock"); } std::string getInput(std::string& field, @@ -429,7 +486,7 @@ std::string getErrorString(LinkMobile::Error error) { toHex(error.cmdId) + "\n CmdResult: " + getResultString(error.cmdResult) + "\n CmdErrorCode: " + std::to_string(error.cmdErrorCode) + - "\n ReqType: " + std::to_string(error.reqType) + "\n\n"; + "\n ReqType: " + std::to_string(error.reqType) + "\n"; } std::string getErrorTypeString(LinkMobile::Error::Type errorType) { diff --git a/examples/_lib/libugba/include/ugba/definitions.h b/examples/_lib/libugba/include/ugba/definitions.h index db2f052..ce8111b 100644 --- a/examples/_lib/libugba/include/ugba/definitions.h +++ b/examples/_lib/libugba/include/ugba/definitions.h @@ -34,7 +34,7 @@ # define EXPORT_API __declspec(dllexport) # else # define EXPORT_API __attribute__((visibility("default"))) -// TODO: Is this one below needed in MinGW? +// Is this one below needed in MinGW? //# define EXPORT_API __attribute__((dllexport)) # endif #endif diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 864a93f..9fa5b94 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -28,9 +28,15 @@ // // (use `dataTransfer` as the received data) // - 6) Hang up: // linkMobile->hangUp(); +// - 7) Connect to the internet: +// linkMobile->callISP("REON password"); +// - 8) Run DNS queries: +// LinkMobile::DNSQuery dnsQuery; +// linkMobile->dnsQuery("something.com", &dnsQuery); +// // (do something until `dnsQuery.completed` is `true`) +// // (use `dnsQuery.success` and `dnsQuery.ipv4`) // - 7) Turn off the adapter: // linkMobile->shutdown(); -// TODO: DOCUMENT ISP METHODS // -------------------------------------------------------------------------- // (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. // That causes packet loss. You REALLY want to use libugba's instead. @@ -58,6 +64,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH 32 #define LINK_MOBILE_MAX_LOGIN_ID_LENGTH 32 #define LINK_MOBILE_MAX_PASSWORD_LENGTH 32 +#define LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH 253 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) #define LINK_MOBILE_DEFAULT_TIMEOUT (60 * 3) @@ -214,6 +221,12 @@ class LinkMobile { bool completed = false; }; + struct DNSQuery { + u8 ipv4[4] = {}; + bool completed = false; + bool success = false; + }; + /** * @brief Constructs a new LinkMobile object. * @param timeout Number of *frames* without completing a request to reset a @@ -304,9 +317,9 @@ class LinkMobile { /** * @brief Calls the ISP number registered in the adapter configuration, or a * default number if the adapter hasn't been configured. Then, performs a - * login operation using the provided `password` and `loginId`. If `loginId` - * is empty and the adapter has been configured, it will use the one stored in - * the configuration. + * login operation using the provided `password` and `loginId`. After some + * time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the adapter + * has been configured, it will use the one stored in the configuration. * @param password The password, as a null-terminated string (max `32` * characters). * @param loginId The login ID, as a null-terminated string (max `32` @@ -333,24 +346,58 @@ class LinkMobile { return true; } + /** + * @brief Looks up the IPv4 address for a domain name. + * @param domain A null-terminated string for the domain name (max `253` + * characters). + * @param result A pointer to a `LinkMobile::DNSQuery` struct that + * will be filled with the result. When the request is completed, the + * `completed` field will be `true`. If an IP address was found, the `success` + * field will be `true` and the `ipv4` field can be read as a 4-byte address. + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active ISP session or available request slots. + */ + bool dnsQuery(const char* domainName, DNSQuery* result) { + if (state != ISP_ACTIVE || userRequests.isFull()) + return false; + + result->completed = false; + result->success = false; + u32 size = std::strlen(domainName); + if (size > LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH) + size = LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH; + + auto request = UserRequest{.type = UserRequest::Type::DNS_QUERY, + .send = {.data = {}}, + .dns = result, + .commandSent = false}; + for (u32 i = 0; i < size; i++) + request.send.data[i] = domainName[i]; + request.send.size = size; + + pushRequest(request); + return true; + } + /** * @brief Requests a data transfer within a P2P connection and responds the * received data. * @param dataToSend The data to send, up to 254 bytes. - * @param receivedData A pointer to a `LinkWireless::DataTransfer` struct that - * will be filled with data. It can point to `dataToSend`. When the transfer - * is completed, the `completed` field will be `true`. + * @param result A pointer to a `LinkMobile::DataTransfer` struct that + * will be filled with the received data. It can also point to `dataToSend` to + * reuse the struct. When the transfer is completed, the `completed` field + * will be `true`. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no * active call or available request slots. */ - bool transfer(DataTransfer dataToSend, DataTransfer* receivedData) { + bool transfer(DataTransfer dataToSend, DataTransfer* result) { if (state != CALL_ESTABLISHED || userRequests.isFull()) return false; - receivedData->completed = false; + result->completed = false; auto request = UserRequest{.type = UserRequest::Type::TRANSFER, .send = {.data = {}, .size = dataToSend.size}, - .receive = receivedData, + .receive = result, .commandSent = false}; for (u32 i = 0; i < dataToSend.size; i++) request.send.data[i] = dataToSend.data[i]; @@ -544,12 +591,13 @@ class LinkMobile { enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; struct UserRequest { - enum Type { CALL, ISP_LOGIN, TRANSFER, HANG_UP, SHUTDOWN }; + enum Type { CALL, ISP_LOGIN, DNS_QUERY, TRANSFER, HANG_UP, SHUTDOWN }; Type type; char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH + 1]; DataTransfer send; DataTransfer* receive; + DNSQuery* dns; char loginId[LINK_MOBILE_MAX_LOGIN_ID_LENGTH + 1]; char password[LINK_MOBILE_MAX_PASSWORD_LENGTH + 1]; bool commandSent; @@ -750,6 +798,18 @@ class LinkMobile { } break; } + case UserRequest::Type::DNS_QUERY: { + if (state != ISP_ACTIVE) { + userRequests.pop(); + return; + } + + if (!asyncCommand.isActive && !request.commandSent) { + cmdDNSQuery(request.send.data, request.send.size); + request.commandSent = true; + } + break; + } case UserRequest::Type::TRANSFER: { if (state != CALL_ESTABLISHED) { userRequests.pop(); @@ -918,13 +978,14 @@ class LinkMobile { break; } case SESSION_ACTIVE: { - if (asyncCommand.respondsTo(COMMAND_WAIT_FOR_TELEPHONE_CALL)) { - if (asyncCommand.result == CommandResult::SUCCESS) { - setState(CALL_ESTABLISHED); - role = Role::RECEIVER; - } else { - // (no call received) - } + if (!asyncCommand.respondsTo(COMMAND_WAIT_FOR_TELEPHONE_CALL)) + return; + + if (asyncCommand.result == CommandResult::SUCCESS) { + setState(CALL_ESTABLISHED); + role = Role::RECEIVER; + } else { + // (no call received) } break; } @@ -936,7 +997,7 @@ class LinkMobile { setState(CALL_ESTABLISHED); role = Role::CALLER; } else { - // (call terminated) + // (call failed) setState(SESSION_ACTIVE); } break; @@ -948,45 +1009,39 @@ class LinkMobile { } if (!asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) return; + if (asyncCommand.cmd.header.size == 0) + return abort(Error::Type::WEIRD_RESPONSE); if (userRequests.isEmpty()) return abort(Error::Type::WTF); + auto request = userRequests.peekRef(); + if (request->type != UserRequest::TRANSFER) + return abort(Error::Type::WTF); - auto request = userRequests.peek(); - - if (asyncCommand.result == CommandResult::SUCCESS) { - if (asyncCommand.cmd.header.size == 0) - return abort(Error::Type::WEIRD_RESPONSE); - - if (request.type == UserRequest::TRANSFER) { - u32 size = asyncCommand.cmd.header.size - 1; - for (u32 i = 0; i < size; i++) - request.receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; - request.receive->size = size; - request.receive->completed = true; - request.finished = true; - } else - return abort(Error::Type::WTF); - } else { - setState(SESSION_ACTIVE); - } + u32 size = asyncCommand.cmd.header.size - 1; + for (u32 i = 0; i < size; i++) + request->receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; + request->receive->size = size; + request->receive->completed = true; + request->finished = true; } case ISP_CALLING: { if (!asyncCommand.respondsTo(COMMAND_DIAL_TELEPHONE)) return; if (userRequests.isEmpty()) return abort(Error::Type::WTF); - - auto request = userRequests.peek(); - - if (request.type == UserRequest::ISP_LOGIN) { - if (asyncCommand.result == CommandResult::SUCCESS) { - setState(ISP_LOGIN); - cmdISPLogin(request.loginId, request.password); - } - request.finished = true; - } else + auto request = userRequests.peekRef(); + if (request->type != UserRequest::ISP_LOGIN) return abort(Error::Type::WTF); + if (asyncCommand.result == CommandResult::SUCCESS) { + setState(ISP_LOGIN); + cmdISPLogin(request->loginId, request->password); + } else { + // (ISP call failed) + setState(SESSION_ACTIVE); + } + request->finished = true; + break; } case ISP_LOGIN: { @@ -1003,8 +1058,43 @@ class LinkMobile { setState(SESSION_ACTIVE); return; } + if (userRequests.isEmpty()) + return abort(Error::Type::WTF); - // TODO: IMPLEMENT + auto request = userRequests.peekRef(); + + if (asyncCommand.respondsTo(COMMAND_DNS_QUERY)) { + if (request->type != UserRequest::DNS_QUERY) + return abort(Error::Type::WTF); + + if (asyncCommand.result == CommandResult::SUCCESS) { + if (asyncCommand.cmd.header.size != 4) + return abort(Error::Type::WEIRD_RESPONSE); + for (u32 i = 0; i < 4; i++) + request->dns->ipv4[i] = asyncCommand.cmd.data.bytes[i]; + request->dns->success = true; + } else { + request->dns->success = false; + } + + request->dns->completed = true; + request->finished = true; + break; + } else if (asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) { + if (request->type != UserRequest::TRANSFER) + return abort(Error::Type::WTF); + + // TODO: HANDLE TRANSFER DATA + // if (asyncCommand.cmd.header.size == 0) + // return abort(Error::Type::WEIRD_RESPONSE); + // TODO: IMPLEMENT + // u32 size = asyncCommand.cmd.header.size - 1; + // for (u32 i = 0; i < size; i++) + // request.receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; + // request.receive->size = size; + // request.receive->completed = true; + // request.finished = true; + } break; } case ENDING_SESSION: { @@ -1063,7 +1153,7 @@ class LinkMobile { } void cmdTelephoneStatus() { - sendCommandAsync(buildCommand(COMMAND_TELEPHONE_STATUS, true)); + sendCommandAsync(buildCommand(COMMAND_TELEPHONE_STATUS)); } void cmdSIO32(bool enabled) { @@ -1097,6 +1187,12 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_ISP_LOGIN, true)); } + void cmdDNSQuery(const u8* data, u8 size) { + for (int i = 0; i < size; i++) + addData(data[i], i == 0); + sendCommandAsync(buildCommand(COMMAND_DNS_QUERY, true)); + } + void setISPNumber() { static const char BCD[16] = "0123456789#*cde"; @@ -1123,7 +1219,8 @@ class LinkMobile { u8 commandId = asyncCommand.relatedCommandId(); return asyncCommand.direction == AsyncCommand::Direction::SENDING || (commandId != COMMAND_WAIT_FOR_TELEPHONE_CALL && - commandId != COMMAND_DIAL_TELEPHONE); + commandId != COMMAND_DIAL_TELEPHONE && + commandId != COMMAND_DNS_QUERY); } void addData(u8 value, bool start = false) { diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index c2fe9c0..c18051f 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -171,6 +171,12 @@ class Queue { return arr[front]; } + T* peekRef() { + if (isEmpty()) + return nullptr; + return &arr[front]; + } + template void forEach(F action) { vs32 currentFront = front; From 855accae1cefa7de3fb2f3d04edc2b3d81e5dd90 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 10:14:21 -0300 Subject: [PATCH 115/195] Adding signatures and documentation for openConnection and closeConnection --- README.md | 6 +- lib/LinkMobile.hpp | 223 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 173 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index c32bbe2..9f58073 100644 --- a/README.md +++ b/README.md @@ -437,8 +437,6 @@ You can also change these compile-time constants: - On fatal errors, the library will transition to a `NEEDS_RESET` state. In that case, you can call `getError()` to know more details on what happened, and then `activate()` to restart. - When calling `deactivate()`, the adapter automatically turns itself off after `3` seconds of inactivity. However, to gracefully turn it off, it's recommended to call `shutdown()` first, wait until the state is `SHUTDOWN`, and then `deactivate()`. -// TODO: Add ISP methods - Name | Return type | Description --- | --- | --- `isActive()` | **bool** | Returns whether the library is active or not. @@ -448,7 +446,9 @@ Name | Return type | Description `call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the connection fails or ends. In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). `callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). `dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. -`transfer(dataToSend, result)` | **bool** | Requests a data transfer (up to `254` bytes) within a P2P connection and responds the received data. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the transfer is completed, the `completed` field will be `true`. +`openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. +`closeConnection(connectionId, type, result)` | **bool** | Closes an active TCP/UDP (`type`) connection. The `result` is a pointer to a `LinkMobile::CloseConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was closed correctly, the `success` field will be `true`. +`transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if an ISP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. `hangUp()` | **bool** | Hangs up the current P2P or ISP call. Closes all connections. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 9fa5b94..ae97488 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -35,7 +35,18 @@ // linkMobile->dnsQuery("something.com", &dnsQuery); // // (do something until `dnsQuery.completed` is `true`) // // (use `dnsQuery.success` and `dnsQuery.ipv4`) -// - 7) Turn off the adapter: +// - 9) Open connections: +// auto type = LinkMobile::ConnectionType::TCP; +// LinkMobile::OpenConn openConn; +// linkMobile->openConnection(dnsQuery.ipv4, type, openConn); +// // (do something until `openConn.completed` is `true`) +// // (use `openConn.connectionId` as last argument of `transfer(...)`) +// - 10) Close connections: +// auto type = LinkMobile::ConnectionType::TCP; +// LinkMobile::CloseConn closeConn; +// linkMobile->closeConnection(openConn.connectionId, type, closeConn); +// // (do something until `openConn.completed` is `true`) +// - 11) Turn off the adapter: // linkMobile->shutdown(); // -------------------------------------------------------------------------- // (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. @@ -158,41 +169,8 @@ class LinkMobile { SHUTDOWN }; - enum CommandResult { - PENDING, - SUCCESS, - NOT_WAITING, - INVALID_DEVICE_ID, - INVALID_COMMAND_ACK, - INVALID_MAGIC_BYTES, - WEIRD_DATA_SIZE, - WRONG_CHECKSUM, - ERROR_CODE, - WEIRD_ERROR_CODE - }; - enum Role { NO_P2P_CONNECTION, CALLER, RECEIVER }; - struct Error { - enum Type { - NONE, - ADAPTER_NOT_CONNECTED, - ISP_LOGIN_FAILED, - COMMAND_FAILED, - WEIRD_RESPONSE, - TIMEOUT, - WTF - }; - - Error::Type type = Error::Type::NONE; - State state = State::NEEDS_RESET; - u8 cmdId = 0; - CommandResult cmdResult = CommandResult::PENDING; - u8 cmdErrorCode = 0; - bool cmdIsSending = false; - int reqType = -1; - }; - struct ConfigurationData { char magic[2]; u8 registrationState; @@ -215,16 +193,63 @@ class LinkMobile { char _ispNumber1[16 + 1]; // (parsed from `configurationSlot1`) } __attribute__((packed)); - struct DataTransfer { - u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; - u8 size = 0; - bool completed = false; - }; - struct DNSQuery { - u8 ipv4[4] = {}; bool completed = false; bool success = false; + u8 ipv4[4] = {}; + }; + + enum ConnectionType { TCP, UDP }; + + struct OpenConn { + bool completed = false; + bool success = false; + u8 connectionId = 0; + }; + + struct CloseConn { + bool completed = false; + bool success = false; + }; + + struct DataTransfer { + bool completed = false; + bool success = false; + u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; + u8 size = 0; + }; + + enum CommandResult { + PENDING, + SUCCESS, + NOT_WAITING, + INVALID_DEVICE_ID, + INVALID_COMMAND_ACK, + INVALID_MAGIC_BYTES, + WEIRD_DATA_SIZE, + WRONG_CHECKSUM, + ERROR_CODE, + WEIRD_ERROR_CODE + }; + + struct Error { + enum Type { + NONE, + ADAPTER_NOT_CONNECTED, + ISP_LOGIN_FAILED, + COMMAND_FAILED, + WEIRD_RESPONSE, + TIMEOUT, + WTF + }; + + Error::Type type = Error::Type::NONE; + State state = State::NEEDS_RESET; + u8 cmdId = 0; + CommandResult cmdResult = CommandResult::PENDING; + u8 cmdErrorCode = 0; + bool cmdIsSending = false; + int reqType = -1; }; /** @@ -368,8 +393,8 @@ class LinkMobile { size = LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH; auto request = UserRequest{.type = UserRequest::Type::DNS_QUERY, - .send = {.data = {}}, .dns = result, + .send = {.data = {}}, .commandSent = false}; for (u32 i = 0; i < size; i++) request.send.data[i] = domainName[i]; @@ -380,22 +405,98 @@ class LinkMobile { } /** - * @brief Requests a data transfer within a P2P connection and responds the - * received data. + * @brief Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte + * address) on the given `port`. + * @param ip The 4-byte address. + * @param port The port. + * @param type One of the enum values from `LinkMobile::ConnectionType`. + * @param result A pointer to a `LinkMobile::OpenConn` struct that + * will be filled with the result. When the request is completed, the + * `completed` field will be `true`. If the connection was successful, the + * `success` field will be `true` and the `connectionId` field can be used + * when calling the `transfer(...)` method. + * \warning Only `2` connections can be opened at the same time. + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active ISP session, no available request slots. + */ + bool openConnection(const u8* ip, + u16 port, + ConnectionType type, + OpenConn* result) { + if (state != ISP_ACTIVE || userRequests.isFull()) + return false; + + result->completed = false; + result->success = false; + + auto request = UserRequest{.type = UserRequest::Type::OPEN_CONNECTION, + .open = result, + .connectionType = type, + .commandSent = false}; + for (u32 i = 0; i < 4; i++) + request.ip[i] = ip[i]; + request.port = port; + + pushRequest(request); + return true; + } + // TODO: IMPLEMENT SOCKET METHODS + + /** + * @brief Closes an active TCP/UDP (`type`) connection. + * @param connectionId The ID of the connection. + * @param type One of the enum values from `LinkMobile::ConnectionType`. + * @param result A pointer to a `LinkMobile::CloseConn` struct that + * will be filled with the result. When the request is completed, the + * `completed` field will be `true`. If the connection was closed correctly, + * the `success` field will be `true`. + * \warning Non-blocking. Returns `true` immediately, or `false` if there's no + * active ISP session, no available request slots. + */ + bool closeConnection(u8 connectionId, + ConnectionType type, + CloseConn* result) { + if (state != ISP_ACTIVE || userRequests.isFull()) + return false; + + result->completed = false; + result->success = false; + + auto request = UserRequest{.type = UserRequest::Type::CLOSE_CONNECTION, + .close = result, + .connectionType = type, + .commandSent = false}; + request.connectionId = connectionId; + + pushRequest(request); + return true; + } + + /** + * @brief Requests a data transfer and responds the received data. The + * transfer can be done with the other node in a P2P connection, or with any + * open TCP/UDP connection if an ISP session is active. In the case of a + * TCP/UDP connection, the `connectionId` must be provided. * @param dataToSend The data to send, up to 254 bytes. * @param result A pointer to a `LinkMobile::DataTransfer` struct that * will be filled with the received data. It can also point to `dataToSend` to * reuse the struct. When the transfer is completed, the `completed` field - * will be `true`. - * \warning Non-blocking. Returns `true` immediately, or `false` if there's no - * active call or available request slots. + * will be `true`. If the transfer was successful, the `success` field will be + * `true`. + * \warning Non-blocking. Returns `true` immediately, or `false` if + * there's no active call or available request slots. */ - bool transfer(DataTransfer dataToSend, DataTransfer* result) { - if (state != CALL_ESTABLISHED || userRequests.isFull()) + bool transfer(DataTransfer dataToSend, + DataTransfer* result, + u8 connectionId = 0xff) { + if ((state != CALL_ESTABLISHED && state != ISP_ACTIVE) || + userRequests.isFull()) return false; result->completed = false; + result->success = false; auto request = UserRequest{.type = UserRequest::Type::TRANSFER, + .connectionId = connectionId, .send = {.data = {}, .size = dataToSend.size}, .receive = result, .commandSent = false}; @@ -591,15 +692,30 @@ class LinkMobile { enum AdapterType { BLUE, YELLOW, GREEN, RED, UNKNOWN }; struct UserRequest { - enum Type { CALL, ISP_LOGIN, DNS_QUERY, TRANSFER, HANG_UP, SHUTDOWN }; + enum Type { + CALL, + ISP_LOGIN, + DNS_QUERY, + OPEN_CONNECTION, + CLOSE_CONNECTION, + TRANSFER, + HANG_UP, + SHUTDOWN + }; Type type; char phoneNumber[LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH + 1]; - DataTransfer send; - DataTransfer* receive; - DNSQuery* dns; char loginId[LINK_MOBILE_MAX_LOGIN_ID_LENGTH + 1]; char password[LINK_MOBILE_MAX_PASSWORD_LENGTH + 1]; + DNSQuery* dns; + OpenConn* open; + CloseConn* close; + u8 ip[4]; + u16 port; + ConnectionType connectionType; + u8 connectionId; + DataTransfer send; + DataTransfer* receive; bool commandSent; u32 timeout; bool finished; @@ -1022,6 +1138,7 @@ class LinkMobile { request->receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; request->receive->size = size; request->receive->completed = true; + request->receive->success = true; request->finished = true; } case ISP_CALLING: { From 0aa2c1b5b82bb71cfc23bb99fd99d260dc56edb4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 11:07:22 -0300 Subject: [PATCH 116/195] Finishing TCP/UDP commands --- README.md | 4 +- examples/LinkMobile_demo/src/main.cpp | 10 +- lib/LinkMobile.hpp | 169 ++++++++++++++++++++------ 3 files changed, 142 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 9f58073..6fc54c5 100644 --- a/README.md +++ b/README.md @@ -419,7 +419,7 @@ The original accessory was sold in Japan only and doesn't work anymore since it Name | Type | Default | Description --- | --- | --- | --- -`timeout` | **u32** | `180` | Number of *frames* without completing a request to reset a connection. +`timeout` | **u32** | `600` | Number of *frames* without completing a request to reset a connection. `timerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. You can update these values at any time without creating a new instance: @@ -448,7 +448,7 @@ Name | Return type | Description `dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. `openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. `closeConnection(connectionId, type, result)` | **bool** | Closes an active TCP/UDP (`type`) connection. The `result` is a pointer to a `LinkMobile::CloseConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was closed correctly, the `success` field will be `true`. -`transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if an ISP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. +`transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if an ISP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. If not, you can assume that the connection was closed. `hangUp()` | **bool** | Hangs up the current P2P or ISP call. Closes all connections. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index bb9d1df..3c2b5bd 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -102,7 +102,7 @@ start: output += getErrorString(error); output += "\n (SELECT = stop)"; } else if (linkMobile->getState() == LinkMobile::State::SESSION_ACTIVE) { - output += "\nL = Read Configuration"; + output += "\nL = Read configuration"; output += "\nR = Call someone"; output += "\nSTART = Call the ISP"; output += "\n\n (A = ok)\n (SELECT = stop)"; @@ -111,7 +111,7 @@ start: output += "\n (A = send)"; output += "\n (L = hang up)"; } else if (linkMobile->isConnectedISP()) { - output += "\n (LEFT = DNS query)"; + output += "\n (A = DNS query)"; output += "\n (L = hang up)"; } output += "\n (SELECT = stop)"; @@ -240,8 +240,8 @@ start: break; } case LinkMobile::State::ISP_ACTIVE: { - // LEFT = DNS query - if (didPress(KEY_LEFT, left)) { + // A = DNS query + if (didPress(KEY_A, a) && !waitingDNS) { std::string domain = getDomainInput(); if (domain != "") { // (8) Run DNS queries @@ -590,3 +590,5 @@ template rc[i] = digits[(w >> j) & 0x0f]; return rc; } + +// TODO: Implement TCP/UDP sockets test functions diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index ae97488..440389d 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -78,7 +78,7 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; #define LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH 253 #define LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ (LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) -#define LINK_MOBILE_DEFAULT_TIMEOUT (60 * 3) +#define LINK_MOBILE_DEFAULT_TIMEOUT (60 * 10) #define LINK_MOBILE_DEFAULT_TIMER_ID 3 #define LINK_MOBILE_BARRIER asm volatile("" ::: "memory") @@ -102,18 +102,18 @@ class LinkMobile { static constexpr int INIT_WAIT_FRAMES = 7; static constexpr int INIT_TIMEOUT_FRAMES = 30; static constexpr int PING_FREQUENCY_FRAMES = 60; - static constexpr int ADAPTER_WAITING = 0xD2; - static constexpr u32 ADAPTER_WAITING_32BIT = 0xD2D2D2D2; - static constexpr int GBA_WAITING = 0x4B; - static constexpr u32 GBA_WAITING_32BIT = 0x4B4B4B4B; + static constexpr int ADAPTER_WAITING = 0xd2; + static constexpr u32 ADAPTER_WAITING_32BIT = 0xd2d2d2d2; + static constexpr int GBA_WAITING = 0x4b; + static constexpr u32 GBA_WAITING_32BIT = 0x4b4b4b4b; static constexpr int OR_VALUE = 0x80; static constexpr int COMMAND_MAGIC_VALUE1 = 0x99; static constexpr int COMMAND_MAGIC_VALUE2 = 0x66; static constexpr int DEVICE_GBA = 0x1; static constexpr int DEVICE_ADAPTER_BLUE = 0x8; static constexpr int DEVICE_ADAPTER_YELLOW = 0x9; - static constexpr int DEVICE_ADAPTER_GREEN = 0xA; - static constexpr int DEVICE_ADAPTER_RED = 0xB; + static constexpr int DEVICE_ADAPTER_GREEN = 0xa; + static constexpr int DEVICE_ADAPTER_RED = 0xb; static constexpr int ACK_SENDER = 0; static constexpr int CONFIGURATION_DATA_SIZE = 192; static constexpr int CONFIGURATION_DATA_CHUNK = CONFIGURATION_DATA_SIZE / 2; @@ -135,7 +135,8 @@ class LinkMobile { static constexpr int COMMAND_OPEN_UDP_CONNECTION = 0x25; static constexpr int COMMAND_CLOSE_UDP_CONNECTION = 0x26; static constexpr int COMMAND_DNS_QUERY = 0x28; - static constexpr int COMMAND_ERROR_STATUS = 0x6E | OR_VALUE; + static constexpr int COMMAND_CONNECTION_CLOSED = 0x1f; + static constexpr int COMMAND_ERROR_STATUS = 0x6e | OR_VALUE; static constexpr u8 WAIT_TICKS[] = {4, 8}; static constexpr int LOGIN_PARTS_SIZE = 8; static constexpr u8 LOGIN_PARTS[] = {0x4e, 0x49, 0x4e, 0x54, @@ -255,7 +256,7 @@ class LinkMobile { /** * @brief Constructs a new LinkMobile object. * @param timeout Number of *frames* without completing a request to reset a - * connection. Defaults to 180 (3 seconds). + * connection. Defaults to 600 (10 seconds). * @param timerId GBA Timer to use for waiting. */ explicit LinkMobile(u32 timeout = LINK_MOBILE_DEFAULT_TIMEOUT, @@ -414,7 +415,8 @@ class LinkMobile { * will be filled with the result. When the request is completed, the * `completed` field will be `true`. If the connection was successful, the * `success` field will be `true` and the `connectionId` field can be used - * when calling the `transfer(...)` method. + * when calling the `transfer(...)` method. If not, you can assume that the + * connection was closed. * \warning Only `2` connections can be opened at the same time. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no * active ISP session, no available request slots. @@ -440,7 +442,6 @@ class LinkMobile { pushRequest(request); return true; } - // TODO: IMPLEMENT SOCKET METHODS /** * @brief Closes an active TCP/UDP (`type`) connection. @@ -926,13 +927,44 @@ class LinkMobile { } break; } + case UserRequest::Type::OPEN_CONNECTION: { + if (state != ISP_ACTIVE) { + userRequests.pop(); + return; + } + + if (!asyncCommand.isActive && !request.commandSent) { + if (request.type == ConnectionType::TCP) + cmdOpenTCPConnection(request.ip, request.port); + else + cmdOpenUDPConnection(request.ip, request.port); + request.commandSent = true; + } + break; + } + case UserRequest::Type::CLOSE_CONNECTION: { + if (state != ISP_ACTIVE) { + userRequests.pop(); + return; + } + + if (!asyncCommand.isActive && !request.commandSent) { + if (request.type == ConnectionType::TCP) + cmdCloseTCPConnection(request.connectionId); + else + cmdCloseUDPConnection(request.connectionId); + request.commandSent = true; + } + break; + } case UserRequest::Type::TRANSFER: { if (state != CALL_ESTABLISHED) { userRequests.pop(); return; } if (!asyncCommand.isActive && !request.commandSent) { - cmdTransferData(0xff, request.send.data, request.send.size); + cmdTransferData(request.connectionId, request.send.data, + request.send.size); request.commandSent = true; } break; @@ -1125,21 +1157,13 @@ class LinkMobile { } if (!asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) return; - if (asyncCommand.cmd.header.size == 0) - return abort(Error::Type::WEIRD_RESPONSE); if (userRequests.isEmpty()) return abort(Error::Type::WTF); auto request = userRequests.peekRef(); - if (request->type != UserRequest::TRANSFER) - return abort(Error::Type::WTF); - u32 size = asyncCommand.cmd.header.size - 1; - for (u32 i = 0; i < size; i++) - request->receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; - request->receive->size = size; - request->receive->completed = true; - request->receive->success = true; - request->finished = true; + handleTransferDataResponse(request); + + break; } case ISP_CALLING: { if (!asyncCommand.respondsTo(COMMAND_DIAL_TELEPHONE)) @@ -1196,21 +1220,44 @@ class LinkMobile { request->dns->completed = true; request->finished = true; - break; + } else if (asyncCommand.respondsTo(COMMAND_OPEN_TCP_CONNECTION) || + asyncCommand.respondsTo(COMMAND_OPEN_UDP_CONNECTION)) { + if (request->type != UserRequest::OPEN_CONNECTION) + return abort(Error::Type::WTF); + + if (asyncCommand.result == CommandResult::SUCCESS) { + if (asyncCommand.cmd.header.size != 1) + return abort(Error::Type::WEIRD_RESPONSE); + request->open->connectionId = asyncCommand.cmd.data.bytes[0]; + request->open->success = true; + } else { + request->open->success = false; + } + + request->close->completed = true; + request->finished = true; + } else if (asyncCommand.respondsTo(COMMAND_CLOSE_TCP_CONNECTION) || + asyncCommand.respondsTo(COMMAND_CLOSE_UDP_CONNECTION)) { + if (request->type != UserRequest::CLOSE_CONNECTION) + return abort(Error::Type::WTF); + + request->close->success = + asyncCommand.result == CommandResult::SUCCESS; + request->close->completed = true; + request->finished = true; } else if (asyncCommand.respondsTo(COMMAND_TRANSFER_DATA)) { if (request->type != UserRequest::TRANSFER) return abort(Error::Type::WTF); - // TODO: HANDLE TRANSFER DATA - // if (asyncCommand.cmd.header.size == 0) - // return abort(Error::Type::WEIRD_RESPONSE); - // TODO: IMPLEMENT - // u32 size = asyncCommand.cmd.header.size - 1; - // for (u32 i = 0; i < size; i++) - // request.receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; - // request.receive->size = size; - // request.receive->completed = true; - // request.finished = true; + handleTransferDataResponse(request); + } else if (asyncCommand.respondsTo(COMMAND_CONNECTION_CLOSED)) { + if (request->type != UserRequest::TRANSFER) + return abort(Error::Type::WTF); + + // (connection closed) + request->receive->success = false; + request->receive->completed = true; + request->finished = true; } break; } @@ -1227,6 +1274,27 @@ class LinkMobile { } } + void handleTransferDataResponse(UserRequest* request) { + if (request->type != UserRequest::TRANSFER) + return abort(Error::Type::WTF); + + if (asyncCommand.result == CommandResult::SUCCESS) { + if (asyncCommand.cmd.header.size == 0) + return abort(Error::Type::WEIRD_RESPONSE); + + u32 size = asyncCommand.cmd.header.size - 1; + for (u32 i = 0; i < size; i++) + request->receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; + request->receive->size = size; + request->receive->success = true; + } else { + request->receive->success = false; + } + + request->receive->completed = true; + request->finished = true; + } + void processLoosePacket(u32 newData) { switch (state) { case PINGING: { @@ -1304,6 +1372,32 @@ class LinkMobile { sendCommandAsync(buildCommand(COMMAND_ISP_LOGIN, true)); } + void cmdOpenTCPConnection(const u8* ip, u16 port) { + for (u32 i = 0; i < 4; i++) + addData(ip[i], i == 0); + addData(msB16(port)); + addData(lsB16(port)); + sendCommandAsync(buildCommand(COMMAND_OPEN_TCP_CONNECTION, true)); + } + + void cmdCloseTCPConnection(u8 connectionId) { + addData(connectionId); + sendCommandAsync(buildCommand(COMMAND_CLOSE_TCP_CONNECTION, true)); + } + + void cmdOpenUDPConnection(const u8* ip, u16 port) { + for (u32 i = 0; i < 4; i++) + addData(ip[i], i == 0); + addData(msB16(port)); + addData(lsB16(port)); + sendCommandAsync(buildCommand(COMMAND_OPEN_UDP_CONNECTION, true)); + } + + void cmdCloseUDPConnection(u8 connectionId) { + addData(connectionId); + sendCommandAsync(buildCommand(COMMAND_CLOSE_UDP_CONNECTION, true)); + } + void cmdDNSQuery(const u8* data, u8 size) { for (int i = 0; i < size; i++) addData(data[i], i == 0); @@ -1337,7 +1431,12 @@ class LinkMobile { return asyncCommand.direction == AsyncCommand::Direction::SENDING || (commandId != COMMAND_WAIT_FOR_TELEPHONE_CALL && commandId != COMMAND_DIAL_TELEPHONE && - commandId != COMMAND_DNS_QUERY); + commandId != COMMAND_DNS_QUERY && + commandId != COMMAND_OPEN_TCP_CONNECTION && + commandId != COMMAND_CLOSE_TCP_CONNECTION && + commandId != COMMAND_OPEN_UDP_CONNECTION && + commandId != COMMAND_CLOSE_UDP_CONNECTION && + commandId != COMMAND_TRANSFER_DATA); } void addData(u8 value, bool start = false) { From 2055e66c90815f38695e5876babd19d5aa6eb6ed Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 11:23:55 -0300 Subject: [PATCH 117/195] Adding TCP example --- README.md | 8 +++- examples/LinkMobile_demo/src/main.cpp | 69 ++++++++++++++++++++++++++- lib/LinkMobile.hpp | 36 ++++++++------ 3 files changed, 94 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 6fc54c5..65692d9 100644 --- a/README.md +++ b/README.md @@ -407,10 +407,14 @@ The GBA operates using `1` stop bit, but everything else can be configured. By d *(aka Mobile Adapter GB)* -This is a driver for an accessory that enables online P2P connections between 2 players, or up to two TCP/UDP connections. The protocol was reverse-engineered by the *REON Team*. +This is a driver for an accessory that enables online conectivity on the GB and GBA. The protocol was reverse-engineered by the *REON Team*. The original accessory was sold in Japan only and doesn't work anymore since it relies on old tech, but REON has created an open-source implementation called [libmobile](https://github.com/REONTeam/libmobile), as well as support for emulators and microcontrollers. +It has two modes of operation: +- Direct call (P2P): Calling someone directly for a 2-player session, using the other person's IP address or the phone number provided by the [relay server](https://github.com/REONTeam/mobile-relay). +- ISP call (PPP): Calling an ISP number for internet access. In this mode, the adapter can open up to 2 TCP/UDP sockets and transfer arbitrary data. + ![screenshot](https://github.com/user-attachments/assets/ff0ea09f-807c-4ba9-9dac-9cae8f831408) ## Constructor @@ -443,7 +447,7 @@ Name | Return type | Description `activate()` | - | Activates the library. After some time, if an adapter is connected, the state will be changed to `SESSION_ACTIVE`. If not, the state will be `NEEDS_RESET`, and you can retrieve the error with `getError()`. `deactivate()` | - | Deactivates the library, resetting the serial mode to GPIO. Calling `shutdown()` first is recommended, but the adapter will put itself in sleep mode after 3 seconds anyway. `shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. -`call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the connection fails or ends. In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). +`call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED` (or `ACTIVE_SESSION` if the connection fails or ends). In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). `callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). `dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. `openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 3c2b5bd..cf9bbfb 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -163,8 +163,73 @@ start: std::to_string(dnsQuery.ipv4[1]) + "." + std::to_string(dnsQuery.ipv4[2]) + "." + std::to_string(dnsQuery.ipv4[3]) + "\n\n" + - (dnsQuery.success ? "Success!" : "Failure!")); + (dnsQuery.success ? "OK!\nLet's connect to it on TCP 80!" + : "DNS query failed!")); waitForA(); + + // (9) Open connections + log("Connecting..."); + LinkMobile::OpenConn openConn; + linkMobile->openConnection(dnsQuery.ipv4, 80, + LinkMobile::ConnectionType::TCP, &openConn); + + while (linkMobile->isConnectedISP() && !openConn.completed) + VBlankIntrWait(); + if (!linkMobile->isConnectedISP()) + continue; + + if (openConn.success) { + LinkMobile::DataTransfer http; + std::string request = std::string("GET / HTTP/1.1\r\nHost: ") + + selectedDomain + "\r\n\r\n"; + for (u32 i = 0; i < request.size(); i++) + http.data[i] = request[i]; + http.size = request.size(); + linkMobile->transfer(http, &http, openConn.connectionId); + log("Connected! (" + std::to_string(openConn.connectionId) + + ") Requesting /"); + + while (linkMobile->isConnectedISP() && !http.completed) + VBlankIntrWait(); + if (!linkMobile->isConnectedISP()) + continue; + + if (http.success) { + u32 retry = 1; + while (http.size == 0) { + log("Re-transfering... " + std::to_string(retry)); + LinkMobile::DataTransfer retryy = + LinkMobile::DataTransfer{.data = {}, .size = 0}; + for (u32 i = 0; i < request.size(); i++) + retryy.data[i] = request[i]; + retryy.size = request.size(); + linkMobile->transfer(retryy, &http, openConn.connectionId); + while (linkMobile->isConnectedISP() && !http.completed) + VBlankIntrWait(); + if (!linkMobile->isConnectedISP()) + break; + if (!http.success) + break; + retry++; + } + if (!linkMobile->isConnectedISP()) + continue; + if (!http.success) { + log("HTTP failed!"); + waitForA(); + continue; + } + + log("Internet on GBA! yay\n\n" + std::string((char*)http.data)); + waitForA(); + } else { + log("HTTP request failed!"); + waitForA(); + } + } else { + log("Connection to \"" + selectedDomain + "\" failed!"); + waitForA(); + } } output += waitingDNS ? "\n\nWaiting DNS..." : ""; @@ -199,7 +264,7 @@ start: goto start; } else if (linkMobile->canShutdown()) { - // (7) Turn off the adapter + // (11) Turn off the adapter linkMobile->shutdown(); } } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 440389d..3c88d48 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -195,7 +195,7 @@ class LinkMobile { } __attribute__((packed)); struct DNSQuery { - bool completed = false; + volatile bool completed = false; bool success = false; u8 ipv4[4] = {}; }; @@ -203,18 +203,18 @@ class LinkMobile { enum ConnectionType { TCP, UDP }; struct OpenConn { - bool completed = false; + volatile bool completed = false; bool success = false; u8 connectionId = 0; }; struct CloseConn { - bool completed = false; + volatile bool completed = false; bool success = false; }; struct DataTransfer { - bool completed = false; + volatile bool completed = false; bool success = false; u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; u8 size = 0; @@ -321,8 +321,8 @@ class LinkMobile { /** * @brief Initiates a P2P connection with a `phoneNumber`. After some time, - * the state will be `CALL_ESTABLISHED`, or `ACTIVE_SESSION` if the - * connection fails or ends. + * the state will be `CALL_ESTABLISHED` (or `ACTIVE_SESSION` if the + * connection fails or ends). * @param phoneNumber The phone number to call. In REON/libmobile this can be * a number assigned by the relay server, or a 12-digit IPv4 address (for * example, "127000000001" would be 127.0.0.1). @@ -343,9 +343,10 @@ class LinkMobile { /** * @brief Calls the ISP number registered in the adapter configuration, or a * default number if the adapter hasn't been configured. Then, performs a - * login operation using the provided `password` and `loginId`. After some - * time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the adapter - * has been configured, it will use the one stored in the configuration. + * login operation using the provided REON `password` and `loginId`. After + * some time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the + * adapter has been configured, it will use the one stored in the + * configuration. * @param password The password, as a null-terminated string (max `32` * characters). * @param loginId The login ID, as a null-terminated string (max `32` @@ -934,7 +935,7 @@ class LinkMobile { } if (!asyncCommand.isActive && !request.commandSent) { - if (request.type == ConnectionType::TCP) + if (request.connectionType == ConnectionType::TCP) cmdOpenTCPConnection(request.ip, request.port); else cmdOpenUDPConnection(request.ip, request.port); @@ -949,7 +950,7 @@ class LinkMobile { } if (!asyncCommand.isActive && !request.commandSent) { - if (request.type == ConnectionType::TCP) + if (request.connectionType == ConnectionType::TCP) cmdCloseTCPConnection(request.connectionId); else cmdCloseUDPConnection(request.connectionId); @@ -958,10 +959,11 @@ class LinkMobile { break; } case UserRequest::Type::TRANSFER: { - if (state != CALL_ESTABLISHED) { + if (state != CALL_ESTABLISHED && state != ISP_ACTIVE) { userRequests.pop(); return; } + if (!asyncCommand.isActive && !request.commandSent) { cmdTransferData(request.connectionId, request.send.data, request.send.size); @@ -1199,9 +1201,9 @@ class LinkMobile { setState(SESSION_ACTIVE); return; } - if (userRequests.isEmpty()) - return abort(Error::Type::WTF); + if (userRequests.isEmpty()) + return; auto request = userRequests.peekRef(); if (asyncCommand.respondsTo(COMMAND_DNS_QUERY)) { @@ -1234,7 +1236,7 @@ class LinkMobile { request->open->success = false; } - request->close->completed = true; + request->open->completed = true; request->finished = true; } else if (asyncCommand.respondsTo(COMMAND_CLOSE_TCP_CONNECTION) || asyncCommand.respondsTo(COMMAND_CLOSE_UDP_CONNECTION)) { @@ -1285,6 +1287,10 @@ class LinkMobile { u32 size = asyncCommand.cmd.header.size - 1; for (u32 i = 0; i < size; i++) request->receive->data[i] = asyncCommand.cmd.data.bytes[1 + i]; + + request->receive->data[size] = '\0'; + // (just for convenience when using strings, the buffer is big enough) + request->receive->size = size; request->receive->success = true; } else { From c3ed1114a9515c2e7f3bacf4c91000514270ef5a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 23:15:30 -0300 Subject: [PATCH 118/195] Cleaning up requests --- lib/LinkMobile.hpp | 56 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 3c88d48..6895175 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -194,7 +194,16 @@ class LinkMobile { char _ispNumber1[16 + 1]; // (parsed from `configurationSlot1`) } __attribute__((packed)); - struct DNSQuery { + struct AsyncRequest { + volatile bool completed = false; + bool success = false; + + void waitForCompletion() { + // TODO: ASD + } + }; + + struct DNSQuery : public AsyncRequest { volatile bool completed = false; bool success = false; u8 ipv4[4] = {}; @@ -202,18 +211,18 @@ class LinkMobile { enum ConnectionType { TCP, UDP }; - struct OpenConn { + struct OpenConn : public AsyncRequest { volatile bool completed = false; bool success = false; u8 connectionId = 0; }; - struct CloseConn { + struct CloseConn : public AsyncRequest { volatile bool completed = false; bool success = false; }; - struct DataTransfer { + struct DataTransfer : public AsyncRequest { volatile bool completed = false; bool success = false; u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; @@ -721,6 +730,20 @@ class LinkMobile { bool commandSent; u32 timeout; bool finished; + + void cleanup() { + if (finished) + return; + AsyncRequest* metadata = type == DNS_QUERY ? (AsyncRequest*)dns + : type == OPEN_CONNECTION ? (AsyncRequest*)open + : type == CLOSE_CONNECTION ? (AsyncRequest*)close + : type == TRANSFER ? (AsyncRequest*)receive + : nullptr; + if (metadata != nullptr) { + metadata->success = false; + metadata->completed = true; + } + } }; union AdapterConfiguration { @@ -886,7 +909,7 @@ class LinkMobile { switch (request.type) { case UserRequest::Type::CALL: { if (state != SESSION_ACTIVE && state != CALL_REQUESTED) { - userRequests.pop(); + popRequest(); return; } if (state != CALL_REQUESTED) @@ -895,14 +918,14 @@ class LinkMobile { if (!asyncCommand.isActive) { setState(CALLING); cmdDialTelephone(request.phoneNumber); - userRequests.pop(); + popRequest(); } break; } case UserRequest::Type::ISP_LOGIN: { if (state != SESSION_ACTIVE && state != ISP_CALL_REQUESTED && state != ISP_CALLING) { - userRequests.pop(); + popRequest(); return; } if (state == SESSION_ACTIVE) @@ -918,7 +941,7 @@ class LinkMobile { } case UserRequest::Type::DNS_QUERY: { if (state != ISP_ACTIVE) { - userRequests.pop(); + popRequest(); return; } @@ -930,7 +953,7 @@ class LinkMobile { } case UserRequest::Type::OPEN_CONNECTION: { if (state != ISP_ACTIVE) { - userRequests.pop(); + popRequest(); return; } @@ -945,7 +968,7 @@ class LinkMobile { } case UserRequest::Type::CLOSE_CONNECTION: { if (state != ISP_ACTIVE) { - userRequests.pop(); + popRequest(); return; } @@ -960,7 +983,7 @@ class LinkMobile { } case UserRequest::Type::TRANSFER: { if (state != CALL_ESTABLISHED && state != ISP_ACTIVE) { - userRequests.pop(); + popRequest(); return; } @@ -973,7 +996,7 @@ class LinkMobile { } case UserRequest::Type::HANG_UP: { if (state != CALL_ESTABLISHED && state != ISP_ACTIVE) { - userRequests.pop(); + popRequest(); return; } if (!asyncCommand.isActive) @@ -987,7 +1010,7 @@ class LinkMobile { if (!asyncCommand.isActive) { setState(ENDING_SESSION); cmdEndSession(); - userRequests.pop(); + popRequest(); } break; } @@ -1426,6 +1449,13 @@ class LinkMobile { userRequests.syncPush(request); } + void popRequest() { + auto request = userRequests.peekRef(); + request->cleanup(); + request->finished = true; + userRequests.pop(); + } + bool shouldAbortOnStateTimeout() { return state > NEEDS_RESET && state < SESSION_ACTIVE; } From b7f5288d4cc95b6f6890d23d8acb8358f08b95b4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 18 Aug 2024 23:31:55 -0300 Subject: [PATCH 119/195] Adding waitFor(...) method --- README.md | 1 + lib/LinkMobile.hpp | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 65692d9..30cd957 100644 --- a/README.md +++ b/README.md @@ -453,6 +453,7 @@ Name | Return type | Description `openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. `closeConnection(connectionId, type, result)` | **bool** | Closes an active TCP/UDP (`type`) connection. The `result` is a pointer to a `LinkMobile::CloseConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was closed correctly, the `success` field will be `true`. `transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if an ISP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. If not, you can assume that the connection was closed. +`waitFor(asyncRequest)` | **bool** | Waits for `asyncRequest` to be completed. Returns `true` if the request was completed && successful, and the adapter session is still alive. Otherwise, it returns `false`. The `asyncRequest` is a pointer to a `LinkMobile::DNSQuery`, `LinkMobile::OpenConn`, `LinkMobile::CloseConn`, or `LinkMobile::DataTransfer`. `hangUp()` | **bool** | Hangs up the current P2P or ISP call. Closes all connections. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. `getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 6895175..d6343a8 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -197,10 +197,6 @@ class LinkMobile { struct AsyncRequest { volatile bool completed = false; bool success = false; - - void waitForCompletion() { - // TODO: ASD - } }; struct DNSQuery : public AsyncRequest { @@ -517,6 +513,21 @@ class LinkMobile { return true; } + /** + * @brief Waits for `asyncRequest` to be completed. Returns `true` if the + * request was completed && successful, and the adapter session is still + * alive. Otherwise, it returns `false`. + * @param asyncRequest A pointer to a `LinkMobile::DNSQuery`, + * `LinkMobile::OpenConn`, `LinkMobile::CloseConn`, or + * `LinkMobile::DataTransfer`. + */ + bool waitForCompletion(AsyncRequest* asyncRequest) { + while (isSessionActive() && !asyncRequest->completed) + Link::_IntrWait(1, Link::_IRQ_SERIAL | Link::_IRQ_VBLANK); + return isSessionActive() && asyncRequest->completed && + asyncRequest->success; + } + /** * @brief Hangs up the current P2P or ISP call. Closes all connections. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no From c41d99562a6711d00901ffac330c2268adf28964 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 00:41:49 -0300 Subject: [PATCH 120/195] Refactoring library and example. Renaming ISP => PPP --- README.md | 10 +- examples/LinkMobile_demo/src/main.cpp | 453 ++++++++++++-------------- examples/LinkMobile_demo/src/main.h | 54 +++ lib/LinkMobile.hpp | 148 +++++---- 4 files changed, 355 insertions(+), 310 deletions(-) create mode 100644 examples/LinkMobile_demo/src/main.h diff --git a/README.md b/README.md index 30cd957..9f0f1cf 100644 --- a/README.md +++ b/README.md @@ -448,19 +448,19 @@ Name | Return type | Description `deactivate()` | - | Deactivates the library, resetting the serial mode to GPIO. Calling `shutdown()` first is recommended, but the adapter will put itself in sleep mode after 3 seconds anyway. `shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. `call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED` (or `ACTIVE_SESSION` if the connection fails or ends). In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). -`callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). +`callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `PPP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). `dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. `openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. `closeConnection(connectionId, type, result)` | **bool** | Closes an active TCP/UDP (`type`) connection. The `result` is a pointer to a `LinkMobile::CloseConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was closed correctly, the `success` field will be `true`. -`transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if an ISP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. If not, you can assume that the connection was closed. +`transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if a PPP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. If not, you can assume that the connection was closed. `waitFor(asyncRequest)` | **bool** | Waits for `asyncRequest` to be completed. Returns `true` if the request was completed && successful, and the adapter session is still alive. Otherwise, it returns `false`. The `asyncRequest` is a pointer to a `LinkMobile::DNSQuery`, `LinkMobile::OpenConn`, `LinkMobile::CloseConn`, or `LinkMobile::DataTransfer`. -`hangUp()` | **bool** | Hangs up the current P2P or ISP call. Closes all connections. +`hangUp()` | **bool** | Hangs up the current P2P or PPP call. Closes all connections. `readConfiguration(configurationData)` | **bool** | Retrieves the adapter configuration, and puts it in the `configurationData` struct. If the adapter has an active session, the data is already loaded, so it's instantaneous. -`getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::ISP_LOGIN`, `LinkMobile::State::ISP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). +`getState()` | **LinkMobile::State** | Returns the current state (one of `LinkMobile::State::NEEDS_RESET`, `LinkMobile::State::PINGING`, `LinkMobile::State::WAITING_TO_START`, `LinkMobile::State::STARTING_SESSION`, `LinkMobile::State::ACTIVATING_SIO32`, `LinkMobile::State::WAITING_32BIT_SWITCH`, `LinkMobile::State::READING_CONFIGURATION`, `LinkMobile::State::SESSION_ACTIVE`, `LinkMobile::State::CALL_REQUESTED`, `LinkMobile::State::CALLING`, `LinkMobile::State::CALL_ESTABLISHED`, `LinkMobile::State::ISP_CALL_REQUESTED`, `LinkMobile::State::ISP_CALLING`, `LinkMobile::State::PPP_LOGIN`, `LinkMobile::State::PPP_ACTIVE`, `LinkMobile::State::SHUTDOWN_REQUESTED`, `LinkMobile::State::ENDING_SESSION`, `LinkMobile::State::WAITING_8BIT_SWITCH`, or `LinkMobile::State::SHUTDOWN`). `getRole()` | **LinkMobile::Role** | Returns the current role in the P2P connection (one of `LinkMobile::Role::NO_P2P_CONNECTION`, `LinkMobile::Role::CALLER`, or `LinkMobile::Role::RECEIVER`). `isConfigurationValid()` | **int** | Returns whether the adapter has been configured or not. Returns `1` = yes, `0` = no, `-1` = unknown (no session active). `isConnectedP2P()` | **bool** | Returns `true` if a P2P call is established (the state is `CALL_ESTABLISHED`). -`isConnectedISP()` | **bool** | Returns `true` if an ISP call is active (the state is `ISP_ACTIVE`). +`isConnectedPPP()` | **bool** | Returns `true` if a PPP session is active (the state is `PPP_ACTIVE`). `isSessionActive()` | **bool** | Returns `true` if the session is active. `canShutdown()` | **bool** | Returns `true` if there's an active session and there's no previous shutdown requests. `getDataSize()` | **LinkSPI::DataSize** | Returns the current operation mode (`LinkSPI::DataSize`). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index cf9bbfb..8c2c1a4 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -3,42 +3,27 @@ // (0) Include the header #include "../../../lib/LinkMobile.hpp" +#include "main.h" + #include #include -#include -#include #include "../../_lib/interrupt.h" -void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text); -std::string readConfiguration(); -std::string getNumberInput(); -std::string getPasswordInput(); -std::string getDomainInput(); -std::string getTextInput(std::string& field, - u32 maxChars, - std::string inputName, - std::string defaultValue, - std::string defaultValueName); -std::string getInput(std::string& field, - u32 maxChars, - std::string inputName, - std::vector> rows, - std::vector> altRows, - std::string defaultValue, - std::string defaultValueName, - std::string altName); -std::string getStateString(LinkMobile::State state); -std::string getErrorString(LinkMobile::Error error); -std::string getErrorTypeString(LinkMobile::Error::Type errorType); -std::string getResultString(LinkMobile::CommandResult cmdResult); -void log(std::string text); -std::string toStr(char* chars, int size); -void wait(u32 verticalLines); -bool didPress(u16 key, bool& pressed); -void waitForA(); +// One transfer for every N frames +constexpr static int TRANSFER_FREQUENCY = 30; + +bool isConnected = false; +LinkMobile::DataTransfer dataTransfer; +LinkMobile::DataTransfer lastCompletedTransfer; +LinkMobile::DNSQuery dnsQuery; +bool waitingDNS = false; +std::string outgoingData = ""; +u32 counter = 0; +u32 frameCounter = 0; +std::string output = ""; +bool hasError = false; +u16 keys = 0; -template -[[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1); bool left = false, right = false, up = false, down = false; bool a = false, b = false, l = false, r = false; bool start = false, select = false; @@ -57,12 +42,10 @@ int main() { init(); start: - // Options - log("LinkMobile_demo (v7.0.0)\n\n" - "Press A to start"); + log("LinkMobile_demo (v7.0.0)\n\nPress A to start"); waitForA(); - // (1) Create a LinkWireless instance + // (1) Create a LinkMobile instance linkMobile = new LinkMobile(); // (2) Add the required interrupt service routines @@ -77,178 +60,25 @@ start: // (3) Initialize the library linkMobile->activate(); - bool isConnected = false; - LinkMobile::DataTransfer dataTransfer; - LinkMobile::DataTransfer lastCompletedTransfer; - LinkMobile::DNSQuery dnsQuery; - bool waitingDNS = false; - std::string outgoingData = ""; - u32 counter = 0; - u32 frameCounter = 0; - while (true) { - // (one transfer for every N frames) - constexpr static int TRANSFER_FREQUENCY = 30; + keys = ~REG_KEYS & KEY_ANY; + hasError = linkMobile->getError().type != LinkMobile::Error::Type::NONE; + output = "State = " + getStateString(linkMobile->getState()) + "\n"; - u16 keys = ~REG_KEYS & KEY_ANY; - - std::string output = ""; - bool shouldWaitForA = false; - output += "State = " + getStateString(linkMobile->getState()) + "\n"; - - auto error = linkMobile->getError(); - bool hasError = error.type != LinkMobile::Error::NONE; - if (hasError) { - output += getErrorString(error); - output += "\n (SELECT = stop)"; - } else if (linkMobile->getState() == LinkMobile::State::SESSION_ACTIVE) { - output += "\nL = Read configuration"; - output += "\nR = Call someone"; - output += "\nSTART = Call the ISP"; - output += "\n\n (A = ok)\n (SELECT = stop)"; - } else { - if (linkMobile->isConnectedP2P()) { - output += "\n (A = send)"; - output += "\n (L = hang up)"; - } else if (linkMobile->isConnectedISP()) { - output += "\n (A = DNS query)"; - output += "\n (L = hang up)"; - } - output += "\n (SELECT = stop)"; - } + printMenu(); if (linkMobile->isConnectedP2P()) { - if (!isConnected) { - isConnected = true; - outgoingData = linkMobile->getRole() == LinkMobile::Role::CALLER - ? "caller!!!" - : "receiver!!!"; - transfer(dataTransfer, outgoingData); - } - if (dataTransfer.completed) { - if (dataTransfer.size > 0) - lastCompletedTransfer = dataTransfer; - dataTransfer.completed = false; - } - - if (keys & KEY_A) { - counter++; - outgoingData = - (linkMobile->getRole() == LinkMobile::Role::CALLER ? "caller: " - : "receiver: ") + - std::to_string(counter); - } - - frameCounter++; - if (frameCounter >= TRANSFER_FREQUENCY) { - frameCounter = 0; - transfer(dataTransfer, outgoingData); - } - - if (lastCompletedTransfer.completed) { - char received[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH]; - for (u32 i = 0; i < lastCompletedTransfer.size; i++) - received[i] = lastCompletedTransfer.data[i]; - received[lastCompletedTransfer.size] = '\0'; - output += "\n\n>> " + std::string(outgoingData); - output += "\n<< " + std::string(received); - } - } else if (linkMobile->isConnectedISP()) { - if (!isConnected) - isConnected = true; - - if (waitingDNS && dnsQuery.completed) { - waitingDNS = false; - log("DNS Response:\n " + std::to_string(dnsQuery.ipv4[0]) + "." + - std::to_string(dnsQuery.ipv4[1]) + "." + - std::to_string(dnsQuery.ipv4[2]) + "." + - std::to_string(dnsQuery.ipv4[3]) + "\n\n" + - (dnsQuery.success ? "OK!\nLet's connect to it on TCP 80!" - : "DNS query failed!")); - waitForA(); - - // (9) Open connections - log("Connecting..."); - LinkMobile::OpenConn openConn; - linkMobile->openConnection(dnsQuery.ipv4, 80, - LinkMobile::ConnectionType::TCP, &openConn); - - while (linkMobile->isConnectedISP() && !openConn.completed) - VBlankIntrWait(); - if (!linkMobile->isConnectedISP()) - continue; - - if (openConn.success) { - LinkMobile::DataTransfer http; - std::string request = std::string("GET / HTTP/1.1\r\nHost: ") + - selectedDomain + "\r\n\r\n"; - for (u32 i = 0; i < request.size(); i++) - http.data[i] = request[i]; - http.size = request.size(); - linkMobile->transfer(http, &http, openConn.connectionId); - log("Connected! (" + std::to_string(openConn.connectionId) + - ") Requesting /"); - - while (linkMobile->isConnectedISP() && !http.completed) - VBlankIntrWait(); - if (!linkMobile->isConnectedISP()) - continue; - - if (http.success) { - u32 retry = 1; - while (http.size == 0) { - log("Re-transfering... " + std::to_string(retry)); - LinkMobile::DataTransfer retryy = - LinkMobile::DataTransfer{.data = {}, .size = 0}; - for (u32 i = 0; i < request.size(); i++) - retryy.data[i] = request[i]; - retryy.size = request.size(); - linkMobile->transfer(retryy, &http, openConn.connectionId); - while (linkMobile->isConnectedISP() && !http.completed) - VBlankIntrWait(); - if (!linkMobile->isConnectedISP()) - break; - if (!http.success) - break; - retry++; - } - if (!linkMobile->isConnectedISP()) - continue; - if (!http.success) { - log("HTTP failed!"); - waitForA(); - continue; - } - - log("Internet on GBA! yay\n\n" + std::string((char*)http.data)); - waitForA(); - } else { - log("HTTP request failed!"); - waitForA(); - } - } else { - log("Connection to \"" + selectedDomain + "\" failed!"); - waitForA(); - } - } - - output += waitingDNS ? "\n\nWaiting DNS..." : ""; - } else { - if (isConnected) { - isConnected = false; - dataTransfer = {}; - lastCompletedTransfer = {}; - dnsQuery = {}; - waitingDNS = false; - counter = 0; - frameCounter = 0; - outgoingData = ""; - } + handleP2P(); + } else if (linkMobile->isConnectedPPP()) { + handlePPP(); + } else if (isConnected) { + cleanup(); } // SELECT = stop if (didPress(KEY_SELECT, select)) { bool didShutdown = linkMobile->getState() == LinkMobile::State::SHUTDOWN; + if (hasError || didShutdown) { linkMobile->deactivate(); interrupt_disable(INTR_VBLANK); @@ -264,7 +94,7 @@ start: goto start; } else if (linkMobile->canShutdown()) { - // (11) Turn off the adapter + // (12) Turn off the adapter linkMobile->shutdown(); } } @@ -273,8 +103,8 @@ start: case LinkMobile::State::SESSION_ACTIVE: { // L = Read Configuration if (didPress(KEY_L, l)) { - output = readConfiguration(); - shouldWaitForA = true; + readConfiguration(); + waitForA(); } // R = Call someone @@ -304,7 +134,7 @@ start: } break; } - case LinkMobile::State::ISP_ACTIVE: { + case LinkMobile::State::PPP_ACTIVE: { // A = DNS query if (didPress(KEY_A, a) && !waitingDNS) { std::string domain = getDomainInput(); @@ -327,29 +157,140 @@ start: VBlankIntrWait(); log(output); - if (shouldWaitForA) - waitForA(); } return 0; } -void transfer(LinkMobile::DataTransfer& dataTransfer, std::string text) { - // (5) Send/receive data - for (u32 i = 0; i < text.size(); i++) - dataTransfer.data[i] = text[i]; - dataTransfer.data[text.size()] = '\0'; - dataTransfer.size = text.size() + 1; - linkMobile->transfer(dataTransfer, &dataTransfer); +void handleP2P() { + if (!isConnected) { + // First transfer + isConnected = true; + outgoingData = linkMobile->getRole() == LinkMobile::Role::CALLER + ? "caller!!!" + : "receiver!!!"; + transfer(dataTransfer, outgoingData, 0xff, true); + } + + if (dataTransfer.completed) { + // Save a copy of last received data + if (dataTransfer.size > 0) + lastCompletedTransfer = dataTransfer; + dataTransfer.completed = false; + } + + if (keys & KEY_A) { + // `A` increments the counter + counter++; + outgoingData = + (linkMobile->getRole() == LinkMobile::Role::CALLER ? "caller: " + : "receiver: ") + + std::to_string(counter); + } + + frameCounter++; + if (frameCounter >= TRANSFER_FREQUENCY) { + // Transfer every N frames + frameCounter = 0; + transfer(dataTransfer, outgoingData, 0xff, true); + } + + if (lastCompletedTransfer.completed) { + // Show received data + output += "\n\n>> " + std::string(outgoingData); + output += "\n<< " + std::string((char*)lastCompletedTransfer.data); + // (LinkMobile zero-pads an extra byte, so this is safe) + } } -std::string readConfiguration() { +void handlePPP() { + if (!isConnected) + isConnected = true; + + if (waitingDNS && dnsQuery.completed) { + waitingDNS = false; + log("DNS Response:\n " + std::to_string(dnsQuery.ipv4[0]) + "." + + std::to_string(dnsQuery.ipv4[1]) + "." + + std::to_string(dnsQuery.ipv4[2]) + "." + + std::to_string(dnsQuery.ipv4[3]) + "\n\n" + + (dnsQuery.success ? "OK!\nLet's connect to it on TCP 80!" + : "DNS query failed!")); + waitForA(); + if (!dnsQuery.success) + return; + + // (9) Open connections + log("Connecting..."); + LinkMobile::OpenConn openConn; + linkMobile->openConnection(dnsQuery.ipv4, 80, + LinkMobile::ConnectionType::TCP, &openConn); + if (!linkMobile->waitFor(&openConn)) { + log("Connection failed!"); + waitForA(); + return; + } + + // HTTP request + + LinkMobile::DataTransfer http; + std::string request = + std::string("GET / HTTP/1.1\r\nHost: ") + selectedDomain + "\r\n\r\n"; + std::string output = ""; + u32 chunk = 1; + u32 retry = 1; + do { + log("Downloading... (" + std::to_string(chunk) + ", " + + std::to_string(retry) + ")\n (hold START = close conn)\n\n" + output); + + if (didPress(KEY_START, start)) { + log("Closing..."); + LinkMobile::CloseConn closeConn; + linkMobile->closeConnection( + openConn.connectionId, LinkMobile::ConnectionType::TCP, &closeConn); + linkMobile->waitFor(&closeConn); + return; + } + + transfer(http, request, openConn.connectionId); + if (!linkMobile->waitFor(&http)) { + log("Connection closed:\n " + std::to_string(chunk) + " packets!\n\n" + + output); + waitForA(); + return; + } + + if (http.size > 0) { + chunk++; + output += std::string((char*)http.data); + // (LinkMobile zero-pads an extra byte, so this is safe) + } + + http = {}; + request = ""; + retry++; + } while (true); + } + + output += waitingDNS ? "\n\nWaiting DNS..." : ""; +} + +void cleanup() { + isConnected = false; + dataTransfer = {}; + lastCompletedTransfer = {}; + dnsQuery = {}; + waitingDNS = false; + counter = 0; + frameCounter = 0; + outgoingData = ""; +} + +void readConfiguration() { LinkMobile::ConfigurationData data; if (!linkMobile->readConfiguration(data)) - return "Read failed :("; + log("Read failed :("); - return ( - "Magic:\n " + toStr(data.magic, 2) + ", $" + + log("Magic:\n " + toStr(data.magic, 2) + ", $" + toHex(data.registrationState) + "\nPrimary DNS:\n " + std::to_string(data.primaryDNS[0]) + "." + std::to_string(data.primaryDNS[1]) + "." + @@ -368,6 +309,42 @@ std::string readConfiguration() { : "SIO8")); } +void printMenu() { + auto error = linkMobile->getError(); + + if (hasError) { + output += getErrorString(error); + output += "\n (SELECT = stop)"; + } else if (linkMobile->getState() == LinkMobile::State::SESSION_ACTIVE) { + output += "\nL = Read configuration"; + output += "\nR = Call someone"; + output += "\nSTART = Call the ISP"; + output += "\n\n (A = ok)\n (SELECT = stop)"; + } else { + if (linkMobile->isConnectedP2P()) { + output += "\n (A = send)"; + output += "\n (L = hang up)"; + } else if (linkMobile->isConnectedPPP()) { + output += "\n (A = DNS query)"; + output += "\n (L = hang up)"; + } + output += "\n (SELECT = stop)"; + } +} + +void transfer(LinkMobile::DataTransfer& dataTransfer, + std::string text, + u8 connectionId, + bool addNullTerminator) { + // (5) Send/receive data + for (u32 i = 0; i < text.size(); i++) + dataTransfer.data[i] = text[i]; + if (addNullTerminator) + dataTransfer.data[text.size()] = '\0'; + dataTransfer.size = text.size() + addNullTerminator; + linkMobile->transfer(dataTransfer, &dataTransfer, connectionId); +} + std::string getNumberInput() { std::vector> rows; rows.push_back({"1", "2", "3"}); @@ -377,24 +354,25 @@ std::string getNumberInput() { std::vector> altRows; return getInput(selectedNumber, LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH, - "a number", rows, altRows, "127000000001", "localhost", ""); + "a number", rows, altRows, {{"localhost", "127000000001"}}, + ""); } std::string getPasswordInput() { return getTextInput(selectedPassword, LINK_MOBILE_MAX_PASSWORD_LENGTH, - "your password", "pass123", "pass123"); + "your password", {{"pass123", "pass123"}}); } std::string getDomainInput() { - return getTextInput(selectedDomain, LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH, - "a domain name", "something.com", "something.com"); + return getTextInput( + selectedDomain, LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH, "a domain name", + {{"something.com", "something.com"}, {"localhost", "localhost"}}); } std::string getTextInput(std::string& field, u32 maxChars, std::string inputName, - std::string defaultValue, - std::string defaultValueName) { + std::vector defaultValues) { std::vector> rows; rows.push_back({"a", "b", "c", "d", "e"}); rows.push_back({"f", "g", "h", "i", "j"}); @@ -415,8 +393,8 @@ std::string getTextInput(std::string& field, altRows.push_back({"5", "6", "7", "8", "9"}); altRows.push_back({"0", ".", "#", "/", "?"}); - return getInput(field, maxChars, inputName, rows, altRows, defaultValue, - defaultValueName, "caps lock"); + return getInput(field, maxChars, inputName, rows, altRows, defaultValues, + "caps lock"); } std::string getInput(std::string& field, @@ -424,13 +402,13 @@ std::string getInput(std::string& field, std::string inputName, std::vector> rows, std::vector> altRows, - std::string defaultValue, - std::string defaultValueName, + std::vector defaultValues, std::string altName) { VBlankIntrWait(); int selectedX = 0; int selectedY = 0; + int selectedDefaultValue = 0; bool altActive = false; while (true) { @@ -469,8 +447,10 @@ std::string getInput(std::string& field, if (field.size() < maxChars) field += renderRows[selectedY][selectedX]; } - if (didPress(KEY_SELECT, select)) - field = defaultValue; + if (didPress(KEY_SELECT, select)) { + field = defaultValues[selectedDefaultValue].value; + selectedDefaultValue = (selectedDefaultValue + 1) % defaultValues.size(); + } if (didPress(KEY_START, start)) return field; if (altName != "" && didPress(KEY_L, l)) @@ -486,7 +466,8 @@ std::string getInput(std::string& field, output += "\n"; } - output += "\n (B = back)\n (A = select)\n (SELECT = " + defaultValueName + + output += "\n (B = back)\n (A = select)\n (SELECT = " + + defaultValues[selectedDefaultValue].name + ")\n (START = confirm)"; if (altName != "") @@ -525,10 +506,10 @@ std::string getStateString(LinkMobile::State state) { return "ISP_CALL_REQUESTED"; case LinkMobile::State::ISP_CALLING: return "ISP_CALLING"; - case LinkMobile::State::ISP_LOGIN: - return "ISP_LOGIN"; - case LinkMobile::State::ISP_ACTIVE: - return "ISP_ACTIVE"; + case LinkMobile::State::PPP_LOGIN: + return "PPP_LOGIN"; + case LinkMobile::State::PPP_ACTIVE: + return "PPP_ACTIVE"; case LinkMobile::State::SHUTDOWN_REQUESTED: return "SHUTDOWN_REQUESTED"; case LinkMobile::State::ENDING_SESSION: @@ -558,8 +539,8 @@ std::string getErrorTypeString(LinkMobile::Error::Type errorType) { switch (errorType) { case LinkMobile::Error::Type::ADAPTER_NOT_CONNECTED: return "ADAPTER_NOT_CONNECTED"; - case LinkMobile::Error::Type::ISP_LOGIN_FAILED: - return "ISP_LOGIN_FAILED"; + case LinkMobile::Error::Type::PPP_LOGIN_FAILED: + return "PPP_LOGIN_FAILED"; case LinkMobile::Error::Type::COMMAND_FAILED: return "COMMAND_FAILED"; case LinkMobile::Error::Type::WEIRD_RESPONSE: @@ -604,6 +585,8 @@ std::string lastLoggedText = ""; void log(std::string text) { if (text == lastLoggedText) return; + if (linkMobile != nullptr) + VBlankIntrWait(); tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); @@ -655,5 +638,3 @@ template rc[i] = digits[(w >> j) & 0x0f]; return rc; } - -// TODO: Implement TCP/UDP sockets test functions diff --git a/examples/LinkMobile_demo/src/main.h b/examples/LinkMobile_demo/src/main.h new file mode 100644 index 0000000..911515c --- /dev/null +++ b/examples/LinkMobile_demo/src/main.h @@ -0,0 +1,54 @@ +#ifndef MAIN_H +#define MAIN_H + +#include "../../../lib/LinkMobile.hpp" + +#include +#include + +struct DefaultValue { + std::string name; + std::string value; +}; + +void handleP2P(); +void handlePPP(); +void cleanup(); +void readConfiguration(); + +void printMenu(); +void transfer(LinkMobile::DataTransfer& dataTransfer, + std::string text, + unsigned char connectionId, + bool addNullTerminator = false); + +std::string getNumberInput(); +std::string getPasswordInput(); +std::string getDomainInput(); +std::string getTextInput(std::string& field, + unsigned int maxChars, + std::string inputName, + std::vector defaultValues); +std::string getInput(std::string& field, + unsigned int maxChars, + std::string inputName, + std::vector> rows, + std::vector> altRows, + std::vector defaultValues, + std::string altName); + +std::string getStateString(LinkMobile::State state); +std::string getErrorString(LinkMobile::Error error); +std::string getErrorTypeString(LinkMobile::Error::Type errorType); +std::string getResultString(LinkMobile::CommandResult cmdResult); + +void log(std::string text); +std::string toStr(char* chars, int size); +void wait(unsigned int verticalLines); +bool didPress(unsigned short key, bool& pressed); +void waitForA(); + +template +[[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1); + +#endif // MAIN_H diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index d6343a8..dce297d 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -38,15 +38,16 @@ // - 9) Open connections: // auto type = LinkMobile::ConnectionType::TCP; // LinkMobile::OpenConn openConn; -// linkMobile->openConnection(dnsQuery.ipv4, type, openConn); +// linkMobile->openConnection(dnsQuery.ipv4, connType, &openConn); // // (do something until `openConn.completed` is `true`) // // (use `openConn.connectionId` as last argument of `transfer(...)`) // - 10) Close connections: -// auto type = LinkMobile::ConnectionType::TCP; // LinkMobile::CloseConn closeConn; -// linkMobile->closeConnection(openConn.connectionId, type, closeConn); -// // (do something until `openConn.completed` is `true`) -// - 11) Turn off the adapter: +// linkMobile->closeConnection(openConn.connectionId, type, &closeConn); +// // (do something until `closeConn.completed` is `true`) +// - 11) Synchronously wait for an action to be completed: +// linkMobile->waitFor(&dnsQuery); +// - 12) Turn off the adapter: // linkMobile->shutdown(); // -------------------------------------------------------------------------- // (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. @@ -149,25 +150,25 @@ class LinkMobile { public: enum State { - NEEDS_RESET, - PINGING, - WAITING_TO_START, - STARTING_SESSION, - ACTIVATING_SIO32, - WAITING_32BIT_SWITCH, - READING_CONFIGURATION, - SESSION_ACTIVE, - CALL_REQUESTED, - CALLING, - CALL_ESTABLISHED, - ISP_CALL_REQUESTED, - ISP_CALLING, - ISP_LOGIN, - ISP_ACTIVE, - SHUTDOWN_REQUESTED, - ENDING_SESSION, - WAITING_8BIT_SWITCH, - SHUTDOWN + NEEDS_RESET = 0, + PINGING = 1, + WAITING_TO_START = 2, + STARTING_SESSION = 3, + ACTIVATING_SIO32 = 4, + WAITING_32BIT_SWITCH = 5, + READING_CONFIGURATION = 6, + SESSION_ACTIVE = 7, + CALL_REQUESTED = 8, + CALLING = 9, + CALL_ESTABLISHED = 10, + ISP_CALL_REQUESTED = 11, + ISP_CALLING = 12, + PPP_LOGIN = 13, + PPP_ACTIVE = 14, + SHUTDOWN_REQUESTED = 15, + ENDING_SESSION = 16, + WAITING_8BIT_SWITCH = 17, + SHUTDOWN = 18 }; enum Role { NO_P2P_CONNECTION, CALLER, RECEIVER }; @@ -200,27 +201,20 @@ class LinkMobile { }; struct DNSQuery : public AsyncRequest { - volatile bool completed = false; - bool success = false; u8 ipv4[4] = {}; }; enum ConnectionType { TCP, UDP }; struct OpenConn : public AsyncRequest { - volatile bool completed = false; - bool success = false; u8 connectionId = 0; }; struct CloseConn : public AsyncRequest { - volatile bool completed = false; bool success = false; }; struct DataTransfer : public AsyncRequest { - volatile bool completed = false; - bool success = false; u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; u8 size = 0; }; @@ -242,7 +236,7 @@ class LinkMobile { enum Type { NONE, ADAPTER_NOT_CONNECTED, - ISP_LOGIN_FAILED, + PPP_LOGIN_FAILED, COMMAND_FAILED, WEIRD_RESPONSE, TIMEOUT, @@ -349,7 +343,7 @@ class LinkMobile { * @brief Calls the ISP number registered in the adapter configuration, or a * default number if the adapter hasn't been configured. Then, performs a * login operation using the provided REON `password` and `loginId`. After - * some time, the state will be `ISP_ACTIVE`. If `loginId` is empty and the + * some time, the state will be `PPP_ACTIVE`. If `loginId` is empty and the * adapter has been configured, it will use the one stored in the * configuration. * @param password The password, as a null-terminated string (max `32` @@ -363,7 +357,7 @@ class LinkMobile { if (state != SESSION_ACTIVE || userRequests.isFull()) return false; - auto request = UserRequest{.type = UserRequest::Type::ISP_LOGIN}; + auto request = UserRequest{.type = UserRequest::Type::PPP_LOGIN}; copyString(request.password, password, LINK_MOBILE_MAX_PASSWORD_LENGTH); if (std::strlen(loginId) > 0) @@ -387,11 +381,14 @@ class LinkMobile { * `completed` field will be `true`. If an IP address was found, the `success` * field will be `true` and the `ipv4` field can be read as a 4-byte address. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no - * active ISP session or available request slots. + * active PPP session or available request slots. */ bool dnsQuery(const char* domainName, DNSQuery* result) { - if (state != ISP_ACTIVE || userRequests.isFull()) + if (state != PPP_ACTIVE || userRequests.isFull()) { + result->success = false; + result->completed = true; return false; + } result->completed = false; result->success = false; @@ -425,14 +422,17 @@ class LinkMobile { * connection was closed. * \warning Only `2` connections can be opened at the same time. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no - * active ISP session, no available request slots. + * active PPP session, no available request slots. */ bool openConnection(const u8* ip, u16 port, ConnectionType type, OpenConn* result) { - if (state != ISP_ACTIVE || userRequests.isFull()) + if (state != PPP_ACTIVE || userRequests.isFull()) { + result->success = false; + result->completed = true; return false; + } result->completed = false; result->success = false; @@ -458,13 +458,16 @@ class LinkMobile { * `completed` field will be `true`. If the connection was closed correctly, * the `success` field will be `true`. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no - * active ISP session, no available request slots. + * active PPP session, no available request slots. */ bool closeConnection(u8 connectionId, ConnectionType type, CloseConn* result) { - if (state != ISP_ACTIVE || userRequests.isFull()) + if (state != PPP_ACTIVE || userRequests.isFull()) { + result->success = false; + result->completed = true; return false; + } result->completed = false; result->success = false; @@ -482,7 +485,7 @@ class LinkMobile { /** * @brief Requests a data transfer and responds the received data. The * transfer can be done with the other node in a P2P connection, or with any - * open TCP/UDP connection if an ISP session is active. In the case of a + * open TCP/UDP connection if a PPP session is active. In the case of a * TCP/UDP connection, the `connectionId` must be provided. * @param dataToSend The data to send, up to 254 bytes. * @param result A pointer to a `LinkMobile::DataTransfer` struct that @@ -496,9 +499,12 @@ class LinkMobile { bool transfer(DataTransfer dataToSend, DataTransfer* result, u8 connectionId = 0xff) { - if ((state != CALL_ESTABLISHED && state != ISP_ACTIVE) || - userRequests.isFull()) + if ((state != CALL_ESTABLISHED && state != PPP_ACTIVE) || + userRequests.isFull()) { + result->success = false; + result->completed = true; return false; + } result->completed = false; result->success = false; @@ -521,20 +527,21 @@ class LinkMobile { * `LinkMobile::OpenConn`, `LinkMobile::CloseConn`, or * `LinkMobile::DataTransfer`. */ - bool waitForCompletion(AsyncRequest* asyncRequest) { + bool waitFor(AsyncRequest* asyncRequest) { while (isSessionActive() && !asyncRequest->completed) Link::_IntrWait(1, Link::_IRQ_SERIAL | Link::_IRQ_VBLANK); + return isSessionActive() && asyncRequest->completed && asyncRequest->success; } /** - * @brief Hangs up the current P2P or ISP call. Closes all connections. + * @brief Hangs up the current P2P or PPP call. Closes all connections. * \warning Non-blocking. Returns `true` immediately, or `false` if there's no * active call or available request slots. */ bool hangUp() { - if ((state != CALL_ESTABLISHED && state != ISP_ACTIVE) || + if ((state != CALL_ESTABLISHED && state != PPP_ACTIVE) || userRequests.isFull()) return false; @@ -588,10 +595,10 @@ class LinkMobile { [[nodiscard]] bool isConnectedP2P() { return state == CALL_ESTABLISHED; } /** - * @brief Returns `true` if an ISP call is active (the state is - * `ISP_ACTIVE`). + * @brief Returns `true` if a PPP session is active (the state is + * `PPP_ACTIVE`). */ - [[nodiscard]] bool isConnectedISP() { return state == ISP_ACTIVE; } + [[nodiscard]] bool isConnectedPPP() { return state == PPP_ACTIVE; } /** * @brief Returns `true` if the session is active. @@ -716,7 +723,7 @@ class LinkMobile { struct UserRequest { enum Type { CALL, - ISP_LOGIN, + PPP_LOGIN, DNS_QUERY, OPEN_CONNECTION, CLOSE_CONNECTION, @@ -933,7 +940,7 @@ class LinkMobile { } break; } - case UserRequest::Type::ISP_LOGIN: { + case UserRequest::Type::PPP_LOGIN: { if (state != SESSION_ACTIVE && state != ISP_CALL_REQUESTED && state != ISP_CALLING) { popRequest(); @@ -951,7 +958,7 @@ class LinkMobile { break; } case UserRequest::Type::DNS_QUERY: { - if (state != ISP_ACTIVE) { + if (state != PPP_ACTIVE) { popRequest(); return; } @@ -963,7 +970,7 @@ class LinkMobile { break; } case UserRequest::Type::OPEN_CONNECTION: { - if (state != ISP_ACTIVE) { + if (state != PPP_ACTIVE) { popRequest(); return; } @@ -978,7 +985,7 @@ class LinkMobile { break; } case UserRequest::Type::CLOSE_CONNECTION: { - if (state != ISP_ACTIVE) { + if (state != PPP_ACTIVE) { popRequest(); return; } @@ -993,7 +1000,7 @@ class LinkMobile { break; } case UserRequest::Type::TRANSFER: { - if (state != CALL_ESTABLISHED && state != ISP_ACTIVE) { + if (state != CALL_ESTABLISHED && state != PPP_ACTIVE) { popRequest(); return; } @@ -1006,7 +1013,7 @@ class LinkMobile { break; } case UserRequest::Type::HANG_UP: { - if (state != CALL_ESTABLISHED && state != ISP_ACTIVE) { + if (state != CALL_ESTABLISHED && state != PPP_ACTIVE) { popRequest(); return; } @@ -1207,11 +1214,11 @@ class LinkMobile { if (userRequests.isEmpty()) return abort(Error::Type::WTF); auto request = userRequests.peekRef(); - if (request->type != UserRequest::ISP_LOGIN) + if (request->type != UserRequest::PPP_LOGIN) return abort(Error::Type::WTF); if (asyncCommand.result == CommandResult::SUCCESS) { - setState(ISP_LOGIN); + setState(PPP_LOGIN); cmdISPLogin(request->loginId, request->password); } else { // (ISP call failed) @@ -1221,16 +1228,16 @@ class LinkMobile { break; } - case ISP_LOGIN: { + case PPP_LOGIN: { if (!asyncCommand.respondsTo(COMMAND_ISP_LOGIN)) return; if (asyncCommand.result != CommandResult::SUCCESS) - return abort(Error::Type::ISP_LOGIN_FAILED); + return abort(Error::Type::PPP_LOGIN_FAILED); - setState(ISP_ACTIVE); + setState(PPP_ACTIVE); break; } - case ISP_ACTIVE: { + case PPP_ACTIVE: { if (asyncCommand.respondsTo(COMMAND_HANG_UP_TELEPHONE)) { setState(SESSION_ACTIVE); return; @@ -1477,13 +1484,16 @@ class LinkMobile { u8 commandId = asyncCommand.relatedCommandId(); return asyncCommand.direction == AsyncCommand::Direction::SENDING || (commandId != COMMAND_WAIT_FOR_TELEPHONE_CALL && - commandId != COMMAND_DIAL_TELEPHONE && - commandId != COMMAND_DNS_QUERY && - commandId != COMMAND_OPEN_TCP_CONNECTION && - commandId != COMMAND_CLOSE_TCP_CONNECTION && - commandId != COMMAND_OPEN_UDP_CONNECTION && - commandId != COMMAND_CLOSE_UDP_CONNECTION && - commandId != COMMAND_TRANSFER_DATA); + commandId != COMMAND_DIAL_TELEPHONE && !isAsyncRequest(commandId)); + } + + bool isAsyncRequest(u8 commandId) { + return commandId == COMMAND_DNS_QUERY || + commandId == COMMAND_OPEN_TCP_CONNECTION || + commandId == COMMAND_CLOSE_TCP_CONNECTION || + commandId == COMMAND_OPEN_UDP_CONNECTION || + commandId == COMMAND_CLOSE_UDP_CONNECTION || + commandId == COMMAND_TRANSFER_DATA; } void addData(u8 value, bool start = false) { From 03314004e94b3dc5e5a6fb5f61fb112ed01be992 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 01:53:13 -0300 Subject: [PATCH 121/195] Refactors and improving docs --- README.md | 2 +- lib/LinkMobile.hpp | 41 ++++++++++++++++++----------------------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 9f0f1cf..6234032 100644 --- a/README.md +++ b/README.md @@ -415,7 +415,7 @@ It has two modes of operation: - Direct call (P2P): Calling someone directly for a 2-player session, using the other person's IP address or the phone number provided by the [relay server](https://github.com/REONTeam/mobile-relay). - ISP call (PPP): Calling an ISP number for internet access. In this mode, the adapter can open up to 2 TCP/UDP sockets and transfer arbitrary data. -![screenshot](https://github.com/user-attachments/assets/ff0ea09f-807c-4ba9-9dac-9cae8f831408) +![screenshot](https://github.com/user-attachments/assets/fcc1488b-4955-4a1b-8ffa-dd660175a45c) ## Constructor diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index dce297d..9ddefd1 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -30,6 +30,7 @@ // linkMobile->hangUp(); // - 7) Connect to the internet: // linkMobile->callISP("REON password"); +// // (do something until `linkMobile->isConnectedPPP()` returns `true`) // - 8) Run DNS queries: // LinkMobile::DNSQuery dnsQuery; // linkMobile->dnsQuery("something.com", &dnsQuery); @@ -91,7 +92,6 @@ static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; /** * @brief A high level driver for the Mobile Adapter GB. - * \warning Check out the REON project -> https://github.com/REONTeam */ class LinkMobile { private: @@ -173,6 +173,8 @@ class LinkMobile { enum Role { NO_P2P_CONNECTION, CALLER, RECEIVER }; + enum ConnectionType { TCP, UDP }; + struct ConfigurationData { char magic[2]; u8 registrationState; @@ -198,14 +200,18 @@ class LinkMobile { struct AsyncRequest { volatile bool completed = false; bool success = false; + + bool fail() { + success = false; + completed = true; + return false; + } }; struct DNSQuery : public AsyncRequest { u8 ipv4[4] = {}; }; - enum ConnectionType { TCP, UDP }; - struct OpenConn : public AsyncRequest { u8 connectionId = 0; }; @@ -384,11 +390,8 @@ class LinkMobile { * active PPP session or available request slots. */ bool dnsQuery(const char* domainName, DNSQuery* result) { - if (state != PPP_ACTIVE || userRequests.isFull()) { - result->success = false; - result->completed = true; - return false; - } + if (state != PPP_ACTIVE || userRequests.isFull()) + return result->fail(); result->completed = false; result->success = false; @@ -428,11 +431,8 @@ class LinkMobile { u16 port, ConnectionType type, OpenConn* result) { - if (state != PPP_ACTIVE || userRequests.isFull()) { - result->success = false; - result->completed = true; - return false; - } + if (state != PPP_ACTIVE || userRequests.isFull()) + return result->fail(); result->completed = false; result->success = false; @@ -463,11 +463,8 @@ class LinkMobile { bool closeConnection(u8 connectionId, ConnectionType type, CloseConn* result) { - if (state != PPP_ACTIVE || userRequests.isFull()) { - result->success = false; - result->completed = true; - return false; - } + if (state != PPP_ACTIVE || userRequests.isFull()) + return result->fail(); result->completed = false; result->success = false; @@ -500,14 +497,12 @@ class LinkMobile { DataTransfer* result, u8 connectionId = 0xff) { if ((state != CALL_ESTABLISHED && state != PPP_ACTIVE) || - userRequests.isFull()) { - result->success = false; - result->completed = true; - return false; - } + userRequests.isFull()) + return result->fail(); result->completed = false; result->success = false; + auto request = UserRequest{.type = UserRequest::Type::TRANSFER, .connectionId = connectionId, .send = {.data = {}, .size = dataToSend.size}, From 8e87445c4423a03cf53ef4c2daeea44db5e8280a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 02:40:40 -0300 Subject: [PATCH 122/195] Disabling mGBA logs and refactoring --- README.md | 2 +- examples/LinkMobile_demo/src/main.cpp | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6234032..59c8d11 100644 --- a/README.md +++ b/README.md @@ -409,7 +409,7 @@ The GBA operates using `1` stop bit, but everything else can be configured. By d This is a driver for an accessory that enables online conectivity on the GB and GBA. The protocol was reverse-engineered by the *REON Team*. -The original accessory was sold in Japan only and doesn't work anymore since it relies on old tech, but REON has created an open-source implementation called [libmobile](https://github.com/REONTeam/libmobile), as well as support for emulators and microcontrollers. +The original accessory was sold in Japan only and doesn't work anymore since it relies on old tech and servers, but REON has created an open-source implementation called [libmobile](https://github.com/REONTeam/libmobile), as well as support for emulators and microcontrollers. It has two modes of operation: - Direct call (P2P): Calling someone directly for a 2-player session, using the other person's IP address or the phone number provided by the [relay server](https://github.com/REONTeam/mobile-relay). diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 8c2c1a4..5b0f3da 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -1,4 +1,4 @@ -#define LINK_ENABLE_DEBUG_LOGS 1 +#define LINK_ENABLE_DEBUG_LOGS 0 // (0) Include the header #include "../../../lib/LinkMobile.hpp" @@ -13,6 +13,10 @@ constexpr static int TRANSFER_FREQUENCY = 30; bool isConnected = false; +bool hasError = false; +u16 keys = 0; +std::string output = ""; + LinkMobile::DataTransfer dataTransfer; LinkMobile::DataTransfer lastCompletedTransfer; LinkMobile::DNSQuery dnsQuery; @@ -20,9 +24,6 @@ bool waitingDNS = false; std::string outgoingData = ""; u32 counter = 0; u32 frameCounter = 0; -std::string output = ""; -bool hasError = false; -u16 keys = 0; bool left = false, right = false, up = false, down = false; bool a = false, b = false, l = false, r = false; From 758855c14269b9468cb1e74e921a883606b75b3b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 03:03:09 -0300 Subject: [PATCH 123/195] Organizing images --- docs/img/link-cable-multiboot.gif | Bin 0 -> 719688 bytes docs/img/link-cable.png | Bin 0 -> 50254 bytes docs/img/link-gpio.gif | Bin 0 -> 831314 bytes docs/img/link-mobile.gif | Bin 0 -> 1112746 bytes docs/img/link-raw-cable.gif | Bin 0 -> 65145 bytes docs/img/link-raw-wireless.gif | Bin 0 -> 606793 bytes docs/img/link-spi.png | Bin 0 -> 16089 bytes docs/img/link-uart.gif | Bin 0 -> 927356 bytes docs/img/pinout-raspberry-pi.png | Bin 0 -> 185697 bytes docs/img/pinout-uart.png | Bin 0 -> 85613 bytes docs/img/pinout.png | Bin 0 -> 89691 bytes docs/img/{ => wireless}/0x10.png | Bin docs/img/{ => wireless}/0x11.png | Bin docs/img/{ => wireless}/0x16.png | Bin docs/img/{ => wireless}/0x17.png | Bin docs/img/{ => wireless}/0x1d.png | Bin docs/img/{ => wireless}/0x1f.png | Bin docs/img/{ => wireless}/0x20.png | Bin docs/img/{ => wireless}/0x21.png | Bin docs/img/{ => wireless}/0x25.png | Bin docs/img/{ => wireless}/0x26.png | Bin docs/img/{ => wireless}/0x27.png | Bin docs/img/{ => wireless}/0x30.png | Bin docs/img/{ => wireless}/broadcast.png | Bin docs/img/{ => wireless}/first_nintendo_32.png | Bin docs/img/{ => wireless}/first_single_u32.png | Bin .../{ => wireless}/full_initialisation.png | Bin docs/img/{ => wireless}/init.png | Bin docs/img/{ => wireless}/logic2.png | Bin docs/img/{ => wireless}/multiboot.jpg | Bin docs/img/{ => wireless}/wake-up.png | Bin docs/img/{ => wireless}/wirelessadapter.jpg | Bin docs/wireless_adapter.md | 44 +++++++++--------- 33 files changed, 22 insertions(+), 22 deletions(-) create mode 100644 docs/img/link-cable-multiboot.gif create mode 100644 docs/img/link-cable.png create mode 100644 docs/img/link-gpio.gif create mode 100644 docs/img/link-mobile.gif create mode 100644 docs/img/link-raw-cable.gif create mode 100644 docs/img/link-raw-wireless.gif create mode 100644 docs/img/link-spi.png create mode 100644 docs/img/link-uart.gif create mode 100644 docs/img/pinout-raspberry-pi.png create mode 100644 docs/img/pinout-uart.png create mode 100644 docs/img/pinout.png rename docs/img/{ => wireless}/0x10.png (100%) rename docs/img/{ => wireless}/0x11.png (100%) rename docs/img/{ => wireless}/0x16.png (100%) rename docs/img/{ => wireless}/0x17.png (100%) rename docs/img/{ => wireless}/0x1d.png (100%) rename docs/img/{ => wireless}/0x1f.png (100%) rename docs/img/{ => wireless}/0x20.png (100%) rename docs/img/{ => wireless}/0x21.png (100%) rename docs/img/{ => wireless}/0x25.png (100%) rename docs/img/{ => wireless}/0x26.png (100%) rename docs/img/{ => wireless}/0x27.png (100%) rename docs/img/{ => wireless}/0x30.png (100%) rename docs/img/{ => wireless}/broadcast.png (100%) rename docs/img/{ => wireless}/first_nintendo_32.png (100%) rename docs/img/{ => wireless}/first_single_u32.png (100%) rename docs/img/{ => wireless}/full_initialisation.png (100%) rename docs/img/{ => wireless}/init.png (100%) rename docs/img/{ => wireless}/logic2.png (100%) rename docs/img/{ => wireless}/multiboot.jpg (100%) rename docs/img/{ => wireless}/wake-up.png (100%) rename docs/img/{ => wireless}/wirelessadapter.jpg (100%) diff --git a/docs/img/link-cable-multiboot.gif b/docs/img/link-cable-multiboot.gif new file mode 100644 index 0000000000000000000000000000000000000000..58923263e5baf14b07d1f5ba482c26c954953890 GIT binary patch literal 719688 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%0D20=S?rbKl%an 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 z zt59+fEn_NCVvv|}syL01+V1Okr>j6Ut;rtc?j&uVmUTVM9dxQyWaVvh3b_?<%Us!> z!VKbudXn}$d9;>QgrJ@hlpdsZL9CMS96gVYH#OCDhp1zJ>hjCWYniYRF8Z;izB3YCtKX-)Y(f z2*@(X=-0#;lvzV_+jMEzgqrI2f6N#(9tZh?Tt8tAVXzN<8wUkax>`D54S8k^8q^^9 z^C73GqN!&LDk_4#H<4EOT&*{e!^is-FrXPQ*9arD5?H@RMUjskYJHDuJPg@92Px(h zxp*2WZxhY120Ql1b(Rl{5;PV=Fa~))h5#FjE&iv2-K6N&W#v}S;tU4=$99qb@U~U3 z^%EjAsz&+2gtM8T7pO4A|R0-lnGZeDeG}`24Ka`J4e5TjS)j8lY}_ z&yCNG8vwikU=afZPC?1F#KnHNeIIr~?!YV77lloe>BGfE?g(0J8y-2LK+RM1X+- zCI@I70B-=Z0akajD+8Dr0C<4X0ip)Ln`@#B09U)+WB{Q7TnCub?2QjVXn@b{-uM7i z27uYkjWyt5fV}}+2S^yeZ-CVS{01N#AYOp&C3af_2nPrp;8g$w0(_O|$^{@CKz9J( z-Q0WxBoBbV=B-!&;aWWayNYL3bBK*GE_MLz&T)u2_69f{pm8a>)PVmL&JJZy%>!fz;SV}*&?xP)1O$%PsQmJ><^6jQU~d4z zolXS;4hJAy>clp{iU7p{4p&nx4cHq%ahI3X0L7ID2VY#YF9T{AT%PDk2DsyAB`E;m z07OLmPyq^tBC9{^t|>KlA6m_BJjEe@|`x5b_I3`Iybx&vKCrAO4l4J(kQ4c-!6d z&QJ`d%u0h?eeqPb_&?spP3N00EAbb|9XU`ddY3PsDc@K&Uyc?_XMLLR=|h!4rwN%t zQw5NvjcGA|czG}!fJI4|qR{-$c99F+nwX~Qf3}Oz>$me9=>^zdFd0_3R&Nf)P%FHY zceU1zqTCw&GM-xhYa~Z9ocyWAVRsCLllo{p?aXwh=F?b|RT}G3O&Mm>M&!-a(a#=# zl}dwF>%}!>H)cL8t(J?uX%8HFt4GFjzcDwy=t&?;JAAej{!=unesklfz1ipERF_xp zY0`TaVOMey%d5W^e_UQ>*F4@K&zn-1-X5E7`sQ9WYdR&9@v532;6TBCxSG&Zzow_5 zSbvBF;g$)KF5qoi#x0w!CH7EQFvZ~jK`8qmLt-eAMak=M){Wit2;plp+(=#XC2R+r z&6H0DLiZ&*al}8gC6Hbz#=v4y5>dos(^;F6l@>V;c9U5JPz#mSUoXO91$BE06OEb< z=%mr4Q+qN{V;BokD_D_m)NHR0OwG4M7-=&dId3T>PFnVSacMAQ;uJKEvUIi;Mo7o?;h*Xr zWM-D?Dtu+GR?59smw&q+53h2^xnzsi!`=-6GsyyI$;**5XUPrIrM zLCdOk0Ewc4L$^rdlr6W>nFptZ_Z{ih07LP(?I20BaFRI%J-aU|os`kiuyLwz&ZzLm zwem4>Eu@Pfu6QdoMA_A~#L4TcqlO+a6jrDA0U~nTU}8c8wHbM_0d9AdU^2V856P_S zx_{$z!3&th3!p`T{ML-6Z#N1}%dX$0wBaiWRb&#Yl)dZovB+}{`dHDIlan7W=eKzv;WZJYavCmOcoa=mnNBqyV4ngx&=B)eGht#WTG`Jggu9gG&zcppJl& zZ8ro&{Tkzy-#cGgdtZeD+!?!B(3TQR;zNc)OclfTaPwFVjtmNDcZe7S7N!0PHx+R_ zWRQjNYoyRYsyXh=0PII?luJSUX4-&^Lg5b(tU+#yMokt*cJ3|H`{|YSTiBom>~nNP zfgBxCtUUZr+>dm_x^u!Lsq5qTjX$ysvF8a1%h55`Ym^XGR1u9y^Vkdr+T5&w?{PKK z3ADAeW27dd;I+79*H8KoSZVnst@t+_VLI02ym5mh&SX3fI_@#eMsvCepE_z7s!&~D z2jvB*?P8hJo>3+-a@K_m&PC5m-8}TIDxUhde@y6C=~ys#{l^`XC$&*F?9^ zrcmNZHwWwt0)>)4MbwJHqiA^nu?(hZp;hkJiW$U6#4;j>sxejX3L>Z&+YU{CBsf%Y zE<`LNlA5NGj$G<Krp<5a5y4UrMekcjaOfwrlVCcC7od&D$viVc`!5spY2gFDuM* zPY-nKN1(oaY=cjcvu?=@tKU)$*gGUpN%0pk0p);~?%8`?3>p8! z#g7L(!x7esJ9pc+N`g%`{z$*Kq0dV;Ki>_t+vj_RauvSg+H_< zuFP3TH%5z!#AtkSnXA%-R*#pM0lQ=+@`03^>a}5@)qVzV-#)I&k5Gg zoA+$4gK!>l`>2QTZ6vpAn2h0mWPXzt!=h8I)}(_rImZ8>BcMR7K>G>WG^xokd#6dTiGF|UR9T7rrtU0=&TX3FR+-Yc|JeXaH}STSC_ zkbheRt8W%Qc1=WGUH7(Y84{s$EEbwM79~sTY1?xj68!o7m&*qP(NiM|;Vsj1mwf81 z=17;GUpxxVuRnR7hg5b%zKM2gx9A$oIO)(4Q~5O=4lga>t36P$ot^vWdR4Jl@&^;+ zVdQ5DV}b z%W@psT^wC2JdRx;o?9oL*F1*PEncuSURWSrKrWUd2K<&0BBGNZ?Un#OjmHj!Fp4K! z^P`c%5`ZjiGE@+xGy#hU!Zi(6Ursc1i-lmvXy3)q_aLy;L{k|dyln-)zXK~1foOY@ z>=?1$_9Wilf+4lw^vwkG)a3U>APOTiMoKJ}>0~B$$c;ASn|U&MP0Gi+6sQ0eNFWJQ z2SQW>xd%cAMiQhBzz!n`KqmM518{I^GzDdHA_6)u~KnVOV55}h>yrr(6<6G4R7Aw%ZLIib-LZqYUX`=O>N>m->Hfd=42 znH8y!z}AcoqAY}i^zIP_@&ho@De$Hfh$xdOV5zjzsmQUJ*CiPt=Fw-VDF|CxDMX+( zos38wES8=Gka+gCTMm(VV!U}4xm!AX1fhf|H+C~~MJKJ_Jl9Sx;R{i&^>X&}NK%1Y z_FYO6VOS1bT0&>2JVj_G*eLs!F?om)ZSx@KQ8s^JId4-goy;PdVie4q7Ol9PO)pqr zGLnN&1c{4DDLlwAXH15*qP@Kb7luOgPm`~Q6G~7)QX>VtJ=wxx8Q0pGYGEnrqhNBo zq$#-q3*9Ux_t-BZS%em;$Eirlhu|8V*n&Z!3xli|%ntIJqlHxQ~t1O`y^(O>2uyc8?E11JSmX<}t-)3YHa>l@_{}m9-U> zwv|;`D~fn$O=FH7k&HQj+y78-2%6eBc&MB_54v zpMsE^HYtcjri%4iuoA^MIV`ji(u>*?19b$UxPhQ`n`qIS(2IR^OK~KO7(^>oq`$gI z7(Jl(r)Y(CsHd_(=4-W{IP~juRq-kMu^_q%3`t!T<*zK-XDlRw>6&N3Y77ssN)8Ir z7)Y-MMZP8~m%W;FwU+#$wgH5E(1J{%S4TGn>VQSHizCyo!t2N$kbXmvoj2>a$3W`r z(A`@k9=-Z_)u^zVdhT%4)Xi{+YJ;>#gKT<(e0u{V2Oa&iL6xLYO{h_Q6;;urQ9Hd+ zx4lt+wbAgQ(TJqUM5svtUFmasqq2CTMSIixRV34gCOeX52chO~dd;$yP0k(-UOi2o z3XPv)nqed@enKq)>5Z-=EoRfrVd#xosx47KmNrSNu}2Hc13BEIH7>n1t-Uo?q1DZ@ zHOvDXKGs^G*H%Q*oMqV@O461$)*R{4RzuQW=h0Xy)JzEiB}~^y_cRlTgDcycd^{SO zg|KAp8fai(Sp^6J7?Cfg1HreWo}_bTtg(@~nGy~In=2re0NlCS-lfpUQ-f%++0=*L z$*PLXZPYMi*}#s4Fs|1?Ly7Q4wLxSPVVW6KJKZtc-u>v&+=1J&SdOaVfhaKDiEG!> zjo!FbjvN7NSS;_lY419H=)%%(U_C_;obD#>=zXWxY5&k;UIUV;X;&RXeBl8`I_iW* z^dYR(==Pw!B<&qQ@19=mI`C*9$mr!A?-lOoCdX*T?11vHBl4^ENp*m%DUk$n`k)p4 zDkNQo;f!ck7ZOxO#TML7M|c!oz9IgQh|QEg*EH4v?gNzu6k1ZA6cy zK7vb5_pSnv<2~RJ(V%D5AOQm1C=BO4wgf3QeP98_Y$C;b_D7SBKs!KL;=RdMy@VM< zkeKhXz-OdCmcKR@pf~!-W0W-p?VTcG+4!K1XU}NIxCsoU&Z?nr4eH6#3lX1a8XxgK z8e1W4>0xR5px?cuhx*#HU(O0KcC98P2azadpdMpViv@H{(yOxu@c~U7bxho{G_R93 zeP_m+E=QxX>T7EUF&%XV8lk3OjJ{OF%C(xfdg$;H#sXrqalM)zSehL+QM4!C+an4j4@ZQFee>3r##Whcif`*G^cJbY%?^sW`XrqAmTrZA`@5$R13-h z{WHP$4Gz_x1owZ0tOF zZu~#fkpBB!|MwmEUw7a?i6R(>Nk8Q@M-qfV&FLvyn>P?n$Yrrs@_xHNf?UMm-xGW< zCA|ywd%(W`5=FUJMTn>jj)!ZZ?|0vZvs$8&5ns?v<;zCj>zlKKeiTdE!WHEknT89| zCrDw*WS8;i{F?24jbmHW~#79K@Jw)z{b*h!<^ZZ1& zsRJe6C-Xy78;G%d7Qxbcim_ zbXs1T(v+IM3%r0Rk_+zmgo$eD<;G_5n#%_wWA&z*ePLR&%V1;ND;^I_n=XMDqz!C+ zQtV2!sDvu=l$JY-=ByQ(n%@$BF79=*tZnk+VW`HYTuIjLF%)2_8p2O5uXE)5!}4*u zs|eo+>9t3te57vCj5u0>M^D=k+UDQ(qq_7e2s-`>2mzI$IJdgf7aiOvny9zj3Yj1| zX*=ojIPH*QMG{B2A*QrPyt{6yc7QpB5gV7`Bv+^)Q)JY%qfqp)tBG<@o{i%CywioS ze_Bf#OtB|jA3|#sI-eB2$v7RMDJ$R{W4(BA7|$j{#hXa5Upuqor!T0VQvdLxAp&Pz zhJ;!H#(e9~EBmt?zB zK-I9h-bIkX<=^x75XF(qa}<#{7|n(A*Ob4SZu?QQn1*#c{9yH<0S;hu*~VRb!F$M- zkN5c26fgSdY{Vt|^!yudw$NCZ*xzGFmzK}M7222T&g4b+H{GDkj|r*>Q}q~U>k(p` zLNlIjXxHQCqO;>CuoDN8!gG2KWNvZw$A^d@I6ZFzw8jgOW%CPGh&Yl3EeL}fhCt;? zh6b5t`J65%3Bsa!p&R6na%m)gdebq@xDzn-HX9W?@oj2FO(2{tV*DsZtM1PCvnLih z=zu9jazFsvDFkgp5k}ZgHB%LGjvxmoH!E4^h!$|x>$MINfo#_aGi zd}DU|qJ@EJNaqNQK}4NL?mswO@?Oj8D1l^IQ_LTu&NPq)+J9b*^~O-<^`~z{6s!cP zGJ*Y6zJj0UapbU+aBK|l?6cMgr)5dmkmHQwKMyhpfE2=ZC{yS3&-n$gRGeQX;9}GM z*f$&6U=jDhyfi_izY~;^fEgj9Cft0M#nz)^Nof65$k>Xc2!g(X^;b-28K#a$v2q!Z z+W&6P5f~y-e#JeH2s@dKo0zrw@H*x4>rKiXmVH}zh6CIq2h|wg7wfGeC0zktnJ12l z2bz)LrC=!6mlB01B%^H9eR_oFQe`x>Io_B4v=EFi)dUvY3>5SIQCZX z*kCT27|EzPzRDRNx_3 zo=21U+vgyvtfX(b;YaarxKyaDpS~q%cj9UVV=mZQ)n%C~Stc&s_hW}PmJQ8WCbG0z zM2hm1$yhfIj|xrFBuj~z8`m}VVv#t=-2W_M3+^)cPcI`r%UlfoN@C_%E*%7)=Z8D-bE{oJ|!zEzvSN4C!y3FZI82 zvGn@0#nHM+^U`@eB-8ryn+JvzC_1A)McXmVX06tAKmF0Ed{|%Yx;a@EKK0Lj*!m!IJ1F+@JU%;p zm#bTFz(@4b?Ty!tRQG+bz3BCsO5W4)cbTh=XYW7Xe^Q*r|70o_^XVL{h6kl~KQVZS zJ-Wrg?`A*3uczdmE~5CM!S zG)DYWU<^(ICCB7{*BJlntLlGW{hxIQ{!?iIeZ{12X6O4o7>imyW4Pu&N{beD*iba3 zqexS54pQRcDh83DT_E)Nr5wvSIlfJIC zycAg=%Q$B<^mD(v<`MVp``I0ds<2>2_}MTooJ1^&#I0^GEK$rbsC8-UYl|-ew{~WZ zlO?#uxZS3+t=F_N7s+K{ZSm5)uGDf$8B6c_Xr+1n_d;Y!v))f_f{MVXOQ*9xOZ7w2 zS)PT%kj?LKf0s=o?)lEG(i25iwI}62E5A(lHahKO&$dU>v%|6i*HjYlIS`{xr(fW%DIxUg;Mr~AYm4w!8?YH0A3B(#Xv;-mfRpR z_mo&!sxWOBB9Mh-;;I!mn5XmxIW^OgQ};46^4BhZjEQt-z{lvsCs|mG`k?gZSPWn7 z{K%IK2iWoN1Q-p~Fz;jy5;Y7%3*YL#PAw28k6rkTs3J{3>4;kZMIo54*3?O^9!IV$oVGAWnY{&wnY4OfZ+38zu=4R$m zD{?qN@cvu@i^Rg0xC~{~aVd=DpVJWkWYw$bSmsj11~a?j?6+CiR>G5VV>n)4vPAr- za{E&|VnU2x-HpwD96nEcS?Oz`i#}7kb+8v(gq$P0&@#t_XzRI)PlN;6k6PSqOKbDM zOKjXqo$gq9LY+Z;B^zT4-tp?UY32iWr1i`M5oh;OP{Ck*cf8{#CRlnE20il5xN*aa zN=Lb}#OUr;CYUbaoX#}<&JGpGWsj-GcxD}TWgY`ZER!e;8M_n2hb%f~uWlb5!E7Ts z2}pWxF>D~g%fu_=nkEyPx{CDS1+}l`H%XP${fqZ)wM>;NjP*(O@U&Vrrn#11#_gTM zT}`KO#X~H!uebYgyS)}I<|ZTcY@pOIK5uu& zSQlH;M;utTcQ`Z*L19PclXvPM%rOGVF@I&gQ3tLm{ral9wB66_mGT<=a{-?iMASYi zK6vvWxjO+ep%fRJwlGU8g6XCL5(g!&wi7^6u6pfl|c@; z$KKA;#GMt@9v)D-95R9~)hT<&H~BJ?->J8%f2tav|Aw4~OYNK>Fc5o4R63eb4xubZ zSt^sFXUeM%st*2SaM-^6TiO4!OcuL-iR?Z-7Lzo$3?&tv!No7wVCy&4AYa0gTPCG$ z6O^V4#?0)jp3p5RyC=6CZ zxpv9*FccY=*ox*p*_K_>&xRJ(d0Om3uoa8b^cIaHQa-3bZ-R5w(uWYc$o;fiGAYrK zz%2)31(7|AdFI8db;J_O)U~Kto51p1)>a|G4KF^?t;kJRJn>Z{O#+&a16w{Q+iL9w zI~Cv@+rJKu9}z;o6$FmkIzIhL1l2c}AyxJGPU)r-xHUHtyPtwyvlw5HZ#Gf*_Gm4Z zOW<-16+&0-WQ00$G12=&AXprsj;Io^+WA3DY&F*Pt9n<;;)BqrRcrzlN!p>H*30_r z1mpc*F_$XCtaRsMpR8yQJ)}miIu#@`9(Cb^nxi|rEO1pMeFMUJ{xJ>OrySaFR|Jm$XR8#EMISsh{*)Q>LgA>i*>MN75+SU%z^tj;{LT6JDk zJ-C+X@@lk0Xj>6wm2I8yGWnLQybdk~0{ z2Q~-3Y3UW{KY7pen2f%hHAqEnpH54-;t`kd4&E;^%)|Nl*Xo~^h(K0~SgnAag^0Y- zSu!jC_6#ca?Ba3Ls*Gqv<^|GNJ0m4vpO9Gk0<<|~noHp_kMF^*f@sp-CMvE_a@t$D z`$ji_+DY|8ryrZ=jV?l}Q+{~BAA{tpMX>}&)ws?hmF8N96}HZ|eIkD=p002PHl*5r z8l1R2%gOFXU3LHJ46NE{PgU6X_T6Ks2na9Q{?z3-qzC}!|ScCKb_B1r@>-(f)rwR-L~EX ze=d*z_;^0hK6@kgci(OnxBoo(`S6(T?fo$1Q)B9VkKzMa^10Q7UAw>#_I=`AtS}hd z50TxmhdohmeHJu*@k?x87x^~1XhMGYlBc*+YFl9P`q3~bVHbHE0>?-W86njAHSGCi zn0ji`dIQ4>4)p#Ji+%$9L~{%NVkMLkC7zN?WbabEWkLc17QGZ?3FP>{iQWd7V+Sho z1*#9@X+kByDS`gAftRy^hR{H?7OekS*zo*w>VYt573>8LhJ*OwAc21tSOAVJ1gDaL zOUT33<>6Yia2+(bE*Nfz0=J`tN3+ArY2Zhw@Fy@F4tatjKfv*>;IHT5EJbh@e>jsX zoX!SL`Vo$z2S?C_gMg*;ucZwKtHF_^o?fs%kr6&Jy?Eq+K5-*H@j{;X!T)1H9{G`P z`Oz==aE^FMe(}&Ra&b&>{y*0^2gm>aHOBG3|Jn@!gAmZsu&`d@;o=bC;}YZJlHlY0 zvk34=2=PgY2*`;EDM*MYNr|Y*2Ld>Kh-0k03>m z2xWu>b*v0sq8xpS9DS-hLz)6Zx&mW{B4d^^Q;srIt`bX;B2$erbCoJf$$ORpHP*rp zY{eRHN;TQbwb(0lII46xs`WT)^||Wwxf%_)S`4|{Kk~F2^R|8B>-fUo^Oe8fOmNgn zWY$(}**_#mha#*E=K7 zH!s+~C@iQnGORQvvLY_JCLyjiDWM@XsX0BRJu9s{H+!Hkcci#*G{0~%u5#w<_c``o zD;T%yVE8%$d>s+Kfdl`^2H((zFM7gP^WmGn;ODphRm=g9fbal^-@xG)aQHD0cW`_A z_v-5O;^GWgXJ;q-`}=Ea>kA7Db93{vGjlUDbF=d^v%t&L{O|6i%l4&*hSkUN?Z=$0 z$H3huvmLnBE?j&EPP7R}*nornz1HEN|5!j_WBI>7^?=JF!1bR)`za;EA_z`kBM1;R zG=B5Aoxy+iO#b80{tBwP;;CpF9biCvW_L1QHvZp-_J@dx@uvK13R}H8m4&~dd@(^f zJM7<6*z)=A{i98l3kdq%qj*^OmH$j(AHFMZ$`?n1A)u2hx-$2*I=nbB7;mZlHT3Gi z@Ij%);mZIrw$A`YYyI9-&V+oCRqLhXgrPvN;Y3@bWklT50)x^6_hD|?$3Ghr9xg|g z4N3|fA`LbtzlP(vk}xn0?Z#e(mUCBiv|asCN)_^9<8SV(yzhgDQ&gWA4F_Kz#eP&F zZ-2O1qE*@5AY+p{JsLb5zmIujX1@~Q5Kp`Nn%`oi}8Q1+}nf^ zesx_?c`%R!BVh+Hn1t|*n=Y$Ud0!;?A-~)I5%{vzHA@0llb<|-_;<-CT~Vjotq|%Y zv(3;K1uffJ=;YHz?pREWRFMbEuGH~Dn&yQ{@139pAqc73I*!sCbXam|0a9whn3*F~ z5^BnByXkg=1xXU*)^d5`hBymr!DOL22&rGyl4H_D>XyH{st=a#=f!@}QO$IIiK`z% zL07Vz>U$UP>FvvFyxrV;=;(e)f#~7BIGNW)WG1$(JWU}SS38Wb=!1FMKNBN|KXdbv z4$JfMvFCn7$Hqw$hGBb#q}4WFH!!}#VBVuoCNJ~ga&oSMqK%$$Cdr>jYL?;}+c*~!a# zZLeY}bj2h3@pq;;6GG6%f&%@K(*Tzi;q{VhwC2$AQyKZLZNuw}f3+;-88&%(7h{y6i-A#UQf=?cLyp$}{O1+t< z^j`6&cxp2hdlaw}*k1j)bI+IhTq`eI$QT!fEK8G$7eE66X-M|Px1pq+vem@r>`K*f zVPu7vs#<1$7nY4d42_|p=~zW|8P3O*kMV<3m>XvyBVeNKuuvg37#`~e#2q~a2dj=} z!_|ku_-x~WA33-6R5_Dh&S04_+M9Ui$qo+Q283x~gksI&r*vl`au_P=>LXH0gA&i8 z+$6|}mwSbyYw`no?eiZ%iCqk{Y~s7jbFX@mvUsB4KRc9A)SMBSw{U$$J+W5wUy&kIJW zxVS_y{8&90Sypyu;xCNRzKm6wU8wfJ6Y}}GL&c)SzY~F8Fo@@##o7~dxn)vA?~F#6 zoclg``KOMih?k_giI!#!2#|`lx^;S;UwBO4nsQ3Z&&0)X7a(hZ-#Qhm?sCj2lg8}( zg1D5{jE>V@mmYlMUZE>+x}=hMWZ20tp2@?$UlVNhHotM2!+R>azDkX&A7m_-J{&5E^Cyf#T6`McTBZ`*}E8iF0RSpg&CNCQ!|e z(1Z%-&5W@f*l#02slTe1ysQEr3_MCT^5>02+%jLOCNF8#hT_#o;}uJw z3SoVJy^u&6vKvDDkTH};S0|AQXR`Qf(dKEfKy`mqF(Hb+k{9Nj@q33_D4|q%K8&Hv zpCjU14+B~J^mSdxc`2A6PH&wUBPR#XO!irBE+L7l(t-N#ku(15orU1mu`=IpYTIk0 z?kd7f?@~(r%-1c?7Mc-vnajLA#!obr^;D@T+^CHY> ziD#-uSqqtz=#U2VTEPU`>?qRgCK&abr`-Gr(1Wi5)jV6Zn%dp(e^qm2f;Wh3sJnw{ zv&E4W4K?1q>qo81{=!PPK0_-tzzm<)&W!zt?jkkFlyl|-G*zN@_)~>9Qlot!pC^pI zMiBnm4-G}#qIoDApmUOjJMAKWc~-s~2o^b}srPK^Qp7hw26J62TN#6@m&YU8PGr+P zKNm!44)K7@WP+IYCV#jY*S201k|whW{Y{X|SRM(M;$)mP=!H%iQ@dCDGNCFc=ShC~es5-CQ&T^NacoABDCWn;Ti+MA@6s!K}t zE4t08zaHb(>9zHDIPLJu5IvpkM}=WHv6Fq!=SNDCy<2OMm-I28lvfBfb0sduWIVZa zf4)L-8TxUY9oVn`TdeSI$m=0Ch8XWV)ASv`@A}32@{VmoYk{h;s+fH0r)BxY*ak7b z^*Cbp!-sH#5{|u5e(KM=c)dh}Vqd;hd3&`PFaD@hImGrgA(;EnJqW*TamIafvL~L+ z`R?xq_TLEt$B1Xg4W1p7NP~xzP;}aaNP(nbp{|w3(2ipI?EKN}z4MG@y<^^Lzez6m zg*R{Z{)3`B#()qJ+M?47R}pL6e0a(<<=8rFR{ip9*EIs9;%8>83Fcdo+bS8svrlH8 zgw$e^9`wv_-Qg%H9`t2Lj3mqrKZ$WYq&HsL`FK|DGVa8 z>Z~jP&5ZIjEQ9C>K#aT`D#Ay@+NnziA@QN0QK5vPRvyVy~jrJgkfndd? zjz%FtY(FH3tq_F-vB5|Xdo&UWV%sA@Y=uZ9h;4=hu@#_55L=lfu3;1sX%OeO8r?<` z+u9aawi?${9@|F}Un3AdXdjp27hkUsHy#}XT!}YCg4mDHNr41^riA6__=dCu;pl|T z(eUlZ1VWO;eS=Sj28k=aiKhmEND%vfDC`G=&;OqkHtt#y{{NlACdo`D`yUFM^b4)v z|4CtIeqn9@UlcYsDI$gUzbS106oJhDqOjLe#GXT*Q)T{(!dA#kRccRFSxZ%W zO4T6!ilnf048Q96e>KSbYSjMK1W92(eYGG>vl2|RF-)`bPeUs79oy5K*V0^{(!iwY z9)js!V`&HAbid5>fcEsDwe*mu^ia}_aKQ|SVMe5XMs#LIY$b z`e${tXLYS*^*m+ut-+c}vpX`g2K}=~GqcCrvl|7oC(mHRPucT=Ig5rlt!LTG{;)Yj zX3pkX&bDIC>QhcZd(OUL?y-OFR7`HZV($4`?)6iy9zpK$SniEs-p{d|JHy-u|GYnI zdE;xC*X?80RpQSQs{I4q9xkaT11cU)FnYKCuuCRGIriD93acr~U?~ zb{EG#2^da*oenN!4k*mlz;XZ=a0cX@uNAx{EA+RpTh7e)BLFp7fZ7Of8~d=J7KOrS?nTioMH)_TyXK1dJMyxLY?*elFYod%p&3SB5|@}e#accSoGGKK^^Tf2aB-9bcG~ai zETM1dC|KI(HQ(1N>saa@9P1uC>i+z$Ly*FvHmwP)t$^mW%;t*r7MCiJ8+oItaI2+LtKUUq00<}O zqE!{vQhA2ao&<6=ZcjIEwAiR?1!HGQROH=Y&-`x8Wy8r=#tF;nydJNP6>g61!vbw| zy0exfl4t4t&Lj$ec_hI`K(Jz`j?}mgv%p5LXHX5|xkHStvskG!m<^{e3pN|r0lsLi zdIm8H)nvdbM#(w@H@cM_>qDJz?$~;zgxkKcb$u1Wj-R1ZwDTY-jl65vccbA>vlnA$fb?V~}Z0xPaPPZt|=)i{U_Gb~mv%qDe>+QK0Js*v6 z?mOWRarK?TIE4gV-GPNsV63FjUTA(9%4QZCMHV4N50P`b$8$4jSO3B|Huax=S`~O6 zN`I+ghlELgMJEUbF7yj5rmDs^>Kam_fcuX3_O|7pdXfZMURc{z6G_VqelV#k58 zLPIhA!I)k*m{5y>maLJ0$=)Ihtc1=1#J9D9dhDUs>_cYCLwfPWhLb}^>~OlEVl@*O z#AFo18I+w=sL(N#SwEK9HlmCeTh=kchi1fQ= zff`V7rUQ!gC$Wtt$1=F5=Ql?eCrj~FIZXeEJ_JlpD~R8h)4=^rpTF5I`O(!M@9_3C0Ovl@F}Wjd>CC{F~QtOC=R z#7Q5oKbt5e7M*5Hm?L#TOeap3UVw%z*@yG8M!qW#+fvN%2jkp};DqG^oh-1-z%w@7 z82U-T2#GRoT&z@-0lDr)un`vN#B5&XWbM-&%~dsB&R8aRo^fg{r+S`tbFQ!gxK2@7 z?6{QSIA<7Kn3lgpB09y!QJGCWUi4@Fa&wxc8eR%s;CI2Pxg3`>#lm?mE!4nH$zOC^ zFZK_{DY+?)xfvN^TdHPRZje|ma$NR_UCzi~c22-%xmwCXSuSV?)=R9(clKpfFQ+A~ zr-2KNw#H1a)-qw!=OW|WlnXvN4Q!N@D};zdd}8R{+}Ta z(Un}~aqjMs(#={{wx-SmoZsC$zq`kSuHgNuW!LLXxxXt0L^r3V%4TX{y9qr-=Tn)X z>&K?pr&G&EmrMD0Fh^M7tL;51wLPNRts@m|=lU7jK8yejthCVS@1iTsqC3bx>pycg z-q(!(2|nmfSO~saDFS0B-b}cU7iTA7IR)*4JIX-0F!IF0x7&v+-RtK$^YlG4p+8{| zRqPZAY@?ndlb$0=#Gw<%ehw~{t;Vq(_}D(=*wzBW6Q!&1YM;w&oX2(X9aZm5{K1Ew zabed(ghM~VY}mB2a0T7xSkw`Tnlc)FVt{)Byj1~5x4`? zxV;u2y}-O*YA}q?H$ARrAn`re^zsYw8&X%`6DRiX?F*cp@9^C9%$g+|l-p&oTZK=@ zF0;sF8sv<^6$#fumDu%d)(+LqPLSwz;|)H8`W;-Ox`P^|j+e(F4inzFPeI(j`?Ost z`oLuRAn<*w+Tq4N?*^y$=YZJs(Dj+hzcaJxh%BcTkJN*EtgXMgGnx?ue_`HSp8T;$* znL9UTlQ^ck1%~{;Un`uCUA+&k`B>cXk1b+9$Y&n?YRAvjaN4M!QojF4L%hK4odtD< zg4jOgA{RL-dcRkFKdR|nuY3D!EB4%!cmHJetB30TZ|#v}@A?@Y7MKgui{Rg#I%d-j zM#tx??!14>|1jZiuY;)WP&AeDCA7=b3Zyb_QY*BIDWuSTUQ_bKz7G3=miBU$EAd-( z5P($cP~i)MYHkxPW{IL)0-0hssppqs#rG^*gNhaNYPo4aMjc+*uNWn4##57} zW<7S(84j-uZY<#8Q-81-ly0qti)0eQDGcvyqP}vxVE5yusf6NDHXv~LRjg#KdVFkg ziB;(8Eu4FLA``T1os%rh6QPDa^M*|hY)`nXuTwUP6w`fVb4{K+j;A{3?Oy-oH-y>x zKO^u=P8oRR_SS2Z)2}z%Jl7v&U$ou){t-pm`$^oeCupJ=i%iFU_FaWxfuix?(VOM) zmvR}4yyp@8Ki)Fw!6~>_`h_@vN2bmyP=kHb>)?tJ#5HIW zf8CR!EJFIRTA8Kmx6nb|yVZl_ZgGV$E`^cftnUq4xI$Qpk*xPni8(|TkPZ#RuJPW2 z(1cq#g$$zBac0xNIYboZbUTD6D}$8wuXt4|Z>SaDbnt}TArj*SFSTOjM28v&5``uY zoJOcHIVSNGDL`7^Xb$2odB#}T7~aw28GU)Zj6-oOZtVPItHg>oIf~06j~Am%*!{-? z{#rLXrL*WVK2Fu}V+oPqI*VxMJO)Vn-hr)qoz21X>y z>`5cTnJ5VDwHSbR^zYIB(s2-*aQA+)(W;mti*5O9HC&3!zJFHjvVAO5HBeiiDFWv>#1bdK-cMhoBfePh zP|&SACk`(T(>fBHK*A&$m?lkc=q)Q3&wK8AlX302XI&6U@?wI+*AG9o;y4+Z9nfy1 z;M{69`Z|&iRrt~(ze!f9KJ2#SO*5$p@&R{;I2%0h@{RWH(1g9na(5I{NLA08i%drb zS^p8Sv16uenju!Ea82QMEc(oCM%t#sI2WdPkjUlkrr`%(?Cx)xP0Pz(3x_3~ve4M+BaMDc+OmPya-1vG6#-MyaGl?V)99Qa#!geXRAN2PJ zoH)3gN_|kHp4UP%kVS%YjCp3+YKDk7}~O#lTH{e-=*1%+7c@Y&g5hg`u}y5VK*R+ zGrEKmH{L|3&7T&Af7^q+KR?P1!B&af-wWIuDB@+Pj1pzO$3L=`CSN7!7-WtOj^LyG zR2ws;mMlk7-zUqZVjU+Rdrx=B9wUgFJ`?=&J`c5|go#aZ_L@W|_W@AZ-Ld-Rl)&mG zpSuiOaoLQ~E>bI3LxnwN5&4SMMLpPn896bcAvCPapNkG;}3UC4rI1LHz$r&=Uc4!X-omf zVx=_O3cOa1uiA>k2@I{m6eGr{b=!iNe(f|lLi31PU`HxjJfr)lvpB)-a_)>i z^s1MaAEkxY=X3d+t6Z)&&EgEFTJ&Xp;)2*c_C$EcoeCuT_Nz_&;cwUg+5nH}(zr zxS%S2kCg#^^@<5Pb23NFAN%(HJsSJ8W`MERzA|EePTT2GFt3J+{-#-i*CEh7&On8h zxoPsuyBMb`g3zD^qc%b>%sQ-T_}*Kb6@Ibwyz{dGqHQ?y!&$iS6(AnC}KJF2~vd(k?R#nH|z{p$-S zd{?L>&53~Uhj+%WuM16CW~N)6X&|xa>72uiSaeh3>w_U7`jJ)%CRNXqKr5oSXLH34I}a$Mdu!2 zx~N`Wx6J5#UrUK=X;HPd-~ac$;m#z+Ai+j$KFU-5tD^S{4sq1q>IuF7ojZU06|Pi6 z;U!?`bM?6^f@6Uzx!yluz~kOUAdcBr&VZK`?9OXHwV|e zwP{{Nd5Umy2^OOnL`5Yi=XvGzi;(NL3{rlkp}$tk0GJ=CC_%fN!c z>;`BQ3Y6YWDC8E}q2s=>2kJ&cn%R0Rg?d`!1nRX)zri}+PYA>X_MD`MwKnuzM)Y5j zxA$kIhA{*62$JGg-?>={#v4?eBt!Kjde>3=WC}j^^3vD5 zQyBoPCv5peusn!f6+{TdQyd5rM~+8C9n^>h(TEF_*566qdK%u1&Nw4*BFFCg%#4-{f7*)hmcbO=A%QV+1+OBvKGYvOM1C3%b`z*YSeWF zh`tFx9t@F}P|&mQ=B8*Wt%RC9LPybt8w?_Nz|wJDS$YOh`fcRmq@RU~LAEBt8!)x_MzX|lO?Oj3D2^MHWj^*8q?8GjH#3}zki{JJ< zj6BGJFKKcI`}5*+R;suP=*QE>zJ#TU)IKOFpeR?6Ppq*`G%n&Hnhz^HJC*c`@nmL| zOn4OPngHs;eKej>D+ylYQ=>i>peY-`Q?C#nAT91UaS$}&8447N&Q7vvYd&azEKKMa z0L4$09Zbd?y~IxGCKIgDKb#J$QA3#g!o|5EBQol0ev{|gGC9SQ0KSpGtOEul<31(? zt3k4I8LA59Q=B4wW}{PEms2}3%6ldgI-9-ADy`M=sa%>uA%oI!_!c`^-{{+cmLN&0LfH=(>xJw%N zvdS++XDt*pfJ03yfIhY(CA}mWGm;{+XrMUvs9-Q41hlZ{H6W+}6C}`lO*!W!foXR7 zN*uW8-N*Vp3^w6ErxRKrYYQdBRe2pW)}{UKyK}_lGazX~M`IVF`KT!eR#BOSD3Z+6 za?I0Fwr6{(hk>JCI0-UA=lLK|v0XIQ?ioIBp>%tIyv2fM;DSJoc0~08{?LL>*Q`5qC`1F~^YxIgTlv`Ne>FsPal~Y&#gn1ps+fB9=u)z3UL=vX zl0BjpK)K)oSyLdHso3$ru#*=wXi1YFA)&4zG4qKMs+9!%q^qt{4p2jZDknkI^C7C- zx<58`vgxsMo8nE|RG#9i4TI5*bqQ8Y^i1Y-KmGvPduxG8^qdj^&P&U?gW7Ly^=xY3 zD-V-@ys$rdYbips#q*bQwhTAz4dXYpU*e6m#zQTsbv$KP#6>YzFVMHbg?nVi{DGWT zm+ym?^eKZ?en1RH__XL4pqk8DQo8`TU5Mf;Kq4O?M*vVJ(TZZ2R~yxdIU4&*4KxL7 zy`$yu_5!K~Rj}q5mVrQ7l+9n340Es6zCEsm3hQMYiLVPlWHJoLIt2|@wU)@64R+BL z^OrNCAy|qgZYAhoQMKdh2t;c(R5Dn(m|;bnGV;r&a@{z(xStMLjpl2eMy}`PAa7{! z)H==4dKA!18@QxGq9v;UP#Fctu0oDXw_AbGk&KPVP+ax44Z19K{XVqB5G5H!(qDg@*Z=l#|#MaRIE^u$x+u*nc za$gKlnFSo{TAtuRC9Ia}{sPqPp_(b(Mp#n98S{mcgwlTI-xGG8YBq7Ycm6DyBmScQ zblF+m-TU=-)h7iZt0#bIHVU<}07|Xu%Fpg(JZ=ga0QJ##XDN5lICl?_*H}EziwGmi z5Yx-T+WQFIB(Om5bRxh-QDSkob7MsXYftnTa;&>2&Iu7Gw)yc#E-J%Jtqp*))Xp`4 zyp!otnk6w@n}rAMGw1HJ_UyB7oBuenq9+y|k%jzf)+&a`S_T88>aDovmuL}d0=rgR za?@_X6Q%|ko_-Th$=&9G2y=-j3k_=tmjnK3sI?=chp#_PN3vtVqGLl}cGp_l+gLK~ z*kK!>T7Ud{8={5+l%@izpF)(QA$lmKW~cBgBT@xD0!1p@ViAD0+)?`MlFr&;n)i|J zjZF!{(_9m=;d7t_2?8i&XzQ9CJ(QdXK1Og7&k5F}gZ~0~#Pna9VjcvN0r8Jx?W_$( z(e*Wev4z%V1D)~r5wY_TU4C)AD1co`OZ(E}uXfw7dydmvj#VEan$df1r2u&Wh}f!B zMHW>4cv1oXNal18V@vlFhJD2A)7E6jp!X47&j~OgK^p5QfBPhDRo%HpPd@r2#L_ST zU-Pi*6__#-J!FE1Q8PJ+#2dvfuEpN>G=gjk-4cc_n19jH;v~p?R`f_Aer=uh^Ww>*Nq(5xk(@o0o6;>;`8k#Sfzsrx)->AWTl+m%ucff?Xf zZuX`k_goRf1XFaaIPoL{#U&0B(Wz+9trlh3chnGKe;9vis-@3)?-HeX5i5q-Vt3#j zeIcA5(W&R!b%}nI79lWt!OM+)e04#DxNso8bmF|cnua*z$2yuqq)4hcvVr=2=)AMr zs}g{P((_eZP->0dGL^le-xW`^%O{Gfx1J^y#EzpmHe*}oDC$(-{9*=!(bweEA_J5+ zrd{?Xj>KNhnF)xs;o1p%0D*c@KC?GI22mYmn0Wu7?RwY37R*PHuDhsd7kams%YfI% zu5c=x!y`zr&E<_8&p=^^2y+u~Zcu91jS=ByM|4wz58^gD&l3gznMSz%Dol_t*k5ST zf>GX~h~K4oM|4W+1J$Fp#MCgOPOV8bO~Dxln>Rku=$(lX2CFxg=dkyQgP*E^;c=gjI?EWa)XyFD1p zJ*EorB#<}7;D>^=t|1j1hJDUU?TxLv z+Xsy|-W$|Eev91*wt4+cOyCoMsP zh}{dEM&PXgE$)6;wqBT)U6}p)!7Crt-R;ER=4rFzY5UgM&h0133`9|Z%77l?FmfxC z7ok}Z!7l0Rjm+uw_DzERI&?_)|F;&v<@>e>k6pp{=dkmEEQ0 z7ZfSK!NTy$2kGZs7=OPxIrhez0fw7D`jAALn0vm|f2{DmFHJ{(7yam%W|v-T7aMgZ zHUl{9eiWYpDA@y;uKgS_{gY=1VIQ7;4*TbP)XV+l{|)6g4?%!nyg#GwrmFfc?-zHH z%%i6Q5Q!WA-`9cY@6kP*LC}qo_QZ&Ze>Xm%$T9l|f%id2p#H+F3@UgUQEmP>&4jV` z1%1H{(=0cj7LzJ;>2!q211V*2x20)4#B1?_D6k{X_0BA#}l+mr? zL;0+9BtDNV3~O#dCiZoLmQ499tyD6}dol#Q!k1z>D{@6bYrV;gChOzbioKs4n{6H^ z^EFPtIJdh3e%)PN{Nm6m{*3$5H5SXUa8O&G!HC}exKKHf7H^&`O%rJf9*NF;g^6!3 z;P(5W{}q{9_F|=W=iJb2zN8_s`K!yu#Gev^iG<@}2`4lTaef&1jm#h8hvTW!x#ayD z=oL>g4YYipJmytk5VXC;C)Uq%ePIJ}OhRqk3j;Ak+Ae?EzS)eYky|czwR>jw{{D6U z{rkV(kR!bJSeD8(U$!kZBuhr=b4Fzp^q>-iV+>(3gnD!zp{N*97Hzk~4m7cCFh`F; zOLAxQA>J&>;r2O@%djE9n38xXOr8S4h<_O8KFT0J%t+6JN$4dDTbxs%P?e`-TyFQm z_K8^H7tt0JYNS-jARc&WX7C^Y{+}W2z4J9WXkbITRu{E zU~YaLj$Qjfmp0p^K|w!hQwo=-O(4ABjal2+UQ~V<5`3i(kt?L=RnZ|}XD6mFNQl){B_4RrcA?Rzk(^iD)EV_ zE}T#(x*(c$yu9dhh&@xwnqw!2$snSMNgLyL#VT#==%FHg;-pp_M<=7BU zs2BwbcM*>f`Wmm86i(GI8Fd@p9~siNF>Kj$cUeoS0}f%GSRLmL7o1&p;gW7qD;|M- z^NRl%?)}I1RkW!gDB)jKieGChbF@F~kJBdd%`lAGCVbHSbrubO=?IH&`Ohd+ixl0eZa3C`i( z978DIz2DR=TwqWZZ%HE7*XSyzd^QpvL12o3NmT-&9Q=o@#DImz)?G&yG~R;*VSN9? z&l5)T`!vGaV+^5fgv#s%Dz3bY%w=7?+NBS?mQZ}Jf(g^GGG^#(BmvXl{|zO0zZu$5H@5U1Xe<2;3=QH~fy`C{i%VPHV1c@gpLX zOu4^+;GYs6l|qr|ZS#SSO~e#=DRJA{S5V!Y2wq3!2I^_ceLEh5d8Fra?P8V7-L@6l>7zanawg>nz>;tDg5N)DfS zR?Jcc!1+>O6bJ=ID8V2N#ci~_7cHUHQ_hgX}J;w;ab zl}7bF#;k42Yz$kUcAwbmS)3>p>hBp13Q~L?FF(g0(zE%GkpxJlK!TV={t|Y~gw14ultm2;ZZYx?vJkQ2f*)U|L@tGHzxvA#u7)?(oIvCNU1d=rhM zmLjTcLN9+@PW-Ssn&xSsI4r;uBfcA+8ErL$;FF|OMX`D_NHEM5v=?WNB~3E;D9f&} zFYch$h|rHD*nRIi-|phGfb#%I$+)Rd4~ad>L;afm2J3f6#BgJkSG24z`>phdxvUsQ#iAj+VcR!2RtbJ+SVx<9)NRl^&b>Qi5S-9c5&TOeuB{-7wf1S7M~qb}jDM9Ew-OTepsGSsK&(ltIE`KHY1<-LIecjp9r z#U@kt3h1^f$sB2E=Lr(4dr^xS1e@v{HkwR4y(IY;P^d-8^C} zb<*Y9UTU06Kx;Hv3@`YEstbH$@OM@TToij5A}(*`#g%1(dq- zfJO6ah0uziCcld<#Pewp-S)?Ah>>*%@$=dW;-`tYD2glSuM6s|pzH}HoL)4X6(yC9 z8%_(BylyAK2$Lj#-2Q$Ax~&*y{DB(K-p^ef;b>1vq9ZkqI3(k_fpOMnH~a`^e+VPP zCDQx~=P)ti+ze-r&f^?}zby}=EzUc5A6~Zzc{W{O2a`~66aD=QKpiH}lOaP>n@3yE zMVHzw0Ok`R+uq?>3)I6GiiFE+W^^{P07g?>@6kBJU0|9i#(CIn^61+p{S9Zir+5qO zLNuNSDV{dcMwSiERCBU6K%}M=Riug9X*kV1oa#>)HFx-nc?yDt9qK-`m+)}5%`j4G zOJYZwGqBkkG5DK+1QNYHqC_hi+dcAfG+LH86|Vxi&_WdrOF+x&1#Uuf{vMEuBET@b zw<)}&KD@U+yd+z8H$#@hf&^Pnif5BXZI_z;Pd|c;J)B1=i~jWh=cN=5tugy4Dz%I% z9UmB@z+tSPQh|u_ql+`t=L0ABeINoE+_l-4%%wl8R#3hOQn^ zQ0oVHQHjGQbO_+$R7MgViX^x;0 zF}1`zJ<^c+v`fzor)kR5FJ_=2L8EI!94hzF3rNv&%pMYN(yI}dOo1)6(&BVcN;DXc z&2|sfMYeLQ<&j6Aqrynd$51F*BGEIZb3VbCiLsucMbU*yS8j9@qa_nkVhCYifY_K! zGsqL8DF+lCD5B9ZOQ~EhnC_RjM%t+0pmnAmDz5jNPZL{XK&=TeZ1^K>)Jkb}7$sR4 zz4m3@jrz%g7Bm^<+7yRuFv4x`vH)UAQ8GuQoH`F({S-xtW(^p_CMPd{?cfFIm8hIaHCSM;(FF9sYm58EujnwyGgB$q`wRL!_Y!&8|jaIOPJD-^3JL<6#}W}}G? zHQ1NYa>L0L&Jo30l~Dm_=>cJ+B!)4tsZ~m;hdySKjLHv{tgQ{KpVg!Ydd^iBrK*3* zd{}ZM#JHFuLHm|CVe_*Rf?(CSM7=mVXj6dt1cWyv3~Y2Ss~ z!oQ!u>Rjn@k#k<&8sgMuhHS{*^Ubf)7!B*f0e082O$#{E_BlaZFV$`OYf48(Xoqdg zq>7bTF@97<89C~Nhmj~$^+!gNTT~5PSLcjZ%*e4`aTOy-eHSF2P(4b>tFj1na zQMr%v2$}kGn}y@}Z>;dh7Ir(kT@| zN*rQjh|!VA%LP`uO{4y|5>gilF|~GRWXu;0yiO$nSCc=t?RXci+505#k)Lf~PsuT-hxi2S!>LFisim+~v+R^WpxXSv$OC^a5oQoEPUfHW#i6 zrNoC0f2tO@ zG>c_LFcvcq=GW{U~IejaWsA6QOX`gYE+JsKP-L8M%M);a;@NLrmXU-1=HPqEW($M-l`iyW|xM zM{4&^XlO}vQF;Cno6nW@%u^y$_uvfbsJJu@I@o~2D zX+}3{J-VduGBNdqNsrXyR=rd2j8UiKp_z22oVkBmKGm#iM%VKEK8}#mwpM)ZaMMx# zL8SFwO973paT}3{o!`Vw2bR)5c-XDHSIeUDOYEmwD5Va4;9Y2>s`D0ZL3*`$OeQKx zioG~DetbB1uT_moCr)W;@qt}YS)d{nZYicd};pQeF67B*qJTq?{Ohj5x%AA;7luy?+CqXI|!>eR-$c5HWvb-tgU1^%MK1AjG-dpz1; z_|R;6eQ_e9&A+2~_pTtD%P-H327q>+I+6P3X_~&x?ZXeYq7M+?r+Lk9pCbhSW>zPe zH;3QE=C*>7XN9I((ox)(n&6RDD4*W%;gdKw^(uqk2chzN!HB#M`JV0hFMg-L31B1) zPjYGtnB*&eE5P6vPOb2}_`?yYPI%m#$LVNj>Bzm|NC2XUDLlT6f%;J}ZBrnz>{kVw z(cQ8{`sJ?h&or-}od?j^N6*P0O%hLB8e7Q=lsgNGtiA8Q}BAe`0_(VK+G>tIA*)9X;;0^q4?tP6LeXss}J~(7<>L{#YAGz=!_WUzE z(ls^Gq59xMP2EY!{M>-~du+sDyy}maBkI*{Lp|rj6qo42hwj{yg%R}d(O)vX&%%wE zfA#T#`;AeX-u#_w)d(YKU-&G#CN5gE(>aX}XEQ-yE0t~cj&LkbtTuK+L(6|J|C3n( z$u_?o$~hI?G7g*T3~IS>Tzk{A@alpN2zUO~&vqk2`S@ohD`4~0O5eZ1trX{7x<9$> zt$V&b^=xvTu2K6{qU!eKV;_hPKkgrr>wm_S-5GH?R{wInS#{zocFJ^;L4tNP-SSr; zb(KI%u;A<;ZEeQ%GKI@7s!IzC+;14LHs(j*Mt3eHz9 z6BvzrrjeH$Y|}6n^;L7Ene@0m?hlrXA{K=;Y0Z?m=j#3C#oMnoZdXd<$YisYrk1a* zkdB&8ThbHymum#`b3YjQgrncH=}Ei-!6*9Snib&PoboO3(*CaxjT8-Pjb>wK;_*&@ z<~!M*+~C08v%Qf#9IRVvsb9A{ziQ0`PLK}cc2IrqGu&8OMEF!<<{j`TWvm;MCZ4+; zgQYr&k)xhWWV_%( zO<3ai(AMguUkoS@4DmH7@Q(3i03d@e6)749UJL{#kBL0y4dg5xU%=fS_ zsPr|=!W9_T_z084O>PhHh1!y4Cf>PFXwQh=!xv`6QEg-8sGistH44#Gbu?u$w{Ba%UnH-7qerO>T zjL4A5;pUQmTFw8uTkKGTk~W(Eoh&2ejNhAEkkN-5|Ll-&Ep{78LjV44AQKG#Z6qN- zC)p(-znUb3g8YRL%72AK{=aKP{`a2$U4j39D)9esGLF_4{I`?we{}Dw8vk)JiZdz@ zR2rGOnzY_6CV zTuc!1N0xaH%z$UH2PLs0F$!C!R4@o1syny2=ql#B&LxC3o)D& znAh^yS)s80JU!57?27-88fhT}V~MMSYyo|Q7J|H#XAU`;AWV@hbFFZJ-KtSn3jKHvX@C}{B` zLMipZ%udX#tz@gp<)x;t)>opwNNHLod!1r=-FDFs-Ev+P=U2+&9NGBWjy-&kKZde# zbNQ?~>2vKHSlkk!k$KA)*~(RiP32NvQ4sA1*ElTG=ed~m%8Bb9aTs41DhejWO&u;n;g4K)VK17#N`3zrO;7lR(lm42FU~NO{2ssKiegI zbPF$I1tu5b1q&uUy)q4D7nCK=QbFfsw9Ji?73U}pUlZ#Kf&N~tqOC&2`r=PO)S3Z+oX5FmfD{@1qJ3J^{2m@=CE=$=b{U^(o~qg(m6YHH+JpN%-Bfq z9U=kr2@a1YRPyPCda4TTm7SRBoUg-7X}Y97;|N`U;1p=P9%UK|Z0PC47b#u{5fhpE zu$}woM>TfX$iACm}E7nysw8}3i%2$JzoRPLMpswH)Z+4|VzoiCh9te72vr?Cg%GWfDofE)P+ z&ENu!x)*)j67!gkr3IiF8r2CoN&RZl!-pj%_Jq3(3hgHgtxH1R=w>g?=`c64tEsnPd+| zA5_)U@|v`B$EV8bQ<<;HSO|p3h)`ckI06k%)k`s|QQo_Jw8zCFeLv1_tlP}GKzlQ# z@Y{vP?7gEw^7+h{#|3A5Rkp5GC6o_2Y^D<_Y|}Rty5ppfOn<1ga-PEo8j4=M?tu0b zPW$q-Qi;}+Qni($oW6}zA`M#t9e`6p6A5IWaxfZ^5wrk*!X=Sx{GbQKdfpSQhp`0@-rm3*K4 zM?!N`dV?P7WCGAtE<#HC2!+qU=%Kp$au)rQI<+|d4;EO;c#iTk+>x0jd!=4&Ute-_ z3L3BLqol45GE4KEw>0kuH)pVL+1UbmaJG$&W`}16-Dgrq4yec0h&6xkFqi=+UMD zC^1^$o#SX$HNM1b%ka+KcLd}0^Qy0oPi<$R)kja9bpj}RGiof#vslb<>u@tp*rJWw zTcP!u*R9px1?2PcNsHFaTJ<}wTvfx!vnTm}*6Z6}d8EL?&!#^B*Sar4Je9`hYrnVY zlFSCo#O~u5^0#hW-AG$ECrjrZ0THjo`eO&&cSF^phq*>>6W_6wCr|F@2M)TWZ)7vR z?`@wp|8k%6Y(gjcuYER3?V*tT@2P@%$9($qf4T(DG(LAMmZ|-yH2!;TFw?QzI{l+I z@b87ii_X;%wVw@He=qITJJ(mHf3|e~y#jyk+&oeH)v@vS+HacLtk|5 zVyZvF$q_fv>RtP9W*&!y5&s8!Zygl(!fgvS(zrD436S6tAS7r=LvV)#CxieAPJlpg zXx!ah)401^g1ghWJHctJGkwnazWd!b@19#VQ}@lxtGT;2U0wVE)DMbUd+oK?I*p2K z*O%%ZkX>LsOMI*aG6J zVYKzwY4mRS4sqQ<*me@Aa=%XV8{VhVc9uALzb*3nW-PMpB46cUAL-#ZH`;bpj~IP8 zcKdy|O4ttXRY9Dk{=VN;X}_HvMO-!iemIG2zu!^$ow^dicPTUaV4CQ4apcwZ(EIwg zlNJgq1WoWOu#X5+7J`jMf~zfzZ^l9>t54)iq@;#|-igBG?M)2=kQt(IX?cTtNgvCS zGtJpDnh{Z8`Doht3@7-o%ldH6k+AIgJmLY-K)iSaefR}^nbmxeo0g{lRFp9kz?k=a zy)Ut>FS@rMm=eHfh$=)0c&v&_o#ZEP=FQjOLxbfbtqsz`g6L5CzUuRTwCgW3M`_&P z_j=d&Jv@NH7WHkxD@$3T&)NZ|4c_K(lqX<6ZS6pkI)9&CA4*n`O&#5+5M+iVrgm^B(jK=VIE2^x9|4lA0jdK32#{phbtw8XKoY9$SRoi%qaC{S z#<4Cbw5cJ~K|7=c9@>!O4B??Cfg3=g8AjGGB9Yt*Z3R@_e-2AzkQ#3VpG*u%qK+|)j0~S}j$z04R;Z8Ro{!>YLqzjX#S$RhOA4c2y2N52-AmY_MCW4>@K|tR zB+|X)N;^)PEfVQoa@-K7SQvqHFWIJyS7(brx|b|F$7>gcBi&2p=Hd>Ne0rrgerwdCv|czso};8>0WX@o7zSdUQd-)Hy`~YIjqAa?di{u0rRl_ z`83+S(6PdlZlUycc-l;`4;Rw9WHvZukt%fgCOs!8eO)eQNGGFCHe)w9X1Xz>q9Ehg zTyKIZ^PV!}LN2PtC37`7^HwP1YCg05CKKZZz=EAQ3J0JI#~}Cg=qXu`8?y$JvIv@@ zK}BH%!r2r$+5Ljql)}-}7GadIY{HxDpL5xaO;Jzf!x&w2Fq3mSopU&aqquRxIH_}g z3+A?)~aO5R2?!17)V zWU{#AJ<|P-+yDK^{&yT~=nFQevGDghc-~|obgUmbyaye?&hKT*|AC#&$CB~QHGeTV z-_;`B9hPrx0maXg@tnWOCnqn^6%I*X&-cL*5UGZSH>E-LQv-wx9jObuBsJVZ3TL#R z2i`){ia4EW3xiWaGKKTAVPOB1q6mw^W})1C`N9%dQJ8KKped-@wOHFEt*I&VXuddG zHoudtq{^bWqsi;XZBe6Z$(c^f(0*pmZ3$CN$%MSOJO$`qEQB-CK=n0>&cCq`fA9~j zNd5uIMIhfHxdNj@OCi2r8> z#{d2<|NR91%b&o1!a_&|qwrZQ_7Oeljii1S@>l2_>)RCc{)s1p5$whTX@9T~A*lBI zi){4bK9SfSXSBC`8^eDZsIuF!s$_zRa2$)O%>YpCYKtZL*dj?~Zz+@Um}w2b>=v zfOF4bSh?Dt^@gx4ZS`zyhylg+>R!9%U{+uJ>_zMKhSjvK7rFm%vy)u0Cc`4Mwfb4_ zg0W-$)o_c8D z?LUQmG4odJrdLOg4!R2qq$j7(2~LWK(}%Fnu+BSQ)yj^cHoV%6hosE2J~bIz!ej*8 zn{RG>07GAH#(pE4Uw4qT;a`s_0Agh@hEO{h3fIBPv@!C zk{=M;Hoyw$%hP;Z$MVF;K>3wZA(;9=vZt1LE<^SqrQ&1E^hYJr2_jLsuw`tNGH)Lm zPL(Mo%i|W*>}GZV*Lsn8Gf;{8OTh((JGV9!FodIxe!sa;y#E0=wgXhJQGtqCFI(Bw zZa}f&8DN2J*FlVFc+yJFq1aKL8`F2%{TR2z;wQa9$+H21?YgR7u2GSUHXPQ}tfApH zcGUq9sZf>@q15K*&0?vT7f^3vg&Jk)P&uoKuPMT|01`#pj#)#mbgsz-bqeM(api&8 z22SH}=*;EkDaW~wuUo%NelB0ILco5J_W~9KoAH?%smGP-mjD;~R}M?ZgV&LG4q-K` zDg!i5fPh&K9>7QCMs`Ju=Z2S?alI64fP(yGz#egyjrg|VlMx~G49gYLK5WBg8zs2t z6+soFwq_f#<4V6gwuEwyZKUDz zWFTin>a|_5=OzLtUoLK5eg&U30mZ#Ts69VgvFt10W638JCn1oFE`Y%VFV=(E;xTT7 zOeX)w?+C`#QDa7vtkqmFIhuAq&m&StDyp?p_KGN(XuG$>-_4}3?diitOnhmN%t&!j z)#XD-{o+O09zC0f#Me!IKT?oYvMwU_Jo{xY!qg{=ok9c(7)>|eq}P;l76m@d^Ur<9 z?vYeP94-tfvgDUl@o1O>>yC~=IXvy!7V;!aQGP0>OODY4xoE?p1?N$8U21vPVYq~I6!en1xEEU%;afi1FfKt z*u1g$Q}XQMmfklstn5#LrsON4KlJ2XhtQI%zo(;(sHNUc6)4vhX$|jdB7Y+l5w#_z zN(Z_Nw=)eRwPjAj2L^YyvmFF=6@f~JMl^SGeadxJiNlAVMegRuBI;`Lm5wa*?qG8x zb#?W_M>cME3#$b64ZTXo_NhoFN4dUfcKG;P^WD-(M19MS(l6JAyJh%DecSc$FVDNX z6#!vF2d46g56%55mP$hx#mGs3$o(29vf&4d@@a_P{W|4nLyy47X@uMT20dY8A3{d? zEGG4SlU1d0Kx^bIq4|D`C$e$KRQWt*;eK0iv~k1<83%E9zXK+0`mbOi9$78HXn(wD z|20T4bf(_Bn9K9qbQSpPEK%QZJG-f4?Y9kS3!#{ez-ZD2(UXKcoK0mzy8klndbIs`_J!=uM*exIScFoj;mM?1Z7+K!V(5KKCck&?ZIZ%L$}D zdWTb6q>(O2qTV`CYpGg@R_{u8=YWi^HX||PPohVG)uVC8q+9ZXQGIM>h#hdRtrosJ zpxxDkUY8mKyWbJOIU0DCLI`kj9ajyxAb^nJqOHA#=dz*JOwX3nDy_Fs;$IaLVBa2h z)a2>?v8H?}86GE)s`XP|~+dU9Er2t~h z%5sDgX|L*I4#cne;Q90}_(n)kLQnyetJ#52je_~ll;6m+Q8BPCvQZd9;Ip1g6W^x- zfu*cDI?sNZWvTKL*BFJ~3Kcxj!Ynfz3j}|bUWo!7=Ve8|K+S@#$jzW(`LVO35?&zxtGzc8UI|RE6Cy7_ zp#ES#D5+!wC#d6X7IB~zPma0R!{QB(7g@l$h+ zadb>ltCLQQQQYGOJBchFG&Cmc?KXqU(2@c|6IzQBxsSpcQdoid73eq=W0w6uS$Y%z z@h@_g_C+y6^#X06J_to{V-cJUkc>JXMGvCo>&MB|uNvUoxvSD5yyu7$r&thGMFW#` zJfGHhOV8hh7iV?RJyCVITVc$A3mH-&F{v!UlH~%;yq2Mdj%tu(UCv-Ql~y1^JaX`k zRg+5#=qG!dSQ5aCP56LCp}}FQB@L1=r%u<=L8r8M4m|i=n*H1~%v45Jb#j5-;CdvD z7g4<#Yud(BROXwS3QcuwDA1}2@H7;+91Z!FU39?tc}cL^h6hNMJ#-R6kSKcRPPD*nJD0pLBDw{w0U%LP%ikhhP2jN-fhYOOGA; z)-l2Sw}ZwS{fG96mv$DMN7S-csNmN+otE?nV!*xq#Vb_F4m%Wx{!*7|^zUR`)DO56 zD9$i ziOvE#i@msvW@&fDiB~(^iGGj+wrN% zekE_3_y(@IW>k2`iT0#}@r&Yb!|z6TwKmV^whZ?Mm|u-qjUuSz(MepQKh%v!AJwF? zuTlL7lQp!ZJ7cEr6e4maBVe$8zA5G*6O9Fcq@%EY2clWD_%Nurqo*gLgUC7rr{D6B zu}!}rBpwf5Cyt6=tI6H^&h3QXtwxcr+Tp5T9(?tv;@id8CXv% zd6sB2*RnK66iloHETLwdJtGZSURM;g{;>-7Ykskg+R<>`rK$+%7?tp@YBZ#ibuboD z^flC~5MHMeCx``|G?7c&&>Fay4-V+3YpUObJr-X)(1Z6VwH5Jy;XMjnL8XCrU@2Gl zPz8R5fy$cifcG}@Gi=ciU5J3H3BzyH$6dRkc{FwaVq==t8!(C*3de6GyEq{ zL}i$%;s*5syhm`PGQw$SWviWA%HljLhM{!4Z;bz2nq&nkz zXh-bsW)wnDlZC0YD?xKR7NlI0LovK7Epj^^6;YGNqO>QkcRP_ZQUetj-cxqFoy;Pr zEs#;#=QlnW$SAVUt0*zxI3S-c*R1u-9Wu}vd^=DLbyQX|-bb9|xc=jizIUi;wm=)(5U z+(!TO>eSld${~Dy=WJo`VrlS>|w|)=qAV$xBZ_RZ=TSj}<;dP@MKUc5X=8ucIrptR5nx^&|=6-j; zPPWcZVCTQ9hgQ25&l<+JVS|<3%NMP)hy91}fvx-QmhtZLtgQ0!t*!Brtjf@k{DJL< zu+W13&AW!I%B}O&kuyZ!#%=Wk{C@>@`tPs#ztGk@r^LSkK|Xg*WMIF~=LF7JoqA#9{>FH@3md(j!G+ly1c<^FVA zQ=}23hOPW3){RkjaivqxEFSaL87w+t*EEFH+LkK6qN%r;Ze%&ycMQ?mSZ;rfkM&4Y z+Z#1G0GkA3Nc+1{R{#-*GiO8PRs<GIb_{*1z*<9c_xl)s5;IJf9|kD zKTDhy$HHNy^j*b9>h@6S!I~d1q{blDaoBSy?pTJ-*#X9O+EIb{{2ltf7|G7-0Uk0h(+fWVo(mwLe?ft!D$TYPr$`i>>lTSkO64ua-Jcix z7N34Q$t1=+Djo=N&NF}Koxd5w${wdC!Qv0@NO#^YG);DoaDm2KXkq|T(NU?4(|C=7 z08&6l^BgHx=_b?6PcKhQBOW92nIf!(ueZgi7%#T{neh493(4e)*iqtQ%-JLm_;LA3 z;G|kj=+=xKuXY%P$V0RUv4ZhIHjRLIX_2O4Yzy0 zA5v+=xbRUbj%u6JH4}9eQiG(SV`yyNO6UTsG<|aX_lc%vb&|{ zn$=QSh@TiV6Sa`fxIJrghl0l&QD4wQJ0^(q4;=RlQaN%^$3=&vM z(GPMAI>=1A_;j`S6pI-@&0h_t=E-sipnx4~R7NplL zO6wX+x&kdnbYDDE2cwe!0*q6uoH7`0__rN=rH-v%99a)EP}*Pewo`F<3sRFHo?d`y zrEK~0x~F|%@vS6En|37qnt+pUFLBa@lI!4JXB7~*gk?XO11RGaGtfv23M+JR>tjO7 zKK?+Lbfqq6GWS&QB4?bGgX_8TSlZ*=o|{UG96#kYMAIYMOC5I8E|N44-6tuk{ZC4g zCOLZ)lkNe!P?oE~_#d3RTEzPaZULXN@ji8sJZDzbkiW>~Ggb@L#GZ&rxyWNxDwNk6 zm`G^4_|6kvsAwubnF70j3Jw=4I}J=`++O5^@rzUg<)?C}FAHRqiqsParl7)?g{t92 z@ABoRi*zrGw1j$RGTrZ0a@r$*4^fFn_!n^ z&cnq9*8{U{x0mG*{1QVvZJtkZWG@);{TVAgGFNVGVqxPrqzeib*vFF(npG4M%GR6r z&%BoIR^T{uom*VCnuH}EuCA_I0SV6np5uK)cT4KRBR>u5E&f`FH19%ud3@;LSM<}|_Gnd_4|<_+_0StTrh09QQhoqc&g z6k``%_Nh*VFx&|bgh$x=yl(ME zx@^q0VSIb%KYWOePLF~gQCG%t_`&jn-cRX-m+wAu=)qv*^-Wtxcr6~*>&(|neeXG% z%OA8t&!$scUzr)OC4KSSAY1vS1eSW1Gtw;VrbEN#+>x$C=07<-kExPm!0_laWIKMH z%&9@2H{%rC6Td+;E2z&RZeZ79zgP~!1oyLW+s4*G$4F56zZZ7;@1OSnpHJXF!psC{ zvT3rs9bF-03`mv9AN(*H@8@@{_Kbb8NPf6QTb;2#fm{ozGI{$%F%j$I%wm7FsdzfZ zm!1o`8Z-H<*I%gL55(oF`>3SKrw>$_s29Jhw(y6Y74?-GRx^@O*B!pgmK`qQ3aLAQ z)r&0{`6&pL>BkyXK6=_w|I8cBkpYKN(YXQ@$U{iMz4+Efyu{ErLkjA7<|MT>IDOe@Ly&~ZgK4A>B8IZRsd9w7kOY6e|KiXN)cTyosN> zSfjQVhaKh9;295WonVg?^Q@>hx|rMI9(9GgDPMXTpQ3?AgsA*uxiR#zJb*aSP`7w& zh#4SiUQafZdmoG*!A`Z8hW9QdISk>~Nxu3aErOg;8N)zkH_Gccr5Fr~E7~nAWEL{@ zBLvV#hp&YP79tZ-;As+pBm2ow6F7d*3M=6Xa3!!L#Hwll1Hj>hbl&)$lp5e{B+*9D z|EO*rwSueOLgM5o1~-nTqY{r4G*LCQ+@J&ThyhwBp?$nAHq8;!`qg@~P1?~WFTMJ# z0~MEFtrKI`k1gbbOG=c(^a#0$8^d(5nFR6Ayw@2^Cn8!*rp%X@F>sby@Z+abW}s&dZ=7Zv5s~_CQ0sbv4nN))F7A#CG?h18;|sn&Ti?3W`%gJ0XPv!Q z^9COX<=NH)d8%6B+ituKy>&+~O9F>`-v$dt@9mYo78d21^L%~%0pb;SyuJJLk>#f3 zm+l5(U(6)G)x=1K+fU0GnDZ41uIEs<6y8`d({;*I3I;UMY$rOK<_D8+NqFCuuMY>- z2|6ykF#$Fxy+$9RugI@zif>4hug7M1_pC)O_KiPWhWxBS6)k1_mO@nJs$RPIE>9DG z5SGEYQ+c`i(`$g39)_h|9l;Rgi9sJS>-vty;vq*=EzG(+yQS2cH?v6R@TZEsTi6Y1_ zKhvMk2X+;MpJ*P1DKim8(H=96qWap^&l=;x z05`pU^|1)PM2QT-CsLaU^~;HQ>Mz;61H?a>SWU=l-4Z^TRG8#656+YB+ST8KeUfz5 zk*(HvnuJEl%o}R1Xu@7CJ~Wm0oQO)%L+PzXc+K{UdQ_!rk7@u>5Ewwu#C8`Jo7TzC z!bOoK86rxo4o3`)id^>(xUI*cSZ?NnG3Cd6s4udxlnNv$2F3z}FS0@51(GcC;~}~i zIh4Z%(gFkH5v~`x^!SCcGRToR8+n9E=f?XK$e#Ks`c+UEmu#?7MCn2%){YtK>t!K;1Xk?e}P{2-Fq?S~CK(@qx7Ljy)CrD&QLIc`aje zrSt)=sts3rcdMdyD=l~PLgbo}^M;J+4(kyDof?5ci2xv*0s$aK0B{fhbOZqKH;s0W zigSrUwueKzO29Bf!#enstCi(hHQTd%F77OzX9>JK!5kd6Oi$l3JbL|@lADH{nVgiC zn3#-$obu75$4{R!v9YqTv$Jz>aBy*PK6}Q^$NTK%3*OhS1vOQK%sz-aSb@J;t2@}5 z*x5RKwR3TG@d^wKii(Vhk55iYN>5G8%g8Rx`d*z^+ySi|E~#IwX!}*weqGaXQ`LP_ z*L~g8d)76&+c&m4G%-IiK0P`%F+M&qIXQ)_>FMd2KWlb&cJ7}wKR*wH!4?)478e(n z{;1`@YGq|*b#--ZZEgL}+Spj%++5q)UfJ7)9qdmZ9}l0LcAj0-o?jJT-6Y@KN8H?p zT;Bzq-v*w-15V)n$5(zkhn~yJ-&U49*H`@3S0Xmopj#W=+nccM?al4&?cLqoy}iBt zKkMM1b$ED)1k_0Qj4ULe{;QC%8d<0RuFn3f^MBUG|5%romskI;uCK4*f7Z>Pb^B-C z{ZDm&fB*3Jh4{Z%_Ya8k8^kX-;@}FgcZt}!Ky02P*3S?tr$}8RV(u4W_Rm+?2?B|~ z(6DG_E3!I$u}IkU|4+BZBvlK2cDY?N^x_HNIp)0nFd~s6lYHAxGI2crQ2C|`e${l? zBl?IPOYeb-UldC}nt>U~$TfiEEb~=!<^5gw*JOPJV3eHwCp%;1I&AEplH+!!kSgDz z_k%M9I==EG%RJ8Ut11D8ofheWq% zp1;oG8DjztC*y`bQfhJ-?q(OME*7<|Tn~sKOGvYdxqOq6`No(4Lc{-g1d6;hR$k=V zPee_GeG0oY-1Hu;uYAHS@E5nCYrF)^<&d%ljkK1@LigLX;aJJH|UdPrBYoAhko# zk`1hXoKWWRErz}iE3_a-lD!fm0jyO?^3k0V1C;q5b$o}!0c_qdjs?bG%ZsA3o6E*v zA};6z(l8ay2Xp+vS<>;cj(I$>en+8J%A5b>J2A?@Baq}{PE z&xu~yd?y|2+q-#>k6b^Q!iF@Qx3Y|Fq>>{K3knNTY?}6-ewOJ9PNoH}o9})9VOPVH z`PDpF!@W%WS`APct(&dI!1Z}Mr{v{6)CmzMc1s7XnPE?XimHDzplQjVh|3g+8=&#a zBEMiN)I4om_9@}E$SbCnWzWj{J#TSTYvqz+S@EI{%5J$YhiPoQ+S99VJkZ21QEg!W z0@Ns0ym>f- zA)d>G?i@&DquNYKR0ltrz3j+se093=dMq1$KdT_7Uf_zKY!&;w@|Cn1j=08npMA}3 zqoKJ>Q(8+%eKOPKFP}R0_#&~-B3K>+5?q~h;&pYUK!ay$1dAWgO=t6jH7d+0!x%F7 z;V}eFDo+hbVn>%}nfl|xnGhQGS-9`&x>{$R}E%yShV4bm1Is)li%@;QaF~TYRt3q6;}u!5$-D7x#w2W;hdoO*buV_ zwh`eG&7~(I1;5Y?4);?aS6kI4zp{;tNK1KtH8R!Ux%ez>`AO6QMt?t=`H0>w8v_AZ za#3=L9|OMP+l`h!{zQHH*ko)I7E_%x`23iQYxJEuEgbY zuDE^(8UjCQ{0gh)*+x(elmRA3CR!(f@+3Q=Ti-@~Vgj^U81Zs;uSY*&KU0r!O&4bg zY4L|vc|Pge06rQJ3_;?r`+Zqn0ap|gpZ|S1%ciT^iX()H&}W4O80@O9VYt-BX>eir z_Nu-EzsxpJVR4;YtD;A#%sz2&aa;JhaqMTQVZHd$zV3C?+;G{q`oX1R*X!n0{69F$ z<+GIQmW5Rgatx#QRt?v!C*kGpI|?heuHJ!w(_y+93a`*kLP^+4a9w`3lsgKOE|{=(ZNAO0iEYg?ww)BRl>Zl`p*Q z!zqq-heT_>ESycT(>6e)iQ5C%52{iP!I*nqBE+t*-O%PZE^jL%J+8UZ5fty zK_a27j4(Z54fFL$=bqBv-WnHYTtJ__0{JBQ{Qa$Qv%=ah2r}Fa<24-Mkd12~`=8tz z|E!L$Tj-DuwATM*e4j&J#3My{*Z;3uW3PeQk%Xq4NQ}L3-Y|n7jAUU2s7L?2H7;+} z{qk#>K!u75+WwP6IXZ~r=|69cf8W^qd0q@dJbzh^3_0Phv0AUuY5@8PlLeOQ9SqZkNEq$RD9XRm~p4rZ%-3^{u zyTR;sVL4{XP-oCEC0Vf`Xxt3sP6_ce^R9sV2lNqGfYIN8(bZIeZ$Us+2s(-?I^`5P zPIiQ;T^RZr^1wR`$PlSY6h0{%UTPLz&Kd-BCbc*Leo#eMvqjgo1!AzhISc|}3z3~* zMOri9Sg2yyVqwMr0zYRFUQ0xxWk;)chg=6m0lhA@F@#JnKw|eKU#P#PI-^i z#Vin4Eu0ZM=qX#M=y>>>s2C$d3?ndxAs|+M6$9l2TS*oDcL#wEJ-TvsupRS-}X3_Q35@v?#9qJYTrXQVDP&pbu(G}eWRGN&S?Wjw`;D(Mozmt^)a zvaUabAvvk3FdiX@F57{wc!ExBmzGwTmNlO?ca~;89yNIrHPcTpM+GRSO8q{UzCs0f zECdQ_j0|<5EQG|!@emy*rwvl2{N_PAiIan|<1EzDOZHNv*|19svmZLL6T8y$;hCsJ zStvYNPjs>h)UeDA(YLW;=^<&y{b|4HapYDp_$_i@xU!w~M_memNJGfUUDGM$32Aln zZh~2qgaRGSl8R&_nTwJh3K%-GFbq$Ul5cX3=CdqZa`jVk6NnR2oXKC^MvTd6sR(B* z6p*%L#Z_vknx@2?TfDNiQ27#)v&^4={Vre4HQ(7)*|jP4Xe!?`Bo(oaoj=H0Fn5u^ zd7~JVq7*`%e?D2ze^C&~URW(z=xtG0<5%cjR9GcdfZmiJ$cr6sh@EJQoq)_X2k~c6 zze#f?jWNVd;wi4tEl!}vMjjon=N7yh<7>MuelWzz9mD>iThe1uk^{hMVt>;DBZQxn zjNO*RRA5i(md?1AP77nhD@rJ)O2%}By4rHf6)S*|%B=89KB2q%ThPAp1e zZOeA4GqUA_4yj8EK;`$krP1K>{*BUc3+xA2d75Dv09OR{t|VHu0w_|BU0kt;^Bull zGA3U^uuzUgQ|VA$QDs<~394eC!I`42N~^%m1mK+BV$q5qgmCZ5n2M`TQmRhnvAOgF zkOPWwlxaj3&@3wcCWJ5^P{k)w#*bT`U|UVM5E2{({G{q_3IRHTLd8XDrd?|!X{xn2 zsxrW(a>X?oZ^KEwpAIR`YD{ckExNydKjPF>Kvo$ zC~&J773x`WarAf^Qai9S$7%!bu%9+#e^YqjK3Ai%fU71_>v>nAxlkwB4AcWxf2C;% zb8Cncc_GwX-91+QnkG~;t1j8H!A7AWsRGC@QqSU6`az`Wd2T^5ZfR^(ZFw`WTDKuR zs$tHex*@fhL?om6uH??OR_dUogQkU5p+3m1DhgrS(q~z|FCR2`S7H@fJEm9cPt(BH zTsdd?tf{!}Shr$aq1fN86y(-M8r!xqP?~X#t_ctr){8 zgy7__VueRx`F3D_Q^nK-TfKDeZl%XgiozCM>`oqQ8*c`lDs=6pw&<7xamUfMI~o;- z8atbTiDSub|hBYOl1O z$iu2=(f)A#{sg@KK=&WXCH;+wscDP-U%QKQLJh2r`)Re|Dfs@B_R^&KFzDUV zw6NW@(J-mW`x)bhXRQpuB@Ro=GA;y>2zZFyg})F%+S2%(p(n)RL(2d zoA)qiI!Q=6%q|>Oax~*b+gH8>OW|6mR+=sISO`vEXu>BcURr1yUg!uXYJau(gKMz| zf37cmkwm<2sC2gSVQ~y`G(SPNIQ4#s3VBY6PXudSA{bv<9tN$_E#vSmZ-#@mJ(lUQ z=Mx_0_a8ukbjznlOXsaim*Gp-@0V`4mhK)FABGoyr!S(|ETV}m0tpr|mlv?h7H~Zm z@WmDg5ip_=7)b_<%mzjw2BRW?(TvQ~Ma(}In`bzld(t+?6fwtQFvrF{xA(A&+O)`R z0OESI@%(uG1!7sCY+1;2Swwl+D+KeHZbQSR#}}|EL9jwXgL|*NDek$stF-BCxS&js zai~u0tJWwU?90Q1OOEQ03y(E zZpdg>xdd7S-joT03q{29grze0WfGoCMe<7e@xK1b``nV7$&7*7h??^~1)nY{j|PZK zm4Zc%jsZ+Y^@3Xho>n}z_J2!umGjz_>kLM-}-RGyXi9Uq0BFqI*g!4zq+ zrp)f7!5U=26z9a9>?IuK{3gIg&h?X$lYz4R+qZV|@9m_GzPvI0EMso;&fHMn)bNvq zfu*g!jpKVeXG1$j6FYkw+b>^izu5k(ZS8FBzS@6vb#`=had&g|K(@P^=O69vHy!+VE^!-z{t?R z$grU3@Q~Puu;i$S)Y$0cjFiOm)P$t?l*E{{_^6DSu-xdt@8RAhfsh7Y-yb2~ol)K` zalWnbe(lIk@astM>rC|TO8TR_k)8PG>mTm}x>EvsQUiNZ0(+6KX+izSP7fML4<5`6 z8OjV9&I}pN4js=99nA?F&kdjY9x;;}G4nlqCOdp0H)8pF@G9D&$CAmIOEXp!XW&HV%X_V)Vj^!ok?ez$)G-#I(m zI6Pe2-Cf(-Tw7aRLvq{yQ?0CR%&Z?4Zk&c~o&{{21#O%LtsaIhZ%3^xCaz9rZOrCx zE|#yaG|z3$jP9Kb?BD*_yKmmUuUosTn7=8WxGEpIs`+`@)N|b4xA~)IxwmKO=Z}RS z-E-YtGu@q&-JKJi9b@gSqpdB&&5c9#_5C%qeU()|%E~%Ri`t5y^~HI$g?V*IJ{a@w z`QYa`7e6bXbVbm6kfl{*=k>?3P9qa!tN!IZsT9Z{ zlTcIv!8Cxzs$a2owUNd@ye9)bS)8zm$GGhWfbCK(Gh2I)F zR}1wJUpTob8T(^nMsxj!?SwCZic9ULQLSwccbq~gj{q5$h}B!BDH4l2wmbv5a&HGi zIh8^Zar7;`69Xa9)*V_8_@{!k06gnnIulf!e2{J&S<;w_5Lbh^GLgyZdgz53#e3N^ zH4276!R>}@3kKm&jJl#RP6--7lsesayWfL|HRx;M>!AWLEOjArZb){7_Gk0=5UlL& zC2@AU#ss@E29u{r3ITaWvMP0QTYisPg)$QyX0Uam)W}Sd11-0HMt@>T4xSXpwU{QC zwPx1MjW5T3w}tvmnte~-2xFhc5)#v&nPiMJpz4KID5w`3+y>7|8~sE-k%Jrebt4Z^ z(K8Sqm=FM)N=$#`G%p1V!J#btE)9tBFUxVwF6m=#CM~PgohHc~hBD7%03TsT+nd|J zv%tXqR>O+6s#|c_usI^hQJVs-Q-j7;-qCrv!oE?}F{^ED#_l_a9Ok}EIQZ30WjC;5 z0akX4hfd0CFt+qMGDlfmWNa$r5MjwYY41fXIqd;qrds#NWRPN7 zC@7u-)(qn9<)7tTwQ#oyF)d?yQaI7|>UB+48y%N(c_`U)r_)?5*dhNg>T?~&e3ok$ z)oEz|=W!oJs-@2p~J7;~m7V?B)}*e4geJM9tsLnKR?~?%Ywi zqYUY-Ze{PeBBf6pD`N_FmFdyNet>HiZOmQSj5fO%C=jZ zSxh8hlNpidUPi!?6-3LgPHe1+Sqq${iqYo;Qq@Y$r((mtcsI#@C zTPk+LN(NS_cM9tHdd4USVVdZ&vb|zOyety#s^}xzy%N-CQ9+7%j1>KS(!yuaQDJ#c zS>*cVbaSdQYCkSA>1%G?g3Fg`Fid z41MQz>K`f}g=hOmzBQevpM>R$?#PY0!p<|0`}lmZ>;6&C+w)8Se!>5X z`*>G62WO;)RSHv}PW(>|>qn(xt;Qlshp>%OTMtXY3cK(>HLRtUg6jjbc3Hlq!FHA( zI-_U1$m^&*{0}~$xKVcYyr2yT=QQYy)^6vkt8^#Be9tsEZ+Tc-9@=`SPkT3G;ZRpS zBWq>RIcfW~eKqxXi5Q@n6Gd2nF_gUixoZtT2sjv`-4J9^zc%~@Xo&W~dgVM~Rp;%8iHsqC2_HcdeCA3c3NXH)e{5#( z<(E;*+^wf^|0?Bi_;Y>G+Dn1P-|I8B8Yl7D&{mRA7Rjl36=v1|uW5?lP#Y_w5%wM35i}TAbigpp;Tvg1Z#=;!?bVJHed-h2rjows?_1 zp+J#R+}$-ufl^2}zyBlWIeR~Q&wh1YoXj;VD>Ex|ugS#bTKE0=p1@G*t7b`a@G!-? z#t6jji^Br!;SBzdS>_H>pEKbjZcTkFbUUF`3u8P&P5T(C+9T``xz35G_vV56a`jAQS@>Fz-3U5oiQ*7{)XPig5dA;8Kh*m!`^eF)WSvB zxnn&vqy6*B5Yb5RJtE=WnIo)q>6%S5b?$TeoeQIpeA6j0u|@fE?{Aeiqg>mufa0%L zRwup%UmM$Gf4r2rU2A#54AZ{nlXyfDwDg`*kM|-g)pu`dVFuXl|L5zk&ItTjCm; zTFaPhU^%Boz`X5thjY*jR@^k4R5JyqPNf7z2wK5;GovM1YjV+)nz z%vZrx%J(7XxS*eL1NZi1OZ@O`{HRe}*8td*KVi}+VY&qjkVyb}CM@3Dlh+BWREg^% ziJL}=+dhfAnTZ=z30opq(=7@6R7qzdNf$=<_GHrPK;k}L()H}UJ(+|>oxELfA6)_i z_$K3JB}1r_Kv{{mEy*zI6w<6@qP^r}krb+|6dIKzihu0M6!=~eeN2-0D&T4t$nKON zj(~BgBs}DTJw{-_Q!T)!Fz~bwNOUZfsrBu|E)e(_r~^xUx7PCw@#R75gCm{IKXGGGb_0j+_X`56y zL1WOr^=AGka7;aZE*8WE3s5-rE^rP{ax7JfKV3W|LvJoskSoI!E5mFrU0gI%z&F8x zI*VI0^=da`diO2BDm4HF4ITrju7X%C@e)GbsbT@S`2o*S?+W3NiV#RuJ*cJ?U&S(2 z#5iLr8uU~pou>fUBAW3SmYIm3+B}#bw+FEF1&Cs$y)f2r@l7*t1xsP2nUCSB@B?l< zph1{q$gL&5D(bx&91u8&!-WN?i-DBG?<>2)5)zRNh=N00v;hui@RU)GX+4k!E2}*w z_3Q5xL_y}XNLCzmhEP_1hEq~zE4X_W6gdXHEr4FHf-X?dTsWji8{z^76y0~oVfj?t z*+no&ZascrD~Kz(Xg#LzoI1a-0527eZ=MWnsmvE~daI0;hWVXOOI;u{m;i!g7{?UM zUgTWvf&1V-&<M|5C%WIk}=TpDu_RR6-xo6$`WD*0hA_J*>e}283Up$ z@sU{h+1e0$n(CMR=$Hxg z0#Vay?}hYsZ>Lk)*|xY9v?Vqv$tdNJicS#WCL^x8W0CbmZC7n z-^~M+_42Vb0j7x>3k^_$#&MI6Q{2#OEJ*EOW12W5O|7-^ebo_HQyHSFCZwr=pl#nT z@9=$9xi+LcuI=!?sgH$UQP5UR`=yi?5;4}yFj&95iyKqj^5c68#Y1Qbyp>87Qmozn z&AI*EP-B)Uq;9a)x*C#C+cv%cDfZ8s#`t%X9N-tO;w2{I565*Jm_QON^P31#S{4$% z{AuVkg%)B#dLBahX}bop+rNKlFI{c_LEBMqa1Rc4ltMbE#qkrh@%-y?{XB4yD7+;C z)bt-bC+$vL-_FI%&bWskf3Lm^j4AxK(0NP%Idg8kFzp)p(t5qnIzH6J8Q;TI4Vlfx zdxHj>qrn0aUjz7Y@E1Ei;G?`C`0gGpFo`76fCO?E=)Is^n%vE@|BgliLciEcf7{Iz z-+HOm!{!3HiEHA@>Dy7QDyxFTqQO@DIClKstj56RD6st^*w*9SOm-pGEsi<*>lsz= zbY{zKNU!~iGF7wo<3IR8xA+*%!|pTMJ{^fZ{rIklp{}~*zB~U970GxOXq+S%j+MkW z#~i#_Q@m^xYUW|5Cr|%TX2Z@b_^KZ2lha=@+#7h?AAH!$NZ9ktr7JREU^IK+0~*qj zGZc3Sc{tpIwTM^e+`$&xQBu{jgO3j+_`agtKY0!IUVLAX(_f70t}z=4y6p|4>q43h z=q|Q5#1C);47Jq^C8$?*F6QOjzW?A033M9eJb=u6!FMkhKH>bnJpi7k9YL#&1RdgI zTt;RH2eb(L7I=m}-;S_JbkxE}H*)Tu-ZACh!81IX4a0w1-?p1G3auF)mPlZq@5a!L zGfR%=VU5);_VyiM@a+&dw%RzJShxvj{EseUS!#Xv{p6;_v5ny&Q@Wo!tsRMD?@g;9 zMR5F;Ayg^Wclr)+9tvM`X%cfg$;vy<9yp?9hG&yAWl}rkVTsS|GPdJ8u~IX(Q#Bx_ zF)HCYx);##fdG|@{z`9-m&rf#z5rh{aK=Y+ip}+(aP6SG89OXoBtJxue%e}c+O}iN zp<_aV=%@4D`&=wk{$ewIApWbsxlGF$AKoce^Co(mS56c=Q7P_vPbZl?sE0+ubc7D+Yo|yR%aX|ErjbA zO_qR9Fa<@GtL>bAc-McRk4*d25CE%(P1WYpA8LneXt5j z34kZh-#3_RYbVsPu_Majnq>LesfcH@3D(_;cF~Zx}_$a=d(u zs%S}ozC`DDEUjnduK3b#2poew{6}1qfxC?WFZ8z8Dp1%G$QQEllV}OhxrpNiz?iy% zp74WT!f_=%0OF_}^Nzw79&2nl)ha=FwgmZXw|N#-kXrtx$T3i{$tM#6Y@35!uGOlz zoNDfB$Q6n(*bo8CGjr#15Zm6a+n7Z#`ZxZ2bZ$^PNJksT z0tMu-#PwMPy1C&hY6E@vHph;3bhUAm;XtVmQ~nk>VLOCU4%AZQF6_OV2>qk z(|QPJRjB=DxMKWZAK00c$Dum|2A43;LQ?A6RM3%e z?$N?AIG7Jt5ew*0uo!BAgRF0jw^+6&_^_+F<~np-T(EUq55)<-sjR!n%}@F8cfmgR63##F z%KryzZBI9wJPOd4sZ*w&OyPYW@=bQy9}`V+s$Mhj71>MnlAQanTedKVfxhD~WNkg3 z4$iaLj#T-?LY?q(y`IZawVX?qMRU)VY@OpRo*4etqEl=|r9lLw&4hF<{h_V~VS;w4 zYW~}RaToit4NojO1Me_kIwQ1YPXrO8 zVvf<{6%MnO$x`RNaog{iJg<6ks6Ug!awGyVn3|FT4vidXa1m4Ka0(sK>9vO|5=SBK zfzyt!2%8oIJ%?9UhNr#l;5#L^*S32C+iL5A8pByOw%^D_-od$?O_QhWO}M;Vr$lmSU0iVg79zx5(P^+WMRtzvBGJ_dS$^m zvq!1AtSWz9hfcdk(TLpYDNdK)cnhXKiCyzC0m5f9#UUQ@SCC&;2A8ctTMn8F8{_4x zQI}IE_1q*?M@$UMse!Fe?-BI+Vj(T*T1Vk$F~i}?x>{2-@cB^=)3;&6(W$_PUwSNeuR*TQ#n2S8G^b``>QMj-!?y( zZmoV?P1^L7R73QLTMWdeH%F@?KF%vrq1Am){@HEpa4Q@jVZ&!D6@6oVw%kZc- z4vc~OF&tWro0a9pF_on))^U$0hv%g~j*NX$Lw9rJ2VBfKFe(W?^fc3ghzc*gnR0E` z^Im!S2Ab{OG^gzME_`&#|2ZaNgDmLEuCycA-<2&r6e!qY=?lw<%J)y?^+EZ~r&4Lh zH*dEcI6nQ5Y@_nH)t13(rLsKNt7k-g>&NPtAo08B7{ToH5xI@7K4$d+PDne=5(4h|XgTI|-QB<19&cs+(+=b6Ot7+sYudm9@k0 zhzI)m)lu_K-s66(Bj(pX`@iFEPF_)OKJn~llhYNo&0i{#z&b5XT5_oq_0Imi+7*m> z<(66n!jtgtVmtt@l;dcsW%~cey_%LxQG7nTTMxg|3A7~gX9YVO{k0x%Etn)t<;<0wtTIRrjeq;gBT5Rj#WcM&k@#pq z&Oq}NGg0`70Q%)Ice`KoSSjUYFiwLC7bFVuO+bh%Mc&L`J@jW;ZG@IlAGf4HR=sd! zJR=Rcv!jA3udYEwe1V$tZ`7WObXpR_p>{UMFPT`C$zO6elUxj5F;S8w*3dvS5Ppf` zdj>YB4;6HI`5UIuGY6q4bL6p6d%UD0F+)BT&pmD?Glln$EwHt1eDQNGz?R>+SmBY% zAoqjMnzD?}jr}jq*P!>IiwtLl{Uq}6PXT6OZ!#TY${cN@=oCuIzxK(&9AV+@RXwCW zv-Cudtiv+zDDgQ&rex9&!+^#H&z#&t)<-CwY+j5rpZ~c$k z2_VZenI)OJ*|Es7ZTXbxSe?n@7Xo>Y?S)mL*y$&^<{~HNL4>v}-t!a61}`gEdN*52 zCP{U4oh8@(p{f%=#=dbS>3B;#W-8`s4mo3{-WnLqQsHoi{1d{LfAICO^m>9LJ};dm z7jLX*1^aEEN8erTEY0&&o3$9 zG*)blz;(X%O}?w>mz?&4226f+`E?!TlI4LXEn>xZ>nLw8+YrVW4Pq5G!G^s~GX$?h zGl%d42ze}0Y)`gvVeeWhlRa3d)R`=#l6#2t5JqqmYKwi9k<^SBnEA)IH~6@I*a{W) zq&Jj3(h=}J@nxxAS{S(+mLGlw7GU4La(Cg|hqwhf2zElY-_tTB$^#NzcdIsINzCb& zK88)79}9=EmCX@3hj>aM*7OIf&3lU^P_;jWpihE5OxK0cP_9t<97Grq-7+wJRz^sy zO8MI>XCyhAiCLn6D2Htvwm8-feQl2oeG>GNT-^$W+yXY(Fsw`8U<$S;I)9H?A;P53 zLcmfx*ze1RBIT$8_nO{yOt>wFC_*#(C1>)cbp>n-uiSsxb)H8B zcBOmqMm7T_tO}exWXUkJh5a9v84Iy zVN8OoHKl?v!$^Kg=c)=xjA1Vggd^|(WLO|cPEp-GY_73z2F_4PqX-Bc(qZAVv`#AK zH0;|(eYTCH6js>8+eEGcd=e4Ca&fWchY`V!Ve{f|=j9qI#A#L^Mqp<#>~jfo6J({X zMFsDMZ^m^pvC1;%bneT^;&atP20PQ*Kqm)M+D5hR^HI`1nC|n5s0Vr=O?dR>22ud8 zo&|xYslrcc8TrI4(svBlC-<3Zpf;Klg+COIwRqpk1Ax z1gwWyuTQ@rfUbCGq_;>H6C0NIjOQ%GDT&z#e zwl5kfWf;)6AJ?Z+pfHH;)S4B$Rt+QZK@_b?oBnB^1EJ7Z3@XTul>4hm!dy zI=TS8EF;~O!=F?{Gb>|zT1JZJ$RXiXF=N0-u;t%ZXy6q1X-xOT39cixl@sWWkj~S_y1s;tzOGr8ZLXk-bXb<*?w`WOwb!*t1VUKk!8Bh(PKmm2`I_-KYTMExi+*c$YR^>UwIcf0`hZ)jn_qBQXU&>x>T2 zkF5i>t{h>M#KZ0YSzWZSel_kRc&N-Q=;UF-=qhp?MnWl~C?FC;gCfbwQ4w?w8?nW4 z^C0Al4v~P3NW(Sk3veWN!#G5+?O9TjzL1cKw8}+~NM?@cUxOG6S~Ignmlj7R|L~JJ zw&p&83(SU+4#+F@l9Hf$H(eqEGe<)?qY<3ZeCk7*4WnjzZ2I+4^zmFlySRwVaC`h8 zXgaMk@~5cYf%u&G;4w@aj~{MO$PW$FIL{JjXbj0$I{c_qU0{-T*yZz+izr{%$P;xi zsBc)vJW`D0!}~R+4yJzH*?QTVD2YZPR@ot`5qSg4a1y+TK-LH~I9P)!LKY2D(?)8c zC-zP5Uz(rr(oZRsLqX_pF~m6Q(h!@S4%@47c5?L~7KKjXGRJ5{gzUqX~mj2WB&!QvQOVmj1mI(|#A7*eO*r!4SJz-BYpf0GVjgnUj z0a1QLDh2W#9G2eC9_Oyco%^K5yP&6;uB>%8c>x$!^3mzOKninD16CGb#D% z8?ga3sX^kH7N9`xQ~+w~3E^y3PNc)CzCC)%-V(=fKs#qGU#S9Nt?_~2BHVThh|o4r zw4S!7Q2yD{YyS(R3kZuAi~Uq1y803m~FFL@1_#0@{I z8NQ*=A2S|KCXWg*jnY#_av*#B-jD~d0crNwf*Zr1fQ%%RC%WeEPXM>*EUH>#)$%ytPWH7ACC;5@|?@<)R z;wP3x)&t|dJL9pG#gbp0F2*JSQ!~2S;Ne5^k=&@zrG#o;4LiB?@ILk6*>FY22y54+ zzk{W+ndXW5#tV(++R4vb^=ouF!R^10>OM$>QRDg_Q^e!tjb9%(U3I=bh4m_|syJGx zg)Eo!!M-nn0+z^wI>Li;2M;B`9+l2NIkXtg!Jz>>XMSvS>Z*&-u2}mNE~dRkVZSCe zP#WO$TsmT9zR&!3qZKVf#NPJ>=pabx8rMCrQVJgKNo2`PX9mF02lB!C6jqgzF-UNb z1!ur&VymH1IxXbevhmbv)zWGfXvt(`{uzmtFx%SFPoRY3nqXeOl(G%QXsJN7l}64Q z^@lau&b4RvOBGhF)I5+4VZ}G6+*o|;%<}6!jdKuBWUsy- zbb3py$%fXRL>m?XjnPuHa7w+WEi1acwS4L0LnTa*NDx>(I$tGCP-lnlw7F>PXjVrZ0|VRI~b%n8W<{gS(_|o$R>lFgL;%cSo3$R z2Yw0<(l&Cpk93O0i?GA7Al-?boziQH0wZ_y+-&soq9_!%vJ!WKD#HCVZ33pr1$K7| z^A>`eHbRJZwY7`Y>XG3FposfbiXM(zubMSJzhHbK5S_To8e|WY0Xk_ezInsO@f!Hi zcQpw!E+zsFI%=G+U$u{p*0peY8T8G`aZO5lD-#ElJ32|(E4p`H2zsvwBAMyg8w!iM$S=G7k^-!R8`NeDfbqoOeKmo@@&1kYrvr@KY zo6yQcWcDHC!?#$(M2pl{@;oPR`?Z`-T$98|RL~ZMft`2sR?g*7R+F>vXz5o?7cq-N zS~r*eOXNThNP!>u{WyFG$83AzaOB(ms8{C?gXOWvcqL`qdJA=B{zmzF5Sw=BC10qs zqVsniVE+EoT+*s1)4Y^kTOt*}4IB^#=g?scR~!$te(7o$6zM$>E5?u3Q=9-kUlZmF z-%4D0+qc#iA-IvkUydasL_H#~WhiWMH-p&eg3)$~po_ zw2>P1NI`z2eCFbJ%lWbnV9JO4zgS2F5KXzAEr!5&_$V4JXl?~+ui-p8cJPS+zk7+O z0N!Lp;q<%WmwWWNxmjea5GuWp#4%ASI8HX+mBRD1ms!Sn{E1wtj>6sZ++vtr4;;pi zEbBzxjv(b*JU_+QmT9a-F`r3AmkH%P@K1i38~G9^-wA<-%T*VyZsd`>O>6S)Ol&N? z%fO1tFSqyG(gOJ0!r)NH!A0PC3K7&~pD+KZ`zrJ6BL|$8kk}BNcFLru#IJ_d1CNt440mxW!8Eu12ArwYe;YIGT zB|RG@;X&Ya9myLKN+lAWvyIb?2)C;NvS5?}e2DPZ+76V{PJ#wjLP0xvWl%j8*T2x9P|u-X<5D*c=P7R4XzBow=m->UgaCp2h|ix;bM$O;<)r2$|-}Zo&g@X z2oW&pdi-Mq;DOKOTYhX&%ji7+=)5@g*@E9RyO(0h0AFuO3idET)Rp%mqyrjvM$XQS z^TuHp$4eMsR};>H^0ptlTF^YBXaed_>Sbtq|cnJ6cM z^(-{EE?j&7!eSKqq#}GE35dXo!th!~IV3kyMB{i^0t13^UPO1qf4#+M+V$|cA&qg7?;!gEK%eW}8gOMBXWln+U|LSr6djRgUZ;wjNO?}AVm)&H7K_4< zMLGnVLK&OX=Q5QlJdzg3QgKOx_tQ})kQEX(qq_!&kx;bU4hx4;@ZtGi;|?W7xDMNt8qNF?tMo3#DsM#B~3v) zUon++&}qCxDS@2&`#UYhuHe8kmrAE|_R(yh*V*CTImcLmY!oT)iwn;264iGCuKVP> zWPD~Xbw-SLQ;HRh89k3MH_;@jY8eoX7jM^-hgjhdV{19nnV7_-|z^fLeD@D z@|~0CERRRAhF6Jle=_zgON5fWVb9lpIxqn7SsJewzdoc*qRP!b&Egq*vLEV0 zUS+NP&5Bx$_L0tQv}bW|Yzcw_(CePhl}w|MAsC~>rWWwXX0&F%eS2beyj-`=?N016 z?^(H&w^U`yw4%iqzneVeLzbsp%=LdJ}HIv0Sblk1!%C8t`FnB)4-8ECLI{bo&j=2mX2Uv0S+ z&9dQXH^}M|4a*?oqSBc*F3eP5G?PSm0L=VBg#gCrr!rKQuh6STbc&N6t0BJourTge zdHeUox|1n85I+#9JS1spGH7Gt>}X+jgsl!+J!M!+LE6Qx-=HP z+>kt4e5=LPL-c^8io7s1NxXG`e^mTWJSikO-$&q(ohvXsI)#4_iJLB}@SCUMr>gi7 zmab6tgtv)Z7n*uk_o^6`2UQ8KAm+2gapqyJtBy_ zqd;~%q{DW^u%vLwDqBZRht5%ZU0|a-Jg2z_@@a?4|43d7m5*^yNMDPV`N$%P8z-@DY6o&xu_=c_oS+Q7xJ#vm=wDc zoP0)W$2%buBcNh1|1vI>CC64EW+sbueSkg7?ByV>MMKyqeU!5oGbeBitz#4 zcuslc{=h$ySq$d^G)naOjsY-uhF3eG41H37^rH)Zgl16{c z+Gt6j+iiZh$wJL}4C3M0g0EBzc%L3ME->&;>CZHL_cnEk8RtqhN{wdT1kkE7of;Pn z%sUUAV!ReT2oxO_BW6jWmaEWr!dLV|p3t>eI=8Wv_~*B48@4%CFWqA6H$-=T4WB29 zAE9np{uB& zL~AfgIV*9eddH{>{_y<~XVG!^G;{Z^6b9kyWozh{?0NIUJxc)Z$$i+`-~dyg?ZArs zG{?ehzd0h;$1 zMGxR$;fmBR!ifw1K(>@<*e@&Sy{Z&_+JdVb)|kX@aLRBUy-t4G4b`yx7?QcF%3@X? z&3_qc+$PS#_i7I%SoP8SK|ryQ?6dv=qsL^C14y?0&q`7mR>Y&^wio;GPFbvN?I2w} z_zh~HONB5skVRP#=W&+6H9EC`zweKtLsFo8%IjYP{nBBIq(RAN43{lRIPl1UFskUhFhd5?3sT<}02u{DsTcBNh5`kI5N-iMU9jPm^Q?tt;{h_Ekv>V?uSJ zE44a!?C;yi_(7pzl!xDG<+Abhk+Qyn@~>}5->F<1xmr0BC4k7tznkBEY$Qzhr^trH|j;!@b_e=wBcBpAMm~V}0_MgB3y97@<^3stmk5>Ys z2GJ{rkvpBgW(N)|`#JCzptu|Wvcz0Iqp8BAzzY@_k{`*G7>m!P^qbUJ)P(tRja1S7 z1)pMk-=Owws3G4|>ePxlb(Z zD^yA8hGhKLFE)m?zDELINVLmdBYEl79!-1xyu*@b=tS>nzcMW>zE3h3bXl&iFyV=C zY^;9XF~9q(aJsfu?m6IbmZ+I^ilaWLZo=D9UdwuJB=W3NG&DxdsK-&s8OfSQ2GiTXNjeEx_}0qbyMn)9IJ+ZYRb$@Ul7?z8{1YAkATR=uVgjmyTb>O9-DIvc zuwx{{j4k1gAF(fdhnQR#eg!VgUtm!)V7G_leF?~aup44tL4^Nlke~-e?W4zt%KH8r z4m-9=TVo)hv?3vflXfD<1=kv90nF@0%zVr&Le?y20M;`Axh8Y8${M+s5(S`}P+8^y znwaXP!kHu^vrFMcy3A#IA>F(ZO(OP<`3g;296^tjc?e_sHA&4HQ;43<4SEfF!^8nw zJHlp$SM|cVnO;#@e-VK|ojkYZ_?oCl4)MW;X+ zCYE%57Fp(!CyFeBLaU8>Or(ObgT@Pg#^Mz|6D_)XGPWM1%0(BJ;>25zs?>e+% zsGPU{Y1pm4aS>dO-%03!{q})+eqq?R94n!LN=@dtZZVo zpY_%#4^dC;Ly7BA+-4=l9yX+ieAfCVa zTSns=ORFAB=mRz(3V~mPEi5HV#*E7YY9til-X3Z z+w}W3_o$6hV4BgI9U~-9W8IeItn~Q}n%QT`r=Frl3QY(#TgJH7k7c9GLh4X^lH8 z-8(3vMgKevb_`vD)@b=B%j_l1Xy=;~j_+8q<`^L&_i+u)T0Q|m(R@O~B?6eFnF9TTQ zU+$#^{ggIx;*BsaWVe0C%-zSeUlhAnYyo4qOj_(`#s;>F!gO5be^=+3QTBDBrG-_o8x=+LR|WZ!SRJg5Pq}|T&Ir~ z3&VLb%RTumg*l*mGHCg&#vw|wXX=IPw28}4eV5rPldi|6Oo!n=FhH`fh51js18uI8 z-L8uU5rbg{ZVh)y@jMJ(f`c2o&ob9bV4NG~?@spnKfIEBr#zmTkU{jHgxrukn zAZN?MP2UVKG0%Mv8@3a4ED#}+#vZonwZA)Gv-XMayvl@y-;@~!I2?D*T&w=I?p!#3 zeB@<%tZ1*Ly@{mr|&sv zTDpA&ADy=mf4&1s-|{qh)})%9{IWmUbbHkN=7jP(gkTaxx{AU_Qo|(dHI@0n7*h`o z4{X|y5JQa~A?C0*?A^vC)Zj8>8V^~{0_?j_PNOe5yLsJzrl>IuAFcvCW^YWH$kB7_ z-8%Yp0GpGH7j?jJ8qg~b4gRf0TYlSh5Sj26NcbZGIUqy;`~EE7u!rKAad1Vta`J~I zY96s5YgaqFeP`>da*6hZ0MIM+0p{?NZRIifN0M?*QV!2|yq*-oY}bA#nzx>yb9suB z5GJ)##&-o8%F85z*r0fR!{nl7dBnLz7^h&*_fLm|Q!caC0MC67n&)8Je$P?alXVQw zugE!V^8LcIkEBU1*9ITiRYNtdQM&sGij7aaa%{ZL^~^K!yut#!?nM~p*A&eL0-RM? zc$uH*xO&*Vcc^{BxE2nlVn0oj8b2+cV=WM%|0BZyuTO0_%jgu~x%$WxRe62f3!ag` z)?fv@uZu5$NX=Nt-95A#K2s2!KRq7hzHjBfjyQjMF61D~nIqfMDMS5=K`u&$8imag z4PbY9av*EG>cvf`E4Ui;jEP)Uy7w5{{y|I1tJwGFqW+nTGss8hpLxH$B9`yw|8gO} z{EFYbTlM6evbRAaS%yp=tJy2UAn36|RBg}kqBi4Gork&W7`a2rO*Vi6YnuRTUcs#$sKZWGk>eqxskwVlWH+6r+p%1IHk<6FZs^91N6Q(P z+v+yC_n*G8*irO;&18GYo%Gt=|I$3%%kk9==@p3S!I>uL(`zUKF1Ljxe@kA2&*PF1sjUA zeH1l~tw;t;#Wo4o-9|KBNi=t*ifvN#!~S)K`|oqoD_RhMakV>{O!O$DHH*XdJ;x1s zMl-hvKvjM}`@E&(+$Z&5c)gOHqFd6a1CFlUQ|g zTlKjp%WE;Zkhb2A-FcHol@1w|`E99nt&uFU`l0=pYN+@}e+8a5ZM1k|3^^6GP~Hza zH+Dy2b;Y90oFL|Sjp-2Fk_Y0=kIa?2x@lRz6wLT#F5fW7{h7@D-B9<3ybZ?O{-;r^ zvYmGM=h&AHXYtOjsbz7voptglVgB`zuPO*?`=!L&gwq>7`xkj*w|9w`NJ{i7wf8<* zIR5G1btTTyOIk)0(AiC*sp+5#Dxf^O>J+u?o* zKUIkm3cv-o8&jG?`LRp^?om->KxblmbLF2wj=Q#UiDB=6{%j5=LI9jFEIBIln6%?3 zW8h%dF4S!MJ*V%Ce}|L}dN%w4EKRa0@2-InbK21PVtPmC%03jj`-)UgCjKu%+yNUZ z(oJ3!xKi9p%$;ObNQFd;fi_)R@!*8sB_J@M>dihstu*AAM^ zN35M-$-fl zu;+HWQ=EfVep?96R9_rt9kx;myM9}mlWw_Ip<=pN`V0MP!;kiMH%Nj9xzD?oC3=97 zWHH7*$-^s)w6I~>Rip#!oI9j1*uUQ_+M9}TgG&sL?rD%A{MJd5E+i%Y3&cUZy zDN^6v!cG7*c-SIf7MV&0{IGES(rBW*8T21182?q>_)l-+f44KxJ@BXF&;N^I_@7h; z6bADRgBikLM*d5UVlel0FEq?xFsm5M4hD0A!QA~nRKtI}chB(NQ@!`b@4f$f4*?$? z{x5ZOe6Ixm2Ne7d7W~h{e>?2x`0((**7o7S^x@&~!NJ$V!!L)2%}49Shx6|aXWkwz zryp&VA0Bod9`qd^d_O!GIy@LXIG8**SUfn`{tuD(|8#$k72l6_Kkh%sApG`Zp8UDL1p=BtX9oBGy2pIUDlTW_0M@0yzasg{Pj_WHY?%DbWbyQ#N# z>&QFwtGhprcXzfJjLpBw8iV<_vch02F_`BVj5!8lioqCSFiIE$klxM=%r-50*Xq<64{6PF+z^9Qw z;b?$l0zfGPpjQYmEyJ~{dEnf_;?e!sYf#jCOy>2XlJl{q-5+hUJ1tX;oH~Y@7Xzfj zU@`qmh`Hxsu>Mh)|4-`13p%5se^QdgX?m4Dl?D+=sYm1S#H+rLZ`I?j!SvE&~1rFXgF<&fSl;=5rVbE-E`C96Zzb}R7f9|@H zA{oqQWPSc}Kyy&)joWO?)yc99CQ;I9y4XFMIo;5kZ%It1omlIkMLs{zWqzsm*}{*N zWvrY_bU&jHh>~hn$wpyv`Sq}@-#2SvsxLm z7!n446jhX|J}WlMu%qO}Y#fys$?qAPJPZfsM(jDfmnEMs&3o@)sw7VRJzuHlII65_ zSjd^o&63y0$tc@Gl}V}1w~zJRo4W@qGUMOaR|3tKZt|5RhEEYRB{?g$4?cLjA z6^94a*)L}+YI1!KDqMUM*csePMD6&H+L2;ql7o4Wldr>?b4D$M&jKEH>1B*P_?9h$ zTkrVg4X4Mu2)3I1%5d2lfvU6PdE-XhsM3$c`}*IDWzLQps}pL*6$Q+$o=R+gm#;H+ zDkCw!HnNKG4B#8Vz7l`;jvz(xgNA0Igyl~&4kwlXVwpY9#-=+p`o^xRotG|zRxPxx z$AGuWxGPNrJQ7 zjgZE4hQ#(l8ovRqUuvHt~CFN*Ii@E7%XpU|8pswpj(ybs>nHu$+h z>=eO#gvquYNZh@N&{U)Ad}tUB6Br1X($;X$C~@931>enj^szSi{w z{uFtUM4ui3Ppd2uz`413Gv|N>FUJBO-rs@qo}ag$mVQMY@X44-GcezG9Nb;jef79J zyoV;^&!rA3F&T}-Aj}Bn{4(W;G|>F(^Or8B>z0VK~^MrFSj+D2X~3Z6#IIE zhSeB%BsEke`Z^`DbTrm6EtX8{Q*z7Nv25vEb5K;+*N&$=2|j76Js^=%$zQ#)c~ymE zPCEUincPXy^09+d=d#F67thwSnAhu^X|j=GX39551|=KHB#4jP#UJ`>G7TM?nl=U!Ohx|BJfu z|9NuUKMHdKrq;#bzfqXoJg{XJ*J%tP&y+vBd>aSjpt@I>6F$5ySNoq7=2m8kUf8#L zg_*e!f5`4w=KIj{W!wL%FfS~l$FCr}`X^W=+Tbws)qkcWPt0`5!NUKQk{l-kCu5I} z_-|5@DIX(MBtjt0BL5{N`RhZ?(>V8kSD5)c6W>TA!~d0%ED#?RzfS+~pOj>Q)U3r# zO0|DdlF#BRYyOpzEV+G_P`O4-t5iHpQHFz&8I!PjO2A6*RlxtW2RjC$#zgCa^Er== zE+I6Hg#_;PM7fXF3jTI(_}D}4{m%dgU*+pjj|~2&n8j^uk@r16VM=*dhg;lc;p5gm zIBcx9@yez~V~lLClc5^cmw7UT4lSWI#izu^3paQ*lyZX18brEk??)zKxD|b?P8zRF zetb#%9HCZwC>S^Qt@Yal;(I_O6T*si2^}f6?*TH_{YpDu)>!MRkzn$pZP=UPX+$AB zQ7kT$=By>MO)fX_3FDukz2*9Xr8Os2+l?O;mlah+9Zu%DCipWx{jh+scqKyYwe7NR zP3~wy_e}rAt&FE%7-deaq{aRRdw1E?)))7UKDc{ZoI;CRX^Xo%lv1=U6nA%bBDlLd z1b26LC{WxbxI2WK|8>orxgVW3a872jC$o~Q?7i}2@3lYc`y)R9x>m#K*zi2pT1F<$ zc!QIbj=r@BtW#3nMdq@hGJ$(Gwt~BP2|owfix@5`HS#rmQns0CjqwBm|@A5aSGMw=P-wx!lk$)}IQv z$a`^L=E)MEYdtn|J8T}+=y-^)Y2PRtX_=OE_uJI&y6YE!pGRmuAvH2NR!06iO5*Ws z`g$5z{YZVvQ~22HtBaQ3kq%qsZkUd&v~O+DJ-KW|n63D}*NG)OeB^Rl{c**%7fj8N9Vd#&KH=2$8U+8^I zq}FtYGuU~H-F@BUh*9pkBSl!i9b?0Zci2M{FBe}$_VYm^H)XEYL=5(_n)XEv-g3ma z6f&->uC6?OmW!J9i)gOoiJncaK4Pfm!}Jz;(&lY@J{$6la7{XHj9NW>jk*u9QGS%Hm3kr5?A|;y}*BZPDQug)pN)KJeIo} z{yeV!B`4OA=LJry z0jcT1fo|Z})Q#YIC(|=XRub6G%qJY(D3UiICMkqT7BXc7c@Kn`{BuluP2Cs-%7}vA z-B_4XhuF9wzlL*gB@lcl3h8YO@s`j+hlVbq`J1px=aON>S&8{z9(VVie~+w=Ou zb`b|8QHU6zI+E~fm_9KAGxjeDGydt7Ew-0vY^J_&(PQ*<|jyU{%$ z$~EAJw%N!2xCz-f?fV2RxmX?2nB95DE3m&FMm!c@g7HFd1SnzdP25|T*x)4lVD!Yl zT0YWzf$O`tS$B{yKKtzgKequti+NupQXfx{Ymz&XFf~$Evb%-5r+aZU_E4g?djfq@ z0-Z~&6<-h#oMe-gBqe9^*Uj|u3=*Y*7Par^u!qCPYq@FX_qI6Mh8H<2IW31T<#rce zUoI?sAm&?BB-KzFb$_UXSyB*OE6&C|u2wF*J~?T>GqtThHA~iHkI71b!E%Eq?YDWF zwHxYCaoUJ`%%9yfkK~Z4VmH!rw^BKS`Fr3ZpACZ`wnZ z=gB6-%)hL(+`acUbxEd@Peum2; znhu$!YuDq)phZk;e}f0e=|k>PBtWj*i7pcjPEy(y&Xq-b_j#GHENL{;ze)L#P5EmK z#cHl5k#aUvCEinoz`R>u1ufTlU`aTpXV!qd8nIIZASJ~ec!Oc=SK<~hocW+uMC4Kw zq?K2|U>WLxRO4RkEb5$vUP2U-v7b=vTaZtUmfZBZ$AFU2#Zs!~oK?h79$MnB#h;PlQ5MHvoLS^# zqmms7shs2YjHIq4k}os$vs;$;F6Q@GdRN}=UPv@zzbEf;QC|q*$gE-n^Y|HKWk-e$ zK%bl{4D8@V;1EAF`6@LT=gs6&9+}Fqhr9)}*g$5)fR)bltKzY@nq48uN-NL7HSZt5@7Ses zDJ$zce?DGl1`5>A)Xp?+(O2|WW#>Ias-;0zA)ALBgwTjXd{}GV;$(-JS>{^qz<|p) z?<;JFGUA7(a)+*!>J?Fh&nVz)umlxb)Hi-i33GR&H^3*2AF#tg9wzi&{HFGl~@ zEHj_9SduER*MNl8c#%-c^O(dl7zk=fUPZOR9BkZ837o*s=?e`MwrfgG_0l0XLC=Q9 zz-7}}$eSrN>fIVbKeYgt?<+S2+P8nT?|QcHDJ0&@Wd2I^^?5MF&~J+dw;4j)$hn(C z&_lMa+Zx`r!yY>T6rG5z@kH*xqr>vFL?evoOnu&>g~#@skv2u*(4D@HmHir|v@WvN zE@ajyGsfx{lEA+ThFGP!?y$~ltga=NE*bp5s{IZMik>fF?NqGb4@>R4W=3>rA&l6~ z%w8R=VLdNq@eXEjU%h%|726RoLeWOuMOY0nXdpsQon`yg4br;Ka=o^Uv444c9FuzW zutOBEL$!Y;I%9O8)ATV5s2ExHDGunq@FM>_0!p*?%n|p?QAD9Xb&VwV%y{C%EuNYX zX8UcHt?gI`K-vQoUIT7ny&j7FC!t<9o(8A{MbSwrK}Qh%e@-C50qdf8`KLZSOG`>G zr0}D`NbDi+X1gtviq9HD7f?`=;80*Pxb#SuCTwu2cyKe+wSlB0$7@($Fsh_=c;{^x zivEx%@5r~`BTB?WT2GM>?4I1^wtTB$BKhI&)4s?69$=(ylk!qspVYD!=i!pMrO-RA5K#Je31m*M3&>v*=D8nS~}l` zBQTz_1mz%!->k(4Cm&nBm}{|;&@%_?U?G*Qovm$ACnc*@d(jt|RbZL3la>BC#3@B< zG(c(S58D)@+k9R0e6-u#XxvZ)8qVbv@n1G^N0GxZsUxP;U!lO;NX;)qsX(nP@5z zZyf<}f*`0kDgeKoGxe!;W^q);cWSyF=@S`IXLJYMo6C4f_|BbLw48!ay%_L4W) zy=|_=_o#I8E_+j+#&EL2=+nT{QYlAO@V23RRTM*3U{jTBWvV2#gM79WCnS`)YE?d` z-#t`*FuN{kd?$X5#$}7XG~jt9QBZh2AS?_O4n@ycho?2TteowwPU18z*dMxYBY2uz zVx$a{RmND9flhFPgtN6*hiS)C!{9sn>C+rSyUHvcD7>wB^GH!4jT3G_E*}HC3=jf4 zfdJLIOZ&WgLf8n2>29z56On2;b@(Nif;#MS=Iko%Pm6#1<{@3H}uP0MHJC!K12Ht36MWpLpyc;5?r7=B2VE zrHAH|C>TRV8cIs)lQ3SbN6^YT?!s^qzU_uS53QUYE1Kff5XFe(WOE_zqaL`bTM0ea(8$GCcDkzy}i)haKcM* z%e>7xeVwzPxC$Hd^&PXB-&`K>wjb=U0N+{u(J!U~M%dm&i9pO>GA$P_&{+pUc<<&w z_vx8w$rJafpOAX+9w6)wso(ZD;hxAyWnI>~*4j#WsLfy)?AihQf{zB@UF*?Ud(UhF zv#;U8lRadRGW3r8Da*<-<EmkxyXLX%8a(v8$NE zi9%qM^kah{L&zJB{BYT?lEbr1A$71jN}BT}jbF#3zc@1g8&tTCjH?8XR4w12@8Eir zAONK?;}9ZAHZ`}>QL@$Oi5?<1L_iBse!=<88KhDgD6)2bA|PL$fWSJ_EU zGG4hk4a;DaHN(YZ&oeH{xoX40Cb?=P$wP(~GiaUIC$4fX!dPC09Y$iB6~Bvoj{SJ4 zsPO6e)7bu8Eqe*Kt6=EFReNBGvJlPD0Z`!McJv_T80MQYdaV3w)GT~1%kQk@#=#%L zI%g(6>M`h)swzfGar38%I|Yt?w-zy3sN&7=PB&^83l-SDH>XOeaF#vRPKC#>>=@*^Gfi zb+$^x?O!i=lX@U58k{;|T<`q1A_T~8a^A@S`7Oc~$4kdP#x?GyQzRB6;rPC{f$lCa zkNyCr+V@+4)4x%c?4d%D`OR*C!v73%6;zn=h~jr28;LR#`0b*LZw~v(v+(z#Gj4Xw zi~76TIoKM=g;O~%R#nvp>7t+9RhrWCQp<8Gu*1xwZcYTQ|0*H>w)+=N*ZPSfe-Idh zoINjX?0jGsNang7N}tX@4wl}rqmpAWww;Fbr{~*g@=*$=<(OnxsudvL+6>EW7jL%l z`4pQrBdif%k?ty+*lyfBUE)Z5yD|X%6xX?Ke=%Xr|99KL>5`t(_WgW!Bleb4!d}Z0 zL;}x<#uWf(WB$uRJ`ZvQn%bSR&LpjWZQW@7N^*v+wMEU3;`jD$z+B+seH7>G%a zXg?Sja6hie5x7w5m}Q?i=_Ov(9L_G8|3mKisF3q1Iq&n6L{9QkArZHjtsnAGXh}vk zu7Io5P6NxN zZunItMf(Ip8$o)x-WSQox97AE3I-ogY9+@g%vdd_*98i;15e!pLkzNjg1wW1C?%t@ zt6)8~1CsdN=;>IZ(pA-FUVI*lv)HU&GDiO(;o58i;m7b8DMQr!;~%~u#rpy}+^AUFgw8{SLl$(&S+JGU_v@ z_T|M0EXs$3QbrT!Ir4_#gdHMhZ>EZEngv9O@8l}eV+$k~l#mSm3Hq2vn2VRM#}jKY zkiWS>8W+_?(Zw(E4~(Nvz>he8fLPU9bj;0gjpKDxJuN!tNT(CPv=%ZCCwZBlso)WM ztv%@&$mMZSC?nc)JF^j%E&P!}OORPr$bG6n*ETSpR`-fTVfH{sAxxVx!$=)f8Rou~ zE8?M`J*z2EH@<_-Xl<$EL8RF<9bA51165Fp)BLdemBh=t^G~p6MW?RZpHRy*Qx5~W zV6#1Ojo{?6Wx|@lChO)BV|*wTYE{!DcfF&3nX9wOl1?>e163D`t>MA1b=-e#oXjWj zP9Bu2tn4bnQ*ztYeB`52xNN#|Z1wAT@yEkE=$qjNt^`jyNT=1Tux3I9^yJk)?f<&D zAr)R_yBUlQC7)`(XYiCar96g=br2D9JfMduG_vw`+51Pjtt_s?Gf1|(Ttd&}>7P^| zb>;^+y3GIVdQ$!p`%WEp8S40rV&x)fUNBbTvt`Xk)Fzm5m#cl1?%=O2M=@SWLaGnJ z>bHhpI%o&QxqoY;254m{$_y#^D8#0FW%EnjdoAUE2{WYl=hjWvx|&ZI?mcZx;oJ04 zP`3gNQ(|y4Zefa??`sMHr`-Fypr&N^%NSD$9VOF$dTtRTndZNum|I9Rj+0W#N zJVwwm21Zkw4A=0=H8oiqVlIn9#i=yB~2*-4SFy=EnEwI)FAOO zTv~gfckFzQQ4ApdO@kJhCNLGylxR*zBPWO6DW{JeHq|!C#}yYx*mvE8>a=;?E&%=LaQr#7Jc>cwb20MdCP{#0 zF-)YY34yLYp@M=~gB+KQW3QHS|O#Vo9_>v^#wrbITO8~G5J5P0z`D+|l zrxK&3?v(hn6TEz%wOw%gDBHz9E{%MLvNEsv1qwF@TP$I-CDNF9~2u8Q!3;z7yO{wg|r0^=AG(O2Qil6 zVOQal(#mJG9b#l2ZGC!nGSXh#zAY-vDLSJ;Z~GI+Qly8LZVoXqfM@G1;aXqlW(qrMrm%C^$DP znaE}uu3EZ~IYqga#X1hU((c4Q!*Vis88ee|`2BKaz#V+Oc{omtgYw`9s7Qb+80`yl zhQ#7xDsFcw)fPy)wF~{uH68AGcK}h9 z1pkl(t8LSp8%Sw5Nd@^yX}{?W7HAAr;Qx)>Zb~4kv)?y-C#Bch+h^FyCrKeznk%4| z9WI}ikp*;Zx>i(97gQO5#y2-nyvU-1Qkv`6dzA3oCOjN_zSP946+c64h=%P zSqplwd8!4Y4nAY{8;$aeV8e~SRyxIwPIflA_e76!*1im~0Ixp^cnlf47^W ziO6ocXy%;~>cG7VK@p3BElbOp%bZPan`5hS%42t7F)<9APVYLA6g$xIcQ~_VDDKQ4{fw$|r$O8QW!J zt=}os2dJDUDT6yc+QFys?Z0QQ<6M{GeCSiW6I7ucW1-WTHX54RALYAK`2H3J(@&0l z!jlwdcA8{th+TbzR;QE0c#=L{wV6Wo>(~$aO=5&HRkjsX(%)}5lIz*U)VL%iP-=e^ z@r|0zgZuInWZ8y)l@4U0SD9Ww2#)^V8vbB)CKdC3x22ZKn~od ztU7u&vEP%fh26lchW>K}^;ch>>wKb7UP%dmDa|%UInx-^vyjYUInT2~ti&vrn!2R1 zI)!47X0ZC_z8`t1A|kB#zfr_RgG9fOVOmV8(H<2O=X}C2ZXE-VBV(w!a!um9Yh;Gb zsfU9#lxi(0)2!fJP1ZV!@|1o`$n!XPsNvMozFd7cv_+Ys|G28t^A(`0MgseUD*5>8 zS$==NjzQdo2*QR4J@UD)YBaq2;$&7j-ywFhq=~a|_Qzk(c?&LBI*FJpbAeF$5G;s7 zp(D@Om@4TBJZ(cMV*C+Y1d)^kQCvbX;jqQMTvCs;p?*^+mdmk zUsHE57#t?(_(Etc-=VLlgeYNVy`>B{M$fqh*|zCw{Kahb=y33IZu)QW>gAF6*~^(_;KQ(Mnp6o_|77?g zkZ^g^yI;wPqQZD(=k08f)>1*>^1@r(rn2RwaE_QECzY$%;UTZk6PU?TcN35jp@_XF<%TUQ=`US55d;DUji#V zb)kLH3eKVohe^KP!y0hZB@NbnyC3t|mm0y?J~LGR931`mSS|Ll9-Ur)d@=;rSdgP> z{qY)%v&u_;t+xl*z%L&mtltoE(5;fw$2!q^H@6=Cx#cu$L+aoU8Mnbg(+0YRSp6|p zLML3W6Hr49yGs2jK4gV@`?J8mYwc29vF~p59SX_9Lg)Au)W9c^pQvB)Ou^knV)l>X5x9%v}Ni}l$E@$EQU!uY#(ux>kxg%UO; z_O3R)vBBIftpJjd@-FoX0jDfhSQ`!9kMCyh5X|S;hSfWx+e`*YcC8ckY_P(euzDQf z@C_%I9dnZ&GB49zz?g{^(0_bU@GZ<=7Z@=2)>H*1r4OU>hKXe?H#l!4c4~GY?D|Gv zG$mhRG5eSS^LBxRmhXnmnSCAEy^jho z7DfI_wI5`Mnh4x4__d#Awx7t}m|MS@TnPS`RtLOO`vB8V5}u44Jw>@f2LhC%{ERRuSdAJ*5;1}ekq zb}hQ;VeRmP4ry4mPe9+v_rhJn&*GN& z(lAuQqek}qYTUzM*@HV}a8|wTHN7ox(DrlZ=~Y3`9@R+{?r9Lr_VVQPCBfEY5czWa zuO9$FbB~OG2mt(FrQp7deK|Wjdue<5??LkN0`LR?US3(~%lOOa=;+Jd3smp*^8kPz zR8{q56!!9>n*U<>0^kOL#?Q{i|98U;Jv#$&1J0m&uT9*b@t3-}y1JL`OVI1r^j_aP zgK`77Z*P6M0eaTf)-Nxh*Dmz{+;?|=)~WqVRl#m<0B!(ad)umN>C8H~3IO0(svD*Mk@jwzi%-9z8od89y6eJ}nQn4hFr(*|#}u zoF}jcF7;Oh>*?wJJ04o9NaV(I{PaWOP|G##r8xVSjExe4vB zs#-ZMojIDTTT!D_y2=Zt#^O(Q`3CQRQX2# zzbI8J_KS{1RNlXeKh9)f7NUA;Xn^q#UW;F$OAU5g!}(2IrdF)m?zl>t~cvSI2k%i{PJb|5FNX!s_Vm#JDJ)=2G#v%5gC^PzQ;` zO0)*H)aXdGlM?l{8`lUU=AFXijpa-qS_!((N_YH?;9_xjD&ZWN zpI(T?Vc93jpC6!J8x4PQOPQN25~3VnCFbqzK+{n6&4Z&F5`rd*xB~N3@ zA&m_88aWMCadPon0_z7c=t=YQb0S$qbP89om@96}u}K$QV`1*fc^{o=W;M%M^EZQJ z;|daH54OB!;1ZkTTENJBdy%xq#|+;GzO#M`&_6ogr-0v81wYifC#QDmNFf1ecZ`yHqn98GVS&69O~XfEHCO_nJ_;c_}ChB+-JUCI3`;&^Z)w^HBCN3zxEvf`^*Y5{(%SV@^WcopJY*{3*IyWj)cL39Ucq;1`nvA#l2_YH z_|(>NblKoz2jZ#;Ez+0SpZs}^!LU8y7M55fQJ#j2Ya5O?oLQ(l({+qp^2QsBLoe6~ z(CNGiUvkB4gXW+jE66u@vCFl4C*n6)C1*fTvPSDWl6HJ{qaZk~UAeMx6xdx+ra_hhx153>^y2TxxxRx6r3ndi3&)5CWq|0NLHytHSr*( zjN{s2)15iYM0B>~=XHsC{6P>^=WMyhYbm(d1Fuf`xoQXX(uL2^pB*7{ho#qLI@T;U z>+=852Gu$3f{}=eqEK1&HgK|vBt$yQvb88_+6$Q&3{T@we zWX`D+6SopIB(Kz?<{GyT|8{PWL%Tj83b%j%TXg#a`NAO5X9TPWt8H22|4?dmT%qC) z^RNFAq+2_{bdFbP(!%^@B$lMK`zHI2AR`ulr;3yF--W1JJ~%**s0Y=JNw zx2{M==|DC0VJ6r`A&HM;7qRhSwlbow)L6-c=_fy+alG!0%I5&x$A^Dyuhr_~pDa1? zKl~e1uCGoUJ2DY?T$qfguPszMw)pk9IHkdrXF7Il)6qO9)mm4*0621p6rJxe@vm5V z1wSp1D`yc6t$XRmrKQcYtFQQ>OG(n6#S?cI&ei-^C_rHHaUK0zV>hvnHFW*g8h$2M zhdu1nNI{@g&l>#`$I})yUeh3a<=75g@@e~#s-|pV*@`LZ!xqvhCl=y48fw_n zF7L$sShRy}Z0^%udBz2F&i2M8@UnxI0>-Q z4{XGBszjO@P`;^_SYpI0})EtqTm1R#@2ENW^|O8=)~SbuVeh8z%R4OsSTrM>-2W zXsz4!=??%=AEZX0*QR!)dk+%eCVsE$fa#A5j$YOc!XNS?~n^QP~? zL|!8Vd>0akWjB~65r-Xo5#VUZE&n_a^t_{ZyauHaKCHVTR03rE5YS1y2&w&cc-+w% zty0kdIP0Erc8E!d{$d+Gr^NQ>dtPVKzBe*{O(qC+d!7Ld$Ps%1r97Ubod6_8H%yot zDZWpYD&EzcHYSQd8x_=4;6rm34CL{PH};afa}(wbGKIMrxFO7$1{wVW%JX`*gFJCa0zQBp z)U<-5=z}W~g0G}K;5uL{H<*W+mY<~-f@5O<56r`s#7j^XB7*KIs^#aa335Sq4o$LB zfO)>gz;c{}?zzn={KRp-n*ayxn9U$YB%ta-w}S?7MiQ`B(~~dBs%_q{k^yMUff|t* znmO;(k>uln?q4rMR0Ojw84SVR2+^bUy?Pfq#0!en@`EIXRn7YaG=Ods!JUIazc@Vm z-NN`70^N(;^5(-n6PSz;nRX+6(ftzKbYjAVQ*!JY$f%WwZs{fg4Q_;`>0fLjXd2=18+CZBaPw{;odmS!%dOirkI z4g)`ciOiCP41v8lZwMn7%#>{{nLT5YÐ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 YWMv?CX>@2HQ)6;vWo}e&M`>mNI}x7W#{d8T literal 0 HcmV?d00001 diff --git a/docs/img/link-cable.png b/docs/img/link-cable.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1422814d9ac7518d47227df971d5def4c2e248 GIT binary patch literal 50254 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 z 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%0DRA?+oOEo{V27pTk2Xv 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≦eFEAiH|4Lp1R09F!;dp7~9fzWfq@VBUpdkN6Ugt*9GP^Kxk1g@qApRvMHmAB=q0gPdJP~W3JARstq&D4 z_CPrDdn{JuAuQ0~ws3iS<`GPlV$)Nb1JN2L&7bg>nr8PWT$fR@@Gwz|m%i6?Rw;6- zWo0|lsvP_-jWLc?U-wu$R8c0^`X+l#S5=Yz2YBe}HvISJ8qZ={w3m+R^L!|6xkCPf z;PhXv;X@IpXrno4DbpWR@q_{K6ks8lSSU;#zI+}lVk~;`2}`k8qam)FkOS+q>)b|N zKt^g{rY)ICE@y^p!Z-ZCg(N@&IL*F~KJH0jRC1rIm)f9Lyo^%38yBuV&6P*%G?JETpT>4Dtmht@1(ugxT_*@1F zoSe5w$Vw^gyCc4_IJjd2`?9 zwS7OqPVA4qc-H&4oL3(hF`Mx4a%N}(EFb}P;~zXS263bT7LI_0A~GoDEc>^WL0r04 zLeFH>(#sW9fzzlWHv7Qa>g|7UlNe*x;fU^@PZ`{!B5J?1jF-~2*136&-gZsWl5;Y< zFB7M=_wH{ER(ne9)wbI(5bvM5{c3LyDCQj!jP1O4^rV(@xcLNK zW+tLC;~NZ~h-au~fleIHqRnhT|69J0*rOLeOgkL$ZP?quFDy{+RFBR3FBOw9FK9^q z)#6C%F^K`nPxP>AtCWmI)5%jm4HE4>1iq`kZWYMDfBtMW8-GyemPcAaI!foG-|s=G zQaQca8=GTxgBDZLS<)#8f{jR@NtUwu{Gh_$Xcx)m67aDHvSq?E@I#~Ie52ht%ay|* z)rK<3SsHE_WW_&oSsPrbee(UP#+N@3SN2ERILkLi%#Qpj=q}A5hLx0(;lhP|OMrcA z$jFe-oIH^gi^@zdhsIkn=s}*Sy=U)Is>%KmIXvY)=ef94HuAURz-q~}e871hY7iqd|?-F54DPRc{p;9_; zw_u&GH?1(fy8j&LORo%~BWA2I;N%%W)|Jy=(oY_|69k6mjpN;%vUH7? z)H3M07cQ)41N%Wp0|)DIcK9C#+(zWzUve#^_uJd^wVQlg22x?ESIx|ljLnfZNZ~dd zdV55X9Z$Hhbt6%D{L6(5N^9;fuy;Ph`JS(Wm68G{ix~o@P=aCH6P2?l)*>mA`aM50 z@=_ukn^#_V(b!{WpjgAE4nP;T(8al031WU++8dfXia0n<*EO8LW-Ia>ok zYUg>vEeky*<49H0-Han@2~66cZNRoBv^J3G<#ggOe*TqmU+elpvW?58GR!7-y^5qn z{g0G5&Z^W)syG|aXRABC=V0S%s!-JGLj!>9L`KO6?Q|C!4bK0nKL8TLRyY*Um2x)< zT-=0pJV^%>uFz4rCK2jpY>i!Hs&0cbROSAioKiWq;V_8yb)YdNJ$y~FH0qbV-HZf? zqFU13^2sSEwwnT$f6yc&u4h})KWZ*;*2py><0Fam0lF@k=_y(#n983Bv8R@+DA)l#0tP#fdja=htcuTsc$e?~G+3z67bA zNRWLWokG{nkj**>9K?7D7!4$!tclAC(IX~L6vF{HaJ{-O8F;UL?;g4vAv~vdcHC%P z(*5=MGL-$v_rc1D)<*o%+uwTsyMG=(fMPUjA7gr@E2SoXrUxzaWh8BC>Nai3sPFmk zSz|It!i&=I1ScPXa6)^9h95_JZ1BMHPOWsIpKw;)y<6{~I#U$KTz{=@v+{$KcW}oi zp>NFhnrC2iDl6Ag+}2tgADW=-5N1v$1%xwAV9d&3|8PgjK|l$!RNLTpQKX=Q-D@iy zY{58wdFJL%+fzyY^Qr>Yw4Rx&>PJ&AH&sJ^$4SjhCATkQBeB zi!Hqp@tZZRc_pl?%UGBLf$R!`Kub{rKnV%~=E-3gq-EJt*bMn*N~?C=Sj7IAKIPrt z_s&lkpYCXPGz3gA9=Y(rmg_E7Ad9;6;dg59H#1Gs`f}5=SmDThlV)wiTp#yH8Mi>} z!Iq6up-0`A&`QU2^P%gBH`8oH=oQq$o}aPY-O`FmB6aL`!mnPPEuT?aQCyba$EFx3 zAMpe}0WO$x7x(f;W$P-G6ND2-qQSF@%ANj7i12mGFCkQsm-Z+TtpT041w7j<4Z1`j z8!PUGvupg&*gb)T;^Xt)LL&Nmdq0XQEiOu$dKc_!T28V|JCgpReL%gB8Lg0_A#Z~= z7Q0JJ4v80Lxp*zSVFcPE^`*j*fQuxDUKrZ>I{Gv%FD9l>=kum(@7d)i>4uSty;2D~jI|jkHL07Yn4sS)KFH6H9#dwtL9* z9Is#b^pGhJkSXEGV#vnDa<$OcX)bI~s-*Chby zRX0Su0sZpxc=&~TxJKZLDw;|KV>^J-4KXY|_wRe>D!!|oi=m04g%L0ni?T^&k%oH3 zPglLmBP==v_Rz!^OIg;bt;>-oC!8E0*XpyVeV!~8U8+U^oft-%8>l^;6}hfmVL z)Cd*XO-RGf=WkU%7QgxPt0w*7M8EAD;polY5(#ira}AZi(bB{d9h8U$BDa{tr^l2NNwVB`?SX@T&|YprBiZhDX%}438s@Ib^1e z<@2D6w?k{HIgmfygf;5c_^>biCp8S#jkz0ItXjNoqEXpLR`jIo&W^gxr~&{@^8~hpZ@e zI0cOF2e8mljh3Q$0HQlWM!ZM-c)jZ_i@&9+%EMS3qiFo14~xEp9P7UsSA#5j7m#I* z6U%(gkTfY|{o9U2SW`?St62RyS}+s=0Ik4{8*>n=SANimjQ zr@LHE$`|q8tggbjyg%UTotA2Ih{D?_AKJDDk~XqWT|mM3#cjphUi-5z$uJXMh6Q@s z{ltZ9Yg=(cp{w*47kpNWsIYSKCA$4f4xauQqJ3O|uc?>CTeMoeo;g&5CmN>Nk6by@ zZ|OdMJN8lEkA(9H_a}cP#gH4caQh_V6F#?H#WNoW81U2Mz3-3)(y9&b_nn3kC2QFv zlPuuHEeIH6IJCdp4j>eFuUmt-*ZU3y(}f|S)T+2DUAp(pHeWr?PR90$C!YG;^i_m%M0 z*@Z=b1X}9N;+614!m$Xp~&L= zq0t~stwX~f<_@BVKnN;eyB|spme&owy2(tN^F}IOMTZhqym__Ot_sdX83OR+1IKiz z?@H7>sR@8F6n!~d)iA+DY&!hgVK&lG{|ZJyQwL97 z5VgFb5|%BG2<=7H(^NL$N}cND1U_;EAYtggY~3rl41gc6C3T=05eIEbBrqME2cgLS zoN2NtG%Nw6iJ;5H&_cKSwYYBG+&*35IJtwuqf-R*vYjP>fy&BKUhWkd;#5p(p2ic= ze+KsL?fv@YjnuY4Rr|2yNE7r4$5%t;ZPgab{qW1`?+O~?S0wOU5|RtBmPdEjTpN}4 z^~&{C$uXMA*fwz;{{Y~XjMcL+ml8#)oXPSIy-0kR<{u_do;uYUEbu@O2S#=7VRRKK z_`OrM8&_VuCZ9}xqF+m}GP;}|1u=S|F0r5vpMSlw%oXJYpD8avngKB;vT`M3f6a;O zT0q$*py~io-4Yaox{69uHpII;)#L7g*_mzIYx9W)m*`qqeVV#-i2DPMY~$9wn|crI=tk` ziFuEvUie|4QtI?G5|VZneS=g7a9H3v8)he8Aj()1r5wg=XVpcO>tBE8iW+LA#H(v5 z0!{w-$oQ_vLa(BkKox|Ya_5cze!UBfKB$*M6r-v_-76$7^;xvAlmhLvb?rhW`ZPNG z_HTey6x?;0cIcjKPnC(X+LMPq62unXdz^Q9n&9HT1#t(m$_%w58(a=)W+?t)MnwS7 zn!&$+;V|pa%5AyGmbX6J424aH6EQ^eGNHaEI^C;;)cN-G?y_sxuxnYtqSM!>a|OAD zaT2#$>)djV5X&*QW=C}t`7A9+)0S(>{0zzR1}T&oxdYCYq9r9_;eVJ$OA%hRRCxD* ztuqxeOU@JWN_|(7^bX3z097D%>Kn1joxramG|VNCA-a(i2qLbI*{*}SzPm}i>6P8? zm0c#vuJ;-#yMNjm&{$s4NRC4dFI^~B!PgYNHkxX59`d*tl)BkkO?qZ+DH zv+L8g8|ZubH;b;91nr+~=o|%6K6rXB1;pstLB>il;Emg0k(T@eNI^k)-c6~6qo)rl zA?x&v-{io_wNbr<t>_l6Vmzd%;rQ~{zz& z?AdUYQfb4lk0g4PUaK276Od_S2$_K35@eQTdi~$q;sj004`>=Gc6#N)bf#1zi&o0# z+s^jca_KtG#P{L=R3lZQ7?h7$ys!Je{8=4Iuk+WJu6+{_|51ZqU)eg61ie1`$3cug zIGphG$(F+t$8YZEajxQF;<|*XQGhH8lfZnHB&B&ZY@XD4=r}c6A#0e!^p_Z+E+_Hd z5s1cH%xlwY+brUt_}XI@VeU=Gw7qMmq?iq4_$yzo&REHA45TsUie*W}o%2)&p231S zQ8rXDTaWlIi9=Y3K&B8b|mcBGU znp{KQ$7f@<2)aZR_3((lXbjPW4K`*9dbP9Y-#qDfO25G}$W*yc6G_-+VV!CTvkm!P#K70m*9-0(c(^)K`c^S( zI3D#310dE1&133-HC4AsBedx0U6Bu&$C{1Y%TWxi4=_in>pjh)uhG!r5+Q-|WSTk{ z#0otR$X1Z8?|t2-a$J_uB4ueT5sw#*dJ;yXLN*65PiZ7Gn$*Cs_$=We87RDo^2Nk} z(|uZ@bS?L5S_6Hgn1g1AsWL&$q6E6RvYa{qY@GI7k6HXEY)&?+7iVq18;kq?$3f0= zjYN=>*36KoTbE0R%J>S18IuaPKrF>=hT^dA<`t7jn{T9!R#FoVW(ce*en|oZp;Mv) zw*qE%KPSzG=Gr75Q&x4n-#b^?s}v)?qn;$)M3{#RF%y#9Dra6fBYt^Zz5nk-kk>5e zje0X0&YF30+v6*|>OD&9Yk1A>?1|TJx%s4#q&I-XtpT~&UW53)&#~W0@kGpp z!GYJTKMUqRgV%mu7$1TzD{h~;QPz#-{Pr_@oPY?Ndz)6Y)F?BzqX z)DMeC#^he?6}T!T-#aqin-`SqbnQ+wFDCc289pidSl__E#u+y{8B(`ckM_~(H*5Ox zmec`%+bMcxA@g9O6ioH_(%w@2cF5b&;M1qqo3=O5LBmETo=>qu(1zw;w;(FTAS3R@ zl^qA8;l99}@r&G>;=m_+8|)O>AU$lAreS}O*@z*#Pm|oJQe}sC{%A}6*#BMio8S15 zujJ2v4y-noR&MJ!ECX{X{we3Xs|O7g1&9zZ0KQkzzN;@{XxKARhnOWcdpk(ObMbuT zg!o)ihmcfxFFN&}LSXU>_SLziZ=w!aagkz2?+2ggn{QO1{>1}GTZcp(j$1#P%tm8j zT1%VV^VK@x4C%&$^6*ov@xbsV?a`=}rs^9d3XngA3}=5qPSTZjZSej-?SH2X?tu*> z?|y&t?$K{@g^A3+--F{!UMIor=ThO0F zFX_(JeS7xX#BAL8rxy)p%Q@*U?4HGU&6#Z;n_Fou%6BdnZQhsx`Vb}M$@%uFi77~cY8)DQ_%JGb-E>@N4z|Bsq)ct|OVfT+t zGKrHkVgggt28u~<=Le{p<}f8O^LUwo3m(bx(F2EF2JkZ{Nfc`~oWmTW0q{Qc5@X%MJL)49^8 zmBvqATzVG35zc2nYgmYabv?gX2Pot^x0EP>9w}MLPBn{CCdNNUzmGWf{%9j5@jB_C zg*T)9;IzSm_d1`BrmUY|kBN4`BJxA)SDNZqcm zc0+(|rSw5s6HK{1AerW87bV3>s#BJgszV;{cC%sbHM=c+JgkV-2tf$~ z(OIQ=DsCZLg@u_gpuG6rU&gJ)3WKvl%QIHc@jOwDm=<<57=cxz4(wIljT4Y*pq1O5 zcw0YFVRY={oWDms&qbmwWFUppnF2|J3X1hjB+$Pzl5{jY*CiNdA>erNfx9|du(xqpQ_0y+mO+DW} z5*_dCZ0=)oY9oA$LhQm2S;|2_n)v^rLF`z zU0%0yOs#EvGEhZTwJtv^$z?N~|8~uy)9u?mehLZ*9s^^g$ChetxhrRUyA`|{`1K~j zby}nT{tmAbrzMU2+MzX!ZC*{ryY1531XK1{5E;ALiB1*MpWpP<%%2jvreN8CgP&`x zg@M=Vh1T7NmK!y*R9Ab3M2^a2E*1Ku{Y@`5`CNRfG^>t^2g7>0EK_aNdlhq!oh(?! zm@yg3<-s8)N(vUriNO^lZyzhT>~dv>c^)%Aum7+5pSYU6ePCdn;{G+z1OPrUnsrQL z^FUaw5d)|%pP-)}G?}N3=VlE}S`m@vP2=@hHPcH1g8$s8&8<+^owB*(DiZ;@D;L&5 zc(7lfQ`@yN;C!cNRH@8f{tWutO+la6gf+6uX#Pv1J2QX0$kwfJ_Jm3*)>vI`BIk zsz*yy%Kgf$4k-;r+hz#b?oWNXrak#^#`Ef2GcdEZV06`EoAj#7(?c&XFpIYzagX40 z`o?xn2}P4m&w*s9A%&vU2ag#a;EZ$a;}UK|g0(S&{GF9i7q51{E1ezGrRXQuf07vO zuIZcIRK3%KKKgV7dOm1R`>sr0^OK^qmiZWk!v`4#-06s&YwRUDyHVlk5dx?=TF zX5SGH9o%%^m6xj6b)R^rQA$B;%Y3QBdU(188~a+-f4b?jFO-}rK)~?rVgeU?FOE;~_Q_DytEhQ&J&8K$`kMc;5?m%6BD%>ONH7ke|k zBJzStQs4>CXa}6x+b$4Xo4s)CLZ$VGgV+s-C_ zJ$|*;`Q(7zone!!G-HqpBu!sIs)VI0XN*Q*V-?S9uE=M*O~5H!Qw0gjxV=B=LdDb+ z{2tiJi83Hael!VVnpP3r5?si+da5ohb$$#Zr+lL%N zsC5DpIvCMt2(mCgMQQJJp2LH_t(dxQ*|en++#(%|{2V_(QQ^Z|p3C*)`F%pjVb)tfe#`J5#tCUI?w zO1F=!le-=A8A(1krQF)rdg83Mq)2*;G-ZYBBT+Phb4*M0{mjo_OM*=pfXSQmPiQ?U zxpmxi=N1Ryg5A7W0xVdVMu)}Wpz3`dR#Y~|e2{&}YY61ZGd_Lzi_M!PsXL-&Y!Kgm z^{XUR9K-=*cPK*$pu8+pb7{{qf<6hEGy$GDf^c+L`{`CppHbKV4_x-lx|u@vRU9=7nyaKr8~eY@ zJDO;x(P^*XL9et`)L#2W+lY6r-ET4e z3ImVmN*2(RaKt*4ROJ_kD;yyY*g1#_|MpA?Q}KuNLxHaf(=}yz9N~6-si}a347=SYCsj_H z#CLLCvf~?4sIqVL;%Y?qw?5yXy2%*x+|IkQry2DI7!Y)C5I!auHN7tc!9nnsSAVzK zgkuVFRo~T#R*x2%L!0spg>Q*g>pIi#jT2wSDOK-nIyEK;>+--+d|jE6D3#GDU-SKmMMtdy8OPW**>3)YzvIRzupb5win_^4e}T`TdfHp;Y|sxaJ`JpAB! ziCx^Ya2PGJJl-JWXuZ}wp)A0hyC4HjV!0qx^IegRWVo9TvBL!vp;MplgB5(=C`Ns}msokc_@Dt@76ej$ z@#Fj5T62Z)QQcM)c06a5$^&#aWiX{G%#Q!iRp^hgu6*xebg`0A^{BW~f)*I6J^H)v z3qPOwuWuiQ4kDbfqJX&jsm8_2pBCbD*q?(P#P3+SrXM(+u(wwMsZ+sAk~qtDYuu*X zTZznS$#@}eiy^`~T{qPn{awPDh<+9;c$H#%KsRRxV3H;JFp^WjQ(5jTP$G{6m5p1E zhUFVVcX=r2djJEN{pA)Uj- z4}|FP;I<)R%cbR?JWy@)76?2W?0{X;A$vxTlUh?-TSd;m{&>VEjKv7;O* z5a3M<@v;NgW40DHZT+9a_}g&uH@Sc;{XtO00^4`kRzko2Gms7l`9s{8ZHC>Y9%V?TbD2T%-NNxTWuDCYzN4wgKDLp z&GCH(a3*j`g3gW!UmB>lKdDOcUQJC~){#>H{m6oer)$X_OiqWmt80TbI6f8^X{VWK zcUp?~D?ApP26hEN+{sAe@xYx{Wbhs-53k z$o$4Dm@zK;Ih!}}{fYw%Kwg(uj&7ijGbv-w`kghJ2nrK`+fFvvA#HMYmKj0GvWdR$lF!YX&`q-L7)ttK*{Dap*>-Mh)}fkC0NiJ2qA0!6e*- zx|Jq|3)=en6OD`XTirab1KQzB(`B}(FPg@WN;q?&hHQs*=Kvgfz^uju7kO1xF}@<~ z7cGx?N=3Ur1abw3n&~7ovJ4|nepk|(hyR55))dQmw_$%+)>dA*uAD$JV=zQTTFRq(J1+Ski$+H4_sv!R#W zwIDd>+p8vrwIj`Heh7R9pjjr+!)&3+4y;eLSPWilVoJn?gC*iIJ1le^`QXzWUZ)~w z#~}92sEUJnlqGQH-!*Qi^&$Pdvk?M34$FbfD%Dh+crjj|gQRQ`J_^vCJm&ZB9COwa z*tf*=(V=#Z;IlJOaVmt)LMu8nozyMkT`v)NO(wRJQ5R|u%1h}KfGX?2=|JwEAh)X7b@)dL*K) zif(0=jIgjr`n3^Grjy3PVJvD#8&@?<;h!D0$oPiHh>jT5#b|9>2#3e?as4&`qWje% z7R`V#9k3}*s5?Nq%C3%50;QEg*AzletenBP*O?BmPKxRs4OFP%_bU9VaPpJ%>C}0N zjWaw;pBHRY7pfNlu$K&lvT$Wm%Z4`tH3mR@EWl_C0BQ)&$l}5Y>L~qtMyK6D3nRW0 z&5taY%9HVMQGU}6183f+c+KTS?K%(b8Bl9s-KpTw7_5S}78k_Thq%Kat5!N(6hwFj zRSJ;et<6x$v1utJzBW~LvD1%6v*+2uE{smk0IbD=2<2d09f8&22+0Hpb^-W^)uP@3 zLOvoOL)VvaEYVS*#EP~jN;ve3LZ~Gl{q3h z89)nt6;&^)K8Zf(gyy5SAjid^2avFSx~f*U5%1f^pOwBLFZ5e_WBpcHJFaP{6gn9g zt!{Ph=e=`}gBK6}{t6_3Cf(BpJ}qDeiDKfeYTW1}cLptTGp$17)N_964#dV%Bl$-= z+Ng0$F<73|y+4!%8KwA6<`b+b@Ide+Xa`JOXBl(~_o|ZlY8WzoWN2YX9-z~JcHSbt z%;u$i==*iWs$Ukxk#Fs4P=&Kz?XbNBFLIcZ&ryPad#s`!!QS_?HKtLc?Nv-H0Pd80 zA`k~(`x#ge=$EaO2smq#Gwe&>VqE#6;4K6(r<3*NJT!cBh194aL8y7M?_geJjPPY+t=6= zPv%*QQaCc29HAI%F;mOz!r0~>Cm=CEdXjRBZip+mpJA}&o5PwSjl@B}cmaY^Xnq-Xkk&df%F0^~S}G{=iZJSU`)2DeoAD#%HQ5wySD% zwpuB%eQc{bpaYt#cgX>V3KMP{WO^c&MSpP<$UIlWw=f4MuXH`p_ zXNZrECj3zoqXgVLZduO*^2KpsuGFijSac0uril(2|KUEr?jFN!c=>q^DtFXvwf~N3EtH0DIYy5(A5Hu9LHv(VrX>Z-y%qLfiKpcx+~-*RtoDVaD-#d?-AEG;yM)!{2z!bpS~-GeGoM(~6|{hW zy^hA@zq;v>=4OEzdW6Icl6lv&Yrs0p>04-C3-w>K0l}_4+XwTtiwDPVSyu1g2wf^< z-N9ygM7eYEhTb-c&V`2nPGzx>rR1nj^HDFp^4DY?;7^-4#TUOcBg@En|2AoL7HdM@ zYf@H~(DVIhb4TH&>qZAlq)$*q$?5csbYbO|5}WDtsrWD)R5iKN=q)Ug9zb;sz^;I4 z(8FL+{(xmA5Zgur6O==QF_G%aA&*Z*zRkJ9Bsl zS(ic{Ok$m1mGQ$J6}^eFeLlg@d#n8M)>i-bva0$fPa7^!_?PAkQ**bJ^*+!9eyqa{ zRDI57*^(MNnzeA~#-Vsb>`u8BEob4#3(`aFuzII$2e7O0W#s12M^ zoasuyYpv7$xnb2@<&2;52q`rRiw+!2 z&Ay@HN(WdnKwy}B2+5_wz2sc>RO+A!|Cz?e2(-&x-L)kr2nLGGrDt+Gpisg)SU# zg|3A=OgPqUT*4(x*@eSA5cmId?ZAtv6G_yJ1%?AYGmZ}ANl@89Q6gX( zl=B6~3rNv+WX*Yr#VC3qrOwhtD0=aY)%H?^ZH|}P_40#pse`D83)a0y6h^!Rwe@lL zzd!09nLBWd*xon1q+YAYd?NK%vupOSOFM~4P4=ZSLXIa6l_Llar3{$9O_(HDJvZ(E zMwbD6ay~9fA%`9hCV{92<3ii(?qNb{q5%m&xXj7xLg~2ZJ!GRow4!d~xrYlop@fJ3 z)v79bVMzng`)5`@3I-V8&%elTnes*Ioh%k67OmWoB4A2P0SmZ_Zh(Da#ez~B(Eptt zk=PEFDv)>+Tn6DwQ3@?Oi|F)pPZsRmI_koArv96i{7`X8Dh}7pfV-W^@Nk!3UEvA2 zI`Efx*vlUbX;JFe8wuIcG&Uz&cxWy>H_#0~EM3-8E0|QK z9tLy_Rl2ww>`%RXgrsFJ{z#O*nJK2Os+g%*U0}DbmJ7s&EURhAoNHN_|EGEc3B??4 zUr!EmU0_*bk2wHgH&}*snAVEvrshi@63fm=JQ5DMlVDV^lfT zJ38M+t0WLYGOrko3_(_aF&KJCsKDM58No|oF;E-#C$0E*;6f=Fm-!aG7bi*hzEkFa zBTs%mk=}&Bzej!!cgK~?dILB@djJDUev#O!XPQYD$E2$8#bsQL#)*YBrJZXpF4eUk z&@ZgB+Q3X;kg)MH+P{I7w*&Z3f!b=i6qU86zWMM`2$hrJ_uN#GN$7Fs_DOsLC{B*C4btQIWI%hMt7TY;@OjAWq*!*YjIy0 z&f($({aI#Y#smWRDMN_6z&BYtm`bxTw^b~AXx5o8!KK4K2QKoP0dU(sXOAyd0x?cT zVw$XI?CIqi@kfY5nv2b%Rdk5rh5K1H00uYOS=xLlq3$jr{+qGEM% zl32`ja@NSA#HEp*sBsC7r3||?Pu}I5j?2#bjZlb|BFdQUi1uCw8Vl&j8BCKZs=9jZrQC=|!u7OpkGdYRen^9~mD5 z^CEJ17@zM0llPwW>9n8oci@pUA_JbF=zvnS9D;3ZVEvh$Y98xbw9l%%`#;_a9~8*; z3MoqB_G$OTCjppw%sa@1@scX1(N`mSK}xFC2wsLIdLr?;>U_pnKx1Cp^}pSJC)aQr z8`SfSeJOcaT%{|q>hh^3#C}^3EAIgbilJhWpv;E6;^rFMX*~~JLRUz6;1sGZK6L5D z?+iIMN4O1_ab-cH4SJ=4EhWpRsI({FclH4ck8vx>->PX(?$JNp;7uM<6vztCT&85CGsaxX`Z@)hmC@sL4(a;@f)**O5H9-?cm zjx44oUzZ%1u!D%_sm+AhXW(kbHsgOa`e@x9ihTx|KRln>@jMLXAA8clyAWY=<^tK; z9@qf4J9HYpWs*@?dl6Fp=3iCFz~hL38~!|eHe0$}6ZG`hpgAMmK`(7loJ_u@LGLRF zlXN*1=-4Dq2IR9Z4;S)37?lV71eNyIUP~o6@fv-F|C#L+`tL(VfSJWy1evd=^t`AO z)Kd9Yp`B>);N8p%QI!_rd=i(&Wa{3}n@GIE_wB*?+*_2b>Tx4rRf%ggtHQ9^ch~85pK7;6TA>5xp(+m9;yn5 zc#{T<4vH2C;Q_H|O#xV`8ZKV@+4fwh|+{o$yVA$Dq%jbA` zfes912jjGA=(jFtjPX^|KPXb+a@|DKbk5JJ;GH%u^SB~%)1g)jqEUyY76YWs5z)qJ zVy7j8$}}&Jc*$`sRz3j_xk20juo&9W?O#c)bUxr9s+VKiLO#UDIMBi&M1AN!jgpjU z$#W?Haa`iq&l9;FfEpc)Ge*UkZIFONl+qLqlusdaxWYQjnR+36D;R_eSC4Zd%<6G+!4_-fa?M?G4eufNkuh z^sG%K>MUu=&Tm&OkBGy()&&LhbiD&l23pewO-tT!Cd!qrUbsbmH@y(D*?#E>o9mgy(AY=36KbJQp_i7WYS=_ zeE`)BRkuf~NGnyT7o3Cu(3>f_!3#I^!I0>M2*Mf{glMycjxChi2$}TiT*>hOy<=iksgW|(`0PXp zbqq)bkIh=Rnms5YMFSqhtaP}wCS=G_HuOw;dNv7lGgFcGn%1j>YPyZ&(T-94f@8{4 z`KS~)%|W~gr>TNz9WZdGX5~u3U|_gA9YLeR9Wm;HY!HnK6C~ZZ#=XI#iWN{{2?by# z9U4l9^GF@p>tI2Q$JKS1JNFpr7xPAZqw=u+K11YIUBor_|367DRPq}w6&ydaUMp)n zzb9+nz~U<~L@yZLFV21BeuBUjB6c+mFE+^q*q`1J{tWfjtTE0ssV#~Xp{}+>9XkDEa^n;7d6et?Oisbn!o3?Fkq5@s_XfQa*Gzg$)uNy{@ldX%t-VP6GsB z9^_LP*|cLkmMIINra{J>1VFgAr5hTo7(-^vDPL`b>qC!{j~w?hl-O2`?Dd*UvGfSN zcM;Wou*ZD(nfkke`1nm=?mKVbNbrf)i~ziwu-#u_`-qb#KMU*N&nXDwMmsg72%?7o zU_hYK*050YPP{P2oUfWNUss+PfOn1dT2gFXsKM*8z(-k+|2*wJ5J<9~y7K9uz9<3!oF< zu~Pw-VBJtgW+hOeRT@yC^z7Sd!YVtxcm>~v&p^sS+sD`7hvlV8CgxoS2H|(n`?rks zJ=u47*x7YK!}A&=PcI$u#(3>qnrx^_I3se=gE;5;$dJ>ey)NLkbX1b0X69ooSep?U4M=9*k&-q^R!?BvXQ7dX@!0=q-%SMMUJQcsY6+cr{^k zVE?Qqdls?odp>iBk5bwaHj{=G9uGWjs&*+8cOo4}+7MYQH`1DF{+CG5ZBJ9eflI)y zM%8%rO^_kQCd;xsyy2b-36g-WJ?7S;(*&AkdNE~8l<452>w^ zyn>3n+K$O)-_M;yR9?C{kq$k!4%Tf4!f=(h_B@|>W_p$g^A{G#pE<$!Ij%rCQC=-{ z7Y!;9in(zN_~GuEYxmFCJ?K&PnWz$dczfi!LOUdomGjTRZQKMg`TE<4mo4O;&4&^6 z2$2n$D3X=IyL<%+RBqhi?{SqPVa(H)K8Rp#VhW%G7;*>CvBkbnv z`kZj@LM#4@(!KsQA`M}3nV5gkrF`8GtlDk@y3He4lOPg{pb~{AOF><$bMcXIuq_J$ z63THiHuVG`hJFj?laK_>A|7ozd0p_r!3_vT{^ID{C>%VBV#vM)jx~CHaG`4dRKjy0 z3R6Ql6(S-z44?%1^#;Tfw~9tL0DS9!SKCbagHE+uqkN*1^Q6p^&`U3lc=mW-e7hiP zsyus^xA*H$gwykf9i09GZv)&%iJ3}@``-SC+g5pIQ5m3Ful7*xk4x>S_NOq^*H z&7Wv^tqh*J)PC>1`_&wTRQ!z0?2}*f(s7HHGVzsx!~D@uO)aV3M^UP7?+}He2|)Ol)!O;vQEu$yyS!6|lV0 z^2T`d!NImLb)DUC86g!kYjg`9@(2^dg5P@nb_aOdOmdv}Oz2{*wTu+7E&QFqviVrt z^9TLk%cC#IXNqWtDP119u0{qMQ)Jz#7Ihx>1Uwdfb!EHxP#5sSPXK`$SyTOnaUL2>t>;a`1<{MW3!g-9!gx4%*5S3A zRg1z&o<0EBO@Fz-H=!=lBDlxVZ#_2KCOGe^!sSZ}zN&$w26}WAFsFbj62(8sX7By` ze^RQ*z4v5IL_KHro>g0Hc}H5I@J`M&xs)^ZNkK*uX(uchpQEpeNat^xL%>P;ez6R^eG`>T>pl{SfbTdpIL#=4etZoC+oY&$-z|!P3K-MmXa}HAK zTV16X#=UcjDUUt}wYkE0(^64%k=t13(@dAa@-2qE= zK%~mq9@h88Atdra{J$UgK{jV$9LaWc6=!!tl341%nXYI3Oq#6yI;GI?-7@tJUiZds z>6c$=E*$!U7@ksAVXpP|9~p*aw8M>momJ}}a5*6K2t(ioW9f-7u89D z#S})5j3iV5Bgl_rtJNQx8+V2Ph&FQ z3&t?QE<9birYF#hbp7dbQ|31tRlJQ5DtR$!XjdgCu+j-}AUSmI^0NMDTueERR4Q(* zZ&@4EfIP(v^85eON@+5>uw!CvEOQ+tP;%n^y;&1gvp;xizLI>c_GMv1pKR9XYPyWK zk0k_6`;&ev>hw?n3+&Jv9ocw(qT`*QvdDC*gvFl?Xw1}!)~@(qv+wef2#`}UPmlM7 zx-MWv0j5YH-4l%Tc#>=vy=0N{dK7V#4iO9KF$0&X>(wAt%kS#-nzl;6FioyoGVV3- zKf8u&{6M;9+90th;+EkulCM#ZudvR$cK?DwD@!(RFgM`!YNC(#;05c}xR3D@WM`%ygXcQjIfMqCLjSexRIo2?=UtmHR_%z*Td4M>3pX8T3mO@mb9=h?AFm>k0N`@?8Rlay zeKID(^f_3PRqlXNgPZtRC62s=)z<|CLUkOhgxxg+Ge;@!-joYGdY$%BEd`e;<>1{m z*OauXRgU$uo-FQxbxx{VVhB^4tVNuX@X)crMan;{-?G^bmX{9i0{MK{4uYyg9Tqxg zUs;}F_L0a)Pg$PIN&MFxn3n?A~+tvs{ zf4R$dDgP7~q(d|Y7*v{8qeT{I!Z@Pydh|q{T}w((F%O@Q?E=7ZZtEUx{#NbiGzf~Gn3vp+;FIm?|%;in_@fVCCasnOByvhof3Z^^aT=E%>2r&`jyW|fW^_yn( zNIP{otL*hHDvz`pUChWW2xnUA|(j;sR4sno4J0zU^~%>{mRqWB=`T*IObwuAo`xpa590~kxU zjaaVa9FaKCcmUYz$v$DWIK_-iK-Zr|afx-hf)j0Ske#096X(VuCrmR2uAy^jo+jAul`)>eg0vDcn%&sp7e^1Xj)Rvy_bVt-oBA&|i&+$#eij%%fhsa*)PMUaU^gvPuZj8BJN+j#t*k%t0 z&y>r`Di0(?PF#s2yVsRtb6m!XEQcmx*WE%fGh-s_HS-O1pFC7`>#K&*BiZp3|(YwtKup#X2bUb+YgAeWd&M`!{XxpG_|Gb&+w9-ci z94Ic)f6;=)#4L~AVPJV&>%)^fcclv*7vE|VM2xZ49}N^QoVx(|bEW(-px;SY!vAsa z5FJeifH3rwjV^wlzVM5EAD^1?9d8k2(}h+AYXD4_YOFfWgoy#yb5YX~4=lJMb|2HzautFSf)+c7G=1*#S#POM9`%)Im0_tzB z=u4JvKCeq}zhKI4H!a5GEaVp`p*4UGcbkfcCY};tdS)HpRd73iIhpy(ukvz1-bO6L zq_*;&9jS-*dCc--3YK-iA91E z=*=}6{j3JT)t2#y9IT(t7Q1gVA4@VWvG+y2)-fq#NanwhlU8@Q#bpAg5NF4wv<`JF ze6=)`vS{(KDv_|*=5+hJsGOJ5;3V+tpB{+aZ$m7v z+U{o}n!}PFm9SR9ljJakmvzhpcGE9LAIj$v;n~)){`4*<`(M8;Z_5ZAC))q28E%r% z_{;6-jWNm})%e-bbb~r<93d^S%J+tpOO{ruA!Rui*c5d6QN&#G!yK*X!7<8B*`8X6AZ}#!ucgVC#bG zk7d3ie_If2^}YNqS+$8fG4jpM10CbTlh|iNMe^flyHhfEm2>R%70`SLflhU_Y0v>3 zZg}XD{j`irn29|2y7a3A2J9hA2SVy8LMu8J%4PuNxD9Vy^xq~F$~y3m8g~fhqlY1` z4IO0FQAfwjMUZAF=X5R*H|fd+r#UG$w^=NDTxK)hsOcFx_$fFZkY*?NP5zq)Ln z$2@#L^tj)_^v0_6HbW4N8KV{TmvCQ{HTHtHho8n-nG{;+9nu>x1_(&MoNw>n5qjRQ z@N76?@=tRavvX4JRu1t*p+W%=h$4z3+$2e6Z&uNw9w6IK2vKWQabCvs+ZMy7>t@Z6 z>f#LfmH|^~{vjF7yUr!@WV0NV6E?CsHE>{}kT?-3`3f%vf}mx7RYhXjAmJTcpB zra6iDo?vM49lAT9-qG7#-gvaV!o^=-;}jOKxYcc-q;Vv-!PKSKNK@wwpTX!-&zAF% zVNZ!0^YnOU@rm-vrG_m?{ac512-B^AU^I?zA5H!m(|<%{J&& zQu)y##kp&v-GB7h#@}89ZoepE-P{SB1;o!v-LM`;H(!%&Fy(z0i+pA`PP#wTqjH0I z_;7Cy+i4Kn&X8UOD&Y`HVXqTXUlT`}1dRR|?l80GSoApm<@kxafs-f+4e4#ePmv9~ zx2L2mt$t3}<)>AQQxgq=}e>iKGoBi0~PWvI_=ApbxW;xL^ zFGns}{Oxn;Tx>TK1(eEA0?qH7vN`B_D8$6g1;jl(=i61V`^JRN$u^cz4JA(7)?!JZ zR|X*4+_y=z*A17M2`9>)Pmb}G2t8&YpEx0%q~=R7^Ak$iohRt`a_3Vu=URGkemOUH zbdl7Y`NjW^{~jCtq+xSB(sW1^4I9q8(_2SReRDOZcAYnj0yub=QCrlmgb^dBONR$oI&eRoP)$Yw1qqq)u+?5^XB zxS?0*M`e(&4KoO2KVr%9E(31Jggj@y{)B!|y9yBwndb_lCT$mb{E&^l|6T7pa<3rd zN=P|%Szni4rWoKTFew%7R+J!rFa8X5Yvm8Gcv)NHuGHmad9Bc{Goh=_pXIeqowxX0 z(QWFetgUMEG3gN%x$BZYk`?+bG_+n7Mv))9_^v@QY`lj*8OFF=UDn}|qpZrbytoQc zMr5XiNlS>ok}Z207LiZw$(6IoJF6Y`3?&|Yr&W>ck~;Q!Qa;u9%Y{q_cj9J4QKT~jZ5x- z+rBmbZ`4Gw{@uDmdg^iClto?hev}P{4QT--KzpG>cWuqS`<}_xOV?FQ_zO_#34Zkq zH2Xfd_xRzr&y2=YiT3W-AIb&Kd%c5f^$v(Nhs%9$tjo0CI{P>0CT?q@QEtRVYwo$X z?-NOY?xAp$&nzKCBGF?3_=& zGZwv%m^=5+Vml0iM$Z-I#q^%V_j7wTf1m^&Q(rw<_hr&lYs`&>cCV`d&L-Rld#gG9 zxaQ&0b>G1K^mJ?cO96plZ*rd`$~O!JV7pfUpQfa}?t-aEeo)lky5Z-g1-PTfpWZkV zc67d~etuHNUta~h4KERb_$-EW+U+!eM~p!gl5kpffh z1Lb2^y+5L=U2xhHYE3EK7X*Zm_}O1SdTN#45(UTRPMtck33^$AB{+I7?1-jP{v}At z{1)%Of$lsojf`F3O>wYJ;c?hwW)$->FKOB_1+gofC{&2WEqRGkVf=k@d{;zt`J-JMYBsIotUd0tlYybfxozm{gvYR`8sK?)OVV ztAOHfmxM5b>KCaOb$VyndVR5fJ{;%FWO5$fqzXIK^prpCJsEFwNHY7!A0(H~954m4 zWd9nZeKkEkvA-`~wfc+KH;r5H^Pps=;GPRt-SPRth#+^SP0@`No=Ta+$XaD0C5?mw z4l+?1>X5KizzBYcmd=Io-HUJ!dYX^5OlvnHEe=6N_#*x$0~*G_pySAPL_8J31BSH< zv&c*!7%MNCz+ryur%FKf3vi`W3eZX_1K}P#*k9#MEZzOJlzFL5%dHv!T!PIDi5{(| zXb(sPjct7To@bIIsf(9u}Ma`-`}~ zSA|oT-T>^_WT)#NX##kAs<4??Y^`xQ983J>_7NXtCdL|#?BkUCiiMIZY#HV&lpv`D zW(9c3)!Q%k#>`1+=r!VwppDDz3;?L@cKx-}Ei*>`XD|&3f}x_MD*!uh}#Qs=NZ(+hY9B3I5%!2wl7Vi~xtBXQz%# zNv&X`M0255t~fv8vMgD4vacsSiwWY5y}SJa6U*%nqx)OWZC*yoE)QD^p!*W7eN|Td zN=SSfN!VaMqbnXqM5Q8&NH%eRC3lp*52;9J$+!NtPFpD(1le>VoPNTy+2St2I#yTe z@g{2B(*C8vF)I+3)$blIy64fsZ_*MGw z&8ce9bC}{1ZVKh5ufB-5ms7e2p^4?L@17y(6#AXt|5T#LE!)t?0D8lDKLu+ZT%szl z1eGRSY{h6OEpl{#eX7X&FAP3^O8=$Pn~uZ(K2(HsJo21!5vf$5U1K#siq4iQ`qy{O zJ^Xk)4Avdc(&4G|uk*n|Rb>PGvtRPc5f1lyH0v_F{cwLfxCR~w+1~fmnw3t$QGK~s zgVmr+sH7FEgims&A7NRuIlyZgBS07A@>-)K&Yvs`w_EX-%N@KXS`^1spQ$Ac_a(dn zidGMih?aDubl_gu8lTl48v4BA$)!ESx>M$-nb)`>pv+h}!ofqJHYF838H} z?~{k9sO!7rZ2NZNl7v%M*Y~P5)lR!2I^XY=>+c|5rp-CfZc(wxnuCf@x?_CsKXW}==3g5CM}R`8-2!}{`hi?=k)BVLgM#zRm=OOsAo}O@{Za?U#iBj& z`6v%e^4ezyhV}%}AhtQPqSgFsr32A3i82~0U?hsk3kj}esGa&`IQ$0yQ?4}yx7*2K zho-u#22J>bRh(7sN!<%BQ4oBZA5 z0Q2y>R{ni@!OC5dF=^+lG5o=R^2c~(ynD4A+KokR=T%dde-r!{V%5DO^2!;-ntT@Q zYgZ3cbH(Xgk}^#$Qg_=lLFRTugjHUsg7kW!lbAD8Q96|tBJ-zR5?N-%=<(@q9 zg~!@^*WU4Cp=(=5ec0Gg?||%`_|L{8L;{b1XjklIa?g?LRum^pJuBONO31-?jcP_^ z)u40-gsyKk$qG~9rVb=cX8;!KIRYj7T}`tpHZ^JH$uzuI*j5Fyc zH)678hlM%h&(hb#8`m|g(=&tgv($&f7bHy68-hIGW_M55C`QFLx2!p)-F_i zF;o$y+X<*Z3Nr->+>b|&-=}Q0uAKnyExD_NkYb{S0KyI>r1oy=iCYjow&!T!$j^>i zr8NLv1J@SgbyXZ1>o1exZ8s)D1!6jydrLeH|N2BJLR?l5(0(Ca>F0IFD$7T7ett1v zY~a?d+e%w?OUFGoFS{*ngOlz%)!%jrWz28LL5N^l3CjQM%-Cn{;DC`kp z_s(imVpX~YwILDVU7fd-bWt{c1`BJF?h`Xkd0kXGZtS{wI9Kc|b}MV)McAU_JrnUm zWszXT2t!1wru8`#<$Y8=+I(?dW2=5Q{NH=g_Kd^Zn)lBY!Opb%#;uO>83&Z?R0>b2 ze5IHNn|=6dLG;;GpwjX44SyaIeS}v;m1=)Nk;h8Q#V#|;pH(-c9jj~0dFEX((F*!3 z-~{_PSMx&a&7j?-2M(nh8!h=W$=AH*3rQ)(iN=A&W8=~{kBOIgq?4!Q74)s{hgR-z zmCZn?z0t23&nW1MV;~JPq=R%jz~a}%+vO*Vnv%W(TtANXG=uJfXGLspeL<-Q<{JCX zT{V)4&^1;@dM;|5lfcU6j%fcQNThg*OvLsqnju-5kqp%0U79GTf~xl zu$X)Y0EMWPJC-5mR%>gvBu@)gp)JWHmvGW@sEQ?Y1VrxG5PyuEToiy8TPu6KHu+Mp znx-5dy0*RvpuEIFqvf^5>&n99w2u2J?8s?7lH1LVY$GI>kE?j8YHCNZ#lFm z$O;ltn6M;JrLXhr&B`0M)#>jKDtKgTn=C2Lh8+G(;LD-ZzFvYk9Hr@pLA{)o~FzOWXVrr;H|qPMfGG^;>~l|LAJwBrC=G^u=> zwI;u7oR6(29+y|Gs^eQFc>G=r^bW;=g89>6yqk&^?_GrfL;?UHy9a^t0k{D5gDFt} z0eBApKyU%v#DmT85U-d{j@f930t#zDmgW;5`glVMe_-@_NE2|ml74o7#5my-o0*c-;cl7V>Nb<(RFs(yaCtVjvlmk>9~ z4wB^3kY241B7|=1NZ38p+0A}k%k4fG{{nyK7d81Ct|=GaGF5-caa=Dy=iluLe{m3;$9hg@INqZI|VW2H+h4G+&jlO?<^0eVCisWCaWg#bmdek!XR>C-KU4;a zXMTOKD0jtQpzWGtnQKg&BRKescSF02+0U>~n7;k7K}((WQL7s#{;9l;(pSo?h)$U) zo5he50Bb0Nzds@yxM{Ml4mIwm&)p2D&t8);zdB|ot<0y}tDL)J<;4R^EyUw`4#6Ys9uHUc)AI72VV_`f$@r2m$Hkh&w>QUkOZ zX+?b8Xxcnu;p`KMLCbH~E5ANMuBcTUH)cFI%^-^`Mwg|ov|ygBe>JUVT&Xc_&%5Kr zW7yLwQTRHFW>`(X_Idw<_&V+Ic=CS*Lf`8allZIX3tBs|UoUs{Tv_MPwf@^gdTKO7 zh@5%6jlhkLnje-Tac5Mg_9FT9#3Q;5f8G+gHuj%vHYfRD7h)bHKVvn8Z4Z0EJ!*(9 zh+pmJa`TDvp>nkJzmq;OoiD4`GmM7jd9|%6{iu#@OZ)GxhWJ=w*T~b}*BmA_SAJkA zbjfHrQ1ismVn>GRFCz}*rqiEC)eMUVS}8#q@GB}cYsY?6UEI@ze=8mZbK|YM`xkLW zcYb(#6^rPEq%SRk4oQgDQ($emz^w{H5s7P#$?B#hF=_Gl`QGK48Fh}F?_;Xe zS0Z_1e61Q(Ghy37pD~SsE>3(!g8g%{yb%!~0ZgqeXWG_4x|)cNWj*jKII26TBJIQg&T#wPC-twjl2Rqkq@P`ans z8?&pf2pNrk5_%0WzkT@v@5HfHladdN+%|051cC?k8qHcI)+3Z)YPj0djdqj6-zkaq z^K8#YMk4bmhyCuXlZ_r$T1qA~#6FJ8U_KR`JuhNdg~YhPo=20sQ~Km3}=l`RPw5Dq`>;_u>brKx4q z8o;o4)|M>rE7LcGy3yC*61H_Iq(F_lm2%iMDv5N?Crs`~!h_!WkyEN~58D3(a%no+ zW#`V!v!fetz3kp%xpkcDzgES_ObY{A=uCM!rFN;@JlE`znaSU{g};~AE~|K<)RB4} z50MDn(t5)49Me$-!Z_$bB_|~gB1etNgVG7XzxW(u(dsx^n^Sc|#4d4%H&M3?{BMOW z=)Ey+`_KAGxspO0R;z?bXr+Oy{PaU*H*j|ABZMbRO@G6SU0Z4XJ_vzDc|j#Z|L z^aQ*+Ed-4Z6nS#LtohXSij(VRKbJUX@Qm9J-&?&dP+8<6w{LseLQ?e%#d$43m*V%f zA_R<%H+!Z%owlqJh3@$&s_EPn%Dj^^EEb9bOJ1VdL{dQg6zrt3U2T-W)~GD@X?NV! zqwk)N+3*u|{N}5^C;D7ax~Vgx<{lQv8z?oM_>WFfRrt#P#8&*_w)5Ewi#11Y_JT&8 zyw4GD-}~X*_Vvi^zzxv!#C+ zPn%tfjXrKbhd=>q?CZ?l$DwOYho&e-s4213mmhTh#vVC}^7>F6 z_OdS>QR;Pb%a2yGli?M7|8!H}N~RZv#?9RwjEpB{O3@N>LaEn`gYzn@p5HlL z{>Y{}Zmw8gWHl>4L}SHx>f{}Du~q)6iyv-mbXD3tBvVU-sWzakL-S4++T!tD$>dRf-w}~w!nnvs>&6{|WPth)Ask9%2 z@z44_xO2Cs&?%K)UMwt@~+GBRC$ zsKZz(LBg9QNlB|@8H^Jz#E5rT_8~Dj(Cd8Qs!NWw;tK=taHFkKeQ@bE@HH%ap-l6& zoRQvH*R~A(SI~I-8kd)4Zm+%ELqt7KZ-*^$A;){|!|!CKbK5gxw*#G*kG0&B>v&+w z3pJ7$)UF&l)22-~VL-RH1-RQP*OtupigevR_%ucMs<>OAyadY6s#t&UF~~@NPZW9{ zcj_d_Q3fWxUQUz}A01dNr5^bRPPu)!|HB0V({*b!6ouIBY;F^f#n9S^IVTiEph=aDN}RPQd8f{_+jQ`1Q=1{ciBcC{)-_X zoE5z4K09KVu?(Ew&C)%5e8fic#9fe`PhsFFs3Sqk76|d}Jm94u8@^_Lb#Fg&?$$7!4wk?`6q0$aaCqwQ z$Oa0snT@>5LN-&74IG|w01u4>^JPF3w?sl6MTrfE%6%wzAV#6X)?%yW+$PKCb_|bM zQcH&VHSVg3pq!B8^i@V`YuYhJKX2QDR>n))1FgO ztk`Uq-7e@uHh;Vq!KM4jV1Q}AlnrCmr4+G`z^A)>awm!nq&##vsQUm^S9=?`9o0id-4{hQ z-*( z+2KpV=Zi*56|Mw}4ho5!gMKESG##{4cuSuuPdlDm^>?a6Wsg5aAxV7#Y97vu;5oV7@1k%^B^$pqm%*xq(j6ws|o4F*(#8!TDJm9jw)@;g9r@B zfAhB!2yh0jt(@H0ia~`tqwbSYy=)YB6E%oO_iUoh`lE+8`FlBSL`4*r`Jfet4NK+O zsX}lWh+GWfJRVM_Kz%S+Uu|Q8hqZo&(dlka;bbLV{S;pRXw10NLXLqJ!YopW;8Fvk z7{}Jnko5%4Gjd}S{Xd=QtZV;PPA@3L;`-=cnfd9tr2baosS{T9{BkXTn0>cFAy z;joP)WZeNT1?Vn3c=z)AX=(?s2t1qu^5#8#cEd&%FE$fl)J`~oc zioM!$RW~y@>nOAAsnqDB(!;hwl-U3Z2Cn5k25~DRIPA0y7 zW|0Qz^q#N~{SFQMAf+v4fQoG$7wd!cCkf(!i|1Pem|4mcKhasBEa{L11;V93jELY7 zS*!v@QXc>zG9d1RgD)L+9D`VLYK&4v#c{7bnZ)ppZ1PXxgk~|kQ*88=n9&hDYlzeJ z>kn!OC-fNi;4!O<%RzBTsE5?C`#4m%nouhRDU^0VhxIc^ zWz6%a5Cw@4dA|&6GVz4ZCkxktJQ-vy^rdRjPxJGo!@n02JqD#*dH?_oA@TNmmuK(c z0DWi%8_jkX3&)5wg1Q#L!HW=g(lb{K#EJktN`i(E;Bg$phrGty%*MOq2Y`SFI_{&T zX`@#H(1RrO6HZ%#Kl&T@H~$zO&D|V5o&V~7I18aJ)Z~In^+z3C0EUkvW5oM)f_OS( z#@!wxXg%XO_?f*tcmf-icOE(*IqH zwO2!=2Rvz`4>VqNZM^KdjUIT1W|*P3uf95Ubz$TbD@jc#>JR_=Z`P+O3B^muMp7e} z%u~spcH5ZF<+2f63gQ5S%h}|o0eB85=oBVAl?(%Q2xtXKJ4Or;>CjFrbaOkBOG4@t@x0X#x?eq>kKy4mKYeh0f5GDYxxza~0}&~N)eD=j zR4!ol6yQHn?aclo$dOG2imak&gSzxUZq*-JR%9oZBWv-=9g!R73ORjp$B@tMdH%iE zn!7YSK*DlRS1mC?DIKHNVT?>4l{vL6_ z1PWiilZivnaPN;^Lj01&USPxH@$l4x-z_gp@kzG;LdQSimTRcdf-*LU9tYwYyWaGE zIlh(-wVF~6B zXeAM*CCyjsHQbwK>&o{<>##mnFRTv~0q*LF-)7AfN6oJlpR}ACGC4ZT<+8s#v4FgN z*=crOU7{T*wW54-UAZvW+#pENhYgErhjW>Tat87tW9QzrnrbA|}<`{lMimG`t3Dv%LmxNVJUOLp! z?3U8c3K)KkNYOr+u*gC$_J5G!7c+`rA9TMvU(vel&;7G?nfI#JIqn?uEsnsJLzwnw}NkH-6M9znd-UY4IUDj{&4QdmBgha!-?8r3`u`Iy4j4Ym9nU1m5kOcgFKI_&}=Jex1Sf`!}b)M5Or&aW`>m(jJkg|v`pjP1U=jm7V?Q(?rQ zl=&BjE++x6XarN{l`BKDBS#g3ih+%ySA!$N$~^4WmIa+9sr4#m6YU_BO1(pH?%8z0 zFSuv|dr?nNZx{XuZQ~oHC15i*-YynPNaj&)L)7uNDp3_~)fERL1)9W*LQB$(j8}y1 z#r=>f#IXTie)IPn>}9KJow<-M&>oUc{bExxWWD{zEBr(BmzFy{m=9;QEe-3|Z%CYG zt>35!2^Y#_3aD-9%I^bPb%)x>yaswN$t@)7$dEy9mxF2Q#*M>$TIDTF!P`ib#3Jg`4ll}j%x4*S}}C%6jUTe z!|y<+FpIH9sa#=Gp$LRBGadxN9AIl$GWj_giy;GNWKswj>ER5+9pi7q0Pq`a(golG zHy4*BaP16Vq~-5zV_j(VMe)N0p-zwZbo|Z@@|X8gj3Yzj*;IdZ>PU! z1?TE@T5o$k>=jbi(iP}&&bk-I63g6v+-aHBvsECgXPOy~dJcJ2DT`gyrL5&QDak0$T7BJ8mKe?h>v+m{V$6 zr@>i;b4~(=q0Vx`{f6F%I-m4E*?7b~nJN-Wq?R!y_x^0A;xfktZUg{e$N(M^3s5gF z1w?QF@Q9*>S_u}w6KAiLd4q_8JL zeia8(0RR!|BW@Ct-GG-hMZl;4`Ogr7iO#-tLO`|rDiix`AyR;OEG-0T0(yr0*(o2t zd<~w`4lx!6Wtf;;FU&g36T3;*_zG~A*X(lm;&rDub``7u4!ZJ9R;AJTQK*vsxiNR8 zk0;aDa;hTibo*Nc(;NOC>?dJj5_34}ZxlK>)k*i!df3VEytlw?oP_DmE&d)C@S$UL z*!)CRtJk=746Z?WLHQN+@w&s!tWIEr9S0)G4A+cgf=`{+H77G`jLs-O@A)@aeQt13 z(c>)mY1*VGhZO;&YFd!o8k6)Lp?s;uTB1fQATQ4?fk)(kR$-B5jHiLo z)lD{Q5$;_GGFUMOxcR&Nmc#C9io1KE!o=d`!d1Gsn;^umIkfzWrlZD*y*a-z55><< ze-^7dys~`Ri2YT=IjNOGop^6Qy))&Zty}RCZo&qB`8%PLYaFH`!)Uxds;GB^=c5eg zH^0+xV>DMWTw9|8-jy&D{d?xlYeX+ys+7|esYXq#HvuQD;gEN0-&&3Uo}13Gy_ePz zvWV}}0q;osApo#o@XR!y?`*#BG@q^4$z!Mks8LT;YK^&j`NGx@86@B=U}OX^tI4|G z{%-x?{zsA|eYGh0@p!+;Z*r-H9JIR_5Q<-@xtyA?jLtP$c6nTmD4r}0Jv~3@+xEcx zs^%}XAc|Fz4BoYBzCkN}FMq;r5BRXYykueW2HOM!@_9<={fcr)`=)<_w6mgnBk~eO zWTmQ2th1t1Aa>?ac)80tjka{mqGdZcNK7w0kiZ5WSZt)l^McUHt9T>lH0#H?bL|uy zq}6nZo<7HXEj8C4=zjANm|fIayMZW-PNNpi8O_64wSaCc1pqJ}0k0y2?>7xo+wQ*g zT@J=lT^`}TR%pmnP)ln(6x6^ERI9s(RQfUzHlZsH;Y#_xdQUz!cQ~#7Cp^BSFVm5W zPRIbXwge^rJeN#300PxETqxqS62yWWb7F?${Jt9%}@Pox*V$u6@pK*e4xlNJK}w8PRW^-Z7_8WEhcp5BxDEn;$7=;O=O3Irj1;sO>u925K6j0 zume;1MOH?Vd5AkM)yqKj=2(4lKp$>x=yQ-*Czbt?6*{jD1ghTQ@76U_Yj!Wrmu;s$ z$pOA%QZ1GHDs%^R)f-*TSp&zx!Jl)u2BD~b9*ufAywb|l#^ynZO{ys#8rXCYP(i(w zGaa$5RV^ahC~bdmhAQWNx~~@4S4-$KrDqASLAr)mEtJHJDQ+H8#vW2ZfOQdIbrwh) z12)1y?6FXsYvp5x@~o@u=yy@0f3Q-*kWqiZE@fw#0Nu|zV0AY2 zZBWxj$}|3)XTQG-k*bU={BLNL-bk&#QM+|(`cM8OBfs%?{__a5y`ObglV0w+Fz`c_ zRzzRr`N0#v;mR0&ehfc%vjZr@rX3l921VTTU}pHswp!Z^_1E6-eR%(7v?{V4sK97d zX_pv}M-eF*HFFSmOlEot)E$@UzMFmU>_W*<7yujj3Ys7w$A1nVEI!Ny)T76Oda?k% z0JtPou?eX>2hrRGK5(Il@4_Fpju&ERaMuG5C#VYxR%?HOqX1y-6!fl?`YKpW*M&Ys zlwCtOsZL$d=^V;Xa1`wRzK5K2M#-$xjSv1T6g~u&`pQpdlXF8;xJrGxjnq*fhH!W- zuP975l2M$Ts;2&mDrm{Ox*Y_@w^wz%(Q_$r$m^ZtOD#1>8@v;YdL($cQJkhs$?(Nw z9ox0$lGqRlaho{M)p~zR6S)i`mcAR^d}Iz54S?8>K0|}S1HnX3ZMcgx|=P6gF5C=l{p{}2biueNQFg@+08ym8u!CzCs$;~V6x%3 za>T!E1q{tE45UDC4yk6VHqo?k{pnbG*fc=%Gs%pA9MyK|ia_4>%@e$)QsAiBiMT=V zg@|tCbV%M%^lLMWbu(vzBqjlp=GXL>ro=`B)zfaY;hFrs6LqNqm-;VC_IiuSLA@qm|2M&h#3PE)dcs>gvDWJ3K?F0VJP0A1C)%W z(gZ@;_KQ;ZVBIK5Hi%I)OP?>oP9t?qJ3Atfj#jgq+V;{viAoQ>KUIS@*wn+4)PH|0 zVF3OiR$x|jSQaYH6HpMG*($$GpNAJycuG$o4%-Y<)!pTpf7iyBhE)b_~ot-eM^cn-Mz#4@k+3U_d-} zvjbAHB6qW6D6rU7L_FhoEG3IL0M%q<#KgisuH}3UyB>p`K{&u77@$~Y*6KebnFDci z$PVdPW>N5Z+&IXypdMD*q6C5%S zZW-9pYFU@g{6*rIwVeB_U~`B3D|s$P6uNP@v=JMG^92eVkijVwXoURByM=`#e3QWh zacSVLl`Ix;N9*CDxwD=|b-PDur3fpa&O`{0Yk5AbS0;pq=vpk`T3q(TXP|}uP4jKC z28k(i+2mLKCVrTnt38#k-VI+R&K;mu`dpb!U=Ry_o&br#9=OzCr&+K>Y<67JiMSD1 z6oD^dHOD+Fi@Xbu7|9|#{C8#2kGM}&7y+suaJlj&``mfpQMyqZ57ZIrrk%SNbbOHfhv=?yu9 z*Vqc6$}UKgeTOgDLaEWgF<#s>#aczl*C2(4b&%K?p**Oe&0jzqWoH;d?^*&v))dsY zL!O(pQ~6fs)Y`Ms5ZQ-uFz#s_^kn;LeiF#JdiZ=mh#NMJZf0=+wSvO%};;fyBW7a?80%~QsJ|FJvrf#`*7)h z*?Vu$d(`$lceJi{S-Rfj5F@{DuJY+>{__f;GD!_7$M?oTxMG~%CfD-n+9&H2VJ8*P zBURx0QA*-G-D?CIpqxojYAsozTVq;#r{2ZpJtr>H)j8D8b3m*wWa$Fbf}D|#$RxGr z`|rYinodpe1#&^A8G61Tba9OW_K-4#h6+JF={($nb4nLGbf#HS3HSL}pk2@UiG7XF z?tEko<^%|!qv=Fd@})O@3}Z=7A@?gr_8#29=sM=zl3M2|PGR{qKOSI9`pP%%CDrL# z$<*8mj~YUKZ<3mwik^g&c{p7y?6&7u-b`PQ7Tf(IOmNs)1chyhJIwPADK**$^}RO| zHb`l)r;2M*K++C#>vcfYZU~=aCgtKQOT@+ti->m`>IEC6neX|qc$zyQJCOu&0ziFs z;UUbYp0Th4hoc8BGlyDnl#n5#yoR_vbKUMM@)hu5=pk6Z(~xP8N$ls2Ziu zH+GJ3yVxM51J(FCLL`UwT~y|>qs#5*#Gl^Z3dv+MhNkVK>nFZ)?nEeZ$zjdo z9ln&T8Uq)fGh4h1rSOUEQZ2C1vgr&**1H#3`eK%=+d`+}mgq!>jkP&PGe}mF5zlE( zR#a0~bS&%?1J*@`pYHx}29SM*6Joiab@*Ej^B{rw*_htW58WdVKK}mCqXp zTxUNlyY;2-;+HBzJ<&162ehi^<}Gi1*B6+VW{s@vYjB;xbhVU5r_yaS1E|uS;f;k} z$#_LKcoKN%Fl`4P#J^*?2~?H49GjPw$cA{3veTQg&UR--@4`>v&Ys!KIz!6td6pG9 z0{g@hDnNNu*nV0Sn=DHr#oH%C6UY5l-lQvoyV_~NlJQ*#TDpT>55exjf5|xC&u=2- z#dAQg_h1taXM?CYeiU`tF-4c|@^ziA*D3vc5Deo>uwTMjKiSn+rWYn#al4GF+oC*B3a*pGdF2iScnRvNzgod zC!;2$D{{dy=6!eI`Q0OL^jF$D3r&nJ(I<809ky%*2@rQ{UU|nHL1+C{ru7k7qVTZr zF<)7jO$cE*^AOji2qGx+FI3n@N4Chu);4sd`7M9AY@!0%sQ-hCQIUU|9rn)Y~Nktf~CzS zdEpR?xV**}Y)2p>lvml=%GX>5-X(oG^&O6NTbBJ##AhT9o;-i6{CcuBcJp{zzAv3m z<&N+!zv+9t_?oxsA78?69~){K0SH&pJZ5uz%Wvqkf1{rAlQ5a zVPl>ix~kaCy*Lr$v_t)qt(Y`d&BaJHR>9Lj8WCY2U$N_>tP5HxL>^ED^v%Q=-#GQ^ zO*TnVF7z{xKi$<<+5y5JLjfP2D-rw+$hBKoE1=iPq(+61`y`fabg ziXquFGMEQ(8bK!8nO4;BM9Ah#z01kbt9HK>=fWp3$AKAaei(|J0ExThfIO_870(kP z2>jTRa3e-;W_~E~i=4IX5Y{ARicgLRpz&cDJ$X4~o+lE%o4p=69m3z#o;gd8G{4Nw z>R*&e$+Z#=-ny(nsL9O90AZ>qnK}uVi{H~hyb)I{enP`tRtH}Pz44)e`|dz$LjA^< z%bQ*j6tr`7a8p=CI@iXrkyIxJLOU2c3#-R^KPqCLox}C31G3>50dc5qPL>v?A1aaZ zao!^~)BNS8Oma8<^L`Q3#$rpxcDG+-fC&$n!TX$R2SOECR0(vD;M?77r2;R3bA)Bt zmz<}D?QsvuWO?kX3cHJqad}4>au9d2ybW%;_%bU8=~Xd-wMh`tXCUOFa9}&Nj*?oO zXPq4oiCV5O1+9-4@=8<;?gxo>7_|mngv@Vp@V!LMRDiL`X03>drVVkEXnLFlbisaiepl+L=MceUUp->$A-l8DaTwMu3d zOZQ6{m+CRTCTz1sxYa5kTWO{&41E#{g%@rdljKl1ZUiv?Cz1aF@<=HQ-=#FIfzUM7VEtl`dKi8UB4RDcxdxl<5AJ;U+!lSh&3XgWsKQs;@#wal6LqJt|6Nm zdPd*P+~!{Dr2s1u3JSqb)ToyRe#iY}!|-e}Sfq({y^T?j#95L-EEu8Cq`S;?5|08>AP2bNT4!%LpUt+Pe z$yIF|Tv#)Yv=Razv$LZhXJzP8=tZF0+-*@<;Z1VMeV1WYMWUjTaGNOjm-a`Q>v6?9 zZ(`xv1wix`ak<948Z2pZ>nWFQ9rSGUF&$ zaXHk3@%33>tw*QAou)5=-^4*Y<(Fq{Q6ri>DTh=dn3_R62Ufb&Nj9vT1C3liA2nvP z5`e}iU5qjDtFjqB(eU|OSi{2`S0M=9-_Te+zAMBGcM6@ynq=fPJ`MSznphM0Bg$-! zKu$pjNEzkMk(Ily7!0`{`bdTvQ$V8a$0Kdw;0`GZVb#n6BJ-?Pm&gG|%rXu0hLB?vDC1?=Zs7j6YBjh8IdY#L z>3j%9LX$g34tEyk*(5^wj;PphY6FcjWH%zYa8Yz5v~D1X*Ly3zj5$4$&Y4t{eLcIG zyP5H`tA_XDQ&d_!U;NF~V!UM`_IJl+;IFV$ozuT9c8ji$TV86^Yv`W<$~3RR*v@K*%!e-xdG zKhuvN$9G@mnqhKn?z`m*Dcj6_-mzP1E4PSTvy;e){vG4LvEQ%m>Abpd1*19ZXTY# zZ+_6ie2}m`wDgUOQ~(K`;#QC|TpTa21mt`Wt9y6m4X%*uL@k%3VyO_nJyu-wO+*12 zid=R6!WZPP*^%vkaQ%1;*-bL8z-cbVakE+8RkGrkiXDzLElGcY(J8%I4%s+|6DKi_ z8rE0vp(5p^noX zCm2LB8yX^f%OE<(>S`qzaFOJ~}M@8zKZD)%{Bc5b0|HjG=9Z^=+Y?oFkj0;m>xCu01dO<}-zI1xLno zF)|6_R57mP1o`_7vMdEClngj72dhTVA0L#g<~PVsFUpr9oi`g=okqdtoB%QFDaP9x z9VY-G5UueHbWp6N@7cC6LuF7g63aa##o(0-i$*C4Z-bqZm8j)`->fiNN^TO{9uHSY zqMMu@A3vEyIpnsbhaCyE1<)$CG%y6JBvRB!6eY1il--S8m)bBNog7?BdksRl&h@ku4$ne~=xE`V}KF!SS}XLy#HZm44Q z@{3e%!7oph%fWQ_%;`ryHGjwGZY93cSgu4c7rbIEwHf+iHzf8mK%BjN=tLf`pM;Dg z(JqmS!hufKXw5fH&O7BnE1dmS45@i5*9fxQK7ejutrQk)R=^ZBp=f(k)Po0Aat3w% zhCJ1(k+G`I9w2J6s&nMaRRr0EAkO)`g&oBSpRTdq|1$oz%0X)+pLBY#Mmdy`^$*N@ zTERmz!~wgis7c{%N%%Gxfj?#!iFkuQs+k9Q^GQXkDA45xAS=FctQ;ui0u&0SpY;U@ zvq?&kL&gQb05^sd_UP&7PUlag8&}aZqE!{6Lp1oqcga-!aem|iHSI)@Gs4dbQYRUG zLbi~5O8m%xhd+#;vFpo20vPeaXioeKyJy>B_~3gVsmR1LLUS?| z$4JBKYFw?49HDMGXRUYMC?W~~Ld}ZOfEkN*&OqpgU9CFLu-iY}Q`8FhD$4dR z5+4xju6YMi03<*BAOO_4k*QG^9<uZ|*U?EqgTK#1(7w-A*4DTLmf`Kv^6HnaFh;^DWS-QiyjlO7*y+fEk4f zT;#PlYoHiMOvqdJd5y*c9H#s7=@)8ipn}g9&AQH{H4smUy6)of!!IzpejDEy*l8EY zlRiEi+79JC+PWB}AS@jXoV9g%KJRwlSPv{q7U$D%?jgCGWMN3uL_hLt91#9>8SpVU z*!f-X4hOSI--%$z<^YeWPw6U;7fE7^^5=5$A~5DyzJ?JV9t}GE6%Vx<{tO>kcL9eG5xP7TQb22FUQlA z@SAW#?s3l0KsOw#Fpt_yT2xoV6hQG0;utw!{gtV7TPxvfzC|Uim!mUD6r#n3~K%Y#q0%Qd47ja(mPY}_Ax0U-Wo+GsUPPab$YEUT*!M` z69W=X4R{^2%8|q!wF+in&%lgc9_I{V7|lU9I|0? zx>__@xlNV|0l(XxArud)Jav+?1rfK&O*e0#b}Xgw-%{?l+G=2(Gayy}Xl6&st6YQD zg59mmv66TzNn4?zW%EVj_OY zRrqenJW|yT@P1q96(3%s`**Z%+ZF~xUn0Bt3d|}Vf6G+swTmG32D9j;m7^0Z`lT@j z(MP_rviIH|_XwQ&l*)U9gQE{+cFh}%kDHPjd4UoGyoPN6_UZUxgX7eVEjBg3#RNPksZwU1GT{TU!g|3XW2-v$H;EWwow+@@s1u54O`ks|`FSdDqnc6?srlDglM`{?)bx^n}DN|MX01N zky$VmAh8%s)Zl8X>=t3V$^?@V3{elKDD+9H)6$hc(dm{7-b&vpdUP;y3{h;R=(dVa zg3n=oP}Pq!>DS}vjgLNdKDG>Ce8~JPt^N}{`@}EV#Gk_x|5+Zi14heFV#0xiVF`CM z;zw^YTw)LZ>gzwYo%BMlw72wXk-@U%pKlQ`)9bZPu~N6ytGlXHeiwLg;_k`e?O{4( zYW)}{$O!1LL9aa3E*x%paT+P^*y>+(;pG@f93eOvX!k3agF6i3_5vB7Gs)jQ-{Ho{ z|G6_TSkvldJ2;Q)wI3vHJE+;rw^(<#LO)g6!l*;Q63cW^Lxw2()7^WuN0=+0onf~; z5ckZnGTSs`Ac1yPk@mJW`)NB2zbq#c(h=%sRlty3J8G>!+Vz%SURi3}8Hyym=(tz-sYa!!o?L2I5lv9DC ziPNFmmg=j=_CyY96O)sbZ7t*nmtP4+Rdj~*0YLF}J!CE0Y2t(lH>8YQKBe<-uxOaf9B918kfa}7rYl`F7h?{7upl7zME7dHrjm;{;8Y#Gk$pDl3Q&!rsd_e*Fw%`FfW zhv-D}@uC%*d?VPRL#URLAfs4rx{sK4;tC@w9(TBi`aQkS~H1SJjXzW0c z;QPVXV-;z!Y_X^MhYF;$TsIGS2zE)c#*$pxFd_>jEQVJpK#ME!Zbmbviyrv>2>?pn z!vUhbS&PD5&jnRE-QTgG!3WySoW-682!lxW7~&|nsGc8tg2>W48D%)LJ1qmJ?Y~DF zh*M3R41{#NKQs63<#igNiR+WbbK!s6Z(!`hXZF7(*%Ba<9*Bi23$#ag@Ji*;BDg|U z&Z!(F#4(YqcZsiNz_`Tl!>szjCQAOD?i?k!9I8+xTd^_vnv!WB{!EjaTQSKKroYO8 zyU+E6!tI=2st6mHREO61?3k`79#L^!7Pq6DuH>ra{DJ4B`OdDlHKva9u1MMP*VRR9 zI~MCZYP3p*y9Tz#HO*2xC~%;^qc&tuvp1$_Y*!@0-q;a$v(>FS(c7ymy!NYb|FZt4 z(N>7y)h|T@H73a5X`7t8f!4kGPkqlheo@U(Vz|?In(-{l8>{FN4<8Ao-Yc2Eu5086zJcbqt;EI!kgN* zh(6nvbHQhbw1tOW_DaC7$WVP3GipLwO;^Nr-K`-}r)*y?)T=Q8%)yrRQyqiCM#(4I zLo^FMUQwaBL;?t?D!KjY~X=68-(0C}|1Opw+Pt7%iWt>&-j{D#JSZs;d#(~2lXLq?A%#r0zrG`G(z;&gqu4=%8fZWW z+v(93`{oyLS74pV4%!!#rR6(`Oli-@PG}wjH)fQbBKgVAQEOJ@thd<^Bs2$Z0Cv{^ zmybHCAbVzJLC)XHgz)@?_Lvz^YH!W6cotZGt?D!{qm>^Lc5W`09u>HomNC4WVrt7x zd4m8|o}34A!1)wG%v@eu>=?o22N$xVW71`9Usx(taN{k?9c1S? z&72&AGXk-6++cBr`Q&4RyFq!9y4fSw!+XH$>x;1DCYgPYH4pS6t8016%~kZg1Hu)MvsUI@uC1pU)8;^U+2)8UrhaImvlZjl~ocIuPK zOm%Cqno)B^VTXqiCUp>ID46vgqwC8W1w1g8PoI=I`<=0{tpYX}tDY<}dXl~IEyX%< z^+#-$YbNJH6UM0ix9!RM)|g49_gKq+=-3WfI!)z|JJ$juE)vV**pM1lEVA~Lr{NhI zu3K;?Z9@EOK&TE@bo#du zh$p&g5VWBa6k{*Nc;E8@tT7~tnAYe`+xkGLieiSo%3l296rcQD;&ZrQ_MXn}{A&b@ z_)W5(Y0q6aNb4W8ZewNa`js4g-N{1UPm00;c;ur$QNooi=?x-AsF6wj4Yg&grbNYV zgd0Ju^(dJDVf2#%KoT8v%2)l60T0hWVFZBjeJ9=eGt<)h+fnv!jP-w|u1dZmAF9+c z8|tj<#twsY?j)&lIe96wKy2p`_@nRa?-S97e%sf)4Zl)PxIVezm|%TqGD|aw`;vO? z;^NOsRfw0@S1seC4Kh`NM?a@iq)w$QSqe_CHsh9NjWFp&h0BxZ&W4~g4d zYRP7OmT2Q(#$PZ|y`%G7zVFFO<-S){Mq`p{k!y-`6(1KlLRd2o1|(+Z;qHzAfaqi$ z6R_0Y%Qd}c`_1fofwlBr+^Bpmvyb>5yVW3CsjQ0mqg%wKV0OV!CKZ5saogyX&5i>@ zz9yiblP&P`>f4{*|9^rMNu@xPbl$6XWYtfE_y;PZQGIC79}dp{Lf^C^C>BK z7qsHdPKHK?vVp6$NxzoZoZzmWxuvJ#5l@x}Ip2xF5oPl#8L!UUp5k3Iy@rfVy&|Gl zh%De7x!6S9KB6zYe``rm;oIKF9~OP~2v-{4+-IQ63UWl=Gq0YOElVj_zM5S~R%O@! z8!!*GSm0U&?|fGm3ve;#oV!{bnxUlQbm7j~;}O@_c^kiLP&NiR=i*5~Ao^~sRvWo= zH}iy`(tPXa7n-hMbY9ouqUFtDylaGMf`NhR7nMG#+k=0PebsLOT>TA)(5Ihq&UV|q z%y=Zev~nLeH6>?R^TvU*sB}iHao-LB4f~|nOoA(QFSB!EA#^V483QWXh06g#Tui~%83aArpoU&%l zgU3y9722PPK#TG&c@PD?{dJ?V6nKwsH#MFl$nii&};OX{tsWU+YE&C}=Ur13_!Wn}K{&<~c| z?oE3lsihpp_cXUK;di9tI7>ZP)0EZ)F<=w0nu2ESU8E|5(0p(j=ont@n$o_@)C-1( z#IWh_CG5V`>rV%p!JO-^n7Ggz=z;H}iND;?@59C3MHj(4!r*5`RWE$q3XbfHee%Ff z3xcH?Z8uj35)^zH4{gJdrLN;iEO@!AOj=;u(`%MBOrZl~s7tz3v`u{X;N3l8F~bgW zGbNUb{4d@tfS&bbB2Bk^8Ss^-@GMsM5eEQW;(w%wyyL8cx;hWRHRkBuAFWWStU-Zc zR#q?Mm_ngFB{0bT^pfGyAaz5zPRaP`@_u40o4*V-rt1fQoet4p<*>%e(O)NsBi<#5 zaGoSsQ!1zwUQa{J+aODoLs_G#c>s$(4RAP3xRb17i$_)h)+*`H(&_zWv6}aEzHmC* z>M)PWp%ck#imi?F{ZF);a8)lF5m9Fg3ek_CXjf~#KV6Wp#F#o?94S)zjH08isdP$(Uy zLy+qP0_gPp`T8bh`u*`7oASI*ttF@iM+7I*lI3XQFcv-jnL6S08gJt_2GwAH*Z%J+ z3Prno-yK2(tgn{Tjel48QNqiDA>0>oWeDYqy5IwkCDa4dgA z9%<1TFFlcwk!QozGrjc0X5f=zE8uwVAocP3e8-ITbpsIr`@1^Zz8Znw-yaM~B?-+n zW^Zc0-N@H$CZQ@xaBuql@mQ$+rXs~oXpqz;a#}B*YO@2Z!%muik=RdfbY9yeXkJ-1 zY$6(s?%(b+HZRn){}L1lh6j^e12|;aA7F(W1}R?^VJp9qrrhF0U1>CrioGtR1k=l$ z>seE)yMHWr?yhxP$PMb4ssu@*p*sn3Z8S}c5;B$cC>pC#S~|zo6EU0rGJa6&$ zid8p!y69%#i(VCJ?yRz4-kIQitvVO!NA2MMy#s-+(R{pVkoz}vV(>Qiz#0&k=t86L zYH#QAGlw;!z3Lz#774Dec6JLDIGfAeJ_8i!$0kU*p6i4j=uYo(WRtIe17qm>Z-$*x z`v}YBt3z6T>D`2hhnSMIg?tTMFd@IPzIs<(5YcOpzyMLppB!{po_iT`m1x@+r)2i$ zgl9huD=B-lKKiKOMn?G$#XH*CwKrmJD(zHJeA7UQU}lXqza6=9217S26Qx+08b88P=>T~0doz>Qz}+#C=i2*%phgFe$8j!fx=R}9+pMx$E3X_kFgZ=)mEt>P1; zJDl6JYd6g@f2p%25*4qY4FL*If`JNji2iPGb8I2$yh<7}77wGk9E$;f)Xn=pD6)Y$g%lQQq`{~xkOCj5-zpCM3HqV6BzAMjurBXJNK(quD^~T^@E#MPj8mp6w_W6ZBU$_|2v^)3DCxq*G~?mR1)8>W zk(&XshIpF`o{#9vy@@w0+a}fhX4e|0AErLbn&b)Hcgl|?^x6FntMyEl%*7w`eVQ%~XCas}r1IL|{UIluOw@t2PZQhD} zmJ#cH_MFe%RsO|G9#vB%ud0;97x73r8e|;v2G7z-BcVEwLajL4J;eI}x8&Qu6}|9< z<}BxA2@p8)KUi_ytI}jyws|)IddT;JQxhn9$(ak;G~d0lSmm$YF3>L^Yk%p9OyB>M z$~w-03TOb=uS1QU4;lkuah@}=l6Qg*ST&NLF=UdqlqhI?gM@Ve)?7x?tO4c40_pc6 z6B%;rc)(6*=2Vep{7>tX5#!98CP5D?W1s%r-E2-zp!xteXPyX6ban8*-c<j`J42OrARL`<3shyDjEOH{$#f`oMg)|w!JKLw-=?ngTcb#nJ0IDhGY&voK9w?3~q9=$E_ zH8Y8t&7d8aoPN^!U%tqqXrlc4f8GF)AzyKEOP$D9Ol6&WOWXH`UZWMHrY>2JF7cK2F0P6S=K3<_ z^R!7+uk|`u<1sl6SLdp64NZv0V2 zFZ0Kj5|CJNC#eZT{_hm0p;NDaZ~6|M_3kiu?mM~QdtkeKD9@(YZgj@jv-JF_se=_$ zf0IK4)p#~SLVo}lC38YI3vG5=VjK^h&L1=y(h0?*3)W5aSuaXbhB;mjeDHAUy$YLy zPyaimndzbFEbo{Wn9&zvmAWYVfD}JKH+vM*ak=u=IbWO;LgD;B^>Son!!B}Ug{H(i z>}v_}BKe%sGT(IN{kgy!Fic5^+gK;gElC8ly&nIs#!r#937dJPs=KUIG6=1lhTyxD zV-2MCK}>_8;zGt>9tQV?JuChC{*H}l@-+@vHB>Cbqt}+3sb;?K!h68dy+s)t7C}2Z?Q#sOUaaQ=~5YUij{Dcag%YhW%D-35r!|5<@ zzG6|YP>H9`co+KSpzwXAfkjqgu8$bY=s=V}9mB24qN=+0y$0P<+YRC53evm-8vGjf0 zcC`g7Z#$e%M@Q!H$?0GrDLIo}GGxnmg^WUfvH(d?%YX_w>Tjvz-!sARop0L@`0p%` z7-s0!6=s%*yr5<$h+_4~LOW!DcYBWp??0*l@-My5sEB2fyJ!-1;<=`BchSxz;KntQ z{Y403JBScc_{KD3CxE-Lcf!ITwC>|E2^_mTjg-pgxGoqEnGu8@QR^bso`xB=i@W+L&-Vx?atVhvAF$v z6@bJ4sX6o-o|{&2kji{jh$B#fX(dXQ1%|GrE`)Lomp-h0`NL9G8z$eSxtB`Ra&R-} ze>pa7ho;dP4si#0Scaas#*8Bu$rE@un_3|n++jE(DGThkbr`0c+%G5O03-)u>|D51 zNl%xROzAM*!gCox_zzJZrqAysh zTqfhXF4br74vJbZYB+}2z)WY8AK#` z6pMwEqHZXp+A?8UDOCanOe>s65i%+e$`E^p;!^XpeFL85$Ey(dK6)*zbg5{$RzDn_ zfyxvyVbMV_o$d7@j6-n7NVov^JLGs$rnvR-5MuK4%F}eODy-?JKS0Kzdup$0CG^A? zz^O}ej9O6N^BOy+*9of@8v8@$9}#84=3%P*x+`$Nm10WMCF_o3Pb|&%xk$N~lZO-E zhq%hOHT>+!Q7$7b=BT!m$39FhM)bm@symtXIEANoI8G^p1B@7@&h-XF>{QoUOqc54 zvg=MjUfCPWo(eL8VDf`xA2tHffhZgH_rqSA(Gp=ArYnFOim88>`UEcLF$<#20IJNd zZmzUc{=alVI$Cjp{WQ@G5Hk`;&y9e|#mU{wx+wnL(|Xv(EX21mUGnDztahRc1=(@$ zr&`^?u2B8)sdn?aM_Gf8*JJW`+`s?0C6he}H_JX<*R3%D*gSJ7)HnXGeehW#<)ZNu z2=++uH%(l=pOU?1Q$Z}!mb8dz`(vXi*OOzl9c1BFJX6PVM`P;^N?mBVrIoLiYGJ05FqKXTEp&kg;KRAR? zuNRPV)Ktsf{A4b1k$UjtbS3PsL&XEq1Nd{V?=Hb7vYDGtrp#WRqx_w-vG^1jhOf_K zDmStIbL||&wkgTJh>y>8j-SNr(S)k7*6F1oIYyGW$0ssob%n>AOwMaz#{$8c^nTf7djDxPxly|06Mq<5o&Nvbf zg;&qK-Z1$?s-mtY1)n?>GfpXkgK=Xl$jk3RuMYv3*yN9>+zFALLwlfWV)_E1)po`6 zjimoH0F4r@M5xxzf}7`9dFjPys**V)&ucpfn{UfRWCUSEdkaDgU4`xNCLTwO_XcCqzuHtTpmK)n4QCAl|$p5I#^ z(R8zAa=nS^54N>o+KI=$4bl&+EVP=1xv7`ucO z9WQXnSbP~{yyjB(kOU+0mW1xSHx|diA$Z#11Wd$OV-K)7H*$A9K$8D6xqxY61#9}% zXnC+3CA)I0v|Sody$y{LiQXVc`tI~J-K<&aRH zEN@I5_Id5XnVZ+*9$1l~JfU(cb@$y@FKNqXMj&@g|3q;Asza0IWGGogPu$EQ*Xf4%yB zhOtOK3#6p6=5YTmrFyuU^xyD_`l&>zgZZqfys~S_YZPe^q(zg&d9lYCoT=)a<=v_5 zT@n0?R!|MxcN(WKoUk9RquY5Y{gU_k9lHUS2egJ35$89RGahe=B#OD+S!Z8^H4NUy zSy=KZCGJwKx#aluL>&e^Pht$q`)Y2^XD9>+h#74TDTong2E;iUtT6DE7DCg%aWpUQ zWY~fJwrKr+t0zcX6$W@pDb6L;?R)%HSs**&Z1s<2E{=~^cJg74?hvRKccC-jsas_K)4Mys!T-PE1Jsws;sFa*m8X-UrC|`i@Ua1)|4a;1BcKB+zdC zgOU=Xca8hqFL{rbW)7)9<@>6V_22>Xo>H}S5R2!n%k0j5Yc5}2yPCfH^@U&B;4nCAk4xMR{b6S^{DG{U=vk^J~crhJ*2#up(U6${ zh_rs7WNh4yw5*Hwsf1tZx3JdUY=k$Snuv!|nE{|p*sgaJLelY4f{tDXELD&p0Kjr) zSR#y>=7!H7@?S9$SZ=8u_p1m?uC!DtJ|4|x%HM*W1{7rWFj*z4O}H3{7sP}O(xx3= z4kr2)6LVZ)y*7I|O;$Ry5ve^84L)!m(SLLyHoSa)%qCYNC+6BRVjOJ?q>8)5ZGn5h@M`|9wL+_th7y7#9KG%y{sNg1 zjx1q84e>x}iiCNIgvx^XqeZn%HIVW;xCsHzbipMSBSYCBw_;=o9pPI6?wm%_8Nh&I zWB?nK&(ZqEfP!|Vv&E25mI;ZZBT91K_2jo&1D@YF4SR1%0RhS7lznVS4mV;bJ+|eD zz&v3D>$*X(e~ER9hE^>||54i0*dx=c4p0AKb$pQNKdj=m4p!X2v?iQboZW98;BsT1 z+!e35U8Q4}xWTRwngPNnumYX-rSQ~&z#A^oBfg`?uBXPb1Y02RhbnwD$dE{@YDjIP zB+O@NwUAH(<&v6WWc9j{Hyfn-?nFG(dNNi@nFC5EKv7s&Vze_T2v&_Na{~ZEU0|IX zK*@Dl=x>HtRz+MECb;*sR74RKA*y!Q%5YI-0;fUa$gAp%Q zvEb)e1Ddl2Kn8l9Ry~Woev7DhvGTVjEUI1ZV(WoF(-56??acS&C7eKie&le>^oj1u z%u`Q&)@HFoG4VRTd`6#CQGp<)`=L7+aOWBDep1$$J4jCK;4MNm@0Lr_8KMW<3*l44 zRn2MBMAfj6b>+x1HX>6D<{}1G1=otXu~M2O_B7|i%D{HK(vx^ZD2>Qmhvl$qFXteR z;1Oo)K!;+4OEGwtxp%r4>?T%Lh)1~5V83s8F*%BbyA(bSzyffoxH#92=)Y!U>GIN( zjdQGpLkPR&DTxz5B4fI4e8Edqz(4EM03B>{-X3Wa3xY+M!lPJD12fphlD&hLP*Z?X z%O-#j!P*;^EU9E5P3gdT*i6RA>U)6{fep21^2$LXs?I6@R{CpL@ixQkY3Y-M}=QOUS!pjk-7?9{tvkHWkXC{^#4f{98?Jq z(rE=t&;J_RSJk1SY{#TG*F`I1+PwACn+@74pJV@dwl^-o z%90Lo0myWre+U(rq5I^1|n0S zo_UY0X^^1Kk+|Z(10~Z*O;7)bKAS^Cp5JGLfLgFY4b+bC?{W!?dqh>_WN1J;RReiT z7hfx#o10-eWsar`n86+as6!m6Qw*uz0(cTQgu?s^P8LQ z#F5m31F4J^?A)?y|B~u%j7#6Gw$ryOoA>Q;0G+Ui22Vdx`(Alh4q2tvBnuNWn0R76 z;b1fLD9b!f%Jz}LmUaAgn~kED37&lDnwE(Z`38o5&(<^vlC`Vc6K9AcssUXq2kw{g z5P8w}3wiLc`I!1jSX&8ImM#0_y7~cE`##|5sIx#zD>|K-xU+UqXx%s#tg{ds2O`(((fpwGI%VB`tbvcRCG!~Fljm_Qgyi6$Et596PhlpqLk(i&?550UL-=8r)KrqXoAzJySu zG7=MFD7a$GoK<4lnq|pZhd(0`sMpwE!G~e{>;B{Up5Wq1A@`k zoj^bLzBYRVgA%rn6nW*a?ww2?32^x5r?GK{^1bp!>Sqrdah(+8xw8Rnm!H5tH4C`T z4G)8q?iA`CwvR0=y%&>29e@7mizWHMG|VaX%e#t;a+^#Pl7 z1>#x^ON#D#`k5CTsCIeu^_$PH@dvdQx}ZnsZlI5tG47CseOyHObtMTh*z-l4!COe? zX*opnH>eW$`gn$ww@ulP%}Pxkty*Q`mx zob+JH_UG&K?lT0lSI&%scbI3Qwz34g3wQ6mBD&0!kteQo*>r!#?&U%3x~?jS2#O*M z0@VUA)+tYgXeJaxP?Hg46$p*s!CrLS`TaX4)&+OmDI%La+X!6wtO7qP)}HNeE`Ez< z!Zr{Wla*syYrYOJt(80T**|mtxzCZe2O9iOJ;zpxtGaR;g=S(ZU`H-)b9IlZo$G#o zw3oQgwytdaPK_6AxGhHMh*Pw|^_!!{g+5=ZKa`!4yZIU`{zFv1RlD<9mcH&8 z{itvCkE{0a*PWkykWii38~xEz?8g0@)4lNkGC4Fj6yxqFp&1kJ1SH;05koh?fo~2d zUU^M(!g=h#vWa_Qqt(KgUzt0VEQ*q23PmGszd-C@lkn*jM|)_;~N}`E3u!@}yK5+QZo)E>a#eaCx;3xg*N%C^-r6+oEmIvN`rhQofh8R7VS{N-< z0173oXS>BGL4p*CzH$~20nv3v{o7v7g_Qt^@LR0Yiwi`ejGV=c@YE~3=tkA?8&kj= zlrIVB;tgr`2Jp8i&}yFYhVU9eEc^D<1+V2qcoVTsBUZtrEms79%_P7k>DrwnS}*hR zorRRuF6o%V>tK5xR-dIUlT-E9@^f6|+m#GZlj_o>v4YFwWoH#AO$^t_7?d!6pE~FC ztFc$Dc2>`?@V`^NZ8keegm%6FcD1%Lpixd{-}S`5>I2{KJxDPDPC(7U@20Op1=t#>`w zCEqXT9=#R!ZnfHd^pwo?P|2GmM}J+F+Krro+y{j`3>X$vYWQy`XN%x1Qn&MUdKg-hVU}5cKD5Mv`U!bj>I2e(4L5vA6E`dqnBZ_-{KA_{>MH-NwV=%ES@uctGaW zLqwM`l$Oib-SwwyU+~Nf$M%7Z48v;!*#KRJMG2MiA+rh_*sfZI{ew{ct@IBL5rgS+ zIS9eRhYX2R9o@`^ofr}UA}*)Z1|la;r56Qq7P1AZESg@y0Cm`@$nuT%n(mFAk|mLY zwvS4z=cO<~*XDP8Ceiw??os2f#y6hbJXE@!J-WZTu^#zx%hcXQnR|{S~ zADOm}4Nxw;nK>sM_Zk;8|FiyXqMT!c#?EiX?v9iL0B2yFy$K(%W_&sjHuim?{1bI` zpq%Kh0r~-`Sg1#sp$ye>{Ovss=J?Mx9Kw0+gk@**^A}t*jhz-kW$eeQ-BBv*9?;8F zr^IJ0x%FIiR-OnM>Udl=94ty51H$E{mMEQul)vi22a^u==-v>K3Dz~`P4w)ycuk3U z8|7|bX%zfyr_ye^G~@G&`TL)nL}lNTV&?>5k{dt#|8sa%>-U_#RO+xFF*V&C6(oo5 z)2{mq&z529doP%YQxXT#v~0Zr5V5hisdOpl11*P6!aN8i4#k?g=sb<~>3@;Zu_~_# zT2txOM>0Z&k zGd0u1_UM!d>HjuY8q!E)IO=82d9w{*Ms%k#>OfV}CzU%H+e`7g+isy_;eev9Q$hPw zrq*^C6@{}!XK&mU{TwN+iSu4Lq?%hU5YxO-viL1pdE(@_d$RG+cb70AN}mqtzEbQJ zfbt-)=oCJ<9!lc_UqsAgPxG>R`a+Cu5nf%}ES3u&`5O7XN%4eRQ}O=MC&nirbqez| zxf7bfr(+3aNzK6=@OUQOK)*D4)bpCMZZrC%uWj%SnLVk?F<*TNAUA*KisCz+5lxTL zYvq`{e?yt8jDWS^Dv6EdPcDL0gh(`rifeYfXpXkqo4Hk5N<^J4DFq7e1f zBiEX3?m^{QdDJ*DXyQh@#6)hTV)-IBuo$dl9)R>KX8s<U|@piIly$bW;G z?g#n(bNO!FciTOBW{*?EykI&zf$5<4fqA8GKJnVCfd-v(GQxzQB@T~9Oh;*gL|oPx zSph6($V-(Z1ZZ4bkL4_SvH>N^vIiqR1i&H)>dL(FXDxw67J2{{2ZfzjQ?UoL6(Axgk7oPWISR6-Lx< zfhb6n_(X#Bimp-*pqf5$yDi1i%_Cdh_}E_lqC%h4YIaW0YOnvJ;(n=rv#BR8M=xc| z*IJkX*Q>hpFqA1SD2II0;(fz1PxU?}j@l4h&a7ArNCQI^#%^I~tyeWb+N&u)XzM*i z=K_CBj_eE>d?+94&d7XBTx}D!{`e~5Q&sog72T+H(9AW2Dc5vj)$et$^nzQg|DAU* zp}g08ly&j#1$~uF`I640(I)nlhaT6}pGkyS$oc|Bk7TS9h{AtW4kEAp1S`jVK52k) ztZx1^q}+Z%ykLFk&)5l=$*Pic*Y7gcyb9R8dcinu(Qxq%^#R6Y>Z+8!L$Q1$^dd9_ zLYGdLTqec0S2$#aW?z7%Tx8Oo#VgjOjU?5**M0pl)I9x`4Z;4 zWdtrUm#Cf?5xfTqt&Rm>YA>70jqke@$2Jr$_JLi&R51LB>6T%|7f-Pu*sRML0n#sV zZqy9LWnz<_Td%^G-NJ&j<{l1xl!i0#e6gMD-rcUC?C__(__3W(?)l4axmT1(p<`SO z%selC`RbXS2WYR(bTvaDs`mCCsif~VhPecEP^#>S8Y`Pu_}Ehe3-81EYN5<`r;R;o zrUQf?8D~Z}>=Sr%g`?z0u^2i)<}nf}QE7k3a<)0sOS3`R?-DrPrq$r-L+h3YYi2gI zVB&4tlW|%T_7&N9&A-{Xg{0Cn?@WlwR<_YK8ABw^kI>Q*y*YdEj+gyml5^oggJD)N zI7b95SU;!Gr2Loby+KFxnH7ZAp|e6F7PPJHoqGEU-bLU3Mt|J#v;6THmCeR#y;on} z11_~lE42Vo1@gU!`>VhyLL`Bp@}*4*;5%tH;hgDw4m!9aO5U6CN#y$3`@*Gc4a}{< z!>>r)$j)$!V|!rA+Eb~aDQA9HRjH^HC8F7hA6-nP-S=yLfSc_M7GL=CS%|K6xYFtTv4RF8itSvh=^WYKt zj!u{Pe;sAGn}J@Q~=o;B(wRc0y^YH`j`?f8Tl1aR2&I;?1K6)@C|C9JrgY zE^;Tm1G)FH0U1XT)?^MY&`{S5SWwj^A6=cs(#5fWLHZq$AfPaDk62rEW`C~0 z08k3zAWU%A9d4(e8@!m;0i8F146(7()&A%EY|3sp0D&;b!K>a>rSRcsO2Lo-e`v>ll&2QJJ4|oB zY0=N@>hiLGG4+d;V?@0>BTwQ5p`X_mls2Z9_1e^6jGedn)=4#W3500S~6Hl!$&B+0z%~i1BMhA{v>5=G0 zNZ+bpRt-VX-JVw}l2CHrSC8TrTVm0=JZWG(Q>ebJ;$J>z_$INR{<1zp4zvT1Zg#e8 z*8D=meG4Uy@|WfFEGqtk=d9UwzP3-h%)>lH?4KzQa&lo)kHB3A$C)b=WAaHX) zR8&K@XCvNB2v8`-MG#_unW#HCtJu?oksM}PA(oa%0tpIg1c+>`06FM`FKB z)p4Q6VrArhI3NIC6+dlDUc?ON?wSL+$}qoFyiaPuTw@i$jOTZsXqN-OMm>$bBRNxv ziZGiUtI=^pd_oKrYU>F6OHqSA){Hjt9g-?R=2NMr>RKnl>S`y(FD_@JpE@N)%iqBtNaA3m;7*d8 zWf;7$qpSY2w*`*sRKN6*nJ1+sI;gTV_pp{xMPgct3@ybsm61vP&@~w8gn({YruxHS zye`uMH~TWo^!1enkdk`ca<$-q_d#)vl8T3w?{tAX$JBv{>z)4YE0^h5k^1FXin<)7 zuwp~jOVaJNmEiHyH9`|2l#(-EAC~|%5vuF%@SYO%gLG=PEkTGP?A(1P1K>S>O|2q>k78@%e12e$WHA z+d%oZ+Yvi#ttgixSNbGY)}O6pK}ll&eA)M1$xZRy-0vsz68GMTN2*L*z!5(Pfw(q* z+7NdmwH?#z&>?2pHi0gTNBIbWkxW{oJ>*U^=^ zd8jF69|Yy?1nxsif2O8)1l+*T!n8mxA>J^3@;I%fE~Ac_r=k$oE+Cj5$GT8uYR6n}A2F9(R*r*!ryj{=i=fWC8m& z|LH^a>kF?@w2F$dK4H~cawZ1|F(iJnqPS|Ha754?4SwUTJopPx`UP>8M>CV>1SPHN zhq~qLaF~MJ${POAJDVNIS0COxm1TVyc_{u4P!c$hA3Pv1DA)5+Gn}1EaG7}8qom(` z;^+sR8)RJx6S{WiODFQ5RPOI}YtO!hrayCoga_yE=l{22Xt`#eM6Rqt1-+Y)lDrNq z$`?b7Qopv;?DyN{0=&12mp4PC{1SlRAiz)5``R{nm@z-J!ml+yBza(7Vy+=+r4>9+ zsib(^mAtI+Do>3g-Q<>(#P1~CpK3a~h%knIs^9QOLR>zL_n7S7qx?P)-#|2`z zl|M-*VTkmq=ufr8!1FO5=%|&1xXvpdRm)QOZ3N%W9e)6!&c8=?CjtO<{$z{#R_}oE zq^apNn8{*k`H4SbY1u9lH$yURVA7vV>+FsAdYo8ZqIlXBex&MDpaQl1-=su*fw$G} z{5~XYRKEX4RP_2@xcRZ?6>fHEVTY?2vqydq!bGwusp@5gKFmZi%6Y1xFtmT+s=9Hg z_9CO~dOf9tV+%0-hS`6%>~9!*ct83y)F$Gc#J9!`F~!|w6TKfyzi;0x%hJQu->Xcw z3jF-o^Qp?)^xZDPN)`T}4&YqgTbp_uNI(Hy9Q6FDO(^ezQQ>INlHLBUV3SLsT0FBE zDmVQvKf5BexL%wBj0RL4m`;)U!N8x9Ti08RX=&Rb-;Gw0X!1O9r9yBMk(O#QR(bTi z>F4`r$IbP~3sZCNo<(1kt2>gGo|UH9hx|x=7FH4aO|ohJeicq*^3iPey$ah0AM$=K z0ja+Syuc``IBTMy{Mgz}YKifGIQY4|)HgWd_udy@gnw6@HvM#GB26meTpA*B{l|%2 zak)p(i30bU#XNOPdS}5!{;XG1@qItTLAxI z_^T!@9-f}`b@qQn(0Zt1(-IPbIQLo6jaSh&GR;kqt z0)q17?GcZH>iMx?RF?B3zD6Dh*vM_lM)D>KcE-jCg`+rel#q>?O87u1>Vo69o@K-L zWs&&f=V7a#)L>?JqU9aiokIADS*`Zbij&D+t-p~u6JsxAKm2*s#GP8{<7bhtJGuN&>P$8Q zM7S}>ww?coPaeuKbn}MCKKhQ1l!JY081;m|;>DR9%+@~mBko4`$t1gdIkNm+uk&9$ z4;Vp?*j$WZF5yU#me#7K(HkEf1L5MFzqrl1yvx+=+9-)}ClU@$Q#-IxV0k@OH92vs zd_*j3Ih$d8KuJskeeLsfd6m*L-f$j-)*Zv{FMU(GvB0LPUT2z9ANK`8hK{{1oxz__dYgLclK=`nx*_B@!9I9R^?XabB6?l1r8PZm z!@OP$YMfr^Cd~hQ6)7=|2*&}dI?tcj{llBwtmGd3@3eeJ$p@(Ikn1A(*(G_F`ohXD zlHAMKo%=6OC+Cz%=~yqy-8Mk%KMD#4^x^$;j7|WDvKAbaibBfkvWQ(&I#5E+uMLIk zP8Nh1+H3-JX_Q0(2~$&JT^bN9BC#8CiVSuDf;9IYQ2^#P0umB4Xi^1jBul}{1`}EE z0amDW`-U>!lliIRkNKm*-xw^dc(>%xi}SRQ9HcsS{1B@wrRRKqTSK{b<0sfvhSe z)P9jyxhtQHKoK*3zkgMJlAhpi(hT}iIP)<0U;p30;)yZ@tO^3p*8h zCC3>5ML}U+>r89YtJ||KzL-O@u=0iPn zxMDsAVe2e^m74aCHV3>Pmp>9OomfhU+2~U%15MdUJh_-27EzF0rj9?JbX{XQMD5gH zlyBx?qGENFL^3XZ?tJmIU235%@UFt{?^6+I(*hCeqgl-}HgkV`N(a=Q9QJLn?+u5r zA&XeBU_EX0+kJkm`}#S;QC=+_yoC{6 z-{bXBJ?4o3Q7LSfnS9$;Xmiu27T0lK=WtQSoU+Y|O9G@LXTQ33O}w9S5rR%%2X;@M zEe(F-eIw@Ik;js(_psV4Z+|5}VYzwiWhj=OXv)MsZyXUw&hM;axq#*(%RFe|SYadH zX=VGgf+@J-4Ut>DN2k7y?s#6X=+yt5FqGkv#ELoiaJNoHX-jPVr#Q3wDDA20 z^3y$2brO1~U(~7X5fGCOq~Akj%>0(`{c_L^TXDOq?Kd^06b6wZ10u77ZK{#|U>)1k zF9f_Mio=38S$K=2vvlQmEe#B2ssv-InRCO*hBy`=PFgiL%as4pw3MBghH@*b{n%-> zE{FN>@dDUvm?m0rK=H4^%^E@L(^^gC9>sAF*9PzB86!vC4OV;Du_^`E(%o4Jwzs`u z1d#kdj?3^RO4h21`0`ATIaP#@>CCwKkt^!Ym34}@p z6NI0@VQTq;QBf-9N0(q;2%s`DU2mXH`ws3{kg9mmg@WC-Pvj1I$uWE=wlelpz~AAQ z=^GzSD$A@2rt@*Whkq$oY3jt9OyH(|B_H%1=d*uZBL8j)lFzts(D~A3;Xf}JfJgHq zm;S^E2M0qsXQaMI)YYSS#9u&kYIUZ97t&l=R~EC%3C}QgIvr*83O5{8=5}+0xVovd zupY^b&j7%cS?&oP+1Pt)M5T+Zm4(5nmhM-_LpWgcZKHaNo<_3c9z=nKbWHuT`1X6- zHgyr*bSIBMqNcanfq@&9u3bU_PhK2Y28IEtmCk`T#d|xvIc|r5Jm0=x6uqO4X3z2DOuBXT>KJ`jWAZ{#*h0Qhj1InMuzN92NaQs*CBp z*T3~cs;Blf``O9-XZh8FyhEaIt}nY_d>p0#Vo$eGF=>5SXf?ytyY|k|Cs4&u{e5PVmZ`nAe-Eo)#WxVM1kBc~PeA{x!}OvGTCyA1iXFfcIlrFoDdGsL`|%nP@SX4(9_Z=0m-s zowB=h8__|xu&%e@F=Qq7S1$iZmtZ`(MC~&mLU)oUf&*XGfvOqt9nKrAJo9DT6S3)I zV)2d`rmQ49xYjCRB4$4{q6<-XzWmac=3vlqkA--sckrz*BAN^NDPw<3_mFNHc^iLP zPPFjJv1TbVUC>YkXUK3=X%wwicpfZ1X3Uj}h+AH+)R_dIxK7hgAcrdRQl6TSN*&*E zU_`HOv+FDfp7l>5^qhs*-dLR6XL5GrISb*h%GiDtgP*INTouTna%C^UYYCbNe8cf z3LkBs>I_(?tEHZ8P>lDt+grQLw~Lf`zPZ42xK6m7C?yb~eWmU*Y;BNl_r3Y+%~$WQ zulE@~dvN{zrj+ut4PN~02bKT+Eqpj)*nEQecjwjCxg3RGpWi=QLX3ld@T&Ok-tC&9 zu7cY>5cymww7IHiD7H6H_%l&>`S#mJxpyjoA6H;+J!Te<$O{4jcBB>-1m%;Y78b`i zQ0c&=!N8rdfPHMd5c>W1f5h2F;_okjBxCF{RQ?n6HjG^U@szwdiS^a4PuNfXW6**b zT7F5VoWGO;!!E2{llid7;%`#;^rcLQOWym!dEbcS|H}FO4?G`M&i9e?kxMy?uUM)B z2=sEz23RZpxIf;kg~8j`Kl2OCyl?%(k>~q*j8Cy*r%z%2%=-<&fOnH}Nl$~&Nbb&x zoB#v@z->XG!hrorqy5i)01?;>0Kj1Bxt z???WfM=$49ofEq0Uo@c^yiAzxh0R@G0k+bu{`_ zdfTeMlBIG=IKRIBe2HrUo2*l{@loOE)pZuG#o9yKsAH*iPN`{bFkk7f*FsPD>6iBW z4xeVL2bk~m6E+8!I4igi&whZ1{l%#0(Ufw(WA$N8*vmkfx7@C~I@*_a>eueee7<3v z@y|6r8);Y5uAbBRgGu?KeJhXs+#P2_dx-k;(UwU0UX&$FFFKwsNEoGfoj92rFOLo} z&zokb1^6fY7pE4V_J2@q0wY=&Qc;cpqm>+ny?+r0&7C-IbeP|8h^vd<| ztW$yc))e#1%{wZQmguRlybB{QXui6f2r(h0Oip*GCZMHMNSVn2opbG)oW9^OJ0W?& znCo33$nigQqsZK*-%><8dFCbrtM6lhkSC_fOMWi91id2E7?dLC&EAK`rK2y{$|n|V zyGWmER>me)4;>S^;=po&Z@`Kl5~-1u#j#j*jVyw_S#wSt8@NHRO$o% z6qTRzDAZ&S?F_Ao?#kIm@q2uU?lzMek_L+i?YC54nVb~Sk_?2LId(6ORq-B|vP*qI zjN1J@c5HjCA6AdP79=HN@?>;{SoUYTD)97E+wXh|y{kD52L0@A{(hT2u*ih>9d3-! zwMMHJtL3LtLp`^6P8)OYMfD-bum?|c8+$ei4Mlj`uiBP$zOQ`v;Iiv}W@XZ6p(^m& zkHX^MB9*&z-=jy@dX}tadRNUfc2)8NZ+v3Mcb&a&it20Co3F`g|8Nw1PWu~E2NB8Z zoH8?Q_Ushdn|i#_cyfsBUX=Xk^9st8!!i&&T)q054?l3L)v}Nm@<-JCV#QI(h^Xz9 zyXAQux34>W`_#M(E+pK(8;I}f5zxlael6tDTkdP|*>!g{4%iq-RS3cqQC*Gu&YA=N zSh_b}ju8u@jVDBKFqrQwcrY1=Oij^hBFO%UIsp+@d`;FG_Fdlmb?Bw{*@Ia<^8p5* zBujSzI$Ir15xnb)Cc^h#8QfQb3!gP$_EA@fLXVvO>sXdhf5r7e_PjcGe18v&a)5z) z$B4){{PZDVsF5zMfveaJxc((!wqEcraa4;gxQrw=*9 za#F{<%6X`vkE|5^6r^Q8!oV9BF9IEF@V6NYI(e~5yH(u*e=9B1PIpGEPEBrZk!%oC zkSjOxmnZH59nUeh1j}T8tTS(_xV?)TsNI;>w;DQ`C@@G9^$ahrM`s$V<`;GieX)bd zJJ=kAtIs_XC-%&X6odSv7LL~9yakt|`AfNGqs7{-)$Ge5>ndMArai^zzKRO(tol+; zd?;6#bMw;6LDmHZeatx1#+o^u!`XTWlGo-leEC+h6C#a&kfoktlCOE%{ps9~dj~%| zVu}m~?OgBWS3>o?O#QcdKTrp?G?}xApHOL#VnRV<*+p0%o8+}TTdQ}d%lu`Q!R&-i1+5z59{@ROk77rhg^Uv0$ zcMU`uJ?f4*vsjJy^%r=t=7!dQDZVy%gD)e178MS*d2drBnvVz>c!0t(#yNS9YUS>; z8))BaH-7V_hj#gxGGATX6Ddrr##$vm>Z;lguDlM;D-c$;^&|Co(@zzi=e0?}t=qc0 zx>y-ySFtLH{(W-r>Y1_~tmfdRORT~!3s*BPoTzK+<`x?0kz`$~ zdZyx&WAAI<4=7NdQb>znh}0=QPhB6!s`(E;(L{u+@`(Mt<)!8^mKl z%I0ppb~m%_Na55py;pLGO-k!#YV%*7K8IetlE54GHxXU(Y=3 z@1CB}*C#LMd3$)?(JJ~i)KV4tr+E0=8BgJ324mqFF&@4xQ2?00Y}M8;GGD#-$jDY$ zsFGgTfZLG`g-_3NuP~<+3^LobhtrU8l@{mz(_u&HkoEZ`j`;SrL!nyMC2UH&%PW<^ ztm+98Qr5QZS5sL1Q*>iPA%nTR!oIbll=E!E!^*pJwZzP4#j_Kk^t|oDlN#Pt2R2q; zDImMZar{yCBJ4ug9oCtAuiPzF!yV7!SKC<~ib_G5WCPO!_n*CkEsyWMBVnMq@eR0S1&0-!{M0L9)y@}d6LB&BWn3_HHxBtY5>r}l5^;5V=*R*LNDqo58|A4M)ri`ku%aij{Iqf)hDBuxaGW#CX1N zNq673X4tB(q;;r0Qq>43zpoLV*^zaK8RGkUN%ykWdion9cC%e89USpT$&4e}Q($;) z&D38XJfm;y)8d4LJ3F~rebeMccuYF&nch^@VW)pPJq$V~@K@`-+a=_HBj12=Q3%%Wg~}D)rbJ3N1*K>m9vgK$ zR<-9mxKIKd`p46wnWiBo{W12Uj*;8BMgx96i_<#z6q;7Q6)Nh*8S9Xv<#{KQdle#I zoPkgock)OMtrPBz#NN<!v8^Th;4Cpv9*QBan z7%#-@W!OTT9y=$(({zq&6Ln<3L7q*Oel6!!8LFD*HBlEg4|dsv>V0xc>beNK2!2jY z=l|>0v1Bu20bX}K+T5lN>I5j*`ihweM(YJdI z6i7gEF2HvnNo3vb{Uc)VG#;Itr5+7dV`l-D-9no|TN2qhOGzuXI^32BZc^90C$xG4wB6l&d%kDS%>pUF+{5xpXKGOyFsI1r$fHmN@sev2AQYRC%& zuY_0U>DvvQeRz`*!GuPJ;$*9muvlQ`I9}v<5|#{<;$-?214WKo{EbtR=M9Oz&&yC( z0Ay@Un5Zpv@#bxezDJ-XwFG=|p&PABF*(y{qT4S)n7-&_ZtmKp1)q|~dFvOnu)UN7n^9wMuKEXqL)xbfmAR45-H9PhGg8nc_wyKu(NLFFUH8l2 zg*9Q(RpFTGObn+gi&oG(n1oI)RUjoF>nP>sSD(d$CGv0)@Qc!lajyn+7F=QQzPhTjQL-<)Zs3y?Qhd=0amod}&;G5f@PveYZxNzbqP&jfG#N zK(ognWsPcJAoP>&ff$t#FKcrG&-Nl@?7Cm2IU*#u+{is}g7x`?xQKoBzmxlRnp`lo z;@za_X|SH`(2cJVG8z~n%u+#lh`y$G=-iZTMgaj*vA=Pj{FTc9JU*L3fx&|7@RT?- zalcF+CrSY-5o@LfIqrkF-f2aD{y~w z|M$B$00=6PFPI3WZHs{$Z}Zrb~|rX;3lf4-w*tK5aP~)h7kGoGjK(th$=Eaz*m4n66jyYY_59_{vmlJ;jD0p4m`$&PUIs&FIs;pMN0E0Kt703w6jk->ytS%n2rpl+NF zpRT9Dw{Cx+rP?QBOe;GNh6NW$o4@!4T>8}FhJN4&iPj*=K&!34=*MGzC3!)VPTZkI zUi4l6CG{y6x?yQH+Zk?H8S}&as&kcDlR9JDmEb+<87v9DUL7#Zj(X8Vy2d+ej%KTR;yW$>_kDbY|9 z4p=uDw4aJw_%tSqjZV2g{c@*dgrsydw^qbPFhxG@22BS}-S!X&61FTroPmc|o;&B_abA5H0_jGx%=$`Xc zP0Eg^gCH+;Zq0TotiFi>9@4kZ4+oFsn+{dAc1} z+Rk+7=CNLOk_1KoQ~9Ug2OR0{A-8KIds?E|ky`A1rNyCn{&Q#eFL(6ZB%;#T(-|lP z6VRK1T1+Fsc@(~LtFUmU=r{-}fBh9w2kQlhJwt{;a9VC`DGiiS^oi>myOaY9ah$ia zj5>>Z(>C1rFsVrUSM6x&87E6g+s8*x8a`(;m&04%-Fh^0)b^Fch8~>0%J;Y(oS6qi zvVcP57EghrXoDbm?Z-=!Km}}^OKugb0c?)iUxu*r9C#6czhVAe3s-9n9deBHzK=(q#6`XDn*aQ?w4KLlhfvu~00DrEK*N4Io5HQ) zB8parFTH~c3n9j35&6+=DKDopM&S($UwNZ^3EF%YQ8V-NBMnz_zS3XeL9q0H0fUcO zHJ6maO;IY!*S8H(fz}?qqC^8SSgTc+TZ@zZ5G*~Aj4aYV(}nKcgq~78+3c0k{x$sF z$I&18q;j{bo4-k59e7l9q-GY-^Fh*Z+lt-Sl@J-A>lQxvB(6^c8p4F%8|Lp=749dl zLS2yk+U@)em@Be zw^xAkR;Sqy_|9PYyg1*y_Qk9m6bS_t1IOR6FNU0dt@Neptv$+ZoubJGofQ#ZQFA!> z@)Ennqau=(Xehe^gGoxa*&mAQ1V7#Og&!}0FMcT3J#0@ zH`$32c)HrvwEC-50Qs0L(8CevBq2F2FCQVNt~z%I9YH-qe$hc9f#qz7hyb{Y{|<$F zdsVn7dLJ3&`1R=3wi=;5YnPFRqo{_n>y-g;hxgO>_Ijw%BdM#x64~%n3ST@4Ue}2l zq5tjMm&M~O$(a~D3BFr2%6*QJhpQG)Ei1dkHM}y5b(E~r6Y=tK`kNKK&!yx;I9y=J z01Bfky5}%R=d+T62?h-Q%6a*+$otvVt^VW@2YudkRVzKT;H|2_(V49fzOQE55lzFZ z`_1_yc$Je)fhdq`#JmY2Do0@~)2fYQ?yqpdQ=WXl0>2oYT5Y&71 zpUL-nNu7Wv61=z8-&Y=Z_ND)@-_V$4hYvCjfdvzan}Tj6{+siN!h8zirMCz8XU;r) z*~#0R1tt4Vo%L&s{+CfWI`Q14?11<7Cwx#fBLizqYmONEm6+9Fn8)~hd&7n&0VSaE z%ylao#K~obPo&%;9?}wcZZA*@E8%csB!YxRVjzMGZ9z)^Lb0E#Qa$ZcS*Z~$TvhT> zA~hL(oD`%4K%{4w2?CeXuzQfEQ^^{6psy+i+E%})RqQo>s1Z#PjZ|k{Z>p+I6l!0~ z(MZNuKoH8Sga-DLaRNwqZ;Lemw`Wq#+B1vm5!wTre0dJPL~SsEfSs2Q6I0b49fA{Z zkBSZkKGHlCu;;BO@p63ldrRVl4@r%O3td(9kC^OeN`;NjtBm?b)j^AWB6C%EH$2g2 zY6?9_)R=;$1B1P}c27d~BSX^W2P=MdWb}4?N10nO86cf=BEKPs>L-c(cC|+~p6s0T z_}#o2l$000%~eR#XDmLKA(0|jAY3=lJUQ4lLMdrzdp}=;kBRe6i;i&XNwxna485s5 zRI8}Zu?kPu+RPh) z*UR)R5Gg#@$~2ATO+My+aa5(Ki?QZVl*lkvb=2-J7=Cs5(xOU>A#eB5<4`vNeM8^4 z5dCr2Op{l6wkYGCr{!xLu+YJM_h*J~GhPX)dE+riKrin_WtQJ4FhKlSW&wwnbM$XfD&8~Bp}go1bh#9|f{D>$l4Mkb7b3NApc0|3p8Q9}{=#4q zn*sQpQJiZmzx6V7K{NU08q{fG%ypj!c-VBwNRq~`0-*(MQlZv)ovA!?&~0aSGg5>1uYG69Sf2MYOZh9L9m0OR7p)9CYp?P^{uPNg=qQQyLSQEN!HjDr_ z|EO(f%|G}PXW(rvbb$?mQJob4&;?>oAvTs<{qDgj=sTQRJgIBUET&aS`5G2N zFzOQ2B?JHI>GA;|+4 z*UH$viZltBy7D5Q{wM_u+$6%k9t0zB7>@2}|DO7)hBT%N4p7xDM-KyhsN|ei<4UKj zo%wjt^caKBU4%13CLgH~wHu4si4#4tcX?c^*ZgBCXJEm?yiL`&8{Ee}bzeuKD zQ1L5{l1vl?%T)<|tV!bOZYNAs$0o?~E2|m5-@5@5cYP;W zJ$^WA4j%AG=}Y^)wA7#S$|5L1%NR`zpZ>I4xg_Za}cu6$o%a;|sB zL<8K`4FIP8QMhhh@3S>P0Y(|!-|dODxLS7lVXrP&Jr2-ii<)|tPKFXw8>a%Ayj=eE zh`y{%G23+&j)*#G!oDZJAPV$Zm+RgCF*ENE@KPu=lsrgbo}oh=nEz5&qmRG~Leo z01!8t5gn$qG^{b+E>L^T0&)c-y+Fd@k4m20{N5G+NlV1qx+%UGndTT{fp+s}$fAZJ zsxdgB0yYhVuLh+^U%f4n1590_W!gUUn~5rRNg6#h021~i-6(ziOHqv;29u=thpU5L*!F;UqhKnB}o-&qum1*HPO1KQ1b z8o*&Tw4kQQ_MrkC?0#A3dC5KwO8lS^y<;|8b_n<6l%Wvqi3ER+buq(kfZ>2javp^o z^J3_Xf;3oQM{S5q%)SYkN+FcyY0L79z$d@Kfm?jk)Qm3m%2~^&g{ai%I`{#?Bb=Ak zO@K(ke%XXgKNwv#Yc8ozsMA~h6W#B;b?*OoN@y#WK2#T7>0W3;o`~!C$m8K+89zWE5{E#0| z4xlgq6lVwkxYDw9FV z6^aFQ{Ra?U-MqC17mlefX&7X@{06ylk#PjG|LqF#mlowX4V7X_mz|)N=vRjC9eQL z-cET$Vet`r`F2yBG#?kO_TDTV1i+~haF8m7PBa30AnAtjVAf^&q1szg!MJiHqMRl3nA)Nv*`qLy(Wf?8T%)dY~BM#B%BRvZMPFhp5-0RDka+pbYtdUT%B zIuJHnsOFcx;%+?Gb*$j)0llVN29w|DFyp6%x;~bM!QKh(049BByhXw8c9$RDgsi`9 zt{@zK@Wr;eCwIY(V*dSp-HsBEA3wM#>wIgyHz0(9#8TZIX&)UynyVml@_-u|>cdV7 z7|2gdP5zMyJH7fUg3U;HBV~(%+(FW7t7(M&6Ce3?B7nxIr54pvw;HH&SJU_gYVcn4 z-(IQ@cZVJt7h1!GNBOl@@eHu_C|K^r5hHW-FvI}`ZJU6s2|x}R(GRoDFHra#Yw1d( z6n>pjj%NSTcp;rbrCS{7Rkyh2123^neJfCuPfAmYIdFEcQWh_#gXE8~OJ5PQoH~{J z)>!?&gmyC~c)uL*+vlJPfbPIf(yW8}bL2gZTGl!ToZeWL7c)r2=jJoCx}B7gU4nuU zNP$RGiU28pR_7VR=?3toruIfhCZz03-zvIBigxEe4X8(Ik{1c;p$)aGU|6NniK{dM zdw>3yrhozpQ)uvFsZJn0CrB$zhY>!1Cgy z-*0usCS{JyG~!DB0EV<}Y0?oiPW8 z;jr^wFy{f71{Z`&1yzXCipVZFGKf%2ODqNvHd9y*@WW(~=q4Yn3n0Oy`KSxKFG|OL z!}jlFvv+URFV2BiRNHS(5+fKEY!CmZ5J`P)NC}Nl3s&PWA~+C7qp468AT64iPO?xV z=za1zAUgo;0j5R&F)t??Jr_T5s-<)YF+Dl7|4&9<7f9w`nPx=GNo+Y9ca#|?&?Glg zmU3^PBWNaGNya#2(CV~HZLtZKUM1$`A#*shH~07(SA|+y1UrQn-bT01duNKJn+$-p zjTlaF8RvNLP#(jb$xz{fG`S$R8HSj;FC1nBOJA<&_a6(r zk_k4M$;~ZpL4O7k+8CNZ*z}(hBno3mg)S+5k2mLEePr3vdWKf|nIf@Db-?mn!9(3J zNoE`j2>^AEhmpOKqfnt2H~As~DHp`}Ot~OC7VHurB?`b7jSscF4*huzeBKBe5x<iH{D%TFHA>ot z@9S}(>VRajHrUDts?O3>_kwu(zOHnFU;ofr5(ZKxzg8yFYFbwA4BkVI5*lj2FwYW? z%W2K0NN(mNtC>6DuQa2jZNi0wJJ-0rPF=Qm##Jz=!kUKtOq0okSz`9bA3m*!E{$EO zL=kH-hn_Mvk0`_pAGo4(KJ4V+9p=GcrhFSHAt-m{&3+}}Xd(FBf3);bxvC zG78jS1rnkk;_=@r1wrNbXhi;svmjV?l)@;kL5>2UALm}DS70o}+vG>TR(!Kyf9srT z7>*P^M-%^DT;g+0H|kZmcCqeX(QkU%5X;o$?|?!4C;nWBnP#Kc>cRX&%qX}&D3ibvsEGc7)cpz%0d(4@&KPJ211HY@{NXuZ1RO**L?x& zBwH^N4qcxEQum_CdeP*tG`%PgzKw=Anzi!>VJS4nK+w;3F?g=Dqc8YRXkQ|J?zma> zZwI*di}wUuka#qO64a}}0sY03&fUV9+BPwmIT6mI;6sJNC-<*SjOY@uHDmuB=|9Pc zy0IVZ17VG#)L0NpVsZe-CiDn*J@4s13J_p^BxUu5L`$0A+;^Pt{NkJ%orUTHmX!pf zN;iiq;rdetB&E0Luk=r7ysu@<;H?}+WGKZ3wb1{rCQmyZ@&KRZI)8A|JInj9&}=dT zQejgqt_pY-r$l2Q_HZcuX%d48JB5ikp?%qj#Gn)~EQt(#Te=F9_Ok}$Va3Krzy4bq z=iroTx03c_Cj}@^zx(8#$A6IzZ^(JQ3S`H*z&SN15-755vF7aPHSHmZypp5Z<}m^r ze+IY~WRj8zsde#=O)A4THqI#mV$6xbMu2c|kXkfD#x(f=iE>_5;v63$`Z-lBwe+m| zC7jt`KWQrGJQKr2oqTtf0YB5_{p-B?_|?(}%%Ok-(ZR86t{NvrUV6|lws~f5X)0Lg z=^5DB2$&x#$ziaW(MC50+)Lj|nHw26+WZjT1{8{JMg!<4i}`p##Srpl%KJ^eQ*Fr% z?c~#|upd)rf0idF!eJ4VWWwgU@=V>`Nm@nOhMkFZ881aedzKeQ1McyG9?+^|cQ!&} zXJ-Rd<6YnsK*KIT4o{c9hx?t1dz@=JD!L)Cpt`{!vw*3I@q6O@&7ao%VnDVtG7~qKpvjwJSXwn=J)mb(^Q6vGxU<6bqQ6luj@Ouy_HMep5LvuQ+Y# zeI`pUc!)>^@ny60PK{!8x<9>6wDG8=1jVL`C|O@0*!pzn^=;G3dyVG5R|KRFM7Fc+ z=rF;O#)yHvmpw0piZzW)LkITn&%`B^C%p~Vn!U$!4B&m)GW;yGoR}_qMQ%B^N%7^) ze#|Tu*o%~-HdK@}e^+Qd`RU%}!j0Fn&o8V@{c~6QS<)8uvT0-pP%~(T<JaqS%QZpV%E4|=AnQ!F5)=+ zb@>tM#&1dGTJpYZQ={oUD3;qKm1xwD(Bg%y&%Pt1p)pk+;ji4b1UUZpxua%RXHc2w0r$Y5m6o8OQ0f+u_V>+2)i*BrHB`+T};Zt@@~eA9`1XdwA&&R_#aw0*cb^$Opj}IvEBRA&Yl+Fn&CD#~lXG`H@QXW2clf1O?=IPfszN?H5rL93t6saHI631R7P^7c;HFmhkq zS{Z`kXS%mJ;4m~97h+hj03syQyz=StPdnF;q<&WT&LE}en=K zqT211ntITVhuTsNz%JFpympAkB0cjim=YSQTxp^DV%&YXW3&YM@&$l!@CEB~8wmH< za9UP%t;-Y$GtkVhKD=<0y0A+nQ@jOQWm0Q7!3Fy@G1P*1DhcdJ?T@~Q4HJGP3B3cv zu4%XDH*8C?IZ+xP9q*Wk#T(v{CdC zVv=&yPb4MO)2z$V$UE!@0d;3F+im?9$XW@ixY_OAk?uHGhZ+yxWYN7w9LCJ@14ZIg z2s!N-Q91W_BJ}Ny&6;Rll`B!|+|?+s440F!NjLfb!f`w#n+`UeXONRY#euC}s`*5L z?$f)&CP-7n`U1sEv_&A-=iy4VSg~0nAPA>R`9U0F728keLU)r+NqL@Kh|%SX+t50N zk)~(Ly9IqG(1G8V-Opwk=T@DwF9~er2e%sab2IM*z2zmzZjAM1*C>pS$y`9!lMA!t zz}5cg62D$FfFyk}F!*OkZ1TEVCS{Zi_P&Uf1bM69*+cz zd{Kl^$9Hrh0MQZAp~P@suv`vEaIK`G@D65;XN60}1wdD7*n$dXe_|T$MVw}6UaCpMcem}ajMADA!%a_j7pRk_kxb6kml}3!bK7_C zlXppLKYqV&8->r=0O&@w+s5xPl9sio+mpJz_9VPt#aB2gl-|o zEzH}P)Joy)O_CMeq*VB~wFhK>R<9uxaxBewOK}TF?P)Jm=z?`}O#lRXJ;zh6hla?b<=F^9{rUq7XKr(4aGyBW z4ZVv9R!Wra67XW(<^9V0m!nQtPgMpt>lQnD^U>^In^Zn(K(FeVqP8G&v>sZ*Em|dL z*flFk>qo$ z6RX4+5M0&b`p=HAPkL5F_Sy-9yXRyrW)EVdX7{C<1-=5)Pn-KD_W#iov!MF4)N|G} zrna2LJL1>+5jPtTA?n`r_WcLE3hV9DtqYA) zcQ2gw>}14z-=opZohNg??d7f@UQ6fmeqRS+lNb1ea@wnsen<3-N2Ur}x}MFa__A|5 zynJl#YU}aH9R9N>jEP;q1>v^t2Cf%v0t59hMoqj{W=w6hqi zKgi9im4)L@hDaX$6%FI+tAZU*R$DS^(#7y^9Mr-i$_?fb)sc5R#mx#u*nMh&oTp={ zaf(_pGR4#BVW=gGBfsfT5?vgY`%I?bYm@s{rw2)QxvcGSS=d$7m*h#ClZGTpG?x2R zbtR64p(+{uP9>7so6nD*2z8D*<$N<#y?OL!%8p^HvR^1M*m3}A$@R6+0h@4`dgENQ z5P;7G2e5Pfv|vW6FmEwi2+Y1PD-2v0=qD=(4uSba4-fPUf(g8V1-b@Z67E|VOy>>t zZvHz?LJrWctbVCUW&F%i#DLRL1cpw5)Vx?qf%;sNOsHoyUS2JiVCT4B;&{XYhR&y& zda92LWu%~HqVpf!LgZqoh#)vf zBDv2a0fru&mo6K3p3-19n0zOb zXbV98jiuOsF1^bx#^5l~p(7eHpOwN!suklguaW8j!Y1}v%=0L0mJxxe!{S-2k@(!1 zu?zy^djM21-8zh8JrE-v77UD^fS(qdf}#R`5B?y+28K^4PjKxTtAZ12E^Px1`W8k? zH~+PS2W3TF*%zpR<0&oog}ValV;M#r{HrbU7tVr{m)C_6hG(7UxOf(Wz-8=;zgG&P zkOT|@b*%6oM7e-rFM^nfFd@T7Z7AW+-}*Mj<=9X0E!YDjT`AdNz(^Ntu-vCpG^d&l zdqHwnu9@?YJ{{Y&ZO@(Pla!L)74(PC$U*m=JBq%qHT?Cz=2d@TW^ zwk@Fc&4b8vCEW#|Y=4k~85xu}g!ew8=B}c zM8kCmab5m)Sy9Lxdnr&m6^7~H26l2v6{j~nSDUaq9F5qQqc823=uy&KvqO@hw5=BZ z`a-pM1L-i;bk~|*I`)T1X+h4_3kR?2kWzZ9F1NisQ}D_(uQ9&eB$>z{41x%yM>Gfw z!xO|U(bH?7Pa%5D5XDezDku0`j$>SojetpYd>82`b#{EGv(jhquTM8qkPLONkp!J@ zrtA*gVW1!Hwf*kkE=eb?0)GijfE`i6i8p2DZgLWPrfB-*O?e(N)Onzx6T!eecpX^@ zYW3dr*k>N^9mmUyq^9!pb-{|xD^ma>5H)b3H>%?xlkiqD&R>Z@-;p&B)4nq`+WIoa zf0L+{mxK@MEVwj!BG7Vn>g5~ckofYt{7_5AOzx~O)-`Auf=zqmi~~7b8!Wp8V2Bb@ z2a|S>hfjx9gXQi)v9t4?Th*vMd^qUX&^=vx9LASh$OV)EiFpUahRSfE4|ps}th(Mi z_nOte;s=ksj|}MuE{Hw_&d0VEc}R~W;{r}t4K!RUQIC@(DQn`pmCyA6Evxbldh-5y zJiH<}My)!X&gPvdkHq~8HD1Xfek!BxDs&6q6|^G8-uS?`rFJ?|aTM5IibPci%8LYR zQR!XgD&6MA-6j_PaWxk=sq@u~!ymp0a82mZKU7l@UOwN&77#Zq%Ltz zdn9~oWu)~4egnYT^GqsVQ2I$h7hb3V`SG#FcAdxZ_6!X!3iQ~i0wfJil4V~zBgGc3l>!=66m zq_F{20h=i(Zqar8jFAEE-bs*5JuLxU$({g7w35)8w(zV1L9r+x$}jw=pSbQtL+4bR z6(+nhK`;Mw&$H)#rrw=5x>m6 zwe+!fn4vQmi|JuO9RSoXuF-PenvT;W^E|^T5SYhP)@4wq_%_RZR=$bU9{Cq%fz&8X zqI0W3ca!O<%fUFL`&19Gw?6+%ChWh`M6Gbdy&q~#c+KQ{x?Ke8%~DIqJpG}BVL)%u zC=PyH7MWg{g34|TUQX1SXcrVkK4$!fd`DMt1QF*!hV(&7{T{MF@_0;q{ZpyhIKx=1 zX+))W&w2S~%==~lULme>@M%o4t(Q#PJz(62StxE#0zE#Fr_RH(h}sjpZI;P5uKAa9 zWf4IyaJ_@!HvV!ao_+|6JOP@!=5uR}gje15^JJIm#DtzbOQ#2<5waUKTm|pqVq3xM z2|3Ed$3!70S}4&FGKP8^>irY(8}jklbCLA!8y9?V)cnt3^2LmWE#BJkjo{9@LWy&z zr14cX(W1;r@0pgh8+@Kl6!T7HxN6P&q?Z|{O?0;$GTck;3BJKNU?9> zr=_+?EW+_4cPhjtGtuVW{xf^iy7eRTydm3ry97?sQg5yj5w02aB#{l?Iz zf0?~?RPUY0;v5=BvWnkrc0#02v}9n0t7Zgw#soNls1}ZuQn*rQU$7ZQx&yIa-%+Y+ z?Us9cm0DlJi{Z!T#_39y`8XPAcgxgnl%Gr%QMVXD0^g5Jyo;rYBQ2jfbHw-#p3dNF zofio!es#nDPF?53Z1L~GM(|SJ%YSYx^4IQR7?7Bhk+O=-UlynX&zl%hi-VvsnJUaES%2F%3)y?Nzv+wd$5GaITMN>QOyj@* zJ{K(d)pb`3pOl|DG3Bz602iMz`SFga6nDCGJN}o!;}|224qn!B&Xof;y#k)+gC;_F z;YZ7iimgz+7^VqJewEY#B76h3jB~M^-v+3)TIm_7eUnE!=$HkzH8@NDs^G_stCMeI zjyH*Wq#0g>LeQgr)jIE6Z-1{$i7qu%z0{BdwE@U+b)>jotq0Vp&(|FJ8QZ0{ z^H<)%I|PJgbb_99n{MIPhW}>B`mgrxmuX}KF!06ngVIl6q1e;s-~){r-JJ)0Ozt{& z0kRHI0RQh5xyxXKivLQV&fusai&=5~x@+%sBbL;#Mlx*Uik-M_@aCZUptWz=HnFU~ z)3_Xv%UN(Cu&EgtK*b!Lf_vynQ;#Qh7(Cl@Iry99g)>^mT@B~~ z5lom@IR*n={%cAHAb5X*v@FDJ2v728rY|3(+#8^HrOo>m7!NxanojqoG`US{+o9#( z%>=D}%^tPMGd%(|e?vQF$cSjP(N&qUNoc6tK<>*y7&!GSv>$ziYGh^>oi`&lK;pF6 zT_l?|ZpEEjV+Oh18UrOdX8x_dpaTidFCJK|_Bp#Sv3Nui4AJJC`mH=eh&cpK^7jShsZ1OT zmQeK86F$ATy=#J7;s5K+xSgG6mhNxUe+A#Nx7LeUcvgh+f3MXqBT>)-VYYXB$YSG& z=fNK|d7+=f+f#r4Y+tx?r7^~nfq=*o=E>`yQgNlWUBJvKV_UvqAyxkqm7p_(Rax92 zbF3pZ0ZzC9_Uh;^aQv8qACJ6m)jQXy1iQX4iEi&Ccq*+LyWlG=Ag^c*!)?{J#370J zghZcK!y{sdZsWX5#ReU%Io!HA0D>6-N(^bb#7Y;Xb#oO>3aw?FOR>daD&vCED#h@J z-VthwTeThZ_GmUG)Z}<}mn2rhUuF7ZRWu7J&HpdnmwnBu*<}VvSs}MyUkDrgZUEyU z4Us0NN5H3-JJPK$|CXJ#exAMbxDjo|d-qU(xz~QVd5Wq-qbLHZ5&cavppy~+vcS;N zWv7s|Qt_JBBF8a{4u>DIQ&=Yz$z4s2+37sBN$UikY;^_5nJKh=Z28su z4tF;uAK&wbz6o1|jKceU31}{J`7*CI0%L4xEHGS&Zz}oK^E9m3sfie73sVroayLo4 z-=aLmeCKhSN{`3Zh1xT|Uvt@1HpkP>gjru}T9K%u!V8zqh3>ewg&h+4GWY4NKh^*8 zoqkPj#ZKCE5S!3?D>;QACCiZpO5syLQ^|5AbUNQyW0}!l5E8N$RqixJ+wM3onpMuq zcy??@HV7W#TED!lx!8oD-;l2#N69H(l`QW!hZb3F=YWd!MgX>917B$qt{{M&S@9$c z13w!U#4ta%!2ghw{jfb0t{c}&MvoQ9o+DRp8DPNs(no5HuKovcjc1bWCHDT_%*|O~ z7XnkQ&ZPM)s`W+Kvq|w8jAsMN<`*|QQ4MU4gy{9k0&FRg-09*E4i_DAEmRr`7&m6L z_6&k>nNRfo!>E{{C4uKs(|buPIU5)_u-b}Wt~uvi=%aGoiz;Vu)~yWXzhuTcLS!dq zUWED2_MY}iM2B$~V6u)ji#}`&E9WM-T)n@|U_pF6OPz@;nSbU3u15LDqVZ)&fv)gM z*PAD@h(}8NQhT~h@j95f)}S1?(|e}M;*Qwjz@q1|Mgj!uje>?;^%`wtQm~0{*oi5U zWdT0dlnSyb)T)U5W(XOOao~1D5S&T}wf2*;Ya;4Q);!j7UM)d-#_{o$vh{j&$?Ci@ z(ka5y87&S6bUA_!Ur$0N2q4%!4tLB}%HW%z5S^3_cP#8v3f!rYfjas(a`k5jSyT~qG*gyiU`=DdG#t20V(J4EuBr*=QzO%9DaT-r zv(Kwn8o&Jlc}mi-HMz3M8|_!1S~kd9CuuTx(0KK3S`uVL(r^SJ zwHaZlXxoweF(*ZcjjufH>TSj$8MNE|HQlISTn@44ZEfeF&jy@%(&~#fAe~mQ-qQ)5 zK81%|Rq)l|zQdg<$|Cwf99*-0f}uemSoHmia&s?GQT5O{NqxIF82$d8Gu9Mt5#W~! z-&oC@=f21u;h|I<#4hB_2UJ2qFUP*m%dNbun8Q#SF!#{(TgqFTIN$smKU&}|xQlmf zRLx$Nc$DMx-> zoo&p9=^CT+ID$)+EeLzDBsk%8%|G>qs+d3dp-#!Td)|47;JE%1^MC9&ek(-#4JK3u zb%CkEW(s;&&MEQ2Q5u_pvaI03Y(+-qtSJ395_na$1dz4BgWHg^9y0i!@)N8^>2sE}G%K|f*(lxD2iN5Ma@S`sV%7}WrC^z0Tx1}D5)zuJ*WF+V>%b$K* z%T%v(JvIDX>&nLl$Z=)x&Vq-vXsyP1(M{MX4FgSu3-W8)BF<3dYJ`jVe-K^V&4NQV znb(b&ECX>D^x`l_=swTXvwd&{Os79rO{PSf!>ZK_WFR9>^x>wS>K`XtEQ3;x1j`z6 zWw{tA8pLah;pAuz-m%#2S!>aGX!Rw7JcO&L=zGUco>q8+9Cu`u9|miKaE-wY7>$Ax z0E0YD%^zv%WDvyRkP!EctNytF4r>;XR?&G%v0{j}%4k7$Vjec*my5AU12mU5Rp2+6 zny|0n&p4VfjWIo%ajTeBL$D7;CIx+Ys%9PcUPgLQchSwM2VS*2tE^hf)+*LyTYV=u* zKEh-?@yeLx8a4@{X!?;nAEpBP&=f;QsL3$t5C3SdY?e}EeV`iaLSbIB7mU0$#s!(< zH5x|U6swe>)97%j09wRH^`BP}ieS2QkglxGmb7Rq@*l#nsRL!yw}-}NVB2N4>7Ng+ zvV<%C-(_nto%C;Ib7sd3bWSSKcA*Wn*HqF$>b_(=4pBsJTJu5EeHJ}NQXb(de*%=< zAm}eUiDat%N`#g>1S1c@?CTPt{OORD2ABsO^sq#i3ZMiebjW6M9S1dHjN*zXlVR?4 z;z@kIY!lX`zAKp{-Jt!@@o>xckn_4n=ciAyFAs|g>tY_v+))B}D(xKTFiu%B5~MFf zxaBw2pMT_8`s)>UZYKF!@zLfw>uZh=RoeEn=sy6vN8`Q$N@)O0dR8@CMUB)AvlrpF z3Ll>{yD8?^X#kKRVcCkrJzNa?#OJO^;G_(3bqQtPj!aFds#Bb2NlJAjZ(vsMnC$Q$wBG1q6WU^6Mevire{9(T4^<;l`oLa!x$8*Vb_?$W(#q-3x=^#-lzA-!k> z6PBI;U75y2fDMn4nyI#PVf;o}&LbN1&x*IKu zHGf<$f>B57!jf$%ZWgU5wl0dz?RU=-a19F&#=fc*`A~kTe zyHz!hiBD9MK(0qYTE3R|_U_b}n;aU`bu~hdq;8z{w~xdm_Luk%y1AbwX-`U2nLse% z3ljDC`=`PoK@9qOAG(k#BW}rOHirJ%WqZFnR5+hMVk8RLQndSi>Z($eauFc6rISZS zGW9vAYXz%~!A{Le;mrxFz1+#o7Ajj;Jpio!EQoLmqCfgcER6_!QI9Gbq|yZ-d`Xsd zwB>7J+y^l#w%nxC>@JhTjuc0-MBqfDn@)?6E<@WM!*V9voc`9drQ+i^>zgZ#%mA5z z!{Ha40^_4|MMQtgt&0G9#Zc)m*YA|f`t+hfD;=dG zT>}n);inCxWS~C<9cn=-6*7PNp=U>B0r!({%`&H5T(+GxS_2*yV^BimaJxuJ4IO5g z&$1}pt1B}g(a8nosHYs2y4>D?#?xwpJK*5EayB9X^D|6IZldVBfswP=|9G_%aE8&w-mOoGAi-z$}nAH0-bug7ds;eG8 zDw2+7elu7&b=!HO^L(Quq=}B@s(#-+Wo76Won0+9%1w`jk@?ZNX zz2p=<4HJ<}udL1Tb;?d!b+UoF|9JrED|2QBK?1laZOej67Iv9k%2!oy*Pka;vW>%Z5E14Q7 z0eA4XySmwa*&iL3RBoAi#68fdmpO-wQ+CU)&d==@gJ2xYn>x$|m=SHm>@ROzjE8Ix6pf283YdG{li7KiVa+9@gLmUEu1(k* zdGM+dwiQ4)$r3#1iA_C90^rc-k2-4ZW0Srz;o~)_9=54%hu=RXti`OowdskQg3>VO z=>c#-&-{x;mdd>rS5iT0>6Ugu-}ak0NtWV&*lTWkH+juA;@RGmY)(}rptn<&Ljj^! z1IWk*y+{zy<%`N_K?T;Ts(wiZRQ9Ro4@JTPuDdXn+d^jg&{EM45zHk1QK2K$nZwUN zNOYR~WYDvSsaj{)4Y0;P#dqKzs|6l#w)kDCWbLlLKIN64iWraX_3EekEsA=`X0=2fHklU1&47Zf6(xbb#i?s(C zN@3zHw_U1&uO_#4*s8tLk6<#d=T!fOE0rN<2I!Y>$dq38rP9?f8|KRHT1~8}q2x$y z099O_b-!j0feV(8{a4Xxc5;g-ZvOd6Mn=-@b5tzG#0~ZA?bY3K2~0Vx;cqqc!&iiI zhQ(EX@{%biUxr$<)hQ#Tc`vqni)7c`JYx(d|Fy*B#U)CjngBuUDob8Q^){QAU(@vIoz^EPg_ba&ga zvo~cf>Hj?kA-8^v1Y&<>M0ad4!xo#5yt5d8>fhm`$(X!&-i?e)kGQ(D>A^hBGR#6# zQ}3U>Qz6Mlegj*)rDvNSfQ)a@b0m|yx=;mRBqtwMk1Hqw2W?-M5_uWr6>{p!Vgcz( zD6%~DWX#48{>=J{2YKsMZiugHja?-J*BUsz-P+*2Sp`&e&RYQ?5jnntt ze4U#AbGM@5AO79Micn+o2#OiwWld}&N30!171AB9i*Ce|pbif**LZ^`&5w21iEQBO zY;2-faM*<{*}EQm1Y2gY7o}N(+Y3LBW|UoAy-o3BOYOoY_Q!gsi#I-CH~oA^(|x|_ zzyL@mxj$dD%GRV?m#!3|y+5A&y~8S>dr|-Qz~y~0Jt02>$abd$cTVxcMd+o=VqY@% zSF${-rl$598ZGM9S;COHFyYg!H!@Z1mt3T|_q`HPhv|q|vAag>zDlo0H?&y`GWUd; z8#Xx)W^X*OionljiQ~=o_g_{SIt%NPf`E-9#-w93xRb&c!X3(_SDUCFH)r{+SA>pm z+i!<;%i1EJ^i*tk5dgW6`lN&t;r?=?b>_uR6PxtpaoBg^VkOt8?#bde+6O5_<%Hr$ z(_%%|6;3yYZr=YL<*+%uhX4-v>M@VnMB%fCwof`H{y279*o$?)S6G|R`-N$~87!av zrw>3Bu!ZtxbHkkLlF#9(99S01+&;c`oIP;*d28XvUJT15?Xd~n^5L_;n+!n_a`>m) z3*inQ#kl=L4p#JOJCZF05`{!YsoYvXO&)p?Z0iQMJ^lC)=^jL-o^6tIbk75CV-(Hy zW{q|&l6fm7f{7yJd@kT*hi&WE(J-0X;*0J3e2(?@Uo9vNicD|Nvz1hC{LW-NK}D@U z)!%o;R8TD^@9*!s6k;7zN-dmnQH+!GG7hwDczmGt+Vhsf`MDw>F9g!_+KeVc^uC&V z${8>R?+-{akL3<;Mm!2@G%iiJUJ{epK*T~BZ+nRS3)u%355N0y_z_6zd&~&U6ohn% znQ$E5(4lyNJcGzrH+M)TF~Bgi=H_}16(lIasTw#Ec_1}#FIs=^{Z^Fcvw>@;4$BSz#8q z651X4eCf@7;f8~Gy6;|V4K{7aSMkyQR;wY@qj3SrT#-Spo-)StR*u_ZW%J4CTrCOwwU0M}c540T)g01*av$1B6x}oEzdghfYwQPKcMWc|y zidDtXr*REpkW{g<_2cVQUDZQ43^y&Cu4**q`&xXoNkg+-(fV-x=I?F&BtYuCu0b@7 zwt)urtA%F0sq!b6rmJIJ!(&)ST$(sZMGRLO7)}AFhH! zL804nGcE^57BV!5JNEBeGqEkm>HYJlEzx;eJ8LrD=4zfQ4APE2Srt^b>vEZx3BuCd z#1L3<7mJu&P&k|Hff=q@<#5mR3!a<~A;R87Z?X50M>_H$K!dW}Y-9_QSNnTg@y2nqtToW+z?;2{gX8fp$!rwEX@r_G@?Wd=-3+l+)Ny(jTqQJsXiG_%wNUp!%!nc z?b|$%XL3))q)!KF$;D;6$n}})U!|AXkFm)S0M9(aqKn&qHgDn#sPoeL9tr#!oXBuR zDl0L&$l`65$h)z0K0Gr=^q?Pvfeq4CQ-zUyA@xshCxB9JB#qWoR zQFFmp|Nfed{%+rg`0?t9rSk6OD7i9(zFZ-YoKXIxRgR1b?UM#D*Tn4nxjJ#-&gEQ` zV|3*HHQIV{11Wj6QHL!jmr~daCP>TSmkHd0oub>aTSC4#yvF$e4CjM^^W7KGXJL+W zWc;q<$V6CKbr!H&7s^Ajy6`(M%^ASSLKhah0mX2$DA*Dn+=@5s8jK6Ki63>QzU$q) zu{72323jSVqi(E=Myv{@yLvuDrS^jXAGQ=~ohJddb5@TsQVLuQX8C6iei z5ha*dk^y|c6M|MW1HPy;s^f6B79PjpyHYz>SQHpZb`N0`DU4oi9%^!<>J`ObZBX{v zfZkA~RJMdQB1}^^hm7t_j9aDYw>v+uO*QCRsKCG;q;x{cf3?E1PLC8p(k5J!GDW7m zjoyc%KJDB#^lY<*kJ*9!W~U<3#9$k=}{XNx-KoV7a&-5v2|D;Skp zGP@e0-2#F#OzPAw1Yx3m`G)ko;|Cw`gV-!6(PMYLONeUdnx78(X)wzoD^E2MHx0^tTn4wfx+}O< zA-#7xO(xP*n|k|og1RiPw&#MZT;jkRH}DOPl0sPzf$*bQyd&WdCbr+-}t3CMopu%U(y{+8!Srkr zq*lA#pA5gH5P*lLv>1dhpI)s^bK4*s-K3+SgwoP<(6bv1&=bwKa$Hi;93equj%xiZ z24y$T5X_8jA{m586~FYDfSh6eKYbo%Wi^|-P5wCWyrJNU644^mf(Sx&Mt>yElcN7@ zNx*&k^YJZA;wC%Y;F6F_ogCY*;b>=go_g;1!-uCG5~3Sh6o~#EpwcL0v8`GI!M_roPld)%TUg!0xt8c6}?7a`GB!Ks7nD}9aG@GBNN|4T$V3pX4 zZI*En6>CoA_`c(QU6+Q%mQ|-wD5|eJIvMD79ENbiOLIyOm)CqUu=3!Ov&g5O$8IOy z^I4e0tNz$|?is!w5$9t`7LnB=w#P(4eT4GFq@Vi@^9afl4n`NU4(ud68SvRm-x4f_ z`I2Cq5#6Iul$?f+rTc58WFS-HKU@Z%VEFr2fuI*MYJY0c3ih1Zxu-rKXAq4)3DPMs z^kH2NcY*IY`Q{)+Xv7f2+Z3{GaDk?O}TrPFB~cpqRQy`B_jQIU-j)p;Ei27R*Mh+nm()o zWbZc04!q0x{u8t|MQx`fJ8^aJ=Q6cx%mihBhvn{UPXOk-082WPIB8;NI8*qd$Iy*K za8DtG0x*kw9*2e~k3kjU;OR6ux}^){4}g?7d~lblkcYcB6Z*ay6n@uRLzMBS+OK}C zN#HR{#eTOwE<@aE&YI6L9nHBN0z7jtr3Xb1&K$gFn`yKF3FGP}&=3*HFlQP>*r2w4 zf#ui5TeC&y#9Z9i8`Fm=RDT?Nj!iYzw42ID$`JX-yHIbsQG1D~LjcS{L||OZ_jHF> z%AhbC3#e_u;!c(`AGBIwe90-`+#!pjBh1n?tZXb56w(_S5Vf+P6N~$Ug|I|1{1nf} z$kq_eHgu1G9)7cb>SkCqqWq^gM$YcoKhZYKu2bD{fu5tX7kG!1A7E<=ug&(OWOUeJXj3p(2x}iD7hHj z$yFfi&?IW*Sp^M~hE5kkkf|&T_oS}|W67gfl)sxs%u(<&e)1I|R}Bv@;ZI%yuUy3^ z-P>njlWAg{0IIVDhN^4PAlJ7gD&`FyT^lzTrOHP(zIJ8jLSX^Ta#PeBo89;H2g?tjRGW%)j@yi|w zLRD*xyp~)D*h)gy;i}1nIggk=W~V0y;9tT{OrAdN=CXE{JbE{!Rr2;19hG)N1>NC-2GbxDU2dDb(G@#NzFm?CQD%ZF7onPQ zO}(6+UQ*Ku5yDH9J2cd^dZZ(7p=0x1Km|lmP5{L=$;$w#+M_vq*XdH-vE%Y&i{4!= za2to4)oa$KockA1zu2CHp&G9GT^`?lI+1=Q6o3~AQH>n*U$j=L=b295GlKgk6o^^K zSqS_H?n7G?`p6!2#Z+b_`Xn#(*t-l9)y)s6J3G@vH=0jXPPS%_cW?dKjk$*3J6=sm zIENLAteV1oeg)m*lbY5-LP)8G&ve7+u<0hK=O|Pt0Urdz+%Ilh=UT%Lt+DbdP3GEV zjv&%GwY3Xpo0HGGdv(-x^{f+_ZjhR+mO=N4k^2CSPQ;~NWUGd6ClOFpKYg6zRet5I zccSZBvhQv&3Sv#OvK}>H_?_56I={L$X;+aP9xOzdA43FmB^^;IzVw0&a z2Y8!|YF-=HtPp$Z7S5he?qUB$*8*_w7dKrYw>F89+ej8F$sn&<4b4IZd<;h*ko?+@ z^C0JTZdg102c#ndZGb{{JuY0 z3Yy~y9Lk@jT6lmopLexAJm*`X9FTKEi87tErFI)NI2K^HECZu3*xMnnKMm}|Zr6UH zWx?xPxmT<_*;l3At_Aep0QDn32u?KMl@=hevhBi%QU#~lKhbV`$KHXpX0bGQP#k+I zYX=nv@gl+F9ZI=ldF4-$Z&aINm(f2h(IrB~gY{U@Ayz;&ii(!$|Co1glTl>SzygjrhH`n)kzkxo{hB!a@XyyM5&cgsYwcdcxbyo#+ z|J`3jJb=}QUzc!)jyu|n5|q~xgTSjBMx&l-8EiY@TIOK(?>bGUU^hTE$iOsTs1E?I z;5BEo1$~hxXv$ z1wvE^_kP6!HXU~aAi>J3Q4u5n%Yj#SnHo@$f)fw~_gRoz$yRsZry-!i^J>x&J;KP_ zlN&`fe*pb1u*V7A_PTak$Rkf5-Sm=&w z;G2aVZ|;Jvl4)!XQbdPa;Q*bK=UB;zYcwCjSwr|1c+!VVy2|KFCI83b%ZetgNo((o zwIsjraZFzI77B4cH;PDC)K`c)#YSC^#ucAw6~4(dM>mS5?kl6#UbFN-cauM5+$aD| z9hdelj(b?ydC}VZ^yujT3@&?Fpn$1zLBG-)_V@w^_oKu-#O4wNgp1&hwC3{>8xFAb z&3BgkIaq2gic_RcREtZb7%go)w5AG%k49JSbGwO&702 z_e4kPzkRca-8+Fi!bKz{!`6w9lpORbKWMGP0k#*GnK10{e+Q`$C2zAAmwL%cIiy3Ey4^zR?L2SlJzZUt2)#!;R{U!2}ih_~L}%b5pHBMJDpIkk3=K zh#kbe8LBYxsl@OkIJieS%`x%Uv!zo|lyx4}&tHHj%MLy_SZg0Ye*07ty9ECxwZf!X zuI=PD$3Pgrs5AgMTjR$7SD~pk4E$swfgcBpPpCJ;BXdQI4T-M+Va)~4(kQQ zKb6kuoQccseA<;Bk$o6AZ0Zh@3w}e`G^7hNjT|(AMudZL*TFyYSBbKlzo)h4|b`AKQD;6+SEXSmo6<2Zu0Y zE1@$6SdA`EZgp?@sQE)f8u#plq4-@^s)Oxxt1i~BcRbRAcn<&*BvQ)h4k}0xAh^T_ z7)PlXT%NrkG=vP(DwOPp?Txs=qm|l30co2Q$fr&HLa3~N=bfbd>M32h)agTF+m+}0 zXFH3tpZ+pkyY_9(1Ld`te-|+?!tf6<>;F1@R(2fYuF6+mAHx%Th^JBN;>_1IUjOfp z+MXK)q;f{y_sE#djdC1PT448wGolXv`{4yvptgxKm_z)fblF4;KM63lYcY|~W9DIA zBtf*efvJ=-B5AT1qp~WpS!U>|X8T>xJK4BUm9p$t!b*E;Da977;y@}t*V7Xw>d?78 zbBt|pG`hl4H3;c12q|GPU3<&UcCVG4 zy|ZUg2#Lyd?UlW$YbIoG`gH9PLKH<^t3-tGE~)$V{SWT_<-YFgdCuc;?te79{&{Br zQ!lJS9~y6N?~hO7EF%k*c$uEcEWtG#I)&3^Lv3l2Jr(=~l5dA2DsEWso+kXYVjrSO z^mO2drV$gk`283q2BGXZ4=3?O?8$RrYQISl5QhCX4@}~IlzcTq`G3%>xkdshTYN@k zp0|6q7y|y|TVF`tO=6)v_ls*jq<8qt6*965;B#yy)nFA`D5r5pHO4Y>+PTQeM6NFq zrl307wsl#473TJWWIpydMgn=b2eqET%!*J3dQ3o|KxBO8=*js^=V|pXhS=6 zk57I%AL)sX!+4`_V~Y%1I^K1%QwTzEO9IGg2tea56pY5lb_LJneAVzk*zXJrVgJiC zRMbhL?&$V093|>f@OKY5H>g1^1gQ80nD+K>%P2da{7bpE#LYotlltZ2rHpiUca8aX=L3v)Re@jyBmVp^^Mj)fb6O|=$UNcSBnejg&|e)G4zW6^l=r~601A~|G~ zv0dRMh>-EOh$bo4BAFk5ple4UA^=0y_k^ttYg zW$xWMWE{83TN-I$M!2>LKX^KTrCufZ4wFhb!0sMEvNpF|GxV!pwLIv7CQjybggiJc z0D4%NC72t;ha{k(;wQB?=7xu#*u0b99pv}DWueQl12M$)LHv5ehq-B%KH!Y%ANXVq zp~`5psYn9@u#i9g5@v(wat}ZHwf7i&CJdUN9LGwpbJFH4)dQ#8iOo4cGlUMg^dFc; zI+g_PR>$`X@5QohUDr=FjzzBmp2zJiQlhem%)!`t%M8Q&2W?u6ha~t7XdLf^6TH1^ z3mt@OaB>D|7M6`Qu3W&Fnq}>IS_p!&^VxBs7$Emwu;iD4%FKnTS>BK>g>S#7T(lYu zFgcWmnme%!Ia!6WfT`;>^KYN*%*ku^@Q;$17&p~hCW^6?1f#Ahs!d6>{@a#idMAM!Nv9NemnEEze=1i?JH6S;d!@C*MtVO?2J*B6SLW(WU5DCwkH{q0Ie z$x@?lq%Qlkthclhdy37aBR4Eds-Z$blJVnVy3^WC25Oa*1D@Z{aNr3eoou1v&Y;iF zN~rY6vT`N;;?(!Bk~g~!D^>c{JeCby@4g_iS~F}+3VMhx-L!%nlptgl0rE_LnCrjI zHjuA{)P-eS#i8#l6duEy-Mm0?7R&B zTQ>eP*Ru}pCZpqz!H+|tRP@HzjK3A+{++msesL>$xKw!n&)}}&$?4yeD|S((bNBCH ztwuN-D+NcB?=z_FK=!o00)!uV(zDbNpc|N7zq?U!zs5vAyqS_3jJ`>oe8;tWssp+i z-4OKR_H7Zdr+-_sLNbVM4mjb+$AsgqYCL`8_oVaIr-CZt(78)RWb5o7^&cNt%A#0? z-sU6aH6CtuN8d_ek0i5Es#TF49B`H6#8g-$WNqYkccYBWO;Dp>vrey+i4{*I7 zB#YJTPSp%Fj$8Pt@($Uu+|SXZAgRSEUq}+<>%bSP2z*knth3M&_tz0usjQO(Zy0KR zI&4+Ve)48FH=kefryTvU0{yikX6?xgEz-+W`MgufwgNJ5VcjJ-E+FPm$>)DrUu92E z&Zh!;KIsr;NRS&XPo-7FS!8ACuu^gGS{o;veF=&Dnrk-{$4;dHc?}1m+q;pTWV$lF z!S)g4v@o|r!K>2b-vWd6;)=;C_(U*}_A{HH-X(N7_{)uD);y40(BaB`a{OpO@ z>1q4Wvy5yhm{ar=8oQdTXe2r2zSzNE8u#BOzgES|y>))ID$w}NH4b)mj-|}20^kURcw*uGo4sEF~G3#lLsY@ z7_Zo02#};~yv-amR1ya}Y=iZ*unavfJAeL%M7p7>GWI74=_&JV>ZUaY(~jSyMMd(DQhz52<;2NmDX#3P!l&3lR+{v-~Lxx#l2;Ls?Tl^`i?N@nQrf15~ygi0o6Wwn*uBt=071R}N z@(9b3Jw=W1*_PzlLqZH0*mn~lLwK2}W5Bb>?c!o!W<6CaHES$s;HhEG%PnsftynY7 z8=^NAE;W4EKl`D7b_Vfup^o`S9({W${i5M8j+)w_a)RXc=PS%XK6fhcSr=gXX~KjB z(l5XGR6S7Sy+ z9U*9e^yFZjj+==ICM0?jI8z9WS|*i-Z1k zC-z^SX0LzXR!sUySSwaRVBu?0L_Ppf65i$hU@T8p)o(F_PZI(V9D63Tkh>QrnNd4a zY}}-7$6KYjhPDgeGB$i0_qK1Uc_3G}cR^Dw&->?JTsMqag|~Oq6n^x1)XduAlJNI{abBRX}hrUHKDhv?M^#L z+u@@^@TKTA7EQGvnC>pdxDzs~HM<1JBNhg!n@&|cV_a$ah z_dYL_A%v5govdQuW{N1$Blv>XaluWa+2`62I1& zu4-s}G(rtIiHfF5An&HUpQn9Qp)P_2cltQXYRw?ss~QGUT#BqpK!H_5yP z04A+EQx_(5c~N_nESbWr5xT&?QAAM-VwuGdpCj&yjB?AO~rdg+k8+R z;kye>@l(E+DJ|z~z61J2q9m-pmoYNA&Iv^$(rUhMWA!(iBP8n(tw#5;P+Wk(7~Cpx zNbK~1$QKc%c-;U&0!3Inc&B>XO2#q=<l=`X{L_|M{on)1$KT0aikmm{8QrCLW-JCF zmOtvh=YqU*_E@UaOyj&}YcM6;DQHLYu5F|5C-}AhOokvhu7vA7#}4L9O7Tl^Y7Esf z&Akg?m7gul2xwAy@AXf_rz@4t-&dlJC|BewbQqf=R>7phlN+8%zoRPWRgwIMl*;b6 zb8H&7CZ4y`6wWXcQGj^V?-gzRJO*Bnf^&!PcECjD>!J{el1L0~(JY~-ULwu5xS3un zGjZLwVTI5LtYDZ0vLW89EFzp&Qx>@5pG`lR;p9|+w|t%E5S5E9>p*R6VEP%)wJbDnk3+!pAjFWg7H9x1> z(Z}Ma_{BFFJphYh@x0HH5d0M;F|%)#{7`p5HP<2|VKgRrHPE2>2M%9IExOWsCXD%T z3wA*FBC>}$!L?otJ2+c%SWtiDE_7?stF|&lgu+_xpAz&zgsVJ{_1j>KVV?31y=UVR z_)hOf_w4V{x+T`1dZ&Qg1g_*mMmLeK%A>R^u0gX!j7nxd;5ax}N)hGEgg)7Yr3c{n zbHCD=71m1oQf)^m$a-?-=C6Nb;sow)K|53jo}M>R7IizJC`+~9OHh_LW~N`cOE{3J zcMll+#hUqEkH1s)$G_i670d*RvLyonaW;1A`2wdM{=oW!GrLM?t^-Weww0ntPSIdxd}fbh%lLluvg0SjgXd*n~jEQ0Idy7}6N7meV{r zLKhyY-EnA}SH-}EticW5E5dE=9IqlX!fsK)j=76Cfu|F4N(JB4Q%IQ;Ue zpan^6GqqAef&-Tw{)uxxSVLXlD zIh|6e>=u4UX4=o{liBH~Wjk>^15szci79UUm-o^|?pK*{!8^}#>eZ0VH}8+=>kdSx z>2a|o+a8_9ae?^UI|T2264PCpzKf8)cfCM}$A=9-GI;;g7vW4bN#ltvk8@=GQXvlM zOEb`UOZ-xjj9knYJ9X}rc+$PAfUJ3?TeDqqrBfyMB=VUeQ)E4bc9Fj^d4-K3^G5;c zH=#MqZZGP!?R_8|DPWY=FQb@n)!pCYEmUr^9Z{Psx$`bw2GTb&;;d-2m`_(9**0il zQj=1mavYZrJoZ$Xq(`#H>@A)(yn7eA{21`_<*}sIeyR3`h(vL*Owk{8DMFOctYHa@ zEZiOB@IJnNd^bCe5ojU5`6@Rp(c_uWZ&k1BqRKuz5AK~T1Nx-DR=;W!XuA?!NKSPu z?HpVnGq0l9=#QA-Sg@KGV^Tfw@pGsEi37emvKMVAjUZ6t24jAO=h%a?CP0C|VZ*Pw z%_|OL3_s%q<~D&I#H(z{${2!*tULKt3?qZVFHv`o1X?8PMcgkG zSdUK705h#}8P{Q;Arrq2D@f@%@*2JuqE_B`l#C`uivMoyG?D%G#(;Qb#V`~mQT+g} z=sEaQ=YFke?;#loreP47naB&62U{WqaKWd1woRtd%2Mzp_aQiwP&_G%36hKwbMKR4 z7tk|72{7`8Niro&ut#XuS%k!mp}7*hMhHiD;B>_jJHGL9-V?7xum2OD4D>$M=G74S zI)N7)^{2%wm&in(4JEWg`Lw)Sg89KnR#rGwMctWfSz(8qeVoj;qXUA-8*fei^mU+v zT@6f@&G|7A!=u`i*LxfXXB611zpzkvFnFNK_iq-C>0WBtmAtU|q_jIkG#`Igs1~kG z{p{F(*3EYZRRg(!pTpm?gYjH!aysAk*#f%N-X|2nB8^1L-B`{}a{{S z(5?(B1P{oKL6LcF`iD#C+Xpp}CF4lED3ktnxG2%$lWh|4{+-(HrDz-a&YIBUnL?XK z=Bm&#fc||J_Xptz_L%EHCu~7JBh|>8aQT8d%IfTAbhE^j&n5C*1T?67%|(Wxo=HCpy$M|5>^9;JBNuG4#LdPig;7+LHcG z+OrT?mfs!Nz+JH1I*!UK)qpWILP-GfiiSNruj|wfQcy{L=Ynb)vBT$dC44gx@W~o< zFAW(RW@rwjxs;{L8Av{6O|{voVklyjg33Sb3=D>G4RGBSR|@d4->^b{CLrU583Vx* z#v;UP;$N3un*8;}_SsXP3Heu8^0a)^`N{M`>B&LpXfyOLy-kpwtH2F>?xfY^p-ZEj zOFJZ|_Au6wDY=7E{lL#q2reFcvF66lrtF1JH#2bDOw;^dP$qBAwE? zzz16S76w|{Cw_yGa{3)lL9`Ut0&`6p*2D(}SZ8}&2*)!W2l;ZFMF*3IKl<$-()R%$ z`M&7vcmB_QDaJae*IL)?NqOM#-K7_*pQHACx?NBv1U5%Tn+Z$Wuh*yEA-IM932brr zv@SE}8U54plSZxEPY+nRa}Db~dUh9@%Lbd3XVtzx6NcBF2;>ach_cM^4^%h&-Z=6s zfllc9^oN;4o9>!QAoWh<1lJAF9#rjO87T?3aD8HB-@Hb7?FLgZ9)zH;_DUyvKwCfF zsITHQ)*K_iIrx&aa6RL}yI@jD`Ub0RTZ}gz;YgZJ_lNZ6s+!x$Qex?D2ZKs`MJ}}? zudU^Ad2{shSm)i6&e|a^*^Jx3%Gb%(0uIfmWM3&eq8(4%@Ywy8ui`Xt=Lc3BPt+37 zu8-t-pMvi5%`Zs`zWK=c@WTXVPQS*@qqltJa?40$-4vwV!T#%jh~~d6;<+x);{OTo z6edF;_rRCEEK2=YcDjPX)Q}9DU;M9qinsl0tOpJ{c393-T(>vLE9b3fGTRbVsX$n& z1W7YSZTnMMRyU!3n>q%>*|-#L(U+_UbJN(;zYg2<{^(*1kRM*n<73LA_VF(d&6#XLfLE`%`^DiBw5kyJ;x$X|9p_A4c| zPp4L$UD3yRLCOlCH>+nMk1USfr-~ac5^#FgZn7T2i?O12ItO9udA0 z^G!gc&p-8XuD?fmuV(UJGd1eKbLjoME$zLBqHXF(qVima;^WZ-L|!?kf_(pYNyqcS zpVa41Tzj%=0^TYMli`vJo9bK}!HP>F$G#OkEn9fOd}I+bHNy%cD{W*QFXK>-y` z=r!NI|JrStSl^zAgUUHcvR0_*i+yRc{m*OFJM})Ot0&$o=bW*-GOqBY{M>VJ51AG! z52)=)jM341yd=dz;=5NlBseb6sIF?+d(?1$vKgJht;K zlu51gZb_E6WyuB4UCQ_`4Tdm>@4kX&-?UjeOJfhyfrr1FZxYoepkc2EB08$9sZ-mS zGvA^s>cX2=&UO6_bos7t@N)%6pw{P!;X-V*3y$PCHWcT5*TXd~SeZ^N&0hM|y^L=+ zRh8JRjlZ^V9paKS6Til||Kh9Oa`?;rm1A;r$(Ezo#oPN7b>$#D=_)wZkY8C#pU2ME zvBd6COdiWKLu5_lBop0Aa?>8?iA-2x=JkMKLd-ykW#P;wZ-RpaUC^}(sgS_^o9tJb zf-U$%A5?3xVU6Rq8vUTJS!t&IOY{5-+Bu9TGKoT-KXa6N+QN!xOB~Q|B5PA~`x&<| z)>*M7JJ7h{7RP@cS1*C?0`$*Mf&DcBbV6JLZuPhdy34ygJaMnE4i~Q6YCu6I%}lhTle>=3tJ`e3Sl-2l z;9+I^D7LWH!B}@G3P%S77aqrjsfM*we%AI?)b3G>lKWzJuI+k=8rrwb`|<9{jKkix zK&%yLYS6CA&iptbE5tp>iz|u&H#kcZ9&u|-9KOGZZZ=D^te?5@u*hh8g7ePQ{aEwh z-=O0U4wUBZRw;|5m)4uT<2RKwa$e^Samqa|e6N5C7!ZbBRYmkWM@CaoPegD{b?ybL97Q0*#o-rSSPh<*Y9WjRQFJ zQD*f@dcZ{n(8yivwBoUk3uJ5j*QS&YM#fX`#CzN}njeP`sIuEaS zJzQabOg7r}1tTf-jVob32%CW3J0azzA{F_d50>PN zlBON3GmS|3@!94Qdh@HF4!E~#Uw$}a@hHHh=%jC}sj)M3&Fhlhp2V7I<)B4(VUtQZ z*oW`#q&xW}%KhhBz23G*t`cMy#AOk4jZj@!!KA~!ezy}@%7QD`;T=sasun!5Oip+Ds8ofs12F4!D zik-CZiu|`qUv}M~hpat8Xq>Z7RgPwQ&!x3_8DGzz*`q%u#!Bi6*J%~xjz%=v~wr$wN;Q2-x9(`kNnxfXic?D zQr_5P>BF@5oAX%Ym8p+chTdt<`1eghjGkPl_2&p4w}`u%+~t%tC@UEQ`ghC6e87fbS3O1lwC2ymYRObhT< zd@w5>J1TQL0Wv+6+7_7||H-oyi#Mqoq&ctwR1nirX(Y(|Gw-V{3-b6}Ax6z%xSKcw ze3>NF!EENDQfly{W7%$c1cAOTSuPfr8*j>~mdB`wzi>%p-e#&BDgrS8*C+H$Kj8Xy zms1-j5Gvmty~z!ylhm!}qqe4N=hB~luZ)obd5SOZ!_YJ!-H3S3EN?5s=0aco_(MDU zb!<(p8s6X7=9XFPYxr#|b)&RyR)4PbRLDeP6wA#NClRWmsq;<3Q1wXj14H0ZX3EGG zG7w-|>(_96Yr=mY_z!&VfNY>SU+>_>GC#32rT2UY$6CuYVjRfu&0(}&#A{om)`tR- zF&*>KYn#i3W|8LM#lp4of$JRf@(W@jw~|uz^3UfCx#ubsS*=&R1Sd_l?5y}(%_~mW z9IM}cGUV+cTi)22*$lPAyO0-%gr;Bbr-h6vFTiGyMSBhdqh;IN>J)gqX}XQgdvitu zOM|ol58p!q_3bH#=Q67+f%c<(GNj%=PIfV~M^C}5yx9=vflvChVEs8_CY87y-uiKY zlwBg16OJF>t~f9p@wT1+)LTW=(3Y6o?z&woAHZSo=liV5{xj_gL$X z98W#>X~22LJ0f-eDrK4<-Zm)8*-6b#(^~8MhqihCZaZjQPAx#{^t0}&UarG@+JNn* z&|0b~4V4ZTh`->j%gQ&zyxZo!bse)|xW(*P_Jg6BSH4sBvp_<*?CZ0~`f$&*PbuYr zkm8#XQ{%yz&Vi-FVHIC2OKtz|eo2mR+VP&#vdVq%w#j0WeV#GcC5N@|S^1pb71|H2 z!r8!>H*vuS+7<}8f1_iE#&8wPy5Y6tSU~&05n`F_dtnvAA83GU%;IgQZ`matCgif( zWeF7xKe_y@*2Uj>PKOp_tC{-c9Uu?_=;Hn3HCX$OTWlRk;S>_aPO#R>Xr*Tw8hPOX zMbw3v7zC4F5{((c3At18^+ei5Wr%and&fppUsIFRi}#{tcfmjz(hQwHxYb^9X-x7Z5FDb?J(AnD`M+9Bk3ShG4AQBUPse#OTGE z`Qgd`beR?L#<)$lOTnY}nD!11AIVFp_4tO!|1u=lmHRD^p`{N8lAL?r`k43 z42t3Q3gO0L;Rdp&Hg5?ub2uBD&aZ#L3=>AS{in{il#tVaYmui8w+NQjN=TOx1TOq* z>#nU|ht2g)_j|67O_e;&!=2i39-9QW2C}wTxDAY=?cHe`?dk?|w^0bUWz)+jKE1&l z;f@V=xp!*y2H==<>f{$;T&Cpccji^qb*uZ#>)NQtuyPQJVy+9k{_~89PO0wB&j<|s zh6Pm@g9%3oMHrAf8FmP^qWU+VDS3`7`Ee;_QgAjfgU57N9dCtyT`Ibl+v(SSsVzSB z^waY!yoXOG-@65H17kDGy6(kXjpS3drN;Rcp5AI8d&48#-giCx8V)!Q|C)Wz5*6tY z6YtaAb;~5&o!n^|rxekEyX^haJ`z_S>XTv-1?P321lkT3rH{4u4i zXy0}L9`^NQRgIzHIR__hywb2gCP*QUpPHnY1$L0;b;mRL%5-L{?H4Mq9?P>gz8*nDf*^N!NM1kI!C9>!TU%Rb3UwS^w791+Y& zi;aR|RE}oNrkSP?RPc7&zSyFb`8LJs=A)xpj2U%xZdh9;bq7N)^V@FmM(Q_1{)9>K z^^X?R$niCVsL-k2eMfH_My{Qg;|9_DW94oFn+7Ja%0#k}5chcXQ28F{(6CRE6JhjW5gdw_uTGb zsk8T^(qUTaG~k&PCN-tm`r$eu(8_Npr8!o`8(C@f;9qW>HM5n9?w#@9tbT9_0)U9W zLdUjv`#iEPGMG-~?=&s-Clv+e7|# zZN@<`qs)3yRZ*k~)fVC&x%msinA&?H9li)0@nXY#BTb(((&1lZ)u=k1kzncKbfU7yAb>`KljsuqtgrfLLU@2{=m2t0@Fn!X z;Cdu2B{3d9yuUA!+(1uUc;5rT&k9?FvLS^EUa;&;gkRlYOgU#!eQ-pA|Ey$h`*01M z#N!(d)o`|^?zYv|l)br}@8nD=8xr7J-M)vePP0mMkK@Jeh?0O9*zK0eHQT-WB7eqz zIV9HosQD^XNG#^@@8ZiPe-{d9(RKKKj48w*t||4I+yK-TFk_KH$6OyT;uE+>Z!qZX zs++bQMs%wq+8zz5anY6tNcM`&1(^p_bcsPm2aF61bp^OT?;5DAV46hp6odoXgln;} zdrtlV6uLi9>4jJ^ntOso>y3AP8x%?+vt&7{ebnU5j8$fLm4|haKqICa=XtdQNlrzZ zLI3SX(1r=Pf3S)#Stfz6%!xeK>k>N)i?>vC#ynG7$W|!PvtGGtbc)^1F_-=l5fhgI zS;?c4;1c>!W1~TO^FxV-(JMDC{%iuWnM*#zGdRqh+d@xi^jmwkz-;ACz!|$jR-c80 zKOeRrf36DgpEk=D?eRVKeyeO#atz}uU!c(V;nk0hlW+sVs7tl3R}LI{HGcKGY4>Z- z<2DJU^CZTioRL%W~~8EH=afHS|r-DiImAZ6nHwK25lC_#OE{)LInyxiYWbrhIxLK4PW3@!yIZx?|UtE#C=id3X(@QX`_zIVB_dyPzg?ff%tl z=vl@33P_t1zMJN5DP7y|qVrBzC&#pBh^3Evx}jsWuPm^Rxi)Y11lF5A*l!p7c9Gg@ zmi)>^@or}l;M@^fOCEI0KCKw}nCi^pMskN+-#W$<<5 zmuC}-#S%Qiv%ckE(FJmV$qXDST;931KKKaZim~ETx{r=~8Db*Q%CV5wBqU<(Dl?dr z_C61CEq=8u(zC76D{Wv$AH9~MqWO?Eh2-7I_$v}Z17&Qti=Q^>n+03lb-sJ=gB8M{ zMZ$Ep7V)D`x_@=nTdJMo*;GH|=k1k7pS4UAcM<#OC#^L}l!?&Ah-D?=x74&>qp=E; zFfouI($Oc)4W1)9#|2@zL6a8ibMLhW>~lu!v`{JF>$S#=n>j^n!?EX&CfC{a;8&8w z_rl-7Mcq6pK>d)seWy4i?W@QZ>pWcSmxRu0V`3L{VIpW{zb+e@_J&hZ z)#+80uV3l56z@*5zNqeXm!N_~#k~KJ+iUXAWERFc>*pEnw>*n_AC+V3Q_*+FDb@1} z>kZXsfcpf20uz7XNmQii%@BkH>Jopis~{J!C@iOnMUiVU5%Vu3@TrR8jo02PFHC0_ z{78Qx7-UpqSofXv=DuD@(96hfewO9y2cfJicTIAi`)2nAx^P#2$zC?0riYn((M$V& zbBcwBA=C4n)}UkDS6nYx7}6V>o~^cMo{4+$cD)z(Z+^S;b>$8J2%Wg%z>?6<5e&Q9 z=xA*gT*dC=FEs0(DZM{gm=HP$JW_8U|L>+_#NeHm%u!!qpU_i33-GkK!+Kg>dS~hH zFGRf1-Thf}mwcH+NT5I~pUs7Ne}`Ov)e}XIZv}R2Mo|A&0+>@C6>%;slu2le(T{l4NwtaXHgjXDbd zV6Ro_NnW4LY1mmNiX}cV_AxNc{cxOPdTq~LI~F;j6%qAx{}r>qUn+Vh=#IzV#TIE% z^|mt&cQhp8k>Xa3Y`bk|wJlV(P#IMHdEw}^m1)e>)+kBQC0+DtinooyHbyBYB0tG` zdPr&_ROClHsMAgt*>!ir&*j;*hySXs(PE;_6U|!f-KG~@*2iu{STKFF)O3vC{a+Hz z>==!YlK2(f2SrQ|9N%f4g@}hNLiBKVEQF&>k9fYHp?-*HkF-6!Le}u^zAYc@Cx?^F zC~#>fN|pP_-r<+}{?(rS6lHFG&lfD<*{*y4E6#)IN@bGtJp%#$PLL1|WF8__3Spbr z0J2mC_v`VmjyS{F1BN4vM)UnSdcswLadw9MPm`3hb6vdUdpfQk`*X2^5a&=h`>>?v9ldFs#U@kbQPB0G5U1g@EL{9DKk=X zdA;LZgIU4@f(41bj$)U)0a-wyV3+=hgqIGWSIZBDFaQ6_TcpEn?;XFj$}yDl-b|m| zlw+ER0UkcF|Sj(P`YvEqLEE2-D$ z{))tz#^R)z+;g_#fr*cBLWJrKb?>A!35uzmwW_K+1a?B;>`{k7xcvkSzJ|z4cPb=h zL-`On=1D=!a*QGIL9b!qSqqF&2`;?DfU;ts^RGnHO&}v7Ubsa-_7Joi!9FAq4EoBn z|5c7qqio_Ut1YbE+~(KpnN-q|>@|$ZEKE{s(;1osndE`R^K|5Xqb^fti%PIXTbUY; z14ofo#e!b z2=dzIUP>LuI&J|ezL6O=-<>c zw0wGsu$YaPdND5b4{^^nTh@!ZXm=`PplB_=d=|L9U8K3mwDPlvMZ)*v8O*UITwLH% z)(7Ok0-10?OpBk8Q>Cby!-UQqEl2H~#V7K+kAf{hBkO9C91RCFplA`L$g^6!FDDfs z{OMSzHl!@^8Q3TbqJx848pA@c@W;W3LdySh^>uT!t!QKm7TJbIz97-oS<~FP5{?927@=oH{eej7$JsJl$My zh|lq?Y+Z^#x1gIqPfQ%5VlR-xvUKNZuac;(uU^f) zqRt_y7F|>{`NSF7G1r9{AcyTSJq8Rirgvwxz|#&<2_%>Y89HFaAp?ZQI&*mL)|3{2 zeHd$VTCYq91i$w0^}8$A&ZIY<5LqwS_)llpK)F?4Sg$=4w+eh3Uh(w5agm85w1^ih zz=HIpvq(}`{Om|RXo*p%|2c*qMkVn*Rm-bYb5A>y;N1-8odSqBy&RSVUW3Q*&w-RE zV8cU{AqBkkR+PW5TABn>%7WOEpq^M7>)rnqV!P|n$WHf(VeCZwccyuZ`8W-___9}2 z5?#!|tNueIwdGajG*XDCnTkbOdGf)@u+y2l+&vP9;T#RAYGfxHZ3y>b9+7kG?d2BUf=)0-^WWjvCfS*Ey zSNAk?gEG@M6)P6#+;Gvr)i^iu6lbyK3Ujzm7*kle_!VXaWpK1S<+kFjc$Xr}y++{J z>tZB!fXM>Lf(A0;v__73s1|R|E>IT(Z!XObPI5GMB${Y6tRVPBRTgc%#bg(5;aBOa z8GyjV9NkRt1p5u-*`E)|Wv|*=knDd^!xnVubPE@IuWlmAxvO2G(oOJ2a@E{IggPP@ z@V1KXZ5A3)k=}hj4W1!87zu#+plKYiPz%`}8T_IHHH*f>ohArPLwPv0vW9k*5SeK6 z8sSK!sDKJ3jYj-SemSs=Tg5~fC0Hhag0Zjxji9%vgpa?~>81#DqvQ`g8S})|tqJse*FMwl(yiXL ziOlaz1F|2;?#NgBOq5hIe1NvZrMsBIB=-`YEjyKVIVp32s?=D!y3dr1g-2eJzlSs) zXc~9I;I)^M^s!U@$7q+}OK_TIhsR2i`rb-wtX8ZocX}aNX23GnCSh_2hgN;$lXL~Y z5;X}CX7R8q4dqo>4tzUCQ>|t9?d0-NCBCA|sQk;-5dfAUNGX`OgIOyl@77~vm&b2y z@DesIs=@Xo=xqwThD_Vxj_ji#|3_gOp?uGxo5bqS{r!m4)7sK_(v{3T5uZ*sDLXMq z{xF=?vp&=GOkSz_-?a%)fh(pC zepT{iH-8Z5epM=U;CS^Be@VT7OeKc} zPykzUsYj6N2mX~_F$;zjxYKq}zR%8n|KA+a=`(Vs=`?8`InuJZ$h&a9_o36B3>rWJ zE?(S3k^OGHdUd!Jz_q|KRJ4+Y_Tlm4I35~0HY$O2d|}S=o%s0rjC?*#t9D6TyM!?pa5#m zQLduP93(v_F4kEN86>#MFxkK@hj98C|0MG;mz6#(W>(r< zwEhsIpam(5Uw3!uxq?GWk=*I$B@U0#P<_j@n?wA%W1$bzE@yV)5$%=vv0h`Z8iO)A zc!;`VpA_vc7t5!=w0MsAehGgO(6zpdY!v+~Mm=^2XQb=G3| zb^L?TT##f2QEK2va?s|}3|?wFdw~3xS#68n_`jR_=?=}V1Cc8mr)j-c+^F?b!7pj{ zI-ZkN)Q!%D{6->_hv5(O=zY@-x|JX2;b_Mp{}X0fn}Vkvtua5O|K$qf997OmtFzU5 zM{?qC-W1P?e^m0kra1D0__LTOTA_;4T?y|@Tp%rNX3UuwP#|YCk`AJBQp+EqH$pjk^FH&%`GGMR|%cwV85~kzLsK=S7msNhdEk&u2 zwjz$j}8F^`DT4^)&CzL@b zn^X%H%p~vbex2U^E|y>82*RJh8uRBGLNL#tn5uq&72>~!`~8e{KX86_;Y(QqT=na_ zb_}&YCKW%yZ}mBMyUNZ&ye8LNIRwI_aVQH$N>v*QqzFIyWej6A6eGlfuyr>faK$+; z5S%s=K!nkVmK`!WuxngG&smjpMX77(96gZ-0d;07sy+qQLW79x;5TDlD2=unFM1Yz zQ{@$$+Sa?f_(Q`DSkG%7Aed|NLqikS?aNzs{HlJ%y$?T|H2Fn;ytMy}(lTt2;?8`K z{kd~03fU6<`@D5sLi-<)UcITYXJbidXaWEo3_$)+ZjYZf1q&4w)A=~$fBF^_tnkx$os|&FvgLm1 z3DIrCon%f53oyo_vrYcVA%lB{c@`-n+LtQ@^ZOopf}y(KG{U;P`A3C?h$&xL@i3_i z+?8njI_2GICTiNi@0Ehtp;ZeplJO2CqLuA9@4wgqmFF&Z#o2OODhqe{Ghx4?s)jLl z<hT=5Gq~lvCQMQNQ8`p_4*{#&|*Ht5WYe0L3MYwby86Qw#fRn zcaWdB{w6^4ekP!>IGxL3aUdN5u!jNM3QN|8wMg;Hr4=KYt;`?ExJwy~fOv5>1|qE6 z!Xd#UQqz`&QDr)5&2hRrJ1t3?bNu`d9dz{sOY(Fmu~k}*@#cgDgVBfEl2-(Qh^DrI z`!hB7?2qi}>WNo3PG|MUh6j5+TZk{jOl5uUKhF+bRDb$KQW6m`Z~tYec;*3+J|=6} z>tA-FmG2j%3AU!V?Igj%)xfL9bb|j0>rr-+1jQPWWM{+g`%Oc#z%Opr?CL{5$fSZ9N)lSnCNU4 zT4TUmpY888zH@+DX2eOA*2+>7Cu3swUIm6N2Zb7Cv;Ahs0ta3 zt?X8-L!<}xsr{p#ON@#v2#DxY;bOq*r^dlrjR441ojKIjaW0C0#r;?L#Zgn#d2plQ zywyr#VuTc9n}GzJ4~XGJZzjHzA80${aeUczlgt=sF{}9WkXL6oNbW*2MCtT#t;f>cc4jhuJJ~_%07vw&`^D9e! z@8N8#&V@_sD)WZ3(HX?q(6N}yng}kECIaar%#ix8L702kGdD_VcW3;C8!_s9cRI}} zg$h9EOm=ow1j*iUtj$f@5tdHYJpT@F1HLdbpMGTr5IO!KKI~d_ruWH_whj}pL~g%S zVLh25MyBx5X!uxQgWe)1mwo?B#oT0AeyZoI&#pHFG+$8YY0>=`6(p8P23N&@e6P1P z^CrBj@?tSe4=WdAC9!^FL6DGDHpq~G55q^A?-d`_Zz2A>B(XHT{Z`!}{b^x7+NM4_ zoBJ%(8!q$WGmSKZrL)ypRHnndv34W?0l~9ol?vDpEFc*^3pr8S7Dxq~hy?-d1{yU& z(9O|*KuYZw&d5dna%&&ur1#jyoZkO@zjFK7#1&fraQI&^Y&eEP$`Zglhmv;VAZ^7c|H?Kq~MO8Y@f8K@7 zG0PC6(r7fr%H3OE-v12V`cOA)A93j4Cuf>i_kWK)mA_4og*qM}>rE(Dm%aXxv`_o= z=qBOP-iwFSkNNLpPhH;Fwqrv~G~HU9V3qkw1Hwhdk6#WT{A@@xg{@b>$7#?CfKBFaR7u{r{YY;PqZB_xOfA= z;mhXL2!NIX=bxMZMkfGuQFb!ZQjZDDMj&JZ0-|hMFup~1;yK0WP}$}${0Op!ty4B^4W8hX%SQmzooaZ6 zEnCm@^9h(gX2ZJ471wEcn#8NGBRA_TT)&CkB-IJyYWWmugn>%7Pzej2g<(X?Fyd%$ zqtB_@ERt$R&Ww#Dj5jmT{9A1c~$(kTW2N#K9Ya zK@>~T{ZF3mW6oi7@)M>afW*<%5!c=)>Y_kq?I0&ov(FMgh@QjXKz-tJSprz}F#pvj zemJn;Ssge|4SXQgQGYIGiG+kiO4Gj+686a z2p^|>Uk1c!HP5V_cLO2gvZdpgT}F^UY-*Rx@2V{nik50t zm(Tv&3)EUDmKrUf31vmn@VhI9O+#2Odci=e>Lpl%Lc>drqU55=IM<#I-8Jk5x5)|8 z;S23Z-8)2NtoIL#5tn9Ccp}h5kWH0&t7(uf^V7TT^Zigcp_rVk3}_%WCs1}?BLPbXAsrf9`HLl_+BW!4MUcJ z$+L8ZB{a)JSwQxehE^x@_uQ6`r&V$$YAz8sTU7y<|hTO)K9{X zhPR9fpF(GjjK{-h?4w@zZ=A3CLm?##-GQKb*@i15p{gP!ycy zlpS~sewe*0d75v;1mRcV8n2iMai?!Q-4)wbI8C?+m$bNMlnqUk#hjFT{AY^jzAfDX zxp^&6e~^;oC6MiN-&%;9>h;)bAQK{gd>uZvlOuRy%1vuo&NfvR6=q)V$yx$X*MdYM zL*2N3b%MOa7x>*~v;A$Jx$y2~=b}re%t}x0khVSm!~f{D8t4~$)$*M#T^j*f5TMM} zya>UCpoRN2#jh!Kdro%0jta;2w{tg%6nC)T|FHS78M)+P**b?MNnmNKur)t~j8>2} z3|mu&`xC)=HhE??@D!mWiQm#fBwO(;t-bKB(a&Np$;5dGgR|;Qu^2zlRtaVvfyC(?9+}&=Y{NpExk1a$hMcW z$#=?JMZ6v^$gGx^MRIj_%5`3dxL6r=ebrBLX7l6rEe+v%>Ca7dfJK{g&K*7}F9ZP_ z>w(9CAUo7PXLX}1^+mQJ#8Sm#>DT+&uPvKOe)BY!t|+%FDl>qDS_qQ>Ll_KZab#Mm z*UQmQs*E8vtT+mtZ_VPlzb+<-p0VltL+!bh!udm(ykrS15d)7G=02>;4P(IKS#Neo z_)R5F7vA%m-@nLe=9-Cky?^)H5^+kFIMY>N3zVlp3(;k2%buCP>LZHY6n&1jKLlvG z4}c!$p}*xn@j_mpA&J*y7{Idh6%F)9!e*N*HNBSblMorr_cmqLXi1zU1S$F>5=4BB zjL+0dlRdnykEgk>$u%CQ72nF?7vgGkBClrFsXVR%E}SerM!w2-C>jze1cslmpT&fI zepMM=oPUR>!!(jk5yNa*Ik7YtQ;@UMDgVY~_AKW)b$48qp0TIpsax*zg%r4#9+;T{ z3#CD0%V3M?uzhUUTr8|KZ_e)@O9{anRatG9He-S>zD zuv6JHzJN!5$pn_p@mHC{B_PG6)3v_=ItcJq!!HNF$x(+tpLRM;+@Y%;Xmy@()^*7M z9j5ED0Ctu)9rMcfqUE~+z^b1*+26ryr2eeohaJNON3LIgeWZz(pu+L0{b!atbF$`> zT#?1AvrC8OOrLl0hc!Fn&zYVC=A2_C%;Jl86ZiOJyRa4Pt}MLq0}~|NV;gzThk*nX zv|DFUy17k$8!LMu?a8N{Bq%@05d+qr=5ERW=3M7{cz*M)= z?rfeBhewe8X|EB9jM#ls+&>`+qM3Nr3XlZ?Y)=PUkAt8NF>1Qk6AbNQ{U+W2F_N*9 z^bugz9gRi=^46ZSPW=?K^*jZju9c3;RG`&60~NK7+h@nk8#4pDrkFM?VekUfWT69< z@o+H+ua4l#8*(*(154VVZp5;6TE!*8vYLQ_-=v@uc3>v3u=r%_rG5U;2K$l@dviC1 zcF-kvMDef4CgpZ({Uba|M(**<+?~Xa{IcxAPuXCqC@MVevk}CR`NXsxh*{-G7vn)L z?{mojXe<^=u94LzSX?tKRs@Z$&55XmKHQSStc6-;fII`H_>A{>1TSkGsOl%sA3vxB z1!(|A@gk5VVBCIbr6x3?OYdlU+-W>1=Hz*!+DL!`gJ;jU@>qQBY5ot@@}b)r<<|lW zwlS>GURNBkR+kT7J4;F|yIIB^I-;}zcPH}qG9i(^rgL5bWCQT;Z}_fypgOzppSZ%? zfC^H)ytBdZ^R}9QuBVGLY7EG~U?c*Ta19T$;py_#y~^f}T> zs^ppw>#@ei0@Vosrw$HWGTt0o?)0a6>(+8De+@OSP*otp?fj6}=JQI7DI2(NsvpiHeI zQ(z@HO5QM`!^Tq~pSFK^I^U2Gs7bgGbk-U?2)B}MGn6FcH3lBR4*t82X?V%duNY2vFQ5S4nySc?3*THrKIc)Mei@GZ!m@q{$~K?eG?8z z((1o|a{rsTny7{womkil?&+oK@)l1XFii!gD&Wa|aDy984Ge12gy$6+JdGq?JX3loeWy2g`t`T}xV2N)Yzw4SawRzy}#%(H@x3u1H z_xLv5Ukg8OeJnMJJep%ypHFQpGnmk(uP+6tY2nECw$}`(h}=xKEpe!N_;;$l=%@Gz ze|Iq_TLE3Sq)c~L4Aj`M!)xG)pUaX^b%&+@{--14{#&fKvZedF-ID@otVtYk&6L(5I%t>cSHDLam@~$}Hw*e(R zDxD0~7cN1L&M>}@nk$>~_UI=GaQ86Mlp<@-lZOEY*G5aWz;YGUIDij|Db(yS^GT(n ze)eduYbINJiyxmn_h6peTEG9tPga8%I3e@6m3w=rkG9~dwd0HGpxNCg3(S(q)75-b z+s0$cVF-#XhHBCRH8R&e=FzU+Ui|jxP50uB?fMTRaf7cyXNm_q=RGF#sZF;)M`SO& z0jw5GPv+~N&1xhgX5yT7UMHN&qF*W3<=XpX8p$R8)XYK%V+%5m*yyJiEd_jLwv|G1)Z!i5c*6|1?7)s@nQ zzx|pQ#jta=#^utf#P^ooMU+(M1+f-{TZ86GUa|M(WGSdR?s1Ay@BFT;yl1{EbU!M66TSYbIzITze*i5RK8(`#E`G6bMx*%)RR+ZMJ z^$g!9$QlsK5rzSz-JPlzm@1~G0Pg;>PUpI!4lCrtP?gk9tGa2XvHfpU!70ks&DHzO z6b<*3KC!`fu(=j0KCksp{8FZTvW5p8Jzp8c-WE|rQ7tC$^;X7V`Gkq=sxJ>Q_o9un z@t!B7bS`8A$E{N9)A|paGky;6lCk#U1GG7 zdb-o4mv@8^Vp?utH4v{4IyHt@G1}zJH3)f1|122mEx$G2b3677q^@pD0zoCsI8x4w z7Q6KX07{tdA~g$Qk6JuCZR9+wU&*BEo&lVwXp0sG)ggn>T40OiOLYb)E>)HY{#*-J z?B2dWCet;JUjJ++Jtf{X3DVGi6=B;rJ8-*1UNOolcjk+K8Z_G#xyMxCa`O5=P_Z8X`)?7N+O z;+ZIoH;j9@J#~4;*jeWrE|)ex2!i?-i;;UU7jp8$TK_%7u%Iz{@Xx1OvzDrWQYi`` z6NPbK_kOr4X$znX_g@M(qAI^v8{P}I5$&k+HVEv!#1Nu@5de2(6_vtmmYa00?9M}< zGs=fCNT9~i9J6h>xA}LRvK{LMMKtcKf(=~YSsA#}v-dy6;G5&G$5h}t9);}Zoc8i_ zMp53Y@B_uDJKK7`!>xsjAPq@}zFm}BV=d%xjUmj8(9z)qpeT=+tE{{hE2gw}X{WE1 zDy3o}?0AahMtPCDFeu6jP+M zqVFX1+ljBpHHTcya6iP*z%N7UBw^PhtB3V0^FW_=DicD-A!dY0_}2oULbyN+RUfj) zj0KEI>b? zDfy#|w}EzqdEQowQD&j8+^}bQ7{i{o-&Xis6VRu%pt^4+bq70!(f{fpMZkGTr`qgu#-Nol)}o^=psRb z&w4x8H2iiOVT2jR`_PT-<$Tu^XL~0fINb~U(UhmXdbZr+4SV`&>EGJud=I6z>^Z*yH(!teW5A6To+QY@VJPw} zz+vnYZ^0n^*3_n)JqzN2;8DKfG~n)l(q}tqrOz#Zf==Y7auvBH^+7WCi@ID=8zMy$ zs5H;nw2_V8&4*X!_$&c1seNXZJmZW~4F3FkKw!3opoyh~Vfm|%a({G`jo6U`*>B*S z7j6KsJYS5{@ztB*WxWC?@%#2JiS?JnZfXYliQK%jsSWiq&^LW{uOh^nyzAAYtNDXh z(-b@8fV-=psa*hwY~oZja5#17>Mbq>qM_Jbr({2*WbKa;aN)<9P`$m+Y5aZ9t9D;6 zrjod(6GLux6hphbj0M1VFRIx>pPNMDmZ(C>$9&Ft{r;p6G9yeusB*heC7<)wpET>} z9PHh7q90N!h7?iNfZjj${O2X*qi6Q142xi85fIj}sxQS{0y0&g;NtzCuQ1d|KsN1l zQe}-s8&`WAb#eiKWB@V`sOT`jTO>ftj2N>H%=jJJGSg?sdaFSfYuKr7U&VlN%)^S~XyW+{FAWsF zF}MJ#LF2u~@u;kKZV`Oy%v0A$*>#~(%rIsR>r+-9FeCU-KCz>0SiAgfT)EPLY1&7f zCj-z@5vB$Uom9n$RYwK2isBs@E?NzkkMZ!KlAL&Am)m{Vb?z!B^1Ix=?twG!f*+vU zIZAjkrcx??sK~=a02Mia%)wA(D#eM>@5Yf;MDc)5zWJAI1|cde5okoIXC#VMQmef$ zi~x5kf;tpih-BZ9oxATpwa%Y&o0<21AN{hdAb-~LFhH=kI4?zEs9Eh@l;vJE3m*(! z|A+2*p6~v!urV}4sYQ^-s0ALw^6>2a+7@J`6#!dUpuY~b-*AsDC&8EiST7`r>ERd! ztxi+Z{QDrkQsv-D4b7)CIhKIJJvXqM?6otZA{wZ&L>h<&GM548ZW}30%MbnSk678K z;6k?bAHcPX%Lyl+0>tRi=AxMQXqOx%ns`Jq^R5w)8Td>NU|rL z*G`rpI{w}b({H)(-i`h-$@K(7#{FB!^|2W_K;tHRj{E98KIF|;r@Xw zO3Vj60wd$#K23tiO^rl4+jJLLBU5Ybq@65?x#b10%`uw0tH-kAgVEl> zV~hTp-DW#dXO-y@eKVijzL2ggw=yc5Yq`U)L{9q+k^+jWvko?8_30B6RHqk;oHdHa zSm<>?_XY{g5|{Kusz!65*vhA`Iq~8B1p;LZeNJOutg+6elIAQWo?c^(wm;Ca_`-vb zyq(@QemP?ScXs+sb%|EJFB=P?; zEf~w)Q=A&9q>~@s+fcE@d8`Dy+Vf!O@~}VT^V4OLh8oY9MZxhRkAk+xID~I)y4d@d zq%_J=8rQklCa#|#!H9s&vj8|1xS3U|SgWild=%w0=avY(Hno$``x(Cf)$FIw4Kq8R zbyaOD18QP~Co6Un#?;e`Q2y0}AOs0gIe4g-yKJh8T*esL1Fw5g4~dBId)fyr5HIR2 z>p@(#(WL+SOl+s}Jm}`~?H1@%vaX9X3?Zw!FjmkRnsRtKOZ@R)Nn( ziGDU8re8fWRcez_xfnWM!YcBL>@750G`0etPs=np#sk^|?aRAMln}{ZE|_3?fekhd zcp3;#?Q^rBV3}fc8z3pQ`mPN{hc0qsl7z)2`Kg9Mve=L4lY%NGm3q-Gp56yP4>{T( zTu9TY8l(@4)k&oodFf=)u>Yp71BtUI$Mvq}SCbTo35Gfpt!VMK_afvv=evh^dP8(* zTTVaO@LF&igTMjFhF1~(rhIohJF;OS#jsI~z13$6$o^e^DLD>A76E@VJ&5T>D4)~nq}Yk5tv`BIqU@-Aijv@YxBh)l29!=Kdh}}LxPhZ^@g+sIhOZq zT70Y3Fhgz#kgYS-m`1^4zZ+Og!~`Xau4kZ^JO`m zkl(U3IsD4Nma8c(9AN6%C;IvOwq5l(=k+9FVM_iMK&6q4bAb#BJObN9*9u++1wc7> zrWWnE4~nH^ZLI$GV?%BXS?%T8th<{>N7&FHE(bh`F4R?BFV2DnmRCGioW6pPHZ_7l`b+!%HX_XoIg}a)-6d2s}d5;?3HGU4_5(qctIzyR{`Oe{IPj4#&lbti_(kj4dcGiAJ>Hu>>!|p|qpsn~l`+UR zK)n@N)dKjut%xzKJ!AoZ(E#{FcPF(HeAlkFd=KKh*xc7w4KZn|uynwie>*?t)*)$` z(yBv6>~0i5b2Xw}pst$Bje-u%=PQZ;f#T&cAqah}gOE zvFEms;goKi(T#0(%>t$c z%Y{Y5A^+7XZz7SIi}H(Yg|}v|Rjz{(XGDse1^qUb?FjeH9&t1oSZYL8T_J4(!ZmKy zX$%8nQyj8s;lfBgMImU53wRTYH=e0}j(yLfSD52XiPz@NH{r9q`Kt6e#-e_O$?un4 zfX$XiQYf%l%5PtrE7UIsTLu6c8Jmu<8U7yoMddb_aQ%tr5b4Q#eOO=K>xj98t(el=%X3URWtr+&D4Qx5_6*v7xUJpc$4-bubpES-vW}0Z=-&kE49q9sQ z+vSnV$inMDcgGbV7S5UkgcFVWD@l$e347V?MM$XWBjMVHC7 zZ92DFwi~MLt}t#fUi$Mp26Pl|y%%@=srm_cRTI?(zyYz`=A=Ko=M%a9gW(2)-n|e? zlW6G%?YuNwb#CnM3ZQj0&?(&c=1j^qX?#9CH*Ui{Xt={zN2~sC|I`KGQ21D|1MtY@ z#31807=ifVLGLhnz@v*Y>(5>-wYm8I6X(j_#0M0Glu?xI$p2WYPW|Tq`NMfygS_KV zMole_IJQl6{8(;WtvVC9H*67MOHwX-s1;1tj^92rq(fR)T~!`Z&>@KsXRf{XbKiD! zO%&%8J0{9H2C+ZY^==u$Nmu7NNYlAX&{W?M0qxUm6T z7ic}oEcG5;%{nTRG%E%pP^KiJx>=d&qfMKc3fvBR>1R@-Y0!GYG9Mm#&7}yVS)X=b zm!=V()4tmHXsEP8>Emy(@k5cZPqp1dAa%Q%W!@k@!~*8qrzuTE+Kq#s-iV=Y%sM~$ zrPjl}==y#(h4t9Yr8a?~#&|pIhTmScE^lDl9skrh6#z8A-&f;?v`zP5*7cKTrMDng zK}W>Zn9@ZpM2-wm zguHY)x(wK_Cez5ZWmVD(^E#O**1euiX}r%RZGVAiyE0P(EY5Pkc?dl>CJb@hjWu|? z@y2f;!lI9^pl}bJ@K)cflI;zWgH(_TV}>X2#i2Y?exdtD-37nIm@Q2eSqR+x`Pj)} z;0QOIalnCFvU)A|MPfo6oy%Fx%g?H|9dnoye5V9$F6rk%K#+Dt!SY5OqQquYrt>i8 ztkz+_D)D$oiw)EMTPv?u;U&w28^iV6)|wN_J&f}k4R6AD^XLCUv?3vZ1e8Iq?HN?x zg)F^W05Z%5i|fOjG2rsy8?&Yq<)b$7)TWX(6tq2<77A^rAZA-Hc@rZ0g3`KbC&(mbfD;d%iYhG3cz0bd*z&En9bO(N{TnMj*n|!xH1c`gP%Q|u5T^e67;ewO zea((gb&A0HvZjw3OOo~bY5b*(V>1#8VgA}e5*KYYx0QPAdwWy{%!Mn?+ik zT+)lrH#wOApYUmybKJ9O(tyIXn7Hv@3DcIx zaIh82kKF2w%e@jp&YHsJF)Yf=N#vk3F8Uhn0e50-$3>zLm)hAqMO(_8&p4O18B|;< zsDvwb@&uW7hi+#1_8Ar;_(Q22(1E`fVI5ntaW_!>SZhwWCTl#KZBPf_Jxq~&lFJ|2 zuhzIu-0hz{BIuplazwYulnDd|Ox9~W6N_LDjI(!=2C5VjCEKmBAPgRdE>xRCG0Xbh z>V*(pO|o1ls|eGD*DYjmk>)gS2!RCb&lhX`$Du0isXLjqk|S$Az)Y5zjafx7wV72Z zxN<`cf`j1f-(Q+f20W2L9!rmdD;h~<4my9;^D3M0?tn*ZnDe?j0!hHiHMWbg2y|=$ zqo4Fs16KUsWnSD(iN~QPt#I-@t)ltStE1`y)hHm`ESlRB@x64@Ju()F0P;{DuqwgW zJlAzxPR1Pd`no&i#CP0|qSXOq;vm&~9j=-sP;>B{NZYByxC04-@V|+m+C&b}0F|v{ zQD+5G@iJ7hM*JGCvyLq6bDLq^a~LKoDCnNUC}l$lqkvt>$=*l{atRv)K+?z2o30#2 zQrWyn(C>Z?JL>`yD)+dHDn+fVths7Mj`Zd24$cOUuf?u7PW9_^lU^vZqs<0X27#Go zp<4ioPFQCtiUX#JT0^dLcRcxKWHpF#ETql5#GiI2?jLk0IAiZBVDa&kX>(O173o3Z zdRxr#voLe|m#u}f%eC9(8N$=AmvK&kBycka0G(eU{d>j$cVXZ&q-vWuhq-hGJq&=` zl#TBQSppjsIapeLvQR1zUCn$a(GM6lQGVUYMI%;_%cgwK`07nty13Rp@uO~9Dfc8B z4g2!yn5v%mx~v6`#<%7iV2_$ZVSBpJmD#VMl>*TpHV$+@tBC&{U0#>(cpOxBJ~8@) zYoP_wX>C`l$6DS9ASfPShv$%*2SJvZ-XT-v`z>dgQlDi8Jw)*vmbxY}^?%+Ol8`~e zE&NpO^{-c9=Vi_LSHpG9R2_aE%AC^Jv| zjReQ}QnXTP`>9-*i&rdSby~@(OHvo)WOib}oMTF zZ|65>E&Vue_DBdt)2nh8&@B|l^`sz%?Xm2 z4g4g-Pe&B*x_=x{}-#ibQPU`};8uD-493^B@0{a$Ij)-AR+DF2?M=dEnl)^xm3d zGap6CmqC;EDCpBHb$fJFeuFcsDW$Y~2?1r~vR=a7m$&L6o2!y}&*#-izS z(G)Bx;FfFLZD-R{YWqpjPZt9d4LJ({PR#uu!7VT(mb~~`A0dHRKKwc0EsAPV=(zyj zY4vLgu&M_#c+GhXtN*ou>vP~4X6$FIiGBwetTFo?BD}C>LXaN*lPmMjjm@Ci64O)) zBm`h${2>F@cdt_>$A9$qD23w6gsptsC?G|KU)mV;cd8aeyHMcs_?W-_lwag6%Yr_WjTcE4w8HzIg^NfOu?LK7lr>DT zV3(3`3IK5wr{{_T;Mv!!6E24HpiYU{LvJN4Z-j6F{K~}siI04+ScuE-|3?P5Q8{3wRIPejEL~bkO3&ylwaYeLa)KKnpNA@YY z%;ADAk~>+_D69{F!VHWz>g1!`fdoz~1f)CEK@Lv*m^n{o3E0tBBV?!>Nz-%TppG=} zzq}WNf*@wfjm4QY_Docx{%7TxwQ&QY`{L^{Y-rHToyEOvevy@unea=>`iESE?*?GP zJ2oWXJ*M_B7o-A}?QM9EIo>M>>u(dtLVCY8IRP>F&fnL}$7-AuB02p?XX78o_nDNx z%?fIPHpvY%ih#YF;a_C|vn2S>grAj@ikQU9iT4#K9@qkv;GV|@dZ5)SXr<21%VvrE zPo8+EdgVqT0m6e3x7$bce{BA=G%(I|6>Uev0_W!PGNZ|#f=r?xbrd0vY(#E0iPjtX zHb~;6-dg<197y&2Y_0hi_wlQo0Dw}g@S0Nm!laH>VpX<$*N2%QPXWxNu+JbX5;mBL zZU6%H4wCq-kMPQly$Q1+4Gy~uzQ@~cht?xGc1~RdL1%JXB=WF}#$HDbVdo^xSkk5z zs6)3zF*xZ`+cm_+&XAxa#R#ZbKJjvIm%@9_V~5L{bsZ|VIt^(H`p&b4pBhjo7NpbK zRVr5gq$Wp^=*xah)HvbCAO87iYxRAH>2eA=b&eS=?~c8=YeW1gxZh`adDoYY-Fm?m z=dj)0=J#QJ-45#RyXAK@uKXxC)B}$KLJh%&$(s| z(+?XAWq#?H$`33B2c0mdj1^flFaeR#?)GU|?6nQ#glDVeD}zd$N~iQEWbruX#wq4u zfs8oDQR>0zgaZ)9MEvazc!)Yad8e`2SBKCB$}&simJ z73P?Ce2WMt9OR}XTmOBk82>Ju{P0rzBjF z_|y({1q%@DY1MCqxGIzW8c7Oeq=21#{g zcf2VmJ}2KNEx%;o2b>{d=;6Dn0m!cYYCVd1L$crVl|+w7tZ^OciV!O-g&pcq0^k8^ zGC?V}^cEHL^SeP76|!1wsu4{-j(`?KvE_a}JB~P8G_0rSV><9*Cc=lJsN!xCdOl`; zc+}thalNI}zfzl&y}_~s`#R2dg0GZ>h18QYU)0GQ&~=3IiuhmOsY{uOJz+=wby$cE zJf)sh@91?b$iC>`9}scacF9r?`wyf~p|=Y0C_ZGWRq;v)5@ZOMJjV7Y5-UhZgXWzD z9S3IIu^K?X&;5pzzw~93CThL%716e2$$@On+oWsIwwB!^2ha4-O;$JQo`^c@!Yq70 z@rfVx5q0>Z8s?taC2lOh`^Dl5(yG2d0d?u&-pS%9^3H-4qk`JD|Ma%(JUFm7h6!zZ z#Fs`Y_e5%2biBIp;8?`ZW1NxiutEB0>?6;z6_f||=-cBlf$=2`d6xAVP|y)LPfkI= zv7kV#E*RXx${8y9+*MDUEIA%tk}W1l(#ZBz^=V9P=_dT1b5Va`&mA&(9|_U?oelq4Jx=}kE~;tx1x(8} zd^=OY#&U7I+ot=F4+J)s20;w*kBQXA$r|I$YO$-CGbWH-^;M1&+OeUKG{?irNmy2p z(-V>W6Im!NxOV@N(?8d1c1gT^irC2{dEu|>JL(C3E3!50F_**P0y4vl6mq|rnbs#% z9zDqUs<;H;XL_hwk+GBi7JUXI?_}fS<^swb5fn+%wi2+v#3$H}q^#~1DAfDSpe(1B zsrFJ}^?Kr~o$NV9sR_i}#@5!bwhI)}v4Ar^XT(EHwW8&{ z-b0$PTH|B|8q-nO2#@$Z>vHgs&3!tk5z63P)KdcQ+_xp;w?6a65C4{$*i$CQDo$}u zeu%duCuU!?_me-xfzhzw<;UO`h`+GO)(vWNI%6}@JMS0$8?kBPmjP@)tTPtX zSBF+L8kaJ|#z{ddE??Zr_FwdTIs1Bhcyd@=jEdkNbXCT3k7d0;vse(hIgnT!)F?FA zN!ee%Rbf>4>&o|C-OS*w5W<`X?39Rm>ZJn2*L*^C_rrfxRt@(^BO!LAwWtI3b|fI4 zS(rI*@c7iTQ~m4-Ip1?2NZFje=lfm4u{`!1`P1q{vMle2DgR8FFthk|=i1B8IB`%+K7Z@POr^c8CFlMN;3WQ?n>P9xnj}s2q=P$b}jV?kukY zLnh7Q=;?-Xix>BKd)bd+jVsj&2VeGNF`O#@eJjA!#N-6^kqS)^!KWO8i@sg2VG^Sy z45_zc*YJC!4z1?YO@*kY>|BPu3kY5N$jfD(A@s6eqXJi|3JoL%Uw1x)QcP;+d_)kl zTFTg9*_iy3vE(_R!o|)>QT&;|Wh#A_meNYpmhBG;W3#?H{u&z3oV=I+ z%c(+S98UzFd%`I3ck)1tN?(hmh{@@7M{KH;zYYuF2)bq7n*oQ zMFXhZE`b*{J$O7QcLA`_{8c}Z0$NVXdU~eQoI|NFIlJ_{V?3^d5KZ=NyZh8jK??lI zY_0DgroYm7A?ZMzH?EODc?l+=Usm49%m+3aUr6lOfe{1!O-Hs zX9xg+(j^^VARrorWp$JdsN$#ZdkeEH80(Kax^gEqf_FV>Cja>0)tu4+FUG+-zf}6z&-q-LKHM@N63f{)VFn zLGAqOzN>GvoY=@}Q&mr&TASQwoIAHP1H>Ls6epGtUS7Z z7X{sxAy|qO^N{M5=CO;J;=9TiA_tH>M}33BC9S^|)lu_R9Xqw(w9no+iqfzN&RP=k z5O5{T=xEvQMzo=an%Vv3^I3nkQODiTVRjHt%+6>D*F$YqT81`M`8J^HL+c1KrWdt~ ze5|bpNC0FziIRWQ`iYwS&iz$S15EEA)PwOBO_d=Q>jUbl%zX7Jw>|5t)!|9^JsLfd z)lx&rD5oW5NS3J_S&5+*4RhByz9inaDJ1p~UzosKY$3sv`7;e%0;y|eeU5>TF6 z?mP?Luv^ahj@YwYwa(lFy_ehj6#Q{W>4l=Xz7v7x_ z5_$$c5}E%l?Pug#DD0;fR-CRz`dKE^5|`(ww42S3XRD;G1kjMVPlQ}$=V+8WorUQICG(i*2OOv8CgU2Vl}NVKCY^ z*jgjZZOtiKCx0|8`i@6m+I&RH^E5oz_uOe1*#;R94_w%r73D*@5Z zg;lQ%xCIbaAZ_$pM{|s%44#LAK`?VK8MOYE1N)*8EIT##*;B|(HUKNI^)VI~2%|Ge z0000h0-RF@{N96ao(7@ZuRo9u++5nA4Qc+KObgw;X7KUgmy|8&JVTFd!lVm^q;_g# z(jC*}s;(-9yutlU?x1?0#l1eH|14=+K&4k*4yHdVcS7lDitd6?z_Aatci84lei8UH0K z2m#P5wxV1+F&4D^Xxd>?<-`ETz=KJr;VE^243wjFbo4=D|NdGNDArCafRcgTlWI^i z8c<>P@?_0`@V0%%Rpn!=c_S8E@_j3m13ov9-*SdgEkxdN1@Rk@>xxW3$lp={;zDlx z*aTy7IPydZs%oFeFH*!&E&?1CHRzOnM7uTx)xgw1my8M5lC)<^vwT5*$diq3GQiRd zvLc5U5qVn5%ErVjbk_Wp9DL}t9~x!D;r<;DwFP@N1ju zOTmJ-cX*6T!3rw7XV)fcG)9NbLRz>V>7h`IA}B&@LDr%A$w>^1wB6HOp)bYdl$pgy z<$OD)l#ifu%;`Y+`Yno)w4W!%nVt%2r@=<%_scw4HYW;Md~8(p<%Qh|bSc)oE*J$e zK4}wCaZTi^&*7?^;ec1Jms;2h&osZb3Brgb-4vc*%Ssf1=kEIx_Yp@`YFlf^{%oJ# zP|3L=ZkJ1b$(&hSS614-lw$to3P|)F}0{B8tqHNcbyD_t<@C!H;O>Vu9Iwbotk91Hf(>0d2d(!yl4>raog#il||dL3|4(K z7T-^q^e!Q<+R!vGU#2!&%*vbLy~v-O|26i-AR|`cc`t>hvbyTk%29kHIv43h!-b8@ zg+rCFfDhEC;qG==_f|xWar{sHbEn&mAppSDTX}~sKCBc|ecYU5M$UdRz?{&B8#O^M zczvD()}|-GEY<;Z3yjtN+QXWQm$}jRzwfC*rQ{f|QsK51h|{+&!nYCeCr&kAlQll% z0@n>yi!=JsheVi9x>g7uU0WJ?3zTAcO_GvZ2F&gS8xa^`Jx4aRhQ=q9RC@dBUV9GTCQg3&b$ zsM*NB5DmwIEx$)w5h18>u>T^!Ik)fwWGKumynHBP-G`M^G+_cZ9$q>^+6xNz{hy-q z@TcnkM&6eo!lXJ*(o>A?)`ug1Py$<`4G3_5dUQt^~DkHf3yPiT_P@0#bbbg&QZ z{mQ2SQwXk3vI@GqD~}Vn7!KzhRR`QYJ6^AgNT^`xg!=3!w3~bvME;aQWm7v=c|@Ss zR~MdR7hq1D6sWH1@L~tLr^l=mX&wJos-yL{;dy&N(E2ryz%I?K8r-k!T64+aM(z66 z39Vo5){eF^x97ILd_Gh42Y5RxzweKv=gDWwGM}Rpje;MQJVFQWrcDj>npKN~Li+?OXk<~_w?i4^GV9fMbHfBggGUG}W8EKa}53sTv-F8aZ?&zSIY z1z}gwC=4Bf?z_dDzk1CdJMnwDml*PRH~38D`%amgb(V6sb1LcNgM8O#p2}we4->LH zErMz5!5mDQnpZMh{@6Ggwd;KDmowa1JwF6i2d6@Q3FOVD(9^-Q8ep9jl06rhwIE;8 z437rD{TsbgXz;{u0yWO)Q*P+yZlwHof%yy_Luv5}fH;sHa5?kTW4dHnBbk>bc~{}A zBqi?Zn#)j#_+qKV5pL^G)mdP6*0Czzx?yAJ4%CepVNX(pm7*=*yN2vho>w@=QvA7W z!OJv%pGBVcZV8%}Jgrn!RW$x*jNL3y=@BM?>X(M22cR0#cmYym7%l#NAan#banv z3y;fvi=(Z(CY{6R$WjCEg9BNJ(--lcHX2|*S_V`adVEN8L56Sw07VO_orfsgu~d&@ zdo$JGDtI3X=s3q z(UKGbE3H@&R}AselJ1jXg@-^P$#F{C${Psx=^I8mM3tjAAk&#PenQaH8Dw;8N(-&J zmBk}7p1|4WnK0*p_9SRw&-^r!nw>2%4zNR&nt1n%%g}&jJs>|CJeUNsr@_yg11fd^ zhTXY_tRwa7WpB&_$L2-GZX`Ci*eF~mE1yhb_2sgJYx5k@vp)>1S>O>USDuuw_oH9f zImAIbF=Dh4Ibi1*7>80@FCD`nBFiY4zHNa%;-zL167>_pr(LNnBRn2@1WVKO$&LL+ zpiEW~1Cr0;FjX9y*gXrSC?r@elTD4zYw-2`&*9I^1ITGCQhv4Dj=ZK-zaO|M#SL0K|F) z*cOKTb1X8623KW?=D*eCC306TGl%iS&$noR>Kbm$?_PiNZQ;{U2LRn7u@;Y)Z?ZTa zNT@ebcPZ1)R>L2dADU05c8P#%f-TJeezRj}xu>Gg24pF+pr|b+i_Ma&%t-GQh8iJt zzYBP_0X*Y;eRErZ8=$C>!ukaz6diPRw?0r_QobasRVEJlTfnap#2aI4N6Z$R2W#3( z4*5fLR}3qZC3OMNRF*b$hm(D}x>(VbM?sGV)StlVM&9Uwl#E4gIHSu0PLf0u;m%DN zz~z zXqpA=vdbM2EA^zfc^zsA;lWM9R0h1(@0v?G-jSuIYY%bqK+{~C$lJ!wB?ifIb+5|n zQo8f6?Fcket|aOqbI5LXB!lyw=%)C}%oN4#khsF^SgCEY^Cpw|8~AFcbp!({;{m~V z&T(Zao6D((I#QJ=Ra7HKF;lQoiNrAy#9#&teyMc#7uXE|jYFUB@$5Jm(TEFaEN$yx zb|Zqf!6iYQW_zsWQKPhUS&}GKR(Iv}xNNx}86I2$5um{tCCGFN%#jFiGVa=@U(5$U z{fG!hmS_z?Di{EvS_5MK0H7rhJsQ-8B8K>GR`|UJLiYILiLS7ueM|8YU;}=ciw##> z{5GfJp9+08G0R?lW-aHuB~cvSmB_7yhQ>U1W+7l7WWlz0f$MZ6=|vg9Au7tmPJtaBc^E zgOLI7XD_JMG&te1Xc5L=b>`xUcNR%xM|5JjDiL*qDy@Tq^Me12X$VXmRIzW$9o6T;BOjo5F=s11+n(=))!&kYi4MfXNIVP?&wuCVABs6jV=ned z5&?zn)!_D9w(i}COWOh`KV~;kBFp-bRrdGqDkB*bm>X9|rvNa>06T0`$*@NSgRHwU z;560l&ZRzX1J0--PH%&2yb=GHhl6Qw6&m#J1N|f}QutfHEZ}z7T@G$l0|eRzoFL)J zEY}YY%F0t|x7vVNaIQkEU+0H$qc#-IVn;70`?b`Wd5^w+`p7@s`$ns`B_Th>e)=30 zp?A|MXB*0A0Xg~C%y?UfO-Jeqfz&Zav=lN2ZUE&;%pd!pV-zr{gy@0*_hFRP9%jNt z&wlj7JW6HK9E+CURKB87|glT#^VjBYDd=Kv0LERF<~AN(qP%$t*!$ARzaQZ(c<#rsZ@= z-S`K>tMYsU@%*09(G(IQi;Bo&Ari^5;ZJ|A=U{Y8ufzk+_W@KwVquhCvpmKW$PB)% zh$jLNO*yJWsO~mE7Jd7fGUDEtKACJ0W0bgaCh_P62X2|;LY+5iwcoIx^rYXL0`lpx zR38y~Gi%dQKfCY@wHR}FF^`H!HRBlQDH=dAkOC@7PpHYV4|q|%cd}#2z3iUQ)ul>h zaO6c__u8&VpS3Ty;6gSIYzYSKW0CJWK_}ii!b_H-0Gb5n@{kSE8H4TTG*3XAE%X$GOyNV6a zDaRWkzRmzcdjg-v<EzkZn*TfWUP+P5cY`b^us=-%V^&b*WW4iF3zND8XYJpZQ zPzUut5_gwW7d^J8O-Yp+MDCupi1R~mp}9QdOg?@QeUmJ2o7Jg&dGAgtp(sl-1FUY3 z{)Q^_=nHETJ^L23PWiy87X(OF#Ac35gZM`Tj2)EIKjP@pS<|LK8WP?l+Yfo>HO%%^>L4pMQFk=Q}8R z$fL^5O4a2VnfdVTnc8+9KWrEiatzg6B}7rnGk4)_^n%q_-`U zN#=z*z(*Wf`3bK6S(0L`!V8z~oj!5ayTDg(VoVY|r~?oGd%0J<_<94ZkX`iz2a&{$ zUY%T3Yvye@+vexMdQr4(&P5iN&=Bb>qKuhaS=+D_3M}>~EEWKZ0<6`9OsY^bGZ6ug z&!=4iGitRspBE0q*~*%wf}Y=o(4LPgV^+&@7Bx%#Ed)r0aJAMa3^^3QrGPYt;;1Y}z~k9Z83@h5Yl_EQ ze|l#*pjOLl%E>%85-nUMib^4ZVCt`SukGls56u21L}T83HwcTOo77s=FOH<$e={zC zwr6nIw4JZM1$agK8?8In8ivv;53&#qYzm|R=I~d=;q6#{nmXmI+=&v(gn*Lt8C7I2 zaWakQcc9T`pN+bx=@`FTf;P((kjzZ6yr4dwN6>JjQBoSg&{nLR+_wHL^f$O4TeJO zg)H>|z<6149V$L12q>(K_wHu15SUtnfFyfS8OS^uN1;TOB)oroIjER2uRG{XKe|avx|6Du*0t!?V#bcgR0c&+G7-^;_57Cr#?qm z#kh6bp~<{N?+)>neZyO_y#S#`OjEaat>l1c43tif>~3I56EC*O!c59m!B}cZLsQLh z<4_37Q8cerz&*oW8hgA10Lg3FT7mHEP}#sG+!7m%4c^XUNf(5^Kk=>A)i$DtO9^tOmZQfwBfGY80qvNH*DMOsfh-Y0ZQ<19x!#zmlIi{Ua&0s&=OUA<>Pysm*XdRwNlksL>o%5GpBVzG^n%5h2qjv8dh zeXGACsGzR9!Q>r54XSf2c<*0j7(XH0)k2vf(%=XHa%SI`H2TU_x@cjHK*@f&>7 zH^9h%2A-aY^VCVl>=#M@KtPQtTuWzFAqn`RdHF_j0F3Oj z%SZf5q}NGR{cFwkC=NOUcMuCzHU%PXf9K)cHy#z8p#*9Pj{rhz71RBuX;8y%K6ETR z>%W-J6K9e9R|IcLy+hdr4xW(ouV^y3x4AC05@RCvmD+1@BD^p!{bV_)9Gtbst0<>B z{aTzhi2Iv?YR(%syhAAwK1@45J?v|Ba7HMLY-!9$b^-RgLM{>`yan`GD+QLFg)@`o z8k7f)3(TQ^H+W>6p1*v(z3{*_odnf(c-E^=%aA8aTde{|)?)XJ9|1#-#BR=7Cf?v#ngb$=ghnf}S%LqIX+(3B4z!lx% zJqun{8Q`CwW)Hr|1=%TFBVrXIQ>kfL$hF?r7furcz*Q^pP@MSR0GJSR$dLpRZfRXh z|K;Tpr`L4haT4`3mL|&6X=+&T0f2A=jPU*d*$}gUmfAKZVtLIXM;5Yt9=?1Wy|kzH zA@pe6EU-xJ=oJaELm}GW&rd~iEi}}w#ueUq9#RjGw_9z#?kJy;as1z%C&l#0!XQ5I zdwqrKbLZ4^F-g;4&+o-3e5SM$1=1Gpkdx5SlE1e8Mdtt4Q6&+U>Y7$ zE1^3_Xq_5ZfhgD;2~-)iDad$nCxJKb>YW&UF-Gj4Ic^_ktcno0C;%D^kULLCt5eEKJ$ zw+tCyApdUqP~z zuccMv0+kXJeiD>aF`V9Fi#)g$q<))HZgBk?zZ zoy3nHA2Gp~UNv(n?O)z~edZeY4d-f)zLm zosNwMhc=Xs+F7|bfkg4mFk>CCDQXqXm$?K)kt}nQMLk{CkGd#st06O>EV<%}L;t3P z1t>lzJnzpN>G|>4-TP7O6mG9<#_!k8H+NV*AnXI= z>a);)!#l&?@Wc9_`Tpt@e3zzN1Z0Xc_)Tp779gsZI)jl}O6chuCMD!-yMSQ<%W4M5 zH6Bx!-R;6@TR`V{9(nh4xZ3F&h&Mc$Ty8s88*yjY2o=f#qj!IXE%@hkUvUiQUp*?D zw?C2B>2k5%+3bbUmC1jZAknL9Wo@IGtG9EKeJ0yfQ>?AD?|d|NyKjE=l|f?&3-Y_8t0OEabmFS*ljIT^h`$RkA?I0 zx_Y)Am!GQIUOsJN6qJ`_*NC<}H{S(m54q}JQV>?h8%7NFk-XBk^(M$cE5by7n&0H> zu$Qi-GKZQnc2(UJsuT2H@`f1S3Vu-!w=O5JmUsR$hXOt$J;A(E1^09n$`Mkl$QZqL zt0Vtt*?)vQ$@P*e1gj2hTGd^a0%*h-s8XS{TRIqLSkk5uE2N*eRrD`ZP^kn&31m%& zJvzE__jq|nzk9}^hV)naaAi+ACx9uysChHehuEv)qe)-Vl4q2mzgO7 zOg4@@ik<=R+N0h$s*eJg1!8#>-IW1hxs`%#&p`QC3F#Pdqoo&>7d4QwB#^H-MlzD$ z8O4SDDtT~g6KeACk)>u>b@@D@xtAr6_Y6*S>K0{k2d(V4+uOq#QP^M@D+HQrSjr|h zir>r^H=vn|H7a~gRrp8;N2y*r_wnvBO~KHCH0lq`@2IXWplz6-fHp|J8Nl==?jHc3 zQEkE4LBYsU%Y+OK?hA|oRwt*YX;$(q)hyEMoZhuvdca1Q(EnOiItL(aJ#z)CjWU+# z62x?c$%?dY%a~jP{77Y?Ca836NXT-uzk$hmI#5)7@dC?;H}GDU_b7G}tr<=rYGmO^(kHa+$Q$#D`QY%uNE^XP5e6T4NcE?TIS8l{jU9GUlS~Y=?0sGCU zLDT8!?m1TvMj9F<-3pXq3H-w15Bo`cx`#;GJ&c%A{I^%*o{XgI+i*UaUIp@wiKiF$ z^|)ciV%qE*Jq1d|kGW3S^Kk|9KlUq}IVBG{2h5+L@lgEFTB-!yw1L!&@QX-QQZ6wUAzz9FqxO5%%@aY zx3gBD93+uJpaE&+S$=rEUEI}I1<<8}d>Z4zZ@8&A4X`9eqBEYA+8v9+puB~VUj5Gh z;W9OG@U7xv7P5QDRP3W^vKCS@pT}g~pkaj3)@^4FrDJ29_api5X>u=B^JVlQ&GuI1 zybf|siQ*yLb+)$xO&6Y|i&Jb=Jkul7)6+H&W%Q{N=|@6EpT8dJ9aOwBNG&Tn{9NmA zzE(?vX`~gc113MB z3@ly#9-Sv+S1DN^;MPlfyd(yuEga#qbKOCCd_sb1CGw}xR@ddd&mI>f0u_9K;*-E3 zX^^>!vH8nq)63o}Wo3`~mi782^rS5gG-UktmHwGdz+&->X80>vh(D2oY+=6ioAdRy zFWmEQK5Hl#I8lmKL*yneSRZzC_G<0?M}|rxJ=K{aRJwcV#TOBW572q|6F`a9;+N@O zNERZ?QULKo4$GnPtTu@?s=qMv#=nV@KUYbcRJ0CtSwc*fJ!++4_gz#)1?(1@NR8+_KcQqB=msTHZ^M32ysKJ0%j48=XuqLX;Bu zy+mlI!~pps-95$Kr!HI4Z&wnLTMRK49sdtlq$+Z4TP?5p@awWS-#UGlh92)%qCBt; zQ{>*jfCZk(CyVmsV=jnHMrkwaId4thScDmi_%NRc7$E}2qA&|Y8oXM<%Nr*P=3Auc zn{irP>$R$bg96ZB7P{i`@=kABgH~}T)vdGrc$dW9^sa5VkNT_RA+}pRfuiwzD*?Lx z9%^V&_6@P>!#gL$*2-B}9iH?h%jc>h8QW$LZFz2Y6-NMXRcZpB4LG|t&{V_Z_s0-& z5p^$x?X+=0qb2%vcdB>s^fU?`v*%15Le}iH`p-VkZ+L#OvT%;lnD^mL>|pm>b-o?d zg^Yg3ktBRd@WKQcwfE}f_4zg1gOI-tuJ;_AT|eO3m)j}}01?P3G{dy4LRk9vBi}Gf z+pQif@v2{&fRq>}Lx(PASsc^$=s_mJcb7+;gr=ULr)@qu3uR|AtIuV*?)@clYp-1Y zoLxv=2vn(iL5jH;JmveOdVz=W)N{WzDmdgtKR)@q43F!YuhFB7u%gUT*C$lZ?1lx} z$$~MRx~`3iXufhNTP$c<%uFjt-oGyE@dpI^@M?#irFW3UH^%z}y5UXw^B1p!fpjSi z0Fs3!SPJ-*+Lou-cdtx7Xa(mvC;7$RT)4 zkYLlVz5LMXl+T$!IcD5wF-xBkvo3#Th6w{!GUzqcK`oPImsrRuo|*@owTp1AbckBI z`-WONgZQy%#H^q|DXZ}D7u3D}<@Dwa+0=;v1M=^`Rlf%6b*A3`Lq{!z9(Nq)3A^;Z z<0{}-kZa?Crm_3sZy)VDC!Mm#B>p4P;8yBnoec1Jx@b z*X#G`C%*sFse?}>sEgRGY(=`3R?h`8nV(RD{Cc`sxYiia0ss@;vnjDh=#7c?7^)<^ zk1#3j`4$|{D6zdtpMhX%OGS}bLQM8I02~jnaifaR7u0*g_AX68sh;ZnHFm)-R2%}X zx}uO**2aaXnJwRVAwr2Kq)5}AMG#DVl9ui45{cb>5gwS(#};_zSJIIbXBMNm0jti+!F{4Fiy zWNy6guddM=x%=-gJ)`0lP*Kt;_g&;(Kjw;M+iM#If0;=+goHQB35$hwX|GZCcHik$ zdki?Br)p1lBjG4v`-=QK|B%$+wuwgBdv4|^B0GV%uecwj^a*bHs`qeu1*OD@N+=gIQJR@#?Qv8Wy~oU}Ve3jqMo zmek1O)CrBY-waNO*ZrjD@Bh9!{0FS_k0IrUyShhv%m}p&*0y_hq*P*Vq2zB{o?As+ z6Ap*)ve?k>J@YCR-z_Y%SJS>puewby>#Ho>rKfSWf%3E-$;rz8? zf`dTW51#H{lWwlZ49KguP~&@Nd1r9$!(OyK1?tLuFdQPPZ{IKs1oFy|3y4(U7?f88 zF&T>XGXaVr(@{#XYm+=6AnI>5^|BG*h(`FQR>uvaGO$Qw1%46B%2oe_G=$abGmYnzs+@Xc1YO=X6+TL6!ek;C#gMt898lw2Yfx4M3%R# z)d4}xcrm-MSJ8e_adp`2Ia*qs)JLTQ!E`QR%7^ABz0Sigz8y$pv)NfZBAHr9b!iX; zeDc4fPS0V}VohDg0t)5l`#fG`3g;yL=}KhH;JJ=?Buzes34rJahf=j47KqmuUsXZ} zo3XIazZ&FHVgRr}EF)gIA)S%sd4Xp>TsXr0n$wW6^Y6D=&-oNiR@mPGn(~Nh?!DL+ z@CEVvRbkAqYBL_{qv#P|okS&t8|MX$vxBf*<4Xa7=7CP8FFk%N!cW9hUh&LEVvXSn ztt(Q#M<=x)bkKU1h&PAB%5p^(D&y062=46aEFx{i$Qfe^dkb1l2qC*b#G#(r|qDkmDWKwfH3^kEd4m4_<^{lT1F-Xi^-;3@Q!u+`VXN zb0>5rLAcAA01|P&wE^nz`5A2H3B2H9iC#YDiliXp6;k&xfk6mbJAmbV3@ysyR?4AQ z4E49sOMIGa^c-(lIuQsLZ?<^Wg3;e*8%JApGs!CH6&L`lwHi~PiX1IJq531R6tQmR zQQoF1>E&%)=>mV6h?-sydw8tB(>_Hk+{)QPK^=BDH1WX1fom8M4}=lLkNL7#kz`=|D@KK@@PbFR9}xCXeRLRl?e(^K0}ameb56iQ8z9v zuj53@@KR~*(Lr+IK?<_hm8uFUB9$NPKTFrPi&lD<%M;8giPGPEF1MI#iST7Q>F5Fi zPPuEo)I6ODW*2Rd6t$*JVIBp~aTgC(4aO9M&w85rA~sv-Jv|%BXop85n(>4aJ4(^n zrDAV);UWi^P=qF%PJ^iTftc&QoTQ;Y$4Lz=7f4B@W8sxUOYFL?%i3Z9+glYv9gmjm zH5I<+A|@3}Ut>SW4)hT6H+Pj__-mQF}Ot2xN@nROV#oY&VR7h==WAZhC$hiaE+(oOvrRYzwkoN3-5R5 zV7G4r_K8OhFlfL-K|K9Yj*8?qpe4^uz2UHp_d>G!oDLQUbG@vsp~^@!Hz(Bn3-FTt zM!bL+E^q9LJIqoNvWZ-f$(ek>?PgNM5#oB=s>_o5S6_U^QD}TDYu$m)6RKjK8oogx zW(2=U0Cy47O8Cm+B*`1=BPv2-tpMH+FM^MdrUQ>$zvyE_hmo9mvAKcf*$oaNMy%<6 z-Df0C%Xx|K!I?t@o+H6ivUgg0!Ori0s zJI0=RA=<+3A%V)h!xyL3L29d$ro8#I^GyD0BNsm$In8ve*Y8q1w9erRAttHuhKE^A z)NUk3Zr&)3%+nan_z?U~Tejtr>jj*$vK@(Nve3)~6??d!57jh8cjpkZ9YCi!4x~Y@ z9ObqS^v>SazE069reqD#BI9L4OCKmQY)-lV&ck44Lqi&05FiF#*qO7PNoMQuQ~|0zE#M`8dLB>dS@#@mZ_Ri zyy<@+43$S^;<<+CX`#hQgx%z@&?RCCUaYDw-#EYSI2k|4?Ijb>w%k+SDtX8kSZDNV zhb-|nSU4*0q>AmrZf$_1^!R8e+`hy4ulsT2cA%eXqzv<+%JV;`N`h#g)vf+ncXfDB zh>H8Tz|7W=MUr`@z<0H}odUwLT>lFh$sNt7nMzr%fiH_2cj1#T5WO?5j@z1oc&n`= zL;8(`s(3f^1+~Il?x>#ar?&|0RsZ4s{DneK^qX6ATIjuk^FQ_dx0=_^e9>9AjqKnqFiv) zkDVcP*Drpt{o`cE3!dgH&s1xVg&2ha8ISM0h%%^IC&Ybe^M-)4cOJYTHtxo0oIB?< zgyp9KNHolhz13v8&%wl3@oVLz+jexn?J2iu&h>G%3K54(<^PIrG8k%RQJrb@sl(Z- zhrhP9yoOpnt2WZub#pq!s!KdH+ zIZgqSl19{&QTd+o+Lc<*fNL_~Z01da@zjc%y5)rt1k3L)TVM^EFaN;s(QCs%y7qIx zecLgv8=l<^__{0#e(jW%?AtH*CXt%6p8UiT;M_ZdG}WiQ zpWL*}IPH0DjlXJvn|{`uf!Ws0tlu~MI6^C9XiLgzf)VZ$TZpp4enoCsrnUMlyM?9Nfm14wXp;pK!Zj{kfbY*SKg>Ojc69D#t##&-8w+hWQOw^f?V_Bi$Xgqf*n5n~1kv-c;0B#r ze`@Ssn~B7U-0Vcs-%WxKV%O-Ikam3GK9xJpBWP8QKBQaj5T zYYU5H(;c7jTi&H%I_$k5E-N4Zk!J3^Ut?N}Yefl|iZ_vGCL>js`+I7hm}ME@h^jam+f^!lK&C;BND=g8eMMQ zLQN_gy|RsXu+{Y#U^E%d>gMv>XxGMzJNO}2V_Um#wOg(z^X`WC#BTP+ZW+kkmXdnQzDdwBOdW*cK=j}drQ_P5%H3Wzf&#dyt~x(w z-Or*iu#XIxeDnLuI-5 zb0KzbhnL^l7g0gM@t@%WSBIh8eKURL)@W063Zoltec|=K+Z{AZvjzy!I zvFs&am_<>ozL;#wy+%lmtvE;gSXkNjdO<0Jl)X@psl^OI!~RjX5;&)@PWxnQpI?(j zxx8+gqQl$kxn+k8X_SF)+g2966xsHhx{&b_X%6*4XkOE#p)6+w*Y9zgQQAe572W?+ zJXtPfC&(d|$y#8pr8NaQltFij)2cX!>5ltS*h`oOvUBSGR+*Ge{9pHJ(eLXr9X=MH z8s2pjGt6Q~&i^}_7`a@WwrMGGJLIwa@#vXqiCNf;q-N++U9^UFQ9tH>qok;&qRac^ z(b}AbM$@c3EKv`uuQqDw|DZ`e1@e93v2c+fX8^VT_2ebP-Km`%@yJZmIVnzNMYdU} zrV)f+cd4Sz^VUBhpCrA%PeFXD-6iwf*dHasc_V>pBG4Ixb3apc?lQMs;?wRZCF3R( zjEWoE7I4%~XMhW1PAIM#>SN6zS$)EOcz-+eYG6Q4OprS+S2uY{2y?h}OfXj~{#kg~ z6f-EG2zbTIw8PfTG{9(fCc|@Jh_HA{XXuPmwDmvsu;-u_#@X~uZmW0vLtWfjUFyG^ z&rWFr%uJe$_*z_(j<>==2u$6I6RvhcVb;{+Y#>||6I5y;d5EuU!thG(@A?zSJDlH7 zxCyV&98>f! zJIq3z2Y~m520vX)OEEw5gal6B`WR^X#q~oVO80MEb>+`97fi~3Zu}V)^o|~j;5TGv z9|{XJuOLwef9BO>%?{}{+hP{_7f)fNvnoatM1LG&xp*w8@+G{DSL7F~`LOXo>b`J{ zfU|JLu;Hwz8pgtRB?Kqp%`$55?38K6bzQlX^3kl*{Kl4)&C6e-{RyQW*J=s;%$GbW zkD!Npp^n=Wow!Y)Iw+Z)+0ZP&&RCz@&xj)Cv$kFwqQQ+{!5Ghcss zoZ39R%{5Y%`S@Q5GPOOhULP=B3QE9u?aPtIbvw}*-|7Kt$hH6ceY{ID4EjNi39~w* zC1*anNA|=dz?E;WL0_)A9w%_gZ~E!umK0CU|m`nZVT z2}5O3+iQ2WI&Fk(J7%np+U~YGzm9VHdg$G{Qt(;g|o<==pG4 zi;SCzyQM#sopF2ZvcYNk5bxTt+YGF|bkcXPH{X8VW)E1Oj#Wn0;^L~$%Lj+MhkL*6 zyn(;nwock=T;dTOsTxmu>}Ql-XWNMrDePJIdY|!hJjtR}^2n7l+B3F5&g!?~K&8ux znB0>-x88yQZ-Z1$8429L>0~NU^HOwQPVOEU8PqrUrS8$4epR1QZke_+#7H-JT&%c# zXE$2OjK=TsYF_d*m(M7*2S7Nk(2tLEJCY{@q-1+1?u;I?^zC`LjIzu$!wKZ5ZK9XG3s`$n=<((}bw+EDf&hG-9UE5~| z$}eVaW(sv)_;kd)oA+e2`@NRV^(u)x{;g<`zVWlo!{&^cFJ-+IuU9BRLmy8TVsDmP zPklA_aeQcgXD>^Y5|g6q^zdi;_<-v_1%X7JQEAVh92bYS((`KRw%rSyNAyQ1<1=T0 zy~gNtYXTPXS+A}myszdT zffpQ*=1D`m-YjjE^U5I|{v&NV-xiK;(4A}5U2t13%1pN3U+dbkn>!iAgpU#JJTWLf zz!ZhNOr~>TaE0-ibe;fKah$^@+?d_40}_Zx;5{4~r`}g(yvS${Zvb99j6m%kcw?Zsy-O zvW(*U8FtYJtZH68c+DN+Wc(5LXa$RQ)J0dj z%~HFJ-2p3{jLFj2bXde_OcnOm@cSjcY#h#=fIgk3n7*HD3%hztI1c~*yk5qk@6pij z0pBh(MUDnSKim~;JapZmdmXQHfk8QL=NCrGY`-@Kd*E=j>`l&1s4Q1>e&c* z?(nOJ=6N@VKFWS47##UrI%)ps! z9Z`QPzFAgcb87x#|MR=DcOSPM#qYMCOP&1#=ZI>8ekI?wdUDF!-t-d%p8wZq@Y|37 zd}U?qsskGkU+?Cw%H9Zu)lBGD`NxW8$Kse4vQ-upIpAq^v|_fWnPylxFxGMwD@y~S z0YF5kDTkD-NKR4N_IaBQ8cwiEbCMhQ>2EY_J+Kk?-@LKoySU+?c*Qt%6B&j3Aqg@| zsd8k{{AF*iEKrP-O|y&V(@bkgEz>Sx@<&{>Lx^d#COA%7$+QvY+5jnYAQCXj&5kFn zoHV~fg+95NQ)5*E6%&7C5^drTH;m=aj(D#mL|4VSSDS$qUHu9yXlMH9MHB89Mrec; z+rkO|n(N70nn6Mn^vTAYqDAg#Qp7k==|97Go{Uso_J5dJX$i-u$qkFi-kd`rQ8(qC zPcpp&=K{4h_1v$h9RCr2av{>=n62tD5!YiPj@jo3@gipFE`^(x)59Xi{Ur`7aN$vU zhBJ`JrjW>O$oj6vd=u^rStV{=`DGjeG|X*t3iWfho3oTRAz7JMVXv$MV-$1bSinjc zBY77f&>fz~2$N6*DW0(h?*V_r#ox&Q35CS2-gIbPu#jXkM&v!OX@Kp&Y5yooAY^KJ zWgj{@22!mMCG;wI-3l_QO1*UhYn+feh)s6n0w;`2`$qq}u^GwK47k?kphyYIoh-%w z!2JNl8OVcAmx>jw9ex0`dBj;1)2B*=$-8z4fo}^*mtiov0VmBb`0ALP-W`M8C^HXF z^8IL<{f}whX)OOA8*J+Uv0g0B$OIv-fJD*EjlCQq%WtbMJk>Ht4P6YoY=6bW`l?q^jzz3w~Rhv5tvAk^)KbX7h=l6G^5qvfUrXY9qRlQ=}CDAj&4)_!vjNW&UR z+WUp%0tu~H+5O{%92`bCxa#%u3*ioicR(3;1Cs`fbZK;<3zni;9@PX#Z2orv@;2JN z^jHoA5)LF;cLxkiq(D8@v?d~4H_nRhrEY2jnCF}moh&`JQ)3YHBBgxQ8|w!--M(R-wr$X-fHlTga9K`_-l1 zpuk*m@Kk$BxdmJp1S+XsVlm|b}-M*>N(|1JOOX~w)s1ztF++(s% z!D3MyD<6mP$l4DVBtEo`IeJRG$0ceMBx8E;cfWtD$3e6zR^&hWhsdcH3p6p~YP zJJ$XI{oH(Ru|>?+IMeDL1w#Por83SQ040;L)+LY=D`9gNI7A){2APD0xdWh}J6*AY7mUy3#|lRLmmGApns&|7)+{r) z{Ema2tLdGmG5Pc5)KaqKi^5|&ZH~e=X5UIlhm=eqUJ6-4kyNQL05PpQ#Fq{A;bdaY ztZVosVN!o;?1t3dYHSLxhA#gE-B)hTzwK9j8C2z11X@ZecwZ}a$YV-|xvs?vkdM}MZvVBP{1R_YtAf7@O6S@av236?x8OZ!K$<2g2mtvhfrKfYU7TC`nogh?go09c z#=3i0hAxOe24Q+KW@kZ%w_UP5um;@<(L5|07L-GV(@PLVRAfTL?L0Bwp8tD7cyDbB z43JR|$fz-U6m^a_-MTL=f|pBaK|H$FPUE?Z#xMc@qv+h@nfm`YzWbeR40GS+Hut$k zlx=Qv%`J_jB}FJB72WKHxi*(XspeLc3aKd7ToWp~s#Hi)DU|xEWWW9X-aqH@IOptq zKJU-#^?V|WdFS(KHv|AU#1ESE{_K)zLzIB%sL>POt)>1luf)6LNj7h&uh~rvzqfc# zWzIp3DPc!R5&j$_ad)D;LF4d&%xA!QuZ#`&# zF$Ns1idW(Gt2Fbu%pl0Veq||;*bJyp0apH6fA3`5ozE9%Ca)RDKn4p~v*sOp$BajV z!45cx2T-c$b;F`3+J8o(E^uV6GW1;g(JaGZbmNiFBXmSP2h1AWu5E?Mj zCZNT|DXLL*u-U84BA|GWJC$O6p!GS1GHPRMFUf?I<=1*@sHpVKOz+w35tsTsoV%to z%+)OIdBH2E%rE!sL8(wz4%m7DJ7i~vktyO2_#_=roK6Hr6662**ohiFd@y^*E!6-V zgf0X1c`NQ5)`fc4fdmPo!4jnE-y^ToN^e|iMxP$XJXpY*E18VqlunIf256X5@`AzJ zBj~zubRYLgokbVE1x?@GCBxy5-0DggZLg=H?(ZQDt4IOEQLGmvg zJ$RrmYFJSiCRD3$R*{~lCI)S{edtxc zhp3HI9_jyC>P?~a4o~937H|n&5PuFdnhOI&-KgiFnmDpHK>IB^rjv#lY<@gCf*Hl( zA4oBSyg~T_I-z*5a|BI{Qm~=kG#wu79g)fDgPDgOHx0)XI_M^ViLWl+aPFyG zf+!?)-04IZbRq;eM9>z*5gL3qK!uP3-Eu^I7j1a=0#;Gl{cNImj5VW}e#L83xy+NP zl* zN|nIkCFVxWd_31QqYbD{zbAk=+5kZD7C6VZ$IxNy!k7UD4uWUE58)8sKO<{7s0+CJ zt$_A&SIqMxnESeTT+*P~X^h2b%mcvSov-&TkK7-;eg7`4ooZ>)w1OT}YDXruYgv5c zK1KzH<5KU;V8`_!&xi1$?b+9Fe@qPgz|Zt#7#5gS4HbHR2K;KdYVtqi5` zqoBrLW5(}~UK$^LAiFJ-Ia>}o-$rj+eQl2A6yz|6h6M&jP4tm z>6EI=*FQ};BU7lIT6pL@zacyyg-<~$%D)sHO!SZeM~w1v|Y>T!#%tBn6bhznLN~&7 z-4*jtSXME?J@Gl1Lz|klf0WdBv_(D`XZua3;JXC>+^AM zg9U({-nKJghFgKKTn_4}IYvq6KfvOK39IPNRkgNfev@~jp@(c%ZhRqkv0IP6qznwH zTW^CLGF2spMA+@&J|9PeWLN+rT`4Zj~K~_U8VT;Q2&4X6{@?!cigne!z z#A32n0nxy#^O?*0t#8h{ZNq4S+*|0{j)a~GKD(LTZJr)Avkj6mMRwv&vllCJFgkm8 zEwy(m6dl%=+*^NtfAsLI>os}e)vgCHC2jttBXW14@$}iuoKJg?I&#|k?&8Gdg3lSINy~R8>HOB1uV&AiDq8=U|I^54 zNeid!8Z~2A8Rse`C7RhpxGrYbxlC@CQ8{W~v zs}Z9Y)a0XPxVBhAorL*^?k8WgOzVMfzX(8kf0--Pb36wYj&y zJ)Bs$W=a`9i*r6R#*jN>Pd@o3oW1aa6YRBBx|F552ggDNoC>0#XyZh~V!x34o)wV~ zpY&;Lj?SAsAxJ0B+}=tV7i$P0k)O^+@^a%f{-p1i*Wa9esh+(hvBcN^+WQ5UU!`(_LF zNG4^|#iQ5anOAPYU`+wtt3I~bGQi(ld!1OPq^l3O2%msQ6&}FHnIvuI)!v5|pd5;q zUWUD9JPUYb&5r@4HTHK9%Ga&Ar#c=@9Q+%XE7|j~*6D0M7(A+RIlt}ZY)!s>h(=WW za5nkiEID*RMs$}STes?Cs2ZBu=&7+~)n}tdA@LyA?JD%(GX`LjFN_W>EmY*TtXm-C z9uPiQ*``fKLEbH8GvVr9=>P%7mPZGxs95v(ARVq0a378101=2~ZxO+MfRn8jz6?iM zJV)ejy?92@@}_oma{6pU;G~D7CTY%{4H;mjXk{k@POtnx1|>%bKaz~5C9=TKuF&v zid^Gna~4fDlYeDfFR7E-Z>87)a>fMe1FhH%9x0c+CV-0NjDS$S0KOY9142kVfM@^! zL-52N_BD8o=3Xd*2k>}GCy+HfAMQ}Jkl8UG5DPpC3a?Pj0hM{UY)M7K)_Eh6WJEQ>({M_)QI7MnS|wwyq}Yj| zrsWpQ*1X`fZoGu+uKDM>h>V;DGL|S{+XXC)ei@{O6T5l_@xe=1LF!I20E{F#8eSxp z2&?EMZx23VLjS)`6Z&7DUZbNNSU`n)q(3BAcSk*5z=N3VoK)s7^ypq)_SRWVxy5|i zQq+FP-GBEOoDtvWonPS*r~%BT&M9)&KC!6jR*?5j3=Q($4@KuTny<^YmP>$Un!k?y zymZX^jEM1MbsHprZ)@P4 zjTCO?Wz}(1Y_1KD`PFyYdd9dL|M0^-x0NnzJU8a%*rn~{{_e-GTb`O{LXrb(>vR1v zAj~E}H!Jvz&sGoi+YN{EDb-%W zAsinbdvaKnEzEXXnD1_#JgZp6X-_`A`5a@VTnzz1Dbqjn4J+c3edr){>3?uPfTD*B zgqcP0F&yrkTjWX%(JvG)uSl`t;q!wHYfz7`m!Oj9d;o+uc>9{AXC-3vMfWd2ps{7A z_U92(?cy640F|lB+bn;h5;YX9w+tnG1{^t+0gV49i~u-W(Nn(=W*Y9fyiL!x8~<`m_f?>zMG%MBvi6R+I139CaoHk!tp>y$~yj?o7e_FgdQ={EaCs_ zg^^jnZdcA|2kxf?2mTVZT*JC>^&~vLn{N&oX6vRq~M!h=6Vxl!K6EHV*0+n>9fjSbZhv82#u%W=uTa3YZs2;(xhO_l}ly2 zT_X7-r{30D?!9|)MU`Sk2TFc)epFI+7T#O;uJ&Imbk=zXJguWTE?b~ynD|6;*j`yY z+pamhfb}VmulN}J_s@-aC!};9Xt@CyY`nUN48|SAMlQqEZ{pzYoEl|sDq!PjZ}54) z66>nKitY&tZBPn02+9Q>{X*Gj>e;liulkP?Zf|99O(t}2L}7CJRg=lGf9078h3LP+ zHj1*kX_?yqNM`}?iRYps1(H}GQ>t(s58}5V+Au5f2ol}h+oV2peITzTSrHr93o%0g zAJy_Y5lAI!O(xM!gJ5SI$vcF)Y65aX^QwUHYaXEi{Jr*OASRRucyWPeu$M|!q4E(t zpyU#UC0D}7V_-I^W?|1 zI?8R=d&WaNan>_`Apz~83RSQWAoXt1u-!zmuAqmTxG7#Z9(;4Ct1kzL7P1oy+B9++~*n2?~ z5}#ESl(m5?QmQg8AG(e$JC`YLq60)WoKBpW(k}(@r2w!~yCj`=fWkBCt~nIhAepe# zO}b$+*)JKe#V_Zm1=*8$j(4{S_BIL9FhW}z*qRM?l7jhM;ku_FV}M}pZ;tsOa}E2l z+hf#(s@SGico69Bv=+SXOCIs1Fl!v;xOBQyfp*I+XMi17S_{DJ^++sUi|kUfUoL zvju)8+pGU?j#&Yz&yJ@&!9$37Mz3xhr8I!q)T1ss2L)B?IDzQ`h#>}hOUpxO(2Why z&CAeOdUiZ7%V|L5SAp8i7kM~=*NzP5>wwM2PML8)W@5o8LGYL$&}smxQ+XL$K+FKp zRNO9EU|x|v*vAm@b=-?f@h_u9%}zaZ1VrxGcDeM))ekoz!2nb>OZ0kCuomEvItKHf z6&S<=5k$pIzb;Iu*Ga!$mZtZsH2?l`?s<1ZQLfMIsE^JVMh;SaG z(V#SiyXBHn8U9C~xor^KCNx>jsptFN3+1a5g@FywqLINUPF8RQggNGjJZ-FuLGBV* z#54)odeLeHe%iAN{RaPIJ8(o%)MJAb!5vf1D2*Geu|>FsCbXprX*94C0^&Uj31bJ9 z24!z`%HBQ;-HKCZv$8^#MH|Fm^8vEOGGB)Wx(fu6=mGqO$Li8srYmrgVt&D~H(Y4x zX`#I674Q!id+{I>f3M1qT|9BHmuh(Qb@NuQ4HfJ|&R`v81 zuKT_AH&V9wFZ^muWw=ov^zR0y^F~TKzrL|3ED>ndEMhl9w@w_78h{3igD{^RQECX8 zYCkRvOjF{kFT)Lkgl%JBCP1_fA@Ue`j-PxII0gw>&Iw(3u6RiU#>!o7!P)^YXw4u~ zM1biC5C*uf9>m*!^@Z)m2l^60C<5ln)72FVj2BLwr9BYTJM$Yr4mgAZK!Bee!n1)E z=|abU2J$_NsNG-lz9fV)(x0@0nbB zI1KvDSE@vot<0&qaEz9NX+WJa`EQ~9GH7c;k(X~hl?4f>sqw|9LIxn^Pp;oX^$!S| zb~yMYo(7q>gm^b+b6HUCkHNYik@hIqX98k#xbd|J#AgLNF9Y?`L0VM4o)id{0hb~L zp-xa!7TB%=n!ptqNkDc3*#`jG@Cm^tZq7j-ES?2-m4Zyzqb4@q)@q1de%|smQm{1( zq|RPvdzvkXx||;%I<~K|Wq~bu9iXil;o2NJx!F`lvu9dWT)rE!?+?84tH27NO<#eZ z7V}hFqm2%i9>{wo+tT*Z%b>ze0TH&i0%$aT@V$B??A(b ztc-YgW4rXG5KqEhHnnNk=R z01q5lXD5ZF0JgZ&Vh$j(ci?g=YX$suEvl+wtFMnG6(HjZklaBEHecpz4gfL+0Xhiq zy5?eyMbyOb^UK`EcLemi+6Rtp(XaVnz6}4RP~;=l@WJKz%Y=>+kQonTyqsgeefaqc zh!Mq)$K-;|3P37uJv?AoXx)M;(zLb01YS8lCFU+zc)P z)fsKlqQlCSV)B6>o%k9&K1BlZ9x+zhKN39F*9~yRWLe-K5d7gLrLVls1)yhh_Tgq& z$V7H9DJ!l4#$Sf*TZX6L5PJb|@+zE5gD0@SuIX0$0^|0^e^g+VRa~;-q%jG!sU(T$ zMVBy%m2Jd=Dc+#Wqe4!zz$jiom4uwk7swwI5M=6h{_^Wg9N4-6q$}n3kZW`h!u9b_ zyofy#HPMGH?nQmzS4(;8Mx@;cba}RL{m|)Vr ztA>Ht%BB3MOH4~sH-58TZpz6A?KdruJ2WTIjhpp;dSJrO0UxzveClrMv4oM2mEJ5z zUJXs$e5>@#fevr3 z+9jE~!lox)3XgPHoqBkBodCrMy~CnHEO-i2H;A?lbi7*>FN2&;>b&&{{& zm`BYR9_unAA!m)PG2_d)7;#x#8xX>&rjUcY7TRG zW-$TOkP=kB0%`PzJ8>`$an2`5>|h3qb^Eq0s=}M9kNg^11{vBi6h4C;^^jy+pb9 zrk|{BWFS`s>%2en*yhfxgae{^ZlBhx%B(p5i7l{Oo|K!sjocutm~{BMvk0HpHR+JzR=1yW<$13WGmE3QM@1~ zyQ!~4*#FoO8)eaVQ+j)El0JgpjsaSVVTUJR_x?C;q84mk&e_}`3W|rkX9?YjTdW3v zR%5%>bOUy&K2Sgs`I7F;2L2%pu_+W}T0l2#2AR{p%@=}5#0UI;a4+-swt<2*aRPbH z{1z2)O;7cZi+=2si*xDwA08$V#~jjC&ArI zV1K9VV{mYq4q8n0!U zM6mt@5QhNbczmC+>zmZ60=?Lb<}viNtVTNf|fB&ea61Z6zC2y$joVtAwreTihCCbOuL~u9p>>%~iBn^*{@qZu2Z&vhR$nrH97CV5 zhRJo-E?GZvv){14ox3=%kJJsejd*?itEN?e#{5d+k7Lt)nZoe59Z2kjSWF~N?pI3?phgW zH09anjmGSzir*jmhVGjAmq2_z{oGp8=_6U)E)eCuF!bjYkg64)3^_tyDr5M@J=*SC zvWU14HT&*E<{?M7w{saA&aRWsj#L(y80olX{UIbQZ76NXuf%2L#$4N@WU`OAZ`9Mr z9St{RN$F&FSYBpd9KpNgs&gLEW>smj%l#%s$0@e1&8D}1amqY=gthIhYuYCoC#vjB z6|B%c)e5!J4SS&RcRy-|(PJE-1^ZX3uOVMq%;C%H7NK}~=R!Bqq)sZ-xmNb$(VAg# znI?%ly!eQCSV^GbL;Gi^N;F5+n5xx?!*Hc*+kf8nL&A7&1U$jcd+ALgq{^Tq=jO zdXuvtAqZX8>F}kF>VGfcJJUNy)kD~##eQu$iIU5zi@$x}Fqs}4zJ=v9>Zuz?i}6Hj zIY}8X&0$_x<9*ZfiF-TVMy^p>GqQj^M8nuXE}9S1z)EJ)=8FwqfQfoqpc)`vYd>+Q z|48BcdwnV!aErZe5o7-3!09pF3X6#BHtjp7jN*mbz)zQ)$A^(p-h^azcuF+kvR&wxm>ZIryh zCVL?ITi@-90~z~fq61Lmy+G491<)sQ4|%Cp;wk9VUeZF{`TVD!^wR;aJkzpsY*)Z& zrLu0%IuevtF{!lawdnaOBQG$iJCSostZM6d-SjCBl9>4Vbx5kyOz&>zA^x%PneeLb zvzA6*_`v48T2PN?+*kkRy8=su}N%Fg&6KC zxpaD3if!k>Xwi(kO#c|8BNbR;gQPz*h`--V)5kBYwZw)B+)85cm3n2EG@6j`o}Cj~ zo=VuhQmZv^5ud%vR}wsk(ULnsG=5PaCR+>-Z4U{-l`mltYiavUGltyyO*DK0zf%-; z>*&EUksS~SQf@~85zPR(ItQqn`D*L-^8JQH<4eht@er7Cu{p-<(xaI5~ zqE3#dYuQ83)fw~Ym7ZL1>T}PA1`B?WmD{PmaC|mhwBliy3MDf!t?i|s=wwy7tj~NP z{<8ZDLmAh>B9!4alx~Ujn2*e*$QE3XfJX?O2)OA$eNkp}kMRe$n6-L6iDJB2Y*T4!SdSQmJsHmuTmU3JBYabVdkHSoI;2 z*D}CG4*)P%oG|U1p{u3nR7(2~>@p30cFoG%!4Xwmoo4T|w6UVJJKQXanj{C9ga9@`GsJDmTy;1>;w@?nnk$x zKlSB@)**Jb{yMfxEf=tME z%_mNM_6;ehKnVqYsLwj2zRkwC&lAm7sRTFP47^j(ShhX&XQkH!08W$c#K>eSok3bx zi)KzV;Ac84{2fr+VfNdCW{d-n464XUV9thG;m9SKWiicJR9wN;T!`074=x)ZKabSS z2V$b8o!7lZ!n~y4+LgXh?)`r4nfk2f{kR0)c$1&;d6&D%W_5DN@UahCYe*t>GJ3;U z>WRM@cuJ~O{*H$f{LBb7pe(p!=-S0SCz?h26Le%)yil7S_PBiEw{mKHw~|xPj7wyU zwxU~0TV=ehuX^7pXQLdm?UkhGVzr(G4V?cSA~Z;AD)AZdRr5b>w1K(%+3MFJ!!5f9 zZGep3;D(=W3euus8}#zuTMM2}73Qj8t}hzq0~hgMo)<i2!(bixK(;|6Ly3}7v$uQ-trGI9 zwRRKPiXDH~dMixx?pP zAn9$pfRg>&%LBZ3W2zTob1pS|`&Qh$9((59;qp7saZf|JC~1o*$pL{KQJ>cA zQjO(*e0lSLuh*2J@Rohenz`rd+=H*Qx(wD<1cj7@$`)c|8jP(@2fJj=rLz?n`62az)#f)4HaHw10Tw6 z*jg#t@b}2n+6V7eUh11IW^J04H7&k-CE*c>s9ix1v^$SKaed&{yOmf5v@)L1!VPw` z0f{UiVYsq;Qq87_4ZAE`+r%WZx;_1w>#e26+4qIJ$r?a|q;fI3I_f&xoJC zBLdZw5dAWXg8%j=rvH=7f=&ram-)={37sX5_@X|aAf@6M)I;5+H?G#-S< zLpceCJO|zE1*y(k+*g45bPv6SF83(W^=*`pudzlu3i|vXNAspG96!bjcymIWYYMx! zx}~?Ng-4i;98;4hTO>l9AQ7DeV!ywg^~dbIOwfC2%+@RUfb(LPHYM z*Pcn{b@d0-4oXRuoLX|56x9}>uB7bb`xK6gc0QBmvdWohsm*A}Yl;%NKCXS;j9X73 zD`S*-Y-MedC@DqxBY}aZ=g*|cs~N90eNtl}V|h>(4^qa%;P^V?ZnLIt!xe_N7jRP; z$?oTwk^(l(ih;KW65G1GKQq25G2kPweEtB;MDBL>4Domuzpi&(ltBDO+t@T| ztj;kj$d`NU&thNrWLCw>i6RIlUFJRh?b9^0lKJo0$8EE_n**W>^pKDdyH^WkqP zU|6Yo(`n<=J0h(Zkbqs?F#s~=%^@~BY0HT{^8|${})(KEYU%NqaV1N^tpSY4m zVu_Mwu`YbUaOMMEQ`yP;b=!k=d4poTdlMv&_d$UrL>>G%wTpqqv+v=EU7o})oYTFg z>KQZ!Nbmr)<;pz>L^ST{rcy6Pb3?c)oI(A=pCZlfbtX^-!A- zL`j!gS+$KvoG<5{r)&3G-7a;AJqb>*D6c1~o zrja~v8F{!H_4c|lFypg@>ikdD(G0KX3?BW`?tJtDPp6D}*Htjjy<02~;1C>Yd*O z55Zi#f(p*4%E6S;oz-%#G7~ZTsKkNtBeUun)4b~{z&NeCW0b6YW!{J&y1UmsETKCw zq1*fAriW(tBgA9T9O?eCmvbZ4)}LjHPtEgvbV75t8&!yhg40y4X?q%QgICb-l zeT?kO4+3LHJ(GrX8DBhyW%Ci;di71x3-4UQhP+%1~ zZ2S-P4J8Xd4N&F*5`1NEqZ<<&AleIhlb@eOv-_asQ*M|d<+f4X-but`09=tQCejgO zJS`9KTDBnhOyk~?E<@NiPZ4Nev`ST^N&4lJU&?dU*$g~fUcoD@d6I!to6tCG3^Y@m zWa!9%0EVWH{@_U%@gS9xT9rLB1o&%460jR~c9=Ly@wsTn5O$7gE5@SCpGu zwP=LqF12QcdV1>&8;&IaB_VK#HZU$^!Kam`v5jF+7OXX=rj^RoIy?68`e$qv`{poT z-JXvMl6eO4lp5$myWI(4UBs$SBplOs_?w%5&8KY8R+;I!x;?&i@Az4LY~CXR!6qZ} z*#NcW$u)hmF8}B@!1I4X0FFLy+-2nm)8Wd^)aH&?7Qj7ab80svG*PoZ~dtsw0abZ{0x zhmbDYXB%@Tp&^N1v8*ob@~+?hU3boj(B6CtiMwLsqwp1~&pjO2%}^cQ_4RvJ@4>jE zEtenbDawf0kWNprcyGpc)96|HzxI#ND1e$r@~FSHD%bPio#DYfI=F$R`>R6jVTSGN zezzq$cABKTv{U;eL!Z>mw6iyilJ`<37(@W@cVOF~C`dyTq@z$P5a?6eWXFyG4B`Mt z(oR&f!3F=Fz7ha>7?3po9-*VTl}N@62v$NYH7|1IH9@ z*`*~Pm-|I2R$fpAkE71+Tc#nyjQFs& zk4;--avO>E9OYbU7H-6tWuyA&p%Fm@e7bChx;pB5c2c}0LA%+@&o<34%EOQj8a?V* z-zIYmr5Nq+(p;7=zCz3dVlKw=Yn2y+_IDPhVRBv<&_%!Yqb5ox>Tq1_f82ZaD4qY* z#=2f<>0smaut7O#o8g!R-hLq#=$1b~n>?>5UIa``idy_286*sJ;cwYWTWmPbgc zCl)y2ngB3fBSf*CE)aNgx{RBML>-Xn(o_4gZgLq@FSbjKw%sfVsP8K1xiDYBYAUto zmx-Qu@&DX_jzg6cZ!%FYgP6)`5wqzJ9__E?|Jm+MHU~1C&kpC2a z&n^weud8+*c#XMutnwBjHn_DWHh&mUQhAR%yZ?2?sSMgZ&saS7mQ1N}P`N|y{cb*Z!MMeWN&=>FYqkXn>kAJqb#nD$bU!8e(*BSak z$AaCwq1r=22{;)R^u#To+?bIN2J=0pX@9V-p+!71=E!Sc_%eDJu1`>GNiy?+~{ z#Wj!k+uH#wMBp7emp2&(7zU`K?~mSE@GZOJxB9PwUyCI6WWN?6YqMI)sbqDJXbwq) z-SE1p{^e3~_(}Jw=3sNDfX9vQ5hF{#5BRz(tO-SB|8CSz6dO2rt^SyFcl;)x^9=DN zv3bXB!aLK8Zy)YBo*7=H(e!--x)eVIMGWBkG2IT^N>WYuj*<9lw3%$Esq+Lt(P{YgtQ%4zK1kaM6{^K+Z0M$xSq6; zS{duhhn-3**(FldpU8!sh_BgY+T<$^K3BsXGqq?D%bEN};~L%+QYTpl1S36~swQc# zmCyw@qSN^~7O3CeWqGjQAB!?E?=M(WrEE}+X1N4ZKvVWhYRPPtFyUxTt_=A9jZekC zgvlv8pU3oA^`zCxohL&BHF1URf((Nk*eL`B_1e(2+i+}^G379xx|w?8JMXVar=Xwn z@W}>^$K82`UK|b?xQgfS^#_;F-*Om4fYGF*%Zl_?`GA_(C{4C4OQ&20LfhTUpD$dq z@Fbb^ucEIO$51y7qRe10V6jd(XQZpdcdY=XWvd{1UMkl>?ezqEt*M!%qU(p!r7SY zS(a%WJdL|OEuG?6)dmSBX!pV}1(}3U|9nF>A`b{9%*wLqHOM#>*PX?p{7l1$?2|kG zl!?l6zdO|(-xR)lo}n*5FdrL4_pH6HB|$LPyc@jP)+rFN8$yHJvi6XtIe|=YD4MyE z2QQERd51qtbQBKN78I#h z{c*6pSutgZwxiD0--!NWlD!u_#f`d@X13|PS~&ee10lZq#nRIQnYpItdqGDL0<@VR zrzJZsy_&3|m*S!FN^bj8cv{*dCP*$C{?5zV^Y1+JS6#e+er9jFCZ?Z90`94DS?DU` zHf0D@Inh4v^#fPCc4{S@n}n2Q!n)u-EAQ2eB(Infnf9gQMvgZZ8A|D@*L^=t=sPT& ze0ffIT_E<|{iwK5qa^5NYr|(?$ZSz7Oy%NjXg1VRr$U*>g?3j?Dji(**5@u`cYZZV zNsq6(iW?PY(m^Vv1CRmRZM_BY%BZy*zH-`#K;0FQw$aJQ*F&L+9r5t7F+;#8LOz}& zOQTls!&74ns#bcom@0mZd|LDNh?KM;BM)=OUPx`&VSz;F7q2Le%AAkEMz-^oV(20_ z|EcZJV7W(`jFcmwlHu)<2xT70*uvfmlSZ>-9!&barhoZqQC>F;$#(K~rB%bI$UOCqv6>oQ3NWUZcXt?ZYpk(>^tamw#gvTVswNM`vCkM5(g5Tm|C!{;FueW4u!YylU1nq~z5TK&*i-b24*@t|pE zPUlNg%NC_HscO*9fhV?78}vi!ZhD>!N;}gGA+ZLBj>fEtePqgSqp^OJ&IF_yw*B=}x6cVLK8#-@#fgO)kqes=TIpymwMkp$hNRmw zrz&q5(Stm`*@*mY}aAidX08$+p;I+ z(5Pw>ac!3>0!`Xg4SQniEB5RtidPPrDfP?>%zs zGE=>krfuQLNC+VM>~T80G(Nral7l4X@{kII6eW4F<6;=&9BwN9;2=6K=%MCA8APSs z^rf85yYSh|LU$hLmi48G-kckdG;~`2l`DR9RW0?uWqU)MczKaRYEj_wHI+jeri)MM zjTqgVL|Ag^i9sK&_jgPi*?ix0H|1|hW~OWiY|`HCCaZq4`wmHNg+S#6i84EvyvF+4 z@h5SI<{c)HccKt@aWmxa{YhN?s!-=UPT`@Rqz!!<{1tX4)&G_cc!T3{HroKYxBvWBOA_Y|+!c_g_BH_{d23#uue~voouzUF*&NzSNNX z>V9_5C6VjGj1|f;`4Qg&9hUYeFBzOZ(>K4m2d}~(cusnw$cdl146Bl&%bS#|ICJ(S z@Y^Zy{O-Z^B(F}EW4iYb4_d8!YW7Dq#ne^yeLZi>LHL8!$tkPLq*fXHqzq<#8QCg3 zk#y`=0*!{MIi9XOdvrk|R-CPodS9MEwgPCwV3fq#k5~xP;Q$oA;#EG7Nk`X^^}NUc zVj)VrCutCzH(=I1B6L0aNnqvgIQVD<#r*7qQ5tebECo4syN@mBU6D4D%G{j?=&Li2 z&Au-nL6tK=c>P$(VyZpmmeo(bJ7+7c9GN;_6mCOdRyLSGUD&uE5ipGW4k zkj`+38Webe2U4ELAzm7V9~mLG*nE^upi{F@LsO_U64dv643PxhX{FQ6N2WhG)H!ph zfAG^&8e$L@$`cBB0j^_%pN8i@nOUry+mmGfq31bvH>~B$VD}gH#9DO$072gashB>bgLFAgRDX410e}U&wOtIFst0Q0Gvqsm>vF>9Oo_Knm z-n?aZ{5z|e{NX+C%7q{*Aexm-P7j7A*FfJf9Y^BH4~-DjwAu6#SRzhKUR`4L=~vM` zM8hcYxD?rGgW@a0Pw}*?Nhl!rx7BV~WHX7#g9xOGytt+z54l8BdY7kPKd@%4e-H2d zto$==Ww2ZSU-8Pr!JZNlvV!E=y&bF3jqND9Qer^9B!x!4*H?_>+E@xSB5H7gy_~FK zg8yb#Oo}y#XxkOBRI9pCc>0%cB(|1rd>$WbHy!!iD1x3>#X;Sa;i5*{?KvI8523l; zb73{rzK_8B;naPLMqxEIQ?t}9vCfpd15OY`M+mZ&Zl1BAxfS)FdW~jE@;cimSN)PAm#f3t7Ne2C0z?LV73)`n8%Q^;0xdNQvBuf;%r^y*8ovSt)F>68iE3*@qSxKu++aV+XD5Q?0&VgoUk>uwB=20=q zb34g~`2GcVioxi&G_kVIz1FEloM2WTHLV|Gw*UbuH*k<%hSw|>^!MAnjidun6w|mw zqZp5+gSKnmvp_0VwbuoOsf*4G-T?(MbL*5x%=}b$$lvtKzoH+x+$}|fSpOVkTIRKw zU&CvkZb7z7EhIVgm1*=d-O6@Wgs{jlx8 zzq|mPhCtav4RO-i!}AzmHrvHxFUjJ&KEZswp)J56qy@#iXIP@_Umg)=Fs{BWRh^lu zLsk`2*~d8^C??b*NE(&sb1JOPV4yFmHt5OXuku^yhNI~dpgOBKTP{i8=nwnZnr8~BgqX=k(p(tx@+uZ#yWPC^% zv{(@METJbJS(3+|tHp2+gzvbvF+u&nj_WG>#GYSzV$n6Y1wdr19Yvj@x^^oLP;c}r zD&I3jBiz;K0GO5)n}w<)-C3=ULk8ejDXHiB&Y-4L?7Q%&Nt7a2yHV=O9>tw0w?qqu ztBx7VG)y#PzPW-eu@o<-yr^ftz|zpfH)~*wSPf(#bPv;|&<0(xX!>Ify5_ro;z;Jk z`JbKqsx1RwN4&=3!FaNRoBiI#3<1lgb*ksm)(7P`rA0C7 zEO>Y#(h)Kh@7ydnvblGQ)wgw(EeKwq3;1_^$d%;X%>kjw2*4(@7q!XhIO$K~*-$L} ze-z#IU(;_N1>ny*7_iaJ=!VfD$cjcB2+}$vq|||cV2%!n(W#D5T1SeCen+P|5EZci zQ2`6F5S2YV|H6LQUVGo?TqlQ)I*4z$-CFw~U8qe-PQ5F-;kc@TV|lr;Iz$jb zBidUpW)}eh!+`x7UAQPIR#{mTzM{DMFzBe1Ev9rjf)1DPfVFr}NYzff6FhqRL-mrn z#Ot~vla}B1;x!(QScFnE5@(zvIQW)j=%jfb|LEz<)idX#XgV+_U8CzVAIwe!MgH(O zA$8z{O-5lsjl0gTN(B6N@~KUh5ff&mBv)6PB0smD7_17O%Qox7LruCNaet8}>pX+X zlvMJJeL5d|%~(yEq8kkT81>>9`;fpI}YH3p9)!0H&2i{-_Oh%5)VzHA1YnDu%J(@!^CZVkg>Goeb(sTkynMXq*W0HfT zfeWJ_n2&wu(Gnh^io{R{JgNv?Jq-xtpH(_j11tN3I1*m-YKT8fw8!b}6MED^{q~IE z7+Yd-M++RHz9huv9{(@2znzKWR8;R_)lbX3P$9lhV}6{Jr@9g1UxDE^Fs*=)Xf@z9 z4WPcd1pm@^qx~zK4^h`O(*H7Xgp=2xJ36TA?5U{tXswrkG8HQqnab6?xzs5_4Z-FKGRXd`+q{`Af7nwZ?Tf{tpM_P}Z_ zv1WAQ(<;S~17NmOPD*+}4=&==JTj*i8QVa1`jae^pxVJ5FyE^lF&9`ZDqmd2)ZK@*!e_=J=6U7h{;UF@bCGGoO&lljNX8 z{A<`XM<4}JphSW0{P`6O&47t(%YDSAZ7NBzKA%`h!vEfdUBbhv{^at$u{3_qnI*PkB0D> z&4;dIMu=Nw1IlU>MT$B*wZtW*(Hyzm#bPbUuV!iEliT05(wf}s9T6J;s#k8hUm>_m z?#LRF?N};-JJRd3Rqv%CL#RXMdc4A&df?<$n%SC`H3VlNX4hg6aHkKoi1zn;4NRNz$^te z;v*ZsO~LIWlEfv89us_^ji%Q zWKTRqLAd)Then)Z$)cn0{Z_ATNPmYz;#p;tV+xsAa-4ohLfKWmHEC7USFR;o$Wm3N zx&C>)>RJO|sup^!T&AN&gm0n*Q;5?2%4{l&PqQ4 zd45};%x|8Ycr2dH7%)Z1Z7%>rUkN6p`CU3xfP^RUGlJcyKMNoNaZjGX zWz+00JB060UV(Apz1OOFciDy`cg}1ajZnzKfG5-&~-a+5JCC1_a64N&BM3$DXJ{B>7D=pnaGI0@A}y9=g&t$a zO44D*wC zp;R9}vD;9SGL$A`HUc2dMUq8@-Wpk+9|+}r(2LDrjuGV>Xu6_V32@UU9nO*>eQWm~ ziq5_eH;A!iGXF@FNoZbLDKh3ascL#*Q(VJhKvz)fwA9GrT6p@d^T35L);%TWa|7cLB%TL11{>x524Cx%4}hf-XKfcMQ=*eZYgAK)4!m15*9}-g z(>7Y|KTBR7vRguHPrFO4o?g0hI^@twzvST*mIKh5lL`=q}&A2s?E{~Z>RG%y29Z{>$i@r`Dvl=xNaM?;>*FE)LTaq|1W$4Ms zq0j1^O%~ugQck|*WxS7E5^17`xW3f5V|}=zs0LF&HfeH7Q5fzA6HmCzJ;#B%Z{8JV zSNBMqt+g+}LuNM{_!Mzg)7)!L#JN7-`Fi8be#QxE}rNu!KaAiv8bvwdfE88;=@7-@7KsY zm@_nJ%wOhHfjJOrmM3A>$a|vcuj@E(xV)4J%KwVWg5HVku4f;;j}V?tvoCF9Uy&A~i_VGa*gT zt+(k+asE1xem-Kd#I<2*T5tV4n|oZ3Yo(!Uos<9U?m#n#0et#VxYN z?Qb3;T{*%hK;)xa^t{y9mx4Ab)#H%W%LySlh@?)+l3ulxiEqfwbA!jOWV)|xN}L}5 z^ovooA^bi_q28O2D8XfC+Ql6azs8{|i!7nmt}i)d9DlvPT1G7@aB=rv0pKo|5>7D> zZvwN{NOS13Jv$2Eq5ZcePabb~)Cv8qY>~y=vsuZGVxH%RkDoD41MNQhe2AJaUtO<; z(EQUY%>p2D0rT;RwVJw;12Zd=ybO7XH3P)6w14I^sC^-IxRXq7_a#SVHqm1p?N<){^U_uAa3B>@FKc$6sH{uP?@adqg_gICX@Z06# zl+rz|5@+2t&q`9yQW|3=z-OuDV$&L6iO!RH9Vev;G$BL1@Dz|c&D$~srs*jzzGD7) zlayZSy-tSF7*YFJkb6sp^ULwY-^7kcs-FKUT*W~((6buw=dyWhiDWaX~<#uRAdpaJbKhOIWky1b+i|>6fqz3)Y*S z#04X=>8LAQbjybDEiQT}OMuTq^V#U8U7C=Ea^j^67W30ckM~{)l78Hmhb_u$cTfO_ zn*V~FU9LzM-Z-nEly2b-ERW|aJjJ#2rf+VkCe$m551&IMBX;}X79~NR9H@z^h%rM# zlg9D@VCyO3Ul5X(%bBNXNUBj5pNPJ}LCb$d*K<(+G>rMIOpjTx14Au?21)#NK+tE8 zz%FUO5**qcB5PdT;GW!o(|8zTCb_nUbO&`-$|{H!CoCUpDy&xIR8w|;L5mGzV)rR9z~;=W3dJ>hCPFEeCAx3y zDXbLBY;w00Y>5m@WGP&up?CGrapdKtW^^m9lutm{h&XKte@jY} z#A?gqJOh{01n6P_7l>E}f#1?svc&wt^-fggW6IbAB`19x&mP!nmW1YG&>$QeVzVhM zAp!RwNMrV>Xu4;5G~}BBn{4 zlh^ZxV3!{LbprTQ>E!MJv7*5fnI<$W+?ED14nbUrDmO_=OXtQnHCv&87dNuI)m&vcE`_(K$^wnIYHOeHukiEAm;`n z$p@}&iw|#w`(*%uP6rI>&>mu{~wa z0Qje81Zd&EB0yqvpp2xT!p5B_gffz0$7YZ$0Oj~gI0Y|mi-ilkJM?->`0g*DH7vhU zJ3sXMnaZ3lJ@<6A_sumRS11$Y0U%0)gZR7*)4|pRFH7a3^E*D`PMq40E6TbX5*iEQ z&!KG>mROg6qpN7hOYdt zgJ;!|CR#B?V4ZKtxao^a2cQ&&mWtO6ceKAT0JVs1JeY)?uqZ8bDZPs4T;+1=c&I`E zo}tu{zCa+4{5Rv+AWm2MQ3|E$AQNe@d^XGxWMF43`Rm(}FfO12SP9@^ux0Q3m3*g@ z>QW4)KNrOYQqSo+oK?LMhAZ~UC-k@ja#PpF83J+!aZSwnrCjV7S5!$7xuhgRD( z#5NdejJH;e!-lpXD)H!Bx#(7)@U8T8r4Aomwma~_^H|<4lruYx9a!zCdIwrcaUo-6-J(rD>x&E&gJ&IaKh1S=uqn22?ec^4*v#sG*Mqz4v~!nwa| zGw1P^Bo*L98Yzr%K8%UT!XuqjU^{-|S^^*|e|CU%exzNOXQEPy+CmUkU#5c|^-?0! zH@^GYSm^;}yYmHF63;!V#Wk!D%CnR#=JP@x!keyX{RpDPh7f5G5)IMKLbGZ?XbyAo znmet}>?uAbQz}FmVX->PxHkmuB3TN^EdbfWv;q0-yMbLVN$lbgCig zB4Pj*ghw@O3^Z^!vpK-EU(X-o!QBTa zi9~~Q033o~IBz`HDXgzxU=Axt3(-LWUHdPPk2g!bM-&?JKE2bEo-$i9jKB9tpYzg$ z{!&5x6@e$qXHT^B_^B~ui9bQn?)B-L!g^8*+D8LJW zr!KoLQ)f7I-K8Q=>`9Sb-YD2-F@6w^z}_UkD4Idk-rduHIQd0oRY6kfQnywWF zN!j50Jt!4$G%AK@@gRs8=y|rl3=`$RJO%7cJQBxsteT$DgD8AeZ+3j;z71XslD&wy zj&Of}X8@$J0XD;`rN7WnSlqAC{Epp!U5$5rK6JOg3iloqJo6oK9bSf>NSjH1RM$RYf!GIZmVKr#} z-DI)2;gL2rDHxuAK`)=VEqR|;C;^hQ$ignY{!duT{rm=gd3Z`x!J4{7Bf~K@7KdwG zD>p|TN?ILe6Td#BIAfhiHE~PJM=`=8#C{BpY>%omvSn{EHebWrd|gU>{ANF9iXYnl z&IdfACqXUK{ddRY*Wm`oJQ=0!n@!ju^Aj7Z5ycydB^NBMkv<#yiRoxH`PTN0FWltf zFcsa!-8fIk12v^9!yLc}j?qve5(7{Fm_R_K2wT_zCJ3x?QqDPG+x$E(O9`?L z(`l$kf@pBOE#h_tlHY{gpGcm+aVB(};Z~h`a;H?umY;bx>Bjr_7%~2(J40%gJ0qG^ z%IP@@rhaiw@vh$TEHI6fRy-=xs!?W5;6SsTH}M%Yam&rE7gBOIG)l!(b(+OO`cN5H zLY&t#WIcCpkzye!EsYnZjUulh-FCB}FSK$;POSfgP;jHrl9nzz}XU&KQrA;xBz5RI|#TG7)x-M9$umG?{s^|lR zJwd1kr+_~OvPk}xvmcy$W-)ouLq#xEvFuE+RnN8h)Z6PjN?G_+nSYr|>8hrh)?eL> znlQ%G8`{=Ai>q()2nv2m?Z1z3zBEXr(4nIIK*HK`7FLeM)?goE1*t*ZE0oj_UTN!% zsQoz`ic)Ayl&(<32DY(y*Z-vcX>cYrqq4Qp+Ir?Jw*7tQ^~emhGK+}E;<1iLZd2W6 zqYCZZwm&p{kUkKbO$$6vR!*!VQ3GbE;+`zRH? z-MDHr`n>zVyJ;Vl$BK-sEX_Yec5S*uBqOEXuV72#Y2d8|E;$$bF}rm^S!xO<#rC6J zy$}#y>Kl4eW@_&r)uQl0+=;EDaQ?AU=gH^Nr<*j>FQ{(4Pm58Dnt4%@7N}E~z|U4* zJIzNmur9!ZI`<5Iw+MMRDDkh+`3Bd*2_<)gxV7{g<5S!<(e>Es!}M$k zRsUEZ_-0YTsZ8$g!DRU{(|d!)Ny1=--dQn{dS&{u=0t#2AsAHhrkX$ zS0{yB(N0r1yRn2cB3QzUojF1zP!&dDiXx4T(g}0f&1%hB0XqeLb48A6jAf;|2CA|( zFe4xVC5h4SP<3Z#FJ*6wp&2|>EO8=DlL!)GumcpcNCjc|HtD|r+K1q!i0;TFpB0Kr zD}Rl{@>wcDq7H*L-70+jWGBW}LyiQ}?qhm(gLQ9UIZTDY0k8}!U8)>38F4cO+<%pxrWP>a*p}lsLW>GeX#${j9o2 z>}ByZBg;1l!79>^*X8G^lH5#ViVqoie(|(tNe;2#;Nag&RO~-BfobS zA#?$V3b#s_#YG1Cypby9HGoaH%$RdUc7fRe&_>g=3mB!+#yGZHyp`l*bUgF8XYUN|`-OJR_gVG`opcI23& z>@aP3gGsvX?eo&Z}vC-)>mL0(uLe)wuHyJ$Y51wX z4(B@PmYOD{K%(U(e#aFboeV|&Eh!>~h&f9WVD)Q^kNe)-I*WC)?SL4DA_nZn=m|qDYZJ`1%r_JypV6IW3|Uu-ih* z0ypmOOjFmi7?OU)$w=m;sYcIt(E7->h`{jK2Oyzk!zNO}ljh5I#v?ZV9p2>D3}VaG zf`yqj>cdAio4Ji+b>P@*kA9?H2+!@;_!jPHJPK}$xR3p3IqG0k$HZi@!G`y9{1ifp zbx+*7^$>=3J9)auz&y&Y)q0|PvPN`Wy9cQebkcxAD_W{ULS-1-X!~U*X!;r$L44!{ zXAD-5k#KKA7AAw8HhP<i01fo@G2auC3~6Z8GiumUrn3%}<#BCi$9A?bD2q6OZ!t zzto$ym(n<%{vKAX&Cf(P9hkm} z(O#X3fpKhF70Fi?5xh)gg4JYWWrgmHHx?>h`)Hs;YDy42>|cfyW{j39f+e;@J3CsUS6n6&-asJ zWmuSSBdF8tb(p!+FJZ%);T0w-5N9C1n4bGXux3*_^k{q6zO`tfeKH?@oGx>JMHyqC z<32SRP>J#%>vK=eoqGf$v$75$y7|`aQG4#DDSp>fUb)JrmAU`yoAYddIj(}$JZdjG zN0UAw6er#qJd_@oSkX|}MA7DMiH26*tl4b#TGqmT?KIef8hWH9GQ&0%NM=p}f2#99 z7JbiH)-RKDpY^r8DayL7le|FC25La^T$9HKY>an3zAcSo9y&LzvNKYyJ+C*huNPTx z$tv|1b3<9xpGn;qFil++yIS3|L9}$zx%~+*?i7^&zB-l5la4PcNnvYhxmsxjq>76f z3ZLn{Ku^Z4YG!k^+x$>@hLtPQ&HA3nKU5(0TL@P|nk$-VGQ)jF2X3%YH(1%UO)Rd& z9I(>vVVHvhBwS*yuPGPNuXv|&PMB*8DR8w>yhb*>8@wP(wtp7*;*cobQ9HvA}Jjw3x8Mce2B3Rbj ztwUCA!_WHu>#Y_9NlAX)WR^STbnwvVfuU|z!G%TeoHOYL67qwga|~QiKTzV`-{TFv zWRAy#A1U(hPYqBdE4S&=8_0J2&b$69_Da_FIqQ|HcMK&y7;Y*#ZD!ePIrd<_4bE4! z+pgs@NK(zyqp*th-YKS_N3slI%&Y-wPXxEQGXri7Wp)D-1lih7^B#OlL!GR_nVZaE zEiV~j{A}}+-1HOis_PE&3Qb&NM#`d*brbcM@7$ZMBa67)FNq@c5QLAMta>RR%o`NSS`eai zTItSryX`T}kDbKvqzKz+>|bD5Ol4tEYP3QSiMJ4>QQDPKEdUn-3$P$EIl;ANKtvK% zkvE-a+}BZ(D`%j?*WsS+EtX49k^Pd0^$T1>3f(=(IFHh9v8))JK3w zmiWowXc={)s;>|3ZMm84NdvNx%VMHY)F|YqKLdwz8mj5j|0njrg5;-C6P= z1#^s?^@!grVq$hNH9FmK94kQP@|eg z51Dd(F*P~;vu!MkJ~6a$@I&bI9kkT}Sv+pI`eA!CRj`kFGVjrL7xNiIZcn>cdaIYI zQ=`@!tc*0OZ$QWTLyq1vKzM^C#ocvX&0HZ6?b@O}eZ1mtuDpi3sH<%cgYHKtS0> zu14KGzM1bI(v+g@Wx%^PWmO<52+^MB$kCJYZ)@as6x!n+v;?qBlXEk=a;LCbe^fzq zeyN-Nt`yq7TXeM0%mFf9$eS7J7xRXOK_DAd9wHmm8zCWJsVx8|iD`D#$Kr?nApB>w z)TAU4o*K*DP&~*3BvQVa5 zY=ASXguborP4NXA%t=L6Ys~dY$*$$5ACNNmojY#f|20&UV2Dz60jtx&s>Bracwl!f zAZ^P1zLX?9G1t#a06f^`>gl&huFg4&^_)Z<*ktAC82^M>yJ$7`W`q8S)r{1mKc01f zGvq8EVT2b&gs*p5rHbx}yE9td!mP(-88h_?QKdEt5{3uZtmLcCZ5NO|qvSf_Vx7m* zkN3s2&Y9$XA=q1V&gYbx>YjDVD>Ys9Pc_^s5AO%xzt4%Rkq_s8(&;Y6JoM?)u>vxp zb7kAToE~6ir9jH^4v6_H7o-5g=Esa@MPi*4hvPW<8hX<&`)WE)q8ZCC4uwt}#P?#E zo*Kf2`D*ZFF=w>K`D|^QY%TrrojLi(S1A+4Kvr@Ea_fgrp?v;lv*Y#;c%n|FWP01HNE z4Hj)&(y?I!+gBkov&*{st64P{G*gs!3-^DzhZq7WF>R`hi<(=JoSjIwN9*mc2(Ue- z8&e#))!V3N-e^NQu&OV6cjnb(bdPX{+F4n!3M=P)m)hv?N7HKsNEw3*$NVon z;BE(7SOqc*9S@J@1CV1SMFik=QkVIgrE+Ny^?qTeA$IQA^TEi_8(GP}eS+V?@$b%m zey7l4NC9yK_C)O{V~`IQ=T?_ibkZkg9`M68GDN=!UGJalQvUuk2Y^KzN`C?VeTGSu zFTY}5%pUx5mUW#NeR64O!6L`+T3PeHY;=yS6jSZtC~7?g^sz0coTH}i{-*38SZ$mz zGMIH0T&SH;lj!wQ@E69i{u3Mabx(hu&g^OzxAo0Hp^W@oUHDhzHn4OSw`{Y}?T)G% zZ&A#fEOW|J{-f;oNx6`m|HkPZBs|wDb*cYIqmX@gmCcDi=Qr(1;Th6jtn|va4`%yF zM0VS$ySJdK>90@6m38#Jt+CiZ6oE8svf(#DraK7KSf4KAq)Nrf&qgUqoam#a!*@rI zc<77jxE(HLDQg??;P`SFKWe)A!!Z?H9C#W8!yl@*-OOxUjpQl4KF0? z-CBr(qy0OtHu7YLQ4#HrZ<;?$QBO=!C#2L=owV|9d83WSVws(#q6NR*wDM=AAAXvD z#w44^k#5H3o&TXMy!nkH2qtH@VL^3SdOP_w^q7zKxDrI)_fwOfFSFYf&0}@e7jt}n z{r>EoEgfBTKkDFE|G{7AamMNlJ@?l^DZ_-q;3uoPkjui3=s@q#`n+C;+0H`|WgQ?Q z?k_6%i?}Q|yZm1E*+*ImTbX72z1iowrfQ7(uTBQ_0I#hC{Z85V>)w7;h>sD_e5Y~S z`1Y%{?eifK`vfb2cq18=m9IJ9M3Y>eO64T)@`4^;d+RQ0#YkP3*N&}7whcdcVms6P z42Z2f(U*I&5gVdjSt9kWl&D_JLd!j%@LzpAR2f=$FiCdnj1(I$=wqq*~L- zE0OXoyNR~ph|{j9LGX4rO44vCS5F$1-pmzSX9_tgksMwYHErEGar#SOab!OE+R^Rc z%i;01A3G0Mblo^%5Y(7+;fwx6l-GsCDaR9;$$u6sv(v6%$L?t>E8o_ZLC~UPZ_;zWdz5pJG0=aX^(vRr zgP1(UbK*ta8YIxo{`LiAfU)C4Lo=#1H&if_R*CGQpDBKV&NOaQM9a}J?8gU zJQ)O6_N4iUERC`B4-ckU#MVzk3=fR{MHHz~i{a{eroh-Lm z;81wMId>}$2eJ3Pp+%%_y*GWAIVmJ7f@gaGBem5C3~{w&VECG;Z|q892Yw>M*5JPv z_%lPp_zle`)yFTZ!HoW{-8%K9X7tp!5s7|GaMWO%gr1>f6CwycYLSg9sGkJd>OA3Q_U^pfYH3|`? z^m8wJAMkqjn1TyD7zDkfl(s}eCil*II2_AxhpBmm@Tj=6*ny}{8&#silZl`E?WHCx z>T(frVc5v=wcclB9LM6N%ZMIA6pU28>0d}#8((mDw-I+IKMg8>>FyH$v=rf;KIVni zN+S++grjXMg&VLrW*{5Ok2; zyQ1`Rz94m(sy2a~Db$gtlaBETbP;Ds_hA+QRP-^Ukd{#Q`X@=ZiOxtA6ldRp3sH`8 zelQmR8}MzMEpl1tj&cJ4yvL1eKf67zjaoLm1ivAftRnD#haP*rNd~U%HoP?kY&A=0 z- zyzC4hHDCxmUJ66kb(+v9_^rTbv71$5ybt3c0^RF^Y7TKonE1s$LrU^L#-%Tp+v1HdmI z*94yHwpYzKNLRM_Hz}aT{3fQFYmADG-g@2|bMCd)ozSHC%{n-w^d9I$1%4NPAZFLo zMX@{i)*QA^4c% zXW<9S(-Wo=nsM%Jr=j~s0$DH@Qd(58knmeiFOoY(uUqV$%x_w2uV+2%?z<;CqjkkA zp_SDlROP3Z57UQ@g?^)`Mqam+*4~{Ls1Z65_Xc}#sX<9grm{}Pqr2XYZwHZKU)qK9 z^m_W;4K%kP!NXW7iC5|2n3;ni z>QJ@WXa{Fx9}@xxF5%l(JOqLl_P=Uu56{j7&sWkWi5jAL-><0{>b!|@9JCMor=po( zC0?*|(=uav6yW{F${YS@DosZg$nt`v&F8A|(srJLUlmxuwYuU&j*GJD($(>lLCM_@ zY7U&-)lb$JX0Q5c0oC;5TLry;-<+moUH(3v;4CXvn?#U0(&NcaG0-XuZ#g+3TK;Yd zTmv^fWz`ytq2qzQMz~aDr*^NbZ{471 zQ41ynM4Akn#PBY${;qf^ZO`xX@>B}dLuaqSJt`7rn%xAg20ZsxrLf#I?Ua)EM~wHK2IID8_efS9g>Jy@^0i_s zYqe0}uijx_Tv|1SssL6hvr%S=*L#f_KCDI?Ml3Essj@>Yi^qV3K_ZBcK2r)ljM8a`om5=~Jm*1WgiQD?$bsy>y&#&;whUE=3JBeb(-N$F`v!4s)BC9Ldhss$9;;^Z|XzDAySL$$7PK;E;_f} zH5WJ(dx&pFG)w7G&Svb>+Xo|@*hWEBy0D#EFl)OCZaIFDK5CZcqdZ!NowkWxFI^z)|e9R3v9Mld2V=c7nIRrC%_+K6FO zceMS%HGhnyaF4l;IbwcKX!(OT$J_7ljd-px7pz*UJE?(lFCS#k1-!f2U5~;u`uxsv z4l1YV8($_YRp|T$C7pU8kYemWg(YhJys+buHq&ykseQxuM8M`D z;Yppr-#*Q4Q>*u_GGizmPR$v?qIMGV9##i%*_j`U8r%@35^krg%lqCfHGIw^XM|k0 zsFx!?pbnO!suKKk943w#bE!93oyXU8Ghf)aQ&Pu0O`0ku&;F>#FFs^5c+oK2($u(6 z-QlvpyW~rox+2O8RS|Nd(WdFQ=?&jQF&mz4>7Jv82XB*29$;VV2bj73Yg3N#E+M7# zd}Ql5MU#fQ$`fBQuZtWswQ0QH$XDS0{PG!>E~8bAps5<)yn%Fen(lpXc-@USDVyv$cj}zt^{Zr@%Pl5${_v7$eO$WJpABt@2{V+f&9if-1dZr zc>Z;rdo>eM14y<@iI9^k^aN>s?i}-;_@$3H(N(z#mp1CaNZM5H@U^_lv4re>e@oU3 zsUA$E9PGuYr+m$Q`*iHnT-srMUw^9OzAk9suk?q(T>Q^9C*AgubH69Bi*^{@tUxx4 z-p~Bp&kYWlTJb`LJ{BW-AwLt?dnSC|zZCWv7`5H-y+K=`nqX3KFpP7p``YCOJQFJ6 zK_l`qaaSHi(5I|v1(j^RZK3<_J|(0M-xvpN^;IlBhtmwYB6xeTdRmwxm|P(}enkp& zNE3;D;B=?o!#@D_YNTrH{)2GU;^M$jc+-RcvnZ?SNeo1y&} z@T;S-OOVWsXYLY}OK=(Lee4xZIK7DOjaQqL0%gY!csiaH7KwfOeW|*Ovlt2-Iz>qH zCa}9U0+W!3dbZMQpzy=Hhx64j{K7~-$K`AdlLGjsyV}7C+$7JkVm1-E~ZN`N)3El!_(3<70+iLUl~8C^#lRKaM3L zO>~bLE<(EUUv5l~1|2psg6>XsH`sZE64Uf-;8mpOe1oJC};V;${-Luvs7J5sPeIg_kHemli&%|Fx12`^3DEF*d`)QNdQ?uSb3?@1{EY*jz8wU{4Mr zSaTtqRk2tZ&_6HYa<67{19kX?0DIiYO*>=XwRE?H%*C&&+WKOs_Q(4jVMxz{FujU; zpTi6+&5@K2V$tHfu12j?UZYAl9j`%hit%r!>-&bIx{a6(->oq*(wUPb3PnD^$Y^r2OTa_FmK{__tqxFo7k&1>b^ba+O&s?@>HF+6l}KvxwJ~JI3Ax8d zro&7`Uq>`1*gyB`Z@^))&P&-V7v1k~N@vF9G5Y{@GQ!8Agb;Z#Alxb7#q;q|w@@#R2?UJK>zvowYWcAX+%UyGOnZ(|CKQE@EJJr6#DD4w+ zg7NrjhY@`ws`f$bLjRuXX^?Xk9DjFy7VN% za~PN9GsZ;C#{P^zq=lowE$p(nBq^fjc%ze&prCprlp_z<6?2Z@Ufg+#iemAJ`+e|p>Ry2(oVCQIJmoC@%-&NNsd-y=<^s3>NMY)mia17*JM1-p7 ztrS04qKw*;IWNxGE&Yh0Sdk>J(ctdKp6oeTn-{W1dXdE?-)F*k#P21CaTw%(+9Xkv zm8*Agu>(|*pb(6`?aPfas$r7sN>wi1Y-BcLU;r6GiMy3$z&emzO^cf z{wt6e10?hdZv3OhXgR^SVX%)rQ=cVX8?lMqEl^c@%x?Z~b|(+=F)!iz<5xycUtA{M zv>>?5u0~R1a1q=ts475NDU;8Wf+6$yGN1&bn8gtq0C3gpQ zi13-z?Dp-QA(68NTl%}9iGiOxT-$~d?P6JavgXNJFR|PA45{ClsBavhC_w%f0D_Q$ z`k(_j*d3X#h)k$ZJ;PCzgFkEt;SYfXHlg1L{Cpz*wISraA%6#g^(Uwa7~;-!{#z(g zK`{DXV1kL_U48Q=Z5j0&A;Stg1^7)SQ&1v5=D4KA^<4;hQfpZKA^iBWCMtx zZU8{?f$Djw#5be1viw|=Td{AQ$}R}=CqTgn*D`hAx&YA0^gKDsq@D4Z`uDssTmI}{ z|64|a6ifbfqRDKkeSreyY(Vz%P^O6DzBtX_jnr(MifzsdPVJF3qO8gBac(jt<8iZn z$=~qKv=0UCI;HeE&2Ne&x>o1g8YVsL2V~tVWdf#(LJM!$4JX`pUpZc^?)hc;lmE)$ z*}=nz3u+4u;mf1Gviv9`-_4>47X<_TIu&QJN&ac>U9Ijf|J^xP{KTd$A$I1<-nxJt zlGm8?+&Rce1!qcn&VM>*((a+eHnFlceEW%5lMki;+2w6Dyl6-q5R!MRk#aO~8Ox8x zAL8RG8{d%4gm0`A26z6eHHqD6=qOfyXiNC{)w^5q?F387ME*S`v>0}(*oP_>Gv}fG zKaS4DpXvYcqr2KL%nWnOT$^iizsBaex#WH)6S+kpif*=<8I|UKt=yy3$1Ulmjk!im z7pYWpD|Az-DB0KV_cy#Bd%qs<*PiE`T0YmWKSb6M5xCOp8%x$Ie-RU83xT4&Y>U8= zG#}X<*zQ@uYeN5&v%f>jTnCDpE33AUz_Q)pV<8y$H-_PKnJGg&UCXiB!SIzhO+ zR*@pq4=C}}KrtN;`@bQ*V7W@e4wenR)LO_s{l;mq$~^ylj-UDZT8{U~OF*52{N5;D zt*eTaf1t}724B?kdOBTNFC)g)Rk#QgQTo+Md+Qbw!xeGMQ|@}AdTge%xEc2^$CsqH zB)!YWc80G^g?6Psr8$0EizEgn2zP%J-5F=+ob#*dmEE8J4?FErMBji&2gHVaJb&c= zL0KtVWV2J`WY>_sq((XEGi#=B!||qTLYPypMt@5gWuE!-)1kWSHy7Ma$^G)G-W#5! z6c&=W^5wiGpfB;B<*U)a2rbK%03(&95LE(HVGtZ^ z(_+6d8nb40Cybuc{=;r8>`G^yt_VzAajTB4&TCP7ydHVfnFzrT$-Wx{BM5{1Pxe@< zfCk$EpMhdH{fi&GOSH77WqeYmqF9bdu0BFITDJ}h8tZt%kO|EwO>ja=J4Wb9ccP^H zC-H-<#0#Iz-JK=G4SR(Q;ReIU$#&|N;PeNTjlj?;?c?PxKg*6)4J;A9wFw2--}WY3 zzawW&01^ULTI8;d!RiI8EANjt;E&%F-Z$vE)*=b~<|E{fI#zs(tqPE`CSi#MUJ^$B zQOnMM*sW@D(#B(ROFjt=`X?0=BPwIZTSr@!%6=gCn2&t%**Ov&UuvOG_dM~iI6v^z zs{3!KTt%~iy_C@!CEzK!!kZqDVU#S3=+Z-Urq%U=P!?*P@iR zO0iUrtzXTs_>s>MZoAx3^SF^AtWuuZE^4SDevT>n#F{zcH+t3!G}&uI{N!N zV~-KQC)_H^Y^^%2dTNR`hAq^j&<3YfI|Ba1a+;7Rv6RC~q4WZd{@)d3wjS`6_eAgi8T4Y?Y5+XI&@mZ%g(R^J#U}N6U;hWFVsX2`mKqgP~t)Z!q zL@YfFz-nRks3VQ`d+=q7*{6!MLVKQ#x5lfMY|YgsEeyz)Qry3ojle8T#1ucGdelbi zAUbSqZY)(u|6!2K)Y~K~e1+J>UiUmx8AA@(xNTbZ<|unUI$t`A$`@5LO@3DJx-5-{ z5_3b9D8?*yI57-Haz~@p2AZTbU*0NzmG51Cw;UhUSAI(E2ZIZFze2&?3V%esQe{&n zab(*4m;|i?SGt_dD6hyb-xu$2G2S856^y(`*f;P{TUKL8L}z?LlGq2Jqu0wsbSSU#iLzP;a2DZ9)xK@ydCL7})Sfpw&t5fuQ{_Cbm8vnZ8uw|(-TQGZIZScaQWauv zKcbYSstn2^blmBE_ysAyDjKt}q!AG&>>}F=N)|uyp;^BZC`Hk-QGX}5RDu+X& z67#i)*OvHVn-^qxf?Gc?CT-vjy}k}SAHqMOi;%lg7nh2ryhG_|Y)Tn#+yslXada3(R!2XasU!61dxm_$siSXd7qgGAb z2&}a}-L^Hn*u|ML_2B!r?|nQk?-zI7y~Q?{Db@HT$t7a#pSM8i!Rnro-=Fp1q0b(N zJ^v`Y&^wuo-96q;7@#`&!?cY9esY^An({h)`aU-Mo38h@8(SZ_L7UHo-1{=ce= z35G%Pb;h211`c*>RJ5222E+eVk2pB8S2{G~O_SwK}cToHlD zrzgv?3E3hY*Gd)bWU?q)jPNzZBbgd;XI}N8Weg1FrrjK?19J*v9%>7x#-^X4Lp3z( z?T%KqoUP0ytQl6Ej zRVeHN%ReS}{rCMu7N=kRN-T5V-;|2>pml%6E~S3JqnllOW+I;!YPTwR{N+6F{WX=; z{95XS(yUc%qf`*i?wY2=o6LwtM}rYBw0~j9`Og)vPb^=3zn1dOUv%z@*F>-EBD32+ zOPTT9#fr7i+hv#3VbBJ0bU&#wPdL`jOBOdZouXj(O1@Ig`s9CdT)^@t_kDP#*WoBP zXHVBt7?(K+V@HJe1xo%WC#3x-KE3KY|1+bq+l8^`ES?+v>&met{HQ!>dDaQcbxT@$ zt&sWmwJH^N@m6fyzy$?vC@hqB5NZA2VhZX z5x!#hGZZdKdiCWR-OW&N+`hrn{qQ(BV1CPFP<8h=^Y?o$j3p1U&wAf@KkxQdMh9P! z)@ZEDj8PqR)EQz1K6E@WBxgL`?Jxj7VD5BMDM)r&1k~MNAKgp4bWBf1-7Zcfnl)sG zo|kj^4LW#KwyZfrXe4`=kwUqmAw*@}DAW3smulQ$-amvAYC68XqHzJNDL3p^SQ3&F z?dRxhUEAoO+mqUD;vwUZ!+fC>d~hcq6Q=)b55P1|4R&b4H|A8j*2Qm8Lypc#6xhq> zOo6QK1bCm7{C@pGT$ynmPTEDv2x3FA*;AhJpI;=u<)l!cw7 zu15pJhvTk*O=UolI&~_^XfVF~RPRCc+35qP7+MuFV0A3W(?mArCZOpS0(!8%RT;xj4FaLDA>Ev(df7ZBkXRK!mbdQxrilDP45s^c45|IrAI?hJI6h#M0)Kr8wSp_p8_X>2ISqbzVOT{1a_~6R2hYjd3N$0n;&R;J{C< zC(LgJ_6H{AQAGxeqZb=hQivy^YM!rvAXJBG?{`%v7(xh2_kYD?V00-%Wnvqi`Xdp`Je@0Z6nsjCzBEWzh)2GvXBFUpSZs0a3_AmO z$^C;1B&4#!JoC!1*N>a_XPQ|z=h=j#$;=UuJw9j6SH80kV@<6xpw`7XfDG289M}*K z4kQ38BJ6Q;4}d=ngI1jqIId}8S-ab+w z5u{LO4{3|__+j>^#4E0APb9ETp9;3-*x-dPTg|+|*7yd=YKY%XBwPSZC&2PKs0wef zmNluXe6dcz)vG(q^P1G96j4Pt*nv8zaVKV_L9RKZ`U*G0FpH2meSD8DsG`rbYxB6? z^rdWznwG5S!PPKu{i%SNQcHYO8`>^TIi*DiYXVVydwLVm7hJCTxa+>&XPW4}n*7 z*g%Dj79EEwgnN}fB@^)q#1?~SxOEcP5Hc1T>pS1l zYf?A8#e3JJ_JoP!|4Qk-7HbiPid|Zhs#udMWW(u5_(?pBf`oc=WGjlmI$3I&jgXqA zYuzjZJ#WfgUC`vM#tbzJcW^szl~wulCX*LwB5;J)*Nj^??TCn|nhEM0u=RlenBE+`yrcV)K(v`Eb`>eU z;}JHzD}HZH{N7)2{WnZrj)0`2bNpY4~Yxkx(r3U{P_i z&Na1S%$D}e?qG_S@a(Y*&DIu)jbS!5`zw+^Z{EC?rJQuPAU4bnVodt#YUZYuyKhMK|;CF@XC6uMiSWPs8s|D`8X=Cnl$ zv0ODluRaI_cduf&f#=Ei{(4}kPNx|bBBfg&MS!IOME}#fy93vE0>pd05fADR`bLQU z*W&jcqVBmP9B0La1Vley{JucEpCUf^w@cq$T<@V+bEw#5zNp5-ZgvM;UQCoy3(rNu zGt{85KJxBZrKFtuHP414r^xz6#bj>o{+dQ^BFR3#@xf|_E?mB!n-hCY<$-9bWeWal z5UA%p{*cg=d7u-C%d-ubE}YX1{8||}mzwna=#8f1dDRWMdQ&Y@Ny%zdmEE6goTIth z>t^wxrZZghUK+#>dB>m*G%p$)`(4Tm-_Z6D5=d=}!*;cXiZzId-|P?{ry@qqAx77v z9!^Z?(GZhsQg)y2-apH`Pe2G$CZBmAJd?!VB#9fj5A|?REq~fVPl=Wb;1OF=X92_P zwR`e^r05-RIu&-13U$0IW5h)ob06z*q2X&%;aI5ZysuY^!s93HJTY%wNc)M}5tCOL z_?XNPoNVmbmLpdW==}nE1VC1QTSqj2cXyZR8yUZl(X9fVcyha}8nwR)wa*YN?TA?9@&3aeI?$ zJDKDM(KhDo81|jpR(JFBR|3Pv&8!{QpvG!0kH$RTl)^&p9Q-sBsN=`Eq<-|VpH32I zUm&f;@;WOm1Sm`4%5D8;{ZC46!nAt?&1XUO;h`}A_!&-j>HixLcJv3m!Z7iB$hU8| zqzJW>bLV+G;tL@kF$S2ly?1vqWny)5V(Qc2)RxrXS)N|~yB8CKdR*~=zg-LA;vIyc zPW;s!E1sUuj-dgyTq}C=BK)+9Xp!JW33iSaA%EI)IOdbcQKU%mBvR`RMD>7~ku+bY zQ(AdSRTXWwe}tdbU10ggKIN4?4zI?{yK)Uv+WezDPW_oK^_;6(jM#1qsc+DD_F}_) zmi{f~7>+^{E(|DU@J);+C2I7{V-UMz*wcy1rcXaEk%|$4SUfCu3`5wIe?J9k8wdO=U zeXTo}4-?{HeP>iJsLcCN6+8h@#VE`bX}h4ir)>;tdaW{({0fZNUQPdMV%QiiSpRx^NetDhd7zK=pn z4qtt{diu>!$F`K6%|{niIOzdA*SlWGhn@8Pcp4Ae;c<_8i|9?M{>OW1{pw}*?Zauk z2_}4cpb-)Us)__Ynu-6 z)*q>_e{Ni!ZJ9Vfo0b*3hYvh21ocOK?)@f3TNCZUB6#dIp+H>d{bApy&5bu7c+~0q z{=12%r=tzTI|&F5r|Y`Z%8>W;lXe6}Vsf01nDqWW#C{v)iRc&p?f>tc??l&4?1$TI z!Ljo@nh$~2UnykaYQ(A4YliEeCQ#=)P@k1QI@^C#7Vg`mVR!z>T95JAyjci)zXyJr z3ROM6yY|h?{Vxj4pT|xAF$*7k8SvW`E|(Vk937Wd0Qh!c1WAXA4p6x{BNB>~@3t{A zMV{sQ!tYyWH=q*L+1cg|orCYslJbQfXF4;#vB&bfj(u9j66xS-$sN@R05oJTC4Gtx zi26Rn&o*abjEs4U_W0wts_`Xvj8W7;;mY^i=P#!BN94=?4N7`p*l};TaOwHkV1vMW zrT-4e9bf6lzI)Em^Ie0>Wudb}jPa9Yz7PdPp>gc7mnVfWU%B@`T>kWierka$6Yrx|LeAS^ zU!zy-(UU%!_N=u`?oK|tGU?IQ?eER-5*t?<5>~k2a^W3?6g?!Su-GQP<%(R%w4rPh zW;gactkBQWJVP9lESbR|8?*V?6rI9yMP7qGx>&Roi36;*)OvRqflHULo`%5Qthxib6epWS-bks9w+?`KMXZ14W1t6i0ySftfHn6wCWEhzxT%7_$%=WEFY9!O}G4e%y5m-_UsH$618xxI+On~d?KOR$?GMNX&w!ccq{6CG0$N;+AG zTs|IS_Bf{Iyq7(AOv2*rDZM6d+nKH1!gHzx9JSkv<%b?k{Zh<$h9zBemsDeTSU=Jv zo2kUZm6Ga!_m!%{E{G`ZsP5}l3aB?(MW6bXRROydMKwU1PvOnkp9uVEAh7nQREZ+5 z6}~HclstgcZ4#)88gBtw<>zHsdD+z)BYD{k8y^aZ>}H;37zOPjFL&$v5+;&Wf0d;C z7euodj&T=ZK>>Y`Zc1`w`dI6O0dHiQzz zly$+XfeT%CSw-u3pfvZr5PZ@v%Jy}E6uEp^TtxeB=SNGwi_u%`B>+TAcX-gB*W-zD z#H==j;xIMl`va^fro!-FNui$tB~!}ggK2Km?S;PS^*(P`&-zbj%>ZJ6Vyleoq2Qt? zUQJ6|CAghCHZ#%SqQh_gs)Aj zJveKs;%H>Jg>JEzh}JSLY+7*n=s)psG_$b;#RwVgmyLVK(ww26aZU8wfEe zE3gP-x7y}n&I_uDgem-Omb4SnF6ToWg_xJUh&^m(Iu$Ol^i2I_OnK6T(e6q=2)W6- zY9%}UosIEtRW(~DlykF%l-h7yCH;~JX? z0dYq!yqb>9$zJCOvE%9_T0i01z0D7rfPqmGyy+GTvn(#ZIq0^%Q&Lf$SGU2BeXG?f zsX>2%Sm27tSb3`!eP?M`f1a=TZ}qTyqs{{}ZUHCM&J8~sh-}?(<;u}uCJdsOH()>v z3!pVC?*R)rJDazP;T6xXS;H~}W$2E$fFA=CZzVwEjqk&32@qKd034r26XzGP-Rq-O zR4B!=i-7PJqMy2Y72HW#BH>DKp;fsr%WgR;eq+#6^~-M7pE;mKT(w%<8Z}pSivZK# z7||nlpcOOoY;2029ghWEB5A>3(p#@yG&v%bEkA?pJ;K^Tosqs}t0HQqp!UURNMQ$X zr?Ip(sQRg6a{tS#)mbyKPRqRme@8o*W-)`vW1RYhs-~359lGwxG#F-HFY40=!ju;71)gFkH=b>VCxF=FvYwAnH)a8+cKykd}|Obp21L`#WQgmb+A=w8rf7p z6*Q*;`^)mb;s8&@E!R|KEvbO*Z$2e(3P2LR=;7x!Qr_FsBE&Abf9kI^1A=CBI+oRcJoc>u ztVNz^DoGFkl4}>7w2d#Mnred1g*{O|V|rJv^@h6vrTEh>01%EL)WVP>0GyyudJQ0X z1CVD9y?JlROtda;PV)3K4JDVo=+w;amN#o-=J&GFlf}MOkzBIzrCutFzTO%A`0+3=~}I8luuL z4qU_QjSs)#N37q7DnX=*uZ#cAz)I^EyiCk8sQI`_Q0s&%Eg#d1Brj@Uvh<@W)CcX6 zq>IYMNT?~LSdJ7XewgG``NWB3Q#<;q+01~w=R;n$_dKe!Z=jWw{3Tw215oSZte+|# zvFTk0fGc$FFKqZ&>0%$I6(03WJa7*PAryk%rQMf*;8Q5KFF==dP@lFYB}e$J$^`>& zjoa)d{9TXNk#SOf#BXuj%)htx#(STs(l-XAa3_x%n<9NID##=CrNAH0P7*^T_umBO~4f54(Mft|(^e z#YFil>(+iF*h2|h3#djsG}R>6-J5Z%yB7>$V8aRwH(>Ub4K~P|l5k*u0~NWECn>On z;zcj_HGbCB0cLhvnuzY8j!UCmXH0G^0RRu9sW1#pb@WnpWu+$HsDw|~Z3P*0fQ)9i zMgp!sqdj*PKG3c+Cp)Z76SH_Z>($`hS!wX~)(O{m!bYIZR7{dZ>oTjR@}#!(HL zA`+xs2{Nh!yTWl^IA{PhH?#v96Q66|$#A!+bgT!%zJqp|=Ic`E*+}{lfG$VcRgD`! zV1c?D!}cbM`C&5e_*IS4h4w#62q9t>K&>}|`-KnB(Gp6sH-=y4B;5J-pt5nR^U)f@QN031JsK*dUwIUGBNT+A z()Cg>2Kbz89N1uO+$pO{Uon@V$?WqMiD8Mv5SURIX5=z7tQ8u(4B3;Cqr0a5?@1?) z1X7C!VOwcS@ifJahY!LFG%0i}-{9>yU?+0Ew@!wPD%6`8`F=q4WH?0IW8n9k>q~FO z-VXETE{O`G+u6$y&klz3OwP;ipoMFYwEsh!`~QIy%(h_NqV^aT?E)82ZKAX;sCJdc z3#CE|e27xk=YWv|w3dXzE-P#feyj*97x}FvDbfDWAJ%y)k7Syk)CD%&0JV~pN4ogkDQmw_6xC4dj-mI>H!jQ1K zjlP>eMQm$=WB{$2P7u==rR!ny(V@t&eEZdPZOUfZ=Wt24Etp{@{RUb2BMEq7wJ)2{ z<&VsD3oA@jkneq13rXjw{Q#?-G**fSI{v} zJDU%>pH6SKWM<t)#o(t(05S8Mc;RASvjP^LoR3waus*SYHqJm$ z2{3>r`9%-Z)JNB=Q@W#r1ku!>((KBE_711p^#nAPOxj9F-Vs*FZC&IJ zC=61;zvv9J(@*i3T1GssG;O-=nk9StW#;+W83*rIuCMzXrm!Uw@g)xY9vq-TCxxCf z#9)T^zh9%iGOh8+0$%8u=~9p_!TAY2+p6D>23x*y#PmH?BCxK60Q;Wwt7R%_;mOYH z@Zxy2oyX3mj**i(O*7f`9gAxeD5b`4b?iROV4z zD49)h3TE28bXQ~12UVg<;PfdO(2;-B*>#}diy*mR4~aSr6ra8qeqL!OKQem%(n`2} zh$J<=r@8q2lk-o`I5$(F@@gq`+W9xxtvUZa+3Akd-5J1tR>qHVQq1|SpqJ^&y zvITb{M0zgf-n<#0Ly$4?_Hp9mDAzr&;DUAVfjS%zZbu=rLAxIlkrE;%ztLLr68q3rxeHIY#{yMqh&PIvFaG2O8VJ9tjrpEbhc+t2G*ri9%xXj!dD@gE7OD8tOa1>}5Oy83U+BFJNXVL5yuc~5b zT5LDU>FKs`y4B)A10>jhf92@nLyYsp0dvvr{gN@i+<3K)*5iQB3BGgj3>R$SB^|~L z-{B<^GSB(=vg4zpQL`>jVtzTtp+mx%eg0agn1*&?KLn%(r)y9S#Kg}#A9%!;efsu# z;U~;fH1a7%P#uvd*#KAj^!g2;QaoN@D4^jSnW%=(kQ%iW{(-I%53}aEW;- z=N@=elvBZWS^oP+e+Bz0XSHiikMI2j*u~BX2rdZktNK-%v$I1>`U^XB_O7tp{P0Al zveNQU1EKm@<>IAd(CFna&8)YxW+gqXi7p4fq%cYqL+(8D=S>Bd4QBTebxIpnVmE+==O3;a zXeOQd4E{YXvE$)6lMK-hrlT(Vz})&3^^`vMrGj$?d#)Bj4_!D2(!RB7=c#~Y;P%(J z7b=>_?l$2aJ&`7iUoMMz@Jh1t(>mPx)cDu)G%Y^EFG9>CB04qID~6b0GE%$lEVmm^ zm)y9E#?$w~^U{`s4pW$i)x7^>tQ!Q^FA{=03Kzguv1V;@~O{ST&DS$Vee zYj%8d_Gm!ozj9q$t zL3SWzMkHfKL^VWgFQ&q5+FwSr0^+o|pq*2&OqFc)bc@K#W;2ci?{KwZ3Bd&n`Mm5( z5x{mHM+>xKn#D32*&iwPS@ix<1RX~K&F>h~ymK;!iLx$pLbv1Cvbaq!jQ+uALM)iJ zMA9YRzC86@BIroQk;7+>w16#eN9$gKEi1uxe_@}lsJWTvyTs>c@qt*%=@LNh%R@US zYBgr#??+3$g;lNkh5pYnQs7sTa5@PM_?7EPQ*;EELE$#p+Z|)kd6N~{Nyvt|;+P_y`{JL^`*UMiO9dFCZxv~iN`&$7u2it;xf zk4Pf1hqrRj2DPmrTAf)YAziPmGL~vZj@~(^&MtPK#u$WXu%2d{4HuZ{@S3WN_q&B| zx@zUKyHg)C4XPGZWi*df^_z^3g7#weZ)c5as1a>~NICo_!t|sd-+? zI7_iEX6 z{7gY6=4!qN93iT3_@Hc4O7x@&r?ls(8g*i77;}8~8%#k9m^SAbv1kg%9`|qMiK9pY zw1tr3=bQiBvU%R#udJz%{E%`~Og?<8`*~mp)F@Cw`&+PMpfx}`2<7K*UUyH^p~Vvq{)F2r7cZtPoRUc)zt*SpW6feoi##Mbo&^NbT`=WY>!sOBq*H zj=weA?T9d9$6d;>4p);twQ~E#rBmi<#K_}bg5SIoYt2#72Y3UVp zp|W}&nbLm8S&pI)hr8QIIKb89%T0NrC~6AbuZ_HX;U(dV2+TKrPB zp1LOFME$xT=gV6uuT9;rma8m0{(W=YzIm+;h8Cv(ydcx{Z(+nUdE7g@>jD@vbh#d~QbK&m3vDbm6L0?MwDr4mLZgCYMYU#?X9tB zF-D!}RrrYc_jM_Zm9wJO=CCDysWi2grP%Nnre2<6{jBYVYkCw&wvtl(LTyDgLFWZJ z=>wW^zKEn1MVD0O;PVU!5G@@~RRJ|`?>aDgv@u6%mV&yFrC%tYb4jiN3Duc}is_-7 z&>q^k_s9b$O}eWj8}Lx$|5w1E{K6VWzh?s;SJ)|M$botu29<(0r_g zpI$&_U;LC1B2FBgOZB`6yMGAzIVs+2&`R)AhMt%sA9 z=T);=4syXW4&Td;AeyIgdgXd#6kpYW(Q9(>0X`xfzM!gAEoQTrT3Bp3sPnGXZP_DD zeXq}=D(FYiBy~-;q{mtO<{@`^&w-|!TRF#sRQF(x@0jN7kd8hM0Mw_@@=g3#?4BC5wNu)m-S)UG0Mw({FN+4E-jycdgCq$Sg@Sgk|?K!xOx7 z@HQmr&@b??rQa7u)0h-STjFY|ZRMkM#_)Jx?{^E64c*|Vd{Ae3TtLz&-B3QbcaOeM ztqR>#2UYu?t2d)2?!1vF9==wzhOU>WUe=M6GGhIVF{!g&CT`C1VHWMotQ^ubHqh^p zK8>385qSW$`%o zGIlj|Kvdu~F-NGgmfI6ER4JpR-GkUhU-I|aj;7+-i7oral-pm`*%s(N4my|*>JYIM z0l9E>{RHNLH&@jpLk8sE>ds})z^?Z#a_wz9XcDF}P%j(hkP`e zqUd4QDb1OlT&sAVz4_ezY|{gh-aB`p9v>JlC=Hsnhx|_xkq=}`HEr)pdyzk#e7Cjj z_+ayIUZ4!(ov&F2CtB-fntv6YWy_F=Pw_hCRy>iNa%K9D9*Df`hq~ZIaMHrj5%T`U zjv-RYTgL;{p+Ohe$n_ z&w3g^z^cAKVmp||N?c`VW#h&ggsF_IzpZ+XT^2>co>4j7-EHsw#I`b3p>hkgn& zsFA4d%)wv(de#2lo5V1@B@kB1V@6eKcMRy&@l`8lWJ&JvZxoQGT&Yr?ECzMJhxWM* z$Y23meW*KOV`w_ZzGJ}N$#Iv*=&Ls%_D@H$=6>APpvD$Z)e@@8do8E`>JTe;KO1@| zB{wj<=zZ$0@`#u3s~B=GABMB{SCsKUr9uXvb(e%UaOB?GT^t(5Nq)Ww@i~`BZYSRE zVME^JE*0@Moa*Y-K-idZG z^JdH(DM&`2i)soE6zmvVfFt*VM?{@rX9O7hpf#25gbv%aNW_)a_{9$zltNU|(f4i( zJd(K5bzWMVehF3@L8Vei?@Ra7)so5{mMhH3s(5_VI54r}zS{;l@rcURv1NAzAR_TMXUo5qHZdc47GG3Kp6?IZ6dD^BltlP3|H5;k6p_{Pc~C=w5FzX zMp`N3OvX-{nBjotg@mwCXs*AR)^_fY1l+lKsv5=fAa8MHu|OQEQ0LP8*OwEh4vy3o z0Ts_ZYZQoKL%?_{tCkw?oP+Wh&^<-hrh+bQfyLC{+5Xg@k@rDET%1v?rE=D#My8<##p;GS&TT;)Vj$C@R z>&qO#b28|;RNKoIMAGFlk+>_#1y^arT~1EqMeYe(uB0tDZQ9vmTE3MW8a(?vfrQo3 z4neaaH^#NRALv=et-T*i2KIj^*JZiB@UY}P7Q9r0Gv)Isx}v>X5^89ef1 zOdsb>2e%Tw?(F4~uE8v!Q|I&!lg8WfVNbN13vez^7 zN;xs7=KydP3$ioqy$3jx`Tm=kKnB}Vl zhat%UvUV=nX~WPLianLr?>MWU4q00vWZmHom+{VKF$Y(5#G8)%DULg<;4-rhw6zbU zsjNA-$P}w=k+Otp;0JE*dJeYbxVFB~zI|bOk?DQz760O5l3l>A;zLK)MUHxS;(SH~ zs3ChQa8&V&eA4c8cwBIkj^rqT#DYV;sa|xVnsSqJIM5l#^$*xRA5KIA{@dY3FTGDV z4FqCJ55M*F5=*B7(M=r)yN81zj%0XmU}1?iwwQ&s^g2Xw?*n~pMIP%nuY^cC`i=JuNxSIQs(QJACt9H2h|%HWak4@cTN z#D7F)l=EtT5wb|TgRcY7l#~@F4ZX|}ZI8RQougICQzFsn`2BZw(BevmS24ujrCK4O zsUhV{()Zf;!_Oh_xyxS=I-~Gh^tn!lfKhp!J501fN~djgU@*Kico|^p6^)#ESf0ASe`^ra zS8isE&S45yOFWy%J*hkrv9^jk9HqZ9wLc>lhg@zWvwx*=x$&H1DN*|Q#%b!7LmF{M zNfk~?IAUga{)9CV6A-yGcJ)yyyQRItKR@#4UeLY;gWoIZpzJ4^t(+?oHw~12ir%Xr zCGsFE6@JIp^reU-kDLG910Z6!SVpos0wi(`F^4q~Um@s~dDWJBkSVl~hcv|A8!SA> zXNqXb&e06sqoaSRR5?>_hP3~$N_ z0KyTnsRy(JActrgPE|GzlAmAe>{taHiY8)$|4Whho|Zf}{Mm9Bd_bL%JX6j%{PmZ5 zkB~@i1c<}Q;{GU;?HuhmYO1P*$~L&l;CRD2^G}&#`jN=DKss zT)WbmG3mcMu-=0C^V;^TrsTwXus)Rq&qW9T7=i<7&wzV)hu=)8=j2*9h+A9AV;#U_ zs4f?+Za_>uUMv%Kmom;ja4@?#U`olkvy@-yz$H9#a95>C#jobP!#e8zT7TY7=6{N} zs%m|!uc-G`E;o@Jp6^#_nZl+0oYwfPQfwXgEYVeP>AP-o4cF;pZSi8!NJlA_dOcyw zk@V5LXV0Mt(UG!e1aX9{a^Sni@S(@b0k`xLIwrLLVJG$Pd*L*KOMVRlbn?8Fg%+Z- zB8a+MEuU1663VueoBO{%{%89kQ|7?McUEu?6}3zxW%sBr1GBweY;+(uv4QBmG5gXl zyoWSQ4^3{H1Dl;WvF(9+2C@P;&i(@~RPpplpvxpDMFIV1F$A?iSgrhIZU0VsowVI` z$FJkW1qe5!J+b|vb>du@Y&=jg7pfdh9p?U$J27m(^^MuZy!0OMlhUqGNpq8EAumc# z3v;lgkR`%j*Ek1r`5|?SA~RY_jYah9IpZ8JbGo+23Gyjp2MZMNKqu@3htU5mIqC8seXG9uCe~AJPrsw_hD}C--n{ z7INjF_uIoX`h9?r{YJTxfG1B=olm+Hg1&;y_x|Z3NUpUd1pSMDHl%tV{o=3X_vg7= zuj0EVTT#N zRR^YVOdTP$IloxVQoVs-83P~8b~%@FkJY&&{Zrk};(YUZZ0}QTYYYLuk3=)w(--x> zFNk5Rk{3r6G+aHrtq@13lz8p{ROQlPw?D_n7fhKmm||bv2jOEirq%Z5hWujWc|{>x zdGolF0ZJ1Q#!Hs|(LN%Vk(=4mWfA+XKVZ9P^VSRZNIeG(o?^)%MoajM{TJfLOv4!X zH!LqtIgUJ#)l1tVscTI~_)`zwu;pa`+=>w? zKG2poeX# zcVp4^>b0>h25J8CdyyXx$2skkQL#ObunUO$bW#%4NTp8zLiwJYJZmN!LyuN1**vYqxEpBV}J8Xv(Y-dYmM8T@o)vipFEb{8Dp`*y6q|* zG39*%j;6RVp5pUAiq1S7s_y~gvu_47W~^Dpz9h!JWEuO;*mn)a8igbj&DfX79+JkI zkgU-@)@+q6snmBYiBi#uFh9TNxqsZ}xqqH}&$;J4@B4XUKCBPEo2Bi`mS0w9CqSL9 zrfiFINM*D-D@ncA9cY#Qm{>lxn$}c|9BgZKnz;N(4!v3^*xXMC3V2cIU1Mkb7f@L7!mhBINr^z*sk^nvpI1YM0%sFD0Mv0F5^SmY*N+5Z*R~yFR#tk)d|K7<{58zd5 znd)vjFbO{@cQxEk*La}aFB#HggupX^yZa^t(0$?DdxM%DzdwQ@)844@;uPOID81y9 zbok#mun@W*re5&wPH;n-L>g66I6>Ib;74obC<~0GAW};Ju%&p2Q;vZ9BhzOE(+&3L zzZ);F8!#nMWP+P+uEp_X*R1A_V7{&+&nLn>M^q#L)3=k!SxKz#K*%Q~d-DAFFp3eE z`>trL{lT!DkR}g+UA(mG2mUg}4<8Kyih9zxV*hae&YR@S*=Gv|jboa28`eTdsdnrv zO*!37aatqYL~M(7*GzF)tZ&ysQizT)MbvV8kXb(C%aH!~As`-uFi{w#y?y`rq>yQU zDI!JmK|1*ex_9;bC?6<8fXk3jbu2LyP|Kw=VJHSfaMMjAaLMq!nBvP+js(-Y$rCQ5y;pv&DUNO)LdLi-nm=zZ!T0Ke0}Ogx1oF z4~>w9`zB!24jf6YRYg-MIqWR@Tc>6E*ZmpE5hOiMZ<#KDKj*4q#rvjt)}}|5+SXG` zx3Ikh=~tkOr)dmOp#M_2mI!biCXg#-=jxJR$@!Xx13_$mct)t^jiid~jKopAk7~UL zJBx-Vddp_0(|i2K2KYLe8ItNiq@8xIN6HrYmDiZ!a0qvUH`#kz0 zV@u(s1?iki?d{nIbS~;ns#wYKL80*!i|VN~IiG$R!8683XEqOTx%M{%Kw#b|X6+EU zK>Rr+%l&j`&1Ha5j~%6n`@=G19@c;Fy!eFo=8tzDbjNxV1amFQE(Co!NWJQ6ydh{S zBvAC?hgbsrTda2uU8=nQ)?TXf;Ud#lt5sYkHu-t@T2#nZTL#xTvVzIlRMF)HSn2mX zh(wCoDZX}=71hn=KPQY^sXntC8#U#3BC-K|u|Bg*W(lTWWc&C|W@Lo-7r0_;O-_l; zpbj;X4|6*0`3}6pVdohxD(SR0Tg`Ov&bJAkGRl|g_|*}+KDw1q9RQIyly8-lf{C!9 zeol!uX}uF!)Ox9-mnxW_R3m5d+2xkb$WXpp5l^Y*JhLb_;oz}1 z+%Iao(|#Lv0ybp<|HR_=;C$_X3^}F?gQT)%%8N)p#(yhb8G5n>lyhz8Brw4Bw9*6~!5?Y$E4mAor$8q4 zq+;oX9Qka=dlpJHG&#M0Z|oXl>|+^T;tOeYypMnM{^POeqUkFej|Q4o5E`T`rbp)bC?6fo9?ER}GL zP6aF2tSYn$TI_yUwzxu`{kIEojUY>NhYGfJO>Jq$~n3Wcn4*M@-wYDiR>h4(* z)`Wn8ExK%@G%2IG&~ zN;S&$X`@5=;(VM3x^ z2|hdxR0R}L2Dbuaz#X}dLSx+KnhL;qDD{60OR%U%i|F>G>v5z%xnoL?zc3$!ZFs>?I0% zT=qwpxG$zyN?Cz^Fiqz@ZU4!}jfq+UB>I z1A*oIs!gs0o5K=WWLwBYGehh?nz*MzxGO~!Fs6=t5<_p>{4id@Z$A~92C_NrMXxr} zGVDeEUUa zkRP*N_WcI5$g+m0KMHr&Bn8r=1RNL=un9zcSbHZEX8UPgAO%sT8eMj`y-{_L63KDl z&R%)Gcrpd4S+8b1Y+GUnoMY4%1hUHjZzql66nUjZ%*3)%Vii?sbXieuoNFuv`A4pS zy}ztD7NJbeA(%AY-wSBr`5`7i11v`x&`4+&LE^myI`p%KVhrfLEgBz&9-*nqfNy1( za~F-D0*O~45KgN8I7Fkj1ihr50-G|?`?f45ur4O|O^0W2Mw0=tRGKxQV3V?3gRy!~ z>P}J`PHxtD&NO^vrbebYLM=()P_7P=X?t_wr&{Ic_-~&oquaIX5n0?L6trIYnGHq} z;!s@O<2YQ8DfNgu<;9j5fRsN&?un@lSR}*i(-c)vo0PEe56Utz0iwCN69vcbzfi>> zJHI`8MhqO_egRN{H$YJ|aTS)B%i6UW8`WXbqj@Qwv*W>leDQGe!owPM_Ms8VUR~Yd zr`Uj%l!iZ!Qj4Pu@TmG@*I62Y&d}g44!JWe_9Hs6U69ZM*lCOjJC`pnmOrRnw*UvT zh8szw=)hb57!$xAwDqDN?X6ptIi%NRg_6zff?8?qBr1aDpx3Xy_oAy~?kAGWkdh*) zn9x8eOuj=pFN}cHL?Lud6c5KwEXf((IH8<{KD=}~p*@`RsSufe`o6I_6$PF=q&s!U za-pZWmr2e>84v?$usO?Ej0Fs(p%mmFDylx3X=zj>Ys{<$Hvv$UB)A?GCOnp`8-~{p zFlX1`Lg#o0K(1Pb_HwYM-~dKo**WItOmGMM>54wz_AL8S)}5TL$is|CpA(CQ8pr11U20C6Qu~$K$`#Uq1OSe?i0KUM&H2?#0>i8b zO0lgTq^-{(jY{W0uJe*gfoy|Gx8*>H2Mb&?1#}#%Cb%fi_= zb0Cr#@KAtV(`hvt$vSoft$?K)Y?RP$gO2CqX0aGkz6U6|#@A0vvGNJn?-ENE(xGss;}t)I|(9Oaw$f?_=^f&O=0I_qG1l~ILlEB5*)#8c;tf&J(1SU)cP^hOCWP?+OFlXe*yO+5FtbxXJYYY$wkL2oI&wFM z21ihjk}UuUQV>shXgNhmqI~mnK(y?5uLA$!CNV!l5m6#*-AF=}xI6$Ws(>wHUa)z@_GWAF0DyzRu#aNoJq?8Y`YF}~NFE^JF2b@je!8(Euu?z` zH6xsqDXu^(f&H6+N~Ay~Y;*n@hdqqf?z(XH&_Bmb`r>0PnJ0m##{{h>w8g_!^WJ5g zk%)AiG8x(f`}L}2DlU7XsJr#)XOXLt_33sSymqgkSD_UJc@+39O@qTF+#ygavlB}r#3n{+?$`)!oZ7fc)G5WMQmVuS`VBGzN? zVH9rC;A}`DErDSeLxQ-hRSSSbUJwKKf991)9ah3y7;xom$YCYbQt94Aw^Z7{fD)_k zHata6Hg6A| zU^z(*N@}>=kd~gr(fjYjQ^UEI?N)Hhew2|@?CN6MGTV7UrbV(v*_@K)*)t7#@%HjJRRlR89h+}R5ls(2dPyaJ7rIG-H_yyNyoB;7P*GA)qa@f? z#jS19L6BeR15bZ8LE3Z-SP_gX7#7k*Ve4Imr~+0jNoq72D(8)wzez4vXw$*6Bi@Lsl7g73 zYhFvCHT!PDPe9i7j2-Y zGhj9`w(uv)DW1Xul86dPYqZ|)z4@)b$Bn^obC#F_3%~=m;eEhA62SfpiT0PDKEOxc zxYe<=+$-ucqaT3QlaYbUTI>Ej*CC5t1|S;2Ac2&0GlH4FBv`f%^qbl!P@ACwMtCrq zo13F8Btvp4O!bSiu;Qbs7miLTUmxQ_R}#_$?4TcNIT)36)3Ov@J6U!`m#$KXTx0|M zhO6YLy9d`Q6kRKmG%7oM>Bh0mnAoe46LU6i9vS}Gk!MRv3TKMPQ{aE%g`kxRe_sc8 z5Rm2+AcO@yZ2>M~PW>f7=GvqCzbVcUr)ABHylJ9zPtsIXqd8?ZdhOI@g#4Ri z{jtgKUmvgMW|DfXDAShA1@|eW7a)ao$G%Ij8{GQlVoclT@sDoB%#(*Q4#hlk#_m)UH0{DWE+EnF zwCBrFEAB?^otEZXoFfPDCNI@!ZC6k?S3CMDQ zNAl~0HggNlr4?F$`{I0yoZqrkOmegC~d08+9@bhB!?gdeM7<@z^t`*+2SX-8cv z7@tu_;MGcm`r*L@X`n8rkgeOPJvLCsC33>+fgby|$w%v}Y_HM!jl!{~D(pud{m8k% zDm9}pRRu5g{5pBII(3TCF9}0SmZhnf;B0L1V%8-E+h9w)oQqzWXW)o!MYrg5M*oki zC_EvOU5fm9_xbh9=THfzb8=gTX2mECg}G19OT~^i9dgJIAuDv%!TaZ!G!PVqma=4B zS^|Z<#7e~fqP-o=d?lvW`ORyf?ln%{ZWB zDPh(6EbKb5**g=MG#V?)jwc<_$QVU3&)8#Qt7BLn7#EBzOeC1V03eS7nu6iwjLT}4 z1pt`Ok3BDdB zUf=i@{$M&T1o7ZtHqBy0{F?ANPoHU@ICDMJ4U2i5y(X-+x;w@gkpLOywfnV{Eh}1B zKnDQ{G@2;~C5i|6C&`M1?)(!XW=Hm<7(wBdtJt=tm<*Y_V!Q$@L;0gbx}mPCV>+K( z))G|2Z-2#Kf|PD~BFNbB3wtS>tzGLPtcVA=<|^y{kre)Xm@2du<5emu#M?wr(7glw|M{M;8ReRgzc-il5`d}xRM@cR9Sw%LXQ{O z?+r2~@^UrPC=$<}eP>9hXBZ>!>Wf6qYntvK3`eAYy^Ovhb1fa~iLM!{Q@3-MpSrgE zYnYd<{q^>217d8T68BYs79zVyEJBGKbfq8yCO-d{^h1YX1Py1KVC|a*{%T%|@rJa5 zp;rLB$P?@DQ@BX`2M(RKw!ke1KhujNf@%BbGQ{2&30O!JUf^i!z>LCQxk$JWQ}Coi zwK|J)lS?axXAf{}C`JcQPerS;2w%8ugyqd1erp4sEeLu9lSJqN45H1o|O8F zO3lCASiO*rZk|z%kg(~iTzQ6jDw&QBbw~j{)eQT6Nt{*Gc%`-^4O$X>+Sj??VkiT6 z_zSMU&*ZI)nz?tGp>QUq_}IwQS|JEeGC=c?w*mEx&fQxwCvF>YgwqBI2q4m!0^*gR zrVl18p-pTDP!nb#v=R;K0pQ7-j=up*FHo0&u|m)j&Ep9^z_g#A{|8Z^uEg z2P-8q!9Mk32l4eJMamS%1eBMzULL}=UI}txYVl~(T(|%s$!^k`54EE?ozp;@)Zg5~ zThC6Bb|lCze!zP62hrbEeZ68X@IT&9rO?8Lqz+niK&Wyn`=Xywp8KN|t1s`fK`pyEc8?{%_A^6N;+MA#XUwgyO2JD_ zzPwTJej~iXdMVlEVk!EKm}PY(pd}vxG0_9T`9hBn2U~~`J!2ra>UTWf{A8$O5HW-%Q#U4u~W&zJOlhc-@jnHrz4GI)g$?c)wf(Q!~B6^Oo2J|u0r&24kZ7=LpVB83k{%^suz zsl&V>qd5vtM#&vf$9H}w(D?8fskHfegwOT+AkQGB4sMKMGU_ zW2n4n^mMS!7fN-u}mfg|4l}n zUYuuNn=keo!C5AlmUU29FY8JRw#HShjdZKG_@8s9l5c$Rx^|Js0-~+kf#01N>RKoI z9XeijR215l{Iv_`tHeNWl@{qlXxk@o1XY_-1MrO$DEqkW_5}1W5Z~l6ELZ=7yE8GZ zm8wAlN=48w$E$+TOjqcFo4e52ol4#_M?Z!dU?J0wVssI{fa~%px90>vA7Zigt6iRm zE39D*0@W2+wTY!Lw9XPb3v4fxN!&_5VKI{8!)Q+vn`EA14;k^-k@+57IrIL>zf7qQ zb~vZ~72cck>xO-_;*$MTCE4)mw7*yIKP!7R{Q8w{eDb+*wxOB znGBPtb>nL>%~!&?ju{;KS!l_kDCL6^s?*u_?uoodI3q*1!W`Fj5Wh0J8(*&J2$B^oXvzDaxYBoLSemaV}7s{wO)DHRS3{Mc17^{qhK;2 zKDMSoSG0<*$4v-vNrw9)9ZLiLvdLx>r>b)*yc2nERD0pg$@AndJ}G#%ZN(H`=qmcL zT;ebj^eEc^mf+l$SGqT=Lb!Q5OAMTKKCbJAlGvT6+HzH|BL2O9s=&QkxM?i(Uf}To zchrRhHC6y#auMnd((|g{HBRKrg2u?F+THJeB4mH`4ZNG0l?4t7)2*E zE&06aNf6sfsHW{?e3aLLDms9 z3_MWHtQhrv6tNdIq@}^eAf1T5R9B&6?ZE1qbKk|ax@2NIWRlpl<8Re@YuDTYoPktm zgtk+%(!A%gdxo}3vWskldR(CTJ)M8ie8x^NFR~fCUAH~(%+fuG4FK8$CI(MSeOIN0 zX=SQU!vcswr{}znxyEZd#vchZSt(MwjI(SqT-?bMJ!L6MNf2?Cl?k;{|IMpP3pq6% zax>FeiR@g37mi!j|B%YYtwswwl2f~4g&oN9tJBe)nQD#%_%&8)6Ai^~zc?Hkc7Kce z_Et7zoYs~5W+q92f?NJ^H#cyMFf zccqdC*CbjbBA?FNI(1|OH5seV2Mn9wBng^=1(4H3uQ(u46$4f&@S+0w{nL20u~Hu5 zW)5on>C2`GHCfPI?kobbvK^WJH!I^7@^X~5Wf6}C24Wcn5w8V=E(8X_{gcMD&d=P-XJ&Y`_+MR-JzW_T5xjnW46b|Wue#JTCDVXNjUT2L z`juj)Ax8;0xqyO1(mPrM$HIqrsCeZiXeA|N?i<|jpaxaeJxAjzdvG4nBezTI1m zfX-@z#kM5lkZ>|aFMcX80L;(Z4zc=!m1F{rs7??XE(aNK98fL_jELyVmo1Y4Z$*5O zy-@n*LfvfOIgGA4Q27GACN0J+O7{5OVsPg_M~OtP0qbimBQike=5wwYi+VF*-2&=y zZX)b0IWv}sG7H3J_*!G2PDFS<3)w_I`&mBCOyFDt5f%6bSw=xxFTic4fH0QN9#RoZ z!G_NGzwH*2?N>r&z5jo85z*n}R>Dqy@+7x&vx-wj9M9jdWG{TmY~r zY<&>zLW?}?-g)nfOZ+0c-1W4!AM=Q?sOz=6j`CArt$H7OiW6;wE}9zRE+m`+1Kk-F z;^9B~e1#+x8egeEh%9~QLbKU)gQ{oxjZK!_JJEX|!Jh3$16!&|0WTPVIWB<6mVRkJ zsPTj=qJ@;!_KOzl*ai}XdK-Czfh=rC1WiF?3lb~oU0<=+zE1m#ZFB1q&*;xX`cnB* z3Lwq?x-I}Dhcv)xDlmn}Yr}wI5~TzPfRrfYqj`3qey~&-fZt;a7C&_@QP3-h22}*q z-n*Ai=C}8_=BYfRqpAy6FRHZE05uF%Y+`a_=Ytcd<&s(Y&9&Hcw6=zjCJQ^l8jw(WOD*hIWk$3}U zosB*M8%KG63|o7$z$S$1lPs)AJ6M6KAEtEvC(_8`tjxK}Oc89bC>?1}@Gl4AClc~*+5rFN z2t~|To&}Y+Ea}c~gOdIT`KTnbbA)ceL5}SZVC=)bmWPTfKv|Px{kfoodXe-Wy-8E4 zjqRvL8mfVCwjO}0CzY`o$clnyYdJl5J(x%dpI>AHP~1<81~0W^`i_KkxtU{y9*9kXwdiDmdVoKwVr&I3RYcWpbrL5=p70`}oX7z+xEBVhQ($nc{V@z6 z_Cmv57asaWGW>zWZ6c2*JR%8H;PFTkBsT2%u>|5#0Dc|}gOUJ8eAFx&qG6A_Agavp z2sf4iR7&yiuhaY>8%dz!q|1zw_iF2lsZM~t5F^P)&anDfSlz1&*`X61``qE}txkVx zon+YXmV^NhRe|F50i6`EItgsR0&6=uU6*@K@)vq{DM7rh$}qdw%u(d-F)PAgLv^U^ zI2A%7e3*80d6YNfy4 zEVku%rccfi`aTJ4peOPWU*4~=B4I@xrsQ{B5fN2L<%dhBZKuxtx{yw!15`GA^~GTus+W<}`L2 z;Hx+&SL)H|JxZkWThRUJfvm|>&pji8eesiXm?5i$zM?=r=PES&T`n$|m>$W-^w z*No&P4!hqq$N4Rk_a|jkHW>S70;5ZrF+G6j^BF6*VsQdq&QFw_3_kwrj$DK(OWWek z0hH%Y1VO{zU+RC~C5(48UNa{gPcY>@Gy;fh;qD;IVBFi_sFd*kNeQXbPh zYr0iRxIY2-fx>_~yO=G{2Xhb<2VJ81lD;f`@z>rCXY#qP*(d)?84q4hzMdZY#2R<^ z-fGagosFV*O^;F!RBHO0>FgQUg2;riS3x8}dj8D&SNiO}l+ahyHi!vfzT%pgA{qSI z9#+o6N~b%0|6mDt`02)%Pp_pLt1gJVp8n&H0+Uoi{zZzk%7Mq~!SO|^K7~=?ZIFe3 zPH)q?j!SMIBTTcIy4qxj9|V@zjyOBC4GCOZ$=iKe_3BB4sC2|vX(i~Mg#z`JX1~Aw z{H#-mF_!q>B%=WnBwOmR7+?&` zm(V^lMVyfu=hewFJ^WJlY}GV7a&^C0^49aQ?8u?Xil5wQK1G)@fIkp4lmf*_N3jU~ z01yPug`g;qZK)re&B^u`IPN&)iREs!*UR-EGUPKXvP5%7< z=v1xQkzG~JPLF5#6yi0Hgel-_zezTavY(~t^u^jU0wxrOu)*rh=n^&s&F=MHj#+$g z3eEk*r;kHW)rm%~SsuEuH4(Y6V95r@rloTXA9^cK%YHkON!uCICRVuXiF^AeZ+|*< zUGqb{q%^>_XwdN4uh5m7lLJf;TE2}2LWm?XmeOjks8Wu$%Bn0AaJlujo6t%gmKcz) ziDJq(SW9WWJ^#761^Z#|Q>GX#3xrY_AcDEH(Gwi`276@1j!Bf7t+H0WPpeglQ1NJ+ zJR4^sGodtVjFQVKsDXSq6t@F&9^M9KOMWh}yp~PjSQ^d@e|SRclg#I@YHKOQav1{o zC-dO~0W2eJ!(#7mWK*24(!*nC;=i6e=C{sB`_zBd%F0wmG>liI5d>?2E6U4!?ocT{cZVHfg>CKF&Hp>P-m$`XAr%LLx3_u>GA z)*Qf1!#PQ}o1uuQG6197H*1c2;A>=t;9);7OPW!zELKHyR<#uWEionqh-^USUtY6x z8XH`TsvFbUL`85Bq{D5mjQ)Awt2!YypnP(1;CFWSZa4yzeVMrX?D|n?cj@^X3B=!< zJX8;Rtts;O3kOr#<)t7|sl)`tN_bh;npse&V~}9H-10Oowrg(Yn0+YXg@Zi#pPp%m`{%yp`TSVvP;~n$(A-K0u5YOIu_ABx~YKnoA~$@%vH>HI*^me z_b|qKR8(#9ZuX+b#e9`-WbHAH@ttRp_dOB(T8k05(v#UlzY{{XbJXv8*``n4Q#YKd zo2X^n2eK#214W~=D#Gq1e_U;q{UuRC=vjh%Xa4&Z`X}G-!A8cV7_~HK=czYP{zFIO zTK{xt-Dw~0?Yq*4(#ucT#qB84{`8>8FAca#nvn$8-m?`^{&Z=@8srr)C_jcKS%No8 zHDfyF$MG1+nbJ`%1u6Kq>4KLE^Q{xHGX=!n`h$8?2~aK4nj(v>q&CLf;+QNQnaWUI zKW^ofgJEN~BrDq%WPFxB(}3zEkeWCUd4*x7Au|JlGS|T3-plY>$s2_yxNTpKdA_1( z){1O0618w#=VWU2R}?>qfx{|yC?<5Rn!91esx;B<9SN=T&s=!u|HZEDTs=O;jSd38 zqjPN=9`3_Qs2r&lnc7UF{Xop&xRU@Xup&ukUDYcQa|9g4o(T1)*HMG~4{;A2Br=qN zi6*Dg=J({1+?SInqX zs`>5qvDF`(snbizpkM(YaD(%NEe}z8R-(TZAFDj{(fV??jo)4@5u78%0c|Xo!nP_y zj~tS1m~eH5nUB@@)$LHYU8ukOl*NMH*BYg%=l@y9^~id}7Ve*}Z+WpM z2H`Al?OooqrvA8kJV7JC%pI?|co%YXX2^Gd{dV?-e1}Zhlgg;yjP?f~74BQj~^jj?uOg4v}$On-^g{MYuoudvcSSStYiPB0uOXc#~!WZNq-S zRuQpe?HcF-ClC>#_Te%*KiBWdm$CKm$54kfhw*ID7;~v-f5zEZX@l9b*LIJUW$tLb zw6$5U7fSIssT|jzUrOJJAVQ?NT%4`xFGCjYcq@k7k_40P_n1Ic?LbSl;sx%Yw zcSW5`g_c+H)Fl>Q)LeU%)-C9A00UGQkq%TF1$>}X#9>O zeumzS?w^G}ha(g6_P)uLATD{z9YVK^4!?9~l`u7@H<%aht+0-a>2PrN7H>BOc852V z>qJLs%D9Zp%U54Gt%9Pj0PA&Mj_vfcCv`Oaa|*v2_&}L0(;-aN^HR3W>ZBH}A) zKEhRM|6u_>tOe_}r_URYd+ug})wk50-;khhODsL_XZymZ{)rXy2tR?#7AjlAwPV!t z=N(goW9uf#*jH}^4v^qu>huqBe4&W6A0H8jASZ5lS+k4*U^3Xpeo5$R|L(Dr@62c5 zQ(iAjuMx5SD!&cy2~i?cPFMk+r_Cu^|CTy&;;!SZ@*l-FrCK8H!^*Cf^_Klv42W6R zRJ4q5=4<}UjGq0;iFcSB`RDZVcoYDyV)j4;0py%Cfyx#b*_~e>=<4!lyuI-FGse-c zyu)7hjsraCjQxk_Ma7TGPK3ZN1aSTS6PA{qrU3Q#XFr6L30%n9;g^QOrmF|_jzzNT zzOxc$c^ql3vB4qG#qBv`?3kg=&cgR)I-^_)~ zaa*>CLkl&=r@7;SJRIFji4M}Dae+V`X_(C@;`<@&({f$%p&@rUXM`X&usEx=DF?3z z>}<+e#1-;-0@^j4) zqYq8URgh)@4f;7%eh%^8N42((@lf^!317xIZ$L8q@fMAu!N|_YxXz+ zQ0;(_4!(=;dNFd!i@*^jA?!Q$DA!Kdtu+rKi#Vcn%-kfb;)p(&g%N8g5vudNS=TX= ziI99d)m1Ove|8ANHD!7WVTIj7wt3J5`vISS+%qTya_!L(dx(FY^(AD&v;z38@iC__ zCvMhG5X58`p>j=bTqgSf!)pI zL=>))b8@9P`F1kpnm|XGS9uahj0}X60dujm7Hz=oi$V)i7;xz1nTt=P@Y-5Z6+8mm zC2v|jS!&-fLK@LWtGh)X<-r5LJ}Js?H=ahenruee&SVdxzT%ocXEYk z1-f>vs9u2yV$R?ud;O@UoS`@h$}MVt=FhK4D;;gI0C~yZSibY&t%Wwj;gDtX6hE5H zvPoIB(8pjVm?;RIN5Yo2tv>+IbdN|a<~b331jRx;Fb6L$3PxC!FdvVm83lg27<$~IAso%-8IDxIf@cubBEnWGXvtXKk zO2jd&q_%%LPFL`K*3I(!ul_5SUGBcCs{+cFtCafv0CoVlTuhT0Kbc)VQ&)46M_u%7 z0irf53wL9xhb1w^%xm97?J(^+{$Dz2M zZXs>N_nMM*aMhb~H|keFb3_(#4wHrHV!Ru@jCqSYQOI3^s{VODa39c)p4eP?qUXIp5EXQWqCFd`^HgL+(7>6Y72n9Lc~4z6b7tDC~of;Ox&jrO0!GFBiBzbxrbkkZb`2_J1uDZ*0PYQ zR@ev_UbQr6#0baQ<_q})kKJ3sBCgrs-<@!BdF(oOx6f<+Kto02o}F-R@QRz{6$Eb@@Y;D-n78WJZqDs- z;}fR%j_Z^!0q@DXnK%#0Y)f?s@4j6XenD382j;M0BBIvP=w@+NI?XGbU4bagTS8F$ zZ$*{eCIZ;fuDQ^h?^noZZH_JsaGF?k66^l)@lyeo#)-745-g`mk6{PrMCe=7*h`by zQ64%yP+LA0{v++PbvsBJ%Uq(7G*E@M7>^gpHi`HLBN; z9&kq+Z_~f>UArB>Ui`#bYjk1z}HB1IIHDzm&tevb4J`$A+?^in*r3z6Xt?cQ?4&!**?EI5hc% z+qqU~#70=ttunzH8Ey+8@V|6K`^e{Smp03|u($K5`H>5<27rHd*lar=Jn;0+$90;f z5hMN!n^W-q6Wg1Cs|!9}L^bU2L1gaN)3R&pH>@$V%ArItA>TuI^mzypiL$*TAwlf z>B)xd0}NL?*(Ruvd+ajT02S}y%>M>b)vgWod1J2yUkYM>}nYO=fV|~^P|Ud87>*W zqXD6Xw(O7D3%|sa%}O^krA*>iv{Dw|OJ_=kH?LsPGRXtuqH-x4={9#M2N2pNJ8^O+*%| z7V*G2WRv-Aw7ankf4eO5s*l~BUxfx64reb6asA*s?{<#As$qC8XaCfn>c>Z%>(^TY z?{~d+mafZz@7;8B;@Ya-(xD%xL{b_ADI!@a?BBAX-iB^l3Tbrn`|njF3I~O-s`x6| zQUup-CXlHQ=>zEYj)Xrl50C8Urk`PM7w}2vn6STnR{C%Xn{X>zNJ0%frKOV- zeq~!zOnwPy{SM##oQ4n_SzJAMyxgUf==UM01QxrTu{iniQuVdf<7XC=zFEec+Ph{! zMVPGB{FVMA8cGP^8R@@^w zdGeJDE9HM0H{(&^w>_F|pQI50?;p~NW%mc!PifcB9<9%bmu}^m`{gX2cC0oC2)cWz zPBu&rzBV2k`;vPDX9yUPInQ5Gc1kIUh9R*2GX%pRC}AR#l$LQ!6OWH)fci5a$mG7J zLPBajT7p`Fk@$Zs-+%@<(mnfmr2QU6>8J)-r>HqEtP^pNOdK(wOh6SfVklsei4hKv zns};cQYG}J#wEK*!YpG!J9_z44xS)KmfK(gJ=#Td$wUTm36K)PPVgZxR#P5;1${c?hnHk?amzJg@lOVp%|-+5ut!(!(9Fw7pYM*EhEM9 z?z+^&m(Ybuw(-6*7G&yG{nA;ITk66jhnXOENt}3#d-DdQ_;qa7^>J? z=yj-xLhrIUIED9yo0mojzlT^byqIIrv4F=zvL6|2CA-LSvi>UQ4>9`FPcg-LuHN@! z=ux19TzlJp-B9A}lJoO4XdJ`cj~`7e1NTG&M8MuC_3P zzMrFsTww?{Z9elqM2)sGrZA`F9gg@9A#}?CYYjShDC^gcOfFB*QK7J%kbhIa+&|G_tm3l!A4~&F7KP$ zMAfGXii$_B2OFb^OV4j2e>E5AYFccXK1+WgF!j>>q<5>Qo2At3ONDu|Z=s6I0IV~2 z(Id!e`HcIwo|7Xi8ch4i|0p{5a3=r%kMF!;*qo2CA#*;TPaEb;b3TOTm{Xb%9b}tf z&U2#{tdH(mcj`kKL#$zE@MX5$y4WZdL$>9j=?=rt3z`IGpv?`%jkXR=4p>hVV2&7ewEk6PF@Q%^H6+x zy0y-)k?MWOx8-Q;tX2*1L}>at6KV*MB8RgJj9o9lboFmU$9luGQq-EABK5|?x{rjq z(#-BWzLcHzy^Y~sIOsH_BoFurUFyJEZmmB)MITkREG~5#iz(+AkC=)uTw--)dP&Tqd1fD)I{QUyNa5= zsUR;Y)H4aYGEu>Sh_n|nr}-WC|7!t_O|3(Wf&0sIGJ}p$I|Pjq_303+Rt$|s5QVt` z;V5Ub*6$bJ`Nj(D4OFDKru#}UQS(FHz zd@8T)`e-zea4fwwO?4e4KK+!p1~#&B{ZHysGjDc6IbA@tLkd3w-VkfWsVzix9DOi~ zi*40#J?v?C_&I8AS?QGA=22&Nl-dr*)|B+zj`Qe^c)t`(7oY6=NHBtJ?S9rRjbrmj z4LFjyntrSS;dCkI%3M$^cH|QZjA-($OVVe)v@ci7f`#7;Fm`@j-ClCL==^Jg5$E^s zTnbhnANj=dt%L}(at zP}Xa*N1JqHVEs3nBt8Qa%!)&oAo6elUapLfYc90_C_hM`c&*_6Qz~gdHpIK*+@K31 ztst;Iw4p#kmd|@rFI~n8lP9~|`y5w~*S;0O(y#WbxaHSgAaqlqE~-nc$so4S^+ZhS z6_q6G(v@%w$zJY`YrnBz(4joT2|JNCCHgLd7CO?Aq>>nPo&7niG5V@fw}bm)L<&%b zJ(sjwpKN^p%`3G;tw+2Pjkn5*G3TwO@584ONY@1yCTL$d*RNf?&$>cXGzjRIQuerP z*QQcE^umEO!5(0yPyD@~2^SH{P;2CT*nRhRfj};=OkCE+>_j3qzJKEhX4;$^{{8+{ zwCTUW1#LoT;BT^%u&pwV=G{(D? z#+|$HMFi30FBKn>qWWPYDIs?#2fN|=O`3ZMnTY~R4+1(;0=NQc555Ce(Z6ReMWj&I z(2gse;kBn`KTkTXhcccEyQKNetGs)jnwFRPLlUuBbdu~nT`XVLE<&Wj)Czpk6py5M zRsm&>#33LjJV%1!M4@pW>u4Cr$Gg7uIsBprBq;!NtR|ppWNGoqo0bvR%zCZ*X|JT3 z3og$E+BvRqx#y^O`NcAldHAI30iTx&=awI>xXL3p-w&BcS%!I|h6xsL`o7$1R8jl~8RyVo~)npA3zy|O@=v)u*S^Bx>)0=D zcL0QWcu^h)wZriqJc3>;n42$?j)amLs9p@fK)vfPoQkCd-aQN;KT%@{ie6c3-m3cm zCr=GczX5Eh%r40M;Yto^rGM`97>y zQ}v#iX`FLOBf&qEfGK4k>c+QasGv0=%HvnTjtA@7LzXwDXUrW1E;2wk&QL*Y2<6bS zb%jVcb|W1NN92JC69KeQhqIvqnaq^4{wFy;IIqcI^FykV0$_zPz5~Mp0KvzG3lR*M zusA@-MWVh1UeS&*15$kM-5oh^le) z)2c$5EimTC|DB3vB&_A^^DaY2kkmNl3>6mL&IrJzHnqcwIfyPmuI^gixAy|n_PkO7 z!Pzxr9E2&xa6Y|kH;FImTSG2zSWj`q=ccJ34VD*92+_e3@hxmxquQ?*mU8Si%OAd()O}$`#vD&+;LP zZ?4;|;c4Lvk>vvV$>_|Tj*4$b8vE9&d)9@|P7{0M@icl16Y=Lu zacy7MN-Nr7K^hlzHRT8q>YLv|Ya!-HNM<)F?>MV1?}C3)gE_Kee9LxM3eh9l%{o7^%L}kynEwIDYDZtz9IzSA z?$aO(#udRJ0L*U)R20AmXzx3-0C-?80D#~Ftak5h-OLe|)TE5h8aTSvWP9#~xqknj z(uHhtPiVP=cbS6z$s26ocjwZJ+3`Pi@A`Z@bbv*k@qpwQOq5}b_omkthx5fWz4z8h zP0a<~YHoXrI~hwbVL1(oOLa)fCl-c?l`0Qu`Se1`u3t*_aEo(Ur``E^)xS|=#Y);v zU3K2wU+q-*=XT}qNo&7;6QWWn;D|=MK9^ zf8nG*lk=}~i7}z+NB0T*_Z`#IbIN43Bu4Y+Vvu8%J4DnPwdLsZzWi`xEcvfGDHZS;=by`H{r$o>Hsx#p z9UGY`&Bm~=(7iB0fnkV(ubg3r(wawO(kIzlP&xkD#rCk17klIP_azhSc1^2WhYsld zD|g~qm=Pe4#$Ef4SLC6kmJp(6Hwlfo+gH;I?*~AJGtOkKUM&nse3x`f-}Y~({gYPQ zuleMuP3ZxHDtYjLWFtTE!`=10<{JzA;`T58pKKd<2AF6<|B`LRsyW)7bFEIK?z3_< z`qQ>cbZOpntbegq)dPDGt>V^Al#&loO;mDw3e53&X_I5Gr#bp^h`vZU`A+{E+mFuY zY+_0RPwh$wX50V}`DS=AS#(C;;3i>fm zhdq~O*)|PXwBq0KWlo(LV*?6wzfX&P9jpLp??yK)CL%{9nniEeSyr;0#fE=UZxmzV zA>rSp-aallVHkQ@Rga^> z+4fMEjZl#>$@3CT6iPa+_JfnT{bO82_;)ceA6WduIo|3?>7pRw{F1}#MOZ=TB3b-% zQ)63yOuo05(MjSBwWX=|3n-3h%_2UvJ;u3$4-D&v-3ztK@M->6f)8TX5<-QrGk zx*V7=TdXwu}c+$^79Lj{1+kEQBwvqh73b=v%3HLMU&2y zpdacClDvQ;MpWYyCp6UrYo7Os1dKRu$}edZP$U;Sirf?-VQ7gv%}zF$oYfh%LDskD zigPy+9EB(PscFi`zm8_yE^0t0x@+Ie1z1YkKl|K`&HU7@G*{pIOk1efK9!N@w z%Bm`Kkp7`ua2lT&!Qj#Xb@W+`2|V}Pn$Uqd-{O~}!H+|Dua|3l`fS`YZBG=vw|1yG z&lkL5_uv9>jd`A1xH%sBzlj*6jkMmZ3sm=kZ-bQZFkWNsYeZ9Jq3F9IOy|HQ#ItL^E);IgKtt2QVjS_hv!oyv5@5M@PGi=^Eo8g08uI zr{}$jet&}6^8*m!=C=?n<2$)eD42&wtv?V?#@blETESkDyL|eaFBylUMcpQp*w;AI z!7v_7j}ksHv|V;&ZsECUJ0jPn6D#?1qWMYpmWEYkWapJkLQ~a+*#qtOqK>Vcfo{Hm;>Q48k_FkfRA~uu}x=SqUSF-bh|_yRy))w{ayLkUTPO0 zJoo0;w2zZd+dKZ&85}K}Fj8C}*Jy$E@?4$_&wNuU*K({sb?5VJ{!x88x~lZUUohe9 zy-E)1{5=iANK3~VHITp7WI|$M)6jwOKI!jWnJ&xhAbaxxKH9V%-^-e{(PLlH0&#EqSfCHyoeVkfHa8gq}y#VII@ZFHAE3T@pyATM@#=ll98e!<5>Y7y`x9>i%uYVsD@ zitB+Tor3!*=2jS9Sk)TD>OiM~nw;cRpRD^m>W_OZ=awSdUN|Nig@_M1=q{XR6+N+Z^Q|3{a(42^d6hnzBUd~)<8L52}pn{3`A86TL{3Dx#LXx6Gi zNN>*4VqxEX%t{@`Or4O&2B9NX@X9BmzUG3|s9=%Bz+;Y7$;Ja)`I>IukEc{+#_xM* z)NKo-jk75TGWmcLFF90IGR!a;*kYnVl9q6CJ<#Q1z&26j0fm=H!F(4&yo%ZNz63&A z*z!xo(l~om6v0#q>w7fZ@8DU^auTO1?W$iPr^T^-HZ|(R*{GT*hafY}Ou{diU5~iq zmp+9<{XS?hg2oBchijU?jafV5;Qx;14%Yc7F6EoCj(?4HR2^c zIiU$&&A4PAR48TaWK`N@Z|stqpHGGdvmp+=4jibqs$4d(@Jci0NuX7C zoE29(COM+Wh*#j3Vp@Hth$B-xQ;Y5SP|jb-lA!`sHY;#^l4WXavWl4kMAmg8~_ z)N3YeE;De|*XVqcQ5?Y7q_T8g##q?dSeI6+TMi{eCzt+^(2P|4-)%dCq4?BhldYF! ziO&_|zXLn^2zJ3N{jM?%YMBxhrQ7E}8m028Cb_jz*VZuoZn_J$E6a$2H9*zvHJW|@JtC}-|SpDWdf{Owlfs>l+J=YxcJFK1%!Zg*)(zy6;BJt5qR*Qz& zx%O%eUS(qdagHvdKZE;Hm2tW?Bf82aCN0Rw!RZRvcXTKA)u_ zjz1s`QrHF#R@B7HHvC0^M0*s<*EBaR7Io0}j!CFtajj#~L-U-0$`qg4 z^6J`h4XpHJvtwJcObb`9__61MRLgdiaD&K`r|Odf4kq3jA*lT>>Upm1!^NtQD#zE3 z9mxkziJ3{7CSszcpD$Ut$uK7GX6@9VZj69qx%G0bkW%UF?X8S$f1CeBJ9(^U%%(b- z=NNf>a7u2`2*ZFyml|FP)T*l_Y}dKOKaSs$#8(p=_^igKmDnVImL8Ax#3K30v|{K| zSZ%MPnnnG%aXqO9+_9cD`P^BRoZZzkwcO0pgdamY^N*zC3P1^K*vK5aty%zF4 z{`^7O&vC8V(H2PqCK?4)oTa_ycU+T9!MDU)P08XB-j$-80F&TKphR6w#$^>ynEY)K|>w`80;S|TOiY?K=G#@yC13jT5Js*||!fisA>1zTMX<}wVdM*_*?ZyEiK z|5)GPdHPa(hq{q`=ijIXrA=kaCl{a8_lw$}P)79<4p+)?&XE$Yx20OXvy^kY*S9pW z-`|0TEI`9ihyu>-TE4#EC4Iqmo?tiSL65Rf7v;fqp5T5%v}se6)rH9If`#Cr$21+x zsd{_>bT3ibRsGmZ?un;=7(x?l)eb9>mf+SOrxi4{4VC-*F+|2+e7<~#?bZHL36K)S z>WKhNzA{3_(6Q!o=1!aWPHo29?_OF8+5PcO8OFBXG0rZP%@B-BS1x<`66xG9=p{pcP^X#L59>r}!2y%pH+m*)&3 zij)x)6fAK6tr83M3Tb+^+#9>HY)Gi34}z_7;;djdo*Oir(2w@>*4e!Q!_oKG*_Jru7g@{lJb16 zNp1}jwL9I_m6)=m z2@N7cBNm`^z=P$_V;|)or40%Vl8~dDLV$ll=|J9nju0$Nx^Gi7B~+-3gkF6sc#SH! zbw;2bB~XGA_K-hD3XLt&Oa9zfw0I?1@Q%%i!gllP0$46|y+%YEgWk{<(q@J5 z`(kt}uq~4gEiX%_%#UgU8LL(HUf~P!~XkQg--O*~}t1hmP9FN138P)vJJwq^FvcE54tv`>~;s z_-6%Vfd>48>j0r1{3AXUnRje2GEUwOsoXwfKC139qu>%!|CB@Q1s;5JP8 z+k2?xT3q9hMkcdbk5u+dp_4h&bKmfm1Rl6J35ZezYJCGfG#t6<3i|&#JrClt09NgK znr?$L0YL0IkT;*9M;8#Ge_yw<1!>2G2KA9s)Y);?tb8ew&qGd;W~TtW^m*ijGEb7W z^sq|^q{w?n;+?+8`!mnuFFb0xK32OaTCXoqPM$8=6fN5P(Ed-fqzl2{uZmLP3Odlx zg@;9F_n(=eRIyM1%zy@sSBCO=%hf8;s>^0}>)If#L`EF$z@$%gKgW-b(YPHsxW-oh zxoTAsW}6RMJs1#DfXa?Fl5Q+{d#sAzX44{XEI|uo87isr7bzz)5m!$m0y(96R2=!A zs06@i76UwKaBE8u2yX$3P~Pj^!%ZzoAokw7=tJ9+p(1+Z{VGDJ1Yt2%Uh5m^S^OkV7bNBS;dc)^>bU&Y%=XL3S;qxA_g~wZT z#w)wNytN%~|M$gO6(Na1^@2{DX<**1AET|Mp=1m7bkO^6eOcep2 zsB8>T1o1urH=o~>uOKeMDvzj4JZ!?Mm`>O`s#tZ9!)s_aJ3vPOn%lI%O=G2+NVHSs zAxI_~`!KsD(RnE~pRbR&S%}eFn5^>xN*cVk=2z7iyEh72S$UDA;xJ@|4(}d`2MCjfW<8Sh z=JDBc6zeYuN#k`oq0@gL0VxAC3olHD7{l|LuU zC|g;zM|~e>k0A5+t{gh0d|;mW?c`RsOb^(0W@I^hdH=tp>2h>M=z|Xh*vW@$ABLv-e$Q<0onQcIWjNOqAFp|F4L z{aB%t&=-v#deN6{Q{Pa5m9Q1b8qy8?;)$5YWeQrcY)*l19#Y08V&jDdcoZ&SR?sxd zG;%7w5BFqL1~ zi*m^Ls$`n=aQCm+ugeWu>A<($!&~ng3HhJCW^yq@%LoN?eKMI#2g8+Bcin*?M<%LC zgJhmU?+jLPI~yvS`lw8W)XhKp8~dtg_Tjuj*48J<(9D}hIN4wJK3;ouGo*+7@@kCG zK-%HalRw`CdCYaiP8I%p^Ye3Hcf|06?}AGI)uaV&L~siwuSsh8U*BtdW4<}l>Y;!k zgs3)_9Q>nR!8|z7UY=_jGL9{RXsDv$Hi8`}M?s8+L&XmOxKJ%&K%-66^i4-w0~7QK z+~ha1t|So<6rs}T#Msi1YiXJQOWsYms(v7I{A!y_06St|HbGy!tW=`ERCMPLsJM9$ zIh^Q*o7-8ssmGpdx}iPSrBY@m^809o!?*Fsd_}h%c8-W?1%QEEjmCq8T@D+7W*o(J zu43x^nhLbP%0N&=nMMX*@<`@q=$-7e;jhvgN$8tCTc?4#zK278$JAwy%RAM_R$=`8 ze4IV6$oTW;h%aO9-zDGsUtV`w?N4@&sMN=0hgL~H(iTJ6UE8~z<02KpYhp-6Gch0& z9~@f1M9dLYq^YTT*zw?mDXR>`?JG0u8VACg3*|mtZsfMcc_)@t2!yAna0pOIi4PGvDn0$6n-6>NQ7U@3cHzP!L%k>5jc3Q3K9qnQv_%c2 z9eh2d{nC7MQ3^aN#PZ9oGiU;9u9GW&e1pq8*hDSi5hT1BVx$wUrFBH5pHQp$t}}i< zOBctgq{EqWYWxRVOs=I_$DOe%nQ%XygR0YKQ@b)CtlT2WfA|3_pzLGH=;zJ5J0sprcL_4lrk&n z(rsv)qXv#Gd%+1EEm!Qh;SwiL+$YM+{DH%I{s_-F(}nlCx9zG)SfPTgt3FS(`2*&^ z?UwDEe?PPp*$`bfvs|9cR!+shM0X&x6|_Fb!&pGoMaQJ)G>?mrFWzh{&>G*YN3msr zqY`0t(<^-?$shRMiUkjbmE_J|| znQt_>$VbLz=15PHq1p_fP%OStwu_vLzRE*VW?wmg;O3=4s(BTxk%Oi*hkWg!l%gDz z%K)(=iNI8)^@l2pP4`!jX$Q4rCQ6^KV5dvg!oHraML4o8HAPl5@TUX?&yIjQTVTfg zPZMQ`gEh+6i2|Vu^wA~5MVf8DFBE>&4iyZD-TMaI=V)RD@Kg|p2j&NdIOiQ|S|8ODBg z{3R-yxu9`1F$`&1G0;WDYx|dTe>v&X&$KFQHDZJ|BFWXgEi39)8v8n}fEqmt#vsz( zW{D|ts+A_>xWE;%MbYB&^1P5F?*!y(+pDgd0=2~;$#MNW!afz4 zx}eI_+!Aa$#*i6`li)K_UM?VprFz(98rEocXH~jLM7zD%IS$<-h7C}ma-3u~pCe~o zi9$gfWB&9jr2alC9oKFwK=nY90p-xv$u+^Ez`;l|L~ESOm+ZGFa7XM?(^o^2{GVVB0l6eO!?QNYw0N>2jw0{S?q0I5LZusoLDL1LS8@j=8LN#3oX5Wu ziomk-xMoAtR7%+EY0U0;x;y5E@M%__@!E>0#y`5^49Xy1|vcQofBxG07sT` zDLY51P8p)eQoeEai1`Rq{V7wJW1&C0nC5Qzj$WA^0qCXXXBlCRm=(WPeyHr6x zz*y$>l#-NCS_yRpPR2Q^4s@W4$&Lh}dZNt^zkB)g#YmM*lmKII@hS2jSVXm3y$Tv} zSHmp%azqeFC`cKrm*?#WwNd;e;WpZ``6|^7s4FP=Ip`wGNjt-f@UX@TLT@c48?~ba zlks5VP;ToJ2M@VD#D4>14SjT_ijvmq;E0PJOaAw;bnyaRIEma=nSwj(s{i7GFc-#2 zJ@V`;1&#;Uhcl?RvAPDmU?COhPW@4w?IIK3-zexkt0ol7qRIA84z~gca3s6_`EJw* zoU~;pMXeXKKBEGb0XWO>B7yUnZ;+IecQP(Uoe0Dm>Ho(>DBpXUr*I7m2yt;#*b+_9 zu2wpTu>QZ-j$v+Jrd< zMIYZRW%il_OV0dlKCosDez=9YiOXs`*C>vil}+mRj#yz`02{G$0qgD%bTCnW<0XoZar0f zMK_(#%3FWDC>p3dG;z~hR&vT!`zLhhDQDq_{oObJ6o3?Un$rcpI689ZI~V0g&awLW z^6mLWmHd)fUE_rZ_;0orE;;-4xGf;9;Z29LobeB?o+byhuOQV|u6p-Pbq5UL z`!GD%3_=&Ml+}Xj!uMD9apVWN_ozaELC;RWB(qQAEglw41=U>vG5bgo)L2cx192)! z$Y5U$k>m@2?>8<SZKl2x{L!vu2uTyQ>D1xPbuc;R|Wds*uJM3rhrul|4M%Qkk$nBTRh2&*= zvA>0C?>#74RJr&>XoOm^AL1c?u>D$@^QjzcfzMH2u%E$LN;cBu*Jur{n)>@7HBt`W zusjKS#Unkw_QNY@G_|rKYHu9hJBC8qrD`M#e57CvjK$QUMSM zwPF4-VBv9t1o4h06^SyE;sKTM6RIwtgJh6S9bKaxq)i4X2N55-sVdijk6dIaokqdA z%wyhTU6bt7Z`jinwTxQ|_$~!&c8&=Z6i!Ev6at=Zjt!ixZ9?ga3M})zSRvc zHjw=LcxCr7fI^jO2Oew(>CKvH@aQH~a32G#w+S+1gZ0=s|3f~by?tufPXFEs(nNtm z4e=3w;HZ5^-d(9D->&?2WDObg&os9^9d3&&9@|77>YZ2T<>Z*K=?bV@Xcuj(f~Jdg zH?4Qw+hhcP{=v#B>t0+qAPFqWDKr`$DUjr0(fH=ME!-`Hh5in_>@H}cs$zs=e7>pU z9;w*olZ9>&2XsLVX_DPS1wk#2FXZBAME@7WmozB~;FkhTH33+KQ4n3x|?&DpR|7ki*AXUGKwS1w|6&8Tf3kP13K$^T9 zTZE6YD8MYjl*rW z=J(HH1+1xH4IBu67|1RHOezbW`Ar?toO(F;1eR4uub_!h3)2}SbMaRr8@1>!4cYob zqHA>@2;f3s@m*-;=M%Oii_9;+mquqFFjPTJ!<7h9$w3s@o)CH>%mi=l6YxQA$JO!e zuHL*K#E=;{69;tKfrj)mf_fN54R<`c7+%UyA0EbQ7UM+Xg~5-mgPM%eC3f?D*?A?TLzo@-ihp=1$?Zz?M0Pt!Ym=V6Nmr#( zAN+yu_au)^sHcODl%m{YUi5hB+~14V0TAyeMTE4cV;k{6gHf#k58TCmo0}_R!9T}v z_C^vYAuBMjTK00X!hlSF!TZCw#?S7un}RY6G%UH|5*5AH=<%UL#h^pRWU}a9kntD6 z7Grb9Lw^_22XVPInidLt#qjlsT+4Rx8L6-I5{{=m8>GYuRaMSAH4A&4Hl+aotFp(9 zd0;Q)CEgOl*E~`^M@82>H;}4g)YajDf*5&%bUDxj<)vUmUN#_4ZMK!{0#E6pt7U>y z+w;>{41NXzCQJskhPtV`(6c$MKSSLPE-=?uytH;m{Q~p2_*N!7*=Gxck#u z?mkf7e)tb4Y;G0+Y(?4^1q^$$1D5u`N{kP?b(25ly-MhIxgtptPEq8sx}(v&otaDMXN2xRd^2;8y5y0^^U_W8lc+EX6_$$s zpjKy{3dlbLgQv1#34nYug{rC#PBG7wi2fLZX9VuR;}CG{e^4XV$5cAZi1mRV>VvGU zmR>0dx4r@Dd((A)gl^m4cJ>oyf1X|PN5)w%|C@h?f5qL-%{g#3n)ZBusssOv(w^is zbxICE9yHNEJ$dkBjQ*`3`R|D^5qRjv5rYZE>twNXjlx2%*u{GbcPZY3oXPC|8~1Jp zbO!Wl?N~_jRwEzKj^}z}-rX!Nwo}f%YQOGMwxMcIh7jvO@}{mz%-mC5`JPNzavdag zGw*0nehLYm!p=+UKbnBZ%Q|kOGe?(*vuRo^u*urM zto6*DOP-f$n(alm6aKSQCCR>T0VR&Z)65|@SGCoq$ zSzT)u;-wFEr8cYKeKqP{)Mru^c4%;RisJ+g?gFxEOi}KlTCA+_B*wq4r~D4C)N-)>jNSV-`kudg=S6@JqB zO%J)E@lOhw=;@LxW;sKm9b}J7eziOm5ju*i+Dm&3 z=EGP2+YbU}I=@2EazfTiX%^Bni^R^s<^GI0CSUP)yd=8BLe{jYtA5BM!Kg^^nd{I6 zl3wM9xd8#qQpESUOhvDL)UC~(P7hZq=|x);c16{tyPC>w9|e?Qk(wf>(~97 zN>w<%CFS7tCJP=d`+}_@bf0SW#8A}V_Z^F7m8s17j^<&b6SPZJvV_$XpVjY(x|CR? z)N==orq_;$+t=N-=F75Ik?yTc~8BX{%;XK@xmd!9ON*S(NqTkfLEDiw5#esBq zzk8%+O3Y{aV&{v~z(JKtZabkwW?)qkC@c>CAa?&lrNsBc;=4{q0k+VWVM(04cq%L| zD37rhWg$Y)#QC)-{Br&W*MuXa@Owa4pG_rkoq&lib++r?KXH5SrI8|uTz$f9 zxofqmwhJk`3*aDTl(zSUEAGN#6LSR@JAR8kdx*CHL*E#s9(rQK7yP-NBktvCX`cAt z6gVHNV3T@&s6!5hC`HRS`UNe#)XM9MP_jm0mcVa%`L1E@z+IYg{kR6P7o=V0G*FP+sc! z7jZL`#c!%k1;S`+1{*~mlQbB3M3qhb_^TnCt0$uV6^4?8aFxK|)8Yn$J}lu~J-mrB z0lT-x>;n7@h+)A zkeuo5BpXpjQz=Vb+ZmIK8T1|#lZhn}0)@;M06-L@wK@>FkJE>FTlPtX1T4kWhRQNl zV#4|HS*R<*roFjW&Zo@a9qN=A>>)c%O3G+Fd;RX5U8BH1s2ok~4}=)pMO#aVv*zXq z6%tXv5E~LE|M-b{uE~{%{4DsDAt0P7_qgFtfkta_BR=i9ce#+|WZY1R+$-|tpV8UN24l6!9I;O8Bpo!ymB8H;Q|M+t`3l29yLV$acUNLY@IY<3Jd(7|4h7D)LE4LE)aA&C^^a*e zHVSxd5+p`8Me(~1Xlqx9+H6f>C=V-gOppdj;?WN=niZ<+@)lfzN)pY7W$us`?S90X zCut8;ZUv2Ldl?iN7}Kx>#5??+!F9PcIP+KIkVGENqokcH2pcFv{r7mJKzj=-lE6dk zHDZK=sn8Je>wANlO>jQ+|Yi1&4rc;^h$l_UHl^hRVgt zLcbBLbSKk3)VKwti2y4;V>?>B;Fe~0HOqfw1I@Gevh990Fi10)DhwR==yi@pr_sN*uk06)7_Nl{4-(AyE za{+j+{!~W4!aHm9-V!;k; zjhy6U8KFh-^HrD@)!WHpY~^)VmCtY=1ei;KEFv9jV3!eG!IAY?5HWY@JjGn=Wk30SK*~l3bo0 z!(8$E%T9*EvbP`M zkKJG`JCukd^Hd`89gpDYxb&YmwHq7 zqHW|6RUtQ?Ci)V`zc6S=AgO;yx(3gW%_oNJ3%s;k98 z??rhRh0NOfW7bq&@!J8&G{gtgzW>1Nsdq_goTL2vg*@}q)xwiv){CciKw`RLxwFm+ zq0$9R`|bFV>?(^7NB2m55)e|3NN<|jQ6NPxpaltNM20Hp63Ky;ct0rF;;JC~SfGT( z?r;n9{ashj1lHH{^D`kRhv_G%-2F{CGOEeDIf0X7LO4S5I6~nMj;V`-Stj_i z+EWaYA8NS>>iGv2Gbe0}9vDY6tW#uHNrbv!!f2RdeSQ7;W2JVo%#SkfiN@0e&k=+K z_0gpKeIT$D2ld-1y3FNrsINCe-!tc)DxAIWO9x2Usc^mRPp!Hv5yzE@dm~38M6sy> z$j6|;_h-BngGU1)^W{}tM1ke^LK{lk#gC&{1=sv#kaeSW3Nx4$d}43eADnPNwSaa_ z0lG^Lx$({}njj?sY!028%%q}6Di&5|T7sM;6rSAa!t=sHWXNvVIy!QUtZhz5u{hN( z)SKRwCehq|CfUKbA%TV*>v1sJzD7%72;(w@S>|Fq><^%Zlt~cDB%qiF<`|SuuqGDu zw@AeaGtpU%w<)3h+6W09G$9NkK060M0*LLQVhafO1;>=T?y_+-DKd~)A$ukM{1(Me zX_6qru1g0lb*D)$r38vmqAF+XfK4_^Q0fU~ym z-vla=Mx;n1=pW7~2+-C|$YzC<700mi8To2ao~w;^PJ<*v`M_*dRU(oKj;2aj6J^2} z#hu*$^`fQv%M(LXugHoXJKfTf+p?xVee7S30IY%ANgHBJyIbZd6C;zBs{%)=A{n_q zT5|uzEFId5J`7MsZVO6Pw#`gF{{!whoO|whfA9M|o;__!O#WpEQNEHMaSvxYD$ui_qo|18&v+VP zBX%Ew3RFK0E?)`u(V_U7?V$AM~67eQsKEJdg3#b-Kl? zuBa_+WJ1@N24DV z)YS#ye(=>-iF)%R+kd#bBHArIR$}%NW4;lUBAN0I`st3d#22N9C0PkhfoZ1WtB0$+ zEP$o@bzb?<3h5_74zuwUBv~#_si|p+u*5?lc4Kjs zHJ5=pPVd-E&pNU{EJiAmya-#F-AI2||7}VCNGFg%)0?HGMhk&91tvN-; zk$hv3o53N59!p?=9dXQgFMFgbT3cV!g%Q1%9}~qa(cs4}#tw}>IE)|1486zJuXsvM zyH@f`2cDLFUiRD)DaO&Z6BQVaCzp*r1<*LEfkIgN7AJ+kd$pEOC-o( zM1gM^J61e`_26UHV9HB;#UB%{^9;+%JErq)(Sq*i%lKHuFRpWV;s$)+kc1oS zscYo?45-cP5X&OIV)kS+5lDX@2?3I(Wg|mfq<~^lI=)(6lHS_v1=AUI zNm##qg@~Z;168Mhf%1=dzit{H58?fe3jFD-^)4hK^ z1Zh^MG=ZNtQT_d#sm}WCN8O>BUNO&0Om;@?JnnS9GZ2E3CD#X(9SZN88ak={ZWh|^ z1v@bYd-Y$wF%iUp zRsPKHy_ty7>Z z)9bu0!_*-6c_c{jAPDcDYr2*wC&WCk+GE0Yw?4!-1{CSe)3qUBd;bxW46t^RKo<*C zT>_eAjObtzqWugt$MK%iufH9c>R-xD-o{i^MJWBgL)|s?GXjxRJ?g3E8|w|sFq8Dz z4eV99@bT!I0e!yeBZS6*%U^texy2YPb?NChM9L+*S6g}_EWs=Bhn91BD295V>PPyN z>E76^gO1{wJ(Xogn$*o;yEp`F@b;}+aZBBff_Wq0--Y6rW9gAM98_}8$`Lr|0eJ;B zU6su@(;+IHCaO8Ot(>9j47@R)ax)PEC4?BTs2HpE-7rbcVq?UqzBbWxM2pSP2s3M5 za?=<}qn}7o^08z*2yq#td0FJgms=;O1X9H#j(e`I29JN&r-PH200a-n;w2kb1~*Vt ziNIbrh&-|CT+@~|^Uhiw)gx<6gK zH;c{3h#n|&j~X?Aj5`GRBMkiNH3J{w`#9S192zQ2V3$^;(MI3;emr~Djc+kBek zB4Q$m1bcz}csITDeX;(h*eb<)zu<+EOjg4Bg_ML@EBafevaAE`&gl2*N`T_(IQ<6# z6V}t~_pIyhyxazDBGb+jhoIO<3OsUxaK~!o{!6(Nh!Fz3iar4LEQYRy^d2nUa#Fg7 z1D2Cp{#*W}`yNw0qY_mYQN3%Xj-q5-cJRvie|4`H<%ZOULo=o#@0x3~6}iqTMzY|Y zbQO=SGhK%PHpLukT=3tS)9wP9(-IFh-4Ql)JjdNCgKwe>HdyrJ6f^YOW{gN+ zv)5;Z`d&V4ub0G)XNe4Q^I zpdH%uq}JkU)#2(p4^Pr2bf3>WJLt?*KUL=roR=@Dr|Q9f!NhOn2pbPtip%RQ_s+9B z-QxYUL%3<4%%lq;p5d+Bjd8A}2TM7%rT96dSiYyQRM&LGF8xhsP|;k*LRLz6g`Ur* zmSf-dSBeG!S<8~&zU(=w;!%B>DL%VZ-W=FWwWM_b z`ay~th@!W5Ra>ID0HZ#L-wQq8`i-?-#_e)VUoPd}m9c4+mc5U4L(+=CMi)!yZPPkXJj-y)-0}hls(nle6fjh9{BuJ!)0v~ z02=)w(xl15s~KM9`hI8P!fT4h z(M-Pvj98*>s$!!;J-8I_;eO-5YXrq%CIva5G z?!xJH{6#BKl9gpkn=loLYlpa*D{?o8;-oC=$^v>fH)D|N%> ze85r!le_n%?2^)LA7N#wGf$mb@7gVp=1d2krBsN{VqI`%P+7ND9Mg?%9Wad9Z055H zd!__eSL%76D*}7JOS@=LY5bDlbZiUKn1^+j4u7SSg0oi}UXu477sj9nWO{M^rgmR( zeHh!bxJuKD2e6ag%W_l9qAh?7J68^e0o1=7q!g7C~8E?lFK4r z(##P?zt*gu>)T;%SRq+uBmOF|oWKNi_tihuO*?A;dYXFA>C?dX{%wEac!SVQVzb@r zoLI^g;p(XT)|AS`#sNm!Kb0mD&+>{A|gyVz+s_SDY7^?B;r+S zEQhe&Qcp2NO*t0jy{2lX9Z`7{S|4V{k6|8VNf3)Yx{>f|n}F)2HhV_nm>@Yo%TsTSaa zcVc=Ri!wfUeFw@&fPLCKIw>X>(5_V`a*aD3>%vnD*px5E9);l6skZa@ba z4_v^|=@WKUfk@81o$sH~+;fE5oPIOsi&t8kdVJw&E?c(C$q)_AE%I#)cI4p8BIp%g zqD0v$#3U@RoN&4svoY&g$h5_WjkhRN06@r_Pw3K24)h$Z)HZ7s7T}{Tl^}xH)LT}> zUth%ZtliOp(Gk?sAXMO16nVe+YAXbY+?m$$j#^iD=*y#XmFiWngyYW&JS#oIv4JbXy3(&bcpYq5Z4cbLOD((Vt`2Hq zdrCvyPMCju%^C0mk4Dj5KAUw&`8S!1p26clFjkxH&epbV$G;qk*Fj}qplZ??1Us)& zQikFuzh(Sq|8pF3y^s7u2pi{2dsp>QW-S8sGyAU)R-Se zQsYX!+`|I{I~ryVKHag$-_h^r!(y}Z8#?>v!S>obmDNAAO~5!TbKQWLK1}cA6+?XdiQIv;Yucw7#X}do8*wbsp%+ zzs5Al;FB|ljscYk{Qt_bUY-s3L#Xj!BWJ|`9M)fFx5)l-pwszfeaWoxezCwd3;mSdhiRJslzyR|2j@{+s z#d>oKG6mx!nrrM*Q?(dL@z7gWyvbE8`nD$^c#<3;G#4t~HgdzF6cBbL49m1ZgwAAY zbqq{#qxHXdt@4O@ha0tD6%QDHCr7{RXwX0RacHi;0V~%zE|SYSSCV!{t5{o{=EGqWE<2@ zIfv%ro0B|CjHY z@X*89A$rcs!%e;g$BcdLFu3h;Xe9&ByxTS9W#R^^IWP1q((4{H0tZc=iG(7OXh4Fy zUxYyTT;KDO?@sbl*Jt+?t+q`ZjayE~P2phnZH|&jA<3tVzArE9MMHV?yEBxcx8QEr z%u_u8@R!>5lfQ;%&?}WtJlm^{xoj+GKG}rY_DWUAne|)q4i3C&q(}L=6h2pH+A4oW zD<`gayCI_ENp=YNTC+?Q7HVP)swn4PedKxeL$7}aLy~<(hpy)>CyC1K&gn*aG`np( zw)-be7l_0&LKF84C}5AW485YBTxAO&`u;%ttL+W$>RnuG=2x+1A_pvwqduQ$c%vy- z8{Rno;xq5stW*)QKl<4V@54IGoulfyQ_t`(L?v3N_uqL44caQx{Pcp0?Qd7@RcoPU z7o@o{2xfJUCR>+vs9bxJoVh-Z$cS)McPyCfw_w&P(F?<-1g@9c530(Z2OB2|4&XY9 zV=n_G(?2ndlLB*^x&fPh-gu_4yC?2Fc5VTkXr6Zx1P&A*TtKAu|%sj$Rqnof=Iu z;TlYTySTH#YnGD_qySki&^r6~Ge+C2;eGlL+)Qs9fXh#TNuK9ss+2z-YWSNWH;KIx#WZv%UZ)h=MQp=dr zUNPR!8bn5CK*oLP#?s5r6=w%^?@RcIG&Mdiu;YMpK5eJl{AFV-P?uJ>{tM$%^xS^pt-OQ)3s-jv{A891me0f5D!GWV*MP5hzo74xI9B@0Sv z(P~rG3X}z{&1Ja;0#uEsuFM09ZFumQX7wuK#`+tLZ6(nCl_nmkGG~vPtX|@z5M&j| zpA7r09_>YKo)fFRAB4!x^FBRa~trqxy}G;Biey@2s!(t7Lt$kjFa=pyqnq z|9zPl7Y!~;oA~_D6fY9ytwakr07xSMas(i8U01=g%dQ}Gh?P2g^6eC9+3qbzYQt1S z`v898e>Wvdhmq}&SED#(u$5sXZFnrQW@|XLM@rtO9Z3NvfQ{7wua}n&y2TntTexg} zP#xzW`#8uReV60I1&Y=|f_%MA-hPQrT zmd^|P3o%IAjD~C9dmnNl$DlUu3(w~K$0g&ORqHMa$Uy`NxeeXqg9myc__JL<-{falISj~SfwnQqvA1v?FZjyDwv0l$1H((z8QDjBpIk2}_oD@{wq z%}s{~W%)d*Y~>Q*1VTI4c9-hsL*sq(b<9KT#Y95v4~mXW$c&$u2n`?(tqZs3ne4wXUhbwZ<$<1+iG-MZ$L+Rs1?6YL$fCFQ zH|uJFjQ_xAw$kJZr&>iJS#vLh!;8ZeS)O_P!e`RzM~A71Dt%e$s@2$NkM5O+ev+q4 zy^AG$PI|@%qUEkDKM$6?zZwCa(Y*())%V{<-K)pRaANQXyxLXfktGlC zN}^pI7_u6iLBHh8D>AGE)ZZH^OudlV$*JN2_>zkMnKxsWyaZu{7svD9@lYfc`qJ=31zdk?X*Z5K$mk;!jMeYSMG1!iE>_3We_c> zU+xNOTLlUNSdDs0jRT9JtNHWe&PmO!e%*)~HB4x0^z@JsfAQ>Za6@>-c~upZsT)Vz zJ&>42l%JjR=nV5gQ8O&QC57UyJff|py zy_xXV!Ge}J$PYz>uXx3;c{M&lyjSe58z0!|8P$56YNZATw@wxD6%``DXz>Fr!-)0~ zX=LaCsh1`v6OjImMZ8o*xq7kRka1poPa2SB%T=Jp; zGAaz)pCpItA08y2ItU)+R9Iy1nL+@fMT8Q2z=m#yU2O^0M|W0@P&t~M@VX_=48vx1 z$r_J?sz>-bxx;l%f*Mc|pR!*p9gyfkphZOSp_ITy6Ict?xrA^*kp0H)96XIs?B@g~ z;I?7M>+Bm;eZKVM6X}b5upr2SCy#ZE4p2kl7y3r>dYMk0eE+DYMrH zPY^mEV8KpCZ~_cf50?Oe_5VazrPNw5B{)+AF8r!>!sI;&q1T?)s~~O4a{I1(?I)+! zL2k{?>fm7uwUqaXH$)#$XTYiAZm>}aZ7E3vIi!qr#lemM_;IJ`8b0X7glO|8u0*Z9 z(`GhE3r|5*l0mug9*1ug_n{i7#7_;Dp@`!{d0KPZu_f}fPn7daUGZJBp zP%GX02K+|(p65SI0)1hqHwP*1 z^dQ1a;)}X->~rbPO8Imwt66D1VJ}m!$S^uPIbxj8hNOMb9O{I+(ADyRfOY7ed;h_y zzK!&wu}%q_w4uo$#gpd?Ecd}pPBu)}hL#6?xG?h^-6bl2o~OfV;TC?F^2bxw4|)e# z-mFM0SOvkw2at9afSE?`o7X&sx(RpJ4o4UrgL=^H{bHMu;fi`U@5Oz&>R|TTbVEq% zvZ=X$B+h*)P!vc(!b*61N?}l&vZz#()?}I)`9RS*Sy`v(=xib>o~~3*$5zG*bi1{) zv?QXVG5GuX!J&w{c_|7(w$^7)WZUHVb*ZoWjJmFGS`Fr|-1bC#-E&m~@cN$hxv-B@ zhb}bZ?`qMJD1Z^Q$nclO#6uM;#1SurSlq@b)HlYNg*{irf|p?TV*%uw@Z@g}DfX?L zaKIwCTn3HOaKI6G{2~Pvr$Y@S9-~CUI6{}eiQyNji4`^wRt&g|CPc0hM|2~?r42~{ zakw0Wg|W$~W1(A@N~CmR^XDeW`UsUBoJhw5#VD*rtXyM?!i8WHO2?KJ{a1yO`L4m3 z+r~fN8R5fD)FfrFf#4ky$}1cFiUby0*KJE+u`=R)r^;!4{UUH}Ple*Pl$9htfe5m}41 zha{v`9VO7us!8ZBALv1^BS(l9$|$6Z_k9h{P!x8UUY8xIz@HduF45`YG0Ib92gV4; z#9SfL@gjuHl-~d6oO_htI`zbEHLcDfswrC^>+QM$9;FujlOJ^r3Zpm1MUy?d z|8k<*?Z7*(>HEF(yc4-1o-3Bht4_mi&~B%TuM>A;BYZNUnEj@F0iwKzREMdGX)ey+ zcb$J~Uv&4v3)i{BS9U8uE;!$m^Ew&mA*nFuD?Ic|ukDq)^hKxHPVsms-3ynyB^R)2 z!VrCN!%K4hnlv1}NVbc^*s1!G$GNCCvFa`#PHVtmLzAM*jP;M?ihT`Q4>_ZZFFqvi zFv=!bmK^P^jDaFmejqMEYxF=K2wmNhOEE=%9=Y!!5T1s{03|k->eQ-nVN&~%{887K zFj%`%OvaMuZSl}ng*27%cs4nU{0?zjm!ro(UCU+f)u_MddP>8c74(~J0L(A zcZu##8ouaSaWH9eV89h9)aT{K^}1hY=2xw#bSMa5A*O*PGwSFt8z$f&LX7hlNaEQ9 zH`wsCG3U=ZaU8?X*3)c$mF^19O`-(Ihs4KvMfNJ~6)t$5OzC=OdFNpAe5QA>u%3Pf zyD~iLny}GdqD)@m3M3r>z}wkP0f}RKhk@&-gm>Rqj1UMprQ1oFT}OUO{P*C@FB$Y) zr}mHD2v0e((*_=r8gfm=n|B!i_M{r%I%x=(RWy=D(;4-fct&Oj8rwv=S+P8+z0@m+ zry{5UiT>2j(C&<6bA~1etITynyvIx-NH|+%}$h#)qjoDyxRii80Ox2*6tp zt6|&bjY06CW<1*CyFIo&f8bx;IJ81>ca>gl7l9a{N7J~Cj)JfeFhR%G`+myDm&(9& zt$LdzX~iV@d8k3qaCa3e>B>l5ox!*5vp#(~Y#%qE*Q!kActY*Lr*}C^aDszBN;-Q^ zs(@C@e7ym7EK{NX&A~xeGvbmLfya!dG6xv^-?GGjCtps1Mz7dUek^~!DY#i2HPR?(^ zbP-x8A+w_%5P<~62c+gTTOQE8&rUs@=cyu?Mt2!W79b6@(DvQQyNI+01~1#_C_%D)+|Q$7W{&6K_mzt^^+TkZ z2v8GICn`99QSMBBd1%A}(py&>odeL-Z6W(2;vla55dd)4*z~izytJX$h>zFb)l{MY zt;%l@-p(htP9R=67qbCrzsO^STm94m$#*v~`b?Z|^D+OVy$W3x?eCk7q{FDd)lIq; z$b|~Qio<}48MUh2n`41@|L{@woLzn|;ExCws{VAi8&xHF2VDayv=6+u`Rua*&of3^ zs%B{xcfTJ1!MFgGZ<>RbZ9~--^zB{UY5#0pJQi)ZS&+z2+*FGAKf-$FmtpU;dX{ZRA^C)27-R`XsVHVHI z^`e#}f0igyPJ%3P_d&<#ZWzLZ^^d?r;R{Rf{_7Trs}Ic&FZiBSa7Zy};i#idiF%HR$)HPsGbglE?mN@6?gZyp{x{Z6^J^bi6@s9fx2 z$E#5&(dB_da~NL8Z9@wI&uQPpa)?uad4c&CM}jwgH?VF3 z7GE&h^z<7m9+CD9xMcQuU$OIi{z&^I7nyyv;0_??ynp<*2N*?JThQDD0Pa`>%HhhE z*yY2Mili|)9NDcN+(~B+igNyHf3VYcC9tC3@pI;flV#34;ta{nGb9#w2FWlVZu}{Y zeq#&_&aQow4<*V_4ct``m-iU}zP^eSfdpTWFxoIA9Z<@7hs z(I@=)yYsyF=e#*=9zEM25M*TiQe%exyy1C!&*u0wrrJg6|I2kzW=j(^;}3&CgCT~!;0ZQ*XfxMI#ebKx*54&;pS17xVO ziD;LH5K}};?=zgQ1NlFL~n+Ua1J$tRlq-vNn}G>9vq1LjfQ3H|M@jN zVJ=QN_W+h%n%`G)AkpB(ASk%LFbBI`hGcb6Yww3&fPbNRe|+-9rRe@z#XJG%)ot`b z@E!(8Ei^;PIwMMl3)&=?&3u)49!RP0QgxUsEaRya_m9c86m+B(nEp* z=i2-a(u=Mj%#nOR=l;;l?;!aa`4^)=8Lv>i1x+z~tA7I$Q|;Xe?uT1JhryL@mX){j z4@HX*lxXc~YHcW-axrZrX7QptV)(*%xDr^|XaQ(pmYP2BIB72YR;#10V0N z%Du8X?Ol~Nweag){o#(izgWj|u9Rqoqp<+hZF;4(R}4oJJ7&RLWm=~!IhT( z$yUQ7nDQNLjGnOG7Nq{7dQa2a>hdfDZKGYJ1b`_kw6(LwM0uyF5kQ%M$H3$*0AL3p zRXqdb;2Y{_l&yviFs}pIQ{=RN*z^C`TL(cX>`K7Ty1?F?2VwtlWsg@EquL1yt+H^k z1!x=D>LS?$-RlnxBr4L6>=~8APytu1LB6uEkO2^x3(?t1&PVsklH~M8b|2`gdZL*3 zv*Xy}<^AxXec}7h>W}PJs`eG*#I&A3D+w+n^e3$4$G(kNXIFqLB_rcRGOVsp^t4EyyP@m0_{EC&=Y_FylKhWGv?-{{2z2@><-0Jg!6@`PgJTQPv0;D!rU_Ge*vm z3%Z>IHrJK!p}RMS)LL7D{f(iAGmzwF)FMdX;;M|$!Q;y)YBT|L4q$eIAy$Qtx{w$(s@4Cm2xLuA zbBHYnwQZ3yAiSPczf}#vQ%hxJZGV2vL|UFqJ9k06;C~N;)1bNUj@xMwZRcT(A6x@Y z_=#n$f6JIt?9E9`fl>-Y+xl}5CXfbYaJA>1j#h$?eu+Exw!G)tLnNDb?)6()Mc^eE zTT_AKTvknvU?ZYr5g8%`8wZu7!s@Bp#W*OK2Hgih*0Z^;G&tJ=6wO8aMIp5-psuno z841X(Y;%aH5u4!z$mk7QR?(<1m>UfGQx^ZaB>rqTkn>mOBnqA{>?^a2DsJ&B%Zw^p zX!sgi_F0b*8ei>Y+k$@-Jk(#J9j^JJq(pI6Hb0jH=lWm%ra56OcYn0@aa|4;SgJx*XPhJcm%?i0Kju$|D5<_0Khi` z*|-WQx{TPj3Sa|}5R3c-E`q^Dw4($G7N8TDYXhhDu0KAna%ykhA`yInb(jWM^rjQo zU_-)f+Y8_-B*f@ZRM8lETkG|muhplfR51pIF(ln`LCO3ZqGaYk4AgG!M^nd~iOc&e z%wx@nshy)vc%2_IHr{u_D|U*7V53$0i-=oqaw=?7Z;{Sf=Zl!P>Wec|Jp}dI=7)yz zInW(A5Ve^2k!T{tF9{rJ!?XRINU(f1f=mEK;}CyNiZ8d9XC!3!wlIOITm*X+4Bf)n zuEJOVcyHV=35TfXPB8#TRtzkRHxxo``dUy3c~t17b{1fqmlp;!3345tg&#i&S=PJm zDpHbv);7<-9kXFw2^%}vQ0DW!Kbim?FLEA;xRB<5Be=+9-q~cYzny+y^y1$ZO_99E zkcsWM|M{{M8#YL?ChLHnkUMf*nI>-JzJoclM~XI-GKq5KKv3-3J=+b^;sC2T~-i zsGf|e-go2P#E1UuCWr~Id-kufL~}AUFpwHM(-w%9FqKoP?>_90b28cqYQB@FHr@s- z3U+4dXbEvbdkW0_F$Qdv8WolWWxK&Wm9DIyP<~6uCMvSt;y(2GFoS#7y&sf^z@4`z zaw46wN6;EfgKV(Bw5U*mP;kHiz2{2(;q@(D4RECqVtE>|0|yApKqiO~KvgayLk+rm zK4f=XxKu*Y?AfRr``atdY!5ODItP7D)Gu_~p*=~@*qJnOFu30F$@AVl1N_}NCv1N$ z5PBDRSdXlOfoOuEynKRqr%rEezQ53?>rSgz=q9>b9e8p1TGl~-=8r3})MDUNpqito z;biP-Mg}t6m>2K_X@2^d-JvNu4Uy05tWqubmmR7Aj63OdWY5;7@vYps?DBj=lb#AI z$ZVnEYeN5G$7f$vUs?u%eK}tQ-9hc0+wJvQ=U5i<*u#%!bpX)J`fG-#uATR@JYuyY z*0d$n!l=LP-bn+Ek01LV1j5c9yt-@%%JVUa1c&@RdLzzVP95m%F-Ju)q9OO(!gpC~ ztlEQ*Fda{JThZ~CO66^hviaj)+XQlA0uXO`N$1?c#|P$`-((`Vh$dl^jMR)tJM9|_yRKwSN`DP0GwBf7U2$>U@uqbUU^g+RA3`KfPZRL zEmX&yiGeYZC88k3xuraJ`xLrE^=qTqX_L6d`LK zCC*$SUot76aIgHdf=M5K^JX zjl`z79rel3J_Vr}>95QPcu2;gayKrnbPK4XQWK^Cyt1xlrz>AG%Zlcx;0H8e(SOA%MI=_+m;-31srw_Skh6j z=3P0@lWjd}!5fMxQ^OfYgE4w+Dj2+3MsS5q8k=;0Q(Oq9YO^tZm!>!0?=Ziyj(UIT z7Q;+yHbZf3yhWP{j|={NlYP@>S}Fjet<-GelWV%KUnv z*&_r#BS(3-3d+k2?0%;SC-9{vMycA1VLI=7E2# zY2^&T`KX+<6#v{ug&tYKo+DPI3oqebq@<6UJ;Io(DEl$( z%J^Ca*RAbYfU%+d$)iDojvT0ax#3Ab3tX(=vTjYn*duyOj^EpD;+^xfOQgB|kzBKR z<+{p3)}0(75K(w;^-y}1$%nN8hQxl7^;Az=x5$=qerRA?U*o}~)u_ng%Kf6go&HJQ z(_5rczos1U(xkvR^SEOEXU!A4b!`&p)P|=CzM6Nd5?jU1f1pZ90ngrkjA!%LWguk3 z`(SbAuR`iRQotN7}w+?I)H@ra=9l+B}MsqS8>)V4vUCacoO5K$gn8EXcdTLBn= zG2aD0PZN))fc02sw#=(HKSAOHOPy5KSifXg*9iwLM8F_n7-+?anYeh$XI0?Sflw<0 z{|1u~F4bfa$r%?lAsNwEBNgth z?BI}O-F>RPzTHuug+`x>>61$5LGb5&Dp0o~`EM8?yWs}^_(FVzdUI&}O^3RYP^P zwIqF3l)hkDjX02?99@9i=hN691}H zzOIqz8klB#2RhNBMSI#0K+2l+g zi$(P8$K+&uQRABuFaKaSDRgYn-J=r|*(OU*Tob7G3g=hMlN;4`r40lu=>-)0%n8qq zj2kMf1L%~*o^0`xZEDV(sxSDrxOh)RO< zMl_0=Gpf5Ea5C>5&)~;sX>hh;6_Q2=hi{)>$G)XqyflWcR6Y;UPqR*d>ZnC*MRhJn1 zJ$5$2T((|>?d`0iERqebWz;3+zsimOn_GSMn){d%;$-DNW=4#bsRnjbq-hCA@_?&E zYj`|(vr+%(73M zzuP@MfNn1>Ib3=C%wIj(EFJ^xVjLAaEm=Ni+FB?(;qbNU_nD^eG9`1?pu({{h0^~2 zzChmaff^t4<{KK-AyFK$2R>*^H+UuDBL3&o`cd1@wEURs;IH!zV3hZDCQN`@{YRaLVUP zSbb^FCp*%=Qo_==k$UBwy~ek4TQX$_xP;=4Fbnt_HTtplZyY`^b;jZ9#OUWw&+KXc z5&k*boLjM1(W@l?4m3~h7?I<>VwYfUNPk6aRo`}}sD>`X1D1A}EQ|y8C0|c()|8J$ zDg5asjUXT%$h?9I`0DjbRC|lX>tBXyCCLoK{Bw^}w>?{F!w1!0CSKa5Sk5?Mblp7fzFWa_ZQyD-8QAuA==$(3FPqUT0=YqX z3)|zy7N=&b4i^m+{k?VMb!%6qOFO_4$&(?Vkwo3zf``|KW6Kr8J<3Sc<=lQV%nj^c z+SK>+fLXO2n5|&o6gg{q#`dM-9Lay~;pO%i4|%!|ofk@=P(2R*9Lnn^3iPSB&mA+?*nCw3e)_E;v1G zzF9H6z3xzdTez#(ZEXFdn|EFHaH_Owvln=L;`?hiw=I8ysDBxtYZW;n$g0bApIk{E zq19;I_~7+9dgxC1`Dty|XGi*lY4`Q8N~FhD)si6WsOt51<=EVvRQ9^Uavr*1Z;PjI zk>|8XAiv1w9d#fJ2V>b}#h1ol_}6={%ZV5<#Q)2Bz&li}fy9-xuB(Fi+nFgKLy&Wc zEG9iJU>c%z6{iFgRreb1?CYq0yXG%s+HY8CfZ`j?)_vorr88}~59@%!IRj;Z)&Dip7!O;gPG23iGXgioSn2D?L&%;w16|3fN57_Qe|`$v^8KQblmUK- zVMuGaQm$0M2N>3!m~569*i|u#ME!eqX)M~e))8=j+E?Xi%UaD?Egv-=7$D@1oh~5# zEwcQh>epI*_i3Dtlr0P617wT5N#bUV%e>;K$gc*`E5$l5?9-e+5GW)`DEe0U{p9vX z0^a_3XznK2@jpdp;n&pLhvD@`2%{S|8UY!llrp+uG$O+26zLLWg8`#EM8J^}qN5Z< zbaW#jh&@8W1Qma%$lksCod00woaZ_B^S!SNXg08L)64+ampfyb3z9sn{sN&iCY7uL zC>|ZBUiArTc-J>s8e-NSeZJN7zD`mC?c9tfC$zT5dY`)`J$Kw?VfKbKz)!RpKXBx( z71vsHx6kZ8cKm{}Ri%Q_lZ}TdeH`nBPbmw$gST#`(DlJy&U_=P+R#aD^7ewOzM@$Tm#%OAkq(5Gg}_dhF}HXw!h$; z*(Sa|?o<5QJ06K6oK#l>=P>jF*&6_zC4+-f8Y9h_!Aw$DcEqmcq8fHf{LD8 z(#>wsDZ99tBET=t2WyU7=Cu>+E=zeXD~H~YRrPpbw%gC|CmlSSxm2;uTmi_s;1PtK z)eAxMD%zvcHPO`F#oE+Y#2w2}735OvSu1hS#pEP=W}NZ}oK_uMdB zyfcw%s9NU6>_R?p+fWm$)BXDreCR1*%h&VzB8X%AxyjQPU$QOEZr7Yzh<}s~wiQxx zVyPGF#6=^Lds$<3Ew4x6lEJr$2=ge$Dw!9@^{qup`xq{@zlWw80dp4x;{vhSfi~A) z=gQ8t7jF5?2F6MXeDCH=elYd4{$e{p*Fj;~S%j@OC?wjsqL(~;&c9k1xUD1eG#0q+ z>8Yjt&nw^bX2FGpac!odi_i(d32Aeb(pyFr2usC?f{6Uj2}D&(|Bn2p+^Fehi&i6h za*8=HmC_(N37QE{Rr)`hdR`WndNWIrea&^2JL_1;_1Yu7ulrNkmmCLATtXW!GqP8^ zJpop|uX|~RcAjpS&xT5tY{42iagVsXE`-Kk3iajvqz0=ydj_v5Yoi{J9c=P;TTA@R z^Ou{1#XEd#DvurmF6Zo)0SXw{x$i|BVY0j<21VamTw8{!jM40u6jJ4=pZo8Q%27sB zf>O16_&)Ww2(I!U{m_ysr1$qxA5o#oatp@%!?7k3qYGwGT%QR3cbrzMQF6_9T3J zFc4*9X~w~u{HZqd08yj`Wy~$ow1O`tZEn zuS_Y&R6O^d&h5yEIpGC{@V>{d@QD)gh10IYHw2^3meF^2z9xDd_I*bp-3pF?v!35& z&VgoKqCS<5$dQ2)6tcecE?J1>Pgr+Ntwb;gSH|N9YSc2IWi z!0Q3m0%+T7{+AxZgzGqI9Fi|;)@ZSC)RMI1A$GNZm(05fk+MpOcaxL&xDS}F3MfcO zlDb3WrHmfUr^=DP-CzXERF2M>YUTFwks|_?p0U4%Hnz_D>vp`3da77|o^UjE1iZju zEgqTNe1%0mB3};BMF}^&`u3__qI&ZW^{;X2vf*cMyj>mi`&R8oI8G6VV+54QA+tZX2-3ZH;Cov!Jqc4S+`I2bSLVEe2lpq)YBj@Is@ura&(%l>KwI z&w4Idm4GdhG%1qQ%l1pGFP!9&G0k94M1V8cg&49vN}XuX1VRFryesdJO3D{E&i0@< z5P)FDN$as3Ue-FF&yQ6r0>8~1p1K^Byyv|+gW!vspUwLD!HP`_s)VOucWlZ;oyD7` zobK2*dp;CTn9}_G^q!WNEFX%$b@hJmqHy6t)b`pd#-o+xK&UrpwUcD6$_ZZdw*0GcbP$U^_z9C%sx~Ah0HaQmRSJKlehn_l2arH z%QrI{Dj_WH+iMyQ-99>xKX~7ebXe8V{xi_()798t|2^{tMm=A;3=hXRUgyI)mjdIp z*StKFiBLYmzr|PrP|V_x*C{1&tjH6&Lz9{>oMguk=;HPl0JzcO_Z?H$T5OS=_5Jn^>f660MH z9?BHh-!WG~%Zqynh4`;lS-)+%Q+>l3AQt0bkl_H4-b;U(Dxm{-m!piBIcPL1p;`&Lm}s-gWV`AhwF3$Y548^dhXOzgT}u^JIGO*8F2!+Xzw)RVLkr16k`iE}_FBs^Ps8}7i29j)Y2<@m}cYkIt^QH%?B9R|%M zb}Ad!!~2LSn|aDiY%G37AQf>Ejq1x1dSzb)68|GW`e%v?CMtCF;Ir5l@?wcsCS-u= z?B5z&S{-ioS3>h!PcN01upSMCl=~|!!B79#4Kb6Qq28Uo`_CvX-1I2okN)|_uST=h zF99B(1--XYzue^dM_lyimJNV>uURvITL&Ujd!qhh5nA2)a6R}8X?m?`1 zjR7G(Pf<3e`fVPz-f*xDK8l~XRl2c$@5PR_q#ANRLz3^&?YbXw$`WyfSykG@DvJn+ zY@Kbn)^I;J`7`(~asI9?6eReVpsBHI5Ej#*__oKEPWg@0}ybo zd2w&5dM-wxaAph9){gE?cyW8}ickE@)=;okV^u1Y{doc7fHc~tC zR(}D#xUSDx$`z6{8eo%4##BZZbTotKM_REomV#!kYy>u*A(q^zhv{orUHfHD>AnRU#*ntH~$C4u*2 z{fhR}nu1LZbNlJ)EomIOfsx33mIckn{qxyQnjU@?6el`3csJj3 zy$m)4+-|XT)|=0Bwabn3oqNFly|%-^#9^X8lnyt)Dbw@@*-!sZzA{`f(Obl|0W zOZL1FxZg$4%RxYIUeHL#zp)1EP8!g7gJEGUMT>+B5;8X$O3SUU0Rn&UziFB5>t@BT zL>Y<}GlavsXl!>yY7T*6gSY{|E+uu<#7aSAzgN6Y_`&McPPr%g1m)Ljxfi&~B&|M| zrrrsDexaz_Xkq6KvAodf`vaJ0JxP{*k7esDKiv0)ncong_q5;@tIvuyK?9DLmZKD( z{9voq8Cs6)pOrZOq5pC-_P?+|Fy~$W4cp&pyqA`)TzmbYBp}{1y+7Ya$#V#FZ~S{} zqlaq$4UQk2G^(Dpm2{{naj6JeX4UsnXru0|NW+|Q=$=ATg3qf)N%iP~U8h%NT&x>~ zsYkPKcE+jGvh^V0u*({-7KeIGY*QS==LPVhGaYx9!VDK)lj+1+S)NZ9AFT{5w)_2b zGfNly;*J_XB;1wz*E49?VJyS*i~wVjznW_>ucUvo*~OgUt4S7}V%ZFL829*nsRD^cBN@mvlVdbW+BW209Cro{{2?HMMjzErSIB+ zi1jxc`<3QOrpS}Go#;9S8av+P4uw^aaNK{d!@qxl#2uT6)Gb)Yj$bb_9zebUPL?<& zPrVcsRsJ~o51Ju#;w%(iAfiT?yFLnnGHWqQJYr^9D-)fn`7n0lCxfEB5wqRtG+9fm zKic7bB)j}ZsgpbbMDRf%3ij6kA(}Rv3)muNR7%Gh44d{}PnUW{n2!NOZ?W5zWdJ`* z1wS4=|76toi7^B4rU4|{0IkkD-8T9v%y^zyZ%%-hx2}D|&@6zj0khBssHnF|K@AeS z;0A9!DAA1-s~9B7#b(IW&`!CLCmIwb!q*no}`^o~G3y zRX~|M7C~>?H+Q_HN#xJ~B1M_(Pasl>Sb!CS&E;M#<;eU!{^gLsv0zy z&AufYn$aBU(!9zi9a6O&bS5xK?M|eyT+{>F^^H56yLUM0vOZ_FeZ;r@Ptv@X2sfDW zMbH)@s&dr^8KCC27bBaLvHd7=Ezz(gVtzZ+VcYLjKxn>fS}QHga>pw9b;uLh@G^<4 z5Lyt&PUem6jJEB}C)=Eqz_^ov0(l;LZD}_vRW`kxBX$0RRgipAS3rWHJll;& zt+!TboX1!!0D%4tfpP#C%z-QB4-4!801yno)#}}d5wil3vq1}mXy1vl6xW60?r0e{ z!E8pCUw_nx4LQV4k`be%v;?s%k#M^OxY7j)4o`P45_ z!g7VLu;c|8yP)YwXaDdv6F?nDBQf4;9e9aj61N`r_%2#S1jM3=&fp6e{U>E)V{&|U6iGdGaFZ+XUx^V%ih{JLk=7)V zKQp2iwwm2JmhS2ixcK2>?)Amk)j+=@*ehG_!w-D!SntD8eM(brgRPzS2T3=5e8y(3 z&B=3!(^UUaSr#slubkUtpJo)MMO|6Ve3ba>S$dFgS7geKUlE5)sJgU?lu{9n18|8nUZ;#Cvmj#If*IX#&~6Rpu7* z>!jKtXrr6NHj>|?&gCzfBk;;Cu+uB?r#W=?xKu%!S=GZ-Qi6D!`mrO=$)}P zenmy57n2X5B8ldIG8=?%R&zp$@bqX?9pvh zC3Y3eR{K*m4>_es_b*9e2vj3BjqMDeY5k%xatM4m$a1c*;_(xA!zuw`y%BZ+5TDVS z-d(Dpjql7S^jpORM(LMKJ0#Z;PscxO0^N4;R$oifPFrX=1uA|Pr+)fi^n>wT=4)=? z%U>afdp{MpBd~L2OqBUpMWceXdXdn9HoEYP_16=;>g8t8KlwCfk!w}){6iuD#z@Wi@q)9~-Q*ya%c|CwYjNo5 zI)5{4aOFKUa}wv+%+-?|e(9-9qsLrfhHby$zi|tbi1S~KH4koQ>^s!E4?^K5B~8Vv z#cjN(F)L%jaNOA?H4__YPItB$NCic|&6^**v5thd74_|(>o|4W#A%LE?UY_t}1WBlleV-KK zg;v4Y%Q%M8)1G)!%kOuKJnYfzQ&w0nZ#^b*#NZ5)gkW&PNC8=5kI270lIdG_;2}T1 z2=2oIUTeSj{+sRg=J79)KiP5&kKv`M#~&1595{EEYCi}LP=lOD}>tetS zVp{&{#@Fitp8rkLkumA+ZT7zABXaqC?*^FilM=0m+S13Oh}x__!I{_H4Jtk;c34cn zeu)G*Ryfxm*%zQqxLp3=DfYb2jj3$Wuh}1yuwoB78Wrh4SW0obz`dWvl+nhGkl+p! zWBobi>>=_)7f<=3c42havBJ(Sh?i@W?p}Hg-7+3;)W=RVmKK&}T{W++UE=H+dyK0! zbSfEdromFy<;d8_N-eoals%aAut-MN&yt071cQMMPqJm!7gGqWy!)K|PLOLpnQ z*l4)o^uyW1g4wrU%c)SyHS5+6mVn|165m^p{tHfhdmk0wfaV_PKuViW{|c=ad3(y4 zb?Lp9&7(o-gIIzlMx2g7Ay^MPTNLRr;W7K%- zz2qO+XffJ~uf{m;Bu`DA|I?d(+w;QoDc&eLR0#`_q`mT%`9#0iddjWlP0*@wm> zeq`>rg7kF~Pq;yNw0d4%<$COh182AV^(>E2mxzHUV>#~Lx@(zVVN*B*=o$I(-XhJP znlG08R(rm~gGg%mZ>7N{$C=Bpg;N=20t1K2U?B8MXl`t#xc26y$oZUV%skY`Yxm(4PHE^8GBkO@^kiqNe8yTJe7)_bqlr!df zLeFa>CNY9bS7T&O{A`QfTl&1IOT&UgKxd+C_hQ5bLSDi@eSus@|V^xQw2$<}R( zz9V(JmH-yhGT>TLQln6SZ)g7wzj*r_8q-zhcepbDlLHO!e-P`SIC4?=NdrXO;}RM_ zSi%~<|BVwv0CGgo-YcLUWvlCexF|iQinbvRJZ2-N;UV!VXI?ftxPLbkI3#I5Nfc!* zDNbp3kx&<$rY4AF4npGO0`ba4x06~dYl%c(s(np~ozl#b|3pc@V*L)TazsxuOT|U; zQg9y3KJ(E*0cZ7ukwd7p&^+&z425#^$GO$$Z$GUA#&sDZ^V^BKj3!y`*6b~OZOZme zIQo9)(@Qi^ikF5s*Xs-8>Io+T<$cSNPn|?@dJKSbh!V<4qE|_5C#)&sVxhE?k?bXj z4WUNYB<%VX;wd*hhIDEl}Nkp?iBc}#4G0Pd2=oGstqsp^+a^BoDmiI z1QZV1k58!px^3cnGTl;n!4(1*xllU)O)k~>#cB%`jlUGt6%F59+0b`2R}fc&Hp{HNuW5*NcJpw`!W zQZN3}2=7atnYj9z&(on){-8Hpr~A5>>vc@G{MQ~Avp!M?oY&l3AqWXIruh!~@p}Fe zVfEG*q5)iwZji^bm^~s+K46zmWT_lK^N^rtI4h*mNe^}T8yKuPgcNuXc`Rowz7`2e z(4`+msXUAd2U}G*eNn5D(bav#;pe^;+r(-)ow*(>tSUI9A*{5;=m|(k zwjSFh<99107_{tHZS-k-PKi74j?#;+S|q0W`z2i37Ai&2|ecg?^x1?llWno z+VZA+tiUzxJG=r+Z6OlGi%e0#qec@vyw`!M47?e7HFtIw7_b(G^TS+O4!iFVa3?nM zv`{h^JQ*P$zzWL8Wd+ePf@p@;Gp=Qg-38tm*v4@`4SPQ(P$_cl5`HgC$oXQGfX@A5 zGY1}rC7HtW=aM}oMW+O;z{|yFw9;ah3VFKDqzrim?!WA9whdjD;M)Gp#Ai?$B;zZ8|$-sD}E`lQVLQWMvG4Vr(v{@K2HG$mva$c zs-!ClmQUorK_{tOPAdG4MeqUnUj*E&5CUO=;q-B!=ze@>D_*tbv<=!^ z9G90@Ud8?(oq=^P)X@1AT_wIC=MjWSG_D_gUQgM`Q2cKAbOT6-0Tp+yjA(;qr$DRq zV5NPqO0)CW(^8!k2^w#R#LZpy21=ruyh6RHfNV z79V%Z0__+NsaH;{Lr&bqQNq5W=!oW!Vek@Bc90A*_r`^G$_0K1m>3cJ>VN+7PMT!5 zo?Mo#CQrPk`i(e#C_2eZ9_z+x3PeX-*pUk7MJ5pMw9wC*Mf=@kpD^I2>d!p?oOvc8Y*^2Fc@kxp3T@{69nVe;rkun9uxOwNbE;hw$~l8%KEqj7cUH0L1Xj! z`~Spzeq^-2#6zvzP8zF)04eO07NV6KH?H&QlAK#wJ(zj>WR?hn!`((GLi?Ny*&eZ5 zk4*do^)0(wavtdvLadP^E_kRX3eg+NQXaulfnjYTuy!o4QgLhsVQdUM8#Q8-0bpy} z=WN<%sbSXe04!MxOzA7s75}&{m9GE@{UO4q1GvPlMJ$XXipWI|b~V|{){4SpOINJB zcN85png1vF1+X07pUm4-XeA|jp3luOF3Wp}`@8@7*Q#oKMNeB1ym^c$HH`*!tm@TP z!D84S_(|-Iynuwy-LyX;o`O`sxBudS?ZDfAa!_}JIuk+Ts#G+kg`*mn&B~koNG{s1 z%g%ynk!+Ku1C#-fdzYX-bZ86;QHUF;DI92~k5G|pMzd^#c(%v;oKLB2OGUHtJ{-oyG1m;wH2IiW+m&gS$mQT^9N5_60wd3(L4(Ld$`k={nu;Z5vzjwU)hd zR)K$I();S?4vh#oti4>UD8C&uKSr21_=2@I%q;#pYZn8xr>D)TbA`;rN=2K#@>UB? zR}0_Ce%7$)C8r*o2_r^FiWesQw;TcNrTYHjtT~=?)1sbc6l!v^hqKeC>qSBIRUpUo zvJf3`ngYCL2)YIe=RkriI(S=i9$^ zvWl6O;gXLQf7JMzlXXCwQ7mfZmm;j$`8EGJ0ZGxvJ`3YVz?mJZpzejhk7nW8U~_w} zy^jHz^{)bC;=C&!03KD|uq+PTnp~8Edr=_O&M6rg36--KeBDwYSU?7hH{%x`g$3P9 z2Bzmc(nP+U_6A%0+tjG!NrDT_0Q;>n7@-3BmDC+ z5@_dfB1lD5>=5M-XG;7VM&TPoKr;P-9G2_tVh8B#!mwr`#0>}a#JqE=890BJb^7z{ zV;uVk{oQ^Z`y%fBB!)dhd~Se&V_$yEMqPO4`EU2}!ix7l&c}GR0qm%S(kRxRt*dZO zKa90$VW0xfvcb-hv(L%?mCl*}qG$n;M?g^D!IP*kZwj;+y-~3K=+PNyFug1Oa2?G7 ztt{CvYY)b2;rpA__zRGjmO0 z;RB)&Ck)gN3-4(kso7^~q0UWvuqEGnKZsdfux1~nurn6eKh?006tZ8mS^acncVvP6 z^lf&F>J=fz_n^0I?u@+mjDMWH7^m8kk(PbV$FEt+_c=G;AezHJ-Z`Ojh_iI$GYfeL zEc*Wi;Rq_s9|=Rvj|q#fc^t2M5TJv#Fz{FnLtd{7Q0l2aiwEoUhHrh0(^lKUe%Ek39<)i#-xjR8Lg`#1FG>kZc z+vivJH!)G5x()S@Feqi>X0<{DY)OtCEox4M-^R1vMY8qa*@g=bo>{Y>T>epHyXQH` zw(xm{`kr0VZkJ^H{_x7~bJ01|>XrZg?LMXdd62Sq_URtz>)zG3thx-&ch(<^2_F;Q zA~?eTAvt(g7zGGxPF^zor=7|=v%P*54-25ba07f6_FS`~K^ZhCx)yvtu%>9@!W|)S zViedd4G2*6fxwvV-eaT6{gF&TMVt~zP%2}H7sXo73{c5MXd|_N9&a%ERPkv;66WTI zX@PRDu4M1DLK$HV#*<^ClJR^ol4|I$VB%E|3Z6RekJKXXC}2I_2zCpC7v|f2!6zGO#;E&)4yc2r2~}g zH{OpNz$9)Q{kJ{@<`j2$43FG^3=su5g^kxdN#q|A)0QMo61y5kz9A)pW{|PZ&urHT zJK@k!VRMv0Q@Ka>o}tEPN>+1?mNi+Hw18J=uF&b(YHkP!lK+pT zB656Var{4arhHZ69>6zO7gR^$TTI>?t9bNXGPfcn;ic7d%Aexz0?IqtCgolsS=Opg z;tT>Ry$gf4X9HGyX04UqKkuqgjc4iTOrdEgYd&}X8(3@hiA+!s5%41^M{xN!m#f z0?lq(d6@Q}tz^*Pr9dpg?FWCz{lNmug!}dXX)NH;qzeu>SQe^rJ)^kAp9rn<=*ntJ zS=)~@(p^Id+|hIIQZUl+ncipPEcmm-sZo2h0~I_^<*Li(ugV5_@q9QHwG?o}V}Fc0axMnQi8A!f$_p`J`5pGM_37*iFA#jh9;o5c)lqgy%5?u5k|k zpx;Ja?E@MjDz2^mGabZ0>Jkk>Jrgn|4z^P&UEX^ZsicdACF5=Zx zO9Epu6)vbnPzBM$N<-RG*fBIO4%;L6K^}+ba3(rO)X&>Q_^gQl{o{1lX5JlMo6S7U zO{n#ggw^jKs&jx6$CtA$WRC~gt*p!494_hiKF<|@wX3fyG*)7Jrk_+|wLzEQ-mLN* zU8cxtt_OXTAP148v(q&1%D~YVKbc>3jo;tSX|620?pW6DO==?9sPM9VP7z7v|9*mgk!&KBxBbYlVB2U+<7{?3>Z=2v$ttViO(pyOUks+7I z{y=te5y*Qz8-k4}zEAQ)oR#1VI*O%gmLDRD1=Mp>07z^|9v0J|T`3KQy4i7v1Bf7}*z=z{ zKRQcbom#e0a4Q-}yyvV-$D)IFA$?ShR+M*f>pMHQ#`c};o5;>Z;LRwLZRk2OBLz!$ zIc<#K;BjaVjpKq8l}vUJ(!{;zDA-*Rk+HcHT+5e$iqO{JG~|cdP20~zou=+s*^+n` z{ta;?QYCqwj`48k1@+!JZ)w0#B^#}+vtSYo5^PhEYPEzMIYMEtj$v_6L@8_3QH!MU zBfTPSL#_&P`k5Fsduj7?fy&?|KaSv@#+o5E7xPpkfd=Ac?`<*Z2uWhYP}otuuADSh z7(ak|pP7mAPZC^M_BsE)ssJFhRP0}X@%3luK&dr9H#C~;Dtl)rhvt9wBM})r>vNX7 z8l}cn4?lmrd1|inlUmtDGTV)h5|CEDL;_C(C;b#8<`#kq`gHeut{IF)N3KwhP(E>C zKJw;2crVhm-%n^4<~j)y_GEmAo{3nO&@q_I93Lyzi!hH-BeK{Q7Q>rRACQ?xBYfEy z(wlOWSAyaY%rMnnN`44#DHzU~ya4%hyvdP<`x{Y*}(An#X+Zw7C!)yja=7ZUW&o**K;lQ&Ox_a_LO=u_by;y*ODBs8#U!uJ;Z zZVcp~YB5pnYkADW;9lI4RoJj_Kt}QEjxq;c@SQnAq($^k3Y>v4jbfP&vyiO7{6Nn zb@6HpS-3hGk~R zf8Lx7c~$XW`(bt#B44j3fJIj$uJCW+p>Lc5*$F1YIpWf%cjmqE-_&gd0WUhgtVcRU z?7E@u?9}`@?VTvR1QtV>ycbAP%d{0J2~P|%mVagOnElU|3UjVUC1EJ{pgc9xtw-w0 z*?at>$O-Ke1{lf0rEMq-WA&!`a1$y)e1&*D;c7pa5H5D5<3?~twJ^FWBdM8_`VSoQ zYPt3TphXPx52`T;5;C8JoCH5KWQ8V#mzyRXW6& zoMugbT97;q_+$4$s#KUul zx!A01`J7xqesaP?4nttX4_XS|Ap8<={%>a4e)&yG*3w1RMJ_JsBuVZ_0YytKzTaI& zlW9t8L@`8x*w8IiNi-7A1d51@|#Do21V7hvY(_8k3Bf8l!UIW~^QKmY-N()s%* zvzZ6Tegss)BFxD$|8lCd)*u!^>5eq8VXzF7tUz7o^-q0ZoG^gJ55Oh)9PRn~(gxU> zb4FVo*|b|eS;Vku#7`~$G(aJ@+7KjCH8u(%YDoN*z-&Lr@lyH4|XYt!pDzB~RRRHR0xnjs*?Mr;!T~9f~6XIZ0qxOFgnF(KLk+ z@;{r~`1S%L3H%GhVn}MrB*1Dw+p@>l_@(gsHDMeV3FIfdO+EEiehjWO*5N&No|1Ok zxNJa?uPzzv&Px_FN0d%B|3ZigQwF)J4WhC|@y3>Ox@>~fqJTzAq&dR>_yKQWrx3z) zlxQl25e@D)5S}!6#v-5CpA{1Hf?cMT5u{2@WvBvd&rw0Dc+h)m5cg#E(I4Wy zYrL?Wsx2f(+eJvHVZO2a7#7RtZAinbsSa53IR`g8_YaUF$bzG{N_HOzg%<2n$Ra}3 z+}QDp28gy<@_+IM1Pp zR>NmXD&*ve2n?X*D4PQZl%i|B=UFTmo-kNYFRW571dmJ}!_}~=@U{n?ZtBPf*s zUK1nHYeb=dcZoKDwI{iv1XFeZ6h#z9f@G;69WAg~AH+@&>WG879i;~dLiHx|%p*wF zw0U*BiOxPqMKDbjVXL}tBa3J1>}(jQ79#%<{8Zl}6jvt`F;80PZRvFEPI~a^Zs})h z?3XuH-x||C>pgJDGWo7&$BSwx!I@6{$@EdE9Lhv^g%NpSn9U#2hk`y+} zYlA3Kb1C|h`N5uKmSt@ivB<$B2_XRQR0(GrUBD>Oto_q=#UQ2q)vKCd(}sKu1}yu9 z$E79R2bU3mEeXPA#GlXbC37DVA!ce|#lqC&Q}uXUr5wbY|XA3|QB zulUL?5YkeZEJ2hYkrO#%la6@(8_Q888{KZl$8-09K%TTfw&@{6ye&CdxdDd-f|Yta zN-Nx0peU84Iw*@H(K*VXgELr7*X)c?;x>$Z$R`&S2$+ zK}ik^cR5QgzD{Swq*OsbtqLnpWS6KI1RfiGpCagZ?Xfz~;6#DZDu&lc4f|TNffQGn zY1@}(>skA$65^mma&*hU6JSA=&>%Nh&?L-*kg9TRIugmN0LV=0TMwhaPT^BiXf`NVzN1enTHJ>YP~pStbDM)$m!8_bbi9{n z+kZ_LSC@wWlb2^grmCv?g$~pmXZG5^Os8d^+PB(x%eggI&{q05I9rq<7;5*ML>9~% zn*GZmQ2Z`QcSv9fEi3i@^hacbs(VJea=$UxN={dE`g=(Nv9+)zMT^)DP1CMS^d77Jqha(-{C5R1{J1;O=jQ$nfGmB7Fy{sLFqCHF!jpxFfFKUAvB63 z)!L9OF8-NBX-pB^5EtK3qk>Qo0B-tyA)wEvty1Gf+oV;@DJwqLW8OzO7C6-hIIc}! zP`(V3%%eExa0!s*{*1?}&f@ZT8vzl0nkYaZ^6j48IRBV&pZDCAq`OnxD!V>A~1$J8xx zkRB5}TLD+4_p!SPc zlFSj@t{CFnWo#U@&gRwRH2nfK36xI&$OCLp7p6w$-)!n_@J9dwI#sv}Q|=SMt4z8;WG^ zI4cokHzMCrCSL;Qo#P^j_96ab063Ai=s;IF0#&HZRiEZHG=_IRw@fSyK;J!1oaHd29LDv?7Fnmn25-vPr%Km%zpzO)!u zX1={U8nFf8R8QjsN46#b98;JZ3c%AnJ^q9ZM@A-`ynp}IYD(WWW&uPhOtt)zDT@h= zG9`0yf})v%@2rVV-1I_{(@On4#nfxm9Q5l4SXVE>3)?!S$cAQOpmvVMQpTywD( zdCT6JAO;oBMZh(q^b4R{v$I6Tw@$zmpvYCz3M zL}pmfq+Btu;G;~&o0P;r^K_>Ks6#@!BR*o|YP&cYlwU7>8h;`#n{?xYD?!GBIpUzu zl1hifh`S^WpZOeha+pGCZ28Yyc6S|A$wg{0?tXv3qSm>E{QKH}0J|2sc;Ugjw+HWf z8CW~=yYzfb09iBiTa|@)Ltc5M4C4bJ zbSOo_C*cV2eLSm#n`Qn;&cV-;SHl6B+vzjTe#T?zxHCk=kDgj;gPW{9+U&=i@^sD_a4R;GDdy-edWWeEF2(+d6A@H(m&kkvFYc0B53Jj zb+uMe9frxX>3=^~=Pp|M&OeUyJw8>f6~bsyo{`-%E0MJ?HdmOFwkQ;a#O@x!rTwR6 z7?!RIzGFGUsTL%F1=B);L{q)xEDUj4JYq=J;~AzVw*bS~r`M$ga>nW@{1>rvQlMLl zec5}51kR)!p1ZpLSXBjwGC17dqbcynn2d7?3SY?GM@zwgK1f3Zi@(z_Ow0s{GMAe} z8L_|~ke2iTKByvNwMmL0LhGfUgSpHcpx)x_byZ$_YlTBQM+<*{xPyge*_gm-_t-Kq z54|A=Q|57@5fA=NXSry||2R4iza;nf|Ff415D_=v#1(EUOF-Ns+*VdN(=tP|j+G@K zj$Em^GAkUJni`gwnWq4^X;GP3Ss%1z9*=3$Qzk#ZzdzxA-1q$+*LA&~PZj>u?!-EW z5!bAFcLedopQqv0ZO+kIU@Vv2uhAm-I&P$xY3uiod7kE0V*gCkKjFNP_jMxv1xMsASH1Aj?UrMPT0WV0e5;fUeOi>rH3V?)Ewrmt4E^g%2!{x4k0B>B?XlxJK|eT z*P{y$I2|y^&iJTzY-*>IzCI^1_qFTC(Vu&dAMX1I(@R@ZhpJfGte%D9UG`&P3WygG zK@8cbjY0nSJkG)dh1B~P%-8w~Yvn8~<^|Qu ze!he;=JYnCf7*4wk71FMqVTK#h+-O&RrEjs$@0MYhnOdFq$@vmA5=7Z%(#YnRVCDi z)(-7P--kL;l04y_44^WaM!Oo%{dKm3^6A7L68{?=o!++BX-`MmA_<`z-`EI!6;&QM zq|F(($)$aG26w-%zxERCrHK4325ZIAgaX|ckli;$7ehL73CBwoyI-HiW#trxUn706 zZ4*iFgkUDiLmhT~x7H3{vt#<0s)jz(*h;Qm^mef)n;P&q^hA{?lMQUTJad^W^z-Nt6m@?+cq1dz_4Wm&uf>AjH& zswW>;ABZ$Gen@~jF@7|${od+4s2;Rm(tw!>h8*q(`YQze+rK00oc%=m*1vqrE)S77 z4+d&KE#uTE09XOkaAV)K0c1O{hC?HiNYJ0GylsB@Tdpl!c`;AaGsnRlL-IhldM@;~ z*21=fW?49<2%uqNlme+E$@R%~YW4->yswYo)}T7=ny&^MYr~D9=(55QqOrC)P~gKJ zFdQSEiHtzeW%6=uda3(yul}MOmVjLQ5V3;`x_7S!LKZQNb+-Ujl049xm7~!y#D0Tr zan7DSvnc;%9!AWqVmkA&m%ZH0SIwUKuF`;x6+l(zDb-*(pZL}+*zhnNb+`~5Pt_T= z7nK$z`n@faEekI48v<94e{uFb_yO0-a<$-8Tx0r%0FJ+Pot{rhj5>u=s{VTR5LO`v z2GPzQYx{ckdt0t*c259AZ@zWW&onHVlZ9_)X;TRM9fO1$PmhF}d%?FKR&v970Nm6# z1KEFCN<18c+Rt$tQ}TZURH<-szMta}^HKy0!SB^vym`xw%X0?}WY131Js{@~g?{+1 zroW6os(MPAwDLXMV0i>=Ghe5Y0jRn~^)8AX0n?ccrr-XZRlf{yrv%Y$&VRAd6cFi% zB%dt(G_vk{8RWaXuJ~l5rE$+{%b2KiGLd*xdy+du5lSFM*mn-4`MAU8gAj8+Uga5| zxNuCx{c>El^Ig)xhx(yD#6nto@JTU3gbx3ehjN_c5%up)>3RS(%$ebLy{}iG*W<2Dok;5~q{%vyyaPdQ3v&D51ytp) z$@?enLlvK$Bd=b0&btWaB&dBA6Y`{57x zVEdZ|3HRd!?FJXvH|d+a6I#Sk0Bin$-CCwT0itgCPco@{FE~gvxI6+^;%QZ-qw>E4 z^8gh9P@|CUslqpW$G2X~vRZSqHaq+6PA!T_w-RPi-vO;T{g#p7?~9Q>A#M)ieBvc3 z39Uye18J@G^b3_mH=pRqaHp%fOrVC+jw~NR03hxaLzl_n3q)TPLNHUWbv?t;v<#w(O!0i`Vg0kOh_1gTA#L0Q=V!L9lIZe5(mS95?K$2>nQlool)^%<3>eF4-ol{|_xt?j_P`Z~I-rb`i17x*YFQUQuXhM>*}_bd zEM*MqHL%qH-`JiGTgy^?EdK7^uOZ6T#ns!4xOqx*Y+R&+C>{$rOhMfI+LC8O(BTtKXNM}6+`Z$SMvI&6>fQ}mc?9uTDeiq=zh ziT3Kvvpv2ZahZuctvuPQ5Ta6goSRSvT8uqaUlOmU`u0D#Z^nTA>EL%e$v%GiJChBa za@=n$%JzJCud?Qbs(pYt_To&f*WyK0`m*?(%J3FEP>q%+N2tPM%kg|(^2PmeH#~5C z?z%L-p%F+gL~VF%_PZLg6Z3*_@gLH;pmyzs#KpyeD<#eXSzo4 zeq0U5Rnp@&w#qJ4Y((UMco&@{mW~D>ABJISt%dHdNxbz3jFZ3Sh`3$=9;`i@&=zfF zexR{e7Jf-S8q~@)M|iq0-CSzjSpaAo`f30^NzmHU!bQoixUXHkL&a!QqpFbEeQ1-m zu?5cLLh=frBVXs;yS=&?W*mq&{7FlrN8;)%?KF{U6-tDDJi`J0#-C_439^8Ilw!I5 z?v1KxQrCzqwPv2NGoS1y-O!pDa;2MVvm6t^Ny|Wa>VamJtG^?jC2`ExM{4H6=zhh| z?k~ZV#5o%pbDWqC9`qrkUp?MSxFu0g=n1@6Vt+04{uCp8f%|*xJV14=AGOBCc@5XK z`pY}Hh)Gk)rNu^j-?_x8+vUM9s@SpfRZ|dR_fW~M_$jAT+=o*a-Wmy5)A(#`BtG%6 zdTZrBqvleH*v&;y`HhC_TXLNqPmB9BR7AhA?nb793RNRokAkcU+lx*!aDJElkys4` zcyl#hjk-igqI&Hs)E)267sZ}GSd^^L~g`rn#L}w-TktNL={Rj3%*sQ_h2tE2c zi)Y?@OthC8N@zalMaT1dro4z&w$m3T%%TnnZ;iqnFoHBApc1nqX=K`UE%9A3_aBe8 zx+l}~Pdfg^TkZ~=*kz-5v*f6h*U0>LJ6xWm4i>h&-KIZb{U#T^sriFYNlZ(aE%%P3 z7d7(2h;_MND)EQRa(drxow@*x6&LdWTG5iv-iKD}9|;raWR}!;vD0*|Un@kSbCG8* zsTtVjb{V-7P(OwVS<72kJ zI-c6P`QzK|W1q1QiN{Ll-sE(jrpl#!tJ{P(x2pdc;%MdZ2$pT33t}}9R~2rq#C&DH zjVMP#@Q9StO>JYgO-iS@XG;g>Hm4|Aalr{(`M?F`oi>r!ojvlW2L}PFMvpln9xDTg zSrn@-hUI=y06wzPSiw5y{u& zTr@;~aUGDFQh`u2v1{4}OAmmq25n|$sc~j^Pg)tvp&AY?#<>h*^#Px)i9V^R&4U&d z(tQ=b3jfbT)?9Y)gT+%~waMOR>(tz7jM#CXu`atE65nz2#g`5O+|N zNVOv4DU%?bDTakJ2x%rhG7W%saS8TrTMMNc5mGZVDKP${&1`W6hpBh(HDR?*pi2VUuWF}MK3 zdBxTBsI+sOUZL>|b7ydD`he<$D`7!rB-w617h3)uxB=|Ts6YL=Bh#Xx(};=M#q>!N zR0;?BAAi>{c(Er_+?^M5dn1*P9NhBgfw~#*TJ+x=sb;jWxJ_{qRQl@iJ~K}^R&u&7QIe&JD%F_;H##rqiWAXv*?s19syvho(?n|p!;s-n>I77#EhDz;z&)_`bp#b3@fnAn{N^e)Ikqg;OcuF6)l{@UtH5|Tl}d>U9{BT`g`W9 zjl?lr?6doqb6}JD))?{N%ZXRcSB^_tJ~lBA_EvIKUd|AV=t!TLkg! z{<+#{0HBK;l4=(njbkEGnOtJ}++sCEByUU@QR)-BBr=u70V;I@k5gLozF!&`W=_K! zv=>tiBY4UOz;wUbtN45WJ>8K2?C9Z5x&!r;Q+4>=Rteox*Z7(V;#>Ox$OO8b(9KjX zp|tUh*0PL@LVx`?W27t9y&|z~14VhXfR&t53ToE;QTNoDfGE!WhCBWbYm7{IU<6n4 zwMODf!?j6f##J0=saK5fUBCmk{DU(L6$gZhJw5{;V|McDhJJ<*FX?!}Z_|5EV+E)G z`T4*@jC}IOwK~HltkU)u{BB@tghwxSN51>yg@0dVsJ(YlmDAJ*PF(xBrZMqIc+?Omya3mRr%8TPFJz+XOl7H3*kdi|%FLmsatJg??y zHI2L4#jjUTzLqb@G8yh65hAXl9&jCG9^yrCT;%2L9uAup&F&MlW60%Zvl2HcLeYKi zk7w0Vt{U?Fz4Y0trTYXs)@sFWhKHJ7AUXcOviJM&4=O3~iHz8h5`xW|PYI30Ow{vk zOpw%Xsjn1-45YtkFd>w4u4>fBKrQ0ma519;ZB^-q{AXhQ7D^;F0V z$T90{mIbEP{eDPeP6V(EVKk3{XoSe+x{ z1ivpp+{=_dt#ip=dgbL>n*M#x(5h87+gKh(rt$Dy&gONtdA*c+g9Fj@mj+xRqX2vP z<#N%Xi+ppE9Zi60#q5a9e{n4}A_WNCwdMoRgc8_X&D$r4*L4k7*~5C8=|qs)n)x9M z7(p>@{+O&ey<%{Oh6tLFuAjd#hNC6S8Ccz9Ngs@1Pt2Xk-2U*1of^~E4yqj@tV5cM zA|`HS4gm~5*lY=O*9f+*i!s{~TWaj|hWpiD!&AT^Lf)+->Dj*Po$*L-&Sv8xd*?f8 z+I~Ao?@Ke+3C21HK%=BQB6W*&F?*dJO%8ECFgv9kufa#|`R}cUp+&~u8w%S9Hj&KN zct&z`n&S4i#-E!{%+`qD;u&>5i$7Ybj51NLn%lSsBn>sTE0L54R@EMz=SQ919EUoK z`S7*Zn$~(hUvoF*OBsYL(pQv{^-xpD)8Srh88Ana=0$&NGn^FdoA2^t)u5n4L15%y zef}w(*lwFAC8=M&gqVca)`~GY7wHN zxO@b~T;Yez2;Jf}QdG3dq{_Bz-r1xpmhk2LzI#EUsdnRir(aZQeXXcglf_xtzkL4p z64d5@$BD2r|BdetV)qr04*Na28}YT~YTvvH5N3|xeNJFm{d;JK+v_um^XetE9Opg_UE`t~V zfQT4FofA)TAmQ!pF1HyP@NLte)kzwHAsadEmoCkF=f7j`a=&YzSilSvu(iAxvxT?~Ufp^i^2d3Fh+-E{AH_-VSIW405J_$wK3o)s#5KmjBE}?-b8>@Qsr^Pt#)< zYxRcrjpCz>i4iqVzC7x4;j-`jRxXb%3Dg<@q$7FyL%$LPnFM+af6SUU(BtFZXm#}jgMpHJ#-aDUG(;2 z@G^)3+TPAAB8N(jboUA`NE|-{sDsfWngX!4x6J{~;m8&K^^7>Et)oh{gpFEZ*Np6llSvZNxdux^BDPBH;b@XdE2RnH{|tl*d}lYv4hIM z=diTiYw=134n~v&v8;*`8n-I)DC3}&Ga(|r#(iY@;d>X*yJXS0zgWCKAT)+#AEVz2 z;Npa0=zpnnY@V~g2=`c=smxb9zADhoqba7Mecn|^ZDS}YW2bIcI3Tv3uh^*|2{Nbm zwclnx$A9dqseUN74!DezR zW!n>A?F37bJM{>roOYf}(7ZGH8?L&c4p1q#^tTw~--<@%IFBYNpX_0pW1|Z)5xZEJ zL<6f-jFK-A2>Gf0UcZ}HOj#9P3G`wJQkMmrlzA%0ry2Ne5!7f}ybWXj!A2>=B932C zjm}X+3jqHhOqt2SW>J}MewErO#w)TpP#YgIABa`MtC|)g;+~`3otYRD|Np##81@0p z=}|Wn;?A?)u@NdOqYlo5pok~@*c)r$QN`-w-N>t=%%dTm^`-y*-CSGpD((u1yzKk; z$ygT7GX8|I7hMfoZ)0c5Y>fIfjPCkoW4J7b=%W44h8%-Z6V9T7Wk+g`gPWfSceQ09mmxyqr>!~K6oW?A{6xQ4xdJs zS<@h37NnmGOE=2 z)mH-6CO@LkNk-hT#T+}4uuD|09zxp;CSKGp>mJx!- z*QrH7ku#Epa}{fS10&OyE@9T+op^4!=%941<*Ho>58_}xHKi#8Kks_|lG>8Q7y#rh z2?u9{)6>PG!g-aK)+U^!T;*%Z#}e}GjmTwO*ap5f6=GO8ep3|?73t}*#Mn1eKgLl0 zqTK4e5DnaDT-txhZunwMt-a>yV@NvDh%6U=8!tp`kDtgPD&=2;KUg%_D~!cT(>vq_ z2|MPJb}0Q?#70E@9J+>2;5nUETg}*{8A8IG5Q4kU0H+12-8@|e0NE@z8SxOeeh$lM zIiGPRi^!iZPdpz`bjTzjY3RTwqeAi*PPp@2yGzo-m!|#`{yRPl(Zc5ToF*#6d{qLJ zK~dy^qSohnjIge(_iK=98_h z0~C{D42$n23nGBO?QCyo6cNxOCFK`%Kv zU_e+qKtvDa60jhvSHo|+Fst`gbTryw)l8^+BC4iN&yo(T7ONH{ixu)tiBZzE1(|-} zzuV%CRg03R8kY>KiAa=<5$8Zn+rvNDIpuj8949AzHwV|V$v`E;k4P-IWYDK9)$7Jk zhWnA)`k`N+jkntvx07*oY{!a zv!k0J=2uc1SG|yzXj{Aw`&!0tabJM!-4RD-oZNfBQl&t(dI+Bobu|xY<&=1JY*@Xg z)5V{sI-d)|GWIfvsv9Z&CppB~p+oa-{0}nKV3m2nLwzg0c-^Mmw!W!Jy!}Hw{b0Vp zjDZH1hKD7bj`s@0X0yG7b{8gI6#Lr`cf4qBH?k@nM0ipZWgz$0#Uc~VPM0*$IW{!% z;J|Y9b$ixKw^Re^@mC~#26Fu~0-Sz=Y42qSd8ZDgp0zHqwJCi2{RGqZQtsKNr{hfX zZ|hO%jzY+WDmect9N)54A=$+>{@MEgw=Tg&Nbo13{4*u^Xo)(Or+TA6XHy+&7yH6G zJ?8*G<7J&DNQlm6yM9jzdlRpprTW`3k39FdY8qxZ(t3W;%`nZFCWY5f8R(-{jPN`| zYkLwP7t#y>9iKO#K6yDFpu)gKzVTk{0~q=qb(o;JmGS8&%S$ep&+8CMofu(CE<0_)@3ZBy~4-K~LVRo7nTOqnevZ(+Ey^4edXT`)___VNm(;y8FN zbnk~7HHTF70}Xd{-53`x)smTxv6qPGNc=xbqATw1(MS(=cxa%>kpT;~4XMx(RG7t1 zvjw4dn1u&gq`n(XP4RM%p*%JEADPx&W3xL{*m&t9lAD68xk^YWfwwk#u1kP4E{xcJ zQd-{IDp%Ew!pTB3hD=G@>u`#NXE+ZDR!Vfh(lw%^a8e<3i+E+K8>&mv?IrO(?$sxDVR~Gy^^|o~g7(o7Ip_$XA&kgp?+P5_bxxpik%g*fV~}qSDe5r^yKz zwon#FW_Ddh_-t3_LucnU`FL!uyB4L(J$N%TF=+!f1J7IMB^8t+n$r-;a>xlL*q#f~ z&qBp-BH4r9V(Zj5Dt3-%$P3TZ=KyMLw9j2~Y;>K5H3`WOfFSt0XE9 zC5E*Z#W|$@t6gA@X33v&9#Ou~~9Y_ye^ z?_TuhLKQ&aSOvLcaSy+YJfF0$#|eJ{3$d3ow(Up^5h5$)AL`jiZXhxh07twSPbI?4 zhMd2JZ{D@wd)qX?vG{PN8a`<@-iN;TD@1KfXmgA9^Gz_k*si=B7Bx!BB3rV49(ne~ zCi?smUHUmoXY>5d-0Eozjl?l_&*2l#}|4X=* zcivq|A-710V5c~@9!dc)L_~_^N@wFCv*luA3Ip<`ek7H1hPJCRwCxWAy zZ581P!k0cNOzw<~^X=}XfYIi49RL(3pk$~K!C}J?J7FAQ&EyFpY7ixjYBEPSQRQ`zefIvzrSsb0RUE1!t0NloqRrp$n=( zO)V`QO%HRt@fQ}<+zi;p>rs$KZhkb#y`o)Fv-+?efT$6heyf6L??)y}chLfme~hI| z#n`|9TWTw!kQwmp?ArI|XUddEWzwPtTgWr+&X<$gV^Tc3%fSKMX!es$HGy^t_qPTm zX~%@LlHQ6t@oZ5bv0J3uO>TRJ=T-+mW$LC=l(noZ6q#fH+ELZvm$CBwsLU1IQ2Tf zjl4hCr-IpGY@ShQTrq-bo!@1&+?g5*#~Ook8v7pA^o0gS45wQ;0`NcMELDXQk3hv4 zU6;RVbC#q>Yraef?|$>SZpWd)KpC0_OUGN>QD_%G(>flVo7WHSsh!Us?LHD$b#>I0A+@!U z=A=|-bDT*@)5$sgKrf+l<&^VjK;OX_WCQ@b2n8!V>qF0{81V)A+VveKSW8)RVLQGO^|4=^9W|A`{cviO%k*@QbX`TdEW4B zC>M2tr;8>1T}DLu%v?FjHkd6<-KjI*W8TJR$GDR_j%|H@d{?Zd9p<5MeVv|p=Hlg} zT(jso6_Ffn9*Y#x{3ha3e;qzPYw-$`WliXh9x5l6yLitaByP#zQZrNUYVKU~sP4$DFT zX4QKi3v!w%k!xkYc3j~o&E z&68nGzZe4Y?lLPA(ZBXL`;M4#p!#CaKn5_RbMbDp37rGUvVARI`*(J`^ZV$Gx4U3& zM6dUAkYwW7U-v{G$*^CCtO0ZX%T?2NVLGn@hh5DB>({_vcNA3GRQmlXa4)DZ5A96< z{^gmkW?P8Jqsiy{=XygTl)83T!6AXq;H#t()bb9mawA2VB@krv{=PPaH|6}2oTyZ1 zS+fABe|uTA(Ki_DzuCQ+Wf9he+V*=V$@i=O-%fR zs~uxjyi>gig}+Rz8W&Te-HWe=Hzpt(ZWq3GIPtt^XN<=Ug3ZA(!R+0g1%$eY^`ZzC zeE@}lt2Q#Z;>G)5n5xHWc$9?y5|jR_`(n_~`&ppug{cWHP^xC@gDYGH3ch^;#|(%` zhVJ=Vc3}eqgnow4C$L&r1P_eT$YHc3AnnaHuKm~SQq;TpsIq}gqjl)vv{ z%9Lx0&^V@u@i;w3*Ut=5wR>9`dN4u3`Vmfu(51LzS(YncrKa{}FwUQb87x(JHHG_J ztf>>$LJ!Jx3_GvfGzlv}W?2X7?a;)dVHT-8XKJrBJ|Gj{$can&z@ z@1@)7?%I$=2$y+B3v-3M1AP&|W&jQ5GZbRLUO++OnXK+0ar{m?r|VkGD2Lbn9=mo{tn2;-F4tbvl< zH$%&u+o{ih@`yYLu@S&HY9lPMMPVj&6DKO8Ti-Bhi-F!0MRVB!OZ>%OXHA=`r9KpZ ztxdM(#kDLSU7E8H*g>UizyK8haR1y%<%@ICRf&Zci;{~Ym9g05v9j6BrIh3YDBcLx4mT`v*fLUd=0<4 z!rxr(zk;(%gFZ{TndXvtmZ7Y#%mhN6eNAO>_{8!fjei0kQ#3ef{4tM)a*(f2Q)KGs zso%r1Pzx#@kw$Re7$Sqdp(N0IgTndggBLT~3QqM!pM$ys)FW+Z0Py_AWe>5TwG&$< z2VM~M1!apPNXlVex_V+`gqATsrPxrZaNvuYXF3m}>ZJ-s0C*TS7qUer{UDd;Jhr5x zf|j3`jB_;aDUaHDM3Zl(m4G(%C{W*J&AqXvIlXyxD!b~U_s9meDk;JM>6{Z!f%Z+; zoOjWj`j7ZS@WQ@KqelR2^`)@w#0&4&5{af;U(gTyP{YZ_1I^^ctKtolnSXAetrQeP>*o9liiLV^jh z>SWlmL=~m(*uGi6*0Q9we0jkjplmESl?=H=r7MMT>oujRIkfQvk799M7`D_+>!_V- zv4{b*Uv)z)2SI$%sL~E2t-jSOc5zQY_zt46p8c6*<|JJ$O?)n|{F7aVO^nt{qLKAB z<>)vcDN3JBuY-Ip(&(Wj%^_?{Uwp`s_@uFtvI7KO(Qk<7 zf)@e#B}8WlG7=Ts&Wa)}*Hx^0*a&wt^EK-G1_~jwFca!5wv#GD5CGkf(Z?XTmuiQ- zjClLjp#2Z27_2Y$-G>^iPJQA7hn8RsP;q;pW`I}I@eGaWgB_Nf-CbM;sf|*B3~dI5 zFM>7`CQ54e9-;BeC^%&!iE_<@AOkrS&OMJ*3R?rJPFIb1%n2|0r4?3o4`}vz#n(|@ zj3*q)^?0OlwkVY!44vun*k&zuIatUY+V%BuNt4=+X~Vpo0b5G=YoB(!SKsxkt6`_E z7yz51|1V9H3mWtr4PJUGZA;Kl3Ovt9WGHyq=CE?NEeR5pD|zmwt#a(AWuNfTrz%jF zvAgALu~iaZNly)M;ceoT>I4m+(@+`!H2K&0?Kfs@-+xiN-E|ZK6=`;er!26QvO`w$ z9|dJ45EB6K8k$SvB9{T!ST59i`GL-xpbVX;-s4ZntsgTAW;ogia`yK0ON z&~7fveVm4`ojcBCZ@Qhg>Kvm1P$UUJ0H@}sL@C}(J@%>3 z2OqV!Wz3+|chCAZLO;=OT}yH;&f5HP?zK|&|2+@<2XKQpeRqN;{dty}dwx9P(u;{8 zPP5L8{I!|*ybNW`-|S04aYW2Nj?(;s<@3#kS|z7^9wR-+&GA>z0@bpH_r?DIy*fG< z$LCh-x*W)^);w1PnE9f1eY<#X+Br6F>ssjE6EkAH94XdpOl(rw=ctB`*jr zOb2M~uyWf7_qOTP)E&MpLtcjG?B;u)5fNX0IyocBwNvHL65wZe;yP}&`;4h^`$)1+ zH1BeG`cLfKBE)l-4a&JuJ8t3W^v=Mn3*a=%%|KWabRBqM(hv~Ckj#TvZ;l}PCia5k zgLC7Gc^mL*n@)u}-}_>jYX6lFj%WYI$Ej8UOg-UoUN)2W1y}ATj4C&)@4;1a|LErJ za4=k@Z(WH#`Y3{D`}D&T8p+Y*k~rHxxiI+mrlDaor(d^p)qjE_;&t}jf8FGGYU``M zpK2sZ{N*bnpypw8KPK{=< zP|uEjs$y%4v<=vR*ei+BhS-iPHbLD0;E>I|G~LzbwvS0b{{G<9D$qHyp2m_oq7=oOI-C0*@Oaj+<8RX_g`5gg|nLot0N; z@0YEIj1*aGxAtk;x!nJ%c6S5gR3ey;7bs+5t_Yxwr=Sm<#h_QXgVqn`PH&kJr(e%TLxVm`5XG1zPA46gP^)cXqp`7(We`iz>A#P8 z&NycEWP5@Drevw#H9Qvl(nMfj8<5k zIA)fbx;Y%t>`j_%*o>V>FlLJVbdnPGLA znRnSMXiAzG6g!o#QKB0XmwWq4;_2hLAURD-#B^l=UtbN7mgXv07p&k11}7I1@;*Q{Utq~wHe)h#!snB5j6Ey<4Fq0 zNemv>0Dp2r>jTb%>FJ!hy)25JvkbzPm0sg=$Y=I9PN%mEIc-#jYs;lsFo<4ksH$jJ z#|v#d%X8H^PP+kk*zl+e2F4PB(&dPP5?~M!5id-Ga-puWbBAuRwP=O+67Yjn5w=$g zALrHT!HTxS)A}NgATh8zO-x^5nm?2E_@m}2ZuGy2Mp?7!{!+a_7R;M@TKPz&EIx)o z#s!stE!f(UI2~%B>2QCp$+?2H9>8i3@GaP@KT0PHQm5{WPD?w+<9jKnlyeMVIl~US zQAHQU+W<5tvp~6wYS*_K4h`0$QFgW^XV_HuIbw+6r~=i#%q#V*C;g|^#6{g%Ko+B6 zT0{VqF5Hw*AUY06(6EK_fJP?JC@wrmgovOPMsTxBxKKV9dR~M$&4c%k7^(aK_n86E zLY>7bEb&8OU+|Hp&U1YmVJO-aill%RoE1l~gZiPRa&P_hh!)bg5p(xI zMNNd({sAfj17mk-?SB$rA-3ba&{@nrHfXpFjC79Rh&yWXP4kvPJ@*+=2;iu>To_8&X6Aa?*v}Kp=4k(nMdXp6o+9>cJJ#xjwAUo_71>l{Nsc#sR-@EHrnKpiF zNpIcua|c>*vTd8y4}a-yc?sNaBh$TKijDoTS6r^^6vMMVb~B~~aaoAzs>f(PMs@bu zGcI6v#~@4CFxtkU1OU(^ddB``qx%*+(+L_khsJZ^yI8k2XgdTVG@a9)P6Bvy;qd_E zBQMRb8v~hQ&}KBU0j+?60Pyo*5dSOfvkb}klVSG(<`$)o;3)qV*rd}OAnZ_*>J z2I2vb4^HsB3zY!3Q?H#jZ5I1k%1&)A0gqyn{2;KSq^lbdJ215OsDu?_1U*rcx_+l> zOAwp$&Cr>L~be)On8}S_pyr6{!`LnN1d|(;Maa+VYqdslAEHUP;D760g zXmMIKF3)OAI+>&Sup5Nlr-6ADt$!8H z1I-__(-OsJ?mC!=R!ZU$D%QkIIw?K#C10xenZrqP4`_A5;LvVyNl7U8Ymx^1q@Z zKs!F@#qKLB{&00`Q%bMqwy+_|zJP)OFPCjt-y0;)M9O2YeL0{XCVCaU3di1)4^M4_ zJcv82AOf@W;&Uf5P1z3xLEE*cU~^ro(?`6EB}0%svdjOUFMNCvQ3gO3a1l1;*CWtS zXQCeR4q$Y)YIVXF@+dX}bkQ5#wPu%m~-=rQ4@gah}JQP`lCULmD$*Z0&2JQ!4 z{{swrc2I1*42aCoR+G^XQ#BS~(-27eW&mDrlHgY!ps%@QV@qq={5+lMR&{i7q__?W zH$7GaY`7l5&-u6w{>}c-r;&gCOrg%paY_2RUsX&`j~)|0p3uqe)Dgzv%$P|xJ{D5a z;k;79X0#&}VlK`+2a2Z(52yW6n~NFDRawqG1$J`Kb8OgdWQ4O9g8jLtT!oN84m2D9 zOP2XxmLV&}t{c!`)BCb?>Owjv`jilUh_)*T0C8WAn^4dFUz2D0@41_4ClasPtUkAC zDJ9ash4xmzC9|(g%;WpIwEMsflt)J^v8QdQb48U; zwx4=fsb#;WmMqpZbderN^nipe1^ouQ7{0z{T+n{+pI)-pWWEtXxIw4Q~2wLnjK5;RQp3Wj{JefAc>{_K5+8`T-t*t5LXsN^Yh9H0Mh8} z@bNXZZ5I)I8r(9o=&%faNCrDBgBh+-eV+%YEd=U0gym2^YH(a`0kcZ-B?I%9nXe0J z_DAeK7HBe^G}Gv(AIwY?fzo(M91;8!4Q^U_-7Wn6LE?`iUt+w!y?*&OEXiQ0w6r*4 z*f>NMZF}`{XSPjAeo*+a=DU}+E!CRE!_WpSMIL(P^JN-=8l8?_CGp{EN(xE(3TSRX z$0?u|0IX-8(WK^xOH!8mhw~}wy$DJJ(=!hf>p`H>_>e3md@PaYHhk8=J>Tq1D%6kU zRjIp~Up~?z%slm`&&DqF(S1k7ha`st>cQukmL6OURwWODCZwULX6!>dv*70QZLHbL z2xS5yy2pYK;K9|_ZHeQ={#j)hSluXrdU)?px($t6^0Pm;)3>qwKRCRYzU7i@)}G)K z3pE|_>tOjKKgsA$h95w=e96Y6TOnda!0uYSyT!1Eeg+#wjF5{A6Fwbk+7SgVQ+W2RMwx(+l{ zwrpI5BaFk+X;wgjoC`j0?#%YQO{TJkdyg%Sb=*Vo+k}}Qoi)sJKmjZXU<0Mo+z~K%A3o@ zAa(^@&4kE1Etz*y6HGpDCx5oB@|k;h*V}aiSWxEEqwK;nNmaY2?hGJhZ!qgex37KK zifq*M5iUWid`jvj6&E1iXiXsGg9=`+ZrN;~R=m6}&!j^ZebycC%`DmWOYZNmjZyAa z?3ms^CfppM)KEy3${0#nm8-y9MRJ8|$8F_p!Zy8ZNZG9pe7cyZWJztdmI^18y!o|l zse(@FuPCHhqd5AN!<*$cN868SJ@$_y)dL(h-(T}{eC4ClvHKP0?c&?1UOxZ-QFIm# zP4-DoydH#F{H`DKT7AO%CF;3>}mii%!%^=?ImsnFea~ZbrVCE|2jp^C8zs z{Unw7oful{O-$B6#+PD=~2F|yF9TV4=3AY+*J>8hDnbVKg2?*pK-samj&JP_@Y!>NBv7qkw45itce zf*TVtxPIjuD*|0-kLZlg!x$sO`JA9>MM}%r1_3H7UEPrvhFP7$n&oBfiwMXo1M4Cx z3U=&^L$Q<5((XVQxMDg9gC)Qu6gYdB8y?Qj_%ejz{~we!U*z;oL8;p@{?{k-e%m_6 z^H=GPmXUa@<Mp|cm+TU6l?L*P^bCZhBkGJ=3&1v7&s(R#G0IItnxj(ABAy{tZ#IXhvCWP&0KiOEvtnXZ>V3v^i~ znV5F7hgI66jja^i%ng~JW}c;TnbM56m_r`B5$cAEd+qBJ#&1-agp6E!zx-`LEMDi~ z=GLoDuV+;O=1tE7xrX|LI4*h6dsOzr904+^rOm2vV$tKRgx=M)6n0% zMsuu<#88CkivVphn*=c*^n%4vUxJQJAlQOf`Tdj3Gwi~p*<|g`@9E?n&vo{vJ#O^v zxkb0jGuN1El_j|nJMYSy7`;$k7MZ4PTXKh?Y@+VV8S|cE#gI%4jC*a<513=x2P-MbLZ2J zmNrZItEer=AUjW#RE(>itp2H2}tw$p9t8iEI#H?v14!KDH#ypb(2{9C4ipjnuIqR z&pudmRk|*9S(1g1982?GB>R-z%bpnlzwsuOevl-k>5^1JU?%_J7~I0{HFB(~w}F`n z&HUd!Q#Z5LvxdxP$C}L@IaRU(o4Xl`rqFX}a~_4uLI?QbRKDZ6mQ}yhk99)!>8qf> zbjdVznOhl8pO+&^Z1fl+w_w(dfE-D=l3!3@T^nnfb*_>;((?p}4oBCb>YD*rq8AIN z-NScpia&2*TemcfcUlVmwh7!QZ9(y6rDrru3n)(~>PvUGT5B#(gCwXcJQw7mFxND* z0{T}fT;&oS%ww6q!r4Z{)kbsxVE@c-P_6b@#w~Oq?^P{||C5O4tme-iAFmvyWopy$xTWd2dN+d$lr~%unPK=V|)dMNJGZA1Ta2z1{k_P(;C59 zDE_CeulVn9xv;9={;1_v`BW%M8F(9c&Q1RUWXO-9w>6QeqMG-hREQ^i=uWcmA200y z@5<3_*xyewSZ022jjXq)hC}&9ckL3yRO(p+B}!n4%FY#Z8yQnu*coALu_wbvD9dBr z>}g}A;0XQQn$qlbSspnUl_MAj+TIv1Q6Rc-F!!a38?gqZ%D1DSiDLh*PKA(mDRtK`F0AVtC!}am| z`T}ySru02|8m`SX!IiH}SXKt4e^){HHCg}Y7_IDZvG zc`ry;X{aAunj-GruWO1-s3tV}-LwU;pc$Y)QtcYMvK^0t!%86S%RyXp(wi{LQ z8fR8vEi!3kG_BknvKgzEDq{jOTbJrTj<2}{JWm@tsNv`_K6zbsM9GO!!&?- z8h?TH9g%~=x~5s{$(MKm`Vt5-?lHX?ijk^2IT|Pc#}F?nT5r;%VkYbp0Rq(x^`bCX!oXvmXS1bhj$H+oCoL!|$9Y)6N+2lmbO z5~X@;&~VqHtxWzi`LqXsD;R5y1lcqxB1i&|XuQmG{)tz5I^k`9PtHq_BxXqpIv;Ng zdJP1T&^jslIcCG%FL2@%%9}=N(Bnt9t-6>^cNS;Uw6i47V)Ul5onJv zieeacP_FDV5Z}Y^(wxhT>$y{-^;Zt6BAEb(e$t%B-^_OEu$V!`s?ehFw<6$v(L%=S zQxy&Lwv{7=dFd^xm9J6G!IkMRa4OPV!2M%n$i)VbrEQjuAXDThGr;GSKoSl}x(MyG zEXNxQKMxjl$`ECzv|oXLjp)?lpE?aOSNp`h1~L zdyX3Kg1nNw{W#F#0gnyxy1`%pw#Y88=fVC$%xTfKoBGUIDmnWL9OKq8Ukj2TR*)O? z>`*43->gP3KJ6**q{;z$4e)w`!^WRygZ3;61NvLX;1lEdTQ2vllhkzg->fQXnSJJv zCd}qya-Fvqkj}kdoqGZFM0`J>FIcKPAjjX}(XvO*QDG+UDyh2ab4>p%T&ePL+{!@D zh|FEass_XDv>Livg`>wcVVa*)8Vc_(X-%^V+tPp9efcHUphrU}i`;^NxRvQEzJH}S zd}AQJs4+cK5`J)3`>;x94ZhI3#qrrjd!Hzu$eDR;kh6}>bzWVN-qDA&;?3My*Vrn@ zY~W{i?Hh#CWV|YSNnAsS@ou54-n&+UHaT|o!=5d@hy|uU=EF+&({H)B6-s0-?++yI zTDb%5Vb~s8YO%qZCi%~R{Z1S*+#I-LLFOsO-&!gH<%c>!(cmweJp+dCdJG(8ENI*)F)e zL#8L&KEs_bly90Ghfw5I(! z*Z6^0+MpY<(-+F`qgky%ul}9+{PK&oFhDu5d?v z<@9D8Y8&ynyDpjYACt4%2Kw_D#a~#W>|{6dIUtiy&|nK&rpG0|W|w*NVpGePp>Sj+ z_?_IsEBl0D=rt??H=MEH{2@&G;#`y>LLMP}@MDn_KFK1yQVt1MQMIfbhGv#01Ct zd-Iv|N0f=(|N6A*Ywo>%4sft|I)YzfQhXCVN9c#Acxm1995*)ih5+8&3tj*KZZ-x~ zyqjfW2M8-U>pJcQdcy}|1*&uAjsj((TwM{TcvCy+!%u1KU7C$buP1i!d@`?jaNGhE zLcH}DKj)7(AcFPk)SNV2I0nG?3a@{S@mZST=H)CJkCj!43DpIs*-(KOo9m^m+pnqj zzsgiu4USAbf-7sKeD$uMI&kG}@?zLOw~cO_8Uo{cD538{Ibs?C>J!5L(PTzvu7QTk zprJ7pE%-uC4?{z!j{C-W^GA8}kOQVPv&Z4_>cQuXvPieV*AU+&bZ9dV;h+NSN~gJ}6Tq@`?PT2!0&}hiYAVIrS$i_)_u|3 zfj=64Gp~fBtU;PTVIedxsB_y-HIe#p8cT2!x4ItJ33R z(W`rfGwBB>+XEhWC_Da3Go1G!z&l035DxTtkdAP`d=Jrn9M=Og1Ike={ZQ0Y?1$eK z0tfNvsE9|vpW8dE;UBm!pK3cabWYUX;}0n;0q}~m4!>GCn6Z5tzS$ZplW}kJ+t#l{ zpRnSiUC`9}`fha4<=a_PzlQ9OonPZFTLom?gx5a^6`+mNqi1feAhV|^91WJaRp;Ei z5|?b(fQf>pG)b2ufjX~Gq&fG8of3p72BJOEJUu|bZXl}@q4+~B`E#vCV7Q$|Sq16z z@+6bj%My9y^biA+LsK|Ems8Q@)K*3i#8>afzyw9QM=wTkzA@zk(AN zI=`&1(b!1d8L^Ni(5y06hbkBrKS-7Dgy_Mmoe2Cy)Rj~6%Yd_1DmrRX@}{m_9V_`c z+)5$y<5{MuU6Ef$YWw;CYOya%==k-u#IF5TQck@4_K}zYUIx1=kd`27s&CA>DlnJ= z0`sa+$b!Qe>=K6FoDu7W*>oDdXMU>!000X$BJ0@t>tL~zc8$4&yogaQ1BVPN8TTzA z9l_~Lwyp*l&_i@ES(H^hTO_}Tu`!gbDY1$1p(zRLvHco}DHS`wqVzLRt`c}swdW-U zergt?%|pbDUBL8QLiShKm^OFde2TMMctA$2IO9zyQw_~J3;JA#?~Jf&+l;sgJ08c2 zTc**)oUfmBh`)J&U{N|i*MQzli%SS$WpI7kKpI|F>N4s1(8e2(M(^awU!jO{`JfR6 zMpAV|v7ptfJ8yZ#A}eIC#EhK%^qVIlvbimqP{Cjt>w3%R3mgcf#k$M#+Nol2R;|~6 zQjFC)iP?hTsQ~{W7Cnt>eI^ZxPa*?hCOk1AS#}PmlT{Ucp`N&u{6!Z*ka2*}iFott z=_LE(&46H%iy6HO+Qv*MWx-V!j3Q23>&voMl#S958)y|TC;NPO6x3S zmr(o(Ld@O1a?d31tIn8_s6Els8?sEk7QR}aG+@Q5ljoYseX2XE6qV+1Pw)jGk&cH{ z5>_Sl$z-NM>&6i=qr*TPKld?E^sA-G_U7FED5JXHfU)GL=1kX*t}WJXy<>-kJcT5l z0A^VkdtKK?jlwud`Ka}5o>k{ST?g5N_qbL<%;hH?1?oz(Jc!{I-@Wgwb5>dIOLoO< z!!M_;bOL;CIts3w=;++CGGK?A+C(uz)rAq~rNn2e@*B^0MZOvC#qpcr7f>tD zEJfIl)AxnY8t=ko?#c${wPOpeB~Z(1G*hK0`N+l|*5aS-lzRhEngNwk4w zDSg&r^o4v)jo!nL@n)|ac_z`{L~JG9%{Gh0GBLKABlOuE5k*{Yy%`M6m(sbtcBkoTWbxGv4=qhwvJB`F>6YPRy*55R7hB%qg@Z6SbSKn^_L34}e zn(yogzG>Rf_|ht1>8fq#>R!8OKXa83;bh_mZ+hvPAe-5Y$asT3I(05^6Ldzeoc*~_ zk`Xt#!9OU5kNyqL0$zp1hRYbN`qvmxgmv|^$S?9B~Sd0{&WG{-@leKalS}TW9?92U!Gr*xuMNLsFV1tk` z9Z7a_rlP)VsA}oz*?SZaR8nQz1w>5K(-_&9cMD?7t0e7|uXXn-HPr^0<|zw|98}PwEy2a01}9 zrCk(Uj?1wT%Xvg!Kb!Pr`$Oba+zN<;^Fu|3#}5~#IM3~jpY|@b-zM=5v(HD;USd1f zAXMBv&_>%#I~f5(>hmN?J)CMzU2!xonQlq)Y4c+`)ir~u~htf?w4J1 zQev=h=DQ~>B^sOqaEib0qP}$Msl5jGJeejbn5_jvi=&n3_W(UKg#PooL>IZ=KQvxq z;9k@O+nLg4j9gyl-@u%{zX}mocHD_k=@7Ro674z@4l$^EPS53GHA$DJG1{P^QE=^F z>txZJ7cGJw-Q2$W@WuG!z_--!qGng-e5b}vW0NGo@M6Wv@hlS%A4cN6eagc{25g?* z{#HoC3&BSoXpBBTa!fY}cx3kpS^zrgs?{3g_GaCoP3fnfG z_S!U&3L%Gp4#t0f|9i_l?(*XIY&*K+waiC}`f4tRiy`?w1r+o^Th?kp7KU1?|f%{6g(M5y%3DgX|~q| zh)VD~h?r?c@-+NQnO7$?bUb~p*f@O4-(;kcbla;|lM5gEG+-$=nEnRe>IWgK)6oV) zpQ=eG?+?GSJsXZV9?(bQ&6NomAl8-laCF~&TW&n9MpG*ycqA&$r;qKo=;1b%t-Sdt zaOxqdN-xxcyq00a2q3$b)Gp%uogBp$RdZHT`L#_LDS_Z_JH;py3-rjb6Pe} zvALUMRvNV|ry1H?WPwX(&h%-INnl=DNEFe5_@OG@V)CGJ#vQ+y=0bgE;)e4{0vUeN zOzs;8T>GHGY_G5w9zOEd1`5f7?J>a0hd!h4;%qnGG@$0`X;W;M1ZxbO?#Y1NdS*~7 zSjIk5Jg+hDc5(tjr*3N{&4BwKpvsXIyc>+=WE7;u|7Q;_*Tp+h9Hx9bM{GB$isw^) zPc!grg3EdBeyHTOi_ZM5ON#5s|F5#hWjTdb1%I;f#r+wWhO8gFl~f>F^+rK|p3Ufo z$fzE+f{z_+k54h{q|JMI{icUw6?Fby<%Hm-XWViY7*Mv)XNc4Aq$?x|(~i6XA{g1< z0St-=B542#;|~TUsj^8>*sP8HecfPAFIjArwavnr{x=_U>Mi5C9s?`idC#@#^xs?W zNay7vvJ8>#ZN!d8C$nPviq8>HdAU3bV45V@i>6Jz@BuId=N_gwHWL!6Z85%Xof}!Iuby^8aTIQ zLt^h=hw0Ofj6gg&TRkkyhthq=T)_&P`j~nXM(mFF_$RcZgK@eedgNg;9(2)X!?5Y` zrr2#U&ZlSC)_{TlbE|^?0`k zj!Co%Ly1~jDYjepoQ0B4A0>qP$F~l91Y_XSeaS)%uo!pvIrgHhhnIYJFRKsQ{1qSQ ze|@ikpoYn2+@cTvoSX9ARjxr)ZVNF9FgVz{x0jl)E5T@A18c?@pf~a?8}Ucqiklj) zBeq>Hh>5WhMW=o&TUexiKbt<`&V+c=ZBRcmpdWbvxc%`FlY$N_py7Itc+q*{ZAr@y zssYz=4TK}VWJBnKbHBV$4AB*n(CS~p?O)=!T`ak^1`Vt}H7Gc(E%@P|%-EEEZSo#8 zpq3w#=ekvF7?|1AV1U`Fp9Q49l8pbd1s%gQxo*S60&~w3QzG5z0GI~}+s%Q1>{Ic= zcX&pbAp|+upmVD>rIE3@$(>z-;Q&t(!d%os+>9T)%J^de0KpS5gb_dmNCPfDEU*&* zfKmZ^N!HZ^DcSMV;AQKGK|`c~R=NH&X2@ibG;RYA{C&l&IMeB1tUt~0-2;u_R`Lnm z=9Hnj(=7SyX0j-!q#0`Mc;AYCAl{--KmFI0j41)_j5GbkejJib(6$bpMl*^Mbr$vf zw^V1G`^1!qTh?|X)kat+@%&9$r!f;RbwbEK!+w16xf@lK?~};4St0*6t&{x?`i17y zl5+Q7>;6k5)AEB5P~DZ;HyTWrf$jQq#L1A)??NJ6n zx4HUr&Og({5e5Noaq={ZWVt8n-*cyRFsmM$R6qCVD``1YJI9p zJ_Po*Jh-oUFZNpfU+qN8*|X7yT4qWyt~;q9pY++LNI`vj@BBl3M<&(2qg*FnQHgXI zQaDYGcsSj_6STLCUaR;KD_5xMq|D&W|3bz#ot-*OV zad)C@(Ai^KA*ig2$=j_a89dAq62#y>$v^ zuXHf|o|JzwYRG*{Bzr_a>(P@}js6?52k(k?_i30W7*DL;=ozYm5l=zzgoW3qAE{b0 z-R(fJkeg+M1uaVV)A6?k+7}51)GyGBf8WK!Sm0Ur+G|`|q-gaq%d1VviEJCVi2Mpy zXjq{xk3)`8o|HNJ)diNuuVYc9Aa_#es9sRfJ6Ee4neJ2(W3~EaAA`fc?j?~W&sT@O zUp6aq4hwwG!|t31iAmIfP1H$`Nf@}uI`@LxY?^I$0udAySmB5lRdaNb4_M zsZZ)&{vp8ZIzi(O)}c=h$z~2*`R`l_{B(#R_A|(X)dX77|M`g#lyG(TK&~{pUnX*+ z@uNpDYpVd)@6s_|z8^}RlO3A*W%7Ls>4h$j84LpSx@_4anuMOZu+QjylxFF;)iKPU zhS7Oes{^~|m-GdS$_6!}ky^hR4*h@L{#}i{Ydt`fuNh`ykP>ti@S~ls68#Q4Uj-(Q z{9^fj@-B}!Ij`NUoM>t(3O;}1z-d*eG$$eD#Nho12A68*i`WE6Z{2#Hx332E9$yZ)X3g0+O(=uQ) zuKKr*iUDlhGH2^7AYaKz(x?-98d=KaE3G6dQt{qevIuaC0W86}U?|J+q^<^C#Bp^d zSn2rrQ;QhFg57oo`;rcFV6OCq@P{+c-@-^L!~W&=`Aj!Szfu&#d!y&()7Gi37JiBa z4P$@l96DTT8p};gJ0|!_$uJI%nNaC2TXAQHl?5&`Ugf5&E~)dG<<>zfof-;SW9gFM zqS=4tWR73go>@MrIZ2pWTE>^aZd7}>DOaz9W@?($DTeZh?$(?{i5&11gff7iaepF9 z$GJ>CL_0~5XZG2?jJ&@x>~`jow#$| zjBA{B_Fn9UbRI6twxM-{wF^6A##(_t&?EJZ^#!!%LwvfOK@XX(Me9Yb1=3bbIEcK% zK}bn?df}88i&>)9ONZGEDJAvM_eQC-v36T?4^x~<+jRW=j}we6Bds8OA-QsG$kP;d zoY~!KdJVL@ZKZ@x;zkBqjCLj2#v1$dA;6}jGd#t>NxMa{YgkxhACrm-$S}045zX%} z7KHX(8tyUj+Gc{%Ij#Tgx*Q!r@9vw^`2L~~Xe18qwyEWMDsRkUI+zCt2=BNLnSH_b_=S$6z(}K` zz5OWyg8<&*FtyTsgI*T5{R!uG2_Q_;czZy5;Uk61b>7s=?0M{Q7#am*M4yquxqCviKY>-*Cvg z)KoN8;jYcyfcKo!*co;X_pTa4r%y<`Wf&@mMX#f+*Q@%S&}IGI1qMS-~_~YV3W&1I$Q$^NxSKOw#4(?I3sKpqHgTcE+Vw zON_y{?@yjJ*;=mUwfctycckkEymBslbX8-s8r@{3-Cm+7>5?gwgl0~vYwyYQkj?lj zVf4C`a&a``Wc6?`)k~xrz55Nhe5^=bOD#J(mR!+<#rkRdEfo0c+@w%gMJMBbZJSn! zmrig<=d}@*neh%NbGf2&rR@c_Hi?I|j1W1H-GmDV(_Hd4x7 zMP$wuEut#*RI+4MdX)8scD0(e>)qeVg9 zYNs(o>$x05tSAsOYqK=w6{E|lr+bKG_M-_?PHefBQl-FO0R|Q zVklCURDWCc7#mI*(C~VW9g}09F{-H0N8UP3yT@`e4W&l$Ey#z&I5=686t1TEUF%`J zPRWjxxw-jB{%HUDcJ1}Go0o5UU4riO>6d{(`$*WStZ%3v3cp{_z&L1!%i8n*@xl9L zXgQ0+YVysMK^{pNyg|6C2CgP+#G2dH+OnaN=b#2Mfh0$Bo3yZ6S7OBs^V5W}1|bNs_`DutUn2BT2S1 zJn-W?OHLXR(}ZPJuo5XWcqEIJnaf2cCgv;ClChJ`3CsNi<^$l(Z%)?VORgX1UB45h zu=Z3`^01D9J%AMpgyVt!L#cOS-CrHd!TRy`z0(9UCJVM6&mlu~BDL|x6L93@ zNN^UWQs7paAh)5>W+pL!#2)QvyMJd`SX=>6i#({lrW4*Is0bw_+j%){mH0)8I)6`O zj-xG76VCZ*6ff`Pto0kY$_W8*m z5E5)~3`EL+2HPLHzJF+bGgvgrdvr)y(wCrkoaT1G@_*48Gf9j|dw3`pw9 z`K+$m+!%{>SBvc)MUbL z8aVOU$Un%3*t=L0?B&;-oSvHcpBz@|bv*vHj}(i5Sjd184VG{!GYE8yrALJK?{jb43bDlTiMhExFKJ;zjC?;4&+(+p2vab#VEu zevtNb>!oSX^@#5KKrogF&g#Fdbc{T1=Ze~WR2Jc#p&Hdo$0OVws=Fl}x9-DH+ENfm zmc^wKZxPB_eF7Ry1YvFPe9uRXCc=*#LgWk-X0BViNF4T8-Wt&aKyL0vw7W|vJg^PZ z{oS65rsLRW4^0+V!UD}?>(dep9Zox#!acnPV{iB5V!E+1DxD~sBw`Lq z4Y{zn8|j@M@*pXELWSd#!&_X^E4(7pAjScZpBv46Y982u1o0%(r4yk!E71QJoM+5snzW)7PP&r1a#cai@HcC6{KXFQB zjkw)?34bMo2V#$f*pVP!D-b_4G`;Uti45!^3D$&yw_)L3*6>a=yp4ivpdf20$l{Ck z7?#eH1hGdyF>V7>48~gCtC`Ry9#hlRF(g@m^|(UGkbIxMf~HGC%4BwEz^L-e(b57` zGx}MLbhSuj{_$A!Z!C7kkH0^8#ZJJcQ8UK6=tifNfmiSMn{UiynQ4_e)dO5CpAUwX z0ilAq4o%_enJD;&X8Q`@xA95zO6&n=CkAimrw@Xz0^q;U+~k+gY9N(@c3bYYCW39z z5LX-|3I)Bu)b9k*2V8~KPs7M4IN2KBje|pH;4dlg7dZHH3bGqD+PN~)j7P;akN&8D z67Y0Ucsd^}Q_`6*rHl2u?G;r(dTtM?6y{3=D{n7i^P5THM=rStlL58cDuAqcBXQ-G zafZh|Iw}(~Axe*^XIN^C)h~z^rj0q;!AawL(VBeD8x!Y9@tk@&X45{JKIXz}ETB?$ z5CUtc!%iR2KzF^BLBRht*S% zRb=|_70}G^R~LoFOv=TcLhFo%{Ij{D@zCo}lUI2XjoJKV`d{GIyX6%e55!Vz3;&ux z)O94X3(6<&z&Sl|r+gQx-k2U`fg5EXgmj8;v#ADNm+h!L-FzSOP*aM@`nH0R;%}Bq zJh(<`1?_b*h#v>!!cAIa%W-4nLdyn2pRtzC&jIy;u8A1hJaOqJV3-By%jAME%?B=0 z{v|Y6mk2h;zl%lD<&Zu!Ov8?X7vEA=s3?ZFC9* zFQECL_9@cq4lQTWKbR}DdX_26Gv{xFgyJJ9$w%>CHW_j{k$MJK-fJq%ObG31`nEDF ztZUVIN`4H-P;vW&7u1<-%neMLplk1~FQ66mOSx*!y-EAC?w zVnbVJz&ZT82!hrYXB^b8&~sqx^~OY#PBX zyu0PrCEf5L89=mlKnKX@AT?&6rt&KPB75WOa& zz4!vZI!r-6)$##@Zu<%0(Y!%F@kONjJkGJDl8p+7zy zx>A=eTC)j#qtG^5AJY1#SM0i9zT2fkc$jFZct}JpassqQcER{q`2 z%Zo4iR-comQa>YxWe^k72rBkB75z^sesSgr;-3cM3H8TL=d}aQ%Zo3kr-1HLRKOt> z1uuL%@+$POScX0izn6{Q%bPyD`t#M{f6$5ZrA!nQ&}M|K8H)WKE%-Uy3+J zPOwSiTCbk{@gB}dqh_#j$$@FJIAwVs8t<KViba(tDqTA2%(yKAuAYphFmN~7eXna9+MS0?q$qextxk903SV61W35h{7q<>3OxC?*c9lKlQSunw}UHTArW$n4{nnuY7RY4%(PI zS=hxm{f+(Fh3XA^IWMTOb$R1~)`6QRq{O2pPjiEyNbUFXgl;`D{yT#ldM z+fL@daSl`y7a%sY<9q|C!LW4$!TtQbw`&4~2ry?&!>h%T>z8|u#m59$XysPpXQ7Wh zgn#!`Cl1N>Va@1NR93-^(2hu;v`K3tU12uoKq{us`D9YwJqBEO)!Q&cSuafQlAn3R z^X%;hMJ9$@x^G_}blqpWq{dxSeZP}KcS@O+)XSdf$QsV}kt=yoIxpR>Kakn)M%r@J zJpbvKpT zL;t=EKHj5ZX@7GN6>yjP#g{`6x1OE;!9Ez8B(4`t%gMWSg^;sI*{8Mr0%)rV;& zohF>U$3}s-WFNi9{EE*%HJS^w%R2ryW!>Cp@WJ)M$dEO_@?bAXlvj2_UquLYAwuOl z!lJH}_9OoFCvcHv%%ssGh;GE74r(?q8wlHvFoM1|=6MO)DxKNY6k8J{wcr642Q2FypOxmbch< zUk@{m@(EYr%BqVJAT6YB9kz0=py@P8{o3u}>i6g+aL)RAeXq#i6i}A*b2DfC69YE& zv;Nw!XCS7lWFWCIFPp=zfAri#7FM}JdnK{K`uR{2UG22+EI137z9QPxgWkAp&@&&O&%9%lC;oJ7tY*uU^ zz+M;7-RkPgBjN(g&Gmtgq!u(Q6n@Grd(Ex_=ZkX3VR5Y3f?*18g0K`I{md z?mAMm%#M@(G|@o%9uNk2)8brbE0YvbD5>%b*0U#Ae9Pz`{X51~1YGjR8GB)jBc17H4iz zGf>)DCHjP~3HYfr>y>_04m<)f&PSzTjkk0{j~E!O@h0XYCrD@rJo>-2^loNqRKYxm ziMD~k-SV2-bo5T02uQPp<&EMH>oi_ajvLMs1+HzdXN5U#B;;t6(=`@Ca3=$>ob&2b zg}POGVbR7L)lxu-uRdb*iXh$LxuowFVno&GG=VrZV~e3li{~hulqu7M&ssmsWHAi5 z*oy~TjL!(bWRVs+0X8>$+1eAY_rsQ8du8P^4JQ@{xW>Gpza>{n zsQg-ieske%MMLgAB*3C(ncm$UyWdpxA;@8amHX<_xQz29##jIim6?cUcwLoOI(kPY z+j2i9aKC|XQKRU}!pTif4RF=7zQlO{EVC(}ZO^EIpMsqIbf#zpPDJ)Y_2Y;~>6-y@ z@Ujet(lwS6JQ%%zP8K1fX&}>h8rr>!f);52xxh?we**>NT>&uB?*fEC!5Q^xLUdzY ztsyPD?(fUTqn8dq)}+MV&A_ENy(1x!e)^kdi2`TSbc%O;7O$J!Xrpe4wwtCkYsp9@ ziJmEasi)*eB3(>XY{Z|=apiIL@O+Ww~=g9p-C=j~f}I_DS5zLa>dkpneYXqE;E6 z#J*I9%AKt;#$C9G%kk6EVv8W#SzG<^w}GhuvA>Lsa6I+zw!_m~+c&EfL4lWo=v0z+ zdmbt-Jib?A_2Daxd>V*XtS30Nu8ArCnC=FJE`FLWJiJYX*yeFUr;nD#>9G5s(y0;K zUIH~xk!i}rgo{Hk`%3z(3j*9vWD7@eyS|7gvqxq?!=Dl2gNTE9;*}VBDS7%zEIqqD z(>&}YYi!=qQr^P*ntK5l{0vNBzd?H|FJ6T?H~*#D8xVgQkOM1BH6^?$An>RVh>NXK zr3td=#7bL*VjGtGr?ojM1+sudv12-(V>$uO1S(GtK~;Ybl;m^mR2)4R zXjt4p&psrb>JP(=RSB%Zl1wt20QqZym=ri%_$=dTTACgndmnwVuT5ZExOt2QjRf`3FOk};VX-P1C|3AL-W`>!WId6`0Y>pvin>n9G z(ny+9%^}U9QeR~!jFdSho#s?338_@--WX8`o#a;c94ehvDwXW#_a|JB&*SsBuIqh0 zpRbn#-Xd{h2g}i{3haz_cUQqPNVyl_f((ZEDI zvu}i7v$t1d&b;GH5j-W{;m02_%xrl!S8~0(`1u2n?j$!~#Jv^_{NEBUd)SKprwIDd zl+rD@Jsk99Du|*7c20kQWAuJK>=_hzKR0gh-nTK(&xDgIup^uABrM#~knf zpNhH_@Y7?m2HED59Jj6N_@m787f70 zE?`6e(00@HO}vw-V@|~)r<>q)^i9r0NR6&H(pd%86{Uk*sB2lKgt z+p1uZC=|Brt)7iA>I_9OdvwfBD?d2P`aAmN#p1o&fH+d*e(K|~@W|1IQ|4|?)6qvn z%Q^*Gs_Yezak%Q!M~|O3mc07PMND4JTmpU~ZaQ<{Dzf0_e6}dc?utXwU57=Wes?Xd zoriVKLC;i@$!5Yb*s7 zAs+c4Ab(ouzd1ucD3E^|E$&zmx!O#ZYeQSUYX1|!T!`frJ6xL|8pK>1#groEWyO0B zQa_a^+UKrUe43j{v-GTUtgu$K` z0U}6%Sh&td_%Bc_9S3GN191c(kN|**TmVwO1sPzp%nKo`owh+F1tgUVvupv`a|?4M zg`3eufEs>2;u%MK+HCP@J_}SN0TtCg$mf7v(0uE^MNo09=b$7*aPGmHrawKgL7}tGOycmY#A_hd2;&uqmt8;8$Z67y(XU7 zTUtp#Do3r0Rd));`wX8t)#_!6o*zM8W~-W3JvTAK8*q3sgrDi;8JPJdn0eo4P48J% zGa6%lLoMHky+fY`$!drDNkHTUTJ%xS#sz`%7(KMMAYUwGxfMinVRRv(Dwf9YUg*3N?HS+x{E*JOR`EH1o;aj*D$83t8d==U|M#Y$!;x-f%L4W7 zh^E_WNypgS^UW9|JVS-xaXfD?J`-}zViJIGxRs0u-~g@DAEl63*MwZpT-f?Z^& z54tdR5X!18+|4XxgW=f#I2!;@1r+UP7Q&_AR1RWSHX>UB%g!w{5Q8v-h0$)%3!|{? zHGmcXbK(|q6v7aHm@OL4=}uI~PiYmf8X2smd z_vQ6bW!T~Mr^PQy%oq4=cETTbu-)g0QXZaDt|M#ctX)tZt6Qk~3sO#Bp1xV^AOM+g z&bY+@P|Fn-VnJlc7Rga}huBSYqp8!WTO27dNHU<=T)-KG?<5rLMOg34EzD;WJJKagKl+v)eq&9 z7e99&Ls&JZ?Yf($bMAFMBi3RuO&Z757~_!%AO3e#LKj)|TcjHqF_WTkPSw&o8|qK? z49Nq{hd+TwjCe;E5V46yM?bzfnM=$+*N;75S90jQCdDY%s=S_}Vx?Qm(|4aTx<^E4 zmP!qGo?<`OKVsyrikFpC?N&W@(aByhpfh+?*}ohYWF&m!>%0(m;;rwFcNQ_9Zwk8a z;t#Gs@&=2jxdoXV*w&W9{O&@EPT|%;Xsla7h@xb(6dcM)4waCc2-nvQ@(d?|n*Ka( zCckyI-kiWSSOy}NdFCVlk<@L@5d8@RSreSQanmdB5ED5&cit^_@aL-}a^J^-E^Wu% zzFGVmPc%LzqDzJ_?@r>5Q#=4Q^3+V-GRja)t9}??Q#7j&^UBzXv0Ht79G!T$Z9C0} zCngyD>jN|jJmswC%O;-c5m)pD7`(L6iMa+`-@|%walmU3Y!B~seP3StqMR2!@ZU{V zxnpBK=fO!mAvF0!MdJuxY)Ir*6YTaoEhZ5wh};3@{CzCo}q z9jV55J`F6*nN=bDoK?{*{!n$kDQUfCEBUHN&k;k*g1fv&di z?=n#`|E-Wnd8^#88AdvtKlHncu%V#M&*M zNEq35?)}I<5&Qakt6GqSXoMfj)fDr4-tUdmd~`UZ-ykt`F1G*f+uP`@0FQRp?`7!& ze1Ur{c;lF0MGV3L)&k0mJeL=NeSD;eXYTTw#k15R6FS8i|7ERYYE1=PQJ{VLi%1D_ zR!fJxSPSQsD*{FoAoU%KmKMs*ALuyeuTFOKRgQQ$vnTW7EAO%Ois;Wd)NikL)On>; zWbtV8{e=k4O%idq8L~D%YjEY}x3ID^8+H$`CjR?llt2*}^xjGQc?@TaC7qH06C>Pm z>VyXp_l=zFQf4TdbSrm`{CgvRay41-Lu0Blou5SkcA5oXiXtljsx*VK$c^>mzmc zLMo^z^GOLDzWS|KRlS-ZKp7ko(~#?@0a|L#)51dUlu4ei(SfCTbg?bc9J@I-?@K=> zHuyVSFNO03qN$(seFu`lAQo;fHWBHpO_hk8{GN*Tf;#8&X>46&X^_IJLco}hoG3hKdD@kR)Sclb4XqRC%Dg# z`>H!sVGx8aVK0iX8{%D{j1>t`sJ{Y!5m{E%ug!SwkZ9!joj$wy&nTkbE826-<%$-& zZP^kgRWwG~jRT(I_m?^p8tm?lPm0+y{=KGha|N}zD$#iy2qml}_7TQ~;QLl<{@zfi zi<0!C%;{y7le+7FrA{NZj~Gr59%|FWNoXZxhQXmV73!sFG)LuNHb=($?7kMw``7Ch z)beDrhT3`qEe|&_@VPEo3c`J;|5?^LJ`-cz`nKQF=<DZ|#B)^J}ubH%g}uWTi{ zwSTUEQluNP!sQ{%t%7)0V=|#1L0T$Zm;H=3&S&_{=sA~D2M?m#Zai<`coe=^6%bKm zu}~A`-5&JWD;>}eEAe}-{`f9!d|9K6j!@EZ-Pz@fXy)Iw&@K-yaM>%7>)@-KJoaQj z?i)JXQJMJyh|m>I&j>YPRkoWgltQN=r*|t(J6)3Xyqz}8xj7&6P`;zDg={@1bjmTT z#*+keJC}-%d=$AEym5OfQYq2%?U9l!mIKlP-cL2#H($Wj+PM#n19vY-Y_87`(ara@ zr+o|9j(zURVJ^r@o6F~FijkE4vGxZh^J{A z)wUFoN+K%0ZhqEPLq&E1B8`#&2%m+E@BQx)=P#&FKb{k_`gdu(aL_QgFM(S4Q;{07 zcvEFZAGxPqErId?t^5Ku^;lzD#cK|;rn}`PO_SfJW?%ch@u~dlO{hscg+O8KD|6>_ zG)fTa!wB%C+6>IHTZNHh=~oZ2wcH^cGCUv`;1OXe^g;g7w)RHMGKmtSGV#s!hmo{c zcIsUz4O=IHn9`~085}|7Cr6R>3m!TZe*$PP2I^1q^gputZSK!(+P5-SrR?svYmfIT zV(-}MgG3;VK|>T21a!G|AQEQG zZh}7@aNU1LFSB!C>z%+rxKhtQlndz+k{1Gnvffee1%S;SkNFPAyp97V+eWi~6eC~T zT87G0$?Ln~)nzeYTuwVkvy>aH%2~ToVI-W>6ezO){I$S0?lp4Ck!^Cy?gur%>DNz9 zmdmL(L;WgV+^2N+&*^;nAkwOjrLySVrkYEG;8&P+&0!*0*{N4NV}BwlVbcD`61mXE zndr(uf7V#*e|<9|Q`=u(u^rF>cUfMW@{_q>e+h)uCD5%<40t>SYV12TXYgXI(CK1_ zS9@q5@qt+Q(Ctgv<`%AsX59M;93HX}_>Cx=CKqk!X-V2_CqMWx1j8JY0km^e1f~yN zRrM3MetFj}{i@XNz9w~<;jZ~`Dvs#G3h_^AJSV`u*c*-MAN1jR#eA8Kt8KBf+oox% zRlFY7-t99SpJA?ZYYZ9dSb@)jKm$~mAJ2dqr`(0UVT@j{5=rL9&*fGr%WE@#1<3gA zw_8C{e!b2CxV!)7+h>6z8YR-r1ew>$3qE;=|_>2}2&$m#^D&GN+H?3jmFl~Ry8BEl8c)E(Vq z_wkOB%I)9X;R+*kTOuOG{Y5SI=1E$EzF9VC+k*&*m4CO7K}?&?q--B`W`RMnH=UUw zzJDfdGJvlNao+M(b<8Q% z!NNrSbie>9=mNg^(XhTd*w3{y{(C-S4m&BPYh8~6n-ON%w`^l#th9Vfx9`C|dj1y! zQ(^u4s~TWHfqKfbobS0jnM4gS3G?^8dzg?fB`?`LY;Yik4xHurri)k@&VW~Yy3ZjXkHAve4=u?M)*UL+X38%fyU{AKZuw4OL2KU)G_gV}4y$ocU^ak|O zf56P`s_ihayO?ag?Fm*(cg36JA%C(w@NB8D3BY^4A^^C_rvqdMAgZn%N85y(b)Eh2 zwLJS?nLfJmz!+6``DnTvHhY3KLj``1KdxB5Z@{8zwMyp?jP>{&+w=ua&%J+rrD!2( z6wWH=FGzeS5btY{_3FeTv9Qi+`faR?ktFl(LHKpZv^}Ys9HoJVsN5UzUx$bHkAob$H!7bi??E0iR#WW?N}f_cwRnPpa(dHqf?P)MUeCfJQM70OT#Vz zO$wwr;RfepJ>@t8&+Mx)FkYVGUmLR#x!q9GK)z3UxrH1q z_9ncHYo4`6QnFY8Re#{Yr4r{0Mfe0@)XrpNp-iuq`kjO{=;oPx*M2-WfI+|=&zSG~ zE54G4Q=vDWr$<9<$DQI$?}Y1LUlG95UtSGBc+U`u#wb3gOan*;{eK0SGSgxNYU3uM z(Uy8|ye!0X>tJ<_Z(f0ch>G`@X`dpR*(uF#+RY1m=DijowWKpXCedpx0pRokq#MnR zDbS!4tSy7U1`|K^x%>Bd3HjcOygh*P-UOZ&y&?3Xq3=QjX9cr8V64HcL?;LMM9kA+ zoF~B^aSTSRb{-YIP=R=!0CdfQBqO#UqxM!F{HsdTCZpu~Q`#$H1xmf*w7Cih=y;5< z2QsE%8@EfXe3#Yewu%ua_aphkuV4$CxlAt9%+Do?TV)3juFPFE_xH(_??{a^%JN5Y zd_+xi9-WO^Mh`dVMlK@4&U`P_Y+{$-WNS~fU-JN{;5z&uk5=<~tZHYY4913_(c*KV zx>PN6K)DpCEsD$Pj?nJ){OAP&9_+QoLJ8r`7 zEFl&mc2`rAQh<%F?=UL>)ph`y&6{(lXDGuPc{2%Qrsa0 z3(bBC);}u3_fQM9c7O_fJ`&RZWjQ<)fzrV879X3IB+Rs_15w>A^Ad`NLX0QPH@eGd zB|2xsg(;pBxhG)SE04oIQgxT4UQDSMiTfV7-K|~Crj&1*!#A1cuXmGIMWv9IUmsru z*X+A++(RkXRG2AmKJl(C3=6!!XRNwTUEPGQ`+hF9QJBty#TF_TRV+ z^#toNQxy^bl=@S#Ra!^hHtY&`+DKE2S+h6+V;BmssS{A&!Q8sK1_VFfrdK5>ym;Z@ zeW&n~-gqvs>ZzAV>Ye=jYKZ?WH^`-!@=Lv`qA|+p;uhmfYX70gJg%ooAF9y;{5onsVENVq;#grjw8^^ZwG=TAs7F4~?`c(+e?WM0UlpXDw%%C(Zzqkp|9ADYA1Iw&T1?J(EhTp=8s;ny4#=bS>zU8P}YD4_S=hMPInQh-9!;{-4%M+f}ZYTSEn*Xr{h>`+?yKEA; z*MM<~5%`~q4E6#eqHgoRtq=N3_Z1BLGgTkFPT2z7=}i^s_*KT%8s2V}5{T|;X7|4k zB+$8waDiia>YXE0iPX*Hv-B@`$1PQ)JhYI4z|9bz3snO+2%KSApzhg6qyAYlCyKvv zy%)k4Rg5*HfM5IOy_x{uk}dFb9&Prqz>e4D%0ts-cIIb}wNVY+dd(#?TP9642k>xj z68r3At2I|_p|2422x;ssuK+-F!O z#mW}dGz{KoY7BRLsNxQ>`wQ~=mvVL3CC87#qS4$CQ))$%h-aG1w;BW4N%;83Pve#h zR7*h~bZ;D&cYIT^3Axt`)oV;K=<$$)HVF5WWa*$jneE&ze8Gn1FM10TNJcE_%Po6i zN3g=lXJjp4mx&E*5aFM^*0iBZ{xoB5K2$i+=y+!C@AilqSQ;eLp) z%grv?*y0w}cp>ARHwirbSLuDzkk+kZZCVQ@!2brIFIIHO6` z>O#3eHu*?Z0dKWgO{Rb2N*rxMlTRNj;gxPz4mUDsYrlf+7|4dnS0@NTig*N_=h)Rp zYNuLod(BWZbF)4tF^H_783ogV_E62oN`wD#Hh#S1jeX;_^xx5oosyP;Gr_#)YS&1= z3mJb3wS%b+N{m*!^wlOg$Ww~+Pu?r#>89^g4|h4Bufyn?a5&aNmDkjZ}i##M$MmV4h=hwh@NB6#{{G(zMW?E+#ez3rrY zt5zP@;@)(9pj#~PkD}MhfN#N3_O0&$xu*9LOKCxGWEXCNjF+wljhb2gFQvBaNxOSU zswbr5K*DyH8_j@gdpKlhGQgMd64XkWV#(joDxOK(-&YK10D!nwp3X|AzA(96^vio` z#Ll&dxglIb@;AN_?%FYa+F+p20g-bAHO4Ij4SOM; zY3Eh>Kk1-fJGT7p#D%$QRL*-fXP|a_tm4#+7wgnBS85a2SFMYp7AZSo$v1W5TTg=4 z&R4ebUUPs9;HCv;15_m-cTaCk^i7Kuo(aMI$&)%WcCS`D6=y&ri?eE`k~m)UJ9-%s zv;A4fB5?S~bCvY5W6GPbzlCV5)VnL;;a_P|u?vo2pZ8|$&|Ukj4+maO|I%Y#((i8d zZm-QN+Mg}oCE4+9&hA*frO?I1gS(^W>Zv1M4FFpDetx$Rt@|>vNvOsjFK~nubg5%T zrBceN4eG;KOwI?$*`EjZY>Xm)sOPpY=Kl*eOIhu3SgTO}K(%V;`##|NKI`?$yKa37 zsK(}c$8upg0BvXQ4e5LXajy-j*I1$FIy~g;-)n^e1vXR3l3sQBI2M(WIhuCIm-(#z ze^Z&~=YK5S_WBo#-HX9;BTW5Zt$6kQ$=Z?+p^3sR-dCG`i#2pJn^%wGdx~b^zYhf7 zRXBU%{Cm!QRr*0EQ}WB6=5J6P(r%%qQ&c1mZs)9klSJ?Lj&)W7-Yz6>5NPV&|r z)UFjRfbq`>Qw=;1^P#FlovOKV7`L+e`8^iUe+tuca4EP6FYKqoPN*CnXgUmwfvT5b2>j_g0}I@< zfT2KCOy+k~=fgEuO)JM(v?2{<$ce9ENHhq9aU2wz1@}5`X)=iIG#m0FC~How$P)U? z@|oy1-rTE^e;k#shj~}CkKr9MrdKLe?hT)G@hdZte+B>l{8c?ld{99tSgW3(kKL+P zraeQzz49g*AlnkSs*xu`--KR>!jrpwc(W3?M!f7WiD>GJ!rQZ?;xBs!N-e@xHxhdj zMdc=CNATedO~n|~<5s&;vV5+-wh7*757 z4L?$CYM8D}F$)K4yR*C&S1Ol2k6EQZS`FFIAF#Q`E(Hy(i~tAhH}+q3cgL*$SN=({ zjp8{;lTd_e#`b1&O_JaFQR)ZX*=VyPaCKcgvDk6Rn}o6rrCl&1L}V31afeB7jh%!s zbM~AFx+W_9j^1H@nM<_xB4b!)SCP0%I6yS|6 zQQ@iJiRCv{Uh3sZb#Gcu_+la~h7wgnB?n+-2I#N#h51r_je0^{NZ7_7n7oIZgt$(P ze*}m7!;mHpv=#vHn@vX}*?NLVL}(=N%xZ_-kjLtK+J8);)OmXam;2uT278RK&Qhu5WwA6^EnfrmUjMd)3QL&j z!}WOUORtuV6OZLq8Iuka|+u1V5c{+u0z9cLN@^xDD9k{^_F zT5r-Yv2oNnjWF;2ohLT?htHRL?$j*ObBfz-@{Axxf0mf?nV-+ZeEm(3+)r{tj}9_udmPZ^0%?;Rs=c<1ZN@C9U85u55j-1 z2FJHqpfTCAC05|0`(50RY0cZ783dJhD2X45)@{nM`XVE)$mAi}lLxKwR?ggYjbXS8 z3QoE-)EC4~mA@)>cKc;{^!2&uox15}~6VJXACzIBa4=YkXFMWZLU6=O*rsC>vg1GM(z&sK?6y#{ZIfnJ9Sqd4Rwa9sr`~ zy>iZWja_?tAHIeR-kxmUM`i%G(E!cuxo-(~FV!Zv{^*#snlY~YRr^J;zT~w*VL%T} zD{r~TWVHi@w5^9lr&V8)W}|<)3DfM_wI^>q1rglDD#2{g^L@#({8K#CE|OS>tKbR= z3%94UZkOQlZ903;I&Q{ci{>P8m2q@x&`!5 z_hwM>yIy2mmr1{dKLrF?w1oWbzk>Qe0`K~jfZw&NSw~6;3`eRO8k<@SVrK}MfiLxK z&iQS$SeF!yj;6^ede)KWR6G``*aa?JqtVg)R6PqrNV*KAlO5MYh4=g_?_qT|@-P;kB#; z=nq6{2KQN*l^1SaNyId-^ci1gl(?=Cwr=(jUA|R=-WKR?y!0SeO&#ccrcDRt0%^c@GCm!@w)IHNd_!|bH(iUycx3q36cRV-yMYf7 zid#75cqXDBQAJ-NA;| zBfahv2?X8uYzL6rA;?$aD^nlZ3xpLnY8M%#=N_U$m*AV}#D2BP_XzEQt+PeSCO2!} zs(-05(``B*TLxmD+a~$I`zO@h2jjj_(u!85rs814iW9>b%8v1M_%IdiKOpQ~Lg$1S z_8;&VCje;o@iGZJ_u6fpr(5tEI`NmT<-rd%w-Ly(o|0>Gk!?M4@49zN!qf(YY2vtw z#TxJCu#<~S9XoO$k5=*h)r$e&&JLHqePI^A;Jr%frEjGp#HA2X12N>%;Em3U;+J9G zJ&QK$N{ucn-Cj4}5eq?(^8&agPvYAGQ-2lWJ>Bz^!4`R|2=Kk0U1T?4TEU6qm*xYk zPKXX2b2t6!K~zPrd32FW2cswhoqz6o`36m0mIh7MpPUt+U)FB(`~yzco!c%R-fOX5 z*U?*iIiqi>_TO3D{UO!;ryqxYdVf=wVj&1RgG_em$ls4$HM$VCfImLsKaT z=G@&tLVk-rX z%hP4Bk*1!V!-}--o5?o2SfIOWo?oJ z18S&?Lmx5m*gDm7Rqu`KE;VDJxP*GFoD0j#@S{=IWJv5(y{y;u-9^@nvXgSpWMJ%vThI7 zC`zBTh)8;qWoK79>O=Wt+)}QpX`*_z<&WeOK{5NbZm>8a4V=V+#RTQl*$3dchGAS- z#(QH$=8)p6%4pNjB-+uw(ZLLP-~(q`Il!F;Icf&WbV_*m+)(Pl!ESs=Jot9wMV84$2{OtF`dI)? zuE6iEoHJqLQoa~F0uYc0Z$=3Ggd=`q`l~>>YUD>kR)bYyTdYNr+IXH=ID=@E zE(5f%E>)~e_Af`FE<=^p?M|60E*c0ElTXGK+<(kyP@CPTl{D9sY>SU`DAE<26CgV4 zGeMYrQu2*1dGw?PQxrF7!8l3-9Er{HKfOvsN!E5#>1o1|GwQu@;>$MD&bN>Ia;ieC zeHFm3L-vvda2+JDb73Rg+O5LOZt2nWjI^OeEw5{Bp$>_TW~L3+JDnE8)TJyGWH0JB z0AoL+d za9*WXIz&-QSkTb~-_D$0oe|dEv|@k1ZT+9O+1T7eo5aq{25(fTUO+&m9^0`YU@|;g zuW^XQT3x*A@R7RW;zF|0SF%J32`wIYB*cF%2QuZ zL}{6*qiMSyav_uDkhX;qM+Gjin@R_y3*VVY`foM7{bcSZ&5G^Q4y=NJKg{k+g=8Nyi&LIV zhrf#q`<|I->$~GlsEWxPnF7`bnp2+wd|J`a4xG`#R%`nb(H=r%1x3}Ch>MxQKtdzX zW499O4I|_KqfMCl{BRDa8K+f5u6s%}8?BBjNQ0R8UZU)DP=`GM?+UsC{gwzpD*X94 zP+<-7ZhuUVkGF!Q9!x*Ak5-2XLT*Y_$>Bmd0C=zoDr<0UB|2eAd-4z-hO>dE!#1J; zz=Z(oG1r`K{_da${b*3e+0n^#+mODNj7OlrxZ%C_i4KKahm5qiZxipoE*!Og4Xev}Ari_sw!+OSJePx;;BDx14mUC&~did)CAnn;^t@6 z(%oj>;@sNsg{8tYhYfaU8i$Q`?Z=<|YI#mY<>zZUnhqnw?bT7+o%(!QdpezL(g#uBXFhydiS76M@G_rY$+1NO)eQsbzEi)@m1mpu50m0>W~ z!d1vP(pJGksah8o38H@5L`Bh9!uLMA28ntl(0{lr^VM@RbX1YnEaplHBwhCsK`rTY zvh$wE*24w0qYB6P^0|Hcb{%k4uVCeBf{L>Nsy!Dnm0Vh8X-C@0MWlZNXSk_fiH`+e>|v)=r{=UxBN3uV9_lRuqhXZJPvzN_8#dGc*L z|5j@0+0lmWW%EebRwE7m9%FD>DaEPBo_7V0G;*)_^Wpx00uwo7yonh8cTc$EZ)02D z?pO<)tv14+dkas1#87ZkGA)qes}X(N7eypLjPzN&!)D$^^XbN+h+8FJ$w!wsk$wk$ z60-LCh0(xud_bh!tgiOQr@}%~(d`R@2lR6si0Wi2qZO2_Yx0sXo0?}NeQi*y{-2q5%rHO+fk<-xc-Dor?qC~(>HUZoi|ko z83F;YR-}J3VNLjmyMFENuVV0YIJ8GTb+?Uk$NoU+y~M~wmo|cmS&ZUS`@@nn+OwnD zo>TmFGA;Z!jI9jgD?@Ks(+L$2rJLkjw+Ld(GbjN91}vzt4F{9|{YqoNCmNwl>A-&v zz8?H@_uvpAioApYd8Jm?KDSUW?4IMh?e>=d#LK{%DO|Gzh25prq<}wlj|nv~>!pwm zX*?OLGXWGFJXD$T*}BKFG^-SyccNJ(L1Fy6AZJqFBbrmTaAA-hN9U5pF|z}1zM;;7#5yk0=zj-RXOJan6HgSFRGtpm@a6Q;^^w%RIRysy z2z|&K`r)7-`MS;&PaUbi{F_#=XG8MGzJcVwPd4Kaxt>w+KU|Gx2eZEq9`zVHs;lbE z-CFdsBt!G(u;hL;YaCY_psWu_u_-EOl3a}DLVlar=16ZJzm^(8r z^j`e2Hh6Go?)J7FP5u=jK?TFb7+R-)ZD)gjNv;#P!3@etb;%7X!_>;&%qKQT9qs29 z8(0VAyDJQ-+VWxCYW&*CVtD!^A*TK&lsbmk~H#%aPGxLKf+r-%B8Ic z3(_0r$9Ml;+qaf00{53pCquS1(k54BYdJ)JYDLBJNbAneehr~E7MC7UAK24b&@;mS zwop_&2NIXRmbeRCl=CFjrEwUWd$3M1{%gUhZCK4?#=-nL?qED#B*US?D?@-(yO)|m z#l5CAra3Bcn=I#QArGQ?8S(~|Ja6Zw0{IG-&T~o=|s+9NXcI~#QchF zdf!(_0rug=KfUHn(z;SkN&mlXeDS|Sxwo>pd-omv)oC<|q7>gk-@TSo`Xldm!H3^1 zm(DG3D5;Z!zv@6T6p*#sa<0v|&L0)PBrFaf{j>U6ciqezNN2x-;=bXkzE=5ay-uEt zx=w~1CA^?U@(wy?Yr(*P6aD{~fF!sm9NOR$zPU4!L`swH;JQnO#> z{ayrHrNad!rlPUB)?sd}r?|4Q(aF}?ZTY7H2tnX|SEQJ%qqqr|t~ zq@dx%`aPtY6LZyxCme&0uWl3U8~LXr`LRgT$+Z-V)1|L$`*MXgjLfq^peYV~pg?FU zjBV$x>sQmy&|BR_Hbbb0)dIx|DR76t$dgmb1@;wb=sMDG@;w4;EJDtBhDS6Z)OF2M z&nm`dpht~D8W_T_8uzOov9Nos`|n4d4?R8s# zyp2Jvc0H9E*n0Cd+FL3G@7Cu~EHhkD%4)+*3aJ-bT{QJIeA7K4yH6h=)B?9=#wy&;3T)BiY*hPXg$p{8KB*DdYH-##Kek23hX z7v>~Bc;;|`nN04rW%*~B_U(gT!g$35(F?C))JZM=e&y!<1}PfkNCvM=EYyuT!Slfw zT$4q`jGgf*$N8Ig$i2*BM7?mg6|PCl^Ez2$kFx7aThGJQN~IjxK3l!@uJguN;6K}x zrsM<|Fm^K0Sr^uuROOS$*;Pu+IRPQa7c-NZk`)#jquAth1M%QWW z?A(O=B*j&Xs%8N3fWZ`^uul$qy^_WALn%ndLTfvy!Z zES&kRQeuqj@2C1wOwGAd2xJf=Kt0yS1Ov77b-5o^c3%PA$5XdUsO{4m_)71VlcM&^ zq#%qlU}PaI4SV4QC}X{OZyseoQFqRZBIdtT7QAH*CJqCR!1=>_3!RKeBWf80u&$I< zM&@Yk_I0WoT{@QJ%m(=|_H~j(GR-5jevp=Dd0=OOvO9{dMVc1rUREZz>MsY{1{1^uQk8vl$|@tN=~ zw_*s@Ie+||ymHsuP$a25a0!FSt#X&nsD0qq+{j&OP}uV5Hh9g0hXKO#auVwO!9G`6 zbInx++viK3$u>G1qQ@pUN6A%opgFv}Cl%|!SGPk3YH#0*R0$#tPU~%OvJmuqaU=km ze3a$BCDY?DR}N40M+;wzt56z;>px0X4+InDhr+h5A!6z0N}|l(lpoJkw@sKSjvuc_ z#x2UtFRfJ_R965?G%0r9b^(dyf$4u&ilD3ILE9~gP0)|0?BN7%n@yI*! zu=-N0q3nX~THMnGF61MSkA7(lsb)ZE-r+Ujb)7KFA0qE)ho;CZG8o&gfCq7D*d{J^ zpI$~`;Z@7|u>?1x1HiZl?1N)<5ry(`F07tf`koCMGclCx#S#~^O=}nh5mu=$Gf94) zXmDl4S5SW?xAx$(+fHW`uva(djJ7XoxQ$z+n*Rl4P#ON-KU7?}w}e)!vJ%>bS>ubO z0!#bwM<=&Cu8}?M5bMYpky#!$^tf*7j?@!6!X(1x6Za|5>+GP`tS=T($r9Kw^6Aa% z?=I;|>L7^;7nwk(D0C+}TD3h=HJS2{_XQjD&K#VbEfubnFpOFPL#>Bxwk3076Nwv4 z)e@<3f#C^dlZBPtY#^e^x(Do`g-AiE(KeZ$wNq6^A zI3U6WR-Ex66ED=-sjcfl*5N+O3ko<5m?VxhE5bGf7UhepEOHD+XR`d;vNbhKN*`{% zuFQ!QC~~Wg|H2Q-2g!mQ2^e&qOFd|5F<&r{kA3^&#+{Gjqs$a%(xA~ASp|E8D>1oD z!rJz>BBP`x+7}5}+v$zSb)|$$Ac{yQ?559M#5BOK`JK$&WbUVRQZ*~tEria}Ni(XO z(a|V=<>HmH%D*Oqkd7*1pU|vM8N7=9_0+Qu5PvLB1ofCq*F*#@;dym_$DB?tuyev3 zP^Xc%t_Lw-zFLSZ$Xz)5_Zi*x=JA#BSeGbdyAAr09TWX zS0@7+legsa(0hJp-2bVeGiIH~J7B^fYHZC^b>peAtu;jKU;Ubg3q@QU7X1~V%glrj zvL@$4I8xIXg?@+_?6sufMk#S?hXin$#PN8GH+Ct&b?e;V82}~x6DWsr1G}ln!**?) zM>V@TS444(8D1}pj}(Ua`t}(a?qbyvQoX}1^sV8+mT-B<9YbCCZJN;GA`#9ZvgNSG}b z=`?KErD8Z+e{2PUcsx?(IZWiY%;0!@4&UT5Z7lN2?3@WMrby5 zuVLxg*0b6+Z?$)i!8Y)r%fQSiVeTds;W86gn*fa7f-(0VGY3O>*$xaglfzk+FQt zT)K~l`eTxME;gh*Vx>4#VuF!tiG>x}%==&iE@3d0BJG- z;a{fYOhMQ+*Qe?df44ft1;`Drjr zF;2KlQP@dGO-K*5&JK>WRdXV8xHd=svKKZ-k-H?SGNpOV$PF~Woamty2eb34XC}fZIshTUH8P++xl&)+29PTWLYW4}K-s%omASa@ zII`<|DCjR@AG4EE1b$%F>6%3=XxHwylJ!!YjM-VYD>%y)!`Xq+{1}c1Z!V0F{eLPN z#7U9Y2q~nIk((Y0Y@cZ?DW(e5oC~y_2-JR@rKa)h9!&?_<)``640XcGY6AmJif5_q zgU`*VA1WY(3BM;^c@b}#znGwY{z8nCJn|@r)aG-sC|H816iZ^s&$?=Vq^yep$?UTm z_o+pq;e=*7MF7GNQ*K9un-gK@;S-&uTIwR)j?$V$gwX)`SZTO91)fiYnWEu6qad>u zxY8hq)u-`+YG64RE7t{*V>{ia70VlFt`smGC&o$F-kJYEO=aG@!#P&dr0e!ow7`WOgh06Fqs80_5vOULCmJYRD%k%35b$?W{M5qL>N+n zd-4b7W$H!Le1c=-jDg4)slaI$m9~Rxr1yNj*A{&V$mMfoO zr=rTWXHAWQocKCWH9j*<<^{v$n!Jl@yraLSIIA_rlKa?~w9`gW>QAN%?6|POvT9{F z#VgLUQ;4xX{{FF=ExXUQj8mSdM_)AZ2jIitx3e^H6%lESt$ zqLT3p4^TxwIk;%i?L&muzzt?}w>l9Fd_m`gf~J~jghVstbvI1yyjjk8fRzQ?!P-9xMC`8mIMwUZMa%6%)t{(-&cA+Q54&Cje@35k91MApE!$&FK9(GK~uaJw1}AY@zMMM_3i$oaZ=Pr zP0lwky_(-w7-l%CS_Y1fhY*_K=bqIJz>b9{oHhX){0zNno?5xe(JU^<9|qAWqZ=9k zc4Bs2Z`#A!pMVWrtB>9niYG0GY=HjkCPbdEiR2IZmYI*m)$%zMkB`6*94iy3@KM4^{>d%!1H7iG$_y0Z}C1{Up?YejHp#rwT9` zDhyA<=$#Yo`(L!73^LAyCG@&B5GG?&Mj;tMkw~M52BZpXs*q0en50OZ^`n?Ohwa{X zvg*0DZd$3Ia*0{+Jf@BO%LW^nbIaOS08aXR=%7GQO^rt*r@w0#;nGSwC2W0!9xG+9 z+I<@cMct8>IZo}{pDB?!YZ+=0NzSRKEj=y|Ho`x=aAS$8_SOIAM!l!lCC@9b4+Cd1 zg|B%0eA@99=kUZeSxfm%5{#s{Q^R*c{SMB&5KOIGIEJw^of8j3gcJL9yzj%0EnsLG z1_$-jR%>2L=lkGi5ne!}V1_e>71TunS*y+Rm}W<+0xu23|HmyHsq;A-N|B~ctk%_S zP`-&wKfLx$NWrTATc2|CHG1jBW{O@)%UPdyJV(~wtKD!0mQVv$b0zc>AoO@#brp9U zREx4HScdU({M}R-YQU!}eTWQZY`b88^NPt^t3Sc5F=LU!9U|iayCPr#nb`Iz8%1Fi znUFDEI%dI0DvnW!is)MU{3rcMOoE~uc{L|G<3)B(>Q68afw=q#^J8oe!qs$hxoW#B zdRcw#;~^UQRmM&ilA#{ShMcx8t|1cReK)~)iI($`JL-U`~SJ3MbGazF!9+kMcxTwAa?!P23L=cbUX9& znyQ*_M}s}Mt)}BcBX&(aO(q7SlAK+1T$}7O?dfx!_XG6zj%a_p9=$|U*UBTM=H_qi zqY~g?mv`9&JKJS<!0i}qJ(T}~d zgt#3D(Xp6pcS1grRj*k2ouP3#;CNEG>XT0eSFm?(V-j}u_)n~KyuElJ97blk5Z)p# z)2a-gQWt+y>*q^Ch3^nuI2!!glSUm_1zfE{7(qRa$gx+K za8F}qwml15vU*j8q0*`dru>@&jxtJegu-}zIlRR?Xd96}=c`D)2BOG{{9@I@&p$-U zlUC+QQBWTyUQt-m{a(Nw8)IMP+t2pdGy~SNE-MxFF4Yq*f+l?xHL#QI^Zd1iphYU*it=xrcZ`6)Y~7F+DCip>Be5^^#g)uN z@XCu>qR1nuL!O8IIDxa+h|g?dm(PF(?<3K-P{-I>{+03=_Q6{!&AMSqH3ow0=`ib$ zHP`4XYB46p>Zzc26#-@BY#nBQjH)h7l}gI?GDzDu9X_%HDZ#wfT!QVcAgDC`_Sm}z zE{XlRS3u#c)myp`5^W@egzBX1I{NUtqq%>a?N>LsQ$p0sb7HvdTDn@>lh&Adxpi zBWgc%_+I*&ci>0he=G@xSr$T?iZJEiS2t1&7++QxNXz__LiqmeGbIq(Qz%yX;`6nh zu5Yk=3S$K<14CT@nXrkd``S#mlZt1#c|tCRO5IkkC_TfJWGj7#jt70_wALeScKj@v z&bHT*C%lWck}tt*>AtBk91ITK`OIOVHG$?`9&`|7~MBA>Fj7Q&EpyQFmkVYO1( z=lZUYEch~4j6J~AeE*MO+T27FNO|uNhxJ&GlN9}wx_Ms{02b6-hHbxC{I^qEl^hn* z`YYRvgssdOJ08zOIERF~XbxnJ8dG?QaN9~ER4F(MH zE_~9-ykB@xi%PMye0B9kvMEkj7~rY5?fvwxXSn1<&5ua0hf-U~HwE!?5{`5!m)Zq# zJECh-4t<}fN|5QT(4?5h`8{&oS1(`i0-WH>L@z&VyqBn-t#r;m;^c?dLBGDTByi8d zZ@QB|+4(8YIj<{OWU~DG7immy{z|8CS>h7w0t{U8i?JcM?3(SL2S}k|Jf@dHSp1~$ zz1^@UYcE%xCx7RaCuk$ZW|Oez#@wg;BVe@+WT?O_ZWZ?dz<4RO2%E>!Xhsy<_O{hy zTCXoHuvYs}Z*rm5j`9ThH01-Tk6zVIe2Ki&;LMn<#e)l0+Qy3#o?Vld#%YDQp~0RF z(%`&g5{f7R3d*tSoPE}-4(-tMkK}z~@8Dh2Cod^5?&`1d*XH~`xF2&-;YG!iNs(L_ z{yQ06Pg42{PgU1rMFjfU0GYy=~TeX4uc$on;3RIj`bPe)w>K_Yv7DR(`!>CLxuwEDEM4kz9hU@ z4QtKj(k1JPW6w+HY>w02BD_TrUWdb+{VqD}dgfbPRkllLs#_higtA;8hOLmOb`zK+ zA!q-d*)c!L;)jmeuTN^~?Uw!^2%NVsLu;m1gx-;;e8~p4B-asdjK<`h{Q1WOt>*;yZre!Nm}7%&l�BTT3N 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

    |S|@i)hY3ax<7 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≥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

    on%%f4SWy05j&*H95#|O$E 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%0D+fmAVKhy6lYTIw;ajL209 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

    Z%dAh66jk6D!#Q5ZuZpSwy!H95w*vo>g#Y2O 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

    Kj9VeKYE4nue%mobXiC!fjMM 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ோt;(3P7F*-E{C9Mx=W-OS@hdqwL@p%K1_~Y5O#&!zDI7~p<*855wiA$Iid`RepQ|xw%|&K z@JyjMfwl+2xZv6=Ulrb*zRd zG~z7EVWPme0g-921P(T)heM?CGCbi9tnNcRsB91_0Ec`r4>xZ>T6QCCS)H0Bm?^Cl z<8Z?rkGP_X9b#hI=BqywfcJUN5(%**TsU_GaV@o`skF2+0{dy2yXpwELXSZSzI#&f zHvB5%>nWb+o^W|O_Z|)Ng~`F5^Mtb^A(|}ih*6A;9n?O@d! ze5tL*p`%LrA9nRad75cr&E_;n1ZY4_3?#w?OX6U9)B&BVyn1{0%cz`_EMPAcu2Or1 z&oq2!Mcw2U%9{)`BET2NTB#oJTb&q#ml!69vz&&0O~I~AV?R;QKIlS!3gqE*^=|@p z(H@;Qje5hnUG@d#LxK3>hE`S!=03OY>U3A4cpVe7 zcolPQkCB^Q6Sac+^QDl^xU*%CX+G5zYSS8=a@T9|+3}Fd6S!xv;PUVKQ^I{sToleH zN=-8UsGIov)JRMW?E%yQ9TJI6q(Dfl&dO;F;x4A+Gxvp4{lyII(gvC z^Y0!N=pydGJX4ZHo`j_;y=x~bgaH^ zn)|E>#?fkyKV&Z18|Qw#_L1H^>^M`c8@!(YF|{9`*oC_=&@=d#yocY;f=~?)i__2@ zuXkt5USiU-A(+&~m^++5BCzq(#axl z7gz7^N&m$~o(!Jdqn$U-&`yj3CspanG(DUtyQy!fHze(si`)8BVTeXAd+TXRv^=(nW z;f5>@_2E@jk^K!#YAcC?tUpa-usZu9&}Sn*?7rfTq0dR5#u)B!%iDkaqdl|l>*^`n z>RDl!BnUz~u!CoU#Tno-!n`m8EPWI**!k7f9?=Gx?IgcFPC%SwAqnCypU{vx6L53f zkY_Y@4fE|Rs*jBQoTXD9pjvXOyaCt%;hsAVVX6Q7>51R7c1VBv8+32u$&9Ut`*+J$ zus7)tscE>(Zm%K^xx}dZNsH&{#xi#NNg)PlpyX`T1S%-bC?Zo5Ay@r;yS?l!GQo zz9?NID``t9J8`H#6L&tICvW1^z$M@6)FRbq2|eMVaM?mtzwYQh$MdN?vW;+!i)a@G zmwNY>^U9-CvEGQ+hhG^)78<>2{{7-Xfg+=QPI9cadu=|g_Y;4eZ^Oi%aG-(;uHQGl zLx@>@;L_grB~BGr%WCoHof3|`DOVEDBfE_lj{SCZ%dw5{!0JYG(Q~FFS_^1h%Y(1; zckb#Z#E->Qz0ZaEbSO5TQ9+A&RD$*L&UVVnDOSmiR?FYU{b*UgzEV?EyXp6>uAx;u z6+wC0!Er-_CA9)0TA|qR0zwecr-ePbb6*+!r@5X{iLqfdJPT@GNgLji=TJruxW|B% zEITX?L@WKOMC1F3Nrx{DFZZYOy9vdVMvQ;A;7z&d-{RtS;#nwu|K&5t;l}GqBWOiD z3fM68FvtkTC*;oi!i}d+Zd5*{vp?-)>l{QjcJTcZ{p28$>bTm$;3;{{jQ*42;d9^p zm8x8+Cr!g8!IDpYZ|c|CwSK%+bi8dxm%4Kud{=~He;Bi3Y5I<FyW4sNFj7=_JTaDGvD-O18jDB;zZ|Pjs^K zlt(zfws!lbm0Gc%oaJae`|^SHi=ME$BGicUSKgW(pFue_;&)l`OQSmRoK=!WH3zOu z_W8o`u!ODY$f?7-uUlUqqU?wL`gx{TxRDrBG`=m&!Huv3y%V^+*5S#8$KSkeYR;qM z^Yon7s;nTw79{0AB8!b!^0?Np??Zm*!Ps~nGNvCn6Mfe4hs>ChuwEMOrDJPL$;*bK zuF>vl%_y-WsWIm^8aKr3FpmEG7bh3Yf?MDJSQTp;z|1NPB{(RC>NAl}9~x_?c$eKC-$$9GPOdC8te- zyc|B?*;i)5*5nX>QZg8ZF->lCcI0_sD@0dopvIA0&Ja_o5zDpf1raJKAvP06~yum>VWCntoKzW zBapen?g6KXCVvV{c-)5t%e{sRRnzYZb_4q(Fe@AeiW4{bUp_CIU9mpkKmVd=$?t7~@dJ3H)K7Z20V7KC#;uMh)T zJpA7anriMkJj87a##L_8W~7f@wb65V5qZRMYW4LGk(ck~d_yk2NNcl~*K#HB=U@pyx&hrb-V1V>gwO4e5XIjWRJ`i=)FBC zbMJeebHh6^zUfCVex6GIs^=%NH8Jt4u^3ytF^8oU`_mL7MwaR>69vN$WdOQ#E6_QlnD!_cB<$bEfRJdWr1A&uV_x zpI&^vk!qx@WA`oM8RdpX)c@5_gztsbx%^(qYSEqOetfFoU`CZ;spm-P{!7MT z-lxbWn z(QT=(>^C=Qq1PxUrM^t?$!_(1yL-+`HsYO3QTQW|i=mQk#Aiub+CpRc=S3GiUhurp z9&%ZGL+#y7)3BgVRy3W>m+pEbI;A~w*_-9JKKD{Dns+SF=7Q0ug|~z)?VkG8&;wH5 z%Tq_fr%TSRH74Cyw*S=8wbk7j**3bWlch1!)Wh-v8+<<0ru%9=DzN#5<%&d4*H93B zi{W?U4bd=Sx@+xcYuxXz@x2?fyK7rF@BevC|oTv>3LuTe|kDw{_9UaHrJp@Xl;a&&y-czu)p1ZZZY` zJV`qGllb22$@f1|!IfFjlT~k$o+YX8_!V?tF=S9WbMksrrAT1^p5IcWKcyMH(8hD3 zgnC7W+WVfaS>lJ;!wXkBhxra;`MaQD3|u@30eW!R!SKtN;jKLVO~p>G{N5%}gI#E6 z-ay~tZ2Q#vzI8pLLQ5mmRr>c?qtv**m#-LWRYpIowRm9$Jn`+knjHtcQueE{MI^!q z2&H}=ul{^Wzwp%#M0!UNr=FU$!D&4Mg@%4}q^8n>s&Y5aQ;oxqIWsftG! zW~95+PjEKrK!N%F2Sz;mK>EglS4q%(z2#TL*-~SR^g%r?LwPRK87MdorvZ|FVCrmI zoo6b^^+pm@V5}f9>cm#{lugo4v$YZGzNP0WJ1k3^B%t+ z=s8_B=xT!s$$xZ$k3LkdVbi6rT79Tz-7JdlkxsLYg><_^Gq8yw>LT0gvFC6*r;Wjs zVrRG*?MMBi=`%)Ls}|Av3SD#NF`{bRTurB>2I7}=U0|lkn)e%%AMNmtNE}IUwofRBjh1^QR7j6jidkK+HnSY- z8TGWfVUv6_ezbODgjPLTZaSLSJaU_>r7&#Nq~oFDy6LTa{j%}S%nPFrJJmj&eq6m^ zbuZXjbFaOrI=k6<>{7##rp^&|r&+6hpHRhEef7QW{4qZ322tqvXWsF?rv$a-*wkYB zfd9Qg=W(y+8`LDE0X@?cB z8Y-MNk~?NB=U^ghZ7OSFCTnUYV{9&KWG-uHCTCzGr*AB$V<>w_SB9V|qePHVP?C{T zkdc-9OEQ2d=PyH!g1myVl9HOLs-}jzmX-#Qc<5iYnt#kSIz-*SrK3yK(bf6y0v-YM zw*lwhw}1!d??;G$laTnA0GE!grmmjGe-Uu^(BIP1)dQrhtEZ!@XP~P~($O^~>R4)P zTWe|C9@4Vc&~#GQa3iQ6S5onpQ#d6p7b1D^`~j&;;u4Xf2d;_ikL4Fh78K7CktjSM zLp!KkudMYzO}Ab1a1YVwvA+43q1CkU(ODC_7iRV^%^hD_IL%u+1A1}9Wyacd#MYhR z;L+^jRp)*@--{f3!Z+O4|D1oosgr^JCj-4to^m^R#@0W?%1w<9u>A_7Gn&zr*w>xe*HhfzdvkzsYp}oJ(Ll@NM?FJBBO@b#VP|Y?Y^)_UY57fS2d_^XD&KyZ{_M^YimBU%q_x>J?z^SzKIv z{rdGk2A{WY-vS<=|1kLc6Z;Jf&uDSljeZczzpKltON-&${6(4K8`>Kr+QfN?be|Pat==#dy zSkbqI7<(wkC5l_fn}K9LMe`LtI#~t-;W!w6x$(nTvBrfk;}>d6Ls?0YGd7*gpJx#V zE?n~6tnsg^^&7jn=tiHS9XCC3)Vizf+Z*cxr3Wi7YM)~Q-XB%e&SOEDLuW0E*h^!A z17l5R-b_;HSQ#G?wvLD$+d*2{trM2ee|VX1jrIPV;NId))zMOQqnEuW9Fa=#jT{MA zI3jowt|CO2K9n6ITiocVMY?wbqosE8x2Bor{&!-&3dsdDdEVhIgqhzXUeNk@B z%kTDigsFMPYPPlvU<|G`#$7l;4224(NuN)aFx?-E1UB3RBNE*%&cH+V@qSOhdXspM zB)fZ_A1OTM`|hL+IZ-%8CMVq9IK9Ke{rz>DuS`aU!L#XjECif_luYC|PR7UL9ET-R z${Z4f$lKFPdDpqk?ek5yX$cVprV5{{^BqqgsrEeX2oX58gb*&JDSVJAJ8J0>2hG5% zOH0JDgpuX!xNVPQ@t|~`#0s|@nYl`1ozn*o7Fb!0&<6#qN2CW_)ln$7Fss3u3iJBB z(zeD+CUp_$cSEfUJ)?o;muU`)v>-cTTCf!57su zX{`9Q_t4vLlRKuGp~^R}uqy~{uh?&s`ma6lL}ggCQaX76tv60+!+eQ(EFAAybNiIg?OjWS`mohdC7U>< zvDxp3l{uB<%6ZZ9N>_G%JePgDoX4j{IG+rSgT14Z^lFrm`%e{DEM0uCZ*jS*v^aJ{ zp}xDajXgx)SPWB&sw%URzZIPOvxypdciZB4=?AE=vCLi)RLAY?uLIYf#2_j}9veIr z42w1nm%se}q4t|=ZIzu0aeS{w-j;i|ZLf+RT7wCtGIf$C(VrwZ#3;i#N%#OkRm%gH ztJM&XOiHyp?8EZZBR?Ohzt{Zwd6Vt7+Yg3=;Hf(kVEWvA!7mKh=B-@ zs-aj!amMS{p_HftSAFq&j3l}1(-BN3p96;AREPAn z0=n1@Zlkv-JGmboK3Am~FpUxQ*ULpkHs#QpIJj&w*e7hyWKY-KFaiFqB$@$5*`-)X z>VrAIyc|?GrjvR$a=mm>Ut0Oh9n{UMrUq(ZBCO$5D#zM(KNL*y%E=69e2rhT_dk#J5Eqi1!V&*~PX6XaSw$Bx4GDGlizC*QjC!w!gSV8w)_d3rrAs~PBtA$)-}P*iK6W=BWfN@7mwdFrS8xnv8=rD- z{GBl$)?Ad z_8x}pL)b7OqT3934@96DpWXfLa%k#H)zZ#Ma&QcB-xb!Xw7w6z z-hm*kHJr#1FZw>Y{k}>SJw4FIZ(?-wQL43?^r`Xp``v1ZZw9_U53`XvAnNg0%l2M& zlGuAGJrBZ>*AuxX%$Fn$e~l<3zU6zno>Yu0=ohXaTxzxXs9ySOJjk|*ef`DwN3E`3 z6O_!RvQIXjbYK0N44-Vexi$Xj@b0fEAZkS8IJ#^sx-*?@+gvF)v23olGn1X!TrGR_ zv(>SkC&iP^x3woe+g{n3rD0lXEsm}@mhL>QwQZ?$n^ z*?k3k%hx`1bnSfU?!vNdTjz_3wM$*Qi>%DH?oUU*MZVg7y*=61vo-N8YIpYy2;0u! zuw})H?lF;e?frt2tVF%Nx45kKL0Q}HsmJ!-2~D*>)}H*Hd1dcC9@{a@wy^z?Te`O- zXV)?6Hu*fD>o<4zK9R7U(@C})m7>3wE$up=6isg2 z*8Bb0KCAO-jqT66W4~A2r#hdvP5!)h<@Xmdwrg(4cJo2$@6{l?u9q(+H(R@Yf2Cw~ zEqt=w>U{NkEqto$_15H8&+hMURBShs!*07@l+8-E>wYIVwf$I+{XILYdr8*r*XS|! zkK(EBkJ?keCazKXF9XvU+hfu*i>1Wg;)m*d@VJk&9tibm11Y2<*QaTklxcCFU?w}~^rtQmf{Be@ zzcCdcJWfKi5r#Q~r*f8i@rbH`o^ANM*qwpiU+*tBt(~B8#SY>T>Xd6@-=k(^PrtoP zRiQ-v`~>+U7_~bTz!Ze4f)FdrXbkJhexoP^5;`plRl?)snUDj>Xzp!l$RIO2@{oMl4;k1dnAl_yH)%giT0LDF0sFOo6Etiw*k-?G3D5aLIBsEafrR}6uw@Z%0NioSu zBjDshWb#%(if3)im&-}{LCL3z17Qp)s znD~MA0gr0MNdcVwL>;{wH%bA2KhWm@zIhVqFkqCg zsksF-J%IZ^1o?sm#n3wStBH^p`oUu zqi1Gj!ZdYxZR(s0#cJykfk1<{uFko0A!$ggp`pR0OJOc9PC$q8%EEcU+*MmgALx4) zES$&nEahe7fF9}ONxw8CPa2rp!ouv(A&uAOF2TX4UsyT6F?ZJ1)wZ)R%g@ifcJ0cE z6W%W^o&2n=931SDlM@RI^IsitiHnOF)wcjTB%ntEda*9IW3Mb7nP$#TP7bF}2l?CB z0P%=dmQLEbx{H>snVIQ8yQZz9mjvUQvv9JuKB7g`K7QOwTZj1cs7u+&Q^o#)c}Tvg zqi#u1?kpHK3C0~8OFgWub<)bpKwG=n)92oalMbdP>gt3<5JF8&^^Jw=sJ`VJQ|GL# zj4`L>)L}X-m zGL$^u%#vU1BvkFcZ$51Vc~RxxG5# z3i>~!fVK%N21J**sQ=5zgt|Ts(x1$856^#kpHbC6k%PMq^86;4w ztn=94k%=7wbp~jg5Va9b5CNN__(ch;mbz#4d<7!n1d{v^4=ibHXXhYC!-M-VL zFI0pT$5rM`g^7Tk{p%%VvqWc!c)z zgFq&U!gy=v6cJM-Z~cCq{@|I3hgU{TQIm@1fT;BavlJHqyE}l4N z-As=WGp?eoKOkFwlgQCU90Tr9o5X-P0@EK%LWtAG%DUU2B+H2nL&lhZ}fr1_lMQKPekgIV+6rm)9w%+7^B~TUo$?D2S2{u zj}t>04P-h;YWKlhVATF&qC(Vu_-!$tIF*Z<@o}6n?Mz0VgRRGh()OctD&E+f1co0X z8X1GJWM Kz&*|Bb|b`$fU^B&4(Wxr}u$SFx;RLnx9UEqqC={Rin99pmMkDV{0p` z@3}C-ITy$z9?|SZ5`rxd_5|*W$>=lVt+xjwRWD>auG~L$H;IHOxSA`HENPRS2$pFd zwpRryoyRHL5pzwjjDUI|GI8n4*EVLN;#&Js;hD9L<=gdZovW>1*1A}a6~6&()0uA% zw?Ec@>)G4<@~s!dp~Paq1cO<9NZAHf|6f~y4d5)4z7O)d1%H1e6xi_nvDoF+??d<` zr60r6MZrHt!L!?MlV$I1zf0F%+kT&Iq4H}fA84CC6bIh> z^|9>o+OJQvB$b`z>Y}qdpKELG?W{Dkt?hiF52@^~HorK#`?dYkz1_9$t+m~63=Y*j z)}Y|Iz3;=a_xFB`Yk%8YpSDo_z46rT-0z=rf%kuJE?oZhdyAQ*%HCcoI>-LCTyvkj zv)cBJy~`T1X6$Vo(CnRq4dS3+k&XLc&^{y?zVf2wz#f?o#4?q#5y1WDmFx+mAEXAd z2mJ*Afw&wH!vhj@0C|&=k^<6rKo(9yLIOy^DJdx_Dk=hS2Ea1P%E|zc0T2xUZB$iN z4;(lEa2IZFZWR?3B9RCzTmXRq&x`}P5#Mo>^tLqkJELMu>j8ju+RSe`@Oupa5x+g;nLRD2B^;3+8TjCICSWcn3x#Ac7lR}^!4=tu%oW7 zZfIzTL?VTSg?V^*)YQ}fdIPW^fGmCg{vF7EX=!N*2nYbwNK{mmpPwHfNI()yNJt0> z7#kTG0dNU`PC%Fp;6EH39Gsk-yu7>sdh+q{0kUNPsyce~D3GxOkkru7kd2KE0E+;W zAT04oa%3jkgLD5N2G>gebIFc*NH1_lOz zpk82LAdp(SfB*i86DI)D<>cf9@Tk+LPm7C-J3BiAV5+pV6aY{d4CdUqa~>WZ0FMG# z86O{Cb91wUgTuv(7au)(#KpyBU|^7#nCR{8T~t&Q6BEDLXqmdwY9NPtV52Mu4`p zwY8l&bEdes_|~mk?d|QhwzfdX5J-8G$>hGiJ|Kw*WD2XRt1n-^93CESZEbz$&K(Mc za`*0C6bgkvATC|Hl$4a@@9*E!({uLh*<;6!UAc0lwY9apyd20f(r7dworp%G>+0%& zfMY~NL}6iJXlN)D3I%W<3~8?b03kWJ z#Aw-6lOzy?z;DT*JxYV~VdMyOY77X5N!G_Vf-FEB3JAuqdX*_uAzkQu^7+147)nw^ zj!rTfO;wKD&xp|I1A|}?u9j0yC#k{;A}TnPrkoK6ir;dZ+5ae4Lg4CV7?TtOsp8=0 zYRr-1;J~O$+av_-qXN4uST8F(jJ|9O5m+m9Avam+=(>^R5+y#xI&``|V}>v-ILjr& z$+U2$sUt`X-9If{Z3N{~6!G+m`CycDwC>^s9QmCYXCaR@efYDJHLgIh>xq2?G=Zy5 zKSpa+ZgT*t+E2fmS)7}IDCZHn?Tpv-VaO?B``Ly# zP0m3lC35jr(lkQ!{x)fVPes}>hToxD(wHAbU>@gkzvaIVB1xwvh;sSk`gO+Q`vwm3 zl`$CxljAru&^{13U8R(kV~iYKh>3%LcNom&1)_pw zn)8_^I6^lbre(vBeQP45Lovc�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 z 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�u^psBvqI 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�&q?^Ws67EkswUV}q%qOmKniE{w{VvFTHv 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�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

    L`~jC&tdZ$bif#i%UGAIofP5{`N3PYYDfaXQ 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∾EU10i17fG&bZrm{@E*Wj7z7g!XZbD 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%0DAcQQG=1$jUve zZ7;FSxw8atm-y*j;rs#iQzo%hW(mG>XTDnXr^hjEC9W9qQ>c;OHNUO*_sKVBEWRFd zTK_%$4m(=<-=&&=D27X~G!+2jBEnkE3FS05{NT4;Lrk^ozaOUvUa zmnb^YrpRbL*m+(|x56D2bklb+=?00tm2Q@D!FJS|Rm8EGTQ@wOyD`5Q zKiHX%)>g0tO$e#}@;6`peEAZx`{s$m=H;#Sje>Cf9p4Wm-@L3?O7{4E+Da7BNl{^4 zt3rPGJ#h0x14Cr9VT$YJoN^tc-@kvxb^mo~x4V`MKXI2`qBJZ+8Wx;>nh!-f^dp)8 zTZ4^`25wsf%2IoE7D2|rDHi%hdvbcK_pO2?eve65cHDhLOyOB3rs%LZxKfU)=#O%J z$VEjz+e&12O$al^GWqCl^cMydC%gUyl$1VSyOPPG3KUHNT+k(09 z04^tX9l}xH+8|Z;!)xZ|)sbkq9q>+ykmi)9KxPWo-BVy39VecJ$LiJd$sW@ijU9vI zHa-uoXsv~QKim?(@e2{`6#K@K^KSFb--|Nhpxq}9zG*uXw!hKxL^X_CW=QAfsu(8; zN`ZX?zFjfm->lDc`&sQhn?I$$RHqlHvX6JgRDz&ciraD3>*-Y@8(D&@6eECpJQSlz zx}xtvW4s$tv)*XT@en;g;r){{T#as0q&35y*6y0P<$9@yv#)9Vi~4QOq@-kUVukN< z?og%p_%C-%8V6&!>b6Vx&Y7b|IUM8I+dWjg^X_3>;yg&=XNyPU&bH%oxvI{O`AWWP z`C4TeJw#fRUM5<_>*44Qjud-pU!dbv%G$jj^7dBM zvI?uF$bZ)Fm%JIrTe8qX6A#hAC{Q8{l1_~6RQ_hp~w6{)jCL3`js=^eoLrxR;l(^l6yYZsvH{;I`zVKY<$pb zoaQX5@7gpB%(#`*N+n-~y>&L=ctM`qUQJ>a5OJHQsD@d76l$CLp)n7mhxmP!kP#E( z%J!#D2anXEH&U_HdJn|gWN&jG{5@YgDWmXX4lE&AbIDY`0cR1;2Of1zDJ2AhBvcaT zI7-^Xdbx6;iIw?^3na~4M@ijatf6*h3K+eYO_P$b2!FIk(rDctg5j?Z-c#b^fhMwh zED-PHBH{8dh3M8N_tkmpVNyoZ;cwOHS+wl3u$*~Y`5?Gl-2u*8*(dcx@@nlgr)T*6 z)uWppC-BV`KZ6ULx&;d_WFI}FGPd=kuDnbxkHNg+^s2(s6#dx&ZCjdyOB*iHPjT=x zC+d7Bnhcs=s~A}OPo3K+m3xbs;k#^w@GH!7QJYtTHaTD!&f2=N z1~d5ghl__RR_s(_8^+&CX^|=)Km#<@yke)ky09f+NuHi}!86LNu$Z$2;Nqd_ILO;7 zS*2W}-YWGie2~cT%eK{1?wzx?zZ0M71T$j0NSW9ds60Yz@FVwr#Q#D)?LVqrPuM2| zUF|cxlSU+vtH$yzB;S&*6C?`UF6V-6XUQ745C?#rUx1{c!}rrmTal+xj?96Lpi>hh z-a6R`wPflpwN(VWieAerMAV?u;UblfOV%{cW%bi!(Pg8RJl{#K;sbQQ86zOad5H?w z=Zk?#r1^|l=|#0)tU)cMI{8}f5dF)L#|L0frOisIetSqRD2JsK<#+E=nxa)~9m02F z%A+K9c>|@7$)(`n!G~6q;nJqn%4g=C@s^MUmn)s+lY+Di;VwiO&w^p3it#YUrF|pO z&VQr??PdlK#FrBCWA^ft?lD1ji6tOZ3?8~;P5}26q{zjvC9LW=d!m@yq)EICb4*FD z9G_+(nn&nxw*-%0?S;kBl9h>N6hDuQWR+g&Q*8Ri+yN*}zlwCRi_vH_58tg%L-{g6 zNVis=J0nBk4f-@zQJSSG(6z4e6aQdc) z%p3fqg4sL!U+snJQEK;xShzf^7nIt1zLqJ@><&D)Ww76~X%<{Fy2UZAa>rjctr`J`{-*$39$^gftF{ z3OW~j0I?UHA=gv#;#WcC*_bgJbccsr z;eZ!1JJC=&@^iYcL%w-ZUq;^94SA;jDiy3`i_W1yjgw+h-Y+P0l>=zi%D`bA2ra?Z zyIJo)%@7a==qVXB>cVnt?SEvqw(x=mHvP)EbyU3J&yv@-p5JyR(PSTo6ITScRm%J$vlw z53)TeH(jRhE=}szN~Od?w(PH29+7m-A%hdNkepBbp>MXL*ttdfOmtlX*I$kzCl^CM zp6A%4dGFGmJRQr^KxzK5A9rJv%7)(dwR;lxU7~O;lAtu~$>LHfmSwl&#ncUDsG z4z<*~pWY7~KzPM)-RX8|A70;|e&ZZg;V|r2WBHeoQ+9Oj3-6yHT3@1^oYRFZRXRkW zX2z3Kl)ud5PrW;1vieOCQYEuV1#0(#EGYadd~_iTPb1{esAu2LBe?G^_x3Hke+xO0 z;c1c!hH~HT-uZ(>leEk2H~X$$#L^KP@wH?0y+T31U^Jgr;;+@TF70609nc4DO%+i9 zic6^*(OIf->8{8dX^8GlJBBaWi4cas`~-KWdg-eROI!f7j4cTvN>&IEon*;U{Fb~1 z&p!`qxBWci(%9e@;V}0S0y3clSqt(Sx2H75EoHpd`=X7qXh%ueQSf|r5GgIFg{trr zfW=cWQW(j-EY~ltfUh6arzt?V8=j2UvcQ9yQov^H)*z0(bO8$8{ZpRXOdP>fP#Ugf}n|xyKMrpVi$SB8vr{+&Kv| z=i((|kJnr2mrfCn-A!Xa_HGy*z#O{iZ(FD=RfF zYav7>3Eup2Qi6=(A}f(HH6TMa*hEW{ZUjl9gS}d{Yd@GrR%^R`zwbtQ8yJiC^}vU& zN(8Q|L#sglSi3)ItMm{o&NahsbBTr5NaqV-KK&A{Y-C#Ob-X>kbrfD8gUocVtILrr zaa(5w;{ySQ_OgtU92wIKF^_F~DA)fifneeIKVLLD+uyGO8Nhk3Q#q&x7h&eSwWnk)D zFmay|6l?*t*!@o3XwJkCq!nck-b)V%PLU7tkmON*(DX$-z>jlmXk^?Tob8?}AV317 z(k@guVt8!%{q~%v-dR``H8_2Qqfo?x^9A^`dGL-xV$eq(_l3n$<%6)i&9x@s&0gnbHVS^uO?f@_EkR~5tO zhc_7@>mTa+P_Q;dd+W_z%Y}F$?)23NO@7FgC|@Iw(Qy3~lin z)nmBcquqpU?`yrgE4K+MRf=TwybX@^P`$dTM|-z)hB=7|)=0@wc=Q~vE*f#>yTrW< zv0cW>7xdw+SgUc{m!3kO7LF=jgl-Yyk~rvJEX*g?R5%M7PT7$hVdA#XW>;+#4QO07 z`P_Nl;NnQb&c}y8U27O>(zzlP5Q$+Fsa$ zx_LUmg${-^NpH#z-ke!xXF*IHUJbCm`WVMHepC3?3kvdYlXFQmg0-2rWWH1GW!F8$ zZ*L5V&2Q>HH}<=Zf+*A%1}Jt>%?w`vPi^(9~zgsAe3qspy>M6*0@ zeudnclQo)`g$Go>V4+4Rh+8ZvHVYaJfCX#1Z!`I8ZHspUP5z0)SLGe-m%$s#XxOD5 z1gz;e{Z#M8W4)+&Y%VyGviau`NuNrz50K;1@CsB6sS=q+QOF?RKJ5%D;^4mM;5LO= z3knm`3)F`C8durrE`azy?Ude`q}c6gxS8(zL0$a4z%%stTL&$3YLljNg!aTwbxn$d zK2>RJZs@m|utO8*;Gah!flf05KhQ6p!Y#=Q9{AQ(^*TQ8S#kV5S>#rX z0{m85ilY#0uG~UUQQ#4pKq_1|tYJkx@wUvDP^xDD=G>~16j07HVE4DJ_SXGzZhR@Z zdF03(a)5R6$mb9nX=^JM^r+d_$vBHwOpm0VbLPoH78D1(w0`mC$k(hOfj&`kM~!Lt$+w^{B}9idtwV3s0t%pU z6I|*tCA!Lypmm7AQDO^mIl}1S6ItRa&LQLXUVT*gw7JerAeKbM#1UNTJC%Dm#IrKn zEBD%R=Xeed@v;irFOOS(Hg_w=!#h(`G^@k*0wN<>H20HIt8B?%bF$NHkHf)Ias(1= z7+XaMGU9L>INmXj8cMUEo&ttyZ-AuV+%@Xv{d; z0xu2Y;sB-SLV1nQP9Gh<<6)Dd0i9Mx0?zfpwaDvcRhjqDoiWDi>K}u`@* zQ05b|uxA!*s#^teePX7KvoI=!I)ts-8Cu937-P?u=K0`@2)NM`+N8SZ0XFIJ6t<=x zBhKo@ElaD^*lz7BMW?;-TTQRWp1`wkZFi0*IG$`fKR4_q!Uq2*`@;A3CP%?@URFP# zLl-o-{n@B>anH1#=4h!WivpixAyx$_g-U5sKwe~kl$R4;t#UtKh|~Oq$q}Lj|7p1c z;ED6MR0?~m$`B182C0xNWs5vVd|^KNFq7ovQkm-ho{_JFUCK*({~A_u~o4z&Jm*avZQjT z^4?Hf6-NOs#J~gg|CrI4o4{Sp)(Nf&^WZ_ppfdkLbebZeCn)BP+ED{@$Y0?Y5*2lV z`!@0=E{iJnB{b)O0HqwP$oiwsKcn!6j}iySVyoO_DrKzXuu{Mt`r5Njvnb)2y0dI_ zU8N#~h*Klp)9r0gEHw}Ay=O>kd{zyLx>Mq6WPflUIjm}G%pm<}ypKAbxX5aLu3QG~ zmDMzpO#*5tA3*sfYWqLJ&`P=11aaD&OY=3~#C3*+AO3N~vx2WR#=D51S?3lw`BoaZ=MAfots=N~ln?-9m&p|Uo zFlJdq617LwLm_DndU{U!mB~jxp5@@U+t>JK<30%gd#tv(bq5|fiQWEG>);q(kqeae zgdnRfms{Y^L+$SIP0AMkU)ht>i}NLX3DmX56xD+X4A$Ha2nosWG8Y+kqzr;&cP^%$x${ z1FF9dDsuU-(|n|pqTPGB_Xo`5>nV3y^S4fu_zE@xJ%|I-@u#1|N@^Lw{AuB}$Of2a zsyHYpm|CCq@#^R##+ZqPAy%K*Gjy1B?0*s^SqvS_vxbBPQ4>Rz9{iOP`BweH z?);HwD^#uTGTQ=u7%Eb6=?vu@=u3Wqd1Zitv6OvifX4CAQT_0ZpdO2=dES+iMX-NQ z95g)<3I9H?-FR{VqruldK9J)}iyXB(wXlfTD@!lIK5Z`|+LrG;#BW_O8I2_KvbJxg ztREBFR*1LzzruM`^O9wQr@oN()iN%SO$8=pLhaE~yl&0KC45z3vX|`c^6nuUCRM&j zp&t{u3@6;L&7)8Ytmz#=j$w;7La^yL`c@t6ozO2=K7)HJ|7mA*XAJkBH| zd~T+LWCE_gP7>$n_}k5C#m}C~-=t$5vmRgfcX=CYK4GKC{y;f5HC~7}u-{XP*2<=o zGPO4x46;%=FL{F*@DY#m~`Z zqymI;wgpyPsv{1TEwG-nxRv7lj`k5;aEkhCCcsGM#A0A=e|Ak+jV+_^g8Pe?M=!dR zAmQ4LqAF*7F>b@1i0O|#f9dEZm{bviy^uz{;!Sg=?N(WRZzIC5xs$hWO6iqii(rqF z7~5q5Sk|gR*G_gc>|>H*IN)j$_Q>gah+K4o@wwl&@p!W3yUIF(SXX}B;3}!ISLR@j z#{e!NDbR&1@D7pU=p8L);!ewFmmCIcr=WJOx27;>(7mv2 z*+qo^3bQaD-vyAh83s8_f9076huc}cg{xIwHv;#RRwDF5wS$+pmjim~G)|0$&aq>= zH^g~HBO74E4#CerM^wJ1=2AWJOjC{ux>9BQq5S#(E{~|JB-M|aK_96(h;(ZFAMQ|0 z_NbdlFi*LSJwK0kDWdeQ+4OktM-mS5wQlKmM?Ny;v5LkS87$2jURK;4(h)x~%g|cE zg)z@~L6y3MZWFLzWaTL-?p%u85=BCc$7d*{D;@7gGQRA^7Q*{L>cLFMls?6h?xK8E zhK%+`?~p1iwlxDM6>!#J2>uOn-CP&Uy#CkTc)Atgmb0Kjx8q_XE&zKD6ynn{!>PkD-kwER%{IxY8g#(re32@#J##W4 zIswx$Pu}#%an#h%e_#?rFNk|hH>0x1EKHsuBtY1a@;2}WG3|KcEfz}<(68-KAm zpL(E8qrW1fZo5Uh9|G$rDpE)UZE?+%GNE8$;2LTFW52_z zg^L5a7<^8qd=tf+;e{#q^-lxZno)YGZd_`1qgwIq&@~2mzAwNe1$W(7n|697&%^`* z^t>GUeW=6sVnA%DDR6i+bO7^5m7 zAay2QgSf%$mt+GV>Hwg2RzSq|!y_YTWj9`1>PH)|yDyRf#8R=q_89UP%4d@KeS7~Q5Np6cb$Z3EldaP z^L#S;bi&p4$fvN2RfsK=iN8d&4l$i;N>BAU#i_7%{Yygs_sV zxIsGlT{`HZX8zs?YhwSl+30PUvcO7N$mbn9lkVP0b|7NhnG>=lHJtEk@^R!2{Imk_77o00rAC-6lH^=qfc>4KJgiw$S0U_(0(9#0z55)mf->1MB1LFkvqj#hO^7@Fq8aDaPH0!t{7kEzv z!zXT~X2WqfL-Lz$JH=kWHyh$s#ll7q#ML|PQ>cUVk(^xwf4k$Q_oClBk&2tKA8i$L zyq`hB2TwVUK1qDmXhr%Y^3I(`NTDO@P*?tr`9LH|qBZ!3s6Wf2;j4UgfEeZDmLyX9*;~f5ms<C9Xk|P?5Zy?}?RtFOZY3f=@>5fUfthi^CbDL*hZD#2N+#2wa7+H?k(0~u zmvm8(3lY2OkUkb^}xgnN4wgxlZ$A_!F>_5 z4Fk+ns%Nk!<|aS^!4|W}YmO-tc>U1|doGvw91?SQznW{2kq<*n$$_(25WX0|f!V7m zkc}_e1NBodGWlNOpGbfgQo)?0{v#Ii%dp;@v|*@vB^`fQ16C6XIgHuyFfJ-;CEyU- zCR!s<+zOTciE?gL&o$AH2FR!+NK?>|cP!L9JcftYMA@F5O80$sJKkmsD|-=bgN9h5 zA?}I^{uu}R3eQd-I4k^c78{#zmJB!fiDF$umsjuFTLQmra`Xg$8x@KyWlQ$_R7L=| zU2c`kDMfd%kR1YLB|00YXpSfa?C3KpA528?4=W~OeEKuz+jKu^sU>>3rvJBJ76S|~ zW*8V7|40=dhKH#u2dGYVs-F0Hn9#>f>OUa+pB?7J0b>U#!gFMu1nVf&LMISL3xhNd z5VcDJrEd}swnCyVKoLTye=C$YWdk>XG#2y3Oo`nrh)2GR7%gLWL3&;QV_E3e-Hd0X zV_Yu=_uHL|ghK-BaIT7Z@fp5*)f9^Mg)MnGQ#^N!CDP@6aK*)9ST}Y3!^!5R*I!Cd*FW4b<_hUl9*zxKBx{jk%O;3t$sX5+$tNgd^!|=#%T=V1Q08z zo?s%zq1iQoCH?0QwL%ZgL0^&LD@5*rm0(sS`*#fsgE_O8-{$1HiZ8 z49oLKhZ@<4PQJ8Y*>FUFFjz*T2>yRUxQiIO028;_EpX^_r)Fm@qzOqKn!x8s~%KI%y*Z)IWlp=-sunGj!dj{gGi1|y09)1fk`2cYo zQYlWb@rz-VJcH8az=sLuCr@20f)QPD`*^3)==N#hgtV+(=N510<^2|y<~o*cU0Aa3 zsQ)G82i8F-tn@lGvX>n?gvK-(ovnZKET zW{UI5(oj%r=+Z^Z3YdmY2uw_XDkq#8xt{(9#g?oibD#xmgrqLUOe+L4E^(HeeAtZs zJB+OT=ZLB5gO9?$k(^*jUU|n`)(n z+l|v4BSd@GP@%mhW_JD`VaP!DsmjykA_b50eFLgSduY2M%996?vT90P)wm z@fTPI^UbFLAb*rFpi2j7c*v&H?fAO^@!K$RK9W{)-%WVkGr7O6sN?Lo@X-3;=?lVTU-ou8Q4MtCcRNaa$ z=y+q8=w4cjKcwV*CbwCZB)Vbqc`7&L_)C zZOfs+?@UUi3xG2mRrR~Ne~Q(cKUq~+x>?j$cSyEh&8YbS>{g&wv}^;usI0&cIuRbH zJx5&H=MY(FcyvDO*cdc|DZ!aT$bM+*bH2v3g%35_<1tau9lQYM`Q@?_ggnf98^)jA zau@^II|rl9!L~{UZSc^=28c7|suMGE9+$iE>FU=rxBF$Gphn2a4R^8UZ5sJOX7_^+ zdXQxOR!)z6A=~r5mY|JadCjptG9OZD46+*A*C80XoG+2Hfoh36S$MYq7a%cJ4OdN4 zmEjm&nO6OK^YCQNVUy9s?NZ`C%}d=4&W%>(q)hBX{UEOBcV^dcA+r+PRVRECpRA21NyOfb-aS}(6!(i^5Wl8h__N(NmA}Rr0 z(|2U}s)o`NDD*_trL5+f3X;o&r8G8^JMt!ALVv~@UVtCk==*B|=Z(<^%o)d?BKK&< zJ$C8|F_HK604pzu-R)W-gsJndOH1H4p#iL$e)&*uy~i^S4<6r!d{KEK&&EXmLvhJl zM3BdU%qI@ZrH7ePWlSkdfdp+Fc5n=KDh5V{A9q1Z1jZyts#aPGo`iJsKAk@A!AdV@ zO5WzDf4km_h;`l)cU=YGP9eA<6LFc0+#Kw}arQL|UNpH1FDrZF{zIwgW6+#z%4v-0 zj^5@bQe$Le^XP=`XktK3byaV5eM9DqVeh@3Y%gHP}k`my)?nLe-UYW@G9f><{rB7OYGFo`sbLE*te1?Z!ASii=TqyJFR z($6tKG1QW6B5sw&w#i7Gn-k|td>-5R77T61V`9nk&3M=$Ov08b5iq{BvBOLAPm1wU z%=hQ8obmbhbd52PMn2>LqkudP*OEM10B9&x!4$O~N>{+3$L|>FPV9bRv~$P9ADD@{ zZ5U(eMO*8|KIs}C&1zgFps&3KVJPVpNx#!dPupsHW5SrrFb-3KN0zjJ@9+Qonh8Zb z09|6@&m7(ceU$}$9m#^dpLLjq`W&=6@ByeV039;C$^^`a$s-GE zO6D94Yly-bqJHF~ei))!(30ZT`H6)&*s0lfC~rc0s-F+ZivRc?{So8w z5jT#)kE53I;TLx-u&y7G8kP*HB8#q-A%tbEfbvY-9ZXwB!?yy!H2fT2S}8?h+ZZ}+ zwM~7SYx%>^_wNI!;vaq1CM^}JtyX);k6sStW}8Yc+U43x^1ee`?pU(K2;mi%f_JpAx~6rFiE zRBs=LXEkG=vF~QAW6i$H%ow{gBeFBrC^RThVm6F@iBgdzWUI!KB$Yi$g^-G}{iKve zsVL0rJ%61)&$+I1o^ze=^SSR&X(U#7g9F~)6OJ$B!K3(&u~oU0;o!|%;qPAUS~UD_ zQ;fO$*pIWOZ_LYdTjLVpBCU&e3WcxgBCD(P&SRFk#$!&1`14NSmo7t;7w`|+{CRqc z{HK;{KTjyU<{v=7B{+SUn?EfIkhlT^E%_ru3G20A*LCEP*K=w|gxaj~M(Zv#CE&gh zhuqeg11{47&9C{Nl6cROdC0Bv9|C&9A;ITV7RbR6*zen68ZYO}cs5VJ{CV_G0F}qL zxibTzn}pKe0wB0^+yhZ%zPyq|(z`wU*7pfzx6L&OvaMDLhlX%9-qsM5`|=fy?ROm7 zmI_crCWLos`DuY#96X!1AL4lF@HHboW!8G7Zc&3#6Di@-N7hZQUY1znvDe2cxWu7i zO;610VD4{k$0`yHL?;hr?_LA+J%vQs=>l?o2hqVN=SRaw&-Behh4#&pdjIr++himW zOfbI%R+#<}Nr{=!;}YQ-RZ*qvF`>??YH zJ(QiN(BEZxp(nXoKM##P(Ty@XzatrTQ$+j2+_N3^=66rdaMzG${){+OByl%}5=<); zZsbC)q^LaLB5RX1WUTk!xvu=^%a2Xygpl$`S#abItk@b9ysT&gZyYRMrSHHDLJ9u_ zj9$S(YLc(vO+Y@){c1e#q06jqiibK!lyX1rOM~wlL@GDrn2s;p&iyd<+>zI)LC?*~ zeAkE|!8+{>M`OJ$U`}lbufQ5dPz@v`Uf3 z_cyaNxB+LbhF=!DzR-uuQwmnG6*LA;Xn3&loM#IL%j~WOc22T%CDOx2hoX*kkZ#}2 zNO`WsrfwzbMJ3B=`#tQ~JE527xUF8Mch6Zl58L5BD5{1glTc$@xX_sMMW}s3VT(VT7myRAg zausv;HOZ3i>?$cL<9p@S@6fx}$Gya#3D86KGS$QQjEKrkx>IYsMY(?+qVj4&n!M{T zhphA;fh#e!=v6VzL-%}{Gw<#^thwx8KR9_jT0BVQ`d6s?dYwdw9B-{q-a(QxFk&CQ zs>pRiZQjh+-Txe15CPdAGYqo-muW=zB@6NuED11j=Dyb6cC$2BcQnoWA$Ap|+RqNl zwVMIdSl`ao_^zn#7&84|+VH=~p3V4!&|-d=MCqT8IO{{6?|otpJ<`UfC?j3Hfupx- z(qv@3{O^iHdF5?vf3Iv-o!})1-&7kpFKisftaAQ+n8|qbSm?Rd{ehYpU+IshH?_n! zkN#6W^W5OgJNf^7hTy9;HYrWbr<%<-xES|5)pR>=~wGidyUeIu>w>sc8eyzm7xks`Uf9^GIi z?#o>7hbyY5Pq<4lq{mQMZvGhYP7W`v{;8<{UZ}Wh@H+Y?>9zg?K`-|3`qs#^Bp()2O=%+2v4oE5W-AdJlB;x550LC$ z1>6)HwLvRDxis=?-l1!61i(dK6s8-j6jI|J#ArvS_+_swDeX<`Ym<*D?=Nt#)*R-e z9O5EqANjVkT&B^&++Hvm@aH~we?V%ma0r9ahdV@Oq4L&;ps;%JdNW+`wcR7Ju77d5 zB^>2PKDN@urWmzoG@m`$_J|6fe9q<743)*G01xqWzx)+zP8R4;x_a>&yS}n+S%%oV z*RD=mKmqDFQIn$Iy!Ng3y!&f7tO#GIYhYLIiR9B9(I_?u36VPgFSGk)sm-5>O+{oG z0H;Q@+5eSLFeBoAKS|61lJZ~PmZfCi$EG4NtaEWv15-)mt-uI|A@#^x0L|0Kvxth8 zBFlI?yr1T`B;=!7f`#GVJTed&dUoO7V43kkXpvo?@=Yyqr{5eNu6(ZUF{^t4jow!p zeP@cx9$pAAa8QD7oBb-2iPDViNAS8vDj~^wwvom~+1}(*l#elDnoyIWlCr{^1^DD` z9AE0e#y<*8k-_mS)}@&(u_I;q{Z_+dB_epOaxRDPGx;YPc_^~poQn8ug z&a?}?{Pf7rr$>qQhS!S3kIKjQq zQuAApib?;;Q=(Kw9J&etezGa8g`uNKgw2C z*xH6%ZsQnKDHwXnn15(=ru(b^oV0fPFfZ}4P+?vV`QRLV<8?3R79#HGHBeKIcqqDr z-_ud~gapIXCM1wv0upZ=cWn7G#yVX7DhS*@D9~*({-^JkvS<~6hK_l&zi$g-?YpF@ zvLzpJ>{P_cng@krYafZM0F&RkKv2MsBt(cXSMhs&PkFaiIHG#1NH-79&fhc|Oh=A!xj>&mom3x&HE5e|Q=K63iXsmd*F z^Y_orXd+(~*6bU-o{P}aQC8D`Tsh{fGJ@ctWkZeG`^&rl8^er|GNmIWpohEpb}h9# z1?~s7mn;@o*=qT20Y(YFXAOAv9#@)jP5-vk7-Zf%pJp{;I^8n2pm}9n24E+oVHR&5R(eJInDmass75Go^Am;%w9w_U&hZmVg19`YmA_JMNCm zGksBJ6|?4`WHgZFX2AkBMt9(j-FD|r$NPC|{+;@y9Cl*#etTZ~>4HUplLe5oPl*|Z zxoDvkSHi(BdX67k$yZuY5Pdg|BEw@|$@3X}YO$%AC7z}Qtw7zPD#Lx((w`~8BPcvR zCUISwzZ+sQ$tuRA0 zu0iOL5FR5#7lXS$k(Fj#t>!dx`W7CM=gk)%!fY9r6&20u4rWNRy6*JmAeqRv$egsv zTg+p~GjV{t^&HS8+^IM_1?jfyrzG>%2#RCY1^tiwIZ$6XSZEdi_rYtTbo@^prkknc zvHAn9AI{sRi}qKjmK{b@K!@}|@(1)c9Q3xvMA_g*^r-@sVvxzM9OaZQooZ{r9QZxL zaKolMvLNaw@fv!JKbp)m1Q?st@6Cexp$4mq!~>E{!<-;IkVEt?uq#1}4p2N&*v{1& z@pXcx4lq6Rv<_xc+(KwfVfuU7jFu6;5DL%91+47?NF?%6&unumky?1{re{gBXOHqd zeMyT+etxc$!K=TLiecpwaAzmJ(ZCcrp1+wS#PFREL2az)48r0AJYTw9BGT1D)faS# zOt&Csk{U963k8pIcs9HtJDTFBj;UGdJ1mDNtvcV>LOndqcoO)Ti8%@R@;9^H5^QM3 zxPK|@a1vezpY8+i{U*ZGU#_N~bKjB(HhS2e)&SXWFXTu!XYKO(vBXnlZ`A=H_UuP5 zMFc}o&kBeF(Uuk*1Bd$nm;N(z`l*qJERRLYjpLvMZSXHGW z$ZsI1+FF&yhG+wDLS;Y?tCh2Cd^;*WbQo1#d$~ zII=zzh&dS~Qbt98Zg&c04`f%)ZXv~@*|h9ueOMZ*0qmxif#VYmS$I+K7gq&&De}DP zY!TGO8}e#`wK{d!Sc7p0ULoxVHd&bb62`Z>4KpaSZ}F#FG%!>Ptv@u;eTv^PNAN7tIK*qCZ_dHOI%y2;pjv%BG(fZpzUM%DupX}|+s)0Jpf;Gp1 z^4qYGmf8eEsZYD*HMR_6GjO0S!(iZ-H~?=&C-PzXi%R6m~mh~8j^7vaSKV@xny(nZ-H4CehsC5i0PaX2-Xqe#_hUtPYFIU&|8pXK1|LX zUW2CXq=Q3vBFUFYYzUqVR_7c0ZXETTWuhkG?@=lOm} z0m7s73+hIMm{38I3xMBQfRJ5yRl>{AK@f8SuB*zDUH1MI3XXL3GD-3>DJ;;HD$p(y znIV;;sWdB&D4M8w%h&c-bkqKLo_rD&vH&zTGtJU>VDT1Nb}=wrjP`-&hcMNqEd53i z#*n}vRkMdCBS#5V*J_X%1*+E_u_F_Y2pc|x9^0OaV8?*2rW@NZ(yss>CmNOttyX>a z)HZiG>A~B7*Po!B2F)fOMX5xPGcFWC4>%!PZZ9M0Aht*5rR#O2l>vX>o9qwHw;tEi zUVN+LR23xEHFr!d5y?B8EaxP`JE_NWPrO`r9EhBy&V?!dj-na;H8(c5*93sI^&Wpf zy)h=*_u4T&{hQS2yWR(#+w}(Rl0i?~n9-CLeGW5{of+K#b{Gfeja;qAtBvn~G`6W? zRsdPY`41zLxY8$pJ=P(!`84=#yW96UCkqWZ@40JCKP2y*&e%<9HJvtIsCyE)IBO^>|IAZoq9`m>^xlUmaj6^P&n9vkXrJG*t*gM@S0dmq z#9r{3yBVuO%K~RV7GMRIYt5kszO~$*89lwOU@=}H1Wl}gR?r9H-G{jf(N9l@eZYbf zZoixX`G3+1e|+|^xg*%1kkKD-=N%eyUMl?zB?HsI_*R&oH1gk{Ios;j@@V3VU5kT| z7d_Bzo^@m%aKuX~760K^{iPw7NVhj<0vZNfkRTx6ajZHd97}P3TZR3gTVJzODo(G> z&Q%G0sXT1t4RJ%gtNPDpy)Lx4_5(sTL$u<9d3|W5$D}{xg<@_=s+(t|{EDKLfUSbx z;w}r^)?mFxM`OwghznC|w8{a$BPNeSOBSYk{d!`+iH}}tp#O8fAp#T0*RLqpGj)Yk>*F#$N59X4uy0uoXyNV#E;kr zy>Pz}`lTW?1?gll^PyU9blwv6YWq6d*qyErT`4~rrE|%jjWMUvB{@{WF*2PMhVT&0 zzZ0Efa+q1P0MB^*i9f1n1Z)EMrUCqx=8fr(`ERd~@pUaDR|;%`^|SE?sh7Q;kJ4N% z2FZ3&1-i^2T>#Z>`Ufe7c16J3HUUdA1VQr9rvy~Ge9?(~Y&bG`2*ofYGhT-?Jx9jU z3O#^>P<g(+=>vMFpa9=d!U6_`NbRc&hZwG`aqQ>xByUC1L|`a&Qj1qxeN%t z%FZ1ndhZmp?S!$K@5K-6FaJtja9b8|rSvPT2<-X{di&b0(ZwiV3(EX{JJF1;mGjQP zpAUz*-igc^rr%tS{wnaz*cWJLmg&hRZ0y6E zI=|fNDkRL#XNqM(fr=iObayP`RFh>9yf99Nd3qkejBYyFc;zPMiIf z9O3>8ngE1#{l5NLa0RBmR)7($4ST1Cpv|Rx9dQH7>wz$2=OZuux}lp$hce`wm4ba% zI>>+g&H<0}D~&_;_NwuE9Cyx}ZXWJ3e)0M0wE-P7+I~FsLq7d<=ofu&kVF@N*PDvO zFhQkR|NX8tUYJ$g2i5<6kG?UVwhc0g1fNm88GT;%`<-l)pjngGg|!oK%2Ja#7X|_L zE~o$TYlz6tJsoRzs%Yd0tjw>J!--@{lZUk<^6>2x5?ojUfee< zlZIccMUZV*T%31X!1uU>T`w~$TEvqsFa;n3|DwN5Lv&FeQm8q{0Kva#MwFQ7EAyvL ze94vH&<}bxnmK6%mGSRUP^RMOE7!@&uYCwh0kYYI?pu-2 zDs83##H5!lNv_;cgA4t6AQZxPsF#kRfHXbxJWeN1_Ja(!hc%qMdWv=?QyIrkpY?ge zvWNt$_6rMY!9x`8-ygiHBNd`iMH5CmD)OTW!%b0eARiGZfO*tcMHS}G(gp(@VqeYX zsxr?<%K7LTruxl%4QHVUrg9{`@msARWg{QB~1{iAERahjl| zqk#IWa#-58j%4ChgNRZ4^M6l7zItL1+1;@Hba8n~jo5!?M{@P!<+K2H^ow`DDn-@( zgz42~GXlPvv3=wn=kynSR@}9=R=+>76-H;*6vC8G=v~+5wxKRBA1PPX;L4qd)BbPl zioSEC|F)#k&nNtrm&?0Q!F@KoXiUir)^Wuut)t#$-DQ}i-CxOoFcqiQ|8_5xRD@_8=jXoVJI!yEN3b|Ee*PrOvBRGlGkk^T=@G_K^D> zBwT+9XUf%cf~1sVfiuUwlNP6O-X&6!5=yOgGd59sV5k^wcUeN*bzxdrHhI4EX#p2; z92O+jPntd0)Q_7Lf#uQ4#6mq1%Mj9L>|QX}iUWY6%M1HJaLNu9;-68)6zkj*^^1l* z`wg}0d^B?{rf1WhN4B%N`h;wf{*PChU!}K%b@}xjkeZX+a9DskR|P+D1{QT|9(S!4 zU+B2}mY#F#Q}|Q3)Q_wV;MH1p$VUf>c?Z%(9ap1?4D^IE$x)8X5$1(`bH?B8aVOAW z1N+NBPjsu-I?h;N(erp6|C6P)5#oVW_EA*s-=XwUMVh>2fHEWGhx$DTCMGhgQy z6T?m>s;!u1s#~;opu&l+QwsPe!DtcSg8A{C4m4 z@NA4^czTXkK(y3VuQ|d?Ef|>~qTz4}R<}5dOP$&rmW?Qj<3Wg^*wiJzcpqP$a(SaZ z8}**I^)c}?iC*OU6Uomr$hB z%w_z2Q4COOcC6jmEs!}Xb*PwQaTh*hV-9aV)6}%TOtpta5%#vk>=4B%sNG|e2;$(h z-SGY@nb7A2DAjgjvvo^?Iz-$G_U3C2$eqz-=v(>@LjE zoka^qUa>DqL2r77b?!vhX+_6@b_Xv@NbZ5tX8BzFg_hFy_Zo!0x_fo= zIaYW77fd7XK9!g08~Vj=)531U5Rse$fpMw`cbp;NU8S0x!ghg~UxFl#tG#I%H?6!h z%NO&SN7Cf0X>^;Q+)OWzQ+cceS8Q?K#z@s*_L)%b1ab*if9&B_?x0maTsUcXpxnI# zFIvWeNUmQ}TqUgtk=JY$Cx=m})FP!5Y@+n2UPeLHVs6ClQ|Z@*83whBipaAVf~w{O zD}z=@{Bi4`*oUaLr+n&bpKo?|h|=9hBLdTZvyTrZK8e1VqvXoM7qcMufkGU`Zw3oC zzYiEw@~2Whe=^+S673}s3zqgi3HRm*OYBmWw5eZ&5A>!QWKX`J@srW^rXu2WHbbU)q^JDYsLuo zVog7VFDm*L3Y2#?L+7Y}$^ymL*W9E&6m;PDr7YJS0x#9Jhm7gYS~+TCXDo`=md>_4 zJZ1h&gYb?7sSps!z|Bg}rj>+b(0qkMzPHnm(Nx$7qs~!=RkFI_ zkZ3}bU|W1JJ}kd->$R+>2p-Arf~WjhGsSJgwYRG}lL8B4(0!B81AUy&hi-|*<6_VB zJaEDfr#8B|Uqd8S3usWuwPN^5EW_|C4Ux+O^I zEJ~d*V<+W;j(Cxd78&(^uNy>5^9H`& z<$&j|y^{|UX>nA-QGyrnt?lT$E-w6mb_YfPK;%~qvok9eZwgY7h#)K@+&TvR#a(jn z=7vGUk-bIasX74$FIQ z4>HfSJkClu|M~VtciF@F@h!`T8tJ^2ieHFm%aMzcr3&5k0(W6fgU{gK1`1R*QK@imA0Q6C$_^Btp~-&HB<x;H~(ymkjBs&DCTG190t zJHHqG7k9?ir83os3ttI0kgb`|F@zc(+<@6zY`z1HVumo0==@2 z7i|Q3ZN@+Dwr0*2RqW`LR&K?_~d=NBOvXgRnvE~ImUN)Kw zv3elz0uEMA9K|J7nUDxoo)B?)0xZh^uslT4X~qE{CjB5VrW_bkTNHj9Ckuz2{d@y& zJ|uLbPv|ji%-Bx)!EB~+R?ee7j(lZ{F|=6&?HYBt-WnYhHM0PiZze$|lA&)f@={oY zggsCsvM-9dXhZD1T27TPyS|qtFLx(+uT>c+2C#A`{3Q_-nkxT2_=tn|%DEEf@n z769nAk;39+dTj(&a0*PU!XP#kvL}c|deA;=XPbyi`O6P-!H3BSYxr{qjPQ_2c3O4*p+6!poORmu5?;`QsOEtuc?r5h z#(nYtx!<%4d>YYn|TXOVSvx~uqQQvcI68) zAy1{)ys?AxF=O)4DjqV=K1i#S9OJA?iyH!_|(1 z{{_q}V*7qSnJRsw`JVhK>NKAT+Dx@ zeN17uQju37I<>fH`x0# zz90-R4LCEh<`_b&1z&p-#I3uWn@FImS&i1r<(sIEKJR#4KijWOrk{00*v(E79C0wQ z6$i6gi8F;VU0)np-ph8Y+j-NjVGg>XoYd2phv?f5PpeU+)z5E$BrgiO3qhcG(FHw;J|0<3JptRN0sHmh4 zA%;bZkT|oyzF#|fOyD+X__0u!^=MU+gGy?BLJHGarYUI?Jj^(Q_wJyj3mCt})YHQmeAfIAIF?@Wr zfzIl=8=qqx)V)VPZwtLZ4C<&TK#Cnihd?kxyo#BG#oszPP;J_cUS2t-j=4RIt$M*9 zXeXyH!W~$a=tZ_y?$Iiyc(K84m9rCQAw8->KYDf%D}Gl|X#As}JLLR_k1v0;v{!$A zYj=qIu645=*(ZBHKzxL5nF5jLf|ZB^dItvW-GRd?5F0s&4Qt>K3uH$ z6|MRK1&#Ax?(V<4eIQQP5*WA=uK~5yo1eTrHyX3A(AW6|SLFdxS{f6%$fU>W z!W|-NYx-+1k7<^1(9U!o7do#E&i`sa)BZPQ@f#=6`TSR;2(Zd@IL39~GjM^-Lc6!*)G0smZtK+1mN zwD0;U$%3)Hhu<4s&t{?uHyw<6U-ROt6zKQk2S~dEI7O(b2gAT@z~;c?%mQ=ey=-;l zAeOBD?tR7c`#8(5|F`~HZ|hrngRSRmE$0Soc7fYjvZst`{@J6BcetN9kC7mS1GD3c%^;M zefDD%*XCVA%OdMKVZ@x}nj#@gE-4yBzxwTiia|__NoYX|p{b=MU5v z`RVZWmw3ug*+fOi_E~FkyNw~$!sa*5A87LCC$7BTvEirI?tlgy1Rm=Pw~@bw$0Dm5 z&C2`LBTv!2`_V0l^vHFz6)0MZ80MI)Ss33p~&;}eF zSYQVL0Ota@d+*WXnFVRMjIV59*wg$BYzbgT(hfD0=C>a{krc7~L_hQ;E9`asizgQO z0^fE%o%qk0#?;&T|>D&3{ z<2vtbLRoox2E*%$7|$yn)}tjeBzrPsp{tjm0GcDsG_gh1T{-!mVLk6i}9#Rn&riru@lMe16 zNra}Hv3FFf2rfovY%i85f);5{Z4`#XSeODSe5SJX)yNTLb-u8XOy(eFTtV({a0xcL zgp{djj~?Rj2--C)E%ZrI3zG)agj~9Y*d$&>JEiH`>CIoLB3)gxJl)9dbFX}gy)uovqW z2W>o_4W`=%g%#NqI^tEKGA_ly885Ec=M|-#GR%0nxAX6#`ok37BSt|&mm>leW`Bhn zzo+aRz1~ADHY_i^x?7-HGIi#7M9{sy3=g7H&!7$Ma>P5FA$yq4C$+oW$6FY3q#srU zItP;f8X4CgGXPaT=<<=vEPsdcwl1d(3YyCC)jz&gevX^sK<90vb4?kE_xr0DsjJA; z79s8$+4io*7U!racWXhrLys+?z*pLCuTA9|h1nuR_ihqC@##vXi~4C7O-LNj*gTFP z)6rltg+nj?6=0})o0meX##Qq%XQ*_gqg+V;Gj!Yn(oqI_D~?i$l+Zv(x<@k~ z75aSRnHf$E`@Q0W@ok(@uJn)RJ*45#zG@N_`%@qwK`>GB#k7?&UuaEFa(sDVqq~~6 zZC09qj$sInPv)b z9u@BS&$@ZNCA!a?KMTUE#Ko-s`^D9+3I*@G_k(uMR} znl#>-EL#x{5!yuu3X#TbrK25q^b5uBGR?SP^!`EXItM2#=Row)-?X~OKW8%@irAuT zDB5CKQ6*T?>9fs#eo}926nyk`OOT{~1dwI0Y zXbpJIn8U?U^GcALF}F2OF%kvwH+=t|IMUg%s8jy5=vkvH6(oMlb8!C^e zV!G7Y;Ew0u%pZlBXX7G;J6|(Mv9+z=mS_SBbcWJ6@t8NIU+_70&;SxIK*+}N`Ex+8 zv%8u45mU=;ci|3H4SY)z3lwVTNi1cW^DOih}0!RBEkNm z_4P5=IZfr7X`m2w7cbMsah$;7;3CE&_&sNYVA#S*O*7iLYdO= zvL}WAMEuO<@}6hTrZ>b{{8sC4lPr8PA6tC02}3dDRP|ItxDPFm;7!qd8r z(S1IfBuE4o*iE$)6~Fd!UsNau*yTJxO()X^0}omz4VJoRTWN?UHbY%=Q`mqV{Lt8W z`REFk$7sxx5BDQdx>lV>e*`TQWyX{h0_GS2&hiFQ`X>pOEV9Bq)R1i}Hf4Vwsrej; zLI8E8?+l*%PSxmVzO4wJ`{Nm?m~lBuu&PwWP+DVilDhOW+y7sf7e@OC@fMnejqIh% zyJoW`G>%dn+5I1#G$AoRS9x-}r^6GcZT=pkt2UFLRoMZP>VFY*9Nt1R9{yOE z6diA{BY9`Lgb0VR=>{&(tq)J3)AoOghLDQ7{_xTRD|#WClugCp!7gGCDk$Sfy1)tc z$oW@4l;1b5uOxG~k@+iyJU^5g1r)yZ2bi|8)3DY2rkNng%c!5(+PEpAt&XNz4PLHZFMG|9wjYm-FkTTtZgJm=pE*=wQhQK2@(jR|Hd(Htn-_ z3MOk;Uud(gx%Sjo^dzghcVG3e)CM(mUc{OxrrAA@=PKe{iJf3zhX zC*aQ!*78fHJpO@uqH|wMUSQp)_|kC!Ls)Y9dSW#oqzg->6aoWCUH0()H5FY%{vn!R z2Am*K!_muWL9diVGEL6cu#DI}hHmEB-wNZ!u=VJMg0J+gTQ(k7T`E5jw_#susBf^= zl&D3EFI>0Uvxl{Q0h{PGw{cw&6~@yNqq$!}mP<4^n5^vwy4`s;Zut z&?hKM_|p>g91?_7AcxsragxSb3n9`}*?ZOUNy>;Sclo<0VJUd*Q#2^;gj*umR)0lP zkqS~@0Nq;h!LVcB<8NXb}MpTTN2yCFoW8 zX#tK3+=>`nqJTFMHOeFp)CGT!1n;T@w{fW3c$~sno@9=29+CGQ5iVsAH5saB7J_t) zvp@4I#b57YAQc)wh5DFXw8``eSh1UTcg2%k@d#+G{mHk-QYG*_fz@ZiinT{egy3mlj<2Kr2a_KPo*#y(oh}f6a@`J5mlLlH=E1wmP*;@Fu6JUmN#Cj{CLiM!ff}+!iqKhMr|DM7ZGX$j*>?KB$K>JI^#Su{$KTOce z>Ejmx{PhUfG?71mq8F899~p+^S4oI-Oz=iP`J*xgt|F;zdcFkG&DV*b%}h)ugr0O# zqDWj72y+!boUkL61;?4B}xoWMC~Yx zh6a78Ifybq>Vc?C5#s}pN}6ioYiKKh(J+ZXrcgujLz3<;$u-BHYmYx?M$p*{j;Q@5 zTw;2fM-{QNqOiyGr8CUDh8c$A;2XD+KUXL7*O@ikXSzgcecJ?`xXj$I&Ub1EQtfIvhW2b~^K>*Ws6u;_g$MRTYm?LfVAZ?~3kx!7!`b?>(agN43etKxKhZk|v z^5QU7CDChs@)`(N^d5BG*4zS#hG34%*d`-k{U`;RN)S~H6=9jW0Q*6QWmDjJW(MUP zcu^AXO}#X(-q|LUOFm8YhpFdeven^5(PyjT4g=~=H!WPr{$fxIKyisS79>pp%203I zA<1@;6bv$Q?!-aPqaaU^AT`RliE0fAE;7G;Qr=-CtlQ4){AY!4Xi@xBIH+2Y-xmxR zIxU!;XS|TS8=+G?pjcqRcwPe5uky2)(Gttf&#F1#;7O`{Bs+5pk6vg75r!MLd-uuC zkBxHHYmqL31|xX%G@&vi`_Kh{r)5-CeNp`}q%#?EZ0)8E+q?QF*m>bL#=gj*+fFjh z8sE=z)Y&q=(4FI6VX05%7S;`2E%rZ&EXE)<9So`<6&rs<s)cBK) z%km!nXJ*U+9lCC223I606OFiJi0Ei++mh|m5XLgRc@M{Yq;!rj74a3PZA(U|Y5J=< zLsQv$5^pkH*-%d`%$ErDt%9ECK;5xC?p073QFM!8XD~-k`rL`8n?=$^*RnM%yv6)+ zY_JUnF+Ei#CVpq=EK11zCJrxNPJ-FD!oFt1FzKTC6w#_$i67aAH{W#Sx~SV+k|@QA z0(iWxOoO1;tktc|=)= zn_lR%Bk@|^XBZ&BV@3=-Cgy3P@Dx^d)8f`zgcz<{iU)dy!z_T%9`n<3r=m{;;Mms?YuI^J{e~HHTlehTs;btXrg5@bL)5nW3@Ws zwHb~XS|aROBOV2r)x3a2Lf8KZ6R?o4|AZaLNX%uVDFtGd^3;_4v=sl;OAG3fAVV=h zTJRuA+_mg@OT@I1#d}TBJl@onftJuhalS$6pv~*bDSf6irAYLHBCQ9zC#6erq7RA+ zg8S<8ej`Dx$h7U->5~VADlxD=kY@rY1S;}8M@nv-1NOX{ zZ8BzQ{XA~&Xmxo`-?tMKKKjtFIh=tQHDkRtO>0*W)dU+A#vZM=<*drAl!LX1;qXyE zg37tkGYX&42&6b^c67K|5;@caIiZ&-Q3K5>ym#8Tg+PI%%>fg?cEi3s`qL=R(w@{#-BOEfW z@NTc6_qwS=7k&G|Jmgan?dFWc;=>ZYN#Hu0sz0%=yDgVu#PiU$A?NCt3UYOVFMqY9ijBe_~U3Z^g71 zPle^9phCEQP#?^We6O?ydK`r~*JJs$85*Po@vIuK!It9ncp`~GBH#oWoOq_arQ0ub z60y%9PSkxe)i@YQtgG+7sont&Q849k7&2Nofn1J~{j?_|rKfRD6XB{Yn`WW4Sk3!H znMbEkYkml6I~rDL zd=DMAg|ik`C5i+>dcgrv=R#vX?V0CK^uH-frM&NPy=t2r`r@MjdnP(>VWUMpli?d| zg^P*+t8qYEB_Ivz^a(YvIuWc(1^pg;v#$1{;muJJ*Q5j2;b+ndkrIIzyY!x3Mcntj z->#jWwfErt-`61E`r_v~fJpbNl9Fi^XbBN|p2BP9FWC43L~*L0GPRsXy?t1P6o_$NtB7*P?~$M>t@unD-O(25j;~Q(dx}I04q?w zA7=o^X|m^x_SRdy*T0xWkf}Uym>(w`Ly&-$9ESah7c;ApF8( z>wRF73gik3_M9znn*v`yE5OAHef87;^nD5vSMqF%+;JEdtkgKRV6`hrdiBJPD{v&Y zjP%OhnzFx>1;2IV`k|oOa{uBVm4%AZ=h(BG!o!&?_5I+HBsw&!Lfvs&WwU^pU5&|Y z(h$>n`y_06KWhD;h=3$*@31nJV^z4_hFo2_T?ctk4B{y=3j@tBBQt`v~w z#;=SA|GDEM75VE!DSzlNpOne|ZFVp|og}6!b6sx{WWOv`Ixq_7{{t21Pd`zWj{N)a zMElJX@co{|+XZPR(c2tk0_@c6VXp56pxEzz(HxuGdSmaOLyW}XY;I_^#HNkR3+2h} zbNFtzm5BsrWKA9a{qVTUIytjn=I%Rj`H(8{E5lD52wR1X#mI@0G|(*$&Y)08Nk`Ol z|KFjTneR}HytKz7N;RrXZz8K>KP&5jD0VwjO;E2Y>eh&K<#mHB zN2us{zjO2L$JrxLNnb*<;Y+12{7>a}4ET+t*rVv0?v1~<3?9uGxMa%VMPKlUN5hLV z+(S9saDGUUhs<)9x-YvdFpBV5z13{`oVD=>|h0M;yA>vS}Zl z6i)GHNNu~**r|fbi|Nv#XU3R1?=8%D#KRhLiN;suE{$mhN4^QjF}0m!e_YtY8B0Xy z35C5)l%j{drRK!I2BOP!h`42|yr%vX=U)X0as|qI|U35>iPj z73Sx6&hy9f?|ts`JomY;_jSE4C@~kGdX)$>D0(%Yn-)>~?OGZOS0$KqSZ=PGa?owC zd7QiauO4&k9e&w2JF=nwYEM`wS46R3uf{<KGVnX#!3lF^8|Jgw8A1%o+0Hw-GxhjsuCJws31}IG=%sp zpmILvzjtfGTHDJ!27i=h3VD!FMo7nBCFLD1Sy}vZ8oL6-x=GW6JQj-Ws&1yQwv&EWunpUzUj$P9P9qUSs=YhihGq zc~uNF`N_5WNW}}5mB6QFL4)Ju6xV-1x80%!8T=<9Gv=-8Xj0?dp1Nc`vG=k^ytURU z0D3vuF3^JF7Kp*;BQ06b4qs_0tmC3zhWX;1-nd~St5)$i7D@B;M-e+^n(s;fDa>-5 z3)TIZxa)8~iv2Rfc8~AFKoHN3Ze7Eo8Cv5}CI0?wUSvL7H-s9fsa`27U0X{FCIElU z97UnVnd!cXVkbkKtvfuj4ze4?;HiF!Mkb@e1i@+!2lT`A`WV|VR5wJtsEj6EgAQpf z9AEX?;wc(D&jg>Ygk_MSB%dr}Yc`ess`^%1Lnitt3xq#XpnU6)v&f0>Kw0*BKUR1( z^y#se*Mbt|+G6hLSsZ-zD{j+-V4$bPw>jyITtuJT(Ir6UiOv(OjI^3LF+D8U?fB}1 zsj>_FB$_|*)+60Bygy2??5Gz_&LSF~#ySiG)CvbMk4Gum4pJk2w@~?Bk*AMeG(I)Q z3z0LcTqkGqJCOYC*NOP|7}{M#%C{tfQN^U3GRhOCp>0r?Z`* zZ+_A5nDL5(wB}22ai!)f1G=p9l<@D4FxII^zQYWgaRQH#dG`{{|_CC_>3>7VI9nqWgqlCuV#ZL&RQJ9QKvCq21%?mq>-LjSj-}T&UDm$H(>J3zQc^`XDF&q5!c3m>TfAnuW5o_i69=H#9BZ;F^0f6EQm#mx_bUHSOZrnqQ=1sMOcAFGrVXy z8M9#Rv4!g=??+U+3}|hcuDS)O>yzaYupdvKbiN_>t}p^f(E5JPwMQxc#zwLqEWpEg z%^j@j7!1L(303Wdg|~#xmiRn)lbO9z>gc#gU%)#_t8RW67M<2VKH_EZZi_vaEz%}K zSD^Y0wX0W}8HZpZ9xAWhRc_%3X)YfZ--_E%kOH{OyBFgw$nBxA-BzUVcYRKe?a1wiwbGFP{r)mULypg@`OKoX3@Kj1G(XPmo!d?han2JysQkdxW5i|2+%4# z^&0r`p4!YRM@-{|`~hHOKRMHiT`g+n0z&Rm;YkAi$VJv~-2e`_=Nx6!E|T8s<+#b#6&Ca?L+@?>CDuZpGPMW$MU;6mJ2dQQn zn<;bFq%O^STXGscE!z!=SSTLDqSLfGZ~@6~Dk z*6F&-56yZh%LtG>w7NWB!py7-5|uYkL)fGC>VGncUZ6ZTu{;@~&Tto&3DU^5no&}G z({){D3#dZ|-v0*?XJ@_rp9x&IJi-%bYg%|8TE3XW)EaIAbd}$rH)3hWsLw-B+ z_Kb+0v8FhiVa7u1w6|pcqhN6$`v#hlF;jO7Xs`v0`CMOqP(mb&xe-j;cp{FC6n&XP zQx_s?gkdAi)lS!Rt$JWZE4$#mfE!zY`+oq4X;tMn#8xZdaAm=T@ye}#JmzxAw5aik zLQ&w${Cy0uRu}Cgf`Z|7g%dvtv;$Ngk7Ykx5sNMq6|K&B7yuj{rV8rCvJJlL?Mhq5 zt9K}#gX>bo2H21PF5EfUd`Ff^bKi1su|f~wsN|}WO1zl#h@)+Y@@!6zX<%-$R5^ld zH+bAkkqHt9P$kKIb{-%!nl3X2qO1}k#%Zh-m!(wNpL>#jZm+h1TfQZhKLB;PF`A7)$!J`6dC)K{>X~cOA)hzN z$7WNf6LO=TW}_-ma=~!f-p7wnG!r&R$seqStRMelAuw^vIcWyWR)igIa%f>5w1|-k z^Hw*##FB4d>GV^iHSdeDDQRqqSee^RLQLSF$=a&N>>M@=Wfx}dx7?7kop!l zhEgk-7djIM_HRfxfnwErg>=v$Y#GzQm{Hu`b$^YEZFg3COD*xYqJ{z)?1#BHZZkSZ z>Cyq^(^}n;VqFOEN785%>v?xUI}$H;qR{^GL4H@Hf-<3WxiEiUYIF45%|}sM&nG?f z19FABv>Ja@$Zg5Dusx+UI$i}<>7#~i%caQ2fwEij)s)@bsl(rP*xt}yp&_i^r&zN!0LAv+Mlzz4up0p30W0Kog|gm-Xz@gVx>- z`8T|lxcnRbRBcM9&y?CU46D*N}#mOB8+F~Dbrw@%U6zRTY4n_j0p1c(n)D3`rgkPW*2G+nfi z`Buicg$(AfkONytv6t$`loX&@v=BD%L}dD2fSC!Ex0Si!s#5I|TB6&Yp>75IT!fb7 z0CZFe`H}k3$wP+cOI!4$&L`bZ1GEXg!!Q@0&R{l07&9lUfHzCD|kpfv*9Ux{N8k7f06GGn$f-M2DB#`Ha{n9ONmZ(JccN>m4N!zQ>FKkw=Z=!I}advd(U zN<9X$X53M>rGb>-NDk8$O&v*{x|8xK^h^F2bILb#T)lA!sc|$GHoW9RowzP_ze1jR zf97ft)!^Y{tgim~zcZoD7DLRk(uePzHK{#4&urp^kZ6Vtf*R6%NOBechh}#_19bOL zq_?DG5x`d5RRaU+KeyK(`@I~>c@{_CKHY&x4O5PGkEA8N>^)5w`m+CWvB#(Z*H6)^ zfL^<@F6z5Mz;4;e13<3RG&7u$+OP~%szfakY?B;}yyBeqkFLuCTzcm>@RL$c&+oQU zUXz+-`e%Q5#?*LqtiBgKoSYL_Smym>C@Gnr)Tk`0sL$;jMWOW3Q_b!^xfCfRusf&q zYCcv`UvL7fe~bP|;b_?)PW|i?-(h1o0tt4Q1x)H_%OQX`v;mF-#!U+yrqFzs)6-@F z8XHu{R}`*+6EKJ>8D|G@_FlGgeb#(fa(2H|!)w^B+1?-TET890 zN-|dEE4_*=aob?*{$96RSy_u^P#r6({3coS=v(GGfc)lG!b*0Vi-X)Wn^`7O7P^$n z!at5HMZGC7eIlj9tEDGa1zcU?dJU5nLsA$yed$3L5)`D@XJqi&iaXCtxaG*ms_Y`M zBrUCvn`AN|7=&m;f9an z-gt`vvbwF^^0ZU498p%6ianl%dYgieUau{&ah>l@x?l0GBn@vD8FbgoS`Uzuudw_m zY~)emMr8_DJv#po>R|i*;{0Ls`vG=)dqe5(W-pm8>Z^$Qrsp>?{b2 z+k=7>%nDI86_<(W5bwzJv`C=0e+DtqRO=?=922UwAmYuTADR}jLx7Wz3~l2~;w&{A zdZ(N1Cjs!Ecnm`pD?IUt?iO5si0AkB#+&nj=PKKmWiMqTY1hLzk_l zA1|2HlMBdI7Z)2^zN4i+(ePPmV!Ig&Ga0QJ#~rQ8^-!0Z1t2&8iCLq$?o(=31~}t% zJcSlYNe}m*=3AzpD`T9cWbzFeR$CbdofamVB`4HXF~@iSPL(-X({J zd{nKZhZ`1g8WH1JD{*<4Y(yDTLe=Hx(8Itg!!yrLhYjPF1}F*5lwWY77*{VptT(;Z zBeUX=$VapE$Cs!*E*-Kt%J<6H6J_8T4@#8>>O zFo`_zJb=GsICpOQ)(4vpG>iuohivU`DBlqz`^Ts5oVq>%yA;69r04(l?3@!?m$6O0MKU6W>jhHq{Bqw&iPTcG(|I_e<-KVSPSZYX|d0+ z;JCU<(z~-#)r|ddKq5ux;?Xx3(y0dMF7Elj^EHI)hSddWlqr5>=ae{Fa1c496U0+lrl*{0`*3d3XtyIF`1L^{*tyj5aj z;d~WIS`f4S4^ZU@l|Q=PzQvmlW2&W50(3Ko5c*`xz-`7`RO`x%BJto3`5zJo48~U^1eIw!wMx@n05j$U71$ ze}BcG1ir&8%ov-XU~+fJA4qZ{WeU9PR0^JWRsVzc!eE}FbTNkRWCi?vD*_BN;dp@I6Ax#3VujQLG^ip*ie?fLNw2YdguEKR+fR6|ha}*Ap-k&?;%lgjvbt@i7oX!vzn<2t39x844cj0AB?% z`RLI@m$xuSCvNq|`somhix@H&gpTIMRLapb65Ba^;#IqLE?7DeuM{j`u@@a&4gVC? zdhGvIR;%4IyAZw_cR!pfknLoNn~fr7A}ecs0|?FB_IKU_uU|#c_s4yeqXZMaGx1$J zH(3c$RqP0upvvead{E<}K|7FcO!v@SuGGGd zfZmolwg^$Ts}wC+&0Y9Q3~cgtkuEOyMdOosuWppqNfj-XYHk|VMfUy_F-h=}zjLz! z`|sDy8!->YbmF58Yi`14Fsr;Oo3jUI!USdPeCGwJSb~_cKY25!e5Rcwmhthltl#mE z13XEAEwnOS)-j9-L8;<1{kG>Mz5HLP`Loka0HK(5e`kzDd~UijSpI8dM(bfT!+o0$ zIX=yaH)P3H2T};no3e%Shz6}z!eD0g_`SV)n!$%q=OfoW7wl)LP<*)DL3GI>R{&UR zxKiTEG+25E4bhYaNitX@`8}l!n?%U=EmD^$VGGGMRLWkDfA`sPk2OiILR?t~tNx;7 zn$KgzC3BE)d;b5j4-HwUoO@ow{!#lTG1sf<`ZKXdHT4SwqkY($@JP@>9C0ewHY=MO zyFQ7_`zb2Sz`#cw*F{2O=EQFyX^?&m(8hMC*byi<0d|h|xHnzsOqA5Iw$2toeLEg3 z`WGUmiV@zAph*o`IqQL>sG+l9n83rl_jd5O94Ai3u{aoGbPUO z;Hz$6*?9{fd<^Y^;rM!WO1C}Q6b^JQnCp#(77zYR*E8sK)Alk3&rFly@faba7rhW7 z+Vg7UB;TQEOOjzfkQL)XLe;Ppy=7y}vdAjTz4n!$&3Uy>z<`532BNmshHgprS3VSg zkn=f(X{Y8@Pj1%bTWjy*1s9xk=V-nAIq1d)29=*7u~w0emO_n(V28~b$9u`CrIR|2 z4XnKVeN>h5_R=xc*EFXv8UzzLOpE{sOV75s1aLW`w9QsTt{}a_s}caQyVTtNXp+L!@V(|5K#uF%m(YM-#Z2<_VU@OX zfwy|bbL9O<@OC%xgIf@-h%q6#X@GdjG+k{KecW=JE`HYueC9DrWM-uDo>LKB`uDn| zc^p;jSW=mS)URt%=IYYIe7L@Tu;>x}FxlJfUvYc$KkFOj5c@+q&jCNLmB{xe^xJq#UEbcI84U9 zNE0H$#j-${ZPu7M&ob+gu%YTSI+HX^z3UweR(LR$o;C?^3suex?~lw&bLYuS{AApA zAmn_$!jpDhZzCkEU)#A-YQaDK+`HGT)8T=07^k}IlHbyVUG|`xwFlK1(C707USl&c ze%1}s=<@Gv-|#;Xn;vDbW*&^E!2rPRh!7 zwLqA#o};Jdv0U?5m0Q9IGF2F|JxlJwRD*Cl)Uo2@x}=?cP1X}03BAd3Hi3Y81(a50 zWSgU1_kA&sVIrbECOf{2udKN*`N{9TPidSG1=V8V18J4HzL z3+n*H+ZEDd&6{DWc?Vg+Un= z*<{T?Z?S(#ob!i4Lv1)^Nf>3$Mo*fP%Pmq zO{U$0?ip0Gf9@aNNHXSJ6$%j99V|nkDl(~xc3hP(G_vN1#gi!!yEzemj>xbax=9iffETix3-la3 zHHo?a@4q1X?&q-c_r4DsNuys{Mn?bzFJs*YQU}F0;efBN1?Sbrumz>LFDUzklUZI# zlwxoOKyuN^tNrQQ*mQ_LK8p_t`$?s&lErrV@E(A!5g>pom8v$6JRVTOU5;ejPF$9<(bAhX%L+YwSN-B|M)R2HB`_)i%+<$0Unx?D(6q&Ka zlLcwv+)?5@OJQ24Q<&o}Uuzr8jtA*)63xuP7C4fbBgt->WakLR^br)$b&9X>lB0OZ z#XthNqI$}?-+0RX72f0h^BTlR(|N_(Zjrw`HAe^|(Zl&i-etw*4$WYNNVx^chPA2f zIXV3y;u4|x_~U;(DtoSTKEXpDmS=y(Jjq{%-mN%l9g-25S^=V29b-|6QBc8 zi^iKgv`Nh2MH&tBjE4oF0tv8*a+J#w$N&%0 z+{1A;@Qibb$P|?9cDT5eyZB;YTF1#>qm!F&MG`MWiTB~fd+|>v-H*sI+J8#?tvsn5 ze4t_^pWi%4-X=1}uZBkHCZSivWs>g{2l$Bm$&w&bLrT`XutH;UvpM z@SR=ooeT6k38Xu)=5`T1pFq9?`m==x-@#a~D~R8ze%flAWUcSmLvyjQOSkO>+bX|t z2%Nq*!M9)IdykQ#7hgbtFHRh#6ccSxW5>?ej|JEKjGQe zjXwSrAFc$eJWuxXw^nqucK1FJ{`;XKi43cw!0PcIi805-cLT_F&t3usS2!=bi^IhV zK4vY3n-Gtgq=eE;b20-57Nnf!;KCC?-2#q#akLAE<9k>M-1s zv761d>1M{KC$v5j@uV(8p>8d`?g+kjAbn~zdY^mqoech~U4C~4zdMLz&KT(S{oGSR zpNTka)BUC6A>Fp0e|G}hTkx4UMzVqPF-f3(aeS>BYU%z6nN2|AU3d&Wz0p8OGwRyK zDb)3vs2Z2d3Sak1{eJEeUUKaJqyCvZgXAN^vnHhonkg!~bhphgO09C5_zFFE;G zI>O@gS0+y#7|xvgehaEB3W?-=4N!uxVs`KgbFt}uxCM{Y9RKOHm5N()?#B+u-pMQH zNG1Z65TN}Dgcp`v2Rv71R!)DqX)?&5JBV(EZl2UVZHd#HYWp_zHTpkiaJLu965rYx z(%QDVI(_Af58I$8=(J5Q>FzFgFLe6$5&xe3fc;yNUFzrkYvBDJe63AT`&V8>1lrE` zZRlSPeC#%U{p7DO$$vUCNl}@ zCtkT6aJlXg$&m=7s_l($;&|F|G|Vs%xrLW(s8l3IU^uipmUOb?sb z>QsvjgpWr1%2zkZ;siAPNt%8fO?{DD5>o5$q}De`)k*Z}R5d^!Y5k)W`$uu}Wl-zO z-S6H-ty8b!Rp=y*i~Kg51dZe7?E%d*(TM^>N36{HnHm267}NcIB)fk8{@hLPWs>!t zdDMSV2ST(z6OolrWHd(8#_<%9+{Ww9RdPZ#Te7Y_8PSWBE7#Sys@iZ#bOP+SY5iWI z=>g)hBW%-nE#>4>^CE+A zJ%c~GU&2WOgPkD0Ss*x^e!-k^SB-zx+ylJrYu;|txi4(fyWxxTkp%47&+iO{9H#Hu z>lXO1dd{i5zHZN}J_Ih4O8+;iQ< z);iuRPPpd@Yp3DIy|9G^ai@KSs>eq0XAjR|%+cg32NxP@kuc zqa|J@?wxQZxfd*b_<1>ehp=X=8q&RuUuS>Ni$2`#%^c{>>((-Iw5uVR;d$tG0l^-$ z81ejnDw_9DW5?pJtcW#>B&0k!d^ba48o#uvocufCIrk6u1?L9yNc`-RU$qn1+B0VL z_=td?ozJ(g(&KpOyJ#lV3a^NyG@gI^)b1}ckWV&7UT5Vh(pxGgK!kk z@bOoLJ4E)*IQw#z|Ng(n@qa@B+oAt`gW--OQPySqVWSki`_lL|fOIYVrp=XYg!<;U z+t`4QTPEA}-_#x^$)Vm?53z3TzocN~8urQXME4PvNUaoD*j2I={=q!{KYpg0icQLL zd;Wr2F3JqKx*iN(hF3YBUquqlbjH&xcN@1dc|xL6IvzDHo*+Sbf0|ZZ722f4F)I!0 znChZO6M}Z4ce&WPIr_1#(}FC-_ZQ#~X-Fh!shLnE!pr=ZGE5}c7xcbwX;N2?0CvxU z;>CLMUu%8s*%JDM)biNU-cf_xQT5*<12tAf<@Fic|9BqbkKMbIfX&#PLUlKcAZn30 z{{Hb_`7fD?5W$E4U0it(93fk@MxkYy^>lpX#d$QnE4iG0SteD^uDl zb(B)eD)nT2;^u^91EHVwvp7U*Q`3lRrJ>XqjBAiFBcMH{-(PLgyQB8gwZ(|5Z#&vP zvJG=L9WDvO(MJvcLCi+XUsB9W+H?+>Pc{TMJT*LYTwHOAOmFQm62#XSWvF|cvHFk@ z>fJj}k%1e-T|5Y;8LZIZ`woH|v$V&C?PL%2W6agt9f#NFGO>ebzU2Oq<^g2Je22D@ z+xtJKZf{$H8ms@ho`Y1Uz5V{8^WwD55YpiWfCLvsg~Vw=(+VO*R21K`bQ&_GT}f)u z8w6Z+5Np^`A&`klZ+x^d;-oM{eA?2tstz2w*IitILD-WcjUH}oaNb&=Xt|wnX11M1 z7d1}*Ho7y7Z5bZ1hwe+4w==nVbFAUMvpTgxU{YxD`mmXS`|I+`B?YbN%@Hbewg^YF zrplaoAg9AYgS#HYwprqD|NB8J6s}M>;zY9I+I}n9BIc#78ZX{H5*@sRqJHbhEWCuv z#@)KQi+XS>x-9sUTCLkZZIz6o2<_{_BowYl%& zNFkS}5g7`zzTAN{ueBy88F$vDuTJBzdqSt9lqvRk3-$)j7t7d9Em*BMleXE9yr@No96Rl^=SqwMeC46D)>yV752t#@BFrY+X905 zKLGu)1?QdhNBymr_g9SD0rWfwR=)$$E!aPI`x`}fLCk6u_f75Cm8`+*F-`Y}D%`Ls zpQVhqcRDXvqGAz_Y%7p zA*~{U#K(?)ERvV|&4i)!eO8cZuTM13TBKusYz@BLjeqR^{)N)-oZGwXlDsC&F#MR< zEL=WJ<|{%N7km16rg=XLgCFyg>mG#{)NN9G4U!x49S1jn(u+CQ zy=KHjFAFIkC=|ne`c*~tod1n}Z$EcgRG|=N=BN?$GQJ>+3Y}kl+kXuf1`ZmqrtP^_dq9qR%VPcdd_=u^!+wrQwGWvA@= zf!(*nTO&8NAoha3g1l(`pK4Q)t6p8>2i=KRF)NfkiasQxCANoR_(zn9+`I;RUlR*A z=jmUUPPf3C8jZ6S zUziL`NP+PIYh4q|6PNxDVfu=Ujpf!V!Zr%bmY%@J^DcBhCesIGJ)nu319ItQ2XH}8 z5sB^J)c%w?+Pi>m6)zjVY$S;_L5j?NO7&?^S}52X*Z%#1J!SSL|=CN zsP4!ryXrxe0n5NuJ>fg2hlp5^jx4;0G0q8k{2yr~udp-kbih@Cr~jywsJwuzUWS~% z@jPz@^`iHb`U)x_BM!Ll@iD+zZBM8l1EjKC2C*53lkpI4ih^Q@<;OP8TI~Zq^C;_& z%d&m@VYeR=Z!JYdGkN>0xOqN)ltiS&{%1Jv#>osNeIt~X3d@9G+c5%C5 z%z7Pt{P>;!wA6#$G}~0y*d5jLTpl#ibSgkwdDRz$b3r0ORn)O(KhT$wD~DX<{Y4&uD05yw&3MfdVt1fEJ#fvQ3; zQn>!9Jl2~3j+*usck@a+m?=sSJ+;NVEl^I_(;>vJYz?U+6PDAqDu1Pn@lZ9tRc`L8 zU-^p6df9KXdD!+)^bYXjxY*kJL`{L(JT6l$vT8~sYFLZdSj;$a9}_45Lp!@a&R8a<(z|XdG zzK-e-C`vW%`SV}0rdyxfa6cs-)xCTWWta}`AGXw@fcweV`B~urG+Pja7QTTO>SrUm ztAr==FdUv9nG;^8?df6!0Um^w%&LW~iUnQ!-!A5t}^2hs~yzsK>sICR)XiF2t6MO42Bl)rcql30XVy zOFMaDBFjf~eJQrf-}G0{u6a=O+G>yY@eGqbo&9@6eKXo=R^p8;;+zBvpwThoN(Yz> zr7vL-H|jtGizuih_~zP^nl-heIfbUs+mvcJ_N&@03V5RN-bV1kaE$6mySWHt#)nc{ zbKpT;{U#+J16YCZ79ax)FBoxl+3PR5(UO`($tJWUF%KiCV$HZx;L*UxETb!_&wVyN z{mE)6?n$S1s%LoH~W<0~V2*i}prTJqZG9c0L^ zy^E)7j4oR|%oYEi#M8l;QR)A_A}|F2rFI}ye{lC&(B@(FUp$+*Bi&W-k$z3t+k{gv zNz3^!YFFlDQB@-pKA4S`2t(l3^=0e0$_+WAqf}E}euwn;!4xTE)Ly!7L+t|E^UCaI z4IVbUXF4UpZiqBnheFlGozu|Y+zJ8R$0D&`MrPMGSO4syg5j*w@b&u@59WO_00V0EB77$sjbrNAF* z#$y@_hi-d(SNKKAl_%fcrM@sU6h-p1s81h^1xvfn36BkQtn&7l;wkVk)5P^n& zR;=!&PWqS*YW@YsO}%B~1(A}u6(VY1S!mPvsmVj#MO=(8Rk)mqnK3hX3RHYR=4AkI zBTN1*XT<4fXq-4Lmjj*mQ2m&{y?hl0FM`o1u-z_N45c^$k9J@>ihKvkc$Hl+L13$h zS&h50<5Iuxd_i^$-RK&$H#0Ze1PYWk)B?~gw?-2coh2GLqU9X1$VsVy`X|Gmyu1o9 zivVCMAE<>EmOdjLK?cvyKJAOS`+gK6BAmG)F<4?YLFrJ?_#%{DfMLIcT=i7HYtHH{ z#FTk0UZ9*{j7zt1mHN4jR#|$_3ja1m|IPSn_gPzc0%HKw7mwz_x4H;lzpK8k6IEqm zwhG^`B@mw6c|Gz1O5;G#LXNsPXc54RP7y_G!OAIKCKg`wJ){9=PlPl2w=QJ0dA2;( z2^x<$xafoNHvd8+(bvpQ{(PhO{pe5K!ITc6!|d?5p3U7l(J)rWQe$vKr9wGdBKN4o zG)IWcK?NQF8x0`sSQtSHP+VeGO%}bc8Elouw{c;MM59mJk+I6U2Tf-Wwq!|NFSNET z#7vw|;n9&@iJ}a&9Rm+zo3WP82Vse#(zStt5D{4}s;N?Gq-$@r?;&|O)g4|$SPq-@> za_x|ME*aiL2d|-nC%+_;=?E*XjDE0eBozZaqKWN4pn%ChRKV))`_d zFZ^SjP|seLKm z+N~Nb7)N145S?>f6Nf5xgCll>F`6`ssyVf)IR*9@ZYfSUf<&t zNM@UMvNZQNZY%3BijE;c@xqYHq++&ML^SAPZD z%?v(Qi4&au(ktDzQIUs{$>2cS(eS=I1jZ}KuOANat)iAkRS6{+S@Up>VoWOjRoq2~ zG?0i3$EHqH2xJyPx@P;xS@P=Zq^#d+^xy6MhlR6Wi`blp&?xbjjbSCTxi65=pFbfK zG9=p+7e%RcePOoWY&fB3v+SI37+wSrEGNytNDx4W=pa;vqCPP-yD*22yKrDJr zVK@bR!1KxU@4i>Shn>MH!!Pyvft)H-#?@fYtFz)sPU->*V2^fDvV8SD8}IqMD=f!~ zu+ZLq&1y4bwtKo#X>~#MJwXHg4>cXkxI7#Fc2@Bs8zHQro7E5_d|8TaBvvt{HOc0Ry%9TlRXe zS7iJGLicatYgtXg$=`Pb-mgxfpecf2higg1Fg83Aqv-lT`7Kxd zZSdg2g6cG;!%Rt}gn}CTjEd$;<<2SQ21_XePt9_qBwDn0<99Ex#f!+0A`WEvPJ4H$ zq20Ml1_idf(i3jqL|QF{%GtOuy8uiUEi~wp%oMOFVZ<(uyl-4^)H(6SXv9_Q8^)ISTMSbU9Gg zXAb2&t)R~p$;%O0x+AnrQNVMNK646q0w&Hi$befnOoppE!7h+R=aI=4JNNxL>R+}L z;*C9h0dUP=In59uR*Yu1G{zmxYRGQIxR?6X=@rJ^!W!jK?|50-MoC`SihahQ`qJdskx~CP&2&j4SE-RpP?rj;xwBL(lNllQnGO*r~AzlSU<^qwaK;$$# z;Ng6T>5)FHdf&~uKDGS`Di04Pk2b!Rds*t8`rqMCsCiIdK!_J7VpnvgdL4(_z9$~gllK1C-Eq*MTXDU6o~(hoW5aV~snN;Zn|q0Un4G$6k#Vs43QR_iHof;x za~_pBt~_ z&t~m<)6tfQ*hwT#sVi+{SLH8cr4w^C1N!9PkF#Bs;|yXw87y8FO@36e?ai9~&PbEh z_ej#G{#tk=iwo?1_??&`rm!pb8fV9M78ej1V-&y8&7p}#(kWHigRespyIJTkegEU3 zeY-n6R6CWOnDMDXpl^BuW3A5{jTTHMpkq1@jVZ;=97Ge& zPU`%95jTh_r6v^X{+2waRDn2gq2jPYMcu0?$_iLAX7Zf_Lx`keH0byv3tN)vRhTU3 z^$SuWm(+Pi<*Z#ln5;-Bpusic!-NhB>24wEf~5Zb4h_%ml0C}S$X0QuogV_8>d%k! z>G05g@55Ffi)4=2I5Ww#Y~*vcL7$1L1wGrcKXKtIDLRaQ)pSXC5r)|uj=G>E-uKNx zAD;DEA&dotpxg>7Vc3&lrs`VFk+N>s%ME|7X-`J_{O4SH>@G^PJgm;;a;joNy(A0S z6<}Q5UxR-R(`Szh*}te$Idfn5)A6x;JI;Z%`Ko;jiHfL}{073eU)LIyoYo~F=YYvR!d1W0a7m$G$peiy;``!yL4 zV=04!Mp4bNK8B0yFOYLJKSY(zBIXYuL??2Ja?IMtl0DfM50f5~ejOL2tdeFTs~?&7 zN!YF>ul&zg%sh1u;0rzS=Njrp;;X|(F@nx#z|4xXIRDNy`{uy-mCtaT1 z1ocNt(hCkI+hZ*6{vShU;?MLS$MN09TpPKMxkv6>u9;!3j3l>_JCzP4Dw_>+&wa+6 zxvG(bRC5azA{6DSbofP7lI&-X{Q=+aQf;sj&yC4F?W!0Zr(oX>Pk~0|(0Gz1?c3?P_e2jZwZfA?2RBBd%m4t! zwRdXW;uC5jGwXtGuHU!4r0&@+Lh3!AIa`0DS~c^@)Z+_QjHdj1rs2FtBo*G3>g#6Y zIDeEahxhTCF%0-QyKKR>Lz{PS6J6FipyoZSjrc|i&{0nI?h0$$4` z5f-H~jlL>mDWumt9bP&g@!j;rh1hM$CC`mW5e)cDVsAQWx|*L84Y`G*mLxQQ#5N`m zVYTdJ|Hjc%U|^YTWFSpqoQa6DPJO43OHy_}V|CPvAp|!<^}B!drl;q)`c}gYS-k?9 zn-l>&F5Rpa%cb+Dh_AhlRkTZnY6dQR`dBb<{ng{G!3NJPeJ=_ZiS@~F zNGVEgtmNn(>YYMnlETF$u=oc1lAYYAPsi*Aj4J0+}p0PaM)puFAkh+*2N6pb1ZJ z19Gx1*Cv|q%L`mA+T_IGTG!3|>f;}_{L^*M^cOSPIF+#Ega>`EX~()5{yas~IREa9Y` zZVPSDk(SPHwty`gQ?VV{Xo(tK(%W>+awm}oWC)KiFf(wjN%ScirV|{*I}yGX|6WMd z-X*5V`T%^x{It7c%%}z7UrlF0o8qPH8cADwQMYw)R<+2ckJ3mG@xi8zI8k-%x$gvu zJJQOc2Xl(hA3D7=iu{)r3(KVgKs^UGe<`k}Joad4F z9OX6A%va1vajDHT>l>xQD`ucTE4h-RjfJP=G$Q(dc`XIXCM({$_iB1buk=WQlCWEe zQUh%0u?G0DfX86Dv-p{o!p#=*9@b^s$+T1BW8Y98ze;X-r%6QMWJEYM>3R{6Bb4Wa1wsd+@u#0*0_J_f_Ka1G|xSQEtpA$OYaVtMNlaai{B^xaV*WIBk3I{^O*05aM-K_eQ z{7a%=S}A^UL9z-iLvD6yhZTC|14_Cl-cMlwY`qm8HDP4+=qs$? z!quZzbeSk=v4L=ePV!`WAfQIH7Xt ziV`cTf4dE^I4O-JgLGXHq-|~s2K3`kA;~J9mPDb4xrT3*jUuRt!VgtMjUX2{jhvT| zih(G(syOv_Wb;+0dnr)YiGcAi=e8xjLL$GNE7t^re+R&Olg%B%1dAFT9~D*bP*hZy zzVzNb>6E+a2JJF_Sj!X;I6uEWX817{bI-W93A{UN z+EJ$E6iopTp+xSMO#xSx7|9$j7dBXd0cz8>^*tp%hDD5Q3Y4+3J6PPD&g=p#;tgBG z?n?0PZ-FQ-<)!}M#vj2~uUf3WI-#6|`S#K6YvI)tJ1O?0TLwN<{fM9EFG;|Fo}?V8 zM3A>@2{C&TCN%-}VZo+^Vd2=LoF&BFT*Hk?2R|W)|0ZSB*WnrfusNHXLKY4pO5FY} z=D@%y+IhILak;OdPJ&RsCCJ?^F)kE@l*@tP0HpS4fzQ!=R}1+I1v3ZQGbLQJ;#&(P zfB}(>mvB>_@m10ugrbS7S*s0&wiA$C7SDh(uiI>vL@$^_1hXF89NQFlPEM)Y6zEvW z&hA2XFp-ZYc)24OxYr27XO1^6)6=e=ds3ImHFrX;BsH@S^Efc}Pe*C9$@woG($?GO z)_w^n%}Z;rMASYb)VO(R+7RP>kS&7?6nM=d_2}G;0q|;`rI$zyXAA-3EWH(!B4wMfuc?>pXb?edfVW`*h`O~>LS28sBmw-nX#N#vc)Muy@!$_hR z;tK$)f=JqApdky^lq}pZbbWTD;?rE^c30t9?xLvF%8$mC@i|2wcPlUNfn(>nim@@! zNM-|>=N1b&bo!~kK7I$tjK1At{fFujPHfdn$Epv8DriWESaHu7nK$LZrTush1 zalPc#WMZuy_qxmJcq()zvd&do)}yhm(6)dS7f4;@jVbW9Aab<>_^K$d7$!u-3i-`G z^Fzb!AM>|2Q*WE7R7PB@lspuML}dN^1E%cVJ0=Rf#Y#@R<`p)@owF%cW}rJ^%g17* z^eePdxf`=|5V>9Dmgoi5;uv`cb#Wby*FhF_{YVAv5^z-Z6z9=z@dq=f~X^6^T zb(VbSmlOKy$<5tOHKt$gf0zt4yLOaGJG#-D@OU)ADJhTEhU|pj344eNJbA~G4)q~E z-~ebz_c?VvYf#6fxUhnBCkEgACifN_rniaU6A|DL`F}0JHMk(cIYu~K<>jWrOAZfz zc7Zu14=JOCA4VR=ARwPQA6fz+oYc;PF631Pmpj+Z?ByViAU99^&Fm^Z4kIgSSIl3r zk%Kj}>u7CKv_{X^RbZMt^ej#&mkRyy$8IyhA9j<(0wpIfBX!EC zC4lI9YSYwxi}-7X_Ck;2j#|#kSQ%i-p5={~76LpbKAZ$_0dBUE;cag-oFw~ z5ohl<9RWE6(`tM0v_>Piy0fyY8hGNl-c<3WHR|}+Hb}JgPA`kKFdK##31@zDzx-Ts zBi{#mg1~kxRr%XpA4JxPi&Z{J$+o(G^2DPPFn#sWY83NPce;g{UQZLI)^t?Dj@Qu4 zt35`YB*BV_+>OzQ%nXE- zUQEdhoWq2f5sRr$6xRg!KL1J{)faiy{$7mzb1RC{R;*%aJZ7l$qPa z?uk4S#xz3+_bu|S3SpYR4E5pm?QXIqY^2=H)BT1` z4)RvA9nhvco+&;fS5+%uAB9Tst|oYv`l+c~^F{&ahO zIKBm9N%HtK_cFQX<-xTq5*uF3;OUG;a2OMeg=Z2u5RK>@G>GuI7meiDj`{ z?ChN)Mq%^?0NjF~L`be3UHdg^*mJdKynh-xW*B)D#a(uJw&{~XXv{+ZuACCZlCk*u zYVL>wRo)?cYd~Vsz{W4^m^Vxs0u3cTpYB8dd2nHR1>*4t8p`581Ic$%UqA5auJd9; zaM~HQDUrh{$m}L9m^iX876WfBZbs(+6%g0xN^5G!aZvu1A}+U4!n0||6t8aRn^#eL^zGMFyAy>R zOyGbYT}#P%Q1VLdjr5g?S60yWq7)&$UiYk12*B@wXOVdm@z?tHV8#$wAo0+IVNA<= z{(9w>*FOR8#Rn%Bp*~+{LZyto|2QUsjStz2zxKtr)n`Y8JNF;Gq#hn^`Rq-<*}vte z!+wXu#5)cfUa(Z0X*S1U^OTb2Bq!lF$Wd>QjsC*ie2))@BJq>(v?_^ZxahDR=c>WI zsOrWa^M>W*mofb;um1K%=@fSY%8Lx1>tCFFlduDe;(Ba!?dS`{-~)!CajVQztlrt= z7CVjh9suuoHqd|s31t}#Wg1%$H2mK}m&;~OK7;spuT5sI1v$q}btA)WEIvm;k{>N9 zEx*|N_A*|50yQ;@BeAdEfdu?FOVa%K{h!$19f8J8fj-uR)V^4%_Oo;cX-TOiiLH-s zs#xIT(q-B_{m~_39mr%WoR=d2qj=>JFkd5Wy{P*I;JC4ci1M;>pxDVg(uPs4C*syD8^F=W4sP?$! z*}QCEoIE-KDqoKkt1x;W(Dm*?P&w3h;xFM)Q7g7{Zd2d{5y)ABozsTaJ%G5e_McV4 z&Y__k7G&n-yBFtXKf*Wm;yXj38#4z28yW}Gy|b!Fr~~}r(D$CUF4cw5|vL~{w{g9awQ`}fak)Az|s5!N1D1fK6R?vu;zWly#V`V`u{Zu}u&)lqrzhCUJM4vRlKS)E zVgG7^%}y)RXzGgC1`c`uDV$#(zuu6uYL~5UpEmB#K|e3~_5IS?`BxvUxDU9AHGlcj zut0VG(a0Rl!!oF#qxv#lBq-xgN=ZUS&LE2Lg((lk-JDEoX7-G#saxVPW4!H|!L zwI?WDec{K7tV-Jm$hHSCmYALZ0B5AD(~QSh37U>mnZszkM&OuJA8#sEEt;BS$nQN| zd$#*)+oS2oGK&3W91@%+%PbB?=@hqYJlFps1~R~knT&||(z-4cdg?~jX0KQ5a&=R~ z|8NO@J@$++nIsZ4ji!n{Xb`tP+S||r@#tH3`+e*S#-eD=`q`7xA7$s=^E|4vEeeTA zsaU8m@iUr(p+EZ~OAy||7y2hhB#VcTbCQGzzZw+y)Vnb?>H5a4k$6SYMXr^t%tg=9JQqX?z!5b|E(kHxc?H9_#N z5lLy=GwjycwmiGBq?+gtmG%=>n978S*3QZlj?VCrQ{#

    xqDf0gb#J=>KVp@DQ zp38KjVuNSgVGXd4D3FEnrQ{!8pv~%-y8P0SFNO@ z&cPWsELUnDM99MxisuqjAHKOL&%-X<9Y$!iF?{X1$&eq+`NT~reG9F6;?sS{1;Y{uxCP8q2?FG zR$RkmS?9U&qe6{om;a~~T3ovFN4C21mF@MfPC=NO!c#drRy0s5vw9n490zPT>GnXS z_QYeYgx$+`B2Ju{X;>1;UXHMZXuUW_aum) zRS=PzBHlCCR}fX=9X)x_3SXZlB{_TY`F1lqsS6ESKCFfA%kI{i`Bs;liZfB(s~J=l znSUo1YUGd1xr|vwS`qqH^Os@AI)MVQ4MTD_nI%_eKG`(7W?Ce1*fi;Vz!gh!rhw-X zReA2HFp=J0QV2-KLsS&rN**8WQAx#1t!3Mzr!Cc5Z{_20uD7CP?GbKM$7_YVE;+|Y*53^jNMS;C_C)R=fp?+Qu|gz^bm#;HYQ;W-=e$U|tAEIk zjF>CuYh;PM1fG^Xyg@N@%lvVjr)9tG4x8VUqv?0{i+^Vhn;zuw-7uDShUb(EwiF|8 zHiaUzavd$}Sd!WfS(+<6xzsD0nyQ2iO^WIhUCSvE3(bC5r+@CRLS$SkIgfX+)Np z1^MbA58 zxJF`z0W~eo;dg}e5^ToDQ5O}wr{rl`fA>>_ZI32R;R6x6qkI7?DBG@b4hl z??zSBLk_#amQw}GBdH)W=nw_lCXD-KPG9JSj*{}#1&mEe;CYT1-sw(R4p%7`@U3}v z6Gru&b^57Exa&^r=`ZgRNI!0tL%xIJzOeuPv*voxsiu8#ITi3JP_SBg;BX7>NPr)v z*+<$&EBUk09jO7)bU|M}_NIU~$%@&;=>n8Blj?S=rkMWLMjxsgV2{~mnI!=5@5Teqq%u^WMXF1*H z{Aj%1;8tFF=o?KFB_l5bV*R7;ujfiJ#mS5Dmh`+oy0G_xx<@)DpcORW$Blod$Ab^J znEdk5H2rG1xvDH>b=@$Ur;J=K(Overc6tClxbvvjwP&)A{kXp9A5K-Z;_NFg((qGL zAE4)Ji>|cWZ@d5grx2o|VGj195k1>uue}f-zvO}qn&yzKWk9WP!Z#l8R?R&txLl&d zG`sI@bw_ucUy%IgXx>vC&ah}(fB!ViPh^FKKNj^Zb*m#Pwg6 zUt$>1{cSynJFiCJ-EVc3OpP?%+O*+RdUckCs@Z=g^t34`xU;9FJ4u=J8(u9pA?C#TE?zhi3>*pTr^6WL9Q&1|{h0}_G z+#nbU4hxwxLB>g%FzDDhuvc|b+g?F9oqmU55Z;B0{KF+mJf;o@i6rKzFFo*=q)P3j zY#n|27?i84ZJ4)I?>z#ui%zjA20Bh~(db+^I+LY0K|@xi54EeuM|d%th|aN0;J~A) zIXN2ZQ5RT2g_EaCfGA+uG~N5++-nsZ_GbBBC94;ElnIG^XydJjl5t0FcUDi*D>Hjm zp2J8}V6E!ER}7BK`h&bEqIv^H&*RTSJu_Ccdf+PPug zv1KZ>GAv8dYff_YG>pWAx-`&SCM3PK%Y2uhmd12pz#%eW7(IdL+Ixa}Rb_~WZ{P1u zz)}sTtAe+cO&Y1X#B`SluB#)-{<}JMm^LL+dE3!P@;pW}YPz(}%**iuwoz>};kueX zOfNsGw_WP7?F0{>Fr#UgTz>^c_$DP^G8-|~OE=cEhxbw^Xzorn9^uBcaJc!Sri3LL zg2TG!tzWt!p$~~B165P)y^rM6@4ce7|Hm@~62DiOrvKNgv|^?4KM*cGyz7)M%&`G% zIfpKiNDgGCJ)UfOC{8n42g&ZHgpQ=${~_rOr!F_KLi9Rf9 zxfVd118|3z?i>cT)w7-29y^u3aK5O;jJww;)m1Q7>2QpUj@E7zOydC-`f=3B}0(!iuWHpC|t9zvj6{nh&! zhn_y#?l_r>z#a#tk_%X5pjUPR3s7V{R4`$4h<>TUkxPGQIy5^JzM_LkV8jLO1Knib zxu)$Fu!$JWTpPmOTgR%s%U$ZCknh4g1LS8FYRtLRHIKz`bgVVCt<#AUy1Sq{0(jez zc>09txr?AM?PQnOWLV%#%gSP#wM{7jJFTNkB?a>EQe8r?3> zU_#fJ=xk$63r^SQOuo1aiQlB6*P%CJx#Br=uAw%X^x-r)J(2GLT;(rOFzL}La}56qA8SLC>6m z<8DnE;i-RsiMX@cE=z(0?ZX1qbRg3+k2U8%;`s-XY(t<>1u5Ax4}9L1=St7#pXAZk zwsdj^$2$?B($vV)e9B88YZAyB13q^VW~R;+Mo5X(rlE@;cKEP+SmjEa=~W-9Kl0T) z*JpptyraiR6pLZwuuyvfzceRsQeZ&FVioo}jSlM0VuQwz2!K6IeY2 zbS)D&=Km)pAUc^8P1D^3*u7P3NL}!)RV;!tZ_7Ql2ldr$3H&ssBLo@Q*cV{`(!^Uw znsNkaEP$PMG6^$%%ctyC&76Sl(WD3PT}5|=;4v3%&>?d(VFYOYNL!umZm8&0hn;|& z?RUCkCwq5ThyAqE)Bi#$$a-QF4e+*<8t7PMMfT}-G5jNcq#w1VqdtspNWamc(+cw; zriX)`OK{pqL&h=q&Y(99aKBmUzJ3SXfR$$qcUx=fIkBJet<_9v(BmW?>X<*-LWe)@ zY6>91!br(>4OD3ki`?aWFB|i?8aMPi@}6U#>gC18!~%(>1-fgX!1uTlw27sFo%f_p zwfo0D;GCCV8Z>8w1f~zpapxvUraB@Xg(!_I=V*8}ZwJegfxw!EfxCVl@bq@)3T)84ZR8lx98g>TyOUQ6~S(sYTG zKa;g@)3vJK^#164T=PuT`Hj`DxFxSB2RDl*K21rk25NvY&NDad1b_0s+%(}UA)B?Y zxYIs}{s*n#D9lsgRER4`o1RWM+aD$2RdB}+`ctj?m!tEMck|H*{dJh*2-I;R-F%mJ zE|$x(fok5FGe3g3TTy=YNvLM-G3Y)~70^R920w>Duyn|8*D8RGHQTX9A4Ofm!j+r@ zUg2SnZN+0lJ82A$0;fd9PH<|Q5Z1)ltmEr{e?GaBpu>jt??>tX7A4CE?8`i0VV$s0 zK$49ZSWHa7Rw0B7GwS7fB>Q8hYK%VDle_uo4|U7j+n7>uBJGdU=k&~oW6pt7N8BgR zvRW8W7e+mmUFb6uGFvw+^D7YQ2fh~s)~CBZHG|ikbJ7${IoAMBv)7I37I1ziR$fLB&GwO(N1wISexj#?1WL znTFd7PYt%`h&=kX<;n-!h}S*Xc6br(%z&aK8rJg95VAffP9B+v+@!%fYIr$ua6A0uMVG%)*nOJlqBUwto94R%(rBor?0LrQTTS= zP?vVdSE48|`#y!}{0L)PCiHCal_F)>!w>hU;V~g_^HGanAx;>qZKn<$3q&rF!6typ zdjfh&_cAvBK#NcDMgwJ+KrMHl`f9^&zc=AZ|MlidptWDj{q8g-9EL26X;+lZSOQdk zrugf!@QdznhL~Xzy`N%{@!VuGba= z>tU`x)V!`INY&o#)|zvaZgbblrtw8w28k-0oV@##N-FS+kUx8 zfjPGNaIhLf6h*(uzX{-Hlf^3ndC?TnSccHrWKPZ_`{FlK$z!n#gfS{I4}O z?7bbD%g09WwL);Q)bjV&o;;xc>$!ODwG>u zb)AwMVqcUH%M=H7439lEFJ#A9ucl;*YWlVjC|x1-13HIII?qil5J)uaV7~p&z45Yy z^P?HAm=Et?rd}A>>DqRA{!|5ArYqe!`g$N?L|MMS?o7~af{>(r0j9B8*@>gyDq%e4 zq3+Y|_OHLLNYl@wK~YU?vNpFRaDe^~Y#3FH4|*m|i>-u1-G9xVD?`tM!0(A7IpP9<8$ z)90}ETiMj4yHW?w!*!A4mg?^i{K5?r%WV2uUQt+oa)y*9$M|Bf(98J;SABk@0`1sp4PeFe^MRA2b#0A5M1HbNRjI(K3!mA z_%<-dCe*2*$nRIWZg22VuoinKQ7msj%y2w-wAfy`)c?3*Xh=7dt33LNm!WUikhIEV z;p5mKxTGH&4T=NLY~qB7*g%+wJBQqh5%V+~y@ltJnkW4*J0=w^|I=+lA_Uczijvs4-8}XC;wr z-$4T+iu;>zFN{-58j`Qbm>Sd0HVLf@9`*7F(Hlq_D$yyrHWWN~S~sG&=;DF0ZsBpY_R^iM4ofl zbsbw_ADWJ>d=eX@@Br0VmF#|X|IVF`g^Pb(WWL1N+|};h{~+HT7GtxUi7Jqv^zDwW zIQ7``5F-sT9B=5vE{0;A*{KjS`N0jI?#Xe%ghD+SN1B;Z6yuu zTL-59?)SThgHfH(*FN}G8kyLyh=3onf@rc1*|%75mjsC{cER;rX&f&d19o*tbPLOZ+*84BzkVX+wGPY{H}xdb2=eAbtZE``^rH)KWlclMDu8(;7>DQz!fhN$j;vbo`+JqODQkLEszV1F!VZC%uO z^%IfGK`pak2S2m<+L>HYM7)xFPO9sKyeK<7S+_W+Bqj56TCu&t7VhICqZw5_2~+>U z^~+Kuw4L4)<{_ih3U0VVj=NmGij8GRSH|@6k_QqGS)r4uu`X_lpI7T(A?$~i92xrj-^R#lpOD4UI^V}bOGP~nS8$D zKiQdxuRF0ss&d0QK^l5M`9%pLz%#-G9GD#1eYr$?M(Ff`R9+Z6U(DoZpPtY*$4|>P zkejeug)k?-!}iQmDRjAP()wX$6$!H`>BuH8;C8zekZRZ}^t;bBljt9UE-};cAM>bE zPtcaFazA9W4a(ZoRrL$Atl*r@0*GKN@Xwz@sQ3gHCPiBO>d%BYbP_LOcav&w7V*|z zR!bh4NZt+_6foIK5$Ij%zc>C>HX$%jUIMAmhPi}JCD1%vbpp^yXXL}2ld`WXB44y^ zl$~G1BLAHncyZ+lSfO~+=uT1MBg19BDLIr{HnecUl&n^Wf!l3Z(*PPO4 z;NG}(EeKsl1Nn=wa8DL(TVe|5`tz=v#tu}M0p!d1cuqs%*829F-#(XIML#7&x+pD! zPyAHJ9+2R#Q|Cg|yVvF7w}Y0B=q4gP?2jYgr#*j|n{{C#&;Md1k@^i%g$N;eOT$~? z0`V(Cl~@&x@ZNOahF79b0Lkq)fE&JKv4M(Cbwv>?x*2Pk&r=)3@IhnNFKi#1ZR`!> z1P1F#iNCX{_?=tw&0IPCygU}+l5=Y_8$;ALp-Tl9%?xvVe&J~km6cwTJ13HWfvB6} z-hJH4Xe76~5m;^)dtC7cIYE61l>EBx+WjE8)Tqc4Dh~ypadbW#nn5O=tai{rIcZ+3 zy`z}O@17oF>6e~OsN-B-oZ`CJ@3s#u4O-@5kT0kEw6HX09P00UE-gpK3dNZ%QSgxr z5X6NRH~lvSj*mVxi!Q>gwEF~;m#A`(-i>p1k9dg;ka4cL$;_(y&OyvA;f1YttB$%o zdA{B%DL{nNaWnKx5>#ck49zGSAqZV-Kc=p+%`Lk9>d8KIze~mXp;{T9EC{?sx{j8; zO|C5ZyTw(GJ9XV73SNpt&;S88}`BHr3>!D(OhKI=XKg~^;u{*d-xw!<)1aYQ)+R4pvJ)4 zy=&px9~ESK$EYGK0nc@C}?d|WO1g(qL0=C?up z7#kGR?zhcL%T4mmCKkn9wj@_QAq+f?UgTJ!9fWqVeC>drc((Mrz(k50>RR5@^~!%| z$73}&{oVtQI8~ChoK|=k7+Jdj&x6m=!MI8pux#!B!I z*|$zUbVu|(gFt^n&=kOwLo)Ei zWqgiJ{tA?dzgE4HG@R#^f5u!!wRA-!BRftJ)ywC*$LfUz`D+|^^u9hKzF=jeNah#G~UN^ zt%`i1#^`R}^@y1pN+}JCE7*OTp5g-TR#C<-12yER#!OVy?lUh9FuJkqzCdx`vAWOX zGBNB6J)qw3Q?|^EiT12xAU2C?N%})y-@#(6#(v` z)1r6_&c=DxGMEi@nuRhyaT914|53RZ00dhFu}>C+_o7Bz$~0^oKcnMzE57&EjoB-Z zai!mTffVJ#%S%u%pUA3(|9IY~Mqb4(tnl(J8mE;`+Cu_G-h1vc{LQk0?lOFKdL`Z| z2oOSd#=RfFlkobEGUW<4O%Uj4JJ<1#;`Dmg=n3pZgX?BPR>hiq@<$l=XUXDTG4*+D zEams~TYQGqdDv1O=u=MDTczVGx#r?M|N2$b((oHd;z#8tf69uQQeH9K?PsjuKRoPr zt;7Mn9PX$^?g_T2dZLUVT^K#$bjVZ#^zvhX)9a}CwtNx&0z5qOqA&fXyn=73(gruC z2DDx;yzWyPa^F4iaOH}xvZE>6ZO42}zY==;${^{D<11*Mz~UeSj#MV#6l*c!xMG?; z?Ez~&DRQu(1S%FR<{AZ$m}$cyhy6@qYrAgzUgTxGBB8)S*&S>WrZ9Y8+q~`tBsQ< zQNpu6T8^M1ZW39)B3*f#Ta%TiB)-B*Jo1jy;@fEroxv}>n;+JD0A7d`>55}=@i`&S zSC3e6(Kq-Q8%U{MzRkl!?B$N00u#vBLiwcNYEo=U`4PgwzNE&L!K!0T{~;sU9#Ky_ zq-v4>d0D8}+SJG;ktFeIx7F_=gK%{cp@BhP@Jt-vGe*V)gE#Y=Nzi|MRXD-cn!vak zf%!zgfpolkpLYiPwbx60@q2goba&?9ZT>^=)X0K9^o$!l^S>t7-6l?^$k$DgGdUH( zc_kw4xMoMgh;}zPpxb8|r~+J3d}2b11b%oeb6fQQ40eJ5_rZ|MWRZqX7wg_x`jUkO zt++fXb6IESOEr)qT1a=Re;yQ(C9MP8;d{P(TY0bg!FLz28Xer58g9&!Waa`+z1B~C zF)~fh;!Ayt)lg)MW;wChOYL*_NYj^7VN?H&oC`I1Gwa<+Pk_4m(QVYrXY{uguo*VK zoghobAzrDf#4Fn~bEqTd+-Ahv6 z?_2)X!-`@pzUn~e=l^zVq5IG8i~O*h(2}3M_jKhvM~22!ieLTQT{L{NM(FN{h9T}o zl72>X0qFpGbdAuo#Sncx<~N?W_Ri{eZ+Ht9G)Jo785RWXHxBK&J*!$iO;O$k0@}`Z~gB-ES7R%Owr2}MHtDhM^W{d)k=_yi@$iz^{Lmc-hI4G%LMF9x0?^Ov@{{S zi8FO2AKa6O@Yed}{mx55XQxn&XHhnnx7Q`LOPqbLx@vbBn2OtS59S&)I>rXw*K9s@ zKEDAEd<{75a|Vd?q{vWp%(owOuifX|+{CY;Iy$N77+1pb(0ILKu*bR<;ms0%9pT<&`X6id6xf690B{oKy@P%Oe1 z`_!RbWarm(!MA|WbUeJ0SXQs$tOA#NaY6J_%O~S|=jh?6W-H#KM0JRV)>&Pb`>yC( zqOb{AJfii)CE+rUUurV!#mwVG03WSuzJ3FF7!=vJLchl%7s!8qv>rk0Lm1aAL;=!V z?Khhpv7AfY96gHUu7v>m(a}!os!4_Al?oLhndlDRZ;6`gQbyHq=IR1eGF1Irh|2iv z^{SMFe{Me}lk`o51TH{-G_G<26#L#2Aon5`_}Wc?m$C2(ateKQH@iH-R*$C|!8r?L+|cB4;e(`uH}AIbsCwzSUc>d)_OS+eduRJhzJM3zJt zTlSk;I{td3*Ad*D{@B!zsuz3ea7+AY2v7x-xrSt<~X?L>t+2G(*PUXe<3RBw)C+qlM+wsHMA_BxO`27 z4AKh5DSP6k!xG#4`mko8*Oq-)U)-OBr}*m$e_lSow^-s`fPddxAnA|szJDL2-<(U< z_*-udX)rGV4_HbWLxk0LUD!_n2q0iLY$*UwH=fob<@TG8-lq;o>T;xW>}lVhs*%B> zA0LG}4``g`bm+hPao#Z>!>GZewhb1WU->rm?}YLTNzC!e{C~O|Een=mPqCR_l)j*3 zQxi1*)f{G{kZ_xNfHE${<-A23XRGTU;a3ekJ90KF_Or{DWk1K}p7f3HPrn(ZEv#?; z`)hgBV<2yqpH94OqmpVX+;NmORM{L9cs+G;WsH97*USAdJ$XO3RwWVNV<=crr6Oub z#4ofY>4@|0Xibi3Edz50Sh13R2s3L)OBS4AMW!o=p-KF1cZ;dO)Q|9QcN5;A!sWY+ zh0ojt4Mj$xQ+bMWC}^3jl8O6ufeRUyc3QJTwL1S$G?`qM#lIAFKhqeiggb6%9`V;M zKNA1vgY3G*Eq+G}?1j6A^U0=(*$Vr)cX$pqed>hoy6QzxkFnELf?Dbb3ai%#GX4Nzk5WXPNu}a z-Bmft-^sN)LP3JWA9YaD0he0$o?T$KpbNErjGW;CDL%jSqw;80J7OrI`Vg6Gr`{DT zOpHU?Nrh;(4xl29Pk$;sce62cEOs5ql|M7!x}E)25yXT??MB=l*Bvw&l#W{IwUx3s z0B~%i&g>v<$bs4-}Q+p@Hd(o#QO2)6Ka3ctm+kVqDquRJhVTrVN%C8kKVbkoh)iiW zMWV{${%il5FA8mKrkLJ~{UB>6WrEMK=ASqJy`X{gUs^Viiw!@XFO+mobr%ByDEcFn z%41jN$M+1r&vUKf-_GA2Px$udw)7P#4NdvDn+JAMS6W&>Ra}W|{Sr~K_aq$ z;CC0mm3~qa)E|vyvVfcv3wJvQ)HBB(`6+oAw)s*nbqo(7gM(*hol=b`QP~Z1pKEfdk>pw_{lLaUHZ@2`6uGq5r_#)Q{hNtx%yzgT^8 z(b(s9l&>0iL;`J-u+Dafgor5U@1AFq>-I3q+HU8z!jw zZF_`@8>MIF@f|n4oKcC=P&&H6*T?^Ye&-0$@JolFvVnu+ z0rQKza3Q5UUPoz85o=9KHFc*UJL|&8!ef6jwj7GOfbsEBfR}F;6?y#^=q$V6jXGS+ zXV=LD82|0ajx5l@y9QMR0uO0jvD|Vsfah#ggiMdiG*%`*{VD2rWcSdxQKrnVBHfEk z_?3t(Wao(21@455LV5V@AxU>fRfgmh&8`9Q<_Q6MhIRbhEtU%X~8JTczG?Bs*)ry=o^D+ep}Z;5&v-=6}y86SNZ@2$lr z;srG=KT@?7lQ<4pzCk;Go=bYbR2|{=m@ZIvQy;hgs9YTRZAvZhIzYsJXLC#re)g{p z`SE#l|Lc<~uV}B~=CLi%*}4s{cbzSK5>5EU4c2E7Y?DB7+P8Lr^$wtc!j;s5=WP0o zhk&r2^V5xutT>A}8-~Pw0feLD8(GZPj~`C=WwQA9`<#{C<27$ODc~DM^xzL@_b~kX zTiH$*nOkF;{GGmROzzqyvyVD&JZ2xSNIURd_Rm_eG(QS3fedo#u$G(uH`7rPbX-&2 zT}#NLGom7Di&?|o*m`~>&iebfss72xiNmLktLO4FW`n|+g4%vUD?G%)Lyt-+GATIo$7idP99cAJ z-iC^W;~sy5JdnXc2g??hi}155^+H@fLugO@-cPAtaXNU+cJWf52+NYL$VCep!eK&< z+xjwXkN1BQ;@Mlrnj7z`C*#O4Sq__F9-%6FQjsoiyOm{qqczmXdz6?DEzO_+rFXX? zLmfBoE%Yu+q>~*BcKd{w+(nga+@OgC6&93WBy#XOO|F7tokx<4^x7;g+3ma9-ot>W z)PqOSll%3WU85fb&hqajH)gCokGaKQ3Y^!{w(KpEEJRjihBOF{c2PwS71O|=pIsTS zx}(`!eK-;s*j_6D3Kan);?@AiX`g)ftbV;hG+2zcs)9-lZ+o|Du~Lc7vel=Gxw3%L zGv6(3H2^RdHvf*~;5@{z(*M?O_@Gm>0OZr9MbZ49j+-7&>MVFv$4K;$4p5xT4StCP zb%B&9C-Mn1)HSpZLU)HQ97qDnR8lfA_l-rdKbi8@KtwTeTTIw6&F!V%|9l_(89Z8S-YwQ!&<8?yIIfMsa$S3(&fN;Kx z!#mx^ax zyxjc_AJgOovCvHy`Of-7Hr_dKHS&rKo5X+{FVD&rmGjM>` zQ1a-Wo^VuCAEvgDK2}^7<5s^0aEmd2vZX(%)sI_l*Z+6Kyngf15pH?A%{}lDDzvm4 zTq?k7($hJM3FS`F|Fx!&QL=Smt59$+3FeBDV#hEfXa;2^R8wj$dSoogEt3Kss zPB^LUBjaW1&S@PCS3o}ezxi)1axvsbGCG*=pk4AZ1>FlrnVQlUNMzj zJKmH>l}AGVZ9Te!Qja~J`@;UsZcd_(XfCtr=kZ|F=8 zS3I21ILoE^*=-e>*3=<}MhF_iZpv-r?iq-8 zmhJ*;OT&&b3;IpE@BS!Y7wA9+SjtTgOVfh}C7%#%I|YQh*{1i=!nWU2l!r~pNk}$Y z8+R2M+kx!Yz@Ci79w*COES87HoH=yJ-0zgLJ_n;u22L*k^fw6F#Gtt{3stTTo-F*C zNV|b!-u^l~i5JPzXo@x)!gd_a_8HScjm z6E~7%i)BdN=igj}p4^ZKAwsL7487+eOC@OGPKYO;2Qj>c_J+rCV$i1p&MZ%w&Avzu z>`+gum;CoZDhns;8*P%6D0Br!fmE8F{VA~}6_Jg|ix1Zr^p->cnQ4fuSNX0D!ZuJ3!$-)P4p#8%-Mn7UYB7pzEh>O=x8WVvg zB*rfb$F!w=887r}wL$C1G=O&6T{RGv7h{FC?7pVLn^rCarDI8OZC)XM8`uv48IzoP z1)c6^C-UJw1hR8NAi_hS*brjqF@M3EcdBZ^uz({%hr{Mcng=>b*4d|mHr409OT3=m zyD5h7xTDRCNfnpKZ?eR(rVkq%#1X?B@;U-`xQi9+#Cm$w5&%#Og zBaCu>$pakIQ%?NUlDHs^&N>rhG(RW1sV~WcPGsPi$;XPUfa6 zs5RC=ZBChCsez-{`wRASm8FM*$4geiu!o0k!{kP&J5!i4NUSQvJi42^dx z`gquamHr2o$?M(+gMa{w%K>=IQzWIcQu1aH5+f) zqi1A`aE&p-h^9S_H7}uY4JP&L2B$*X>p2bgh9@TDsI7>=7E3#R7ESgXjP4ERB0`Cpgf-p8tuy}pLjx^ty))yt2 zOZ?)Zj-x7lkkEiepvL^AZW;ZB;+W)@WLZS3Tr2__es#tg96}V-k^u+eAcKD($wUYr z2M#<83C2N#*$_XXx~Lk7qhr{vbs;0E-2rX=mWJlDoc%zkbXoB7;%(V*lBcOg2q|M? zHq5;9z@7;BD)MG`T&{piWA?G!4P7c9D;1yz$T< zr_9abA}e;$+JxL^$FO`p)gSPx2@AeBi3+e|q2`_>F_YnA$(&^Jw|4m9ildPMV6lV4XS?qD7u$JKZ+pVKC{28 zg9FglCxeTKHHdVj-(}Hvq8*7AhjsoDPY-vluMvxG-Rlyz99DzN3ugvm>L0F17OA7a z(T)dGWAw1CncwNKi{upOvFJaSUcG+wz#6Q)&&TJxq!z6k?f?#Eqi0Tm_i={}6G8BW zhkm4oq#%R^FIIFxrSI=;xa!5`M0nCiNqf%m5+tN5QT|{y^c%nXvZHFQ->aTIT3-X~ zx@-rM+yWz9h2>Eq0@Jlo9&S+r4m0#X1QpJUGAPeM!6z`QjQ)uv;EvFflfO_>t&n80 zQ0|9F8^?jJt&_x6No5Lh8AYR$>4{p(CTLIyo_QilUf#0trV z3lrgoH8=K6)bER3eUe6Cj6n=+?%y*Ms6X=S9`Q#saVo7n?Y@XyeOrtE&&13kdbHO3 zSz~kyey`*lH?)k) z&J~X)n@jx?yiT+YReKbe4oX^lSeO>+Jy+sR@?*@Popfb3G<#D>R71QJknUU3<|f>&rCtdC>+V0>;SdqJN3tik%j5@2}2CiwD(F*0kHSaG(#pO)AP1s7&(r^G`$Lt)mEib z-{jC?#dj}4^jCmFj16ySqQiOqOP0C}LY#_DAA{F)v@iSxWwf>b7Y_f=<)eR|9h-eu zl?}Ox0~h}HQ2GQSgAD39C0x$|2V8}*(9o+qmk?Iq?01Ph98Q^g;Ncd*zmK`HTc49# z1kWUu1D7K1TRyBT_7jTuxX&4`XQ{vi>i_8-b6376r)!XP2oymPZo;j6!ioooBgU&& zylfA59IiidxpPu&Fz8JkOX~i^pOy{3pR!8zi*6Aej=>pciK!=uJ!+Z6F5r>dX%C{` z2Zba?vtgOWoBAROYJ?KNkNS{7@KTUj}yN!QSpld}4{_Y=8rc4j=R+c9yS1K8rqLXmBvq z@w>5;6%o{=tJ1xa=B4D6qT*C^NLhU7w*~nu<$%Mw^I;Nv)CJT)j>Aj4i5(&5D@ku zipF!rJRu_OXutAQa5Cv(vcPR?KM0coJ3*Ssi$duAl2r1McI7a$)8q?=22l2n&QoZMNxNL7~Ncb)Zu|yR1nlI>?o^lve>Y09fg1@rVH*n$z$h8u* z<-&4acdWQd6xdvRZ;u3pD>95Dhx6!sUoHng$P|(S@q4#_*;g)mTwJj;l3k>-fA`Dw=C{XiH0X@9!QYc3&y@~Vi$`rfhl(Ke zJslsUEvghWc^{wLc8eS>G~z$&lRT9$W1q?|ELK2f!)i1374E1f4SH4U$QI8u&>7F| zZO?75^~QG;J{^jJRwyAg-6ER!flV75M&ENp)y8o~o~%GKWYB; zeb3=i{?{n~#59snzHG`d{f}zU1B*k^QC%a(kMlB3kM5KrmagH-VO}N;uGqSvPq6N4 z(((SxJZU3h-1vWLY56jrPq7A1V6UE8w77F!Bk)j*n99x{{*R9;D#>bC96AZue_a*Y z6`l>f{z>;yhCi&?M3&o$!PlP16=v%D&Nv7vpl2hQhR`Z4d4sNP?b2Rf`8d()+@|>} zYS6y}jSrL7k8v_~cp!0AK9ydO(SVH1%P8A9kdsj|$J0aNx9924&3fimX@U`V!T`~vYjDKFFv`QgXWFUR(jSuPPlrWG!i zd2t@qm^LyxD-3?(!H)lkC;lQfsjwHv*I0Y8Et}MA?TMK7tlQXi08Gjdk%qo3WwoD^ z#gDFbO%{qR(pY72G(ekF13ml&HSYZH(Ek+k&0ms^)R$+;#90D9@o+Znd~mjB(^0hO zz|#%;S_*Eg5mQEt=v2S9{UNV&N{b+33$6dG;t0h@g^a;3)!#gMY)Y-vwB~+fsecSs z15=w|X~0kka{S~$^QpmfwPG_tRBVl7$-KF-FkgDDVJ8Ba^LeLp!1StI zL+Lk-&pYQvd`sgbZ=frYJ|n8rQ5Fu2yg+Aa|C_?cO?T{`+9;a~ng2cTVSE2yhrFa~ z@Wr5T!d0Xe%3sNvd;QFs(TsdT<(qh(|427D%ze$g<9X7-{H#dtgVXhzUC+aWx*~V* zvSW*F8SHSeW7~oXZ9gTf;KT4#@__va1$;jqU^4URNz{l1Yrn?;Uoh2W%zYO@Yl>3^ z1-L#HHvE2VX=M-T*EgjkIU(e$F`#xW6)5BZdhjOynQFSV*JW$-K^ke$>w99Q3xVJL>k2uVG9V^lXWzD{~igo zCd%D^<0Rs^{Ww?jm5O|v6Z9aHPDw-8%UF&&xiy>#lQ!tKjvNbX4OM? zvkz4JI)M1FL95-4oM>=8d~FZxSt0<&SvG^K(=9YhkSkVAbGAt9~ z1B*%O#&@*rjJl87UJa}}1fn{8SNY`Ptn#L7JkxKjy+PfRFels*IUy4^P@e~Vh zmwyF(DF-Q)#4=sQdGIM^9$HR_C*mKh6#J$uI@G1|&P`;hS+ zb5(Bqe5gjtC#!$CCiFA!J1eo`YrDMFQ#`3c`Ab)tIb+3T46UhbH7x*n?iz{u==wYl z_RUAf=AgVH0Bn!z7h0H=S$A%VOw9`l1offB2AMQCbKc4UDJ8LMykhev99=L!56dQs z-qMuo_G{|b3;a=J6Gvgp{nr`S=9AJi=yrGVTD~NM!$^N^C7jr%Q>`6o@kI>${(z3* z%S<+;-B)M4_o!N?^P$;e!VHKjlb(Pn&6iDm5ssEn&%B6fdXyVwt9iAx*^2h4|5F<6_GR30w7x-v@xCjE9E3w(_o^Le1LB|fzvhhkvyh^v>7*T-^e-ne65Rs#YK ziA|&1zK>|)KMF1!w4#lEnPXdntXvU>LS=9>lZID4~=Dk#io+T}St!}Ul znmDS;-lI^t#-fS$zDWVS(KJQG#f*_+H8^A{4eU~q%crs+Il);G zBOs&|(3%Il%LX@o!he~-^+f`QLBO=gX5Y3ux@Z~+XnOi}zSCU!M6c-kvwBDzz-$4P z!mD}NSKCwapfG+vJyq?VWZA0;2jS`-H$veHw0{1Kc8-hj>r;9NwsZ}l`h04{0ho?s7-;nUVG&^5 z$Ig#O%LC5d+|vg9`YWgyx$mg}_53B4R8M08&uDtBMOpwfu~fy6N(EMK=v`K|+EXxX z*hu3)Gq1goYEAI8w9?PTb>zGr&f>w~F8b0gfQmn*TbLrbnM&-Wc}H29Y%A>bj^NV0 zGQCB)-elNI7ySIKoHtF6(~_x@XzD$E0KBJD7Xe5I0Ma)F#76Q@>v{BfxZJr{vRY60 zevcx;?RegEhfM_9#qG)81p|9>{8CHADaGw1U2~T#q9wp5p@fPN*20;x;kk_*jh7n0 zk>z}<<)gl-u?h?`wD0L(e8C$R;2}~eKcZB%8+K~GhsmtBo)BNJtZlRv|Fj_m&Qp|2 ztE3W#L5Esb+oTDXismN7zu4-N6`yQ~daW{$(r6*R8PFNN^sM^H6L)W#D(-QjB;mNN z{yVf(`Wv~PE?8-2)v=uy54$FSDYs|FDK!0&3>NR1<h{m7G&*ZTC z<9T;m7J0^5B8J>&VrUZGZ@ zsSEPV;QuJ&qW^ z=owpQY&q2`#zQF^aCA(8o=GseR1C;ym}Lk37~&)s-x#hHc)PiP}tsFE(1 zWTgPw3j$^&5b~bYrVAApmzBYxAB5AxDVdg*(4#z2iArih-qUeO>RcOBxL4r84}o+c z-q}&nu~f{%2GLoM{O?af@>6)Oi^8a;O6^`DGzC@7GE~57DiCLV!vQ8uG$S4j-a`rO zW}Z$jP1nB~GA*?Sd^OL};#b37Mxlcd*07>dyOK(!hJ^a4pVG}MO8aN`3QovNOF;38z2*2?sZag-(di$^KLcgKEsh3n9Lmg zyHFj~8;dmC?$K|-3Xp*U)KR5OXWDKp@d zd&@_ibUR9PRTj-A75Lb}V{F@9tY`LZ6C53bJmUs% ztrUwx`J}ik#-aS{+r?vK9;yFrd_k?%`Kffl=kmv{0MozbtBK6zUS>&;REGvkfvdfh zirpmFZZ!c?hnZ$ynC4H#q?-KN*CWp(01~(-UE@zAT>v*t=~{6#SIgq)N^lGdbI3A_ z@4B6JFfNbUv;3-)84jmM#X*$!0+wvR;Z7mNtD%kc0^^}m+0nk^q0tHlMIV_x3aA-< z%d4usE!x`I(!QCSN(ISZ$W`HK1cwoq`)5ZVyfsNu`8{fca|OnFmL8}UOR0ovTn1}H ztr2%GmE0;Secg!hd9c_clplBaMDn3pyV$obmroACv@!uNxm_r<`?8++(&wR{gJxK3 z^(q1C==2kMs26;mGCua?{&I=jj5LBPxll~WKqf4GriR?2=j74}l~lwY4TGCaj~t#!m+&JXua_$hnDet$A|u%KC0)(utB6u!VeQVg_% z?WOuGP2z@hmHd?wU%~M_67u9bu?7(A{EL978X@X5M4Qg*jH#<{iHUpk^U}V^_X>W;n3VLCK+(|#{I5U;z`d>Ik_q?-d3RVNp)(O<;&`|9?_ne56|zu8g73a&*B3KHepTPwxvD)NzfE z)eTVBNXz2mIV({!;^URKzZi*7$Fa?@*_qZ`qB7Q0B_g;RJ!(8Mt3 zt^A?{+g)BOJh5R43)9c6CS^wTWIkO`bakPoSj$GV^;PgbtVa>FAO}FGE*?z%8!y$Bl``%kB5KO3C+JD2ZcAHY% ziK=?g@m)b{Ma}p2ihwvzKm-YMCW25SbSkOE@tT0xny__L1tY|lSrB+2Gydt9e1#QM zVrj#LhAk6N9;`PP&I2uq-?Ce#>L>uhb5#QLdE-rfF3ktlPQ!kG41XWksO&;>h1;or zQJgOT9rN@wImzU8Gj)Wk6gj0okvS=gi&OApax=XzT&TJ5{tuv6TWq)P)70Qw5lnzO zvgyNu3qbhrs%db6!_DbLC8jM21ZUCBa3Sykp<$_9{sAlwWGg94DwgW$P+`;m3$HQK zqY7^(&w7dm^0TM?YsD=_a^B7d6g?f@Btm)3CqY&tme?BCJnTF*c1?K$Fw<}jQ#KtZhH49xa@ePId86?H2Ja}cV~0cF;> z;CHA2se^~+=|jek%D!#~Fd9Tz0vCsk(Um3=!y!+3`70Nk)N?z4^^cGfo?$S5DoC{5xSjzwVc0Riu??P3aw_^~6GKuEl z%T*tT{uZ+UhX@kW>22sLXO3O$B^Lg&j2F4KND*yZ{qb9pNlpo+vSkI9dWTt#`0-2b z@(me4F1c(@I{Cr3b_}QUY!EFVHB(Ihc8tF}fiNLH(M#}afh*30&#QRz!JWwMli(sz z&>j81*Edx%MNlTJhWSMBXolSW3qRI6qunm@%|yr93yniHD*FRPH&q>`Y|>d8$3Q=9@;OU%OQpTQNwwU?!Ac59pZX^@Q!NnA_5RcV87h3xUknzL78 zG914AknrLQ$N-6WogTK6E@^&1^_J+Ai#p5}2Y?jLTEL9;X-xO?W97YT zGxqwJoAmA(VTbl^cW^NnIT{%C%yPBz^&&1YXVVGwrJ@+B5DIp971|;D$BSf=u=482 zfeQ10I9HVXY*e8bxbc$FAXY<&wa{u5;8$pFTqz^5yd-SJ#nvI?^W?K8ex4Ai}y7eGNO*cbpoq;lwj`U0s}G7`t!&|b>xgD<@9n~b!2nT7v&uEcNZ za}iE?00%2Db|OdY8ORgN`3u{1kCkcPsE?Nz^Wod`scb4#-eUuPAaA9r)I&!wuKGILTeaQ`s2`Z9fap#WsiA!m(ND zYYX-XJ^FZLM7C8i2-U;(#Av7@Toaz)NM?nJUH#Jh5r*d8@M~U;r|ek@RVy0R&EvbVQ;3UDCSqtOyo5RhOxy#9-a{_&^T+wBl6>f)({F-Je|IC!%M~%%TWq?hJz0Xcc z=DBEU{5j@eW-yuK+}7V1{7+Dy&7q38^j+AMAH}|h;`yR{*ok{Shhe5@n#(R-&=%$( z>;cGpgzzMnpHc*9Y7fLA;1XEyV)zOxOEXzj#B@gB1Mg>%{K{ZRJ2uoXZL{de4qg5c z(HVOIAf)o+hYILv4vyY0{Vr#-K=wE<7An<|7p!3t)`{`Ed|;UM&b{DSWP4%4u?jXk z&(rUZV2mRdAVOvz>=W|#3&znsSYFCQES#H!gM{PG50#3kYd<$Ot~y*UApCkU;(N?T zO6*yb#_wJ(RAYmZk-$|`KmtUXurw4I4U$9C+<=N~sTRKrkMj@H@`Kp$yK=3VHoclE zjtmA&?QhWh;*gSj_4jck#NU-F)K;%9!KwuF73Tp+NpF~ITMxVnGpONaoZ}i7F`Vy0 zxCK-t5H@DWDZD^Zmqumg3XTm_x*FzLN@wePVV@puDo$FwU*pm2DtAylV*lN%1~)g2 zcnViTH~MA912uYkn*k>RQ3`o8t3qeDvn6v8nP&f~ixam6m1$UrCwY&gfqSgMhUe!l z4}wFcQN}N2G^4gJG z`d5weP@Fkk?e=CL2CN1Tb@7+W;$@nx_lZ+Qz|w3i$n4P`j9h>q$*YHAn*fQ6HIfFy>5XB@X&+P16**| z_t#&4;2Vde&GNA$eU-+g)zVDLJX8gCg1Ltr>Y4}ZAiZJU=XE8>Xz>?KRL!rOboTm5 zZqrv@^YrWY0^bg3C`Tl>1y8=;o$S&y>+SMH>Z9+Jr!gG%Ku&jFf`k-o#2s(F!T~pn za0!cWeiK*~x>@9~M{)MBcbqH_`+yf!6VKm1pk{gTXN}`8l}xUq>QOsb$2aOn`o;iy zk5S^L2$a0M0oH&mWZQxrzzV5{GJj8kH0%C_M~z;Ly)k~ze6<0}Z=#aG-=aqYag@LLgFkF z=hV9{<{a4gUDES1N>k5a6lcl0QVq|jWM4iqz9>zTM2)ly>Kzx(+z+#w2}eKPgM$t7 zGTF?9500j%Ieb7?My2WuQGnjjhwHMOsr#Era(r(2xVQCpTP(j4JR{+q<0cK1+=~Wj zrvmj;fd(UZQ&Et4GTnv;0^OzCtkd_G5e%0BNYejV8L|mZVyxFC#fU0Vd6d%lMa5AC zr9C3D|Gi7HqUd-2YffTQ6p@#Z%1e8)>fyv|WkQTfp>gM&sCT$Mr!@1O2LmUvM>b{R zJ{e1yUgP`1{*cy#y!>mP`=R~PQ<$5*xd)?Ae#MH}7*xhQ7>QCb-V`1O3<;G{j*sJ{ z+O9Y;9Z+D})SoM_AJl4#f(4R*%3tvU;(PTzp#IJPW?R*O+mDuw0F2S};fv_8e)Lh0 zzO9Z184xHus~ALSv%IclULpbcHwH4&~qTQtta>3E4eAcj1z3Uwk6N_ZoyD5BXr6amv>b!1ks=k_aH2rh%F*y1{QFph!z#CHU& zfQ6Qe87pAv!9J}Knu)06z8%oMWYE5-0s9cpJ~E+Av;ntEC*Y$jLg;%Y>wTDIyrhPc zNdx{g!D`vjdWT?rZW(tj%8EmOD=QPcXNOp?Mb}3-s_LSXkVyR?@gFz|)@$5& zwG$i1?3nU1tMfxE!Ywj)IMQZmONg;y&n6VF&pCTg#&!8xP@gcYeR^}&D@3 zMX-*t6m1|Rf%b|zF5(Qg#whE+5>O||MidM(naA;#?YBYpIJRBc04AXyvonD8?f+G* z(i}L*`57uW$t_WmF#P0x-{IY|!}tLmXuw)#@5GQ_iJQYHsi@LF;KB;dz}1r_Ut75{ z+8_;sD<(ue_hg1uk2p)2yg1*l$U7KZznPPMZLq-@b;Y;Ja!&mG%z574=5%pCPthQ2X(SwuEtd~#%B%07Ot7s#O;eB>|@ZK zcyX3d1j};`Zn;q|&tk03$=S@T+K9&621?qAGVIs+1NJin&->EmJp|JP{LgL`WHR8d zyn{F!C(IUD{OO{9;o~F7rIP=Y23bRLO1?$wLk@lQI2mbE*`T9Am&=#I!c*}~M2OqL zC8l(U5HGr>DL7#~%dhE@j*uW#pyg-JH7DepPkcD_?*~(eOQSi;E~W~);B~!OjJ5$L zl0Q+`!LSZ4QuLYqx&A~vt^LbVtpk-YMAaefJq%EMV^e&|T3*F!-m{kY$rfDLK*8x4 zvnC8aI3~X&W?utgUuwfIW<$a+Oi|h^`{mU$59lW*LH6iok71BqToA>O+_61 zVK2qKvxH@fd;WDm2{=^zf~+Wc=)c72UzjTS!<_eDc_evN44PRyS}3thQCxBC`-83} zhq*04Ka^|M0Y3@CvbTFQy(oOHPKSJG#JW%SJKTnH4TDveBVcPHm8P^Bmh|Rxuw%x$ zBdl3KIUlHf?)lUGtGq<3g&@@SE31>G|L+je83HIv|Wx5K5R;a4iiyJ>U#v_aP{{q{o*aGKt2aj<>rG4wZ( z{RVx1$Y;AUy7p8R?>JtQyU?p#tF;Qm?tm0hHJcSLy+10d9e~CE`Akf^hKc2f&)~c+ zZQ*9PeG!?0ALa*WE|-<-bn3{SF8bBuTXQ`e$>F6ii>eGuDe?4hVw~!es_7&B2ZgyL z|HQZUa4{{6aog}%Y{W_F^v1SeN2FJS3}L_&IbgJdHyG*H4y37L@I{Dz(jTHy(0%fQBjgWi0i(sCgSa@U8<(byshZ^L+bQMtSKj@ZyNUQ2+y4@Pc zZp6q2JD~R6h%XMDHc*-t!@v2}upp*sGMBj^W4v;$x#~u<1as?Md6Ju;FK*K}lr0o= zdrMHFBzRS)HaX#N+LGW@R?E+39fPSmyPz3Z+d#wH)@_IXGd*t2V>9!gT-4QJr&v`7}Kn8|5m0s*P zrnYwIwZt3W-wQGwPL2_#@S$JU-*7+Lm|=9yDF=BhRbmDwl)A@(dJWX405M$P{orn~ zLGW^lry1(n${-{VmrW87#Gu^!a_F%FFvip|E;mze_$0?c8TUjDM^lHhjiU&*+nXoH zzQsNHX1_cvR3$Qv3g#15D(r{LOLD3uX}iT5z|1h4DNQOMJ-5>&ay8 zv+g2iXOz@BT|yjI^B=EFZgY>>-ne7Y{~ zxYtUSsstv~Yk3E*#sq&$PuF_xKVZ}VfG(#Tkzi2IC{SOefZue7sib976rk(o-pk#- z`aRjHj#rIe>{Wcl_J)6FxZ(nRHSJWDlcKaof_PqTP<0 zI@_;dQwA~{0cwcim6;Aw_erLDZ{6HEMU)AgVsF^SX^HjQ@v47LYM)(y^V^p=6k`cJ zK9nnQ!Z5|Y?lOZ}#oU*pF%7*IR`op6POa%$txZl%kT92K8I|HG%Ks95REzn}%G{Fv zGuYU)3~*JU$7#bRY~SB7iAuql8Ri0x1$^8u(S zfK?DpA4xE;S&o*_z|(F!@j#_5f9+Wo`PaYUxKXzE&)JrJvEeisr_z+hDOuuu@zW5| zy=|%Qt$-+pD|842ukQrm2&DQYJTBUOy29TK*8ego zwB^z;H2eGL36V#N-c!$C{?;BDbL&0K*mwG%RY*hh@So@~BBOv6GS@-*Vc8EZOI|N6nq%6F*7lROLFq;y?kCgVT zYR6tQ7Aha$M@>ik(m#BM{OiZ)-2k4-gA6UNcX`?3dySXPnQQKHhib-?&H26me&0ZQ zomqtC{E5{b$ybJ?j91nTI6J7A?&|o>4Lr72v2K$cZ<*#l_HH-i-rd%&Xv@ve@?hiY z`rG`w__9aKZSF9bcQs{cu+5X-_EPk_=eKPFZV2|C7t+=e-5zilN^;t1Ev6mXcVgm$hIhp8pHhMViLW-mlGnb^QJQ z3y^PbU!3vz@aWu{u;lf|q%p(?mBjwycx-Mw*O{?7D_$Meko~MC&l*^FFWF^Z9wz zJfSmVSTQu@yU`6&l#l_F&N)hkN}X$~L*i=O>++RsD2P01n<^3*Yj$0{scuU(2GNn& z6Cf#L8w*>MDxV2LnyozsZ#ocWAuTx}bLVw8O6S$QRDZ)|cb!Yqt_mBQy`XY*dC73jf z*5TT*P&nx#-+zm6Me{!h&_vf!bdj4$ez|9K1b+tYp(QaLj~XeIB|pj)2!=f$Y)BNd z?i-;>xWnU;0NUIFM3p2gu#$lw7Oo@EIsQ%@g#Et)^oN zZTb+D?i@nvgksd9dbzJWd!XE7t_o79b(KF?Y;v3Alw`9W!j*PY>0LM#R?KQv+V3zq zuV&NPk)VC#*I&0gS+Df$&gZ=P{hpeNS?Jlhzl~+G1^zL9q(A-F@T?1ys61d!9S)-|O5X>mtrk zh3^qJMP(M!!cm(<@`(p#r#>r9NC#IbB~*w&jPDNyvXN&Lcs+oax=Go6r_zB_-| z{#^XI&)|()^tvMu3ns5$Z?i(DPki+;|R7t z?zqeO7DpHF<<%=mT86ERfpDb>DnindXFfwanY})!_B)!->W;Cl!n@KA9Pss4)jZ|0 zFpG^x&}sgSoOb@GzKZRu`Ag}tM2Gg&FjlQp;Dq{p!my$48vLE?{Getv$)m}<{xg5k z_UXO5rm7;abvsMTu)@_lO!`z6v6Aw5)J3sytt8lL8DgqQ^Uq8oi6!| z4YPc;d%jJYtIa^WK<@=FFz`=>WlbdOfl_otAY1vj@W2zUm-YQn&`_;`$5CXz&B=^s zH`SfnGhNCeKPV{@`T+6)&Q_)sVXfo;F^E>olpZWdfod2!Z~1-?$np%$uwNKz*$?b4(eFjjXDDv zKyIXgl-BwQZvf;DRM{A;b(N;f)iO-@NU9Cw?BBjf#}^CevYth$d3JsaSIge)zPCFy zI#L@WvTWD1Tu{^ZHTd8u)FIF58fTYY{IF0VA>MgWK{=3jHW*OEm;yBJa;Tr<*6n>{7`1AE_p;+x=g;7aT z1YZq7L-?;1oRrY=*^5`PH@38E=#?V3*UL&tTIkA5K7T>KpYVk5fpEHhDyS{}MrY$0 z-!HEBbI14Yd)G1;{1yOJQrc&1%uzXll!1_l(GMR=UkpKmy-0-mc zx>xLb%7}f`HYAQIqO_sC>HMNsijpqDDa#G`i7l%fwRO(Oxj%G1=Tdj9MmYL#s^<1@ z))9`0EDWLlr<8meHg#N6TebG(wwxoLH%)bKI#nQHAL0cWc#uJ)2ozL2Vg0LKA^$UW z0J$TPd-StiI6gF3>KszOr$r2n?w>SMRFCbQX@Lm7M?`2VCGC-)nM|MjX-!Dcl$s$c zS3aHMm=Bh)c56I7JDjjg-`)%sHODlIH%+Ow$9*;HNvCwvbcZHa4m{E5fsb>7klb2NR@G&uj%X1Y@{Odm(XWbfId4KzG zapsv(h;$H(PE5?IP)z+SNezpxef{&6O|}HwC(av1b^zLT__4nI2Q#^r!Uz9XlehBM z@?!8f^z=yVI)$5gF~;zUT!}JUd0ae|&|Qx8q0Fj9E`k(p_`>7k{-|l=&Y995AaQ}g zR?Y2-vMHGpgrfbbk~%eb%7gD|N8Ai--v7K(s`exL{@oD=*RaRg-uba^lAOI&e||Pm z!4C=mQj=>1)?>gE=_-qA@2c*-xQ7`qecZ`Oa^y3o$mn~tXp95TI`}I4P02>=EhoSg zfrrPg!>gz6$w?#KvP|iRbtS$y@-(eu$sAo_ItBGye==- z8=37ekOlQ>pQK3AvF;HGlOz*Jv0#(WU1!fyHeUMPNt2pl;5O={)&*#Fk#uL>&oJCO zb%XOc{nCac;2%8@A_iHtlJ4Mej6 zs5cBmpZYD|IK&U^TjQ~1#Kgrv?IfSYhl`(~_RCNzLAHnfH>~IzX<4nDNvRirDyR>` z3>tn8@)lh@rw}s4%$K2K9;}O(V;YC1XD; zBZ*_l!~>-BmlX>somDhNK3-Z|&>1to8HFH)7zyeJt))@mtKhS%d8X{RziVs}Vt(<> zL;$mRBy(wmw|Az@$AHTmHWQI3R75iC>>F3y$d&bd1DqM4&M;vxz!~@R*B^adJAu+)Nfi|>2Ttw=7{dYWx7|w(Y$if~rPRbZLw^k!MnGVROz>VN z5Gy3vdK%lev4RQMEitSV>fd07!r#xL)It;EhX;+nLV}s_aS<+yDX0^q{>k} zPEs6G>i`u#z`(RH8ltF>2oltp3UL>7 zkE?6%r4FZ1bz;+JGe&RQCfo^YB-;x0%c;nEhFrL*eYl_8p(VI_3_R=08h&n0eml{~ z80I6uZLkQgq#dC5Q@6{MUJWWEXYt(w_)U4-IhG>BB&(dv%pnu=y{zS_*6Ryu+NV^Y zbGF(7m5Uq`Q!!|x(SOwioaOU<`7Y)|{Rnr8qP*xV31$4w@;1e)`{^=33=yGrR#7mk z)b~vZ)uNmsyN*&<8M;Cp{$|lXtA4!OeQ;K7pib)299F*(-m)9cWY`^$VW1u%f(a=3 z3rNI%xn7G$W<#(Tku+Ohsc%;4Tt6;x^Os>^X9QAxOk_rSUH(faW$#qT^)*`KQ zU=;jdE<*ajv+kIg6YaX!7|422fV8EbvaWgt;rF;eW`m4F#mwjPy^LeMa>&^A?`oL- z%_y*0JFs)3pSUnUWY4M{VPP|4V^jhS5H1D+FuiBMHnD;PTQx>Hfq&>zlp1y>7@E4v zj>-p^hElPtVyFef-)0<)Av5dy|4Qn~L00o>opnm>(FpSc?j_|rPsq~v({BB&om0_- zwuv7Zg13vsGXK6gSME*|h}AL!q7H5*s!Erad-PKndMP4k{zb1JWYu3}RnXNvWBtT| zLfE30+!h)E(~lD~@mIx|dVpsI6BbOp+`T_qkq(`PZk3Nw=-JU*?)BI3tDemE-t=*M zBqy;OgxCD328f1yI)H;|pUaOX&iE@j)M4a-(i=3wMl>#pDU&`Dwu58DArp^~(V6pV z+QUF?5`9;>%IEZ8aJw~4FRAK4g0DP7D7PkIK@(cS`z z1d-oGY5^e3b{Y%jtfLuNd*H9)I_0tcElcs_Xss=(^yuwZG3h$yvgF4YU~_Rlt~npS zz`k8B!iA-wxgyvmJb=!G28(K6F(=Z$MtY5j9j4NlL zUx;uLGqTda?B2FI6$h5SaPwhkgsOt|cc}yL)YB~tn+nE(0KYJ^1sfLt^az7@MugZL zee^N0^3hmBmcl21-r=dF&rF5lI{7S5PVTHs+pIf{EF*2@vy)0lu9L5)744Y~P$SEf zi!o-=1jA_cdO#9aJaeREk$;6!VSVU4lYokmiw9zwt)Z?o$7_vf5=}laTDEagS~i-H z`V3EE;ZvXC7D)I{1A!c1P;RtrJaby`6v!UTsf+dhrLYGblZ$k6+WI3Gt-jL;hUtO2ML2t+(2-BZ`QCqaQ6I)N%# z*R(leV7Lcy&XAMuaIcQVB5zv>~btS{_>rCvJ2pQD@XOQ50nXQt$Ab;xLtWG_f zRCu`nBW7TJh;Xv~1cxWm#&a^6%-gcT(5$xPK(d3CjZ#*jLN`<4hd^m)R-tWH230Tr zLrgH7wYv?5C642Mh_8+U0w>I$$*aSa>PYdkP3HxqWCrmnSFwhLWnLv2_RA!;!T*Wy z++Uk&jzqV9oImN*abQ&!5p4fE$>q12=G_B}W~LMdX};3r)DRP1K}k1U%zs#mqJxb| zHVXrwVUohkGxlTKpzRe^;1(luqU=>Byo6k4Hrwtc7cS{~LTn*LJ{CouewW`v_j-5m z7Kv`0Ipf*ND5wx2eGsV|!+0B7!vP?114v9{$p_BLe!^`k zDv*V-C*w3NZypJ+mF|cCZO1ZJF+-+n;$;INixMm`Ews)ZVD?z=|-ocIv8?(t7`g<^cp78 zw-cNof_x$=eWJ?i_QM}iyUhD#0{e+mfpVn&(_ec@ix*Qbc^WKNLmSQEDdGvXUmSYQ z?hXJ^PDPRArBYrJRB1SQUR=*NLSM8ps-F3@?qiLiN@tynZM0lBNTx-BvD~E~RFt-< zeZ+ZMiXOl}JTv(CCBpZ~tr8Yqy!jelIbWvABNI+rmYa0V@2F}a0W>C=C8FFDs&cU& z!!?)mhOOCR8H(ZntDks|ti+sEXnb^zyI(1r$3epC=m$9$#3(b`PD=xoy zHzI$QUj!Y^Bw`2NB?aYfVtJw@mg)eQ&8z}ljp+YRW>thgHY=^VDw{Q_?p%mSS_-)io+GhZV(P+r+D?iH z1?{E{lHsNEW?LQn*Y~6aNL>i4-NjdPb_g>3d%Jq$ypND^sEpjdpKi;!t?tRl-C{RZ_8f+r8+@{y0ky1 zkI$OKO0p{S8ZKNUd*(}{i(MCYVfEvS5f(8+BaZs#TG!2EYPyrPKmlE<+iD7>)ohRb zAkJw7Y;okqVH7*HaNW7a>~SGEtXs6;5Hh~@-!T$8Z%ogj_Jki9yR_HTDvnkfJCy(0 z$@SQbUM2NZne^-4d;Kz&yCsaLZ@KVCf^7~v~lcD=eWd|JfDrdGhXB>vs2V#=k$q4=rXt9ZC z`8`h^WVCuRn%@#LZX#KiE+Jpq9ZcALemxdLnWRb&#z$HZAeE7<{_>PgOTWOP5C$PH z$?3=PqrFz^|DD{%zbv4`fj9zMwE`@gR7W8EREhW|5X2_uiY17YNWJYW$fTZBJug0fh0jQBT(hwhr}+3Y_m*@{@? zVxY{pPKvwyf@9@02xH>*v>qaJFzzaXTm(QOO+?h=GiXa})8$8QBP_3WTuo zk~~!+WUDV*M!d(5)@|kLRKJ^Zkvg${3TwA_3JInkb?9!PgP~!5w8$@vb5y(31T(bx zhzenR%a`@i!=^9o@x;gn(nZ?EE&VjKImTSg+r+dHV>-R$H{!@I294`PQfD!y5=a-x zDe7oCD?rZgCl!(uV7H0#p#1oC<#Acivq(A1GnFvy%tL!aX09e0mVj7$Mon(5trls; z;$ucnN&ra+%@d=mMWwDA@FB&V#Z6;-&RVI!wEpjA%dq|+O9K7mQW`Hzz#m5X4Tad4 z#>>X}n>yEEK8kfPJ$kD?wv}rgBRV+S>9-0cRUdXte|LX)#1(8!A1gUpBQ@Tw zV}A0-lE&MMQ9A*w;~^3H*^&uo^)d>36J*K!S%mzzcmb1)kJ0Q7sn8kY!xAye3Q@|g zz~j*vFBJ+MUo&wnzT1G;x4nX(DZjJu;H6v!H9VH==hF5>4ttmqep96m3R*$$`k_v2 zm>K9*f@_lgHBcHTFq2|g42u~ts*7{6dbnx z@h-t6u{~qz(2JXH;bmCacD@PtH zpf-OBw5dYo`hUDAh;KUmylvE=%Y_w}))XqgP!Y(hsgv({2Siu#O)kDi?>bh3_0D?b zxcF1UeR^&W=(53cr-QoP@iDmkFl5%;^I*E`5n6?4BR@vuVw?^SH*PZwkMEP}XskSWp~ zKZ%G&b}6-*u0JTH zwPRiXvjoDgU+$v}OO)sI^R0ESqYskm)vEze9cuq$Igi&>&BPAm(OFC4!!2@gVtr%K zpsJ+BMLW3^OV|8yx3As3BzoOU`J4Alz)Q)PY7+6gc~Y^erq!4JWlW@rzNUarlpotYUjK5{sdlF^9H z{wP@kI*m(6{P0&G1^gsb-*$mp&n+nK5G? zt~-bs7N*Yg0O*mwk00&N@||4k8z%og_*l{GN0Z&##l5X*Kk}rwA0--cpt?Vf+?A6d z8FQOHO0H7Y@<~|{U9nD@XSLCf3dZ=8x+d-#a!uWPUe<43JqvU=Gz5|E*|=~BRBAAH9(f5+%kq;4!h55UvRGk%T`w zVRPg3G513;n=x`v9lQ^mFnJ*xlok_$$WD$+@z>3JZk^#tLRN{gmF}isSO+B&h#jdi zmH@PFUfe$&{3U8G`v=KMgxf;)WMHu0oD+9K0y1VmYG6t< z!O^2nl$^Qg-z=gDT~G8pU6n zKyECa%n8ZuAR&V)Bcft42Zg+Y)^rSuOp^;DBr(&U%4g6tplh`FtDd1O@_uvRj0;Pi z3XFVjeN$RaWf8D#IkilIO}KVAB$NGU!T1(nyFp@_LpMU*7wm+mgw9bu{h*NH$`Xo; z^H!H|-=mlgNHnv^NpLiL8RkGm^m3r@sC%9>Fz-a0wg3s327q|?%f`9qnGNPW*_l0S zb7I~-Kgy=^qkI13vt!vzpUcl+;8>E8kOax`orMVJ$&RZoU))AdoMwwvFyu0nNiDOR&xy~-$o=d z?!jYZM%WGzEr&ADwq@86sM5-m7ThV_4?=J|4voeaOT#rps4 zT;`TXQEMad#SvoY#Tz?@c||#$k_HL>;?9<%(Rx8q?v1yD8}X%;yOG(?txtHSW;gdE zng9gx1=Wy(Cd?!}qA({$oFfsU?DCsSQ=8eXr9_uV(>ze58$K(#7ZOvSy9YC&s4bK|QH9y}tEOIHsCPvh;=d zPCx=DAjh=ue!k_Pv|5R8L+EKfKBE{vlkD?cnX{`(GHk2bf!lRepWR?AJ63bkCKqHBlzmF%bPIOq?+bWE8*RO zxK4aKiVv7?11Q@_=u*rJetGS#BjlT_eC!_@0WYUS*SOQ^75|ctnFO^_F=g7<6hG}! zb3Y?oyb^ZRVJx5N=z<7!@X;iE(+#Nk3#hq%nptNpK>1m1hk}^g5h4B1y{h;}T%W`Do z{0HP-9kiRXC-4aQLieGFJsB}}HtNoTWA6{~tNZ-wtX4k-2D@lTO@Ph;FukJS1D_SN zMhgXv!M6pd6Jmtvw3BVR4QTetd0#Md53J#-kPLT$AE=!@QmYT&5iMxDXxlKP2%#3% z*3a4=`zcY<_u|l)7hQI8{KiDys4i=ROEzc-UEJx@*1Pqu(opiHYYg;tro*}}viA() z%0+2=-*636%vo`_$Hjq20`lVWfU!5CB9-32FY;N57`)l@wlm>qWgmxAT8TJ*b70>W zrBpw^A((re!>fIAtV4cssYd)=FFq@z{k`(ljNMB?@fnC9@J^aQrP! zgkU)%*HqNyIW406RiXlkP_kCe@t2a`Ci*A95OimaFUTy@@KvpWO3D zf-4qjHjtG1?SdkT%C3`Xhf5%%249b>ny~gB``AcYp1fckiq;ggA<1eE_50 zc$3rKoJ#~Kec5L#8XC_;-ampKnCQyT!-whP4~Z`|j$>~M#u8s3FO4_f6`uDfdRzj4 zz4(P|n5gtgx$m9Q*Ke2_f4?2m-{ZD!)S#CN`tN?AR**M_P&Yb#&l?l=PU2K+fvOfF zav1PfK8z!V7Yg-ni#=8bF>3mUkDwU^U}tr~Fsy5*A7k?Fy>xTW2Ito6ayQ$)r*tqB zA#`RZW)gq}5c0Rr;5#7ehIl#&S}q!^rXoqF;pG!BNh&OX1ogxh7hi(N=R4UYi*Db5 zFvq*_(da8pNVofl!>!ViRQTe~@Cp&OYvM*i&CQPk_|pRgDWArazvIq{!6@z^L3(=R zmcVFg`g3w@!p$DVsp(_!EojJ-FQ3}!ujF)o<5UFWENyh55T1#DdX$1F7wX>(u z8S?cgaT3B5(lE169RSaKna~D#h|dB?y5s_F^Y7GQ;w;NdYMNDLmO>44l0pDSE|u}Dgm z?@wHxxcBy&-_AccjaQe1Tl~8oV5=r>SZ_g=ipO3P_+LXYIt$3j6eR8@T!tQtbc<;S>Xvm)gB$9IsvC5Li%fEt1gFgM7h6 znjCwq_Zsm~dugA|!i%wP36rt+15#^{e;_$XNALCPxeJQwU!1V1ewNb#TV6Z7GJ5?c zt0W=z!DoPSDk3DF{&9=t5D9$_faLPwNus2`WMVDz4Jl+8PjKp{LRAFr@eIn@FL0FphcB5MR0W99ja zGZH2cm%Nd81+y>3s}k`nq6?}~`l+4qsWs=jMDz(?iqqJ@{a(g>ry$Gts2#8z@w4n3 zd{oGVDbOUuW)h_Ai+sSpIloh~@Z?2zB)O`@7jtd_88f{U{PNv{oZjc#GnvG^82@xwQ^rN{dG@7kTl5n-PhMg`LOs2=wCnN z2dw89$#&_%*Mk5&CrbkS{PU5xKUc*3Jr-0{$dlcE!?#Wv5-n@uC3ONhnC4x5GWL40 z;`b|YipDS_RNWk;hNgDSmDbdp*% z??`MFRZ>#r0=Qi~>`Ui4CI||XG2HIkn;r+@Np{C8{eH`aBFF|+m!4-N!o6u{a>S$` zG^o53^sie=;Mr~G?0+W5UsCLf7p14MofGlO=7Dd2tTu&`ok9b{)=$kWs8wi1UCrpP zG8?a?NCt}4kP@@FDznI`^4}xeZ$Worj-J|8(9+Kp$<@Z4^)%3^zWe9yhjKA1TUZBREKtPRbx@`&9ahTHMB@ zOI3G9bzViTy2k>^vW$|*)r<#fj)*X;_f59@euT(rNkVs10;LM$DCWVTm@-+ZHE**A z?%y$2jR;4-oS($sywnYmr;>msn>WRs(A)NlJrk-~Us$>R%I22Od8RF=qjO?i6=RRA zK+0S;S~*y|^$>{k4%d%)#F!eVrQV42!;9xt#}n)833@6f=r5k{*hMFXv*tB^`24w0 zOlk40SC<%;kH%t(`gAq0^k1Z*G8da@&hfv=Y45AOrhu-s5X%^PD`Imm_RLuorqlN(%qm3>y(Ol_K43MYuS9%9$8nc~c^TEO$_$ryen9fF*-fp<6jOS)ux4dDQBjFopBx!)^a_Sp3el5 z(3)3%SkAG9G`-%nZ7oqbau@y^)j+>q$OF^Sml-qadqScgSUV!-9_ejVS+KRvESZ^^ zTm7?`u)A*#`kUOa8)rApn4jFvP>m<flSZzcxfUH`60gAF91zJ^>(9aIhhMwV1A+e}(2sQozkCyHq!ofDgX0>zEiA~c?)9?A zib!;>X+!9cdTQQpH?>c54cKC_TK*nq^%I&#GV0u2IV-14G7q_$wIcJ=2a0QLWd?KI z4GSXG>vm&;n^oh-)1`>&rbi~x41B{O(MPC}eHvn((k8`amN$ZeT;!A>2~)G>7wY3J zzHn*#uYf$VhC*N&_203QEGH!b9coBykgwEr+rlOl<#OlMeyzbBizT$WPM~z|m#w4! zZd+cXw{Nd|Qa{0k=~8?B+))5~_X3NV0_Q}K8?039X#Cu-d)a_+ZhewgCib{Js>Orp z<$($R;iwpn`~!+JM9gJEm!>LVge|9Sz|{=4N6Xpjs$u(t>imD*(KP6TWX6XJaeoG? z3xznPHw?IYDqDu4;cA{EQyUu}Kz{B$N>5)oPD&L(w=E7_cMzWA3biX#d=)xa<{n+ z5xW7Fkz9u+{nMsJ3YtusED*EJ0oQYv->GR}V)SGW@g=!=l;b0{{r>E+ty4{UpscCK zxLr=R&CGqL&&;YEz-oJOzf6-_$<1I4@QL3N8Jk4pYS<83J$}af4yDGY4KZMI&kX}U zKgcsND+TpD1fT*byf>~>(9dbCZAq659zX5%v2Zp)1$Wg*=L_?|=LuMTi_`u`hpvv& z5l;NOJX)vV^8T%PrQtJ|07kNx-NLMxEn+nB%`)uH^}7uN0)ko0f}e7$Jo#LPLexe- zxU5X*qWrI5Z%GE<834j}yU$Tz^9>1lSZ|H5svu&JhV=Z&CkF6w7yZ%%A z66uV#p>8o8MPW2Px_dgWmfk#9huK5AV5@hl`?l0|OkkW-Hb=lQ)19-$*BiE~aqB?A zSHsmk8C;9MckU+#qfXYoB;s#q1UlE_cA4_F9Jv(ppvpl0BBd_nuOMHC*bdziF}AmQ z$Um@Ly#ii3bVs_>nM0Y!6DFqKQ52k}y${{rO!q=J{C3AA|0c;)Q6cqx9cSA<=2O2U z8N2Otdc1fXT$^}cZ`I2FScsGSP{)pQpMBv@S!|h3fa|vn;3DU^c^#)KT<4c0POB?RB&lrjz@*v^-#MAs33)E>?yPUp0#oMarK@4L zX7S;=`u;XfAg|6mQwzFu%QBky>Rx@|VtsdiJ1M$qu02=tZ=>S)WM9hXsodqP$n{Pu zLsZ#bw=AaF0Z@FRHhwqKSqze{V$uwkPZ}BYenn;3L046QF)=A#8HKBks;ODe@ZYZ+ zY;!*-hv%}1GQ`d`h$e={vwsmks0Cn(X>tKV({`k#n=z7zweHL9Z zo1UMSA>3^YFr8PP_t$>6pu9A+a59$X{ktFxkZ()rHUfc*13(#ts;U;e87B_lC5;rZ zdCw!{EQ9{DIb$lk;F8Mz?_+-Tb=WRMf%vZwdz@W%Ec_6NSpjz_P$dcqbFCm_X~>9|2`a%OPtveGd)%lk4P{uIOcOgQlxhYz^(*XZpZ%rl`(pBGbs zaUxbdKfW{$VAtPo9eg= z4Dn#(t$se!Bq*KkwB=mqtX(YHqIlV1xzXKSWhj+|x&a-y*j6M5u4)UlrcW3+LsvJ|4f#)GKU+PC_0$TC#RqhbL3=cg%2f-GOlC zkWpGm2@Ua#iw%ftH|VSh8qa^7*>-uqEsKaxutab9#{l%hcs)xfg(b!)qrtquc{h zp+?J8w>o=M3!O|f`S04j9)iy8Z-InlW2jk2`LA>1nJD2(5=!oNrg!3ffu|A z_Km_a8E}i4N53-)Q)LO^PB%<-m7j(c_P2yI^BnIi-M6;jxt&G-QZ{6ctq)X=-lH@e{)xMasMSt~G^sjwI&QEX~+bqC#BxFJI5 zf$Bkydr%Ug$u%VO_hZuCq*nC7*2){u9^Q>EMxJgo*J06{TlM5c3$|_>V)vT8{HwEX z(qQo-mpKu~cp10`vQOG>Tqpsywd`%PtS&xILnLAS;WGfKEa1Lza7PpL1qBw%;CXz^ zV31flhV^BUI66-osn~$5_N(TK6~Gjk3~x#hLN>w_anU z3pSbADVtWPNY%NRbpJ*~<0lo)mMSKc2$U+TZ=OYjm?0>n>CCYibDIvIlK;B z?5H=$@^=6H`qyVUqi=GF8trh`L_p$F&!Mh&C4J8RpFcyS6ad&P6_k ziJr(`UY{GqU&<>l$8j>oPvEp6`+XtF6iBfzH)8Q*l5Ira3f@6ZP`1XFS)6=o10WE4 zIW`>Aw?@iX&rfZ;GUEm#aJ$@)srQ96ndd$#uO?ad`7vO&SiC{}9B&YOhpm?I2 zijHWBnKyDAO?jJ3>Uqva$nNI7`ItTLH__%a!*${< z@~j|*m5F&T+x+->=ME0N`FM8M+UD5k891T%W(t-N(v8r zrwBqyeBN>R;`pmRXsK6Ci5w@bh|u@K`cTkTLBWt`!JWc_qhg&yi@3gCuW-(o36G5q zVQxk}m0I3^vPb+%eQ&P&I@cX+$K$wd=dNkgwk+SbT4P%iPw$udAZJ&Uw*(P|v}Q!1 z=HK}qnDoWEptB>O-o8?p^i{6|X((pr9xz{Jn*&Ymz1d*HKJ zFZY5H91DOj@|I<$nz8f9ZTDiQ_8oMI38^n*K^zy~R7DjM1RrIySlU8V2d^fu83f<= ze#^0UO~e2W@w^r3tEKx$og%@J#5KDP`7;jA`BRXt3qR^!P)d!~8{Is>f#h}VEhUpo zBb!LQmiNzgzcX6oST8qjnIs`ycveL4lHK&w3;BpZ@2#3LY+2|ns|6P{(8@D8k2 zl<2AN?X5+D)F^KNNB_&KTs)A{0&&OtF<10G{pLs8OYY(q@19G+zdg&@xYNX3*qM>C z;2hp8C}A+t z)S<|7+eEO=9R}_>-Gl*76BO*hvjb>g#wg5b!oeyv-c0}afhGPH0RT73gi`@Xu~PEY zo~g@t>uydi64OaS_na%@Byva&2;l62uhW~G2-3@*$X71K+rKmpOZxVtUyX^p9&-(! ze`lj$H9R#?#C2$y`nBbn5!!WE!1b=b31vP@xbsVQt5WVa-!q^$6Zik*WUX{4UCb?8 znbt;>O(uG^aEuYdPT_^V=RPVSipZNCQ~9FT!RhMOh&fjt&|;s?BkG9&2M@d|2 zCda*-6vNTYU0q>u>_-{@G?9+NUqN=mdUr03Tk=f!ASHlH-~D1W_e06@AbH>K_AE9X z&#_r6Bp(JRU_Reox}UxO^VNrka;}K;;_{dYh4SCs`qxak!aYNXq3UMdh6y*r{}WQ6WnLG-b_U)Yo6S~hp@9x9yJ6_s{AJY=h11#Q;-}}x-xox zJkQTJPi)Fj5=_XhQhTm43kLZO&+w1kotg(GgvDIugDR_6&(Eh3t8&eBJGAVyQ36}iF>NP-y|MKr4 z&$n(|-MRR`-)=t(thyU>wQ6o^AeZY7g~vdcS*wrw?_ecTt~2;qK|eL%iz7*6(T*#x3S+i}*{Y zFZrD#5sn0K1|6GKY`U{d=hb9Q<8LrbIZ*U?Zp5veJddW&cdQPocK$vTe0i|z;8WGO zfcX2BrV)rO-Pan6%QqQOo~5h%G2$%}V-?M+x>O!g&Bs1uZ3hd2rC#k04fy4K#$0Nf z#Lg*y`ID_)0t=-}4`k=!F(jpIpX?qkK}yYfR>W+vAl+*{j`- zj#U$!@hU~I*tc6{w}2^=A%23ujE?~^tI&XYx8xtmsoAg8Gy^I@L=8kK*|1Nb?3?WWBVF%0(@(&p`iowLl z^~ZUN5As=Z!4hsqMevi2Q_=e+zO=i+QHPttl!Ko3yY{|ot}0O3cdJ4^GUH%BM254K ztHJO)MxCJJ3`zZPtvDe7g!5Py!5xpSKvkr&fiGy`orJVd`%269y9!tG^G|Q$AMfe! ztvnu4edB+M&cq$6w~xcKGR8K;VC*y2vDMgjv)ZMx?`7YjCRDWi%w}I2YZMwwq7b4~ zDuZmPMyXV)u~gcTN~PxY{sZTFu5+&IInVi?&*#1w9eRdsHae4p^utwdTDO5eWe-mM zWlNqNSI_foFcWD@U@C`a6DcoL{_JjXP~&V6+>TvkLU%bHqQMP@c;HrlQKpXzI5P9;f|PNN`b;R+@}_sxo+mzB~o7dYan zYf*VJsX2EPOHRFwD||bw<64-~87!`riukdJj_U9kBY47o$nN#!^-%dx`3wQrL(8RG z?4ml=R9PmqAhbGg|NFRQMNNwxNqo`B1P1fX{YkBC{e1fVK}Y|#Z>Hy?&F_m~=|%Vf z+`DfykdA*xai83$Br4rH_-`teD#iuBdK*qe^fY`-6b6WLokoz=e+c83A}%VLu+ zH$W@!UTu;Lb4-6X&15J2jZuh%WdG2^0bFFGg#qXVVXnKYFIaRxO?EQ;#=kP?jusL; z+HFK>UYNJ1wox_)z>#xdFrdalT{#;!F&qO8N4SGL-R6>S5yiC28!g;N)yEh=ZxkYT zW}a?`q{LGC2!CS~WSP$h11pG^ZJ#tx3v1Id7WBi7PwwtW1`hl(jz%qPC|#e>BSx)02fd6X-} zvP;yD75V1u*B1gh6S5vM>Nemx8bK-pj7}L<)WUU_0j>UGzNBYnkmhdzY{iiy?m-(C zC-Yj^h{;1;$6kKqtjg*Q9epdUMq`sj zBQx^pDQ^)@3&V=-iGIesk$ii+&Pnm4S%S+DSR?MF_PO@DV>;a(1M2O3B?Uqzrd^ zjM-9|;!J~}hC2$7Xi`{6$UJGRyh_?m*Cy>&TACH*D60<_n*Jaqy=O}V#tf(u9a@n1ebk-Ou$jD$ zsBn>BS~=9d=0Of$au1Cs+{TVU7oSLm3t7}_Vl&n?jZ!h_FM8$~kKh{gDyu`h%PNVF zPT8zt3q}G1`^@-qJ#p1@f5(Tny7A^He`z9jMr+_VQ`Xo8T=dITY-ozb?iPx#{pHJY zx*-ptdQlD!4kmkgVZFdG8$FZ}&Vc(r;ac(m1PGOS?-$F#_*F~vI^ zWrBa7pMs$}zq9;d60|FFFenoAV$i5!Ue)z|Z>juU$!mZ@KJ@ z`{oVE`W14_b+bC)WUKu;UGy3s-kHV3!#eJw#eQ;^%I`?R=GW8RpBeL?ZL~%y8|EB_ z@7R6%oTulBWc5MGJY7NLVJwd?+ea*TkkQ(|mkUw`eUmj=b;G+tHb&?_y|m2MYDIr9 zB?sK-w35mUzp8qQS#%YiUTzSJM~)eyZkVYZS<9lcCehe^s#zD@@6-&uBY-}%i)fD>x;_3Qxo+%R)jSWDai9iVQ_zjRgj2E*(fMm|tk2LIi znjq#$k_3uaLnUsap1gYjU9tx^JXLN|A&ZqDS2Cli48undza!xdW@$9;lB#+qk}1ZQVZA!Tx*g)xSJ_g0jtcEf$Wzu@wHz zFt5HAim7k9Dg+amPd{@(sytxT22b2%i~WFU%RYM!k(0M-z53v|M8v_Tn|b))p?T<_ zB4$sdSnQ!Em2|S`1R{ zJO5i6Kb92pT9k5^u@8M~-vj*C!k_1p-cI@J1txxN@@M9}zjo5IUOVc_OhhK=0KeN^NNHqu& zfkFE7|JrhfeD*|cl$JSGB<0^FeR@1%EX8V671pb=Ys228zGCu8$vMa~6JsfrXs>*Y znU)H4flq#c#12kHO5$_-o|&2sm9PDPmK6=b5NGEJWa}HTna;pOm~wJw;3eh8_1e;h z5~tP`YQIT5edl)ONhNa=7}Ec2>TcR0^|`Y8K($wtU?9?s|MD*w`bj`= z14#OlMB>3DAZ&<$AgXIn|7`ma{;>h8QGe7q>Sh4&78nvtdU5UL{NKF*I|xz=^YW!8 zNCP5te6`oH0aAVEZFm!98K@me*6ow9DT}-pT$7U{WyJGxY%ESCKFBNap|{nf4Lq8> zNj02i6(UhbI!-p%$g0~?HT@NwNV|11hVh4ycP&`SYp{KtKozyUi2(ISmUC-=gW0=c zs0J^-P5RFkcq=8AM5sZO++IF*R*eddxLm&r80VQ1@!B>p|7uA@Ubv?st0-TMqoBq_ z)e&D^yAQ1cAm;&K1cL&LKCro<{*OXhTp+=Q0Qgvn)iTKJ7KuXy`b-SmOSGeC-^|#*u20 zTT}8LL$Mfz4%EzSXgRr`JU|`x?UGsrg6?NYT#|lG$#jV{eVvTmt8B5f;rP1DbfMg* zs3%n#WU1Ugm-8^S6ab6Q33 zd1~Ju5vFBss*m1%SyRd{-tX|n;;2hJJ$EGK{0L-W&2g55Icp9N3yN;e+M(W0eMxtG zM)8Vy5*5)`vK00(A-u~sa5|8ddMEV_Z5tQ>n#Ps*zWC8(8Rp|^!^p-82Yn3?MByU#inc_oc>AlIVtoxuTM}{ zx?*0+=pza*czv^lHxK;c1OFWkQ11swW9};eUyo0Q2Bjn`zp*IUlvoTSrwx%=Rg7v-FOmWtXERJ5I?JFO%wsFxYHmTT{tP z<{B`fS>oA19ch$DQcaZVHA`CcKZgMAE3Yl7)_`2LT(EH3i&}s34XR`vZ)9`S2n2ju zo&2Jzzx^`g@lYZIh2U#%u?^LLH`e*2Ek1IKDSG@-8pWUIM`6hfXBoYQ=TWin3lw5o zqg-+v`E8umh1~tP=3Aq=&s_#jFaNA5h~kfm&V2zHbgfVlS?9eUcyd3~)T~^YW0^GV zX)zX)Ee0TA(VBafB{H0~{S`>RK6L)8g_zCt9xi=otKL(u81S&Dr~gS-vXshkph}|D zJvEbgnuQ)X$lURlVnQ9!4rUoL$fk1>1p2VP8bqJY`c+DP*87ow878!({`v=2pUeHL z0r|HML>|}Cgz>cO4Cn1e=daacpL7y0y!8|Unn7RkauWftA<1irx|MSt&)-rq)ZPYy z3?oAgtzeq%@qu?^Omu8&W~QOp2{i7pi!(CJM#@#Xf{ zKZ&R~luXu%(`d=L-^jOntG4(aBNL1L@tTBU&QEq~!Fg_l%i1cDI?1Hf-)H`_lzOPH z9wm5}OB-EyNqV;38Fm^G5k@JhufgWq@a8Rw4}Kf@%r?&e+iy{*fQMz!??s*fhHr7_x2E`#w2Qge%Tu@lX!zVsJ_irRMTGmVL8zu8Ox^en_?shum1BtgC zpb<0q60d^?1s(CxOe9IAC&q&Skg&J8$+18=;S1e(>!%~6X+B|^Z(VUGK@niZ9VTR? zhmZ7AMh`K69I_u!kC1J#dB8W2>Y@+ ze3rd{V(&jf@*i;=`ayuLlQ1AhHL5kNcUKV^^Ns&UZe4S5LpRadOOvYmh@_7gHuN7h z_8+d9&c(-mN{u!gyEUpu>mJX@QEZ<^&r~R^Et6smQ@dlw{*CBO#Or3Tbf_#%>hL=t zSs@r0SKa#h=vx9BkYqQI7^pXDN8R)1BVm@3TLIP7;1CAClQ^4^DlN|NE4h?-j9$EB z-$=pJ7|_)SE76ESILTh^hjq+|^|6d1BYdhJSmnYvnGZHuoV@C>GuSpH5z5nzU3U*W ze?CI#W?RmWIQFsAUb7ts!S?8%NA~_ie(LiW-=`piVvWhVG**`AXZF|OW`f-_yU`sf zEQdH5&UJp#MJc zW8ag1g9|mOMUq#XN2u1fM+;)Wd7_ca;t&A#7X&H|5CM$0PXhoVuy6aC+r`&Ub5SE> zL+ZqTe^t$N76=%R8eH9gb5x~C3@TUI&u5`FJK;&6&qVz88A0@8^V#KurbcIxqDk8F zgn*h;hkM7UL!1xszkEf9lXpf(uL-f% zNG-_5I50K=!&lc{-4f}F&TDZBvyCF_+zx_r$PagRW#>l4WEPjVD33V1NIJhKx=F4 z3|(_IFkGVJm)<-;{!*X}Q6|z^34GW&K>5Iye6yzhOaD9%xeq-PIgj(x zCXH@0hQ)Coj~Yx-OC6f-Xb^_^k8dSamW?ST1^<|h4Gyq$Q4HDAhAN3-%a*RB7B9zW z5Pp-I@~q?5ck3mDfZ#h%WEH%bkiY4iR{dhOToHGtJ3KflHiZ00yRz+ljizC_k64_9 zNL#<&LvS@EOTL}~gencT()QgdLy%#{ZU?8d35l!xr0sAU?%a8(Qk|IAYU_L}2Io5b z%)0*rtNTKiIz>tp`*Tl6?@`wV>FG4_)3P_sM0c&z4F`609Ch4!#Flm3=w|oAe{pFD zq$w$f8cdB6QXxlsW~lqN{9M&jX88&n`F_-Fjn?h;2bx+&I&e)+LDO&D>`#sP*tCg- zF>KvL*%&ryfV4!A3W{?mmC&vmB-@`dedwkjY8wwqR>{(-y>NV8!lZvo%fmt_`Zi4n zDcx=M>&0=+65ODaOK?qI#Bk48rNGDBi&AiZOldFTYw1&m5X?rX1d*#M#}z>AO_}hpb1bF04*`o=q{Dl@ zgU}AHSYz&ec-rbowah$=-bI=s{wzErThQ#v9NR42e&MP7o?BIhbHmm}p2# zv66^1N5G8WA(X4pEeKnPmK%JHeTUeHO$Y~}-k(18F<8HlzyMJ%*+A4+iDIv%n-%gC z@8IY0QXy(h3WXCOC3@dPcFIDU&1ts>|9W!I;heEqwC0?`SjQY=gJXt&@_r8X-SW*f z_I%8EX#V6>FTZaZAN@No%H}QX&v%INNhZbj$N33kV<6mfGY^4&dVUX<3so5ch*gRi zY~Ki*k@xc31#OP}R`b5A%26<9F25&70M-HM)4kk=dMGs&cO}R{|6agEH8g;T=iLP?%^-PubKMeJGmTZaxlqjsfS5jr zh2X9x_1Ll;`npfM0rfe>(v9&C6us$b)f^FqpT2)n7S;A4_tFQfY&wmi^e|Z~?L`$i zb7gmkXsragz$D3(*RcP4i*dB&kroo|XB>9T7D}43$ZbR6x?Yl!Dxcf@ZlbSS*DPor za2xUa5b29)bR**)27Wp2nrpEvL(LRW0{+vNw1&tb$)E4|9FX(cX&jX$;rT)5Qg2m7 zsHL8@t$g{!uq17EQM148&fwSuCtuc1mD@Bo76}*>qB4e$Ee|<;{|&lvh#8$iuUM}h z;>gAHm=}GNk(y@*OLe$lz5TostH5WRUNY2U(f$dx==K+t_x9;YrP@5O8otZ~j@f2OVOZGEkHa#jWn(e@|Y#biu-DnO0g;Cb=zHsj>mOVTQNQV;t%Nf<9b{R;U^3 zd+(DkRWTt@Kr7~3wb8HGQj3nak;EXb;@A};0Y4~182 zr1IPo!C8~M}PEu^>hyX)$H%9%`xPltU4B?9KPu?YPxH)GxUOT58Z=045gl*aqQz8 z@UJMumju)gB5-D0&`h}_68#)ec0?|}jNI{Z63Sr+0z&9}Ex^dAAJC8?{4IqDdo z-D`!{gKwoHG9&!OT&(2YiB?$mkkzw$#cqbmAz9Qb+06~QpP~|1%0%utIy&i0XYBXh zQT@^N0#9z-ho<7yT@b&>fFY^)$ZYCw{{4zm{#cwwE5UyaTK2@;W81PeX8aate7p&$ zLO(JeuPVC%ymnAU!XG+E6lbUHlJ_C!f?`NwtPiuP32cx7-dbD%ypGDM|0!#Tw*Eui z2B}bjtiUs-S()kTJGrXa(UfK-b-azyjdL3A8S+r7X2(+-xG4mVMOKVJF292SKoN6k z2~yw0G<)C-p7i99*aceREw|8idiqY<`a{%cT|LOKzy7cVQjU}? z&ccgR6cPm53VvGAPZdrM1$_PK^s+hfPIsV)mJMe{#fyN4qE6{i$cKOTqW01hsv8f7 z^eGqm5;HG@kAn>K5&IkOq~`e+o=1YpokQTjP~BMaQGHNcGl+L6({L!{ola+6?jFKmbcV97$BPsUNqD=fEm2A;D2PFz-OdF{3F6$X)z%qE_ zP7y{q1dvpU%1Awr=nPW1Sf*ku1hy!IUKN$8Vg*EFI;4pQZEaN94%$A47|wH4qx?XI zvFhtr$jl|s1FS|1a(AWpL6gcjQlENvc`cKn7h;RP193q>1ki|5lo-k+i|0quj z*Mt%+;-$gFLvj!qQ>2AZ14{?G`&HbxL1z3Us^K860Jv}Du0si`_#ZJV8?uJ}^&SNv zz5IHd!0=YS#;}>SC4kx~vaB+1L0H$s2Us1Ik2*@4Enb{4On;R1)5`iYR`Yl>_`gSS za+c1%8}T71Vz^K|3vo=e;8toOrpZKF_8xoDWHM?lCbi`G;BC@ho7xn8NQD7c`KUhJ zlqjBGOV)?@ATl!B95AGSX21XTtjTYQr$jUDdVk3F($VUZ0qY|=wC$#Nqux|dBRb>&#@|V7Poy%tUHI$qi0S>sascO>If^vev)I| zsW=|(LUhBaQwKyX`hCN3f2iy;=k*D*#ZHlQJz=Iu2y&^U>M}q^JQ@+F@pp9h1xs*N zuQ7z`m9GNv77d9NGN9hLgj%E*{Ff}C7uphty!X`KCK@kRh_6{o@{Hu}AK$K-Dytl= z?G%R)BK5HK$oYU}y|4#A{yj$c5;gTMKIM%tVKncXR_NaCJ}5|ei-6QSGm1Fn)0dt5KH%%R7+rYMIEjB zx?srD2h*OBcVrmC8)@<+8c@ILW`EfAJG=ctjI6prJG(&@<7&?uX>D&n9lG=`5SV=d zylD$&dj#h{kN2;1cA~rcV=f|lAfW)Q0DzW=2K`GB3+0K&a%*3wholDy&>#yycH zvLRN5)S^RcB}|DOAHd4jmB~h4B2#^n5bcM*p%$!*gonNcz)1PEj8fqt(U3$!BjS05 zM0}&^Q}cfND3~Y#Yf}*HcFw3Ig3mtDfm(AV$la+c zkfOa8ie?MCTFbj|k%mk#`?H0Hj3m2Wsi$SF8}gWvV#mJNAGVW7vu%qeErazK>gKB; zGX&VhB9vd#{dH#dq?VEGfHC`ny7>?%AQs{;6z6`EJyhV_8VU{IL8%Bo5glUcEFQ2b z9>7HodO~EbLwo@kAHXs3e9bD`R2zHZe%G4>uD(5e?*W&a`{UcieUas&Kr!W+UZ?V) z)3E_1jm^L-w^8e^QJ&4svza=&PLs<`a+9y zX_-xLEEaRGh6DsZOx?&i^U|%|T*-8-Aovu=hj|}C{QMT<;o*SXp131nD zyPwXGdxwjkBa01J49!~(*rB`S8;w8q7)$H}cT3*5@&a<7<;-n{>?MkaBK&Usk)<+5 zsojG<2tQXI!kRJYN`zPsjZ(Rzo^=Q-Jdx)HzUfYEFh#`9Uw*E2k#CW#XV{5V+=CeQ z-H?>GK;GWyMXPF?t7w<^WZ4fU-#&)lBbXvMn(H6xRepNIrbxuTd7=rp>oieESO+sU zyowHefCTySpuMXwhVNwE_f+EyzF~L0b)$E}2P>nqXWDE^19-Kc8cI80{2xxAkguiZHD7UuM02%;*%;h$|eWJ{Mb2!5cxzC|g(^+BR zsjL1qc{6Omw|%D@s1l>`IzKK)p<}RzB5#M6-R1@&`56onCXZ*6b&O2Z$Kce1ho%-( zJ3$9_(O|7S#3Q@}4dbm1o4VRYzHW+qut2t6u<8=MA)DQl*Bdl6>uxoz3BCOI(pmfN zQ^$<2)=UK?QEuh$j%f#Z_Jt{gA^KU5&ho7vw<0#%5%#I~-s$NvWTwoAN6~|) z)C{<=at2&J3Z63r7XJwPJU9RzUp3osmZWWGArFrr3HE2=SrxrGUsbgC}Fe} z6x1-isD33iRErDpyJEQSn>QR-m6m?(tf)sL)6Zy~S!^ZP{b~UmArudzKQ1Z`4_QV? zU@u;JcNi9OlQ0B2z7D2dfNH50+H;{CL7(TU_@NDWHeGoAkGQV@_%ZTH_9}en&r^8g z4P$!k?}hXf2V{9Q>h6yRhIU9aJ0O=PZ^qny>GgZ>OZ4CqcKk_KhmZYNPRdCGDRWiq z4-T~~s(tpL8ek+UxKc|znI*2&X)eeh5_F{`b{E)Y-%^pA)6}`RhRj0s`UJ{BuytG@ zhv;8?x08OkiRC9jmGCS{H3Yr5RA-6#abh8WMyyj@(_ExM9*+CJ<}iOnH^L>B!q zQoL_Q?6p1rg1X%b$ack^uiPNwgFqXyZd>9RjL{35@PJkL`PCa2{U8|@NaslDOo4J@ zq(mA*d}>H+F1r0GIWYp!xlpx}WOmwUDysN?vhJ(q!K3mz<>g_G=0Rm=_!*aR)s(y= zM~u5?T1_g(x|Ux3mbFAkoCYkz%cLpTx8a|!!ccce@-|H#zb1du6nWR>mWask#mwBeCf@)A zUm+c7wi%*v6)z*g%bXL4yY5$SR}am3_~O<|rYWZtZ_(i7 zW^8qW8d}Zw|M8;zP3Apm+H@K9wsL4oiuzjDc{3AZ>t%JZL+US)ahCa6TcNM)1mO5? z@dF5-i$&J=ntGmkj)EIC8`d8GHbs8-df?GEQ3M{cH~qBv*W&4Ni^3~?_l{opw~CBN z*cqbCxKQjJUc&GaVi_;}Xz0d}{esa8G3_FVA6~9@S#DnwqBbIcPX7qUD#O?G!T_n8 zq=RnP!RB<3u86LBjtLwIQE4H6e{gU})*lok0$Fll9eCsJ%rL!m1o&J4BH}xew$|kbH z@7Tqc%2}PR-^5EBC6te_L=n3$iM&lvJ*iV_e$K$TP)U!rb)&0k^q^3FuT|v$ z*@3TQsO(*bWeeeG3(MiQa1E#38{e?i{bhR{CbGw)1_orHN>k~4=m#{J-ui<~Nz|`` z^sbz3oUMS}DvY07(Nw8>9@Q?BbZp8%^S@PWzFa$eaiq1*u24%Q#pVM?**n-%OJyRh z$fR_URg`mu@n<1N`4RVA5oW8cnHw{Q>4XR5V-`;u-r{xusVV}m%h|Z4ltRKk66a+0 zjz13(4t-oo>COoZyTsK0(LTwW|9&-&XnwGh%tg3u3Ol6C5 zw2{w@R=5FTYQKk~(8-r_MUilmfp20QdXw7G;cjQ?Bi)S#s>j`u#V^#I4jes4Zs{~i z953c`l+AlQtHW}c=+_m$cwj?%7n>-J$;F^k%mtn?b z#8~s`Rxa-D6gM(BYVsDHEoFdv7F}inXdlfhwBsOi<>~uAvZcs^G7jm6YS)|E@C(=i zm($0*%c-ptQqD)6-_kaah~xu}1;Ut1!vYA%8x!ky!r(ne%S$4s&ezgTgq4b@i8_DA z7h?bokBHoTt~#wcg9v$7k(lhOpcbm7xjq+@A7*Vgbp@Ts#ojK-jf5{J)+yTGGL6L8m-&^Qow38J#UFRDwvB{J%2HhFbd&NcsFppD!f z8}Fv2;)@FsyZ#+SZ8?R~76QEss_?l!3q{PvFNZ_VHhs%Kz59f6IC)i9DR(L=08PJe zx-HG@g8V!ca@~XJ;azTC{pkYjmR(qHAn(=|@S=nCK@#Ez5oVPM5a|_#@gu0(5EH?B z@7PA>ZiLpQM2Y?4`0ZJ@9Y?#y>ynMU0SWfQ!glPSPTm5rX+kKjl;y4iJA1<~MaS&= zOx1#BjGOfPTdPn5uQkae0ZaAYf|xD!lcZm_`p7CCdCzM>yfP6i{hU~!lSq+bCQ`zl zEH)#KmqJfG)bK)U;XZy(usPvRk{(?>={-u;nk44vw6fLK{7>pSyq|m?TW(M={nh%L zXI1EPJ^549u{cvAOe*jYsi@-td2wy%a8BkR~-np+7}Nd?_9xPcITiF0Kk}U@^K@v2D((BL4I^wa<)SZNdg>PIo&I~6&|%}u{KuBMV>hC_ zy@VOsHwcGEOd?zh<=bPIuEO{x+K$o{(eE<<@yH|^CIu%n&Fd=zfn%hvz)>%Lkx@?E&mzUqs9;d zTiYHfh(e;Wul$|tb31Sab12}DI}ZEdN?fI$2*neu>hgc-bVlPfhxK& zr6M+6jC9DQ*)=0l?%iOt%9?DHMYO_+O>yl+JVbUHAba%sE;|C(dwzv$eXYG``F;Sg zul`P`J%F5O_9vu(ez+hc*rZ$}YCLT`C{bADb1&J>ULOls$Si@9QPY;E2ImKQMja(3 zG<mkVO~^UI}X@0TsE-`~~pqH(5eV`X$uazi5S?eJ@t zga?& z(0uUCby4!2yJxIj)ehOZg=g*xbLWR<7oNd8E?1&9iM~?5Vh%b8fmc$pv}~*0U?7Pc z4Rn+w&CLZDif;~ZgD8L8%-f-bEXYowNSokD5_lmKv7PR?L!&6{!9tDlS;k?TiHX~C z`d90U)IOluReiY}-Q%Sbo?Q6^=W(jR)oM$hm6Ug(>H7DewP_FjkQB&tX7+UEXTE~B zbN-=*kKdKW47k)DI|mt@nuD&%`};aRmWBK-;qVXhcxDSLilH8{d?ngKe7fP zS$m=wZY*_RmMB$E;?w)B=^$)w-LmFv`(uyrZj!cfG!ieAf%kfQFA=RQp2qW^$I;%Q zRwKm@atkCfF-XheO_}<{QRBce2r6?(wt9#`t;B~JWMFb!Y1+Ep5w2K_`HG;q=+$CA zf(Hy>-?#wieWGH`PcJE0?RcP4|Db$mDqs5e^@!Mbi&a`N{(=o)=&p z0D{D7~n!kxCi3v>um zQ(-W-$$oBsstWE7sMK^VQJCt+TtjMp1x@00x~^^;+nNS(gMt5{Ef*#<7P=eCdYrD= zFhxCvDkuQZJCrHA$xxhQjCtOWbz{mQfRSxta2!+ChUsO)Hst2r!HG!+YpX{CVUIv2 zHLX`{Kt7Rrb__X#%u)EhQBQ{C@eg&EaApNUTmj&!Rt!sQ%LA#{aBg+(8y)Q z8yKzFpACFjBQapnaMFduXpxa96t) zfoT4HGDjZfu$@!zAKtvM^AfPXd_*Rw90sn1ox*YdB4wA(pxj4Fl`s&uV76B<2Wvyo zK*?N{+=f%0|C`+M_q2xV?~;#h`c{LLa;uE($+#?UL~4L-;|sb$yO^EdERxZ|_O`M7 zVwgd}#ROh)&;U~l0oCeec_MDuw}bXK1LL^R)ZffYb4(K(_Jek%dyN%zd4~slNfn~j z$c>8UI7{i;e7WBM{|cD@(sfUjo$n=fd~rjSMlyBs!S~L<{MyE(R+7<8ke`S?O;x zV11IDy*Y=(?|TjZZi=-=Z{-fb_2@5Ak^fQ{Ofo?WY50eUuMG4*T2E*_V`V}N6m zXB|Hlh{K({E=bWlU;|!bRc!+{$J9DP73P*a>dPd!FU}TVn4z^OlVz193a@g&Rvve2 zqmf*Io1Vf+AXZh7yh{tJP7S7bYAsB5s4`<&`7^yvu*o0}q7a*a(cgLX=J#6sAE+)# z@BD*%sH1MjW6Kqm2Vq!#La+&st40PILrq ziR&?(?=?G@ZmNy7`8?h7mNlzyUsYvkF$3;8?A&(-T2B%%CBZHGN%w|DSEAI_ze5uI5lc z!QAy>GxO!N-An&J)Uyww#ZMhA70}ylI(dN8I{A?>(Ttx@h>ZhS*GTPxU{kv18hJI^ z<{Qov3q({B$1A!^jr!UP*aEQhPLZ3LQ$-|sX+T3i6Q(**3oUmt`=q>tD_vZaS#m>J zv`pW*Ug`7;@Q<7CbkIln9^gr=!$YY@uZAD1+-ZJ?RR(Nyj`>jlTjHjhxtRb?_5>KV zkL_v0GM^LE4Th%U>-L|kFmCJpJXm&>sF#untwTL}_57OohIN&}%pH}|N<+vY#6Yx! z%OM2#^ZkztSx!TiJ9v!eScj@U8MIq-|gu+lZ zX4jLt{4=S3r%J9Ue|+|NdPpQyS*9s4!_2Xk+_9JyB}-hc4MxlU7tp4yLYY-9)5v@x z0BH%?r#p-LzV!|-Dt{|)5L8GiWP+?t1YJ?Ec}MR$Qo?UM=$Nfu=sx^{T;$heBg<2P zksTGo-6gu-O8|W&KJp9)bY>$CYIZR_yBcLcUmPpjhL1r5%>E3H&jf!I0<2(Q84O2# zb>5|fsUqaW<+CYm5Nn~BbsOgZBWHxgQik2j1^}fI%)h=7%R_)Ay4(Cp$V{_BqI{x{g0<&Kr=kUIX5eYEh@-Dg0@;BHOgJ+{=$v+u9u zKFb`xi+YWF{Vwu_C=z9JB_I!7hy1fk!9S#t@LguC_T;b3{0qvn5aroQ!R$I9a?i7~ zD4yXNt?mJfN|UX;_bUF&ZG8no&kM>%YKGnaY2()r{TB?mnL4Xkgz1^RQWAZNw@QV*E`d{4ii4=>E z9-GmATkkm_Y1)(leA~S!Dy9$tZ@V~rkoC59A$LD+x z*!`mu_}iUpuefuOa%PuppMTQwW+HEM)B=#i^C}DfM7u;TWlljKTaUau)N% zGBg|3OGO<)HT2nHqxl-42Z{)*y)JXoDE3tm^L?-mV9(s=j|!M#iC6l z3R*^Dw=Pgdpf?2PXuu%B+hhp5RH%L4uFbrd;M_nr;BeySY_yoEO|Bj>&x!WRp2rkL z4}iy-MNkpvLEZ#jHh^a=< zaz@NiZ9wM=#9(DURl4sZT6N-Yl}Zis$diQJ8jB_F%2IyfwuAH10s#Fsk!vG^5;D;L z=rWPJWNa`>#Fd4D`^3#WJ@osSA@Qo*JR4%3&KyW@SEJQRr#%*g#jxJaFccHP-4%?M zR>tRD@o_tLJq&+4w(rq&vA*USa-v=G22A&V(gU$?%#l=ww#?B`U+q0W6eD%pGt@*<2FnTe7&jQ7xGDE zMW%8>0T}XWDQvD`HEgdblbM;Ym4yKmB;M_Ey4T9GYXcewvo{}Va90^P8puDpp;XxU zd6glF*e(?xMA`5ZSD5IX5WhrL5+3^IB}jKJ*L)&=j3Kuy!;D^CYf)TGIREm+V}})u zr_CGQ2dej%CN8RzBsU|Oa+@H+P_yPHD1Cvch+llAaL?jY0Jx&z^ZS$K3a@RBpiX(@ z`qtzh)y&i5t;TogB#j=Zg>7X2eOtLWz59gY4S!Go8l>ILu@(Yor?ykSEDU{yxFvsbSiADQ?Mv8oG=izP3V;*8 z=tXjn`4g7DV810dlhroAW{v}l`L6U!Y*$FashO3-&n%@%t~}~ljRd+*I8|oB=V@$d zG&AwzNxDl%uaZw?z?DT@>66cmt8Ppu`p1=qT>Wmo(F+B1nZwZDDMVDJ$)SgD-PcMT_oeM-gxqGboGzVCk}^QJ(O1e zY|Ujxx!LNx)9GuQjBT7sq#`Ir^XM3usJ{4KDQ;$0$@C)P`lLjOGM-Cydr*$$eo3I>E-b=HccWgy(CJ4hsJ-eCYMdetQvyM6;Wigv-)2MQ$LP%NC@E!8 z_+UPe0)-(l|5CT|w49Z9r(&`|S}cewQtjI2DnN@PW_P}HaQMg9#|BQ9@{hkKy5DU# zY-0V3Sz8#%kvHD4C0T|YAxQgJh7a(tY=4eJWnE+;p8YgC3K@74P;ETi2Xl-h)&z9E zXiFjtrT+d38Aj088YXz-2r=nQ(VCkXnF13jAASGtn{bY@RDu(=V|;!=3gqarzWY8TzBDN__9&vm<>x7-Ackl1QEU(QU3$!^Ir#f&NutoUMQ7gk(Fd-w1` z(Tdm^_|6W@xk^j7^#_UJM{P@OMdxaL+53_@b9KYxuGDbh_g{*s9sud;yh(YEj3vi4 zl+h9CX00=wN5@pyxots3kvnu|Yzb5GQodSjH;*&rsPKg+@ z1g4wlg76fqIVcM#v9BR!UbeLE z?h&YO;)0u;1ZePZJ9MWQnFg9r zKax=n0jauiAB(G7#_u3wxI#X^RKb`YBXNFcr1}uEfNLkJiSdv#pJgBtx(>Eh?~~yN zyd&@Q|HUQZmsfj8qI9P`GN~FH%bEn86TGEocz-C9e6nj;b#gt zRLB2x;4#?t{&!SMz}09-kv^{A<$D4%D(fp~%u!V0tmfe|1X#Y@`9v&K_ppHdfUvwJ zKW=+a4g3JREToJQd{@rpilyq50TD24jsPN`?;J3oc>Jz^*nzCDQ*R1I>6PV2E#F)# z*+m*-Z@bcGCgoM!|DHq~`ot8+W(wDSf9hWH8J7!*ExYk$@auhuyypg&r5Ao09DgTC zH+$`+Xaei1^5E`Fjx1&bPm$TTqwr1YrT2kx^>pm>o34}JkJrKL?3P(msC$ttNi&A4 z&yic-bHk)X(y3eKDM23BhUr!y)? zrj%D?m@4Y7Pt!T5qRp^)H*o@Mj1WJLX+li>9=G0}z#poOQ@l*0=-HJq6^}XxhOPk{@0g(;nc11lXBu-vzrqnnlU^gMh{&v;Q3MJqYRM}crk=_2yK z?KgBwEcj{oNsED*ds8m0s-*@k$EHHuLa9$$E6?dBfI>(z{s3^Hmq+4S%m1DT9xNp(bJ&TDPG;CoaSBXa2|6}M(9GU+AIKJCvv&-CMn=|L!XUyD3 zawT_jCQ(SClx^;#oJk^^kfQ@B(zTf@sYdup>NiqJ7o}2Z`}qq#*X#5Cd_J$w>-l)B zMPW_=z~;>@XgKrI_bH-ZMe20s$#O@PWub&seG2B_rmNz&F>nAkR`FE)kmdBGMlN>= zU!ReyWx0;=*@`CgwDHx0bIRR%Tw-5W?GA4>?I|nr+y1Jpu3yfzJIkX(jVU~x3fYUw zLqv)8omG?N(i-7|VlD)f=%uaCLu&^Os)SNBX{LD44j;0#E!|_ANtkm;nJ@J};RxXY z6K+9yqgq9Q!pKV7?;St2cmJlgi+ovrd)-nM3mK4s44`cMqAtP55t)$;lb)f=G;DY7 zdYPrg2OU+?+3n_Ik;S-rD%eT;vjeBL=9qiRQOqq|X?_VduERk}ZH%fcImuF{FtIwP zR6PF??^5dtr1>+K$kRb`HKJ%lc&!6|v#qAVd%{#Kgs59aB0Q66GH@VN-?$s1GRJ=C zbxW&ee7R29%fsSY@cyY*Q>9y$L*}6F*eQs!RzViVyl)YO$~tYl5&MXnAsVQVAonXS{zete&x9OrR0OnCw9CT)z%kNCI z07vzH`(1oFHgIWB|IjgMJ+*iT{I|UW*-lY1%{C+UUXjJwi!HrnB_7G4F)?>D3|vN% zH2ZDKb9>jQkf>USqc-*hk+ zB-QTn>n^04Ed8igzoFa(kmwx)N_*u8DE9NspHdN-^^2gLa52c@ z0k7!a(3;X3cGRMdfi@}xO1Z?z%Ph{zqhp8^i6@eQ#(f63FlRl{_8q>HehtOoK;e#s zgionWtO&G$YGJy`hsp&DelS=b3p7DI2W>a2VNshB5>D4vr|)skds)j%P=!D=al%M1 zyHvst`*|b-@c2}rBN^{o=tiKuuhh=fWJDCw<`$*YPhC2`PZ6%sOt;|lx*ZCO2CJ+9 z41QJ@{#yOkx*I=QaiaAn z)25dR%Vb0DNy_JbA8|lAP@R+)h>{irkV^X8keW6Xgyq_Rb$Ean@%%T!iKE=5g9;@@ z25Sqr3b&)dlMLvkRB}tdoBpz2&pj)x;ibc8jXcI}V>JJiK@+(^$B^r?*AOg3D|Om# zbCa}G4s(QnBz-nriObjmkAS8%pEaIC9k#&I6i7;sA5^)0Z&-`ijM*LUAg90WezBwi zKbBD;CmL(uTM5Ih3U}$t2 z$&01|Z&nHzByI6ElW9(=AU(noMVoJy=4jpTXq}d0vyfv~4c5QP#ML_3(SRCp1R5YH zp%?#OifcMSDy?vD(*#VauoOk5W7=Sy!F!W>Q4PK1x@2KYGCPF9h>M4{k3l1S;25h5 z$?N#4460v8LG(scNbfKT?G@$}{hp%`M!nn@kXL=IBssW7D&g#V)QI`N9IX?+GO|0A z>zF%su(Y@=tpyEd*(m2J+J0HGKIEM}JdUo3*WaKSZt*GVl~D%oC@6j;`W-!iZy(P$ z4$#z(&uLkFtG&fHSQfWv-ILQw2F2%V#vcaJGC<_RETd{iQ>xhUHDl)A2tm2`+|`<9rkN6GCGBC zpX_J>Xk)bIWs{wlsgBG_7mF>hSr|XtTHB24%n}_i&*j@U=Y-I;Y4IyAtzZ2g=;(krUk@7E^|lex+7!|@1aUv(5|cZ0C8ZHf(!osTo(M~ldlwGk|t{5Lun7IR~-Y3MzG3Sq#1ywu8r6niAk>#?& z5;^86dR{)xXN73favjZm_)TOdE4of=jiXikNqnR&U_tC$|y`ZcU8%(0eM~b)%-LE)~7n zEp=<}lj#k7jrXOh7ZEon^XpF&TbI%I zwu!0g=a|a!EHb6hhQ+gA(?y@GZ3buNZSuVGgF$8;my;P^KStamC9k|?wAP%+AXOwyliH~#V4*fw3Ts% z+Tu|^x~wpvH||;+5nFwlq2H9m6)Z$szCdZJnYrWzj^qVgeKBzLP=DCj2X~+=mJ9c? z0I;i6*{vLM5G!VIax@7gLjyka9yBJba5|uaaXHyLI{4(PZ|$zWjW}$cCeF!=1CLl= z9kgCq&If#VZMN1~;-e~gjvWEwI{%u=&Tj}@P`CuIx8apH;K>s={=ulzMQS2%*O$Rx+PsuQB&|ko>r1F!T+ijZL&n_6VvCPWBk-g{gY^! z{NU)w>mkZ|VFBRF9$)M&9XTPCoQNEgFus}T3dbcr&mi6+Bj>$AN3-H%`&>svBc-*~ zu{Ev(nZBA=_sQjfqwRK#d4+G+47Fd#*)>O@&GC1w<=D@Gji_RpMi40C3rA&$M+^Xw zK#qpX=gFHqMF4MnZGWOqQ`gS-Nr8T&0rcsnkRQD+)2(%N<@4%0C8n24C8COXwT7+` z+4;aLfJ^}VolH3K?Ym{8i6;^8vz@OJcD&Pnaq_`%(e%qYN?1v`r%5J24nE^J3ndKk z)Zt(4t67c5lO@!0R|cW{<2@mkj=2#OT6vF2d1_9=7kg^XpkI#eLt|QXPZKMryL_$X z_$sn*EiWN{e2QPV3btPZW5hYTO0|s|+bH53`)0nj-k`K9=!Xvb~L`-JMdv<`d{*B#p;3o37v1dq2sO2_XwwFe!r zI~3@;ygt~r?YrwCoj+u3Kq9-gyp1_qx2qmA$F!N{ikgQTLZlhuA?g1n@O;dFtL#sn^v}Y(>-@ zRnv;zvuzBEJaWiOMZKa9t!GHf%C+rt(|cO_uA1RVb@>AeR2^-vW9N9s#`f9IJt0nW%Q1-CV<4dhF?HGwfYbE#%C#(6YTM&D zpLiZKKt;BLf)FQ{%#_Oj%1xNd4Vf!V0~-}U53C2XQb5`pgNC*_Ce6Kh#f~A#tM-MC z*3F5w@b1Tf=^?dk+r?%Nzqx%>nEwuAZaSLe#%(}BY7iDx1g3VRYn10Iv@NGE1EeGI zo!fGxzs1r!S3 zEW`0iPtK>h_;9w48`{LAOglgg;x_MSWee8Af|M&sE+!zg=F2Ba9DdE{KxVaR0_q+= zm5zg7?b8~^oL{NCe{OUCY#;ER*8}M8&)UaE^4&3`Ub@qhMr8qVueA%eB>22~0 zq6}`a66(^n58Z#y`Hqe`t>{f?FW^eKD(%ytUe!pEoSr*BH9RJV6w7P-oKa@O1#M%i ziB8=TR!Mr7Wn*z;GmSxRXK&l8HT<-Ml>@4`_~)v*l35H%0RWrmAb-_iN6;Nod9Dt? z(Omgv$eh73iJQCbiSJ^cT{n7j*i|t{i)unE1j`<1sp#EY>l z^ZI9Xwp=ZjAemX_Pn|J&YHxW;A{g*?O9<_S!UbIPCu;U2L#lii)`=(I%iDovk*T0l zr$97-g?{zwaV3*`CEB~VHV3`>jQ&z=(i}~d$!2dd@zac--44>t-__%)xs8g0zZ$21 zGBA{^Up3;CCRbargCClU3T(in#@|amIB@Q1_ku+UTYc1(*n95IwZ?Dp18%U= zou8lORjN;C^-`5%bU3Ns;!2DKWgGUUvtV5iFDv7@C*#e;wLA2x|BjrRJ#znfLDe#2 zN8ly~$ps+WxM#}m<4YZmd}Wf7L537Z^YTQ)AXZzP#jb^}&m&@^&bzw`I|lyOHJ}C& zj)JN8bmgSxS`Buyx1^t6b}!puol2dE^6+}`zP zu4iQo=z~s?ET>|;w)eZ~JKw=Ycnzmd3&GpS7OboN%ElTm2Zq`09KR_HaD3XayIb^~ z7$80{mF<7@#Ah9{bFlX-?})oKHHx>glhUnE-j%-oGW$X8)=~Cz2gr5tmP;*h?rScR z=$$ycwg^GW$ccgrv;4k2M9S)g)vjUq5LAOvn1De7BV@!`ml&LRmvZC8k0nr!b1ie* zj0)VUmCOz&l6#`1&#Jx>hc=qTc*^Pc3*c0DAHQFXo2L%SmvU&6b=@`%ijd*`Qn<@WW1o%(k~k-l1Y0%JxLoGEjiH?qye zFLkdxA+Mx#RcUrnDM(WQ4=iag*O7ZIcV5p}Qg21i<1uBkfTbgTBy7jhd^p|NbUL$0 zub-+`=B&rjmyd2@zNtyn~URYW04OJ+;$hiQG99}_Z7%uQ~?6#j8_z|sG) zXR9h%YwZ|?#12|ZTSD=^&Ove~RJ%X;qf=jP>`(PO^+m_8%Wz^f6=|9RBNh}}$OS?H ze`jApMZxqN&>fV0Af#>3kLGK(+#X|PBXFwmSn41i9ND?_4MIs@bAW5sh_x@HX?oqu z(mq+ghj+(sa7I*4i#YGSmpATcUCI=FIB@Ck9Po-VO}z8Ua_XSM^iwBbUM|+=6TMws z)hp!Dy(-hD;P(p4$eni8F?I*xs(>w5C;+G~10{I^osnKk7c@Iw##S3I)W2vw(8yvo!qNplFz5eswGnQ z_M9Xc%OeTC)eus0bam<;hrQG6%ck-bQlnvtsowy|?axVd?Oa_=qcWdmHG)`Ji+EpA z=H6Bg-r)v^YvK5oTWV-qf1Wyxl&>JVEaOuPloBl#TTatqd2nZvh&iOU^#-YRa7m60 zm!Q?F@0NVyY}&*t$xd`Yc2VeiLiSk7v{!zO(w$9 zyao$fEg#tmBGGmvX_eo#B>Wp6T3Xtt+TY2V2~L)S(XuqO58T;alj9iO6rFnz4pH7H z_ueJnBw4cUZZO~!hpe&W9v0?n7q4S>0Tv;qmN^;;6=yOw^Hu*+p4wxbd+ZTV-{W2c zo1XPD+buq7uCok%ygWw%h4(ksZFDi8F|lji6K^xNVm~MGP=*~4u=etqJ-w;w@4w;G z4b^qtelIwpib{ve^&vV(6}dVoTnYXdOi%pkr|ezsZs+7^m}$K=@6N8A!?)lx(AJb3 zDzO@3(#G4@NUc=JIIwHarUXF}Ct)OCRhy^ngxXz!m6bO_uTaR=aq<%T*lH=3>IbyL zd?l>d(r9rTOLcnZ-92GTs*M@BYO*PK{ZB%ORyoV&0uRl4{YI4sCeWmhsR)gQDmx~>)RHQV8hF)5o4s%&k7^jbDxiR(< zBR{ArS-QWs)w+ONhCEagQeTY!6qgb1(YZS^fXE=9V8yKBM$57)r?4uGBKM79Dzo>(aM;o3>zRi@< z53rsBBJ$}#r(g1>CNEaxF>sL|{pR!pufsSIxuC0xetO z|HcyEUf8)tmCOnPYo}eu>bEgpq(v#Zeo^<*+Z;s)b>*m9*23VT4g0`!{LWI2R7~=Z zPJ2|;E&&stMjR?|L=|X@<1HW_0!MxLIdpm#cvLSs*jjc#nrOcb?zD5awlgxN)N&+T zMVE1j`EM@`YxRA&+#~4lYILvY=-1lWHI!`Z9s2;^j^W9z5~c zBkVjna`q2h3^z#zp66|_D2>bh)nNxyc4p%1^`xrSZQQSVC)+o1>vc_3j$W{b9BGLA z&q2Ry$PBdOad1a`4W;tsiEz`t{qp1^)wr-0q%Syci%-y~A9Am>0&D7PXl*`y^iZ^S zwITO}gw}5+Hka{Ti{>k7Y5%Cxb>S)6a6i(+l6lSULf)SK^-OhSb;Fm6#9aK}o4(@p z*^3rD{k3(eJ1QUg8uUzOS7)~p_nq9PWkP;GYpk%YbwJYr;CqcjkTySuJL0czy`x{H zHQo85wPrWuNx1Rz`pCeJBToi3*G1%Y8rQ*(A!`S@e~A?0GbALtX;m+(pXQ)Xy956W zg4pyrv4}*dWPn!_@LrLMs|mF<5;R1pY8eCCe^?^&@LQ3?yIlIaT%l_5jm^UHqQW&~ z@sano6J7H{bs+=QM1&X&fmvMqJ)V+RTulA$x#}mJ(%m0nEipqJrCEA>;79c~y;HXj z#B<*tm^J)-TS63cNaRh1w-F`p301p@lJ)e#S}Nk*5%_VcL?S>;XZL$h4=$Yvs6%Q+ zL4k{|cjyMM*PZ|~brQEU2E5r&>nn&lp1$!{^`%xMl{{#j8X2!eHE`=l46$-lG;*(Ej zYTe+e9`Z?CJXr@R24-@Pd`x4#$fYTF96|ZMQ(YLt_$^6wv9koOC+Eo5R4KV!#rKxQdUarjN8fxjr}D z4V6uixIYv>&82)p@L;T?_h{^i`VjIBl0cNStpE=I4CKAFu16BasW=ozOKNdD z7^=UV?_AB%KI7nhA`*qBY8kj1o3o8AiO>Z4t_&)Q&DHteTXkcqWB(zovlZ(LPoBqp zQ9XSGUVxqPCT}wKNKW8qN(E1h>F128P!vh&tc3FFihBJ4)DvH2F?{&%IBslSJ9dzy zf?|#ju#st==v$*(v?i(lj*O@38Z+7G-|Om@9=FXUi6jJ-PK5!C#o8=2vYrU!t95%j zwYts92f&X5;OdpoZ%1C0BcHH4*QP&B#0|Kuw4keVvBw7gn7h%Eu< zV9coyOFFKf1Zk{NxX!~b3$Y>|*1HKc_)+uDcU4rxGI7hxTW47Ed$f3m4^t9|38(-XCkeUwTSF9Jo8;Vg!1)1vksP|5tVVwkypytxv0(*M}(iDR^w z>yiKE3#EvkjDAcW3`Pc?G)M2=h;O`Y{PvluMR7a>IM%bcqg>5u$w762q$144nsVdl zZ1O*$G`N1kS*YUmQx=g3c!UJ;rHWJ%3(c_6+N0B5jGpN&6S z6F3e3if^YP=(mV@aT@01*na?g7E{*6A!z`pF92n1@bHQU$#D#&PG*_hqBIw%n83uI z1`;xO*rrA45q46EXYl>o{1GBEm=5)l{AK4Jc=|<}9vsC53dPmj_(?acwO0uJDt@6DeK-7gh6HRi1ajm53JSepBsV#4fYt z04E7Ckp$Cp9Guich{R?1b$=&_z368jZ_bK#fF3rkLSA?i4>N8})5%)=Rzl-{kx@|aj< z8ft(lQAaO-`L!9bv&B74E2vKLtSnYK^<+RAteSi19~(VFL~bR+b*7*wZEbVmdhVf+ zQ7WQGh!oN>8(hr2S?mrH#*0DT$AEh3>_QYJMtVK-f_z4hj*eFaF1NV486obq|F7(`Oq{G^B`Vf7ZVvOv7)f3YH_ z)YaeW+CaP>Pdb8&N%&Bj!;~MV8j46jZp(%@>(<3wUAH$Tb@D~gecD3*^zT-__j`KM z_Q@aB0ehS0kO2_XqMTq;m9=P|7^+2>FMZL>*vaX8UO%$eA(+imA~FlRxG3v1<6|I6 z;gN&uSPZhV!c!50@k89ZaI%(*HRg23b1t3c$i_IxCOF90@wVXs(({a0sZsX~Dy0M-703NQ+=+aV=+$A94o&)Z>wzLz6NB9JxUub_3Bvb0p>Bx}V zpvn-L+eIPcO_Kve4(**}^#d^=AYP2(49humUui?rUAOOwo)h0x;mnSVg^skSu@tAs zl6qZpwbBZRdxyH|{BvW9xG;KR&X6?C-4y3kVZT&j0S4oRK-9Rq7zq zMC{41>6xm>CvY-v^6)39Q&V)ix|2?4gca`91AAC4d+G-M*&4d7s+xMp+C}0@Ns<9{ z%q54&x^#xz;%MFyR_@cSL>GnqAE%;E^ZppTzW&a_EJH%F5_Xy@IZsD!Fi;!Rl^TG8 zmD7yd`&tOzyxA}H zODZrT^BH4NZfOIMyQwZFQzJi4kEKU_wO_t@%TH^;-|ln6YjMkytM$4IyA1wQV5=~| zKZXB$W~sGMD|a|LQ~Hnk^+N1zM&GSdBVryNtEgy8l89g<$Pso7YV$9nmZMEhd*&;| zOhi5R*&Z5V^(@(mh1lXsJUFga%k&;vRGi}NAUIG1gjkJCjT3v`F~^=ql#pBYYcp2d z_mQW)lRn&1EsW4TSMz1f|HJQ4Ke)V~WD^7RGz4SpAUT~alNWUq(L}bBYtbHf|ZMqwoPbW zJ2LnX3HK#Wh}ZC~E>fzdTS(5jQ=v3GliXY6uQq{{3mcpu;+w(9VFC4XP)af+?YGJ0y zz8W+;ONGB?SLICHaCr62E5v9>m6CW;ys~cRfiehwFhs1%HU=JhZm+eHCfw5(D^!J| z$wOj4nA@ohE?6A22BSQnzO6ROo#seVE(C$xHE%HpXH-459B0YVxWOn|Z{l80?2(qq zT-@0&~6DI0q<_sD$(t@@g`}Wv=Xrrl=q|7T2fQatN|4Y(gE?3rJqt>4J5`n}1 zJ|@E*ah=y>TP8s=5kW47V))0Bg403Uh|yx7Zy1fU1aPTQ$iJu}d}h}BQSysREn+vL z21W2hgjq8XN~10u+lS5gaZ4@Yq}1)Da_@=9L$Q0ztws!wW%;?*MsNChnmg+l@#FRw zXHt-My>WcB_m|s_2{GgD^R8EJwT2E~|ME_Uh7(sQNzo}wR}8w-@b0QCky^gXxKsKW zM5tjxzD70!Lf__lDu|{l%5ZjytE9|L3aB zS>8X3AB?HmEiOEBXjVo11`mxBzv%?y(k4r~_Qwvw)Z?v&ny3j4qmK=5C3fej!q5B& z4+(+t_sX9a<>Z}pL~$k~X}Z9F54Sv#kr;yt$O)qF4O z#M}$=)$zs(A^aWB(5YYgkCe97?`V9b;btRW;ijQ@p|n{2Oz+yW?eN}2sguC>JI0J( z2rP1G)F!huUN}krJL;x(ZHJ=#!HpfK#mVZxzndB}I`i@0J*r*wW*+)oRVcs4ggLff z=xDBYN^1Kv3if&nXmjAm4vyy)T#uENZ-C+(lRXNQD{}Oy0%yH%IXYaK()jL0RkIb4 z?DDrestX!!r+`y$E7jE>JClxz3t7@wP)ptufK>T5VLf6rH+4u&S?pG@Yoohhr}I_M zm|~S$<+wVH!*RuWa}M!W;XOlL3{QnOl?_i}#s*IxMQ8mPO-WnFn2N8{@C+f(-kb_Q ztmmjUS#`;{wnE!8V-Vj{4pn!;;^@TB=0ls#vh}m3`;W!g;ktbOqT29Pw(vvxRz+KZ z$ACeL9-2R&*SSLAE@r{;YCh#q%8A7i`Z7~0_BT93I}#CL3zfgOJ-`=*%`=BTB_#zp zQR=@DqL&>YX4|QBdAYpoEo!(}8*lQ}?~WW9g0vW-86R}xzi0=Ltoo4wF}!?zQw_L{ z_Ivbp(taq*CGvi7Q&MZ2bNSvB(~FCKLrZCU%9lSxhcCTPsF{;6d99gwioQd_9H)}2 zopTl*>0&qqDDq7n#NVe3AzgT=DEa7ezQB#t$9T}OYdimdVPjm~6oH*BQl!8fL6SCC z)eNewUUTn^tIG@A4+U(3(mGH-Yq2B@kRuh#sL+*J(qsR8qRU<5qgzdP(-PsN-VN+` zHXWAhL_)1Bl^}tRdD=dl)Y)k_WAQe*gZzPBd|?VHn=h|AMugc3@U(oNr%$Ay0qkSZ`|W_(yc{S?9tETit*C4=PbA`uEdL5# z`Z72dg!<^tmqWLV)=`ZEn|;-~gNE(pQwrWT17xRzKHE3#+ZDUet{t{M+x6C7hBQd*^p_ndoV>tTdjRQ+;dVIK9e%!TQzkyv=CJgu||JxSc7uvBq2wd;-Q&wf`0 ziof@s>=S&<>$J7p^wpR3TZzF+c8Bi}SQ0?H)KdlWqf3iaNg@E0Cd-5xNUsoqIZX|hk=U2k@ z0FTjbOpVhYO0pquq#daa^52M-wB<#qniUV7kGmdU8T)6hOfE!;Cc!ok4#Hu~@&2lr zp*HcLz&qa3?K{%1+?t2<4gxLPz6TTU%}7u-T@|Kqm}q$x7LEpC*X9?`HhfIqx$pUS zG-f0f)=RiPGQ2)9hj3S4LOfBczNXRR6Ep`RQU5E{uMvOGo{N&ZZTEAkh*TnKIs!c7 zRdo2{_s%zgccOoH?*aNph<=@U_))K0vF7e5r+*)$dFP5lR2u+Myrp(7&c*FM&@e+b zCa!UtkQ@N3^%u)}5g}rR`nmH~7v4Zja`z+tgPH|o))&Y%<|t6GnpOfe7w+C&Sg>`u zMn$A|IT%v=GgB))^}X>)#dX%L0|#x^z!y0*8vw+t5bMH#mNF3i4CDX)gd=zF0U~Pbr}GTf**@n0bHIwH8A5g5R3n9xBq-@u zE#X&T*wv;2*<_NzF`#U60h$ZUr=z|VVEv(ZCBF>sMdZV^@+%Opo2D65XXJ5Ta2x}g z773ZZasV|3`5xtXu^1)n5x*Q*!D966yzWlSxY_TpcykHL}(-fPQg|E5z=uA83cuh2VA7fHbIQK ze@#XmwTaolS8kKUJj;_+aWL%{(1APeImpNzwujec+&Kh@d_Dbj}QkaT+s;m%p7Q^yC{Fb#pK&uSjhX1vv zKCoXx z!_J1)ayUmuX)wFpNl$T|poE8QLjZ#WP#YFD7bmXtoT>{?4vb(Y$CX#YyP@IO_=#qN zk8h7Wa)(AoLX=n3E7ngK_A6-1S3i)q)zfaE#2dWMRB~9WdXH}%S8t$pkv*`8TCQY` z^Cfu28Mirj`WnPt06Jpr`k0*;pV`=#(zwx%>trBq&4zS95sU!9 zNau?>PqG!R4R@gcdg~x86bt)1yjSifR z)VbW`!Uwy2uFaqd=s>u@RFQQ0)6Fg@vNj;@y#H)s*?b~lfNed~hZ9OPF0~&x>Y@1U zf>&O-A|7>75_QMtu%;)}xESkD>E%UaUVIM;i>(yXX_45QrjPeVc2%Z#Q~XaTc?mnF zI-zYbJsYx+U_f8HG?k7Nm){Dqy26vtKC^}iQ@GtF zJX#C5A?~`Zio4;K(Rj0~@f<}>ngjn_(Wl@`I+YRHKhu^_i~n@AEq)W1#K(OqX)7a8 z%Qpb%t}Yx=;=?3Tb5(~x5*PAms1P3VkdfZGkA+@&caE?-c9-u}dErG4&OB|tJCxq} zTjORV@n!@T=DU{cSkB7gXg(ucbL!OeSgX>rz4yfF-s_zZ{z(IWn^u+Q4V1)d;x0xX z2jc%56LsfSH}+@)8&L_+E)u{`QSXbn;MqmJ6`*&cq6^VM!IjW~ z$J|5VYdaSE{Qc7tmJax>EA{U@@bG%i!xoSknl5qfZuap3qJ z$6;H1qMS>ry!-;xn_bC_>+D_S^?l&oUgd?d4d$=lIx`<#@972h-F^LN&_i%7YJl;o z=$hVw*M93;!xtY7ofP+a5FuSxHMi3>M*DL6h*529#CkEdh;n~*9^~$G=q_WZjUMGD zj|lX-0Z*A&csxl!xj_!3kUq?l!54E zuj&;Y>aA?$DVbh6qJ$!OPPd|saHK~)fFA(fjfIu=)g5TrPr5Uvq#SSd5gIOlhH>}) zovB;(OBN!GUDy!E94t+scD3D0{>)_4r|MVpUc0g;yHF4sg}*+`zx8pPe|OxTKBakT z(ysL0+~a%1MJ+`f;=vXs0dPjV26;MpW~6?5ZzVGYw$P>x_nP2JOP zj~_1Rd2nLHY*|`&e4AU6^g~#4SR6db>Rgzm4DblnLb+*{<%UY0MSk1Doc4kF2*G4} zd7~t1?e^iEdWi`R_y}FDHf#6TvS1+OBC&K%m6u6e2Oku|#1v>0Rxxa?%Bu@P1MK^l z*K*wGY6RsNb)*VhBb%GF7=?jm6&)APJ=-Lx*%|p z_+ne_{`gy+GX0&AT!HCFsMJ$vw9gz(Q9{udC_{nz(-);97R5fm@>7e4g|HAI%nvIR z6QO=Yh`Jqr_sd>c%?6t;hG84SN`BIVeZXyL{(!U9uEP6KnU4n;k^`kf3>Fsn1G8F; zz55E~9)A7%Z=4YM_QyP8s`Gy6i)lU{jxM*GJd=+_n!WxEi1@4xG*_O8Z(Q?A+b#Q(Kr`Ap%?>5r>66i-wnT5xoFZzh?T+e^2iS zkZZ62bgzUmBO@(v5){F_C(5=i`g)Pb zTO~#=>Iq>|0)UJNsuO^^AA!0+MNH5T2L!N;^PUF;*B%ihQUK8FqvOE;dfOMSy~jg+ z0kAkCqBHQh^UBF?#_f>IOV9s864)>`2A0m2>J{Gdd@`YGG@SHu;!!wCMFW|NoypXF zC2>Lt9-t#jdndbOo+`p6zW#dZB6SNnOBnx3$2S8Kxq(U+Y7Y zVY?}dVhV=S^(l{nxb6ezY=eUtm!IsAxG4A(YklsX1U|kQc@?`HUV@$W%zA%a>Mng) zF{N?p;)K)T&7iCIV~dQ>bRkuK_=JdXl60M)$oC0P&8JmHLC@ZOs67jKW)ArHs`=~J zzkg={ce@U~2Q0ln^04r$)w}pq+~iH)=U3q;=>slA5Sb09-hNM&8AAs|m{13r|w7mNT~b)Ct<1qkmnT4bvAAVfc^JJ{N!T6_5VH0`X2V=uZ7|Cpbu`h%oO3{ z|AtEjMT>u~=*o6_i}62vzb~UPrF2nj!UkqW$6emgrP4||+U-IG;ECkV8~YTYVm#5U zoEZP41f#5%(MA8@*SuRbEQ~S9o6g?X8F5S?^TECqU0HmtedFW49%GqW5^O@hJMxKv z4sy2S`9tTN+3M~$2LxnKaeVm3k7xS~_wyDMf1cBwYm(iWFvr0!?lWj;L~TUjL6@3rJ(3gJW@;|F!kKudO)i>JJR-k8t77uXa11C8 zhfc^?RHd*0{387tE*WVkS~NyZdOPahqKs?bESVN9HkA;o+a@Gjws^>Q4nzkJN8_SLGcI8x_Dy&7i{w(`W!j-1DPqC zqgd=%dNv^?L^`;-Sf{%u+@rm9{7-p^JiomAJe|PP-j**hhonRD72c`Fii})pd_|-o z^d8jFL;Dq~s@J<^MeRUIJ-wrYNW-4wrN<>MN;#$`PY6k+2L2{h#o0B{PwVOt@ddrB7eh*e)QxoU50g@uaAk_43%$@t9ZQlpu67&ATlxu8pRLOTS?qP|Z_2a1B zIs;r*uh9f02j`Vm;jVUuGL=1>T|T6~hdTzt^9pO~uW8ox!@*`uN%(bglEoc35nv>L zXD8#Zm>aqq^4=nzp#RnfqN@vK^;;3Hz~t99tSz#S>wwk*f(-!3VB)t z2e|nhQ0f@bNv!e3SYGqKvysWS|4NBB2WG=_<8QrW$@M4S{gwHF9NYg&-sf`NOs`9{ z*W6i5Jr=rX#FX+Z2P>_=LLyXuo8aBHHl`oLDVD#Z zB6m*=?_T)*ogALQmz`9%)t~?^yw)64A8jhCg+bs!)M%`p4kX{08SlSUyg9aStkm71 zT+XQZQ_n`(nYw^e5g>or2>{$H%}H~tyvQJqgAAPLs7dcH)Hdv4%5IQwMbwrX@B&|!`hC*i$yJDx(q;D%Eca3Y5@$&opFb*&|LN~wukCcAL(+dzs{T}zV-EaQ#0;h z&0>Eaq4m06H2U(2;(pm~9Mv=Z(_Gg^Z~TJogVb~RB_&^YwZ(jH#^~pv_E_A2xqoQR z)b{IoaVh;r$ovc=lc=pR!Se*%K<>$Qnwz3byVKeLOjCU0{H?Re*I7eO=brk@6>93p z_2#bI2he&^@@TQLvv0!GK8!LtKJ+*-JL4Soa?*fd$!R}`)C^qmWV43qul{k{DTe3k zBiUnj9zM6{I(ijuZ}s&pbUVduzAY#`8r>uH%}JA)@5krKnj^9e|K2jcbfj7GWE#lX zf`8fCtTEo876sOpFKaejkaDZAhp&#k{>?J)kp3$Qd)4{6;m5J#nyy;L2psR;hRL-j zwWeOm#Q=S2MfsjRD#AWuuGNoR_|H4Jh2_g{?ml%&zTeeqo$M(Va@r88!vM*{U5?Jv z`(3M_2FE_-FF)uJ(h%?pShh_#PG%QVWdoLthHZ#Au2wen)NOoj?1DVMbpF}fx$eLD zM_xAmuMp9e%WMF^-t4m0K~ztHtA8?XIJo@pt;Dj}t5>g^?&Kzl!uma?d~^2C6P*Nn%H8-M=LLt9 zuM=0}0!3emO^4gb4PsYq+EWnD?6rK%VJU~PE+Mn}(1N2c)Q`_?DekHCrh$Br(rG?8 zE1>l};YQv;W|6}4_fLyGC$618Xr%-OgQ*y=I{bu1pjcMINr8GMqF z8L+N)gSn&EmL@>yIuGSvti8{?88PByF*|<*t05sgk>5KORNf$u0U-b`5bXMSk(i4j zbbwflGDuu+_q*si%P7>#bYJL=?U#4|Y{Iz;Hiis%d`DGczF3;4P#9L+V-aD!l~dbY zpKcsD2^=wOztXt$Y%wi zAedDU-s|$Kp8uW^n}3L?)&J{Od&yF>zWkDP4R50P;st1)zpn|zHpGHW<=IaC%@Iv^ zYU|sJXg$TbkZ<2>wVgnFcAOit7PVUyz3KG@mUtfmzL|!)Dg!gtCTKnPa^%XJC@hye(@rvPHPBk>JfG2&GSgAmQUDPn`@peYNtfg>lNifbYh z|8j!(7wu6TLhfzCqW+0?M11~5=^*0tcc@bva9?hz;duS?-V?e?mM zk2X7)(b)6h;9d$CKP0YAW$hXHk5eI-MRox_$9FC#&96wub=+RJokVKZy~qo)hSRLU z#U{<+fl9+1J%?(DuTECPgJ$Lc?7|bM$DP~;6Ab7Mn*sovQ^DS`99!l4nZ*+Yv@9=z zQiy+t+v0Wf8Z=ry%ZSS;uw-2CLjUJ?v$tOqO1}&1Vz{L+oH|WKiYZEa6d8!t!FXk` z&16A6V6UM=v>H%jQ_x*|P=UliQ^gh6punqaA_Ed257iX(=*9mXt<81jzL+@ogQK{W zBMWC1u|e9fYkIK`k`Ic_7d% z+8J)U=$W|=H(xt4D^lS%U7HJbV@wBD-?_Sxo0&^KDu(&6CG4=}x+g6j>X_Ih=g;>} zeCdDylI1Q_g`!bHj(m`0+r$5DPD=9jZi_|Q`1j4P;tvLm#<%AKZ6-k@#m+YH`V`St zTK*W5qw*;)KTi8jnp`}On;nOoI9ibZIqRYKTmYeLp`95qQoZ!2vCHN_q2&RK+}j0y z?A>^_g&+IUQHe(|*53%0-U=(F8(XNL^W%Vyj-a0;Rv|+3zI?jT@%;nphC*5I8rT#o zHEhO44CGqkFs@i=(9GqV@NBg!d0*<7eWBI)$FaNe^<{KXZ4V;E0wb7;0LOn&d$No(Cwzj*Ejb+DE{S4(4?$FMWE z<}MADnwmg*Bf$9B+t@9L1%0pB3uGv7L8%=-S)OOSMd~{3^ZWoT;Wu(Ev!6h(^s0; zYIP`9>vr-(44t1uhU`Faz-Ml#tuZLn3DG<2q> z{43sesRjl7j;6nsF_e>(uw3pIhg0d}&ah9pPG}P;HV$ z&1Un>+38F^Q?t4@lgl{`xy!E**?g;cKKB)C0LFLYH2)O&SYdNAQ7(+{8B5Fd#BmH! zK+Ks#KR+Gp1{IhFdVLn8m|p#Rq3si@6+L$v3ym z#S7*8ZJn3}6Nhy-4oi9u4#JmIr{~Nq!Fy?Xw(XL|L@DF$qUVH=BRxkw1#*`9UuKu^ z*$E*Om!uzmx$#18(aw?)z~vLEg%Sf1vjTf3-E*g5$}93ryV%vboWm6swe?QVF%!Gp zu!A!e*(14{^&-j-9c`6g>wPDGFLMfUd+6(wnOCWwdCU~2Nf9ubC<+f8$kYh1&;R`Fbso9}`XnN6+FuG7QE&JgCh`R+)4B-6t z?k&r}651!-7*fG4wo!NzU>_DpFon1mmxRy*!%|tMb?Kav1?E$Q0s|_otc}Gn#-Ye~P0I=lfjAyw-!{m*mSDG184{)C zLl4=eFmHa^(c7yY?sj3`720zz%ZIBN>;w&*XpfW4Bd$YlGn}8LRD}ROh7=d5``@@EYOOtBA&3>SB{=W20_LaJ-rS1h&y zn6%EaqOO^&YZ%cvi=m)e+2zB(N{b${_QJ;Es~xg2Ol@wj=~lOCS~U&^ekE8-Xny2z zMPzT|feE<>pE_s}=x5P!_g+E2-2;8MOO1H}QHBjuj{Kb*2<3+c{6i0Fr4;IT&loolV%fdAh_hE&bWaoiBB(B6EqQX_rE3ERQJ=-xjv0?fDEfZP3wDW!5HMqr+vsd?M%L__{YP+<}uiSMH9je=iK2s6jway+nPKn~bxBp$#;j0qyTu zIDR%c1C_qFBXwLLtiAVx{N%yh@y53}930EFnwU$Lu{DBa$8B-aP#jbn^ej%{)Ryqs zEsoEj_xfAL7rrgR3Ci~rwoKQle!Dq#zo{*KY)jfoh=pzNYY&J1=0EaI5rl=PfB82R z@_LA`Za7?6aqH{7ZdWt$Ba)1F0~`r@eqRD$enKI}_~+HV1n7Wo$j>`tu)$wZ&%Q(% z?(4jJFPGl>IcX}anQ+By$Nu)$kO_b7v|#bcxPl=R=cVVnS~y>^8hGWyFP-yA54yTg zPPT$=@8Ne}g|6q>(7;AF*cNSI#--jD$wx`l2l_any-teg^{hBH%Ne%nEa>aX{^|YN zZZY{dKRJut8*qB&|Y? z*~|&c*uUC3YxkY<)a_&c8qMCfJJYOX@0%~f^XsE8Ke3lS+!@#%)}s6KyeG0~-|jI& zKanDZWy_|MEWfS& zNW13_m_`*2SHbRcbJtN|A&5fVaZP6pHpfy~?4ZeUFIPoQ{KQ^3So-6A)6E0-Jg0PJ zsbl1mQ-)cE~?$FURH)CD?lMAdmabWD1)e8u~&=c_J$!NN0M6;v7ty zwJ(IFE>q-us6!+8y|+*z1wW-oE77;XOO=t0%o$=}MA?$Yv@t}b&^oA#i|?T5>--phHrN`F@CnWJ@ zTisH-h)eiDM%hIT7tM~6i}vR>$d_QY42DqnMAc|A!-{H560zh0rQ=U01`hp*qzEah zXA&J6l})GKPoCIji|EBZ_nM~)a$Cf7gLcR$k~>=Spms@$x(Lf#rA@@UlVd-hseJ9P zq+Y30l5dc50-r0SCV27J9W&7{pA|mJsQgky`RR4* zRqDUZUq*tht;gyD4ig^RzuQEH`_T~D3e-b?B+HFY?73&Lp+x(;A?nh{>3`HU$1CgR z3aBdENhS8O;WV^+Qa)GVb&68fZ?cdgbsbQL#Fk*iROcU&U?=uQGAMeR3qAdPt-$jh z##C2L;eWwZWvBHI^DY~h?lFEG<;Hl@k2%bY3Lltpg{YtOZdoCRlGswI$zbRmzUDjE zky=L|eX|TZ@_mNAcw%5ka?t96e#S;)raW0;4`PXD5v!-(<;q_y;RDOEilO_m<%xfD z)KQ3BoRi?FarS3c`7}J6t!e071l#vd82TlJrGhKekgR4vvKcy&%LIJi%Xo7GmD?ZST^FaHRRigIg$;7Ny>g^`V`75; zg^9~*j+YqXm=d-Bat0~UM*MkZPU@Chjb&-ha^X-)Zmjl<9#X$OabC*=(>QMs36g3Pj`|YQGH03D7^T(oN zQM|o=zx+GYGvNl8W(Hg}83zExYySX&*S+)KX@I+p#Gj(39 zxhta1LpZ-B_u6p8<^9{5oIkg1EkYV2%bzJca4NUpf3Raru&)Iaq=0 z*l6h0*E101a2v%$(MYL6x`?OZb9K6JPwDNyj$-xyB@ zvPufF#vJlfQlUa;{g?}z&a35tWv z7XC^aan?~k>?h7#c;1ggSzY*?A<+cY$LMUxhj>G4_nof2+7m7z=%n z<7!m-_*4?F?E2CPKM3?D?80o63)N-~2OAh~|-7rXVn96bLMx|lWT^|DRw`$dg0 zyYMQmyHL2%g^xK<2>OwUSp9l6?#@{=WK4+TI+$ zDy$M8SS={|6tk<0E-_lm1~#Cqol-TT)5s2cSa^$>cjD3gx^k9wLQ>i2I?wkcpDSgT zW9|*5-q3a)ze3?5ufsXH4hQN7>25`WE;!oo;=|iBshGN9^pPfZ7dw4lXweo^+>Z(( z#Q-=KaFUoOfVVH#oejT;`mAU2J8{gjTtcfSr(KI4 zGrao{J7!^{MB3&U#(4aSc&vgRNib){^>lyOn{))9FMQ9kD4+s>K0{nV<(Ahv&~s?FuNOWZw6s?cffzSBSzeUj8c zrfe}&7OvD?gI4TWKHVE4`1fk$jI^t=iO}L?fqdRm#eqDUv2$IvHeV9|URqU@p!Jlgfv} z^NuK_sOnlhT@ChiXkPI>M)~r7T#33M4{=XZp1zEpUYUNjA|5K9x<^%$;dd=uPG$aY z`I$KrF4o{;27P3XAetWpT|=ry3mkCB#X&m}bE|I=WJ zBkjlhz@ILa{G1isUY;d;e(IAwR?*1WQNZ+8t_KK2lw&mLu-(_^ ztT)U6z2fIBM>RtPjx~NwjzxZqwLs+Q-qM z^9`x%P3m;0=lolI4AZS1P3jE|mDM8g(aO@Tc*752su9&&8XldX@`ofp&4+)thhOH+ zQxfEpOUl89VNMEeUd_CIdzeZ?K8F*bJK~CQW+~=A$J~B-5gH7W9o0_o(}q7U-Wh&8 z8Yb|}RV6J&q)2Of(pA57sZ)1{m73MzpVS*umke8vct2e*$pC&n_7Oj?+9=ZygwWs@ z7aR2{i>UY=F>a931w!Z$@HQ9-=Sskdu=#y5E%Ng_0K^giJaHuxN$?KRhWDO~0W zt^{@!fx`wrjSM~n42{*WsT6-!LL>#RRymzd5N|%c2&su7s_I8A{zQkD0tay*4b;d> zg~J^H*u!a(emzO~DC;=M-ab~zA$wjkh83V(b+}#>B+51z`JlB$c~DHN^gQgjem=pZ z%H>e=ah?!r1m*Y+Zl+1bdvU-D!Jx%<)qL)x#}SYGfb`XL4i+t^jE|v zqE_2+e&If0(tL7B*2X>F>BSv50FuJRm#aC>7p=p9h>ibdxLtuuTTqbTsRB z0Q@>yWC=}m7>IluQ*~8Bb9E01gRsPMjx+_uhIhn<6LuGJy_R?Ed8kg1UWC@eAJy0F z-r+|;hx@1S({1Ii+g!9jYUYg^`%3-bNS8@Zl|Q;#6duO^Ic)xMYN|q2OD&7it_pnk zpFQs}QQM7kBcbKJF`D}a&3&7ix-S|XDBApZPO@Fg$x5Q!{MD1PO((~w@+r!n zugRpHRfe5=j{pV04)~r91@43IL1O_V*H_U;xpfd-PdK2^Cth$m?8~U3E-5~~B_P&Q zoQsEW@#2I@5CI_0ZSm@8t-~-gbXnOQZ6?@ut5tIcmgcl>2VAE$;yiA9vEb=+`&R55 ziMZp(0?*%>^0+AK@`_bvpyv>ruQ@I4IU;#20?=E;tqj&HFVfQZRw!O{)wS~~H7QRV z3Eek^x}AUIj-vKmcj19UzH9ailA9|^)kA|tOu2Z<+PRCLgRWfsqKfVI^;@Z`wXE<) z>qa9!L4AZzm%cy68yiicG&vi35_Ci3g3{;vgnAt-3h{tuSBM);%&$fMF6P)-! zdzFekJ^6fT(g@T??#Ygr#5#9=>OzdJdY?H>tq|BB1&I^Ete%;ys2jR--QczmMi&W% zPvzCBx|$sudG-3(r*p)$9U5bls^Ap<+7Q#&?Q3ouiO>pX*j5k{DKJ#WTdQxGhrX4Y z>5`njy^l(0>B|K)$4?=JresGaioOVIP(Jk-I`X*^0MMfoT5-R=O~Z!uN4lcNR`sW2 zytbmwotRSlx!Tek73+{&3NZ8(9qn_23p~bI)GJ67JjOh>jbQ&~2dv(m?`Z49hZ>h5j!sXL zl1f$vkE%NceN{ieVaEcY(ki6lfI|9_mvuK}9rL%Jk0?w~5}FUzE<)UXC^fZ(=^@8b zmah4l&owmHRY$$vRi}Jb@iaGh@Ab%c;uuq5-qh?&kQq}}v4f=>!NOnVX$0{w%0rlS zAW;BT+a6L|0+8i~B&30?6S2be7(qa7%W2XkCP#lY;m60)__h2_;VOO4_#{tGlD2@1 zfHPHnS;{}Fsi+apt?SonH+6qNu4tkhVQ%MNZ=P+A@~6TKasC~!RFzS2y?R!Dqhi$t z_vf9!FRl8*hnZ5^-KHn~j;G5zqI4}x4=Wn}P6d;N)_ z4EV(i$v{4({g6icqc4cu4whCMMae|{N{jyrxA}O&ex6ceFAuWRUk|B7I0bS5ldTDB_pSq! zhoELR6{%{TxWhpK>zSpI>dBw*s8u``OX|XqP@gh1C>-R6Q^Ssm1EIdbA00SU)2|!J zq#OnQ%I>4E!KZb;?^gm2`ljyc$)zys)L+QPGqD3CGikB`g>1IYGG?$aHaw#}gk>QJ zTgcOg5iwsLx`n*k{XcwJ&om%LOB^5 zqt@eJYOyb<15n?&nxF9b$=-zHgqe8vsIlj9(unJ0(6#HJ^4}2M2~AJ^-^`dSt^TR3 z!k0yn9?-M)g6Zv^LfymaZP=84%B%=?t*-N+6j01eUt&?I3X_NoWCHmBQtrA27|@)p zFPx)4rD`>qpuf-3ie&i>kLp1S*y@?Oj!OW~=93v^CZ7HKNfXNj|EY}!%K-JyFHY5KJC`!f293C?wJ0F*2a=L zS!yXHk9g3xN30T%J+No<$u!C3Z6RaTRrIXZd<^T5_3+iYwukHqE` zdJN%FJUz2t8t(?N@;~tMy+i@adS-Y(%1#}%s|Nc)R5DY$Xt|;>qNaQTFPTDkV68>? zqfcXHr+@f{96i6>cil>2K(gle?`f}2yTcc=uFF=nkh4Jea`RA|=DHl&l zGb9z>0uTtJcRu22!!iWI0}YN0;nM>tsQRr;Pi0&GzCJ9NQj!UVBDbIMFQdsEX&sY@ zwJMBDk+Od&)LEhJh``~%)eo*0EvXuV-C*Ae#G2o)8_+3szinLq#phU5R_0>HxJ(m47fJm9cUDQ{K@*PfXyKfN3L z_zgFMfu4V`bAE`C@s*==Y`-!IDAep8d?Wf8s_2aXMNm7kqh|3#;9es*%qjoxeR7wC z&1fJseG^_B)IIjCDx~fYR6d08=Uthn;U7+!qh^Ow<6ec%$WW&0ZFr0BZX&rweXHx8 zR9)S2yJF&MsIV5rA^)RQ#*10U@>Ad1h4k!%GDg}nX~>UtC$?s<)TMq&-%vfnRm#*uEn>LP`xn!!WJWwe}AJZoVM5F>U(#)zdYQZ z)jloT&w1W#$X$9OCWW7W_eDZS{{U;IJ7MeN3|X+o@N^J#huvq&Z{_R(Um^)MuEGD@ z01LYafUw7&olFgU@q)&!kGp@44R{KcB^G|9{EOSSe7$L(74V1DKGvB^7sCf9uAjo( z|Fs)?<=z#c*eioVQ`S(WlOPZP{RaXS2M7Rra|-}K0QLg*;%WfFQ2oZ^97!b$zb{+2 z-i{Zc>^QJLa+C?Awo7Bg(x#D1Ws$0N(VtsF5=v%*U4NU{`+RAI z+M_YEuGJja+QHl7Ee|r27MoM%uRVHTDwx`~HvKRy*Cx2H@Ui`8a^@o zartuBv3sW#G%ycj^GM~}fR(qGB@`jTbz8sD;Ln+8ud}G-A+ocq!0Uu(23I9)yVv#fZDyjJoDSPv;)pUaKAnr#Nq0n$IydeM7{+h^7Ajac&-np0Fd0AA zj(zb<jyh+4S(s|Fqfw@M zK6f+M!~AH>oJI<@aopXgCe_C|Y-nigpmhyrOfkBCR_3rqs?S)|1vlR@h4|v3Y(JfS zk$cVWw?`{6=g*iNc7C+|-PJkWS7h!8ZYR7DJBs_|VUWMmG^Kssb|qJ%dx&S8;_m5N_=wMQwu9Fs)AMYyv9OqQXclhkr!$a{%;xg1(C-Oq+p^N9F*X1DsFtN&d+8rXat27>-e^B_fn4rId zbycf#=Sdoby&d-g>B zmq5DddSKdaT_GDC$scarm60ke*Y;)gV;=;oG_iAJ-HzQtH7< z^IsvEf9J#w(d&M3xkC8DJ%hrNoA42dWj|s)NTwP9)uJ#pf^lT$B+hL!EC!Rleo=Xw zf1sHUls-*R!4ifHtJ@6sH`WiYZ835j>HB1j4ve7#HqMi|EUBZpPw|cKYsQZaY0R#K zADSU#o57!?Q)-`;kjw@%tHoXA{yCcUM;Autsw)|7RAc+9Y>k+_jBuYUT~&m!V|k3W zc8}{cha>cG>4unWC{J>G?!Lm72Q-665VE1O_PNJ;MZA5F?_C#F?;==A>leWa!BQ`S zzJe!D`-n_cDoX=Iq0flEqF!Bna?P|X!!5^sUJD%xh2uFfaUL%qJdy$zC2Zw1nX&6r z_iY`Q^;PHMQK4}`F?tK2j%#2scDpHBmO!y1T#)16pXUwJMvoj$5%nKgK^`Yc2Br8F zpjX#(Ll!C0rvdhgzMD{s=4JS}--@zcz2A?@F|tM@#Ap5$UgU!N zx_8)|^XHf^?i^5+x-$-?i^-l%s&}WYp@aon@&6Br&1~+fYqv7!5lwQt8J?@dwxo8~~W|Inp#I znYaWWQVf`30RAJ~+1YCjGy3Jqfb7SFy&FEDYoevR9Uaj{mI03UI^ny!8t6Vu(PZ zynX~lGlun~eC`kYqLMPCTcKZ06!l*wsm`H33}YNXyiJc*y#&OU9X5XX5K^R64Rsll+tDexO^@o!% zOw|;fv~fipluE>RopzR67`gCOH*00qzu>pURbIpa>hV=gur0vjyX=1JVzBYLq!~fm zj0*B>1>taP;tz6_Hr%;YPpn&Q)GOmZ`#`Wg%9#Q^)J6%0LxcIyAOcPj40}Nnt}fn} z&4p?~(ay}`>=Yyx9h31RM-FJ8x|MUPU;n{M&e=8ykc0}8g_cwzkE|m!HV}5gX9WNs zf0lY2Gt>3f*+p-$(c+LjS7G=jES#0{TksxM!#4@Uge=P$g&CV(>-CPxI&2MCtx`&LPV1}1B%Vu)M;bsKKCJACxO1Ty5HDD&ZVio z1qN*N>6%faY#bo{o2TO6c@HB`#a?^F_==@u6~zZ| zYC+vVqX7cB2~FnkU2;%x*cnU56Av0oEKLy#I#GC3RBups3XhbLSZqXDMrk*7q&z$uOHN5+WpYhYA(k({+292`%yteXhZlRZ2q@KNIM%nr3fPrV1~7Ly(3DwbOPbVA);H-rng;rpvC;=GHl zv(#)Y!LMKeUx8KcW?4qdm9|abkH+U*{f@uwRjH2zUxtFMwcG{u33IUHcf9lhv;v_U zkpg(2&TNKXv2gD#%KQJQ=aUVh*Bxoq=7t$I@3WGP5Q@M}Nz#nIVtcI)8Zt?0+B@er zgw|S^+iMINiIfS`sS2cS*kF3fF<@SUP+a3LB-UH2rt56{kjcXu_2qGOu{q~3ncQd$ zWM@MX-_?-a$b7X{9-$GYE~Ls1J4_)62N1ANO2{i?e$O_{mzi$iWo~-??(JdP`<;q# ztK_A{b9S0=f#6R<%y->+`ExE#mSTyzOIz+vzuZ&b`k&CzgEfGa{vtiMB*m{}=rE!2 zG+1~s#lriDPB*mcg+2(3e8xJRB`*_he(1)h4(KKlk8-h4R3y|xhOHEh8X(9-eZ@bu z{=*3W8HIp`1IxE?vYSX^gRo_Z`PMVpVqjd;2U)2y%q4mCM>R;XGGqinNdGrt_G8X& zC?lW`94`Z!tE|8wK=5jFeH0`UAR5wz4PH~CYh#~oAR~217)GJLcTv=H)sNC__L}>) zf~99AazhhtRqy}(5Lxb&;%13T4yM6ztda|=g3Xdu;}nBFL^{s*w2af8agg9*;e*nU zHh~T#gaGlS9}d8|h7?~HP@#G+6vTcyo_VJ)A%nDd3o-kowp)T6snsXYI&lca!tb>n z)~FkIAjZFu$7Y0#%Wxk*mFaBY^!{9MK^p)5C|g5yrkA8nKlkn4-*;uJb5R?C2i)kL zKi(w|BHvV8sjSeZU11`X{$)U_P|#CZemV$U7O#S>sG8};id^fexpO%uR`+E?f~{$N zol^RWw1-P&w;kL==%iwqb+z?V)#V>mICw*CJ{;mn4~SB$pNh1b0XM`d1mm)-$fzDO z>4^H9lyyl*Ds=QJ)R7Ns!$K!t-ekxogJBn(QB4zfswIF@-gm*?58%6Kh`*pX^veED zi;P1;pfj2}GC7Mv$b}a2>_uy02rf~}r7H8%gvo=+qnkfzp<=?v>aPR7BlnYA)tt4( zy5YBzKyy!B8K;P!MU?NZsO={R?~P~LGb&~Oh*^$l%ME^?Z>!)C?iG=3I5^m*GT{JB zkMlQy_1(QiCZHj;s25JC zIJ$=<5K5s!Ckh6P5+MNuNB|n@MThLCjylp0k6##A`-$8{|M%KYyRid~Gj{3v(?Gy= zPB*N622bl_Yx3H(6*!s9ZaE*I&w!<=#P9+h;%-TPU!p*-sFXI@d$*v z5Ww1eHP`O}$G680I3FpA>Xk^637HYffnB;#iFWLfvYj<4?3Iq|mMt%q!XohsN$6}F z)8}57EMi-A5{E?^7`KQ(-E5`1pgJ95L1s^#CJvk>z=_NiBg5P`9Jg=<)n|yv zqAUXQh3bLah@CtODLuFm&E08GmvU&omUUHqOFDT#_x2MDdQ$?gFadL6`qh>$Y{UJt zU%j!<9hHDPGx~w~}p5!`+7fiwhsdKiJA8Kt4m4r`6}!n#iCNo5wqGz z+hE1Bsa%_1Pz>fLn8c0~ZNNusWfF>%S!aQ)CtY{T< zipukHQmag4%<%l%686=Ch*wVJRH?Q#f%Lg8pdRL*WXsPxmn+hLb#pG-Tk291)KgUK zmd*)^+24M!lf8TDf7Uy<&VNH^*zqCpe5g`KbyPrWm<81z6c5HiS~kXZOCA$nF5ZNk zaa30%t;23`g>NtxEjA?gca2`Dhgx5C$Yczhd$nkh|DObU?+He;F1YCR{~`dw>0Dd| zLTY(MYN~xUC`&!Ux=*a>Iz=SLlZNo;fsE*8vKNtxI5Yj7xl=Dx+DL^5i($8l#oyNN zd%G@Kwhl2|C+Z*~HJbN6G!l56r&rF-kDWIJq^G{E+_tU1%1YQ0O1EXa@sg-2mb*)s zw|KMR_p4^wI)3`nRre>@2L^(m+T{PKQIPIr!BNdX#UB0p|EY=OlX9!bg#B%B(fvBiG zWKNxTZiqF$$*FJVJ92}qNx5}l{HLUO(RF8FOseIRKMjoc-AtEz+6wFM2!pIh)5_;1 zkVJ-Pck%ncBcdJ*i*Tv5wj>rxSygYn3vclzQzT&F64F{WeNMg#haex7T1fQ<8_h&q z#!TBfRdZhKH^@!HG~cOiNib%py&$UYn`+}GxkpJHw<;ErZcK-EgUx0Fni~dpJX<$c z>BqO53_BvDMG<0x25sO7{LR*xlmKX3k)g#9Xg?s+qX}Agjgh!6@sSSu2#0m8OXPHk zbfJXCX`&JJP-^0riG=HZ{cJb&k2^Rvyizui7+mE|2_ zwdHS0Wv@UQ>MM@Nw@2VC!#{p-d&Nnx&bH9{vfz}>DZ0;_w|tG8fpYl5>LKv8hmn%Y z0e?$wwK*aRL@pTIhwpkSMvF>qmSEbLidRdRXaYEU6Rb}FM-+dblJp9pizIO+Jn`bK zUE&W2`_={YrE$3MnR5f4ozRUisZ88nKgBHR3NnTMc1qQd&JcbaeqCTKLpf?XQLBHc z=!tF@7tp}u3Cn8lcB6(!qxfurkGy6B$sQ(i@Nbv%Q+iN?rXk!W^|o~9od&OWDLL~d+b zRv*PH7!LH5>v%g9HW;yYZw}#v#oMCg?%`Z~93&O2W*RT$KOHa1wm$u3=Oa55juOu_ z(-)^~+#fE4{*$=)i~lauRCKqg#Q!F7x(1)py5TV;X_B~fEGgMt_CV6L36%@I`ukMW z9R-R{AI(LHA~gl@ohH-K{Ybmq4pifJkMnhz0rD%%xvtO@i(~f+|5Rl)6lancHoLdN zb0p-^Hrv)4%cN{6AzxJay_tp|aLqdDPv!B-!+vG+g=R!3l9J(aPlgt|+SxE6ny+8C z^64nHp;%N@cda(yYFlQ}i0z3An)#FHKN){@9qYpG=ui-kSGq_y%YRa@DW}9bXSbGa(hWAB zkbrs$v4qgpOrBdui+t&SB15GPBxZneBs}(2LsIonURw(-Ty1v{-vZ{Nnr&Ovt$DD+x^N9(T9d^o(1K7oJ!&_kJLSFlrvPm3-!#dx<2?X ztFJLb$6(00ZTYga+KC2;^lQ=fmTLpN+1Bip$QVrR{0eWcFn!Up$G^$z;=|T)u`fm@ z!gf#I++8gHlAw4fW~;uGK3ZWKJsXGZJuLI_Dh+d%s-8aDNM)t#lvb@=Hfk1p6gSyz zSGQVL{7bf~$O)QvcE4V{}SpUpAAa2Qaw;ba+jr3nWJxZa!l8 zgOu;QzEFC_1{!3%C_3mW4VIoDK-G0*sa93D!O%#I7%}ffLKxe2t6?7&CFxB14mK!s z5Dn>g!*oZ1TOkfMWJO-c3H`4@ly;Tx1AF4B*HuVIziZmzg%qgZ+xcjx8$7eKLJn((L_^g3`=%KXalv!vd>_zoaNjkGC2P?M_pBnz)g4;> z0I?Q?6LRW8Llu^0M0)A$Oyy$kY{tgsk3{ z5E+Hk*Kd(IX*9enG@NH;&)_td@Cap3Q$JXQJ{WoBsC&W7$Yexf^?Zs)Yo@^0`}rx= znPTX%!<=d#GEZaCPoTc?5w_IGgJp%}r|ZZGmpF2xKFJ!ykqZyXWT}S?(6(=khmz|P zJ+*Ly`Fgc?2s=K8{|y0aL`?*Y0rz6mFG1#LwYA5Fb z9lC!&?~b8B1fqnOhID8NLiy308b}DYH-;&#whlFkrEZiJjhI~Qdr!f&5c6(y7o)a4 z66dXdLWxq0v5;6twmkkRzp`w@(XP64Ji`D~@4d$Mg%Zn18wRqi<{6=J{dp7V=)dMZ zQO_?t^}08+n{^Kbv_bb zM0IqBPP_4Vr+hQlxLD*yWRw$9HO48rcEiJ7mf3%ck}yaVc;7NJU`<-Q*IW`m9^VUn%G4( z|GP77?WTh5HMlchRfSrz?W!Ps+mm7fr$sv!v2NM9|0>vb9_WEUVHG<0I0h&((ftN?!=-qHw}w!+TEXWD~Ur;SK!4@FMTKk&4r*&U#+kk zl_mez1d8QC?_VfM)Q}zp^4m{O#~}{U;mX_!fyTf+$>gKReZqF2s;)eL&C+xvZn7~J|h+>6KF@|mzL6gj@{OVbM^Vof@d9bxuaCq_F zFEY^HnVVDJl-FK=C01C9I4PF4kOI(piQMc&E;?~dzXdj$0kKhnBO^e;N1%Tq-%$iN zsOPP*Z(39UzMg%Nd6l8@GTa0MnlQNGGOg}5_OQV2 zamkm5u4AWCl2N(R3QJeSN7f^BvrnX1SLBRwUULBgT$q!>HLVa#hqH1MTOX@XZnDdt zOD>nSiy_72x|`=g7G#~!d&=?@@ws{JTQT`0+?8swNk08-nJ@5;%h~#Z*2f?Vw?IR_(I_moI>{($FEsNRZx&|dx`U^6@}54YOCrs8;K~48z~V? z3IUlRxaRfvz6xuNdJttzD;(gUs32#jZtcvR@U?(1ryPAe)GQNfSr0N0>S@pfX&fGz zje8Wrb6j>cBbJRXJpHf@^qTcp+Q!vyXHJCOH4JRC)~dVqD{u2JcqH&Vp4NgEo_iCq~E7u!C-WWwboN_Olyc`yOcJH*wt&O5TmABiAxi@~p zJ9|ye=pgYie=Ae+9W}Q#w5y)o2kL!~;@MOH%@w>vR^ztOC%=T~=?tNeCb}Btb%rVx zjukZ_xVYsabPuP;;wA?3P<0uuGQhE{Am;V}RGbh!eE>@g)L^pOK*9Hzd|-gdF{nQo zM`*>20I7;xr>NY76n;XFz%?Yt5|d*t3NaQ7s6AjNhbKin&YpC8eco=IQ8Z623o8c2 zl~&SR(2ZL8dd?y}TaN@Tm*fiyr{(3xBWU%&D7$C6lJnOUgTwX>hwmaYa86m+NCMC(^5OnWIWr8FBi2_c0`};AJu7BCE_sLo^cMl@X32-@V3!&`)s?E z(R+mf=|bURadD&4ArGF3DY~+FA zGMJR2?l6$ctl*{)e2P^9Bi?&s>u_e1fa3$8p7C>p;}zv%`?K}8bb4>NMA`15^l)t8 zHe_z?&ETOVflP9V$B6-MMsJMqIg9yIoyj;2 z>bmP$(0v0u-hSbt>uJI#RLp{3grqO>Z7XxREjuKyKca)F04hm|4I141cCJRkHL-JB z^wfawk25S|V~rSDTg=sUNS>x)upYA>7+zbCM!Z00?s)Wa+cIiI_9yQ<8}U6* zabv}QN)djniC*M?Emu@z)l*~{wUI9Z`HQ)cBLb}ut8R7?c?9Sr1my=rT5L3<{Kv$2Er==sfHh-v(ZVqlAiAhZL}2 z#pC3%Aeem9ZP(7SQ=|Jz@&g}+<=d^T!7Yj>AE)*SaScX%{mi@glsBA>r#D&x!&SxS z8=lqrf`W*7RkMNb)tdbjz&(}Pu5H?Kl>$O#!}y`U>+LilaplFL9fu>4ukAmk$AoEb z1AfSAArK4C^xYy6RsYyw(<)D2N1SDc%Us_V=qz_qI09!35C;IddfBMapqU(Knlvwt z1K+eGH*PuapfDn{9_+&A>#;%l2uCGw0)Q2P9sIa!hw!z~)3i_90!{>q=4{l6+`xX0 zbpLz3|F+4>!XLN!JX-(og$urDD!i=l(h(zpG3|W;_vYunKomB&@z<8A=26!_yCUue zE@cXJVk8yyz>6=?JXCX2Sf0TgS0}Lwes#*#^@GZ`hPW{m+2G%hZFMoS4?ck{r-yIB z&85A-f0`X*HAApzuku0iAQF?i@9k$-H%%=e&l16#V+LcTF9=jFi<1{uF~W4pjj!M) z(4bMvx%rVBjx6VGUe3*q%4LlRSezWE6z~xY--!mNwS$*b9=h#chowHhVe~Fr1W*CI zJJUT5+srPXd+qiq@qO;N(#`E*A?}RA3~|yd!6^SymE-%uLf(e}o(xbAYyu5z%r7xljqRpz)1>YPscmJY9nu~89 zc)R@Skz@dPqoSd2ik0}HIqgY-(IMb|vyY-4+Uk21?EJlbDlf7X0E`0g2=>BMFuXZa`Q)V>= z0^X>dh{x{ZvjO-RvI4aj^Dy?8xD9F;f4D&!V^nNCf{(kN8A-O#6-=m zt*AVVfU%WdkVPYuhK@O#0&>O4GI-=yHEyxxTp_aP!&vAm{?{SG5AW9r`T_J_+) zu-~n2L8ojzb-U88qcU+r{wx7Mnrc^Rbw<|-xG|BB;~0GW51rq?51x z=e}ndB2(FVpOSp22Qf(78HWU2EQ?1vCLc|KJ?GlebWEL2A2->CCGspoWIHzJ=MC({ zWXje6A^MiuzLCEBGKPOeTlX9~r}3XWt!<#Uf5%*Xb%43lM2m~X z7kK+L7eIV#ANJD{QsnC4`pp8{3ZM^J5V$GyxE{|~YWaTi^BZjsT6P)g4(nGZd#Woq zN>vdDTMrEM1v!WXE>sv9^YHA8UUBZM9Ti5}smKph1gS@aSw4D#13s zGc$8A=ShxJ%&;_{*Gb1RgCO5Ka#$B^4SYp_g&SsPjP>ZH%Vfc+a{cJ2=4CAN=|!~C z*5YdGM^7P&!mM&?sS)I5lWcvBD!6NzWEs}=Z(#8UcHUFY>-C97K@8=?I5pMs2FaX9 z3&i;K{{NmYGDz@EE2;|}xVP8C=2kuq8Z08UDDIiU|A>O{E5_u8kkmIn{$6Jh`JkR+ za_-)}k4C}xa6@>PmKt8}i}>}+qa1bVb(Yp~u?k-^PN3t2yVFzQwBLFqPi|14<8KZP^I@iKWRz)NFH7U*Hf3x-ul{Dpv55)PB~A)ipKa&&^d6V-F>Ec4*vpYRS3$GuCNRNh^s z%b5q|MjxqV^ggXj9dblP@FBJ|P2h@rpTDvqVs{A^) z!qT=IK+#DnFM9SWlT&0Ww<8_?Y1a=a+xBQi)+|4}%MtRghegqw$0^fAalt9rhPZzE z3wueGIvno&Z#TpYu7$Fl)cQXsCY9}2l?ShJ# zf)_rj3F8A^wC$CkpZ;pD1OnQ(DM;)@ArEJYTOQ>{G*H3KpN| z`3RoD^}Ac=0c!uWNqTATO49<@A1FQJjj;FS+*+%YY4TzMTLgsV>#rKb3Xcc8jysHP z%WNkB{0_vQ#|~@kna0(EVD37t1*D{mnp_Z$c%65zID5Tja!auS7($Okey67vi#!cp zpyK;Gz*p@SJP6x#h8`1b?kq^28E*;+Qg?{ZV;o3Q>8Q0DHnLS2dE6KpILNiOKL$B} z*6#PiKXxykU|)*d18hU|C%JygIHroyIAwlmwOMV6ab^L56X;jY6nbc{|9@sku131uJx5g`0nyI@1oGx&pjBOSagn&E^o{lsM-(#SlT zkw!rve?_IQaTq?i-iWuUc#?H59V4IwCb+fq1d)HC*I~R2(F^Kcq8Iw!FWIn-h5A9# z4H&=c*5MZofkW!USS3No#y6blI$tN2WZm&h~{=ean57Zm0SMD`mSwZzj8S^1a4 z63Iqp0xCXiq|@-gYv4D2PfY5RF z5WO|lv#TKElJ?65Bnf9!DvKn})~m zRU>@LSuj|ec8J_7c@e&g3@&KSD}$du6_BE#_pK2XV)O0PkKN2Ob(N;OXU!7K^*6rM zsZ|<9ypv4R0|8G7;$BxW8|)&d3y)xU;0vugkeQ{M^o{OD{CHIJgj?Ua7CViAxIY=#v4AL2)tj&UP z@evHJQbfmbnz^otyCD}uO^$*)YKI!*)*bil_UMtEEZ9j`wJv#j@Y6U~KQ!0hPtO<8 z7+;62A60iKa!|Tx>iO&86{?_rF~(s(=_7 zh3<=fPr&8~JWpV;UnJyM(}g-u^4Ue>@IDsrO1>Djv*|*3CY>J}!cP8>l_X6Nb%pT1iGn=u)ZvYHB`gb-a7#So~hc|i) z%&C{HAZ0?>#EQq5bE;3>U-DvmDHzu&33um!2$=s)la1cP3s)+#Xk8_Q&f}doFTMA0 zqF?qT)L<%?AAfhSLC&6y#hsCQ>P%z2ZE$kTC+loY1?eHE!8y)Z_L4Xv!B+O4>QulhU^`to;AA?aNDt1@QzFiZY;w{R3=%tn90Gjy zhp(H#sH@`=Gk|rqbi9yDqyy)!0*O5oh6tAaUFN}&Av~pYPY!r#RG+sK5;4jM8HGi0 zc6D*oC+TRZ)WG0z#KR|n1Adv!&rNsuyh?pvi|P%ChlCmxFf!kH+CNSc#(E}>bldyf zJQ?Lff6V33x7TuB)^}|;Dnv=UP|@@yH3*VTrv!GW4)ffa&zA|kX1cmcV(2F@rH?}O z?zld~Z2TC5$i1CdIC1wB?qrXUOkn<1jk67{20mddLE!T-dvye)RhEv3!f3qYT=Loj z1u_zBF(xYI?&?g> z>5t^bVUtXd5s{}q&d?i|u8XFtLN2100EVvsYgj0CVPsF@X~CfiF97+6qO%sz`={%1 zpygl4IUP0vhU zKS8z)*6w{r@U(F9e46n9=3LzlYVK{TSjL7ib!bcqP3~f1#2_f;Kh!#n zBII-(kcp1m1OqY61X=XRX(;gjEu(!C9;F>FlN}xc{#y1jzCxxg1Zu?h)l&=nuS2{L z|NI{5j9k;+!d?dXhW*9aRMR8%H-R6Tkp7n+>#y$lZ3PmxSQ7RsC)~3ts;av^Q^mp^ zz6A#f>4TlbhR-I~?Q2&=p$648DA(Cr{d)3G_@_Mx{!N1XH|x!U!fDu ztHv%QxrunfBpGD7!Z+PMnX|dxvKXl8yWLfU?UV|lGPy_GCDlO(;g{cMwNNPZe*;~db;7pwQ6cb>%`HA>L@Rr^EUo5*Hy+IVT*KvZk z?`!0!ElUj?fora04}0#@08sB%VY4wT^YmDL)SdN1+F{d-FxVo(Y?cYg25+}_zJ_f>mQx!{V%j8Tz40P14p77 zZ(;=q@(gVUGGyH6uhu;~{45ZipUQ|y`%;vgp$A%6XPq4!W2`O`mRbGT68l&KHWO5Q zvX6sXDFO$R*2M^-C{&yyNCB7-R1RgEqpp zNB7Sp1mB%$hH<3mX0F}}%Vfh-}N*M>}HzXu=uk#^9Tu99ht4NOH7q z(#Y#rnz-Du*_zRu-ux=3IZb&`dynO-Zku1LtdW|p^hwrD=P&fC8y@e#G&;{9nP<^y zxVt;fdq_@O;+eA>48Xvk?N=YU+a7VZJ>=hsibvsZzNJ@;8+Plb*}tbxN>M8iv5uy! zoW5GIi1-Y*INyAtqB%Z(4tZnoqsD-Fz|1UFvekC_KK7cYk!WjfW8L&WYG1ZJHVMT+ zWi|~F;tSOP8xiv!S;%o z4UeZ=9;LsmJpVK4tB1uGdOOQ?4W%~U;{FxvHk|tV_xD|w4muZsC`%trM7t>?Ktq60 zj%}Mw71g+ut6tRLAFnKuP<@Ox<)tmr?^b`gYa8pO9RKf7tGYP(@Ytp+kdPhJPYBhs zL(7GMEbm}AG)O;xh>$eX^`s(kLm=y z@ls?QuW%yix^2hx#RL7n56tI&_izH+7i~C-ZhCQ;zahff8NRQj`^bKchP(Ovmq)+0 zxcfL?nRfZO;kA0Fi~Se38agT^hV?vub z0Bn=V(?ZSp>i@f26_Q57`5ei3#LEEhDN?J*0Kaaa*0pg?Eq=V+I{y9~GLKf?W*c0X za{*_bt{=DENrw@t{P2bRy;yL)?%qzuln+v&H+SpOq3~VCDNMTu=3f_+p5ZzPtd4=S z4hJXx*PSc}(RaEN-_EncV})lu%)@Tu879~M(k0bAVdx6~y>PZz|H1ZOT08?f&oD|} zf8nh)jc*sva>!&gS86jxj=bEx|38wGKDyIgr`_GiNk8Dr&FK!kf59#&dwT9!mc}?s z-P3rbUUys?d~M30EbQC_$6#uo-^Yf;GlyT?YQI*t?9o{1f53AG)dC3@ZO@tC|Ih7H zuiHDX+qOJkVpKJUJpQNZyYJje8@qE`Sit?$leCOlx?24VTOGnI=M|=HJiBKj!-;i0 zxJBbqQuK{q^eiRMm@oIGaJ%T;bcgPSs)| zdnV%QK3&qXXYBoX*32R0t=W+G**35$rWfXBnr_=&Y6P5;s$!BeD(FanzfX@XgZd{~ z(PoZ@$fs{#Sab?<5y!9GRD1M8@LcJE&_ zdUEXSs7&n@{+fn~8h=yvXOv+f^+23B^8^W>jFoMv9t)}dxDT)`4S*nq14G^U19VKX zl0j@{)Fd<**E6lw#I;UV&&L+Gkq%vD$CH0ME?+$1I@0mwU%p!{%Mk-Exh$hQ+tlBa z=su859m>f5&QYuSGK3r$IFj+=T*kmpK(EQB?mo_1v}<4n#1z|kF`3k&>a}0_RN0wf z9^f6>xAggTF5KeM!82AT9vN?aR6Wse%vzwU2pQ`iTwAEpp+JY145e`sVd$ku)Sw=S8k!+>YI@mzIT8&f=hkV zYI6FbSMDk!4e|sd@wz+ri&g)8=YwNESKk{ZS;vG677E_p_p!dPA)(q4+G;qV^gEdy zGBdJw=+fiATM^IY6)}c+r?e1C+(>$?w(tyy{~WIE>^f$UUDpR|8lSu)$ByVWqv{zXyIEPuq;ZWjE8o+!!HFdxk&9T5Hp5BzxDtpDo1 zT)UfQAF5*Fc!=@($f{4zPA?>yo5&m2EfcYgQ}pPq;#x_%@h+67c9K)+caQSgyf!f z-=kH1A=fwXt=5F|Ppu16D8I6Oz0y?~SEH7WLI(&tPQ0*sAHvV?XOG#5M-e6V0&pxj zAMK0dYNe2&?wK;wZV`{xFNWzfa}c-=AabP7NPg^%$GgPt^HAVUbz2=P%(6g&R{ zh5f~o3M@*2YAMTk2CFtIA%G6e@@1u`^CVCmVB^c#^xxXhX)z|Fr$hT?&*=@7V<$68 zJCf(>{_ZF)%ccyK)uYmFmkJc4jkCg43O@nXDlv!s_F*KK&wj;MP5KnUC zmrDUq^Z3Ack|7V%ygtljJy29y5%hv!mTSKx3HM9^Qeg4`DG=XPTH!qEw4nby1oG8= zg8$btKxI-0b~dp&9WsE{{Z;{Y{*6`1XpaROCi2Wyv3X2t1S&+xQt71ThS(ESa+ZBC zyXQfL8e>pXQKAm6Qab0ytqofS`6);91Ws}s;#Ze-QH;=9g@&4Ei`mNM9Hz zbNOA2j-Gw4Jy!4Sq+AVE6U2Yiud%+bn(~7TMrHMT)**-b+6twxqk~qI3+Ub1j~7pC2?N1(->9^fLgBtRpNv^&9hMg zLgM^s%cvTS{!F+VptLkQD=7P;8pg%^>fafnXAk1OT~zkAz&$EPJu_kk)n~lV-g(z# zmN5m~8dR&a+`bwIXEn=IhYNVOKob=Qf_&NU3P5*DIF&Xl#XD`1SuX&N%|?DQD(XLy zgU#U<b^JGD?GJxZoUvF#aaah@CsUszv>)-h<-3oDu3YXO>L0*uwVL&YENok zi{MTtg^)9uOq~c7ntZ;AIU}_^XuVZvO@(1?FqO*#?Y z0ML&9ORo+#IW&=t`cxFof$==&uyy4{SKl0Z_9QDjpHg4d@T(GYzZd3fECs+lL-;Yu zs6gA96}XG;dF{v5%gudkZ`y4U;6o4xtRtkWR(?CJ*2ab~-_dX4TY+5rUT{qVLoF@B zj8AglxodiJ-SxZ!7MXb|G3fzfUf{LD8^iYVy{9Wa^(@{4yO1D9s05M^`Wzdo2 zoIN+WYROkTt#1VX+6kQ7m^?%D!c@|8tVCUpGW~?=Z7&5{QC|krkqzPI$EQlkkP771 zd5_KX>FiEG(}w6xxtrXAE_{u=e&bY8!h@W!hXHD(nI0OFR#E1gu!=)mJrbM9}+p4zVhILU?TLq^rQddtyi z^ZtU#w6pB@pFBA9DX57Ng5h-9dY1xJd1)Q2yYw$q|AF+XxNx7>jm>c!!iu)P$*Vl> z_fwaDam@-S+TI5>htt6)$1HxlMuc{IxVL~HDKkK! zRsAhPkk(2o%860^-KIdy7;udTu$zrb5@W2{03{Hk>$k2lCoO?`_&D7RCkc`L}TB9gU-TX1WP{T z1r>xskDkt1Wv&*?Bi4Ps!F!I(KkcXU5u$9Kf}9EoGhl&JEKS?FErFk7u2Zx-i?ypy zO{q7utjdTwG7yGM=Iw!Pmk}CKDt$CUpagT7qAov(3zQ(e`3_bVt9o5#rJ=L98Z?%N z`I}Aox#=q)^ebcmpp>Zf&{cxP_R$?M9g6n6k4`UltS^_dV)}4o6z@`uH#=3@%f-~! zsoGmNK>9p2e7zd$hKv%ws~dhwDN(6V=r?na^>k$PSLnqYuZ;imTZRV`XlditvFZ~f z6h)`c=G7(hlY>pc^p`UQ<`=M}^C9G$INy4k^@dQWr?kVH`?_C%;YpEI0M&a^Br2w* zccHmdMl1qSP!x~~C{t-7hF%Lq1;(gJ6c<-zxBZ{Csc=EDVB>mEi>}4lnN7CuPa%xK zN&yFh=V2Dm6f%y2+Juba9IYL~T$gFfDGo~D)pvzsKj0L|{^zTC$PrfYaoL{T^wH)c#1SVdbSc(y7PWR)raNi z)y6M|lAvp_LW2Y|T^6l=(Y!FlrZX%om`YJ;byNDktO6}m(QM(1*8XB-CSACjP2^oV zw93%BM|WSLhi7oW1y+;?#acyNtw*#v937}31+E3w4K-sjo~|!p<5VbElTq~&nGUZA zu4Kls>pjy?7%dyTFk7O{eF#SUUc2G4qS$^zXVdK*!qKVS2EJ@`6|fWo(pkEsll;Qr zXJc|F*Uw`iJK0XBH$W$XtCF>-=06uL{l?oaa=LVrSBf_cM^lno%npRW;sH&u!Isi` zw@DD8OeRiUg&@j8vO9mi4Ts8c?vl{;k8P1( z%{>y-!cH~AD#>VX@mnz`zb}3SQ=^H9A-Im}M=&%9F)-mMjl5*_!sdfIhs^N-?IaU; z7KCbXfxoKmVoV!-y}FgyfhM+}6gkjvj?RzQtA)*BhURR;=P+Y)iKX7kKbSf|F_Z~# zS#$IcaI{>nnn{6IiwKnDZx5-#$@B1R@BHk|-yEI-iI|{|Nqg6AItbfp9e9<^EwO{) znaCokzZ%NyvE`3gvE|zi*asf}6$r*DPQk=NF&0hlmRz`GL@d+g5*=|Z9a$p{w!ZE1 zUk3az2Nnf#3kD1y?$7%%FkCumT}?&eqp-IC(zZOJiJ$feo0hD4?aXLjyLt zUx$bs2})hc{4-Rvb1kqy3btUwR3yEX7Pl@_2)7aB?4F$w8M`>w?XxDfW-HJ(cnYQj zI(K01ZE*B#f3!6RL$08qLVit&MjaA@?&nGZD^ zm5lf;ig&SA-u1Q!KDMdnlyTXRqTuIFkj(y=5*K;uFpvpzQSWlG zkdm`ZL5}o)oB%G%0*4fnsD>;4+xf5FT5tXOb?e3N$vM*Gk5V2w`+7Gy-C zWG@DEp;dOKm+OlKW%p8a9<8G|wfo9s+RDIX{ni*%kr+8dPRj}R$_-yf`MI;~+s>S! z=-eUyCVK?t@L&c9|AC^jI7H-e)m&v*4WL@D7*zp4(A8ilN6LrOw&XY(y$O;rKjRxT zLFyx_Mq0e+*ptYC7HmOq=!k)l;5&3>N(Qo&jwt11GRjxS4u(~;)i%dy{ARy(0^sh2 zj%0n@;7UQ0CAigK?2Hs%#m#E6ZhbVb$s5)5mce&M0%5TrjU0;Ym_cbCIM!tMi42F! zpM7qYM*(q$4GXp%j&|pHWq;<$bsQ+5Wp>StR%7UFB853oNJSJyI(?-;I*SBsy8ZS#f3tn~v0xn7$ROt<0i& zgNs9Paj&Fs9yec}y4$og@#HApR{?l;=g8aJ`}dk0O}c!#7EbwL1g;r6TN<}9AqS|cI7l3cw;(G~SJ6{-jx z#^{!+=qOh>Rv+k1wkxrrL^XI~yJ$~-w<91yIAR6rpump)Tw18p^mPm-v)kKz%GRr-Et4H+F~eQFDN{fjv0PK2GW zBJ}!R^uB}Wn6|$@g}d)nAp6+sFtHldoTIzw^bUcRSOF~x-@&{nD89M_x$K`D=&3A$QHtr8sqrJ+-b%2GhLEjTGZ9^xjo z@5(7rY4k$6YpO-6G)N)XO zjOfx!EC_;o1-&ADVPie`wsG4n5;X?i4|rByh_jWQ{j8y*v>3G%13D8#jk^b&&fZL` zOW%n8XP}B)^_6f5^=j*Fv1$!qFoO;Y;dF0PSe$Qq+#gbZ&XJEkcad@6RU1QqqG!*DEb1Q<2|h4uMQ zgvCPpr5N)ptZfX|YE)lOMtnrZ>q&@u6cU}G<1Qg($}mGRYz+g=6t6lRL!wS()vU+Y zZbv8pdmVw8QWuSkQGFWssE<^=T{2lZN{ZFHjGZz$%2Xdwv_IHDK>%?XQq_7OvDbxI z#85xwNI48Y^Y6B4;Fx|+HV(3Se*WvfP!&y_c}6{r#mpzI`mJb!;^cVst@IUyO`MlV z#mtpM7`8&bcECG4VYja-dS}mu4p- z+}yjKp5ve6FA{h+J4KA8bfdK6!pCjO^EB$ndn1qc+81bA1|;q0R4qKWQoFy_xII(l zcmMs+QRO*x;j3qNkwFrm_E{N$#b*l4_r8OI2dV$8R1K@vD6E%}tdXQeSc` zVok4C)JC`!1H-@Su>r)QsB*B% z>Y-g2U<`A?-prSXXraLPNbBuczG*f+cpZFRJ#oxEC~snumG2}6nz%d^7HIqDTTuYx zS!oFOoacgaJ5w;Z@Xnw#D)xoP;QSb0-MuzOfK>`dN?8m#H!{+|T;_=hH1dQ-=|f}q zXk8PCpYDk)xd63>(h3$$jevuY!Z%%K(aL3LvD&d&D7F;S0^qZFZd0NiI{URiv0BC^ z(Moj|4WJUVk+;xqIYH1*m5_o~wCx`(w8KEzB64;;|qn(>lXyAQY_QPqcBV#hB2-?ibTbML81l(u3|>ryTdN z4E`kAjJ)M*g{Q89y9$Go%eLe>KbV)Jtj5cHoIY8EbrX*@x4cw$bE=Jx$#FowE#p%* z8t?Mu9i|1HHeRY=Z)Ub7G~^@81zMG2p8x)v5kq+glqt-U7kjs-BQ$a&Vtaa()RL#v zT&u-*!4{i-CR%r5@F+`jvX}#^NV=!*2{nc!vG5k-qN}adqy`o#G34K~l;I7buua*+ z7%12>W2tG)mn^W5^>wP+of-%FS(ZnE{7kxNzKw?d%Pqd?z2^HQ2G@w+0+=zw^GwYM z*Rl`{3$Sn+HwG)VydM~N-6|r)2{^dfjygp_ZR`_uggY*=St>Stbfw&96}CMt25mZS z)Dg^E(wyPv=ezjfvh62kl{1P8mbCD%$K+cZ+f+=F#?OH)-qFBr4s97WU^p^01WajL z`Ic{SD$~Xj9kv!vrY54j2w-*>@faY+{l7V2oWMuvffcCX>U}TuRlvNXkW7JdB z4tkaF1m=1ZUEOcoOj&9%m*GI215_lAMTwG;@HlLi_MLI}D1HBZYPe6&yT!l5)3 z!BoVoIpu(BKi&Mftz%H_3Wi#eh^I9iLv#%g+FD?_5Vn8G!WrqxsUMs(Q9~5`{4jm~ zY}+4(XEtPM7f2W9xFSiS-0qD4D@XaEkW0qhz5JZTAE!Ujda<|I`GF&t95yzIseU!b zCJJ}bRk${{h7BFVE%M1dllo&!&CS%jjU|v6i}yUB>6k>AX<-0Ak@?t#vy{Jw$SiQl zynyyF=(1QmKx5A!X72UWzAlc>j2A>{W&adx$l$F@ijOnJEeNvLhRV{%@ph{V=l7-X zwO_Y;lQd%Ti;u^O4)x^P7NzR?`Xwoe581gC9dg?oRb2A3W86cJ^Y^9;c_ykcq@e?E zs|)M>_l1D{M*3d-eR{aJEUr+Ba>ts*Iq}r6B_YqoV5qoxgKOo@G9vF~#6$?wq|-ov zSRGwg>m*3Ml)4+!bEK?00dEu~WNto+=%QrFF`|%eVj4UDSO#BLDSqtsU=&1Nv7@|S z1gg%rf;(0Z&{nD{*ip1Dn}_|@vwauldxcxGSFLUq)iLyGj4KW%kaZW>p15c!(B@q+ z34N&N;E6bt3ssIUCw578H^Y-UJ+)+_QkMTT{O6&^E(`Z}K@2$lLD7p>yzE{AtvSF+ z4I1at_^?T#Hy+uR22?8ZrK(N~g*%t!L;>5}kMKW=&N8m4zYoLfAjjw)-HiyMGREi{ zDN>FU5fM-k5oH@28{OTVDj*;>qf-Gv!N7q9hzf}QL6JRs_HM8C`F(cI@0{~J_jTRT zHU2xRqC-1LT(u}%=qGdjp>W&RA~_TZLo%-yVo;=`gNDgouv|)YNgpemZV!gayY%Du zk#Dp`A#(88PW*Ac9=c`3o!D>PlY=}y3L=*$_0S4>-y0DR87FwUvVfH*{d`xaC*tCC zzXL^dXFIdnYXwOxGVWWH_1eF>o~O~lGCX=*uO|is4KR2^e{_2PKLuB%TS+sI1P!6a zted(gY>SXxzV2MYa$;hLYa?zi4!1An>kps7MKru~Ll1fKv2OqKC#D26XQ6@!BDSit zy@gYAqEEMyzK}S$X@neqRdtyj#)U%_1Mv#pTkJjz+(d<7?&qM|aq9K!mx&Q%E|<8d z!r*?qtg1HRY(E9z3jm8QRx?m7?OXZtfwK91o$CG(Vsh7)rcZ9#DMo7Ami99;-&u7d zSM>N}Ur2_`boQWVss=lRly6Ey=#yU5D~EEQsJ>026NuZ2ciTVND}T(@I#K%Y)df^_ z%+7hox~s8ip?95fAU9x!c z3`FUleJLRTls3>KOHdg?IuQm;Td)lAEe*I&4pR)Xk|gEc^75oj#Bp(Md#{rbi`tpF z=^iSp@!qyoPX@m;0OS-ehUYqau~YF6dj@nOIw;d3)@HYKJImZ%zR2ecmG9Zv^w8ih z%BF8h^xDhkG$;8R1xPLbw8cMPpS+PzkVM44eXGXk-cfj6fIawg3&4k!7rVbTY!+5S z)!*bTxIk)&hJjca2ZD|7ED_Z!!c|CJ~^9`Qpq%Hd6Z|C3HX9+0x zPk*OlGC9h*cwn@VkYKnf<-ZbuwrgDAiAd?qKblD!{XQ-I%!eYazQ+s!jZ}MQnKL!$S}yuTzDu-{yY{T zMb|dY*Dke!mcC>Yok&oBmazX8zdxsD7zJ%GQg8x*BLMbRDBj=MeElp-6E%lx{>Uqn~%x4++Q?qDpM7)xFL_WGA=nE1tpXv+=e(Pgq6VBsByp>)IaMb*zWZ zw-R#Wi(460rb-c5F(gx|h%&h1_GeH{P#2i0h9Vl2AZIU165!OL65buOKvRiUO$mF( zzDL(ybJo73v?Ii1B*}C2Qi{Pz!7s|#9S~wjjNOWm(VRuw zh)`Rvu|q2LsT;m8w!#r%@$7y@&~Qahuh$!sin)E$H~YuVa0xi-!X)#!?&(%Ks1#OY z)7Hkp+zUL@QJKLEWDANLa^<+=fBbi`RToUSi#w37tBY0(x!t1xh-}V8s+x_-hBR06 zgd5(%%T#;}Erp=3-;4Ysc-7{GEdts4^DYB`242JRWZ7U^_v4;G+2~|z%;U?Yd4X|C zttIPu+#_4C#V^8+L}3kdyeApj9d=IfKYo`Ps6%zT534M-(fD?gqJ2%cy+Fg{xR9k{ zqn+!eEV)LzYmI)d8!$D_W&p_NKMl*RS}*Q{KgV;VdT3%tMz3Baa=R(!5C7HdN(Bro zNHv)a;D}LBAdQX+Oh;@j_gySun1%XJmD^&gh)=*wkOffLzB&FW)=ISXR=#bedMMZy zg%GGIyPQ}^MF|ms-#UT6ElQ9Az=)`8)y8#va&77lQd-uzyW_7lB2)RIuc4Y8)Bvym zBE%6OV*M56Ro#7B0QzLT?7=wXXbH-1>&%g2uh!r7Uf0>TtPzk&6Ugi?n5a>(aN01~ zvhiE|?bEGV%dO77WxZ>5o;lf<`(_F*9`oi1{xhm!f5YKd;( zsNyr{>DC3mU6J1UNe9$c=SLPB&Yb~6yhXDt=uy!w$cuNmm@-)=wM82_y^IBdC5 zuIP$Ene@1j-F;!R4k2BkUUSmz#S+x3l7{fVrktpq;`VL#_52seJC0kh(tfVqDDFN? z<1aKDS+>#x8$je>OW9m4kGGdvdg+x$DN1%0f7UZ6k)rY|M?jx#Grq5A1$ zHE+RI0?2ff&%7UOuR?x}q?Z=4XLzc%K$&f>Y(1cgi#u<=ZTofqI<2)OWavurN$52ZdT`@ko!xq@n75cDqCj@W3oC1&&2)U^7sIR-Kp{Jc&yz78mIWXRYn8(|#E9b;ShQ={qE z8^n$3JJ)=XlUUvk4DxPAP#ia!lzu#>9l6w4G}w<+BdYOrx&l_QK83bb?VS~mB8Aia z1lB|HTC2;>kIM!CM;9()xIFI@OPfqm?`W2`Nv4YJF|rxt)@yM@V@&ID9HdMKWxy9S;3$|gSF<)58en0*VF@dcjIdP)4Y;494$*-ie@uy_Z zu%o<}jwZL0kZo9R@Y{&;fBZ1hG3vomdIz$yzlzO5V)~^A3jo^+Exd+v!snSTYazeg znCgz`>-35H)1A>)=+R$xx%Q4-q-zFk5AGzCKI-Sb{l=&075W}mG(KaXzXS0w0`}-l z&-jK`YY}RUM_@uD-0eiqgpUPsWqLsqwm7vAsD(HqJ-xWO{QU$p;2ppX1vf)Mzhd~m zcJRLG;QQmp^A*KrePwCx0FoMyg2}r4KS_Kv6r6y9=dri~b&-)QusaXL5e1K%fqYZ+ zx|$6yC2&O@@b|G6o2!wz7^LhhJU`>c4;$V=jEdvY{$CoeDZWpWG&^!SxXN_7;$g^E zX+z}f>x-V9X=`&*zAYC;jD+n4o2RgRdMyR(ExXodWorOdggA?T0$mdGiz|1lh~`Zx zWUS*P4IaJMlM~u+{3jy*sA72c8fqeK$Y%z6>c#>x2l^yV*t8!c(+|?b4hPnR2kO3e z%U%xbfV?|Cz4T~0*?)TJ0PNbqJIs2|&R8!we7`dTyNcraiQ-zrZ2X+z=YGce$Kv`& z;=7GuZ>(Wf)=*q|y2wT%7Y&1K$mZIbj3`CD&Uv>=BrIw5CqKj>&&^v^RltS*34nOU z$dbr(ETRnXQL0}W3$EpZZT-m@JurZ{YG+=Q3 zL7N7h&&6L$5p<5o(_4-*{ukH76P>zMs&-CzbFSO5Ov~t8UX$pu?if_L+>W&nP?jgmsNGJoyBkvs?T@C`9|=`danI zS_kWB*3bGUth!46eZmH<8p+;z;@;+F$cfTpYZ;P3CLe_l+C^7ybw80hR!-K&8yAUjNJQd?wlF9+$iGn5hd- zTYm@iU?~IJkK~2DZbZ!czqob6D0dV4@%A^=(#7BGxdI2lD=-wl2wQVcWrk(O$(d@$ zRnM$gFi?_Q4$ZnaicD9+rwORTN{0(u&DOmrKf4TYIAn3{A`0hg6=aJGL zl8IeTt(B;Xc{5>Obl6r%$E%jeIg``ew7Kpcd_X6s73uO9sPf1wj;Y)%3RQg|`lG`5 z>gHT3WoP(ZoApzabnOSe9MmJ+P1e7fp&w_Id;oCeM?I=2j2#8CfAj;LU)DUKgQy4Q zS7O#4ylC|h5PpXK z{=ixJ!sA1=)hJT+Ae2wW!CCc$oCTamTs{5Ci2y2GfNHI{$HxAN{m$;aqtkrj_|WEC z!NB?Aud-Se*Ev*(`g?pnHwSF*(D$fP9}J3Pi|;CAW@> zQ8oQ(^v&J)>&STf>*5gF=t{Q-=~q7;CKvH0)Y$Fy zVeo{Z0@@)^Zo0-NDq8i3yJCx5hT`|Al3o$w5_HCjEyYj3@?KFjUY6KaxS#lYktGY2 zQm=Zno%-2{{H5=9{-)57{d#?Ev zMrZ(8h#HjBb7AOI{%X(k!a*@MKoLzmR6&=C^x2wYAgqOjLZKSU`ls#-p<&9ZR%aZr zw$i^@NpY4nJpIi{Pv#mR7aZ5^9K@vA>xZ3G1Z`Mt*0s6p83Q8CaeZom zE&)EeN#bHmF2DA1xsex8?YBZ{A1!P7r`!gA?scd50VqdHJ1TMBA5`(%pW~NbSVeAN zD(^f#3q%wPgBD-m@gjIPq)EYbb@?MdBj_HjbMqGREHj!hKq2Vsm}<6V?xFjttcFV_ zE+5Dfv=2lNb!0)c825a4Dc*{EaACkvp~#ACsxKf%v^7v(yJHK_Ot>bo5i@4dRll9A+X{Xhak`opkJ!S$0UUAM$shX^q;$fLT2s%ICXuTTD)5lIsnqIm)tt9d( zh3oXD;ER1-zMe~Vp42bFTD`+s4#RxK#9_0cHPp@0ZO1m34-wyIATkl8Y9gRnam2#< z+cwO&nPj8r8L*|J>@IMHbj9H$)*Z~x|c~Ejr7h$G3AXuIa)fF-H;C`)zd%OkV!f$0M&&Oy; zQEXD<_6M4)J>)K2Sh3~$QX3S>ypx8c=)c=WT6)QgUPn-bS`<%T@M}@!PdO_zx4xo! z!ePjc)Ff27=X4mq7s%CFY++cY>?7t}r6`zOc1YH@zU5%#%wkT4y@0<`lt-sT-IA8Z z`M4{dHoo1XB^I00i}mWyenPXcs^b*BQ|Gg}RnHW59uN7IVSWFj;Ijkccs2F9aL*$P z!CVwOY>+A&j!qS$O3e}AIH^_H%CQW4DRjF3qgMsTJ|V0Vm`G98U_>5x#jT4KrX5Uf zcSn9sft45N<;&d)Q!Niv{*PZ)(_GbR8z;Sp0_!$t(7(CkzVWrK@S4^S9^4pXh}sA8 z`~3D1pY+Pg?6WN31y$*L+GLzhcx2MD&3AX-I$T(vVv0B|mlLHGK@0ju6EQ(Md1lUJ z7lx*TUdefmbQMk0UGqG}<*8El`bw-mbBNZ4Gu#FVLWHEFf`fu&Y!Z$qfMF4}Dhr1c zT5zPoreYMat#>vxCLkXBF)Tza4D_*gHB8Zord}AS;W0tHErO$R8-7d`_ElHzSR4%?Z+5nsEr#v_3lR`+djO z1M0g55^cZ_>NlgaDcM7F=wt#zGk!%S1a(A_Ee4TXCc;#U$tZ5RPK`;eoBcdi&Pvw; zRlFm_dtwN$jtda9cG`&pDoB?Tt@)8TnOD~o#4?*{iBEknWt@iI z=MLP9Je$xGyprOVPgTSTa{ExX*B>-@YBOFSm*J^e5*S@MnB+^wf5&K3U(1x6QA*X6&KQKhM3U|Knrz7qx|j(q zic*Jw1$9s_uhn?>x5ahP<5+a!B6+YzZgA{Aed`3huU4I+GAys>Yp=5CQoO2w6Ua$T zL?qeFK#rtR4fSLK&*ufD(OA`jrY5%(_ns6X&9?v2<*(mTcmX+9DyVD^G1wFL7E9Ld zyS?Z3aOZyhAC24TUHM-oo??0M`#};O>-yS~iugaO@!)$jz#}kw9YOOd+m4YmS%lb= zsB}bOz_y_IT?~IY(x$mkxgVs^Pf7dG5P*{#J;%&cNTI7H-C5N&+#(-Gq$UEAuM_EK z_8=huI1Z7X*mpnGME)=rH$GuQ znG4l<9NBA##^8@PfFo<*?S~~h*ZGgB(_-B%=*@X{Yf$enn0*HT+T8LVRt*lwBD3^& z?hBDM)vyj(8MTT(ZSlW|xAp&;{gPwcUTPK+lcaS}j}fa+Y(Z>D5U(-X5Bb)=Q3zEp zY5+s&(^fz3ClrSwivY;V)u2IE1KSnhuMQq{VK}h=_MO_i2Q1@~b4SQ-fn+fzMo|#6 zV&JeUlTT0c-PgxsJ4e)BOVe!hD$&6}!9ts9kqj=2HCSv1 zo%t7{-JyAidr~6#Tq#aI<1akpI!-kKch152Qp?EOyCY6<&IVzwv@og;_H>NzjXJ$&S&w1G>NX0Vh}TNPQz9b!kF~mB%eo#aGeWa z`~c3C4M28~cowEm(uycv7YNTRzc6CE|8~>0(scr0w7q^vNU=!1>ewFiE)aHlkNPSf ztT&c)B5rz6P=t40E%|&O4h*yGyCbrPe0~>oY2CQg*U8Z*N%aJnD zB7k;vO!VyHuyg|aW)uXYYc-^ndaZOMno@D(aeKMjlajI*B`<7GdN2(7aMnP3(LZ!t zKja-2y7r>!uclG2qIg*}BIZ$^3M1*H4X8k%t4z=APl6zgA!xFF>`R`7t!|lXOtOm? z#krv1YnRy;D|4LvND&2f`rn7m^+f`@~;+ww4YWSp?mA zjk4HcNb7R_Ie{BdfByDTZJ2wpW|&(z#ALkT?NQ@=JSs``lbh+HZ^1ek+Yd>p=wz^( zX2UZo)kYHuN%K%hi~|*S+F~))eZ@xKJ<8dN2*DDm0b}pr+j;(b(D3SH|0t^d7J!3| z?CToTtKA;DY||%sk99-aAT4u8Aj@l?&f|x8^0iAj)d5Oy#QyarB9ap^FoR6SUTZ6C zy&u;`%iN-hW8a8$qUQW^Va>!3-k zLMo9KK)fWOV$?9888%10H8NiDR!=wSxJ{Rw0a(Z0lFQ5 zssOMmCKW@XB;8=#Jns~p!FUvs#z6i7i_{SwM(A4GF(Yswu=GYgv?{}*y?~3-e6d`agcSh#$C6-?AO-c zln^t95+7)P%b@E=Q7+HWuXfNAiSQfENeLBA z7u6Q^ihXJOl<^ykxqomh;ZuiZ%KUJN>EesrJ-WdjMNbvtRt(9~LN4wJmi6kPVYg-_ z^b1@NKAt6ZUQmbrkt@NF*v$~y+GO5|k|&%0X8~K-PqIF$HZT=oKTrM$jZMB)sC1kN z5@u<2EO&hYOs^l4eI(h!vUId~l-c!}guzfl*Ir{Ep8s#c^6Aa&a~Hlmc_s;!g<5U_ z`G&v9pun{RMoo21i6?`?;X(i(8LDd|zxk=(bF{}OG-ZfN2UU+q(L;Q@yp|k6gvVl& zrqrKMZf!@Sy}#fs#0WHYJ!v_1os@l3yDo(TOfJ>05!LpC(q;A9XItzHujGt0rq9n#NaL#_Lh zI1W0VC=!@)FSD5dVPqN1GjF?d+-y)xh!d^P2m9;|ofJXO{$(Tvu1B=3O+B{xKs`Hi zs(h$;!l>lsEIkpL^hcDf0D zQ_vIhZq6fVNp(;-6XNok*VGo070p=65VU>V=|d3Iw}bi>yE_y|n%Z32ntjIzO9_Zd z!ASQp4V6NpU;!>=mPD}n7*Jql6pRIQXx~;d5XQA4QjUK;dEmggAL1k{g*wvnJ0RZ8 zWnov&B09f-xLX+`Ph-H_j3)tLe*izJC=;5nV7z#>pIlcK#=+oc1p zRf!iJ_}w80UId(0B5fLYflbg#t2XvC3+Dn*FyrV!!uw!g zZ@OUzO|%Pt6%W$eqEddW$YwGqvVFCsKaDP4>fnWiA_~c0p|6fp)2X0|Z2(^fY4TD1 zT1S_eVGCmH1~&`9UksdFqZnp`0sHXnZ|9MJUO$kDBGVb~()XV{Df_flCW`gpUIg%c zB2=*@p9XM!9|hfGH}xB=9p!5h^`MKzr2#`<=#MX`KO{7Qm8@zbg z*AixR$>bPm5B-S(f(xJy>b8|8i}hR&Gt_=M2bLI|mB=*t`Qv?QM)aQp!Jj%v{v&qJ zx|bF|J61Ze1OEyB=3g4gFbo+<9p0#FOw2u0YDJ<|>uheIl~Q+q%Bs7wy*g7v>|bfM zvZGf16is-xx;N7Nq>rc<@Meiq%cMrk;Om<)UKh~{UE{?x2?UKDg zbU9z63>RRBL)a-9P;Mbj_vVPV8K3RN4MP_5PhU!&HZ!_V+>~%z-}z@okWu{py&?X` z#7}ctwt_z@AIJSze4Li6G&!jGvZ0UNWkF#kBD4|vb6f8R^oEYwx#wB37hT4zEdJHO z_}S&|Zj!3NT)J}SRBf8>*i3z)1ADEOTcb2=$4wC{jX>L&0~_+aOE(QY)bAZ!viFo+ z&rQ{CNT8*7NgmYo!wByBb~@)ehYNj<2weK;b8$ALD33{O^bAk@x8UGQ8or`bc=hq{ z>vQ_;rH5c{CFtm@&v4`;>C@X%q_ z(pQFFn_XbfZ}VSC`^+2>a|ydg6TFGqd9I2ckA7~-uFuOn!PcE$w%XdhHw5Q9_{q7u zF6V@NTobluMDM-qriq8{0&V1@4@$?R**vD3RwJ!cG?nCztDza3i(5%H{iQh0kgSPg zby%xGSFPHsT_-#rEXsR0>b|b^P-7GI(QRz})^pg2MVAznZmE6#99wiyh|izpo}4`J z2U>8hzr31m=;aHLsW2B@dzjy2T`37&zOus3b5Z8w<7P1jbxGyyDXTXysgL4AX4n6~ zq@ogji!@J#iKW6Mr&ba!U6Jf`v97<;A+TQi{aOx9G%PtGuxZI-RKp22>W2%`V2ea`S;z0+*A<6VbW*+$lLvBvmQL!&af*qm9GLy(5&n>fc zyX@5OvgF;8_0EZ{J()-?m6f*o)5QP%QM<(mQl3oO` zP%NrzTov!VbkTs_yAaF--?^e&jK13_swdPo^3eOK!RF-Is(*Yudi@_`N)+OZ13+-L z!<}Y?!P@=VN+(XtMeymit!2dO=t$M{(Yp6i&mE#E4fBJP z%yv#z)`NhEmT*ne7HUEkg{^u^is$rDV&sJ{)C-xWSY~v%8c$!S_x0cBQt0omlevHa zSyNw`SfB&VQ=pw-WOLrteAS-6n z4)r8s3{X6dReRW(#7`gswhqGkEFF!8Bm&kbYRzlo zJht5e0zf4J>up=dmjztK*&QHjo7sqvP{R7?F! zw=c}qD%y=v&DnZsc6qPXYYM@rycBxs2or%#uU2mKS+%--Ixp^@0@OK-A};Taw2QzA z@8wDp|9q;yFBXyZMXIuPOI~?O)tMMSK5T~3b1oP^ukhk08_N~ik)vG9-XOs=&$F0gKT%&SI=vOf* zt}^u623^5s3mgQ!k)ti~qPYKAeNkFNvKUi0Sx?hfkT^pTtkmTUGj$;;>qsv76gRPs8QS8I z?a}brpr}IusAh!uDCu>(UHJ>C>I-Ni0gaE&PL`?yToF$~a zV~gZ;CQ5kqgAF^tm_Bzcp=wT^ySb3B^n#Z3WhJ$(Kmxq-g1l=4BiYD3x65f4JO$m+joREV9VHl#LGenF|IcIEBYV)!jFmLs8Jt^X6jdIv0yiv{ zLs*I7P~kH}rS&~9t3A5tzzpr;rRx!k`=e*UpP-VaHQY|9Ffp#z9}-D&gc}DzlIg9% zN?-Sv?L!?UZ-aCGxrB3v^krIv{$isfd^s%`-)MKo2{xx<0*#gGwSKAWAYZmXvMy%+`)9tG^2mhKI?bkpw{BO@&YlP+gT93RinPcZ z=F|T?Rx@r7J1w&_^U+G~i>xmR!F&bA>>-YD@r(Vl!kf$``eMLMDr(R`%P;wmg#yVc zgNpTtcdv9(e_tx(Q&8W|YGjYp&&@m-P9}Esi3bYL8t~f@;+8x-v47~2=;ZWp(6Lxs zTB!wOy)ExeX-LVI$-{Bf%)mk62=cM z8f7kV952BF%As%yyG*W1vP7}aVz(VnB!trdKQv8@p5;=SE@_{sEFWKvU9bGMe!6~F z#-ToKD8fd&;M5NC`E@Ot^4g5kBgpnR-g6A$xkXUJ<|zVj=#B+q&XAQNQ!IA~AvKHG z0#J^a^Uq^>4J+8tF(KdK$%C3_==<*_Ph(%)cR6{&PqvljAno#NX8LRa^XwJ#%-Q1G z^TqF=tanRZqUCQ`Cd>!owLlPECgu748=e^pK2T7`hjDXwEK!oWYUS%MN1l53Z}9f6 zdF>IL0?(wlqBpwPT+)Wgq0rZJ^1ajNH*EXCSES&`1?PpzZ_KQbXq1%ha{2nwrA2cV zNwnVMwc}d(q~9~0VP73fTUZh~TIBA-0 zjyx2|7M79^h1!%yP_0`n0j11$CV>htamAaG52CX&mc)d&7G4x`O^o$R!)f4-do&qDm_m>ZEI_(s63%$beC3oz6af$9y<# zh-%_l<8V3CGY(;>N0G>W-FRO?3(Z~E66Dxd8yrdHx=r-^reIddlxXMlLApy;GbLsm z#Ir-iqR0k>9@Sgdt_NvCX$LpgpsbMmcV?mu8|OK_c?xd zbhIrqeurMTfX`#f=sh_NX97=8oWA05s$yJR3eQlS!l|bh4Xq7ms`6=>(0HcHcLMCE zRtS0~ZYJ_hE5$(`Qi2*p%IRM~Td~C+EdlCN7X?`xtJB3q&7{2}LD zscFjYxLf9y%oKqPX!X-|KgR^0jP3W{QYzX11|M8g zd~k*AydDfU`r>%f9azwRH5tH-Ad3({QeOD?VdgjEg_IVkh3CkdOH1r;0zoKsF8%NR z-y0y%+E3o)A$dTMvO7rQK*hHU=D0R+&Ba6KmZiV4cP~*v$HelPN0oMS`LlDh@f%Rl zW7Co^+%eH=fEvBl*5MZ1YRn%g2wDptI*e zHvRA!0LsQZcH`r%?DHBqWT7yoMfv#$x#kZJ2TLbZ66@EAEtWT)oGvMBc|38>k)h-a zbM)bRHh!A1PZTrUi%@5P7p?Ct-x)f-6nJHEb?7&f% zuLXC;14V6kJ2ErWt5$ zTZ*<`Fj6$lU4cp`;Ww1&AB3og@+RprCrJ16XHFq=OtNfBcC)_+8^E z)$!nd?6+vu+k0h*lDmq$#fGI7OQ+;$A2q}IZrMM7JhThV@h0(kk$`iLKa5UHnkoaw z`G$k_RkhUY6agR{uZ^bM1U_siBlmOqNN#&L#Iik{-9DoJY@_w_HN_6l*Uu@{2qVbc z^1IJV?{Z_vcZ{?YbKl$pR>pj{dT&|%=&^{1Zoe6dw0D>U5W>Q@oL~_{0tZRLeRp2n z)LN8b9-z(ty}T&Qx+omRJZwDw;N^tI!uR6UFJ2E^pY*n=*=aaOQoC2bc0b`PDXQX6 zy&`cSv9jE47+-&3NYl_#WtSR%LE&gC^yjeD#|X%fU3-5F!}lfiL+W=kcZxEALaqt$ zE|EQt@k67yDUalLZhI5gCg(e&}IYl_h4I5+8lxLY*z z0HSZ6>Sx6lqU^1C>3jVE#54ag@$-&Z1a8e{KsupDJQDy-$HLxr%+AW|`9$)&dHCPH z9HMVER(n z&R=1@?57mV6zTK1`0LUT5-8AYX`XjS>{GPkp5B=so#y<%tqi+y{8*gIt~Ue#Fg5~+ zVS^<}L2zuyD?9+x4Jf`7%HHO6XS!zZ*2_Js9;O;UW7w(OoeHog40S1YPu`2u=3mFv zU(3`@@A907C@X?CtUSFNJlLG;7C(T=A+>d75t=bU6!jhycp#}iclxA_-CNb^$VQJ- z_l#aRq{s9;wS>%tSK=AJu38V>Tx`7+?r%}7tPn~4N!b>MyNf54eZD|ey}xa?_0m60 z2g|nD+xYM1U8{iS(WDoh(jPka)h7T_-GN7UDQ7uZWG+B6lq%V8=3q>_h!;rst)4%i zY%^@gHK_d-GI7L1TUzkiFDjgF^MT0iaMhzv%FQFnhR*o#K}L?VTk%*^DBVG`4F!aY zc)K1lI(;*!bkjSojx>b6%5+W-A2MvC8CdkxD7sI#uX$?R@lLyvN$K(aL4TJMy6p|0 zkx=_t+KGTwXN8Ec@9($zI4gO`FnIx8!VrCo0RT9^zqh*YEo4Og$vMiptKgS$+*lkO zK)GWXs1i%Hh@)y8JHJI1IiUVW3mvY-xr~9W^#H zJ-T6+x?Q4AzB%bY(dgIlQKr=`d1(cooA$u?= zOVxT6^Ud<14rI)<0vv-EHMTh48+vglux*&~<@&zN@9H8QPTypx#%{=|UgjMdQ1v+V z1zF_sfV$yrw(XArGxvk~f|#0LQcW*hcg6`rCoMl0D|jN3ge$v^!)p{3L7M7gJ>T45 zVOTi68?YA*_XY5x(mMNUKT%q()~*Q8QhTv~}-@zyQur01jHn7RPAE!$pn}-BMF_HQBXQK+uTucET25S=vBdTFZ$7cah1O>m7z4vXElK-Ck76Z29!tx3cjF2Gmy&h0V}{z zgMB&V@Zs)7q2@#`^KH4EAF|T&g0d&;!JVrD^46I%D|=ZVsw5RI3f-Trv7z&MdU}%q zWS|4gK%9k&68u5}vO&8LBB0+H48-W}+-;p}Jz{nbKu8U(fJOaiM#|B!004@e zq|Uc>XAsF7e%Rs?)3jBQSSqLTWZ(G<3B-nMzEvX`hL=OF5}p3>(><0vO}(^Shc;}M zB(l72s6MnSNc8AFc;WiUSe$XDIB|R@WU6q@r8i<lX z^UaC1%_d)!Bi)aLKE|2|UYXgba>h%&uGB9xJGRFetN?GtQ~MKT1Q_Oot%o18toK;p zd^1cJYETl7Ua!w{cU_m&I3xoa6vWmQTkJw@X)S(TXysNvOsp9-5WUC_3~UGGVqZp_37S?u?j+TP*zom>@gJBGbVMTHS8 zcx7hZrZZmK+^6K5i0#445^rZ;;A`7aBpRBs*Yik;Vi*$nq&W6l71rJ-!+8#JL5ObR zk~ZCHat?iYNI>YfABIjoQfo>qlEdHD6>y@arLuZtU&TWg>|S z^vWA=fi!WL-YOV064ll?V20oSP>bZ&%*FyGYr#2*hs86vlbTeU@>B8TEi{cM29?ic z?h;~jq2g2BJ#~WOc@g*C+*GyT+EU(;cCX-&0=e-&)|!lC=52xwpiHI0#I6BoQCs;z z)9vK{IHgf{boID(nMQ53Ub<|gy6TKj5QlJ4eE`(2z+j+d@iv`oiV(wT{KbnR_VyQ9 zFrN~jtoVB4&nja%bbR;lM*97v<2u9SPbN{-yY`ErcT?wzFn)*=&kVJE#vJ3Yzl+Cy?bEB6OZ%gxiQmtC zDWGAzA4x>x$!jNJazh1gqK?2Vg}4+RQTe0bJU7BUb}gFk@3AO05J$ibCilo<6m|%>r zpVD5RY1{EEf#SWo)Sa+2$K#e(^oVy-U;FY;>;8}}=%?=Ppi&YIS9v@L(22|79KLeA zQN^754pFeoHspu$2>}3~i~?z!m!(`ECy4)!H<~n^M#`Hq%_}QK?qY4H)%C7B)T27o#k$qkRq+bi=;KS#mZGxqS$f7r+K+0yrNmup0nCumKmQ zI<|kvn#-Cd9{{>OjAmi%ZmI^LEp75CF1;6h_&{@dBu$)X3EV4g?URUr)+!A1?f9i z9=moZe&br+riuqtHl#I#$GazE`EXeHKj*i;QL$~qT3#GdH|QxB?C=zKeycTI%fvfk ztx3i#iWT+GH8ee6)4mYzg8n%ARNBaEv6=~jr3tH?4DQ>ygJ+;S{1S_&DZ{ciT%8_? zY&#FZmzCnqhfV*LMWAG{Vmd1|_uv9D*kVl0DlJ8H-Zpy=UibH@u(D@A+l%@5;HkJl z*vGMex)V%s9RynFaS}9T`^!7_%(p^#t}Q5Lc%Nb(shD%{qyH zlZioH{WiNb$D`a_4dUsOn16@8Ct^5c27)mmWVY^#inY(>?JQCM<2J52#{Of0<}qTQ za_y-fcb}KAAAu$wRzK?cu2D3zjgT%{({q;&%JCsc_*OG5MUHJSMns_n=D8su!LwUd zZhphUd7^xlFU>MZh(P74V9@_4Iun1U{|Aomc8wjbxi|N1j@&Za(#SDK2x-n#)JP>M z+su8wcD?9iAqR&gLN{3_*>?m!`@vBrnq@@$}2v|3q-Cep2!Wj;Q`zLPMF!ULgs zDS(jLp)LiG6tU-f7E;7+(NB2T+cE1pXmIfJOiK>nQj_lXuBU{-=JQ|9ZMU%Mr$0WR zzlG!DL~X<~AJ6_rOtG7e2gCc6|Mo4UnyGBScM=NM50W;;Q1UJi7pT05)|w%^U*DGQ z0=%|{P|+VwNKsSlNcvip+jC;csHP=^qrcvv@=fDHc1^ar!3auR{f=tM0PbifbI`Tn zxcR_t)qUkq_R}J!Q0c(NCZc5XXxT0GT%N^3pMLgRhm&ALcA>@i%Y-&kYVO))n3HhY91x$AAV||Z64j!Lv z9Mbr9_f!k4(PLG^eL|6XGSM7)b|KO%A9KWl=ts z?LjPbA@ZGQ9a?#%eI70;8|;E^B*4(*Lsmh|vv>v&Q8lNb-ifuUx4tA3FfUK0^*Yyd z6#JpB?WhMmY4p%xDJka#BpvT{UhnY23;|%~!fM3J_n;{ATgQeME)igwBBTl)pZKEd z$wG3Y%|m$zOv({K%;X?7)<5b5ZHG!sCo=MrpGc7`(mUh^hHfu1r4P(2M)lo!P(1`h zWClIcTo&e}G8YipLNzrxpG?)RYV2U_W9P(_{51XdNa_$v(W*~x%;Q_5%b6>E4HKDZ zZPh2BIQHW$=AQhur=^ELl{EiPBL)8HXIC6PIOm7w2QO}43NcXq!@qRb>o+B!DNM=5$ zd;#~tH}88RfaduflqO0&#qhU5r1~|8zrRYtmAxr1Pe;Ua_>W}7l z_O=|LjCf?a`XYVeQ+=;=3%ws#Xr2+h2}X%9nJPWl$!bIW*gZUW+Mqrf=d+aLozcIC zwIJK9pzW?=0Mnnan!1p0?4fyo!t7jlz>c$&@;l^}ONT*$VY)d+Jk@Q62#=k%DBsD& z4LQr~Re2FR2QGM3cv2yH8Zo&fep>*l-O1@_Tg$W=@hLoMfvHNIFoasDuEJjqdp+B# zy|RnVlqu9t$0p7M{N`V~DU)UVaNgZ9HKa-=p3YZ=FNz%9dlux22X+DF$r4^%P-51| zyEOK;I325g!g~<55(7f^SCC7HP2HvW_4jYwNBYa0oU{;kgUfs-D)WVJZ8zT|BPzlK z-E)w_o+ydPF;;rxe;Jmx@@|GHD@#a^(c8*bLP}kTn}ABAvPC zG6RyO=VEn$#5$ZJP@dxU7UawxJ>}hjeKqr>iDy8POZ^2krMtjs+$X0JuZ@Ztf#(k} zSgOl(CyNTEjMc*@-(ywV|9VVG#{FeQ&hY-bW+r|**1NG_eNdeDK~=ttkfESR4hfDLi2Pzne zf9~H-Ms^Y=KYm$G0+qR*!^?#o6jypLzWGDq_&TBuBKf!lW#;D`?d#4?kjU(1C^ll0 zvn|J_G~ekc?X1NcHk?ZRF9L6^Y|V`?U;*X7g?(}q6H|7s32K`Jx)ppR|5YD{MjM(qxN(N{ThKc!H8v#i@%vRuB+mCjneq>tW0@ zFx&8WYUMd@zC(`=BGaVz62Nvr$O@>J4&KJhTU;55zPlci_M`43NjRo2pev$6%Gx@6wxFW{f^kyiW>oC&BJ|lAH%#`@oKG5 zF$*k#hh$tZvTX3g2!UDmP#L>iuyhwJKHZoOS>Xj0_#&0bQJTD{k=}hxiBxZYBv&y- zgatzby)BSN4bds?e6^qcw*LBLQd{uZA4ag&48SKU^SRnNrHsIU1YtEO>$vSWngckk ze%=rHuQwCgyNfRm3F1Or=Q2|Qd`R^uB_CuAULF`JAJB?&N<6z$6TRyKwEB2pVkab2 zHs?j(j?n&HB7zmNnBY!jnVt@8uyzs$GYT5)&)`ilcS|?ZF)H(n3qr>0eeer_yhzc1 zC&hyl?sdu_Bz z#+}Lgz6Dg?^f7Ab<^Hj*Of?{z;hO9O(cHl^QS--U!>OH#pa-G|umu6^)B<)A#GtOJ z_Us1vudAKa@~(Z!j)8@U0Wab|Q)SNEx#A&_RI#z$i7yr)2MA)@_f&FAdlDB)Yla>O zLHZIpBI&4xCCJ%3(Aruh(*ejkvY~ zjx+pf6mrjCj$P0^x_d9JN!Hn1?~p&zJG^DrHLT=l%lpqQmYMo?70GXZc_5Tk0=1w$ zT2R}8tF6WRgNtlT8_PKRY%&}`jDexkq8Ggu+4Qk>jtSG7qEYj@o6|{>85V8=FM1Ta-AxU&t z2)1K475d>Xg7z1201K_GRvPPR~6>=mZ+$HAUmpRnhQ#6%!X+opvN+EW_VqHM^_R>%F$Dy=QTEZ?@a+ znYO+AQthk`Ic}=upuR@sLF36*+l6rBn0#;0e9Wn}6o`lp-Yoz^6ToCT7%D|flt%0?XPZ#5FI(Xe(0|(P3$h3lRrTaHtTDL|Fc&vgZ;YXdcGd?5)_lC6Hd+g;@ zcV}-)b>rWQUgK7iG$U${UF+0CHFsY^K!3Xb0BbiS% zF9P791VEZn0xSdvjkphW$3}_hkla*=Y6z5_3eNO+Hp7RUpi1Quuve-F|I54QOc3*> z>pN3B%2l~lH-=M3cU)w4xP7?wRTMk|9MV>JF6;2DAzryItGV=ei7(N`wCVlsU(I@{ z==`P6N|aiw^&BfgDlpF?`B!ngj&RHhqGEstXW%77G@0jAaXi6jVzXQRKXO6Sg(;6} z`BxCDXLlL_Qo|GM6@qPq?P+tnjgkFUNECrP3JMfL2}B>F#5Jf7h03J zw_Sf!tLC}NJVphllq`yPr0LV~Wcc2`ZS;{e_;xt5JpqLNi`J%Tc#zcEBgPFmkO;2C zMJjTb1JB@rr{}Fz)~u&`kGWE+YZNoSE#3j1y5BHJ@+CL<$HnaQZxY+_)YHGeq1V`w z09tId)#jZc)sYtF)sihAckSBcuN}$M((q{!ivtX9q3-oQo-qTy5?fUQHhBh>4vTn# z3m#UMGkvK-Nm3XjRVYTwTO|BK>=lZWg_663h*T`}doz@bg;L(vxl_erX(rEqnCxq! zE$R^d5xelMDA99FY4h_Gp{#L)T+5WD#Pj#1nEd_?B?mmXWgb}ItMdE0=d+4>{1cM7m{XIMh zZU;OQ0M#f)?Z=C=1yJw#-JbFa5405w7wUhFEG5y*<9EvW?a=E<{`SiVDhS3Jx_K<^ zSANZm+_7{memFnNe-XQ${huOw_<2YL8iP!U0jky2P^nO1?A&h68ya&u-0 zHVf4iXOvRTg6Zvwl@|B^cHEgRf2FqjQuXK9r=a{a#y(CyJ+LxsbHwvARrCmD zc*%RU8eCNhn{93;VIwEK?)A14t~^r`_#QkNGAk(g_2>^;%E}J zD;U@K7uRIWY3vN%IgC3sHfa$gDlGmhW>#rul2o{>E?Pp{*vBql1nXG4r6%*QZAU7ZrP^g>mm zD9qMi^4cRMvn|OjJ+Q0Hs3>W9Sg&0)o{=i8iRft}%nPnGgkQjj9gOg&v)SNrON_R-9CpC;y+uC~j z22v*ar553 z`0ZA=JJzLuOiega6?N2LF-Oroxi_Qxd$${u&j;PO^N2=@vs6+)vue}JTW!{v&6Yh5 zdk&B_&9Y2axpnVZ9A_Sa{+jfqeae6CyT<6}T%5r2-)w%X>g1-B$b7``@1VJT2=S|~ z%E|0D9gXF`A03zbeuRsA-p%uJ)OhlPIl-EclFq!@6M-|_=v-)e$Pz!C^YHgMnr4<- zqIe(LJZ6K4FfY8WEp5^?1gX=~|NT+QK9_PGxRaw_!%E{+u!s^Umjw+;zZ6JO$>K&9 z+#>Z)R-;J=M^jRvHN7}P4Hf~+L^~q0x1FQeT(;V^F{z;*e|;CI!;1=SrF)Y;2djKb z04ut8l;aOY7++t%YpNK!VUcCl&p+g0iIQ3$9kVFy^?VhY4ZMe0v?{n$4z6{{bnwLE zo;onCa8Nn=>y60qO@H{4SHwaKn9@eXQT+4FyVaB5pGe7zy505^nELH$zSTb2_{sCw zg8-ed>Q$wUg~M+zEyw3T|HN`$_FQ6Qd*yiawrEKkZsibjEuU-{yh)oKQV2OLLP3c( z+8)*qX7qPaqK290X7{GBxoA!SzUZ?itG1% zU+7g5o?I1#c8i#E4MZls?~l;xj*yQj9D83TrP791inI0mq!>k=9Gkmg<8f!gTG!LH z$`deuRgOZzL1(sC0y7E@1i4UOZMu6ws1U9ta-bHRQ)4;rIRAA7s^6&&>1J{ zSER_rAfGmdn9bb0#`#(#+c3$5yzLR~iUpu$%rlOjXx2$>1nGPgWO_7K%U2-NJ&Aru z`P4axFAWGKa(n-*E<@LPhYtsoTJ9hd!%ci9)RKiDz{_2f3CHYugpNHXa=@f>gd<6lz^mq3Y!39wH8}eCmIxuG1N*{wAFpH|3 zKJb~4?KJrTf_CghWOKM<5-yU?j3TkoOoNeCF4LM*41BO4zbqYPYZSXzY%h|9jz!wg zHpR^CvQ+|x8x0nGxW4|=Hg#=eNs{RIZiNxS4aIXz__!uml>rj7+eS+4#ipyMuVoul z4TZe?K95-E-LRw*rJJYOm_>%i-g;kL^PU(nn+jECYi5D|a=NxXDlbjnL$QQ0E#Ww< zI230LYw-!@mP9@%tb|+EcMV5Urz~9eXBOx=JzxK-c!}(~1koh`C1}dSirhKlPg4Hy z$&VoSlb`DTyTAO5?`uu{{ummGK1o$U#18P(pVy+I%BngM$hFic7F z3Z_&To=qh5ihpbc9*EJt=%{|vI0O!q*uMF8$Xi1A#!L&HfZiNW!z1q{h>8CCP=&Pu z{ZAvHT>65iRU1%RFC|>0G)31m)eg{);`AxDF}l>^aI&X1vYgscS+%IC+gevl!+)fOnW+FpVf_dlL;)u zrrIdXZdzUeyE{xPR1z7)*X+}*-@j+5VMo^YjQ9?Sv}ig;`5_}y`H1Bu@;*?$2nWHo z&BNoT`_!yOE-aek0yw5dQOehb^Rk2iHQb2iMO?%1xHMP}{=IGDy^vq>4RMjb8!PQe zmkN9{QzE{Mow%^OZ6oGo?F9psOQ=r`f9D50?YO<;6aY(({q&%|u(E9F6lPbixp~TU z11*gl%zQf;l8P?rJtr*I@bA57EKH(&Z$3cHn|C(BW!VLrOQepeoKYH(**n~n}e>1in58M~HrPNmdW(gUmWTXU(7 zUUxHDmO=Pl`kA8lL5PvLlqwH@Zj@@p=2O zk@Bx-QWh~c3mgENk{aCR+bgF*nz1fnO4%UAkdoB`1<2916kWf}P4M9#U#=5PN6`M- z8OF%ySrIR0&*v-SCOkERj}5?+Z*`6SZW1K*IvLykZ@Cfp`7`J}_yI^MTd!=v#O6@N zqXS5N#YH8Xg#3aC{c*REWO!HPM1KF?fRy@r54o$t@Q^5EdRP%90t9^;H`Zj`wYP?q8;fNOFC(Nn{w7~qPA*mi zvJ_h{$p#nW(g}%vs0X$8javx!LliNj+{2{}G%$-NWgUD+5+`6a3mB`fHFt(H?IX43 z_A%{c;Rtt@?X-SoWu|T;)3&6?64hL=fVOQe*jb~V_q?&3dhuPXk%xs+xw)NHWT|TG z1IyF!(F)*zka79<6`}jp?riC~NGtcziYKw!>-*Xae3<48hz^$RAr2NHsQIk$0u816 zc6ljsgq-#Gti9;i+Q@7Ty9Y-YJq9yuVH=xJ6g4VXI5^q_*2r(q^okk1BC znG5+N00de%;)c5ZAX!1hlAYhNn}qvm+)HWz5RP#l_nN0e=XKrB(cyqPLs+%hpn8sO zdmifG1S)Of!X+vFW=4U0l*Z0aQn`O_Zk=WksaeWaS;SbTET&I$Q}Vawl_T)$@7>Eh z+?9(HZ+Z3ARnA~An7Yrt*UP#z%CFz0y{{}TMf0Z(rYTn`Xfw_w^so869Jj(tET$7a z{UQc}sK983o81>GGF>{_i!oJnrZD{K1dxY{H34j9iBKB=IUZvdQVfIbfYTIAg0i#( zAR{D5M<0fG&M@p`77K1q;8=khSz1VFIXT;Kj%6q(Ft5LD;Y z6CQZhqL=cR%}j5y@DJSl2C`Mwgv)SS;O!%v`x6XjWRB)Wx+pCfI+qGTj0OnAG&L)N#kV zcbHne$xPKoCK;b)9f|Ry06%;hEtqID8*a2I8U2%U#p#cUtsmUu&Zq`l?zNH9Kn#tP0|?SwhSUZ@dmJFi8*hCMFhFLwZ)Q1j!9KPuKSonv%Wz-| zOmnE%lnS%4&5E{#92G)D&O;CjimGN1WZVbj+{nh#K;msG*BnPm7k9O%>$LyIDsagr zoq(y$tg|^!o2V|<_Tvu$7R^ynSbSX>7+ra|>ys?-ssRv{t?{&s^c6Ivp@c@3 z8nNtN0 zkFtN3$_?i0<9kf6cgDvz7cJaLoblBU6gdj8u z@Qz}!{pEvT=xl53)ZGm+Bwh-MJOCG#8aX23JSSay3r0*ZUBm$RrANY6iU=V9>~Qsk zw+u-EUbZ>;|Je18)K0mxW8ymPT}D#Jy6K0vISHZrAw6r3AxJMN`#1A!<+Pl)5Usf{8 z8G+B;*)x}HI!e>>FdS44C|j@IFL+-uld;dxtL<*Zv{{wLfOc0ackpj`!DXL?ODLw@ z2f#M2L57#p<<4~9$Rygb1Mtry@z0L~)X)r;1rLCn1EA*s@QR4xR3Lo2)%p6p)!Qfp z4{-a$`z+58`*YK|H|CtSUfq2x0ovq(*uZ;h{?avwZe}60?vhAfkiL;EbJsGvm{)Tn zIaGT`#}3m87A~))vFL@k)Xd>BWeRBY{p>-$1WLiu4MRQR2w$3+?C5q?21Hq(Bu~JR7M72NY753jjaIwNH|EsUsFb=t0RFqo68$xdEY$R-7uIu`CW3UyBPt3TOfvvz#|Dt; zUg#7MiKu9P9#@vmf7;CeswcC`gD@zs!i0)U;&zGBCSlZl&1JfRiSONWS+{J%!mNik zU+vn~FTgkt*Oj^*rorHs6Dg@lb+=|a`-k?HNWF6a0+H0KJC#}3WQt~Wz;}u6NLyI4 zK081FGq=r3V*~=-@X5AE5(VD^8nYv9*|vxR;DFciD|u$ZG6xpn}yI&EfA~U8>E!^aEh@ z&}a5Jmo;y6pTSg42KiCZokMCDrc6%I*ucvlIBu3h*taX@MCx9<-bO2<;k?gEX0-CF zSN2=EzpwZ^Tq~S^Q*@-#M(S26XeXx@EqYM^WX|0B(k+3a|FF3hcBZFKX}isr4c3ok zdFr#H=f1fyGKd?Qxh>z60CZrlSaK{YngKdNYfpL1cWfDo7%hJMR*~45ZfpJSaiNg( zVtu`xE@}PRO=nw)IUhWO%4$HsPD*Y=SY#^{PyYsOzaqkV%Vf-Zy^#1DModPjT`NZt zXK+b77IfCHWb{bI=Xns&oXV2Jw1JbaS7y|E>iUC#M&(z_ zg-WBmx{U}e<05JOr-Pp>m$cOb;uU~0L9c{cC|M+M2kL+fzC-6Rul~*AV9hGJH;= zxqEIC`WBOKS*yquqs?~Oz4$pSJ-qqh$h+&mEBB|!nf>e~R{ZH)lYAie-k73~A#L3tmQW#(j*8XuWX zKREQ;WnO*p&BsD%MP4OW>2|@7fl?>+R;tx4#jDEVI~UCD)`0nw?|Uvv23*rIBhkR< zY4EPtgP%fv{MX&*0L(@xZyoC7x{xvvR&2Iyf+jx$0n*4tCNPP43XxYD4;{}extJ!h z2*o!>Zx6(V=s)Yke%BeR(AhJfon5`OhY1nu+r(P%AIa{>7>EL@F7B{Wexec{%hWkbMG34RaF#2#yS%;UtIrt!T4+FiRTx`HpJc^ zI8dCH@DRS~3yTmbnMYv5jK4z{(@eu0t;0b#7BObj#<{q@3@JX>$K%{Q%Q9Eq2%qOM zzi^;ncn7wY(Nk&hLCNg!W+_f7Gfz&_4SDQK1nQFNnI8JaZV>x8!lOGG;G)Tv^GT{x z{jFJ_%P~v~sv5#(6qRZC${gn9w$Jfy;1OH3SPK$N`E^y-)w@*3 ze_GGH_YLczeKc_&IIxtB1fZ0$F)l;-aFl>}Mke}0uXD)hIavv_%8W{COmEwQ1YWy1 zI~4ySx;E_a7#<8iD?L?vG^3ZSa!YW^#qEy<#3YLg~30bYSf57>$UdnN#vuhZQ?TIWd5bA5ed;qkhj==hK7sgA%=e% z2pv$m$JD^~hzI!12+e~KEstwK>?6WplDiVJl(n?AN#aJ^!x~9CM6vz3hJF6TeWJ#J z1u07}tqXRx&!V4LQF~|@kL9gW5@*N1jKu?{e89yL5uf&L-|g$|<>yQG{k~ZFtAVE? znYaJ+Mfht4W0Fj3PFZ?9o}xMv7xa*ed1%JxvMT!I1B=B~8E|ldX3&2{;v#%CFiE6A z!A)pPVKv?5jRkA&@>8_h$IfKN_oqeyJ&FC!0of6rVyAlC`<<<5?Y+)S@peOuiyTq#>heg@AVgfGUtFDS~T;2kAH{9Ze`a~-2VLXjS6bo z9vl&^4x7bYoUuN`Z#EC;FVP(5^hco)nGN(Z+{xAlcC#y0$FX%)pdXp&KfWXK|K9VR zv8i)R7;zIIrxdkG2kGAyu8lO5?reH&lm^(pOa8V11%g`Lu*@?Tb>1Dd6Sb%k5jcmc zYM@j$k7Y7jy%RmefWS4ephG5Lu|7a^Xa-Q)LjXQ-{Kd~y-;R|GZrq`McMnagCS)=I ze278TlI+YyY16=R8w|fc?cnHwnt4xoYBS4L`6TV zY8Wp87zDa!CxGfEeEB?H4Ece^n=B<4^%flRrK!BE_!Rc%PQh^xA!x~E0P22t?C42L z%p)Ex>`MB?5f8t?lCDB(L}D+Tj7{g{EK=ohK)5>>cyGVnPD~?~D6=4^kn~MTj|)J> z4rC#tuxH(=k5xvPMQOZRWW>g9qge*RrYcgyMnIIe5@d=T^XK3`(*!wp9uq<1>BwaR zVBZ6-mUTj$d$ot53A-?1XYu;d*N1;PwgA;X)rMt5OR{AaZ8jqv& zDV?=aoK9CoJhf3{XD`Bi4oF?k1ft_JC135XUUP(g68vYRE5 zGw`d_Cw#?4O;rL`A}o?A0LbnTx*U$#9?U}aATMwd9rJ~@D~toP*(AY3u`Wa>0tnGEXaB@%l=PMal#cpxOSL5&*)zwqfrH?$1T2MY zK(SOK6Mag5MI6b>Pm3jKi(U~j?K!Q5UfNp7gl(a9k}D~VbdhX8-=I*m(N}551`qyN z6Fd8%32psR#%-=wT-OJzUxyWo!+cTSLW$e8;B*gd>{cEzD4~zwkfP~+^-V^m1sx}4 zF+oN}Iuv#fLp$2zcNzItzxGLukaPYE(VM2Ft9_wF*lo-vd^um|JV*{JI=ygU>9M__ z?D4L^l6*|7)%N<3542Y+%p>VNf7IM9FP6lxna;@q9t=rXDdn(1j&r@R z4*Jv*If6e#5M^3-R2QBgFUZ_=%CxqqVZtvRJ~BEvd`kh+R|WWxB0f)$vQPS=;LkGK zAtWAjTggg;t0IyyAIocvvz%1>5PP@8`o@PdCQW%qUJe6x)bIhvcff zSa#Jk7ZZj9r5v8uD7FJ&_`~6w!FAy<`?((<=!spb_#1^kYa-R|W#7Iu$~dtE_3BMg zSDBKx3Hy&&`c>WjQsyUJdY94uKdp83a`j^;A`E+=wj9ytYGbI*217ZHq+Z2zi~>O? z2lP9^n%R7FUcXT`+qTNrXp*7I<}rR=o>?BDK7bG%1!q%fO&gFi#sX*m0!SPWoKHp! z@t|xE7zBA*->-Q!sOS^sV}kmfYKV6u5MfM_A}}%e3_79L8HtnQKX>RV9r-EBKrF-7 z?ZP<(m;{|Cs|_0P1Sv#R8N`KK#8n%3fV40yoGM70p{kcp9NO1+-brJrZFXszAgc_k zK3&MYIl5~`YQ;D+VtF*mI9T!1C{Y5zACkanzB!5+=yG)JCX{U}&k09c!_ewGbU$Eni)`XOrBFggG_j%7^d zg6)tmr*p}%Jh3v!uMM)eaPNVCdvDRPZ(N?waI#_NsW)=~CDn7z`aEaCYZ#pe3*tG` zBab^`#E>IW*)GZuAX0Y{UZEwoz2=+*w9g#lWiv6_E@($lZ^Q#~7Mm|S%f!qw!?(q3 z!X+r64k{OABNOFvw07$>K++LcB%~~nwX0Mwe!~PtSPdMgfXX>tj1hNry#=WDf#Y-+ z3JGOoD2&`qd56iRl<~fAVD{un=yix8XnYc%CsUtYSS&6k*QZS`u68C_y6j3*6!P{ zOH|Ev(Zt5!rkQFj^_Uwv7=Rom2`I-90TtLT+mqB7TNh$6!zOoIL#!n^-_Au~tAY4;VOgysu<%B!YwjGbNL4C_1okC=Q5yI6&jVx4?YPzma8AN*I4@dp18wb*k>vN7{>BO=0lA9V*K3_{=ZKtHKUokXJ zCN?#EHl>5~cp$w^u<>f2^D1jlCw>1a(PG)qxB_%Dz_7))sb0NLw<5NF3*3^+zeWV< zMUfl@VDmU)Sv^yY;3B)s;N03XsunosF{Yq4{HaYfy259LoT;wsHabj@?hHM!sq5i! zy~F+;M^bbsF;m$i{}9e@w@eQEJ0q}+Qjs^r*bJ2&hRBh~V3@uhuaQCrdnENcM}bGtu+fLBBPaWJ zY?8*CZj6M1ckua75=k~mBs<7W!4}C58E;pWE|843uj|i$5^LWHo-9vy5cE4BZ<+=5 zITKjMc(5^~FBtR*8G4=bnRhbU>(}XL<#E>|+I;4$F7((A6szjd)_G-Nhd$DpWya>e z(ht4W)#FVa_*s_!J@lYg-5Aw%R7Rp=eKp8vWR7e7fg-Gdtxqp*1o6p ziB?&08LU)5N2s2^Bt{kF8hmcaz{y2cjy2eRV>~Qd@J)D`yfw0alg6$EkXOz zOwvRoiSw@i;MGs%IZXH@>1EITM=HwD8raRoVg8^^d(|P_-dRL zIsIE0*lPA@(1G;8$P?dO`z;AztJS!3q<-hcQ)x#mS1+E}e+F!OFu}IyZrE#t!|k=5 zLK02uq$BN{6Q*P5a(enoxQH?WQPr_k(}7qd@Wwi#F?5g4;C8A=2>M|JzQ4HVhfz4~a_{G)w+|xT zdfqC#K=Cs?1$m)n`Xozy3nO+#C`MpzAEB~5*b2JZk$4z;Lw`rm4$HZtUtZk``tR22 z#e0a`Hs?mWC{d&x!r#vRBpX2YK2f^uB%djJ(-sn6ZTT%!1h&P0bH?AU)B0ok?Wg_g z^n%Z%^!~ffv*{VfzBw2`Ql_s&_cgMf9ib~|16VtWP3e|XJV(5J}&cECPz?0ppC zSGvb+FXWnZY<=7H-uBIwJwT&Kk{w(zLTh}mzWqBWWBzfjFG=6V?%uJ#v->|7ew_XZ zuQc`*oZk7t^SE81{8!$M_xBY+y4wACWAN#hkR9J{SXTV!Y}=2}`nH3dZVq?6jO&TE z3so@QrppmDUm#&a7q)isT*`Gk$N-xN(K(wfu$UuysF4Am<~h@PF%X~<7&ST#{Y49~l zCW5@E8h+?P<`+>|8e)}zm_8w7l?P?+BU>Ep=b!IMddE+C$A!P<4(;J5{S=PR zQ1AaF7x`SwW?^*7{C=CDA%rM_&>IXxC~fKZHwwYMnGi+8NudilPua30+ra9Ota1Ek zw@yzv=hdSU)O9<*Px-Hg(`K56HTf|TvKmG^X)VZJ=62LmVRPlvj{|H8g{|9(_&AXAXu}8X=shiKk`*+KzSff8znA?ZPsO?OF ze|pwWDN=LVI{US{cKy*4L;ng&EDQ2YPL$-}NmLz3F`)l*?sTcZQ|*G2I3O&o9$!erJ5tGyUijiN2dQOH3TKz7w^lRHW!WT$xtI zbghfq9$d(f$Tl2txvELk@4L*&6<(F7>6_E9FLRFt!OikNv#xjiIY^eV;}O7bc7nfL zl@H*Ci|GtdnhTx8MZ*cjY2y3XrAf;RAJxw+^h)8+E+-gX>8Z#cymD$J-1WS>++VR= z-GC!RIAM$u3sd7w;W1cEW)On~pg$lHlLoZl%X7H2? zI}wx$Q@dr&ny=MqSI!)L#_s-0NdH=KyvX<3lk{cZ%&pV@wm%#FVCS83Tk2cV$7{R+Ty1SBeyx9f;7%#)BkH@%p$(CxIId?(9DVlCts_2g6Mn zQ&{;p8W4u@vUSP898^u0cK*d!ls!<91G^X-#jH~}_j%&u)#T;YYj4?AV@HM`EbX_z zo%<3lHWcG1nu+3=mIz(ou3Uk~m{KBAy3O)TY+u_eIg6TcL0pJ*$CH!&@wit0pY^At zO43)q431xt!!@Gx`R5txUyj!N*eS&NWzW9e*U4-IsEQ- z-1W>TQMr|$ciK5|Hky(F+8em{%k38p*Nf$OY=8G0rNhEl_r~*SZ|qlY_WzHfvkq(O z?Zfyw*nkZfjFJs$0Y^$RMyDf1LPseeDkWmF0!BJgK-7V#fQTbh?9m}AsfaaF#Q1@t zA|iYD{&oI7*K^MEJlFlb@6Qd3AfRkkLck63RlKivZe*Gh4_(JKO0#(oJuz3e<2IP+ zM3ji4gNgbPIle0({1cjs#acvu!f>zJS~~oZ{=svnI_6aRg<005-{(>RIjRN$H7L<2 zC5=|7dV9SZe_!sJeD7kU#Gu!KEU|hhfi)$osK-ab!M2}rj&C1VO{B9_-jxC@dscl? zDSS+s>TU}n=k<^bDY(n+5n;%J>x~ z7`d15C%kv!RYL5}L<4AG@K&(O?V zzyF)70kp-*fOloAfQiG$8NO7eOdSAjzf|MOPVCWk z0g5DCs~wQmu`G*OU}5jG&-+&CaGSG#Xi4d;E;0MYOlDTH0%JlXFO#hE9XQ?Z$ zXvqZso>9wQ_*rNz2KazW*r367QV&v|e*)o8Hy**xjK53I29@c~Tj>0S$8}rGb8HUg z|4TJqtM+Qkq8EczVj0p|tB+PIoislxQyI}^q0@d*<)3Q5PDlw#kSc`xNuxN*?MGObp2MX{COUG+gULc`t*$K=u%cmVx=eJCRODdX|b3d?Uf|jWL3nN z9YEV|b{(1r%GCVDS0wORQzI}lY#j4&w3xY`+IGQY#7F}-7Ij?^`z9|_`za4!BoplW zHuB5Fb#DGQ9ahq1*Ka;$icvDJXM;4wYh`u`Sny+S>F^7Ifr(2E2)fb(lqGbAKDcqU zk5eO^x$dgI<;$UvYsBCH7Zr)5cX48?sIqIeC6iPY#8$swQ_*iTE6la9*(G&zAl)tu z>*aZfD2lDWRbq8T z;^x+H@|R9DmDC+$EPH*j)8|XesXNu1Ly{4sox>VR@82Ig4$4RfX^9W*1{OJ^i<)Eji~&+#$4QYQ46+kPI;= zFeNwtudXsYc8!3>L{SibUtPG~EJHqDV!JLcloB+;CWJLa6#Q{j8RLZ)c&R^3=Ykcd z0ofS>pw!6`$`1vHY%dF@)bNW`9HIuQl!`)FZuFvmMp_=+x}p-Cv55X>cJ}A-^vq9m zwsaLBlfXYG=5iGl@Pfx9qZ<<}wHmDR=Zd!Fm~KVbPZ`+v~&Rwl|?|@C-6hAR0-Hv&nR^u24H}VVj~bto@oN0I3aEPO@>m2-`7e4L=et`gFgSc9B z@GL>9iiar{fXhc!?4GME*4!JZ@zRU4^t`#F!PR6bG6nQ1Nz0+$U{&<7@cZ z*KklMUYK#VlvE!TC7%Bv9xo1f(9m`fmBY7)SEX)XN-~v_U&+sY3gGUyZx?9!w;t;vm^2QZ%y%+QTk3()$goHrKY1AXa5Z!QWbW8dJJYBE`6VMs+b^6^-aDvlztY^*xBifSk9{AWyl zLq@vgsh0|59s*U;3{=bAGsk9F+e-e$-Xs!BHm$xiJ!D8$k>SI1iQw&=rFrbX##@_1 zGUG=yL=LjmT1f~xfyg8y>**5J1c_=ID!No$iYGxcH9amcHAw<~g$)QB=-j#f(l6%c z2S7RP$GJ`JXZ$V1hgw|Ge~Xw?VYg5;Dlu~9baRaY+22LfiM&sfb73m3Bkpqj74sPr z)j|Md5U3#l@dR=jM`Q%!a)RaO8wtA)lAZeyvBg(H7pZp0Nn2S83O8$T6`-2wXg}(U zSW7{_;Guu}BHU2dP77pOfhqz<*F&O8+A|~Kk7dL5Zl2+*H1A3}BmhbD83v$6e4I`C zoJB`94)!AwCW8ui&d{fD^Q2IhZden>w2Y<^SBi{HMb*-grL?_e00eImE{X-1?FPVN zc}JFAa=+)eea->3;Bb#%y9SM@$jM#(ffhc5qkaOIK)4n{z_b$KN!&XfK$#92_7}i) zN&uRtD|7vcr4EW`iQX&+`2zxP>?h!S={l(y+Dl*8a*!3P1>Qud5ZVv|MBUA|?N9O; z^i#o3mM*6d?jkN zq&zg^U(@W+8&S#Ct<25Y93!eImA<<3O1Y;~R@{NwMc`|Vn#5!WT{dt&_)*QJ73ng5 z=IYBc1?1pf4R|sg;zWk@Q2Muk8IGx@{6wJZsAkd?dVHI6@iTEzm&S{7WH~_fJo&KV z61-Fhr}GTn6vH~Mh9Y#-(MO|xrfF}VrHc~hr1WawF0@}3M9;5LI+Zg@E5}@uov>NF z{TUHf&|hk28Tisp@xVLz^PwLAMzQoP1$9C ze3!3hj_=%OwbbLjd&yvz9w%eEWOanS45-@}ty13b3NLps@6*X!=et!*x_fHm3tuAM z3r}k&!(%@>W!C?$=LKB^#f!Vk-tF2hdIcZK#C)eq-Vwl46JVfTivR+={i`!w4n_u> zDUeDBnQy29NLVYK_QPbVmBA1&KjtyYd51+2NcD=xv!1NI^wRq==NsfKPF)X;2cWGY zaPh*mc!G`yoOPL@RM#kjj=+k72I0$sWMB}HGozN}ps3Obs{Zb+P1fE#7@`&ZGx){N zx(WiM*0HPJKWoSqF$?+8r#~)}?`%$VGEaXJj3B?X8}~K1K>^LSqa$@cpnC#aBMyjw zDl%3zX9~L03;c1lO&Zf(U7h$^z?NxhT!}#(vE{eYH7*!~+5#3mGe=0AKn%@i_?pPh z)-2C5RNr>WjLj&uc4C8bFv~QFyS>gdawxm)h$Tw9@8)q2;UUW;;31Q6XbEoaUTE@O z)EndDFVYy(=H+pg66L~#o%r((zaRpDtX>2zotAlqr|32t``9&bla7&_QRD5!rqWJ; z^LS@bbJEV$M#9(p*97wHb9x^&TMh0x@v|sHnXkE0coR%@;q2o090ut z%E}Q{8fTOc39M zp!B^gJ43N$f{xvaz?l6lXBE$A-=Q5Hi| zimpSS-7}(fc*_BFiK5r|&PfJD9I7~wB@qjYB$x-;ss1%+>$p52bBzZYJT(Nfm{B{; z7_59a$RcK6uo;qNCf=!08uGv;vt{BtKiK~45_C#;3`+3{cl+PMQzt#rUetM4rC&+Y zNNInjZHG7wfOSEjjS0x#yP)xeWBCMh7EcNtfgXtVSzbZwJILEPB-YL-ZX+tGhpSWr z<%}7S_6soMBA8vLOfyj_zEk- z|9~`s41LC6`Q7_HT1uuiN{uz*UmfwBc5{;S(`;B-o^fHA=V_|-b)SCRsog}Gy+rZN z;N2eAN#$Ik+=orB(B z{*-;>ljuJdeBos#R7zv>3VG%-8%a$GIkR!JE3@8mXPAIH^C6S3(33Su!+o{CO{8ep z6qWRzQ`;j7M+1MW?dv!)ejst2on%ZL#=BYaSia9Fr*Iae=v)zw4A*6*16 z`bONg&A+7s)QBqLo?2oqe2Q5i;ytbk|d@;wBkS{rd^YaJWGo;HjBj zLv%JV8-Hy;JzKvOu6*oE4JSf`r_605OF9mdI`b(YKM{dW2V-ew4&gpYKLd*7N;O{w z?kk#%hAGuMUxgjMS2h}n*ju&-5&N^O93}^lp8`v9XdEL7u`f8hZ}Z2ssDtxG?iYi6 zDehWFw`9G|%h@n!oOgAQ!XXz379!U?*rz1-$hQV^)N4haEorj8a!y)@ER(M`%J1yN zkJOJ<8@;NZRaZJ3au6(OIZC~FBPsCi)f*pgin*ntQo)W}dZk>fr0EyJ7wP>v4lc^k z`jmdf#KDtHxrgg}@^wDj%z2x7gmsC0tX`)w2kl!n!DF(b_LVM@NT;OOB%vKLsD1$t z^7mwq?3g32ZLD_b455F%*jY{El6^casnJC@7M&PfdkkJj_jqNM$@W@$Hz-uV5C16- zr0vUGwO35Q1^X~91wi5xOi8d$p)S6F8T56Kpy?ZY8$o1KzrRo~Jw5x~g#3HNNr@$u z`zf$!(KIxHOIejZ@^JYN!}y1S*^jdb#&Dudzf4tJ1{0 z`F75WQvFC|%oDt0o|M`83Jm8`-B(rL>q2kVCE%nGP)%~KMDV(+96wQ@v+i=}34Px#Wlk`*gtC z4?e#GsdM>FqS6E-w^oUO+Aa+Z18M!3dw>xAMa^^Ww|4rEk%RSJT3g96JLvZ=RZ@fC zH7YQp(RHV7X$LqJ^`J8-V;J$sOOsD)31O;J z1NnAFfH$&Y!+W9vz#;^%Fjay-*r(DRpWItv-%6g8`tG9oSv){aD~gc55rvEOIcg-| z;)zDSqNsf1A+0$*dQHsSKpqHVLvU9yA9so;t0Q#R`(YM*;LhMkxoUi`_9l(3vPMI= z&?(aQd2W$wUHD`Ry5Grc(sehw*Q>T6NS5oh`va@G{fGQiUyWUROdmXljk==T3&J67 z2%=N3Q|Qns4EhG38(%)aQpe08DlH<5vn}(DbZQ{>!f5Q-*vl_eS`dLv&y0fI9HfWD znvO=9Spc1ht^OrFF>$pF9u}g1y{{_dz>q>YA7a2Hu?@%+`Tqz`3R85)(9Y$fmYZ)R zMSY;S$9mbxxR1kKBWfTAKV7m1{Ienx2|FA5bePlW){X88~-QpHoD&Q(fJj^~DP^+9BO?r4Ax@%*AD)TJvb_rKTz=3HKY7|rETl#`jV7eDo2Zi`5L9tEpe z&vR=SzyQtouqgIbNvb(Kng$jbnceUvX^XSxJEvw4r!ea9@(x#<_nn39XSxobR4xB- zlFxeb#~@3vdV%$sqW?(mN9N1dowJ*IGxFai^{`sy*>M1vJI2?sjpMAXku)XWF2v+r z?X$0FF^uPxC|_D)YKsf~eAbCjfm=>heGOV=h7$wabd5iAu#6}<7%iQrqkQO;O|k0E zyFsI0LpI%vcE}!0_v`f7bJqG=QDJ}^R>0i(a2M5Wo^f#MorYI@i{J7h5OMBp!#3kj z2n$s$r4yuh1wOATkV0kbdF>5Q=48UPsu(_QrokT;!7m{Z*kkoOMF!t|3scissvEpa z3G;_wuTft496n)5q;Wp^2bYkI}e_vW=7RN zm{Z!Elgv3nsDqs;bHDjp4cAZUHFD3?@zRU4t6-ohC7x>f>dFE<7|Vd>!|nYJ^ zO-TdHE7z^Mn$oszym0~(MhMsn{Q0b88B~%-EmBYHhN0)5Z8C9Ge6<2;i(8f6ogSIi z$4fI2)-~7U-;v)*(z$y+(%5GPaL9?Cw(F?$oGA41Z5(qxhAD@eJAlKu9btV;+e6f_ zBT0w@up2?}D4|^t_CzijdEy!)cLvqRlQ>L+n2tbvx$yE8t)x4CTmr}p06Rc~Sk@;s z8!1y$aC{>&x_#gEyO7o%r8^(NVM6zE0qmgyG=YYEJ)-=WNWr*>GmNJ-QqQ!@rw(1; zb85jWeq^$R2Yi!1pUAe9X8u6d~ySbzF(%$_`8{CJV~ z4dX0J->m=Kz{jb`dagvr$RS0hL_GnS!-d$8K#>CUZ*40*2g#=-G@p;MY(ZY2BFkuS zTN>Q(CHmKK+?Ah5b-En%3IMrctv;E?U7{XN&Up;=JyMqwc;HCls~E|v)Wu(NiEG8- zeR7sb={p6;yjQ6Gy-+L76Si%MplJz0!j+(-%sjzlFqNrT*?SRx5n)C($c|TIA26o=P`}7It^IzSv zj;$76t2vLj4#_8<6Ro7ubq(tiBXb1cEqu}MJzNo~XnIAui;urRLp>l=%DzU6{1oIX zLGZ*7F$4eBPias2s+vzE7vth%$LWYAx>p|_rHNyI)ChEOJ4V#d5+M6{M}dwA9X?b- z!JaLIXYm=%gT^ARpCIu-Zl~7CYt@Zhu-OQ>ZZ%J0UMWBp(z8_7T30674)qa2gI5l| z%Yp7AI0P;!+hM>~G_VoPLx7PU9Z_ckkiI0yiAtr&slphy^Z7M_$#J+7e+oB{5NiNr zH%$Z=iA|7nR7WDJi-%%6S7enzQt^lhUd1z>Oz8<+7ayrIRCAXmQS6SA9mEgOkobFm z>$j~bGCAs+K(J1g`fIJU-y{#v(dO4$TnjBaG2OEjC!1*NzAByV3Mwa1H(sIyRJghz zDTWU_ih-Trr3=Vt&EV3$y`_7tOw6F@#u2a?RUD;(+6v*mgOI|=vVnAyoL>i}=b@Gk zm%>S>oXd6ZoM+i#g4EfnI#f?Ywl1W~5pn(eNi*Izi}Qb9YlZwQ7c*@(bR)nLhzfzk zeF2Y)tW->n%uj^>vjDLYCGl0V6V!w~MyM`YBlnZceHyBZD)9g#_xrpkqlbs)3W3!P zwJIlYYKlO@>llG7gI*KkJ98WvtI=g<(^Vzgx~OFz8-gxxF6EAHmu~?x@!x;G+QOZsh*e+se)7V_QFxBN9)x?z-f|hn{<> z)WEp@^ON$&Oda;L67W7abrpQdjK{o>FUYO8+y!B5l&3n>OWe5Z4S-dU&$ZA|bYvwa zq~bU!p^R3ubY1c)fKz9Mnpa0(-H^TmXsh6(K!2pW>D$|efOnQF-Lb$+7UD{{;*4E3 zH{6Te$4K!`xUgSUbk}rQ9?5^EU7qLS_Y`Np9AaWwCnXdCt80(y{*->aa{ICnSt)eC z6IC5(B{$!AC;oxoJsRZV&x77Ph`)&$v7hWY65H~d9K?V|2$S~lZiUkWi{#_Dzi$0J zas76C1X&0MZ-DJc3P@`O)PoMla($skON?6!eJBE~cm9NXi{xK0O@L_PN+_yV2(^7K zVvspJnCvv@fq5B-cMSw@v;<4ZKHNaG`MH&(pc0BtuyB&t@V3oB)J9YV;{LiBQ@ zr)8^rR*SAI)dm5NcW!s{hn$2Y)i1gbI$p^$XF=+Hf~BISZ>v7rLH(3Rw1f!%)#P*0M87TECv z2eGDJW&~XhTJ5kWP{Sz!Jzzeq=0q&2f{J|jSNdWi?gp>t5lXC_quO}L3*@$4o(Rvyhm`5I z@Wmp()ifTS0j;3h=;2VAS5VtSrJWzoKJD}TTP!&zch#*#=L(_^;1YYo?=h`;Z^+f( zpZnwUuI|ajhmY(%b73FQ#;hVWADtjT4+}y^p!-HHiZFwr)KfPiaK+|b>T8|GHhjZs zCG}xE;sGfYtBc6)(m36vYty1_BkC4?$|sMMR!}7x5>XNo6}z*~HN8O`UxASIdqjLR zpZxTZwYMM-)rCPd(UHB}hr1rYrTB*td}}Y@BSJ&;p4A*+deijjM=^fJ2KVs$ZH^aD zRar>5Mzuz}cgkV;z&t^^hkSs_5AMUjN*{_D!jLwG4yV?k;(I4<)Bbuyr#gES@oG?~+R^h$XNvET2U&qkA8XR@ z{#J2M{|oTDBCzT_R5nH zu9o3@82B-l=06Ef=wZ!L-(l)p5Df#fipBNdq0fS+aCe~*i6)^d7ezv7*vhpc6*J!$ zh`j*nzas5Vf>QaABLt{r3nY#U^CUp*`4D?R&@4w6`2f5l9hX9EDN=t!p^s^V>jV+s z*o$ARs7uG7TR%aG+l6S)A3vvCan!A%=>p=+%Kfb=a5o=4!ABKKJoFg8Uqn^#xH$3X zjzk3sJCN$+93*4GyfL#94D8q-nZ)P(+!kyE%I-Y-W& zj4>V2mk`IZAU08vK)TTf%9!mvvJhH`cbgUtow$>Mo{@g+Ce>P}I|2z8DDAT}YYh;Y zp`Rt?+s;}72SWwWy#grL_O%Ni97%@+&A@hUNlVgjOaj7^_(ex*u20I0bZIsO01f3! zedbG!J(d(v(Y<8k_oA;AzF8hy(j`Jz5()hL6_h#>RM0qf4Y;6m9b$SDx$7M-v=G(A zeVcd*ku!oAK2vclUFJa|QE)-_;s~PYO;1qEqHi{_O@Julqi#pFB@muH>i&2D^l0gD zdZ@wCaC2b6^T{tw&mbN6FOtt+KA^^y%5GBw%5&j8JeA5LLgjVTjo{J&dtQB#i4S)qU_6%YdFfaDEmZg*V%U!BJ(fa*Pzf+90D6S{vnpH!?3DTXZQ9=SY717M|k$q1WTBs6N0oft~GV%R=(Fk1quk>~R?9KzE`?JLxq?N;$CXQ}f zvFz;0=W{K`P;vaj4^l!7Mr)Bb`0k50=ta+tIrv4&FNsw9e%c<%f_#e6$AJgrzN!Fs z{D=AgzBBGz{RGo2qJKK6f-WTfGnYPzeQa(eBHGblP1t$gM3WC6pzrTNeoaGjzCsuF zZ~dy83M0YPefD32-AhTrRvLp%RzCa6iXyqNjsIX5B{5W52f@^KFq+6KKuOYzx{TFOE%9hz>O#DQ=2K3DKUm}+r6$HnHeivR@)I!rQyDz z@M(W-#+eO`na(ISK7N{H7B;C{JRW#L-8dW<7ufA{G03bSAP##o;?aE#>WXxyJv2tu zX8kt-^d?LCr3>5o_SYwOWwtH#zPUTYd?KleJ`2Db3h%HKCNewZn;}T-ioBtII#`*8 zWgLdd=cnA--x0u@j+SJPiA0-Eqfi7orn@Y|hw@Qv4@O_N^n}Wqj@lll@Aa2YYZYmfhi+Bs z$_H%?=4fA*iK~+~n{cbG!2<5NC|{18X_ReH54nox+}XI^sCo;eQS5M1(WSg)C|<_^ z{{G~S=6e+n^9=e3vpbp}zpavJ$xs<+ZM{DgqVM_OP6En!P~#Aa->E|DuGnV`?o+VX zrTh#ZLsx_rJA($dqxJ8TuH<=fk|fP(>3=larV(+(%x&)x%-pQp?NSyC8*8z06*dNc)*Fdsly!4PJ=%?^n zbeqADu-5CTiOC%lN&o9~-f&lY7{MFw+G)wYP&51QI&%fPHt9VjzR^gR zO4{`4A7(Tuvr_XY#0-6OS3W{LSCek?a?0?&+w*&$x>lz1GV1@XjV~9*Fmnm?)&63| zvo)@2$7e^gFP{2_)kN5QOIpMoZ){jp5S`gp^x~Bo8&gXp5WX9ze~>@A^!NiiQB33K z)xS+vJBy&84PQR}_FAjT&8fuCYxF8Hf_=~V{4vcFyXrG8QCl+QL*`+ME?Y${@6L2T z%%v$~ziG5Z#D1Cu2xQi^8D+@Or$*e{UMVeQlCpc}NRLYMS~D6iTQujHz4Y6O+^QtB za)Js8Ow)V^C42}KC04rM(^y<@`ZXxts?s;hn}#o-wnkJD6SuRBRProBru!k2&`=s;;VWbGzhg0WfPfkZi*eW_hHn`B>a+_!-VS z)%@h0E{Rd{cCS5xPDYZB-$v~Sx#!_8^^)TTNyJ|ffcBQ(wSl6wj6Se9VUL}R4SnOH z-hw}bL)!50({a%m!|x$ld^>JU94U?Fe?iGN3IUQ;8v9;-=Sw3(3UMO*3yy*U7epw8LXE`rp(9zh?Y;n$p^3r zkQ#KC3`luR2)Dt^V$X^(b!P?a{R`A=GQD~hfAGAHiqS=1jJhnFY!-2|jp&=MPSEg` z2p59X8?NLS#*4ZnUUhn=d9TkRz6c63=B0240_LR8)Z%V#UXd+`buwa`<`M}16{gul zmj^BSax;-d$AOh$I`YOPn#p>4R|v8cxOp4;Dp!V}E3??tB4C{{H<;NR|O3W=dQZ@i?eVoz*VUn#^Adc~K-p2i4M-#L*RCh-k&f)E zI~qq#Bn|)|TER8DcU<#P=o*1?Qj0m(8bs&Y%D~6!MGvm6MC!{a5|A>RLrwlKTh!l&~fZ0ryzygfWEB9 z!ndwK0z^e{^LZjBYXzbm&3G5vR7`dM(VGx|1@U%*zPs=c&G4>}T~Ico)@f6C)?_NP zO>w+JAY^OCMqD%&3&X1CWjnze1Q-=E|s%wJ0dVIBbb zNES8VdCi@qCtvq@ucn7VH-nx&`WNxDM?;}(G{*B}KBpWn%NU3r_M&av1djpo!{$Y` zV(KfK2r_zNI1qv1;+;o0qv#kOU-2G3b0;LYKBS{hA+u3Z(}~K$6SNUt97@nQ^3F{c zc9ZhN(d%)UFyELdq=V4eMn6f~d7Uo1!O6CLKO=c6m||TZ%alQ1XZN=r?0M{d-IC}x zB`vbzcNJ5j%@QVit%CN1lE7ZEDn&cCx-YkIpn4j>TN(A8dCEG6WoV-a7dOg45%s21 z3sXYzQ>-51ic^W@3`^$&R-NOH3X$UiPVcz&9w9vL#6ERZ;MC*x=wJOBWPI$N2J)V7 zNF``!B+ue^trV5ddg0=b_rts!zXi_HcPT)oh__G6Cn!AD&DlED=H$Le(SZ>oS#mNmv;)^%DhFs z{(vv%=b;j4yI@mczLM&D{uZ>TcL@wQ4D3YntUZ^QpJGYY8*qW{1~furtb(bnn<&*=8_gd)1d5#aL7IA#i@tnDNTf9YTGCKn4UeTxr-;Hqf~6 zd*R-uhEr9$foIk6?ry3H4a1Vn+}3Abn)J8!MD24iibHjbmMz`_Fjv;=M$@)&=^T3R8Z zW-cVyYv5x;`tpwTgyh!bMb?u=iF>jbdxlsHeL^S6?$LFT_61ME1IWD3I zo6dAvId57FNsB|Ixj&Q~Ms|)P*^2Cb7Vzyx&B>Cx3xjv{-n5<_H`Z%Ijj}i|tc#Vx zI`R5#JBZEZDRd)x+cQM_fvINemNqLq+XfGz2u(r;ppgjE$k-A`&&Ts7Fvs9hIi13# z5<7mJ)Wr+AK2INi`)nyy)$aZmt~F9f1Uw9!2U)+Xf5-vPc4$L1GfwqpuiBj2VcROWd9qukO5LJ& zg-Ii|@9U7Ikh{nhl<&pRy#QDN$~20Q#XH$&PJ{*4Qc4}|&UY7R4Ln&~QJSB+#hKz| zt?c~z7jCM<(x-FO^}w_h@I-pQZGC3)2=8~By~lVN4&0N4co6xc|0dY_maP5>B_~k3 zo-U2o_dpwxZxmZ%9$t|N&xh1hIBk1y9tV`ToM<350l~b*r@hWOlu~ZVk_$nXoV0e} zSU7CAM2$T)2yJR@7-+3*91OQ9-Y#NP$TvCD!ZhGy`m50PeZg!~#A6?s;)s!EQKg9u z5n{~)snXd8I{FgUpz}|M%KySY{*csPf08(Cck`3nr&z?zN{MeQgejiYT?6_&#XRDc zy}KjZiU!(00zbviPUd7C7hCVAm}pP)K0oun+vR(K)_iMuX~zM|X0|@ry31Jb^8WPz zH-$4HhSRp;O>LE`b5B3L zdx|xvf5lrVda$a=At=lN*W~bg&Su2(vYzZvRZ-U}rrA-fUt2 zXdQYc7}}*JEPQ}8hyz1f-8xvKo!2Yr2v?i)ah?V* zO3%x8D2&SGqTcq5Z$E!-B8R^GAc77-t<)QMc5W|fZC~*|J9k&E=WZ+CIot`wcwlpO z{BDrG-v=+Xx%SQ?Mf5@fM>`;EKcW5GG}s!!<|?zji!&pHx;mwlgfBkx{&qA1n&3spuARBSiOBmL@pvk(eYRqIE{_aOML3yCUtTn^Ed})PXjxW*njn?gBwpoSF|IH zW5_!c}~;bgh$VwOpOLT934J|Zx=jk zU4K~ox^?LDsHQjFu%ck`i(&0|Rv2Wzj!MFM5j1r5z?M^>fST`V+ zAf=Ftm|rh7T-oWhk!|Yc`ZbhgG6niTV+!#^EzW(@d{DF!@vED*v%$y-rJmLuPL7%n zFexL_R|4#u{G+4HU4nILrU+yJB*-oEG?R1J5mvgO?|UrQAoslXIy^v?VHXP-U$dq< zLAyoZq6{5qPupauH$;3?8)#3#c#T^3?N2ZRoNw!C zM+V?fJ&`DLWO&m!?nV}#CGm60PFxarTRSM-ts{?f*Z*~3aJ>vx;zW*Wts5xlD^gMp z8v^ab+(QNla*}HT<$EVJuNds5!aVr^2vxUm8oz*i)5)X%tf3=0qpl&9-$h0F-~VI} zR5T2=?b>$u<-1k~rEm@X9QO|%GEgpSb~|j8Z!4;FImcpiqgbZ(;2r-IL)Nns5@a6) zKA!W3s^J-~<5dQ4Z|z22*yUWfYoIP`>QzSi4at3PAtBm&cvkuVEH)i(IK@0vuY4*U z7PSIHe|J5xY}W2*9Tqp?{%k7p%7nBsShr##Blckvz#wIFhTW9uork`78fFOr60`XekYedf+)^U!(Lva>>d0^!>XrFmE z>c28NG8Td2jQ$+FV(rof<)XhG-d1L8p*L=P0fG)M{jiqQ{PJnBhKRx5AIo_z-0!*a z!3wj}ehTa;G^zO0MiVpyE<=w6+Lf8GJ-mSU0V!=^W6CgZmymYG037oAmAEy`oXnEi z2R6sE_LW%KbNXWwA=)~ubPhZ%_V%ff?E49|WYY(!jWhlC1Nz5iT2Mx@<;)CQ7JrcG zv^3>|kzg6>QkmT+mXzH$CDrwD%6eeV4tjhCVP>V zH{7r9WT){tZ($}wmF2>Py!v;b>m)1v2*<*W?YA_W((o?T?&5Pwrm0ntb^WZJ03z2( z9dG*R6Yy+a)8>-5O$IEMgFr|bPl12G&d=aO-u-|WoEbBCmLJBE-NjIx3N}sqnd#)u zR*D5;@uQXgOn&5xEdE08nH$&AmV2DRQlbN_zMGcX9FR7zoxpu;kj}CqF^N3TcCtQf z_HFB8Hz#;Nf8Z$R-;QnNplw=Bcl!i4H<%_X|2^kt)yZx>tVKtl#O0LTaeB4ytD*Y&Hz(+amI+e7ADeNF-iwdwGK!g;p}uY*9am@OMZFI zRxnH7i@F8z8c>zezB_@&3SM43?UVUv+nm$-M}91VnA1gXesm}?%a_2`5dan}0nbY= zU4DC0pXK~3#yv3lmr1LKD%w5RG)axx zJ77duqnrktkY7v|a3IMBtUuZAm)9~1SQ!;;adqi~$6$+)%#=Q_yWmO02ZgS*gB5{b z9_c4f=UJA{-H>Omi$%9Hvve}&4Kf9xts#3nZeP6_kv`Acla;~C+RtZOAwW_j8Mb`> ziO<`n+ieUzKTJ=!6K-~XQ0l-#OrRD3IU&USQ}kwU93)F}$M3_=tV)N${A19V5E@G! z@k5@ljM^ce=Nk6U?``VvkrNp|%+pg=k1Q^e*a;-aQ9eYgo^^_reS95$s$Lmn`hYDu z>bRS5$ZpvrS)u&Qd0B&27XWLQ4$ED7N0R(`NH&KZ$L3h6?*5?td<^<7GqP;|2`|zy zFTUIOu<8@k!&ymeHN0rfdEcSGGv4(>)2P_n@5T)NWx8H7sIG-Y@*y@f5GJ?{EVwBa zso$RrQu22AD3Wk#cdPpZM4P7pur%=A*e#vYm9>odL}`L<^xq8Hw?F&acNLj@T!j3a zrjs&&bd0P9LS9R>Rq!Vp=3Qwlno@B}aUnXJVnhp_oT6vtI-&OyUNf_h3Z@RV>p2H^ zR%v<;+x&Y|tohVlH*{;%rowp$e`$X$n+jf{U3MwRH5Uu0ys=mGnwnJZse>YMWGP-(4|ms_x#U=08o zyHlwrqVfSiCbTZ4-6ypBaW&60^wN#OYgc)q^1uag7){PR%iEtX*GCkW=1 zlD;ZBt@&&6slv(CM=qA%$GW;;Qo1}^X9mfmn-#ZpHNrRYkVYETUvZ(c5AW$T(`&y^ z2b(GDkU!&$Kf4Zu;DU7=oZUj#VTY;WUcIXUas67)G+w^5@7|0GxqPZhekt~}UW$_G1le&|hbvmg z_F;54WjpQR8bQkbJ(jfUM3GJ6Tl=bQ*OWM%69e&c8b8!V>f?)pnzQFKR7CD4vgB5 zZq4|)EW33mz*Xw7dV1G4{ zbPj%z(Py8N=sa)lUf<%ZENaIFZL2ShL50RyHsl$e>zs7gNLKy%LY4Wi*Nt|@$#21) z^UvQyw_&sG+6DNd6I_FmKrMGQ?*MgAlj^ddD&8|pcj~xE$0XmF`rqKkIFX3z_|v`` zuimfhv%b=0FMqm906cKM>dy32T`u{We4?-uWk)V@A!L(5Ir@I0vEj6;GI_6?uf7fi zG|v_E?>Kc2@i)(?XJB?vJr>`h|3q2il$w0NCd*mj!`2Vy45^GF7ey)M0Xb!i=752d z`CI3QAfd%N+Bcq=X{%*39FcgBIu7JQ+-Jeiu9E6s3$b zVR>o3Hnu+x1G)zE8m4Af4dIN312ozB5(Oe2t+uY(80M9aeUTHb}b>$kiU zH?j>D*+`d)2(WT}C&8uDbZmXlG`-88x5c<#Kcj0Z>UbV2)2+Q%MbslBB0#o*h;Yk_ zW}@ULisBgG$`ZoFWC@hDEsSy>{bO1Uai(`#jH4nqNpUYN5vLwTb#$M}wh;lcjPkLT zj(mm$2?O*mk8xHd*Q8ubd71N)fX%L9piztg=YfGzD}Id>-hBjb)0#=5bz)y7_Soxp zLL8U2tBUy9w%_a7Y&u69ac@wuj>?>Iq6O?ggf9X5_-wD9BDW1!l?s`UI#BvjwiUjV0i>Y$Yu8dxwFIcv1zMNg!i!P(c{uCfo*;XG^W%yR+e!^ zBAlw5PTE@*R%X+MVq8ZQ`T#f1n06)Oelt+o2)bA#%|nyO=u_@mp;}vzgJw); zch90i1XM0u52(lJHsiEia-@iTT;e|*S9f?m^db1qz~g(Fwyw8cC}-dOr4oc#J)nM1 z`0B;o%QI}^=pd-D192(W&09ex-f=q{o z#-n)CIoSTMnWS#xkoS)&iY_|5&T7M)ukg;;d=%4^XZDI< zm){fc+UlFD-=aeLWMI2(g{-~U7jaS6@gI-CiQQ>p0?YDJEY3B#C7z6kH!gQbXm(uyh|JWp9B&EV_bug*Bf zEiHnTq`j_!K(FcXgqRX1{+J+$QREQL99WWS*eyARNV=&J`SIFSv7?z6ew(?)$Z>9G zNj&a@;FI&>!qh&zRKS{{2XL8+U*6$NfIlfC!UL+VrVpddr%BTbnUG%U=M|*}d z`!cFf0LU2>kx9Xf_RT9*Exs$^65oi^0r2t_Jslm6zyB0Pz{I+Y6ZS z=`HrzS-W8WyH3}pd~Jh*C7?f&{hpzeZWLcHb9n#7-RZ}@Mjni>)!_KlBawt$kMh~w zm|&Yp?~zhr>xHL(6(0FK%JI>q0TC(QBc!0<<0q6e4-8}u#6G;P(!&36b3LUkiiXd1 zI}bu7Fn@fz^pt^~C-X~hf_TRg5o!8R%x|;Y*QEzXHd(f^^W4|hMZnL>WB&%Y z1ku$Ifp?eFYm{u!(*Q2@4aFaTumcJubD;1;d`_3Z<^X6qMLoIWuP=0;{o^G zRN`|j0!l9}xkmYGGNnElm5uLNX_jVaS57H?y7IZme+y}={Q|ykEKz@i@#vihnHEr- zcK=TK@2%{}&IM{P=yjHAf*Kx9HGk_5Rb;1mYHr8Ki4t{jp-N1%oS-Qx2w=Uh() z2x(H@o64x*>zxAfMz3RpKjS1n2B~DsP&i8@cp1Ty@zF>?TrU0h;HXb}&7W~-)Xp1? zgLzxRSF36=bd(mFXKK79OVZqq9UPFFwmBwQUfc3(Ax#z{{*)}rq+lE9^5Y0X(0=i- zOs*Ldk%btTuZjFxo~1mRR|OmRhw^NP@TW%{w43)Kk{|+t5qsNJY(p&K^btV_5S>nO zl)}h}mkuU!BTpA#%oUWAf`ik!-Qh62=%7H3X_n3MVDtv7A_4HQ;W>=*mCg3hKCtC-dpT0(@|DRPmkZkID+ z8;bpyQy0WDJCU}UuV<&$+|`}%9{`T-&7&hyaX@hh7qL$)U~(*C zpM^WW>YCy>jE(1}(|P@Ok-!9nVs25?YimycJ1Scm6AKjArBhsAY~t(&1RAZ%6#kQi zNfRNMP#~s(@}9*NP-C9R=k6=tNX^W+{&&!Y7nGoNXeilBH^VT=eIwpoq+DsNK}qC@ zj8BfuF`1`YhW5edr*tYu{hXvU{-$XdK|MaMPspSz_xK;Zt4P(iDQytYVEYmlM?(gD zTVIc13&@g|;otLVg|gORUrS=`9K_=#90Hs8NAmL-yxh37q;^O;Fm`R?1L(l#{_^( zbRtC}k;{uSW@t#-)VPH6#VK7Q%U#=0ShMF`aoA5-E=iiNUPvnL%E9for2ARb`Jw zXwJ|}u{|rXidr8p`6#FVdL}mVW>upgYK00iZ}%b_yvg^2`~;`S5~qO!Bi7xS+!D)H zNxNW2{q<5yg|Z_WC8#BdScMHDuzyj4;T>VS_PXLNP^RBcZkH!TnFtESqDu0;$-{jD)i785wQY+Q&|OVOS6On&wuooEv?d^6}{MW~agSsq6o& zga}+Q8hxJfktwcqXE!q6(JaKRU0T&!{JW{taSl|K5|6&lg*LsZ$)A*TErOWXGk}C=&{w+aWBkJ0_zmDbw*oO`vLu(NOmU;Ud*I^O<5el30cuA%y?GYZA$`9ET8r63RO% zr{L!2L#1!#yxs`iiBsVMML>ERN$#6Ungc^`NaJ$Id)j`uVgEpND%J*lDWs{&KO<0e z;)jzO(DgB5+B<4_q^CKslsX+Na6|j#(P?*|PQCPYh6a=my9kt1v_Abh^XC+r!+hcN zetf4?^6Y*wCS0OC)p1YY4$`y$eW9LCU*9E)$Y?e4(yTL-Gqo(4pZ0$|WU?WWW{C9U z+Rf4Nkz6e7^L`yZ7Y-2iEZhut!k_N=zSnhjy~}VVQD3?n&P$W1xD-3svBCHK;+uCv zz9GV`VTeBz6;FmXdYfLHsoiEXv31Gl*eNL$o2HzJ3Y_h>(t=OFfM1V5l}z)ay-`>6 z$;ZLvpmpeIGsWv}w+9yb!0a2T4OCwV$1QUI7|U7u7s~uR6igf`*!vbF50M4K@j^X+ zqL)aTiIfjViZg*2!q-^O1SO3qrLj;?^Xny5+=a0GEq1h zq=PJu;2z4|u{%naSV}tl-1>Wi&&hWQJSROATYvV#S(HfDiTE$?gm2MZPZdkZbZiV! z5;3PXw9iOeo8UCR@4B{Ww>?1~IITHla4^IufM8SOTh%z~G@jI3MeuIUcxiHPm3YlQ z3}A^0D$gBI#lC}z5^jD=v2h7F{XqX^ntQY4h@M9cSGr9ih(Bqsfa}@JsuBLWGyX*y zmmYk{hf@14w2`qV`lF5|oPJa~g*! z1;+qF2(EB*A8W3krE#EJY#-7M=n+c+THgV*&(Fk6EaH1?BEzkROP97EcD9x?SY&jU?|JG+Iv zeX#4@kbmH!Ll>Ts{`MTc+Y|AZ0^yKC{{UzQ7x-xlS$6@%bGHo0#aVay&yY(>{v5J0 zMeb7M)@DbZoo?`r5f6^hw4NA;WA7gy3Vc|s`K$2?i4V{@q4U>tsHB*^&j$6bw%`kx zw%N;Zhf6*wJW7D37uQU%*6ruThoykKja;dt^xiLK?-wsjeu5+eEu zlaLU$OV&tO0it-8|BdV{rYlQaQw9mP71Z3_+%UegyCGSXAvkspF5;DIV z?4wYud;YWS6(aXq{UJeUfb-k!Q|_72T(C{ecO5sdP7bleE`RsY=POE-^c`d>dW`umI!Mw@!;U)f&7hyU8# z8+G;EzumN%K=O=B2X(tM_>2sFw~|w?9hNW2m-?&myJNWQ^?bUf?(0+M%a`55;r_iLV>N#dVZM<162ClK|L}a0qS8E2jlYzj-qoRn8-^Xah zUHl__xL4W$KqK!HUl9A&2>|HF{QI7kS#&EYnq5+5YnH1ya&>D{{M`MJsvhdc%Rw9l6a7a=-Zz zwaLdrG_G^Zj^|&in{CN!X6HQA?Ed$DdSBR`r!mq$lw7ab`+KOhU4LL&1Fr2opPP%_ z4xa3|JH;G=Yi{b>GsJpuD_5oSH0#m`B|Qv#7&iIqM5;A7A21#0@#*3GKhsZbnzwp{ zjDh~uJmJ0<>0$-9QfVFrw-)xdszjZRs700ktg^DjZq&W9!3KnH&ppXAuR0~3WA^La z9qax%NZD5hd!_OMzGx9lKwPIy#kxaRSh=S+Xsv+Y@bDz0#+EfiP-r3IAx0N}zvIm2 zY_95(TNu&m9WQZd`Nron5Z;C_$*V%J-dTq>qgl%j@UYI`+uFCLUEMnFb$n%MBfm2o z$8`6iXS7e=z3Zqq%GrGYPgE*lz`Xv&A1zB>_sS@D-0lBa==cw?UU-q$zg(!mYSXlb zwb3~CDp%XO9?nPqiJ&p%%e|eRM@!>qOnku&lY#>l-G;9}4%ER6&A5cyrN&f|f#RfJ zJpRgn((1~`Uas6VdCx@S9oKAS%f?b$J#~AIO_-ZEZ3$-8& zdY_vi>b#Cp|4Kcp8#=P0rqE;et<~U->z|jRGowGO5C;Z3;5Y8=zRSJyMf-iO{^#~r ztvYs^&advh*=i*W40^@D4aU4RUu*U4rWGF6pIDQhA}z0#JU(=Lt@w$~uTZqB1u(4i zaAa*``I+O(X(DFKipxm~1s#8xi-o#f`iuh|D`(Qh11kVeI|i}00Hrz;wEt!o9}&Rt zpd~)C$c@l4XV3+g3iIvs6ijKjT6UQiuJ;8YU48R5-Zo7;qbx5j+lF0#a~Q2eCx-DF zqim&+n@YPg9R3qz+S@V+02@MvS#F6QRihi8A*Rt=rh#|J9K!u>+(~9=v3iBI5Ppwe z@?R03{@M+=T6*rSjjx&7>G**6EtCD5Uo&-+bA?V8<@&i-K*d|OtU`#3`@=oc3Grp| z_q0rdmgW3o{`HueWQdBb+oCk{}U=uQ`nD(GSSyozF{Vy0e>jd=iU6&ae?- zfEgPqxR=H!nkU}&nVhB-H(>;V(JCDDn{p4fRd$#<1Dn+vQ-h`noL50bIf-e-8=vKS z|2*Jtb$zU!j=1cL8y5JcoT0f+Ob~A-`}L=-?f9VFU@LMz*$+q?-28L> zA=t;e83z_AqGx1ErFMd{4m?~gh~8U0#X~55EZE9AF2#m<=n8z?*eWc(GT#ubd0k3A z{^q$0Zh350)L@RDZRH!s{6A9l_osJnzLuS^vmdY)=i3%74bvAd-#fIMj_gk5fX=Jj zUfWG5H^?z;5re%?w;r%6N)6iQRChi;>uY-5tPCPKZ$GLo@m17^_ZEooV^jEDzy~3p zZ7ZS8`%qzWS}Fn9(H{L2i6slluvX-ck~M?r2K+KR;UZIF`2cJ1U6AMXs%zI#5uU@9 zE2n>S^Vn^X|F*sPmVykhXt|;GUxojDnqjBXRC zqAh(ib91=%vp3(tA8y4Lh{KX~tWljY*nyM(tPt2d{)2&dktF7-_@(4g4QsbI`YlNG zTI_qpheA2}?(GCNo8MxwNXKG7$QuoLtt3}uyBnQ&fA=m#c5h2`4R=Uv)lX!$uG_QX z^kJ+Z50@nIFpqA{J9npM0`s!8Hg(gjpSaP#$r z$u#MP&YGSNz2eXx^#gzn6Iyqeb!LM?>We zvgCICA}AR!>btu1%q}MCfjR&2DXt)qsVSm-V!?ypKcS??0Fn#98i?C41aVaD-waKm z+WOs1nypb6MY!I>O7i}$jZQ^iuBOX2vOakPPh5sM?hT^~r++K%`nkLifD4p%q+^fc zZQY29avzz8%s>Bu#Ul*meoh}UT8J0jD(EDf-_2-4x(VO@kS71#^^V2M+QP$k&fZn( ze6Hv{03#uSkuRD?G>tpE$}W$-aBMU$Sr^_bv`y$DJcz&LcJRxuP!EeCktVUry0>z} zNMDP(ndj~I5ZUH6c+o?wRiE~A62kw|>?{6Fl|X1|%OjbOZ~DBA&eM_BTjl^PwCzJN z8dav~o2xnNrfS%Z3$Vn!&IRJ`{ak;Vo{l8o$kH#;UVPkkNZOX!5tgSi5h;dzhytR<@6BKlZSP>Y)(*zhe|yE6_{-4bSF%{klcJooVU~Pz=?D{ zozIQ8L=BQE2>TB8z}Y~3?A$JQj!E)hyP`6f#)bz9CIO`tN@2nc4{e^9*Utv>w!EI( zy|DgPs8@#_cGP0;S*?>=u;mkEW3{1rhkzS1rFMRr)T;=R`C8g}aHlRah~N*}~HuCRaZiUt<`O zZZAHY>NS&$l!;xV#unyols@yxt~GMM>QYdudn`fxmy?m3)Hfm3G&lcTYLw3k)0yYJ zFqaSRjklHb)WTOll8VBW9@88aeuZGbDKpmZE}@zAmc?fViO+{gOLP@k0iD4? z%XWjottV|@w+9T-FIv2vVM{C5v5_SSQ@R_5$ukj`QmXCDq$OBeAmlFY&ambGYe}4u z=fzF(-?|X^^^nn7)fL!UmgXv-TuteQZMIvyo2^7)erJXq_}4pmuRN2a5V<((dk^H! zBD(CHc?*zimGZb^d#&EBuWRHJN`v{TFCs-Qsm@?Sly=zTUki6L57upy0|R%qkHm&5 z6;C+mZi73(RO9JtUJZv)gPr$RiMj#IzudDWs4&PMQM3GL1|lwP|F=H!rhVyL4Ig8f z34jh)Rta7C!4SE}KCb6o1`q0}c{jD0{@HJ!BSsYB2$Q2MtC#vhx1p`?i z+rRZyI!wCIKkoH)*vJVTm>>V)=Cst(60emgs?dw_8u9*9&?Lvlf6s3;-FY2*k|xba zPPgGf)!~lW-rkm&KHX`(I4YbP^sL)qR@``vN{B-^Y^~80iRYWG4BSQ)TU>MDW#h=q zT}!F8IA(}uy*P8aM!KAR;GcDq5Ga6wNi;#VEJWsj_hHxQT2ybO5PEbsYlk3FK{p?^ zpKe}L;^76~XM9n(+CM@?T!&rR1gcQEZdTO{9cm}ad*>DKrvDg2N-D?XVv7&#qDK`X z83zfIWlAJ_H1k^^jBnG~y3XBBC|EaR#2zTnW9z*y+dJ`e?}1P>Ak9DQ6b|I$a;B<# zXe0SS#!@H!Rgh7d-}R--b1_faY;80KiRK7KB!B7;JuPdSqI=X2L%&eHY$Mv7^&tApnD$r9t@L_=-f5u(j(tGFRg!*>4 zP2d@VL|7@S=@%#B2&k4i{buvpt#&U%BKR%oL|l%}v{z)?Olv(~nNzrnD^bm^?OC2F zDn`BUMAE9%sn9LP!=wmY#V7jpXO&=&+HZ!R31z_{=U;vpi9N|%sQ&Bz0ikg3h`?W& zBbXXa+ZQPYB8-N~*?5X|&<&Q%P~DQ>&u_g-YRnP60bX4o>z{wR&69VeeIo~|WTy55 z1y9K^#WcGf5{D;+4E`R%wp(_kw0ge%6({d z+Lnp^Q#AgPxTJ<#t3|oFB8{k?tvgWBB9cuMX1wdx2IAyx184(iZro1 z3c456M!JKD`&i@0f#a|)>#tWW=OzdFqyh_DqD$l}!*Ex5fX#F3=a8Ho`;v6~+uWET zJ!`%N#OQHE+@*647>Y6p3hq34o&JY7CqV!lUDSAgN5P>@aCHE1dTf&M@ zhvJGIO-R{tQuDazPCDFac?k2cRQ{oVrnA|i7f&nWNb~IcgsU7G9l7ZXjoF!X#RDjN zS(Sz;=9rrzkkZ&bp}Op<{&5U#`S=GY^Sd+asm$X(XHdNFG*GrR*u{(;au7i`w>`5F zufdDccvr50v^BY7scr#r+@gXl)01!RIQ%n2c)G@S*gz*{HJ82kB07|4Y~dzX{uy>S zZz~04iMHrZA(R|YVm`MNb%_YLigJEU}}8TBm6a;BAYzaCx}0^;a&)P*>Khfr=-CRN_vvzN%ul zphFyyi(MBVTBpj>Qm^Tu#uAN`d2FNVWy+JcGEaVpz6>?Fyds-3s@6~pUQhJNU(Y_V znjO7rsqcEGY1!x0934ajf7;f+V~HR^k_CX)E48S70*@yRTKN2M*C=ud#b-FnpVA?a z#D+a*hvyFy3%?QbtWZkZajc)BZX8V)mb^<4F|GUTwTP1#B#A^jiBXZ1(nH8l4m?S? z07ALR7UQ(2uzR-x{TK;FOSH$ug1UZpeBuujh@qmD`aY3QQp4W@c$8il?x41JX3{R%G& z>QuMnleGv}zlxRB=dr;S9WJMzTULO;GwEvaAtu!`-j|K!qR;rA7fTkPOA>ZPZI=*M zp4NZSVe`#M89l`AGo-AZc!se)#hcGSK?k#}IR#2Y*FxM7q|TqBmgIAkC0~yy`6vbC zc8PraGx;;t`rb3>SOC9hqatQo>EL$(D~1xAEtoZ7lgYI&#|8P1>(v{JT_m$`r&wV) zXq>X-@GL9pt6Y*DxRY4q*iDk-Waa21PJb6Yq)QmY$6Sk2#id9+YEXSla6VE}trG+) zW)>GUC%ri0g6~lWxf#!F$7-#G#LQVfm@vLomqfX3Bx~sGx9U=lI$WRNyKj`C@h7)6 zq8t!>>AWR=?;xZz7V49NJQgReRVVN4<^ey090#3K+bD05fRrvfoVbV>`Iap zE3vnSdCg5K#~mb<1W8d~qY^!^S z|7y1VSr=^r!i=Uq*J(UQ0VyoGc%;e6m8#{Jk>-l%DItjZuFH!r8X4~pwp$tu+k75^ zv|S%?E}i9$fI6}(Pxc$^=Z}3@EP*6sAkL#J;-ue%18K?E##-{`JVKNzNyb5PdC~H3 zU=cDVhdgJ{@b8DzI&omCc`4umc;;9H&&8giLNt{K1bFqV2BhC;YyhN0lhaEvajlYsY?uBpfY<`c z?ice%ZaMrIb2!%ot@?IRCb+;|m(QJD83u~{<(3b|d&p3)a4aRWb57bcm?GoPE@P1x zyd)&!z;ps1%prX4tB!U&s+0|@HbaB~&)@haaAP&{-?);@sTSf-R5-681w%g|`k@@b zRX)J7`hYwt#U?eI7FX+`PP;prumn(dvM#7nMyMbSoO2U3b;4Thk+QRFI!JHdU-84+ z5A5UDO^c3bP~^%!Dk_RIP`H zZeoy^NUl&XK!-X7!kpyy>VQ_IK)~F7<{!~xfDZmU<@1s9?HNs$YZq`*5SvTN!qv@4 zx8ygf=bDvKVO!8O8$Onpe-S~~cOkIPvBfu1%wPr;+f;>JFGdR6o%r z$72DXScCq|Wnt~B#ow!7+@N3F4D60OX@;N4t2=$4uEypWm0C%bAd_xdwvGtHIlw;V+A6X!ibe(or%=o<8%t-H{l)kNLT zhk%TxAtgbAtGXgQT>*jYhJK zF>VixIJ9SLpjy@ON4CZhLM~exH|FUkP-h0z9A)9^g6Tw9rC;4@%8djecljW0TVQuG ze_{)?>K7Q`2feZ<=hOi%M~L3%;p80m)fA@$d0VF1zxgdWc*`w8k(g@|j)Pb|w&?*K zjRfS=**m5bSkJjGj9ItW>6W5U2MXOEgc`iYe@Ub=w3?fR{wpdLrSjNM3UfQrNL}hM zg1?9+II$(#q>HL6qWt*-+R}8U$DEj(r<{HFoMVcTBgmcx$FgkheQ_)iBHo`{mW}do zf!4~rG)(H(zmZUXCg!|)yDFm2{$5Im3pLs$WE%Cb8u6-9Sp|zk;E|Z+3nwa@x3|Gx z@JRQ#fwTeiO#-CG0C9ecKatEQqX3n~iMn(8Q*nYOTd+f9KG7-uw!fnNA0gg9t_dGH zaBQ0Io?>{{2h`#Pq!(}fwQ^_VX17?GDayI?%FTBz9e*n+r+P8eXPQfck3Chs#5flt zp7YrImm`wL_CEb6nC_%8Ht^h1(jeRH^Y5@jGSH9{)l6$uHa*oUN&FUc_c_E-;egm4Mqk#OyZeNk|X3Im#3i-;S z)Z`Oto!NpXNgu#6 zFKh{-falBNXdjHo;LM4WXT*{@=Z+O;66s>OtlGtcVju0$9o6D(XXniyDUf=!Wx=4sTcTA6Aq@S$+zODg1*-J*H2q^c|GgwxLz>!SqkwO;pMxtk zE41X{q?1l2tqDG-%{2;}WvWr&z@wXfQrTH|8#kJgKG0*E>tqQPV6|m_UCzw$p_wf@ z!fG1vmGAX*{>$`BtG6^0cRWam&Er~gKE0(Re9T1RL(jx5m^%*g`YZqWIFQ>tu=^4? zi!AcMRe*K!ar6nHNFDdaXD8PWc- z^1A`TFfMEBj7q4p#Y4i~KlO_?DAR8# zoL@2BJa@3g+k1bUZlr6;;?b6C2P{k0LmC)P>aIr5r8X@$LGF&0m+v*s&CvhLQNMUg zP9rcQKzDg}Rozeo0x$Y_U!iO=u>auh z{2*YaC-7QV;6WVnov!d44qE(Sc5oCQ$NoRYi^+zX9W~A5JOoqth0PG&cXd)M&hBUTnw5r1jWt@bKTjg~0rUvT zwv!K>F6?hV{5O;_igo{eD07)a;31rSn2?##)XXi-`T9}UvO?ZcMfxzGOLb~UL!M;! z`Y|+~SLzg6R07Qt6SC5r;#9;${+K4mdVL$CF81Y!-ch9|BrWTfJ&)6Y zllS@H8iJNzBOcbPB_iBPkHsso5$do+d7;7|tzJr^U`cY=+@yoY^-A@)>y65yDJRDMhaOB_<;kci-*5i1Y_s?Ed>x#D1cinq^T|n_yAY3Vc}b~T zH}3SA9e*I>&&2a96kf*P=zIA45a0d9r$Dt)ncRvjWP4T__c)aznO*fJXA{Myug?QrAC8PtG;i&cK zxtp4)$F?&8|+niqkr^` z3gXIi$n7P&>WwV89KlU1^x!@zJj36vcBJ|bD|f0vK|{=GYADQ3EB-^+Y~ZcH4io;) zm&LW)sc$YE@9uu+&Q0%LVNm#`nFOFdy5C$q0|UB6l8kraEFQ}-i~@M z`?r9*H=w+6T-eb&fg+5ehzE=WtII!}S@g%1_bxc{4EQ`=lLj-&JI4Y3)E5r^49}Zm zN-lO3b)jSXeN=ITypv>O@M20b-a?Mb5zYYowU6>F^jty~N+Oee6M?K;25YNdl8n82sW= zQ#VUiCQiZn+Z$4`ghjnxIy}-blB(-YQg<2}Y7; zeCpEcfx?hh%NGu4kDjv9{l*50;QoMwjjucV-p(crmCJ9hI;5{Apt(6D6#gSYdvw2# zXR2Quu~0{lrchtBWS1@;7EqNdU==i) znz+Qb_Ui#sVwRpf)~!rojhg(M$qO5yO5I2vQhvP8vfN!3Fj}Mt=vy-+Lp8!lYQR@= z>!nwnMC%evU8)n_HWz9UD3)w{ba~tzt;K@k(y1ZLSlnzz#mOSElwiW}q4CuDP(0sP zUpd{{w8#y*q1e|A0ev>GO58?G+)};VVx+Et!{$54@zYc;&P$!A`5#~$Il}2F&t{Dp zFy@L@tFp`Q?PeItn>Q6K^isOUmGULmo*7VR*kLveq6|=Y{p0lLiF>1ZWs;YVtd6l> zP-9M)5*X+PHgrsI8RF~Dct%g+bQL-%|eY-Gt0|XD>pu<&X z(h=l&Z!xv(>?{!eLrWaa^@R^B-gBqGh6G*==c!b&km9ahM9XbV}iRg zte{&=g2419syVoO)7lte>yTq96ybJMZi_BK;+W86`NcKyoBf}|mo6iZ`SvSH$s*(P ze4O$F$15aOOz!7zv$Z248REL@?Q#!YUn`VU49g^G`yj<~2>VawYwT$oC#U*w6*bre zb{%h;W7)o{sw%T0b7S|Ah7(of+uwTran>d?k)G$ZdlP%C9w@V{+Geu`gr%x338?zL zs`5db-MH;~%A7aQef8#^JuHM#4{sI!DYTqJUl%9*laaiA8jS|N%c@(isOZ0uf|b8l=f-U+z@lIw6W>& zv=hIx1k`_`#n3YlHN?t$RNAA*&CDuz_Lj*}*G#R3AR&q!{a&)^0h@TD+w7_DN1{1k zNqDV5NhDP3*loekeO6Yhw~b0qt*}uZ8)Asy@+%C;7gxi{ z&;XFD$`K652ds;-P4_aIo~M5qKn!Z93#W626lAE7W@3hhgO+|`^C4NK^(Ba(JrLdY zkk!h*gfDU(=J)M@g(UYwduk~&-nbmaNDdj_)F#oATq_&-x4@`1s)jaw=;cSUfU(jH ziYN{(a-a(NJ|6lBL!Z2Da>jTvMO!#>j8PZ0L=ipvDG)Ilcov`G1os>!?5kTR9u$Aw z3`&P>OwB7>>^X`!P3D#MW2a`Ahn6>$dp1Y0w?2loo!Cab_3cp>qmdyhhv{7s#f++x zytt}Fp}+rCI4rB#^QpNsgQfRn2HLbGwU*HD9%n(~C{Ng@=SKrp*^HWu9^43Cj{Y-j zQYdib2PLAJVcw-GDB+J9Da=q|UOxqK+pCAA;uxwuaaZKq4&`c+g_|bt_MvD-~j?QY8f&Xh88@a$1pen3<52>s{{wN&DvN z{-6rsuhI#fCRjJ2q|V0U+r)DQC3E(5lX|(50*1Kw8r*v!`&Pp{QY8ZusEaeo3hucM zr;w#-meM$g9TsedgB*-651%>cHBk5Bx`j!7g{9S<_uJXoLDga$8X|TbmExPk^ZN9@VEC6l3;69uI>(oGs=$qnE?m{}XK*9(&G!iHaKuty}-$rWG z6yc{Tgk(F5qzOf$mO^2mVr-oBCF#reEt|UgD zJur_R^t2E{moEGYG4xO{9xd1-RGYeu5Q!>}N0;mG0YrDRgwH?7=%*p<(#wX=OyrC-OUtGJolfDNT9u~XZjG&BqV+mn0D(HC5BR?#xU+~V zH{exAEK2V|Q->llQcIM5sH*4IO9dtS7xb!TkiQSaf|WI{0QPcaP>Go#yZcr?{xi*x zYM8YaF(a16aEb&w6ZurP?%)t0&>8abioH-nCLV>ltXKPAVtmb;yyxR6*zQ*y-@|QcUBNXz$@GywF;?yV4Cay zu|+mm_O`&|`2wGho<(XG;Do;rXSW+#E9=|IY1TNYJ z_4_b2zMFbk3Z}?R%0FcZ+fVX(@(i!~!QOcozXJpNDkrlS9;9v^&U76%S1Q^&uN8tH zJ`3r5w+%e8%TM-ZerJIc;+W6?=&2z3tF5lojmm~v*USYVU@AK!lK;mY1=PBr;V`_m z2G&|U__c0=s5<+^v92eGne(BgACS+&{J7xx@qa$lKkz*PU*#TxXmmmjk zEJ<@;G+l73lZ?#@RRJ1)n(@xkv`EA)Y zSb}gJRP6N{B|wIIe|g4d5nnVch(B%K>pigI=`L4nsCDDg_%t%M%ge&A;->1M2z%f) z7{h5np6A6%Gmw3NA$K0x9}4IOdPg!sDj>s#foD}AF5WOp7Fe}eNLts|W#7p}V-Pt# z>oCDzghsd0`zaaE;r$-x1{J=3^2lwRT%Y#KWFB)|R-_~dIo~bSBPuTw7iZBkCXLu1 zzK?FkJzW_Tl<~}pw_B=mf^?319r@lu`QZFIlz4wA=frGIb*BrymvX#QLg^teRtC%G zNZl7dlv|I5ysKP&+gSEl~VANU$V?DYXDuQ_4Ekuj!!*NhYQbX-*wkfSjjg zh3#gY;7@7s-|-^=bJs*jr8@RRu{a5v*W z-fr)$1|ND*5yL)~b;oe9({M1kwD~C-5B#Ct2`C~&f{4}rP}`>&6`6bmmnL_s+s{sf zB(!8CUz!fNJJ#7KO6XAyyL@9|>_KxLvPWX%MR9#|&+u-|vAfG+M_Stwo?_jB?-bio zos3db?RFY>+Uf40WaL{n1G{>nN+#E~K_y-_NWjal|) zsIVJT8a#~rpCkSPnp_1dLKSxhB)os~XCOAJWca^mDG%gb%6Vmf>UN&2>|s3NDQ|gC z!*xtq3qLj>U>I5qbbU5f3Tg1?ne7i zotBSCg0rn}tmUo$QFJc;O#Ocx-~HmY*_fHzHg~z-a<|PTw=$PG%*X#Mx(>)~SEWQS^VF0z)z?hs5 zdwu{)%-fr*<*r2*4Y)}NL}vl|GC=W2VE6T9+!B+pwX9N+6*bEYj$|9CWf?TskR3Ev z$^qy-Sr!Q3hN#dfx2r!iR|EIqSyFU}vD!1AfE+ahNOTsR_+vK$%{Hh8n45~e z9K#fziqef_f_`UPI9w9u0)mQIYx3vzBupQ_`t;O~d8?bxKX%qyzA+Z>LZ&8motpGO zU+_TaneLU$`{XktFwQU9pWw#3HRJvtwLc&h(;|fvbGo95dC_}y1lELfwY=OuHjraD zc!HTM9u`TJ%^EKrcpWOyN^M!AnYPc7;yA=L5RDg5((COt#v)O=Q6}d!#z9uzO+%?1 z6aRCdu8T642TvW<;x4(SN>0hJy}UBKZo~ z;sp(%&c-rHVfyDKjDO^D7d1xZ;3v3_Cmdk94a|GGL0LN%-uqR@a;o$1o7i8uo%e8Q zJNSl1f7^fjSv`{6{FK><^CmB~z zO9W=yBd-*w;Ey>-J!dP!1WI<09I8EwLZ1~b3`x!Oi%TE8JT-Xlf%K`P(|09LVZ;NV zdkuQ!e6BIr|5*SdFa5wpwxj4t7w^SHpgg+671@=-&|}{-@QWEkN!UyIO1V_i^A}Jn z{6zkB&D@DM{^VyRB2VXLk)JR_#F7sZE3!dSmkMMkB^L%8=0xvXX7T3Vin=u`G41`(@h|AuGK$ zdu*hwUPemF`zZcMPUY3kJ^uiv%1r%=zZd|pwpI+sWA~c@)p@70X2G#&2l5gjUjWtz zAk41SMWz&fx~zKa(@y1|Ly@l^89ML$d+z>$gENxaIXp{YlCwo5_7!(GyMZ0^q-}S4 z8T$2EC_;d{2z4FYk1=zu+fF9e?>8vjX{_ns^M^1>6vo=@=H={iGNrJ=si)E7s*8X* z+ht^j*>Cy6%`@WcVu|z~wTE1jE2{mnaq2xee~;Twcd704Gf0YIZ;Or|uG`86W#$Vq zas~Bqb1Ct2QaaJiW&Sn;A0B4}4L#BO{r-K1(ZqXU;p95U1HgQM`B(XBVHdZbyi%W5Q%& z6X(E=$KU=q=YQvn1i_K{?8Tu>R!bQx^k{n-O+YN&~E;s){9cO6Fq?@ELdyva#Ahi1|p;@HeC@4X>FJT znhtJmD3O0Ba-f;B;CvZDq>#KgBEisEPe5E4L};ZkMy<~@x#tq@tZwvK@89laB5>YZ z2ws3_nXuM;QieI8Utjke`QT#nYI#3s>nSXAO&4NkRo60Tow99{lf_B7F_$e^EvmWu z`mA}etVEcejhp%zk398-27_a$AcNEQ#Q_Fm5hEc z36-*(l5&GcXO;{-1z>mZ#UH~7SBo=kMNo^uea}$TIJ5&Hp4S5s_l+b@$k{$gpbM); zUU7CBiac>Z@l8X}h;^_bEoZ;Ag$(h4;jRISX@nfXvIP>;Y7C3*l0It5Pc0o{=zpslqRAf&Go2egAQXF>1_$VoZM-&Bd8&6eR(^y>!i1!EA9KetID~lBm zs(Xv*Eh?{<%110$2&tu6q>1JZH-{gN3{a^$qHp3N?dSpHNLuXCdH`A!2eF)k7?L4flit)7hU;fdeb5 z=6N4C(u=HCu%IIGiD9m8ZeZn&IJg#v0#R9`Ttm-UrKW-9zy8g_j|XK@OvozxPYt{5 z%v};m0f6fzfQ*!v^7OMD(3jUk*6t1_g1kgBGP)v5SHmq=G!hWwOU#9z-T+oE9_5fZ zLQg|kOx(CrsUQ-lGEXU@&^b0)e_Swe80KKBG2xKFt9%_=MD9GX5c?*@e6Fa)F&FqeL`2bE=ffCOBaT{XYf#*^ zgoTyWKDIq~UKdYCoK{BzT^(i#!W3Z*iD!9g_mi?}s^>uDHK0+q0p=IKS8k92GMfiv z>PIrv6_$kbjApGpf{9?#9KeYq=~RSpE?DYvd?F!=AawQBeuXb9AYd$jq^k`?(v1itj;ZGdN_CnjGClM*cD68Bu$(Ou;*k z%eM2XcA>NNhIUbg;@FTda$d#EFaw5Xdmq+p+cg353>Yo>vPWVnYESk+-jU9Y7qz)o}xgE*HHHoC_R7TMXMJPnI;gLNEE`B z$OS-Ar#mo$lpGtvDw;!>z}C7gvZ%p9U*!4!!u_c+3_yJL;^j>e$?>!osiX441H|T?lPw~2RSiA$mJI98kR-AKJnO61W*j+<`UamK)M~vB=)c!gUeiU9S#$FSE zNw~RevpSN93*#KrgpQA14urMDe_7A#lV+w5LuLO1iXgGjQEIS3I0ld@<`C^3)KmGR67BZ$t=E3xn)9w>{ zuHCyS?CI(#d-e$;Psv=Y;P9%0iW_1G2f|7$Pm+x1a`zYXV4Ju0=~T5mOz2RQ|H^f+ z_$iJGM6-m9=qIIEanD{nd^v1tvMoGbcRcO1G)#x07-`JDYD_p@aQLOFm0+QQEg$Q4 z79i({GS&f0bl4v_hFNw{JAkOON($*iam3OOCs|4OWT; zDUG^-jfsvFns#ZgIUTH}26|r4#M7xLVy-{s^$`;vncvu6(}0Knpbz)ke-E_ZNO7~e znH$;Rx4OG9S)4AEl|L+Dzw$bu|72!=OXd5>aou)?UZ?##K-pNOpj6E+lRhk!27LiH zsew;%CJG>Hq(bMmY$r{HeZ=v#PJafy&qb4TWsM`Kn>$`)dz%7Ol%?s=!FF*rd$+-I zZ-VwVKb1?TyT-9)TTza2Z217N9lBQTtgV?+FnOn!d=;#yQftxyHt*lXa>8Q8J| zY&io~o#-{1c~4HE8En#&>wx$~rZi8osM`+ZDHLYnvk3KCu$1q8&>!I!OGtra;OwR24?ML>iObin!>?W1Qn!}TPEykd2u7aCC{ zrx{mfcb^1q$iEq~$MpHk5ah?da}Eri&=wE9#j~>$$k~O$ZDr@JhiYWca!B&Q#{S^F zp*F@Mb=0vr%8rfkP!M&#hL&U_M^myL3zB!YG3D8rm9iCgdhOi%lv;Zorfe(OMr3_Fs|p}CPcln~4jmCu6hWW@Yzz29MH20WVw_8& z!9|}Jd0#35hU=x#tuF2rl0VZJ2=B0iwqX~_cn4WL3EvN{RJ*IvIO#maw2L41UgsEu zF???Ms{;{gQE21x7ygKYrnnrTDF8MN*zvEIJW8;m@F#NlN`}3ZpI1l$U{W}n<_-zL zEry)6wRuAdDTbJA)mRJFQC8+00Q1(10uouj)?S}%7rSWfP`mHl#kXe`caPyXBWJk{ zwoGIzr+}1udZ@Z@{lwp*T^tX5WW;v(6>0hhLX?Xs(&zbN0cxsom`nZ=Uh)5Iq9v89 zDldJh3$)=FWKMS9Lnj#wH~lPXyHlR*lYc_Vaa$f2t=OlYWmWQ5a4j*}Xd z5FEz(81W`(AGy}P+$QHxuvtfME^Bd@G;KH2+uYn>RcfQM3et-MYk7i<&TyOwH2H$v z9RqJk-Ck7URTXdEx=lt{UV!`}QlMkzQt#jviw}txeOEMMU)ApNj8VFReC`=J{KG%& zi*o5#6Igx78V^sc6#VN`aDiSbXQp6S!*0_|fj8MF|hb zMB0M)$S+%xT=v{5m-xVwuaS=NhC0O8pP!I_90~nti17+o_~9RPfI+#EqI?LCOWQ&j z-5vaw!%;^{stpTd&Fn9y{e=8@b_UkOlZPzL&sN-weQzx>{nE(h;tqQkV8nI@8xb}9 z)xupZH0s>JhW<8&F0sAj*xsFxz5Xk9#SJ-GAC>gy-(LLa&t1%Ow{_a-ZM+(7Na-Qd z`&2wx*L2?!c^aB%upZt<8z3Ut4Y2y>$KRxcr_HX*imV#OlpS)?mJh4nq{L1!#HJ|G zrjtWQhvkd**m0I$rd~r=NxCv7;cBAvQ_7dSt54T`5ft`i@II{#M^*pi;6Hx$d;^pa zaltl_{WaNq47pc-)o5+O+Qf!rref#0YUK`|)A(w2)z;XhZtu3uVtS-$4%k13ZJ%dj zf0g|)L9qKcQf~U!!2~5cMr>41zhy<;NY~Yvjb6tt?UB3TW(^<`qvG~KTB{`M%MN(@ zH_c#t_h3vB%1ysb3V(_#I>LyTb`duEeE;CGV+SNiWgb-{bq1_X}HZTDj>e`t9X061rlo^L2{(GFYN|lRyzV~R(y`0@Hn58@! zzOt0Bugf;DI5wCNnsfGJ%mCZ6;rhzmt0T25Bdx2}t8B|SwyLJsZ77W-(L+?4{z4P5 zR8v^elM5m^*)a6^1hImN>xW`J*DcO)Cf`tg{Go`g`OSInajc^tBXy89yk9HB`oULX z3cgI`y=dmiYCO5!&6-H11!WKqj>gZy`#Cbgc!zfMORZ_8t;>8&+#EsIPE(s~Ze!l~ zT-BuKZrqww0T8>*KsE3b-=4d*iFf>gx5HP0h|ogm*Q$g2y5f0hdUi-21Eofl=myG6 z0!h15ia3zk7E6zAW1P5RcOckeiEY(!%n5NPW`}Lv@zt^}dSt9w^=uC*_N@a1r08&> zOylesRYoDYmBlh?V^C1dg^6E*sLGC*&RG-|_iob!w!cs<3Rko_4a=zn^!+NY)R zVDug%vooHpm8ZRxB}ZZi`UEG5Lk!I_#(xLL2($TdsX|~ZT;WQp2+jXeq-wpT3UNlc+>!+|tOIHOTmFJaI-iR1+uc}?2 zecRn>oi{H`b~m72->eJ1NAoGc^dYl-QZcbwucBitPkfNP{%$Id_jXFepX*M^54%XNxTa+?3}HmANmuzxiJjZIV(X!~8}b!q##TrHsCx)F;O&ZYMSYO%UI_km z#5vo@!EBeuoBIlERr8Y~k1(LI921o{FWn)+qr9VcD2JyQ2hIa!wrx5zX$J*t5`|`r zxMMvO?$n^+*sK;qJ86RNRnw%khwZ}xG$f{&a-)F#;U{AI7?Wn7z2FOeklilunx*u9 z-}5g+I(`H+08khwLVhDRC*r6Y^t^`X;qN5YoTvgyct2;tCAN_`EnC;-ltGX3=!2y7Vei^L8%=U@;bmV)aBMT27=;OM_X;&o zT6qA`RfW(qgzbi6d5lUy|+4Q$IP9w=(T`A}*TzKm+pz`hv zr}&lJJLaN!w@qU!ShpK!HwDDUC4Yy7h}D(f8RM1Pd_#|h_+D#|9aU`m#WQ)z3n5Nc zy4hCUZ!a&9b)0-{wP0GUTCr25$O3!dCIos9&0bW$GVr$@vUVt`(T<%jwhaTPy5gG+ zhN!B?fBF|B<=(jq^M`Iwp_*kWS08&_)5-IGXNyonh<0qnYw|IrOa)IP)ijz8gsm6a zYw5o#b|-dt==uH`$rqIh!om*>8I7SJBmb zhtKpqvn~kfkm%tUyC z*c(CChc;*3jps059n@^3)F|ha%^YoCSlhk;S@5jaEF&(o!kZZI(L|Wbzg%Y?WcEK# zqi&abN$%n~`%D`!=bhDsK(Yr@&M&H2JCR4`70`VPQ1GY;6e=OE^9Nm86 z!D;q@C@oT-?q%MmY88%BqIXSMfLvbs4~wxYmcJPbH|;vCC8{o;a;=Czuc`z; zfS0kmYbj;wX@95U&kIk@9XbClRF4_M%=&*S8qmQ8N*iEReZ5eoL-Jkllm}nb=fd1U zY#{^HJS8GxRm|k&=1r?1x2R;iTCS~G6&zU>Yn}Jc=?v3O3T8j!aSZXc7@RAJw zj^=e6hoX8nuI3j~-`L^KtWDX0#Hnu=I!+3@j5dEhRqn`I4mBIKYX~~8VpX+m5PT(D zRKYB5bdBUO_=qI>pNL+d|bU8;bS0s zAQHcF1|dnBayuhamZvOD;%>UD_wc9e2@-*4-m&@Kjbv)G(azhr@vo@_0ax zadE}cDDMlZ3Ma;YtGXm^REl1FFDqoAHrclofqA#Htm>jS9~oJ!P#ZTSX%yz$S7RsJ zX)8%jQHPag$p79aOe93JOZ6bRn>2_uIOI9nbo1;by&~>%#w16ZRo4`=v!o0>6BB$>0pUyaC&jm>k4SA zNX_Q(Q*G=ES;Ymz(n^oQ2K3{HzZ4MErUtgHcDPDAppoRWXpJ_!+8 zC?2ck0o@n&X~M1#5E3Bj^<}L`_|Zt&p@3@>Mz-Sn`sh;`Sw|65_hfxZu-g5J)SDe2 zdtSb-aB4WTLb%=jEV?Ij#J3rTcx~KrJfv1-CTl1Y=A0(uYbZXADI6DAfn z4pv^8Rn=;v3X6_Bx2B<4TH7|b{2IA)6YDhYCK(|>u%rv!B@dZGHO>B_(RYI_>ha$+ zDB}mw+O};$4`#I-{Fow#;>atGPwc#UospML8cFDX^!0HW4T`1+Zyi)I;EF%79?8_s z=6+6(<+|Ivf++?}$UfrC+9CdU#bR$!zkbfd^P0))_ zyqdYYs)ihm%Q2zjdMoCb+`iO~=O^e@jYG}tA3d={b^$2~DwS+Q0KED|G~BTM09u2`=&duHI@G-h}%h&mu`63iCCij(^B{(2yEMDF!NT@xBq-DR|% zCkfBnmC*9)pEnIYE_>6OniKT0)xQlC9DLg+z~cQR8jJ6)p0!_(&3P~A8ozn$-vYtG z$=!G$)4qSGwmdHJd9*C6npQEdkUJ~oC60ZlMTW7S2T{%4UKJ{6h8Kwz_4w6OvM|L= z&W;4j#*kh#^JRDD<0&0%U%uUog{(UrJU`NaC`R3VOwy=eSr+1mJH^|E1K1#5fI z_dGFkOv4_LmA1!n@4c5D(aF(TAi#$jb@un-+`W}<; zBDwcGWv#iD=pXZLU{b}3J<9x{%tFr`5N=02)8Zl>S#UiJdNh#jch!z5n03x~ZkD=N zX9rdFrXo}BH=#ZCGTTM3=VLu4rF@=N*hluje0Ti-IX7c}C_-dJS`f99B#^C};+viL zM}gZmPNL5)Lw4dRvw?L70_?`Di^aoQ3slh} zrH3@akBR_*<(mFX+WgHvej{h@p2%aEU5N{S3v6e7H z=#hE29$uZ&_tnsZUL=yjcp^VUNe)R6PxRG_i45bTyw@Ur!al%Ljq70A6sE90Kxcd? zYwvaOvw!D*JxhP!nPGS-@=|2?qt9y+TA|QPBc(wEB0Rv0#l3^WX2h$d2M0zPo>8UApd@Q1M1SjljY-~8v9JRg4c;uW?L2CxYugzHsy{OGO`wpMLjg%}85OHX8A*TksqKV`-5Mahm!3*? zsd!y@!uLruVH}|Fc_t!jPxs2HF$3Yc=9lf^fkg3P8^Zw;Vs;8xb{4(1eAxZ0ZOM#B zlg>YD25H4N*sScZTV5EOxRODyxo$lAKs-foOWG3(qv}4DpK69_(A8d~>H!gyK$h@2 zrq^J{R7A7x`(!N_q7qnixc1eJj8!hHV4@wp(e^H*;r$r(YPW1p7=vgA26)aYuKZ~^t`&fG4VnlO8f(8b)`5~83VlN`SO z`1)AJ;WnxKbIJtZ;I76fbh(a_m#i82G5ws-v9afch`(8`@bZ|@cQrCreC4l$XjwiA z=F}e=3@`7G=ITJ{6dg~7rg8AVp}^&d!TQ4k!;!z4E$%vVzykt|CCRZ{?WM5dj3 zNv(4Pgp!KVmxqF28p07J+qC|$wML|AUX)9`qT%o{Ix0Rg_g87)$1yjdm?hcw^(1YG zd)&M{i!47AHln+ zlM9lcRgkCb`otr0Ncg*>q$c&p<)5W@NCe6^h1MWS8d+AmA8x8mS>f{D0fcE95qK9B zL3;QvuI?6LUKZI%lkVQVGpgk+K7Nyj zrv$y_GNlG6e4-Hm~Z5XYrb6$ zd)O>U=9ztJJgCC#p3}tSCIkG^*O{eVrq{fc^8%rKkBnN4*aicwPa*)6WM(F0e$FbS z@;*21iBic6?TRagiD}ZccccD|+jz zutv`7oLuPqZr}G&D`yxQOTh%sqXm3yVIAofUrekf)4qnJPgR*xB+7)M(s-cV-~v{V zDw~SaaLCyBN(y!}BG!^R3{=STAWSd)a;q=S6-?u;ORz2V61od=D+rPoyIM(I6Zcp^ z`~U_&(yAF&tGPUeZzW-qD99C_1ujV36PS*cknOq&SK8MKQTOq1w0>xYc>m!Nq zLqwr1aYA%ZXYCxOhbl?=B#xL9*JsLIXKKapG1@^6S8DFeI|f^Xzq&hnOH3@P3V_}T zl9ZhnTT_7s0?!O(iURZxk1Qxm5m7ltDke;{E%!i3u!L_D3CA_h-LO;!jOMiJX;UPP zh+xw-F!GA8>`6;W#mr-i*T`ae#GuCmn4g%C$0>J7j5!5QAj08O#B>|UlW%}-Bjg=2 zD{wxA2ETI2Lqk4EV$$y-b`YJg$`5{b8t<-&eAo_HH)5X-)FyOI=1aiuQR*Q6|$2}3e z#lZ+U^6B>E(}Ez8mmz5(EKDAsbc<>kyM(w$jvsaYd5M1KdLA+*;*N35uXItPYBD?# zfH&d0R!|^60qGih39`V95kNq?wu*ZjDUt`1_ulS1_cENQ{ciqslf=m$XXMx{e0Da` zA_Cd-xMFrTUEs--x?4lIKBqtdB5X-n3=-xLP*OHnvY1<0&J1c~;wNTV-m5PDg5JKRuGroL86y|o1B)B!rQDMG z>KT!N(@QyY`V0x%FnjXtrh+C@>T5(NxsF6$txKY`#_Ifvd!krZC}h#YYAXK)lU|x> z$qMI+brX@_;A*ub*;T%{VPIY;Ekj(9Wi$bEiep_`2rs|&vN$JlCbvSZeJnB%!jI84 zaus?=L2Nk+DP6_jNoq<=c(IGf81!g!<1{e{o0sCE#h+$$d<`zfOaO#8?_iPCjHwTJ z0lZ9)SCA?yX`y^9<<3-!9LTcfXgF5!)D0hc2rKo+V8l)A&#!}0vP?9NkBO$Lw0R|u z^qO8gA+E+3fA>2*GzgIp2wP>?-0V@bv7H=qixwq#%k`w6c$%K6!txJ9_*3BJWRxcm zqurD;dZR5E6kvF&Os=Em?K;z>66RF5_th}dB^7Rr>AtlwnASuJPce~Z9=9ioc2K3c z96~D9Y)w_gii#7%C+rbVde0S355k}QGc!fGAR7#nWu(@d>ZvhEw_cM}zNQ?G$9d$u zmQY+Dm@+@#ns@U$Dd8?DtMj7XGi=r*X~G*xs3X-Cpw;-7IyF^NuE93k)dehGU*gHO zHShG09!1vw15^}^g>yCgXcd7P1%Xiol)Q#pUd3qEzSqo<=W=p*mRDhkmuaqc9eTg7 z;%Vrfu%3&!-iO7t7!hOK4p7n%sK0d;bBy4$rh`tSKsG;uo)MjPnAnv-m_HYm8i-(V zVIvgjRAv*Knvn2I0Y}{Z=R*%J?9qAQ3T{{1&8ZXc=?2aBho6J_9rv5NQeL8s?W=*Uz4wJx_A_6f}irA5t_=%}32i04GI?Va?2%YP&QGjq2w|p%AO4gEB zHlk2#=uRn7I*hEK!x64!qC@(`)qz%B-M z?VCbs%?O*(D8rJtCjE}Z3iVJ_D-g$BOTGVinq)@rzF9?=49S0Np7LTEIIGq9q$9I? z|43*Lws?B=?yLwQR9wS;L?4#Ko~IuB#y|Dx*OZ%H1*2J6w)wPjZYfvhRt;`GNF+S4 zGvFHOCjfS}w$;eYSi!_tN2XglwEt}*t99&3RJRvQuiw;MFB0$~?Ba6kG58;DxnMWJ zDC$1P=?lJweI<`FQc0~lDjE&AoJG0#gq4sN^DNY zu1CP%aH%;g^iDM<{b$6th`0vEPI#kNS+LisY$39h*F~ZbzN`7seB1y-O}0iPk%H_Y z$s691ou88z0iL(;D=pDA^=9~lfL=)2h&lR;Ime+Q(gu!Nyo9!(g^l&TQsS0mhh%~Q z7lLw;%)}h$;QuJn=u7yY7e;dDu-jQq8(%vQqcx>^A4{^$-NeCNC+_nvs^9b_Zf}zM z%v8FH^BR+@-gi5tWaDT2#DZz#in!RIr&5AwPh?u)hu~T&eN1Z023+efUBIu|xC)-GH9`M_Q* z@q6&&^z$FT(Rwgr$zbX$IaZeP9J2g`^h!1%!CShFZzjqY%i313CyBBc(n%P-;tNB7=V*cPENte=eyDL01d0KqI{hIV>+v$witfoebrxy)~XYfgW z4yR86@m5qM9f0Ud79E=v)tq|(oWIiH0*p!GoRPHqBQD-HdmhB+*fqykCgK(>lOk1Wbh_uFh}Ka#lOVA9LO+RJXYKrN1>(O%=?j39AXp!SJ z2G(22g!Zt>D)akyS4|A`dLHd$zP?j7UYn6G;dULm%GC)Fg#OOehYZ=f@&!Nx`)YR~ zPFU4eBuEcY@&%{v-q;ZrGoXC9+IG38ZUJ2?2;chcIZ%R8uo+k^vU?1}Dp(0_q6m}j zpi2^g^n+Uco-vh@%0v&OhJ)ZW8(za2@rL(rc&MIH+8rg1!JjIq-a9YWLF@!!9~ffZ;AXC-@OHj-4;S zjg?m`!)~|*`apyYljxyWwhlV$?!5j{Lhb$sM(TE=Kj!OLzu3st5DY~X=#uNPpIp*U>D=vku)a* zvom>_wU1ii<7&fSS#hVxz8EC7tp36Jz>RurgauRaPy7|#7s`#>)VzC%uS5(AkLXXB zjGoC;UqgWeX-Gk3p?Kn{*U>kX8~L6Tf7nr-_MIkv_T#!O0z6M-7!fY`Y|u z?#;^5Ns3=TVD@1f`_%eZ-MR#Wa^||GChpCWaak8-69-+7$n}XBOhzs^s$ZCD&DH&M`FOk5*W(~zqh7=B zKd44D+FcNW$T)iLz0*}=(p-%H1vm8hd0bWElcUa;=0u7YlWtAW!w=&MDIs4anY&YJ z*J5GVG5xu7k(08xM(Zn@`q)i>_t!lfJ zw?j^T%4O9T%wDdR<|7(?&tZC+P34CAQutsNDhIdcvfIa$#y`L&L|=)IsOYJ|X(zH+ zah{)mZZ9SAXHc5m&)iQBk)EVy`QQC{Zda@PUs|HV%gGe9Z{&i)^VaveBI3+`B?>U& z1O>8fT&F9FJ_cR9z?xUqepc~W&#o2l?vgE2#b<*U+WYE(tUAbHJ2);GGmTHBn`^G} z6I9Y&7qX1Bc<2(-6bu$__d7;k9T{NG?PNM$Rp*U0zU37Y1HMXpSrWppNR^wY?Gi!s!%hO25UIU$~pvV_;Mv(!LE6!QDn5&nRl%LuiOlTS@)lV&|4iPM_pcu1u zHFJw82Q7z^j^CBE-v(c1)QMy%t)H{9AR(*&<{DSI<^6c`gBW$#&i7m1KpO_Edq+A; zR`v=5A~C6VBbQOOeMtGSzvCV8n-^$@*;UDoDlQd=ML}BM$C0Urs8{I?!?Gy={)*m|m^Fo_I$8%KGxi`@S z7K4`@W!RGN*c?ldTl$Z$xah-KD8A9k%Ptb00R#aat80zufyTnHyv?-e`niz;w`FZtg5 zqsdjDr_B=+F=jK`C-;@>+iiSzC8kw%?|Sp$RGE-;OqBCw-RI>4n_7QAxMN2qO=HpJ z;@5kpFVpADJx%27#oT9{PLhNI=`sg&f(Y$BAAzZO+BxbP#p!;h1rZuj2Z9 zk*NP9gBxvC5#LLKxXdDJ$5D{V0t4QsqQ7xBvP=UjZR^#z&$_Z1u#oQkvRdViuTVYv z-Uoodj)88SiL{1G zv+#v$=Y+OHh2VO>tqI&zXyrEi*f?wCeDmiFHU1~VHI?i5HVG0#D#TBG$0og5PL6N{ zVJ4tHD=WOd*P<G393msutOxP=|_^1L7;AweWJ3yaj z+G%vWkGSmxVI)?y3I6MCbJ7e`y#w$fGZL>!6Rsxv%?TVYE$$_TS&QZb7nY>tt1{2N zO4)M~oz4T2$H8F?+q?~Iv3tDbK=db|zT940zgeh&2PN$dXp=ha!AliwmShpxtT?m> z9Vkg;!`*<+g)nn(;4aY$cmh4WhUzaw3JN*a@h|}w?)DQEABPU6V4q%*l#JKNbypJr zU|&DQGA3hRt0LEapw7hE!%3P+<09<3lPjOHPQE}c-m@%fKC)A`FYuM{0b)jJ%ds;b z6s>v~H=k+G7iXMI4m$Ia5cMmGkfemRlNM_RCICd*xe3&o z2P!3^J~vBlP^9hEP}3B!8y)GMBldd@wWN!*W{TD5X8MUkYUqduuOtj9X>g`+2T$lz z1JdU_;>@i5tCystwL^aK>F);43Yw32C7-j_L)@7~a!A6v@gkpox}6PD&gsWDiswLc zlo79wv+egpoi9Y!CNX{;XT~`jVpQ{!qbieB*>h3}>%xG{BG4z{%N_7g18`@%n%sBn zv$l|1CiwvjsJ|}kE|cY7C~jJkY0U>2%z`a*F->r&0RUd!^A`*ZeB9>Pm zxePJ5UYTGVC7_)7PC4WKTY&wpTlRfc=ncMnDNrbri*&jdP|8fNB54-THDfv@PX%T# z?>+x>3(HtTWdVfybcL{r8TsPL4K+FE5Gn=n)L$6K5@klt3q_d2fy#C3Ts1hSrl_(Z z1&%f1QG~1G5b1$%0}5hwR#vPYLZtcdpluF% zfTth{nAvypkJupm@Qqcbk)%UwZ_ZKQT4t5l+3$#I2J%hc)W*#&} z33O34vlnkM#5_)w!NrB%zb*^UbsbX?c~~qxb6%Rw6TMH#@_UB#xyHHKV)^?uf;+XhjmJ3z>AK*!V_?efA-Q42gh@Bf!B8Z&Jl3%-ITJQuB|+zpcx(& z2oH-ZjVgp~+PX_FnRFJOm!*T%U!!lFGBbZ!+$IgXiNByxq3#1nxLF~m!i4=97rmc_ zsEtG90Fc>e)VbM&Hm_mTz=7wCAm%7_@{Ec!JxescZ+HMpjI90G={*3?$ zSraMe$`uA8AD~4AbkXHPu@`YS6K2I~<4_+8Z!Qy|)^m0~IcjUZTxax&$9?yBr%IU@ zst3YgE1Rg_F9N1Q4*mBBy9sR)jcNX>di0~$Ijjuw{O82@p>zS%rf0apn(Dn;TnI6# z5W>jdof=O{F~l3W;@7!L^AU;H0QITpKHi;#W@I&EH?P~MqpG328BwPO;uNZCjoff} ze1peDkaxc|iVd3DWbv~Y9>i*m+y&smp88%W2mRM>BL2J{VxueW!hpFDqfa-(^8*oi zfk@7{a0)u!Jo}zxk@QBF<^{6^Lm<2gjwBu7yy-LOV?^aMf=3=rwMn&}LguKSXwXzt3Vy6;yB z^PhqKOh85Xs>>&LD#)A;<=tvVQfIC3Zg^dRyF3*|^c(A-ck>%Ozk=#cT;?Qf) z#org4q7ipZ43CIxJ$LRsc+D7YFHgZFKY5hATzB-vKIvEYI#|_^XaL{3CadhmP%+?q z{M69fmx$|J(T4!!^BVl8mx`C2Y6=#I7dgfk^I8=SJ_8}#HC7dK>y!R{S8i!Z0bfP1 ziSUF#coYwIn!AssC$c;1@8e#lomL&(quO2A_F%hLoes9R`e@)JnhY-S6YsZnD|ze> z3qnIMByn%F*oS7#STrO;*kE;BbiG*sA1t{ydhgNS)9B2NC$rnwlfwEd+XK15FP(@` zH=^ygQS#0neG(ShIWZV^5`C&3`7R0muUm3|vv7n2GOt=%l13_sO}{t}uN)V7&^!*0 zAI4sk7Wz2+rdF%D6>$FMux$P@<;VD2r+b1xH7#z}<<;TdJQ%wfnQNvvGK(7^KEDJ& zve#gqbTI5$if-BSA{dgaD@RAe?CJh)=nEHrVfSodU!O)lwtz8P+wtG!A_I|bJmg8P z+J`{YGEZzd5cP|Kpf*F6YfhMbdO1I;R#5vW`pZD{#j)jo12GRI|J{ckd+;BdCv=x9 z+|exgE!Sw<)+-|E+D*NzH@^fZ&_l@*nImPoiiNWvXuITjkv;iE(toa4gx-_<%f^4d z2apKho(&qQtQiS15NeO!C#?8fz(sHh;Yn+-<7;>F*LvY4aS6rGh4ve(1EA%#(dK`u z{4UG{QA*%NSB}$R%wl!FpxtRXWO#twS}4}afQ2wrDhB-)EyuoBORxCEjdTg{zP%{8PNQIcvdA*8t!Nt=kxV=yyUaTL+man*1S|~d+E{v2?fk-WFq71xdQuVKUKiaoI@&p zm!Kt`C!a(9)=q{*e7JA zcP~E<-53YALPFUKhrQ)|IWN%?<40}ZBclZ(6NQeb3HOnOM{fyzbCKx}{zbSNXYFFHzI+7R8nkq|$3B0eX$Rb0pdKWpOFr<<)vRAy9=`kWT*qLRcqKfg59~NZ^SRiQ>fz-GLZ8Gp`>+q z0tuP0D0nY%=(E>QmngSyTr2q4%8@S%+(*z}AG!Evmk+Vzj;I|Q=IQov--4Ck@dH=* z9H1)T2eP2zy+!t=i7%JhOmlX`s!0+T^w-1}76p4%E6(xFecv80yD2AmYzbHe5DP!K zD%u@;YDD6kA?sL3&JVHk1bFox(O4I$RVqj|OV!5feYE+v9^ zIx@3F{P^kp=aKmFEv4g+`2>NDb>WG1(bo4Oze&hBfXE^j>OmL>wmPy8ya(?z0LH#Q z{5mN8yW#7@!KdDvd@k(w5g}QsS*QIhVdz{U`h&xP$g&4g8Fq_tZBnta@UQn~Z&m^t z&yLI%e}y2r=c1S9@IP<1ea)MY7a{{@A3xsIMCeZmtP4X`Ca^iC6)Easw}uf`RNnbC~1b*?)G-+ zkSs@K#4X$N=-vWUoO|CletFt)IeuKj>5YZ-@1-gwr=DKZ9EzQ5kF(^_uPp0? zjlBK1J1@CRY0Z+&UAfk_jCU^a^N{nXX+r@aEPCw6CxX3NU~COcjl|X;0h}1Ezq_6) zbo)N4c#QK%ataCTUhm5{lsf7)3}lezkLE`Z{^qcrYJsJZBDLLc)_Ei6Vz`L3zE z?T=yFkp}%gVetJGwTteUYi@Z5YPRbW0&09r-B&IcEUc-D-LCxODjQq=>D#qH)N;`xO>QRHcLY`s3s<^z_Sg4 zeEmXAR_c;CPSLZ^NO;^@NDULRYt&ekRp~oesbp&ud(rwoH@Bjw+Ui1&IpiN#`kT^W zP%UKyIb}(wr@7rXeyIf(d0%;S3a&2fyQ1t`nb3@mxqIe7%{OU=SkHHCcJsqulE%}^ zSF_JN6~>ts{kWz-j=qHp=G(yKDm-6(5;gPbj?pbqI{WEGR?p=9`r3qv!Ei^XR%u+1 zhSm{~LQeSS{+QfzuUzi`Di$)5e?94W`v_)g{aRht&;Ck!rct&@O3@F7w2!o1Q$Eh= zL~Q9u%l;b`53bk8!9+vcfC#?c?){1`>Q~P-J7Woz;2KKR)J(ng*JgFagi2hU!kOJ% zLD>YduS!hB>6YWUj;BHb^8T!xNL$r+`_&@$0i|-f)z9xf*D(JT@3M}Ta@vqi{RFE~njOHlAI52_=(6wxm? zCA(5qO{-s`CJet_emUJZE*m30LvWH*84^9E=A^u_Hg#=`c6Iv2kY=q3{F76B{}rSw zB0l(yw8r$E=6bJ_@G1yjH9Pe|J-S~FtNWDVmflh#8RytUgz857q6BQU9LQ@glP(Mt z5Qj0DUqatT)s`dS9Zx_FI_QP>x-Fd-^_5dch1<<8XR${`&saL) zEgdYPcN|UbY&ai{pji;R1StO95iOTE%BSH47*Hq;zh3b;3t2$4@5M`Uu-WKJSI_gz zA^Wp6FvsCqIwcb`LR3*ITf}M_7WFOqL>rYAE~%4=^z)6A45PEXRKC`Lnn!AB{o*aP zE3!i49>p-10cb|BUham1WKR}R#lUuQ%usTP{-u!VbfKu+`qV1GZov&Cp5Uo)N~&|y z7I4wR_!{&VzuEO^!9{}+%SHQ;nBfs}zN}E0Uy^VF?%?}nGUxP69J%evqarlM0Tw2Q z_$`GBn>-Wr6M7iYC-j8|LOAt%`Uwksdm}^ z%#k!p1)Lj5>WZ6_ayx6x$m|Z%-~AII`YvX%szpaHhA!#a@L;ixnn%bj+dxqff@OGA zhsQ9s`uDAo9hy9!GhpvVYR%|VKbIOM9T{v|8U97eiL^5c9{Vl!%^P>^$z)7eHnPCY z_=n7(tPJ3gzc0?t6jP{11nFj8nkTUZ_^@h+E_|cU)s=b;D@U&}N2v1_MdXYu-m`jL zj2}ThEab)dcwqirv4RF9-6{R)!%y!TUVJ2Ainx#f`IH=!rdDAWGdKhH^J2o?Z@7l; z{-CxI@46jFnKq8IPVfYJNs1{x=0A)zC>d5_a;_Zc zc_-n~FS%}YQR4A1GzpjM_zpzU7hxk3_c=u7NnOsVZ&^SGT126{}}xH}zE?2$OFM*SvKKpNsUwiw4A& z?K)PujrZGYV6rWL^a?-M&(*&*EUA7~Eg-D7(7jb#=a%rr_%{5}FMb=(=>LHpeZ84* z5jEF?HB2?*v%m+}cHaJa=8Of3UfxzB&OTHl8yYmxN)Jm2XGOkeqfR#H#*_%rUER$E zo-y=xm#ST6&{~S`NgQxv^=f6QNWO`-U{%RSAHM2JR$e%AcmSelxva$Bz-DU(q!c=9 zjigayrhOI71khorx|Xj;C_gsE{yC|jEG7C$tR3iby}78P7qdCB;p70mEjz;(&g zC)ZBI;T+*FI(t#l>*jxz-#?+NH7>(HJng$#apcBD9f`yDGzR2S;w*CJAJ+VQ7zg}& zPP#L~v{Hl&(7b@%mk1DDk5EHx#Hn`lZkCg>BOBS*$PgJz4#kB==?DOX<-F*qF3H^A z0GPaa`YzxTngm>po9&Yqc7Vxi)%5$W7yI<6&DT7Nh07%f74d-r&uBGb&PIX0*|*MfJ(@_@Gk}`oR*pf}?He%MvpP$?HISa0#416KFw!vr zRySuo+5r~&;KfRf=*CT8a}w2<2~tkTHPX^A>$-RarlWB-*N6x_+b{B)jW*uUS|&6a zyTi(?z&37o=>YJ8QJFdWRv?j~8Cn}3f^1*6hP7$vey-Xux%xVn5n9>*{Z;#~P~B(X z`YghO2;SqaeBG}62Zw{TcKn&?{xCd@ZnVB%c##~%cPE1rTE(qY^@ubF@}9B^(tQZK z(=Tk_U$FJZVvlZ@omY6T9b&&ncY)!6Ud)MFs+6#TXud%K_@SBXeeb_H`-wE`HPb(6 zxWOzngwS>hP1i!xQ{7;PNqdJXV7ZZ+npAj52^GnbhFDT!GvRU3r8+%(e3|ZSB$#MY zmgNRo`_$p%FXwgI{J+q=1W(v?5+aC4Z^LRdYvm@r%G3OV5YUEN_du8*K%n+ivCH zb&7qeA7>>9e6Sk0ce%;wjL09){et{`&J1*Rq^y7jhHjcbm0To?leyxf@W2;FuT8HBQP$)F$XK zuu|3Aa>qTHubUkiUC^J7!-jgf8fZwU5j^coA)|IU@9YCr_&}GCWtU%elv{COK)tvV ziot$XjI&^@Kc0i#@%8e)T3UY!*fp9rOdN(DKtoJrskH&Hh5?a-^M&-LE?eR1=KWyQ zQDp)`q$IO)%BI;C$JF98>rauhL$KLtOsmq3;=h*d>XtwRliV2$NS+^Ek?+5}&klhp zJKrjIf^HXelxB#gnQVc|fOHSE(k>ydm;K1nt+3E9K)0>+Mo?y1G{xSyJFI3JP5yyd|o=MO8#ub#(xZh;)1g%PH8p7751UrW;Mb zCfG3}{*IurY`;%G{g4~1c~mi@!1&BG-J+n@j$@o`b5-9FQPRaoNJKWRfnjL?SUuty zxL8F_U{9g)Heh1Ae>g{PUnl0gy(TpWdeGZBdXcatjt3v#-pO2{z(@ZT4Vd7_b{-)~NoLVP$YpC|KuC zK-4TFVbrcM!>eSwTjP~Rq(4*V6CwT%)K5RxI^Z$s`=h{f&av(=fj@$%2Kx_u?SYp8 z&#tTnN}RhP6Yd>>c^Olv_7+l4NaHxzuwSCHSG-`ZScnc0ElQkpc?}REb0wQ7p2odz zU1{!)e_53dxXZykK+1JD>K`uQ z2ChOwl;I||W+BU_@VrZfZhejS_XECP$1`0~UWP-v}n*ZF=n zokQ2hSy!wZEi(<&y9UKrWI-I@?|z=577#%q3-O7q=gI&gvy^h)B5O3PDw4RZzFj8;#{dhvwc$mV`gfl+-+-2k)5$1fAnH`@&i+b2Vl4 zO@?U>!4Sq;xxHR)WP-q4+Hy|48ZNJpu+m>_x$n4~OdLQUherQGbQXx76zD@KW2xMa zRO4fNKC2Gy97tC^SGRN0P%`FZ&NPH>-1naM`gFtx*8WlY0P|H@64QE}^1(EBLMIoCjWpp*3hPdh?oJw5Mw;vjeoE`@ zcp1-2u*kd>W4ZpsoELxgtJ+_*s0pDoq>jBb43h2wKnCv6d1PUZJaJnP0i!5qjZa zexO*E1>F9am>+b>8<_ADsIx{jKo(o0=`;S7|7Jy9gDaf@D0_g2NUEqRha$^-scZn( zgL6A~bJ|3~E+Tntzo^puH0m9@qa1a82JAC^je7g%OYZ&1VvtC;`Apu|j>wMBYojs- zmA3}Bsm6=n9zud6H&}G;J;C6l{lx$TYjmW1KD{GJ;O(0E;>zd+JGUmSh(A}6$Tx-5Rw;8_4HR12z?4^cd(+^|9+WNl=j ze=2_kG7=``hC*NiA6p(?6~(Z+rz6cirS-;G6oneu>|BO>cLe(yRpfqG>cMQIVwE;5}^6Ui}{junSG3*UskY zchS=A!AfkP$2wR$m@3p|0^Sumt1OIZN19!pvgA}h@!@T8>?Trr*(4-gjUa*CUx=*_~gKxCVJShgdIbW>G5L0ZK56ge6d3_OApFfZ&mB^?AyBVNVxXm`fJsk;P!Z z2Nq|f35&%zYr#lT$<_&n=Od%P{?a)#2ljN^-<(5)4Z(9;U-Rj$bz4);$SX@f;*ZAp zO9_NA_mXX;cjDLWWLZIm+b0yZ{d}3jSBgh%9gZxuL?xQcW$S>uF zC6pJ>UCuMr>AHDaqh(1}oAoD={Q(8KKVn8C!wSdQPQu1EGe2`Rn0QD52%mT#4l8DTey6FY#b(j z_+O4dA z{4WGn)`T6NZ8+$uaCkOYCOCt_h%R6_EZYb3oaJP7ci%z8O%MT4MbO7Rogtlzfr`lN zY;wW!(?5y(4!Nfc9s@DT>XSV`y}X>v)z1k_{aEC1*|9CI6q(!+o<>NM@pYX<-zYWq zJp1i*j+Y1aCuYIkw`PWovt3Fp!D{~VN8p=@DuinF4QwBbukh!Vw~I)Mx`8+mD; zAjd>E=+|^gQIGAt#DijnohNC0QVk|t4zb2)QEv#wR(ho|UDsDu8Sy9x?{IvqDFh2&-iD};;$8=aDq z24EUxvy!OGSca=#7VK#$Ea2py?TZGmPF;e}+)ueR`~9+eM~JyfagpwY^O*R+cR=dG zzN75UK{;s?E2AKUsH{v-^36a2n)9uO7j)R0GMOk&UQ30H5v*C5^cZ)<7oJ`$0~ha|mLe-jQ`7W4o;iO$D%t$$p21S-`|G4mN?}WK*OHOv74tvu~fuPs{rLMcHpQjA!eL#b5hI+6QvGi^k0gdi?;^7ekl!*6GreTi{8V7x z;!Z_CoOq_Q8k~SGaEo~*axCt8Ig)%Ua$!n3)4ym;xqiR?%8iL1qH(UEOyGM-wp-Ni6|NlksSA8PH~_MI01TMkQ;6^JY;a6#n0gUxY090|CPdL{ zSO4L_R*zcNbke~}H?PNDT{uxZ9H)u%i(1v;Pk`!pIFZNEBRyf0OrLpE9rYtL>V@g4 z@p&W$t9QjvCZHYIw(209s1Y7e9&j5g5f@|mz8Sqz>9;Z7!mJU>>9Ts#y#ogJ`dt!e zA-GVwrV`_0uag_!yVyPw(-3K>!>uqMoq73F8Tc%ohUg}MAppVDtsM1x{;2$2a2rfc z0UxX)S=Qu)Dq7>OE${Xsf)Y>|EA3_ZOEw+ zxoqV2WER&v8LnqrDqn^=A}G^J9??~qdPA*D9O%(9yU}w)C+`!e%Ai0C!Dr!EN{bIw z6AIOqz#+HDE}g|)hKZX6x?!7Ik4|OFoYSw-b^mHPbhc0C5mv4#Qal>)5YH8*tdBU?#_m#XRzb96#Uc%7kdm84+7_ee;b+=y>~#U&2?1w5C_TCN ze6#S>1<+DF078g=^r+%t=975$udm|)i;K!9*^6~9AXG`%bkPH3w!RX~p*UgL7Zxxd zr&QVHnI!nOqsjxS2Wr6e#{ z@t@*YBcmn&o7vv4adMB4VTv|u4o5OH?zpceA*|XA+pLSE*A|&s`K=Bu=4xi%F3%t}zBO6$e%E*W%E{+?(HmO+$_UtU7e*>M`zcK#5uZu;E{JztLjdz z`H!D(9ByCqikA;Oe4uPtEBG6$ zS-dEhjYktVwq5tSR{xHM3EZjVV>533ql`JPahLPSH-=Qzc$5n<)sgLa9>jTC9}@e4 zzm#BBrLd{i+m(@kSAuzNN!u5Z+z(hs4a?0=nC8;8y(`A81-JkU7KpWfN9--XWCfCp zS?%Ank8(&aL4hr;-Y%&zL_1c zC_vN1Xp*JsfyF?7MyIq`Y!ZU%Y=;CI)(FI&HFp>)8_Y2Mj( z5gTJKdAUZ_Zx)7t5MGtqA`f8|Ysiq3)}H1&`HRZe+j zSzUGkQ4YBT8_=kBV*I0#6;)Tps86cG*z_C?Nm2aDqMC!x@SKx-%B8H2^r$Z)ss%$2 zcW7y5rDx@?h0g`fCPnT&k`1fRK4D2=8qBK(DHq}Q?hV58-M~Q1S$G*^vh*c!U>HR@ z+L1>W3vVtmgA_`;EJ%%&oRU*eep44QQA3``KuiJrJsJ&WrysLJ)3faBbfBuAjWr}w z^{N&3aDyho(XYd)77A#5&ub}IpS|Vs&W586jBYk|P3=PTe%OF*FxZyaXG^5rgF}?b zed?Cre??CI%Pkz`~y^0y*wF+8A?Xj@97kV(!y4 zTkFF%-TpwgM%-AP^)sNkWIb-We}(Z}ib%WGsp?)05Z*NZoIAJAUb2b&wNFpsQs2$KtP2YPZhhVL4dlE5jaiV0O2yWpz> z8e!9V0eJN-2ekq%*R#ak9Y^?G$kz1hoirI`2XDDg`)r?xe{YkC>Q==g-zz{aNh1J1 z#~f_1Y7j}a7?t<-X@|iY8lo)f54Df>Tm5GqT|cwizaIf|y7hiXs@^B{unYpPbhU54 z00e;9hCoFCe1P8nKjk=J2LJ%$1J3RIwTNMh?K3$mIllyUW1;P-*zF-Fc!@s0cIP$f z@M8JJu&z?=&2M9J=6r%di0S&ZYm_svPKDv`6ZVeT0`j%}sfWj%jpIaryo%bCs2Ac)hkZ2 zD895!$~|mHBBlUb6fh{GBRb%sm`axoiUwCPq@$`N1rUbEb5VuiUhf-baF1m-J&B#d z0jru7`~7BF`Lg(zIMR;9`=FQt48z5fK%Wy8Zo~E4n~(hf?wwl^s|D5S-}l;|5mg(| z&4ShR9^sy5y*k$OLc0$)^-s00=Az2=&?{i8co6(~FA)#_@{l)=Fps?lO4l9Z^a;Ji znD)1rYn2jCnGpGjiWy&WWi;`iZ7vnZhqQr_0a^}FslO>J3>lw{s8*T4e|HAu4fMbJ zDS|h;1eN%(h8!)4yva%8!ounoDP1kf6vk=SF;W7y*hIJ$i|4OJ)olLO4E_`wF%`6LK6(Vrf>v) z;r!kkv9g7@H*HqAE`~7JQ3VSdG%e!Kkn+qOPhfl4cTYjYJ3a|ptq~p1K#K_J>5I)+ z3!$Uqd|sjhNgiW~-Q-&6hvWF{D0Ds@%ZcKD$tC z3C``y(Wlh91zH0I}wE+c~cuM6VEUw%*OvIFDUKq(KvWpq*goDUC>AAkGO_HY|_t*BVZ#8ee{ti9VuMXh7N(r5LphM zIe3wuWBdRk9z3Vz*|F>?l(^&wxT{wlVTT4mR0t3iqR$C8GDy-(1RA=JnGlPn$#!ue zoh@<>)<4A#w0(f4{dE;x4pM37t1h7eiOUs zAAKn}v}t5td9c864PBRiNjg_4jp`EP2`_AJgS5&lghpF~&HT4MGIJDt`)Qu*`llKxt_qk;69 z?0XBS$^&Bq#Uc1njA)d!7$sMCD`d{8a-F8kX+}3%0~7W;nh3AGH*JFV))Kcbs{Sx6 zZ*nM1aRX2x-zR;+N7x3KS(Icc?x-4;0`+B^%UDi9!%8SZ(FA<_AUavy33F!h7geEk z#Ae}X?@SM^r6oPycImX3PI3lPd5s8jL{^K#Tp2k#wBX!Pm~`nXpMfpF2z&q6wFpo}29C!o~)t!8UDz|1ahjUC! z*mBQ;NmSbx0%mGF??fjgb(+I1kKOV<_?O-pVV-O$j|NWd8dbwoG@)7q2gH9tomusZ zRa#7k6V+BM(f8acV=cFg*>dx5V_$3*r-8!bCN!DZFD9KTp&5ui^RX_89D%v0+f4P= za-{B|U~ zdz`wNeEdY{oAJ3TpAtCxTe_2~PY&NGheX}kvl+CN^NLEf`os>ewTzNf}eH8G+h2EwY{AeYmfxh z;s0?}l-#^nwo{i8pZoC)-?t!(9NjaB&GwcW?77!<3fKHo zT%V-IxWECejFUn9sLr2VxJzfRn9ojrp&q-%v3+NHxht8BfAXH2{gxuq=s_}<%=~1l zv-S6FJe#Jp#yywvX9#(gc;M;pmOJ_mVIGsb*sP!i;rL*v`d5xH^_zos#OdYSklNbe z7YrB7GraiJG<3-Th&YjbYfy9fdevFA`WMOY4z}A(+a9`JxX!}$&-*>u80w|h;tcMLjhb(!J!%jDx8Jh9*5pH7rUS~I zx*CFVy*nX!4}H;#LA~P9BxkeFQD#?F%){R~gqL{FX6tBm;8APl;=#IP3yWjm3_B9J ztncJFP?NL_*8QPqO`wucnszMR?}NG?NXS5OEV$;7I>Xh-Sl~24xDYMD0Kn%6XpdgC zI}(OqU_53u%ySXaaVk;z6uswzCThtzaT&q~hNon^1}&+yXbKuG3Fc!YERB%ZpGWv? zgi^ndo!N;Vl3InNzrJ8Lqu1TKMlb`3UC0TD#i0(7?bd#a;TMrMB)KFi(o{9w#6Qq< z6aP~)NuHPZnVsIq7Y9v6S@f67AA%|tqoN6SK(eJLD~bbad%X=v2bF$^iFA4I2_MAQ z%;bM$fH%yg6M}E3SeVllo^2>TZ&T8zAWuk8)Dx7xf~mz7)Qyt|90zkl*eiIqhsyC-j4Imr*VZrrk-V5Ax0@H2t7l!}whiCQ{G%|?Yzgh^^b8~_adUQn`?Mhn)I zBW3+|J-Xjt;eHwjPXfPYLx0E17cm15nJH*+wEI%LFhLHou|9`hD5eR56`hj1hLvnt zU_JpH!JmpY-_Bhqk2$}YtTUZ&j#bdbfs$wr9kr*f!7NhhbkIy{vBhaeB;-N_YwH$V#Y_^g>^bxBPoG~>7-s9Pw((HDMd2=dSl9(oA}S50uRFR6|IV(Io*e~c4<#@ zGC!s$`)ZuGl6v(-Rph&>2}Rl_2V1oc&pmW*eXj-HF3soG%$<^0l)x;%V_y_MUqZ3d zpQ76Dd6HyLml#Xr1P5NH6hQ_o6jY$fBv7EB+0l5iiIqfGlNZkv`ThsxKXLGM0NC0J zJfnuUa#zv`Fj<19FZ{5ZiKQm({lyA;H%;cHU$36lpuG8&0Rk%P`y%bukAaIEU0t9q z>jLKq1&a4B_yGjtxuGBGjNvWDaVoAD2UU#k8Mlg*>p=x#DHTG8F6d^)I`D~dLhctp z-7F8bxa>XX%Qz|Zy@^$x0118Z#}hnE7gj8+?gpE$C>pVlRvgNivV-HFK!s9=6r8+ur?1=qQ4?O73rwIk zBq5IMy;%sq;~%LKzR=y0EItmBwl0>&h6WNP{Mez@&BlJL6d7MXS)+J?SGt9nvEDN* zk&oaCUm|z|iDR?QCWwD>WB^rAsua~Ele(edpc!}sOu_~Am+PRNCq;8E%1^qeb}b4qS`-sV=w zl+9BYE0C4qn${%bZ;#WCTu9vdG15m(4-V&EtmmIooDi%)C;@6g;?#OVAT|;bp_ada z;^4MKJhnpjRR9OL&z>ZXBRmjYqWfZ-Rn4v);@McK2u8KbMj7po$Fu;C$Y9MR_HU@y zzC^9Y$oMWAdywS53GB1Ofg9!$`6Qsfg^6uQrxU-sPNW%Hs1c|xr;x}f9xo3Z{*e^q z2+}CE7!NVI+UNB&H+h_X<&P)wJEGxLeekiVyw2|$<{jWlR7}=uFWLINC0DYNNL@&4 zgih$(th{~HS|ZWIlE26dWJ8tCa^ROaa#0*Uvb)m>a_J1D=Ei-wHmE(zv0*@i;{Z0P zuDCyox?!%23AL1K6aSX#XJ%Zky6kGQL@3GaiEleW-0~Z^gQCAg)&J^=pF@52x4eDy zkf3-cIK{ph=!jhj-ifh@%?D{B_gu2@elDCq)I9PbX?jF0sNbyDSH_U+5WWeD{Bw7z z9yIrn{AwCi>k#wbhIfGcRV+`=+zG6~XFaa3e0-wpm?j->dFY<^krJ)SdzBkkBwKG= z4(NWeP~HSW{>ee((NKfBbPpWF83z&Y>^7MIf>R(NAHbdjp%*w9X9IfG5u#lOwOOjd#3c%o=i!6Hb!b}LMrt0eH=u95C-LMc@*^?p%06uU`2 z@>gue^qy{-_hGQbBE;u}iN%#(Gc0##{>Sj_5%alUxz<6qSr&~S9FPXDZdV4%+&Ow7 z>1jDhdnCQO{Z+tgPN&IhN-SDMTWUYezA%J)1~dsceo%Z8WEbn@)> zt#>cEnZJiHX~XCyFKNg@Ll$Vf+uV?C_9jo~hRUlO?HMN=l@_dezm^DQV+Ah8KNJ@i zKiO9M@6hq>Z6uzQh|ZVOTL3uyAC$6B~Cc+*)+SZnyMS!~E z1YNFZ{3j95VnLK{7(TKk;d-tsnQyf`Sb zm1|6XwL-^VW14@d$w+C>)z3a@%zlg#rTod)$riEvraJj<(A;`&VwE6(Wj*;mk(iqq z>xg^poql?Af+}))?4jm-5FAn!^{{aVoQ4d-bHKGo1Hn*{!1by8Dx+GW=WRCh>ZAzMcyOLB*k0EmO6O#@usI0=5muws?6U2hhI$x&sdvN z6^2y<@Y?m>(;AcJ1JAWsH~mWRu}KXrC^q4gBJ- zaf{FhAam^3K-yztiKIS@v+sa28^(=Z0y-xkfgG47+gPDiP@csxWkX%Ch#`)!{)Wg0 zfY66^u@bJ7qozhr;EU}B=-VO2kAwvX&0xty;@zgKRuPo%{A4I>+}8qmu2}x~KRox< zTZ4dHT87{mTjV?BbAe;z*^`g>JzSU~_=Qo)rsopy*+jxVy!6fL?80P5rxJNHx3f0b zoF6cxa`>R7`)B>#IZ;bI;b8A|JhEgp@8Nd=(2|8_hOYCkcMgPD!`9wH9rnY?whfH3 zey{Fj%KGUuME<&l_-WAbb~`*8dVH_xy9nFE1iW1rYg`xMV3F(VVuxc97ZNy?qg8w| zBv3Ie6DN4Pgpxpo}?5^=|k%7p3t;^NcXv7+SE}$^_X2O!qb~d^0;UaBO%Z z$q4xwTg45jySsk**vp!~;2I_MA9afp(PsYlmN)XX6Arx`Mbf8`Gshp63+{8|bHFZK zjg2C?Ze#F&2TgQ&iO1WI3O3$2zN}%&wFt`^w*i2w0dUX~{3bw*Lx6oCzyT9FRpnWH zB}I%MX~N#ZEl*O9Nq=sy2EER6sK1WBnw7c6D*|sQ%UQ+p&dP17dzPzv(s%v>?<|T+ ztMJQUOEtu7A>@G_wUkO z3pgrKJ%GOlTrS))iXN*3#<;x7G6>t_`~8Z1C1aAbvQCJ;EhK4_m=qXArRT|L|EhKV zdw`KA#gE2ywBem!a!CBZlQn&V_IE>t{&3pfDGMo^p53{#@oGqPx`Th<#)89{Atd@i z`t`d;H0Z(vKB{^)#D6XEGX4mU?529^tDIeG*WRqU089VSuHu=gMs!0~8gr}Y`*Dva z0$ICeT7ETXWeW+uRI^sJ&^bWd{G$ zIKLjSY^F~11LYgtMQT4ZdE|CL$f9NO_(SIIHtjK!MZOL4ZKZ0xpbihOhB&J`!gn@rmy~2rb8Tdg&Zat+0zE z2fd=K93=ZpS6aswXk8Gx>XSk*^7S5}RWD}!;)2Bv7O`Xah`-bCnjU6#upJ*~wQR*>s0frQ z3no>X_L+)zyR0RprI$E&JGQ3|9p0GQLVPMqbMtMTZ`Wx*YQLGMml*@N<03D3V{%a8 zN3D@T{{#H!&`qKq#;De-(wHIJSS`%Zj6|NhGb*Dz@7j8|#fyQ4`3}Ghw|Der6Wojcn?D~SW#J$`!{PfLtirL{t&0#0grt^~U`|?`)_Ji3pRSNe{B2P_w4X2Iykp@E;Vx6DEg4=22D08H^j)?;eIi zD6hs#M-7Q8#eKo0s+m_tjq95W1d%RO$>~mkn3khRc=pW`7tBKIkIsra2o~ua8jdo} z3y|vIf~4J+5(-vT__HV#s7L}vf}sW5e<7vd=rf!Mu@Y(=)P{&n!|%HRn~>mg94|Yp z;P#Ljf(Vt@w(pCsSe67FYrPJ^tOvn-wT7iHyuad-d9g&-`PQjHPH`5g*XHAf=?Q)V)T zM{bi9YF1vW5xkt>tgg|P@2&twm@M`t7HwRVtGg>+#1k+s<}l>X;_gzHBKLI=AL#7A zE+P-3Ts*>mAX#`U&95YyGKxl(EbNl&4gbf`xyLj0|8abG+stfp8-~qg=6)A)*#)_k zxrS78ZAFDtDrFa!x#g0IQq8R-3aR9)e%oAftB^`kAxfxpm$2Xd+@EKU&)MGReO}Mk z^Y5dpxQf0nRybV~qb?uzK3nUUzk9}1a%*+t+6*!s&PwPD0rTGt;*1uVQVduyWP(e$ zB;0jY{=r-Z5hUey8}Srmz*3sz>MSG zm*odQSZm7aqs&c@95q+CNP89-V?KEg=~xWaPGbFXADze$P+3GE-m*k zWD^iOQ|S#(2WW84GO)5us8A*ZV)MQ!CJ3s@AY@D8`R`n%v2S2Z^y>=>@OrK8+Bg3j zFgkcpBdaPZykv`S>{0jDOw-gVqMt+U11^;><;v}IgqHABqfeCaAAPPrD1Rm^vQ53p zkFGz@5jY}Kcp7ClthCboY+6cHkI`axjb&PP#xwc4-*Fx^jfC)BB3%g!3N>l=-GOg9 z+uxaVv(i2(%T29LZ{Vd*ZA=t9@T5}Wiyp-|7TAD@ zB#!cKki`*4r-rrCmCz^Q+09H&lhSgO3gkxhUM?%DXZaZ3n(Fy(gML- zy-)r|Fc;(FLEgoxJ$?@2!)aiE+B7)aC;NJ7RA_c!_*qJ?=&4g4?c99IbJaE~*lcAB ztayz(Fa`um!~V-?2kVB(@y4^2gqim2x(o-<|G*a&i+S6dFKutN-$gRAv>5+}bR31oKnMVu*k<)UCE8HVN3ZGbLWNz*uK7679bJdCatfs&z zi2M0sfvcrO!EMBjff5yAJ}xjH$K&d>l(x`q4`VCg@9R?g@5|zx5;xSn@qs;6^XxJ(^odSb>{B@UxTw{tVsTpKeFWSB$7tjtwu7MGapg+yL{F&^4 zWv+|m1sS^I+y^!i%A9)$BPQ)Ui|1Z_uQD1W`}mfmzvQjyO%fz4Aufd#_VnFpp2rar z8=A^9U20Uc>w)E(=PQ&DX;oM6gx#kuBA;_zG{p~Eh$Pdst0jlzk5@bphY=EWfpTE{ zVML+cM7}6R{x=LAhjd~bAlodVN7-3%D>*)Wnf6`+ z|H%t}Onv|*Q)@~~4RVvmdXEEdEfA| z0Fj1~J$PPN0UAxocEjL+VpB6fR>lfUAb6a_v?mVVHEz!KWAdVzpq=F~lbUPNw*##i z0v-{Q%PK$%C?2{ifb}zG@R3|@+nvu0`FeNk<8fRolS?koYcz!?gmaG~OwPQ&)neLq z;+6cYiQxE1FA>qK{=ESfdT7-`r6m$a+rIrIFYjO?CN;KV}vR~=qMl}(qHhn_6uezp#{h}onyJA|p> z97?D=?*KO7WHLnjI1V(OB6sa?PINO5t}lol=Xp86bU2`rH1TufKDi7;S@d&C zZ%&*m*{nOq7pN4McDCN=Xb*Y>$2He;)$a#QGO#&VAa96lNX#V2h}9{=YdT&T0K_-a$U?tR)b| z;l&HHH!p*~0c52Cna0E3`z@iZ9I?@Bu6wDtyja;goToP|rJ5|t!XXgmg)w-&_;u2DDU7qnlZc|Q2CL_*Zah+P+|sPCC24usnTNY0LhhWQi>$E6GqIASa%Bov zUVezc$t2YS>E(Vo6(*FG>=;Vsp|I>wQBH;>G<_;l1_)A?GtHAwXbK#?%<*X&Q%ZAJ zS_Ysf+`x4&1rY#C3|Dj*G0GBz41`Pld&CB3nzDc3yl9s*yaI2q+vC@Pnk%4&!ikDy zph58!0}-vT)+{(H91y;Jin`2kpg_>$T<$Zk*s(X4C;}`+ zfZP8Z`^&G$Il$;mc*KLtr@xIYa)G5`zzb9#Qvpa@v zWH~URBAd!sHJJ=l^OvKRSgvUZo=FFKJDuxAnb~nBmL8ceb1$86zTf z7H;&1ncVAsf8Pj>Ap(aISxOin8pFkTaa90Zaopy;=zX&7)A8%m+dZDsQP*pP2i(`!4Phv>f2-jIX;b=!5|dFal%?Z1Y`^8#Vf z)<(Z_$*&vj*{|h z-aMFej7u`o6|i>GcH}oxUB~%5G+U6Xb_$8!uO1PHm0Bv>m$CfAzG8!6p4NS_<(R*d+}slv}_={o=fxsQUu`580-kHrm+21q@b*p~=CxngV_Mvo_{DJa`_K5I2!+0evgSUX z3)T2MiLWySv}#gD7~O7Mn}5gz79`^Im}!Y|haSgMN1?w&7s5>4R$bhDbH~ zGM%Tm#3uk0e1>)Ed03qA!q$Dwcad71ObyCouUuttgR&+bjUNYkF!5gyK;um=d}au#fpE8ukD47F~cL+!Jre4DH~1lO&aXuHI_p{?R(L z#IDGs;-jOv_Rr73;@;` ztwGOavB~I5%}oi|g1Wxqp^5=HP`-oLp6@Oe7cHT7UYNfFK!bqPl0M*}>4OIX@Zu5+ zRM0siTE6#J|C383HBrgYwYIf4Rn;d7?l0TwTD$c+UiG*;F9jRqIWK3TfAZyjY~e&+ zI^@I+7~?%3<82Xw%~)GiF+3#)-pgRq%foJz{q8X1dqqEYet39yVIk_PafFS_az?A@p)?Mq@M1vcymGoKmx5fT9+?03d|`1tAwD_ijC*&J^>JsV*7wUVcS;kt&Ik?PE>1H&!ZHu}f-b$~ zgzP^zbaPCR&ANIU*{l4gLDOXj`SQ2DMIrc~VKL$8`8_MPjukfdwW_d(@1yD#2Yw-| zjjFZ)Hg*UE{|+`>{UPV*^Yl?$d8*!Dn;U?Ut$MPVSdc+*5MaLfLj-)|fnoq~rVHUD zT@m1ZeO1i1xOG|}`R(IdVtj4m!SN9HvA*q60ej`Br$V7w44abM>)wYzNGWUb*qL|# zL(!od|0P9Hm_oI(Xvzg!_UKjrYvgt2*?mtl4C^<3ehPV7V?q78wt1OI&r~!B<}6SB zHiP4&v!%?c=$^ccH0}rJzU@5-yp#;o+VkZ~hxFQqUJ}{)y-oq4Sm%EnQ#_^Mk-rIJ z+XBc0Ib^-7JuTpVYu+_;AL)sbncW4-H+Pp4*T3G*AGQjv4SVz7pO0#GeivcJo!JGm zR!+BeoyI^UwYqSPHMuuVxjf#hyT6vF!P!c_r`Cp-=M=SaQ#ZnDR^Ioy1>Bl%o=Ve& zWckgtUE&`_t2!o&e)tnISHvJ}U^5k=xGjK1gZX%eDMPW*#OJ|SdL1dmENbpd2x;=q zvtWJDVLC$kv-pwQ(aDiqC^k|A%+0tC0HZd=+k=a2lFl;^hlT$sb1GPmDKGKfTG}0J zEn4Qqhk4|_kMr(nu4G*U&e2iglP@$vq^;af7m~Y^Lnrs&xXu9~2Tz8AnRa6wP;$~$ zCgac`u+EUFP)7v`Ct9L1Q318Z%s@ol%2PSx+Ay9#zujOaOPx?BMwqgX)8MIWTDGc^ z*EfHa<7+{1=By}?&tVon8z8L=-!6rb+Df{$Q1&Cea1FsQA4P~|aiQk()I>Pmy?rbY zn?liNhMr`H&|TNhXyg{V&WYWe^{ZgathV8Q_C?a(8D-fpmSW-iK3l3CGN#I&M%k8mb;vL6^u8`(%a*IB($#h zeim#jfz8XE+gF#Y4n|3n1^{F1qz#+N1ohYF$`FTuNEwsY&X8AqBRexkO37oM_uO&; zlzUX!i!OxGWuaKk^%7N*rEHtU6-d`C85+qD+!n}H(V;&5cZBaxtwPpnxG-gQ^H#m1 ziQq5r&Fmlk`hAU~Irg_Ffu00u*p!A`0!7SI_Ij6|B<%$XYM1ny{X@x;?7o-jyWvIx)I18+DG(F z2iL$zOKG33uZ1wFbxU^u(rA3p;R#c{uY7BddI+WQZrnv_t)+FjW#1GX{XT=tKv@_X zf-5DDnO*DBv;9L4_Q-weY=fu3as!e$_*WEob)ypKzw1?@Mj$Sp`mKoQM?*2az(u@e zkX0=pkQ_D`5zIWV$QFUshdJ-fITA&d0@4PfzGie6s$vCiM> z@2$^FAzzzKyk>2|uUIX$u@NR7JYx+GkE8!E%v>@>EzNrpZ(`B-ZVz*vwH%E+TCOz1 zYYMEp!cjcU6@-cygh%*ctB2o;_O78}2Y>@R+MnYFJ#qqc`#5rKy=UZOedro^u^XH7 z*wA)H=Mp7Mv7`zXtk2LIEbj*Cx{wjXbcT|HPk zTCjQI%}wF1$~QCx(&mQw1BjjTZ`?|OWsbUJEAQ1uWY#p?cdbk53KMF!5g;ECJEP-V zJ%G|ZR6&@XvaaYyt+ckO&txKO<`#D+c-Q0nF1P-WA)yO95psoL~1-PS|J3P0euq z1DOb`PLW(Dy!$hVw0W%L?%~?Qm-b2nB2Fd)k$xOH2D8|!r}C+qTH$G8Pm&idgDAZ# zpAWv80&A6z)!HnJ-4cb7U&DKA&zsJ!J}e8mfDE*(O6Km|Rjg;Z&M*CT@zvS~xoh~o z+D3PTvb+k;^qHs?hHqO=zKZpn3v3Zoj$8o$8F&R2`! z#5~~r0-yM28>H>`ea3I%my4OEzZ~j2w?=66iQolvu7dLvP&%#*Y%yQvqS)g7>ORPv zO2JUAt=a#m6(0*+guu=_tXryHKskGAF-bA@A-KxoWPatWu1&?mY#ZxJ(Uh*0ezjt* zFhzH!SYW26i)O(=iB-eUjJhh+PCQ@n$sP@ykO(Dv#TEgs^M^1;W8R!R;QOBm;g#~W z_+}Z8b+@c_iV8brHGFfm*v95u@AWvB$FV69#_HnKuTC6m8rywuF+|%PY%3JIl>rt? z`k#YsmH~+FDWJI@2>Ai-p)@H|LU|ci;7%juY(>DM=8HzhE)~meoTk7t%bA3Ixj9q6 zx3Smt-Gc(+Z+a(j6-=qOg8jso(nU37!b`cW0I7{~H-ND%DH?Nes++WgfzyL^F*(8> zbF>xQSx|*w3K-|Bh9O2TH7QI>Q_R<9mSx*ipJua2yh*rS#xPA&a{(u5EZ$(Sr(Ac> z+kKV#<%EK(aS}vfB@1@jch@H$OUkjpP)x<VMW^eL6ZXu$WH@PKLMu_*ygCIrqVJNm+WsZc7+BtL_J1Pkr1x^%!&X;lGoK-u>S( z@;MDXH4U=BySu?8;4dSQ_q{Bq`@YmgjEKPS)gLmm42VF4p=}RHm$Uz^+d@X@|G(P3k4NNOOBnqRJ+VzCP!4w*@Qy2Keq(Gi=%(Tbv!)j6lx%eSh2& z=@4R)OO^+6>o-)icPNQ3& z<{6rT^jGMzIFn_X1TrDkq;eJeP>LHuj4^KO;oQZjp$fR%Beq&u5-i~FF2yi{;rd&q z%FEy(QA)S;Jc3h2>+?7~uP6Vj+uznpK7C8^&;H`DoRfbQ3FOSvxzuOGi`EYm?uBKI zaRHn=?(R;pvsAPk!DE+8zIObZAcq|x#lu z_DNlCso+hMvs=H^`oEnGie=b4_t>p<*+qiwhz550bAhUJ0UHeaNIr9e;pFEL(#i-4 zopWmjZ|`6@uXSzi2D^;&T_(F+hKO!Ud>L-$9LqNr?6OFqODnkOjjkkdWMHFW-J9(G z+(~wMZZb-4Y47>isi*5hLnzF4MSXJ2?_EWW=l8UStMRI&kz1;Xkm0$Ps|Fq;giMC5 zw3{(GN~FZ#g3*T1`p{Dx2~#L!v2YxmiR$-uQ&xFek}g9Y)lp@qWL zr#4wS?z`~+0(Q^NFJ!+ubDJ2z6kJL`zA5a-BmPpg93+PD_Y^9KG!9hGocv#SF}|B? zWXj*BI>(II6F|;Nb-fnU@F_@lE(nxWF&euyp0Q~%_P;N++cv<*vZaho#n(EJxuI9P zLOQyRcNm@kWw|&*PrU^*hX!1i`7X*`n}I>o0=2sIs8qj{7oGGYch1}sENby^-xjxI{1r`pBUAGQ8Tv3T*zeTdZ}hl-$hZKfE@d~c%^KZuOk$YCGjQPPn(}nU#1E6i zst#NwOB$y95C$T~)E;uO;cm78swGKj51PdbG7y@=(@T;V&PpsS8Mcv(*QI-$8k5&= zest^J^X|7<2*y;r$_TWyb(`$kjOQC-Bt#TFDu6}uBSNDky3UPSY5P=E-pzWOSEWz6?>@i%VAl04$ZtI1 zR9JRM*iMg;SdYUw<^Bq`Vjr9r!BV0>4l-qTT|9N;RUp)kW6^Q=VRb6|Io8?|zJ{?0DVCon%ii!)qKcmX*iLQ}YEWwOP- zST|AG>?hCKnPFdVxVcjb79(@%U?|`#Sb8Du)C9xHl5ZF+p?`YgW=SU`{e=8}?X$5< zVeK+&h@-GF6|-c2?-S?ltGO7CWy&{!A|NoKVCaI#6n~r~6sEMbFXu&gAjZ|;)J?G- z@_)3>1n5*-=W?Dd;4Shmou;El$VM6m$j^fxtqa8ZBKr2h*k8JF=Oez}bIr14FjN%d z%=@^op0iLtnHr7*lKrMpL~ay7gwUe^GsrUhb#r}UR}dg`Ga8n*NiH%BIn{%##=DFZ82et*0y$#0uAUlH{+&!+0f%U7+VMsnj&*s8)$w<11`dEbTrU9 zDHRES_D_5myiEQ>(;wMYK4SkP*6QqEWu9N}jr61YSIAj^Ufi=Sx}|hTf*$*|+c0gn zzbJ^32EngFOpgc31SSq0nc)C`KvvYpU(hg7-Pa50F3|cBfIPJ~v{Hly(3IC0+Qn$w z4_JMsMAsB#mU=h;kyE3;hp3ma=iQ2t2j4gm1o4c<{iG@>qwih!@>%_@xO(@Rxnpvd zo}tdmWcB}&x?&EDdmMp3hN#?2 zTdCWW7U&FTItzBi05TJ@LWN%NVt_pUj~lU2?K;nb8uwt7X8o%&?WW9xrWSCTGl zEv0dU??d`B$o2Q0FT{4 z&>F)Yi2iDD7j7uE8jQ-tOA{EB3y!A&{W2*4dSuRT zXR*lTMd}mBb@@$yLb#i6uP?vIIT;eBZw<70Y1j=;(VRy@@ySjHPCyLJ))3=O(WJQg? zEG|4q?EU%e-XKXLh*bs+k9zC!Vi{9Ng^SfxmZXa42optV<#%<9UNb}s; zXEC50G|?@rSwsUttwx>TCzo$ zQ1XFrq2wQcv&HV!(g1STnv&oZ>HKKECr=toZr73@aXUibpYj4^BJUIyG+c)v^jAz zF<~oQdD{Uh1D!*dp1tBv80o?m{=EP3avGskj#>1*|I3wqtwxVX2Os|1GSX4JC_&|9 z_kF!Wh)lVj`y=s!;=_#JKcZaM5+@GA^?vh76o3@V6xBtBCDGJA7+2Ldbx!y+H2JI$ z>9&ti_Ogw(vkBuSl@QR?ZtZ-;{FQ?j|Kk5ZH}cgVUgl<3d_>k@O?;i1Q&-@Z-9KJY z9rD`3= zo^c1YURV9+98pZO9ceU%+!;tQF^$_&%WS%5wf51Rel=uq;(r_29~?!oYac82ppMR~ zdzf;Tt{9Rw_LO>WSUpln^}D{7a_EEAN1g3RD}&R=zK;k#9{aUnh|U@Q^r(jJy4|JN z`yT?Tl{QnZ^dSRI>L$@C$J|wzY1a+nnATN#MOwD4vC7p_>2!|HMXQBvgk);o7AM(I zYIrI2rhi1uY3J_`3bwtD*`?R};i9)|FLnPrlAi6vS8@bjGPtC|3Y!*hx5xxV*404{ zcJ0_X<9R{uq$oUfhkSO2E>AVFT9e;3@NOdtpX0#yd`gLgwa^7{hbb#5o+h7O2ErzB z(xgUT+Z?@Rb2);JYU zcU%1n2>Cs@dn0%bi?1KZFi+x2BRq&ZrWcG4k)*&|&4JV$ukR)rv@;-;cG3M*sOhD( z9N@DQQARCGndp~afDFRt40-Wy5Qgp$zRTMS~+BOC4 zQ6?&EM1k=lLm8k4M3f;iwIJebmSvZ!NR(~g21EzxgVm>)9>yDdoHPldB{}Bd!k$JM z4#V+hexs>IP3BAZ;GymuPuuUYFcycGKGp8pI5k41VN`T-ikW;3TSMBgzz6oJn0g#i zBCTh0f>|aVJL5P9F2){23QWAW&7ZllMm5wduezrte=tQBUW~Bh#}nhtpVX@s-0e|Q ze}GHYKzOR7rz%F3bL+R`7zF7gJWB)Kh_Glb&LZflguW8N44Y}zJ3m;fHgjN+Z^Vja zmX#Uq(=jorf^a)YONJ>AJvT2ev3U1cJy3bXGDkbUAxdQyK)q zTHT_?-e*=AnXsciwzpt|rWZH)93i(XfRd9fpC9W}`I)zUabwykr>}=jBGLjT|0>3I z+`ch-=L@0(2_da98l}`55e~3zQ&ByNQl?278n0~l6}gaR?$hLjcqw+N8e1^k#$c|Y8}n7c!Rr)jY*--d043?HjjdqACJ z?ORiflUjD+J2tvQ($^ebuYOm&BUTpb z^>28@t+Y`3nN-A;c~1xBJD1WI?%aC&9BvCsR` zgw3V?XYvbT_|Ffyp%+K>CW~b?TaXb(x7VJg;*j5Dk)J4tU47+e zXSG}Demw92?!N7lM$`MQaG*h7I#$OX?flQR@3lq={hrq7;g{$&oi{QCiU^3#ao#7@ z+lThQ81v%oKi<~>hL^w6Y&$;_**2VQpE`XOF!cxxgqh<9GIli&sgDB;SG*}0+<`D- z3Q#^EiLR`A6JmgwkQ=JmCk+KquPb{P7Y(H%oKNx!dQX+;Z9hl(s5`Jv+J&<2AIxL@ zjgB7!;x6}P8hX;;=pa0=S4`XBD((jD}!?~ zflKE(rOy59LBHYhcmD}j2LD&9E_{so-B#b8;QmF!D91rL>&yHBJ&~cFL=5Pv+I&1Z z5bmcpwxy{4gN{)2Zlmy&vY!}`2tNXXSsGN-`+SVZ3W=q{qO&0DF%sp$I4KA4V<>;R zdJ4L`7*S1yyDP#^34b1l9$*P4oEJD=?>Vf4Ce=6A)4^q~d)FrvyG2tvyaMnAsybS4 zC8@EK7=TDaN?VN_EORZ#K$@2N{FjpE0;kkAk=o!Kv>b4L}&< zGhwzOI1!&FT z21!~2(}0&W{edbe4N*LtG(iSKFNjIlcvqB`s5z%)D( z4NKvGPm~k~K9%IrsiB;V6c&`tX^4!6|F&$rn}Fzja`VYxr!=DXXYkx6&&;{uMS7r6 z&WVKECIGWctSXB%PLUKJMR*^x@zH zq~yQY+lmS!7`IO#eWCq6{{PCS)vHMwt#w#C-2i$Zdz&?Z1N-7Ps(1Pa?jBL)9koa~ z5gtGK&U`pK$$A*Q*cm)Bjq|4%7^5a{5XQOM^V1rWi&{6iO8aQ4rd1B5pMnyp@N!XH zFb8IhH1^}zvgf*VeL~pO5JC#{6u9K~q1kl)VuLS~OZ~}yM!HMXIM0E}jl@NeaiLMF zt1K{~8rM2~u$-&eQRRNSN>h4#T7g)FLy1Ws8uU1c57?p(o6!-_=8s1q(tUy5bHG!G zO-@02rkqXNZrj=s!Iq*sqHgq+t$Ife+VA~=dHjU*{wXGliqsD@Pah+7a@2&f!DOo* z#&AcVey>Ied+H{8_NFGs^9y~H)G@6SSR1$`8YU0wrQw2kQ&)CKBD6!(MBvh|3ByVIrqQ}UK z%1xXD2NM^!2~DCnP?WN%p{WH8aj>}rHfeO@XVQOpdWxabI`-3OTZvLboy$5v5iZ7{ zNs2=poGJ|~RpsKo6QQbHRW?nPqLgfW=pK)zTD}L^opmmrZ!gOpl0|wHqEGiMi2fc_ zocdYh?mngKj>L`aviUsvMQ)7=M}GUg5w*!h7tW^5b4Y$#)h{K=QHO5m5z~0!8 z=yi}Z$2sqWQ$lBYl~8D8xa_~4YKYj1*kxsSsPtRv2rQk5dP_Bu6XWc~O09>L$4MFz zu{MDgqJOx8CsL!5G#W@66I1G)RT_R*RWDDgaY9v&0L-GOZubEG@F*+_h;C)UMp&^s zSnA#b zPbWe@xUVMK;yr;SeRezT=%C1$@GlMBT6+sN~sj^;W#?8zDjMBrM%BfZQuT;v`0s+Wr`4z(#>HdDUS#(BjHa~y*$NL zN&^FVkL`%}lGW8ri03z%6LYjceu7jwrc@@lIaISa;q+(y`}Z?w_U9ybIp=A$<58>S zdQs~3Q7#gE^|S_@CN~bid1d32NoJi~>~0g4t=OsGsi)FXCJU&D3)HkjqlOB;2-_sX z6ry4*?UY%R*1AyP1q;yU11WAXxwVhV<-jM2NzES5rPU zExXh-Ds7@MVZQgHPM%mZ4TwG>(j-iu*-Q$19*SS%$VIRq-5kv$gO;9R6fsH(Rpqfs z%%1}s?BCmDJbfpfs!p-N3&eP-`@9YYkZt(hcK9qve+n3=m#lTKQl-U*pnGYj{CcpG zWZ^pFM1H=3P_s!xQ?0G3gs+RHmgNe8!UVct8_Ah zR}{0IIy$1E!w`fo3oaY<9&(1;jh2dYVd>ZK<}?-eD9uwe0)>VwCKD!B&+nPmNd*$R zoG=lE8b|V#f|YT~Q8!hpkO3#G>VE0G(7<&F<;zK)xnk0S$ZA6tcYi?&(=!{rQ~7Kr z*^Z8#v%ADFGLzOTh3oOmp^ zPxusetLk-o;nQ(aGhli{j1UT|FID<0n7CQ@fFE!|?{c)3stD=gz}w>V?SPJ!nV`}D zv-*G6wRF`D4^z(s1P)Gin11;gt@1nKSw}~n?tSxXU3pN^Uc?iTBA&+3TH%6~K5R^5 z3Mwp|NeZ^0J5sUIQa1^*mR}cwZRRLMe!hn0Y-!=yLGGGkw(GsUW8dAa_e9;q0dl#< zq{r~(9pwP50jqgO<>ExcwO#Tg%~9&EO8W;SVPfGBU(|4 zzePvS9mWc&=%tPqo-eEVR7{TCe&(Xpb+D_8!QUk6-Y|CuPa^&_)3L{%&AB{$rpEGJ zC*ti-IHo_6oh&5+@1s=AI-zy&g)Sg@UNx$I>W)@}|Cw~d!avQWorRm8 zPQ&sMsjm?i-rhR|QsA-RqfN!kgGFgP z_0avi#HM`R&+9suMX0+PQ_?CWeVW2H3Y0}VOP$AD;6NN$kXZ0RN19`&$k#!1E|3F` z7$ZdotFjHo?^a}L9F5eM)d^~M9liZi?X^7x0N$0+A_dO1&~pQBdq3xOy?p*FYF$VF zJ01=1ys;FT<7l<~YT>DEJix3n({0ELL`j*-eQ7PFsU22KKJt`ufK!cl8m z_(GAooU|p$%aTOTQZ~_@q%EUsGFp_YS6|9f&>CI!>or#kDq1tTvVT=eJsN$r{UMIw zNQwBV&^CUQy05=<{FcA2sZ+7#^zJ~O;)Y!lg(h)BD4WWXr@t1mnxvL2gT6b_up3OX zQ0R%@*XeT7VF=i>Kqxc2Q34{}t-_i!MDTMYFTt=bU8*`g=aF1MH{Hs^|5by0|KB5@ zdgsu32r4{lTP14b+tVB>{S)Erzq%T~&a|cR`!Rn`=g#LT7)H0X@O$@XwjUi+#aof` zGi~$a+oFbr-2#Y}^;0eE`xIiK@!_>=zAt6E-OHH7)`C~wab#)kcF)TSQM@Y$PJikx zxR8F%JZC*9elLTUfmoFu!T?cdGM6l`C12A#&a3hav&ZKq(fZZ>Q0HEH(q zS1&50%-oIiz=_qb(NY$Sv{Hw+Laupic8-!W)-f6jFf7p@k-(#cTehYTQfo#}K3) zxLFVL&8xiL_`GpDz1_V0d5@dTqz5p^ zJUW6cqe|q3J(ih@!D$j-b;lKv`-7M#+2jN4z}bt3?*C%b{FpFs~2CGJuVLi33;Lm(^>kV61 zEC~}O#Kyf3J$Gah*|OC`d7C@eL)q)Zv3%{( zVU&2S2k&cJM}Tl-K#Qm-GErnMqy%*2GVC;w-P z69bXKV`EQn%6+!M-rRQekXtG6#nD@`bppp{SIBahhfmiOmSIP$I`G{LiV<9RRirsb6hItvmbka>F z|8#SY{NN#GHW%-%XgpmIWy?@cCV67Bq6P5UJmUX;FgcM1omUL9js*m~&F1|U-lq1k zAGG$}i0&bp!?v2q6Z$QcG2MNsG1V63;#d3r&+96UhD772|+)Ec6=Gu z58)!*t$8K7x63ub^DTjNo%j@m3%``)sYEU=A^^UhDFVp zhD7BzqylbhJqKBzBEtUxeiTKlRI4SgXC1d-y%NI6 zT63f_kXb)T^t=FoZ>^=P-D`)M8|&s~Op>zAI9X|ay#;a17`!Ab-XpOE5wyfJ_+u4~ z<qK1mjIKO{}k~*t%6kck;>+L79s96Z({hJgwo^ep2Lae1NMJ z31{F*{txp@+!uWJWN>?#ILP^LWx5lNl7-Kf| z&%DHB1sD^)FLKD7&h`i>eUFizN4zC6y4Ff9VT^`M!A$gFbWeAeCtAWM@?C!G;vbIJ z5U@Xr2xC(^@f;rZw@`odbV4Mdhh6yNcTuWQ?at<=^Z(=7lJ($5wl08Dbi8G(y-R!< zZ32kN)SsltT`U56&>ew33;n>^Ju-x9l(JStC9`M#j^r%sh&4_2MI1~FKZ8QCth z6b5NhJz&c^izyOSjQZfrT}3zzAc@Ov1`E)R_lL<|nBsNCPY3QhJ~Eh=yJ+LXW*m)r zq(wig&dm!X0FXOxwIQ{Z-kJ`TpLjom2PGm=2mkj3hZHASgZ zbE#A+bW>qJzw_65JkDRAbI#}e`F!5*_v`r@p2vGhOMhu_RF(hwu*G-RixDhDa!x(w zT)K>bA=aG>%qQeUkX#qJV)~rHTZYz6#PQN1mQ;hbcBK$$xkvkn>qe&g{ zGfJ7iI&b?F>1QlkO1e86OpYH4t32nR_Wco@*Z;xuotjcx(BQGnmE-xT&Z-yOA|v2$ zq|Dc3f$)86VCBtcF8|pCN-EF)n8_7Ed?9>D;7h12y$qgs@(09XC(%oh!uVRWT|~Z@ zV_dWY@u9*adVQ(UBG zIOx8DSoGhfL-Bz&IwBfsyrl;Z7l|DXx*(yeC(b`N@wGOskZ{aBh6c;;Q$V8Kd{OXc zDG<~V*YC!^oY7(c;y+517s`jq128iVh(bR_6sq}i%zcvaCoVC` zDzF>x%=U|*L0qVI+Ua=Rv<@ZWbC}xslq6pXwVB^BHI_*ct~kXNFqv@d@zj~uzhlR2 zk5%i$N&;bvumceOAuZzZGn}|WUD#y3%y_*_85JvuLZt3PWmbgKa~Qvf+V?~d1Q)P& z+gaMpkz<%y^jt@7Sy9?hm+Oc2Ljen5N{Y*wj+c@(0Em=XMnjygrZThjw<$!&#$@`W z>6%t}O+MP}7Z!&jSzgIWsxc*E z3J~I3BgWOp2mwRxHRC&>Da&9_9CRc784Nrd!U0tm;w>mu!VdRArHtyGI1C|n#GG>Wxnng{Q>ae z`od3!(p@~sABAOw8_N0PT6j~erk}I8jQ_5Vh9)SI?Qi0Q$LEGld!Oc z#8TaQcPHXLnz_9cZe6__@~L|6D&p4q$C6=)i*&h zA$EV{UU6l`$eZ($Hv|6O2t65hg96XO$w{Ilzo|=p$&&IC?__!RTJa!bNF?E+ zBk#(!^`dvGD-pW8p!=yXXIiz{3+Vm$);sY@&uqaIv>0ZJRySQnHd=tml6UURw?-jL zTbpms4~3L+HG}i4OOqv5a%I1ZB)@ndzjNfoLb>laxkb9{$?Cf|m*vj>lRNWIE~_4q z*5e7ip7ZA_@;HDDX+zA=rI&{^!54Be52(<8bLBiyMO;*lQ2rtTRGgrsmETbI>FTqN z9*?J2^&U287$1?t>DK&Gg#0m~5FKxOqPErRnmlkSjWu;G-Su-Ak%xrGQ@42k@TV*W zmVLoOMf&bv5Z!u*TYg9vI~9Urh4HHIyWbXkf-aL#*#x=MI53`2YK4SYp<#!3Abm7R zJO_^1_h0A`Nainit{Zy1zV_t{SQ1BKvREu}fWmWf0k2)Vb(1Qa@mW$f6!pbk?lR|Y z`aij+TP@##2ika~3-wr~6p1~^486SplLYQpH)Q(q@kCEV##Q8XLR%34&Tn#R%0KVz zk1~{Mk7?-9et14cF;lml?KPn&8%Wc8wP(8o^Hk}s(?qF@_3%?v2{8wDm;*~Ez{}85 znlCyYe`fHw5@wWpaYBeI7h+}HD)?k}2XX(_R7kuAELv0@N=Q_ig|BlEyExD}p-g?f zG<#WEOo!+2j6eJU~sH^)a{unywX?1Mc%xxaNQs7Z zxfpdx3J$THAj$q0E}0po87b~o`z{xM8D=KL1~kiDUmnHQoKv)r>fmLK3r&cQ3uH?mH-!tW=KK?l@fsa~h| zUfvq~)*xkFMH1In%N-W1o9>muDyoxyKhVl;x7*DQGPw&RgoU5LY=p{&Z5*S*- z@t39jdnS7Joe>X6uC(b7D1*|+!Bu0Vf`;hY@%HxQiPq#ao|70S$sxe^X~3_O;T(cg zCr66J>KGD9?OAX65&HP|jFV|L-ir&V^<{aQ2qlYzc_`T1Bf>ljSoGFjU@@qUj*mpE zme)(xA!Q~+(iMQ3a?zHxu3V!~eQsH57qyItY<5UQdGbQeFgx8$ARQa}u5iK$Ff4^r z9y2mJU6lQ;yl(jlY~C)ME0iweWwh`zPQQc~3E^m+*C*Ui{60zfUvfD-;J;bw@Y2=m z|6bQTi*LHnK0n?oOhmUIMBmOIhs`O@%#6$8;CyP(Jq}EagR?}4G^gEUXXksuXDpl; z?#}^fP~qHtkGI3GpNKpa2Y~hLo8EmlI&3))f_iadu-N2}9JK?I!|J44xfNMJNaf%z z6y#(-#Dflt;7EMZkw~K=W=0@^@nyw*Y9@th!&l5n06*uir4-q|f4u); z!J7{^8r;aeJ6orm*8y-|yJV3>#?UidgYmgErh1Frf!gD=MJ_;^Pm!EghU!ljD+#jLU`RUOfHm+(N9OheuBi1CZ#eDWbxRQ zlAgO4dnyj5d7(V~M#^R`DP^7}%KAatAjI$o&Rb`&opsY$QV%!flFJ|N;lvlVOL2u6 zEaOSdkow1((&u~N$~YSB>r2*vth`N1 zf~Qd>(s6L}qws3F>%DsE$7n6A9R+dd=r}{gf)}+d?exaeV&}@)w}N}sUsd9kRkj@} zo{WRPtA{_QtL&#DhLCbE=!1#E9d|b8S>E>*+b(|o^I4K#8(95WG4hF~U#dXM5A#C8 zaMC~Ra`y307F+0xvmU4kb8;{D>8Y1jz9|QMVOIp5jVr=Y`UztAo14htR^)#r5#W)Z z{)PR~Z`yW;((dk`a?O0!@OLb8YO4MdHT_UtIS!u4fsIrf<=`Y~`py=9k2s=7d0MBq z9>{YSLF*cEq?RF*t7`)Zvtr)I*ewkp@j;LX@<#!}63Jeq$i6^A61nb>71;(kzn~g{BkkcC?fGxoqfOQ&g`Q5|k_#Cl5 zXutkSoti0uoA~j`;KTBaNK&?rQE|R=k+`SNNbkrP-q1_m{?A>*LKX5Z##*<^w+P$A zD?E!_d6(S546jntq9E%$FP+`h9+2RG+|ujfJ6PbKTZ{7CkZSuv#t-eMxG?zuNmM)9H}eHFdmQ6N zt@<82UhN>B_quQt1QGjrhSrN#V?HCt`~xkJ4z5i-|kq-u<^2)+jb1?{!BS zi&O1ah#g+$anq^{$?Y{b4`YKyq(B!FbL3MC)J%|IBH1nfS#YT_C@SB;dV$m5K5988 zZKc}wSvj9Y9BK{HKe?oBv-a1}G5;%ism@t7#neK}z_{5$#imGKUehE#&Qi)%%G>ri z$79?ETfJ`Ru~qROx1Oq*l+K(gg(Te;3i`ay&2yq@ihCe=JC&o&u4z&R87I&*+2CU&2iuo$SMna`xQcVXCfo8EtC+u?}q+0LoT1 zpW4oEQuN|tn@5ibO>&z^*II61O0SuSZ#69^_si^zk-TcUSwzw$=o<~1c1x4r4LWSb zlVr4P*AB2UilGbUnrc!CZcSQxt99PztePy}4%GPFF_pQrI)l0Xqut}7>8T`l%nO-9 z+cncq&|;^hmLJ-VwzDy%k&B(*>)zRAvN*o&^9qf4!w_edqTleIT(Z+D$+uWP;iJs% zal(AvnW7^MOupTUOHpVano_i9ZZ<|5eF(({ol8C%uNTY_Vqi-Q?wz4lwVBcHC+ zd4S#wfb#`P&vgwR1k~R)`geKNN_>Rui5|W0Zq<7CO;Cq}*A^Vc$C3oI7%179;|uF% zx$c~nwdT?q5pEZJ*$p{bq-zy#_6$O()NVpRCFMl^_-JIN|SevoTsPZXmhg zW#f$xM^=U$ij#i5kePIAS`rHH(54eLO%jnw>tto39pLbivfYHLk1o|u6!+EDPDuFZ zvEVT?*A%1tYWi|Y>|Y5Bc7t@R^(E$()t4@81?I5O;GMS&G3<&)Yg=Yoq23WA}f%Z-rZCyU{?~#W-K%xw-q-HuRLQFR~)nEJ1{4+fh$R z9@;WYv+>0iIVLUJv{WbO_44~efsOiaT$u#Z$S1lgGfg1a4!a|TaVc3(3t*pbAb0t^s5Alh+&NmM1-G7!Zofv{+5uzO#uhn{DT85QNRoU~|;Q zaWI5aB%648u0nRir61kSvG1&h>eE3=mOt%Xx()rpy5RD}au`j0g{{7ybT&?Y5M3}P z<)zAyYdxumNrwA!jq@F*jC7G%j}LeOQPJCK?9jwm7+(57Fdlg`qGfdZ{4I;m$?OZIB(O5J?4sJ*Z(DSe9TY%l1BRiX0&bUp>IJ!ksu=m}$|Nx&k|%Qni{G>_OeGri1gdm6W~0PXsxs%RFT8R7-HhUnCmY~G z^XZ?phiZ9vElTX5!E@X`dl|pVUiY`9idGkL2`;9^H4Yn>S~_vlTGV)$!&b4g{JBv{ zQFVgqo<)(iZVORG-f{f7yMFm$H*(XPWiP#uh3MzbdGZM>ay~O)epS~4{1RU_uCHId zYOX5q^n0uAj3VQOXvs*M@B41J@eAKsX-BJ1Ok4IX$P{2%n6)cvO0h`?kL5y~&7M#! z+?-`BzuF|&JZ;RFE@~9BFPxK)lt>bSjLOk`yexGt!dI7SVQ(jgIY;|K{Jbz6^G;tehbQ=ZAG+znN0$ph_af=;1pXqW|7$xy- zU6)$1Y+^KXdQ#cqcFxY4PZeHA+3%#vG4}i*tD4!ul*$3Tq)x8;03!jIl^+`Nqf&tN zcin^alD|lwXD7HSv~u7k!(a8BfAM8iTt>IUExs75Ox8_e2uO5mDH#x-tkiCa9paQyMxW~a2)6WNG{7rvgu#Cuy8K~N8X3r})=)p*odl~iHjO#)B+So5V!PdN5YoQ$n zQFT7JGh>ZW#RhE;Vsv_3H(O>D)-#?xlzR=dS>~Ip#9y$LY&9F+(lH_~?`*xsVd$LH zI|X7nE<*g#(iV#h%eDI%@c-PgtX*uTog2gp-FuhvpQ5{2FQJ9?*EI4vihXihG%+s- z*SqC%gjRzDtx1HiZ_sz13-7Ag)PrDnbZ_w}`b0`$-%24|vIdiKb>5FI!J!{AxoKo& zE>&RU*~*Lv>T*QDqSv6&aM(x?d!nr(>s7OYsZ&0er9KUir2(~DjP-Dg=Oye4!1Wha zy668HYmME@pfN3{LB%T|>lWxvIwVgDVLQw^NXz{Ls-s+z6trK#S{I~W+tqJr8nIHQ z17f)W`dz8539Ec7B-oYKvkM6(VE=O!vVsVem%$%NN zDZ4}4w<&vJ+lY3~@eZ>2*0Nu_G!CpmJ*iAJn&XMy`V%i&j(Zy2v#98+Hg|8|0akZ3 zSj%#>s9pM$<>;%br^kQ##~@qWVdVyPJ%ExkrGPq$Z8${cqTOhQh`)mhCX(~ce`K`d z1cy%K_;yL)g(at2I+Fp}M~0c78zisccAIVK(hn*UxVs(DMP@S$*EX<2(C%C`9@kZy zLFuumWLYm=@o+ECSY(|Et#gzd8~elx|IBotFtg_}^}CoYe8?H&f+(pHeOFRR1E z!J7xsjD!RQ$pVYv`TE(Gxi=!H*%`^OU<%9f1W+odaN6!BG-kx-NkOrP${X|u?yAf) zJAed%84k~WlI{{UEK9}uJc)-d{4l6Vh3h?3*n_+7#AHlWZU3u!eM9oPhlNKIU}pyv zYz@f8Emqm!vR%Y2S-zC>hgv!_*b*nVW=-YgrH_(_98FKD>l&epjunjYRc}nZ+$9*u zcc5a{G{DW#J??Dq?SrhfKRK>!Rsa=xqm4cK=>bDmy5HF=S2a_Ak?FCP6VOHG3oSZk z)&09}XHc^uiO})Wws{Nnvg+B7JBBwtXUYAQNT6mw8XjC3++H#Ph5scW(q*mKs87QB4eRG+F))z#6`x*FhCpGn>}xxWP6c*f7(%Y$l3E$?amU z?#1%OY!)nQQh4owW$Wbxdu9d~tchY$^Oe>3{;ok;{SU3&)64 z+PhkL%OZ$r1?aX3VxEs2wGMjf(!tCa2Io?lw#$z?aB|VBphHh;al>HKW#IFtk|iRB z5hOR=zV+xj2+igxagD!glko^qqZMF7+ZAhv}$QUr}! zgT~@uIjVeADH~PrMEJ^Yyvv=+fqJ%pv2cb~OF`sGpvABpmdAM9%&?+@Gd7-Q*yR6N zzLh~8b)-zU9jP_vfcFG}-QbU1UNF4sp{7X09aGbDN<)8}?j!39Ire}pd?~gQ-fY!x z$(xM-dq3gGLpvlhl00@P%(eE0B7S=Jeoj6@Cd5fHVp6PI&|cIw?%(n+zPg{SesSu8 zvaj|vwSYkm8{@_xaBLYno%@l`Zv70Q-ezyX3b*tt0e^Rp;C9&MOqFGTEYcivY2e+e z{(1QwvLd=lC6MgSbZlXf*D7|lu^(S|&#Gcqjmf4KK6%pZ*M!cdiU_f>V5}QZHo07e z3ka*p%-}r2pCV4(W@i|@&JaEN;uw@qWjbP+Eq#@iCnOH@Zt7XWPPtvo5M>=uW%94( z*@oQTPGLy9?RdkcYu4{tOMO${@BeM<^yC3BlI)UtM3oO@`oRbn*o)H;W{Q;{3Q9t@~7((WUJbB(_ihJj zKM7j^eb-8}h+euKr{v(kE2VU^h4zqP0Z*HCpSISfPVqOhWn%Lxa?wcRXUHM$L9{)j=-sw| zE1Y)Dv7Vt0m!qj=MkWCN^UhRX1|B#YhfBVvGA5T5JBmKU)YYByc=4X8bkH_Ayr6+a zeFQcTfvnvmoW>z8^;vt^w@m|Y8=cP8?4nC?=@JA0Vl8v~8puc}&`M-}+y*AV%l}oq zV2w(t%|2Y)$+Wup&~}+f^J@!UTU7r1pu?dh+>^Df4X)-;z2ROhUv^<63d&mwZlba< zZ2ea>AXb&-y$p%p52u#JBR3;F%6+*%(V^!)dYzky=!wbhHL5<{)uh!>aaJem>es3t zcfmspH6&2|ta3hF&PnWvyV=Odzj18^@H!zhtUqXrw(}^_HcA&0bs2&)KLLK{K57;N zCaE&tT(3&EEZEKl$t2UI>6v_4pphNZbeZ2jB&kFLfd@UWREOsx!SXsqyKu~1Xv&8& z_I6J6qi2&IXopaGzS2r?X1jfd@Nv}lc?Y+*gvm=6ofhm$*(4uZha+AG;?M`wGPUR+ z2Rh4JB&(VPn}EE+MaGw7RORN-^O$EiqlA8%&xO{Hh7oMzdqxoe*wc?$p@4Tziy%!- zWbWEXQfUZ_Mc?>a2mhe)0{bGvxqR;aJEO6V}If{&xTNecSsqmX%s-0REOgFSlp3 zxs>HmKlW9rC5)Y~@ZSYZa^A4%HqD0?`2?sx_mY2CR*THo-m;WHWU;MWP041Cj2jSr zm$m;|$2{)HIKkQ7{Mk*YcXRft5bYEC#z5XYVgAt9Iq6SxrM8|yEc->^R0n`o1dn+$ z*m{|9^J_x>bi$(a)=E};It<+A8g%yg`>gS;&-0!+&U}{i+J4QaVL#L3Y0hV>)T2%J z>&Z(lcMB1V1qyacJ&GW89-#NB1Lmov6*boi&D0u5v{L>lr=7m{dE$vgumcqwaK($7 zlh!4kzVL7fvXg=3FY39g%CDMK577#;O=H$>!$aB7{dT=AKnRy#KVWk7xI(oS{7A+M zgsgbTKKEn7_P|+KB=Xoy1!neX<~{=Op3&>8ZXCmc}t@HLnwEzuc;j zApdFZ3BvoHHT@F)+2-PTmVa%8R(z2#uN>|^#_>fi#s&Gw@w5d(5rSd_&#j(BFj%HT z(|*Q^>Snx72sBkAB--EburZm(M;Vs^M~Gy+q%o>`Sa?tibt~oOus!AP<9xyc|QjkW^2oY^*9r%9*iUF$qrA zz;Lz0lf+>i4qgAs6sJZ_M`W%%q(r5b2_*YY5zCQfCuYkeqs6!<67f|V-??!J z7s3ooFZu7Dgt%1>NKU;Xj(9*LnXqL8z{3q7iO#cw>UvWsw)WX2Un?Efbl-!qw1py9 z^=KCHB5KzU3KOnN+uaTo2XQ-(ZR@0v6+Qz^5>AGR?R=5SzSK6#^G{{FXU=@=ei`1{ z{^o)NItkEKbh8`Nbe%4q%pAhUHchywN1ZOp)?lSVhLz9M5c^@e@=9i%@-fMLydp)k zc6;Vgmu~Rfxj|vR=t4js$u4dRb}sYbUNdxyb_S8?S8!f#Af!8O4Al3dO`lri zDXyGbJ%PK8p&CNXx-R~}V(!5??@u96RkW@WrzeS`La$c@h;dwIUZEGn2B74;iR#Q+ zkCsx1941L0`EMB@b*4f9nqCh=ZTMzNQrY@S>hbcMr313Pqe`y;14zI-9eFx!Koi}P zz4sasaSZ~J32|pi3+eJ=Ay_Sl0~p9^$ za?604uaDW-a)_byE2iTf|D0}+2K{6x)F2_+eIls-GT`?G!m7l688I;UWISVzt*r#*n zuxfwe!A4|uOQ|{Ci>;#Jj;A7?Nc+;yYpb+F32&}Au7B5lW{>ayyz`JfA`I}^*m7YX zphAe_xmwsF2_x25>A5n2T6ZYN*+5j;h9r= zL2dcZdEc9#+n$eM!o~dQ>6@9D;|hzaj=d#TrI8&6g23ug>)9Ctzq}oDQx1rI6<%WC zL2=Vb-eLj3dIogxZny_qXTq@Vx6AAq^Lvk7Bws@B-0%!b7fEijoy)Q3=}79-)3bLi zLkwz&TYhKXR7PK!S<)*Wy?!FdHLWmH342t5K>euy;_3D43D#xJrt|Cr<3R6rU8QQe zU+A{z=Sp}x`SjQCk=54k(7w(dcWEZ<-#g!BbSda!-e7h;Z*F>6Is3p>8C%F_M9=Y* zhh2{$$u!Sb;m>0@em?9Zgc|I}2?U3){;`?#>ea3EB>$jSFHwh*SqBw#UZtWznw{J% z1#Y^td_4~?>Vr{WmO9i4_dw$h4{sbQGhGU>PT`DntBh9bgz$C*i|Az=7i_{dvm-Nb z6JovYrDmR*jww=mY?=ihI)>boursu9xaa&{IbcpN%_$xIO+Iw^9U0F` zOp-bf4F^Kd0JtJi(r{WNVdDnWp=H9K4IR64o%+jo$>EDt!mXYWhc~v<_Ikj5pM!ws z7O&G9WYV95G}gzDxBc398>4!ZzK@@${RMh6^{NRH{QZ_6sq$8?kyn<2Wr9h(qf&;_ z6Q2B&Kf4kWAqW1dhPgfFq!rav7p7yVp_=mhkJ`Ss{DeZl@r%25YnZ=51>bv*2c~}n*6MQ(kpXN?d<#4tkXCZ1$F_r>qO}YNyXbcI4kk#NQir zQ*Cbn+=zd{um29d-F8O@!k*pO0B^pgZx+5rt%FheQ2>|-UlaBcMSUv+zk~`WaY-!* za35{Xlon;o1(^&83@llgCC}&$sS>*pd{C%DbsfI&8aHsRjdut-D?LTAXVE!VC=Jy8gJx5p+p7$ium6BOmv3vg0SwE`;##u)TVr7k1s_tN%c| z1Sy}7hu(lToJXknNk)D%(DBxHlaIP|;19}&r!j%rW~=<%Mt8V4S5IdG3Jw^*#a32| z;YqmD7u*0+tqn?Jb-(#KyDXix-@N;GFXG>gh=2UI__gS0+yY({NdhboU<49?4%F8N zC@$bt2_#isj7MCo&-)k>0KG;uOw}mw3Lq84geB{4scT(=_8Q-bAtfS=aWMM^{h}F{ zFjk0>KLZ0`I1Hj?Rte>1f#y9yuFeecWuR;LPvW*d;7nGd6cT7~#4Q@_hm_HZf45RBhuEDGbgN-cVFDe%0JrpfWQ6Ya>j* z=4os2wL=$Vq@ykz13>g4VhE02{nAjgT|45D(Z8vW5h1lyV}#bj6M=FvVk3Ynm!zsHJC=DZ(>(ZW8 z?)`Nk6?0uK>Wa|j#bcv^l&gyWocYQpfLr87_-UYKD9NIQgjr`A7YNLSLzjd@*e!y1 zsKB7>APGIET^WxGUBD|wNw_sB0p`e$u56RMJO$M!!wC$@CW7)3Uw)D22Z_;YCHi4p zROw1yKy)feY|x@$>Zf2iJxIF{7kdI5xxujs+gmd2!>n5D3qp8XLav@{`mix>w4o8mzzC7+PG($ZbT*1M!j88FPq(Jq493m*&>^_Pe)(A9-A(3`A|^C z4}#22dK~DOd($=+vI5=zy~>dMBTxmm1yBWILqUdi41*w$VSxb8Gc#Q8#})`?UVbqs z5cHm97z+h>I>XdWLX!fSz&PJAh}uds-JbotDHDYfz1?Vw|L?B}@I-{>r;q)l#AxTZ z0ZV6;KQWRXv|p`&wn=XK%HWTI<}94q?e7PCL!(0xMX6fe_w#p`V@y&(dZijJF#Tg@$_cIfX6v^*)T@$G`0~koRw93U7kOtXct=;i<(6X+U4Tb}F2Zk`;`*_W zn=|U%H{k-YA4~TQ!2x4V76P@A=Ft7PS$T7pWnwP|qAmQ4UkAcf_}Ys6`D26&9!;vC zIegdE|2Dz0i}8FAKzmEO8vqg{fn+!OFy?}Mz++k4e^#Bq)S(-8gRAn?SZ&4|B*&%y z^NV-+GxfKFt)$8JU0|mrrlASgptm0jHU~eruB%K$Y$KpF_=-4ZxWaCjm}z>~q|a}l z_nMjc)_tjE-=SrE=V$FuP*w5O>x^ZKZ`w@NPy>IENxdMn^ro9f!qzNP7-!@>dSu+9 zL0)qyUdU%;g&5Z>cz>nH$2a1}KyKHbdRUV35VA=B*LAjunaXrsStU6ZLB0hj*TP58 zh!Pxu#u$;rA(5n0iQ;~xbubuh-7mnAalC&cZ5pGIV%M&S_1ObJ=gu&}iqyju5;L{> zCRcM$j6^B--rQ$AI`j6&6~#W|IrSS`za>tZX=w*GJWk%uGuxpLaXJllppbWN@tcMH z_%1Lu8H`y=2$r(a zKD~v12IH)pdvzIRcmdv#5nP?t_tH}0u?;&VCbp91cKOgJ48&C5`E$&GF_mP|O^5#2Vcg)Md(3r-)X-Z@P4f~FztdEINUSKFM0#xY$=Ud`{S28#{0GH}8 z33gGoHtJ;lPEV`eWa48|fYPZB!e3%Ml}x+~meT8dCrKwf?@!(jl%5Av@6tD-ZZ!w? zYjBOIyR4lJosXW%1^VxBDdisT;G#>pI_qGqE!~_5XqYU}(GcM61T`&pz4~t?turjw z1qO}+@i8(fahp7P&bW@@K()ay_B&C*zT*B}%S@YffeBmSv`i+Mp4hp_v>UU*{X4St zXh$dmYe%-BuQ`M=_8q*vPwu;cMy6T+XWZdsy)~efm~61TEGyNIDR__Pkv?~xqdp!q zO=Nt20xe#6Xk5?0UbtNBb`4jsPQHg(!LBm_STSg2lRb z9C41PG)5%O14v@9*oXiyQtSkZ09qGG(UasvD}qxf|E~p|^zYaOF*)(*?|(%g*-7T1 zw_qdF9Vz>PMtvVOq<=oAn*Kof^?pSmP%}uNC;F{73HrbL zSRcrV4r*hPG9Q2g^O;sN;Evw3-d&9B{(ij~=B{P3)8ZCYnYn9`>_GpQH2)LTLdrk7 zJmwG5@fYYO3QULPUB*sOtp+g5xFIdu9k0qpBbPAL*7FCkpBIq!bvKJ&+1^`_X zHT5oe{4O}{DYRPlc%7I$E(Uw8_jgs`AOq>7zO9^of4AX)lk{&TG%@Wl(1}al+Jfo) zfk34JVt^@N>mmR<0RXrd5Wrh*n}g=7?K-`*_CT<^Ut7#@meyUUE5>?kCI!#EtE(^w z-Ao%H9r3Cv5&J#!?Y!dSfj5dCvTlNx>e}b~8CyEDgCji`@my-rFel`^!>5W zsxs|a>mNg`pw*nIl>uR6Wm*~+LVRzD)DZDa12s_7X#l;3i(2LRiXACT0o zsp}4W3OHL@Ok%Oa8lB-=2+M+T1)qY+LFKS@t66+-auHNLHfGROGuy6RVz1X=r-aT4H`m=Z zjZKhIy`+t!xl#2(3k8ZLpB1Gp=IS&Bl6=yN17ZhK{gkUWtX#d)Ob1JSPjX_1@p<*J zBYHKCt0N%?r~Ia^9@{DGjd;@(EEE2Y{&b(mb2~jrtL#jHRMhSDy;A$*n-_+CEOcVk z)FYZoT|DZ{R+!EX*cfnvHFpSv5Qow;6Wb>+`%_H0yay&BLe92BS~JQd#7OXi&@`hm zN^RP(h4_G=b*^gp{Ecr_qKlH-;gEi*?fPzLX{$cM(k-j8eOfZMJnCDdLkkxqWqU#x zN*w6<{h7D~>W2TSdF}-l{)D=i9gZAde9fvJo{A*U&ePSRw?NWE~ar))V3Lo%s$Wxu+3`rDo<{o zHcTJFdRPnBOUCh!{P%vx$KS6iv~tAvdqv)+7k>~QvUvZ&XXk{JghoZm@QVfu_aEeV zqZd5RSwrfw98{Ycl92K=?e$0P&otDl~AxX$5pp~~M3 zvVv3FzT&@O5HWs7aPK6vGBsS9v5nX}@Apitz51p-wZ4*LS0MuCX`~IO4CC2dz=t{~ zlKmXCQaTSh^@>?PV%&A2psTTM`7Ua~XMg?KgQ@FFbH6yGsxXd^T{RVdwLD;DwIN;y zrFz`{Ay;8wzcNyWu`0EvW>a20MJjBrfYGK2_?EVp2~^=#kJx(uD;FN&%RBDKrFtmt zppjvRn3|~50LVysK-ygP-FqpNeWx#NOMP?HBz&VE`qijL`t# zZ;Lfa7)SUMG=GPlgIK9jxPHa;88{lTUW%c7+sz#AvZ$vv8t&GEZmVpH4A+sG)RNAW z(A)xqRnVlcYsm=Fy*ZTmsX>F$#!_pIMkO(A&;kh@j_qWq9m0`!UsRNrOP{6aj4<3s zlVMkD8sgiZf=58`+)jYd%=n+gc18n!qsZN7qN{3b@kn8%n(H1Sc+ikQl%fnXEXvpR zdffCc2MHo6d*+1r#$`Dj2oPRya&jJ!%6QG?*{H*T&6m|ca;Ccz{p?&U&Ti%VSl&Ay z`tC>EoYz2B(sz#i@tK+XrK!T(4L$qM$72jk?%!Z0FX?b*pIM0?pYanq;--nRK1j5j zG%CpPH2+-?+8LT+u5+n`?L0gP(Q&4cKCFUN`h;1QE#@*h?!}rx6%x%0z?jUxdD!u<6ZW3SC@O#a~drPhM<0$s@3d6z|?EG`qgZCIpllt|S3 z5Cw9kFQ3oCb_DlE7Q*s6u4YWeB|V>zIUJq>QHMWZOkHp&e0Yp}p$$w(fk#kpH?n(B{cR zX-Sn36~#jral?F6^G~^L$v*4@yK1<~zeCn|yBo%JzBkc-eq(6Q9F>klGF$C@F*J)0 z3ymC=RZasgF*A%XO2+6;1Jd$<#hFo7aFTO=<>IX~Vw`KFhkF{OMX(tUMdyei z*e|-xGFttx2(Hs{7cY-`$OCH#O@%ln01fISwE{Kt(cUS?jje}3epH!8E|}LwoQesu zXtO;*Hu7*~tS)F>EIX0=TYGuv&@X@R?*Th82VAyy=kIcKYZugVHvlGb~pO-bW*LwFMeCN*JwLJo_I-=N(V=_s8+O@5SXV>zem+?UB99 z9mX}%MMTK8rG;;UQtrYv;u1o}HB+fXNu|0*wnEw}D@iJ(Qpx@K{rCCzeBS4A#{0Zp z&zGj>N2({*6hame@<4jXPLP?)Ask)#S|arh2Gl{6bQNH3tN=r1^=Bgk#>1@dhJ%*p zt;GcJa%7So0{jgF_L5IFVSxL)Y(IJ@yIL6DFF10+Jbt5&uwzQ?P=t*G#JRLqtxzLg zntk@Lf9?)~-Bh@DeJeSU4-J`uZ0myt#p7eh2o?ceOVHiZY1eB_3hXpCKEDT>XzZnk z>(!U-D_QCIpvGBM6V9PZjL=P;8D1v!`S7?{^8DNKM3!DxKzk~15l2gdJt zp@T!=aSHi@YZ)x5-(aagPm~_yxvTLj*V8^Gak23*LbojQhFj!T%G_93rL21u!#~Pd zDnGWMU_m~(rr-`w{(v0*;86`7jWc30EQ(Ra(1gGnA&vmd-bkf-MLit>aK`}X8L5!s zrq>r1pf5PIHy*NAbWTf5jwDU#KR2y()lPbmkNvh{ZR-?8g@C^vrI{nZrUY>3OQRl* z9^daQJso|ykKE*HcaVuVhKAUl4~=s5 zOlgmCpYg5Wn`%_2Ye%1!FTzk*EMcJc9LFp(%ior%(lRH}ow` zZcB?gUP|~R9y>d!E0la>5ak~YHx*+3;H;WYHl4?!Ygkbx-ZvYGdxg+T@^1Q{@hM|XiFv(Ydj>e`ZD);FuY|Z%4^P@3z63wvr?wwK^BD+ zhAq3fpHU-(io8JydzEKPIewqA@A@Q-&vY)oKMNZEcgz!!*pt?Cgvv&a zH3b%6y)TW&9J=rMWzb!dt#7H6b zYaIKQcO`Be=qLg?#Y?2kTpKa1bjmciZDwH9$oY~?3$;Dlo3v|-TKyqR?W=`hvAqr4 z^}O%%tVF(z25=d_+_ zT+}l3Xi-RV{HZ^Bu(bNy;5CAeH8mNZz5d?$xLLM7z5| zPcPm6I(< zoE_BB6$DA#<%%)-gpQ5m{d%CJUn zdNq{!Hb{44j3>$ z4{1hw^B2w+teooOFI;fwylU_P>qdd`%vgcTZT&w5)AzvsG%!YN2R`P}ur%07b)#vs zvh^8Y1_RMxBHhQ3FtN$ud`uQjcBY<7dcV@RNl6aXtNP(alL{gPKi_-K-FbJfQTwrY zE2h`U2t$WL#y7StRd(pQfnjB>4Lr>9Jr-BlO^{TyM3U@e6dt&v?~i%H$Ocf?_(%R5 z;47Cq^h{f`XW-Ll>A+?%nGFBo-b!UaBMFccrWKL`_lfTvIavD0!jo+8`O4g_j14<~ z!y+Ck8`wN%H-vHocNl@y5oHlw9O%lc{O5 zKUwYX&0W`r)U39!wowM>&7%u_49}mVnX`<3uF-Cm8&Ql)qyg2!| zhY;%V7ksX_)%niG`)U5zQ3S6cL$1e5x)LOvnU8%KP`MOHDg%1rs;=?~ z`J={@;XTK-T-;8>%$Q?72AmjMQ@^|wox5|0p;^VdJd2_c%}{oIX?1-RBUrahfJ^Hq zo(AQ0vy)F1x@O+}5~zI7Eax;qqEUdHHIW%$O73KU^_mSbe|6e8(LPWnt70Z8icXoD zLzn7v5ccu*Th}8+-2EE0P`&ds0d1G;NsQRDD0E=g^r4(|+E7TF=kMLg=2MUYA_mFn zZvY0%+9?edV+TvG$jk|@!JFKaAFO#|=H21fMR4b3_)&nQqY!G%fVwiJorKV%g2J3* zFVZd)8lMXHoC4455W{(}U5T)xA8Jc?%SW?ge2-kpDZdICg)@Xg{f>fT$3-tycwz>ya_X{JOYPK2Qu z+UdJfl;o-A_8)_TFAc8wO=RJ?>34(nYojk`2kzPzcIO+SMN9&_e+Vy_Rd zzn5z$x_CdlVTHS&ruWkX%pXQJ_3j+p=y7Z0xxAQy!)4MK@sfJx&oNmdq< zwFh@KK6<(qUB%9-LQ7QzyKrlj4V(TZIawG6_!oZ(vpo(5=@GgLIf3`7poK7l!un! zAzc38AFqnEhx%`DVTVw!{Z$GVWh8k!{cfoQ|Z%8Y>-wN z30~A`QIb#UZNvO13TOU%w~+vvAX=%%12su{`e^nt`??Zxm!1e5C-|a!|4pL+VuG;F zJD)UOP{hUYe#{sB+JEQyTZUv7*JvXN9aL=U?L4dMJYRVDaPAF&hSTm#UB@3+?$$=H zxH+4PAPlBu_wcUCF2>oGlOGqrwI$f0;rsovINx^gXxG6yx=|ii$xx{7?@I}{Q${+2 zJ;>m}UXb51!UrHp*owa)%hYY6=9W<(w_?ynp>_q>)Tw*fLTLP`3G&>ADFqJujyf98 zf9<>@=r$ZB#_f3s>9_ks@<}z;`$?AYzD+Ouaitpg?9Odfm7mg0olCvoOti!e(VTt- za;FIF_v#y9nkppALB*GnR=z#z!b^pUV%JeHBpxIVDMxq{b5d;+b<3+6)!ho_=*1bd;#h*Ob+1omEEmLNm$ikf& zk5&J^I1pGJks$j|(`Tvwk*D~k=kGn!Rl@94J25SBLA^pR-FW7=b=v4dyECsv?2+`5 z^Qkf7Ui$CbQJDp)?n&a8f1dQov}@6m5S>&SOgdRy!JzDU^iU4!QBF=+PRo`pD9}>A z==HWea%VwD$ycf_GTYeZa*XX*b#Lld@c{YG_Zinr+5g)2e5z9jpfA)H8OJq}10L~78jK^Q2NdX%ra% z)k5s+&<+oSs_$9vgWX|HWz`~o)KK&vT;u4XwNn`3NYesar=0A|>lY>MbjPTYV`xeZ zViZED8K$8-SJj=e$e^3qX#61yhviYKjM;D;RS=E30Hiar_Be%&Wy+C)Lq)Q%$7PA9RLivSW}dx ze;AC@oFcg*m&49jV2Dka{X<9bk~bqg><dnX;Lf$|rRd*HvFIn@b~h3;cZ36Xbwp~o)ug8xV&g7Wc;3&`TwA->DE4R8KY!ws zH94y*f+(29HeRz=*?$+G*rf+e8-MP0k;h=5_C%OE#5Oc{p5a4mk@+;JB5TdN{?gag zdv=*kdxwm!@jMQ^ZH`VVzbY4V_JudWPhjyro7J>Izq?dHxg38-at2N)M9)-B6!A4A z^)@>AZK-vNwK>~f6Sy-r;^~MinoKqKgv~|7cXis-y56kb<^H)`^UXUE=lq4uPHUGA zmJD%m4@PIU2)J&CV@AGLTobOc57(UY;%|Pu7f@+)gn)I$y6tPKxZkWPo#|s~pb(zK zMvii2&zV59H%=8@O~DqF1JVLyMaa+{c{%4@wm{Y_C zPOF1`Lp}$?Z@h`@JRT~PR_Yg|rwXf)F#+9 z{dg%%u3;Id+@w(S(Qq1W8YEl04^V-d+jj7y2S|34VzDC7k>A>nqZWz`1quD4V zy>6fh`9Wv(Rp#@B^JpI3NMm!L^Es0-SX_R{j$}eHbYtNPVpn5~O+wi!KKbXC=LqVO zlKfyYlp5a&`Bv}(wWU*2o)m(`B}nsaiQH@zptZeN#3A;e(@loS$g60u;xGfNzPxbc za5Wooz4b9VG7UZqy<%fBO_hh0aD> z$-yY2ZutR5x>?S&PJ8v)o{da1_eP3x0-tNX9De;{Gm|+|ogG>OzOEh>8zq;GvyX2R;V}ISAXYMdl0KtWKw@Df(BOVi0+umH3fc_uKf*lZ!L~Go-s#k$;zWWexAS7!}5E)SS96; zHI$PzD6URKOX?<}|HZjNC*`uli~hGhp{1bR`s&AOx;gp?;#HsZC5iajH2o3*!VuA^ zIS0s&DCeq(P5MkF^Lc7(LY$cFLfWjBij1wru$T}OB0ocZ;seBc{heE?Mr&0HfuEQ5 z3VpsO@cb>tv77aW4uy$NU^rXp1~>0$I3Kcx>FcZwi2Ff3u@~&l*sVZ%DE@hK8W6n{ zGWcxx#D89B1#ThWpd?Hg87^6w5bWfTKSd#d7xo4GbAs(U%@=PfOl+zSG``l#@)mwT zx8ERL0?X!;Z(89bLV6(Z$GN<EhP~xe!rt9L zKZNf+!;|KylhS;?jx_S1;E>O}9J-3d-MgdLQG8P|59_X(L@H^vB25wM-BwU0 zDPb~swdtlgM2p4FGw|bTd(x1k0Jf4>(~O@J2wy?&wbJMWE^Yw49d>}FpL>TL+#M!W zi0F*`XY}f$&D(9+;lTFaW^+}tORe*5U+%P;F|?m}wSE5SOF4#Pq+ZUo{;5{(mw23` zwR;+(0H}KK&P-SexJ3RvcsMv*z)uy*uLEh%RI4l1>juof2eH&%i$3wsp7q2?3Ogw#b0T#a>gIh=)gA5rJd)8Co{2O7>h_ zNt-@8?eqXdsqvv~Su-+8N>-!wAzI_E=xjECvqjq{2qZ;8AnpDv(uJ#&qLvKrjw)t{ zZvWK@(~8q^rH=w-&CJcEV{?!DILepEsPs^V_X5|*+PVE~C0)p|fcBlqpcnt4b`|hn zM`UiS=m%gf{BSlMg;>?)ZG=y0HBY0DN8S z^H<=?*5V;RG!t$rW2N zYPm+X4n6&;!Tlyh6n!tS?#~6PZ{Cg}H1JPmV7^igO+WXqc>^{d-%kqp(^~nOpYsO6 zZ!G$LPof>qU$QabF^j}Cm%)EYpJp>Zt(TU!TWky9nJ~dr1jm)#Ew=W2NW5$K-RilU|UUpy?}d;Xy~NP78f9mz~Ve#Iosr^s@)ILMsO1B zdoR6YliaQtx>Zyq^~5^d<;J4lH0|^;>yZ-xElbkxZDc;1Wvi5U8uU>AHn*oXvW0Q{ zw;lwOp7wxCT>#C?ne7ys@Tyi-=r>L0~7@*VF{ zy|lK~oZMC=Q2L{H>w5&Dl-GBLpzxF@Yt&lfOvAOR%_<9xN zg&jjWZ`)L7+nn(ekd>n16#eB*LauBa z+%8~1>ui9u%|zKO;!YAI=YJ_kF!R zu@G3dPNHA9AO`J!mWh+_ze-i)Yt5T?%gOPTY)o)3hdV83*0Kf>S6v=0f~a&LwUO&L zB!ST#*#a6HF9WeQ7c3AQyohVeU`r)AA)7Cp4FEo^Yf4_+7JKV?RgzEp)f-LyTaz&8 zw%neZ_xa!UJ1S3{CyiyPVKsh90kvYmO8sDaLdn3tOyneIyNTXoNg2fe5KRD*{L4Q0 z+4SGiSmpwy0Q8P-hV*tzJGBsq{gR@k_}WRJ_9aZ zgG*+8vAe8D=>HSYT@f#6Vm+vezpk`U3Vw>>OwrN(nPVN9W(){s%hXP=*W_rS2v7ZE zq2i?Vj3cZJHyd~o0%DEklBXc*jqGAspp@b)?T50A?n5cE?5$uQr)hswQV+7zp#}V+ zz5Wg0frq&iGx6Bndy@)FWB1%X*pr`0iblb>X~`KTkT7Mf2XH3(6dsE3c~e`*@(3H> z3336v+D{HSk~976z+08ZYxreE%?vub7Ew1I=4fzvJ)mnk`$EOJ_S<3JRAo7j*=w?V zHtuY+=K()p0jbgl_3_rT+Hkqn`v`;^8;b_wm$w#hFpU9GTz*%j%a%nzl12?IcfbPZ zz<`%LH&I5nD8rwXb_4+lX!J7p1Tv+wX~J~vSdJSDq_(W1#LNX02OviQ;>?Cl-TQpq zG_vlGP}jqAx3yjzuCU~f2%s*#nw`#xvt;8@utt8?E_seU11xRg!GGHpUEBE$UyWDn z!PrS8WAaJ5JiE^>_EM-CwO7wo^RKL2zLFWjpPJSjU@-n=QfAwQW>pe_MJaB;T<(r+ zL{YBdUS6HVa0;ysL{R?9C(@zT?Z^yLyBX|y<oNEPS{LPvUd`V{sBnc=G+cn_MfG39^I~TdEO{I0)JFTiJZ{-nDW9 zdFM_0Uy0Vq^Buk}_oZZ7NFK`Tz^8(&%PcSf0kmAt(9s>h_k=$7TaA9xy`)sPXk+Z| z&Uf?$yJ=B<5rG=JGxpPAE4sYrkMhp1*Zpn@fvoHnuO#ZRMR~8^T$_(5`gQWo_iNYx z@aKIal>Vw63EFwNslj$WYM-C2{_5}fXOl;8^bv4&v;@9;|G#K#Guud1o?HM#%mHMC zl$I+ul%%qirT{L@;9^QdN(sbRogEHX2^Rv@5I~IufYB&OqjAAp7iRf#LHAKd&d>Kl z4L)~A7UZob-ow=S|Jn))q<#%$rxi)cnLvom=L1RLQa6yLBHP7l74Y-+v*D2pMCPDG z(2@pSe;f4K0rh8x)SvxLG~1IYupzXVe&6k0uX3%-`np`j>oJfo${;%L4;9h<%5&I) z7Oa8T{_unk_Lg75w)ORPS2sl9AGm|RrD`)oY&8mWWpYi|0MEC|HN`0>(=qF;&yCdN zLDuKk_2L{LCYFs++)CwRV{zdB)-yaNIpK;{N*yA70;gn{8$KEv^y|0te5`Z+!akin zxtl+$Yu3y%HsNJEx*5UP#C}krg~m+#afADSXvm|vSRLtQ zwTH1EQOsl*l5H=j)wRP$nLFk}swUjdB>duL ze++HK#Y2eefICSQsdNsBKCqZ)@3gY{_v#&Iy{hJad*@&@d^@-8cB@7X_{;gfg*JhO zq7RR9Le7t)9>|&?2NZrb?+|X8&BXgQJXS!^%v5998a{DLv8kZXXm1Qin95c#HO3Cx z#8-<_#SE2=i!)V-Ev2TAoIg{Qm&&^vpS6mDNT3P+pn(~nlZ3R7*S|}vS%?Zpy7NCl z7j^K8{$9S}0GUz;%U9S;LnO?E`ZwdvVhIt*R=)%x6Q69p`Ge{Xx_xMR zHSG#<=?z-r{?F4=+%&paNn;m}zlt!-Rz1DBGL=ACeu&d@NLf$*-u;j#@w?Kd^wru! zIRj>sfT-!+(xovn;;*2S*^j>)I-CRq_vWbFjaf?zd%6Db{k16m#{Dtt90eV}#^tNc zHTw%-<_`#ACTZC@#^HPmO7o0MzS1`NxqY?iCpjjDm+6gWkK8e&=nlO3yt=ZMfT=E_ z0l}of#f8gkS+VSjq}6r)s-)`C4h^2%b3_6}-F4&pprb2dB~R7|O@st09jt%huM-^q zEKo0fs(9a_>02*C@J!K6NXpsz&a*8NzvUxZZZv~}Ln{On7Dc}c_Kequf$}O{H&A7k(hA%)#U*-vdE`fb^xj_f$_hn z&a9Ie~TH)MpR9U7cE+%xbA0Ja;xse=P)jJ}j zRf+pBFA@{gwfZWkrgguRkqtW`x>vriFYc3kcb``!fxX1scdQ^!o;KSwx`-wXn?9H~fUC3E=3i z3eTpBxXR%roo2;ESW?fl^5168ZVMqqYk5kY70Xtyj0Z}0FcE4~tRNS18-h6nQ4yB= zEm;;ToxWyLu_YY6Yo<6>L^cUj%7HnVaJJHWB-{iLR6ub#K}eCwTF)SER`V^djiLAN zh7dQ28Md1ds6_OD%2Pstg<>_dK(ViUi@QL6;GF!lv4@D2kg!tYpo2@;((7v|(@jk{ zckrDM`JakhlfHvyHUEH0mww*OEgelD-DRZ#hofpb1g<4goaomIEqUQ z0bVex%vg6d$YtlH((8?|{2r?UR!$%b3SOIdq#rxR_lvDXV51%y_%!Q?FnInXjGyM67iZc?){aQ8ZZ=T{D?CkVdL5>|R4j z#k0WjA}I;ZD2HN`hA<=#A?z?(?l%E+u`nhqoSo&?15_KJQ?)D@Y5ME+?ZV{f1V@E2 z1DN*FvhQT<1mP{Fj)~nK3z94+^S497QD+c5I>;Mt)g0EL|AVU{&4zD(mtS{$B0{O1 z$y17*i8z9HHQPkASnce_RiZPs3|BI}Su^T4`+2x2kY6|1&xWIqjGysU^ncE@4LYs9 zR}Pfl{BE135k53Ak->F#{Yb-sf(Ytmqg6&f1IMfs+Q5-ps{FPMMn5=i+c!~qH3>1HLPl2A{+*J z)Ne4`*O-r7(1wnS^AL$5i2jy_*W@KOmxAW#%(1a?x-QCQEDpY%t(?K?v)=TMOi=;H zKQ&2HJedHR`}(^S^TvE%P3G8b!w!>3_IcQ~7NCikCM|b<9Ck1)%Z6FwuR{RA(?}zy z{%Ji)J!AI3sU}7`UbsaL2cV*N^KJNm9f_l}j^o1b74}6^Aq!M|izqF1YsHAt?S6c$ z5~>TCR;Nsf5El74dB8-a*~Yu{-s(k~s7Bsht9M&T=hhvdTT#HOlnJjnppJBfTP@>4 zG9td*CS}>q2KJvS##t%|NZS`Z*a1<3rT5GyHl`-eF8P00S`YzN2HUJE_ht&lMkNh{ z&A*t79~yzA0~}B>0=SkgOF)aCRp(Fj%I0nmO?eu!dg~nesI)>y?=a(Hk=Uf;z1W^xLwOI(hcn*UX}l3jrl+<(G|pNaR)bOAmx{2$R>up z!hH{#SHHTr+j>Nu1Gsb7-HkKuxL0Ok>-|58qx2P!ZodXZo<`HuH{O?Mfn+U!M~2Bb zBn3?dg6+1Re$Zj{kTZ=>d~bwQb$IfkcGcV*Pm{PH<+Rh_RS50o_@#CpEjI5z8%VM! zL(=ZTkqrs$z&Dd2Z%TM0JB2;0-JVnu|8%58^e6z$lQ~oF-_rqrud}|jvlV5pyY4z7^)qV=$;1-e|zq>2%zvQk?A6IWx2Qh@#O$!A-eJC6T2HV)OoSFb^C(w2=xrPtN$3qRc$c ztDgu-hwWhnN=K2UG@C_thk2UyiDBK=F(N_&|OoE?7oWW!;n7io)1q`ail zlxKB6+1N@g_@Gc~*xmSk+S2x?*=a6UC!VWj^_V?#|BJ^Z-g<(v9S#c4XU+A%mk3{O zIO899?6Y~_A)KCHpZ)p?`lIs^)v}=q3X^r7VD^ajN%jM_#^b&toL&Yb4pLMcW(YUu z3C;6r?F|R9U4-2rwcS+0sP^Gan$`yGa2D^7KUK@KD_%y&Yo3(o1=2>x9GKTmx&w^Q zaw4sgbVfl&$ZpFGnsqSEs=0gnB-p-@qZM95&?OxgZUC6neOqa$Le?>|M8Iv|y5dZ?Yt$hu>Z5{9Sq=dNoZhO5*71tbEOKCm_EQUO-a(n8M~@W~N^8IDmi+885nd`A?{ZuNndWeG$Q&I-EpsH8)EJ2e%p{lP(3>uf2;@## zz=g82$c_wteTJ4Zk6-PE+Krut_K|jChn7Fm0>=Hi$hCWekinAN=kDCW^w8&na6TZ` z5EqoVxFVB{oZnH~8)4 z6hJOLw$3SR=Yn*WlRF)M$sL(U!6oVipVi&{{S)0kiKX-vKfZT?=2A$_pU#7PUSm72 z9h2A>PnPc_qYrL%t=TGonW#*Nq5}oTXY1+Gim3*7yPS{jJ8(DrbAA@@){f6@y@#xi z9=Mmty&d;4=qUHLww875fsRdZN6P`*Iyb zY8?bw7J`kK;yLwj3eG}*@URdGil{N{xm=R9D8GmlJ@cCfEUkX*&+0LL{L73oHbt4;<1XNz{)Ciznp@7u*zPOxuw_b{w#eq+mS6+jzeVqFCZr_2o>7Vl| zuiS~&0et*o$)njd9lH0xc{+=CuYn7G2({nf-XHJYD%kePZpU@5XuR8Tl)K&Y@Yykt zeK}VL+2x3?p?9$H4EF9@OG!-^6B?I}=w46^+$B>^KF|(ZnmJs%@4}a#ta=&u_&JgB zV|Xw^4Dkqd51nIj8zAc^-z?88H4a|xnQWr18p_pFukBD@``JIAVjA7`i2T?iYauY! zc}zAT&CRBWecxGY0b`~GR1e>hMt}?p)vTSk^vI8`@_KK6LO~Cmk1uYUj0W2*Ts?l0 zdwl+o&GI3eNSfven$NruSSMbq^~$tMydB}NgUMH@_{x?gea8lE%U=X_J!~7)w0j@!mgJ| zt`hN*%ek;e@dMY9qv-|u?U>Q~v8}g%ILn!n1Wvf0;k(z~I$L~F>uH?+>2gT%d)gXQ z?5q#~GRoPCjfZY=`&Ib7sM0Qz4(B`9jPk$UXnVcwrlbVu@4~Ih&jf}2Z99&(9q-oU z(yUqCL3XUzv!MbR`9;vi~TZ|OEQ)w*@w*(T)un_r3qO`uBM!2O5RRe+Fk#MIyO%;_y>L7TGE}@t z(78!fxFopz<&K#JAn!`sHKX^dS2a%2-X6blYYW!cb;u@oEkeD8WMC5P6c0HeKB^}M z!?Jm>zunu*EgTEmbidJH-@uj!L5Ef&wQe@3notQ$kVeZT({+x{QfJDD>Sc?{1HlnU zhL$((M!&oM&?s}ak>yY`5;|B<4tAFiiasr)ib_Ws<%=Kt-=+uWuMEQ0rc38vddQ2N zpB(nu@f>k>bZE`=Ds?MJwZs!kAVhyMcN}VKy8oz9vgM!E=bJ58%`L8&+t3K#4p}-K zZ^K?Pcjz{E>gHruyxa~pcjEGt_ge-@*24phIm9@eiDHpKt9?AR{!*6y4Rm$Qs~Z>v{ZkNYN6r2kYl0_W7zG@TIqh z1a%GGH`t`Ra@^xYF{#Ja<@@zz=ixs?0Ief_C#+ZHeNULHD8@ix<<$p|n$ikPn@)NK z2+9BMr$s&L#LB}$r6g$CPLVMe&B@*7ybzP55Eg|)M03=eflBcd`KiY;NTA;<(UB&y zM0?4jbr+dYmb5MbXT!$DQ}Bi7)tA^rk){t6Y)+q zMpV$QcVTtzHO*?7s6;#Z471U$MKr+r3N}snTtZ>~G?(C%<@*P(+VMiuB`mLb;+5c)ayUxUKB1QzcyUZmp~9Faz5o$L?F? zy9*BzZ*r_AY=dRn4(3$c@z*g`jxiqErNK8_DjqK z1zf$lgn%;vk|NQYJ3C~ohaHhX+~|g5iXBlAM2h6-tW#}s5@FxF$KQ18WGA}4zpHoR z=aV-yhr({lQ4SGFb?t&~orMW6+4wcU+VEi%S#Bt&3B@|S`%*|I+w zR8}yxfTJIs!glEX%Zq#Ki;oq=Nxn=yzl}uR_?t0Z1(ya%pIj$2Pl;0Dc*$WFFx)9y z!6?pVVLCKh$w9v;JL#;F+hHwNm)hvDSB}x3J)8G_?swS|GpKId%QWrcUBDOupnsl# z(rb_sF6FGF9B-t8EgQs3B>$Is$fJuUnAmm2f9ZDIR9KO&v_ zS>=f`4eUr2oU zNgEe2HU6kk$#9k|Bd5Qp=xJ=oOOQI2rH*JWxCH-nMsgjNb%l6c|Z%_rKQ zI}uN9aQzuin%6qh4MNciY0vgX^tYvYlB=!WoHVGmPA`w(^Y}Xm6r$~UUp^82IjYhuQ`&fvASvUGYj+E*$dg9G-4Ys6%zmYXJsn=MRpQ&*k@k5U9UX2 zdPxsUPm<)OF%g}d`r;M@1)&$P3__@?(7{+L8qqE1#bT$+jK$XGIvf7ZaEd5lr&pYc z9Z0V_)$l00^2AKFM^)0G8@w;|C5C_PL|4?u3jAO97+Dh$vng}f7}uY!?eVm!b<89V z6gskrrw*jd`-i+yKoeS1xPn^uJhN|ZXbKYw^ zyf8Eyi!=!Ee7Re6bvW%%t#sNu{(rv0nXiV^JJXH7{@`YBSKIdFW6!;Q`;Rsnzwhy# za<2*Heds`WS6A`)XRSEl{{2sj%h@icV$1&3BcY0mnYtHL;-`QW^17iwxcqt_5c2vV zU{=b8un;a|*m#n&3u@<>+SsuAP>PhM-zoK2A^;5`8nUILnB8i!)BMzakZdpC#R!>y z_CzpE-M9?1?`uL{@?5R@KO30CCPpT`kVcwDz@?rh7{?C?R9`7NX=TmTjb$E2OLRI$+GQt$5l`^CDRyef%8npJ{K!loDciQ?ve(tf|waWTyFdNad zbOL|YNIuNf4lylZ|FRR2hu0`f0oaX19{z7}V)&lLIsBQT29H;nY{~HND7hw5~e^Nd7kmR{clrb6hpeJ0oaTKeynj;v(RLt^4QxK5gWvLd*f0~ zWJiA=WcA+1rF5{-6ia3Dzx<-uJf$a7?@pIV`P??`u0wvp>o}nMDSOGtYGxhrTwLyQ zdbra3dWL~vAb-EChU{;X4CaMb!zp}<$=w_koyv5_M%PW|v{14w{=o&x!K9-jPfOhBbE>r151v2N!S21WxLxsjv$yc}tRyndT{AAp% z>~U9X=#Iz7+cKB9g!0q>{lku&?~ny&FMStR{cRGo$6VwX*(1ZDU!Ihql~g9r+!%U- z*QDNdc$3zC19l&cI0H}{ci;XZcO>q)b0G%lXefG&Z6>P>W42&7;iKnsZ)$v#f_lC? zJPM^eyB*fd!8a4k4cFP^-i9L84f4E)pi91Zs(KsihkEz>B_qEwz8{z%YFkal{hI#gkPc)HHUuiX` zj;0&5f!MKtgGqVBlwFb!nCpsEiOlQL{p8>Bz|O(N-_d7bM`yu>B1}u?#_pU)iZQOS z2;`5h8)uAEWhv&v04b`gS<}wYbVUE)<9~`XOKW*V4in~+Z5ce(uSnejIt=1bJ_3R($vw29R58o%9GKHeQY&vb7P(_;bL-Z%TKG%G51eI#Ib!N^`ke zF^(uDBLa$aKo%wiA|ZM&%Uhc=u1&;@hN(P1umyPb)7Mxw6=WcSeBhbFWd~Fg3O3_(nz1531%*-Jldur(YJxV7=Lpc zjs!-YX^^Ocys4X0&mpL#>;|j)d;ynlY6P=l7z~wqEv2` z?$hn7lKu93JkI$8&N-iRKIi>@zh2K*_u#J*ueTgBp_;!@T7*zsMz*b^wt&hn$l|%O z<~1ssx0Jb6qY^fnIP&$GAoDN3?Qie<51rR>!YR1u6qF_Dp_i* zc%cYYM}Jx>hW8S{4gz%TfHGvc3Wrn~qkQQ6n)ql^W5V-q=U2nPxcO;4)DN$)wZyG6 zpVU=+?AI|O3p02*2Oy$2Ad0AkTvJgxA&134oM9k13`7M%vYa4U%djJL5SVm{69QOD zGW1ca#_@yW{@bxFN3~wpX?h(4wd%e$0zsnym?$5ySXk-PsJ2#SYWZO~Uy6L{fNae$0F?kh`Hi9jj;1c805w zQDF(PAb>C@^-bs+C=E>$kOt`~$Jk-};j@2^?o?!-hk88SefpWktSMNR41!QWM+Gve zZxw5ah3~GMk{$PI4)?zP-f(O>LL*Wka;zrs$+h*aY=1%KrL`pi9CSyBplKkKFC}|l@cVM;&Qnw=3)tJ z6&P|UzgZt*AN1&89yb1_e7yg7c`s}C`wtRwU1c9}8zvQpW&Qk_446m&ko6D80ctX> z2$-8dyT%&1m-cd}m!wb>>@+Fchc2g6mdc|jo?+sL&G0OuRCUMcLOdm(75||x-r$S6 z$s$NaYgeg6-t7tNUvf199nY8FBQJO=9@%ly+W+lvMT#l8fZ_-x4B%Ny>iJAZ16`$j zVBr!*ORkD!~PNg<4?pj^dW+J zUq@sqof*NPm>5uvG@L1ekGSy~faLQKW9Pvv!gr%8JePt?7g&jiKsh?l|F3#2XnY&b zzcxaT2Vxj3cm14?irBeVdO2^lgLXSGGULB{##;7fgaXB7pavNNALwNR`*!@Pg$~x5 z_dHhAD74?DtUG`jjKKO5l?375vg69>K!*#9S*jg7%}e{m1CM`L^;1g5?FFGkFTXkJmh^d@8lx?oEFNeF~ig#D7!iqilJa>{7}lO0od0Tg0a-;iWA^ zrRD)VpDd9@kP4C4G}=8=Kt@zCu10pHTmNf6yYKXAg2WlPObSIljwovYlv#a({y>)+ zp(FVKI9&jhp5tzXKMfbaB3b~4=z%)l1ABPVf6^T8r+!prHlKW1w;>~!LP5t<&}86% zZxDgup&}BuA9IWD`7I(hZVajopat>a78@$ml7aW&9{`6cii1D^_9EzanJMm#RFzEZ$c=%!2g4&bLhsGBfl{G%4zh~mB7 zB+Fm=$s^63TT{|0%r)2}}HZ=d-#$9VuAN1QXhfLm~t-;lXdIUwU9_YwGi z!6*dr+_Ev^o+O^+&(IBDQ7_0M#a-Lzp^6Rern9HRKQ;P>JH%;HWu@UMhHm+>r=El#gCIFt}MwJA<-D z#uI!md#RX;@ZltDJoa@mg-p4Ked48XS=N0xS(QTBpo6b%{$>nftkxFU8lquvzGk_@ z3QhX=n^;WjAD2#b#^%phFw&GincyIyJ+4kM(>gdLY2o=xv=^SVb>2W~+b1C!Y3D%8 zlJhD8($p?)vd8q>1@O^)6-b0;VRf?Cst$y5gS+iYVoaSzG-n-II=ngP1cF%Qzu6CY z6MZdA)=g}(PV*)=L~`%dF)zM!eS4^<%<*j?tVGXgfDZk9>X{vS)Lj8rdMWF9YCn1T zzFKL@AhL9zu_0IH6vq)m+_ygBQa>_VOqB|(C|tW;Uj}B(wV4_#@?C-@Y4- z8ytgRAw)OQZ44ye_|hr`Zdhq)qGi}3_41CslK_1{lqctcILFgb;*8GPy&@GAYP~zy zAjy&qdDHcQBPDjCgPt`HaW+tOwv&$&Wu13A)R1i}NqgAx{=HC>xv9)8(S zXYz)-l+-rth@MfY_%ZRRbQ3Zr>d-88;<3veF-XFXG0-j2{A2$!N7#GSh+F zNYOJ-j99DHy?2mSthlh@tY(u0f3|NBrNJN8k*086=Z@e%f?>u{;h@){2q1PQ528T= zS~}5V%5y63N$cqhY_5nRqd#1!GP_bSnE$n!vw108EAf1#@pSPn;R7DSD_b2q=p|Y# z_y=D`Mt&NI69o=?>}8cX21b~FHhq9hr^5=xO;A@-SxW^w^P}&(=IQz9;|x;KKB*eq zfH+A3dm2^DewG*P2$&uM%2 z{2<@fKu~Oh=r>0O|3-plNJZz7;wQcLJ;<1)!wzg@i!&fF*P%e<{$mqR(Go{@vge@3 z99KH#4cMrkAw?Obke(?O1Uax(i!kAf!CB4^!`S|X^Jo9O>CTVRNEE2p6~ZB430^>7cv4rh;+W!cEzJ9H)A!Tq+fVX zErAEt=Pap*FS3Y@<9CAa;kTnV?&C^2u z{<0RRMxQE*vd@+f@GzDZe)IY93-9Z?D5MYr(dN&gVs;HOljacic#!M7X^xH(slej{ zyXP!pU^gU;;Te<&*+LRqh4&esr7pAaE z4QBN!_oXhKyH)doWslcXxV=^;yZEm0%yyPcakUo7H4^1kTGJdzx7SgsQkoUAB)vXT z{i65n*Nl>9um4lRNnU(S;%=_A1QouoPLy)%^dOwtaIkpgm2EOxLkQn(FmXhBQ~l_< zpc`4oDc@EuzY2DGBL9(s&$YbHG7FVCo$?1Rl)tG=G1lP=&)?NwM_UW&=vhKmC&K%X z8FdhJbjl*+%uZ&d{NoqzhFgyY=sOp;rPc4hG(XXw;B{;#{`)WVj|MpVnFx7@fOI9n z&X8T9>vj}Vmy#%@CI@7*C$c|L_tW>35e)2N5A&xD9|Pnank^`Aict3Z05j6UInF;|FB*2diK0q^VyPq$B38VMK|hm`voTMGlm zC17lf>`l6yXfnAN0DF28?w!4_#$M_<04bs)W4Kw}d_)CC;#SeVW`CxcJL8Uu6>7aHU5YvNC1O~<2md&MZEZS&?3ZT0VELx7 zcu}J7D3Jn?{^cnxDw6s{M`!UtltfOlygzs<9~5rjJ?i~V?$}6ediA=VlK@_LFXHwu zbd?ZYoG4+#le-|0dRP?ce;;*Ah~8SpU*Kg83Jdv@sObir^Hbyq9eyPI#4)en9zUD- z``#G?8T)T=5%bYEp(js-8@$Upd}iuI*F7KygW{Y=3J6Ft0~EJyH1mmNL5~xsMAm=x8+dgZ8vqtT`m!XOgyIJf% ztS1F`L46bR+{pVyi%>Vgxt8g)vhGq_I)pq4wjzM-Nst@0r54Zfea!vb9;7+wmU*8l z&~n1qkpsxQi_rEmr%8!2Ps!~K$Q|F%fn0~;BKTfmvN-`c%SVk(q9Owk9YvCEJCTF@ zLqlQH^qz(l=^?SATL%=j+T+h^{T~X0V{Z~0|p_@1->`y zCoAir#MBA~qA3wM6>teUg>adb_+$mz%SV-)Uw&Q`L9eu`8oF9(igf$$ayJigtLW^< zNZv38?(U?G;73V&1{WlIq5m8*Hg@iPqOe^)W@#k&G@g6pszNu^2PZ`1$i}rFvo?|w z3Lu#{Snwh=^Qr#yMjgMiRLlQ>&rb_yn$bA0Y;PZU-vPxC#fvZcE*d-6_rUxe;>;8$D>)IsiT61P@+phqwbdHx&ssfI$ZQKsbU8=zft(#pH zj`N)ON-c75-#$_z`Atg$BDXZ6q`rokhcVyn3H$1(+WVW_+Xo^1M}DMq)azhUC?D#m zBs<nb)}0QR&6ieUvvV%%NUYDv`cUM zG7AzVHg|#OWXw2O>J|gh2si_~rBOJb(UK?^IEUy+JTvQry6&KjW}i^*^786Fk=9tF zbE`<$pdj6RG7RLSsBN5nUcun6iLrGDbPb?f1XIXSYQVPeDi|LlOBVc;D*vm!u9RDk zMdgWEj+5Xcbcj1&-z_cm$4^)EEY!*c8qB}Y-v_z=gEhUOKl?`|Tpn`tBYtAE{_-;R z)yLcP-1>uQ9%Kw8P`^er35nq$_Mf^`ZoK2G4B|8oW;1#H1byG}T*OLFFH~7pVqB#0 z#tPX2Xx|w13{7kg02NgPS4blmY1vJpciJk}H;LB8$-cp-l5R3BofN;<6iS9l7r}U( zTW6h1T93D|N>1Hsxpi*1WqZGC_!M)MGTh#l|Z%O=RHas6lO;03*r@Cn7JygSCk9@X~1TmI*N z%r#s~?D>-_u~&%xyZ!icKC;Bq!Nsglp3QeQMqcD2-d%MH6rK?)(cFGnZ=LUx*<~6U zp>WKh#&~MfL^k7AX0X~dFZFl>!y#=nd9bJvaD`)DRC1^X%G3zU>aU7yJn#3r$!hV$WOmZb*{(`-yvYJP27FvZ7obzONjT)N_%5 z_)rNy7II&c1Q#|*u}M49;_ntOHbBBBx0mqSg;&`;so$2U8v=-g;E;QHvzCgIaz3|w zz)MZ#LCr^=v@k@a>txBF##c^7*>&0qehR2D9+n3PCDqRS>gYnY81>^Ch`La*6aV)@vFhuEHO^@XNK>J8XAW52Hk5V4y>k)ujURDD#f8Y6%o&@YcX zOYm^;|#g`=EY}V)`UJO_0w=fPHv3Fc3K@W2AsL2^};0 z-uQX@fWpt3FEKG1x2K>>jqe~eCzecP5HH$ZKyUDIcSC3Ta!t)$XWAxa*bz#X0AMd! z*c7w>NzMN0JZLz%t|w)7>Umv%A2b9o0SSlL5nv+n)2L8j*uN(bA{?6ZBCytWI^Z+s3ZY@YHOQBZ$=;<4WiWvNg_gR=9v3QZTAp?IJtx%S{vkfm~qW!^%) zS4w>N0_jhRK!~uyn8z#*{dU}MqtZ2<*Ohr9&n3PK*OO>(P+%wAsWy4QmH<0x`|y6q zs~H<;#3GFT86UPADlddmCt=WbY5i~LoWiv{BlJlCgg+^n#E||jM1N;Uw~;Yx4CxvY z`kWBWvqg9c(KVBhlODS~#S2p?x+|53YzLG#@({V=hkg+*0>BRHMP3k=9~rw^`4UmU zn%DjEF{j0RU-9;chjGu>CqWCk( zE=2r;eQok4G<UQZ^9;{U?I{qU0o&Nqe3H`eW{f{C2oA=)O$on<^d+OQuNj$_#lX#1{#J#l) zExt=EEF3MGgeoHnB18shV?T7&5NUujLjr_p(IJeFwzG5&;RD_#%($TLM8!ed=Frcx zkGxu~KYu!GaJD-5xYvtM(&F`LD?Bsfdq#;rh3s5J%0^wKSj<=y5 zsvCY7G^F)u>osHGL`V_Tl@uTqCiO!A1rwoeDiG763A}KptHC={;V@)rVkOw<(I@rS z$Gc(~f8+k44;HAZE`cSaKh$6(>$lM6cAHhU=zl`=Z;T{$Kc?IW(da4JlZcF}lswsj z_*w$*ekE~i;=0LG&@Hl5$D{}1Apg!C$z;ab(dk52xrK;<>I)&637z_y)GuLb7G$ zgM7)3{?{{Zr#=~bgT%LIjN}8aL_hE(SRB|o-mZD|QA0+b4CuQbU(aWMb81~h%hkxH}o`#(CI^DMjR z=ZQB8z20nEft~*<_G%*X$7w)l`JN_bHQR& z>c)8ydB7=ayLQ8V7n8cw96gD)ZMsE-zh`ljU4fIAd4K<^#KUX<+cmArBuJJto!_7Q zAzF@xQj99t`H2=;wA*HhQy!M(HBymL+)vG%E)K9*Uro0l?lc292^^r|SM;=o9S z1d+%o&UDzhJ+VmB>a_^nZT%HVFG;%|x96q4d=rtJ`tCDmk2Z@(%~7#+ zdkG&+NF0C>7-S!~PWN1Ge$07-1Dc>Bd(@<0$w%YO=$2I&SJ%?xSbb^x;NTlyPM>2% z6lba9@q$^gR*CKG;`}@8SayAd19$7HtaH2aO>cM2C%*3^c5#N;ULp#Qz#&Im_#E&i z)?M`evFJ-=kzd&!W{(L*bm!^i?$%*HQ4zouvL=YU=fJ+QHn}Kn+eVC1<;D7a6@yu* zX&qCF&FA!}IM)W5G4=Pr*|ODqh(QWbGNLc!-6Uw2YEn3=zC}T#(9h5z{sSY=&?4MgFnLCU;kxc&wk+OX!v17zQdrNBm?dhjqt3{%y@WvSmNoHAk|M-dMa`xIsfhlmwIOJ z)g6>@A`90KKeGwZ#O=}ZU-|Bdo0q#kX97)1kgF@Y5s41IzkU84?hgs>TL)4w{hMvH zQI|LUc3m2J3WT;0b{u;AYo}u7Ssh6Hn^$KZqr%j(h=P8G<=&mdmG-vkJ<%`U{&LPR zdU=vEXA@&RB=Jb{z?Y-)wcYteGDHNPN=*&VkHKgvToDcvLE%&z6bq9lg!EjKw~Y9) zoV3HhE8}1dWY05O1P^E8XR(sA!(m!|ZQaCW+z4p%lLN$9oW+4RP5v3jU;Y z#xbfp=b8>uv+&u*vV!u3OFtGqUGJ*B6n-Qem6I}W*w9);RPKC!GXKzq(udC(33N#O z#vYC88Ql$G_kw6cZG$wG?Q*H>Q`Zf}f`T z&CvZhK)!kq-?p9;G&_iJon!A9#GL9fr#-E3OXTP|((r9quuh+4wx3ut667F;@ zj}#_preZ*|_uJg%R3G%2NHI3{EYuh6y$^9t((>(dqpc(cLH#7w2v4NKA*KwLS|hlr89@iZ8rF6^bz`a|o;MJ()UmZ4@UF^WB*KULVyMr2!%BzD z*M(;%@StgAHlY``EhjsLCUKg;@vFUa#`T=JOr^4q;tq%Im3dGT`)pJ&=)uih9p8%o zeq=jLLUy~@y};by5UgEjoY!%UT6kdB3xN3=J0p%WUu&JYSU^oJJ@&%xRfUOh5u_Rq z(-m0?j0f7@Xq<%_l$qHxTvN%$ABUF*+AQ5nU9Z)dd^dtFlA+;sF`ij00C67!bEX|* zB`C6AyKs0)|Jn_NQfbbpSFuX3N{6txQwh8SKKP=;%1jq7k;XQ+9Lxah;;n$FbdWP1 ztOI8!_hx74W*??YqzT!ODFf29!TVdrJ3>IpGX}z;J0nNikK0(Z6KN(_Xx}twp^3$k^rj1mc&FoB0z&8Zah3!g!*o!P7dl#jf z{zzb^c_Y7Zm7bY$0|Q0`C-uq(VwJ*kA15=x?S){rNeVl)1~dj|>5^CrNi6pb37V&3 ztj177uyOQE?lE^`lMrVUU-T;CuHl+(rXoAF^nBVdWKSH&dSjb)isDOsUA}B<{7j~w z@DjypR4WeXFwfA6gY2x+&GkO(P1-4D+*y{~+8zn{FOu{7Lm|Nu(9S$N;0BPWU}P?q zePpWyFodB+Oj?USiXmOW**1`R}_fz)_*JsrY3IOr+ba<0jB?SWd<^WfQS$;258!U zgJ#4eK%yHn!+LX8IUIXD#Eiza!FXI+B?yQxgD$go!`_v6sOBPrq%GB5t8l^EyxF(K zj12x30yd+wcSeIxQDje!ft_{Pd+A`EK(PKqi8!|;O_x1k;%pAFGlSgi2txF3?w!}} zHYV&FFJh&pvTLm7IhJ76?Hm>j;)Ho#RcRki&YDzmpBa-rJv+2*aw5Z%Z7mr3yM5=Y z+{}t5cZ2V0P8ha>NI+{+x}Cv;xdpOX|7Cmqe)35s=PU-%<@Z7f%0m<}ln-%Z_vBoN zILogANG3AEUrtHz#4N{p2=Do_6?`iW7+;)251b~`z|@Uw$3>UR30eCE2ql$1!`&hD z-e560bz~27=2XMyiD$w(SIy24`R5@PboM%GlC>dehG3gc?TVpExGj3v(b-+AlE-FM z&CG_13JioFZC`0yjE}w?apjux-QNI)iM!Z_d^Tkxn@WSMM{|6OEJD_1C-qH!4K>=x zNna{9=}2>@h9J1JkiJ`$+)fj!D<{~HTdS0H-tu*rCr5jc!Gfdr4frSc0ibnSk?WTu zC@(fdPtZky+;HQEKaT?dCxUwmUbI>PtmuxFix0gPAs%a(h&Y&2MD?wI5=stlZr!^# zyM63l^n#+LDsjxJzS)&=+=sbmgz+yMZv+p0#Zop2Z1n|gBMcFE=GPLg61t5ojz;MC zSEe>QcUQT6Ri>8QjxnXdUBq9$=H(247`0|MlLB_Rn8}Lw{4D0bcTD_BvNI}5c02;iJ?Jb=27C_v^{qRiaH^XLW#oLMXun0cKi~*b}eeP{_VenSZ zN~&J3s*SZz@AnEWcf&$b_#D~Uv3usMsvkpf;{p^2!-!3V@V@Usl1dH>7@Vt{2w8l- z=o!hcTEVMj!5&nh^v57M*t5+K@>);Wd# zDcc_)HMDz9yC57~BJ~i2+p7>NKzfn0e=V~JeBM{(+^vi6D;f{@zikd9aFp;&(jk_S z!1YGhc5!$WPi>A_wxnCQY!MAMiv!oam27>*+SMyT$7CO+gDg^H(nQ?sgbj%!7)7Oq z&@x48t7i8y6w)&^v=aa^N&%Y^V#$rIWf-<;(fP8n8{QQh%Qd#O5!Wd&)4L+`jDIZu zukQt^;X7LrYBUf)F2OlzDAh>o6*&|0PlBVbi}@Mr%k#6gh!bDc_?AmVBkp;OV?39h zI1I=t3Zj*eZ8RP2n>#kwF7sSJb2PQL$PDl(b8p3=8q^X7hkf;w=XatPvvnQ1lvxFU z**7vX78%$^rV-EApy+&q0lX%0#^TKzi#;P2ye}-?VMQm!lS%Pzjo`>eunqx&PRl;Y zmDrXu{@nv^lx>h^z`Z_J=mbyB;#_v4RIxB%BhP(RqQ9Ue?N?L`nCil{20&aIA*XRB zZ$n>k_*Z_VC8}`~$*50~`~41CB)nooa^)H?Af_ig~GQ~lO>$^At+ z_Z6XbG$v~ikR-~LQwDdpjlJ{#@Nf@2)Prk7jzXjaqd*$a0Y;F8<&!m?7pbWO)z5bz_ZKz<}-SqSn_6__^(Xuz^?lpA}89c$y=yh!(XFgG(;_qlIMf(XocVDx(Vw@ZUxR!9JB zUm}Mb$WmaebBfmg>ER;&>-l7|Iy9sHbFM68-a+vsK$-#EQN;cg0jq{*g%Q%Al#s+J z{mvZ=osaeDa9HG8jt%dd6yZM|5?EgVy5@dzX%AfSFt{FfOcA%4as+Ha+BD`HzwG-j zZn&lk4|;WlWzc(`wK!*U`Me>V$&O=c#j$oy?&^_dCp4(+%nj)Z+LyO?hI{=L>YqgS ziGLP^Dqnu4Rn>fk=R0EFD7kOQVbaYz`qp`D5^|fC;Vl!w(5VcS#@&5TX7iIhgg3ma z$2a&m|0vk*w-9?e*q{Q4E_>)4erCahvqsDbm(YY$UU-a zt7S;%v7JR^H}8kcJ(;@Q<>iTrLs_1dj)A&|b1Jl#%MHBsoi=4M2U!`|Ej_@|x33@P zMqfJ9v=Qy@o9p)4pTciZHP@=YduQ%?*L(jP`uQtiIas7}Rlgn~t4T8al=7$NTEGt8B|G-k&V(QQ{n#2k zpQm}}w5iOooThj)~5mRuyD>mEYJ5`zUPB^dkp5}ba_ zDExN$k)?WIxH!Nu-hs2?eJK52q}oN_+HnIB{G7kzAf{>D?k1ll8Gdn69vddon!X<@ z3d}jLRTZ}!rFZ0I?YLp?Qf**G&w@;4RDL6N0H>o@1~y^?sgITa23`J^g1I8ejWU zV_dgf1@yo!8?*e}E=>fvA)%JD6*)@0kU022m%lmVc3_O_KXtJ>`VabYjT6K@_Ib_o zyd4X`%+ONhVr57lnWJGS0&+GlFtRO1q;% zh-D2|gJbCI%eBKHBRGPE9|F36i$qlf|S-)3R)R|5Dj_CdFMSfP?F_OEWw{sk5%=uw&|D5`=(^5~P^sez`#w%{t z)y_pW<%i()E6k!wTcr~`*{WqW&f}zAGn@N1jK^)NE)6k0=sm2fQ7@jB2S#>IHToy( zUtTl4sA|0Ts(QZh?a5m61Cv2%{V?^=dU}Fw9831gO408MDaixumr7<4#l`&v|oRsCI=!TgQrX!{2P+1 z(X&^|9nISLgQg$;o2ncpcZ-4W+KbYHtmSyxUf1!gH zsHdF&1S-w==Dz=@9gUqAcrEy{b>^6u3wY?IFSGf-i_vCpKd$_lyl*>A`fNHEE`Q?Y zF|#j(Lw=&bC(XYU8okJa=)ek!Bnpp}Ueza>#<3t@f3^64#+f1#_^e69wGukyuyVpv z+6PaW;zZ*45H3|`Yw2u!#bn5vW^R^+T)BGOB2bAys5^X0#wC@knvwl9`M(c5#wi|Fu&ig_hrXYSXp+ykW+>Ye*8Gt?i9 zk1=8NKCyExy^uRMwnrt7g(nQ`ew4q%3|l{QDeGz8Z`B*8pU$fr8!6rOP0BXCXk50L zi^IAWnkih_fN04rWy-Bd>W12nwpC#u2LBmQC~k^0^m(fR<(J%P)C7v_dd;n%9k zOjX%`J`^%3Lf*bge6Ez6*rHs&PXuW7;`<#SPI-;Gnco&nZUhq$dk%0!m!e3;a5aLQ zUe7K`YWDYrGQUBzXwKoktcH$@evqOM-%*6U$2;tANb0T!M>X(Z`i1dVt;--zMsXCR zN7S^0MkBY4TFFw_;FZ?fXnU?5Q}6g~cC{tM9{Peb-g7F7O?*#ND+!V)=EtD|Ju`RI zyJDsO)iwK8=E|590TH^gKr~=bp$<@-K@-5#69ry4Ap#gXk8PaBW`)%iydVnyu(eLY=Aqv zQ}^arBIR}+rh^R|DQKJt+|CyyBX+bjB#$&zUp#xd@}}Y?kwe+kwyzKT=BL!BgZ!Gg zkSka2c5yU5U^pJQScnMEoGWr0%Sx_6TA4>XeCe3!G>4#mG`*USIPfy6fTMW|j&WH9 z$XU%&q!~s<3cdVH?4K2^&+)gW>~ERcr9Xkv8{(!|FiVxc2pU`X0o9q5$K-V6P?q)z zaHxQzB}}Pn!HLdyCb1@;-nCV%%_-)rDrR;$x+LmFDs1;Y@8RI?T0B{yBQ1+HAs#R+ ziH3gnCY~R|_;x`21Tg-)2Bm;H=uS0Y&#B2s-3p2{o8<7H*_-<@yjzN|t)pT~Csr>U z7*kkeDotI}?99*|vSGzb5oZ@b!SgVtEr|ub#TU(R$xDZS<#4Mqo?uLUqaI0fK=Rf6 z%Qgw57472s8*{=?)R`WwNc?ZRUf#pP#3l7;u8Us>pCg-66)GJl02%R^|7i&BZj><~ zBmoQj4=jBd7~4PkUj3+y>VPu(=g2bw%xQy&OAFl=tWh%3ZP_Ht)^5MvQpybvsB^0q zIDSv8u?g4ueU?J_=hT_^{raA_swrQ`8AJkBBt?eCA+Zce|9#9s_$)hOfQL-dTAze;F_hoJy z=OI!nL?Qi^T>|ApCR0IJI&d6_w+Z(=m8A&Di{0?OaBASooB1>O!}kgtMi8NDoNxy~ zkT2;no<8uM3CDKDtSBp3Nr>0?VfF1= zbQ#Wl%BieYgT-gV%dLXiZb!~5XwA0ytV5gN9ZsAbse9blBc6S#g-yG-|I?7@6rjjJ zx%4oFx$*0q0kiH)AFP%X-D8Dwx+O9puQpaPV$2hg9$aNl9DFw$X7<>5at2%y1&x-+paH-OMi*P~#M5d z4=dBCMWdIELLwZCTuOSOHV9m3@-p3T_~0W)-P~HtzKanUUga>$P{m1)2GSIcZ`Tlr z48Lf{ZQk3@SXF+-RN^m(*#hySG%Qn1&XR%|9YHbxNk5lQJjGt5)q5W%3o;AlW*O2b zCf0Z1WinHN9_=5m{b?X9z@%CsDl(v9-Yj(`$e;7sF+}!Nwk)CSMDZ|V%(3D>+Q816`#=i6SF8G0sitR_h5K8^tLE8K9kQ3` zXB5_iv(;UwI(;Ky%hAABWftAO4YZ;I9c+FK9qZV!>ylqy-O3BM`!cLuy- zAzhMFa_s|Nag-X|Yr%e78k(nBw*#*81dhCb8^3*oEoWXR7V>px%XCJao<`OlzJz(% zZ1hq{`i7>jbnx)ESvOmz3_91-2Qpf%GK##Qt4Tq|0+g}=XwHB#dJs1!L|cdNu4Sb= zMJaY!(vtpncq>;r4!6rTPBk2&e$SECSz@VS3u=fF$Iu*k*r2hd-D0tHimJQuV9BkI zoK%lPRW3Aspe;8qzsNDPZz%vjf82^9z8Vp)>@B3qlx+cGUjv8x!&K%!?8K|uA3lGJ zMN#51>+K-9?RAs?hN|3#Ww}7vRqc~`w)ar&^;S@W>H%!HS^2413lwC5Lq$mQiw9 z(2vm+uN#lsq?)D_<|wj_)3)quu=6&eSEuy+^Io>`OV9oY0jW0)s`q7mdo62-w<(*> zdN%N}8}|7?;nLnxf6XdtnVoNG6I9P(Dhxo^0BFFzM+nU=)~@m-I7i|_k(_&xx9x_t z5?RlH)c!~>*~Ed&R(ad6=xE8<4& zYstY%Y|yyFGwUYXm(tnJ$Bx+a9gQyrynCekW(RzK+g1f1rJ?@Cx_wY}pf|kxsfw=x({H7%zQ7ebjMKD;zUOS9T9S9=x~E!HzB1>4;BI zr@k#Nm39SbOLCup?h#$W5uJl*Wy`77QcKc4m`vk*5)AmJU9hmi3(}V%jZVi)TD$>cMuPL#9z9lu9 zZJH^ulF=kl$pLG;7j3ygUjW9u=2=VftPubp`nrJ-z(9sW1k?I{xmlJv(e$ z8Lj)=bg+D>Kn4?JOD+jhK!%q-3|LhM4Px;H0dLx`KE!)PitX-uNcozjOVNL(|Yd-V z-N@v>PSfk(t>uB3M5CbHry$dXxn?A#vRv^yYhXL`+dSxHwQ^9q?b)}~_2{{dlPvW) z+g0!3P1zWnK}A>}R1bgSs?Tsh-_p#>qmhrQdcLXJzW=e45*{KYeE;Uc9XOmPvU~%V&;Tv!RfY7HPZ+EY6gt7 z4yVb6xZSwGI!r&xyrwPSl_7@-+EI1@4q zda>t;RqI^1{V>Oy74c%ReDIBRIN9~Eso1E6M0xxVIw(P0h!5UmG^ah1W)N=m|y4XuU?nl~>P_ay8;qa%%1xBkAc zarc)XH+Gf zrU^4@Zl}~-`;*$+n{s^*0Lx3yiO+IX2&?*L{S{>R6;$?cP-i(%XZb|K3C9vU7os$5 zy@?e>D$(0Gd(pB)w`!zE`IC}h2wKR?Dd7p=vB0lO?A)lV=AVbkm-Pqglvts|c6Fyv z4V1%PhJ}Fk{QqJchd2vubrYBw(?QsS{T)VUI4)tUBjT1T3jJ`K*T(7uy$9d34h~wc z4yefwC~Xhy4r!&=jL$XSO_BfsN+xG)ei`K?*@oY)I-AmyFnIQ#%QWle?GI;Z zrBP{n?`ydWtoc-f7S{0y0a5awTJWG!;{E9>CNrP@n|b%2aS#wfX84~-F*3UjkYprP z_SPhwq;db&zRCcM|FJIr_Yyp8%>+PpzyLe|Y?p3vwQbisO$ia4BK*}5#uMXlWQrj1E^39f?7rrB-NBL#9Pn+arhobK-j-H)RF_a}j z7!gNe0JJ5k+g@I)qEmK)@7rH~O1TWP0#Rj{?OhpJTs#fq;gomXGX(_oTZ)TCUoc@U0Oe(Iuo3teU&8Yu7Dsz$#(RzQ~ z?4@DYgT5QaDk6Hf`GWRBy;W4Eklqe5Oh{`i&Qp@|HDv63#_Je$g=2Q{B3ODMP+jh@ zokzCx^K{?`3HQSVxuT!)`$ACsP40UPllA^R#)|yc-ph5*hmDfYmxWAbm3K57EtGuz z!9m~efyMT&NzHw`XRy4kcnaf+N-_^^P9j-sz(kRjq4Z9+2^m--qM)9YYAmRRpfG}ewO>UrAL|dHK$oWF{IeKVE>NoKY=)Leaj~OH;Fi~Z z0rHo)JKAH`lzDjVo9Cy^&7s}@%tODn3i_K+jur%nwM%4Kv^3qQCI}l6mzQ<%?7=O2 z30KrK?Go&t=_y{2=hSEA;M8-ZSHfpPZOkr_6cuZl?w;Cy? z{`L@jl!@GF9gQmCg2nS0nHh*d)PH>Yz2BK4spBs4&Ga1egAGJ0#-h~smU;b6_afB# zf;e3ww{e>(w!7&vue(KShJXg$u9B3~_}=P}X=JdPgWtVDgsqM;M-c^4ZsD=XzfXxr zoGi#a{&)Nhs?j{ye_47i;k8@-P1Hn+5W2`6gh8O|A1SDw0Ad-R+VM9sbiN`K(Efmx zsp8a!Ov||zc+yA4ZS6Z9cyOH5S7nxn=R5%P3(er&Igxb=v4nbBtpG#;m=>X7r~F7< zavTY;H+9U1fBLPWT7N663I$@B`+(m@A)U#K=vwz({V@dL(CLY3We=SLjUlC{ahIPw{+;6- z9Et_4!IjHBc0D0B@*BD8mOBf=9=SH`L#Kx^Iz*02u(Cv;KlGJ!*Oh?PeCyl9T=K4D z=eis!eLc=WL}r+uL1(FMO>kUybFLR$XezgP2ujK&KEaTMNdc7NiUF#MznlS(spt8^ z;!5B3-rh{oBYV7UgVp=)C$4iwaag8nH`>uyyN&{7-00QliY zG!yg3m!GalUJoOC#>eHe>O$N6cn2`T^rDP9D!K`w2Dzh^dsA@l%K^}5C6kW$qGPXr zb-W(8JJ32H9JxJ+?QenVTCE|SC4Wnlbh63v4e$k*1u+Lai?GZ^SeUa!wT0b`iOUFJ zs*RFFqWxZSsat&Kd$AG+g4tMrNIGKa=GR=fbz)%2>0l?RG(hpx^6Rr|OYkBYJ2aIV38sUEmn@=peio?HGXZnw9iM3816D{0(!TYY02Bf$7h zv3LjsK==cJiU0%v9l-9747>r@4a)!oT~%vOvPF~xsI67Z(wL~4RXQnPk)1b^;X$%{ zv3~qPg^r**dBOAY!}}(&;vZjtHA4pX=?O4pnln?@HhRDK0UIT5k8M+hKUe?RFZM7a zedlSw%WM%@=bLlJC-X0_RC4sL)oeHWJhnDX7*y8{lx%LyFjWfJ`j6-}=&V=oQ}E|_ zM{ma4?;p zj0i}*;UTS5wCkmYS9HOgkbmM4swbD2vx<)2DCLCYz3Y?uiMgOkXYMuub)X=c;=KzV zf%@(iUShm(delg9M|i@3t+e{NaB+XViLSAda2#vKxADzkB#o*XsE6ww&vWV;unP}B=a!291u{7z;H#a3NR6gbESQA* zD)X=!gI9aFvwvgEI{Z#WEnF>kRSdyN#m7)py-|ZryMB7=rRp+X4g7W~S>Y72zn9v& zbd}B#-ZQ*fBD!Z>(0QKnM$H(U)|U+%L|w$pzDcusXkSl3sCnz4o$yy^-N4kP5$S`B zL~*C%s>Tiqdb%ei6;IEX5)KG>CZUH)LmNKWXN^r#3K`a_|K;DlL4=njHY5gU#g_1SMvi6 zs`t!VpVrCxCL4P!{)M#@1UP&K@rZ{LPR^DFK?QU)3$6-qrBW4DH<;XnKdDtZ_2ZyPjnJ~M;`@o7M7X@> z84nn<(v|?J6OGAsk4oCIk9OOY3&t;dk+o$n?+~)Qf*8^% zC_INA9vN14qEqd3-m@oT3BqBVQfK4l%a_<6l>9cHg-S9deB{-G4{eY2rAGUboP+9Zm7LJo zK`h7E&RF$N$x*~dNB_kOLmiczjl8@wdR>mxWGZ509$0XcJnPd$ug)M52-a~9lv8n_ z$AuaM4LlQAAbk_{HZoc-WkhN2eT{V<*X*9bBWq8tCWhSR<$mHaBKz5Z6B7+>3N1qQ zw6YYRiDc6 zRi+I(fA^vh9AD^NN`s0V+5|a}yV?K#G2*vEfamvSHnZ8}YHRI4zI4Phw)cQ+WwhuC zab@|oh;K?`@s9AW%bMsG9t2NfA|2?gV+mf+Q(CpC!Cm`sA0E~|Nf8V6A7Uprcbn1> z*9Ncqf7PkL7wS4J6iT(9ksUycvv75wEirxCfKbT%Aa;;bZYC&fP(2dos7M6f&+$#v zaahCj$bxgcFDwX!jj!MyGq_}Vs&KM{it_ZP7;QKN={%1h6P~{;)>#N36)oZ>d9Oe8 zt7_UT`t&sG|cVFoBh-lbQXzsN;t|Q+GTb&+xBat0P~Ur4QPM4=Ner|Q^4WhnB%-+ zmoJe^cZbL+__fJ-gJd@Vr_oFtU&#m;4x@kfEBAz3S9z!xpvCPK7NmRoXi|r?U_?gE zz8nw3vO8FlDsn(mDaNtfxD=UHzOL6ns!}Qob)yQxl1qV0{{C;N3=kx=y@7+w?^<`NV2kvDkKK_FRVYEXr~yvi%}^Y zM4Q~y`UJ|pTHg6p$zzF%6*tU|%7ajX1tM>gOh8;ei{cLoOkZjIqt}>$3L26tkd=P0W`(89mm=mdZKIcSW;YiZR2`;N^(0(o+0O_ zvu*Lx7h!%o>yuCBZJ*xT?-lXdzuDk^sR|Kl{U9zLZul2|_$-#~2LlSVyaP#3^0L{z zr-XyBHpk9RBSKsSSe$Zz9y*eDnbXHbQ?&OEN2{!aGk|ai6mKlI_McN znf=S8V-ZBQOUaW`GU!xrIHhgj9QQBj98_ZcW#I! zu+Y~w#JtfE4+hkU0fkqh;Jogc&YMkbpjD4BY9`c`O4RxX3n$4?;eJ4VyT89tlDMj~rQu5#SF$H%hdrJlt53 z*hV%KdY_I2B8vrhRU`$G?j93|Cuo*B>3QI;sX`7twYCH>KrKcx?#9Cv&WhfY3~^bX zRaD|C_;_zp1=ZvU&A5Gl`O+Jd0XJ1q^;g+2QC|hUA!vu&C@xJMvzHF!jQF2XQL_Ii z-Zv;qTrF5w16A}M%aX|amWVc3I|*74&l*Czk>cz~aSr}*SPIl_72{0Cd(6TeLSSqz z>R^}DzeVL8Pboc2_A%w0d|1vlcFzDf68tIqC?ayZh34vz;GcX(OwFMnUj4N_QvMv8 zF>V#Qc!-Hmmkkhdfa|&0s|QQwl_B8itJtb>r|E9!cJuCi9T%8^wO4T(6+jsVumNbS zAuvrU10@~%1^4MZP64})naZB)mhJObP^d!FhumJPYN;|@7fQhzW=>*75Wb&y;R+zkf!m{)CBcQ-eqdl@NhmXAnPP@%4ZwS zmQY8NG|zUH0tp;v)m0-ta`!Es1$jer7R85qG-qyT2F++bi!W~kQWXT{=tG&V-`D(> zQ_OC%w9{q+78bNh#;Eo^HX%Pv1t&6%v2IBhK?@sx5kqF&krb;qG|T|JHF~@#%gitg z0<{myN89=X@KIaRqid`!CO;{AiDaAccbk})@SIwW#`99+)cv?eydHBe}83AAyj&$(cG8U(WD_^5i z(Ypp==L1nj^f3^D1H`UsoC`gLDrXQ@fjX;T`}sr4cGTDXN%aXw`<9aw`sy=!nObzP z>1MJCHezW{(PC5PdNr#-iZI+qei zCPVEw7=JSK3fBScwo{w&0$~7KyYYpDVhdAg>z)<20OlPop*5bpXzIQrRx7~%JmiS zm>vO)#DKNQop0?T0{V~X(9jMr?RcYOQDNZSbL`I{V0|(uUyWtNIQQm8Cux>aXv@7u z?Q)T(smfK_bauByK+@fHFSJ!xG(de;#nc6`Yo$Xd!lnuk@7H zjku9$=T0<&;ZtC^0R$YVqy6f(2lmyL`_joaQG#yM{{9N&sGN;+aJgHHNd0fd*eS4V-?dsPl2Y+7>KXm=rPh?<)CAeGJjACqN#Z^4NuAs>| z_l`}~xB=3jRU~g|S#iNueDJFuXP zrOyc61_TF?cWJoCOz=D_Kn;4908P;5LF!V}XudLBVAfDax%h=WU*-3^BQA4<1tgIM zH2m>!$9qRju|g1WqkNfqq?L_$9ekc)X%9w=Zev zK}E0YN_YS_!mQ%y5&P|9OE4Soins-RmysM1A6n;9t1~gkPHcb#qDP}*uT$NxN4P-D zxKO_}a0N&7CP#<53eOLKJ+pQ8vpm*up- zY4`L(7B#p8D+ysRhi)EeJ$VTVyGUAOF=ohe}e*6eeGrtueFD7_SU05_)Vth>G1W>Z#2l@r)<9mfal+C$e-)M7?4%`bs8QeuQ=LBhMb_lb3CEe0Px8;(II!lYczr#hlu3C9zum0uLmQ$ z?!|Ep6HO)a3MITQ)xN%mCC>C*tQPl$UlOUn6rIOipeSW_zfvNf&9pQYmY3i`Uh7q% z^EkrqIp_&A(xh{U9nt@M!1dWwQfD1#>GR+VUDizT!P+&L3(8&rl{nWEXA z)x14i#j*r5o3kKyO)!xIYByZ(N_h7Wp`@8sxH_c(^Kg6c5SB0Cea_4@`;TITyVp%- z1SW=5Z+G1QkIf4|K5oT*^fK67hohlKd8MfZ(fkhgAcNy5kP>};nn zGfwmqAN7tWBA|=g8R8+W2yU|s+{0Q1wk`!*1$xNM946S8^wHjn8a zMX${`H0hvuHe!ND6qFPHtci`^SFqf9!Sx8G=VmDBMVqhbvr$s2JEff|Mi8Ww`pz$x zQsuJC;qP~Fx+bg8JV||*4dal|k^BrTkG@T~&FA})f`eT0+Ty!HdF}A=aY9&DzEt3Y z$ft+HzVbRw9J<3`njI0nwQw^o&GEb>JeR){UyrBT=UKz+MR4lZw2f=7k> zNtZp3zIv98!Y05gdP)O3N))WJJJnyLj(;Io3K)=qeV(eEQk5j^+OF^!Cw)RNMc(-V zDX1E$7L%V#+q1zmcK^C&Y*X0a_#tp)5A4YFeWS#-a0_ZU{!+d`79Veo#-z~%XjdFD zZecJ(XkqD(Mu{mb_gLZp9fJ%^)~GE#B*BBA0#S zn}fxN!{3?+jFzK_GPd>vLbk?SPjE9MUoJPx%#TaB?6AL+>G6@C>)81*n%-dUwts7l ztuVJrK;U~eqhzfgGLDrp+sreCEq0h<_mo>|S)yh;Tq&!SP3~h6-KEXNf{gB5WmNvC z!zrP+PRhtVn$DYewuBX*ducIx-NmNXTy+6b+bF(PZ@J?Lv+!1SY|QQ$7S|pU{(0+5 z*2L(vwzkUJqK7>$+WhKOW^|c>zGNi1YSiGD?U6CvhITiIg#R66)&wtqVM4Oc`>V#v z=yt)F?km|DBc@4Mqp(!$+(X#ow+|^fmI2p8a%zH%kfsZeOW%8KoL2@^XQZF5K&}FO zzq4J=Wj6Flkb^>C_PBGm1fJ4?M>w~vvvLty~ea*xJz? z^gXnHSnO7S(Vn3aX5eR*#gaeA5K`4dbj$p75TBBD$y~CxEkk{`@4^wLHA!?$p3iSh z&6r*tl`%{ofXe^6bnNHDaB~7&^4V75FD3XSMTcFYlQN}M9g)Fpy0BQ3>56PE9Z%DLoA<~(Tksq7OmXpiM8@yl6)|^s3Tcvsg z=FNZJ*a_`+BnXA&(sB7&*`~uQLQy1Nxp7{$#W+DkV6Lk8nhY}}!~Mr5z-rO_Y?o~? zjwxUa%0N!YO1o!4sheb2zLA7fC+}cNtD{>2sIhk2MtFiaNuD(*4p(i^bn21`dNyd= zwlq>yI)m!%G(;0WM?($hLbX(hyPsmBVZaa14mf?ZeD{G4^A9K!G5y_?Y7!BuMSSbW z`j7U4^67&7muX%jmj9(XT=(F>ECD{vr0!%QOs;-r!3JRt+u+LmxkJ`mI$Vbvfr!y` zZlSdrdvvQ>7`oJCJCS^ZHOJZ>REs)dp;wvPT*jfl_V!JTHfG_|W-DFaE_MLMnA6}d zAP+H{=BH^e6FaW#r2Tx#`9kkf*Wl%SNYL4HOoKLYs}diuqK z$gUuKy5_-^la;3FnyF!nzBMv5;bW4r@a6k+y zkr>_GpkB)Z@1E6m`|K{UpSALMi>*mno-!>#w7oX31*t=U> zzHgaXs`sM?&$^nPQ+*SWlN_QD)X_&$-2b7w;lb{Fo^1QLIZ3H*Xu4oES#LCU0sDg5|puG{uS ziSsSjO*!#7!fA|Y@Du=T*Z|Y?r=YHxXGsD!#9Mp?_wKq&xineaBz_yQGqc__l-QL! z)l~~VUT3e8$DN#u*hhurLRjLVI~aUt;M0kQA7Y3~W~@iEx<;qW!J6f(_g-liWo_nI z@G*kP<8QPled|8YvHI{g^}0eED%rQnp0;%f zg?V}<|1v=4QMJJ}cjcA1i+QD0r0S}AVy5jb3JW1u@VU-Exc9O|3N{-5u^x*AVPvrTYBRf*{1j=Ept`1+{+o`6U&K9Owd`(l`>>Td7V$wS?+v-eHm1pTYL7I(bG<;c zc7DjMv9u$oH%+!n-5tK%;viV5f|=yXG$U@a9Bs1=Ewl5P(~Xrc1BBW+OpAoVr~>&k zRGC7c#AxSm{aoRgf$)h;-MBxdb-7os@$w7%#dEvL)HBUG7);aEOyYQ^1=_GPZc;C= z@pylMm9WeOe)Du-uL!bKV)Z;FD32ontmtDPW0=1i%~744U+$o+#J2cQpoclgs_$F| zu}K+k??D6^_5qgy;oWXe@%Pa=wr&uyI@WWejxiq}+>4myanmE9)Mu!S+ zru&g_*YML+VZkEK@yTNTwejYfKG(}UTZL44w0WVVgYx`>pp1!DS;)f zH~=}yGGkp>QA~m8M7da=^8T02TMI}#ZJ;88DaNbg6g**W0>lwOG57Iv*jyp}{q-5r z(OCVXv3i=x5PB=fYW^IR>ja!E`UN(2OJWh1FUwKESN;bEXj!Nnhp1W0W+-L@| zjS}4GE1QYS*O|!EanzLAR2=~oG`l0)4DXBG))FT&H-?q0|5db>5vWrAVrXUtzEDE* z0dt)3JJtJlsQxnD&i<(#iVL6w-DCROhi`%Dm@HlQ?Blx$DSXcHIJg~p%Eltoj|d}h zA=b&}%G1~In}%kb3nm(a3F{~I;e)PV4 zWka~ZTz)%31Q#=*I-s#k#4!m9T5rgriPI-f=a*B<5^rJNsR9cFf#|BLMV1?mPbL`6 z6o;B}+e>e+=B=@NiKq)1XkhX=uVB@FVh!-Z{7_8`s>U6;Kh&&DWshgRpWvLsEYic+ zcIFB2>Xht=jgzi*@g>pSZ}rS|j&L8Kf+(ss$J~c?VKH(tci4WaQ~2wP4?5f9&{AH9NmXv^(u|@7ZSC_jENea(HO~08G8e0Pzx7tH@aLxML1q_{nHp8{b9?jiwtB8Rk9gh@cS|h0 zmnCZc28(F{o3;RLc_4J$MSwaGLk4OPGi5s8$;5$`7$7q=Sd0hwx5Rj{)DSFmfPWPw ziDuH&3a9T5Bn|DhU)llA94P;nbK|T3+)?DtUd&4ctBTeqTdzPSt6&l_PeWQ%X_JZL zfQ_qwXYp41OF{cK-$?W^s@xqEO%GVVnfjh};k|s70E>R7+_v{3R_v~M^E9!5pI6tZ zpxZ?cdgnxZw#TuB?WEH+k@vYwXTh=`dMN$8a_HBxD}aJ0ZKcwm9W}4WJRl1#BIz1N z%;UGqY+EvA{n^BMy2i{MSuE_!Vm6bJbDRiCHqS=0pbmhL<#~n>8c2JpB8F$iwSAC% z1i-ZPG95x@MgXGj!v7b?VoRoDO!N&Q+%*?Z^)ZodjYYA1ph+anEApT^|LM*Bm!M6a~H(Ul+f6)(8yZct&!ILa)wzzgaIlFw$-;WI}|V%x%B=>x;z9%h>=dBcbZQb1fMyOnEHEBJiCI zQzrg;Wy|sewWGjtE3b2oFzjpl`o#ouva0B1nIeTZbW4b@{Y}PUf_F7`5bKZbWMqsl z4E@S`B$Q9~C;0or4E(dhNKipqG}P=i-?s&lR@IR~%39okr&Y1JHNX>9FvVTY`Cqss zOBA&UUnx4=`+Y9r`;*^+AJ1mpeX77u9ePXfwd?qJ_&!sqD;w?m0A<($_K3fv?+$v` zDjI!ng);*(7kHr|tVF9L+R#0&4Icnj^HNEwWwBvm;1Q|2T&E>bDh(9I83YfDAY3%T(FE zzL(!Afo3fXy%loL6ohiWe|P(+w6oBbz3+*$}>(Tfg z31n}bHsi$|Ag+E{C)`>=g2ad4AHsJFeEkQ*F@GQcp+f$PEW0=zp&7a1%yE-j#ajGfr4LavgGW|Ehgj@WF+md{jD4wc+c zntLoVoGI4_EWQE~%rchUj;}a80RDPnmf_90y8<}JkvoT$FDmv575$6cxU?s4;fuQM z_@Dy?Ey9x*C`JQ8K6XWSr{s=q*dMY!c%Uy~~x4 zat(XU&&N7X=r3H|t#~8Wc3B*>ZTDZ|uAaOL{U*;jBFzLk?>IUqu9+MDHhl9cD2XZZ z_+%vp9T^P<7I8`p3EAqoz-KO~n>NZ_ct~_2m?EXZFoao;dEhR&R?0n)B_NN?96l zZ!&iIdsofSott+5p>zJBM?Kr+yozP}z?_o%9ap1L#52p`;<9_hAMu5~athQw3%%}F zn4W49JP_}i6AunKjym}1q@0YxgDT-iyjRq>WI2hWBSb|LX5m=huku9TC)z3XSM&Q; zfueI@(|Lvx>$NV=rIx%)kNhrcQepp(;qZBGC0YN_sJtvgE$u7-HDO*LO8-Ngmn51R8jt7f|lu|fEik%?Y=hFnU2J-(sSs9NHmA+TC z27(o47)5SBSQCq#>k^7sqQClGUx+mb=N}MyHc}v?7x?j8t=Y&s857UAt7~GbLIR$q zXIx>|Vtu}hZqQ&Hb1E1&u5mBs4iz^+8EKySu@+v^D=}&U< z5_d3!gcYUw3?G_8NQ3RBwXV-j7njdzpjIghTxB-*&+l$Zci!wtJ~Ka_hvf;C_n|*p z=Pn445kJxw;0<;Zw|a+*OM_zqMZu;jWC(8jdhH29cMjr*#M5Ub5CX<3B~yU@Q0k%T zGRjHcdg|?y>|Jg1)c3%@p>n^lM|fHP$kvmK0ekw0&jS-iR!c&5g=`hC^dfWR&^+9z zWD#kWgDp|z#<7I8Teu*UzHvZxRNRPEX4HuZVx@511YvWtfMih*_^vRspPXA&z5e!Gf0Kga@Y4`648W__^~c71tA^)FFS$SqbijhY&@d+@(^WmsNGy!;?Z5t8MG*GyZP?{8;#Z%*B#p6$PK)XdPuV-S z@wNT*+W|wJQJCBA%J2OziC+I0EOk)Aq)e?bZ*-FWl^U+Q)EE$PbNpPS#~>PvvNU`e zhRRfkoa21HMZ$(?Rsmk1>Ff9h=hf}A9a&GQz6;;JTF)38OmPnE2GIR2#qYWM3uVEcA5>XU zQ#+TU(1WF~jyf;VOO#AQ&#H0V2RljT{pd*V^`Kiqq$RpVOx>A}R8)`cG6jW4AH5B4 zy?eff?Xej*>-PEIcF8jxdi#h{+UD;ZqNl^!{;`bc&eviZY|fbFr|tKTtuLo}jT`)x z_srAM@%9)&mcJ%2VY>c2G+c6{PB9sMF6Tn3Ko-pg+SM6K{u1o00Xf2GRaK_yMNiLV!e-_nL=pkvLL{K}W7+s^F5EE};yW55 zigU|4E+E+(4&z}&^9CV*236)38ZxZb5f?S}FtXU8Px(7SH*w&hbq%{?*u5B%hbfHU zI#gj>xbaS&%;hc54*9ffy+}v_?ys$k?#Kf=RHaaUeI8`$4g{+vzoN$e#J-Zuf@nnN z!Ks}_PA?!HgyOrC_6rF?Z_r~gwP>-`!Z!sx!LC1 zL-0LoK-rB>I28>Nn;p(1w6{{wJ76}x{W9!IOm0RKP(-jiV69%-8>Oa#dryDnT|R>J zPoqkAZw?bzWAZFE>99PBg5JRd-Tg&0eZX1g$i7(>ExpKupc{pe?&J>H{Pz)~+A>%Np;G=^QTjg5bgOc;)y}V4g9t4%;0F-2FVc{A?rXg z;uL+rl=^x6F>%*gF1%W71%N8=l)lZ72ccf(gC))R#^=l0toCAn@Z4vYGiZ$Hf(4+Q z8@En^sERCiw^5QdU}1utWxfR1tCnGMe77&6lg7cvFC=lBkZKmm=N$ygE6(0$oQMLM zWV~x20%N&hP#uk+n zgoZh-O=9G#(lHFx)?><7KlHXVs4LpLzDJ>EweR#r#~ov*Ko1=7Ug0T8I@Z(5o<)NN zo~54p0=paLvYNXdNBp^g9~Zb;rd7)L0(x$g*3#KP|g!~;F$w@DEzlNJ_su2aA+WaOf-y}4m zb8jW;-chfs@Ywd@utyv_O@w=)J=Qras=A^j>2fXfmhU_|*m@Fp$;lxMq<`Qv5cd>- z>q_b}$69>dqv85cLeAFYw?L2C-X-tNbDH>v6V2`i_7ot|e zAdCx3evxI!J7s3+ukPi6hs5Ydd2%)s6paO)Ip+2Bcjihq`BQ&9mAFO%tgC%$Nd$rlBIIb z+4(RoKdX^AeE9_nIpL3+48(?)hU;e#M+C)s=uo>X&ARZIT^<$U z2P+U<(u3%I#*96A@7eNVCzA$p7`kFjpqBtX>?cc$?cvr^vm9HlhmG$Bn)Xr%f;!Eo zb*3;X!4zURGfhNO&CI$9{SyX>ZwV7@&HgBeaN6Y2w2P;kh91YnJ9FY*o!mJ#zC}kd zy59CcJ;qpwodL)Ih;WU_JE?BCTF;#|8ed7Y-2}x$OfRL_h~8gFR{k2XJ1tz(mEQ;Ws(6C#5%GTJN&yW~EqTf{k4t#d$*6P@i^67Ev5$Ii$uQh`iRWzrU=KFy?EI^Q`2m{7(_?r< z-2(Zlz2^@|kAyz6W9k|2sZX_HR8<39GXC6q)3o=6K56*z`%h1g5@^Syta=sPFN;M- zjM7R5JWuctd@`oLH;89%Fg#`jf!PkeQ2<`VEpZl^#v z)aYOd5uNJ~?*@GG^xS*FVDQ`yu10|nAt~8cp~m#3?L81hCwuPy(=WSUb3SbG1jhE=MIe zG;p`JxLz)5y8K(@!qeJJ=UQSp_*5Zvy)gH_=XTR~9eC~KtIwWXH`<8^!x+`XqZJ)K z>0VFqiSviVKND00mv%mN*SK(*$Is$U^upW8h#Yd0FOBLc4pG;?0l-g#p|v<^fCE zfEi>fWY=&H*!3OQb%E=$&UKk}b&T#Z#B&U-U9CErY>rSARsjy1Ar84&t%+F`X+94A zxt_9TnU$GyjnDdr5H3}javl9IA89Su_HSR^R^xIIz{vgwe|Z6n?j4##W9OnVF)|R8t$hgjq9QUug5!*u?s(A3d8A<~Uu{RM$G&gl_qS`U{C$ zc&_#}^G`Ow^OiJ+b?)UNT4Ru!YtnO<3GU)Xm(v3H*#_8YqRVNvYb&kGMZnqG(PhxW z4y|IVT2nA&H<_f7+clnYiQhY#-L}6|ju=K1GOp(yxbETC{Y`b>lwQQ0v`l1bcNdA~ z(X27#_D#|mn{Y#;M-fYBMf*ATSIZ4|{NTM^4EQit{P4&Adj}>)hP5Ag^TtRE+3agc zoIJlAvf?V6Xh+>!D00DaG+ELdE5D$;Gk8UisdZPq|GZ~}t4+-fx#|Nwm(5%w5*r@f zkaaP|Sta&`N=)ZtyMFxrL0dO-osSuQ*yYm6b((N>90o5xYgQU;cAo9BN#mF%xmu-x z!V)fN&Ik!JLUlSDlT$=1grR3yFDf#t*}e87d(i#KYfV}Lt^K1%Ph-bY_Pv?cj7- zr|3NV;~B6F9m!|w&%QMxb7YPllpkja3_iJZ3-tt|S+n`M*m)cBTu-`8!%|Y3;D-%% z(@!(rkBzP$mlN#;2L`>Dsdg3%Qn*>gd}~YBR?lQ5^PfXzJm+CkClb$jwaYmPtRD>e z`dvcRpNZ1I>KhJ=jM6wdt3tI0S~6+l%_;e+ftP<0iBscbZ3SzJ;neoT?`NP5xpX~` zN`MR@rTy~v0pb1xbV+s8KCSB}RVVa39r~-ML;SQ5?%@zfwdIwhI#=KGUZWp21kc&! z9yGlnKQ11I0P2k|X*FE@bB7cNrK;*`nwq*=Y@4^(lQ)nTJ!3S-(COe$4`qS;|IML;jy6CyuwM@O~Y})Niy6M~k-W&`f zw#Nj1uG7To<1t{11(8uSh*%DE5()l1yNX`bqPS*;r(S2w0&xgH6`iVCft2l0QVc2M2$|ICgZ|{d7&6?^=2@KlJ7ob+yYW z!u9u=MMn%LOg=_G4YYX$WFZAqS1AhJEUL*$bY7Om!PhlGcVaiS#};K)y#E>AS&`fQ zI;RBS_A{?^=I37XrFMTmUnHsNM1%gHZjcZTSX|{q@ZPLpj;FO9(3bd>>K6WI4>3w0 zQTF3y0P}}-#vHK}89ZHx*yuWJ-aWg)wW4<&Ie6DHAkiXYo;s6cOYXA5b1eX1bH4K4 z?Vy^i9DO^``B%rzciod--`*D-^L35|$<^Ait2dpyW&Va;$>Gz>M|Ya1+ne)-%+i-F zc}`DnJ2$wRR27_M*(JK6ceUq}37M`QEn8nto_+L?djqX!*g z^D~1;Ph3*p#fMq9*V(=~(0z6uqW{VrxID5?`S{fy_zlHjPP1momoj=o%G(#V5?bF5 zr}twqJRLkeS*oj^dDq+WHmAWeY>7*gZ3G_kKJ@RFYxaR# z9y^Vv{d|(HkdB=WpegXSW|+BJtzVtpAcdHlJ}{@9y>+}R$i{FMc;AAeUJZb)@WFO0 zkm81TCn3X)HLbuLp&b_}3_;@=BN5p!=ju;;_|PPKG+wH&jsw&@WIji_*H*D5l4ZrT@ zKAuUd6bpopp&(5fR(0wk^t7^0_^QVef8aFUj)9#Wjq#GvFpVzBWgEgUj!rCoE7zz{ zl@$AQRi)eKoFfSNZ)fn6;X1$e3C)#1&n1za$0a|$ZndlUMoEu*-}(*qblWA$9-;MK z(C3Sq_nZn=XBW+l(Rk;wXA}S3%#OU|1vGqN5qeej5h=JajVbDW+`kDD<-S-9iBT}3 z2P+41tPofU?F5#2ACfCi;FOt_?tsj3waF)jNx!**NiA!@A2HK3c^Xs2vlNr3g)YO`&7axzlGec|dQRA2bR6&>H~hgj4+i5=TQ zG1g?Pe#umU{6*jD@3o{r2ZAT&38S8bsf%O2Tfh5GkSni4MjabvZ%?M^-njeq)PG{T z>6D$%Ix=d&!30RD!V3TWfiW@I(FRL-ro72GyXt4B3Br-1tdpab%{RtWWjLRdy2BNP zd|j15r+5xx@;HWW6|*FUD8~--4Ne;+?IokkjOdp$Nd01t*m6}Y9YWhFTRnew4L5D|S8Oy%|FO2|#i8%#O4S4A7uaT2as$L{qk42ovsRI5 zb9RHA1Dd2=q?j|njgTY(+cUbmpZb{HYj|q=%HCWO8(TcCbKUrvXq|n;eB1BVRZA(cIotN!M|izh4RU+Z zP(EpOHJV|+a|&|Kf8cgQ73-H07Zt4*3YN`tGLo(#MhG)#>jxEPpx3^f4m`2;>0i>d8jd(U&*yt6frPA11Ci9XoRY96@I=E@gByiGkH^46~)hmPYp zO9OEWKu>n!Ff;2(B)yiwGyj-!>!rj(`1FnYwf%PTWRlg^wql`9a*it;o_# zFWyjynW6u9-XWFE-BTS@9=}|@sF)s~rCtLaI2IRYd%Hg_US22Ti~rTqPf(~_Is*vT zVtv@lrtP?TD%8+u!A>sn7ys3@eblnQ^E|^%YaxfMNq1VEj8dgl1}bgztPEO@yrcw5 zI<;7^53j4$+dn}09b24Ii_lyn_gTmV$*~*hnGz!phu+Z+t`QguvT&6%_)|=rCBP{% zK?)`9=Gr;_sRdJm6piJ|jNq#bv;L22;vJUp*sXqNwMdA*9cT3GTj>6ru?yURVs+; z;8yNizv{MS$iN|GX=tzWZ^JnPoSgwGQa|b1R(}2)p(0V}0t&oatvYl3yjsZf3%F6T zGq_}!G-G8dWN-6gfoF{%aOxsvo3D=IjY^0VP|G_uYpr;>60YdJz#;JJuvXH42T5!R z$m5P6Fv^GrzoC$AXIBOZItg@%lS)VsqPHmn7%2G5)dnz;yIEZA;W@Y~{hLBQfvd=B z;VRwdy1i`Ac7$+>xgGTyll|_tkWtx#Bga62Dp}lufTx71ty+Z0g4t~;p ztq_e4E&239C($%QMpxubc4K8F=hqNtD}!DbPIVys5@X|4`^tJ}viSG*(EMcLDS>(X zE5wTlIi6pXW!dliFpa4KkJW6k0hxl1l1hd(I}lz0QSv1hXc|;pb_Tyoah8;AAHkFh zaGlalQOaR|eVb?35v5gWM)MsZV(t5$Ql|ZpSXp>d8i17vKta^C`f_bx#8?(PLQ+9#~hrdvNzDFS!Oj)W(x4L#K1q zIt6e{8#|Cc%=@pGf|d{*E=i`cJQQ9iW;Z4^H6@k!7KCGV5Fo7*B82VOxc?0`us{v& zns8ue>(BTIN9?uht&F!x+n@BR+rG-w)-;y1+qba4l&o(ba=&-0HYTO)Iwas&)NAuf z;Znl4tDLUqw+8idfM@q_<7B`)?|@X*g~nM|gQ1+7 zZ;om|bysOJp0S9(D#BS2FkGJPlSldDSGne5<^YUY`#p^~C}N(@lGdRng;8!=a=mna`WR5Tzy%9*QEd}cE_18FcA)ay>v;u)1d zfi@=pO$W#{5YF~;(4*%6#A0nRVa}*lW?dj_F%v@-qfCh!qqQ2NQN6LIn%FPez5Z|I zrX{P--A092%Y4$`9yi5dxPecb!QlIGuT;GxV_NntTP*d*^}}t=;6WO6lBT%1{`UOU z51Y7Aq%PlJF=WKowle>oZ<4YP#?SqrsqOP6-=8avNr~nA0+UMiKLQ5_WtQmG>9B@N z0A7T&5>>1*&~6%NzyeER8S;ESc3SFkCXYX5j%^Shy+MJ|3BLYhXnRRw-A(U!{`lm< zQ18v(#DRnqFIfp2-7iLs(@}GaFCjW}Z|H<)ENIC$xT#Pbov&H9|K<%ZiOeGQXE704 z$Jqd)MPxz&1Ca=rqQOYOkFKIcn_@8YE1BFmpYrK85oXv!gu zK+djBKKto=ho$}v3Q~SvTPIKtIxT;Wh18*^mKmj17#)tfV%6N>``1tZEcC+$^ELzZ zLC@T$Ajr5lX0U&H$)E^!XffhIAfepySrpE}hY#BjeoA2A&5DX|05MqrnF>CtQz{it zskIN5Y}Be2QdBuYyoL}o;nBI;r?|mX`#cKvZsg6HJiaUhF+K)F;0)HH%>Rv=W2iUU z{l85I5S}d%CKE_QSnUr9rsV>%4GW5{)rn|S4@c0hPxAGc#*L*=$vfe zL*5RVUJRy_{jf$#h-ITZQ-1=a=#oa^ve#x;$Wum{)WlxN-1;DnP+p6gVPIyYc2qIc zk*s=w`8#KUz+vMzC^#K}+Q&VhAi-5Bw&PBK$}r{SnQC%Mnq@-gJq8Y(kKQ2*|L#21 z)Nk-H_Wp)nF$ZoVScjmVF-$E1iDoRwZ}B#}a@XzsnR-@lW^ZOjL{~wQtt1r8O(ELW zP_~hQ8~LiuVj%Qz;US0G=-ZG6sE{lMjP%i)kDylMn9n4@B`n5{Gi0RyvNhXUh7Lt| zFKxN!>swNMyH^h;LR*Cj3{JK|;6MB>wC{Sn64V##^Xbg=?0kBQST>>vJWt*R;h1!J zDF0?C+6fh!^euCRuEWdPt(2%NizVsoUeIuK2RwrD-mXV7J+nllwBieUO&-jM- z5zCKF8?~VQEKmA3?E&2WZ~ILdg9E|)ZkKsxH`*Y|2{JtX4hd!F&rn2Yd8#PMv?vp{ z59{#nY#pf{mQIj2nv!;>Ys*nKNiZBWhs+bCEtd9SxH$%_vew`A4?*p>N_s6?j&*X< z@XzX%)27m|V+NSl0X<*_jnV<9a_qfdKBFrKboYk8!^Ld}9Gm(XbL&Rhe&x7Jm6Q)Z zwFgo_9I|prvT2*}rUn?^P)mX;3B%X4N+Wn@x_JJ?;ohG`g<7} zK11;N-`cEHWLhwxj^&XbhU}ixJ|&=_Q@M}P$}b3*P^Pji{JuLo#Y9J4k)zheR@eZ_ zmkdd@9oZ8s)k=!0l(14!eu>YittzA_OFP?~Ij11gVZl*qTagA1#s(*-2IRf=9O$nS zu8Q#i(^D*Hw@jRBD&-?4uJq4^kAW93RFHuH?noKVN-}{*5!agvfY;RdUwh^6w+Mh5 z!HB+;#2qu!kx!2H!(JnrUxaxDwM|Il#g7=56FgL1CyS<4+csS^(j-ydC93$B&( z7FZam4wf@y+m&D}0gT}TDQ~k0CEJMNp^1#ar^>g(0gJ)=tXQ|KIvO;8rD#6(u5dcz zahK(BI|Q-AUhAj;p~F;yhz{F}q3wrCMsKOGYMssqv7-QaIre@<_PKKu;>=&|m$#~* z9Oaq4QIegXK(L0JhukRC+jaKXtD{ zG6jTCVX#8ev?SF-?!!ku$3b;8usf>W*|oH&)OrXJpLJwy;W-6lb{{7^ZYP1R;K5}a z*u7lLC0y}ZGjbS9zq;A;Gw8%tw(R^*f^vHP5-6gDVIZ<=H^m^d*(Mx2V037;HR zh6D@jNcFZ1u^%k$Hu@~IsUiPCdCX=z^CwwGlSgz8A5)HHDy0cNRSBlYKdNO3;R%3* zfb5qOy;wz}Y>)ssK#&!uVxrlqoGF#8DQ(V_!Z;0Rpd7w_|K<};S1l~Tj9jt7rb~Qn z=|Pt&K1i2mQE_Yh9$g4#WO^Ap9?tlA-}FAdNAneKyQ$rF zNZrUMKbSus)0uwO1PHe$qfPa1I0;eiQUaQ-08^Gn}AcQJ7+Q-pH2=VF6-k1|_cWS6v z3gJrvg}-1s=wO7NG>0 z=&AkDLiwr-nIR9+A_j^h_)!+Wztwm9Kr%E-bl{^5q8A|75psF2!~Nrhu4!zQ0_G=` zDFwTNQfQrW6C0aARC{Ak-xrNLvA=XP8@>Yo4(O$MtQnz~xdaW7Og zk68U<(dAM~w5n8G``ML^C7NyQkxVUp$j!6bNo`lP;?i<(I^^c%Vti{xZ=TxWz3oQb z@lB1`zwr6pmothi?WaR5-aOud{l2aqHM1M5OWr88xds_@(WkV~k)nz`c>`b0@NIRy z99eZq;?o7DXT`-Gd5G<0XTFU!W^@+de%<20c0ZEDN3^4p-99Vn)8b!7Btr`nEC)b= zOHj}AR<_EUQ)ph#bwVztIW={Bhtt%oBx|oj{m$G?=_&7 zOPcywMk$k6UWdxK%R^GK0E9Fu5xD*R-u{86`tPVP!iz-1DptK*04jlsqM_0eK*a#81wDwO5boSt#b{{wukMvJLT zh;nKv>h9#J*<9@ZL+3~MPOKJl6 zhmxoWz3%J1c0o(VS}@L}z&>RSfwYd&g512+u5Cq%(-ImXC5T*K*m0=M4>lS8z)VUL&C-`7GJ5wd1a}lKX zG%bGE2)|y>$_kDK$*1+-)WVwPB=JD;T+d7mL|MCA{6RIAC$!dvFC&+)gK73`rPXP} zbLc$f)w338%km7oDB)=f&+tY=ULMKcH00WwnWpJ{KIvnyb)u-~?=SO_hi;p%m`u-B zk~59$*ht8=9L#zd^i}H=G~-FQDuT^X?O?!cOU@5mFtRKp{yf@!NVET0rA4vC3wA6* zPiw_9)N!!CG}g3aGUf;w?6~m}8O|SfNyVM_r-86u@j@x=QJ7@^QKxRnl`vcaa!Z?5 zXu@aeMvGZ1$t!}&q$y_rPN2Iy8pr{uf3`vF92j z#dwg@^X6DbJiB-)k<9L56+lK(Sze!vk{ zs;OvR5VL~n=Va5fMdDgQ{p+6J9CwQz9`vD4m>&>}pyM*BiasZ!(@ zr~KFN)UyELx+i}ennhCu5mc9>QN#<_t5Ryy9&8<5U;PTp!3da`WI(y*-w7^iQ(2ou zQz9J8jd$&dexB84QF#0b-dFK=nd(!rui8U|N9|qpv(|O;6)9eZh_zxIgzEEOV3tMs z2&y{LFsr0ds8g5xt_~e@UqbKI(ik?09Ek(UOVR))xK+$TZ*z*=4JP?LV9@eK~FL*>ZpFEyc;@cyJ(v?P^E#^M5vQEuV|p|rtndZ z{$*6%R-(@HBSB1r%)fluS&-ptOQPnYQTCoToSZeUp#4{{QM{6jfu z9evaM)_ER zbU~L;XqY*G=iQJG!u^=@I5X)M16saSTC_0A-MhTWvm%7p7Whl2so;sfAe{)e?gnCO zf6@osax7`j^z+0A3s|MDJ}Ux5#69Uj1N{ft2LR)>{=&H*urPDQQqQPBl+w#JjHw;v z#euzFqTa44Io-Pvoq@~8WbxrX%|eLHsYH+M8aqa(E7N2`W)%)Pe#C#PG*{a^wy+@@ zsTAXUhx4~`+y&2}LOQTGD2uMKpyfH9J(T=ShA)yGLsNn)^e3_jU9MdU_8b*tDOTlRsl;!f?hWwfmxx|NR!>c@rWxWp>!L^9inj zi#K&yE%pQk5OvTlL=N{3wW)y*+k@zOT)@y%o6A3cE%vbEX`{J}#Hml3=Y`4~5?H^J zK(~nhg8y5_J#OFHv)j=q|Fq-_SXukO)&Pj^i*M%~M`3T_ah?6~3NpX*SNO%Rw=KDN zzd?GjgeAr-x5H23KH+TYRgO&1^a+8vZoyRe1wyIisl@|nl8-8f!x2@d)o{6KM;8}t z-ntdsjtk3Ey0*_hO(Z+}IjrcHwr&Jqo0BZ^KY6IUB;l+Nq1H_JFk3l4zDs?Qj0hq5 zk3B-TtI(1hoGapHntrESTb*}2BG2avD$?^G=4>oxBj?}4=?eJL8JEcJI7v>o0>6gGG~%B4?`Do| zRx9ek0;W0%$Do7T_!9IG-&)CH7eokKDa9gN0g1gye?Mw*i>A(9k_5f?-rA8LE6YUWI~WTkWd;j2bQH>g%}D7cmheJtke5(&E2I z=zlc}x=Rf4QasW7#lQFNA><`X2Ri%*1Npv0)}93WiN!1m?6~mOk!sI|9$}+{waGIM)*WJZ{F$4AJ zV#vj9xW`{0mlaMpWJBq*(3@F@C46uq9Tv_&Fom$+0yzm*Zc?1Nldv^iXDhh{tZ~GA zCH~aO+SG%M#VJPFsR-Q9##54T+-01RG|7<+fcP=-rvkZ`5NS4*)p7RgqHxUOMs2@S;}jeH!a9&2C58S z_F%ZQVXsUz)>?n!g8i?u$@|MTv?dwfC_eK71))t#{+QoO10&i2)`n6S=(lSP} z985km4TJr}c5S2r4bkT9+i}}p@6~QIi( zc)~vki|vIDDzN-dDHMLTbpGr<3$|==gnDHqe+4h~Gh-|&Es`bX{e~sEYgy~zB^Ph; zVaEG#G6wr_NSChYyM&C^7N@cW%*hgnFb4jv1uaccxkN`Q;WSx#XyQF27l9M;tz|v2 zx5bdv z3)ddYl#N)hD#>M7U^Rt^q9g$>rg{H)xy$8ES$A=%{|$bNq*>Ez2`tqw}VMBL=3V4u0zbz6=i#rxTI zGB&wJW0;K@J|^1=JdRC!r;~1$bMwz94rPjC7GAKSrW9s;;Y%sViUFrD*n0&Xx?!8L z)Sw(G2v=6Q7)gdA&Z%Ih_$;@qXkhqOta81y!_hkn;l(djlhzB~ueqkaky~=Xp;lpQ z6J-Hh)zny>{-AbK6XZ2yr�a0ww@es>F`|^{O_2&|Xc}eKU;K4KW7PwPUB+N7zV^ z=k1FC@K7EA0U#?(l%c=eE{MC%^vPQ|d~o{k9q&1l`ETC7pMvErfVc4xe_Mfw29D1j z6D(1&t$lKrz&}B^>|m zif{DAaRhE_6of&!r9^2;Uji>RX0z)WpIk|e0b1OApnbVkv}wq6!sT*PpaM7+FI{-NxNEvOMP%d>iA(ZOzfj~_bZ~=>VnDk z#}EzO4_7ZsUf`94_D59yc#L(@-P%U(ugaC zqu}NKs7>>&^#hXoG5uY&Xq+u-5Q>BtH$S+w4!-+f@b{C!J6lU?!FstY7$l z)4kvGbUZc7Lg#bBL+GXrJ?wzF8FgNbM*?}Ad)7aE$ zo+qiL)FXdw={dQ8$+QMJ0#I+rvUdo`$A6nRGxFZoUK;(yoKMPSUqKfEKxm=K1LNmo z-gyh}Vn^SU!QjtzqVpZuh_IN8XekBnYnOv?Yi(_}*l-qC8UE=B-j{B6- zuT*%zW(mUth$LdjkJLhq@6gMxV^_0;ve%xRl;Qc@1s|XT{|kI883rgNzg4k-Dv_XC zghA{gR6>9*McM76oPZiTSktq}B1pP*tEbZ&KPQH$8FC*8W6_^F=GWeDajGJCDpes0 z`Q1h~pa5yIL0|j3^_RcyPCC~QDdDVruh|_M0v?gYMQyt?s#d-jfm^e^{=!?*`%NZN zju7el>4VZpFTQRka6!J^1-PFn0QysdmCS?weV(U|mN>8{h> zEj=IqJv}M_SHA`aILf@AZz?5t-rP~Ua(5DtQrFJU$P)v>*G*PK?_>rRgR^&xI3D+Vm4k3m^bY%uo3&;aFel5;av9-EQz}AKVXZ{wz6xw#GHKpR z=syfK@gLQH*z$YNXka(=c#}HT6{IIV!;mw=j*QBZpa)9kCBvf@r5_(XgqZR-c~8z@ z1HUT~F+F7PkztuyI$}8qw_^jdES8yV`GmDVW)fht{2#aFaIpfZ&q5|ZJ!i-Jmo7e& z5^TF}NlrjS(Ai_S_wyPdjy+??HC~ONc>>_%KJOF%X44A~7Cd|Q@xQXoud&0(MUxB+n}Z-90_1+JWbDB@n2P;AUGb+(^BP0~F9|Zg`7RGWl2RUlpcw-^~T*mVeSw?923RXCU*%@FQfX4g*&8Fa9UR z?@`h+mVJ-Hr)lg@_HTi-NB-0E8q{{1rdfszWtn5}QQ$$WGQKJ;&_eXfGU ze3JS#>M%)OYQi7aTYEK4D35)kbKPO$>S+&ec-YV;+tX8zJ+*glfLAcetxTS&9=(Jh zg;G&+&f)iyfMZuM8l-=J2niw0X#MDudE?)}EsSf6*`0x3IFtXiLRi?Z5>0`$u>)4=~Tzm`n(GrL||4rLGvOP7&lO2OPZRB5( zmOL7REZ5()aqjo%8y~zGvn^?{?9yRnLkY`hZ40mPVS*2@^RMCD3(LS28arkApts|e z15FKHuJH2m460m$OGot|zl9ISOxC6(U3~?rPIAu{fS)c_a=|FSzhTmWq}L_y_fcsk z%5GkIYlfxHKUNKMOWot88Nlsh&FmG4YYb+5=+Xkiec%0_|4 z%@a!r#%(XD`Npk{qj@Gb2L=W(>&UZGrVBUTcrg5 zX@7ftD?zS~NpunZ=aH*l$A}7*7~o|@4>S0yQ-tMVFc;_d`#}zIm)vNB0uZD2wMb7< zgMv;d0rD;(lSNN1WgOY@N&l?F>)(9$jlh^n?s|^EsNO%q+f8v0G{}Yq&n&u!eG%bI z+W4bKjW4IoFS=!k^7dW7otR4S8VoL#FWdrqvIpx*sLfPPsSdpSL_k=CSVr|0psk*! z|K|bIcdoaQF|QLu=8y}^wQt%l7zU^Zk*rpQ9C#Y7dw%WWZyUu zPXDS`n(>4Fk)Wk4|FKH4{lMS&T2HlOU+djr&yR@wmsaCWGt(G!@&zDN zJFEY7HsJ(o3cAeczc*tfBG(t0CknCq@h=*iDl~6cK(=lvrT!|%-pLsMsvX$)M&2}y zLNo=UWBZFYXXzJo?2p!!2)%SFfAKO_u0z!UV4F~j>*tNk*e`eV+L!)PxjU`GV)L7`MuKcvyyz;xCkf3>HT}I|73c<{4X=d#Dpl+2^5V3xtV4DtNa( z4<-W)eREamcT3zIl=m?DNC|C|97l?X(s@0WFIoPTB3X?YZNl1Cb!5IaKPh;+W_b7pUsAh zCKt;jeXt%h2dk#ubxNwG`#T#J|R-E8lE z9n#V1p-s_PTZCVS4!%50q$N*Ni*mY0^+yibEQP6Dk5_6=eRgv>!c+0bv}3?H+hHH~ zqk*09lK5Y}Y8z>itQ)7A#mQEIPd#;c8mD%4f32;`e!mNlkXwaCQ+3)<#h|@S5Q%O1 zM}=N&pK?u!+;PwS#KZmP6k?SqL{{t-g=mhv_nOVcJ7rs%Q!fQzbap|^Y_9I4?@&y7 zvg_7iA-cfR&6INw%gkGFsS-4KF1>7yE&?bN%z7b}RQUeE4LfbxnRlCCAjr+Pug8xV zfc#Sxb#yM>m_pZqR%9jyiIWiHo|^tt|@`OdUk~Vb(>$}0HB(i zIu*NRr)VQV$;*Hdgp5ebcG{RK$Y`k7h@o?mANNLlH)1-z(yV@#KH$xNDYT6~)^0>tE;17_Sv8@_BAnI8|qeA|TC~6;oJB-(E zSE(2Ch#Ilk)<#*_>;;ISUiS2`B~OJM3W9Hxf}LZ2YTsF;{)x4!)`!o@N{qTL0-%i^ z8(kesT?z^X*Kz{Kg)nmbkLI#(yMDSa?E5bk5nr(o`_-FrMpkb%mHBnsPPG^Rqv*`z znf@O*zSHK)=Dy86jONOb*kb1P!5oN117*XBy1D3zi@DoTA9 z9g^(l_xbDd|L6UFeBQ_F^?criWu=MVMet#Mm`UE9Nnhmqm!B(sUA=%^A?rHdX0yc< zA#dBMNpl#Xo;w;m&}WG1@bgnX^~#`D4J1Nl(`)GC^End!T)Q(-Tu=$hNrH;>Kb07* zxOm_;^=GAf>6N}~dbH$Da-qu2P}reS{ouO!W&HK;QlE~9B*B0(;V(jC$Kcc7Q$$8!+F|R@6GdDr!}Yc(|I^+#A?#wf5|4(VpAp~XC}Gnl?F?| zPp5R;_)lmVEygsj7RdlObcbz&)9tkj7<0E?P!?oWPMR_yR{+m5O#8rNj}kD`cZzu< zLN`7xBhL&kSMU(P4;$f+zxY0WpWijS2DjT`EW82Y^854~f*ZYZdI{d`Ec*iZHM+1nbzAFfbk#{cmd(G8rl znW%Z{X;)eV7BWMooup?b^wyg*n4hyi0-?R*A%m9R+taKY9xmV>9b;ZP+p8NX@diu- z6hJ)a>A|nyK`Pw>1^ht!q15Cwn+3Au8a3`ui=Am{MX%A~7M(f|nZVL&mNZZ+W;b;1 zs9j?D`x%RKDp9rAK6B&V6^&|e?Wc?8Gg;(Rc3S#cI=UI+$Sjxo+aJVC|4~#J|2I>E zLCyP~enNWSH(17V8;0B`Z#7-}ww|UjVihM?Y>;g5=5MA6oNA1rYG0Iize!D&PET0l z)8K6jU!-TI#$_haVO)^NrMi7u2+HrXsz-u)l|akG_gYm^rgyB>k8Oy(F{GBU<(vbd zTf?R~tu2HQIp>KiOE|x=D^+3#_F{k;N>&dB`W3{oUL! z6_s7fzBj0CsczI?8#z3brc7~Ay@rLH&5k1=R|Tb|nz0zJ@h3{hZ8=3>TwQt! zI4tCl%UXXbAVb`b-uVdX8JQ;8Ykfpt*wV;^V4(Z#0#$$ezKOT>aCFHc7i_i!s&-2= zhqouL@x`$+6XL{X0^$Fy6gjW93(Q#v)DNy-us@*I>*;TkSp+g%LOG)lRXjGtXAm0P zpB2ns8J5GDyO?&*jE+Q%1C>b~4$M#?MmhjuI8V#t=QF}KLZXb}et=a&OAV)NFI8l0 znsNK6Wi|DV>Yu)ii}!lnrIOMV)Kc2?WbVH2Fdt!n?MxwQ{a2;`3bGtK9$X*sM~nT$ z@?+RV7V97j{rZaKv_3&1!JnSxPfhiv8ncT&Yqg`;AZ=-?KRshVC~35mc1fp&-+e$R zrsUE{j|b64SlskRvxVs+i_G_0md(@H@@~5|Fm_+#3!vSt+1D=(v9q9MOQspPnsmEK z;6u)0*HG#jJgol6YcYo1UlERdh=R7b(}t=30bQcwVRVgee>qM76FQrsbFvQ^R{e8F&`qppxcrVw(mJb5sO zBXrH5Oe+j5c?}o0h@U!p)+ymI-NYN5(cv`dPc@iVJemm7qxbUi_BNHSIds+BJdl%5AAweh-=Q9e+I?dOcA0+Kg{Xg^QF&5DnNbU z4^GO8SjNkNtgw2x<6n0VZ&HYSt0;)-FfV$aMN`Rf=`#>a*wN^jxd~?hx>;m+Ihjfa zU{(mpn?oPpo2~g_`2}n5i8|i2_SmJB3F82UJob$f-mZ4iP{emptUh0Vx4sz*Y-9(< zq96$=chk#fW>@yjdK5`JiZVGj-&_e_JJ1(GM_k?~S3XZiQ)jrkmK~5lEG^KRsw+*k zaZOKhP1kRt8gO&?qcC0@VsZh~Qx(j}=eP){JLOT2vI1BOt5hKm7B8kTOog^&Oq{&a zJtj=iN8mvSqX2m2h&_!2&yo@6uX6%{*EzvE?p|y3u)(49UZX)y4GWC4lST?%e0D*l zke@~7kDN~p^zJtmIPxa@@C|_8AnTStYoNCE^e{o}&*Po8vXlaW2U=qHX!>D*2{&$| zvo6($EN!<0@kJ@J1Mizv9`fNOgAdqwYRAd+Z4GGm9TrjVF+o!i0aV{GDwXLZ?rEao zO1sFVC1W#CsQs7DRCH!iFQ58a+6=4fDDh#~&!SZDnDVXZ>K1#Gts>k9~`+pb^s|sjvnmgW_57B}U)vio7W~j}(<0jlI;W`=K<2=S#Uayfe8{)*E6x8{%SH(66z^HkRWfn&(gVX4tVGHhE}CH`u_VNo^+ z^Rz~=fewJp103yUD9%LQl(0kmG5$5d>!etABDPEAFp`}x!F{mVReriR z@|ya1ZFDRQlPH98WEjBX`nR! z%yJ8Zj5J+2^Yo^*y0r4m+B2VlCz3INWZIE!Si>9I5XS1d@Zmmj&xZwX{poK{aKS}( z6pO{qvjYQ6XX;VoSp-;$zqBJkCHfO- z*Lk}=hwG-15E1Ym46L`b^Ljcxae|13{GGQUv1#6@nhJn&5Tn8;5b8iZenEZTgUhfa z4+XcBVt?X20-=t_f;lPri4ic(W&d0ht!7VAelJ?blLjWrOI zPC+*GmZdVu(N_ut8Gyh3bKPqNQ0^PJD}>c0)E@ozB(5nCabgYXG{|`CcH?d866A{n z1xW@yHmauf4*a8r4D0kXG=$U-WyPOOGexSs7f8zvw#K-EFxa%rM`B$M?>4*^v-Am# zy)%7X{wZ=Xa_>WtgC(_UzVwaIiv&5UE*<#CUOw@~udzew4Jjwls|U1}sethfgi@^Ywpwk`hXfC~|yAjxbOT@mT{! zzZWvxuiaVDE9}8Ie&Vp->-6#v^A{^7k*~`Optf`$3mGthMN9OiVFSU07foTtEswqw zVQ}lO#Z5(xZ1ODW_Lkt0ho#9k7W4sYSQhx$HjMv3*5Ng3KH|tZs6&AFZ7K>e^lBZr zz79IV`t`=1eW5!6 zB1!gQdLPD}f&ijvhfKi=FTa!GDxY0_`MgQy#m!ZFY&wCQzhgeW*$KT0&PN7ALxDlh zL+Ex*kkX~FeAB*=m`TTH`5uAk9$fYMn}JUIR)t}R{>}&2Awi}oT`D9aH88^s3(+g5 zJo}dkMhVRHeZE7SkM@7k>!8Bo%Lh?|FJuo3qrn+G0VkzsE8gCJ1_uUiYJ?a74U8Xx zFP_M!Mph?08aR5x4u1SK&d5!mCq(x#b>eaEw_51Fz0MccX{-fv*o9qz^A*Y#cQ&uZ zDsXc4K+1t`!&wY|d?l$DYzQazH~973$%lWV8biurw2U-Fj55$4mPlc3+667?qnKaoWKsLMOpTtOA;!2ju&|FA|mE7C3|AlE0s3UFaLOIw;uP)~6)k zQelX>)6{BVONK{M^vJa0+(gpvGp336*P5ZQvo!KHHd`#5bm#EU&nguiYd{tTfCoI z=ADjrT^zGXcVB~Jc`zO~Kiw`}^jlXrQ`(!oIM6P&Vn3sowG|PVVRrra|4hn8|3o}B#|0l_4I{QSv*M+ zBuFn)V^GlLJIW^2hh5Vec`#~o^@WzC1w*byThi^re=`qp;Z<`-?~es;KQLY9%Lo)a4uA)>NOxt9k+(CmCEC4v5*wbL6MT8!Ls((&FRUqFGnSVzo4tMe_`zJ+tdyMj zedK7~5KjB=gPd}VBW)f>S>_OE5JeIB?MwiNa^tWVzy>j=d9+gYtR9_>CyJye#-J;< zA!=WcGXI{5$D6l$@STyF3*%PndUb@C>}1+MwNg}7`6ZhXuR6bn+Gk!O?I-I;r?8zl zD-V?^bF)x!O9q(&llR^)%OKHAGFa|(vNB9M4mT_qd#)fuDMNmRUw6L=o?|dB4R+GI zH`9x>8@iNUa{OOPqSrw-#M()(4qXV7G#d@W6QyDhRMGHVDm1{YbhhkdOk2==Ao9a< zK`=G8FGI>PxdSS7A~fWQ=5J}j*mY!y*sP*sC~zT?b;D~>bYDd45-l>rkUP`$wRFL1 zX#L!{+!HA^e6tv z`t73Cv^$b*+r#?pf)RQJn!Uv9W^t_Ka499Wpo||U4cQC`(^ljKCn5ciuaysTpPNATboBx(erL0-4 zR1C7<(0B}wh2U5rO_?~pJ0QTU`C05qoaf|sv&1X=0?F*xQWOgd07wmBA;I-5wm;UVhSu1t}Q!uZN5 zxT&1XR71YW^1P%1D(I4dNJSrBuyzIZsC9>fFL(NgOp*D|#J8WxJtj%!d)f15nb)YM z@G#%o>1khE&WyL}=pqa+dRwZNtD^HmK2K%kYT#O~WGR-Y(8M$s;BU1ulm>~1OF=PM z%t3EDf%t-zk;<%bxYAr6hRrC~*~truZYugw%QCPH#UBi78j;@I6w!zaGQ7#}D^6e( zi#aVRp(Y4tj#_6J5P@*nCA_>-P`3R(oRWvImRAYRurcm1!Cjq@dW^98WA;@khfT8% z#~Zh%t4Tinli9q7VsDAR0HC^T7ZrfNIifjBBzx|mL4 z%vOF}8usc~sefs)qOfG@5c6FNN_3CES}kBrX&aRws&U|U$|$;pEJqjiJ>O|Jq^#VK zZ;Ae}?$r7xZ*{Yq{J^rQaI>v+tNs^4$TFnLpP)bokYoB@L7EJ%rdHw{=mb|3sbSEe z=KzQ}e1G)t{e<=GESWZmC+so(WMu`U4;E%&M)Y+{~ege4z|8@QjKZzuz4rm4nae8pebh$81K;{RG48 z;QN3!cu9$X)9FO{3A!Z&2^<)B!lz;i!puKpy%HduI-Fx#ZiL?^G zj|Q*@Q*CS$wURG3cby{WdiA&pWC!_5G~i{bhtc`se!+dMxYU6Bce-2JyqtI!U+%t^ zMt)>|d~=5HDN#*mgHBhj<<9HV+yol4=;G(OB0|JKkf14muM=Q&Vt*BEkgqhMqARuE@Uv_hnNxjW|NDZV^2~IfMtEkEk@TV@l8GcB@9$fSF6- zcK3!0lv7reE|Li%Z#&J9@?S0O4XBSYRgET6~6`VZcsP$8Eae&%c(MK+L>6 zG$0%bkd5Ij$D9)3i@erSt$svBsEjmvFK48kxJCrnhvjf5BeAbuW zo1BJJahJkG<|NU6Dx`lwJ)xW47(Ta?8LsH`(;$+R>tmXWu;h|&^Q?_UXK?((?blQ7 z*x{yLY2xIM8;-^a^^C+{-QWwcQTfHfi7zk8y=G(@+kqN*<>|%ebcBM?nLVw$wwi<1 zi|3N2i-P4AT;F~DmR#4U+=iA=Eo9eO+CYAcWZOj^NvO78KdhqK`vmUJ?bmb#3WiTm zm44yq*51K>I_@u1%Y%e+dAlc8ho$};q`Ty_PozomcS6)8mtkf!ionIOGaSO^3;f;) zemTZTO7R)AiptY(c-1}o$ZP<7n8Tk<`4qI%f?R#B{MjSXe3MYLtY5Ayls8R~e#E_Y zFcb(S2h1ax5Iex@S5ES|3T8+A)c9Z76;M>5ukv#}?idTlJb%;u^NrjperYIEZ;h~L z_i9l8LGQm(4Wkp9{+aL1vP);h;kr_UQIK~02{CjD%YuFX6wUqXV?I_DiA(16Nw7xK z>wMUkF*YVco_>KqsYKw52E6&$JMnQPxq6OVG3VxNiO3XNh>a7b12`71tIcQ#M&yiq`P z<28+B;Fg(sWVy2w!KsP1bwm)r2Nq{XXzun)g@fA{(;CY&adx7KmlZ{#Mn7Mx`fRK! zB3X0g--4g1@3kYcY=x;S-r0Nb{7H7YAjiZ2>wrZMGsKl!_QTS%~ zglE`1;I9YjRRQx~$)ukOGNFOb<`nX8)pk)riL_8+WZ=6~avC#o@Xu+DrZQ(y;GyMJ z?dHH#0E34(j?I9yH#y^(w%WzR3w9t>{oBM_Z|j}1KQ(jW)N<>0M?UilVzMa6ZJcmD z`!g4nxi}>qMU?5Ul=*gC#>);;yqw;2Z5nM~p9>c&&pMGc|>?& zn~>)q9%7ByKkNZHfk2p_FcA&>(>8(nwn-~Sp{yESv|h1zm#Q$xk((KB6s8dHUNpI$i3!2CH^2{;ypP%$AUzWS^I!2u`gbIe)Eld zF$O8I^xO)Il&Dt{GtC`Gxu}v9@aMCXX2$E-LSO%Zg)702g$0gAw0Uk`e}G*mO5RS+QMQ@5O3|1C5vM?Ut1gYKOpRHA zq~y_;ri#Q1#DVy0Wm?CZFt*xlxz=rIYHxtU3X6t>h+FpiLs*SRY{^bC8YTjUYfWFs z<#1#xDPm@B_U0I_fM4UZ-NlBjlSxCf=vE zgzUuvpG?0Gk)NH8=WBXx)9|BC3`-H~#w#?fh$rxe4gXK>_XSyD5r${ljnu*T1%_D+#0K!Zmzp&HXgE} zEHw<8_(~Ai_Rg3S%xdlkLSL2yB)=0`Bu<{ zzs_iUfe-?3-+Ob%N3LM@X4i%AclNq6cF}4aO7|h%0^e4JZHk5|&0$uqr}F{)^Kh}3 zR*Bas)m;(iplc-dLi}V!yExH$P$0Qpi!~23${@z~I#le9Xy-ILJGaTm7bdG@lep=p zb0|0Xgr%foBujzCfyE(Nv%^PQ_Iyr{ML{NFF!7LS=|z9(OXD?ZQH`W5DIA5$tz?qy ze|0E7G61H(#eKa1LGFT;JUCXBWPlzU>IbuwztYzuQ`IVL z0l9PLt#iX1E5s=|)7D>iIX@HroAbK80G$3w8vPj@jd5}&nw}!A5sGRE{RLlI7=RybFNju=G%i>GeWW-+#CvJnTjkLvBHM+IuSBh+~*!PHO7tdF2|9mgnrYBb3MnyM`ZZ2*_ zL4a5Q5J3h+60edVn!YMIE8naZaYXre;(lq>@V2;+t_=EitlDXuafKbeLo4CGg;V=& z^n(Ry|2;o{`=@X0pA)y9hu>Cn6Xi7~XX~z|fh0~O(rh*3ru%&&oF&SRDwMr>p=$tF zfAK@$wa2iw9Z1?W_;bezgtNdoJ?B<`Tg?qMZva7UkYlxWs>*j#Y#*Lr=9Wx?ya-aR zBVnEgypi508fkG;Kb|mlog;&L_{8}$|Hac51itmxHG&KNpMQnOzg_(ObMt0E%mWOt zDGCB+p^y7c{k-k7tZyb&b2gS7GOTNGzYwpkMWw5DnQ zZ*n^(>h_)VGd~j^UJoXy&-=*|&Z{KHLTLw}HC>udyZ6c$YjFdxT0Tl;;BYhKu9dW7#lG7VxuCh_TiJ8_n1)aCj0 z0K#^3KbDMe{Au_*Q^Fe$3pMtR>+;Mp+$P+z-NtLSrK#ha8&{t!r!NRaL9}PG!2??7 zK{Km2bV`gz@w7?8pnlKCEqnW?V%YcB({H|=bdK}>M6)3X46n-q2vx5$>~G=aEM}{s z678%CGo;Ica3t+Jo$D>N%*jAV>+sLg$_ggfWX%^O}h=~3mjwtH-qFakjmt>w{R^2M_Ug>4NS2w`vOPsqPbv=YHeJ1I+GNcaQ;gAJi3UlHlzz?7d&3|#tVnu9 z_J1Vx5Ek!=sTWMHEuz?*)VItZF(~ET_Aw*o8bJHWY~8j60F?9bQ0uM|Dqi#*4u;t> zh&Y#G%`Q0j$I#js@ulBZ?e}Bq%(-JG=TtA29Ukb6CeCKkfYN{i;y_d)!Qu&F?o8VC z=)adtY>SX@wa>|&+t@mDv!ZUQZ!hCo0@tCj{K%zGTOaKSN_GP0)EBKh@W;<|<@w$` z_wBIDTMk+)Tk}hE`lk%Xr=?=?ox#{0sru3&3#7yXX>=vy#vwh@xkI);#d!Q1QpC3E z>z%xKi&cR(t*hn&Wjncs98t!eXeD6rVwraR9{SSo{tp!f{2Ms{U+pG`_BRXqaNIs#rKKNEb5>HYrv*t8XS z;gZzbizwUe5Ku2nkEKbIbG-KIeh&$wrGwbCo}7k5g5U_sd6zx_f-M|M9<*{$1&rPx z@gBoH5_%^WbRO2{y)9qgo^>MRo|%l1ry}1!G!BFB`K@oh zD>pbf9$K*ZpWx$Ej8FFJ=2pZtEWzaF^2(TFseylgqR&(HN6*xqO6i~m?IKmjy1n?F zq^vJiE>)yv*>n6~8(gaOC{Y!qA|vU7GT9!Hzu)Dmnh+(|$tKDWJ_J$J4vh;10D(L{ z2pj+~SWV^I0AT@v2?QOY%D>j`mZ$f9c(hmtbW9m`U?P0|x4gZ zQHRc}E#h$n9WhAFyf4+aR+A&f+SRl~Q3LjSrQrm; zdP=1zYc*GFSso#;QoNN$NG{lm)+~G_Gj zA^n1=AhdH~Q~APPO$5mmacZ+rYfnqX1HWy) znXhrRTj!ygy2hrcrs1Ay2yyY}yq;@R%9lc`6#;|$e}DM?QL^n`;t6-ZCK-OMc79tg z7GW3R)-JlZw|YzL4Oyex(Am|VF7aw}u)*}h-mFczX~cQm&mYhKg)ttp_-Glb@cE-^ z0Lvj`0AF4pC0#6%3H0dx(N|7=DLCHpP}*MMV7x}n znQh#cYFouWRdxleC#HHEUscpZj6>Rqhn|aerXLLztra_3&*Sja)>6~jZ;7=|IM;}# zW!L4Br0&|G5@-~`fW<5$xVZD)uQCJ<3-U_Bxin$H(m*(qs*wDmYcIHbaQ3VC@on3~ z8+?=tkc`uNb`wn#9{K0hRx@;VVc?_qY<+z;HUTVu*`w)N>Wp*xS-`Uk?Qxjx`LL{s z*EQnb3FYivYXk!D)~aoZZjD<}Vvr%z2MQ2aLTygv(x}&-zL2YsYDihrxRu2?OeOgM z2!NnTxF(8R-hHq5BhuF5H7EbVB3S(FAk4~ZLgX^tTImJg-EkZzGf@qql)t3N76l1> z{AVrxHhJuK9^%1mr**iSFHMO!d~;SURBZe21HF%-JgZRVO|z;$4`xA;W%w+jNeA7A z;CogRY91?@*sr8#({UYpu39L)T9vV@+pnvc##^zRn3$7Azlt+s8v)UVRWa z%UTc@3kDeQv$NjEFU!-%0Khq_IKg5}_!EEv!ZIrf7H=;~2SSyC!2mDxid8#mG&NB5 z%vsZPJGJbwtZ+Ak4dgA!W>X*{R8{WH1j&?`AROf%k~Fmq)yKKjbv1oQmLjTEi3C_? z@3N(Bd77d)KGPPxjw}o0L%#_5mSCMRCI$R+l&Q@tRpmAs;T>7s;~Pp5Kb;Qp3Sjs86U6E| zYyxkrPx<798w~`u28(sV+1)@yKKetEd$`o!rF6@*EEUA>QU>VKudcg0OSjAiTqo5+ z4`|XF0ih+Y(QE%rhDyORSwNSb|)foR>gYXhiO2BX)0V#l%K6J>iS@H#PBELY0+%H zQf|zo^v;jlkF5^HKJI=<|LAxv=j1)6^49I?vO}Rub8de{9zRQ^1xH;9&HAi4P>Pee zdh>gAPtM!XF!5cNO4Bp+e_pMUy05!Z@2hO>9B-9ua>;M<-T7qaHeGjSnJKIj=D4oT zE4F}if`bThP+o~?O%RArSlOTyfK*BP4}tNfi$4Eo4M!*yX1boPOgSSwj^EvK9Ui$a zqGHKJE2q%}#L-?%9;2OLla&Jws@!h0tjm>=-B(WOTaRVQ{1A&;R2~@37USIlfCa(B z>}nC-27pEs)hh5Mxy2QyO9jz7#_W{;9UHfo`LLX+%ouzw0U zQ|@r&m<_Vy#cO`BX#HD$Y5zD1OtZ4b53YDA?hU^c{ChUqZRzeJ>_tKLqSdR*0K&QJ zQ37eO)i53r#E)X2TKQ#%xWiT-ehOG0z_L+GLjOVkDqb3W96=R1WE4Ge01Nj}#PhHM z;49qkCe`vq-4knT#<)ubCdP2FBq4V%d7cj<&#s;VQ+QdT7mr5PW*fN<;#Wkq&rR; zlZSW~XQz#?hHX8$e&tWPbVbZ2^rn8|ru#MRve^br1rvqzI;GmMpJPlvjGG%maI?p{ z%Lr0|6x5{QIMCWsSJ18Nr8^uE-@ybLweDy{010KMc>{K>Mc8C?-LIyG1Lj= zN4r!w=5$RliuptRrr~28 zIG6Oi{@QdfZ|0p+ zFwYzWRJL21ngaRhM|dobSkO!xdYCVvzu?6kAr)r0esq-3>;&Qxlc`M06IeEolBgv^ z^AkhWf|5t%CZBhhvma@9UvyCTMYc5aut(w_!W9&Qux_pdall0zmo-L)qQZ(aFEV{g ztuH4CLk(JZpC;AG&DV{gT$J_;7&p(z*!%~+>=`8BAKBT6Iros#(quzY0ju6K$~b87 zXxx}tkXvc|Q3<*_2J%!E^Z__aRIiCb-bJX?DLXp^{7Dlpze`gmM^kr$D8g%JL6U=k zQ17nC0++4Rwk|Ot4}b>*>CB0!byx76>k=(-_927U1qE;Jtk%RG*$LeX8rjh%jZ^l|;mrIv3TTwg39>E@<(Cze8FFZ2k zQ|@O#OHOlgn-*3z95>yCuZe_SVNfS_K=|C4k7Atw8~rGK&A=B1s?W)S zExU5G_X@mx7ok@kjb>%Fcu1HQ=iAFh`x<+S^()bke#)T~m;v^2>MF@o9p(AL2qEtl zSSK)!_gruwgNCwjkf-Z4{2sWpZ_M-bzZNT2i6tOap1=>N1_CW~zNFxdq>=YNteX`0 zzE6QM%a__JzkC9qq(l1dE9;DqrUa50mXY-fPZX*iEk%aDIC%6vAY(H5MQ3TjdKr7P6?;|repl4E=#3x^=a%}? z^PY@T@VsFw!h?_u2<%Y#0*4>HP$4l%I&>!bfM7j0`#dqoquaLx?hu&vOvT5%HB2|@ zUN{KVS$d{x=vKL)fK5OLtaoBq{-Wqhe@WH@-t>l6eiFRjZvg+hHfswgk$)8x>n7#T zW2RBNTi@igwG-mLQ)P@gGfcX5L|W*hdcJOOhfzp=N-;H^x14Fg0@~p=TgLiXLwdV) zf=wF6Qm#eNIfj$!(lK|^WL$=UMYDEnbGFi|yO=|0mf{2z z*9temtHX8kazc%Ut#Sa60v%v3p2r-vyGHIeuF?@%xiup_={IQ%sFl95HfkVH1FxI; z7NXV)&d>W%Qg-^bs;rxql+z99vD*g-%TM*&3^xO=mMjZ?{ru=yxk}l+(KA;rItNxR zI=qZ*+t7!!O?63ai%ciqFwEu(DGE_weQgZ~77t{J4-P?;V_f@#V!TXT$fqaU<&J4u zY{ut2b5`+wkBqw~ckjuy|MV7|&sgVdwqbesi;9(Z`)^Q|K`{ScYwTt7i3ym3b{o)B z@Q|9T3v1&h^7XOVBdt7t+fy?%Xu)7&LmjC1g&nlSmc#EY4VIL(5EYhqC~_@wRHGCL zvuk>KDQ3y-m&>(+rm5Ge((h06(ySgnbUh#BFZh-|XRCd#CH3GXIqgTDJGC(6zmb>R z1)c&cM+&K=x%ahMCSxG z1>_lLjCM5(q~=r2*qi>d6N+X_u8%i$rW4#Ym3@BUK_y}snFy1KPLRc#&B-}1Zswwg zDdgL>h&9$6k9F59LposdqgU-)yP$>-^3MeF#j@a}m5c_6gij;#`^zJKSUuV0Ox3Z# zR}CR6Po-4UAx`Y<_Xc_bcg+KgQ+a@c?glCvAbcK!EL(#sEiiy3;`kDAJZ{Woywo2U zzsM-LigK)ncg*{E5dPxJsMd0{%!HDYot&Q-NRy@bWmfLP>Y<_UKn@;~&)mnG$*Fav zl)p@SKv!H?20_%RJ)VBXT#zwW#~hJM-!gqsj%3&F16(kSvlq&@FfQm6%LyHu?(k3B zcoqlqxfeY2DbEs-&xJ>h95?5Yp;eN69&vi!+#@HO)bxz`+Qp*$Im+mQM49Cyf|Ahr zu>91>eATdhAPwY~>2=9d1yZjVRWydeSqbj&DO+W++%>un=sb^!!+6PndxOi!PDvf9 zlif~L`ulm-lW|;;P)-nl-As07yDjtj1FOkQn;uhg{z_tc(f0?ym5h z7w?j!N_^Mh3(|DC6JY{T56?OVHbj)xYUW~5;L)F^`6Hz~6!<0G=D&gqGatYwLly28 z#=R81C?r)jDq-U`2UZC44_VFoZfE`uq(@>xyjgrJ={28U8VQF-`mrJ%+!GB=&hFe% zMrZ54sjL0)@>(+`KuQa;1&_4iW=cJTNaL@|P-Lr&970?jKAf$*qgoiBN#3kO21z-d z+l;~b2qt~6=ZA-=ol>DTz|JvYYsX-r2mQ;tmqVD4ta}C)T zh2u8U!HSn#{5XZCQ7`=Yvdt_R;FvxP=sJoblW&bH_XvczarZ+5kOQ5NldjPHq2$Sg zc02H$+`koNLPN36YRG7*T6@n1{aY_;t7NWAr8pZ1AY~!Ql@(O;a@*7^d-?TC(SZ&R zvW#4iQYP_Y_kYo6e?^_&tgmD^{b|&E6e@m!OK$9ztecI!7(uE3Q%RP(u@w&#M_hfG zLiqUIm{aa^S{q`^;3wd&maZ62&~;Lah}|!x?ly)WTq$Bu!SZG26C7K8QP8K|5O;*KTnEGTZ=1M)adQpcs2?xa4LKNAE)#^d*hw@@ z;@f;FsrXd0wHPUrL4LbaAN%|6`FN>0Qmoo58Iyu`lLX5rbM5Zj_9o@JJPFA77~(J) zgJA-t;%-J4Axl<_7u;Bn@P|xr{3^x9OF>l-pkhfBO@;!xOaWC~j}wg!myORAKMW3Q z2JZ{Fu7Q>4XEB=5AQV@@e$G$Nm8d$PBk~~r5aYss9T;;I^9X=uwFW+Bnvm9vG%!c{ z;UF^0gGQb3eU3eGhVQZt)HV)m%NXJ@hKPu6Pad|lTN`pzwO4xpb$DFqNgw$1O_XQ{ z1c$pWQXpH~2XX1q=i%m&*cQ=3K~4t>Jc|=@M1jCSMZQ+#)2BM*XMTOb zCIe~V=lBS0b#U1vHIgs1rK}_Ob^ooaO4z^@im!=%w{OsRNyDRXuT^kD?jOsCM#)yHPxhKd)Ej_74%w5Pr^~9)wy$ z9$75u3;9ZSY;cFsv$?3YwIta@e`#Z-(_Yr6$E(KXmGZBGG*RFzEdN7>&@=X(TA_Dw3%w z#8VLz=7xj?d_&S$v*6fMW4U52M*uAkE07j^x1Q{@x#&R7nh#k$8Yj4R+j2!rxI?}( zNme-i?+jtTC4{y+G!;8@32`ssa}r^H@;5`R*r0ERks=(144y8Vz!wo15;|jh5GX~P zajGs4DxSJ~wjx#CXaC!VtHgJ}jw-{FQJkRobK>yZa*zZ?K{@X_;EXZ>g98w_m--bQ#o*{J8RluGB+BbI6sEvccw1Le=uV-`9Z8|*_I@l$UzH4=?^Yp;E zW;vMBT*CDHV%&kBN`@@ow*^xhGVz~cj0b`dGdBJye1kl)P3^M*OC}_R#W%I$X3YgR z)Irw%MoDn8tr*Z248%3?`ctFE_ku_(EFVV$^8FFah6}sR6}W^FxP*h$VjFLhhw|A+ zFQK4AXz1aY9t`e!=`Be0D%8t1dMCXyF#VaSgp`MaSUe2Rz&)IGE;3T^UWkH^W!*x? zc%Q(_-r{B8+t8;mK_E*60e`p-E zaaASg-h1v>KJsEn0(_7?Vh}fA;5r@uMk?$5+^)~)%fbuqoQ$VCP0+52RRb@+o^l<8 z`u}@Hec5Zq=w~W?GP7hs4*_rO0*%SxPeeq`PhLbzA|Z{VXxwIFp`d#+cAeJaq2ZMTC^jo5lF! zA0N%hMDArR_#XTjArXb2RQ?XF{Lye-!If^skr%>_lvAsZjTL& ztNtoz#|`j3uS)!-^K7a=;^yN~5N5iq%&iz46ezZ|LaU~(xOyklZ&iM8tvhaNZg9OV zy%H(Cjd(6$zVYaul`Gnv4f5m)B6I~de!woVVZJBO-(m73$B3Pt z+$X^Zc(V7y0>Tfl{ExVHt8qf_a0hP238mv!eG&IeYgLnRuw*jKtPrW&aqAGiLC0Av zX+Yd$MST4kU$T_i+hfkS0Dqxn<9Jnqx<{Y=jk$AMoWVlZj6FyplfR!U@}4X5kjWo# zIc}_J>gc;AXN9fH@gsjifU+?UJV^>NGCv$nssp=kA1voqBV+SXfFSCal`Kz4_6H}8 z@2Z$4Vc$@Xg>XLKmF}*dJfhJTZS!s3EcwArPWD;ulLFO5`YI&^@vzwT^qTyz z^(UoT+hoPrSJo3KPOeX`s8u_aF8LM>`nWPD}J&>yRa0cQlu z98_~D-5q9rl*gW!l5X36mm`BU*U`8I9?y}7#m+N>s5Ji9T0GYY#xe++{ov|J%!?x_ z+~BcRx2t;heEWjs4EKgkAKj_WSAb=1NN*k-`1Sc^rVtRccbI`%yv* z$n>C<>e+5%XF2DL)I@Z9m+{$TXBT}pdX1}uD>s4Hv8V|C(!=pz%Qbzr+H%I={YO6z zP2zJ`Q1`=2%x}!kmjXrh$pl+KxGRs}<@vh*k#m_cF?JJXlo)S3iY|Vblkw;6*-c0W zM0?HFmEw_~p>P-V9ENVfHXyVf&(!+rt~J%>8WJq%BP!bSr?Qa|JGSD#vT-W~T6;BM zk)(%Bb-4%c%?~#py1N~blbW^-ge&UQ!Y7rLCvjj&#bEd?(n+Rho7h_IRhn91q}sLk zAF{9#%c#JE(+2M_v8GS_XEvOt=Ed7G98S`onV2tBw%w5rmi}5TpUCd}A46y2&-5S1 z@m;pDv6;o(+gu~}Irq#QIWk9*RC7kDkR+*gxsRNM&`5@7MeJw3=8+mxZ8x$k+g-%|w9y#kWmUU(Q|qu@)TwTLvy?`#N6}K z-bWWXI9C;D`N75^i-pr#6SfXYpO7|1;;_JWHP262?zCJ1FrXgB3H7`DFg<=rEw+e| zwfK|^3?WHz8qgpw3ufrS<{x1Fo_^Lb4saxyar@IcwG^vj1>?DqcN&K?jAMzRNe-?LpK^UniLSD74)1g>oG|d$ z**bi&@6OfQu}qtL+gxNGK+e_3_t^l$d=P(?IF0|hAqhF&TdylhxvjfM`QKmI>|8mk zsx}L?S%-ORL>UocUEo+?Nm(%dGJ#Hjk2meQTIB<57ddAKRyD~2-{0x3mZk!8J?NFYxRYRvGv}7 zmZ~>CnVz^VW=#0tf3b5oz3~nAtC!o$WJ9~F#@jlaD#J>BqxnvD^#EgI_<}P%fkcxY z_SgCzuo3dna;aBDhq9u>tS^If+XOogReH-&+r0Os@W6seko;i^_e`?ryiKDJmV$;y zOW-*d7O8|GmX!N^9n^A)Do1BN?ZTstNoC{WHz~Jl%>HRXVuFBgdwy3hwZLk`qq&&F zByP$Vbk=IMlJX-!`IF-Cq@PKHd9Qe(oON`TRj5$$*lYM9OBY2R+~pVq1XkQ&;FZzA zLeapOc{?NSfGxbdmY2CbB;G{X8`3|&uDTfhJj80zDpQ2KmZ~Dz= zZZ1tm9M^hYPsn|A=md+f)!VY}l+EL10 z==S#GZ(6{2veBWsEecz$|G)}j#g;ct{JVtwPIV0$7|oofX55O(mMMK|nrYZ(A>&0C zDvt2nEGz|>edu5s?i<*sngZ5be=R)&b{O3#xWqrI5j|N1FK@L}J}zP<%;T)izrmO% z8SF}Iykl-stPf>^CaWuAI((mGSk}1ASFO*36_=n=xBXet4TEj{&>}ArwAC3a*N$PP z)CB|hN|+A-q}aNXsUR=R&nh#OumD)lF={#mnB`mj4zH_ElTBLT?%Hrwx;6?m->fTe zZ;4R!gbD_oTgSKS=hwac6_fOc z)%Ep+xGOhe=@0%FMlXI{5(sk_)k7E^rtVOJ+C z=36Z@C-PRI)Jk)9da1s*)uZt;hjQzavR7W8ytzH&Ra2+F$_@eMfWPJe)1Nw3kwr&` zJI8uqUZl48`p%&(4&2xG4-R~xt`yBwUM3I#zG^%?)P72UeNSS^)sE&wY=D)=_PXh* zu=0=1)Jf@(1X5lhp!kE{*ibS^b2}y5sG_$6`kQ%ewGVBj)U&eXW3KHj(5uvm>>BIA zaK+_^5)smO&DG9dxUOocks~f5Z-B+J+!vEP^m%;zra-FY@EAY~ZE3-{gzr{4pYI%w zS$4^C`AN*wo)qVpjd};xjbbfm9T=MugXyMg@3(H-65yW^bYt?xnhI_s-iG3OY{x#+ z9az92nw_F3#ak}j@wNhT#j52^6=(Nd+8WDTys(c@$2H) z$4dOO+ykE=H^H5#5Vqqw6SEGm8i1gdm=@@aokeVG9(RUik+lw#Z8OXo1!VJ8v%AjD z{V~&+&22@qS@z~FQ}V2L4kIV^M!d~ckXA7ik>wSdG;ZR`xad3M!f7xsG1FI__HqieVc+Zo%#&@XafFt zu}+dol_%hekm6#bqde9Q1f(A{sISAkX}qz)DpNvNIjdDUChKrKt+JcICUkBn1_%rU zc3ryEc=DdgL`#-u-tJeZ1rqCOT(;sUKm*586aoE%z#LB&rj47*WGP=_`OrZ|MOg-- z%V+?|*dUK_ug3bdy3sn=DAsh`-1yJ6b4xrHwk7)-U#8bATXDGqhb2Eds`l)=gEoR4 z6~!Kn*b=-8_2+(e&sIbSK+i*2`|KZ+d+P<(4Xn8_$E`yT3*X^ND@zqI-Lv+cmzD3H z8C9s#FBLF!d;;?WyRX#A6Ve;H*+s78FyODsg5tS?FW(=n>sNI%Dk$?N@t_`Yr@R$5 z1nf=XoZ)fJVrgwjw@56*rfW5*bSs=fL7%BMmfCiokcYw}TyOdd+avglIcpxF^* zj=@0vOwKh9k4h{^4jwL0KMC|k=q-g2djm0)d_Q*cn`~giYE%7h zSL(t8FX&OSZB zNAZ~m01MS-r!oqVSvso3}R}=$^+n5__LjSd!sgX zU^Xbno_iF{@rQFQ$y_r!Nr%j~E@G<_z&aF;4&`aPPc@0+t%KuqU_rVJwk8@hHH(VC zp6eQCt4;t=Ym`}*3N7uDx4%%o4p?9Td%W?~$<(q~pgqSB%3kl^rXU-5&tR1AbE72x zOe3p51nW|zb)h(~e#{56;v;O6^}FVKq3Tlo#~Xumpwjy2jU`)!ismz(KzUO)2}TqD z96JkCxi{)-$G*j3_IM(%7MB?`833`&`%tdESif!@1z=%Tn5tS-;u_^~%S01Gz&O}; zrV(T(;_O_XP+jNjB!doi+3QyTZDTV=f5VdaupI*sWYDv~b&fSDGwXoV{^C0a9jak_ z)N~VU2%__+b86HVbJfW}eKOk_4f= zi%{unRQRc4TNWspG%hVBC|}4mZcA11tVFK=RzUN#_{{N9F80|*x9zNJHU#mh67!0j z9dsc;p4m)a^1*M>m^GX5XwaIyJM6)|Ra{mwJ7%WuGVvNR{+et5;5U=JCFDaq(9S5& zu6NYV5q`64bZLmmF5X61y>;-eqSy%y^5?S;u0uKGtRw50o+K!Kl&v}nqCNzB4RD-_ zo?Y5Kx;>-DbZZCUFAJYt6A;caXoJQVv60zN5kHtV<%p)ZyKbSZqOmL5u|S*7$z(O9KW^Lo;aVG7c-$v@&Xoyv0KL5v0gP)egO%1>&dDs*5pqiH>C6Z z>Ji$fE>p{Pzr{mbnLtkl7?rAnp?hvY1LY)~A3nfe2dvULiPL6&zgF!)(r5t-`PB zrRAO2p9y1PT4jTO0M=3MaTPJ&c`d&tQ01JNWtg&Wh?YM7kO6J=^`=3&AXPiGyxE7a z)Bn>>c{<2h1duRo7Ab0PF^x zrQ||nvjbI+Mx%NFsQDR=Xd2PQ++!8ak#bPA9|@Q)pHF-IZ|bZ9z``n)b4z&#cILb~ z15`&kTe-!UKxr|F<)IDl=)GXR?+k9Q*S8dSpKf8<4LgEQ&PEIAWR+Eh)#KIhKn+tx=ZvA54zIvShL| zw1FL?%rK|}Y7KC4M1qiDDw1dSSRdF@yZz~@9Y3?TB^cT;9-ZBD8Tjbq`O4458oNML zT=s~ay9J$dh;#2M)B*hyAbS~mBCIn=rBG!N%;8b<1r?t_@7^Lb(^G;S2xB!($ZhtP zYHlhw%==eB`OB)NZve5J+Q_lg%fAN;IJhdR^6*S5(0?51U%xCQRZahe{o2)nhl4b6 zU}Glh%Ox%O_0F@nI7wS5IyOUvm$@xgDs?@pxB`;O&njBajBbS3kRjp_G{={jrIHOk znp)$~#j)s`L7{iET$ z9~D+tkjp3h7d%TZ+dg^-y;q`N$#gFx?;5HiDhIOzb}H<=TjT$Gw&FPUa<>sOC{Q8} z4rpTsD2ic75%X}&%j#Md84fZdbB(h((d4)nhcnKQ;|lRv!9~x4*E5MqaU?R-)D-6B z$@WvM^zp$@D1 zKkExJ8zBHaG8X>zQmR!b{9C)2z5ywhF#r*-@owk0#GR zwoYaDS3;p;MCHKt8^dkO9w&~y>H2VaSB3c3Htm@Z>?y2lhKBFus*7IZ$9~m48LpL8 zXajmvILfA6H_vGKihbzDzK%?UeCiY`7N}fmCZB%~5z9wcj3aO?goK|J3qsjXTfleO zAOv~MAjK7a*cC3qE&Su@FSz|@m!R2aK;r08JRK}N1BI!?ue)?-ogr+x8Locq;Y$E6 zn~{=ADngYY&Iy{0eUhbM_z3>{>XqKd2o-9>x@b1W9fkKS!>{_eNpI2S#td~uNSbd} zC7voaboI$IOXgMHKco7bTTB@eKyajcVT<^-u&uc4Q;2e;g>HeoYbNrJ+djC@>a&cz z`^I!p?^C7gxk|>K4^qSLWaf#x#52w1e_y!e_kzL)C~A?{q*>b5e=WnQJ++p)^Qo&V zem#$e@m$kY3W)1w7kWB&bv=@JF-!T}WG(qSWMzxC<-jC`li7n-F*n_RnuX7>=#4d0 zD|QhbMVgs}b!{)2b@{qSd}5UG>VZqO1~r|O7(rZFHMA>~y?bo#(iY8-W%8x>(JtbF zHledlI)F;Ui-LGE&JWwzbXn_EEK7`rcgy%q(sKg?PK1=%z4y@ymatmTioxRfB5*)> z@ekt8{SVju!VfO|2-&MYRn86o5#B5974w*&0^POCpc38q9h?Byw^E$QBLbcCJ8gRa zyGnEutc#@aknktY;*+Do-WcLKjSX{w*G(iuRe$T(oWc?YFPzE#)-5mgOq7vNe-PjX zAKXI`_`D%tNi-RM{KWC0u_D;9x5xSg6kJ089v|h9(6UtUo-9@zvRtnyPG0KI-gM=5 zzC7}p3}i-HGkrA&jaw0wsHi5q6iOT5*9A1`P{?Zp%Y|I#2U6cL>F=j4m<@Wrq4l{_ zGkAxqyU7sq9L07KeJM9~kF{1o)EHSgG}rCtvvA7@dwP+N-7cJr8Cp3c=17hAOT>}8 zw~Qa0XwnhoWHgB?W2(#bK{5tYjP7&9wEQIcqT&B&pb#P zls%)d3R4%~7Qp?tL`>axa{ zjLL1VJn){QgkR4lb}iPIPloItga0bevpRh~M{N4>@V*o6c|wHiJ$lG{(+d8}_g{5; zqhv4XWkfO3WUJ3Jj2i$#%99d2RfagV{UZg#X`>w^wt0Zn0z3sCTapdU{@Z$HBT`oW z>dLC0{CVwXX4NkoghKFc>`gb_``AdBO_s<^2JuYtkEE7FL8XI!(hlJRRR`R?O!*2BDX>whtJW7@reyR4YzAcApa2MmhViER zeh(t;Ja1i?fuz{X3KV?C>YAdoX%hii`ivywCznawtyL^p>VQ#m?*QY7#Te51xYE#A zp1U!=hOuVeqm-IyJXQbn171OyxFvI&*Q}bNtxenWe^DthAi<}-`|rQL3r)c@YvA#s zt-x~>FqSkRm8}RWhqI)F6Clm(w(Qpx%bI6+eAHeuRikQw`Z~Ga`J8`tq)+{pzp+w= zQ>#)$Gz(Nl?v@O9gXxKU@T*FSk0C`(<^c+v=LH`{cc}TYKH#yxFP_jQqQ!waFc#RK zH>o?vlAl>}u4;6VjYpJZOX>9&XIC_e^3fG$hf!Rr(wL;7qB+w)~9K#h)sZkrw^Dh=%?gCzq| z0RQ|mmTZiXh=O=wnyp8#gK5RGHQmubB{C}j!+hte@}nt(C)Oig(cj@tjNmsV((sDX zWxl4o%+^CZiHQ+}3_?R};Sf~PimT-(=2UD4p(@MDP~#^(go*}L#fhjY=lC35IJbJf z+MVdLiaq8Nsm2>{GiLfDb`21fIumH>0Sz2A2g3xn_7ACZw_6`XVUJFG#k$^zb$fYt zq`qvL5pMXQ=jehcM>=|u)*oHpC7qK30$zgOrpsBZ&#Ipm0jg5w>@}hywkV@{m7aKr zL^lcxaVe#~D8=N9cGzN-gP)#a~RE-JJmYd~7R)FOHt7uSEbYtzHQ)PQ&A$28m z-%b(Mf zbOQD68RnhIpHn!to+StQX4*Dn4J)&iN8L%PY@g@tvxrhExWZK$G1HeSeuCKBnv5OU z^U?g=QKjg~@$Lpjdst9&-nL_9u;Xn4)N%*}x;LS3I)e#2G1aGFyaJS$K;Jvi9%_ZF zGB#>p`8Z0C^PD7BLg)9IKwq33wLc&qOM&3BnNs8xCgZ%HOgVSEW-Slu+=&NoqqysJ zn#o1AL=K8WJhXh|v*P%X3VuamHYA&#ansm?z@vsXQh!7=JS6wsRpY_TN7>pNSwtfo zP3=Gt+lZool4Q{|NUAFXP}?WsA`Ss=rV*FILhM3QG5n%@l2> zlQME5R za0jNXO?kf zqg!3P-e=PTJWJ+j$?X{hr%l;4PlWY5%-LRI8%8(s7Jh*gH(u2HT1mLKW{JkozmcXhFSh9g28ja zJ9*wbJ2tbWrOjb0&E_5>chmX;*v9OX{yDT%vQCFuZ*72D1vA#^E}FXLmZAY4oA#C& z8krPqm&xZtmtUT)qey4-VewGZD8+1Epgzz|3}Z?U0Z3h7Vi)-JLv@D->ez~IZ3>G} zktu!G??JH#lhN;7HjYTz>)se}V|B=x&IiZyq4@xl9itC(Bt;*WjW&S1w&ZESb$RfN zG9WJZ1r$+D32pNMA5ZcB4s1aM@S%_k@TfXa5~c0b>}jdpxU_JkbKy#%Oq?zdyT-z4 zvsKNhL@Zky%hnwYC-_haQ!F(IwPaRcras|p$X4LF!H?y|pZbqd_8*e;YA!4@VkTn` zItM9|8tawX(19jzK?XzxMf6ZYlAq>~Lggqyp5SHgk;IXvAm|!COgdsO>r3!OEW*qHHC2_B| zq2|1J3xDb~YH82AB(sOXJ@N+Em0GVMUGYI1o z_2RPh-q7F)6fGT=O#>%|{BE2{c^j7nUGX!FgY9j_T%~(KMTH2c??@-kMf42QinBKM z74t*#Z5cA_6ovJj2uqeSfT}UYQtx@?oXw*2hz0xEF)f!_u1-;LP_}C>E2fWiU}-jH z6MO*5reHy_eJ+|kz{7o^YJDyQ37JKXiiZgCNWDa;(DhqgA~a0LGZ04?pogN`9`eye z`<%vlpZdBN6uJ3t*NLjmaNF|AZHrGRKO>mb8=u%azD=%+m%Vd<64Umy63OfFta(}I zejs1xhJMd=F7xv;SK4v_frb{K-I1M4cs>hNHr84YYM4WT^4u{2k$bmqYvk`djMtwBVJHYaPEOL-P|hH{=-+)neX!+kq-2c4nJyi9f^%Ur(5ud z6c5#lm!lF)sYiakcaCLKM6=F5Vo60-=p01V>2lFg6Y8e2_4pv8QK2c))q?J7+W>al z=ynnht$99{?x^4~oBq4cO^VxTVLfr(RE_17E=BKiAp9n~9 zS%kVaqsDxr+cDXd_DbxcG6lp!fXC9Lc50u;UY?6c*zYVA7)Hs_PjcJd>?uboORJy0 znE6zXP4^FZVj$cvMDtF?aQ&u6F2yv59LQ8&rGZcT-+My~Ek?WH;Be+!%oPuXM+`d| z+D6%H-uq`mBcczp<$1o1@G^=_g4BL#nkL1?vrk}b3ARb@c1{M{M1d!)KU1Q*ohhHk zle#C9x}E8V{G-5D8{Jm)ZmaaqR&*m9?q{noBdgTUV=^?m4OhF)>#uJgI)CrFeV41< z=;xVDSBFtohYhgf+98K7u;m6=I|O8uz%hhSm8O7bsvxJ(?OjRZvzm)eIxW>Yd*o6_ z73JStT%xo<#oPT9rFNlnq#O8)Z05Oq*mAZ`e0AoRhQl4{V+TE#XqI@lvVPYUl^b=k zP01Q*WgbgaV~urVjWzB=NwukAu+bvY?z`hT3k!&Cn#;=MLF)-uU~-WaE*ERpVFZGS`2vZv4yTY~D7qZ{twf zx@TU29jCe-*FHP0a473w=M`6nug&#QXhAJz|Z5a5_p)bVDh0@NB*^5 zeUxey?J%7+r9^^)8B1B#c|r;fWC4Z(QQs$9P@ag>8ND89n593kKcqN*eN>UhnH)dH7wyLU^KjWM#)E!{q*2MtR z6Hy9{i_R6o`?)4LLbI3OEMAT$s{OUlKqP4>B~NH13 zUB&m_XdgER>a{t~bUTWSfZw~FXdF_Yt3|vJ59h{w5#Z-tR2VJ>uqs0C_Bou-<9Ij6 zV$XM*NhYr;sMt21?i@0qRc?SOvR<;EGb^#s+h5N%hC}l@p z{JgpEZ2!wwt7^ZFO}<^F;IBt0B#}*%ZMd$sWb5(m$y!@GXg7`A?yCd*#NV8gJDj3A zbdRq&&R^I21eSb{RXj*LA7q$H)#-VU=WaF1XX_cVHOqio)&awA(N(?hOS_~EHnlI* zEPi-9N`D!6;qtEBDgLhoz+N?E-@UTRWVfZ;9`(UJR}|^2{7`n+4ux9Zue!chnLn)l zzB$g&8b@<6=bMKLZ-!p9aY$n-sDTJmpQ26&?(b949f&EtO|=L!QV$$f`+LiR;wqwc zTRC)7aH&lDZfA0;de&FxRHK*YjI1c#87B{E{i2Oh$lXjyLmYP4lJ08h zvrf@FG@iz>LDH-`Z)BmkuE*1M@{KmFJN}(c`)8M|rI!@*n4^9Cn^VQ@+`k;>^q(LE z1k}Ht|DEG#3f6}2Kl}K0VZY1SNOhw%wi$q<^FVN?I{Qw1Z*B|o!a@}MIpu@(;Xy~_ zVDEv!%VD`?LGIE|WN*x!wENLNZhZXW-94WT55(RHbNnuEFP2R`a`Z(1$+x|DMC;|$ z*qh{iW=(z1VM90fzldpB)zuBrXDX%mS6{cFcMDzDoi&p)&K$Dz+4y<=gjovbgP1w({xQ=zb%6 zx@FwgZfCqH=x_HZ>S6A|j{HyEk~44gKUdpPVG`zpGlO0DT7YM;2|gc5^B`>o>rO)J zh3f;sqm*^oV=a3d){D6m((#f{Oc^a(x!;t4F6L|Uw*7c3xviu9t;SdCPs-c#M0x{; z$}yL)QhPIVF*g|LP37Me-O}!3#y3!((@UM%F-NMzAj6jSKPiWp;_okFy3{T1QA}Np z(%CwO3WQ0ZYCiC5mr@mjsq~@&+@|ewuYuyj_uh2<{8GDZ8^E_&+cvijTJZ(BPC+vS zxF8h*@(XDaWI+Ls?6d~l2UqGo)YUxYq4`jEe}~hQtApt&;Bl~#p%C9i(i(^%@HG+- z3yDnN&b6P231%>U*}3tQ@hAQ}-G~+qXUZaavD;lv$$0Z$;3}%uSwT+0$%nkEnUgD~ zXlsWjM&uL{H&3lptZ=eRG)=d!@xm9pWW}Z%2bGV`dFQIc>Q1gm7V(0WKJ@Z>T~w}~ z)m&%j?R?cchZUOkR8A5TRnZT2lNS)33dj#5D)L}*ErS}}lK->wv1bSrXLASzy0wNKl?{P}*> z@8ZKVzt(i-kDq-@JNe7!b)M3V-Nv3A%q#it&kAdDILj4v6|U}uYL+oRYE#{??;1m5 zonOTX_fVR4S0eA!y7me<2J}Wc!JlxVKwHt|{rVB@UW}TXp|LXNhF6&eX71`#N%Wab z4Retn=^|kAYzS9bpJtVrVUkIy<0PMF(u7Hxl6CSx{>-xF~t29`dY2GJ+;ktY$^DhM?^;0 z%|cM`=MK87E|lc4A7cgq97M%)5m-f+J$q3hm;oF$8g0x+d&YiT(2V8fxR<-t|Msvv z)v0#0K9!5H&`681H>y28F20*t;cozJ%~7e9z*J|eKFwZKD|=d4uaR6-L03oKlA~*8 zuJ4CyCNTx`Ur9+p4%uo4o?XJ4hb{-?T7&8!7q*#7PjD#)PhOYPWd8)BLbiB0pAWkJ zkXQ(oARIsMO?8>cz{)h& z1l4?0{lf|1ynht5;j|-;#M}8tboByVHkb5(OrF-JgyCp=)EFT`6(j%rPnL*O`#U!b*Rv?NKNs;_@lk9sKc@E)Ue?mcH^^!TYb6e zG3KR1e}i zjNLagRB}SM`W)KBc6=3;*zn~7d3jb&K`57!3PL_iEG>>_>MgA|!F(%#DQRePtwsH) zwQ9Lz?(XJp1nnJg7s0AZlEapC1F7YlvzP6JO}|18m=WPDR|OE;=E@Qn-?ca$@Z(`k z^;exE8(3HA^ZI-&k8@B!_k-7y_is67W(M*k+g1Aaq7NERm4d0<~y&Y z{64((n3M&h-)|L*?K}LE`!UuhN-WuDnWKK67AaxU+sf#-;k%8@qtbNf`6@aGcE8z9 z(|&;6=4n1Y)=)>gB+|-J{SoO@B=iT97Wk^I)?4-*GAjOdNz)Q{V&eEej`C1Z2FiV& zDXopiE{Z6m(QCu$74I~^ljBeRHOo1{C4yAYoUKFt+1nQHWGAM&$Q;0nGwGJ)!F7vN z*}Z@aI+hL5tB@pu{d@2mB27tjCnKY1R+Bc1kmwLJ)+lgS@|@O`no83{@FAvD@tBXvJ&!_gjHlmFM%D;~BB29vg-PqU0enK*0aq@@VF`YAz zjA!XuXi2sLUnl!d=5%;>uI~{UlP~6xSZz@gcq9Ox+*60HtAN@KnV~jDI1j%Jdk}`& z_W^%JYGk_^rtA3!?c}*WS|t6@{$qdk#0DN-GU7pc|2M;0%om_s#yAAS)$E6C5cZa+ zS5K`DW;BXF9KQ~+d@w6F(co_V1!r#0UN0bs!PT>(pU!M#VLbfqfV3c72W|$pfVf1S z0AatzE`URQ&2C**uPoOmj&jjKLk#OmD&OIKp`rF|^>B+}Ni2+W&7^Bal|Cl&DFezc zT#`Wv+`Wr{&PN#vhM&vn=~CAFX_&F0QB8|70n(d+e=uj1&j}r6V}~9-j3A|mC;_`A`!+xS{o^`E9{Yei_ZiBMj+nPs5i zB5h~LmgB}ssJ9tVSKOS+7haarPyedp^d9jA*V?~P&y+{ba20CGtgh;?BcTS2c(_G^ z`F>bgXu6+#)IX&16U_4k6Y)tR&~JypVj+gR8{(|=uhH}LC;2OvY0nl9M)rzVfA1`o zR06gONDgx4MV$2c>5R-Lm9t2RQ1X6e0z%KvR;g^M-+1H=b5AI~H1G=GGBGw51u$eQ zXyLQokl`Ad^e|nh-mX#F7#9AeXj9IQ2p2eWSkRyk%1c(|LoKIndVv zJcE)-`l`86@YLYQP%xgu+h~;)j z3j3WU6PLBNry7WQ$;d4SIqWG zNY#3_D^XD7erO2aGaUfuY7bl6!kZzGnm_i3q$k z`8R-<2|y)?nCR04;879*u<}~C?JG2ah)(!=c;M@hk$No<5vzmL@B@7xhHLBIYUT`H z@ww=A5RCW==6H~{qlXmdAdw6y21SHri^5EaQ{6=E2yM%=!%i~LBP;P#-dssBG|&Wg z)KuAxCq-t0#XO!tb{jk+;tEl^BxXr7<*VlDS*3YA@C6YxsVg_?GVU`gxd$+Rfa+nx zY8}!Vb$sLOzI-YpEtrv4tz-8h0T#mF^&&y;xCqA8Cp1uGHfIrv=7dKg#JVZ*7Qm~S zkLu*fz7lE5_`?HCe#G-G zj|}GH;Xn0BGA4=~YM9S^NNN9IA2u>s6}T-nh? z`KmdoH6S5v6x1*#2RTGsyBeID-`^T;q!p(cXF#YbQckKv$nn%>BOnz9(lWD}0eCqv zRe-%RYa)^Jip-?fvSVWs!uoo5K?3C7y@!A><{wsIhKAkeBuaS}QsbK@rUa=ABF_3v zn+GD^o<))|I^X1FDRpYX@M-|M8j>KM3IAd+_BDlcj9&6(P=KO6MYi!^`FOwO>z!=M zt=zyZ*IVA^^WjX9W@-sO9}JBE1Tafd_kIHVx~J}ClJ;M76n00eM2z%ZhHPg#IL_6( z6E(*I9Zxhl+IMW74SZJ8o@PCQcKBj=gQ{!@#E@AEcoOiG`yD;TFJB zJWC{$AUi2Cl1tso0MaE=5YFlk)~WTdB&9Y+K!Cyz;~i<(nI36RC6~8tcw{n9uPO2( z6R?f>k$kOli$a7gi>Fskk#1zl)Qi0D@TDs#(iJ>1i-|9agfbXVc2+9ej3W%xFUJfu z><^$=l0f~AR{|W~mBJn-`DM&O0D4mKJeW0J#dg-INvPcAA{RiRuk@rvg~JP0R1s@R zPP0-=9cnoS!cBr)DiiE8t2s&_v`MSKZI?D>>ZDV(2Q3JoEC;Yh*b7s?g*Lo?sku?9 z#i<>HEdhu!072m!vVnpi2FRp{0#k@^r#jUKb!w9HzdapWojFvENl?&f_YD7Tb@#f} z1VOStr>3inDc#f$}-Nt37s-&XodDrk*MN=ef_{A3hug z44wkxLX_gn2wr%Ht6BQfLsHxEtP;$3Zu@X!fRlX^Ven|=L8h$xEvdacrAA%C+K0;^ z0p?GsLX-ea24FH1DA@!;K1+cj0*r#j=ZM(NaDh9|1Q!4J4?w*y95aXi9p*OIWv&T6 zMtp%z&@RR68xqWyHOT=oHDWDIKoPH@f0F9f~+-Q+b zJqthPwzZ7Fz|Gfoe0);!&vXR z89Mygs$khuV5FW8M6h|%%M9okPgI>1ym(wRov)C;qEb$X;Sg|0K}f|*P~j1Y;N+P*qiK%u_-7J^ zYV><^wmDvSBw3ib3U)d7URmd+u<`bRQ$K|D)}$1xgYVw!ka%a^nCL4+qid{o{%6mV zYaVXq)nS-zdcxN#wgbHIH&skoKI3U7!`l{Jai#l+Qb-hTU9$rJA6p39V4%J+khgg& z8bSz8YkyFir{c>f%+s#9dSS&NC2$LDHv1Nz&(_WtCxn z{KJ)s9mW4y_(fBszA(|jKy+pW7+SY=C@J+;z0wBE>&p>T08^oQRtYnwR2ZV%jKjeR z1T3ShCvO+jmAzaaV$A>t%$IGvZ%%6RNP0pkdm87SJC{Vq?_%scQEu^Ur%VXHj>DEB zm(U(sLyVcAo?H-_CwESI?~5cOF+mk~FjNdw8-3yNW2Bga-1e}*YQb7{iYJ{flEtm$ zVs9L=KXIgq4=>}x8yUn*D?%9_J|j!d7l=Dpj1GZ(hos)bLRUA)V&%gkDxr#VW`m98 zCLvPW={caonY|oEKQvb-TJvsbCgR-AlRq@MP1ny;x=E#sUCd^sqmesAS@z*u#4&X! z3>%DPsV*(34FA->SEuxrBCiN+R}!EO@DvRpAr%5?1tKn+fMc>`<9}*m7^T5nkntau zcB5NT{fO8$l7O@c~?fSMG4TJ>qM9=ky>drIwT{3%1!H+`g#p?h8H)|ItV%?cSdMY>9K zH7hNIla|Y!fJX5ZG7VJ&v>sj3*BG4D7-wNDDV|Bi&|vI!OVT6y~?g} zpBaB|$34|6C;L;D2RiN}e>U0i?XR8)cyQ*AW+T3lBl2;vjY68(#WQ7*EJb&L0{Th( zQ-bR4dG(-0NG>gN%S*J%H5Hyf-l0}h}@reZ!pTTIY?p5F0%21j%%X(gys*sF%z9PT$#quuN8lf_hY zBZv5Q8mULT-yS(-2XAAHawrdKcneuo3BLnWu6sZZ;H4rcdsrgm3kHHDz|=E5yYdrj zxad>?&OCgwz+Qp=M&}YsNyLNnNQDIh;0ISq;v7UefY6&p-w)f7rDO!_uom_iZ! zvivM4ap;%&%6C>&{B@Bp|%uJEaQHf&7MiG?KTolvllpJO?;j=4*aAyVQ zRU?)Rnc2aa)f_m5Wl#pJPToA&;9mCNjUMIPQp}Oq2KMa*&92L9pZ`%(KwERDbBYRg zwk`*kW}5Y9=sDdNy%B=)DYL4zvwG|fab511?eOyld&}%q&4Gw~Jn{t}rCrl-!cfgY zfEDnNv6tt!RIr>YM-}F-!qm%p?u@Wht)k7D#Frfe#MQH!seUgUa}*NZpe4}euD@RekKyu}`Agf7IMWB=;yEh`>C{>C zwE3vsY%jn;;+KXwv2Pg37kCFf?h20C@ipZmyr+ z>eopFU)zxvJm6nz=n`>s)ZI^Y`6xfcpPG@2(V>=+S*6f|AJ)ORnOP6@gs29%&PANi zTlY}oH$Ts2H?UZSoW^s{F*E(Ve@eP?C1OZtY=!zni_1?G5(D_f{m#W3-Cl-HX696c zR)av+!aAV)iE0t)+q1%8qq%s(u$ZMF)i)|1Xa_=GmSPo-?zOE8KoqCl)dB8GO>7ytA# z&De}anl!t$!%dp$0p}00eqv=!gVshNs=n(Y*90-VzbC=bY)oy-lT)G1i9VkF5VTW^ z4H!v~|Ati3ofP-vdlL2KCt=ShheS-sIVwuZRn=o7o=G_69Lyixpi%a8Hh1J0D;IR(5H zWDDFzJhQk>#WD0&4xuRa)}(V8?i=c?+}Sa=R!5dwHh8~p6LXiC5f{2Ayb2j}KCS%s z%Zg~|i@*zJSIefH4F?>iD^L6=cY&%fEA=j(+SHFV6{IRHHi!*vUyZ4cVWbFj{|?Xi zG72ci;BNhU#1^YHJ~X+Oofd|!3uvEl9+WC>P7>oj&>A%QXWaE!Yd-%i(y$G7H?8!A+Tjhw*XsBiL=TXo zK05kh$n9fYyHCV5ecNYPdP4A&dtJKH=b*;v_j?`p=*H|ziq`Fv(x*fW@fgQ~;*9UE z*CY3O24XU5(L{rQOQG&btEjUQuI@f>u;OV~HPQyyj?SR^RpVW57Ys_P{ZG+ZxHb9x zZ+zXr=+UDaMhXbBjT${dC3U2f3KF8Cj4`@Kqtqy!fI312MI9-n4n+k81QQW;SReF@ z?#J&hc&_KU&U3DF?)QDa?y6P$I{Y358pZC~1ybJ*0OLIn2M@+EdW);?Y?>4Wl$wRT z-S9PdlFyGe;Fmr4ccKmxg+MgC%#u^JBOmynYHzt z%SST0(RDlDI_?fRnF+BM5Hc;8!^JRz@(_qZZaczzyH(p+vcv?@qj>pgM_f@NGpkM< z6VcxTvlw`tbXtOhwrMdU@yMYKqr-s@d-q?vP$0tj4pOO0M3}77Q4AVbX@F+YP}K4| zdXlkWbv2N%gMLe+VZ|S_qwRmRaH~4HGifvR-T+8ZxH#HhpdsO%?}N(qsZ}6>P`Z?1 zdn+E$9`jYDf6@_W#RZ}h*-%|9P_=5V=rAA~cSkS`#8PYfX~#k0iD-4<2^ZV6YmsYy zhac_W%o^7^gvQ~fi_Z6$kBc{^fQkW*f1Tf;BQn&)n7aw^e{1sY{1Ke<|KNEtEld*$ zfeN_)g?73dCYsvV2W5y*1be1 zy72q{g%cMoj&qt~(ym8t=tu*Pi4c1@j9f zbuE~1Ok2shU0K<-1?3JQL4dsuvX2uH;Rd<}!>k;%D807dzu&0HAkf*f(D#VUw=<{Y z{1T3K**yVVDYYvAz~eTQXm8cTq`r@hodzKrj~Qgu@W{%)2=lFn-f>*~oRxj4V1v4~ zJ#Io;J>*?(ZRa_v_2ttqU$UM`dO=kcR&Y6X(=_m*r8g>DlLu`!@Y%9Ao?bKadG=v_ zy6Nxx96JNf8phrQtRR&>{Ip@}9AszrxDUWI(nAeW)++a>FdE6KZbH#CuI_u3d@P=+ zjn7*2pstB5=TAh4Ny|i}Gr-vD$AN#wUOc<--Y{kDvvXzwrRGkzw#M}t)tmp_wK?(C zNS4KmQ<&05Z>m!7tV7LYeDai#1U=r2qY(&-IV1?jgdu#rWlV?{tA2Jgj~Pi#P%Q_b zVKv9yg8}EWE%j)ss54(&rC5swVaG_~0bEC=Xc{wNL0#b^``SJ!Rj|tD>i&wRcwrx; zST?~`^u+P&B$3PK2NaDKlBT|OiH%Pk_WuupDW)%Po|Zt1xG>;`t8^S^Yc1W&M{bsz zEuea!y&oc~No^?i}cVBcKZ$CD!bNnx;U;Dnd zXbaHUn4aWXK+56l*T-hxtsuIs(=ZW=c%K421xtNKwSMWtODh*idtdqvrM7&3N#sDh zu1vsf@>4J;2oOAhBNMesR^DL=4!w4IlNuWztS_>0{gC|AioU?9tyY>s75~laVs56- z^58=`V1fG>q5GgJGWnSe_W5M0t*`|XMODW#aZb@w4p4i-sD5S`#}qFN%K}rrsvwB; z$rTCUgOHT_X={f6VbAxDmLSWojdQN|d1fJh6nLj5(V-i}UA@0T=EpzufveF4B~wbc zcn(R*NK~2}(%`@_g=ui(AvuBkqs=4a7k@H7Wc~=e(%wpzdhHzRwTOp*Dd&oWaAz~$ z5*v)F`ahQMRzG$Q86|w~n6@};a8JH#c)nQc^xsW6*|+;PzAZT~cb z{(b$RkI_5bo9+`U(Hp%0G`B_jL(MoY=5%x$#AJ*|eXkXLiX{Zwu^}`p>|qD$XP=46 zmY4+%qT32NwdHm$*Yf!2k&KH6X2kc@)@C`-z^B-#L#qf6zOEY;*1U?;Co(E5W4YR~ z8vRKh_n$C}*)4ZIlWY-dunO*&$X=U2YBg_dGc0)vK-lvfS&;}gq{i2?GEU9eJFTJn zsYoF!r<#B`#ex*^Fr$2o$3a<46vlhxtoU`ng<;J%2hTaJAE+})`?BYp-CTtFo1hmF znhT?8c0B-bDr`sFHGu|eWkw%y)@YkUA69i$DTjw~p$S~X;oO7?tX~rzY_SSHE+9Gc zB|Yh~N^crU7FDl!|8Uu!S!e0J2F012QYySa|3E$E(Hl)^=rEis-e5SzYal1f4gY3SGa zwl}!QY97K9fcD!K8(l3;?McW5X!^;TrnaQoC6&F0=Y0Ynd!AeNYaut;(R4F8?@X0k z`kb~nAG+tK*c~i}Nr32{I1XAz77m2a!U_iI3H9dk#vLdd7RZhUQ>i*aP0W)0A?C%0 z_RVLV$%S$Tpk7?ap;f2{AvQh=oXSR>z+!S&!9G0Ek9g5dtk|zau>^tpp5J0d{<8CH zRa12a*X|!Uf1vn$w3#WwYbHO|4k&~O`PB=Lt-Eu*EaCA+kD29c7*xNLes1%U>DLeEB(Lv# zUSmpAlMTG7eKs6;qu=BX9_@fF2d792Y2r*?`9xZI`Y^h(ir7j*JMi2Z>MD*TCk9nl z=uKrc3?4Z|aPJPNB+?8T$&6>^;C%$xJFJ+PE24RI7w8N*eA%GmQnpzPWG_)^53=}4 zpsC9J6SS$~|6K=%A|cAMO`cd}^{QI3E@nU=_B6euf`#xV#+z|5ejy5rGxK>02@~{D_0(^Rl~j zmpq`?FF@D0HfoCXUItUj0@-k3kDL%^Sn%Vk$Qm7ajOIxp*VXEDIZf;2APur04Lk7$ z5}TUUQsJ(vdn)6XSnw*;_#-5kSBT#=UxFZ4eLI}7(D+p_L7;5J1vgQYl(b`w9F^X< zUR*eTdgZsQS)D;FDp_eyQ)q$g;ooAO0@wu>>J}S4z-vkgED>_U&f=TZ`H&ev;4($z z1r=4#LIJ>p|5>9aiM91KbafDl%dh#mEj^5f&$s2mr`X33=T8N=WTd!UOO=!Aw3CTz zv94*6pb3Fr+k#J)r=CMZIVbvkc*YtAAot-x#(Z!c1NvjMyl4TvXSZx3KY^hZJxGM= zvcRF#_UP{2e#5=Fsb3O?zC^C0}D(fD%vGA9za6GKU9agDOFvp zI#F1h=~KOv6T9}Y`owhg>wfTA0>bTwY_u-2oDX;9fz<)92RzKt%OcfuUpEtn8!&TF-i`)yYuKjL!R$y5D z3mhd6dA*o)zon{c7?-Tjv^Q~J!L%u43ime-5`aer;?Oq}!+8IRZS;qgC&CeXK}jsm z@Q7nDb*x!j0)p8mBnwD0dzaNPT!X4bXmWjdOS=sEkEx? zTZ`OyUuu}9@`h~cTL4)BD9Q%+CwA|@nDF5j+C^Okb3LDte(XeTTk3Gp5aGJw2=wQ? zVv4g~?-(TFe-$^zj+hq|hOI))K0*#C+QNmyai=R(7< z7YFRQ;4E}B9 z@)EOMfCQmAjk~N`{OF}Fv}`@9j*E`4Vq>mD)XvDLzA@3N*A@xNOHJwh_Wa!YOTB3^ znYay^9yi&8z59Cpv`F!QG97XW&$ah)^+i6S$FP`JpYFKCAERL~_5KsDy4v2LF~{*B zUDkoP?Dm-+h(VyN$Mlucv+Xeom5|M=!i)FrZGlI8CUb0WlIWA}fwG|=3o`Y+nkd)o zOoq3otN+;Clo>j_>(DP4!W}v;{!TasGGbdwT!UG2#$~?L@+Lls1p$LT#S${ zBBUb&5mKjAN9}w@yV%S=I;xtGTQRP2hX;vL?IrJ&Y2B^^#^(7IpZofpeX2#ferwFj z0GRSa?EWX2t{gcD^sH-;FbH?fMN{c#);V;N%cHpNE|J)_^x+9BJ=gp4(Gx7V8ZnD2btvh(7|^k@ z;sex&wGg@r4WY_@cRx}%t9y(9t@;eJ$HQtL=#p75-^58OfZ0I4dMLIr<;7&m(zTR~ zijrAeF6MD^Cr|gv<5VE*6dT!*h*n!_iVT!37fd(KfJx%DpLLLzS+`7w)W~+D<-}3u zJITQ%%(>s_-c_oagQl`W-eOzoHH*x^qYr|#&BX;{kDZ^sN?3VW{OqLac*(qEd@bm> z=k;RB^TR!N1P5fZL3f>RyDC=fo@PM~+!rkr;gPR6=t=bMMS-K`ofGQkXtTKey;~~B*m^&WY6xy->#fi{B#|E>e1>Z>zJmk$FE@wxK zoTx~~Pj-qx+}M!NDV!V4OF2Y#3jd^nDqF%rG@^41xoF!^fN~&o`r=%78F_nt!#p#zZCMs6=Ml&c55)Z zIRJJ=l7UCGl*(RQ0r;^NrLn>d$|_8I75NrcfBLqqW} zDn3?yc_7n5Z$}y`10kQDK-5uDyWG^20a0^ z=k9`)7iGQHuqz*r@jpr!t;s8Y_vJzi0J`7spX^k{K5<1paYgreBR^3w<^n?!9(I)= z_8p5#!otI;h^ts3Jcoe1dIwCUBHUNW4Gv(%jF*FrFAYqecrHlZU6!;|nu&K6nPe|1 zX#Mw3ZT^zN{N!%<LHt&$JJ|1 z`vQPpyCVpBB!VonYq76rzw@DHBC=tk>(rLqqenScj_A7)t-$;6Fh7A<((3=*x!;aq;ZV!yGd!WnUz!dv#;}jc5(*aK|g5l_de`oM5@3SvR(Ef!8l0Q6v8y|icd0Ofs6X~sKRrkVQQ_TBL zf85^>GqMD(?3n_n%x0@e_@MJUdGuy$a2+pw3v`3xC?e<9U=_&dFs?E50!3`Seix1# zwY-ynl#DK}#g_}Af!}5pC3Fm;X9a87IZ`@i=MY;vZRY5CgLB;No2UD+_>&LcPB~n* z>E@_o*qJ;zto-r=sNZAe?RLFA|&;LZyrOAj=McM=}M5) z-1sj1>ROQrZ8mr^QU2N~Uq#pVg2hbqXkMe0B?yA>?F++itpcD2{%8Yh(?+H)7s>El zFSQl-Ue;<#Y31u8l7coyFtxYxM-Un;JOeJlbj_0QeG#WmJF#08NXu7smWyJ1jH>dG znHnv|`_h?pnY?e)T7&5(xmZy_c=(jgt!;RbQ7i9t^GMD52zq3f=+k33x*A?gxVQsH zXcluEnvZ2{uZjDJlEzpLOD*apnao6Rxv_JECu&c?Z3;qlV+V-9(|lj^9c~i+eH>#E zZ&Y-~@*RrFuXQ3T+_jNW5(oKHm!6RMCJzT()pR?mg8zv}?+@|aGP;{7Ax;qyet)d6 zRuFcf;H`R|TIc$m%)-DZnIg-$G1Yv)M~AL3QIabV;ve_1105R_HyXbSGSFo+{|H{9 zPwFKti70e)wJsQ`ZK*Ub{5?Ptr3Crt51dnd?@Ymzk7BgvC=pmPrsdt0p4WdinnQ{M znP9od?YsgVBem|SqMFqaf>9c%a>n>RExdP%v#zFe?k$3$boz(uho_p75LEQ}<31YOIa}B_Rg5SOWNKtsiMBNO+ zH^!);&ZA&znmtjDZ=k=G zq%{p*Y)DzStRWpU%*Z7d#iSal-*|j0po)<7tV8zga$opvub%D>9fzf7La)dX$)O&EHOULlboCj4Rh)>Vl1Q6Rxfr&yMC zvZpO_O(kM-!G3@X(S!`2^Jg=}wB9fuVn|4bfC^bY52Bf{tGOmJ)eMr54m%)G5{=BJ zN$6~dAN8;u%9l!z=qa@Gs3s)6vInd?8~n%;=Wuff_(`RZ^^y1<{@B7F0aLr`C`350 z-z;q|zl?cb>-ZUpnQ(Yka^wCndO(ixwle~)LDbB2V7-q~vz|J&u4&Z6#~%OIa>6nu z?!a`>?oRuftkdtAt@L&5gL|+#)lQl zR&S{c4IqqDKAc*hU*dC`P8 zFdm{>C5G8P}XLNoR?_D<`@FV5~3OG&crbHkhc}mQW}r! zXD<$mD@Nj~iCVfZ)Ap35Fx4mH9JQBBi|rySHQ|f`-}DjHqlU+>Zod7r8)fy@D0II@ zY*>0f2DRor{H~%AM8#eo2fDY97ibRVn_gHe^1-KwrRg}x&r)G~w^gyM^m5}v5Xr(c zXbJ8weAn}d`#9xOI@#x{VjTWbSXB2zB`N?UX(dN7Cq{^0$B&IJ(DGxd+AuMKg_fq% z{(tRiImi4*?t2aT?G#j<_N9`k%^TDCNhy~(ORnj1l?V?jD(>0d;8!?qnwGn(EAR^rjr9-tIilhK*@hVJ z8}2cfh#_{c@!wGsIsH-GG&OfQZSAIqgv*``Qkf}XP5#d|-0tyO$w@8=>CZ*BrvLG8 zP1~i^8%AktX`6qk5I!$)ADEO`_gFDZOhJ>P9Zz=^K5ZOhbe&~Ch33gUbEAQR8_ zWF*{HRVE0lR+tu$gvYEE`0&XSvbr(GqMeAaBItDjX}6SmOH6i>ZG32QBa<-E zo&oWb8xce%s$aYL)Z(hLC6izGUGalui}fD#*n{0?1X-oSia)9viu zqIHnXqM`k1b;@a7uW$`A3Z%YXOhke7_{|RD1Ff%h0Ig=&`I~|lH!b>_rzJbT27$_2 z`x5*}Hf9}mGnQuCa3V3spCVlV?k^~U7R57n1CW`M___tU%zCzS4AXHz+Ibz~%453p zA*=qE*If?Li)6mO-OsTiw3H8e&FnK=x;w;>0bd?$Y3r(&Z20&R>32Jyx|eXl-2$Vk zc*6AFlZx_e21NP{cyC>MW-pUgX<{7LdI;CXux|SYhB*itrMPW_pDJ!EWV;A6z>t2V z&Kc9ubRHfL3FKsZuQD_P!S?yN-ieHTg>@otZ|48zVXOMA>uoKQ3qL>Z)7-^DuoyaQ zC!4PEhixQRM1A+1WgjJCyN;ly2`nyICh>w{<7u7eKMYfx~| zyJ7Y}9g4U!vOxd|^1O*dJK8A*D9*|vOo9@UiwzenjS`#gp2=Qz%YJvdw@4@3kZVLC zgU=9P$0=~FRYrB#`S<}?4B}c_x~6J+hu>@7rD?MZZ;cu@uU-B8zCtyce`Cief%dn#$} zxz5~L&;CZA4tqftr-CDU?OgNwkMtLGPfeFcm^)J-L?MTHM-FDpcZP{uScN#iv-gc8 zIao5WzacKM<<@m9Rqyymw?ghBp2$3$o4Hd}F7JSjaL^%hz`wg%?dTA9Uh5ejOQx;* zN+2_nk|jlVoX(KaJk#WwVd}aAFLBJy#Lr1wd5~AYP+c$5oXS3t4i8!Y+jAjgI_}T; zDQURNTvi0_MIhCP|zxIwRE*BU8eC2oUd|PJ_*3Ax3a`N8D?e!c1~C#1Q%pePxFTAj~->*m1}KjO&&FQ zJJ{a$I^dArEa;CnYSBbAvXTGqJJepF zB+lJ?pK!S}j9AB`{MMf{CxZQ>z-3iU`98XO2nLUJn=lDhkbp! zpd(x{E;yylPExmN2X0r<(e29ID_|H9z-Bb&{)G$OWZ2QC&vc`_NWs=GZ|}}1vNU3V z;Uf>f2?iPwcaeYK2WY!2KWQ_iyIcKW55kQ@G?*oYE@CEoD{|lPsR9JQ0D)b&$SP2L ztaYbi)I`JP#FGA?2RGBxfOi@Trvif8YP}c0;#a_w1?ICY#c)LKVUCG{oRR~7?1ir5 zlgB-o9O&Umu&AIhkLgHRQm+>_jy2Lv%?WdviTjNa$`oG+B?e4kH|^>pmR1r$ntBV6 zYqot;AyNbQ2WHq=khJZy;J16qKnI#_edQzZp7du1+*v~c__7}K06&MuL>_grLl%~8 z)k%L(XJoDdEePb#OLj4i*6D_RW}Z*3D#F6*#kH*H5YqL3kq*#0dIJ>zr?(*Js<;y& z7j+ikb#w%)pqBrrO)$~^hTJSEf6UQBu|m6c@{%_|f`-ed>f z^pFA4!R5TLzH-&dK5#OJuu7Ln1QI^t_Dvf$<{))~vzJZhMjf)tQrfCanP*rzClR^$ z$?TI6@Syx$58;4H9l_YTuP^k+oXUe6&6_W5(0WaZ;Gkl?9#04Xk!{8z?d4T&; z)x7EHhTQ1rK|VCt4>l2W4wY2jENAM>UPyaKI$1(4?;6>MgOKJ64=+3iuO1xNoUg$a zKDbVw`kRO3(x*$T;rXbvB>L3TkZNjcHSSi6!_3j3f_un@N1F3bs=4Rafq|1s;W4d7 zz2euo5C{IU5erPuf_SlWa6UICQp&GR=7g*=m3Q$iSYY8>hE}qv&h5q7U9LdZiiF+J zav@H8RY#8t2_!HRcEd>lkh3~@nfdTDe0UoB=_R#+z2E}}dd>WNhn1Gcn||n2+JGxx z^f?O?Y3rNd)uH^qCDm5M9PPh(K^4CHV;_bqiUkg`H3q=WI`u z>90Iyz##1?uI@@A%pD7YThT?26^@@*m8}8b3PWT|3p|1gk*wVySpgC-AGV?x--E3s z7--rQcJyI8i1dyUbcDK+LqLx?E8C53k~xHs16If`-ZQ(Pb8A(JOvy5Qn055i-dRip zR%A}%I?|Guy{!+f4XH4of{eB)1_a2N^t=!{ghCv%_!J})IqX~bKz+GyCGxNx$nE!E zxGsAaq|FrY>i4l2^%mKC>X-qpG*~$Ff0L0nrD2iWoXk3C(QSl^)WK^NnnWS?d5T?B zdG@#*+3}&UCdMgH6kRoCG6`W?C|IdB-@^Vj2^i$I-gX^fE zb&zP?BA)BfuzW?^0c?6~B{Kj#e)mK3gCqZizQJ4R`9>Do?m9wNHN1ijFBT8C0S*)x zMV6GlDqd07P2c^?tcQSLla)62EP0c4F__!#C^HuD4<2b{cl>85it#Lq6YIf)>>bE{ z;ZD~3;bp2hSOMO+LeBBUKk-c**&3tmNqvHehQ;LXl4`*+`G8R27n-C===jsYy?55; zQ<2u)$P?kH2HJ7t03C@aL=!*V337ker5|TaHzdGht?M#zIrIu~g(vYXa*m2^)EnzL zX-$FR>x>@xr~}I*>%NR(69l((9in0mo@Ev+l!DLKJfx)i*1rGT$nUrkK0*-;UmAL;v7YV5 zVHQQu{4K4ogn1d}Jx^~u=D|63lv|)xD1N1`eD{@t2uuS39fJ5ee-ukxE>J90{q7YX zGv}Q&Yt0x}lsP~s)YQIxD?l6v?c*xZ5RKzY$N`~M;l$Ft{9dIST&5f@L9{N*h?A6< z-3zrvq3qOYfzZF!V@36 zrv>Te3iI-zyU`&->r;Qfwcapa?dYzc*MT;NfE|L}kbQpr&*3;pEQ_G6n#yqx2cTjJ^i2vG`f<$=e% z_*}Cc>b~Wh%4-5M?5%hf@2XkyDBF?PBBe3m38L4?!o&4mpaf)D5aaH5$ zk4G5!O7|3`H^4gE;corenRO5oR&~mQmlSq+5b=|IyLy(WfAa331q+nQD$Gcd4Mg6 zPc8EQdY9d6v>K}U55%cBV2;>bVhoeEoHOb0h{QJuc&3ik;~?*UK~;yBFHm&1>4M<(1C#ZEf!SJ>PEMadMrWw4O(?gh;DJ@w0n}gt>p!oo8Elr4Mqm z6rGFDn?>I-_`GJCot>QtKcq(FZ@mI#p^l}6aEZeYFQBnIm=`|7v#sXPKOro@usd9x zftCL?6LYQP?&;8Qq|GDnc>^;LntqF?~OmwAA$c^s6s{3$hEmDgAIDnsFfl=AneJSJ2jsGnzg zv3SWWVuHCC4l6$YG%6rlxXDhLC6nriX70P*mRcAR&1ctv6c-N@7LhF!!?Nhp2CzmNpEYY7S&zUfdAMF zWRgRKC@!!e3e4ixS>wq4DL&3Zk0_~w!Mpj4EV#t?B7-&@2ntt7{+h6H3mV2g`|FWH+L)@d3N51+BIdnBa#l$G+vj{@#`?dq6f-+ncY|(j zYk^id??ryMkW)LE`SE8tMWcA*HbQ0p-dkioXK{X z=`$^g2SwhKQ*3&t7=%=gg_vX`WE|Nvvy<)gJN4?s`DQjQpwSo+C}=$L4gfQahunAc;-FbJ?qB zd)Dp!gxW#Zr7C*GT@(v6zAbyaId%G{ePqL2u141^qx-Tm(r>v_7;{tUBn@4qk1ybN z#-D-y%|?-KaLJ8lZ?*d#KG&!7i7Fx5Ps`JWx$UiF2>t&zSNZ_^B+&&|u32$iO3!Sz zf~9DBOrE+;7)5KO^MEiJ{;^?5|BMj}u0-1MmOB9nr|_hv$Q}eC$ce=l@|~_hENePX~m(_~hvXKi9D_%R6`-j6d=7`n4S4 zXHh3PZ-ruq+`hSYBD>0oLFv1OP=tmJ=u~N{+gjJ>o!yS;)nFI;o14FA+KJt4vD7cg z&81^%_LuoghbBA=QOpx%v7roNZF!teJWlj9-{VF#cSa;a?%B6z#%|h0nuf7b4FT#3 z)>~yh#cEEo+yn3MQZ=QH2;AvSCjxftex`YM*x^ApqZ2;WG>E!v1Km++mJJrSEda}4 z5pZWbLyJ|mJKtewrB+)0IQ!Vj?4yLjYi(9_^*5Ct-$$Z*sc?60m{@2cL$)_bEDhI& zdya5X-mKzfN_nCVFOZR1R0dI%2Xc!6LocOSXl?`0Ni;`QEt3NB_Jpr6e3uiQ`@~@| zzXJ1cXI}mrmmErP!3pVWFQave16x`ot)Kxp5|Z;$9-n55+68YAH)NSx8tF8?F;>%=OsSr9Lw70V8XioEf3y$!Ts&lnyzkrP(gdOS3!(X1fpCEiwoH`QS;)fHTG+Ik7XUQW`Ka)61`W&do)$ z81rK00)VX2D#$0szwL$~TdXQt+bn-H7#j~Ws|xGYd(S1NWFMA7jrnOq9F@(*i!u|) zjh8Cc;y+w0@cN;b=QJmJGDb6U7w;;4&u!dZSp2gr*!I#5h{ZZ-m`y#E8VME`e2%>! z$aPB}k(C;xI2i`rFE-jkiapThWpQHp-Jv}!kvCu5fpRk44G+Zv1SFIrO$yyV9$`UX z5ZM=8^{jxMY6|Bi-4I&Bhmdm&aV{<30PIm@3nq->!jPVu-kTa3FI>0~(~9N5DXTzu zI#28_AExUV2A9vLdnqS|L5JF*Q447KyWCvIwUcqOJM&MOC5KJfq=v|JFn+euF&L5E zXwuMPv@JKb`IaDFLV>XQz+GRqJ@I$t!+V=-gCm~)Vh<1YdPesGOOFn=MB^MA@`J0R zR~3@s7p|thN|0hv=O6s@@@W7r3b}9AOvrcGP6JZnx%<3()fKUbDn}|<#k>VgUEa?4 ztpBQ1@z3~0^XXbQ-BrTVmMVi_aEz%EEKQ>hdlK~X$f40omvz^`vOM~gtP>1J;2K0W zkq)E0Y0ZqJLER|zT}4k)yeT%E|3?CebtvQ6}S=g2Yl1^y3vM7h+Kw_d9P zm6Ci%ZMsLKvexV4ZH7?Nf8QH)_Q>718IUgm?61-Po_155ZMAlDmama6hs_Qc)3PNw z8Op1_N_1X0F{mS$xe|EEth{gJPx^#UI!NNo_yNn{MRI znJ1_DB?CwZ$!-zooJUx?U!v*w3P_gde|c<*S>r={lHwS=S#!LEh!zmV%z?OtEERu{ z2DX-Bo=wpOyM&6m2!i_~r6>u{-$l9mY%@MoIWZH)My`~rweNz+7VSM0v4!;Uum-=> zVeuf>uU5kn$}c8P4WG5n@-qzEA<9p6_)brernj1C+@)3~P&J*Qw(1(PRB)t$7`yNy z$B+(*p~F0gLQp>iLZK@j;vo&P=C5a2c^*h=$ojos3H7eUrvdxBy5fJs%_=&JJ4pvH zm!IrKGCR9bY1^+n-ad)_%t}ic+b8}1+fCK7%ULP^E_R-z^f=6eme&vQiClzrL*t~R zgLgr$H;7_PZ`rrQucH`m=E%%-1yuO1*Q)AR zwi#1eC@S1MP$LJuog^3BPbac-^}if2xWR+ntFFGE+!Il_2lyYx2;@bjvfnNLZDpa5k62*=4gT@|gK z;qq9@8LvKLkcQpwq8QaM5l-!eiY>(Y zb;^Dwx_CY2Ydz5Pl9CAZQKkMGFO;7F!oeDt^|EgE^3(?d(iKmIh< zCB2fE&p*j@;Z3|o*a8u84fJPp#MncPmKouy;XK%m>f^Z7>?<)24ZHvEGW+qv)w5#o z0UicN%E%#gOgrP!NwYyQ9XApZ`VFj4=WZe|PE4(2ARRkyt$Zrr=w0{du94W;T(Re6 zsq~Yi%z+}dKoI~*fl4;k-OVKq+w*zXQ1OVJYzayhb_amYzYouPT-7+4Z<0;&^LH!k4>!F#_dyO z<8kNzgXkUlx9UgMJlmPO3x*c*QD5zO2_0^62~y4pF?t<$S1e06>|-`I?XES9(mWC!0}yG*Ql^p>G)lBdH8NE!8J&75o%+I$Ymw(wT5&GNWL*A= z#ui^cs=)o~0SQmqG!)(dF25fhsOdV_PVQk(-&(&QsE}yy^TT?>hq3$dFh)OgE;XMeN6*bV?f@h1v3U$K@v(Pa5v;sS8su~kd zSr<6)BiVB(X?J1H105%o_$Croxa<77vv;jeM5nU7JTf0V%~s zeZIEbc|`^>Cj4T!{P>FSs$sFTVC6=Zt@IIEU1ZAaNOidG>*>mxnrE-0UwbTQXv@ze zn+GOuHue^)L0}1f(Q@!kV06YYp8+oPBy;BqXvmoi&l*m2Ly4-~m$OBEyECD{zS>?z z+CV|VhK5a_H;8}@KZ#tE27i^xo{+(P4SOFkGm$Vu{wkifWjX!aa(a_f;d&{0T|{bF zeBiq{mSiglRPrB|<0Z-OTH_XiB=}p?gi7sG5--yAIR@Wkbxi;0){oMZ{`c?eqOGYS z;oEZWHFY>asA%=A{4{EYz}Nv6aX0VZI@d@@=wO&@R+_O?? zhTP7$XF4(rGZ34NZM2z7Ujh=kLS3rNJtU624CHR}p<#+HX0%EPfu^?jI*> zV7C9hQ^&(unRpBSKZBU`pR-i6tTOxHP5!2e~))x5D5PD@vD= zsb7Q!8e^$HG~m6lr+T6KO^LieDYWj;mqG(O1x z9*`gHA@jW9;+pycx2+@8xCf`rI?|X}7ajhusE&V{kA4|Ey1F8DPuV{Q2-)5PMmWM1 zN#NfWG~p-`J1nwf0hHn~%mx5UsiDDH(kaB8;BAp5`d&$(t-_5k?Hl3hU22tCQq*N% zS$O2~*X0UQ^xkjLPd-Oqv(iXT^T8)3-FUE!G)jK^DwPIL4hnY>@NXa;m$G7kp!xDW za(eDpU9P2RnnMVq-(V<+kJ7t~7?;EpNX;n9=MggjZg#xEn}cBf{xKfHJVkJE6PjlC zrS~0@(%-_d>!gBB8YFY2`~JhFXE87TC!Pk8c(S?2U1wJLJtv%W_*;jp70LSkbLs8> z#AC8@q~Ai#HF^$^-~q#-XlAx?x{nkckYdB!yL}1GvDb$aYqEYLk~wvcASGc)Kf`o zAk-y2{bK$_v-Hbo$IFsDdj!uOL!7G50AT2V_Mz!A8;;8W(|bGTB%n+3SJxS<@L+TG z6i{V(B#i<;a>wsw|EH4k%Vp!!uODx?JyOaH$Roo4&5OA&8r@KiQuY137UT2 zc!>ab4g9+8@TY}{SmQlpg`wfp+hU}m-#WiVZ{NG~HKD+)&1hrAxnl*k@9sqXSG$Dv zJuBeP5Z9RDC*91`NwV(ixZ8(pdWqkyHJ(s-$e3Y~6u?EHL#QM@6l_I5awuDtXP
    -TBb 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 U*}$-enxy3Q8gyD^5CEtD0j1M-lK=n! literal 0 HcmV?d00001 diff --git a/docs/img/pinout-raspberry-pi.png b/docs/img/pinout-raspberry-pi.png new file mode 100644 index 0000000000000000000000000000000000000000..cc4429cf005547b2688990078c79a02d65cd0b1e GIT binary patch literal 185697 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

    cA#&Qyf8E3G5YC*=` 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 SXfEJl00K`}KbLh*2~7YE%C*M; literal 0 HcmV?d00001 diff --git a/docs/img/0x10.png b/docs/img/wireless/0x10.png similarity index 100% rename from docs/img/0x10.png rename to docs/img/wireless/0x10.png diff --git a/docs/img/0x11.png b/docs/img/wireless/0x11.png similarity index 100% rename from docs/img/0x11.png rename to docs/img/wireless/0x11.png diff --git a/docs/img/0x16.png b/docs/img/wireless/0x16.png similarity index 100% rename from docs/img/0x16.png rename to docs/img/wireless/0x16.png diff --git a/docs/img/0x17.png b/docs/img/wireless/0x17.png similarity index 100% rename from docs/img/0x17.png rename to docs/img/wireless/0x17.png diff --git a/docs/img/0x1d.png b/docs/img/wireless/0x1d.png similarity index 100% rename from docs/img/0x1d.png rename to docs/img/wireless/0x1d.png diff --git a/docs/img/0x1f.png b/docs/img/wireless/0x1f.png similarity index 100% rename from docs/img/0x1f.png rename to docs/img/wireless/0x1f.png diff --git a/docs/img/0x20.png b/docs/img/wireless/0x20.png similarity index 100% rename from docs/img/0x20.png rename to docs/img/wireless/0x20.png diff --git a/docs/img/0x21.png b/docs/img/wireless/0x21.png similarity index 100% rename from docs/img/0x21.png rename to docs/img/wireless/0x21.png diff --git a/docs/img/0x25.png b/docs/img/wireless/0x25.png similarity index 100% rename from docs/img/0x25.png rename to docs/img/wireless/0x25.png diff --git a/docs/img/0x26.png b/docs/img/wireless/0x26.png similarity index 100% rename from docs/img/0x26.png rename to docs/img/wireless/0x26.png diff --git a/docs/img/0x27.png b/docs/img/wireless/0x27.png similarity index 100% rename from docs/img/0x27.png rename to docs/img/wireless/0x27.png diff --git a/docs/img/0x30.png b/docs/img/wireless/0x30.png similarity index 100% rename from docs/img/0x30.png rename to docs/img/wireless/0x30.png diff --git a/docs/img/broadcast.png b/docs/img/wireless/broadcast.png similarity index 100% rename from docs/img/broadcast.png rename to docs/img/wireless/broadcast.png diff --git a/docs/img/first_nintendo_32.png b/docs/img/wireless/first_nintendo_32.png similarity index 100% rename from docs/img/first_nintendo_32.png rename to docs/img/wireless/first_nintendo_32.png diff --git a/docs/img/first_single_u32.png b/docs/img/wireless/first_single_u32.png similarity index 100% rename from docs/img/first_single_u32.png rename to docs/img/wireless/first_single_u32.png diff --git a/docs/img/full_initialisation.png b/docs/img/wireless/full_initialisation.png similarity index 100% rename from docs/img/full_initialisation.png rename to docs/img/wireless/full_initialisation.png diff --git a/docs/img/init.png b/docs/img/wireless/init.png similarity index 100% rename from docs/img/init.png rename to docs/img/wireless/init.png diff --git a/docs/img/logic2.png b/docs/img/wireless/logic2.png similarity index 100% rename from docs/img/logic2.png rename to docs/img/wireless/logic2.png diff --git a/docs/img/multiboot.jpg b/docs/img/wireless/multiboot.jpg similarity index 100% rename from docs/img/multiboot.jpg rename to docs/img/wireless/multiboot.jpg diff --git a/docs/img/wake-up.png b/docs/img/wireless/wake-up.png similarity index 100% rename from docs/img/wake-up.png rename to docs/img/wireless/wake-up.png diff --git a/docs/img/wirelessadapter.jpg b/docs/img/wireless/wirelessadapter.jpg similarity index 100% rename from docs/img/wirelessadapter.jpg rename to docs/img/wireless/wirelessadapter.jpg diff --git a/docs/wireless_adapter.md b/docs/wireless_adapter.md index b35ecd5..1283c9b 100644 --- a/docs/wireless_adapter.md +++ b/docs/wireless_adapter.md @@ -7,7 +7,7 @@ # The Wireless Adapter -[![The Game Boy Advance Wireless Adapter](img/wirelessadapter.jpg)](img/wirelessadapter.jpg) +[![The Game Boy Advance Wireless Adapter](img/wireless/wirelessadapter.jpg)](img/wireless/wirelessadapter.jpg) _The Game Boy Advance Wireless Adapter_ @@ -15,7 +15,7 @@ The wireless adapter is a piece of hardware that connects to the link cable port [![The multiboot rom from the wireless adapter showing a game title of AGB.RS and a -username of CORWIN](img/multiboot.jpg)](img/multiboot.jpg) +username of CORWIN](img/wireless/multiboot.jpg)](img/wireless/multiboot.jpg) _You can make this screen display any game_ @@ -47,7 +47,7 @@ Broadly speaking the GBA communicates with the wireless adapter using the Serial [![A logic analyser displaying an SPI trace from the GBA and wireless adapter -communications](img/init.png)](img/init.png) +communications](img/wireless/init.png)](img/wireless/init.png) _A logic analyser can be used to probe the link cable protocol between the GBA and a Wireless Adapter_ @@ -61,7 +61,7 @@ One thing to make note of is that when I have screenshots showing the logic anal ## Initialisation -[![The initialisation sequence captured using a logic analyser](img/full_initialisation.png)](img/full_initialisation.png) +[![The initialisation sequence captured using a logic analyser](img/wireless/full_initialisation.png)](img/wireless/full_initialisation.png) _The initialisation sequence captured using a logic analyser_ @@ -78,13 +78,13 @@ Next is the Nintendo Exchange. The GBA and the adapter exchange the word “NINTENDO” with each other in quite a strange way. [![GBA -sends `0x7FFF494E` and wireless adapter sends `0x00000000`.](img/first_single_u32.png)](img/first_single_u32.png) +sends `0x7FFF494E` and wireless adapter sends `0x00000000`.](img/wireless/first_single_u32.png)](img/wireless/first_single_u32.png) _GBA sends `0x7FFF494E` and wireless adapter sends `0x00000000`._ The GBA here sends `0x7FFF494E`, of this the relevant part is the `0x494E`. If we look up what the bytes `0x49, 0x4E` are you will find them to be the letters `NI`. As exchanges happen simultaneously, at this point the adapter doesn’t know what to respond with and so responds with all zeros. -[![GBA sends `0xFFFF494E` and wireless adapter sends `0x494EB6B1`.](img/first_nintendo_32.png)](img/first_nintendo_32.png) +[![GBA sends `0xFFFF494E` and wireless adapter sends `0x494EB6B1`.](img/wireless/first_nintendo_32.png)](img/wireless/first_nintendo_32.png) _GBA sends `0xFFFF494E` and wireless adapter sends `0x494EB6B1`._ @@ -157,7 +157,7 @@ Although note that due to the rules, the first few transfers may contain some ju ## Commands [![A command being sent by the GBA and acknowledged by the -adapter](img/0x17.png)](img/0x17.png) +adapter](img/wireless/0x17.png)](img/wireless/0x17.png) _A command being sent by the GBA and acknowledged by the adapter_ @@ -205,14 +205,14 @@ Whenever either side expects something to be sent from the other (as SPI is alwa #### Hello - `0x10` -[![Image without alt text or caption](img/0x10.png)](img/0x10.png) +[![Image without alt text or caption](img/wireless/0x10.png)](img/wireless/0x10.png) - Send length: 0, Response length: 0 - First thing to be called after finishing the initialisation sequence. #### Setup - `0x17` -[![Image without alt text or caption](img/0x17.png)](img/0x17.png) +[![Image without alt text or caption](img/wireless/0x17.png)](img/wireless/0x17.png) - Send length: 1, response length: 0 - Games set this. It seems to setup the adapter's configuration. @@ -234,14 +234,14 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### Broadcast - `0x16` -[![Image without alt text or caption](img/0x16.png)](img/0x16.png) +[![Image without alt text or caption](img/wireless/0x16.png)](img/wireless/0x16.png) - Send length: 6, response length: 0 - The data to be broadcast out to all adapters. Examples of use include the union room, broadcasting game name and username in download play, and the username in direct multiplayer in Pokémon. 💻 This is the first command used to start a server. The 6 parameters are the ASCII characters of the game and user name, plus some bytes indicating whether the server should appear in the Download Play list or not. Here's a byte by byte explanation: -[![Image without alt text or caption](img/broadcast.png)](img/broadcast.png) +[![Image without alt text or caption](img/wireless/broadcast.png)](img/wireless/broadcast.png) (if you read from right to left, it says `ICE CLIMBER` - `NINTENDO`) @@ -263,7 +263,7 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### BroadcastRead - `0x1c`, `0x1d` and `0x1e` -[![Image without alt text or caption](img/0x1d.png)](img/0x1d.png) +[![Image without alt text or caption](img/wireless/0x1d.png)](img/wireless/0x1d.png) - Send length: 0, response length: 7 \* number of broadcasts (maximum: 4) - All currently broadcasting devices are returned here along with a word of **metadata** (the metadata word first, then 6 words with broadcast data). @@ -297,14 +297,14 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### Connect - `0x1f` -[![Image without alt text or caption](img/0x1f.png)](img/0x1f.png) +[![Image without alt text or caption](img/wireless/0x1f.png)](img/wireless/0x1f.png) - Send length: 1, response length: 0 - Send the ID of the adapter you want to connect to from [BroadcastRead](#broadcastread---0x1c-0x1d-and-0x1e). #### IsFinishedConnect - `0x20` -[![Image without alt text or caption](img/0x20.png)](img/0x20.png) +[![Image without alt text or caption](img/wireless/0x20.png)](img/wireless/0x20.png) - Send length: 0, response length: 1 - Responds with a 16 bit ID as lower 16 bits if finished, otherwise responds with `0x01000000`. @@ -315,7 +315,7 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### FinishConnection - `0x21` -[![Image without alt text or caption](img/0x21.png)](img/0x21.png) +[![Image without alt text or caption](img/wireless/0x21.png)](img/wireless/0x21.png) - Send length: 0, response length: 1 - Called after [IsFinishedConnect](#isfinishedconnect---0x20), responds with the final device ID (which tends to be equal to the ID from the previous command), the `clientNumber` in bits 16 and 17, and if all went well, zeros in its remaining bits. @@ -371,7 +371,7 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### SendDataWait - `0x25` -[![Image without alt text or caption](img/0x25.png)](img/0x25.png) +[![Image without alt text or caption](img/wireless/0x25.png)](img/wireless/0x25.png) - Send length: N, response length: 0 - The same as [SendData](#senddata---0x24) but with the additional effect of [Wait](#wait---0x27) @@ -379,7 +379,7 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### ReceiveData - `0x26` -[![Image without alt text or caption](img/0x26.png)](img/0x26.png) +[![Image without alt text or caption](img/wireless/0x26.png)](img/wireless/0x26.png) - Send length: 0, response length: N - Responds with all the data from all adapters. No IDs are included, this is just what was sent concatenated together. @@ -402,14 +402,14 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### Wait - `0x27` -[![Image without alt text or caption](img/0x27.png)](img/0x27.png) +[![Image without alt text or caption](img/wireless/0x27.png)](img/wireless/0x27.png) - Send length: 0, response length: 0 - See [Waiting](#waiting) for more details on this. #### DisconnectClient - `0x30` -[![Image without alt text or caption](img/0x30.png)](img/0x30.png) +[![Image without alt text or caption](img/wireless/0x30.png)](img/wireless/0x30.png) - Send length 1, reponse length: 0 - This command disconnects clients. The argument is a bitmask of the client ID to disconnect. Sending `0x1` means "disconnect client number 0", sending `0x2` means "disconnect client number 1", and sending `0xF` would disconnect all the clients. After disconnecting a client, its ID won't appear on `AcceptConnection` calls and its `clientNumber` will be liberated, so other peers can connect. @@ -427,7 +427,7 @@ Both Pokemon games and the multiboot ROM that the adapter sends when no cartridg #### SignalLevel - `0x11` -[![Image without alt text or caption](img/0x11.png)](img/0x11.png) +[![Image without alt text or caption](img/wireless/0x11.png)](img/wireless/0x11.png) - Send length: 0, response length: 1 - This returns the signal level of the other adapters from `0` to `0xFF` (`0` means disconnected). @@ -497,7 +497,7 @@ If we analyze whether a command ID throws an 'invalid command' error (`0x996601e ## Waiting -[![Image without alt text or caption](img/wake-up.png)](img/wake-up.png) +[![Image without alt text or caption](img/wireless/wake-up.png)](img/wireless/wake-up.png) - After either [SendDataWait](#senddatawait---0x25) or [Wait](#wait---0x27), clock control switches to the wireless adapter. - Once the adapter has something to tell the GBA about, the _adapter_ sends a command to the GBA (usually `0x99660028`). @@ -680,7 +680,7 @@ After all ROM chunks are ACK'd, the last transfers are: Here's how SPI works on the GBA: -[![Image without alt text or caption](img/logic2.png)](img/logic2.png) +[![Image without alt text or caption](img/wireless/logic2.png)](img/wireless/logic2.png) # I know more! From 004a796cc37c98e172837f8226b2b80d9ac894eb Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 03:10:11 -0300 Subject: [PATCH 124/195] Adding LinkMobile to compile script, improving documentation --- README.md | 2 +- docs/mobile_adapter.md | 454 +++++++++++++++++++++++++++++++++++++++++ examples/compile.sh | 5 + lib/LinkMobile.hpp | 3 +- 4 files changed, 462 insertions(+), 2 deletions(-) create mode 100644 docs/mobile_adapter.md diff --git a/README.md b/README.md index 59c8d11..8ee40d1 100644 --- a/README.md +++ b/README.md @@ -449,7 +449,7 @@ Name | Return type | Description `shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. `call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED` (or `ACTIVE_SESSION` if the connection fails or ends). In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). `callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `PPP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). -`dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. +`dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). It also accepts a ASCII IPv4 address, converting it into a 4-byte address instead of querying the DNS server. The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. `openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. `closeConnection(connectionId, type, result)` | **bool** | Closes an active TCP/UDP (`type`) connection. The `result` is a pointer to a `LinkMobile::CloseConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was closed correctly, the `success` field will be `true`. `transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if a PPP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. If not, you can assume that the connection was closed. diff --git a/docs/mobile_adapter.md b/docs/mobile_adapter.md new file mode 100644 index 0000000..710d92d --- /dev/null +++ b/docs/mobile_adapter.md @@ -0,0 +1,454 @@ +🌎 From: https://shonumi.github.io/dandocs.html#magb 🌎 + +# Mobile Adapter GB + +- [General Hardware Information](#mobile-adapter-gb--general-hardware-information) +- [Compatible Games](#mobile-adapter-gb--compatible-games) +- [Protocol - Packet Format](#mobile-adapter-gb--protocol---packet-format) +- [Protocol - Flow of Communication](#mobile-adapter-gb--protocol---flow-of-communication) +- [Protocol - Commands](#mobile-adapter-gb--protocol---commands) +- [Configuration Data](#mobile-adapter-gb--protocol---configuration-data) + +## \[Mobile Adapter GB\] : General Hardware Information + +The Mobile Adapter GB was an accessory designed to allow the Game Boy Color, and later the Game Boy Advance, to connect online via cellular networks in Japan. Released on January 27, 2001, it supported a limited number of games before service was shutdown on December 14, 2002. Many of the compatible games supported features such on mail clients, downloadable bonus content, player-versus-player modes, and even online tournaments. It represented Nintendo's first official attempt at online gaming for its handhelds. + +* The Mobile Adapter is a small device that essentially allows a Japanese phone to connect to the Game Boy's link port +* Model number is CGB-005 +* Officially released with 3 different versions of the Mobile Adapter. Each featured distinct colors to work with different type of phones +* Each Mobile Adapter came packaged with a cartridge called the Mobile Trainer to help configure and setup the device +* Servers were formally hosted at gameboy.datacenter.ne.jp + +Below, the Mobile Adapter variants are explained in further detail: + +Blue -> Used to connect PDC phones. +Yellow -> Used to connect cdmaOne phones. +Red -> Used to connect DDI phones. +Green -> Would have been used to connect PHS phones, but this version was never released. + +## \[Mobile Adapter GB\] : Compatible Games + +There are currently 22 known games that are compatible with the Mobile Adapter: + +Game Boy Color : 6 Total + +* Game Boy Wars 3 +* Hello Kitty: Happy House +* Mobile Golf +* Mobile Trainer +* Net de Get Minigames @ 100 +* Pocket Monsters Crystal Version + +Game Boy Advance : 16 Total + +* All-Japan GT Championship +* Daisenryaku For Game Boy Advance +* Doraemon: Midori no Wakusei Doki Doki Daikyuushuutsu! +* Exciting Bass +* EX Monopoly +* JGTO Licensed: Golfmaster Mobile +* Kinniku Banzuke ~Kongou-kun no Daibouken!~ +* Mail de Cute +* Mario Kart Advance +* Mobile Pro Baseball: Control Baton +* Monster Guardians +* Morita Shougi Advance +* Napoleon +* Play Novel: Silent Hill +* Starcom: Star Communicator +* Zero-Tours + +Two games were planned but later cancelled: **beatmaniaGB Net Jam** for the GBC and **Horse Racing Creating Derby** for the GBA. + +The GBA game Yu-Gi-Oh! Duel Monsters 5 Expert 1 contains code for the Mobile Adapter, but despite being built with the library it does not appear to use it. This functionality may have been planned and later abandoned. + +## \[Mobile Adapter GB\] : Protocol - Packet Format + +On the GBC, the Mobile Adapter operates using the fastest available setting (64KB/s) by setting Bits 0 and 1 of the SC register (0xFF02) high. It also uses an internal clock for all transfers. Communication is comparable to that of the Game Boy Printer, where the Game Boy sends packets with header, data, command, and checksum sections. On the GBA, the Mobile Adapter operates in NORMAL8 mode using a shift clock of 256KHz. Below is a chart breaking down the Mobile Adapter packet format used by the Game Boy or Mobile Adapter when acting as the sender. For response data sent by the receiver, refer to the next section. + +``` +------------------------------------------------- +Section | Length +------------------------------------------------- +Magic Bytes : 0x99 0x66 | 2 bytes +Packet Header | 4 bytes +Packet Data | 0-254 bytes +Packet Checksum | 2 bytes +Acknowledgement Signal | 2 bytes +------------------------------------------------- + + +------------------------------------------------- +Packet Header +------------------------------------------------- +Byte 1 | Command ID +Byte 2 | Unknown/Unused (0x00) +Byte 3 | High byte of Packet Data length +Byte 4 | Low byte of Packet Data length +------------------------------------------------- + + +------------------------------------------------- +Packet Data +------------------------------------------------- +Bytes 0-254 | Arbitrary data +------------------------------------------------- + + +------------------------------------------------- +Packet Checksum +------------------------------------------------- +Byte 1 | High byte of 16-bit sum +Byte 2 | Low byte of 16-bit sum +------------------------------------------------- + + +------------------------------------------------- +Acknowledgement Signal +------------------------------------------------- +Byte 1 | Device ID +Byte 2 | Command ID +------------------------------------------------- +``` + +The magic bytes are simply a pair of bytes used to identify the start of a Mobile Adapter packet. + +Packet Data is arbitrary data and varies in length and content. On the Game Boy Color, it has a maximum size of 254 bytes. This restriction may be applied via software and appears to come from the fact that the Packet Data and Packet Checksum are lumped together, thus their total lengths must not exceed 256 bytes. Attempting to send more than 254 bytes of packet data causes communications errors in all supported GBC games. Evidence suggests GBA games can use Bytes 3 and 4 of the Packet Header to specify Packet Data size (possibly up to 64KB). The Mobile Adapter discards any packets bigger than 255 bytes, effectively forcing the high byte of the packet data length to be 0. + +Data greater than the maximum packet length may be broken up into multiple packets, however. For example, when sending a large binary file such as an image or executable code, multiple packets are transferred from the Mobile Adapter to the Game Boy while the TCP transfer is ongoing. + +The Packet Checksum is simply the 16-bit sum of all previous header bytes and all previous packet data bytes. It does not include the magic bytes. The checksum is transmitted big-endian. + +After the checksum, a simple 2-byte Acknowledgement Signal is sent. The first byte is the Device ID OR'ed with the value 0x80. The second byte is 0x00 for the sender. The receiver transfers the Command ID from the Packet Header XOR'ed by 0x80. This essentially confirms what role the Game Boy is acting in. If it is the receiver, it is expecting to read information from the Packet Data from the Mobile Adapter. If it is the sender, it is pushing information from its own Packet Data to the Mobile Adapter. For example, with Command 0x19, the Game Boy is explicitly requesting data from the adapter, and with Command 0x1A the Game Boy is explicitly sending data to the adapter. + +The Command ID byte in the Acknowledgement Signal may also be used for the receiver to indicate an error. If the checksum verification fails, the receiving side will send error 0xF1. This causes the sender to immediately re-attempt sending the packet up to 4 times. If the command isn't implemented/supported by the receiving Mobile Adapter, error 0xF0 will be sent. Error 0xF2 indicates an internal error, such as the Mobile Adapter's TCP/telephone transfer buffer being full. + +The device ID determines what kind of hardware each side is communicating with. Below are the possible values and their meaning: + +``` +------------------------------------------------- +Device ID | OR Value | Device Type +------------------------------------------------- +0x00 | 0x80 | Game Boy Color +0x01 | 0x81 | Game Boy Advance +0x08 | 0x88 | PDC Mobile Adapter (Blue) +0x09 | 0x89 | cdmaOne Mobile Adapter (Yellow) +0x0A | 0x8A | PHS Mobile Adapter (Green) +0x0B | 0x8B | DDI Mobile Adapter (Red) +------------------------------------------------- +``` + +## \[Mobile Adapter GB\] : Protocol - Flow of Communication + +Even though the protocol effectively enables 2-way communication between the Game Boy and a remote server, the handheld is expected to oversee all transmissions to the adapter itself. That is to say, the typical "master-slave" model often used for Game Boy serial I/O still applies in some sense. Once the server starts responding, the Game Boy has to continually initiate another transfer to the adapter (setting Bit 7 of 0xFF02 high) to keep reading any additional bytes that were sent. + +It is up to the game software itself to handle secondary protocols (such as HTTP, POP3, or SMTP) which involve one side specifically acting as the sender or receiver. For example, after opening a TCP connection to an HTTP server and issuing the 0x15 command (Data Transfer), the software will determine whether the Game Boy is acting as a sender (making an HTTP request) or a receiver (receiving an HTTP response). Generally, this goes back and forth. The Game Boy sends information via its Packet Data, while the Mobile Adapter responds with 0xD2 "wait" bytes until the Game Boy finishes its TCP transfer. When the Game Boy's TCP transfer is done, the adapter sends any information from the server in its Packet Data while the Game Boy responds with 0x4B "wait" bytes. The chart below illustrates this concept and details what bytes are transferred by each side depending on their current role: + +Device | Role | Magic Bytes | Packet Header | Packet Checksum | Packet Data | Acknowledgement Signal +--- | --- | --- | --- | --- | --- | --- +Game Boy | Sender | 0x96 0x66 | Arbitrary | Arbitrary | Arbitrary | Device ID OR 0x80 + 0x00 +Mobile Adapter | Receiver | 0xD2 0xD2 | 0xD2 0xD2 ... | 0xD2 0xD2 ... ... ... | 0xD2 0xD2 ... | Device ID OR 0x80 + Command ID XOR 0x80 +--- | --- | --- | --- | --- | --- | --- +Game Boy | Receiver | 0x4B 0x4B | 0x4B 0x4B ... | 0x4B 0x4B ... ... ... | 0x4B 0x4B ... | Device ID OR 0x80 + Command ID XOR 0x80 +Mobile Adapter | Sender | 0x96 0x66 | Arbitrary | Arbitrary | Arbitrary | Device ID OR 0x80 + 0x00 +------------------------------------------------------------------------------------------------------------------------------------------------- + +When beginning communications with the Mobile Adapter, the Game Boy typically assumes the role of sender first. + +Many games appear to follow a certain order of commands initially. This may have been part of some kind of standard library available to developers in order to connect to an ISP. The commands most commonly look like this: + +``` +------------ +Command 0x10 Begin Session. First is perhaps to test the presence of the Mobile Adapter +Command 0x11 Close Session. +Command 0x10 Begin Session. Open session for configuration data +------------ +Command 0x19 Read Configuration Data. Grab first 96 bytes +Command 0x19 Read Configuration Data. Grab second 96 bytes +Command 0x11 Close Session. +Command 0x10 Begin Session. Open session to read configuration data again +Command 0x19 Read Configuration Data. Grab first 96 bytes +Command 0x19 Read Configuration Data. Grab second 96 bytes +------------ +Command 0x17 Check Telephone Status if not busy +Command 0x12 Dial Telephone. Should be the ISP's number stored in configuration data +Command 0x21 ISP Login +Command 0x28 DNS Query +------------ +``` + +From there, the software decides what next (if anything) needs to be done after successfully connecting to the internet. + +When the GBC or GBA first start communicating with the Mobile Adapter, the first byte sent in response will be garbage data. Sending this first byte causes the Mobile Adapter to exit sleep mode, and the GBC or GBA will then have to wait a short interval (around 100ms) before starting communications proper. If it doesn't, the Mobile Adapter might send more garbage. Afterwards, however, it will reply with 0xD2 as its "idle" byte until a command is finished being sent. The Mobile Adapter enters sleep mode after 3 seconds since the last serial byte was transmitted. This implicitly cancels the command currently being processed, closes all connections currently open and ends the session. + +## \[Mobile Adapter GB\] : Protocol - Commands + +**Command 0x0F - Empty** + +Data Sent: N/A. Empty Packet Data + +Doesn't incite a reply from the adapter at all, aside from the Acknowledgement Signal. Presumably used to ping the adapter, not seen in any games in the wild. + +**Command 0x10 - Begin Session** + +Data Sent: "NINTENDO" ASCII string. 8 bytes only, not null-terminated + +Data Received: "NINTENDO" ASCII string. 8 bytes only, not null-terminated + +Sent to the adapter at the beginning of a session. The Game Boy sends an ASCII string containing "NINTENDO" and the adapter replies with a packet containing the same data. It must be noted that the adapter will not respond to other commands until it receives this command. If this command is sent twice, it returns an error. + +**Command 0x11 - End Session** + +Data Sent: N/A. Empty Packet Data + +Data Received: N/A. Empty Packet Data + +Sent to the adapter at the end of a session. The Packet Data is empty, and the length is zero bytes. This command causes all connections to be closed, and the phone to be hung up. + +**Command 0x12 - Dial Telephone** + +Data Sent: 1 unknown byte + telephone number + +Data Received: N/A. Empty Packet Data + +Instructs the adapter to dial a telephone number. The first byte's purpose is unknown, but seems to vary depending on the adapter type. 0 is sent for the blue/PDC adapter, 1 is sent for the green/PHS or red/DDI adapters, and 2 for the yellow/cdmaOne adapter. For unknown reasons, the blue adapter also accepts 16, the red adapter also accepts 9, and the yellow adapter doesn't actually verify this value. The following data is the telephone number represented in ASCII values, consisting of decimal numbers "0" through "9", as well as "#" and "\*". Any ASCII values not within this range are ignored. The maximum length of the phone number is 32 bytes. + +**Command 0x13 - Hang Up Telephone** + +Data Sent: N/A. Empty Packet Data + +Data Received: N/A. Empty Packet Data + +Instructs the adapter to close a telephone connection. This implicitly disconnects any open TCP/UDP connections. The Packet Data is empty, and the length is zero bytes. + +**Command 0x14 - Wait For Telephone Call** + +Data Sent: N/A. Empty Packet Data + +Data Received: N/A. Empty Packet Data + +Instructs the adapter to wait for and pick up an incoming call. This returns inmediately if there is no call to pick up, with an error packet with code 0. The Packet Data is empty, and the length is zero bytes. + +**Command 0x15 - Transfer Data** + +Data Sent: Connection ID + Arbitrary Data (optional) + +Data Received: Connection ID + Arbitrary Data (optional) + +Used to transfer data over TCP after command 0x23 (Open TCP Connection), transfer data over UDP after command 0x25 (Open UDP connection), or transfer data over the phone line after either 0x12 (Dial Telephone) or 0x14 (Wait For Telephone Call) have successfully been called. Only TCP/UDP communication is possible after a 0x21 (ISP Login) command, and the first byte indicates the connection that's being transferred over, as multiple can be opened simultaneously. If it's a mobile connection, the first byte is ignored, usually being set to 0xFF. + +Generally, additional data is appended, although it is not required, such as when waiting for the server/other phone to send a reply. Large chunks of data greater than 254 bytes must be broken down into separate packets. While a connection is active, the Command ID in the Reply is 0x15 for the sender and 0x95 for the receiver. When a TCP connection is closed by the remote server (e.g. when an HTTP response has finished), and there's no leftover data to be received by the Game Boy, the Command ID in the Reply becomes 0x1F for the sender and 0x9F for the receiver, with a packet length of 0. Additionally, for TCP connections, if no data is sent, this command will wait for data to be received up to 1 second, before sending a reply. + +During a phone-to-phone communication, no disconnection is detected, instead being indicated by the 0x17 (Telephone Status) command. However, most games implement this instead through a timeout during which no data has been received. + +**Command 0x16 - Reset** + +Data Sent: N/A. Empty Packet Data + +Data Received: N/A. Empty Packet Data + +This command does the same as sending commands 0x11 (End Session), followed by 0x10 (Begin Session). Additionally, it resets SIO32 Mode to the default state. Presumably used to reset the adapter, though not seen in any games in the wild. + +**Command 0x17 - Telephone Status** + +Data Sent: N/A. Empty Packet Data + +Data Received: 3 bytes + +Typically sent to the adapter before dialing. Also used to test the telephone status before opening a TCP connection, or to constantly ping the phone to make sure it's still active. + +The reply is 3 bytes. The first byte indicates the phone's status, where 0xFF is returned if the phone is disconnected. If the phone isn't disconnected, bit 2 indicates whether the phone line is "busy" (i.e. in a call/picked up), and bit 0 indicates the presence of an incoming call (this remains if the incoming call is picked up). As such, the valid values are 0, 1, 4 and 5. Software may check bit 2 to know if the phone line is still connected. Most software doesn't seem to care about bit 0, but Net de Get: Mini Game @ 100 refuses to work with bit 0 set (value 5). + +The second byte is related to the adapter type, where the blue/PDC adapter returns 0x4D, and the red/DDI and yellow/cdmaOne adapters return 0x48, though the actual meaning is unknown. The third byte is unknown, and usually hardcoded to 0. However, Pokemon Crystal reacts to the third byte being 0xF0 by allowing the player to bypass the 10 min/day battle time limit. + +**Command 0x18 - SIO32 Mode** + +Data Sent: 1 byte + +Data Received: N/A. Empty Packet Data + +This command is generally sent after Command 0x10. It enables/disables SIO32 Mode, which is useful for GBA games to be able to send more data, faster. The sent byte must be 1 to enable SIO32 mode, and 0 to disable it. SIO32 mode implies that any transmission will happen in chunks of 4 bytes instead of 1, which has implications with respect to the alignment of the communication. + +When SIO32 mode is on, the packet data will be aligned to a multiple of 4 bytes, padding the remaining bytes with 0, and this won't be reflected in the packet length field. Similarly, the Acknowledgement Signal gains 2 padding bytes (hardcoded 0, not verified) at the end. Since the entire transmission (including Magic Bytes) is sent in chunks of 4, this means that the checksum is sent along with either the packet length (if length is 0) or the last 2 bytes of the packet (if length is not 0), and the acknowledgement signal is sent in the next chunk. + +SIO32 Mode will only be toggled after the reply to this packet has been sent. The adapter should be allowed at least 100ms to toggle, as it might otherwise start sending garbage. + +**Command 0x19 - Read Configuration Data** + +Data Sent: 1 byte offset + 1 byte read length + +Data Received: 1 byte offset + Requested Configuration Data + +Requests data from the adapter's 256-byte configuration memory. The first byte sent to the adapter is the offset. The second byte sent is the length of data to read. The adapter responds with the same offset byte followed by configuration data from the adapter's internal memory. The maximum amount of data that can be requested at once is 128 bytes, and the adapter may return an error if the game requests more data. Most software send 2 of these commands to read 96-byte chunks, for a total of 192 bytes, which is the area of this memory that is actually used. + +**Command 0x1A - Write Configuration Data** + +Data Sent: 1 byte offset + Configuration Data to Write + +Data Received: 1 byte offset + +Writes data to the adapter's 256-byte configuration memory. The first byte sent to the adapter is the offset. The following bytes are the data to be written in the adapters internal memory. A maximum of 128 bytes may be written at once. + +**Command 0x21 - ISP Login** + +Data Sent: 1 byte Login ID Length + Login ID + 1 byte Password Length + Password + 4 bytes DNS Address #1 + 4 bytes DNS Address #2 + +Data Received: 4 bytes assigned IP + 4 bytes assigned DNS Address #1 + 4 bytes assigned DNS Address #2 /p> + +Logs into the DION dial-up service, after calling it with command 0x12 (Dial Telephone), allowing the adapter to connect to the internet. Both the Login ID and Password are prefixed with bytes declaring their lengths, with a maximum length of 0x20. The IPv4 DNS addresses are 4 bytes each, with a single byte representing one octet. The reply contains the assigned IP address and DNS addresses. If the game sets either of the DNS addresses to 0, the adapter may assign the DNS address on its own, and return that in the reply, otherwise, the reply's DNS addresses are 0.0.0.0. + +**Command 0x22 - ISP Logout** + +Data Sent: N/A. Empty Packet Data + +Data Received: N/A. Empty Packet Data + +Logs out of the DION service. This command causes all connections to be closed. + +**Command 0x23 - Open TCP Connection** + +Data Sent: 4 bytes for IP Address + 2 Bytes for Port Number + +Data Received: 1 byte Connection ID + +Opens a TCP connection at the given IP address on the given port, after logging into the DION dial-up service. The IPv4 IP address is 4 bytes, with a single byte representing one octet. The port number is big-endian. Depending on which port the TCP connection opens (25, 80, 110), different protocols can be accessed on a server (SMTP, HTTP, and POP respectively). Handling the details of the protocol itself depends on the software and the server. The Mobile Adapter is merely responsible for opening the connection and handling TCP transfers such as when using Command 0x15. The reply contains the Connection ID, which must be used when using Command 0x15 (Transfer Data). The maximum amount of connections on a real adapter is 2. + +**Command 0x24 - Close TCP Connection** + +Data Sent: 1 byte Connection ID + +Data Received: 1 byte Connection ID + +Closes an active TCP connection. + +**Command 0x25 - Open UDP Connection** + +Data Sent: 4 bytes for IP Address + 2 Bytes for Port Number + +Data Received: 1 byte Connection ID + +Opens a UDP connection at the given IP address on the given port, after logging into the DION dial-up service. It's an analog of Command 0x23 (Open TCP Connection), but opens a UDP connection instead. This UDP connection is bound to the specified IP address and Port until it's closed. When using Command 0x15 (Transfer Data) with a UDP connection, it's impossible to know the sender of any received data, as it isn't verified. + +**Command 0x26 - Close UDP Connection** + +Data Sent: 1 byte Connection ID + +Data Received: 1 byte Connection ID + +Closes an active UDP connection. + +**Command 0x28 - DNS Query** + +Data Sent: Domain Name + +Data Received: 4 bytes for IP Address + +Looks up the IP address for a domain name, using the DNS server addresses sent in Command 0x21. This command also accepts an ASCII IPv4 address (as parsed by the inet\_addr(3) function of POSIX), converting it into a 4-byte IPv4 address instead of querying the DNS server. The domain name is in ASCII and may contain zeroes, which truncate the name. + +**Command 0x3F - Firmware Version** + +Data Sent: N/A. Empty Packet Data + +Data Received: N/A. Empty Packet Data + +On a real Mobile Adapter, this causes it to send firmware version information through the serial pins on the phone connector, and enter a state in which no other commands can be used. Presumably, this enters a test mode of some kind. Likely not used by any games. + +This command may not be used if the phone line is in use. The only way to resume sending commands after this one is sent, is sending Command 0x16 (Reset), or, exclusively on the blue adapter, Command 0x11 (End Session) may also be used. + +**Command 0x6E - Error Status** + +Data Sent: N/A. Adapter sends this in response to a failed command + +Data Received: 1 byte for command that failed + 1 byte for error status + +If a previously sent command fails, the adapter will respond with this instead, indicating the command that failed as well as a brief status code. The error statuses for one command do not indicate the same error for another command, so context matters when parsing the codes. The following commands and their known error status codes are listed below: + +``` +0x10: Error Code 0x01 - Sent twice +0x10: Error Code 0x02 - Invalid contents + +0x11: Error Code 0x02 - Still connected/failed to disconnect(?) + +0x12: Error Code 0x00 - Telephone line is busy +0x12: Error Code 0x01 - Invalid use (already connected) +0x12: Error Code 0x02 - Invalid contents (first byte isn't correct) +0x12: Error Code 0x03 - Communication failed/phone not connected +0x12: Error Code 0x04 - Call not established, redial + +0x13: Error Code 0x01 - Invalid use (already hung up/phone not connected) + +0x14: Error Code 0x00 - No call received/phone not connected +0x14: Error Code 0x01 - Invalid use (already calling) +0x14: Error Code 0x03 - Internal error (ringing but picking up fails) + +0x15: Error Code 0x00 - Invalid connection/communication failed +0x15: Error Code 0x01 - Invalid use (Call was ended/never made) + +0x16: Error Code 0x00 - Still connected/failed to disconnect(?) + +0x18: Error Code 0x02 - Invalid contents (first byte not either 1 or 0) + +0x19: Error Code 0x00 - Internal error (Failed to read config) +0x19: Error Code 0x02 - Read outside of config area/too big a chunk + +0x1A: Error Code 0x00 - Internal error (Failed to write config) +0x1A: Error Code 0x02 - Write outside of config area/too big a chunk + +0x21: Error Code 0x01 - Invalid use (Not in a call) +0x21: Error Code 0x02 - Unknown error (some kind of timeout?) +0x21: Error Code 0x03 - Unknown error (internal error?) + +0x22: Error Code 0x00 - Invalid use (Not logged in) +0x22: Error Code 0x01 - Invalid use (Not in a call) +0x22: Error Code 0x02 - Unknown error (some kind of timeout?) + +0x23: Error Code 0x00 - Too many connections +0x23: Error Code 0x01 - Invalid use (Not logged in) +0x23: Error Code 0x03 - Connection failed + +0x24: Error Code 0x00 - Invalid connection (Not connected) +0x24: Error Code 0x01 - Invalid use (Not logged in) +0x24: Error Code 0x02 - Unknown error (???) + +0x25: Error Code 0x00 - Too many connections +0x25: Error Code 0x01 - Invalid use (Not logged in) +0x25: Error Code 0x03 - Connection failed (though this can't happen) + +0x26: Error Code 0x00 - Invalid connection (Not connected) +0x26: Error Code 0x01 - Invalid use (Not logged in) +0x26: Error Code 0x02 - Unknown error (???) + +0x28: Error Code 0x01 - Invalid use (not logged in) +0x28: Error Code 0x02 - Invalid contents/lookup failed +``` + +## \[Mobile Adapter GB\] : Protocol - Configuration Data + +The Mobile Adapter has small area of built-in memory designed to store various settings for its configuration. It only uses 192 bytes but data is readable and writable via the Commands 0x19 and 0x1A respectively. These fields are filled out when running the initial setup on Mobile Trainer. The memory is laid out as describe below: + +``` +-------------------------- +0x00 - 0x01 :: "MA" in ASCII. The "Mobile Adapter" header. +0x02 :: Set to 0x1 during Mobile Trainer registration and 0x81 when registration is complete +0x04 - 0x07 :: Primary DNS server (210.196.3.183) +0x08 - 0x0B :: Secondary DNS server (210.141.112.163) +0x0C - 0x15 :: Login ID in the format gXXXXXXXXX. Mobile Trainer only allows 9 editable characters +0x2C - 0x43 :: User email address in the format XXXXXXXX@YYYY.dion.ne.jp +0x4A - 0x5D :: SMTP server in the format mail.XXXX.dion.ne.jp +0x5E - 0x70 :: POP server in the format pop.XXXX.dion.ne.jp +0x76 - 0x8D :: Configuration Slot #1 +0x8E - 0xA5 :: Configuration Slot #2 +0xA6 - 0xBD :: Configuration Slot #3 +0xBE - 0xBF :: 16-bit big-endian checksum +-------------------------- +``` + +Each configuration slot may contain an 8-byte telephone number to be used to connect to the ISP and a 16-byte ID string. The telephone number is stored in a variant of binary-coded decimal, where 0x0A represents the "#" key, 0x0B represents the "\*" key, and 0x0F marks the end of the telephone number. These slots may have been intended to allow users to connect online using ISPs besides DION at some point, however, Nintendo never implemented any such plans. + +If the Mobile Adapter is connected to a PDC or CDMA device, the telephone number defaults to #9677 with an ID string of "DION PDC/CDMAONE". If the Mobile Adapter is connected to a PHS or DDI device, the telephone number defaults to 0077487751 with an ID string of "DION DDI-POCKET". Only the first slot is configured by Mobile Trainer; it fills the rest with 0xFF and 0x00 bytes. An unidentified device (as reported by the Device ID in the Acknowledgement Signal of a packet) causes the Mobile Adapter to overwrite all configuration data with garbage values. + +The checksum is simply the 16-bit sum of bytes 0x00 - 0xBD. + +All software compatible with the Mobile Adapter appears to read the configuration data first and foremost. If the data cannot be read or if there is a problem with the data, they will refuse to even attempt logging in to the DION dial-up service. Generally, they return the error code 25-000 in that situation. + +If any compatible software attempts to read or write configuration data outside the allotted 256 bytes via commands 0x19 and 0x1A, the entire I/O operation is cancelled. No data is written even if the initial offset is within the 256 bytes. No data is returned either, as both commands respond with Error Status packets. diff --git a/examples/compile.sh b/examples/compile.sh index f7f9adf..ea94350 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -32,6 +32,11 @@ make rebuild cp LinkGPIO_demo.gba ../ cd .. +cd LinkMobile_demo/ +make rebuild +cp LinkMobile_demo.gba ../ +cd .. + cd LinkPS2Keyboard_demo/ make rebuild cp LinkPS2Keyboard_demo.gba ../ diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 9ddefd1..ff1596d 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -381,7 +381,8 @@ class LinkMobile { /** * @brief Looks up the IPv4 address for a domain name. * @param domain A null-terminated string for the domain name (max `253` - * characters). + * characters). It also accepts a ASCII IPv4 address, converting it into a + * 4-byte address instead of querying the DNS server. * @param result A pointer to a `LinkMobile::DNSQuery` struct that * will be filled with the result. When the request is completed, the * `completed` field will be `true`. If an IP address was found, the `success` From ec06a49073eb5368bd505c6c2b6fff9c9df2d108 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 03:48:19 -0300 Subject: [PATCH 125/195] Debugging why it doesn't work on the RPi Pico --- examples/LinkMobile_demo/Makefile | 2 +- examples/LinkMobile_demo/src/main.cpp | 1 + lib/LinkMobile.hpp | 10 +++++++--- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index fd6a029..984c9bc 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -141,7 +141,7 @@ LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba # --- switches --- -bMB := 0 # Multiboot build +bMB := 1 # Multiboot build bTEMPS := 0 # Save gcc temporaries (.i and .s files) bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 5b0f3da..e81639e 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -533,6 +533,7 @@ std::string getErrorString(LinkMobile::Error error) { toHex(error.cmdId) + "\n CmdResult: " + getResultString(error.cmdResult) + "\n CmdErrorCode: " + std::to_string(error.cmdErrorCode) + + "\n TEST: " + toHex(error.notWaiting) + "\n ReqType: " + std::to_string(error.reqType) + "\n"; } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index ff1596d..8772359 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -100,8 +100,8 @@ class LinkMobile { using u8 = unsigned char; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; - static constexpr int INIT_WAIT_FRAMES = 7; - static constexpr int INIT_TIMEOUT_FRAMES = 30; + static constexpr int INIT_WAIT_FRAMES = 30; + static constexpr int INIT_TIMEOUT_FRAMES = 60; static constexpr int PING_FREQUENCY_FRAMES = 60; static constexpr int ADAPTER_WAITING = 0xd2; static constexpr u32 ADAPTER_WAITING_32BIT = 0xd2d2d2d2; @@ -254,6 +254,7 @@ class LinkMobile { u8 cmdId = 0; CommandResult cmdResult = CommandResult::PENDING; u8 cmdErrorCode = 0; + u32 notWaiting = 0; bool cmdIsSending = false; int reqType = -1; }; @@ -830,6 +831,7 @@ class LinkMobile { u16 expectedChecksum; u8 errorCommandId; u8 errorCode; + u32 notWaiting = 0; bool isActive = false; void reset() { @@ -1528,9 +1530,9 @@ class LinkMobile { .cmdId = asyncCommand.relatedCommandId(), .cmdResult = asyncCommand.result, .cmdErrorCode = asyncCommand.errorCode, + .notWaiting = asyncCommand.notWaiting, .cmdIsSending = asyncCommand.direction == AsyncCommand::Direction::SENDING, - .reqType = userRequests.isEmpty() ? -1 : userRequests.peek().type}; _LMLOG_( @@ -1628,6 +1630,7 @@ class LinkMobile { asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; if (!isAcknowledgement && newData != ADAPTER_WAITING) { _LMLOG_("!! not waiting: %X", newData); + asyncCommand.notWaiting = newData; return asyncCommand.fail(CommandResult::NOT_WAITING); } @@ -1664,6 +1667,7 @@ class LinkMobile { if (!isAcknowledgement && newData != ADAPTER_WAITING && newData != ADAPTER_WAITING_32BIT) { _LMLOG_("!! not waiting: %X", newData); + asyncCommand.notWaiting = newData; return asyncCommand.fail(CommandResult::NOT_WAITING); } From 0aa6d7017848a2934d473be1b379ac764f6c41e7 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 04:33:00 -0300 Subject: [PATCH 126/195] Oh, of course I have to switch the serial mode before the timer x) --- lib/LinkMobile.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 8772359..0cf87b9 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -1050,8 +1050,6 @@ class LinkMobile { waitFrames--; if (waitFrames == 0) { - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, - LinkSPI::DataSize::SIZE_32BIT); setState(READING_CONFIGURATION); cmdReadConfigurationData(0, CONFIGURATION_DATA_CHUNK); } @@ -1067,8 +1065,6 @@ class LinkMobile { waitFrames--; if (waitFrames == 0) { - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, - LinkSPI::DataSize::SIZE_8BIT); error = {}; setState(SHUTDOWN); } @@ -1140,6 +1136,8 @@ class LinkMobile { setState(WAITING_32BIT_SWITCH); waitFrames = INIT_WAIT_FRAMES; + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_32BIT); break; } case READING_CONFIGURATION: { @@ -1308,6 +1306,8 @@ class LinkMobile { setState(WAITING_8BIT_SWITCH); waitFrames = INIT_WAIT_FRAMES; + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS, + LinkSPI::DataSize::SIZE_8BIT); break; } default: { From 1aaf84bb27e84279ac9022bf8db018c9c7cefdd2 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 04:34:51 -0300 Subject: [PATCH 127/195] Reverting test code This reverts commit a8383a67eec7c82079d533c8a60f6202aeb3b059. --- examples/LinkMobile_demo/Makefile | 2 +- examples/LinkMobile_demo/src/main.cpp | 1 - lib/LinkMobile.hpp | 10 +++------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index 984c9bc..fd6a029 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -141,7 +141,7 @@ LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba # --- switches --- -bMB := 1 # Multiboot build +bMB := 0 # Multiboot build bTEMPS := 0 # Save gcc temporaries (.i and .s files) bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index e81639e..5b0f3da 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -533,7 +533,6 @@ std::string getErrorString(LinkMobile::Error error) { toHex(error.cmdId) + "\n CmdResult: " + getResultString(error.cmdResult) + "\n CmdErrorCode: " + std::to_string(error.cmdErrorCode) + - "\n TEST: " + toHex(error.notWaiting) + "\n ReqType: " + std::to_string(error.reqType) + "\n"; } diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 0cf87b9..040d1e8 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -100,8 +100,8 @@ class LinkMobile { using u8 = unsigned char; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; - static constexpr int INIT_WAIT_FRAMES = 30; - static constexpr int INIT_TIMEOUT_FRAMES = 60; + static constexpr int INIT_WAIT_FRAMES = 7; + static constexpr int INIT_TIMEOUT_FRAMES = 30; static constexpr int PING_FREQUENCY_FRAMES = 60; static constexpr int ADAPTER_WAITING = 0xd2; static constexpr u32 ADAPTER_WAITING_32BIT = 0xd2d2d2d2; @@ -254,7 +254,6 @@ class LinkMobile { u8 cmdId = 0; CommandResult cmdResult = CommandResult::PENDING; u8 cmdErrorCode = 0; - u32 notWaiting = 0; bool cmdIsSending = false; int reqType = -1; }; @@ -831,7 +830,6 @@ class LinkMobile { u16 expectedChecksum; u8 errorCommandId; u8 errorCode; - u32 notWaiting = 0; bool isActive = false; void reset() { @@ -1530,9 +1528,9 @@ class LinkMobile { .cmdId = asyncCommand.relatedCommandId(), .cmdResult = asyncCommand.result, .cmdErrorCode = asyncCommand.errorCode, - .notWaiting = asyncCommand.notWaiting, .cmdIsSending = asyncCommand.direction == AsyncCommand::Direction::SENDING, + .reqType = userRequests.isEmpty() ? -1 : userRequests.peek().type}; _LMLOG_( @@ -1630,7 +1628,6 @@ class LinkMobile { asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; if (!isAcknowledgement && newData != ADAPTER_WAITING) { _LMLOG_("!! not waiting: %X", newData); - asyncCommand.notWaiting = newData; return asyncCommand.fail(CommandResult::NOT_WAITING); } @@ -1667,7 +1664,6 @@ class LinkMobile { if (!isAcknowledgement && newData != ADAPTER_WAITING && newData != ADAPTER_WAITING_32BIT) { _LMLOG_("!! not waiting: %X", newData); - asyncCommand.notWaiting = newData; return asyncCommand.fail(CommandResult::NOT_WAITING); } From 3e3920096f79d5a3e09918c6ba59b17b213b1d67 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 06:47:44 -0300 Subject: [PATCH 128/195] Using nullptr instead of NULL --- examples/LinkMobile_demo/src/main.cpp | 4 ++-- examples/LinkUniversal_basic/src/main.cpp | 2 +- examples/LinkWireless_demo/src/main.cpp | 4 ++-- lib/LinkRawWireless.hpp | 4 ++-- lib/LinkWireless.hpp | 4 ++-- lib/LinkWirelessMultiboot.hpp | 16 ++++++++-------- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 5b0f3da..8babd82 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -32,7 +32,7 @@ std::string selectedNumber = ""; std::string selectedPassword = ""; std::string selectedDomain = ""; -LinkMobile* linkMobile = NULL; +LinkMobile* linkMobile = nullptr; void init() { REG_DISPCNT = DCNT_MODE0 | DCNT_BG0; @@ -86,7 +86,7 @@ start: interrupt_disable(INTR_SERIAL); interrupt_disable(INTR_TIMER3); delete linkMobile; - linkMobile = NULL; + linkMobile = nullptr; if (!didShutdown) { log("Waiting..."); diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index ea6f858..737d8fa 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -11,7 +11,7 @@ void log(std::string text); void waitFor(u16 key); -LinkUniversal* linkUniversal = NULL; +LinkUniversal* linkUniversal = nullptr; void init() { REG_DISPCNT = DCNT_MODE0 | DCNT_BG0; diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 3d42acc..4c01fa4 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -32,7 +32,7 @@ void wait(u32 verticalLines); void hang(); LinkWireless::Error lastError; -LinkWireless* linkWireless = NULL; +LinkWireless* linkWireless = nullptr; bool forwarding, retransmission, asyncACK; u32 maxPlayers; @@ -106,7 +106,7 @@ start: interrupt_disable(INTR_TIMER3); interrupt_disable(INTR_TIMER0); delete linkWireless; - linkWireless = NULL; + linkWireless = nullptr; goto start; } diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index e055272..ff63891 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -212,8 +212,8 @@ class LinkRawWireless { /** * @brief Calls the Broadcast (`0x16`) command. - * @param gameName Game name. Maximum `14` characters + NULL terminator. - * @param userName User name. Maximum `8` characters + NULL terminator. + * @param gameName Game name. Maximum `14` characters + null terminator. + * @param userName User name. Maximum `8` characters + null terminator. * @param gameId `(0 ~ 0x7FFF)` Game ID. */ bool broadcast(const char* gameName = "", diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 1b4a5ad..4d9c095 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -324,8 +324,8 @@ class LinkWireless { * @brief Starts broadcasting a server and changes the state to `SERVING`. You * can optionally provide data that games will be able to read. If the adapter * is already serving, this method only updates the broadcast data. - * @param gameName Game name. Maximum `14` characters + NULL terminator. - * @param userName User name. Maximum `8` characters + NULL terminator. + * @param gameName Game name. Maximum `14` characters + null terminator. + * @param userName User name. Maximum `8` characters + null terminator. * @param gameId `(0 ~ 0x7FFF)` Game ID. * \warning Updating broadcast data while serving can fail if the adapter is * busy. In that case, this will return `false` and `getLastError()` will be diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 4597f8d..4dd88f8 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -125,8 +125,8 @@ class LinkWirelessMultiboot { * @param romSize Size of the ROM in bytes. It must be a number between * `448` and `262144`. It's recommended to use a ROM size that is a multiple * of `16`, as this also ensures compatibility with Multiboot via Link Cable. - * @param gameName Game name. Maximum `14` characters + NULL terminator. - * @param userName User name. Maximum `8` characters + NULL terminator. + * @param gameName Game name. Maximum `14` characters + null terminator. + * @param userName User name. Maximum `8` characters + null terminator. * @param gameId `(0 ~ 0x7FFF)` Game ID. * @param players The exact number of consoles that will download the ROM. * Once this number of players is reached, the code will start transmitting @@ -207,7 +207,7 @@ class LinkWirelessMultiboot { maxI = i; } } - return maxI > -1 ? &transfers[maxI] : NULL; + return maxI > -1 ? &transfers[maxI] : nullptr; } __attribute__((noinline)) PendingTransfer* minWithoutAck() { @@ -220,12 +220,12 @@ class LinkWirelessMultiboot { minI = i; } } - return minI > -1 ? &transfers[minI] : NULL; + return minI > -1 ? &transfers[minI] : nullptr; } __attribute__((noinline)) void addIfNeeded(u32 newCursor) { auto maxTransfer = max(); - if (maxTransfer != NULL && newCursor <= maxTransfer->cursor) + if (maxTransfer != nullptr && newCursor <= maxTransfer->cursor) return; for (u32 i = 0; i < MAX_INFLIGHT_PACKETS; i++) { @@ -246,8 +246,8 @@ class LinkWirelessMultiboot { transfers[index].ack = true; auto maxAckTransfer = max(true); - bool canUpdateCursor = - maxAckTransfer != NULL && isAckCompleteUpTo(maxAckTransfer->cursor); + bool canUpdateCursor = maxAckTransfer != nullptr && + isAckCompleteUpTo(maxAckTransfer->cursor); if (canUpdateCursor) cleanup(); @@ -307,7 +307,7 @@ class LinkWirelessMultiboot { return pendingTransferList.max()->cursor + 1; } else { auto minWithoutAck = pendingTransferList.minWithoutAck(); - return minWithoutAck != NULL ? minWithoutAck->cursor : cursor; + return minWithoutAck != nullptr ? minWithoutAck->cursor : cursor; } } From 67750d7e8f33e33586e067303b9db0f28f05bfa3 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 07:45:00 -0300 Subject: [PATCH 129/195] Improving package.sh --- .../LinkWirelessMultiboot_demo/scripts/package.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/examples/LinkWirelessMultiboot_demo/scripts/package.sh b/examples/LinkWirelessMultiboot_demo/scripts/package.sh index cf6c2e6..8f82c49 100755 --- a/examples/LinkWirelessMultiboot_demo/scripts/package.sh +++ b/examples/LinkWirelessMultiboot_demo/scripts/package.sh @@ -30,7 +30,7 @@ MAX_REQUIRED_SIZE_KB=$(($MAX_ROM_SIZE_KB - $GBFS_SIZE_KB)) if (( $MAX_REQUIRED_SIZE_KB < $ROM_SIZE_KB )); then echo "" echo "[!] ERROR:" - echo "GBFS file too big." + echo "ROM/GBFS file too big." echo "" echo "GBFS_SIZE_KB=$GBFS_SIZE_KB" echo "ROM_SIZE_KB=$ROM_SIZE_KB" @@ -38,14 +38,17 @@ if (( $MAX_REQUIRED_SIZE_KB < $ROM_SIZE_KB )); then echo "" exit 1 fi -REQUIRED_SIZE_KB=$(($INITIAL_REQUIRED_SIZE_KB > $MAX_REQUIRED_SIZE_KB ? $MAX_REQUIRED_SIZE_KB : $INITIAL_REQUIRED_SIZE_KB)) -PAD_NEEDED=$((($REQUIRED_SIZE_KB * $KB) - $ROM_SIZE)) cp $FILE_INPUT $FILE_TMP if [ $? -ne 0 ]; then exit 1 fi -dd if=/dev/zero bs=1 count=$PAD_NEEDED >> $FILE_TMP +SIZE=$(wc -c < $FILE_TMP) +DIFF=$(($SIZE % 1024)) +if (($DIFF > 0)); then + PAD_NEEDED=$((1024 - $DIFF)) + dd if=/dev/zero bs=1 count=$PAD_NEEDED >> $FILE_TMP +fi if [ $? -ne 0 ]; then exit 1 fi From d830860c5e93eff6e8349ca5ca85e0ca5b4cc9de Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 07:54:52 -0300 Subject: [PATCH 130/195] Adding options to compile multiboot roms with compile.sh --- examples/LinkWirelessMultiboot_demo/Makefile | 2 +- .../scripts/package.sh | 6 +- examples/compile.sh | 86 +++++++++++-------- 3 files changed, 53 insertions(+), 41 deletions(-) diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 4f5647c..24e84eb 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -134,7 +134,7 @@ LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba $(PWD)/../_lib/libgba-sprite-engin # --- switches --- -bMB := 0 # Multiboot build +bMB := 1 # Multiboot build bTEMPS := 0 # Save gcc temporaries (.i and .S files) bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) diff --git a/examples/LinkWirelessMultiboot_demo/scripts/package.sh b/examples/LinkWirelessMultiboot_demo/scripts/package.sh index 8f82c49..14a5684 100755 --- a/examples/LinkWirelessMultiboot_demo/scripts/package.sh +++ b/examples/LinkWirelessMultiboot_demo/scripts/package.sh @@ -1,8 +1,8 @@ #!/bin/bash -FILE_INPUT="LinkWirelessMultiboot_demo.gba" -FILE_TMP="LinkWirelessMultiboot_demo.tmp.gba" -FILE_OUTPUT="LinkWirelessMultiboot_demo.out.gba" +FILE_INPUT="LinkWirelessMultiboot_demo.mb.gba" +FILE_TMP="LinkWirelessMultiboot_demo.tmp.mb.gba" +FILE_OUTPUT="LinkWirelessMultiboot_demo.out.mb.gba" DATA="content.gbfs" if [ ! -f "$DATA" ]; then diff --git a/examples/compile.sh b/examples/compile.sh index ea94350..eb9faa4 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -1,5 +1,17 @@ #!/bin/bash +# Usage: +# ./compile.sh +# ./compile.sh multiboot + +if [ "$1" = "multiboot" ]; then + args="bMB=1" + suffix=".mb" +else + args="bMB=0" + suffix="" +fi + if [ "$(uname)" = "Darwin" ]; then # macOS sed_inplace_option="-i \"\"" @@ -8,18 +20,18 @@ else fi cd LinkCable_basic/ -make rebuild -cp LinkCable_basic.gba ../ +make rebuild $args +cp LinkCable_basic$suffix.gba ../ cd .. cd LinkCable_full/ -make rebuild -cp LinkCable_full.gba ../ +make rebuild $args +cp LinkCable_full$suffix.gba ../ cd .. cd LinkCable_stress/ -make rebuild -cp LinkCable_stress.gba ../ +make rebuild $args +cp LinkCable_stress$suffix.gba ../ cd .. cd LinkCableMultiboot_demo/ @@ -28,61 +40,61 @@ cp LinkCableMultiboot_demo.mb.gba ../ cd .. cd LinkGPIO_demo/ -make rebuild -cp LinkGPIO_demo.gba ../ +make rebuild $args +cp LinkGPIO_demo$suffix.gba ../ cd .. cd LinkMobile_demo/ -make rebuild -cp LinkMobile_demo.gba ../ +make rebuild $args +cp LinkMobile_demo$suffix.gba ../ cd .. cd LinkPS2Keyboard_demo/ -make rebuild -cp LinkPS2Keyboard_demo.gba ../ +make rebuild $args +cp LinkPS2Keyboard_demo$suffix.gba ../ cd .. cd LinkPS2Mouse_demo/ -make rebuild -cp LinkPS2Mouse_demo.gba ../ +make rebuild $args +cp LinkPS2Mouse_demo$suffix.gba ../ cd .. cd LinkRawCable_demo/ -make rebuild -cp LinkRawCable_demo.gba ../ +make rebuild $args +cp LinkRawCable_demo$suffix.gba ../ cd .. cd LinkRawWireless_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp -make rebuild +make rebuild $args sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp -cp LinkRawWireless_demo.gba ../ +cp LinkRawWireless_demo$suffix.gba ../ cd .. cd LinkSPI_demo/ -make rebuild -cp LinkSPI_demo.gba ../ +make rebuild $args +cp LinkSPI_demo$suffix.gba ../ cd .. cd LinkUART_demo/ -make rebuild -cp LinkUART_demo.gba ../ +make rebuild $args +cp LinkUART_demo$suffix.gba ../ cd .. cd LinkUniversal_basic/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -make rebuild -cp LinkUniversal_basic.gba ../ +make rebuild $args +cp LinkUniversal_basic$suffix.gba ../ sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. cd LinkCable_full/ sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -mv LinkCable_full.gba backup.gba -make rebuild -cp LinkCable_full.gba ../LinkUniversal_full.gba -mv backup.gba LinkCable_full.gba +mv LinkCable_full$suffix.gba backup.gba +make rebuild $args +cp LinkCable_full$suffix.gba ../LinkUniversal_full$suffix.gba +mv backup.gba LinkCable_full$suffix.gba sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. @@ -90,28 +102,28 @@ cd .. cd LinkCable_stress/ sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -mv LinkCable_stress.gba backup.gba -make rebuild -cp LinkCable_stress.gba ../LinkUniversal_stress.gba -mv backup.gba LinkCable_stress.gba +mv LinkCable_stress$suffix.gba backup.gba +make rebuild $args +cp LinkCable_stress$suffix.gba ../LinkUniversal_stress$suffix.gba +mv backup.gba LinkCable_stress$suffix.gba sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. cd LinkWireless_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -make rebuild +make rebuild $args sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -cp LinkWireless_demo.gba ../ +cp LinkWireless_demo$suffix.gba ../ cd .. cd LinkWireless_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp -mv LinkWireless_demo.gba backup.gba +mv LinkWireless_demo$suffix.gba backup.gba make rebuild cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba -mv backup.gba LinkWireless_demo.gba +mv backup.gba LinkWireless_demo$suffix.gba sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp cd .. @@ -119,6 +131,6 @@ cd .. cd LinkWirelessMultiboot_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp make rebuild -cp LinkWirelessMultiboot_demo.out.gba ../LinkWirelessMultiboot_demo.gba +cp LinkWirelessMultiboot_demo.out.mb.gba ../LinkWirelessMultiboot_demo.mb.gba sed $sed_inplace_option -e "s/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp cd .. From 09093673982cdef3e70ebc4baca0535c168b285e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 08:23:43 -0300 Subject: [PATCH 131/195] Using -Ofast in examples --- examples/LinkCableMultiboot_demo/Makefile | 2 +- examples/LinkCable_basic/Makefile | 2 +- examples/LinkCable_stress/Makefile | 2 +- examples/LinkGPIO_demo/Makefile | 2 +- examples/LinkMobile_demo/Makefile | 2 +- examples/LinkPS2Keyboard_demo/Makefile | 2 +- examples/LinkPS2Mouse_demo/Makefile | 2 +- examples/LinkRawCable_demo/Makefile | 2 +- examples/LinkSPI_demo/Makefile | 2 +- examples/LinkUART_demo/Makefile | 2 +- examples/LinkUniversal_basic/Makefile | 2 +- examples/LinkWireless_demo/Makefile | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index 11126ae..ca14a67 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkCable_basic/Makefile b/examples/LinkCable_basic/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkCable_basic/Makefile +++ b/examples/LinkCable_basic/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkCable_stress/Makefile b/examples/LinkCable_stress/Makefile index 3fad2e9..69f0c6b 100644 --- a/examples/LinkCable_stress/Makefile +++ b/examples/LinkCable_stress/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkGPIO_demo/Makefile b/examples/LinkGPIO_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkGPIO_demo/Makefile +++ b/examples/LinkGPIO_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index fd6a029..452bd20 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkPS2Keyboard_demo/Makefile b/examples/LinkPS2Keyboard_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkPS2Keyboard_demo/Makefile +++ b/examples/LinkPS2Keyboard_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkPS2Mouse_demo/Makefile b/examples/LinkPS2Mouse_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkPS2Mouse_demo/Makefile +++ b/examples/LinkPS2Mouse_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkRawCable_demo/Makefile b/examples/LinkRawCable_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkRawCable_demo/Makefile +++ b/examples/LinkRawCable_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkSPI_demo/Makefile b/examples/LinkSPI_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkSPI_demo/Makefile +++ b/examples/LinkSPI_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkUART_demo/Makefile b/examples/LinkUART_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkUART_demo/Makefile +++ b/examples/LinkUART_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkUniversal_basic/Makefile b/examples/LinkUniversal_basic/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkUniversal_basic/Makefile +++ b/examples/LinkUniversal_basic/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing diff --git a/examples/LinkWireless_demo/Makefile b/examples/LinkWireless_demo/Makefile index f1378cc..2c7c89a 100644 --- a/examples/LinkWireless_demo/Makefile +++ b/examples/LinkWireless_demo/Makefile @@ -160,7 +160,7 @@ IARCH := -mthumb-interwork -marm -mlong-calls # --- Main flags --- -CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -O2 +CFLAGS := -mcpu=arm7tdmi -mtune=arm7tdmi -Ofast CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing From 1e06a32a37b3f3d0c3b556bafd42dc88cbbdeeaa Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 09:39:32 -0300 Subject: [PATCH 132/195] Testing fix for mobile adapter hw --- lib/LinkMobile.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 040d1e8..241e98a 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -1624,9 +1624,12 @@ class LinkMobile { const u8* commandBytes = (const u8*)&asyncCommand.cmd; u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; + // (first packet is garbage) + bool didFullyTransferFirstPacket = asyncCommand.transferred >= 2; bool isAcknowledgement = asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; - if (!isAcknowledgement && newData != ADAPTER_WAITING) { + if (didFullyTransferFirstPacket && !isAcknowledgement && + newData != ADAPTER_WAITING) { _LMLOG_("!! not waiting: %X", newData); return asyncCommand.fail(CommandResult::NOT_WAITING); } @@ -1660,9 +1663,11 @@ class LinkMobile { u32 padding = alignment != 0 ? 4 - alignment : 0; u32 mainSize = PREAMBLE_SIZE + dataSize + padding; + // (first packet is garbage) + bool didFullyTransferFirstPacket = asyncCommand.transferred >= 8; bool isAcknowledgement = asyncCommand.transferred >= mainSize; - if (!isAcknowledgement && newData != ADAPTER_WAITING && - newData != ADAPTER_WAITING_32BIT) { + if (didFullyTransferFirstPacket && !isAcknowledgement && + newData != ADAPTER_WAITING && newData != ADAPTER_WAITING_32BIT) { _LMLOG_("!! not waiting: %X", newData); return asyncCommand.fail(CommandResult::NOT_WAITING); } From d42a88d52e3a94b65b5cfd70361cb9e1ce1270d1 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 10:27:32 -0300 Subject: [PATCH 133/195] Updating log functions --- examples/LinkCableMultiboot_demo/src/main.cpp | 4 ---- examples/LinkCable_basic/src/main.cpp | 4 ---- examples/LinkCable_stress/src/main.cpp | 14 ++++++-------- examples/LinkGPIO_demo/src/main.cpp | 4 ---- examples/LinkMobile_demo/src/main.cpp | 4 ---- examples/LinkPS2Keyboard_demo/src/main.cpp | 4 ---- examples/LinkPS2Mouse_demo/src/main.cpp | 4 ---- examples/LinkRawCable_demo/src/main.cpp | 4 ---- examples/LinkSPI_demo/src/main.cpp | 4 ---- examples/LinkUART_demo/src/main.cpp | 4 ---- examples/LinkUniversal_basic/src/main.cpp | 4 ---- examples/LinkWireless_demo/src/main.cpp | 4 ---- 12 files changed, 6 insertions(+), 52 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 30ec694..2701f1e 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -129,12 +129,8 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } diff --git a/examples/LinkCable_basic/src/main.cpp b/examples/LinkCable_basic/src/main.cpp index 57e2c9d..dd109b3 100644 --- a/examples/LinkCable_basic/src/main.cpp +++ b/examples/LinkCable_basic/src/main.cpp @@ -73,12 +73,8 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 398f86f..4fcd527 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -293,11 +293,13 @@ void measureLatency(bool withPong) { totalMs += elapsedMilliseconds; u32 average = Div(totalMs, samples); + std::string output = "Ping latency: \n " + + std::to_string(elapsedCycles) + " cycles\n " + + std::to_string(elapsedMilliseconds) + " ms\n " + + std::to_string(average) + " ms avg" + + "\nValue sent:\n " + std::to_string(sentPacket); VBlankIntrWait(); - log("Ping latency: \n " + std::to_string(elapsedCycles) + " cycles\n " + - std::to_string(elapsedMilliseconds) + " ms\n " + - std::to_string(average) + " ms avg" + "\nValue sent:\n " + - std::to_string(sentPacket)); + log(output); } else { VBlankIntrWait(); log("Waiting..."); @@ -315,14 +317,10 @@ void forceSync() { linkConnection->read(remotePlayerId); } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } void waitFor(u16 key) { diff --git a/examples/LinkGPIO_demo/src/main.cpp b/examples/LinkGPIO_demo/src/main.cpp index 6da9642..5d598b8 100644 --- a/examples/LinkGPIO_demo/src/main.cpp +++ b/examples/LinkGPIO_demo/src/main.cpp @@ -86,14 +86,10 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } std::string mode(std::string name, LinkGPIO::Pin pin) { diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 8babd82..4ba2db8 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -582,16 +582,12 @@ std::string getResultString(LinkMobile::CommandResult cmdResult) { } } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; if (linkMobile != nullptr) VBlankIntrWait(); tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } std::string toStr(char* chars, int size) { diff --git a/examples/LinkPS2Keyboard_demo/src/main.cpp b/examples/LinkPS2Keyboard_demo/src/main.cpp index f272806..c75e2c7 100644 --- a/examples/LinkPS2Keyboard_demo/src/main.cpp +++ b/examples/LinkPS2Keyboard_demo/src/main.cpp @@ -69,12 +69,8 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } diff --git a/examples/LinkPS2Mouse_demo/src/main.cpp b/examples/LinkPS2Mouse_demo/src/main.cpp index f209828..e3b7840 100644 --- a/examples/LinkPS2Mouse_demo/src/main.cpp +++ b/examples/LinkPS2Mouse_demo/src/main.cpp @@ -68,12 +68,8 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } diff --git a/examples/LinkRawCable_demo/src/main.cpp b/examples/LinkRawCable_demo/src/main.cpp index 529a78b..466d870 100644 --- a/examples/LinkRawCable_demo/src/main.cpp +++ b/examples/LinkRawCable_demo/src/main.cpp @@ -115,14 +115,10 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } void wait(u32 verticalLines) { diff --git a/examples/LinkSPI_demo/src/main.cpp b/examples/LinkSPI_demo/src/main.cpp index 23212e3..feb52c7 100644 --- a/examples/LinkSPI_demo/src/main.cpp +++ b/examples/LinkSPI_demo/src/main.cpp @@ -110,14 +110,10 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } void wait(u32 verticalLines) { diff --git a/examples/LinkUART_demo/src/main.cpp b/examples/LinkUART_demo/src/main.cpp index 75fad76..394d085 100644 --- a/examples/LinkUART_demo/src/main.cpp +++ b/examples/LinkUART_demo/src/main.cpp @@ -89,12 +89,8 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index 737d8fa..671a92f 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -123,14 +123,10 @@ int main() { return 0; } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } void waitFor(u16 key) { diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 4c01fa4..45f440f 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -427,14 +427,10 @@ void messageLoop() { } } -std::string lastLoggedText = ""; void log(std::string text) { - if (text == lastLoggedText) - return; tte_erase_screen(); tte_write("#{P:0,0}"); tte_write(text.c_str()); - lastLoggedText = text; } void waitFor(u16 key) { From 47a2e46eb1dbfd2d4448c1f0d91bfcdf59dea592 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 10:53:59 -0300 Subject: [PATCH 134/195] Enabling send/receive latch in LinkWireless_demo --- README.md | 2 +- examples/compile.sh | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ee40d1..92fe850 100644 --- a/README.md +++ b/README.md @@ -179,7 +179,7 @@ You can also change these compile-time constants: - `LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH` and `LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH`: to set the biggest allowed transfer per timer tick. Transfers contain retransmission headers and multiple user messages. These values must be in the range `[6;20]` for servers and `[2;4]` for clients. The default values are `20` and `4`, but you might want to set them a bit lower to reduce CPU usage. - `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. - If you enable this, make sure that `LinkWireless.cpp` gets compiled! For example, in a Makefile-based project, verify that the file is in your `SRCDIRS` list. -- `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce some latency but also reduce overall CPU usage. +- `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce a bit of latency but also reduce _a lot_ the overall CPU usage. It's enabled in the `LinkWireless_demo` example, but disabled in the `LinkUniversal_*` examples. ## Methods diff --git a/examples/compile.sh b/examples/compile.sh index eb9faa4..6aa41fd 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -112,19 +112,23 @@ cd .. cd LinkWireless_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp make rebuild $args sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp cp LinkWireless_demo$suffix.gba ../ cd .. cd LinkWireless_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp mv LinkWireless_demo$suffix.gba backup.gba make rebuild cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba mv backup.gba LinkWireless_demo$suffix.gba sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp cd .. From 062f96e10cc438135edefc8ed430761cfcc16383 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 21:56:42 -0300 Subject: [PATCH 135/195] Disabling multiboot builds in LinkWirelessMultiboot_demo --- examples/LinkWirelessMultiboot_demo/Makefile | 2 +- .../scripts/package.sh | 6 +- examples/compile.sh | 194 +++++++++--------- 3 files changed, 101 insertions(+), 101 deletions(-) diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 24e84eb..4f5647c 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -134,7 +134,7 @@ LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba $(PWD)/../_lib/libgba-sprite-engin # --- switches --- -bMB := 1 # Multiboot build +bMB := 0 # Multiboot build bTEMPS := 0 # Save gcc temporaries (.i and .S files) bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) diff --git a/examples/LinkWirelessMultiboot_demo/scripts/package.sh b/examples/LinkWirelessMultiboot_demo/scripts/package.sh index 14a5684..8f82c49 100755 --- a/examples/LinkWirelessMultiboot_demo/scripts/package.sh +++ b/examples/LinkWirelessMultiboot_demo/scripts/package.sh @@ -1,8 +1,8 @@ #!/bin/bash -FILE_INPUT="LinkWirelessMultiboot_demo.mb.gba" -FILE_TMP="LinkWirelessMultiboot_demo.tmp.mb.gba" -FILE_OUTPUT="LinkWirelessMultiboot_demo.out.mb.gba" +FILE_INPUT="LinkWirelessMultiboot_demo.gba" +FILE_TMP="LinkWirelessMultiboot_demo.tmp.gba" +FILE_OUTPUT="LinkWirelessMultiboot_demo.out.gba" DATA="content.gbfs" if [ ! -f "$DATA" ]; then diff --git a/examples/compile.sh b/examples/compile.sh index 6aa41fd..8bb07c1 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -19,122 +19,122 @@ else sed_inplace_option="-i" fi -cd LinkCable_basic/ -make rebuild $args -cp LinkCable_basic$suffix.gba ../ -cd .. +# cd LinkCable_basic/ +# make rebuild $args +# cp LinkCable_basic$suffix.gba ../ +# cd .. -cd LinkCable_full/ -make rebuild $args -cp LinkCable_full$suffix.gba ../ -cd .. +# cd LinkCable_full/ +# make rebuild $args +# cp LinkCable_full$suffix.gba ../ +# cd .. -cd LinkCable_stress/ -make rebuild $args -cp LinkCable_stress$suffix.gba ../ -cd .. +# cd LinkCable_stress/ +# make rebuild $args +# cp LinkCable_stress$suffix.gba ../ +# cd .. -cd LinkCableMultiboot_demo/ -make rebuild -cp LinkCableMultiboot_demo.mb.gba ../ -cd .. +# cd LinkCableMultiboot_demo/ +# make rebuild +# cp LinkCableMultiboot_demo.mb.gba ../ +# cd .. -cd LinkGPIO_demo/ -make rebuild $args -cp LinkGPIO_demo$suffix.gba ../ -cd .. +# cd LinkGPIO_demo/ +# make rebuild $args +# cp LinkGPIO_demo$suffix.gba ../ +# cd .. -cd LinkMobile_demo/ -make rebuild $args -cp LinkMobile_demo$suffix.gba ../ -cd .. +# cd LinkMobile_demo/ +# make rebuild $args +# cp LinkMobile_demo$suffix.gba ../ +# cd .. -cd LinkPS2Keyboard_demo/ -make rebuild $args -cp LinkPS2Keyboard_demo$suffix.gba ../ -cd .. +# cd LinkPS2Keyboard_demo/ +# make rebuild $args +# cp LinkPS2Keyboard_demo$suffix.gba ../ +# cd .. -cd LinkPS2Mouse_demo/ -make rebuild $args -cp LinkPS2Mouse_demo$suffix.gba ../ -cd .. +# cd LinkPS2Mouse_demo/ +# make rebuild $args +# cp LinkPS2Mouse_demo$suffix.gba ../ +# cd .. -cd LinkRawCable_demo/ -make rebuild $args -cp LinkRawCable_demo$suffix.gba ../ -cd .. +# cd LinkRawCable_demo/ +# make rebuild $args +# cp LinkRawCable_demo$suffix.gba ../ +# cd .. -cd LinkRawWireless_demo/ -sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp -make rebuild $args -sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp -cp LinkRawWireless_demo$suffix.gba ../ -cd .. +# cd LinkRawWireless_demo/ +# sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp +# make rebuild $args +# sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp +# cp LinkRawWireless_demo$suffix.gba ../ +# cd .. -cd LinkSPI_demo/ -make rebuild $args -cp LinkSPI_demo$suffix.gba ../ -cd .. +# cd LinkSPI_demo/ +# make rebuild $args +# cp LinkSPI_demo$suffix.gba ../ +# cd .. -cd LinkUART_demo/ -make rebuild $args -cp LinkUART_demo$suffix.gba ../ -cd .. +# cd LinkUART_demo/ +# make rebuild $args +# cp LinkUART_demo$suffix.gba ../ +# cd .. -cd LinkUniversal_basic/ -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -make rebuild $args -cp LinkUniversal_basic$suffix.gba ../ -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -cd .. +# cd LinkUniversal_basic/ +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# make rebuild $args +# cp LinkUniversal_basic$suffix.gba ../ +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# cd .. -cd LinkCable_full/ -sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -mv LinkCable_full$suffix.gba backup.gba -make rebuild $args -cp LinkCable_full$suffix.gba ../LinkUniversal_full$suffix.gba -mv backup.gba LinkCable_full$suffix.gba -sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -cd .. +# cd LinkCable_full/ +# sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# mv LinkCable_full$suffix.gba backup.gba +# make rebuild $args +# cp LinkCable_full$suffix.gba ../LinkUniversal_full$suffix.gba +# mv backup.gba LinkCable_full$suffix.gba +# sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# cd .. -cd LinkCable_stress/ -sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -mv LinkCable_stress$suffix.gba backup.gba -make rebuild $args -cp LinkCable_stress$suffix.gba ../LinkUniversal_stress$suffix.gba -mv backup.gba LinkCable_stress$suffix.gba -sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -cd .. +# cd LinkCable_stress/ +# sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# mv LinkCable_stress$suffix.gba backup.gba +# make rebuild $args +# cp LinkCable_stress$suffix.gba ../LinkUniversal_stress$suffix.gba +# mv backup.gba LinkCable_stress$suffix.gba +# sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# cd .. -cd LinkWireless_demo/ -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -make rebuild $args -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -cp LinkWireless_demo$suffix.gba ../ -cd .. +# cd LinkWireless_demo/ +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp +# make rebuild $args +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp +# cp LinkWireless_demo$suffix.gba ../ +# cd .. -cd LinkWireless_demo/ -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp -mv LinkWireless_demo$suffix.gba backup.gba -make rebuild -cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba -mv backup.gba LinkWireless_demo$suffix.gba -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp -cd .. +# cd LinkWireless_demo/ +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp +# sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp +# mv LinkWireless_demo$suffix.gba backup.gba +# make rebuild +# cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba +# mv backup.gba LinkWireless_demo$suffix.gba +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp +# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp +# sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp +# cd .. cd LinkWirelessMultiboot_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp make rebuild -cp LinkWirelessMultiboot_demo.out.mb.gba ../LinkWirelessMultiboot_demo.mb.gba +cp LinkWirelessMultiboot_demo.out.gba ../LinkWirelessMultiboot_demo.gba sed $sed_inplace_option -e "s/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp cd .. From 82d315f8ce22324adb613ba4ef88dab03422a302 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 22:39:38 -0300 Subject: [PATCH 136/195] Improving disconnection handling in LinkWirelessMultiboot --- lib/LinkWirelessMultiboot.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 4dd88f8..da179b6 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -108,6 +108,7 @@ class LinkWirelessMultiboot { CANCELED, ADAPTER_NOT_DETECTED, BAD_HANDSHAKE, + CLIENT_DISCONNECTED, FAILURE }; enum State { STOPPED, INITIALIZING, WAITING, PREPARING, SENDING, CONFIRMING }; @@ -516,6 +517,8 @@ class LinkWirelessMultiboot { if (cancel(progress)) return finish(CANCELED); + LINK_WIRELESS_MULTIBOOT_TRY(ensureAllClientsAreStillAlive()); + u32 cursor = findMinCursor(transfers); u32 offset = cursor * LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; auto sequence = Sequence::fromPacketId(cursor); @@ -740,6 +743,17 @@ class LinkWirelessMultiboot { return SUCCESS; } + __attribute__((noinline)) Result ensureAllClientsAreStillAlive() { + LinkRawWireless::SlotStatusResponse slotStatusResponse; + if (!linkRawWireless->getSlotStatus(slotStatusResponse)) + return FAILURE; + + if (slotStatusResponse.connectedClientsSize < progress.connectedClients) + return CLIENT_DISCONNECTED; + + return SUCCESS; + } + __attribute__((noinline)) Result finish(Result result) { linkRawWireless->deactivate(); progress.state = STOPPED; From 3b10bf7be3279137c3a4b00c47a063ba908b54d1 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 19 Aug 2024 22:42:40 -0300 Subject: [PATCH 137/195] Adding cancel feature to LinkWirelessMultiboot_demo --- .../LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index 300f374..b061f84 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -151,6 +151,7 @@ void MultibootScene::load() { log("UP/DOWN: scroll up/down"); log("L/R: scroll page up/down"); log("UP+L/DOWN+R: scroll top/bottom"); + log("L+R: cancel transfer"); log("SELECT: clear"); log("---"); log(""); @@ -191,7 +192,8 @@ void MultibootScene::processButtons() { auto result = linkWirelessMultiboot->sendRom( romToSend, fileLength, "Multiboot", "Test", 0xffff, players, [](LinkWirelessMultiboot::MultibootProgress progress) { - return false; + u16 keys = ~REG_KEYS & KEY_ANY; + return (keys & KEY_L) && (keys & KEY_R); }); log("-> result: " + std::to_string(result)); print(); From 612f286635c1b70ea36d3c8ba5f4da68772c7835 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 20 Aug 2024 00:30:05 -0300 Subject: [PATCH 138/195] Preventing multiboot failures --- .../src/scenes/MultibootScene.cpp | 1 + lib/LinkRawWireless.hpp | 6 +++--- lib/LinkWirelessMultiboot.hpp | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index b061f84..2e45629 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -189,6 +189,7 @@ void MultibootScene::processButtons() { const u8* romToSend = (const u8*)gbfs_get_obj(fs, ROM_FILE_NAME, &fileLength); + clear(); auto result = linkWirelessMultiboot->sendRom( romToSend, fileLength, "Multiboot", "Test", 0xffff, players, [](LinkWirelessMultiboot::MultibootProgress progress) { diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index ff63891..d5f7dcf 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -747,8 +747,8 @@ class LinkRawWireless { LRWLOG("sending ack"); command = linkSPI->transfer( - 0x99660000 | ((commandId + 0x80) & 0xff), []() { return false; }, false, - true); + (COMMAND_HEADER << 16) | ((commandId + RESPONSE_ACK) & 0xff), + []() { return false; }, false, true); if (!reverseAcknowledge(true)) { linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); reset(); @@ -763,7 +763,7 @@ class LinkRawWireless { return remoteCommand; } - LRWLOG("setting SPI to 2Mbps"); + LRWLOG("setting SPI to MASTER"); linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); wait(TRANSFER_WAIT); diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index da179b6..d1e24e5 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -171,7 +171,7 @@ class LinkWirelessMultiboot { _LWMLOG_("SENDING ROM!"); progress.state = SENDING; LINK_WIRELESS_MULTIBOOT_TRY(sendRomBytes(rom, romSize, cancel)) - linkRawWireless->wait(FRAME_LINES); + linkRawWireless->wait(FRAME_LINES * 10); progress.state = CONFIRMING; LINK_WIRELESS_MULTIBOOT_TRY(confirm(cancel)) @@ -517,7 +517,7 @@ class LinkWirelessMultiboot { if (cancel(progress)) return finish(CANCELED); - LINK_WIRELESS_MULTIBOOT_TRY(ensureAllClientsAreStillAlive()); + LINK_WIRELESS_MULTIBOOT_TRY(ensureAllClientsAreStillAlive()) u32 cursor = findMinCursor(transfers); u32 offset = cursor * LinkWirelessOpenSDK::MAX_PAYLOAD_SERVER; From 2fbf8198a595f4b282c662b8f0f095c13715fb2e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 20 Aug 2024 00:59:08 -0300 Subject: [PATCH 139/195] FIX: Making LinkRawWireless::receiveCommandFromAdapter() more stable --- lib/LinkRawWireless.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index d5f7dcf..280315a 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -745,6 +745,8 @@ class LinkRawWireless { LRWLOG("<< " + toHex(paramData)); } + wait(TRANSFER_WAIT); + LRWLOG("sending ack"); command = linkSPI->transfer( (COMMAND_HEADER << 16) | ((commandId + RESPONSE_ACK) & 0xff), From 188ac37c0761f3790caf29dafbafd6a507879ed9 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 20 Aug 2024 02:12:14 -0300 Subject: [PATCH 140/195] Bundling all roms in LinkCableMultiboot_demo and LinkWirelessMultiboot_demo --- .gitignore | 3 +- README.md | 14 +- examples/LinkCableMultiboot_demo/Makefile | 16 +- examples/LinkCableMultiboot_demo/content.gbfs | Bin 0 -> 11232 bytes examples/LinkCableMultiboot_demo/src/main.cpp | 202 ++++++++------ examples/LinkCable_full/Makefile | 1 - examples/LinkRawWireless_demo/Makefile | 1 - examples/LinkWirelessMultiboot_demo/Makefile | 8 +- .../LinkWirelessMultiboot_demo/content.gbfs | Bin 11232 -> 11232 bytes .../src/scenes/MultibootScene.cpp | 96 ++++++- .../src/utils/gbfs => _lib/libgbfs}/gbfs.h | 0 .../src/utils/gbfs => _lib/libgbfs}/libgbfs.c | 0 examples/compile.sh | 262 +++++++++++------- .../scripts/package.sh => gbfs.sh} | 8 +- examples/hello.gbfs | Bin 0 -> 11232 bytes .../{LinkCableMultiboot_demo => }/pad16.sh | 4 +- 16 files changed, 383 insertions(+), 232 deletions(-) create mode 100644 examples/LinkCableMultiboot_demo/content.gbfs rename examples/{LinkWirelessMultiboot_demo/src/utils/gbfs => _lib/libgbfs}/gbfs.h (100%) rename examples/{LinkWirelessMultiboot_demo/src/utils/gbfs => _lib/libgbfs}/libgbfs.c (100%) rename examples/{LinkWirelessMultiboot_demo/scripts/package.sh => gbfs.sh} (87%) mode change 100755 => 100644 create mode 100644 examples/hello.gbfs rename examples/{LinkCableMultiboot_demo => }/pad16.sh (56%) mode change 100755 => 100644 diff --git a/.gitignore b/.gitignore index f9324da..c8ca756 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ build .vscode # Files +examples/multiboot .DS_Store *.elf *.gba @@ -10,4 +11,4 @@ build *.sa1 *.sa2 *.sa3 -*.sa4 \ No newline at end of file +*.sa4 diff --git a/README.md b/README.md index 92fe850..3e83086 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,8 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. - Copy the contents of the `lib/` folder into a directory that is part of your project's include path. Then, `#include` the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp), in your project. No external dependencies are required. - For initial instructions and setup details, refer to the big comment block at the beginning of each file, the documentation included here, and the provided examples. - Check out the [examples](examples) folder. + * **Compiled ROMs are available** in [Releases](https://github.com/afska/gba-link-connection/releases). * The example code uses [libtonc](https://github.com/gbadev-org/libtonc) (and [libugba](https://github.com/AntonioND/libugba) for interrupts), but any library can be used. - * Compiled ROMs are available in [Releases](https://github.com/afska/gba-link-connection/releases). * The examples can be tested on real GBAs or using emulators. * For `LinkCable`/`LinkWireless`/`LinkUniversal`, there are stress tests that you can use to tweak your configuration. @@ -37,7 +37,13 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. > To learn implementation details, you might also want to check out the [docs](docs) folder, which contains important documentation. -### Makefile actions (for all examples) +### Compiling the examples + +Running `./compile.sh` builds all the examples with the right configuration. + +The project must be in a path without spaces; devkitARM and some *nix commands are required. + +All the projects understand this Makefile actions: ```bash make [ clean | build | start | rebuild | restart ] @@ -102,6 +108,8 @@ Name | Return type | Description This tool allows sending Multiboot ROMs (small 256KiB programs that fit in EWRAM) from one GBA to up to 3 slaves, using a single cartridge. +Its demo (`LinkCableMultiboot_demo`) has all the other gba-link-connection ROMs bundled with it, so it can be used to quickly test the library. + ![screenshot](https://github.com/afska/gba-link-connection/assets/1631752/6ff55944-5437-436f-bcc7-a89b05dc5486) ## Methods @@ -216,6 +224,8 @@ Name | Return type | Description This tool allows sending Multiboot ROMs (small 256KiB programs that fit in EWRAM) from one GBA to up to 4 slaves, wirelessly, using a single cartridge. +Its demo (`LinkWirelessMultiboot_demo`) has all the other gba-link-connection ROMs bundled with it, so it can be used to quickly test the library. + https://github.com/afska/gba-link-connection/assets/1631752/9a648bff-b14f-4a85-92d4-ccf366adce2d ## Methods diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index ca14a67..1b66049 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -134,14 +134,14 @@ TITLE := $(PROJ) LIBS := -ltonc -lugba BUILD := build -SRCDIRS := src ../_lib ../../lib +SRCDIRS := src ../_lib ../../lib ../_lib/libgbfs DATADIRS := data INCDIRS := src LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba # --- switches --- -bMB := 1 # Multiboot build +bMB := 0 # Multiboot build bTEMPS := 0 # Save gcc temporaries (.i and .s files) bDEBUG2 := 0 # Generate debug info (bDEBUG2? Not a full DEBUG flag. Yet) @@ -247,9 +247,6 @@ $(BUILD): @[ -d $@ ] || mkdir -p $@ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile arm-none-eabi-nm -Sn $(OUTPUT).elf > $(BUILD)/$(TARGET).map - mv $(OUTPUT).gba tmp.gba - ./pad16.sh tmp.gba - mv tmp.gba $(OUTPUT).gba all : $(BUILD) @@ -278,10 +275,13 @@ endif # End BUILD switch .PHONY: clean rebuild start -rebuild: clean $(BUILD) +rebuild: clean $(BUILD) package -start: - start "$(TARGET).gba" +package: $(BUILD) + ../gbfs.sh "$(TARGET).gba" content.gbfs "$(TARGET).out.gba" + +start: package + start "$(TARGET).out.gba" restart: rebuild start diff --git a/examples/LinkCableMultiboot_demo/content.gbfs b/examples/LinkCableMultiboot_demo/content.gbfs new file mode 100644 index 0000000000000000000000000000000000000000..d3c55f0e4e5ad3dfe2392bef834e296aef761525 GIT binary patch literal 11232 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 Lf49K@6bt+xy=_`G literal 0 HcmV?d00001 diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 2701f1e..05f5062 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -1,129 +1,128 @@ // (0) Include the header #include "../../../lib/LinkCableMultiboot.hpp" +#include #include #include -#include "../../../lib/LinkCable.hpp" -#include "../../_lib/interrupt.h" + +extern "C" { +#include "../../_lib/libgbfs/gbfs.h" +} + +static const GBFS_FILE* fs = find_first_gbfs_file(0); +static u32 selectedFile = 0; void log(std::string text); +void waitFor(u16 key); +bool didPress(u16 key, bool& pressed); -LinkCable* linkCable = new LinkCable(); // (1) Create a LinkCableMultiboot instance LinkCableMultiboot* linkCableMultiboot = new LinkCableMultiboot(); +void selectLeft() { + if (selectedFile == 0) + return; + selectedFile--; +} + +void selectRight() { + if ((int)selectedFile >= fs->dir_nmemb - 1) + return; + selectedFile++; +} + void init() { REG_DISPCNT = DCNT_MODE0 | DCNT_BG0; tte_init_se_default(0, BG_CBB(0) | BG_SBB(31)); - interrupt_init(); - interrupt_set_handler(INTR_VBLANK, LINK_CABLE_ISR_VBLANK); - interrupt_enable(INTR_VBLANK); - interrupt_set_handler(INTR_SERIAL, LINK_CABLE_ISR_SERIAL); - interrupt_enable(INTR_SERIAL); - interrupt_set_handler(INTR_TIMER3, LINK_CABLE_ISR_TIMER); - interrupt_enable(INTR_TIMER3); + irq_init(NULL); + irq_add(II_VBLANK, NULL); } int main() { init(); - // Hardcoded ROM length - // This is optional, you could also use `LINK_CABLE_MULTIBOOT_MAX_ROM_SIZE` - // (but the transfer will be painfully slow) - u32 romSize = 39264; - // Note that this project's Makefile pads the ROM to a 0x10 boundary - // (as required for Multiboot). + // Ensure there are GBFS files + if (fs == NULL) { + log("! GBFS file not found"); + while (true) + ; + } else if (gbfs_get_nth_obj(fs, 0, NULL, NULL) == NULL) { + log("! No files found (GBFS)"); + while (true) + ; + } - // Each player's input - u16 data[LINK_CABLE_MAX_PLAYERS]; - for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) - data[i] = 0; - - bool isSenderMode = true; - LinkCableMultiboot::Result result = LinkCableMultiboot::Result::CANCELED; + bool left = false, right = false, a = false, b = false; while (true) { - u16 keys = ~REG_KEYS & KEY_ANY; - - // Sender options - if (isSenderMode) { - if (result != LinkCableMultiboot::Result::SUCCESS) - log("LinkCableMultiboot_demo\n (v7.0.0)\n\n" - "Press START to send the ROM...\n" - "Press B to set client mode..."); - - if (keys & KEY_START) { - log("Sending... (SELECT to cancel)"); - linkCable->deactivate(); - - // (3) Send the ROM - result = - linkCableMultiboot->sendRom((const u8*)MEM_EWRAM, romSize, []() { - u16 keys = ~REG_KEYS & KEY_ANY; - return keys & KEY_SELECT; - }); - - // Print results and wait - log("Result: " + std::to_string(result) + "\n" + - "Press A to continue..."); - do { - keys = ~REG_KEYS & KEY_ANY; - } while (!(keys & KEY_A)); - - // Switch to client mode if it worked - if (result == LinkCableMultiboot::Result::SUCCESS) { - linkCable->activate(); - VBlankIntrWait(); - continue; - } - } - - // Switch to client mode manually (for slaves) - if (keys & KEY_B) { - isSenderMode = false; - linkCable->activate(); - VBlankIntrWait(); - continue; - } - - // In sender mode, don't continue until the ROM is sent successfully - if (result != LinkCableMultiboot::Result::SUCCESS) { - VBlankIntrWait(); - continue; + // Get selected ROM name + char name[32]; + u32 romSize; + const u8* romToSend = + (const u8*)gbfs_get_nth_obj(fs, selectedFile, name, &romSize); + for (u32 i = 0; i < 32; i++) { + if (name[i] == '.') { + name[i] = '\0'; + break; } } - // --- - // Client mode - // --- + // Menu + log("LinkCableMultiboot_demo\n (v7.0.0)\n\n" + "Press A to send the ROM...\n" + "Press B to launch the ROM...\nLEFT/RIGHT: select ROM\n\nSelected " + "ROM:\n " + + std::string(name)); - linkCable->sync(); - linkCable->send(keys + 1); + // Select ROM + if (didPress(KEY_LEFT, left)) + selectLeft(); + if (didPress(KEY_RIGHT, right)) + selectRight(); - std::string output = ""; - if (linkCable->isConnected()) { - u8 playerCount = linkCable->playerCount(); - u8 currentPlayerId = linkCable->currentPlayerId(); + // Send ROM + if (didPress(KEY_A, a)) { + log("Sending... (SELECT to cancel)"); - output += "Players: " + std::to_string(playerCount) + "\n"; + // (2) Send the ROM + auto result = linkCableMultiboot->sendRom(romToSend, romSize, []() { + u16 keys = ~REG_KEYS & KEY_ANY; + return keys & KEY_SELECT; + }); - output += "("; - for (u32 i = 0; i < playerCount; i++) { - while (linkCable->canRead(i)) - data[i] = linkCable->read(i) - 1; + // Print results and wait + log("Result: " + std::to_string(result) + "\n" + + "Press DOWN to continue..."); + waitFor(KEY_DOWN); + } - output += std::to_string(data[i]) + (i + 1 == playerCount ? "" : ", "); - } - output += ")\n"; - output += "_keys: " + std::to_string(keys) + "\n"; - output += "_pID: " + std::to_string(currentPlayerId); - } else { - output += std::string("Waiting... "); + // Launch ROM + if (didPress(KEY_B, b)) { + log("Launching..."); + VBlankIntrWait(); + + REG_IME = 0; + + u32 fileLength; + const u8* romToSend = + (const u8*)gbfs_get_nth_obj(fs, selectedFile, NULL, &fileLength); + + void* EWRAM = (void*)0x02000000; + memcpy(EWRAM, romToSend, fileLength); + + asm volatile( + "mov r0, %0\n" + "bx r0\n" + : + : "r"(EWRAM) + : "r0"); + + while (true) + ; } VBlankIntrWait(); - log(output); } return 0; @@ -134,3 +133,22 @@ void log(std::string text) { tte_write("#{P:0,0}"); tte_write(text.c_str()); } + +void waitFor(u16 key) { + u16 keys; + do { + keys = ~REG_KEYS & KEY_ANY; + } while (!(keys & key)); +} + +bool didPress(u16 key, bool& pressed) { + u16 keys = ~REG_KEYS & KEY_ANY; + bool isPressedNow = false; + if ((keys & key) && !pressed) { + pressed = true; + isPressedNow = true; + } + if (pressed && !(keys & key)) + pressed = false; + return isPressedNow; +} diff --git a/examples/LinkCable_full/Makefile b/examples/LinkCable_full/Makefile index c6e99da..02f0782 100644 --- a/examples/LinkCable_full/Makefile +++ b/examples/LinkCable_full/Makefile @@ -126,7 +126,6 @@ BUILD := build SRCDIRS := src ../_lib ../../lib \ src/scenes \ src/utils - DATADIRS := INCDIRS := src LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba $(PWD)/../_lib/libgba-sprite-engine diff --git a/examples/LinkRawWireless_demo/Makefile b/examples/LinkRawWireless_demo/Makefile index c6e99da..02f0782 100644 --- a/examples/LinkRawWireless_demo/Makefile +++ b/examples/LinkRawWireless_demo/Makefile @@ -126,7 +126,6 @@ BUILD := build SRCDIRS := src ../_lib ../../lib \ src/scenes \ src/utils - DATADIRS := INCDIRS := src LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba $(PWD)/../_lib/libgba-sprite-engine diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 4f5647c..8736eae 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -123,11 +123,9 @@ TITLE := $(PROJ) LIBS := -ltonc -lugba -lgba-sprite-engine BUILD := build -SRCDIRS := src ../_lib ../../lib \ +SRCDIRS := src ../_lib ../../lib ../_lib/libgbfs \ src/scenes \ - src/utils \ - src/utils/gbfs - + src/utils DATADIRS := INCDIRS := src LIBDIRS := $(TONCLIB) $(PWD)/../_lib/libugba $(PWD)/../_lib/libgba-sprite-engine @@ -283,7 +281,7 @@ endif # End BUILD switch rebuild: clean $(BUILD) package package: $(BUILD) - ./scripts/package.sh + ../gbfs.sh "$(TARGET).gba" content.gbfs "$(TARGET).out.gba" start: package start "$(TARGET).out.gba" diff --git a/examples/LinkWirelessMultiboot_demo/content.gbfs b/examples/LinkWirelessMultiboot_demo/content.gbfs index 0bfec9ea48bf96def6f4e878afa42ed57671f08e..d3c55f0e4e5ad3dfe2392bef834e296aef761525 100644 GIT binary patch delta 30 ecmaD5{vdpUg0M$wPENjFdQu_-9BedRs|^60;Rrea delta 30 lcmaD5{vdpUf^boOu5L-bZb?yMUU6D#kzRUI;zr}O+5p7z3^o7& diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index 2e45629..b4b69fe 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -1,8 +1,10 @@ +// (0) Include the header #include "../../../../lib/LinkWirelessMultiboot.hpp" #include "MultibootScene.h" #include +#include #include #include @@ -10,13 +12,11 @@ #include "utils/SceneUtils.h" extern "C" { -#include "utils/gbfs/gbfs.h" +#include "../../_lib/libgbfs/gbfs.h" } static const GBFS_FILE* fs = find_first_gbfs_file(0); -const char* ROM_FILE_NAME = "rom-to-transfer.gba"; - MultibootScene::MultibootScene(std::shared_ptr engine) : Scene(engine) {} @@ -24,6 +24,10 @@ static std::unique_ptr aHandler = std::unique_ptr(new InputHandler()); static std::unique_ptr bHandler = std::unique_ptr(new InputHandler()); +static std::unique_ptr leftHandler = + std::unique_ptr(new InputHandler()); +static std::unique_ptr rightHandler = + std::unique_ptr(new InputHandler()); static std::unique_ptr upHandler = std::unique_ptr(new InputHandler()); static std::unique_ptr downHandler = @@ -34,9 +38,12 @@ static std::unique_ptr rHandler = std::unique_ptr(new InputHandler()); static std::unique_ptr selectHandler = std::unique_ptr(new InputHandler()); +static std::unique_ptr startHandler = + std::unique_ptr(new InputHandler()); static std::vector logLines; static u32 currentLogLine = 0; +static u32 selectedFile = 0; static u32 players = 5; #define MAX_LINES 20 @@ -110,6 +117,59 @@ void log(std::string string) { scrollPageDown(); } +void printFile() { + char name[32]; + gbfs_get_nth_obj(fs, selectedFile, name, NULL); + for (u32 i = 0; i < 32; i++) { + if (name[i] == '.') { + name[i] = '\0'; + break; + } + } + + log("! selected file: " + std::to_string(selectedFile + 1) + "/" + + std::to_string(fs->dir_nmemb)); + log(" " + std::string(name)); +} + +void selectLeft() { + if (selectedFile == 0) + return printFile(); + selectedFile--; + printFile(); +} + +void selectRight() { + if ((int)selectedFile >= fs->dir_nmemb - 1) + return printFile(); + selectedFile++; + printFile(); +} + +void launchROM() { + log("Launching..."); + VBlankIntrWait(); + + REG_IME = 0; + + u32 fileLength; + const u8* romToSend = + (const u8*)gbfs_get_nth_obj(fs, selectedFile, NULL, &fileLength); + + void* EWRAM = (void*)0x02000000; + memcpy(EWRAM, romToSend, fileLength); + + asm volatile( + "mov r0, %0\n" + "bx r0\n" + : + : "r"(EWRAM) + : "r0"); + + while (true) + ; +} + std::vector MultibootScene::backgrounds() { return {}; } @@ -140,14 +200,15 @@ void MultibootScene::load() { log("! GBFS file not found"); while (true) ; - } else if (gbfs_get_obj(fs, ROM_FILE_NAME, NULL) == NULL) { - log("! File not found in GBFS:"); - log(" " + std::string(ROM_FILE_NAME)); + } else if (gbfs_get_nth_obj(fs, 0, NULL, NULL) == NULL) { + log("! No files found (GBFS)"); while (true) ; } log("A: send ROM"); - log("B: toggle players"); + log("B: launch ROM"); + log("START: toggle players"); + log("LEFT/RIGHT: select ROM"); log("UP/DOWN: scroll up/down"); log("L/R: scroll page up/down"); log("UP+L/DOWN+R: scroll top/bottom"); @@ -156,6 +217,8 @@ void MultibootScene::load() { log("---"); log(""); togglePlayers(); + selectedFile = fs->dir_nmemb - 1; + printFile(); } void MultibootScene::tick(u16 keys) { @@ -173,23 +236,29 @@ void MultibootScene::tick(u16 keys) { void MultibootScene::processKeys(u16 keys) { aHandler->setIsPressed(keys & KEY_A); bHandler->setIsPressed(keys & KEY_B); + leftHandler->setIsPressed(keys & KEY_LEFT); + rightHandler->setIsPressed(keys & KEY_RIGHT); upHandler->setIsPressed(keys & KEY_UP); downHandler->setIsPressed(keys & KEY_DOWN); lHandler->setIsPressed(keys & KEY_L); rHandler->setIsPressed(keys & KEY_R); selectHandler->setIsPressed(keys & KEY_SELECT); + startHandler->setIsPressed(keys & KEY_START); } void MultibootScene::processButtons() { - if (bHandler->hasBeenPressedNow()) + if (startHandler->hasBeenPressedNow()) togglePlayers(); if (aHandler->hasBeenPressedNow()) { u32 fileLength; const u8* romToSend = - (const u8*)gbfs_get_obj(fs, ROM_FILE_NAME, &fileLength); + (const u8*)gbfs_get_nth_obj(fs, selectedFile, NULL, &fileLength); clear(); + printFile(); + + // (2) Send the ROM auto result = linkWirelessMultiboot->sendRom( romToSend, fileLength, "Multiboot", "Test", 0xffff, players, [](LinkWirelessMultiboot::MultibootProgress progress) { @@ -214,6 +283,12 @@ void MultibootScene::processButtons() { scrollPageDown(); } + if (leftHandler->hasBeenPressedNow()) + selectLeft(); + + if (rightHandler->hasBeenPressedNow()) + selectRight(); + if (upHandler->getIsPressed()) scrollBack(); @@ -222,6 +297,9 @@ void MultibootScene::processButtons() { if (selectHandler->hasBeenPressedNow()) clear(); + + if (bHandler->hasBeenPressedNow()) + launchROM(); } void MultibootScene::togglePlayers() { diff --git a/examples/LinkWirelessMultiboot_demo/src/utils/gbfs/gbfs.h b/examples/_lib/libgbfs/gbfs.h similarity index 100% rename from examples/LinkWirelessMultiboot_demo/src/utils/gbfs/gbfs.h rename to examples/_lib/libgbfs/gbfs.h diff --git a/examples/LinkWirelessMultiboot_demo/src/utils/gbfs/libgbfs.c b/examples/_lib/libgbfs/libgbfs.c similarity index 100% rename from examples/LinkWirelessMultiboot_demo/src/utils/gbfs/libgbfs.c rename to examples/_lib/libgbfs/libgbfs.c diff --git a/examples/compile.sh b/examples/compile.sh index 8bb07c1..cfdcca2 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -1,16 +1,6 @@ #!/bin/bash -# Usage: -# ./compile.sh -# ./compile.sh multiboot - -if [ "$1" = "multiboot" ]; then - args="bMB=1" - suffix=".mb" -else - args="bMB=0" - suffix="" -fi +set -e if [ "$(uname)" = "Darwin" ]; then # macOS @@ -19,122 +9,180 @@ else sed_inplace_option="-i" fi -# cd LinkCable_basic/ -# make rebuild $args -# cp LinkCable_basic$suffix.gba ../ -# cd .. +compile() { + if [ "$1" = "multiboot" ]; then + args="bMB=1" + suffix=".mb" + folder="multiboot" + else + args="bMB=0" + suffix="" + folder="." + fi -# cd LinkCable_full/ -# make rebuild $args -# cp LinkCable_full$suffix.gba ../ -# cd .. + # LinkCable_basic + cd LinkCable_basic/ + make rebuild $args + cp LinkCable_basic$suffix.gba ../$folder/ + cd .. -# cd LinkCable_stress/ -# make rebuild $args -# cp LinkCable_stress$suffix.gba ../ -# cd .. + # LinkCable_full + cd LinkCable_full/ + make rebuild $args + cp LinkCable_full$suffix.gba ../$folder/ + cd .. -# cd LinkCableMultiboot_demo/ -# make rebuild -# cp LinkCableMultiboot_demo.mb.gba ../ -# cd .. + # LinkCable_stress + cd LinkCable_stress/ + make rebuild $args + cp LinkCable_stress$suffix.gba ../$folder/ + cd .. -# cd LinkGPIO_demo/ -# make rebuild $args -# cp LinkGPIO_demo$suffix.gba ../ -# cd .. + # LinkGPIO_demo + cd LinkGPIO_demo/ + make rebuild $args + cp LinkGPIO_demo$suffix.gba ../$folder/ + cd .. -# cd LinkMobile_demo/ -# make rebuild $args -# cp LinkMobile_demo$suffix.gba ../ -# cd .. + # LinkMobile_demo + cd LinkMobile_demo/ + make rebuild $args + cp LinkMobile_demo$suffix.gba ../$folder/ + cd .. -# cd LinkPS2Keyboard_demo/ -# make rebuild $args -# cp LinkPS2Keyboard_demo$suffix.gba ../ -# cd .. + # LinkPS2Keyboard_demo + cd LinkPS2Keyboard_demo/ + make rebuild $args + cp LinkPS2Keyboard_demo$suffix.gba ../$folder/ + cd .. -# cd LinkPS2Mouse_demo/ -# make rebuild $args -# cp LinkPS2Mouse_demo$suffix.gba ../ -# cd .. + # LinkPS2Mouse_demo + cd LinkPS2Mouse_demo/ + make rebuild $args + cp LinkPS2Mouse_demo$suffix.gba ../$folder/ + cd .. -# cd LinkRawCable_demo/ -# make rebuild $args -# cp LinkRawCable_demo$suffix.gba ../ -# cd .. + # LinkRawCable_demo + cd LinkRawCable_demo/ + make rebuild $args + cp LinkRawCable_demo$suffix.gba ../$folder/ + cd .. -# cd LinkRawWireless_demo/ -# sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp -# make rebuild $args -# sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp -# cp LinkRawWireless_demo$suffix.gba ../ -# cd .. + # LinkRawWireless_demo + cd LinkRawWireless_demo/ + sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp + make rebuild $args + sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp + cp LinkRawWireless_demo$suffix.gba ../$folder/ + cd .. -# cd LinkSPI_demo/ -# make rebuild $args -# cp LinkSPI_demo$suffix.gba ../ -# cd .. + # LinkSPI_demo + cd LinkSPI_demo/ + make rebuild $args + cp LinkSPI_demo$suffix.gba ../$folder/ + cd .. -# cd LinkUART_demo/ -# make rebuild $args -# cp LinkUART_demo$suffix.gba ../ -# cd .. + # LinkUART_demo + cd LinkUART_demo/ + make rebuild $args + cp LinkUART_demo$suffix.gba ../$folder/ + cd .. -# cd LinkUniversal_basic/ -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# make rebuild $args -# cp LinkUniversal_basic$suffix.gba ../ -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# cd .. + # LinkUniversal_basic + cd LinkUniversal_basic/ + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + make rebuild $args + cp LinkUniversal_basic$suffix.gba ../$folder/ + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + cd .. -# cd LinkCable_full/ -# sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# mv LinkCable_full$suffix.gba backup.gba -# make rebuild $args -# cp LinkCable_full$suffix.gba ../LinkUniversal_full$suffix.gba -# mv backup.gba LinkCable_full$suffix.gba -# sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# cd .. + # LinkUniversal_full + cd LinkCable_full/ + sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + mv LinkCable_full$suffix.gba backup.gba + make rebuild $args + cp LinkCable_full$suffix.gba ../$folder/LinkUniversal_full$suffix.gba + mv backup.gba LinkCable_full$suffix.gba + sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + cd .. -# cd LinkCable_stress/ -# sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# mv LinkCable_stress$suffix.gba backup.gba -# make rebuild $args -# cp LinkCable_stress$suffix.gba ../LinkUniversal_stress$suffix.gba -# mv backup.gba LinkCable_stress$suffix.gba -# sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# cd .. + # LinkUniversal_stress + cd LinkCable_stress/ + sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + mv LinkCable_stress$suffix.gba backup.gba + make rebuild $args + cp LinkCable_stress$suffix.gba ../$folder/LinkUniversal_stress$suffix.gba + mv backup.gba LinkCable_stress$suffix.gba + sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + cd .. -# cd LinkWireless_demo/ -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -# make rebuild $args -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -# cp LinkWireless_demo$suffix.gba ../ -# cd .. + # LinkWireless_demo + cd LinkWireless_demo/ + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + make rebuild $args + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + cp LinkWireless_demo$suffix.gba ../$folder/ + cd .. -# cd LinkWireless_demo/ -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -# sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp -# mv LinkWireless_demo$suffix.gba backup.gba -# make rebuild -# cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba -# mv backup.gba LinkWireless_demo$suffix.gba -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp -# sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp -# sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp -# cd .. + # LinkWireless_demo_profiler + if [ "$1" != "multiboot" ]; then + cd LinkWireless_demo/ + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp + mv LinkWireless_demo$suffix.gba backup.gba + make rebuild + cp LinkWireless_demo.gba ../$folder/LinkWireless_demo_profiler.gba + mv backup.gba LinkWireless_demo$suffix.gba + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp + cd .. + fi +} +# Cleanup +rm -rf multiboot/ +mkdir -p multiboot/ +rm -f *.gba *.sav *.sa2 + +# Compile all ROMs as multiboot +compile "multiboot" +cd multiboot/ +cp ../hello.gbfs . +ungbfs hello.gbfs +rm hello.gbfs +for file in *.gba; do + ../pad16.sh "$file" +done +gbfs roms.gbfs * +cd .. + +# Bundle all multiboot ROMs in the multiboot launchers +cp multiboot/roms.gbfs LinkCableMultiboot_demo/content.gbfs +cp multiboot/roms.gbfs LinkWirelessMultiboot_demo/content.gbfs + +# LinkCableMultiboot_demo +cd LinkCableMultiboot_demo/ +make rebuild +cp LinkCableMultiboot_demo.out.gba ../LinkCableMultiboot_demo.gba +cp ../hello.gbfs content.gbfs +cd .. + +# LinkWirelessMultiboot_demo cd LinkWirelessMultiboot_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp make rebuild cp LinkWirelessMultiboot_demo.out.gba ../LinkWirelessMultiboot_demo.gba +cp ../hello.gbfs content.gbfs sed $sed_inplace_option -e "s/#define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/\/\/ #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING/g" ../../lib/LinkWirelessMultiboot.hpp cd .. + +# Compile all ROMs as normal +compile diff --git a/examples/LinkWirelessMultiboot_demo/scripts/package.sh b/examples/gbfs.sh old mode 100755 new mode 100644 similarity index 87% rename from examples/LinkWirelessMultiboot_demo/scripts/package.sh rename to examples/gbfs.sh index 8f82c49..7f60b80 --- a/examples/LinkWirelessMultiboot_demo/scripts/package.sh +++ b/examples/gbfs.sh @@ -1,9 +1,9 @@ #!/bin/bash -FILE_INPUT="LinkWirelessMultiboot_demo.gba" -FILE_TMP="LinkWirelessMultiboot_demo.tmp.gba" -FILE_OUTPUT="LinkWirelessMultiboot_demo.out.gba" -DATA="content.gbfs" +FILE_INPUT="$1" +FILE_TMP="tmp.gba" +DATA="$2" +FILE_OUTPUT="$3" if [ ! -f "$DATA" ]; then echo "" diff --git a/examples/hello.gbfs b/examples/hello.gbfs new file mode 100644 index 0000000000000000000000000000000000000000..d3c55f0e4e5ad3dfe2392bef834e296aef761525 GIT binary patch literal 11232 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 Lf49K@6bt+xy=_`G literal 0 HcmV?d00001 diff --git a/examples/LinkCableMultiboot_demo/pad16.sh b/examples/pad16.sh old mode 100755 new mode 100644 similarity index 56% rename from examples/LinkCableMultiboot_demo/pad16.sh rename to examples/pad16.sh index 1dfce6e..f0673df --- a/examples/LinkCableMultiboot_demo/pad16.sh +++ b/examples/pad16.sh @@ -1,8 +1,8 @@ #!/bin/bash -SIZE=$(wc -c < $1) +SIZE=$(wc -c < "$1") DIFF=$(($SIZE % 16)) if (($DIFF > 0)); then PAD_NEEDED=$((16 - $DIFF)) - dd if=/dev/zero bs=1 count=$PAD_NEEDED >> $1 + dd if=/dev/zero bs=1 count=$PAD_NEEDED >> "$1" fi From 0bdd88018f190453d1b3719f15108dbd2246165b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 01:27:12 -0300 Subject: [PATCH 141/195] LinkWireless: Fixing serve(...) while hosting --- README.md | 4 ++-- examples/LinkWireless_demo/src/main.cpp | 14 ++++++++++++++ lib/LinkWireless.hpp | 20 +++++++++----------- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 3e83086..e2141aa 100644 --- a/README.md +++ b/README.md @@ -193,8 +193,8 @@ You can also change these compile-time constants: - Most of these methods return a boolean, indicating if the action was successful. If not, you can call `getLastError()` to know the reason. Usually, unless it's a trivial error (like buffers being full), the connection with the adapter is reset and the game needs to start again. - You can check the connection state at any time with `getState()`. -- Until a session starts, all actions are synchronic. -- During sessions (when the state is `SERVING` or `CONNECTED`), the message transfers are IRQ-driven, so `send(...)` and `receive(...)` won't waste extra cycles. +- Until a session starts, all actions are synchronous. +- During sessions (when the state is `SERVING` or `CONNECTED`), the message transfers are IRQ-driven, so `send(...)` and `receive(...)` won't waste extra cycles. The synchronous method that can be called during a session is `serve(...)`, which can be used to update the broadcast data. Name | Return type | Description --- | --- | --- diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 45f440f..957003f 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -336,6 +336,20 @@ void messageLoop() { // Packet loss check setting if (didPress(KEY_UP, switching)) { +#ifdef PROFILING_ENABLED + // In the profiler ROM, pressing UP will update the broadcast data + if (linkWireless->getState() == LinkWireless::State::SERVING) { + linkWireless->serve("LinkWireless", + ("N = " + std::to_string(counters[0])).c_str(), + counters[0]); + if (linkWireless->getLastError() == + LinkWireless::Error::BUSY_TRY_AGAIN) { + log("Busy!"); + waitFor(KEY_DOWN); + } + } +#endif + altView = !altView; #ifndef PROFILING_ENABLED if (!altView) { diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 4d9c095..a1980ce 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -339,10 +339,6 @@ class LinkWireless { lastError = WRONG_STATE; return false; } - if (asyncCommand.isActive) { - lastError = BUSY_TRY_AGAIN; - return false; - } if (std::strlen(gameName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH) { lastError = GAME_NAME_TOO_LONG; return false; @@ -352,6 +348,13 @@ class LinkWireless { return false; } + isSendingSyncCommand = true; + if (asyncCommand.isActive) { + lastError = BUSY_TRY_AGAIN; + isSendingSyncCommand = false; + return false; + } + char finalGameName[LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; char finalUserName[LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1]; copyName(finalGameName, gameName, LINK_WIRELESS_MAX_GAME_NAME_LENGTH); @@ -376,9 +379,8 @@ class LinkWireless { bool success = sendCommand(COMMAND_BROADCAST, true).success; - if (state != SERVING) { + if (state != SERVING) success = success && sendCommand(COMMAND_START_HOST).success; - } if (!success) { reset(); @@ -1494,6 +1496,7 @@ class LinkWireless { void resetState() { this->state = NEEDS_RESET; + this->asyncCommand.isActive = false; this->sessionState.playerCount = 1; this->sessionState.currentPlayerId = 0; this->sessionState.recvTimeout = 0; @@ -1513,7 +1516,6 @@ class LinkWireless { this->sessionState.lastPacketIdFromClients[i] = 0; this->sessionState.lastConfirmationFromClients[i] = 0; } - this->asyncCommand.isActive = false; this->nextCommandDataSize = 0; this->nextAsyncCommandDataSize = 0; @@ -1617,10 +1619,6 @@ class LinkWireless { CommandResult result; u32 command = buildCommand(type, withData ? (u16)nextCommandDataSize : 0); - LINK_WIRELESS_BARRIER; - isSendingSyncCommand = true; - LINK_WIRELESS_BARRIER; - if (transfer(command) != DATA_REQUEST_VALUE) { isSendingSyncCommand = false; return result; From 576d8047ffc44d7ac75407612cb5d26e6763579e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 04:32:21 -0300 Subject: [PATCH 142/195] Not checking for 0xD2 at all in the mobile adapter --- examples/LinkMobile_demo/src/main.cpp | 2 -- lib/LinkMobile.hpp | 20 -------------------- 2 files changed, 22 deletions(-) diff --git a/examples/LinkMobile_demo/src/main.cpp b/examples/LinkMobile_demo/src/main.cpp index 4ba2db8..ea8e1e7 100644 --- a/examples/LinkMobile_demo/src/main.cpp +++ b/examples/LinkMobile_demo/src/main.cpp @@ -561,8 +561,6 @@ std::string getResultString(LinkMobile::CommandResult cmdResult) { return "PENDING"; case LinkMobile::CommandResult::SUCCESS: return "SUCCESS"; - case LinkMobile::CommandResult::NOT_WAITING: - return "NOT_WAITING"; case LinkMobile::CommandResult::INVALID_DEVICE_ID: return "INVALID_DEVICE_ID"; case LinkMobile::CommandResult::INVALID_COMMAND_ACK: diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 241e98a..90d7eff 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -228,7 +228,6 @@ class LinkMobile { enum CommandResult { PENDING, SUCCESS, - NOT_WAITING, INVALID_DEVICE_ID, INVALID_COMMAND_ACK, INVALID_MAGIC_BYTES, @@ -1624,16 +1623,6 @@ class LinkMobile { const u8* commandBytes = (const u8*)&asyncCommand.cmd; u32 mainSize = PREAMBLE_SIZE + asyncCommand.cmd.header.size; - // (first packet is garbage) - bool didFullyTransferFirstPacket = asyncCommand.transferred >= 2; - bool isAcknowledgement = - asyncCommand.transferred >= mainSize + CHECKSUM_SIZE + 1; - if (didFullyTransferFirstPacket && !isAcknowledgement && - newData != ADAPTER_WAITING) { - _LMLOG_("!! not waiting: %X", newData); - return asyncCommand.fail(CommandResult::NOT_WAITING); - } - if (asyncCommand.transferred < mainSize) { // Magic Bytes (2) + Packet Header + Packet Data advance8(commandBytes[asyncCommand.transferred]); @@ -1663,15 +1652,6 @@ class LinkMobile { u32 padding = alignment != 0 ? 4 - alignment : 0; u32 mainSize = PREAMBLE_SIZE + dataSize + padding; - // (first packet is garbage) - bool didFullyTransferFirstPacket = asyncCommand.transferred >= 8; - bool isAcknowledgement = asyncCommand.transferred >= mainSize; - if (didFullyTransferFirstPacket && !isAcknowledgement && - newData != ADAPTER_WAITING && newData != ADAPTER_WAITING_32BIT) { - _LMLOG_("!! not waiting: %X", newData); - return asyncCommand.fail(CommandResult::NOT_WAITING); - } - if (asyncCommand.transferred == 4) { // Header+Data || Header+Checksum advance32(dataSize > 0 From 681080f1fee8414b5c915f43cd5c6ed81f46986e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 06:38:38 -0300 Subject: [PATCH 143/195] FIX: hello.gba padding --- examples/LinkCableMultiboot_demo/content.gbfs | Bin 11232 -> 11232 bytes .../LinkWirelessMultiboot_demo/content.gbfs | Bin 11232 -> 11232 bytes examples/hello.gbfs | Bin 11232 -> 11232 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/content.gbfs b/examples/LinkCableMultiboot_demo/content.gbfs index d3c55f0e4e5ad3dfe2392bef834e296aef761525..55a0268c98af211de85e87a75fa081eb778c58f5 100644 GIT binary patch delta 12 TcmaD5{vdpU1>=H^mdmvPC@uw* delta 12 TcmaD5{vdpU1>=;BmdmvPC-Mb| diff --git a/examples/LinkWirelessMultiboot_demo/content.gbfs b/examples/LinkWirelessMultiboot_demo/content.gbfs index d3c55f0e4e5ad3dfe2392bef834e296aef761525..55a0268c98af211de85e87a75fa081eb778c58f5 100644 GIT binary patch delta 12 TcmaD5{vdpU1>=H^mdmvPC@uw* delta 12 TcmaD5{vdpU1>=;BmdmvPC-Mb| diff --git a/examples/hello.gbfs b/examples/hello.gbfs index d3c55f0e4e5ad3dfe2392bef834e296aef761525..55a0268c98af211de85e87a75fa081eb778c58f5 100644 GIT binary patch delta 12 TcmaD5{vdpU1>=H^mdmvPC@uw* delta 12 TcmaD5{vdpU1>=;BmdmvPC-Mb| From a1ecedf5c5d22962770de4c8d74c82e097d2e31f Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 06:40:45 -0300 Subject: [PATCH 144/195] Fixing hello.gba header --- examples/LinkCableMultiboot_demo/content.gbfs | Bin 11232 -> 11232 bytes .../LinkWirelessMultiboot_demo/content.gbfs | Bin 11232 -> 11232 bytes examples/hello.gbfs | Bin 11232 -> 11232 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/content.gbfs b/examples/LinkCableMultiboot_demo/content.gbfs index 55a0268c98af211de85e87a75fa081eb778c58f5..9518bd6198c60a6569fd104b0edaa291ec1cfb8f 100644 GIT binary patch delta 23 fcmaD5{vdpU3y;eGb%B|)7Ae}cG;wVVn4k>+gu4nr delta 23 ecmaD5{vdpU3r~<+sIIS*zkdh=1H;CE3EBW@I0vQx diff --git a/examples/LinkWirelessMultiboot_demo/content.gbfs b/examples/LinkWirelessMultiboot_demo/content.gbfs index 55a0268c98af211de85e87a75fa081eb778c58f5..9518bd6198c60a6569fd104b0edaa291ec1cfb8f 100644 GIT binary patch delta 23 fcmaD5{vdpU3y;eGb%B|)7Ae}cG;wVVn4k>+gu4nr delta 23 ecmaD5{vdpU3r~<+sIIS*zkdh=1H;CE3EBW@I0vQx diff --git a/examples/hello.gbfs b/examples/hello.gbfs index 55a0268c98af211de85e87a75fa081eb778c58f5..9518bd6198c60a6569fd104b0edaa291ec1cfb8f 100644 GIT binary patch delta 23 fcmaD5{vdpU3y;eGb%B|)7Ae}cG;wVVn4k>+gu4nr delta 23 ecmaD5{vdpU3r~<+sIIS*zkdh=1H;CE3EBW@I0vQx From b8fc56b795a59699649281bc692683d4948450fc Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 08:29:12 -0300 Subject: [PATCH 145/195] Adding SPI mode to LinkCableMultiboot --- README.md | 2 +- lib/LinkCableMultiboot.hpp | 79 +++++++++++++++++++++++++++++++------- 2 files changed, 67 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index e2141aa..b67d787 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ Its demo (`LinkCableMultiboot_demo`) has all the other gba-link-connection ROMs Name | Return type | Description --- | --- | --- -`sendRom(rom, romSize, cancel)` | **LinkCableMultiboot::Result** | Sends the `rom`. During the handshake process, the library will continuously invoke `cancel`, and abort the transfer if it returns `true`. The `romSize` must be a number between `448` and `262144`, and a multiple of `16`. Once completed, the return value should be `LinkCableMultiboot::Result::SUCCESS`. +`sendRom(rom, romSize, cancel, [mode])` | **LinkCableMultiboot::Result** | Sends the `rom`. During the handshake process, the library will continuously invoke `cancel`, and abort the transfer if it returns `true`. The `romSize` must be a number between `448` and `262144`, and a multiple of `16`. The `mode` can be either `TransferMode::MULTI_PLAY` for GBA cable (default value) or `TransferMode::SPI` for GBC cable. Once completed, the return value should be `LinkCableMultiboot::Result::SUCCESS`. ⚠️ for better results, turn on the GBAs **after** calling the `sendRom` method! diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index bd874fd..610da1e 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -25,6 +25,7 @@ // -------------------------------------------------------------------------- #include "LinkRawCable.hpp" +#include "LinkSPI.hpp" static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = "LinkCableMultiboot/v7.0.0"; @@ -64,10 +65,14 @@ class LinkCableMultiboot { static constexpr int CONFIRM_HANDSHAKE_DATA = 0x6400; static constexpr int ACK_RESPONSE = 0x73; static constexpr int HEADER_SIZE = 0xC0; - static constexpr int SWI_MULTIPLAYER_MODE = 1; static constexpr auto MAX_BAUD_RATE = LinkRawCable::BaudRate::BAUD_RATE_3; static constexpr u8 CLIENT_IDS[] = {0b0010, 0b0100, 0b1000}; + struct Response { + u32 data[LINK_RAW_CABLE_MAX_PLAYERS]; + int playerId = -1; // (-1 = unknown) + }; + public: enum Result { SUCCESS, @@ -77,6 +82,11 @@ class LinkCableMultiboot { FAILURE_DURING_TRANSFER }; + enum TransferMode { + SPI = 0, + MULTI_PLAY = 1 + }; // (used in SWI call, do not swap) + /** * @brief Sends the `rom`. Once completed, the return value should be * `LinkCableMultiboot::Result::SUCCESS`. @@ -85,10 +95,16 @@ class LinkCableMultiboot { * and `262144`, and a multiple of `16`. * @param cancel A function that will be continuously invoked. If it returns * `true`, the transfer will be aborted. + * @param mode Either `TransferMode::MULTI_PLAY` for GBA cable (default value) + * or `TransferMode::SPI` for GBC cable. * \warning Blocks the system until completion or cancellation. */ template - Result sendRom(const u8* rom, u32 romSize, F cancel) { + Result sendRom(const u8* rom, + u32 romSize, + F cancel, + TransferMode mode = TransferMode::MULTI_PLAY) { + this->_mode = mode; if (romSize < MIN_ROM_SIZE) return INVALID_SIZE; if (romSize > MAX_ROM_SIZE) @@ -121,17 +137,22 @@ class LinkCableMultiboot { LINK_CABLE_MULTIBOOT_TRY(confirmHandshakeData(multiBootParameters, cancel)) - int result = Link::_MultiBoot(&multiBootParameters, SWI_MULTIPLAYER_MODE); + int result = Link::_MultiBoot(&multiBootParameters, (int)_mode); - linkRawCable->deactivate(); + deactivate(); return result == 1 ? FAILURE_DURING_TRANSFER : SUCCESS; } - ~LinkCableMultiboot() { delete linkRawCable; } + ~LinkCableMultiboot() { + delete linkRawCable; + delete linkSPI; + } private: LinkRawCable* linkRawCable = new LinkRawCable(); + LinkSPI* linkSPI = new LinkSPI(); + TransferMode _mode; enum PartialResult { NEEDS_RETRY, FINISHED, ABORTED, ERROR }; @@ -142,10 +163,10 @@ class LinkCableMultiboot { template PartialResult detectClients(Link::_MultiBootParam& multiBootParameters, F cancel) { - linkRawCable->activate(MAX_BAUD_RATE); + activate(); for (u32 t = 0; t < DETECTION_TRIES; t++) { - auto response = linkRawCable->transfer(HANDSHAKE, cancel); + auto response = transfer(HANDSHAKE, cancel); if (cancel()) return ABORTED; @@ -168,7 +189,7 @@ class LinkCableMultiboot { } if (multiBootParameters.client_bit == 0) { - linkRawCable->deactivate(); + deactivate(); wait(WAIT_BEFORE_RETRY); return NEEDS_RETRY; } @@ -201,7 +222,7 @@ class LinkCableMultiboot { u16* headerOut = (u16*)rom; for (u32 i = 0; i < HEADER_SIZE; i += 2) { - linkRawCable->transfer(*(headerOut++), cancel); + transfer(*(headerOut++), cancel); if (cancel()) return ABORTED; } @@ -214,7 +235,7 @@ class LinkCableMultiboot { F cancel) { auto data = SEND_PALETTE | PALETTE_DATA; - auto response = linkRawCable->transfer(data, cancel); + auto response = transfer(data, cancel); if (cancel()) return ABORTED; @@ -239,7 +260,7 @@ class LinkCableMultiboot { PartialResult confirmHandshakeData(Link::_MultiBootParam& multiBootParameters, F cancel) { u16 data = CONFIRM_HANDSHAKE_DATA | multiBootParameters.handshake_data; - auto response = linkRawCable->transfer(data, cancel); + auto response = transfer(data, cancel); if (cancel()) return ABORTED; @@ -251,7 +272,7 @@ class LinkCableMultiboot { u16 data, u16 expectedResponse, F cancel) { - auto response = linkRawCable->transfer(data, cancel); + auto response = transfer(data, cancel); if (cancel()) return ABORTED; @@ -267,8 +288,40 @@ class LinkCableMultiboot { return FINISHED; } + template + Response transfer(u32 data, F cancel) { + if (_mode == TransferMode::MULTI_PLAY) { + Response response; + auto response16bit = linkRawCable->transfer(data, cancel); + for (u32 i = 0; i < LINK_RAW_CABLE_MAX_PLAYERS; i++) + response.data[i] = response16bit.data[i]; + response.playerId = response16bit.playerId; + return response; + } else { + Response response = {.data = {0xffff, 0xffff, 0xffff, 0xffff}}; + response.data[1] = linkSPI->transfer(data, cancel) >> 16; + response.playerId = 0; + return response; + } + } + + public: + void activate() { + if (_mode == TransferMode::MULTI_PLAY) + linkRawCable->activate(MAX_BAUD_RATE); + else + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); + } + + void deactivate() { + if (_mode == TransferMode::MULTI_PLAY) + linkRawCable->deactivate(); + else + linkSPI->deactivate(); + } + Result error(Result error) { - linkRawCable->deactivate(); + deactivate(); return error; } From 529c78e22e1bfc43db29977c9797cf8b9b46af72 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 08:39:08 -0300 Subject: [PATCH 146/195] Adding option to change palette data in LinkCableMultiboot --- README.md | 5 +++++ lib/LinkCableMultiboot.hpp | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b67d787..9ecb6af 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,11 @@ Its demo (`LinkCableMultiboot_demo`) has all the other gba-link-connection ROMs ![screenshot](https://github.com/afska/gba-link-connection/assets/1631752/6ff55944-5437-436f-bcc7-a89b05dc5486) +You can change these compile-time constants: +- `LINK_CABLE_MULTIBOOT_PALETTE_DATA`: to control how the logo is displayed. + - Format: `0b1CCCDSS1`, where `C`=color, `D`=direction, `S`=speed. + - Default: `0b10010011`. + ## Methods Name | Return type | Description diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 610da1e..e1db303 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -27,6 +27,13 @@ #include "LinkRawCable.hpp" #include "LinkSPI.hpp" +/** + * @brief Palette data (controls how the logo is displayed). + * Format: 0b1CCCDSS1, where C=color, D=direction, S=speed. + * Default: 0b10010011 + */ +#define LINK_CABLE_MULTIBOOT_PALETTE_DATA 0b10010011 + static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = "LinkCableMultiboot/v7.0.0"; @@ -54,7 +61,6 @@ class LinkCableMultiboot { static constexpr int WAIT_BEFORE_RETRY = (160 + 68) * 60; static constexpr int WAIT_BEFORE_TRANSFER = 50; static constexpr int DETECTION_TRIES = 16; - static constexpr int PALETTE_DATA = 0x93; static constexpr int CLIENTS = 3; static constexpr int CLIENT_NO_DATA = 0xff; static constexpr int HANDSHAKE = 0x6200; @@ -117,7 +123,7 @@ class LinkCableMultiboot { multiBootParameters.client_data[0] = CLIENT_NO_DATA; multiBootParameters.client_data[1] = CLIENT_NO_DATA; multiBootParameters.client_data[2] = CLIENT_NO_DATA; - multiBootParameters.palette_data = PALETTE_DATA; + multiBootParameters.palette_data = LINK_CABLE_MULTIBOOT_PALETTE_DATA; multiBootParameters.client_bit = 0; multiBootParameters.boot_srcp = (u8*)rom + HEADER_SIZE; multiBootParameters.boot_endp = (u8*)rom + romSize; @@ -233,7 +239,7 @@ class LinkCableMultiboot { template PartialResult sendPalette(Link::_MultiBootParam& multiBootParameters, F cancel) { - auto data = SEND_PALETTE | PALETTE_DATA; + auto data = SEND_PALETTE | LINK_CABLE_MULTIBOOT_PALETTE_DATA; auto response = transfer(data, cancel); if (cancel()) From df68a8941c7905badb6506bb64dee4dfedbc2683 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 21:24:19 -0300 Subject: [PATCH 147/195] Adding SPI transfer mode to LinkCableMultiboot_demo example --- README.md | 2 +- examples/LinkCableMultiboot_demo/src/main.cpp | 32 ++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9ecb6af..f7198a3 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ You can change these compile-time constants: Name | Return type | Description --- | --- | --- -`sendRom(rom, romSize, cancel, [mode])` | **LinkCableMultiboot::Result** | Sends the `rom`. During the handshake process, the library will continuously invoke `cancel`, and abort the transfer if it returns `true`. The `romSize` must be a number between `448` and `262144`, and a multiple of `16`. The `mode` can be either `TransferMode::MULTI_PLAY` for GBA cable (default value) or `TransferMode::SPI` for GBC cable. Once completed, the return value should be `LinkCableMultiboot::Result::SUCCESS`. +`sendRom(rom, romSize, cancel, [mode])` | **LinkCableMultiboot::Result** | Sends the `rom`. During the handshake process, the library will continuously invoke `cancel`, and abort the transfer if it returns `true`. The `romSize` must be a number between `448` and `262144`, and a multiple of `16`. The `mode` can be either `LinkCableMultiboot::TransferMode::MULTI_PLAY` for GBA cable (default value) or `LinkCableMultiboot::TransferMode::SPI` for GBC cable. Once completed, the return value should be `LinkCableMultiboot::Result::SUCCESS`. ⚠️ for better results, turn on the GBAs **after** calling the `sendRom` method! diff --git a/examples/LinkCableMultiboot_demo/src/main.cpp b/examples/LinkCableMultiboot_demo/src/main.cpp index 05f5062..42bc9c7 100644 --- a/examples/LinkCableMultiboot_demo/src/main.cpp +++ b/examples/LinkCableMultiboot_demo/src/main.cpp @@ -11,6 +11,7 @@ extern "C" { static const GBFS_FILE* fs = find_first_gbfs_file(0); static u32 selectedFile = 0; +static bool spi = false; void log(std::string text); void waitFor(u16 key); @@ -53,7 +54,7 @@ int main() { ; } - bool left = false, right = false, a = false, b = false; + bool left = false, right = false, a = false, b = false, l = false; while (true) { // Get selected ROM name @@ -68,12 +69,9 @@ int main() { } } - // Menu - log("LinkCableMultiboot_demo\n (v7.0.0)\n\n" - "Press A to send the ROM...\n" - "Press B to launch the ROM...\nLEFT/RIGHT: select ROM\n\nSelected " - "ROM:\n " + - std::string(name)); + // Toggle mode + if (didPress(KEY_L, l)) + spi = !spi; // Select ROM if (didPress(KEY_LEFT, left)) @@ -81,15 +79,27 @@ int main() { if (didPress(KEY_RIGHT, right)) selectRight(); + // Menu + log("LinkCableMultiboot_demo\n (v7.0.0)\n\n" + "Press A to send the ROM...\n" + "Press B to launch the ROM...\nLEFT/RIGHT: select ROM\nL: toggle " + "mode\n\nSelected ROM:\n " + + std::string(name) + "\n\nMode:\n " + + std::string(spi ? "SPI (GBC cable)" : "MULTI_PLAY (GBA cable)")); + // Send ROM if (didPress(KEY_A, a)) { log("Sending... (SELECT to cancel)"); // (2) Send the ROM - auto result = linkCableMultiboot->sendRom(romToSend, romSize, []() { - u16 keys = ~REG_KEYS & KEY_ANY; - return keys & KEY_SELECT; - }); + auto result = linkCableMultiboot->sendRom( + romToSend, romSize, + []() { + u16 keys = ~REG_KEYS & KEY_ANY; + return keys & KEY_SELECT; + }, + spi ? LinkCableMultiboot::TransferMode::SPI + : LinkCableMultiboot::TransferMode::MULTI_PLAY); // Print results and wait log("Result: " + std::to_string(result) + "\n" + From c7286266ab963db20be879065ae3f8773964cb97 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Wed, 21 Aug 2024 22:05:05 -0300 Subject: [PATCH 148/195] Adjusting retry delay to 1/16s --- lib/LinkCableMultiboot.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index e1db303..93d1849 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -58,8 +58,8 @@ class LinkCableMultiboot { static constexpr int MIN_ROM_SIZE = 0x100 + 0xc0; static constexpr int MAX_ROM_SIZE = 256 * 1024; - static constexpr int WAIT_BEFORE_RETRY = (160 + 68) * 60; - static constexpr int WAIT_BEFORE_TRANSFER = 50; + static constexpr int FRAME_LINES = 228; + static constexpr int WAIT_BEFORE_RETRY = (FRAME_LINES * 60) / 16; static constexpr int DETECTION_TRIES = 16; static constexpr int CLIENTS = 3; static constexpr int CLIENT_NO_DATA = 0xff; From a3e1413fa9d346c4604775c6d28310355d48fbd4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 22 Aug 2024 03:25:20 -0300 Subject: [PATCH 149/195] Redoing LinkCableMultiboot --- lib/LinkCableMultiboot.hpp | 188 +++++++++++++++++++++---------------- 1 file changed, 109 insertions(+), 79 deletions(-) diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 93d1849..6c488e1 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -118,6 +118,7 @@ class LinkCableMultiboot { if ((romSize % 0x10) != 0) return INVALID_SIZE; + // 1. Prepare a "Multiboot Parameter Structure" in RAM. PartialResult partialResult; Link::_MultiBootParam multiBootParameters; multiBootParameters.client_data[0] = CLIENT_NO_DATA; @@ -129,24 +130,21 @@ class LinkCableMultiboot { multiBootParameters.boot_endp = (u8*)rom + romSize; LINK_CABLE_MULTIBOOT_TRY(detectClients(multiBootParameters, cancel)) - LINK_CABLE_MULTIBOOT_TRY(confirmClients(multiBootParameters, cancel)) - LINK_CABLE_MULTIBOOT_TRY(sendHeader(rom, cancel)) - LINK_CABLE_MULTIBOOT_TRY(confirmHeader(multiBootParameters, cancel)) - LINK_CABLE_MULTIBOOT_TRY(reconfirm(multiBootParameters, cancel)) + LINK_CABLE_MULTIBOOT_TRY(sendHeader(multiBootParameters, rom, cancel)) LINK_CABLE_MULTIBOOT_TRY(sendPalette(multiBootParameters, cancel)) - - multiBootParameters.handshake_data = - (HANDSHAKE_DATA + multiBootParameters.client_data[0] + - multiBootParameters.client_data[1] + - multiBootParameters.client_data[2]) % - 256; - LINK_CABLE_MULTIBOOT_TRY(confirmHandshakeData(multiBootParameters, cancel)) + // 9. Call SWI 0x25, with r0 set to the address of the multiboot parameter + // structure and r1 set to the communication mode (0 for normal, 1 for + // MultiPlay). int result = Link::_MultiBoot(&multiBootParameters, (int)_mode); deactivate(); + // 10. Upon return, r0 will be either 0 for success, or 1 for failure. If + // successful, all clients have received the multiboot program successfully + // and are now executing it - you can begin either further data transfer or + // a multiplayer game from here. return result == 1 ? FAILURE_DURING_TRANSFER : SUCCESS; } @@ -169,95 +167,118 @@ class LinkCableMultiboot { template PartialResult detectClients(Link::_MultiBootParam& multiBootParameters, F cancel) { + // 2. Initiate a multiplayer communication session, using either Normal mode + // for a single client or MultiPlay mode for multiple clients. activate(); + // 3. Send the word 0x6200 repeatedly until all detected clients respond + // with 0x720X, where X is their client number (1-3). If they fail to do + // this after 16 tries, delay 1/16s and go back to step 2. + bool success = false; for (u32 t = 0; t < DETECTION_TRIES; t++) { auto response = transfer(HANDSHAKE, cancel); if (cancel()) return ABORTED; - for (u32 i = 0; i < CLIENTS; i++) { - if ((response.data[1 + i] & 0xfff0) == HANDSHAKE_RESPONSE) { - auto clientId = response.data[1 + i] & 0xf; + multiBootParameters.client_bit = 0; - switch (clientId) { - case 0b0010: - case 0b0100: - case 0b1000: { - multiBootParameters.client_bit |= clientId; - break; + success = + validateResponse(response, [&multiBootParameters](u32 i, u16 value) { + if ((value & 0xfff0) == HANDSHAKE_RESPONSE) { + auto clientId = value & 0xf; + if (clientId == CLIENT_IDS[i]) { + multiBootParameters.client_bit |= clientId; + return true; + } } - default: - return NEEDS_RETRY; - } - } - } + return false; + }); + + if (success) + break; } - if (multiBootParameters.client_bit == 0) { + if (!success) { deactivate(); wait(WAIT_BEFORE_RETRY); return NEEDS_RETRY; } + // 4. Fill in client_bit in the multiboot parameter structure (with + // bits 1-3 set according to which clients responded). Send the word + // 0x610Y, where Y is that same set of set bits. + transfer(CONFIRM_CLIENTS | multiBootParameters.client_bit, cancel); + return FINISHED; } template - PartialResult confirmClients(Link::_MultiBootParam& multiBootParameters, - F cancel) { - return compare(multiBootParameters, - CONFIRM_CLIENTS | multiBootParameters.client_bit, - HANDSHAKE_RESPONSE, cancel); - } - - template - PartialResult confirmHeader(Link::_MultiBootParam& multiBootParameters, - F cancel) { - return compare(multiBootParameters, HANDSHAKE, 0, cancel); - } - - template - PartialResult reconfirm(Link::_MultiBootParam& multiBootParameters, - F cancel) { - return compare(multiBootParameters, HANDSHAKE, HANDSHAKE_RESPONSE, cancel); - } - - template - PartialResult sendHeader(const u8* rom, F cancel) { + PartialResult sendHeader(Link::_MultiBootParam& multiBootParameters, + const u8* rom, + F cancel) { + // 5. Send the cartridge header, 16 bits at a time, in little endian order. + // After each 16-bit send, the clients will respond with 0xNN0X, where NN is + // the number of words remaining and X is the client number. (Note that if + // transferring in the single-client 32-bit mode, you still need to send + // only 16 bits at a time). u16* headerOut = (u16*)rom; - - for (u32 i = 0; i < HEADER_SIZE; i += 2) { - transfer(*(headerOut++), cancel); + u32 remaining = HEADER_SIZE / 2; + while (remaining > 0) { + auto response = transfer(*(headerOut++), cancel); if (cancel()) return ABORTED; + + bool success = validateResponse(response, [&remaining](u32 i, u16 value) { + u8 clientId = CLIENT_IDS[i]; + u16 expectedValue = (remaining << 8) | clientId; + return value == expectedValue; + }); + if (!success) + return ERROR; + + remaining--; } + // 6. Send 0x6200, followed by 0x620Y again. + transfer(HANDSHAKE, cancel); + if (cancel()) + return ABORTED; + transfer(HANDSHAKE | multiBootParameters.client_bit, cancel); + if (cancel()) + return ABORTED; + return FINISHED; } template PartialResult sendPalette(Link::_MultiBootParam& multiBootParameters, F cancel) { + // 7. Send 0x63PP repeatedly, where PP is the palette_data you have picked + // earlier. Do this until the clients respond with 0x73CC, where CC is a + // random byte. Store these bytes in client_data in the parameter structure. auto data = SEND_PALETTE | LINK_CABLE_MULTIBOOT_PALETTE_DATA; - auto response = transfer(data, cancel); - if (cancel()) - return ABORTED; + bool success = false; + for (u32 i = 0; i < DETECTION_TRIES; i++) { + auto response = transfer(data, cancel); + if (cancel()) + return ABORTED; - for (u32 i = 0; i < CLIENTS; i++) { - if (response.data[1 + i] >> 8 == ACK_RESPONSE) - multiBootParameters.client_data[i] = response.data[1 + i] & 0xff; + success = + validateResponse(response, [&multiBootParameters](u32 i, u16 value) { + if ((value >> 8) == ACK_RESPONSE) { + multiBootParameters.client_data[i] = value & 0xff; + return true; + } + return false; + }); + + if (success) + break; } - for (u32 i = 0; i < CLIENTS; i++) { - u8 clientId = CLIENT_IDS[i]; - bool isClientConnected = multiBootParameters.client_bit & clientId; - - if (isClientConnected && - multiBootParameters.client_data[i] == CLIENT_NO_DATA) - return NEEDS_RETRY; - } + if (!success) + return NEEDS_RETRY; return FINISHED; } @@ -265,6 +286,15 @@ class LinkCableMultiboot { template PartialResult confirmHandshakeData(Link::_MultiBootParam& multiBootParameters, F cancel) { + // 8. Calculate the handshake_data byte and store it in the parameter + // structure. This should be calculated as 0x11 + the sum of the three + // client_data bytes. Send 0x64HH, where HH is the handshake_data. + multiBootParameters.handshake_data = + (HANDSHAKE_DATA + multiBootParameters.client_data[0] + + multiBootParameters.client_data[1] + + multiBootParameters.client_data[2]) % + 256; + u16 data = CONFIRM_HANDSHAKE_DATA | multiBootParameters.handshake_data; auto response = transfer(data, cancel); if (cancel()) @@ -274,24 +304,22 @@ class LinkCableMultiboot { } template - PartialResult compare(Link::_MultiBootParam& multiBootParameters, - u16 data, - u16 expectedResponse, - F cancel) { - auto response = transfer(data, cancel); - if (cancel()) - return ABORTED; - + bool validateResponse(Response response, F check) { + u32 count = 0; for (u32 i = 0; i < CLIENTS; i++) { - u8 clientId = CLIENT_IDS[i]; - u16 expectedResponseWithId = expectedResponse | clientId; - bool isClientConnected = multiBootParameters.client_bit & clientId; + auto value = response.data[1 + i]; + if (value == LINK_RAW_CABLE_DISCONNECTED) { + // Note that throughout this process, any clients that are not + // connected will always respond with 0xFFFF - be sure to ignore them. + continue; + } - if (isClientConnected && response.data[1 + i] != expectedResponseWithId) - return ERROR; + if (!check(i, value)) + return false; + count++; } - return FINISHED; + return count > 0; } template @@ -304,7 +332,9 @@ class LinkCableMultiboot { response.playerId = response16bit.playerId; return response; } else { - Response response = {.data = {0xffff, 0xffff, 0xffff, 0xffff}}; + Response response = { + .data = {LINK_RAW_CABLE_DISCONNECTED, LINK_RAW_CABLE_DISCONNECTED, + LINK_RAW_CABLE_DISCONNECTED, LINK_RAW_CABLE_DISCONNECTED}}; response.data[1] = linkSPI->transfer(data, cancel) >> 16; response.playerId = 0; return response; From f670e3d2bf8944d043d395c7c223ab51c4fedd29 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 22 Aug 2024 06:35:33 -0300 Subject: [PATCH 150/195] Using infinite retries in linkCableMultiboot --- lib/LinkCableMultiboot.hpp | 40 ++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 6c488e1..950e245 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -37,14 +37,12 @@ static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = "LinkCableMultiboot/v7.0.0"; -#define LINK_CABLE_MULTIBOOT_TRY(CALL) \ - do { \ - partialResult = CALL; \ - } while (partialResult == NEEDS_RETRY); \ - if (partialResult == ABORTED) \ - return error(CANCELED); \ - else if (partialResult == ERROR) \ - return error(FAILURE_DURING_HANDSHAKE); +#define LINK_CABLE_MULTIBOOT_TRY(CALL) \ + partialResult = CALL; \ + if (partialResult == ABORTED) \ + return error(CANCELED); \ + else if (partialResult == NEEDS_RETRY) \ + goto retry; /** * @brief A Multiboot tool to send small programs from one GBA to up to 3 @@ -80,13 +78,7 @@ class LinkCableMultiboot { }; public: - enum Result { - SUCCESS, - INVALID_SIZE, - CANCELED, - FAILURE_DURING_HANDSHAKE, - FAILURE_DURING_TRANSFER - }; + enum Result { SUCCESS, INVALID_SIZE, CANCELED, FAILURE_DURING_TRANSFER }; enum TransferMode { SPI = 0, @@ -118,8 +110,12 @@ class LinkCableMultiboot { if ((romSize % 0x10) != 0) return INVALID_SIZE; + retry: + deactivate(); + wait(WAIT_BEFORE_RETRY); + // 1. Prepare a "Multiboot Parameter Structure" in RAM. - PartialResult partialResult; + PartialResult partialResult = NEEDS_RETRY; Link::_MultiBootParam multiBootParameters; multiBootParameters.client_data[0] = CLIENT_NO_DATA; multiBootParameters.client_data[1] = CLIENT_NO_DATA; @@ -158,7 +154,7 @@ class LinkCableMultiboot { LinkSPI* linkSPI = new LinkSPI(); TransferMode _mode; - enum PartialResult { NEEDS_RETRY, FINISHED, ABORTED, ERROR }; + enum PartialResult { NEEDS_RETRY, FINISHED, ABORTED }; struct Responses { u16 d[CLIENTS]; @@ -198,11 +194,8 @@ class LinkCableMultiboot { break; } - if (!success) { - deactivate(); - wait(WAIT_BEFORE_RETRY); + if (!success) return NEEDS_RETRY; - } // 4. Fill in client_bit in the multiboot parameter structure (with // bits 1-3 set according to which clients responded). Send the word @@ -233,8 +226,9 @@ class LinkCableMultiboot { u16 expectedValue = (remaining << 8) | clientId; return value == expectedValue; }); + if (!success) - return ERROR; + return NEEDS_RETRY; remaining--; } @@ -300,7 +294,7 @@ class LinkCableMultiboot { if (cancel()) return ABORTED; - return (response.data[1] >> 8) == ACK_RESPONSE ? FINISHED : ERROR; + return (response.data[1] >> 8) == ACK_RESPONSE ? FINISHED : NEEDS_RETRY; } template From 0ae110f111875412fbd2055f552c81daa2e2cfcf Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 22 Aug 2024 07:28:51 -0300 Subject: [PATCH 151/195] Adding a random wait to avoid different GBAs getting stuck --- README.md | 2 -- lib/LinkCableMultiboot.hpp | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f7198a3..ea4b4e6 100644 --- a/README.md +++ b/README.md @@ -123,8 +123,6 @@ Name | Return type | Description --- | --- | --- `sendRom(rom, romSize, cancel, [mode])` | **LinkCableMultiboot::Result** | Sends the `rom`. During the handshake process, the library will continuously invoke `cancel`, and abort the transfer if it returns `true`. The `romSize` must be a number between `448` and `262144`, and a multiple of `16`. The `mode` can be either `LinkCableMultiboot::TransferMode::MULTI_PLAY` for GBA cable (default value) or `LinkCableMultiboot::TransferMode::SPI` for GBC cable. Once completed, the return value should be `LinkCableMultiboot::Result::SUCCESS`. -⚠️ for better results, turn on the GBAs **after** calling the `sendRom` method! - ⚠️ stop DMA before sending the ROM! _(you might need to stop your audio player)_ # 🔧👾 LinkRawCable diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index 950e245..ffb5560 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -20,7 +20,6 @@ // // `result` should be LinkCableMultiboot::Result::SUCCESS // -------------------------------------------------------------------------- // considerations: -// - for better results, turn on the GBAs after calling the `sendRom` method! // - stop DMA before sending the ROM! (you might need to stop your audio player) // -------------------------------------------------------------------------- @@ -57,7 +56,7 @@ class LinkCableMultiboot { static constexpr int MIN_ROM_SIZE = 0x100 + 0xc0; static constexpr int MAX_ROM_SIZE = 256 * 1024; static constexpr int FRAME_LINES = 228; - static constexpr int WAIT_BEFORE_RETRY = (FRAME_LINES * 60) / 16; + static constexpr int WAIT_BEFORE_RETRY = FRAME_LINES * 4; static constexpr int DETECTION_TRIES = 16; static constexpr int CLIENTS = 3; static constexpr int CLIENT_NO_DATA = 0xff; @@ -112,7 +111,9 @@ class LinkCableMultiboot { retry: deactivate(); - wait(WAIT_BEFORE_RETRY); + + // (*) instead of 1/16s, waiting a random number of frames works better + wait(WAIT_BEFORE_RETRY + FRAME_LINES * _qran_range(1, 30)); // 1. Prepare a "Multiboot Parameter Structure" in RAM. PartialResult partialResult = NEEDS_RETRY; @@ -153,6 +154,7 @@ class LinkCableMultiboot { LinkRawCable* linkRawCable = new LinkRawCable(); LinkSPI* linkSPI = new LinkSPI(); TransferMode _mode; + int randomSeed = 123; enum PartialResult { NEEDS_RETRY, FINISHED, ABORTED }; @@ -169,7 +171,7 @@ class LinkCableMultiboot { // 3. Send the word 0x6200 repeatedly until all detected clients respond // with 0x720X, where X is their client number (1-3). If they fail to do - // this after 16 tries, delay 1/16s and go back to step 2. + // this after 16 tries, delay 1/16s and go back to step 2. (*) bool success = false; for (u32 t = 0; t < DETECTION_TRIES; t++) { auto response = transfer(HANDSHAKE, cancel); @@ -366,6 +368,15 @@ class LinkCableMultiboot { } }; } + + int _qran() { + randomSeed = 1664525 * randomSeed + 1013904223; + return (randomSeed >> 16) & 0x7FFF; + } + + int _qran_range(int min, int max) { + return (_qran() * (max - min) >> 15) + min; + } }; extern LinkCableMultiboot* linkCableMultiboot; From ada55d22f0257f49d6fc682e8d9afc59ba078a69 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 22 Aug 2024 22:45:49 -0300 Subject: [PATCH 152/195] LinkMobile fix: Increasing INIT_TIMEOUT_FRAMES to 60*3 so it also works with the Red and Yellow adapters --- lib/LinkMobile.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 90d7eff..ddee9cd 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -101,7 +101,7 @@ class LinkMobile { static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; static constexpr int INIT_WAIT_FRAMES = 7; - static constexpr int INIT_TIMEOUT_FRAMES = 30; + static constexpr int INIT_TIMEOUT_FRAMES = 60 * 3; static constexpr int PING_FREQUENCY_FRAMES = 60; static constexpr int ADAPTER_WAITING = 0xd2; static constexpr u32 ADAPTER_WAITING_32BIT = 0xd2d2d2d2; From 6ab7166da1a4f16392e5eec59bc13927bffe5dc1 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 22 Aug 2024 23:12:58 -0300 Subject: [PATCH 153/195] LinkCable: remoteTimeout is now in frames --- README.md | 2 +- lib/LinkCable.hpp | 36 +++++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ea4b4e6..e3e607b 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Name | Type | Default | Description --- | --- | --- | --- `baudRate` | **BaudRate** | `BAUD_RATE_1` | Sets a specific baud rate. `timeout` | **u32** | `3` | Number of *frames* without a `SERIAL` IRQ to reset the connection. -`remoteTimeout` | **u32** | `5` | Number of *messages* with `0xFFFF` to mark a player as disconnected. +`remoteTimeout` | **u32** | `3` | Number of *frames* receiving `0xFFFF` from other player to mark it as disconnected. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 2f0e02d..54f82df 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -59,7 +59,7 @@ static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; #define LINK_CABLE_MAX_PLAYERS 4 #define LINK_CABLE_DEFAULT_TIMEOUT 3 -#define LINK_CABLE_DEFAULT_REMOTE_TIMEOUT 5 +#define LINK_CABLE_DEFAULT_REMOTE_TIMEOUT 3 #define LINK_CABLE_DEFAULT_INTERVAL 50 #define LINK_CABLE_DEFAULT_SEND_TIMER_ID 3 #define LINK_CABLE_DISCONNECTED 0xffff @@ -103,8 +103,8 @@ class LinkCable { * @param baudRate Sets a specific baud rate. * @param timeout Number of *frames* without a `SERIAL` IRQ to reset the * connection. - * @param remoteTimeout Number of *messages* with `0xFFFF` to mark a player as - * disconnected. + * @param remoteTimeout Number of *frames* receiving `0xFFFF` from other + * player to mark it as disconnected. * @param interval Number of *1024-cycle ticks* (61.04μs) between transfers * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values * will transfer faster but also consume more CPU. @@ -273,9 +273,19 @@ class LinkCable { if (!_state.IRQFlag) _state.IRQTimeout++; - _state.IRQFlag = false; + for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { + if (!_state.msgFlags[i]) + _state.timeouts[i]++; + _state.msgFlags[i] = false; + } + + if (didTimeout()) { + reset(); + return; + } + copyState(); } @@ -305,9 +315,7 @@ class LinkCable { newPlayerCount++; setOnline(i); } else if (isOnline(i)) { - _state.timeouts[i]++; - - if (_state.timeouts[i] >= (int)config.remoteTimeout) { + if (_state.timeouts[i] >= (int)config.timeout) { _state.newMessages[i].clear(); setOffline(i); } else { @@ -334,11 +342,6 @@ class LinkCable { if (!isEnabled) return; - if (didTimeout()) { - reset(); - return; - } - if (isMaster() && isReady() && !isSending()) sendPendingData(); @@ -370,6 +373,7 @@ class LinkCable { U16Queue outgoingMessages; U16Queue readyToSyncMessages[LINK_CABLE_MAX_PLAYERS]; U16Queue newMessages[LINK_CABLE_MAX_PLAYERS]; + bool msgFlags[LINK_CABLE_MAX_PLAYERS]; int timeouts[LINK_CABLE_MAX_PLAYERS]; bool IRQFlag; u32 IRQTimeout; @@ -472,9 +476,13 @@ class LinkCable { bool isOnline(u8 playerId) { return _state.timeouts[playerId] != REMOTE_TIMEOUT_OFFLINE; } - void setOnline(u8 playerId) { _state.timeouts[playerId] = 0; } + void setOnline(u8 playerId) { + _state.timeouts[playerId] = 0; + _state.msgFlags[playerId] = true; + } void setOffline(u8 playerId) { _state.timeouts[playerId] = REMOTE_TIMEOUT_OFFLINE; + _state.msgFlags[playerId] = false; } void setInterruptsOn() { setBitHigh(BIT_IRQ); } @@ -537,3 +545,5 @@ inline void LINK_CABLE_ISR_TIMER() { */ #endif // LINK_CABLE_H + +// TODO: REPEAT IN LinkWireless / LinkUniversal From 6a956aff8533dcb51207bc5aa3d6a9aec3dab7c5 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Thu, 22 Aug 2024 23:17:06 -0300 Subject: [PATCH 154/195] LinkCable: Unified timeout and remoteTimeout --- README.md | 3 +-- lib/LinkCable.hpp | 6 ------ lib/LinkUniversal.hpp | 8 +++----- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e3e607b..aec1875 100644 --- a/README.md +++ b/README.md @@ -66,8 +66,7 @@ The library uses message queues to send/receive data and transmits when it's pos Name | Type | Default | Description --- | --- | --- | --- `baudRate` | **BaudRate** | `BAUD_RATE_1` | Sets a specific baud rate. -`timeout` | **u32** | `3` | Number of *frames* without a `SERIAL` IRQ to reset the connection. -`remoteTimeout` | **u32** | `3` | Number of *frames* receiving `0xFFFF` from other player to mark it as disconnected. +`timeout` | **u32** | `3` | Maximum number of *frames* without receiving data from other player before marking them as disconnected or resetting the connection. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 54f82df..74ad37c 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -59,7 +59,6 @@ static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; #define LINK_CABLE_MAX_PLAYERS 4 #define LINK_CABLE_DEFAULT_TIMEOUT 3 -#define LINK_CABLE_DEFAULT_REMOTE_TIMEOUT 3 #define LINK_CABLE_DEFAULT_INTERVAL 50 #define LINK_CABLE_DEFAULT_SEND_TIMER_ID 3 #define LINK_CABLE_DISCONNECTED 0xffff @@ -103,8 +102,6 @@ class LinkCable { * @param baudRate Sets a specific baud rate. * @param timeout Number of *frames* without a `SERIAL` IRQ to reset the * connection. - * @param remoteTimeout Number of *frames* receiving `0xFFFF` from other - * player to mark it as disconnected. * @param interval Number of *1024-cycle ticks* (61.04μs) between transfers * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values * will transfer faster but also consume more CPU. @@ -112,12 +109,10 @@ class LinkCable { */ explicit LinkCable(BaudRate baudRate = BAUD_RATE_1, u32 timeout = LINK_CABLE_DEFAULT_TIMEOUT, - u32 remoteTimeout = LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, u16 interval = LINK_CABLE_DEFAULT_INTERVAL, u8 sendTimerId = LINK_CABLE_DEFAULT_SEND_TIMER_ID) { this->config.baudRate = baudRate; this->config.timeout = timeout; - this->config.remoteTimeout = remoteTimeout; this->config.interval = interval; this->config.sendTimerId = sendTimerId; } @@ -351,7 +346,6 @@ class LinkCable { struct Config { BaudRate baudRate; u32 timeout; - u32 remoteTimeout; u32 interval; u8 sendTimerId; }; diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 09af52c..6b2c861 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -102,7 +102,6 @@ class LinkUniversal { struct CableOptions { LinkCable::BaudRate baudRate; u32 timeout; - u32 remoteTimeout; u16 interval; u8 sendTimerId; }; @@ -134,7 +133,6 @@ class LinkUniversal { CableOptions cableOptions = CableOptions{LinkCable::BaudRate::BAUD_RATE_1, LINK_CABLE_DEFAULT_TIMEOUT, - LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, LINK_CABLE_DEFAULT_INTERVAL, LINK_CABLE_DEFAULT_SEND_TIMER_ID}, WirelessOptions wirelessOptions = @@ -146,9 +144,9 @@ class LinkUniversal { LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, int randomSeed = 123) { - this->linkCable = new LinkCable( - cableOptions.baudRate, cableOptions.timeout, cableOptions.remoteTimeout, - cableOptions.interval, cableOptions.sendTimerId); + this->linkCable = + new LinkCable(cableOptions.baudRate, cableOptions.timeout, + cableOptions.interval, cableOptions.sendTimerId); this->linkWireless = new LinkWireless( wirelessOptions.retransmission, true, Link::_min(wirelessOptions.maxPlayers, LINK_UNIVERSAL_MAX_PLAYERS), From 62b5acfdd98517823860e272e38fdd77c918c271 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 01:58:01 -0300 Subject: [PATCH 155/195] LinkWireless: When resetting in system thread, disable interrupts, then restore previous value --- lib/LinkWireless.hpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index a1980ce..7f98436 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -1489,9 +1489,21 @@ class LinkWireless { } bool reset() { + bool wasEnabled = isEnabled; + + LINK_WIRELESS_BARRIER; + isEnabled = false; + LINK_WIRELESS_BARRIER; + resetState(); stop(); - return start(); + bool result = start(); + + LINK_WIRELESS_BARRIER; + isEnabled = wasEnabled; + LINK_WIRELESS_BARRIER; + + return result; } void resetState() { From 4f4694a8b971294a4594f4a1e195d8bcb7d21749 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 02:53:09 -0300 Subject: [PATCH 156/195] LinkWireless: Unified timeout and remoteTimeout --- README.md | 3 +-- lib/LinkCable.hpp | 16 +++++++-------- lib/LinkGPIO.hpp | 1 - lib/LinkUniversal.hpp | 7 ++----- lib/LinkWireless.hpp | 45 ++++++++++++++++++++++--------------------- 5 files changed, 34 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index aec1875..4f3349b 100644 --- a/README.md +++ b/README.md @@ -170,8 +170,7 @@ Name | Type | Default | Description `forwarding` | **bool** | `true` | If `true`, the server forwards all messages to the clients. Otherwise, clients only see messages sent from the server (ignoring other peers). `retransmission` | **bool** | `true` | If `true`, the library handles retransmission for you, so there should be no packet loss. `maxPlayers` | **u8** *(2~5)* | `5` | Maximum number of allowed players. If your game only supports -for example- two players, set this to `2` as it will make transfers faster. -`timeout` | **u32** | `10` | Number of *frames* without receiving *any* data to reset the connection. -`remoteTimeout` | **u32** | `10` | Number of *successful transfers* without a message from a client to mark the player as disconnected. +`timeout` | **u32** | `10` | Maximum number of *frames* without receiving data from other player before resetting the connection. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. `asyncACKTimerId` | **s8** *(0~3 or -1)* | `-1` | GBA Timer to use for ACKs. If you have free timers, use one here to reduce CPU usage. diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 74ad37c..c8a1d8f 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -272,7 +272,7 @@ class LinkCable { for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { if (!_state.msgFlags[i]) - _state.timeouts[i]++; + _state.msgTimeouts[i]++; _state.msgFlags[i] = false; } @@ -310,7 +310,7 @@ class LinkCable { newPlayerCount++; setOnline(i); } else if (isOnline(i)) { - if (_state.timeouts[i] >= (int)config.timeout) { + if (_state.msgTimeouts[i] >= (int)config.timeout) { _state.newMessages[i].clear(); setOffline(i); } else { @@ -367,10 +367,10 @@ class LinkCable { U16Queue outgoingMessages; U16Queue readyToSyncMessages[LINK_CABLE_MAX_PLAYERS]; U16Queue newMessages[LINK_CABLE_MAX_PLAYERS]; - bool msgFlags[LINK_CABLE_MAX_PLAYERS]; - int timeouts[LINK_CABLE_MAX_PLAYERS]; - bool IRQFlag; u32 IRQTimeout; + int msgTimeouts[LINK_CABLE_MAX_PLAYERS]; + bool msgFlags[LINK_CABLE_MAX_PLAYERS]; + bool IRQFlag; }; ExternalState state; @@ -468,14 +468,14 @@ class LinkCable { } bool isOnline(u8 playerId) { - return _state.timeouts[playerId] != REMOTE_TIMEOUT_OFFLINE; + return _state.msgTimeouts[playerId] != REMOTE_TIMEOUT_OFFLINE; } void setOnline(u8 playerId) { - _state.timeouts[playerId] = 0; + _state.msgTimeouts[playerId] = 0; _state.msgFlags[playerId] = true; } void setOffline(u8 playerId) { - _state.timeouts[playerId] = REMOTE_TIMEOUT_OFFLINE; + _state.msgTimeouts[playerId] = REMOTE_TIMEOUT_OFFLINE; _state.msgFlags[playerId] = false; } diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 20fd2dd..00baab9 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -91,7 +91,6 @@ class LinkGPIO { /** * @brief If it `isEnabled`, an IRQ will be generated when `SI` changes from * HIGH to LOW. - * * @param isEnabled Enable SI-falling interrupts. */ void setSIInterrupts(bool isEnabled) { diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 6b2c861..e594081 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -110,7 +110,6 @@ class LinkUniversal { bool retransmission; u32 maxPlayers; u32 timeout; - u32 remoteTimeout; u16 interval; u8 sendTimerId; s8 asyncACKTimerId; @@ -139,7 +138,6 @@ class LinkUniversal { WirelessOptions{ true, LINK_UNIVERSAL_MAX_PLAYERS, LINK_WIRELESS_DEFAULT_TIMEOUT, - LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, LINK_WIRELESS_DEFAULT_INTERVAL, LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, @@ -150,9 +148,8 @@ class LinkUniversal { this->linkWireless = new LinkWireless( wirelessOptions.retransmission, true, Link::_min(wirelessOptions.maxPlayers, LINK_UNIVERSAL_MAX_PLAYERS), - wirelessOptions.timeout, wirelessOptions.remoteTimeout, - wirelessOptions.interval, wirelessOptions.sendTimerId, - wirelessOptions.asyncACKTimerId); + wirelessOptions.timeout, wirelessOptions.interval, + wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId); this->config.protocol = protocol; this->config.gameName = gameName; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 7f98436..00e45e7 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -119,7 +119,6 @@ static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; #define LINK_WIRELESS_MAX_GAME_NAME_LENGTH 14 #define LINK_WIRELESS_MAX_USER_NAME_LENGTH 8 #define LINK_WIRELESS_DEFAULT_TIMEOUT 10 -#define LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT 10 #define LINK_WIRELESS_DEFAULT_INTERVAL 50 #define LINK_WIRELESS_DEFAULT_SEND_TIMER_ID 3 #define LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID -1 @@ -253,8 +252,6 @@ class LinkWireless { * transfers faster. * @param timeout Number of *frames* without receiving *any* data to reset the * connection. - * @param remoteTimeout Number of *successful transfers* without a message - * from a client to mark the player as disconnected. * @param interval Number of *1024-cycle ticks* (61.04μs) between transfers * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values * will transfer faster but also consume more CPU. @@ -267,7 +264,6 @@ class LinkWireless { bool retransmission = true, u8 maxPlayers = LINK_WIRELESS_MAX_PLAYERS, u32 timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, - u32 remoteTimeout = LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, u16 interval = LINK_WIRELESS_DEFAULT_INTERVAL, u8 sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, s8 asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID) { @@ -275,7 +271,6 @@ class LinkWireless { this->config.retransmission = retransmission; this->config.maxPlayers = maxPlayers; this->config.timeout = timeout; - this->config.remoteTimeout = remoteTimeout; this->config.interval = interval; this->config.sendTimerId = sendTimerId; this->config.asyncACKTimerId = asyncACKTimerId; @@ -765,22 +760,22 @@ class LinkWireless { if (!isSessionActive()) return; - if (isConnected() && sessionState.frameRecvCount == 0) + if (isConnected() && !sessionState.recvFlag) sessionState.recvTimeout++; - if (sessionState.recvTimeout >= config.timeout) { reset(); lastError = TIMEOUT; return; } + trackRemoteTimeouts(); if (!checkRemoteTimeouts()) { reset(); lastError = REMOTE_TIMEOUT; return; } - sessionState.frameRecvCount = 0; + sessionState.recvFlag = false; sessionState.acceptCalled = false; sessionState.pingSent = false; @@ -934,7 +929,6 @@ class LinkWireless { bool retransmission; u8 maxPlayers; u32 timeout; - u32 remoteTimeout; u32 interval; u32 sendTimerId; s8 asyncACKTimerId; @@ -954,9 +948,12 @@ class LinkWireless { MessageQueue outgoingMessages; // read and write by irq MessageQueue newIncomingMessages; // read and write by irq MessageQueue newOutgoingMessages; // read by irq, write by user&irq - u32 timeouts[LINK_WIRELESS_MAX_PLAYERS]; - u32 recvTimeout = 0; - u32 frameRecvCount = 0; + + u32 recvTimeout = 0; // (~= LinkCable::IRQTimeout) + u32 msgTimeouts[LINK_WIRELESS_MAX_PLAYERS]; // (~= LinkCable::msgTimeouts) + bool recvFlag = false; // (~= LinkCable::IRQFlag) + bool msgFlags[LINK_WIRELESS_MAX_PLAYERS]; // (~= LinkCable::msgFlags) + bool acceptCalled = false; bool pingSent = false; #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH @@ -1093,14 +1090,13 @@ class LinkWireless { if (asyncCommand.result.responsesSize == 0) break; - sessionState.frameRecvCount++; + sessionState.recvFlag = true; sessionState.recvTimeout = 0; #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH sessionState.shouldWaitForServer = false; #endif - trackRemoteTimeouts(); addIncomingMessagesFromData(asyncCommand.result); #ifndef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH @@ -1204,8 +1200,10 @@ class LinkWireless { u32 checksum = header.dataChecksum; bool isPing = data == MSG_PING; - sessionState.timeouts[0] = 0; - sessionState.timeouts[remotePlayerId] = 0; + sessionState.msgTimeouts[0] = 0; + sessionState.msgTimeouts[remotePlayerId] = 0; + sessionState.msgFlags[0] = true; + sessionState.msgFlags[remotePlayerId] = true; if (checksum != buildChecksum(data)) continue; @@ -1384,15 +1382,17 @@ class LinkWireless { } void trackRemoteTimeouts() { // (irq only) - for (u32 i = 0; i < sessionState.playerCount; i++) - if (i != sessionState.currentPlayerId) - sessionState.timeouts[i]++; + for (u32 i = 0; i < sessionState.playerCount; i++) { + if (i != sessionState.currentPlayerId && !sessionState.msgFlags[i]) + sessionState.msgTimeouts[i]++; + sessionState.msgFlags[i] = false; + } } bool checkRemoteTimeouts() { // (irq only) for (u32 i = 0; i < sessionState.playerCount; i++) { if ((i == 0 || state == SERVING) && - sessionState.timeouts[i] > config.remoteTimeout) + sessionState.msgTimeouts[i] > config.timeout) return false; } @@ -1511,8 +1511,8 @@ class LinkWireless { this->asyncCommand.isActive = false; this->sessionState.playerCount = 1; this->sessionState.currentPlayerId = 0; + this->sessionState.recvFlag = false; this->sessionState.recvTimeout = 0; - this->sessionState.frameRecvCount = 0; this->sessionState.acceptCalled = false; this->sessionState.pingSent = false; #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH @@ -1524,7 +1524,8 @@ class LinkWireless { this->sessionState.lastPacketIdFromServer = 0; this->sessionState.lastConfirmationFromServer = 0; for (u32 i = 0; i < LINK_WIRELESS_MAX_PLAYERS; i++) { - this->sessionState.timeouts[i] = 0; + this->sessionState.msgTimeouts[i] = 0; + this->sessionState.msgFlags[i] = 0; this->sessionState.lastPacketIdFromClients[i] = 0; this->sessionState.lastConfirmationFromClients[i] = 0; } From e1ae8cfba251db4f63f57af89b73616aff84c0c4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 05:41:39 -0300 Subject: [PATCH 157/195] FIX: Completely removing the remoteTimeout parameter --- examples/LinkCable_stress/src/main.cpp | 2 -- examples/LinkUniversal_basic/src/main.cpp | 2 -- examples/LinkWireless_demo/src/main.cpp | 4 ++-- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 4fcd527..ec5b40f 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -42,14 +42,12 @@ LinkUniversal* linkUniversal = (LinkUniversal::CableOptions){ .baudRate = LinkCable::BAUD_RATE_1, .timeout = LINK_CABLE_DEFAULT_TIMEOUT, - .remoteTimeout = LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, .interval = LINK_CABLE_DEFAULT_INTERVAL, .sendTimerId = LINK_CABLE_DEFAULT_SEND_TIMER_ID}, (LinkUniversal::WirelessOptions){ .retransmission = true, .maxPlayers = 2, .timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, - .remoteTimeout = LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, .interval = LINK_WIRELESS_DEFAULT_INTERVAL, .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, .asyncACKTimerId = 0}, diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index 671a92f..1c334f6 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -48,14 +48,12 @@ int main() { (LinkUniversal::CableOptions){ .baudRate = LinkCable::BAUD_RATE_1, .timeout = LINK_CABLE_DEFAULT_TIMEOUT, - .remoteTimeout = LINK_CABLE_DEFAULT_REMOTE_TIMEOUT, .interval = LINK_CABLE_DEFAULT_INTERVAL, .sendTimerId = LINK_CABLE_DEFAULT_SEND_TIMER_ID}, (LinkUniversal::WirelessOptions){ .retransmission = true, .maxPlayers = maxPlayers, .timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, - .remoteTimeout = LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, .interval = LINK_WIRELESS_DEFAULT_INTERVAL, .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, .asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 957003f..c63e6ad 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -62,8 +62,8 @@ start: // (1) Create a LinkWireless instance linkWireless = new LinkWireless( forwarding, retransmission, maxPlayers, LINK_WIRELESS_DEFAULT_TIMEOUT, - LINK_WIRELESS_DEFAULT_REMOTE_TIMEOUT, LINK_WIRELESS_DEFAULT_INTERVAL, - LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, asyncACK ? 0 : -1); + LINK_WIRELESS_DEFAULT_INTERVAL, LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, + asyncACK ? 0 : -1); // linkWireless->debug = [](std::string str) { log(str); }; // (2) Add the required interrupt service routines From 2c7234ff187b7dde0fdf952b43aee0f1f12ff6c7 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 05:53:34 -0300 Subject: [PATCH 158/195] Adding Link::perFrame(...) helper --- README.md | 4 ++-- lib/LinkCable.hpp | 2 ++ lib/LinkWireless.hpp | 2 ++ lib/_link_common.hpp | 5 +++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4f3349b..879f61e 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Name | Type | Default | Description --- | --- | --- | --- `baudRate` | **BaudRate** | `BAUD_RATE_1` | Sets a specific baud rate. `timeout` | **u32** | `3` | Maximum number of *frames* without receiving data from other player before marking them as disconnected or resetting the connection. -`interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. +`interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. You can use `Link::perFrame(...)` to convert from *packets per frame* to *interval values*. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. You can update these values at any time without creating a new instance: @@ -171,7 +171,7 @@ Name | Type | Default | Description `retransmission` | **bool** | `true` | If `true`, the library handles retransmission for you, so there should be no packet loss. `maxPlayers` | **u8** *(2~5)* | `5` | Maximum number of allowed players. If your game only supports -for example- two players, set this to `2` as it will make transfers faster. `timeout` | **u32** | `10` | Maximum number of *frames* without receiving data from other player before resetting the connection. -`interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. +`interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. You can use `Link::perFrame(...)` to convert from *packets per frame* to *interval values*. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. `asyncACKTimerId` | **s8** *(0~3 or -1)* | `-1` | GBA Timer to use for ACKs. If you have free timers, use one here to reduce CPU usage. diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index c8a1d8f..80fcfeb 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -106,6 +106,8 @@ class LinkCable { * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values * will transfer faster but also consume more CPU. * @param sendTimerId `(0~3)` GBA Timer to use for sending. + * \warning You can use `Link::perFrame(...)` to convert from *packets per + * frame* to *interval values*. */ explicit LinkCable(BaudRate baudRate = BAUD_RATE_1, u32 timeout = LINK_CABLE_DEFAULT_TIMEOUT, diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 00e45e7..5fe40f6 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -258,6 +258,8 @@ class LinkWireless { * @param sendTimerId GBA Timer to use for sending. * @param asyncACKTimerId GBA Timer to use for ACKs. If you have free timers, * use one here to reduce CPU usage. + * \warning You can use `Link::perFrame(...)` to convert from *packets per + * frame* to *interval values*. */ explicit LinkWireless( bool forwarding = true, diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index c18051f..4c004d6 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -239,6 +239,11 @@ class Queue { volatile bool _needsClear = false; }; +// Packets per frame -> Timer interval +static inline u16 perFrame(u16 packets) { + return (1667 * 1024) / (packets * 6104); +} + // mGBA Logging #if LINK_ENABLE_DEBUG_LOGS != 0 From c011211a9ca92e36066fa534c728635fa7ca17b9 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 08:40:24 -0300 Subject: [PATCH 159/195] LinkWireless: Adding compile-time option to enable nested interrupts --- README.md | 4 ++ examples/LinkCable_full/src/main.cpp | 9 +-- examples/LinkCable_full/src/main.h | 6 +- examples/LinkCable_stress/src/main.cpp | 12 ++-- examples/LinkCable_stress/src/main.h | 6 +- .../src/scenes/MultibootScene.cpp | 1 + examples/LinkWireless_demo/src/main.cpp | 3 +- lib/LinkWireless.cpp | 42 ++++++++++++- lib/LinkWireless.hpp | 61 ++++++++++++++++--- lib/_link_common.hpp | 1 + 10 files changed, 112 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 879f61e..8c6411e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # gba-link-connection +> 🚧 `v7.0.0` is not stable yet! come back later! 🚧 + A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. Its main purpose is to provide multiplayer support to homebrew games. - [👾](#-LinkCable) [LinkCable.hpp](lib/LinkCable.hpp): The classic 16-bit **Multi-Play mode** (up to 4 players) using a GBA Link Cable! @@ -188,6 +190,8 @@ You can also change these compile-time constants: - `LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH` and `LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH`: to set the biggest allowed transfer per timer tick. Transfers contain retransmission headers and multiple user messages. These values must be in the range `[6;20]` for servers and `[2;4]` for clients. The default values are `20` and `4`, but you might want to set them a bit lower to reduce CPU usage. - `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. - If you enable this, make sure that `LinkWireless.cpp` gets compiled! For example, in a Makefile-based project, verify that the file is in your `SRCDIRS` list. +- `LINK_WIRELESS_ENABLE_NESTED_IRQ`: to allow `LINK_WIRELESS_ISR_*` functions to be interrupted. This can be useful, for example, if your audio engine requires calling a VBlank handler with precise timing. + - This won't produce any effect if `LINK_WIRELESS_PUT_ISR_IN_IWRAM` is disabled. - `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce a bit of latency but also reduce _a lot_ the overall CPU usage. It's enabled in the `LinkWireless_demo` example, but disabled in the `LinkUniversal_*` examples. ## Methods diff --git a/examples/LinkCable_full/src/main.cpp b/examples/LinkCable_full/src/main.cpp index fe10b35..34cfbed 100644 --- a/examples/LinkCable_full/src/main.cpp +++ b/examples/LinkCable_full/src/main.cpp @@ -15,8 +15,7 @@ static std::unique_ptr testScene{new TestScene(engine)}; #ifndef USE_LINK_UNIVERSAL LinkCable* linkCable = new LinkCable(); LinkCable* linkConnection = linkCable; -#endif -#ifdef USE_LINK_UNIVERSAL +#else LinkUniversal* linkUniversal = new LinkUniversal(); LinkUniversal* linkConnection = linkUniversal; #endif @@ -78,8 +77,7 @@ inline void setUpInterrupts() { interrupt_enable(INTR_SERIAL); interrupt_set_handler(INTR_TIMER3, LINK_CABLE_ISR_TIMER); interrupt_enable(INTR_TIMER3); -#endif -#ifdef USE_LINK_UNIVERSAL +#else // LinkUniversal interrupt_set_handler(INTR_VBLANK, LINK_UNIVERSAL_ISR_VBLANK); interrupt_enable(INTR_VBLANK); @@ -98,8 +96,7 @@ inline void setUpInterrupts() { void printTutorial() { #ifndef USE_LINK_UNIVERSAL DEBULOG("LinkCable_full (v7.0.0)"); -#endif -#ifdef USE_LINK_UNIVERSAL +#else DEBULOG("LinkUniversal_full (v7.0.0)"); #endif diff --git a/examples/LinkCable_full/src/main.h b/examples/LinkCable_full/src/main.h index 07ba353..f194cae 100644 --- a/examples/LinkCable_full/src/main.h +++ b/examples/LinkCable_full/src/main.h @@ -5,8 +5,7 @@ #ifndef USE_LINK_UNIVERSAL #include "../../../lib/LinkCable.hpp" -#endif -#ifdef USE_LINK_UNIVERSAL +#else #include "../../../lib/LinkUniversal.hpp" #endif @@ -14,8 +13,7 @@ #ifndef USE_LINK_UNIVERSAL extern LinkCable* linkConnection; -#endif -#ifdef USE_LINK_UNIVERSAL +#else extern LinkUniversal* linkConnection; #endif diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index ec5b40f..938083b 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -34,8 +34,7 @@ u32 toMs(u32 cycles); #ifndef USE_LINK_UNIVERSAL LinkCable* linkCable = new LinkCable(); LinkCable* linkConnection = linkCable; -#endif -#ifdef USE_LINK_UNIVERSAL +#else LinkUniversal* linkUniversal = new LinkUniversal(LinkUniversal::Protocol::AUTODETECT, "LinkUniversal", @@ -69,8 +68,7 @@ void init() { interrupt_enable(INTR_SERIAL); interrupt_set_handler(INTR_TIMER3, LINK_CABLE_ISR_TIMER); interrupt_enable(INTR_TIMER3); -#endif -#ifdef USE_LINK_UNIVERSAL +#else // LinkUniversal interrupt_set_handler(INTR_VBLANK, LINK_UNIVERSAL_ISR_VBLANK); interrupt_enable(INTR_VBLANK); @@ -89,8 +87,7 @@ int main() { while (true) { #ifndef USE_LINK_UNIVERSAL std::string output = "LinkCable_stress (v7.0.0)\n\n"; -#endif -#ifdef USE_LINK_UNIVERSAL +#else std::string output = "LinkUniversal_stress (v7.0.0)\n\n"; #endif @@ -116,8 +113,7 @@ int main() { interval = 10; #ifndef USE_LINK_UNIVERSAL linkConnection->config.interval = interval; -#endif -#ifdef USE_LINK_UNIVERSAL +#else linkConnection->linkCable->config.interval = interval; linkConnection->linkWireless->config.interval = interval; #endif diff --git a/examples/LinkCable_stress/src/main.h b/examples/LinkCable_stress/src/main.h index 07ba353..f194cae 100644 --- a/examples/LinkCable_stress/src/main.h +++ b/examples/LinkCable_stress/src/main.h @@ -5,8 +5,7 @@ #ifndef USE_LINK_UNIVERSAL #include "../../../lib/LinkCable.hpp" -#endif -#ifdef USE_LINK_UNIVERSAL +#else #include "../../../lib/LinkUniversal.hpp" #endif @@ -14,8 +13,7 @@ #ifndef USE_LINK_UNIVERSAL extern LinkCable* linkConnection; -#endif -#ifdef USE_LINK_UNIVERSAL +#else extern LinkUniversal* linkConnection; #endif diff --git a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp index b4b69fe..889bfca 100644 --- a/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/scenes/MultibootScene.cpp @@ -186,6 +186,7 @@ void MultibootScene::load() { #ifdef LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING linkWirelessMultiboot->logger = [](std::string string) { log(string); }; #endif + #ifdef LINK_RAW_WIRELESS_ENABLE_LOGGING linkWirelessMultiboot->linkRawWireless->logger = [](std::string string) { log(string); diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index c63e6ad..92f8d21 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -419,8 +419,7 @@ void messageLoop() { linkWireless->lastTimerTime * linkWireless->lastFrameTimerIRQs + linkWireless->lastACKTimerTime * linkWireless->lastFrameACKTimerIRQs)); -#endif -#ifndef PROFILING_ENABLED +#else if (lostPackets > 0) { output += "\n\n_lostPackets: " + std::to_string(lostPackets) + "\n"; output += "_last: (" + std::to_string(lastLostPacketPlayerId) + ":" + diff --git a/lib/LinkWireless.cpp b/lib/LinkWireless.cpp index 89b6ede..30d6977 100644 --- a/lib/LinkWireless.cpp +++ b/lib/LinkWireless.cpp @@ -1,13 +1,51 @@ #include "LinkWireless.hpp" #ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM + LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onSerial() { +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + interrupt = true; + LINK_WIRELESS_BARRIER; + Link::_REG_IME = 1; +#endif + __onSerial(); + +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + irqEnd(); +#endif } LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onTimer() { +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + if (interrupt) + return; + + interrupt = true; + LINK_WIRELESS_BARRIER; + Link::_REG_IME = 1; +#endif + __onTimer(); + +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + irqEnd(); +#endif } LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onACKTimer() { - __onACKTimer(); -} +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + if (interrupt) + return; + + interrupt = true; + LINK_WIRELESS_BARRIER; + Link::_REG_IME = 1; +#endif + + __onACKTimer(); + +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + irqEnd(); +#endif +} + #endif diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 5fe40f6..dd10e0f 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -91,9 +91,21 @@ * @brief Put Interrupt Service Routines (ISR) in IWRAM (uncomment to enable). * This can significantly improve performance due to its faster access, but it's * disabled by default to conserve IWRAM space, which is limited. + * \warning If you enable this, make sure that `LinkWireless.cpp` gets compiled! + * For example, in a Makefile-based project, verify that the file is in your + * `SRCDIRS` list. */ // #define LINK_WIRELESS_PUT_ISR_IN_IWRAM +/** + * @brief Allow LINK_WIRELESS_ISR_* functions to be interrupted. This can be + * useful, for example, if your audio engine requires calling a VBlank handler + * with precise timing. + * \warning This won't produce any effect if `LINK_WIRELESS_PUT_ISR_IN_IWRAM` is + * disabled. + */ +// #define LINK_WIRELESS_ENABLE_NESTED_IRQ + /** * @brief Use send/receive latch (uncomment to enable). * This makes it alternate between sends and receives on each timer tick @@ -751,10 +763,23 @@ class LinkWireless { * @brief This method is called by the VBLANK interrupt handler. * \warning This is internal API! */ +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + __attribute__((noinline)) void _onVBlank() { +#else void _onVBlank() { +#endif if (!isEnabled) return; +#ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + if (interrupt) { + pendingVBlank = true; + return; + } +#endif +#endif + #ifdef PROFILING_ENABLED profileStart(); #endif @@ -796,8 +821,7 @@ class LinkWireless { void _onSerial(); void _onTimer(); void _onACKTimer(); -#endif -#ifndef LINK_WIRELESS_PUT_ISR_IN_IWRAM +#else void _onSerial() { __onSerial(); } void _onTimer() { __onTimer(); } void _onACKTimer() { __onACKTimer(); } @@ -1036,11 +1060,30 @@ class LinkWireless { Error lastError = NONE; volatile bool isEnabled = false; +#ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + volatile bool interrupt = false, pendingVBlank = false; +#endif +#endif + void forwardMessageIfNeeded(Message& message) { if (state == SERVING && config.forwarding && sessionState.playerCount > 2) send(message.data, message.playerId); } +#ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + void irqEnd() { + interrupt = false; + LINK_WIRELESS_BARRIER; + if (pendingVBlank) { + _onVBlank(); + pendingVBlank = false; + } + } +#endif +#endif + void processAsyncCommand() { // (irq only) if (!asyncCommand.result.success) { if (asyncCommand.type == COMMAND_SEND_DATA) @@ -1071,8 +1114,7 @@ class LinkWireless { if (state == CONNECTED) sessionState.shouldWaitForServer = true; sessionState.sendReceiveLatch = !sessionState.sendReceiveLatch; -#endif -#ifndef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH +#else if (state == SERVING) { // ReceiveData (start) sendCommandAsync(COMMAND_RECEIVE_DATA); @@ -1125,8 +1167,7 @@ class LinkWireless { #ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH bool shouldReceive = !sessionState.sendReceiveLatch || sessionState.shouldWaitForServer; -#endif -#ifndef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH +#else bool shouldReceive = state == CONNECTED; #endif @@ -1773,7 +1814,13 @@ class LinkWireless { return buildU32(COMMAND_HEADER_VALUE, buildU16(length, type)); } - void transferAsync(u32 data) { + void transferAsync(u32 data) { // (irq only) +#ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + Link::_REG_IME = 0; +#endif +#endif + linkSPI->transfer(data, []() { return false; }, true, true); } diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 4c004d6..1dffb72 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -82,6 +82,7 @@ inline vu16& _REG_TM1CNT_L = *reinterpret_cast(_REG_BASE + 0x0104); inline vu16& _REG_TM1CNT_H = *reinterpret_cast(_REG_BASE + 0x0106); inline vu16& _REG_TM2CNT_L = *reinterpret_cast(_REG_BASE + 0x0108); inline vu16& _REG_TM2CNT_H = *reinterpret_cast(_REG_BASE + 0x010a); +inline vu16& _REG_IME = *reinterpret_cast(_REG_BASE + 0x0208); inline volatile _TMR_REC* const _REG_TM = reinterpret_cast(_REG_BASE + 0x0100); From c222688976752837424403b102961c62190b8bdb Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 09:17:23 -0300 Subject: [PATCH 160/195] Adding notes about the standard --- README.md | 4 +++- examples/LinkCableMultiboot_demo/Makefile | 2 +- examples/LinkCable_basic/Makefile | 2 +- examples/LinkCable_full/Makefile | 2 +- examples/LinkCable_stress/Makefile | 2 +- examples/LinkGPIO_demo/Makefile | 2 +- examples/LinkMobile_demo/Makefile | 2 +- examples/LinkPS2Keyboard_demo/Makefile | 2 +- examples/LinkPS2Mouse_demo/Makefile | 2 +- examples/LinkRawCable_demo/Makefile | 2 +- examples/LinkRawWireless_demo/Makefile | 2 +- examples/LinkSPI_demo/Makefile | 2 +- examples/LinkUART_demo/Makefile | 2 +- examples/LinkUniversal_basic/Makefile | 2 +- examples/LinkWirelessMultiboot_demo/Makefile | 2 +- examples/LinkWireless_demo/Makefile | 2 +- 16 files changed, 18 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 8c6411e..fdeef72 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,9 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. * The examples can be tested on real GBAs or using emulators. * For `LinkCable`/`LinkWireless`/`LinkUniversal`, there are stress tests that you can use to tweak your configuration. -> The example ROMs were compiled using [devkitPro](https://devkitpro.org) with GCC `14.1.0`. +> The files use some compiler extensions, so using **GCC** is required. + +> The example ROMs were compiled using [devkitPro](https://devkitpro.org) with GCC `14.1.0`, with `-std=c++17` as the standard and `-Ofast` as the optimization level. > To learn implementation details, you might also want to check out the [docs](docs) folder, which contains important documentation. diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index 1b66049..a149661 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_basic/Makefile b/examples/LinkCable_basic/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkCable_basic/Makefile +++ b/examples/LinkCable_basic/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_full/Makefile b/examples/LinkCable_full/Makefile index 02f0782..d883205 100644 --- a/examples/LinkCable_full/Makefile +++ b/examples/LinkCable_full/Makefile @@ -155,7 +155,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_stress/Makefile b/examples/LinkCable_stress/Makefile index 69f0c6b..de84eec 100644 --- a/examples/LinkCable_stress/Makefile +++ b/examples/LinkCable_stress/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkGPIO_demo/Makefile b/examples/LinkGPIO_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkGPIO_demo/Makefile +++ b/examples/LinkGPIO_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index 452bd20..eb09746 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map diff --git a/examples/LinkPS2Keyboard_demo/Makefile b/examples/LinkPS2Keyboard_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkPS2Keyboard_demo/Makefile +++ b/examples/LinkPS2Keyboard_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkPS2Mouse_demo/Makefile b/examples/LinkPS2Mouse_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkPS2Mouse_demo/Makefile +++ b/examples/LinkPS2Mouse_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkRawCable_demo/Makefile b/examples/LinkRawCable_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkRawCable_demo/Makefile +++ b/examples/LinkRawCable_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkRawWireless_demo/Makefile b/examples/LinkRawWireless_demo/Makefile index 02f0782..d883205 100644 --- a/examples/LinkRawWireless_demo/Makefile +++ b/examples/LinkRawWireless_demo/Makefile @@ -155,7 +155,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkSPI_demo/Makefile b/examples/LinkSPI_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkSPI_demo/Makefile +++ b/examples/LinkSPI_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkUART_demo/Makefile b/examples/LinkUART_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkUART_demo/Makefile +++ b/examples/LinkUART_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkUniversal_basic/Makefile b/examples/LinkUniversal_basic/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkUniversal_basic/Makefile +++ b/examples/LinkUniversal_basic/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 8736eae..5400667 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -155,7 +155,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkWireless_demo/Makefile b/examples/LinkWireless_demo/Makefile index 2c7c89a..dbc85d2 100644 --- a/examples/LinkWireless_demo/Makefile +++ b/examples/LinkWireless_demo/Makefile @@ -165,7 +165,7 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map From 9132537608a8233adc88f0236643972edc91df4c Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Fri, 23 Aug 2024 19:22:55 -0300 Subject: [PATCH 161/195] LinkWireless: Adding compile-time constant to optimize the library for two players --- README.md | 3 ++- lib/LinkWireless.hpp | 57 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fdeef72..8070db2 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ Name | Type | Default | Description --- | --- | --- | --- `forwarding` | **bool** | `true` | If `true`, the server forwards all messages to the clients. Otherwise, clients only see messages sent from the server (ignoring other peers). `retransmission` | **bool** | `true` | If `true`, the library handles retransmission for you, so there should be no packet loss. -`maxPlayers` | **u8** *(2~5)* | `5` | Maximum number of allowed players. If your game only supports -for example- two players, set this to `2` as it will make transfers faster. +`maxPlayers` | **u8** *(2~5)* | `5` | Maximum number of allowed players. `timeout` | **u32** | `10` | Maximum number of *frames* without receiving data from other player before resetting the connection. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. You can use `Link::perFrame(...)` to convert from *packets per frame* to *interval values*. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. @@ -195,6 +195,7 @@ You can also change these compile-time constants: - `LINK_WIRELESS_ENABLE_NESTED_IRQ`: to allow `LINK_WIRELESS_ISR_*` functions to be interrupted. This can be useful, for example, if your audio engine requires calling a VBlank handler with precise timing. - This won't produce any effect if `LINK_WIRELESS_PUT_ISR_IN_IWRAM` is disabled. - `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce a bit of latency but also reduce _a lot_ the overall CPU usage. It's enabled in the `LinkWireless_demo` example, but disabled in the `LinkUniversal_*` examples. +- `LINK_WIRELESS_TWO_PLAYERS_ONLY`: to optimize the library for two players. This will make the code smaller and use less CPU. It will also let you "misuse" 5 bits from the packet header to send small packets really fast (e.g. pressed keys) without confirmation, using the `QUICK_SEND` and `QUICK_RECEIVE` properties. ## Methods diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index dd10e0f..009d95e 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -98,9 +98,10 @@ // #define LINK_WIRELESS_PUT_ISR_IN_IWRAM /** - * @brief Allow LINK_WIRELESS_ISR_* functions to be interrupted. This can be - * useful, for example, if your audio engine requires calling a VBlank handler - * with precise timing. + * @brief Allow LINK_WIRELESS_ISR_* functions to be interrupted (uncomment to + * enable). + * This can be useful, for example, if your audio engine requires calling a + * VBlank handler with precise timing. * \warning This won't produce any effect if `LINK_WIRELESS_PUT_ISR_IN_IWRAM` is * disabled. */ @@ -114,6 +115,15 @@ */ // #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH +/** + * @brief Optimize the library for two players (uncomment to enable). + * This will make the code smaller and use less CPU. It will also let you + * "misuse" 5 bits from the packet header to send small packets really fast + * (e.g. pressed keys) without confirmation, using the `QUICK_SEND` and + * `QUICK_RECEIVE` properties. + */ +// #define LINK_WIRELESS_TWO_PLAYERS_ONLY + static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; #define LINK_WIRELESS_MAX_PLAYERS 5 @@ -159,7 +169,11 @@ class LinkWireless { using s8 = signed char; static constexpr auto BASE_FREQUENCY = Link::_TM_FREQ_1024; +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + static constexpr int PACKET_ID_BITS = 5; +#else static constexpr int PACKET_ID_BITS = 6; +#endif static constexpr int MAX_PACKET_IDS = (1 << PACKET_ID_BITS); static constexpr int PACKET_ID_MASK = (MAX_PACKET_IDS - 1); static constexpr int MSG_PING = 0xffff; @@ -192,6 +206,11 @@ class LinkWireless { 0x4e45, 0x4f44, 0x4f44, 0x8001}; public: +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + u32 QUICK_SEND = 0; + u32 QUICK_RECEIVE = 0; +#endif + // std::function debug; // #define PROFILING_ENABLED #ifdef PROFILING_ENABLED @@ -241,7 +260,6 @@ class LinkWireless { u8 playerId = 0; }; - public: struct Server { u16 id = 0; u16 gameId; @@ -281,6 +299,10 @@ class LinkWireless { u16 interval = LINK_WIRELESS_DEFAULT_INTERVAL, u8 sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, s8 asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID) { +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + maxPlayers = 2; +#endif + this->config.forwarding = forwarding; this->config.retransmission = retransmission; this->config.maxPlayers = maxPlayers; @@ -632,7 +654,9 @@ class LinkWireless { while (!sessionState.incomingMessages.isEmpty()) { auto message = sessionState.incomingMessages.pop(); messages[i] = message; +#ifndef LINK_WIRELESS_TWO_PLAYERS_ONLY forwardMessageIfNeeded(message); +#endif i++; } @@ -795,12 +819,14 @@ class LinkWireless { return; } +#ifndef LINK_WIRELESS_TWO_PLAYERS_ONLY trackRemoteTimeouts(); if (!checkRemoteTimeouts()) { reset(); lastError = REMOTE_TIMEOUT; return; } +#endif sessionState.recvFlag = false; sessionState.acceptCalled = false; @@ -1001,8 +1027,13 @@ class LinkWireless { struct MessageHeader { unsigned int partialPacketId : PACKET_ID_BITS; unsigned int isConfirmation : 1; +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + unsigned int playerId : 1; + unsigned int quickData : 5; +#else unsigned int playerId : 3; unsigned int clientCount : 2; +#endif unsigned int dataChecksum : 4; }; @@ -1066,10 +1097,12 @@ class LinkWireless { #endif #endif +#ifndef LINK_WIRELESS_TWO_PLAYERS_ONLY void forwardMessageIfNeeded(Message& message) { if (state == SERVING && config.forwarding && sessionState.playerCount > 2) send(message.data, message.playerId); } +#endif #ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM #ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ @@ -1239,7 +1272,12 @@ class LinkWireless { u32 partialPacketId = header.partialPacketId; bool isConfirmation = header.isConfirmation; u8 remotePlayerId = Link::_min(header.playerId, config.maxPlayers - 1); +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + QUICK_RECEIVE = header.quickData; + u8 remotePlayerCount = 2; +#else u8 remotePlayerCount = LINK_WIRELESS_MIN_PLAYERS + header.clientCount; +#endif u32 checksum = header.dataChecksum; bool isPing = data == MSG_PING; @@ -1322,6 +1360,7 @@ class LinkWireless { void addConfirmations() { // (irq only) if (state == SERVING) { +#ifndef LINK_WIRELESS_TWO_PLAYERS_ONLY if (config.maxPlayers > 2 && (sessionState.lastPacketIdFromClients[1] == 0 || sessionState.lastPacketIdFromClients[2] == 0 || @@ -1332,6 +1371,7 @@ class LinkWireless { u32 rawMessage = buildU32(header, lastPacketId & 0xffff); addAsyncData(rawMessage); } +#endif for (int i = 0; i < config.maxPlayers - 1; i++) { u32 confirmationData = sessionState.lastPacketIdFromClients[1 + i]; @@ -1411,6 +1451,9 @@ class LinkWireless { header.partialPacketId = packetId % MAX_PACKET_IDS; header.isConfirmation = isConfirmation; header.playerId = playerId; +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + header.quickData = QUICK_SEND; +#endif header.clientCount = sessionState.playerCount - LINK_WIRELESS_MIN_PLAYERS; header.dataChecksum = dataChecksum; @@ -1424,6 +1467,7 @@ class LinkWireless { return __builtin_popcount(data) % 16; } +#ifndef LINK_WIRELESS_TWO_PLAYERS_ONLY void trackRemoteTimeouts() { // (irq only) for (u32 i = 0; i < sessionState.playerCount; i++) { if (i != sessionState.currentPlayerId && !sessionState.msgFlags[i]) @@ -1441,6 +1485,7 @@ class LinkWireless { return true; } +#endif u32 getDeviceTransferLength() { // (irq only) return state == SERVING ? LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH @@ -1552,6 +1597,10 @@ class LinkWireless { void resetState() { this->state = NEEDS_RESET; this->asyncCommand.isActive = false; +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + QUICK_SEND = 0; + QUICK_RECEIVE = 0; +#endif this->sessionState.playerCount = 1; this->sessionState.currentPlayerId = 0; this->sessionState.recvFlag = false; From 20bb29955e95879309987580fd2b4efcb1997cd3 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 24 Aug 2024 05:37:43 -0300 Subject: [PATCH 162/195] LinkUART: Using the queue methods for sync pushes/pops --- lib/LinkUART.hpp | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 6eb8d08..4d9e18c 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -258,13 +258,13 @@ class LinkUART { */ u8 read() { LINK_UART_BARRIER; - isReading = true; + incomingQueue.startReading(); LINK_UART_BARRIER; u8 data = incomingQueue.pop(); LINK_UART_BARRIER; - isReading = false; + incomingQueue.stopReading(); LINK_UART_BARRIER; return data; @@ -274,17 +274,7 @@ class LinkUART { * @brief Sends a `data` byte. * @param data The value to be sent. */ - void send(u8 data) { - LINK_UART_BARRIER; - isAdding = true; - LINK_UART_BARRIER; - - outgoingQueue.push(data); - - LINK_UART_BARRIER; - isAdding = false; - LINK_UART_BARRIER; - } + void send(u8 data) { outgoingQueue.syncPush(data); } /** * @brief This method is called by the SERIAL interrupt handler. @@ -294,10 +284,10 @@ class LinkUART { if (!isEnabled || hasError()) return; - if (!isReading && canReceive()) + if (!incomingQueue.isReading() && canReceive()) incomingQueue.push((u8)Link::_REG_SIODATA8); - if (!isAdding && canTransfer() && needsTransfer()) + if (!outgoingQueue.isWriting() && canTransfer() && needsTransfer()) Link::_REG_SIODATA8 = outgoingQueue.pop(); } @@ -313,8 +303,6 @@ class LinkUART { U8Queue incomingQueue; U8Queue outgoingQueue; volatile bool isEnabled = false; - volatile bool isReading = false; - volatile bool isAdding = false; bool canReceive() { return !isBitHigh(BIT_RECEIVE_DATA_FLAG); } bool canTransfer() { return !isBitHigh(BIT_SEND_DATA_FLAG); } From 0d5c1d1077651590499e0654d20fde9fb28f8d28 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 24 Aug 2024 08:12:09 -0300 Subject: [PATCH 163/195] Starting JOYBUS --- examples/LinkCube_demo/Makefile | 284 ++++++++++++++++++++++++++++ examples/LinkCube_demo/src/main.cpp | 114 +++++++++++ lib/LinkCube.hpp | 186 ++++++++++++++++++ lib/_link_common.hpp | 6 + 4 files changed, 590 insertions(+) create mode 100644 examples/LinkCube_demo/Makefile create mode 100644 examples/LinkCube_demo/src/main.cpp create mode 100644 lib/LinkCube.hpp diff --git a/examples/LinkCube_demo/Makefile b/examples/LinkCube_demo/Makefile new file mode 100644 index 0000000..dbc85d2 --- /dev/null +++ b/examples/LinkCube_demo/Makefile @@ -0,0 +1,284 @@ +# +# Template tonc makefile +# +# Yoinked mostly from DKP's template +# + +# === SETUP =========================================================== + +# --- No implicit rules --- +.SUFFIXES: + +# --- Paths --- +export TONCLIB := ${DEVKITPRO}/libtonc + +# === TONC RULES ====================================================== +# +# Yes, this is almost, but not quite, completely like to +# DKP's base_rules and gba_rules +# + +export PATH := $(DEVKITARM)/bin:$(PATH) + + +# --- Executable names --- + +PREFIX ?= arm-none-eabi- + +export CC := $(PREFIX)gcc +export CXX := $(PREFIX)g++ +export AS := $(PREFIX)as +export AR := $(PREFIX)ar +export NM := $(PREFIX)nm +export OBJCOPY := $(PREFIX)objcopy + +# LD defined in Makefile + + +# === LINK / TRANSLATE ================================================ + +%.gba : %.elf + @$(OBJCOPY) -O binary $< $@ + @echo built ... $(notdir $@) + @gbafix $@ -t$(TITLE) + +#---------------------------------------------------------------------- + +%.mb.elf : + @echo Linking multiboot + $(LD) -specs=gba_mb.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(NM) -Sn $@ > $(basename $(notdir $@)).map + +#---------------------------------------------------------------------- + +%.elf : + @echo Linking cartridge + $(LD) -specs=gba.specs $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@ + $(NM) -Sn $@ > $(basename $(notdir $@)).map + +#---------------------------------------------------------------------- + +%.a : + @echo $(notdir $@) + @rm -f $@ + $(AR) -crs $@ $^ + + +# === OBJECTIFY ======================================================= + +%.iwram.o : %.iwram.cpp + @echo $(notdir $<) + $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(IARCH) -c $< -o $@ + +#---------------------------------------------------------------------- +%.iwram.o : %.iwram.c + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) $(IARCH) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.cpp + @echo $(notdir $<) + $(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(RARCH) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.c + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) $(RARCH) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.s + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ + +#---------------------------------------------------------------------- + +%.o : %.S + @echo $(notdir $<) + $(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ + + +#---------------------------------------------------------------------- +# canned command sequence for binary data +#---------------------------------------------------------------------- + +define bin2o + bin2s $< | $(AS) -o $(@) + echo "extern const u8" `(echo $( `(echo $(> `(echo $(> `(echo $( $(BUILD)/$(TARGET).map + +all : $(BUILD) + +clean: + @echo clean ... + @rm -rf $(BUILD) $(TARGET).elf $(TARGET).gba $(TARGET).sav + + +else # If we're here, we should be in the BUILD dir + +DEPENDS := $(OFILES:.o=.d) + +# --- Main targets ---- + +$(OUTPUT).gba : $(OUTPUT).elf + +$(OUTPUT).elf : $(OFILES) + +-include $(DEPENDS) + + +endif # End BUILD switch + +# --- More targets ---------------------------------------------------- + +.PHONY: clean rebuild start + +rebuild: clean $(BUILD) + +start: + start "$(TARGET).gba" + +restart: rebuild start + +# EOF diff --git a/examples/LinkCube_demo/src/main.cpp b/examples/LinkCube_demo/src/main.cpp new file mode 100644 index 0000000..1c5f747 --- /dev/null +++ b/examples/LinkCube_demo/src/main.cpp @@ -0,0 +1,114 @@ +#define LINK_ENABLE_DEBUG_LOGS 1 + +// (0) Include the header +#include "../../../lib/LinkCube.hpp" + +#include +#include +#include "../../_lib/interrupt.h" + +void log(std::string text); +void wait(u32 verticalLines); +bool didPress(unsigned short key, bool& pressed); +template +[[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1); +inline void VBLANK() {} + +// (1) Create a LinkCube instance +LinkCube* linkCube = new LinkCube(); + +void init() { + REG_DISPCNT = DCNT_MODE0 | DCNT_BG0; + tte_init_se_default(0, BG_CBB(0) | BG_SBB(31)); + + // (2) Add the interrupt service routines + interrupt_init(); + interrupt_set_handler(INTR_VBLANK, VBLANK); + interrupt_enable(INTR_VBLANK); + interrupt_set_handler(INTR_SERIAL, LINK_CUBE_ISR_SERIAL); + interrupt_enable(INTR_SERIAL); +} + +int main() { + init(); + + // (3) Initialize the library + linkCube->activate(); + + int counter = -1; + u32 index = 0; + std::string received = ""; + + while (true) { + // Title + std::string output = // TODO: IMPLEMENT pending + "LinkCube_demo (v7.0.0)\n\nPress A to send\nPress B to clear\n\nLast " + "sent: " + + std::to_string(counter) + "\n(pending = " + std::to_string(0) + + ")\n\nReceived:\n" + received; + + // if (index == 0) { + // Link::_REG_JOY_TRANS_L = 0; + // index++; + // } else if (index == 1) { + // Link::_REG_JOY_TRANS_L = 0b100; + // index++; + // } else if (index == 2) { + // Link::_REG_JOY_TRANS_L = Link::_REG_JOYSTAT & 0xff; + // index = 0; + // } + + output += std::to_string(linkCube->n) + ", \n"; + output += std::to_string(Link::_REG_JOY_RECV_H) + ", \n"; + output += std::to_string(Link::_REG_JOY_RECV_L) + ", \n"; + output += "joycnt: " + std::to_string(Link::_REG_JOYCNT) + ", \n"; + output += "joystat: " + std::to_string(Link::_REG_JOYSTAT) + ", \n"; + + // TODO: IMPLEMENT transfers + + // Print + VBlankIntrWait(); + log(output); + } + + return 0; +} + +void log(std::string text) { + tte_erase_screen(); + tte_write("#{P:0,0}"); + tte_write(text.c_str()); +} + +void wait(u32 verticalLines) { + u32 count = 0; + u32 vCount = REG_VCOUNT; + + while (count < verticalLines) { + if (REG_VCOUNT != vCount) { + count++; + vCount = REG_VCOUNT; + } + }; +} + +bool didPress(u16 key, bool& pressed) { + u16 keys = ~REG_KEYS & KEY_ANY; + bool isPressedNow = false; + if ((keys & key) && !pressed) { + pressed = true; + isPressedNow = true; + } + if (pressed && !(keys & key)) + pressed = false; + return isPressedNow; +} + +template +[[nodiscard]] std::string toHex(I w, size_t hex_len) { + static const char* digits = "0123456789ABCDEF"; + std::string rc(hex_len, '0'); + for (size_t i = 0, j = (hex_len - 1) * 4; i < hex_len; ++i, j -= 4) + rc[i] = digits[(w >> j) & 0x0f]; + return rc; +} diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp new file mode 100644 index 0000000..894280e --- /dev/null +++ b/lib/LinkCube.hpp @@ -0,0 +1,186 @@ +#ifndef LINK_CUBE_H +#define LINK_CUBE_H + +// -------------------------------------------------------------------------- +// A JOYBUS handler for the Link Port. +// -------------------------------------------------------------------------- +// Usage: +// - 1) Include this header in your main.cpp file and add: +// LinkCube* linkCube = new LinkCube(); +// - 2) Add the required interrupt service routines: (*) +// irq_init(NULL); +// irq_add(II_SERIAL, LINK_CUBE_ISR_SERIAL); +// - 3) Initialize the library with: +// linkCube->activate(); +// // TODO: WRITE +// -------------------------------------------------------------------------- +// (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. +// That causes packet loss. You REALLY want to use libugba's instead. +// (see examples) +// -------------------------------------------------------------------------- + +#include "_link_common.hpp" + +/** + * @brief // TODO: WRITE + */ +#define LINK_CUBE_QUEUE_SIZE 10 + +static volatile char LINK_CUBE_VERSION[] = "LinkCube/v7.0.0"; + +#define LINK_CUBE_BARRIER asm volatile("" ::: "memory") // TODO: USE? + +#if LINK_ENABLE_DEBUG_LOGS != 0 +#define _LCLOG_(...) Link::log(__VA_ARGS__) +#else +#define _LCLOG_(...) +#endif + +/** + * @brief A JOYBUS handler for the Link Port. + */ +class LinkCube { + private: + using u32 = unsigned int; + using u16 = unsigned short; + using u8 = unsigned char; + using U32Queue = Link::Queue; + + static constexpr int DEVICE_GBA = 0x0004; + static constexpr int COMMAND_RESET = 0xff; + // static constexpr int COMMAND_INFO = 0x00; // TODO: DOESN'T MATTER + // static constexpr int COMMAND_DATA_WRITE = 0x15; + // static constexpr int COMMAND_DATA_READ = 0x14; + static constexpr int BIT_CMD_RESET = 0; + static constexpr int BIT_CMD_RECEIVE = 1; + static constexpr int BIT_CMD_SEND = 2; + static constexpr int COMMAND_DATA_READ = 0x14; + static constexpr int BIT_IRQ = 6; + static constexpr int BIT_JOYBUS_HIGH = 14; + static constexpr int BIT_GENERAL_PURPOSE_LOW = 14; + static constexpr int BIT_GENERAL_PURPOSE_HIGH = 15; + + public: + /** + * @brief Returns whether the library is active or not. + */ + [[nodiscard]] bool isActive() { return isEnabled; } + + /** + * @brief Activates the library. + */ + void activate() { + LINK_CUBE_BARRIER; + isEnabled = false; + LINK_CUBE_BARRIER; + + resetState(); + stop(); + + LINK_CUBE_BARRIER; + isEnabled = true; + LINK_CUBE_BARRIER; + + start(); + + Link::log("ACTIVATED!"); + } + + public: + int n = 0; // TODO: REMOVE + + /** + * @brief Deactivates the library. + */ + void deactivate() { + isEnabled = false; + resetState(); + stop(); + } + + /** + * @brief This method is called by the SERIAL interrupt handler. + * \warning This is internal API! + */ + void _onSerial() { + n++; + + if (!isEnabled) + return; + + if (isBitHigh(BIT_CMD_RESET)) { + Link::log("RESET HIGH?", Link::_REG_JOY_RECV_H); + Link::log("RESET LOW?", Link::_REG_JOY_RECV_L); + return; + } + if (isBitHigh(BIT_CMD_RECEIVE)) { + // TODO: RECEIVE + return; + } + if (isBitHigh(BIT_CMD_SEND)) { + // TODO: RECEIVE + return; + } + } + + private: + U32Queue incomingQueue; // TODO: SYNCHRONIZE? + U32Queue outgoingQueue; + volatile bool isEnabled = false; + + void resetState() { + incomingQueue.clear(); + outgoingQueue.clear(); + } + + void stop() { + setInterruptsOff(); + setGeneralPurposeMode(); + } + + void start() { + setJoybusMode(); + setInterruptsOn(); + _LCLOG_("Activated irq"); // TODO: REMOVE + } + + void setJoybusMode() { + Link::_REG_RCNT = Link::_REG_RCNT | (1 << BIT_JOYBUS_HIGH) | + (1 << BIT_GENERAL_PURPOSE_HIGH); + } + + void setGeneralPurposeMode() { + Link::_REG_RCNT = (Link::_REG_RCNT & ~(1 << BIT_GENERAL_PURPOSE_LOW)) | + (1 << BIT_GENERAL_PURPOSE_HIGH); + } + + void setInterruptsOn() { setBitHigh(BIT_IRQ); } + void setInterruptsOff() { setBitLow(BIT_IRQ); } + + // TODO: REMOVE? + static u32 buildU32(u8 msB, u8 byte2, u8 byte3, u8 lsB) { + return ((msB & 0xFF) << 24) | ((byte2 & 0xFF) << 16) | + ((byte3 & 0xFF) << 8) | (lsB & 0xFF); + } + static u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } + static u16 msB32(u32 value) { return value >> 16; } + static u16 lsB32(u32 value) { return value & 0xffff; } + static u8 msB16(u16 value) { return value >> 8; } + static u8 lsB16(u16 value) { return value & 0xff; } + bool isBitHigh(u8 bit) { return (Link::_REG_JOYCNT >> bit) & 1; } + void setBitHigh(u8 bit) { Link::_REG_JOYCNT |= 1 << bit; } + void setBitLow(u8 bit) { Link::_REG_JOYCNT &= ~(1 << bit); } +}; + +extern LinkCube* linkCube; + +/** + * @brief SERIAL interrupt handler. + */ +inline void LINK_CUBE_ISR_SERIAL() { + linkCube->_onSerial(); +} + +#undef _LCLOG_ + +#endif // LINK_CUBE_H diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 1dffb72..4bd89e1 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -76,6 +76,12 @@ inline vu32& _REG_SIODATA32 = *reinterpret_cast(_REG_BASE + 0x0120); inline vu16& _REG_SIODATA8 = *reinterpret_cast(_REG_BASE + 0x012A); inline vu16& _REG_SIOMLT_SEND = *reinterpret_cast(_REG_BASE + 0x012A); inline vu16* const _REG_SIOMULTI = reinterpret_cast(_REG_BASE + 0x0120); +inline vu16& _REG_JOYCNT = *reinterpret_cast(_REG_BASE + 0x0140); +inline vu16& _REG_JOY_RECV_L = *reinterpret_cast(_REG_BASE + 0x0150); +inline vu16& _REG_JOY_RECV_H = *reinterpret_cast(_REG_BASE + 0x0152); +inline vu16& _REG_JOY_TRANS_L = *reinterpret_cast(_REG_BASE + 0x0154); +inline vu16& _REG_JOY_TRANS_H = *reinterpret_cast(_REG_BASE + 0x0156); +inline vu16& _REG_JOYSTAT = *reinterpret_cast(_REG_BASE + 0x0158); inline vu16& _REG_VCOUNT = *reinterpret_cast(_REG_BASE + 0x0006); inline vu16& _REG_KEYS = *reinterpret_cast(_REG_BASE + 0x0130); inline vu16& _REG_TM1CNT_L = *reinterpret_cast(_REG_BASE + 0x0104); From 53089ce3fdadf1c373b3593139e01dc115a19641 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sat, 24 Aug 2024 09:40:23 -0300 Subject: [PATCH 164/195] Sends are working! --- examples/LinkCube_demo/src/main.cpp | 15 +-------------- lib/LinkCube.hpp | 29 +++++++++++++---------------- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/examples/LinkCube_demo/src/main.cpp b/examples/LinkCube_demo/src/main.cpp index 1c5f747..7bae28c 100644 --- a/examples/LinkCube_demo/src/main.cpp +++ b/examples/LinkCube_demo/src/main.cpp @@ -1,4 +1,4 @@ -#define LINK_ENABLE_DEBUG_LOGS 1 +#define LINK_ENABLE_DEBUG_LOGS 1 // TODO: 0 // (0) Include the header #include "../../../lib/LinkCube.hpp" @@ -36,7 +36,6 @@ int main() { linkCube->activate(); int counter = -1; - u32 index = 0; std::string received = ""; while (true) { @@ -47,18 +46,6 @@ int main() { std::to_string(counter) + "\n(pending = " + std::to_string(0) + ")\n\nReceived:\n" + received; - // if (index == 0) { - // Link::_REG_JOY_TRANS_L = 0; - // index++; - // } else if (index == 1) { - // Link::_REG_JOY_TRANS_L = 0b100; - // index++; - // } else if (index == 2) { - // Link::_REG_JOY_TRANS_L = Link::_REG_JOYSTAT & 0xff; - // index = 0; - // } - - output += std::to_string(linkCube->n) + ", \n"; output += std::to_string(Link::_REG_JOY_RECV_H) + ", \n"; output += std::to_string(Link::_REG_JOY_RECV_L) + ", \n"; output += "joycnt: " + std::to_string(Link::_REG_JOYCNT) + ", \n"; diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp index 894280e..debff0f 100644 --- a/lib/LinkCube.hpp +++ b/lib/LinkCube.hpp @@ -54,7 +54,6 @@ class LinkCube { static constexpr int BIT_CMD_RESET = 0; static constexpr int BIT_CMD_RECEIVE = 1; static constexpr int BIT_CMD_SEND = 2; - static constexpr int COMMAND_DATA_READ = 0x14; static constexpr int BIT_IRQ = 6; static constexpr int BIT_JOYBUS_HIGH = 14; static constexpr int BIT_GENERAL_PURPOSE_LOW = 14; @@ -84,11 +83,10 @@ class LinkCube { start(); Link::log("ACTIVATED!"); + Link::_REG_JOY_TRANS_H = 0xffee; + Link::_REG_JOY_TRANS_L = 0xaadd; } - public: - int n = 0; // TODO: REMOVE - /** * @brief Deactivates the library. */ @@ -103,23 +101,23 @@ class LinkCube { * \warning This is internal API! */ void _onSerial() { - n++; - if (!isEnabled) return; if (isBitHigh(BIT_CMD_RESET)) { - Link::log("RESET HIGH?", Link::_REG_JOY_RECV_H); - Link::log("RESET LOW?", Link::_REG_JOY_RECV_L); - return; + resetState(); + _LCLOG_("LinkCube: reset!"); + setBitHigh(BIT_CMD_RESET); } if (isBitHigh(BIT_CMD_RECEIVE)) { - // TODO: RECEIVE - return; + _LCLOG_("LinkCube: cmd receive!"); + setBitHigh(BIT_CMD_RECEIVE); + // return; } if (isBitHigh(BIT_CMD_SEND)) { - // TODO: RECEIVE - return; + _LCLOG_("LinkCube: cmd send!"); + setBitHigh(BIT_CMD_SEND); + // return; } } @@ -129,8 +127,8 @@ class LinkCube { volatile bool isEnabled = false; void resetState() { - incomingQueue.clear(); - outgoingQueue.clear(); + incomingQueue.syncClear(); + outgoingQueue.syncClear(); } void stop() { @@ -141,7 +139,6 @@ class LinkCube { void start() { setJoybusMode(); setInterruptsOn(); - _LCLOG_("Activated irq"); // TODO: REMOVE } void setJoybusMode() { From 0063b465e471ed518f0fa7450413b6f145f7a157 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 00:25:43 -0300 Subject: [PATCH 165/195] Improving LinkCable docs --- lib/LinkCable.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 80fcfeb..1fb73d8 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -535,11 +535,10 @@ inline void LINK_CABLE_ISR_TIMER() { * - On each VBLANK, SERIAL, or TIMER IRQ: * -> **If the user is not syncing**: * -> All `newMessages` are moved to `readyToSyncMessages`. + * - If (playerId == 0 && TIMER_IRQ) || (playerId > 0 && SERIAL_IRQ): * -> **If the user is not sending**: * -> Pops one message from `outgoingMessages` and transfers it. * - `sync()` moves all `readyToSyncMessages` to `syncedIncomingMessages`. */ #endif // LINK_CABLE_H - -// TODO: REPEAT IN LinkWireless / LinkUniversal From d7168f88513e47705bf0c201ab98f5dc8d46f423 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 00:25:43 -0300 Subject: [PATCH 166/195] Improving LinkCable docs --- lib/LinkCable.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 80fcfeb..1fb73d8 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -535,11 +535,10 @@ inline void LINK_CABLE_ISR_TIMER() { * - On each VBLANK, SERIAL, or TIMER IRQ: * -> **If the user is not syncing**: * -> All `newMessages` are moved to `readyToSyncMessages`. + * - If (playerId == 0 && TIMER_IRQ) || (playerId > 0 && SERIAL_IRQ): * -> **If the user is not sending**: * -> Pops one message from `outgoingMessages` and transfers it. * - `sync()` moves all `readyToSyncMessages` to `syncedIncomingMessages`. */ #endif // LINK_CABLE_H - -// TODO: REPEAT IN LinkWireless / LinkUniversal From 0e16794ccb77d0f7151f4c12b4a80d2f6e554a62 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 04:13:22 -0300 Subject: [PATCH 167/195] Finishing LinkCube --- README.md | 39 ++++++- docs/img/link-cube.gif | Bin 0 -> 123831 bytes examples/LinkCube_demo/src/main.cpp | 65 +++++++---- lib/LinkCable.hpp | 12 +- lib/LinkCube.hpp | 167 +++++++++++++++++++++------- lib/LinkUART.hpp | 14 +-- lib/LinkWireless.hpp | 4 +- lib/_link_common.hpp | 17 ++- 8 files changed, 230 insertions(+), 88 deletions(-) create mode 100644 docs/img/link-cube.gif diff --git a/README.md b/README.md index 8070db2..6d0964d 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. - [🔌](#-LinkGPIO) [LinkGPIO.hpp](lib/LinkGPIO.hpp): Use the Link Port however you want to control **any device** (like LEDs, rumble motors, and that kind of stuff)! - [🔗](#-LinkSPI) [LinkSPI.hpp](lib/LinkSPI.hpp): Connect with a PC (like a **Raspberry Pi**) or another GBA (with a GBC Link Cable) using this mode. Transfer up to 2Mbit/s! - [⏱️](#%EF%B8%8F-LinkUART) [LinkUART.hpp](lib/LinkUART.hpp): Easily connect to **any PC** using a USB to UART cable! +- [🟪](#-LinkCube) [LinkCube.hpp](lib/LinkCube.hpp): Exchange data with a *Wii* or a *GameCube* using the classic **Joybus** protocol! - [📱](#-LinkMobile) [LinkMobile.hpp](lib/LinkMobile.hpp): Connect to **the internet** using the *Mobile Adapter GB*, brought back to life thanks to the [REON](https://github.com/REONTeam) project! - [🖱️](#%EF%B8%8F-LinkPS2Mouse) [LinkPS2Mouse.hpp](lib/LinkPS2Mouse.hpp): Connect a **PS/2 mouse** to the GBA for extended controls! - [⌨️](#%EF%B8%8F-LinkPS2Keyboard) [LinkPS2Keyboard.hpp](lib/LinkPS2Keyboard.hpp): Connect a **PS/2 keyboard** to the GBA for extended controls! @@ -81,8 +82,8 @@ You can update these values at any time without creating a new instance: You can also change these compile-time constants: - `LINK_CABLE_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max **per player**). The default value is `15`, which seems fine for most games. - - This affects how much memory is allocated. With the default value, it's `390` bytes. There's a double-buffered pending queue (to avoid data races), `1` incoming queue and `1` outgoing queue. - - You can calculate the memory usage with: + - This affects how much memory is allocated. With the default value, it's around `390` bytes. There's a double-buffered pending queue (to avoid data races), `1` incoming queue and `1` outgoing queue. + - You can approximate the memory usage with: - `(LINK_CABLE_QUEUE_SIZE * sizeof(u16) * LINK_CABLE_MAX_PLAYERS) * 3 + LINK_CABLE_QUEUE_SIZE * sizeof(u16)` <=> `LINK_CABLE_QUEUE_SIZE * 26` ## Methods @@ -186,8 +187,8 @@ You can update these values at any time without creating a new instance: You can also change these compile-time constants: - `LINK_WIRELESS_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing messages the queues can store at max). The default value is `30`, which seems fine for most games. - - This affects how much memory is allocated. With the default value, it's `960` bytes. There's a double-buffered incoming queue and a double-buffered outgoing queue (to avoid data races). - - You can calculate the memory usage with: + - This affects how much memory is allocated. With the default value, it's around `960` bytes. There's a double-buffered incoming queue and a double-buffered outgoing queue (to avoid data races). + - You can approximate the memory usage with: - `LINK_WIRELESS_QUEUE_SIZE * sizeof(Message) * 4` <=> `LINK_WIRELESS_QUEUE_SIZE * 32` - `LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH` and `LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH`: to set the biggest allowed transfer per timer tick. Transfers contain retransmission headers and multiple user messages. These values must be in the range `[6;20]` for servers and `[2;4]` for clients. The default values are `20` and `4`, but you might want to set them a bit lower to reduce CPU usage. - `LINK_WIRELESS_PUT_ISR_IN_IWRAM`: to put critical functions in IWRAM, which can significantly improve performance due to its faster access. This is disabled by default to conserve IWRAM space, which is limited, but it's enabled in demos to showcase its performance benefits. @@ -421,6 +422,36 @@ The GBA operates using `1` stop bit, but everything else can be configured. By d - Green wire (`TX`) -> GBA `SI`. - White wire (`RX`) -> GBA `SO`. +# 🟪 LinkCube + +*(aka JOYBUS Mode)* + +This is the GBA's implementation of JOYBUS, in which users connect the console to a *GameCube* (or *Wii* with GC ports) using an official adapter. The library can be tested using *Dolphin/mGBA* and [gba-joybus-tester](https://github.com/afska/gba-joybus-tester). + +![screenshot](https://github.com/user-attachments/assets/93c11c9a-bdbf-4726-a070-895465739789) + +You can change these compile-time constants: +- `LINK_CUBE_QUEUE_SIZE`: to set a custom buffer size (how many incoming and outgoing values the queues can store at max). The default value is `10`, which seems fine for most games. + - This affects how much memory is allocated. With the default value, it's around `120` bytes. There's a double-buffered pending queue (to avoid data races), and 1 outgoing queue. + - You can approximate the memory usage with: + - `LINK_CUBE_QUEUE_SIZE * sizeof(u32) * 3` <=> `LINK_CUBE_QUEUE_SIZE * 12` + +## Methods + +Name | Return type | Description +--- | --- | --- +`isActive()` | **bool** | Returns whether the library is active or not. +`activate()` | - | Activates the library. +`deactivate()` | - | Deactivates the library. +`wait()` | **bool** | Waits for data. Returns `true` on success, or `false` on JOYBUS reset. +`wait(cancel)` | **bool** | Like `wait()` but accepts a `cancel()` function. The library will continuously invoke it, and abort the wait if it returns `true`. +`canRead()` | **bool** | Returns `true` if there are pending received values to read. +`read()` | **u32** | Dequeues and returns the next received value. If there's no received data, a `0` will be returned. +`peek()` | **u32** | Returns the next received value without dequeuing it. If there's no received data, a `0` will be returned. +`send(data)` | - | Sends 32-bit `data`. If the other end asks for data at the same time you call this method, a `0x00000000` will be sent. +`pendingCount()` | **u32** | Returns the number of pending outgoing transfers. +`didReset([clear])` | **bool** | Returns whether a JOYBUS reset was requested or not. After this call, the reset flag is cleared if `clear` is `true` (default behavior). + # 📱 LinkMobile *(aka Mobile Adapter GB)* diff --git a/docs/img/link-cube.gif b/docs/img/link-cube.gif new file mode 100644 index 0000000000000000000000000000000000000000..891579120107d887bfde226ff5d9c2f71b67516d GIT binary patch literal 123831 zcmeFYcU%)+_wSoRRgjK=^sdsIG?CsxL95nr(b|iP>_F6I4t~g=$Eh2UlYH5PfbirOHR&ANy$o0{gIhb z^y5cyQBi5hzf@dY`m?w^uedU+1d&lvo>5kiS(TC6kdW5(J%1>%Y9g){^|fvZQnwS@ zycN;C6NB7M7}mHO>l&+S8~oMU-PGFA*4EM0)z#bEJNS>fk;rx=vJHvs zL=Fxj2a$JWXlQ6;WMq7Ne0q9%c6JtpLM<&VE&ogZ{o}vBEHAIDtgNoCuCK3e{##rB zq3wTbXM5)#?e1>x?{6I)ZJwU4onI_nT+Lrx&z#?kpWck1Z-x$T`nGRcH?JDkFPk?m zJ2tO+cK#0To{#SzF77OEtd1U_I!@}b$r-(cG!J>IDk1EKRH}II^0Dc9-t5Z=Q=nzxHF*9=%at>_}@DDN2mX# zv$Hb{26O%|UHn^r|Ngzayu4ffm#+S;>;Iw4o11ei_85yj#A5fc*j+4k4~sp(VlT1S zYb+Lf^KV_>++1L>cUAAo|5LZOEVuWymGoXK$mu8v@d@pk~#3Z*x zn8)aQP8P1_{+DHX=>-XSI2q^d%?YmMj-cneF#OWV^vKb-(~Ho_Qph_mfgV*|$dW`y z1j{k~3IV0B7C0G}Q(_zI8`+)|7f`ugfJ2rX%B{n%Nq$NXO*m49%NlHOt+{AS_Atkm zv3O^G*2VjI*A(@|qvSWb--2xuf2l3ISduGRCK?SCZe}u|6c)0ymrh=?J!d`5vDpKv zpfX<1W0>4?mY`X_vFbZkPzKCL9FAA^>gnIHKh$iX`WUbEcwD=I?H>-Q7@9&XbV4F6 zA@p%#k54SBmf1C?WYXwE1j7@!976KK`tzSsNWmB5tfG3B5d~WiR@+1GwSh#^{R6@)Ef%j-|u7Rk2hcoykT=<{X@q( zYKmc`b8Q2A54`Ua74}~GUj6M$^3Z677sJrWrHQbwUPEem#?=OzsSB*DT;=o>&k>Q$ z^r6tTG>2JCw22|yp69{-06j;=yGK%+&C?ZP&f`wK`p5Gg6kWN-=VoP(VC1$hb!IkiTc z5)OT9-|Hz3r1p)uCrVESe2K2_R{dU{-A$GD0x@m-nm}qUZ6wD1x^BwlRyIn6Os3bF z!{wy1N)qQd#-@IT*+Qkqv6tiy1UkWsT(@3qWP5%A4y6BN`=aHjD|4@NHjDq1C`%#U25~$}Nk6VBXFmL*z3)muH_VQY@30#qZLKzFG<%#_ zkNm;s)jw!s87g%J0%z6Jvz~xC6fVfZ= zUwt%)?i3Cz&6f-(f0-$AnzCD+#ao&(;%0c7Lo-yU{A}QNjL&H=5 zhKY)PTO-@SmST3@Um* z?cX>~pOry|ip|akrdlq~%Av$17Wf*|9dsB(glLJ_?7(!*AM&z~XLzRjKG6e4tCiz@ zCDzXdXNG++RdC``TNRDjKdG4NLakDJ1F6|TqgA@-Xl$v*qWaeY^~9oSgroHj7Gm2A zOkEpsnQOSl{0iN9eVKGIS-p{aKtZv$Hr9WacOO<8(;oO9T;^>K`kO&YwvxM z&s3B1=Zd7EJ!`3}nbDZq+_;RrAF5Zg)5Ep3bwm3quN!C8wrlHqwGKX}T}>}p5B!=M zI`C|4oLkhcd$pi-=reb7YIM9$|dFLc@jW+6G38m}C>Y-%_Z>a?5;=O1oa;4nONCa0{V=D5Db#+AhHHD6aw!sVK_u{%b%OFbuh*3>z$j=YX;IzU=5sEB$zZe7 zGGEm0{Z{!uFA=axmnG06+snZ?D9%&W3`_kNs`GCv&tT)GtmY$)3ojWxX-e8~9?`%E z@LoWOqn6g6%65=-0lY$y83)o2`%p(M=L5zv%kRwPh&16ani2~fP5fqp%orRx;^aO&4r5SLas&=k4D2cJ9 z5^_k`L~B^^lkOC+ZN}C0?bl&P{5|=li8%>g%&Gvu^k`Xp=}{@FM7MO_~Oz@Rg6+Rh#aE0Z$ORPeep*J9uqvW%cBO`P_na`$+X^!aqjX8;X;TS>UGGg!piSIY2PYWD>i2 z0>5`YDh z0l==Laacoq0YuC*SKQ~ZxUz8ISaRGWT1ti)7dj~TlK?n50?3aB1#^LgMq>yN(K>_) zy0k!kQt%r!P;+tu9W%&?5KM{&%tLTjnekDozyvX%z>*u?(ia*52q^$;PZ~$p2JQra zTc*Ij3BU#j@D+Ew!e0udNEelq_~b&Ms7|aP0{k{MmWmnl9EvNA02@NVtfNteuDG%S zDP*)jVF5fL3$W1=*qS+7pbc!|`oIqX7Ig(CC<6tViJ!;Dv=~OY|HOL>0P`<_tpq@V z7Ia%kaD6wQ&HK8MW6TT`AO(j?+EGMie3=EOU*@yACS|4KZHEJLjf#8*5{1!; z=>*`J&v7Yz(X6Cyg{ehc6-E1;KsHxg*eFQ<+B4r<- zj4K{&+m_27kA10>)B+56Qnr?grPvs7W{$LQmj%~teKnEI7SO?a1_yfmv=D;=37CO0 z0{Da*;O%5w52%IYQt9tV3oAGxUM$Xu|0B=7iOx&&u4T$UikU z&_^`>RGnri3!KlcWb;>~GrK}+xXn8bAOAFJucwiv z%Hq-=wGg-wsxv=PuW7k-aN92?J@q9!l4{+xY`wUW7lDIM(IiMT$P&@|V9)i&nDkJi zb@5Tl>LW6sBPl%g`S^Xp76BY7cr%R<&co~Wxi2(Kn$71|Bx4%Q#~SSuPg`#h4{`v6 zITr21LilV5@XSZt<;yl%dRH<{Qi>>=R76J-a|dZ$J2_9wExP$!qw{#~0Xq*VC$b~r z9pUQJZjfBtv_lswvRh=Y3y$dU`-aB~z`126ks1Bu&bx*~u;4HyqSskL+=g?#GCAf#rIW04)qr?Ls{5 zX0N+%0ex`4Zh?}H47a}Zw5~1VUN6UPcnOyzvh#MSGu~wIz`EZ&eXz)pOjENf%db6$ zr!PdaTh#z@*a(3s9d8pDbh(hRw7S)Ly`1$LX>}9qo~uE$+K})21g~Q zak98^?HdP;p>dL*;6xNdt*-v1(c)j z#ZOKq<4t{^ocwq*>1=BMiPypV`IJZV)VIkgH?67IjVU|R>D$`LkY>A(jOn5Pr( ze7u=x|0&OX+Zf&{Z{C@(=9z`w$@u3p!Nk*v{!_^}Gr9h=nY`0qIcF0mr{Z~MgED4{ zP_y}_vw=>t@aJ=W8ME-AnHJOjOw*ZSt=TSy`9g--LZ`VN|C#RQdFTDv0pb~7Z0UTb zzuls!K9a^Z~o5e}fxrU6zQ{JT;)Z#g6>B4m3V1IszVfNGhY%aq>5%Ka* z(`8!hEMwWsU*3iK=O}#b6{3SBZpPn_TUK}$>>N-l0*tHQF)Ko5tAg6AVwtOtV^$>> zRxv}XGK_2K#B1_qYqnZz%9(2~qu10I*5sq7XQCZmwaj(lt!M|V&)}^CWE?=+>z&r? zhKw7d`Rl{c%a#5cd;5!a0n4_G(@w)1Sx(FEWj0sv)~mFZOkygYnqItpCY%5WFoPcj7W??~(4~1v8{q?~XPQZ5F zf@3)2awOk2{qSbC*^=AvP9%1RUS{dF*-mZQcwOf1j>Bd!<4n!)cERLsgUp@|!hVXszs<45z>&$1od2Rk2!H=MECV=?=#2YU%c&}Vpd%K5;Lc=tQ+?tsj?%fde1A)4{UDihPOTi+VlFm`XydFfH$GCuz?55EI@ z*3v-0@xzgW9>#Uf#bfbXbXv^Lw9`?c_TdgMxBoa;g(( zr&_*0!#ATiGDq|PrN?w;LV}iBJj(Sv8{bD6FP>SG9KuR>o|W5iVwX9vJ2p(`shH!B z=I5l2=a4KnkF0aQMHk=2bLdN#K&Fe3R_9>zi-@m_k*ya&BNs7?&f&Kg-xgsOS#}QP z(=S^$znhwylkFR)Fm*Bj=J_YQ7$0@wK$Ff%SU8!d+wF*jhQ(|M-b zJega-(Y^LISUC=>fFasKKIA^b6ZUBVR)xQ;AgiBoj*aW=F5+O{rOT z>YL&>na`<&&eW^7M-i5=0rokMU87njR7>b1gM;}}(`KQj=~p}pRocBz-rRp(ZrBh? z%%q%dc=W!9bDs~_V{a+8?7+<)qbVtt-1(^K(xH0sF%Zt(U(qkt#+n_ho^a@iieKp)Q zCnW84ygqb}2^e>}INC(DhLcF%m?F&OwE27~Z_nF~Zf@}fDo%GE6*X5+Up;O|+&v@Z z@E23RmbVbCk;vuZY3#}oKU*U$`il+X>5A$}i|V+RR1{RAdUL5Gk7JG#rT7Dr>!$R` zrOOSz`*E#8g{ge@NQEVwT{oZki=vPkhl1osHLfi7N;U3+yg$m1i@St0@XN<5HTY4h z#~OmYC48DfBZ?>D!ef?IL#Rm)VQmTHV63~g)FDx+w)FX0mC*Am9FfruEM>Kh!W8SN zj?%+~C$E&5LgP7A*nU*&QuB6;j46w*SC6G~o{8wG%Td*gE2)W!zL9(Nre@;#+fSnU z67LdfCPnOOL=6PpCTga5yw5}pxnWeb)9jI=VsBaE-qg;}r+gAKqRLLFohANRBW8?O zF;P2rQGX_8a?(asXR_ZX`V6%_`lilwWBSvxh0V1eNh*-tZi71ClXb6J|0~?&nm{mT zeKqX9vSCZeL%i?r!uzEz-bFtA0(t+1xcK6IbmLt82hrzv-t|!moHNzmUbZ+{#vAmg zStXh;5L&0acK5bU<8PL*8L^-IWy9%@#hV?0hvz5T=8~-b-OBu~FKLsXR{Phk&??bq zC#ksB$Eu`C#@nGx4Rh%b+ezK{p>lBY!m*lH-`6Q}&U5Zv{i+$nxq)n$*`@h>qtT`H z7Eju>9iOYowUb0e+O7McP5NP@v9t8YenEKC#{vGfYtVhM%_jGe7x>RTeyeabdyKtQ zdH!j_z^3`r6ffjDp9q`X>^bMs``ioVwVC1Ny_OxG>E3gs{K&B+PMKDAONT957ztg7 z63Q=V@!2i!mGRxL+idYYY{h@!cht+(dVQGtmEqUIlufJuc_2vu#HCGeA=NsbFyw(m zs!DF)?Jd3q09RZVL_G?{SF`|Osp{{B7o#u|KZ{G5b(wqmh@e(*COSf;)j=nhwvzyd zX-gnnqEGIDtL(dbZ|dc#Yez%*L*5Zti7U`ej)pz!diUUysshEZT+p{l3)0YfsSCoF z0rYuzBFV5;SpbOC5Bi?+hq%%c{okJry53XQ)GP6M{{CW)^MR&&ONk5X%B7(AfliR- z#b2sJh?=D`eYl{C)%foiudWY_XZ0#FnBQLmaV(i}B~<09|HOu0uhNIN6A9Bjj{Zuy zLKiI_LmUKt)LRuMT3Df`?fK_>7LFCSl7zZ$;-B~eMXM)oeyQu%eoUCOwbZo6S2JpP z`R#iN`%QI)h8gBhQY((NKqyv1^F8%ga<8JbP{J=wYq6@7ijaOD2Z^DDcLKqVdF&j` z6c~i8g|T1`s>F9MP{i9Cw2&lg*uH4P&J!TVNDwbjP`I zQ3>tUdG!_ddtDQI_Wp}9L=a7~ELhO6oq(qJ9ho#Wp-6J)e$gOm&WRcyuu#VB>KdYS z&DQuyClm5V+G&MGfnX|N@aFfpIyDDW1H#Dd*k+< zLVDeBol65z|)H&*9kPUR%n!7Tij^)%jDMM$WP;DayuK-8kktc4ZXHuJ`W<`#XJ2D^s}V*^&EyQR0LFgv3ve{ zW~`cW58|7&{!LMwm{V5Nhx|)qfkt{XO=5+-81SBrHr)zQNW?NYt6uWeU~_9`arrT zW_y8GzN^e!;=TAS1QAlw^WoNzEdB#W+WRTLNDDlB+)ACY!~MqIZ2s-5X=%hYm+<1A zI=;Nrd3RrRX>{q`kGV!7xiPC0Kd0;4~Zh zzRfw)H}l1UTfPhGsHU-U$_3w(vxc8|Z$lQ>EE7W>514o&j(x@@K_OAlsQ}`F>(`TL7e%uF@W$pqNb1rFr#JQb5y>dBQwz)ZqNorbiQ1Ol~y!ISJ z$cIkI_|wuDb|;*bM=GR2CJvLUa5n^_Reayq6;Jmr_VRahmin`Wi&5&;%Y3dVgM1Li zUYtMs1$jB_ha>*NYoz|4*;1m{FskX`tKDKYg*M!^r&tXMJQG>mkT$}o$M{VIx4CUN z-`j}R+KejOBHG#>P_~opwUMw#kg~T^>b0*5%Q3ude;CqE=-7_^(oR?1UYaIH+0@Rk zCRaSr&WO{&j4WZI>|hm<|IFIKrq{utnagh3!4)EpaqHmD>v&>?v(24lpgPVuBjlg*7*Xb zOO~=rj=f8MUjBthm!e*ml4X}Nk)onUmuh^MT3(mBB|A@bm*#kv)>@ZjNS8KFw+^M! ztLv^;BHgbQyOnsl^(?#fJ(Q$Ox((vH-{y4-Ms*u?b(^Gj8;^IJop!%k>o%wCc~{b9 z!QS&hu}4v)$I`OLdcM{K!>OzHT)Oa5+vM*XsRnVkIXcQVy4YRjYBSydi z;rPUTJ$&?P&q~zfoBEwJ)fOWAQ`Y45m z+UGSGEn5DErb5ZJLTQOYfk{@;bw^xNzn%pwmq?9wZQw^#t`#Lv^dkIWta_p!EKmnb zRzFY`m8(lL0A^M*p;5=N0JgG6aH^^|MX|NxXj+eI;4BSxq{CpgK)525+EufU2N_M@ zPeKy`cE#ypM@FT?aF;a290$*S4kE_;uxUJ@If{d=ihvHyfmTP&t~HHO%Aw(Fjp=w~ z*ZffB-SomZz~v&`IZA`<0^em6+Q{BN&914pgfzQ=R_=w;3Jf%{!-hpPx8jFs(SsXn znyow<%|s)+I4`YTwYdw`Du~p!@{qdBBe)hrVnoAda@ymHBUMqu{2nh=EJg z%-tKg;lX{-rb*2`3g%E=qSRiAS6{8hYs^z?^3YbX7{;Men`s(Z*V6<~blkHVJ|$8+ z>q6q%g2+%h-A&ro&|wNuq-grcLZr@>BC=~uel{fNrb&~5HL3Bmgq*~{EmxyEx^$)e8XC*e`qpksdV>71$RIXNwGEA6g6UQsTv+K5Rv}u^L6;wCiST`WVa)7 znm(dZGZe-Q)Eyf2X3*`y5={<9=@Ad<_7U~_+zhw!3{*>Z#>_K#?suSYKz3GPK1xvE zANszfdS6WSy_KNB6FT(kuPKo7LOiNAPESHaltLJ~;-2?G^)%E&l&vFr-RZ*}3{{A2 zdtWQg#Ph18{Fw1^e4DgCCbZUL-=v%+{We0YEBj12_hv@bZzey~$i{EB@Whq#JI8#-x^e!zQG-^eAfn^tBXAe)+ioX?o&=NU*WtbU9lxTD2TDz( zn@sv{+G43X**Q?yH6G*PeG{qcd8C#J|2PyQXj-X+8voHbu`a(9Vp^SHIvc7m_q=Oz zzhlZOYnpftwQl@~v8w+3IsMG0lY<95X)3g)^1~4Gy&r{$?Uk z3##c0frSeaO$!=P^MdmW3)^OaZ(gYk4M8UiMnZ;%h|D2pe|poA8xsaMrAREU*5J6| zw4x^UsAdn5Ie*^5iB{*Sso4R?xOmY7iS5X4myU@A49GF^aDUjG_oZTVu4%?FN!ciA zz{t_s%lk3rI3B@nd@^#XgE&d)d9-xjzzPKb`L+F1|l*wm*-Vn_TFaDs$>f+z*LiTg2{n zwK$=a4^RPnD+hZ^o_oKn52jmo*76UU)}46S52~;sq^?0*o(H3hoqL(t-6F4B7Y+`v zyW4p4{INh9R~HV%9Dg$KY2iU*g3BfK{4V1`1LxtCw98?b{jxRQQ49;*5kz?zLSY-+ zf;~LN%FiFnT`>mh!~)q1U78cn*JjQLF;|=yFg*T)!+hJ{3oIH43+kY$g9T?=sHV8# z5w+LRydt{Q1coC6cs!lG`e2^uVJHm(MEDT*JPgK01IBo|uok$|ps`1+Suh4ym-|UB zT;ag`{KuFu;6>TT^On2!gNGdWCO3?()nZ4~hS|5;Zj`e_R1rtV$_`{)4&+nWAf-df zOB{+&@Me6Fq``?U4NTe``uy-jFdQtC1fno-*N6a;PO&hUAO4MTq16exdVs5P8^m@2 zqGLYhp9W&W4jFIVXl0N8S|94%y3rxfYW!!KiykUdu3It=68!E5WhdZXcf;EdDpC)5 zmlHtXLFWRCsR4`h*CWo0!xKKwgUL@6E+9h{*Ml_#Q_(}QGpk!LVm1I!06 zP~h$RcP<#e5f4Iq|u@ zwYe9UY^Z-Y*sArU{d&dQ24yz2NB-i-qV?$Axfe9c8*+FO7l^@sXu^1YMC5frgNA(^ z!Gx4wIKS|Dx^zLv?*+g87+YX3XOMm3>?QS*Wpf;sR_^eu+)I2a`+?UHNx>hf)}vG} z%t@k;o-0V<#b3p`OZsrn)&$pk;m3ceai5Uj($#ysv2nS7e)>h_GN#qz$-^K${$s6j zjQ;tjYP>6)XPAoK6KADtT>&6}gm;b2-zGd4K}9bt&CVhCg?p93QPr)+_wo~%j(bq| zkwm2W(D-}29mWn{qyzR z<{wdsNw$d+pY!A9dMdlAh9La=O@pJnD_x%-3On!B^UT*1`RkN9{uSClrap5&*!$}~ z&y%C_ozLk~WM{m{pvsxyTzGG~(q>Tm@0-dZ{Cvg5UXC{CI63N!aD! z+Pib%Pr>VQXa6mit=T&F!-E^C3-o;XcYYVF-{IcMRF%si_W3n>YjdpJrM2+#;`03D z@Q~@+A9zok8OF1I&J;xWq~0P3SMq{6WQ?JYIh4u>lI>1rU(XUAp%uXr!Sb2=eK_Mu9LuG|(gj zaJPh+0YpNKL_%g)wmM*DclpvCFj0WX*SmfGkN!^&{IA>tcd7BX1pk>D&jS7Lsqrg{ zKsu1^f279i<^jIkrN&e0{3|uyI8#rpYC|DW@Gdpp?oa+mytwy020HhRkzDd%a?=6I zyjOWT31S(ur;o>Tb${AZ*`F1Slo)qXpV7Us4T`weMJ;Xtefl=f!jumXD<%sgBJU`3 z8m!u#OOT=!fh-;I0PZ_YnL$(y1wTaNGEYWdk17O*KOo&Zy?SUh|Ba9vjiQm*4?@PV z;iv+Dayt{HxD?jWvIu)TDo(_wxtR@{Z`D$nlO{gprnNoicn?dMPiXUp6Il(w>CH)8zf!t7IC*snYXUdj$8G+?L`ZJYo0b&62Y_C^|Y#SCYT}q#%}1HalEw_U&g7ryC2EUJC6(81D@=pX2jSRsmEp( z?G(`C;QSANXaNKOC4mY5@`vk3S4S72l$4aTw6p-o)ZNv4=g@9%!($}@v2%BBa<0}I z0D%C`&jWAgVry@2kw~QEouSs+y7tb6TCX2fNdhG2?rK}t-c<)k#zN{p-rm;2My^Z% z64n68e|cKTJM;QTbkjztNy*iEiRJJ`=+VW;+@rfX0BZo?=)!#aWU?s%uzqwd5;1kO zp>cPxJ0JWL0-&Lx0RSxHA)=7GQf$6++KWDqr=p_TJ#AS(nu0w89AI*Oj)fkbf7v~4 zI~o%`JWt*_Swx?IJ3C7|KAxlxZv|LXi2x*E5taae1O^lL6T*1+GveDmqS1Rz#Tw`5 zp~uI_hYuf$04%$XuF&VPCeNZzPirxl=#L)(duL75)YSWD<-_aer>E7<^uo8dv4CgM zMulHwQ?q4Ka=$iv#X}fhy#jo!_A)X8bRAVeieH_c)+=RX+}`$rK!Bx-P)Pt__q0PR zI}v>z14+=ZDh)b0X^gdw4Y88Gy-k&jy=&{s$;q#!HqlVor-?=!>qmc2PFgUSNC$_z zZjabK?aG+#y8HWNWB~PRG5;&Om;dd~?am(({)az=jD{&ZGDL)I%eg`S=co`lpzZ$? z6>9$V@jp}?4Smz z_!nEDV5YOD^@!z85kfXIq#Hv4w3 zkdQl-iO!xg$N2pOhqI{D)azt9nTMM`)=wfIXH&q#=y2mJEp0TGUR~OR@VnVRPGPFO z*Y*R802W#1R9G8X=jx?wS>0{u-JD!h`=!>dG=JvFQnAMFx1znT-8GE`8Uw!+3z{PCsXwvn(xtU( znA1MXtmA_XzII;$)-lK3W`;?v>sv7*YD%PS$Zq zl&83rS)Ly8dV$<8Nv}Mc)6Bp0Y>r=ph%S~f7&u9kJ&K!?$k?38TAcfvI*~pi08>#d zT+7#r94`}at4*8GGwnNjj~9sgKK1?)wdagvT(qZ!P5Hiym%lVD!v{W`_vK*A&|d{}=o zCuxCVJHH@?VyCFCrDhlLf$?fjw?bQLuXb_4=b)ir*!S?q?E}B94w6IfqaKGCzvD#y zk*2lb7l)A3KToy&&%(^VHZRS(9D1EE>=FlDcz%7^GQW{^=y|!5I}~vBzLn&~)bYse z#~X~xmq2Xv!N`k9?3MW^5O>=kDFW)Du!Me4DBCB1fI))c2aMe9ojQmhzs{vSzCyV+ zS41!roV_c<-O&__2nkWhKGd^qpr}Oi^7*|pe$U-mGl~d{>RdkZsQ>loSbzsBbG>X3 z#NAa!S`iVizHsbD2PIwuvjLHxWDI`e-lQFCP%0naBFDzfW26 zI4&j~jL)gouWt0`n>Uo5?f&0y3Nb7IIMEMo6}17~)Z_Tvu3&(E|A2nOaRP`L^hD_` zK%1I~3pe>6R7m4t+Z`(8(az^!H<*HAPioT47g8VuGXhRh%GQ8H9(Mo{e$g zo-;}xq+Yt*O5M=(L07T=Egq(u4Ez~r5p|2B5-X-uB%7N*aap3oAfNnJQ;Ezy{ zMG5p`7ANS1^@j0wIuDj=HGV#&Sou<%++RGLcX;u_j#GBkW=xepTPNS|xu!t%W&d=)A+>^s|tS<)8L7{lE!r4Bi zTY^JxCyK+4acr2kH3+YOor%;H)ZB`MpW)-#_p%8zt*{(cPp>ouO7x0&yEimGJQ-*U z(3;td&WEw2Q4e%*sGY?;>vYEkyL?!Z#(Q#OOjhT-gR`88wxIOu zPIl)`76|Q|d*#X9Gn7aCqSE6kz&aDERz_m1+K9@ds!+{1Ef9 zR?AX)ZvXP7B*Frm)DJ^51l$rM3N~yN)$)R%gd-?-TrwFw_}n z4&Vmz1OFM8--VTTIQCrt+S=M$T6%}A4%`KkwJ0wn)b-+%U63D#uM?W=#E(L)GkSNvzscG_{mE3PZ(OKGWK!e zankl|9pq%^lbU{6f3Z>N%Dl!uVQ2)!Q!`|J#cFRXn?|PQT^Kr;EbOp={8hC%0$2FL zsMS!tJy!U-*lehwW_JqlVK7sxv37s1-hFprsIl&Fu`T#MlXg@6(Q4oKr{=>=zfLws zb2YNGn;Xt{r>h(mhnpME50^TzUzlFDH2po<8Y?y*X=%PXN3RZMy=-l{xw<&nT^wm` zz4HZl+)Gd#YTG3k0cYV-5Rur{QZT79_i_lOzU^`-jdkI27`^A#ayWAs_eunNqU}l~ zcYfi@XP(-vl`jH4+^bO{leVkT;v0plG18c=)vvO6kJn-qsqNO{R5^dHebW@%Ui+@2 z{CGWHPv34m!O;5WdZLNv_Igr@Ai!FYC_*A%!79~zL*B0F7pJ^a!(VGTw*iR)*-x_) zHkm$U{We)2CcO*f>_9pjaF0}P?i}#1U);Ho@;;-v-&P2@bK><=?S7nO3gS_1v~H_MKLQ8_Eg5d`DYBS&#aSv6Vae{Gk| z9W)+=^#)N0P4`2o?w;H8EjQ%%5N(T*%)zqvuVWR-U+^%;60u%eLO}$M`3QMR<0wJ7 zhc-OMgpXVS07_t9i4Y~g6#=Zr3yu1Q)cL(f(a*`XCWOS*iftRQQ$@Rj&+IN}%-UWO1|r81O=|^q2&I6bPEI zzV88hKp4VYi3Q4Y$$}OYY+^l7AmG6>z+Lj>QMc8#W6%g;vH)Z?j-;g?^vMrhg-1oh zchPOR)#j~aFUtmWAorJ? zGWr|({;w!WkjNsiN$${Kv}OJFzVUSwrWI=nCHNxT38bi}T_!7sr~zati{MQ#@p2H- zn7Pk7{6&YI4)a6HOr&zMrLTYbj{gPSJwCLFFz=zRLRoz4pEDb?^K4_}-82ANO~!Kla*KYwf+;4_(jKHP6@eF7`E8 zyyl~cxIF9j$We1>te1aSoGUrqk3FrYvmg=qt+9Tq=fTxamrJ3s9^`*Si0%GVQFXgy zYxu3leP4ey*0K*< zK1fY4NRuw{gbXop*F^op-KA`8kAB%BRwAX@&GBXk_l-g)fE1`ns&^L=91t zPn!>#QpM1%C=}!fyED-f8Lq*w+#5$2AgDUhj%gC)aNAcSTft z+XiQTAL%OD6V__Ti8-#7^I+b^dZ|4RV&o02Iu9tCo?a%#qAOJhJN6+`c$WVh({G(J zV(jsc#l$)OIXw^VY(J*M_xIbTDmAxsd)YlzKS8SX%-HkWsMVtZ2Rqi@wjQ2Ul7{jX zXqLZGBl{nn^hfxr1rcRiN8Xp zmwY(#xLUk#_9b;MbbGkc_n~iZF0`BO8Sy>Nec3m^R!PJR)38u~EzSR$n|>^4>vQ$d z$?2BJowV#jn-4!_z6&eZjNmS=6TRQ!_UM-Xk53zLPpa!@%s&0$ZM3cPv2h0Xsu*{C zbe<-BB~H{0V>j@k?!s+>E3W0I)ITm<{hw!l{N^Z4qooewpl zPEAiESvp6(Quxd|HS=rD*ZT>**Fqv#EoIxrPMmNXOTCf$eEmMZbq`f4!gV+7kIG^s)YyzQLeF@%WCxP^qe&5_HTiCBdyjBpK$` zp~^6m@Lg*j2*wroIf~Iqrv)ZW0*#312ZU(ts%Xo>Kt` z<2<`PI%ci&wu<+4kN0t3S9>siQ&oIWQT)iqI37J={RI8+EHo$1@OUHhM59r7bHXln zquu1hNGoj&=I<$JFJgtP#~A;Xf`D-$x4@Ap*vGrMxj_aaNi4u!@*fCO-)TQnLKaaJZWiZ2rY2*OHNMi(xpowAtCPW?r^FJi^XPS zWWaGNZEfv0Z{A2qNcj2rLE@rND3DK36g_k1jERW}pU;<-l_d}e3l=Ppl9GamLZi_( zZ{BQbYO1EDW^ZpVBO?C>k-ZQ8VQ z<;wHt&-?iJz!|A~_wKD(vj#e>u*kn~;liOqhhk%6)6>%-3&F9drlux1$~ArZ^u2rc zUb%7wK7yD%d$zN)GhCj6lT(F-g|A<~Ha9n?QmIx}R&b^(Ffg#ZynM@+Eq#4`o}QkI z7cYML^y&8P+g)8+2^ZBrIFD?A*C?a3!q0y*(-_ z%E7_G(a{k?;G8*g;1C)du}V%(hGeL!stSjzw6wI~mety|YgesWm71D5ckbNM($bii z7%rE4_3Bl~sPN&#^5x5ef`WuX;m(~qTU%Qp)WMChb?esI+1c&dwF`0`gr4;6Fx~`v)MK_HkU77-nMNUgtq~lnom;w6wGwJ9cbvaB$(mg)3I9fJ9nU zRAgvq2w{82jvZUKZasML;IwJeva_@6>+9p=<2yP!Dl01?n!@cg7Z;bLq$D`eb@AfG z%*@Qj#zwe_=HcPN;c(WkU!Rqg6%Y`xWXX~fCr$(h2g6CWef#zq7#NIyTTy3$Q@pBAh?>>KlfUkE*%W)_`QJ6OVK*tq>H1=h+fvCR30?lE z8exgYkq67Y9kShLmD6Au@0MX9%tS@6rOGbQ)Gv2pFBQZ%hgA(5=EW>N<}BrCEyKuL zCBVu$GD6IF(&}iYor`ne{f!T9uIpHo>!QrUn_*c|XHrMypH@h%(!DyGa7+PN6!PPY zITj(+Xfn==r#XsIiQOYBytmriw^!NCm@Bx86IC&z zSJkr*aiZ(hhr}^DdZ!<;R6WpU_4(uYCgh+y8>9KvH+b>V9lqE$roLEAqw^+0iSqXC z?PP;CPKZcxO@NNQLBj-N>C(2*kB&=kTj(A~#-L9WSB>%!S+XN`gQdHV3*!S{7K2PT>8MrS;!)>jN5&`PH@J{P zNgHB9?QF(@SQK**ix&i{?Ff3bF^i(zuxa(= zMo2*{f7wF)BU|fU@(n6RSxssPE6p^W*~g?_aq^1F+^8as&uU*0ab_+YVL3GPXcKC+F%i(y3#=fz=E z7@bY5o1WW6b+mKhVx)^1jwq(Boc8kahh@BG%zmK`vRT}uCv1= zAiA-oJZr|yu8)h~H@T?Y_Fe2Z6Zty$>Vo8Z3vN6PG2~Kps?bj74qRM2YZ8|*S1s88 z_zR&6E`r&$zyyxY;KNuf$@g7f54spXzy#br={Rph{jQ^Ge+Nt1x_BVTRI=KvgKf6= z%`)G!$7i(P+IX{uLsY=)AahHzGEDDmdWzbkOI@NHvD8@E`O=F=gIy)&MzOwQPxH6m zB1%QsQ#ZJ}1fOQNFr_7oHgU`C9mwB91R8ZFoJ2aWR8g`;7S&v=xVO#B`p{ZW4H>N{ zwzk}^Y;xlwDTIK@s|zD6e6rg8rl_ptt$<`!kLX*~E~YukE74gd_~r2wN}-~BA;X+l zmtYgiLwJTqWzVAa+6{=-149f!eObCTM<~e`;?xa=$#Slv^hs+n%P^OTggQ3JRnbM- z#S9sLmreb{(Tz>UeHOFTocSskgKbZ4qLi?2kE#rjzY zSk=6ynKc{+y_Btfn`|kam$y%mkJ!JDSb$%N-{cE8f1}*gg7Q~A{|N2 zBxBnR<(&LjE7Xm2^eTr>&dABoZxB48yGMm-}5McRbZWl1ZGv}JuK3N?tD_PDP}8VY74zgVrZ$|Sk%5VZfy}8F)AWc%Y#$oL{56~7=he^@&xtKMoEGZb_SP$ zn49>}hiETZ`gt*ObRW53gs+q=jMe#$Y^i>(bQB*V?Ka9M8}Vxu+t3UZIwoHszt&xC z(*d>ww?OAi!+dIiM9pZN(l+#rvl0V~LGu}bi3TpgdMoyBF;Lqnr680;!W|4UblqMX1|o<7x>}SgcPK z9}I#ROrc2Wr3xR9&1c(ub@QPLN?8|0)In077%%Y>FP3A*#hH*16`agjB+*8w zV}@CA6>;c_W+2lCycpr5@+L&@m4#A;Dp6YaQ?o^f=eWO8q3(!XKDG|UsxU>zON?c- zS=6m&T-B5-tEM$6B(dgVBxODwEcaY?_t6YIX)%hK)Q4~E(jR6w{CKfi+A8_kxYWmd z#A>;I)yG(NTUC>#VxnZziv@!5DhBHgt+I;a>z%42R~3<>ek*O;Z%x6>!)rxzhq7nWP0@mM^nd*hR{2_TPN;j%^r zyV~(ZF_H3#7`xj+73rMOJiN$>xBab;Br~fCyVa3+I9@EH-$a0083}T2+RvW(UA89+ zlV^J5p;W_q?QveJZMR76O>^|LT$0_GWT8xjm4ngN4}9(bM!GwKZ;@+2v-J=wk@K+n z5yF(A+ZXoWyyi1CSP5F8&uM1@@N>3eVwTLkD>2uQtz5v4)o{!wQX?Fh5t!83g~5!j z89UANtk^!y(ek~hqgj*{e-_-|jS@B>hd9HEcrV0h*xq3_i>SHQlbT6zBnQoG2<<;YZu^I(Z0S5>{xr5^cZui7z_89*%2{TaJQ=}W^Q+k z-9!wF9$RHWy|r?QaX!9XEcZQAmW0w2NXUayvRy4jWI?hWv$StknB9)=VGw*!^M_!npOp!DagBz4wO3Y(ij>tPum* z8h}o^uo6UFgq1A9cts4#mFP@gE#;*i61SRK7PsDtXhcBFQM?Zs3BIo$y3y?w7iWyB z@1BpI9aRc2L^cJ;mX9j+oFZQ4AQ`jJBtyi3OWB*g`T9ZPlYVj@H~KaQDQ01|pz2rK zQ7Jx&z$Kb8aUEU~aucZ`3fM>;w@5^Qlp-Mtl6aY<4t6}YgS?%Cta994%t3CC+UJSM zPt4S{!)DV2#9O||LNSwOMjdY_Jr(QDW}-C&k2(UbAr8qI#WOg_%62&%O4z_$qk&={ zA%skkNoj=aw|2SB1?%zml91Ar0HIW+kg!fflF!4(G7+v=ZnZeU_>9htE5*u$iRp2#h| z%7^ET9>cPvdhL%6tZ`}JA%3HziWVsnSK?kJDw&5_bhS{WR7(3Lsw~C^@#j)Fn_CZU zer}ZgeND(wcZ=?Bo+S@`B!>%Rg12+e$H+YtN`6)J3JJDT@-% zCq8(YkQPl)J&dlo3ipUG9*gqu!Q^-@Id)8jo1EygDQ9D=(wum7bI+-YFQ+Inr?;=w zjPi;l)}G#zyei6zO7kk3sj_y~)h$+QiT4KqaVhb6X&$u+xUqy2#;Asy6~Z}tAoA>) zo^1RWIjT&8fjKqjA#$Z6CCvGhlrd6CLC%(1-bz2GaP=I$Rq4heG{U&piX$b-qBq!} zZl#v*N(-8eQ9}+{QY_g=Mp}(gVgiq%B&jMw3`((iqs6+HEJ-I4Bx=JvNjn@=42U6y3l=}5agYI92pf?SZ~VR!Rs zckkh2xTLbg3zyDZpa?Jx45_GmiJ7b-goo^JlD>ODN}59nK`@V464@y6Zaw@f!H-A& zDI)Zb&W#n3FEFIyh;cteO6&5F5-rr}aOhKnV8A?L&n3mQd?7BlM#-5^IqIcBUZ_T|^$!(veRlr5>(c)5N}N^nV;%I<=e?VB zqy2U3UZ_r!VG^i3!s+n38Q<%eYW3!G>n%L$XGhgr9j&(+S>)h_JQUxcDdFvEF?azo zTW0vDQMFCmqGAqp zt7kdO44S#&Yq6Fnelxo<+!1q(fp8g7r`Bc@^RXMFH03zN9u6h3R6n`8c~;{7TbK4L zU?kW((3vb^)_1r`&|-y>q(sN@9oS$Iep%hpM`0M7Qi?%o)0Vc@8v_{Pr#5nvf(&YS z_#jP?aS^xdR;A1CE4_pxVouF>w@Ds0rd{e54XJ-XBah^+-9MLlf7S@XDn*h}-7qnh%Gif6NqdEaG6t=U zhj}|X-Kjjh;a+%LZ}1)Fu}miEk>kUe)lrw6sOsS~`Pki9FR4qG?7}(dYP`w_$y6)9&8p zW4*1{d)uD$-ucnnuKuKR()LN$`X>)|Kj}X9r04pR-X~A`emoJY_dT=i8(7~rxVvxo zSl_GbeIrl$-onK$^{4M`pN_A8`f2ymiS;$)%%|Uf^kIa^56PIHP#gCQ#kq8IH}*YSKlTf>E!`&@MC`P|9pER6wsy8%bffdzX8oO1^j)eN}w4Y*DY za5P>lw|lYD^Tp~tFWhrqtgU(B(f7i0@b(A#d%*K^Qs&tO3A;HH|vpgy>ZHOQMG z`%QglgUo`^J_V`JA)EX~lRNjw72g}O(wfQF7>>3ZUe!M9invu4?5xAPwuJNYR?pIy# z!JaqWxo>)E-t_jp>6?5b)_D8O?(Kl*+rd3=hjZV)s)1`>&<1=vs`2i<-Mewmcc1pW zo5+3lwdURTJ~-w74tY96VUFTAj1u?my0~wYmOol{XOz-EdO>Q8tTk5RI!5#wJGXBP zpFeiy&KS0TtWfGbL-UpPQnlB5$48~i-skRlUw-Gk!7BCR1UKGl#UKR06`r@boleH zUk61U@dGg%ehg0a%$bP3K2q_sA~+cF_eZ?Fk-$J?#R`N-M7C@}=FdkwJP@$E?d=he zvAJA?Ooo59-;yQB+_}h(9SDPgfJ|;=ge+Y6%YXOuM5a$i)YK5LyJycvl$1b+uaJ>J zK!4x35t%jXm%{z?=k=dIf4Sv9e`ff>uGh~`SOJ^l$2Rca@!x;^`z!DlUjbN-lkjw_ zQiKnWT4-BvIbQYz2`MX!QNEx)MT#uT8x~=s<8XS8h%jBuN|GR1tQ^jR zNP|#EX2vE=zP&=i08F^^SelWypq4Ly{V=8!o}Ib}#eecT_l$roWlk*xgtD zj`D{hbXv8#?9mNZ+}-s@SCpktG`%!qSzZ@!C$86` zZ(iE{czpl<^vb;xxzA&y<+%4{`B&2)tlHLoETJ#tcST6cqjpJCCTD}5JAbK=?dyQW z=zcn!z|emnzvuDBQOphmE|09}u|0HLFquB&9@(ik@GN;`dRBXcnawOsf0Jc?sH4;9 z#`LB7lra7l45OP9_k6wlKp^Buey&NL8sTQ zh+1_%PzFC!SUAK!usZA1!8Q7!FSe3GzNi*X`b{Z9uU5zH(H2g#pONwT)s81#hYBt{ zoz=B@MQ%=I$9X%%;Ro0Q-2NjR@3a(B?=VVhNs7R>?;+u#+~{B{MUnC_^)-xWi8 zTh(s+?AXR58@8#R=$Kw%Qq>bT<7M|X<~6mM`QMBb!e8zQ|$Z(^mA zmC?E2_o|CFF&-)$Xm~dVe?{q~{Bse(`|XksJ6l+-A#zxg+kAQ5X54(Ix=|PDt@MVL zmEMCjidRSDngw@m>t~s&RJ6x4+n`TvsIUB7R$0eQi#wGZM&xS}VM8%f^nJw5wY zlTW9WOkc`<+?PC?aOHl9$sFabz=Wky zaUZXJ2$Yob>7B5h)hdE-sUAd?y?N-HA&`qvWi-(Cd;a>ri86z#_~EkCa$AbOb?p#y#?h| zVhp9sHm9)qrhD`2b^DZpj~wxqf2epxwTXpz7n@3Ebyv-*7z<#xV@+!!7<2C&CIzVZ zDvJ((4w)}xg9sLg-D zhvEP(_VFoq#E@8f;HIIe(JkxMdT`)-?KEF)T7I+d$i?G7gY>1E#ds4&DU!;FR*B%_ zl&V}wXLJAS+F3W^XPcVF5M+!;SL=f_J9X~&`yt{=~?`|-+bgUy4=J0H*QTL0Qp z`datRJ)xxsevAYxz1DX7{HKa*Ki+8i&*>d<{aktL`rC-RySm?<|6KFU_Epr+Yhu!c z5QNt|nk@DGmQ2QuI25i-&il~6@#{qEx;-z_4V(wR6;IsSHTglm<@=!Z(#R7tJ>M5e z{}^7ncjx_-zWe&yc0Y5v@qFJsjq%w|-{1ImM)sQaeO{k%{pK#|@6V{76BVYmkJP=t z58kxvs&}jTa9a9HyVJZ=U3VwPR!q*@HL`i{o2N^^z6pQ2Da%;>OUZ&OBTKjJzH`lP z==H<7U!SY(DLAnAbHjxjldp4s{`mIv&5zG}u@O5kR(#?_SZ6q&5)dv?#g|IlL73pn zc8AJX2^0f%O2RQQ_b`PjfkxGK^$CHt^L8z(X#J`P<%now!%(BD=ot~)^(Lat$suM| zF|)~g`@&;vvcjfU#n?HA%$kU?p~u<>#5lUgnn%Ps4@WPmiZ$+zbq$E-(BrhN;#Lj| zR!79CWW}uw5P&5lI}yhn=7S|fagX;4;0I*IW5E&{-n(@o{;N_#2z^hedqPimLWJ|~ zomB~U9wzJwh~m=|MV5)NiMuA_BNC4vPE3x7OzloQ_!*wFh_tmz(lJarG!dSam9)Du z>1bAX?nKgex1@pyLB4x3FFd)3%rC4;mM%&@-yKmxPw}@(xl|Ni5s|VbE9ELVp}IR| z`$S5a0!t{_mJVC)N|eY-jX9myZ6`J+>g8r z#aatp+=RrWP;$1A9+65@PL=v1+%d6V_DckHP5Qj>bb90-nJek{PN!=mZD%NFTyaX* zJrk}InKAQlhH*=b`lF1*fcgxkb-0Q3foBsLvtK5fXCK(&c3^H~h~1Y16IBNu4W&Kx z&m3~jw3kRDCmvX8xc`k?+H#}44<}OBS?=ewqz_hRrW9p*TnYF5ve(%<)u)C3!u`-K z`k@UiX`8YS3^;|czl1Kx-v5~#>wYG3#5pzG`XHnG(B|yJu3rx44Ihq{I2^ksYoT&h z;=%(7SF+^0v-TP75h`bIw9L+26B-jFug$10&NH+9&n_P8FI-rh$*#qJf zxLhE6f!G8R7|2XuBY`>wh8dVxpm2eV1#%DgSYT6uItF4Hm|I{Yfer-*7`SEN`ha=` zP7-KdAc27x1YQ@2L?DWRxC7n~7*t@4ff@x$7T7}IY=M*pni{BPAUQ$41x*TMDKN1> z)XaMwVL1FH$#CNSGT(gMp0Brq_XK(qo02?R0_#h^t5HWCP4AS8i$1rinbOdwQ& znFJyiC}^OIfyD*77>G(>R)Nk1J{HJWpv{3`2Z|NgX<#pb)CKkuI8Pvufn^2e6Zmsr zwt;mA3KTebptymZ1|k|LU*JN43_7~~%fB2{W z$@KdDg+>_`A6{r&{ree;t!>WbzDW9SeV5J?Er;pre!bAB@0?|2+Ji^)vjsDWGX3T( z3q0GVG|_k#V}PMSA~LNXExdfT@u)Q^q?7O0!k!&$k$Bc!BASMgptuGj_8AOw?MbrQ zv!uHx6eCtuqwE5%Nd?x}xpYy4{_0|!R#>87K@wa4G|lB=qhW!CtTsNtby_=a8rjHq zSzxKZi%`N&d*zurE;q{@YeSn`esbR+v|L`hMovIiS$z|m?^w@}-e?79_#*1#h!+D$ zGbR{(`xt>D-Zz5FOY*G2Do>6LW8imH@3nhRN8YRxW1RHfkBGh7WeND2*kg&!2s>18 zZ`DJVW}BMu$qu}AEm37-YR5{+EgYSC?W4s^+|E}Utz>s4%HWAc`uI*qNkXt#f?~w0 z$2k7@L1OVAurUG>DZ~J!%CzyLan|I*7-g)8)kt1156@|=Rme8aPI?{-TRWyWeY> zwtB<~rMe;7Hwh7;FSS!8JqpMq-%g}a+qP{C&nAV+)Sc2=`8*ZLb}2)03-t^A6G(KQ zc*z-Du8=-iRH$WdF>dr#??iXtXOVhVA-Yh{$;4MH{-omK_A_g2%Ls(#(0lRhctb80 zo#WE=?C@4+nfVgCe9QPMXAARLigN>qX`!12WaHWO6u*&cSgjN}?d1(9-jrCw3thVBb6L_2aJNzt^5WpAA1p~bm^mEX=J?iI?cV_Whu3CJ>wXnb{3EA@a5 zzL43#4iB!au2-a*61-)2=V7b>xqvO~)BZ)7@P2o}NUYzuj` z*ir4fX#Bp*XG6|?xBX0^lzYM(HrpWf&Bu;H{VlRRL6x>>0&e8xr(V5_maN`29VM2N zojaZ$``pKW`l#|LldyFnBSy}%vp@CR;i_jUEdz1OS+ll&DNA@#Vm)B+Vp<~6KOjV? zrxMU^?{HgBwn5D?b9n>h@Xg#WgE=>S+f^52vKkE6%7=>J$(i6=SE*}cQq`o2%<9Y~ z#9X#)**d#9Z(`R4Hkz6`VpG}qQNhjn2Xvt#l(U}MPRubvua8?V)BM8PJa?wE2Ab&A zF4@!2jx&=^Hx&`Ao9m?84Umr|`*)k3S^sfSs3fLY#LrS;%eWxXr^YWt{dk1IXhpD^ zYGZkO<|N82=f|u`EoLM)$4aWTBW&x2y-LmSBA(&34Dk{JvP=xc8;x5^cckX06(MSd zWk;!#`-u+2^|Zid$Ak$HHIMF~aCW7TsP78qrGR^L^yg8H;)I zwTSst8w*{D{cw6eqaE+yQiqqCz|ub#p?d9g#Q72RD~Sr^6{B9%!`{xS@F|_iT!f70 zBMKAF3u76A4Uen#vBy~#CFVL3W~DgjIRy%FRr$y~ZY^818c{NL#JZ`f8W}17Y5iOZ z4b?%!{r8Ct%j19l@$av||ASwFznIujba=`#nNIRjw}Y1U>V$=L_Rk1MxU5_cP4oVLD{_v=tf<%M5|Qm7g(|JNF-d;hx)RdZcF zLQs!juqoQj;%LH*LU9b19grV`SkUwBRirM7VCWo4}lH_u$ z3KERY4r`~$-$^V;GH$KP->-h2KCsWauj;^l0`X6`n*_)OBnHF$?OPIjKl-CC0to_w z0|W#>RtN=<9Uv({c7P}WoDbmw@&cp)$N~@+AU;4|07{2|03ZS>1EK^(0|*+B2%xY5 z@c|$c(gdUiz*@j>h!w!wkToEQOtC#g1_%g1o)BArjUfv_00H=i1Oc=^6(S%w0O~`C z0L};6hwK344A==64-5~?3D6Gp5{ME2@Q^7Wl>oX!pnzBbnPRHr0rU>s4#W-s4^agI z1)wq{3kVdz!w@I{(IHbnj+hE5kRX84fz=^QL12Lp0Z{@n3&aPA5`RPn$UzX4fYJfi zfzKf?K;{Bm|8-sJ^=n86P_%&50Qm@F0z?=H2oMt>BLJL3Mu4OMa1JSHDl9{NVq;?=tU-=|5CPc%5)I^tsfq>ENFYZ*?1Cr(MGmNlO!Y$`;6SK>GzX0!XkSd_ zi>YJ*NeB8H(D#6d0bP!%hync*$Yqc+AYwq!fRq8@0#XKaJRn~{y$2!+Z$K)!&K z0aX(S7mzX_Yd~EGQU-)Ih-{E4rh*294oF6jH6U?7K7xn=;Rx~?qztHh{7SyZpP+?h79e`LhI&5I z3ydbQRV!x0 z@heBo7HnOics6Txh$9k5nFVhn=nI2TM}qV!B!()?GUMdTeO1dQZ!;GWA`3itY|{a= z{`$!HVullTvb0=Ot0+z1^x8|yza?eO*p57(Xm%7GWh-0K7i-{g*{Cyvo##c6l(outz~vOa zkHOf`yUHV}mM@vNJ^b${C`_Y!rLtLb(`%8N@`jfXa)7u(lT2x7kctT9CK~Y#z1t_X z3_aKymKTbcw^eUl5?2t{r1F(d{)2tOFw=Ygv+> zw#`r}xyyd&h=0fV=cUwxI1D~3NGLrMZBKU8Zh!mjoi%MGM!IGLuYL4J0s|%9xF_X! zqRh$k$9R|9wjUq6{V)9Z)EoZp$7gZEhTXa)UfPpimSC3Ml*n=q;Yb@C6|)?oLy<(8 zV}{EX$)3o2_j75Wdo(_il{{U30OL7PryQLw882oi+c)#|XN)E?OZnI(6UT`gmgCe6 zang4qx>@%9akeY5GzITwOuS!S)t1pXBTTgJdlpGbSj&iRZlGKhr(R}rUEa>M5+WdJ zX>TgTW}>X=i4h{It`;_kk?FA75Ft0z5-d?|xwPi_$tGSnllDe6+Iv!PHv>nBSnp62 zFyCZTSqd+cto)!9s}fPiSjTEG=o%%ceBlw9iFK;aot+aBwPd%_V-%xSp~PwiwwUom zevP4!t@u8J5{XRD6k`J?(iw`01k?8%8pongVofQVmXn9I<7;7+N3r_;XHeylI^sg- z`fa_0ILlrynH2$v65fnBb!Hw7Cq@(lT3lk=`hy0C)7e?2S8#KEC67+CpII3wB;^T^ zxmI=TEGJ~vi~+P}g@$GJpA(4yd4ViN7{87G|1kSu%)@Ah*$<-~#{bmphao++G@P38 zFri`g|3L#V?_o&?qZ-C1jDMK%FyLVj!i3^NjjF${j#8v+vmWB`T0;GbIX!FYhV3-cZ(Jl-*$2BuH|UPyl8>41PcsnEf#F zf#Ie`K9p-=+o3rzi~kq_(w^B(X8X8+XGpBnkF`Gt88 z!yZs=Z-DIlUegm z2{cWy&f(t%3*Yh;!rR>16}; z?8DL<<7jR94uM!%l^%Cxcb@Olx}9(j~iE0VyVCRWXE zXV`L!3zsW6=M&Scb%{#V<9UvmzJ|tfzM>Q1hloDhfWczcLLExpeASg9_Aw7xD8Y@d zRgcQh#~W3BXd!7qb0}Rt@yElgIAn(s76D<4mdl!PrKAY76UQ!XB*y@ zH0?rb&rNDsa7c#O#@bhCy-0?vO~_Z~=ipYU@Xg(-RWJ(i_ZcE$fZ70CAIp;)Oh_Pe zOD^*VSnax&9~I`m^UIgE)O*@qlunflE@Ohz5eEWpy@RodMx(Z za!O{c)P!R1yGvw);?X*q<;Z9~>SQw3Anz75)<}1wEp*88jcS*g9?D-xC#~;flfJE5 z(2NQum=yFZJ~;U%E}M;)WaX7NXL#lOn%nJ>KNT6ZNarlL>cTN++7o#*F(%oCP7MnJTVx13@>!Lfgvtq z+M|laGOhb~Zg7cCw|lpljA|Puu@_jc@lcX4ZF)-K7}PnB0Nsi>aS0UNf9=$Vt8D6>G7y0V#p zq0&do;s_{@Jrh~ntL=dL;Z1~;8HL_X+Tp{8qVcZ1rFv5LRKQ4?;A!zyAgUXoN4~pFem8VgxJ%CInCf zXoM{iz!(4|uojRWKnSdm04V|LV50 zkaCJJ0Skd7VFLwZ2=F$Alt6~CU;<_Xumt`DHiI1pP$lr^)FKIZ5;jM`P5^blNU$~n zgoBTJrx+4o65wr$B!Nh$NOEeA0~?$vm;{mpMg@eMVpJeWfFEGCskIb98ZhbF;6`9bfHB}k*v@33e&P z7ztZ8;9mG}8h8?*7e1K=j0CC#j0EnTS{1?02v$W9AAlHvA*Y}bK9Ghz5pXZi;}kan zq60Sq00a60H^PQ!3LOD=fg7iA7ZCk_YB%(sew+9cF_PtsJ^p@WaZJolrqA5;`=`#y zY75H?7w*H&$ep^f$n=3vomY4-I*8x&>i30_esyFz%QgSk4!iY|5vKr`su8y6@>$qn zUzCldu+Bb!D~rkMb22u&o$&poP|q%TbaBPwU&p@B->Kxi`L)9~T~xq3+4ONSAXGhG zT1TVEip6e>(>Yu%kypgMkTKIA-hMOVH|E*yRV=wOzCm!v?1-nN%-FMz6SfJ86FHaP zBpFK#I_|n=S@-CYYKo$UTKT)@a*;YtGv;1;-cx&`-qTfGOOS~@=r(UsC1U8^y_1vM zHthQ`5;0h49j>o_#CH6{^;?@0mj3Mj_O%ad7tXJ4NBZ(mtlQWhdo*o5Mn86^2RSoXH@tP#udbc7mX;+g->j;3=yjtn`**oF>v4s z5Cz|F=9?*(IJI)7e6Mz8MG=RrV{Q@KBBOverz!@zc#L-}Tr87>b(wQJWm47BJ)`z1 zr6*lNp(rX3NXt$Ylliz$8 zh~C~|%tsBOggu85M#^71QF>|?a*5@AZ~2A|^5Qt^C|5$AnW*e76KfLS5G0$V+Ci+c z7}0C@rMC63Gz|IVMI6(e0kMPvnSEq>p|m8oR@##zBV)6eJh{5cp74qx;)t}#lEVUa z4kCds!cs1-$Y;3^*C}-p(A6kLW}g=--J6dm7&fUJJ`?DFXCW&`YiW4%gc&QnB$BHH z3=K0>KA->>VS-1SO36qbA{)$!R~qfc$c~KBR$p37rEqYnYK0QHh9U!IK|E7loI&8$ zvCKONE*b&`Hvp$k6;e&m2I`4wU5RIhov#MfB1Bd#+olYMYsczbiq$izWTKQz_Tg!a zL~Lx{Vq63x1Sepbc}2FZ{s)D6ww=48!TBUjX_tQ7(e4KJol${wK%Q2Tdo&}FMbW*a zEpbLX7}+g~r7&vcJthqkvCT{gIhqcU)=_7k%8BL_BPtI#wL~6c>8nB(wYkWC=2=5@ zrLa~ySJ70#Gd=z2X( zIhheX?Pwjt!`)Feo+**rxYAp#TOe5|>MHH?BiivC^fJtdNQ{5gL55aQqv?BYqNN3%q$_4)dHiTQ=V*c+1LwW#1dcn(kO&gZXJ>K~ti<^; zI|Hno@v@}}Gnir$L4;^8c&%!~?@(PdvsrD%6@G#|=D=q0o8b6BzPVvPqt!yRS}B^a zzLRz3oW!4wRd0ZEgT;u}Zx}TNQ2*(W`S(x$`z!Fj`zt`chu{#pb7@{JG|~QqQFNBL z0pvZvsAWF$Q`8-PVbp+VKV!+SW7T@CnbQHIjK=g_a;&xwUW#0C`tEVP$WQo1mxkx( zJER$}&uQ0(W7SG~@EkM1sFl-KH@1cawwA1~HzrK0FyWN@-P`JTPFT`YDMw(1QY*JQ zU_#V8FW*wq>Z{(3+y0&EUfN$3D?M$WGyUDOn>5uq@h*?@23ihI+t76MOWDAkV?VKC zTF-XR&XWpC3y$@KZf-B$pt*1QW9FNl-D7`_ON`$drxU*~*dY`^qJh`~`2`>xk`a84 z4j~271n@unKMe^5*1QlmU~vliEPNOYJpA^~x$Nq`b9dhMRcAxgf<|g}-%t3tJ8$7f zZ-2d?^s}!I{w@4+cJNm!VjR}3h)nYSooWv-3tHNV2Q%U9`YBoULlV_P=e3|1=GHteQ^P%u)YRphd2Nl0YsJRzPH)c)pz=S8Ocyvy;J>*($C$2_V3%NnA2BX{aEN%-Pd=g z?+$Fgq3;ScS4f5MXUI(u-_D(@zH{d-6mubuKvMhP{oCMw{r@_MOGYkqt9I;fjnisq zoYqOHT3ErSVX^foTIAI{dNe5^4!11xZ;ewUiNRqQoN zzco&G|6}7ca?IhM8mHM)jnfYD@_*4d4f&Ui(|Lc@IF@aB#)E9N`K zs10|>Szg{;akFB=`{ueO>%R=-QJ||tH+lI zKeY>wP5ca>uZu{g-$xsMPG8rmTz-Y^?)7B$V+kM4lB*BTeI}oeOr5UT^=Q;j?|tNu zp6b(&J=zx@N)#t4DtAwx6nc#hmM!dFJVTKDiR90{Vt(Q6oW>n*W^V6&yyLXm4M{Pd z?2?C7Y8DY~Mg?eU9^SyYma=v4Grgt7b;YctUtW{Z(sb3ylyML#VPWIXEjYm`$ zp4zobaG>07s5ZZFLFjt3g`^t}!d;JC%_eQC^I!E@TsTZCG_gD*>hvW$Mvn-0aA?xs z#0wmcy6E}g3#m`(&iub_oNhTv4c+>wKI*<%%ISKalF=PPe0&-5*Nsyxqnk=Sul60j zRH*T=a^ae>j{TnUg_s3XZzKIDjnmHZ4C{K|lF&yjZ$B<~34i?@;~?R@yhofh+lv2} zjngGTlkbm+X$Ch&hzK5=m(r;A!tC&xm>myTnE#@2`tgx#u*!HInILB^k%Zh=kdFm^}lz1*+kr&*F`ISGrp3RFH8 z{oXiLyj(Ej*HQYMLvd2bF#<2ZTxU@Se#C;z-NJXjx#&T8&d1_^YMi=NL?1jGaeJEQ zo7pbeeg{vzD;&nw^?)Hzi%I-@<8P2>lnB)ifFMiz9^B<1VpXVhk_UNlyeW`iLR)d8pt_k+zr>KU-IL~i< zBW5jSqoKVFL-geB&VM{gzvRNshqwAZU42;Hv+8`*(7Bm4v%}9(Mvc)#&iZLVpQ%ex z2e}MkESWwbBDdau%p(wnGYMQn(u6bm{kMa}#k%#7Pz=Ipcg z|D3(&>_6{v%|e`I;FT}A@_hGu-P2c}vOgHStaAD|n@1HwWDR5{c| zXf6rTGoc3yy_(mn&wC9$6aBo0~S+ zkQvuslhiQuT+wgw>T)+ypZN=w^u-}(i%Yb$dqam6e_FiemX(N1fV$wp;&norYS#P^ zbR(rI_|h&>nYK9VFf|WHSk&eu`b`;XFO5(voO9P~nKs?ydp!PfZGpzMBdUj*Z&BIn zisFBswn|^RUF2z2y#3nDu9hWYX+T|>)1ztYTT6Ev18U28uaWnCUb@$Yu!3a%+W^W&|N+g7l?cQw9K%V;%uP@IvKQGv-j0Xm{ zld#N8$ly-u`$GE+UF3=8PV1m?+q3Q^hMPRnlWM;GJVqq%g5C56rw#iu zH)Wq@@}IHih#$G-@G*>&*;J>k;qd|K|DNLMLvvqOs#-aB~H(FoZ3R=7dCr+8Cb*45~ z`i#WWKE!HloY{TF`_3iW#{*s)Upf8casL+W6GOwsH(slcKl+(A-}GtYT=+WIr`*3R z6svD~pS;fHx#};A>7JWD6mC5-z5SP^==x2c8faUcU!VHr^BKj{*nndv5l7;a7nNFj z`QEsOTZA+41+d(6`j-*71D z{84`40me?@TK%Wk7NRS?L&}|_t5af}l%tPo25u9;T8svNk&2*jWW#-*jsX>hW z0j$)3$&^zsttr_~6r7FIMLzEyPVcZ}3c<&VQ!7^V#Tg!-*v}5J0!^`XIk6&(v02zS zajl)AT5*yxu~MmVOgrOb@5l9b#3>5W;=54sDmL*x&heU&N3@#amHXm1*_{1JFd%_hOvC&Abx!L%ts_kM!KbiActqPAAzj>!03K8fp76Kw_K?d~TkEGF8g#yMyu zN!lbGmWgvtOjVDd?=SPz?If={w{B*nKWnel#dz>)K0!IS~blo00V zFrSpfl$0o+@R<84)(a^Vncz6BRCepsBtddYYUbly>!AT7{2)m0)_8Mtbd{U%gLyOLBU%k6-Kk^h@*U?TfyhS{bFgGkSe|`%^P= z8#0C#eXcKNr1NLqO!c{KlbPt1IZ8|QeUO^)$R=TIF*AlgYa-Hn(k9E(D{D&7Z&oJp z^+5d0VwM5_#rMpoKG|s-@@FwkV)Ko| zFHtY?WpgdL@YrUTdu9uy`3sLFts0CKTFTBfO0yWph|8WXT%<^)Q73qg$}OFgnaNo< zc=4%(x2mk0@{Fs-*m13rTildLS`ul#_w_~cvpte|pmpfWGH zk~VW3#o~)-SBW}RW$muQwW#7-sNky&(h59Dp5{0+9@|@^FL>ZA;8GZi8zvo~1 z2LH<)z@`5<`jmi)XJ-Io|_fOJ1 z9Qp$2?HvDfz5bWq)XE>O?7)BM4&d%UqzWNYe!Epcc}hZ|(X2;}t8)xP(HM)?{^~V) zkr-WHk^7vE-RC5>t0&;B@&=Pxq;f(`E)`r$6gx5I@4cBPG;$-Z``f(ofBYx!0E`Dw2#)yeBH}_5l#~$tV8%738OH9^?qFtS z74rp4Dw+K2g@Z=q521<3`emQhd|6FzToSan|0nOx%J;Ui1HZEaIJe*HZ_nwWM`Ehs z?H~~%F#}d4Bm{+_$fvxQFoR0;W}Z=%f{rxAZ7iYq)JwCJO&kRnp#=M@S-S4xb@xxn z4CGrFa-FfM{gy2LjWgH&m{)N@5fLR+;jgb=%Ndg2`65?7y|M%U$vg17@&0P@9^`wx zUsT~+yng_E5Js4Rn*6KhWtZdq@MbS;-KiN?pG%NSBL#~-G)X8L&V_h?xpnRI)qKlb z)4embvi-&2gGfA5C)ZaFZ}#?1*BvES!<#)u`}$X74Q_??ABDh>o_(t2@uREBhxe79 zVPH|T;Uyy%(4#`Dh8mT-OCmW=#Ms@gets2KzU_LWkMfHf$t}mvNeEW71wJ&|#(a5?_c`r~Eq(-7Oqi%{X` zJwo0pSTwGWlWZIh#;+Gx6~e>5R?Lj|u<>xHfXmd=aAKJBM1(|=^F*X{LD58%eErl! zv{JA1vlz9z&d<(iz9@QjUgy))vkN4w%p}Et@5p4Vv1IXNoVoh+WW1%3%=3gDyN*0h zv_4$?Jju>;`g!udBHq8fif%}EnJsU8Q8HW6`e|mivK?#o!lqLt#HyO*P{>g|AqCg$ zn(N0Kt!f!M3>3Cr58!#d`*u*Fb;FY|zw+AgxIM?~y0iRVHKEH(k2m-K_$>QlDiCse za6%f+QT;_Q5Kgy1C=bGb5W9nfAjIzAa)S&VWb1w`t$>6doH6>bx?;S8`fGbd{o(47 zIeL2qBnrP5Sd7g5LhrDk!XN+g%Q$=m;~jG&)xXS*z(*t1RB8u&Zmxs6{1GGpA@m2? zKnNScry&nmP3?fJA|w_e^jA%-hR`8|4Iv%~NkhmULN*X`h|6Kas<+r9!q5qJr?ZLl_W(giwJ2@kVIAfK($r1_;?k$P7ZC#oTzuNXH1|5Ie@_ z#^**L&j?XOddUTZBCAK>a~%*BgxDkGAEEXF0*26h0inqMKq=g0=(iqJ03^M7N)TPHP>__Kz2Nr$X0B;+4N>y+J`*pAA2aK%{VPb(#Ad%97%nNOn7hc zfB$ptCR_#g@ydK+`)VwjWEjt}0>kC*P{@tt<5`J!JIShwLv-Lg^{E zaQL>9f4_$Uod3I-%&fh`c9uCldZ`;Rcz3NlB>k+(j#6gdQ-K;+?_c-*bcxCaJrriP zH}pK2L${Q>toE_aI_`1NxsImG;5%nMu&V=S;~`~ehmM0Jdl`QJ_jItt}3^czFEFK%d3QhRZLV5^c) zX#QMwPpZPU%gd?2L()!7-%^3QKR;JqP6eKKqNUy%dZFIpbKEuHQpQVjC)J*&>)zKd zWyPO*x$*Pj4YH@%MTRX?dcsS@;7zqT{Ci&-s6r}m)1};=qk*P-mTo3u;~78s#d2B` zZ&H({^18kpDNL}{%X;CVw`~=q0#Dtx-}KSYah2GvHQjeBuAi1a@aT}OT=zXf&H9Sd zTaK!~A5+jJ>+{Q&hl;0kppUtA*$18@xcnr2r%SQE-plJ%Jw_K~xg;TZ5=N{)o5k9V zP;l?qvFEidkJ#UTC}`Mn0_~Zuplhsw#93k$L?&_1X)`SY5+`=v`#i4EGH)9+9uh2} z%ls6Jw1*Ps3ft3lN3%3KH7eGHmWDoM4_~-KV|a5XFx+HR=w;(zVvGpo?Vd?4DWBb2 zHf0}h@_Vky5#M)f;(hpL{|Q5q9(&LxkL;}pFX}87%M-JHF4*k+(s^2IC{WQOhx_Z) zD~Lz3U7m^7{yN(exM8%<;*)eT^iUKgj^4Wdss6^H*T*lkJiLXTZ+h_c4Rf*f<9S7| zwx7SgJu?FPY42m}bzW#xI$t|Q`#JE_ zaw^biITd(H9a4ce4lkzy4|+l>@W!F#RN&4xs!WRQpIN5Hi6TWP7Ni|TxZT6pc7?=k zK}?<~UAxfL*Y-jC4bRKnPZm7f16kkD9KIIRk{IPuE-x(R`@Pc0|9o;})BLrwv2VlA zewl07xwy*V>zg(E7l)jpm!>Pj1m^ZJts^n=6a5i{L5*^DT{}aU(-~C1-}q+#wuUpG z_yd`g8I+Z>=xj6YgO&Tx{6d1wN^WFgMNclM6xC0-<{%!tENvqo;z%&Y{81 z5m}>r5fQ;T(h(t3eCJXkE~K1|bq>Z%`9pKFxO3#&mr5{#qkI>l zhnWyn0`_eoU!inVKvAfiWv~)~vE11|&p3RCQjlT9nGS)l&Z3YE>!{YzbL>x}jd1>L z$)V2fXWJS=?(&CojK(k+W0joG%on2V=g55CC@$xK7ZGO~1sU}Y%yfs-uvDPI{W?1HhkrDAz(tO+);0!N$#n_@LiFQ)>xGR28AZ(U9W-VcOS zVC9bGRN&#MI3;G9ld@L4W>=h=PrUPic+IBxE!pupi}ARp@ubCgJ*@<7n*<}Dc;nOr z)use<=6H+61O>swZK-iPY!W4X60K$8Y?~5S-%s4v6l*V-B%qb#XcBwaCy6sP$>l!f z==~)8Vv?I6<)l{fSLX0by`S(}a5)wDf$!q`;$x5s?Do94VB_=o zNa9zYI7kIjAr*)}0;#|lNCl4huq-9A4aPz$Fa%P8cxOlj20$us$()0tD%6}^twvbS zoO66Lfq8SzF(+@IfP%a<6vSBX`&^?ZLbdjXxhzFAu%Dz`2tSG!qt<4i8A zV4l53?jkzRC`wgQHpiqnZ*x?xMOv=q(rJSY`9Im_tDEMz6z1yF6l3$DyGxYX9p`@ z52nAxSH4?H|Jk(iqin`}ROO;=#^=GxuTdGl;HywA84PAsjI$X`(N)aCnJibU*vv9H zqCF>ts-0yKKEG;#^lG7&YLN%kqM!dV6(}G~4;%2nJ6QQZBn{z4H~es)6lNeWiU9L4 zy~Knrk^y1Nk1iRI$AC)){4sEJ68teBkNIwnp&MerSqRQQaK?Zh2Bz1boB?MH7-c~8 z0#X^6u|T#7Y%y@q5KdvjaZI``2Fx*V#E>q1`RJ zAe8}^3am=B?D>}a3z9K z29$(!sSLP$z|jI~84%uplo(8Ybkz-b6Tx;vw-SO{25dKUZz4!#z$gRfI6*K2NanTE@F_%fJo-MMF#vg z;2@-1WWXN-o?%ePfR6_hGT^_VTVy~U0~$rTO9qB)Ad&%j3=G!j>Os0pkuH*f*%v5e z=!GW#dqbDspEUn^yJx`?q2KNSk<9X>dHDpiJsCmk)PI{ar)z=?J@VE;1X1?EuQIJI z8i7f($`>t4@y$Y*G-v)QlKJg+&p#0>de%o-W0qy!RP+35imL15p{7eOZ&3B4MYlB9 zPT$(Se*+`c_w;N*`R?4TE!xjr1J}8$Ub|-N`F5;5_`=Y&&kZh*`u8sJU2pXHQq&&i@DskLHF%IPpQ|Nuk~-<%-y?saUJKzub&rwo_%uT z$`yzrVWr2(7{32OkxWyLxgMY3HcKPPCM$CT*=Y$wbM?i^1a?E2wTaf^j?WWqJY|NH z?0h5FrW}Y`lt?|4mO7c_k~Sb=d8EFnz}$E+^-%ojvFSruzMcb47kAK@rxJqLOB}Pq zzKLXx8n$=9>>l_~hirCFv>$9GAlNGocCY_WQpuWX5GNwaJzO(_ar zdOitFoG#0^@Rh63INmH**@SL+R@qswxS_#xi^iINv?02rV2{mG{35!ebX}6EBChb!(G?6ZQr^$zkHf~dj(;VpKHhP zAD!#?o9aQQvUj~AUa#Ku5yRzGPL=Vvg$iQWP8y@+Pmu^B{#Ej)P%=5lKOV>H_os$R?tYO_PAE}gdN2* zB46eAwyhu4rLJH57Q@=je>+^p-;ro^tAEeVa~SD|%KFTVkt7*^1fyy|7Gt&C!?9sF zP+6XhmlL=84NfC0r;^jGUD!2m-j4~+c zGJA%fNDP542lZHNm9)6Zo-)(8LJ&rUer;AG1i#vNf{6=tg}{}^CN+oR--fjF?8`@u z5rfy&+iwhNB(pRdcQHD25P03jW1RBZ5q~0X6(*KDBBGswN8{VcR=4<=w)I> zl`7z&mJe9AD?_Dg%c(<^J%=PjY5ROAuR- z6;m)#9Jjt5!8A`11`9mv%Fi6L?zG2n*=4g~v%A+ktO_%)I$q<_g0Mv)q2qXddD*Ez zk#1t7J$oK1h14OB9eXf^^{l$bb`|XzixJg))`S`9QlM3Z8?+gB^%orMt%_qF7D?F`p1Vyc#B5mehi2QBFV@()c9{C2N*{OI3PJ-IC$X%U;>N- zD1|tPayCLKotPW zcNriU3jqXy-rz15H~{JDKcF|jN}xADHy}3PLNHW={SWSM0U81x0k;7R0crps0#?$i zBY+Ws;Q$SRgy_8yKyQF?VE+Sdqmv>aBRBwof#@|AKyQF}X82J`~} zN3W5fcSr!Yfd&w`jSg)9k-%zTkcOL!z`MX|K*PXlaX94K#p2Y@h@L zP@_wv!3PKcM8`E?O~5t4P2fwq0}zM}e1PAr(V)Br(c)j*|LCj+lm^m2P@T}de?Xky zi4C+N-_?J>mjG};mT*(^yE2+?{{vk6u_b~ojs|X{+y4OCfZpiP2E+z%4A2JRXfOf( z?{V8-|IL4w6rl_IlRX-SHX423;@aT90H_^{R<^6gfd7UQZ+l8<+D|M3Cg^pd6-{p-a zbAxBJH*-8}`xH&If0*R{IGF+3-_8uky{hWwbA46aFIoDkW=Q?d zNp7EkDatZN*K&0r5Ah8SQym!IIK@Y4C;8;bRjl*P@}ZjL~UM<@sDnr3W6 z)(2ozIWc|Euhc&KhHQY58bX^hnE1OJu}eBCpIXb%Ruzcg9mzom`=}fRtD3BI1c(2^ z*&%KrkkF&Det`>ZAX3B?p{DUgSP9|EBa#@|SU&`UYK~Zo7_d01-85BwtwuvES%@F= zSe?h)IV0>3Q22SRm3qV!)eM+9*}rr|@f;YAsUJIfE1Q+!L|^7+VP)%^9aF~LWHn~W zL-$Tht{1rvyB}vht;#Y^WMY%!F+fShW+;I~@VU~@d=eBQw*8_d<k$nWS z5lN5Bh=jz>b@49TBby*W=n?JyM{)Hqbky)-gOeTOBA}3&g zJ*PwxqEIx1Hyw+Lo$2B>a0}Zn5W;ZExdZW4W{PqnVfPZq_#6@xy|O*dVFh+`mA zx1imKUJL^yt!$s`N1N!a>X&%YqC5z98*QSUONY$7MWmZW6y9oxPQ>8s-=bQ@8CXTC z!nW%^J|`GR8L7o2x+Cf1P6gFN=EEVDp8x~#JDNWj{4XG7!CoC+@=Y# z#Ee@Aj@&^E?hnJ&TE;|@+tEsGyo@E;#$o~?C<#jj_9$XY#22-q`k)SG7fQ6I0ERFU zp~oULY+i^?%&kWU3mPDdRswnWP?A1D?5^pyZ{4kegJK z#0gpUpoc~eSkX*&FQ{UfNt)0R*abiYQzl>~pdpxX0Y(8O z!3z;k61{B$@Cv{OmZT^C50BQiTfb8gcV*msgl+n57JJfuiK>>5ojmz}u z98AyX6CRKp!x#-<2Uv_wIsiC8HvnS5H88THGY*}_V4ena11e}BLBK%zR1LTcs0Ugy zV8#d&DqtTNtifywzz2p@^w|`UCh!`Jr|7UoryjcJ7^sKdm_aZ409XTf1onXm8@-Je zzzx6$kPX0%-jD^uE5IN6oDB#FMp$4$21fplLcnnVn1Gh_;T24=0EGbGz=90yMz7AG z(-6$u{u)^RU7z{;pyc*fpkx&shWY`NxNalJZ=iHL??%>dpp>?0zvLPE$cwGh!$yztkE%R?-t5S*k(SQTt< zBXcMN@>~~g&*fNz+1%S~nlVU_ai?#}MskJZHp=<>idwsJ26mVAB!;hlJjAvb3W`FvAFj!G=Ia zv3HBK525e)pSrF+&)R+ig}Ii`BxtXsFDxhUVKc*(FYQ>GDBCJ-My%se2Q1f`{h1%{ zS|iT_@7bRfi^K(561CXGAI9j3ZXmmnCwbgZACi5QD4kN;8J3oe!4FY-I9?^SkbVy; z8O{Axd>iVntv(WlQB-=)Lfwzfh&S=D{?y(;d(!}_%xRpYpFiXMjbX1Gi@g7Yg% zH^4d7;XD=2@YmX4S!#3@BlY;%#zR#J_LS}YL`IsCv%aBqQMu%Yc8ov~3UkptQlOv8 zh!xab#|owofjkVJLS|1Qgeyd5Gf9xq@~kx|VL~=iQH3&8S3!!z5Kt(Gaq9R1^PF*8P2wJ{FT#TZRQnx{5 zSwlFEk2~_hY7nXtgRZsPAUdVfOpl15JlzOu6UfM}stAQcGG=0|dFbx(wRjx( zo9E&XVWmf;9d71mGK70EJ$ipC0cMC|41X7Dr?=*3vRLxo{<*<37hNwQ)pg2)U;H-(YoXh%n&d?)(> zV?EJH=~%U@TbXCa$gA~~8JItG5G%=8=1FpNBrcn=fgGs*mFI_ZyLPAsqzEziZ2$w$ z>Tnl;m(BW2RC5V4a+P zu0inObIo_4#BNKfma|VJiwHma#r#JBY^enM?X<%ax~%f7eg$%H#ffcL10D!(6 z3Nfyp(2e9)aLJ2Me%5<|S=$$5a+2B~yH+>LAa&cai%08n%;GzVEpY<;ovn+OIi!m^ z8on5z9nY`l5F*7-`*)jc8VG-%-L_zOQG=a&}h*zAb>!&+?UZ4dz;wAq(lX zZO!o~C)Z!CFS}EJ^69>|Jq_c#FQ0jhwZM71jkTU(5#}orI7a%DVjv221@S_pSFYNB z@6XK2qyM{i05|l*RZA}q2ttd3VgL+UVQBGv%NUH`A4{quk|m%IVVG zp?j}HZJhRab+_tpPtKNKU+?+Yi1%EP=F{bmd(!8p_gy}7j>ae=FlFBvdP3AFL-U10 z@44NZ!bF-TpAKrzqZ^}bl=ofFJcP!s8as6)D{rfILD`tf?A_JdyWadN;`x@1`|*4r z3<_ad_ZNo)|MOY{Rw@Jj-51jz@$muZ|9Gtd)PJlsfbq^MQ%KwFX%Io%4bJ5v>7%|2eGzhyUVy;7V)2N^8JB)*9gVH(LYz{@K<5L`Eqa z@Awb520W5IdXL2d_s_KkxIt?GB~&>N#b&+I8t`jtK*~yM!2j9Sfc^i?)_{ipnAQN? zKiL}KKyM9jTWJmWzug+Zmm@CZB4L|T7nZ~0lOtPlM1CwM=~Ir9?HScHii&M+b674m zHHD)%7n^3-@gld5DGyo$7ESUDUGmU?8Yn#D zlJf*pL<>yI2{k>d;ahYfsVHj3F)|W$Zmhs21Vs@lK50ryuq{p+bh(gLoIY3_pH`f< zRJ=y0B*(NQz@?-xsw60?IA^A~%%!O1=aN#PQpJ*z1ea3k-C{~wY4hNbOkcv~rP79| zVrJ#CZrdX%k!1ryN74t%uFW{#*ibSeTmA%7ekaN~E3*9l*qKLzelbhsio6vQgWD!; zE8@Z`YP~9Ee2+nEz^kQ-ah}Te8;*bUh4X>FAJQt{^j79IKx=?Iy){64dlfca6_;M6 zajA+mJ(j~Ylhf6QUAvm#T%EAHTEOhI@MrJ;c5470-kHiXft#4=S2r>Ie&zn=AMx$_ z%GdP2zXQ1Sbge2;7lp>6NsVqq{U9`_shYRtQ&I$@st^zE9hHm-a0j*a$By@3kYpf= z9Er96;qJi#ih}SVyZ&_d;D7&XUU`I-9r)wz04{}o_kh@epjc&hM7TZe3_)WwJyHmy zu1NeETMUu&pzb+Q{V1N%>SxB0INd0Nl$(>raqF1s{RQ16x1=b;!P^14;_>^z+aHf> z)P3`;I+Pdv>|l|!x1-l_`t(|x3b7kWJw=`hJ@w8{;?6MNecc`HDI*%At#ZQl@?oE) zLoA~|UaWK_|B6lgkN4BF@)i9{cVO8jjzLJ4kkCUj@v#z+107J7V`{fxDF!cu0xCM* zoCm(!#DNz-qgoL>!u@L|ZY2%(Fa5__d9Xju4&ZbUMjS$_0$zkyIaUf>FJWx_dLFpg z?CvP6oP~eUh&cH?xAx)Mso30sAkLo(M5YPPO_LS2Zeu0<5Hd}Hkm)f*;7{1N5*GX8 z{3EY?CI7k|z*QiOh=6g`Z#7WMQ85f74x(bqz7~{mM#^%?ltber#-wI)bL<)jolFy! zLnpfI0+eA;sA#TZ$64MweEp&z!<>%ucJbj{o=|p$DX!w}5vIxP4~yQtxK+xSYr5W+ zw{&-iZSwiarMjcm#hm3yhQ55SchtF_tv_w1{^nK{%k0?35+3q!tJ{3dm)U#e_Lpqf zR-ZTXemBv3eqQhVQ7@H4m;S7ph8`_ClcG}*jr!9Ej ze87hl?R4DyjOU{RNja5I*57vBo|V=xQbERRmn8`Zmhj~KL`o{NZs{!H_l(EeOxLfz zf8VnHOo8m0q!sOS^TloMPd0glM9jbW{I;EG-IuxUUljHX3f8P>r&qMoE86K5?evOv zdPO_EqMcsRPXGTxJ8kPL9F??cFpvY`7h1~Rp-u=l&Uv?)5EPa(=fp+r&v~Z7ZH>*H zkXq-eoTE1A_?|1rBRThGL$1zP^rk33l2G2(z+C+(2lWy@j-Z{UNr85HW`CG((U-)cDA~O+V?~bG;zXI^#`&TIQ|lz(;{A!m zX=6Jx#)?-lmt@J5l+73CnOYV2mgE$azNAYUX2=uilM=Zce0g-)whh6crK+K{yJ8< zxKw$-s2nF&RqaqY7F8u=Qgyty$}y*k#kGogwrbY45>5GC?X+x5jeHAJ^&RGFHNhVS znmBYaBLC|tx|KM|AL;G+%GdHQ-2vSB<$)%SMC=I0am(5@Dv^*d!Wu;$lGV6=q=4!M z`ELWw<-XA$1k`Y9Ug_7W!*2rWU+;sz@$ilv?+rGHMjOw>7LVjITrh3Jt)DO|vdG;e zQF8jo&amyAyS8jtFK1A5F!7|q?8j&KYWF@EJjb$Y+OGV_ld;4mW#XR>y5i7jNDQ*} z*Ma4~bW>IyY-I=jI6HuwfzTHLy0qz+X#es(2e|vKCO{-3LENe?%LiQzf>2n855~)m zcxHXR9g)joi@$Y={ufb|zjnlLD(~NB-xGZF0owa&tb$#WyUf_$mU{|&uaLhECZ>2j zf6^p7Eh`%H;q{YF^1NQwRLb+o!C(%lz5cu39_nS+n*I1tL+MsyKF5QdY|UaWce6Mz zB$Wu(AML`eS1o(A>%;5oran)2*}sUncU`c$v8hz}>;i9gafdBAl0RIWnsreu%5dGohdmH=S=@8zlvY7?WFT zO%ml?|2s*wzrOrSz-#kbHg2fVgTtFEK3uKN^>jJ(`P;0X)7pFe$D zppOLqxt^XL_&q^k306&5n>TN!8$!W5X<=ajc1ZASf(IKMnxGQ}k*JN04T!!$01n1% zuvLN!5}H?FffEx1pkU#K<@nn=bm$PMJi+e`dI4xj0n;T&&cQ(m!c8z{f+7?2m(ZaC zf=iHWgUS;$o#6BY18G7+0<^7wKNM`6ps)lRCdf3wuMSFc(13!{6g-%)K=}^hPLPCG zRaMp0)PU9#w4q?S1m`BWO+keT(#)=|F3@*ErwjN@L4|qk+XBls$Wp-%52j0SiGu7B zY?z~?qfiM0zEN0UFNFpg@QOZp@&p{?AQOO&VW<`cAto$viNgZRD(FpNfx;b(pWr-& z1^vq4(}V>sPLQjD>k}4;Q^B4IN>*^Nf|C?PqM$tmX*?|OF#O)4(Z14XUud)i8toa4 z)=Hz1X|ydgnkJ1#q|rEOG(3%lq0!JZ8tU7B;R7_>hh)U5#h2Q5=%cv>?WXWi?cr$A zEkVZB4u*!?nbhF&!yhvzEu{|tP$Z!7k@y;9p z+^#0C9vv;+s|}S;u8GPTccjKx$eet6AOd@}pt zL$!D|`DS!+XfRnCzbMABXq2R+ za^;5ZsM&SGr9b3p*!kVJ&^u{GKBigMZ8#mL1jIjG9~Ikh$Ovb!pC;oNxOwK5%_TjA zpygr5bx(Hd#&^SKKQ^Hl40I7(vK`Nz!@|d}>~ww_D!|V7&`reTlZD)N^LG)N?IQ0( zl-{;Z1d$|)-dm{HQYV8&`iX0X_8wri)E8=#KRA3YO2oZWvgyP7M2)t|&PY7Eo!TRR zL*Rp%W~>CK-ht=1gTpFqMX?P0wUZ~!?W|sGiy-L>pwBB~??{JpI16!|S3anR<6P5S z^z(JKYRA~87s*&zXJcWm&7I5pOk$6D76>eGsfJ@4v!bmyDo*b;wcmy?Zn&#vLD(~Zju)44sSUAZyA z#Li11&Dbu6JUEc+-hEig;8@7d*QJ7&t6zBeWc8%F610b8oqQTixlH6$*i|B}m$oQB z=j!5#5nm(^s$GtG8dR*6(_Gjz@bIH-T5-9NtKDcybc|-przO`abWi(nmfmKgk(#&i z2al@_8!5A>SE+Rb)m=JJs?acA|LXnKc4jX;&ZhQ2_`0_`cZ*IA89Edzo~#||6|VJ= z-9|8+4GKXJ76~_Lz0Hq$cj2z$t;*l#iPsI=MvTi6t!96|LxH#V-8l_%UyIr?FJ zk8ot0yWL6aJoN|1yS8w0MM&K2eNStGb)&6IANwz4X*M$Cn+3zI@by*mZkDZw%&Vk~MIVtjWrdzikqvmUUV zz?_@w(IC9j-Rd07M|1Nw7IL&=+ukoG&^v|UAaq2ZRGSD+S};=hFdVX7;vnB)T$h;R zfpgm&0~ux0g}?S1_p&rS6?A@O$VcF0kwh_T`+O5dK}slWY@O*mJyTz?y7`yof*TG5Pr`^b4)vPP)2v96k4?D@yt zXp*LYfzIH~3l#~uB1eMdg`~++wVlKx&e9_6IU~yTxATJ{Q4*f+G4ncW`TCF^9?^-B zG!G9(S0zI`_IJ0ER1))fb-U$j-220a#@Wio?erM}Q?r(8i<@;bCNNx4UjD&=G}Gp` zV-dxjJmubBWeknqu~+Oe;C47P#Va&|8%o`Inn+++HBMa>xMOF9aJIfDX3iRgODqbv zM{nj3!{^(Qbe;#|&O9arOHrgYB|M+v$`ZfhW%)7J=L}8W?9v?1WuIr99+t!U$Y*w~ z$#C`^w?>3#xWh%|3)no2_3_T1dD2dHW1RYru@sO*m8H3xmrOeKeOWG-peWEtv!>3m=y z5X3)*3+3L1glOw92x7Iu)M`D-O`+=AHEIqb9ZEP=H{~$FMk>CN5=PVYFpgXsK_ZG(8Dy$3JZ@!n^t`|v zw7SMUMtvg#M`r8W<3?^lyhVD*5H2`JfOk(DR-n>yp+}>(j)}`{hkc12PpRE=wLWG8 z(%Yio^?Q}s5A4XUs5m{HD<=nM923P`+4`hx=c2q=8SocUTynk;_)T#bE_bbXB+vGo z@)u>r2{I$c22Os>583x3g}PK92jU6TiB%(Wo%-S^nT@StiWiM{@Q~k~w;n>o9gkht z$LDKY-gubHeNjILW8|beYsB?@CJcFey5f@BSV?J8DWkc4h{VG{;i1Ov{AVg`L4sws z-U^5o&5mOoyq|F!wP)`=AnXQX^UA%UxDzyv5eC}_LiZe1_*H$s&f2qtjP{BSTzV`P zNsKAIe8)!^1OD&fr=xg4<0v1 z>Ipw2v7mM^a2_M*pA}M|=oU@9LTk3jlCo{?Z&2@W@itVk3=A#IJm=E+*~4yTZrhG4 z>UC(21%10!?;l0onQXZJQCrEq{x$0Js?M;*>L(ps(zt6(S{gm~UwFShx+ia{OjDTO zxavbG3;EI3x9PWK-0R;tY}9w;M+CXVOvi3LCXh&ShPLDg6A1^b;<4F1p-$VPCif!T zl@U+g4q7RhJ8-!S&pwD=hjjk(ajwq7-!6()7u&aa-%Dlwfgu}oY({*ocqWIh`@}?K zY+lRbqU2S#^DDyd?U%-cPjySw3QtTkWZWS;pva%1f#Gk^Vni6ii5lNrs$37>+0iX*Ty zO{z5$*(r0nj31)62?*@4_TP!KN$j!8ks!F$21n!>J3DfoB^$|eGCT7aBz#~+XX7j> zERR!c$MbN{E!iU5{fCPD2=7e&4luSNn@`LIR$$C_6E56YVC|v?M3ap^N+DTutewM* z;wXkBMDR(q5pH~VcL|m+QUs?2BP(gbULtGsZI)9W zG5wn1)w_4Dxw}K;jz#Bf+Sa=g=6tc}W(kvzd0S>B2y#kjRVt;p4qedB)=$F9QO}b? zck;$EEKbIEdZ78pTi-uTAf+;_w~v&_Hk*_{ZiOTYS6g(3Sj_NPjMgT`OISRvHJ?a` z=IAi*{9v{uVSfDsK?2#@rIsw6n#?PPwj^L}-5h-dQ-ZWop!+t=CnX{^1-frz?x&nz zOrZ#-s*9aDzIz*Ked;S|f;km$deg#75|8chdfv?}p2)JpijzdbHxcn}@3$pS??@FS z#}y~92s*8imYT|^nf~e1S;@M%M_RjY-$RF5y1KthM=PVfsrb=$=0gZ3g2d7_uDX?E zUATs@OG&a-oFGYIQsm;lmzueuBeP*TbN&#Ov&cpM5aW`2no5V&?m3>#$c}?z_}1xk z`8g{Y!mfTd##M>_@*gqRnKN$|GqoVBMM{DUwyFI6=bve1;aqlA-;YzM+b{lczx0Sz zV!J%+pw)IuR-r+wRZHxvXBf=w(cCYsB-$})WC;%nIm#Z>XrHN1bXZrCAfK9fTO&7| z7abWS&1aRqercOHS(>AUDPkgQ6>pxt3(9aQ`yACP`>vHZ71Ky$zvPxrxr3Fe!ZgjX z*HbXG6EDstnH2C^73@p1vax4*p~8C5w18QlINVb4E`fhYiS;rOEBd_PibC6Wm95H?M3`I0S;MO^Y_jWpl~~^rSbdb_I$d(F zrIfxbDOEE)W4$x*GxZcx6s}1va znNnG!t5~8+;|D7Q8MBP1&)Sw0@v-n`QW=*9D@6>^N7dLakQvuoGF6aSv&QXW@!Ro! zv`iC0`>CZWoLqH~WU**+y6`(^Nqfcv!%TzrnJxru1rt*(l`U%=eycBIkFws*$@$Dm zm%udniN%fJtR9^oW_pR)Hr->i?qhR4-#gaKIfCvu{+R$yDc|JT==lPY#i~$~;RV*S z_NB_gmy#o^ZOyDA($c+Mt2NCyzkDF53W_QnvLG>Y_IEpr^d#AuGz836AdMA1+D!?2 znv(pQQqr5!TADH*G-Z8mq6#-s{`Ubf+PAR#?fk`D_cfl2A)&X+?Ro zn7?ZaV@Zo9XL=cn<(1D(wO2V6(=PExC%m<7Rq@@1;OeJso4fa0z-fyX?_o=fHsva_H+b!JmxTRtIb55PmU$-Rduzso8#;>9wt>J;+WtmrXucJFOu6DG#c8uNc;Qi7e7T7*!)5#{+#qqEc z5ov8{xk8A!BB;})Y~JCh(H7Xyt;Jex)Ow!xb0b>@nPA>Y@^3L7s#6r{h-=CH;@7EO z*12P--PEp!QK!RN=WN$@Jra{jyL+{F zX{J}~VYj<^pNDnt2KnB~)V{+y#dlizHht+keW^3Se;_4eAgy&EB?xiMB@M11!6X5It5Ib@txEK>zl zA)mzQ)}DTGoc9uGs3Q`8(;h$h4);WfC3@7V<$iiOVkA*^x#f$m8xcQ45DE$8Y-`8O zD|2sh!})Xb544&?*Wgu4<~?LgR254r^|}qo`p~eI)39vLu+@vmtkpHyJLP+x9zAPA z#1D+)KOOR~R$`AM#BCd@Nh0F=zOcWGF}{4us*`EA{2ktVUu?~)L|ZAe>_=a^NB4BF zlv|0pG4~VL$h$b5sqi|7-#Tp3vj_YCXuGelCi}Kc^mlq8KoVN$2~9xIfQS@J=tb0^ zB1OP}fHXB&v4`FZC!uBYk-c)r z6n+YSjw@?zPtzGCwzFkZNB1u)8?h_1avjC`vC+-}n6nO)LtOC!CA1%Naf)O|3%6;s z{l56nCe|dOPAHpCg~1419-GoI%Oh@3Zw)y+qJ7ho^#oTcq0|Wpru;s({@wLw+x+)G zPT7r363KK(jwspTi@9>OoLbA6C-Nvv23MwEL|nsN+Q6n1PhyFNg1()2Q>Ul%%LZR( zJyq+)W{Bk42jkIWXnzU$)+E`Vt6(C;`3;wxXLEjt2~Cr-`F!G&Ntte4ww48l)e|95 zu|@OBA|~s6N~$O)JPRf%*Vze5X1TYRSr(oy`Cloo=e@}MN znB`ifU)#B@b-^UDoUbu!X-Y0f#H=7}{-jL%AVDHr@5O(emx0R_P$WE}f>Fy}A^G7T zsb7~KEF|5LkR!>2Dz@CKx(RxTPbpKWoJ4ct6D~3-C6WPFCou+f6U`)C)Oq{SToMMPa@LAjv8IgyD{l|MO3wjEBBavUDxh?>gb(V z(fiv^-xG~V*V%G$QjC%q*CLdy6<|*keW)M!@Ko;OA~oDmkzA7?C-6A_tcY@&H}o;^ z{bCW`p8Dx?wrHi0cv&Ko#XEQBC+Q`hoTaDmaF&YQH2E~`h(sWpGx`b5$DQC)Bmx3q zK7AW+mi&N8-o`_RNJyXm2$fez*6A(Q_#X?{a<^ih0*( zxnw&YDQh9(fDYP4)mbMR_Eb;sX6QwRa$>eZVRChhn2_&`PGK7hKg&Ls{z<$_ z#2q7^O{1gl@Voh^KMDEsCP}wM6lBccs&oySqUBh~9kWlC)m)y)@EmtcS27LkDfE2q zoUOUcc0op7R` zA+pCc6qd|;ni$!cyV4dNa=TpzIkmbX0N&|V-|&7UGt*xuzBpu%$);AQmHryYPO4qp zyLqf7rD3*{e%BE^@|r~|E_oqwkY9l{bELWG zP5ouP!_LepVMk775B6uAnV3O~kLgQ@EFGX0c!(>mxOD7uQB;wy%h6Wbs>pLz&nR7x z;jCtaIkTvdv;(_T%}y_sh02U^)7WnD`TBw^%1yMj|JvyKnre#qnPb8H&BsGM-pmGH z|DC6&a6`AK=Su^#8nK}5PWE+NRg-8~S+ZF#<_^I+*DhH>N!YNnL+39GqMOE*_Tfct z9jL_`{HKggF4co7D&0O|^`?5AwkJWuL3GAqh2F6n3imyB-u>3!5y>!2a~Sq~MRO<< zI3d0#cr0V)+M?>sn=w^B_v#?TW!;x zu8o&>uM;eK=C(+uOHRBy(cZs4IoIaX4&%UtMHhli4dvRFY)bu}lmbVCc*dDp#qqbn$8;}9)9zB;Us2q(-Fq7C%5B7X_o?Qx*~j+o>5qS=I2#$M z^JGWteJ_<%hwx^F*s!*UQzw&cB2S;HZi}ov-)9qbw)s_C)cL>gw$b%h3@$}C+;X~m1bl7i{fTJ}CWNGU02dTnDq^pdy zG37$Zt~mO$SSJ=^yi4WRJmUouUB*vo*^VYG9RmqE%tANAg2*%Pdp}-Yh4{^yV$AJZx^op<{1%9O;k-^u3MNe$t{@rnNKdArINS4w?FC=_Vt2{dh}pTly-|VR+Gf2wzJFV&+#hc; zqgGh*qEl%s*2QSj+DBsek=no~{ia?U5&KAq`PAMZ1zX>1czxqgXU ze^}#DJ2F(g!SJN4X_V(XzZ25$jg5=bw}xhHtgtYkq>T322F5USKj#}7Un+{a8165g z!AEq*>F%tu4S2iZe%t-tZF`z71$^vFse5uZ6-PlCCmvL3r?2GDj^naGR?&|U}E@ZpmKdgvi`-HQO(WPYOl(jc<;$nurk zr1Tx085ezGS$uAir#DD#o*-a+qlq*)VeR>n^uCE&IQZ`WNW2ch5b5`zL zWH2uzJk)t-@!j??%jP1>C7#$(6Ols#-`u3g;Bc3Rb!@o3!+9MBJK>HGr2^QkhO<5#vZ1;F=Vs^(z?mK{{xItZ z6$Ln3!%`+(=i%}W;N%T$2RO>Z=s9!};CSun=?TM`P)mRj z0XU#Ty#Y@7(1n1TJ9Gx%P!1=4s4GC>0S@SJvWGQL=p?`nI1ENY9RjZ5&?tb-PPnSW z@F(;cpi2N-n{cCtM#163hvB{tg#nl&g+)(T423QPoZz7X0mTDY3_Wz{5bTn}_$ag> z;D!z-dzcP|x&_?vp~C?63AnSv;5hUFpbG(`=TJF-5&{frLd)Xz?b|Ru3OnXdMSxxb z^Z{V46M6;ELx8n(nB;^#PPpbns{uAdp_2e-eHhw=1_hk{VL=lv`>>Y@YoJg7fSN&4 zQWBIOpgaIw3+Qh^lL5*J&|!dEe}8{Jta!r0J4|>&`(kcg9eNQ^J%G{$6a!$k6S^7j zxjeK8U_Tui3oywEU5mLHPT1g_TNsUsih}CJ+y*LCEMPqpiV#pyfL4R4si{~jhH3=V z9$?WEN+5G1oiM5nr4bkt9UB{iJy9r%K-UAB5^LA4g_Tg41%*ve=taP8JM=D~^8hsx z=!VQKn?nZ!HcFvQQCeCGgQLfe9fKOio;`b@JCT~23Plm9WI%ZX$`b#SXa1*sELJDo z7hCD}Lh`St3+8HsSB}m#eM4Lg?ob+0PPtCaYaPk2Gj1G;d`@Z+klVyrBK;Y!v@| zF!!Cy)|~m+VY^J6K;^WMQxvLmaJLkLHbLyXX?jb%eQay`iaDhex~z_yh=6QPj!WGb z@-fHoS(>5T#iw@6J^G};y+0)m4gs<`k7YLR(?`h>cQo-5sKcWKJdHdm@b;Oui(?h* z4L;Rb$BYZiu)gS1p4L@W^DI)&3$a7 zT%(XyvJ5}@ymYtw$X)daLw2I(tV-QpFx$#b82hg5>=P#ixoe*n;$=>&R9Ns#_Fi$m zeeX~}FSn;*PQTeIlT$$n2q;;bY34*ci~`1nFoLK%=f4r-lVU$GZuR7SZvnfLkyx&cT4OOF>28< zuIiK|ld5R6@tO12%`4hJ54Zhv4=tBnmlnq$S~Vmh&W{C%721h)otVOGa9kwOfc4I+ zs@Onc;32-V1sb8_W|h`#Torb0J>f**vryW_iK-$sN5leiNCYjhmur>Hu$(|DDpEtb zeF4U6pgVPbdZA(3TA6KaUWt$9@hghc4|7rRlsr3C9MSQIH${Z%=eiRAU#q?LUup3?@>6lPfRIgFkXN=#T<1x+S~ z*kBOYlg#WBkqC&e)Z?$i+Y|LiNiVrH+;^vaV)}aj_nN2{U~gBoMjpn z;kJpsC^y$bmmEV{$;&s&=$@%!U%#>{#Gv7T+Dx_86}N#M#a~J%JWko%zdEp|4F<|X z0%aca1ks`@;@;V@0ghix#wCQgK%L>aWIaz{hP@S6mU+rvrCgTY1Fwp)67*e#X<6-d z7%r8ABhzu$1Y)^lqN6ExM}qsoF5IuyL@hKciN31Z+?Pk9zib&SE>FPCOHELw&=Z{) z0__7n-A<9rBu?p;3N#I?Yr)32CYH-IGJ1?XsL9IVr!WC;I*C|m{JFs(M!(x?4^?Zo z@OzDAraY9kg+NY+p@-|6#w_<6ti9qPCh19QoYh@OsP$r*fFjJfaDhFsCa=oh*MZzI zNn9^&#I{BIYTt7AMM9WpnGvk|^aiT^`c6#bwA04-BPZlydFRnTIh+2DObHI*NXX3D z_Z)jpvQ;LJin`f}U5mnT!gXnTsZyT`w^acfEKda6;R(A&(-QnebeF<7`T`#9PPsC2 z=3A6XvIu1--Ea}%*~@(7W0e>oGGZP_{WcSkjb&kabxqZdzFS>SESGI_?Xug!B`%l= zlF6<47?G3ys6xQwlr_+Zw`XM56<@XKA}t>n5A zc}vkm`-$X(q~HMbmLKQeP4?pG9*HbuTxLL;z%w6Ajx~C&i00TUE@!TCOK#|Xe*=-% zl4ck%rOXjQ5)Pe18Bi|h#k{KBgR%9Qml=fbip6MNBO{|^l?xVS2D7=h(o=%g+i89( z6xi*tLurbFy%`ZxoNLmgTAPZqj%QIFWk%J`ICD%Xoppw%erW4!vzC~-|o zm&(9ovhBoC3`v1eh&l-iX( z{ndj6Yeu4vuTPiR#QxY;g)#h|>7^5kwD9Y~gQ@0HZ@X{=uh~=asN{9q{m$hFvbG@j zTaz3cpEXoszpm_U_LVD)+eDSgcwClLy1-yoj8SSAO)tFPwJdguyaE2Q@R&^0S#CyI zY7v4q89|f71!QzMQ*kt;)Q$3dc92m10PD!$?0*?P^$uY~UH04>>hYq{HTXe-yJV$*kUTz4hOHAn;Y?{@qlZP> zLJ_8H(%ME5OGAiPa|kE_?gI~dk|Xm=499Q$Y9v8Zne;G7CV+L|z9KTlL1}(Y7(?q( zbyyxFK|wU~lEMU88hQyA<;JHhH$*t$W*fux0$Rd$ZIN{o#LL=YD@3G4T$J`8b_Efk zut^))7!nhe7%S5p8aul^)?Y;$?Ls9e1x1~k)c+>bC>7xB3~}?MD6%B&h%hxO3|%h5 zSRxF$peW9u(MdXrg5a?dxNo2&MEnWYO|d-ECN6FZkD#%KYDZltDt_yAHCM+vSI;-sU|+6bQLb@ouE~Sk1wV7y zs^P3y6x4~{MWd5oi)XP>rh!F2rJ!~PDwt1l+6tr4%ioS*k1 z#LHaZZxG>JYZCoQ%d|PEbS7yY59Kd#3k)J; zQe`4WNkN{N>rC=S9#^F(e_aB;qz2(iQI9wQHhGw{VhnjyFSERGw=m6!<1A3Mazru| zL=-rT?`9UDIQZKLvQ2`4f_)O7!V!^(?66xtMaH_yn@FzvM&**(qz)-IaEPcjii+Vb z2zy!V_nA?Dn)=QV*}>6JkrJ14$P!7SHMVrUF8;BVY&IT>rvL9l`%2%*fz*=Kk5p1>Tspb&ab3jf9W$L5WmLS=5iWi}fNa?cFP#Y!Ec9(m%b@f-g%JYIyuAxVQ&Ln$j3T zxf}eda6D6mL7n0mpISVH$>L&9jiOgRtdz;Ardwyf#+T3TCRYa9oO0e@v(ZmsF&{4@ zB@A-WH<-wlYt$AIsh*9GCPkY}>c;oy(?|VGi);M-&g_b$29XtFwvac`32%LA+N1ac zx5BGKrzyE<2|o!RaX|~zs;hrhrTEpP{-Vb;lkzTjDaWAp2#OSVa`jTL731lJB)m#~ z(B(5V(#V?Xx3wdF^!xOMYD~mMLReHDzagU5&nNS}Y6UCj4BPDV@yK(*SCda)IQPCy zu^Dy#@EIr6D7H$36iSK2psXL)6a%L)s|Do4Tgbl6)Q!iYB85jQ5ae?W5ubDPw~qvW zUCDhC_uLs7>7%X};_@AkFH(ADc>*?0c;xhKJ!eSiqa_t5*e;VJ=z4DZ(QYX=C}+W= zhULE-IO>h|wvCP(8=Vg{x|TG$UuyJt)VTV0BUim?t!>l#jZGU4H2IV?`CV%I@hfFk zkGeN5)xSh>#o9#uQ|Omg7u|D?uV*V`YcIOeRJY4CJF}D*~>j`l{o23b(<)CSW6pbbg;}iUi_vV zVWcLwroMhh^AV&K_orQY*ukhzKRcaX?{oI+0a_0O*?H+N%Fthb%Sg#AX~aq?*|Yvz z>`_LBRLN5)T(_0@Myh0%gK)Q7t?X25@6>qQsWsEtNk_h5yJUBIs(PWC-$_xN_0CF5 zB()LWJfusO@|KzO1jKdQQKSx(p0sz;$}sqy ziIiR0g*Myz+jlE#W$(|6qHoR(elxv1jlSTeeIfpRVF&xdO_mWTT__=?#FZNLzSG~1 zAR%7)eyy*jw%e(_bBmdU(@u-oO*fR*iy{$`W%P5)Ehg5h-gh=1>&u?$7iwJ1&1}~T zkKaY?Gj~m}OieIe*}K{h!|hk5?qr4Ra*9*t!2GPB?IXZyWB`rEe;XLI$&;~N7rHwN4P@~@9DSVX~eDzB=j zKzCM*sdujuCeyyKu;#?Q2xiMwxd6MWvME(@-1YA3N?t_l>o{HiAv8QARVI=Rm7s>D zs0Dod&CcrEcAED*&)vSR6ih37VsaF+pZ8b{u~AZg8<| zjjUC+><9MZ%Q7(t7A;$HAWMRHC{nH>lr?ExW(}^8JHP?jQbh-|fxuK1yGdTk1Aa z!Df@f5}(2p>%Ia~M)B36AWBKXs;(~I2TYSPGfo-W?3xzk#D3<97o@&Vswcmw_M_aX z81hKnlZWU2Je0^b`sYx#Xdr1F&N!~M`-5bkB{Nc zSVG&)!5dk(uZGG#=`nqBO|w66?D3stj~Crkf>jT{$B%E_eDd11pU5L!MUl=}?&DE9 z%kG>EitgkGAT!F3z8`uvUH0r(S?VJ9zQ8FNclXo3-FpMfszZ%Oudn(m_ROh+>7%^I zHAmG>|0*7>_;+W0`TyyxfUH2RfUH2R;Hl_ zV6ot=z^j0)z^lNnV5@+spsfI_psirBV5nfLV5nfL0H46Fz^mY|;HfGg-Mpea};Krgr{pe*nwKrc8kfGa>L*e9?na47&SAS(bZh$-kSI4cM% zkR-S=0P38cf|~-hg0KR4g0{}-DSR_ZfWe@rAhp1>pqoIjfUkhH z;HIFb;IDIH3Oo$>3dRXs3Q7w83S0_y3s4GT3Q!6P3+g#Xu)w{buyX_pN(vkc{tAu@ z{t8wKZVg%t@(R2S>TAwWK|_I20bD^+!H)q`fnC9L zK~jNT=NuOV7d#at6+9JG6(AN6cTQE|gR?nR?ds|RQnj$K09BpiSg=(PSrA+h);W{~ zX9Z*hVFhRX&&Uci`~Tyt2$f~?|LhX~yR%kyrPASv*tzdD|BDwD{uiHXt3`MAauy{> z6IB@{aiVi;H_IZ717j@5NCS$GDvMh6Bw=sU+b7oxsuwA{8)&r0rzVwU7FtYDnPQQ$ z!tNR&Yq+|A!#wf5jw`kHEV6WXYoAB(MU<70_h;lrl|!H1mu${ZOtDX-v+yMzi=+!P zPNpwUZlrPA>!nuN7NrxqB=-utM#J?Ho)!3%)FsP_99m3f?V6rdv$g#t4|ngod*M#) zrWN(L^u=mDAK1kB(vkzF^J2D(yXzEKlugPHcO|uYqS4&4vBZ-W-lJHln+^WR0lD_?Ukt+-n9G4QFOr>kB?B~eV z*3v?%t0L?@2iT10wgj~!3|f||(LTf#KO83TFhSoCI}y+Am=M>ECa=sRSh9ugR02aU z!;sxr?~yL;aNk^o2~KA^ZmZ_?lE!%E$$5LNPm9}Qn~Xnp5}$`8&v$yCuo{EMVNkNg z?J+|V%LLI zzq`_?d^D9%C8eNB{de^$V_%$IGK=z{tj|{5pI|mm8^LjA^cGq&SVW0QiCazN5X|&a2_^y= zwPCU8tYIlH>*-{d#=vCih0R^0$3j_WMhIi4YZ6H$wMnVu;vGzM=**54~t0Xa1LE`L%)kL)v%K@#%%9b#~I`jFSG0m`V|WZZCpg_@ffpaK1WHlJpNWM zt7zm#wPo|wo7?t(DH)}l`o~#I#oDWL@|#2~f?R#ZG73GdF;l;6dUk2L*`6uXdcHI2 zkf>8PT1w5cV4;sN2UO9*#4XW5@>$cTNUJ9k6<>TQUlHN7+m)8H4>;$5Dq%We_DL67Swx75&A}$i*etu4+o)BeU(NH*3BRC*T;d4zll&g{-5C5UoFk?iU)$E=_WX z3TJDMHL1qe*@);m0y{NwWWiD^9mQ%v;%vad!8A9kpasZNb5;@aK6XNc9%SCx6~MDr z)8nA(;)o}&BHmQ1)dOvhJA>5)6k2Q?B_z3D=^zSO;K3prKIqZU7o}omWG<%8Rz{X* z3R6qRG!ltD?2iJvSvU{l-rq?KR*tkPPZ=hsokKdL+7v5$)jVpFljiz&Yr=F|Mu>Wp zdF4@o32jUx;sTTORjwXO&oXre6Ig|-G`2Wk8}XhCnzkNlj<1UgRXFYV)LlTAaTOr= zt0l^PnpcpCX6E^_)I&1tcd0E*JdRC#>EZI}zjD^qQ|TLL#u>L-`j!k#WgnP%&XjNM zpLJRNIk#lyh2fgkYu*E&^B46lXcoC51HnR>XhUQFT{uRF|L$g2msOdO4J?)LwGpx!uXT zG>ca#Q97?>v$X|5sHmD`GTH2F`9eK*0+Cdt_fCok>Ebg5LpjtT#&VenA&=RB8KYe!Pd^}gB~?v$jinGvG<`mxKizX5-~A}>rj5wrez2ZJ)WQ7Vud)T zCL-KK*YKou^&yUf2R&mG914@%3lrB{CHpayUUVMfxh8q{Cx`eXtuv&qn@Hx0)$A{L zInxt&x~6QXN%ZMY-ZH(zFov-IHs%srYu3gm$+160Fp|2XKQ*2~+cat<3XV&gPR(dZ zJ!F-wIk^}C)3xeWLzN9>L$`9 zsToWsTaU6xA1-IWV0$$jG{Fl{M^>buTt+q%iAYOV;C&tf$ji zqm1lvtLzs(*{@==CknIQwq(DLwWZQXc+{2;HHxxLIJ})_x8+e6+QDDbiZdfeSJ`=O zNb>T<30LM|w<~$?e7O(rtC*bRliurd;l9w3cF@ktPtjUY+1hVYVa~GpobLNMTCEBn zuLL|*I-+Z&_yMb$stWBP7+`@mH^=dXss$}~{fttg}V4PyIXyUT?0Nin*YRL$dPwW>pndsz zIr+Q@L9`LwakGVMg~dyi0+W~}e_kKicV|iL1A1kHK>VfP-@of3DeC+zRHh-??Cv7JQJMzN&`u{v#&qsRi`Qv#)wask5sSuB?$ z8+E!wacFyoYH62sX^(Gd-)Y--!>jSa^;b?)e-E$u+i@Lcq?91`TrBmZ#zhU!l5DAF z>(GnK9;H#8lh$`DogmUSAnXmVTB)&B-Upjb5NN)~yx=W{(lfn&=kAsazu8Dd`FG(? zV#fRj^#hQ|zyl-^p?*8DO+#X=Y z`9ey9l(0w``ie^Pc)jZm2iYjZD|1iAlGais*fFzm>JWNDfE^QuPU5O z+rEYR_jGZlS`C#(aTk$$MY#KpR5vE(g#;VIlj*#Qch^PD+ljoAVh}0uk(7`zh$4t_ z_a;%hpO+-_0}r<1r@30k)<$+3mXeLBc@3C+4DC*(_Em=XT3g+XhjjzL>IT)$c9TM} zZK8mDFP=e|ocop?ySMCnB}%{Oll48EViS3{?L_mQbFcPA>kFgN;<85(TSEm~A6^up zxZAKX+boPrzgM4`zIgt&ngnet!EThak!aUNbtr`JTtw(G!)QfTp%7v|n>2>1r(Hk4 zvS69qe1st*A!N|wCna7sXV2MPP*pG8{i~iBIjf@ku3o>ko;G#CL`JkA;{x+tN&P+~ zm7{S;WU;zYG~b$<-YqgSs>5uN{D-q#A5h~_)bD_I@#&Q^h+(7k6N-G@F;T*XaO#OG}pZWUAV9G;~tUx zukF<7mj7_p+8BNQ=14Q;&B-DojTdYF?ooXs5zRcvc=X_M%luNK9&Fk?nG*Lx6zYGx z=v59c|9t+}%Rlhu544iznt1TK4wUhLhv1DD;GsDc0wkI%*8vZK_<#_B1OXBOAprvc z5`h5$-+&VV5&`-^M-G4nPzem^9~A-#0%-z20xAL$n(Oa@0fG2{0f8BT<^T)gp(2jB*{2Y?CC z3dm-zBM0sSVg+Ud9XXI1KqU|*=-Pn_0XBgLfv14QfCmBPfXK|1-#~MKtH6~2bO2?5 zr~rTfVnB1Co(Dt)gan8K4h0MZy*2P7P#7R2fEb`FkRY%aFe&gOkf6Ed7+A?a^*In6 zU?9L3kTTFNpd4^0&?q1$up1yPsM5{#=s>kVpa7MCgusJ9bLK1tcnDAoKnh3*KnF|; zXbJoUU_E{D$O%9PSOP(4zCB%2 zedg_%x{Gh$)`AcjzpHD!7y0gN%d0c*&b5Dk`|i9HKmWa?M>#6mK^$YBYZ~Lfi{o5A zCKY0Mno(PK?k~#ilR;ZZks{4dR)&g!p3_R5$`RBC<)&#~mwj;F-Vg2P&fX;(6K7tS zwrKp+LkLkggFN4z?4Shd53iMu5!FjZ;&%9h+}&KCRQ#Pts3x?Id(TCX#`aVr+bq3~;VMXASo@>q|ek)G)C0gqFC z4Twl2i09q$@(#oEIRs6!jfTs1-r+6U#?{(t4N>2qI4>X^*reD5mgKwi_1#Ec4fI~hHC zeSf9@dABUula4)vGtbF+zx~h7)N4MkE+kR#zS=$x8d{Q+-&=*=Yrd!scHnc%HDyu8 z({4}O?xdNg1`}ozshu*1zBSgY%1YMmEWSsVHYw~O5OqiFtj;hKSl=U~Lo=igZeP48 zY?R#&9Vqp4aq(fyuJj%>Ya2SbxhXN8g64Fq4^Gr}oF2;H(KN$W;~LsW#O z15sLbR64K4&(~){l6B0Rssx{BOYbg|EnKty z>UpA^Z;;IIqBBUNR1TY^glBeMO|<#TpP;X|FvQriNlg0w^zl5()IesNYUQ6 zUDNvHDyK=@9S_#J;FzRnshvAcvNr!-qvw7aS|Qf`&dCL5wmW`1?WvSBd?J~DI)(g} zTSoROIpkS=%QKYy<9H@NRr<`qXdNC_-0c$%guTI*?%-@G#r5qpP+n#|MQABL<^?9Wp(b z_UPf?Ha`1Sj;x(0GbuCnb4mNhfUPmLQSBtj)pIpNpSC`_{!C_mOS?Jx{4S;FaixlB zd*eX%md!K4%TO(SRs;3fs}@s#Y3i|T^Y3^>=H`{Y*XxgYd(FFRTuU$I^!6^c`I=Hn zbw`zs0?FFsctB%5B?N`o#@c%}Yg9C?7tuCzF|+c09Dp|OoGd#|nHa`qNxRgVIi31#sqfJ^gk&Y{tiw&d z-(2u}vDg}Y_Wrn3k5&~I8@?IXYAjnh+_c1!PU8#8gyHb=^zH`ANPO(zj6?#mlN`}#4`jCrFh zCD+tM2R}|?%ruWYBsza+O6E(i9?E5&q!2aD$0HOpWBnu+r-4@1dpwScU`pcVjeacm zc9Ny%@1mp+l^NI1%cK14t-Y+Jvhx1%RW_50d_?1U|h`x2{>5qXQ9l!s4Qhr-+ zN8J%FZ3yeP>`Yr-9UXg@-#cGBa%t3yJ{784;NoMaZ-kof{CT%0%(AI<)oU+k)UMz9 zwKi?(+jSMc?k);*(2TtNPRT)6UDM5FY4M*((eUmkw?aKSG5h!pEoZNnZpQMjV}J`nPAC!rnMaVH`E}h^FgqZ9@Ft_B#wt(bQZ8^IDvvP& zX4+Hn8jJ)IM%ki8dGX$z*7s>v;qf;8RF^G?+mD4S@9$cpvU}YXTEnD5kU%$qo5(`# z+2)08_THn@sqe~5Vvg;pbwpzBYwjY@x5lG*Ey>X%$=jxr`Gw0qD5RK)S15FIcD2w+ zc?*^DQcPHOw4Euqi4?gZJKc5Wv-2EM=hGZkC|HP3r5brUu60;Ej7l?%a|&&6irkzw zkG14TcUqZ`)?RFSalLZJ9jl|qHdGoWpm=VzjC7vZ{k&C1qff@g*o>A~lUI$@3B};n zLfZRXif*Vif3?uU#mc$DWYSm-fw}@G-D0H`{hP72j)Rg9!nbxD} zbY713@A`zh{Zu(LiyoZ)x{%LUf{m)zVGZhhFkIxcL(eUK&4)t$9LpfwWYPyiOw{L~ z!ajq@k!)g-5PEl%2SQ^Sn$ej-kna01Z6TYZctV*Oa1t-3u6vBg-jcurOu~#w+2vC7Of+L44%r@JIb>Kn^h;GC2fti1Co&A<085hf)UM0wi%|D;LK@Oh__Wwk2c<&fOJ|z6Pcn{hB|417D&;QB4k~x-P zMO761YYjuu$79Hzh?2t#%rN4FIGO({nXh+aOKX>LupWX5&ua^p$ZUL|YWVWbQCY%e zs=r%f%}|BwG2?)1Uv)eE8|8>Xw+7wx(`J_2Iy)W2C-4=IO(C8IZXEt`9j_iC4`LY%9S?3$X7PYMn53=L#-v=wXvjR?moc}9tytSiyhg`Nqw`lt@+b4X-2*>C$cx4QtOZ$n;^1| zk199ZctWSAmA=|K5&LZ5@}<3rp(eAbD)RQ6bgO;#7l-3YF9wjY+8(7~~ z;EOmda^;!-JEKydS~r)F&7hd<9+Lf3PUBf!&YRP84m3~HH8MW?s6Nh6AsF*fny z*f-iRMun&(xZ19E(j;ep|yT-?nmEO#d zx?D6%P55AI^L`TD4r*uY_}15}S8`F2CJktIhCpe1JJ!rR8CgxKAMKctd$CZ8ez%g{ z{AX5uQYv#&9Z_N;f}3V!mmBurxEWv@ADCOthelQzr3=OH(ly*JI>vs>uH- z#(4id^X*DP)uFqOPZ}-zHjtowxaj$jBZq%rR-K>ywKbBTir$0h2(*pzi7QINnRX#Z zm!ogb-cv*`icVWuap^Xq(l5o^OvX_&Mc8?+on*hsc!g*Uyu2b3&~Cs|dpvpw-m#g3>f4VF@`e-V#{2?`` zzsJC4Dvg_2uITbA$@DQ9!3z^8)eMb|R2|H&Z~^qEI_h?qZ*e$pjmc$;%fmZkP?whFaE zktyX_io98A`-q-P6f)!Fk@sa;;?3_$Ek_73ooYz;gE;0vu>#zZZd(j(;KU^ZjEuXF zL*nfEoN#Qu{t9*3kgBA(j9xyyDAu~ortBoGi2U%4wvW!4FiSLUl<*d7cnIYWqS)A? zbxV>Aav6!9Vq+4-m#w@l?=hDA7m|H@UwNRIgU!*I6?>N?3$J%Wm#I-igAfk6C_P@2 zK~}Povf`QJSeEWItRRGy`8J)}kUmSzI-`UL*QRINh6VfWhT;5?hGT1ciQNwrg_4-x$BO~kQN-}T0-f1{6GJ0yRwn<=yk(od8!t_g1 ze_BPvSqY{wk$m)?JFmEbD6eE$F5e?}I}-g~3@=FuJLbeId1f=Oq$5iBrD3vP$?NX< zqk-3uDy_)3vLdT9^u!5wwGUgFC+p^#D`;`hOL@x9Evm;6OoNLKVrZQBh~usQn%&3_ zB{$D9Y;X1pEO)fRo)ddd>11PV`Gsz(&*-cpg#@5Do^3A&9Ymc&R|_7we{1#A*<-tw z2gFb3bm-27IYjbLDD&;>vb_~{U~dt!&Jic5E@PQ4ncwttOBP}^RAX-0Fg)N+=?Qke zym;zi&!my2l{U||-41@^68Pk=>Mkd{58XeLRaa}J8zS%MFL;lvp19Yf(9S9Rf!UdH zxvh6Y1n)#Gr=9!Af4?{0<0D7!Y>*Jk)>7H)^3kY_ji|_IvTMn4^pl=f9#<9ytBx85 zi-cJ%cXsOaw1}y^F~r;vxuSQ$%%ess(cDS&2EX}i-NRx2SSN}(UqjGGf*F%AlFJ;t zigXB>=OIRoO(Zf0C3ZYy`cndjG+tyS?n#;ul+;3&t6fwc2$k+~*@;p3#K75)Zt*zA z!Ioy$aq!NwF|u;mQjLS++i*_}gj7>oBrfRQm$U!A{(we)gu@N=v};tFmY|+29i?ZrH(FgA}w^oFO|FTEJo91Z_a?iL>qox z^FVgrr%S7Tyrk_?uGY<%lrJ*Z9~zK2{R|OkdYjOD`;m8~WqEe{lYQ|)&%()MCd;+V z=&e=41eH6WY`F9<&XYYKQ{U}tyDrWN2pYpv*6v{HM*(BfZ3VdjtHCJCR=HqPK z$UbcA%Ujmx#*3F}eh-*Iq*Zn#J0fKSH~Qz#mw$f0EVN~DxM9CT>Zk>(6D8pl6pCU; zA!0#jDR07!eYFit{voE|Jaf-+MqN0mVSpiPEKb5B4BDn`_0~JYgblYI-Y*>EZM4a{ z-}l)vCaND*jN-XBE6{=WT`@+eVWZM$0v*@`2~2)<4qr4UO4^#_t|RV`=*}6(p=oiH zB!6?;IP0j$0z7iMDvm0J*r1UYZu>}$@jgTGe)I9c`kKV8h-aMUh$?bLB1}LByH$!T z)3D{8bv!0Wdiw?GGu1)fl<-Oy{6Hi|?V+4KC+MT$o)wY^Lp8u=`@=|Y^Q2&&m2+8& zSr&V@KiJ}TY43LHpi*2Ey)pUBQ1ZF?WNTr>y@2E;7JKJ~l}RRPOWfW73Hy?%5Gf8( zv_I_l-JpMp>i9oJ#ciDsI=R#E&^m!uTuyOE;Q>;>DR31K3OEIF;*P?@OgwZ(Ko#H# z%mkJK9)Y5`zyenRwxE!LpFmMiFo9VREwup?PFyyDpFm(-Jb}Re#1mvqARQD*@E-^a7zfG$ zgaM&|Q(QuUpP+Ao!+=l#GVZ87_z8#ue&R+_AQV^!6a}&YMR8A{0Hi=s+=CvVC{P+G zhdaLxz5&^AIR%64;5Hx{#7ZutxJu)eN^SrJ#{iqaPh3cG(D90u6}BSHH8deMKrI%0+8!}2S(Q^^ zyUUk)x$g_^elE1e98E|?T!Zd#MOFLqE<(!_RF=6{JXq>^Ipj%*eu$g6gJW`zSbFKB z%fa_b++P_|ax{zWkp*%@`I9SAA75Dw)eFUmJc=tTy3$ZJ)}D02dfDhiPMTwUzREer zrkWQ=T?BB#%)rEla2)?g{h58cr|w*U)_JzxVC$XZ8*iU;+P{sdt%}&b7Qa#tqH^M) zv|dU*)_QfMh*IjG*-8whjxpwv2m)YmH z&#$`YKlC0In;>3QnPEo3R3e~%aB9%Z^ z%(T?fm2$fwYZ_NH?xMzvv|=@H6}cVJ?hf9(j%ekA#Rze;D4J$Gbp}jW8h2@cemc5u43(bXyg5yU@tcnH~OWQmn`M_b$R3z zStu^v<0vCYS9Nm$qGK}FR$TlbWP6g|RUM1U(#7cQp*Ic%FHb63cI8bqjraAN z%N*-v)i zpL_l8I)Yz5%fU*9&bAU%%Vyj7DDbl$?+?>5satNk`=-LrFrq^qow%bt z2^dw&ur6`sFZfJSB$~u0IA*}&G_3gc(6N3cW?G?d_1{Ewl_BnGhGn9*JEA zm*o#kOAy~0r(<{^_4{nQnu`l^0=udGp@gFM-m~=w!aB!@@-EkxoagaFXy`@B$lG5y ziXIUz7SG;^4|I_#r-cdqaoKzE5@o3tym&L?Lr*a}{v>y_bRfCzMRvOw>ny%3%xHS* zJxcA>%*iUX*Hs;VPQxGJaW}wI2fHZ`aws{aTKp4~7fqE3rJ^YuOLJdTk3yI7`Y29Y za+c+bc-0k59Y>Td%?0(mYZFhVo=7eE^+y`7qO;J}(Y83;4j&{&UIx*<$?x65;M2>m zVkuA1);yrx#A`9AAF-S@AH=Ix?r@3yn6HS*kwPuUl4A(ifr~O{Vlcu{xuMoZ)FL+; zVhsjb$fXKiny|8&b|hF8wcN?jL4Hpk6PQ{z8Tdv00{;-jsCK!mFnXhG(-tvpad&sS<8vXvHYPIa6$8y5?e5sRXaE_csSOLj3#ci z_2(BeNfNSDh;b-OH}v&f(n9Qy-QKT(q_I19gn#T9Y@G2+Q$%D<7`7Jg<4w|f3RH}{ zx}2jwoXF+BsAgl=J%iFaP=7LbSW(QaWc|s!WXma*`2qq1lw(I-2=KiO-A5y>hj!n4BnN-&Y?#w+c$4Rp+boh=7_`?szx8}(P>M-trfmG;$sl$5O`7b;*`Sy36#;*2PORY>kVCsZ!Nn)X7YI=7Zcywxp7zmIL?h~cG~iF8MAoz9yB)fW?9hX z^_bO^T>Pzh$}*X6Lw5skyV0GC<~R*b{Kh6D&8ig%0-BE;3xm8^O=u62Pg5g!$LbXMzLLi0aO30R?Wg9i(yoeRzYN+E5K{dx#qifW&0|Py->1ADBE)pbj z^7hq_dO6hbE$WqO7@;tkMT?-XDnZwH>peg2dT^jswJT?%b=BbGtS7Z4t2)%~?5xnI zelJrTTGN^-Fndc%)oPlQK9<$s*m_YWO+f__&GE|ll-+RCal1(5Jq^<>deQvx<$RKKo{M7h=IkQ|4k9^GCQr(y&n-Y(HSsh(DR zp6ukyDliRSNC;hYAcYT2=1rWmXhL*y!?O~)U(z3P1<;H3Fk_*%k3|DCHbSX)J03I``uKt?W#wph7PEODdbBb9{( zSeL5SP2Gofiuw3AD)qN5H+debec-@r-}4KNHVJzxpO0wjXP52fZj(qeMevlMm_~DtZ5kPe9+UsTQ;!t>3(lI;;>PEjfPro zx%ip8X&0XjX(mO*6WmY&V^`N8c_eFI9pU7}rK>cYn7pKt1JOmwn~>Ya*Q(Pi4@?^W zoIrBpJ{?DC;_YF69 z@f4~B;t=%SLw`)e2kW3X1~_5E`l$f-%T#Qu;lizb>iF<|65-Mef+Qn&O$@_-me+!Y zPQT>PV#)AAQ0i=aj*;U{O9qoiytreBi&{vr8^hfsesD6R%ER<>5Tn7!_C*Bas)q-b zVyB*y5c0cqriqFh(#+6dW@Fh~_;0QzlS%GX2ivpOe!I7JC+yT`iddqRXi7l0U+$1@}GdU~D6~$qo#~9kv0m8;%@GeC&!gF@oU%DY|$rM3$l&5tT zpFQNaPr}$BH@;8eZ&w_-v!lNMad!02LIs|J9tBm3d#Vvs1+@w=1*!r=fu}%5;4Cl{ z@Crx;TmlnuM@+$4FdYgY0@nbnKvjSyP!BK)v<1R~!~~uKKmnfU?qSOAPY{R#*MjDqR~b^y3>_klrD04Tr?L?=)ih!0W~xQWXpZX*IQft5fvU>r~w7zYRm zx&itDZJ@t_#eg$lF>n(Aid(>da=}M15ek%pE(aO{(1E|W+rj`YkP*lZ zaKr@>*Id9l5D>5qs09K7cEM;U#4(6S+;#-z3h>1pwFN42_mII{P~L!D03VPS*ax%) z)B<*a<{(&csRicZ&a(cgEeK^0tRR$u96?x6tGJ`B04v}X42#0ZC^u3;q5A*8Qy44~ z$hJ*F2ulC8r(kweW}nXSfPPE1wA$adi|sDAVo~BovvT(TDpV=`s`IxYeHcD@$3`97_#`F7==bdC zUSUl)Gl`lPw{!HDTKQmFdBu~9g5{l>YhNC76)c*Ih?6?OQwUGQu9oFNp^=?;@_Vl| zyz3AkiXmjP8}FX~o*n)7p86t%OM!3IHZkct*H#A_?AJ=Nqx|F*RMmO>`kD6p%_DY6 zRPqD#cky7l*KuCUgoE=-z*BC^2uzg=MR?&jsi0u70A(_YA_zAV$C8xC<8m-LqohPx z#VnW|Rl&_B%DGRk$HPKm(etBnto&PA&)FYPM^}6Zo=6v6NtVDRsrQ@ny;e|vk%3WH zr(jE#kUN=fk;%$S8pc#;IZ;vDCXXr+jL%R)g2Mkzp)xP(Ux8Pz?V>cLG8B&PyaC&< zM4X2DHdJG-rF4KD!ynm79!L-((?s%z~s~p*zqBKb6Mc&{(mV_=IG^pEK??QTw=CWg}t~nBs{K z*hgwp#7#3;6ldHEo)t@JMjIMF4S(L@Ijmt>fykRxVI^PHd~>C(3cMTF@>#|4;nne1 z-WAu8N{HRL!*{EugB9$b zpknOlLJ|^-ij7%%DPnG8u&(5aOumw8ml@P99~4u*Zk~b1;@n?%EOlmioATtkjjjc20HzmO)cL|$5boqwU)J*Qjf!k@LSXby~6pp}@RH`q~(-no0K-JU~Z+x0GhRE!l9L z_@L@lE=hxd7HwD<9Wl?T4)N9WZVDO2VwiE;_t20lLa+FFE ztoG*rDAh@psA7>5k|`16qJ`pCN^9P1a)0cPR7u@fp;DIgTqC>FHi4uUayPZg{6hP@ zm9TLi>8MYJV@J5><<7g*ONbyAnFqov97*i}{~s~cn0 zMjmO2T#}{Lc<+`?V$4`8Uxf?)67vNb8@jqZnm=S#rCwaV)$aD>0Zr+;Pp1Ow)037F zC>Uu{pjL7b8y*Hk1)yMzlvmTFpCfU7l&PKB<(Sr#Cn!GOs&7w9*%Xv}O6IbN#Bw@n z#rO45qi#8wxp!mbeJDuxWhP%BYpy0IZ6n|M6nV_F)@8FA5voZ8 ze}6)xoyVt=ZMuQWhy`;;OIIwWXLc*I@kl#yYuejGA7&+HV8pJsi&+)>I}vmVdMr$700cN9n}9 z6Ri^RNpZY2{w%slyHTU;0^NyY*4sc;hn@%9ZnKa#-UI6+G1 ziiov7o3%Hc?6z0YU(9-#I;p;H%Wd(aA5W^Hr&jK5>fUK>fA&#m&>DxpJ3CbLlir<~ zx+mYDmXaZv&KzL)gA-MRnU$f#gLW5-qDE&~i^;%INfB^Jw#K;~VR8`-RM zfvpv4F5M8*&@y!}TP-4&=%*8R<#X@59)yZYnm3oWti~;Exq`*rNp*FDvj#M(1iJIx zA*G$tg%cFq>LQBZB9=@?@0Qb3&uv@1k&(2CK;|>fY41|F*PO8Sz@))Cb}#SI-5c$0 z;mU+5Qnk8W=Ug51JarbfT-#!Q@mHZb)_lLv`EyD8d)_PcroPr+&a=e4U-M}WJZ!DV zdeAf)*`&08Nc?zA_&7&obf{t2I8I7$dK_KfnUFE%ob6$vgij&y6n}LVS4pzMGM1Tn zkTyr5$cJWAHV~f+ouBXYwo+h|2*dUA`K8r&~F$plM?6x_QLHK+6DCT8lt858HOScWbOM%v4(w0F zQjze{6r2lEq4IlnH0MZj0@&y>O(hm=xV9+EmU$Cwn3uwN0P z5vI4{zT>~HIIhgFT)B5JUVi!K_>pCLPIs8mUKW|E*5UL*@~Q zT%PRvhyNMr0#KX(D^vm}q0@0^9=SV-fJy)+pb|I)K0Ve^HTu}lZL6o2y zP$!s?D@uSQpa38V_5@}EBteltOYYDjNR#VFt`}^`+cE(rmH zu!{%Saspi;{6VAx&;d5Vm_S89B8)mh0R+%-X9Ho>5zGkQ1SfJ+9heb@5CNVL zumFr8S%{cmPc9h2aR5fZEEkM`S%_#5=>T-VY8XER$pVwXj38NVrvoyBNkOB~6S)x( zC<;{Mnh~@JAO$djNx8KS)C?^BQ;vUUBixOGPRC^<5EbMLMCEQWf**mXfJY!CC>00^ zc@7i_T!nE^_t;~Wlo<1QayoAL#@x0$TVnCX_!+b2`nMyE z=~_nR#*|-gXPpovdoyN!p)zrGb=bRS>jHCzJ49qy=@hpq+xAw6<4{xtU1AbU;{pRv;;CxSQw<)#*rUlLpwet^`uQ>V zS!9B3DY0!L-BzXeZU9H^<;02gP7wl2Gze@I&nIf}ixZ+QZ2}lQ-;*!00u__3_)7b0 zsF?v-FIA53iqJzzUx=e6XG*mcZ%r5MEU?6h_xNwo)_k)~jeU?v=NB?#lbNK|{Nd9D zW^LhZ7qgF&DT2ji)R%=OS`wVI8)8C2(k`MX8d-()8UeIL&nj{v;;)7}Qrfsi>i#nK ziC3C&)T=r-Dq$h6@A!Bj|Je)|zi?zp%nMD9n;74B>v{$OFE}`xJttK*orx z@baiqEjQOUVeOVeoq?R@Pa1Wn#W$Tfz4Pk#l3H)A@|>!-IX@)i1}yb6;I$;_A^O=? z(qV&it3E2COzrWt#aAR`-!Y1rU2>NrH~J|F$xF^5%tj#=5w(e zBlMVI$d{22x#~@5+0GID9`V|-ym+ygsM;=l`g_F`m0R*SfeGhe526SYjQJ~$=7tbcq|P@{4D`1Xo*-%8fJ zB+Ar&o1wlZ>QuftpK=QBR=F;q75T(=5qQHUq|Gk+n(Q{gtWTxH<8Qk*n@gr@auQa! zA8SJE`qV^~m+k)&I1)+_>2#v?Kb%|k&uzD3|iNXFPeULc^W!yfkJeXR?7q+DN&ZnGiq|y zp0_XwSww{>mZb9=VU>_71BBfwAlH+h-)VCVyaLA3athiYj=(vOrP60E6Qw@E;kn63y-J zAUTSduhmD%XfUzv1WNS%Z_0-bWnn~T>FAXt|3xwHzxl zdelWHUN*RqQJ{P0vXqQ%J|1miWhhhY_;I;4?_flKfLF$UI9U}lNm^^58ZM(7udcS4 z?C3TX<|DCg-?+7#!D3V#DT-~h|EY?aJi$#y?0uT$f~yvlYGGtsm9lOAU2Y>URyUlM z=ot);f}&y^4QS@6hk_Jk#1R|qS9jZ)5f_%M*cKodgJ(^|6lfUsP|bJ|5oeuCCcVYZ zd%N$QTQJxt-iWU6i$q@h5Yt+#nKTl^xZn7_EGT;WEAMmBtRnlm6>BZ1n8itgkkqFV zH7ZBy9Nwc1t~ou@EcJTW{h+@2b2%fe)Mv_mLp%Ry1+I0wAHHhC)vSq%1Iv;&;q^RO zNY)vqK$$<^e$O_Z`YN(r8C}|8V`rpj<)O^7%`5njzHsd2l)*Ovcs{SRGyeP*tDmTA zh1pzP@1elnu~=s7Q#y3B&8YTR`CAGZMG&dV_d!f7Wo*N+D^)z|&kpVgHyqzMDc?|E zee-RYc$)=sU!Pt1IT);HN#8^t=v+L8AAIx)p)7>1^7*!^0J{V<0l7u4sxDX-#OqjID2(nCpxbr z;ZWj)eqZIGZ%vyPPnofmB7~72r8+UfbZZ1lyX_`;Ij6&MQt#M4#UZhzMeHiM&Dkbn zF&k%ZsG8ix>c~pPDV8D1!{m5cExE_S;NxSHDjrSthR)q5P=W@GV0qQ(yJ_|BA1BPl zYFV1zGV=*AEq)v$pccTlLXE0e0S~G~PBVWX1V#^z z(WV>4z`Jq`ZpG`EYsaz&jFu`tdA+kCMHRhErRv*b6+y~UYnaiPM?d>I#}qpG{*z@)3E9+U4Um`qB5Cj8=B-b9|}A zG`n?nF`~%E_m!)|s=?BopG)sD!_b!_$k8T^SGEz6*3aKx*mB1nL$b8IM~M2bZ`HXY z(?`11BnX#px9pL}4`OkwdY5=Prlh6PLvgxA{HeaV`YS))GLBt&JmvhQdF01T)L#pU z%s<8+Wfy15O$kzBdO8}HofWFuP1CoO2kIa8EnP9;#7;LmGPT5+*lztnw5G$vDDK)L z>PypCtOJv={H=(R4r&RTJSofn_GBZ1M&Am3L3AOAZ<+j%?3iJCL-yx<=elbjvhRGK zT=ny7|FLVI3jac7Sid-8i6|BK-pDI)qcR(bdNLg*?#J zY-A(iWH^iArSapb*nA2)g1NuBgBh|1qgxe;j4E8HB7HL=6_F!&R2Zs?B<+~(C^7?s zLisAymz?txoa z$O06BQUFEVZ7go(f{@0A3h0a5x*&9MiyANqS{D>Az!)g^&w)a~7@K|tJ7tqNg_{<~n7&t9+7t-Oz;*M7`srG58b1Bl7GHwYSsX;>)@Digt* z{aWezWgEvt!NHpLWsXI^1`xaJN}aVXs9cSj<_5C>@z$}_WZA6y++!<83Ucb`7wKJ3 zt}`)weI=Gw$7s>cSgGH^Y^eqNE}h>-u$ZmC{b`wWD;h;ovF#me#i;ZZxt2P=-pG*^ zAqK?iq(sz#ZL&Q&Bgns2x^}0`29O)y|NCIJ_q4pkA}or~^G>{*zIP{;ZXj~|i;ze0 z`E}2f_M^lK0xIrYKYa7s*Ov`Bhp`g2{Rd+Va_N}9PXEzZtV$~B}TlwN$i)c4_m@3__gdj!|PHn@R-01@2WY7C989`phlhD3ir!VCm3cNv- zms{^s7?Dt-VI$`WyU>e~9BM~NZIFQ&FAr-JlT|k-bC*VtnusT~EQI{SHY=>w-_-42 z^3AC<1aXP0z9qj2(Q&FDj-8E+J{sl=b>p-vqOk%&+tpk8aaeWb^4e_K+1VR|>q1d! zh#m!X>%RZocl{wRB7r%if8y*#rb}>J43f%kku?t$)DA#Lc4 zOJ<3QM&Q_PuVo1j=Ly*AQ`;QqHd5! zPVJ8sDQrCHkg7nyg|)9>+_ZXzEla(%Qb~sOoMrf!OeK0LF;e>zH4AdhjZLfw6H%vE zP?)?H(`;T(2G5#d9?JTaXBFIIJB7FGOfT9NnC6M?x<8#{vj%;ft#R^{(hnUw$ML|B zf(Q+za7spzj%S5YVvw;Lh_B{!^=QHME58dt?C|($Ipd@aRN~TMa3iKVL~h zEDiDn4Lh3#>M9%p1BjJ0w7LF3|FJdqFMRM(v)$00o^{QjV6Il3sYBykp?3U|gNrJY z-5)FbU98AaI>hBzid&&UK2K0^iCf+UEQz8>vLEGW)r=Rh%d>vV&`HEft;p1W zv)woai3+LNIe3S6wyJQAe^$+cZrk1UIy{*NJ(SV*xcf;gbii4OIt$%Jid4wmc(Vz` zoXV?7ZUZDtMbl_>)7#FS`!!>qjT<%Imm%&t$mcT=u8hDFWyqntl;@_|Ub49;B)AIo z+V9JiQGv>+4u_{7PJL;acB+hi_}2j9l*6-y;V;+bulCaT{n?3Cds-cNhi+;FiP844r{~qeR2f~MEU%Egxbei{a)yOuiGNSejeK};3@cv?+z?Ksh z3v*S*Ywo)rJmM**B&d1)*RhqoJrLiqhiBcx4@1)!%tfLfnJC}6S4}NR0C_ASAV(g( z{%R2C_pVgR%=POXreJL@-f7xgcA-DX`FAk0UbS$SeYCbf)#>F!9*V$b6I&!`MnU-kZ*i770h3ddk zwy#axuvWkXU2V4n*&a?6kYh8WFE)hIx9#S+nHd>f>>Ij0U<5a8tzDD(WXBGB1>M(6 z_ST&)cluItWyn02qUXg(Skst|*-hg}KIMs(QG>xyRvS5nO#G6ci(QLl3T>rcn7(Fw z#l|2%R{7Kud+s^j4TP%AXogvb{LiREXDqZnd^_GU@p<*i?y1rbnH>!;v<_?cY<}vO z`P_H{nVs)lTe16uXu*^TPjvsbzVLiW-wyMKjRTKXWjMpzGwzfG!PEiNy1gqAv#K^_ zn#Z2f!c~Z26-(ff7PCV3+ZFUF)Zo=`F9*t>yuKH?|Iwp0PiwFLc=NFC+vBloJAM=$ zd>8d|=Na))`~@*Zqur<99l?)VT-K_AXH{N%B7!Ew*;d2*#FERLZ**2)ut||IJ|t%s z9%!4s%(dh|l*o(jY#rYE23k2@|^&Lz`2nYq8_B$g&&6(*dJ=yZKv~T8V3;g;M{;qEZzN_J{r%&Nm z_}!B&KWBdZ9(;7N6#jW>%gIvs2>#sQGvTAB@Gm``IoZ3SK9aV>93FbTAn_I zx4uhDTmBFI6aJt7?f-v&1%TQ(xSqmBeqB#dTu!I?w_)-8Cd>Qjto9@P1VKh86CD$e zQ8Gi=>7$fnUYvnjXRaa>Ez6f9*C>qKU@HknelMcsc4ZO{@-R+{OjGl4qU&p;s*7EZ zV>c)Y(A^X)GYFM_ZZBz+-gp83IfIw)i+|6i{_Q*XOYw#{BAK+Od$#yN1FuPH51&}T zMg(nX{=LLC@J@-cZ;EfHlwx4Jnd_lm2Qft#9?xSQSNF5^?=|tuVP@&N+V%s81xf1ED6=c zrDDgT_R?OB9P?O1({J{DBJ}8?(~7e-3-goS0ZgX*+MngK>Vw|vCKY~NPx-a$7yd&+ z+SUBvpq#~;l{_vycr3$nlVnhor|T#Gttg&B)F>0@==;#~V7|Yy^ycx^+5O4Nmo~^d zh!;;Q3cI&)*?~GL(fx(SALbx zB(gTDSSrp=oI4TVHNoLgzPXQ`zbWKPK}HnIOY8#r=#)3h_xD{>#cBH4MFJVftzLw+>snXsJD~=l8J9)6=h->NWEzNf=A$wAgx*F$3k+Q=phgIy4I)6I3xvgaG zOl(t=)VcEwBGCv+!F>O+{4X<~OY4UAExfz*T88rW(y3EXRExPoDW{uWI`e0hYutMc z*HhX@3T)@Iir&@z2;mRhs}h~E$wRu&fSIq+9ktvcRPRi6`x5MqfnwXWBt~69#k|^` zrE8@OYb<9Xw>CY=PnEj0rG6y5Cm3G7VO{q%HZ0$A1n<{3G{awYXU=e$=3*^Fa{qe| zJ54?Vdp&zOvCR+D?e^48<=2MYdFdpecf_k9ZD)q+rfXAUL?^=M;a?ds;mxC`k-L5*rVc9;&o zKN{6@LHnGftF#{xyku1;&y59#dG0%cXZE_<&J$8-MEuHX7o zAO245KW03@D<{P(Wko#^3@=jIoC3fFw;x^rmZBP{q8QSkQtF*2WW z2~I`klHL6Y|Msrwzh+ZUeJW6MDz@LyJ&@J>>7q_rvEx?zd#8p!{gn|v6;cFBKv?(l zWj+_#I+d)??!JG?^m8#St;DU+ez3&rbBSkfiAO{CU`6!jQo2B?XNUcRnp2<4f}Q@6 z5g#@Wf3Ar77q#K8DeU^;9fsOu=BkpM$^s;B58X1I`wz3Jy=6hhw;%OI&t1+HC=a%A z7#@IwC`C@?AscQFKWLt-t4doe58di8GCVw2-`HEebMNhurwelp9D#~|Gn-oI@Z^=( zm*%0~ipYlBPiCV3?@+t9^3a#t&lVTHTu0!H#ec)gH;&I`M&^ItHT}P)w&M#8@2}mS zeKlDPJukHOf4xorBO{*v`s;cM_4oCZD_?sVM=zh5a-1?9`PvuNclq3xo~bq8{wr$d xxFfg3qiT;Rt=J~v+Km47 -[[nodiscard]] std::string toHex(I w, size_t hex_len = sizeof(I) << 1); inline void VBLANK() {} +bool a = false, b = false, l = false; + // (1) Create a LinkCube instance LinkCube* linkCube = new LinkCube(); @@ -35,23 +33,53 @@ int main() { // (3) Initialize the library linkCube->activate(); - int counter = -1; + u32 counter = 0; std::string received = ""; + bool reset = false; + u32 vblanks = 0; while (true) { // Title - std::string output = // TODO: IMPLEMENT pending - "LinkCube_demo (v7.0.0)\n\nPress A to send\nPress B to clear\n\nLast " - "sent: " + - std::to_string(counter) + "\n(pending = " + std::to_string(0) + + std::string output = + "LinkCube_demo (v7.0.0)" + std::string(reset ? " !RESET!" : "") + + "\n\nPress A to send\nPress B to clear\n (L = " + "+1024)\n\nLast sent: " + + std::to_string(counter) + + "\n(pending = " + std::to_string(linkCube->pendingCount()) + ")\n\nReceived:\n" + received; - output += std::to_string(Link::_REG_JOY_RECV_H) + ", \n"; - output += std::to_string(Link::_REG_JOY_RECV_L) + ", \n"; - output += "joycnt: " + std::to_string(Link::_REG_JOYCNT) + ", \n"; - output += "joystat: " + std::to_string(Link::_REG_JOYSTAT) + ", \n"; + // (4) Send 32-bit values + if (didPress(KEY_A, a)) { + counter++; + linkCube->send(counter); + } - // TODO: IMPLEMENT transfers + // +1024 + if (didPress(KEY_L, l)) { + counter += 1024; + linkCube->send(counter); + } + + // (5) Read 32-bit values + while (linkCube->canRead()) { + received += std::to_string(linkCube->read()) + ", "; + } + + // Clear + if (didPress(KEY_B, b)) + received = ""; + + // Reset warning + if (linkCube->didReset()) { + counter = 0; + reset = true; + vblanks = 0; + } + if (reset) { + vblanks++; + if (vblanks > 60) + reset = false; + } // Print VBlankIntrWait(); @@ -90,12 +118,3 @@ bool didPress(u16 key, bool& pressed) { pressed = false; return isPressedNow; } - -template -[[nodiscard]] std::string toHex(I w, size_t hex_len) { - static const char* digits = "0123456789ABCDEF"; - std::string rc(hex_len, '0'); - for (size_t i = 0, j = (hex_len - 1) * 4; i < hex_len; ++i, j -= 4) - rc[i] = digits[(w >> j) & 0x0f]; - return rc; -} diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 1fb73d8..4e7a067 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -45,13 +45,13 @@ #include "_link_common.hpp" /** - * @brief Buffer size (how many incoming and outgoing messages - * the queues can store at max **per player**). The default value is `15`, which - * seems fine for most games. + * @brief Buffer size (how many incoming and outgoing messages the queues can + * store at max **per player**). The default value is `15`, which seems fine for + * most games. * \warning This affects how much memory is allocated. With the default value, - * it's `390` bytes. There's a double-buffered pending queue (to avoid data - * races), 1 incoming queue and 1 outgoing queue. - * \warning You can calculate the usage with `LINK_CABLE_QUEUE_SIZE * 26`. + * it's around `390` bytes. There's a double-buffered pending queue (to avoid + * data races), 1 incoming queue and 1 outgoing queue. \warning You can + * approximate the usage with `LINK_CABLE_QUEUE_SIZE * 26`. */ #define LINK_CABLE_QUEUE_SIZE 15 diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp index debff0f..f07194d 100644 --- a/lib/LinkCube.hpp +++ b/lib/LinkCube.hpp @@ -12,7 +12,14 @@ // irq_add(II_SERIAL, LINK_CUBE_ISR_SERIAL); // - 3) Initialize the library with: // linkCube->activate(); -// // TODO: WRITE +// - 4) Send 32-bit values: +// linkCube->send(0x12345678); +// // (now linkCube->pendingCount() will be 1 until it's actually sent) +// - 5) Read 32-bit values: +// if (linkCube->canRead()) { +// u32 value = linkCube->read(); +// // ... +// } // -------------------------------------------------------------------------- // (*) libtonc's interrupt handler sometimes ignores interrupts due to a bug. // That causes packet loss. You REALLY want to use libugba's instead. @@ -22,19 +29,18 @@ #include "_link_common.hpp" /** - * @brief // TODO: WRITE + * @brief Buffer size (how many incoming and outgoing values the queues can + * store at max). The default value is `10`, which seems fine for most games. + * \warning This affects how much memory is allocated. With the default value, + * it's around `120` bytes. There's a double-buffered pending queue (to avoid + * data races), and 1 outgoing queue. + * \warning You can approximate the usage with `LINK_CUBE_QUEUE_SIZE * 12`. */ #define LINK_CUBE_QUEUE_SIZE 10 static volatile char LINK_CUBE_VERSION[] = "LinkCube/v7.0.0"; -#define LINK_CUBE_BARRIER asm volatile("" ::: "memory") // TODO: USE? - -#if LINK_ENABLE_DEBUG_LOGS != 0 -#define _LCLOG_(...) Link::log(__VA_ARGS__) -#else -#define _LCLOG_(...) -#endif +#define LINK_CUBE_BARRIER asm volatile("" ::: "memory") /** * @brief A JOYBUS handler for the Link Port. @@ -44,13 +50,8 @@ class LinkCube { using u32 = unsigned int; using u16 = unsigned short; using u8 = unsigned char; - using U32Queue = Link::Queue; + using U32Queue = Link::Queue; - static constexpr int DEVICE_GBA = 0x0004; - static constexpr int COMMAND_RESET = 0xff; - // static constexpr int COMMAND_INFO = 0x00; // TODO: DOESN'T MATTER - // static constexpr int COMMAND_DATA_WRITE = 0x15; - // static constexpr int COMMAND_DATA_READ = 0x14; static constexpr int BIT_CMD_RESET = 0; static constexpr int BIT_CMD_RECEIVE = 1; static constexpr int BIT_CMD_SEND = 2; @@ -81,10 +82,6 @@ class LinkCube { LINK_CUBE_BARRIER; start(); - - Link::log("ACTIVATED!"); - Link::_REG_JOY_TRANS_H = 0xffee; - Link::_REG_JOY_TRANS_L = 0xaadd; } /** @@ -96,6 +93,72 @@ class LinkCube { stop(); } + /** + * @brief Waits for data. Returns `true` on success, or `false` on + * JOYBUS reset. + */ + bool wait() { + return wait([]() { return false; }); + } + + /** + * @brief Waits for data. Returns `true` on success, or `false` on + * JOYBUS reset or cancellation. + * @param cancel A function that will be continuously invoked. If it returns + * `true`, the wait be aborted. + */ + template + bool wait(F cancel) { + resetFlag = false; + + while (!resetFlag && !canRead() && !cancel()) + Link::_IntrWait(1, Link::_IRQ_SERIAL); + + return canRead(); + } + + /** + * @brief Returns `true` if there are pending received values to read. + */ + [[nodiscard]] bool canRead() { return !incomingQueue.isEmpty(); } + + /** + * @brief Dequeues and returns the next received value. + * \warning If there's no received data, a `0` will be returned. + */ + u32 read() { return incomingQueue.syncPop(); } + + /** + * @brief Returns the next received value without dequeuing it. + * \warning If there's no received data, a `0` will be returned. + */ + [[nodiscard]] u32 peek() { return incomingQueue.peek(); } + + /** + * @brief Sends 32-bit `data`. + * @param data The value to be sent. + * \warning If the other end asks for data at the same time you call this + * method, a `0x00000000` will be sent. + */ + void send(u32 data) { outgoingQueue.syncPush(data); } + + /** + * @brief Returns the number of pending outgoing transfers. + */ + [[nodiscard]] u32 pendingCount() { return outgoingQueue.size(); } + + /** + * @brief Returns whether a JOYBUS reset was requested or not. After this + * call, the reset flag is cleared if `clear` is `true` (default behavior). + * @param clear Whether it should clear the reset flag or not. + */ + bool didReset(bool clear = true) { + bool reset = resetFlag; + if (clear) + resetFlag = false; + return reset; + } + /** * @brief This method is called by the SERIAL interrupt handler. * \warning This is internal API! @@ -106,29 +169,66 @@ class LinkCube { if (isBitHigh(BIT_CMD_RESET)) { resetState(); - _LCLOG_("LinkCube: reset!"); + resetFlag = true; setBitHigh(BIT_CMD_RESET); } + if (isBitHigh(BIT_CMD_RECEIVE)) { - _LCLOG_("LinkCube: cmd receive!"); + newIncomingQueue.push(getData()); setBitHigh(BIT_CMD_RECEIVE); - // return; } + if (isBitHigh(BIT_CMD_SEND)) { - _LCLOG_("LinkCube: cmd send!"); + setPendingData(); setBitHigh(BIT_CMD_SEND); - // return; } + + copyState(); } private: - U32Queue incomingQueue; // TODO: SYNCHRONIZE? + U32Queue newIncomingQueue; + U32Queue incomingQueue; U32Queue outgoingQueue; + volatile bool resetFlag = false; + volatile bool needsClear = false; volatile bool isEnabled = false; + void copyState() { + if (incomingQueue.isReading()) + return; + + if (needsClear) { + incomingQueue.clear(); + needsClear = false; + } + + while (!newIncomingQueue.isEmpty()) + incomingQueue.push(newIncomingQueue.pop()); + } + void resetState() { - incomingQueue.syncClear(); + needsClear = false; + newIncomingQueue.clear(); + if (incomingQueue.isReading()) + needsClear = true; + else + incomingQueue.clear(); outgoingQueue.syncClear(); + resetFlag = false; + } + + void setPendingData() { + setData(outgoingQueue.isWriting() ? 0 : outgoingQueue.pop()); + } + + void setData(u32 data) { + Link::_REG_JOY_TRANS_H = msB32(data); + Link::_REG_JOY_TRANS_L = lsB32(data); + } + + u32 getData() { + return buildU32(Link::_REG_JOY_RECV_H, Link::_REG_JOY_RECV_L); } void stop() { @@ -154,16 +254,9 @@ class LinkCube { void setInterruptsOn() { setBitHigh(BIT_IRQ); } void setInterruptsOff() { setBitLow(BIT_IRQ); } - // TODO: REMOVE? - static u32 buildU32(u8 msB, u8 byte2, u8 byte3, u8 lsB) { - return ((msB & 0xFF) << 24) | ((byte2 & 0xFF) << 16) | - ((byte3 & 0xFF) << 8) | (lsB & 0xFF); - } - static u16 buildU16(u8 msB, u8 lsB) { return (msB << 8) | lsB; } - static u16 msB32(u32 value) { return value >> 16; } - static u16 lsB32(u32 value) { return value & 0xffff; } - static u8 msB16(u16 value) { return value >> 8; } - static u8 lsB16(u16 value) { return value & 0xff; } + u32 buildU32(u16 msB, u16 lsB) { return (msB << 16) | lsB; } + u16 msB32(u32 value) { return value >> 16; } + u16 lsB32(u32 value) { return value & 0xffff; } bool isBitHigh(u8 bit) { return (Link::_REG_JOYCNT >> bit) & 1; } void setBitHigh(u8 bit) { Link::_REG_JOYCNT |= 1 << bit; } void setBitLow(u8 bit) { Link::_REG_JOYCNT &= ~(1 << bit); } @@ -178,6 +271,4 @@ inline void LINK_CUBE_ISR_SERIAL() { linkCube->_onSerial(); } -#undef _LCLOG_ - #endif // LINK_CUBE_H diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index 4d9e18c..e139119 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -256,19 +256,7 @@ class LinkUART { /** * @brief Reads a byte. Returns 0 if nothing is found. */ - u8 read() { - LINK_UART_BARRIER; - incomingQueue.startReading(); - LINK_UART_BARRIER; - - u8 data = incomingQueue.pop(); - - LINK_UART_BARRIER; - incomingQueue.stopReading(); - LINK_UART_BARRIER; - - return data; - } + u8 read() { return incomingQueue.syncPop(); } /** * @brief Sends a `data` byte. diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 009d95e..cc2ea48 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -67,9 +67,9 @@ * @brief Buffer size (how many incoming and outgoing messages the queues can * store at max). The default value is `30`, which seems fine for most games. * \warning This affects how much memory is allocated. With the default value, - * it's `960` bytes. There's a double-buffered incoming queue and a + * it's around `960` bytes. There's a double-buffered incoming queue and a * double-buffered outgoing queue (to avoid data races). - * \warning You can calculate the usage with `LINK_WIRELESS_QUEUE_SIZE * 32`. + * \warning You can approximate the usage with `LINK_WIRELESS_QUEUE_SIZE * 32`. */ #define LINK_WIRELESS_QUEUE_SIZE 30 diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 4bd89e1..464d215 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -219,6 +219,19 @@ class Queue { } } + T syncPop() { + _isReading = true; + asm volatile("" ::: "memory"); + + auto value = pop(); + + asm volatile("" ::: "memory"); + _isReading = false; + asm volatile("" ::: "memory"); + + return value; + } + void syncClear() { if (_isReading) return; // (it will be cleared later anyway) @@ -230,8 +243,8 @@ class Queue { } u32 size() { return count; } - bool isEmpty() { return size() == 0; } - bool isFull() { return size() == Size; } + bool isEmpty() { return count == 0; } + bool isFull() { return count == Size; } bool isReading() { return _isReading; } bool isWriting() { return _isWriting; } bool canMutate() { return !_isReading && !_isWriting; } From 1b45e8c867b8cb6a37caece0e7eab674aeb9880a Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 04:23:38 -0300 Subject: [PATCH 168/195] Updating LinkCube documentation --- README.md | 2 +- lib/LinkCube.hpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6d0964d..f6b13f1 100644 --- a/README.md +++ b/README.md @@ -444,7 +444,7 @@ Name | Return type | Description `activate()` | - | Activates the library. `deactivate()` | - | Deactivates the library. `wait()` | **bool** | Waits for data. Returns `true` on success, or `false` on JOYBUS reset. -`wait(cancel)` | **bool** | Like `wait()` but accepts a `cancel()` function. The library will continuously invoke it, and abort the wait if it returns `true`. +`wait(cancel)` | **bool** | Like `wait()` but accepts a `cancel()` function. The library will invoke it after every SERIAL interrupt, and abort the wait if it returns `true`. `canRead()` | **bool** | Returns `true` if there are pending received values to read. `read()` | **u32** | Dequeues and returns the next received value. If there's no received data, a `0` will be returned. `peek()` | **u32** | Returns the next received value without dequeuing it. If there's no received data, a `0` will be returned. diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp index f07194d..fe4c0e4 100644 --- a/lib/LinkCube.hpp +++ b/lib/LinkCube.hpp @@ -104,8 +104,9 @@ class LinkCube { /** * @brief Waits for data. Returns `true` on success, or `false` on * JOYBUS reset or cancellation. - * @param cancel A function that will be continuously invoked. If it returns - * `true`, the wait be aborted. + * @param cancel A function that will be invoked after every SERIAL interrupt. + * If it returns `true`, the wait be aborted. + * \warning Blocks the system until the next SERIAL interrupt! */ template bool wait(F cancel) { From 4489d91957a01ff81e5196ae2fdff2cde556f829 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 06:55:42 -0300 Subject: [PATCH 169/195] Adding C bindings --- lib/c_bindings/C_LinkCable.cpp | 83 ++++++++ lib/c_bindings/C_LinkCable.h | 74 +++++++ lib/c_bindings/C_LinkCableMultiboot.cpp | 25 +++ lib/c_bindings/C_LinkCableMultiboot.h | 40 ++++ lib/c_bindings/C_LinkCube.cpp | 61 ++++++ lib/c_bindings/C_LinkCube.h | 43 ++++ lib/c_bindings/C_LinkGPIO.cpp | 47 +++++ lib/c_bindings/C_LinkGPIO.h | 47 +++++ lib/c_bindings/C_LinkMobile.cpp | 105 ++++++++++ lib/c_bindings/C_LinkMobile.h | 138 +++++++++++++ lib/c_bindings/C_LinkPS2Keyboard.cpp | 34 +++ lib/c_bindings/C_LinkPS2Keyboard.h | 39 ++++ lib/c_bindings/C_LinkPS2Mouse.cpp | 33 +++ lib/c_bindings/C_LinkPS2Mouse.h | 31 +++ lib/c_bindings/C_LinkRawCable.cpp | 85 ++++++++ lib/c_bindings/C_LinkRawCable.h | 69 +++++++ lib/c_bindings/C_LinkRawWireless.cpp | 227 +++++++++++++++++++++ lib/c_bindings/C_LinkRawWireless.h | 158 ++++++++++++++ lib/c_bindings/C_LinkSPI.cpp | 79 +++++++ lib/c_bindings/C_LinkSPI.h | 70 +++++++ lib/c_bindings/C_LinkUART.cpp | 92 +++++++++ lib/c_bindings/C_LinkUART.h | 71 +++++++ lib/c_bindings/C_LinkUniversal.cpp | 125 ++++++++++++ lib/c_bindings/C_LinkUniversal.h | 112 ++++++++++ lib/c_bindings/C_LinkWireless.cpp | 144 +++++++++++++ lib/c_bindings/C_LinkWireless.h | 145 +++++++++++++ lib/c_bindings/C_LinkWirelessMultiboot.cpp | 36 ++++ lib/c_bindings/C_LinkWirelessMultiboot.h | 65 ++++++ 28 files changed, 2278 insertions(+) create mode 100644 lib/c_bindings/C_LinkCable.cpp create mode 100644 lib/c_bindings/C_LinkCable.h create mode 100644 lib/c_bindings/C_LinkCableMultiboot.cpp create mode 100644 lib/c_bindings/C_LinkCableMultiboot.h create mode 100644 lib/c_bindings/C_LinkCube.cpp create mode 100644 lib/c_bindings/C_LinkCube.h create mode 100644 lib/c_bindings/C_LinkGPIO.cpp create mode 100644 lib/c_bindings/C_LinkGPIO.h create mode 100644 lib/c_bindings/C_LinkMobile.cpp create mode 100644 lib/c_bindings/C_LinkMobile.h create mode 100644 lib/c_bindings/C_LinkPS2Keyboard.cpp create mode 100644 lib/c_bindings/C_LinkPS2Keyboard.h create mode 100644 lib/c_bindings/C_LinkPS2Mouse.cpp create mode 100644 lib/c_bindings/C_LinkPS2Mouse.h create mode 100644 lib/c_bindings/C_LinkRawCable.cpp create mode 100644 lib/c_bindings/C_LinkRawCable.h create mode 100644 lib/c_bindings/C_LinkRawWireless.cpp create mode 100644 lib/c_bindings/C_LinkRawWireless.h create mode 100644 lib/c_bindings/C_LinkSPI.cpp create mode 100644 lib/c_bindings/C_LinkSPI.h create mode 100644 lib/c_bindings/C_LinkUART.cpp create mode 100644 lib/c_bindings/C_LinkUART.h create mode 100644 lib/c_bindings/C_LinkUniversal.cpp create mode 100644 lib/c_bindings/C_LinkUniversal.h create mode 100644 lib/c_bindings/C_LinkWireless.cpp create mode 100644 lib/c_bindings/C_LinkWireless.h create mode 100644 lib/c_bindings/C_LinkWirelessMultiboot.cpp create mode 100644 lib/c_bindings/C_LinkWirelessMultiboot.h diff --git a/lib/c_bindings/C_LinkCable.cpp b/lib/c_bindings/C_LinkCable.cpp new file mode 100644 index 0000000..73fde57 --- /dev/null +++ b/lib/c_bindings/C_LinkCable.cpp @@ -0,0 +1,83 @@ +#include "C_LinkCable.h" +#include "../LinkCable.hpp" + +extern "C" { + +C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate, + u32 timeout, + u16 interval, + u8 sendTimerId) { + return new LinkCable(static_cast(baudRate), timeout, + interval, sendTimerId); +} + +void C_LinkCable_destroy(C_LinkCableHandle handle) { + delete static_cast(handle); +} + +bool C_LinkCable_isActive(C_LinkCableHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkCable_activate(C_LinkCableHandle handle) { + static_cast(handle)->activate(); +} + +void C_LinkCable_deactivate(C_LinkCableHandle handle) { + static_cast(handle)->deactivate(); +} + +bool C_LinkCable_isConnected(C_LinkCableHandle handle) { + return static_cast(handle)->isConnected(); +} + +u8 C_LinkCable_playerCount(C_LinkCableHandle handle) { + return static_cast(handle)->playerCount(); +} + +u8 C_LinkCable_currentPlayerId(C_LinkCableHandle handle) { + return static_cast(handle)->currentPlayerId(); +} + +void C_LinkCable_sync(C_LinkCableHandle handle) { + static_cast(handle)->sync(); +} + +bool C_LinkCable_waitFor(C_LinkCableHandle handle, u8 playerId) { + return static_cast(handle)->waitFor(playerId); +} + +bool C_LinkCable_waitForWithCancel(C_LinkCableHandle handle, + u8 playerId, + bool (*cancel)()) { + return static_cast(handle)->waitFor(playerId, cancel); +} + +bool C_LinkCable_canRead(C_LinkCableHandle handle, u8 playerId) { + return static_cast(handle)->canRead(playerId); +} + +u16 C_LinkCable_read(C_LinkCableHandle handle, u8 playerId) { + return static_cast(handle)->read(playerId); +} + +u16 C_LinkCable_peek(C_LinkCableHandle handle, u8 playerId) { + return static_cast(handle)->peek(playerId); +} + +void C_LinkCable_send(C_LinkCableHandle handle, u16 data) { + static_cast(handle)->send(data); +} + +void C_LinkCable_onVBlank(C_LinkCableHandle handle) { + static_cast(handle)->_onVBlank(); +} + +void C_LinkCable_onSerial(C_LinkCableHandle handle) { + static_cast(handle)->_onSerial(); +} + +void C_LinkCable_onTimer(C_LinkCableHandle handle) { + static_cast(handle)->_onTimer(); +} +} diff --git a/lib/c_bindings/C_LinkCable.h b/lib/c_bindings/C_LinkCable.h new file mode 100644 index 0000000..1f250bd --- /dev/null +++ b/lib/c_bindings/C_LinkCable.h @@ -0,0 +1,74 @@ +#ifndef C_BINDINGS_LINK_CABLE_H +#define C_BINDINGS_LINK_CABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkCableHandle; + +#define C_LINK_CABLE_MAX_PLAYERS 4 +#define C_LINK_CABLE_DEFAULT_TIMEOUT 3 +#define C_LINK_CABLE_DEFAULT_INTERVAL 50 +#define C_LINK_CABLE_DEFAULT_SEND_TIMER_ID 3 +#define C_LINK_CABLE_DISCONNECTED 0xffff +#define C_LINK_CABLE_NO_DATA 0x0 + +typedef enum { + C_BAUD_RATE_0, // 9600 bps + C_BAUD_RATE_1, // 38400 bps + C_BAUD_RATE_2, // 57600 bps + C_BAUD_RATE_3 // 115200 bps +} C_LinkCable_BaudRate; + +C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate, + u32 timeout, + u16 interval, + u8 sendTimerId); +void C_LinkCable_destroy(C_LinkCableHandle handle); + +bool C_LinkCable_isActive(C_LinkCableHandle handle); +void C_LinkCable_activate(C_LinkCableHandle handle); +void C_LinkCable_deactivate(C_LinkCableHandle handle); + +bool C_LinkCable_isConnected(C_LinkCableHandle handle); +u8 C_LinkCable_playerCount(C_LinkCableHandle handle); +u8 C_LinkCable_currentPlayerId(C_LinkCableHandle handle); + +void C_LinkCable_sync(C_LinkCableHandle handle); +bool C_LinkCable_waitFor(C_LinkCableHandle handle, u8 playerId); +bool C_LinkCable_waitForWithCancel(C_LinkCableHandle handle, + u8 playerId, + bool (*cancel)()); + +bool C_LinkCable_canRead(C_LinkCableHandle handle, u8 playerId); +u16 C_LinkCable_read(C_LinkCableHandle handle, u8 playerId); +u16 C_LinkCable_peek(C_LinkCableHandle handle, u8 playerId); + +void C_LinkCable_send(C_LinkCableHandle handle, u16 data); + +void C_LinkCable_onVBlank(C_LinkCableHandle handle); +void C_LinkCable_onSerial(C_LinkCableHandle handle); +void C_LinkCable_onTimer(C_LinkCableHandle handle); + +extern C_LinkCableHandle cLinkCable; + +inline void C_LINK_CABLE_ISR_VBLANK() { + C_LinkCable_onVBlank(cLinkCable); +} + +inline void C_LINK_CABLE_ISR_SERIAL() { + C_LinkCable_onSerial(cLinkCable); +} + +inline void C_LINK_CABLE_ISR_TIMER() { + C_LinkCable_onTimer(cLinkCable); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_CABLE_H diff --git a/lib/c_bindings/C_LinkCableMultiboot.cpp b/lib/c_bindings/C_LinkCableMultiboot.cpp new file mode 100644 index 0000000..13d7847 --- /dev/null +++ b/lib/c_bindings/C_LinkCableMultiboot.cpp @@ -0,0 +1,25 @@ +#include "C_LinkCableMultiboot.h" +#include "../LinkCableMultiboot.hpp" + +extern "C" { + +C_LinkCableMultibootHandle C_LinkCableMultiboot_create(void) { + return new LinkCableMultiboot(); +} + +void C_LinkCableMultiboot_destroy(C_LinkCableMultibootHandle handle) { + delete static_cast(handle); +} + +C_LinkCableMultiboot_Result C_LinkCableMultiboot_sendRom( + C_LinkCableMultibootHandle handle, + const u8* rom, + u32 romSize, + bool (*cancel)(void), + C_LinkCableMultiboot_TransferMode mode) { + return static_cast( + static_cast(handle)->sendRom( + rom, romSize, cancel, + static_cast(mode))); +} +} diff --git a/lib/c_bindings/C_LinkCableMultiboot.h b/lib/c_bindings/C_LinkCableMultiboot.h new file mode 100644 index 0000000..2235427 --- /dev/null +++ b/lib/c_bindings/C_LinkCableMultiboot.h @@ -0,0 +1,40 @@ +#ifndef C_BINDINGS_LINK_CABLE_MULTIBOOT_H +#define C_BINDINGS_LINK_CABLE_MULTIBOOT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef enum { + C_LINK_CABLE_MULTIBOOT_SUCCESS, + C_LINK_CABLE_MULTIBOOT_INVALID_SIZE, + C_LINK_CABLE_MULTIBOOT_CANCELED, + C_LINK_CABLE_MULTIBOOT_FAILURE_DURING_TRANSFER +} C_LinkCableMultiboot_Result; + +typedef enum { + C_LINK_CABLE_MULTIBOOT_TRANSFER_MODE_SPI = 0, + C_LINK_CABLE_MULTIBOOT_TRANSFER_MODE_MULTI_PLAY = 1 +} C_LinkCableMultiboot_TransferMode; + +typedef void* C_LinkCableMultibootHandle; + +C_LinkCableMultibootHandle C_LinkCableMultiboot_create(void); +void C_LinkCableMultiboot_destroy(C_LinkCableMultibootHandle handle); + +C_LinkCableMultiboot_Result C_LinkCableMultiboot_sendRom( + C_LinkCableMultibootHandle handle, + const u8* rom, + u32 romSize, + bool (*cancel)(void), + C_LinkCableMultiboot_TransferMode mode); + +extern C_LinkCableMultibootHandle cLinkCableMultiboot; + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_CABLE_MULTIBOOT_H diff --git a/lib/c_bindings/C_LinkCube.cpp b/lib/c_bindings/C_LinkCube.cpp new file mode 100644 index 0000000..ee1a7cc --- /dev/null +++ b/lib/c_bindings/C_LinkCube.cpp @@ -0,0 +1,61 @@ +#include "C_LinkCube.h" +#include "../LinkCube.hpp" + +extern "C" { + +C_LinkCubeHandle C_LinkCube_create() { + return new LinkCube(); +} + +void C_LinkCube_destroy(C_LinkCubeHandle handle) { + delete static_cast(handle); +} + +bool C_LinkCube_isActive(C_LinkCubeHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkCube_activate(C_LinkCubeHandle handle) { + static_cast(handle)->activate(); +} + +void C_LinkCube_deactivate(C_LinkCubeHandle handle) { + static_cast(handle)->deactivate(); +} + +bool C_LinkCube_wait(C_LinkCubeHandle handle) { + return static_cast(handle)->wait(); +} + +bool C_LinkCube_waitWithCancel(C_LinkCubeHandle handle, bool (*cancel)()) { + return static_cast(handle)->wait(cancel); +} + +bool C_LinkCube_canRead(C_LinkCubeHandle handle) { + return static_cast(handle)->canRead(); +} + +u32 C_LinkCube_read(C_LinkCubeHandle handle) { + return static_cast(handle)->read(); +} + +u32 C_LinkCube_peek(C_LinkCubeHandle handle) { + return static_cast(handle)->peek(); +} + +void C_LinkCube_send(C_LinkCubeHandle handle, u32 data) { + static_cast(handle)->send(data); +} + +u32 C_LinkCube_pendingCount(C_LinkCubeHandle handle) { + return static_cast(handle)->pendingCount(); +} + +bool C_LinkCube_didReset(C_LinkCubeHandle handle, bool clear) { + return static_cast(handle)->didReset(clear); +} + +void C_LinkCube_onSerial(C_LinkCubeHandle handle) { + static_cast(handle)->_onSerial(); +} +} diff --git a/lib/c_bindings/C_LinkCube.h b/lib/c_bindings/C_LinkCube.h new file mode 100644 index 0000000..aeaa1d4 --- /dev/null +++ b/lib/c_bindings/C_LinkCube.h @@ -0,0 +1,43 @@ +#ifndef C_BINDINGS_LINK_CUBE_H +#define C_BINDINGS_LINK_CUBE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkCubeHandle; + +C_LinkCubeHandle C_LinkCube_create(); +void C_LinkCube_destroy(C_LinkCubeHandle handle); + +bool C_LinkCube_isActive(C_LinkCubeHandle handle); +void C_LinkCube_activate(C_LinkCubeHandle handle); +void C_LinkCube_deactivate(C_LinkCubeHandle handle); + +bool C_LinkCube_wait(C_LinkCubeHandle handle); +bool C_LinkCube_waitWithCancel(C_LinkCubeHandle handle, bool (*cancel)()); + +bool C_LinkCube_canRead(C_LinkCubeHandle handle); +u32 C_LinkCube_read(C_LinkCubeHandle handle); +u32 C_LinkCube_peek(C_LinkCubeHandle handle); + +void C_LinkCube_send(C_LinkCubeHandle handle, u32 data); +u32 C_LinkCube_pendingCount(C_LinkCubeHandle handle); + +bool C_LinkCube_didReset(C_LinkCubeHandle handle, bool clear); + +void C_LinkCube_onSerial(C_LinkCubeHandle handle); + +extern C_LinkCubeHandle cLinkCube; + +inline void C_LINK_CUBE_ISR_SERIAL() { + C_LinkCube_onSerial(cLinkCube); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_CUBE_H diff --git a/lib/c_bindings/C_LinkGPIO.cpp b/lib/c_bindings/C_LinkGPIO.cpp new file mode 100644 index 0000000..747863c --- /dev/null +++ b/lib/c_bindings/C_LinkGPIO.cpp @@ -0,0 +1,47 @@ +#include "C_LinkGPIO.h" +#include "../LinkGPIO.hpp" + +extern "C" { + +C_LinkGPIOHandle C_LinkGPIO_create(void) { + return new LinkGPIO(); +} + +void C_LinkGPIO_destroy(C_LinkGPIOHandle handle) { + delete static_cast(handle); +} + +void C_LinkGPIO_reset(C_LinkGPIOHandle handle) { + static_cast(handle)->reset(); +} + +void C_LinkGPIO_setMode(C_LinkGPIOHandle handle, + C_LinkGPIO_Pin pin, + C_LinkGPIO_Direction direction) { + static_cast(handle)->setMode( + static_cast(pin), + static_cast(direction)); +} + +C_LinkGPIO_Direction C_LinkGPIO_getMode(C_LinkGPIOHandle handle, + C_LinkGPIO_Pin pin) { + return static_cast( + static_cast(handle)->getMode(static_cast(pin))); +} + +bool C_LinkGPIO_readPin(C_LinkGPIOHandle handle, C_LinkGPIO_Pin pin) { + return static_cast(handle)->readPin( + static_cast(pin)); +} + +void C_LinkGPIO_writePin(C_LinkGPIOHandle handle, + C_LinkGPIO_Pin pin, + bool isHigh) { + static_cast(handle)->writePin(static_cast(pin), + isHigh); +} + +void C_LinkGPIO_setSIInterrupts(C_LinkGPIOHandle handle, bool isEnabled) { + static_cast(handle)->setSIInterrupts(isEnabled); +} +} diff --git a/lib/c_bindings/C_LinkGPIO.h b/lib/c_bindings/C_LinkGPIO.h new file mode 100644 index 0000000..d3b4614 --- /dev/null +++ b/lib/c_bindings/C_LinkGPIO.h @@ -0,0 +1,47 @@ +#ifndef C_BINDINGS_LINK_GPIO_H +#define C_BINDINGS_LINK_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkGPIOHandle; + +typedef enum { + C_LINK_GPIO_PIN_SI, + C_LINK_GPIO_PIN_SO, + C_LINK_GPIO_PIN_SD, + C_LINK_GPIO_PIN_SC +} C_LinkGPIO_Pin; + +typedef enum { + C_LINK_GPIO_DIRECTION_INPUT, + C_LINK_GPIO_DIRECTION_OUTPUT +} C_LinkGPIO_Direction; + +C_LinkGPIOHandle C_LinkGPIO_create(void); +void C_LinkGPIO_destroy(C_LinkGPIOHandle handle); + +void C_LinkGPIO_reset(C_LinkGPIOHandle handle); +void C_LinkGPIO_setMode(C_LinkGPIOHandle handle, + C_LinkGPIO_Pin pin, + C_LinkGPIO_Direction direction); +C_LinkGPIO_Direction C_LinkGPIO_getMode(C_LinkGPIOHandle handle, + C_LinkGPIO_Pin pin); + +bool C_LinkGPIO_readPin(C_LinkGPIOHandle handle, C_LinkGPIO_Pin pin); +void C_LinkGPIO_writePin(C_LinkGPIOHandle handle, + C_LinkGPIO_Pin pin, + bool isHigh); + +void C_LinkGPIO_setSIInterrupts(C_LinkGPIOHandle handle, bool isEnabled); + +extern C_LinkGPIOHandle cLinkGPIO; + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_GPIO_H diff --git a/lib/c_bindings/C_LinkMobile.cpp b/lib/c_bindings/C_LinkMobile.cpp new file mode 100644 index 0000000..1a2f462 --- /dev/null +++ b/lib/c_bindings/C_LinkMobile.cpp @@ -0,0 +1,105 @@ +#include "C_LinkMobile.h" +#include "../LinkMobile.hpp" + +extern "C" { + +C_LinkMobileHandle C_LinkMobile_create(u32 timeout, u8 timerId) { + return new LinkMobile(timeout, timerId); +} + +void C_LinkMobile_destroy(C_LinkMobileHandle handle) { + delete static_cast(handle); +} + +bool C_LinkMobile_isActive(C_LinkMobileHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkMobile_activate(C_LinkMobileHandle handle) { + static_cast(handle)->activate(); +} + +void C_LinkMobile_deactivate(C_LinkMobileHandle handle) { + static_cast(handle)->deactivate(); +} + +bool C_LinkMobile_shutdown(C_LinkMobileHandle handle) { + return static_cast(handle)->shutdown(); +} + +bool C_LinkMobile_call(C_LinkMobileHandle handle, const char* phoneNumber) { + return static_cast(handle)->call(phoneNumber); +} + +bool C_LinkMobile_callISP(C_LinkMobileHandle handle, + const char* password, + const char* loginId) { + return static_cast(handle)->callISP(password, loginId); +} + +bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle, + const char* domainName, + C_LinkMobileDNSQuery* result) { + return static_cast(handle)->dnsQuery( + domainName, reinterpret_cast(result)); +} + +bool C_LinkMobile_openConnection(C_LinkMobileHandle handle, + const u8* ip, + u16 port, + C_LinkMobileConnectionType type, + C_LinkMobileOpenConn* result) { + return static_cast(handle)->openConnection( + ip, port, static_cast(type), + reinterpret_cast(result)); +} + +bool C_LinkMobile_closeConnection(C_LinkMobileHandle handle, + u8 connectionId, + C_LinkMobileConnectionType type, + C_LinkMobileCloseConn* result) { + return static_cast(handle)->closeConnection( + connectionId, static_cast(type), + reinterpret_cast(result)); +} + +bool C_LinkMobile_transfer(C_LinkMobileHandle handle, + C_LinkMobileDataTransfer dataToSend, + C_LinkMobileDataTransfer* result, + u8 connectionId) { + return static_cast(handle)->transfer( + *reinterpret_cast(&dataToSend), + reinterpret_cast(result), connectionId); +} + +bool C_LinkMobile_waitFor(C_LinkMobileHandle handle, void* asyncRequest) { + return static_cast(handle)->waitFor( + static_cast(asyncRequest)); +} + +bool C_LinkMobile_hangUp(C_LinkMobileHandle handle) { + return static_cast(handle)->hangUp(); +} + +C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle) { + return static_cast( + static_cast(handle)->getState()); +} + +C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle) { + return static_cast( + static_cast(handle)->getRole()); +} + +void C_LinkMobile_onVBlank(C_LinkMobileHandle handle) { + static_cast(handle)->_onVBlank(); +} + +void C_LinkMobile_onSerial(C_LinkMobileHandle handle) { + static_cast(handle)->_onSerial(); +} + +void C_LinkMobile_onTimer(C_LinkMobileHandle handle) { + static_cast(handle)->_onTimer(); +} +} diff --git a/lib/c_bindings/C_LinkMobile.h b/lib/c_bindings/C_LinkMobile.h new file mode 100644 index 0000000..7729836 --- /dev/null +++ b/lib/c_bindings/C_LinkMobile.h @@ -0,0 +1,138 @@ +#ifndef C_BINDINGS_LINK_MOBILE_H +#define C_BINDINGS_LINK_MOBILE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkMobileHandle; + +#define C_LINK_MOBILE_MAX_USER_TRANSFER_LENGTH 254 +#define C_LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH 255 +#define C_LINK_MOBILE_MAX_PHONE_NUMBER_LENGTH 32 +#define C_LINK_MOBILE_MAX_LOGIN_ID_LENGTH 32 +#define C_LINK_MOBILE_MAX_PASSWORD_LENGTH 32 +#define C_LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH 253 +#define C_LINK_MOBILE_COMMAND_TRANSFER_BUFFER \ + (C_LINK_MOBILE_MAX_COMMAND_TRANSFER_LENGTH + 4) +#define C_LINK_MOBILE_DEFAULT_TIMEOUT (60 * 10) +#define C_LINK_MOBILE_DEFAULT_TIMER_ID 3 + +typedef enum { + C_LINK_MOBILE_STATE_NEEDS_RESET, + C_LINK_MOBILE_STATE_PINGING, + C_LINK_MOBILE_STATE_WAITING_TO_START, + C_LINK_MOBILE_STATE_STARTING_SESSION, + C_LINK_MOBILE_STATE_ACTIVATING_SIO32, + C_LINK_MOBILE_STATE_WAITING_32BIT_SWITCH, + C_LINK_MOBILE_STATE_READING_CONFIGURATION, + C_LINK_MOBILE_STATE_SESSION_ACTIVE, + C_LINK_MOBILE_STATE_CALL_REQUESTED, + C_LINK_MOBILE_STATE_CALLING, + C_LINK_MOBILE_STATE_CALL_ESTABLISHED, + C_LINK_MOBILE_STATE_ISP_CALL_REQUESTED, + C_LINK_MOBILE_STATE_ISP_CALLING, + C_LINK_MOBILE_STATE_PPP_LOGIN, + C_LINK_MOBILE_STATE_PPP_ACTIVE, + C_LINK_MOBILE_STATE_SHUTDOWN_REQUESTED, + C_LINK_MOBILE_STATE_ENDING_SESSION, + C_LINK_MOBILE_STATE_WAITING_8BIT_SWITCH, + C_LINK_MOBILE_STATE_SHUTDOWN +} C_LinkMobile_State; + +typedef enum { + C_LINK_MOBILE_ROLE_NO_P2P_CONNECTION, + C_LINK_MOBILE_ROLE_CALLER, + C_LINK_MOBILE_ROLE_RECEIVER +} C_LinkMobile_Role; + +typedef enum { + C_LINK_MOBILE_CONNECTION_TYPE_TCP, + C_LINK_MOBILE_CONNECTION_TYPE_UDP +} C_LinkMobileConnectionType; + +typedef struct { + volatile bool completed; + bool success; + u8 data[254]; + u8 size; +} C_LinkMobileDataTransfer; + +typedef struct { + volatile bool completed; + bool success; + u8 ipv4[4]; +} C_LinkMobileDNSQuery; + +typedef struct { + volatile bool completed; + bool success; + u8 connectionId; +} C_LinkMobileOpenConn; + +typedef struct { + volatile bool completed; + bool success; +} C_LinkMobileCloseConn; + +C_LinkMobileHandle C_LinkMobile_create(u32 timeout, u8 timerId); +void C_LinkMobile_destroy(C_LinkMobileHandle handle); + +bool C_LinkMobile_isActive(C_LinkMobileHandle handle); +void C_LinkMobile_activate(C_LinkMobileHandle handle); +void C_LinkMobile_deactivate(C_LinkMobileHandle handle); +bool C_LinkMobile_shutdown(C_LinkMobileHandle handle); + +bool C_LinkMobile_call(C_LinkMobileHandle handle, const char* phoneNumber); +bool C_LinkMobile_callISP(C_LinkMobileHandle handle, + const char* password, + const char* loginId); + +bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle, + const char* domainName, + C_LinkMobileDNSQuery* result); +bool C_LinkMobile_openConnection(C_LinkMobileHandle handle, + const u8* ip, + u16 port, + C_LinkMobileConnectionType type, + C_LinkMobileOpenConn* result); +bool C_LinkMobile_closeConnection(C_LinkMobileHandle handle, + u8 connectionId, + C_LinkMobileConnectionType type, + C_LinkMobileCloseConn* result); + +bool C_LinkMobile_transfer(C_LinkMobileHandle handle, + C_LinkMobileDataTransfer dataToSend, + C_LinkMobileDataTransfer* result, + u8 connectionId); +bool C_LinkMobile_waitFor(C_LinkMobileHandle handle, void* asyncRequest); +bool C_LinkMobile_hangUp(C_LinkMobileHandle handle); + +C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle); +C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle); + +void C_LinkMobile_onVBlank(C_LinkMobileHandle handle); +void C_LinkMobile_onSerial(C_LinkMobileHandle handle); +void C_LinkMobile_onTimer(C_LinkMobileHandle handle); + +extern C_LinkMobileHandle cLinkMobile; + +inline void C_LINK_MOBILE_ISR_VBLANK() { + C_LinkMobile_onVBlank(cLinkMobile); +} + +inline void C_LINK_MOBILE_ISR_SERIAL() { + C_LinkMobile_onSerial(cLinkMobile); +} + +inline void C_LINK_MOBILE_ISR_TIMER() { + C_LinkMobile_onTimer(cLinkMobile); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_MOBILE_H diff --git a/lib/c_bindings/C_LinkPS2Keyboard.cpp b/lib/c_bindings/C_LinkPS2Keyboard.cpp new file mode 100644 index 0000000..b164b03 --- /dev/null +++ b/lib/c_bindings/C_LinkPS2Keyboard.cpp @@ -0,0 +1,34 @@ +#include "C_LinkPS2Keyboard.h" +#include "../LinkPS2Keyboard.hpp" + +extern "C" { + +C_LinkPS2KeyboardHandle C_LinkPS2Keyboard_create( + C_LinkPS2Keyboard_EventCallback callback) { + return new LinkPS2Keyboard(callback); +} + +void C_LinkPS2Keyboard_destroy(C_LinkPS2KeyboardHandle handle) { + delete static_cast(handle); +} + +bool C_LinkPS2Keyboard_isActive(C_LinkPS2KeyboardHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkPS2Keyboard_activate(C_LinkPS2KeyboardHandle handle) { + static_cast(handle)->activate(); +} + +void C_LinkPS2Keyboard_deactivate(C_LinkPS2KeyboardHandle handle) { + static_cast(handle)->deactivate(); +} + +void C_LinkPS2Keyboard_onVBlank(C_LinkPS2KeyboardHandle handle) { + static_cast(handle)->_onVBlank(); +} + +void C_LinkPS2Keyboard_onSerial(C_LinkPS2KeyboardHandle handle) { + static_cast(handle)->_onSerial(); +} +} diff --git a/lib/c_bindings/C_LinkPS2Keyboard.h b/lib/c_bindings/C_LinkPS2Keyboard.h new file mode 100644 index 0000000..a9721ec --- /dev/null +++ b/lib/c_bindings/C_LinkPS2Keyboard.h @@ -0,0 +1,39 @@ +#ifndef C_BINDINGS_LINK_PS2_KEYBOARD_H +#define C_BINDINGS_LINK_PS2_KEYBOARD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void (*C_LinkPS2Keyboard_EventCallback)(u8 event); + +typedef void* C_LinkPS2KeyboardHandle; + +C_LinkPS2KeyboardHandle C_LinkPS2Keyboard_create( + C_LinkPS2Keyboard_EventCallback callback); +void C_LinkPS2Keyboard_destroy(C_LinkPS2KeyboardHandle handle); + +bool C_LinkPS2Keyboard_isActive(C_LinkPS2KeyboardHandle handle); +void C_LinkPS2Keyboard_activate(C_LinkPS2KeyboardHandle handle); +void C_LinkPS2Keyboard_deactivate(C_LinkPS2KeyboardHandle handle); + +void C_LinkPS2Keyboard_onVBlank(C_LinkPS2KeyboardHandle handle); +void C_LinkPS2Keyboard_onSerial(C_LinkPS2KeyboardHandle handle); + +extern C_LinkPS2KeyboardHandle cLinkPS2Keyboard; + +inline void C_LINK_PS2_KEYBOARD_ISR_VBLANK() { + C_LinkPS2Keyboard_onVBlank(cLinkPS2Keyboard); +} + +inline void C_LINK_PS2_KEYBOARD_ISR_SERIAL() { + C_LinkPS2Keyboard_onSerial(cLinkPS2Keyboard); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_PS2_KEYBOARD_H diff --git a/lib/c_bindings/C_LinkPS2Mouse.cpp b/lib/c_bindings/C_LinkPS2Mouse.cpp new file mode 100644 index 0000000..557e16e --- /dev/null +++ b/lib/c_bindings/C_LinkPS2Mouse.cpp @@ -0,0 +1,33 @@ +#include "C_LinkPS2Mouse.h" +#include "../LinkPS2Mouse.hpp" + +extern "C" { + +C_LinkPS2MouseHandle C_LinkPS2Mouse_create(u8 waitTimerId) { + return new LinkPS2Mouse(waitTimerId); +} + +void C_LinkPS2Mouse_destroy(C_LinkPS2MouseHandle handle) { + delete static_cast(handle); +} + +bool C_LinkPS2Mouse_isActive(C_LinkPS2MouseHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkPS2Mouse_activate(C_LinkPS2MouseHandle handle) { + static_cast(handle)->activate(); +} + +void C_LinkPS2Mouse_deactivate(C_LinkPS2MouseHandle handle) { + static_cast(handle)->deactivate(); +} + +void C_LinkPS2Mouse_report(C_LinkPS2MouseHandle handle, int data[3]) { + int d[3]; + static_cast(handle)->report(d); + for (u32 i = 0; i < 3; i++) { + data[i] = d[i]; + } +} +} diff --git a/lib/c_bindings/C_LinkPS2Mouse.h b/lib/c_bindings/C_LinkPS2Mouse.h new file mode 100644 index 0000000..876fccc --- /dev/null +++ b/lib/c_bindings/C_LinkPS2Mouse.h @@ -0,0 +1,31 @@ +#ifndef C_BINDINGS_LINK_PS2_MOUSE_H +#define C_BINDINGS_LINK_PS2_MOUSE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkPS2MouseHandle; + +#define C_LINK_PS2_MOUSE_LEFT_CLICK 0b001 +#define C_LINK_PS2_MOUSE_RIGHT_CLICK 0b010 +#define C_LINK_PS2_MOUSE_MIDDLE_CLICK 0b100 + +C_LinkPS2MouseHandle C_LinkPS2Mouse_create(u8 waitTimerId); +void C_LinkPS2Mouse_destroy(C_LinkPS2MouseHandle handle); + +bool C_LinkPS2Mouse_isActive(C_LinkPS2MouseHandle handle); +void C_LinkPS2Mouse_activate(C_LinkPS2MouseHandle handle); +void C_LinkPS2Mouse_deactivate(C_LinkPS2MouseHandle handle); + +void C_LinkPS2Mouse_report(C_LinkPS2MouseHandle handle, int data[3]); + +extern C_LinkPS2MouseHandle cLinkPS2Mouse; + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_PS2_MOUSE_H diff --git a/lib/c_bindings/C_LinkRawCable.cpp b/lib/c_bindings/C_LinkRawCable.cpp new file mode 100644 index 0000000..f9ca9b5 --- /dev/null +++ b/lib/c_bindings/C_LinkRawCable.cpp @@ -0,0 +1,85 @@ +#include "C_LinkRawCable.h" +#include +#include "../LinkRawCable.hpp" + +extern "C" { + +C_LinkRawCableHandle C_LinkRawCable_create() { + return new LinkRawCable(); +} + +void C_LinkRawCable_destroy(C_LinkRawCableHandle handle) { + delete static_cast(handle); +} + +bool C_LinkRawCable_isActive(C_LinkRawCableHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkRawCable_activate(C_LinkRawCableHandle handle, + C_LinkRawCable_BaudRate baudRate) { + static_cast(handle)->activate( + static_cast(baudRate)); +} + +void C_LinkRawCable_deactivate(C_LinkRawCableHandle handle) { + static_cast(handle)->deactivate(); +} + +C_LinkRawCable_Response C_LinkRawCable_transfer(C_LinkRawCableHandle handle, + u16 data) { + auto response = static_cast(handle)->transfer(data); + C_LinkRawCable_Response cResponse; + memcpy(cResponse.data, response.data, sizeof(response.data)); + cResponse.playerId = response.playerId; + return cResponse; +} + +C_LinkRawCable_Response C_LinkRawCable_transferWithCancel( + C_LinkRawCableHandle handle, + u16 data, + bool (*cancel)()) { + auto response = static_cast(handle)->transfer(data, cancel); + C_LinkRawCable_Response cResponse; + memcpy(cResponse.data, response.data, sizeof(response.data)); + cResponse.playerId = response.playerId; + return cResponse; +} + +void C_LinkRawCable_transferAsync(C_LinkRawCableHandle handle, u16 data) { + static_cast(handle)->transferAsync(data); +} + +C_LinkRawCable_AsyncState C_LinkRawCable_getAsyncState( + C_LinkRawCableHandle handle) { + return static_cast( + static_cast(handle)->getAsyncState()); +} + +C_LinkRawCable_Response C_LinkRawCable_getAsyncData( + C_LinkRawCableHandle handle) { + auto response = static_cast(handle)->getAsyncData(); + C_LinkRawCable_Response cResponse; + memcpy(cResponse.data, response.data, sizeof(response.data)); + cResponse.playerId = response.playerId; + return cResponse; +} + +C_LinkRawCable_BaudRate C_LinkRawCable_getBaudRate( + C_LinkRawCableHandle handle) { + return static_cast( + static_cast(handle)->getBaudRate()); +} + +bool C_LinkRawCable_isMaster(C_LinkRawCableHandle handle) { + return static_cast(handle)->isMaster(); +} + +bool C_LinkRawCable_isReady(C_LinkRawCableHandle handle) { + return static_cast(handle)->isReady(); +} + +void C_LinkRawCable_onSerial(C_LinkRawCableHandle handle) { + static_cast(handle)->_onSerial(); +} +} diff --git a/lib/c_bindings/C_LinkRawCable.h b/lib/c_bindings/C_LinkRawCable.h new file mode 100644 index 0000000..ac81124 --- /dev/null +++ b/lib/c_bindings/C_LinkRawCable.h @@ -0,0 +1,69 @@ +#ifndef C_BINDINGS_LINK_RAW_CABLE_H +#define C_BINDINGS_LINK_RAW_CABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkRawCableHandle; + +#define C_LINK_RAW_CABLE_MAX_PLAYERS 4 +#define C_LINK_RAW_CABLE_DISCONNECTED 0xffff + +typedef enum { + C_BAUD_RATE_0, // 9600 bps + C_BAUD_RATE_1, // 38400 bps + C_BAUD_RATE_2, // 57600 bps + C_BAUD_RATE_3 // 115200 bps +} C_LinkRawCable_BaudRate; + +typedef enum { + C_ASYNC_STATE_IDLE, + C_ASYNC_STATE_WAITING, + C_ASYNC_STATE_READY +} C_LinkRawCable_AsyncState; + +typedef struct { + u16 data[4]; + int playerId; +} C_LinkRawCable_Response; + +C_LinkRawCableHandle C_LinkRawCable_create(); +void C_LinkRawCable_destroy(C_LinkRawCableHandle handle); + +bool C_LinkRawCable_isActive(C_LinkRawCableHandle handle); +void C_LinkRawCable_activate(C_LinkRawCableHandle handle, + C_LinkRawCable_BaudRate baudRate); +void C_LinkRawCable_deactivate(C_LinkRawCableHandle handle); + +C_LinkRawCable_Response C_LinkRawCable_transfer(C_LinkRawCableHandle handle, + u16 data); +C_LinkRawCable_Response C_LinkRawCable_transferWithCancel( + C_LinkRawCableHandle handle, + u16 data, + bool (*cancel)()); +void C_LinkRawCable_transferAsync(C_LinkRawCableHandle handle, u16 data); + +C_LinkRawCable_AsyncState C_LinkRawCable_getAsyncState( + C_LinkRawCableHandle handle); +C_LinkRawCable_Response C_LinkRawCable_getAsyncData( + C_LinkRawCableHandle handle); +C_LinkRawCable_BaudRate C_LinkRawCable_getBaudRate(C_LinkRawCableHandle handle); +bool C_LinkRawCable_isMaster(C_LinkRawCableHandle handle); +bool C_LinkRawCable_isReady(C_LinkRawCableHandle handle); + +void C_LinkRawCable_onSerial(C_LinkRawCableHandle handle); + +extern C_LinkRawCableHandle cLinkRawCable; + +inline void C_LINK_RAW_CABLE_ISR_SERIAL() { + C_LinkRawCable_onSerial(cLinkRawCable); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_RAW_CABLE_H diff --git a/lib/c_bindings/C_LinkRawWireless.cpp b/lib/c_bindings/C_LinkRawWireless.cpp new file mode 100644 index 0000000..8445c6b --- /dev/null +++ b/lib/c_bindings/C_LinkRawWireless.cpp @@ -0,0 +1,227 @@ +#include "C_LinkRawWireless.h" +#include "../LinkRawWireless.hpp" + +extern "C" { +C_LinkRawWirelessHandle C_LinkRawWireless_create(void) { + return new LinkRawWireless(); +} + +void C_LinkRawWireless_destroy(C_LinkRawWirelessHandle handle) { + delete static_cast(handle); +} + +bool C_LinkRawWireless_isActive(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->isActive(); +} + +bool C_LinkRawWireless_activate(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->activate(); +} + +bool C_LinkRawWireless_deactivate(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->deactivate(); +} + +bool C_LinkRawWireless_setup(C_LinkRawWirelessHandle handle, + u8 maxPlayers, + u8 maxTransmissions, + u8 waitTimeout, + u32 magic) { + return static_cast(handle)->setup( + maxPlayers, maxTransmissions, waitTimeout, magic); +} + +bool C_LinkRawWireless_broadcast(C_LinkRawWirelessHandle handle, + const char* gameName, + const char* userName, + u16 gameId) { + return static_cast(handle)->broadcast(gameName, userName, + gameId); +} + +bool C_LinkRawWireless_startHost(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->startHost(); +} + +bool C_LinkRawWireless_getSlotStatus( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_SlotStatusResponse* response) { + LinkRawWireless::SlotStatusResponse nativeResponse; + bool success = + static_cast(handle)->getSlotStatus(nativeResponse); + response->nextClientNumber = nativeResponse.nextClientNumber; + response->connectedClientsSize = nativeResponse.connectedClientsSize; + for (u32 i = 0; i < response->connectedClientsSize; i++) { + response->connectedClients[i].deviceId = + nativeResponse.connectedClients[i].deviceId; + response->connectedClients[i].clientNumber = + nativeResponse.connectedClients[i].clientNumber; + } + return success; +} + +bool C_LinkRawWireless_acceptConnections( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_AcceptConnectionsResponse* response) { + LinkRawWireless::AcceptConnectionsResponse nativeResponse; + bool success = + static_cast(handle)->acceptConnections(nativeResponse); + response->connectedClientsSize = nativeResponse.connectedClientsSize; + for (u32 i = 0; i < response->connectedClientsSize; i++) { + response->connectedClients[i].deviceId = + nativeResponse.connectedClients[i].deviceId; + response->connectedClients[i].clientNumber = + nativeResponse.connectedClients[i].clientNumber; + } + return success; +} + +bool C_LinkRawWireless_endHost( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_AcceptConnectionsResponse* response) { + LinkRawWireless::AcceptConnectionsResponse nativeResponse; + bool success = static_cast(handle)->endHost(nativeResponse); + response->connectedClientsSize = nativeResponse.connectedClientsSize; + for (u32 i = 0; i < response->connectedClientsSize; i++) { + response->connectedClients[i].deviceId = + nativeResponse.connectedClients[i].deviceId; + response->connectedClients[i].clientNumber = + nativeResponse.connectedClients[i].clientNumber; + } + return success; +} + +bool C_LinkRawWireless_broadcastReadStart(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->broadcastReadStart(); +} + +bool C_LinkRawWireless_broadcastReadPoll( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_BroadcastReadPollResponse* response) { + LinkRawWireless::BroadcastReadPollResponse nativeResponse; + bool success = + static_cast(handle)->broadcastReadPoll(nativeResponse); + response->serversSize = nativeResponse.serversSize; + for (u32 i = 0; i < response->serversSize; i++) { + response->servers[i].id = nativeResponse.servers[i].id; + response->servers[i].gameId = nativeResponse.servers[i].gameId; + std::memcpy(response->servers[i].gameName, + nativeResponse.servers[i].gameName, + LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH + 1); + std::memcpy(response->servers[i].userName, + nativeResponse.servers[i].userName, + LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH + 1); + response->servers[i].nextClientNumber = + nativeResponse.servers[i].nextClientNumber; + } + return success; +} + +bool C_LinkRawWireless_broadcastReadEnd(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->broadcastReadEnd(); +} + +bool C_LinkRawWireless_connect(C_LinkRawWirelessHandle handle, u16 serverId) { + return static_cast(handle)->connect(serverId); +} + +bool C_LinkRawWireless_keepConnecting( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_ConnectionStatus* response) { + LinkRawWireless::ConnectionStatus nativeResponse; + bool success = + static_cast(handle)->keepConnecting(nativeResponse); + response->phase = + static_cast(nativeResponse.phase); + response->assignedClientNumber = nativeResponse.assignedClientNumber; + return success; +} + +bool C_LinkRawWireless_finishConnection(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->finishConnection(); +} + +bool C_LinkRawWireless_sendData(C_LinkRawWirelessHandle handle, + u32* data, + u32 dataSize, + u32 _bytes) { + std::array dataArray; + std::memcpy(dataArray.data(), data, dataSize * sizeof(u32)); + return static_cast(handle)->sendData(dataArray, dataSize, + _bytes); +} + +bool C_LinkRawWireless_sendDataAndWait( + C_LinkRawWirelessHandle handle, + u32* data, + u32 dataSize, + C_LinkRawWireless_RemoteCommand* remoteCommand, + u32 _bytes) { + std::array dataArray; + LinkRawWireless::RemoteCommand nativeRemoteCommand; + std::memcpy(dataArray.data(), data, dataSize * sizeof(u32)); + bool success = static_cast(handle)->sendDataAndWait( + dataArray, dataSize, nativeRemoteCommand, _bytes); + remoteCommand->success = nativeRemoteCommand.success; + remoteCommand->commandId = nativeRemoteCommand.commandId; + remoteCommand->paramsSize = nativeRemoteCommand.paramsSize; + std::memcpy(remoteCommand->params, nativeRemoteCommand.params, + LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH * sizeof(u32)); + return success; +} + +bool C_LinkRawWireless_receiveData( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_ReceiveDataResponse* response) { + LinkRawWireless::ReceiveDataResponse nativeResponse; + bool success = + static_cast(handle)->receiveData(nativeResponse); + for (u32 i = 0; i < nativeResponse.dataSize; i++) { + response->data[i] = nativeResponse.data[i]; + } + response->dataSize = nativeResponse.dataSize; + for (u32 i = 0; i < LINK_RAW_WIRELESS_MAX_PLAYERS; i++) { + response->sentBytes[i] = nativeResponse.sentBytes[i]; + } + return success; +} + +bool C_LinkRawWireless_wait(C_LinkRawWirelessHandle handle, + C_LinkRawWireless_RemoteCommand* remoteCommand) { + LinkRawWireless::RemoteCommand nativeRemoteCommand; + bool success = + static_cast(handle)->wait(nativeRemoteCommand); + remoteCommand->success = nativeRemoteCommand.success; + remoteCommand->commandId = nativeRemoteCommand.commandId; + remoteCommand->paramsSize = nativeRemoteCommand.paramsSize; + std::memcpy(remoteCommand->params, nativeRemoteCommand.params, + LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH * sizeof(u32)); + return success; +} + +C_LinkRawWireless_State C_LinkRawWireless_getState( + C_LinkRawWirelessHandle handle) { + return static_cast( + static_cast(handle)->getState()); +} + +u32 C_LinkRawWireless_getDeviceTransferLength(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->getDeviceTransferLength(); +} + +bool C_LinkRawWireless_isConnected(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->isConnected(); +} + +bool C_LinkRawWireless_isSessionActive(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->isSessionActive(); +} + +u8 C_LinkRawWireless_playerCount(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->playerCount(); +} + +u8 C_LinkRawWireless_currentPlayerId(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->currentPlayerId(); +} +} diff --git a/lib/c_bindings/C_LinkRawWireless.h b/lib/c_bindings/C_LinkRawWireless.h new file mode 100644 index 0000000..6dfa0c2 --- /dev/null +++ b/lib/c_bindings/C_LinkRawWireless.h @@ -0,0 +1,158 @@ +#ifndef C_BINDINGS_LINK_RAW_WIRELESS_H +#define C_BINDINGS_LINK_RAW_WIRELESS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define C_LINK_RAW_WIRELESS_MAX_PLAYERS 5 +#define C_LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 +#define C_LINK_RAW_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH 4 +#define C_LINK_RAW_WIRELESS_MAX_GAME_ID 0x7fff +#define C_LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH 14 +#define C_LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH 8 +#define C_LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 23 + +#define C_LINK_RAW_WIRELESS_MAX_SERVERS 4 + +typedef enum { + C_LINK_RAW_WIRELESS_STATE_NEEDS_RESET, + C_LINK_RAW_WIRELESS_STATE_AUTHENTICATED, + C_LINK_RAW_WIRELESS_STATE_SEARCHING, + C_LINK_RAW_WIRELESS_STATE_SERVING, + C_LINK_RAW_WIRELESS_STATE_CONNECTING, + C_LINK_RAW_WIRELESS_STATE_CONNECTED +} C_LinkRawWireless_State; + +typedef enum { + C_LINK_RAW_WIRELESS_CONNECTION_PHASE_STILL_CONNECTING, + C_LINK_RAW_WIRELESS_CONNECTION_PHASE_ERROR, + C_LINK_RAW_WIRELESS_CONNECTION_PHASE_SUCCESS +} C_LinkRawWireless_ConnectionPhase; + +typedef struct { + bool success; + u32 responses[C_LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH]; + u32 responsesSize; +} C_LinkRawWireless_CommandResult; + +typedef struct { + bool success; + u8 commandId; + u32 params[C_LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; + u32 paramsSize; +} C_LinkRawWireless_RemoteCommand; + +typedef struct { + u16 deviceId; + u8 clientNumber; +} C_LinkRawWireless_ConnectedClient; + +typedef struct { + u8 nextClientNumber; + C_LinkRawWireless_ConnectedClient + connectedClients[C_LINK_RAW_WIRELESS_MAX_PLAYERS]; + u32 connectedClientsSize; +} C_LinkRawWireless_SlotStatusResponse; + +typedef struct { + C_LinkRawWireless_ConnectedClient + connectedClients[C_LINK_RAW_WIRELESS_MAX_PLAYERS]; + u32 connectedClientsSize; +} C_LinkRawWireless_AcceptConnectionsResponse; + +typedef struct { + u16 id; + u16 gameId; + char gameName[C_LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; + char userName[C_LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH + 1]; + u8 nextClientNumber; +} C_LinkRawWirelessServer; + +typedef struct { + C_LinkRawWirelessServer servers[C_LINK_RAW_WIRELESS_MAX_SERVERS]; + u32 serversSize; +} C_LinkRawWireless_BroadcastReadPollResponse; + +typedef struct { + C_LinkRawWireless_ConnectionPhase phase; + u8 assignedClientNumber; +} C_LinkRawWireless_ConnectionStatus; + +typedef struct { + u32 sentBytes[C_LINK_RAW_WIRELESS_MAX_PLAYERS]; + u32 data[C_LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; + u32 dataSize; +} C_LinkRawWireless_ReceiveDataResponse; + +typedef void* C_LinkRawWirelessHandle; + +C_LinkRawWirelessHandle C_LinkRawWireless_create(void); +void C_LinkRawWireless_destroy(C_LinkRawWirelessHandle handle); + +bool C_LinkRawWireless_isActive(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_activate(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_deactivate(C_LinkRawWirelessHandle handle); + +bool C_LinkRawWireless_setup(C_LinkRawWirelessHandle handle, + u8 maxPlayers, + u8 maxTransmissions, + u8 waitTimeout, + u32 magic); +bool C_LinkRawWireless_broadcast(C_LinkRawWirelessHandle handle, + const char* gameName, + const char* userName, + u16 gameId); +bool C_LinkRawWireless_startHost(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_getSlotStatus( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_SlotStatusResponse* response); +bool C_LinkRawWireless_acceptConnections( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_AcceptConnectionsResponse* response); +bool C_LinkRawWireless_endHost( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_AcceptConnectionsResponse* response); +bool C_LinkRawWireless_broadcastReadStart(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_broadcastReadPoll( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_BroadcastReadPollResponse* response); +bool C_LinkRawWireless_broadcastReadEnd(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_connect(C_LinkRawWirelessHandle handle, u16 serverId); +bool C_LinkRawWireless_keepConnecting( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_ConnectionStatus* response); +bool C_LinkRawWireless_finishConnection(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_sendData(C_LinkRawWirelessHandle handle, + u32* data, + u32 dataSize, + u32 _bytes); +bool C_LinkRawWireless_sendDataAndWait( + C_LinkRawWirelessHandle handle, + u32* data, + u32 dataSize, + C_LinkRawWireless_RemoteCommand* remoteCommand, + u32 _bytes); +bool C_LinkRawWireless_receiveData( + C_LinkRawWirelessHandle handle, + C_LinkRawWireless_ReceiveDataResponse* response); +bool C_LinkRawWireless_wait(C_LinkRawWirelessHandle handle, + C_LinkRawWireless_RemoteCommand* remoteCommand); + +C_LinkRawWireless_State C_LinkRawWireless_getState( + C_LinkRawWirelessHandle handle); +u32 C_LinkRawWireless_getDeviceTransferLength(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_isConnected(C_LinkRawWirelessHandle handle); +bool C_LinkRawWireless_isSessionActive(C_LinkRawWirelessHandle handle); +u8 C_LinkRawWireless_playerCount(C_LinkRawWirelessHandle handle); +u8 C_LinkRawWireless_currentPlayerId(C_LinkRawWirelessHandle handle); + +extern C_LinkRawWirelessHandle cRawWireless; + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_RAW_WIRELESS_H diff --git a/lib/c_bindings/C_LinkSPI.cpp b/lib/c_bindings/C_LinkSPI.cpp new file mode 100644 index 0000000..aa7ddf2 --- /dev/null +++ b/lib/c_bindings/C_LinkSPI.cpp @@ -0,0 +1,79 @@ +#include "C_LinkSPI.h" +#include "../LinkSPI.hpp" + +extern "C" { + +C_LinkSPIHandle C_LinkSPI_create() { + return new LinkSPI(); +} + +void C_LinkSPI_destroy(C_LinkSPIHandle handle) { + delete static_cast(handle); +} + +bool C_LinkSPI_isActive(C_LinkSPIHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkSPI_activate(C_LinkSPIHandle handle, + C_LinkSPI_Mode mode, + C_LinkSPI_DataSize dataSize) { + static_cast(handle)->activate( + static_cast(mode), + static_cast(dataSize)); +} + +void C_LinkSPI_deactivate(C_LinkSPIHandle handle) { + static_cast(handle)->deactivate(); +} + +u32 C_LinkSPI_transfer(C_LinkSPIHandle handle, u32 data) { + return static_cast(handle)->transfer(data); +} + +u32 C_LinkSPI_transferWithCancel(C_LinkSPIHandle handle, + u32 data, + bool (*cancel)()) { + return static_cast(handle)->transfer(data, cancel); +} + +void C_LinkSPI_transferAsync(C_LinkSPIHandle handle, u32 data) { + static_cast(handle)->transferAsync(data); +} + +void C_LinkSPI_transferAsyncWithCancel(C_LinkSPIHandle handle, + u32 data, + bool (*cancel)()) { + static_cast(handle)->transferAsync(data, cancel); +} + +C_LinkSPI_AsyncState C_LinkSPI_getAsyncState(C_LinkSPIHandle handle) { + return static_cast( + static_cast(handle)->getAsyncState()); +} + +u32 C_LinkSPI_getAsyncData(C_LinkSPIHandle handle) { + return static_cast(handle)->getAsyncData(); +} + +C_LinkSPI_Mode C_LinkSPI_getMode(C_LinkSPIHandle handle) { + return static_cast(static_cast(handle)->getMode()); +} + +C_LinkSPI_DataSize C_LinkSPI_getDataSize(C_LinkSPIHandle handle) { + return static_cast( + static_cast(handle)->getDataSize()); +} + +void C_LinkSPI_setWaitModeActive(C_LinkSPIHandle handle, bool isActive) { + static_cast(handle)->setWaitModeActive(isActive); +} + +bool C_LinkSPI_isWaitModeActive(C_LinkSPIHandle handle) { + return static_cast(handle)->isWaitModeActive(); +} + +void C_LinkSPI_onSerial(C_LinkSPIHandle handle, bool customAck) { + static_cast(handle)->_onSerial(customAck); +} +} diff --git a/lib/c_bindings/C_LinkSPI.h b/lib/c_bindings/C_LinkSPI.h new file mode 100644 index 0000000..0b20275 --- /dev/null +++ b/lib/c_bindings/C_LinkSPI.h @@ -0,0 +1,70 @@ +#ifndef C_BINDINGS_LINK_SPI_H +#define C_BINDINGS_LINK_SPI_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkSPIHandle; + +#define C_LINK_SPI_NO_DATA_32 0xffffffff +#define C_LINK_SPI_NO_DATA_8 0xff +#define C_LINK_SPI_NO_DATA LINK_SPI_NO_DATA_32 + +typedef enum { + C_MODE_SLAVE, + C_MODE_MASTER_256KBPS, + C_MODE_MASTER_2MBPS +} C_LinkSPI_Mode; + +typedef enum { C_SIZE_32BIT, C_SIZE_8BIT } C_LinkSPI_DataSize; + +typedef enum { + C_ASYNC_STATE_IDLE, + C_ASYNC_STATE_WAITING, + C_ASYNC_STATE_READY +} C_LinkSPI_AsyncState; + +C_LinkSPIHandle C_LinkSPI_create(); +void C_LinkSPI_destroy(C_LinkSPIHandle handle); + +bool C_LinkSPI_isActive(C_LinkSPIHandle handle); +void C_LinkSPI_activate(C_LinkSPIHandle handle, + C_LinkSPI_Mode mode, + C_LinkSPI_DataSize dataSize); +void C_LinkSPI_deactivate(C_LinkSPIHandle handle); + +u32 C_LinkSPI_transfer(C_LinkSPIHandle handle, u32 data); +u32 C_LinkSPI_transferWithCancel(C_LinkSPIHandle handle, + u32 data, + bool (*cancel)()); + +void C_LinkSPI_transferAsync(C_LinkSPIHandle handle, u32 data); +void C_LinkSPI_transferAsyncWithCancel(C_LinkSPIHandle handle, + u32 data, + bool (*cancel)()); + +C_LinkSPI_AsyncState C_LinkSPI_getAsyncState(C_LinkSPIHandle handle); +u32 C_LinkSPI_getAsyncData(C_LinkSPIHandle handle); + +C_LinkSPI_Mode C_LinkSPI_getMode(C_LinkSPIHandle handle); +C_LinkSPI_DataSize C_LinkSPI_getDataSize(C_LinkSPIHandle handle); + +void C_LinkSPI_setWaitModeActive(C_LinkSPIHandle handle, bool isActive); +bool C_LinkSPI_isWaitModeActive(C_LinkSPIHandle handle); + +void C_LinkSPI_onSerial(C_LinkSPIHandle handle, bool customAck); + +extern C_LinkSPIHandle cLinkSPI; + +inline void C_LINK_SPI_ISR_SERIAL() { + C_LinkSPI_onSerial(cLinkSPI, false); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_SPI_H diff --git a/lib/c_bindings/C_LinkUART.cpp b/lib/c_bindings/C_LinkUART.cpp new file mode 100644 index 0000000..492b31f --- /dev/null +++ b/lib/c_bindings/C_LinkUART.cpp @@ -0,0 +1,92 @@ +#include "C_LinkUART.h" +#include "../LinkUART.hpp" + +extern "C" { + +C_LinkUARTHandle C_LinkUART_create() { + return new LinkUART(); +} + +void C_LinkUART_destroy(C_LinkUARTHandle handle) { + delete static_cast(handle); +} + +bool C_LinkUART_isActive(C_LinkUARTHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkUART_activate(C_LinkUARTHandle handle, + C_LinkUART_BaudRate baudRate, + C_LinkUART_DataSize dataSize, + C_LinkUART_Parity parity, + bool useCTS) { + static_cast(handle)->activate( + static_cast(baudRate), + static_cast(dataSize), + static_cast(parity), useCTS); +} + +void C_LinkUART_deactivate(C_LinkUARTHandle handle) { + static_cast(handle)->deactivate(); +} + +void C_LinkUART_sendLine(C_LinkUARTHandle handle, const char* string) { + static_cast(handle)->sendLine(string); +} + +void C_LinkUART_sendLineWithCancel(C_LinkUARTHandle handle, + const char* string, + bool (*cancel)()) { + static_cast(handle)->sendLine(string, cancel); +} + +bool C_LinkUART_readLine(C_LinkUARTHandle handle, char* string, u32 limit) { + return static_cast(handle)->readLine(string, limit); +} + +bool C_LinkUART_readLineWithCancel(C_LinkUARTHandle handle, + char* string, + bool (*cancel)(), + u32 limit) { + return static_cast(handle)->readLine(string, cancel, limit); +} + +void C_LinkUART_send(C_LinkUARTHandle handle, + const u8* buffer, + u32 size, + u32 offset) { + static_cast(handle)->send(buffer, size, offset); +} + +u32 C_LinkUART_read(C_LinkUARTHandle handle, u8* buffer, u32 size, u32 offset) { + return static_cast(handle)->read(buffer, size, offset); +} + +bool C_LinkUART_canRead(C_LinkUARTHandle handle) { + return static_cast(handle)->canRead(); +} + +bool C_LinkUART_canSend(C_LinkUARTHandle handle) { + return static_cast(handle)->canSend(); +} + +u32 C_LinkUART_availableForRead(C_LinkUARTHandle handle) { + return static_cast(handle)->availableForRead(); +} + +u32 C_LinkUART_availableForSend(C_LinkUARTHandle handle) { + return static_cast(handle)->availableForSend(); +} + +u8 C_LinkUART_readByte(C_LinkUARTHandle handle) { + return static_cast(handle)->read(); +} + +void C_LinkUART_sendByte(C_LinkUARTHandle handle, u8 data) { + static_cast(handle)->send(data); +} + +void C_LinkUART_onSerial(C_LinkUARTHandle handle) { + static_cast(handle)->_onSerial(); +} +} diff --git a/lib/c_bindings/C_LinkUART.h b/lib/c_bindings/C_LinkUART.h new file mode 100644 index 0000000..521aec8 --- /dev/null +++ b/lib/c_bindings/C_LinkUART.h @@ -0,0 +1,71 @@ +#ifndef C_BINDINGS_LINK_UART_H +#define C_BINDINGS_LINK_UART_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkUARTHandle; + +typedef enum { + C_BAUD_RATE_0, // 9600 bps + C_BAUD_RATE_1, // 38400 bps + C_BAUD_RATE_2, // 57600 bps + C_BAUD_RATE_3 // 115200 bps +} C_LinkUART_BaudRate; + +typedef enum { C_SIZE_7_BITS, C_SIZE_8_BITS } C_LinkUART_DataSize; + +typedef enum { C_PARITY_NO, C_PARITY_EVEN, C_PARITY_ODD } C_LinkUART_Parity; + +C_LinkUARTHandle C_LinkUART_create(); +void C_LinkUART_destroy(C_LinkUARTHandle handle); + +bool C_LinkUART_isActive(C_LinkUARTHandle handle); +void C_LinkUART_activate(C_LinkUARTHandle handle, + C_LinkUART_BaudRate baudRate, + C_LinkUART_DataSize dataSize, + C_LinkUART_Parity parity, + bool useCTS); +void C_LinkUART_deactivate(C_LinkUARTHandle handle); + +void C_LinkUART_sendLine(C_LinkUARTHandle handle, const char* string); +void C_LinkUART_sendLineWithCancel(C_LinkUARTHandle handle, + const char* string, + bool (*cancel)()); + +bool C_LinkUART_readLine(C_LinkUARTHandle handle, char* string, u32 limit); +bool C_LinkUART_readLineWithCancel(C_LinkUARTHandle handle, + char* string, + bool (*cancel)(), + u32 limit); + +void C_LinkUART_send(C_LinkUARTHandle handle, + const u8* buffer, + u32 size, + u32 offset); +u32 C_LinkUART_read(C_LinkUARTHandle handle, u8* buffer, u32 size, u32 offset); + +bool C_LinkUART_canRead(C_LinkUARTHandle handle); +bool C_LinkUART_canSend(C_LinkUARTHandle handle); +u32 C_LinkUART_availableForRead(C_LinkUARTHandle handle); +u32 C_LinkUART_availableForSend(C_LinkUARTHandle handle); + +u8 C_LinkUART_readByte(C_LinkUARTHandle handle); +void C_LinkUART_sendByte(C_LinkUARTHandle handle, u8 data); + +void C_LinkUART_onSerial(C_LinkUARTHandle handle); + +extern C_LinkUARTHandle cLinkUART; + +inline void C_LINK_SPI_ISR_SERIAL() { + C_LinkUART_onSerial(cLinkUART); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_UART_H diff --git a/lib/c_bindings/C_LinkUniversal.cpp b/lib/c_bindings/C_LinkUniversal.cpp new file mode 100644 index 0000000..1863839 --- /dev/null +++ b/lib/c_bindings/C_LinkUniversal.cpp @@ -0,0 +1,125 @@ +#include "C_LinkUniversal.h" +#include "../LinkUniversal.hpp" + +extern "C" { + +C_LinkUniversalHandle C_LinkUniversal_create( + C_LinkUniversal_Protocol protocol, + const char* gameName, + C_LinkUniversal_CableOptions cableOptions, + C_LinkUniversal_WirelessOptions wirelessOptions, + int randomSeed) { + return new LinkUniversal( + static_cast(protocol), gameName, + {static_cast(cableOptions.baudRate), + cableOptions.timeout, cableOptions.interval, cableOptions.sendTimerId}, + {wirelessOptions.retransmission, wirelessOptions.maxPlayers, + wirelessOptions.timeout, wirelessOptions.interval, + wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId}, + randomSeed); +} + +void C_LinkUniversal_destroy(C_LinkUniversalHandle handle) { + delete static_cast(handle); +} + +bool C_LinkUniversal_isActive(C_LinkUniversalHandle handle) { + return static_cast(handle)->isActive(); +} + +void C_LinkUniversal_activate(C_LinkUniversalHandle handle) { + static_cast(handle)->activate(); +} + +void C_LinkUniversal_deactivate(C_LinkUniversalHandle handle) { + static_cast(handle)->deactivate(); +} + +bool C_LinkUniversal_isConnected(C_LinkUniversalHandle handle) { + return static_cast(handle)->isConnected(); +} + +uint8_t C_LinkUniversal_playerCount(C_LinkUniversalHandle handle) { + return static_cast(handle)->playerCount(); +} + +uint8_t C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle) { + return static_cast(handle)->currentPlayerId(); +} + +void C_LinkUniversal_sync(C_LinkUniversalHandle handle) { + static_cast(handle)->sync(); +} + +bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, uint8_t playerId) { + return static_cast(handle)->waitFor(playerId); +} + +bool C_LinkUniversal_waitForWithCancel(C_LinkUniversalHandle handle, + uint8_t playerId, + bool (*cancel)()) { + return static_cast(handle)->waitFor(playerId, cancel); +} + +bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, uint8_t playerId) { + return static_cast(handle)->canRead(playerId); +} + +uint16_t C_LinkUniversal_read(C_LinkUniversalHandle handle, uint8_t playerId) { + return static_cast(handle)->read(playerId); +} + +uint16_t C_LinkUniversal_peek(C_LinkUniversalHandle handle, uint8_t playerId) { + return static_cast(handle)->peek(playerId); +} + +bool C_LinkUniversal_send(C_LinkUniversalHandle handle, uint16_t data) { + return static_cast(handle)->send(data); +} + +C_LinkUniversal_State C_LinkUniversal_getState(C_LinkUniversalHandle handle) { + return static_cast( + static_cast(handle)->getState()); +} + +C_LinkUniversal_Mode C_LinkUniversal_getMode(C_LinkUniversalHandle handle) { + return static_cast( + static_cast(handle)->getMode()); +} + +C_LinkUniversal_Protocol C_LinkUniversal_getProtocol( + C_LinkUniversalHandle handle) { + return static_cast( + static_cast(handle)->getProtocol()); +} + +void C_LinkUniversal_setProtocol(C_LinkUniversalHandle handle, + C_LinkUniversal_Protocol protocol) { + static_cast(handle)->setProtocol( + static_cast(protocol)); +} + +uint32_t C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle) { + return static_cast(handle)->_getWaitCount(); +} + +uint32_t C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle) { + return static_cast(handle)->_getSubWaitCount(); +} + +void C_LinkUniversal_onVBlank(C_LinkUniversalHandle handle) { + static_cast(handle)->_onVBlank(); +} + +void C_LinkUniversal_onSerial(C_LinkUniversalHandle handle) { + static_cast(handle)->_onSerial(); +} + +void C_LinkUniversal_onTimer(C_LinkUniversalHandle handle) { + static_cast(handle)->_onTimer(); +} + +void C_LinkUniversal_onACKTimer(C_LinkUniversalHandle handle) { + static_cast(handle)->_onACKTimer(); +} +} diff --git a/lib/c_bindings/C_LinkUniversal.h b/lib/c_bindings/C_LinkUniversal.h new file mode 100644 index 0000000..c95be34 --- /dev/null +++ b/lib/c_bindings/C_LinkUniversal.h @@ -0,0 +1,112 @@ +#ifndef C_BINDINGS_LINK_UNIVERSAL_H +#define C_BINDINGS_LINK_UNIVERSAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef void* C_LinkUniversalHandle; + +#define C_LINK_UNIVERSAL_DISCONNECTED 0xffff +#define C_LINK_UNIVERSAL_NO_DATA 0x0 + +typedef enum { + C_STATE_INITIALIZING, + C_STATE_WAITING, + C_STATE_CONNECTED +} C_LinkUniversal_State; + +typedef enum { C_MODE_LINK_CABLE, C_MODE_LINK_WIRELESS } C_LinkUniversal_Mode; + +typedef enum { + C_PROTOCOL_AUTODETECT, + C_PROTOCOL_CABLE, + C_PROTOCOL_WIRELESS_AUTO, + C_PROTOCOL_WIRELESS_SERVER, + C_PROTOCOL_WIRELESS_CLIENT +} C_LinkUniversal_Protocol; + +typedef struct { + uint32_t baudRate; + uint32_t timeout; + uint16_t interval; + uint8_t sendTimerId; +} C_LinkUniversal_CableOptions; + +typedef struct { + bool retransmission; + uint32_t maxPlayers; + uint32_t timeout; + uint16_t interval; + uint8_t sendTimerId; + int8_t asyncACKTimerId; +} C_LinkUniversal_WirelessOptions; + +C_LinkUniversalHandle C_LinkUniversal_create( + C_LinkUniversal_Protocol protocol, + const char* gameName, + C_LinkUniversal_CableOptions cableOptions, + C_LinkUniversal_WirelessOptions wirelessOptions, + int randomSeed); +void C_LinkUniversal_destroy(C_LinkUniversalHandle handle); + +bool C_LinkUniversal_isActive(C_LinkUniversalHandle handle); +void C_LinkUniversal_activate(C_LinkUniversalHandle handle); +void C_LinkUniversal_deactivate(C_LinkUniversalHandle handle); + +bool C_LinkUniversal_isConnected(C_LinkUniversalHandle handle); +uint8_t C_LinkUniversal_playerCount(C_LinkUniversalHandle handle); +uint8_t C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle); +void C_LinkUniversal_sync(C_LinkUniversalHandle handle); + +bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, uint8_t playerId); +bool C_LinkUniversal_waitForWithCancel(C_LinkUniversalHandle handle, + uint8_t playerId, + bool (*cancel)()); +bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, uint8_t playerId); +uint16_t C_LinkUniversal_read(C_LinkUniversalHandle handle, uint8_t playerId); +uint16_t C_LinkUniversal_peek(C_LinkUniversalHandle handle, uint8_t playerId); + +bool C_LinkUniversal_send(C_LinkUniversalHandle handle, uint16_t data); +C_LinkUniversal_State C_LinkUniversal_getState(C_LinkUniversalHandle handle); +C_LinkUniversal_Mode C_LinkUniversal_getMode(C_LinkUniversalHandle handle); +C_LinkUniversal_Protocol C_LinkUniversal_getProtocol( + C_LinkUniversalHandle handle); + +void C_LinkUniversal_setProtocol(C_LinkUniversalHandle handle, + C_LinkUniversal_Protocol protocol); + +uint32_t C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle); +uint32_t C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle); + +void C_LinkUniversal_onVBlank(C_LinkUniversalHandle handle); +void C_LinkUniversal_onSerial(C_LinkUniversalHandle handle); +void C_LinkUniversal_onTimer(C_LinkUniversalHandle handle); +void C_LinkUniversal_onACKTimer(C_LinkUniversalHandle handle); + +extern C_LinkUniversalHandle cLinkUniversal; + +inline void C_LINK_UNIVERSAL_ISR_VBLANK() { + C_LinkUniversal_onVBlank(cLinkUniversal); +} + +inline void C_LINK_UNIVERSAL_ISR_SERIAL() { + C_LinkUniversal_onSerial(cLinkUniversal); +} + +inline void C_LINK_UNIVERSAL_ISR_TIMER() { + C_LinkUniversal_onTimer(cLinkUniversal); +} + +inline void C_LINK_UNIVERSAL_ISR_ACK_TIMER() { + C_LinkUniversal_onTimer(cLinkUniversal); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_UNIVERSAL_H diff --git a/lib/c_bindings/C_LinkWireless.cpp b/lib/c_bindings/C_LinkWireless.cpp new file mode 100644 index 0000000..9c7b3c9 --- /dev/null +++ b/lib/c_bindings/C_LinkWireless.cpp @@ -0,0 +1,144 @@ +#include "C_LinkWireless.h" +#include "../LinkWireless.hpp" + +extern "C" { + +C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, + bool retransmission, + u8 maxPlayers, + u32 timeout, + u16 interval, + u8 sendTimerId, + s8 asyncACKTimerId) { + return new LinkWireless(forwarding, retransmission, maxPlayers, timeout, + interval, sendTimerId, asyncACKTimerId); +} + +void C_LinkWireless_destroy(C_LinkWirelessHandle handle) { + delete static_cast(handle); +} + +bool C_LinkWireless_activate(C_LinkWirelessHandle handle) { + return static_cast(handle)->activate(); +} + +bool C_LinkWireless_deactivate(C_LinkWirelessHandle handle) { + return static_cast(handle)->deactivate(); +} + +bool C_LinkWireless_serve(C_LinkWirelessHandle handle, + const char* gameName, + const char* userName, + u16 gameId) { + return static_cast(handle)->serve(gameName, userName, gameId); +} + +bool C_LinkWireless_getServers(C_LinkWirelessHandle handle, + C_LinkWireless_Server servers[]) { + return static_cast(handle)->getServers( + reinterpret_cast(servers)); +} + +bool C_LinkWireless_getServersAsyncStart(C_LinkWirelessHandle handle) { + return static_cast(handle)->getServersAsyncStart(); +} + +bool C_LinkWireless_getServersAsyncEnd(C_LinkWirelessHandle handle, + C_LinkWireless_Server servers[]) { + return static_cast(handle)->getServersAsyncEnd( + reinterpret_cast(servers)); +} + +bool C_LinkWireless_connect(C_LinkWirelessHandle handle, u16 serverId) { + return static_cast(handle)->connect(serverId); +} + +bool C_LinkWireless_keepConnecting(C_LinkWirelessHandle handle) { + return static_cast(handle)->keepConnecting(); +} + +bool C_LinkWireless_send(C_LinkWirelessHandle handle, u16 data) { + return static_cast(handle)->send(data); +} + +bool C_LinkWireless_receive(C_LinkWirelessHandle handle, + C_LinkWireless_Message messages[]) { + return static_cast(handle)->receive( + reinterpret_cast(messages)); +} + +C_LinkWirelessState C_LinkWireless_getState(C_LinkWirelessHandle handle) { + return static_cast( + static_cast(handle)->getState()); +} + +bool C_LinkWireless_isConnected(C_LinkWirelessHandle handle) { + return static_cast(handle)->isConnected(); +} + +u8 C_LinkWireless_playerCount(C_LinkWirelessHandle handle) { + return static_cast(handle)->playerCount(); +} + +u8 C_LinkWireless_currentPlayerId(C_LinkWirelessHandle handle) { + return static_cast(handle)->currentPlayerId(); +} + +C_LinkWireless_Error C_LinkWireless_getLastError(C_LinkWirelessHandle handle, + bool clear) { + return static_cast( + static_cast(handle)->getLastError(clear)); +} + +bool C_LinkWireless_hasActiveAsyncCommand(C_LinkWirelessHandle handle) { + return static_cast(handle)->_hasActiveAsyncCommand(); +} + +bool C_LinkWireless_canSend(C_LinkWirelessHandle handle) { + return static_cast(handle)->_canSend(); +} + +u32 C_LinkWireless_getPendingCount(C_LinkWirelessHandle handle) { + return static_cast(handle)->_getPendingCount(); +} + +u32 C_LinkWireless_lastPacketId(C_LinkWirelessHandle handle) { + return static_cast(handle)->_lastPacketId(); +} + +u32 C_LinkWireless_lastConfirmationFromClient1(C_LinkWirelessHandle handle) { + return static_cast(handle)->_lastConfirmationFromClient1(); +} + +u32 C_LinkWireless_lastPacketIdFromClient1(C_LinkWirelessHandle handle) { + return static_cast(handle)->_lastPacketIdFromClient1(); +} + +u32 C_LinkWireless_lastConfirmationFromServer(C_LinkWirelessHandle handle) { + return static_cast(handle)->_lastConfirmationFromServer(); +} + +u32 C_LinkWireless_lastPacketIdFromServer(C_LinkWirelessHandle handle) { + return static_cast(handle)->_lastPacketIdFromServer(); +} + +u32 C_LinkWireless_nextPendingPacketId(C_LinkWirelessHandle handle) { + return static_cast(handle)->_nextPendingPacketId(); +} + +void C_LinkWireless_onVBlank(C_LinkWirelessHandle handle) { + static_cast(handle)->_onVBlank(); +} + +void C_LinkWireless_onSerial(C_LinkWirelessHandle handle) { + static_cast(handle)->_onSerial(); +} + +void C_LinkWireless_onTimer(C_LinkWirelessHandle handle) { + static_cast(handle)->_onTimer(); +} + +void C_LinkWireless_onACKTimer(C_LinkWirelessHandle handle) { + static_cast(handle)->_onACKTimer(); +} +} diff --git a/lib/c_bindings/C_LinkWireless.h b/lib/c_bindings/C_LinkWireless.h new file mode 100644 index 0000000..d6eb342 --- /dev/null +++ b/lib/c_bindings/C_LinkWireless.h @@ -0,0 +1,145 @@ +#ifndef C_BINDINGS_LINK_WIRELESS_H +#define C_BINDINGS_LINK_WIRELESS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkWirelessHandle; + +#define C_LINK_WIRELESS_MAX_PLAYERS 5 +#define C_LINK_WIRELESS_MIN_PLAYERS 2 +#define C_LINK_WIRELESS_END 0 +#define C_LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 22 +#define C_LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 +#define C_LINK_WIRELESS_BROADCAST_LENGTH 6 +#define C_LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH \ + (1 + C_LINK_WIRELESS_BROADCAST_LENGTH) +#define C_LINK_WIRELESS_MAX_SERVERS \ + (C_LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH / \ + C_LINK_WIRELESS_BROADCAST_RESPONSE_LENGTH) +#define C_LINK_WIRELESS_MAX_GAME_ID 0x7fff +#define C_LINK_WIRELESS_MAX_GAME_NAME_LENGTH 14 +#define C_LINK_WIRELESS_MAX_USER_NAME_LENGTH 8 +#define C_LINK_WIRELESS_DEFAULT_TIMEOUT 10 +#define C_LINK_WIRELESS_DEFAULT_INTERVAL 50 +#define C_LINK_WIRELESS_DEFAULT_SEND_TIMER_ID 3 +#define C_LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID -1 + +typedef enum { + C_LINK_WIRELESS_STATE_NEEDS_RESET, + C_LINK_WIRELESS_STATE_AUTHENTICATED, + C_LINK_WIRELESS_STATE_SEARCHING, + C_LINK_WIRELESS_STATE_SERVING, + C_LINK_WIRELESS_STATE_CONNECTING, + C_LINK_WIRELESS_STATE_CONNECTED +} C_LinkWirelessState; + +typedef enum { + C_LINK_WIRELESS_ERROR_NONE, + C_LINK_WIRELESS_ERROR_WRONG_STATE, + C_LINK_WIRELESS_ERROR_GAME_NAME_TOO_LONG, + C_LINK_WIRELESS_ERROR_USER_NAME_TOO_LONG, + C_LINK_WIRELESS_ERROR_BUFFER_IS_FULL, + C_LINK_WIRELESS_ERROR_COMMAND_FAILED, + C_LINK_WIRELESS_ERROR_CONNECTION_FAILED, + C_LINK_WIRELESS_ERROR_SEND_DATA_FAILED, + C_LINK_WIRELESS_ERROR_RECEIVE_DATA_FAILED, + C_LINK_WIRELESS_ERROR_ACKNOWLEDGE_FAILED, + C_LINK_WIRELESS_ERROR_TIMEOUT, + C_LINK_WIRELESS_ERROR_REMOTE_TIMEOUT, + C_LINK_WIRELESS_ERROR_BUSY_TRY_AGAIN +} C_LinkWireless_Error; + +typedef struct { + u16 packetId; + u16 data; + u8 playerId; +} C_LinkWireless_Message; + +typedef struct { + u16 id; + u16 gameId; + char gameName[15]; + char userName[9]; + u8 currentPlayerCount; +} C_LinkWireless_Server; + +C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, + bool retransmission, + u8 maxPlayers, + u32 timeout, + u16 interval, + u8 sendTimerId, + s8 asyncACKTimerId); +void C_LinkWireless_destroy(C_LinkWirelessHandle handle); + +bool C_LinkWireless_activate(C_LinkWirelessHandle handle); +bool C_LinkWireless_deactivate(C_LinkWirelessHandle handle); +bool C_LinkWireless_serve(C_LinkWirelessHandle handle, + const char* gameName, + const char* userName, + u16 gameId); + +bool C_LinkWireless_getServers(C_LinkWirelessHandle handle, + C_LinkWireless_Server servers[]); +bool C_LinkWireless_getServersAsyncStart(C_LinkWirelessHandle handle); +bool C_LinkWireless_getServersAsyncEnd(C_LinkWirelessHandle handle, + C_LinkWireless_Server servers[]); + +bool C_LinkWireless_connect(C_LinkWirelessHandle handle, u16 serverId); +bool C_LinkWireless_keepConnecting(C_LinkWirelessHandle handle); + +bool C_LinkWireless_send(C_LinkWirelessHandle handle, u16 data); +bool C_LinkWireless_receive(C_LinkWirelessHandle handle, + C_LinkWireless_Message messages[]); + +C_LinkWirelessState C_LinkWireless_getState(C_LinkWirelessHandle handle); +bool C_LinkWireless_isConnected(C_LinkWirelessHandle handle); +u8 C_LinkWireless_playerCount(C_LinkWirelessHandle handle); +u8 C_LinkWireless_currentPlayerId(C_LinkWirelessHandle handle); + +C_LinkWireless_Error C_LinkWireless_getLastError(C_LinkWirelessHandle handle, + bool clear); + +bool C_LinkWireless_hasActiveAsyncCommand(C_LinkWirelessHandle handle); +bool C_LinkWireless_canSend(C_LinkWirelessHandle handle); + +u32 C_LinkWireless_getPendingCount(C_LinkWirelessHandle handle); +u32 C_LinkWireless_lastPacketId(C_LinkWirelessHandle handle); +u32 C_LinkWireless_lastConfirmationFromClient1(C_LinkWirelessHandle handle); +u32 C_LinkWireless_lastPacketIdFromClient1(C_LinkWirelessHandle handle); +u32 C_LinkWireless_lastConfirmationFromServer(C_LinkWirelessHandle handle); +u32 C_LinkWireless_lastPacketIdFromServer(C_LinkWirelessHandle handle); +u32 C_LinkWireless_nextPendingPacketId(C_LinkWirelessHandle handle); + +void C_LinkWireless_onVBlank(C_LinkWirelessHandle handle); +void C_LinkWireless_onSerial(C_LinkWirelessHandle handle); +void C_LinkWireless_onTimer(C_LinkWirelessHandle handle); +void C_LinkWireless_onACKTimer(C_LinkWirelessHandle handle); + +extern C_LinkWirelessHandle cLinkWireless; + +inline void C_LINK_WIRELESS_ISR_VBLANK() { + C_LinkWireless_onVBlank(cLinkWireless); +} + +inline void C_LINK_WIRELESS_ISR_SERIAL() { + C_LinkWireless_onSerial(cLinkWireless); +} + +inline void C_LINK_WIRELESS_ISR_TIMER() { + C_LinkWireless_onTimer(cLinkWireless); +} + +inline void C_LINK_WIRELESS_ISR_ACK_TIMER() { + C_LinkWireless_onACKTimer(cLinkWireless); +} + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_WIRELESS_H diff --git a/lib/c_bindings/C_LinkWirelessMultiboot.cpp b/lib/c_bindings/C_LinkWirelessMultiboot.cpp new file mode 100644 index 0000000..f5c1e86 --- /dev/null +++ b/lib/c_bindings/C_LinkWirelessMultiboot.cpp @@ -0,0 +1,36 @@ +#include "C_LinkWirelessMultiboot.h" +#include "../LinkWirelessMultiboot.hpp" + +extern "C" { + +C_LinkWirelessMultibootHandle C_LinkWirelessMultiboot_create() { + return new LinkWirelessMultiboot(); +} + +void C_LinkWirelessMultiboot_destroy(C_LinkWirelessMultibootHandle handle) { + delete static_cast(handle); +} + +C_LinkWirelessMultiboot_Result C_LinkWirelessMultiboot_sendRom( + C_LinkWirelessMultibootHandle handle, + const u8* rom, + u32 romSize, + const char* gameName, + const char* userName, + u16 gameId, + u8 players, + C_LinkWirelessMultiboot_CancelCallback cancel) { + auto result = static_cast(handle)->sendRom( + rom, romSize, gameName, userName, gameId, players, + [cancel](LinkWirelessMultiboot::MultibootProgress progress) { + C_LinkWirelessMultiboot_Progress cProgress; + cProgress.state = + static_cast(progress.state); + cProgress.connectedClients = progress.connectedClients; + cProgress.percentage = progress.percentage; + return cancel(cProgress); + }); + + return static_cast(result); +} +} diff --git a/lib/c_bindings/C_LinkWirelessMultiboot.h b/lib/c_bindings/C_LinkWirelessMultiboot.h new file mode 100644 index 0000000..ae7910f --- /dev/null +++ b/lib/c_bindings/C_LinkWirelessMultiboot.h @@ -0,0 +1,65 @@ +#ifndef C_BINDINGS_LINK_WIRELESS_MULTIBOOT_H +#define C_BINDINGS_LINK_WIRELESS_MULTIBOOT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef void* C_LinkWirelessMultibootHandle; + +#define C_LINK_WIRELESS_MULTIBOOT_MIN_ROM_SIZE (0x100 + 0xc0) +#define C_LINK_WIRELESS_MULTIBOOT_MAX_ROM_SIZE (256 * 1024) +#define C_LINK_WIRELESS_MULTIBOOT_MIN_PLAYERS 2 +#define C_LINK_WIRELESS_MULTIBOOT_MAX_PLAYERS 5 + +typedef enum { + C_LINK_WIRELESS_MULTIBOOT_SUCCESS, + C_LINK_WIRELESS_MULTIBOOT_INVALID_SIZE, + C_LINK_WIRELESS_MULTIBOOT_INVALID_PLAYERS, + C_LINK_WIRELESS_MULTIBOOT_CANCELED, + C_LINK_WIRELESS_MULTIBOOT_ADAPTER_NOT_DETECTED, + C_LINK_WIRELESS_MULTIBOOT_BAD_HANDSHAKE, + C_LINK_WIRELESS_MULTIBOOT_CLIENT_DISCONNECTED, + C_LINK_WIRELESS_MULTIBOOT_FAILURE +} C_LinkWirelessMultiboot_Result; + +typedef enum { + C_LINK_WIRELESS_MULTIBOOT_STATE_STOPPED, + C_LINK_WIRELESS_MULTIBOOT_STATE_INITIALIZING, + C_LINK_WIRELESS_MULTIBOOT_STATE_WAITING, + C_LINK_WIRELESS_MULTIBOOT_STATE_PREPARING, + C_LINK_WIRELESS_MULTIBOOT_STATE_SENDING, + C_LINK_WIRELESS_MULTIBOOT_STATE_CONFIRMING +} C_LinkWirelessMultiboot_State; + +typedef struct { + C_LinkWirelessMultiboot_State state; + u32 connectedClients; + u32 percentage; +} C_LinkWirelessMultiboot_Progress; + +typedef bool (*C_LinkWirelessMultiboot_CancelCallback)( + C_LinkWirelessMultiboot_Progress progress); + +C_LinkWirelessMultibootHandle C_LinkWirelessMultiboot_create(); +void C_LinkWirelessMultiboot_destroy(C_LinkWirelessMultibootHandle handle); + +C_LinkWirelessMultiboot_Result C_LinkWirelessMultiboot_sendRom( + C_LinkWirelessMultibootHandle handle, + const u8* rom, + u32 romSize, + const char* gameName, + const char* userName, + u16 gameId, + u8 players, + C_LinkWirelessMultiboot_CancelCallback cancel); + +extern C_LinkWirelessMultibootHandle cLinkWirelessMultiboot; + +#ifdef __cplusplus +} +#endif + +#endif // C_BINDINGS_LINK_WIRELESS_MULTIBOOT_H From 8d1e2bceaad44377e9cb84cd06bcfd738656de11 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 08:45:31 -0300 Subject: [PATCH 170/195] FIX: Player calculation with new timeout system --- lib/LinkCable.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 4e7a067..0cce2d6 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -273,7 +273,7 @@ class LinkCable { _state.IRQFlag = false; for (u32 i = 0; i < LINK_CABLE_MAX_PLAYERS; i++) { - if (!_state.msgFlags[i]) + if (isOnline(i) && !_state.msgFlags[i]) _state.msgTimeouts[i]++; _state.msgFlags[i] = false; } From 52dc689dabce05fc55a4c3be0599f60840905f09 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 20:14:42 -0300 Subject: [PATCH 171/195] Adding prefixes to enums in C bindings --- lib/c_bindings/C_LinkCable.h | 8 +- lib/c_bindings/C_LinkMobile.cpp | 61 +++++++++++++--- lib/c_bindings/C_LinkMobile.h | 121 ++++++++++++++++++++++++------- lib/c_bindings/C_LinkRawCable.h | 14 ++-- lib/c_bindings/C_LinkSPI.h | 14 ++-- lib/c_bindings/C_LinkUART.h | 19 +++-- lib/c_bindings/C_LinkUniversal.h | 21 +++--- 7 files changed, 190 insertions(+), 68 deletions(-) diff --git a/lib/c_bindings/C_LinkCable.h b/lib/c_bindings/C_LinkCable.h index 1f250bd..d598a42 100644 --- a/lib/c_bindings/C_LinkCable.h +++ b/lib/c_bindings/C_LinkCable.h @@ -17,10 +17,10 @@ typedef void* C_LinkCableHandle; #define C_LINK_CABLE_NO_DATA 0x0 typedef enum { - C_BAUD_RATE_0, // 9600 bps - C_BAUD_RATE_1, // 38400 bps - C_BAUD_RATE_2, // 57600 bps - C_BAUD_RATE_3 // 115200 bps + C_LINK_CABLE_BAUD_RATE_0, // 9600 bps + C_LINK_CABLE_BAUD_RATE_1, // 38400 bps + C_LINK_CABLE_BAUD_RATE_2, // 57600 bps + C_LINK_CABLE_BAUD_RATE_3 // 115200 bps } C_LinkCable_BaudRate; C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate, diff --git a/lib/c_bindings/C_LinkMobile.cpp b/lib/c_bindings/C_LinkMobile.cpp index 1a2f462..9efd310 100644 --- a/lib/c_bindings/C_LinkMobile.cpp +++ b/lib/c_bindings/C_LinkMobile.cpp @@ -39,7 +39,7 @@ bool C_LinkMobile_callISP(C_LinkMobileHandle handle, bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle, const char* domainName, - C_LinkMobileDNSQuery* result) { + C_LinkMobile_DNSQuery* result) { return static_cast(handle)->dnsQuery( domainName, reinterpret_cast(result)); } @@ -47,25 +47,25 @@ bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle, bool C_LinkMobile_openConnection(C_LinkMobileHandle handle, const u8* ip, u16 port, - C_LinkMobileConnectionType type, - C_LinkMobileOpenConn* result) { + C_LinkMobile_ConnectionType connectionType, + C_LinkMobile_OpenConn* result) { return static_cast(handle)->openConnection( - ip, port, static_cast(type), + ip, port, static_cast(connectionType), reinterpret_cast(result)); } bool C_LinkMobile_closeConnection(C_LinkMobileHandle handle, u8 connectionId, - C_LinkMobileConnectionType type, - C_LinkMobileCloseConn* result) { + C_LinkMobile_ConnectionType connectionType, + C_LinkMobile_CloseConn* result) { return static_cast(handle)->closeConnection( - connectionId, static_cast(type), + connectionId, static_cast(connectionType), reinterpret_cast(result)); } bool C_LinkMobile_transfer(C_LinkMobileHandle handle, - C_LinkMobileDataTransfer dataToSend, - C_LinkMobileDataTransfer* result, + C_LinkMobile_DataTransfer dataToSend, + C_LinkMobile_DataTransfer* result, u8 connectionId) { return static_cast(handle)->transfer( *reinterpret_cast(&dataToSend), @@ -81,6 +81,13 @@ bool C_LinkMobile_hangUp(C_LinkMobileHandle handle) { return static_cast(handle)->hangUp(); } +bool C_LinkMobile_readConfiguration( + C_LinkMobileHandle handle, + C_LinkMobile_ConfigurationData* configurationData) { + return static_cast(handle)->readConfiguration( + *reinterpret_cast(configurationData)); +} + C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle) { return static_cast( static_cast(handle)->getState()); @@ -91,6 +98,42 @@ C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle) { static_cast(handle)->getRole()); } +int C_LinkMobile_isConfigurationValid(C_LinkMobileHandle handle) { + return static_cast(handle)->isConfigurationValid(); +} + +bool C_LinkMobile_isConnectedP2P(C_LinkMobileHandle handle) { + return static_cast(handle)->isConnectedP2P(); +} + +bool C_LinkMobile_isConnectedPPP(C_LinkMobileHandle handle) { + return static_cast(handle)->isConnectedPPP(); +} + +bool C_LinkMobile_isSessionActive(C_LinkMobileHandle handle) { + return static_cast(handle)->isSessionActive(); +} + +bool C_LinkMobile_canShutdown(C_LinkMobileHandle handle) { + return static_cast(handle)->canShutdown(); +} + +C_LinkMobile_DataSize C_LinkMobile_getDataSize(C_LinkMobileHandle handle) { + return static_cast( + static_cast(handle)->getDataSize()); +} + +C_LinkMobile_Error C_LinkMobile_getError(C_LinkMobileHandle handle) { + LinkMobile::Error error = static_cast(handle)->getError(); + return {static_cast(error.type), + static_cast(error.state), + error.cmdIsSending, + error.cmdId, + static_cast(error.cmdResult), + error.cmdErrorCode, + error.reqType}; +} + void C_LinkMobile_onVBlank(C_LinkMobileHandle handle) { static_cast(handle)->_onVBlank(); } diff --git a/lib/c_bindings/C_LinkMobile.h b/lib/c_bindings/C_LinkMobile.h index 7729836..0c780af 100644 --- a/lib/c_bindings/C_LinkMobile.h +++ b/lib/c_bindings/C_LinkMobile.h @@ -42,40 +42,98 @@ typedef enum { C_LINK_MOBILE_STATE_SHUTDOWN } C_LinkMobile_State; -typedef enum { +enum C_LinkMobile_Role { C_LINK_MOBILE_ROLE_NO_P2P_CONNECTION, C_LINK_MOBILE_ROLE_CALLER, C_LINK_MOBILE_ROLE_RECEIVER -} C_LinkMobile_Role; +}; -typedef enum { +enum C_LinkMobile_ConnectionType { C_LINK_MOBILE_CONNECTION_TYPE_TCP, C_LINK_MOBILE_CONNECTION_TYPE_UDP -} C_LinkMobileConnectionType; +}; + +typedef enum { + C_LINK_MOBILE_ERROR_TYPE_NONE, + C_LINK_MOBILE_ERROR_TYPE_ADAPTER_NOT_CONNECTED, + C_LINK_MOBILE_ERROR_TYPE_PPP_LOGIN_FAILED, + C_LINK_MOBILE_ERROR_TYPE_COMMAND_FAILED, + C_LINK_MOBILE_ERROR_TYPE_WEIRD_RESPONSE, + C_LINK_MOBILE_ERROR_TYPE_TIMEOUT, + C_LINK_MOBILE_ERROR_TYPE_WTF +} C_LinkMobile_ErrorType; + +typedef enum { + C_LINK_MOBILE_COMMAND_RESULT_PENDING, + C_LINK_MOBILE_COMMAND_RESULT_SUCCESS, + C_LINK_MOBILE_COMMAND_RESULT_INVALID_DEVICE_ID, + C_LINK_MOBILE_COMMAND_RESULT_INVALID_COMMAND_ACK, + C_LINK_MOBILE_COMMAND_RESULT_INVALID_MAGIC_BYTES, + C_LINK_MOBILE_COMMAND_RESULT_WEIRD_DATA_SIZE, + C_LINK_MOBILE_COMMAND_RESULT_WRONG_CHECKSUM, + C_LINK_MOBILE_COMMAND_RESULT_ERROR_CODE, + C_LINK_MOBILE_COMMAND_RESULT_WEIRD_ERROR_CODE +} C_LinkMobile_CommandResult; typedef struct { - volatile bool completed; - bool success; + C_LinkMobile_ErrorType type; + C_LinkMobile_State state; + bool cmdIsSending; + u8 cmdId; + C_LinkMobile_CommandResult cmdResult; + u32 cmdErrorCode; + int reqType; +} C_LinkMobile_Error; + +typedef struct { + u32 connectionId; + bool completed; + u32 size; u8 data[254]; - u8 size; -} C_LinkMobileDataTransfer; +} C_LinkMobile_DataTransfer; typedef struct { - volatile bool completed; + u32 connectionId; bool success; +} C_LinkMobile_OpenConn; + +typedef struct { + u32 connectionId; + bool success; +} C_LinkMobile_CloseConn; + +typedef struct { u8 ipv4[4]; -} C_LinkMobileDNSQuery; + bool success; + bool completed; +} C_LinkMobile_DNSQuery; typedef struct { - volatile bool completed; - bool success; - u8 connectionId; -} C_LinkMobileOpenConn; + char magic[2]; + u8 registrationState; + u8 _unused1_; + u8 primaryDNS[4]; + u8 secondaryDNS[4]; + char loginId[10]; + u8 _unused2_[22]; + char email[24]; + u8 _unused3_[6]; + char smtpServer[20]; + char popServer[19]; + u8 _unused4_[5]; + u8 configurationSlot1[24]; + u8 configurationSlot2[24]; + u8 configurationSlot3[24]; + u8 checksumHigh; + u8 checksumLow; -typedef struct { - volatile bool completed; - bool success; -} C_LinkMobileCloseConn; + char _ispNumber1[16 + 1]; +} C_LinkMobile_ConfigurationData; + +typedef enum { + C_LINK_MOBILE_SIZE_32BIT, + C_LINK_MOBILE_SIZE_8BIT +} C_LinkMobile_DataSize; C_LinkMobileHandle C_LinkMobile_create(u32 timeout, u8 timerId); void C_LinkMobile_destroy(C_LinkMobileHandle handle); @@ -92,26 +150,37 @@ bool C_LinkMobile_callISP(C_LinkMobileHandle handle, bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle, const char* domainName, - C_LinkMobileDNSQuery* result); + C_LinkMobile_DNSQuery* result); bool C_LinkMobile_openConnection(C_LinkMobileHandle handle, const u8* ip, u16 port, - C_LinkMobileConnectionType type, - C_LinkMobileOpenConn* result); + C_LinkMobile_ConnectionType connectionType, + C_LinkMobile_OpenConn* result); bool C_LinkMobile_closeConnection(C_LinkMobileHandle handle, u8 connectionId, - C_LinkMobileConnectionType type, - C_LinkMobileCloseConn* result); - + C_LinkMobile_ConnectionType connectionType, + C_LinkMobile_CloseConn* result); bool C_LinkMobile_transfer(C_LinkMobileHandle handle, - C_LinkMobileDataTransfer dataToSend, - C_LinkMobileDataTransfer* result, + C_LinkMobile_DataTransfer dataToSend, + C_LinkMobile_DataTransfer* result, u8 connectionId); + bool C_LinkMobile_waitFor(C_LinkMobileHandle handle, void* asyncRequest); bool C_LinkMobile_hangUp(C_LinkMobileHandle handle); +bool C_LinkMobile_readConfiguration( + C_LinkMobileHandle handle, + C_LinkMobile_ConfigurationData* configurationData); + C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle); C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle); +int C_LinkMobile_isConfigurationValid(C_LinkMobileHandle handle); +bool C_LinkMobile_isConnectedP2P(C_LinkMobileHandle handle); +bool C_LinkMobile_isConnectedPPP(C_LinkMobileHandle handle); +bool C_LinkMobile_isSessionActive(C_LinkMobileHandle handle); +bool C_LinkMobile_canShutdown(C_LinkMobileHandle handle); +C_LinkMobile_DataSize C_LinkMobile_getDataSize(C_LinkMobileHandle handle); +C_LinkMobile_Error C_LinkMobile_getError(C_LinkMobileHandle handle); void C_LinkMobile_onVBlank(C_LinkMobileHandle handle); void C_LinkMobile_onSerial(C_LinkMobileHandle handle); diff --git a/lib/c_bindings/C_LinkRawCable.h b/lib/c_bindings/C_LinkRawCable.h index ac81124..ff302b2 100644 --- a/lib/c_bindings/C_LinkRawCable.h +++ b/lib/c_bindings/C_LinkRawCable.h @@ -13,16 +13,16 @@ typedef void* C_LinkRawCableHandle; #define C_LINK_RAW_CABLE_DISCONNECTED 0xffff typedef enum { - C_BAUD_RATE_0, // 9600 bps - C_BAUD_RATE_1, // 38400 bps - C_BAUD_RATE_2, // 57600 bps - C_BAUD_RATE_3 // 115200 bps + C_LINK_RAW_CABLE_BAUD_RATE_0, // 9600 bps + C_LINK_RAW_CABLE_BAUD_RATE_1, // 38400 bps + C_LINK_RAW_CABLE_BAUD_RATE_2, // 57600 bps + C_LINK_RAW_CABLE_BAUD_RATE_3 // 115200 bps } C_LinkRawCable_BaudRate; typedef enum { - C_ASYNC_STATE_IDLE, - C_ASYNC_STATE_WAITING, - C_ASYNC_STATE_READY + C_LINK_RAW_CABLE_ASYNC_STATE_IDLE, + C_LINK_RAW_CABLE_ASYNC_STATE_WAITING, + C_LINK_RAW_CABLE_ASYNC_STATE_READY } C_LinkRawCable_AsyncState; typedef struct { diff --git a/lib/c_bindings/C_LinkSPI.h b/lib/c_bindings/C_LinkSPI.h index 0b20275..16155d6 100644 --- a/lib/c_bindings/C_LinkSPI.h +++ b/lib/c_bindings/C_LinkSPI.h @@ -14,17 +14,17 @@ typedef void* C_LinkSPIHandle; #define C_LINK_SPI_NO_DATA LINK_SPI_NO_DATA_32 typedef enum { - C_MODE_SLAVE, - C_MODE_MASTER_256KBPS, - C_MODE_MASTER_2MBPS + C_LINK_SPI_MODE_SLAVE, + C_LINK_SPI_MODE_MASTER_256KBPS, + C_LINK_SPI_MODE_MASTER_2MBPS } C_LinkSPI_Mode; -typedef enum { C_SIZE_32BIT, C_SIZE_8BIT } C_LinkSPI_DataSize; +typedef enum { C_LINK_SPI_SIZE_32BIT, C_LINK_SPI_SIZE_8BIT } C_LinkSPI_DataSize; typedef enum { - C_ASYNC_STATE_IDLE, - C_ASYNC_STATE_WAITING, - C_ASYNC_STATE_READY + C_LINK_SPI_ASYNC_STATE_IDLE, + C_LINK_SPI_ASYNC_STATE_WAITING, + C_LINK_SPI_ASYNC_STATE_READY } C_LinkSPI_AsyncState; C_LinkSPIHandle C_LinkSPI_create(); diff --git a/lib/c_bindings/C_LinkUART.h b/lib/c_bindings/C_LinkUART.h index 521aec8..a96ddc1 100644 --- a/lib/c_bindings/C_LinkUART.h +++ b/lib/c_bindings/C_LinkUART.h @@ -10,15 +10,22 @@ extern "C" { typedef void* C_LinkUARTHandle; typedef enum { - C_BAUD_RATE_0, // 9600 bps - C_BAUD_RATE_1, // 38400 bps - C_BAUD_RATE_2, // 57600 bps - C_BAUD_RATE_3 // 115200 bps + C_LINK_UART_BAUD_RATE_0, // 9600 bps + C_LINK_UART_BAUD_RATE_1, // 38400 bps + C_LINK_UART_BAUD_RATE_2, // 57600 bps + C_LINK_UART_BAUD_RATE_3 // 115200 bps } C_LinkUART_BaudRate; -typedef enum { C_SIZE_7_BITS, C_SIZE_8_BITS } C_LinkUART_DataSize; +typedef enum { + C_LINK_UART_SIZE_7_BITS, + C_LINK_UART_SIZE_8_BITS +} C_LinkUART_DataSize; -typedef enum { C_PARITY_NO, C_PARITY_EVEN, C_PARITY_ODD } C_LinkUART_Parity; +typedef enum { + C_LINK_UART_PARITY_NO, + C_LINK_UART_PARITY_EVEN, + C_LINK_UART_PARITY_ODD +} C_LinkUART_Parity; C_LinkUARTHandle C_LinkUART_create(); void C_LinkUART_destroy(C_LinkUARTHandle handle); diff --git a/lib/c_bindings/C_LinkUniversal.h b/lib/c_bindings/C_LinkUniversal.h index c95be34..0f67bdf 100644 --- a/lib/c_bindings/C_LinkUniversal.h +++ b/lib/c_bindings/C_LinkUniversal.h @@ -14,19 +14,22 @@ typedef void* C_LinkUniversalHandle; #define C_LINK_UNIVERSAL_NO_DATA 0x0 typedef enum { - C_STATE_INITIALIZING, - C_STATE_WAITING, - C_STATE_CONNECTED + C_LINK_UNIVERSAL_STATE_INITIALIZING, + C_LINK_UNIVERSAL_STATE_WAITING, + C_LINK_UNIVERSAL_STATE_CONNECTED } C_LinkUniversal_State; -typedef enum { C_MODE_LINK_CABLE, C_MODE_LINK_WIRELESS } C_LinkUniversal_Mode; +typedef enum { + C_LINK_UNIVERSAL_MODE_LINK_CABLE, + C_LINK_UNIVERSAL_MODE_LINK_WIRELESS +} C_LinkUniversal_Mode; typedef enum { - C_PROTOCOL_AUTODETECT, - C_PROTOCOL_CABLE, - C_PROTOCOL_WIRELESS_AUTO, - C_PROTOCOL_WIRELESS_SERVER, - C_PROTOCOL_WIRELESS_CLIENT + C_LINK_UNIVERSAL_PROTOCOL_AUTODETECT, + C_LINK_UNIVERSAL_PROTOCOL_CABLE, + C_LINK_UNIVERSAL_PROTOCOL_WIRELESS_AUTO, + C_LINK_UNIVERSAL_PROTOCOL_WIRELESS_SERVER, + C_LINK_UNIVERSAL_PROTOCOL_WIRELESS_CLIENT } C_LinkUniversal_Protocol; typedef struct { From 4e606de2b3f9d986584984cbf7463f6c0ac81ed2 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 21:30:03 -0300 Subject: [PATCH 172/195] Fixing LinkMobile C binding --- lib/LinkMobile.hpp | 4 +--- lib/c_bindings/C_LinkMobile.cpp | 2 +- lib/c_bindings/C_LinkMobile.h | 28 ++++++++++++++++------------ 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index ddee9cd..e90423e 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -216,9 +216,7 @@ class LinkMobile { u8 connectionId = 0; }; - struct CloseConn : public AsyncRequest { - bool success = false; - }; + struct CloseConn : public AsyncRequest {}; struct DataTransfer : public AsyncRequest { u8 data[LINK_MOBILE_MAX_USER_TRANSFER_LENGTH] = {}; diff --git a/lib/c_bindings/C_LinkMobile.cpp b/lib/c_bindings/C_LinkMobile.cpp index 9efd310..8fc86cb 100644 --- a/lib/c_bindings/C_LinkMobile.cpp +++ b/lib/c_bindings/C_LinkMobile.cpp @@ -127,10 +127,10 @@ C_LinkMobile_Error C_LinkMobile_getError(C_LinkMobileHandle handle) { LinkMobile::Error error = static_cast(handle)->getError(); return {static_cast(error.type), static_cast(error.state), - error.cmdIsSending, error.cmdId, static_cast(error.cmdResult), error.cmdErrorCode, + error.cmdIsSending, error.reqType}; } diff --git a/lib/c_bindings/C_LinkMobile.h b/lib/c_bindings/C_LinkMobile.h index 0c780af..271f515 100644 --- a/lib/c_bindings/C_LinkMobile.h +++ b/lib/c_bindings/C_LinkMobile.h @@ -78,35 +78,39 @@ typedef enum { typedef struct { C_LinkMobile_ErrorType type; C_LinkMobile_State state; - bool cmdIsSending; u8 cmdId; C_LinkMobile_CommandResult cmdResult; - u32 cmdErrorCode; + u8 cmdErrorCode; + bool cmdIsSending; int reqType; } C_LinkMobile_Error; typedef struct { - u32 connectionId; - bool completed; - u32 size; - u8 data[254]; -} C_LinkMobile_DataTransfer; + volatile bool completed; + bool success; + + u8 ipv4[4]; +} C_LinkMobile_DNSQuery; typedef struct { - u32 connectionId; + volatile bool completed; bool success; + + u32 connectionId; } C_LinkMobile_OpenConn; typedef struct { - u32 connectionId; + volatile bool completed; bool success; } C_LinkMobile_CloseConn; typedef struct { - u8 ipv4[4]; + volatile bool completed; bool success; - bool completed; -} C_LinkMobile_DNSQuery; + + u8 data[C_LINK_MOBILE_MAX_USER_TRANSFER_LENGTH]; + u8 size; +} C_LinkMobile_DataTransfer; typedef struct { char magic[2]; From b4ca3d113b53c39c017143af798cc536467a7252 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 22:08:20 -0300 Subject: [PATCH 173/195] FIX: Adding volatile to LinkPS2Mouse bools --- lib/LinkPS2Mouse.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index c8d922b..650497a 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -213,10 +213,10 @@ class LinkPS2Mouse { return data; } - bool readBit() { + volatile bool readBit() { while (getClock()) ; - bool bit = getData(); + volatile bool bit = getData(); while (!getClock()) ; return bit; @@ -240,11 +240,11 @@ class LinkPS2Mouse { Link::_REG_TM[waitTimerId].cnt = 0; } - bool getClock() { + volatile bool getClock() { Link::_REG_RCNT &= ~SI_DIRECTION; return (Link::_REG_RCNT & SI_DATA) >> 0; } - bool getData() { + volatile bool getData() { Link::_REG_RCNT &= ~SO_DIRECTION; return (Link::_REG_RCNT & SO_DATA) >> 1; } From 75dfb225e62da393c50d0df63604a9c8006627f7 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 23:59:37 -0300 Subject: [PATCH 174/195] FIX: Using SWI wrappers from gba-hpp. LinkPS2Mouse is time critical and likes them better --- .licenses/gba-hpp.md | 17 +++++++++++++++++ lib/_link_common.hpp | 33 ++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 .licenses/gba-hpp.md diff --git a/.licenses/gba-hpp.md b/.licenses/gba-hpp.md new file mode 100644 index 0000000..22bdd64 --- /dev/null +++ b/.licenses/gba-hpp.md @@ -0,0 +1,17 @@ +gba-hpp is available under the [zlib license](https://www.zlib.net/zlib_license.html) : + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 464d215..f4b4614 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -15,7 +15,7 @@ /** * @brief This namespace contains shared code between all libraries. - * \warning Most of these things are borrowed from libtonc. + * \warning Most of these things are borrowed from libtonc and gba-hpp. */ namespace Link { @@ -114,22 +114,25 @@ static constexpr u16 _TIMER_IRQ_IDS[] = {_IRQ_TIMER0, _IRQ_TIMER1, _IRQ_TIMER2, // SWI -static inline __attribute__((always_inline)) void _IntrWait(u32 flagClear, - u32 irq) { - register u32 r0 asm("r0") = flagClear; - register u32 r1 asm("r1") = irq; - - asm volatile("swi 0x04\n" : : "r"(r0), "r"(r1)); +static inline __attribute__((always_inline)) void _IntrWait( + bool clearCurrent, + u32 flags) noexcept { + register auto r0 asm("r0") = clearCurrent; + register auto r1 asm("r1") = flags; + asm volatile inline("swi 0x4 << ((1f - . == 4) * -16); 1:" + : "+r"(r0), "+r"(r1)::"r3"); } -static inline __attribute__((always_inline)) int _MultiBoot(_MultiBootParam* mb, - u32 mode) { - register _MultiBootParam* r0 asm("r0") = mb; - register u32 r1 asm("r1") = mode; - - asm volatile("swi 0x25\n" : "+r"(r0) : "r"(r1)); - - return (int)r0; +static inline auto _MultiBoot(const _MultiBootParam* param, + u32 mbmode) noexcept { + register union { + const _MultiBootParam* ptr; + int res; + } r0 asm("r0") = {param}; + register auto r1 asm("r1") = mbmode; + asm volatile inline("swi 0x25 << ((1f - . == 4) * -16); 1:" + : "+r"(r0), "+r"(r1)::"r3"); + return r0.res; } // Helpers From d46856171883226a0fc60550838aeecf3f7c5bcb Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 00:36:47 -0300 Subject: [PATCH 175/195] Fixing more issues with C bindings --- lib/c_bindings/C_LinkCable.cpp | 4 ++ lib/c_bindings/C_LinkCable.h | 1 + lib/c_bindings/C_LinkCableMultiboot.cpp | 2 +- lib/c_bindings/C_LinkCableMultiboot.h | 2 +- lib/c_bindings/C_LinkGPIO.cpp | 2 +- lib/c_bindings/C_LinkGPIO.h | 2 +- lib/c_bindings/C_LinkMobile.cpp | 4 ++ lib/c_bindings/C_LinkMobile.h | 1 + lib/c_bindings/C_LinkRawWireless.cpp | 10 ++-- lib/c_bindings/C_LinkRawWireless.h | 39 ++++++++-------- lib/c_bindings/C_LinkUART.h | 2 +- lib/c_bindings/C_LinkUniversal.cpp | 37 +++++++++------ lib/c_bindings/C_LinkUniversal.h | 44 +++++++++--------- lib/c_bindings/C_LinkWireless.cpp | 61 +++++++++++++++++++++---- lib/c_bindings/C_LinkWireless.h | 10 ++-- 15 files changed, 143 insertions(+), 78 deletions(-) diff --git a/lib/c_bindings/C_LinkCable.cpp b/lib/c_bindings/C_LinkCable.cpp index 73fde57..3894b13 100644 --- a/lib/c_bindings/C_LinkCable.cpp +++ b/lib/c_bindings/C_LinkCable.cpp @@ -3,6 +3,10 @@ extern "C" { +C_LinkCableHandle C_LinkCable_createDefault() { + return new LinkCable(); +} + C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate, u32 timeout, u16 interval, diff --git a/lib/c_bindings/C_LinkCable.h b/lib/c_bindings/C_LinkCable.h index d598a42..578debf 100644 --- a/lib/c_bindings/C_LinkCable.h +++ b/lib/c_bindings/C_LinkCable.h @@ -23,6 +23,7 @@ typedef enum { C_LINK_CABLE_BAUD_RATE_3 // 115200 bps } C_LinkCable_BaudRate; +C_LinkCableHandle C_LinkCable_createDefault(); C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate, u32 timeout, u16 interval, diff --git a/lib/c_bindings/C_LinkCableMultiboot.cpp b/lib/c_bindings/C_LinkCableMultiboot.cpp index 13d7847..d5251f5 100644 --- a/lib/c_bindings/C_LinkCableMultiboot.cpp +++ b/lib/c_bindings/C_LinkCableMultiboot.cpp @@ -3,7 +3,7 @@ extern "C" { -C_LinkCableMultibootHandle C_LinkCableMultiboot_create(void) { +C_LinkCableMultibootHandle C_LinkCableMultiboot_create() { return new LinkCableMultiboot(); } diff --git a/lib/c_bindings/C_LinkCableMultiboot.h b/lib/c_bindings/C_LinkCableMultiboot.h index 2235427..fc9cc8b 100644 --- a/lib/c_bindings/C_LinkCableMultiboot.h +++ b/lib/c_bindings/C_LinkCableMultiboot.h @@ -21,7 +21,7 @@ typedef enum { typedef void* C_LinkCableMultibootHandle; -C_LinkCableMultibootHandle C_LinkCableMultiboot_create(void); +C_LinkCableMultibootHandle C_LinkCableMultiboot_create(); void C_LinkCableMultiboot_destroy(C_LinkCableMultibootHandle handle); C_LinkCableMultiboot_Result C_LinkCableMultiboot_sendRom( diff --git a/lib/c_bindings/C_LinkGPIO.cpp b/lib/c_bindings/C_LinkGPIO.cpp index 747863c..545358b 100644 --- a/lib/c_bindings/C_LinkGPIO.cpp +++ b/lib/c_bindings/C_LinkGPIO.cpp @@ -3,7 +3,7 @@ extern "C" { -C_LinkGPIOHandle C_LinkGPIO_create(void) { +C_LinkGPIOHandle C_LinkGPIO_create() { return new LinkGPIO(); } diff --git a/lib/c_bindings/C_LinkGPIO.h b/lib/c_bindings/C_LinkGPIO.h index d3b4614..2afd919 100644 --- a/lib/c_bindings/C_LinkGPIO.h +++ b/lib/c_bindings/C_LinkGPIO.h @@ -21,7 +21,7 @@ typedef enum { C_LINK_GPIO_DIRECTION_OUTPUT } C_LinkGPIO_Direction; -C_LinkGPIOHandle C_LinkGPIO_create(void); +C_LinkGPIOHandle C_LinkGPIO_create(); void C_LinkGPIO_destroy(C_LinkGPIOHandle handle); void C_LinkGPIO_reset(C_LinkGPIOHandle handle); diff --git a/lib/c_bindings/C_LinkMobile.cpp b/lib/c_bindings/C_LinkMobile.cpp index 8fc86cb..ab23b92 100644 --- a/lib/c_bindings/C_LinkMobile.cpp +++ b/lib/c_bindings/C_LinkMobile.cpp @@ -3,6 +3,10 @@ extern "C" { +C_LinkMobileHandle C_LinkMobile_createDefault() { + return new LinkMobile(); +} + C_LinkMobileHandle C_LinkMobile_create(u32 timeout, u8 timerId) { return new LinkMobile(timeout, timerId); } diff --git a/lib/c_bindings/C_LinkMobile.h b/lib/c_bindings/C_LinkMobile.h index 271f515..b835184 100644 --- a/lib/c_bindings/C_LinkMobile.h +++ b/lib/c_bindings/C_LinkMobile.h @@ -139,6 +139,7 @@ typedef enum { C_LINK_MOBILE_SIZE_8BIT } C_LinkMobile_DataSize; +C_LinkMobileHandle C_LinkMobile_createDefault(); C_LinkMobileHandle C_LinkMobile_create(u32 timeout, u8 timerId); void C_LinkMobile_destroy(C_LinkMobileHandle handle); diff --git a/lib/c_bindings/C_LinkRawWireless.cpp b/lib/c_bindings/C_LinkRawWireless.cpp index 8445c6b..3ec96f8 100644 --- a/lib/c_bindings/C_LinkRawWireless.cpp +++ b/lib/c_bindings/C_LinkRawWireless.cpp @@ -2,7 +2,7 @@ #include "../LinkRawWireless.hpp" extern "C" { -C_LinkRawWirelessHandle C_LinkRawWireless_create(void) { +C_LinkRawWirelessHandle C_LinkRawWireless_create() { return new LinkRawWireless(); } @@ -199,16 +199,16 @@ bool C_LinkRawWireless_wait(C_LinkRawWirelessHandle handle, return success; } +u32 C_LinkRawWireless_getDeviceTransferLength(C_LinkRawWirelessHandle handle) { + return static_cast(handle)->getDeviceTransferLength(); +} + C_LinkRawWireless_State C_LinkRawWireless_getState( C_LinkRawWirelessHandle handle) { return static_cast( static_cast(handle)->getState()); } -u32 C_LinkRawWireless_getDeviceTransferLength(C_LinkRawWirelessHandle handle) { - return static_cast(handle)->getDeviceTransferLength(); -} - bool C_LinkRawWireless_isConnected(C_LinkRawWirelessHandle handle) { return static_cast(handle)->isConnected(); } diff --git a/lib/c_bindings/C_LinkRawWireless.h b/lib/c_bindings/C_LinkRawWireless.h index 6dfa0c2..2e79687 100644 --- a/lib/c_bindings/C_LinkRawWireless.h +++ b/lib/c_bindings/C_LinkRawWireless.h @@ -7,6 +7,8 @@ extern "C" { #include +typedef void* C_LinkRawWirelessHandle; + #define C_LINK_RAW_WIRELESS_MAX_PLAYERS 5 #define C_LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH 30 #define C_LINK_RAW_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH 4 @@ -14,6 +16,7 @@ extern "C" { #define C_LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH 14 #define C_LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH 8 #define C_LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH 23 +#define C_LINK_RAW_WIRELESS_SETUP_MAGIC 0x003c0000 #define C_LINK_RAW_WIRELESS_MAX_SERVERS 4 @@ -26,12 +29,6 @@ typedef enum { C_LINK_RAW_WIRELESS_STATE_CONNECTED } C_LinkRawWireless_State; -typedef enum { - C_LINK_RAW_WIRELESS_CONNECTION_PHASE_STILL_CONNECTING, - C_LINK_RAW_WIRELESS_CONNECTION_PHASE_ERROR, - C_LINK_RAW_WIRELESS_CONNECTION_PHASE_SUCCESS -} C_LinkRawWireless_ConnectionPhase; - typedef struct { bool success; u32 responses[C_LINK_RAW_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH]; @@ -45,6 +42,14 @@ typedef struct { u32 paramsSize; } C_LinkRawWireless_RemoteCommand; +typedef struct { + u16 id; + u16 gameId; + char gameName[C_LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; + char userName[C_LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH + 1]; + u8 nextClientNumber; +} C_LinkRawWireless_Server; + typedef struct { u16 deviceId; u8 clientNumber; @@ -64,18 +69,16 @@ typedef struct { } C_LinkRawWireless_AcceptConnectionsResponse; typedef struct { - u16 id; - u16 gameId; - char gameName[C_LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; - char userName[C_LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH + 1]; - u8 nextClientNumber; -} C_LinkRawWirelessServer; - -typedef struct { - C_LinkRawWirelessServer servers[C_LINK_RAW_WIRELESS_MAX_SERVERS]; + C_LinkRawWireless_Server servers[C_LINK_RAW_WIRELESS_MAX_SERVERS]; u32 serversSize; } C_LinkRawWireless_BroadcastReadPollResponse; +typedef enum { + C_LINK_RAW_WIRELESS_CONNECTION_PHASE_STILL_CONNECTING, + C_LINK_RAW_WIRELESS_CONNECTION_PHASE_ERROR, + C_LINK_RAW_WIRELESS_CONNECTION_PHASE_SUCCESS +} C_LinkRawWireless_ConnectionPhase; + typedef struct { C_LinkRawWireless_ConnectionPhase phase; u8 assignedClientNumber; @@ -87,9 +90,7 @@ typedef struct { u32 dataSize; } C_LinkRawWireless_ReceiveDataResponse; -typedef void* C_LinkRawWirelessHandle; - -C_LinkRawWirelessHandle C_LinkRawWireless_create(void); +C_LinkRawWirelessHandle C_LinkRawWireless_create(); void C_LinkRawWireless_destroy(C_LinkRawWirelessHandle handle); bool C_LinkRawWireless_isActive(C_LinkRawWirelessHandle handle); @@ -141,9 +142,9 @@ bool C_LinkRawWireless_receiveData( bool C_LinkRawWireless_wait(C_LinkRawWirelessHandle handle, C_LinkRawWireless_RemoteCommand* remoteCommand); +u32 C_LinkRawWireless_getDeviceTransferLength(C_LinkRawWirelessHandle handle); C_LinkRawWireless_State C_LinkRawWireless_getState( C_LinkRawWirelessHandle handle); -u32 C_LinkRawWireless_getDeviceTransferLength(C_LinkRawWirelessHandle handle); bool C_LinkRawWireless_isConnected(C_LinkRawWirelessHandle handle); bool C_LinkRawWireless_isSessionActive(C_LinkRawWirelessHandle handle); u8 C_LinkRawWireless_playerCount(C_LinkRawWirelessHandle handle); diff --git a/lib/c_bindings/C_LinkUART.h b/lib/c_bindings/C_LinkUART.h index a96ddc1..8803b54 100644 --- a/lib/c_bindings/C_LinkUART.h +++ b/lib/c_bindings/C_LinkUART.h @@ -67,7 +67,7 @@ void C_LinkUART_onSerial(C_LinkUARTHandle handle); extern C_LinkUARTHandle cLinkUART; -inline void C_LINK_SPI_ISR_SERIAL() { +inline void C_LINK_UART_ISR_SERIAL() { C_LinkUART_onSerial(cLinkUART); } diff --git a/lib/c_bindings/C_LinkUniversal.cpp b/lib/c_bindings/C_LinkUniversal.cpp index 1863839..02a2e71 100644 --- a/lib/c_bindings/C_LinkUniversal.cpp +++ b/lib/c_bindings/C_LinkUniversal.cpp @@ -3,6 +3,10 @@ extern "C" { +C_LinkUniversalHandle C_LinkUniversal_createDefault() { + return new LinkUniversal(); +} + C_LinkUniversalHandle C_LinkUniversal_create( C_LinkUniversal_Protocol protocol, const char* gameName, @@ -11,11 +15,14 @@ C_LinkUniversalHandle C_LinkUniversal_create( int randomSeed) { return new LinkUniversal( static_cast(protocol), gameName, - {static_cast(cableOptions.baudRate), - cableOptions.timeout, cableOptions.interval, cableOptions.sendTimerId}, - {wirelessOptions.retransmission, wirelessOptions.maxPlayers, - wirelessOptions.timeout, wirelessOptions.interval, - wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId}, + LinkUniversal::CableOptions{ + static_cast(cableOptions.baudRate), + cableOptions.timeout, cableOptions.interval, + cableOptions.sendTimerId}, + LinkUniversal::WirelessOptions{ + wirelessOptions.retransmission, wirelessOptions.maxPlayers, + wirelessOptions.timeout, wirelessOptions.interval, + wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId}, randomSeed); } @@ -39,11 +46,11 @@ bool C_LinkUniversal_isConnected(C_LinkUniversalHandle handle) { return static_cast(handle)->isConnected(); } -uint8_t C_LinkUniversal_playerCount(C_LinkUniversalHandle handle) { +u8 C_LinkUniversal_playerCount(C_LinkUniversalHandle handle) { return static_cast(handle)->playerCount(); } -uint8_t C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle) { +u8 C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle) { return static_cast(handle)->currentPlayerId(); } @@ -51,29 +58,29 @@ void C_LinkUniversal_sync(C_LinkUniversalHandle handle) { static_cast(handle)->sync(); } -bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, uint8_t playerId) { +bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, u8 playerId) { return static_cast(handle)->waitFor(playerId); } bool C_LinkUniversal_waitForWithCancel(C_LinkUniversalHandle handle, - uint8_t playerId, + u8 playerId, bool (*cancel)()) { return static_cast(handle)->waitFor(playerId, cancel); } -bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, uint8_t playerId) { +bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, u8 playerId) { return static_cast(handle)->canRead(playerId); } -uint16_t C_LinkUniversal_read(C_LinkUniversalHandle handle, uint8_t playerId) { +u16 C_LinkUniversal_read(C_LinkUniversalHandle handle, u8 playerId) { return static_cast(handle)->read(playerId); } -uint16_t C_LinkUniversal_peek(C_LinkUniversalHandle handle, uint8_t playerId) { +u16 C_LinkUniversal_peek(C_LinkUniversalHandle handle, u8 playerId) { return static_cast(handle)->peek(playerId); } -bool C_LinkUniversal_send(C_LinkUniversalHandle handle, uint16_t data) { +bool C_LinkUniversal_send(C_LinkUniversalHandle handle, u16 data) { return static_cast(handle)->send(data); } @@ -99,11 +106,11 @@ void C_LinkUniversal_setProtocol(C_LinkUniversalHandle handle, static_cast(protocol)); } -uint32_t C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle) { +u32 C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle) { return static_cast(handle)->_getWaitCount(); } -uint32_t C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle) { +u32 C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle) { return static_cast(handle)->_getSubWaitCount(); } diff --git a/lib/c_bindings/C_LinkUniversal.h b/lib/c_bindings/C_LinkUniversal.h index 0f67bdf..16fc92c 100644 --- a/lib/c_bindings/C_LinkUniversal.h +++ b/lib/c_bindings/C_LinkUniversal.h @@ -5,8 +5,7 @@ extern "C" { #endif -#include -#include +#include typedef void* C_LinkUniversalHandle; @@ -33,21 +32,22 @@ typedef enum { } C_LinkUniversal_Protocol; typedef struct { - uint32_t baudRate; - uint32_t timeout; - uint16_t interval; - uint8_t sendTimerId; + u32 baudRate; + u32 timeout; + u16 interval; + u8 sendTimerId; } C_LinkUniversal_CableOptions; typedef struct { bool retransmission; - uint32_t maxPlayers; - uint32_t timeout; - uint16_t interval; - uint8_t sendTimerId; - int8_t asyncACKTimerId; + u32 maxPlayers; + u32 timeout; + u16 interval; + u8 sendTimerId; + s8 asyncACKTimerId; } C_LinkUniversal_WirelessOptions; +C_LinkUniversalHandle C_LinkUniversal_createDefault(); C_LinkUniversalHandle C_LinkUniversal_create( C_LinkUniversal_Protocol protocol, const char* gameName, @@ -61,19 +61,19 @@ void C_LinkUniversal_activate(C_LinkUniversalHandle handle); void C_LinkUniversal_deactivate(C_LinkUniversalHandle handle); bool C_LinkUniversal_isConnected(C_LinkUniversalHandle handle); -uint8_t C_LinkUniversal_playerCount(C_LinkUniversalHandle handle); -uint8_t C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle); +u8 C_LinkUniversal_playerCount(C_LinkUniversalHandle handle); +u8 C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle); void C_LinkUniversal_sync(C_LinkUniversalHandle handle); -bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, uint8_t playerId); +bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, u8 playerId); bool C_LinkUniversal_waitForWithCancel(C_LinkUniversalHandle handle, - uint8_t playerId, + u8 playerId, bool (*cancel)()); -bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, uint8_t playerId); -uint16_t C_LinkUniversal_read(C_LinkUniversalHandle handle, uint8_t playerId); -uint16_t C_LinkUniversal_peek(C_LinkUniversalHandle handle, uint8_t playerId); +bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, u8 playerId); +u16 C_LinkUniversal_read(C_LinkUniversalHandle handle, u8 playerId); +u16 C_LinkUniversal_peek(C_LinkUniversalHandle handle, u8 playerId); -bool C_LinkUniversal_send(C_LinkUniversalHandle handle, uint16_t data); +bool C_LinkUniversal_send(C_LinkUniversalHandle handle, u16 data); C_LinkUniversal_State C_LinkUniversal_getState(C_LinkUniversalHandle handle); C_LinkUniversal_Mode C_LinkUniversal_getMode(C_LinkUniversalHandle handle); C_LinkUniversal_Protocol C_LinkUniversal_getProtocol( @@ -82,8 +82,8 @@ C_LinkUniversal_Protocol C_LinkUniversal_getProtocol( void C_LinkUniversal_setProtocol(C_LinkUniversalHandle handle, C_LinkUniversal_Protocol protocol); -uint32_t C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle); -uint32_t C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle); +u32 C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle); +u32 C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle); void C_LinkUniversal_onVBlank(C_LinkUniversalHandle handle); void C_LinkUniversal_onSerial(C_LinkUniversalHandle handle); @@ -105,7 +105,7 @@ inline void C_LINK_UNIVERSAL_ISR_TIMER() { } inline void C_LINK_UNIVERSAL_ISR_ACK_TIMER() { - C_LinkUniversal_onTimer(cLinkUniversal); + C_LinkUniversal_onACKTimer(cLinkUniversal); } #ifdef __cplusplus diff --git a/lib/c_bindings/C_LinkWireless.cpp b/lib/c_bindings/C_LinkWireless.cpp index 9c7b3c9..f786def 100644 --- a/lib/c_bindings/C_LinkWireless.cpp +++ b/lib/c_bindings/C_LinkWireless.cpp @@ -3,6 +3,10 @@ extern "C" { +C_LinkWirelessHandle C_LinkWireless_createDefault() { + return new LinkWireless(); +} + C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, bool retransmission, u8 maxPlayers, @@ -35,8 +39,22 @@ bool C_LinkWireless_serve(C_LinkWirelessHandle handle, bool C_LinkWireless_getServers(C_LinkWirelessHandle handle, C_LinkWireless_Server servers[]) { - return static_cast(handle)->getServers( - reinterpret_cast(servers)); + LinkWireless::Server cppServers[C_LINK_WIRELESS_MAX_SERVERS]; + bool result = static_cast(handle)->getServers(cppServers); + + for (u32 i = 0; i < C_LINK_WIRELESS_MAX_SERVERS; i++) { + servers[i].id = cppServers[i].id; + servers[i].gameId = cppServers[i].gameId; + strncpy(servers[i].gameName, cppServers[i].gameName, + C_LINK_WIRELESS_MAX_GAME_NAME_LENGTH); + servers[i].gameName[C_LINK_WIRELESS_MAX_GAME_NAME_LENGTH] = '\0'; + strncpy(servers[i].userName, cppServers[i].userName, + C_LINK_WIRELESS_MAX_USER_NAME_LENGTH); + servers[i].userName[C_LINK_WIRELESS_MAX_USER_NAME_LENGTH] = '\0'; + servers[i].currentPlayerCount = cppServers[i].currentPlayerCount; + } + + return result; } bool C_LinkWireless_getServersAsyncStart(C_LinkWirelessHandle handle) { @@ -45,8 +63,23 @@ bool C_LinkWireless_getServersAsyncStart(C_LinkWirelessHandle handle) { bool C_LinkWireless_getServersAsyncEnd(C_LinkWirelessHandle handle, C_LinkWireless_Server servers[]) { - return static_cast(handle)->getServersAsyncEnd( - reinterpret_cast(servers)); + LinkWireless::Server cppServers[C_LINK_WIRELESS_MAX_SERVERS]; + bool result = + static_cast(handle)->getServersAsyncEnd(cppServers); + + for (u32 i = 0; i < C_LINK_WIRELESS_MAX_SERVERS; i++) { + servers[i].id = cppServers[i].id; + servers[i].gameId = cppServers[i].gameId; + strncpy(servers[i].gameName, cppServers[i].gameName, + C_LINK_WIRELESS_MAX_GAME_NAME_LENGTH); + servers[i].gameName[C_LINK_WIRELESS_MAX_GAME_NAME_LENGTH] = '\0'; + strncpy(servers[i].userName, cppServers[i].userName, + C_LINK_WIRELESS_MAX_USER_NAME_LENGTH); + servers[i].userName[C_LINK_WIRELESS_MAX_USER_NAME_LENGTH] = '\0'; + servers[i].currentPlayerCount = cppServers[i].currentPlayerCount; + } + + return result; } bool C_LinkWireless_connect(C_LinkWirelessHandle handle, u16 serverId) { @@ -63,12 +96,20 @@ bool C_LinkWireless_send(C_LinkWirelessHandle handle, u16 data) { bool C_LinkWireless_receive(C_LinkWirelessHandle handle, C_LinkWireless_Message messages[]) { - return static_cast(handle)->receive( - reinterpret_cast(messages)); + LinkWireless::Message cppMessages[C_LINK_WIRELESS_MAX_PLAYERS]; + bool result = static_cast(handle)->receive(cppMessages); + + for (int i = 0; i < C_LINK_WIRELESS_MAX_PLAYERS; i++) { + messages[i].packetId = cppMessages[i].packetId; + messages[i].data = cppMessages[i].data; + messages[i].playerId = cppMessages[i].playerId; + } + + return result; } -C_LinkWirelessState C_LinkWireless_getState(C_LinkWirelessHandle handle) { - return static_cast( +C_LinkWireless_State C_LinkWireless_getState(C_LinkWirelessHandle handle) { + return static_cast( static_cast(handle)->getState()); } @@ -76,6 +117,10 @@ bool C_LinkWireless_isConnected(C_LinkWirelessHandle handle) { return static_cast(handle)->isConnected(); } +bool C_LinkWireless_isSessionActive(C_LinkWirelessHandle handle) { + return static_cast(handle)->isSessionActive(); +} + u8 C_LinkWireless_playerCount(C_LinkWirelessHandle handle) { return static_cast(handle)->playerCount(); } diff --git a/lib/c_bindings/C_LinkWireless.h b/lib/c_bindings/C_LinkWireless.h index d6eb342..2f464ed 100644 --- a/lib/c_bindings/C_LinkWireless.h +++ b/lib/c_bindings/C_LinkWireless.h @@ -35,7 +35,7 @@ typedef enum { C_LINK_WIRELESS_STATE_SERVING, C_LINK_WIRELESS_STATE_CONNECTING, C_LINK_WIRELESS_STATE_CONNECTED -} C_LinkWirelessState; +} C_LinkWireless_State; typedef enum { C_LINK_WIRELESS_ERROR_NONE, @@ -62,11 +62,12 @@ typedef struct { typedef struct { u16 id; u16 gameId; - char gameName[15]; - char userName[9]; + char gameName[C_LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1]; + char userName[C_LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1]; u8 currentPlayerCount; } C_LinkWireless_Server; +C_LinkWirelessHandle C_LinkWireless_createDefault(); C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, bool retransmission, u8 maxPlayers, @@ -96,8 +97,9 @@ bool C_LinkWireless_send(C_LinkWirelessHandle handle, u16 data); bool C_LinkWireless_receive(C_LinkWirelessHandle handle, C_LinkWireless_Message messages[]); -C_LinkWirelessState C_LinkWireless_getState(C_LinkWirelessHandle handle); +C_LinkWireless_State C_LinkWireless_getState(C_LinkWirelessHandle handle); bool C_LinkWireless_isConnected(C_LinkWirelessHandle handle); +bool C_LinkWireless_isSessionActive(C_LinkWirelessHandle handle); u8 C_LinkWireless_playerCount(C_LinkWirelessHandle handle); u8 C_LinkWireless_currentPlayerId(C_LinkWirelessHandle handle); From 70308ed9c85707407ba0a75848c8a99b9d325de4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 03:13:14 -0300 Subject: [PATCH 176/195] Adding C bindings documentation --- .gitignore | 5 ++-- README.md | 37 ++++++++++++++++++++----- examples/LinkWireless_demo/src/main.cpp | 1 + lib/c_bindings/C_LinkUniversal.h | 4 ++- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index c8ca756..567aff5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Directories -build -.vscode +build/ +.vscode/ +node_modules/ # Files examples/multiboot diff --git a/README.md b/README.md index f6b13f1..e2a4631 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > 🚧 `v7.0.0` is not stable yet! come back later! 🚧 -A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. Its main purpose is to provide multiplayer support to homebrew games. +A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. Its main purpose is to provide multiplayer support to homebrew games. [C bindings](#c-bindings) are also included for compatibility. - [👾](#-LinkCable) [LinkCable.hpp](lib/LinkCable.hpp): The classic 16-bit **Multi-Play mode** (up to 4 players) using a GBA Link Cable! - [💻](#-LinkCableMultiboot) [LinkCableMultiboot.hpp](lib/LinkCableMultiboot.hpp): ‍Send **Multiboot software** (small 256KiB ROMs) to other GBAs with no cartridge! @@ -28,19 +28,20 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. ## Usage -- Copy the contents of the `lib/` folder into a directory that is part of your project's include path. Then, `#include` the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp), in your project. No external dependencies are required. -- For initial instructions and setup details, refer to the big comment block at the beginning of each file, the documentation included here, and the provided examples. -- Check out the [examples](examples) folder. +- Copy the contents of the [lib/](lib/) folder into a directory that is part of your project's include path. Then, `#include` the library you need, such as [LinkCable.hpp](lib/LinkCable.hpp), in your project. No external dependencies are required. +- For initial instructions and setup details, refer to the large comment block at the beginning of each file, the documentation included here, and the provided examples. +- Check out the [examples/](examples/) folder. * **Compiled ROMs are available** in [Releases](https://github.com/afska/gba-link-connection/releases). * The example code uses [libtonc](https://github.com/gbadev-org/libtonc) (and [libugba](https://github.com/AntonioND/libugba) for interrupts), but any library can be used. * The examples can be tested on real GBAs or using emulators. - * For `LinkCable`/`LinkWireless`/`LinkUniversal`, there are stress tests that you can use to tweak your configuration. + * For `LinkCable`/`LinkWireless`/`LinkUniversal`, stress tests are provided to help you tweak your configuration. + * The `LinkCableMultiboot_demo` and `LinkWirelessMultiboot_demo` examples can bootstrap all other examples, allowing you to test with multiple units even if you only have one flashcart. > The files use some compiler extensions, so using **GCC** is required. -> The example ROMs were compiled using [devkitPro](https://devkitpro.org) with GCC `14.1.0`, with `-std=c++17` as the standard and `-Ofast` as the optimization level. +> The example ROMs were compiled with [devkitPro](https://devkitpro.org), using GCC `14.1.0` with `-std=c++17` as the standard and `-Ofast` as the optimization level. -> To learn implementation details, you might also want to check out the [docs](docs) folder, which contains important documentation. +> To learn implementation details, you might also want to check out the [docs/](docs/) folder, which contains important documentation. ### Compiling the examples @@ -54,6 +55,28 @@ All the projects understand this Makefile actions: make [ clean | build | start | rebuild | restart ] ``` +### C bindings + +- To use the libraries in a C project, include the files from the [lib/c_bindings/](lib/c_bindings/) directory. +- For documentation, use this `README.md` file or comments inside the main C++ files. +- Some libraries may not be available in C. +- Some methods/overloads may not be available in the C implementations. +- Unlike the main libraries, C bindings depend on *libtonc*. + +```cpp +// Instantiating +LinkSomething* linkSomething = new LinkSomething(a, b); // C++ +LinkSomethingHandle cLinkSomething = C_LinkSomething_create(a, b); // C + +// Calling methods +linkSomething->method(a, b); // C++ +C_LinkSomething_method(cLinkSomething, a, b); // C + +// Destroying +delete linkSomething; // C++ +C_LinkSomething_destroy(cLinkSomething); // C +``` + # 👾 LinkCable *(aka Multi-Play Mode)* diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index 92f8d21..a86f09d 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -2,6 +2,7 @@ #include "../../../lib/LinkWireless.hpp" #include +#include #include #include #include diff --git a/lib/c_bindings/C_LinkUniversal.h b/lib/c_bindings/C_LinkUniversal.h index 16fc92c..b31ff78 100644 --- a/lib/c_bindings/C_LinkUniversal.h +++ b/lib/c_bindings/C_LinkUniversal.h @@ -63,17 +63,19 @@ void C_LinkUniversal_deactivate(C_LinkUniversalHandle handle); bool C_LinkUniversal_isConnected(C_LinkUniversalHandle handle); u8 C_LinkUniversal_playerCount(C_LinkUniversalHandle handle); u8 C_LinkUniversal_currentPlayerId(C_LinkUniversalHandle handle); -void C_LinkUniversal_sync(C_LinkUniversalHandle handle); +void C_LinkUniversal_sync(C_LinkUniversalHandle handle); bool C_LinkUniversal_waitFor(C_LinkUniversalHandle handle, u8 playerId); bool C_LinkUniversal_waitForWithCancel(C_LinkUniversalHandle handle, u8 playerId, bool (*cancel)()); + bool C_LinkUniversal_canRead(C_LinkUniversalHandle handle, u8 playerId); u16 C_LinkUniversal_read(C_LinkUniversalHandle handle, u8 playerId); u16 C_LinkUniversal_peek(C_LinkUniversalHandle handle, u8 playerId); bool C_LinkUniversal_send(C_LinkUniversalHandle handle, u16 data); + C_LinkUniversal_State C_LinkUniversal_getState(C_LinkUniversalHandle handle); C_LinkUniversal_Mode C_LinkUniversal_getMode(C_LinkUniversalHandle handle); C_LinkUniversal_Protocol C_LinkUniversal_getProtocol( From d18cf5ec3d82c3a388284d0fff02477358b2b687 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 03:22:47 -0300 Subject: [PATCH 177/195] Using default waitstates in all examplesm, allowing knobs to be defined outside --- examples/LinkWirelessMultiboot_demo/src/main.cpp | 2 -- lib/LinkCable.hpp | 4 ++++ lib/LinkCableMultiboot.hpp | 2 ++ lib/LinkCube.hpp | 2 ++ lib/LinkMobile.hpp | 2 ++ lib/LinkUART.hpp | 2 ++ lib/LinkUniversal.hpp | 4 ++++ lib/LinkWireless.hpp | 14 ++++++++++++++ lib/LinkWirelessMultiboot.hpp | 2 ++ 9 files changed, 32 insertions(+), 2 deletions(-) diff --git a/examples/LinkWirelessMultiboot_demo/src/main.cpp b/examples/LinkWirelessMultiboot_demo/src/main.cpp index e6d4898..003a153 100644 --- a/examples/LinkWirelessMultiboot_demo/src/main.cpp +++ b/examples/LinkWirelessMultiboot_demo/src/main.cpp @@ -17,8 +17,6 @@ LinkWirelessMultiboot* linkWirelessMultiboot = new LinkWirelessMultiboot(); int main() { setUpInterrupts(); - REG_WAITCNT = 0x4317; // (3,1 waitstates, prefetch ON) - engine->setScene(multibootScene.get()); while (true) { diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 0cce2d6..94e358d 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -44,6 +44,7 @@ #include "_link_common.hpp" +#ifndef LINK_CABLE_QUEUE_SIZE /** * @brief Buffer size (how many incoming and outgoing messages the queues can * store at max **per player**). The default value is `15`, which seems fine for @@ -54,6 +55,7 @@ * approximate the usage with `LINK_CABLE_QUEUE_SIZE * 26`. */ #define LINK_CABLE_QUEUE_SIZE 15 +#endif static volatile char LINK_CABLE_VERSION[] = "LinkCable/v7.0.0"; @@ -472,10 +474,12 @@ class LinkCable { bool isOnline(u8 playerId) { return _state.msgTimeouts[playerId] != REMOTE_TIMEOUT_OFFLINE; } + void setOnline(u8 playerId) { _state.msgTimeouts[playerId] = 0; _state.msgFlags[playerId] = true; } + void setOffline(u8 playerId) { _state.msgTimeouts[playerId] = REMOTE_TIMEOUT_OFFLINE; _state.msgFlags[playerId] = false; diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index ffb5560..bb24c95 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -26,12 +26,14 @@ #include "LinkRawCable.hpp" #include "LinkSPI.hpp" +#ifndef LINK_CABLE_MULTIBOOT_PALETTE_DATA /** * @brief Palette data (controls how the logo is displayed). * Format: 0b1CCCDSS1, where C=color, D=direction, S=speed. * Default: 0b10010011 */ #define LINK_CABLE_MULTIBOOT_PALETTE_DATA 0b10010011 +#endif static volatile char LINK_CABLE_MULTIBOOT_VERSION[] = "LinkCableMultiboot/v7.0.0"; diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp index fe4c0e4..874fc1f 100644 --- a/lib/LinkCube.hpp +++ b/lib/LinkCube.hpp @@ -28,6 +28,7 @@ #include "_link_common.hpp" +#ifndef LINK_CUBE_QUEUE_SIZE /** * @brief Buffer size (how many incoming and outgoing values the queues can * store at max). The default value is `10`, which seems fine for most games. @@ -37,6 +38,7 @@ * \warning You can approximate the usage with `LINK_CUBE_QUEUE_SIZE * 12`. */ #define LINK_CUBE_QUEUE_SIZE 10 +#endif static volatile char LINK_CUBE_VERSION[] = "LinkCube/v7.0.0"; diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index e90423e..7e2f3f2 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -62,6 +62,7 @@ #include "LinkGPIO.hpp" #include "LinkSPI.hpp" +#ifndef LINK_MOBILE_QUEUE_SIZE /** * @brief Request queue size (how many commands can be queued at the same time). * The default value is `10`, which seems fine for most games. @@ -69,6 +70,7 @@ * it's around 3 KB. */ #define LINK_MOBILE_QUEUE_SIZE 10 +#endif static volatile char LINK_MOBILE_VERSION[] = "LinkMobile/v7.0.0"; diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index e139119..d8dfa90 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -26,10 +26,12 @@ #include "_link_common.hpp" +#ifndef LINK_UART_QUEUE_SIZE /** * @brief Buffer size in bytes. */ #define LINK_UART_QUEUE_SIZE 256 +#endif static volatile char LINK_UART_VERSION[] = "LinkUART/v7.0.0"; diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index e594081..fe6d06b 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -51,18 +51,22 @@ #include "LinkCable.hpp" #include "LinkWireless.hpp" +#ifndef LINK_UNIVERSAL_MAX_PLAYERS /** * @brief Maximum number of players. Default = 5 * \warning Keep in mind that LinkCable's limit is 4. */ #define LINK_UNIVERSAL_MAX_PLAYERS LINK_WIRELESS_MAX_PLAYERS +#endif +#ifndef LINK_UNIVERSAL_GAME_ID_FILTER /** * @brief Game ID Filter (`0x0000` ~ `0x7fff`). Default = 0 (no filter) * This restricts wireless connections to rooms with a specific game ID. * When disabled, it connects to any game ID and uses `0x7fff` when serving. */ #define LINK_UNIVERSAL_GAME_ID_FILTER 0 +#endif static volatile char LINK_UNIVERSAL_VERSION[] = "LinkUniversal/v7.0.0"; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index cc2ea48..ab7da3b 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -63,6 +63,7 @@ // #include // #include +#ifndef LINK_WIRELESS_QUEUE_SIZE /** * @brief Buffer size (how many incoming and outgoing messages the queues can * store at max). The default value is `30`, which seems fine for most games. @@ -72,21 +73,27 @@ * \warning You can approximate the usage with `LINK_WIRELESS_QUEUE_SIZE * 32`. */ #define LINK_WIRELESS_QUEUE_SIZE 30 +#endif +#ifndef LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH /** * @brief Max server transfer length per timer tick. Must be in the range * `[6;20]`. The default value is `20`, but you might want to set it a bit lower * to reduce CPU usage. */ #define LINK_WIRELESS_MAX_SERVER_TRANSFER_LENGTH 20 +#endif +#ifndef LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH /** * @brief Max client transfer length per timer tick. Must be in the range * `[2;4]`. The default value is `4`. Changing this is not recommended, it's * already too low. */ #define LINK_WIRELESS_MAX_CLIENT_TRANSFER_LENGTH 4 +#endif +#ifndef LINK_WIRELESS_PUT_ISR_IN_IWRAM /** * @brief Put Interrupt Service Routines (ISR) in IWRAM (uncomment to enable). * This can significantly improve performance due to its faster access, but it's @@ -96,7 +103,9 @@ * `SRCDIRS` list. */ // #define LINK_WIRELESS_PUT_ISR_IN_IWRAM +#endif +#ifndef LINK_WIRELESS_ENABLE_NESTED_IRQ /** * @brief Allow LINK_WIRELESS_ISR_* functions to be interrupted (uncomment to * enable). @@ -106,7 +115,9 @@ * disabled. */ // #define LINK_WIRELESS_ENABLE_NESTED_IRQ +#endif +#ifndef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH /** * @brief Use send/receive latch (uncomment to enable). * This makes it alternate between sends and receives on each timer tick @@ -114,7 +125,9 @@ * also reduce overall CPU usage. */ // #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH +#endif +#ifndef LINK_WIRELESS_TWO_PLAYERS_ONLY /** * @brief Optimize the library for two players (uncomment to enable). * This will make the code smaller and use less CPU. It will also let you @@ -123,6 +136,7 @@ * `QUICK_RECEIVE` properties. */ // #define LINK_WIRELESS_TWO_PLAYERS_ONLY +#endif static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index d1e24e5..92701d3 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -32,11 +32,13 @@ #include "LinkRawWireless.hpp" #include "LinkWirelessOpenSDK.hpp" +#ifndef LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING /** * @brief Enable logging. * \warning Set `linkWirelessMultiboot->logger` and uncomment to enable! */ // #define LINK_WIRELESS_MULTIBOOT_ENABLE_LOGGING +#endif static volatile char LINK_WIRELESS_MULTIBOOT_VERSION[] = "LinkWirelessMultiboot/v7.0.0"; From 4f3e94d244a57b7e93322338c4584c2e41104306 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 03:47:44 -0300 Subject: [PATCH 178/195] Adding proper title to wireless/profiler --- examples/LinkWireless_demo/src/main.cpp | 7 ++++++- lib/LinkWireless.hpp | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index a86f09d..b53985e 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -47,7 +47,12 @@ int main() { start: // Options - log("LinkWireless_demo (v7.0.0)\n\n\n\n" + log( +#ifdef PROFILING_ENABLED + "LinkWireless_demo (v7.0.0)\n (profiler)\n\n\n" +#else + "LinkWireless_demo (v7.0.0)\n\n\n\n" +#endif "Press A to start\n\n\n\n\n" "hold LEFT on start:\n -> disable forwarding\n\n" "hold UP on start:\n -> disable retransmission\n\n" diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index ab7da3b..4f2e4d8 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -226,7 +226,7 @@ class LinkWireless { #endif // std::function debug; -// #define PROFILING_ENABLED +#define PROFILING_ENABLED #ifdef PROFILING_ENABLED u32 lastVBlankTime = 0; u32 lastSerialTime = 0; From 27285658c35580898f32c0aa331b0deadbb60a1e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 03:49:56 -0300 Subject: [PATCH 179/195] FIX: Build with LINK_WIRELESS_TWO_PLAYERS_ONLY --- lib/LinkWireless.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 4f2e4d8..3da768f 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -1467,8 +1467,9 @@ class LinkWireless { header.playerId = playerId; #ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY header.quickData = QUICK_SEND; -#endif +#else header.clientCount = sessionState.playerCount - LINK_WIRELESS_MIN_PLAYERS; +#endif header.dataChecksum = dataChecksum; MessageHeaderSerializer serializer; From d0e5905be551665fd7d0ac788113b905ebd4b6be Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 04:10:22 -0300 Subject: [PATCH 180/195] Testing quick send/receive and displaying the build settings in LinkWireless_demo --- README.md | 2 +- examples/LinkWireless_demo/src/main.cpp | 38 +++++++++++++++++++------ examples/compile.sh | 18 ++++++++++++ lib/LinkWireless.hpp | 2 +- 4 files changed, 50 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e2a4631..3154999 100644 --- a/README.md +++ b/README.md @@ -219,7 +219,7 @@ You can also change these compile-time constants: - `LINK_WIRELESS_ENABLE_NESTED_IRQ`: to allow `LINK_WIRELESS_ISR_*` functions to be interrupted. This can be useful, for example, if your audio engine requires calling a VBlank handler with precise timing. - This won't produce any effect if `LINK_WIRELESS_PUT_ISR_IN_IWRAM` is disabled. - `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce a bit of latency but also reduce _a lot_ the overall CPU usage. It's enabled in the `LinkWireless_demo` example, but disabled in the `LinkUniversal_*` examples. -- `LINK_WIRELESS_TWO_PLAYERS_ONLY`: to optimize the library for two players. This will make the code smaller and use less CPU. It will also let you "misuse" 5 bits from the packet header to send small packets really fast (e.g. pressed keys) without confirmation, using the `QUICK_SEND` and `QUICK_RECEIVE` properties. +- `LINK_WIRELESS_TWO_PLAYERS_ONLY`: to optimize the library for two players. This will make the code smaller and use less CPU. It will also let you "misuse" `5` bits from the packet header to send small packets really fast (e.g. pressed keys) without confirmation, using the `QUICK_SEND` and `QUICK_RECEIVE` properties. ## Methods diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index b53985e..dc73e56 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -45,15 +45,28 @@ void init() { int main() { init(); + std::string buildSettings = ""; +#ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM + buildSettings += " + irq_iwram\n"; +#endif +#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ + buildSettings += " + irq_nested\n"; +#endif +#ifdef LINK_WIRELESS_USE_SEND_RECEIVE_LATCH + buildSettings += " + s/r_latch\n"; +#endif +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + buildSettings += " + 2players\n"; +#endif +#ifdef PROFILING_ENABLED + buildSettings += " + profiler\n"; +#endif + start: // Options - log( -#ifdef PROFILING_ENABLED - "LinkWireless_demo (v7.0.0)\n (profiler)\n\n\n" -#else - "LinkWireless_demo (v7.0.0)\n\n\n\n" -#endif - "Press A to start\n\n\n\n\n" + log("LinkWireless_demo (v7.0.0)\n" + buildSettings + + "\n" + "Press A to start\n\n" "hold LEFT on start:\n -> disable forwarding\n\n" "hold UP on start:\n -> disable retransmission\n\n" "hold B on start:\n -> set 2 players\n\n" @@ -289,6 +302,10 @@ void messageLoop() { u16 newValue = counters[linkWireless->currentPlayerId()] + 1; bool success = linkWireless->send(newValue); +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + linkWireless->QUICK_SEND = newValue % 32; +#endif + if (success) { counters[linkWireless->currentPlayerId()] = newValue; } else { @@ -385,7 +402,12 @@ void messageLoop() { "p" + std::to_string(i) + ": " + std::to_string(counters[i]) + "\n"; } - // Debug output +// Debug output +#ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY + output += "\n>> " + std::to_string(linkWireless->QUICK_SEND); + output += "\n<< " + std::to_string(linkWireless->QUICK_RECEIVE) + "\n"; +#endif + output += "\n_buffer: " + std::to_string(linkWireless->_getPendingCount()); if (retransmission && !altView) { output += diff --git a/examples/compile.sh b/examples/compile.sh index cfdcca2..b0ed3ca 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -145,6 +145,24 @@ compile() { sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp cd .. fi + + # LinkWireless_demo_2players + if [ "$1" != "multiboot" ]; then + cd LinkWireless_demo/ + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp + mv LinkWireless_demo$suffix.gba backup.gba + make rebuild + cp LinkWireless_demo.gba ../$folder/LinkWireless_demo_2players.gba + mv backup.gba LinkWireless_demo$suffix.gba + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp + cd .. + fi } # Cleanup diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 3da768f..db7e334 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -226,7 +226,7 @@ class LinkWireless { #endif // std::function debug; -#define PROFILING_ENABLED +// #define PROFILING_ENABLED #ifdef PROFILING_ENABLED u32 lastVBlankTime = 0; u32 lastSerialTime = 0; From 315cd292580e679296dcfc316f6560ed0b4ae031 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 04:23:50 -0300 Subject: [PATCH 181/195] Integrating LinkWirelessMultiboot_demo_2players with the multiboot roms --- examples/compile.sh | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/examples/compile.sh b/examples/compile.sh index b0ed3ca..785751d 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -130,39 +130,37 @@ compile() { cp LinkWireless_demo$suffix.gba ../$folder/ cd .. + # LinkWireless_demo_2players + cd LinkWireless_demo/ + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp + mv LinkWireless_demo$suffix.gba backup.gba + make rebuild $args + cp LinkWireless_demo$suffix.gba ../$folder/LinkWireless_demo_2players$suffix.gba + mv backup.gba LinkWireless_demo$suffix.gba + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + sed $sed_inplace_option -e "s/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp + cd .. + # LinkWireless_demo_profiler if [ "$1" != "multiboot" ]; then cd LinkWireless_demo/ sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp - mv LinkWireless_demo$suffix.gba backup.gba + mv LinkWireless_demo.gba backup.gba make rebuild - cp LinkWireless_demo.gba ../$folder/LinkWireless_demo_profiler.gba - mv backup.gba LinkWireless_demo$suffix.gba + cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba + mv backup.gba LinkWireless_demo.gba sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp cd .. fi - - # LinkWireless_demo_2players - if [ "$1" != "multiboot" ]; then - cd LinkWireless_demo/ - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp - mv LinkWireless_demo$suffix.gba backup.gba - make rebuild - cp LinkWireless_demo.gba ../$folder/LinkWireless_demo_2players.gba - mv backup.gba LinkWireless_demo$suffix.gba - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp - cd .. - fi } # Cleanup From 6e2725f9d39a8e91f7046699f39d5186b90aa031 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 05:20:14 -0300 Subject: [PATCH 182/195] I think it's stable enough --- README.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 3154999..a315365 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # gba-link-connection -> 🚧 `v7.0.0` is not stable yet! come back later! 🚧 - A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. Its main purpose is to provide multiplayer support to homebrew games. [C bindings](#c-bindings) are also included for compatibility. - [👾](#-LinkCable) [LinkCable.hpp](lib/LinkCable.hpp): The classic 16-bit **Multi-Play mode** (up to 4 players) using a GBA Link Cable! @@ -49,7 +47,7 @@ Running `./compile.sh` builds all the examples with the right configuration. The project must be in a path without spaces; devkitARM and some *nix commands are required. -All the projects understand this Makefile actions: +All the projects understand these Makefile actions: ```bash make [ clean | build | start | rebuild | restart ] @@ -219,14 +217,14 @@ You can also change these compile-time constants: - `LINK_WIRELESS_ENABLE_NESTED_IRQ`: to allow `LINK_WIRELESS_ISR_*` functions to be interrupted. This can be useful, for example, if your audio engine requires calling a VBlank handler with precise timing. - This won't produce any effect if `LINK_WIRELESS_PUT_ISR_IN_IWRAM` is disabled. - `LINK_WIRELESS_USE_SEND_RECEIVE_LATCH`: to alternate between sends and receives on each timer tick (instead of doing both things). This is disabled by default. Enabling it will introduce a bit of latency but also reduce _a lot_ the overall CPU usage. It's enabled in the `LinkWireless_demo` example, but disabled in the `LinkUniversal_*` examples. -- `LINK_WIRELESS_TWO_PLAYERS_ONLY`: to optimize the library for two players. This will make the code smaller and use less CPU. It will also let you "misuse" `5` bits from the packet header to send small packets really fast (e.g. pressed keys) without confirmation, using the `QUICK_SEND` and `QUICK_RECEIVE` properties. +- `LINK_WIRELESS_TWO_PLAYERS_ONLY`: to optimize the library for two players. This will make the code smaller and use less CPU. It will also let you "misuse" `5` bits from the packet header to send small packets really fast (e.g. pressed keys) without confirmation, using the `QUICK_SEND` and `QUICK_RECEIVE` properties. When this option is enabled, the `maxPlayers` constructor parameter will be ignored. ## Methods - Most of these methods return a boolean, indicating if the action was successful. If not, you can call `getLastError()` to know the reason. Usually, unless it's a trivial error (like buffers being full), the connection with the adapter is reset and the game needs to start again. - You can check the connection state at any time with `getState()`. - Until a session starts, all actions are synchronous. -- During sessions (when the state is `SERVING` or `CONNECTED`), the message transfers are IRQ-driven, so `send(...)` and `receive(...)` won't waste extra cycles. The synchronous method that can be called during a session is `serve(...)`, which can be used to update the broadcast data. +- During sessions (when the state is `SERVING` or `CONNECTED`), the message transfers are IRQ-driven, so `send(...)` and `receive(...)` won't waste extra cycles. The only synchronous method that can be called during a session is `serve(...)`, which can be used to update the broadcast data. Name | Return type | Description --- | --- | --- @@ -481,7 +479,7 @@ Name | Return type | Description This is a driver for an accessory that enables online conectivity on the GB and GBA. The protocol was reverse-engineered by the *REON Team*. -The original accessory was sold in Japan only and doesn't work anymore since it relies on old tech and servers, but REON has created an open-source implementation called [libmobile](https://github.com/REONTeam/libmobile), as well as support for emulators and microcontrollers. +The original accessory was sold in Japan only and using it nowadays is hard since it relies on old tech, but REON has created an open-source implementation called [libmobile](https://github.com/REONTeam/libmobile), as well as support for emulators and microcontrollers. It has two modes of operation: - Direct call (P2P): Calling someone directly for a 2-player session, using the other person's IP address or the phone number provided by the [relay server](https://github.com/REONTeam/mobile-relay). @@ -521,7 +519,7 @@ Name | Return type | Description `shutdown()` | **bool** | Gracefully shuts down the adapter, closing all connections. After some time, the state will be changed to `SHUTDOWN`, and only then it's safe to call `deactivate()`. `call(phoneNumber)` | **bool** | Initiates a P2P connection with a `phoneNumber`. After some time, the state will be `CALL_ESTABLISHED` (or `ACTIVE_SESSION` if the connection fails or ends). In REON/libmobile the phone number can be a number assigned by the relay server, or a 12-digit IPv4 address (for example, `"127000000001"` would be `127.0.0.1`). `callISP(password, loginId)` | **bool** | Calls the ISP number registered in the adapter configuration, or a default number if the adapter hasn't been configured. Then, performs a login operation using the provided `password` and `loginId`. After some time, the state will be `PPP_ACTIVE`. If `loginId` is empty and the adapter has been configured, it will use the one stored in the configuration. Both parameters are null-terminated strings (max `32` characters). -`dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). It also accepts a ASCII IPv4 address, converting it into a 4-byte address instead of querying the DNS server. The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. +`dnsQuery(domainName, result)` | **bool** | Looks up the IPv4 address for a `domainName` (a null-terminated string, max `253` characters). It also accepts an ASCII IPv4 address, converting it into a 4-byte address instead of querying the DNS server. The `result` is a pointer to a `LinkMobile::DNSQuery` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If an IP address was found, the `success` field will be `true` and the `ipv4` field can be read as a 4-byte address. `openConnection(ip, port, type, result)` | **bool** | Opens a TCP/UDP (`type`) connection at the given `ip` (4-byte address) on the given `port`. The `result` is a pointer to a `LinkMobile::OpenConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was successful, the `success` field will be `true` and the `connectionId` field can be used when calling the `transfer(...)` method. Only `2` connections can be opened at the same time. `closeConnection(connectionId, type, result)` | **bool** | Closes an active TCP/UDP (`type`) connection. The `result` is a pointer to a `LinkMobile::CloseConn` struct that will be filled with the result. When the request is completed, the `completed` field will be `true`. If the connection was closed correctly, the `success` field will be `true`. `transfer(dataToSend, result, [connectionId])` | **bool** | Requests a data transfer (up to `254` bytes) and responds the received data. The transfer can be done with the other node in a P2P connection, or with any open TCP/UDP connection if a PPP session is active. In the case of a TCP/UDP connection, the `connectionId` must be provided. The `result` is a pointer to a `LinkMobile::DataTransfer` struct that will be filled with the received data. It can also point to `dataToSend` to reuse the struct. When the request is completed, the `completed` field will be `true`. If the transfer was successful, the `success` field will be `true`. If not, you can assume that the connection was closed. @@ -579,7 +577,7 @@ A PS/2 keyboard driver for the GBA. Use it to add keyboard support to your homeb ## Constructor -`new LinkPS2Keyboard(onEvent)`, where `onEvent` is a function pointer that will receive the scan codes (`u8`). You should check a PS/2 scan code list online, but most common keys/events are included in enums like `LINK_PS2_KEYBOARD_KEY::ENTER` and `LINK_PS2_KEYBOARD_KEY::RELEASE`. +`new LinkPS2Keyboard(onEvent)`, where `onEvent` is a function pointer that will receive the scan codes (`u8`). You should check a PS/2 scan code list online, but most common keys/events are included in enums like `LINK_PS2_KEYBOARD_KEY::ENTER` and `LINK_PS2_KEYBOARD_EVENT::RELEASE`. ## Methods From 5ce6ed1c64d768acc4a2f7d84cea9d413e4e263b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 06:40:22 -0300 Subject: [PATCH 183/195] Adding +x to pad16.sh and gbfs.sh --- examples/gbfs.sh | 0 examples/pad16.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 examples/gbfs.sh mode change 100644 => 100755 examples/pad16.sh diff --git a/examples/gbfs.sh b/examples/gbfs.sh old mode 100644 new mode 100755 diff --git a/examples/pad16.sh b/examples/pad16.sh old mode 100644 new mode 100755 From adb1b3802bb8c8ca37fc5ef68ac3a8183f2c4f2c Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 07:01:22 -0300 Subject: [PATCH 184/195] Removing sed hack and improving build script --- examples/LinkCableMultiboot_demo/Makefile | 3 +- examples/LinkCable_basic/Makefile | 3 +- examples/LinkCable_full/Makefile | 3 +- examples/LinkCable_stress/Makefile | 3 +- examples/LinkCube_demo/Makefile | 3 +- examples/LinkGPIO_demo/Makefile | 3 +- examples/LinkMobile_demo/Makefile | 5 +- examples/LinkPS2Keyboard_demo/Makefile | 3 +- examples/LinkPS2Mouse_demo/Makefile | 3 +- examples/LinkRawCable_demo/Makefile | 3 +- examples/LinkRawWireless_demo/Makefile | 3 +- examples/LinkSPI_demo/Makefile | 3 +- examples/LinkUART_demo/Makefile | 3 +- examples/LinkUniversal_basic/Makefile | 3 +- examples/LinkWirelessMultiboot_demo/Makefile | 3 +- examples/LinkWireless_demo/Makefile | 3 +- examples/compile.sh | 51 +++----------------- 17 files changed, 40 insertions(+), 61 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index a149661..7adee41 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_basic/Makefile b/examples/LinkCable_basic/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkCable_basic/Makefile +++ b/examples/LinkCable_basic/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_full/Makefile b/examples/LinkCable_full/Makefile index d883205..6874080 100644 --- a/examples/LinkCable_full/Makefile +++ b/examples/LinkCable_full/Makefile @@ -155,7 +155,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_stress/Makefile b/examples/LinkCable_stress/Makefile index de84eec..bf8b4c1 100644 --- a/examples/LinkCable_stress/Makefile +++ b/examples/LinkCable_stress/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCube_demo/Makefile b/examples/LinkCube_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkCube_demo/Makefile +++ b/examples/LinkCube_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkGPIO_demo/Makefile b/examples/LinkGPIO_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkGPIO_demo/Makefile +++ b/examples/LinkGPIO_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index eb09746..90cb072 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -165,10 +165,11 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) -LDFLAGS := $(ARCH) -Wl,-Map,$(PROJ).map +LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map # --- switched additions ---------------------------------------------- diff --git a/examples/LinkPS2Keyboard_demo/Makefile b/examples/LinkPS2Keyboard_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkPS2Keyboard_demo/Makefile +++ b/examples/LinkPS2Keyboard_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkPS2Mouse_demo/Makefile b/examples/LinkPS2Mouse_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkPS2Mouse_demo/Makefile +++ b/examples/LinkPS2Mouse_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkRawCable_demo/Makefile b/examples/LinkRawCable_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkRawCable_demo/Makefile +++ b/examples/LinkRawCable_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkRawWireless_demo/Makefile b/examples/LinkRawWireless_demo/Makefile index d883205..6874080 100644 --- a/examples/LinkRawWireless_demo/Makefile +++ b/examples/LinkRawWireless_demo/Makefile @@ -155,7 +155,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkSPI_demo/Makefile b/examples/LinkSPI_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkSPI_demo/Makefile +++ b/examples/LinkSPI_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkUART_demo/Makefile b/examples/LinkUART_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkUART_demo/Makefile +++ b/examples/LinkUART_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkUniversal_basic/Makefile b/examples/LinkUniversal_basic/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkUniversal_basic/Makefile +++ b/examples/LinkUniversal_basic/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 5400667..72a755b 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -155,7 +155,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkWireless_demo/Makefile b/examples/LinkWireless_demo/Makefile index dbc85d2..90cb072 100644 --- a/examples/LinkWireless_demo/Makefile +++ b/examples/LinkWireless_demo/Makefile @@ -165,7 +165,8 @@ CFLAGS += -Wall CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 +USERFLAGS ?= +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/compile.sh b/examples/compile.sh index 785751d..e9596e8 100755 --- a/examples/compile.sh +++ b/examples/compile.sh @@ -2,13 +2,6 @@ set -e -if [ "$(uname)" = "Darwin" ]; then - # macOS - sed_inplace_option="-i \"\"" -else - sed_inplace_option="-i" -fi - compile() { if [ "$1" = "multiboot" ]; then args="bMB=1" @@ -70,9 +63,7 @@ compile() { # LinkRawWireless_demo cd LinkRawWireless_demo/ - sed $sed_inplace_option -e "s/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp - make rebuild $args - sed $sed_inplace_option -e "s/#define LINK_RAW_WIRELESS_ENABLE_LOGGING/\/\/ #define LINK_RAW_WIRELESS_ENABLE_LOGGING/g" ../../lib/LinkRawWireless.hpp + make rebuild $args USERFLAGS="-DLINK_RAW_WIRELESS_ENABLE_LOGGING=1" cp LinkRawWireless_demo$suffix.gba ../$folder/ cd .. @@ -90,75 +81,47 @@ compile() { # LinkUniversal_basic cd LinkUniversal_basic/ - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - make rebuild $args + make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkUniversal_basic$suffix.gba ../$folder/ - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. # LinkUniversal_full cd LinkCable_full/ - sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp mv LinkCable_full$suffix.gba backup.gba - make rebuild $args + make rebuild $args USERFLAGS="-DUSE_LINK_UNIVERSAL=1 -DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkCable_full$suffix.gba ../$folder/LinkUniversal_full$suffix.gba mv backup.gba LinkCable_full$suffix.gba - sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. # LinkUniversal_stress cd LinkCable_stress/ - sed $sed_inplace_option -e "s/\/\/ #define USE_LINK_UNIVERSAL/#define USE_LINK_UNIVERSAL/g" src/main.h - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp mv LinkCable_stress$suffix.gba backup.gba - make rebuild $args + make rebuild $args USERFLAGS="-DUSE_LINK_UNIVERSAL=1 -DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1" cp LinkCable_stress$suffix.gba ../$folder/LinkUniversal_stress$suffix.gba mv backup.gba LinkCable_stress$suffix.gba - sed $sed_inplace_option -e "s/#define USE_LINK_UNIVERSAL/\/\/ #define USE_LINK_UNIVERSAL/g" src/main.h - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp cd .. # LinkWireless_demo cd LinkWireless_demo/ - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - make rebuild $args - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp + make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1 -DLINK_WIRELESS_USE_SEND_RECEIVE_LATCH=1" cp LinkWireless_demo$suffix.gba ../$folder/ cd .. # LinkWireless_demo_2players cd LinkWireless_demo/ - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp mv LinkWireless_demo$suffix.gba backup.gba - make rebuild $args + make rebuild $args USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1 -DLINK_WIRELESS_ENABLE_NESTED_IRQ=1 -DLINK_WIRELESS_USE_SEND_RECEIVE_LATCH=1 -DLINK_WIRELESS_TWO_PLAYERS_ONLY=1" cp LinkWireless_demo$suffix.gba ../$folder/LinkWireless_demo_2players$suffix.gba mv backup.gba LinkWireless_demo$suffix.gba - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_ENABLE_NESTED_IRQ/\/\/ #define LINK_WIRELESS_ENABLE_NESTED_IRQ/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_TWO_PLAYERS_ONLY/\/\/ #define LINK_WIRELESS_TWO_PLAYERS_ONLY/g" ../../lib/LinkWireless.hpp cd .. # LinkWireless_demo_profiler if [ "$1" != "multiboot" ]; then cd LinkWireless_demo/ - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/\/\/ #define PROFILING_ENABLED/#define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp mv LinkWireless_demo.gba backup.gba - make rebuild + make rebuild USERFLAGS="-DLINK_WIRELESS_PUT_ISR_IN_IWRAM=1 -DLINK_WIRELESS_USE_SEND_RECEIVE_LATCH=1 -DPROFILING_ENABLED=1" cp LinkWireless_demo.gba ../LinkWireless_demo_profiler.gba mv backup.gba LinkWireless_demo.gba - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_PUT_ISR_IN_IWRAM/\/\/ #define LINK_WIRELESS_PUT_ISR_IN_IWRAM/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/\/\/ #define LINK_WIRELESS_USE_SEND_RECEIVE_LATCH/g" ../../lib/LinkWireless.hpp - sed $sed_inplace_option -e "s/#define PROFILING_ENABLED/\/\/ #define PROFILING_ENABLED/g" ../../lib/LinkWireless.hpp cd .. fi } From fa9923cd9de65adb29d57beaf4ea867b4a67f193 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 07:04:53 -0300 Subject: [PATCH 185/195] Improving documentation --- lib/LinkCube.hpp | 2 +- lib/LinkGPIO.hpp | 4 ++-- lib/LinkUniversal.hpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp index 874fc1f..ae9fc3e 100644 --- a/lib/LinkCube.hpp +++ b/lib/LinkCube.hpp @@ -14,7 +14,7 @@ // linkCube->activate(); // - 4) Send 32-bit values: // linkCube->send(0x12345678); -// // (now linkCube->pendingCount() will be 1 until it's actually sent) +// // (now linkCube->pendingCount() will be 1 until the value is sent) // - 5) Read 32-bit values: // if (linkCube->canRead()) { // u32 value = linkCube->read(); diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 00baab9..347eef4 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -2,7 +2,7 @@ #define LINK_GPIO_H // -------------------------------------------------------------------------- -// A GPIO handler for the Link Port. +// A General Purpose Input-Output handler for the Link Port. // -------------------------------------------------------------------------- // Usage: // - 1) Include this header in your main.cpp file and add: @@ -27,7 +27,7 @@ #include "_link_common.hpp" /** - * @brief A GPIO handler for the Link Port. + * @brief A General Purpose Input-Output handler for the Link Port. */ class LinkGPIO { private: diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index fe6d06b..e5f3488 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -465,9 +465,9 @@ class LinkUniversal { void receiveCableMessages() { static constexpr u32 MAX_PLAYERS = - LINK_CABLE_MAX_PLAYERS < LINK_UNIVERSAL_MAX_PLAYERS - ? LINK_CABLE_MAX_PLAYERS - : LINK_UNIVERSAL_MAX_PLAYERS; + LINK_UNIVERSAL_MAX_PLAYERS < LINK_CABLE_MAX_PLAYERS + ? LINK_UNIVERSAL_MAX_PLAYERS + : LINK_CABLE_MAX_PLAYERS; for (u32 i = 0; i < MAX_PLAYERS; i++) { while (linkCable->canRead(i)) From d43f245a67b9ff6da933f79e81d7273677f95ac4 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 22:22:59 -0300 Subject: [PATCH 186/195] Fixing deprecation warnings --- lib/LinkGPIO.hpp | 2 +- lib/LinkUniversal.hpp | 8 ++++++++ lib/LinkWireless.hpp | 8 +++++--- lib/_link_common.hpp | 7 ++++--- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 347eef4..39751ec 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -98,7 +98,7 @@ class LinkGPIO { } private: - int getBit(volatile u16 reg, int bit) { return (reg >> bit) & 1; } + int getBit(u16 reg, int bit) { return (reg >> bit) & 1; } void setBit(volatile u16& reg, int bit, bool data) { if (data) diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index e5f3488..62574cc 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -273,6 +273,8 @@ class LinkUniversal { break; } + default: { + } } } @@ -526,6 +528,8 @@ class LinkUniversal { // (should not happen) break; } + default: { + } } return true; @@ -594,6 +598,8 @@ class LinkUniversal { setMode(LINK_WIRELESS); break; } + default: { + } } } @@ -620,6 +626,8 @@ class LinkUniversal { setMode(LINK_WIRELESS); break; } + default: { + } } } diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index db7e334..13cc31e 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -1433,9 +1433,9 @@ class LinkWireless { u32 min = 0xffffffff; for (int i = 0; i < config.maxPlayers - 1; i++) { - u32 confirmationData = sessionState.lastConfirmationFromClients[1 + i]; - if (confirmationData > 0 && confirmationData < min) - min = confirmationData; + u32 _confirmationData = sessionState.lastConfirmationFromClients[1 + i]; + if (_confirmationData > 0 && _confirmationData < min) + min = _confirmationData; } if (min < 0xffffffff) removeConfirmedMessages(min); @@ -1850,6 +1850,8 @@ class LinkWireless { receiveAsyncCommandResponseOrFinish(); break; } + default: { + } } } diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index f4b4614..15d4e67 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -161,7 +161,7 @@ class Queue { rear = (rear + 1) % Size; arr[rear] = item; - count++; + count = count + 1; } T pop() { @@ -170,7 +170,7 @@ class Queue { auto x = arr[front]; front = (front + 1) % Size; - count--; + count = count - 1; return x; } @@ -199,7 +199,8 @@ class Queue { } void clear() { - front = count = 0; + front = 0; + count = 0; rear = -1; } From f459a8f142c4d7106fd3153ddc12663238eddcc7 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 22:29:07 -0300 Subject: [PATCH 187/195] Marking headers as system headers outside development --- examples/LinkCableMultiboot_demo/Makefile | 2 +- examples/LinkCable_basic/Makefile | 2 +- examples/LinkCable_full/Makefile | 2 +- examples/LinkCable_stress/Makefile | 2 +- examples/LinkCube_demo/Makefile | 2 +- examples/LinkGPIO_demo/Makefile | 2 +- examples/LinkMobile_demo/Makefile | 2 +- examples/LinkPS2Keyboard_demo/Makefile | 2 +- examples/LinkPS2Mouse_demo/Makefile | 2 +- examples/LinkRawCable_demo/Makefile | 2 +- examples/LinkRawWireless_demo/Makefile | 2 +- examples/LinkSPI_demo/Makefile | 2 +- examples/LinkUART_demo/Makefile | 2 +- examples/LinkUniversal_basic/Makefile | 2 +- examples/LinkWirelessMultiboot_demo/Makefile | 2 +- examples/LinkWireless_demo/Makefile | 2 +- lib/LinkCable.hpp | 4 ++++ lib/LinkCableMultiboot.hpp | 4 ++++ lib/LinkCube.hpp | 4 ++++ lib/LinkGPIO.hpp | 4 ++++ lib/LinkMobile.hpp | 4 ++++ lib/LinkPS2Keyboard.hpp | 4 ++++ lib/LinkPS2Mouse.hpp | 4 ++++ lib/LinkRawCable.hpp | 4 ++++ lib/LinkRawWireless.hpp | 4 ++++ lib/LinkSPI.hpp | 4 ++++ lib/LinkUART.hpp | 4 ++++ lib/LinkUniversal.hpp | 4 ++++ lib/LinkWireless.hpp | 4 ++++ lib/LinkWirelessMultiboot.hpp | 4 ++++ lib/LinkWirelessOpenSDK.hpp | 4 ++++ lib/_link_common.hpp | 4 ++++ 32 files changed, 80 insertions(+), 16 deletions(-) diff --git a/examples/LinkCableMultiboot_demo/Makefile b/examples/LinkCableMultiboot_demo/Makefile index 7adee41..0246cfb 100644 --- a/examples/LinkCableMultiboot_demo/Makefile +++ b/examples/LinkCableMultiboot_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_basic/Makefile b/examples/LinkCable_basic/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkCable_basic/Makefile +++ b/examples/LinkCable_basic/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_full/Makefile b/examples/LinkCable_full/Makefile index 6874080..8664077 100644 --- a/examples/LinkCable_full/Makefile +++ b/examples/LinkCable_full/Makefile @@ -156,7 +156,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCable_stress/Makefile b/examples/LinkCable_stress/Makefile index bf8b4c1..e96aa55 100644 --- a/examples/LinkCable_stress/Makefile +++ b/examples/LinkCable_stress/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkCube_demo/Makefile b/examples/LinkCube_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkCube_demo/Makefile +++ b/examples/LinkCube_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkGPIO_demo/Makefile b/examples/LinkGPIO_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkGPIO_demo/Makefile +++ b/examples/LinkGPIO_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkMobile_demo/Makefile b/examples/LinkMobile_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkMobile_demo/Makefile +++ b/examples/LinkMobile_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkPS2Keyboard_demo/Makefile b/examples/LinkPS2Keyboard_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkPS2Keyboard_demo/Makefile +++ b/examples/LinkPS2Keyboard_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkPS2Mouse_demo/Makefile b/examples/LinkPS2Mouse_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkPS2Mouse_demo/Makefile +++ b/examples/LinkPS2Mouse_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkRawCable_demo/Makefile b/examples/LinkRawCable_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkRawCable_demo/Makefile +++ b/examples/LinkRawCable_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkRawWireless_demo/Makefile b/examples/LinkRawWireless_demo/Makefile index 6874080..8664077 100644 --- a/examples/LinkRawWireless_demo/Makefile +++ b/examples/LinkRawWireless_demo/Makefile @@ -156,7 +156,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkSPI_demo/Makefile b/examples/LinkSPI_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkSPI_demo/Makefile +++ b/examples/LinkSPI_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkUART_demo/Makefile b/examples/LinkUART_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkUART_demo/Makefile +++ b/examples/LinkUART_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkUniversal_basic/Makefile b/examples/LinkUniversal_basic/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkUniversal_basic/Makefile +++ b/examples/LinkUniversal_basic/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkWirelessMultiboot_demo/Makefile b/examples/LinkWirelessMultiboot_demo/Makefile index 72a755b..754f919 100644 --- a/examples/LinkWirelessMultiboot_demo/Makefile +++ b/examples/LinkWirelessMultiboot_demo/Makefile @@ -156,7 +156,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/examples/LinkWireless_demo/Makefile b/examples/LinkWireless_demo/Makefile index 90cb072..05e014f 100644 --- a/examples/LinkWireless_demo/Makefile +++ b/examples/LinkWireless_demo/Makefile @@ -166,7 +166,7 @@ CFLAGS += $(INCLUDE) CFLAGS += -ffast-math -fno-strict-aliasing USERFLAGS ?= -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 $(USERFLAGS) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=c++17 -DLINK_DEVELOPMENT $(USERFLAGS) ASFLAGS := $(ARCH) $(INCLUDE) LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index 94e358d..ad4a1ee 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -42,6 +42,10 @@ // (they mean 'disconnected' and 'no data' respectively) // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #ifndef LINK_CABLE_QUEUE_SIZE diff --git a/lib/LinkCableMultiboot.hpp b/lib/LinkCableMultiboot.hpp index bb24c95..1b03a0a 100644 --- a/lib/LinkCableMultiboot.hpp +++ b/lib/LinkCableMultiboot.hpp @@ -23,6 +23,10 @@ // - stop DMA before sending the ROM! (you might need to stop your audio player) // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "LinkRawCable.hpp" #include "LinkSPI.hpp" diff --git a/lib/LinkCube.hpp b/lib/LinkCube.hpp index ae9fc3e..318d7e3 100644 --- a/lib/LinkCube.hpp +++ b/lib/LinkCube.hpp @@ -26,6 +26,10 @@ // (see examples) // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #ifndef LINK_CUBE_QUEUE_SIZE diff --git a/lib/LinkGPIO.hpp b/lib/LinkGPIO.hpp index 39751ec..36293e6 100644 --- a/lib/LinkGPIO.hpp +++ b/lib/LinkGPIO.hpp @@ -24,6 +24,10 @@ // - call reset() when you finish doing GPIO stuff! // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" /** diff --git a/lib/LinkMobile.hpp b/lib/LinkMobile.hpp index 7e2f3f2..2e042e7 100644 --- a/lib/LinkMobile.hpp +++ b/lib/LinkMobile.hpp @@ -56,6 +56,10 @@ // (see examples) // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #include diff --git a/lib/LinkPS2Keyboard.hpp b/lib/LinkPS2Keyboard.hpp index 5132bbd..21b7611 100644 --- a/lib/LinkPS2Keyboard.hpp +++ b/lib/LinkPS2Keyboard.hpp @@ -37,6 +37,10 @@ // |GND ---> GND| // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" static volatile char LINK_PS2_KEYBOARD_VERSION[] = "LinkPS2Keyboard/v7.0.0"; diff --git a/lib/LinkPS2Mouse.hpp b/lib/LinkPS2Mouse.hpp index 650497a..9a71609 100644 --- a/lib/LinkPS2Mouse.hpp +++ b/lib/LinkPS2Mouse.hpp @@ -35,6 +35,10 @@ // |GND ---> GND| // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" static volatile char LINK_PS2_MOUSE_VERSION[] = "LinkPS2Mouse/v7.0.0"; diff --git a/lib/LinkRawCable.hpp b/lib/LinkRawCable.hpp index 16ed230..5172109 100644 --- a/lib/LinkRawCable.hpp +++ b/lib/LinkRawCable.hpp @@ -38,6 +38,10 @@ // - only transfer(...) if isReady() // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" static volatile char LINK_RAW_CABLE_VERSION[] = "LinkRawCable/v7.0.0"; diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index 280315a..eaa757f 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -8,6 +8,10 @@ // - If you're building a game, use `LinkWireless`. // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #include diff --git a/lib/LinkSPI.hpp b/lib/LinkSPI.hpp index 79b5f01..c66a883 100644 --- a/lib/LinkSPI.hpp +++ b/lib/LinkSPI.hpp @@ -40,6 +40,10 @@ // - returns 0xFFFFFFFF (or 0xFF) on misuse or cancelled transfers! // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" static volatile char LINK_SPI_VERSION[] = "LinkSPI/v7.0.0"; diff --git a/lib/LinkUART.hpp b/lib/LinkUART.hpp index d8dfa90..829f2c1 100644 --- a/lib/LinkUART.hpp +++ b/lib/LinkUART.hpp @@ -24,6 +24,10 @@ // (see examples) // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #ifndef LINK_UART_QUEUE_SIZE diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 62574cc..535c84e 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -45,6 +45,10 @@ // (they mean 'disconnected' and 'no data' respectively) // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #include diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 13cc31e..5e55411 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -54,6 +54,10 @@ // - 0xFFFF is a reserved value, so don't use it! // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #include diff --git a/lib/LinkWirelessMultiboot.hpp b/lib/LinkWirelessMultiboot.hpp index 92701d3..ed7203e 100644 --- a/lib/LinkWirelessMultiboot.hpp +++ b/lib/LinkWirelessMultiboot.hpp @@ -27,6 +27,10 @@ // // `result` should be LinkWirelessMultiboot::Result::SUCCESS // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #include "LinkRawWireless.hpp" diff --git a/lib/LinkWirelessOpenSDK.hpp b/lib/LinkWirelessOpenSDK.hpp index d118351..abb9521 100644 --- a/lib/LinkWirelessOpenSDK.hpp +++ b/lib/LinkWirelessOpenSDK.hpp @@ -8,6 +8,10 @@ // - You only need this if you want to interact with N software. // -------------------------------------------------------------------------- +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + #include "_link_common.hpp" #include "LinkRawWireless.hpp" diff --git a/lib/_link_common.hpp b/lib/_link_common.hpp index 15d4e67..77a5681 100644 --- a/lib/_link_common.hpp +++ b/lib/_link_common.hpp @@ -1,6 +1,10 @@ #ifndef LINK_COMMON_H #define LINK_COMMON_H +#ifndef LINK_DEVELOPMENT +#pragma GCC system_header +#endif + /** * @brief Enable mGBA debug logging. */ From ff22a2dc9fec5b3d519d0ce28521d0d284c46bbf Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 23:29:54 -0300 Subject: [PATCH 188/195] Adding LinkWireless::activateAsync(), turnOff parameter to deactivate(), stopping everything on errors --- README.md | 7 +-- lib/LinkWireless.hpp | 84 ++++++++++++++++++++++++++++--- lib/c_bindings/C_LinkWireless.cpp | 8 +++ lib/c_bindings/C_LinkWireless.h | 5 ++ 4 files changed, 94 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a315365..571066c 100644 --- a/README.md +++ b/README.md @@ -229,8 +229,9 @@ You can also change these compile-time constants: Name | Return type | Description --- | --- | --- `isActive()` | **bool** | Returns whether the library is active or not. -`activate()` | **bool** | Activates the library. When an adapter is connected, it changes the state to `AUTHENTICATED`. It can also be used to disconnect or reset the adapter. -`deactivate()` | **bool** | Puts the adapter into a low consumption mode and then deactivates the library. It returns a boolean indicating whether the transition to low consumption mode was successful. +`activate()` | **bool** | Activates the library. When an adapter is connected, it changes the state to `AUTHENTICATED`. It can also be used to disconnect or reset the adapter. This can block the system for ~1 frame. +`activateAsync()` | **bool** | Activates the library in 3 steps to avoid burning extra cycles for waiting. Call this once per frame! If it returns `false` at any point, the adapter is not connected and you should stop. On success, after the third call, `getState()` should be `AUTHENTICATED`. +`deactivate([turnOff])` | **bool** | Puts the adapter into a low consumption mode and then deactivates the library. It returns a boolean indicating whether the transition to low consumption mode was successful. You can disable the transition and deactivate directly by setting `turnOff` to `true`. `serve([gameName], [userName], [gameId])` | **bool** | Starts broadcasting a server and changes the state to `SERVING`. You can, optionally, provide a `gameName` (max `14` characters), a `userName` (max `8` characters), and a `gameId` *(0 ~ 0x7FFF)* that games will be able to read. The strings must be null-terminated character arrays. If the adapter is already serving, this method only updates the broadcast data. Updating broadcast data while serving can fail if the adapter is busy. In that case, this will return `false` and `getLastError()` will be `BUSY_TRY_AGAIN`. `getServers(servers, [onWait])` | **bool** | Fills the `servers` array with all the currently broadcasting servers. This action takes 1 second to complete, but you can optionally provide an `onWait()` function which will be invoked each time VBlank starts. `getServersAsyncStart()` | **bool** | Starts looking for broadcasting servers and changes the state to `SEARCHING`. After this, call `getServersAsyncEnd(...)` 1 second later. @@ -239,7 +240,7 @@ Name | Return type | Description `keepConnecting()` | **bool** | When connecting, this needs to be called until the state is `CONNECTED`. It assigns a player ID. Keep in mind that `isConnected()` and `playerCount()` won't be updated until the first message from the server arrives. `send(data)` | **bool** | Enqueues `data` to be sent to other nodes. `receive(messages)` | **bool** | Fills the `messages` array with incoming messages, forwarding if needed. -`getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). +`getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::WAITING_TO_START`, `LinkWireless::State::STARTING`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). `isConnected()` | **bool** | Returns `true` if the player count is higher than `1`. `isSessionActive()` | **bool** | Returns `true` if the state is `SERVING` or `CONNECTED`. `playerCount()` | **u8** *(1~5)* | Returns the number of connected players. diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 5e55411..e5b77ce 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -246,6 +246,8 @@ class LinkWireless { enum State { NEEDS_RESET, + WAITING_TO_START, + STARTING, AUTHENTICATED, SEARCHING, SERVING, @@ -339,6 +341,7 @@ class LinkWireless { * @brief Activates the library. When an adapter is connected, it changes the * state to `AUTHENTICATED`. It can also be used to disconnect or reset the * adapter. + * \warning This can block the system for ~1 frame. */ bool activate() { lastError = NONE; @@ -352,14 +355,72 @@ class LinkWireless { return success; } + /** + * @brief Activates the library in 3 steps to avoid burning extra cycles for + * waiting. Call this once per frame! If it returns `false` at any point, the + * adapter is not connected and you should stop. On success, after the third + * call, `getState()` should be `AUTHENTICATED`. + */ + bool activateAsync() { + switch (state) { + case WAITING_TO_START: { + pingAdapterEnd(); + linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); + if (!login()) { + stop(); + state = NEEDS_RESET; + return false; + } + state = STARTING; + return true; + } + case STARTING: { + if (!sendCommand(COMMAND_HELLO).success) { + stop(); + state = NEEDS_RESET; + return false; + } + if (!setup()) { + stop(); + state = NEEDS_RESET; + return false; + } + linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); + state = AUTHENTICATED; + return true; + } + default: { + lastError = NONE; + + LINK_WIRELESS_BARRIER; + isEnabled = false; + LINK_WIRELESS_BARRIER; + + resetState(); + stop(); + + startTimer(); + pingAdapterStart(); + state = WAITING_TO_START; + return true; + } + } + } + /** * @brief Puts the adapter into a low consumption mode and then deactivates * the library. It returns a boolean indicating whether the transition to low * consumption mode was successful. + * @param turnOff Whether the library should put the adapter in the low + * consumption mode or not before deactivation. Defaults to `true`. */ - bool deactivate() { - activate(); - bool success = sendCommand(COMMAND_BYE).success; + bool deactivate(bool turnOff = true) { + bool success = true; + + if (turnOff) { + activate(); + success = sendCommand(COMMAND_BYE).success; + } lastError = NONE; isEnabled = false; @@ -1604,13 +1665,16 @@ class LinkWireless { resetState(); stop(); - bool result = start(); + bool success = start(); + + if (!success) + stop(); LINK_WIRELESS_BARRIER; isEnabled = wasEnabled; LINK_WIRELESS_BARRIER; - return result; + return success; } void resetState() { @@ -1695,13 +1759,19 @@ class LinkWireless { } void pingAdapter() { + pingAdapterStart(); + wait(PING_WAIT); + pingAdapterEnd(); + } + + void pingAdapterStart() { linkGPIO->setMode(LinkGPIO::Pin::SO, LinkGPIO::Direction::OUTPUT); linkGPIO->setMode(LinkGPIO::Pin::SD, LinkGPIO::Direction::OUTPUT); linkGPIO->writePin(LinkGPIO::SD, true); - wait(PING_WAIT); - linkGPIO->writePin(LinkGPIO::SD, false); } + void pingAdapterEnd() { linkGPIO->writePin(LinkGPIO::SD, false); } + bool login() { LoginMemory memory; diff --git a/lib/c_bindings/C_LinkWireless.cpp b/lib/c_bindings/C_LinkWireless.cpp index f786def..3259e39 100644 --- a/lib/c_bindings/C_LinkWireless.cpp +++ b/lib/c_bindings/C_LinkWireless.cpp @@ -26,10 +26,18 @@ bool C_LinkWireless_activate(C_LinkWirelessHandle handle) { return static_cast(handle)->activate(); } +bool C_LinkWireless_activateAsync(C_LinkWirelessHandle handle) { + return static_cast(handle)->activateAsync(); +} + bool C_LinkWireless_deactivate(C_LinkWirelessHandle handle) { return static_cast(handle)->deactivate(); } +bool C_LinkWireless_deactivateButKeepOn(C_LinkWirelessHandle handle) { + return static_cast(handle)->deactivate(false); +} + bool C_LinkWireless_serve(C_LinkWirelessHandle handle, const char* gameName, const char* userName, diff --git a/lib/c_bindings/C_LinkWireless.h b/lib/c_bindings/C_LinkWireless.h index 2f464ed..b92d5f4 100644 --- a/lib/c_bindings/C_LinkWireless.h +++ b/lib/c_bindings/C_LinkWireless.h @@ -30,6 +30,8 @@ typedef void* C_LinkWirelessHandle; typedef enum { C_LINK_WIRELESS_STATE_NEEDS_RESET, + C_LINK_WIRELESS_STATE_WAITING_TO_START, + C_LINK_WIRELESS_STATE_STARTING, C_LINK_WIRELESS_STATE_AUTHENTICATED, C_LINK_WIRELESS_STATE_SEARCHING, C_LINK_WIRELESS_STATE_SERVING, @@ -78,7 +80,10 @@ C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, void C_LinkWireless_destroy(C_LinkWirelessHandle handle); bool C_LinkWireless_activate(C_LinkWirelessHandle handle); +bool C_LinkWireless_activateAsync(C_LinkWirelessHandle handle); bool C_LinkWireless_deactivate(C_LinkWirelessHandle handle); +bool C_LinkWireless_deactivateButKeepOn(C_LinkWirelessHandle handle); + bool C_LinkWireless_serve(C_LinkWirelessHandle handle, const char* gameName, const char* userName, From 5cc1d7236108397e46044a37d97ad0acd9a82754 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 23:44:02 -0300 Subject: [PATCH 189/195] LinkUniversal: Not even trying to serve if wireless activation fails --- lib/LinkUniversal.hpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index 535c84e..f0487c8 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -611,7 +611,7 @@ class LinkUniversal { if (mode == LINK_CABLE) linkCable->deactivate(); else - linkWireless->deactivate(); + linkWireless->deactivate(false); } void toggleMode() { @@ -645,8 +645,12 @@ class LinkUniversal { void start() { if (mode == LINK_CABLE) linkCable->activate(); - else - linkWireless->activate(); + else { + if (!linkWireless->activate()) { + toggleMode(); + return; + } + } state = WAITING; resetState(); From 409a19cf580b85c34f319ced428afd3258efb45e Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Mon, 26 Aug 2024 23:47:57 -0300 Subject: [PATCH 190/195] Changed wireless CMD_TIMEOUT from 100 to 10 --- lib/LinkRawWireless.hpp | 2 +- lib/LinkWireless.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/LinkRawWireless.hpp b/lib/LinkRawWireless.hpp index eaa757f..1464fc4 100644 --- a/lib/LinkRawWireless.hpp +++ b/lib/LinkRawWireless.hpp @@ -55,7 +55,7 @@ class LinkRawWireless { static constexpr int PING_WAIT = 50; static constexpr int TRANSFER_WAIT = 15; - static constexpr int CMD_TIMEOUT = 100; + static constexpr int CMD_TIMEOUT = 10; static constexpr int LOGIN_STEPS = 9; static constexpr int COMMAND_HEADER = 0x9966; static constexpr int RESPONSE_ACK = 0x80; diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index e5b77ce..fa11dca 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -198,7 +198,7 @@ class LinkWireless { static constexpr int PING_WAIT = 50; static constexpr int TRANSFER_WAIT = 15; static constexpr int BROADCAST_SEARCH_WAIT_FRAMES = 60; - static constexpr int CMD_TIMEOUT = 100; + static constexpr int CMD_TIMEOUT = 10; static constexpr int LOGIN_STEPS = 9; static constexpr int COMMAND_HEADER_VALUE = 0x9966; static constexpr int RESPONSE_ACK_VALUE = 0x80; From bdd3de84b333d5eb79981b63c750bcbb43350716 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 27 Aug 2024 00:01:26 -0300 Subject: [PATCH 191/195] Reverting activateAsync --- README.md | 7 ++-- lib/LinkWireless.hpp | 65 +------------------------------ lib/c_bindings/C_LinkWireless.cpp | 4 -- lib/c_bindings/C_LinkWireless.h | 3 -- 4 files changed, 5 insertions(+), 74 deletions(-) diff --git a/README.md b/README.md index 571066c..41b2573 100644 --- a/README.md +++ b/README.md @@ -229,9 +229,8 @@ You can also change these compile-time constants: Name | Return type | Description --- | --- | --- `isActive()` | **bool** | Returns whether the library is active or not. -`activate()` | **bool** | Activates the library. When an adapter is connected, it changes the state to `AUTHENTICATED`. It can also be used to disconnect or reset the adapter. This can block the system for ~1 frame. -`activateAsync()` | **bool** | Activates the library in 3 steps to avoid burning extra cycles for waiting. Call this once per frame! If it returns `false` at any point, the adapter is not connected and you should stop. On success, after the third call, `getState()` should be `AUTHENTICATED`. -`deactivate([turnOff])` | **bool** | Puts the adapter into a low consumption mode and then deactivates the library. It returns a boolean indicating whether the transition to low consumption mode was successful. You can disable the transition and deactivate directly by setting `turnOff` to `true`. +`activate()` | **bool** | Activates the library. When an adapter is connected, it changes the state to `AUTHENTICATED`. It can also be used to disconnect or reset the adapter. +`deactivate()` | **bool** | Puts the adapter into a low consumption mode and then deactivates the library. It returns a boolean indicating whether the transition to low consumption mode was successful. You can disable the transition and deactivate directly by setting `turnOff` to `true`. `serve([gameName], [userName], [gameId])` | **bool** | Starts broadcasting a server and changes the state to `SERVING`. You can, optionally, provide a `gameName` (max `14` characters), a `userName` (max `8` characters), and a `gameId` *(0 ~ 0x7FFF)* that games will be able to read. The strings must be null-terminated character arrays. If the adapter is already serving, this method only updates the broadcast data. Updating broadcast data while serving can fail if the adapter is busy. In that case, this will return `false` and `getLastError()` will be `BUSY_TRY_AGAIN`. `getServers(servers, [onWait])` | **bool** | Fills the `servers` array with all the currently broadcasting servers. This action takes 1 second to complete, but you can optionally provide an `onWait()` function which will be invoked each time VBlank starts. `getServersAsyncStart()` | **bool** | Starts looking for broadcasting servers and changes the state to `SEARCHING`. After this, call `getServersAsyncEnd(...)` 1 second later. @@ -240,7 +239,7 @@ Name | Return type | Description `keepConnecting()` | **bool** | When connecting, this needs to be called until the state is `CONNECTED`. It assigns a player ID. Keep in mind that `isConnected()` and `playerCount()` won't be updated until the first message from the server arrives. `send(data)` | **bool** | Enqueues `data` to be sent to other nodes. `receive(messages)` | **bool** | Fills the `messages` array with incoming messages, forwarding if needed. -`getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::WAITING_TO_START`, `LinkWireless::State::STARTING`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). +`getState()` | **LinkWireless::State** | Returns the current state (one of `LinkWireless::State::NEEDS_RESET`, `LinkWireless::State::AUTHENTICATED`, `LinkWireless::State::SEARCHING`, `LinkWireless::State::SERVING`, `LinkWireless::State::CONNECTING`, or `LinkWireless::State::CONNECTED`). `isConnected()` | **bool** | Returns `true` if the player count is higher than `1`. `isSessionActive()` | **bool** | Returns `true` if the state is `SERVING` or `CONNECTED`. `playerCount()` | **u8** *(1~5)* | Returns the number of connected players. diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index fa11dca..3596940 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -246,8 +246,6 @@ class LinkWireless { enum State { NEEDS_RESET, - WAITING_TO_START, - STARTING, AUTHENTICATED, SEARCHING, SERVING, @@ -341,7 +339,6 @@ class LinkWireless { * @brief Activates the library. When an adapter is connected, it changes the * state to `AUTHENTICATED`. It can also be used to disconnect or reset the * adapter. - * \warning This can block the system for ~1 frame. */ bool activate() { lastError = NONE; @@ -355,58 +352,6 @@ class LinkWireless { return success; } - /** - * @brief Activates the library in 3 steps to avoid burning extra cycles for - * waiting. Call this once per frame! If it returns `false` at any point, the - * adapter is not connected and you should stop. On success, after the third - * call, `getState()` should be `AUTHENTICATED`. - */ - bool activateAsync() { - switch (state) { - case WAITING_TO_START: { - pingAdapterEnd(); - linkSPI->activate(LinkSPI::Mode::MASTER_256KBPS); - if (!login()) { - stop(); - state = NEEDS_RESET; - return false; - } - state = STARTING; - return true; - } - case STARTING: { - if (!sendCommand(COMMAND_HELLO).success) { - stop(); - state = NEEDS_RESET; - return false; - } - if (!setup()) { - stop(); - state = NEEDS_RESET; - return false; - } - linkSPI->activate(LinkSPI::Mode::MASTER_2MBPS); - state = AUTHENTICATED; - return true; - } - default: { - lastError = NONE; - - LINK_WIRELESS_BARRIER; - isEnabled = false; - LINK_WIRELESS_BARRIER; - - resetState(); - stop(); - - startTimer(); - pingAdapterStart(); - state = WAITING_TO_START; - return true; - } - } - } - /** * @brief Puts the adapter into a low consumption mode and then deactivates * the library. It returns a boolean indicating whether the transition to low @@ -1759,19 +1704,13 @@ class LinkWireless { } void pingAdapter() { - pingAdapterStart(); - wait(PING_WAIT); - pingAdapterEnd(); - } - - void pingAdapterStart() { linkGPIO->setMode(LinkGPIO::Pin::SO, LinkGPIO::Direction::OUTPUT); linkGPIO->setMode(LinkGPIO::Pin::SD, LinkGPIO::Direction::OUTPUT); linkGPIO->writePin(LinkGPIO::SD, true); + wait(PING_WAIT); + linkGPIO->writePin(LinkGPIO::SD, false); } - void pingAdapterEnd() { linkGPIO->writePin(LinkGPIO::SD, false); } - bool login() { LoginMemory memory; diff --git a/lib/c_bindings/C_LinkWireless.cpp b/lib/c_bindings/C_LinkWireless.cpp index 3259e39..dc56db6 100644 --- a/lib/c_bindings/C_LinkWireless.cpp +++ b/lib/c_bindings/C_LinkWireless.cpp @@ -26,10 +26,6 @@ bool C_LinkWireless_activate(C_LinkWirelessHandle handle) { return static_cast(handle)->activate(); } -bool C_LinkWireless_activateAsync(C_LinkWirelessHandle handle) { - return static_cast(handle)->activateAsync(); -} - bool C_LinkWireless_deactivate(C_LinkWirelessHandle handle) { return static_cast(handle)->deactivate(); } diff --git a/lib/c_bindings/C_LinkWireless.h b/lib/c_bindings/C_LinkWireless.h index b92d5f4..7d38660 100644 --- a/lib/c_bindings/C_LinkWireless.h +++ b/lib/c_bindings/C_LinkWireless.h @@ -30,8 +30,6 @@ typedef void* C_LinkWirelessHandle; typedef enum { C_LINK_WIRELESS_STATE_NEEDS_RESET, - C_LINK_WIRELESS_STATE_WAITING_TO_START, - C_LINK_WIRELESS_STATE_STARTING, C_LINK_WIRELESS_STATE_AUTHENTICATED, C_LINK_WIRELESS_STATE_SEARCHING, C_LINK_WIRELESS_STATE_SERVING, @@ -80,7 +78,6 @@ C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, void C_LinkWireless_destroy(C_LinkWirelessHandle handle); bool C_LinkWireless_activate(C_LinkWirelessHandle handle); -bool C_LinkWireless_activateAsync(C_LinkWirelessHandle handle); bool C_LinkWireless_deactivate(C_LinkWirelessHandle handle); bool C_LinkWireless_deactivateButKeepOn(C_LinkWirelessHandle handle); From d97a104f34c69a4c0e960dbb3d6ee00d96b89569 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 27 Aug 2024 01:20:34 -0300 Subject: [PATCH 192/195] Updating asyncACKTimerId docs --- README.md | 2 +- lib/LinkWireless.hpp | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 41b2573..70bf997 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ Name | Type | Default | Description `timeout` | **u32** | `10` | Maximum number of *frames* without receiving data from other player before resetting the connection. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. You can use `Link::perFrame(...)` to convert from *packets per frame* to *interval values*. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. -`asyncACKTimerId` | **s8** *(0~3 or -1)* | `-1` | GBA Timer to use for ACKs. If you have free timers, use one here to reduce CPU usage. +`asyncACKTimerId` | **s8** *(0~3 or -1)* | `-1` | This GBA timer is used to asynchronously acknowledge the adapter transfers. It is disabled by default, with the acknowledgment procedure performed during SERIAL interrupts. You can update these values at any time without creating a new instance: - Call `deactivate()`. diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 3596940..4aea998 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -304,8 +304,9 @@ class LinkWireless { * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values * will transfer faster but also consume more CPU. * @param sendTimerId GBA Timer to use for sending. - * @param asyncACKTimerId GBA Timer to use for ACKs. If you have free timers, - * use one here to reduce CPU usage. + * @param asyncACKTimerId This GBA timer is used to asynchronously acknowledge + * the adapter transfers. It is disabled by default, with the acknowledgment + * procedure performed during SERIAL interrupts. * \warning You can use `Link::perFrame(...)` to convert from *packets per * frame* to *interval values*. */ From 57a818d5d07b82608c6139ce087eba68f18fa48d Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 27 Aug 2024 04:41:19 -0300 Subject: [PATCH 193/195] LinkCable: Preventing repeated packets by clearing send buffer after each serial interrupt --- lib/LinkCable.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/LinkCable.hpp b/lib/LinkCable.hpp index ad4a1ee..ac3789d 100644 --- a/lib/LinkCable.hpp +++ b/lib/LinkCable.hpp @@ -331,6 +331,8 @@ class LinkCable { state.currentPlayerId = (Link::_REG_SIOCNT & (0b11 << BITS_PLAYER_ID)) >> BITS_PLAYER_ID; + Link::_REG_SIOMLT_SEND = LINK_CABLE_NO_DATA; + if (!isMaster()) sendPendingData(); @@ -432,6 +434,7 @@ class LinkCable { } void stop() { + Link::_REG_SIOMLT_SEND = LINK_CABLE_NO_DATA; stopTimer(); setGeneralPurposeMode(); } From 44453da09fb94eac4a8bfcbec360972a2dc5fe32 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 27 Aug 2024 06:05:05 -0300 Subject: [PATCH 194/195] LinkWireless: deprecating asyncACKTimerId. With last changes, it's not needed and actually burns more cycles --- README.md | 1 - examples/LinkCable_stress/src/main.cpp | 5 +- examples/LinkUniversal_basic/src/main.cpp | 29 +++-- examples/LinkWireless_demo/src/main.cpp | 24 +--- lib/LinkUniversal.hpp | 24 +--- lib/LinkWireless.cpp | 16 --- lib/LinkWireless.hpp | 136 +++------------------- lib/c_bindings/C_LinkUniversal.cpp | 6 +- lib/c_bindings/C_LinkUniversal.h | 6 - lib/c_bindings/C_LinkWireless.cpp | 9 +- lib/c_bindings/C_LinkWireless.h | 8 +- 11 files changed, 43 insertions(+), 221 deletions(-) diff --git a/README.md b/README.md index 70bf997..2b58d2e 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,6 @@ Name | Type | Default | Description `timeout` | **u32** | `10` | Maximum number of *frames* without receiving data from other player before resetting the connection. `interval` | **u16** | `50` | Number of *1024-cycle ticks* (61.04μs) between transfers *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values will transfer faster but also consume more CPU. You can use `Link::perFrame(...)` to convert from *packets per frame* to *interval values*. `sendTimerId` | **u8** *(0~3)* | `3` | GBA Timer to use for sending. -`asyncACKTimerId` | **s8** *(0~3 or -1)* | `-1` | This GBA timer is used to asynchronously acknowledge the adapter transfers. It is disabled by default, with the acknowledgment procedure performed during SERIAL interrupts. You can update these values at any time without creating a new instance: - Call `deactivate()`. diff --git a/examples/LinkCable_stress/src/main.cpp b/examples/LinkCable_stress/src/main.cpp index 938083b..4e87685 100644 --- a/examples/LinkCable_stress/src/main.cpp +++ b/examples/LinkCable_stress/src/main.cpp @@ -48,8 +48,7 @@ LinkUniversal* linkUniversal = .maxPlayers = 2, .timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, .interval = LINK_WIRELESS_DEFAULT_INTERVAL, - .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - .asyncACKTimerId = 0}, + .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID}, __qran_seed); LinkUniversal* linkConnection = linkUniversal; #endif @@ -76,8 +75,6 @@ void init() { interrupt_enable(INTR_SERIAL); interrupt_set_handler(INTR_TIMER3, LINK_UNIVERSAL_ISR_TIMER); interrupt_enable(INTR_TIMER3); - interrupt_set_handler(INTR_TIMER0, LINK_UNIVERSAL_ISR_ACK_TIMER); - interrupt_enable(INTR_TIMER0); #endif } diff --git a/examples/LinkUniversal_basic/src/main.cpp b/examples/LinkUniversal_basic/src/main.cpp index 1c334f6..f806ef3 100644 --- a/examples/LinkUniversal_basic/src/main.cpp +++ b/examples/LinkUniversal_basic/src/main.cpp @@ -43,21 +43,20 @@ int main() { u32 maxPlayers = (initialKeys & KEY_B) ? 2 : LINK_UNIVERSAL_MAX_PLAYERS; // (1) Create a LinkUniversal instance - linkUniversal = new LinkUniversal( - protocol, "LinkUNI", - (LinkUniversal::CableOptions){ - .baudRate = LinkCable::BAUD_RATE_1, - .timeout = LINK_CABLE_DEFAULT_TIMEOUT, - .interval = LINK_CABLE_DEFAULT_INTERVAL, - .sendTimerId = LINK_CABLE_DEFAULT_SEND_TIMER_ID}, - (LinkUniversal::WirelessOptions){ - .retransmission = true, - .maxPlayers = maxPlayers, - .timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, - .interval = LINK_WIRELESS_DEFAULT_INTERVAL, - .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - .asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, - __qran_seed); + linkUniversal = + new LinkUniversal(protocol, "LinkUNI", + (LinkUniversal::CableOptions){ + .baudRate = LinkCable::BAUD_RATE_1, + .timeout = LINK_CABLE_DEFAULT_TIMEOUT, + .interval = LINK_CABLE_DEFAULT_INTERVAL, + .sendTimerId = LINK_CABLE_DEFAULT_SEND_TIMER_ID}, + (LinkUniversal::WirelessOptions){ + .retransmission = true, + .maxPlayers = maxPlayers, + .timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, + .interval = LINK_WIRELESS_DEFAULT_INTERVAL, + .sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID}, + __qran_seed); // (2) Add the required interrupt service routines interrupt_init(); diff --git a/examples/LinkWireless_demo/src/main.cpp b/examples/LinkWireless_demo/src/main.cpp index dc73e56..909ff78 100644 --- a/examples/LinkWireless_demo/src/main.cpp +++ b/examples/LinkWireless_demo/src/main.cpp @@ -34,7 +34,7 @@ void hang(); LinkWireless::Error lastError; LinkWireless* linkWireless = nullptr; -bool forwarding, retransmission, asyncACK; +bool forwarding, retransmission; u32 maxPlayers; void init() { @@ -69,20 +69,17 @@ start: "Press A to start\n\n" "hold LEFT on start:\n -> disable forwarding\n\n" "hold UP on start:\n -> disable retransmission\n\n" - "hold B on start:\n -> set 2 players\n\n" - "hold START on start:\n -> async ACK"); + "hold B on start:\n -> set 2 players"); waitFor(KEY_A); u16 initialKeys = ~REG_KEYS & KEY_ANY; forwarding = !(initialKeys & KEY_LEFT); retransmission = !(initialKeys & KEY_UP); maxPlayers = (initialKeys & KEY_B) ? 2 : LINK_WIRELESS_MAX_PLAYERS; - asyncACK = initialKeys & KEY_START; // (1) Create a LinkWireless instance linkWireless = new LinkWireless( forwarding, retransmission, maxPlayers, LINK_WIRELESS_DEFAULT_TIMEOUT, - LINK_WIRELESS_DEFAULT_INTERVAL, LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - asyncACK ? 0 : -1); + LINK_WIRELESS_DEFAULT_INTERVAL, LINK_WIRELESS_DEFAULT_SEND_TIMER_ID); // linkWireless->debug = [](std::string str) { log(str); }; // (2) Add the required interrupt service routines @@ -94,10 +91,6 @@ start: interrupt_set_handler(INTR_TIMER3, LINK_WIRELESS_ISR_TIMER); interrupt_enable(INTR_TIMER3); - // (only required when using async ACK) - interrupt_set_handler(INTR_TIMER0, LINK_WIRELESS_ISR_ACK_TIMER); - interrupt_enable(INTR_TIMER0); - // (3) Initialize the library linkWireless->activate(); @@ -114,8 +107,7 @@ start: "(SELECT = cancel)\n (START = activate)\n\n-> forwarding: " + (forwarding ? "ON" : "OFF") + "\n-> retransmission: " + (retransmission ? "ON" : "OFF") + - "\n-> max players: " + std::to_string(maxPlayers) + - "\n-> async ACK: " + (asyncACK ? "ON" : "OFF")); + "\n-> max players: " + std::to_string(maxPlayers)); // SELECT = back if (keys & KEY_SELECT) { @@ -431,22 +423,16 @@ void messageLoop() { output += "\n_onVBlank: " + std::to_string(linkWireless->lastVBlankTime); output += "\n_onSerial: " + std::to_string(linkWireless->lastSerialTime); output += "\n_onTimer: " + std::to_string(linkWireless->lastTimerTime); - if (asyncACK) - output += " | " + std::to_string(linkWireless->lastACKTimerTime); output += "\n_serialIRQs: " + std::to_string(linkWireless->lastFrameSerialIRQs); output += "\n_timerIRQs: " + std::to_string(linkWireless->lastFrameTimerIRQs); - if (asyncACK) - output += " | " + std::to_string(linkWireless->lastFrameACKTimerIRQs); output += "\n_ms: " + std::to_string(linkWireless->toMs( linkWireless->lastVBlankTime + linkWireless->lastSerialTime * linkWireless->lastFrameSerialIRQs + - linkWireless->lastTimerTime * linkWireless->lastFrameTimerIRQs + - linkWireless->lastACKTimerTime * - linkWireless->lastFrameACKTimerIRQs)); + linkWireless->lastTimerTime * linkWireless->lastFrameTimerIRQs)); #else if (lostPackets > 0) { output += "\n\n_lostPackets: " + std::to_string(lostPackets) + "\n"; diff --git a/lib/LinkUniversal.hpp b/lib/LinkUniversal.hpp index f0487c8..267bdd2 100644 --- a/lib/LinkUniversal.hpp +++ b/lib/LinkUniversal.hpp @@ -12,8 +12,6 @@ // irq_add(II_VBLANK, LINK_UNIVERSAL_ISR_VBLANK); // irq_add(II_SERIAL, LINK_UNIVERSAL_ISR_SERIAL); // irq_add(II_TIMER3, LINK_UNIVERSAL_ISR_TIMER); -// irq_add(II_TIMER2, LINK_UNIVERSAL_ISR_ACK_TIMER); // (*) -// // optional, for `LinkWireless::asyncACKTimerId` -----^ // - 3) Initialize the library with: // linkUniversal->activate(); // - 4) Sync: @@ -120,7 +118,6 @@ class LinkUniversal { u32 timeout; u16 interval; u8 sendTimerId; - s8 asyncACKTimerId; }; /** @@ -147,8 +144,7 @@ class LinkUniversal { true, LINK_UNIVERSAL_MAX_PLAYERS, LINK_WIRELESS_DEFAULT_TIMEOUT, LINK_WIRELESS_DEFAULT_INTERVAL, - LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID}, + LINK_WIRELESS_DEFAULT_SEND_TIMER_ID}, int randomSeed = 123) { this->linkCable = new LinkCable(cableOptions.baudRate, cableOptions.timeout, @@ -157,7 +153,7 @@ class LinkUniversal { wirelessOptions.retransmission, true, Link::_min(wirelessOptions.maxPlayers, LINK_UNIVERSAL_MAX_PLAYERS), wirelessOptions.timeout, wirelessOptions.interval, - wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId); + wirelessOptions.sendTimerId); this->config.protocol = protocol; this->config.gameName = gameName; @@ -440,15 +436,6 @@ class LinkUniversal { linkWireless->_onTimer(); } - /** - * @brief This method is called by the other TIMER interrupt handler. - * \warning This is internal API! - */ - void _onACKTimer() { - if (mode == LINK_WIRELESS) - linkWireless->_onACKTimer(); - } - LinkCable* linkCable; LinkWireless* linkWireless; @@ -712,11 +699,4 @@ inline void LINK_UNIVERSAL_ISR_TIMER() { linkUniversal->_onTimer(); } -/** - * @brief TIMER interrupt handler used for ACKs. - */ -inline void LINK_UNIVERSAL_ISR_ACK_TIMER() { - linkUniversal->_onACKTimer(); -} - #endif // LINK_UNIVERSAL_H diff --git a/lib/LinkWireless.cpp b/lib/LinkWireless.cpp index 30d6977..57b6a55 100644 --- a/lib/LinkWireless.cpp +++ b/lib/LinkWireless.cpp @@ -27,22 +27,6 @@ LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onTimer() { __onTimer(); -#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ - irqEnd(); -#endif -} -LINK_WIRELESS_CODE_IWRAM void LinkWireless::_onACKTimer() { -#ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ - if (interrupt) - return; - - interrupt = true; - LINK_WIRELESS_BARRIER; - Link::_REG_IME = 1; -#endif - - __onACKTimer(); - #ifdef LINK_WIRELESS_ENABLE_NESTED_IRQ irqEnd(); #endif diff --git a/lib/LinkWireless.hpp b/lib/LinkWireless.hpp index 4aea998..23feb1f 100644 --- a/lib/LinkWireless.hpp +++ b/lib/LinkWireless.hpp @@ -12,8 +12,6 @@ // irq_add(II_VBLANK, LINK_WIRELESS_ISR_VBLANK); // irq_add(II_SERIAL, LINK_WIRELESS_ISR_SERIAL); // irq_add(II_TIMER3, LINK_WIRELESS_ISR_TIMER); -// irq_add(II_TIMER2, LINK_WIRELESS_ISR_ACK_TIMER); // --v -// // optional, for `LinkWireless::asyncACKTimerId` -----^ // - 3) Initialize the library with: // linkWireless->activate(); // - 4) Start a server: @@ -161,7 +159,6 @@ static volatile char LINK_WIRELESS_VERSION[] = "LinkWireless/v7.0.0"; #define LINK_WIRELESS_DEFAULT_TIMEOUT 10 #define LINK_WIRELESS_DEFAULT_INTERVAL 50 #define LINK_WIRELESS_DEFAULT_SEND_TIMER_ID 3 -#define LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID -1 #define LINK_WIRELESS_BARRIER asm volatile("" ::: "memory") #define LINK_WIRELESS_CODE_IWRAM \ __attribute__((section(".iwram"), target("arm"), noinline)) @@ -235,13 +232,10 @@ class LinkWireless { u32 lastVBlankTime = 0; u32 lastSerialTime = 0; u32 lastTimerTime = 0; - u32 lastACKTimerTime = 0; u32 lastFrameSerialIRQs = 0; u32 lastFrameTimerIRQs = 0; - u32 lastFrameACKTimerIRQs = 0; u32 serialIRQCount = 0; u32 timerIRQCount = 0; - u32 ackTimerIRQCount = 0; #endif enum State { @@ -304,20 +298,15 @@ class LinkWireless { * *(50 = 3.052ms)*. It's the interval of Timer #`sendTimerId`. Lower values * will transfer faster but also consume more CPU. * @param sendTimerId GBA Timer to use for sending. - * @param asyncACKTimerId This GBA timer is used to asynchronously acknowledge - * the adapter transfers. It is disabled by default, with the acknowledgment - * procedure performed during SERIAL interrupts. * \warning You can use `Link::perFrame(...)` to convert from *packets per * frame* to *interval values*. */ - explicit LinkWireless( - bool forwarding = true, - bool retransmission = true, - u8 maxPlayers = LINK_WIRELESS_MAX_PLAYERS, - u32 timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, - u16 interval = LINK_WIRELESS_DEFAULT_INTERVAL, - u8 sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID, - s8 asyncACKTimerId = LINK_WIRELESS_DEFAULT_ASYNC_ACK_TIMER_ID) { + explicit LinkWireless(bool forwarding = true, + bool retransmission = true, + u8 maxPlayers = LINK_WIRELESS_MAX_PLAYERS, + u32 timeout = LINK_WIRELESS_DEFAULT_TIMEOUT, + u16 interval = LINK_WIRELESS_DEFAULT_INTERVAL, + u8 sendTimerId = LINK_WIRELESS_DEFAULT_SEND_TIMER_ID) { #ifdef LINK_WIRELESS_TWO_PLAYERS_ONLY maxPlayers = 2; #endif @@ -328,7 +317,6 @@ class LinkWireless { this->config.timeout = timeout; this->config.interval = interval; this->config.sendTimerId = sendTimerId; - this->config.asyncACKTimerId = asyncACKTimerId; } /** @@ -861,21 +849,17 @@ class LinkWireless { lastVBlankTime = profileStop(); lastFrameSerialIRQs = serialIRQCount; lastFrameTimerIRQs = timerIRQCount; - lastFrameACKTimerIRQs = ackTimerIRQCount; serialIRQCount = 0; timerIRQCount = 0; - ackTimerIRQCount = 0; #endif } #ifdef LINK_WIRELESS_PUT_ISR_IN_IWRAM void _onSerial(); void _onTimer(); - void _onACKTimer(); #else void _onSerial() { __onSerial(); } void _onTimer() { __onTimer(); } - void _onACKTimer() { __onACKTimer(); } #endif /** @@ -893,40 +877,25 @@ class LinkWireless { linkSPI->_onSerial(true); bool hasNewData = linkSPI->getAsyncState() == LinkSPI::AsyncState::READY; - if (!usesAsyncACK()) { - if (hasNewData) { - if (!acknowledge()) { - reset(); - lastError = ACKNOWLEDGE_FAILED; - return; - } - } else + if (hasNewData) { + if (!acknowledge()) { + reset(); + lastError = ACKNOWLEDGE_FAILED; return; - } + } + } else + return; u32 newData = linkSPI->getAsyncData(); if (!isSessionActive()) return; if (asyncCommand.isActive) { - if (usesAsyncACK()) { - if (asyncCommand.ackStep != AsyncCommand::ACKStep::READY) - return; + if (asyncCommand.state == AsyncCommand::State::PENDING) { + updateAsyncCommand(newData); - if (hasNewData) { - linkSPI->_setSOLow(); - asyncCommand.ackStep = AsyncCommand::ACKStep::WAITING_FOR_HIGH; - asyncCommand.pendingData = newData; - startACKTimer(); - } else - return; - } else { - if (asyncCommand.state == AsyncCommand::State::PENDING) { - updateAsyncCommand(newData); - - if (asyncCommand.state == AsyncCommand::State::COMPLETED) - processAsyncCommand(); - } + if (asyncCommand.state == AsyncCommand::State::COMPLETED) + processAsyncCommand(); } } @@ -960,47 +929,6 @@ class LinkWireless { #endif } - /** - * @brief This method is called by the other TIMER interrupt handler. - * \warning This is internal API! - */ - LINK_WIRELESS_ALWAYS_INLINE void __onACKTimer() { - if (!isEnabled || !asyncCommand.isActive || - asyncCommand.ackStep == AsyncCommand::ACKStep::READY) - return; - - if (asyncCommand.ackStep == AsyncCommand::ACKStep::WAITING_FOR_HIGH) { - if (!linkSPI->_isSIHigh()) - return; - - linkSPI->_setSOHigh(); - asyncCommand.ackStep = AsyncCommand::ACKStep::WAITING_FOR_LOW; - } else if (asyncCommand.ackStep == AsyncCommand::ACKStep::WAITING_FOR_LOW) { - if (linkSPI->_isSIHigh()) - return; - -#ifdef PROFILING_ENABLED - profileStart(); -#endif - - linkSPI->_setSOLow(); - asyncCommand.ackStep = AsyncCommand::ACKStep::READY; - stopACKTimer(); - - if (asyncCommand.state == AsyncCommand::State::PENDING) { - updateAsyncCommand(asyncCommand.pendingData); - - if (asyncCommand.state == AsyncCommand::State::COMPLETED) - processAsyncCommand(); - } - -#ifdef PROFILING_ENABLED - lastACKTimerTime = profileStop(); - ackTimerIRQCount++; -#endif - } - } - struct Config { bool forwarding; bool retransmission; @@ -1008,7 +936,6 @@ class LinkWireless { u32 timeout; u32 interval; u32 sendTimerId; - s8 asyncACKTimerId; }; /** @@ -1088,8 +1015,6 @@ class LinkWireless { DATA_REQUEST }; - enum ACKStep { READY, WAITING_FOR_HIGH, WAITING_FOR_LOW }; - u8 type; u32 parameters[LINK_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH]; u32 responses[LINK_WIRELESS_MAX_COMMAND_RESPONSE_LENGTH]; @@ -1098,8 +1023,6 @@ class LinkWireless { Step step; u32 sentParameters, totalParameters; u32 receivedResponses, totalResponses; - u32 pendingData; - ACKStep ackStep; bool isActive; }; @@ -1560,17 +1483,6 @@ class LinkWireless { nextAsyncCommandDataSize++; } - void startACKTimer() { - Link::_REG_TM[config.asyncACKTimerId].start = -1; - Link::_REG_TM[config.asyncACKTimerId].cnt = - Link::_TM_ENABLE | Link::_TM_IRQ | BASE_FREQUENCY; - } - - void stopACKTimer() { - Link::_REG_TM[config.asyncACKTimerId].cnt = - Link::_REG_TM[config.asyncACKTimerId].cnt & (~Link::_TM_ENABLE); - } - void copyName(char* target, const char* source, u32 length) { u32 len = std::strlen(source); @@ -1664,9 +1576,6 @@ class LinkWireless { void stop() { stopTimer(); - if (usesAsyncACK()) - stopACKTimer(); - linkSPI->deactivate(); } @@ -1808,8 +1717,6 @@ class LinkWireless { asyncCommand.totalParameters = withData ? nextAsyncCommandDataSize : 0; asyncCommand.receivedResponses = 0; asyncCommand.totalResponses = 0; - asyncCommand.pendingData = 0; - asyncCommand.ackStep = AsyncCommand::ACKStep::READY; asyncCommand.isActive = true; u32 command = buildCommand(type, asyncCommand.totalParameters); @@ -1937,8 +1844,6 @@ class LinkWireless { return true; } - bool usesAsyncACK() { return config.asyncACKTimerId > -1; } - bool cmdTimeout(u32& lines, u32& vCount) { return timeout(CMD_TIMEOUT, lines, vCount); } @@ -2039,11 +1944,4 @@ inline void LINK_WIRELESS_ISR_TIMER() { linkWireless->_onTimer(); } -/** - * @brief TIMER interrupt handler used for ACKs. - */ -inline void LINK_WIRELESS_ISR_ACK_TIMER() { - linkWireless->_onACKTimer(); -} - #endif // LINK_WIRELESS_H diff --git a/lib/c_bindings/C_LinkUniversal.cpp b/lib/c_bindings/C_LinkUniversal.cpp index 02a2e71..c794a37 100644 --- a/lib/c_bindings/C_LinkUniversal.cpp +++ b/lib/c_bindings/C_LinkUniversal.cpp @@ -22,7 +22,7 @@ C_LinkUniversalHandle C_LinkUniversal_create( LinkUniversal::WirelessOptions{ wirelessOptions.retransmission, wirelessOptions.maxPlayers, wirelessOptions.timeout, wirelessOptions.interval, - wirelessOptions.sendTimerId, wirelessOptions.asyncACKTimerId}, + wirelessOptions.sendTimerId}, randomSeed); } @@ -125,8 +125,4 @@ void C_LinkUniversal_onSerial(C_LinkUniversalHandle handle) { void C_LinkUniversal_onTimer(C_LinkUniversalHandle handle) { static_cast(handle)->_onTimer(); } - -void C_LinkUniversal_onACKTimer(C_LinkUniversalHandle handle) { - static_cast(handle)->_onACKTimer(); -} } diff --git a/lib/c_bindings/C_LinkUniversal.h b/lib/c_bindings/C_LinkUniversal.h index b31ff78..b7b54ab 100644 --- a/lib/c_bindings/C_LinkUniversal.h +++ b/lib/c_bindings/C_LinkUniversal.h @@ -44,7 +44,6 @@ typedef struct { u32 timeout; u16 interval; u8 sendTimerId; - s8 asyncACKTimerId; } C_LinkUniversal_WirelessOptions; C_LinkUniversalHandle C_LinkUniversal_createDefault(); @@ -90,7 +89,6 @@ u32 C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle); void C_LinkUniversal_onVBlank(C_LinkUniversalHandle handle); void C_LinkUniversal_onSerial(C_LinkUniversalHandle handle); void C_LinkUniversal_onTimer(C_LinkUniversalHandle handle); -void C_LinkUniversal_onACKTimer(C_LinkUniversalHandle handle); extern C_LinkUniversalHandle cLinkUniversal; @@ -106,10 +104,6 @@ inline void C_LINK_UNIVERSAL_ISR_TIMER() { C_LinkUniversal_onTimer(cLinkUniversal); } -inline void C_LINK_UNIVERSAL_ISR_ACK_TIMER() { - C_LinkUniversal_onACKTimer(cLinkUniversal); -} - #ifdef __cplusplus } #endif diff --git a/lib/c_bindings/C_LinkWireless.cpp b/lib/c_bindings/C_LinkWireless.cpp index dc56db6..92cd2f5 100644 --- a/lib/c_bindings/C_LinkWireless.cpp +++ b/lib/c_bindings/C_LinkWireless.cpp @@ -12,10 +12,9 @@ C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, u8 maxPlayers, u32 timeout, u16 interval, - u8 sendTimerId, - s8 asyncACKTimerId) { + u8 sendTimerId) { return new LinkWireless(forwarding, retransmission, maxPlayers, timeout, - interval, sendTimerId, asyncACKTimerId); + interval, sendTimerId); } void C_LinkWireless_destroy(C_LinkWirelessHandle handle) { @@ -186,8 +185,4 @@ void C_LinkWireless_onSerial(C_LinkWirelessHandle handle) { void C_LinkWireless_onTimer(C_LinkWirelessHandle handle) { static_cast(handle)->_onTimer(); } - -void C_LinkWireless_onACKTimer(C_LinkWirelessHandle handle) { - static_cast(handle)->_onACKTimer(); -} } diff --git a/lib/c_bindings/C_LinkWireless.h b/lib/c_bindings/C_LinkWireless.h index 7d38660..517f88f 100644 --- a/lib/c_bindings/C_LinkWireless.h +++ b/lib/c_bindings/C_LinkWireless.h @@ -73,8 +73,7 @@ C_LinkWirelessHandle C_LinkWireless_create(bool forwarding, u8 maxPlayers, u32 timeout, u16 interval, - u8 sendTimerId, - s8 asyncACKTimerId); + u8 sendTimerId); void C_LinkWireless_destroy(C_LinkWirelessHandle handle); bool C_LinkWireless_activate(C_LinkWirelessHandle handle); @@ -122,7 +121,6 @@ u32 C_LinkWireless_nextPendingPacketId(C_LinkWirelessHandle handle); void C_LinkWireless_onVBlank(C_LinkWirelessHandle handle); void C_LinkWireless_onSerial(C_LinkWirelessHandle handle); void C_LinkWireless_onTimer(C_LinkWirelessHandle handle); -void C_LinkWireless_onACKTimer(C_LinkWirelessHandle handle); extern C_LinkWirelessHandle cLinkWireless; @@ -138,10 +136,6 @@ inline void C_LINK_WIRELESS_ISR_TIMER() { C_LinkWireless_onTimer(cLinkWireless); } -inline void C_LINK_WIRELESS_ISR_ACK_TIMER() { - C_LinkWireless_onACKTimer(cLinkWireless); -} - #ifdef __cplusplus } #endif From 8cc6e900fe89d86ce5850430a71980ef824caf6b Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Tue, 27 Aug 2024 06:54:27 -0300 Subject: [PATCH 195/195] Talking about LinkUniversal_real --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b58d2e..3443dc7 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ A set of Game Boy Advance (GBA) C++ libraries to interact with the Serial Port. * **Compiled ROMs are available** in [Releases](https://github.com/afska/gba-link-connection/releases). * The example code uses [libtonc](https://github.com/gbadev-org/libtonc) (and [libugba](https://github.com/AntonioND/libugba) for interrupts), but any library can be used. * The examples can be tested on real GBAs or using emulators. - * For `LinkCable`/`LinkWireless`/`LinkUniversal`, stress tests are provided to help you tweak your configuration. + * For `LinkCable`/`LinkWireless`/`LinkUniversal`, stress tests are provided to help you tweak your configuration. The [LinkUniversal_real](https://github.com/afska/gba-link-universal-test) ROM tests a more real scenario using an audio player, a background video, text and sprites. * The `LinkCableMultiboot_demo` and `LinkWirelessMultiboot_demo` examples can bootstrap all other examples, allowing you to test with multiple units even if you only have one flashcart. > The files use some compiler extensions, so using **GCC** is required.

    +B73& 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 U(HZaRq#PMEC zk8yCO2`sm>i24$vbt)QZwX19Fo5+aH2TD-zjpERkZ1!SSUV}f0U^MKiH;rJ*fUs*7u;!#QPrI>9 zjT8T2Nd8L9QX%`GDNvJtVs?QW0iFcJT)>S0F9Bw2FusE^5;zSo--AJ)A|@&)DaOmo z3tR{A7=J*Ma&muJg+Fcq%<;g$h>PH5$RrIlH6eapQzIi_R0u)>(xP}_VPO$rJebHu zi39`!0Y+^ZX-VK!lx3u7dOG4n5#V#c04+%n1~asYp%LI!N=t|XR|C8X@FR*8;362n z8p)7I@^ZjL;DrPQVn121IEpphiS!ITUP6 zDl(E11iY4-3K1_zBnV50;DNmXb_>kMU{KajR{`^}gs>2pkI525FcX`b7y-jW78Uuk zI1>|*6940}CW5STp2&ScL`~ozp=GGuW`$|Cx1OGis@sA#?D2zo$amP`Cb{Xe=mYUC*qY$ zOs&TbA7qxQ{Se8a&W4Ld7-jLtU>r#Nv3$pC`QijaO!(qO;v9Js#ICdPCQ6lT@g&JS z8RCyne@41(P3iWYGG#rAqOoagX7vZaev%}Npb(p}bQAet&np&!*m^h{U+|Huc3N17 zkS#{l?V59m-GLi!R;u+7mJ0&2*@zQ~vpL-N-uz`q(phXEqH}pL)AUwW(FxN#2xXnh zCPu(d9}lQgJKDA|?ky>n%{~hPV>qdQEQ0EkMHn%-aJKjENXqLsva=6FG}FwcHH|T< ziX6U4_t?B`3}9}}P<>|JQc(k}0F@TQ;b4;ihtROozFa(PZV(8zTD0$Oxd?xp0P8tu zJzoH%z6ES~6yuPsBC7RFTsUH!zPZV?Z*`|nA2XiYSwEc_k}^(bfmHWGxmYbtZJ=;A zVnz5~)y-SXtg3Cvi;}&I`+Md8*V#P=HHO-PjmIBEIykuh&XYir^!M=%5+jfyffJA-E)0$> zaL$5c2%OH~;FOa95e@<5Nit%>AUIJYiGcKiB8~@N)mXGqR0>hOpQS@Aud4>0!fK9K|oDSO_GQQ z!HEjUW+a6{>I2jQ#6M~zVHFZVLPP-MA0Poz24RLIQI$*-7ZDW3@q*+?Lqh``-&879 zRT`Z5WLXJOpe`WxP$m2?W~?D4ZCDC)-H0Cy@@EYR(F})0Qf2 zeB}b^z#Yp(Vb1Cc+e$^9S7Cmi@nOBUt>8NDdu7{KOWzeiF*rxFGvvqzj?CVFR{jxp zsqm~aGd@3ua_^d`Go>41?GVpnIWKe6mk-4&D_F$}@lQL$&h&j&%fikY=bxHm+0?3a zbI*e}KR47_U!8n(nSGypM9_Li^KpgKT{?l^yxv~qO?EK&3>GfVs>GQAj#@cRJYt??w__^G6=#r`Z2iJ=;>{~*SZ$^#nBVZqA z$0FGp`Q1I3y&Z<)u!lDBae}8Dao#P7*PY_-B-T#&zZB5GCGp*(9z7iqzI8M~d1baR z`D{bz;Z)WYZ?Ob2OfxtAMqa}0j4jb;Syv2|hb2xhKI0^>Qm$tepU{J4-#M*wTxur6 zE`WU`i*|k6(}TVA!?DyOgSe6`@78B|Cl1w-Z|A8WKieETsOgFzG>A@eHr; zML306553iYZo!)QLPR5!4f|)?A$ESm^l7Su6O3R|Q4d?S2RF9wu+(SdZ_U_)n?ef` zVCA2BzQlaQ;TqVhLk_LHm_EK_n5Q78?^ zjtl6dD|hfa7toM=j%(4J-bC9NehrP1^|u_}5r#~*HidM~eM1#ZSX0?9WhQY0eK@;A z9V8Z^=B5wjvh)n+XF_GJ88TS}qUg-R!TPN{`ks|h_>X>x`cRyen@ubZpOOLRcPX}Q zK$ElTH5~sj>65^Z8wCREghW7||D_f{D*koS2T}pXd7uqIEr3)2*#HAI82Q223r6z4 zuaBKLaRS8DU>O0l0qg?6P!BSBuu5oXXh=&-1M2_)fd`5L77fG0!(e6ydy0Ga?tx(( ztPg;MfHeWg-X|s|jE#-Ko&ksfSUrr6jsm#?p?zXvA_&Pr&NO^9c#l;2ecbc1F zJ}WCLKR^G@ojV|kFDfdsva+hHt2=k@99ZiBnmyR>fIZIt-m~@pys!4JYQZDp++I=G z6b}pU{5o;Fn%2*I*%z7)cH^n6 z7yr3>xGLlFZ>xv@XgB`hh`9bF&bi&xv#K2UfN{Z+Y$s%;!Y2%)evz5{V%dc}d-kfQ5Vu!tw@`f;r}L?L;R4vT`#!gO*EJqqfT0Q^ zAjPN15cVHpy(5sXr}XKtwo|qZ58v#XLFzf?>qj3S;1D_iGYwl~K^b0%Y?sK?$3()~ zo@>zv+BWX>Oe`oGO`1hNjDdEc5}QS-Y|V;U8$z$=o$V zPEH0lcuOLj9lDCGtaQd$q1K33^t5)nr`*YK!f^W0BaX5|yLM8MLWZY4M zTg*`lO}L$NxAj68NOdL??!uVag>^Fg*wvZC{vT72xFGy;1a(zRxGQWkz)O>fI>_ln zC!6hL5!BHpZVV%Hcm{(g7<5KaGsHQRt=~I4Dmdr1XQ0&0#ZKC&W)UCq!6$$d0z1u3 z=oEE9nz}^`jKMR@2Arf9ctIGnejOtdheg8D0e}Ix)-zI>^ji7&nek6T2v$ z^2nP;3=>F$X>bP_W64@g3=^Sf8Le9xdQTNgJFcM2g@qh#X_YlIHl{mx2ssvF*{=WXqi+IieA8z4rU?f{qLc+*ONw4O*eclmt?(e;-gf!JcbwK_ipXD zPFz@TwA*IEVRLOwkB8Quc;SVx1WA=*rO9YR@Zz~%r;&brw)cc|*{h3D`h&F@xH2AM z4+o9V6eB2JVv3G%4GP?#Lf}A^X&EAOnh3o`E{uTS)}mS!-JLi*EIkIT7Arx?z8;6- zHt@(9dc3^V=7RAq2<^b?MJJh;nZW9cyeDsf3s%XLoXRIoFp^dVA+e-RL>JVY+KR}r z#>iv!M0aHu@Q7JxC&XGwTD5d})*?^eWu;6Ryj@t#N-ZY^QXixx5H+F)oC#_I6me@9 z@&Kc90Sr4L!)nmXpf0F)+l8hpOM_93JRG_NgJtrN7e|~HED&ehFs>n|+B@UbLRd4c^Ca?0YfgTcO8X+yA5g#MMKB__oRuLX?G z7zB%QN|5a}i4k?!-yLktvc6*&V)LaBb9&M4%g*amQ|df|Hr^?*@SiA*{BmQ-qxU(n z3p9&(U;33DB=$MMlcCtb#-5m4rz*^}wTVqlwp--x9BMnQ>amP%$D8ufP(VQ5bqI~5 zR1yvnA*Bt^Bax0G7JFbX5Bgio5(#3K2qv@{;qxoSV$yE{@B?_j%fEX5%@5~)=HL4k zv(wnPec{5o1-b^XUFmJUcB7&9_Q4xNrMHIj z1|ILYJF)5B^R*9NuXre7KYH&n^1*Rr#$jZ}Ze(Wh$VZ!zkJcj}t$sb0k3O0|`Ut*S zJ)E(AIAi0kEZH#jcANN3;l%HUpT0UXIep{l)Sby^!;{ZOC!ale zHZ?KzeDeA8XV0fWkIeHIFQ$R*0R_C!d;#76tegASE$Bdkq+l zws;v$^Ns;wcQ&jAz(Z@zKcrZq{MqlroJ;ilj)wG|s{ff{Au^f2EoSLmY%cTY zyT_TvK@hWCPTH0jXeu9UE4b91$eEpfe_;N@gw3ihlIUIDT_M6sOiWKt2Bc7>y~ti&G)O~Y{unDG0{TED6)DG zqJ`XSI3VcGvayq!C@@b;dbru50$QGDV9>5Y(0R>uBAE@vOqM8iN&=}mya;mffcf2J zW;gVr8GC}F2!m3lL#%Y7t!MXBvzvCC3oSI78=qCi5zU>+7X1Tt`|VFmSDB9$3`|u8 zU4tu#I@))=^5l;SoUCt!IFk<-C^aF8`gk~|#-NHJB8UebPB&=OgmLoFTR-$i4kX0J zx?S){dC=5M3`=vJJ0Ytd5_9ehCGw(Ci}1~*EY<0a7f#qdm%n__Ht=xL&HcR5D@(F^Bn=;ze}0+lXR5_B zzeB2fbMU-*Z%vb5pIvs z=h37G@t+^3K0p3>ZfwWr-~TIPmW$?QeB;nz`gh=^b5!P11hYN&gU3MoiSdymDFT`5)g3;fSbOxy! z@6PU$u9Rfxd4XPo-Y&WGl1yenH7T0it@KC&QY_V!lwOcxkz~)YNHuUa`--O0yBxMx zjr6|WD+_Gj<#GyY=%tOB`bsDB3_5GRp2?9muDPABfvA=3VP7+?^x3^!p&NNfkR@3^ zUdSz|Re7%Gme*1uUC+3x=g`^X0P-q3L)27p9zBH$)#TJ6Er$FTcSq^>C7Xbv``F>` zX1qtbj8iKS;XT+JuMkRATy>1TxO+7?mUiAvlL_ea)J;kh99HSpb@A|It@WiHQAsyW z*=nPE#ijgs$g_n~O(o{HPVGG#nW6cpBIh>l)dj%y6s-% z-rPKOy0~muckvHJ8(xD;6_*Yv3Pr`dF3BR)?sw`o}P`!n!!Jg3Mq#AUBGwqQ$I}H6) zep^oO^6f8|tv*p!X<~tAt54j>Rj?@3&(xRO`65fBBOHD?oo)Y>v0{(!mg?f|wX_;S z$#L7dV{{K^rL>p6#b@u}-Pq}jubo9(B^pOC`wiTF+i$b%{vgAxk*)klVWkzD-hfXu|r2E zx%6YbO3*^+Y8CxN*@gy#o&mSL_*!^t#jy<=7H6r?hRdD|a$T75u4v2fQ@P{#lM6#S ziO!_(GjbOCW+jWyMKx%&#I49(JP}^J^Gp{wSu=LrvOdFQGF|lzC)<9mle*<%gc`oe z-R`SNfu-=Xup;uxw%zA1Z0&gZ+fKMkKlH)?C1nh zfDa5P@8Rx@-;9CrDZ^UoI|nu>Ka#AnLL;up8LggEPBU495b+Cx#u7a5GSKRy)%e{x zJ$AFLxJxg~&y}u-DE$&-XC$6bMTT8f5UV_=d^RI*6r{uG@ZuE7m)lEJXLN}>r&IJQ zy9?cnH*49i$E__@T~3Tq4=c5s~*3}OuDe)_(bZF^P|f?eZ2JU($by98t|8vY}+|b zhK4A7(5=IHbL%CK?J_$aNAR50z^tDwSDwmo1dw43P6UC~l|F`T(TU+toK zN0-`%R96~D$|omz47Y1$LByRC7ni2%zt`aTk@&BSKc3gc zO)Om_$EWZ>3Pf)7amviZ&5c4^$u(Yf+YPxPH0A=dgOGi5Y=*MEqkCD_;=rrj#-~;v zdXc#0T=+KIxz;JP)UD2_TrS)eusOxM)y-V1nXY4W_h5YP zt<}v}L+YQe$_~tn8T?$lC5NqB?BS*6Uxwbl%b>*T@b{P7|M(_upKI7>1W&uK(Oe#e z);d~z3%~eIt!ntDP{j*z)4NS8hRyzXW8{1D`>Q|Zax(3=MQ;~n?|x_&@$K|(jAOV| zYC_^!>AxXrGT@AcyAU3bFT(!MbUcvPKs^H`4&*WruRtXObq+K-5NAM&0mTf+G>~gR zqRnGz0Gol72fP{3WuT-1y#}%s$Y`Lafo=n08bE7+r2(7xu= zumkKFw2c8_2S7D|xPVCmgnZz@fqB6Pm^2W<07ZkaHc;dsg%4oxvSrHv2nU)Qz+=!< zW@l#y@G#)wAcqblJAlMM!2===L_BCb0|XlMo&lu})H5K#0Qv$19v&Wk@7_Hi(*eN+ zU16U;e+EPu&}*Q!0aOM^8wh;>l|i5$9I67H{pr&u(6t5VH6ZQ)V*?_-Wy_Y!moEdZ zym8~kpr9acZ*RboL9;aA${x#6d6W)%=X!g4LDK-}Hv>Q&w4#9&JRsb_jXaTfjLq19L_D2_ z144hvk|i<}0zmaQZ{9q8`ZNIcpm_{r{C#|UK-b*Q&M|q=dWRl+mI2Hepx}VJ0}u}S z#BSfd4Y)fX;xbe;VDO+rj4llUG_I(q2>Rxr{Ul*dc(=K@%Y82L!ERphHXsCeSHFaC-3Z z<3~XE0Y_i4Vg+zhix)2jC>=m_fYSd9$@gD~TBMBq6H))8uXuNj9I4`*_h%3Do|(pZ zUvd4Q$Laa@t>&N_(7v_!S2})Lq~(s5^Xxpc{%)Py&oIiC2z{tJ05N>Gwx>+LXWR7P zT@+Mv^k@6lQbAC|y0Qww6%6B^ZYX5i3fi~c-U?}s)bZHkHE7HXv)=0Y{`yIPsD0d! zkmt(dtBWAJG>d_NpT6QhkEs7A9smC+9Y0NEK&@{s-!LwEgXFxu7;=3T4KWLPnAx8L zTt!eg)=L(Fp{u+FJLbi%&C%8%UZJf%HQLYyr z$K&@habY|JO0c8ux^<6~-wlO}DrQ&BQ1L8;Wob&HBU<}-(w*982j4@=i~MI?Q61km z_nOJrZ|OT@^LyJZJ@UYZdkWE^r?*if>u*?#Cj=GoXM{7_IK?AlP28vPCpwpvIxS?3AgNue03fg0{n+=J z+?t}~cn+1xr&frKJ+S zGo-3F;Hc@sfZFda(*Nz^{TQu9$|I=l5+2ePew-r4zFWNK^MzFpu7039KG_GM8DdA2 zMnMAamDH*=w;(2y-{Gw-i5S~r$oegJc$3lhG$n*ID^n^-NFY@(kY#&$sh!JsZ`M}c z!B1blU}B`{x|A`Silc2+WtyU`A*AInpKKmRGOVb^MpZ!Qj(o%%<@7$tPy|UA!BEOE zHnCj(w|8~|hRKeaU`y+6WE_N*kLgC>VLpC_xgMXx>)wlXLl$%)Lz@++3~IWxZCfpO z-W@}!4Dc*r5#F=0o9X~zjHg9-hl0Q-=u{qKG>y#R@T59gQ2yFbE;d7(cyIWcMY4Nd zgQF8Nh`~qLg(2W!N2NS2AIA|RRD(oFe?(zhX3HjwSR`#M=40#_Sd$JBQiYd=VwA+Y zl;$WMyXJym(#UgfJ`~(HM`ESLE@|z=kMUn1@_0hE();XjL8pO>cn`eT785 z3LaKd+>MUpk-~@7Nike7{f&h=IyaM!MyEm8*~C2-8zOc&4e;b7X@qsX&a~x1r0ysm zCDX#P7&PS}!~7t!-g6{d!nZK2CYYsOLmG?Iu&;S2MHU}T;qdWd5y~Kyhg%IxnUsx7 zE64D`c?u~_Lxd!t^h`EKpZ#vfA|}8rtTu~h#_B}K&x-V64sUlrea)~oOTUl6cVr5Y z($it&xF#q%=>WNx1J~suC}Qh8@5xiX1`(^@bsN240?WW)-uvOu4ZJ1fhk2 zTG^y1TCbs!eC6gKUS5K-x3p3HCW@6;wq-KdmBA)l%sVsJb+ zOMw`%0(QFjejo2m9uKJ;#8--1HIg;@>EzxW#b_cFOwM@&C3WynDvVL2Z)W6GS13uD zgHtBGjvtA4GLvOIZhv=^tj-Z>nudu83mC`+vpjtd$Fa*;`lT;6Jf$QqMkOqqk|MmO zZ^c>THHQ9e*h{ornTIG73k@-XgMQ9fygcOTLXBH9zIc6!Ik#KN7BEJjDs5=Gx=5;VSYnyn`&oLqP1)i@c zIJd>3dj@+yWDubehFL7@X6_|=9c48_TrU>MH8sVKj%8yR0}$%F&3U(GA;Lh^=ATpu z*;TzftLrmyx0|T`FtcDg`aE)OH8fs88qH zeQjI$SVN7+u^}mZguszyC`Mb$nIBfT!HQ#URF&(2|yZo@o1CW5kxzO~Jy;IPFk zga9iv8eBg}^?xglGizNY9WeM%Rg9oA5Y*%oZSCRb58A-BBm$I%Nn*fJ5(Lz83zCER zxRaqgIa9qY)xjeUWN!C@90^vjzYB4}Yx~YM6&vz4ZQrjf?nK81nzbKMd_&N)L|DUF z;VD9CPuK}P0h2tMdFVCFbh2p>FZa#2t{>Q>?ZzxVI4^8d)2n~0D#;-G?iz&@R8he# zJXx^@N@n)S7<1=kl?;b3mXJs$ZSDzT?68PH5weVrrQ}R&y`ClM+l(*YSl71VV<`-E zp`n5$2nK|vq>8X^Ld3UkiTME>w3HYjuv#M}!AK221(LNOrn?kNlNLc8J+bE>XsP)_ zH(MaO2yJGL-rIm+FfdXq)GDFG>%-PHoZ{&p^m>5Ig*!p(%$|R&ZMn(g_^gG80kb>5w2ZG|0wNa}mNNt9xiGPYd#7 zvp824%|%A$eA(q&m@joa`g=b~KuhyYtdIm>5akw>>$O@f?&H%1msQan}qv zp6z&d?L$#O}ydvFM_(4+Wp~WR~j{1fMef?MfcPMh3lK2TKtA9wBok z2;BZ6VAsNQMQNJi0{N}k$ae*5iaAHKvN`Wd@cUuyt$TjVE;2Z`XLyhZ2?>O761h?n z@!H%%rVjp_D^!BOY146}8^R1)3}u6331A7q(GhTkz}W#;2)rTifWQv|dkB1Ab8|Cr zh~O*-*hAnG=R2o?Z3ONQ7`OQ&mid-wU<2pj6Utj3m(iz(0Zm6_D-$RtO}C zfK>!`4>&B~7J)qkW)0X1;Ou}w111qfpMXmO*&kqzfLjEezQCG+u3z9cLFxxs9^h_3 zwg{Lq;Anus0bT~=eSnbxjtpdcfHMWI1Q-@@mN4%`fbRhA2n=zeaX_r8%p->FzPJ+E}B$wwHk|i|mVZ zM(!B|SHwQR>b?4C6wk6CZ`~ zFl5FoR5<=bQNc?kl@E3C$%-m05#)%%T{+bGm7E4SXGmFUT64MKs0^w;CrI4?xsg|Z zT=ufVCp`nNMKe`_P13I9sG+psMO7-{*O5~2oC-&nxEUCaez~{#542O?O+K$wZ#nc< zRQI;$aI~ncZrhu_A7$!WQIhAYLm@TYu+*<)iD>JbM$8(X1DSma)Y(@nAa9#hjEO@WKW9l(}AB*pCqDR|PmK5fQ zk2Xkvu&4~459(2_{z##M2gebG@fW2h5i{_^C>7q;XB8H0EEkGZ{~Dy2aD%C7PvXMNIKCSQ!iO)TJL}(!S!JK>fjn<1RsUd zmO>z9Ld0<-V&KsKwmnK_n@O^FRD)AfZbG`3IC&|9-3|5T-N-R~f0;!Vn z`dtrURQIL#kM%4O$5UyAu_r}QBto%bB=u*(X_J{dewiYTf((iiu@`zznhlKcXUql> zN{ zfb-3VQ^AG+b_{^H00RTN0a(ZZnFH%RSfoJ;697EG;XpnW06egYgWxIH2S7{{&^3V8 zWMCpdhJYUZ8Zbo$TMC^@0O$^EDPT_kQ3Sxrz#bw)!-G8moRWi`1jJ0i(fsb+yXh1f z;D3P30r&?X9LO_($x+}0A5cKR6aiVJ5eZ;K6`6peQ}JN80ecSEaKP3CKphwuB@O<* zFb&{3KpADpQXnZym%+mnkaZveWGF)+wzaj%!VrLVfL{Ut3Fbjj!R#rj3;=atGX$Fz zIH0Ff$zZ?w3GHN103`yT2*4y5{3JuB?A*B%CL+Kl2KXpQul}6PNJWDT>#9|&z_td^ zoeY^oA>m;u92n0C#y?5JvS0udT^a>=9srPFmy?F2z)%kmP5__|#1#O5l%YUiDkB*2 zBtwD!qI3Y7-nw;*Mx{zq&@>tj5I8zn2JD9b$bl3A*c$;-1<3)hH%ilRbQ)5Ih5(bb z{yVSJ|2KcPzsO%_I{x1xe`Sqf|Hj}Zu*Mr1a99ieac~n+)_U`=M8SU$PW`09Ut6sN z>8-w4(RbEpRomLXO)nH`pes#>ox}2egU%R|wENt_C9>OuM3Z%%czOhsbaCnY^g{WA z=)61@8>^0Bqr~h5CM-F%7bq5vXNgoru+3YFrhd)E_?=$zJhS}ubYoir`RylF8{Zfi}7oXXZ$(6@P85o z|6ZbC1rin^21{A>q%cUz%MN`O{Yx#NzXOU8-dtD0K7bJScdwM*f+?H4{^lgmq_NrMp3n zmS0;7Ho0g@U+uVJr+G_2f25_ZJL_&KtqpFl)zIi0wsu+0F3AV2m%DrWmT%irV3852 zZEx+N6!5;lr#}*D^`$Q$Es?=h(b4}srmyRsv=d6Ct?oX3J>V=2YMl|w+2F5{m%lIC zW;Wrp@e2c~$0w3x#9ppWm1gw6zCF8D)w)S zl~nECjDWiIZ|$sPomB&qWqKgcb%R{Z@y9Nc99Vm-baZvSl#0G7F7Ax@ZL=Yxr2_bnH(p&cE z9=8gjP}w|G2#1F>7at!Vo%Ad8xZ$@kC#`_jNn}V?5Lk?Tn)qh)E)h>pnpKTT)rAzq z2qK4ptYWY+vkXM(t&cTZ%8!zDD>9UOyJTTzw@l&yNJfogO@})dXL|BvNFwQ=oH=Ld zIzc+xONg=<=54g%q${*Ip4eCaVxqzG9-*oWOKEh1Ys8QgM~E`|T_l~#<%dX%PcG|a zVQpbPN?UY+FnhvxnSk%cm4)_^dECs3(w*l^vO!4I^lIHA?-LL2A=oT@O9hWcfe}gtHAK9g z6HbMZfhu#XHiH^8v7PAU3L-MDf`yC~rKz3f5mF@G_=P*h_eTYE+Y)qkj66ij0EDb4 z=p^0ON6@YaQ46M7^z+*gj1#;pZ9UNfiiC%f@EEW_H0Mz75lI5WSr(5o12LR5S$DDQ zu5}RITLdk#W*|dZNRmL9c7ljTYC`F#BvRVh^W{g(Gioy*hp??byWBdrgN4>)BJ{qC zkFSmwVIl=jP+=@cmM5&1Vj!u8wur*17quA87n%>uy7yitG+;PUIC^JyXy#gk!axQ= zdv>U)Djcy~9P8G;f^oZH%Ynj>7a_0EcTwzDh%Wech%Zdl;qsb%9$#B$rF?(Tn0;Jd zb;X9K=#fWmq9FBQ9yJo`>@CtjYjEELsYgB@+Sq;}9{Kj|M#ivz^XE%F@pscC-|o#> z;zgT&O!2$x#5n6zy3EE+J8B;>s413pa}l=jd4VGn@;x2bENq-Iw_hATv+)>CvJ?SB zr?O=B>74MnyeB%vdIam9dSme|ZW>dFKuK8Oe>UXjJ1q#-m8m*Zkyq8R$iwe;3eN`K zdY7p+GKi5ZL@-O9;0)6Mvg)kfx-#)l;OI-^af1Of;~AVBZ+guWeaIM0xZPoevYs|Q zbF=T>!Q#Z{T=zZ$slx%dIMIIpj0v3QKxpKWJz4VjlNxan3>EE2P+(j&z{bt8(!~CImqor_{`A4l*o>PEF`Ws}| ze!04xX^Y;u`N>7%vL(ituDJt{Oj#H{eD8YuLhq1CKkeT%>cxiA!X49oTxd62^hv5U z!TIcI`c_tYgL+)1#ubZ8O8#4>QlwX`2-TB~qx*-Ra|y`FNYWmF48%wSA+oO_3Q~Yj zLDHzbFg*!*urA8U)o}>zn%&07`2=OO`^7&CCqW4L3jU&SN7m3b*`aNjpWV0Z^K|Qp zf_lBxFzGr8j{YvbhS_e`73tV_ERrOR)hj)4C9$XureDoiRw3<;&)nbwyG{D6MDtb! zWiCj_92{c*cE&Gs+9{?YD;Dn*)+im=7#peJqT-eruaL1;A$y%dd}@sA7B_$3o7TzATt1w5Vcp5IT&Rs^!^ytX0=#|~4@Mly)55ho( z#vp>NiJXsM|9zPH@8AEEacuCf{ES_nU1->>r(db9o5#@JqRdz$r|K=O>;x;?P~;7z z-c~=NNcc>Sque46=pERNy|SKc8QTY!J$xf99jvH2CKP zUNEXvhEA82mseC)R#8&}Uh8LDIPhVhfF}b5tQaWZ>OcXO2kJjaV*dyE>wk`2|Mkh= zhp)jqaFd{bg9P<6fBiFo4Q%Ak@U^LlDR6;ycJ|Ir&K_(J;PZeV0`?AMEP%@aU5CIh z0iy#v8E{d+=*&m3fve;3cz>m^fp?q_V*i`@>wk_~&wm1JE^uj}0GgbST?1z}AGHR4 z4x~Wl3)n{*>{IvMdbN=Y7#K*r!KYq;}d$n!s)$S*+vYxyw5l=Tv zJU=(_toP~Uy{D66V6{O30y|&8m;Y73m;Y73p#OaVL;qI+i$7n$*8f%W;cH;%K>-Ip zpS%Ws9az%&{57z}z%WVC1b6Nw*IU##OpSJ+!rxx=kC+OnCfrkYLr|waM$|Ij<^=L#^Xf zuN8YogK_UEqqp?u+B;0_t;r9}8-DAp3f)Y(^#qK2-)*%cg0AZ+P;jjIZTFl`T}v7n z)5uLD%;gS8lZ}gChyL3P;k2G~=J+ z-ibqXrGm$-^fG!;m=p0~Jt(!2& z(L)ma6Q|OMMi)8hhXrouRfLpV>ybpiDqa-DfX;nXy9W#sj49h2HN~1=X)8IsWc5UGzUv%ESH%*UMd#dn1e0p_q z`FQ=RI>J|kcSIUb0xQ@tXF&gFfpl z23nA{M$KW5$QI3`t?L&&h}-P4b$PpKlF1cG7csU*@H}1aN!-j$y(?VjBUq=%E`qze zYFi6ZV-_X^EIt15|1g4WEshf=%ubxGuC{(ENSAX{C<&|@p4=OKLVl_;<(Ay@s_b2I z(>43v$i8SevRd}#(RPaLs}nuD=&w&bFsA>0_IZ)aoAaL?WR%Lj8Gn~tk>B+FU9axR z@9+Dq-hTfu;J)a`%uwK_A0LPR@5jCWzmH%a0fs5~U0zUsja+;0RpV{%^212A3cn)Q z?+RkPYLy=JUb8&^Za#v|?y-IJt|+y?R_$}|uL$%-4;8&$4W|40`lD<=>>ns-FhAmPGdB1`<#2z4 zWqaSvjoUsP5I5uHx;&QW7u?l;ZXRXpaccS6vwqrd4UgD8_qe_7(TA$exhqa~e72eNGa52IWgU1&!+Sq?Kba|P2bR+WUz_a_7j3T)%#3;`|=X!Fc-f%i16dd%W*XgOcOE z=F%%4YdvEG^G;@UCZuASyYNz0u_pK{w*-s;-Yn)ZFJIoA0?;F0^u zr}jS!3G2+uJnU50hW@Chxo&%KPwO~7<#_z2ZrfY;Y(Ld^N;R+V=G?uWh3HV-X{0H; zFRPiyKY&WP7m-GD2PnpauY%6U_rw^DH^PiZ zSVeMuPG&=RIMMg}IKfTaZG1GGvZJ|MDUEHOVWygI5Ai8kkefwwc;RYB4aGq?de}#0 z+Wt zW=o3MEd&)A{sOUuN&q^ersH0fcg5^D>6zrm+4c|N361}6^nHB#D7+Mp%I*q0wnepnBW3IfXwg7@WP z!cv`IBr=_b`K&**NNLYr4WlG2!dYa}7ecor{u76!)38Be;qMnk9-ktoaMyL-T~{E9 z9~0nKC-3r2UTI$M9m6C&xG$9maa=^W2VAm5jJvvTxnBdio5B5qho^n=^$!TO3xMu( zL_)rAn#7j(B^*BtDxIBIjSH6X2Je zx4Ug^7o*sdhjpIH#L*(hncVu8Ft>o>y)jg!eYjg}!BJ=8vM96z1Glf8cu$b+Kq!fn z*}ZJa+ml5c<0SK8Z1@z)o`-Sc;4&G+!(3dFn42gFaN|H-BIc{E>=_=!i|wAFIQy7iu7+&5-&HxI`OiwxqTH?oNL zTe5eFv57El2@CDK0PW2ny%Lg-Nh+Ldg8VbFXJ3$euu|TvXrnLX;Wq2c6m4fXn=o@6 zTq;A#C_8Qr&b}mPk;21)(ZtSI13!I~nw3z$aL9ZPE`f{NEtGoDLY-rfl6Y7LX5gk#mq>w`WzwT0}o;p-Ol}7dh9s;jD!br zlsZAh$LZ}Gg=BRr;%?k7z&Uu(-upt_!sJ6|pW+;>d{;+MqOEW*9(ub7aQ7tCBe_)c zbBbgjd6&>zh$7t=P@{;s-z3$C-H8ecSe6L;M2=F+;|;Z~bsE6U%`kb}B`Dp1u&4WN z9Ypo3{kS3y&f?<=?=W0GgG7v`8b_1!!f=#*YbaQB35WcJStD6cI~hZL6-I3Q7`Qo# ze0&%m!#L;_042kCRxoJ?H)`0Glb`2Kib5Z@UA=!jZs!1QE32a4VtHujwHBm*(m`)z;zG}^%_WB9m4#5Aui5c&#h~X-nfuW{A_I!FaAnRr%|Gt! zz=y4wwJ!aD?fV#*&>BH_cx-|MBq@xw`79|7rdF*6nB?;8O2jZC$z{$Zo+Y*7kCfRT-W2oPh0ZLHTXD z8E4kFwU%21FCBreKRkVIHZyQ5te?*gS==-=bRxs`tnYyU?zc04VA_^R1*}?pCNjDG z!o4$V^H-YY+iFUMR-ZYWsN50v@oe~k{KA~}f>rG%H$1YAb#QOAONKjqmbMp5d6wpf z-*-KC_`^7=P|+ox{F{VvhDjU z!DH8FVSU})wBPiv=U?%h`G3@})0HuiqwC4j)f8ow6zB?aGO~1VfduHC_^ZIoRM3L~ zrjvqu4L}PDIMW74xS-U3A()>dUVm{IfMWhNjR8RB*Yg*d`Gsfx1<}ldn!moz6Pthe z`m>e(&qo)$0h;sYH~;?qC*}FcdH$K_`~_|1U;fn(fDgeZU|Q=u!vQeoUw+`v-|Wv{ z|Ms2v-{)T;puZ^4FA`*6uts9H2@q0SP&pTfc5~?)6m!`Ja(+)L{Xpm|6&5F?TbU}?XuJ@pg z&HFF4b;4Ww*`)@q`@>OHzq;zTagNaS^G?KC1dAJ4LJ+(r8DwG$3&QVC`J4LZ)*v;n z_#RrC5_R_o^XgDJ7+CkDeE0L@a|Q#o;a#cH+gB{Ks(HXio-FbowRjzO!)2ga>&q>BV z&^si?yHn+^YPtEWzdzhsyF6Zy)b;z(({qc;E|u(^#;%@~QEBY+ zsBmeT@b~bkS)y$deVCo=T0_vUPfGMyI$<%ZXaLukKEghb=fu_ojXPay zEx%zteC9N@=C=65?NeXbG9HeKKOEC_h9^sJ?f(+DxzXXrz-Hp{lD!KD>&oRORh