From 7c5673331d6a9dc60552706eff0b40cd38674e56 Mon Sep 17 00:00:00 2001 From: Gitea Actions Date: Tue, 27 May 2025 21:26:43 +0000 Subject: [PATCH] Auto-update blog content from Obsidian: 2025-05-27 21:26:43 --- content/post/terraform-create-vm-proxmox.md | 559 +++++++++++++++++++- static/img/proxmox-terraform-new-vm.png | Bin 0 -> 39412 bytes 2 files changed, 544 insertions(+), 15 deletions(-) create mode 100644 static/img/proxmox-terraform-new-vm.png diff --git a/content/post/terraform-create-vm-proxmox.md b/content/post/terraform-create-vm-proxmox.md index cc87a9b..97f1e64 100644 --- a/content/post/terraform-create-vm-proxmox.md +++ b/content/post/terraform-create-vm-proxmox.md @@ -54,23 +54,18 @@ For the Terraform installation, I followed the [documentation](https://developer apt-get update && apt-get install -y gnupg software-properties-common # Install the HashiCorp [GPG key](https://apt.releases.hashicorp.com/gpg). - wget -O- | gpg --dearmor | tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null # Verify the key's fingerprint. - gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint # Add the official HashiCorp repository to your system. The `lsb_release -cs` command finds the distribution release codename for your current system, such as `buster`, `groovy`, or `sid`. - echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list # Download the package information from HashiCorp. - apt update # Install Terraform from the new repository. - apt-get install terraform ``` @@ -124,28 +119,562 @@ pveum user token add terraformer@pve terraform -expire 0 -privsep 0 -comment "Te ⚠️ Copy and save the token given! -### Install SSH Keys on Proxmox Nodes +### Install SSH Keys on your Proxmox Nodes +This step is required, if you are using some specific resources, to execute commands on the node to perform actions that are not supported by Proxmox API, detailed [here](https://registry.terraform.io/providers/bpg/proxmox/latest/docs#ssh-connection), this would be the case for our setup with cloud-init. +We could either use a SSH-agent or a SSH key, I preferred the latter, so we have to generate a ssh-key and install it on your Proxmox nodes. You generate these keys from where Terraform is installed. + +1. **Generate the SSH key pair** +```bash +ssh-keygen +``` + +2. **Install it on your Proxmox node(s) for the root user** +```bash +ssh-copy-id root@ +``` --- ## Deploy your First VM -Show the code I used and explain each blocks -Add a link to the folder structure on Homelab repo on Github +Let's now dive into the fun part! Now we have our environment ready to deploy VM using Terraform on Proxmox, let's code! +### Terraform Code +📌 Reminder, you can find all the code I have written in my [Homelab repo](https://git.vezpi.me/Vezpi/Homelab/), the following code is located [here](https://git.vezpi.me/Vezpi/Homelab/src/commit/22f64034175a6a4642a2c7b6656688f16ece5ba1/terraform/projects/simple-vm). Don't forget to match your variables with your environment! +#### Code Structure + +Here is the code structure, you can keep all your code in a single `.tf` file but I prefer to keep it clean. ```plaintext -terra/ -├── config.toml -├── content/ -│ └── posts/ -│ └── hello-world.md -└── themes/ - └── PaperMod/ +simple-vm +|-- credentials.auto.tfvars +|-- main.tf +|-- provider.tf +|-- terraform.tfvars +`-- variables.tf ``` +#### `provider.tf` +```hcl +# Define the required Terraform provider block +terraform { + required_providers { + proxmox = { + source = "bpg/proxmox" # Use the community Proxmox provider from the bpg namespace + } + } +} + +# Configure the Proxmox provider with API and SSH access +provider "proxmox" { + endpoint = var.proxmox_endpoint # Proxmox API URL (e.g., https://proxmox.local:8006/api2/json) + api_token = var.proxmox_api_token # API token for authentication (should have appropriate permissions) + insecure = false # Reject self-signed or invalid TLS certificates (set to true only in trusted/test environments) + + # Optional SSH settings used for VM customization via SSH + ssh { + agent = false # Do not use the local SSH agent; use key file instead + private_key = file("~/.ssh/id_ed25519") # Load SSH private key from the local file system + username = "root" # SSH username for connecting to the Proxmox host + } +} +``` + +#### `main.tf` +```tf +data "proxmox_virtual_environment_vms" "template" { + filter { + name = "name" + values = ["${var.vm_template}"] + } +} + +resource "proxmox_virtual_environment_file" "cloud_config" { + content_type = "snippets" + datastore_id = "local" + node_name = var.node_name + source_raw { + file_name = "vm.cloud-config.yaml" + data = <<-EOF + #cloud-config + hostname: ${var.vm_name} + package_update: true + package_upgrade: true + packages: + - qemu-guest-agent + users: + - default + - name: ${var.vm_user} + groups: sudo + shell: /bin/bash + ssh-authorized-keys: + - "${var.vm_user_sshkey}" + sudo: ALL=(ALL) NOPASSWD:ALL + runcmd: + - systemctl enable qemu-guest-agent + - reboot + EOF + } +} + +resource "proxmox_virtual_environment_vm" "vm" { + name = var.vm_name + node_name = var.node_name + tags = var.vm_tags + agent { + enabled = true + } + stop_on_destroy = true + clone { + vm_id = data.proxmox_virtual_environment_vms.template.vms[0].vm_id + node_name = data.proxmox_virtual_environment_vms.template.vms[0].node_name + } + bios = var.vm_bios + machine = var.vm_machine + cpu { + cores = var.vm_cpu + type = "host" + } + memory { + dedicated = var.vm_ram + } + disk { + datastore_id = var.node_datastore + interface = "scsi0" + size = 4 + } + initialization { + user_data_file_id = proxmox_virtual_environment_file.cloud_config.id + datastore_id = var.node_datastore + interface = "scsi1" + ip_config { + ipv4 { + address = "dhcp" + } + } + } + network_device { + bridge = "vmbr0" + vlan_id = var.vm_vlan + } + operating_system { + type = "l26" + } + vga { + type = "std" + } +} + +output "vm_ip" { + value = proxmox_virtual_environment_vm.vm.ipv4_addresses[1][0] + description = "VM IP" +} +``` + +#### `variables.tf` +``` +variable "proxmox_endpoint" { + description = "Proxmox URL endpoint" + type = string +} + +variable "proxmox_api_token" { + description = "Proxmox API token" + type = string + sensitive = true +} + +variable "node_name" { + description = "Proxmox host for the VM" + type = string +} + +variable "node_datastore" { + description = "Datastore used for VM storage" + type = string + default = "ceph-workload" +} + +variable "vm_template" { + description = "Template of the VM" + type = string + default = "ubuntu-cloud" +} + +variable "vm_name" { + description = "Hostname of the VM" + type = string +} + +variable "vm_user" { + description = "Admin user of the VM" + type = string + default = "vez" +} + +variable "vm_user_sshkey" { + description = "Admin user SSH key of the VM" + type = string + default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID62LmYRu1rDUha3timAIcA39LtcIOny1iAgFLnxoBxm vez@bastion" +} + +variable "vm_cpu" { + description = "Number of CPU cores of the VM" + type = number + default = 1 +} + +variable "vm_ram" { + description = "Number of RAM (MB) of the VM" + type = number + default = 2048 +} + +variable "vm_bios" { + description = "Type of BIOS used for the VM" + type = string + default = "ovmf" +} + +variable "vm_machine" { + description = "Type of machine used for the VM" + type = string + default = "q35" +} + +variable "vm_vlan" { + description = "VLAN of the VM" + type = number + default = 66 +} + +variable "vm_tags" { + description = "Tags for the VM" + type = list(any) + default = ["test"] +} +``` +#### `terraform.tfvars` +``` +node_name = "zenith" # Name of the Proxmox node where the VM will be deployed +vm_name = "zenith-vm" # Desired name for the new virtual machine +vm_cpu = 2 # Number of CPU cores to allocate to the VM +vm_ram = 2048 # Amount of RAM in MB (2 GB) +vm_vlan = 66 # VLAN ID for network segmentation +``` + +The last file is not in the repository so you will have to create it manually, it contains sensitive datas. +#### `credentials.auto.tfvars` +``` +proxmox_endpoint = +proxmox_api_token = +``` + +To improve readability, you can automatically formats your Terraform code `terraform fmt`, to follow standard style conventions, making it clean and consistent. + +### Initialize your Workspace + +The first step when working with Terraform is to initialize your workspace. You will do that with the `terraform init` command, which will: +- Initializes the working directory +- Downloads required providers +- Installs modules +- Sets up the backend + +```bash +$ terraform init +Initializing the backend... +Initializing provider plugins... +- Finding latest version of bpg/proxmox... +- Installing bpg/proxmox v0.78.0... +- Installed bpg/proxmox v0.78.0 (self-signed, key ID F0582AD6AE97C188) +Partner and community providers are signed by their developers. +If you'd like to know more about provider signing, you can read about it here: +https://www.terraform.io/docs/cli/plugins/signing.html +Terraform has created a lock file .terraform.lock.hcl to record the provider +selections it made above. Include this file in your version control repository +so that Terraform can guarantee to make the same selections by default when +you run "terraform init" in the future. + +Terraform has been successfully initialized! + +You may now begin working with Terraform. Try running "terraform plan" to see +any changes that are required for your infrastructure. All Terraform commands +should now work. + +If you ever set or change modules or backend configuration for Terraform, +rerun this command to reinitialize your working directory. If you forget, other +commands will detect it and remind you to do so if necessary. +``` + +### Deploy your Terraform Infrastructure + +Great, we now have our environment ready for deployment! Before creating your VM, you can run `terraform plan` against your code and Terraform will tell you what it will do with it! + +To actually launch it, you will need to launch `terraform apply` + +```bash +$ terraform apply +data.proxmox_virtual_environment_vms.template: Reading... +data.proxmox_virtual_environment_vms.template: Read complete after 0s [id=d3292ffb-f11d-4588-9e97-fabc0f93cc39] + +Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + + create + +Terraform will perform the following actions: + + # proxmox_virtual_environment_file.cloud_config will be created + + resource "proxmox_virtual_environment_file" "cloud_config" { + + content_type = "snippets" + + datastore_id = "local" + + file_modification_date = (known after apply) + + file_name = (known after apply) + + file_size = (known after apply) + + file_tag = (known after apply) + + id = (known after apply) + + node_name = "zenith" + + overwrite = true + + timeout_upload = 1800 + + + source_raw { + + data = <<-EOT + #cloud-config + hostname: zenith-vm + package_update: true + package_upgrade: true + packages: + - qemu-guest-agent # Ensures the guest agent is installed + users: + - default + - name: vez + groups: sudo + shell: /bin/bash + ssh-authorized-keys: + - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID62LmYRu1rDUha3timAIcA39LtcIOny1iAgFLnxoBxm vez@bastion" # Inject user's SSH key + sudo: ALL=(ALL) NOPASSWD:ALL + runcmd: + - systemctl enable qemu-guest-agent + - reboot # Reboot the VM after provisioning + EOT + + file_name = "vm.cloud-config.yaml" + + resize = 0 + } + } + + # proxmox_virtual_environment_vm.vm will be created + + resource "proxmox_virtual_environment_vm" "vm" { + + acpi = true + + bios = "ovmf" + + id = (known after apply) + + ipv4_addresses = (known after apply) + + ipv6_addresses = (known after apply) + + keyboard_layout = "en-us" + + mac_addresses = (known after apply) + + machine = "q35" + + migrate = false + + name = "zenith-vm" + + network_interface_names = (known after apply) + + node_name = "zenith" + + on_boot = true + + protection = false + + reboot = false + + reboot_after_update = true + + scsi_hardware = "virtio-scsi-pci" + + started = true + + stop_on_destroy = true + + tablet_device = true + + tags = [ + + "test", + ] + + template = false + + timeout_clone = 1800 + + timeout_create = 1800 + + timeout_migrate = 1800 + + timeout_move_disk = 1800 + + timeout_reboot = 1800 + + timeout_shutdown_vm = 1800 + + timeout_start_vm = 1800 + + timeout_stop_vm = 300 + + vm_id = (known after apply) + + + agent { + + enabled = true + + timeout = "15m" + + trim = false + + type = "virtio" + } + + + clone { + + full = true + + node_name = "apex" + + retries = 1 + + vm_id = 900 + } + + + cpu { + + cores = 2 + + hotplugged = 0 + + limit = 0 + + numa = false + + sockets = 1 + + type = "host" + + units = 1024 + } + + + disk { + + aio = "io_uring" + + backup = true + + cache = "none" + + datastore_id = "ceph-workload" + + discard = "ignore" + + file_format = (known after apply) + + interface = "scsi0" + + iothread = false + + path_in_datastore = (known after apply) + + replicate = true + + size = 4 + + ssd = false + } + + + initialization { + + datastore_id = "ceph-workload" + + interface = "scsi1" + + meta_data_file_id = (known after apply) + + network_data_file_id = (known after apply) + + type = (known after apply) + + user_data_file_id = (known after apply) + + vendor_data_file_id = (known after apply) + + + ip_config { + + ipv4 { + + address = "dhcp" + } + } + } + + + memory { + + dedicated = 2048 + + floating = 0 + + keep_hugepages = false + + shared = 0 + } + + + network_device { + + bridge = "vmbr0" + + enabled = true + + firewall = false + + mac_address = (known after apply) + + model = "virtio" + + mtu = 0 + + queues = 0 + + rate_limit = 0 + + vlan_id = 66 + } + + operating_system { + + type = "l26" + } + + + vga { + + memory = 16 + + type = "std" + } + } + +Plan: 2 to add, 0 to change, 0 to destroy. + +Changes to Outputs: + + vm_ip = (known after apply) + +Do you want to perform these actions? + Terraform will perform the actions described above. + Only 'yes' will be accepted to approve. + + Enter a value: yes + +proxmox_virtual_environment_file.cloud_config: Creating... +proxmox_virtual_environment_file.cloud_config: Creation complete after 1s [id=local:snippets/vm.cloud-config.yaml] +proxmox_virtual_environment_vm.vm: Creating... +proxmox_virtual_environment_vm.vm: Still creating... [10s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [20s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [30s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [40s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [50s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [1m0s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [1m10s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [1m20s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [1m30s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [1m40s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [1m50s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [2m0s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [2m10s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [2m20s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [2m30s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [2m40s elapsed] +proxmox_virtual_environment_vm.vm: Still creating... [2m50s elapsed] +proxmox_virtual_environment_vm.vm: Creation complete after 2m53s [id=103] + +Apply complete! Resources: 2 added, 0 changed, 0 destroyed. + +Outputs: + +vm_ip = "192.168.66.156" +``` + +We've done it! We create our first VM on Proxmox using Terraform! +![Summary of the newly created VM on Proxmox](img/proxmox-terraform-new-vm.png) + +### SSH Connection + +Cherry on the cake, the output gives us the IP address and we have injected my user's SSH-key, let's test to connect with SSH + +```bash +$ ssh 192.168.66.156 +The authenticity of host '192.168.66.156 (192.168.66.156)' can't be established. +ED25519 key fingerprint is SHA256:kSaXpIJYpJOBYfpVqiiH8OxhpgBY9WH/ggqFHo/20rg. +This key is not known by any other names. +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes +Warning: Permanently added '192.168.66.156' (ED25519) to the list of known hosts. +Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-60-generic x86_64) + + * Documentation: https://help.ubuntu.com + * Management: https://landscape.canonical.com + * Support: https://ubuntu.com/pro + + System information as of Tue May 27 21:16:51 UTC 2025 + + System load: 0.0 Processes: 120 + Usage of /: 78.2% of 2.84GB Users logged in: 0 + Memory usage: 10% IPv4 address for eth0: 192.168.66.156 + Swap usage: 0% + +Expanded Security Maintenance for Applications is not enabled. + +0 updates can be applied immediately. + +Enable ESM Apps to receive additional future security updates. +See https://ubuntu.com/esm or run: sudo pro status + + + +The programs included with the Ubuntu system are free software; +the exact distribution terms for each program are described in the +individual files in /usr/share/doc/*/copyright. + +Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by +applicable law. + +To run a command as administrator (user "root"), use "sudo ". +See "man sudo_root" for details. + +vez@zenith-vm:~$ +``` + +This works like a charm, wonderful + + +--- ## Develop a Terraform Module Explain how I transform my project into a reusable module +--- ## Conclusion Sum up what we realized and what are the next steps, use the module for my future project for kubernetes and associate it with Ansible \ No newline at end of file diff --git a/static/img/proxmox-terraform-new-vm.png b/static/img/proxmox-terraform-new-vm.png new file mode 100644 index 0000000000000000000000000000000000000000..2485502c417266297166c207b0b6fc89ca4a6bc0 GIT binary patch literal 39412 zcmbrl1yqz#v^ET)qDY98w4jnw(p?HFEeO&m&Cs1Qgp{NrHFOOP(p}OWLwEPk%mBkM z|DgBY_5JI=>#pznzq1yLcV^Dnd%ycVXP;;9^Sq&|%JKwwRCrieSOo9iz4?fRg(HlG zg}wgZKIR)*j+HjdKWwLu@-kQ@Lo_>>4|mO_m87w-%Ay`!f4PVG{LucLwi6Z>Vf*bL zcDG%g2^Lmj==(R)8tw+Lg-6NMrcIJJb~SUzz_=0ENAi4fiU4O;)3o^=g=H#T%?{j4c zT->oif|`fLR89s=m=g8ialpmKpg~2ZnBEtIVrd?niDT2#?!Fk~Fs z9sgdW7o^uwVYNyZKp;Vj7Qg_5ru9#=%~r^c+I@Z*KEz6$^RydbR-zBDrOBIDm=P>b zWC$_cE&6`3Rw8K|b^&7hiiJgrJ2-)Hfs9^QJHHSKY^=$s6VRzj0qVE2O0xXUAPG)taX<9mO zT!9B>)V6z2a&t4?E`A{;#mW#}m2!fJ*Hs?#Qs2j4tKumd7R9TfF!;HeSb>?-X9VKB zvy+2s60lu(cJp@aUaHnn#gN7F*13Drq*s4;ICIUgpNK)C%l8=&Q1S#+%{IKjOLdS< zw2=XqUiy_y&*M&_@t^XaIDoI4Rb3)-)cP*l*T5$L|!G zb&4jD#>HATTBmfpg06zv%n<&7O6~h`8g9WX63S27+kX-AsVOM;t+Wa#=Klg0JC+AM z+x*m8^9LYOCqYtg@Vn{;=!Bgw8Aq5nfDr-M1OPSsD0D)$}t+Xdq!dnQ)m zf%;B0nDdxEYlubGuTjw?e#@}#ow*(1He_!H*{R> zH6&F_@%Wd!z8RE5yLNq3t874|%p@giM>CqyMph2W$@#eME<+5Om9DWbD+Rqgv#N0Vz&IO>m9x< zi<0EJEa=gYo`Y+rKkiIU3;b%B^d!7;G+F{a89eoXUbA+2R(PTD$JEN57VX6?qc0^S zdv=+R4bQkQeA1MzFU!EsbOwowryxw1f$j7;))84wlHj%W)r75}{Oi)0Rwbp&3MSi= zzyPx~dd-{R=b-!DwV_t|7lJ}dj1Z!Nxo{l9;9tX`q4CEZ!E@LC%X8Osd&sq~t5WSz zsJsL^3X-)A+aHWxziITu4Cj;1UtmNHGQrirO6!@pvjyBmVoO6S>wsxV5K=~McPWL@3R?)&q2Hj~h zeZAFe5i8ZG8oY}4I_55I(i{uk#eDTUj_yr&Ux@^ zMs`wqlA!{3_Rk4DLQj(;9<}r?K?mF+fk4bg245bwUC|tKnoBYd4aap=k!egVAB(){ ziMGLAlLI|39hNC89sDW^*WWW08u(UXAsTqGWIk}w80OzHaIZcw<-z(Sr`c2)SgL?B zKLjxopXXk@3T5&)+fOd3FYA>-3 ze5bHtAJ}Be(Ei{V(pceJ@ZO0u)8(SjDekAdS~U}svc__OSFIm)r3d{ZLd75H;*UM= zS?xJl65Z9T$a%dXesFNs@LLV#7%yR4sQM@nC2hO@o9W>bOhv%m0*n97`KS_skGAmBQC_Lk~;7d($x& zAUm9^U3df9AK|7kuP1*xZO3^;3gYOKEcMOW_pDD^ZE^o8z_5(jA%C3&B`32-mzxFR z8CI1(EffyNe>xA>7vTD+6!GCJKf27yuPAzTRwIHEWnr?ClvJ9>#0@!S8|c|own7)> zhaYJP6i${_79RLN_$?;$iS1zW*N-HJ#8P#|Yi(6Tq^Nv)G{3I|=N(dJkaPlT_%JT=1))BuFGTjU3+(@JDY`YUisol@OBIGs$QK#0z<<quqzwkwUR2H;@XtM=17-aRcSnwl6zw_p}`F`v+AZCR{ zwI9NveZuzpw4k;?i7oL}4{p9q!~<(Or3q)=XXYGH`~}Gn@Vq-b{wW7e2SuAxdo0hc zdOpqI<*P^urt%swh4rTq?sM(YRQurQq&HQnL z^yFURE-CTrU$_AyDHOC1rXMfz>gJwd3hiU)~yONg=b?JXAD z_o!(VcvL>CX}y3s^G|CFZvap-sFMl zBV)(M*mHUB{pBCz(M*)h^ZZFBd~_)<#QsK5R5xY@v~bOQIw!z(HY>OJv75<`S58uAY0i1A>U=PMR4S@@9P3W?u>Y0dN4R+#E=rqQ zKF|qBt`Vc<^rkJDeu)F=<9Zlu{2Z6ke!tL`N!V=AuJA6=Yx}f>0Ub)Ar6H83_-rDL zbx0`Ix*$$;-<6O*+yP#Z9;8>=YM#M;^XlkmO3siXe)ta2DrPSP?B-^}=sgn;E37Bk zZop^*UUh+SAw&T38o&FIkL{zLZ$f2FR>j0uhj)U@%7iWNCOG+Yl(b);N4n<0V*1=B%VY~?Yt#aB{p~m2<`oKT1$@M8yziE;~riwt!l6FgeyT(cc^^M0RMY1?e{1 z?Af66`gi~Z(-S#aeNK!?nbIvtE~)6Su)=@-_(3ePFB+U*7aEF)LXcp7`uqTsc;IH> z;1Z4uG$&T_m1|5U*h7Cml-|cZBs!${&s=Ooj{u_ylM>=t{bwThZ2j*yQlF%IFl!2P zvjzUqn2CmIpYAc>{=F!`!&r9PG|0Zu{JqFyyVZwjs-ONVqf`_=A6F;J!=T067PI)P zt4r=1O#*k^D{UESL0b(>ii~NUvQGSeFaA3b|6f~P2TH(Y!%Oaybmeo+e;>u4RxtA4?{Fim`ed>&LXlb4>7Mi=B>Q>~h!n|ncZ+mjo%A?%T z~DZM0ANDdu$5B^UZ< z25JeNTsVVDHf6`n76bRbIM4sQJWI+o$lz@`_o}KC8ZNQP={z;h6YggQT`TI>f$REE%?IoXgQ1NiL1@40} zCTQpTIchicTBt)0I6L}!TIk%hF*uIqb=ab(Qk2e}i3j|DAFV3q5<@WH^YoJ7VRlV7 zki$;YXDf?&1noBVsvCgMig$oH?GR%z|!rg$KcHB4>6Hn1OERWsfqD|{d zLGKoGg_A~hqRn1UtxRIb@$QBys$pjxadtbkQRl{|yj_aP4tht*>D|#FED3zF`Hp#bMc~(Z`9hv>m%6 z8}Q40mHW?17*1r}0KS;W@)5jo^2@cJxAz5*P?Ja;S%5D_Q^JRuJwN{ERu1R{&$Md1%g$y0rjm!F(g6Swp?x8M?)CC-qg81F zceeFQEw?<~H!8OCX2`uDfT?qgpe|;%f5a?h z+g_gLwlr}9IN|$qDoZ}w9#xfmdTSXtM8P<=uLaZ`NO<*6I~W21*#qD-?`9~{8`4V! zF8C|s7qeZ@icWG=3m_kS8VoSh=0yNe^2Dz|ftZ-_{j^IGlcYy1wLH>p^uWsbW!ZTlm9L zt#4!qPBMfofP8OuswG5DP9=v$Q_iYhEZiU|cIIQK^3XXP9kP5BVe(XK5QBMy9KvoC zT7{6Xq>c?2y>$9Lf^d4qD?9ReZK-a>HxnUG#5}m@Jxy~dNWWl0p!7GAVfCpWbxWNS zd0%z%OKKGz#{1!ZZ(j)s08?%f3S980-rB*Ug_#1HGfCgmmx)Sq6Eqh&AjMyR zaze9zQCOAJkO5bY2=S$UBa69bZoUy_WLFUMAFD*B$M4~P1oFO57;S$a7#0)B{}9Rl zD-7RO5kp2NjQ)HsH+d+hb-OM2mZvlQpX>_%CF{T0UL^11k>H`9vfSRLl<;FmBbk-x z3Wqg0{=W)T#rXbe{GWHE*oV}PtH(m;=jW!7)Kof`;g0c{8Q~QK@vYEhqiDhPBE7nw z2lacLmu^Mh+P_d*eRgtkGNYoSi|fAx-gd&m;<^WLB$T|i*J*HtCEQEl2TZE6#b&;H zks0^dT_Q!fANkK`jq3!$)B@J&k&%R8LA%9-yD1iYAN-_zCrb@W9+{!$jK;kSPZNc4(FS=K8u`w+fWcJVta}=C8Q$W`BO+D6x|sjK-j#``WrO z?_P{QX(%b-bm{-Yz(|Ux_KG}4Y4(C^STul;Yt1)%YUNqZ)XH*Ozq@X|CC$`}M24Vt ziqaTGCf>c@-qOJ}6!`af_fEy^0%~rH(pXqo-BYbN#$?XBdwUbbe}t0lLza)yWr@)n z&;Dd|b!5E7ePIy1l>`Q_UzeNquP^!eVPD2OK!qy0@`{U(s`{c1Uor z4QPKdC9)pEhIVUU7qVBW?+S^usp9rF)YngedAN)7`X-ddw1>{^ZFV2!*)`H{HlNy< z+x+b1c$mpM z1Ic!NJ{r9N8z&Hh;H6dQ89W(-sxU1))t|w<=nml;%&FDF&Q42Vzg9AgE4LQq zRH@ThGUeko6*P@#V>YwpZ%{4-;)gj;jJ`Kvw5p_lV??_ zE^gNe!VDYE0DY6vu5*m2DNUpPBRBTLg*Q}tr{)kQk*H|e{z8TSdm(p)asr=cT)CT zpY@KSycCB}o6%o`$Z3D`EfSf77=d&WK(N!&Gm5Lf&`+w)n@9|coBSV;OV?`-j{X|} zu@dnA3)}rqtN4EaiI@iwZOQAXyZ*5%O`Fofus9@_p(2h_u(l zSTCgd++4$Lo;Pud8@c9FX=Dkm2DQXiHyafjQ$Q}$B1Y$BKb~F1Gghi|a0H(x$IdNo ze^#t2Y*Bo)ROJsD%zruC5(XCsaW%PWF~fXhi!(WDeK%2SXnCh7y*KJsa@(zN3Jdw+ zh)URSRCF5G33vlwxq?*5qI?7)iP+CTmBOLbX$A_ShO^m|BZq!qmrob&%EGI>mCMh+ zfVBnFAR`hYzc1g*`C{+E&2wJZ%?oTDYHC!2OsQ- z&CJ0{L?H8a1a|yRP9+()ffp;X zb&_YpEZe*SG%7ZvKP;U&%)&>`D`9A0NDv5xPy2aVCb$uyQI+}m9EW0bK9Eu9`U-ls zy8y84M$xYFOpQizR9MJu$MEqU%5T$v-F6)`DiD;Os5x_J9I`Z*RucV!0L}6q3D~tb zuvBxIr-SHAHb)CA9V7!4k!D=ktj~u>>c7Vd6odNHY$t{&^a@Y)gJG3pDiM>}9=9m%(<9zHY}-Ac04F zdnM@N*MrYrCB5F}y{13Z@ZucQ7D%x$=CYyYzH_iAI0nzHA>q)Gt{^}5H|0b9zUSyEmCPgH^RsBr>jJ{pB#CL+^MpZ4JP>`#lQ(%`U8s7Sc$`(ij)_9 zDSaQnqj1>*6W|` zR*K?oMzOU`l`-T_OVkF=2DZ4TcppwqB_lkCj5(7nSoJ+6bKHh z4d%WBH`wl>x#1ecVQ#z5a5ih@FG!0@Bb-ZuDW3i&5NWXz8kqD}2{gr4Kmi*E% z6lyKJHNS{*b|08sT+y1B;iU*!bDGYzXfxgQSocDidd2YgA*=3|xW9w-8#`ZY9b{g1 zr&$+D_tEIC)h#IM4wNz|d8NA16(TK%3s;9TYd)t%&B}qhP$ofXISXQTPcP@5!E$%_ zP%J2*Zntc+@&Z0=g9}=SZvHN?;1aBpKF*nCIiF%PtV~rFx2|K)PwV)Vb~Mgl_9q`s zX#XjV3+aU86gcB183y~|1B*=GvD>J_p1oW;gv9FuX6|ULO>Q3b2Jb|qR9H+t+!Bez zWZ6=j-)Mv`#HM6*fiAhmSD;EKD4oOB0~qy1N`c>JR=i$)QlU#5J{N?crPpCf<@xbe z$Zp+m>p7n;>317K^aBnn(NxGaO7N>!OS*n(geq(l<~;48h5%WVO1#kpohO{@?R2jL zttpa*6KcSOsGj#4&uiR>VD6o>ioOgr`?U}EQGSF_QLU&3Er5+N_ioYQ2O9ESx&lX{0Nnt+_wm+i0Vt~1Cd(Kq? z&<=b~$Iet9EAnT%;*$@Q)s-865o(Ks5njUxXPr^w)R_4XaxtN9ZOw>r*OE*e1X-iN#$-dseX|mTT@XN1sUChK#dDoC9Huh;HouSdrqo zm{U^|SMA+DOUM7pZONcZzw*?wY&CgW6D0_BRAFnE1m|)|JN#I+Be& zZ9a}85t~bR@HYQU>FOGvH=6fr8fKdRUE}uG_3ua~%c9PD#?CA)) z=_{{(diyQ~Fk2qdm*k4ixi4^31}{Nd&idr*la$p37T&fCfd!;?As zcQmZ=u0CFZr%4=)0TTv;j;*Gh6!(jRr?!8B{HqsRhhhBR7jm2}_9Y6?>o57-jx`+i zZ(;$ZuD;sP{7egFRj)YDR#uO58T)bw$YyO& zuY^sx<>zR78345#hn`z{X8o=0VKd+odX^iVW2?FQaJ)}KH?Tto%r;Lp_yVh;CBb%; z{7u5#&+ukJBnnhuOHGI>yEV#i))X$Aj%#5D1_X~!Tzs|hNp_X6Tv|M6u^|WTbIv^-XNo8&Do(glio5-rxHe($F6)AkNZzJzC-%7qTN}N zEGaq_ezKR=(zA<6w%D}WxmWk6{-D0n`RLFroAT|^b{7Pa%&?zzWx4g~Gzc0jC_on- z$T)5iyljkNUW-alfLvELXyVuN5=d(ugF{iUB{D^8Hma-~l=LozFCIeo9f&D8Mbpa= z(#*Tp>T-UDDUI&cxIDeLqY18#Mtg+Fd|LhhKDBlFJ~Gbg?E}P~0Gk%$Af15i#%R|P z1ADy)M8ByQF5y#!`784LW|p%P+Dh4PzF=eJPgN4#V@1Y`uf|lqyWY$=#4c=jWD|Eg zPP}3()vhpsmi(|umAs?jZ&S$yE24D&NTW;q3_zG`dGAgddky&hu~laVcZf?k-)CJd zW_0BED+h17lI)q)ia&+Q`l@woL6*VyJJ6kkWFq?t6Y1E`fyO=hl`(*=gTwSeK@ivg zJtrY-a_&!((k4yd%6-BIyVk!%6{h6u0^VhYR+}u zX)n<~;Y}2@z+~GGZrA?L7Ewou!N>Os=h?fV<1LXd`H-lsF@{LXMK!%Zr#$g>MHZE@ zl5t;m%I;BX&c-3}7&HFyksA%7CZ5^&b@A~16`f*MzE0kwi80c|Xfc_1c6x?%8Hi$) zYa@Jmez=|CP)rV}2jP4LF~lEjo@%t(?C@fe1X<1^+>XtUOtoWPpO2U}jwr*XZl?6F z_DC!JTyKuKFhDKWQeMQrJ=1LjpKgEI&Zn~f(A*5lu4!YK(w|PjZzTy8KPffkQPM}@ z=y)51SRn{T;?VWc)nYNZpj8 z`j(}M=G08ev&cU7Rdn!JrJx7j4%q9JQWDn<#PCI=toG>}cU3`N&C$xh>q1m}WxQ zwKy)N-bp-n`c;O*Vf31|0KIB#r6C@?12u&uRRra1)~4@=Rc>7xUJ{XWHNQi4NG9c< zD+x2l?iwcfx+Eqg%z zaj42jtd@cHWXBvE0vF2u~HXYQOM@zi->QEnW?~aZ9l0yMK<89c8hWe=|O}qvXioqW@F_d?nkx|T6 zYgdRUR+uGqGfIo9Gnx!aq;7(+&m?cVYm8<;-GSV!$B%^zC_G>zmB|SJYcXokm zWM~Q9H<=IGonz$Nvdb zO1G{ZK4bzJAMzVQb+D*r-^LoKb23HN{moSxoS0w-`F%-W$4*2cI;0iho@~4Bb2)l(>TN$$KwC2E2JE zng=gl+0~{RAZbByRmPTG1r?T?jTDw!DoyaE4UY?6L?1EZuaazSCB{llvF}!k-gF$- z!3gM?W$6f<-cYu|V2)u@GWvTtKR;os8@J3bFXBsO7;*C#~m$WQT3nHC&J%EogrMQ1@b#)gg{#TvnTs z=z*fhdJ{c2aHPsnj;{Hq!R0ZR1)@aOVpH_8!m<9kXkVc?SF72EP;X_a*%0-p=|tg} zGQpE?kSxv5BjQo#UPHWri>=)fV!O%?6i|)wVOA2~bQa0Z34~1Hj}Cpi2=^S91H)az zjL~Z^U>P|l9!0|^OK*;9=Qk>@$-!*?JT^W#7itp*H+W5+d$g78`U+63?}*i3WPC1D zypQUq$5IwA(@S-EKf<^)?nRm>RmC2XZ~U3R6Ay@$n%g+=?7%_w@99osmCw zA$(cqL64P=&sCaLJbaL~!#+e^b--i)TR6@vtu`6bc=Fih_B0!do=Kwz+t=!M=;FnB zsm0+Rs0DDyt`zH+(M}*=%@^5<&dzx+HAlFQQ8Yq)Ku&|Mmdkb_mgAc*JG?W4jZD{a|%!;Z(o?B1KMux3oJ0JE1XQ+~?Qe(tuX8T7CMp+M>UrfJLeEcb@zeMk-*5Tu&Hm6q>KBt}gJxbDD&3 zo5#GS^{gc##09stwGF%`HM8LKMy1M4Rnk^zJz#(sCYXtTADbb_B zWd7$&z*oU|r)5_TOtjep&4TrtZza>Z1~;5-2vumn&i13v%RN?Hgtxc5cW=aoblCpg zjr9j(<27uTISS4J^jr%n30%=|ebT?P5_}9@SFL}k5I52lK|PTS!k`89n%g1EMq182 zU&Qz-la_AaHM`_emj78*e;G*QJNh5YijCVdxt#In_Nc!^3!?|Z+!?<}96xycT|^pb z?~%soe+|I0{lBfi|2rW3UuhcuKTG-lCFld5FuP_^^uObg);GL4Wo5^{_4*^TRe+sJ zsB+d0G`If}L!cRzB@%x#We5_tnXP=!iNn(U^QD5tT33YCP|HX9zXyC1-EKd`7jDDO@)7lZe3BO(We_+phW++ba4MCLqioULmz&9;N^z% zoJ~z{%f_ne#MD%LA|`;2i)%L)RaB@CMsNZ-7jwP;to)wWy3xf4D)Lc%a+(BixneR7 zOfxzrb6i9nxE1OyE}oaTjozcslj@J>iU%nW(2KDA-rU?A;1d(m`{o{(*Nz+s?ZjF znnC3AZh^{2FO2xXT?^FJxmBpXo10)2W|a!N>CG7{D>n{UQ+3UQGml?4MaT?}pNtOY z)@)RZHxW(&ckC&`I=hNkF_a%nEswvK+Oam;r}t%iUft^cd|k}!+}uR6Bmn_Ic{S6I zcX=;e>)*#yFAPKg{G3Syn+N;9=OEGBFm6J_oYmz&8G$vO*uhCz!U5!a+uJ>NpBbcW z{dI6UX7z6+I}QDKo*Qd*Fke?5ZJ=m#m&iz!jZlLodce%~%9RJ14v3j7*3FGGsZlR5 zd7b#smS)^t(#8Gn!J2R13BK^5$FSFU@rk`^{dQ*9`22Q$VPQ-FiI9VhvbuTY^$z6bZxXtc6hB<|VM(~7fTt8Bn$ z{`$nX?-*a$ZNVjepWBd=kiG`P?*+4mi(Wf%J4{9%H9ARQkr0UvB9fw@HG^t>LN5}1 zoRf#M0^%;c#D-k3zE3{MNwRB*uwB~`P0QUyzQ3h%_=dLgu5%OOE}?G_3Rd;ic1sew zhljb3xEiAcY-Y3L$h)fe^hEzuy*7*CPTkrtXjjT-U90tTRawECJz|szXEs?zoMwLybxAli6B_EbwXRcy~miMe-G+G=EH{yVJKu z&^c=ww+p<3<<0x=Rj#T`Cr;d?^4BuIW@+~kn)!;TJhiDP7RiQO2#GEQSL1n4#RqaSEbQm<$l z8||Zv5%HAZ#M^L5rMEuX#WsG+`RA6C!;@U=EPQhXg1uywd45I=3gb1sqd6e5TW4}9 zCE3BEHVuEP%AxA)@FG_6qdv=<_M!7WUoefY+T@kpL(hSI$oqxDyB&K{_; zOv;OUh|IkZ(a9Gc@);as4B?x@Aq2JY7mi{ZzyE;y+)7uU)G|`-XG7XC#b;urU6a;) zg^vT%CDXkRXXGd_Cw~QZWyi2(}%X;?A5)QK9SI^g6ctwZ%qxONw8*F06avY+k zhI9tb>NV$G6h@ixS8wwkj>q$o$|O*^pTSq!td&$U19Unmv~o&rAH8opsZ0E{BV&qQ zyba}8m4U%FzQCLUDR8o^La^{qCyi9WKb!uE4TT>Q*>D`OMhx zfV=#K(Wa8LE~05tO)y-=jp`F(KjyAaZ(IoS1~FmaDXt5_CZ#*&gjT&d=so5wkJ12< zlAa)4F!vEws|iW-ndCNvcd1}=T6bq4=_Y`aBjbz<01&f!R}|^JkSeRdd_UL}_Q7j2 z+iiqYq*CLkqi>Ck6q)tfw* z<#5W(*cJb(KjC?$X&>1lg_VL|G!Azk{9s1m`L63EaJEHj;Z+cg*fY6ak%RTptLD7? zy5Z5gN|C-_2?RNCLJIUB%AFa1b?kXR6U&5&!Re8w>E@wE;92(xM~RUPf>4LO)2RFMASj z{39m$287=bk1_(YN*|B^qmZ^fRaKg|L4|deS3grLDE*2ZoWX?4MEdVnjS7~|I_(B< z%!N4zo7gV9451>+KTM&@`M<;S`EQt~9|&)eNcu#fR{uZ9Zj_lo_2BN;U01bRpeeFf zRIz;qRmp|T)j&y9#4--BSr!^SPA%rDZT{aNWGK-*^*tuuQxxmfeH;q2e}OK~QHbwr z0Zf(T3=JuJ{0D3hQ?#_U7E8DFTJ?3B_@t$V0W7fDsxbJ$g2F8xKs>=Hio%d)J_OTw z<|V5z#f*=RGT6nl(M73qKhyPx zW4sd50J~U*dARNUi_gLe*&VSqB042|Kf?&`;wa*;LNYV4(Tw&4_U2Ooydhr3=fU+Z^Um3){!SG0$2=6&c`fB( z{lP$|6}88=wQ%ZKVJeE1`rMd#35OMBveqWLeQ8_uKv(fP8%CGfG`E}My^fgBJKJ6wK?wlYdVkQEVs58VH z%ty<%igOwc4HUNcX?JT4^NMp3`au4aEHid4MGhtG%fuX`q+#wSkfBtG@8d67A^r`? zU*8vmovB6D{m6T826vG04()ob@#nTmg>`}<-wuY#mpeM@R)f$$7l89|tf{)4UFr2+ z?tRmla?_K;)>hx^!X2B0!NCEnwV+4QG~x5$vbMIBMg)xt{EP6nAIv-Q9PuMf!xLjg z+QP?7fScp9)YEa;hp=jOmS{-ExzDdmEdHvCcfu>=R!^edm+U>$Ra9{vsW$=N$#9i1 zR>YW*5Q6a>5%4I$xsyz5q@Sy$DDLxM`;gEYzK0ivWp%c22#ntxN@3rkMC7k90mO`? zdGG=sL?oqt(s^m6dr@mo5Pg7to^;*;d)^@JqU-z)z9ilCXjt`UYBugiuKarjn_~=N z*-Yyj7v1n7~YEAYyYqJL9X>K}eS4qH^ ze=6Kht(}IryYznMt#Uo8un!4UvzXpx&rPb!2_UX2zUxvc5OdCLOE~r6!md8sj#ky=Y5Jv$9h^e#*gf8UmXG>soK`vx&uIv;@xUfQSqrI*|v(IOnVGe65a?IIb9)IOGV@N(WjhJFV5;~JTnbua!VzS$*wN|SrrMyYLAc7o6<@o zFF3q5YE^;=4NBw%c^#gvME}`49vPzfHgI0MDUXP8KrT=%#0Sv>Yy$vazqcW~k@<+k zn)W%DIrBWtB$o4SZrZCN>HQBJL|1_o_i0!)UT;Don6r1-$pT~scbDd za=hIT*&6dAq=m?{vA&eT~|zvy=4uhG5DkY_1W({Gag43Z`f zJ#tmsjU=qU2DCub^4f_T3%+Uld)5Ugrp_jKOTMytA2W3?g?q}fe{_EQ4g?S@_R=D{ zn=~I_FP8g>{g>U*Z4&rY$zaQZzxKx=Rce{&R6LC%9q8IYc$Z2gHm?plPb7&hgZjDJ zceE+4w)kw^*mo!8T##`74@lI0dP_$ZY2EP;H9R5zBBhn^HQ=WgqjOvU<3=E_JjUHe zL!3T#CR?()lJpICK>?xNX59jh4GjPt#usKo6uNQy?%VD|_FGiPA|JyH-8LVo7a99ZY@w=2r&S7!9wr=A)yMT^&C-`3ccjWE1Dk`L!WG}Q@l zoG(3B?(rSo{p<9Y<~pj@^|FV5yBXpC-&O_xcj}a;{||3(8C6yIw)-LoC?KIAND3$= z4T}zulJ4$CIu(!-q*Fq=y9J~Xkgi3CbhBur8}_sC|GwjV*k_Nu&p2cA#SbhObImp9 zeD3?cuIu;wo2C-!&oaO@6r0)n_3Jk$_E}5T-?lg3?Am5cSu~}mM2wyd)cJcBn!>Ni zbUu)c%KwoQW}8u8=lG#?p`bK;YuxDmSMKmW&t$NO{qGKyoA7nb=F|f>XRP6gxYXWB3t;$RCGmYs>PYTP>Q5hv9(%d9x`ZFpl!}m8h-kQg|Mu zIGY@25?ZUyQxA#?&{f3om8h4$vqoNg`SVjG>FvqUPo?X#>oT(3-@in(Qm-HLTg|1X z@%`o7RV;eWKtLXm48NS2ZJv^pjLl99J%*5liPPlUMC3GjI6Mt{I6fIS8JU}x7tr+A zk13zq`?@egZeUaI=CRJno^VHr$8l#kPNG2G_tV`!!VpJOMQAF?&pcC1Xz`RV@9Ef3 zazd5iFEjI-0{qdMwJh|-#ANkAL571CkWJRrtWnyU&|^)wrE~h=7d*p zz`ttL%H)b5dLwz+7r7&RmJY2;c2f@mAe@{TkRXLoa-mt>Bwpdy2F zpULOiId3nOE*I;?Hz8FP<%&J8a%kUMdrn7hQrWmUSPoDXg`e>7k4>e2PfDHLYjEMeVYrOwkKlQ~u9Kr&f+tV2Tvz-8Rnk1+WpIi`FI)O~Ezt3Ctc2 znZxl@Q^^jFU*Bs*7;1K_2Gg!?ep zOlPnyKzZ!rD;1|Dz6%dFQSmjNk=4m&z3~DkNI%9|K_s=gQb{_7GH@hDyKGD8I(1uA zKWOZe*`x$2&CkvfzR2|O3De-bcBoU7A=Gp`@}=mse>*G452fg5SKK&(>xG2(;}8%$ zBoje*l2xs!uBH~pqdpNMO||CWr~z^z+8o0No*#iARo6OEtdV6Sq~f~Ea=ACHH@wgR z@}E~aZaa|7FIT0R`Jl9VkfRccCcBB(vpU;YC%HbW3t*-QH(3?1AhDYE50voK5N0oFpSz_M={4tD{`M=2dA3U2oJ z!xLtoH|2=VaDH7jj~(TOy|RhTdqYv=as<&L8aQKkYLm|6JPOb>JI>tK#4Iyr6=h6f z9#`<~shfn=rNgWr8!ui@vS# zM>ZOp(nLB}G1h4ChyJq{SZLUfr;~yc{v9Ln=bdt=S^KV@8R|6min7f>%J9f-HARrd z!FV|9B|hqRX3__G4`LesfXWUIQk0|x;v*Kq0F?REg(d-FzMaj9L@sp~T2n6|E^@qZ z>-Xf}o+ybPT*0th=W$DNPX^MeXV`TkbEheZ=sw>Gf#%zQkwdIhG20Yjr;S6bk*%E3 zAk5FaRjEI|x*%*G7MNQ84utqfbRs;-2|_%XXbuatLx%)K6sxoul^8*E`p`JzPk2dZ z6ez3oBf+KOEzy!gCaZdKUpz9hH($-|f3JaGA(x4uJ!hOOd&M}k{k9ca#-(rfm)Rcb zU%44agvmur82qB&J57pO({UMlsbl{(-lf^!-+wIGPZ&)QOE7Kyw2?SGF)?vWySf^+ z^Y{0zP4T-aDW>5^yHn*U)wVUcoV8)oA!no0Wc;#P#gM+d#FD9k0dI=yW8>)xzXHdw z@$w-;>DLXi>*&%Rk4+201FCn8iyBVS>A_dPtWbB-#-g%NH?P)R2bT<^q!_=|K))a# z%D~kG?dGU{Pr7U3S={~?4qT589C9a}xAQVLoyDcfud<$CVip2fsoB%xK4BSF=|?@> zG1-_Fp4~hmCrI#p|FPWRCx`DIk);ji*&_jw9}U8!mtVHZInvYKE^TRc6ZrYBRO?ZE z-wynW8>*f**rfjKgqkFX7F6%myUH8l;$ZpIAM@j#dCzf*O)i$!#THFU;TAJ+QsMq| zaiQnM3}ME96apf~PIK-u!%+0gSv@~XuJf`w9gnn0BgijO!3eENCQOFeS7DRGN7|naIbM%~7;16^ z3=5CU47LK@J>34wQ|-oo%c2H5NZk1Ey!dVGW$m!trJ9%F&2!mKwx73SA)7N6r9(I1 z1S80kfaSUodmbDz@6HiM{B!FBx<|4)icS^q7y4OgR`{$dx;fyeA>$W=>d ztov2gfq?y67W?=WLP9|ZpL-}5LLCVc0haiv_?}d^cmF6}Ui^JMgg{rK-_3p4P5EIo zSLV1CooNWT05-pglO8~zsr*UngK1^eiZ8ThepfLQ;$NS*3k&;R_f-)LP?^=?t z|Nr!W|0@OPKlfh~y>4Ut0N;^x{h|;0M&r>ybWI$X^Ho(<9bX>}7F9`(PEASN-R|GX z+InnjZK^e2#%fyNhly<_EnHJU6Coj_9>)q*KUsm~ym7t~G04ZcKUm&Hs&xQ+@E_k` zbpiLCq{lxspKJlbEfvR@qh(X)=XqM0Hk>DT^8wB8ol`$cSGRYY5DeZ7->h>sXMkMk zN#FtE>KxbmZ?$74dR%W!EfX18> z0P+cd_11zh#M0$lfD^c*=JTk{WFmD>VMV){VOKrd7);iIk4~O$)OqgGt96 z$2YnV#rw~|%mdgzA&m9!Pa7ntqMZ&p@JAKINkliDG$+=HKh4@(Ff>qxbNLJi-nmZ+ z`k-IU2IQ#|N5;RvuDu{2A|QzLk|Cz&!nNPUk|UPnO6EdBVOsf{Il0tT>xb>>N#bx^ zeQa&hnp^YR%XR*RQ@``E<^3h?UA_dKw8`!}Mr6^@HYdT@o2#?YRzLL3XKCkOlRs4g zJ$Cx%hi5vDP>92Ak={+=wHCdnF6LuRuu2xoI4nm#ee{quEMkxVZW5X8-m0>W_>Ja;<0x=F|GRWC_kVFe0#_ z>s%6_L}01BlP^DaVK$SAny0Q53p~5OKM^_u%(`9Amjd7qsSL+Kezow_PPhodP2-Kv z_}3BJaP})0rhNmGd?r{(P8(7HE+)42_Oc3Z>sc7y*w9;+WC+`Ozm=cdy##?9R@ya=$uL`R3O z4C6t(i%lE{I8%4Tu-9I&SelNouG+LB;_X`NKkj>Ay%?KP+B`}wm(zu*!934SB9pZ5pv&+>-3r6IA1k1-Luv^N4f5~*5$5kw(a+bV1C=2Z?AvL)c(wst$ z{#ck|vBgWnHDZ0rucW+!kF(uJb;e5>E#rcKS%&z4_`NAJKv%UyOI&~w*ipZt)^B}(k) zTrT_SeL?NCm`=NHOGLGjxjJ8=&x*L{iecJ_#J2X_v{2pauGyRLAd0s%>y*s-ArUwS zk|#!M+oaFCIvMOXZkVaJdx(YdT&{Vxqqg(g)P}i)NVcPt@$KuFwQ>Q^zwoznDA$> zCr4H-3*lL1RMN$kj^FtW4O$GeWP*ZNG%a6bQR!~`)aLpa`dfeh#$eD@qGi=f3}@;W z5q}eOMMXu4ZkERr(#7WzR4WAb4$Xc@W_x4MaSe6z2&Ir;~BDQEI^p3Aeke1-T?n+wa@% zi%4YYX?NGKErqq=HYS*5VW*~+mI=bJinUw*hJ(K?hwu|D1?V{kzKHA0HQ#ldxYj82 z7~!WwV#)_MBG;N{d#|>Mmp+QVzb4uWQEKFVcYF8xAiKcdlf5DVB`eg}1DhZQ+g! z@S=K)(B1v0Pm`F^{bHG`>rY~+mP`c&U#hCNr7B;dSy1F8@cUFFs_Sz99*jw!-*Xx8 z8)`&6S)QYn`I&(JI@~DDk#z9adGG$`mt(pUS9`0xtIVb2OE24yaEdjn=#+kS$W#m5 z9z?|Pb$fRje5o;8c4ZT>J6{B;_qGQj`&e=ViDWfhc3jI{ANXtq;^wKCCXWTSdaRQk z@iUu#9}iKdKx~>hBYc)7SJvRrZM|8fY2=F}n>~=vs;07*z~psn80u%P&O!YnSDn?` zc3@Fk+$u}qy&0n?6OK}I+Y!>8P@n#3A`pOTFfg@TO-SRQYgubC|8T2QSwztE21;#9v{XQcl$ ze|17FqS0d8^6dc&|0@au+G39?WVN`XT0V{e^svL5M~aTfa=oH{#0Y=$lGn`==f#?K zyP2wke@s)suA++hwzJ>0`A#t{h@e&x>fM6LtNpTMlxwNP@oC7YVRa|%w2jKJnJhtJ z{oLx5lMsE0(+QAlL#glxY9qpm@dA6A*i6ad9+Xz}6g;W02(PH8p}0aYsTuB7;e0)| z+t|)kckL>0VKtZJS>}|&yqJ^5s*OcVM914qRceup@ z*=Rz$D) zigpo^9ra^eR>hg(_yf9_rGi{JYvFP$s5b`R)KQ=_=A&TjX#UFX+oG+H{#K;976is` zmo$kL@!R{?%`Pl%bQu3gY!NG&-hEepFY<69!|#i^vejtfby(9u$1 zXJ{YE1uDDUX$T$2e6_s#PV+~8GHhnU;u5`yV2#r{np|vR!Lh38G73`kW4tFc?g;-E zF*5acc0_3$<9Nlv45}#sfNi3BqGMSxKobZXOSCIO5KtpnxPp4jK3J%qk*alk0y!y* z!*4gHQG^bzn&%*2+OJ#6sy^jD)Rupktp0n5+_E${ClSishbW4VoSZ==jxXwR%u^on zC2~A3g?dszqPR5USbhVrhM3Vh3+ockO{3L{_-1|-MlN2MM2XKc$!OeYlds3JWAeE> zOYGX^K7QMy*MyQ)^3$5mG7I!4QSIq8q@SOBR7zh=Rr-(&2PGfC3S-@|00m~y6t^xZ7`9TeaqncFSC~6Cx4sfaTze7!GQwSN%a4cKl#5jFFS^1*Qd0Gn`lu`( zAD(HHK2M%44n1-QO9xXuaSsWYHc5q81MS%vye`32Wq!<4I#L%tu(oPnr5EtD$h9&n zC}E3fdA!E&s%h+Xi6*f%mlvMjvU4~spT2hy1yXnn8-Z_7(&9mQ%mhqT_wO;+{D8tv z@x*Ial(0yyzjn|hw#7tWL1h&1-O>>B32;{=rdkRTt88As9)y-F9vJ#Za&$Av#No&* z6B(2l6hXH82J%hNK8+9_)Y88(=JHA|Ntq$*)6bfQB??Ot&J3kIYnafIdCHp9QygtA z8^1bd1RX)AD{Q3bx`a2N=HQgLGuLghKrq56OtiCN=EMK{Y*?*xUjF@T~bWTgQ z%JYKMhF>J{ahNh-Rx+k|3s9*M8&qxj;<{etQDBoZaFPF_y7@^MX63 zAPl`rz+TC+OJ5)%P3AAbD)pJWrQMV+W1OSK`Bn2)Sn)LRgvd=^G09YqYGyc@!XQM9)uDAY5Kz+T)Iv#CR zs2Ar0Uo`N-(1J{)kYeYeygf9%coDeidHP*=Zd*7eBcJWODc`;}*0mjn7PghlJb1DG z&R^HMFn@Q5bq%BR#HToJpF(uNkCVrC_$My(`u)Sd0Y@F6X;8&jl-yI`yvuzP?>jAo ze7gLeFON+sCRX_>x1_dICxYaz^Xl(mIG)xs)iQH*B>!i9tC*VaW8~&&_*frdjgG+K zJEM*ya9CIj%$)AdY#wxxsW~F#{NoyVI{=Cn7XL9e=nti!Yn<%tB6^o2aprCQPb?n4 zwg2}C(zTJVR_$6qt@RmRcm2{dT)KEuTKi6R2PSyO4e#3~N_C{(sFlX_!T%%zLT6&x z7u0h#@dcNaClIrx3%IG=!LY39lFnn#F%53Djw5!;9Hs$cMxCs?UQWk~{nqBD!oU7b z{s|pVJt3zOoA1DKN60vTM^K01*z9a_0#~RA#W#h=JokS>UZ)q6d*Ef3?|?x7i5NJt zQccZN03njh8*M^)d;bz|-=zJ>BOuD=Ykiled6o1H2%8=bsp4v*TpNw2)0SDJlC}O_ zRwL^Z$MnRQ_}b#5+gr{~N8Hi6;*)gFA3yeJblUwiZa*_?{30EE% z?#48o{n{^pypcl<1`RMk5VZjFa3#bN{UM@5U1!8fu5F`q85SG>;CM-ZEn2_axPRNwh|I*I%`Yg)_nwG}d<;w?(~?JLT}v+wK(jhFH&?PwPt3@5 zZq8$8=g1jWv-aH3sb%R(svIzmocr7`JF9r_--o$6_}h^<;vJ&Ty-^~R%k0;RQqqzT8~UAHDiBNFZl z{@e*O$|J7HUEnAUSt)mLnBnZQhX@Xa_uQ7h*{$3S*pFm{MSQCEw5mX9d24Lt|uCQ})<=fP)5K?&Z-HAfcmC?L(-*B(Re&l+F^GlNn5{!LT16Tc-ooxpI7PJ`XJ!>1$Do-N;;o zf9Wdk7bh{3^V=KzM)mY+L-+m1nP$e|z{z#K?+Ir*asmrpf|&=8kVhqg4?b$~c6(|h z2i@#E+s>|-dsCdpgzLohvVGO8%`N$SM?TQ7+IPu}1dBDlJ-=W<;o{{P^abKvxFye3 z!lcrGnc%-BDJUdMUZY7E6N}=9>yhcC0JqyR*`pLTvv9Zejip;QViza9BzF&Uv?rb| z4+6*rktIl_ztreFHm&6L9_HYq_i+}NOdNjRV;Y_ai=Rm~Fm-V{% zBXIZg=D}PdPR^?^qx@X0^F|j<)E`>E#lOjE9T(UtF)*48mIiSPQ_WqJa02j`9!@0 zx==+TyFJa=}S2M3{I!Kwf;ICf<>jX-Ld_2Z53suXRRDl zQR`Mj?I*bFNVx1;s^r2`lLZMhKM=qFQ(-cJI9yjpa1wvM?$fxO>()k1e>J#72X-JUo^kh^be8 zEyxMVZyubo{=GY^K)Uak>MR=-D*=Sg##FVh^Xuz@fhkmPcGjO&&ogg97Ji5@orKtp zWuraxoUniP9Ch&dCCSrYnX}&rGr#mx_41bLEc4UTvacy9cfVjFep&k?50wxMyyAGQ zpnXnWB#z#Qx@o=k4A`Q1Z^%pG+Btk657%X{-et@ zM^HpfUo@8%calw@SHbea&+{6J$qzZ*ZU-i`vOU%4_HZlSU9wU~O3p6VqR3Y0*5Ry$ zn*g_cH0D(3TUmR_gC3eeo&y7%w64k1WcLORFX-Xt8U^3Bf_=O)9uZUl^pFo zbZ;Gm%0?&3+OC_9D#K}(g5GEPenlgy(9Da`BtDQ#a_zdZDq|ZSW=L&o)U+YNg1PBh zsm+J*e@E22f$fWxX{&AAHm)8xatB1x%xa0&E%%%)=r%+Z4RJGpjW+0h7OY#`>XD_j zoxoaBFqYbUOVi|Zkk-snw285i>b^|IY@|;Fp4TkZ`JiI%E=wnuFeuN?x3S7}N3Ia- zgu%GEHilX}oLo|ULEK`~C!ExoESo+xQn&1|@e(8iedE@2EDW4nm!@S$u+kT!| z<&r-J`44)dL4ze;iPjVab33d^l+BLbu24g9uEc<;#3-L`Wi(n)-X=y=et)5M?o{Q{ zUrUjbWb$*$lHZD2+*Kursof+^M^}{YQZhS*UVDi7iD{Em$urs0tpew#<@kp6flO$@ zZ1q*mha%LvqxCyHV7Bpf%vuVk3m2i&&#KhKGI*_{o`NAsX00v?YWyIIDY%$i6QUTQ2dUOQLGw;a+ilK>q0DoH&oi!=8SZ{gsM~*tqOCa8#H+1f%I(}`>Z(VrKV2TL*oVd`WJpSTAy({% z@76l}z#I!Pvm;C=H)E@21r-q`C1u6XAhO5Y!#+#Eb8Q|V!)Ev@?0?<0&&q8nn!J4| z;1JE$WF79*Spz+B898SeU~WBH=NW(v&p7Tyc-o|5+v)SYDz1#SsOVI?t1U?Eo6_Jg z>b_b2i5PN&KKC&yM&|jsPvjZCjZOX!JBZWA1^Uxnb#jK8*_Qg?)ibm#{A~y_Ek#qb zm6{A&e|S`(J|)%E&$s2R-;W>#FSGINr61@Mf93t~Wb!8={+mXP1$1|Th!ai)`aIea zrQl^#HqOa+r4i1?(XUnJBlRS&`DF{K$ggfSsk+pDueU;?8q5vD6KzzRbsGG* zWJM8~mSI(wmUmr($A!QXZb|X)JP-se+1ue74R%@v?-_cIvlYSR)>oVYcTi=zC81 zF)2iGCQ21xZcvOFUsgK~J=OF65?Q*tv_)OHUVm)FJ#B>_d)^vdNhUcw)`H>JDj5Xh zldDL8a3Y7UIh~X7s+LG%vIQ17S`I6}378d74z>|hcz`TCuo5A-$J6bd_IOdht14+d zyN=2WL^)&JDqwL%t6%-Q5buo#yjPdd?N~3N;fpwROWS$$YC| zQ|;f5B-5j13VgW;@;uJNue9v&ql-(c7^P!IZDmnn5wDA*Lo6x$$KRWuuA8Zr{QAVz zOP%*PsW77kf>VKK+;N8g0wSE{Lf>cVlnWD(aJ`CFR_uZC;ftaWUrZf7LcaWUS}DsI zksD(4JL^uKma3x#=~;qJF3RF6@%!|#0)oRn`afcp?Hb*c&yDrp<95x7_tO5s$V6~G zbpDX~n)ml*?ey!Sb6@D#K-d?lEex%ElJZA<6@}WnD-~{W%qDm=>}OPFr_N$W@rZ8| zjKfM@mxQD%>L==%4e+Si_OiI$AUBGuXTE*0o>N%j9fcEfk%qPFl@G9TDBO+!+GTh5{EQa}@1B!on7$zT+A*Qx8 zyok=JQdu|(eIqllVD-b_sX72-`_oHhHk22#J2DEaGec^y_Jb|iph@GOeFMc=Wn5wF zEXdw0k?EMX3NiZa8_ju_S*t|uEo)a_nm<`BxPssji=}=1FC`DtpB&tOA3K)rBtTCT;lw!LMo z*@?EbFpHKK;kNUH$(g9ML%!S`y^Kdtk_?jwP75L9Of64Wv)S)9v2ECrb3e==>l1jk zNax?uOx=FoQd@?a7HbnYA8)Vhqgr|+Zri)jxE}Ei4)PG{iP%ppcjJ((Vc%Z=F}Qk( z!st{|TVmc@CilcT&DA3&JKpH+!x<2D$;0FB9`LhL z*&SlLTvqZTJvB5D;<_}TI@&o{=1C}2S~jmV6AkWgU#of=Qmr_W9CcZWNDXLXO7reY z`-34DV!180*rVguH`Pj>|8sAlZ;*c(eW8yii&-Fx*{+$A;5!TiX%Rj`t*>68#rdrq zEiOyBQSKQPQ7~nY^l53&n0}0Z)%Gb%QnioQKV7vsOumj|0RbV_I1EE|&$bF7H0Z}k zTahTI#~TC)m@K4I!SqdZoL4;=wUGseOZgn0J-CJX(C-NLcWr zcw2`yanCjuxSARq(J)JSE!^FPB`6JK?4RxzhdxRLT>b2voHMz~bg$zgkUg6uQIhSr zq%-8-Lp6X}fnx`M69h4#`N&F_14Dp5W`K__2GYE4FDg`Fpxe)0S~94!Dh71hQk?q} zjqn%9Y1&>lC(3GSdF$=H5D0i7FcYO$S63%bKTnP7$<}N*1l$D>$Ob%y0I)SmE_JCj z>!!&%kDpJJBd_)|BZ1VU#DwItqinK4FXtz?s1O^JE*GMK8#|k}Y(3wjs`#saQ7+ea z1J08=;=lFffoNTVIk^`a@b=|fz!tU`K;xRlkmj^qX(oP^yd)HW{tHtuSAJ;N>HTm7 zEXcClX=urNr7_KyRFHb13p#)9*}1(zNE?kQG5bo+*4Orkm6}cakjG}`eyYP24>$r~ z=nEy!9yUJ6){?en@_#q270gjg@!k0T1T7IxR_< zc%#HK{=Bwu@1*kkSyR(z9sfmi;iG@K^Y%o6mdN&GS)7+b z5}ObM=172meU8=qCPZh#la)cW=;|quKeMO?lihgQEOL57IzQ9gtpmA}@|3bvFl3@} z-$SwN&Cy@Uz|Ic)pl7$v;Hy`OgjKzR8A$=(Dh*|=VCNuD>T1(QS0OFz)gC>1eudAG zJ>Q8_@aH#uY^&~YvT|0|&4#$3qEz7Rnb(~fBb;I|9#xF@Mip*s`LN!fVDY%eHMQ1O zj-__J?P9r3H3%sn7yXn+-rOzKQk>nhvB#Q(>AKN$_uI1oMiLjU$iI%8iA2q{66soG z)R<~u7Gp8MN|@F6dxHzM1=6}?cc_<(sDc|TH%KXGQ?i$bf(59!*5tzq#8x(KS@e;;)t(i(1g~jD%F$3$fZO&OAf2+cY=6bt)NfM3 z$xdU6QAd0?SIu_~n#))L4{utX$;fn~S5`4ZI#4hKT{g^^>I+`TY4f&UY4i%LqAN1L zND07TP^2N=oDgfL+%&sCUIEVQ5nPa4A z@?bMO$8Su-<>67AFRM%#zg}u|>9CVNvwtN~o*WVgER*S!rximS4nfSuc!v2=Iq|_? zli`nuXJW}8cc(=c&O15Bv=3@?Mb7x`i(FZdzHzS=9sHdMm9{iDm#=Zy%r(7qg_>G+ z*kR_Uhn>)TlqZKZhI}9NNW9#e&3;~cHJ{~0&a;=I{3U*6V5$+iODB=)Y^+k<=zyCp zPcIki*eJ>{>5x<;y3%=RNTQq;ZAB%g;~;J0G{JQCxG2@_~KO!Q$nZD!h8{{3)<%4y2;!WZDwyzsy#& zsMFD{HiF<%-i%EHgIWFMRuP*)J3A}uJI+}B>zKBeh4@0; zJ?~f{m~iv!(U^OI$WmiiGXkYp_qvYL zj41XVm7Ldc`>ycok;*3dwqd|4U+JbUV?W->z{!{I3@lF}A~PKet%L*0|8;26c**s7z`HutwM5I(3}Bw_PFJuP zW#DXND5YIS0Q=aWB6yNk>R|%-{TEDOcfqp02d(=}z#>a<tPI6p*kxAe=k#blW=T#p)fHg5PyP~SV z!a{Af_+Sc?<820{e&YA*hw#x%UdNdf+a1v%DEcp6$L&#TF>pQ^!k!GRttf0MVXC@L zA>5v>r8Iuq*!0f8uc$o;k^I26`A_0^b8Y?r*N*N&AGxzLQ(pq5uFMg=MsSfJ`+>fa zlbM;3PL^-BqLr?}G!GGpU=@RJNP5=%6}G0*>?2!b;JwBII}Z$m*UC_*I7Mm4CFR;X zmMB`hik=2pNjbDb0DB6=0w*BQ`y#8_*_s<`3!Hcx3jixI!xx1rifoZO@5~p_>cRw0v zD4NL=^E>_w{IJydnUdx#-N*G}?fsB`>YmY*sjX1(29r>n-P6UP*GKY8IJ)%|e1xIu z+}N4%^QONA*z2bS*EK_42}jR=PcANki$X?HUs2yIom*ruKYvb@0qJ7@$~`MrCYK&f!Qa5po_3daB( z1_cX^B;o+!H|DCqXPjK*i`5E3z8Y1=B({hl4m@< zbJsSfeHgY-HoZL^UM}OAv&LiRh;B9mi~+}ciF^J&5qH*dcz$(_I6-9p^A1Sx66tiN~~uu`qb$p z0KNl~U1{&7)I3k!b=mJuT7}hSZ`2MUo!2}`vu`%+5b7c=wc76OI$~li%R_-V5?Mvq zlcFE^5jmDzfZCM6=&(`MjLbthwI(rtfrWxLLb>-#+p>URL7FpPf#Xk^0q#+8jkiR8 zM+|VuQU$)77I;i)XUP3;>}&OZ!99ijhVgdJ6{yQT5Yngwrfrd+vjeHMxrh&Ed z%X21OX?#6*mK3+G0;g{BfP6?GkRrvsZnpI{i5AXL_I0dTvH+n>n| zRSpVBp+Bcj2N;EK&lxnc_g+ih;|(&_gC|Evg}=Og3)L_zCwTqzF@&?+>ElO5C8cL@ z$kFSZ6>DH;R|IJoO$WRGmP+TSVZbn(72&>0=>&jALno7ZOqSO0*mgbGsl^c(Cawf%a+RrwHVyP=E@~1DS+(6_YwXTf?awt!3JzOQum>TnmTz;I239I z=#!lAP)0=$A@5N?+uDNR2KKWckyX7gONe3tE@+VoUf=(Bggr@%(o?v>d&(@0LHIH1 z(^BiQWHvyqH7);!`xj8UR z74jB-go-JHirN%0xfImq%f`N8mo;fXY{A}S&5^O@I=`6!spmF_{SK8#X1hvb)* z%FZ1ISn@jwrJ-LCBe)#WjX8eNo6P-dRA!FZhD8f^wffH(&^?^ITTH=$8ger)V!!6qHrH&WM6`1bAo#0b#r_ zn+)j&Snue?m~^llIFrnZ#0dG#h`UuclAgiF9iSAmA&q$`O8Iz;U=4}e3!IDOb?vpqb-n(n zetI&}urNzWCwV$kFRr2Z{+5m}0m4el!?stCl=?g7bU z*NdnX>31DWo(c@*yces{n{c1__?UXqHL&DT-97hB^2IA8r{&1Eg9Zfo`b3kuyd8b; z4(sb;d)Jq?Xf<>DHlfavh^K;|SRj1$g5i5*_YE(?N8ljGFOJ|pRd>B=BfDk3IgD$L z5kz#G&@dY|iPI4iyk5fETu-viMMi(#?aYO+ar>$R?4MOe__Q>3*u&|1SrhB1#zIe3u*nRGjs7DH@hpXIU{T@I*WS zKGU4@a!4tJc~UsCVy@qv_I(Le*49d_wpdr7Zrfhx#mhzT z*u#yN3dT|N*pvGH`s!WdUHt*DF7VKWDB#9)KjsC{K(sk9W`L9A3SLM1YBBp9`2J_x zEYQWotCs1O*x-QYSMTry73J6Dp#R=SYXp0w|Jr`2hw$GNCH*o+I~s|ZQ2sw&5jfv( zE&Va@{f~^`>!!bRP9Jt56Qz-b;y@C0*=0R&t|DPCHeYpU^5*jdWP{T}qY8GmH&kAj zlfGn6#LIEf`^suI7GqyJo(!8c9IOOpf}nAwPmW(5(&n3Xomj<6NKP37ct6uT@4dA# zqT4&=aky~RE|{ryAyd<^v45`Q5T3O1CqnTeXLa2IJR|?+EM(4jVdunJG;w{9>?|e= zfXcE+Dh3+zrz{u2&raq6!HYE)UpiyQ9}2KxF424@Qk64wy03Oi%|DNdUBcA^XVd1( zch#e4aI;cnjrt5p4*u?32*91p5&b$&Mt*VE5l5A>0`pxE=_k&r`jz1ciL;2Z>whA2 zFThDlNA%g(W#45M&9R}w2@7^UEfFrT z=~doy3i6N&IuvtkqK;5(cu!W~Vwu_n2Ix|^E0RA$w?xlhkRF#tf9p!Mw5ee79P4EQ zYaX8638!sllFgx@&d1)2Wd#TxCJ+7FlZ1u3wXIcwiy3LR!_Tqcd8zN92tn443=e9p z)U?p-e0`vtmi2fF;Ym>JHeqqpN40G3nhQNt4&9r->RB>1}>{Drvy@0{hr?LRd{C)iLG9 zl6AGtEgt2WYDr+zqYuEMTtzgeT{ZHZ-z?;BJA{UI{~17WoQ@A z9va!C9dLnK3k4I*>{ddA`zDU<7D&#V>A)74>4;4qH}L>y>iW3De$}P4pKtOmlJ*9pu{~udF?v^)b!&>d}ISWxO;>Z7kU zWZ_3vb6D{vPMI#BTBXZP>9#U9&@hm*NmZJOsvKEJSdKJi_TSgZlr@!?g?c~3UhwP0 z!{#oKbx(LhuQL|6ykGt&UxyriK%q~6-DJ`*`uHmpMs)tV98xbHIL$<8F72l>d5Zb~ z6rMnW7)yPuTahaq-k;m*jmCFMNXAJUoK(e7-z<})@%(S4?16DK=S+w4nWuF1?R(N~ zWkhf+ImM0MP35OY#|IOi@{#ACE?nc@DD^-9u%sxc$KExd*~<8{ev@HVn|xi|2XNa_ z@$MnD-bng<>+fh?Zz8C3&M=tx(e1uhqHOudrZm@vE=Xu^S4q4=O1?IFwHArOWexpZ zX)SGHeL+uR(OZ5K!sQE%JVj+es=3LaH4N#+3fb47T2=PJ;EEgWafYxP_0T%4#j35R z4G1I+4D@@&XpWiE$$T_cCV!7Ydf=yfPKOPqiLucsbCvjLlsb&iMn6eZ;y3;0-)7Fb zo`2QuPFM6!a~2Cr`$9zb2z~{WDm@5*^5@15@Sn|6|tlX2Gr$EUN?ylgD^JSyQ{ z)VXC$Hf1;pzG(4TsVYq<;u~98F)mavbEv8wNu_@mF~fL_7J7D%sSBepOJ5Uf;VGD2 z<|t6s^Js;3dvaaYYRYUn`WLEtI3GUY*FpPA?2T4i1p6?ZV-vA6B?Qo2Zw#j;8pe&@ zbP-l{s9I(fH6MlcgXLX**C{QzdS}RFVv)adf5Z;E(52;Dy}5@X-{G`1$D?H6vGE@9(2mum7;7YGxpat<{ z>4_@a?_}o@2~EAFotwpIapp|-U`_aWyzYU}C3Q{HHn{S3;G zS7j6mvjhvNT?;TA)ob@nhoSOM*{cJdvD2Jjw)r^B_Y2KitS%j~*GgvxF8ckRp8fn@ zi51(L+uvqRkukB#hkn$~Y-nW_EQ}5-GS2)UEjwdABWB#U-O7tMQa8I=nf2AoaCYb= z%XRM>Kd3)PRdK9Y;%X}0jsc83s+b;Phd;d=XPd!wH6zG(r$03B%O9gB_rD|k*ZW-m zuX-Q%lOEU6r1@7@eCJgl8FjH;j?nQg?cQZc69;&#fLk0A4oV0JDAAfPRqF3HqfR2L=mB$$xKyY!o$)mw~S(6xWt=KOB4iWt5)5nfe!$8fSXUAogl=^v(+u8O2 zzyPe)*C7WtfZ!Spl69-QLH=hUXAzr|YzZJcJsf}L=iq}05?wcWA49i0o@D0 zT9XTk`Ys`3z&vPSZ5>-<-~?f39|F;?4?xd&bZ>HGrqy?X{LRVDMG*pvoqlFuCmVwf zeA;ecur!d`zv2?C6=u8>YW=xX=`A}W>CC9a?OA`4W7-wkZshD8Dc$mqztQq?ddYk> z{WDG;{0hO_H&JH+1(o9aMU$u3#YU`?pAxLP+WwGnU+`ic-c<0*N~i9pRSA~b`tpTO zS=V}UkffCv3N&}b$B=hTX@_B9GmWB#Btcnji{cJ&Bf8c={+F|kfh{SGW!}FI8Z>QX z!+!5;lzy1`lIXD_&xb1a54-R4*N_8SO~8ONv_O^h02i4uyp<0BEv0j~b1()59w>>b z2cht>xT{aNvsEx9DP`)b^mPZj-*ZMu!!BQaK)vCzpvfy@;PAu`kv6!`BP?oT%g{Az? zqO-lL$E|XV!*FZ?w=#ghnO@2Mgm?loTym%&F))5hny|H`HewMUUFij4(b4rUDY*{@+K2hd0VO3E3 zD&n7^Ux|sKyZw-6Y!8o4ObNb9X8!%f*dR#pRAg1QrtbNy$%cH5$G0l9`G{{-?=KLC zTyP8w!rl{B8$GjrUMBoC?>z^{Yn}-OR-KI-EwPhjaF5lC5=N^?t;UjP?Jjc#wbU?H z3R5JPtYBAC9qDd5v)0iM3vG+2qqA29erl*Fq*}F$XQ`^GQQ}GYe)H+R)sb&SLbSs+ zWME)8WI`osiXf}BnqsY!#&Sx(LPYiz+S=RuUQ-3cH{ZeEBB&`fzjptT#X}!Y5qHzY zpuS^Kcst1P>2MsEfvM<6(pKdpgVRaRs~A^OOR}9Rq>8%ezGv0((Dd0v!5-@u+kdJJ z#`Ranl%HVWOd70We|h~B*UueONS5)69x1#Kr_w@nr&u%FyV$vVE_>Wq>iIbmd2o=& zKF(2N6PG&flIw-BD)SIiNQBZJProM9emUzZ3YyTvk=ewIhfgqzk|YN{;{omgPB^h` zgKy#MWz8b>k+t)p>GWIO&%1JgB!V1uj7x7we=s|HNflP$*c z#*hS=&e;usL`RbF@@fXVp#E6GZcEvGff@shv93wJPX@67V~>!q)5|rX^N8o~#?3N} zo8Z8Hw$ZgR5ws@WEZ;WLRc$I>+h{^Vir-nwRx&DJmxRRond1=Da~BgpUb5m6WQaZg zILgkh51k%Y5H?k6#3~Wn4W?@(gglC(xej>GnG&p^*x%9L%8QC6ew1shldb2M^{ffj!|2ub>3GEWb&w+;g* zBm1x8hO-kC<8I9rx)agn=k6K$!Uyv?ygktYSV~rS``Y3XqS#Qm8D)clYccpdrcR!0 zJ1;k$4!@v@bIt@O>LXzI5u$9v5*ig)6|q>IVv=Bm6>U& z;h;yw0hXB~SDD8hB_-mb^k6x$oSCTPAQwm)VrG`09oa?-JUOe~9`vPw6 z{afG9SDYz-hdOy^Mi`MG4|QKA({J`_ z>t63bAF4C%m4|j;(P;w@D=vQz>%iBh7YK6{+|(^@27zTdroOaqnd1|_TS^$wnQt1U zIOPLqBCx6t8A(9!=GotCD?JzdtnQ%WJl^k40N|N6vkl+|9yU(CZ3@2=)SnJ^?J^$xu*`Xf|I3We`)6s^k1YKN6k-u3GtwB zK^TuXDwWwJl`#C#Nf}nd1>2T`bfNCJhb}@#oxe65jnBIEDYe8aR4J!nGCSP$#KjFh zuB{5?=d5OLR@m2Vdi86=HnsAn?g^`YF=glXoUzMfs5a~B_iw&k5rlsv%pHtC$@X-- z&TQ~ZD&l%YA<>1^xvNwFjkETckQM5iH{O49<+{;QQ(6665~QU>EjfNeMkQI8fGD}a zarKye!%p$W&1y?k=c6C zM9QZ3$}$~60#=Q7#Y+Gidv=d<1o8N_7&gbclPjG#W1zo#glw#_ws(huJLWf}k&5>z z=^?xZ8)Ij4p-s~0m2^Uv&c>6>oId;? zUC{pYb4b~e?NAfBBs2(4!=Xi~rD~>IGj|*FWz_F%Tzz_fncC^P4`PK3Yi zfaP`Vm64yrn8qi^dU@t$K!vPF46JP^xL|fLw|7$%*LDyp(2>s*Em&J?S?}6K7HztC zSr4sxGu``Q_W_pEgy8gJZ3}2k;z#736OFT+gr3o`%4+9XtdE{|-k_g)*rx08IDHWH zo_zY|+Go#FbC;3qyYs019ve=!hkgj_nDOgvl&u;YO#BwMp;?)FRlnoIbVYvhzxN>| z<+)=sn&clg<*vCv4GC8L%|=`@9%Q@}(E6hCEFaa&9QbjV`zc4%bQb*MvS_ zptl0A0lRj4klOu(6|+F~`#4g`f5o+-N;~mJJUm?=1ECX)2MkxgeuIDYF8ndH6k%~QE8h-P$N2k7w^HHD*Q9$C5TP%AxnM0YZILXt|AIaK zCu+@>+$Ej~tQ4|#j+?*<6DE~kS)t>soi)t#_#YoF=<}93JTr@b($!rw{%WVqlR9s& zytp5I4O=RSM-~k5a`ZLFOdM5)=evEj{qSnf4@fe+n}>Qe3%N=XO^~++e>|;thVMXP z&{((wLvQHsM%{ITM!46WcY#Mzg1*otm^ioNS)x-9W5>^52z-9j7=JXRV$)e`Vo+@Y zkBr0(y!dT{nujFuKT+rw_eJu)u9G5pw` zbbFo|+?Nw^d~1Hk**A})J1$Qk`aPL1`7$3#{rvh6Xs)M0JVSKs(Jfs*1 z+MJby{WLC7a^?6pDR@bMkf1XalmYQRZ`D(sZJr%o-QwCnHL4_M>Ss`oT+08HTrcI> zQ($L{LYacZmUuLDwlml44i7YAbaJrV46h$1=@$xK_tQcS*=@nW?n4}3#3Y{K|4zKZ zFhNcx7#rSR?rtlHuPQZZmjDhN%Y78Um6@tt^+^XXMs&Uyd>f9`5jbCGn0Z;@e=5ZQ zg4(P2>&p&yUmuy%?^i*Gcr57gq7b;_vt8I%g=e_s zD@0;y)b&=Q3|iwQQ44Q!g_#C z?WTeGHaeYN9-H9V$zd`Wj7NXnY8H}^%WS~2ta{MIjxZkN&+y^h=4?fDToW-LJGVhJ zZxq|ysd+srq^(AXyS1D~ixrQvMY^$tMN9YpWUfDN^@`;>_xEgGL+#$2)U3HpjYI4zHQcZ+TpJWyX4$JQY7uH^SC*n$8~veb2JIRK+N1{V}`Wfxo*(F zdW3u4BSlx%0#Zw;-yRLEC4kwnA=|dF{m~kjjI!R}jLb2*#h8){Jlxo9dWE44q~_>Y zU=F3ClfRg5+g1VIf{g5osoHss49iOEb@JNxC;ZC_0SCs6rSj|H!S#~i7p09aY!GhwG>oB9SOSxt8ERi2~^7VofC@mUGjDpGH8vu?bTzW1w?FzLFg)y=tc%`rorR{`$_3~wr5-3a2#2F*d76D zHyAGq?29iCtVuAd9=&0|&bR!9v@vW&iW55x81fW4?Wtc5la@YESXhX{1Omz9G^Nic zasC~z8El(eQ{z&r%g2QeDD+EQLC}{kM3&GsXR(V{Q2`?#Za)ENF(aE1le=KmfuYAVab6}UtN>6h115$@h!&olxAQ=e=-fuQ{D`s48j52|m=KffKk>aj5^~?E z9(9E#xs+U|hXY0y=JD}BBk`|@2eO@ z2#djP8bm~34k5y;(pA_0x^(bd1F!%#F%BAnxxiHB_3y_P26R%e@0oR!s0&+YC3lsUu&n2$rW|- zt*