From 1190f2776afe26adb1460afa509e90ad64c0dfbe Mon Sep 17 00:00:00 2001 From: Mateus Xavier Date: Mon, 6 Mar 2023 17:44:10 -0300 Subject: [PATCH] Add DynamicBrcode resource, rules attribute to Transfer, BrcodePayment resources and picture and picture_type attributes to update method on Workspace resource --- CHANGELOG.md | 23 ++- README.md | 239 +++++++++++++++++++++++-- lib/balance/balance.rb | 8 +- lib/boleto/boleto.rb | 23 +-- lib/boleto/log.rb | 2 +- lib/boleto_holmes/boleto_holmes.rb | 10 +- lib/boleto_holmes/log.rb | 11 +- lib/boleto_payment/boleto_payment.rb | 21 ++- lib/boleto_payment/log.rb | 2 +- lib/brcode_payment/brcode_payment.rb | 23 +-- lib/brcode_payment/log.rb | 2 +- lib/brcode_payment/rule.rb | 49 +++++ lib/brcode_preview/brcode_preview.rb | 79 -------- lib/darf_payment/darf_payment.rb | 20 ++- lib/darf_payment/log.rb | 2 +- lib/deposit/log.rb | 2 +- lib/dict_key/dict_key.rb | 34 ++-- lib/dynamic_brcode/dynamic_brcode.rb | 155 ++++++++++++++++ lib/event/attempt.rb | 2 +- lib/event/event.rb | 2 +- lib/invoice/invoice.rb | 25 +-- lib/invoice/log.rb | 2 +- lib/payment_preview/payment_preview.rb | 6 +- lib/payment_request/payment_request.rb | 22 ++- lib/starkbank.rb | 4 +- lib/tax_payment/log.rb | 2 +- lib/tax_payment/tax_payment.rb | 21 ++- lib/transaction/transaction.rb | 10 +- lib/transfer/log.rb | 2 +- lib/transfer/rule.rb | 49 +++++ lib/transfer/transfer.rb | 30 ++-- lib/utility_payment/log.rb | 2 +- lib/utility_payment/utility_payment.rb | 25 ++- lib/webhook/webhook.rb | 4 +- lib/workspace/workspace.rb | 42 ++++- test/example_generator.rb | 26 ++- test/starkbank/test_brcode_preview.rb | 14 -- test/starkbank/test_dynamic_brcode.rb | 35 ++++ test/starkbank/test_workspace.rb | 26 +++ test/test_helper.rb | 1 + test/utils/logo.png | Bin 0 -> 158721 bytes 41 files changed, 800 insertions(+), 257 deletions(-) create mode 100644 lib/brcode_payment/rule.rb delete mode 100644 lib/brcode_preview/brcode_preview.rb create mode 100644 lib/dynamic_brcode/dynamic_brcode.rb create mode 100644 lib/transfer/rule.rb delete mode 100644 test/starkbank/test_brcode_preview.rb create mode 100644 test/starkbank/test_dynamic_brcode.rb create mode 100644 test/utils/logo.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 3124a91..561ed99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,8 +13,25 @@ Given a version number MAJOR.MINOR.PATCH, increment: ## [Unreleased] +### Added +- updated, type and transaction_ids attribute to UtilityPayment resource +- workspace_id attribute to Boleto resource +- updated attribute to BoletoHolmes::Log resource +- description attribute to PaymentRequest resource +- amount and transaction_ids attribute to BoletoPayment resource +- workspace_id attribute to Event resource +- transaction_ids attribute to DarfPayment and TaxPayment resources +- picture and picture_type parameters to update method on Workspace resource +- rules attribute to BrcodePayment resource +- BrcodePayment::Rule sub-resource +- rules attribute to Transfer resource +- Transfer::Rule sub-resource +- DynamicBrcode resource +- status, organization_id, picture_url and created attributes to Workspace resource ### Changed - internal structure to use starkcore as a dependency. +### Removed +- deprecated BrcodePreview resource ## [2.6.0] - 2021-09-04 ### Added @@ -54,10 +71,10 @@ Given a version number MAJOR.MINOR.PATCH, increment: ## [2.2.0] - 2020-11-16 ### Added - Invoice resource to load your account with dynamic QR Codes -- DictKey resource to get PIX key's parameters +- DictKey resource to get Pix key's parameters - Deposit resource to receive transfers passively -- PIX support in Transfer resource -- BrcodePayment support to pay static and dynamic PIX QR Codes +- Pix support in Transfer resource +- BrcodePayment support to pay static and dynamic Pix QR Codes ## [2.1.0] - 2020-10-28 ### Added diff --git a/README.md b/README.md index ece65f0..5370e51 100644 --- a/README.md +++ b/README.md @@ -30,15 +30,18 @@ is as easy as sending a text message to your client! - [Transfers](#create-transfers): Wire transfers (TED and manual Pix) - [DictKeys](#get-dict-key): Pix Key queries to use with Transfers - [Institutions](#query-bacen-institutions): Instutitions recognized by the Central Bank - - [Invoices](#create-invoices): Reconciled receivables (dynamic PIX QR Codes) - - [Deposits](#query-deposits): Other cash-ins (static PIX QR Codes, manual PIX, etc) + - [Invoices](#create-invoices): Reconciled receivables (dynamic Pix QR Codes) + - [DynamicBrcode](#create-dynamicbrcodes): Simplified reconciled receivables (dynamic Pix QR Codes) + - [Deposits](#query-deposits): Other cash-ins (static Pix QR Codes, DynamicBrcodes, manual Pix, etc) - [Boletos](#create-boletos): Boleto receivables - [BoletoHolmes](#investigate-a-boleto): Boleto receivables investigator - [BrcodePayments](#pay-a-br-code): Pay Pix QR Codes - [BoletoPayments](#pay-a-boleto): Pay Boletos - [UtilityPayments](#create-utility-payments): Pay Utility bills (water, light, etc.) - [TaxPayments](#create-tax-payments): Pay taxes + - [DarfPayments](#create-darf-payment): Pay DARFs - [PaymentPreviews](#preview-payment-information-before-executing-the-payment): Preview all sorts of payments + - [PaymentRequest](#create-payment-requests-to-be-approved-by-authorized-people-in-a-cost-center): Request a payment approval to a cost center - [Webhooks](#create-a-webhook-subscription): Configure your webhook endpoints and subscriptions - [WebhookEvents](#process-webhook-events): Manage webhook events - [WebhookEventAttempts](#query-failed-webhook-event-delivery-attempts-information): Query failed webhook event deliveries @@ -388,7 +391,7 @@ puts balance ## Create transfers -You can also create transfers in the SDK (TED/Pix). +You can also create transfers in the SDK (TED/Pix) and configure transfer behavior according to its rules. ```ruby require('starkbank') @@ -414,7 +417,12 @@ transfers = StarkBank::Transfer.create( tax_id: '012.345.678-90', name: 'Jon Snow', scheduled: Time.now + 24 * 3600, - tags: [] + tags: [], + rules: [ + StarkBank::Transfer::Rule.new( + key: 'resendingLimit', # Set maximum number of retries if Transfer fails due to systemic issues at the receiver bank + value: 5 # Our resending limit is 10 by default + ] ) ] ) @@ -735,6 +743,75 @@ payment = StarkBank::Invoice.payment('5155165527080960'); puts payment ``` +## Create DynamicBrcodes + +You can create simplified dynamic QR Codes to receive money using Pix transactions. +When a DynamicBrcode is paid, a Deposit is created with the tags parameter containing the character “dynamic-brcode/” followed by the DynamicBrcode’s uuid "dynamic-brcode/{uuid}" for conciliation. + +The differences between an Invoice and the DynamicBrcode are the following: + +| | Invoice | DynamicBrcode | +|-----------------------|:-------:|:-------------:| +| Expiration | ✓ | ✓ | +| Can only be paid once | ✓ | ✓ | +| Due, fine and fee | ✓ | X | +| Discount | ✓ | X | +| Description | ✓ | X | +| Can be updated | ✓ | X | + +**Note:** In order to check if a BR code has expired, you must first calculate its expiration date (add the expiration to the creation date). +**Note:** To know if the BR code has been paid, you need to query your Deposits by the tag "dynamic-brcode/{uuid}" to check if it has been paid. + +```ruby +require('starkbank') + +brcodes = StarkBank::DynamicBrcode.create([ + StarkBank::DynamicBrcode.new( + amount: 23571, # R$ 235,71 + expiration: 3600 * 3 + ), + StarkBank::DynamicBrcode( + amount: 23571, # R$ 235,71 + expiration: 3600 * 3 + ) +]) + +brcodes.each do |brcode| + puts brcode +end +``` + +**Note**: Instead of using DynamicBrcode objects, you can also pass each brcode element in dictionary format + +## Get a DynamicBrcode + +After its creation, information on a DynamicBrcode may be retrieved by its uuid. + +```ruby +require('starkbank') + +brcode = StarkBank::DynamicBrcode.get("bb9cd43ea6f4403391bf7ef6aa876600") + +puts brcode +``` + +## Query DynamicBrcodes + +You can get a list of created DynamicBrcodes given some filters. + +```ruby +require('starkbank') + +brcodes = StarkBank::DynamicBrcode.query( + after: "2023-01-01", + before: "2023-03-01" +) + +brcodes.each do |brcode| + puts brcode +end +``` + ## Query deposits You can get a list of created deposits given some filters. @@ -996,10 +1073,15 @@ payments = StarkBank::BrcodePayment.create( [ StarkBank::BrcodePayment.new( line: '00020126580014br.gov.bcb.pix0136a629532e-7693-4846-852d-1bbff817b5a8520400005303986540510.005802BR5908T'Challa6009Sao Paulo62090505123456304B14A', - tax_id: '012.345.678-90', + tax_id:"012.345.678-90", scheduled: Time.now, - description: 'take my money', - tags: %w[take my money] + description: "take my money", + tags: %w[take my money], + rules: [ + StarkBank::BrcodePayment::Rule.new( + key: "resendingLimit", # Set maximum number of retries if BrcodePayment fails due to systemic issues at the receiver bank + value: 5 # Our resending limit is 10 by default + ] ) ] ) @@ -1009,6 +1091,7 @@ payments.each do |payment| end ``` +**Note**: You can also configure payment behavior according to its rules **Note**: Instead of using BrcodePayment objects, you can also pass each payment element in hash format ## Get a BR Code payment @@ -1387,9 +1470,9 @@ You can get a specific tax payment by its id: ```ruby require('starkbank') -tax_payment = StarkBank::TaxPayment.get('5155165527080960') +payment = StarkBank::TaxPayment.get('5155165527080960') -puts tax_payment +puts payment ``` ## Get tax payment PDF @@ -1415,9 +1498,9 @@ Note that this is not possible if it has been processed already. ```ruby require('starkbank') -tax_payment = StarkBank::TaxPayment.delete('5155165527080960') +payment = StarkBank::TaxPayment.delete('5155165527080960') -puts tax_payment +puts payment ``` ## Query tax payment logs @@ -1450,6 +1533,120 @@ puts log resource and routes, which are all analogous to the TaxPayment resource. The ones we currently support are: - DarfPayment, for DARFs +## Create DARF payment + +If you want to manually pay DARFs without barcodes, you may create DarfPayments: + +```ruby +require('starkbank') + +payments = StarkBank::DarfPayment.create( + [ + StarkBank::DarfPayment.new( + revenue_code: "1240", + tax_id: "012.345.678-90", + competence: "2023-09-01", + reference_number: "2340978970", + nominal_amount: 1234, + fine_amount: 12, + interest_amount: 34, + due: "2023-03-05", + scheduled: "2023-03-05", + tags: ["DARF", "making money"], + description: "take my money", + ) + ] +) + +payments.each do |payment| + puts payment +end +``` + +**Note**: Instead of using DarfPayment objects, you can also pass each payment element in dictionary format + +## Query DARF payments + +To search for DARF payments using filters, run: + +```ruby +require('starkbank') + +payments = StarkBank::DarfPayment.query( + tags: ["darf", "july"] +).to_a + +payments.each do |payment| + puts payment +end +``` + +## Get DARF payment + +You can get a specific DARF payment by its id: + +```ruby +require('starkbank') + +payment = StarkBank::DarfPayment.get('5155165527080960') + +puts payment +``` + +## Get DARF payment PDF + +After its creation, a DARF payment PDF may also be retrieved by its id. + +```ruby +require('starkbank') + +pdf = StarkBank::DarfPayment.pdf('5155165527080960') +File.binwrite('tax_payment.pdf', pdf) +``` + +Be careful not to accidentally enforce any encoding on the raw pdf content, +as it may yield abnormal results in the final file, such as missing images +and strange characters. + +## Delete DARF payment + +You can also cancel a DARF payment by its id. +Note that this is not possible if it has been processed already. + +```ruby +require('starkbank') + +payment = StarkBank::DarfPayment.delete('5155165527080960') + +puts payment +``` + +## Query DARF payment logs + +You can search for payment logs by specifying filters. Use this to understand each payment life cycle. + +```ruby +require('starkbank') + +logs = StarkBank::DarfPayment::Log.query(limit: 5).to_a + +logs.each do |log| + puts log +end +``` + +## Get DARF payment log + +If you want to get a specific payment log by its id, just run: + +```ruby +require('starkbank') + +log = StarkBank::DarfPayment::Log.get('1902837198237992') + +puts log +``` + ## Preview payment information before executing the payment You can preview multiple types of payment to confirm any information before actually paying. @@ -1754,11 +1951,29 @@ You can update a specific Workspace by its id. ```ruby require('starkbank') +picture = open("path/to/picture.png", "rb").read() + updatedWorkspace = StarkBank::Workspace.update( workspace.ID, username: 'new-username-test', name: 'Updated workspace test', - allowed_tax_ids: ['20.018.183/0001-80'] + allowed_tax_ids: ['20.018.183/0001-80'], + picture: picture, + picture_type: "image/png" +) + +puts updatedWorkspace +``` + +You can also block a specific Workspace by its id. + +```ruby +require('starkbank') + +updatedWorkspace = StarkBank::Workspace.update( + workspace.ID, + status: "blocked", + user:starkbank.Organization.replace(organization, workspace.ID) ) puts updatedWorkspace diff --git a/lib/balance/balance.rb b/lib/balance/balance.rb index 346a6e0..e21f69a 100644 --- a/lib/balance/balance.rb +++ b/lib/balance/balance.rb @@ -13,10 +13,10 @@ module StarkBank # can be retrieved to see the available information. # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when Balance is created. ex: '5656565656565656' - # - amount [integer, default nil]: current balance amount of the workspace in cents. ex: 200 (= R$ 2.00) - # - currency [string, default nil]: currency of the current workspace. Expect others to be added eventually. ex:'BRL' - # - updated [DateTime, default nil]: update datetime for the balance. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when Balance is created. ex: '5656565656565656' + # - amount [integer]: current balance amount of the workspace in cents. ex: 200 (= R$ 2.00) + # - currency [string]: currency of the current workspace. Expect others to be added eventually. ex:'BRL' + # - updated [DateTime]: update datetime for the balance. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class Balance < StarkCore::Utils::Resource attr_reader :amount, :currency, :updated def initialize(amount:, currency:, updated:, id:) diff --git a/lib/boleto/boleto.rb b/lib/boleto/boleto.rb index 671db68..18adc08 100644 --- a/lib/boleto/boleto.rb +++ b/lib/boleto/boleto.rb @@ -34,21 +34,22 @@ module StarkBank # - tags [list of strings]: list of strings for tagging # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when Boleto is created. ex: '5656565656565656' - # - fee [integer, default nil]: fee charged when Boleto is paid. ex: 200 (= R$ 2.00) - # - line [string, default nil]: generated Boleto line for payment. ex: '34191.09008 63571.277308 71444.640008 5 81960000000062' - # - bar_code [string, default nil]: generated Boleto bar-code for payment. ex: '34195819600000000621090063571277307144464000' - # - transaction_ids [list of strings, default nil]: ledger transaction ids linked to this boleto. ex: ['19827356981273'] - # - status [string, default nil]: current Boleto status. ex: 'registered' or 'paid' - # - created [DateTime, default nil]: creation datetime for the Boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - our_number [string, default nil]: Reference number registered at the settlement bank. ex:'10131474' + # - id [string]: unique id returned when Boleto is created. ex: '5656565656565656' + # - fee [integer]: fee charged when Boleto is paid. ex: 200 (= R$ 2.00) + # - line [string]: generated Boleto line for payment. ex: '34191.09008 63571.277308 71444.640008 5 81960000000062' + # - bar_code [string]: generated Boleto bar-code for payment. ex: '34195819600000000621090063571277307144464000' + # - transaction_ids [list of strings]: ledger transaction ids linked to this boleto. ex: ['19827356981273'] + # - workspace_id [string]: ID of the Workspace where this Boleto was generated. ex: "4545454545454545" + # - status [string]: current Boleto status. ex: 'registered' or 'paid' + # - created [DateTime]: creation datetime for the Boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - our_number [string]: Reference number registered at the settlement bank. ex:'10131474' class Boleto < StarkCore::Utils::Resource - attr_reader :amount, :name, :tax_id, :street_line_1, :street_line_2, :district, :city, :state_code, :zip_code, :due, :fine, :interest, :overdue_limit, :receiver_name, :receiver_tax_id, :tags, :descriptions, :discounts, :id, :fee, :line, :bar_code, :status, :transaction_ids, :created, :our_number + attr_reader :amount, :name, :tax_id, :street_line_1, :street_line_2, :district, :city, :state_code, :zip_code, :due, :fine, :interest, :overdue_limit, :receiver_name, :receiver_tax_id, :tags, :descriptions, :discounts, :id, :fee, :line, :bar_code, :status, :transaction_ids, :workspace_id, :created, :our_number def initialize( amount:, name:, tax_id:, street_line_1:, street_line_2:, district:, city:, state_code:, zip_code:, due: nil, fine: nil, interest: nil, overdue_limit: nil, receiver_name: nil, receiver_tax_id: nil, tags: nil, descriptions: nil, discounts: nil, id: nil, fee: nil, line: nil, bar_code: nil, - status: nil, transaction_ids: nil, created: nil, our_number: nil + status: nil, transaction_ids: nil, workspace_id: nil, created: nil, our_number: nil ) super(id) @amount = amount @@ -74,6 +75,7 @@ def initialize( @bar_code = bar_code @status = status @transaction_ids = transaction_ids + @workspace_id = workspace_id @created = StarkCore::Utils::Checks.check_datetime(created) @our_number = our_number end @@ -236,6 +238,7 @@ def self.resource bar_code: json['bar_code'], status: json['status'], transaction_ids: json['transaction_ids'], + workspace_id: json['workspace_id'], created: json['created'], our_number: json['our_number'] ) diff --git a/lib/boleto/log.rb b/lib/boleto/log.rb index d5d56b6..15e454b 100644 --- a/lib/boleto/log.rb +++ b/lib/boleto/log.rb @@ -14,7 +14,7 @@ class Boleto # user, but it can be retrieved to check additional information # on the Boleto. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - boleto [Boleto]: Boleto entity to which the log refers to. # - errors [list of strings]: list of errors linked to this Boleto event diff --git a/lib/boleto_holmes/boleto_holmes.rb b/lib/boleto_holmes/boleto_holmes.rb index 27abffb..c99e58d 100644 --- a/lib/boleto_holmes/boleto_holmes.rb +++ b/lib/boleto_holmes/boleto_holmes.rb @@ -18,11 +18,11 @@ module StarkBank # - tags [list of strings]: list of strings for tagging # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when holmes is created. ex: '5656565656565656' - # - status [string, default nil]: current holmes status. ex: 'solving' or 'solved' - # - result [string, default nil]: result of boleto status investigation. ex: 'paid' or 'cancelled' - # - created [DateTime, default nil]: creation datetime for the Boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - updated [DateTime, default nil]: latest update datetime for the holmes. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when holmes is created. ex: '5656565656565656' + # - status [string]: current holmes status. ex: 'solving' or 'solved' + # - result [string]: result of boleto status investigation. ex: 'paid' or 'cancelled' + # - created [DateTime]: creation datetime for the Boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the holmes. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class BoletoHolmes < StarkCore::Utils::Resource attr_reader :boleto_id, :tags, :id, :status, :result, :created, :updated def initialize( diff --git a/lib/boleto_holmes/log.rb b/lib/boleto_holmes/log.rb index 84036fa..02dd8dd 100644 --- a/lib/boleto_holmes/log.rb +++ b/lib/boleto_holmes/log.rb @@ -14,18 +14,20 @@ class BoletoHolmes # user, but it can be retrieved to check additional information # on the BoletoHolmes. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - holmes [BoletoHolmes]: BoletoHolmes entity to which the log refers to. # - type [string]: type of the Boleto event which triggered the log creation. ex: 'registered' or 'paid' # - created [DateTime]: creation datetime for the log. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the log. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class Log < StarkCore::Utils::Resource - attr_reader :id, :holmes, :type, :created - def initialize(id:, holmes:, type:, created:) + attr_reader :id, :holmes, :type, :created, :updated + def initialize(id:, holmes:, type:, created:, updated:) super(id) @holmes = holmes @type = type @created = StarkCore::Utils::Checks.check_datetime(created) + @updated = StarkCore::Utils::Checks.check_datetime(updated) end # # Retrieve a specific Log @@ -112,7 +114,8 @@ def self.resource id: json['id'], holmes: StarkCore::Utils::API.from_api_json(holmes_maker, json['holmes']), type: json['type'], - created: json['created'] + created: json['created'], + updated: json['updated'] ) } } diff --git a/lib/boleto_payment/boleto_payment.rb b/lib/boleto_payment/boleto_payment.rb index 9b8d77f..ae4bbfa 100644 --- a/lib/boleto_payment/boleto_payment.rb +++ b/lib/boleto_payment/boleto_payment.rb @@ -20,28 +20,30 @@ module StarkBank # - description [string]: Text to be displayed in your statement (min. 10 characters). ex: 'payment ABC' # # ## Parameters (optional): + # - amount [int, default nil]: amount automatically calculated from line or bar_code. ex: 23456 (= R$ 234.56) # - scheduled [Date, DateTime, Time or string, default today]: payment scheduled date. ex: Date.new(2020, 3, 10) # - tags [list of strings]: list of strings for tagging # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when payment is created. ex: '5656565656565656' - # - status [string, default nil]: current payment status. ex: 'success' or 'failed' - # - amount [int, default nil]: amount automatically calculated from line or bar_code. ex: 23456 (= R$ 234.56) - # - fee [integer, default nil]: fee charged when the boleto payment is created. ex: 200 (= R$ 2.00) - # - created [DateTime, default nil]: creation datetime for the payment. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when payment is created. ex: '5656565656565656' + # - status [string]: current payment status. ex: 'success' or 'failed' + # - fee [integer]: fee charged when the boleto payment is created. ex: 200 (= R$ 2.00) + # - transaction_ids [list of strings]: ledger transaction ids linked to this BoletoPayment. ex: ["19827356981273"] + # - created [DateTime]: creation datetime for the payment. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class BoletoPayment < StarkCore::Utils::Resource - attr_reader :tax_id, :description, :line, :bar_code, :scheduled, :tags, :id, :status, :amount, :fee, :created - def initialize(tax_id:, description:, line: nil, bar_code: nil, scheduled: nil, tags: nil, id: nil, status: nil, amount: nil, fee: nil, created: nil) + attr_reader :tax_id, :description, :line, :bar_code, :scheduled, :tags, :id, :status, :amount, :fee, :transaction_ids, :created + def initialize(tax_id:, description:, line: nil, bar_code: nil, scheduled: nil, tags: nil, id: nil, status: nil, amount: nil, fee: nil, transaction_ids: nil, created: nil) super(id) @tax_id = tax_id @description = description @line = line @bar_code = bar_code + @amount = amount @scheduled = StarkCore::Utils::Checks.check_date(scheduled) @tags = tags @status = status - @amount = amount @fee = fee + @transaction_ids = transaction_ids @created = StarkCore::Utils::Checks.check_datetime(created) end @@ -181,11 +183,12 @@ def self.resource description: json['description'], line: json['line'], bar_code: json['bar_code'], + amount: json['amount'], scheduled: json['scheduled'], tags: json['tags'], status: json['status'], - amount: json['amount'], fee: json['fee'], + transaction_ids: json['transaction_ids'], created: json['created'] ) } diff --git a/lib/boleto_payment/log.rb b/lib/boleto_payment/log.rb index 11656a0..0d177be 100644 --- a/lib/boleto_payment/log.rb +++ b/lib/boleto_payment/log.rb @@ -14,7 +14,7 @@ class BoletoPayment # user, but it can be retrieved to check additional information # on the BoletoPayment. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - payment [BoletoPayment]: BoletoPayment entity to which the log refers to. # - errors [list of strings]: list of errors linked to this BoletoPayment event. diff --git a/lib/brcode_payment/brcode_payment.rb b/lib/brcode_payment/brcode_payment.rb index 156620c..f6a85e2 100644 --- a/lib/brcode_payment/brcode_payment.rb +++ b/lib/brcode_payment/brcode_payment.rb @@ -22,19 +22,20 @@ module StarkBank # ## Parameters (optional): # - scheduled [datetime.date, datetime.datetime or string, default now]: payment scheduled date or datetime. ex: datetime.datetime(2020, 3, 10, 15, 17, 3) # - tags [list of strings, default nil]: list of strings for tagging + # - rules [list of BrcodePayment::Rules, default []]: list of BrcodePayment::Rule objects for modifying transfer behavior. ex: [BrcodePayment::Rule(key: "resendingLimit", value: 5)] # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when payment is created. ex: '5656565656565656' - # - name [string, nil]: receiver name. ex: 'Jon Snow' - # - status [string, default nil]: current payment status. ex: 'success' or 'failed' - # - type [string, default nil]: brcode type. ex: 'static' or 'dynamic' - # - transaction_ids [list of strings, default nil]: ledger transaction ids linked to this payment. ex: ['19827356981273'] - # - fee [integer, default nil]: fee charged when the brcode payment is created. ex: 200 (= R$ 2.00) - # - updated [datetime.datetime, default nil]: latest update datetime for the payment. ex: datetime.datetime(2020, 3, 10, 10, 30, 0, 0) - # - created [datetime.datetime, default nil]: creation datetime for the payment. ex: datetime.datetime(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when payment is created. ex: '5656565656565656' + # - name [string]: receiver name. ex: 'Jon Snow' + # - status [string]: current payment status. ex: 'success' or 'failed' + # - type [string]: brcode type. ex: 'static' or 'dynamic' + # - transaction_ids [list of strings]: ledger transaction ids linked to this payment. ex: ['19827356981273'] + # - fee [integer]: fee charged when the brcode payment is created. ex: 200 (= R$ 2.00) + # - updated [datetime.datetime]: latest update datetime for the payment. ex: datetime.datetime(2020, 3, 10, 10, 30, 0, 0) + # - created [datetime.datetime]: creation datetime for the payment. ex: datetime.datetime(2020, 3, 10, 10, 30, 0, 0) class BrcodePayment < StarkCore::Utils::Resource - attr_reader :brcode, :tax_id, :description, :amount, :scheduled, :tags, :id, :name, :status, :type, :transaction_ids, :fee, :updated, :created - def initialize(brcode:, tax_id:, description:, amount: nil, scheduled: nil, tags: nil, id: nil, name: nil, status: nil, type: nil, transaction_ids: nil, fee: nil, updated: nil, created: nil) + attr_reader :brcode, :tax_id, :description, :amount, :scheduled, :tags, :rules, :id, :name, :status, :type, :transaction_ids, :fee, :updated, :created + def initialize(brcode:, tax_id:, description:, amount: nil, scheduled: nil, tags: nil, rules: nil, id: nil, name: nil, status: nil, type: nil, transaction_ids: nil, fee: nil, updated: nil, created: nil) super(id) @brcode = brcode @tax_id = tax_id @@ -42,6 +43,7 @@ def initialize(brcode:, tax_id:, description:, amount: nil, scheduled: nil, tags @amount = amount @scheduled = StarkCore::Utils::Checks.check_date_or_datetime(scheduled) @tags = tags + @rules = StarkBank::BrcodePayment::Rule.parse_rules(rules) @name = name @status = status @type = type @@ -190,6 +192,7 @@ def self.resource amount: json['amount'], scheduled: json['scheduled'], tags: json['tags'], + rules: json['rules'], id: json['id'], name: json['name'], status: json['status'], diff --git a/lib/brcode_payment/log.rb b/lib/brcode_payment/log.rb index 8b37ba4..24f04ac 100644 --- a/lib/brcode_payment/log.rb +++ b/lib/brcode_payment/log.rb @@ -14,7 +14,7 @@ class BrcodePayment # user, but it can be retrieved to check additional information # on the BrcodePayment. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - payment [BrcodePayment]: BrcodePayment entity to which the log refers to. # - errors [list of strings]: list of errors linked to this BrcodePayment event. diff --git a/lib/brcode_payment/rule.rb b/lib/brcode_payment/rule.rb new file mode 100644 index 0000000..7579fd5 --- /dev/null +++ b/lib/brcode_payment/rule.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require_relative('../utils/rest') + + +module StarkBank + class BrcodePayment + # # BrcodePayment::Rule object + # + # The BrcodePayment::Rule object modifies the behavior of BrcodePayment objects when passed as an argument upon their creation. + # + # ## Parameters (required): + # - key [string]: Rule to be customized, describes what BrcodePayment behavior will be altered. ex: "resendingLimit" + # - value [integer]: Value of the rule. ex: 5 + class Rule < StarkCore::Utils::SubResource + attr_reader :key, :value + def initialize(key:, value:) + @key = key + @value = value + end + + def self.parse_rules(rules) + resource_maker = StarkBank::BrcodePayment::Rule.resource[:resource_maker] + return rules if rules.nil? + + parsed_rules = [] + rules.each do |rule| + unless rule.is_a? Rule + rule = StarkCore::Utils::API.from_api_json(resource_maker, rule) + end + parsed_rules << rule + end + return parsed_rules + end + + def self.resource + { + resource_name: 'Rule', + resource_maker: proc { |json| + Rule.new( + key: json['key'], + value: json['value'] + ) + } + } + end + end + end +end diff --git a/lib/brcode_preview/brcode_preview.rb b/lib/brcode_preview/brcode_preview.rb deleted file mode 100644 index 254fd3c..0000000 --- a/lib/brcode_preview/brcode_preview.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true - -require('starkcore') -require_relative('../utils/rest') - - -module StarkBank - # # BrcodePreview object - # - # A BrcodePreview is used to get information from a BR Code you received to check the informations before paying it. - # - # ## Attributes (return-only): - # - status [string]: Payment status. ex: 'active', 'paid', 'canceled' or 'unknown' - # - name [string]: Payment receiver name. ex: 'Tony Stark' - # - tax_id [string]: Payment receiver tax ID. ex: '012.345.678-90' - # - bank_code [string]: Payment receiver bank code. ex: '20018183' - # - branch_code [string]: Payment receiver branch code. ex: '0001' - # - account_number [string]: Payment receiver account number. ex: '1234567' - # - account_type [string]: Payment receiver account type. ex: 'checking' - # - allow_change [bool]: If True, the payment is able to receive amounts that are diferent from the nominal one. ex: True or False - # - amount [integer]: Value in cents that this payment is expecting to receive. If 0, any value is accepted. ex: 123 (= R$1,23) - # - reconciliation_id [string]: Reconciliation ID linked to this payment. ex: 'txId', 'payment-123' - class BrcodePreview < StarkCore::Utils::Resource - attr_reader :status, :name, :tax_id, :bank_code, :branch_code, :account_number, :account_type, :allow_change, :amount, :reconciliation_id - def initialize(status:, name:, tax_id:, bank_code:, branch_code:, account_number:, account_type:, allow_change:, amount:, reconciliation_id:) - @status = status - @name = name - @tax_id = tax_id - @bank_code = bank_code - @branch_code = branch_code - @account_number = account_number - @account_type = account_type - @allow_change = allow_change - @amount = amount - @reconciliation_id = reconciliation_id - end - - # # BrcodePreview is DEPRECATED: Please use PaymentPreview instead. - # Retrieve BrcodePreviews - # - # Receive a generator of BrcodePreview objects previously created in the Stark Bank API - # - # ## Parameters (optional): - # - brcodes [list of strings]: List of brcodes to preview. ex: %w[00020126580014br.gov.bcb.pix0136a629532e-7693-4846-852d-1bbff817b5a8520400005303986540510.005802BR5908T'Challa6009Sao Paulo62090505123456304B14A] - # - user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call - # - # ## Return: - # - generator of BrcodePreview objects with updated attributes - def self.query(limit: nil, brcodes: nil, user: nil) - warn "[DEPRECATION] `BrcodePreview` is deprecated. Please use `PaymentPreview` instead." - StarkBank::Utils::Rest.get_stream( - user: user, - limit: nil, - brcodes: brcodes, - **resource - ) - end - - def self.resource - { - resource_name: 'BrcodePreview', - resource_maker: proc { |json| - BrcodePreview.new( - status: json['status'], - name: json['name'], - tax_id: json['tax_id'], - bank_code: json['bank_code'], - branch_code: json['branch_code'], - account_number: json['account_number'], - account_type: json['account_type'], - allow_change: json['allow_change'], - amount: json['amount'], - reconciliation_id: json['reconciliation_id'] - ) - } - } - end - end -end diff --git a/lib/darf_payment/darf_payment.rb b/lib/darf_payment/darf_payment.rb index 100541f..5f3213c 100644 --- a/lib/darf_payment/darf_payment.rb +++ b/lib/darf_payment/darf_payment.rb @@ -13,7 +13,6 @@ module StarkBank # # ## Parameters (required): # - description [string]: Text to be displayed in your statement (min. 10 characters). ex: 'payment ABC' - # - description [string]: Text to be displayed in your statement (min. 10 characters). ex: 'payment ABC' # - revenue_code [string]: 4-digit tax code assigned by Federal Revenue. ex: '5948' # - tax_id [tax_id]: tax id (formatted or unformatted) of the payer. ex: '12.345.678/0001-95' # - competence [Date, DateTime, Time or string, default today]: competence month of the service. ex: Date.new(2020, 3, 10) @@ -28,18 +27,19 @@ module StarkBank # - tags [list of strings, default nil]: list of strings for tagging # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when payment is created. ex: '5656565656565656' - # - status [string, default nil]: current payment status. ex: 'success' or 'failed' - # - amount [int, default nil]: Total amount due calculated from other amounts. ex: 24146 (= R$ 241.46) - # - fee [integer, default nil]: fee charged when the DarfPayment is processed. ex: 0 (= R$ 0.00) - # - created [DateTime, default nil]: creation datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - updated [DateTime, default nil]: latest update datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when payment is created. ex: '5656565656565656' + # - status [string]: current payment status. ex: 'success' or 'failed' + # - amount [int]: Total amount due calculated from other amounts. ex: 24146 (= R$ 241.46) + # - fee [integer]: fee charged when the DarfPayment is processed. ex: 0 (= R$ 0.00) + # - transaction_ids [list of strings]: ledger transaction ids linked to this DarfPayment. ex: ["19827356981273"] + # - created [DateTime]: creation datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class DarfPayment < StarkCore::Utils::Resource attr_reader :id, :revenue_code, :tax_id, :competence, :reference_number, :fine_amount, :interest_amount, - :due, :description, :tags, :scheduled, :status, :amount, :nominal_amount, :fee, :updated, :created + :due, :description, :tags, :scheduled, :status, :amount, :nominal_amount, :fee, :transaction_ids, :updated, :created def initialize( id: nil, revenue_code:, tax_id:, competence:, reference_number:, fine_amount:, interest_amount:, due:, description: nil, - tags: nil, scheduled: nil, status: nil, amount: nil, nominal_amount: nil, fee: nil, updated: nil, created: nil + tags: nil, scheduled: nil, status: nil, amount: nil, nominal_amount: nil, fee: nil, transaction_ids: nil, updated: nil, created: nil ) super(id) @revenue_code = revenue_code @@ -56,6 +56,7 @@ def initialize( @amount = amount @nominal_amount = nominal_amount @fee = fee + @transaction_ids = @transaction_ids @updated = StarkCore::Utils::Checks.check_datetime(updated) @created = StarkCore::Utils::Checks.check_datetime(created) end @@ -209,6 +210,7 @@ def self.resource nominal_amount: json['nominal_amount'], fee: json['fee'], updated: json['updated'], + transaction_ids: json['transaction_ids'], created: json['created'], ) } diff --git a/lib/darf_payment/log.rb b/lib/darf_payment/log.rb index 5ccef97..032840e 100644 --- a/lib/darf_payment/log.rb +++ b/lib/darf_payment/log.rb @@ -14,7 +14,7 @@ class DarfPayment # user, but it can be retrieved to check additional information # on the DarfPayment. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - payment [DarfPayment]: DarfPayment entity to which the log refers to. # - errors [list of strings]: list of errors linked to this DarfPayment event diff --git a/lib/deposit/log.rb b/lib/deposit/log.rb index d72cd3f..d7c720f 100644 --- a/lib/deposit/log.rb +++ b/lib/deposit/log.rb @@ -14,7 +14,7 @@ class Deposit # user, but it can be retrieved to check additional information # on the Deposit. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - deposit [Deposit]: Deposit entity to which the log refers to. # - errors [list of strings]: list of errors linked to this Deposit event diff --git a/lib/dict_key/dict_key.rb b/lib/dict_key/dict_key.rb index e23d740..8aaed62 100644 --- a/lib/dict_key/dict_key.rb +++ b/lib/dict_key/dict_key.rb @@ -6,25 +6,25 @@ module StarkBank # # DictKey object # - # DictKey represents a PIX key registered in Bacen's DICT system. + # DictKey represents a Pix key registered in Bacen's DICT system. # - # ## Parameters (required): - # - id [string]: DictKey object unique id and PIX key itself. ex: 'tony@starkbank.com', '722.461.430-04', '20.018.183/0001-80', '+5511988887777', 'b6295ee1-f054-47d1-9e90-ee57b74f60d9' + # ## Parameters (optional): + # - id [string]: DictKey object unique id and Pix key itself. ex: 'tony@starkbank.com', '722.461.430-04', '20.018.183/0001-80', '+5511988887777', 'b6295ee1-f054-47d1-9e90-ee57b74f60d9' # # ## Attributes (return-only): - # - type [string, default nil]: DICT key type. ex: 'email', 'cpf', 'cnpj', 'phone' or 'evp' - # - name [string, default nil]: account owner full name. ex: 'Tony Stark' - # - tax_id [string, default nil]: key owner tax ID (CNPJ or masked CPF). ex: '***.345.678-**' or '20.018.183/0001-80' - # - owner_type [string, default nil]: DICT key owner type. ex 'naturalPerson' or 'legalPerson' - # - bank_name [string, default nil]: bank name associated with the DICT key. ex: 'Stark Bank' - # - ispb [string, default nil]: bank ISPB associated with the DICT key. ex: '20018183' - # - branch_code [string, default nil]: bank account branch code associated with the DICT key. ex: '9585' - # - account_number [string, default nil]: bank account number associated with the DICT key. ex: '9828282578010513' - # - account_type [string, default nil]: bank account type associated with the DICT key. ex: 'checking', 'saving', 'salary' or 'payment' - # - status [string, default nil]: current DICT key status. ex: 'created', 'registered', 'canceled' or 'failed' - # - account_created [DateTime or string, default nil]: creation datetime of the bank account associated with the DICT key. ex: '2020-11-05T14:55:08.812665+00:00' - # - owned [DateTime or string, default nil]: datetime since when the current owner hold this DICT key. ex : '2020-11-05T14:55:08.812665+00:00' - # - created [DateTime or string, default nil]: creation datetime for the DICT key. ex: '2020-03-10 10:30:00.000' + # - type [string]: DICT key type. ex: 'email', 'cpf', 'cnpj', 'phone' or 'evp' + # - name [string]: account owner full name. ex: 'Tony Stark' + # - tax_id [string]: key owner tax ID (CNPJ or masked CPF). ex: '***.345.678-**' or '20.018.183/0001-80' + # - owner_type [string]: DICT key owner type. ex 'naturalPerson' or 'legalPerson' + # - bank_name [string]: bank name associated with the DICT key. ex: 'Stark Bank' + # - ispb [string]: bank ISPB associated with the DICT key. ex: '20018183' + # - branch_code [string]: bank account branch code associated with the DICT key. ex: '9585' + # - account_number [string]: bank account number associated with the DICT key. ex: '9828282578010513' + # - account_type [string]: bank account type associated with the DICT key. ex: 'checking', 'saving', 'salary' or 'payment' + # - status [string]: current DICT key status. ex: 'created', 'registered', 'canceled' or 'failed' + # - account_created [DateTime or string]: creation datetime of the bank account associated with the DICT key. ex: '2020-11-05T14:55:08.812665+00:00' + # - owned [DateTime or string]: datetime since when the current owner hold this DICT key. ex : '2020-11-05T14:55:08.812665+00:00' + # - created [DateTime or string]: creation datetime for the DICT key. ex: '2020-03-10 10:30:00.000' class DictKey < StarkCore::Utils::Resource attr_reader :id, :type, :name, :tax_id, :owner_type, :bank_name, :ispb, :branch_code, :account_number, :account_type, :status, :account_created, :owned, :created def initialize( @@ -52,7 +52,7 @@ def initialize( # Receive a single DictKey object by passing its id # # ## Parameters (required): - # - id [string]: DictKey object unique id and PIX key itself. ex: 'tony@starkbank.com', '722.461.430-04', '20.018.183/0001-80', '+5511988887777', 'b6295ee1-f054-47d1-9e90-ee57b74f60d9' + # - id [string]: DictKey object unique id and Pix key itself. ex: 'tony@starkbank.com', '722.461.430-04', '20.018.183/0001-80', '+5511988887777', 'b6295ee1-f054-47d1-9e90-ee57b74f60d9' # # ## Parameters (optional): # - user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call diff --git a/lib/dynamic_brcode/dynamic_brcode.rb b/lib/dynamic_brcode/dynamic_brcode.rb new file mode 100644 index 0000000..3afb4ab --- /dev/null +++ b/lib/dynamic_brcode/dynamic_brcode.rb @@ -0,0 +1,155 @@ +# frozen_string_literal: true + +require('starkcore') +require_relative('../utils/rest') + + +module StarkBank + # # DynamicBrcode object + # + # When you initialize a DynamicBrcode, the entity will not be automatically + # sent to the Stark Bank API. The 'create' function sends the objects + # to the Stark Bank API and returns the list of created objects. + # + # DynamicBrcodes are conciliated BR Codes that can be used to receive Pix transactions in a convenient way. + # When a DynamicBrcode is paid, a Deposit is created with the tags parameter containing the character “dynamic-brcode/” followed by the DynamicBrcode’s uuid "dynamic-brcode/{uuid}" for conciliation. + # Additionally, all tags passed on the DynamicBrcode will be transferred to the respective Deposit resource. + # + # ## Parameters (required): + # - amount [integer]: DynamicBrcode value in cents. Minimum = 0 (any value will be accepted). ex: 1234 (= R$ 12.34) + # + # ## Parameters (optional): + # - expiration [integer, default 3600 (1 hour)]: time interval in seconds between due date and expiration date. ex 123456789 + # - tags [list of strings, default []]: list of strings for tagging, these will be passed to the respective DynamicBrcode resource when paid + # + # ## Attributes (return-only): + # - id [string]: id returned on creation, this is the BR code. ex: "00020126360014br.gov.bcb.pix0114+552840092118152040000530398654040.095802BR5915Jamie Lannister6009Sao Paulo620705038566304FC6C" + # - uuid [string]: unique uuid returned when the DynamicBrcode is created. ex: "4e2eab725ddd495f9c98ffd97440702d" + # - picture_url [string]: public QR Code (png image) URL. "https://sandbox.api.starkbank.com/v2/dynamic-brcode/d3ebb1bd92024df1ab6e5a353ee799a4.png" + # - updated [DateTime]: latest update datetime for the DynamicBrcode. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - created [DateTime]: creation datetime for the DynamicBrcode. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + class DynamicBrcode < StarkCore::Utils::Resource + attr_reader :amount, :expiration, :tags, :id, :uuid, :picture_url, :updated, :created + def initialize( + amount:, expiration: nil, tags: nil, id: nil, uuid: nil, picture_url: nil, updated: nil, created: nil + ) + super(id) + @amount = amount + @expiration = expiration + @tags = tags + @uuid = uuid + @picture_url = picture_url + @created = StarkCore::Utils::Checks.check_datetime(created) + @updated = StarkCore::Utils::Checks.check_datetime(updated) + end + + # # Create DynamicBrcode + # + # Send a list of DynamicBrcode objects for creation in the Stark Bank API + # + # ## Parameters (required): + # - brcodes [list of DynamicBrcode objects]: list of DynamicBrcode objects to be created in the API + # + # ## Parameters (optional): + # - user [Organization/Project object, default nil]: Organization or Project object. Not necessary if StarkBank.user was set before function call + # + # ## Return: + # - list of DynamicBrcode objects with updated attributes + def self.create(brcodes, user: nil) + StarkBank::Utils::Rest.post(entities: brcodes, user: user, **resource) + end + + # # Retrieve a specific DynamicBrcode + # + # Receive a single DynamicBrcode object previously created in the Stark Bank API by its uuid + # + # ## Parameters (required): + # - uuid [string]: object unique uuid. ex: "901e71f2447c43c886f58366a5432c4b" + # + # ## Parameters (optional): + # - user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call + # + # ## Return: + # - DynamicBrcode object with updated attributes + def self.get(uuid, user: nil) + StarkBank::Utils::Rest.get_id(id: uuid, user: user, **resource) + end + + # # Retrieve DynamicBrcodes + # + # Receive a generator of DynamicBrcode objects previously created in the Stark Bank API + # + # ## Parameters (optional): + # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35 + # - after [Date, DateTime, Time or string, default nil]: date filter for objects created only after specified date. ex: Date.new(2020, 3, 10) + # - before [Date, DateTime, Time or string, default nil]: date filter for objects created only before specified date. ex: Date.new(2020, 3, 10) + # - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark'] + # - uuids [list of strings, default nil]: list of uuids to filter retrieved objects. ex: ["901e71f2447c43c886f58366a5432c4b", "4e2eab725ddd495f9c98ffd97440702d"] + # - user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call + # + # ## Return: + # - generator of DynamicBrcode objects with updated attributes + def self.query(limit: nil, after: nil, before: nil, tags: nil, uuids: nil, user: nil) + after = StarkCore::Utils::Checks.check_date(after) + before = StarkCore::Utils::Checks.check_date(before) + StarkBank::Utils::Rest.get_stream( + limit: limit, + after: after, + before: before, + tags: tags, + uuids: uuids, + user: user, + **resource + ) + end + + # # Retrieve paged DynamicBrcodes + # + # Receive a list of up to 100 DynamicBrcode objects previously created in the Stark Bank API and the cursor to the next page. + # Use this function instead of query if you want to manually page your requests. + # + # ## Parameters (optional): + # - cursor [string, default nil]: cursor returned on the previous page function call + # - limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35 + # - after [Date, DateTime, Time or string, default nil]: date filter for objects created only after specified date. ex: Date.new(2020, 3, 10) + # - before [Date, DateTime, Time or string, default nil]: date filter for objects created only before specified date. ex: Date.new(2020, 3, 10) + # - tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark'] + # - uuids [list of strings, default nil]: list of uuids to filter retrieved objects. ex: ["901e71f2447c43c886f58366a5432c4b", "4e2eab725ddd495f9c98ffd97440702d"] + # - user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call + # + # ## Return: + # - list of DynamicBrcode objects with updated attributes and cursor to retrieve the next page of DynamicBrcode objects + def self.page(cursor: nil, limit: nil, after: nil, before: nil, tags: nil, uuids: nil, user: nil) + after = StarkCore::Utils::Checks.check_date(after) + before = StarkCore::Utils::Checks.check_date(before) + return StarkBank::Utils::Rest.get_page( + cursor: cursor, + limit: limit, + after: after, + before: before, + tags: tags, + uuids: uuids, + user: user, + **resource + ) + end + + def self.resource + { + resource_name: 'DynamicBrcode', + resource_maker: proc { |json| + DynamicBrcode.new( + id: json['id'], + amount: json['amount'], + expiration: json['expiration'], + tags: json['tags'], + uuid: json['uuid'], + picture_url: json['picture_url'], + created: json['created'], + updated: json['updated'] + ) + } + } + end + end +end diff --git a/lib/event/attempt.rb b/lib/event/attempt.rb index 6fa614e..6f010b5 100644 --- a/lib/event/attempt.rb +++ b/lib/event/attempt.rb @@ -12,7 +12,7 @@ class Event # When an Event delivery fails, an event attempt will be registered. # It carries information meant to help you debug event reception issues. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id that identifies the delivery attempt. ex: "5656565656565656" # - code [string]: delivery error code. ex: badHttpStatus, badConnection, timeout # - message [string]: delivery error full description. ex: "HTTP POST request returned status 404" diff --git a/lib/event/event.rb b/lib/event/event.rb index 26bcbe5..f057a64 100644 --- a/lib/event/event.rb +++ b/lib/event/event.rb @@ -23,7 +23,7 @@ module StarkBank # Events cannot be created, but may be retrieved from the Stark Bank API to # list all generated updates on entities. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the event is created. ex: '5656565656565656' # - log [Log]: a Log object from one the subscription services (TransferLog, InvoiceLog, BoletoLog, BoletoPaymentlog or UtilityPaymentLog) # - created [DateTime]: creation datetime for the notification event. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) diff --git a/lib/invoice/invoice.rb b/lib/invoice/invoice.rb index 4f9270f..0c5fac8 100644 --- a/lib/invoice/invoice.rb +++ b/lib/invoice/invoice.rb @@ -28,18 +28,19 @@ module StarkBank # - tags [list of strings, default nil]: list of strings for tagging # # ## Attributes (return-only): - # - pdf [string, default nil]: public Invoice PDF URL. ex: 'https://invoice.starkbank.com/pdf/d454fa4e524441c1b0c1a729457ed9d8' - # - link [string, default nil]: public Invoice webpage URL. ex: 'https://my-workspace.sandbox.starkbank.com/invoicelink/d454fa4e524441c1b0c1a729457ed9d8' - # - id [string, default nil]: unique id returned when Invoice is created. ex: '5656565656565656' - # - nominal_amount [integer, default nil]: Invoice emission value in cents (will change if invoice is updated, but not if it's paid). ex: 400000 - # - fine_amount [integer, default nil]: Invoice fine value calculated over nominal_amount. ex: 20000 - # - interest_amount [integer, default nil]: Invoice interest value calculated over nominal_amount. ex: 10000 - # - discount_amount [integer, default nil]: Invoice discount value calculated over nominal_amount. ex: 3000 - # - brcode [string, default nil]: BR Code for the Invoice payment. ex: '00020101021226800014br.gov.bcb.pix2558invoice.starkbank.com/f5333103-3279-4db2-8389-5efe335ba93d5204000053039865802BR5913Arya Stark6009Sao Paulo6220051656565656565656566304A9A0' - # - fee [integer, default nil]: fee charged by the Invoice. ex: 65 (= R$ 0.65) - # - status [string, default nil]: current Invoice status. ex: 'registered' or 'paid' - # - created [DateTime, default nil]: creation datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - updated [DateTime, default nil]: latest update datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - pdf [string]: public Invoice PDF URL. ex: 'https://invoice.starkbank.com/pdf/d454fa4e524441c1b0c1a729457ed9d8' + # - link [string]: public Invoice webpage URL. ex: 'https://my-workspace.sandbox.starkbank.com/invoicelink/d454fa4e524441c1b0c1a729457ed9d8' + # - id [string]: unique id returned when Invoice is created. ex: '5656565656565656' + # - nominal_amount [integer]: Invoice emission value in cents (will change if invoice is updated, but not if it's paid). ex: 400000 + # - fine_amount [integer]: Invoice fine value calculated over nominal_amount. ex: 20000 + # - interest_amount [integer]: Invoice interest value calculated over nominal_amount. ex: 10000 + # - discount_amount [integer]: Invoice discount value calculated over nominal_amount. ex: 3000 + # - brcode [string]: BR Code for the Invoice payment. ex: '00020101021226800014br.gov.bcb.pix2558invoice.starkbank.com/f5333103-3279-4db2-8389-5efe335ba93d5204000053039865802BR5913Arya Stark6009Sao Paulo6220051656565656565656566304A9A0' + # - fee [integer]: fee charged by the Invoice. ex: 65 (= R$ 0.65) + # - transaction_ids [list of strings]: ledger transaction ids linked to this Invoice (if there are more than one, all but the first are reversals or failed reversal chargebacks). ex: ["19827356981273"] + # - status [string]: current Invoice status. ex: 'registered' or 'paid' + # - created [DateTime]: creation datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class Invoice < StarkCore::Utils::Resource attr_reader :amount, :tax_id, :name, :due, :expiration, :fine, :interest, :discounts, :tags, :pdf, :link, :descriptions, :nominal_amount, :fine_amount, :interest_amount, :discount_amount, :id, :brcode, :fee, :status, :transaction_ids, :created, :updated def initialize( diff --git a/lib/invoice/log.rb b/lib/invoice/log.rb index 697d3ab..dd4bed4 100644 --- a/lib/invoice/log.rb +++ b/lib/invoice/log.rb @@ -14,7 +14,7 @@ class Invoice # user, but it can be retrieved to check additional information # on the Invoice. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - invoice [Invoice]: Invoice entity to which the log refers to. # - errors [list of strings]: list of errors linked to this Invoice event diff --git a/lib/payment_preview/payment_preview.rb b/lib/payment_preview/payment_preview.rb index b17fd5b..b15d7c2 100644 --- a/lib/payment_preview/payment_preview.rb +++ b/lib/payment_preview/payment_preview.rb @@ -10,9 +10,13 @@ module StarkBank # A PaymentPreview is used to get information from a payment code before confirming the payment. # This resource can be used to preview BR Codes and bar codes of boleto, tax and utility payments # - # ## Attributes (return-only): + # ## Parameters (required): # - id [string]: Main identification of the payment. This should be the BR Code for Pix payments and lines or bar codes for payment slips. ex: '34191.09008 63571.277308 71444.640008 5 81960000000062', '00020126580014br.gov.bcb.pix0136a629532e-7693-4846-852d-1bbff817b5a8520400005303986540510.005802BR5908T'Challa6009Sao Paulo62090505123456304B14A' + # + # ## Parameters (optional): # - scheduled [DateTime or string]: intended payment date. Right now, this parameter only has effect on BrcodePreviews. ex: '2020-04-30' + # + # ## Attributes (return-only): # - type [string]: Payment type. ex: 'brcode-payment', 'boleto-payment', 'utility-payment' or 'tax-payment' # - payment [BrcodePreview, BoletoPreview, UtilityPreview or TaxPreview]: Information preview of the informed payment. class PaymentPreview < StarkCore::Utils::Resource diff --git a/lib/payment_request/payment_request.rb b/lib/payment_request/payment_request.rb index da35c28..a2699da 100644 --- a/lib/payment_request/payment_request.rb +++ b/lib/payment_request/payment_request.rb @@ -6,6 +6,7 @@ module StarkBank # # PaymentRequest object + # # A PaymentRequest is an indirect request to access a specific cash-out service # (such as Transfer, BrcodePayments, etc.) which goes through the cost center # approval flow on our website. To emit a PaymentRequest, you must direct it to @@ -16,24 +17,27 @@ module StarkBank # - center_id [String]: target cost center ID. ex: '5656565656565656' # - payment [Transfer, BrcodePayment, BoletoPayment, UtilityPayment, Transaction or dictionary]: payment entity that should be approved and executed. # - # ## Parameters (optional): + # ## Parameters (conditionally required): # - type [String]: payment type, inferred from the payment parameter if it is not a dictionary. ex: 'transfer', 'brcode-payment' + # + # ## Parameters (optional): # - due [Date, DateTime, Time or string]: Payment target date in ISO format. ex: 2020-12-31 # - tags [list of strings]: list of strings for tagging # # ## Attributes (return-only): # - id [String]: unique id returned when PaymentRequest is created. ex: '5656565656565656' - # - amount [integer, default nil]: PaymentRequest amount. ex: 100000 = R$1.000,00 - # - status [string, default nil]: current PaymentRequest status.ex: 'pending' or 'approved' - # - actions [list of dictionaries, default nil]: list of actions that are affecting this PaymentRequest. ex: [{'type': 'member', 'id': '56565656565656, 'action': 'requested'}] - # - updated [DateTime, default nil]: latest update datetime for the PaymentRequest. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - created [DateTime, default nil]: creation datetime for the PaymentRequest. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - amount [integer]: PaymentRequest amount. ex: 100000 = R$1.000,00 + # - description [string]: payment request description. ex: "Tony Stark's Suit" + # - status [string]: current PaymentRequest status.ex: 'pending' or 'approved' + # - actions [list of dictionaries]: list of actions that are affecting this PaymentRequest. ex: [{'type': 'member', 'id': '56565656565656, 'action': 'requested'}] + # - updated [DateTime]: latest update datetime for the PaymentRequest. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - created [DateTime]: creation datetime for the PaymentRequest. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) # class PaymentRequest < StarkCore::Utils::Resource - attr_reader :center_id, :payment, :type, :due, :tags, :amount, :status, :actions, :updated, :created + attr_reader :center_id, :payment, :type, :due, :tags, :amount, :description, :status, :actions, :updated, :created def initialize( payment:, center_id:, id: nil, type: nil, due: nil, tags: nil, amount: nil, status: nil, - actions: nil, updated: nil, created: nil + description: nil, actions: nil, updated: nil, created: nil ) super(id) @center_id = center_id @@ -42,6 +46,7 @@ def initialize( @amount = amount @status = status @actions = actions + @description = description @updated = updated @created = created @@ -173,6 +178,7 @@ def self.resource tags: json['tags'], amount: json['amount'], status: json['status'], + description: json['description'], actions: json['actions'], updated: json['updated'], created: json['created'] diff --git a/lib/starkbank.rb b/lib/starkbank.rb index 190f666..294dab0 100644 --- a/lib/starkbank.rb +++ b/lib/starkbank.rb @@ -7,10 +7,11 @@ require_relative('invoice/log') require_relative('invoice/payment') require_relative('dict_key/dict_key') +require_relative('dynamic_brcode/dynamic_brcode') require_relative('deposit/deposit') require_relative('deposit/log') -require_relative('brcode_preview/brcode_preview') require_relative('brcode_payment/brcode_payment') +require_relative('brcode_payment/rule') require_relative('brcode_payment/log') require_relative('boleto/boleto') require_relative('boleto/log') @@ -18,6 +19,7 @@ require_relative('boleto_holmes/log') require_relative('transfer/transfer') require_relative('transfer/log') +require_relative('transfer/rule') require_relative('boleto_payment/boleto_payment') require_relative('boleto_payment/log') require_relative('utility_payment/utility_payment') diff --git a/lib/tax_payment/log.rb b/lib/tax_payment/log.rb index ef6814d..e60390d 100644 --- a/lib/tax_payment/log.rb +++ b/lib/tax_payment/log.rb @@ -14,7 +14,7 @@ class TaxPayment # user, but it can be retrieved to check additional information # on the TaxPayment. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - payment [TaxPayment]: TaxPayment entity to which the log refers to. # - errors [list of strings]: list of errors linked to this TaxPayment event diff --git a/lib/tax_payment/tax_payment.rb b/lib/tax_payment/tax_payment.rb index 2e05aa7..0417173 100644 --- a/lib/tax_payment/tax_payment.rb +++ b/lib/tax_payment/tax_payment.rb @@ -23,18 +23,19 @@ module StarkBank # - tags [list of strings, default nil]: list of strings for tagging # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when payment is created. ex: '5656565656565656' - # - type [string, default nil]: tax type. ex: 'das' - # - status [string, default nil]: current payment status. ex: 'success' or 'failed' - # - amount [int, default nil]: amount automatically calculated from line or bar_code. ex: 23456 (= R$ 234.56) - # - fee [integer, default nil]: fee charged when tax payment is created. ex: 200 (= R$ 2.00) - # - created [DateTime, default nil]: creation datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - updated [DateTime, default nil]: latest update datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when payment is created. ex: '5656565656565656' + # - type [string]: tax type. ex: 'das' + # - status [string]: current payment status. ex: 'success' or 'failed' + # - amount [int]: amount automatically calculated from line or bar_code. ex: 23456 (= R$ 234.56) + # - fee [integer]: fee charged when tax payment is created. ex: 200 (= R$ 2.00) + # - transaction_ids [list of strings]: ledger transaction ids linked to this TaxPayment. ex: ["19827356981273"] + # - created [DateTime]: creation datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the Invoice. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class TaxPayment < StarkCore::Utils::Resource - attr_reader :id, :line, :bar_code, :description, :tags, :scheduled, :status, :amount, :fee, :type, :updated, :created + attr_reader :id, :line, :bar_code, :description, :tags, :scheduled, :status, :amount, :fee, :type, :transaction_ids, :updated, :created def initialize( id: nil, line: nil, bar_code: nil, description:, tags: nil, scheduled: nil, - status: nil, amount: nil, fee: nil, type: nil, updated: nil, created: nil + status: nil, amount: nil, fee: nil, transaction_ids: nil, type: nil, updated: nil, created: nil ) super(id) @line = line @@ -46,6 +47,7 @@ def initialize( @amount = amount @fee = fee @type = type + @transaction_ids = transaction_ids @updated = StarkCore::Utils::Checks.check_datetime(updated) @created = StarkCore::Utils::Checks.check_datetime(created) end @@ -193,6 +195,7 @@ def self.resource amount: json['amount'], fee: json['fee'], type: json['type'], + transaction_ids: json['transaction_ids'], updated: json['updated'], created: json['created'] ) diff --git a/lib/transaction/transaction.rb b/lib/transaction/transaction.rb index b7fece4..19ba880 100644 --- a/lib/transaction/transaction.rb +++ b/lib/transaction/transaction.rb @@ -26,11 +26,11 @@ module StarkBank # # ## Attributes (return-only): # - sender_id [string]: unique id of the sending workspace. ex: '5656565656565656' - # - source [string, default nil]: locator of the entity that generated the transaction. ex: 'charge/1827351876292', 'transfer/92873912873/chargeback' - # - id [string, default nil]: unique id returned when Transaction is created. ex: '7656565656565656' - # - fee [integer, default nil]: fee charged when transaction is created. ex: 200 (= R$ 2.00) - # - balance [integer, default nil]: account balance after transaction was processed. ex: 100000000 (= R$ 1,000,000.00) - # - created [DateTime, default nil]: creation datetime for the boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - source [string]: locator of the entity that generated the transaction. ex: 'charge/1827351876292', 'transfer/92873912873/chargeback' + # - id [string]: unique id returned when Transaction is created. ex: '7656565656565656' + # - fee [integer]: fee charged when transaction is created. ex: 200 (= R$ 2.00) + # - balance [integer]: account balance after transaction was processed. ex: 100000000 (= R$ 1,000,000.00) + # - created [DateTime]: creation datetime for the boleto. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class Transaction < StarkCore::Utils::Resource attr_reader :amount, :description, :external_id, :receiver_id, :sender_id, :tags, :id, :fee, :created, :source def initialize(amount:, description:, external_id:, receiver_id:, sender_id: nil, tags: nil, id: nil, fee: nil, source: nil, balance: nil, created: nil) diff --git a/lib/transfer/log.rb b/lib/transfer/log.rb index 2c9276c..6988d4c 100644 --- a/lib/transfer/log.rb +++ b/lib/transfer/log.rb @@ -13,7 +13,7 @@ class Transfer # is generated for the entity. This log is never generated by the # user. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - transfer [Transfer]: Transfer entity to which the log refers to. # - errors [list of strings]: list of errors linked to this BoletoPayment event. diff --git a/lib/transfer/rule.rb b/lib/transfer/rule.rb new file mode 100644 index 0000000..6517fb2 --- /dev/null +++ b/lib/transfer/rule.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require_relative('../utils/rest') + + +module StarkBank + class Transfer + # # Transfer::Rule object + # + # The Transfer::Rule object modifies the behavior of Transfer objects when passed as an argument upon their creation. + # + # ## Parameters (required): + # - key [string]: Rule to be customized, describes what Transfer behavior will be altered. ex: "resendingLimit" + # - value [integer]: Value of the rule. ex: 5 + class Rule < StarkCore::Utils::SubResource + attr_reader :key, :value + def initialize(key:, value:) + @key = key + @value = value + end + + def self.parse_rules(rules) + resource_maker = StarkBank::Transfer::Rule.resource[:resource_maker] + return rules if rules.nil? + + parsed_rules = [] + rules.each do |rule| + unless rule.is_a? Rule + rule = StarkCore::Utils::API.from_api_json(resource_maker, rule) + end + parsed_rules << rule + end + return parsed_rules + end + + def self.resource + { + resource_name: 'Rule', + resource_maker: proc { |json| + Rule.new( + key: json['key'], + value: json['value'] + ) + } + } + end + end + end +end diff --git a/lib/transfer/transfer.rb b/lib/transfer/transfer.rb index 3bedb9a..c885f6d 100644 --- a/lib/transfer/transfer.rb +++ b/lib/transfer/transfer.rb @@ -15,7 +15,7 @@ module StarkBank # - amount [integer]: amount in cents to be transferred. ex: 1234 (= R$ 12.34) # - name [string]: receiver full name. ex: 'Anthony Edward Stark' # - tax_id [string]: receiver tax ID (CPF or CNPJ) with or without formatting. ex: '01234567890' or '20.018.183/0001-80' - # - bank_code [string]: code of the receiver bank institution in Brazil. If an ISPB (8 digits) is informed, a PIX transfer will be created, else a TED will be issued. ex: '20018183' or '260' + # - bank_code [string]: code of the receiver bank institution in Brazil. If an ISPB (8 digits) is informed, a Pix transfer will be created, else a TED will be issued. ex: '20018183' or '260' # - branch_code [string]: receiver bank account branch. Use '-' in case there is a verifier digit. ex: '1357-9' # - account_number [string]: receiver bank account number. Use '-' before the verifier digit. ex: '876543-2' # @@ -25,17 +25,18 @@ module StarkBank # - scheduled [string, default now]: datetime when the transfer will be processed. May be pushed to next business day if necessary. ex: DateTime.new(2020, 3, 11, 8, 13, 12, 11) # - description [string, default nil]: optional description to override default description to be shown in the bank statement. ex: 'Payment for service #1234' # - tags [list of strings]: list of strings for reference when searching for transfers. ex: ['employees', 'monthly'] + # - rules [list of Transfer::Rules, default []]: list of Transfer::Rule objects for modifying transfer behavior. ex: [Transfer::Rule(key: "resendingLimit", value: 5)] # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when Transfer is created. ex: '5656565656565656' - # - fee [integer, default nil]: fee charged when transfer is created. ex: 200 (= R$ 2.00) - # - status [string, default nil]: current transfer status. ex: 'success' or 'failed' - # - transaction_ids [list of strings, default nil]: ledger transaction ids linked to this transfer (if there are two, second is the chargeback). ex: ['19827356981273'] - # - created [DateTime, default nil]: creation datetime for the transfer. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) - # - updated [DateTime, default nil]: latest update datetime for the transfer. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when Transfer is created. ex: '5656565656565656' + # - fee [integer]: fee charged when transfer is created. ex: 200 (= R$ 2.00) + # - status [string]: current transfer status. ex: 'success' or 'failed' + # - transaction_ids [list of strings]: ledger transaction ids linked to this transfer (if there are two, second is the chargeback). ex: ['19827356981273'] + # - created [DateTime]: creation datetime for the transfer. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the transfer. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class Transfer < StarkCore::Utils::Resource - attr_reader :amount, :name, :tax_id, :bank_code, :branch_code, :account_number, :account_type, :external_id, :scheduled, :description, :transaction_ids, :fee, :tags, :status, :id, :created, :updated - def initialize(amount:, name:, tax_id:, bank_code:, branch_code:, account_number:, account_type: nil, external_id: nil, scheduled: nil, description: nil, transaction_ids: nil, fee: nil, tags: nil, status: nil, id: nil, created: nil, updated: nil) + attr_reader :amount, :name, :tax_id, :bank_code, :branch_code, :account_number, :account_type, :external_id, :scheduled, :description, :transaction_ids, :fee, :tags, :rules, :status, :id, :created, :updated + def initialize(amount:, name:, tax_id:, bank_code:, branch_code:, account_number:, account_type: nil, external_id: nil, scheduled: nil, description: nil, transaction_ids: nil, fee: nil, tags: nil, rules: nil, status: nil, id: nil, created: nil, updated: nil) super(id) @amount = amount @name = name @@ -47,9 +48,9 @@ def initialize(amount:, name:, tax_id:, bank_code:, branch_code:, account_number @external_id = external_id @scheduled = StarkCore::Utils::Checks.check_date_or_datetime(scheduled) @description = description - @transaction_ids = transaction_ids - @fee = fee @tags = tags + @rules = StarkBank::Transfer::Rule.parse_rules(rules) + @fee = fee @status = status @transaction_ids = transaction_ids @created = StarkCore::Utils::Checks.check_datetime(created) @@ -197,7 +198,6 @@ def self.resource resource_name: 'Transfer', resource_maker: proc { |json| Transfer.new( - id: json['id'], amount: json['amount'], name: json['name'], tax_id: json['tax_id'], @@ -208,10 +208,12 @@ def self.resource external_id: json['external_id'], scheduled: json['scheduled'], description: json['description'], - transaction_ids: json['transaction_ids'], - fee: json['fee'], tags: json['tags'], + rules: json['rules'], + id: json['id'], + fee: json['fee'], status: json['status'], + transaction_ids: json['transaction_ids'], created: json['created'], updated: json['updated'] ) diff --git a/lib/utility_payment/log.rb b/lib/utility_payment/log.rb index 65cd9bf..7c288fa 100644 --- a/lib/utility_payment/log.rb +++ b/lib/utility_payment/log.rb @@ -13,7 +13,7 @@ class UtilityPayment # is generated for the entity. This log is never generated by the user, but it can # be retrieved to check additional information on the UtilityPayment. # - # ## Attributes: + # ## Attributes (return-only): # - id [string]: unique id returned when the log is created. ex: '5656565656565656' # - payment [UtilityPayment]: UtilityPayment entity to which the log refers to. # - errors [list of strings]: list of errors linked to this UtilityPayment event. diff --git a/lib/utility_payment/utility_payment.rb b/lib/utility_payment/utility_payment.rb index 7609354..460e20a 100644 --- a/lib/utility_payment/utility_payment.rb +++ b/lib/utility_payment/utility_payment.rb @@ -23,14 +23,17 @@ module StarkBank # - tags [list of strings]: list of strings for tagging # # ## Attributes (return-only): - # - id [string, default nil]: unique id returned when payment is created. ex: '5656565656565656' - # - status [string, default nil]: current payment status. ex: 'success' or 'failed' - # - amount [int, default nil]: amount automatically calculated from line or bar_code. ex: 23456 (= R$ 234.56) - # - fee [integer, default nil]: fee charged when utility payment is created. ex: 200 (= R$ 2.00) - # - created [DateTime, default nil]: creation datetime for the payment. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - id [string]: unique id returned when payment is created. ex: '5656565656565656' + # - status [string]: current payment status. ex: 'success' or 'failed' + # - amount [int]: amount automatically calculated from line or bar_code. ex: 23456 (= R$ 234.56) + # - fee [integer]: fee charged when utility payment is created. ex: 200 (= R$ 2.00) + # - type [string]: payment type. ex: "utility" + # - transaction_ids [list of strings]: ledger transaction ids linked to this UtilityPayment. ex: ["19827356981273"] + # - created [DateTime]: creation datetime for the payment. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) + # - updated [DateTime]: latest update datetime for the payment. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class UtilityPayment < StarkCore::Utils::Resource - attr_reader :description, :line, :bar_code, :tags, :scheduled, :id, :amount, :fee, :status, :created - def initialize(description:, line: nil, bar_code: nil, tags: nil, scheduled: nil, id: nil, amount: nil, fee: nil, status: nil, created: nil) + attr_reader :description, :line, :bar_code, :tags, :scheduled, :id, :amount, :fee, :type, :transaction_ids, :status, :created, :updated + def initialize(description:, line: nil, bar_code: nil, tags: nil, scheduled: nil, id: nil, amount: nil, fee: nil, type: nil, transaction_ids: nil, status: nil, created: nil, updated: nil) super(id) @description = description @line = line @@ -40,7 +43,10 @@ def initialize(description:, line: nil, bar_code: nil, tags: nil, scheduled: nil @amount = amount @fee = fee @status = status + @type = type + @transaction_ids = transaction_ids @created = StarkCore::Utils::Checks.check_datetime(created) + @updated = StarkCore::Utils::Checks.check_datetime(updated) end # # Create UtilityPayments @@ -184,8 +190,11 @@ def self.resource scheduled: json['scheduled'], amount: json['amount'], fee: json['fee'], + type: json['type'], + transaction_ids: json['transaction_ids'], status: json['status'], - created: json['created'] + created: json['created'], + updated: json['updated'] ) } } diff --git a/lib/webhook/webhook.rb b/lib/webhook/webhook.rb index a62e7f5..86d84e4 100644 --- a/lib/webhook/webhook.rb +++ b/lib/webhook/webhook.rb @@ -15,8 +15,8 @@ module StarkBank # - url [string]: Url that will be notified when an event occurs. # - subscriptions [list of strings]: list of any non-empty combination of the available services. ex: ['transfer', 'deposit'] # - # ## Attributes: - # - id [string, default nil]: unique id returned when the webhook is created. ex: '5656565656565656' + # ## Attributes (return-only): + # - id [string]: unique id returned when the webhook is created. ex: '5656565656565656' class Webhook < StarkCore::Utils::Resource attr_reader :url, :subscriptions, :id def initialize(url:, subscriptions:, id: nil) diff --git a/lib/workspace/workspace.rb b/lib/workspace/workspace.rb index 83a90cb..2362a24 100644 --- a/lib/workspace/workspace.rb +++ b/lib/workspace/workspace.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require('starkcore') +require('base64') require_relative('../utils/rest') @@ -18,15 +19,23 @@ module StarkBank # ## Parameters (optional): # - allowed_tax_ids [list of strings]: list of tax IDs that will be allowed to send Deposits to this Workspace. ex: ['012.345.678-90', '20.018.183/0001-80'] # - # ## Attributes: - # - id [string, default nil]: unique id returned when the workspace is created. ex: '5656565656565656' + # ## Attributes (return-only): + # - id [string]: unique id returned when the workspace is created. ex: '5656565656565656' + # - status [string]: current Workspace status. Options: 'active', 'closed', 'frozen' or 'blocked' + # - organization_id [string]: unique organization id returned when the organization is created. ex: '5656565656565656' + # - picture_url [string]: public workspace image (png) URL. ex: 'https://storage.googleapis.com/api-ms-workspace-sbx.appspot.com/pictures/workspace/6284441752174592.png?20230208220551' + # - created [DateTime]: creation datetime for the Workspace. ex: DateTime.new(2020, 3, 10, 10, 30, 0, 0) class Workspace < StarkCore::Utils::Resource - attr_reader :username, :name, :allowed_tax_ids, :id - def initialize(username:, name:, allowed_tax_ids: nil, id: nil) + attr_reader :username, :name, :allowed_tax_ids, :id, :status, :organization_id, :picture_url, :created + def initialize(username:, name:, allowed_tax_ids: nil, id: nil, status: nil, organization_id: nil, picture_url: nil, created: nil) super(id) @username = username @name = name @allowed_tax_ids = allowed_tax_ids + @status = status + @organization_id = organization_id + @picture_url = picture_url + @created = StarkCore::Utils::Checks.check_datetime(created) end # # Create Workspace @@ -112,16 +121,31 @@ def self.page(cursor: nil, limit: nil, username: nil, ids: nil, user: nil) # ## Parameters (required): # - id [string]: Workspace unique id. ex: '5656565656565656' # + # ## Parameters (conditionally required): + # - picture_type [string]: picture MIME type. This parameter will be required if the picture parameter is informed ex: 'image/png' or 'image/jpeg' + # # ## Parameters (optional): # - username [string, default nil]: query by the simplified name that defines the workspace URL. This name is always unique across all Stark Bank Workspaces. Ex: 'starkbankworkspace' # - name [string, default nil]: Full name that identifies the Workspace. This name will appear when people access the Workspace on our platform, for example. Ex: 'Stark Bank Workspace' # - allowed_tax_ids [list of strings, default nil]: list of tax IDs that will be allowed to send Deposits to this Workspace. If empty, all are allowed. ex: ['012.345.678-90', '20.018.183/0001-80'] + # - status [string, default nil]: current Workspace status. Options: 'active' or 'blocked' + # - picture [bytes, default nil]: Binary buffer of the picture. ex: open('/path/to/file.png', 'rb').read() # - user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call # # ## Return: # - updated Workspace object - def self.update(id, user: nil, username: nil, name: nil, allowed_tax_ids: nil) - StarkBank::Utils::Rest.patch_id(id: id, user: user, username: username, name: name, allowed_tax_ids: allowed_tax_ids, **resource) + def self.update(id, username: nil, name: nil, allowed_tax_ids: nil, status: nil, picture: nil, picture_type: nil, user: nil) + + payload = { + 'allowed_tax_ids': allowed_tax_ids, + 'status': status, + } + + unless picture.nil? + payload['picture'] = "data:#{picture_type};base64,#{Base64.encode64(picture)}" + end + + StarkBank::Utils::Rest.patch_id(id: id, user: user, username: username, name: name, **payload, **resource) end def self.resource @@ -132,7 +156,11 @@ def self.resource id: json['id'], username: json['username'], name: json['name'], - allowed_tax_ids: json['allowed_tax_ids'] + allowed_tax_ids: json['allowed_tax_ids'], + status: json['status'], + organization_id: json['organization_id'], + picture_url: json['picture_url'], + created: json['created'] ) } } diff --git a/test/example_generator.rb b/test/example_generator.rb index c3de563..e1932e6 100644 --- a/test/example_generator.rb +++ b/test/example_generator.rb @@ -116,8 +116,14 @@ def self.brcode_payment_example(invoice: nil, schedule: true) StarkBank::BrcodePayment.new( brcode: invoice.brcode, scheduled: schedule ? DateTime.now + 600 : nil, - description: 'paying a PIX', - tax_id: '20.018.183/0001-80' + description: 'paying a Pix', + tax_id: '20.018.183/0001-80', + rules: [ + StarkBank::BrcodePayment::Rule.new( + key: 'resendingLimit', + value: 5 + ) + ] ) end @@ -140,7 +146,13 @@ def self.transfer_example(schedule: false) account_number: '10000-0', account_type: 'checking', external_id: 'ruby-' + rand(1e10).to_s, - scheduled: schedule ? Time.now + 24 * 3600 : nil + scheduled: schedule ? Time.now + 24 * 3600 : nil, + rules: [ + StarkBank::Transfer::Rule.new( + key: 'resendingLimit', + value: 5 + ) + ] ) end @@ -205,6 +217,14 @@ def self.create_payment end end + def self.dynamic_brcode_example + StarkBank::DynamicBrcode.new( + amount: 100_000, + expiration: 3600 * 2, + tags: ["test1", "test2"], + ) + end + def self.organization_example StarkBank::Organization.new( environment: 'sandbox', diff --git a/test/starkbank/test_brcode_preview.rb b/test/starkbank/test_brcode_preview.rb deleted file mode 100644 index 8ac01e0..0000000 --- a/test/starkbank/test_brcode_preview.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -require_relative('../test_helper.rb') -require_relative('../example_generator.rb') - -describe(StarkBank::BrcodePreview, '#brcode-preview#') do - it 'query' do - previews = StarkBank::BrcodePreview.query(brcodes: ["00020126580014br.gov.bcb.pix013635719950-ac93-4bab-8ad6-56d7fb63afd252040000530398654040.005802BR5915Stark Bank S.A.6009Sao Paulo62070503***6304AA26"]).to_a - expect(previews.length).must_equal(1) - previews.each do |preview| - expect(preview.amount).wont_be_nil - end - end -end diff --git a/test/starkbank/test_dynamic_brcode.rb b/test/starkbank/test_dynamic_brcode.rb new file mode 100644 index 0000000..b47ae57 --- /dev/null +++ b/test/starkbank/test_dynamic_brcode.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require_relative('../test_helper.rb') +require_relative('../example_generator.rb') + +describe(StarkBank::DynamicBrcode, '#dynamic-brcode#') do + it 'query' do + brcodes = StarkBank::DynamicBrcode.query(limit: 10).to_a + expect(brcodes.length).must_equal(10) + brcodes.each do |brcode| + expect(brcode.uuid).wont_be_nil + end + end + + it 'page' do + uuids = [] + cursor = nil + brcodes = nil + (0..1).step(1) do + brcodes, cursor = StarkBank::DynamicBrcode.page(limit: 5, cursor: cursor) + brcodes.each do |brcode| + expect(uuids).wont_include(brcode.uuid) + uuids << brcode.uuid + end + break if cursor.nil? + end + expect(uuids.length).must_equal(10) + end + + it 'create and get' do + brcode = StarkBank::DynamicBrcode.create([ExampleGenerator.dynamic_brcode_example])[0] + get_brcode = StarkBank::DynamicBrcode.get(brcode.uuid) + expect(brcode.uuid).must_equal(get_brcode.uuid) + end +end diff --git a/test/starkbank/test_workspace.rb b/test/starkbank/test_workspace.rb index ca442f4..00122e1 100644 --- a/test/starkbank/test_workspace.rb +++ b/test/starkbank/test_workspace.rb @@ -43,4 +43,30 @@ end expect(ids.length).must_be :==, 4 end + + it 'update status in workspace' do + workspaces, cursor = StarkBank::Workspace.page(limit: 1, user: ExampleGenerator.organization_example) + + workspace = StarkBank::Workspace.update( + workspaces[0].id, + status: "blocked", + user: StarkBank::Organization.replace(ExampleGenerator.organization_example, workspaces[0].id) + ) + expect(workspace.status).must_equal("blocked") + end + + it 'update picture in workspace' do + workspaces, cursor = StarkBank::Workspace.page(limit: 1, user: ExampleGenerator.organization_example) + file = open('test/utils/logo.png', 'rb') + picture = file.read + file.close + + workspace = StarkBank::Workspace.update( + workspaces[0].id, + picture: picture, + picture_type: 'image/png', + user: StarkBank::Organization.replace(ExampleGenerator.organization_example, workspaces[0].id) + ) + expect(workspace.id).must_equal(workspaces[0].id) + end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 416b7ce..00bc0ee 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -2,6 +2,7 @@ require('minitest/autorun') require('minitest/spec') +require('bundler/setup') require('./lib/starkbank') require_relative('user.rb') diff --git a/test/utils/logo.png b/test/utils/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..00867ecb6b04a124d10985c7c3b9a56aede3982f GIT binary patch literal 158721 zcmeFZcQo7o{|DMqs#LYL+A6vgMO#H{mzLU!h*1=^g|@_wSrkR9_8zqoF=7O<6|FrJ zd+$hM2Qlv3=XZbSo_o)^_k6$q+`m5m_``|ho!59iAL}VZQ(cjf{s#S-GiMl;-n`N} zbLK+KnKNfs>1cu9xU4<3J#*&P8KqY*b=-{CCeD8}!lf+jbARr>^~V1e)mcmb7ykMe zud?QS_^VX0uv-a1OH{rS852&jwXLv4Fku9{H;cI;?a13D@ls%ddxF@u!G07_@AMoyXE_z{_y>EM$V#) z`rKvNGiU$9AAX`|fj^=74`2O1?^<*w}FX=KuM32R>$<{xVg2iU)rrN{udj0hRPV& zmS?p8Zp(kXX#Z}@zqjSTxs?AFv44x$f6>DJ?JfVd{Qm}7{M+*XMPmOkcDd#2`!7KL z7a;!^^ypvS@-LnIZ&>TUbn;)8|6hm+|B5gFiZB0-^!Bg#@~`;v|G)UMyhMd7G6CD! zAq)%*S#PrZYG`Qi7HnF)`~P}$d+P!5c87G-gZ<|<Ln|uk9_ke!TJz?^_4?1+^*+VX^s{nOZTRAvgk|Ew7!Gn3%}QdL`q} zAG+7C75JnDbvHIX34X9_lVtnP`gON00x#Eh9|Qs;O7fLLE?l@FX`QZMX=T$szmfO?f|8S$V_{(#bmIRbar^&u zm3(E309hOl@}9hT3Q5x?Xh!8sbzv>=l0ocHeqo()c(|Iay}ge7&n3)+tfQ@c6bQ0$ zIKq6>&feB#rUV(?N|ErE!XCWI{yG_)*DwB z{Vh#RZ__g}zO{an*Ca2`x>~npC3Z5hMSe_P*e|6Si1#j#Fr+IA2UPcM8Ncdkj})QG z^Z>;O8(b>2c$`UkW>_2)StG~D$Y|?e^NF>6cGgVfv4yWf9anel2$D+#fi9Wv_w-3+H2Z7YWZ4q|kl*qy%w$As*U}!_dJ_XX((*UTb*HPk@xm( z-UJ|Br*u+u~5_mspiuin`gC`4W>j6VA}G&J;suZ|cg z_;`C0LcS+xRF`?!bSFjJNj+ra(+v?xMJ1(>(2x)p7|+Fayav)A^7?dr3eRMq>M)KY zPfrh255w@XFyfI5!JvwRQAby|upjl*NMP%50$%tIk@p>Bk?&}&X&#V!HNlmygDt5W z)uLvzzYw=Xg0TJ-zwuCb`wThl3=JmKA~pYUKtRBF;D?W2mq^4Oll|%q(yrs}MtX(| zpbsCu%+Ae4M}MCdRQP#yE+#%ceg3!G{oif;q7OzvujgjVdc>fjmw^+$eAQ2QsoQSK zulZno03_~l_$xF_g~*Xy(VoZ_mHGk}y4aJNZK1;UkoQT33O1Pie-6O^WwA}aq$#K; zZ^oD*_w36r-IRuhu?t}?8DL_&+TVaDzwsJWe8|8nT6`x4*lu|-7bm=J=jYoY2B+C} zL>R&I3Upt&#YZtSi$L06sdaK@y}kRHPPqTwKjrk`3$Sd`B^)Dkr^`lS7}gi-)4qcdlgZi)S?-N!90t!0#b$;*D-bb6R_^CGL&O$D%DMfQj=;|rDZ zG*tFA^1f8mR1>aA^m&Ay-2`Gj3coK#fuVhv=!)T$Vs)NrPFp>MPkyOw=Rdw%p5|Hs zGm&*7E2icih>YOEw`?SE#I9`Q#8`ToCWW36q-P!9)Ffv!P+Mg#zBlP&WC`hrU}g*t z7o!a>uO?wzfsQecNIA=9U%boCc7u;$BRJ@b2WWsKZ8c(A1 zifneZb#k<+kT!acCtYfshvw=f1xG*aEY_nr?~ZXzm3oG_%BP=PU@@v$Yx>~hHV5Gp z|NIUVGlZ(*0V*!A?!WFcEUmOS!qlj>X&=VgjU3}-t4+g%OnCcNgspbQWNI>YIM9`K zW|U5}Q#vn{*knxK6_)w-a>F(hR2&V{&wcai!-| zmiWhv^UjEV!oldzNSocx{2MY3&Wfqs=2w=BWg!qGA0I-;Z3U&Q(lP#rl$dw}>=*md zwe2~QdLTt3NY7$iQ)6iSG9r%y{{6eGBh5tb^m`ip%0&f{iS+N6$yStcM?@JuAN9GG z^?$PfH5{8UaLn$g)KJJ!iNI1{t-$+wgv;H`^?p{PT7yMC)iDx^Gww#x4Ns9Za~w$Y zE6;-mS{oZB4wrj;=kK}JnG;f4WX=_EH_-lMH4)JM^eNvKsqAhPfXO#cS;t-{MO>G5 zAy}p*xMcA@c%blCY2(H;-%lPsQPI(fTkAtTI;GFRNybFwPa%Rvyt<#15+tMzS>5VQ z9LDo5RKK;EbfEI6^M7{|%E?rJn6T7i>QYccn3C+Vqr6~UJgT!OKI?t!J#}84Ug=v7 zv^}n+1N^Rdc&CW=TxH#$(p=k0Uog83vB0L#gN1>LiSOh3@+ag(@oRo?5pL#g+xSs% z#jzK|#IK9j(l5*@*saX&dpQ4<*ZJ$I`7w1Wi^`?eQur*V4AdY_Fb!w@~< z`{}+sdBfB2A~vJyg4tO_q2pkah0FI6{MDpU34T~!YxwmAxm1_b0cM5_RI28p)IViY z{NDS!Mugu(my+3q*zx@q_`F9TC7b+F_;-B^)aE8VIHXft^ytZR?Coent~CY8FJCH^ zpNPJ;^jG_NoxAAEIf_$FRMc!ta`dn0U$4aO2)*Ea`=sw}azh36gm^OpJp*)g&7D)i zMY$zAyIS{cKCM_d-0ED7os+bSc_wF4tNdkav@b%-vhgVgjE!qioRRh(5C7e}YI6$V zn(8jG7^Qw~b^(I%CoZ=nUzl!+w3B*L1))C|fwd)1Ql}JF#>ZbS`ed$%-w5XJ-&Bm_ zlYI1zgH%=}$X?tXwYAUgd^o5NwA)svIBLTKxewda)x5&OPkuRD0FKC5j|x>$cJAWj zhYt-8ui2QWb=lhP>a;q=LF$}=lior9ap>Sh>SPH9Nk4t}RxBa}()NY{tx#>Ale<|1Qn`5H(#Abzz00!GbySRu z;qb!zJ`P8pJSJ)V{HDx1Al%^OZcQV#_Os7!5p_p9xn=LwQz=GSpF3gh?hR7sDhR_! z^yG;ihRiuwb?86FWs|nT%lkJ`#xsY@2&H*9$O_}6#&+)T<@BEt=24&J_+6sRGVM4H zi>unYNm*0<8a9+%v*NKBVnI(&?{Y+U^vTA?W+)%%34J^!%U+E%Mgsh z7v6oa7%>1GBkT9dD6`BgiFNf9pNAQ!?y(KkQ;Omzc(s^gl5M_(r2?vB07CI+gC`od zrf1B>-R9#Zz8VDI@2I62RhZTXWpsXf7XIgY&J`?gim+-v_4(>Ei8L<@Ucti?)2SB_ zsV-064#$a&BH$`{B&i)5`W-}{S zUW}aLHZFaX?5->3_Mce}DqU!66SZ!M*HmNkXoXYJ?wZUzm1Q{;T2~UqRLQ2zqt<)) zqI7#cOXVGu+N9bT{dlTcZLHj5f);krVgP20SU9F~NiJ)Edc8}gsFuu`%E{G8h#H)z zdcErmPaEr*W#u%#P58s{vb-p$k&q)WU^6+Dthg<7mZ8$X?Pvi!H5jU)I|-dGITAF8 zNvS{j%e39OX+f+R>Q>Ufyj;+b2u<4Ft}^=BgXNtS~3?l&9aq7SjMPf8r5 zZ-owDy8XWNrq^bR0b#sWLw7s_VuNTU9}0Ku_#7VfjF(3-MlU;tP4w8?+xO=PjO~~l z&&2UnyRB5nrMSJvVPQ-;mq@F3xR8gb}qa`zH@Uixw- zfQmt;CNVLE;(;>bUzZ6+6E0?stal6UJ{1>l2R#gn2yw~E=+{2a&%>iK()=_gCUvpt zj853z=OW;e4D4^QZ;y^~TX#fEI5_)SIb-UXs)&TxzZ5dfS@5FdQ#oxOjluC68v{w7 z!l(TM2TeIUBamW_0$qa5&ZwHlTngC;+9P4~y@I_#t>fmkyuZw!cX|&;3=VoF!*8Ze zOy+JqKS$(!f0hW4&T<$|y7su6B6!ZGG5T2V2R1D+l%x0ZwPiSAct2MyWi98hdIe*3 zAVks6W4PPa^84X!Vn@=dt_{usHP+>VX>?f1-Ssk|*WMeD-Ux(F)Hy}!BFBCqCCJO; z`(EITPVS}*tS<6MEioQZRhom(*mrMle?z9}_pZO>@~Ajsmw+MLE)kDLtE}oVes-+w z_I#H)Mkd(V7;c1fy?7^ce9Vw2`2_swQ;GBw)|~yZhA&e!n>@&g$`%ky`K{+2M>GZP zH9J*hoE#HRo($%+mht8VNNIlnngSUvS+++KpAWxa6kWH>$Z4ti z$9cyCJtqdAK0R?*-94@tmg;JU+X6fmbVBwyu>xP7!{UvSxSUsiZ5$jk^zgf`EgviV z-gS|kUaRureD0-VhjqlBX zWp1xIf2yH0fX@|d^~srG&)Pec#>K|0tnGWHh$j_k=XL|=B(snuZuBOrw~VKM(VB7kjdHkbvugo|!3 zTGn9oy;${T@YGSz1NA>p5K~qDj5g*E@|)UA9Rm+gTEV;Aat<-O0W7DHF0{|VI{Xh; z4hcqi(UtmQC@}tl&z>>II$8v^Ds1RV#I8b5-ga##AvAMau8 z#g1DeuIF>ttV7jOBpYe&yuhubxGed%;EM453;Yh^q#-=IGQTD=O?<-YdVHGyH1t+aJsTFhCYH5F$bjWK=#zU?&lAtP%GMh2=BjS`XZpCQ{^v(?Smu$SI zu(ozxd#6b(^;6>~+R;gkZ$9-&4NC~zN_LzHbjY1B**d`{5nN{TJx=DhIQCI8B0-yn zSM))U-HpUp4Ti&+a`et*XwUd|1Y2q~)cs&Xahv;u$fKo5-Y z*;_cNncLtow@!SZac#-c<64?TPW_dVTEgW#1j04u4CEuBRbXtqAwN?kj&z{PuBFad z5a?uOM=Z!sd;(F942r%GQ*NHSdHJ87TF46E9&9%M{n1*|_oO%&$xq(lx4fDfGU>Qq z;kxj|dtBleVubOzn4IYI;V!%b&+UqkF^oO!K6p$Gc#^)T)Y}eteo-8*3(Z(w!_(WO8&s9xd@qYj2lgO{+F5 zF%JPX9?pabE&piQib+UagtL^~TE9g#BqDM^#!beC?@7BHMz3<*;F@1>D~zOfgTHcv zb5$1^=G2w-#C`or$M{Bluy;@gd}ScV8ErEil%2~jDw^2C!99VlFkpLDVsqn|P>$Yi zNBHPEIdyO<;ttjyRDw!*QM4D|^!NB2+!aVn%l-B1m4i6BU%iw=6dSQ7PMGV_#rO8j z70M;-a5#7As|i7dr6yh8tlkof`CC(SU2uJxVQItySGY2tFMQy5a%e~xt?d!wV>*~j zg-qR`c_@3{PR7BD+5D^uvz|T%; zT<~%zCs?Mcm3)u>p56%1D%cyi{j2TXjQsYSi8}!yGRpKZhEOxe{<3j`c-9 zb9-F&yTA;$deVed!q~g}vQ)UDKpasbm)OpU-+u3>h_KuaGpU{Tr)E=L;nz-p`e&KQ zv`8zg#hWdqi^c?j2GqVrg0=i%_aFWR*(rS#>(P$-IllemNlD+)=XORD`-j*P@7Znr z+8v^z2PGg9_K9_@R$X*>ks{-X+TAf^;T>uYq5C%bTP2NaDg$`s-y}w z<26JWP4J_FldbxF71!nlKG4p5xId<9bTCd)BiXr;5y8^dFF}Q6yVKOn!oh*~_4{1* zz5CVpr>?3uzZdxN{=E_XRF?YurH^gu9Oq^k2)V9hZn!$Z_u6+z;}{c@f{}Dr>AhbQ z)LM_c5@Md{Oi{2~g=Qmvu8hD^LJ9Z>ei2{VCDW#63TvfyhVLedKv1pUxcb!WT08En zPXpRM5%MN)t#M4x$2%}*(K1CGrt5j>X8$OoA@p#b*XUu58~7@oy+f57?p|tT+pQ|$ z`u7veLJF3ukypTs#M17ejpJ4g3laJEWsROq*E8ESXYyvSq{uM= zdS-0UFt)IQ0fxUQ?X~@@f-pX(z;0->9E*(=L?rg(q%fY8M;|N)c)tDli~Y4R_YBhR zW|7SVQf@yZ#)DRC?8WiN>n9!Iz{kH%b~S|l=2(~Sb^rqhu54c;!-lqc9^s;BoSs?q zyE&8{Xv&xLJWZmX9{|~HkF-Na>+Fg`RY)?7ZxqEE#pfV5I!6GQ;&{C2c_UHuHz&W| z<>ha_<@yN!&H5vg`rai3HorVOyGJ*D~Or%k>~-g=)1`oy!!$JNu?iCN!Sem=!j8-RsnQ z_b&4k#l#668GG(>)?`Hl`U`m3#DLd?haEl-pB&m$dC#pi3lreTswGVBD2emfKC*se zxFWOxqFqsKRaW5vuO2b4zS6`eaR0$QYaR6pJDFXJ0Gjhm%Aba$2*Yk$-Yc!3nd~de zSI$zTN{jJHBxEnJ`DLVOQ(Po&vZb4cy)z;Ee%PYj$SjSNw{}G>{_mWZVfx(+RE0o^ zY%wUYgipAG+h|ofEx~^XO?L7zl900?Pi_IO5#F&iz|mD+J_~@$+xx4G256fwfQ8P{ zqsDDYJS$9ROmF;<>SSE=wl+@1FbxctqAH+wb+92vCR2|mBXg-=Nrx0 zbJgm%B=roE?=RegPS|ZKOYv)(Or^KOl{qDyRVhrILmNMHL4ayj7;B_$VG(1CU#+e+ zM_QqW>!*-NzE{r9(X(deG2bueek;4(&J~+~0br-Y#j4r4*?+0hYN7r8DNTZ3J{?ti zZ*3wDT8g|0$K#-Z-_RwGtx>w|SYMdBWa;5scD|%15EMfiYA;CE-2A7lo!t%v;5riA z1)6_{o{l`JLa<9X3#9-DdzJr&XOCyabpP*SBNKqRFWwQ@vmNiKG@jX6O=vDMY$u3Qc=`$m-oNo)-F z^d2`JI6aEDW^FIv&tHLg>Ap`Y4g$#%|5%~x}z zmQ0uN)WojjxJ25ee&bZF04OfjaWcoeO{3aIha{>Uume*|cx>!0oNLo}D9LzT@(tj1 z)>f2!X%~O#n1LEqu<3cdq8Xy2#|siuVtKZ5?t#Y3X+f&D8U5r|6WqMc$&I1mDOYQi zu-vB!UAMhwX77td?ezjegV*+#Zgv(pygD)Ii+BH<(Hyi2$5TCX#qf`;odCd&j*40n zbV1g@)zk*TRF)86k-f=^N6kVfxoKmgJ z9&uXQAvx9{G{A+ioJknrdlJtCKw*nLeNn-SRY~cvh019O&oZBakcqG56_olDoXPT* z2%gfWP#REWf_b^PpPu0Rt81m1O`D5q5YYxbg7rM@G*z*#1-$Ux)E>_AQl6 z2*~EGO*VaLug1{qB5~-F`v5=%GzX=m3SxgXV-j?2&;|_MQ4gC)Qd3vgvTW59NR$DW z=BQ}_sz$A}JY5D#y-WpMcTlZka5ts)0a8MURac3TP*gk?;<~^~2k0kq7ROcfc#a!7 zTAx99F$fOJi79jH@g5q)Rz{#=7h^Al-`LXdt1HKfT6~8-4mx)pbE)kmAo=k)R_ACW zlMx9jm4Ea4!(EA7@v&?<`LsNgs_OHE~E1er(j8x`phP5V3`V16NmN;+6CGkl) z4QWtR&VgQTXl$MkABsR`PROcqO1=@2Jo#pPxVz=xAucX2QMGljF)+#(b5wM)a{`TN z2b$(rU)bXC3!9Ic-z8ibFJ0*|=eXzTZCf?+6$ztiC#aK&rLH?pV9h(sm@Z0=?f^jtpWah7skEM^0wh=4<@p(5r zOhOcJ6y{Q4`bo+f9GN9qinfboN{NphzDWdI*-o90S=_I^T@1k)ixC#AObS5Wje%o@ z?%K5X?0y$N0u2o=8@vwWIP`MbAy&{=mRhL~h@~14^Q%+ThX|9yamRRjjGqK3t+=7j*nE@eQ;O>E=2_e zKJ(?v*}1t@NzQ;W{w{%dJ3qi^1cWc%UJBGqkReH7Yjc5!1>i7u4qcS9km~YjBbW9( zPO@#w;iOE|*B5H%_N;#Xq=YU?G8$BPrLdg96T5<$^3n}Bf9XSel>?aM>G*yr3^0OM zWSIHzo)YM|ia%6E8=p#)IiJ0er)6?pLL^+bxe@z=C_Z06^<9k>JC^df_V)n9aZL1R zfrlS=l@BkvP)BKUacYIP+fP*)BCrr_5OORg&8HCrS*;79_QVaq7xbXXO3a_j5Bu(; zR)mn5(M2%P2_YTPkFqF*h(CRDyG90ud{UgE;muUhipK0 z>PbU3`2awoFb2H5TK+jE#>i>t9f9P~V5y=K?2gQB9o4b7{|2}vHrBTApi62XU4?2? zu!Z%j?#C@{Exe)Y_Q4Q$xgPpqks{ERCnZ2*yE`~-c|L!D=sJgOY5Lj0CZwYVK_ci; z&?PRir!zh(C1!=TTbev*4w$K0Jq{O1i)5ZI=O*dadt~Afj<)>(qAYhJO9K+rKSFh7*>=Pwmy2(d)Um@)?urOG z=4@K3Vta4rOAqv@=dGPhDhm9=htH;N>2LMQujv+M%@O$Ukn3_>F4+#KMRoNQDfUf) z(;Ucgpd3NMO$RRu>Fb`LfDFM)IW+HAlBis$1w}=5nLoE#W4DzOpF0#JIXo19ss&)X zTH~Pd(p8}2^0#drWC3%yQ)74+=8Bq3xinab`pHq6PgZC>0A{Cj0&fA<)eVZ3ex@;Xvb#kL@}t>> zL8?shI{A#lxy2Nw+;%Sr7(d40bf+A#Z3p-4dvj?1(hC`31DnFyg&y`-`7=~&IxEGn z#uV0fIj95dwu9X$q{}Ezt6anfdzl89F8Yd*+0-lg>rBn(K59W5K~dUPTRWqMB>edP;g~nro;D~t z`oqzL#<5(ap!=KKx9dRnQS#3vE8A#@?0gLL^g2LjfRbFHxsD72=~v9Y5u+yxx@VN4*Ug4I(m*K^#Ab2v(L0F+1ZzIW!*a49(ZC*^TPo!Q|zG!M*-sqB|B|_61Q-e>=av>aj)79E?YJVqj>3UL#sv ziPHLW%?(n}|IGrlep{87vk#SFxXgzkPu|s8>_K8ExLV|`j#SwBa?55m!f>rdZcnN< z6xzjE6lnf3{ns~zdd8lQ)bg~iBrwkg_P_wXH zdIFfGy#OWt=;x;rSF|@3pf0VAJGkZT zfQIeQSXeALcz99@1Zv#$*@cXO)I*4JM`6`RefQVdN#dm$85#0^s)&g12|tMbjKVqU zI>hC-g-`t_#({_-AxL2M{*~oqUruh|T%;uNngek!bnVv(uP#mrgGfQ6JodWd0(@lI zh{*9y46e+g&0%4QeOxpJHSq^FTN1qUXLdhP*s1#J?3_6Ivm|2b!nlx5thDo2hA_Z1 z><tu=u*3JK5zW z6>s0_16J==x%ZX}(g5A3)&f~tK?^#B9yG`T(t6&H=2GBeX%fY4{GSdCyxY++F{F!u z&Ty5$Ewan|N1obrx##C8+rHmL3$iR`AN)LR2NPp1XFuGvpETU4lHPO6E@WZHd@1LA z#M`@!p&%u2o#J)Ktk!lHrW?_j$)*Vg6>fexY6*GUWw)i>shoM30Pr}X>_(`20Q3s< zZXQ&1k)36g{bW0;!eJ^KaACywFg$S;-#5a9B#W}c7HziIZw3awok`~*`^nU^XFT

