From 8b555c412abf6294315b1a846abb5cbe5b5ed866 Mon Sep 17 00:00:00 2001 From: Doug Sillars Date: Tue, 22 Mar 2022 13:58:45 -0400 Subject: [PATCH 1/4] first draft dev post --- ...2022-03-03-loan-banking-using-conductor.md | 2 + ...icroservice-orchestration-important-now.md | 129 ++++++++++++++++++ blog/authors.yml | 6 + 3 files changed, 137 insertions(+) create mode 100644 blog/2022-03-24-Why-is-microservice-orchestration-important-now.md diff --git a/blog/2022-03-03-loan-banking-using-conductor.md b/blog/2022-03-03-loan-banking-using-conductor.md index d3b31dec..f2003055 100644 --- a/blog/2022-03-03-loan-banking-using-conductor.md +++ b/blog/2022-03-03-loan-banking-using-conductor.md @@ -22,6 +22,8 @@ Lending workflows can be very common and potential problem that can be solved by ![banking meme](./assets/lending_meme_Medium.png) + + #### Yes we are serious !!!! #### JP Morgan Chase and American Express are already using Conductor for their Banking needs !!!! diff --git a/blog/2022-03-24-Why-is-microservice-orchestration-important-now.md b/blog/2022-03-24-Why-is-microservice-orchestration-important-now.md new file mode 100644 index 00000000..076ba4ea --- /dev/null +++ b/blog/2022-03-24-Why-is-microservice-orchestration-important-now.md @@ -0,0 +1,129 @@ +--- +slug: why-is-microservice-orchestration-important-now +title: Why is Microservice Orchestration Important Now? +authors: azeez +tags: [Netflix Conductor, Orkes, microservices, 2022] +image: https://imgur.com/LDAaT9m.jpg +--- + + +# Why Is Microservice Orchestration Important Now? + +Microservices are a common and popular approach to building modular, scalable software with autonomous services. Large complex products are broken down into individual services responsible for a specific business function, such as user authentication or store checkout. + +A microservice-based application might require several services to interact with each other to complete a business scope. The coordination of these interactions is known as a workflow or a saga. There are two models for implementing a workflow: choreography and orchestration. With choreography, you let each part of the system inform the other of its job and let it work out the details, while with orchestration, you rely on a central brain to guide and drive the execution processes. + +As orchestrated systems have grown more expansive, the problem of efficiently orchestrating related business logics has become more pronounced. In this article, you will learn about the microservice orchestration workflow and its importance in relation to modern software architecture practices. + +## What is Microservice Orchestration? + +A microservice orchestration pattern involves a central orchestration service (the orchestrator) that typically contains the entire business workflow logic and issues commands to and awaits responses from worker microservices. Think of this as an orchestra where a central conductor is responsible for keeping the orchestra in sync and coordinating the members to produce a cohesive musical piece. Using orchestrators for your application is essential for efficiently managing applications based on microservices. + +Before going into the specifics of microservice orchestration, it is helpful to familiarize yourself with the components of microservice-based architecture. For example, in a microservice-based e-commerce application, the following could come into play during the process of purchasing a product: + +- a service for listing all products; + +- a service for adding products to the cart and reserving that product from the inventory; + +- a service for handling the payment; and + +- a service that manages the shipment of the item. + +Each of these microservices is autonomous. In other words, microservices can be individually scaled up or down without having to worry about the entire application. However, they are all required to interact with each other to fulfill the purchase. It might be tempting to have the services talk to each other directly as needed. However, as your architecture and the number of services grow, this can quickly get messy and difficult to maintain. This is where orchestration comes into play. + +A microservice orchestration workflow is an architectural method of coordinating microservices for software systems and applications, in which loosely coupled services receive commands from a central controller, referred to as the orchestrator. The orchestrator acts as a brain, driving the execution processes; it sends a call to each service and awaits a reply before proceeding. The concept of a microservice orchestration workflow can be best described through a hypothetical use case. + +![microservice orchestration workflow architecture diagram](https://i.imgur.com/hRwCweE.png) + +The architectural diagram of this hypothetical use case shows the interactions between the various services involved in the process when following an orchestration workflow. Looking at the diagram above: + +1. The orchestrator receives a trigger that initializes the workflow, starting with “Products Service.” + +2. When this service has created an order with the products in the customer's cart, it returns some response to the orchestrator. + +3. The orchestrator then calls the “Inventory Service” to reserve the products in the cart. + +4. Next, the orchestrator calls the “Payment Service” to handle the payment. + +5. After successful payment, the orchestrator moves on to the “Shipping Service,” which clears the products for shipment. + +In a choreography workflow, on the other hand, the microservices are not managed by a central service; however, they are all aware of the business goals and rely on certain events from other services that determine how they function. Each service publishes the actions it has taken to a message stream such as SQS or Kafka. Other services subscribe and listen for events they are interested in from these streams and take the appropriate actions. + +![choreography orchestration workflow architecture diagram](https://i.imgur.com/LLFZhep.png) + +In the choreography architecture above: + +1. The “Products Service” creates an order with the items in the customer's cart and publishes an "Order Created" event to a stream on the messaging platform. + +2. The “Inventory Service” and “Payment Service” consume from this message stream. The “Inventory Service” handles reserving the products in the cart, and the “Payment Service” handles the payment and publishes the “Payment Success” event. + +3. On receipt of an inventory “Payment Success” event, the “Shipping Service” goes ahead and clears the products that were reserved for shipment to the customer. + +## Why is Microservice Orchestration Important? + +Microservice architecture involves decomposing your application into a set of services to +improve agility and allow teams to scale. One of the main purposes of this architectural pattern is to have each service as an independently deployable component with well-defined interfaces; in this way, the scope of implemented changes can be limited to a single service. + +However, you must coordinate the execution of multiple microservices to deliver the outcomes that users want, and this is why microservice orchestration is important. Orchestration allows you to put a service in charge of the other services. The service in charge is aware of the entire flow that is required and is responsible for putting the other services to work to achieve those aims. + +Microservice orchestration enables you to process flows ranging from simple linear workflows to very complex dynamic workflows that run for multiple days with minimal effort and high visibility into the processes. To properly illustrate the benefits you can obtain with an orchestration workflow when managing your microservices, let’s take a look at a case study from Netflix. + +Netflix is an enterprise company that has shifted toward orchestration workflows. The streaming service had traditionally used the choreography method, which involves peer-to-peer tasks that are tightly coupled; this became harder to scale with growing business needs and associated increasing complexities like determining what remains for a movie setup to be complete and updating their SLAs. + +Later, [Netflix switched to an orchestration workflow](https://netflixtechblog.com/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40) and eventually built their own container orchestration engine—Conductor—which has helped orchestrate over 2.6 million process flows, from simple linear workflows to complex dynamic workflows over multiple days. + +### Why Are So Many Developers Adopting This Architectural Paradigm? + +As mentioned, there are two major techniques you can use if you need to execute many services to get your desired result. Orchestration, in which a central orchestrator component serves as the coordinator and is in charge of activating each service, and choreography, in which the services perform independently and are only loosely connected. + +Developers are increasingly adopting orchestration because it has significant benefits that can make development and management easier for individual microservices without compromising the big picture. However, it should be noted that microservice orchestration is not without its limitations. + +## Benefits and Limitations of Microservice Orchestration + +There are several benefits and challenges associated with the implementation of an orchestration workflow, many of which are related to how microservices interact with one another to achieve a business outcome. + +### Benefits of Microservice Orchestration + +**Central observability of process definition, status, and metrics:** The orchestration framework can capture detailed information about each executed process instance, which it can make available for analytics. This allows you to answer questions about specific instances (such as, “Where is my order?”), as well as analytical queries (such as, how many products were ordered). + +**Synchronous processes:** These provide a good way to control the process flow. For example, when a product’s service needs to successfully complete before the inventory service is processed. + +**Scalable orchestration on cloud-native platforms:** When you scale up these services, you scale with errors in mind. Microservice orchestration provides you with insights into your processes, helping you coordinate various transactions that involve a large number of independent services. + +**Single fail point:** Orchestration workflow allows you to easily trace out any error that occurs during the process flow, figure out why it failed, and debug. Writing tests for your microservices is important to help prevent errors from making it to the live service. + +### Limitations of Microservice Orchestration + +When orchestrating microservices in an enterprise environment, you’ll find that some business functions can require hundreds or even thousands of microservices. Since the orchestration workflow is synchronous, it's possible that such processes will take a long time to finish. + +Furthermore, as the orchestrator needs to communicate with each service and get a response before moving to the next, this makes services highly dependent upon each other. Failure at any point could cause the entire process to fail. While for some business processes this is required behavior, others might require the process to complete regardless; for instance, running analytics on an order that’s being processed shouldn’t prevent the checkout flow from being completed. + +## Who Can Benefit from Microservice Orchestration? + +With microservices gradually becoming the default pattern for managing business logics, a strong architecture is needed for their coordination. Adopting an orchestration workflow could improve the seamless interaction between these services. + +Many businesses still implement service-oriented architectures (SOAs) orchestrated by an enterprise service bus (ESB). However, as business needs grow, adding more business logics and microservices to the system can be challenging; the entire flow is not immediately visible, making it harder to alter a service without the risk of disrupting another. + +Microservice orchestration offers a solution here, as it helps you visualize the end-to-end processes across your microservices, so you know what services would be affected by your updates, allowing you to easily address your increasing business needs. + +More concretely, an orchestration workflow might be ideal for you if one or more of the following are critical for your business: + +- The ability to track and manage workflows from a single point. + +- A user interface to visualize process flows. + +- The ability to synchronously process all tasks. + +- The ability to efficiently scale to a high number of concurrently running process flows. + +- A queuing service abstracted from clients. + +- The requirement to operate services over HTTP or other transport layers such as gRPC. + +## Conclusion + +In this article, you learned about the importance of keeping your microservices autonomous and flexible. You also learned about the use of microservice orchestration to effectively communicate, visualize, identify, and resolve the challenges of managing microservices. + +The downside of the process of building an orchestration system that implements all of the features your business requires is that it’s rather complex and time consuming. A purpose-built framework offering scalable and low-overhead orchestration—such as [Azure’s Durable Functions](https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-overview?tabs=csharp), [Uber’s Cadence](https://github.com/uber/cadence), [Netflix’s Conductor](https://netflix.github.io/conductor/), or [Camunda’s Zeebe](https://docs.camunda.io/docs/components/zeebe/zeebe-overview/)—can be a solution. Frameworks like these, however, still require significant work to configure and deploy for production use. + +[Orkes](https://orkes.io/) is a platform that offers a fully managed, cloud-hosted version of Conductor with tiered support. Orkes builds on top of Netflix Conductor to abstract out installation, tuning, patching, and managing high-performing Conductor clusters. Learn more about Orkes and get started for free within minutes [here](https://orkes.io/cloud/). diff --git a/blog/authors.yml b/blog/authors.yml index 50c8bce8..e117f947 100644 --- a/blog/authors.yml +++ b/blog/authors.yml @@ -33,3 +33,9 @@ orkes: url: https://github.com/orkes-io image_url: /content/img/branding/orkes-logo-mark-purple-2x.png +azeez: + name: Azeez Lukman + title: Guest Author + url: https://portal.draft.dev/writers/recP8y6m73EvbhARg + image_url: https://pbs.twimg.com/profile_images/1219433030487547909/J1I2iYlM_400x400.jpg + From 14a13a6784a64ffe765051ae8584d1f8160524aa Mon Sep 17 00:00:00 2001 From: Doug Sillars Date: Wed, 23 Mar 2022 10:11:11 -0400 Subject: [PATCH 2/4] subworkflow improvements --- docs/codelab/orderfulfillment.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 docs/codelab/orderfulfillment.md diff --git a/docs/codelab/orderfulfillment.md b/docs/codelab/orderfulfillment.md new file mode 100644 index 00000000..73e50780 --- /dev/null +++ b/docs/codelab/orderfulfillment.md @@ -0,0 +1,20 @@ +# Order Fulfillment Codelab + +IN this codelab, we'll follow Bob (owner of the growing company Bob's Widgets), as he build s a workflow to ship his widgets to customers around the USA. + +Bob's Widgets has just moved out of Bob's garage, and he's excited to unveil online ordering and building an automated workflow to efficiently get the orders out to his growing customer base. + +Bob has heard of Netflix Conductor, and has read bout the flexibility of a microservice-based architecture, and hes keen to give that a shot - since he knows that the initial workflow will be really simple (these widgets don't ship themselves, you know!), but will quickly grow in complexity as the company grows. + +In this codelab, we'll follow Bob as be builds out a Conductor workflow to handle his shipping. + +## A simple order Fulfillment workflow + +Bob's in a bind. The business is taking off, and he needs to get orders shipped, and that leaves him just a little bit of time to build the workflow, but he knows he can take on small pieces at a time. + +He has a warehouse full of widgets, and he's built a Java shipping application that prints a label for one widget box. Let's look at this application, and then figure out a workflow for Bob's order fulfillment. + +## The Shipping workflow + +Bob's application is completely integrated with his shipping partner + From 7dc72216bcc47204c2a67e251ac0e74c37145673 Mon Sep 17 00:00:00 2001 From: Doug Sillars Date: Wed, 23 Mar 2022 10:12:18 -0400 Subject: [PATCH 3/4] subworkflow improvements --- docs/reference-docs/sub-workflow-task.md | 209 +++++++++++++---------- 1 file changed, 117 insertions(+), 92 deletions(-) diff --git a/docs/reference-docs/sub-workflow-task.md b/docs/reference-docs/sub-workflow-task.md index 152502ac..41f9298d 100644 --- a/docs/reference-docs/sub-workflow-task.md +++ b/docs/reference-docs/sub-workflow-task.md @@ -43,108 +43,133 @@ Sub Workflow task is defined directly inside the workflow with `"SUB_WORKFLOW"`. ### Examples -Suppose in a workflow, we have to run another workflow. Consider the example that we took -in Dynamic Task. Let's extend that example. Suppose in an E-Commerce website user places -the order we have to take the decision based on the inputs to ship the product via a -courier service. We can run another workflow inside our workflow which we already -created in `Dynamic Task`. -Following task `order_details` fetches data about the order. +Imagine we have a workflow that has a fork in it.. In the example below, we inputting one image, but using a fork to create 2 images simultaneously: -```json -{ - "name": "order_details", - "retryCount": 1, - "timeoutSeconds": 600, - "pollTimeoutSeconds": 1200, - "timeoutPolicy": "TIME_OUT_WF", - "retryLogic": "FIXED", - "retryDelaySeconds": 300, - "responseTimeoutSeconds": 300, - "concurrentExecLimit": 100, - "rateLimitFrequencyInSeconds": 60, - "ownerEmail":"abc@example.com", - "rateLimitPerFrequency": 1 -} -``` +![](img/workflow_fork.png) -Now we will be nesting the workflow named `Shipping_Flow` (defined inside Dynamic Task section) -inside our new Workflow by following definition - +The left fork will create a JPG, and the right fork a WEBP image. Maintaining this workflow might be difficult, as changes made to one side of the fork do not automatically propagate the other. Rather than using 2 tasks, we can define a ```image_convert_resize``` workflow that we can call for both forks as a subworkflow: ```json -{ - "name": "E_Commerce_Website_Example", - "description": "E_Commerce_Website_Example", - "version": 1, - "tasks": [ - { - "name": "order_details", - "taskReferenceName": "order_details", - "inputParameters": { - }, - "type": "SIMPLE" - }, - { - "name": "Shipping_Flow", - "taskReferenceName": "Shipping_Flow", - "type": "SUB_WORKFLOW", - "inputParameters": { - "subWorkflowParam": { - "name": "Shipping_Flow", - "version": 1, - "taskToDomain": { - "*": "mydomain" - }, - "workflowDefinition": { - "name": "Shipping_Flow", - "description": "Ships smartly on the basis of Shipping info", - "version": 1, - "tasks": [ - { - "name": "shipping_info", - "taskReferenceName": "shipping_info", - "inputParameters": { - }, - "type": "SIMPLE" - }, - { - "name": "shipping_task", - "taskReferenceName": "shipping_task", - "inputParameters": { - "taskToExecute": "${shipping_info.output.shipping_service}" - }, - "type": "DYNAMIC", - "dynamicTaskNameParam": "taskToExecute" - } - - ], - "restartable": true, - "ownerEmail":"abc@example.com", - "workflowStatusListenerEnabled": true, - "schemaVersion": 2 - } - } - } - } - - ], - "restartable": true, - "ownerEmail":"abc@example.com", - "workflowStatusListenerEnabled": true, - "schemaVersion": 2 + +{{ + "name": "image_convert_resize_subworkflow1", + "description": "Image Processing Workflow", + "version": 1, + "tasks": [{ + "name": "image_convert_resize_multipleformat_fork", + "taskReferenceName": "image_convert_resize_multipleformat_ref", + "inputParameters": {}, + "type": "FORK_JOIN", + "decisionCases": {}, + "defaultCase": [], + "forkTasks": [ + [{ + "name": "image_convert_resize_sub", + "taskReferenceName": "subworkflow_jpg_ref", + "inputParameters": { + "fileLocation": "${workflow.input.fileLocation}", + "recipeParameters": { + "outputSize": { + "width": "${workflow.input.recipeParameters.outputSize.width}", + "height": "${workflow.input.recipeParameters.outputSize.height}" + }, + "outputFormat": "jpg" + } + }, + "type": "SUB_WORKFLOW", + "subWorkflowParam": { + "name": "image_convert_resize", + "version": 1 + } + }], + [{ + "name": "image_convert_resize_sub", + "taskReferenceName": "subworkflow_webp_ref", + "inputParameters": { + "fileLocation": "${workflow.input.fileLocation}", + "recipeParameters": { + "outputSize": { + "width": "${workflow.input.recipeParameters.outputSize.width}", + "height": "${workflow.input.recipeParameters.outputSize.height}" + }, + "outputFormat": "webp" + } + }, + "type": "SUB_WORKFLOW", + "subWorkflowParam": { + "name": "image_convert_resize", + "version": 1 + } + } + + ] + ] + }, + { + "name": "image_convert_resize_multipleformat_join", + "taskReferenceName": "image_convert_resize_multipleformat_join_ref", + "inputParameters": {}, + "type": "JOIN", + "decisionCases": {}, + "defaultCase": [], + "forkTasks": [], + "startDelay": 0, + "joinOn": [ + "subworkflow_jpg_ref", + "upload_toS3_webp_ref" + ], + "optional": false, + "defaultExclusiveJoinTask": [], + "asyncComplete": false, + "loopOver": [] + } + ], + "inputParameters": [], + "outputParameters": { + "fileLocationJpg": "${subworkflow_jpg_ref.output.fileLocation}", + "fileLocationWebp": "${subworkflow_webp_ref.output.fileLocation}" + }, + "schemaVersion": 2, + "restartable": true, + "workflowStatusListenerEnabled": true, + "ownerEmail": "devrel@orkes.io", + "timeoutPolicy": "ALERT_ONLY", + "timeoutSeconds": 0, + "variables": {}, + "inputTemplate": {} } ``` -Workflow is the created as shown in the below diagram. +Now our diagram will appear as: +![workflow with 2 subworkflows](../img/subworkflow_diagram.png) -![Conductor UI - Workflow Diagram](/img/tutorial/SubWorkflow.png) -We can see in the above diagram that Workflow named `Shipping_Flow` gets nested inside -the workflow we just created. Hence, in scenarios where we need to nest a workflow inside -another workflow `Set Workflow` task can be used. +The inputs to both sides of the workflow are identical before and after - but we've abstracted the tasks into the subworkflow. nay change to the subworkflow will automatically occur in bth sides of the fork. -We can create workers as we did in `Dynamic Task` section and for running this workflow. +Looking at the subworkflow (the WEBP version): -After execution workflow looks like. +``` +{ + "name": "image_convert_resize_sub", + "taskReferenceName": "subworkflow_webp_ref", + "inputParameters": { + "fileLocation": "${workflow.input.fileLocation}", + "recipeParameters": { + "outputSize": { + "width": "${workflow.input.recipeParameters.outputSize.width}", + "height": "${workflow.input.recipeParameters.outputSize.height}" + }, + "outputFormat": "webp" + } + }, + "type": "SUB_WORKFLOW", + "subWorkflowParam": { + "name": "image_convert_resize", + "version": 1 + } + } +``` -![Conductor UI - Workflow Diagram](/img/tutorial/Sub_Workflow_Run.png) +The ```subWorkflowParam``` tells conductor which workflow to call. The task is marked as completed upon the completion of the spawned workflow. +If the sub-workflow is terminated or fails the task is marked as failure and retried if configured. \ No newline at end of file From a1f55ae96838a04aa759022fe389d032f6e50c3d Mon Sep 17 00:00:00 2001 From: Doug Sillars Date: Wed, 23 Mar 2022 10:19:56 -0400 Subject: [PATCH 4/4] subworkflow improvements --- docs/reference-docs/sub-workflow-task.md | 4 ++-- static/img/subworkflow_diagram.png | Bin 0 -> 56222 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 static/img/subworkflow_diagram.png diff --git a/docs/reference-docs/sub-workflow-task.md b/docs/reference-docs/sub-workflow-task.md index 41f9298d..f84da59c 100644 --- a/docs/reference-docs/sub-workflow-task.md +++ b/docs/reference-docs/sub-workflow-task.md @@ -46,7 +46,7 @@ Sub Workflow task is defined directly inside the workflow with `"SUB_WORKFLOW"`. Imagine we have a workflow that has a fork in it.. In the example below, we inputting one image, but using a fork to create 2 images simultaneously: -![](img/workflow_fork.png) +![](/img/workflow_fork.png) The left fork will create a JPG, and the right fork a WEBP image. Maintaining this workflow might be difficult, as changes made to one side of the fork do not automatically propagate the other. Rather than using 2 tasks, we can define a ```image_convert_resize``` workflow that we can call for both forks as a subworkflow: @@ -142,7 +142,7 @@ The left fork will create a JPG, and the right fork a WEBP image. Maintaining th ``` Now our diagram will appear as: -![workflow with 2 subworkflows](../img/subworkflow_diagram.png) +![workflow with 2 subworkflows](/img/subworkflow_diagram.png) The inputs to both sides of the workflow are identical before and after - but we've abstracted the tasks into the subworkflow. nay change to the subworkflow will automatically occur in bth sides of the fork. diff --git a/static/img/subworkflow_diagram.png b/static/img/subworkflow_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0e51a10945405445f744572dae10f3ec2e9a86c3 GIT binary patch literal 56222 zcmeFZWmHw&8b68%(kLyBAdRGebc1wCcQ;6HQb4+tkdj7_?(XhVy1Tn!6L)RUbKZ0A zxF7Dg|1s{D<5&#$UTe)c*E65`J+XF>oQxO>A|4_X6cmd1dtn7AsHY$(C}>vrXTTW? zLKY_|D8wN%At5<&At4euI~!v&OCu<#_dzkSaB@*o*q;vWv)R=*6$EX39H8GL@O(O@ zr+J0&I{GDsPoS2XW=jPLsgIFBZ0_PVVz>GWBy8*_NL1U;)RaaYOGs#Fz)vHJ>ul!T zP6qpXZr4|5758Vk>^-5Vc-TvCuNe!A?WpgcCzPrP>PVrI#A z9ZB%CAzz@;zR7&tMs7-6UNsY4$@WMmtw$S&hLSZd5zc}7B8|rNCNU|v{S_RE<(tJr zSojT+-NE&eckopt+IQ5~TPMun5?cHcz$$P8-~gy%!mjDyyXC4OZXIT6KDhotm{ z1ShRodP;TEh5RP-U3afHa{BsOP?=9<@qjgULU!CO>yqL2IKH$&t^OyJ+ChHJbq#c< zrqsvp`D~~YUCx7)>gx>s$B}F3#-Dp`YH;tE>)vrGRI(%0e7ARNGc<|oL_|(BdV#Y0 z=?y##YBMeg``eJjDAuvh7j{cDXnZlTA_gQ3VUh-jlgcM%mE)C_P*M#u@p*@pUe`Q= zxtAOo+DuS|O=OE~CP8A7XumR$@P#YIf#=T=3W`~=7B4WAEV(JcDqIbw@UFdPePOVWJ^%=3#=j1$Sdb=97KQ8R2M1)2|t)G zFzQdO{1MYgeeZ-EoME8 zjGsz#jV)0BH znp5LYM^F*3{WL7@@uuQc^O{iS^^R2K5u)Fh0Y>q5v z@Mp}9sHSJFiu6jnS+hU5bJH{Ri_kM7GZYH#ltprb6h7 zRN@JR4Zo&DN$@Wct?i@_GY$(#FqO6+upNj=fMaE_ zX#AedJ>*E_rrlDHak6jGqQ0(DeRkgGtN^4{+=ahFwAWFqg=9Fp65*i6i<-0pLXp0=f)t<@;i!K(c6G$!cS`j zf(1$h>RNuL6)ussvHG9+UxdMnI*=ugXlI~id^EsVQC)e{InX&IH7XrPQA2S?@mz{J ziztg$idNbtQEy<=c*_{Bzji>+9?m`)RC6VbG}$`hWAm{&-GtY;@x;C5ruWL@o1vt? zQKeDCT53%0hvG4cJmWkSBxIb|bdwdS1}!QUa68C5WaCfSB-p&!5-ruO<|h+oO0D{= zY-Z$lZ+6FLDkd8$tBNwZ*GnVeRbt&IYae3D>HtRQDSXME6?v821d1 zK6m1)E%1-)F>u&5*JaVU4N@}<4D2rArhz%jRKNPVX{zGlbhD(uYHD|CX=+!?dQ1A^ zxX598vq&8d4?Ghh+UK_cK61vJ`@;cx6neC+o~T{^0e-Ood_l!Qsu&|^;$fQDYB*QC zy|m_Hqx|J&<*#dbM0qKgve=Bd$0;kRl<}%atgU9lTn1b`-6f&vUs0sd=vkH=Ec1i} zU=X68U>wjhsYRBpPAd%jz?B@LkJ9N>cVb3}!c0_(J&nie%{2@oXNkI?j3{lGa+_j! zm;7CS5Pl*|qunE6`I|!YG2Pf3N9S$$AzzhNx1Njj*dv{6*i1qReA(yHMKUSEl>2)6){~&9BYv-jJrahoN*C=W;(8=m+fonlKF0d0hQBlOM zno{NI;(PC(5Y`^Hh3_?G*pOrTyKbN)QRAfigl!eYW944jqfxVws>vo~=bO+%defTM zOvRY>PGf-%(mU7*qyi*KL_Qk>o4UKC0p}kJ($=z5^A&9$yIPValYEk#ok6>~)CzRH zZ}6rYOq~^(3aV2t=aP-w3S%Z?38p1yX{Tu4pwL@QnN-_sG!7ZnmvXIXuZ4jt&TZ!S zJU`i|UZifc_zO)3AU^lFPQLf>^79f={PEGKM{jp&w@o&@onY(I`%cIz#`uHYSgg4~ zML9+Kxx>`Q=9BuGX+`3!{4+ot` zokpSX;og?tW1cAqV2qaMnw7^-&{+l9Y;h2})HaM&oQ)0vJ~(BBOVLw#Z8zM$-5#_- zF|?6PY=KePQ2)hM@27_vxVfV`q>8~$XSyD*ZMXhixY4#-RN(V0Is&l$sj)|QSx211G1+-Q1RW`E-HNWlIudTgw z^i#@He&6qEcQ#C1lpV+-Te^G#$sNiq>GhBmh{ZG|+)h(DMkf=V;_kW=T)F55@|-TS zAK9b?oFvO7M{|#PsDt~@r{d9?zV2^?q&#nW(HQ3ve_ywJ0M?0byxw{~#K$SNA{w9* zqAlAvb*{W(b;bpD-ZRiMh?qBNOnJ$0nR=AAPIhb1l|3mdOR4PH=|O+1fBxglVt4{B zDn2So@LM1&4`S*IKSc#77sastjw2|!x+f&`$?`*U) zf2zzNu)1k3XRayP-LXs9gb1$ygsW_% zDsC(-4MhWdhKG6*U;Q@aD7>@LZf&>0X2mXXpq5oce3QB$Y_cJsr^aXAyC{doWMsb zBL_Va7b{C^drlV~(uX@ZfzOcB45TCvw>Vhvkg7_{kqFt?8IiEjGtx7X@* z8gnWLi~bo7eB&WCb#SodWMFW1cBXe`p|`O!VPN9m;9y{6W?*K11Kjb(9%SvH=kmtd zp6qdwzw-zi*&EoI**cinSd&2J)zi0ebl@Q+g)H>1e~-^;o=Ja%L_@mTJOgR>1ZEYw)tNv2s7$|9`vk?-l-@W7b=g5Ct z`R|b*?2YV%Y^;DK9eDrEnLmU7dGXIcZUzYD|JaGgZGJcl>@zPSH^aYp#*6qwf3FS- ziXTc`SU}0;$!-!{wNk~nKTa?yNnoG@mN1Nf2rQN`8os^=X0hHu!^DEmntD-#j@yA2 zX8XJxW^w8#s*Yz0mY;$Z?oQU{L&3;ygXKK88bkJj{kus?#}r&W63UV4QP~4(`u9<; zXWQT+qob>f1+S@AKO{0)$-U_ctD3cM5wkiVDri!Y|2U@5e?O--^ zgy0wvez*~A(QukFDm#}X3j75B9|u1@d~`)593v+49rhb_rL(GGk1V9)CeQaZlCg=i zA^&;zY6|}pEr=*b<@_6+ntlilL*casFr*#$rg;`XdpB09UXgn@p`K;_toU0Ztfq0i zQLd+oR`h?Y2u#V3@Z#r7@}Uh_#6*?L8&;3thh;E{y%`!W`ze%er4!!HQ^?-+HiFOb zH9%{fk_Fh7hi$#aW3`v-6x*2 zRkF%?*PW@ty8UJ2y-1$e2ynaA=5X5iuKmzd@EQK({?qe{0axqzh*T{9KcXcp!7rhm z`ED)#;X6MmbpJHZ&Enj6iGdjYJKIks^M$HLlf`=Hn;8*mWyWtT4?Lb%I&v1M{8~%k7nC2Kpy#>M#esXk|)wH_3JMeyS8!A`-GZZ|fNOgx)l0+ZTh30Us#_|gVe~P;U2#WKof`K znN4UqmYmI{6%o32ziQDSzrPJ2_AIt2tQp_Vmm8AdTqCd;PSxwl7DsrLS}H#1zG$7u zXwnBM_7+5YdEKh$wDjfo-p`D1Ixg7fS#LBd%V~@1TN7BV^s`g!GNt2hKBURfYW@-X z_wNC&2)?a-^|&*r-T}n*eMDZTymi;xc~*&5mEs#Ck@jx0AG_33_P~?z*~Atpp3JqY z%SG^yW+0j!pkghlNg@fdHLHHjJkE3a2lcn+V{{WSA|7uAqZ!Zhr{Av!lA%`F5Aybi zdYyVkYxgnyS-(5@Q*?d);g;Sb0pR_bG0_Mjvsi7{96S-~ z>JPw*aUxfKkcLzjgw5uZ6&8+y_}v+Z<| zkX;>|B%@eOC*OiOy(CQ-GCq+jIPUw-ujUjlnHZTbF%=$lhZb!+S=0O|kzq6!$ zt7!J!Qg}UfQ+-h@`xtm8jE9mxeB4s;d7L0P1bF`C-sc?;Mnl4r{;0@QD>9rr3V3JXn9CF&n#P!HjK4=tUSA3bC)a&9e5WL?e^X1{>*d68_& zUV+6#;aY4pLFVRR+w-y@4BjHn*LP2h#lFvZ z<)jo|%hfqqaUC{4-E9FMygx$V!1!YcO#vE1{4*XbqjxFA;bxoj%wh{zy}|XYmorJ8 zGTir9;#;+jPbI}7kE!)XQD_aC@ZyiWZvzdVK=CY zxL70v8;gw;QR`6%^?{Z0;_{URArDN#0zJfg@)PA{v6%7m9qJifUlhx|3a;t0A#Mu1 zziN*Iu|7U(-VfHt4E-g`^;7UwHph6C&B8A!{;%z|UiY4Cr&p9Aui1hhjVFH%1|TQ< z9QmgZL(Gp27rJ7<-*J4WUt`nFE7mjC-k8$ zjreiR7cXx|z?D4|iHM@@FtyGH)+=3JdVB-%ge61AG7rS?!`!_hAwM9-zNUEK>>(dC zam4K~;Dm*a0^^zii>%Y(n2}on${;&eoB!kLn)!fLZrcPG9(UwUOn26VSRw}^2508~QD?dYEKjTEooz<(=Dbp5{+rWPhk z`gVF;v&?FXBDLEwEgy|?|}fe8y)n^K305`Uk8N#xH}K|{4VhA#e!9DG&R!~LN2FrqgXArb1q^X zz#PLF{y7xX-Bk6v(?^Xid-$YXWl>=FTK5n#IY(V|I5h*|Emu=_f zVSjHO%~9NI$B+%}SjovwE(Kg`yXVGAAK;Gko#z~5k<15JC&~fQdK0Oe$fh-xB@-2i zgCGTZRLEk?C-D~ae!@5pGHi!%BhTtqsoRoLdE85@LjRdNvtB+!6u@|VYp-6zKDsZt zAegsNDnT`cZy~;k9~$~(eZaAclCDh3x)aJ|DA`KK>$XBVnR^O8!)m6o5&&^(E1h8m zOxHU_O_sZpCFcX|V-xuvrz2v@McO>Qbh-+wI-7sMn zu?%tluADN)_oCgCb(*{>lPLL%)B(v^HU7zl!xWS9$afCPV%wz!Cl zM9Q?}eaKTDLqoCX9KTJ2n)kSva~k5g$V}ojo|bvH^w}Iy+t&UYvFBw=IM@C=@K(0% z@AuK_(PBl5KM1{%i9a!wMWFw+VzAzu8poRL3Z9S7IhyW?@xHd#?V0LL05YyV08Zk; zx9f>E(;YZEyN%C@d1q0%5BW`MK^sZVoc7{;ZUMgd*3~WX7R6IP z?210qiR|xeBOw^>kE;TS|gvA)a%KN9Pq+7Juqj6nPKN$5dD$rEi zj@$XVeD^o@nM+PUTvqVWV1UqK-iO7RAn)*UB?3Qq5deO_5HEnowXHLd`TlMsK3=~x zC}$m8!}9AlzAL92AVO5l5WOeB|9WtU^@vsYK^VhQ+Mtah1xm<5W*CdAPX;5A5(KmM z#Jitf)*Up0Yx&rO^z5TIlHKT?&S!CS-1T%kuYRyBA%om=B)?~Ob<%1N@`5dQ04yZs zU4M7Ivv;+Ta#0nsZEuXV0GI*n58p9yA7tG7_*H6r{c(@vj|b;M`f9jdL^6@r!}Yc2 z5<(Y2u_U>dXRNd_@)Sx`5*r80Ad<-{D2N>=iPtxe$xn-YK5=3p^iZ*&;h_$P7);<~p{IJgp^2a#A4NOjy{ z%}wHpwaT6BU#s0I3?X!Ew$uVZZ|-V{EuDU_GY^Wg4f=^J?r5Z_4`HD=a1k2U_=PHj?k`c2DY0 z2FsG1=co3Xx1=e3xonf|dZ{bH`*j*^{wM}RsqP<}T>*EmKf!$KlMb3Pisew03-{s2 zT^ma2iVbS&H>}K2IE<_Lhs7OD;IKllhB*ISi8IT0mBZ|^!Ald4&}ki?Q;yr(;B z0FdI!rmL`?<6IMJ0ldeq6fXuLDKFr$*nM%ho4L2E4X}etx3C7KZoD?r0xYjXIhK^LsNBbK-mRUav&(Oi|*yl)~^`D-VcC3{e8x4brFQw z@4$V1`g2SO%Zh3}3vpF(#AQK~JJip%k;AFe1AsQ)a32!Qoq zQhZE=2e8Krt#LkIxLtg#GFRi!fm8P@WCQ|c0QitrVLFw2N?P>tPgINvJRW(BR&f3U z7K`Bjoi&hWoa8!Ftk-seV~QI9(`8lpyD-7%dxt~<w8#FlRh$Zl zh9LIuzk(v~fjp-v%Sl^uxAQ3z$+xh6Vdrhn`OKd_L#dpuu)z6$3XANa-S$0Fc@CR> z&%21d4EM!hd9S7|il%m_%JT2`-9G4U#~40}f*=|Y=};Xbsz5j<5!mdHZ>6tQXJroH zMQ4PL+G2UFa?`JK_Cq|C2c7}{2*Z{kq*c>BhUGvQ1}1jNL?Pzw?+nF_iig8GAGNx# znH%39?qPI}`3r=3fncPM(#r24D?~1pDjxM=Z@4X@EYYTB44Xk)vz5BXV|2mm-UI*W z*p};Zc*Tx5PVjFO{SFX}Vl`7}1Yk2EeK9Q04G2gB;KxY#yKO@u zrhlRDM#!S@q|2rB^! zPinPx+oOgmCFvVRv!oN1Td9NSw`KWmLm^t=)SI&*vXSGC{wIb;1_t**B@jItMaG%J zA(`=}`(&pUSe)s6wK5vKo+?D>}-V0;k9 zyT#ND%Z$RrX*H81D+oh^vMCxipX0Oj(>LAN;oB|6bb25CMU7O?AS(L`2NUjLt3E=* z5xJM2&AMA~?Un!D15g~*(P$?2Z5NT-taaTUTis=(1thzt;P$@oFD!o!f#pw1eIUH{ zmLMq}TJ*JQPHl1eB~FP;5xPdlKJOBRg3mik-*6+kQz|fFCzJc@G1ipxfiaKO{f=ey zD9xng#V7P`sz5q(HzAL{l3Foq`c(jdW+u}BojTvmp|6(xfTMEuAfnUShbnd7XDBQu z?`8i4r2MD|e@wsEKTUrieF@aXYq`R@o`i+AiR?J@kEbG@IIiq9U)}~NcdR-aaHsAf*0S6 z%Sza9P<^WPl;+wzc)x_aWedAlz;fZ5Aqd6`^(JQ8(0WS3`YgN?j@m#*x88vIj|IP6HFPC&6TnZ^~eVn7% z4+&=)BZ5y?mhY;#pvef9M8J3?UF5tKiD42j8#ZU#MW%HJC9-2BFB(Ef zt%E;5DDWrvOd&w#ILlWbbBiSC&`8*HK=RzHHEu3Xr>W5j5S7Zaag7-uxFQI;-*REr zYlU&E*zOKMV~8jYC*+z6=Q^;SbF=&!j$`+rZUB`ckW7KRQ2;3!ME_#M78`)P{)7&` zwY$?!Wy#s*$lSnwh2<2p31ep%zDb6thbe%w%OL?no>zcko!zrN6Mv$zt1ObFZLinJT>ZsF^C z_Tv<@q)Lh!uX{TqQgl~3J&aNC3k|jE9IK?+_RR1d=icrzY5h&QM3Mt8*|1Co4F{qF z#}tPh8!5`vMk|)TVpptsSH;f(aHYP|nWqY*Nb`8{RjAET3bY$)D{qebGz!!!LRlT- zyaxeu zW<31e@#oJMjzWI`UvK=U@zogneHtr>6v_F+$h_O4vsh^K2&0A+y$M|ozp~bjNdK9i zN(BHty{slN^pF!&iqQFG7E`4atfs>xZ~gk0Q3%R)HhKP}=^>B?Fz)DfYGx04M`kj) z-6o z-E;33001)gE0K#s=%MlEzp>O#WV0&AE<$J4epvSj+IvX#Ktb5<(T2+9!^90(%+*$e z%+uuMrxUVC_d@oprA6?$$h3(DZlm`KpJe2@dd$%dXhDm&w+r>F-azb^S5Zf6cfW zn(3&ik=x-{oYLcrFVFil%f6gqRsNBMKdAZ>ys#AT;O+ct4<*lkodrH%Mgmj|{!*Fz zuW3nNKng5qPh*__`-0qifN_Z8I(mORJdn43JowuIPa}e?^tV9q?+dR05Jvmj!|%U5 z4dCYh=ZV842YLuC{<)CfYk*t-FA3q7rv(8O$ghBCR(^5Etb{idPIcOw9?w%@0Gcmi zSX>)5iOc~(EC2)_l1R>q&ZMgTfp451h!$Hhp*^!^0ANaVj=aeoppIJ#VSIV?zo1{8?cldbYBENq*x2&6Dxnq za24F3$BG8Kp6{9g@uNz>Ldofbgb zc|Xh0BMSna!L4yL zd0R>L{>yhKT*PN4s?{+rR`<6TRlw6uS=S$la&2Ws5%>V9rWqNIHB7Fh<T#;v+Pm zGLs=lN`D~P<9w=g2!@=I$=er|vzrLCie~XEQ(Rw6#AO4>!Bha1jwv88RR3H;>mDul zq7c~gAEXL&vp_P;5;$M0s9QN>&4tfm+^_KQO$AcF{t-PPX!Wa_m-KB&6j#g6--;2*ITN^Urdbc$w)nu(V^%P5_-N_R=Xy|=AWJgUcFZ?ME8NDD+J%&Q zh_m(^?iZ7A?pLo^wthzNFYR&$>Jj8lZ7A%j_jk8R6*A0T5?7vk`e8SaDtjo)Al3LL zwKj;f7^nbEt6LPTi8dZ%8oq9EznF7&0xBzF%PJhMrJZ;dlZdqW#Y(?|{qT(w0DAIx zZVuZjU5=K2EUN|M0CrUEg5Kk(14m7)NhknyFaiLA3!axt0r|ImKj7eq-HY@1v;khJ zGMek?Q_)<9OvfJg-|5@vNaWl}ReTnnYRtqlW_B)LiR)-QY(>Ie*bgJ(nTE7=bP?D~ zsSRyn?MV^EPZVl#0d~@;!acKXAzcK?IqXa(-;I>aw-uf{qrY0qIR5Z;q&&XUrgLmg4%Cg#@nCZn~pa&(@ObV^#pxv^I*#l8ZE^rb{$;remy zO*;7u#>&GiXL?8Yg-Kk_PHW7nsD~LqoVCw+B=b7D3y6`18k+K>LW=NR#5}GxJSe5D zrpv`wwOV(0r9DxS8GbjSBJjR<2l2UAx47N8rC%&8JO{rnXy4*R zhjf%~;~R<1&~vR>&2WBBo^;JJcacXhjdMKAa%?5xUTf?7nzn9lrpkGb-MS&Ag_o`j zq^fRJ+CzZ=?&j9mRw!oyeQLNppVg{we}|GBmtY2gFNObB+^XH7RUX3AYRPw<(Ft=lj2IXMsR^Z?|lya!gs{ z&G}|1F3axeZ&@Al&pu{bPf_2IWYvGIEHUWftm>C>St2Jv$&5hdA(Uf)6e5z`k9$O4 za(e;UgTFv-DMGXPP0%}<|)T5-4D0))*2S^MBP{Km_h@0^ag zgm&Gp_KB`8$5eD`&gAAx*!O&&oR4kw0`;@4XwF_ZP=Jp&^`Quk)@r>3>jIU{q0uSj z(@?&L|vU;hMH@qCsVpa&%*A801o$JHq;DY%%O3xl~==vkR_nkkq@ z&W~7V_I?T}ZV#H^!T!QkVs`1Gt{Ropz5#bkOGPV0vwpT~hEJEpF-zBUz4yFY!{Is` zRn#IAjX#!n9rnu)M|*RgjQClK+kQ=U9+Fviy%bPG)&c`fI&EMt;f+5#2fCFXg(MOoE&4V1%!dHQ075BQ8z z^#sLY7`LE)Fe}Q4#a~{!BVXs7uMy*Il{0L8^QvH2pI=e}!y@%l0E-N64U7tzcSqS|)~+7&=(r_^TWn;8{>7 zxO%1_h|;1Ho}TJfRB@y+a!IN4*|jEyqANPXO>6wh1U7?zU};MLWk>w zAsUGWwA`+5_A(NC!3>2rW!o7Olk+#El!DKlx)PKbWiw-07PiC9ceNT-SQhe2Y|58o z$Ni@*1_Cl*4sXq?%=)P!Cc_~cRpPeA9Lf{dieoG&N4oiTctosbLrZYW;O$G;XXJ^U z{x@PJi?@M-oAqVNUyn7jWeB^_y+ArqJwVaQMjO{?_}Pz0Z%5wkXl+Mm+?%IT+ctY`F&foS>^Swb zH&vOJ`=^PGS6^@(6 zarC8pc3b~65u(-2Zh(FCDsjdk6~->Ia5h1U4rjOn9d3g@oDk+)#J7ZaoJyXQ9Gsnu zX(#Wy`Xj2rx?3*4^v;qD+2T`Ax&ujMGnU(CoG>O z+J=Zm&?r5NbH(3>$VNDKeS%r1c2M`YX3^Wcm0XLO;^MsZWI+=Zl}Fy3EoB6)c7GjA zv}wHRjPZ)5K88Q(u=I1^cn<695ZRT3=4(%o5(%jL-6=4efg)ZX#p|6SF=Pypr*y|68 z44#Q|-)0F_XAibZK(if5XakNP+(Y^FEwbP+LKbR}N~W*1@4~IWbo82%$eyGN7`jQS zw`n?d6bxHl<7wN~lu^%sY+ady*PeBc&i8(&uVNa<-b#|GilJwFNNT>w&RoY`ZJmWq zYwI-3#VhVs#Pt3Kyh?v_Ks>QU33eiNDbj3YPz*+BdEHBE*PenC;Qx70`jGQt6B&l( z3nIE-2dzuBK>hLRM1pNtIJzJu9hJjztJ7^ePZDv_;+2V9_aR@D)ucSZ<|q^C{>tVp zIf_HG{NW2@l&#ZrTM+C}U56675pvVA-=!;Tgj;3=E+r?I=Ntx$pTnr!wvP|`z=`MU z6jY)irZ+?jIcH?#M;1%(15|8%JjHI4>Mszbh7TN$2b_1~Ymf>%4A!G@Qyo5^Y3^Qk zg^Cq(8@Dnh*)AOd{zk>E-PxzD@b{Lkf6;I&7miL=97t%nPsv^LchAbD$*s-2Nb8c; z>00xG!J=;qmX68gjyvSrwreQT8N zFK-SJlb?sU#)rwO25jPMdofIbBYe725r?ue7MGeBs#*ldiLKLRD;Vy{F%}vP)$hg{ zGv^r&&k$J-TkfErs@HD>Vb&Ly=AV;?N-SHL>)dg9%hBygs@BDaG@|(?HzvK;up>2Mr2Wd17zeAX-sEQWl0fqG_)dfB*3 z5uqUTm|Vs_Axbz{ws;pjwLiR;%>@7X0;Dha20 z*SEFO{GK;UQ^5O);0o66w1Bt1mgTO?tl!~EvnTu0#mhq2q=2v&@1c)U4W zfP5NZx?k9l-yNh3MwfkkWmCbh)JKRo*7$j>t!5J+Eqq~>97IjcgX6b_fcXU@qov<{ z1ULPcVG?3Sz3Iu(PLABZoZU-M_yPrY^^;&()OGZJcRfK|28UWX#$O+f>w^f&40_rl z*1-dBm*?!09E@o~2g~%}%0N^gcVB#!}>o zKA8W2uckZLhezK3gvq-dlQsTJtb^uOap^v(w!~LGcRafzu6#{{#ulAY8Fx<5cdGrK zc?PMR&CgdilB=@O6SzlRn3x^G6>g(yZ`JehJ6AaupfiNIwp!uDP1styynq%|>jDNA zkb{pRmg);)or}zC&8&Tz8jqgJn>>%JgGGil{1dBu2UXg31Y z+7%3v_OzAf9aRPL=M3?S;?9S*W(pl{KbE7pMNe_p^qr-Rb?O-fiFH8N9oHIG6)}p> z8Z>x)x#X{Rs8}8H580EZIPcvjDUH9}kSFBmjzg`X84WX#c384_&f#tesdeNtD!xL- z7OK62ZDpXw?FH7W5pYpeB0Hz?-+v&x&+4QN=KyJIf7-8>rC~x z#bNObH|DTdgrcc?D;E%cb;Zj*ld+@jC+SLzVxAe~N48itkCZxoH_s>48o#uDi-;j5 z9yeu_^;XA61lj^e6$yvVx&IrEU{3~WdN{eP&yhEr`wJb}8e-}j1Kq8#+yVU?SMKd^ zN;^z8U-@~qnzCOQcFObuyXJVM0zQ^4F<8V^bhtCE!$r<)fHX}+S(7UD?jgaL8cZt{ z@P!r$jW+)D=n+{6tbA2Xd(LO02Xd$FVFgX4URd-iC~dpT`)2!LXYZl%sUR^fdH^USs!l9?)pRFhw3HG9{pw`TVzB6AEWA91Hd? z6`qYje<;k0h*+UN@s~TAB#-b#JL>w@*}un+=xr>d%Bd7@MHOZETts@9u!WzNm?7cI+3t$x znjHpfO{NN$+OpK>4DKOu+iBg=Hh82Fw_0i)5-8*w-3<1Pma&TGR54_R@#35%un(MU z8O82F++A)adL3=&Ir(-Y+O6R=31BRxG8_(+W~GRN@hv(g1&KPmWu7LnaTa*eOqx)V zg;=JAU%?O}H(3y6CAvQ^6j{MF{wUWjxA{`sfgU2hFCdcN+69O_i}DsR!4-gBs)dFWZj zGQoJgTQV_qId3q^Yo8(V>-~v~;vGyg6PN`C8QD{*+KJx-?3~38%u6AHA;-OiiK{~H zxQLyw&oX^)GFZBqumsY4k@J4yK5GkH<|=FNCn*7wfqa69x~x+je$cGa8YQrNJ&ZU@ zo+n`bN*wK|Q@9jP`qcTDp^=~y{MDMMi|@dz%z)v5ZN0Kzi6u|C@t8g`Yf+x`E?(1v z*>}iQ?p<*kMO_H9&}@^}{qU6VHp_Ucyt5om$yam=U3tVE$#?-n#?RL=gVf(J9JIII z7Vp?(wL)Q^v8|t5Dz}f{9N}AafCuXQ<;HI=T-fFB=r_(`Woqc}W9A!+pG7=T*v6D% zGoz)hBOn*PRrnn$#8JU;8ozlV*A;2KeI-0DrFT#?9m`0wrS*q%2iTDjm9KcNM`{Y+ zkw={AQc*duscQJ8hNkuV6=bI?3d3P5GO>L~&FDE_yZf}Pt6VG&d-v;Wc7~7%Qd(=8 zePnKs{IG1}?;1U}uVqD>bR#XsnZYu6ECwy%sAd8qD+ILTMT{Zcn;aS?zn=_@hepRD z8yz+0u8^p{Bw8m%VI>HpWO>u>tp+1%Hua1rX@Gn4CgT%Ju$bovylBDdk0_g}dDpxh z{wTJlc(@H5yF1mxFPoR#tL$Zb4i09aS0Ol3fw#Nb(a0-pJ?HEj?@HuwS&Vz}!k&nI zmK$Wmk`P%8jHeYNPJP`ZZxkLY)nhO~){DuqWo!7!-}&1Kag;bGNHa=jmG$72mxFLU zE=iKx_%icOv@9;OVIWetfs(E-X#h2AS^iyUldk(u1{e1Dy$yo)pE2CqaL<}uRC1mM zVXWsN>oPu#-E-B9HXlS<(Q4rf|Amm}>z)t~(&vZjVDt1PJD}(tva`{7)Ga+qg?Ykx zt!;&8gD%;)@CN+(6x6ZjepZNW>qj*1-iHuR7(=!%T60 z+M9EFQgi%Rc9OR^F6SsIAlezrOF5bJ?!+5+tUR`?M=c4uajmv_UNfhks3B}u>m+J|>vL@-W zz05#MAMqCRx#u$6Rw`N4d(&O{T%dP;^_kS7_m%@&$PdMV72%J|oJQzgE;vYU7}I!H zcqENpz+S*3y0V?gmpWijO06Jd%lYW{@wWomE1eZ7x6vb7VXz>cY8wEgiqYv9fb2qt z+#SYPSWebL9a1I3WxVML$-%tWudE++&)COm1J1)+-p+3&JY#m(WWJSZFCN}Q+Da>G zYgWthH8BS;3f5RkMkuBMIP&MNa)igS4l?@hi$%?8;a@*Tde0Zh#vH$Z5xAGM>ZQk!CzF^msw2Av%waU>tVTYKl)`k^|%qT2SA{c;qH&B-3X4 zh~WhZ-3(^tWbtfbn#qmgq0o%5FrAh0|+b@i4KhP48vKfUMo&u6u zrI>QO`6=FlLMCWTxJwbwb*0>L*jKeNTIDsX?qfn zC}MRSXl2;Lry;We;Nu1s^aOi3;-RY5PYYdv0hQdLg{PRCkq-kw;NR5Aqh?(;Fp-h`oy zUS^=undF#~GpKbcwCJO^Q{VzG?=~r(#|h}4enRD~qjv2ei`Tj1B`g8jd3)}quGPBH z4l}>fetGIdfaD})9xQtJm{pBifn?#f#x@Q&!2)(8 zjb92Kreht(#c-aMxwq?${*qL?w2*354?^)G(F|xjqNGuR6nYC?w~BZCtWmz= zoJEJ_FsD-<;=5L5VA3g5&&gf0I`+x1LAy3B>O+R(?|xVpQUiURk{QeYRgnUkw|^9_ zj=66F-7z$etwoOw7=PL@EFnE|-%^tyy(j-Xyh(vqw2A_mh2$T5e*S&Y`~U0^xi4+Q zLp=ATq=KnG1Nqlpyky;)34RsSv07Ful!&Q7+F+@efgWVKQe=6DKkZJBEu4^dweW$8VQE^n38a$z&m*-P z((U*Ed5CUVvIe3Lqzq{YDRXvio~Hh-N&c-tViE(@%#K*f;IIFE<$psSb}YA-9PRIK z0sL?G{))|GW&3}^^M6uzQpZ=#?7v-R1MuabX&ZQ_FBKVnceKi+H|Hhi?p*X-Z`y;3 z@;ktIUR_bnI3H*!9NRXh-tMLPM!fGSAON~emFT^vV-g*HXu{C=HUkxFGy9D}>A1;n zZ#2|Hu-~B1PoO;Ze9WSomfIQNG;fY%SRk98jj2@K)jiK03A2X0odpHFJ&*%*au`YJ zrnJCm)K!eXbtNMqmxUF8>5Xe{ z^nG4p6sy*W_tx}9g2X~vbJAl&aH=f~D#z|5UI9&9$BaiauU|+iq+^c?@@oJRGMVZG1B7ly}k_1GfR>V;5wC~yS&WPv6>=GUpLAW;9P zO=G-ynaMyo(7n@d@Dnlj7eaoGu^Z$kF=pY9fNB|9+er11*Tg4VFW~1HItqdJyjByM z5gm7cx55VsKIDzr5h{t^-2+vH^MP{ehvvkkRzKXUv;bie3}_x#OFbRw1YMx!?^e+z ze^{$Br>Lcc65_cU#}70?0BtMyswdb5`9ROPJ;DD))?3F#8GUQtf^nKgefBX72mmwf0)y>)L6}(6m7J zshBjIjDUmIlMgLt8!UX+`4?={9dRy2|BxefXC&}gZ2s_Vo3{8kTL0nO*Z6t*U|2Za zB65rDvza;dcU-NPkmm)40en%2ij{~?`er}A|7Ln}?z9$g8$@qT3A3Mo2lg^Y+Ic(V zVzCnSpl!SrKueJ3gn!an^+_b5^0^+A1CQcwi)=& z67{!8>Zj*(4;*&0rCud6EqN;}^z5iJetiKB6`!-c=}^UfDE(U)9T6ekJ_kPPM)+4i zqd8ZrYitG>Rd)7erhg)32oa*&?qoHAs?d1dR;@}SUCG|qb9(j_)|T6`lT0tG?u9{N z_~#T8BMSeWUyKtwpU5b>=pz|_*MIf7vDQNnTR!U_9Zo_Zu+gCPt}pXC*%?EL-*(oJ zyR*4z`TLK;C7FILBY6L22+Cy_d3Q1IXE%cX0HUtB!UrKa45JaWALekr`?=FN_CuY= zf`5x<{2R?}SUi!2JGRfZKH2%0%m2|x=TxDK+;82TFElxBAa%0w8(JoOap(9inU00p z(zP9X^-Q(3)xjs<2pC|1(46kY0$Tt0ZL;BA(y{+%nHCB1ap6ekw;F1>~K=X8EY2PClp%zvW~L2U_?aw|>Q#dZT^kFSQb zpt37ak^h82m*MR!?6|eI;|vcjl8YFs65+XWACYOlV7N1n6>HGKwT$z*6D1AFWdB-* zA5kfZwbHTeZqmr_>^E!#$8S9`x%43Jj;7=AFTd8G)WQ-^p!5~qU1(|gRx_qpBJf{- zD2xbFr#0vV4AY=Km#8^w6yVkXI5Z8W#>D)2z#b*juPPYF)st}h%kL<`DV*Dr(Rv}b z9XdCbe;ya=`$%!(_nx|papZzky#;X(E8OY4yK-;bep~T=S6bhYqiV^H;)WM|_kb0L z(tl>B2q1nZ7IrVq1jSeFyFVnn3}>MCCIZ`p+}j0Mqg7Hfqbhm!L^xo;X6Ta*Xpq^N zm;~V+hY&HAjK28a>`Lkhc8= zwR`!rH83rhffAXWrpNn_RPa!1?Y0Ydk^amSDta!zBZ~uX%$zYa*0$SY0NpgvtDK*1 zFEY9%M1>r*-SCxEcZ8ray3zjUhHa6)yZ?O)gsS>u7INCgjM(xx@xbySnNVXGXJh#8 zn-!|I2hfS!6*#Q@i{zL;Nor?`KiZK@YA88gnJ}_F5 z8nYOkk_}ZLS^p6PYi3obj+Efi2QycK;4i;_!$uyl){fDbG)qx59iy2(+ODizTle!z z4F_=b%!v}rZWgc3+zPqkxc+D!=M^xu{ilci-=8_{fIfRF@R;yFW)uHo1($|{&M=B6&A@vgJE64u~ z(2pg+RZvnVzkCAvR{CF%adlsbWK4SLsui^g-+zvsjtCzVtSty%12OhL@Z8lyI@%Kq*BvWwa*u%NjRGeSiS5ROj34 z7o)m{ZojKk%kgz*k>KdaP8}G;iS92EE8#Ej_ z1)H+qr^p2*&M83a*uhn^w$?hKl>zWdts}tGvf=7yyld8S(6!#nm;lu0LvT3q;8I73 z%hQ-!Hgm-Fg^gtANhVt+xOxSVPOyX=amb1W;Dp|J;vuEflHsr6=)mJf-eKUtRuSc z)`wd1Z2xOp#SO80uUiQbg6zrfZo5JccX!f9XiZtH_w%F3^%V`FhHolNf-uEBq0Q8) zl3GkKs$&G55&*_%?E#}9j<(9^O{_%-o!EW~Q2A|p|;+qO>I|$H$=V(K6Io4v-|NCDG_!E?Btq?_RAXx&g|XQE_v!7yOaQ2EHX>T)yc zjo#_|r#dQUCVCrz%+d^08XvLTgYWPiG z&K-g=&@2WSm5FAAb@Ox>11=%qYMs`!kN6krPU)< zAF#=KeH)fPknI5`z}3pjw3;tvw^Hw}m&~ySpr?IVC&tC(N2>staeXRkH}>6i+w3ta zP7U1XMz|Wj#56YURsFD^dsiQ8xcLM8H~SRH41oIZ+5F6Td-0<6(#&T$jA#$|Ow&eFZ z3+N7jMIKExqXNJhFcIrZ@!9!NqV;(eX!`BJ${%Ma7nFCuVOU6M11QfuO5^isbKDD~ zw)0s#oi=|z52y#68Fq7{b>nO+VJwDT%sGndI--iAPqG6(upX{Uyi)L1@K6cn@`M{M zu(#cs)$rDM*+(Ipvrk~kgLV2Zm|)J53H*x)9w3eMF+U$1q)BwXfc~06>9fa~+~$86 zQyW)v2Q!>xL+zOw0G=1QbInoMqc-Nw;oHLN{H?f8e8qkrSZ8?^f%bUQYb7;t17n&+ z+;O_*F#=t3;~Ebx%GDBJN+xq`t~?SeZ8@J^(5HLnKg8{a7eoV>XvuRk5VHxDxVHAi zl5LWzDWj8!=I6mFuQ~b0VWsY1B}qUD=>PZ}PBAvcAtv6)QTeS2v1I!mNAkX%=+{o^ zhQ^66=dmIuiV)TSV6}rs(HotS;gL z>ltt6rQE=~k_Zd0Ad+zNIKkedg?IIT3^rp$==@waY}&V_y>pv$`n6Si-=>?A8bgAtcXmV!C#u6daB-k|^S)+c8N?tJGt%uqVBh zeU!U{9Kr}E4#%xk&(Z((fVIsLEPKw98V5ORxt=J)WR?CB9a5fr#cQ9Q-2*?N{FLBu zVHn#2BZ{&O)bpYE@q*_n_66L2L}v~u%=!tdR0P2RgFV2X5+4@i53?`M`e~uA)qk6( z3J^?xMgR^%awU!?3UMBw(@0|4Z5gV!`D;3&&y*gbxJqB`c3kRJAUq9#*sKYM7{gLQ zusJMfiMqnk2bn0k-Y7()lQm>d{EuFqDSvSPJRA3boHS>M2gxLs|SO1|>J4|2N|Nw-5mc1J6!} zew}iqX9b|IoTF?KLS{W? zv(Q1J9(?`+c0Jp1iI1wXJ=;U$CAb*aPq@`^fh~)@4zs8DWu^dUm%MeTKB5j5%zv$N9F@X4sSBe098u`6%k<1_ma!4XBJ_|!5`UyOaIw=)5S z2>E00JSIg8kd*d3#GEFKtbn+N!mgra)AbP~yF2_agd4Y+1_3&j z#oSGy8eV_sqsNXA;|0a`n+|2fY6GB#{Gv7FYdyX=x|WcNy`wbf>*N$2_aYsg^HJ9? zYBb^PF|W`5ILux(R5eUk-iMh2-bZdePDDmKuNSyyQ3?6PxktEb$n5ocVyWYOc^(YDXHP8iFZx!4 z4fMC!{8MDeMUCXd9VF0bT0Och3c;u}BgJy4X!znD4~}*ZZqxfv+21Ul zw?%m?BJ89a5JHh#Y4x>W49cmL-;$|je^8(Dzs!#s>+!~FD~sHXK^b4p$?ZE$(2!s^ z%|s!5WfjVSipA_H(&bp@LgjH393P2DytmZdw9H=}4e{*GjPq0Pz;wwTsdZhYdRp(g zlJez^)mu(O?6fuYjr+6mfX3T%+p~Ml_t2k}n9QCA`C3iD#Osjv{d3$dp#ivG2xj!9 zCo&XM3>%B?CnqdIq73cwIxW*aq%#MRTP-CZJn>J?+^aUN2aUFxT$ZgmRdEU@u-; z{&1absAe1B_Xh9WUTCTU5Nn5?ly(Ft?=|4h@WSSRX%!M2Icc-1N`tsA3!;7WHAo^s z<|}4StLFkrkmOF*Hz}8F7pXEw!CvT31Jplt#lU*O*1Ych(MCPdVh5T#>22e?NJ7Mb zKTRk8M*~|X&F}G=M?I|YH82Folch#De?@EhHv5XK-kndi2=B{vu!&_r{PSO#*O9WP z=yD39C>h_Y?`_987tI6t3*|$^4Ta?632@2ElGh13fEN{X_mMDP(j5H@x@whO96p-=@ODQ^eg7ih0D~pl1m1Q%!y32n9H+N)9*|-$33+b}yd9(s4JS?NZ`LvU5l7TYLXWzedUaJpW6f&?Ul*;(XIu-#1u>4@gP-Q`M|`yE1$O~a_M>H+1oc@e6imE zn)A{r@AB^|=|*zf=J>LTcj~Yb-4##l(RxAy9arCa1eVqFTPwoIm2bN=ADIw#Z@R0gGqE}K zl!s90Bg#Wlf1?pRt761gj-KWTRMA@L8J+hWr`RWW7K@)r!mL54F7&YAJIdnaN`8x$ zk==7VT0P8fYZCf1{S{KzhR}9TrrMiB|Ehyh&UWPlir-nDE9lnW2dt1{6s=gg851t8 zf3VGYGI}qJx`zF^xbVHNE{phcG);|A%?`WsG>uhj4aGCJYD$%yJVL$7D|5ofGx;nR zC$|LEXPR7f=D`-eX^f>f953Vc7ayhvm;Ztn>ya*EI~@-Pe1 z2m8iCf(!eu!8%HdI>DipFzkVp9(vxG=b>u@q zBM|Q-GuF>v!{c|?m)6H*c6Q}ZN7+(VM<8%)lN}CU7Jj@C5b!79dUqkSEoVBb`8$cGv)$lys%*#(z{Zx3V;*`{RvCDz_!&++Z}5JEyC_=e@|;0LNZ3<1F7b*MGNJ=Pav zp)O#KyB^fgGkSZNzB`Yb)k6f|b@($1DW3^6+%AVxsh<5J{bLDl|KG$VSdN-TDQ8&B z_7Lfqg6dsLTkJGdQ`NAs@b{yVqkEy@`lP}cm9*BkFW!;JvaI*H&)PC>CavNJ3%9=i z)SG>?w@*aQp)lhjNEk$j=2S*@#>?#?DXD*Acig$N3pRbtuNy6_&4v!`@E68`Ky&!7 z+1?+G(QzFPjxJf26myiY>y%^YQ#5Wae<`+klb}kt&lW9yk!mI>_W_pJ!6N4lI;=aV zLR-{L^l|KrLrSMIMA&nzuA)%94^8HIYOnYkhwX0Bxe8xW?h;f%+3<5t$SJo#U0|~b z(IiKQQ13zW-vbvuy1%T7!Xaaggzm(jv)eaZk1Ubb<3cu;@%bR}KRgE<@gQ_Tvtd{U zrk`a4V|9Fce)O~19dh_t6eKFvTK-6KaBjPZ{iUlMq^H%f#hG6nvtOCXM`0{PEJDU` zDbp9YX;W}#y2W$px=&&l%m2f?CXvGy?RMWpvJE}ks`Y67dlMwqq2i=3t0?kXR$ScLqs4yl<05lV02arg|v!=-Pu_R&<< z-nRcvnKqN}7)Qr-FF4qiE>lJ*5ymdA6hkvQ#6+Pyg8U=7qJ{4OZPU&9@uZu4 z3B1CD&QjV;gh;ft;76O0nZQO;RnoM{Ymj=97%N@_$E&=Uz2&g%7v9D#`y_#eIQLw; zLp#=VmiHA(T37j!95p(cE8X)iyjy!1t!OlEdtPdUSkE*}9DwF6@KWumBZB;rD9__{jkFM_s57G~cZh94g6qtb$Msz3IW-#hdP*PiWUr(=)dWsXfF1Q0ln=WQnUs&!kDq70 z9b_rWoY2}EN|pEQ6Ie^F5a^1>;ccQl0J&k=&%!oux9^rnW)Vy2R=&M(T1^x=7!fDB z6#=qj1F~f>sN9E+ZJ{Zgxx-P4>b@j7x)6KzH14M!g# zSjNv-4$?%Caa;0cI?K-#QFX>p`XQj;7rUg2o>&c*6p3qj=%pRvU{MH7oY6KbaB@#H zdtluvNaw_(!7Ytc?S*@Q7GGC$mR4a`Ti3{vVP@?rC*zja!Z)Y}yM+Bhw#Y6Q>7em$Ov#KboI=)4$NWW^`ineaU$twT+3> zP45l6h`i2Jb^qQ(Z@!?Qzv+kVLqrgk`q!AOfKZtfo?tv(vz#%1@M{hebOX=|O)WzE7=5 zUmQzIaC>Kt!Ox%mWY1u%y=s>QpXcUyR|Y?f z%staJd{`*75!u*>Qrt~2Gp^!dJDDgx6~Ph99i`*Az^SS?*{AfO=x=AOHwbo zszZ+Cqfu)^U4r0$cZ$VVz*2+Ye^P&GO`?4I?&WQZblY}F1to`}DFbJw2fN|Jx)G9M z5J=H$_S5%hAOV|YAV7C`Cn+S6q9UQE7Jfw>AKAG^8FNz)kn|>O20h1aji)J{T)|2L z5E$Bqj$~oxOq6TbFVlaXqcD7g-)_HMFn4oYQww%my(6ya5fkABRLjjaO=B~p_`h|! zTJL3Jh?lJn^!Qym(HSS!c-DPV>MI>WhV7?c&ZU3nRO)v|DIEou2f3P$peHW-=aDHP zhF)CuRW&_U4WHtt(Vs$iiAWmmeNIRi-HmI%#aa0=LV_59kYk7^gduT(Vt0MIhj%Z_ zBVjAyEXzJ^b;`*p2F1#}r#Yl>AyK-qWcP|Dhbx7B41+NlNdPmkDnsd4Q@qmma>x@}{?bDjjIZMZn~2V13T^>+TiD6)(BH zhT#wfWz%WpnXgLIP*MECd*={awlj3$f+A+f@!mp;J%az2`^0KtK4yW-r4aLQ4)dyB z)d1j=kUpG|>Pe9D-YTyq5f@>ymHy3Qrpnvj^(CqY`%MS#XS~95Ma+9>N)+YyreC@T z`!Zq8_&=0zCM=um-J4ce1=(YYoKdojUDnHYwUDZww{I}*jl5R1Tj5}_JRu2amg4gr zT%Ped*=UsdK9kC+Z8{|qCo4ISA0yw1UhyJPm81{9;tCnjy3XBt(`*DUAwq%>X^Tu< zx4PO=F!Gx3w@ZS{1Mo+M9qtY7ls();R|^Ryg|y}y=TmK{P7Ojqx55804)oKb+AHCd z-Zr%mYJ=dX90th4N z7CJuJe&>;bCLU|gr9L!-6oxd7^pbByqghCpfbv6G*#=hod;GI^c>^lfFto^`JRC=lc$1AeAUMpR|$u5?9+!2leKUf!BPJq^SXmK;-?$Yk*t_x^2bDUeYg; z=*^WCXmz|2NqBSsQlBKK^-xsX7#cF*}DyrH0(BJfu50|P78lRUuQa*kFzP&H@boSCV_wSYxnvaT7FAsiT zAGDTt;r|ZegeLeZfV)~PsS)k4)+`zCy!6@^%QVf-lH(A0pzzcSLiS`XVok zoH~&C?58=JK>6WoW{@mnOmbSSH>d!W{W{7SGf9X6(b6oa8|~RQak7|2`-S@KmR84c zcbP@s=H!3_gL;7NEU6Ysi3t4Q8SCKgBC?}kv%Xmh*sF2__ua{1j$|JoNd5~_*wvWq z%|EAS#UVWY_OCfWC1@!p4_N7;v0M3FVJc;Qy8lrM$9cY4SZqK%&RhT(eEiWsT@%lg z#i{IZ9I30a3Li zpZ1Yuj5XXrI~iJWh)Am(2ud1l(;E1$DVm&a3}P@T_A5v}R?(q9uyf&?oU!&pW(Z7K zLgN3i+(ON^W;z`N1SlFCUY`Yug^lzW-N6Xxd$v^_7gOs2%LN90y~6y)M3p2kE4i<$ zM`X02`g#@H7>XK6ANJx{^7P z=qU*&(=Y*ns>)%kmyJh_#XWE zzzI*@*SOWlI)w}_kJEX&QZBN+ zg&`dxIa#77L)?E8)WjmOiI?xeHkco0OBP<0(+yW2T>zy`$#S#Bnc9>Nshw6pfHm%R zhwy#sz=L@n6Jv&es^*+?A4UDECMl7ADLy$G<=eche37NBAY=B4xqI>nV3ICY=she> z_MorTaLU+RFn)fhEadiDZ}G$9-*6Q;mG9Q3EN}>#u+nV3Eto9}_0CwM;lAAC8xF*{ ziaIPi6g$cCHa#o=^`Q~2A5@}i2S)=ZFp5F)YDd$TLdE4I?UK_5v8_mQbYU%XKsH>o zkPD?{3V<_x5UAhhT&>TlwtZ=e;i?_L>)c@V5)@B`*P~FV3Ijh;<5U+VNQCsG5!xje zKT#KG&LOOl(gLs|IDKNFj3&2BUP>nX1kgDy7Rfv39eQnNECa_@pC*ad&g!k!d3U=FcBx+%l-o zi?_y7e)V^iC?&s;H98cbK#=X*viJxT;p30K!fmHH*Rkj?D?Y4zlB28yiA$lZH};ib z&bT8TvIycN9drk1i=%l?6bXW)hOn1H8!SD$vv3mokw-RKNj1R)=OBba z%<9orsoe9>pga^0m^UHjn2J{j+d8o4VE7%J*L>*zvy!fC0yF+0$#f9g%}CGsD}$`- zg2tBmLcfoYkLw^Y^-G6_Wt2X0dSrSWnV{>a@3+7MJK8H&9A-Q3y7jXIJ6?TLqfN`7 z_(_gY``#qx)$kJ80pVjmh?M-f%}n^7>OKNtvQyIN@25TBZ=e?s8xEX@%2rXRgJB(fcD$+0bL!h>I8$okbKArsL^|BdPFXEM-n7B zBdy2op8kSt3_np`8wH*-(m^q+wAUhK9hcx}4RTE)G;Y-ijfYe^9q;TwaLUMW%E*UQ zW75Mtthb-&IMDL7a?M}5FZx}q9iri7cA0k zOkuN<*#|bMSjbwa@8UR=WMr?tQsG6!+aY$o#dXS;}2LUlPO6d_f za%brkN|ZGzWyTO9mo_#;^uUK~CtE42F$3npeBEk4u1oVGUKXqFxmgm=%#g=+Y~CjaeI9W&d2aa0?1 z4=6ZL!6FQr=udc~H^Ou?p*twx^>kO@u?y@e3{3|mKc~2oF+7N45dAAU8iA@F`_Frg zx^W%!nq^3aSGjNT=aJq9!n^Ly=gginznRARzwkwID84o55dtv)eqlt17y;q-eN=0d z7^b+b(%3}=!8_*pC33H^i=Rb5+4F2FnMaTySCaSb*#i|dCb2;U7bfxS6P$#+v%AF> zU76=mt|p%nrYN1E3aUD0{=SvDM9KoL8yJ;yJ&`Kh+3r5;1j(S7pEIFu}=ni3(Pr z+qS4)$+w~9fc)Kpr=OW zq=HzD&|yeb-_QntV{N769EU3P1O|+Mm039lKJoWM-)Y+CdloIyS4G&rT}F5)-M0Jw zf*fpHqy`1Q{(($EgiDWQbIa7v$3Z=@m`M5ibL9+aQ^d&cGJlln+28P#$aPjM$8iy)+KhjH;5!CP0?K0?V4Y)owX4Id@~YS@cs`9UHl=>b&4SzuC3v z(Zadi;`W|8!M{XPc{If3`JvPkwZ%(E=^Um*7!HN4u>&)u!F|==k`$LG$1iHWsO0bE zO@Fdh?(fk}YA*tJ=)_zYE0$81h8|{xzRJ(=Yy4#ziSBdAxPA~e%c$}xM{4=07(!xm z{2FI=mZ(A^}i3fAwQUv8ss=F zbP{}AeSOs)WD-KQ#78HXA?26o$)%l9#;#kCfNlLMVxt8tn$hmvUldbg@&4te&2fk^ z99ooNk_eC4rpGy@pSMCj!h!_e47U_VbO{bK`9m3mOP^TKJGQA$s<8O$V$|Eb&J$jd z{m#UQC6I!khTBdWDJ-YLt!^Pfd_gDsFsmVp&hp;ODrF`>+2##BBwo4H0-0N4NcvMV z7a`*dGqOa#R;mEGXU?@P&rtMKE#{PnwR-h6dXZRJI2XUvPSv2N2y>By72t-MwBc(i zMCM?rKdZvuHLE>m{Qg7Cc+JCJYusvfdvn?@RFGv3?+MPXNdSe9?#VUryvbyobXx+| z!-eBmyQ2DQg@}uaF^RFiyucprLp*t+&pbzEZ|Ktm_sa4x;UgOHR9MtI*V|C`vyTHX zy$^>hiuSlG2kw4482lTywasevWWUO->TF}gD{ce%v+e!lm4123dTd+UT~S^@sxhF! zqZTG#k+gP15{z^rNZL4-yQW!LoUu}MTdN%I4E+()?2_nk&8?L`YeOxpH^==8tXamV zPFlGo+C%YtoJbw~$0gU%S*Xz{tmr#V351Vpx>b{BhKdCW5Bd)Fp624kq7rrQ%7~d0 zdto>%oVd~yBnRo#J&xRO9Pyi97W={L*iLjp&phyp-70)pSq@Kyk3>30I^VThl6tgf z=2FpzFfZHHWajC&X300Mi-V(z%e}s)419K!sc~xFKOce9RAx>hBA*2e>1evEkLV>b z7{A5i8?C;8b||^m5eArvywR6M5BJN%dN!j)oXUY_vDCk#`s+B__;)C9FNyqm-%X!( zAyZ$elEjx*v6^KY;DyWm7zZ*%A22lEd+5`-v-EK?nioNoQQ?;2~vo z|Hm04!qQTcBt`FPD<`Z1K9cFr5s?@-@6~;0f61Js6s9)?2(6YJCV@>N@uCX`iLalcaUDK-kyCXB2kDtyJ)NJdYU-{oq%SamYhe7?1#!XH$E`D zxa+1M4l;B}g3$&VO_Yy>r9s>TY}cSGF$p>$7mx z`SQ;Pw(jX4w#9Bn^@3Cn-l(2Ltmh5?>lmG;CqBWMfgC$rPo) zgBNvwNMda)sPfUz{@X`ler4+@H0M5LScr8>Y^<}g_zyQy-FeILGL8C)jjZT$tNIx5j0<`g_C%**MjvzlMzJ~K5@nOTGSE=@>YezGQy zY0pLf9m+Le&w3W4+Bi03H}s&B^vl&?#-+zL;x<>HLZ}PfHzTf}nhR&pyz$5WdN+H@ zTIxZ!(~5umrSKhz?)r(2<_d;U;csY-_}#H+-P9))#xa$vB~gPJsaFx0RxA4SQ1>uh z#|n&3ylNXHgO3Pg^=%7AtnR*?reDk6$oUL2yYreR#zk_jWK3Ng`m&C1pVy?dCGICI zk}Hf-%9pZnY<7CPda*Jew+|<>Z$pG zWtL{w35bKYJ*#+W9Y#&EA*eadNeDOTOnuv28n!Dm2S&Wx^=67mEB6%V}ZJl1BKV}3ewh9oEL1qS&jvDLnMZ}NB$x39%IOjghl ziigb=%Nr8g+`)WbVJdd;B*LCJ(Z5<#mQ-Eh#D09{O@~4nxf=yN4$4;l2^|tgM-Yw9N|~h#O$FAe*@wK#wUsc}gK7$P5uEc^qpFib zvH6D#ylN5St>Y8t`)|#Apzr&lcyD}}6+i@Pnou^))Ynj_jN5LEYv61;cpv&6d$qaRzbl8v2-h)FGm4)8h4>G@f|4EC%(&SZ2>mxu|- zN`GDUi?2_2{#Dg?i4OB6m3wunlTe=;=UTngB{lo6tBNXFi^HwYW`2)dOw1N(M{&O+ z@!1$K$EhSywJmuz+U#Gb*^pS4U|bM;S%7TEXq4S<^qN(pBI2b@UnIAmzEPGox1-fD zSGnkC@ti-;o16U#D_i2;y}~DXIAeu}3l?mNi8y3EMOt6IjwozXatp$SM@qdd!c-a4 z296Nj;@YfbF~c0QgUq*QMhVr9l*N@^^OJDcn&c?_?_9TXIqxqkeh%_VB$CN`y*)N zN<6=bc{auJ`z{gS{SK*32~@RMHktL~e?X_wx?f>RGn$#ix$eR4{i$ zdK4g!_duF|d=$lntm{YmaDLF5Ug2*3n8cxCParp#bq>ltG$#%dLp}AzolH-EwDi+d*?N30smG$W zT_naT3OlDW3|J8@Mbhgjns-us{+H%#xnVU<$*8ftTOmU_V)Rg7EmK9@culxyt{Xal zvg7lbSg$%w>Q1GPJ?qI}OKFvgcxZh1jc2j??5KCE`8!Ff*i_2DL^nhyI3m$UD{kmB ztr_k~H+yVKQ;Rf5k%~BTv>)bZG`h?49Co&S-o6`W?xAnJNv=xk6TCA3op${rCvt%P zSF~BRUWXKyUT4Ci{Fb8F;d8e&s@05TBufCJ<+b)D46V|c%;M^#XfQLe{6Z4)TRdoy zGqE_JFY(ao4$K}2NljDy98=46mU5VrQaO-167eD7!-oT`7|yc+j9B7W&LXM3$IG~; zNs;5V_d*qpbi#H+eyVi^8Wys!JMHPY>dkO{eH2xQ#L=BwL%Cc^sw}#hPWol_KqgAE zBwn>)irBGO2_yx}xtsU#bDfCGVJvQj&(6Ha={GimMA>$02{Wccyd>>8Pc|u%M_K8c zZRWiKNZYRR&6o9IwC4e9sk7SAWEe;+h#3Zb!Y3SwUuu#I(u`&H&EF3w8F(EKQ4nWR zIa6c9xCfEiR$GZ~*QiNhCd7EU=S$A&k8YlWEm5p%a~Ham_)&x>if#eFTK~O`@j2ykP&l+WODG+?e%A4P{J2$Z7WrJnIsSzuEK=ec zm4P7zOM%L&Q)!4P-JUxTIf1bB%g;Ct&PW>Nwu#b~0_B?A)9&BW47?|yQ+Vp5CPT{# z6Smh6od@P&L{$- z;ySpI!coLWQ4ET%*H|%Q2Qz~{tz*0kQ%@5ycms)O|Bn}d&~ubG-(DR@pgI?gOX)v9 zSj|C4wgg7uYMpA?68(=NFK}~B2>KdE6ULPX4uyHjq@V|>kj>TWS6y` zXi;3B_8(VI=Qg$wjP-Yj9O3BiXub|W=KelA_tlWqU`Qd9fKW{k=)60DiOheTy3NhW zi^(DH{T<%$UHW=V(+*57Z%&2(iV{dyS^P!^kAVAd7WCV4UL z2$-m|aaI_9kB)+IO<&>9;_bM_0G}&sj#L>z>7%c5Tj>IW3 zS`u;bVWGZrJ=u__)Q;4TG(|RyM2Ga%kdCLd4kPjjk@90tM|JlABO#+-VxnJJW%yk? zONBUcM(60r|5SQFQ8MGi%8#PHkN8#ZccjEYPhSxb5-1z0cOUDBeidEpztc(9;M?lTvuV{dHj&I^ z@~*N`7O(CYf{Z(0>(=R;7WhdC4pClE-hDZbG#kNe4Nou>uhG4{^hd?sEcglR+Gf2> zscs9^hpjFRzf!>-&)SY9YyZqMuCa!Z9H(C=J>BPyl=)+J zC}hxBTsUIY#dMu6)t++6G~26Dv|X=`(WJ0NTVi)wSX;KBt%&N?(@ky9yzWtGP1a~+ zx2R>8J}Ez6HCp#QCceCMg;NXy{^{oI&G((0?K@^&)@GSg?j3(tv0k+B)PAT?LoqzT z(f{Vg^v{_A8+n{Y6L4*tdNHPg7LJ2`5)H(6{DLH`t(%|Gji&aHtFOJdZ}g#h&gKj^ zK>VXJ)VJb?vI_A?p|7ao&j2Z!L>xC0tEi{-uaOJ!vuq=MNXMo=+>B6vCKwf+Xawo^NFPocTBb#Fg*4Gc+f5E_KLm@x&f0mm=Gwlk^uFn|7LzN2BVTah{bX zB`LZ+8&^>M{!KY3R!uE)t1_>Xc;gg={`2*Y+b76J@yY-@hLg9ZQ?vhq zCCs*@8*mwGc5HvylNh}Y#@OPEXhz?E#7t;Y7W(~l>1kxN!}n;AwDnk*`#oKOHJTF? z7cZso-H@Z)Jg`eyeB-12$6i*P^|(abq5WxY&GPP<&DYu1)cF%~5*xM7yV^#3M3S8C z&DFCxZG2`e%V`Mg@2KAKp=M%PJN&_BvdZbFT;oPj9_B#aXi3{+w=(HBqSC?8dup}l z*wWek=xbQ5{I`9(qb92P!R9)HeQl!{63#a36~k>RM6k#FVW%@XJ@G@qt9kHI(}}|~ z`!*7u3bnx0f`+4H{TJt$CL0EWQb${m z9pMc(w&!xv@HgPx)2F_^e|v==WSB4?X=zm+A{jR~`Z^14KW?z!s>beTdK} zLuIQ(=ae%;BN=zf^Yk9e3<;dUe+W~A7F7iC-M5vpa1tKNr8{SUSDSaUoRIj zfCsX($9??&`_e$95BTZ>WP|w|#TZMPaCR!U z_2lwbDEv~la1q01ckzDr_1sB*Jt^T~BpnI?I>T3I%Ty1Sa@zbt@Z0(cMREW@!TCwa|*!cq5!U zFC(@6E`bo!_;)N0{2`r^1pzIlU){|vwf#QXn^|fZBR6)1k#?d z3UEkpI4BG)bXR||{`Z*GH4*nZn&7^iM|Pj+>?@Xiq6EfO(&5h#;WX)BkuSsR8v6D6 z6dXqv3M&2;UxX?C^|tmmNOjZ4k5!~NO-)`p++j0>la;j#UnQ z7~^?3m4`QE8-bol5OSBCcwIo7`PTQ-uWP(aN_CzOsGaV@z7-0s+p+N0xM!&7GrD0Y zO8l1N^s^%ym!-VQo27YD4c`0xFsHykX))^G41K+}d%kq6i}Y&ZtIQ}RTi zf%kb`G?Tmmj4TYJi;ZGMqv+#}q_)K;{$7)|%l}_{U;S2P)3vRLl!SChh}0I4?l$N) z0O?IB(t^?(k&>2_21P)mC8c2_2+}Cs-QD@kwc&o==k_?hf8hIGf0DiTHP_6Vwbrbe zIoG*XE39qQv0T`oUpZoB7p@*QFY1Lk4)BZqAwNB+T#q+MBm`NYhoVPuG$p6Gl(0w&yIx!oc?hV-ObANnXsDebbd0oq)>&KO~+##o) zJM~l+**zQY3|?*|V`%K;VwH}*d<0NNf+DnZ43I}k(ZN#Eb{VL3T?hH-Y^q($(Mp*_ z1W}c&Z{nPfz}0X`O)D36p5wNlq9R`NStgHZC;-H!InHx=<#Oh+aYro@zM%j z_ho}5n`&xC&a*JV>tpdK<0=~PjuR7n+LdcrTfw&V1K6DbC;Nfd-b zi+4#7VBzqk=Q0}HrYxL10jS2NJcNQ2nz)qVP!5aV+3~YkLj_QmNqGGzn5$3M-UnP_ z+OHq}472x@)N^PXx2ZvCy_74q$&kh1i^1hml1f5(ljm6kr`r?op_SJ!Y^HI6zQbrP zYi=rhFqP3l`+?0~v5YeTpbS_5B5Cx)uMq$O@x|r~N!MKOqf~nEzTsdIrmt0ApKISC ztJ6v|&iyc{1?)1GyzQsY(HPZYYfmw$iF$SIb6W5*R)cN`a=2|uMODJ-ogabcr2?^+ z3;L?zv8K_P6gb2$3rF3Ccv3&zw}E;}aWf_S8TWfB0%9%q;9_LihN3Tsp{CQr?;=A) zSE5}z0#O#;DS@_Jd_(x9$;_@xefVW*HE4NN^9C-4P@z0b${*Y9r6IpfFiw_p?qrmZ zad0_U)9le%b7p@$5hKuB_|7hPm*_bqu*c|+e~hsmFfVItHO^(veh=uQIWT62T-O7% zDDYWD06F0S2uw&Afq%Ik+0LkDhUScFR9H5+0yLV1uGOX^QY_fF$y1gvurP&`~K8-uDc!po^ zcZ#^9P1{4*lim?SdY_V?>ypy15*<~Qvu!Z2e|z2E@`e%0rMP}{b`FWEtj7tF!H6spIAVf|J!TBprA;IP4BOd z=UsrC)Jv9@QTx}g-%Htn&wo5!c=*@HePAE3bjZ&0_P^T(3rhgBKWJC@@Yl!XNkDh{ zo`n%c{^gw$q#i|9rbTPBRxatSvC@9!VCs}c?*)~#^S8Sd9o2&d>7oE%y=XR|)`9yo zMZ>6_Qim6@c{yJ~Q4^@@Wa6~uI(CCuDdzp$=e)c-`L$>h?rW|FF#wacINSMLpB&o> z(Cbh?JYCidQ0q}HC3-HKxX@eF9*uz->0`P9YraajFyi+ zujvk|q?Pc^se#gW{O|;axw5~tu*w@AL!@Lnbhdc(eA3NF69gUs&zlf zV|r?j;|(~d8`WXo+t(*?cF^H>c949AO}Af*xj5MwRGCY*4pOnn5T{$oet`1AqciiQ zA}R;tXv!b7;-B8{L85*wie@t z<#ohX{1{`QtrdRx$MGcR*;reEP4(Mq7tN#haM_uFhACg&ZI_;=Q)X4vB?FI87QhBO zqhuu5+q{Q;U2uxt5e;BdP~r97bO)iHFJNaY=2+8C>~jb*IG!X&8k}x^;Ci+AyH02@ z5BJmj5a%viRqRgGVH9ALxHAlx&n6(krswr5nqQ}EiVPN_D|3^&2lQG2$G`+{@_|wr zz$v4((2j)xK5%cSu?cWigSY0?Bx>f7e??P9fI&&)QsgPK)JFqQk+VLA+gRbM5y&N< z0K~+wCkaE813$=g*qb%Y1bVvf40CPVM{EQdZ2xBL5gj{dPk%+Esqbt$o~LjAO5dh@ zA>IG`HQrC=1qSjx^BrqYPuDD{M3UQqSG0Yq6I{eWA9Xep9jP;@=@Hk&iZGgrlUyRcs@H8sJ3x3)me}aI z^dt+I=x3|6C=IIcS+N=}^*Ax-&6{~*f-tqI#$ZM3t_|*<2UN0v`>H|sNbA-fy&wjH zy=?rgXMLIBhdfo;5lYw*2k9MdIer-+v z0(;}wWnwR7jeyx3NAG`L(QswPiy`jdZd#U3+JEGms%HJ}ep-!!c~&FWA-E22^AySh zeiVDFh)B6g+oozKe94@*bY9Z*vMD_q7rhno57YjnFOQd6`hFt51K>Dfc~vh7!5%z*O{Tjht7gp2R}% z4j+x*e&TLud63b4x1JSxYa<$_m0={F$8R4OrbEghWVWRA{^MU3i|FQlcXRA~b^r*S z&KgWKy}E^I%{_$r>z}fRbc00`jL|=McGx0ScQbiX+9NE#=SKP!Nk-Nw%*44(B1)`+ zU!j>r?RpL7RgQENr5ea@F`q3_eklHC;D4gxqN-n#Fqqe>A8%gMe@*5_tJa6|57GUY zMTG{Ly{9D2OA1yGMXaQ2GMXL-2i@r+okxag3G`Sow6L+c#p4DESKReg>FA?mSXNiB zReSM?8r06b%yfyD+U$9=+BD!>yOw-Yw4a0jUV$7#~Pp)DMH)4UDJ?mSi^`+ZBkg;>tMWw(!eYB5D93h97_% zyLFxbkX?KODep%YAN-w)u@h^nQQ-l~x9#haKQpXK z2AB_AfnSMmrHY0Cf|PLv(Y#z(lhf=Zha7RP}H2Y>Pq`~yb~mq>`4Y}}W0 zCVoFsrJ+8ibLhP5DLLuU%H4!3VX%FT*)jQaI|E7YM-A{^SFATz<1BLJE59&}!6MFf z49@sXk_l!FWoceLb^>H?7^&Mm$)|k7h@+K>!sHXnm%;b70Eu>X-O&K&KoO~F%+9m2 zv9K%baFr%sE{fB7^6K}Ij{A+5hqIp+)(h4gw5>Nup4xQ|t+~yKHotKNOl@?PjpS5g z1}BS}6OoTpvTPy&x-OdimjCMUY(Wgyf!poD^H=Rt~ADdTcLy;o*}hW+Cb+-K=% z>_@k>y$N97p6!?)NB4q6Q3?~0_WCMOkTfU;;TlEm^KmL@i@ z3;bqd93r<57H>NP8WC~WZes#=;>qt zVJOWAVEjO02ka*8#&?RekZ z^YogNmDmhxSOWxO!W+qHM%Aegnl9f;stu`I09i*En1L`}z64Oe@xiCxVX}|aST7Gh z7ozwnL+=iwrvB#jkmMStmk|johAD2z(?(fyn+M}QdJ+LEka6G53z!|c706Bm213WU z@qqGhPV$Tr8m2dC0G-!+g?m?Gp9I+kt^nRI8yb%C`A>DS7N$b`hIO3ljg9ec_x+{l zS;S$g4sT&Kt-~MRkCW*~p2%D^#l)Dt6aUWqry+%C@WgQje$C-xme3!BMM!alz5 zTJ8MeaWpihBBHI;_3?Pc#zS$CY!dl`av?*13)fA!ZJRiG|3No?N`v|{HP(TMdn`>Y zIz>A+GD$?Cu$^`Pj&wrN@-jJJO>jpH!4xu(2v7?L=K&_`MOKHcG#2uiW(VA& zNJ~GAd9ZNH=Z=9?8u`mAY@#r77#oa1U2Sr{az0-jmTGhl)6W1VZ4S5n5yXh2uX}l1 z;tD^B!tfm4W)EW8{n>ic&9HWURy15P_1$)%sUQimlx*%h1>io-z@v;x6aYhrC6@XTuP*vsI#2lbQJ0?NR>b z6YSfqSX%T6as|Q`{I^7J=z?*AA8PwI)o5?xrSY=f48r}qdy*V#P2<@H6kQ<(f| zEWK_k6(x03lt~Nbu<%5f3g%2jI7ypvq}(Q~*9X*T=CYNNi*#8ew<73x^6;K{2JB2- zh}vh@>xmtSFRaypx6IU*W{Kd{hovHJK(MPd8R?c9{5iMB{1_a?D`V8*dP7N)CM8@t z_{J2$h+ZTMr_yH3Zpa^6@AA4@ufrx*Ef*%-}U=GKZv#;%rq#VV1|TFj1HU z6tqVmm`ZF+mo?RL4OQr5sEiNiubK1quRU;9R16dQES|2?llM7F3=y$MuI~h&Wa1r; z#B8}d(NG-&ATgIsBd(Np6Fcs*t*mHLWlAo*eAMB16g7~^-<{XF$5p2&c|ZAGzHR;V zwZKbCDcsI-?iR8r^%4zxA4Eg7pt*S*)JH|5)6F7lLEZSk+1(*Q?iZ~V`BZ0n$ABP= zpW6YWYk+vf=vk6u;$7!KvUt*u*`MxX%FIQL&LL}~FJGlmUVd!E!*#nApO3^tH~eOz{$a>omixnkFAh&VGEHDn+3%(6B1u;yS)DdSI*daCPHfrbHfU*HQU7kV zP*+zOLg!rya2J@>Qs+`+62l0`svK{`F?zfne&fp7WG&z7_rSj94hsFs-me{&)x;`y z4#+TtV5F^svT$D?aOznXxZ0gOeZ|XZlhvy6DFL#mM!NbDZO_BZ(-f|oBb{Hk3Q0*T zDI8VCq@7!$Go2(6z2Qw8v6UTQ-n~v0aA@KA_0iG&?^Datm^e9woMT>+lUB~tZoOiR zn`&IjInDM{)lZ124FIrrbBo)BMakK(H6qG5i=v~>z>Fp_(S3SLK1IHTYY_l5UDA9W z`crdoyZ`h@5kL)TE6_zn-Ew|cj7j_+_R9RD!NftoAD5l{C~s`+O5loS_w*=F{Mv(> zZn+c6xVO8f-wa}_LZ5Yc?Xt5vam&VNrHRXhUYn}YaPJ*Do&J#_7azH&8)gw4awpK6 zkfkYb+f(}3qCr_vb2A^QN^q&0Pwj~q8c|IAQ5^X-%%Ic0a2ust z`7c}5+hAtdn_T-J@0wiK&eUzppJXXaiYcm(71uD&^n)KB+!`x1yR;D-6T0Epwf$f( z=Q#T@CaiDc_cw)!zVN1~<8c@99k#sIG~|~^^6c`ow1@g!ml`9fq@&wE9LgRndjAHt zmbCDv$4N3zIbiQwazRy2gTPYKSnw{Jw|_GpFI@TAIb|8d&pqBTQ#m8N&X zOxvGQD3z$~W{l8qTkxW>ae2T$egKI%S;>ai5N z)$_?Y!Cm6i+Vms<{(IA3nAz-W5#e&G$v4lEAc1SVWv>-W*ZmXWU9St(RkEp#(mM>X zq`gjZW4H^#f{d~s1j zHNVwrZ1q^?8h5+&5cN@1`}A+ynR0_8Que5RYvkL@CpcDQR;;e|-0?OUMdc^vrrIy8 zu6+H$q(aqrniF@VF=|s&ZotK#@Tmd!YRgEMEJ)P6t+Jv(hes#4V$be;=x~?T$d@7K z`b)gM$7s9xaI^vTI+FM6M$e*mKPb()@F~{caUFf9qcLFENLQy^RiDi!&;~1WXpC9= z+}5II#C^he5}d%SZF9WnoSWoke93Y3`y8`J>q}$WE1`hmwQvzmkX>&39{omqs<5WW z=t%qf5ReLSinOE*JWA;{H=lJhJKXYqnaJPMUY^AgT8LP$__M>t**cL6&kYX$RXtL4 zTW@sfuJ2aH)4g&ZRX)kkyo~1>hpY$0p%iltZ4L%^hu&NH{Q@d_yNUIM*r@2QH-~$j zZ;G$63GZM<=)xR|lBuhIuml*m@bK_Vk?0*oxwY)F9q4}5D>jHtyiSJAZkXRBGJ+`3 z9<^r5`?J!qoM|%}1*u}tr$6_KUikNkZV3NgEg|5Mw%7q%jBl=z2NW3D^zMJ*olon>;9 zt2{V%hMi3~>e{x7l>@G%D=s~Ifrw|t0e2-bcHv+ByFZXl*0LJteht}ss&_LNmMzWH z{y8mb?NbNYD^11f4IFHZrS2o5*jErlEn@szfQJBnjD%V=*Mf4#<7XrM5%AtM84u&p zw+k|S9|KP9w9VB052y?Z)Tf0P;Q~r3yrwtx+R)3R#b`M=_Ip|m`E~o9_nvpe-1&?v z^Ks>4?i{ui88P3^GG6-@r)!SReuGNBo~tbD4qFlVfWXI~6PyTG+-4UfwQ z85Iv>E7z3DyBm4s6%2l?6{S3A6rZ%K==8Lu>P7KONsl-gHd8C zQ)t&+H=obPI-42L78=Gdq!T>9OwGneEmD^mvtgoSMk}l#aWZ;)*odQE0!@V~HQbg0 z+b22X`VZen*No@h9(}40Ak5JEMi7J)5&G;c6FZfvPQ^_eP%m%YT67%~qZ3BAykV4o zcV@<2AXttsRTz+`hkF_&g*Tadz_=4AnzPvoDH}ZhU_|~A<84>4oAegJ*BhsCkEwVm zC!KmFz*4Jt`i8(rc2fQtMuf7)q?(yC)1`F0g*|CgB;2;X*}v6^_c{GpcfEp=SlP!| z+#WdJlxPNeINkDXMh|&GHrd~)pNRH?U%ntCzD=DHuJ7Nnp6kHUYxyq4n@27&CTL*lXvh0z*ovOq`k5pl$UMumM z3Lk4`z$Y+8``3I#I z=}cKqzIr)`1R|QyBPd;&YbQ(IY!~7Ra4$?hw`-*m_6~}|n3OV5LCigs{(K_mQEFgb zX``}b*$6_X-r%7Z&2)`VgSge_wPMB%;{bCrv+=Y-)=tia%Pk!vA3=@BzOoy@8h9*59!jXc0^W_5Pxtc>=&7xGE^s$s{~fLnTtuKw0yg_>p9q9_qgtNJ#aQNC00qWY`7_270P{Nxhr_ZBk8Wc5fiab#ef1W zoUBc-`;yM)TSvO^8rX@08g7CgF^OIa;XUVHIE8)OobkH?dRr=nDnfwW80b8`fg2>oK;5w|w>*NMprr$2B2;)X?l$l&u%; zseR4oNLjhJz=Vio(030@I`;24*>93m!G8u<Hrt`pqPS~2)d<7A@9-KLD;!L1)1xQ* zAF=AmAMqTbF$-nxMLLd##XJ7gj&?n^s_Awbqkbx|)PqPXhV1cnh^kW+v9VmEP|QPK zf4TVRD2+X~9BYqn3+A(HW6@w`^ea}}ac=34Z<-ipjdf%HeC9Rc_Zw&vgWqgvA-&RHWXMW7W|>@_w3k>X z_4-m^=1s)~T$8WZyoaz@+z?Uv7}kPAEH6uu7r_Ka1eEW;-FmuU8=IYsOUv3OVLH+{ z7PWb2G&H#Zvvm36FE+_8z0~9=3Z9?lOn$dEm~AM>|A_uf4XNX{vW~&~FmMPc8N{Co zPm9~FOFcE4t%>&38yo|RH-dT1HDgIL=n*>uZe<|Msw{)%lNE9pBuzS+gqU8&5yUZb zGrixNtg;ErSBWouDSNj>QI6M&#>ye7=&M1dAe}LF;4WJOU1_$)YlY`WG3%)-X~8xR zmNk8M+jiM@*$O1o$)0z7c~$`8rA>*UuDqgeC-kSq)V=(}WlW)}3{&{b_63H9x5V8y zZ3PmP1x9$N5e;1fzm(5LirJhOB46U@jTU5d;azbYz1xH<%w`@V^U-0$$W){Adh|Co z`81WJC*m610a%nR?55fj!(>sFeGDY-C6uf4Z$RCZ+BYQd62S_|f`_^TSw9Sm$TA~s zo=Uz`4SKYz&+DOS)c*osx?5^$?44TE3oF<}-BB@B*e7S*J3%Uac@#AYri`N{nT$`^T_5w3ZsEoV`4vAM~intVm`od*l4 z*kllqRZVz%)nJY03*KeT7tbh@=Zg_OE*gO|Pec!+G)g3wg>y|s3CXyN+4cDzN;qMQ zyT48{m1Fl*F^sb_S+v~CTLuj3!0TMcn4Zzc(MRZvRE;W>vDhudE4F#ywndP z#=bt^^d1D@>jv!qv9g}-v=V;UzMtUGE$_oXyO;6}Go12CtMroIk2}=Q6Y&?^xY-(m zD6#^rUtH7f%KIG``pRf!pvh8otVLUR+mg`6qW*(YCeQ64PLsCWT+_l zaz2{RxEh&#D^LDAIDf5R(k7j%qcz**6f~B6`9o^43|{jPlaDS;DgvuNj}O}kp|cf zZFCKrzrJvI3$71YzT8Ov_syv%8Gx%;5NcIL{rgt26B}GwCZ<>e1mwTI(0%~!KBWzJ zH2%8GWWmBc;@Kuvl_(^(<54>AE&vxb(QZXGtR%UvkVk93Sg7w;0*rjJGKz;YRsmi(yLql&F_?UccPNf1`d5dH$C=!`-y8F6_z;dHX_$pWY1&&PAi1Nh6Ju@crnzxQ->004dYptFKz+Q!tx*t| z6gKSqI6-*5H=}j#ACxpa9fqVMuN#yJM2nAi#2r_@h{ic=*a4x71*8+j*w zke`x{f{*jZ-(K^5)%%o1DPg~TJ&@OfN~S~50EOZG6v#o_$idCQUeK^Vcx4OwLbU$a zK`{dEjoB1u|3P~}BNb5?KRsH*a~$0WwFOWzUrdZ@$-{XDc)<@0lF|ZWB)Bf&N%?u_ zIv`QwUl;NDj(kVRP~RHMiv)!r$n@P7($Sb{ko30N3#Xd{P)~gd<%j2hP=3O)i9?I}$faBy!4V-Q_2FJE8eo6ABgswas>UZ zwM&W)yKU{j!BrzZsDUA^Wu6u_NIL`y*6=j97ojN2<_Kabf;RC|se0 zzd2VmKG2}@{Y+WZUuxd9;692LaW<4puv{2V^%^iL0k+toK2zVPjM>`5!yacR6M)N! zfLzZ3-oJC-)pz9enbym9igyt67wdZ`9<=z;lLvVL&GVGFxei#!@DdOQ5w(iY)=tubJRon?^ls&gg`fSm$Ye5YIh zr1p7zpo1o=GCq%Hg31^5Zn+d%w3!vVCHb6=^Okh543nIv$t4q)D@35Cs2jQDRiC<)>XIxErsN?r%nvy@ zPD?-!Njeg>(g@iKd9|$;1lA%B5j%e58Koe7F4)dsXp*=!gCd|w3MUepDvH2V>8NC+ zb{w{Y=M?v{nzQe!F_mZ{S_!hx#@|29mGVJ9K2BeED&Ag zY(Rbj0=HLhB^o0ENtG+NznA%8EvCfv>ir*_zIh%y*Cx{A({c6p0x#qM*o2pTKna~t4+Yg?_#<&2AmQ-KIX z0>)5&Au_%;r*xP?<#=MR9+a-*Uw83j`jr?XVhqw+hWr4Jn~2+)>sWRVCfx~6$B50BE@Zu*a1i(pYz(I{|Xd9sr+osX1AuGH{!1XGI&r9D*u{&I=Y9SJEjfL4bQ6%E0E6DOPlBDa9k$H$rHWqhd1Rn zQdRR9!eUDi?k~?ykoO5BuIH9-e*3S%C4j;GBD?{*3Jq?3FWv@Z9Jtu;?>Fr&Bt9s< z$>h3rQm~#?sAA>W;c|hu`~u-4MHuu@7EyafxIbdkf$O?jAR7aGy9p1jr?TJ(AA3o^ z(FDQV>1ztjQB?eY8N0|Ayv(9(F$;QG5`*nXv8K;lva7(dQ2v}!rivlJgv1+f1t4z@w{W_baUs7(01)MGSEGaG zVOz{ok)!&iWno*dcyhZLi*0JK08XJ<6{U6gM!A`5j>p9_0YK)gpEl0@gw!|y^x%Ck z*!_?{6Rm^u86OSu>}8XiHNQ7LqjIx=ZY+Y1Y0?QMqw-q>(NACR%)od4^kES*E6vCA z3G#kSC~6knQi~?NScXNx2Bg^Q8yu1|jN9{epC0MxR#G#Q%H3zF60ev0^8vTMANX`+ z;2i~k7ejr=1M;eFenHF%VpM!$prvPaFA}-|1R1M>$1Aq>PibtkE4Iw zivn0waz1B`K?74z8K)~990i`O{AVldC zd}?(MTBm=jjE4-_;8|oB$gB_?He5&h#a^fsV;>@n^y*oqdpSaPAu$c$ge_n_Wp=U(2z2Kd{&^PKp6D+B7-fU!1D#`{KslP z_ZL{6;C~Wgwr5rMa}UlT;f$R)&^S`QCPTk>c~cvqDn>g?!Nsj>DzOxIU3=zpKY~;04_0sxl~|h zoEhC*x7P6acSf5WNAUK>OznJkXXvPDwPoa0hggrBoTwWTI z+UWK?sbUjaMUwKmy+FAX;$)eVPkkMNO67OS-0<-s(}rPN0A5r)h}f@e zI$RM$zy367z1^|8aKUcg+Yf>f2eN;guT_}g1!o37FCkGAC<|V22rE?n3R$x@R^@u$ z9CF_-uy<3AzI1QwY}W!ELhVZ&PY`tM4yVUkQ|&MDKLv?nXuALCHyg0J;_zGqG~GbI zHT4nBhCec$v!1Jp@1SsJ^}jP8VP>|1ETQIVQ4Ww3@Xhl{rQoO&!!bxdq;o*J9?k;f z&-C6E0~>nz+8F}`+cs7FVt_aMa#|R9D8TyFdv!dkxsG{C3la>u%vxh0+%(JS zdet8um+krW7B*k_6CN07p;GOVOWr7u8dEaN_CcNm5 z$Hx^0j6=l*+b0!Dy{)#>8=P3=iL@^$o zS20^@&-nK%hN?mG+i{_^dEHg=gca?|+RP+LVCD5yd!s|#Go-u^%l?TeG@zUgCOuSu ztY(A;%u%cCqy$qj;caOu0t}crJ#l&DzL2s#0Ent;oUH=Qu(91uCD?V?p@AaPy`v&W(%yW$)f=}9_r1+!tp001^3*AA11tEb9UFiqy%lF zJr&SFZBg=B3T|1a|pmW0ctHPh1)`060@ zynvN9I0YCe@ix7Q8f@nnlu@acaBNWaJD~Y4lc~n0+&IXfsQ(mGe=?D0#2WSyj%azQ@H*)C--jkNUyHxu^a~q-8$yr#{hfB&tfcd`!ox z_z6Ug4f0!>e%cewee|QHDgoT#PMK-Rj(E1-8UI)>zvp?b%N09bC&r2M*j8%1SH~JR zBWV+9+j3iSf$}E6e(Ju&`ehV&hm32+(r*}4gq_GTIMLoe;OwxFwe>xZjoejgqbemh zFEJYc?X9&%@71-a@)UOty{h87O#1ZsN1uA&ct!=T5?BM2vb~mTqT>$Ey`J-D^`HRm z7w^w`)cFJBWsUOD;!_zoa6pMcG7HEgo|!{$;{{?PG?a#Y2h8C29&JE9KKt1zb>M2mmD5i`cNHCuGgcKmVs^4-er~ZePOR}zC z_`o+q&hOLR`3q(`#jPIV7n?;Bu!@-a@1LhSnla?h9F<-p*K>k9f!)NjiaDPabf1H^j z_rm!>>4nw!LQ!In8UZTO!t`8mJXR9|1%8hh3Y6t$0RJi-IC@#g-w_bys}rmO9tHXx z30P1x6QVdEE!yVygi^=35cS~`%Y|nK2KKPH{jt+sNB9T5J=mhI1=QWvqb9j3L&1csZFY$DoOElPwF5I0=ZiJUpFs`oei3QxPzCf3Vw|P;)2h3C^{AIuNU0Y(Wk8?UU2WWcYw zpt#mTGm($#1*>1_YFX_RyNKj4tDr{R0`jNx+?>sVAfB7p4&giN)5 zzw95eLp@tThj!AogPAP8VCyHoT-Y%R(&Fu`Lht8X-dwE!SJDj7scQb(X);KkRLcHy zZRA2TMD79cGW6r2SP9MuomPr9k(}+v=0bZ3W8R^tBe&9#@^0@fXm(>`Uo&^!2e3fS$WFkSWnCFtGL|=_}aonFec;@$uqY7qO z@Z$&>tz%6KB_5hN>Gg*KmA|74^7SSr6*=%!B{m-Pzph9`?usH{PS>Bpy+xo+!c9*O z=m6Iz)+iEXc*LF_5+{$#w!wCg-+1bUX!Rk~o1g#QLg78NT2ohIiPt17waB_hPSUd%Seo zlUY;5*T`&sL~}7+<pQQoCiwK?ckXct|KXBG;zjOlVxq1MbBL<}0EtF;e6DI6fA08_H_qCJiSvSV?%aX>c$5birBPP+q?Ku}2p zd6k)8z!WH!BMO8CF}B83(Orss*-6wO~Br!lObU0z@o5M56Bt$PXllb2R`kbBSY G?f(IBSk$@z literal 0 HcmV?d00001