From a2e53b161dd4ec3f88712fd19f550fb475871a50 Mon Sep 17 00:00:00 2001 From: rainer Date: Mon, 16 Jun 2025 01:00:23 +0200 Subject: [PATCH] Init repo with working copy from my private server --- README.md | 146 ++++++++++++++++ atm.lua | 322 +++++++++++++++++++++++++++++++++++ card_swipe.lua | 213 +++++++++++++++++++++++ cards.lua | 30 ++++ chatcommands.lua | 212 +++++++++++++++++++++++ computer.lua | 265 ++++++++++++++++++++++++++++ depends.txt | 1 + functions.lua | 193 +++++++++++++++++++++ i18n.lua | 8 + init.lua | 25 +++ interest.lua | 67 ++++++++ license.txt | 21 +++ locale/bank_accounts.de.tr | 229 +++++++++++++++++++++++++ mod.conf | 7 + models/ATM.blend | Bin 0 -> 541956 bytes models/atm.mtl | 10 ++ models/atm.obj | 91 ++++++++++ models/card_swipe.mtl | 10 ++ models/card_swipe.obj | 54 ++++++ models/computer.mtl | 10 ++ models/computer.obj | 167 ++++++++++++++++++ pin_terminal.lua | 135 +++++++++++++++ textures/atm.png | Bin 0 -> 26563 bytes textures/atm_card.png | Bin 0 -> 3833 bytes textures/atm_col.png | Bin 0 -> 5819 bytes textures/atm_col.png.old | Bin 0 -> 629 bytes textures/atm_uv.png | Bin 0 -> 2875 bytes textures/card_reader_col.png | Bin 0 -> 4314 bytes textures/card_reader_uv.png | Bin 0 -> 1045 bytes textures/computer.png | Bin 0 -> 22598 bytes textures/computer_screen.png | Bin 0 -> 72868 bytes textures/credit_card.png | Bin 0 -> 4162 bytes textures/debit_card.png | Bin 0 -> 4440 bytes textures/pin_terminal.png | Bin 0 -> 4322 bytes textures/receipt.png | Bin 0 -> 850 bytes textures/wtm_col.png | Bin 0 -> 5879 bytes textures/wtm_uv.png | Bin 0 -> 2875 bytes wtm.lua | 197 +++++++++++++++++++++ 38 files changed, 2413 insertions(+) create mode 100644 README.md create mode 100644 atm.lua create mode 100644 card_swipe.lua create mode 100644 cards.lua create mode 100644 chatcommands.lua create mode 100644 computer.lua create mode 100644 depends.txt create mode 100644 functions.lua create mode 100644 i18n.lua create mode 100644 init.lua create mode 100644 interest.lua create mode 100644 license.txt create mode 100644 locale/bank_accounts.de.tr create mode 100644 mod.conf create mode 100644 models/ATM.blend create mode 100644 models/atm.mtl create mode 100644 models/atm.obj create mode 100644 models/card_swipe.mtl create mode 100644 models/card_swipe.obj create mode 100644 models/computer.mtl create mode 100644 models/computer.obj create mode 100644 pin_terminal.lua create mode 100644 textures/atm.png create mode 100644 textures/atm_card.png create mode 100644 textures/atm_col.png create mode 100644 textures/atm_col.png.old create mode 100644 textures/atm_uv.png create mode 100644 textures/card_reader_col.png create mode 100644 textures/card_reader_uv.png create mode 100644 textures/computer.png create mode 100644 textures/computer_screen.png create mode 100644 textures/credit_card.png create mode 100644 textures/debit_card.png create mode 100644 textures/pin_terminal.png create mode 100644 textures/receipt.png create mode 100644 textures/wtm_col.png create mode 100644 textures/wtm_uv.png create mode 100644 wtm.lua diff --git a/README.md b/README.md new file mode 100644 index 0000000..1e958a3 --- /dev/null +++ b/README.md @@ -0,0 +1,146 @@ +# Bank Accounts (Redo & Extended) + +A complete overhaul and extension of the original `bank_accounts` mod by Tmanyo and Trent Lasich. This project has been restructured from the ground up to ensure stability, security, and a significantly expanded feature set. + +## About This Version + +This version is a "Redo" of the original code. The focus was on fixing critical bugs, preventing exploits, and drastically improving stability, especially in multiplayer environments. Furthermore, numerous new features such as an automatic interest system, a detailed account statement, and a wire transfer machine have been added to provide a comprehensive in-game economic system. + +## Features Overview + +* **Complete Account System:** Players automatically receive an account with a balance and a credit line. +* **5 Interactive Machines:** ATM, Teller Computer, PIN Terminal, Card Swipe, and Wire Transfer Machine (WTM). +* **Detailed Account Statement:** All transactions are logged and can be viewed via the ATM or Teller Computer. +* **Automatic Interest System:** A performant background process calculates daily interest on balances and credit debts. +* **Secure Transactions:** All actions are secured against exploits (e.g., duplication bugs) and invalid inputs. +* **API for Other Mods:** Allows other mods to safely interact with the banking system. +* **Fully Translatable (i18n):** All texts can be easily adapted for other languages. + +## Dependencies + +This mod requires the **Currency Mod** to function. +* **ContentDB Link:** [https://content.luanti.org/packages/mt-mods/currency/](https://content.luanti.org/packages/mt-mods/currency/) + +## Known Issues & WIP + +This version is significantly more stable than the original mod, especially on multiplayer servers. Most critical multiplayer bugs and data loss issues have been resolved. + +However, there is a known theoretical race condition that can occur under very specific circumstances: +* **If two different players interact with two different machines (e.g., two ATMs) at the exact same moment, it is possible for a transaction to be misdirected to the wrong machine.** + +The time window for this to occur is extremely small (typically less than a few seconds between the two players' clicks), making it a very rare event on most servers. + +This is a known limitation resulting from a workaround needed to ensure stability across different Minetest clients. It is considered a work-in-progress (WIP) issue that may be addressed in future updates. + +## Getting Started (For Players) + +To use the banking system, you first need to set your personal PIN. +1. Find a **PIN Terminal** (a small, wall-mounted device). +2. Right-click it. As a new customer, you will be prompted to set a 4-digit PIN. +3. After successful entry, you will automatically receive your **Bank Card** (`ATM Card`) in your inventory. You will need this card to access most of the other machines. + +## The Machines (Nodes) in Detail + +### PIN Terminal +* **Purpose:** The primary point of contact for new players and for PIN management. +* **Functions:** + * **New Players:** Are prompted to set their first, personal 4-digit PIN. They then receive their first bank card. + * **Existing Players:** Can change their PIN (requires entering the old PIN for security) or request a new bank card if the old one was lost. + +### ATM (Automatic Teller Machine) +* **Purpose:** Standard interactions with one's own account. +* **Operation:** Requires a Bank Card (`ATM Card`) and PIN entry. +* **Functions:** + * **Deposit:** Deposit cash (`currency` items). + * **Withdrawal:** Withdraw cash (integers only). + * **Pay Credit:** Provides the option to pay the due rate or a custom amount of the credit debt. + * **Account Statement:** Shows the transaction history for balance and credit. + * **Request Cards:** Issues new debit or credit cards. + +### Teller Computer +* **Purpose:** For players with the `bank_teller` privilege to manage customer accounts. +* **Functions:** + * All functions of a normal ATM, but for any customer entered by name. + * Additional admin functions: Wipe Account and Reset PIN. + * Admin Search (Shift + Right-click): Server admins can check if an account is seized. + +### Wire Transfer Machine (WTM) +* **Purpose:** Secure money transfers between players. +* **Operation:** Requires Bank Card and PIN. +* **Functions:** + * Transfer from your balance. + * Transfer from your credit line. + * Input fields for **Recipient**, **Amount** (decimals allowed), and **Purpose**. + * The recipient receives a chat message about the incoming funds. + * The transaction is logged in the account statements of both the sender and the recipient with all details. + +### Card Swipe +* **Purpose:** Player-owned shops to sell items via card payment. +* **Functions:** + * **Seller:** Places the device, puts items in its inventory, and sets a price (decimals allowed). + * **Buyer:** Right-clicks the device with a debit or credit card to complete the purchase. The process is theft-proof – items are only transferred automatically after successful payment. + +## Automatic Interest System (`interest.lua`) + +* A performant background process calculates interest once every 24 hours (real-time). +* The interest rates for balance (default 0.5%) and credit debt (default 3%) can be easily configured at the beginning of the `interest.lua` file. +* Interest transactions are automatically logged in the account statement. + +## Chat Commands + +All commands start with `bank_`. + +#### For All Players +* `/bank_account []` - Shows your own account balance. Players with `bank_teller` or `server` privs can also view others' accounts. +* `/bank_set_pin <4-digit-PIN>` - Sets your own PIN. (Replaced in function by the PIN Terminal but remains as a command). + +#### For Admins Only (`server` privilege) +* `/bank_add ` - Adds money to a player's account (integers only). +* `/bank_subtract ` - Subtracts money from a player's account (integers only). +* `/bank_balance ` - Sets a player's balance to an exact value (decimals allowed). +* `/bank_credit ` - Sets a player's credit debt to an exact value (decimals allowed). `/bank_credit 0` forgives all debt. +* `/bank_wipe ` - Wipes a player's account balance to 0. +* `/bank_seize ` - Seizes a player's account (locks access). +* `/bank_unseize ` - Unseizes an account. + +## Improvements Over the Original Version + +* **Stability:** The fundamental logic was overhauled to fix crashes and "freezing" or silently closing windows. +* **Security / Exploits:** Numerous exploits have been fixed, e.g., money duplication by moving items between slots, and withdrawing fractional amounts of cash. +* **Multiplayer Capability:** Almost all global variables that caused conflicts between players have been removed. The mod is now significantly more stable on servers. *(Note: One global variable for position was retained for compatibility with certain Minetest clients, which could in theory cause issues with perfectly simultaneous interactions at two devices, but this is extremely unlikely in practice).* +* **API:** A clean and safe API in `functions.lua` now allows other mods to interact with the system easily and without conflicts. +* **New Features:** Account Statements, Daily Interest System, Wire Transfer Machine, and the PIN Terminal have been newly added. +* **User Experience:** The onboarding for new players via the PIN Terminal is much more immersive. The UI has been polished in many places. +* **Internationalization (i18n):** The entire mod is now fully translatable. + +--- + +## License + +``` +License: MIT + +Copyright 2016 Trent Lasich +Copyright 2025 Rage87 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` + +## Credits +* Original Mod: Tmanyo (Code) & Trent Lasich (Textures, Models) +* Complete Redo, Extension & Bugfixing: **Rage87** diff --git a/atm.lua b/atm.lua new file mode 100644 index 0000000..7d039d1 --- /dev/null +++ b/atm.lua @@ -0,0 +1,322 @@ +--[[ + ATM Node + -------- + This file defines the Automatic Teller Machine (ATM) node and all + of its associated forms and logic for player interaction. +--]] + +-- A global variable to store the position of the last used machine. +-- This is necessary for stability in the user's specific environment. +pos_info = {} + +-- The interest rate for the monthly credit payment. +local credit_rate = 0.04 + +-- Shows the account statement form for the player using the machine. +-- @param player: The player object. +-- @param account_type: "balance" or "credit" to determine which history to show. +local function show_atm_statement_form(player, account_type) + local player_name = player:get_player_name() + local data = bank_accounts.get_account_data(player_name) + local history = data.history + local lines = {} + local current_total_label = "" + + -- Header for the textlist + table.insert(lines, minetest.formspec_escape( + string.format("%-11s | %-13s | %-13s | %-20s | %-20s | %s", + S("Date"), S("Amount"), S("New Balance"), S("Method"), S("Purpose"), S("Partner")) + )) + table.insert(lines, minetest.formspec_escape("-----------------------------------------------------------------------------------------")) + + -- Populate the list with transaction data + if history then + for _, t in ipairs(history) do + if t.account == account_type then + local parts = {} + table.insert(parts, string.format("%-11s", os.date("%Y-%m-%d", t.timestamp))) + table.insert(parts, string.format("%12s", string.format("%+.2f", t.amount) .. " MG")) + table.insert(parts, string.format("%12s", string.format("%.2f", t.new_total).." MG")) + table.insert(parts, string.format("%-20s", S(t.type))) + + local purpose = t.purpose or "" + local partner = t.other or "" + if purpose ~= "" or partner ~= "" then + table.insert(parts, string.format("%-20s", purpose)) + if partner ~= "" then + table.insert(parts, partner) + end + end + table.insert(lines, minetest.formspec_escape(table.concat(parts, " | "))) + end + end + end + + -- Set the label for the current total based on the selected account type + if account_type == "balance" then + current_total_label = S("Current Balance: @1", string.format("%.2f", data.balance) .. " MG") + else + current_total_label = S("Current Credit Debt: @1", string.format("%.2f", data.credit) .. " MG") + end + + local form_name = "bank_accounts:atm_statement@" .. player_name + local formspec = "size[13,9]" .. + "label[0,0;"..S("Account Statement for @1", player_name).."]" .. + "button_exit[0,0.5;2,1;view_balance;"..S("Balance").."]" .. + "button_exit[2,0.5;2,1;view_credit;"..S("Credit").."]" .. + "textlist[0,1.2;13,7;statement_list;"..table.concat(lines, ",").."]".. + "label[0,8.4;"..current_total_label.."]".. + "button_exit[11,8.4;2,1;back;"..S("Back").."]" + + minetest.show_formspec(player_name, form_name, formspec) +end + +-- Shows the main menu form for the ATM. +function main_form(player, pos) + local player_name = player:get_player_name() + local data = bank_accounts.get_account_data(player_name) + local next_rate = 0 + if data.credit > 0 then + next_rate = math.max(1, math.floor(data.credit * credit_rate)) + end + + minetest.show_formspec(player_name, "bank_accounts:atm_options", + "size[8,8]" .. + "button_exit[1,.5;2,1;withdrawal;"..S("Withdraw").."]" .. + "button_exit[1,1.5;2,1;deposit;"..S("Deposit").."]" .. + "button_exit[1,2.5;3,1;pay_credit;"..S("Pay Credit Debt").."]" .. + "label[4.5,0.8;"..S("Account Balance: @1", string.format("%.2f", data.balance) .. " MG").."]" .. + "label[4.5,1.3;"..S("Total Credit Debt: @1", string.format("%.2f", data.credit) .. " MG").."]" .. + "label[4.5,1.8;"..S("Next Rate: @1", tostring(next_rate) .. " MG").."]" .. + "button_exit[4.5,2.5;3,1;statement;"..S("Account Statement").."]" .. + "button_exit[1,3.5;3,1;credit_card;"..S("Get Credit Card").."]" .. + "button_exit[1,4.5;3,1;debit_card;"..S("Get Debit Card").."]" .. + "button_exit[5,7;2,1;exit;"..S("Close").."]") +end + +-- Node definition for the ATM +minetest.register_node("bank_accounts:atm", { + description = S("Automatic Teller Machine"), + drawtype = "mesh", + mesh = "atm.obj", + paramtype = "light", + paramtype2 = "facedir", + tiles = {"atm_col.png"}, + groups = {cracky=3, crumbly=3, oddly_breakable_by_hand=2}, + + -- Create inventories when the node is placed in the world. + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("ones", 1) + inv:set_size("fives", 1) + inv:set_size("tens", 1) + inv:set_size("withdrawal", 3) + end, + + -- Called when a player right-clicks the node. + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + pos_info = pos -- Set the global position for other functions to use. + if itemstack:get_name() ~= "bank_accounts:atm_card" then + minetest.chat_send_player(player:get_player_name(), S("[ATM] Must use ATM card.")) + return + end + -- Show the initial PIN entry form. + minetest.show_formspec(player:get_player_name(), "bank_accounts:atm_home", + "size[8,8]" .. + "pwdfield[2,4;4,1;fourdigitpin;"..S("Four Digit Pin:").."]" .. + "button_exit[5,6;2,1;enter;"..S("Enter").."]" .. + "button_exit[3,6;2,1;exit;"..S("Cancel").."]") + end, + + -- Prevents players from putting incorrect items into the deposit slots. + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if listname == "ones" and stack:get_name() ~= "currency:minegeld" then return 0 end + if listname == "fives" and stack:get_name() ~= "currency:minegeld_5" then return 0 end + if listname == "tens" and stack:get_name() ~= "currency:minegeld_10" then return 0 end + return stack:get_count() + end, + + -- Prevents players from moving items between the typed deposit slots. + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local inv = minetest.get_meta(pos):get_inventory() + local stack = inv:get_stack(from_list, from_index) + if to_list == "ones" and stack:get_name() ~= "currency:minegeld" then return 0 end + if to_list == "fives" and stack:get_name() ~= "currency:minegeld_5" then return 0 end + if to_list == "tens" and stack:get_name() ~= "currency:minegeld_10" then return 0 end + return count + end +}) + +-- Central handler for all formspec interactions related to the ATM. +minetest.register_on_player_receive_fields(function(player, formname, fields) + -- Only process forms belonging to this node. + if not formname:find("bank_accounts:atm") then + return + end + + local player_name = player:get_player_name() + local pos = pos_info + if not pos then + return + end + + -- Handle PIN entry form. + if formname == "bank_accounts:atm_home" then + if fields.enter then + if bank_accounts.get_pin(player_name) == fields.fourdigitpin then + main_form(player, pos) + else + minetest.chat_send_player(player_name, S("[ATM] Invalid Pin.")) + end + end + + -- Handle main menu options. + elseif formname == "bank_accounts:atm_options" then + if fields.withdrawal then + minetest.get_meta(pos):get_inventory():set_size("withdrawal", 3) + minetest.show_formspec(player_name, "bank_accounts:atm_withdrawal", + "size[8,8]" .. + "field[2,4;5,1;money;"..S("Amount:")..";]" .. + "button_exit[3,6;2,1;exit;"..S("Cancel").."]" .. + "button_exit[5,6;2,1;enter;"..S("Enter").."]") + elseif fields.deposit then + local inv = minetest.get_meta(pos):get_inventory() + inv:set_size("ones", 1); inv:set_size("fives", 1); inv:set_size("tens", 1) + local list_name = "nodemeta:" .. pos.x .. "," .. pos.y .. "," .. pos.z + minetest.show_formspec(player_name, "bank_accounts:atm_deposit", + "size[8,8]" .. + "label[1,.5;1 MG]" .. "label[2,.5;5 MG]" .. "label[3,.5;10 MG]" .. + "list["..list_name..";ones;.75,1;1,1]" .. + "list["..list_name..";fives;1.75,1;1,1]" .. + "list["..list_name..";tens;2.75,1;1,1]" .. + "list[current_player;main;0,3;8,4;]" .. + "button_exit[3,7;2,1;exit;"..S("Cancel").."]" .. + "button_exit[5,7;2,1;enter;"..S("Enter").."]") + elseif fields.pay_credit then + local credit_debt = bank_accounts.get_credit(player_name) + local next_rate = 0 + if credit_debt > 0 then + next_rate = math.max(1, math.floor(credit_debt * credit_rate)) + end + minetest.show_formspec(player_name, "bank_accounts:atm_pay_credit", + "size[8,8]" .. + "label[0,0.5;"..S("Total Credit Debt: @1", string.format("%.2f", credit_debt).." MG").."]".. + "label[0,2;"..S("Next calculated rate:").."]".. + "button_exit[0,2.5;3.5,1;pay_rate;"..S("Pay Next Rate (@1 MG)", next_rate).."]" .. + "label[4.2,2;"..S("Or enter a custom amount:").."]" .. + "field[4.5,2.8;3.5,1;custom_amount;"..""..";]" .. + "button_exit[4.2,3.5;3.5,1;pay_custom;"..S("Pay Custom Amount").."]" .. + "button_exit[3,7;2,1;exit;"..S("Cancel").."]") + elseif fields.statement then + show_atm_statement_form(player, "balance") + elseif fields.credit_card then + player:get_inventory():add_item("main", "bank_accounts:credit_card") + main_form(player, pos) + elseif fields.debit_card then + player:get_inventory():add_item("main", "bank_accounts:debit_card") + main_form(player, pos) + end + + -- Handle withdrawal form. + elseif formname == "bank_accounts:atm_withdrawal" then + if fields.enter then + local amount = tonumber(fields.money) + if amount and amount > 0 and amount % 1 == 0 and bank_accounts.get_balance(player_name) >= amount then + bank_accounts.add_balance(player_name, -amount, "ATM Withdrawal", "", "") + local tens=math.floor(amount/10); local rem=amount%10; local fives=math.floor(rem/5); local ones=rem%5 + local inv = minetest.get_meta(pos):get_inventory() + inv:set_stack("withdrawal", 1, {name="currency:minegeld_10", count=tens}) + inv:set_stack("withdrawal", 2, {name="currency:minegeld_5", count=fives}) + inv:set_stack("withdrawal", 3, {name="currency:minegeld", count=ones}) + local list_name = "nodemeta:"..pos.x..","..pos.y..","..pos.z + minetest.show_formspec(player_name, "bank_accounts:withdrawn_money", + "size[8,8]" .. + "label[1,0.5;"..S("Please take your money.").. "]" .. + "list["..list_name..";withdrawal;1,1;3,1]" .. + "list[current_player;main;0,3;8,4;]" .. + "button_exit[3,7;2,1;exit;"..S("Close").."]") + else + minetest.chat_send_player(player_name, S("[ATM] Insufficient funds or invalid amount.")) + main_form(player, pos) + end + else + main_form(player, pos) + end + + -- Handle deposit form. + elseif formname == "bank_accounts:atm_deposit" then + local inv = minetest.get_meta(pos):get_inventory() + if fields.enter then + local total_deposit = inv:get_stack("ones",1):get_count() + inv:get_stack("fives",1):get_count()*5 + inv:get_stack("tens",1):get_count()*10 + if total_deposit > 0 then + bank_accounts.add_balance(player_name, total_deposit, "ATM Deposit", "", "") + minetest.chat_send_player(player_name, S("[ATM] Deposited @1.", tostring(total_deposit).." MG")) + end + else + -- Return items to player if they cancel. + local player_inv = player:get_inventory() + player_inv:add_item("main", inv:get_stack("ones",1)) + player_inv:add_item("main", inv:get_stack("fives",1)) + player_inv:add_item("main", inv:get_stack("tens",1)) + end + inv:set_stack("ones",1,nil); inv:set_stack("fives",1,nil); inv:set_stack("tens",1,nil) + main_form(player, pos) + + -- Handle form after taking withdrawn money. + elseif formname == "bank_accounts:withdrawn_money" then + main_form(player, pos) + + -- Handle credit payment form. + elseif formname == "bank_accounts:atm_pay_credit" then + local amount_to_pay = 0 + local is_valid = false + if fields.pay_rate then + local credit_debt = bank_accounts.get_credit(player_name) + if credit_debt > 0 then + amount_to_pay = math.max(1, math.floor(credit_debt * credit_rate)) + end + is_valid = true + elseif fields.pay_custom then + amount_to_pay = normalize_and_tonumber(fields.custom_amount) + local min_payment = 0 + local credit_debt = bank_accounts.get_credit(player_name) + if credit_debt > 0 then + min_payment = math.max(1, math.floor(credit_debt * credit_rate)) + end + if not amount_to_pay or amount_to_pay < min_payment then + minetest.chat_send_player(player_name, S("[ATM] You must pay at least the minimum monthly rate.")) + else + is_valid = true + end + end + + if is_valid and amount_to_pay and amount_to_pay > 0 then + if bank_accounts.get_balance(player_name) < amount_to_pay then + minetest.chat_send_player(player_name, S("[ATM] Insufficient funds.")) + elseif bank_accounts.get_credit(player_name) < amount_to_pay then + minetest.chat_send_player(player_name, S("[ATM] You don't have that much credit debt.")) + else + bank_accounts.add_balance(player_name, -amount_to_pay, "Rate Payment", "", "") + bank_accounts.add_credit(player_name, -amount_to_pay, "Rate Payment", "", "") + minetest.chat_send_player(player_name, S("[ATM] Paid @1 of credit debt.", string.format("%.2f", amount_to_pay).." MG")) + end + elseif fields.pay_custom and is_valid == false then + -- Do nothing, error message was already sent. + elseif not fields.exit and not fields.quit and (fields.pay_rate or fields.pay_custom) then + -- Catch other invalid inputs. + minetest.chat_send_player(player_name, S("[ATM] Invalid amount.")) + end + main_form(player, pos) + + -- Handle statement form. + elseif formname:find("bank_accounts:atm_statement@") then + local target_name = formname:match("bank_accounts:atm_statement@(.*)") + if not target_name then return end + if fields.back then + main_form(player, pos) + else + show_atm_statement_form(player, fields.view_credit and "credit" or "balance") + end + end +end) diff --git a/card_swipe.lua b/card_swipe.lua new file mode 100644 index 0000000..67f2154 --- /dev/null +++ b/card_swipe.lua @@ -0,0 +1,213 @@ +--[[ + Card Swipe Node + --------------- + This file defines the Card Swipe node, which allows players + to set up shops and sell items via card payments. +--]] + +-- Uses the global 'pos_info' variable for consistency. + +-- Node definition for the Card Swipe. +minetest.register_node("bank_accounts:card_swipe", { + description = S("Card Swipe"), + drawtype = "mesh", + mesh = "card_swipe.obj", + paramtype = "light", + paramtype2 = "facedir", + tiles = {"card_reader_col.png"}, + groups = {cracky=3, crumbly=3, oddly_breakable_by_hand=2}, + selection_box = { type = "fixed", fixed = {{-.3,-.5,-.3,.4,-.2,.3}} }, + collision_box = { type = "fixed", fixed = {{-.3,-.5,-.3,.4,-.2,.3}} }, + + -- Creates the item inventory when the node is placed. + on_construct = function(pos) + minetest.get_meta(pos):get_inventory():set_size("items", 8) + end, + + -- Sets the owner of the node after it has been placed. + after_place_node = function(pos, placer) + local meta = minetest.get_meta(pos) + local owner = placer:get_player_name() + meta:set_string("infotext", S("Card Swipe (owned by @1)", owner)) + meta:set_string("owner", owner) + end, + + -- Ensures only the owner can dig the node, and only if it's empty. + can_dig = function(pos, player) + local meta = minetest.get_meta(pos) + if player:get_player_name() == meta:get_string("owner") then + return meta:get_inventory():is_empty("items") + end + return false + end, + + -- Called when a player right-clicks the node. + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + pos_info = pos -- Set global position. + local meta = minetest.get_meta(pos) + local player_name = player:get_player_name() + local owner = meta:get_string("owner") + local list_name = "nodemeta:" .. pos.x .. "," .. pos.y .. "," .. pos.z + + -- Show seller interface if the player is the owner. + if player_name == owner then + minetest.show_formspec(player_name, "bank_accounts:card_swipe_seller", + "size[8,9]" .. + "field[1,0.5;4,1;price;"..S("Price in MG:")..";"..minetest.formspec_escape(meta:get_string("price") or "").."]" .. + "label[0,1.75;"..S("Items for Sale:").."]".. + "list["..list_name..";items;0,2.25;8,2]" .. + "label[0,4.5;"..S("Your Inventory:").."]".. + "list[current_player;main;0,5;8,3]" .. + "button_exit[1,8.25;3,1;reset;"..S("Reset Price").."]" .. + "button_exit[4.5,8.25;3,1;set_price;"..S("Set Price").."]") + -- Show buyer interface for everyone else. + else + if meta:get_inventory():is_empty("items") then + minetest.chat_send_player(player_name, S("[Card Swipe] This machine is empty.")) + return + end + local price_str = meta:get_string("price") + if not price_str or price_str == "" then + minetest.chat_send_player(player_name, S("[Card Swipe] No price has been set.")) + return + end + + local wielded_item = itemstack:get_name() + if wielded_item ~= "bank_accounts:debit_card" and wielded_item ~= "bank_accounts:credit_card" then + minetest.chat_send_player(player_name, S("[Card Swipe] Must use a debit or credit card.")) + return + end + + if minetest.check_player_privs(player_name, {seized=true}) then + minetest.chat_send_player(player_name, S("[Card Swipe] Your account has been seized! Transaction denied.")) + return + end + + local price = tonumber(price_str) + if wielded_item == "bank_accounts:debit_card" and bank_accounts.get_balance(player_name) < price then + minetest.chat_send_player(player_name, S("[Card Swipe] Card declined. Insufficient funds.")) + return + end + + minetest.show_formspec(player_name, "bank_accounts:card_swipe_buyer", + "size[8,8]" .. + "label[1,1;"..S("Price: @1", string.format("%.2f", price).." MG").."]" .. + "label[1,1.5;"..S("Owner: @1", owner).."]".. + "label[1,2;"..S("Items for Sale (Click 'Buy' to receive):").."]".. + "list["..list_name..";items;0,2.5;8,2]" .. + "list[current_player;main;0,5;8,2;]" .. + "button_exit[2,7.4;2,1;cancel;"..S("Cancel").."]" .. + "button_exit[4,7.4;2,1;buy;"..S("Buy").."]") + end + end, + + -- Only the owner can put items into the swipe machine. + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if player:get_player_name() == minetest.get_meta(pos):get_string("owner") then + return stack:get_count() + end + return 0 + end, + + -- THEFT-PREVENTION: Players cannot take items manually. + -- The script transfers them automatically upon successful purchase. + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + return 0 + end, +}) + +-- Crafting recipe for the Card Swipe machine. +minetest.register_craft({ + output = "bank_accounts:card_swipe", + recipe = { + {"default:steel_ingot", "default:copper_ingot", "default:steel_ingot"}, + {"bank_accounts:credit_card", "default:mese", "bank_accounts:debit_card"}, + {"default:steel_ingot", "default:copper_ingot", "default:steel_ingot"}, + }, +}) + +-- Handles formspec submissions for the Card Swipe. +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not formname:find("bank_accounts:card_swipe") then + return + end + + local player_name = player:get_player_name() + local pos = pos_info + if not pos then + return + end + + local meta = minetest.get_meta(pos) + if not meta then + return + end + + -- Logic for the seller's interface. + if formname == "bank_accounts:card_swipe_seller" then + if fields.set_price then + local price = normalize_and_tonumber(fields.price) + if price and price > 0 then + meta:set_string("price", tostring(price)) + minetest.chat_send_player(player_name, S("[Card Swipe] Price set to @1.", string.format("%.2f", price).." MG")) + else + minetest.chat_send_player(player_name, S("[Card Swipe] Invalid price. Must be a number greater than 0.")) + end + elseif fields.reset then + meta:set_string("price", "") + minetest.chat_send_player(player_name, S("[Card Swipe] Price has been reset.")) + end + end + + -- Logic for the buyer's interface. + if formname == "bank_accounts:card_swipe_buyer" then + if fields.buy then + local owner = meta:get_string("owner") + local price = tonumber(meta:get_string("price") or "0") + local shop_inv = meta:get_inventory() + local wielded_item = player:get_wielded_item():get_name() + + if price <= 0 or shop_inv:is_empty("items") then + minetest.chat_send_player(player_name, S("[Card Swipe] This offer is no longer valid.")) + return + end + + local payment_successful = false + local description_for_buyer = S("Items from @1", owner) + local description_for_seller = S("Items to @1", player_name) + + -- Debit Card Transaction + if wielded_item == "bank_accounts:debit_card" then + if bank_accounts.get_balance(player_name) >= price then + bank_accounts.add_balance(player_name, -price, "Purchase", "", description_for_buyer, owner) + bank_accounts.add_balance(owner, price, "Sale", "", description_for_seller, player_name) + payment_successful = true + end + -- Credit Card Transaction + elseif wielded_item == "bank_accounts:credit_card" then + bank_accounts.add_credit(player_name, price, "Credit Purchase", "", description_for_buyer, owner) + bank_accounts.add_balance(owner, price, "Sale", "", description_for_seller, player_name) + payment_successful = true + end + + -- If payment was successful, transfer items. + if payment_successful then + local player_inv = player:get_inventory() + for i=1, shop_inv:get_size("items") do + local stack = shop_inv:get_stack("items", i) + if not stack:is_empty() then + player_inv:add_item("main", stack) + end + end + shop_inv:set_list("items", {}) + meta:set_string("price", "") + + minetest.chat_send_player(player_name, S("[Card Swipe] Purchase successful!")) + minetest.chat_send_player(owner, S("[Card Swipe] Your items have been sold for @1.", string.format("%.2f", price).." MG")) + player:get_inventory():add_item("main", "bank_accounts:receipt") + else + minetest.chat_send_player(player_name, S("[Card Swipe] Payment declined!")) + end + end + end +end) diff --git a/cards.lua b/cards.lua new file mode 100644 index 0000000..7def7b2 --- /dev/null +++ b/cards.lua @@ -0,0 +1,30 @@ +--[[ + Item Definitions + ---------------- + This file defines all physical items from the mod, like + the different types of cards and the receipt. +--]] + +-- The credit card for purchases via credit line. +minetest.register_craftitem("bank_accounts:credit_card", { + description = S("Credit Card"), + inventory_image = "credit_card.png", + groups = {not_in_creative_inventory=1}, + stack_max = 1, +}) + +-- The debit card for purchases from the account balance. +minetest.register_craftitem("bank_accounts:debit_card", { + description = S("Debit Card"), + inventory_image = "debit_card.png", + groups = {not_in_creative_inventory=1}, + stack_max = 1, +}) + +-- A receipt item given after a card swipe purchase. +minetest.register_craftitem("bank_accounts:receipt", { + description = S("Receipt"), + inventory_image = "receipt.png", + groups = {not_in_creative_inventory=1}, + stack_max = 1, +}) diff --git a/chatcommands.lua b/chatcommands.lua new file mode 100644 index 0000000..f636d31 --- /dev/null +++ b/chatcommands.lua @@ -0,0 +1,212 @@ +--[[ + Chat Commands + ------------- + This file defines all chat commands for players and admins + to interact with the banking system. +--]] + +-- Privilege for seized accounts. +minetest.register_privilege("seized", { + description = S("Account seized."), + give_to_singleplayer = false, +}) + +-- Allows any player to see their own balance, or privileged players to see others'. +minetest.register_chatcommand("bank_account", { + params = S("[]"), + description = S("Shows your account balance or the balance of another player (if you have permission)."), + func = function(name, param) + local target_name = param + if not target_name or target_name == "" then + target_name = name + end + + if target_name ~= name and not minetest.check_player_privs(name, {bank_teller=true, server=true}) then + minetest.chat_send_player(name, S("You do not have permission to view other players' accounts.")) + return + end + + if not bank_accounts.player_has_account(target_name) then + minetest.chat_send_player(name, S("Player '@1' not found or has no account.", target_name)) + return + end + + local data = bank_accounts.get_account_data(target_name) + minetest.chat_send_player(name, S("Balance for @1: @2", target_name, string.format("%.2f", data.balance) .. " MG")) + minetest.chat_send_player(name, S("Credit Debt for @1: @2", target_name, string.format("%.2f", data.credit) .. " MG")) + end, +}) + +-- Allows any player to set their own PIN. +minetest.register_chatcommand("bank_set_pin", { + params = S("<4-digit-pin>"), + description = S("Set pin for your bank account."), + func = function(name, param) + if not param or param == "" then + minetest.chat_send_player(name, S("[Account] No numbers entered.")) + return + end + if param:match("^[0-9][0-9][0-9][0-9]$") then + bank_accounts.set_pin(name, param) + minetest.chat_send_player(name, S("[Account] Pin successfully set!")) + local player = minetest.get_player_by_name(name) + if player and not player:get_inventory():contains_item("main", "bank_accounts:atm_card") then + player:get_inventory():add_item("main", "bank_accounts:atm_card") + end + else + minetest.chat_send_player(name, S("[Account] Invalid number entered. Must be exactly 4 digits.")) + end + end +}) + +-- Helper function to parse admin commands that require an integer amount. +local function parse_admin_params_int(params) + local parts = params:split(" ", 2) + local playername = parts[1] + local number_str = parts[2] + if not playername or playername=="" then return nil, nil, S("[Bank] Player name missing.") end + if not bank_accounts.player_has_account(playername) then return nil, nil, S("[Bank] Invalid player name entered.") end + if not number_str or number_str=="" then return playername, nil, S("[Bank] No number entered.") end + local number = normalize_and_tonumber(number_str) + if not number then return playername, nil, S("[Bank] Invalid number entered.") end + if number % 1 ~= 0 then return playername, nil, S("[Bank] Amount must be a whole number.") end + return playername, number +end + +-- Helper function to parse admin commands that allow a float amount. +local function parse_admin_params_float(params) + local parts = params:split(" ", 2) + local playername = parts[1] + local number_str = parts[2] + if not playername or playername=="" then return nil, nil, S("[Bank] Player name missing.") end + if not bank_accounts.player_has_account(playername) then return nil, nil, S("[Bank] Invalid player name entered.") end + if not number_str or number_str=="" then return playername, nil, S("[Bank] No number entered.") end + local number = normalize_and_tonumber(number_str) + if not number then return playername, nil, S("[Bank] Invalid number entered.") end + return playername, number +end + +-- Adds an integer amount to a player's balance. (Admin only) +minetest.register_chatcommand("bank_add", { + params = S(" "), + description = S("Add to a player's account balance."), + privs = {server = true}, + func = function(name, params) + local target_name, amount, err = parse_admin_params_int(params) + if err then + minetest.chat_send_player(name, err) + return + end + if not amount or amount <= 0 then + minetest.chat_send_player(name, S("[Bank] Number must be greater than 0.")) + return + end + bank_accounts.add_balance(target_name, amount, "Admin Deposit", S("By Admin: @1", name), name) + minetest.chat_send_player(name, S("[Bank] @1 successfully added to @2's account.", tostring(amount).." MG", target_name)) + end +}) + +-- Subtracts an integer amount from a player's balance. (Admin only) +minetest.register_chatcommand("bank_subtract", { + params = S(" "), + description = S("Subtract from a player's account balance."), + privs = {server = true}, + func = function(name, params) + local target_name, amount, err = parse_admin_params_int(params) + if err then + minetest.chat_send_player(name, err) + return + end + if not amount or amount <= 0 then + minetest.chat_send_player(name, S("[Bank] Number must be greater than 0.")) + return + end + bank_accounts.add_balance(target_name, -amount, "Admin Withdrawal", S("By Admin: @1", name), name) + minetest.chat_send_player(name, S("[Bank] @1 successfully subtracted from @2's account.", tostring(amount).." MG", target_name)) + end +}) + +-- Sets a player's balance to a specific (float) amount. (Admin only) +minetest.register_chatcommand("bank_balance", { + params = S(" "), + description = S("Set a player's account balance."), + privs = {server = true}, + func = function(name, params) + local target_name, amount, err = parse_admin_params_float(params) + if err then + minetest.chat_send_player(name, err) + return + end + if amount == nil or amount < 0 then + minetest.chat_send_player(name, S("[Bank] Number must be 0 or greater.")) + return + end + bank_accounts.set_balance(target_name, amount, "Admin Set Balance", S("By Admin: @1", name), name) + minetest.chat_send_player(name, S("[Bank] Funds successfully set for @1.", target_name)) + end +}) + +-- Sets a player's credit debt to a specific (float) amount. (Admin only) +minetest.register_chatcommand("bank_credit", { + params = S(" "), + description = S("Set a player's credit debt."), + privs = {server = true}, + func = function(name, params) + local target_name, amount, err = parse_admin_params_float(params) + if err then + minetest.chat_send_player(name, err) + return + end + if amount == nil or amount < 0 then + minetest.chat_send_player(name, S("[Bank] Number must be 0 or greater.")) + return + end + bank_accounts.set_credit(target_name, amount, "Admin Set Credit", S("By Admin: @1", name), name) + minetest.chat_send_player(name, S("[Bank] Credit debt for @1 has been set to @2.", string.format("%.2f", amount).." MG", target_name)) + end +}) + +-- Wipes a player's balance to 0. (Admin only) +minetest.register_chatcommand("bank_wipe", { + params = S(""), + description = S("Wipe a player's bank account."), + privs = {server = true}, + func = function(name, param) + if not param or not bank_accounts.player_has_account(param) then + minetest.chat_send_player(name, S("[Bank] Invalid player name entered.")) + return + end + bank_accounts.set_balance(param, 0, "Admin Wipe", S("By Admin: @1", name), name) + minetest.chat_send_player(name, S("[Bank] Account successfully wiped for @1!", param)) + end +}) + +-- Seizes a player's account. (Admin only) +minetest.register_chatcommand("bank_seize", { + params = S(""), + description = S("Seize a player's account."), + privs = {server = true}, + func = function(name, param) + if not param or not bank_accounts.player_has_account(param) then + minetest.chat_send_player(name, S("[Bank] Invalid player name entered.")) + return + end + minetest.set_player_privs(param, {seized = true}) + minetest.chat_send_player(name, S("[Bank] Account successfully seized for @1!", param)) + end +}) + +-- Unseizes a player's account. (Admin only) +minetest.register_chatcommand("bank_unseize", { + params = S(""), + description = S("Unseize a player's account."), + privs = {server = true}, + func = function(name, param) + if not param or not bank_accounts.player_has_account(param) then + minetest.chat_send_player(name, S("[Bank] Invalid player name entered.")) + return + end + minetest.set_player_privs(param, {seized = nil}) + minetest.chat_send_player(name, S("[Bank] Account successfully unseized for @1!", param)) + end +}) diff --git a/computer.lua b/computer.lua new file mode 100644 index 0000000..554e0f4 --- /dev/null +++ b/computer.lua @@ -0,0 +1,265 @@ +--[[ + Teller Computer Node + -------------------- + This file defines the Teller Computer node, which allows players with + the 'bank_teller' privilege to manage other players' accounts. +--]] + +-- Uses the global 'pos_info' variable defined in atm.lua for consistency. +pos_data = {} -- Kept for historical reasons, but pos_info is used. + +-- Shows the main form for the teller. +-- @param player: The teller player object. +-- @param pos: The position of the computer node. +-- @param customer_name: The name of the customer being managed. +local function show_teller_form(player, pos, customer_name) + local list_name = "nodemeta:" .. pos.x .. "," .. pos.y .. "," .. pos.z + local data = {balance = 0, credit = 0} + if customer_name and customer_name ~= "" and bank_accounts.player_has_account(customer_name) then + data = bank_accounts.get_account_data(customer_name) + end + + local formspec = "size[8,9.5]" .. + "label[0,-.25;"..S("Deposit:").."]" .. + "list["..list_name..";ones;0,.25;1,1]" .. "list["..list_name..";fives;1.25,.25;1,1]" .. "list["..list_name..";tens;2.5,.25;1,1]" .. + "label[0.25,1.2;1 MG]" .. "label[1.5,1.2;5 MG]" .. "label[2.75,1.2;10 MG]" .. + "field[4,.5;4,1;playername;"..S("Player:")..";"..minetest.formspec_escape(customer_name or "").."]" .. + "field[.3,2.25;4,1;withdrawal;"..S("Withdraw:")..";]" .. + "field[.3,3.25;4,1;credit_debt;"..S("Credit Payment:")..";]" .. + "label[.5,4.5;"..S("Balance: @1", string.format("%.2f", data.balance).." MG").."]" .. + "label[.5,4.75;"..S("Credit Debt: @1", string.format("%.2f", data.credit).." MG").."]" .. + "button_exit[5.5,1;2,1;stats;"..S("Show Account").."]" .. + "button_exit[5.5,2;2,1;statement;"..S("Account Statement").."]" .. + "button_exit[5.5,3;2,1;wipe;"..S("Wipe Account").."]" .. + "button_exit[5.5,4;2,1;reset_pin;"..S("Reset PIN").."]" .. + "button_exit[3,5.5;2,1;exit;"..S("Cancel").."]" .. + "button_exit[5.5,5.5;2,1;enter;"..S("Enter").."]" .. + "list[current_player;main;0,7;8,2.5;]" + + minetest.show_formspec(player:get_player_name(), "bank_accounts:teller", formspec) +end + +-- Shows the account statement form for a given customer. +local function show_statement_form(player, pos, customer_name, account_type) + local data = bank_accounts.get_account_data(customer_name) + local history = data.history + local lines = {} + local current_total_label = "" + + table.insert(lines, minetest.formspec_escape(string.format("%-11s | %-13s | %-13s | %-20s | %-20s | %s", S("Date"), S("Amount"), S("New Balance"), S("Method"), S("Purpose"), S("Partner")))) + table.insert(lines, minetest.formspec_escape("-----------------------------------------------------------------------------------------")) + + if history then + for _, t in ipairs(history) do + if t.account == account_type then + local parts = {} + table.insert(parts, string.format("%-11s", os.date("%Y-%m-%d", t.timestamp))) + table.insert(parts, string.format("%12s", string.format("%+.2f", t.amount) .. " MG")) + table.insert(parts, string.format("%12s", string.format("%.2f", t.new_total).." MG")) + table.insert(parts, string.format("%-20s", S(t.type))) + + local purpose = t.purpose or "" + local partner = t.other or "" + if purpose ~= "" or partner ~= "" then + table.insert(parts, string.format("%-20s", purpose)) + if partner ~= "" then + table.insert(parts, partner) + end + end + table.insert(lines, minetest.formspec_escape(table.concat(parts, " | "))) + end + end + end + + if account_type == "balance" then + current_total_label = S("Current Balance: @1", string.format("%.2f", data.balance).." MG") + else + current_total_label = S("Current Credit Debt: @1", string.format("%.2f", data.credit).." MG") + end + + local form_name = "bank_accounts:statement@" .. customer_name + local formspec = "size[13,9]" .. + "label[0,0;"..S("Account Statement for @1",customer_name).."]" .. + "button_exit[0,0.5;2,1;view_balance;"..S("Balance").."]" .. + "button_exit[2,0.5;2,1;view_credit;"..S("Credit").."]" .. + "textlist[0,1.2;13,7;statement_list;"..table.concat(lines,",").."]".. + "label[0,8.4;"..current_total_label.."]".. + "button_exit[11,8.4;2,1;back;"..S("Back").."]" + + minetest.show_formspec(player:get_player_name(), form_name, formspec) +end + +-- Node definition for the Teller Computer. +minetest.register_node("bank_accounts:teller_computer", { + description = S("Bank Teller's Computer"), + drawtype = "mesh", + mesh = "computer.obj", + paramtype = "light", + paramtype2 = "facedir", + light_source = 5, + tiles = { {name="computer.png"},{name="computer_screen.png"} }, + groups = {cracky=3, crumbly=3, oddly_breakable_by_hand=2}, + selection_box = { type = "fixed", fixed = {{-.5,-.5,-.5,.5,.4,.2}} }, + collision_box = { type = "fixed", fixed = {{-.5,-.5,-.5,.5,.4,.2}} }, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("ones", 1) + inv:set_size("fives", 1) + inv:set_size("tens", 1) + end, + + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + pos_info = pos + local player_name = player:get_player_name() + if player:get_player_control().aux1 and minetest.check_player_privs(player_name, {server=true}) then + minetest.show_formspec(player_name, "bank_accounts:admin_teller", + "size[8,4]" .. + "field[.5,.5;4,1;search;"..S("Search:")..";]" .. + "button_exit[4.5,.22;2,1;search_button;"..S("Search").."]" .. + "label[.5,1.25;"..S("Player:").."]".. "label[3.5,1.25;"..S("Seized:").."]") + elseif minetest.check_player_privs(player_name, {bank_teller=true}) then + show_teller_form(player, pos, "") + else + minetest.chat_send_player(player_name, S("[Bank] Insufficient privileges.")) + end + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if listname=="ones" and stack:get_name()~="currency:minegeld" then return 0 end + if listname=="fives" and stack:get_name()~="currency:minegeld_5" then return 0 end + if listname=="tens" and stack:get_name()~="currency:minegeld_10" then return 0 end + return stack:get_count() + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local inv=minetest.get_meta(pos):get_inventory() + local stack=inv:get_stack(from_list, from_index) + if to_list=="ones" and stack:get_name()~="currency:minegeld" then return 0 end + if to_list=="fives" and stack:get_name()~="currency:minegeld_5" then return 0 end + if to_list=="tens" and stack:get_name()~="currency:minegeld_10" then return 0 end + return count + end, +}) + +-- Central handler for all Teller and Admin forms. +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not formname:find("bank_accounts:teller") and not formname:find("bank_accounts:admin_teller") and not formname:find("bank_accounts:statement") then + return + end + + local player_name = player:get_player_name() + local pos = pos_info + if not pos then + return + end + + -- Admin search form. + if formname == "bank_accounts:admin_teller" then + if fields.search_button and fields.search and fields.search ~= "" then + local search_name=fields.search + local status + if not bank_accounts.player_has_account(search_name) then + status=S("No Account") + elseif minetest.check_player_privs(search_name,{seized=true}) then + status=S("Yes") + else + status=S("No") + end + minetest.show_formspec(player_name,formname, + "size[8,4]".. + "field[.5,.5;4,1;search;"..S("Search:")..";"..minetest.formspec_escape(search_name).."]".. + "button_exit[4.5,.22;2,1;search_button;"..S("Search").."]".. + "label[.5,1.25;"..S("Player:").."]".."label[3.5,1.25;"..S("Seized:").."]".. + "label[.5,1.75;"..minetest.formspec_escape(search_name).."]".."label[3.5,1.75;"..status.."]") + end + return + end + + -- Main teller form. + if formname == "bank_accounts:teller" then + local customer_name = fields.playername + -- This validation logic is quirky but proven to be stable in the user's environment. + if (not customer_name or customer_name=="") and not fields.exit then + minetest.chat_send_player(player_name, S("[Bank] Must enter a player name.")) + return + end + if (customer_name and customer_name~="" and not bank_accounts.player_has_account(customer_name)) and not fields.exit then + minetest.chat_send_player(player_name, S("[Bank] Invalid player name entered.")) + return + end + + if fields.stats then + show_teller_form(player, pos, customer_name) + elseif fields.statement then + show_statement_form(player, pos, customer_name, "balance") + elseif fields.wipe then + bank_accounts.set_balance(customer_name, 0, "Teller Wipe", S("Teller: @1", player_name), player_name) + show_teller_form(player, pos, customer_name) + elseif fields.reset_pin then + bank_accounts.set_pin(customer_name, "0000") + show_teller_form(player, pos, customer_name) + elseif fields.enter then + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + + -- Deposit + local total_deposit=inv:get_stack("ones",1):get_count()+inv:get_stack("fives",1):get_count()*5+inv:get_stack("tens",1):get_count()*10 + if total_deposit>0 then + bank_accounts.add_balance(customer_name,total_deposit,"Teller Deposit",S("Teller: @1",player_name),player_name) + end + + -- Withdrawal + local withdrawal = tonumber(fields.withdrawal) + if withdrawal and withdrawal>0 then + if withdrawal%1~=0 then + minetest.chat_send_player(player_name,S("[Bank] Withdrawal amount must be a whole number.")) + elseif bank_accounts.get_balance(customer_name)>=withdrawal then + bank_accounts.add_balance(customer_name,-withdrawal,"Teller Withdrawal",S("Teller: @1",player_name),player_name) + local tens=math.floor(withdrawal/10);local rem=withdrawal%10;local fives=math.floor(rem/5);local ones=rem%5 + player:get_inventory():add_item("main",{name="currency:minegeld_10",count=tens}) + player:get_inventory():add_item("main",{name="currency:minegeld_5",count=fives}) + player:get_inventory():add_item("main",{name="currency:minegeld",count=ones}) + else + minetest.chat_send_player(player_name,S("[Bank] Player has insufficient funds for withdrawal.")) + end + end + + -- Credit Payment + local credit_payment = normalize_and_tonumber(fields.credit_debt) + if credit_payment and credit_payment>0 then + if bank_accounts.get_balance(customer_name)>=credit_payment then + if bank_accounts.get_credit(customer_name)>=credit_payment then + bank_accounts.add_balance(customer_name,-credit_payment,"Teller Credit Payment",S("Teller: @1",player_name),player_name) + bank_accounts.add_credit(customer_name,-credit_payment,"Teller Credit Payment",S("Teller: @1",player_name),player_name) + else + minetest.chat_send_player(player_name,S("[Bank] Player does not have that much credit debt.")) + end + else + minetest.chat_send_player(player_name,S("[Bank] Player has insufficient funds for credit payment.")) + end + end + + inv:set_stack("ones",1,nil) + inv:set_stack("fives",1,nil) + inv:set_stack("tens",1,nil) + show_teller_form(player,pos,customer_name) + end + end + + -- Statement form. + if formname:find("bank_accounts:statement@") then + local customer_name=formname:match("bank_accounts:statement@(.*)") + if not customer_name then + return + end + if fields.view_balance then + show_statement_form(player, pos, customer_name, "balance") + elseif fields.view_credit then + show_statement_form(player, pos, customer_name, "credit") + elseif fields.back then + show_teller_form(player, pos, customer_name) + end + end +end) diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..32a634e --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +currency \ No newline at end of file diff --git a/functions.lua b/functions.lua new file mode 100644 index 0000000..db3ad58 --- /dev/null +++ b/functions.lua @@ -0,0 +1,193 @@ +--[[ + Core API and Data Handling + -------------------------- + This file manages all low-level reading from and writing to the 'accounts' data file. + It provides a safe and centralized API for all other mod files to interact with player data. +--]] + +local world_path = minetest.get_worldpath() +local file_path = world_path .. "/accounts" + +-- Normalizes a string to use '.' as a decimal separator and converts to a number. +-- Handles both "1,23" and "1.23". +function normalize_and_tonumber(str) + if not str then + return nil + end + str = str:gsub(",", ".") + return tonumber(str) +end + +-- Internal function to read the entire accounts database file. +-- Returns a populated table or a clean default structure on any error. +local function read_accounts_file() + local f = io.open(file_path, "r") + if not f then + return { balance = {}, pin = {}, credit = {}, history = {} } + end + local data = f:read("*a") + f:close() + if data == "" or data == nil then + return { balance = {}, pin = {}, credit = {}, history = {} } + end + return minetest.deserialize(data) or { balance = {}, pin = {}, credit = {}, history = {} } +end + +-- Internal function to write the entire accounts database file. +-- Includes a locking mechanism to prevent race conditions with the interest script. +local function save_accounts_file(data) + -- If the daily interest calculation is running, wait in short intervals until it's done. + while bank_accounts and bank_accounts.is_calculating_interest do + minetest.log("action", "[bank_accounts] Interest calculation in progress, delaying save operation...") + minetest.sleep(0.5) + end + + local f, err = io.open(file_path, "w") + if not f then + minetest.log("error", "[bank_accounts] Could not open accounts file for writing: " .. tostring(err)) + return false + end + f:write(minetest.serialize(data)) + f:close() + return true +end + +-- Internal function to log a single transaction to a player's history. +local function log_transaction(data, player_name, account_type, amount, new_total, trans_type, purpose, other_party) + -- Ensure history tables exist. + if not data.history then data.history = {} end + if not data.history[player_name] then data.history[player_name] = {} end + + local transaction = { + timestamp = os.time(), + type = trans_type or "unknown", + account = account_type, -- "balance" or "credit" + amount = amount, + new_total = new_total, + purpose = purpose or "", -- e.g., "Teller: Rage87" or user-defined text + other = other_party or "" -- e.g., recipient or sender name + } + -- Insert at the beginning of the list to show newest transactions first. + table.insert(data.history[player_name], 1, transaction) + + -- Limit history to the last 200 entries to prevent the file from growing indefinitely. + while #data.history[player_name] > 200 do + table.remove(data.history[player_name]) + end +end + +-- On server start, create the accounts file if it doesn't exist. +do + local f = io.open(file_path, "r") + if not f then + save_accounts_file({ balance = {}, pin = {}, credit = {}, history = {} }) + else + f:close() + end +end + +--------------------------------------------------- +-- Public API accessible via `bank_accounts.*` +--------------------------------------------------- + +-- Gets all relevant data for a single player. +function bank_accounts.get_account_data(player_name) + local data = read_accounts_file() + -- Backwards compatibility check for old save files without a history table. + if not data.history then + data.history = {} + end + return { + balance = data.balance[player_name] or 0, + pin = data.pin[player_name] or "0000", + credit = data.credit[player_name] or 0, + history = data.history[player_name] or {}, + } +end + +-- Gets all data from the database (for background scripts like interest calculation). +function bank_accounts.get_all_data() + return read_accounts_file() +end + +-- Saves the complete data object (for background scripts). +function bank_accounts.save_all(data) + return save_accounts_file(data) +end + +-- Simple getter functions. +function bank_accounts.get_balance(player_name) local data = read_accounts_file(); return data.balance[player_name] or 0 end +function bank_accounts.get_credit(player_name) local data = read_accounts_file(); return data.credit[player_name] or 0 end +function bank_accounts.get_pin(player_name) local data = read_accounts_file(); return data.pin[player_name] or "0000" end + +-- Adds a value to a player's balance and logs the transaction. +function bank_accounts.add_balance(player_name, amount, trans_type, purpose, other_party) + local data = read_accounts_file() + local current_balance = data.balance[player_name] or 0 + local new_balance = current_balance + tonumber(amount) + data.balance[player_name] = new_balance + log_transaction(data, player_name, "balance", amount, new_balance, trans_type, purpose, other_party) + return save_accounts_file(data) +end + +-- Sets a player's balance to an absolute value and logs the transaction. +function bank_accounts.set_balance(player_name, amount, trans_type, purpose, other_party) + local data = read_accounts_file() + local current_balance = data.balance[player_name] or 0 + local new_balance = tonumber(amount) + local diff = new_balance - current_balance + data.balance[player_name] = new_balance + log_transaction(data, player_name, "balance", diff, new_balance, trans_type or "admin_set", purpose, other_party) + return save_accounts_file(data) +end + +-- Adds a value to a player's credit debt and logs the transaction. +function bank_accounts.add_credit(player_name, amount, trans_type, purpose, other_party) + local data = read_accounts_file() + local current_credit = data.credit[player_name] or 0 + local new_credit = current_credit + tonumber(amount) + data.credit[player_name] = new_credit + log_transaction(data, player_name, "credit", amount, new_credit, trans_type, purpose, other_party) + return save_accounts_file(data) +end + +-- Sets a player's credit debt to an absolute value and logs the transaction. +function bank_accounts.set_credit(player_name, amount, trans_type, purpose, other_party) + local data = read_accounts_file() + local current_credit = data.credit[player_name] or 0 + local new_credit = tonumber(amount) + local diff = new_credit - current_credit + data.credit[player_name] = new_credit + log_transaction(data, player_name, "credit", diff, new_credit, trans_type or "admin_set_credit", purpose, other_party) + return save_accounts_file(data) +end + +-- Sets a player's PIN. +function bank_accounts.set_pin(player_name, pin) + local data = read_accounts_file() + data.pin[player_name] = tostring(pin) + return save_accounts_file(data) +end + +-- Checks if a player has an entry in the database. +function bank_accounts.player_has_account(player_name) + local data = read_accounts_file() + return data.balance[player_name] ~= nil +end + +-- Creates a new, empty account for a player. +function bank_accounts.create_account(player_name) + if bank_accounts.player_has_account(player_name) then + return false + end + local data = read_accounts_file() + data.balance[player_name] = 0 + data.pin[player_name] = "0000" + data.credit[player_name] = 0 + if not data.history then + data.history = {} + end + data.history[player_name] = {} + log_transaction(data, player_name, "system", 0, 0, "Account Created", "Initial account setup") + return save_accounts_file(data) +end diff --git a/i18n.lua b/i18n.lua new file mode 100644 index 0000000..d23d47d --- /dev/null +++ b/i18n.lua @@ -0,0 +1,8 @@ +--[[ + Internationalization (i18n) Setup + --------------------------------- + Defines the global translation function S() for the mod. + It dynamically gets the mod's name to support renaming the mod folder. +--]] + +S = minetest.get_translator(minetest.get_current_modname()) diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..5f1544a --- /dev/null +++ b/init.lua @@ -0,0 +1,25 @@ +--[[ + Bank Accounts Mod - Initialization File + --------------------------------------- + This file defines the global namespace and loads all other + mod files in the correct order. +--]] + +-- Global namespace for the mod to organize functions and data. +bank_accounts = {} + +-- Load helper scripts first. +dofile(minetest.get_modpath("bank_accounts") .. "/i18n.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/functions.lua") + +-- Load item and node definitions. +dofile(minetest.get_modpath("bank_accounts") .. "/cards.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/atm.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/computer.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/card_swipe.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/pin_terminal.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/wtm.lua") + +-- Load systems that run in the background or provide commands. +dofile(minetest.get_modpath("bank_accounts") .. "/chatcommands.lua") +dofile(minetest.get_modpath("bank_accounts") .. "/interest.lua") diff --git a/interest.lua b/interest.lua new file mode 100644 index 0000000..ae62139 --- /dev/null +++ b/interest.lua @@ -0,0 +1,67 @@ +-- interest.lua (Nutzt die neue, dedizierte API-Funktion) + +-- KONFIGURATION +local BALANCE_INTEREST_RATE = 0.005 +local CREDIT_INTEREST_RATE = 0.03 +local INTEREST_CHECK_INTERVAL = 600 +local ONE_DAY_IN_SECONDS = 86400 + +local timestamp_file_path = minetest.get_worldpath() .. "/bank_interest_timestamp.txt" + +local function read_timestamp() local f = io.open(timestamp_file_path, "r"); if not f then return 0 end; local time = tonumber(f:read("*a")); f:close(); return time or 0 end +local function write_timestamp(time) local f = io.open(timestamp_file_path, "w"); if not f then return end; f:write(tostring(time)); f:close() end + +local time_since_last_check = 0 +bank_accounts.is_calculating_interest = false + +minetest.register_globalstep(function(dtime) + time_since_last_check = time_since_last_check + dtime + if time_since_last_check < INTEREST_CHECK_INTERVAL then return end + time_since_last_check = 0 + + local last_timestamp = read_timestamp() + + if os.time() - last_timestamp >= ONE_DAY_IN_SECONDS then + if bank_accounts.is_calculating_interest then return end + minetest.log("action", "[bank_accounts] Starting daily interest calculation...") + bank_accounts.is_calculating_interest = true + + -- KORREKTUR: Nutzt die neue, dedizierte Funktion + local data = bank_accounts.get_all_data() + local changes_made = false + + -- Zinsen auf Guthaben + if BALANCE_INTEREST_RATE > 0 then + for player_name, balance in pairs(data.balance) do + if balance > 0 then + local interest = balance * BALANCE_INTEREST_RATE + data.balance[player_name] = balance + interest + if not data.history then data.history = {} end; if not data.history[player_name] then data.history[player_name] = {} end + table.insert(data.history[player_name], 1, { timestamp = os.time(), type = "Interest Paid", account = "balance", amount = interest, new_total = data.balance[player_name], desc = S("Daily interest (@1%)", BALANCE_INTEREST_RATE * 100), other = "Bank" }) + changes_made = true + end + end + end + + -- Zinsen auf Kredit + if CREDIT_INTEREST_RATE > 0 then + for player_name, credit in pairs(data.credit) do + if credit > 0 then + local interest = credit * CREDIT_INTEREST_RATE + data.credit[player_name] = credit + interest + if not data.history then data.history = {} end; if not data.history[player_name] then data.history[player_name] = {} end + table.insert(data.history[player_name], 1, { timestamp = os.time(), type = "Interest Charged", account = "credit", amount = interest, new_total = data.credit[player_name], desc = S("Daily interest (@1%)", CREDIT_INTEREST_RATE * 100), other = "Bank" }) + changes_made = true + end + end + end + + if changes_made then + bank_accounts.save_all(data) + minetest.log("action", "[bank_accounts] Daily interest calculation complete.") + end + + write_timestamp(os.time()) + bank_accounts.is_calculating_interest = false + end +end) diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..ea6f8a7 --- /dev/null +++ b/license.txt @@ -0,0 +1,21 @@ +License: MIT + +Copyright 2016 Trent Lasich +Copyright 2025 Rage87 (complete redo + extend) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/locale/bank_accounts.de.tr b/locale/bank_accounts.de.tr new file mode 100644 index 0000000..636fd80 --- /dev/null +++ b/locale/bank_accounts.de.tr @@ -0,0 +1,229 @@ +# textdomain: bank_accounts + +# Items (cards.lua) +ATM Card=Bankkarte +Credit Card=Kreditkarte +Debit Card=Debitkarte +Receipt=Kassenbon + + +# ATM, Computer & WTM (core.lua / atm.lua, computer.lua, wtm.lua) +Automatic Teller Machine=Geldautomat +[ATM] Must use ATM card.=[ATM] Bitte eine Bankkarte benutzen. +Four Digit Pin:=Vierstellige PIN: +Enter=Bestätigen +Cancel=Abbrechen +[ATM] Invalid Pin.=[ATM] Ungültige PIN. +Withdraw=Auszahlung +Deposit=Einzahlung +Pay Credit Debt=Kredit zurückzahlen +Account Balance: @1=Kontostand: @1 +Total Credit Debt: @1=Kreditsumme: @1 +Next Rate: @1=Nächste Rate: @1 +Get Credit Card=Kreditkarte anfordern +Get Debit Card=Debitkarte anfordern +Close=Schließen +Amount:=Betrag: +Amount to pay:=Zu zahlender Betrag: +[ATM] Invalid amount.=[ATM] Ungültiger Betrag. +[ATM] Funds Successfully Withdrawn!=[ATM] Geld erfolgreich ausgezahlt! +Please take your money.=Bitte entnimm dein Geld. +[ATM] Insufficient funds.=[ATM] Guthaben nicht ausreichend. +[ATM] Deposited @1.=[ATM] @1 eingezahlt. +[ATM] Withdrawn money has been moved to your inventory.=[ATM] Ausgezahltes Geld wurde in dein Inventar verschoben. +[ATM] Please enter a PIN.=[ATM] Bitte eine PIN eingeben. +[ATM] Insufficient funds or invalid amount.=[ATM] Guthaben nicht ausreichend oder ungültiger Betrag. +[ATM] You don't have that much credit debt.=[ATM] Du hast keine so hohen Kreditschulden. +[ATM] Paid @1 of credit debt.=[ATM] @1 der Kreditschulden bezahlt. +[ATM] You must pay at least the minimum monthly rate.=[ATM] Die Zahlung muss mindestens der Rate entsprechen. +Qualified Bank Teller=Qualifizierter Bankangestellter +Bank Teller's Computer=Bankschalter-Computer +Search:=Suche: +Search=Suchen +Player:=Spieler: +Seized:=Gesperrt: +[Bank] Insufficient privileges.=[Bank] Unzureichende Berechtigungen. +Deposit:=Einzahlung: +Withdraw:=Auszahlung: +Credit Payment:=Kreditzahlung: +Balance: @1=Kontostand: @1 +Credit Debt: @1=Kreditschulden: @1 +Show Account=Konto anzeigen +Wipe Account=Konto leeren +Reset PIN=PIN zurücksetzen +No Results!=Keine Ergebnisse! +[Bank] Must enter a player name.=[Bank] Spielername muss eingegeben werden. +[Bank] Invalid player name entered.=[Bank] Ungültiger Spielername eingegeben. +[Bank] Player's debt has been forgiven!=[Bank] Die Schulden des Spielers wurden erlassen! +[Bank] Account successfully wiped!=[Bank] Konto erfolgreich geleert! +[Bank] Your account has been wiped by teller @1.=[Bank] Dein Konto wurde von Kassierer @1 geleert. +[Bank] Player's pin successfully reset!=[Bank] Die PIN des Spielers wurde erfolgreich zurückgesetzt! +[Bank] Your PIN has been reset by a teller.=[Bank] Deine PIN wurde von einem Kassierer zurückgesetzt. +[Bank] Deposited @1 for @2.=[Bank] @1 für @2 eingezahlt. +[Bank] @1 MG was deposited into your account by teller @2. New balance: @3 MG=[Bank] @1 MG wurden von Kassierer @2 auf dein Konto eingezahlt. Neuer Kontostand: @3 MG +[Bank] Withdrawal amount must be a whole number.=[Bank] Auszahlungsbetrag muss eine ganze Zahl sein. +[Bank] Player has insufficient funds for withdrawal.=[Bank] Der Spieler hat nicht genug Guthaben für die Auszahlung. +[Bank] @1 MG was withdrawn from your account by teller @2. New balance: @3 MG=[Bank] @1 MG wurden von Kassierer @2 von deinem Konto abgehoben. Neuer Kontostand: @3 MG +[Bank] Credit payment must be a whole number.=[Bank] Kreditzahlung muss eine ganze Zahl sein. +[Bank] Player does not have that much credit debt.=[Bank] Der Spieler hat keine so hohen Kreditschulden. +[Bank] Player has insufficient funds for credit payment.=[Bank] Der Spieler hat nicht genug Guthaben für die Kreditzahlung. +No Account=Kein Konto +Yes=Ja +No=Nein +Wire Transfer Machine=Überweisungs-Maschine +[WTM] Must use ATM card.=[WTM] Bitte eine Bankkarte benutzen. +[WTM] Invalid Pin.=[WTM] Ungültige PIN. +Transfer from Balance=Von Guthaben überweisen +Transfer from Credit=Von Kredit überweisen +Transfer from Balance (Available: @1 MG)=Von Guthaben überweisen (Verfügbar: @1 MG) +Transfer from Credit (Debt: @1 MG)=Von Kredit überweisen (Schulden: @1 MG) +Recipient:=Empfänger: +Purpose:=Verwendungszweck: +Send=Senden +[WTM] Recipient not found or has no account.=[WTM] Empfänger nicht gefunden oder hat kein Konto. +[WTM] Invalid amount.=[WTM] Ungültiger Betrag. +[WTM] Insufficient funds.=[WTM] Guthaben nicht ausreichend. +[WTM] Successfully transferred @1 MG to @2.=[WTM] Erfolgreich @1 MG an @2 überwiesen. +[WTM] You received a transfer of @1 MG from @2.=[WTM] Du hast eine Überweisung über @1 MG von @2 erhalten. + + +# Card Swipe (card_swipe.lua) +Card Swipe=Kartenleser +Card Swipe (owned by @1)=Kartenleser (im Besitz von @1) +Price in MG:=Preis in MG: +Items for Sale:=Zu verkaufen: +Your Inventory:=Dein Inventar: +Reset Price=Preis zurücksetzen +Set Price=Preis festlegen +[Card Swipe] No price has been set.=[Kartenleser] Es wurde kein Preis festgelegt. +[Card Swipe] This machine is empty.=[Kartenleser] Dieses Gerät ist leer. +[Card Swipe] Must use a debit or credit card.=[Kartenleser] Es muss eine EC- oder Kreditkarte verwendet werden. +[Card Swipe] Your account has been seized! Transaction denied.=[Kartenleser] Dein Konto wurde gesperrt! Transaktion abgelehnt. +[Card Swipe] Card declined. Insufficient funds.=[Kartenleser] Karte abgelehnt. Guthaben nicht ausreichend. +[Card Swipe] A buyer tried to purchase your items but had insufficient funds.=[Kartenleser] Ein Käufer hatte nicht genug Geld für deine Items. +Price: @1=Preis: @1 +Owner: @1=Besitzer: @1 +Items for Sale (Click 'Buy' to receive):=Zu verkaufen (Klicke 'Kaufen' zum Erhalten): +Buy=Kaufen +[Card Swipe] Invalid price. Must be a whole number greater than 0.=[Kartenleser] Ungültiger Preis. Muss eine ganze Zahl größer 0 sein. +[Card Swipe] Invalid price. Must be a number greater than 0.=[Kartenleser] Ungültiger Preis. Muss eine Zahl größer 0 sein. +[Card Swipe] Price has been reset.=[Kartenleser] Preis wurde zurückgesetzt. +[Card Swipe] This offer is no longer valid.=[Kartenleser] Dieses Angebot ist nicht mehr gültig. +[Card Swipe] Purchase successful!=[Kartenleser] Kauf erfolgreich! +[Card Swipe] Your items have been sold for @1.=[Kartenleser] Deine Items wurden für @1 verkauft. +[Card Swipe] Payment declined!=[Kartenleser] Zahlung abgelehnt! + + +# Chat Commands (chatcommands.lua) +Account seized.=Konto gesperrt. +Shows your current account balance and credit debt.=Zeigt deinen aktuellen Kontostand und deine Kreditschulden. +Shows your account balance or the balance of another player (if you have permission).=Zeigt deinen Kontostand oder den eines anderen Spielers an (falls du die Berechtigung hast). +Set pin for your bank account.=Setzt die PIN für dein Bankkonto. +[Account] No numbers entered.=[Konto] Keine Zahl eingegeben. +[Account] Pin successfully set!=[Konto] PIN erfolgreich gesetzt! +[Account] Invalid number entered. Must be exactly 4 digits.=[Konto] Ungültige Nummer. Muss genau 4 Ziffern lang sein. +[Bank] Player name missing.=[Bank] Spielername fehlt. +[Bank] No number entered.=[Bank] Keine Zahl eingegeben. +[Bank] Invalid number entered.=[Bank] Ungültige Zahl eingegeben. +[Bank] Amount must be a whole number.=[Bank] Betrag muss eine ganze Zahl sein. +Add to a player's account balance.=Fügt dem Konto eines Spielers Geld hinzu. +[Bank] Number must be greater than 0.=[Bank] Zahl muss größer als 0 sein. +[Bank] @1 successfully added to @2's account.=[Bank] @1 wurde dem Konto von @2 erfolgreich hinzugefügt. +Subtract from a player's account balance.=Zieht Geld vom Konto eines Spielers ab. +[Bank] @1 successfully subtracted from @2's account.=[Bank] @1 wurde vom Konto von @2 erfolgreich abgezogen. +Set a player's account balance.=Setzt den Kontostand eines Spielers. +[Bank] Number must be 0 or greater.=[Bank] Zahl muss 0 oder größer sein. +[Bank] Funds successfully set for @1.=[Bank] Kontostand für @1 erfolgreich gesetzt. +Set a player's credit debt.=Setzt die Kreditschulden eines Spielers. +[Bank] Credit debt for @1 has been set to @2.=[Bank] Kreditschulden für @1 wurden auf @2 gesetzt. +Wipe a player's bank account.=Leert das Bankkonto eines Spielers. +[Bank] Account successfully wiped for @1!=[Bank] Konto von @1 erfolgreich geleert! +Seize a player's account.=Sperrt das Konto eines Spielers. +[Bank] Account successfully seized for @1!=[Bank] Konto von @1 erfolgreich gesperrt! +Unseize a player's account.=Entsperrt das Konto eines Spielers. +[Bank] Account successfully unseized for @1!=[Bank] Konto von @1 erfolgreich entsperrt! +Your Balance: @1=Dein Kontostand: @1 +Your Credit Debt: @1=Deine Kreditschulden: @1 +Balance for @1: @2=Kontostand für @1: @2 +Credit Debt for @1: @2=Kreditschulden für @1: @2 +Player '@1' not found or has no account.=Spieler '@1' nicht gefunden oder hat kein Konto. +You do not have permission to view other players' accounts.=Du hast keine Berechtigung, die Konten anderer Spieler einzusehen. +[]=[] +<4-digit-pin>=<4-stellige-PIN> + = += + + +# Kontoauszug +Account Statement=Kontoauszug +Date=Datum +Amount=Betrag +New Balance=Neuer Stand +Method=Methode +Purpose=Verwendungszweck +Description=Beschreibung +Partner=Partner +Account Statement for @1=Kontoauszug für @1 +Balance=Guthaben +Credit=Kredit +Current Balance: @1=Aktueller Kontostand: @1 +Current Credit Debt: @1=Aktuelle Kreditschulden: @1 +Back=Zurück +Pay Next Rate (@1 MG)=Nächste Rate zahlen (@1 MG) +Or enter a custom amount:=Oder einen eigenen Betrag eingeben: +Next calculated rate:=Nächste kalkulierte Rate: +Pay Custom Amount=Eigenen Betrag zahlen + + +# Transaktionstypen +ATM Deposit=Einzahlung (ATM) +ATM Withdrawal=Auszahlung (ATM) +Credit Payment=Kreditzahlung +Rate Payment=Ratenzahlung +Teller Wipe=Kontoleerung (Schalter) +Teller Deposit=Einzahlung (Schalter) +Teller Withdrawal=Auszahlung (Schalter) +Teller Credit Payment=Kreditzahlung (Schalter) +Purchase=Kauf +Sale=Verkauf +Credit Purchase=Kauf (Kredit) +Admin Add=Admin: Einzahlung +Admin Subtract=Admin: Abhebung +Admin Set Balance=Admin: Stand gesetzt +Admin Set Credit=Admin: Kredit gesetzt +Admin Wipe=Admin: Konto geleert +By Admin: @1=Durch Admin: @1 +Teller: @1=Kassierer: @1 +Deposit by teller @1=Einzahlung durch Kassierer @1 +Withdrawal by teller @1=Auszahlung durch Kassierer @1 +Credit payment by teller @1=Kreditzahlung durch Kassierer @1 +Account wiped by teller @1=Konto geleert durch Kassierer @1 +Items from @1=Artikel von @1 +Items to @1=Artikel an @1 +Transfer Sent=Überweisung (Gesendet) +Transfer Sent (Credit)=Überweisung (Kredit) +Transfer Received=Überweisung (Empfangen) + +# Interest +Interest Paid=Zinsen (Guthaben) +Interest Charged=Zinsen (Kredit) + +# PIN Terminal +PIN Terminal=PIN-Terminal +Welcome! Please set your personal 4-digit PIN.=Willkommen! Bitte lege eine persönliche 4-stellige PIN fest. +New PIN:=Neue PIN: +Confirm=Bestätigen +[PIN Terminal] Your PIN must be 4 digits and not '0000'.=[PIN-Terminal] Deine PIN muss 4 Ziffern lang und darf nicht '0000' sein. +[PIN Terminal] Your PIN has been set! Your new bank card is in your inventory.=[PIN-Terminal] Deine PIN wurde gesetzt! Deine neue Bankkarte ist in deinem Inventar. +PIN & Card Service=PIN- & Karten-Service +What would you like to do?=Was möchtest du tun? +Change PIN=PIN ändern +Request New Card=Neue Karte anfordern +[PIN Terminal] You already have a bank card.=[PIN-Terminal] Du besitzt bereits eine Bankkarte. +[PIN Terminal] A new bank card has been added to your inventory.=[PIN-Terminal] Eine neue Bankkarte wurde deinem Inventar hinzugefügt. +Change Your PIN=Ändere deine PIN +Old PIN:=Alte PIN: +Confirm New PIN:=Neue PIN bestätigen: +[PIN Terminal] Your old PIN is incorrect.=[PIN-Terminal] Deine alte PIN ist falsch. +[PIN Terminal] The new PINs do not match.=[PIN-Terminal] Die neuen PINs stimmen nicht überein. +[PIN Terminal] Your PIN has been successfully changed.=[PIN-Terminal] Deine PIN wurde erfolgreich geändert. diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..54f6ebf --- /dev/null +++ b/mod.conf @@ -0,0 +1,7 @@ +name = bank_accounts +title = Bank Accounts (Redo & Extended) +description = A complete overhaul of the classic bank_accounts mod. Adds ATMs, a Teller Computer, PIN Terminals, Card Swipes, and Wire Transfer Machines. Features a full account system with balance and credit, a detailed transaction history (account statement), and an automatic daily interest system. +author = Tmanyo, Rage87 +version = 2037 +license = MIT +depends = currency diff --git a/models/ATM.blend b/models/ATM.blend new file mode 100644 index 0000000000000000000000000000000000000000..e9acfbe919787acb93ad58468016d0307eb9d56c GIT binary patch literal 541956 zcmeEv3t$z+x&P)NS)X9V7O9o^j#^O!G$Q03JSZRnDz()RAdqNCXc7>$HOEK2M_a`w z;*-=TYVGxbEm{rFw&$v?kJg&jcdyrSYpt}`f2Gxu|M%^Dzq31&-Q=7@NKRk}HnZRE z_xon%_sz`C%sx)p7Z4(`h$iQE0sM8(*~Yj%8)Z_AiQO%&lpt;e%<0 znUynU+GNpQx8>?4kNqgw#g<{UI%t<|Myls3hfN+dK6v<2Dbltqy2@~ zg0K$sMm-8`4BUDYUIzxQ?|Q4dkD!dMabwI0IBlfpji;o_%av*J1=);x6hYx=jTYi52yGI;xM7R+LU;EnE-W@u0 zsI%>{#~$zQq;+NG*s){Z#a3Ec`tIb(lbvnSq)G2qR#xs(TO<-mlz-f~aqkus6gV5# zgMRiuC2w`|9}2x0x3awpFT9X#c3yGC6;6En?YBGeC6`>{8=t+UADf_>#eUeIgs8?Lafb-Tj?{S>>#u?;)_V;Yhw$rr#r=C2m^W%>W z=yvn^q%Zd~$p0DJ{<*K`ZO(PqCE6J8`yIzIj^W4Kme1*2{nVsxH|Qo4bDPEn{rU6f zCyw#H-*FuC#u?=QjBWq$DUbQU9q;=c$1$(}8*g6RIq$JW-EOd(Obp+9`}Uo{{~6o< zF{bnSl=uCPMJeEQJ z&-m-VIsOa%&o1k=kg@IGY%`EU|M!~jVQ4n(VB`9*BSPT%&y6?U*vb82vRkJ5KiT}V z9+x>>|5NL~;33&KQ~jT8{!P7pUjOB`KHIbPN&Dyf02f?vfwNUrRdvpsIWy_4^@1}x zA8tJ@qc+Y{DrMj@qx|Qccit|y{=Yr`Ple}9)y*LPXKedF`Q(#3cl6d@^&^A)-!J3; zWZFMH7t^_;x6uFG{QLg;k82;t+!p-&u%ms?_WjcBi(}sQfByOB?{e4wWc&|5c)9Z8 z(%pyM{*1k4>SzCFZ2O0Qyj-R0b1x2d`!n{Ish|DdFV}ysKbVW|d~xo%=XSDAZ*ASB zmF&4GQ>JvLv%x->1swFV|1-Y*gR@MECr+H$na+kXWRU;+y!~^%udAy|)PLpzybP2$ z9p5tsq*Ylr!-u`z6|ED`Q$w2>y?LURJXZUX?@_*R=)A0YOQKLH3*-(En zsQ(Y!e;WP|um9X_q!beO|9R{ej{o%eUq6oj`n>(`4F1R5J=Hh^`+si4vppNvhaC}i zs`j6%-=Uv@{?DlPpU#@vj>K@k44-*p9>1lt!A1s+|G2Hs_H6yy{?i>-?I;}AE%>ZA z;|%hDpSFMQ2fMre?|JnEV-Mg=|edp2>28#dtwEbi37qtEt`oGWn|31C`?`;0}wt2LDGxnP| zW>Ehhwtu;{q|^WJ1pW`(e;WSBIFDn#*7LS(*&&JR{|(CyP8|2@qAv*B|G*yqp^x{D z^Sph5_c(Mp&Orb7S^MX)-Oh6ThflqJ9-#j3v+MuP)w^He{IBc#U;O-M zIR97Q1m$}LxF4U%&wp_n_g>%q_R;3Oad`b7*z-THFR|~f3*LDF&U@nw@_%^!PviRU z^(FQPsQ)v5{J)6&)6fSSt~cpE|IPP;G1l|m7e@W?#$o$UzW;|``YKM>|6c$0w4Xu# z&-nJ=SAIu2yO{qo>iXYPyV+UJhwb0L|KC~s+fz9*$p2ycPviSfJ^8n%^BLs-jJp2! z#M{ntK7;%pw*RpG&!$R%jqAgX2(3ZS|9Ic|+!gov``^6wzpJkQ?}|S6mbst(?|1#@ zV;p)jZe@Gi2XM^4dB^ePmtP*n!~?f|=0ooP@ji#Xif2<=J9=9=X3Us(d86OVes}WZ z$>HYVfW9UCE`9sy-JwH=zS{@B*wMcBv+wvn^nGx>=Q^-6`#SP#PMKv)OD>p@rtuBPij zSPynx4#MleuIu}--G{zM9SE-jyLMd&uLHZb|IrVG@vdDD!t21U?f>vPuxtB2?Egdm za~%k;1G{!T2(JUXw*SNHKP2w8r9{^%TQpR7T&&%wU%g0?0)Z*TeN8jh_Y zR(90Nwcb4J=vjPz?wC=9HS@>tt`m-HZfR_)UQlyfS$$2zyqc!trqngmwA3`W99KGX z3U4Fl@Cm4gamYZ(z)r-#Ia8>^rj8_b_1cHHzxYJ@m7a=t&XjZN8m3e?^rY9_`K#z8 z_hH@;xv|CRzk=c%QI1^s;?{-lHATpG&_EeDmCuaGYz z~bKXiCU9RJ>7j-Aa{N<62@@lSyq zk8N(flJQ&LSFxE+WS<&*6|B7rjM@3 zKfA8xqWp=A>+AhAdOqe?pSO-HaPn9Pr(7 z>KC0s`d`pK^AwkS_=4ylaL@y8h2UV%#h*l@5*G(O;A#a2d%(5k={V>CS135xb8%`9 z`Gg*Dw%}k7ILrDP)%C1I`Je|J^k5HiYo3cMpo8$=ziFTOTqXX5KJpuveBe0em+{aC zeyQML7x~^AfQLTt5y8VQ@*jkUKJdc?54*qznc*JlX;50uLTc z{-6&$&ciP7C0QPV|8|_ zA%PMj#5T}%aMG?D}C_m>MN9$S4y2Ye~T{rCy_WBmGT_m z9ARvn>>!R7TNZD89nHzfwf3_1urALV?raGY-R^)dKP7IP?2&9IW{u%~Y8i73et{q0 zm)NP|U-7e(;pmg)R)Dd9`Emc zyKsGCo)e?W4*3Pjn9A)BoNKT*pQlxJb~$$apy*o5;!TA;Uz^;{dljF&S~U8JU$w8f z=S&AP@uIroWv5LnI`r$$IOp%3`HkluJh-O#=m{Sb3Dk)Weywpm*(+u|V;(0xJ~4)D zT~Bz%u>1_!Wn0GxzNo6AboA24)-}KKdI{s7y!(HOMt*h5+LnjUTuXUayZGGJ;w{ho zyy%{>&u|`!Zd|?axoa-@p!g4w585dYPM+BA!H?FLQXWd@ZCP8?&~jFB$ukov{pqWl zPo3I+!JEIBaQc7!59K#D`sa%lZ+P;Rj?y>p*=@t0K3}=+?Gu~IzV_Mc>rZ|=r|f{- zHp)X7GJ%1=jl9OGFW$T)dyMPRw~9_GE`0XA_K#n@r9I~_e{Scx0b64pzIYt=5oZ}q z-8)8yj*8V7S3lNO;(l`#*~Ga1MN%=6=n4{@(W6IqDLa=*2jrLj>ZQp=xR$YP9^d%~ zU=jOk^~O<^4~xcwoSz)a9(D`u?N!G4|J6$`O|Yy>DuUA)LUV>Z9_05~$d<&2%L#Yf zen1iDn*;l=jbhCIFdyV|957GBJTNZv*%cCFUZ}LyU%vhvL{}MJ*~rU_(%eYZ2yb0m z_048yeG_qPsv4I@ruoe0yvAi8*K6Q#z4pbIJSe`9`JgkGV?&UA67U?t^)$Kppq0A^ zttbw6Hjj~RcD;O=YHW#X7^;erO|8t4;TQM;enAf5FGqgw6Y&BTI z*e@lNJ+!x9(|$5MbW1VWNUSr9PX+zz@>Xy3325aQ;$B)uZ zCMjG+dS)47SWljy)|IzPy!7Tqbw6dW%2(vpiyhfaYJ1n2kv`T_XGwm{bRe@|@=1Um za0P;cJ?Nu00tY?dww|QQ4ST?u>&(ytE-pCOb8%`9=|K;;6@r63;LLSq=mA$NIM@Tu zyUv_X2cZXC$B)!~7}x`@Ty6&-pU?x&eoWzD&&9dx+MFKrfLkT$!JdojaH<~CgC1~8 zPgH(@J>XjNbR6`6TO~Ny1J1I3;Or*S6FuM}BEueV<%4t_^nlwuR^=1v0{3{fj)NX> z!z4Y}b8$MK&;xFbqz8MzS=Ln=pU?wtg|uVX1Mcx`9S1$&;(~)c;K~P`?hJvzC-i`W z9_&GG&2w>l9|Qdh*5M0^6ra#XdotT2r^|Tg13ydfu#5H)goi%xF~P$w+6nT3d?9`4 z1HVS_unRo$Vd9|={AR(!F4|kn=m(KL^no8%toVan;I~SDVWtm#;3I;EU9?-2!^A@$ z_@#n}U9?~1!^A@$_*H_3U9{t%{6io34#C4N@W_XmKJ1P{B&KkRfVzvu&R-zeorJ_7nhrq$ zKJLJcE|7|2h zWIT>_hxiTpxE$%?`iJWnc!fQVz4Pdxb%(98?ts{yF89M`q_*w=9Ok!iKYX9AJM0y% zJJ1Lcet=(4Kj1G%_FZ?FU20j2O8wRy_!tM=SIew*2em4ta+rC4xt*6#w$R>sYuy3; z2l@;2AF&%%|ABr5;|^R0(4Tf0kJ0=Q>wIreJ<81;pVc9Y<=%D6*iEXRNW^C;IdV>F z{YOl2sHgt;_2tT=Sf{+lkh}NyDb9?_vYZ+cT}fDajs>x^&aT$U!?Bg@B- zjqy_G=OsQ`V)P%7aUOOg=KCKdSI}~z`y9*otoE#9Xfrf@MEHeI`PpYnUYIF+&t<|s z`(+5_813z4%9K`sfK1Y|?SKyM^Iv)~I*(O9PNN_7+{cmr5B*`}Cex!BT&S*tb6{A2i(JExDlCHz3N2dmkrxtA?RI644*R5AX|;hrg(+T4!08 z$#p4Gw&?kN*ZpJScM~%7y)k$~f5Mz@8A96i5gK5c>P5u6s*)Q)=CeZGFOZ&<6hlBe&<7uYfD&^yHx6wZOGxTrv z&8mOHxDVqzbKZ+_AF_e#8wW>! z_7+`^81htIjz8U@-tPu}rheXjM7QrGB!8Urc0cfDPM_aB@a7lS8(d#-y@|{92G=31 zYh!&A>%|yXBfTf+F%cezTt^4gdonlW+`yd<1@Cw|_JUl`B#y6_@q1jw4xpPqobM=^ z1rGgMY@-i8`fYvu9G$1j-K4{(Zj}B;tuHW^uQw9=UT<#78E)~`bMW%@ppUw;;*O`2 zv+850j}E~v@B{o3`MLO4{H(GwxZEn4xXI1h;PTE^B`>3cZM5kZ4^ z^Ug{44~?(sJsJ8V>kHN(viS9!W!7+?>xTS2o+zUR?P;QdmtJw}+dhe&4G= ziT1*>_q?1&Wcr0zTy5QwbDwoZ677ZieBRhE{_TaG<-R9_L^CypU*HG$1^I=)AZKcf z>r0SdZpvArdDoOPrCj!S<2@OXyL(UO{`woZPHW-7z4iBGPJ3hf-jn&=Z`6A-mBxEA zV|#c{=Kk3grHvOqwr=aI?t3zS-G6iY@vGhUWJW$$RW!WVeNX1-ipz_yovFVkv->mk zrId%#x$>UOG-(}yEv2P$syzj~Us~jA4jpaQVttalP)tg6pdQS%P zKgost=UfaL+!(V31|GsX>ekr)exI7%3`QW-^2ut%p#J=;v$Fql9yd@XF zm*0F)S#jrs$y-e>?cUacU*HG$CH}JV3;dQ#3P58a_wzKJ)K@!{NaTM2MGq5GcvYb$|sg*f0`~p9~ zFEMFv@K@&K*gq%SR(K2Y3$Jwz#CZq&0KcI0@E3jPalK_-LG7b$9c?A*{3Rsw@%&Pj zd7T99h2!5b6%=rsWt?yP(v{u)m_&L4hHH5;f!k_#elabXax!W3 zr4F|joA|Qzcy=tf9XKix&GXH`{4An_z@10rFhAaPa1+xTvgrfP zM;jT&cm?AZya$JI4aO~a?iTCX7{_??#`XAnln}3L?6ue9*(=y61@HJJc8$7!ia7Ec zb$yHf&TstTwXXKj9|MPWZ@=z?FS&rm92{`}H1ozU%-21pb126HcKjlKfL|hi{f>Ii zQvB?=!#aujU+?%OLh@HPsdHWb{!$KMJ)33jkH72NX{hmwP3P79(`*{Q#I4J+<5s<| zz8LpJY=5QHW6xn{mo0h6FG@DGGDl9d7x4r9g7)UyZZaqPDduDVuA54~2fv`eXg4%Q zSx;}hQa@&IQ0E}4_QKEFZl=xK9=zih#$f!SwHJP#s^q|ld%SVzcz&+xG-aIYc5W_N zMBk0e(U1@E7DvjlF*HyHCiq+8a#Sd#*qC z?GodDl*qUrHLi2-5;K1fKXG=KV|SG5_oE_NQ=D(0y?yI(#b;f1Z@c}#ks$UZEvq@U$Og`^?V=TUBaJ4n02Jb z`sa|X4+vjK7?$(M?sBpPd_&DACASs5vTjP}BPEPK;lDN%&z=}t`{}=qTuXUayYBv9 z7vFl!)y1ptKd_kcQ2fW+H$C@*lS@kM`VZR4MtgMslC>AE{o&e-M?rIfp(%Gjm>o}bqx!w1!;YH=_-di zZ*8LQO38cY!k#?v>Yktbmt^r|MTep(*J_? z`9z20hjx7faL@zJzD2$t(FL!6ryqL26$%dakf{0HCFlWHD>&G5acU3wgdT7!1P6P- zb@}d+=m8fO8TNoPzqj)qP@}Vpd_oVnf?MT#5P}D;HBZMu54c%^gFWEJ z4AQ?Z1U=wlf`dKaXoXFyFVF*Sjo@GpxG{rt9Q1(OEI8N$Zm%322R-1>PGHZ)sXg!s zJ>Z}RdyvP-+B4${=wL+JAHK`5RAlI*p4x_AfQLTttBiIHyjhQchd%Hff`?tCYt|>= zp%1)$o3u-@gLH%N&aV(uY3qwStG;cn^5!1HVG>u#0>bNd19dkUsQ* zj|(1lQT`x2^nu?hc-Te$gYeJ?zF>v4W7z4T{Llw}mf&F*`8V4e$`5_uV}gfW3h0-EZLCk_jK8wHy`n5GS4q1lt;9;UmN))(Kpaib+-Zi2l@;2 zAF&uVm-&2sM3+vSQ^`vUongT#^dCB6Ul z?>}Zq{}H)M?>~S;J+=Mt(JS=+BkHV=Q|@rzo^u-lg#a-9OssA{g zzDC1a&%w)=>YsFsvf@5xXj--JXx(A&Z|XToPD1|yKfo_Q!(Y@ztn+@y;e^qrt-s^d zD~VGM^gRZj06*Y9J1h#(#WdAM<R7me1|Qm#34ck;S(ESEVN>$I;{o7Q1;(K%|D4x_`98)oP z0x#exR-kwSf3fce@l@T=QdeDHSKZ7vh>{L2PwC-HDb-_3Q%+XP-*n+=9336%oKXz< zb=Tktynv_3k%}kq7r8Eor-hCD<0Vyd>K8X@x#(VSc}fpIqk7?@`kHz9Q=HWE%Th~S zeUTFJT0nen%~&8u)1Mxjcc~YJ(s8S@YB*t zRnOKQ0X)eqDNPwXffw);J5=!m{$e);^3>SeQnje5ac)g>3SE?kr?l|X2$erA)l{{j zTYvwz>c?>u^~rBd2t0uo@Dw>j`X|(@TY`9MZlSIMNhKY-Jf(-9QqxjBuezl==>&Zg z{}8|vKjUu(@C07KQ+$NW#m&U{D?R)fX{D-{zCd`oBXL;u zmj}>I+lpm?UYJr}Xe;X{G9xoA-tU)F=K1k{Q4gcmYq) z1Aq3069dNM^P6gFnp-ZePmL^>r}Xd>(@GVkQt{R=-2O?83)IMIPhHKCz!TO}UZ$gd z<8~A3H^wk^GFj&5qP^qp%`a|n=GRq6S=P}$1Tar+R3NNxVZFu+jZ%a%B@S;>)4{MWl;vd%SZrM}(;9M)Cr zKl|XLODdGlWW8(MBwg;op-0F7U9IOcHcspL68o-q9ZBDi1+=YacPEPKy8C*42J`Y?|<-0v=~wywy!&syXq(AC%WxXzV*ogiGd1S+(w$$9%vtVr16{RrIi4Z+i|q>Iy&aM9 z-p+Y7A9DTG!pMKkE71;+kg4zO96jis;%VpHn0RmJH}^kO{MfK%iT8GnY+d=>+?*+i z_jYn$|LWQkuJ}>ny`2LN*jV)VKYv{m{p%)rZ)e?8jgLP4{K&VToM0auEuya-FueDL>+XJ7Qz^EZ6ugy(O_ z-d6PEU;Mb}|EeahWe$f;8M*fT!jp@)ZrS`i%P0PI_u}8LIH367bHC#7e&nD?$xWAE zTC(K0*Vb7yCVKaddBy8y+*SNUd~z|_C_eR_yVm~b(Zfq-*Z%JWvN55oa%u7SIlGtK z^2Arxl8v>`=B_R|{{PJ`J#6$#Y@>wJ*cHS4`;P5WkGnf|$D%7re)?pzc+p>;D`DRM zPVenZqxW`>mG^eM-;w)&7p)$rbK2(n-j4Y#I@Li$i}$a}bypqCRlU*Pkb-67lm7 zLxzkQRL@2!IP<|%)qF7iPc;rr#DAA@=~fjx0MDOVnFrdhZgrj$<$A~Sj=11(y^ekA zgD*KtpZ`UFq063h{C2rK9Gv;uY{t@j5V7xka18xM4{yl@@b!YCNdqY>?tIX+YX8Ll zKD%b54+Z!Iet=&h{}6wRzxpss+m+OdQjbj|>b>;f`C#m)nduk!0e-Qiy}@6qoTJMv zt9&EM+}SyrzV|+K6U+C}#`6viXUf9UQ%X$CJ0Rn{oJPdg663j))zJ*Ol%6+|R0Lr24~ki08$qpA95)z`U7d_q=+}+_L^Pk+;8` zxn{y1Z|vv%UID!s%`mEJ(cPwJH||!FMEzwzE7=dKzif$h5KKApbmsLdEBHDr*Yp3O zjQd>1P@F_OB(c}`JM6!7Q#IcU=I`zd*}vKtA4iK<-jcT zReiM=UE;hKggExOj0Y@r+-r~bXURBk#cTR_4>+{{$iIEYd+Tzj{d2(c`{jnL&IbKO zd7Sayx-!Djcn`7fcyBLS`{ymWpxHMd%8EPQGp)u}XI}f~aX9<{zu2A1FYuRB%;=NU z9$wt&7Wwpq%=5;#Jz&|N)p6* z#|QHgNBN7LUTfy)XG?@q2Od`*4Zhi(4q){g>a7GxI%TdPU9r>c#af z=7|*Kt4P=TG$uo9<@a1V?oz*tW8bafrL)!h39&omdG@<~-Zvn;_qk8Dm*qSes;5$5 z9l@tmFn%u%>Em~`R!DxJZpQo`M?M{d9&mBN!JdoLe=iPtz-<*A>;Y%~UL5p*E4WjB zhsnq;9$?i z>A(91J>Z5(J%T+KH`jS88|gt0xQO6j54hGm9S1$&mI@B`fU~T*&Mwk}9&oD!2YbLp z2kAKI0oNfo*aME<@6gHzJ>Z}Rdyu1pTpa&i9NHg#@2F7PBlJ;EQIBz)%gK1?179n6 z*af~o{A=Q&5Bv(j!!FV_>l4z4KJanD!!FVd!b2bUt%8SLwC`9z{-FkssSj|d)i!G91Q`oJ$0JnSOhL3ro`ze@11i~3`>d-xCfz;_59cESJB zfbv5h_=sFbVHfEJ;h_&auEVffAby7(lYi&~kMpn#|NEuiM#{L}7ySB z>JK3bON@1?Df-${!d{O7BiS}FZ(HSUPy`oA9;Ikmv~oq`n-v)`gL+yD;m z75U<$zpdbWx$j4A$M2;@A0}J;eME`7ydP=x`tPM3L8B|YBpuBgu8rmJdujGHtuf{i zu_|x+eOfl-%CUL3$o+)ZEUYD{2l-1Uz~Off5*;KvRBu#&g;E)_}(X~9U|_fb{O=#JlyWM zCc(#MJG7t6y!ZQ}+&_vR;1|1E`33$`{#iudT|8)$>noOzaO8LC;1)S?2Rb2F(b@Z? z`}6$nrt$rgE!Lgcycvc9M7Cc`W$|n0$_l>^tHKsbZ-=qx{rwUdf11<3#fwyICLO=y zBd0z`Zcwp#-joYJ{Hvpn*gOvz?FD{-Un29BU*IpLUsX=uw)6Of<<%ScoYyZ4P$`j! z#P3KPa9;U^zRlsjKfZ-{e%ImJFy$-4?|$~#l0|C*hX|5oZ#E`7aonZ0S zbKthh;}9l4b_zkxRX z&dn>t4F~uE-@#$odtPbbuNqJAZy;pTcp{g+gENRMzM6BxptWKTntn0-!sn2_SC1{3 zvez$>pZT{JFQzZ|xxFl+1TlW-pnY$CG0wns2L7Y&#tHV-uQ=ar7txCUN3qlHAqT~) z)_)-59{QLP1rXj) zU99b5t=GOw?)BoHudFqjYwlRXhtdI{PF9{RsQfTyjDX-?)_u_9w`U)TR7h%EU)!S z++}XI7p?Vn(l^w2>p6h0NyHWNWd^o#6!{I~Xw#}Kzx`|OeSbIo!<|H4)NiR*JL_*h zGf(`zPH!mm3bGHLzzcYa+^Kj1e>>}MKQm9`Xj9*|R-~LP+;}7K1YW>X>@LL<_}f{3 z`gC#hFE>u*1UC*}n_onn$iGI#u*1UC-1nRv>Tql3wVm(sdxf^_LawJzoEkQkbgsEZev4B&C-^tg*DB!KIQ`t zZ7)91a0(~Z$YPf}zvEfGWsUT)k!W|q3wVm%uXqA~@vHoKYG`a)SY6-jW4Zf7;3-}F z)HKue=4!t1P2<9vmZppID^gB6k*f{D6AqvsABzK?7(9U&@MQl?@dWN3Luo@ezQ22bDxJjK>XyOVkq zdnuTwMNKtJ>S`|Xn(cAl%Tqe|X=$WsW~!a~apoyzoH*2wSp-ku1w2K5s(1o_@lhve z^A>M8=he-hzqmP-QKn^WFTNs;G|l2K5T4BS0e2qbBES=P0Z;Z%q}@rqij5BDsd-V& z+{N|PO|I3R_q;r%gP)N`nr5!Pp#F*L(+uOp;fBm2cmglrDZX0q1pXppyWy#}dR|?_ z0w3$ahcuqjz|%N0NbD9@7 z&8J0*{26nrTX;Z{V#~Lze}19*CzB`oDYY&EJb@SR6njeAoz$yHc{e<9!xwWF^0?{cmglrDfYbL3H-$;2J=K~Bl8+l8)jpQLyKf3dT5p6I2T%JP}s*&RK{TQj%CCkfv}+l%)#n&QE(_YstVulU#jPv8YS z*{2Ins8_Rsc;XJVc|I-c`&bV?iIcR*2m2O*f3qqk-!sp0Z)<1iYM@A zpBu!}yqfx!>Z(*r>++NyzJgQD-#)em3s0a0{gd+?F%C)$p1=!uicL{Gfxq}SgLq0X zR8`+N_rheadM;1t;S&tyPfj6Kz3`vOx-X7`r{Or@iNOZ*rkeWd z)W-!bPwC;OrVIm_s5Ide2Jb@SR6d9v<0)KXO5Kr^!nithqn|+}t3Ey3pr}Xd@X{D-X zWgX4$`1yi5{jl{lLuL^?ffw);8>@H%fAKkiJS|>SUq@3c8j}0i4?5)GDJ^_OS|~j? zR|!vMeL6^2b0qKtUcgiQM8y;Mi_Ht-Dbc@F(XH&J>LfdIm#6gbiT)|SGKExi0_ue) z97R7q0tY-Xcmglr$u5-sN$OQ(eh^O!8@Vb~Evjy*O_C!{-sLGh{1hkE{AsDB>M1zw z&J5rwUsrP^@C07KQ~aqP8=k;Rf~S$ccfKhA z{^GUz{TAleJ8P-0UYOE~=Jw)!ijwjnp11J&xY0sP~b;U+e;Z zp3=Fe#OZ^lbn(4$Uuu}}WZswJ?|Ya5Jb@SR6e$*-guh6=KToOFBcuu~r}Jbz^9h5O{S6uU z<@d_K3wVk=q55&~7hmGfleZVHN}+O~KBbHAjefi`VBPo2-S7ln5}9Zt&-+ zd2vJYg{cn4DIee|UHps-FU~(AzqDmxWAh?o3yv#;aw$;B4c34^L>nW zb4ceY4Sda_mfHNr`Sj7Nn)-R&B-G8R$-x1x zCQm8jQw8{xy3R=OObymmhIGRdcmYp#MDYav?4!qM&(ocA#`MV*-ih!$Ir(J0MYj$L;AuBaO9|i!ynrWry5b4^#ZL&} zsjgvOT@yWkkqSwabb_Ze@slLkv`L~o{Fhws_&t1YeNt}&DSq%5Jb@SR6qzCIPU=-` zOaM;{XeGZU#fLK~@dQt4;!jO4SrprePY|BWbvpI-hNhb6pTG-v!gr{^U*yC9o)*?M zx9BF5k`g?niJy{QvRdATd&W=Rai*aMi|whttCuLZ`0uPq zTrKOVx8awJX-rYY?vs-#MzZWi-@A0b!I`3o9@SAklqXTXd{sV_+y18buX09&OSnWm zmXlVSL#9wJ#5mp?acrILznGK<%;nor?JpwV)kOV7c~CxN66Nl;d`>BWNIr)D z5GRl9Su^G--z-wEmG5)%51BBh1ux;Z2$ZeGbuweGnv%lXu5Lc?Faq<*>A^nIOMDkp z^5LeJ-ko4GJ=jNj$QknCrgu(SGj4Bs&i6^>yTC6~Ldn!oj8TxUffDD^=!)~6O{H{y z$&LKGMm@*cNe}0@`4ooh0UyWrnen~mxO}e}-*Gm7+YrC;hu6B!uOhA zF=TZ%=r79SJZC-oCc@J9ni2bcuQ@tsxW!v?L9=f_*vc^;kD6BPJ6fIJEVQS{cY!4~ z%%m)CUZcJTT<}h(_8Tfa8RGgBC3nLQ@C$J87yVq;&HBTF4Fxw}myn_F zjlmP1Lt>eqwTU=N{M$M7TS?!!iNr|RuU>kIru+G&>YT+tQ-SMrD}A4*Dmo&%3j?JXZU;|hKTlv_V!UQhMP`#Tc(RrDFp=VK44^?1nk z>@A6Q?BFAYJXM$DPj@87HIDvF{k;8%*FLA>1}?9?`+*K0{A{K-zX#DO4WCCCK|8w4 z+HM%(u;G<+jPvgAD6-ZFYd7QkAVbbGWZRH;H{?AGc~3*$%aHdr<)_?1I1ik&H+dt5dzh=k>8S)52&Nt+P4fzm5 zKGcv8Gvvb!nSZ(44I`{04Y|OO`PX0EFv2?8ka@P@h7mN%)n&d~yI}-fC3N{XLq1-U z!}bxj552x*R{JpPXDI8}vrOkByxxY_TfKkTwXe4$tWnzacZ8+?7WW8iv~hlnA&)iW z6Ak$!LoPJrlMQ*CA)jK%;|+O&Ar~2Pu_2cja;YJg8FINHR~T}oCih1F=bdx*hCOe6 z?`wNue;f9<-ugGf3j14~kFdYh`ADt54f~g{f6?nt*uUs}g#C-oN7%pUe1z+>Iv?Ts ztj>qNJ{!&#dw0GVj$gv@i{9SC@r%w!IDXOj2*)ovAK~~#=OY}y=zN6Z7oCrA{G#&_ zKEI;#5k9}7^O4%~E8+Yo>|gZy6ZS7UA7THZ^AYwhIv;&|zdl@l3D;lr`WLRh=zN6h zFFGIL`iss-xc;K^5w5@Je1z*SIv?TuNarJ*AL)FA^CO*)aDJro5zdcvKEn4Cbw0xP z6Lmg%_x;3heK#Dx==Ccczvz5~;}@NeaQve45sqJUKEm;f&PO1e1!LpbUwoM7oCrA{YB>^ zTz}E|2-jb9KEm}EosV$+Mdu@2f6@5}*I#r#!u1!OkMR4sIv?Tpb9FxY_WQZv{poOi zq}RW2ex&me&X06H!ugTTM>s#y`3UDnIv?TuNarJ*AL)FA^CO*)aDJro5zdcvKEnBt z&c`Xn^DUYEz4P$-m+<))z5a&Jzvz5~&%fw=gwMa|e1y-x=zN6Fzvz5~&%fw=gzLLH zAL070&PTYutMd`A@9KPn>$^H1;rg!5N4UPL^AWD^>U@OjyE-4?`mWALxW23N5w7p* ze1z+}Iv?Th)9ZYMzfZ68ky*b_A3k3fuD|H@b7xz539KSLgB$om`emkqhU{T<$K(fu9XZ_)Ya?d$zSqyC?2$Pq)H zWXPu(^67>=*^s9g@>D}U!;q&L@|lJ_-H>M(a@c?B^(X8dT>qe3&60ZpcR% z@{xu-(C15G`_b!5*nV_A!uF%{G1_SVV+?t$A)jc-CmC{~A)jo>;|zJAt!M7+G-!SBJ4f&gf{4GO1&ydeIt^ASGppz{&V4|G2IdwnvTAL#zr(f21a zef|>WPp=QDUhhNxLjJ5o7-8+|&p%{(dobU37-;$3)0mHB*7HZ)5WM{XWV>w3wN0(6 zneY=t_NG^_@yfCPSr_xl_6z!X`xQgJz>wD{xuSGtX&WUIyZhocwwFzr@#ZIfmpUG~ ztI;`MaHopbNW4^ztDLI8t%EFU9_=2OOSZD2gPzG@i?)@=e=E*%>_iT@M2llXL@xW& z)hL&;rv64I7d*tr*PNze&Uci|0>?>kDv>WKJ6^06T~eXsS4t%|WKFw^z~$j^0RNeN z6Jg_}iP(x3Th2z@Svfhm)?T@LSkXblos9uK2k`Y>A62$=9F;6v&avzb@w;0cUhJz| zo%(>-tCP-t{E6cIDo)l0`~p9~FZNL77x+ur8&PgWH*9omle})!CYGN|!}7?@N}IJBTd)GMhJDF-T(jXH%u(dTa)^a=f)0 zUAIj}QcTax5A$@X@Pu=@&Xvug-k@tp@Fcu|r^r2u zC-4`q?w+SayQ^AQ(_Gs%9rK9EQ>yshXm>5r?vkmP;0e5dC-jrH@E4ogJx|O|O$u$n zh512IHOh{xY7` z#-oGFE$hRL$p7qlgUi2i(7BH69q+s$3in8i@y>N3<2>w0tj0Uk33B5Cxc-f zv=gLjwiDQifB!OP{0!Nx=k?XiEme(+YMQF)0)^8(#@mZ``rZ2KmKrO+w7%Z58s_Cs zXRmSbgz@g>V?B&k*JRz@J z;K=uJdXmaLIcn!#kx_pkuU=`Bz6` z9e^>BSWx{X>`3J=@E3bH zXuQ6lsiwNQrfN}5!`wP*a7hN2r}XfrI;rMQb5hNpTzzp(Q_3TV*XVl4Je^G&Umq>% zpE(3w51sj+@RHzZl;R2e*^dSBw4|=)qS5oJ7Bz97*iu)MTy|Za(!^7$PNBBr&of^r zp0W}ZNb#g~0Ae5YDJHytr}znqC)BI>k9**0ZVDYXrQL<66!D`g@>97)__A3lJk3s= zRXm~3OdO^i@C07KQ)I00B>cr5?}4X=>V@vS+?#^`eixon#7}CeNp|VNKLd1h6U}S5 z-5r+DI3lrU?tmxo0-jgs~pgw_@1W)6o-ATQQ{j>+37B;rjH8${i-rNh5;HwKyDdML%$>r1VAgSc^LW}fW z;fY1Q-l0D6eFZZlcoJT~lU*e3PU=;xJ&30{l+y)Gjf)%RRn;x5UXWxb$XX0^N z_A6PV=^W|`%ifi^_#JBA-P`4hzxRRSab$AyZoBXWN1y!?qw+w0filL`{`lQ);q?hE z_#JEfQqIprDN3BVQ=a%~aIn{K?kWJ%-mC1akyko2R) zr7ON%eCO&bo}W1G{c(JL&()P{pZ~`R#h*Mp*O9;WW`6OE(hG|>{b}!K`TPs7-&%70 zkT*+~*Zhsncjc0Gc7^ca*%60NZ&{N)#=QMs?pWR&pRo=5;HE^quxG!03fEhzch6J3 z8-Lfi|FNE0PuAt0#Qyzn%lh*B-zz%cp1s@WKJr2PJ;%&)Z2jt`m!zJncHn_%yXZI3 zPom$nx2b*;>y{cQ1BI28C+;_=QlII!UU^&g%UNSc$L%*??vs9V^JK+iMB<*PvyV6W zO_9-WPJe1iqJF^ELH9o1`nMO^=sUa+pmV8SNhpCf!b z`ps1Hf5d~U$Di=bGerx(K4=Z6f8uYh>QdH6t~}X$EXs*@cK&lC=f_OHYZ+25kH*LL zmWT7WD~5@+i@Nli$sX(KL(9rJ^~OXUh#x-X6mPv%{pN03zxny+J@uPhFQU%1-_Jkj zH_=a`-;BufcIZ$2u$gr1MCvnNqy?nQC{upp&E+({982fWZ?fDM%dDFpy7e&H_MpvahumM%_AqUHtJ4|p?&C>c@|S31 zBySfV+gl#agbq&sw$) zDgMKPmy6z5cM{h@tG?popG^4s`Nd85f9{J=BbPh#*1PQuMX$B| zqUbkAJ?G48-}&sbr++Zxtm4WyqR#oxE9bOd|N84iC2xM;={G;R|L)@Nw9TTlu65GC z_TyXHM{VdR+SXa?q+h*!$;RnTPn9okU+j!G_o4LnytMkcdP(1G58KPf_Lhe^+ZDs> z=RW4tFK^kCJ;pvf@{k$D|F`TP?W6WTp#72kuWa9M^sA2l+1{3qZ$5?m-oD?Z)#It& z6{&vHvb^*3&QAY+lWm{AHmi90Wj7T4;@IqjO>aJVpZm>KH1fiG9xu`{5_=4+GkWxB zAG_R7dqaNduU?v5ge6DD@pEtf0a(QTTD@^p{bvofZhDRVu}r-MlU3)*KNcSwF{*EawMJ>cwWm0#F%!6)VNK5)wSt2^7pL}+9`t})Avo9r&a%Fi%kQHB2R-28f`dKaTJv-q^nlwcIM@Tu zvhHWP6X`(@xPm!~PuK&lV33Z39&ob+2YW6~?V)_o11=^w*aNOLPfrhez^xG+>;V_q zO~*kGxXprtJr}3*2|eJ@PGAqX$}BxS=m7^k*n?b|<)&9a2P4w{XgSwu4@*UcKI*A0 ze#LR-mGRIAewER#fj8?B@X!aoL-4SRbj|t%JoJIL=SjO1J4iPO4}IVZ1rNKx#{a54*sb^%MDrKJY6954(kuZh_PvlYi&~9~V6ABHbW7^nu?hc-Te%hH{wcLm&8p z8fnL32l$}$p%45l!NV^6X0|u*2YujUf`?u37lemC@M{DQyWlSf4}IV_3m$f3;y1JX zBLC0_e%O4)AMB$1L3ro`9}zt4BHze|=|AWLzf|zB3%_p;sDIE0ewE;17wHD!p$~kA z;9<8`>i;mKUjl#72Oi@H*adGvc<2KUeqa~*_QSW4azw@}c;DJysgGNbfAoX4lm~uA zdK|aXu=gMuJ@7~%FE5%m-06||J{m^HmbLj?>OE7$_E)979jIcjJ->bCElO8n;IIx7 z_rsSwSfOm-ed{fT?3aRjjLXBpdEeS%EWK}?h@&(Q;7xnqn##=OPA+))G7-v(=Y8v> zt(unlMuuPD2lxf4!(WcPWnm?8w+`p5_dXWCSS5|bc~p3J23(}X$2j2qjRxbqI*Y%` zFI?kj0+T~AzXzX}O;+4m2;JbgFjv)MQ^Wlgl~k;mR{Bn6zm!mNXm7u!eel{{E`;Jh z6}H<(XVG7v|ATV z@O3Sv!F-uPS#fJ?a#l?%eJ7*;fFIx&Hu0DH^pY!f<934YHJp=mZPrBE5;}o9@Cz#-eXlZG>Q45a%Y=RQ zi}SvYw6~WjQ(6H6GD+R%fDZbvW4T4?Jl3+>TrshS{t*2i`omb8tOrTIi1`G@rRW#Y zPbLh~&XLq7a^Uv8@4mc}pqTgehlS^<@f2eF5Y-RH4o|H=1P<*keyAUQrqTcXyh7y= z<0~Zv{Y814{_wp`gr)uvv2TA^Kwp{RExDlCHz3N2JDy73s$r;)MD&O71N;KN!e1&o z-y**(+Tdo5<)1tKA+LA8B`44yy(u#KL&!Mq+Hv+&e@FuYw?BN#x;Be9Lo+~R`|Lxm z$7WDgauZ9<$y+ro^^FX_zz^^XQis1BdEGLqi(>==u_&jlKtz zxK5l%G6(qObdi-`)VS8N{xwl;7Wrje@gCGiuwRDIkZF)LdADn`cvE(|`^$BL+e?sN zOe?0`o$dZO$9{=W!srJ-r2QmlNO0XX&z;&382vl?bM)_#AFBQx{eEnY>NhcO$2=M9 z7)WOl`Ig7K4^Srgxy#*mKPh`D8>Qgw-|bfqRNvK-IC7-2A3xf!e};88Mtubi_0>Mg z2Vat<_vh>O)@9eM@7{?rC35Fa>7uC?66-}QMu6{ zzEAl|rbhX_^JErjgdEsQVz!%0TQc?q5=J2d!T@TKP6*fEHadjy0>%$`P5|QybG;tp z2#hOWmDe;*rG6LVhpepZT;K7-Pt|qamN@oxB}bn2x&FhrCq{n=9Qwn^NFRLk+tTmJ ze6S>{%O1OayII`mC^+K>2TS7z#J=N)?A+lNZ#@SuUw-2UWyKvoBxkkfba#{n`~p9~ zFYzaoU*Ip5K93hBZgTT7xV*Df$rwNIJmeS}18~520rL=+z2_Yz_m3JskSy~<`np1! z_4S-()^M@ss&?IDzwmYv_3eJ|A7xn|(pmn#DMbSyz%TFv{1SUg+MU*JhS0d-*Bel* zKh1Y#uV3)tnIOO5JnTqp`i16)ZPrq2nKj=~^b_G19zS55;?>I{OZ@E8A&G-5XKsLB z;0O2x{UH3MN-&1}ve46B=zC)&hdJ_nq=4^>-9UAg!@Vj>%q1b?yqrd){6f6C>nW?P z8?*1D4JyGg_xZd9jq5Pp)_)x%*j|61fnVSU_yzfbzaVF7%=)<#bCK~}`>@ZxKEcfE3m4whj?KD~9`fr3(j-{e&BtvPZk$;boXz{B} z&zE`*IJ=!MRCPTj?@{WyetFk5LaA>U*m(1KC1y&=9#eH#_vNi)UryA4Q-@A4+Cv+i zqfXls_&v&R6`fRE`0RV_AHR4@d(L0}EW=W^i_HTtcDa4>bL|+{?`qGr^U%_HuHDXz z=h_YTBt-MMcFs2k_Fo&tnEzou$mcjg&pz*C~ z#gv0=_SbRt%QPwv+S@CX5fXb0MBGjh?BfpCzH8l^h4S*qJkvc;3+Ww3C;9w7vJH`Z zu-|BK{3DtW&O zwh+&lzWrZJyh_r7O^yrYeW}_D)OBZt#F0iN$L0O0$V2+`$gtt%T^*yF*+~TUe?I9U zeY|f{EBOgB0UY#zTOl~ubMgB7P|yP|j`ADnn(t9T54f$O4|_-t&rTwr&;zcZR(Lhi zxqc4a# zyGRduzzwTYyucoCt$8{QdcZ{l2YbNL$j#}xkskDbTPir%1Fkhs$3YLcRf2;(;O6D% zIOqY_AvoA`ak~GY2b?YK5%z$ytjB4n>b`deJ>Uuj2YbM^=IJ=-0f&A7_JFGxr27GS zz(Ei8AXf}>)8qHN(7)h4iMZqw`e@f?yJ9~w9{Rv<6+G+$Z?+TQp$~k)h0-2jN7`k9 z)MMlec<2K^OYpFZbc68F2Rm|ze@11i*$qV&&z!wT0cEO+7U!eTZ2fkMDunYcz@X!Z-h2UWq`3}NE zANaW7VHfqMBY;2X1HV=9uscj}L3ro`U(g`!U+jSYF8!bMKhOt$mf&F*^*#s>ec)q) zhh5}52oHVW*9abV!C#@#ufqS(2Y$2QVHf!i!b2bUVKPpHUF5$uAbscqk8vjKqTE4v z=mU@b0d|pZKYSZ0V?2v>p4ff*xEAdP*O3(g*8@(M$9i4gv$M7L>|*jE%CJ4Y`J;4_rzGv4RmA!fnet{q07bF6IIr6$sD%5dWH{;;EXZKzS&3;S6 z_v{=-dhHMUg^0D#-hNH{JiqQKXb&0tD6`!*I*$GV{YT_}dG1)|$%WEipdUtmigA_K zH0FwD(80ljqcqb|In|y!Zj^NaiQ{WkzY$xXTK@qY>Zvb2daKk^yhoCG@98ps&N{T0 zNZKE$@9Dx1@C%9sf6*&&>*(v20~xd?sIKo^F&8Cxj$^5*ZR30o58eX%BFsQ%iPZ2qfFS+ z-hNB_$@CwC`#a-lrr#>%L;r^U4E>w^fa>4S@1b8a$9Wicd9zVYYfNX-f&ZlY4MT@k z460(I6ukXg>}BcCB#vxUa{O1R^>4tT9oawk!@nc#2KT|@Mt|pIFYphShlA>Wdio9l zzwcf_@67R*TmWAe_^2x@?tQT2t@;@2gF{@Oc-#sc}%B?}bLzd?SwFYp8W5{oOpz+Wnd?3aAqFXAV!U+~-`{9yV8=Z#YP`emu}Y^0$XAaZ&a z()LH6^ZbOR_qj+V`zU6}A@~J;fL|gnD8Im8D!c5Lf9ZZH*>@A4^ZKPjYGROID&)LD zfv;aGvy-dY_tWDw+>fze{M!q+5BGOhle22%un$G}1%7~E?3a{Z;4hUWe!jcG@q?1d zPwVPDvYv52zwkJ1O^&XoBy~UECPCfL&vu^gekP~QddOE_x6wu-Z$Wct<;0O2x;|BOkW%Cm5$JWzU>My5Km?$aJM&oDteV$ez>#&nz+(!Dmb?+CRohEs) zBF+8`@C*C^zaUTWmy)C87Y-Cht#wwkq{NCIveqhbzfG&o`~S_QzJ`O}71#g0z1-a@ zvw2gv?*6vX$@|EDkY7wIrre$F{y4{eSwU3@BD7x)2w0SoXKa}UCwqkLS=TQe!j~#+dij6u$0JJF#t-+opiBNwdHnD$zvc1OZU5Z(__k9wprmtJ z|5^T%&Qr@EhjIThaPXjqy7)2KV}A8e)h|`1v-bR8oLM^g#9-nuzo+IOP{;l1xr^ZI zne(2SjO$;dQ_1xBtmFUtE3R$qnZLh+TK6Mj*`pFdvLPsP4~Uo;XbAgInb}1k4LDPxPkC*B;CVhYp>W<2xVREaOm# z<8R7*;X@UB?fLCv90eS%*Ri*K@X;5_l?}}QzLC;=5aUi~KIqIPX+DV9b1hKssquVp zUe0i5^UHbHW8lkgKFF51hGA(*$z5$^$`SYlet=&h?<&8*Urv7cyJyzS#I=c@R!PX- z`we3P3Wx7y1f1u7wZ!w?GiP0UEZxaa&npBNH4X=jqtv{E7YdWsY zulxdkIazc3;=OOmeo?a5F9G-865p2zIPdEh{%%Ps>wMk&g>R@2EWf}H@JsxU$}jMj z>z89Uy48pMqGYdMe&i}>duT5K=Y9S182RNf%}Vz|_kQ7pwSnaq_yK;2eW3gTeO5PHNdmn`bDYjx7^ZyOzCp9J|uS)v6N3CUXqqHkmP1%7~EkPG+= zvKvP`X&%!`o5b#!puLgeC%=BlJNB0EYSM2Vj?8|{*@7%4f84!GG;sPczCUNnID6pU zpX>h0q3+LRTRY4BIn2K>AH#dnn5W@6NzBV|Uk>lNcxyDT(>_6M=2Yr$h7OJ9-6q#y z?f%?9(dcbk~67o?x@mUqBD z4=#RyUm_nXzrbIrjP5w!m0#Py``+&r3RfN#%J-W~+O@xbv}r z^1LMc0KdeyD8Im8s)lfT@jfrf@<3`Y?tE;Zv={gReu@2E`33$;_$5Q1msI)dslD)p zXW)!4qm)(n0e*?dxB>oBny9b#IkNHvZ7=7n%!e4 z;qIM+-*w!7K2|cQ&f;zRgE=4T9jn`)uOJKT7iT^uvB*ca(tXzs?_^yw-T1$M@NkN$m;z9>XhmJ*eUc4N8Wl4 z;A=T?<@er)vf|do&mCDzlHK4Y>)9;TNvQxBBR_B`?~Pz2`DvpZ&tWgNgR`GG$8W>o$8-p9geE z^>;86-x-we3MRfY_-*-~fP8<@BxT0*8FQQJ7PZthEU*@gJpTAmra}_(RitD3WT|{7 zrr=)HFV2!U@}SHMR>^l19#yfK%=Ug~5b5K4Wve7VW;&3$p5>DOJ>WV72Yb-RuT%pE zJ>Vj3s+_O~ocWzW=mED>aIoj%)E?4<9&oD!2YbNLuTbXjK5) z_7A0ef(Nc*&|BPfCeni*aD{?{Jr}3y5b_B<;A#a2d%)4y*r|HJK@YeUf`dKaDh5TJ zN3MW_9&mBN!5(m5Wb5fc54f#@gFWCX1`X4AfgW&ZC$I-xYu+%;f6xOCdawuii)`0_ z1#}SY58qLWNqdAo>Zw`pm>hdA=N zs&DqcRg83lV)h$f>43w0$QQp8e1{I>S9KpTh?V|74!^(;@C$MVe>w7d_zvBsG9`ap zq4cgO^L~e}L>;vF7zbY0<rbYSe^ryegyrF*^lG8 zfCR8U!17n958-t#H8Rz|(`5fxt#cucZ&Uq7%(}F#sTJ0OW7JdNP*45wy|~U5U0Lp| zb0O~X9Qa;ot#fUo3eJ3)VZg3)i67w?lnee+@`J>syUx|n@?iPYxuQR@5u&%LMKt5>hOtGd&nA@3!p?{@BX?!D*!?|Dnr^?2uTQ2G8+ z{NcISJcHh?bWc*U84j*mx zl-T`C%nQ4}x`F!e7`)9wn*8$0>&Ac$&XnT57t>g&lh->_9J){GIOw>H?_|f_co_LK+c*;UFv)i$0c~ZP`SMfzms71BOMp*udW*n&sJCWmwMxJ z%)F&lqw5dPmVQOn_`Z{1!(T@OIkSSklkoi2-{73Cx=x%^+JbX7$Xvg$-${u7;i)By z@A>A#_uqVy?{7I0>5@NeS@N0U z$!&*x^Jvsx`22ILFMRmc)Bj)W&#&8~%_)r?_Wl079>4elA6)*{T|f2M*k6x%bl%~6 z#cw|KgO7dlsXLZ`?8Wdq36$k*xOVyWKJET?G#bZwoOVi1<&wlVI`v^uLopyO{TCS?d2z0{5%nOY^E5 z%(X3Ise?#_ioxGWcwu?{dS>5u67>A1=fQ}5u0YR;YM=Mp`PFXb?JIEsuL~fc*S${f z6jz@IJNB^W1M7~z+JwhmYg|)8{l9wd(0saI2j{=hj)gu4HjVF?uVY@E2h|Nc4>tcD zbN19cXI9&^7`EJ#h62JJC9OaXaU!v3Dbk@ z>+zj?=PU*V6c!N0dCW6C=du4{N!~br*qb&R{9G@54q=16@AoVCt2$sCsd16lK3etr zx6D5uJl=TaW!e}5x~8A4Q?{+5;_z$|biFnx5^>sgb(btz(o%jvt0-nnS(sa&tT7C~PAOYec`!K|@T z{iSTbFy~VV>s`k|$3N z|3W$HJ*HiE{p;Modrbefk6@OFb;sUd_L<0D&FwduPxV^In*#E;&#_ol?{|g88>DL0;@P>IUvNf1SIxLu%|&c?I2LGNripm>Ms&vAVZ4m+m(@4mvJ6t~y>) zFTe5CzQ^Nk8+gyjguUGK%jC8?KX1+l2SqYx2#arE{-zs;#QNLVdw{wpsJG z&wSVv8qwOmLSKTQj*E_ij*B)$$4kObKV;U&);GqV|LB|Ik+=86@A&?^mjBa7o&+A4 z{L=LjG%f+}V&WNHQXKipUi+mDOmvKjqRJ@^Y$-N=mEwSgwS z+48*F+Td93d{6oOeZ*fO@=u_Rpz}Z)CLhD$6-vNJ;MIYGsJx41-@U55iHD;OmhkRo-o^6Q z;%VT#<0O&mxCPN#zrM5b1KS=?jw-L_Q$EcXvF+FL+)R8D+Vjql<a2P(FcHaDFw`t18@cK#^8$~9u!q4Anu`8EHT&9CKZet*9; zzw>`)z(LSL^lnU-K)!=6}}a*K)Pqdij-K^Y8gDX5DDHnt!}b|CL|!ci8+|uFhv2 zAHV#RU-NIU`L$flukG;XSANaE+2+@BwcYjVSANa^1DjvVRk>+7{`!?)^GB@S(Q=Ql za;sOr@@sxAU(40}+730+D6~K*xPE` za(S*3Ire0EHhRI?g(`P^Z*%?{+b7^0#`gW-`OElB_2#SpU0k-i1P!YB6qg3(fBHLd zw##w!95<8SY~!=jd_$t~w(g=3anNzmR_S<2 z__=|jaDRKNra4dRyBAKo_uUKaZ@qUfG`&)ec!KT?m3EnncP|<|E=Vay*m+!CHt~bj z>XxQ4>HPMv`g3Bx8V1-7s0@*-d%WQR{f#+LiI<);w058e*LR@(67%}?zipU z%HL$$d1tdjayi|4K0IO5uB{h|4E zo{nD_kiYaUpZ+NN!YYkmSNmh^Kn3Kb9mu+YcAzKmoH41ftEzlo7E_9=Km4VR-8cK@ zX$cck$3e$s>>@KRI$oxmXX4q(7aw!GjPSbB;|%i|m7myzx$}+Z$2P3@9W<=zHd!69 z1HB&$zhVvg@ESEW#Vj%O4Uh_~wz_7}>Mcz@da#1;T{G*YR%CF<2 z@2k4^Ug_u1aI?)5{^{n&srr;uzL;v}cMSXu{XyBtX%BxwK)5oWtXx!1k$3%%;5(gH zkzX7dJfDWssgXo3pUt7w=~TmGT9MNf^T*SLTqZdh(4)qqa&|tgsAMto$!>dWiqw+BBA}gm`ZS;J61(%nLOl<<3ikz%m zR8GpF@*Dr*TdUUHiN~&3v2+y`xtS2%Lxo~?pz(P%-Tcd?zUfJ7o|TjKb-uN4^Otb^ z7v)48qPRnGh~i7dCz4O@M;Y8<$~g}AqiS);oS+Q@8ThmRWmEX(4`)lgf zyuW6C_E$B9GC83UIY{kz+uIkodllLBE zT7VnQ$l6m(UGGHY zn^Jam_OrPe_BONQ;oxx@`<)pNb?a8XjT2OljoWe1aT&YMj*A^HQ|8DUud|AZ})MHoeyvQL2^}vJ{wegSEdJ3#Z;kq@X|Fa4{o-!kUx|_D1jYK z0?Fb)qC1;8C^y*WsJlbSAT`o*bT$L+xkL53(pl^j&W_ywiXcMIlq7(6Qr|+%#dlM+ zfD$~rIuV?;<~WBCta>hDrA-LyH<9!kNy?(%PSS57>9>*eTWv@9zL`hF%CiP9+Dzum z`HXzU5H-kmS|f3TS;wz5XQ;>?f08qIg*@?%zGHGv7u!ZTOeMuV*vOr)Pli zv4H%g;kYTu+L*SkuMWG_1p4l_DBOG_iFx^rBRTa@Y*voURQE}utImijKoB{$!3t^rGs?a!3r+L$)^-o)?tc<{K4 z{my(NDYB3GHrTUS^Q}R3>$fO4Wx-?f2NDCRLciv!?@l-W8m+H>6%(fLn@C0I z!Vl5)aR!+hRZc1wl~d$5MoucfvF?fGMCqjPDPUifb%TC6HJg7W>T6lUA*x%&gb9?> z@ZXG_p79>q5g)W%R8A@vmDBjM_8VY!UUj4E_=S`spI8pWJU!9ay*3I-hj^ zP&sJ^omU-SomfuUu5(h|4X!zs?Uz%t`T1FNZR1p2&Zlebe4<^^Trke!@~JC{qnu8J zPxn=V;UKjRnii3pN*>^cmP37LrHCOMueC-*3l&}}?j2LD| z@r~M|HLU5DO`SlzvjHfok?-ay-XUhaT1)h}rWE(yjla}L9UMCTA7(#L*Hh$-dUc&> zz5aEgm5*Ou{jEcHo@bJUVuGLWOG5D~`=su4^Dl^}-d;#$ur^zkX7DY_I%7RyJ3b42 zatk<)sBpcl;`4hbC(d7;uR4Dt_8g}3+T`Q!!M{)NxrWPIO!ziL+y~;ll2_Y}@K(cA z!Rrir(`~XkGJpNQ2mhM+w>keC1VA*Gb$R9_)%#|Z`IcDq@4dcb_?pb z=s4)OXajV-G(20~b1@et8kgPWwwc>{e|Y@H*)cAW(|o@NZ^Qa~@K3g^;QXz+&bs9v zYT~l5yXec7sRY+jsqI5o_qW~q+*1$DEq;3m(^vlOyGu@J?O8H^B)Ns*wO<}PY{@|z z+D>@ednNs6yZz-M=k=$3`RMYs2$$MEjQq^wIF}zr{<~4uO5{Hhc^GE7b5WM&fBJ*F zKRAE&$Cte2j>{fm{%@T7uC{%bUGUJ2ga7sb`H#8f&L!E;@3!RVr+eSS@Exx?feJOe`1BmA88Le&P)G$@D?&uo`vd2{aWlNA7tdi0S#+cDF2-6}jXOTT@u<4_rwK{GBoURC2W3j@=|iS@pH z|5A0ef)njH=(u!TXvRgy>!oU6qxJIqNtzhHzYMGX?|t-x zTQc96*S;#c@77h(WV`ZD{5`*TnmCu3mLYx+j%w;d{erd<$zT*9Uxcv5X_`+$inn__T31Sa^EvGnL~8wig`aZhx9x#9@X~zBr}?h8`LsMYb96ra znos#O-?+`E zv^=-I>U_$l`NnKMEzivtnM=R6Q~5OC{WhPLr}-QQFX4LfDWB$h*5=dlG~XKe>XF+& z<sj8jIr}=c=YI&M(&AjS-%BT61Ps`Kr1-rQYTYyMi4}XK7^K-Lp zr}FE(@y`RwmHCxl^Z&rN&NRP&Ts6P)YyQZ;n)##UYP}1r+_hbrU->ov5jMY;tM%5) zul$<7-{#kHHJ^W;X#L8s`LDP6wcI1@IvA_de&yHv<2JvRtL^vC8?9gYHUINAzm}`@ zK3k`L<=6ZR?zZdKmZSOh^vw&cU->ovX*R!>tL?6rU->ovn9Z-{s@!#c`^R7THUIrK zzm}_dtzLfR*Zj}g{93NcuU>xT*Zh0heMQUF@z-|v+pqkZzr*I&au?WfQ#tzcE5GL7 zVDoFaD!+R2SANZ}`=XYs^H1l2zkcP{{F<)iYW+d^H-TCAU;Pf<*k`KuVXa^F$n|zT zsa&)^x_oct&DagOv+c5r`*r?uSyZgBZaCX~e@or5tIc;iI<5`)j-0n}>*u^LK~ZWx zea|N_fBPMAlWiOP)`9aJ%EEW(Dz5wfw0U2V-=SllNsV1zdHHjgQrz#*HD0Q}r0o;d zanW(manag!yiAy~U&{6ib6na{ovycU!LM?is1;Vkby-;M zCZwvqQ2o*IS&Qc_u2=m#X7#A*albxhMO+WO)`NE6y#%CWTIzjAJyI~|mx_Cx{qE04 zo6{c=n@{KIcu@Y*b#|W4Uj0FN1%1cz<*Gk)9CTdRKVCXs_{8K^$9dm!iF7)axvIKkVm!sl#07PoojK-u?~#M)b$-FLlGGSU*fA(m&O2s?SuvMXa4d^`7cA z#aD{ARL^;v!Fe%&2yR4?NNJaw?60wS_1oB$Tjcw)7593p-#*ctejBs-bRBiv7?8g- zGVApl<#mZyh}Qpd)o(fuIxdlqn{m9|TVjpfaWKyIt~VVoe4Y4l5Z22saCd?04^Oe7rS}}|fIj_|w?&;3A3MgB0wGV~ zx((SlCPCw3a4QB*wA&O4-_BWdTyz|CT(lWFUM9Q|>qV}mL1C^7?)MyLx|9i+ay zGz`H>ugIhvvztNtXudE}q6oI>rFcW}h2jmpFQPa^afaGu)Gp<>FR^i}q2qUjKH&G% z=gwU-@AWJcmltnze5Ppb&scZtpDo_FJpeCA?&?3fPBovd(~et$^1lyylb4>SPWFXO zYQ4Yg4=?k(0Bew!zYAd9n(s%^9QhDtcaI`n2xb~RFOKq&~ZOx_QqT`_B z61mOd4Li=J-qWc+A9dTn@ZTO|cpUUY5cT8#vy=X-@bglXW zZ(M@D|2p;BWUyg;yCYLj_*ou1+|-W;t$3PcBtSAt_QB0jaHv1 z-e6eQ6TVOSZj#`Q6PF)j%5xkq-oTgL=Qg@lxK<|`7k^3qu+~3YT#icwa@2k5DKreh zNiQq%N%>|Q!`PQzQ|I?(&?Admy=|s^a){7;XF)iWPwjIP-dxl7`^SLo*o0yguPA=e zniSV4PEp*lz}kh?Zle4rL$~mpsrV%ldB^-9{1Um^*h|zMyTjs_yMpkCmhQT`?lqsT z`;N^4`L`ZcjaSxPTpf0c4fM6nH_?J$Broubx`FuR9rO2gNRwY)c?IDYQ;LgU8Y^}3 zdS{A5$3@3M$0c&7#V>Z8rT)^r(7)x!+_oH73484&fAddTn}Oey=2a(M>?ONlK6>pX zFV6Xf^J1OyOljsX=P>D&womFf=(vpA^`_&6`=l6;=P(W*g!{qe*+2Z?aZr4G>&nML zcHMX-RqNOFQiUt)+e@&z-ZB4$Ii%XM{4u&->Wzyj1p{ZV#!6N0?eFS((Q(jm(U$0V znQ&wFlH(vp;*_uX@C(C?XS&5a6WL4fOLSkKyP|}(e3!By-$tMF5+JJ37K*LymuL_ zPsjWPUrGbS4o@*c=+ovytFU%T*Jk`k&_RVd8w}3UgkB#w)xB43E#}8?w==VcqWKv zX2U2k2Nwr&;ZMF>;e<{ofgMZ&Z@~|7ym|-gbJ*Qb0)7bq)8Y4L47q!#a+Q|M^K6-iTqxDXcnX znHy@}H{JaH8fnj7fJn7x-VQ(I?6+q!PUZhz=lxFPoTtR@sri*(^FRB?A4>${k9f(?nR`d9(iC_aecqPOB<&A+;wz)n z(QWj<;ob|y&pC%+;I%L?cIG1Ih+wr>)$O`7`Ej;WmK*mUwt})`mPhZuH^#Uh@BTH= zvF%*H>kzN&?Lqj-7kOv({Ehr;bMu$?LnpdeFBgE8`!)DkFG(-gul=ia&3viFX^Pi2 zC!X=?4J~~~bSb|ea%I7B*%LvP+gC9N-nDDxE#=U!^GEe`z4wNdFymr z=lXR1Xt^^rf5v}3FPuLWu?Ni^U6Y1M=a0&*k@+Lf>)HMN0Tjb^AGyC;|BQXMdj6Dq zdZ<2XbcSgKW;rHtb$a_!O$%~$K50EOHJ=u|{oQiEFQ^SWUR>kzN#)kaeB#7Vyfstf z`0Sp`L%mR$u#JzS%B_)cydUN3eepZt=X&;Et5SnKsr-uMXe#gI{fScum&@*(+T{!E znaM3ju#_9D-W$zX#BqMJ;EnBLzb=T~L0!==$f)7>V1o>l{tr}hxAS7e_fMGvuEn-HgVv%BDDUcdb;lj@y%qflOA1^#TqOWUpO)OKqX+Mj&7 zuYWoXPpr}sw~fnoAAq9Ne#mveF*8?XFSR(0vAVV#=h&4PCk$pJclmpHHhv3IIaZOY z%x^-IJLo!gWwJPs=+0&i%1!Z0hUVjDG#@$V`D|*V7t1BL&NJSM^Ojq|6&6QSaK)1bS18`_*LUp7 z?qt3vkxwN7!Ka8Xxa`=LbE|MgP`Rl>@!+LvRvsLb=5JXT4kZvu;N>cT{y$9bU685v z+p7~5S5OBxdPP3!-lLoqxMC>86^)MFE16Gmh0agK6)m>Y>YAN+XD71t`&IX@>&b@Y z@_|_|Ki3eRcPY;#)oYK&v+j)>H%^%*YrED{&(->GxZ#Gf65F%SaF8L;^ z|A6wT<$CpMe7*YX$z-PL_t)p|w}$i73s z!~S;6RQ>*X>V?Dl>+A1k^v@l?=q=yWBymi(mHcNz{cJ-sv@QEzZ+=e}KVA7xR{mt^ zFLnL8kJ9zGrIGnRS^p+WpQwJe$D1DHpRD}J(!FK+`@g;G_qL@`|787}EWOcs>hVoh z{$%O($_?W~34{^|B{171P`Te=?N4>@H`x0NmHQ2++4~K3o@Y3ArFq(?WmT#$op(!U zqsV*iH_UcXt)u#W5j)q;SEplIREXBM7e4D7QYeFP4uo?coCDz;2qP2aA*-!S(jxZiO9FT(o`+j08L+N$(^gU-)M?>8LsEjn&By{V?5e9wyqX>hpyY*6`D?ffwnRMx`R|;JO9@2T&T_-er z<&|a9dGALUG<+Vypt19=6MFyfm1WX(h$CG&e5ueUQFm`=XL(&bF4UXoER)uqjxgx7 z-cF%a>*8fnXYWZu@pZ?QNwL#U7mBW4T_(li2!o?Xk*qLXRNzo+;gJN-n zK}SbV5n2&DvrIZAdc4q?u{CAV9jLz#^$(zKQs3Eep@ANRK_~ach1L#qmPzrx6+)c@ ztIDM48D|K^)~zd(qHPF+Vn-ni>WH2pbbM@GnRG_j(@dk)$_%0b?w zb0BNdS-DQ3Q_qQ)Nu9aXLh*A}mPxVhZlUN|XO&5@qY(y0+Yttx80!}5jGk2{bz?k8 zXJITz_oDs+`%W2v3Xm~r0CFdtUFZ}#Z2)rt)LB>~6dyRgOu~=F2}Rj=%HSA;LD8iM zgHDR|3LO_+S0?ph3`pxRE~L*u{yEe;j5d&RDaZgcydGiD8M(O7x?#*oP&{{nQ0MT; zWl|LVC&kifq3AM%L9q^mK`W!(LaSrxGO0Uynov4+cA0c9>Mx-FQPfQ;V7y7A7;Dnn zLR=_0+F2&W3#cE|Ig0v0QS_e_%VdP2%Mb>|IuHgOAMF)d6U&rIy_gTA4CVsqLCF7n z)H{MUkj}?=lSVMsr0(;vCO~J6U@m|<&p$;dK5}B26wBp=qUW4bCdH0L7!+NOFzA$6 zPUytwIb~7~^MP~@<^pL8>Mx=Gji{Sc%6AHF%peR(l{$qI8{=hCXX#X-_{NjUq*$RK z6df2SlVY6+gQ9VSL8rwELaU+!Wl|xQ5*mmm%A^M&|MOArMQ8)*{48Vux@ZVt(7N-X zhd{j-K`(*g=dTj#yy&ztDT@A+V#C8i(W4Ls#g0Q5v^ts-Iz2WFy)#_SMZ1KCWBp~) z7Svxt{g|j+DL>dJxoo5#|D@^HS6cieH3w zfMVyJClp2hNwF0OgQ7D>>}t}%(duxp^IYYmPt<_&xcX}wWyo)Va##TwV3y${tw562CwZb zlj0vfMX2-IGs~oCsU#G;FXH3%VV+f z#nGtHEd${2K8JX6FU3iXqgnd{6wMX#hqnR=k?bM#jm-hOzJ!fVNm>3ghA(a zUN5vheodKledh;+u8F^|O!_A3zXJ7-p?=a8qcNee0>Yrw6)~a2ShP%vU4bP#3&l@I7}S|S7&I8aUZ~i4bD4B~{34;7 zJ1;GhzKQy;K>Z&<-J~lvKn9?Xybobe*A-Er{*T1Ur05l>9~Aot>IcQycgoAYR&-1yC9((RpB2;CeXE0cbN`fo!0 z*P(9GO&7(4t~(!LQ0AtXQ15loGAVWw);uVB-SI;FJ$di-yZ`#{a%XaLIllH*q0!FG z*jG1WkG)mM%S-?FA^+=9@6Bif>G}(zLN{NGFsSePsL;U8u`(%o{Ru*`n@=v2cmYNW z?X}ll5{{qw$#Q4cT|&k9C(ERbop+VbTlwiKe*9!{`A4Y#Ce(im>L%Uve#iiH%NW9- z^i5Hr>@Be}DSFe1La|$bF+sdu``Xu5+Q9H}-Ke|!ZlU4$<}&HL&b!Nx-u1)s3opD- z;k^{P_dg*2+u3)@0Cf9hF`=73fG{X`drat@n=uzavD;BED0(y60eb$ge=UFVlb@`V z`Io=^rTn>vepZg3b(hfjo%aA=+yiWJ7n@cd85ybYGW-nc{}lU98Gt_Z;h4}ZA4C|G z|5QvUa|`AIDE6sSg`&4W2Y@d9*0)$prOd&>K?%ptzPn7ipz}VV(fHj}d>k`g{{i{m zj(YDz8%Vcb3K@Xzyb@v1!0l0?!kw`)DSA6FHz;=JX+rUP?g=bcA_M;DTuCGnlKLyu zzZv!4jk-yjp>IfcL)Vb9o1;QQcgM=4=w_@vQ0#7;b3pOWe_qNt4|3G98*%^q=RcR9 zdFaRG=aBCn)O#1&K)MGyhIAM74r%0`n9#X*Ma!hvJvdu{qIY2pf;u05xO~UYe_np^ z#TT2ZpN;e-G;YBHBQ@=UT`B^u-$x1{Lp#3T^yitW1jD z1I!JIeQ~W&9Q`NpT8;Ck*1_;e1OKOdVf^9pL%R>9Y=ZqdXF@8UsUM555&r(=zUmwpx6UAUxMQ3Kk2K#|9$!QAgy24;nrW3 z-yeTO#%9BY4V5&u?aA~P%U^|F)cXx;fAZgNSg{npO@rSpjNJJ@VlQh&1+*KC{pZ#R zf4^wO(iO=8{>bYzFV=NV!2JfsJ1zXf%Y7c$_)V<)x77AOi4=WsCV{XM|{V%qq4P}PbG9$UUW9&U26XjDq6M42;zZiWo^?R3EK3C%U?Wj-22mec+2M_g$j=;q3f`1Fv zCo0Do(D4I+A&pngm#%oC)MjvuDRZ~)-}WBEUji=TrDJa7NWJw+ zyiQo=IGZ4X$T?4me*P#r$+3)l-GuA)`GjTo{bOgE`w$+aVOCagKs zE!i_7_2rq%n12pTMW(!+P(eMJY5rziEzi2`rl#srygbz@GaZUtKQ4M8vdOr+mgXJk zt<%WI8#A;1ir%(*x}vw&Jty`F)#v_JoUm*;ezz81k>~H$`V$)sW4{O*9dGu@(!IPh z;otnse@*y2NaV>-ZyULDO?fYWm}%ZPuiu}h<@k9f;%kOi%U73qUv~Mop!HRH+pd*R zZ|ksbLpO5T9HS49Fz&8fXNlgndb*;w*I2z>2X{kn4|S!STz@K`nzDFa26(&wk$Ey+ z_4*j;Fmlp#uAP?>Z}0iGe)&Ge53I}fG`{z#{_^Xvdhyz8x3*JO`L!&6J}tLi zyyjE49$&q9&8KcXzIySRPu+Ta_2M<3x)na|lT~_KITUa2f(RXZx{9~|0)m?<~pNcBVtUI;sb}=}g;%2$jJN@JrsU@YGx? z^O}T)BY38RZEFc^T9|juT^%0w${EA%O_jasaf6*Bb`SGp5$_4hw!uBm2KFjrU-8#I zd%}7TM_a@(e<}AWZHM2zG57xVFWy^f%l+=bc7K{1)_Fxn95H{Qg~Y+kXAWwQawBP1i%@{OEtTZu!gVpDo${(Y>Xf_wDtnwv#_{ z*~7PIkCSk9f3$tf>AkA!Fe&xoXkRHU0?+5jM?Z)*m&GQZ{x$g#|2EK};CUPS#rCt! z=b@eCWMBRp?O%m9GyF9A#lC3!FFxRHTYq=-?OSeJ@o!r-|HqJ@{UrahHb46;VPF2` z-}>8@o$ftu%aACbEuqf?c~u~5|22#JxoMfr@vS2gyQPSTq>FVpLT7zwU zn<2D6i8lA3oh+4oDc`=^7Pgt;KcHXxVZZsL-7i=D^k+-{@5%GFe*MV@wz7WqKZX3K z+5G>F{Otc*Z2n&({{f!-KYrko5C8S5FKqeM$Ze8e^j)~$P}B`wV=?orT|>+bFuhd! zjrQZ^vfr#+>NwBy-uLmwrgRWw+lcH|E?t={rt;}zrh&njfMue(aDLl{9VVV=Wa9IyG#a;JSBiLx>@-+49Sae>F=t#+BjOUp2!>HpR8=J=n= zVLRGUKJ7cS>xgUonx|gvru}2duT1!iLA~5BVZ0q5e+x{1DEsV3_O1}-2J8_};1$(7 z?3gj1^442(lgZ9scNh*OFg*$I+{B}$uE!P>XLJt#y4U#Ux6OV%XKug)xRrI`ng6zW z!>#eUerm%;FSET~p6U9vJaud9Ws13~>soUZo-sooRBkYeh+LJsp1bC#HK`5t5}Syx z9zAbHKI^xsePTJ0U-}9@2UOiRn}#I4TH5KGYlFKu__6D%OY;MFAfC^S&#Q17Mr|*2 zW?lO&dCa>3RfTWUz)FnU81a$4=k_j?&Uz!us_()1D_wciHn>-5>++Y)@SeX4ezv1y zfw>o_c}{!B3sv_L$KO{SR=#@fxU~aCKK<`i<<#TvKl*3a=sga;TQu7*_JiX|dOZWa z>j$+tG5rs{c? z>HP?+UixlTZd1lg{8hcFc4!T=b5>4m5I=2ETb?=gnPd0e&@F!} zmmg*vV;J`W!iX2%y}w}c0vF-EMk%k2w3@OkS0n>OYlR5L!dNZFcEC!}_m6sTw8-(0OD=e}Addw8!}6MC|M@v%_Ey|o2$$?nuYos!BI zn}>M1kF)-*s7S-h;Pwte#0`6+qG$1vmRH?nuj zU_A3NKZ*5deHzE|Sr3V6S{8YEu}sD*58I`3RsF7V-3w_GT@|@b#56&g;w9GK0X_{c zg`fT5MLDpibk$E8sh{&y{j>+EpZG%k6@+SNM}HCb z?>F(g9?Cy<%`@_BasR<48`3c{6b@rFZiUX-o)K_!wnA`OvhM>L*L1F;TayjC5DeUPxvSwDeuBFD&3`}d{UmloQ4m!Hz^MiE-{8YjN^DXj13p{*$9}9e@mPLy{$Gj4!b!Z&& zY|*yZIH_0rp>Zrv`=R5i`d7!5_+ut7-RD^U>oKkxCa&c?RxIQ=`$;o6Hy!6dnWLs{ z2Uc(u;}vU>U$GP8iJ=TmInd!+F#i1{p16xViofXRWiZKp60h|Vvzcc-_7i-_^~JjA z8hp5);PKZ;{DIDE;Tpe*-(BMObLcXSbuq8Ta}Qx1ER*@PE|zWh_Y(~GB*Ln@I98OC zSqJdcxlTT1WinSMt&wQOFvRc^?R6EbIYkVwn2B@Zv*?@F8%MndNJC4Q9!FUHM1Mqe z6sOxnY_F&NUO)T8i#+O=GN==9wJ@K@FJ&Q$ zJnBEv!$ZHuGq2aL<&a0~^5*r|<>k?G$S-`hZC=0O;W)N%94!`J22L}ME_UMl<$5L2 z&&wOfwW({EYnN-2E{XA6ALQX$VjAPFRm-{Fiq=Z8u=K<^0@xEE;-l# z&iY>mm+O#gjlASx9e)oZFZsyNy_t3BdS;k@@-WXEK+MOoSl1h^pXHN> zoilx+Yr5-P&n`SuPNY*R>wKcdOpvB$CHC_w@M*ov;iqgOSDD`j*CJl(Fx#0yW3=5% zZ9CaM&NW_i)z5KNKgVAEl&ShTFVs)_g!=dK_**>w%K6xyhxL367PNqP)EwsF$) zvDG_zj;a(eLmt(O+@tPC12xPJu+O-*DD8Uc?>_$tZXAev0_RWAk`MmzBo0^2IOQ_vTLFLtjnY(hd`6`yhSM6Sya??PpIMy86LYh;ipaH?Dr`*`^;_=HH$*aU9QnM5^A``9#b*lb7zVtp7pGCk^v(!u7*7 zX08Lp;hNxCmab`=_gvm0c#e3R=UTdEy|oD5F@AGKC-(NA#fh^GE;46gQ&)@BLyW~T z=@K*Q*_x=kdUiMQ2Uc)D`5C8q$!p3yQ1H3-k@XrqQ+=imprb-SJ`OuJZD@HO3Yg<`y!wjU^_u7h9Byhu3@{(cZI zrU&`GJl?$IC-LIB_o^jkOzww1C|Un!>5rLs@{HN|7Q{O?eh=~-X?VQ+-g3w@?#X+< zr>+)HU7xl7aqypq=c;+}4DaB|5iILZeCdzm<+m3mO(P@6b~-yRubn5bsUL) zUeqhp&(tX-`lT&8W>R;+Yt&{PL zV>#q!KI$ySk)L^)Mt*@}Lvjbgm2zY+V^0UrJZ9{)Q%{zE+eLp}Z@JbvO-t#{cftS>Y+($g!pqbD); z`0qppO&H$5YuT!$Jv~nUbY317)ycXhxuE+Y_b-}v2h6wfC&@8|t%|$s_UIe`PGi4w{8c|V}7mOIm)!^ zrInwyi)~SVkQoKwVm%o`(pNNA>s8jc2|L-a2dB~K;I(XH( zMii{aq`&t2@7r?tLyyMj9t1b?^A{U>cgW;_rT_JgmDlg~o8v<4r*h-(DY(ciF0CnQWJH$RP{exF&r~;lYkC zg?P}6n~t5=_4_r<5ux9u5D&VtF!R+L_WNt)XYz!9LkWZu2qn;n1Z11Dc+lOUHRnWl z5IlD8R_8wQGS4K zK3RUCBgBJ7bQSse_a>F8VN*P)a;t|2zkgfKj!Ao)`+a4%tO_2q_^*No-*53?9XlcM z;831FbVMuUl&+@mVC2go9&~XX<*j3=^F-skVSgOI&5DD=3|zFY)|RYoF>MX)gEJub zu*gsXp#)~J1ZLPi=t9h<@nH3Sq9Uws8wCGywGZlk9E1n8r0PA2v1T8j>&JtB`{3AD zI^}+)Th@;3^X{Wwzbg~PgDSUrc(7snpv8X`Jor(I2Q5x?Yc{@RtCnYyqub9uIR0RW z2hDnN*OVCvogWOTUwQm-As(!ikymDZf35r&6JDVNLJ5QtXiNfC_CY>IR&`C+KIkd1 zX*}q)4bpFQV?*{q-H(It;I^<2jjsfR{x_-Zgz3FBSh4w)shg$i0 zmf0MpCaD*KZ%JxnF!thzE_VjJ({vU-u@JrQuThV2734wDF+De-%8q=kMfOBN2-e z-L@GY@nCi^H5~(CQ+Tjr>&)Z9M(%f(tRT#s*D>*rksEfO33lUx$F`YtHiG=>`u!UA zrknCZJZR)lD?e|%`fKGUA`kzB5(p&_N}wSL@D0+by-%`u@!~2R7gU|+SK7$i)boSx zKIARAvHQik9|z$0WeUbU_t57yi-J~qUIMs_Mc-IKho%b|F1%*w4E9&Gr2vBiHC zJh-35gBB;cH5(uBU_O;BOa~A)g$E;#&O9FU_t9N1W>y;PHZ16RlOIidAzQmO%u^H9-NMSQ1@d$9;8jh?PV7qFmdL{&c~X-M;vV2gf@@Jm`+I7Xy0zE{Eblm0LYLh#VH9^Znxe>%U)Y@m~cG zzSH7Cixb_Njc?hicrw2}HRv32xId}Ua8r12{IL)Zy7-hL_O3O*U&G4Bu%XaC=*q%O zRBzbtua%$46aEb)5K17FKqC^E;rB_*2XxtxrtzTe3Dv!5%s#05u^$i0rd}zK`jl6# zJDGj3oD&qcqWve zcWrSpc*A~wP?+?xa$h4Q>K@IE+kCMiz+uZvkn#;Jv z9sC}(?#DrR(8Z{VS!&%NJorxg{lPck`-5ZiLOke7-oGzt*yT_>sB)V&9<=zcf(JV- z9<(^ot=aet9y~anO67Rdcq&%Hrto0oYcp>j^!KqEE12KcC|RcPeUfTv?I?Jp{`0#oi{im?E4OLmL5u$?cyNuygBB;cH5(uBU?y2CrUnmQo*gXalZ9f_ zps*=CIR5nz54!V$W8htDe!qs5&z(o%^MkG|%uM!%{r+0{nLOd&Py(R@LJ2e?0S_KL zpkm9bWSsbZu|teE;lNjiPITL5e9KlHlTU8P->VyYBE*C4yxuoo7>6mA)d+q8MmY05s>@vRUKhImkM+O~2z zl_x4IC|#z1_$QP=D1lG{4M@OaADqAK?Sq~Yo5X|d;8)^zZ7Q@J{<>6oe$ej6Gld5u zJB9W^cXHL+qg;-PebCBn+IZ07zX~4ATRdoSqFb}^EnBrBIhx8hj{@C-n!CY zOiR=sZ2m0LYL*zorUE&i+E!AmS2v^ddi zoAE7MwK7>)?~iRN+!P+{cqgGMtw`S=2ujaltQ;iSRKB)U~5FT{x0@SCxYTe1cH`5W~K_j|~ z{QP^9%G9ta9#py2!-EZff6(H;3Ld=5;z5fOJ&hAD@L+m_)9;UNCfpPrjJ$1j;K7pZ z;Y*7L*$ABvI!`pt8}`SQ+Cn_2^6|^h8?XLa`7tKELJ5Qt2qn;%1g35uZ0z@oE3MeB z_Cei`gYaObMOAwgV_lu=$AdNY!ANKytd^thNnY3GP&^p1a;t|28@3Nx{8zz)H(ESs zaiUwZ@c|DGWs2!sX4Ie3aJVTvIKCjngJwOsYsyGk=LbXTR~~;{hzDzBQrNj%sNex=H{ zW{44&PejBW@_Ti5Kb|Q(I3D6b&(x~7N4YGD2UTv<#)B6BRq){b77tpS=+54zZeW57A0uHUa=Z@QUNp?%QEp;mt0c=gxHPedO6 z2_+CpAe2Bu5|~*$$oG@&)g&G?I&R9pS7-O*nZkn|yN1sX>cG1DzV1uvx*UoJRc_P9 zgBJf)@Zh5s4_ch))@*#lgF~5IF`iG3_|qB;%R-Sq6K4?IGk$Q02i-THe zn{MV%hzE@vYUSsRSAVViMC9S0Py(R@LJ2e^ftkgF?z_BBT|BsHam40j|V+#%XYU~_WXWc$)=b&@15t$O9u6q+T3S?-8gUh)cjh9y7k)OO*i$2 zc+fizweqPRkDzqMg;ywnPy(R@8j-*rWU|i>*78sL`-A2-o7BO2zWKxx^80iA&WsYg z5=SOpiU(a?XX4G@#_kvEejJ1c-O{}K5@X%49}oK9FYeeav=3Ix(YtS{-{nv|sB)`^ z2OECB*y6tm9{irggBB;cH5(uCU^ZLqpVFOTQ-mCxYB89gh7t%R5K2HL;I$8Goa^#)w)}15-rinfxtNR51UpsP_1s*p&vSo` zyiMT2cJM2?<)Qw@o*%UPaS$GK+a!HJ;kB+G5BlFHiM%SrgYKwMenI4NC>~U~)x(1g zzfWTEUj+|7ZSkPRiEhot2Rt~KT%T&`$Y$415fe6r2P21tc+i~_90Ttf^ZPZdeC}Kd z?Srl?%uM!%{r+0{nLOd&Py(R@LJ2e?0fPsL`GT&A?1Qe356WrcUgIV;i3jB!65@<1 z+abaY;X&PxX9^E?gm};$*+4AFy~@25531azjR!6MtKh-kSUhNPqFb}^0S{(-`EzxL zEc7Qe8g2>?jvqerc(B%1>BR@3eQ=_I4ef&yNheGTB@jwr$CSWK-!HE0TFv4?VnIvZ zk!cJM>V6!A2i?*Xv(&nN`=I}R@mPolT`^Y1NykfFmqqcQ%B>zAZ1{e$#eWq%_-Bg; zElzZ6Ha_6Np{`;+*frkKB@Ju3<0u|f zxlI)hu2}6j#DI}~juiR#V*1uhTDRJYZ^h~r>A}?M;%FvSiJOY2k-7}_X>Yf@ZF3ix zHZp8%)8osk>TciXXs$EwMP8G?{u;C8d$YZ4{m&lzGdW+W%lXoe-e~yLI^(=LIgrbw z2m7YlaehC6tJd_(P_=) zQ^QVcPqLVFT6@!Z96DMvN&Ma5j5-^g4Fl;x{7E82-za^pxomo{n94hS`Rq{68BS(M zi=5(UF69*PoGablOtQ}zOb(>h9)9RqP9Zs*>T#r!4Bm<=W{b%TJ!r#7x(79;yDanJ zXE{aW%q4pgg@w*g!AW;#2NUGU<+Hg|zL-uS4#D1ZCM5+*B?}K(glZUx(KiWne9 zw&qjaMe+3IhKdl}P(H;VijdfBm(!KWcCVMdCwubU*`Ac?(ZWSXAbVF1l-gKyAizAH z0)_K8>6b zO!2Q%=+BOjY@|BwMGTg}? zh%le(WvR?mDCXBLM&HGs-k35ycUoCnYi~X~z|zT#Di=B3lq2iu<9K7Tr@)j&$>^V% z0+=Ks{DL#cPA?waMsjyHlSSvxaj$wp|x>LcC1DsH~^l-L_(ac~rkUN2y3ctv_CbpP$dWst` z2!#R`MII|I*PnE{GwB?pAZ}`~$3gcCPBvfc&n5~GN6P8JPaasoQ6h;ARy2uGOs#Y; zN)%_*IsNDa`ba@YXA@WgSR0Jf9KGqHQ-GpKVO|uvQyBT)JO+C(Z(P*d+gnJ12hmu& zsYH4J4IAywIQWXjz)%J=HJutsq(;$m^uk2h#mf{YlN`m|Z%q!S2b|XKWOskcp&!!E zBN}TTlew@K>(6)-g$%?;?UwLH6tb9IDT$Z%ImKMEFC{~UiQENc;cUpKa?U9K6h|n% z;s|BOBrbHT2o|n|3PPQo9G>1yoG`LV4%0X?J>V^uKtJ30J3O)=!#Ld5>@>f&? zgVGjydQv&eRr<_KM1{#h4l}Tj8#R-&fO=C2NVSMx9JX(eiY6yAaYp*n-TjH|P!S5;!RF<3IqRLCRBr-Gn6kqXr#_~GY;-WUb96_N zd2zv1$fdd&HIU8=i^$jT;u}UtP=?e%y2x;UGT%ctpTq`g@<6>07Nol5Ko`?cuCl`m zO)H7;3MV;wuuAD-i9**%&B{hi$0Vc2q`1t`fV8&KK_x_ezbZjcA4dt zuwiscAP{&9qvlUSv`@m!H1bm!*&uiJ)P@8`E}!nguAHbW4uhl;#e52zq7<1hkS3ch zAUC(KLGhaI7=L=OH#5YI!lrd43u&{xQ!a*wqkx$R6l0WnrLUg2*6wT4l@#_=RSQ5TRDFekED)7R?oX!k#>d7RAF?Mzg9F||MHh`5QkuN)lrGky9kVJynh-H!V z$#mo&fIlo8$ve=O=y32Slk6TEOy;@0Bb4nf0;FP-f!AzH@bx7Dy12z9k^|WxK*_-Z zHHZ=F@L*zOp~Jt67kSCB_!d7l>)@#o<$e45fC^pyY*la2*<%x=iWI8#cAeW zY7pmu9FX-e2+J1f38n&%WxK5grsFP1;6xL#fsRZkS^9Q!LYxUg{sd1ZAU!4&Vo@kw zpeR8_&j`V5&q$yA?UKLXbATK2eWNl8nA2IalIfB1pkOiA2*DQe5AbF-g%yq&f$3oU zfRok-G}mLjESU(?PJis>$pWTkFEb5byDk)p{rKC@R;PL-6Q9g5k?ozS9WWHQpm`fBrlc7V1WxPSsX}k&8B-alpeG>fCUnEhL8&iCOwEl z0~+9o<-{d)*Enr3mp1&!g_8izWVZ8AHA6sJ1EzUokPXMEXN=>aa%dZXXx1(SJj_9V znKK==|KZ$hxGS=$*q93i0rqC=C34}`3(+xFlUY7zwCvb6i^jR^8eIAX7q6aV)nsKAe*v!E77tbgr7_% zR7phL*%7LU#gY%prou_T@UO9>svV)mX zBYVyxX#=Dw{#+haQXLMXWp)^I+;|h%T5virCuSK??}Ec%qb&rAU|hFsI>s zj6YE28*Zaq#%$YtDN2VlG? zdqN&&Mmh9o2)56Bx@Us}s5t11IQ_7P<+~s$So6$QfQ6W&0f+HMRL0kp8ioM?BZB0- z@nJ*F4w_R1^NV3g=3$YKwwSY@@!~MSZ|N5Xa1`mraox^zo)B=7bWk>gF2aYdp?!2A z|17for!B|IK)jfdgF_DfibYknd|72M5;aUehm zrmforPqB+Ltt$(YPPaHL3n#uTO`zgJ8d&HHDHXVjth&g!@1r%fC_Lh9iSltu5|`PuB`(pSaf0evmwcVl?wDs z)GWPEbQL8qEQeZSt?v~-O<+kUBY)9fDGILC1J||`K4~IcX(L2J{0D_869$u_-|2?I zirWS5JM^T7tpn|d%?^8(02Ubt^0W?MSj4yo3l-KB#e#Nob#XH*z`Dm<1Ve)(G{6tz zY=?s#PIZSmDY5f8-9W+E6uaz-rtt`Cp|xj(gJvVUv!dtZFI#Qq$gqQQhgo5-lXePg z7aayuT!F@CX2mqj!GHrRi?g7Wfx_DtyxnPqiU3k{*i;}Z80uvlDFG}=G~D_qJw$LI za8_d}*0Bl{GY3lqXV=t7W;lbs^rh%xw$L$(j6NRtWEjaIQbnoaH~m%%3Hyg$b;GPg zbl7TkD6FwG>_e2Wh0@TTIar0oEI2eQwp!Qpp%F!F`N*KN*9_wt0s_;p6{bII8*cv$ z+F@=@4J;RPZ>x2&N{k&JW0Krp>>)HC8RZM2LK6+&6JkRzI@IVFm6B$(0b9@n*nCwbje_P z!~W8PEzCd@%qcVJjK<>~HV#%6HuHstz?6-x5lfu6MBEgbn!zI`XSh(O6a~)jbYS95 z!IX}^FII z4{gGL(%y-p#KtFmm7@fWnWp0@TD(PDh-u20<(EUtV^*QmzEn|^w7F}T9uyUUrN{a? z)~zz%q2IA$&D2ME98MsfV*d$dqPG?>Vkm((At-b88|$8&)|^~XTyW5ICQ49jXnojw z0s6(L;)zI#dBu&u3}JKJh;G~>6HwBMT@q>l+h75APn=dP&J9@g_?yiba|abc!o*p% zfIAMfgGd6jKXw~OG<*W%4z-vzE+!5bDMph!jZK1AnX z#^@l65RW%E;!U$GgVX^(1!(1NLuQL-ZCG#IDliYEa--$7a#XxPqI-u1yG3Vp{_Fsbmz;N)pVahb_Y@yhtBK?E=S|wQoZyX`N>suy(RSkwp1n`Y#b3nAbEvWl z@+;-^p+t#D^Y$YaJ?z;4W1Q2tKQ^>sjq#dWy{?j2pGxK8Kw~hQ09~vXy=%ND4A)?0OT!eH!YPGoIN`06JmXvzsc-s%{{U z8+ru1xCf+ef^njEMqmoYZ66$L1U2HGWzhs(q-&8dO7H=7)QCc`wN?(D*k z0*JyAA5o$-$7A~@zif?_n*zeYn}I-5umc&Oj3Xqvz@sEJBbK7|;LbEFlmoa`m*#e` z25`4dE&K-RWBij*l@bjVv`odft^?mb`&rj8@TZ~`PF4`mQpi!8ET{ggOnDdqs4Cc*KX>(o3x z1$Q9>i}+_T|8SeaV@iDX43LKA6D4;vI}Qv@S>r_ zq8dyW9)hK5ataoJ3@H(0h+pIMx*%Sd(v64r+>Zw+Uun$} zJwrJNmw$0f0uF|i4!1;Tc^YhKlI_DC2OzjK4ETiVX2Jp?o3sId7=R6~5gwJPXT?Pr zhYF3d-Yh0SvOAMn#rswO2nl;)I0p|$&{7LL#*NW>Ste7&Qn`o%hD_`%p^rNeA3>3! z?1Ej=JoQ3^FG~?BSL5)s9L$o~G592v90J{-0i5!{L<&;l_JW&nIM(9K#i>=yqd?wK zM9*QrWNZQVgu07dC%pY3LRQZrY$$Tek`s;gW-}VNi76gDSX97chS^-Y`)F&8HXYL$ z%m?l;OnE#J=Jey2i`aPxA40R*4XY40L|ZXVRuo;?o>6-jh=xF^1_w+$-G^h(YJKR4 z=LtY3gS@cB`G{gqTu?AqyabOHc+BeK(3C4FUOb{#%npd+6metx@SIe75OBqKVfz*M znCr#^p;(bX(xx6v%lI1ORB1GAu%nk5N)|`P+oIM30#u(dZ+<@r$ zxFpVb)~q9=D$i`8aj?7cvIC5(&)k+U=^j5G-smyNhXd6s_tE(n z5;q+@Ye*m3YdQ%ed#>>rIsAXd-UGm{qJ00KEh&m%K+sq~R8(9QAwdDLkg_R|B}+C5 zLBwTyuG#D^Taw+_uw%!9V#kiXD|W14$BrGv-h27lexK)gXU;u03H<-ry!T8y)90PH z%^Wo!@|hN52h%T%pq>dUg|2CE0#Y_v!NAp&-8J^x^G^c3qkkJ@o6gotn9XXAi@%bD zF-%GDnf+$Q5GZ>I6N!DjK++`LzX!`f8tU42_NZ0TRKDedYzt2p|KV@rQu@20Iew&w0@y0@=c zmv*h~1=gosn{fATNxQbM!H>IVYudGD0|8`B0s2|RPlY6fF2Ff+yO|K$%WL)8i(#42 zKSPCnS}shcWo9lE7XiCxFxkPx8in?lx*S=V%u~F3h%Xr4zP=wkGUJ}sbf8m*8v`+s zr*~zN2P&d51j*zLU~F;#i#``8XC!68$fK3zCkw|<5rRQBl+yZ`=8AHOqjUTAEm-A< zWkcl2xC`&v4qUbCb8!DzPA{cpSXt2)nb`0f;+yEEE-6hc*Kj{bgEE7p0|GEIr&pQx zm_YI4RVW8bl}R!)I21I;0J<1U8EBJb(P~sUAa{2m2Mu}A#ih!z~4Gzv0(m6`hag?(Og*tN13%ExOV6C0arAmI>G z(IZ?7;lmD84}o++fCP)T-E*q)I(g;m#=vAkVgSu7RZnKSeP%S|>IQ3x*^dyp6yo-5 z4r{V8;S}}%mJvil-q*H|jL&O-l*?CMVFpXAE&gXKmJ8}V&Lqd4$3tQ-cslY(p z6Ogjd01YiL>Y{Zy24>PWq$J{Ba1t(`oe-L?GZV?ryzgVEhDM3W6(Vv53^$queo_AO zYkEPBLLJU<8Z~4S6l{+yDy?g%9(4*2uy-ZT{VCENI8~mia%t zclE;T$V~6Zbf57(QF)#3-6)C2_y}^zcnP*k=MRP~7K?*ML&H%dWGJgD7U4xOoGq#B zb&c%mgDycLS}Nc$c5PmXf<26DZBZR>!q7}kH(y|)?3V>0TlY)E2Il5^>A`LKIWRZe zV3tslYh!O8q@dU~R)zhm8?#ZieHGUozGfv$+UAQ$y2uz3X?TPaLk+M>$#Op*leHFy z3SZJnri>~Vv&ODWa*ZME^^#(3_74^U&P)d4P=qx|@>n8PYmM%n8W}4_H`DCOu&gdh zZeB0$FeJ^{&dpOO*1E7gLa@8>J6)-!)q1gZCQT80xlYk()1_doR&A9g1I8_T=$A|y zr3e$*2AWMjTVww|b6j#EG;T+$%)a1 zc8$@|#=I#V8R=a!(GTA%^qsljr)07q< zB#!enQqRWfm-b1-cbF&}+)WUDj1rwt17T zynyY=?y3f(qi#bmF>`}KLLr2Kx`aU&jVUcIa#L`P5AQgI3=am!y|ddOV2gj(`*$^h zI!H;>DI}WLh@}PpigB|;yD<_n=Va{*`;5BHd%!UJJGQgP$tq(rMC6{z;G_qn`5EZR z1^r;wC6k4Pc*yobDn_Z1+5Q?a1#*u&XXz5e0fe=Zh!W=F@F_^qM;wo=RHTC}1+-zv zULgm-OV1%u0gF%4EDxd+5|%nYD5UO-4Kvnrd0Y2(S#Rmla^ zFT2%;-chtK%%dAm3;M~KVSoqQIyNwefXhgPE6`2~vdhNKk{ zCdi^D`&C6d@|?2Um5)#@0J~bImP1%R*m%m&AX0#Mgdf7A-Mi`2-l&%NJ?$WN(C;+T zg7gxBxV15qkJ*B1VBY=9Vz4A6`{pz&&p+h>aN46|65?=}7M6Xm=AIe3NceG2mMY;B zh2HdK95j4?on3=Jrx~N!O0n{ZSYj$SqjP|>V(^*?F(aMaTN+9GPHV<#5?b_ike~xH zf+*0C8u`@mOdu}xkF!Z+E}n4(ugTVXvyXY1*almh}&f?VnTu+l4O*dGvHC=d)| z8#L5$St=8#V@_f+8K*TPI5{C2(}$`wZiPeAKuk*nT&YBdM+WEEri8MLcbVP7ds-%^ zN>-Mq`OY~VKFbP1(;PYmTsp2FK@$99jD>bLiMfWUdGxnKM6cPN)s3SDZkW#3xnZmk zu{M=GgB)3G3l5v$H1s@1pfEMX$7xoq%k8VDL#87RL98#Y2-jt26h1vN26|vGHd4wy zou{?m3Ln~H(=+U_2O8ti0xy$#0C`7-?gF74@k_#rdJ0o=R8I?Y8jHng3>F6l%G}df zW~Av9oXYem-LRDa)4;N~duA|K;3ynph@7^sfh9|Rhc~oLp*!f0 zumjr=wu{3f=1rW=nlH^0SO5h#cW`E&&Lr;_iZs*}1jm{WVa%j}8G>+SZ-L4jXDfuJ zkO}~qcPNhu27Sq+Gu3quyR7Z)5CVb4If+>z&q~j!;*fi=59EVbni9@KT#xK!tYkp;Q5}QA$%^XvQwfKZ}W+Caug8IRBv* z$3zPfF!v3OL7!aMq0Dy{lCL5_;FEb4JRpF3M4Pdd511u(;2JvVFDo-|7v!87lDO8r9!qsTz z(oGH=7#f;$N9-4Fi#m|HtJ#kJ!`8zr^wn$<{`M)S|ZVgJWXJK zXIY%t6r*^&7Z4hxzj2#wDcKhK+4?cT&ZOHe_Uk%{G2?)0w+Rwn7IOPXK;Urrpo*Z& zFx?dc+?dR1b5IEM<8@>HY}F7UmK(*^*b-iCGxgV}+2v&_7xTE7Lq$eaTrM`xm;E9& z4b5=3L>E3J5{tkGdFEDRpQ$d!Cz3=LTB977AGp`t!`O-=+e9KC9f@>>)?s00>l%aw zLpw!uw0bkff|>D4wcKUJ!%6uZQMIwP!d0-e(j^Zh2tv^mCIwn#tlhjBCR!`-QRQL? zPzYzk`k9Gh@nV;hI2nB@f;Hv6({Vw1C^!bFWzyOciKR!c=5p+CFnRSr%Qsp=L=#z6 zS9^6d=ofE%tY4171g|LOLrVZfB%;1?Efx<-EU6fCaY@-mQ$#RkWQ3?Wc`;V5rZ}M) zG&{+G3%t6Z2b7-=@_H3BLqtqf41Z*oLm~T7Dd#QjpfLy8un(Fp&gPZ;_A4{CoBaZr z@vsS2QPJfhkgT2Oi5Fa=kmyewJ_y1S0jbXDgKWf4R=4kjHC31$G&l83vuJ<4XbyHK zRHRHbB;&K#40&6Pan!csp#Crymp@`^0bLyLks-7O$EP=5t&xm9oYoABUmJYz!-snqj>Xwq^`PrsnL* z)@G2Ni2PBK!p;T1?B(N`8=R1e&mtl@W7gWnVvt$QN_VreTQ&4+T0-VPyq0tuk}SNn z^1u+eo3jLNa14o4UbJ$;1LuU;ULoa>sb7_EGcH!NM1;un)pG+_{xRizK0sVBR$x-g zqRHl7I4FF_h(Tr<=omtrE0fcGIvW*dEZMf`I0x!yB{y$~1r(>}wLMh}K)=8p2vxki zIn6#vKpf37U8xDkbzw~;q8&>HaU!oWXU}}&iVuo{xyT{}iK``NkOaWOYo?Fb^QOOc zy;x>|s<=>VKs)Msuqrfo9f&x@sS#xY2}xdy0)CBqdXdOC$1vh@!F7A!E&N!y8qgpIU4@kH5%1};klxF&GWw#a%i$_W_~ z6hD>OvqCn74Rp8u)pb>PjBa4Hq6js{GaqtO3>eL|1WG?Oe@sp=D3+i4aW6}#>6y}n z#iCA`@RD<9(t@byLn|ckuqnUSThROEEw2jCWGJTCqEEvp4ygsg;?p=( zMx0FRnI*C}<{TukEOh4U{(f!95g#INU6e4`5)l3Cm7kL^8hKw+Zoa}VlwI~hlc18( z6_;{}V~6L24xT{7mpLGaNXz=8tJJ&Dh?(@p01wGN%0CQ?Mf%2c&Wtc~1i7EKU<%fQ zDGSQZ6R7y&%1s@&jh!LqA)y=xC-bC42pfJX!7QPBgb*=G;L?U&A|G%DrBpdUfmM_R zv+h^jx~a2-^vWD2n*GRkIpPM2v5&jX8YnC)zgC1=tAH-0z*K8+x<6dn0DKBYUZv0k za!<(SQS~j|!s=*7fU9U?BTNQM0g-Rh$B04qM&UYvsmo8aJ9yrSK=4+5^Xv3q_ z1uBp+88x&+)Rv4wqEQi1c~nC7AQWdgGD3RuAnvTQV<&P&*cU;^l9$)~L9(!4#x0y;aRu?7C(e7`hR(tSz_c8#|fe8UU$44;D)Jo5R!kvWyBovYIETWQV zK-}J=^}JUGdW1qHnmC3w5iw$E7+0up3zpG3u0gg?ot*c%Y0R_6=b(&qEfUshES9{; z!9UQs#UJ7k(Ta1sIY1WT`~Kl64#5lSgkf1;A0Z2*Kf9*FtlAFvVF@+~;#M{88VD!H zK_M)m)G&`@yH|9Whz`pXPm4YzXfZFta>AF#MgVevsIN@ln7G&n&W$aiGp&C^j4=v73Pg_&2=)X9Xf!2Xbs5njx0G7maO&t;P@zg!Y#2yf5@sv z>`kZ9tfI74ag~jRXZiEpOsb`7v970&DsidoJ!>^s*eStKR z>);|^sQrfXaVhqdTq1<|-YgqWYpm}d_MQ=`!(Y;1HOgGp>zb5$+K@AX!|mA$r#h_L zr<2IctS-<)}VpWM*_+rQD?hZQwcZHi(IEILHCVV=wPQ2hWemk%rhwvVvpd#;5{0W-X7T4TYu;R@ zI#MsXL#wKWFTYfI@+!fQIBJhb70+4MOURNokI1j zRnA@s8C0^4UC?95iP;AB3$ZM}8Rqv68ba{HSBGIh@)Tg8WPd=h%N^06zq zvW}9c*6olgNQHRMj#^W6#Q_)F6Jx>`oY)$G+NB;=nZ`wnMZxRcX0V%Bf_0x#|D0$s zC9-c%@rjO=Ax|xi5!o-bLaH}R?-1Y(R2ha~1`YIx^Uq%KleJhZ$paNz_82U4E!vWB zpX84Tl`~Pn`{k>k{qlD8TJv`*-Of}iqrBN)D~GeM**H@P@gbb41<>arq+0sEglWc& z#F&+!LFUgcp?GCh0v~BTem#VkP;(I zs)IR%@2*y=5@HjI)&Pzg)e>0oTMx**Ni9jUU3vXjHjoi?f9xunp{(6tk|!{wr#9rY zN5oig55^1O^ez)l$y;**cXNdLLZfh6IvY+e%5a)u5K+zGW0TZucQY&#sAS&^)3il; z-x8)R4S`N;pppE334`2kO$U`LWn^n$aODcyJ;{zxIV?j~D9oAyZFeb$Wsh>$pjeJL z9V3^efWG!aKJ-3DY2Jq`^wXSyR+%sspl&`5!O4mmw#tjJxjnQ5)MnFu;nHQP>N9G(-g59fa)e+*RfQgzuE!L(FQB%z)uA$~F(%^!H%}5ODY^ZzEUJFW9O6-!T zy0|JD?@okA;xxdo^{HBUm8SC4TAbx7Cg7B&_+h=_wna!q*%Cs?+Bbr=Jsl*qNbPP+Ov0PF4iB2}N?obXN(#ur}=cI*Jh1d$R)mObAs!yRj ztakJj4yCIH#;Q`NdO#xLLD#1EN=YE{AU|f2gU>?JqCdspBh89vho0aYDsa4L@UZVg zen6Kdq{SDB(!fP^(W-K(T*CewneVKSU*dK=jt(W{Usx?d>m|;6c*nrO$|kGn-RG}B z_!<)c0}r-BDt zw{FvvcHUx55owY#y1DG%buW`IWX;Geqj}KF5*>#HF(UfP6S|=gE9=WY;Sc?Al}O#i z$&LK})B?9->-;EJk^miU_J9!EaiKv)@!%64)*A`0 zsu8lz2c_uCUAe7T{0?Gmh};4LFO6b3&kuXJa|DxDN%cauhCoDmop`K(qX+?xEDK_! z)#q6}F)veFmFjI~7+i*Zyxl%MVpl$^V0WgRs0}hV%_CuHOcYa8l@u{%54MxC$QLmW?1ox~aFC(~-LrdlOJK=D*X8Sy&sAMU zkL|V~Gao({9|jsXJ!xHvOdYbiH3COKFjyWVZk`;J*q9!~Dl|c9xe`3{Cl5j?AOSH$ zkk!nZ42YY@_=E^T4PA6CYR@m4;{|i+BLE@c1Jm^DZa4-gx7J>L!Y8(vVuj*m9VD>j zlr?{$Opv>4<1BPCL#iXYLr7s~W-&=9&bMW^W*LYSOFsG+H4`{PVs7D5@3}QQ%n59A zIe;h~lQm~74|J;Mp9-$FB-G^4TqC2LdJyR+CUdxy^ZKqxtoaz;{lXBgV%t=SWU@>M zi9V7?;fy_vX)YXrPgDr13ckgp$)^p2x_R6qFl<`ON>G?kV>F>2YDtyXwr-cm60TzW zTKStR#XC#0JGe@Sp$vn<(v+wLA7RkNTr3mR4y8wn86{IIik~y}s1od+Wz~)IgNtjs$(^RF=8c#EOnTs>KFc$IhF()*HaSnHE z>GE>Php|JQ8{`q&E^1kNN_~W?kDl>nt`Fetp)uT}$bGY2TsYg6n~6-gsUtvLBZ-4B zq$*x{Py@`%`U6Qfqlna--vzb_%k{R`2aYtpr6CEay0idF=*k{nuq?!F7zq@7`_k_lgUSw=+0R&HWoJ!JVY z$%Q4@fVnLNx=Wp`Cr9>T2I;_vbF}#YlUqk~Jc)`xuo#&8&h6R(y19lw3@CIjF@JtQ zsmzXyvAN~Cv3sIdLpLQyZt4MPWqIU^#2kutvU8SjH%l~?c2h>HNnS}`k*N01i%~ z?bywC3G}TVF4E@6pME&W<;z-pP|9eNRikG`mCd5ralx9`o)8>ObHHrqk%~7eTP$Rt zG<3K|hYQiRa^tbokaGAk?YMio3jzx@y!mfYMOu>jBo()4$c~qoIMc>5p{nGd$8Jn1 zAkHFhSyU*(PaWK2Q?Yo>2sH>sP>Vi4$arvA1#Kux)LRdXZMn)un@pbTBx41|r}CH} zHsQ%%Y0am@T{Vh$F+k)kRV)jQ z9r_|IIDP7mk8Ij3MD)9(3Pm0SHtYx&wKbDykCiIa3$5SR%sR+uJrb7*;P7lWrv2eu zeWXHHis?E**7#ItTt|CY-Dz}<%~nTO`;!>MYgvV9_?&#?c<}7WHSDgbPokIkjU=~g zK`wjkf{Igsw@i+Wc{h{=r6yKBILUoJ3}_E~Ml7j5UqB;7iN#K1c%5Rys3Nd97u9Qn zIRE}9(VKDw73xXqwQVth=!%edNgJA%UbYs{;VPpn`?U{*)sBWBz8@C%ak4|UPW|wO zeKQx61k(%U<@?!u+A*%*(Ncv16#D{is>a88RbTcHeNel-0o;|95dC}wjpK~AIm&Kb zrs~d$DCU)~V66p(Y%eFbavSXpXULS56hpe|L<|SgRV_~~OxYjnw1YJSlA2BWYkSO5 zf1Hj^RiM1OB3jb}IS_49QC`E?uW1v*-i{!}s87`SO0Or_U_6V;98Q*^Q0XzHR6Q{6 z5Id8&q6NNzF(64SV>vW+SLi#1qGm$t12JGnwLLby{dr_Zf`R_(F-pw(#3`GL&_ z$?E$ati>>O!1%{z@KtV9qjEF+K3eY|*f}48IJ<1ivy)PnR$g+Ni~X8jX?iFWqq5=h z(Y0ciSiPp3iGt*jvN4t_T9zWU7fk_O0!{+;$3>w2g6!r&-x|+8rKg*%%iZjVj|rlm zh4_PZLo|ZnIhGL^UFq|(JUPIW9yyu6SfO%RJ3dzHI(WKZEdoC&7?n6M-=|4E&W~#} zc5{`}Ugk85$Oi84Q&B>8&;uOgkg68e6q`fgHlO?)>1AJu3Nv@O(~9i#w^Q&!ZZbT= z!Qx%1S$2|C7t{x@kdKhCU&Qz4=Tu^Y4 zJ7JYe2XFGQFrwfGaE4HX`p#cvguW9BLn=1be^TXI!4jS1y37b|x>+rg8t7`CWBZ@y ztmf%fVI#5T6J<5&HZ3;R%AbpBW>1mj_VX^LeJn=lP?@=&D5Xo-DmfNidKO*N(H=BR?j&@f; z*=+S}40Jw=KpQEnGOxw@wKQ3KwuaWo(gcdl#zeg;Sm&$tv<4RZfm>cgmfYAGN#ric zIaH$pq^9NtFB*VSZ(#o2I8l8CA+-eNjlIB;-b(<3`SE#Jdg&mGp&F*B! zhmz1cP zLU$50eYw6W(rI&z;g3>dmy-?XcIF_Wy=OQuWL0(!s*7`m!zXHg?ut(L%p(`u-_7JF z+z#ZT=zc%@Wv3Y~k8&EBi@OMz{2hr zNi=qWeQfdB*u{uv#NXhq!intW%T_chTM>slY=|w#&^8)#PA;2@GjpJtJ&W?*lI`VH z5q(>`F;oknOR;_n78uQjeRNb@3y7KFF7pRGZQU$Vg3Qaz_AZAd6;?9-aJt8tCdZSj z8Z<3N!A&;t0vm(Ee9x~?xbU~cyqOZf;m%)!fMQ4a`0EBcciExol{yos3Dr za+IOHc5e|BAw=**02zUSH=6O14ZTPa+k5FeJfcLQ=amTCumT7JJQhVbM$p0N;~pAZ zV-3b6-(A5-WtYCNz=p&QB7+>wIN~;2tU`>8%y?i@$njeV(|&C_ zH^3>e`|_+d0JldWv0uYfgLU%Mfc`CCEn#RWEE`E06Nzq}-)CN>M=BydmaESZ=+_6N zvx|WUS4faeJ<{`>7Zaf(*9vX2)HD{`>>Oy`5^c|GkiNq)Z|7=SJ2_1fX8?QzolEsH zX@k;i2XeqY=jrER+!((DI1hN33fLrRwZwXqRJmb#rU%yTV`tStfZCXT^W@0#UJm~eIBJ+TIPW&Mc$_!W$Aj|Pu{rMqqD<)$nlxp& z#fzYpV9grg%OSdlhYl_@$Uk?=9J11VFZ!^g=wdlYFPE@{_k$T`1owf6 z{DJD`$cVnW$JFlGs@u9p>J@c6;qW}c5Zfjt{0WqzK_ zH@eX5OF>4zNhmCm4b_=MvamTE0h!}xYI=`;!dfBD3l<-@+ak^HvdB>bw9{uC=sDdQ z!qr=f&1p3Atv-f!ji*AQk2qaqg3dhv5t^@MQ!>fz)EjE9@O18BhT9aVq~A*Bk&u~6 zKSvLJds|k~7Vpr`IkHiGL=}L@v%ID{1*18tvj;g^l7=pIiaXpp5 zJU0B8UqgP$!Ylki9ajnX&Ylj&PV+M}%+H*D;yQ7)JNR3$LpZ?e;RwN$M>C6KyrG66 z5ONTfw1k>qG4?*hb(Ya+;tbQp^ju}Kk;$(rf+bnGL8I)8KBcJ6L{Kby<|#HAt{jDE zpV{e)wq+O4 zXzCQdi5PFsT%W}4NwX{YNF(%;S!M3-*Lg)|g|^*+ab)S-o5lw@AcT;!r}>l8{ED=2 zQd)qA;3?&R$b{_neNX zv&7x){-9FRMZw~rC8H3pM1BzK#RCCgYNrU%CFaxRZRO5=zS-f8lv48bO2)pS=%{4; zAT#x1k(U&2Q32RK8GSj^sVFY%LCx>^S%jajev>pmZiE|d=oCm(Iy1_Ln{=$J64#V~ z^2IveB?uz-#f(_&>Ug54f#yZ>7V>(F#}q|Zy|qT~=DT!gYg_IlYzd1C+|nTT%i1hO z8$@iuB}lrLJjNahY|xlU(RuzNi=+Y^E-hz&IGdrb@qus9ATnAklW<649fyMDVsF)p z(lBu(QKxuGD@-prsXgJ=1)BM_T0nlA5DCw;Fi;)Tv{2-VZl0d!*GE}A7MkH62{{J$ zQj#2@^p^|byLJN}Shk;&XajL>LVHYqKDcIgJ``qmK7?v_PS4jNR`_$G`7EH7lC^Vz z;;^XY05pu{CK6(>CM!=Mvl6ucZmOa(Dn+rg zy3rLC!A-vus5#dtP1*_{7vwOhhul^jOtQGBB4&z*u);2Ae_#=q(z1=p1_(|U7(um( zOV)H9gZ4#iLFIzxka#(+CxX#rVWSeVUZ9-HkY-6@vY0bYA%q~|K(>1bL;qrsp_|6a zQs(@>`_~0(-sqMsVPb8|*#KJ~v*43(5;Ka9r6u)+=vG?HW$(w#HgU9FUs$n4uS^} zO(kXwMAnKyjhx&}H@KNrADm-n@EYZclj3BD(QR2^L(L_~DtoItW)m07)B>u$IhdzY;5z;)Fx=A;o zP$9-}5E3-{l&<`NqRs4)Z$+Wm>HzVkqH6Y-R50^G!F$nEVScE1QMZM$E?b`~s{W87 zh>gb-p=1zjj4^SaV0;kY#9;Rdf3`4|h$e;^5rm0%{VGt-7!(WSnq*Y90@NxF}Qr zzUsz19-Z##3GV=_>?6iuD}+f1C+OqO1COA^ihhUwRTN?y%TseA<`yG`v_Nt&_m*8! z-$hv5iXWn#aASUDt`n?a48td}MfMDGv`*(^vL@u3MKD`?#>HaJ z`KofbA%yLTh2sh_1wf^;{S=cOrgGAAWPMKlICJ*J-1EoJ*@ouOB*;(zrz7mpWihs# zsMR$W=T94x*!}IB!GlGlYv%TZDE)#U8{Kzk(vh2tVO6XPkXM##vqUz#hha1HeY?QI zpfF)*>)Kg0x_u-E_=1DhAYY85v0#s~3Tr5>fdox!_UJ<>ann2EyFA3&dN~uzq>&@y z!-;I)8#5L$*!hit2e_C#b_%9(C<~AD*OabE7C$9X zhqyEZSZ3B_Rfk=p*ixA{CNNTC9DxC9JNmISQ@#?T4;#ahTlrF0WpXAkUhub7v@e$=3R&bD^PQV|V3%TfG<}l6nnd$YUvVJ*qH0JEAhZLU6 zUPZ~<%sk9YWgMl7gXs0G)38u0rh~fk9ZRr0J&VWGYFCbf1uAcqZ;$wzamk)N#mG0t zO{xRPT@4{3ZqXU)4=iG}CK>AxG~fwBUG}~D0)VC0+@A&&YRfKGVJxo zZo+^?ND6~F#F|mS47NpsvdvZF%msOn!CiDDe5_8hRGJF;u>jEFmvFLq@W~|tT~894 zZKLq0H)3?M<@y)N++|cjrPxh;<(4(^O91)*4)#4bEH*u*_Y z27H5`$nU7R&VMmg+zRohgV{-ieNKiGuKA|Za#%ujf}`Y0Ad|+*s^;x-Xl5mpm#Z68 zUzf-*CXhUf-=Sw8yW;Ni%(y4ymDhmel1kXUboQA=s1Y@&s zN^Bx)Khv&EtLBAh=dU;!(*yO5@uzgYfu*89Wr2=A&gM$cD`bID5giM~DW_Y(%7OW2 zsg!~&+XxB0YovE-jgXh}u;!GR`!uIN!FpktfIzzXf)pwpX+D|d?6NQrHlYG3oAEI^ z3n}qlt0M8I1>&g-U_Q)#=M9iApfcI-o)X_ilTF$kVUSXzKhUs9vb0 z$^!YC>GhCsIlCbCzCk)MDw-yVBV@2@UGpc#b)9jbSvRi zm_G-dU$x)VW478RT3%&U#VId)4wjkZ9lJ7B<2EsvGotZL>#~Y16b+9j6X*imQn--4 z(ubqsDbLU>Mi_HVrrkMc>O^hGQzz+nI6M_G=$$)0mn&rAgjzs(RE<0pXh;93oY)<} z*@0BU>k8J4F+`~2rCxc*x8@JhPw(<5RvC7N0Y;95k6?PKYOD!V=KernK7bk?66WBh zkkH~EC|$IyC>^lxB#i_N%pozA-0J5K1v3$SZ?5#0lJ6jI@xZAXR8?K$zBI=b7$%&) zd&(Gxy?)8iKy()2cnEMy||f)-YGP9bj)c;xRM@@bBB;j^9y0HUgU-v z0H*`BA|;MZ(u#Q27c!3e zJIgwJ36fji z?gQZwhor}7us9<$+BTzmJGIZ1j?2LesxQq}p{!43!NNrb;2sUP`=5KiebAc}(j$RisDSHbd~G%@(7wmWCm}($$MGG3c_IhpLCYNMY=X zaaK#|C2+r5l;DHaro@#tc_o&>+ygCPEj>{Z(v!N(pmV~avMhbLh^a>#?R z&7b%}2OZS4}SIhdKzy`sM8RrSvH@lYkjP+l8Q35~tK^pWURUPcUsl}Fx# zhH_weB?KR0Fl5_P?e@9Cnzvlmw=X8MiR4;sMZ>W3Kp^``(^SLoaEO;%t+{jq`YOI4 z6~q^;D=62pMQAJV3tCO_Ffrjp2uRwB^c^ORymhB}!IY4@wgmL%8gC&T?)MjXFur9^ z&)+N;Z)@pXExm*$U^bnxg=Ck`+8%2TE0%JYQ^P^eL>cloNhI&Sacf#sJab0K`>-Tz zd9fuZ%M>GHcnaOIB(@xf$lQu$$oqFF#PD)I|NH|x@>EkEn`D}S&TAY36m z?JL2dhaZDn*m$}HA`F-IP$6F|2PC8(WiiPH0u7cMn)}^uUt(vWbCY)3J*WE*!7Cy7 z)25ph$k{2x!8;DNT?T3~&q8X;0We;&#QOITU^$&}b3b5oGlwGb??_DiFW(6px6cR-qb zEooHS*0Lg`o{vIW%ZiZw)3lbQG^MPpNogwRb?{YdpE+Oj_myV88MN=fRIc5@gAbB{ z>rhf>q|{%PT>`2XOF&g_31}&`9(cg3Q6gjn+pk6~Z@1M_j~Jyoc#PiB{)iggr&^oo z>!H>3ZLSn{Lft|n67He~|3$&E9C5J1;(k{l42jlIfMQu|`^5;79XwNA_fo;{X^Ru~ zK}qHt!4S<1Ea>_kjaNmx(W_W6vWbON)bK8@(9a5;Y->a#$(?&wC4jU*+m#BZ1WYLiBb=+8}G?J^=|p_t?_BiM_d%IcZ!Q65!|~TW`AYh$vW!E zp;=@$QiQ~Tc)sijapUt=IR)3T6*C(|eY(^rD{^uNWM7y`m$;Hi&{&#z(hOod?R(?; z=kgQzyzY@BJWlll@lrKMq+2lX%^;s3LKqRprl1ViM}=N1TOf5^uDbdlJ0Y9YrM8ub zVNl9+@0@>q@E2N9+Cs%W;N*V3?p7RoWGuA_ zGYkK$m415@l*4LSn;_;`fryIVQT?ujMqs__XEbeG+lwlL{d2+ZG`+--0|pV?eYOr- z)6u=m&5>bwQ*SWk8+C<7THm{EYo--9PED@0FgR`Yu9^r~V~g9>z1q0b>XCh0A?V10 zm~__2!fL5=w<9ap?PXzTC>{C_8Y5_`=;)RJv}G|Htt@{)e`QvwV}69 z?n~mVXx}bHyIcD^KgCXh_@FA-suSm)nCaT(|CgSS{SNntSIJvKm@6osDIGTEpbtsH-H&bXL*b zh~FKvegi8pn&Uuc+@ou-diuPhq@G?BO-Y>;j!mfAQ;&YPZI37IN zT?AoIH?(c)S!*^aLX>_r;f+}rw8jUYq8*GLR_8M%{kieg>YjBvdS8}E>e)C^^Yn?~ z9;+fZL-6)Vbnlu}zNqzD_BJxlrMTWrceEh;TRhQ(9J9$P=AJG7Fn3yyLdV0@BT1Q? z+=qBAtz+!HrTX2<7ujY!7EO*xq|xcAhxf(T(_6weg@sQ`Sj@!wo2zv#QcD`uttDWU z6lX0VJq>+~y(LIB@6(>r61rN=Zwcv>?D@cuwOn-4n5d?+Q!$QvTSFLw@hU{aqc6j> zWVUTPV=K;}C3Gzpb-;DECZ!Cn$!$ru2EwH!;9NHPmVj0HGn6fX8_;yM1oTaga#VM? zwbRysiuNl`A<5x7n_gO&<;s)54O>g^kh zX!_=CD$tT>El2}n1~0RmZXK%7@MClgwrWYQWy(y<8bSHipq2rd%+>*Li_In7n z`uxexn~6##<;JY&Zb{ocKgFlzTL+~q(UyekYz)@eebB(FulsC@r1LQ?=@<@nyMwf% zPc}>Jd#$N;H!qr{)<7uRy)7Ze_Xma~hsWriiyeGRioj{x*Bk%U*KLXDY0Mw=1(rbw z8Cqi3>iWFKP~f0?cJ+ug0~31&W~wf#N3GUZp{tlJy2rJ3N(-H}l*pumq~>mx{Z`+m z0WDtQ4z>&>Vz!p+Ad%a)AJ9pfaqhpClB*I9GK}Z4Z&;4l@`jewR%r7XR4y$MXKU{t zKVS@0Zr{j72NvxRlU#OfL4XDUqxXfBQ^w3`FlrXN^rp$-*ev>dL1-VMQSoPktAbA( z?B)8SG`PNZSajl`D4^|)ebrD5_V^4}FGizjH8&fM%nAps1_yaLQIHtER0Vn?aOKjL z##jR?V0dBkVAH*ZqBjo;v8APEN-RoJqY~olm!Hhl{5N>Y{|x z>eRPdn>nP8%E>e(u0Hei#P$ur4WNMVqK%~6_1R77JJ0pEcTE+q+S6FW;vX{ZJ4avk zmB8nwf~wA0x2|VuWUQHN6_-0tIuFy7K@D#5af@p2r2{a?3ZgR-G^xxW1)TwCx*{Hx zpenN-5j)jF6}OrbM}9jpt~pt?5)voTc5I2^SO*&{mMw?~r*^z1!dBYf6Y4H6>f{y5 znA`5H5XB-43n^Z(s}nl25~BH8C5u^@w(ZG|?UDWZ-hL(X%l%Q6-hTTO++V#O%ZOzI zO@+)cnAC0Y(P`&YrF2J`1`EQnHP%av*SBM)yOlktdTp?e(3wP*%{uq)JyNt&Kbh*XskaRkYcXExuY) zW6zaWF`(V?fnSA@y}t1qcq|h2A@1P>-);@vv>2szJ5qk#-C&MT0V~$l-dnLY-g6RD z=XR~uJ!5ul*6r@AH*G`}!i^pf&D!Vvj%odP5AJPnExco&RTmCBo15b8P<;X;RNjaH z#U&s<(%cu{^AwR7S&C6GIV*e@TmTbFpR{zmv7mm$+S2OHFs?qM;;{Ho<+{Ee3`)CE zhQUwjTa(+i!O2!Gzp3PF8`Dm-1>LfdV?A(te8Djo-<+_;0~s4t3U)9zWP^0TOn}|F z6U4lNjr0XS*FU=}7R?yezCxae3wBa*aY;YKfbBMq&Uk@1Zj*1?2dN-^rYm4%9h?Kg zqv-^TKANL6|Ej5$YdhC4%N3743*qJ(<$10@L+ACR>tMsHSq_E-ODU{Zcga@1^%6(1 zI&;8Q-OIjhWAfA03#T?qCrN{jV)v0B{CBpkmZD5wwQt>%Lpsfy9A0O`~{})Pz8zsC6OV zPzhS^(T`5GDpqOAPlsvpthZHD5?457p@LnpU=+3nK}*C|2razs4_IcadHj+HE+&HB zs#Xha7K?5EIvQ{;cZf1mXA&jvwWG?|K6j%t53kIRm?XM@IbIu>gDx1DSk0XR@j4SW zlI9iKLb%kc*&5-Cl3Ic`%rVL)yjp@+!y@lwicp7v{kWqFDICBup1TwEO75PP+^Sc$ zV$FgLWlLmG7SJ!Sq_|DFl&4sSBz8;z6>4J+W>FYI6l@&&Y`~GAhUR8KMzZE$(oQ0& zD;`$s;3T)X7Jqra_#wCWy!vF7(^_3rSt9AqV6IBQ7EI2nq+5^zO~S@Ssau+_6{fL7 zv8hSzUA*O)#~J(OGd$VL?t zvkD&6?!Eu3-X)t!N>4RI_J0B4U^6m=dNqHgr)!3p@@;yf1DpQbPt5?4Jxw1pK|}ic z*@b4<*1eN!S=h+Gnqh25Ai1XBD6#1+qtgsQcG%GEJgQE*~j>W6tn)mG2s45d*CAn=IhC#OX?vMyvwz$2d+g_dO+Yh7VhNU*sq!u z2U+V9z5Uu)*r78e`mX2f`<`19uh9w1&7<{HZjG!w>Vdsd+0+B5`X*^>>tXcn0b$XL z`z3^*I7rG$l2Oky8h${3WQn^4NA=_}so8|~j7-Eeb7tqA*e*=v1%I2A2ih)9r}vvFJ4;0T-+nRp)5!ppmG ziLPj@nx+;Cu~%GED4D!iK{j^Fx#eDshPU|baUYbBEdBBxQo^d&^9EkREriPot}09d zpuXM>7MfLpkrG=4s1lW@#G27p6|*d|HWDRCO*nPdS|Qe|ZfiMn=avX*YXl^hT+6qx z*f8y6(uEy`!UrWYb}%N>NTINbg&VC0#Opp@YNsW$c0qfyh_?8EW)>iv>ywzFuf<|+ zcldG88a5^g?e^~O_94T)yU~kP@#_)o$TD*8?u|X&uD;)4)@{$1R`0Ki*}N`hyck|u&l;Gv8Xvdp!4L?= z_Km}6lG-WHvz5^^etAbdq zOw^1$s`zSgS0UaUN^t)w+4!(jbeO72vPuR?H=kr{F+{uhWUYmXa*?n}8reLtZlcVa zOL<_?H<$XRYmg_>|Bo8%pYrBwuz%{-8VGIKo=;2tCdxi|ngdHcc)Hf|0?pn;LHk7> zSi*h@TC-jweFSz)vU9f)0p2u#f|iv=&eq9Nk0-2gV;* z#DQrF@n0%OR<=(r-gj1bVo18b74*kwe7rPqrSSF?57s)8tmv1`l*2Wa7cwyt4NhEu$F`ZQ| z=Ur|(zxABXrJI#t=4Nt)B^;3g_vU(U#oEnrSKLjPwgTcZ-xPT>h1nvbd67Vs-GLKn z4TfwDtMt$&Vdgg27z(sv8fMkt&?*iWV(78~aV@JaZG~KDOKqv0zs~%(H0dv;WobFk ziThSOm!)IV#c4iWPSmn=2Jx4sD;7R%51xexL#`c4xYLdI38EF zxdh%{*49himZhci(=RCJ272v8{8y$UZ!x8mz;cJ|WTsr4j_urWuS<_S{>UrauUvEn z{n42&=lupDisn1&c%69`fUP3;b zC^K~)NBvGEKdr>$3B8tdJ35G|{ZoA|r9XBudo&Zk9c{<9Y3{^7&H7`>Gttv(gW4mk zu$+94q<5Bg9N)H#xWt>+kqc|KP2+JYEzvC7!0*Mpo#^eQ%;O8&&LG_e;*TeMgKNwR zXq%#x6Vvj=N(a_!yMcJEmh0M%Wo9T}%^9s$Qw zzmFo_ZGqeIdkB9CXv4jnklW+CgVVRCJMz2}>5c}D;jKFpzm#;xlJYL3yDM-v!j9vu zyOZV~z&&|ebv_=r7w>lg_r`r6a=S0jWANXR_f8<^#pHZH{3ik@0qPOebA?Mg2G=pv z>&|HC&0^PLe)^62ZDR)U)=l7ys>xth0Xk<15XVPa3Jh`NF7U?ztJ@m${o&Ry^Z1UMm zTrX+Q0lFETEtKC!{8s$ioL7v`cHTXgupRW`Vjuw;yYqmD5w5X1pWZ#pc_(mKXSx7* z1R?#Ty$~3{KL`x*&M?mrV3azJF=9Iz9}qxl0FQLN?@2jJ(k@^e*bPh&HwjEJa*DeM zmagsb4hwE@Hl3`ZC!WuOSJi7 zr&*F7Py7>rCjw6bo(wz%cq(uS@HF7*z%$%;M}wR1nVv-+&(38(hnaP2X4a+D?76`6 zfae1*ApSDog}{q|%PH^0KsWFb;HALJfFqcR9e`$J8?*7{%!p1P0U861@7)3kb8nj_2!vHvm@xZv@^1 zyqUPSkk?yzzRhJFmfp^qdIx>*PQuzW5aIY2Y)!HLS;LSxuiM?dO2c1785X2z&|nGH@Mm z0{MRh_$u%<;Oo5m4d9!=w}9(`Zv)>U?z_PEfbRo80DcH)jotwK2>3B@Bk&X8r@+sE zp98-DehK^v_%-kw;J3iz&lVz^K|O zuBBg2$NwOpo4NGRYTbj2N&gVwp}-lyDquCR23QMp0~(KYJl6vofQ`VJz*)d1pa(b` z*bMXn=TNsTKp(Ib*amC|&INV=YDek&^GN?N;C$fW)b9e|5v1t{E(Fxx%V>r0Z4-|y zNdu%G1lEIVhT2xA;WpuMjj{UgL20B->+>OLlztp*TP12SHGlOBq2v~{z`2=@rDMmx1X&C(97 z#W~W}=dsq`9>Vql^S}bI4|o*tXy7rxV}Zv37Xyz6o&Y=%coOsE$>h5n&={3@{1oDz z3S0s_4R|{7&j6kYJPUX>{qP*%Qryo4o(DW1cmZ%3>0b!E2)G=0F<~zOUJASncscM2 z;FZK(0lW%$HSikXwZQ9u*8^_=t_0o)ya{+S@D|>CE9Jh;V|8kJJN|b78kcu^yflvM z+^6p%{kwtp0Ph9f2fQD+3itrW3VaRt zI`9qPo4~h#>w#|r-vPc0e2+GMpSt}3_YZ*^fFA)r25tm?0{oOZ{0#Ux@C*9qm%y(G z|26O%!hQ?<4)^bYKLCFO{zTZHfxpnES>Uh0-+;dp_7C8n!2bdNBJIC{{{a65{s*LX za4*mfbO4>eB8aKQJeL4Vfm^gg_Y!sp@G|OiE1nJVJG4E<@i6?i2DFDQBkXYAIRdy1 za3pXPa9hG-e>*+huKo11ob&}^?b8|UJy7#KV3Zzck+ah(-VYj@ z{R#IP$`AfRJOwxwe>boWSPyIfHUeh?wm#47z&7f)z5Q6@w{!9D0L}yMz<8cU9uFh0^MQv07XXg{ z`hg2cGXM+%L->c=?@Z21(g^;@qn&ra+xYK5dEHRiw*^FPOBSX+7;M*_QmabPzvK|Yhf6y*f3(Vi|Me46)W+Rrh+Hj96hx~T1%bK9Zj#gCQ#o#XvI z?R|tDmiD%9P4m3F;JR;vb}0R+F*+>mBi*Cgk4}#U9s@kqeS5d`xOVk#y)UCJ>f?(k z|MA2<0eB*LKMDVnfi1X&Kb}JPQ-MneD{Xul?xz#~4B(lr3w=iYpN0F`qDezq2 zdBF357XX(5F9co$T+X|qeO}D-CBRF8+mgr2+P9~dlg}%do38|}0A2;Wx_wJ}4QXBr zypFzmJ@5wdIhQ(K$@7i8^CsZUz+2kSg`%$ajpkVChaKsy?dPSpwLdJqz5V?3j`oMA zceY=U-qrqy^zQcl^q%$$(|g+o()-#6)BD?p(pBxl=>z2V!S<2#q4v@AVc;XcM}dz4 zS5u!;X~)NTeggO;@G0Qaz-OpebN+U^uhr-3*K3I1PJ6GVzTG@O%ky)<=YcP{|Hsl7 zsms!INcs}_e3|su5vO_b72>rQf0gIgs5h7{eVzDk0N(_@MY!hF^-e#?Tq^M?eVefF z5Pt;Rn`FD+CGYcSX9xc8@$UD5Bh2+dSCj6Cxy zoy&}Qe7^Jk5#c|kpBFRxzm)T-*S#B#6RJ1e=rYB5*7H_bJDiX9w`I&Qt<^8LA3U$G zwKrI!>^tp`q@SeUFLFD7L%QGQcBp?(fRj}p{?6eu$VX-s_RTS7 z>~*+*>3sL#WtH`fq{I1?M5!Tzl+){l0io@w+MguYDh5M!JsE zQd`H-sl5Yd2R#NX>UdP-(SfW9_%rod!t(-3S;}(;KH(M}hooC}JeodJ9zna`hPoX> zKEv&g*)JRk7vYC?JT{lPBpucPe?wlTu_^QLj>lE+96{Q%a=nj0)^=zv<2ICYBybdP zTi(ANu-y5;=a9!8fI9-3Wq0a$e9n)3+T|=s$MD{rJDxzFs?O}$PW!~1|B`eU{CCam zyc^HsfV%_t0J_Ojd-gqf?|ABWuZ}0>wmdm?bvz~AyW^?pKE&OZJeDDSIOHb#R(;f& zPH-OV^SDp!cpB2b=*N>fR;Cq%sSPX1?_}Wqzyp9&c&Cg}H~WsYVFi`CrF1r7n(xcO zPlxjUW}p|?&>{W;SsCwd!QV%^+c3-9{O)t}_-fuiFKz93e%jXYg0#KkvUG08VMwE2 zn9k#!hXLpF{=<1*(D9=5h>pvV4XNyb)DK(;3;=_`5HQ^F;xt0~QDBUBb^;B`eI&4e zlxSDSOLN=e{qc^MrQIDbC%iLF0FxcB$nz)G&J^!m1V}zI-SJ9B4f=sR&uhQJZpo!) zJ6^?(*X$3C&s-j(6ObD1A>X~cGtX1_XrbeZw2!TQ>#%g`MfHiy>>0U^FFCy>D zalaT?PuVZw`BLCzzzImij0Z{oa{Nj!x#TNw&oY0G<{A6gn^Vk_x8!-Ec@I59+E?wR|0PYP9xo$0IfxpCA#kjq;f|)?c39v zJKmArLb|sCZzJ8?0j-aB07tPuy_4s=fOiA$0p1G;x4aK{Klxn+d;s_$@F75L`7rhQ z2=GzT98UTMb^aLcZlr%Pmk);Pk4{(9M<4eZinbrZyPwE;##(z9I8AK~obXA?SWX>3 z#XFxS?Pq{%fNP2WEaiQUJ>~P{`32lxBpDv(@!pIF-RZj3ZX~3!-@ykHr|=*1JOQa`glk@OrW?ugCqOrn)WC1>$>jGlU_I{?yn05* zhpWBk=cNAy@js=WX8_9km*o8`=O5$pYtsA%|8F}!l5u}Zzr+7~K=|+v^u-@>|B2_H zdHw}>A<)tBQSyuNQ@+c9zY_j8;P1dcfPVu2M;;du_b=QF)coK0{{#FN_#Z&i(%p~- zm-X9*cCj5egSd`PbX1*z3ufA`&TB8~U0+L!avH6j6Obq$?s^@a7L(5sU@345;FiE4 zolDZKfJ1@9@PC>1-W_QT_7{-1XlJca%`M^7!^z_aKs3W` zIzO55)2Gsrou5uek`+W`wmvpbMxFQ<&)!LC7`TKJ51_`!DbgSXG^xC75S0(SyL z>mN-X#{hTM6PoK-%DfA3SKw~IalqYydvxA8-LtdsEaE{#^L!>9-+3)_Ns`cO!Aqe- z(3oLvPrZ;AP%q7~ZY1qXEN%ZR>5fiagkM0&y~$g&%6&SIM(L=dz1k&9P zI1xCBI<6qyalF5h=gGkRfd{x=;x|8^PU-x7I<@l)=`_Z-9clgpJHM1p@BDIlQ0HOk z!N5a+hXQAipXiKLox$g?#xMSI4fPR!v{v;3#OJT$xgHR|zk#P@3mbW!37iFN0(yY6 z0qyaddET0|z2tcg?a;Vx;n@dl1-1d(fpdW!wCOzHVZix-`r_fdcLDGSpr5=h1O|XX zUzyK{Qil=J&E*B2A%>u6}Y7HE69hxnx58q zW_mj5o&h|QycX!UYuc|&&+7bIdUof_(sO`IJ8zku3p|g!pAWo%_b&rp2)wBC>*?~& zZ=@Gf#!EWylU_>L%Q`=sUfwBL)iG^aV_ z$*Zs9Tdcot@$R?$?)`XI?_ELMjjR{pn^#fiS5u$YbiO9Nmi9;+=slEtUJq zmB1T;HvwOd{9e4-uPT*a@yMgxr?*-lmydSs<_yF)h;6uQNfsX(m1wIB` z4SXE<1n^1VQ^2Qz&vZ(6b$z-9_qEjXaPY`yJHHK{kSq_GD&e1}PO9@4i0?*2wFrRI zrp>X3e9>#IQ@B{MwVdwYK4V3Yt&hL}2uo&4RR;ebZ^4$1KbxlfxPdx z=tu736Bk{H_Vx|wB*Inz>zN~38!O50WZ?d!e*n)@fKzdw#`A%|>9`*RJQ#Qg?>!Va z16T!!*IdnW4RLFMZeShlUC(m^uyK+0j`nmWVP^rG2oDV#l_zQSGV$qM0443_*=!8PI(og(_zyL4^3<1Ny2p~O! zbPUopjN%^yb^;CHk-#osoVM=-*2rt09Ujn`iTu0nj z+^@km{sern9j*Og0F*C%C;YZCeRa{9>1(7_KYpF(H-K*f-vX`&<`|c6FZxyb&LV00 zf6ZIJ&hLU7iT@rT3yt4)oI>Ae9Kn^WmmdH>1ZLWPV?25TZqfQb;;A%0=6NIV6X2)R z^Jl=%srN7N{}T8W@M~Zgy6tMP+;0~BHvM+d@6zuU{hqP?P5M1?ccZ+gu>Y-PZyWL6 z0WPIJeP*F}Fw7yG@Rq`xuFe`iepvFPXNpQM+(AaEQw7XQD1e*^yk z{+s)71$Fx$kQSpK1KNR(#Yho=MZjWU32+o^Zs}rZY}~g54gsD`ScAIW3iqMJ9R}PQ z_cGvc+(!Vn!Tlr3x&b&6_m6oVwHTTOxE=A!0nvZAC+-e_aNr$z-U&DwI0m>gaO~pS zq`LrjU3^5k+v3C0afIC+xCiyUCvZG)FQAM3?#=T)zc`@!Se*1GWR_62Al3p6-#(BmQBy&nN$fFaCYH0RJOM(+|j| z>*Ms%g}ATgIk5PlX>jo$StoyF_WjXwc!;=RU<4QiB;y!!-haZyzLoi$2l3oVcq5nl z$i;tVu7hhSSG1RSPT`4T+W&$d{7bsszyvS}OaT`G)4&Wc3(Qg1Jv{dU^W?JtXiT?b zDRWP(X7*8^M*#=UE$p}me+=+g;Pm!CrN{BS7`P>QJ$~_D(i3>bJ`gmZ_JJo7U-p70 z;eImEx+k!f2zx5;UIIJ~cslS5!k!6i2fsXvIzPSbZ_sRiqqToC{{0ekk?7VV;BlV4 z`0vPS{sGVb&-5Jn`_jdSr03GE=kcEK*z9Hbe>LzL z(!Z8^yp(re2b@klUQhmS0ImeyxL9&a?HNa>H!c1T^;eyuzHcV|TX4UX=i7j{1MdL3 zN&C*l|E2v(D~qLOJ48n=VV%Bf@lblV%SHU3>l<}!Yoklr-s3p-BJvk)`d;$=R$F@; zI23Hv-WK>7x|{fJETClTDS6ZToi22>SK{vES3W_zr2mOW5~-?*l&oen{92z>jeM7`PGm3Gma!OWL-l|D~VN zpFd|D?%Vm_^b5j&3H%E9HDmc3;Pt%wTi|!V|7+|l;G;O+$Gy7=xy#Akk>C*A-7P?{ zBM{tzySux4p?GkoxVC61)*_|2QvnLarIg|nO3VLwckTj(_WS?k^LaA6Bk#N;J3Bje zzr!Qk9%KK6>!`YYPO*CDU9KSSPVZ}9&Y{7sm*K$dEBr8L84FlE6k zAS8eguz?*y!2wQifg8UjVLaf4gb-$n(84hjL1IV(Ng){|hZK+!Qb7cyhBU}Y3+W&| zWWX*XWP;3)1+qdm$PPImC*-p6&V@XX7xED{KTM$B6+pj&P{y?Y)w>U&X2`CArK+Ua%5}Nr52s}( zEmUu7lQ9;D-p=OL+uP(j-l27{1^O0+wT`xgdMBIoH^X!fP_jIWvYt%Vmr0m#y)*g; z=HTU-?81Fl;*)i&(v~f!?z@8$>Dh7XhFf>&0X?A?^oBmr7y3beTQzNfEs;LZmRKKT zOQH`Z9YbtM^`W+8`Y_yw!w8VIU?VX{!Dx_mo?|Ghu`mwi6YnRO^xUYe= zunsxvVFPT0&$0W0cs9Xi*n-_wIK$(-4U^pl+ICwu?Mw1;hpm$Kl~v~S#c|sOsd)Z( z6VD#li>$9f-uAmgSjy?zUMlJ?t}ci=8E z?%6W@e`I9T?^AZa;$QkF4~SphkH3*u54m0eK32&(|5FbMBk_tqktJ!)%)2%-^*A&2 zn6VXG7CrP|!;4>2dqfJ|W(x@XQL!SPkZU^mu{!5`5M; zZZ`c7@<;08D_eHn>pAq-+`oiB;SKy{%SpVN_BYpWfe%}ag4YZPf?!Bs57t7!26hMq zhn?>VkoT~RgGk=HxOd}rgS<4k_7K)<&!s2)C|!)b*>mb)_S|~7-P966VtXDvi9MN~ z6q4EV>d6V80#ZUMh_L6QuI7_233Y{c7j|hNE#zipuIyh(N8ITlgS`Ov`SpxkX96E9 zlpUaf2*_+#-_}{|w7c}ib1{FA6HNO%u` zX=o4A8bM>+n?O^-G=t{2w}6&hw>F$wEBv;$m!Qn#eeTrSkdJMl9khoI5}vZ@i2qK| z*S~u2=B3DyQk0#%=cDv)xXIjacVzXjm)6t#tE|9t zm_+MompwYF&P$u!3w>oQFYrE=ye~t2>1`MJWwk!Y?Moc}AT?tJ{n2RvBteUTxTT_R zILKZ`A8eIl+5bq3#ING4PoG6S-?B2k98$_z^>7IClTcS1kT*lQ_Ofc;{Li!mQ*I*1 z)P|w!aP$}fBe5F=qwTWV{=+;~;}~P`H`ZQ(mFOS3zsrMh1(}B}!S|Dt!9?yS5&vZJ=NWxt`R0@QDeucNcB!AT>c1jsu1K0$Ux2@< zFb$?doV^l#e|0~D`d z1mD47I08rE7#xQaa1u_zX*dIC;T)Vtw+r^F`uE8H0bPD1-k(6mvMzFe3H!_NGhDIP z&}A>t9XK`06{$ALO19RJ)kG_g5J;v z`a(bG4+CHz41&Qh1ct&e7!D&~B#eU5Fb2lLIQRs{!vy#gCc-3`3{zk#OoQnV2Qy$M z%!1i4C$y&ZY|iCc>fzr!AJWG8*maZ)$T_P$X%$jkpBGv~pAQRQAuNK$umqOEXRr*G z!wOglt6(*(fwi!X_|}Iq9t4~N#q(dAIBHvQYz$4TeI8l|ed=IW$FlnZy;L8&F81mh zTH4vueDiFgY}y#Hv_H(Xa=it%!Zz3rUxuo*^wR6;g9y8WIKKkv@9xChh3wt12lm3( z@D1#P{cr#d!ngQ6gsku2FdTuSa14&)b^=bqDeh0h8LrR5IXDj&;CmQG`}PC!euP-^ z_$T~cgiE2Ob{T$#D{vKlfopIbzc=u66K=t6xC3|L9^8jtL+k1fFn@!G@H;$$$M6K6 z!ZYH34ll@;m)!pWGVc8f^ELblZ{RQZ8{Pr~d78Wk3(m-0S z)8RKgWPps22{J<#N35O|GaKQuJL*$+rSD~GIUMwRAs5VKJY}kuOUsSFJdhW^`5=y$ zP=3q;P!I}1VJHGcp%}Oszb;OgNJlcggu|(obTpvf+kkr7fO^_MFXixPQMk*qbKGdi zJH8=q4K26Q_$`B5dh%O+YcXv#N3Q)D)^o|~GEW{kZwBEwg!3=(%6)IZ|303 zf-;=NH%@cH1is^2a9sdI|CYoj`Rm} zBOM)S=hSz{DDLGOW3;0aUzx$$81Bb9I+NGT0aM36f$`X>deX(}hfN?3-7az&i$Win z*P4hq2_{SYu$P^cZs5&>4(d#UsmPfI(;Xf3IQ&d-bkPe2chqMP_e|oP<&Ztp-Si^B z+lp{bZ8mw39NpD?gqmlS{h}uQ+d0UZ8!wYNW3FXy?|jS!=)DjY!D94U0!y*~43;^% z>dPIn7C_AttZ+zwTE69FA35Vzgjwb2rmu!Iu$D4e=jg7lN0$w_$-L`E%+KKq>^32D zGi-sa*loj<{qWL%lX+B`>)g+r?&q|hrGtBrw>?N-57K99+mZhz{&zTBl(VUQWyNJ` zJF(wI9_@xblArkb8oq&ju-_4`9dO95RK~D~Q|7b2C5?w1y=VuR2f*$y9D$?wKL*Dg zy{&iC3G7b7DL4&ha4SlFp2a-p=tDh_c`)fG_qFQ5dHh_!O}-I5`1{_`&+_vF_CGrM zTXo_m+%Ix}2`+eY-=EEB=PX+utI*kKMIaynGkk=3drT z-od;JrD+-OVcsWxFRe+4R#N-bQBr#VzrjQJ9UeJG;5Gu?M-a!mF`CEZc_h1b?Le>S zU)8woW4;C1%&CI`K@bcHAOvh+2iaE`idhYls;oJ|<&?F9qjk4a)^Uwt%x?^O zkNFq9851G?f7`cUB13dj`xequk5ry{h)ddBuT#GJ$5Kw}e2;|A^yI=gQZkOX#u1m) zi$Ff}T+znXI~<3@~iQWunNqHjH|IvFeF zT!Zj6p*eHkwFp}qWNmI;Yg}qc{IetR`TXy!$stRvdMb0%QZA~VirmlQb(FXyKV{u+ z9pu*qnM2A3<*}1>#Ie}bqulE|m(h;sfA1dR3VPYh94v)hTs)z4Z*r{$}YHd9A$IfQG8w*l*iN{xC*? zyudRm`>?waUh1ms$La3;+bqy8Q|4dk zmmznQbF-dN+l-IRgpq!c+?(2HOGoBENzYgq2cM7!GKVyt>k05FOa#d%$99b)1C9Hzg*sp=LunyM42H5D_MtzaJ#FD;K#?Kzu3tz)G&h2_(PS{{X z)SuU~PF_7zQt$Q=M)m{jC+`oyK^RWE`z_`n(*7OcGZOYNd2s}eI%OY2gmw)3@ICwhKf?bmx9$2*#C?(S zxa2%e{xDYItfT!*IwU>P9$q2cGLIm8;IAU@7xcb{-F3J@xSMdxDSI*)H+6nVzKHz} z+AA?_yu%pNfV*7ZgZo_fpq!;1{>uFW_zfO9<+PHo$lI@wVQRl4U)qC598n>ry!~b)TxlTFfEjw$`FVp9GLHL*0|KXSS%JQ?5cKze|0X3g5 z-=(teB%}VCu+sNY^QiO@ox6~|3!7c&_?7;~dd6iRis&kO^6qx*=3TNIKfCdx)<}!n zU(P+exAtJa2Ycxw1lk|Q<%s94l}=T@ETYkLmuf!@u7g~AY0LK#b}wNgv|v7BtMQyB z;9!xwR$eMuAuc)DMcPzp2UPyqT&8As1;Tuzd#v#EQwb|&?7(zd@**@BrknUokoLfX z>BU{Wcch)zN4qGp_+FzN6N(JKoN(+CL1IV(NnQJC%fv5hGa)%NA%CPFSS{!PZN74o zGEQd2FDK7@X!q^E*d4Oo4N`w@2Fq>)2_rHO`*mX;i>{ObL`_rqwi54R-HSwywK_}vM zlk}z`FVdo8I{0UvNqi^yMvyeI=8n25@3Hjw%K#Z66J&-gkQK5)c7GX28>-TI%Id>P z-b;KnjnmZ0cX=yqNDeCyJayAp6`5t%Rl5Ii4BTi9sl+vme=WK$uc~y=xlh{||mH{2%QNG4_R8|B z^k;6I{ED{P1*w~|CR3ebAoaE)aw>5xLYC&zN1GzbQDLF86hAvn2x-My37~@8s^nvQ(NA>BLOXs?Q>leKtZZ*-V z5qdOsvHlGErqGN$RehddtvS~%Tvzp$u4{TL*A>0B>$;v#yG}gUiRZfB#){{LUzTcH zB_AX%spnJq-jwgEw#b!vev$7Xtvz{n6z09q4tW`Q5A|%K5pqlkv$Cm!(oJ#AJ?eY*GTs@E8Qc}brktB8phx*&##Z(dM4}L zCugPI@#o21eXL8Zt?14i`8d+|3I3&zGahq-KWsPR`4nWlQ0A*AayZ8~Ll+ zQ#pl;xkjF`Ui!m$_l4xEa{ryQGrs70M4l;m(xxtUJtmxbewVnO@T{q`?PM>4hqies zdHES>@o}1$jMJ6j>6I}k8IM|q?B!Nkp5gXXU*USHuY^^w8n-pD*7ck+QSCS^h`*iM@6P*z_eV~6WC?|phjxbK7<^!H@EV;9%YS#ME{{M?OyA19T` z*ySGV_adhlZLg1$%VfXq*VxI}t;s27GIo>R+T#(}&+#{DVNBKaK-))rfqiWIt$dTy z&J67U@(ywzjlZ9R#UK4ySWm%-ZikTn9UKNZhv^9BQ8-4p<8Z>Ivs{byeq5h|({Kj& zvv3a1!v&YYlN`v?Ag@OgD@2_EAhwxxKy8m;W z^CoG$ft#G+bCZ1WTBp4+e}_J|;STsX{Y}E%#h>i=zK40AxPHZaHxJ-6WZdil{(r;% zA^Z-H;IWGgL9dGFIKVnJj=4qZ#E%XW`*PY7S9$HJ%VQ+aOe2PO(KEt4hZpeD zv0qk_czZU?6Gzhcd)>NE7JqMWALLFRe=qY4K2Ek%Wu20zOtoXd_)B1gO-1>OK8&}z zC4Z^yZaF80??39g^nuUP&Z@ITspEPn&F+ry%S&yUq3$%up#MQQC%BO7#x%hLUhWe@ z7=%M2NbF8)l|v|%Cy6^9`m(Nq>x!7}p!DPs>od4d2GYk*jwy91g*yZJ8W^Wz+yb|h zxTSJuLE|G8p%CU<@{;Ur7`zS(61>pgDJQ*$F2pm1le;U@yfoFR@}G7Pa9|p?U3Id zIzUJ0gnMV`0$oAgG2QUj9eO}d>|{SnFRpt-AMX1?Kj;qwU?2>F!S0-Bl9Og5C-q3_ zk&b;vvg%Ie%7+ksC@|(p{YtA1Bg}BptlV=MGF~zQ_mS@0ED2E0pZbPke<WiDNw zWyYP{`3!lVid$aFcQU$7fm}iPv5(NEx(gVIaW6}|J`MXwPNI}|+jQi|!3=jHLI!Iy zxt;~H@iPbJ!aU1=VcNvPYO>~`ii780NA@s>2nnNo|m7d;lg7k>xbmtZID)>7(~$o$M*%t(m6 zoB_EEztdqktbmoU3Rc4!SPSc5J#0XZ)WeO)k#Uq>dU0b)eBUtA_#C-kxMi=n>={>n zBZ*J?A~|{2Y$BYTPrDgY#*?;SZbjxckZ;HB+K*r<0!rTeFU^Qd#yD|5`Uiccm z0h#ZTc`#{%_i?`;0%s^3;QAnZ3y0AEJ2(tS;3yn}<8T6Z+5dQw>r-$V&cM4lJT*^u z7Q1tB9xlN5@B_Nb{N59JM{@lWvM$0U+}@w-yUhL1a0RZyFK`X6!wt9z&FN!FdEMgr zHr#=`AZK#lL-u`;eKWseKEVDrcnH74BX|sQhW8W9gUH$sa?Zn3?w=9nImmj^7vc~8 zfLHJu{)9L17yJ!xK{it9U_cNALjni^o5`AY2sNWL2RN~Ff!mb*;c`|7Cjgo;n#YXL zypYh8F(o<6P!3YQMY)%ALyKV+he#*^C7~2VL1~b4AIe~sg>vBLK5#BX zdG38s0ivNIRDu|&3{}uip7*MlO)#rrRwq3*peEFU+E54TLM+rH?T4K5?9O1HW*MVC zavDHGNRPfU_tc2%#?Zu)%Xcr~npttl{Ia1n=e}ETS$qfj4RR%IJ^4YI$Q)moR?g~& zygSdcyb;DoGb@y=_WUyKLJQZx`;g`H z%TntYx>@q1-&BG3Kn2_@;4beaIX^_=61Qmj>Cw1F<5re;QaPhLX-iE%uLt3kPBJE8 z*Lspyy@;zfW*@U6GAk0Uq9wC0VftC|vChY=WF+FGU{;b^ZqxBI!0#sV2EriHFc^k_ zthwlh%%N7D=4=P9^P^vGkayK^{ERS9(D#w|s(g>j9&*W3&VE4FDATEp#?KhS$-1(! zJTv3W81&=&9KFWF1W^5&WcsIOW!`NftBNtvtYS>U|76^!AZsd2<9<5CA!7#SOqd0; zVUAhVm<#h@KKBdEWcotlT?C7fl@Xcrnn<@(TVmGNm%?YbEko{dSOI~xRV%q(1&c}N zP`*u9bG-)E!a7(Fy(kA+TepGhjb=6DbF;efg;~ScWY#n`qw^NniXPh_4rKk+cFZqf zhbilJYEjQ>p;Ik%k})D#kH&~U@^*r}qhwBc7uUOC5A21nLGt$-%(R%SEj9L;b!dg_ zAgd0tY8m^@TE+phE;}^pVpkVCQ#(k!-;&;%=zNH<-}&VnM$aRZ(^2w`opkuG>eq*} zaS3ykvGe2j3FB7-pS5o4Sp%xN=^e#Vrweo9x?rJ_qc zWY_5 zj8mv3j2c6cXIq^u-Na~weM4FUb=Jy{gi(GPlV_|=B_A%rCAe%h!Cz*ri#2D^ly)Ip z`x*JFem1k>miM8w9aoSOM|e5I;i}o(iu)JKjDW?S-s zb^W+KGTV_)?YM1+%wvofo7!Wuy^)-g*XY4xXKGJO8G~(SJf-ZPL1}9qP?hU*JdGe zw?S{I%gG3nJYGjN&tEYp(nyM%=#T>Ulpx=9sW4^!U*d@Xd6r7@K9+Cy)ZC|mw2%(c zLk7qQnIJP{fvo6|%`--;sg2gMd-~AFcWOC2F1*Wnq|}Zu+MEY7FXSU! zekcG1p%4^?B2W|^i(wXrNRU2THToANxGsrXDTsp7PzK6kUk(f;-)-O`pV zhXL3((Z(@`9Ed9rhw|g&wEcI#xh3nJ_?}1JAm~M$gE3|8$Pmn-Fbve%DD}){)5ERt z@@d2+dv1q&`cv;^E%3Xw#3RsWq{qvS?Z7iAW5BGffE6$bnd&!}WDW8F`pq(@Fwhvy z0Q(r^jU^3I-({V!tfd&|k#)t<%p=S1IB~8O?&DzseCiowO!So0Cc$LnP9g58Fb%h9 z{9-_X;6cW8?BhH`cn-ymH6`44)`#-UG1q|KSs?wa+1Ss4x!li#Xzb>5zW^4(B3KMd zh*RE=OS%3Gmceo>KGAzHzk)HCXL+#ImdUrt3fx!5`;&1Z&N{*WYUHfJel5)4Uede{ zb3OMxN#_Q1kTaAvVt$VO7uav|sQDL}E8pxHX1$lT;5Lo0oEuKtJDj+O`{N#LY{hLG z`1rMiHJB2w+AqtV7Oq!&Mi|MguzZ6P&ko}F3Uepyg59tO_QKb=9i+Z}!*vCouYH8y z4+pqE2(ssM5bwHgu{(s{@8B@ksg03_>O0T};{GTcgX6fL@C-Iia(#;H({Ki4JpC-@ zIXI8o4P?&NMp4g1ca>Kcu>YPi{lPPuv7^zXd9**x%Fk8apFi?^|Ku5ET*R-^b&Tcb zl4mUQ2xAE|mV2oq>RFPt6qoV)GhBhIo^h1(IQ)&nU$FKIc7e4$K7Khu#($(fUL);c zyq~WVpR6Idfj=L=TH)pwC~kU&8n>{2r^`s=Hfav>3^(pze;2>^;J#;!QP=i~@vCRN zkzX56oa2d8&g-4PyDUa~V6{_$Z&J?dr%jQ*-9E-wCbq8rTH7?2SK2&&bJ0s*8$>5*yFA`6`DMg_yR?aw_)Qh1vlp4~ey>2a`3bQL zgK$XXWxo$3L0(cYc$X%_l;=1(?kON8r1IuqJ}b};nOX#TriL^Sn0u1vjy1(rd8WnQ zi+|}$rXvmMk&yv1dM8@XS|+ahpko-n3X*^~b7uU@H+L4?vwA-@X1OO*wu#g5vhr;)eQ$lGcDyj69s4f?f(Xwuq_JZTRdpd-Zc45l-t8=bsy zlzSXu;|MF?FzgE=OfUUDBLt?_1;6qQ)fH3DChkU@-Ju6%*V8M%7BhpeGvecwwKnpd zA8jTLY{#@xDVamm%qrbA9D-H9>DYb zE{???>8|{U{3RdgE_MMK^k;N7{$7{a>SwfI}d`z8bLr1hAAv-CHhgY?@@(qENt`mZTFhh|xHu2wRe2R2qY%QYeXW z+(iyEn4zR{DtXLM$e42Gzn-hu`|$JHg?IjqIvTt3*UZ zWDg$L=OiK`-Ut6EuM~qP1FBwO@PE>m4!8!1h{!0Q|A>m*&DsDDrGgJ0wwC&`T3$p` z>{~KvK}6&)k%Rjzj)i?5>x+2$&^O}C^o5HqL-L|&CXDrZje8PreAGCl!F_&X{f(N( zjSv2Q^`go>eRrY1Z;6JV<&@1a`3DEKW}G;$>|&@vA3uNm)+@gg6=z&Qrp@>2cSrPfvw8DP<2yETvW$7goGEhTR8{eO zZ%fNT?5imrC)B(m{MY$gFB_*B6J`gm=HD@mZ2D$o9#*RVAt-T)Z(%(>J%i?xau^$W=J0;B&Rj5p@UTb=#E4 zJG6Kt0&SSlYjopS=*`oPV!9jCf{Yoq4!DDE8*Lrhk!W0-JTpMzV5gn#C-;qA#>>H7 zvGO>_(v+wa3i@zkT1s0re)yi{Si=f6kG9yFA1XS8qG!qcOcBV{6;RE1{AZ=!Ump zrz_I8w%N?S_9MA$N?#N-H%w+8b;UTR9EZhI<9E`+-ZKS58fWmqvR;B zczyf3S@%A9h7J)c#?UqeGj=-0>&tISaSv2F53k5l%&ZK(7tKn)`L^lYMtXnt7%RV`awjxJ~x?TD21r)x!riCjyR9y z>>ElJ>5C+9Y!nMl4u2W;=zwKV+d6Xd8M}VDj8?WxvsmSd+Pjy{f8O1G@NROKzz zc$~DFTlUU=p~3#*GRKyN6Rq6(crDdARuea!dGr(Lv_EtpqG_o(8h3CLPT=r<{7{6; zASuQ8coG$q%z^MnU`7z&?M(MU4jjEq;%{5Go-_$gud8#EOyA09j z*zaK|b+cu(HFN@*r1>6DzeU{R$Md+==n z{-gUg3EN@BZR~JPqSfqc5%=4q{l=+E*EDfT4Bqj$Djir{GZDWbjTZOkk&~-8=-@$? z;}O_n0$Y;rdTczi+J?7Tg0sVknI<++=TOw(Lh37c$kXU>(T@!Iwrqd=C)+? zFx`HB+M}qef8CQ)RQ1)|{6RW{QlD|1q@k~BOT-a8pUqu%1{qGQg%edQ_UBQ~!^R;H zA}Kekx$w0-O@@24`$wh`{wfL78PWDHX!G_d zR6Aec)f_lMjisk*O;`z8Y)wLTW?yXOh-2OW`QaWKS)*gLes9|BPmDsLmh7X9-3Ron!Sd|L)+LJ>z3QDwn0AFNRUy0t~;8i<3^ zd?y*E&>*Hcb|;fK{W$TYP{Yw%u!@xW=z*QXksE$v%HVC+ zzHB_+2@#hlUfQH_KbbVr`fB>5h`ZAct?rptcD`={9v_sz`^~{@j90#ML7PC^Wb;SV z5v=(hE%mehyOkJ)CgLvL@T+~fvHkeI(P3blE`)k)>mJ1<=Jeu*r z^8f5l-B2q9cMkRk=|c4=>-W3AX@$d0;TsIJJa2ZK#Sv(Slt7`m*B#rDC$rDZyzWsp z6M~o`?jhc};jmyQMV&c*)S)&kdr4T(K|J@l_P{!B{w%srw}-Lz9mJx~`_vjIih}hH z`J#)wg;6(Cngd zK01PbLak-;kdJ9QXoYc2)2)7j-Dy9P*+!z3BJM0%WM5GkLw7m8Sn%<4GFaNf zh;Nset0FJOldE*@FjTmb{6RsNwc3v&Y;0Cju9K&{Nvcwe;A?~+En6b^S>{pV`+pjT zSlUyhbZx;JZ#()&M4X4ri&lP+t_ET5uCM5FgD{?H>W3& zG@N(UtfnlzY|_B$iy*HPlTP?usgvYNBAwu(g{xEJ!>V+yS5nLg-HD==t7?Sr#uG_P zN4}C2e@5Tb5!_lJajp|lxdUfiK%JzU?DSu0kvB}WiaR0n5|r*{Zxj4uhXa2$@6+Eb zNOVNs9oYabL&TNc6qNn>tu(8w=(HAo-Z;hjlj+U+T~#`MAMOuY^4v5FD$a(W?zw&Y z6bZR5u(t01T!P9{DH@*6=^;m2B)1$NoW4$GlE@NL-U1|OW#xx93HNhoXem3Nmfc%H zbY)a4%;sY4&2=HDansd6-=xx}T%toQKl{acR#1=kh%~p%KN^RnRS+*E;val=cYTXU zLfn$%Z+9O8XWbRu*2=?O(RCYpe(#@9A8RV@o}$vTp5KWw_b>bfI|+fPZ0JZIPAP5J zW$;I~CHs*J5i$R^9RFk_M$`F~x97p4(x{We5~3eveC^WWuWl%t_(ZccAPZ}dq!}@O zgd#tfsH~eu?9ZX>CD26fvvWW}dV;5_AO5CS6VWn@Z=!`d5)pTJ|Lk_7)o#-yjtg2~ zaLbaxi2lt9Geh;@MPd$+wHWBxaqhxm+7G_Z#e7)v2CBbsYIk4bBw4I)XOf#ylkSI{ zvd}_Nv69zcJifzj1W1 zw9~%(zJk>c|FJ8IgX5SuCDL~Ko(hEVy8*%aNjj$_SzQ%u_vy#3n6@wSoX*ky)u#)C zloHPORVM8_%zft@YMuX*ZxBmnKFq`Gr1Ey?Vl-RXp)3kTjt_@WeZF$XSdfn$E|AH{ zVvD+q2@MUjz@(-7=wFl4y#C0g0oIb7)qZVcM!V1(yQ|)hR1XOmQb~TNqZ*`)uPM#2 zawBVDPws2$T(`2Zo*QCw*s722sW*K*iY)BQJ|$Ljy~tQEkJ@a5_4#y>h?Q;0Es)!( zJVYQ5zAew-1TuFr8<4xdgm-6cWoY6i3>j`xb0%?+)MiN@?iq5;sdoKiPKTmIJ?czP z20P@7 zCMv2&Y&gvs@@wvE3T}fmZY1sv?bVxdw z7IuhOXAY!^tec_AL zmNz18`HpvJv}6IRap>-cf$GJ=K8#3&r53*vO6c+0dH-yw1h%0PlD=58njOD9=^YQE*_VFR!DC;v$4=-36di{)OQey?>I)VIup}}$WqXy5STGo_ z4QdBlV$p~OCjDkh)uD|UzAqZY_|bCwySjo~m+Zzn?R~C3(ol;hdbECP$t3oS>7zOp zuZ&~#W)fvju<$VT(t_s{FIBgNo}B*> z9rNISTWlYXE6Bt5MQfl;WgfF2)|#=D7pjyqoK-*vjD;_@bieiF2Z7{=n7iDe@l{lC zR`)=e`u9dLoOCfMo6kMiX0 z4=k*JP?tkIPayuPdG}3_nUVs@QomjxFCI+rRORb^?{&xL?}5O-Q(gVCvjnbAnc15PUTPDjwo@w} zB8*6c87oR?6D7QRp=c6&dw3})t%5& zfqF`<)#w}3p!>mP3;x=nrGD~oy}&NR1^rb`Fk>PhO*x}HK`(*L%k3?&{C?sS39tl1 zh81&n-G~0Vz}ZsN$L&~WpxTYD)kBL1c^bz8oDZvnDwiWM_dIQlEW5n4K_hV15$$43 z)Bfk$5opBCzp>}SR9jCFa@3adJ)d|M8Z%1n|nZ4icAwd7SKl;V@r#?E1Ez#70=^{6iSwb8i8zUhtLdm@yhU zJ3GY-UGIz*8PCBDc=K%JdB5!TRd7_?Op@%S`6ZHpiz+@M)UsMJq`nb1zZZjI&z0@3T2-@GAiatbU>I4E>smEUSw4zNPp{ zCpO~o9$Lz#H1WA>7c*=-V*Hu-^6|RmrK<5tc3q%f5VX-aPbtKd5J2QP;Ph4nD<%r= zBZBQlE}bHMEA5`VMuILo?>BYbkllS>L0(aYf7atsv(?Jbz7U%I+fjnEjH^!ZJH+rNO`6$Cd0pdEV;S9v}q`f=JFX2AQ89C zLAgb#au2OQB~3hB=8vmvMgAov>5#?TL!^-7OuPcsNGw=c*8o&p7EO}M5U+fn#dhvR zaU0(=%<6TiQnau$(!s@&rg@Qr8HFDh)fZ_>HC0XuT+PR4Q{#PblN3RVb`C|F;RzT4D_utkM=TlC zz;RY0ha;?pR|p@*AsOuaL`Q!}J&f$EEMiS~mt189UM97C;qck3IK{gP@<9q@mzk~m z>ID*nfjCiy(%mw_RrmhSnRt6fk1p+)2}}D1<%e_vS~|Dk;sq+v{hL^}#8av3R1xo3 zf%V=!UXsG|wN%z;BzdA}NIKZ(9zq()Y__^x6&8u;cus!unEO>U5ESj9;(qL3c5=&< zXr=7>b8Z>zAOh1CuY6I8|MzBGwkB!7dKUasQ*pas#}zv>%4BN^ep03v%TUfvVi)A~ zmLH}Q0<^Wa9#TYe?_LurVOQx1k4$zB-iV=`VVhRk&?yHshN$}!7R0q(Qk7d3Hw)HG z$a7+r|C2-#l6D123N7m{9r{Z07T{z0hf63-&GiRu^C0tzm_~(RJ!#5mzA|9)4luc% zw&2##)`rE^==U1n#2bq*3WY-YmGQ}QsSkaacuh!&J(MzNIgP1Clhkfm_P})Q^z}7- zqEjqZU4S9RAt6$H#}_B)RqU}Ms*|?h2oGRR=>#VW4UEoM5y6;Yu$t;T2*ND%0QhpL zdK<$w$jv{&TAAA8o?}W-qFIqoLY~`Js7ou@n3g?@ell5#FK(clG9lQj7F9jp5ojD@uZhA}T!sY2$jQPyNSuDrPZfPjZ-Xo~Zu=a&m@Ut%h*(PoAzRYTBBR$z= zBUg`RYb4N=&$W_3YHbkRQCz`|KE2)N2E67HXet~Kxpo{RFFv5O@uxtvynzKv+M zp5Hj+qloOcjK+=p^;%opbTO0i-u%+RXgNfuin5ZMQ*A+2k`>C+TpqAyYKy0O+ue8S z#+wtIYjNf)Azgiu@?UJw9wu&ma(9=7CytFgsd#$XnL&&;!`BObxz~<#sL#X{Iv1OT zO|>~533R-hivjJoonca{mNYZ&zluk0Y6JLDN~{HxY2hgGm;!WdowrV?r>URB8|ZSL znZ&(_F0v-}mmZemLkK)_fV#^9`k>EG#TZq+21+zcb%O%eKzFeO9|XF7(cq*5{vyeD z@Q7v?sM@2Lz~i|%ecE#U^6>fQZ}Oa2)NyoI^0)toOxasX2t(MXU209ZG$_wT^M1cP z8S*=C!E<41sw3)T85f#c8Sl>;(f%&A57~JGZxy&XcqxVrhs1pHfV_c{-ELs5W;vs@ zyg+G>@`UhT`Qq|yuF-11TBL)^9DcEpo-5mY`wOO8H8cF}#=Y|Hlo>yi493~VkO=lC zwxJ#3t_eE^#saOT=9mBTaVdHcP50p8ripFHg$O`9lf+Q(I>b-buCNBKiWvZJk63m9wHsR~yabiVz zGz?0Lp1`c+F_bkn3HWuS1Z}`O<9$n^9X7R;m19eZEe^g-GShSFjZ10S(*NizDQ_vp z_WVXZI%APTl3sqDLD)3Tdvv2tYc(+6nugxBTcpsv$T_c1ZDP#hq4m;P%iViFzPgE* z!B#9(XMQWEt@*j&Cs2%$1JFE@VP#Cyml3|(Q+q8AsSoj3#Z9-@#L+^3t75-=Wg~(5 zldaILiiTfG#nQCJ<`nFYnOnqzf-~0t%%z3lYNGq~=o>SX?i=G6L1cGA`CzAu)sX|e zQgiO1eTF{`BmX&a;Fu&K6wf>s;ao%<>0b~rp^48uEn*Je4TzfWQELkNd}(26enMRi zEc;A*tDHo5j`rqpUl-i3ml4bYX?Pn7@5F%dn2_BA%f*2FE4iPF5zPH~B$4exfDTu^ zPp`apaBcO#LJvi(((S^QZ*l;BKiF?F)hEY5w@>>WW455-$VRq5_YXyis>WA+E!Ua( zz9GZ*xmYmt7Ko(qdvRU=Hr&{;ap?r{o&h!H^3uG~gmox1YL%|1MBydjuITYj4%PUK zyFS{t1$-d=>170kdIZ^`FN|eDhzmJruW>N1@g-tiS zY&Zpapne&X1?9dYl%Jw2bE`}sduFAtF))QFgQZS?HQwInZc-|p#yBEdN4%Y@JlUsqYtO2Okn1^FuF6?&l(thnJk zv+Y=#Jhi264;ZL>b#S_zuw1;-$#4uu4{F~xAvM<-fZ2+ufE;b896j}@+_%&J# z{E2f~{5Yh`x2~FH-zUda?lz`%uLxFrZ}jT#rNZc~h?)#vuQ-!dM(ht6hElR<)KN{9fBRLT_gKL; z5cxX6*+(?|#UbLUPfBE$U-BFwT1{+vED3+}B9wz!qKje^WyKqZ?m3-{x78CK+2 zrtqEilT+}@V?y^ssEBA&i1wvl zhuh9<{b6ua2jqE0oZCj=JgHzKki6z6M|m5He(i;CHeD5T!f&BG58vpQN4$Lu6+V+F zWM(5ILVyh*riWI(E+KA~IO^3U6O5y|VYmk7nV_v=~9m2M=TDJtXo|TYSM-%+`~J+fMyg z+`9Ap>7qG^k|Af_5~Dp%*=Aj?2Y z$^3ZiFc_^bruF0hin%L0%|4gq|;E)h&@l7w{Gp1u~jiu_4O4Ub*fogh}5YJ*m|! zM&-Nu*wMe-NWb200iG;3JZ2*kNd8b(LR{*^MDDoubGbL7T)%v~c=#iKJNgFx?FPiD z(Nfi>iBDLi9GUUQa8`Jmk7_;1cC8Zr3g@?>qjrbi(&sO5eQ1 zVYO^4=F4o!aG2k@&x)B&O_H}%>D-3#NxwsKHnA2XG_RU!|GJDOAh#nt0ILt)NP~v2 z+7c!hZ$%b;(xPkqGuS<%bC9R3_IL}>k}Jg7wek1+qxON!mkQJ%=Juy|kG2}AM12y+ zP{oA24ss;H^Ar>9LY4GARDKojmOk6R_>UeV#SK?CeD?zWUrlrpn*gVWDQbE`l~uZ! z^;Ax1V6d&bwKe@MY*dbZD{M9Y6OJYx?n9Wk>`dBEb|ui>`;=C{ZqGL7AhRE4th2pA zCbs3wd*%LHQ&Ow>I%10jE5vJ}5`28^=w0%*7HEWE5TRSF3;(s9R_7)I2ciew-e$8H^6fKfCVC77?bHPDP0c8+)X}r2@SL zjz-%zy&(F#;KojuR;yCg*Zq+PV%rbz;>eKcSR=FFAMX(CO93UE6{)#Lt7-`H?3t1p zbHG`U?`dFc8i!zNArUSoI+tbt`PLp=U9iNDvqhTGxEwudd8{BZHHiGs6~|HF7tbv{ zeJ0Jf$<$HxI?`EgzrUz$a<3A-PffgtJzC1Gv1x+P2e2m zMMwT9-T44o#4WYTSr328$3*_za*cFO`yQg0g#Q9tXdsYV__ z$@a0r`;6*CsqqJ^bfDMC4<89&E3z(VG0%0Uy*h*UGjyX9 z93ev=7aRbBL_jU{%g$%OOsSAMX7{e{SJrm#b9&ccCWq#Na3yU>OAyMGn@fHh7=dx)a-{6WIh zxKzHlyIUb;|NA&3KM#MW`Ts1mmyqJ|VoUT~44o&P5QlVLcJL@_wtBM@j1Tb9+xHfq zW{9^t8TcBofpNxi3lgm+$)Bj*n^poHsNf9N`kfZ==t;;s5&Ej@}j(31}OjB z$-4FTD!w_XDPXx-weEh`xi|-$--{Cfa@21Ev(TM!a}vUg82`6ENAA5Qn{y3}6;Nu& zY$fRD1N&zuXMyGtCt@mfA2z7nUP5G+4K{#Q|4xlBYXVo-D+~gJc~1=Jo^46ig29P2 z_q#-R9~<%d_`CU~Y}z?nU64zmY52o-8H89H2{BZa3zez71j4#AY$gqpzFTeMt7zXx zUbyYlk6@yM7AN*bj?y*3>Ob0cUMU=Z=SP}<+&{Z)x(f`+BU^?4?)OQP ztINR^5%bzcDihU9@9M(mZvs*z?pSnV_eA6+Ev{e5f$i2qnA7h3DR?aFxWu!{$4dM+<)cTx=a@)t@u_;b^OSo9_x;(CtH#bDW3~+wy@W zVM%qARK&bICp&V$uin}7cGqVT*&f_btC!<2l=I*Jb`;21?k!Oj?xux(=m1YYDz}^V z0PhF`P$tp!G_%@`k-c~Nc@JIfin_#HN7|a~@a+quW3|*KGzTdHcv9G4S9Wp@8B4Ki zM|5~MEuV<+G3LGHGLg7zKU?*~{=U}ZU*)IFUlt~R?NYxIvT}2;s^v=X@x66jS0;?V zJx$5JTZ1^gCXvGd_kHi{H;ojYWl``8P$5~@6d6B^1k&eV9M1L?N7n!tsC&Y zDwqQjQ6bc)exeZ>(^Oe z_S~~6d}8Y={%xl-R;u8qPOk}3Kax{whG-sw{OqW~->(ZcU7q@79pkYmZ`-??t%>DW z{25E(XfJiSM&5#+fW4G|1}{`PxsRNW^5-x;ByUuoZlmLda8n;{_QI25t}LPzq0%uayiwXzQTNdY6QM z3F(D&FbDvXk2d54!az58{Qp}ns>7@9zU<1R3kq)#n{V)NT+BGtPUpe&gq1F zht&9uRXUnt5%rVs!qCzhfAUc3LQHMP??*C(D!@(#9Ox@h`kL!87K!;XMWDGavfDjW zQCv7bu?$6;16QI(d`{xNt)3JD$DZ|acc_xn5@flQmMdQ+;#^HX-%^S(I!eLOcH0bjb)jrG zv$2nY!Dz?^3XH5~CjQ-_YW}-K@;xlabLd>O*)w^-=ZShJRnWBAbvDCg7ZiYAz{|U> zu>!HZ@qd?vkOFyn*B`>&R&0uh@Ei-v3*( zzoI!s)HGhi{m`15O+dH`B9qgri2XiqRalaIr*speT`&y!2O`&YBQ|1u1HZejN{qjk znRg4OHC|$W2!CzxGr;e|9)3fk>xuQiO97_fU340CoqgOQ!{x+2^o0kPPP_PDHB&)N zW_WDQI@=w$c#YI01^CwaC$USHM|f-gpHg3suVP?URBlzZLb-nrT!D`uTDf~iJsQ9a zsfd7z>O(B}oX&;q@6ZX@C2~a9b5v@46z~e;+@ltM-Kp;B6`h+{{(_ksJz(-bw{!5= z%raUIXdcdvHDOc@9o5@?$;JO+?f)o`$Fnpu{tyEbPgTZOQguJ80qqiewG?t+{P3$DXy3cL^-WR&gsqd4L`c3q=WljlzJQ}p) zZ8CwfbDN<80ZZdSIyxv0n>m;}`w8VCRuC264=0l4EO%+?3wMh1JKxZk{%dLJc@@=I zvS5dvMkD74rHJ!-n>VKEjMoF?`Ti;JBA`BRJLHMuNC0lk8d}Ub7TRV1DY-=kD9~c( zUfil=5Ec5rAPYa!4vh$f;+wC%dv`Q@6}EWG6e*dk%v(3*k!Zcq>$7`DBF6l&ZmN`T zi7*lMLqTIH(PL2F)(phyCSlCkNM|6@9d`xw_C%?+M1ql)v)KeD|LQJX=weW+=)tt> zr|rgN)fl$*J-W}YSrusR`Lp?h@2*QAho*kcvz%)Ok8W0ddNXG)^ltRyGHhg#7J23c zacMFoY9XZfN}tQl0x94vu;zMsX5EWl9zxXnbc^Z)FvBXE?Wf=HTJ`+vOAPJt)RSt= zDbD!n%@pI0J4J+V4RoE~8rHH-fq%*~>?dMqrfV$u4r;oh-JQ;Lb6pzI9u5P`d+Vm= z&1YiGFrS@gcGdZjZC-4ES}OQutNnpi2|lL!M@({asF*NOTqwP`gjxDBz1%)=G4h9k z#u$2*i8dE_LxR=`+{?-7H4JSJ+=K242I!EZXBWI<&3B>I_>05dn6T9*VHitz*nC+4UC(5sD2Jf(hOKP_pBG ze#$ThM2U!#-JY!=4@1hAJJF>$D;O8l5g5=H6pW!n1(3a@)wz|YB*_Oz1E!qQJ7C4&MuhSIogkU)X!Mgh-d?k7W^S#e+?XAN%0~R;n$2 z6yWvY7(ysh{7uKr>VYGGqwPPo zm^kag09qN$ivCZNk<;39sr`R$ak!mC{^rgkA@>57hX-c5>QcX`z&^1I^T`HWwemUhZq z|1Tse*WB*SKP$&gLs3@OKUk+j?VJs;?r_cABKLkV7ikqu>(66jy~fiX3S z&3;sd2u@?|R|{i-O<$Xa2*!5JlE4r&51;OEdgK@38}nKbP||wfWLn-SUm^l_=ha(Tc_ubK3iWjXs}v$VOM%X8iHyF|msv-G@NB7em8 zx&TeDEJ@%(NHNq3kN~`0u9Fh~MxK%K$v5D5&F*ICzXXf3R>5c7;K1vDZfQw)rWnXPWId}?`}4Z8 zf5m1ihBnObO&IqWIRj4tlL zRR>Qw{uv&yfX$!wh;;+YMKG4#5Ew|lToyzk4-Sh*%s|m0391tk^j9J)ak%a|O|=Xg ziSTt)@wo-eejTws>+D1^A*RvL|6IKw7F#^=F$CD1l(h`|eqaO0>d%p8bK&NY$f8md zFZ9i~l=wAj)w9F1b$%9ErWIANpWW;D9Zf@uBKO-1S98;!LJyE2_bwE_6gF)Dk;@!- zKg1#;%g@D3g1^ntV-3VMQTN2oxNjli5zU#v4yeF4ov-1SuA~NZj}wQ{L;&8GBTIj+#CM=8EV5%hc{$EvvBD&8bs-Kyia043FpfMQrH9PA76z{%f#_1 zZ#3yQPp_rv*iefNbqCbaFta~JOl7$}C^-IDir=wlvZl9B|L-X!<+LRBg=W?35abxe zD}{U55`2BiSD6Ss>SnHY&ccQl_DA|ZG|sRGv}D^#OS zhkk!nKE6;s)dc)5ob!H^I-QM{Z4f%nrC)ArnTj#nh|KRUhieMX$2IrQEKRuOEL!q|dIf?fu^?CnV-VBf3Lpw-(-r6E|JOsyFZ!*r-Pc zKdku{TIval$zkn{b?xJTW+^-#t>(`AlM9}m2w3N$pi)}VklCA`JxF@yxr?e_31`bz z#62xU?ML|mn`pBrm&m1sS-;c?Px0-6%oo@m*^J}p-4__%O3bOIn46KWqA$RZ8z&6h zl##^lF20Kh@J24A4Zxxialh*zthp%_P&>=B4Es5JPy1;_mU)!fwGtJUCeC^NR`+$t zr$iNQx;eMc@ql3t{-XON)4*b&d$z#r*JCAjrKQpD_MG;)rlAwA4G61nwUNsz%ULsS zcNdxv-XFN%9NNgsp0Br$5Gr{LEVd3TYO6<$JqtLpM=Nxs0OB-*(&0rOuF}afGY6TS z@8u7T{GM5enqfIdPS-`X(JWVP#!oXji)GmneFL-C2cG`;+dGg+l|!tP&@4(kS{Msc0%;Ev?*9GT`;pr+*&*1K!4x0_?u)A}3-z zXjx#bKlh=$wo7zTd3ho#Gw2%ok?!*w?DTbrj4WG6IZa6diUMW6)8GlulBFE=xg7Py zw*w0xOL*Nvz%pm~_q@k+r4+5&Hnjn9`$To{kcE?^*%c#bJ9xt=Vn8p7rxaN{-_mA& zLAxUP5wN2@Lm)Av%m37bIu|D6Au(Y$T&3tJy3f;f_A2UdOC3L!b=rDe;paSu@Zu!m0 z$OV=SB}T;EAeLn4M6C+*A4b&wHkFMAPdlpmzgPAw2dorDA<)a8J$&x$(Hb~+W#^gt zNn=8Jg9fhq#s}3540>aXKs&ZC!RX1}y90qus_eeE2CINWW$&EBMs#wkm*qLhZvev6 zv>@9%UUsg$>2AG>4>^el1SBbx>b9we8N{Q=AKS?)_Ne(Bw8Iw2s4FVb?U_^^k3(P* z#TPgbXjH3hznBJE*$1aumY+#ieh4NvMCm!*!uWaUt*UYD@6bIr4B>0*cYKXVJr3xJgaxg`R-96wOmhxW7?=P;= zayKT6p38g)cOtv=1v|p*pu@g-2}oIQb11`QehG^GQ?8?;bHlz|;#!!2=2I`a0JcYe z>NkhxkwhmkYPVE^x5_{cx#V5$9bCW~zN8+_H%Xvqgfbd++DXjBqK8|)K+!C>RBzcd z9(g~HsZmjF!O*d*X(%7PHAkYMS&dovW}vg2=OI~aOsX>Q2i^tykF4tq00 z(PB+U?S!9AK`QFT$pRnn_HwuobU76ha;*1Uz`*u=LH@Y}fhI zYWF*$=?3Uw#Cqm?+q@8|Obj+=V06bzs=2oK_<=`fJH9E2np!b>0#ZN7GrPZ2MS*t^ zejTeH5vn{t*-&-@Xpn=iv{--S6Tx!ZZFQx}oxeF6>%}0fGnQP1JzDA-$RDL8lDY ziJ&r3q5=CA8nVlg57!P{(`*_t^z%-saqPJE8+aAbxOC|5%}arW0}@Y-0=ciR{7}MP ze$XD57bbN4l-|^Mz4D_eWC@2VccN}N(sP{!^SmsVi4XA|XYgJT&B(DnBUNEIQ+JQW zHY<+j4%P}825qG9CL5IvWj0Wf>Kh_mbGz zOC#Br%{`R(3Jyy}+5_o?p>uGtXPGL`vB);ook(a8JtQK8Yj=Hcv3IfVj4|ULO-GYe z4159o$jKyj4y9_|zfhKMnB1Bo$tTjAk$dXJGQ#J$Vl@O1I%6p2wiDC`1qfK@P@JI6 zOWJXtnkCn2|`-wD9H$OoiSN``;slLc*m z4t_ARS{>>3j9R4CEg-ei|8W-LFLPyBawarq81w?v=^}}U$J7c-@Vw4E)S2L(LrF+p z3RVNt6zW`5w=~zbtZey6p0D=<3fs<4-gii0zzM~uWQ2MPRD(`;4h7jh!AAzVGXh|; z3gypdHCy}o82=P&U`QgGbmf~9-54RqZ2Hvyt zQ43y@);dS|6SC?h?zbDI8(PGZ^x_2#-U9k4onh494o{hs$S3Jl?Ial?#v_T~X;p9w99AZOlh?aR_zCD&L{V1*`9G2jkgB9(>zGnJ>jdq(Yr9GaRzp zIlG0OP5MX7hIU3VbXIZepd)%}WG;qDt zJ93pGe!r}%6`;QwpCE^ZeUFizyD5Hqgc8Ew%)TqEj(Ma=dl(JyZki)~N|WBBVLlUe z7hoN!U|hE@HDIFXqCMBhJZ%LspV214zf&jGEDICMbW!(B*9A_EL%vIQJ7dNVtcOD) z7-cpDsq>4;Z5Nz!tBH()Pyfss(P~vJXE@_kk#Flp%+Q`e|Wu7JvvS0r{iW z55tzCU#s{!Q((S0B0*3;(0?(8ekK+fz)xLGjcpHv+7YoP4l)P2>9en=U{c;+!G5Pt z3vlQ+&@%ts2`zIWbKkC=kW1npBg`2-k{c{!QT^=Wv zN6lxQy;?IVJZlqKF0C-{lE2aRyT4C(y@9JDhNAqag{G(`alZ}5CqD!-)esH36 zDfT#ZjvUu>am3#IcYC(y`xmCd0N#;YNQ!1?Pdq!-O==qQ?KHo@h!;UmSYZPG+E4GO zCGVclwVPbv5|25zzNYTu;&NWJnL6@TG$H}5%{FNWO3JF_B@ts!xcDw6T<>1Xx6Zat zX~~Ybz@a#p$?~PS)pJNrAw)Dq%MxOdA2q;pkcnjlRW+1uV!*YFS>S>~Bqi2b-rGqI zREK50`Io4$EoB(CpKsuQxDOgjAuT|6A&^fH>cS=m<=UXsVB*)Z%B|_kB|z@c&Kh*u z$TIrN!{-tZ)MK%nS$R$*H9%$qH-2Fk>f`Z(wS-XZj@2Dqewt+i7Eg!PF*V^KtAtVm=|g)wktqUN68dZ4cH(tzZZ=jbsx$Z~;uB|HT= ziw#E|gX;xLws>s@Wu#A$kS#7WsM`%oK`2}zkuj{38#2`2kyqwTIKAXfCiNA& zM);bVzy*&d7-SYTPjnGb1ohRo3ob3lbM`m_O<}Dg{a$;lqLOU8b@t%|yvl(4oj8FV zG^{Xjm!i33h?v~(hVZ6-O;Ay#lb%D-F+ZGT8Ad_Vlq8>{=h^g3*^%>$)Pe=I)pP*Tm#74aDr z$!9TD7%^3rGEhxyW`Ft#45C~|AhmtI!?5XK0yEcWt6&G1@soea>SI@y0MXQ4z7x8T zwC2t7410Np4#ViCKuRr)G5`90X#dE;gGeI&WoUvnBU@T{V_q-X!}GVxWk-O`J-92_ z@)^lJ7L0;@vzNb%x%XfP{H+=KHBF~HJakxF67lQ85_}uBdjuw|6dpc7Ol+^FtYT?P zAg0gC24AEAMkOJHi!65Bh%D*MA2t_P~FQ;JSawP=dgl z5cR9TT(vPPR&8-YjDM%TMh;BW4bD;(cJo;(_=;4p;gG<<(d_)6RQW2o#?g@~yPm*l z>aCA@KFNFmL8UL<8&GrTMwSNpFU>~HzOjaiFnhCL#~C{_J!M^6@d!ugIOy1kt0ZKL zUT*K)fGyBx3f!soYshqE-E$6fUUK3IX>QO;Ryu|i-}^QwOwV)B*oGGk zHwdi!;bo#4GZyHC4)ilFwX7@AlxVg69$QWPfcKiT2e4j?47Sc1@{I`jQzcbSTewEH zx~`%T%`+-oCgoG-kD>?r$Sf~1ouD3)2pz2WTq4#;7a*H#xD>GD#_UU9A8ob+T=0a0 znd^{V_Ulgjs8D%HVZ&hpGijfqDoh=sfsXb+IXp6(>;K(JZdca*|9blRcqaG%e|P0L z6;Twz$;nO8oI;{ul8PxeokGScBow)cHiqhya2&a7q-HpdZj_>8Znjeh8@627eA(5$!^IHMl+oj7IVs z>#J-{tq>Tt?@*O1XzQX0GnZKWbnY+b{Bko_5yj9F9R;Ebv?I#62o36fCkH|EI%2hc;JHsEp)W~CC|mc^A;Gm<2}~^x5Gr;_;F4pE**B+L zDPbpY2ZLIIQg_@XL-<*!*Fczm@O1u_H`Oe1HFmqvolivhw~HU|z%?oPSDcbDdn|mLsCs#qW?)7JAo^i*uo^Ere@NyU!LWY zM}Lok3lG0Lf%EKQr8FdM{vIBf82qF*VYa$xv9l&gyE81GTx4xHJ@&5x>9KG8NNkn> zLp6)(z}js94%~;)jnNm}!(E?TIZ{X+O%^`wR%lEaDO&szY+Dj~Q8K(svYyI=^d)Su z@yAut{f&?pe!O?Dbs*xwS#QeZV}g)(YL_V+Oo0q2E<&zzK+mvkP_wXqb!w zHv#i2+_rTG0%RMR>uz^X-wW|ZkuU!hBD`lIV{1Znqgv;xRK8ynUUyG?+Nmr}!|>ks zW~A*-Qqzlna|Q&FcgwUV4m!P^V|B8s)d&|;gI{}PcvAWTF0B_V|9gYA92Hh*&}6Pr zl=M+MQ=)HwGish++)N-e59D1bpjMvacNEngI>OO*0CT3Rl<)aYc{gDwq2EbY9J^lRjtx9PLtpM+qJ zkVctZbD?cl`t~c7ru=?g>@E~O4$#DwVzkM|@ML%v#=YHnGgW=SMw{BWdjP1lEpIV^OF^q01A=%?e5=;*0o!hImLiarP3Pi zUb|Pbd5ypcVKlS_G8$g&k|avLQ1=DQY}TBlD#pF^Qi5Z_ZMzWoO;*g(hR=Fc$-0Bc z#oy{1W&nUcq-stbl@}{Ct!M-xPdH)zP4GDiN6oZRXyk9;q{x%1+OA>I$6k!+rtgy6 zs;CW2w>ClT!)I9-yDf)6{}qtqvl+I$pM`geejP1M2tmy)yagHlRHJI_xGW5JO>5O( zEXYJms6aN~%ZSSK=|}+mk@f+C7>+q(s8LGJ=XIbJNb~j)rlG4F5^1h3`(k1x!M(O8<;++HVH@H1&m^$^M-W=bkYR4~6{_;6dj=xjaRT z6thJWTo+n~fd1k9j!iM8CF0Y@T=Zs$*x@~EQ zpBrc?ndf7v2_ad9vh{pu*UVWiq#cg6qX)dQ&*y!21<5-(|KjZyAssxX&)S=SMishMqji}KnE z6X9Avx)l0oHU*;TWKg-X22P?@2_ES&+V}-G(SZ>BZBEEDqGnb_ouSq=;3!Qqz;djB zDzR+iDyr8-%hRyTH8^t&loG5OD0Z!>OAn@Dl9sR6Y)c*+_cc(om(j=T00EV{a*ZnW zQ%v(A%8+Qw)N#Pw)6m-*n$6Q#YgQ2{kGSbkJ({LltLraEN%T=xu)Q2i_Mf1|^SNcv zZ>KR=vZG{6E*=!Z_=UkuKQB>|W;P{7&QI2;Nb>k{q}S#Tk58-nMz)|$a-#`e!y;C3 zL++mG*1Ol})75X-4rYS&;+y!Gpqs+l(I>yH*Cn-z!lgZ5IgToqmaFvy+EpEj(vgD4 z@K^MlOyj)0&N~7wYkJ|T#O2A*da+Funy`qffr8Kx=s8NBBCpEc@!*H#09uByQ(!|!)=sz%m|`CSKUTC+Fvp<-D0zb4Sj zbJ1S7JvP%mXEf)3E$GYQs;W3Bik0-)3jA5`*9!#LZ%GBzIhn3BR#z~!U!80b@g%(V z^JWte}sEBCOWz-IR4 zFz5jYc9_h|X2p{u9RRHDWtKwD#w!pB7poc%TMUX$+jFWvOzubl5T~SooMJ5kcM+ov zF**~XqUD7ycEu0k&&w63y(!wvPdYhs7NJ*lokr#3I6vFT&Yq7SrH$LhDj9XszC@oC zAJzcM>NGO5lm+WPW)571*o?1h?sz~q8#h?6TA(`TE4@PJPBtyWkz@-4A@k%?on%XTaJ3nb=gkK2mQkz+B- zU2*j2-nRbyhD4Au19_yl-I(`8jvA)T&+{7u`bld^g7tJ4?i*K`|dw^?1Tj z47=FeY|+9n;x#x{EdbHSTAsB3nJWWw+yretV11ebRodO9{1y%O#IyX81$Lq+zD}>< zOA19yBE4jhegrcJN|nJM_~(OFHqgySveK`bu`X0Aec`nxVM(0V9;gO@X`(!FU4~Xi zIT%x%CLG&Ds%x%>y35n!YGLN|J3BV#Op8abW@{@ipWdFd2KfAqBiR?q%+`T!{8fGf z3Sjr~$-~W|Z-(oQdE@GpmqCt4gThj}gXHec*=v{@o*EX3?=H!b-aoXmF!PEV3%(a1 z9J+*Ih%a6i>m+qAb|82>+*pUR=}XtX=`Btoi7`)+m^(ulYJ%`|kFq#qbZ5!J*OQKt zSOia>QtXtw2jZb*O76&j%E!74!NTJ0#9S{14n+TvR5yBhxvyNODuHIKhl;{X+l-DK z-x)(B*4c2ZWTmmK$+~gg+;;^Sp0!7<583N!y-=`^68Db1XKn!S;v=e=KK+LXjQQZ$ zrgc{DXa4LJLi8~=@KFKOVz6j?WNkH>DKex!esK8H_v1pFH^Ud|5_VEm7`I|}!>+Hl zhU9tSvzi-5FW*+nOJS(ZCtn&qQ)!F8lKfJHKw{qv=sALftdyDM^Ldjwq3kJ_rIyC#=)`>+#3h#y zQr^Vx|G}=$MdmLMf}yPV=iD!!BwwRBKbI^VTAssh{cTw^>aBJRHd5Cod@`eN|-4 zn}5o~M#r0Wzpbb>{_P?>bjn^vS+4O9+uLca!?WHutO8qt{{5byCx~nv)?wC6C`#+x z9-?M&&w=M>|HIaelTo6mv2(EDp2*uEhD*xJ%Wt@sYVCH=tL0UhJ7n4!PD>>Hh5~*G zND;hl5oi`uA4r!Vof)iggiJt7$mhx|)=fMy*~qu_8zig;>#FFqy$(fYLh}&%G35>5 zD$?#A?vHxm38~4DsK57OL!k|jw#b*qJM@ooT9tny#?WQs>^Tt7m)bu#x;bb0W5nVK z!$VcWv8lm~Hj|s+lle)rs4wjb7pNcHh+JiHXO6EHwUy*)2`)4+LH#DE4W@|m$?y&g ze$ZJRp$;1WXX5?0qUP+aoO{3B|1p`nJYqeShBeJnIUs?5fLMztHvK#GZo_un3G1M= zU(@sh@LawFlo#)A_gV5TAK{>aSct8~2mW;y77c-1ioC5pb7CI_VLKu^q6hfpZ+OOR zZeaCMb9MXO?JRCjLTN8jLwB!|1AFnUV^Iv&HX{LtVPTBde|E(PeJ{M!UL zDzX+wJd(L>1{685F@`;<#&$|Uh}+px(Ctm!{x^!EMVkG zO9^xGfNPr>2^EZs7|q#|{~KZ6;?wdM%qUh~4Dcz*0JmqfBQ~kB#6OJL z7rYZk3@9G};FKkKfUq9;vD@Ix15=h96P-1krK8yL>&q-#$Iw%ZLnh@W97t6HkoqbsvG>V zIIlGMy65XT5e+kM1`%>2@-#BAI^F4F0}626-=77YI}MjTewP~T{W1XTP{ONm8KY`$ zDDt0!S9D3aXv%pc&&n&@7oD=-6glD*J|P~|#-%hhJqqx>5- zqg0{G-D|0%7s)04JHX^45QCpvs{wwT$Q*kUGhvo=jb-q_ZB!y}+p`*b1S}DL6dSm6 zmEz^6uJ}a0O@s7u^nT)8@RK3vjW$d=?#L7~5Ja6my&Vi$KkM`aMLrokl`hZdXU*M2 zZ?rRoZYSH7ShM&Ukk2S^$bAk;Q_)3z|GT5dncS51(6U+$@G(Tj+bDGGG{m&vgtT%$ zYX2UIaaM}375c5j*-+dtgGH}dRR{K$`ohFqBi-AG!5@g96$QXX$WQon@e^?hR+G8L zB-O;0={MN37hag>I}ASDJ3KDvtxZDZgQd)^5DmS{c7eMlBi`~ z*vqjp8wF-sEF&m@2>eL9Bg5EWpnhjRSLTraITe{YI$owww<@M{qjhek6JbCfj^l5R zo@0Ox{sA73x%OZGmXG5Sg7=1Hwir+ddlD2Ek&?R>XYN&_=+HFd!aowrS>LMhH`)=d z$#915m%Qp=8L0E_D@mU_LkVE=Ne6h5^p}U{sc%Z5J^~qhe!`z^j+6B!eG%_r3`#MX z*#mi=JI*K$fT+k(qRiA*CCt5#`8IwWMSj1Y^YfED?VLj)Z%<3cF*VneLHUuegzToY z)CAFiW`1_B9I?g}>OXIWBN>=6tcqA^l_Cx9|&j3uiY!Wm7$hxKVhb8jw!Dcc#YPoIbsW z_Br0vy(9t0;Gd3sGDK54G&ovnn^!2>!xpWAf%=Fo9Janb9|=|x`zr1SBn|8T~XGc zoLRORF4i&w%ETd1IIt%_1omQ;U>#SKd#rmPMP68(GBFIp)iL;a6@A!GF+xiBC- zUA0f3X?20IP`~{3i$ieCO403GWfEzr%>HHz{Az$5@*4rj%3mGqk9u&)NR^fyq}a%h z`p3a76AA+0_6Xi@A)Shl^;tPtpN(ABdA)R~YB}uA$w;4Ye>yJ^tSQZ#rU#8H4Pn@N zTh`~A`4xuoOLv@8TwIWd3kJ3J+}bYd&+AA zd<>S_kgdrP*-c=av|-lw>=YFbZdKb+?a7Jm!;HCj2AN$}gmC_|55iy)m}^<3GNd*+ zqET`CkO&wUQ#A^$rhm!R?IQeKX^2C$zq_AX-{r_%BY34O&Bi2+VexlpE3y=2dq6TM8+l){nay*<5DbzL0WAr;0X@7Ud6=|8)jD^dvWH`zVletFh8OveJzNkDd zd9eq%3#cVxcZ5BLm}iUs=w;46^1*MW^2&dChiWypRQP4P7# zXysXm?ul+$u`}sIgm=kw`Kf#Mam%(%OJL+*d?%;twn>jM_8$%~B9aw z_5b=4Dlf(42FpP0Gn=rns4k-SFDh;nvHHuDutR@TPEn*t1vyh0mAKL6}v zTry=Rryhda{qR+%%g9$-EE8IS@_GyYh_~#C$%w!@Qx0mgpW>3amzD~4eE(}U)bk8% zeSg`ftgbgXuE6hJE$CxMPzD?BY@6x_eqVzAwj-CdzP;c2Ky~-+`)@p#bUGfjSK|_+ zq6Uu?|M{%alY-hNTi0->dD8k7qxZ0u$YNYle5WE0+jPyK(l8Z%rNRg{Gx&;E&hN;7 z#{P-EKYE1;zAxjei4@+D{}HJ+5x*5fK6#K9k>I>T8B2TH|ERrSovqPZ1;5Z)%Qsf_ z+g@dRP z(ITGw1%n_n@JIzeEew4P_v$1nf4e6KY1ez@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBU=cS%G+RCwC$nQyNp$5FW#34d_6(o?8 zCD;){ya8cwY>W_m6(qn;j7?A^;>8>I91wf&Ju}l?RlGQR&fc?L2=8+r>FUl*cUN~; zKVAP0+~E#)xWgUpaECkG;SP7W!yWE$hhH?vYwz99beML93?-LNOhN|uBG4d0sM|(1 zq0WVyA=phYR4^RdRhBK75!?eQgQ*tAW@I{b2R93_L2ZHwECbY>*(%rTg4N2{V5*7E zM&FWFf^}7BP*q`c`Up&nA%d*IJR9B=wm{X8Sm_Gsg{cYK05!qfiKgVu0I5(EFOIqh z)sl5_wxuI2Nrx^;+a(em$-tkfq&BWU8x#xbPN)b{6b2LxWFCZoXyG~v14k!g^8yx> zNpXe5Aq5G?w~nMz73$sz71oi6CsLF)DUPspM`)BXK?FGxcFO06L3YOj9*%_+fl=61 zp?k6sbPud3>mgVr=;9RJke=w~!4O3VGLsvJfit5VhLKaFO@?-%*3L8)`a^I@dhIkB zpg~b%TcNgKgkU+aDLM3DTRXK?T5-|`Llu#M?sjA*X3FNt)|G5f#E?nYJ|Ap{m8m=X zqVyhUaikcv3Z*2rGfEZuBurB!MA_0=)=rb8^&mZXm@r#HPAJLsmgG7BNFYlod3pv? zL@wTM|EX%K>P4T^v#S2D<8HU#o=-&1GN0^kW?xv3nO*cfwVnFjp69mQr^(WjF&JZD zW{Aj9E13Z2Z)S#>p?Vw=ab(Qt{nY=2S}VZ0y_AB85E1A3ZjZe!%goMWPI8Y-IevHd zvm8}D_i^|0`cLh*pHDJQ{Y3;()x6#L_M%mlF~(WwlR_ebQVL^?FIZPKB|I>*^TJLF zILSM;nc0Pm)25zO>i>n?Yx;kC01@O7O}?Pf+mnk3nMo2&={DQ87JZOoH%+?G{d`-@MpowFVaWda}0RFvxk$;3ja z1hFfuhrkrl6iuf(+>D@2jlM1HtstsAyb0PaP%5HAFNv%UqKp(;IJQ$H2HPsw-l#*! zp0E?v4GII7Bv!+AL2g2+M&F!L64dY|nP>QHg;E8zq;5f<6j=urh0zqYftw(1?3%L; z!P?RFYBZ2ATn2bRt!PnX6PkfaU}|JfrY2}A>cI}dYC&hE!~)gW+_*8ApK+R1hIeFJ zkwd3+K?=+wXayO`x+R1lo3M;dh!HqygJm<&iX!;6pjXDtGN{Fvw6Q&O>{(-tfhm|m z-2$PIYa-LkX3nHZoeHH2vvqnHkc<`j7-%(ET$!@aMbOPza?~#8TL4VBJ~W zkpkO)1!b;`R1VvqJgZ0tsGva%M<(NX3owTfs8k-_ILincf|trzJ1PYb7>Qng7R;JN zOL=C9qk* zlfF7p65A_L2AR%oHVTsxIZ$tu2HQHAnozoMjUXOeS)efy5=>TEha-Sa6C*mhDyqq1 zPU%8#$vzb|AwBUa*+x>>*mjM*4nBX_DT^UgOgp|Ru{(yVN)VFNsUeY6NtBfj@4b9B zWZ(R|2MEI9vw=RVlmKx@Y@*g+^gJF`OFWgW33fz+t&1J?>?ZU!!wm%N?{CPvS2Amj>N38To39bWD!IwqDk}> zt;(oQTb0}inVMw#!v=% zv@Kdu72{_QHyF-3252Fc0GXJY;0V@)$mJr8ebSGA_?_nwCR!%FC!-I18)yhaJ1Wku z2J}u3xT=9j;2mNUo~035@Ggu@mhO)>(iniNUHJQIGc}A|Q?^*Id*>7Ag6*C6fA8h9 zKev_~7SI~t$)OpNLEZ>Vh8LL9@fEg7X;q1~A{MwTgcur7o6+}z_#ii-0XF0!n5q_R zKwK-k;`EV(3N?(n2Np-K2J>Oy(&#ZL;*2(t5tI}(ptNU=+yW^H6^c}HbQmy9nNb!W zG)-j&n=c+078@akbiqvd_`5Hjlav#EUwP{%$6Q~8l#PFWgT-Sx8C{*2Wv0}KmOw{;qLet$7+)B zg>f_|+;4EBb zmLETg2{My!eg8gYLWm%AN-80pj0v){)<9PUORNd|qU7T2o1y(M=xl@reI(ojS(O_q zNWg$ez@B@YS$*^E`+W7!KH=3rzkg9hiV)^2qZIh?^%pOyJWnd2N^%UKAN%&LBqkMV zWh{@gx6*`ZSDu>s0{r03FEPC15o{fFGFlX_YS0r*jA^e7NqPoqgFY9S6*Vj1h9~T< z9Iwf?z|K0`(4%+Qob8b3v^FQB?S-5gufF|nXI6ap-RD_uHa_~pm(SPb%WvK1mA8M& zSKfKRxBlwES;o?hv0av|ECrpQN)i_5BFmCSEZap+f4goF5!|emJf85eyK*jBMFg=KROJW1|I+!i+?`sI!DAaxYefo(2Zz;Zt)3&!-sKqS znVpNRYfoZHUU}y~&)4B!?!8ElV7oEufC2={Y?Wn6A{ADrCj^ERp(N0!LU?lJ!U3U( zFq<4HS;14!G_MuH>iPPZ8L|`Bp2RaaG)ch~)aF14g-3WV~IdJY9>gzkQ#cmEy^_{^rvQx@IP?zH^^v z%j4SKay^hoM$qG^+-5TohW7!zpIKyFI4j_vzWow1pzSIx zjvi`VK!3K85*!Xe3n5$x68ZYOKTX#_#()4vsRDRX_l%3J-`pEwE;cO^|AAF4!EjEhr3% zR2s*qjcu?9cpjs62xlEI)k>Ej28by#6;L4-Bc+l#uu|CstPMu*$OQ9Txj8rnXs-0;)Fvzo z%;i|9*ba(m;3LrEPn_fdwyM~qxHu6LMU`?Dlv3FjXgzQPsuH2pqg7+LQQFb7Xz8qy zENd{U5j7}!{C#nfK}lge@(7`ZBOLyFV?RGC?vCzg0nbD?p^gFB*?K2Du_}nC zBJd??MOYpNOKwb)vK<1qiR{6!!u*V~g|lWJ@7}|tT^&>0B_Ud4+nj!r?5bk>!Fnx- z3+iyVsVreksSr-Ffy{GHL#(Wfz4oA={E`Lw8@YSl0s9sagYq| vaECkG;SP7W!yWE$hdbQi4tKc2FCP8}ZD!WU={^$r00000NkvXXu0mjf%#s?j literal 0 HcmV?d00001 diff --git a/textures/atm_col.png b/textures/atm_col.png new file mode 100644 index 0000000000000000000000000000000000000000..d177bbdb573c1258fb83dcbfcbd3f0de98f589e1 GIT binary patch literal 5819 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 FV1m!w9tZ#c literal 0 HcmV?d00001 diff --git a/textures/atm_col.png.old b/textures/atm_col.png.old new file mode 100644 index 0000000000000000000000000000000000000000..a1715f717686b0a74d7f9b4ed47ee7babcdd8154 GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE(~uOUNcC(xUD|{D8gCb z5n0T@z%2~Ij105pNB{-dOFVsD*&px-id)NWl!!XZz`(@h>EaktaqI1@jeds>1ls;j z$>A`Zz&cGYc4owH1`fj~oD-}nm%g&z5IWa5^p$XhLkIhcBTqWjJ6c*MBsk@8%*fg5 zdudr`Zq9SRO);Tfmwx}bf3&=GO6pC09f@R}Ti>Om_pfCye|zMZbJ9=6^To>iFTVfw z)&IMV@jxo;fmKXTvSeesZi(01#YqJB>1u}_2=5I{o&51mJ%g{W)qCNVd4A8AZx&=o zu#&E1J{Tc1#lVU=q4cV?B-85E_f86Y(ETmV&nRESkgQ`Q#$;y^e}mJ@n#bn%`mkl$ z3@ri;H=c(vc}{8x=H61cY|X3Ujea-Ycpur7r{fZ6wQl9&HJXcg4;1axshPfP<>hnP ztOhcCdp)YQGUU8|6moQH_sI=@@|zeMiuZj!rsuhP<>RRgG39>CKW8&Undt8=*~4() z;JSh}w<8zlGctcWC}GX~f$hQZDAOG~cInN{pa1U4hK%)UbJ-g_{{6jT#$xf@<8sK^ z*@_E-xBXw#kp6Amv2Edt^YbS%HOy}Red(u-_mvg5taHxAF|7zXkYW>_eErq$B}}In zOGOV@hAS_TS>VgK+stX5mcop+8@36&nB~gg$D7~D&#>pfrB430W)eJo&fyJ4(dx&1 zrfi+U%%s!)a!$f^=Z15fLJUj}3>*xM3Jfd_3<3;HXdEln174^9@h`ACyP(W_`T+(Y N@O1TaS?83{1OW0B{Z{}0 literal 0 HcmV?d00001 diff --git a/textures/atm_uv.png b/textures/atm_uv.png new file mode 100644 index 0000000000000000000000000000000000000000..80c1c8be56c31fcc4816e424d47ddbe3044de205 GIT binary patch literal 2875 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 KT5mM&Kl~3B*--fa literal 0 HcmV?d00001 diff --git a/textures/card_reader_col.png b/textures/card_reader_col.png new file mode 100644 index 0000000000000000000000000000000000000000..f969b88f2f0b7ce77ca2223acc5931310f233cb5 GIT binary patch literal 4314 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 IM6N<$g3!GnO8@`> literal 0 HcmV?d00001 diff --git a/textures/card_reader_uv.png b/textures/card_reader_uv.png new file mode 100644 index 0000000000000000000000000000000000000000..8576560c512b9e762d24f012da279a2adfe2a947 GIT binary patch literal 1045 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

8mEU9Pe|iWzzt{M;pkorhBVHx0j4&c zVneihP(PlurCJOGf-yq|hOZR>P*5~RN1AwCr=){do}H!zCbLpEsz{r%6xdiU0V_7v zIx>R=JLR%)_YXlN<7&d3b2>1t3#+);IzxDnM&$d>AIw#S0JTX7iRU3_(F|u#%=tw< zbmC%)U{#X`gA4WEiL$}$zjTxxEGc8>Jg_#fH+vc5x=@+86sGD?3W22{xb=n>4Ldg~ zZ*n6yaP|^QAc3d1bvW-ob0aq!oRHRG%}v%paAB##G~+TM;cAQ8y`>_&-fV$ieY`!3 zx!90>n*Oadpcy>RmT`y3sdElP2oD@A>?IhbF$5HnOg3i- z$GwZ=y+tTwdV{;;JNd<0QLIqOpS$wFTf)lm>l$dCC?p0bE_N22%{3REI-aqzf$B!* zqEJv!LM47r0y#Y7%3|5hG}-*nP_y1XKz>cdaDsef~_h$G3Fm9W7v6Bc?XdA3o`DI-|zre%pI!^ zDroYmVzc!7-9QhfJSE45)VXfdT$+(5q6(48YC>KLvqxAeBv$HJCV>nW(u*U+JrU7V zAwpgej?kZQQ{H~=83UD%2IO@1J9y9v0!*lc4 z_d-gz77iRj4k>SM1lW!U#JDKzF$gusW9f#7&TFxcXNI$HDl_v5q;a&-S+PpX@YsQK zA9(A7pvKIX5^|1<9R}n&e}}eqALP3`1jumAq~N5C>Mv7Vc>i$Td-jbw2cN4+VtcR- zqq3TlywiqC#WaFFL4R{NU;KL)!aF<4RxFkEkU|e6U5cjA2*MAn3OFU#9gv&S&?*;7 zJCzT=-}1lCMs1G1>?FSX;NJB%j~*~-qqpca3Na#`XX4gfMk%AnCa1zQS>3qCIQQa? zzt@qn3#h%R)^ko4%v4Hepf^d0QT!gMUkws^XahBYMtKTZXX$enPB|(DP6d`!d*O!l zo#;-wEk~yXw*wp|N96%VCmV0w8?GJBD#^8THQbDVi=$k|+#B8V<@&MfZNPc1A75Gv z$B0gAa&)ov3&)$%fCA;@;_ae@wSwg2G`bQ;IL0;Tx^!ctcQjsCDFfZ8BMDO(4mwoV z;Vl1;KfZ_<%tFk<%Ei8hH#i!09qL``U@tZ_%>~z%!V<;4L<1o@G)2+u_M{#Z68-a` zXChNnBaL;%-B1IImAP|@wdZ~p4Q!?^{~E;V-II(0YYHbZ%H+wBjMoKdM!J=|qdk8( zHz5&#!EEEd|EGUsU9bRmp!BF{qaUC1sXysNlEyR%uecL}x;IQzyy!w9PNHmh$D zgUG`BeJcsa8>|*u>$vA49(8awD)U{FT{WxBsc!yjMn7NZZGB7}19gVEW6 zhA|I55xBbi`07Wr2qMLlDSywUcra$KF$KBUVU?DgMB680p7Zg09sC-B-}jah?}3Fl zb{0mkLv2=Ao8^8b&+zU8nXEe4jAPk;lxe^rf<~2EfZTqe2TS37{sD%KlLoh~uJPl0 z=Lm_d;03dPkVu3^s*{QCg}D=>8Fo>0bM?Unnyk5J-TWL+nlgA_)12A?W3;;&kADW< zGY`H5bC-1Me4b7o{NrCfm}}uy@^FBHo|2>U?2XU$7pmXR1H@znmxs^~BEO!O=E#}I zUDp*j(|VVn4Y(JS2&^EQGjZ~lu5-$IOC+8>#G$wl&NN?cB>9Sh#&u!MO>vw^*lV(H zFy|o~Ad?d|h*F(gEJi3s-5N$?rA*d8y#&#Rj7yAeZxI@IAGk4`w)?@6)x9ZRtm*yv zkN=_L-~RW+UI(9F*SqQ4KmYST7egYqQg$}}>wo!g$TKA$WClQsz`VcmmM1I*#Tn2J zdJb2;XqfjOh;~uuUF;xJZJ4j*I8$=R^tb=O>=2eKCCMw3etDtkb$%FYP{bEQKN$0* z2k}geidg2-+DsBkYYcoWFxZkWpqx?8IddXp?12EI3%wHrT6nNZ^bItBcH7hrNUb|N zz!Ref(PCACdJHDehqlS{1>rEzV8t>TKPf4NB+=$RR zdt!`VG@lsVWhe$+m~-}h4W1YGN&Nct3-^5s4aQr34j(7jXFQ)FagI7g_ud;(2-Ynbccx(2EsgHQ^A&fVN)V?IZn z{}L4{=^7<)XA%8{^M=rnH_1(>Umtvb|GVzLf^F_wfER*i5raLfLng&&fxmr;_W!Bs z3EFjc{GWgQSN!`Qe^VGMkNB-LHiH{=`>o-B{;&V>#s{xOw_p~v%ruY0n?w>G?83VX zzWInr@Dg82lkRhv@wWGRX(wz_{D>3wW<=LRD?aD2+L%+GX_ixK=?tuncWZ(BzF*!s zZ{&IxochxOkkSNL#M=~k;ixhl5vwGtW~0p0h1~kHn(BxL*gKts^-M9&kxQ;#7W+8| zd8mTB=NF&r7aN48k`DM2w6QeKY;Tf_8Ix-s0gTB5UYez&>Rk{n-7{YEhVS>wWZyck z?qkl0>$+Ne}=~Hy)nl1I?I%B!8k8z1Fq}B_nzecDcSk?_qq7;jNf#h zo`0Ut`P?f8h7dW&SZ%}T{2uKw+eq(LMjqrd0iju}Uh=J}7x9$lbFTM#K4;?RpXWZQ zBqRL_^(JTUz2Ez9{)DP>gy}t?69CRRxW>SK8|y#Mc7aGdN|X8LVTOAyT;t;LSfAyQ z>^@Zuf8Y7JPg(DEJ8G($vnjvkV#b31Z~$8i29N~J8u6e1>7V}P`2!e7F3BRl%j1FBs$i++LUcbK&85I^93$z+i=XRbg*@T@3@S?^pxcx=GmovTvc=V7_= z=%5Q9@nW#}J1ID+dUjTpYjet`Y5v|=hL$|4wt6kfu9xzmGnw%r`}4#7JQ#S-rv5&R z&x4tjB+Ke|oMbf@7ViT0T*qg$dK7?RPw?jRf^Sw6rTFal(?Xe9@AYo2;rsjh{@mxY z?#*)g=tX-b36?4DJu~{Ajp2ED3qT7UwZeJUwnqV{3Qr2TpXXP78dEd7aq46W6@~gN zXES5+X&64#X*FN?bHJu28;bt3K9Kj9tE0?g`{j!}+J z?Y)P4EoNsvnEkAGLwz>d=ehs$^KM$dwPWS$X=eA<#b#HOkc$1Me9u&}sygHQ(0kwe zprA)*-Ux!-)|&6%sVCywp7ILsuKhgpu3-6iq?N{14SHGlS=Sr+-CAf-@OO1{-H5gJ z3ru`23M0-rlG>Z|VA4{kD}P?Rdrr=6mEc-ZM?%*JfI=vra#i}HqTl_xF5;mTFMdzz z7V;eJZfwY8^4w>-_7HvMd0DxbKsIYhNMY};;Cfhk@9)C$yc~Q0T(kG~av$Co(u0_C zJ!~dY@zH|*E~5H*TlUvNy#lf~eI^>_oNqb(n#~{{f*OVM{xaNDmEQmRd7p>>S&&yH zyVk;6b2N9;j3Y^LRlPf-86(;`PULky`YaFgVl9rBiSkn4Ah(_yXw(UeiFXz$9)#Vk~WZ>y{W^q+x(?%f)Nh$2JGgRgqN?}qDKD&AA9k~|9)wRH=q|Bq= z!}71rGtFQ%lClqH9<8MPg+J&HXmP4HGlkmxRAvwzl=h?uNg7?s9@u-~x-Q;SH7Ox; z%TYzcgkr~>Q&wV@txpBi+TZWM&kN27toZ-#MMBZippuaP|IbTRStJRaMD$=INraqG zG*@pO@P`u3MgQl%xwI1``#hl4r(|y)SbO8TF04rNopE4?2qUc8&*$)mu~ z;Bi)qV`~j_-f!hfk3EH5bZe%gQ_wB0000O=h literal 0 HcmV?d00001 diff --git a/textures/credit_card.png b/textures/credit_card.png new file mode 100644 index 0000000000000000000000000000000000000000..823aac808e659d2c943ccf6bb6645eb5278ae0db GIT binary patch literal 4162 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 literal 0 HcmV?d00001 diff --git a/textures/receipt.png b/textures/receipt.png new file mode 100644 index 0000000000000000000000000000000000000000..19773763d51a42bd5de43f72534d4b8573e51974 GIT binary patch literal 850 zcmV-Y1FigtP)9p8OtsZCkUpmH58roEIL(&fb^p{p@|d&-0w;9G$MkBaukZ z;fq@Ai|z~#`cW>c!j2$F0A~u|Qdbw5&1TZ;^`~z5o+~{)>IHDxKCemuQUfG_Uv?vv zB8$aB27{r>cQF==#pu!06n)&>6azpjK91|ohr^UxUFE|CGD}NzE)-(oWi%R@DNjc| z02t>AfD}OqKmwpUBO_$9*?x-*jT)}=`F!+ZVL{sfTFn%3ou&au4QRnW6bh7GUZ#6v zW7-AqI-4cG-_K%yrB65e_;UlG(VNEkcDtRf_4U!$Vv#==crY=+Ojr%TzYF6M!0q8- z@_0NHkH;y$zFzknMGKVoPiJQ-bXYH-h_YI(bZcmcZveI8#ub1@fArtfom&7;W@e7- zejxz_gTdoaS2+$hz>LwubXuDLa0AHKE0Z4N|JVEbtIl&eoniwpnM`#72;&0ETwyH$ z%=IGzL^?a^^Y%8s0F;!t7Qn?wq$(Xo808v3y-cvMu|b!+yIH5{+1#AA09@_uWi!8c z#M|21=t4&ay~<=x1dtjS;7bFV1@L`uPfQV10Mvu0L=QxYXf#Ui*488dApi*P0uq2o z01zQy!U912|6e(PY>Y?%DguB`4tjuC41qi!m7UAwVnq(-3DM>Gw6#Uwc6a#(5C{ZV zrKkJH<#3gqVXxOq_s7Sz)LP zYydA87uf_S!l5!#4Dmzz3!(Dy^t2cNp!$_-0{}w^0DrP_sYJz{9eO@LPswDGB~B;p z4Y)fx$`^n)D=X}V8;Sp10(hItu@)GX&Y+XzcDtFOJ&u*+G73ll5`YAtX#nZTNw(nu zN{{LfEpmt)DmoadLX6=vsJv1g)`mX_Wh0v=R0{wZU#oKgfTCFdQUfFaF#zoA)U$nl cztx-g3DJ~Qmm5S;NdN!<07*qoM6N<$f>}a&!~g&Q literal 0 HcmV?d00001 diff --git a/textures/wtm_col.png b/textures/wtm_col.png new file mode 100644 index 0000000000000000000000000000000000000000..bc98daa0f984335c4bb44fce695da79a692e0ac4 GIT binary patch literal 5879 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 N002ovPDHLkV1lgubdmr7 literal 0 HcmV?d00001 diff --git a/textures/wtm_uv.png b/textures/wtm_uv.png new file mode 100644 index 0000000000000000000000000000000000000000..80c1c8be56c31fcc4816e424d47ddbe3044de205 GIT binary patch literal 2875 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 KT5mM&Kl~3B*--fa literal 0 HcmV?d00001 diff --git a/wtm.lua b/wtm.lua new file mode 100644 index 0000000..e81d050 --- /dev/null +++ b/wtm.lua @@ -0,0 +1,197 @@ +--[[ + Wire Transfer Machine (WTM) Node + -------------------------------- + This file defines the WTM, which allows players to securely transfer + money from their balance or credit line to another player's account. +--]] + +-- Uses the global 'pos_info' variable for consistency. + +-- Shows the account statement form. +-- This function is identical to the one in atm.lua but is kept here +-- in case of future WTM-specific modifications. +local function show_wtm_statement_form(player, account_type) + local player_name = player:get_player_name() + local data = bank_accounts.get_account_data(player_name) + local history = data.history + local lines = {} + local current_total_label = "" + + table.insert(lines, minetest.formspec_escape(string.format("%-11s | %-13s | %-13s | %-20s | %-20s | %s", S("Date"), S("Amount"), S("New Balance"), S("Method"), S("Purpose"), S("Partner")))) + table.insert(lines, minetest.formspec_escape("-----------------------------------------------------------------------------------------")) + + if history then + for _, t in ipairs(history) do + if t.account == account_type then + local parts = {} + table.insert(parts, string.format("%-11s", os.date("%Y-%m-%d", t.timestamp))) + table.insert(parts, string.format("%12s", string.format("%+.2f", t.amount) .. " MG")) + table.insert(parts, string.format("%12s", string.format("%.2f", t.new_total).." MG")) + table.insert(parts, string.format("%-20s", S(t.type))) + local purpose = t.purpose or "" + local partner = t.other or "" + if purpose ~= "" or partner ~= "" then + table.insert(parts, string.format("%-20s", purpose)) + if partner ~= "" then + table.insert(parts, partner) + end + end + table.insert(lines, minetest.formspec_escape(table.concat(parts, " | "))) + end + end + end + + if account_type == "balance" then + current_total_label = S("Current Balance: @1", string.format("%.2f", data.balance) .. " MG") + else + current_total_label = S("Current Credit Debt: @1", string.format("%.2f", data.credit) .. " MG") + end + + local form_name = "bank_accounts:wtm_statement@" .. player_name + local formspec = "size[13,9]".. + "label[0,0;"..S("Account Statement for @1", player_name).."]".. + "button_exit[0,0.5;2,1;view_balance;"..S("Balance").."]".. + "button_exit[2,0.5;2,1;view_credit;"..S("Credit").."]".. + "textlist[0,1.2;13,7;statement_list;"..table.concat(lines,",").."]".. + "label[0,8.4;"..current_total_label.."]".. + "button_exit[11,8.4;2,1;back;"..S("Back").."]" + + minetest.show_formspec(player_name, form_name, formspec) +end + +-- Shows the main menu for the WTM. +function wtm_main_form(player, pos) + local player_name = player:get_player_name() + local data = bank_accounts.get_account_data(player_name) + + minetest.show_formspec(player_name, "bank_accounts:wtm_options", + "size[8,8]" .. + "button_exit[0.5,1;3.5,1;transfer_balance;"..S("Transfer from Balance").."]" .. + "button_exit[0.5,2.0;3.5,1;transfer_credit;"..S("Transfer from Credit").."]" .. + "button_exit[5,2.5;2.4,1;statement;"..S("Account Statement").."]" .. + "label[5,1;"..S("Balance: @1", string.format("%.2f", data.balance) .. " MG").."]" .. + "label[5,1.5;"..S("Credit Debt: @1", string.format("%.2f", data.credit) .. " MG").."]" .. + "button_exit[0.5,6;3,1;credit_card;"..S("Get Credit Card").."]" .. + "button_exit[0.5,7;3,1;debit_card;"..S("Get Debit Card").."]" .. + "button_exit[5,7;2,1;exit;"..S("Close").."]") +end + +-- Node definition for the Wire Transfer Machine. +minetest.register_node("bank_accounts:wtm", { + description = S("Wire Transfer Machine"), + drawtype = "mesh", + mesh = "atm.obj", -- Uses ATM model as a base + paramtype = "light", + paramtype2 = "facedir", + tiles = {"wtm_col.png"}, -- Custom texture + groups = {cracky=3, crumbly=3, oddly_breakable_by_hand=2}, + + -- Standard right-click function for PIN entry. + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + pos_info = pos + if itemstack:get_name() ~= "bank_accounts:atm_card" then + minetest.chat_send_player(player:get_player_name(), S("[WTM] Must use ATM card.")) + return + end + minetest.show_formspec(player:get_player_name(), "bank_accounts:wtm_home", + "size[8,8]" .. + "pwdfield[2,4;4,1;fourdigitpin;"..S("Four Digit Pin:").."]" .. + "button_exit[5,6;2,1;enter;"..S("Enter").."]" .. + "button_exit[3,6;2,1;exit;"..S("Cancel").."]") + end, +}) + +-- Central handler for all formspec interactions related to the WTM. +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not formname:find("bank_accounts:wtm") then + return + end + + local player_name = player:get_player_name() + local pos = pos_info + if not pos then + return + end + + -- Handle PIN entry form. + if formname == "bank_accounts:wtm_home" then + if fields.enter then + if bank_accounts.get_pin(player_name) == fields.fourdigitpin then + wtm_main_form(player, pos) + else + minetest.chat_send_player(player_name, S("[WTM] Invalid Pin.")) + end + end + + -- Handle main menu options. + elseif formname == "bank_accounts:wtm_options" then + if fields.statement then + show_wtm_statement_form(player, "balance") + elseif fields.transfer_balance or fields.transfer_credit then + local source_account = fields.transfer_balance and "balance" or "credit" + local source_label = "" + if source_account == "balance" then + source_label = S("Transfer from Balance (Available: @1 MG)", string.format("%.2f", bank_accounts.get_balance(player_name))) + else + source_label = S("Transfer from Credit (Debt: @1 MG)", string.format("%.2f", bank_accounts.get_credit(player_name))) + end + minetest.show_formspec(player_name, "bank_accounts:wtm_transfer@"..source_account, + "size[8,8]" .. + "label[0,0;"..source_label.."]" .. + "field[0.5,1.5;7.5,1;recipient;"..S("Recipient:")..";]" .. + "field[0.5,2.5;7.5,1;amount;"..S("Amount:")..";]" .. + "field[0.5,3.5;7.5,1;purpose;"..S("Purpose:")..";]" .. + "button_exit[4,7;2,1;send;"..S("Send").."]" .. + "button_exit[2,7;2,1;cancel;"..S("Cancel").."]") + elseif fields.credit_card then + player:get_inventory():add_item("main", "bank_accounts:credit_card") + wtm_main_form(player, pos) + elseif fields.debit_card then + player:get_inventory():add_item("main", "bank_accounts:debit_card") + wtm_main_form(player, pos) + end + + -- Handle the transfer form itself. + elseif formname:find("bank_accounts:wtm_transfer@") then + if fields.send then + local source_account = formname:match("bank_accounts:wtm_transfer@(.*)") + local recipient = fields.recipient + local amount = normalize_and_tonumber(fields.amount) + local purpose = fields.purpose + + -- Validation checks + if not recipient or recipient == "" or not bank_accounts.player_has_account(recipient) then + minetest.chat_send_player(player_name, S("[WTM] Recipient not found or has no account.")) + elseif not amount or amount <= 0 then + minetest.chat_send_player(player_name, S("[WTM] Invalid amount.")) + elseif source_account == "balance" and bank_accounts.get_balance(player_name) < amount then + minetest.chat_send_player(player_name, S("[WTM] Insufficient funds.")) + else + -- Process the transaction + if source_account == "balance" then + bank_accounts.add_balance(player_name, -amount, "Transfer Sent", purpose, recipient) + else -- source is "credit" + bank_accounts.add_credit(player_name, amount, "Transfer Sent (Credit)", purpose, recipient) + end + + bank_accounts.add_balance(recipient, amount, "Transfer Received", purpose, player_name) + + -- Send chat notifications + minetest.chat_send_player(player_name, S("[WTM] Successfully transferred @1 MG to @2.", string.format("%.2f", amount), recipient)) + minetest.chat_send_player(recipient, S("[WTM] You received a transfer of @1 MG from @2.", string.format("%.2f", amount), player_name)) + end + end + wtm_main_form(player, pos) -- Always return to the main menu + + -- Handle the statement form. + elseif formname:find("bank_accounts:wtm_statement@") then + local target_name = formname:match("bank_accounts:wtm_statement@(.*)") + if not target_name then return end + + if fields.back then + wtm_main_form(player, pos) + else + show_wtm_statement_form(player, fields.view_credit and "credit" or "balance") + end + end +end)

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