R%L&14)2rOlVYN&<;!F$ z7Z}E!B6t)zRg*c8+XJ7s9f3Sx>vnh9&oX!}qamED?y}^xD}nml1?1V#Z|y|wtC5Ll zqqYdZSlimPTyAlcA<-(A-0J1>0|?rKZyZ@Chg)f@zgL_Jt0!Aj;*5Hyu`SX*@^b!w ziQTqMSW44X@JIv*<5(%ZB(0wV^DP}0M+0D;vD=5ofyl^X0KRw-kW6KEq_f~BLvY8b z{Ip4b!pp`+gKF!#RPRGmSEJ`ZsI_Mo=*allMH|+R!Xc$L1=6OKfXHf$f(0azwk;yq0%PMUimi1 zh`7gxh}Lg6Gm_U-0|SE&)-L=&%49qpeL_WG2fC0qBGqlaYKvyH_N4fDuhsCBrza*Q zdfZ>;WMhNZTpuWNo4I+ae-;{CXZSxG*L|)5PAW(vYWuc)bV3X86stAb;o2i*P;UUL z{#MH@vqu9B=;Z7M-30vmBWElR*w{EDs$YvW&Uh$>Kbx=GS)ZL=sG43)cZUSP${yKX z%0=;#Mt@yS9%1vmq)P+cc%J!)SkPDr?z>tkLzVGdS5@Q(4vDO`$ETUtf1svcR3mB3S2PS3`3Ig1o~J=mU&Lr_tx0%WX8am;0{F9#w4 z(sN#kFg2r$qwDep2VW+NT0|{&C&I65^YFiT^76`+E7FKpc?BFU;s1+1a{%;d40nje zlngY}P*OdL12IdA{w1w!Mu7(QaLSa@OG zOPpa*$FVCqTi~4~YsX@DYQFvePnFYQ-k&!oe(%*N(XvKHwY!|+YlZGpZWL;qA`EZl zXGBpw+SfP<0D#XN=b$a_`mPt^%l^sHmLo`Cf5n^0!MGs!^WM7s(foNK>w{>e_G^jQ z+{58`;+0CrJbSsq;|`yLg#MskfWl=^4_gpHj#RdEoiTs;*N~m^jWbI8jm*I@TEuZz zHT&Y5-Id0XiL7?SK`4;?^(0*Y+I_#4r;ij6=cy|gtzcZ-+rsddnRbY}N;@nqpaosj ztc9gV+&g}SRCye)v>CMw0yg{3aqGAhBhV|F1yR%SG#$#ezx?TKmR_%XNEjS`H1Uis zlVdU=?o~Poh_G)VVeZ+LuXuWr2SPQ#Hn_=96*`&TPI8AilGX}GvTf~trFbJvn?G!mTILu z#tx%z%ibb$I4LILu>D3%E}6!UasdEJX_rqXnW;o~R6l+!M(CPm=p~^n4+cXLlf>lT z{zTtBDFzy; zgZ1Y|IrunIg;mee_a-u)M)TRowV9|@(MKG=tOE24IAxysRB-9nXuf^>#hn61Y^EUZ zpGp`nf!j4|>sS=BV`Z?xiqNc>-4YS^ny&<+xK(KrE5}u!jBh|7VU9@%Tk}Hr*%Q|S zj`3wCkl%$EsJUI~%-fH@|9dXuD`gm;f94nU?GgA%lrU@$s74x?N#m;abSA8`fy#PDZ z1288ysYbeb6`Nr-01M}qFc8jF>&v?`(*8!niTc6Xc{m-iA}g-C$``sFL?7VJTcqjXeGwL*#fNY3MGTV|%=|(%$*THHP&tn{Yr%HSZcb zSKv50idPY;hld+h;6Hx~L3|#s&@;Sv@nY{lqzs&g+bDCR%KU@hAHz6iG0Q2vjeS1C zgzI{RHz9u6+JdQLP&-npfaEo&FV@=tKH#@utmEyS)Eog|`1tgy(>~2;wNvDzmun!9 zc^ZGBXNkKmKM+)D^SFLz{HMeBiakV}syATJ;L%8zP`dF$SoO34 ztFU)#1A*-x9RYyVfYm}{2o}K8)z(lu)WE!7W>nZu5hD7M(8TqGIj48_-++t&-q6IS z6*T+)<+S%H+~xUQPcD-+jEVj8m9C|&ZPiXg8hGF?u&!lwW>%($2lR092zaQj!qp*G z2&A^~Zkzft*~epGVpzttuHnJ&?S!p(Vnaw|n09wD&`6l-bFU9Pz`O((&i+h$^rijq zgW`mR$XHGi5{Y!W9n_6Nb zmhv2W5TUx8AYr-vM(SkSJW&J|`Y0O6NNJqXMf7tZx9sqvZr>XiH4=AT`(o_A(H-etI7qf98F$4^ zK4!#$S3A(?m6QVEll|PZUUZs|0X6MCUcM+B4lm2|`_rL7XK74n;(OsYoqj7YD9F}L zJ(fdF+!OmOoI^zJ`ihA<;@nW&={0901NIF$f>R>DOTq;o5Gez047>vjuuYL{yeT9$ zt>T^^0DrLi>tB`lQ>+WbdEpZME`s;mg_wN^^I?0a7%-`npZ|7=fgZZKtq;V%0OOL& zMccfh>={t@NfpECKY*d7#5gheQY%&H&{xPRm)#tY^~i0gqYefd=_T0SUu7VJO{_4s zK`2{hoRGZd^rd#!&DbAfv@t*sQU_vG3s6Ftm1YfayELvK%4E#!iHT<_DC+P4m+HI( zlh-;AUCP-Q^%m^y(@cOA2HuOjDU}fkF8nm3kVHS8bFU6s@^U0AXleOxTU@ox${Faqncfkq}h5-S2kWf0N z;I#+9Lp}@kyx?|l!?tX;bjYC8wA6(-nY)^pC>?H@ad7splA!fT=cZzGbbQ`dx)aJc za5~9}`A34O;xGjcQPOG5U`1IeA7NnG*kj25yc|*s`hr^T?#%zWQ=ZE;P~3U({=GeL zU|=1ZheBj42Mtq}2ZXkd71Mx3k~v?Mfy)@}So%=#Viy*OGK!eD|DyQU>`b;57L7I8 z;@bHgJP((DG*1i$Xh>D)0OITch~@{yL6T`%%dh)O`&uTeR$oSwZ7;19t zK5R3E(3+g0sb6g0`E{l}NdyG=YJJ0fS>rUH9XrnfWk5qzL=>I`>>iZaUcv-R^+8wv zJrI{Y*urpE`i|7{F_djtU=B^2oq}veqeBk5w=_=Un1VhqJ5`e-#9w{p!tEEZL6<6h&^6!9V5o~^$za= z!&*Hf0IA*1BKfEQ#0YB5%ppavOWKi|iW-<6s9?C`wKcMEL(0~z zsAqEqLGj;N^#JyVEP7uDy94RwHZIA}A4%bN9IwzO!L}2+lch+s9%5o*h@DHUzY2VV zKsqqX{j5Uegq@#luM~NoKOg26C09W2>0p~NT{%r<^cEB$6~)l(tpzPLW^L2mb%$xf zq3kK!Bi+O36&2e)HAbm{Pbi}OZ=b)rd*Ty|OiD74w3rX7z6S^) zgUg4976jqR9L}*?vM&Ng(ro@(z`CfL?4#4`FTCvFYyU93h~%%2Ia>~edxjr z)FVP6h7^h$8mgkV5Uriw<@78k^_q&oB0*0vV`i*-1u!81b#}x)8Z7Q~zW?CCIJwsC z3}8i9x**?KbuZw{(UUj|zqC_8o)xW>$+Z;-krdUUQB?+u7NXhIzPISbnXqKMwEwi;Y&AEC0}VGn_-XeTQSDejg89 zQuf{CK-La?wl+8$WR)thrBBcNY+pm&k#j7cWfoez^jZDvmWre)w%d zM^=!halC6yl5Y~>=`Gpj(qNkd-~un=?6-&L#6mGV>_A(|@ABNooWhB*02gzt!poys zu#n9}4ieS<2H&~f(jq+t2@R@0JZ1n^E`ov4Fq@n0oWtoqVNF`+@vCsc@iMpB9j_%g z7$lb6&Zob)mi=NJMi;4>z(lynZNQqexMHv`G7@cGPie-(^N}DR{lkPb#TA8yE2oKB z#Y&vG+ppYtt*8h+O4^?02RzD`YsPN;cm_cK1e_Ku!p9p7Tu8IfrYa+fv~+Y02*e@sJkne1G9Io^oIgMnw9x6=;H z?sBOFpdJ9#D+0{hy@h9^Dfbp_Y9F2^8uq@ldz5_I?Kd3zW_R z1mun!Lp0+X<$mo*nM^=-{+1*-S;%w*1A;3mp1pjrF+<8cMaqiGzq0OYY4fvoc-R00 zLmGJ3f+d$wBUQs(B0z1*X19ijaz}u=hYml3uM(L}IY9UZ>J)4SK!-b%rS+XG)xpj> zA0lZk1OM>=7u)9IdaC?b4OTC{5KSD)sXIi=)aJv^GhvcYVv)ndMAwySaL6}0Tun`a zLCwchE|ZEs;Rlv4r*(lERd&IL<=Xe?JX8IIe}Ghu26pf-vxDl~q))R20K!Y|yOPAw zWo4^!Z-1PQ6yn7k2X>7-2gk=}Oa1l=d*7&j1p^{zs^@CRNm?!W8=S8T8_0e6FJ0)@ zYcJnkVZQa^ZoHGAd`t`mjyP~8uP~GL>pXpuC0bvQ$4Sm<(i28QMt!J99m&)WP!C_8 zd-<8|-coY?6O&&mBVWJNirE!OEnU0VZ{X;*h{1U@3#ak+&qp=U@lIKzp5&|ktQA95 zXpg2=AJAruvrwip=!|(`x)BFKL14Dtv|xq-+Gy`rc_<6 zSJiaIuWs^rnPadfzq$E2+Pja9wXSysr^ZI#5tV-XFqV}yF1@bg?OE&pgR8HM%JK`o zrBk}3QzR6myStHYkZz>AySp1+P>>J=q*D;-?(S{@$$R+S|6S|e`-Ly8_44wZIWv3j z*)va;*ib`FV17Cu`q6Tnr?YuacXtkHH_}&JXxdaX4CdqkHQomrb#8bAc6Rm+Me$cu zCgc=vI7m4->i3RRUL_T|ob9L%eIFaax0$`|SvE^mrkk9dO%ENQNgkm6Z0U9brI0Hu z%LCxoS8LEepvZ_7gBav?ra4W=1l(a6sbqS6_#$Sxz&$X`jJwa|&+SY0ro_zhbWd3c zwh>>_2onaPXl`c*&-`HdQiB zNSGhp65B|FV0~EDWtvr*V^RE6a{&Ey$WPi`l!CM;J}^i`uFDeOM?JyxdX+YzhV z*3G=U84xbyICQzS?VTWfU9Rp=f2g#-zGf|xuPVOY_8YfI+cAZxxv{-NImbv&%+`dG zO_V7^3}+RCg}wFiHj3@Qm_fV`mQF3Eys<>AT^byx5Jvp#;z3OI2-WepX{fAWP?(?- zHIwnf&U~ZC9fPuS5yyFV1Ocl{(i%ty(xd(OzgT6f=NBh~R|wFz_LMyi)KD9%-TJEi zpYoKKN^3^?kXj=;J!H((@MCXcDoAqpy$KyL$dP-cz3?&6NgymTQ3>7+c46V!Y$W)L z(QQt5e8kiRC~z5Soc!hBKkxmTtdY58g0fY*b`o=>r`L)dwgZbv^$1snxd90RD!gzZVk#?h|YW!W5H z76;YYU=G9sWXujkvL|#K>gv|QCkaAxJj^w!l;0;?6TSai&|NQ215<}3r0vgYYpxRw ze{o`${hhWGkw!o%+Dx4Y1Y{&r`g<<$O-udaC)lD^M&FL;bw{!hh~qNag~=^jCQk|* zlAlzK1gY(O?ZAQqXo(&(?%+YQpF|c%r~z=Rp{){p<@5h z5;j(u*HTVC6{uSk7Qa3Fs#S=fs;(MbRb@Z#ma)TUZeB_?{HHxv_k%?mTB&@Z)Brne z>L0f`2A7x_l30b|0$ic=s%25rAz#z&t-|_BJ84YIeDm@qo+Z89vypXQE!z%Z$o(f1 zxV|W;5_v`6q&PmTo6j3p@P%nNRO`_LZ&Fzo*dBVNPP>QAQYn05!}P?UXV^!W^^ki{ z1@BcL{>Mj0K4pLEF!uMpzb0?>#r&45VRVu+Z*q*i`c@S#MTCLcQu+-ma|fmcvq4W2 z<1BpSrw^Y3znb9V5fD{3^p}!C z9AIF;BE$**kzQ4JrA=sUefVqTL77nO-Owz{~jW0yt z7!>OaKWbWVjV&Sbm+vVBYbztxxi~V&BR7U+e+WeSP$n<1CiLDj>}{qtxAQp>Hg@v( z*c3a>ppHQ0y3Xsse9VF#9_LH?xgWl44Yo*q51!7S%*z*2tmGLsvHFo>NWe{vC1Etv zpP!hBiYjLy5psq8GGZucBgfd>%&}|amiP#hm`5`NRMl* z7G$Kw%9gAN^DTO6kz+>)3psdHxZ!Udj3@X=uJE?2oFK7taBObWD=(qP_dPa-i?#Em zz1N3vz|d^1@g`1tr^9V6jR4bdA}+p}ZSo~SS2-eTfFab0uI;d|UIe81!0IpeUk}%b zw_*corOov9^@HX-HWj&<4BF_Y2EtU_-V_ysp7WgM{O#v}xc}n?Xr+A3NJ1JS%liLc zY{g7*et!*(xVgsg2v5xTj5!Yx!7u;Ljf!!5RfmRzopG2kG~qm2Q0rN-M+$gqb7Ex7 zu+M4B(m33pw5L0deF|FPEl=U@wm4R3f;hRva9$qwL7O=0-uJIsUA2BGNemMPwJb0y zVx6Olu#|y*TI3`FJU{Hz7WhHV#Wi5kGk*z+NA!|jTTvAhCcU;uzV(j>4xQXKIo6*7 zLs54&&z|(D%z_(A!-(I;)VAfynAN&gYPiOrkJ2lsB;<3sIjlxx&al;;2!mhgaBPJi z+bSABW0MJXm!WD(FbMDv=i==t&4hm&WbnCo(iLq|wlA-cXGp$8@^f9?>tyHSA_uVT z_hSf+>F(Bs`XBX}*jFse6W9)M{X!mL!5`*#l0GV|?a%A)YMm}|Cq84igwXMqmX?11`J;D6!N$>YRq^%fy~yS`*cDYqs6zcZ{s{KVzHqYgq`K5u-86n+0Nqp|~Rit?hc>{qdSxAo3E zyYD%i3jF~;SYSe+k_S9U`k|p0lyd}^RY*>3mtO}>D>6zDeXwJtO|?q?8Ggc8W|ttV z?J*^g)8;}d&Q#3q<;0n_>CwnT-8qXxEEZ&B#-R`CO-%-1NpXe5)6f!4^uRQer>W7E z3uRXHw4kaG+RiSjJUAsN7T0A45z+WQ?XOmi3vxvTH`-4B_zoj7G*zP6?)K)WA-R;E zDE7kQqM@v>On6<&!9{;po3R3qNf=&CY+uzYxzjI8K~z4TS8(0M#$%J0PO^-Tf08A1 zHU;<^)`F=Kh3_d^!?tU90|IJg%)m509TR=;pC9R1mlV*wN^)UpU%2v(5f=YB*EsBQ zdU!V)1s?m%(-mLrC856@;tBzXwh=9Lb2&>=T@8akJ}j1qs8}%#H>QI_;<3raZ^~%L z&&m{(@VMg-vu4|@?+ogonwyhDjH^jv!DYL&c31L0kdqB1G=x!WctKDO z6rhStduE{@%MK1;VLd_txPyg7`mK4O(NxkX2T3{PrW|kZ>`+OlQ&uY6F^%)#7!-5* zR=vidms@&AB1?=nJX{&kP9DDM|AYqMU_n`vgfE)1lfoirRqu!$@p|3TN0Mf6egEe? zkpuVBCfD}ci727{w1~G*sZFTI3L%^z8`gCVR-aH0Yexhmr6qp`Y^b}qyJIvV zGZR1}hJ}jH9rgqR>qhNfYKlRA{s0 z0VGnQ_@5_|RPQdxx{FVX%bGl;>jkOO5_vDOpvXhu{-HXROQA$fp?^CXg660Y_@W6jEh{6t_{#Qy!*`0}$mr=+m%%b`T^FC*5~)l+Ss>kUjP`fy5hmvN`noOfe6;46EF?OW*gV=uD6;X5_+s#lTc5=Er z|9d{!NS+=M7Z*o~F;AyYLBIEKv3aw$yUnDQ+b4FHh!eMzK1==iQRB6uVQbV>-77UU z4f-V`J_jZr{^c6a9wL_ZKE4J^TbzIYer3uv`W;qLC~$IcFiy$cCqlOy%r#TK9!z8M z^p(0rsT3B*gRtrlXlhJT@N$wFk_f~lO|UBWWp+uH`=+VB|K7KX_=1Z#*(!VQf@86i z@&C)GGPJ4mHV~QOoS6nr(_K6Yh8^e;!=}LUa%=VppEW!iZQ?^hE#nT%#h+E-@!{Y4 z`wFXtJeMx9tqRT$G(g@gA}dnMcuy+q^d>hakRcZ{B%X?XL}(%Mvbav_}s zRTyybe$OsUsLHwtJ8J?2VfzXhR|GpO455}LyLC?$WZFR_&7-%KC3&W%l$t6VVjE3S^rW8iT5Ro^7T}Cs3gsU1OtU8@I zjgL3Nk;kC6Wa+W*k(ltmV}1(`!j{CUTOBY{x_5q2{oalq2?-&;Ah?d^ildud=0*h= z-}WchYn^x=e3sUCT2WAscEmKL2ofy%2Gc3PLkN*#r%&c^h02`n%=IZK!m~Vt8AH9Y z>RL$wyT#WjsD}8|Ne$ExIo?Y?4vfi9Wv!X zEUaD1Pi8$68%&3Xhig6uzP~BPvCrVb%j#ll?iq(U`S z8yMg7(T*oLHj9yf#KOXfJF(G50BUZJ$vcGoL=uBg$gvjaULTPAKZ5D*F+O1j>@P%W zS+MMN6yQ`53M?&cMIEi^zdDL=^#!pX6JfF4eNytffB2pPiIK24#YtCKprAMcK zTkS_Q-Q2UdxY~% zjh}gNZ#J;OR3yb>8^YZK5iuc<9E^`v8lX>@6t!yS$RMw&cK2Ms_20Gd{#@7E_d{lnC!6CeesEFwX;kkR@VQPUL0(lX z6sAgmH);@CYWZ`u{MCYi$XLFfcOsF~Agusn8YAEHHl$os2R=Lci#Z zDnT!JB}d`fA9)(JpaULKy@LTKcd zOuNlT-SHg>LsjK`b6-x{<5pT^K=&VqQ)Eo%99DsXG!gt!55u@EdT8rAxV!bSUt41;G9;UziQ=SI(vjd4kxx1Xcs;A4y3>8tnhR2rO+DX znowv{W#;*o8qO(%!xLuMD#Ud{+*cOj-=Gq7F8K_2M5SD{0dQF7owCxHw_@N@=N{o3 zrt3}xU-*tsQ}8miD_}e^FmHuM#P;m3)9*rGJ{F6#SZO;(cN3M&B?12Cr|qqs&8dHk z5ruWO`MIRFuev<62&SEG0V=@6z-DV{Os~Np!#P^e>u&K zQI}@Z3)LhZ65|MuFcGJq?ya4Wq$o$~{|39za{mk@t$r*JF7&J4*2imJxRlDogh=)y zfW;|TfQI0?UGA<0>Z+(T(_Gxg@obDES#J0x+zK>TKx zCSo$~&u>SCe4we^(EQ@ZJc@c2<5z`()}S1Q^0_pJDpTxS|AM_3a=*6^e>(0wn1ya2 zP8f_6U32C81ppcM8-#S=gdqJ3FWi&}gN>aX&Mx<=k3Y)z&8D)BPS{BvS*YSiUM)ai z9JkiUJepd%?Vt22GxEQVwCJ%W4}_7!0+D2CRN7e%6+4NHnsrA|)FC`N#=y?bt{V4~ zwh96MLs|QV8u#beKGCzX`l0tC$qBY>bHeTs8(|){= zH-sn2yH!A0+#R2qiisOhl&Swn7+Yw$aGX8UwYmt)nD*^SyE=x`nXp_06!r41RJl}i zn3Ox4e=3N!E0{sKx--!?r3~oeZ<~JuJ<}57Yqj5kg@=YlU`yf+Ccdi@UCXPAvZ+~= zzccLaBew6{wSsa}uAS;}fJ_$Zl=(m0i2Bq72x``cM4t~H%t#*B*}*R5@$te&4eh!y z^z2!9>i$*YZ@HRrtuXB>HkbwOGUjeo9_cz2m=kZw$*{aJ0OcQ> zR`;u=R|zPus_F`5%;_zsnl9$}=Bfe3Izci~WAgnv5PlJ_?SF$N2?adco$=&tl}9H7yElT;x!hoy2{;AD%wOg zJ2I$C-$B{7f$_oIJM6umh5{_t(ZoZZV-ngOXb%iSLA(?tFw)fsyv>1R8t;g4N_~>q zUlQZRgD7gO?x*oaQnJv9J*{oLp*Jir48j5UE%x7XF|qf;kF#gHrhaMJeN?aWyqc~_ zzFj8oz)boH=s3e3CBYx0epqM~J)Sy$f*@Gm8tbNFZaNE9Y#3i*NjG%GytbHoWQ@eT z%t}a5iDpb;AatobOHX3({dfOeeED2!bXZu}eU21eh|^0jIYl%DAxj2G)2DF$=^2J6 z77Yp^I_-vUz*%D0)*J;D--Mwa`+mAVU~xUMk=POAV~yk2uNC5&={~cHFFGeA>@Q{D zT!Uk!^t^%4slF7uO^vQhe<2-=bLI|4!^8`~_{_ zSSqf-%~0mjpUTenY5JxS4?hwRQ5QD>O(hTLtTkaFTZ0Y+K{ERc0h`hR5jlC;uD^@x z#ux&8T!w}1R`~c@&8ApD!i;I-QPDQbcl_8WC1*qdx7a3Guvw&KN9M* zjLi~EoI}=x5$$jTzn-{IrL?a{J17-YwCc@_Uk{uSq!+d!ja@qQxyU^nwe=VmTLZ{% zP3=EG>gvT+S64^HLw5qA;MLj<~*od#RFspoR&$vsvHbA?2yBRCM_xbZF zx(FQ`8;3ei5Jc}qK0Ec}55ISeG-ghp*@u<%PRD)iYBY-8`aDDYfrBHky}f;4u@_Go z1KJg+$zBG!n(?jOREe=WeaD~KIXMb{s3u16*p-JWs|kF!cso;h9vm9VgBT?1a4X#| z@e(QENAd$EJ{rw9lB}J=ys&+^1U3B|ye2U?(XslvYc@7Ec>3ciw2SbL>bDx)yb=Ex zb%kIm)JhAf19xiJQ!B0DWr+g6Qc-lY3*pg%0GcXWI!b>LubdFzNaclOWqQHNid{h4 zMZCSkolw#~(nDSsaCx%Eyn1D1YD=TStioP$>-E%9R#S7U|M2{8747QpuToJd3$BHQ zh5L?$eecD~>ZgwSIuI+*t21FU4Q?(jE)mGX(b?FnK`ul3g~*GwC30u$eBo=g*6={D zpZ4p=C-cN0s0yPJq&L$-USe@iaxjH64S=#Mnn0KqdOCi4c5{I_D$7F}p#+I;ZfSWz zec$)A5^I}ln5H@4Hfm_Ao-?- zk{c6r(5x|vl;6w%0Q07Kf{u@kkKp6YhU29@ToU=0!f)RW-(Ux@>y+haj2U#j%g+34 zcpT!6eoA0%<}y|g+XrE_ySh8Pm%le09bh~=?YMshTJ=FoXB&d)NEGAaT~)`~-~DGb z60h_6(QRX(C=*hX!x53=Kkszo@hi#^nC$kh>8ga}*jq)qulm4-UmxR&`=G#S)Q{)c z`HE3Lot{3&*!(;xsxMK8L&BI7mffl(p55qdC)H~G3|*?LsOtKo(Fd8Tz+Q#0GLw&w z4-`uDs^!M$l(+j|tIE`c!}?pVJm;GoNoT6j0=`YkqOT;c-6nb^zX+eyeWnk;hMecG04OiHX=6nTZE@o85=T z@Dc6#5!Laz!j3X!Gszj2s&k;X zNU|lLZ;yPqpZ2}BHsoIl{RejTkifw9h^0a#HeX+X^W1)%yE|C_$?&erXH@vgcEQBx zY|ar&wzlGLsLQ!mZI{*lhet>F*wa_j(=w}k@P8_RA<|Z5ii17k&#Onp)y2rqoFPm1 zw^AW4a<7%6FV9_Yte9o;yjPayaYR-A{9zOpoiM2>lfZf!xjmZb%% z=58vtj}ey!FYnogY@|JflhfYu=OyHLd@Iu|U7ZxIW|!#N+PYsV;Sxb=tqWEq(!N9D z68m>@c<%vyV^H2^Er|$-LpQQCih%WYHxl~{rBSJefMa4p&*>^}2l~$$Mw1cQma#gj zy5W0sa5-&0Xr7+%bk!9T5e@Mri7A3n*XT0{ca#7+KCO^t@J@@`sNS%Y*}f~5e!3Y8 zWGG>Nm?T(T-&vMUNlQfo?67lI4&p~!FNC6KYyxMQe{661ib)S$!uY}@MUYVy$}BCG zLr*{FyUC?j1?q*SE{YJA@X~moLwr6cS)cj`MkH*qjiV~2M;Nh4)}qlUp+OTnA-6mf z>1(zcCzPX?Ip+p;vV^jWhFctx5xMng)6Qat;Dt42M(5TQD(>V-%%hK!ldG4 z%uGnN51QihBLBflcs$U+u79lA$f>@yD&rm`wXJ)WzaNt$#Yg4%w+2N%l+728yeZZQ z67KETi#Z9{p4qvM_E9vi7Uo!ZwkY^A8key*fOs_Yipo+TOm zxPtHTLOPzREx?jRDLJ`8r82hsFGD0blEMr9@l~$4A`-XcJarg|H?}=7gc_n)_Ea%Q z{&=aWw>^e&RQ$a73JSwPn9}r$Jo@|M9wCP*FfjfKIQ&-FS8op~$5s&!gM-)hcS5w; zDoe)1wd)F>l}oYw?~>5XsFd$2^lYU2*!#>!>iXW2w}uKEIt=CV=|W1(C&}Qpq#24+ zlpv)ATr#KCWs_D_G7u`)#ZF4G=O^J+XV*)D_M7K_)z3JxSX9H_%y(Xhekac(ruXOG z4z+n?z<7X#y~c>{`OXYt-vy~XkH?@-qbO=6&Q8cm3$*#!Eq)-E^|RmAmp$R`*Mb+q z3nB)3MsQ|kru62Q%9p(L_u=q#!^V z-VM;r=TQ3h)jMt5`1n=6SIq931|0)lQ|QZ0kyNQz;~kK?SNY(xicWuT&i|-QpSnWO zk-NkPjP?A7`$|Z93+m2jc5%ZGjQ1qywTCa9)tx?h0K&ILFNSM&RMhqtG^7%9(&7fn z4=9P{4+XJ_Gugb;`t#Ngx5KvM&~=EVuXw9j%Z^-;tU8~qfX(!$5T5x*ut+$Cvy%&fF861N|8k41w z9ob4OJt_3&1&34gCbHQ$;s!;-ToCm((9CkBl4!Dq8yTb+91R_I&nxJO`IM3?_vW zh5+O4Xg2B>ytvQqu0fYk+d&XH6m;7Gk$?&OEqvVd=*NYhfBugbz`nCZzMH;UbXbtYD4mTKU1TiQ%f;l-i&^}dr%iqDQ((~9-zb}kw!!4=hFW| z?xQ1ek@2P@=wizJDf?ROfH_}?kc~;5$&PG5_HBLl7+J}kU~V{@x>l!5&d1bPnaH~m z#2%kpQp=B)pF)4lR0tFFpi|gkVo9NLC2EW_x0ZU*ywG0aa}~2N0xwDM3Fz>hB{p0V z))Kt@69~mFsp3vR6+@eu(a7K%M7Tyh`u=ML9hG3gxbJG8il71aEdnmI;(%6)MhI10 zl-!{5#Ze|jhI*Q2QB{qQgt>`HG4~iX{Cfq?3uw{`Cc_3?KF-SUFD-1+S>8plobi^) zV7D(^F-jD8?i5j4skDkJ6_)sJI~DjO&-T1zOiXLr1@-hb*17V1DAbtV4Sk8J z!i+Q+hOkERn#T+iDZd>W8tDxVk>Yke!FIYt9UuS4FVOvZF!jPtGAzuP{L^C=6fpc` zd$_574s8HLtj-s%wfULdpN`He>U+QU?IqW0^gHBWbp@Hoyq$l~57|oVhx@dw$kL8V zacvc3aCDZ*Q>ichjpYc-P+6JrR9rE-wY_AFxBwUq+90^enU%P$6!wSNUBloBw3%rx zy1MCKzg|0>tj7NBdeW+~Eu-kEvBH4Ckzk+>u|m^SRgLZk;xB0Y2Ep-6y)GF|4h;>Z z5G3PiMEqef{Hv}Ee_@m6WIqEC|M{~qfHQ`~OPIpL!OA6FE!(l**yKWPre79HIC+p9vc}OQ{gJn zJ(d7@T*kp*JR}8Oqj%j<^I3$P^Z=|Cqkd0KT&BdDkd(&sAXjdlWlPf|;93qpb9*1v zFBoNz8g+p6FA!aWej*xOfsdCrBuh`%`+0OB<0+DM2cn#0c&3JV%v$T*%Uw}jogS)# z{GQITc%rY5DEgSdsOC|0Za6<&d**T9v3?i{)yrU_D=U#=mJmgh$rp<-1s!HCCAxEZ zjE~#z4yLx&`J=ji@lrQO0eciC@WVEY)JeOrJ>^<9LS z(+6O_=!zElTPP%k(+g(n-($65zSdbsf6rn7Z2I%L* z)Du=10vL2>@2KtspKkmg434l~(Pm8Y=U;n2{X6vwq!413XJOkMO?A=xdYuLY#>34o z3AY~zfk^`8FAnnf>MW{F@I#HKege{6Hd1kog7`tQ1v7Gea-B zJv3X7JrF@Vg(XSE`<_~>V-e2jRn+{v8aahYbTIHjuNt5WQF-}RembLSFd3pO{<{>W z(KEO~J0$}GqUo)oZK1w^u$YuT%Fs}GzRD-J8+qH7MmI?#_Lq-lx1=}FRaT3Eq^Lbe z@6&IP$5nqoYs|)%5?7>>V3i7&*oaPX*%Qu^Hm}2~_#?SR8Vx~LVqgcFo!K!8FqtH zG<`LsOJYA1^lx4aSW`Ze=cl}*l8b~Y+aI72&&y(4L;%Lm?$O_*Gm~F>CY;LW&hQhb zvK}xA#TKoAXMjGb@2xs%Qt(db^y>hUuJ__oQjB zU13`VmS_qM%3}R8A_NB`)g&(!Rp>pyZk*e_wjR-Q6(;c|=m}p{)ntmaF-<$)Ht9(N zeckAT174A+%8DwiRr(TdRXH|ZK3)#}>G6I4_FoFL8Y@*l% zTdm{y!h7*vL17csWG#$8wxyt+gZ~Bv!Z5dAkM4spK zRewo)14<$yV!S&=Z|8iUGfp5GesCBeiCz6NNwmvQQ(PB6GdCB~7#@H2g*hI%=wi*K ztZw(ibT^3<`U#$Maf#fK#M-zx;jjgL@7gr6yCcU{L$^=bwT$_2on%1uTS2cI1uTfP zI2-4&uo0Dv87$JIr|_q7)tnX|Sm3MbZMLP8&{lcK=Ci=RK3#|cB3y>O6*4R=*|!B2 zmESXRFP%$}#QQj_QhYT}orB&-lG6ytN&r(6#KN?&yi_A66`d2iDTCDvMK4#QbJ3Y2 z=%Mu!u(;(se{UlLB2^n1b!=;pia~=5%>IAeW*UXvRe6i$TbdO_tp58rDDL@_0veMGbjtz0bN2#E+JJlU?@k= zbZ1LIlf&-l?XJ7(z%ZGztR4NRsyb|vaaoE=yxParxi(TDc3_V3D)_GeN1%SORQ=zp zFBtoMJyP@=39OX#@SgCY<&`cla&PfUWW2o2K09L}qVjQ8-Q7HECp~j< z#wwyA5f^eYWG%DZ(z2RLtrJJ~;)SQ}|;n_%N%n>ZpSR_wy0*9Cr{TuOC-a#~nttK)eF z`e>zHCc*i3Oh&bp>)H(j5$(>G9o4h-#qcvWJId6^wfgp_tBguJOKW?q5NDNQy6W=o z$s|_b=?chmPht4c)TBLeIaL$CHNGq(TTois=W!V;aJ!e=LxslwsE`bdm03q^`3s6R z!>tc6Ari~K_fa)NR2-eZW6~xOog1z0SX!%QI0;AnDw6jaM z-Kii};-5XPQYa8s>s8_MnGlF+4!18>=6n-{#6y<|zj(P;V<$dY)d+X11Hlo&LgZgW zV(JgLFHFEs50orpA+AReWqm3I*S%$F8X8(^4gu8&dlxrXdiJOh6Hi-kI&9@6U%9`%XV=HK&D^RvA>sJreaI1B#|mRzVE3 zOHD4d9GI~LnjO~<&>ny>8uJ$w?_6T`$7VU+&o#M11cT{JSo9`(8t)P5(X5IW@FYe! z*x4xr_z09(YZG&m!#9#FzE)I8`ub95>1K`3F1|&UKr((x9;(QX2g)_Fa6o)Z1d`FD zJlx50{O_B$qnqc+uW-{-tj*u%{mh!WSP`rvZ#Ss=tko)AeBT{A`wGqydTC}R46>#6 zu${f>k(BvfrO&EmfA2~v{&=+>?ZsC_|KUA&F&HWS{EeYKgcbFY{#JNU+Dr^h#cO1| zYw<@E%GM4Z1y{8+9oWQ~DwO|)v!JO&-6nNVysmEq*TxVg5<}a%Pux4A;-rOxJ z(kIhd?kjrWb{CUV9Du%_YPhAJ()})R9cKxw23NZJT)P!1;0cj+r#_8mwc)@s5RO&7 zAUNhHEPe$mLR7TdXH+aKYN*6jp^p<_mp$7(*DqakPJCE6I zy{O`t6SYW*r$XqO3#rhe-@@ll9T zVfdqv+I7<30Fx8X(Lh9gX`|@G$jSF@6aVaOX=#dZH{nv2SiL5& z; zpZsX48Q8GCu?xjREqA~vZRj(G_nfUbR1|v8%#n{RIz8im!rOTjit+3h4u?k z3f*`|-UgFC149#U+#HC*k_D{;6&2-@PCCuXj4fW94Whd-uh705&#P2mp#NHbZ28rW znSD(G) zQqu2cV&5s!$5%a0s84Hn(?A8b^_T*sB<*8Kj(0?g0U(c?UzjNPc^mS-uB-?`hy){( zGqSR}dxi-ej#on^u2GHb1Yob+{Z3+6$U$-vFembqvS1#YLpN22-JkZAuAUOnRq8M% z1T{+HrABd9zx4NjNsFK=WFxv*D5eqQ zYZ^{kipn+pqR0F6@mzHaPf)^7gwiSR3o%uh8x`xAu``t|P`8(Ia=)9Id;rsZp|vEt z@AHwA=)Q~~f>FVXBQt(^N)_!ICzRX*m7|?eoNyUIvTrpB-~hMakIT~{I^C&@K+gjK z_~Pgw<6}(hxZXAbCe7R)cW1d`TJ=jXGF9Z$1IZP6|qG=8R_{#DyY+z;zt?(JJv$Vx!zyhLc z0FDI{gNwYOAvvn;F0#tJ)G29LW?7jJ@2G(1dl-nC+`VK<*6DgNZq3_&8&!~+M9NZK zosG2>QvWxkviqL$rnweoc(;=TQdsz|7{kNwncK)EG!O&?j^>)N!mn)!WR+F5?e6P0 zMJJgPu*+h;Lnz32F~C4W&mZUXUbf62c;H3wQ394_3V(;f40#bBV8P&6CSCG-1I((FK@nMsICNKwULL&>zF!XTzd6fhzsre=rlfF=2}6_6ory9G5$inYxqBEdZSjb&TQ zek*?|sGEdzP|zy+t=4?od>>KF_EUvDu#~4K@==_Hhvi{gekr7}ywtsHXPJ#lk#1_e z4$`n_P0`;P5h14&)8k$8hlDS!IAC9fx({t=#rjL+KQ1Yy?Fny8MiXV(4Eb#(>eOD@ zMhdazO2KVl2n#@W`QTYgrctRCCU);0ntu|EC0l)p06xUJ3&v;*?j&p?)>Y|Qz^Q@RY0GoV$VlRM3k6q z7%(_{iZso7ml;GI7FDikKRm%;HzRNJ&RHuazs>tKnLQKHV+Cjx)%DF->P#-ogxxhG zkO(;96I88W?u+eR(rHq|^lV6=zPPp;Tev?x@$W;llc{z9+bYt8Ow%rylvh^vX#V#5 zr75LEM@NFa-nU@Q%UOZe?I8H5tiqr+A*$k6NeM$p`e4xHM|`tMUi4jy#g_(4M}x`z z*NGi*jol=#Opx&DA0gj!(yG&&zyZGv$a3LJ z{7o0@ra-K`fJDO&%UT{VV;{hFY?<`7zW7Bc&CVYjV01jz$WRuHjEg1KrNnNFriI0o z`Qdx%1={&tV5rh4ZL$w{@f%h_UAibXU?SVwsbH+9r)LYd5J?0}PMlXY+?H{i$WifrnuOPAXkKf_ZJxn2ljS$sg>CMS}e4# zDp7R01Y7ZI6hh}Gvzxe7CZVbqpgAXh!K5MsOP|%=RDx$_h6moT9k%C!UL%?(a@afxDzYKHo^8(?yr1`}1v~$;xw1@oZ0?o@?Ci39R&n9Uh zQ}ZYVo8YtOhezg5_JZ545*N>A0Z^ncs=|j&gIs65F659e_1ycQSew!~6lOki`H%4sl+CR9^Wk~~;9g$P! z^c;Es2~W*(1*BXc5|=#WS=q%>Bf3-5jA5juP5zokC8idB5m#;l;S0mCi(GjI$mOJ2%*RaK&1hxbrRvI5KeeFJZR~+uOL`najp)VO-=A|3} zLlW3L_=ddukpdaxfIhswMz8Tq&bfn&pJYwUObzbdz~*OUmeSR|Pe7G7yNc%g2;AG^ z0~5g7Q-N`AA)3h=kSa_F?py#)BQjAW)O){8>}1Eg2Qz-JoYF*JWvSxWS7~b= z=ZblMGBzGEb#jFgf_4R83Pw0xIo0J%PgyGj$V!QQ0Xya5ibYL_;w844Z}}lZmY+Vw zbv$p6)=<(2Ly9vYg)}-qsdC<;`@*Dx0A5s$m*1AW%Sc9^n$^>wA0j&E)oUv;+7p2rT`$jHr~={8>3G^n?8$ z(>riPin3%2W}GzR%kLp4>INS}RRKuLHW7;Q{oS=0gzm2o1n=UTm0uIR*BPHUeAQgP z9vWM_D;fw=8E<^P3ZJB7u2$wADs>+^(q=p7BJT)?B3E+!st_W}=}ASQu0oioZ`o?l z>ZVGU_U4Tce%DU$ta=?nrnr?ZS2e*e)SKy%jd}Tfz4_Nb5J3|{0QoX+6bWl`abY1L zEf4g0XbSOVA=)U4B(_)bZ0zivN7|fPO~!;X2>-fACrSJI`ly1j7jIuA>RXnne(bxu zyGYaCzn#mX1z*W5OVu(+_zM%CQcQ{gO69EH*}{8Km_r-G|4?lg<_vwRY3uiHbDh-T zuGXT(=Wd1O;KjhOz4$ogX`=c=8SK!e_z00JIakqK{m={}<-wt_V5z!CK;FiP6nMq< zZ8!##KhhBNNhA3pvfpaM*@GVRRnwrfXHuMn*@c%OBaX`gW`XoP@R{8XGYkHD#mEQ{ z65S6JCOIk)p7K<28J*?{&Gr@+1lVM6sP7E;fh#ul0<2aqvCi+TiY_0PS2#P#MuaPi znc@YD|7e?KOv>{CXb7?sbtoz*zCV{~#373X18MAI!D95K~ zu3mkG;~h_Nv5xvk+dUmaIEl4)7;ETzA!t7GJ?ULd-nAM%&adDQnup)OcLJDnT|-0L zmITozcWicc7Dma&f}li}f!blr<2@6-gs}?B)5S3|7`a6++Y>WM zi%7_;V!8#hFEyQRf{5ofyPq}oI9|NRNH4=Oh@m^lb<8eT;cO8R?HE~_38LD}iFycx zxm-HBqXF^ZjBzAO!Jf{$5k^!%M-OOXmURR(i77C}=J=vfW`B=`-8d3HE{9Jskk+}w zE=O4hX3dM(*Gs+tlJS;!TGsu{`PsB)KU<5ZYFEJP_Q!w4#4mPdbe;#1Hhj;tzXb|bk$7M3@B&Cc? zg#(isdh#o+2N0>=e4AN*I6Bsrni^yPX`}Xb!0=C99fPE%mBFamq_NKBj9rxGb!EkZs;7>+8p+iG&b$TO4OWJsfsCNWw)YI1y(1U==j! z0vR?gzdc~C5xmXMjL~HV>{lQ=VG0VUcRr*Q=})Ttd)l_UHdl5jE$u^-GKi3!m`Lf< zwp7E}j{$~CHw)occ_GPr!*qnDILGE-f&hajrvdOJ0KXAELueJ08t80uCW>40|QRqN%SSwyAe0Xe}zG@J}ZHQ$GQm(Mg46)H2v!5pTZKs7QbsR28*e*_B@=yb_qChQQ^NSx6J{TDpI zm8d~V!)3plvoj^l72@-3+Y_$J1ZSxC@0ix9@V3Cuk9qRd_B&dS=Q}6<>V}T<3R`!k zVl9Vi`&iV}1rVI`N~))*yc}L>Ib={lWMZCSJ&osN7Vh3~p`gye<#RYtdB}JQ>K8&o z?l^3Ew^9-|j3oWg2rGyh&~|*B@(7l-mE+bDk4~Y=8zQL!(l5As&nn&GAn)9=0`Mar zWCwGJ)s+W_SS5Ft=+oPrmEeTpJQLCz=yz48C%bU0VV}DFWA3mm$x2$S@&Ll%6bY<- zows|OzUbX8>K#O;tS@P%6=Q=l7?!0hsr2xwevVdT{r~O=sAa*oCtE~@h4mRIS(A0d z2LFSI&+%qyfY%JOZxaokFgF#a`1(t2{@=?TT3aU|Lh%U*{pa$TAz zTIn~|o>sk&-8I8wV{uY%HCHJ?35C*BVocyM_44wc=UM%Lg|3Zcq6Pa_PfVqf_9|$B z5fUlF;~ASUF9%Wyp4(oYIf2^4f|jy44U7~h zctj8zx+sGwYY;->9RBo8av|kW&`1mTdB5~S$KxtuK`73(Iv~%et!vm=PgecZ&U1aTjH-{O&BvlQ40ol53aIC3Ot!bJkC(wre6H)vNRgRH>bC~S z=QkZ~k4vm<=GV+Wtcn;5asRk=>lJogKXw{*FRHZ9f(B!9!W@YJBW%%{+eZM*HXnek z496=Zkyb9Vdtz}S!hCelaeY|I`)0%P()p$tdrrxOA65buSWVUw(N=nMUe*8LnKtU4 zI}1(?^rMX%wD_yNGUf+%jq&;J6I-a1G}UWCn;@-b8kt4JiHRPr)Sv*t4_1&Y&k^K( z?0U!m#*I6hu?)1IUlJ__d#oEEjdspD=DQG@VfeJ-@Nfi8U{{X?nl;KTn&J$rPH%B; zgpztqa1Lp)cJj|=m0$v;B@jF9z82p>)tQpF}E5qQJx==ENPo-m#A zqFMM;mE#hjqnPy9Nkfq=Y9G-VX~3YA^`H67hd~L;?ESv)aiasX36_j<8!8FEWwKiS zukJ5)hjZ1a3b_A_2eE77mxi@1A&S&V1m5D7_}Ua%qOcv-6|u`F_iRrNP3Mw%qJjV< zhR&G@C&HOquZ@%EZ7QA7UlaZP5WHyMK>u5IzNoUOtT%C(`BRf8vKwX2*!)a|!(8R2 z6mFHVMfCjBZo{Tv4;8z=^xEKzG zzM9Mv875&KWW_V6^*BSs=$kvypsfN%8_EgnN#8eV*TB(Nz2@^5i2T3O&I<~RElx!R z$;3K}vS2h&<-D_w%f9xrh;@%hA+WLC>71N?1ua4fnGThhCJBctaYNo^?nWzOVLEN{sU7;t$0fnWU zhc-J3HSru)I3yfn9V}8D7*)))JfySsq1nyNFhBM5sP-A&a$BBnuh+t4`Z~bHD3BO% ze(4Q6-iqWxhKSR@wKdjZg^ImE+uNY}N}hxKyL+SUO8 zG9iK9P#%YA?3=CcGMS~o1MTg#&P7^i3Z9;Dn@Pt5F?fL{fw?woqIx@|j`Ms}al}wG z85z+E$OAZBdlhq`ZMPb#fd>{w$EH$*NpgLE+0lO?1_4yKq5d}Kl78FvU!U*!DuS2a zeKw3o&?K<|Mkd7fc@U8aNIA;&%es16>c`K%O}X7=w|M59Gt(XQyC~U$M0g>5GfO0c zA(UW*1x#kd{k`<#S!6Dd*5T>`?by;%?kcu1m4sp%4^G?dKQHmCP>y~FLdCo2rT9xA zrs~QCeNB8+&bXcg^${S)z1`NCbBxG9hQ%x4r6q}y>BI@a5t2urW+1S49Zu(mm3|#U z_)eLOgmI!t*EFxXzCvVE(|JSA15bTWaD0hrmipC%)2{nRiHopp77`)r2`TeT5$7wE zcP2H*XSl;ROeE08!tE1zX!jgSu>Ig^KufvpmO+SZjlIyW$h}Mvno_ZF`UMv8fKj1H z@1UuI;olPKTrzy)mRvOY(jrMiHTDFJ$(|0_eC>Rx-2-gO?mWA3aRAO&0o~1JUBDd` z71cYB*{aeBIg*`!*9zp2pectXdwMCD*GVgamZia_ZX1opVodk6loH!ggK2FS)(GH<^gZ>R&xfl=RhW$Pa@&x7AI`cnyS6b$yZ=sDc=9n&mDye4f=~8 ziZj9CDUPE466TnmT<^TxYe}Y04@OY#f6b}GODA$SQ&n1sBo0cSXj3LFMTfnkFP49= z72OIIzVvSV9z^^*xHxvcJlwQlr@d+7piz^5bN@Yc637^V`%$vDd+od~jh=y3MoEbT z*dapF=f-J;x8CaG5&Ho`_13+~pGSReGaT{~>}ek-J7Hu+zm6C#kSzss!uaH$OzJ2# z(WKA<-sIC0`renQ&5K&d6CA7>(y_VNC%~eC-9lN;qt?Bjf~<|o9GtoJ*vRy~VA%ef(zC}Z z17F_z>8bXTV1lFi^ysD#o#=bf*zo{(wSZSFuH5(f*f5R*^GRv4EW1jr$mjXErV<0^ zLabRsU+9tcoVX>nDAS%~?(Mcq?dS+C85~!*CXb)zJ2m!oGTM!~*qyk5W7kF7#nm;ZqzSipj{p)X^u2OLT-&Xo zKaXqfGVIdI!Y>~+a&2ut>g_?Gl&7VVT;`JiGuPS+BUSR%<#l#z9a?OLD+qZSqw^GYt* zstKdm=5PAH(=&&jLQyZG`ipHV&+lB-Ph9T`U=boXn0<94K(8a~nH~a+(nY0}GUhu& z4D16c&It9k7XlzrgCeJcVK7`N1M*;G_-=h>z=MvMswgSx0A$}=yX9!OCy}Xjo!@nX zHC*z>rlzLh(G>51cT6g)jkoYuLU<{dMPkX6{342uR_Y&NZ3oPs!}{>6Gva(MUnfp= zL!rlB7LZ-mn;?bEUEu{VYsFATaxxVaC;STN0P{BcitH`m%C9ypfKv9?Pf;{Lqd6Fy zxGFZ(V#B?zuY$DKRmO$3ZmltzxSJ<|FYofI|JD33pqlJ>m%;_ujldrdj^Oud?$R7# zO?aEn&Y;ZI*KGn+1uTYWPK6pl4e)n(9 z2v8h=eE;zf*=EdRCuLlTiOnY%^+`?~VsYcyu`zUrez|WO<@8!7I(g{(V4ve+BF2Ac z!4T++!a~M>;bCC>*|kI@6;|%b2dFVVIq>{kK2G;Z70DE2B2<~gx6Gk^CfW=IX3m~Z z39^ee`|rd+>G0qF&V9KmXNgyl->{)EvQ%C@RCaOH&yuFzOsM?)JnaO zqP;?=bSwt)lLQ0>fdwd5@qX~{J1Hp~tNnxV@nvWdJrWGlCJTR(Z>%3-z>L`_F^3cMQ-Z#TNX#a~+xmI;EhHdS*3p|xFS+Vdy++0#;XQ~Nk zF4L@{MULG&d5l#Mwuym(6A1#}vdbt%<;_Ix^3s8cG7#1WWAlIp^@4wC?zRsb41Qy? z>yyOts!vohWPE}0WREp4T=V+oYaoA(jX|f0$_Er=0Ry_aii3vE(~+A(xPg-TisyWh zi7M83-v%25TxfC0oLQ4xW>jtQ69n}SiZ;Z+W`omIGiE2EC0LGaJqu!yoL0+e1-(@l zxZ^dY^@>XE+q*XV8cA@YOS2o^N!H*Y#=|aA!|Z}stX~w=P-!!-A{D9c?^6pI>2oOx zXDR>{;NA$h!PYfdFF`JuM!fHSbMWCH7mro5&MO4LlXCrc^0YH^l|F)~JzD&ELWYv_ zald!<*_~mnTWPwc^qz9~d;F9of1|hr&l2moeUvbfw%!P1W}PNa1Hk1<^1P-^*3r30EG?ZLVd!0?{I~?X?e1h2;>h&6 z+>AV^-z%2IKN%%3XBJ;<55F#M1mTB%Z4IHcja&IV05*8CSlip<$uq7zx#NPsP024` zhT`BuC#>)0bWP-t_!Pdcg0?Q?V$hV0onu?`pK;)M{vW{Q!lBpYh1KANYr1ODuf3_` zl?xjEUsfTbYsf|s-9KfSmu^(A_baf{#+6j(2_4m15%^wR-2CcvELJ5LH#ykfm)25d zIhI`P;$3;+qmG{#Yli|*v{&@ysPOc{39tAMACz`t%d^G;cd{leLKcZ66iT1DK8civ z6b}8*1A|zG;MLwTEwC~v#*pp0fE<${DD`T+H$b9aCK8rSxNC) z(K~2yJJEBS@#3_falWagQpPuKHwjYxOOPGpBuPo{Po4CB(EdoG6orw3DM|C{#l@8s zxBk!bm+QOhyDt8ng_R8FO|w&Rb!N`E{SHMt1c?-iHzpzY2HgP!&H--uK~QwbXL9VA z{ukfv$oYhjfXL0l)*4SpthSwY+ruxGZpZ-ZUOI3U_Pi5nS1eW}odGsh9>awRTd`z$ zYAQ(XFX3624|}lJaFv64%1lrynlmQCo6>zaAbL$BWBJ9=X{0%w0>`D%6jZ(7LXFvI zrxQ7QbJX2iS6bC>xtuh=iC0Pnt<0$L^-a+FyR9cHlkIK)8IdGIR-T%gs@{+*>tAj% z==HB|5$xR4H48pa5aHuXn!e}GSx-REOo}K=7rLyOs9Il$%?E1^g!QBc-&~#rfS3JO zP2CziDr0H__#sO2x-0?#Vxce3n7h9mxDv#(GVz{gzrIi@NKZi+XvtdhFiq|ayKCVf z>F!l&Sw4+j-?Q7Wj7c7?nzdF-DiQA!zHR=$!NX&!V^HG{wfS{81AA^~d)nqdFn49^ zIP}8dYRpH0QHeAl^9Hw(k2OfMgl^aI%T6X0xu!b7AKuUqRdwB%yvsL1QoR(sm2nJk zEjmsyM=iU%278!zHja9+OAD|m^Q1oZjz)R6Cosyu($Sl)$@AMQtMpGALrTHQh_tge zM`?tn{z}&62-~8-`%2yQYV_yjuWpoxehAR6%wZoZuH|v8_1YB(+gsbq zDA|%cU+(dS$;p~UD6o?H4%dp79NX9D(|mjD*m3aSX7qA=RAT2lzp#;4Z5ismNHX@N z?(PGVIw!~3)9*~jw*8JGB*qOp)vm7=M$G1>YB8kqeN&3XCRoY++XaM>za%%Gl?0P0 z;3(`zpQD=YJ%LQBmCNK_YlUz%@avuEOG>F?m<`7pRMfSOE}7dqPXvwqzW{a+QY2G; zZt#5d*evV-M(8~7l7M<|AC>(1_6VNtm$?i&=u@)_ zOG}$j-4!?^z`HU+zZh^FrAfZ9Ab6Uo?;Cr%%f}_;!C0d1YX+JfC+F_8P_)&N*&8Gl zEpYz$DIkxyjS(Smi~ehnwYDa@zklHFdxzsG&QPg&?j#c@DzwOB&{Iuw_$v`%XHhc{ z{EFh&GPV|5!z$m;w%kN>ihmO|BhZ3ktIkS7m4c ze86Mh&I)%U>!=3=SG#U&xB6BAoDH8m-|AM3M5rb>Qw z@7b|9ta%H)NrjIE-Zvtz00;Gd-S$}lIqHi8gHnLJVq^rVl6!X-X0RvF#tJ+wKfG#vI-}(Ha(=oxz9CoN&FX~%ApdD^39y$R0eR`XBV*Fr{rh>Wl_oh#39&JukR6rWB z);-?E=Xe-5xR81Ln!nhl34>Js;cdBXSy?~O4aO&Agg;E9Nx#p)*SAi6ViG87sHyP} zO=ChmS_$`vLG?Z{AQbPFGo6GgK}e&{51(Ag?9*5I8d~wU;=An1<&hnAqT$Cl*5|&j z4>HQK=xUD)$FZcdl)&So@9T#99*r~y49O=cVSRk0sUJtY>_MIma{Y`}oP2)HJAZkD z1j^mfS#gIgX#{%20C_~zg^N3T1pAwj+uJF@A3FwUoXUe3-jBh`jJZ%_PYPdnsRZ#v z_5TC|3_RwxDVxhtaT&b@P!pIkM!!b8qrDK6#btw8B9zAM3O@@#DUACj4st_>D>A8rz?0pZRRO(-@|Kuqv7X<9X}gDK#lCI!8PT6la2aAQwZpw z9rwH0z1`1$tcG-ei2_D-!i1BSRuC#Ya^#TYdrDX8&b;gOgF6K|_NLIrVp2$r7cMZe zjz@i647XlbIJ&Bm`LlPm9g4}4%O;QB#?bI@(%|y}nTVOZ(qgwiRF4P+4GH@hLn8@B zG@S}j@@wg!Y7f*eXQ3*~=BDI51rt)60j;gR-!!kc8qD9BzABb{ko{O=^-3ehMX%xY z-^aL5r@VgnvZmNUhDQI;c37#nsgP+*adLY@k_`1e;jWL&UU%9~zGl`xq`bvHhi-;^ zNYr!zs@iH-B9iHwsepQ1&o7SmO{y z-yb_<#^MPI{1+YMe7dUm!Chnj>gcEDr4JvNhz|aVBfh#xq{`w(_+LZ?gD@6COtRTa zSFq+Oi@#5l5pmDv1~aBOq;j+~XV}#=eS6xi25<+QsA2~0kHQu;P)uCIq^6-qz7Lkb zhbbs_fhFQPh>BG|z%>QoC8y(FC#!B`8R(0@K#^>rIM_Rq`uI_>GZzb;n9#pE;vx4N zyL#pKk^`S>W`#!PPkw<9t_G9$bzt))JcFf!hA_DH1)hpMGn5#uf&za)`r*#$-K_cC z{Z5aQbRHw0+cB{X@@a>?%1^)W@TxiTvB5Ld^u0fa51GEwvN~_%hnVJs@GUjJ%~=o8 z9{$7Vm&cAA36V>7Ht^jtqd!NE7(dm#dzk9*Mdc~e4+IgF98M&>hE(LZ>I72$nt|s? z3h1Obp`aPe-c@7E*_5rRW$R1miTvf2CQ9XtPcR^vFF=1tP^^0bUK<-BNU_@?Ld*o} zaL#HgMR6psM?I>bz>G$mAbwz%*?leGPN&U`rdeq5mst`*n%^PunQDb@SLy+hNGg{>BoEGP?w$;&0xSu zN<&Nvo({#AGd<9%42s>sr7g8Fx27udbFk-!(e(p$%ko{^9Xef5yF*+9L(lr7V8SHFY30{@ zVl=YZFlh|+oLpEC`0jn)A@{hpar5p4723829H0B+H(-s3(tYQI(_$k|%tu4D-GdYO zC$}nsWGRa2-1ki1t0ZfE1Ow+N;6{xyTV=nf|GP9~`u43D`wIAN&z62G+&(Xk%6D;a zv9%lFnM*U~p8xH2`dt6{O_lcLWmZcI$=CZsBDhd#j^K)CJk6%P--;$HP@=5FB8@~$ zK;nPp`L;3(A-vel@xql)!;A34eB^dZbRCW|sc5G>&!i#0&y6FfB1XV9?b-Y>8!CG5 z@Q%s-beBCfEt4T$bk}!=cdYN&*57@jPFQD^i|pGsTyfnBgfG>_9oFE!5;;TuLniO+ zd0O;({7g<(`Oi>^N0ioaLOnzY!!|Sl^O48C`!ARZ>92Q=224AQ#uh5nB@W)hhmI`^ z2bG1kAh7OBI|svfT(xYR{d|!=0?+I?w8_2t5B$BZ{<$AM2sdp%Lh@Y6dJe$17S3Cr zNb--@e00N87LJjrR7&kx9bQ0Zvl%MmzlsSTjA_ZUQp7UTx1DE~Cb;{c5gy1z6%D2w~y*tTOg*Vq22HD8Y%LnN9l z?^uKVQ{}nE@vdB3Qk4BYml))GmsMu;;ug6SqHw9+oO;tuR|rAz7WOCjb(=ItE@Qee z38?jrw(TKxr4+mgj=>x_OMNAF(nk=j@pS#0tlA2+j$owj_pZ5RzcZP>6${KyPA#)W zm`cYDyvbG|z#Uu5XDdWJSp#s{CKVdj;9@1CC5(t-?QkPAPb%21R<^1-HCl;icCF3Z z2?;rU`)t@a8$S7gRRGd?I8$uFrc%PhTJNjss7KV`RZ#L@p)MqC+~I1#xe$Mcj5ER` zIbCg$+pD@B-i6``ZFmv4TaKxK9}NtkAlC+^`rjTIzJEbM#b>dMm!?v(mKz@5mvOJM zJXQt{#2)bHgyVCnzev$+$;ywkC#O*qmD`JHYd3hNr}Tcdj1{9C56%q~=CRWWB=K)m zELJRG-7;k@#Bj4pO&lyBFu>r_*Iw}hJ6jf;NP- zE_Yj^|F^c^SP@@0U4Bku?I%QZ%J}$%&5jm9$HOt--FI&j`Z;ed)K4w;$Z8M}A{2AnVj`BxY+#m)D!xn2vt zF(k|0K4i^{yd93m#GhYlw14s7ngt*Fp`Vj_3Wta!t+kDn^!qD`ZrTFMD`i^2QquB( zzF!H&Lpi}^o2GGzS5RSNXJ6n1F} zC5o|32Uabjn{5}w?e07ER2R4N$5?}3L`-h^Po?$Y%zUw#q=VyXK`NnG<=;nZ?aKC- z$CIxnp*_yB!_idj7-Phcul9>khw%6txMP5$%w*w)`b&z+Cf*d*wj&SPaE{IP`3no4 zj=r1{;SWXs@D|`*BX5^8?F>(*_0ZM&9FD9V5bwFef}}9WHBiU!aNZHVak~^s_ah-v zlkumM7w0s1WJa(j+Aby1Zt|wwjwf6sd#SUsitv{rGE&@3UVG*_{nDi9_)^0p;`#Dc z%PCww-yzKx0@m)?aXr!UV(>{5`v-}~MLJ|TIk|f}gcsIM4xk%Q4hSq$)7mlcVeDjj zS0^XURY7#nw)tCmSjq`Guqp$_TX^;8nD!JpcGO2eh%ULX2qNM#i@jHNb^Htke%#?P zI#8#{ef*YiyKRCGu3MIoDo)N;l#AoFT9sUwin5e~!a>nMLY~0x$woN2z6#vE2V`cm zVbo2MDg@91507iQ<~4^%msO}FPob5rCBcWo^!xYH;a@J_x?i3`A0k|KCG`Al=DOds zpC$OCz9DOxr=z7g8#*TbDxn0YzXW4Px<5+Fy;mSXOeF^vwivtD3AW#qW0#09PJmIH zIjsO6AU7^(rd2aJDb6GZ&~632^s@&v6{DrprjVUJ*Q%orqgddy(pRHEK_w=N~TvL-@XInCIe$W>V>hl6_Lv$JT%sg;ojyfLm zRc?z;!aaul60(M|Z0Go(+u?VlXsIHy|p#zXw1mMrSZO z>X-0XEJ@IV$8T$!;(D1_Yc-$zO3t1f;5Nlez9^>+{LpkYny zH>V#1pPYmka%0+h0>`8C-Rp@Hv)sHgaZBnN=HatrP;OTGNLc>ct!6uq1n@GI^rWiCP84{fDQJE}y5+6VQ!KCP0 z9LA1J$6HO*IB9oTBGl?knWRNT&M6ioWW67B)`Kz$D}di^nbr@P!A>)%<<8SiUdi9uC8c^k;02+b`yGg-*d) z4I)%>XVU&&XXhM(6Ba-Dcn|sudB(RfNA-WT?Tow9mf4<6%!GHrJ%=!OHc{HU_{AwYV&JHRXFGhEXj9CDX$06YFG@O%NyhtGhm8HUa-7g@!@EE`Tx z^ueq+<@j3K1t(E}+zlwOi6P3RtYziaVosj4LwT_=3fMTfCoNC3f)-rt>}K*&;_MXw z#>eOE&?ZwgCB{eh&q-3}oBD-)GvfZeh;Z%d%IEEXC&X)S6ngf!YPg*NX@f}rdXs}ct3vAJTy6oAyztJHGP%DWgW020ozZ{}6++zPRJ+`YkhKaGGGDGicd0gRVf!YVWmj8_cdcjY-f zn*(w34OJXX-*C4(+YD<>;0Way56FncLyZtp&^$3dOhum}y+YbgKH#yIi-O}(MBJ4S zFQ|k!PJyQS7SHALGPFVnLzHON1bXLG0z4N_mpxqsamt+dFRWyvy1LVQ5%LciwwB>a zL^DQxTB3(bzu)KEUi9+85c?NXfJauND^~w4DO`q-t)z_+5~Xn>I!>Bc>Au zDnBNpm!+kpKgi_~KAb0nV(b%3!(HTpaL<#E_?9`LDj@I*tW-K^phWi;6vxs_uT_y` z1fly40Mt+xVH$#~xEH5#E3O_~TwZFvCB>qLEUoa7NJ9yy^sRmqz8%r5;YkcRv)(0$4Mz%v^VL;0GRbEojo^-rJPw=yhJ*sht^{`zV!(c8 z7vH7GO26v;+yFKhwdyT6oZlL{iZO2?+m3gCN0Xd`+~;2#eJ$E3Ftt@$AFiN8)7zqI zqii%6E7g^{nv)T!#6t1ZeHfHUzk-bc_gx+x-qCNhdDc3@9|56Oo>7FF3p{o|I zFe~A(XLZVTm6Kui8>|_0_*$i{#Papu!fYr!8W|M}dvg4|#)(O_lFvOA4<{F!ffX-g z-w5F<7#n|U2b6dfipEA?mz*gf8D$+m9~)a(VRSS=H$7h;ueb;^co>T{RQYRxZ+kWK z>kGvv-ZEpW&c&ceKk;k>8s#=XCuvTl+MPdd{jzaVn3)44YQY&Bv#fDmNMOZ>)MSOia(^1qGJH)ph{!*wELdYVyEIvy}sWDrbVD zn}Ldi)#nTl<|+Dc@af4Z8FB|S~AR! zIbu5hgR&eC$X|!@RoR4W_hJ8uXY1k6ppy8Jk_OY%gpa-QJcG@i`nUzIkH=xRr>UeS zF{KeE#`koj!FjyMJ+V+*K8(Pp22d_J?lfPA{P$o(0FB}k`zmP>nScGY>*glT`pWa; ztB44Nf4xM!R}^9;1Fadyr#DyK*HC1wDaEa-ibdw2*FyjF*!NW;t0fl}jdXUkGoL7G zj)~SQb5P&c0fx4Bbb2M&=o3InR8rklV9iV3%1Cda{!hbvX#oL&!Zu^>OR?I-58rUh zrncf|uZ>pzmN(}m5Uz{q0Ti0*hbPvMWT2s{8L)ec{ph}i1PO9%c1_(0yRz0=UuuY9 zyJEEK1UbV&ZZ#)sq9RYJ@ru%zsg}ahR@5)I0}O}Dq)^t@Oy!zuR(8H26N8LkqY=rh zL}&8UFe06N>N4(X;LApAronaD2j=+HGzWBa!D1UeOw+Ao+0ns{Qo=T@xUjdvSzra{&aZW&xw-6ApdI+zdK>&aj6c7;5H7ch6_ zoDInT!^D4DY96{kydm zmjdFtD}Z#9co8LbByE*z)c>Rh!9pa~IT?o;VQckd1l?+%jTw^EUfWN-F<=NvZio08hzv(r4TYp%s~w= z!xc3v_dC-!M8gR+2F2nGmMEnt14iBeNo_OJOuH0&z(7z|ely)?z zX?$dDg8rLf8h#gp%IA7Z-n^)1XlRI$t|6_pqf!sX6jv?`c- zk{^7A*46zueS&`jb$_qUtl#v5A$?-|RdKr0qz&Y@*KFh#FT1!gonBf}{r%J!0C@gM zOVTz*ahi34K6g$K|Pzt2eQf|eH>PvX5Gg|HMk1Z_l9v=jsOOUAl z9-lQ2MHR{T=x_NW$V(z9deb|{j`?=abTfs9*1Y< z_>balQ^yal>_UR59zKg$?Gs8XRm^~+2EtWvS$_0kBBLJ8zeZO0(jOgFz{Yf!zb`Gu zmRJ4ULE(H231Kj0ouN`%v3ogS`;{`j+wblGs)I`p zw2|_s;pgi)>l^^Yt{w(MsJN=#URg3qX$}cM=>}&u&;c;(my%Mv+dBZ?je(8{x!!pe zj{5JTp=?Xk%%1f{US7}I1y`wS`uH?o=9f5TD0=1Dam@Ony4s@!R2C8~ewtM&An+Y| zLkTb&CqjK#Q;xZVh6d-~M`r?k-<#Yp>DTE(uJ~;pCvW5C;TgOU0M}vTNhJk;8_qxg z@^{Q>8oVCvlLljyD&aXNn<^^caJRR?L4*c^onL`7<)A)JLy} zBKeeM(zFi)>ve!7lVn7ML03AShH<8do{<4)Ogo+W0ts1V?-Y3zOdQ?|(Rj%EZB71O(zKtbN&jhspyu z^KULud;w@#M+$fMI*!8dgQU7SjQ&mb(vCHBSZJcDe{%c08bnoj)B(sWwoyZtU2koo zWQCqf@b4|Q!M_C4hotE%ibhrc?gykK?(6KDSjeqbPcR}#?&Mcfn zDdd(4H(q?^hJ|M2*3)$)1E6bIURCWIt*M>ky8if(s5;8X&#H3 zi`sq#$Zk6uu78}t;{MX00cliEnJ*+YRkKICl<=#Br{W2NW8b* zG2~y}Z5?~|lZVL1yM_E(nSPht~+&*r_6lM_y5;u;Tv$8rDO&8t! z>s%MkWY^_tOA_xzUgP6M{zIa;v{MXp;^HWBGJIn3PjYCK5!hf#7@m3!9hX1={xW_d zq?_u9L-HKloWU`Y-@$Ti0v>>is2wO}o7>uL4hvSjIp6B%H+^;QG zuz6`|?j3t&*V}Kq=Z**v;u=f6wz0BA(hqm~<~$Oe5T|cY1t&SFxcZL3K9VEbg$A>p zf-kkHJxVYy0Cn$=n3+Ww=pHxF$lCf)`P~08<3I^2Dg6&6b8gmCrg;t6iq(yq6&MT? zls9kSu;eN<3+`3N|D?>^2TRd3Vqp3Y@!G>up`L24lzQq?({O}Wuqco(G;kt-2};1v z@;cA-wU*ZZ#7c38;P6=V%}o-=uj6EY4ln;j?TaPu&VKrnRmr+#&YLQl zuYVo~sm?!m;s)nP&)T7Mbr<5&eZMnwYrhv2)41TIaR}p-Kk@nUg>&xTzx8q|c%2>w z^^GL?e3-PS#U*VDa#?i(M5w6-l&oL%XxYI?)bE+%-cNSrG9$oIk0tJkfj$`o?e?2W zkMVM?=CjdZ2!ihw&VsTnsQUW_Qp8!?^VKLlJtM*UfKSZmar4>bb=+E&x-la}vqoTW z_d|5lUm+-xrrn!30P--xVKE*TApwOrEF&-2@gBz7CLG$wU6;#J^nPxu7KFnxBX0{< zpT7e0b7iluoa4|`gM0g(eM=~nWOLEeOhu1K+Ppsz59uc1>5`RRbNec}HNdD45rGXu zIO)&N=|xcdF6;Qd4;_f#;$;4{in9YqV4G(_)mBr3+>^i6=zN5GyuBy^)L!GXaUW9C zjN@ytT;cAFKKhX{za9RN4{NtC19`s5V3jWY5O75GTY`bCF)rdlHn-ZGG)=F{x|FP0 zh{t*zy-{UD%x_t$_H~SsVh67|OV+wCH(`dz`=*IrPoBsNp0Db%4>!?1)yGn1v(W zzQF6T@gW66BtuVi2E~*NRFM7nkCx%mnOzdIXt6gMLb4GtmfumlRky6U(|>-dR8;;` z-Xd{n+>mJ;*%O%#q3~TwzZ=K=d>ggpR3S-u-+uvZg#@Z}0Ym(%?=UrtajB6w1fz}hw3;36#f7s!G9Ow&*|vS`k~tAyX@}BOmWRx!N+PEm z%=pUBG$uG5*5uhpXQ#rqpB^dICE*Gu^dSxH*eFrPamCy(v*i8u&9_Pfkg*v@P>z+~ z;HL?}AF>=kOd3x!=j`Iv#wD#z`l-sB0n7_TKh0K#L|(wC8D=R3?j4-SfbJ?lBKPb& zYwJ51nZk)bVKYg8!IJ25UR3ZexXR+jZ_r22de~CdV#zVWa(v5&4IEgCG>=kLlvmX> zEVoCYbUJ(HR1yTNctvZ8vP8f}M3H?mSsO(h6eN=k7=dRM}l2*`S>V4vEuc z-2MMYKr?`m;Vo?ZI3hxL7?5E2W#LE^DI%Imy*%e8TDVUDz#E|Uw2A?0@CbF;KHTmE+-jG;f4r~`H%$`1}e23e((TUmLg>puJ z8Gxrdi_J_o`p_aS;0|kx=(h2sR?f#Ac-wW5mg`^9F<<*vi@=Pu1eyUj$21p!n|QQuO6n zV%W_YDp`DkRuK-^{8UwS0v6({ZufSqM>m86geZ9v3`a_EZVOj@`oq-nRJ)Jx;O-yb z$L6M@`sdsq`wI0pJ}4mX3cuuFu*WWcC2RE}Cbc74<8x!tZ?L+ho-kAY&>-G%9ozb} z2BX1VR$fY0XB9I%=9kTGm}`#olzkw9hNS!pbUg)59e{n7Zj+E@JdkW zhy#Hnw}q{(@yW~gy|GdD>bfekyz#Eeqn^~{Ap>qN9%q-}x>)vd-o!9MJTB1nqjHbF zR#jgKjT3)`S%OXPF##_ns?ChmDMZu50b2}b=EVQTG$f92*BI(C&RnPps3Xs^@_gDn zE*n7t(4wS~yZ}g*u7iORFk$~j#GYIY)_oaO4Z$$$HbNn9^S93rMwqrcgugHUf#e+r z7M6mC7E0hmy&Pc-CKY!QY)_VO(tRyIIGD^4HNC$|E#T((IqYp3&+58YGwjc>FAB^-C`c$l~;O-!e>DX5a= zKjc_uRnmDk*SA|=&`OJ7V5X?MsLd{Z18DS%G3R7PeA7grOe_W|N$8JTY_JuX;kOt~ z95KluNTu;dQzq>>{O}EI8%nd(_V~&up0zfh0X*k1b3vMU%LAIaFB2E3NxMZ;d*Q~R zVx}s0B8Nk(lRgsitC}K*r6+&Eh9o2)JxXje`=Dz8C;2tkp*)uwN>vXOf5hBmUU4=C^Hh#yzZhibF{qrbjWo*2A z!1S!s-OY`+q=XEjRFkuG15S>pL;(MA?jTM_YF_8;dDCreSGc&UvJAB_q+*sXsf8Y=C6TE{B1alTbd~BCSF1X9 zo0jyq$IDBC>lS%0Gb$x*O8??w#Ae}!)rP`l|CXO`sZt&PV?AsRZ^NQBfv~N0S!8Nv zx@w;oLS(1TdpbussZ2JI#%I{tlvU035LBKl_=}OL>>g;CB7~c%*c>kLnrFm{@f?E*MBwX^5T8d>laeZpQc&_aW(f0hpJDHrWslnFU zZDu=}?q3p=0(_WFY7D=Ds^nkCo#K%Dz54Jr$*t<&u(A1xZ#z0 zeYOO=x&jSHr`fCv1oYAbIwo^m^_tZ#gWqvsl!F?(>lK}pilxB;iOrpwnUNU3IKM-V zhi85}k|OWm*C2??;vCSbS%T{3k;y2wI*?chqLRDuRv!D4%4BHYkAF!|+7t1axiDvr7iIM^pb z$Ha)75_D7hq#N_M!tUE4*F=~Qk6X-J0D^jex`|Iv&@iSP1@Ce!U?Y)IBz-Xlr!sDyCV?b)Q&wKKS_`cXerf=$f*%Hu% zJ78Y}Ixa@!VY4{MqCoac-xP}fi-LjzQTlj$?~{~$st>~WKUBSCSd`xvHVQ~fcQ;6P zmvl)Etq1~wNT-x^OG$%tcZYy zZC{0|v0`6=HiwFtop_=;O!-U_&D_{FO7>;C{bs$FV4Y9lYH$zO0=@(*ZVu37f&rfx z#6^`&H|Ryqt~WHy&b6|^030EpJ^^31e0=qT6C?!@=~J*lZjF3;dOC7sge-4DYfD_% zRTM`4G8+*2b$q7q{&(ykM?${rno2F;F2F2DB_co>#^h>$+s7vArjUl-OZrD1gl`fZvM++APNX@EkF7U$y9R81F?=T93 zX|kYPq^j?4^=}`U7f~an6!h>G7DV)#{=|U)Suhk|ZFGGF2BWT#k@(^>2jF%KUcke~ z&>*eZmDez`(NI=*Ou{?g@1Yht+0ql`FvUrcypYU%m(+thzEj5)cppl&0W|bRsTA|& zKIUsBXCP4Qq-MPHy|@<(W!#rjD2Ag~OECJtEFUXS1owaS0ui9ONFB&7o!QwZ|q<5V~EvS3+& ziu1Bk!8sIyWtpyRaLqZIR;(VHxv5RiWvQ;oNk#cw(~Ob5^m<+maGM^SlKZ%|y>W5< zI=imLpL{56W?N{aw*kiJ#?2=9Z*aY}%J1QP3)?zSEkJjnnNeR~pW9FYYxLEVpgN4{ z@Rs+7B@ev=z;aAWv;nZQd3~vjVDaOw$(aql(>Uf(Bs`RsHWHZzU=|$!h*;fj&gj3_ zU6-)3X|`hw3$JQ5dW0#r8B#O=e2b31UOZo{FM|%6`KIvRFCS__iQ_xSlk=KJMjUTC zT1d$Hw9pkVz4Nfw;(r?#v7Z07fz|tEiBM)f_QR6s=5h)OhD4&5=_#0zr>84tvkLN} z3P^S7!|`Ef$kWDS(`eyacK^^8Z2Tkw)_)_h{x>AHKWwGYt#!aLFpjXwK+no+!=#2n z4NU46d6?h4kLYwPR$EA?=!<1A?;v7C!)BcE#1fVtsOqRkLfb(>qUC&95ob)F0BEE) z!-OmT{Q2_l(ok(bFxw{+u*btnhvVN1eNoPt0r*HmgHBa#gMVZsKIomeQ_j``T=1QT zQ&*8g|D&V3xZSQAO00f1Jj@8UZ zfS=!3B5Q@jG+QDBLyN-f5j?&sR}oF)>e~7gGW&-TVkkY+9L+NFz#$=5W|LQ@ zmp;3$%s&P>*pP8q-s~RmtE*@SDDSVW`yqs%D$vRtCdk^QTU%QX)o(9S{sBJHNTiBV zzUt@qO`kV}q0t^7%-sytWw9?r!epPkppFzj6S$OEC9wZ6GlrFy_e>M@h8KbJBE}A( zT!_Z}oAQAFDxo#vi=sXPH@B0+;}=2HaHVYZhze(!KvRei4PQ)uHhtb$k!mu&QBaikFvkEornw)^b$ms|VO)pSHfsQvrg+D1GIO4Pn3gcj z*8~D!a_AE@kUj5$zw6BgoSGn1;5+A3n8LKaSkOmQwa|QHaPhN? zPl|N#;uerMrb5bz-l{4o_D6$=jrJ^}Xv=uQLKC75t$wPRxURW5FNpY*E=WbMj@+xIX6XyL-~4&);}=`w*g(yUm^+!2SF~H- ziw{_USc~65-F1Y@llp2C3BKMgsUe3)$o{MS6w$%XpZmgr`RCDbGqyKq_glqafO6D? zw15#x3dlh_XhfX(`!@t^n*p^jjFR1;Z>ms*N;^EJPibL6Z*6WZK=7$ga@V3_ZV#Clu-ILu2wm}U#?h%Y@9yc*qwUWLQx$W&AOcj` zvr$Y!F!AO%`>I)e5i6#6S`#?gIPF~G6c8}=oLK};GJqv3L~+rU1uv_ln#Xmc({oAY2WzD9)sd*gT_33?8uuw*5JI1h%UU%BP4 z!+7ORC`%qBwAmXF?mD_{Xldgdq*At*eoh_56oC(n|C!_RZTTS{_^49NTHElcnQQB) z6do4kf=>8*4I~*cqTKd_MaLWCHeWWdc>S0Y)(`{4P(AboG_1lHAO|Lgd`AnBzXet* zmExj*q$kkE;@wyVf_zAmy>oKFEyh){>8Ifumd_5|uj32+1>1EZpj`)1?oj^)2n2Um z&F5fZc?Lt?5L!IBYe!mBkj=20~cRy>c4w~FpK5l>1 zhwg<0f2{{lt`$eRsHxhEfMBfn5T>H42;P}dK#)#ZcDfpilZVfk_&6_q|7b0^3FI7t zta*5ghu9Q3Xaym07~PFt{&`^l2xW36jwBGCnsKnaetLRJBFiIFh7>PQY$6#&kIq%u z@@ZUFo#u0U@cxX9jI8!PVg^am>mA4BtP?S%XQQi|m;2ufbkHM79YmQB1VELoT zv+**+s6XLZss(yt+)Rh%ugGABCTVbpZ3=w8+#%J~yZS2mA|2Q?*h%#?h3gU%$UI;Nlzy`0_9S%c{SLMry?}Bh>ZohX#D`aC*VwU=JYdS2a%k z^2!^nsq5H|%+p&B_xjZ^S`=-v7jZ=lHm@o4_A%VT^tF+7E>=2SR^gA#0m)rM4r zK#DFwgNEYha+@$=_4g84Pv5KDx}4ZnA35gO$z8UQQBKz=a)1?ddrct%L3lT_k^Ph* ze4W1*KPU3V1tv{-4IvZ!~W3CU8a^3stXKz8=2m*estJo)gUe3Uj6coUN46L0J739cz z{clb14~4mT!FR`7hibK#;%!_|eT}$SPm}~uLJikML@4&uzsue|IG}XNX2T=f72Dw* zgKfVbRRo-NOwV_}bQ4_*&~YF%P{qRY?bc6=&!1(1M~r%~a6x7P0|RUA6Xk26AQ(!_ ztF|4|i+yxx%_H>5zFhvZ5`FP&J~T|N^Kw<4SIm>4j+*iIO`eelfxGp5AP6*i>WDQ6 z)XRWw@A&cezDI65epH47+3;MKlr$>eM)ht#)6xR+BmPOttuRZB{E5kU&kh4JbUlk@ z3@MJQJElem-vx0y<{#JRYZEmTIr8`wEP1?_DWI(&Ey^jkIWu~11iu`8HPEZti*O@8 zU+s*|FLRfp$dh2FMYTJ?WTXlh-%j@O?C0tU=LXitU!ckKFs#oW4QMzNym-`RNnC@n z*>qUnb)B%GzZ3@z1_jpJze&0})S}FO^s1o4j%>b)+1>Bzb%%vgf_4uEm+Ak1hvV}B z@ULA&jW)JYgZP~6?YZX@p%j0_sTKnA%y0r>E^SDgYl+Zxk+A3lDrBCs>i9>G9h6UfUL%uNZO@tjvQ-%7oyrF6LYh54N8>zVcnY2om*kq&RCmx zKx%djAlrSwDOhBP@~x18^YZd);4=UGxwFQ+%zR=c(dXXP>1xGXU$0|wGVL+y<7(64 zeNXkaE;5wTf@?U^*uNp~%a6RjpScRa?wIefQ9w)FNqMoLH`-T{FnqT5tG~)|4@bwu zo0Sx>dm;Pe25s2>hl^iDziRP#!|>fCIXBu^TKc=Lc)XDGHjJ?7uRWS3I^mod|B{@J!@Hiwt102 zNQ;mKBpmVDi;I9{Lhobh==g`2d@m^Xp>NNFDO6 zD4Fi#_Tmd|X`)CyI)T{EAxnOY<9S%h=+QD!oTGUsTz0tk@0XPMSXh}UWEiu$&EMj- zSpcT&UpAHsqCbgQK&-thEw8tXmb1sn-AlQn?Hg$hIi zYad>R;MTkfyLL7J6|Yh*VSwejl%mS1czi%FF;8$|9uNB!Ir%n-7&w~S-{~IOKf4}q z9+?gM35YtTrVMlt;#;Nt;~;u7pkS2Mu@zSuV%BRKp1>R0EpwXaLO5NhK{>W1t+MYF zO-@Zw`HFMKA`{}P6Eno<@xC=cf&D~QrW)=Ks_?|P5VCChO%05!fF`Vhv$HW^wG~&R zF%1uP5@iYURFm@8ofx^~Oi<5<>ar zhrZV<&v*FTwI|uRxzeZkd4I|cQ2jSH>}9GA#X9uItMi$3)IrYMp~By+8i2Ujt(Jq?M&`aAKzteD32cnY(FWrl99@I$NT#uxaCMKoClMPimS z@z{>8DDcbKf4Kf~xJ(?#$CAjE!|ao!+#ivymkRAg45g?Ou=SgMm6EzT9aD1&k#_=f zIZJQ;{RK^+j7%B%e)Pr~^EBw!U%9fk)y^ikARn0HjxXu+Vo!3 z?p;AND}*x_lZ`edqPTV3Ns&FNbFvF=7Enrl_mO;Qm_4+6M{1Rr&6cq5(BwEVig-kh z1=eSFhxNvrc@(i3DdA49jm$Q=g+F39lZ#g&dAh=zfIBWLV*E_c(-UbwQ?%Ep{Q)DU zI&Am&n4rakG%{7ouLyu+E1(DY*s}djT{>AEMIHH7~arM4=ar8&_&kzq8=N=_V77<_VRM7;fFHosEsG z?oX*=Cb9SL3(ntc4P6~A2XDPGn9Cr11*?qbGI}SL(DwDB5i!&2@denDuRExe$0`xK zA0BLh_%uwgr#HS&TV#mtSY5?B-XdHD#KF8z=DBq(kYX-KFfD$^(qFiz>N7Ba$~$@>ihRJX zAtu_bb^Tq8+g}AdqJetn>91P^zfx$O!`+DcVpN2r%cZn4OFU*$-&7*QWAJj5460H4 z7kqK|XB$=r2XoZC#p(ZyG>}}Wuik1uVhOn;2zs6|YsTP(4@O3u_8r^Lfpq`*=dLe$XSW#m z-yVs_cH`_v+vOhd#p;^rCO!czGe63$EWNU%18*+;o0l)0u8vxG1}J|u+y-2AFz&^s zR$*HJo^;nb_rq4{i9JUp7HZIXzVs)hp=?VuyVf(3FGt8d>p?H|4x3ca{p9)T%kbvw zSJe}V#396KzdJ`pN2{!?V8m}%$r~z1P!=@14YYN^8K|UHR1CW~@;u(Lil|ejtBo-; zEXG%=qQ>vZ4Y{gy^n^lsiazZaCv{K$|Lt+76wS136Y&OttNZu(FNCh#HR@n7PV3U9 z=e6GSmgn=|~BG6aL=5Ha*ZPkT66=Fk z!$K~)zrSxh4S^g4-VbdVqB-5bH+-_U$<*(=@k!8<&^ak&Ic=P{JkG#bY zWj=tJSW4$gOs0=v?R*qV$J{+{LIj{MQJ?`fe&@@vELs94;>XV1GZSJSlMRHc`K5FGu`RcVnq78M}47xO;=8CicXhH9wbY(v%o7T7xK>< zhW^qEnMsQ(U&*f}*bsPg4opq&-h8fi!g((SwT`g-2zBi;tz~(Q)B6(pKN)%n1+mTH z3P!XfkUGV2>=aPI2MfR|I6S$%Jh@P?%ns4OM$~;3#-lK z>8Q|UPsH`z0Vpc-m8LyD)S~bJgzpTH=es#u*9L4C$%!czHw0{E#ag}&La0eez2kgf zfK)0ypo38h9kI6wc~V4E{)zhWUU)5-ZxxPaaiVVv_^1P=$#@`&D+wpOMkAm%<{)p> zVfb?|h=}|Gm_kr3A$x8`8*I7F(bU3@GM}na?3I)CSxEFsNah~`A`%i*ejYGs8j4w2 zJVEqJlLPSzz>Jt zr{=r{N10)h0si}c`~{&<6dqH8MoHX#A#^%|)u4qW;{LkyEU#K|&%~pDf-j#HNHnt*Xd8Sz3yn%)a`DcWT{IyW^h#n%i)|LKt ze8<4G#%pzer0hzU)xb8?yJoeli~CE{o=xQ+WU=9~PhL<+84O;`B8q8~E;FBib=dCCta zAv{X0EnvJz4+w_U@Y(5xu@N!WCadUlfO9kjmAT~}8> zIwx3AOFQJ9-(8gpOrRcJmjf3S5Shk8(^UuLZBhY7M&{V*G6(RNl8|WoEf3`18SNvp zJn^^eh_o~7Tf+n!-L6qxF5Pb>F~Le$4wJIHv-m2mU(!q zWgNw`0cmYF+spc~8opbs zaz3Mpi7<2u#wJe-xgK61#iyaB zM`tS^^8Bg%Af=mx@>V_esI&ENN*8bX8}LI#KLvA_zksH{n%$cXh#9*_IjDGlJIyz+b+bQkktNx~{`s(1ICZVL{Kk=)d zn+Ku6XesTGVk0J3$ z=MhWSc2N%U7V$4UUO+X@Omj0@?jOvx%rY z0I)V{mK_RCUS7+FatXPM*wlkR6(&Qtf8koz)?3s=rEh+Xf%5Ee1KkJxS)BSfRkFa zoh}w=VBFm$_(A}ijDY|Kl2TD#+TF|Y6ALg>mDn`T*A;TTSeVZ|9tNzeGy5jH(C*?E z`+p>dJpAE+swzy!kW}ar5&#}Udq81=6C0Cc6k4$TDOV>Y%T>5I2I@^VwS*6BHDI+J zIAaHIRDd%8)TGQ4HY0czc5~)}x=z8b=-gJ+dQV=SL-!wcml$2bZl}5$VIPBB8D4=5 zGrm^=B9t~@ZkZSjv_TFcG>Bov#6?9dW8AsDjWOl=MQY2WLqu6SDfvMN+jH|B#=psQ z-gf++MV-~rDYGsBR1-~Z9{$8yG>wdGe)pE!ggEGGjUj}zU5N*q3g?UIKOUK0hPB$t zv8>`^;w97|b72wHN+=r^cKk|$68Os`C6uLn%WY4%|dQX25$hqsgUv5H2G(6L1n&iy1pP(u6oiyOI#LU`ozLzE7+SMfRTrd zPz=_|h8Zc3k1uwQ4rEP+$a`KD)S!DqD6#(vr_ELf;gF5 z6{(1*{m-x!1rX>fmxlKp|_yWKQ5d2%DF1~eNz*44Ls?hy(u?D4W z`PjbhXFyX*N)_zda(iIM<35st>adK08y@83BXhQN0xsC}_5rgsR*kSw6@z*G%eW$t zLI}wFHwQ^8v^)ZoM@L5-UL2wvdf5S{A($WjM8T99GzZd0I{dFC;X3^MTvXXkX&h7C zNKO#|_&yC4q)mmq%I3>WVlaPSe0`F0OX*cQc1#t5@(QfW_(0a@)`*qWK}<$UWOASu z9zjygNo!1>!a5ELZ3u_{;mFlDfinHk-xRl=UfaiP)YpJ-!69R3zuRP~Z=w%va~*1n zNVi6FIZ6V_oE`4ijk{w>cf0k>VQ@7~74kfCbXcJX#_!ENGJGx&S^hObO)V4J!3;~_ z4NIOnuNVAoaLMZC-%*qe62GxHlbO$|{WRJI)~G-*Ml_t%^r2G}so+E3@V6qKw+r(E zplSZJ*eh%axy(~3AJ~OAXz{>B4U#$yY2%;OaRUovXxmj^s#E1Us1-5fs-b@brtI!Q zBd;-xtljTQXmT<~fQ)prVW-CBNbFPi+gb}qW6jS9Aa=Y0pu6Rf`W^Y*{>v#RV{A>* zMWhwq&mfU71;h34e0K{UqqY*S73O`pHzj_(kzVkPg zH|&lof6{B~L15@}R2`=v^ys<)4IB!sYUMc?ervk>ehGz!M#;-+^X&un)5%Ln>;NO- z3_SXleI`}vdta?kagcU#y7 zqGN&;*8)@bv9rYP0E6r+sJO9{$G-8yp>>>-{EyFvt*%X>W@%d)GZ8Ki?1rGi9t=CVUKCP#o?XD*WZI!>89qatfexrQPDx#u_rQb>0pl;=Q zHEHvLW{phnQzl=(y>IjNf|ZxmQR|WfWYjK z6mzaC681pFimDu#b1B4!)*qLwPcS`v;@XXov@HdzkN{`As)4Snz^#&FB|U#Z7bmYq zf4j2H2~Adowo!*O@S=oT)F$3Ip6F9oJOwN?Gk7LAECv?j6=W4wzS1{Ip-NzSbku6b zz`(@JEiAm;hk|?V`p^h}e zg4O<74G|wo$MZez@5UDvqMVZKsDzGSOW82dN*eq(hfh-hvuge`TU1LmVL#@{jzn0A zh%*9MR|kJKk~|p!R86{qMR~^suT3$Q&DJ0-g&2-Xv%9B@v-2LmrN3Cj6kRJhG=JX* zQ8fJ9Eul&neL+Vr5~x_dv;<-vyZ(K%jMvoxG*}Y+gc%V03tRlQWhfL+X)wY#n-q%x zuS3#HNrxK$qw%Dq@6`%OUoFeIEmUil1dY`5qZzFU@DoG_uB;(*MaVjx1bI@u<$i#^ zmJ$6+@pGfQfctE0T^=KDGc^pQk3CKXg>6<%a+eMwtR(Y0vg7!1{dX(APJlu1Xw1-G z6bjF?RD_oqw?P6J6E9Qw5xZCZ$cy?AAl>Ht20wh0@jJl2hvyXM`rR`!awvM06rZSV zKiT1&>nh}xDm3?(np>18hE#f9O?j{$?=>C+Rx$@TXjiCt9w7|hHN+!QWu+UxuS7Ta zIb1}CLX!Wz*JA-GjRXxVa?%5)BZM;A% zjzZS7fmiUzfLk-9usyxJTCaH@Wo3Q4f`)eC?xdiKnBAPS@UJYQl@OStr{PZ&_ELd< zC8A{i?ZeJ1Bbp5j2C#_H7TdX!`SflY3)aT9n9Ou|bYB^PYf~ zlE=;!+Z+L9gNH9xzTJsmPVeR>4h{+C666g`oc*HpXNH>RfT@&AS4$`R z=g*S_I}KDpoThnTupec0w6?Vu)hdF6h0~aE-P4ts_h9uQTP$yLV`%@aL3?^&``24B zL?on7Wthxfdu!X@d>)sOIF!cqSueQPZxE;?EcfD^Vk5@dp8RH}`U{E^K3je69G*gd zzKW)#7PJ?86^-(a7%tTU%6nNh3@?xm(K6}t->yOCf zV($l;5>X&2O007E2XsOyjOrPwMu8_j;^ChVdTVR`BvfqVNITI;{1zjpnIa*nsg16Y zKPoF=BGsbfn4e5zQ_!<9IN zxpU6zf<`s4=SV0c%d02SA{o@IY(GouyVE~CY`H3oxkWfIr_+wTEK`5Cnda=`AoX>G z;bFV=r#^N(8D|$>v@fWC6sFqE{>uDa^e=Evmij^PT=K==<%z+4H3%2Y-QBI*TDPX1 zgT!~d;k*x^EDMESjH+zO$7)in9=GyhOh*?r!tGlh#I?O%N=p|6j;N~?U=!nqlM$$h z3EpDOW1;+x?YTKY5a*=+))3^>Lv-j%E6Sxmxng>FdP;Wo&&Pi#kdtepS-3~EL+0*8y>Cr-QoCJ*?3)@1-C*dWHH~Uq*Up_;P5~cPfNyCEjP|{|<~*08VHq zmUO;h`{Nm_&&g`R>G8f1 zB$dq{6LR>_;FXb)!48$Y`uySVk+BKP{7E=6qTGm9!0Fc^g^iV0^M`77PAu5}4%>i* ztZS)8Qp+_eM~wk*n4o!FXWdPO&4$Rrs@fza#!sBr#hLCBmQ}%wrMe`~L1n>Nz2IWW zbB{IrZdHRp?jx;}a8e$Z<0UbI(7m!sL=#;>crC5SU6_`+-KXJv?m-QOR7D$`H6pD{ z?d;?jR7i@6J$^Ym2i%2WOHzhkY8aD(q8AKmXlaecc!-iv+vPSa+2YRtMM(S-lUi=s zRn%|xhrL=mA*_joS@y6GLf8Wl5s_FFB!MelHyEM@?;8V?ID4UQz_)%q?Fvp_(TMGB zosV0hvX1*NbY$qZ@KHq-dUy3}hZf05_w@fwh}b(hBt~%OP$j@>HJ7yHpn|N)?%Xm1 zb|HC5q+((wS*&?qCAoe%o1TJDPQ}~BJbt4$vy(O3l|2&A+{M^P~}H zz&Wed0C{I-_1r2dF))pF#L4&8(DITAE{X{;X|ocR(vp}b&X+%NPtKMr%X3ZTKJB$i zv>BhHR9+i}kiX-n9bZX`^JQdURHmvT0w?p3uSkRD@TLbI@+R0J*B)yJ6;WfJNvW63 zyqfJ<=*L$@S}}4WlKt-KY52DbZ(}uBar0`nj5Hw4G-jEX7Z>Y?`3E=WzcK~mer%ov zDI&q5TS!Q22H@)ynKw5z5q}k36#C1{DhRV|c+AN=PDqcI$Fs%4jRS65?73dqt?6V zy2akd592Fz4zMZe-}EmphJ=oPU?*o*K7-b-buOI*7A(btA!o1KQ8h+Z_b8CwqR2?y z7V$cP?fl=_Hr3JKPYj2KRxLO`e=Wq{B<;_fFWZ5#T+)LHXUIZqs(A@(cZ}}P#W3Rm z?BJUJR}a~|x_No|9n`r*Dv{mCP`~SP>R(ydTM*%HY>#AEduD}2E@eW0EYNqNkG z+eeO5oVr!H+r29r5)xyQk`cwP9D#O|tEXl}lFx}ytel^iJ?WCjFGfq7I{-pL_XGM_ zom5k(>$p;)rxf=P>4bS-!O5^r%}kle!i$hv{bqbsn4MbsQq+K4pImZ9!f0SF+@SAeUQ1Hu%|HN)a?Pn8GpU__0uMW)vp)^P1`+v@YjjI7K5FPcBL4^ARC8K zvG_VBF(&Mlko)fLZdyHF+E zZpBJxJafFdf)7^>fqHa3ws6IBSe?r7wfX#0KCdaj8SlJJhiUfoyiM0z znI8FA)7MA9TVLn+xh1jTOI^dyT1blZM`xY-;=R^FiH#EN?b9>IkjkHgU%f=v*0$l0 zJVl6zNkZ@45ehw<*i}x7LQ>T1??&k3;}b_io%Rm)I(vGEo==|?TdF^a+~WdeY+|XW zrBC|tF$FJg{pvqE)s6j85h992KP6Muc`dlJ#72u2pL52=G%{l|v*N2pHUSt=aGZOJ z4KkHMRux{tdh0VI?kJlL4@t&?4?|Bs6*WI7ZNM`f8Mw z$FEUud}4CH^Pl6!lH?POIKx}KP~2*H@bYrgB*xjrv|@RqSH>Lz;6Z0+m#lmyA8k@D z+(~JP??ZV4h5P(D`#*$#KeRe-utQE>YwfMYZGZxW>v!Pg;Py-r7y{ol)vaP|N`vD8 z_>0G{hq@?V-^P-Y+tfqYYdh|#)L!Ge6b0u~=#rxAI1V)57 z?jVq2ePYF?`>vyR9(w{i8yWR9q%v9{2^)7G|7EH`f~W^vatFLEeg0}+Ii09md{EzZ zBC&Kf-}?SxAf{StQ2M)#o&~+_K?XS3V!p?{e|BdFK`a(f5>RNS?Zr_$Ep=4b3n^pI zlvgOAuN%btH&j9*>V6l2EB^A0642oZT74b*T>e6eAAWWEtlOYqeqcb|I~|MdksMlF zuKo4cA;eyvAnQ2v=Nau^$rZ1Ub4wZs9$y6T2rHb4emj_;;1G3t5k;~1;?pa6odz&K zeMbVHY=FU&?|(He#_5;#me`g6gQof`ks4_}wxB)?8nZ_cLmeOAji04;77~bS+}$m1 zfDYZoyAZ7!+qhg$dwXOx#|)aSCt46en_5e1^xGR!!ybM-01G>0K^tZf`;DK6F9<+| zxFc{6USN)(0InPBxyl%VrP8?Ix5ubuUE+eAGO*k;wLPt&0nsb4HLaWs$p0h~gTHQ? zdurEyk9GBhpOa6+It+(7F4jnIgvk80S8&M>;el7CvqAqo_puC~2v0iJ6|Ykm2C zflL_C#+9sLXqg+Kr?^LL0k}VSi^R;(7Q>@@MJs4XrcC=Yx%uqRQ3roN3B4g$tkVQy~SIu{mDw+jl=3>a-qWk<@+>xE=> z?)LAEK&f(PV4ZCKVJoA)&}IgS;qF+`y+x$Cq)_n<+slJ|c~s>dxSpL|<}#fI;RwLr zzEl3BZM27*>4-_&_#3!OylZ*E$hXjp_~5ZdGD#^eC#f-5M!(4fI}V_SBYJfi8=&`|`u}$b-Bb~PmpL7V%?(hK*W_)^j9h2Kt;8WSZ zbKlf(+%)n(9l!e!OLbDXU{wSe5|Qg<)WB38rdmdV7LLrC{(eb8b+qG^k#~4-pE<^6 zQO(}oUQLUT8T0dY>jo!3_gjK~SfQs_$dm&M7yjpKN+o7r3cTIu#$6Ra{in#Vt;m5d zfV0B_M~JFXX^t0Ru&=+bQOiVDmapa?YVu|(@NC>yg(%x+xAGqSqV1BZvbrb0@c#}M zI;~6&s0LT(?(PV&5Q^2p+NAO2`OdI+5FXTZ0AJAX3*$gtO#{-|lE!cgD3DvCwB$BD zbqQa!++SfIF2!V3ogb70^B>vC$uXulVc~HW?(`b@U|>3_e~Y~DF;_qxA)dtv`Y>0X~eAEtfrfuI=XK4Xd1Hwz|h<0zaHsQ zYd8F0^yrMB1wzDC2^bIz?#%fF1mfc1j)$_upGyI;^P&33Sd3V!*T9JPx4iiKM#l~Q z`&~u{(`F4v(U|u?d+qw3-oMlL)6~^<6;HzIXN3VTXDTVHEHF&qWz|k$W@MMW3+ON7 zR2oEb&Qumy_(x1aa!$d)D~NTLN-N~Y-!n*^48Sxv#UEPHt4W>-<|8G!ibbHzTE7Z zdDm#a#n9K^Pp4ZUeg3a85Z2Onz>MTj>*C6>zo1IJN6s!Vvr+&J9W5~^xhn8DTvHbr zif2);_L?O{z#urEhrh8G;lf{eyeS>R9YV%(WO&shM@=nG@^`~DyR@|SW7_rEpW*a$Wl@L016V-Oa5-WMyl+_VM>N zv}bZT&1?XFp04~&5tJKB$ID8C?0wAdCZu;J%=J+4CZkCXgh#MP$*Wq0VF-x*hAc z{k-!mZRm~t%1Bv&+4X8UEO+h~53FIvahd^xwL2D89{26Ka*49m)vc-{^V3aI<;3`0 zPu`EcK72iAXTSjx^}b#cDVtO~5ivfO1%1eNpXLPcW?*EjEQ4bT7atmuRC)i%@>pKC zQ~RIS=({Ff*4F;w*dR_n-xlZ`Pfzvs|LwaaJQC2<_QUkR7@r8U$DLk+qQa)KyJyi2 zRaxJ8WJSEurUlT?JU1I5U-QWLDQD7;?1=Bv_tA5M68Rkr1I77rf<^z-i!D$Pkanek z%^WIwRG#5BT)T_msk5tJcwDZ%c*#Gw6thFn850DS(2UP4MLH$fuKsT2{b;^rAKbu9 zDinKUZFAZwVn@wyNn47=n)ENze+NW13cB8swB7HKC8_TnY1+*EEUuT>x4RI3*qwe? zHc~U&nK2_0G)M`~V%+P3p*fo3+UXgAtj0PrcZ6O>cD9Xk^wIKiA_|hk3jw5H`B2%zYG4%&O-V=zlCH@1Fd@JGMLDL+m_nEz}GHOr(mZ4%LT~8M&(o(wJu{_ z+c+9THIsz(*4y~Nfy@L+-TV`=pn1<`S3%FH@6WPTM3(U38&T56uEI9{bBX@X1Z zw_~+grlP)*kr5@}SL&I5dg}LJxw;}rHt>a?iWLGZ(%1` zz_4YkEcyWpj~)B)__d0M8pDoKsN=eximGDKBirt%4S}4?>B7P%K^jgY~kCRA)upU!yc~ia}X^d>Kk2`G+-o>8SW4amSGy9&uJDd zw6e04lursZ3+CkG?g{*6HUZAyc^R%t3#tv|n^I=2iT-Sy0hn@}8ZJ%J-|dHHYxOA; zqkrL_MaG=>T}6L7Bx}$!!@$Kg-QC;&cIaHJe1X$Ptzh;BMlG$`1X+DNc-iIo^7f}e zMa*WmcI)&H!1fZEe!8T5E#qcSg_Mx^_ck**HtJ=P9SzG4Q&L^rH;oTwz&>>jhcI$? zfK%rLkHH6wk;+fW%x}VJX=%xL3%Su{lz_on-^O9#fLn6!v)uD5m)sBS0NJ`aS@7E( zP*?x_zW7Ho;BuoJ3{HKzIXsve;9!g;7y-uA-R0UYl$8BuyH5cPtjHbwa33 z^5;OoOw*JapY^4alVF8|FAz5JYA1^hi*rI$h{@CGz)kmb>FV(l8ztf?BC6%)_Rq?z z=jf;O0rPXZACOaZVCL-6ELBFe;!~WHIO=>Of;`{fjYukbKR%CjuK{!agVx>y1 zsU~+y2j8y@t|uv0F*CmgE!-ihGmRug&W0uABV3&<`>}Dwlufr7geiR^uIGJA&(}@r zdb|bz)5SNfuchacGG1EE&e4kU6196i!yBZfXXVo3WG9+lfi{baQF9Wp{NBz-G~DVZ zj{c}qgN!=FltyY4>4dC5Dsa@`*u4qw9-qf?%TgQEvJ6c3xFL&`LGS7)Re;6U`tS)| ziUS3?gbCGDWX8WckGs?NJH4AjFFYHJBU@V=k>U^dV-4)UX$;d878du*=tL1Mj#<-L zgE>w_r>#`1Pryh-4ns|^K(VmwkkBRUL-b%pQB1|qhC)r;_-`$lXSEmd;y_r@pUIQg zef95LCnn~5Rk@7!gJ6>OCMJw=h?!Oeg(@V!D%1JDcwGDN2?=74T>#wzrg)6CmqcYK z@of|0ZPeQNNU1LKL=4Dji6giC{u`H$ERT5Ut(s^TxUk>Q;og;7u=Q21>;&R<{vfKgA#Qgn=fNMx1O{K&+Frk@lSoAz6%sZ}lp z94T>b62H%aVMDl+hWoRzfvMUxJQX>N|7Hf%u|$Bogk4WMh;Sjy)Vsu{>d-(m6}v&k zE&u}As(${&-n1MXJ%2#tH3FBWdZ@yiHaNxjj*o`(@UQfrj>bNQDd}jr->&o*QeLm0 z{0q3LmsepLPW|ztW4RB}YF4--?0K$MI3+TYF9HqymSRR=Jftn7LOsQUtz_THSD8WD z%mv-{RsLGIosW#JD<)E<5r6ZibTaZ&j`qjz?QAwSWj(IZIIJIHVTV4BEoz1V8f~;-vMVlvweXb2$4fyF6&}zQq(&|rlOJx z?LF%1!}egrFV^9o_{zt#VAuufaAud5y3J}|-=2GZxdXe|;ubivHH8xa$U^7>(NG{3 zGlB~2m;bc^o8dc3^>Uq;XN2?hY~@E5*0!JzARl730zsX9V+I~N1Hj?FBz)N8J-UT` z*zoB%RgbKE%@A$^UF>70!wNiDR{Mq$o=gDgiq$lqKJp{G6AzBHgu)Jf>BORQli}^phfS~%^ zu^JJjL33IyeUFV#9E|?d#G{>CRO0Ox`Dp(lrWk&&!p{y}ouIr2r;>#lf8SQVnZy{;a0N;x31 zQHOm6U9~@##7bcf?v0PnMZDCtU0vKd0AIgveEj~; z0ML>G&FsbqmGM6G{wrQdE4>R<)L0GS**WVT+tGNZJN8>&n_mSTUB~a{rrY)O_-}}@ ztz| zV+`|Y0ur`Xcq=P>VZecT)o%JWe=ydv^<+b;xn(0iqscm+mi{(<0okT79u3Cc=KLBYrU8^XA(oQ8(4N)7F{|MrC%?fK9Tmcw2= zyMl?4=9dO197sj@;`EGF`L{Xx;EyGjm)sC2VNBs~w5NMoYikf_r@;=u6N&_HrLIqL zmeKebDipW?l$^yTZIq4*AD0GB`T14PSj8y_(4hmBX+7Q!k<(Q27S1o})gXi=XBJzc zy>T7yrQZ%ZgPPni#yyFsynW%n)!zNuaPW7Xe`iC74NyWsfTEk@-GBR%rxefgOQE~| zcs+s7>Ak^?>g*A*KvXdpV!HT%^}dO!j;Agszw9Lr)yvd3gr<^_G*m#WvN;ziXqbkJ zC@9$CKqr6~$LajVNHYpV{{yilhmBwJMU|jwL97{Ve^GC#)&!a(tC<_&0z_Yy10^eD{J5CpEzY_jSS<0~E-o&wx@$~c zVGN4{9#Zsm%AmM(@Y07=2|d~jgw{e+{*#=qQIzm%`gD3xVY*ngC-J|~~Mzhk$SN%ew0b3=S9npwWdw~Vx2 zOTU+Xjg7r=%{NbmN8f`FH%o>nkjljqIZz0pZ| zj+Jb&i%YF%rq9I@GOj45p?Gne2@Ek9e6Qa` zz5cVV)5!140lgDV)xAdr@;7jHh`xzy*S+FHMRaVjMY>htgnzHV&EOBm4WojVy0_Q$ zOFfQksJU5Cu|$^^d?MMtlj~(zugS8FtuHE%KCzmdvojIwf~t;dYf;3{RyZ`ukC-_a zyeQw^x-r|CJpAgoFP`t}*XS%^0WO`gD0Hgz zanRIcaxrpuzs}1ASGu|DMR6{&GYZO~VWiCGT@q1nq6r z7CyghasM?i5ipxI(+Qpux6?g4sH9vi8}FozT#KrgN?+f`Hg09a+zrBtLwE|wJY4Lj z`R{xbs0x?Re((M$eW9Tv_jS+=IM^Mk>P%$JEQ@&@oZi3OuCozWWZgRxg|rjuHQCMn07RWFhG@Aor!cM<>jrg7+gP3XE7|*-)Wx?p(Yx2cK^kr zi)$a`;AgyN1O#{n^v?-9S$X_M%5ejU70j0vKCj1r%T0<=Mi8Kcy#J)KZ*485W69Z~ z+b-=djWK?F6O0ep`NP!4yYDfhS zGvC~KPyh;}OA7XuDz?Tf`EZee=1;N-Gq@XH{UpCT5ro^3>S$>}+{NHJ9sIhI55!b| zMcRG{sgyit!^&$WP>X)Rfr3fUnRt`gf`f4su)Q{o&+IrL5O8RUrRjo7m>NmnG+&n_ zR`EA-A_n+c(2@}oEDa^W0=^dk0fC)eUJNmfSXS(QcYBrm?hfHbU}+j8KnRRg-;~KYuxrMs1SRp6%65n=*fQIP0%>nxI3iQ zoSjkhs$_@&S&>mUsq)Y?p_G&|6H{B}U5@C^N3_6sP%e8bxALUPnsHUA=@;))QmU+M zqVK4O^=Y-^#FK^XL+`W7D!C_P!5*}>bC%~n;{h9u8^)Lt!wL#9ka?uZfoqSMZ6<%_+$ z^YvWk^t?%_+)2h_xH!FKzu@k2tillqbuq{1C6>q?6YRzNyxUf{b5^IbtlY8|O9Vli z`318_L9z^weN4*kpfoG0BgbB5N^tI8RsO6~6om$>J-A$P9xW@$m}zj)ajEdJ;@O#n zZrHa6Hl`wJN8=AgN2k+4VPZbdgdu1gEaY9Ry}xMqL5473e8;{O6c-i_Y6W!#@sV>1 z!@b4It*WiXTrrQ;O><$tu8-83=-~wovwCUb zECk(3!B?j){e2V0#0x)3p4vsp34PaEzZ{iBkM8iTQNR&PD9##C~)JgT*yK4*lCCSUX520(=KLJtbW-WDzLUPEOB$b@)7pTDC`F zOP)1(gZEIBzr8eh@Yl_S*lG@Me80R&WX6R`g&lbElDQ-ilZ0b>lnDI3qd6{B1G@%lIe*b6q52V%s!b+2^8CFS&vRH5e&I z4!IQ^sv4|UaRaFZQXRwQi6JC+Vw6#Xh7V+keTEOdJB2HQMzYkOC@+<Zn%YF`F%$}dZ75@6fNvzTFwX+)BTlHFZh z*QS4{ZKO|IrosvMvdP()nd!2N3SZ*;w24&r8Hx0E^zjC6z%Lt8a)p26ClUI>nxfiAL}ngwD$NZgAGFCkM16y|$*f@WYwZ%f?i3SllwSW{>lST{ge*mOWvvHED; zr7MScCyS7?ni-pQmQ)U%#g(hAOcjv6gtyv zjQAii%`grM)+nx-0mpJ>S(u-(v8)d_`!YVy=K>d(*N#;xD6%x6#0R#glPz?ZKN&vz z7YCG76+-72rS4-b%S4<6T+MgCmnP@tVpHnTYwP2ubcKM0G)+>j4|qa`>TRj zlhJf8$&WM_D-?nj7f|bJ6f8KO__WE>@9zIS|3uk|&c-oI>+9p-6z!wtp-pX5 zhdn&pmje*QY)I0nuUd33L#x$nuP0;)3?{q&vQ|_2^0L(=H(8LayexDUMr# zrx^!uwIVhu16mZeXx2Z`?rhO}gaS-a0}fp!jl|*AEU$ZdH@le7;&7ss`>uab`Q{+m z^n9JJfkrr8(=F6u_2c;{EA6ANw2Qk#m7K2n3%Wb-aMyShSA{}97UvBbdl0E%@bTmR z2^gCAj%k7O&&+xFv+4=Did68*qUIAP5T3`INR+2kD&sNZ*Dv)lGTNEMG}JBbSOleNlKtiu*A+;t{7LJG|J;Wa7sPCoBZA&WK29gPFRSU|}m zt*6B^U+bT6{^~L&W~B0XZ?|t@2Ph>yd702P-ok;^l3yw)0v#I6nO??K&dj3MCSk7p zeW##3?>BfrD{hn4ts(}bqlEl#_YkRzMZ|rjaB!$J7bC=h{xN#R_W~W!xj0B{h?^E- zQ$+r!X?Xsmn{E5;TfI?5IS2Bpp5o zVMPd#O#-(G>L9}|u=j@@gnBjP%`Yp~so5Cn$Pvk*A9Yt&IF^seMaq=E-*PCd(k$F> zkJbEO(ewt)to*JIDzx(`=|q8()f}`A*B4j0Ac(B(Z`(uS^6=lkZESv5If>5|;mM;B zA+qM&UiKQRjtOw0BP+boZ?S14HOPESjM8waXPZFkZPI|WL%UN zohBa_+DmhD*`+1y@c<`7Gj91gWT*h5XXcfX2uTYJY>$f7ZfjOqQGuF?Hj0g?n1sGw zUr)yz9XF1?RpwoYuSz?%F*%ciavgEI`|k=a)p}~O#|$O!x|MNplOMF=?>C(pn*NUV zBFil=M60Y(0GxT$TT9}bA4!-0y+8B@WCGCi&c}apG@N=vkNxugH?KW!Lvud9Er=5O z8}VLtUzm}T7-0Ajv9Bx&U6#6$aggXypj$p}&GZrpNw)Yi`xiZ)&%Z;18&7?Z;74mL znwuL(rZ6YWDdFIwl`k$$tW00nkz^L~FogdEP!2kI6z#vT7XsB`7MvFs7kMR3czR9a zCpQY{q!u6Ye{>je?om6vR9;7$M0^uZDqmp|+`$I0!|u68EA&d_UQTP3cJgEe8_`1k zH;mo#=22q4rzAjEbrRlK`qio)cpHJhSM+HWE(l->lwS#bS<}x;n~xY zgqhmsT=&y|;~bcaws#$qE0MZ$bCZ!_efTqcyn$JDxSBu8?9FH2LU0Yft0b#U%};Mq z@6F=lJGeRZ^i7b%Ra|f07KBKwb?edBF!>8tu$6*z>eJWHr$*ViHO*m>QPXzGO@wZC zzk^t+-$q2o2E=;A{&@H|nvclckwopZc}K#UD63d99b>9zGtW=XNcpPcd6a?n&G-Ff z7t$}RcR(_s&+QT|8b2q--~pMKHwt5}LA zk$e=NASW@9BCK_crQ^A3pDmUgIa3~=qC(PIvG5KDi2?y;)A%)|bF6546YuPkpUe^} z8jAFLW$G*2l`a?qi~6uWT3p<(>(R%4Tg)FJu^O%rvNaWIYev@wPYt-l`#JuF&KYU* zm#h{nKurOeNPm3aJYV@&vBwhNh^}@dVEog1nYx zdy-g^rD1A)0HX&y*d|pe40Vtg7`*?`UeT5~tk=-sekRmj@e?OA)8HXI;zKv;ANT$J zU6WZxXWB@w=H_2u={sVL)otm^QcB<3-HGyk-#%ShH5Z|-tv??Cg&Ho(jwhFvIl2jy zHmykx4o^BuHWr8p5$O8s04ArYn=Rc9esDswLT=;(F`$TyXV<=V{EV~`w^(>Nf4_E3 zmf0mprlwnt{n6qq6CQeh#q2yRJuD+2^K%+v7!nd6iwFRETND z?*9ZK+c7Un$iEQ#YhP&ydt}5Q#{J|EPB*`2xOcikJZ>ezM=T|V)kNW%SRtT`ZSO=! zgZSb0a3-hs=?MX|z*MRnL#!#|{c~3`5qSG4hZq@~gp(PGn1Zc7u1^I1_1Iq(1%r`s za#IroBQin~77_xMUEA*#3ewT<`y9!`6&NWGG(LIh08u!tW*zoF`igeScPM^0V# zBJ}@j0VJLF9(!TRsVxZ!-42`D}4A^5|>6>)Z7Bw9?kFli;Gr`QYga zio##-w~ADId&4q`TUpx#A7PmMrx{IhRvkQ^o0}W^cbd12N32WdYK$U`UHy4LW&<5ux(9ggf1?$cnP6masu<+nm@j4egvZD#`KIZCcYzf3diQO z*F@dZ-FVN3M*iU^tK!-n_(g(9pJQWlJ37b!Cfe)&+-=l&!Ta}kIwpY(1YLy;oEZBV zp(aADVzfrW1WRv_-w2P4boQ3<2}H)5sr=+#KiUfdwtI9^7c<%nTyperOI3l4_~i^;_DcoqOgaCAU1%OyN(;6>)p)mFMUOJc6M1?2?a6$QSbEP zEqAUuhn`SHD6!g1FbSByjo9D5)Xb*$-As$`HPyT^4L5 z!yTBNHAwT_@o}WaR#LMk12va{Lf2DY(vo93DRzCX%U!|b=|H{=Hr#5C^exnA{!jS- zasR_XM;%6EMt%Oz<7yMr^TQUnAuMPxl-H6{FJoA+p{&dcuy|Rh87iR&&DE4ihFRCYr)@t2YIyOQ^W5CNa8Z++nWoRHy#rx!s zCA_@%2~ygk+N~#s;+u>@?+b$uHg>&Q!Sqk~q%|<0>7z@H;*(nwbi#KEc3MNLyNuaT zxMcr?kGB4C67$=A-vk}bzo<~ErUy%P24yo6lASk1zZO74+0wh=Cu4l@qGh`~_V!YV zr!$*QX>185cY0~7e@@umROY4X6A=(Lr{YvEN@lmF%qh!%sphU@3tkb>8r{{|8OvAK zrAY)G+753MosM@O&$v4(y%@Vm&b7(ptC7wTnWQ7A9AoFVY9jjQ)&(r)=H9`>)=-J>A;5y`MB7%YmrD z(7o~ISpbt9k5iHHXLYsggqN6Y?9zZ@>zJyI)|O{0F;4lIqJ_qdsOR0QYpxoH!#M*@ zO)WDk2l=x?c9B2t`K_vLY>2-G@~}@>@`wS)D!92dEm`RzKXhAtvIC4f31itubuEM7 zy=DZ~uZw@DqnEQpFVHT`%+298ew1WMMzSPP%ZG5HsAG429+=Tov{!6WcAbd#Q$qyp zAx0|^&)4HdPS*UCLLCo>y?gU--jw$=d2i!~Alko3KF2Tmh6I3{byX+9BkE$xjw+8n z@|}B7K=B61Iy>*_V#U?e)O>ynIhKN9HrAN6hQX_Sl8=pntH?rFRw(&CQ)Vy{*ziv| z7HT|k*7KXLRK=>kJWo0XAqQLO!uZje~2fwB3H%ZRe_Hdr*1EhqC zpZNJjbM52D2_2VK{=0MDqiG^Iiz5h^689Z;NxWwxku-_^$V6XG zo-yoWt>TA7w7&~rcrpapu!%W6!!#@Kd~GoheAVZK{rCM1AxY=S1iRP$y+9)Mj~pbm ztgQ_NRZ{yq@B0smHEg$Cc`$|I0U6rh@jp3pvE0^jk*0@zm}ih#k*33k?yxMRLXJhI zSoEx(vDxDWYg5AoxRmhcS1$dXZ9-Tigb4mdWXXis0`KTk<1?;aKs%E2N=jrlwKj@= z6=NIyi}2Y$fdSVq0c)&{@kdIe>1e$SK)Ai0G4xm6N_@{MB`?tnW~(1!62zy9a8_hC z_V&?jLiMI*x|mSvC0I_gEKJkbccDmODbLs1=b{1?#pMDxH3~=;OM#HcNV?fz)|Lenm|1z1uq9 zG3oX{q|-LWjwXB{h%{+hNRh9LOHfqk+@1d6CvL3=f81M4)Hb~1*}%d4nyllR_s{zb zV_VzSh2hd(Pbd$}4ZI|u6JE%t@p5f5OmT4vc$VZ=d(MRzP{!c|rp|l_emQSuN~D{t#0hNr(SZ?H<8<;B{Hl6- zG$3zE%d7U^!xZ0yoQFK-)7m2r5GKQyq?CMCd693HPriwdQnd}t@SMVsn(qu=RE239W7 z>fUs7}L~F*}Sd#@1R;65HM$e6rmf4A4S%>-##>ePzHx*_j zzSU`3XOZ4A*8m*n*;W~9D+*v~Qv+K5)9vvNv!I&Nh zS7L_GzZ(!%K!`#50fy`ByOz5J#P|bXV;-)86Ok_T>0r5{Qx(Bi0nX~2KQu_Ot?luq zo6czc?ohhc)y3Fcy16ICQ=IdMRFR_8+kih)PCOaJ^Q)`CmmIS^PzZ5xb={tg6(psW zw@Cb{I$pcHEXpc(xy{xt=d6V4<#kWpK@B8iYYk(lAR{56;~ef5BB;R%#{V=W(m}Wh zU>7+XVg!N9!4dMCc*#~DKYrM(nZI3;FG+mhFYtl7lR?V=uaVE1!_qlUh1w{$T7#Be zTU~fQ*V6)DObJV-RrreQY%mG&KZ~@~o1PcNFwGh`8VFE|p96Z_(s8qoMBBR9+q=05 zXtJDoBJ)8LHoZE{BeGM7@+TEAb^XbC?Et_qLv5%-`DXLM;^O++%u4=B5rc{5 zPJJ^6$j;5otk{(!x^oI?mR~CQ?R~d=3BL2x=c1x8+}EEeI!xgBP!PVnV~}#|u1dI2 zbus${ocJY$$WjIduR(VvbUj7;J)~q@dBBSg zY5;?-+#u;`tXnKR)CFRsC^K&ra8bA?!gznJ5CF}GDOXvL1~~GJ{MOjVXR8yKi77|4 zg^q6ZxI>H@Zh99*G4c^HU0EdhCZ^_aiba|{`L8}gByQHWoo_DJwLX82RSaWRrD>-Z zmr`^pn3Ci?m(=z%Vbc6EgdaBV6PE>{ZOTjv>ha!vcux&aWAfv+YknqV7uB@}@B<-m z72(m-?-t(a|I7<->@bSSCQnu|mFo2M8jtT5JM1+3qudJRwVvFy=vu~IuQ9QfmzJ#g9K}}(}WjhMWL&9_` zf+4Ff{2KxPqizq(cabj+SxALPqyaJpEM5Qk7r)U_#$;CTJl$?wS6eva-W&J&x$XW0 zSEf?Gx*^MiPz+Ks!!Cy7(~t_SZbIp_OTJT8K_wwU8*+=gtxQe_#tPB@Zdm6ZQORI6 zf2wG}kQpETa!HL539wf-<}LRp+b9do^`$=}xD-Tl&bMbFjr6*e^_cfOj?-*VNKqfx zHcF_Z&i$1D59c5HH$5@y6xwf@X-Tp{g zX(;@Kz-oAS*jqh=;IpBRNm`nq3W)R)XqFE5H)23b4;cbNIJ>Ygvvq&#*=VefS3y~R zciKM42#Q$v9s?}u1nGLW;w|MB00*q;Vqv{{1Gn??+mHz84;gRtW{Vm2RWE8|B(k{w z!O7PzWZxFalFsMoNvNeYKuAK;U1j@v<=KT)?7=Bk$pGUOdg2^+AFbL%QzN_9`Ek{2da<9=VLx8MRePrt<+{TB-5 zI^cugoXzT(zw(0xER=+&3?68nQCEK-Rda>{sB5P$S@KLj3FC)9$HZU~kVL9rQ6Ql% z{qiHd<1-nKenGP(I?C2_tHcLdvknOf=wPu99l->9qDIy+PE+;0wSgTOxbkOsxmQg- z@QQ*MEHJhQ55ctCf4T&Cak9M zGY)R%be^=y;qI6fy?b~2O?weaMbx~_6}2$1O||jsL}~KQmI1v8H*fvw(5R5S?@5HO zD3I-yr;7ZwveVapNBL_U(c6vomwzT7G0D7xo^$ol<^yJehcmcy%yEQyMFVrO$n#BK zHvpYVojFo(1t-mZ;m+6rl2s7zjwZ@<0PgVTS52x7d0@Q34K26QA;esL^=asclrYfN zJjws+;-U(oXJRb?^jhkWGvZm-OYoO0)O3(w)(DH#7bpAfLS&(MQ+d9XfJ_(LNfpk^wXB5%O2z9X_G8_ZVsFSEVl^O37u%6%Y}H9@L&6IC$k`0u)ET zmoD|sv^)YHukvr}u3JxW&AORO;7 z-Ia&!a|JvPz%HuwGIUfrU?8`0OcnTodP{@fj}6b@dU-Vmsq>D*|95O~;fd(eGX{>_ z6Q|=7vI4i}(oiVRLv(1+^N)p5)PaabQrVo}%|0$1XkC(bT6X@GL66Vw4|Ff>Nk0=~ zW6WFlUiskx>AlBrdX}sO4(mG zK(K+le`;jwLlBi zOtMVDSeEMaRb#d!-s1nA9$}qtnzDsM*2l7iBV-nv>%~6_7U@Lw&sY!VzyB))$qK+! z2--k^Tjtp9H4$Nn?Rw20GSa+GPv}a19%OxsQF=@)^LCoP5)X)4AYonjgkiFU%n2P2 zubK9uyxs`{wRBi@JdC|+?S)G&APd2>3M-DM!pH-A0mIJEKft*>%2HvKmt9d&?jpI# z`FjbFs>_{>JkTXNG;hxwwlE7*z$G>a4cHo~oXqG|NrjNy2`tAx5&(D$sA~2`k_9i4 z{q4CnvyDE0R zZ6`|T*pVC?qS*alsSTd)xLMP<0>~M|HJ1Yu2fV`dR1n8cr_<_JaKXsclkySKA7~U5 z4Y6ri;7V=w9JbbZXoDfxgDzB(fi3B%rhGE1ZHaQwTubVgCecv-3qLM1Z!80wL0+*f zt{@39V_|Z6Ik4K=uXxbhT|`9mk$LI)Hv&*grn6 z#UmG_ps#(HB=-X@MWvP3=4KG2I0lX#r@e1QVfaibgoK2@zEF4Y@cheK1T&7)H|ELD zid5nw-i!W64liz=?*sRPgNJm95&Zq8JK*-5X+S zEUt(Jl zLYZ#Xe`nt;Q)#_){mGz(M;RS&8eCDq^T!|)iwq|c%sWp8a0~byjNnakJFxlzS(ymQ z_G=s1REWrt=wvCu5sGwZbMM!-jfv|kI#H)}h{9%y?y0}5k(g$tdnrGH{&Wj4PO z|M+CIxS#=9rj?yNB7@mT3a;d_&e>*|sTlsYrXoJ=m zCuGl;ggCI)M~1v!N7$3s-5UL#9a7#T65n+GWRzF4iE>tJQwCmwJxL*uSRQK3s7c7;W+86Py0kthL1>la0xs0y^PK&YsJ{9(yY^ylUV7xcxie7^^1>8@Ze)G%R=e{ zfh|GyemC$yFqctLF;rAof($r1AVMWOCKY=Hnhyre@8V)(9alG6vd1VG4q-qT?1#}D zjoDi&hTDiL9K;6$EGprJNK)necQapks7 zn!Lpf!MpR>x;iinn>d{&{;?!RB_Sb7=fGV03c9v`{hrQz{0a)f0)fa^Sw*>^?R)P| z%4aC@Mkv|KH!;N(_6I~a;G(U67{uK32551jY})JI{DvBxiRr1Z`bzZAF|SOFb1+!! zZY?ZO%ST5t&%a&(x#Pr&*gyvk zg^8_;<{6EAlIxrmmC~XUT`Xx2sKyi!>H-NAdM!+Mmr(GHHYJ#oT%53}K-KMP%5^L+ zJ1f5ImG65iGOJ@NOPk<^xb{F`&Z^E=LMdb`b|A;*hc5(6Salb1azjcKDVKoB!GZ0` z(J2*wl{b;lNBI(&g+I_|=d9w(`V=RWvMIFTJH61OKuj;FOyS<-uG6(ZP#T_faH$Ia z8ZHF;=*wRnnAH#@Pn*p{55nI1;xitlDZNkVqa#m1JkR$E`xiwFkpq^rNyT`SPR;xk zy})V!+#I-p`z09-De{z%EQW77YT)8BWLG#NU&@bfW`L*Dm?m>#SOKd8E!!ym_kwGN zTjzB?IjC>fl(HK<8N^;*c@Gt>1Op(61f)BjOfM=mCME^7K2TF#{-Tb-4FvC1PtU#e^yP3hNepQ1r9i77_w%`V7= z>NRU1wuE$9@18q>u)UFj-^P=QE;eh){(n!r-p!xgEJh-@; zisis*(h#BHbaYq40GyuW5SY>E89gm-oxHAy-n{+=^7mTm`>6OQvK2n`m|=b_QuMW{ zwAu#0x6E4hN^gH(;M%04dD5^$nFFRy6yn>dB0mept?-l@lET3>v9LQYcJ7(&xQ~=6 zgWUjxA*GMvEr@#IE1&3WQ*%M{NW2M21;nwH)hAgCEws|o{TnqI6&9c&;{ZoViqf$3 zhW>YB(GYb{pKTWy(iVvE&_OVd#eUJwI5YI!)WshPcwsSS)aaBbmdY?d0k02|4^`q# z7V3D=0nxU~^UVHS5NK^|8EPx3Fo+ zpbOb2;$5M->JoUGO}v|{ej`V=O_;vEerlD20(%iDsh0~&3#%YJnE!Gvot>RKpfc8H z_F?m9kPOogNicBCc-vumT3dM_fneE2mqYY~=_4+V%mi*rE{FlGYkAcdG>_+h93D+A zT|-WFUcui3Ca3xE7zQ7W{BPjg6CtVW5{1dd`aa6IZgwj{-(x7sNg0&8kd$AVp_7;v$ z{sBNP$Jv@X_S6+iHM9^F_F=BGZ|S2WLGpwi6g@U)1WJO0_sSO4zZb=x9)bMo{aMDd zXgZdAAhwB)eyZ8=m>sAxM*P}aAd&%$Znn@*3#B6ZZtN{CU(EW)&KFaR76bMv61=p@ z8Gd-*B4k{&)Re-3f18j{T+K+06`E&di-kj>`ql={N`nV1g@HfEDp>)b!!=kQ?C0kC zczGRLvT|$5H&30-N>Di`&ggJbfGe?>c--#$8jOk30cwG|!)4as{Ub=o%j_i=A9rOO zl+-&n^6`Ch+goU5ow-Z?PWd;JD>}SkNl5dGAX)4A97Tw&F0f^9C-22}RVs~r?d+r| z5c3()o591=vfAI#T)5QETf5njxBZJ9&5};F$UtTL33>o-wUPe%UmUc0T+#xUry~O< zV>g`)l@>1GGHyJ*JAV(O0nRFI$GUDQD6?2HP2%Y%K=gj}Cq-lyWPo0B7N7vOkb5pu z9BganndJ`}n7h04T6q0t1g0fo0?kJ(%3GahE6$4n5D;8CQF{z@_OY>fjRmg&_d>Pl zhamr0TVH9?M^oHxO+3%<(9|2!Xl09n0dnfRNRfan{W3-ce5rdu)Z6F&w8ad~`*o%Mxu#FM%7`|7z)Rk*0lmu-*+h|Wp`FmC#I-|2u*BIKp}4q^#vJiC{^zMwRd z2>Q4a5izB{MuqJ(r3H>;{NSat?DJOXeX{)juLUTFO%wRfkOTTm9DJp7Z@E+aG*nZVsdVa2<<#G#M%%9!51OFer{66 z%E9nhYK@Ij`9GoJUGnJh30>DFTAQqnP*b*WGp*I;6`h&U%q^=3=AuL2xTp?Rz72gZ z>@k1<;}sVo+qb3%N)s3$SdIfgn?q(O9FA(AX}m)9kj6xG5bA^9Ocp5&GM%2^NOYQz zbGB&03%L`38Iz!1s9ZvESGXt+6d$ON{S4&~LgKYM%)Ggq!h;K!%WZED6j=IBj(0e+y1R0Ipj6~vIb{!d) zl5f+?Mv~}iXJ&HB3SqQVV)PhNKp#h5EY@>C51k$~>V+A9|LGpAX~ZC#II7 zfKovnp8QcmUq9}yPqwzc-ps)Y)BNQxDPE+Bb$k}iEHP)|Ebv_581hz)?dpNdcGa~_ zI{%ljwMe-5gwYcbuW2pSP>au=q>JFoM$>uOhld-~$buuQ4XC0%Er94Sb$ zYg5$!2f7}Mib}cuPn2ws^GWP>6i`yaL8qwZqy}n|9z@Tqv8u~jhzQdb8(l8(p0x|uyL@t{;ZP(};K#6n{B=^tKZt@jgM1OHIqTzzEe_y?u0Roe%-kKU^ryC@bk z7UGUF?&dIU?=yl+g03&u!uQ>=aIpis@(7d*J$x_+(>1NfGK4>q=r;_=tc1+TgPOE= zvIPy{N0ERUfVN0b3X;YJX8|147q&V~4+g01$36(PM!I-9uw7iZ;JJ~6Lr=?!BwaEG z(?~p)w)jn6EisHluDtT7IPi`mAkZc-T0fMPl$dOyaLMvs{oV*w0d@9^Q#5Ce`RCeW zsL+}qHum8sfQNT`81e-C@<9%YzI*$ZBjhL$Ytbko`|TD|>&H-qA)IJU{81~@E}&0W zLldKrGlqrbzBP4Av$Ip?tgmlJ2AyJ7R#uW`N~nT@f{QEe?(X?zE#VB`;th&wQP|Os zXD}z`r$g!V!aSQyvg78<2O2b5D4%C-K`T_vVorZtCK{}!-t6pb%<%jXyX0c@6z9d| zpnEQS#j%aG_4+SEvKz1FuHHe3i{uCCEn3vQ;rUM+SC9S7#Z!#3mR#ESXA8YWwEVso zn!4YZOLR*Kf?uwlohl#Xy~1>^MMOkOIekRX*Zu15bW|okCCkea)GWBTvEHO% z8<_O_e&kRW^!)9vDb@cixWd6Fi5}SD2kg6|)_vNtUg)DuGh2i0G8}=N5b zj)Q4h)z7{|w$QBX(2r!k!G&VuFj!1kmfIYNFRX`(X=TH78{E*AMV()@*xFSs%;?U9 zaye&WP|AU%tM$IW;WtM^DnJ#S<8Qob`L%F#jU@$N*|BGG86gFqXscQ8;Q>}MpuM6i ze?u3G6l?h1JGumP&`MH074B4Gfun|Iq#_^ZH?Gv+BO4EN0H zU#B(a*WL#)e=BL6o*WCqYx|+!^6jyK67*xJWVz;oI*IzMWkhLiT1g9ANzMca7f2`? zxZ>>ZPxZZ}Eax?X;VU+9a9M~XnbQWbtcZAsr>oE}N=9s8JeIM82QCNO-6^wLklZac zZk@9E*CFd`>1A6Br}mJPFofDVp446}tl=UeaJCG3ZjJ?DxugP;KzM;1J6L;|*}~;O zRyY3uts#&e1GKd#I)M}SYf^4`4a(>!3l6^X2RDme;V9bg=7GE0`=M&fVi*bg+Z6Ai z7kFb6miI8wP^qs>1Uw(d`OE4`zmgyG3sJ1!%=o{=AqPwB+_G|?+wuPr8qo7kJhpzY7GzFI(W(o$tiH_Stfq+VGJrR!V+w|bm1 zPvDUf2jbta%4xGxu-mF6!I`7HcRkbvtI_uDQm!h8AzfI_Y$a9KKjW4=N!c*U zH66-2(#%0|&xfF;E)uDgW{b^aBoF-9fdx2Ob|SKa`?q>&@q<3Xe;0&?O}4K>Z7yI9 z)4Y^792q4VQ55}6jnZ6w@ z$%!HtF(5fOb?dhmdq$G&3v0z*AFX0pU<03IXO7MdDgpl2s=d;dCpDl0q(X5e0e0nb zqlPzRM#6~225u7*6Y8&RQVWt?K4jux64Nr?vr)zq0?qsUFiCc+J1K2nSb0uJzx4kO z2D}|YB8lqiPlrFJ7{;O4Q;hWlMXoh1jPWjmUi$-nMs8wL?l+VcmBjQyA^w6m;9G{F zbyrFJ=8Y`Cm%TBB$ROT`Ce91t>OhK5_8`}0(glyIw_be#H~HyN#VoD zIcZ@^2*>F%#Ih78R7kss(kQ(38JD%*=!sU_>Cb4f)V$%+e5v zn@PQ_mo1k6Z(`NY0_OtfqrKAbYlcjuehy@X@0BHH_vstK?XyWqNvS8@bEE0dl%hlZ z26lL^Y63B)DG|}cb|=W9vO3NJhsa}og!g1PbZ8w<&Z+i>^OgF8qG4>EutbcvDWg6; z5m1?eAU_yDJ+fmWk__I6lAIp@Zmd)zxCs8a<>gM?5fo6~_mKD5_xr>aik??I53Rx! zMnc8lN!52gln>FZEzwkd_lt-ijV8lx;2e_{yalu)tr1OHY{?Y^Lu*<7{dyom*>!u68rAv1j3pvs=i$nXv;O|NO>PKjB6S5ZAEI#EQl)d3-$nfI6N zB1A^44+{iRsB-4lDm0nv%{ows&?S@9dL(5Xj#l#6_>^Faj)|9%AVOO%0vyKwnXh{eM{H1{Ua4Qo#&A zA|nZjD6T+nAvhUpwUO9ne|WLsim(Odr- ztR6L^eggj|&y=!J#vu)3Q!y~L!ZneR63W<&BXO1?o^m%3U|GBzC_f~S7{|>;9a1+e z7}4~I(B&oRjap(U0f?1kB4>;B7hLl8Yt91HYN2GYv*jONK)WE~k6eLw$7R>?uhR&p@ljd>bj z>pu=gG8TNIDv#=tR(I=nhjde}0QzZfc7d;sWFSuW{d-H<#>hIo0iW#+sE!>#%hT~0($VWdHgeft8X%Tt9c6bDLp3GDfgCn*& z3SQL3bdH28)Nd;n*Oy%Pja559aZN3+g`2jx80v|Or#aQu^y%=;!Jl?Ky4WMjImX&f zky%qElPl$nignOgw565OM#*XGX@PeHC=bNA;EBI~g99CH3|;IKgHnS3suC}5zvTOB zP-7dkGcM!&Gpy)C4=we^aK}T$Q0YhQ#=DOb2vzMM$=dh+m5;DNmGy=f$f}AYC0dr) zMZ(mh<=}Z4s3w)hIen9JT~%3${@!hIjW65xh4VR{vOrS*40LuYS);Bs!YU~$&r87L zHU!zWyJ>)VA-*H5{`|H->DNK9wcp*NoZk0@Mfn*}w4a+SgfL*M1Np9Vc6 zHHWf7<)~O0;DK=J%Z0*r(icubtk@FFrQuPmDcB;ldhX%P5#ZiT2;t` zGwFT&Zc8S49pJ%hCY@A@Z1C2I`$K3+VLmbo8X7Z1@1k!I8B|hwN}sexBEvwa6E74O z5Ilhnk`bgS0qMlIW-soB+Pu0t61&60&mn!Y!+t{#-?X+I+^V`^I{w-^28Xjl&xy&F z%t!?#P24&`VdFJD=KS$ZT*>Z0lStB=#oYb9b+9ZpdK}?`_8z<`lrZM&BQX?7D^2DE zjVYPJ2~(?_xXlm4C(FMrSGV^E&y?T@NX00?3yCW92Fc&6-LU2H1qIe5h(VV$>bOCf z)vjbW)7rAn6dmG4baAQ0D_!ytl?5HFqr?{9#?`SPic8LauKY(1{#kVz9Y~ZuD&e#B z?QS5ZUd}c1*eryRV3aM|_FMB{pi!5O1I9&NBX|2^MUCF`z! z>77$nHe6v}oT|=fs-of_JMo?W|55dpVO4Hj8z>-+ba!`2cS%ZjcPkCj-KlgVEsdmv zbhm&?cXultXRiI8?_AgUv;DC*ve$a%Gv*j~jb-n1-3qJLrZl>=?97eyymk~%dW3!A zeYdeQ#!cqIynom7ss<+UZO_5C&x;Pb`5eYbsZmx^Y2GirgvYf_<}^fP8vj*|h-8dF z=^OZtqHinSK~WiADXCh@6bI^UJUraB_6O!UBHk$?8hlkIC|X(rwb;A=9ftO#QRC~1 zu0W^*y#+bNpW;A*$HY`QZ@hD4eqgR)Psyx^FUv1*+L!_OlbQ-+{gesYcWgJyH5uE$Ou+o z0Ndy8WvX*^{Y<*-K5FXylLKi<3+(zU6tH6~bo|(m*QE%Z=-!tssICB7yN1&ymMHSk zPk;tS8XQB|ECNiv*gsWdVyJKnCRi78udnSR?(gSo15lO8M1p<~q1E-mNNes>3F>w`zVqd9fb~Dge$M~*B#03KP9o#0v#uqJEX6 zU+kVPSU$m_y2FaT0C}nneM!0DJGfdc?k^k~g(IUAc`Hae>$X`}pfNCO`;P0;*7hc; z10=?*LCPglX$$T+vl5HraDCce?Ja%_cMCU)Q0@DD3@+k&SOqWil4?!KnZ{BhO^#v>i3e+Mt0j}yE;Nj zN~}xdghj`7SR%nKdwt>&nH^iS3B^5@3vPE7Xv6NlgH;N3C9pH`;ko1H4F-tx#nzYd zBV=V&I-dUkNABdABj6%u_6M?X@)DZqte7(^7Znw~ps^jxEYSrqHb&Z9e$h@yX?9qX z#ICuI$nj^JZqISn%&uQq$b~Dj0?ZG6$b5z|doW8UW#gLIC_Tdq+s*yoFh=Jx! ztSqaL(a~xCgG?wLtfe9Oh4JQbbL-}OcBD^LOAAiP*c%ZAY$L?h7VTfn>g){I-rm`o zOt0bMbae0!W%$uQdv;QE+A4*bgEqang! zkPX^M^!RU`-hmvF3cC*%PcutV@8o2R{9kG8kdu1|HTR9pAR%0zT4yH-)5!)QTK%p5 zTiW#)WV4}mZ1BE)6X#3MbO8Os?zxBOZp)>_KR#H1vYj)m6Jn|V(o?&-1rxp1?758! ziP^TJy7{JEtrM9z_(;}qVUH;Kp%e-m+l`9L?GG5z?DCmD3%3*(=-3t(*M1`Ij}*M$ z42m$01i*xNx1Z{(zF^Wex3Dl^n7Wz#3nMupZ26H2q<*!};)cy~&Q%)^L|LIV&DO43 z!)f8-Dzjl<_9;g=fUSLmA&kWuKqyGnS&ZKEKm4=W6ILYD@JU8az{kiyGgV965*gJ2 zbw4SxqyFP}WM!u0Nc&4(SJ;w>?y0FaOZ{W)Om7FT47FW!HI{gdd)v!siA3-OLl;!vL zy&t4|Pu=~$^7H{+-8Cx-X?oOjVqO<^24{T?@@MkJNVn3@oI8P%uf9PI4gDm5v8?%$ zmKjRyNlw8^jZ#ESEtah@)uyeago^(&w?7j9XK%MSIT6tzNhco#sB4=9RP6F&7yNHv zr8DjvTgv)jn}`aSo+P03XJ_>m>-`Hs$k-o3c&RtgqA zl52p5BOKhtEWA}i?4q4fUzVDC=7&`kSF*KCK+)7bANgyV6^VzNzMl4iE$oH!cTw6s z)A%EqiVVsZ&3AU+y|Ei~J?qz^C(?-b>fkmzalo}l*VPzgqGc2dR&E-0ZB5D%hK7RN zo)$|tX|o(@4arw@gEGgf!mhUD+AIbzMx>->+{!%$VAewxg(_L_um4jrF_I9aYuM?7 zO-lL&o0oRv+G8hX=XOB$tlKJG1dp9}V^l7A{ZUv5J&^+mU<-pWPJ@9+*w9f`p_6$6 zpFLLvkpQ?`!aER3Esprn^CtgWC+5q)9g_^smg1VcL^$I?1p|F@Cv*~_7JRTN6WQdP zH#M;jOjr`{Zo3W+Pi2&pL{3Ftcay$Aee_iDj4u#i#0|+6aUqDjdEh*<=BU{K%l5V{ zbnJ`kfy!yOLTX^S?qUR>eh5#Q+#$5(ibwml7AJ>VwGDL<@ukf64o$JSwv3OZ3(L(3 z$)meuTW}q3jfUO;i13_7CFC6csmzx6?G2O;i@{W};>D(zp4kTu^Myi}aZhlZs1hD+ zNT3Czf>^rczJ&A6He4aAY3fH@*2{y)+k&D7ls-wx!W#9!Ox`Y$RsPx`;>s2ee)Z;ZL`Wnev3FSC+2~~&73i^j zJqo~VO>M0$05qR(zel{kN7yz_J#~ux2bIQZFp5VhV(7u41#djU7l8)e>svLdt5*o{ z@DeCTH{@ai)xPKpIVsNu_7cUb)oIzzU>(}=^~dmt2>9W}u%YAs;Ma|t!)flD_YO`& z)xPl<0JYytQvWMYSMfA_8iNu@$Hbzpt_@QDQ5(wKJw3V?XLc2PqPp1edBp&}T6;UT zH1obFHOjL1{&IkCt*D{|9w=_Ge@M{$;u=EdsvP8)!B-9;LdU{YpB5J2XTh2~6SlPM zh!`wE(#^^u;Oc$6=nLRK-W$uyy!7}z?&5opTkLzDefF)MCl%NT{@$P~wjAOqpzxp7 z_eJ*w)Hcp{4^0za0wCH=*m>{Z@5eyZ3mLFuTZ2Vma@0&2X$wWK{7p(HzQ3n$_v9Rk zhfr1B$LMm~Gi>nK{Geh$W=qG{hkSquzt7Y|M2eRPm`3^YXV%Q}V;Jl)J**ymHmgC* z%IP;}PnYh9e|Bd1H3;gFdz8u$^fAZ#$)ILmhMw-drI}dB6-`SzvxMGK{;)4=+Uciv zk01*yjxp{1`)B(^uq(Vj$z~P(bI?cF;cH7v%M4bs9UL4=0a|R8J}Na`&A3(L=>5t+ zCWV`}UD(E_Z1Y`1vE{et7alk z26u?&*48(g&TI=q`MgZGomDF6I6qzcm&nh}v6Bs00bERmuIOfQ0b90(s?P*L1oQz% zr=@UzTZ%P>Q9ix(`be_mg=L`X&WfqEDijD0z)G_Ll&nVq;UjLqv{X?(9>5lLgQ$4U zhI&lQ!$5jw$+=bV48W)_9%|SNRDMPF6ciwp z7JV}8otl|OTLRmd4t8!`sAPh0V54Dii7-QJ%XGCHg+>3myVqHN7kIwl%j+GOCgV2Q zz3_oN6~iJBi}ty7(9icyP@SuxSpP*08WtDXv7x@-<}5Gr-z;k(?GzZbx3>)9ia8HC z{#61u*9wZJEf5Gs7Zhydl^b+Q$sozAs%!UVX)&9%`4j)l6Zwfaa(K8bs%NM&l;;D= zkom-MOTbJcI(3&L1~lN*Sjoj@SVwlpUaWI&f0vHaP=EiU31(hi@|iz_Rc`>G@wl)j zvJHvN#E|8cvJ8GV15M+t;$cc-usY2cprDu)CAhG(`Iu>;+vSK#jspW3o?z235_wCj z+OghGHn?1!QWqCn$r;TjHUmFdT*Zjk!#Ne0(oHRGyP2;{=v;6J1{h!@dogiHKHqM0 zH|0~NscLA2M@M4eXk?_NP^4NCok`d@IDZF~v>6E7q?08Ar^Sr;T&iMTxNhEVRV zwc*W?Tz(=eW}U9Bw#*ZIc42@Jv`;K?lAzMD+1cI74TR!!yHsTi&!AkYWP4nYtClm- zLCF24eD3TP(%gp9pu6$G3MHLbnaP0vc;{}k*aMS{bTTDzSoytQ0^IK9&e;0iR=A1Z zM@%5zeH0}}PzPCl1}J|6A90$`#LNfyYV_5n-PDYfaGQjhwvy4=OdAG#zFo3U@=cI5 zeHr`-xB;m_y3Jqle5z~n+`%;BYZWCWgSWRUSAfIoAKkI``(mDy1D-Ak+B_V;yNVM# z=;>W<%qR-CuofE9hcmW9XRp$-S^MfjAJz{o5h^Fr?9p|OkQtx% zyNpZWFMjA2T9Prdka-LwBZ2-5mCST@YL@K_J=sgxT2)+?qjXuU#TWy}(O{)eyW+zf z@O05eLFhr&`xYFPuvGNA?-8OJwmrg>9B}Al2-J+MlH4Bz00C*5Jm3T3HkSaFv6D@& z4$r=jGgw-@aqkd_)5S1w9>w2jknue|39EfM2gud;Y8_8LB%tOMB7h>{1e@?yT|t4l zv(@iYIiaSucC72qcQ@n{9AaL3EcR8^`PBn_jW%3FU?Vl}e#i4X*u4`bJ3uMSl(sN} ziiT?LrAu-)F!wL(I6RHjsF#;Kremazw|k=b12ux~3qLB8>? z=G~5Fsu`@Pq{=HT&Ky-9uhs(5z*?qnju#(($p(*R5rGk!N|+PR?G<5w&OKXe-_1TF)_SUx@+tRAJx=@wiDK3+^RFtQ>f+72R=hm#4su|_`wy>Aq> za503N*d!)Q>J;s#{|X^iK|5yabe3?BT2)jX{za%N)97L2sT0(o;EIYCmK^XIFE3cF z)fdKclZU0vrcq=X6(@$x;kqOxCDln&qEZy?n2S06H}?ao^y^3lWn^?4}6w`=UMF#my?QC5opn3z+Itoum? zUZE(>b30d9JY;C=K+dq!Trw~Ny+KKdD&ybA#Vh#w-Jw9AXK(K7!0Rz3;&ZX*gSq)S z2j*_?61UHHAKAdi`z;as;_(9!V-<(tL@N-|^CDQr5 zEoc>d`ft6rSz#aDJ&S6~V7neJ4T^27In4i+VIQ@wkr2Om7kT>d1EoAdbbGlI!69mh8mx|mjQ+R_!GtjxtxS4 z*ud4%(E&ti*$}7+Fr=oY&Ol*NEKpZp&zVDda&h77)Mx&r4@4dr7I!+ZwtZR13NN>N zXNj4quc!#((S4K!=NI0X_f3cTg6n&T&*=`)hZW}UM5>Nz9MF?cGO}WWp`-XSBlsGD zDPT};<=*E9$@JWR0|_yaRDk2zzW7^LA~ut@iQ)8OB4N?8TL~4F^o}mJ9FbsmJ8iSN z=(;kf4S-$!E=Me`e-4KJ=;1+0-wdVZ^3DqfC+_HpB#Hv#fgWgcWdqDOva+(Ii#9Kr zy15SwyF7TFYXYBHNjw~Fk~PSBB_LHJ8HJ-MOit?S4u})H#1S*>>Z>T&HmU|;Q8RyL zY6H(4+ue3ywKHo>XVZo0sKimY8(m!Q4jrV1=nHFGEJH*hg|}qnU+*%fZFQj7tRL;b zqq?JN_mo0ZOugg6BA#|fhnS>!A!ju!Z48Y zG-8B~PJ%Jz&7b4mpd=-n+xGXB!y_>S0$!mhb(2y;>W< z+P;zlp#9g`Cri36SczW;Fu?z+Hy&=VrVP+o8`;?r=kD!Na|^>0F0^{7>3{C&ktnxo z1Y_{j%uINCCH8U-X|4Yf9t#H#+>-$Moh*1%+hUPihduiY7{*hP`NBx2yMGJo{cUCT zHV`KGU@Wk)NF9`P*=D*E9kK{WjKW4g-#HE~n*c%9E}2CD+?`AiUdFI|5X(kyp?N|| z5?Tcrh6Uh@qhFrmyF!wml(pfc$Q^{kf*}YIHM+S2+=#sx>L(dp%hyyEThh}?6*OR* zX7?S}(D|J#ekKo+mK%ggaS%+L(2>*SCIjp0fKzE&T-uwSc5}_|8dI6%BDB1Yw35!xNlFwh zuPYGRfY$)9e!p7n5=im@FTTz1?PU8y>R04!6R)4=KRl3hj;@YcV*dF;LW)qt$jI;V z87@cE17lG?tB_H76BG)B=)#0i*wlC0(jAW#Xh2yAXY%I|J}Pj90^?S#!)-@tS( zt0m~3j?Yterop$Wz6x28Lf7){rxi(-gGJeIUJMUT~XJ= z1mcl}N0oV%=z_iQv_!u9BU9ABqQ9roekNathj7cWe02;G<0oZ_6APf}=H+KP)Z1@k zks2c1t8P%4tt30b*Fi{qr^|7)4x{k%3< z8oD*Lv^Lh#{m$Dlp@|GSu#isg#US{3VO_ai#lRC7eaB&vHNU_2yU2(F?@qL*=F~lG zwXAeM9R)uNQRA}`@+x4!DQ7gbHa2!)$yIb(1O%c=ZiD{=uVQ3CZk{TWtxs-pj||MZA@QpMLo{x4H3ofr=&&h@;OwY!O3kK} z?BdasT5aB#nDl}k{Pks=1-UANHX<8kl8}Z_(k5N~Vb93jf`3x_lvsp`y3gk` zp5s0$_S*+a#B+TkJ!$20)p}NJSrxMfXy~BkvzcE#`0A^k?e7DD61wwNuGr$DAP5T( z>-v-tS&4b!x%J~azyBk}wU_UkSolSTbq;rk_~KA^;&1xjc9xp5w|?qG-&Q*TT+bxK zjqO{;q7Q3fA(FMgyzU8>C#Ezi zmek%J{`wwqpP}`uM$DfaGWTAYNwakll8~6w&NLFB8-*eB7BD zW)P$;lB*;UcQyuG;$P}YqkK~zz~h9q?pqe&`)d#-Pku9m@lrqq2qSsDg~ z8EtDHE=#{|)~!KT!|E_?El-a<9B#JNM$8AG0Ue5JY!5Dmo5=>( zi#O|p=GYpls+ugv@G1@Njq@!7uGj(p4%%v)h%}7V`XOAa%@;hy_lXI|QK7lgwF7-% zg_Rkf4}7(TmX;N7hRtVk>)6~%?dq^^pMSpoS=WjyzHMKM|3daZBN&$1=a{Z;^+c(jrv6w?I z@N#Jhe)Wj3XMeABIolx{6{8>(pvDn(D@5fPZ;_20jLhk~@rt?SSs#UDAv;{#Z+N^vfr!}9te(7S3aq!WjsY7XkH_z1>3 zjs2n=Jlk(;-ck8BX2U<3p|m7Me5YiP9R8D6KB3su_SzE$rYTXE^SJ*T{>j=s0YFAV zQhKJ##`+|zaUHfHfKx5p<`2k9zXtqFd{wfmpg{^(f)1c_zuy!lxK@xFimr;f`Cfx*BLGk3Efb#MrWoYU(tv~^&wN&bYKrEo)tjR`dN6*T?I#?TfCw{G z;vnMTg^TRh|ssA?r zA5Q(ghf8hfZ#E(R#U)dK#v>bOGS^JP^0E@(ZXxFj+gJuKk)^Fg=C>O|tO51@VPxni z%Txh(bCl=cZw`>GsB||H_v1-ed#&ja_ti;L`3n?(d0f2z=kC9lUXR=9RLdd3k?PsAP9=%h{2~8_Wqg23TuU~sN_wtDSm?vz70tod>F>>0_<%oyMh(m~Q6$dQV`t3X+kPvEYeVut$fU!B<# zQI4QTLV4xoI^sBDuo~DMgWdJ8X#g88^CnyCy(LurUpKeKaB76>T9=_MdI(6#A@gdY zwLBvxW%T)W#*?9@;;pajUf55Kp8S{!BkYqwg)t8g#~`JciQnbw($ws%HJ(Wf4k%#c3uM3+XQM+85eKnQ!JAFH zRK3-*FDR)PJtq82dKuc*Akt*uG(cr#Rp;)ed=C&>H<%+k6?wN}b9D^G$=)Y=3B~D% zsJTl=;%7RXcZre57uUzvK{d@nfZr^hf=%JuppEU?E9TV8FPq<^`1d|bEG%M(f}4{F zi}4CUg-;#nUr_o|22WBUT;fgJ58w3{8UjeC3-m(!2VeHz)-L+dK3;qEEKLxidGN-- zW1rQ$#-vCGxJZE)XjxmrEdTz!R_1>&*TA-4ZGq17_ksqC!pF1Huv>>rfq07$O@=b> z0}cThq4j70$HfRD+9%7|x+3bL{1;!s;*%ajB)r>gAm>5? zz)Kb}R*l*Qx{ojilWq%b#rd@apC(w<=PnPPr+&}$0NO(0@LV*PO}BOVwG6VM9L2V5 zUSkuu^xLiM$-ovLu8@@a0O5(VzR-5##_P}dzT(fgRJ+hWygS0U!3hDeA;ZXAr7ntf zRZYbEb2h8Zf2id2!jD{6cdos^Ct(R&lmq( zBV$IXq?H@;?|;6t3XzZWfgV>*&M{(u@IFC*l99~KriG9(J+QkkEm>sIcpC4N;Ta;8$7Gbxh_Kv5$qO(Py1 z?e)lJY8Bg>0 zw%-Y8alr?sQ1EYhySuyXnEUs-!reRvsts5+woPM0eLL!0`UJs29^NTgS*E0E;{uf3 zajoVbuEay<57xYIdkbBTo~g^XQ@;o`^{gyl4xydEVV2^s{_yot)i#dyjSo3riRYVd z{#iM8C#6gAc9OSp;`V&gV7}9x3xLrY+!jtT^vncX!0nI!|MbX4M`0yjTIW-O|as)eD+FkQ6DV-?hS9CC#)O) z(~o%QYO6L5X&aoCnI4exfG=>W)3W>b8_*WjzbyrvX!((pRBbVji(Tc!`NhZZFDD-M zi?w8ef{Xb#sOV-8e6;uHWJsfjklY-~-r!;S+ex^DT$HHTErX@VG|?Z{kf%WHj8k1lxY>wCh+*tN~pF ziM{7~znPe|%P^7^mx>)wX*G=9J?X4bcI8JgE=1GXCfknfDxJH!4X&=7+Be800u|~u z{ZeDk0tg{1{`1-|@C2<5-|p~mr}UMEJtN~5Nb1#e6$6WvGBR1igGHO!0jUNBPvE<7 zgRO%3l2)ygs>5lOSJTzji_7xAD_O-l9mQ_~2;*8%x;s=1mX@|$APUsY8sY)Al0D*d{k#R?G!Z0hVKk}pRG=&4huCnF+)fAQwm z!VNpZ68Q!@3b@j36mu5Daj&9zzYU^u2JwNnD|ydxW%E+nB3zxlin;e!_0^4D8yjzn zIdyoax0x_|N5IY)AXU0t#i};~PQ;#~ZkyZdNMZs45>u?jOA;w82m{@g{0ihBLlJ|0 zb%u3@xowT>4rga)HrGE*On$@^H@^NeGZQNxZB-Y|Fj!aSeJFx^ayR7V0q%el;M=}&dffeNL{_a(@?}|%1iTLo zP)>M}Xz_8i(vOXCEHX@E>8#xX{PckK;PGQ&0LCb`2r>qrnj&{P z^1D4^XryeonSaydjqlS`O)oq%W%6j>A`d!V_PZ8Mz9v;f{>!`61azveAd5&|qoTsj z#Pjh$v^26&$)f?E(N|uDz0;G%P5PZnO-G58Iq8;Bc4U1c4p1U3E#xpEb%A}%(qd+IH5j7JKJt9b{0_aNW-oE2 zTK{;r{dC3OIGN74d#ThoX9EyEylb@lPwT@OQm~QIRCJ<9K*>}{WuhRdqo;>Nba?3O z>E63X-Vv(BoYprb-pPA{=kZ7JD#_>=Zbp#|*s&f3#LofH9ypaT5NGfNB z>ZecXYXNA$PKbl7TpukzG2YwtJcQ4{#Ac@3K_pd3`_KpiCA#O9NUwQkbvH{$eJTRX;c7r|J%%ctHUPbP6KmDEOEpdp;eWW;Lq2FZJiNI)gvU&vmavx=`}JX4 z?o?h?ZnTL*gEDm**B2pZkc^@kY4`)|VOubnfHM~u6Ba(>2k;I^1kt^}A%mx4;Y`!w zLqkIy@!uPgv-%8y;-LYhQRWBQ%KTrH&7UZ--oDd=Ge~$R_fGP?Uik9$&P)U_f|~;L zjlX>j!6{D^8rWtXM`%LFJv?tHAo;$)u(I_}$iD6^%b{FjMq#@xCfdVY{RGvXkp~5e ztu!L|hPqfZeuA{J?e`312;uci4(jq)24&?HZxs}<>Cwo8@@nXL9SkRVXT0Pf=sTW= zB?e=`w*qLD+z5_;I`!(w)*Q{X)hQ=42P^M9z8Ax9nA(K`;}hUm2dHpyTNhiBS()m^ zz~ZVAG7V{A>WL-E-l7Y!my<34I!8S}=dr6|zaIrO(Bov_o$v8-ostccJ?jPE6aT1mvKLNC9^#`gIgJ0?ax^)a2pxq8dieU%&o@fnxyCO0|u#={l{% zrCM8CTwVynhC?U=CemI9MTHwg^|6NwZV+^PNo#vZDD$6KYB)|QRa3@+#;QI^o1&R; z*ojDk{fHPw2DVCf5J=wze%yZFA%w2DevKS0B`3vQXue6W$v0}TW}GzY*RcXVK{pn- zS78*Qa(GL>SATgo^s;d@28?iFQora+MefQMs(yVqz`FJN(KGZLj?D3=>l%H*$Dk@R zL7}$!h&%Gm&i*QR8vjc%Yvawa<7-~M?u8LDr#!(JT;_3{LSz7PgtRI&&oJ*8K3c`&lBfKt0! zKiDMTkt{pjc}H_PKF<4uBGHVd0}JpJ%KC+X4NUA-^Zgk#Gqnq#%QA1G-=e+R`@8A((G?UdYEvs` zeei8UM?K=mO^(ZG8e#!xUP2349V_g;!=h+TSb4wo*^nCsRZnLcsM-@T%+US6mP*+Vb}awFE|?|I zUc(~E%Z=EJ2+6TS{?`IVpHyTYUhIpTuFm#;#Cywf8Ts0+z7Gv>hNPs*voR$nlJTLORE| zWv0xivN#~VRZ~UW#G=z5;^gtMvZ@06P=U5|b35^A-l|K3Ef?|#?`}bL;9Gm)?m9R< zunOM>U_wGpOdEkt}Ys`(0QxDKE#U3f7Q_HVB#^W(rJ5tKw3spQ@2?7b%e z1(O?2x#f*UO+D;8RhS6U0z6J@2Z8EqXb|-X>=LCtTfs7Xh>cOm5d2k?ZzHD=$i@VR zr~k1SxdReHkld$izuKtgd^`3-0^EmoQhR59jT!Py>F8u)(m*7aq%mODB}yhiRhd8w z)C3Rf8}+f6I=7p<{Vt%EU3s1#NFe_Q_zI90Au{?ZRH^wg{YwMT8tQ7FCru#87uwmtb z`32bspP^OMbpM+7@-;>L5M-``c$1XL#b95Fh?G@UPP{YN-Y5p26J0NBiPr0Nz|?OKHE=jYPGu zy_=2qov@H*@r($bG4ld=Ijup&9G-f~2ch6?B8o1;vVDSv9vpoR0f5b&c@=*0M}9WX zHCf)<{2;{?8%O!Io&Yu?EILHf+BSc(YO74pY|W7>l`#me*YNdc0e*V$Q_y9|ALSR% zN%qORyIwAcmwgGMzI|hx$^(FOTZ-k66(bUt>wdEgRs*UtBP`2@1OK`C`Ti8NTw&Cn z^Wms6-m!PP{^`}I*LOaf33)a9d$!=~8eXy={X~Vb*o*%a5iPoZr;=}ai5c^&J|SjU zG=rb>nWLfK1CAzMdF?0T|G9d42~jl(jg2&70gB=0cEAAfq}Cy~*kKPcJ*2E4iR8 z3x!A^LK(L`Nr0VMv=d;2_cwut>P&^^*qFC0uX%XflTV?i+QOs$KHT_h3_pvg>gYsP zFg5q)h#uC9fXmV{w)Abzrxtot(!SwxVky(luys36a@DwH%c)UZoEqwc62FA_V|I-x z+AxRTtG;#Mo1%ULsR!9zJqpQ&(Z%sf9z5KC>TEITkH^XH>$|WV>LaBGsDO+Du(wim zEkGrIpw}^90b;H8?mp@QlQ4ep7-^ zf$CE);sJQqjwEBqcGP#y{8$>lAh9<~v50@|i?ix`$6u3u`^@kAhym1cF#i4`!A;tt zSp)B^E)(g!ZLNH)dA}{U$2N}J^O_KlGwWn*oCRKBQm3*S)$2|XpVoH^35p^CiV-Zz zLrO4Tc09liTCNiztfGZd1EMl6K$p`Ra zQQu&^VFc_8$Q=Pi|LGxbHcEbs3AlFR!nV1Ki*4#f-oFpw`|zQH;-(OSsM*@Q;F>K|#)p6Y$sEK7w@QHGW7H-zSWy&CXs^-ZyTw(~S(|EuP_?j=^j}$Ct?%w+134+{&*Jps@ zV+Yi_wh{(h-61$HSPj{i4){#|T27y}A{RsLf#fx@vO4Ua9%Kd$xi)+~zi{qzWY_U( z;lHFDz|3%i1*#mEA+exp=HC&4CTmh0(K};ly^9~Xm;(wutBJ~o81lW?!SB6uPRT|| zcvOKgeV)kIO$GhhL->mp>t>t7<1Dz(Hh(_&Yq#f4!BK zc4x%`1~c4rMD%3?2M=U2RbNP$T~Z zq`z3Y8dK(iz^<^2)Pv?|yjOM~>|73p47><1#&-*-i(u}$a{@e#eZx9)*}#lA0O@-3 zYWOsKcPl6@oB_=L8X+rASvuRWk@AsYpYSmcwkUreZa-V?Si*Nn^Np;$EC`@Oe(>)o zC@PwWviiS_Dz1RAkFcB#uFg+CC1tcJvpX&%juN__kNsPY>k%+3`tMn#wKr0=X3o*Q zA^?OkI*iaqEtbbM?KTd=2mJ1zy}?+E3Z#KoX8#?W`-cZ0$c#;hA~5W_3M$8pN2f~6 ztT7DkdU$+Q!enb{Tb7V^4hqO#pPD0^_)*SZLv|mvko*KW!%h$4kL=TndzBKC?hYW_ z$*2JtaF6SoOQrc0g;c{GXy6d|-2(B%xT8vMbxjw!7~abo@)pRO_sf}SV$TeM@t@hgkaoP@vZycbbs@Ph1^pL|4gJPsUp8q3f(8hTI;Qw z!lFk}C;S&3Wu-+bt~SO{Pn0q>|LP-h_e2UfLe~A$v6-5}^73Ptgz3YgSSYdbK+iRR z_olJ2alVk5qw^hR-!F5KV-H=fcuymvFRkx!#3~gr!E$RWl#d%~b&4LDyqMb}QN@5r zhXzD?&#HABg;?V@=~iY_9&mQXds(Qo&B=3dSr$*-uO8-?=)NZL@o zRa0Y<=<-EiTx4*8eL+GeS3h3kc@1b9fKwSD@$^l)j@#Npfl8cUtoLk8##MRiDhS#k ztNwc9XsN^A4rkvtPidIJahjI??JFBw8zBI5c*Dbix#RoseqZqn6!L5`kD>rX23 z11AqEs;ZA6xYM7}nMA+twZ=lw;nnyFyrWFc(kak>&`lzO!sOWhOP>wtOPK6XgKxyF zn~ zg>rw+Z4%V ziqIu}BxDC@HvnQ&R^ya#Usy7L;=}lR_qH`zHbZ`}LW?=mhNq@C-QUsDd+>gc&d>jj z2!J7(vI0AXs}}!>aPEN!$I~o(##$5}E=Bc!xM&$;@n=A{hOAF92&26o94>pDBuveR z-I10*zi=G_E82SxwRS0@9m%dj#X)XxXPYawOLRGdpBkqa{+H6qDVS(rD|~*|A>Udz zCI^eIYvr};0JIm)TmWLqFI~^4Od8BJ<&}NsQ&I+Gls9H24%FtOXm-qge?gX?zI_;QX(+0EtsMg8sJFy; zmy}+8;rr6F+&lV*v1oZK<}~)c8ZlB0rlLUnBK3vgVTRFB=5qjr+f#qnMMmQ;owu)p z21_|16AWmMSgs7uv0Y(}BcVENXP*RHV@*yeA`8w5BCE~h^Pl2 z-0RfM z0FNv@?CySvWMHf$Xn+a)gjTUlEYt5PA4OyNF%MM2mO?8gZ>it6O9h4GRK~@U%>La{V4#n`le4mc>Ma5#ruE=7&hg#zH`>~B z>zDsCeXF@dGiY+k!S&70V}LY+i-iaL{Oam~uPu8nicO7;oP|_ccVbA$nM2HzPhSb9 zO|)=j(N9C;n~6yr9Hh#l`T^G^mbQC^{7GqIc!Ig#B%q}y#jWkf4~|j!%zoU#hzP~h z%MLgCx`_`cib?{R8O)%Z#Qh$W^;BVR$U%vZ3k~en0Ip9tR!(e3cI#Qr#UR~IKf*`9 z_Vry$bYM#eS!~SKtJ%GQ-0&vt1AaWNiY+cfdKI`H1 z-*q>;m^V87y$^8of0?9XyZsKDkRA<+Vfc^kH~Fot;Yfm01eD*!-kGe0H6`h1M%Q7k z3VOq~i5Tf6CY3}uBa?&w{&E9!==H5n`vH{FU4Qp14zJ$8Z5w zjM7^RJ+PpMRjZP?KmL?R%bOT0a8V8fzxkA>1vIzK`4~Ems}`xwlA)4L zG$e_Q3|jB(*R0|8jGAh{*9}Iv+lhOGHFi@LA4b0yr(Ddt{(H@tT@d&*DF$Z8SCXNj zh4Y;TKpN2XY+t4B-nyVJdJ4-8LAJz45|T?WS_SC45Cb1~IYE?NVKye}wwNt+Y6=ee z>C&eL`p?6Gk=s=Wmd&zh73i-d&ri_jGDL>*5s&jsO3V`LIh*tytYhRrBtUQdR|P5h z3m^e-_4wUU(AwB7j}j`j+8)2(BDIZ+6a1`bFR}KPn@_~Ybj`$pz#}My`QQZ?$etAE zGfQn)83%v)bOUQFcq`bn{H5kQGW3pY8$iqvJRm~{>Oy@NcAHB|cE^=Vf@DF7fuZyN z{A2u>-AN1_mXVavexM5r*8-*?5VGfxqNAyNOGa0ZhRf*x_tg9L&L?QLUk)zjzk>p9 zXK7g%QEabLRI?2gt|pB7 zNgT-F&6CwZY#z;wQpEM@aEX6&Bry<8W^6&9v?5VL4hjo^HIHQ&t2cg$U}5LQ0l^mo zYmJnK1{Zajn#=tyi0w4L8SU{Gb#`y;ql^6qoJVT><_*W3Z~k$C=H^e`W>*djOdoa8 zJ~1p7q|M}GY;g$FXrqucP6k+g)0AU(O;j$Yw86(`vM;1H8mF} zFLd*%=v!-LwkT7&lW>-kibndvf`XrZm82&gy%P(;S}IeqS-#q1qACpn7FzDCzZ&W< zCOmcYzHe!|31{2=9IC4v*IDm+>0<|)2o!%25%6N7PnCM1ffKskj!8? z5xv81dWC}9J!#9^PYzEHPY?L6R^!RpS6?_TULK12Y;*P{^Tu-5*!P6JOC+)+4G$C<23?dpk(5;;n;Q0uwn*kin90tnnHfHAy?Ev;!>kN4UY0CuMku(rQ&$74g|C$KE6Em{Q9$@x zmep{DTN(@4mUnANR(kbCO}O%#gzKV(a9ott+Khy)@&CirSB6y;bz9Tj-6=>ZA=2H_ z-Q67`-Q6ImfV4D9cX;UTkWP{APQS%_-}^oHzrx|{wdb01%n`P>ES(tKRt=W5D;?-| zzrU7;>~T~lh76f+O06Qj49@yZIME}^zMALOWmtjxH@}{dfX0_ik8bR{*kY|fbhNaX zED2K6JB`b<}h9IF;OG$w7CuDr<9i_~w*AG@R4`75i4Kujb>7+s+~h5~+ucz8JTy0ue? zk>4dogTo?{!Ac>M2`OUg=rTH)I(@5&Ec-}eqDtSsmZ3^i4EHh3dqG@@Tv4kqwJ^xn zIiomXV86x5?dzSXyJ1}JE7V3ZJhnAX)26|bNnne!jqM|C=K8LSX4Co3 zn_-cUPkSMz8O34<8~r40lyqa$7;))Hui7h_4oEX}bm-p>-H7N~a+z+aol?<|Xw23R zX~`gvuo$)>k+S^W3V2EohKvqoTUiZ3ih;`&cmjJ0iH%o{^6mVX6dR%vEEHCMt8NmB zB&4NDmm2K5tSG;Q6=b1<)axGOG%5$Gz7QWw8e-=&8?Qnt2hY^09?b@?X@oYveI%e~ zTNpRR!C=Bwb5fia3o2>2Rs;r%RU+!*X73_@sM?Fs5vA?Fl?-fr%|B8H{3`mSn0qb% zRvc~Q*66g#mJ+J&)q}Qf*^elwY9Ojc;FEPFMvZ$t@1a9QmD7#lp|e{T2Y4dgNO?og zJGmSh$K)n^X{pH(u7s7ep#EySpC12V9shh5qXevhVa&Et^I_Dmw-8c4-EZs+H(i`! z+u9yX3bT=$S51Bt)XzF}c^nXOe;x|+5h13?rTVwKOXRrX6M2w#bN0O=xH?M_A7x+9 zVI{UPo?OB?5L51_G9lJ0#8gHzbCjKQplHl(pIkvqj8ys{uIZjVQzi-*uhZB^=Hmh1 z`MVn(P(GR1BX~;e|5o>jTGZskz{0`;!n&xKEML-e?dNBn%%BrQ#NrU#UBQCV(x7@f zO+a2krZ^sRcBu$PA9~WvxMp?8fq<1_R)C5;N98+dJ4$&nX6BxMwm$}c)n4-P zY1*3Kcyg{;8Y9M^b&4+e)(ec4Bjc4sffrS_hKACTk(xl@Q2q1u^o{fVt%!JNI`ha0 zfU{%1%2x^K-pHL;;wh2OJ0`g7Mq1Zb(TKYM$AX4F+fOR0@Uk!`0WtWojc7ij=2J7n zIBd$E(g}q17k|I3iTjPf7jNTY0rZ_4bAZ|dU~%hqs+`x6efb$q!}KBv91 z9NXhs)z+WCWk*$Z@b_ycSjVwxFqAw8Jl(8yugs=HYxKa~evgLv#N|VK39ZV(!7fAx zZ8@1A20m_Ao*(t?Y{ZFa;l{^Q#t{0nv;L#6t%%k?Kp5YU?5)KPzOntMOFCm>_GFcc z^_l7rmfT-91#}?6`0q0n^eT7slTdb_cZzpR$RL_@r>n z%uJJmw7B_3=Fb|~Iu@od8Cv@02QO9Vhp?BOssIR?iC)g27GOzSpPYuCxrxp9u)cH3 z)%{;CK2vt9RxDSI9}2nDp|eYmkCmeFg_PU^*O*>rBO<7`t8dj45c-0WiY+1|6(r2%VSwS0 zq{+>z>E0zL^6sD&(fPU{Sus}pFbA>s!K;3ss>BPgkHaJjE^QV_Qy(=o9thuRN7Bg= zY(cV(+XAj%G0SxB9c(In`%Y%b$lI67VxFlOV2j81D}e=;Q;@b|KUOW`h$dmrb@gQ z@F@I`!tpIeK8#O%TpX<+Ga~n~fP|&yTc&Ic1yZeyjDXU$P(Bs^+8$J^ujTOna?hi!WCjOb zM3PoMa2d^~grt(iKu*IsUOrNpG& z`kbCMyst8hV=Zx*m%=VX+z!}4R8pl-luEZg&1T)rKgqayaZTos}0V3<~E6r&?drQ>Rx;3znCeEJ&GR@hwwB zAd~?Q$QUO}quK(Dt>0ok3W{vK;eBE^-BbfE*|eo-NJF!yqd8+=mk3z`YYWJOVSTZ8 z4;V=x?-5hm@0yga_+Jm#N%y~|W#Yn~Jo^AVnpNEDcPiHYtPa>7SbF+2ZLCc9S1pdn zAIZK2ALCm@{FGC!u?tuZ(B$Kut~AGheM9Hz>1B<8td@Eo3YKRta0R=b)0`*A2~3v8 zsJcLBucjHCvH%Z5&Z*2puSfSj;oswHPEIZ*vu{++TtR~Wa{k?6+P5>O-O1Qdo0bFf z*tmeZ3vOWOAmU`SRu^P!T8HzJQH^{qDU+LHeW-PU&FXt#^N5qYS4irC4P4CHf@#pu zl@gAy%af9`(EXnVeR8j=wEv#S3xa;5i*hZxCNPlA4+JM)7o#?j5(Lf7xtIRIR98$R zsuX@&M*~-P_sEQd4U`=QQ>ND^Fj)9njsM}r(Z~gv_g!J-jex`x{`W6I=?N8If=-h) zHiOH+>Kw`I_`{GDcV-Hu6c=t6<@8wcp-i9p|7oW=gCD|RWy(k-OfIm(rF!A~l$5Gfca^dz4IHWKit{77E8-hUHgjDLFnXALrI19W$ry0c|Qt) zOZjh;VR||Hg*xoaJ^q3=!@hl8*Ti;2r0TWh#qd8f^7<_l(N?qXEB-cpeZ@0D*c$Q# z)awYqrI{j^L$t++!u_m$Dr1Ag!od8HfPNOSPx=Jr5qLjJYo(|$D}R=X zYdQ+~clg2anxP_{sHffd#EQY{4pBvp-dNtn4HJoIk^IDZq_}c3=ohu9yukW*^8pj<4)#a08E!H*fB<%zUUAmfDVpi$yOP6b zKX|uvkN4wJ2MMw1+6)XmFzSMmZ<*k#oNg-h>c^MJy=NEqx2o@I09(0Fc0l#fr;N>b zp(~7yo!ykqyj{?sx_cJcvZ$!7CNj1q28=#`WL5z~ctV&n{CjZ-5-T|*t_!;EDo%`} zE6AeuVs%)Hkp!@NE?XR_Dv23vU;66}mAk4m7v+V_*yt!9?S)~h*@2P4?)r%b`{`nt zNx%Ut?A1-vAX-0&0ClgE;D4 z?sfeePpuorn^5^BJNbMRx!qZtQ^mK9mHx)tntHlR>e9T#)?!o~rcqB@PD0(sS^kGl zGU_K{1YkJ(crvQ!vA+dE;(edGSwWE(b8u)cnRhd~?6R%ZnE&PT+PB>U(mng($9w|# zcHJ*T@hfcsUbcMru>Z4p3VgUdgY z&>5WWlvq2bR`P#O9yumUbE8y&7=*{r8fQ@OS2jxI*tp|E#yGAE>dFjzvV#!7P(%=} zB!3y}FWI5MwUvs^L?&2r=&R^Y-SKn=!(W?!v#CyPynq4=%fmmvsYTh|9Z6bJk&_<= zZmnw`Fv&SesJ3Ow_N56hf(Pg`F!aV4x#!Z6gq$>)FCsE^5wO&u->rNj*Y?*|e)%8J#+3YLKIHGR(Q;{z37P&7&xfa{+ zLH9Xy(Vm|zpu_i?@rj)#f79g#UsOYKk9K^A#h|Pk#}4Bd*(BDYF5IBTJW7DFl*0iW z=Alo$-|+J|zT(Zd5E6u)mS_{~?jP=FyYh>*1&uL8!f(z@iX)w0^kmFh0)aJ7KI6yf z^pK%He|76^JUu;$+|U)Mu=;X--7$M--ze5*l~F3MpLBbyb`fB+yQxHNUBfH*Ct1Al^>!nvU9tsSA&I1XR+#b#m&sEcr=tmk%7!Xo4cFH; zM_8v85izvEA-*n`5DEa4c#e(ZOuaxp-&a-94N8-gK{EqfLBREd!KanOgom5gzP0$i z9Gh$%RX8U~f=&_@j1Y$|;0zu{z6wwi6Vq@I1Qbf*f##n-u?3kE95ySh!0X@*{v98id!Onj1H^w=sF z%wazRn*dgaYHFtOXUwD8%r*~a+u@b z)q$VS<)n?NXUA;6T!mpbI%;BW9=Q$j9A{>*{N|D>{FD$~B=`-r^`q-X^xfBu4DZkY z>nY#VXF|IM4(M@iS1N@dFFIpw6@=N^iU%e8BXIrBd#g8G3k0mj6mO^Ao&-gG}z$>=w`L|CX!Q-^AY zV(dnZLe`dGUnd+|iTG0kpjtUyTk7wKJC=1Aqz^Cf?yO4#09v(AfK8iZZ+%3vdlFLn zI-x4bn^SsL6kNEs?cb8MBEQ%5dlF&C0Y73iG_*+D9L66J^m2u8cV69VzeCt7K#;Sj zxVRuBx0bjb^zWpsXLgq7ff5`8W7UyA4!TlFW4!{(=9lav02B>&p%DPOliZkCT@}I; ze$x$(8#1pKJh;fyuhV6bX;Z4|-a!bVJ18nxSYHa$B@`XXY761m*PGp)QZW`ba06HS z6blPIoI0>f8!+ud2?0EGlR?8TYqz5Adj(nIByy9>4z#zA4?9)5Vw)J10uy8FYaXbG z>!aX~XAWy-w!NU2j#>`XnA>J9E}{6zMC^v_XeCAI#Vz|34FNObS`|~y44S%rklz}f zTp$SM(v5>XgbR%#Z7`;s4aNM40>?Hf9xsC!Z=9HdT-tPjiYA(_$zU) z6`jef!WCA;{fP%z7}1v$z2RkVZEB>fooW;X}cR=?gMIw`}s_M)T;VnVemT6CKP=^6|R9AHSA0ebT8P zN`dBLXpK{w9-DKGZjTQc!aH!v6a3M(NeufdyVVn2X_#38b~jJlALjfJ?bIZqPz>Q5 z$w7Wp(g=nTTRW^|^55kwCfa8Oojg-)Z`S?&w_y>P@18ee#z}!`AH`i7)PnV-RIAZdsRXjSv-4FrZuz9z~zF%H}BId}0 zVBf3I6LKnph9*;V7Y=11>MsQPW$4r-f{+(UfFLuW@VC~`n)4x>oMN<@7He$aKkiM`}GI676O0&AA(bDJ@Dv;FB$ zrN*}9EnGeHq^$@6XtE9fDqzYlA+C0@Oqw`No?Ky(Vq#)%AL?c|TJ67*5ycu)U!~tj zfN+10#yck2f>;4nWzh1@F3I3n2xo#r;Wo#aF*AjuC}vU+y`rYYcL`# z`UOE(uQO8@{oz6d%m*-OO+jJR=`8%Zy$xe3uiv^zc9J8A44e+Y#$r&k^8Dkqz*1od zg10cv#PihE5=(MRo{HO?)CDJIU4w3&CwoPMV;_HUd}r?@0V&Iyze^QU#{f+(Y&K-X zq=(2_Itn?iBAd|(M}AO7lTTC2YSuTRw6rYpyt!n*_3?Q@Y*cFBe|`e5XbL0Ubi|bY zD}v5HvGTyMn3jbjJV@9&JKBK3*~-!uCV&$2di$Urwntz97YTGIxDUHue);uGNTNxD z)$-vA>zf6$e?PNcChDJx*A=gR5QQGb#eR_ZtB0-UE_mR_alyF+sq3fW5Aq~Jt!QvSNd!{E}KnEPwI%Y9ZrbCM?>{(Yvu z>4FUgSdgPN(G=kk3_V|;Ig87DriAfp7qMdr=fV97emaEDK6_vG6^`-(CR2j%jVN4; zx3>u0YA?e}+Js&|rrB>rVE~O=`B1UHI|Y{>0gX>nS|Q1J3IG7pto_aX8ad>;c(4Ejg(vMfH_Lzkh)T`tR)f*c&tq40hwcjlu>! z-O`iR_KpZo4rN%wNgW+RLSFyS0LTGE{rDv_6>a}%s@VX(?gQ7+;pa^Wpp(vmT{vLe zLB-z)^=XdNE$+@#j!RQ-<9I)`y%QRUD`EL_Om<52Ew=%}n3EEM)L0zoEr;#Ucg{8Yx2FFB71f7kkSe1%j4>jHr^z5ZcxS3nCkRYQAiH(ij z+^kn##!L_!OfKH_67m!0ejwNm*oJHEqe%;rMwCqH{pGkqVqc@5aHN@8JvbGd3htvK z*9MBBjzTCsLs52BN-J8R8dYL`2@lMA6W=qi%eI$E?l^XP`Sgy(F3>j1_5U0v(7Z}H zIFN&(9QUS+<|UkMC@V^|1TU#L^W7?+KT;Zjofknf6klqenV%o*^WzaOfLl#Ht+mxH z+S2xSt8kDw>DT!EVymf;6IVcmgJVlKFWKB>fY+4E`F`#JKA*MPeaQw+x!_ zf*+aO9H%?{PUIoY>7`UVyY_-Zq87DRDYiz^5AvoxZ_7RVFm}6XwunMtBoIc@=1_a& zi}LcI`AM1k*oby_2LD#Ipjt7h-C(l`KkV59Lto;5k0$}5_NGigf^TSQmR{j_nmH~6 z0j1IO?jvj%+{ljA?1%?$0j@^M?R|t1mbWn3)6n}eX44`dHz0UbDB{~tK{`*8}?Hk{bgq@utu7MNnX z2n!?y-4@e}zSXaKQQ0}W)I|JBc#Uy_8nh9;{Sna?V0|M6QK0;rHC$cY6x7#e9qE|i zs3vMDbDGuTwOh2jc;Xe8ziSiFCwlijh_e^TH%%H7yfp%CLrcE2n4Inj`Bjccn9+2R zOkZ+~?BLqPH<3g-62%Q&lbM2s=r#Q2kW<{Cyhd>?*mu-WURE!{wk7_b4E$)v3|fLf z)LR<01gdHtvdWTL5j=Gdvc6OydmNgUaW4vN1sj_&sWM7Rw81V^4!kBm-{jO{cuP1v z2$9-!ai?HnE(g9ebhd=b>v1*Ruutu0{cFB3053ui`jemWGNa8N5?a_vrc9qj*?1BW zhg^=3S(MWz?hq=}V?)(SJfg&{C};Q9keehl@?@xJw+ zjSiAKPiPU{w*Yo%;@E(44`c2Qe)3%$wuWPK(BE~cNNZc+A8fp`> zcJz}RUTA(h=C40ERJI+{zc_-oo%N=4d9+7yZel(ZY(PPd>;P!cCH2UAdaUV~nf)G5 zh59J!rkulcze%^1Ie`hET&n%i{+0Vww3Wu~jMF1eT))W)2(5jM z`Odg_Vt8zhn=3E31n)~_7!5tO7l};Z+$j)vRQ#c<9>;oMW2gPNL4g&FXuYCXco@*( zNelz(|?hFz_oB1`=qkV*|Xu0JE{%hQq+xIAEP^ogS=4wKV zLp;@AiCTXUX5#D7fe|Ob(2!InzB2I<{=CAYf>QhaX!H%ZN*5mDF&Jq~afrfvO;n0_zXfg9oFd&XZLaQrAgt_Om z*~bdXw|&_dtR9HSFM`v+_tf+@IjXB?K=1rJS-}0@%7HOP5j~$)`9+O-DeE_KBdtOH zt6+l`UU`F|p{8Pa4=%wG{ZbtCNoYZM`Q0|^;MKgrQfm-4ESeyz{hpuB`lvXsG)UY> zyy_hU@%XKxtqa8&6Bv9K4*Sr5$+jQ@C(6WRqe#jz11W!#GtR)&j%Mq$mGufg zJ!r`&j7$83KZH+g>zx9*!L2>t+%X>-GSo9yFjO5ew+MU|njYA2fVm0~NT!t` zwbQc9{S^Jr1up>ZDF&@Du(`3k0i{bnV(lAg@jFQxy(k44QF&h!VEQ@v`?s*e=m+%a z2b+z2$-~$_?*~mX!KzGlbymYRB2>b2)vxb(a{%rvziZ=X9{+9*DU*jLD);hoJMLqYU}Fje2sSv_W;0!x0KBJ>7O zbP!&+H{pGMzsMd(b|TwpW_E%d8a`2Eso=m{$QA{8i1w+(H(IM2rRXWiifZHO~D2oS1&cr)ofMn`YXX6LplQZZWi8dp0#gMi;Vs3y}5uzyQTl5}SaQdI@nI z^HitljLY}`be)jr^z}=ZZ*{FYKIpa0K(D=wfX4}|u>x5~Vk3O%wcGt|udlE3E^Ua9 zBc!)>!Yk9ci?&tj$^FJ_OZjDPzE zq@-3BY?Z4m5kQR9$N6gRBBE4qAkZT105A@zn_78{!JK3NwwyGR3;YjPN9HajKEzfq z7jT~lNSLTF>K0Zd=>ndRAGPS|g?q%0`c#^kq@{PeWR>;x=r>*Yrzb{!<08;_p8hJ4 z$Sy}2vz`a@qF~{NvTE7Po6KD?MX~GkOcupR3_N!s?WYWA=opHqi@5U^2Y=&kAJ+U) z5Pe8HUxzClVS!S=N6o~ry=(Bn&Q5l!-T6HpU}+ST7HXitQXMf8Qt=EVq*^yFG=%jI z|EYfaGSWq00SM|C&ko@Cj-u2Ql5}j>!Z0>dywl}0J3ZQ#X7%{}7$+fF_4u)xKaF=v z&%bJw9n>$_0M1hF1@14|PKsQPuUURu13yT`v;oY`6!CeQr^NV;`h!au1`};x%}$7j z<2&UU7Wn4|yY0zmpfeLo<4bA_(Z^y!I z-?JRF))%6Kq*bb1V<#g@*p$*?>L)owJ5)lB#RXRXD{NmugN35V>3`#v;S47v;5*Ac z(Ks9IY4W`5GXSpH)#vnZ`S>kWp=a=@>-F9El)o+r8XOmpYBh?)xaHnl72ntbn$BCp z*0`B|o!Dl1d9f2YQ!(HfNf`{&wqftoJtr%M4JwkX(x9QzzE6}n7CZ7_ljnOpi_~$E zh(J@k#V_`Cb%8Mj#z5dzLN9&$f zp9`2MY0FabA^n&qVIc2Q&Q|U9MlOfjzQe+TEVLF(G_LjIa#;E9?!M{CW2qP#c20)} z!cv1{aPtDw0%LAyT8mFM?R#2Ouvc#K6aJ<_{*|O>W@-u!dhhx8BEi_nZglK@voj{r zD6F`6H=6S^8wY`r{{t@ncs5F|KG;4)Mx7p(762Jr&@2f4(0u^c-GtN++XK1kf{aD) zKZL349Q=(#eFM7#a*&!2s&X*&OWID|3(3;!fO?1?N5_$)2TIw6C-}^>SxR-%bl1N? zVp0QrOuQUIs%g%Bd`4X$(VwV^o<&>c$2NE4f5%k2`)@T`pH}U?Q$WkTMdu$kB``7b zKKeyp#E?c+q#s=N6Z;awrH^ADO9L@AF}}{`=RVxfQqUtoZXV%o+K3|$Siz0>=X0>v zK?FR`_)wx{fiL(Eg6-Eu-eCkIi@J+IOc;75D_)_`dzST;Pm|?0q6*A`wM}(cJ;?ES z7}Flz^|&@L3*I<%`h{D+r>`Su-Kk_$mtF*qnzu@agUruB`uXwq_!AB?GwkoVxlR}h zw>SkVV`CsN6d#sD;B|HfP)LKrYACCa59L_=H2~E=--TPd=ZHL(Exg>KmIsVyM$#4PZc*&!`zZKM@reND#otgph6?D#+(qhgGe1mn@%OdpVi;BW%<0>bERVq zK=Y1tdDBN3@Wc)XVO3Pw%3<2%du`X}aZ9npw7+t{(tS}(1?$h+q`(}1=d_^F9d8Uq z^?%Ooz1z?YZ-L7XaMymBh-YTGbIV(;G7?iRkJ`KOJ4HL@f7ulqUl-Tzz4>q7?Ro~) z8_&nr;(Vsd0P;!BDq1vciRB%@N5=Fyn5TyG^r_lM!IMrb1l49_6_B!Y;<@hXBq2M+ z_^B`297{zZK#4H{bGL0Zf2v=w8;eP^*(vd@glaAbNkoquQ9*@G&J$P>Idb3O$I}l&J-8_+RKpY zFDpAJ@=1&XH5$x13I$zRSzp2eW`W&KFgyh2-l?;PuzfemRL@8Wlb#t}XD%l@NGR=K zPt+)Y`10ygUS(y!toWPX(^kUMgtL=Hv7OCGZ>aW+D_V;Y$+K2Kfs}UDBh}U8pIBZ* z;PZ9JJ8?LoBFM?hi%JsOGQ&0I)T~iA7d>jeJ?XV8O^F2gb66PPoENlvi2?%(8NyQ%YS56z2?C>$rchyEaXflVL*VL9YKKcZ3J?; zu35d8v0qzRPQI|4k*(1_{VfQ+IRh$^Z}4qlFq+_Pf1eqvI#QTa$0_{ps{G`PO#mh2 z)BI~XEap#2lgtuoa<~yUM_pqglz^y(qrv!szuzPI#XWC{sL7$4;XR%`Y5>%<+KVY( zV{N2idf5PM3{ubTcUKzM_x{F8q7s&lwtNm5k`QX#Ha7$mVvd>%mj{2Md^6l4KTTz* z@d;;mX1}|eUk~zyW$0~Da=Z3bn>z2G_trWj?zhN5ETQa^@8!j{$mbkxKt16I_kX(# z8+--fndhCD&Gbl2%!;Uq9 zD2&~(p}|9b`paA)Nk)pg_3-NJ7g9=4hrJFf7!dxNbctG&@yF4>FPQIv1j5l3Dgm`) zkI2836+t3m@>IU!5>@2hNXEg9tj744zA_DuA;ncg@)GI4M-F_(m)Rgg>NM9G>cecv zfDILAsrS1yWO#L{ETuxWrTadW#SW;uQIV&M-|qnXApO!toJBij&*QF-9Aw#rS!vYA z8fFX+Q{;wS<@d(qeUP_YTx7XOI~z}EP!M#3cHT(Rvp@1fmVePN zbeUI&6zuR-7QENjhiH(F6;Wr`kAYE9i7c6a9R>$s!T0yNAEjzxz6bAxwy$rB!jQ{C zz|O(h11JmYCkKNfl>#yP^MZ0GPP%d{s4+d`U!3wAeo|x^taNeh!ynl^iARt(0NC>8 z5}9XSx6^cmM06gILxOkdo0&cYX`AvlQQSiTlFa}sizOXu55wi#g|hn;C*+5Iasg_H zFZb=P#ljLuD~x6a)c!Z`^lbOMWY=9@NkvitZ-B$V^|i3s_ih72qy3n_^i81Ub(h+Z zS_j7 zqcT{ATT+mMvh3|DogwvUZhm1QE~)0DW^-@{1F^rkxw-j*veV;2PMv@~~d60)}zk&HCe2 z@%XQe4HNw)lIZfh8(@Tyu+zQ?#Xl{T1jYO7`PKl?{VlhLW=cmUAEhJq8$@ypFexNy zsp+z+ks}r6esWn^Tm{4Wt#576N4gAyr%f8>WQj?h3yi#Ig?P!iPlP1I#S3Owrnv14 z+>TAtw}Ei8b|qeEO}JZ@SvgSQzb9m20c=GgLQ~L|QDa0D90U;}!Yw@tAeH$S(1?0= zeJI}6Mo97sad~t&%DeIg-GF#Y*@U8*v$_L^r=;i;`|t5y8Z7>lm}8_*#F*ZFvUWm( zd2CzX*pCGiQf6(n1);a>@5v{tKTzdH)k!elSLB{&2i#u0=4lg#zAQwRC^_8)EntV#SM&$;SHo8aq4wwh=CVK`oQz|#gM&^z5r`D={YV1q z*b!Xed)#~01lX%#ixp2!1NOL3g~!Ik-MINN)CSE&7M6 zv_CJkE}oF4Bv!2J=DfHG_ICY@Cy(^t*Mk35@B13zbdT|S`Y2V zGz)zJpvgY_nSl}uM~bMl@y;NugbnAESesD-GSyC1V6#R8_Zo*jWXRx5a)=Y6yru3zlKiW)E`k%5q|7}eVD#P~xxD@wKdq|a$% zPW!k>#$|0;rIyiNp^Iz=MgJW$w+o0NR2M22OTcT;sBrv-K(YQ zem%7|M0#BGaezpZHl7qTbOgcg7Z0`6mv0zbbrYqwEgRrfmXKuw4(3N^Ca3cNpTNJ^ zqs2=%lp9l5%3PJ->0EZ-&ISSVvUtkn2yiEhDmkUgkNxN7>U<$?W>nN+kdu*hO`oG6 zOtn2x!6*$eQ4tfFpRJUN<^C&dku#}wM>i`GstMqZ)g%dqSnjicIyBbKs=P$nBBip- z77Ij8kv~4K>+B$TN6aKt%SYyNkbKu7=y{{TKIS&YyGf@*N5inzx8{zfr3%icA*tob_k;~Cm6B*!{=&snY8<>+Uln(_3{}uCiC2T9= z8c0EeK#26;1F^zYz}}K|`_)CMD8CP|!pJx!QFUJ$V6|QhEsggxC742H5Yh3c;{4u8 zFN7M%t1IB@wZT5DXR-FYx*V7-fB~^W;<#XdXW~RHY}HGT%K_pf{1C`4Vr^%GOkn&T zKB7E|=c-X|p~ zK8i#B+-`nm3U}*i3Rcg~AM3&vn3BDIslBu@L160d`WA_&R$1;O0z9jxD6DE#zrw=e zpecRur#dLfPX!8)iXRPKfVJ~e(S5$g3zi}AOOnT|3iwjVeGK5ZaM>7()PqlHkbe?h zs6ViyBfG?Ys}Bk%DwO>&OtLrs`z7N&;&*diq-7QVZ2l@MEvz)y7{aw#ncQjg|4FaH^*q{SSD%T2=zp^G0#&LCs2gWHjIKWE!DPei(3gm$j^HR zKY<5bgIwabV*>a5II08`T?knQB_UX~4MpJy@#Kp!H{;&|OQWiXV4HTPSwS79JSkmh z-x875BJ8+7CZpNHQPI<5eXrc;b|D3jrOm@Z+T5HlmeDsq7`$}DQMJU+7&tWdGs1`l zUr<>fn;H0e|AmwYX~Fy_{|$r_6SzdzKs|wJY{SNDyDlJyrSGPd?atEK}6_4GE)0 z{|{+I3!SDmh$C<&qFR0cy!yfFD9M2qbPggWsLH=DIQ|1?3#cqD@jJ5$WU!~wy($iZ zanf%>3_XS(%4dK7KKxhXYa!pASNxGiWd*dKYG-5vz%MC3_8-*t#&mOcr{!YDUwgbF zoB?~J#!4kTj64=En8cUG5J)~o1mg6GiS=gQKBtt{~kuLFy-Zop|SI#a~X4|sX zKUL?-m4{6L%<$OPF>zd!OHf@#m?|KuugXVbhO4Zt4uet?iI2p$Ak8VwsBKm6fC_lq z;4Op#IyFms3$d(U@8X2P#Ity)p51{SH_E`|7Y)#3s(1XDV5UBNXHs^Eao)XZAd03f zWhE+>*0rg+j2>gUQ-67(o@e|$aZ>hh2|v`x@0QD~X=3KjgB4e4|uZKW@>b2bnNag*x|{Ytox{|m(a=p3#W*k3+J_w#yH z^c*M z>)wZE!R0Hl|Hv@s2CK9f*p?Pm^A)xmGS9=Kwt(uIYWNYfB`*`^=dT%^L!GhM29$tP z2kjGxv4||v04U`Au)faL0Z0WxJ2WgWLu}Q(T-u`Ss}P`s3qCD@1JqU$RDwuJYc-iq zb51z|(JTB;57`jI9-#5}QUa>!)ck=?Odesz+DGrQGMtb@t*i6C+D|sNK zeV;-qV*nRfbbG#URt>QRw-;(mz$$}y z$j@VtFunpMn+Qjlq+^_mxw24KLldle~CKfa1 zT=#UEBlD7)s*!cs}p~{QyEL zd^VH%_4w)-30#ra!8~-TK?14|+{dHT;~lZ@7Wmx|Ey!DMyeoSoq%*faZGPG!o(Fx=4C8qf2$ zJ6XIXs)UfYk&~gvxGP?oKCeGiFH|FmrubC^CVV zSZ;a>tVWG)wm*t7q!x)St;Y6QQzc#+&E$g2Na%OMgWGpSK>2q$1B2Gud}wTiKG;

vx0)@q@TO?$w@aMk8K+#2hiNF5fN6ine7C@ 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 literal 0 HcmV?d00001