From 1c9542cbc2993cf9b782be50f3ee7b44c5c90ef4 Mon Sep 17 00:00:00 2001 From: victoryang00 Date: Sat, 5 Jul 2025 14:53:54 +0000 Subject: [PATCH] up --- src/48-energy/.gitignore | 32 ++ src/48-energy/Makefile | 141 ++++++ src/48-energy/README.md | 73 +++ src/48-energy/bootstrap.bpf.c | 112 +++++ src/48-energy/bootstrap.c | 173 +++++++ src/48-energy/bootstrap.h | 19 + src/48-energy/debug_energy.py | 102 ++++ src/48-energy/ebpf-energy.md | 70 +++ src/48-energy/energy_monitor.py | 473 ++++++++++++++++++ src/48-energy/energy_plot_20250705_143910.png | Bin 0 -> 162157 bytes src/48-energy/test_visualization.py | 56 +++ 11 files changed, 1251 insertions(+) create mode 100644 src/48-energy/.gitignore create mode 100644 src/48-energy/Makefile create mode 100644 src/48-energy/README.md create mode 100644 src/48-energy/bootstrap.bpf.c create mode 100644 src/48-energy/bootstrap.c create mode 100644 src/48-energy/bootstrap.h create mode 100755 src/48-energy/debug_energy.py create mode 100644 src/48-energy/ebpf-energy.md create mode 100755 src/48-energy/energy_monitor.py create mode 100644 src/48-energy/energy_plot_20250705_143910.png create mode 100644 src/48-energy/test_visualization.py diff --git a/src/48-energy/.gitignore b/src/48-energy/.gitignore new file mode 100644 index 0000000..725f0a1 --- /dev/null +++ b/src/48-energy/.gitignore @@ -0,0 +1,32 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +venv/ +env/ +ENV/ + +# Energy monitoring data +*.csv +*.json +energy_log_* +.vscode +package.json +*.o +*.skel.json +*.skel.yaml +package.yaml +ecli +bootstrap + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/src/48-energy/Makefile b/src/48-energy/Makefile new file mode 100644 index 0000000..7437c1a --- /dev/null +++ b/src/48-energy/Makefile @@ -0,0 +1,141 @@ +# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) +OUTPUT := .output +CLANG ?= clang +LIBBPF_SRC := $(abspath ../third_party/libbpf/src) +BPFTOOL_SRC := $(abspath ../third_party/bpftool/src) +LIBBPF_OBJ := $(abspath $(OUTPUT)/libbpf.a) +BPFTOOL_OUTPUT ?= $(abspath $(OUTPUT)/bpftool) +BPFTOOL ?= $(BPFTOOL_OUTPUT)/bootstrap/bpftool +LIBBLAZESYM_SRC := $(abspath ../third_party/blazesym/) +LIBBLAZESYM_OBJ := $(abspath $(OUTPUT)/libblazesym.a) +LIBBLAZESYM_HEADER := $(abspath $(OUTPUT)/blazesym.h) +ARCH ?= $(shell uname -m | sed 's/x86_64/x86/' \ + | sed 's/arm.*/arm/' \ + | sed 's/aarch64/arm64/' \ + | sed 's/ppc64le/powerpc/' \ + | sed 's/mips.*/mips/' \ + | sed 's/riscv64/riscv/' \ + | sed 's/loongarch64/loongarch/') +VMLINUX := ../third_party/vmlinux/$(ARCH)/vmlinux.h +# Use our own libbpf API headers and Linux UAPI headers distributed with +# libbpf to avoid dependency on system-wide headers, which could be missing or +# outdated +INCLUDES := -I$(OUTPUT) -I../third_party/libbpf/include/uapi -I$(dir $(VMLINUX)) +CFLAGS := -g -Wall +ALL_LDFLAGS := $(LDFLAGS) $(EXTRA_LDFLAGS) + +APPS = bootstrap # minimal minimal_legacy uprobe kprobe fentry usdt sockfilter tc ksyscall + +CARGO ?= $(shell which cargo) +ifeq ($(strip $(CARGO)),) +BZS_APPS := +else +BZS_APPS := # profile +APPS += $(BZS_APPS) +# Required by libblazesym +ALL_LDFLAGS += -lrt -ldl -lpthread -lm +endif + +# Get Clang's default includes on this system. We'll explicitly add these dirs +# to the includes list when compiling with `-target bpf` because otherwise some +# architecture-specific dirs will be "missing" on some architectures/distros - +# headers such as asm/types.h, asm/byteorder.h, asm/socket.h, asm/sockios.h, +# sys/cdefs.h etc. might be missing. +# +# Use '-idirafter': Don't interfere with include mechanics except where the +# build would have failed anyways. +CLANG_BPF_SYS_INCLUDES ?= $(shell $(CLANG) -v -E - &1 \ + | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') + +ifeq ($(V),1) + Q = + msg = +else + Q = @ + msg = @printf ' %-8s %s%s\n' \ + "$(1)" \ + "$(patsubst $(abspath $(OUTPUT))/%,%,$(2))" \ + "$(if $(3), $(3))"; + MAKEFLAGS += --no-print-directory +endif + +define allow-override + $(if $(or $(findstring environment,$(origin $(1))),\ + $(findstring command line,$(origin $(1)))),,\ + $(eval $(1) = $(2))) +endef + +$(call allow-override,CC,$(CROSS_COMPILE)cc) +$(call allow-override,LD,$(CROSS_COMPILE)ld) + +.PHONY: all +all: $(APPS) + +.PHONY: clean +clean: + $(call msg,CLEAN) + $(Q)rm -rf $(OUTPUT) $(APPS) + +$(OUTPUT) $(OUTPUT)/libbpf $(BPFTOOL_OUTPUT): + $(call msg,MKDIR,$@) + $(Q)mkdir -p $@ + +# Build libbpf +$(LIBBPF_OBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/libbpf + $(call msg,LIB,$@) + $(Q)$(MAKE) -C $(LIBBPF_SRC) BUILD_STATIC_ONLY=1 \ + OBJDIR=$(dir $@)/libbpf DESTDIR=$(dir $@) \ + INCLUDEDIR= LIBDIR= UAPIDIR= \ + install + +# Build bpftool +$(BPFTOOL): | $(BPFTOOL_OUTPUT) + $(call msg,BPFTOOL,$@) + $(Q)$(MAKE) ARCH= CROSS_COMPILE= OUTPUT=$(BPFTOOL_OUTPUT)/ -C $(BPFTOOL_SRC) bootstrap + + +$(LIBBLAZESYM_SRC)/target/release/libblazesym.a:: + $(Q)cd $(LIBBLAZESYM_SRC) && $(CARGO) build --features=cheader,dont-generate-test-files --release + +$(LIBBLAZESYM_OBJ): $(LIBBLAZESYM_SRC)/target/release/libblazesym.a | $(OUTPUT) + $(call msg,LIB, $@) + $(Q)cp $(LIBBLAZESYM_SRC)/target/release/libblazesym.a $@ + +$(LIBBLAZESYM_HEADER): $(LIBBLAZESYM_SRC)/target/release/libblazesym.a | $(OUTPUT) + $(call msg,LIB,$@) + $(Q)cp $(LIBBLAZESYM_SRC)/target/release/blazesym.h $@ + +# Build BPF code +$(OUTPUT)/%.bpf.o: %.bpf.c $(LIBBPF_OBJ) $(wildcard %.h) $(VMLINUX) | $(OUTPUT) $(BPFTOOL) + $(call msg,BPF,$@) + $(Q)$(CLANG) -g -O2 -target bpf -D__TARGET_ARCH_$(ARCH) \ + $(INCLUDES) $(CLANG_BPF_SYS_INCLUDES) \ + -c $(filter %.c,$^) -o $(patsubst %.bpf.o,%.tmp.bpf.o,$@) + $(Q)$(BPFTOOL) gen object $@ $(patsubst %.bpf.o,%.tmp.bpf.o,$@) + +# Generate BPF skeletons +$(OUTPUT)/%.skel.h: $(OUTPUT)/%.bpf.o | $(OUTPUT) $(BPFTOOL) + $(call msg,GEN-SKEL,$@) + $(Q)$(BPFTOOL) gen skeleton $< > $@ + +# Build user-space code +$(patsubst %,$(OUTPUT)/%.o,$(APPS)): %.o: %.skel.h + +$(OUTPUT)/%.o: %.c $(wildcard %.h) | $(OUTPUT) + $(call msg,CC,$@) + $(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $(filter %.c,$^) -o $@ + +$(patsubst %,$(OUTPUT)/%.o,$(BZS_APPS)): $(LIBBLAZESYM_HEADER) + +$(BZS_APPS): $(LIBBLAZESYM_OBJ) + +# Build application binary +$(APPS): %: $(OUTPUT)/%.o $(LIBBPF_OBJ) | $(OUTPUT) + $(call msg,BINARY,$@) + $(Q)$(CC) $(CFLAGS) $^ $(ALL_LDFLAGS) -lelf -lz -o $@ + +# delete failed targets +.DELETE_ON_ERROR: + +# keep intermediate (.skel.h, .bpf.o, etc) targets +.SECONDARY: diff --git a/src/48-energy/README.md b/src/48-energy/README.md new file mode 100644 index 0000000..c075e2c --- /dev/null +++ b/src/48-energy/README.md @@ -0,0 +1,73 @@ +# System Energy Monitoring with Intel RAPL + +This project provides tools to monitor system energy consumption using Intel's Running Average Power Limit (RAPL) interface. + +## Features + +- Real-time power consumption monitoring +- Live terminal-based display of power usage across different domains (CPU, DRAM, etc.) +- Data logging to CSV or JSON formats +- Support for multiple Intel RAPL domains +- No external dependencies - uses only Python standard library + +## Requirements + +- Intel CPU with RAPL support +- Python 3.6+ +- Root access or appropriate permissions for `/sys/class/powercap/intel-rapl` + +## Installation + +No additional Python packages required - uses only Python standard library. + +## Usage + +### Real-time Monitoring + +```bash +sudo python3 energy_monitor.py +``` + +This displays real-time power consumption in the terminal: +- Power consumption for each domain (Package, DRAM, etc.) +- Total system power consumption +- Updates every 0.5 seconds + +### Logging Energy Data + +```bash +sudo python3 energy_monitor.py -l -d 300 -i 0.5 -f csv -o my_energy_log +``` + +Options: +- `-d, --duration`: Monitoring duration in seconds (default: 60) +- `-i, --interval`: Sampling interval in seconds (default: 1.0) +- `-f, --format`: Output format - csv or json (default: csv) +- `-o, --output`: Output filename without extension + +## Permissions + +If you don't want to run with sudo, adjust permissions: + +```bash +sudo chmod -R a+r /sys/class/powercap/intel-rapl +``` + +Note: This allows all users to read RAPL data but not modify power limits. + +## RAPL Domains + +Common domains include: +- `package-0`: Entire CPU package power +- `core`: CPU cores power +- `uncore`: CPU uncore components (cache, memory controller) +- `dram`: Memory power consumption + +## Example Output + +The logger provides a summary like: +``` +Total samples: 300 +Average power: 45.23 W +Total energy: 0.0377 Wh +``` \ No newline at end of file diff --git a/src/48-energy/bootstrap.bpf.c b/src/48-energy/bootstrap.bpf.c new file mode 100644 index 0000000..54e33e7 --- /dev/null +++ b/src/48-energy/bootstrap.bpf.c @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* Copyright (c) 2020 Facebook */ +#include "vmlinux.h" +#include +#include +#include +#include "bootstrap.h" + +char LICENSE[] SEC("license") = "Dual BSD/GPL"; + +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __uint(max_entries, 8192); + __type(key, pid_t); + __type(value, u64); +} exec_start SEC(".maps"); + +struct { + __uint(type, BPF_MAP_TYPE_RINGBUF); + __uint(max_entries, 256 * 1024); +} rb SEC(".maps"); + +const volatile unsigned long long min_duration_ns = 0; + +SEC("tp/sched/sched_process_exec") +int handle_exec(struct trace_event_raw_sched_process_exec *ctx) +{ + struct task_struct *task; + unsigned fname_off; + struct event *e; + pid_t pid; + u64 ts; + + /* remember time exec() was executed for this PID */ + pid = bpf_get_current_pid_tgid() >> 32; + ts = bpf_ktime_get_ns(); + bpf_map_update_elem(&exec_start, &pid, &ts, BPF_ANY); + + /* don't emit exec events when minimum duration is specified */ + if (min_duration_ns) + return 0; + + /* reserve sample from BPF ringbuf */ + e = bpf_ringbuf_reserve(&rb, sizeof(*e), 0); + if (!e) + return 0; + + /* fill out the sample with data */ + task = (struct task_struct *)bpf_get_current_task(); + + e->exit_event = false; + e->pid = pid; + e->ppid = BPF_CORE_READ(task, real_parent, tgid); + bpf_get_current_comm(&e->comm, sizeof(e->comm)); + + fname_off = ctx->__data_loc_filename & 0xFFFF; + bpf_probe_read_str(&e->filename, sizeof(e->filename), (void *)ctx + fname_off); + + /* successfully submit it to user-space for post-processing */ + bpf_ringbuf_submit(e, 0); + return 0; +} + +SEC("tp/sched/sched_process_exit") +int handle_exit(struct trace_event_raw_sched_process_template* ctx) +{ + struct task_struct *task; + struct event *e; + pid_t pid, tid; + u64 id, ts, *start_ts, duration_ns = 0; + + /* get PID and TID of exiting thread/process */ + id = bpf_get_current_pid_tgid(); + pid = id >> 32; + tid = (u32)id; + + /* ignore thread exits */ + if (pid != tid) + return 0; + + /* if we recorded start of the process, calculate lifetime duration */ + start_ts = bpf_map_lookup_elem(&exec_start, &pid); + if (start_ts) + duration_ns = bpf_ktime_get_ns() - *start_ts; + else if (min_duration_ns) + return 0; + bpf_map_delete_elem(&exec_start, &pid); + + /* if process didn't live long enough, return early */ + if (min_duration_ns && duration_ns < min_duration_ns) + return 0; + + /* reserve sample from BPF ringbuf */ + e = bpf_ringbuf_reserve(&rb, sizeof(*e), 0); + if (!e) + return 0; + + /* fill out the sample with data */ + task = (struct task_struct *)bpf_get_current_task(); + + e->exit_event = true; + e->duration_ns = duration_ns; + e->pid = pid; + e->ppid = BPF_CORE_READ(task, real_parent, tgid); + e->exit_code = (BPF_CORE_READ(task, exit_code) >> 8) & 0xff; + bpf_get_current_comm(&e->comm, sizeof(e->comm)); + + /* send data to user-space for post-processing */ + bpf_ringbuf_submit(e, 0); + return 0; +} + diff --git a/src/48-energy/bootstrap.c b/src/48-energy/bootstrap.c new file mode 100644 index 0000000..f023df6a --- /dev/null +++ b/src/48-energy/bootstrap.c @@ -0,0 +1,173 @@ +// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) +/* Copyright (c) 2020 Facebook */ +#include +#include +#include +#include +#include +#include +#include "bootstrap.h" +#include "bootstrap.skel.h" + +static struct env { + bool verbose; + long min_duration_ms; +} env; + +const char *argp_program_version = "bootstrap 0.0"; +const char *argp_program_bug_address = ""; +const char argp_program_doc[] = +"BPF bootstrap demo application.\n" +"\n" +"It traces process start and exits and shows associated \n" +"information (filename, process duration, PID and PPID, etc).\n" +"\n" +"USAGE: ./bootstrap [-d ] [-v]\n"; + +static const struct argp_option opts[] = { + { "verbose", 'v', NULL, 0, "Verbose debug output" }, + { "duration", 'd', "DURATION-MS", 0, "Minimum process duration (ms) to report" }, + {}, +}; + +static error_t parse_arg(int key, char *arg, struct argp_state *state) +{ + switch (key) { + case 'v': + env.verbose = true; + break; + case 'd': + errno = 0; + env.min_duration_ms = strtol(arg, NULL, 10); + if (errno || env.min_duration_ms <= 0) { + fprintf(stderr, "Invalid duration: %s\n", arg); + argp_usage(state); + } + break; + case ARGP_KEY_ARG: + argp_usage(state); + break; + default: + return ARGP_ERR_UNKNOWN; + } + return 0; +} + +static const struct argp argp = { + .options = opts, + .parser = parse_arg, + .doc = argp_program_doc, +}; + +static int libbpf_print_fn(enum libbpf_print_level level, const char *format, va_list args) +{ + if (level == LIBBPF_DEBUG && !env.verbose) + return 0; + return vfprintf(stderr, format, args); +} + +static volatile bool exiting = false; + +static void sig_handler(int sig) +{ + exiting = true; +} + +static int handle_event(void *ctx, void *data, size_t data_sz) +{ + const struct event *e = data; + struct tm *tm; + char ts[32]; + time_t t; + + time(&t); + tm = localtime(&t); + strftime(ts, sizeof(ts), "%H:%M:%S", tm); + + if (e->exit_event) { + printf("%-8s %-5s %-16s %-7d %-7d [%u]", + ts, "EXIT", e->comm, e->pid, e->ppid, e->exit_code); + if (e->duration_ns) + printf(" (%llums)", e->duration_ns / 1000000); + printf("\n"); + } else { + printf("%-8s %-5s %-16s %-7d %-7d %s\n", + ts, "EXEC", e->comm, e->pid, e->ppid, e->filename); + } + + return 0; +} + +int main(int argc, char **argv) +{ + struct ring_buffer *rb = NULL; + struct bootstrap_bpf *skel; + int err; + + /* Parse command line arguments */ + err = argp_parse(&argp, argc, argv, 0, NULL, NULL); + if (err) + return err; + + /* Set up libbpf errors and debug info callback */ + libbpf_set_print(libbpf_print_fn); + + /* Cleaner handling of Ctrl-C */ + signal(SIGINT, sig_handler); + signal(SIGTERM, sig_handler); + + /* Load and verify BPF application */ + skel = bootstrap_bpf__open(); + if (!skel) { + fprintf(stderr, "Failed to open and load BPF skeleton\n"); + return 1; + } + + /* Parameterize BPF code with minimum duration parameter */ + skel->rodata->min_duration_ns = env.min_duration_ms * 1000000ULL; + + /* Load & verify BPF programs */ + err = bootstrap_bpf__load(skel); + if (err) { + fprintf(stderr, "Failed to load and verify BPF skeleton\n"); + goto cleanup; + } + + /* Attach tracepoints */ + err = bootstrap_bpf__attach(skel); + if (err) { + fprintf(stderr, "Failed to attach BPF skeleton\n"); + goto cleanup; + } + + /* Set up ring buffer polling */ + rb = ring_buffer__new(bpf_map__fd(skel->maps.rb), handle_event, NULL, NULL); + if (!rb) { + err = -1; + fprintf(stderr, "Failed to create ring buffer\n"); + goto cleanup; + } + + /* Process events */ + printf("%-8s %-5s %-16s %-7s %-7s %s\n", + "TIME", "EVENT", "COMM", "PID", "PPID", "FILENAME/EXIT CODE"); + while (!exiting) { + err = ring_buffer__poll(rb, 100 /* timeout, ms */); + /* Ctrl-C will cause -EINTR */ + if (err == -EINTR) { + err = 0; + break; + } + if (err < 0) { + printf("Error polling perf buffer: %d\n", err); + break; + } + } + +cleanup: + /* Clean up */ + ring_buffer__free(rb); + bootstrap_bpf__destroy(skel); + + return err < 0 ? -err : 0; +} diff --git a/src/48-energy/bootstrap.h b/src/48-energy/bootstrap.h new file mode 100644 index 0000000..34e765a --- /dev/null +++ b/src/48-energy/bootstrap.h @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ +/* Copyright (c) 2020 Facebook */ +#ifndef __BOOTSTRAP_H +#define __BOOTSTRAP_H + +#define TASK_COMM_LEN 16 +#define MAX_FILENAME_LEN 127 + +struct event { + int pid; + int ppid; + unsigned exit_code; + unsigned long long duration_ns; + char comm[TASK_COMM_LEN]; + char filename[MAX_FILENAME_LEN]; + bool exit_event; +}; + +#endif /* __BOOTSTRAP_H */ diff --git a/src/48-energy/debug_energy.py b/src/48-energy/debug_energy.py new file mode 100755 index 0000000..e857aed --- /dev/null +++ b/src/48-energy/debug_energy.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +""" +Debug script to check RAPL energy readings +""" + +import os +import time + +def check_rapl(): + rapl_base = "/sys/class/powercap/intel-rapl" + + print("Checking Intel RAPL availability...") + print("=" * 50) + + if not os.path.exists(rapl_base): + print(f"ERROR: {rapl_base} does not exist!") + print("Intel RAPL may not be available on this system.") + return + + # Check permissions + print("\nChecking permissions...") + for item in os.listdir(rapl_base): + if item.startswith("intel-rapl:"): + energy_file = os.path.join(rapl_base, item, "energy_uj") + if os.path.exists(energy_file): + readable = os.access(energy_file, os.R_OK) + print(f"{energy_file}: {'readable' if readable else 'NOT readable'}") + + print("\n" + "=" * 50) + print("Reading energy values over 5 seconds...") + print("=" * 50) + + # Discover domains + domains = {} + for item in os.listdir(rapl_base): + path = os.path.join(rapl_base, item) + if os.path.isdir(path) and item.startswith("intel-rapl:"): + try: + with open(os.path.join(path, "name"), "r") as f: + name = f.read().strip() + energy_file = os.path.join(path, "energy_uj") + if os.path.exists(energy_file): + domains[name] = energy_file + except: + pass + + if not domains: + print("ERROR: No RAPL domains found!") + return + + print(f"Found domains: {', '.join(domains.keys())}\n") + + # Read energy values multiple times + readings = {domain: [] for domain in domains} + + for i in range(10): + for domain, energy_file in domains.items(): + try: + with open(energy_file, "r") as f: + energy = int(f.read().strip()) + readings[domain].append(energy) + except Exception as e: + print(f"Error reading {domain}: {e}") + + time.sleep(0.5) + + # Analyze readings + print("\nAnalysis:") + print("-" * 50) + + for domain, values in readings.items(): + if len(values) < 2: + continue + + print(f"\n{domain}:") + print(f" First reading: {values[0]} µJ") + print(f" Last reading: {values[-1]} µJ") + print(f" Difference: {values[-1] - values[0]} µJ") + + # Check if values are changing + unique_values = len(set(values)) + print(f" Unique values: {unique_values}") + + if unique_values == 1: + print(" ⚠️ WARNING: Energy values are not changing!") + else: + # Calculate average power + energy_diff = values[-1] - values[0] + time_diff = 0.5 * (len(values) - 1) + if energy_diff > 0: + power = (energy_diff / 1e6) / time_diff + print(f" Average power: {power:.2f} W") + + print("\n" + "=" * 50) + print("\nPossible issues if readings are zero:") + print("1. The system is idle with very low power consumption") + print("2. RAPL updates may be infrequent (try longer sampling intervals)") + print("3. Permission issues (try running with sudo)") + print("4. RAPL may not be fully supported on this CPU") + +if __name__ == "__main__": + check_rapl() \ No newline at end of file diff --git a/src/48-energy/ebpf-energy.md b/src/48-energy/ebpf-energy.md new file mode 100644 index 0000000..ecdebc6 --- /dev/null +++ b/src/48-energy/ebpf-energy.md @@ -0,0 +1,70 @@ +Below is a quick-scan map of **public eBPF projects & papers that touch CPU power-management knobs (DVFS, idle, thermal) or pure energy accounting.** +I’ve grouped them so you can see where work already exists and where the gap still is. + +--- + +## 1 Projects/papers that *try to control* DVFS / idle / thermal directly + +| Name & date | What it does with eBPF | Sub-knobs covered | Status / notes | +| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | +| **`cpufreq_ext` RFC (Zou, 2024)** | Hooks the cpufreq governor into a `bpf_struct_ops` table (`get_next_freq()` etc.) so a policy can be written in eBPF instead of C. Integrates with `sched_ext` to let a BPF scheduler and a BPF DVFS policy co-operate. | **DVFS** (per-policy frequency) | RFC on linux-pm & bpf lists. Compiles on ≥ 6.9 kernels; crude sample policy included. ([lwn.net][1]) | +| **eBPF CPU-Idle governor prototype (Eco-Compute summit, 2024)** | Replaces the “menu/TEO” cpuidle governor with a BPF hook so that idle-state choice and idle-injection can be decided in eBPF. | **Idle states** (C-states), idle injection | Academic prototype; slides only, but code expected to be released by the Eco-Compute students. ([jauu.net][2]) | +| **Early “power-driver” & BEAR lineage** | Molnar/Rasmussen’s 2013 power-driver idea was to unify `go_faster/go_slower/enter_idle`. Our BEAR concept simply modernises this with eBPF. No public code yet, but it shows the *direction* the kernel community is discussing. | **DVFS + Idle + Thermal** (goal) | Design idea; opportunity for a full implementation (research gap). ([jauu.net][2], [lwn.net][1]) | + +> **Reality check:** right now cpufreq\_ext is the *only* upstream-bound eBPF code that truly changes CPU frequency. Idle and thermal hooks are still research prototypes, so this area is wide-open if you want to publish. + +--- + +## 2 eBPF projects focused on **energy telemetry / accounting** + +*(These don’t set DVFS or idle, but they give the per-process or per-container energy data you’d need to *drive* such policies.)* + +| Name | Scope & technique | Why it matters | +| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| **Wattmeter / *Energy-Aware Process Scheduling in Linux* (HotCarbon ’24)** | Attaches an eBPF program to every context-switch to read RAPL MSRs in-kernel, giving millisecond-scale per-process joules with <1 µs overhead. Used to build energy-fair and energy-capped schedulers on top of ghOSt/sched\_ext. | Gives accurate, low-overhead energy numbers that could feed a DVFS/thermal policy. ([asafcidon.com][3]) | +| **Kepler (CNCF sandbox, 2023-)** | A Prometheus exporter for Kubernetes. Uses eBPF tracepoints + perf counters + RAPL/NVML to attribute energy to pods/containers; ships ML models for platforms that lack RAPL. | Quickly gaining traction in cloud-native stacks; good data source for cluster-level power orchestration. ([sustainable-computing.io][4]) | +| **DEEP-mon (Polimi, 2018)** | In-kernel eBPF aggregation of scheduler events to attribute power to Docker containers; <5 % runtime overhead on Phoronix & NPB. | Older but shows in-kernel aggregation trick to avoid 200 k sched-switch/sec user-space wake-ups. ([slideshare.net][5]) | +| **eBPF-energy-monitor (GitHub toy project)** | Minimal BCC script that latches on `sched_switch`, tracks CPU-time per PID, multiplies by per-core joules from RAPL. | Handy starting point if you just need a working demo. ([github.com][6]) | +| **DEEP-mon spin-offs: BitWatts, Scaphandre** | Both offer software-defined power meters; BitWatts focuses on VMs, Scaphandre on bare-metal & K8s. Scaphandre can optionally compile an eBPF sensor module for process attribution. | Good for comparing accuracy / overhead trade-offs vs. Kepler. ([github.com][7], [github.com][8]) | + +--- + +### 3 Quick take-aways + +* **Very little published work** uses eBPF to *control* DVFS/idle/thermal today – cpufreq\_ext is the main concrete code. +* **Telemetry is mature.** Kepler, Wattmeter and DEEP-mon already give fine-grained joule accounting that a governor could use as feedback. +* **Open research space:** wiring those telemetry sources into an eBPF-based unified policy (BEAR-style) that calls cpufreq\_ext + a future cpuidle\_bpf hook + thermal caps is still almost untouched. + +If you need more detail on any specific project (code pointers, evaluation numbers, etc.) just tell me which one and I’ll dig in. + +[1]: https://lwn.net/Articles/991991/?utm_source=chatgpt.com "cpufreq_ext: Introduce cpufreq ext governor - LWN.net" +[2]: https://jauu.net/talks/eco-compute-linux-power-analysis.pdf?utm_source=chatgpt.com "[PDF] Linux Power Management Analysis for Embedded Systems" +[3]: https://www.asafcidon.com/uploads/5/9/7/0/59701649/energy-aware-ebpf.pdf "Energy-Aware Process Scheduling in Linux" +[4]: https://sustainable-computing.io/?utm_source=chatgpt.com "Kepler" +[5]: https://www.slideshare.net/necstlab/deepmon-dynamic-and-energy-efficient-power-monitoring-for-containerbased-infrastructures "DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based infrastructures | PPT" +[6]: https://github.com/fjebaker/eBPF-energy-monitor?utm_source=chatgpt.com "Monitoring energy usage with eBPF at process level granularity." +[7]: https://github.com/Spirals-Team/bitwatts?utm_source=chatgpt.com "BitWatts is a software-defined power meter for virtualized ... - GitHub" +[8]: https://github.com/hubblo-org/scaphandre?utm_source=chatgpt.com "hubblo-org/scaphandre - GitHub" + +**为什么要在 eBPF 里“自己管” DVFS / idle?** + +| 典型诉求 | 传统做法 | eBPF 动态管控能带来的额外好处 | 什么时候“有必要” | +| ------------------------------ | -------------------------------------- | ------------------------------------------------------------------------------ | --------------------------------- | +| **降能耗 / 提电池** | 靠内核默认 governor(`schedutil`、`menu/TEO`) | 结合调度事件、负载特征、温度实时算最优 P/C-state;针对特定 App 可省 5-30 % 电(已在 Android 定制 governor 里见过) | 移动设备、电池供电 IoT;对续航敏感、负载模式单一(游戏、摄像) | +| **稳帧率 / 避免温度跳水** | 被动等热节流;温度超了再降频 | 提前预测热量,把频率慢慢收掉或注入 idle,平均 FPS 更稳;可把“突降”变成“缓降” | 连续长时间满载(录 4K、跑 LLM)且不能掉帧 | +| **按租户/容器分功耗预算** | 只能全机统一 RAPL / PL1 | eBPF 在 `sched_switch` 里实时累能,把 budget 切给高优租户;结合 `cpufreq_ext` 只降其他租户频率 | 多租户云、边缘节点需要功率隔离 | +| **实验 / 研究新策略** | 改 kernel 再重启 | eBPF 代码热插拔,5 秒换一套算法;和 `sched_ext` 一起做“联合调度+DVFS”实验快得多 | 学术/性能团队要 A/B 频繁试验 | +| **异构平台 (big.LITTLE, CPU+GPU)** | Vendor blob、用户态守护进程 | eBPF 可直接读 GPU 负载、温度 map,然后下调 CPU 频率让热 budget 让给 GPU——无 vendor 驱动也能做 | SoC 自己做系统集成、不想依赖私有 HAL | + +--- + +### 真的“必要”吗?一张简表判断 + +* **工作负载简单、对能耗不敏感** → 默认 governor 足够,eBPF 只是锦上添花。 +* **对每瓦性能或温度拐点有硬约束**(手游、电池无人机、5 U 机柜卡着 PDU)→ 自定策略往往能挖出 10-30 % 空间。 +* **要做系统研究 / 定制产品** → eBPF 是当下最省事、最安全的内核内实验手段,比写 LKM / 改源省几个数量级的维护成本。 + +> **一句话**: +> *“用不用 eBPF 管电源,看你在乎多少瓦、多少度,以及你改内核的代价能不能收回。”* + +如果只是想看个大概功率曲线,powertop 就够;但要做细粒度、自适应、可热更新的功耗或温度控制,eBPF 给的“事件驱动 + 内核态汇总 + 安全热插拔”组合基本无可替代。 diff --git a/src/48-energy/energy_monitor.py b/src/48-energy/energy_monitor.py new file mode 100755 index 0000000..09d199c --- /dev/null +++ b/src/48-energy/energy_monitor.py @@ -0,0 +1,473 @@ +#!/usr/bin/env python3 + +import os +import time +import json +import csv +from datetime import datetime +from collections import deque +import matplotlib.pyplot as plt +import matplotlib.animation as animation +from matplotlib.figure import Figure + +class RAPLEnergyMonitor: + def __init__(self): + self.rapl_base = "/sys/class/powercap/intel-rapl" + self.energy_data = {} + self.timestamps = deque(maxlen=100) + self.power_data = {} + self.domains = self._discover_domains() + + def _discover_domains(self): + domains = {} + if not os.path.exists(self.rapl_base): + raise RuntimeError("Intel RAPL not available. Are you running on Intel CPU with appropriate permissions?") + + for item in os.listdir(self.rapl_base): + path = os.path.join(self.rapl_base, item) + if os.path.isdir(path) and item.startswith("intel-rapl:"): + try: + with open(os.path.join(path, "name"), "r") as f: + name = f.read().strip() + domains[name] = { + "path": path, + "energy_file": os.path.join(path, "energy_uj"), + "max_energy": self._read_max_energy(path), + "last_energy": None, + "last_time": None + } + except: + continue + + # Check for subdomains + for subitem in os.listdir(path): + subpath = os.path.join(path, subitem) + if os.path.isdir(subpath) and subitem.startswith("intel-rapl:"): + try: + with open(os.path.join(subpath, "name"), "r") as f: + subname = f.read().strip() + domains[f"{name}:{subname}"] = { + "path": subpath, + "energy_file": os.path.join(subpath, "energy_uj"), + "max_energy": self._read_max_energy(subpath), + "last_energy": None, + "last_time": None + } + except: + continue + + for domain in domains: + self.power_data[domain] = deque(maxlen=100) + + return domains + + def _read_max_energy(self, path): + try: + with open(os.path.join(path, "max_energy_range_uj"), "r") as f: + return int(f.read().strip()) + except: + return 2**32 + + def _read_energy(self, domain): + try: + with open(self.domains[domain]["energy_file"], "r") as f: + return int(f.read().strip()) + except: + return None + + def update_power(self): + current_time = time.time() + + for domain in self.domains: + energy = self._read_energy(domain) + if energy is None: + continue + + domain_info = self.domains[domain] + + if domain_info["last_energy"] is not None: + # Handle wraparound + if energy < domain_info["last_energy"]: + energy_diff = (domain_info["max_energy"] - domain_info["last_energy"]) + energy + else: + energy_diff = energy - domain_info["last_energy"] + + time_diff = current_time - domain_info["last_time"] + + if time_diff > 0 and energy_diff > 0: + # Convert from microjoules to watts + power = (energy_diff / 1e6) / time_diff + self.power_data[domain].append(power) + elif time_diff > 0: + # No energy change, append last known power or 0 + if len(self.power_data[domain]) > 0: + self.power_data[domain].append(self.power_data[domain][-1]) + else: + self.power_data[domain].append(0.0) + + domain_info["last_energy"] = energy + domain_info["last_time"] = current_time + + self.timestamps.append(current_time) + + def get_current_power(self): + result = {} + for domain in self.domains: + if len(self.power_data[domain]) > 0: + result[domain] = self.power_data[domain][-1] + else: + result[domain] = 0 + return result + + def get_power_history(self): + return {domain: list(self.power_data[domain]) for domain in self.domains} + + def plot_power_history(self, save_path=None, show=True): + """Plot power consumption history for all domains""" + fig, ax = plt.subplots(figsize=(12, 8)) + + # Get timestamps relative to start + if len(self.timestamps) < 2: + print("Not enough data to plot") + return + + start_time = self.timestamps[0] + time_points = [(t - start_time) for t in self.timestamps] + + # Plot each domain + for domain in self.domains: + if len(self.power_data[domain]) > 0: + # Ensure we have matching lengths + data_len = min(len(time_points), len(self.power_data[domain])) + ax.plot(time_points[:data_len], + list(self.power_data[domain])[:data_len], + label=domain, linewidth=2) + + ax.set_xlabel('Time (seconds)', fontsize=12) + ax.set_ylabel('Power (Watts)', fontsize=12) + ax.set_title('System Power Consumption Over Time', fontsize=14) + ax.grid(True, alpha=0.3) + ax.legend() + + plt.tight_layout() + + if save_path: + plt.savefig(save_path, dpi=300, bbox_inches='tight') + + if show: + plt.show() + + return fig + +class EnergyLogger: + def __init__(self, output_format="csv"): + self.monitor = RAPLEnergyMonitor() + self.output_format = output_format + self.start_time = time.time() + self.log_data = [] + + def log_sample(self): + self.monitor.update_power() + current_power = self.monitor.get_current_power() + + sample = { + "timestamp": datetime.now().isoformat(), + "elapsed_seconds": time.time() - self.start_time, + "total_power": sum(current_power.values()) + } + + for domain, power in current_power.items(): + sample[f"power_{domain}"] = power + + self.log_data.append(sample) + return sample + + def save_csv(self, filename): + if not self.log_data: + return + + with open(filename, 'w', newline='') as f: + writer = csv.DictWriter(f, fieldnames=self.log_data[0].keys()) + writer.writeheader() + writer.writerows(self.log_data) + + def save_json(self, filename): + with open(filename, 'w') as f: + json.dump(self.log_data, f, indent=2) + + def save(self, filename=None): + if filename is None: + filename = f"energy_log_{datetime.now().strftime('%Y%m%d_%H%M%S')}" + + if self.output_format == "csv": + self.save_csv(f"{filename}.csv") + else: + self.save_json(f"{filename}.json") + + return filename + + def plot_log_data(self, save_path=None, show=True): + """Plot logged energy data""" + if not self.log_data: + print("No data to plot") + return + + fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10)) + + # Extract data + timestamps = [sample['elapsed_seconds'] for sample in self.log_data] + total_power = [sample['total_power'] for sample in self.log_data] + + # Plot total power + ax1.plot(timestamps, total_power, 'b-', linewidth=2, label='Total Power') + ax1.set_xlabel('Time (seconds)', fontsize=12) + ax1.set_ylabel('Power (Watts)', fontsize=12) + ax1.set_title('Total System Power Consumption', fontsize=14) + ax1.grid(True, alpha=0.3) + ax1.legend() + + # Plot individual domains + domain_names = [key for key in self.log_data[0].keys() + if key.startswith('power_') and key != 'power_'] + + for domain_key in domain_names: + domain_power = [sample.get(domain_key, 0) for sample in self.log_data] + domain_name = domain_key.replace('power_', '') + ax2.plot(timestamps, domain_power, linewidth=2, label=domain_name) + + ax2.set_xlabel('Time (seconds)', fontsize=12) + ax2.set_ylabel('Power (Watts)', fontsize=12) + ax2.set_title('Power Consumption by Domain', fontsize=14) + ax2.grid(True, alpha=0.3) + ax2.legend() + + plt.tight_layout() + + if save_path: + plt.savefig(save_path, dpi=300, bbox_inches='tight') + + if show: + plt.show() + + return fig + +def monitor_realtime(duration=60, visualize=False): + """Real-time monitoring with optional visualization""" + if visualize: + return monitor_realtime_visual(duration) + + print("Real-time Energy Monitor") + print("=" * 50) + + try: + monitor = RAPLEnergyMonitor() + print(f"Monitoring domains: {', '.join(monitor.domains.keys())}") + print(f"Duration: {duration} seconds") + print("=" * 50) + + start_time = time.time() + + while time.time() - start_time < duration: + monitor.update_power() + power = monitor.get_current_power() + + # Clear line and print current values + print("\r", end="") + print(f"[{int(time.time() - start_time):3d}s] ", end="") + + for domain, watts in power.items(): + print(f"{domain}: {watts:6.2f}W ", end="") + + print(f"Total: {sum(power.values()):6.2f}W", end="", flush=True) + + time.sleep(0.1) + + print("\n" + "=" * 50) + print("Monitoring complete!") + + except RuntimeError as e: + print(f"Error: {e}") + except KeyboardInterrupt: + print("\n\nMonitoring stopped by user.") + +def monitor_realtime_visual(duration=60): + """Real-time monitoring with live plotting""" + plt.ion() + fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8)) + + try: + monitor = RAPLEnergyMonitor() + domains = list(monitor.domains.keys()) + + # Initialize plot lines + lines1 = {} + lines2 = [] + + # Setup total power plot + ax1.set_xlabel('Time (seconds)') + ax1.set_ylabel('Power (Watts)') + ax1.set_title('Total System Power Consumption') + ax1.grid(True, alpha=0.3) + lines1['total'], = ax1.plot([], [], 'b-', linewidth=2, label='Total Power') + ax1.legend() + + # Setup domain power plot + ax2.set_xlabel('Time (seconds)') + ax2.set_ylabel('Power (Watts)') + ax2.set_title('Power Consumption by Domain') + ax2.grid(True, alpha=0.3) + + for i, domain in enumerate(domains): + line, = ax2.plot([], [], linewidth=2, label=domain) + lines2.append(line) + ax2.legend() + + # Data storage + times = [] + total_powers = [] + domain_powers = {domain: [] for domain in domains} + + start_time = time.time() + + print(f"Monitoring for {duration} seconds... Press Ctrl+C to stop early.") + + while time.time() - start_time < duration: + monitor.update_power() + power = monitor.get_current_power() + + # Update data + current_time = time.time() - start_time + times.append(current_time) + total_powers.append(sum(power.values())) + + for domain in domains: + domain_powers[domain].append(power.get(domain, 0)) + + # Update plots + lines1['total'].set_data(times, total_powers) + ax1.relim() + ax1.autoscale_view() + + for i, domain in enumerate(domains): + lines2[i].set_data(times, domain_powers[domain]) + ax2.relim() + ax2.autoscale_view() + + plt.draw() + plt.pause(0.05) + + plt.ioff() + + # Save final plot + save_path = f"energy_plot_{datetime.now().strftime('%Y%m%d_%H%M%S')}.png" + plt.savefig(save_path, dpi=300, bbox_inches='tight') + print(f"\nPlot saved to: {save_path}") + + # Show final plot + plt.show() + + except RuntimeError as e: + print(f"Error: {e}") + except KeyboardInterrupt: + print("\n\nMonitoring stopped by user.") + plt.ioff() + plt.close() + +def main(): + import argparse + + parser = argparse.ArgumentParser(description="Monitor system energy consumption") + parser.add_argument("-d", "--duration", type=int, default=60, + help="Duration to monitor in seconds (default: 60)") + parser.add_argument("-l", "--log", action="store_true", + help="Log data to file instead of real-time display") + parser.add_argument("-i", "--interval", type=float, default=1.0, + help="Sampling interval for logging (default: 1.0)") + parser.add_argument("-f", "--format", choices=["csv", "json"], default="csv", + help="Output format for logging (default: csv)") + parser.add_argument("-o", "--output", type=str, + help="Output filename for logging") + parser.add_argument("-v", "--visualize", action="store_true", + help="Enable real-time visualization") + parser.add_argument("-p", "--plot", type=str, + help="Plot saved data from CSV/JSON file") + + args = parser.parse_args() + + # Handle plotting existing data + if args.plot: + print(f"Loading data from: {args.plot}") + + if args.plot.endswith('.csv'): + # Load CSV data + import pandas as pd + df = pd.read_csv(args.plot) + log_data = df.to_dict('records') + elif args.plot.endswith('.json'): + # Load JSON data + with open(args.plot, 'r') as f: + log_data = json.load(f) + else: + print("Error: Plot file must be .csv or .json") + return + + # Create a temporary logger to use its plotting method + logger = EnergyLogger() + logger.log_data = log_data + + plot_path = args.plot.rsplit('.', 1)[0] + '_plot.png' + logger.plot_log_data(save_path=plot_path) + print(f"Plot saved to: {plot_path}") + return + + if args.log: + # Logging mode + print(f"Starting energy logging for {args.duration} seconds...") + print(f"Sampling interval: {args.interval} seconds") + print(f"Output format: {args.format}") + + try: + logger = EnergyLogger(output_format=args.format) + + start_time = time.time() + sample_count = 0 + + while time.time() - start_time < args.duration: + sample = logger.log_sample() + sample_count += 1 + + print(f"\rSamples: {sample_count} | Total Power: {sample['total_power']:.2f} W", + end='', flush=True) + + time.sleep(args.interval) + + print("\n\nSaving data...") + filename = logger.save(args.output) + print(f"Data saved to: {filename}.{args.format}") + + # Print summary + avg_power = sum(s['total_power'] for s in logger.log_data) / len(logger.log_data) + print(f"\nSummary:") + print(f" Total samples: {len(logger.log_data)}") + print(f" Average power: {avg_power:.2f} W") + print(f" Total energy: {avg_power * args.duration / 3600:.4f} Wh") + + # Generate plot if visualization is enabled + if args.visualize: + plot_filename = (args.output or filename) + "_plot.png" + logger.plot_log_data(save_path=plot_filename) + print(f" Plot saved to: {plot_filename}") + + except RuntimeError as e: + print(f"Error: {e}") + except KeyboardInterrupt: + print("\n\nLogging interrupted. Saving partial data...") + if 'logger' in locals(): + filename = logger.save(args.output) + print(f"Partial data saved to: {filename}.{args.format}") + else: + # Real-time monitoring mode + monitor_realtime(args.duration, visualize=args.visualize) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/48-energy/energy_plot_20250705_143910.png b/src/48-energy/energy_plot_20250705_143910.png new file mode 100644 index 0000000000000000000000000000000000000000..1488a17ced69fbee7666599e4dd985a636133c13 GIT binary patch literal 162157 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

5UeF@ zll)&>#g&gBG1lbKh1$(MbYF>?h02vI>ADlEO(V6Q+q)RP9O8`7I=OZ(tyAe8N*6b^ zy)wB3r&y41UdT+%NyU;^l_LYpJi3~;*RAI|TA%>Al;` zFneo^4ZdKf%FP}IwgwR#Jw~EknDjv!q`sb*(7=sbfLyP^oN}39H;lPR`B~feU-u(& z)KK7Ap1;oo<%TbpxggH-oN~CYiZynV@ow4Tu;?X;`P7t+XQxj=pP7y!F1hDi#9R5| z{LR~SL!35(6+ml4`@&EZcxBF(D?&!a&qp#O>xC7rE5HyN1fXVA50R2fsfDN@ zM-fgDfE1KC3mV&Tg^6h(!aPWd1Uu+fM)WV^lripwm|p46O1Z9k{vn577)d))0}I|WJYO2=IR#7K zf~m(e??ZGUbL}`fO$%RDPUW&{>fV|KTnD9fUz0prmCO1^a{ww;3~o zOpGezNw+@!qpXKVi^J1OkPf(U+u-Wiy(taxhMbZoPpSnLDczBVfkQU%(xH^P>h{P> zMxvxo1%Zh~sEPM%5z%QdFo$f~3%?FFI5V!#rUY?3@4zFUiuXx4Q`FAZX%(;m&{bYj zH}HUpy8|wlcEsJe>KE(N55Ej^vdC3Zcw}Ya$kP}!Y%Dh&2oBT``U)#u2%!*sXlX~; zHlC|6fx7js3GdPxJxYjM8ZnM;AL%CoVAZ5<8b@8M2*?v+4~xNgM8@tWe9an+uKa;T zYte2odhN7IZsYDck5S2sK8(6?w8tuYm~VVTG>f_v086Kxy9upuTB)}7zGfcUjM2b$ zjJmVjQ4H6j{B+=qno(i+D4c*XOwnneW0~R~&8><6gAhC6!CdF0ajXkmkkggR(+V)U3>s12eL(81*0cw~X{ zletdt_fT+MI0*cJBGYg4({t;jPms-3P3rqT|ImxCoUgjO6Feu0Uwk+)c}LJjBYwNX zoxs2ZGz&ZV>IJ-M`|Y%_Tb#Awy9@kG_SE7;ILu^mt$P2&-Kb)`tdxaPcdQXUD1G1c z-}MpY2PrXPwQRaP*?*717A}m4rGx{0YSeEhwAQ0IWvbvmFGKN?=(@n5loLJbr{m|t z5P^1_265qgyM8?Y@U3F!E0mn;W}+}HpRyz61)9=GiC70kW3=2^-g}b@_9lA>yZmmZ)9WR)mTgpD!nBPssX~);HVjv zZ%dd1hsmFgqGu-NF=+Udql5)amDLH#+66a?WoW)1``h-Fe)gh+RvF0;tn znTW4bzakIHEez6kH0IP2omiC*g%M=8OLlX{<|Rg0gZ|w z(lAxy0~{HGiadb-jzcYQcBWVkR+8Sh6%xmDqo`T29aIIrK{how$ftaHq(yLFtx&|c zX&^6xOd}6QM&8?3cAygp(+l*sM+C(K(>gn4jq}}PRr6vcf7gSWVHCiD{RWRU@%K3w zBILkRNiY=mIRKECrftliDM_1s->G?H0COJ!WDGMlzAbms(YaJs))8L?{MUoWb=r{u z0!T_gu&}5L<)r)|$}5ZLdiYW$e0YoL8olglqyCTw?$zlAtc=cM~b5B+Y+!$eZXbKynFsk^Kz;8*}y; zlp{VQ^QlbT7>d(QqJs_iZCucbP`sE*5WHgfm$|l0rDjOJLW-bS8C5z&Ss9esl<|N7 z2DN%&P*Zu5V>HgIFwf!cZ$|f){Y_5IZdS?@jlPN))9Tw;+uLv5n+7QQn~_`KxZU%D1Ir zX2Lb2=5<}rM92X(SV2(v(D_SA9iE_hTEEEn*_%~+*T`oduVeV{n!P?vXK}knh*?9)A5q3PAu1qzDBu%^ zs;W^ojz@O7wWI+5PL3<$XlJXj*B{Y&JaiZdnWSjm=O6LL!r*Zful0ZR9@wqL)mHzVkg1B!*JSNwJJK?oQOR zc2LZvkMBT0P3&<6uJxsixr0uGgoJQAq#V^}KNq}=?63or>#ZJ>6rRyF+XF^nV;#}q zP9S9J9D_pUvZ5PIg~qcsNGLcFURA2{G{vPUq2meYuZgZzzsP?~j(bxpRl!1%Gd%GX zJ(!a`yU|6Te_`W48+!SCLKCFV`FA>Fd`=B-*B_EX3KM697GB|I;_iUopR!`;^_ z!WP_p?8M1bb7J~u4bH2Uyt;~3N$?-TwX?qUJ{vhjj*p`TVsJyYCMtK{)5n_@@G3yo z)6HH@e(%2FbWKbcj?+qNRJ}Q|>2hTu?~ScJ64ORpq4Ehr!J9s{{99FiK(W(&yvjpk z!h(Z?lioyz$RP&j%z3is(X?#&A8OPdaR1eGGNrw7aD#U=kd^(StGlDgD!iF|zfs)} z#sviKkl=XMAg!*T_NF#FiiZ;^BaN4wvFsdfhdq zNgiU4?|6Vc=QvpwPSPlo)sIz`<)~4u0WiD*#df4_2is0ZsNFB;rNe1G6M6M?;VxSm z6FK#O#|rHbc}d1}(=R>R~V6HT6JO;eE8q{$af^X33&F+A9dqcj0v#0jlFgk-~ypC8<(*g=I5O`*Fh z4>gMP%7%hl9MJUwL)^YMU)LHIs`T_en)W+qHF1mGP|es~T!CXKlIL_Nnm_Is z({YCJza#WULh%gimmyN2tWYcLmbfKiY$ebH@Y>v1 zMv&7gxc>of;+d15Q;%!w3#Fk3%CObpPKfqGWyAStyaPVGBS%e$T$VNF7`Vz}L~2l8 z?{bNqKRI#~YEmdhP!o92GEU#rvQg8jC%8-cxl{5l{T&squVz5QV-FqXdsGsdIWW9}g3Q}{#H;f$*M z9mtMX*S-k%uyha%1c*Fm2Qd!>e7dxJtO<-?=hR2&3fRPFsyoXrQK*g zs&R2ZE4D<%m$wE<0ryARnWO^maK%W{aHa=_y2N2K(cXqNZ~p@qm4q!+00BqO_x-|3 z1pkxJTQ#2sX8aoT^4wD|xeaeGCa0I0mQ7f3`g=S@jSt<$e@dS9-|rL+$Y#pjk446w zja(-v7~FlFU&rkSIH6_NEV3~14b)ApAv`T|)W^woH+b--T|((ovBQAG~=wuz<5 zf%b+GT(OE|mxbh63)z>j>;S*>*q#Q|Fap&9kgp!tF@vHTd4Q1^BA?*!H|b$Rsc-5k z&ej2I4tK3&=gd+It;?{v%X+)Z01Z%2d)$Uwv+x~^1}W<4vNYpYX7uDSAV-dP0XNQa zFDRKwEoH34C>r9c0~RKI;G|$GFxY=t%n;u5c73`JnHflO+@RBpwlWi0?pSk=-hMzP z#h*}C4@YB>^LGFAX@Ja0>owm!UD=vYIpssBegwM++OMMIqpWC^b}xMvkYctgPI*R$ zKthsBej3RU6g6rD*U7>+pIQqL#t$|B0s@N41>ixPodeC4?{~9#61z5S#35o=gsm7u z0d$qucv)(3grp+VOIN$60r75^4lxe{2IG zKR|#?IUsj9x&_zMpCpMdf8^Pu_=*!>jmrsFQT_zZ@j}8*VW#xq_4tH#SYV(Lip8XXV_9n{$o zvgviJy}eaXCjgij?}1Cd-O>RC0zEg>+|em*=LM@xmJUa#@x^#@_RChxe@Muikw53s zgE&xCd_jvF)_L9zPrk+J0{&r|LshD<=n)mOc<~ETRmhs>st}Vu)6Y;VVv-j22Jc2V zp{VAT0k7rP;%2!{u#Rjd$kgW5g)^UzOV$2~jpkG&W#h)4YdKqO zT7}6Fq5qRj50Os=&Jkyp)S9p{r%4Mz^u}g$a4Q5z2$w>BeZ#-#`bQgMTpI2+C4IT?Em7p&@_d9(5Bx#z(_?Vot<9n$sBl_mC*`bx*+v4Enj=!d$J)zI^qU>>gr5g12Mquw1%`Br?L%9$uLjG*e!AFHjl-nEsbGRrqPTd%OGOz! zPwp7Ie;XW5Cj0)0CmuPV<@Dz9Vy_nTR-u6YKSC%WyMY5zIfs48&1I}dNEW0_?&nt_ zaMTsnbByYv9F@C_RVo2*FK11WXIS|@bke7F;>UUi8@w`a=vlS9&Nl-crrQu-ZS4mf1?YM+=Gm#)@U3;dU`)E+g zxQlg|_A5XOYs0fIgFqtqN;V@1PQ=_r4zw$maA1$(>~q*plaoB7ye1iNR!(*dfDv!Z z7ZVPq z3YeULulOq7!f(l>LrQ`p4*p8+snMsLHA6TtB+$s%i#>tX1YW7?vCwh&bbcptMMX(l z$Vgzd+&?1Y@fBX-jPeCQ#N`NOU2N5XHbrdV9?Vj`dVq@D!uhdy!Y<@WX}0KuP`S$t zP88?z^FF9h0(baJ?3+`YyMKd(Fmv7djX^9VF4kgz+7;NOuI2Hv`r2sR84EeGti7yG zOTLtURS*_NUP*-x-je2rgI!H@Cc?(y8Te;B2w%nEgbnPjx9>-EEe? z6~8(Tp~0v=Qd{Ou>3eqNeXt*gx$0JfJ0r?K)%zjj&cq% zfg7H31#mKy2Zci`nX2CrQdQ_Z6!bbyU3EOyF=nD#4HW(uPcuQkRm{!JBvdtnyQ4z1 z0+6v)l*%`%_6a!HnW#>~=#oU#T6_LKr#YgsqieSua4<(f^DMNOOe5Y1uTdGL zb)fvLdC~R;adL9|GZ~qOvprTa0jeBOq=+D)8F1IGmUhCI!v0*U$W_oP#AG7Lo$SPr z-*BeOnt`7dY_468Vf9dMPL2y(hoWeC187&`+S%?pv+rt-LWoeM9ah3FyU4*ftbube zm^%w*TAu6q6%t=BKFo8@{&+kJbL&x{7>zQ)cs>1?nR9ze72kBP=G~RiryvVBt>0A!H+TA~=D{Aa$3u67J8LPUv ztpjuj{3blTW}w`s`3j88wVN01G?9_{izF}FcEL6M6y?f4tIxR$B41^KzaOK`4h&Gt z=Mzd=+FECob?fpUhkiL9j4DtCHW21DPU+~`#ZL6^(eoE$V4K^lV)og|$?m$B^_GDH zN9yU)*+HXuKL-2n`@bR!oe;SC?nmf?jTb0!qLNUmkGE4~dQN@$mOn0_1qkX~fc8ok z9Esw31l<8XqZ3v7W&I+_Z*?uwpBUlCWdJkgHDPcVq_xaZy+lRs&;WT-66M0&aO1@4 zXHdbaUHUY8*_M7;gubv=(W+)Y|L^Nb5h#(3FicIza75wlQL)PdG|&;}W_w;~1b_o~ zWrr9$+0_TR<}05<+qw=Jndl>Pv2p%rz8l7dQF-(e8m=94q2MCu1QTeiBp22#SP{=k z06;u^lyfynXJU1G2j323yrv$sovY?L0Nyv4Ii<2+){2GQoSC&Rc=p30j7G{zaw$Vv zq`Lxz3eUH&nE@f+Fy*t?7lV&b!WF^Bj@wu-e_VHE^^Y(}IaZjw3Wy#HbOXY0LK4~g z2-x0GW`#Ehz8wSSd(ff^5`wMW>_I42rv1m(Y7&GI($x0)_p~cZsm~#QwMQJhqPSlrMNk>dndtpij^&xVZFTGoIhf`NETQDi&OCdm=G~9RTreKd zM5|}ugxh8opn~h*6x*Ph(Vr0jpo(7ab~ZoPXSIHLDL=sE4-5$VPkBoB|28MuvS@FQt8>9k0^bD84=M{?|@j8 z(u!n_xwFIkIqdh!Kl?sc_vztd8Xi1||65DJ-N4jF81@(?Pq2Fn$9y9(Ctzq+Hr2Fp zGZr9O<4;q7Gs*>2pC7jOx#4&@aah49cjO^)SR->~&wH2jhp$r+9kx~WfJSYE3<`)Ui)C=pY=~15N^?qfqu8SIBYr+gZkixVKkc8r z4zn?u@l7A;gntdLSX~8r-J1~tuW0jtsTdNFQ~$FSPJ$b_UbAU(foLmu7ufZ1;>OW# zuI7$$$^=T;Y+;`^Hm>0b=O^7~_s)fJNsnuReRHy;=B_6r-&*YqrUUr#;5ix0%;s1h zWCNM}HK#egjkwE2Am9u6D4Lx9XYOkJsio9J4)?Nm+c{4|ka4eN5WTXmHSjQg{O;O? zQY%M(G(sT;+*>+Zy>l<>-)(yja_j|QTFo8Zk>;Kiy^Ctll!q41^?aWXN^L^H&2T7T z!ZS*DI5u5GzFLTFA8)c_NENt*{zRND-(fkdo{Nm}L~UnoL%R0CzQ;Kcyd1uuEjyTg zSD8!j3FAvOcOsMQ+%D}G7`WZnue>wdGTl9FsV>b3BktnnkUf0Ab?d$QCqlIv9g9@! zNc!ZwNEG5Z7v3)=nW3W9>=;g1w!j8kBSvw@iaH<}b!cm~e@l%5Dz2?F zC-iM!m052E5Kklx^x}-NK}1}Kh0BL`6mNrBK5U*8pN(F9Q~^}jaTaB6)%)~MgKJRE zQU?dt<=S4a7u3(;Pk>Uo&^2k=>C>M6e=bo6TBygs`k?hy2UjyD44GSZOgTVvB|1Wr z3LrQ6I}T#pOA16q_(-i~ThtY8y@~&L+(XhI7uhJ+L=C%+I_ewAtlv7efqieB848Fwc^sWCbGWW&t_uH$ZXqYo*pY zPa}o)yY(e4PQ4AN3}9mSk7TeiiaZ&Qj+AO)!^aX&Z_CF9j%Rvn4qW2sonfEPKVCSm zL^NcE&z__@b`CgD2~XXT;!eh!TVncmVjmVcYY^48EEkg(cwXHz125KxJo6<@1?UN_ zF*Z|kC*X>W#W9bkW#y!Q{zwtb$aKsvFWc#-YQQ`tIiol4JFy*g-Iwk1l8_AS+H3c~ zK<;vz?VVq&dmFbKPU?H>ktH((J?Bt*m3(uw3ZaV7JeR|a0yAvM(n{yvXK2eN!Nei) zCTJewK=t)K0c(}e-nfFlgtxdZ7v@~Y_H@_(rc1~R3D)6$t+H}OqC;58Y_O@0uAf?Y zswF*u#E9~abO=Pqm?9c>v2}P9YGuLIsbJ&dNud$4a+9WPum~hw2&hP~grGEsn>zrI zUbNvZQ+A`sD5*}D7mrV6s6oY0`CZ^2T7#YwA)i)%r;EYWg~{JwggUB;o~n8J=oM3 zZ%seN;mlXd237P=8s9SDcU+k`gb@b2EK1G;dX9(A_)1WbrYvp*tePncU_7bJfMH6^*EbMmRL3u35Y|9_@==iDjihZ^s&7hFaad%X;>@m+xIy zS#%(5sidkkJwj`HTc+PYx6ks!RzsI~u!nLT>{6K6&3=x%Fe`Ru2+T$S6QYrkq_8#Z zt{GZRb1Sqd9P5gyN@$#yu2Om(;Wi7prW11c4?nsei!R8p`)u|J$vuk}9k-kQknVfz z;IzO~8eD)~4PIXh0@;kg7op}unjhH1ZkKcl9xjx|vuVJ=Yfkdh@;*Jc#n*3d4ZmQu zVfgLOdv!le^1%`q{XrLoN$)ysajIMBfhbA3+OWA3(pTL3HN*zB--yvxIBU^s^$T$e z)^C0=Gh|ENiAk!8#wfb-&c}j+EDqS^7+c;m{dxT!L-O|=Uk0sLIM59+xdu*<{`4Tj z;9U;5ny|f#i~@MwmTO&i+V$XmZK_7t^&V+m>+K715whRs>-KiMJ(ap@Tv4nh`eJYV zN?7%X7j%@b9vK_Pm#P+Eflx;7(&O6J*z>2Mc4VWMGwAaO)z^2ZYw2%gg~wqusC|34 z`)c#j>vmlp2e7iK=JLsvxo!otqi-H0Pvx|c9Hu=#aF>7tNgJkBEfRO-q>=8gN@JkBkZD3u0V zozU3dqty{tNv;`MZde?>Aw8`Jrs|=L13C zk$woekmlcNI!xq*$rz~CyNFSNvDUc(UU4L2uwrh{)}gK=f=T(q!?D6_S0V)uI4S`n zq&U6SVX!Kk+oHZh{jJd#hv~FM2)mN>L(X1ab_z_63>uUKeqRD(9Ap1jd@~yI>Xocx z$D4-gSNb?;^6ZXxuV_yqc9)TvC6)fNX;rz$bA^tx&&McY4ZQ$KLo`zhp!*2NoR96+ z&j#6hjiu-3wnETq8$H_YT7_%uKc|pj{Gz>g-t#drn(5;$S~~4=Y+L|JM<$@lR6>_* zUEx@OHD(q2J;c``*sR$3NLH5i;~zGZUf1XV{z?PUlSMAz0n#n1mIsqKJ=<~)idgnC ze`4M$ZlxB>A_y|_55D97c{V*3GWGTK_Js#!4xPt}3zNFjNYu2!F#e?VohpRrGi`k{ zdnzIEhabf>F2t5-VpN0y#HJSqWd%D@2>%q!==oLjY5H@6=HSc7abkB=Csp<8MhXdj zou__lB%sT)`$ql!td#j;z-yr>%87!Kn@w1n_8a#(ZGD|>(o5a1>%c3><-1Zs%6xWr__n8r-;(68JU0X3SE!~?;KD9W!RFrK7${dxz<=0dy z=J@uEI1RNW&1uD-NjUpCoBltIL#D=mUeGyrW9;37}Z-|tzl>_q6qqj7m+ty^Dgi|S|^val((v`Ra*y7j!@^O#`6V8en}-E9Zc z#x!-bSB2bZYEC$N4BA3{CO|{|;@Bo}?c| zZrx)#uFI(yT!9(oCyWjD)ntByleG$y`nV)}P|`jjtIv3zot2ekJ!RsSd#_*b2r1RM zf~D@0=lyK24Y>H}D}`GuSG_4VN=er!t& zs8@UT?aOnv`;_qloqHSlmgUpGk{_+82s-9~>+NWne!XmwtsS+{p!}?tH8_2f{|v&B zkNZlG5n!k(_hy-cJakGaikevwLi|RWO9@=8tUmhPHja2G|yN z`Z)B$U-)K&VG_KebeNiPru7u}DE(c({q|c~YW?D%6DO=?Pf1J8Wk0JvRh_=7*fZ_& z<;$-@IhtFcK6&zr?uO4WT!b(DaGUS9lhY?`dE4sl6v>8W2dfr5X!`ZThuyx( z+9|dc>X&SikrU9R{3x7ak!a5ibS4T;_#1hJo4~gSksCVn*7JqqSj>Xsu*DwO-@rkG ziZM*ha{{=Nm+;O6*ZbSiDS)Ui{r20JzJrgVjaY{ydMi4ou&_}1+cU?GUBIK>p3=U! z4bYdxUQHdxn%}T)!DH3C<$dl!_}AdL)$fSKbYN>r->)w~q*;w3`CF$qUu3!DzV0kV zKTvtF8f92Ho|+Wxo?+s|Hsox7}cM8=c-g^ zxir>grGG*%bZHH12Jrx4$~ZR;^?N|LvMUDaA5rYFjO6d->(kv z^(_YEd<8HgzLEanT~@At$%J$ipkZm4p|Rm+hIJYM(sJjI4_~*w1xznZZrv@B+yG5% z*}YI-Utc`_?Zpc^hOSz*$~XDw5?`~q``!kkKi(31f=~HE#@{g&r}0rmyq{uK$+B3RI;Yh$}c%7sm%1FdkyOK!_DVLFDq{C=tz9+)eZth z<A2y8c9`-bgB^$!7#kI^ouS8RQg|GM}4_LThW?Ch!e`U4)Ntij~G?RDY3soXjO zZdYNXJFv2=z*I)n>~WbN5Lzm5#Z7Q z@g!~B-uW4Yzs3^(6Xe(XzBe<|uP&cDYu3~6=Q!=#w~maOXM8~jljT(t)${Z7M;sO- zH|~&`A6>Sm0}F-D&$W&)?Au*0J!?C9;H7Zie8UXFnQi{#Il+9L}sS= z020S%AI~9k{WxSuz~l~ai&OQo?`ae2y63NBwjW?TS)lhU4Gerx=fwbTHh(^Asx-H9?_WbHv9mlrf{Gg32Op$$bz8CU#2l^b zI(&X$A5*UHbcIjmk!CU$*T703OPAB2Vjyh6FA+9fc<`ceov8E+W@a^(9yEF|LuM^ zx9x7}pr`+EUn~~mV+Hr(GbyeOn}N4=bI$wO8X883fj7WR+Uz*UUg_#Zi@dNCF&0;GgXO!w{<;Y4yyAbc_vUdu=kNb-%oxUG zjIoCpLiRN(Wf^OhY!#vGqJ&i1w9J;hOtuJFLRyj1o|%xPL|SMOqEsrRQc>rAWeh&w z-?^Q0ZnyJ2=iJWi+aH6b-tYJ8^?E+9=XE_EkLz(+U9lw$(rVE@J{w^fczSz*yARfN zo-%!UDy>Gtt)9=?;T=KtZ9sJ!5cJqdIsqtAZw_uxY>^Y@>(Vl-cW*7MOS26@E&jAB zJ}~1#ZFvt_PTkCI+ZoAUhynGo91*zP0oZ9#j#~H>qCa19sYR@^+1q~X*`|H_GrM>H z07x>u_spXg@88PGT8MydZ%BxF{e!>n-kpsk>KK+hOp=&WiXR^`4Vm1|4+Oct8Az?EbJ$m%(%1VQc8!vS4(Zl-9^V!l?5g)XJ z@@?m#k?W5>i(#Gk(HCb%uyU&_H@Wnq^ILA4=uBWBxV?B}1gnp0Szl^P zE-Uz#X2dwyRM*rfx&4t7V&YEQM|ZSj`vw|m#w!#OpEkbhJZva&q2&Jg_#Y~#veWRB z1nTV1i8Y?YZy$GZ*|KGAI(H5b*tmQ5zn2NJ;>gw|WvLuMN zY177sAJFmmJ3c;?uqiM6r2N`ne~lxHyZL%`)eCiX_2(?^JE$~+?Y6hr7Rc3+`1i)ef@%|Rg0dkGu=<}su6%piG?%toI$9DnLS2eq; zlL9{BPw{!(uT~pMlNkBf(Wd_zmLiT3XQ&AtTpT!f@SP{&cM|y=3t^Me=x}LKzNKZ? zu;;h;KO}t%qL^tlD>|O5NIfy}yYkwea)7Q%JZEao`4KQ$$uKg_Vm-jKlKO^YSC_wf z^{Qj6iRE~NMHlVLS6P>2rkyBW%qo=l>tA_x_DNT`?tY6G=Vq%8%k^j2lLQY;vwkLC z4m~(M^ZfEH6E}?R@%{JTAJTRRL;h)(Va?po`Cv(Ic(JT|HNR%v!Rm3gwr`EPnj2#u zwyVo111Pg!lj1g8c*VuVNvg-5Uij|EiSy^rcm3(+PEhZu>{n(XEp#gi&&A@-n2x&B zR}1Xs%<(`5c0y{8h*(Yxd!T>{((n9L2j$VeyqvdHnlO>Zv{zPEUJ$!Ef{|M0=%KIY zSCD$8vr^b-F`YAZ8@il>^fJv3Kdd?qWm9sr zJ_)r`F8$h^geBZx`}GdusAwf?FbG>adh{r5!hS{Jy~z^Z$Yu9E`!m<(p)<9DMssg_ zdwWw9g9~5@Gis-z0jdyCT>KywF^wvqpQ#0EFZr4?FO%}jCmIJ zoc&TRt9I+w?Lgn?F`_Mz+o377}x_0%B^2>7?X7_r9$RkF? ztb$}k5_oAiJZo*~frjzG-Nt+@6JA`SJ&-~_R`;mZS^BgL3@o~2wMg|CYG z-dzhT-Tae%%Rs)O6vuDr$WjI5+tojxM9}oW?%Tj|CxLHPqibkRyU<&!l0PAmetu zMy=Nmm_M66mx3uxh~n|c$Vj?&=twxA z6!bdzC|spQ$DuOOx{<=uVlA^ipp z9Qc|ik6d5>jBXd}7x!n&CY2gdj!z z{dw}_Nw&n(yu6d}rhX`}`ohN;AFxlRaGcs(_wcOwv=Tjeve(m7m3p@N?c3`a8S^+O z^}vo^Jj_uAW<$0-+txOG;NsW-5UjJb4)isS4yQRG5XkX*P}Qw|efso)rrAphc53U^ zW~3&CM1dYyTv6B zYu%xPcy=62;6G_(+5>{VBb6d=Xafp#<;sNW>guzQ7YGcijck$<|IkDr1~>QBhONH)Gv(t5_ZX6+ zx_5RD>op`5;^0{*yM&aeE$JX<_08Pe#k2(PmYtB%Gk=sU0pfJqcI{4kdUntlHR@J! z@=Q*-xl{zr6JKRW*xfLQ8AtLLp6KRlnJ(QojM3m8@L5efJB{8P4%fSHa@z(F%LV!1 zZmCw~%Vm+!@(UApbr{mUW#5MXuTa(elOgeL|L)zp4|lHH9KVPvlLdN2%df$gRw4Vl ze?T5yWo!_9{$7fNHJ%R0zsh};8eV)u@IPj>@~?;|z?4dZm$(ovS9ubkBCzc`ujSXg z;YYLk{hK!PZ`;8n0TU^452zSL+s;OhaUooS7pG}>#;Ffip*8k{ovi%&{fS_ow~uOj zJrf~%hEO5yeLq~H-L`)!a(?W(wFGFeX&GA|J+Q&{Rw28`=hyL)ok-O{Y-vc6iAjmY z4QPwPW$mX+ICkwmoA)VitzdgjJ>UAnjcfR~{O8eM3~c!KUk!h`-{sRy{qTR5*nE29 z58rXg`S&4y{N+s_Of^6LlRy7kU#Q_B)P~zv_{mTz>6!r0iqP1-7S8Ex;MFoeM!t&|M<=tN^hW4SJ@3p5-Ftgp;bR$Ghoi=UQPN;&{=T2lld-SN= zbn^3k3(ZsI?D z$A=H!W-!fS85lLH-|VQcd%gOo)+?iOlEUe8q$a&lyz#}~LxR8ibe#$cRl20Wx4p;A z#CYFjvtUu0miapgc?UC2-EVS!?q@&SyxE=`K5yUJYN)GU|Ld>6w91}5InjOMc3&iq zy!a5UZxqI^n>KCQTvJm&yBFA$b9*jT9lfz)4&R`o<~YB~p_TJ;$5-4;=y4B@w%6yT z)_x#k|9PXajsEoTIKh?14>@FPY}|M5X~p9c6viIa;pT7tUi*2YiG}HdnubS3-AYK9 z4Eo%>WlL_dNA)Wqhcq;*W5*O#|5f)-ko@qPA#V~UMuvwo-AbXGdqiZUAJ}obMJ<(ipt-@2^=3p7jqv zuw;=}Z?`mV|KWpt{BO0sWK>W?Kvk+_ROIoZrIfw|2xJkqIvUSK{1-zDu+*2Nf29_GjII06aJyj(%&PXAfH#$_T@3%!|KQB7cj-he52L7xVLGPiE5Ok(W;%U zU;2+v;o>7a3ib8~cgM|}FD_5`zM?EQ_m0|K@<`=U z#)HT)`N^S)Vu%OKA+oFBhZ-7(HtAcZIOT!pWXEal-1^&9)IyQU3G=`+*Md z%e_IsqaK#6n>b;@b2887En28GeYDxpk%3wr)z&{;1faGlVkTKUr}=4E>^`GM8^^}R z`hnI{s`a9GJt{j-mkEy(523Eev3Rl#&-qWUS z+fztDOi4Xl*Vz@?+1vY30Ll;i`s=R&&HW4saz>IqBMDq~wA0WPTbbE3z@(slM>*8- zYM7k`kyd9%tjqSLf>{-L=C|K|6HuN4(vM15!>j_MCr~G*1_6!)6npe@G zG0w5vTLJ!7cF^7HbN%`hL6(q9g!}i{Nz3XfcDEURSqJ&(ebm(SAvuNNf^#`Hz4*cw zNb^Eiq5ShCV@e~|uCAz|B2c;p!hCMtn#+#6zHe~-|G1N`&jHh?oIFMQZoHP*hEs~F zk~k2H2sy*Yw4-PeR18Vj5UXX=%WkV(qO0^Q1%zP9gjMRvwXJ$7e*e7z`bF!PkH%Hk z)-J5*%v6Fv>fzL74=F65kYGCJE?ahDpmDV48in$8LKO-Evv>dgRk2klP@x6xC7crM=DBH&r2xFsFVyyE6u2D!JOQTD&K2b?hJnK^hpE!B4 zrw$}lhH$QkobUS;IGzzO0+eeODZtW)RO(cN^2Pc+0j=Mus2bY>0YBdJ=cbZXc3G@d z#XQc4`&L(MfFoMuQJuIBQy&IC9I>`aPSKrk=rcJWYhblRtae1* z;_spY=cv=|jcxzh5X_-g2tO%9m|HB31qWS?s0zg2<4Im#PaV7#@352JaBuEgEjH^s z#wmO7zgM3ZMy&o7@W(j$+H8=p-Dc3Nl^9CZ&-_Z!wrr+j*Mb>1WC%71BO z59@f3w!AZpiqNH`4{0_yv%7|dA!^UN9HEJp++k7<{je_0I2VE;*RSW~Xx}PE0e1p5 zi$9us*SwRA7(I5`Vie-X$$~@nVAT5cg!>YuyKqS{GM*%y6vYv0&`ymRS z*#zzwZsIa)Bah)I%)mA7YSn#6!XBOlo^cJfAV0@R%F?UUeAlS)hf)Ib0?qe1&8X4- z<=2n0f`6{|LIo|5w{G>Tz3m3PHix^Ml-FtGI=QG#{wGncm}Xu)YZuM^oE{vr;qk9d zb=4;2_vJ%4Rvr22k>^69oG)A66pdPb1j0H~K=X)9{a|JkZ`@cD*W>RHdq;ub<1KE% zu7vrGVB?GQqUg|^xpOP9PE6MNzFD(7C^=VE)Zp;sOCLi1EBq9eRV*+&)v|TwkBTvY zG?N>ae%ofkmj&wXp6%PW2enTqDsHOSVM&MeIgx2W6-XoRzAFM6k%~8(v!fwqd4%y@Bxw-=nC^LF;P0-wwqF>xZbuShq?#6ZW&#GTnDN16!Y9z?a9S(Jck}{ z=G2A3P0Ay4Gqh4j)TP}gpt-8@s7;B3xfhpaRNc7FD=Fr|bxYog6pR)fvYR!Y{Xox` z9yS_0qDSGVUZ-yh<-uG4&LBjC^0OT=Ro5BMN`pQ5ZKOU3I}lU;T`n z2QyNPmn~o3B9FT%5?h17E+CfpYnXXX>)I=tSprFFrxwdJ)_;V6AJ&S?T6A;wqp#h& zcTbdJgMWYI;o%|5f*l){0X3zCnJ*+;ngOx&=b1BSB#C_H@%%^8Uf8?}L-o&77Q^C#sL>O-1ZA z&9Kyabole4B2&v<>6;cM2JFbonKEr!NU>94yuZe`Nk_*xkG}O^0?G9`F2P&U<5GGB z-%=gic(ZxSukyp-R;P*Wg5gjC zhs-6-!>T&uACdHv$snmmtiWfESRFO?|aNAUhBscBx z71G2Vd0xZj!myXe(Uc-i@*$=<=8}FFMUt~AU6bk|r@&YhRv&V7jdCs;Ims04-?NLB zb^tibH9pm-O6`j$pm05fKoD5EKvjp2Fl?t#g&ihOp4<;Dpq8$4^g08I{iW8sgVHVv}=J!8pR!<@k|0cox*XuUahfmB)`CKM0Bg_FB63R&fZ_xPS1BdTT=zhG}LL zYSKpSA7qX-+tRhuc2%Vaf!|^M{d0d6g%$>v5U-6)8<+kEw7&Zkpwo^X2SbLgf2b87 z&LQG@9@1-P*^73bM>w@oip)k?Jzt`}s){UjWY?I(S?}Jz4@Hzujde#$R6i_WRqDE1 zp&E{kK$M)U;GjUJv%C$; zEC%6-eB-4(W&o2ooE*c7MZnc;DCfakGNp()JvPLB)JJ~|iwI4|p@zRPRIeR3k>b8n zK5gR1Ai0$CsgU20lXj{+iW~O+s+Qk=JDV)T{QFQ;S;9Kxze3z3mxo64o?nG5aze9t zWWkZ`?FRVqv3yAh^CM7cBNU#L;MV2Vh8eKbPlTH4_Ykb6b7lMdc z4L#GT7uU=csZznTy{gAaL`}j?YP#i#3~g0nhj@D(YReQv2?*1c|MABkH_!obpoBzL zvV)2^8HOZ^!jyQKLQhqj)~%PH?}f?`QJNS(rP3Ip7<_&rF;L1KQrFvBHjn>qLN+6i zRJ#mvC=ndyTTpg_oV?-A^cynd?uHURh}yC%&7{^tsks-i2+L}fwYgLY64_*7#GvsM z%XQrGMB7vdb$$=9D~LsYmV_h{5=l!-ON{IM%koM}0@03KCsWe8M1{gNOhX+yS9B-E zqI4n+BCyQ_cuGf#+eTS=U4^5$8d@EG@|Kp{wr#U1E!5y4#~(5E2Hu~s#k2Y72 zeM|q3z^|-r!S6T-ri;=Qp1}%qt&?$=Vq0`6oPssU&UGib;%OcvN^RkzWj&KbyB5pV z63M59g@uO?*^TT!mZkJGsE~!rjzTY;uO`cRluZ!cVoms93yrc!3ErTWk_iR*5um)q zSn_lTnEb?UJg`t1EUwS=Xh(A}}_D7PrIS$yLrUAo9L(SN^o_ayXN zt}YIv<>jCBHmq51dpkRsuIqYxb0J!W)r2$wk(Z7pdI<(eR@UanAD1=jjRMM_x_ge> z(RgY-DSNNS$Hx!$hAk(dH^cJ|M08fr@2%JOqlExNy0gr&Ow?-MrAr_g`D*^Zs~L+V zfE6dCi)%HUKJe5OusyZkTaz}0Zg~7N@$bQ+c~nfH1c4T~$z++mfA>xRG9J$~kPz1d znnOa2a*04C*%8Cy2mVHBeg~kGUE(aTEYKW+GCdfYwPlvl_IsQ%#cR}-hx_T(5K$T^ zB9$oph%zc>E}?v5=!i#7{{b&Q0H#VOS+Bqs;bwC3pm?)IMn?Fu^ZT{*Ca-GY^BX-Wq2itSDFZH0rIC;S#H{tPFy)FpC8f8O$!l6rjh!E z+LRfS$4@1S?00u}KYZlKGeA+)BxV@ni7KPo%pofNk$L*pZF))`M@5s4R9!UD@OCTh zV%TFeNCz_sU;;jKS?O+8mX8Iuc~cGtf@KA zf@jDTa2(4-6{0fnS4M5G?6@S!obP5LQFZIAae`gPJwHqHv?=%={W5z@thJ}4q@*b3 z%wfqseLnxCeHp3fb1FF3h^Y4gw~ME@a=!WR_T?`wGkC(Hxei^Ilex|T?VkG0{9_yC7Zmg+qI;#w6oAYahfBiqOw(^<`@@|N zBRw1L5C2iU%oIC6fCi!37+xzQ5!xsz`SF-@!Y#%lxCC_5XI4lmg(ms+3^J(O#TOc7 zH~q4BzT6GwNtpUum$hY8OQ54G?Pl>D1+B5_Pda{lzYl-@w+c)vdJQzF{q^qx9(ss}Mtb}xHg0M_Ipv_&M@mk5Z>b~`3<@0 z^^nXjpHBT2m+p$-j6s6COIhIRF32%Xwy8kl{pfphFqp@#8vXvw+@!-Ab1Cy~y*wlp zBJNA}kQ>jQJXuzyBx2(hT}Njx8%<^dy?L(o{b%npwr&JOrvQIi4?i$naojUAv!4>eUh%pSh!oo;K6T@l@((SlOp0p3X(;^1GKajK_&^s7ZN>? zEL9Q^Lj1*LSDTA!Z=D*hJgd=qZ^~*Au73O+Ra^G%Z6i`h6qmCh8zi?PXAyu_nlg%C zyKLU&(jA`WG^3HH0@Dvp9HpVrr(3tNR3#u1`t;OQpO@fIy9g+$01=jfVQeRkGF=pH zLlfKg)tiD2QK+V$$B*9!IOw#NG)nxx<%qmA&|M^%fO9V{d_mm5j-!Lk4c5?)ooz?v7UT1Ir!>YXx^tKMK~A9#RqNn9M-008&FcY;w>O#3!jT$3J{t`IK5FhFC#

RM*0TDa%9$6G@b99b`IAW>1gwK`t+#} z%6l=*(#ZTmhg2;#X=h09y%J#er3nB;dHwT4&*4x|H>~;V*CwtNoTw?3aAk%uW1S|C zJ+F|3d|YTy<$3UM=QPc7eDUGGqwBehzU?vSrX6Uqn@#Hn$VmjrH?8 zKTVuCQN%Fh_4DAZ@I-6DFV74L3fdHto3nlE);n+nZIzTvzrW0q^!p%6j@Z0;^NWq% zoc_Xw5ZLFk#zggj{F(hbokg=LBH@UrN+gS?*5%IZ1M-}DU|=Aj;zmYBMrqZp={2p# zG^HBUe<%${{{-~DI#YFZMaK{7MB~Z5zuD=5w89kubZ*?V$p9cDjpi2Ob+3$4X;~-y zjEDBkK$iZjv@{4(Nt*f(2I)+nt_P$d-FSrFV$cp!);YAL>G>NBkmegVx5~0hHgcN~ zo6DIvV}_(KZ8~&Nb#|`rpOI6iVZ)BOdgY4mls~&mQyK6+Z?UdQv#TEC7|($*bi8I5 zdNOGWnRQa5t68-VdK|N@d|@c!IjzbMLf*7u-hB{~{c>d@*<83eeFwY{#`D^K z12zx}-#z|P^cysdv@1-OA3!=~Fmlp`YXkvtxsx_yt&yChNk_F8-o9Pmz5wywUC17R zNSGWp8@wjTYG%`>P32K@5A>;2EcMDj>fhi6w1(hI7utE-Y((U8z`}}mheVp;Id~jV zZ1|X1P)+ck1=hhFT>@|jEWdj7YS#>PDh48!JuzC8D_-92fu)sKlCwlfxXnAF%dB_w z6G)e*n1Z)+*MN}V?WKDRmdvdDA#o)$%-qXvbFE`X+TA1=QQ^C8c2}WnyxIL&2gLQP z5;L++Np?j#S*VSaONicG%GwLqLLq*)*`vPjtog588htg~rgV``3axv`U_K0oTkKI0 z>aZ+#v2;{7t3|wVS>hIo#Pn1n2qULm4q!IbL1$PJ3V|VMZW>ZHA#q27Z-&Xd`B}` zJ8~zs)6`A=Lf4nJzmwC7UI>Ahd76QRs8?aePbdzg%}eYb-rBVzJs>WvVPhVwJG{f) zJwr}!`Z4;dsi`Gcw`(&&{X1#ph~E;4?mNtU+P!J@Uf<*UvFYr9_oF`u1F$;l@bk9x zR173WGbB4l>nIB|DR^7Vgh`WD)r=oFtg!ykK0pA70EhieMorPt8M0aZS$I!yc+v58pWQWXX*)zdn6&^h{5mdSgSti-_OEIhO9lHt-?W z-o4+$=}f%kV?RtGspy&0ythE?^u(r7^POI`-{;)9!9d}OFBh>EgE-%95CkjH?s$PNfyMp$L>M1IX0!$zi%OXtT3DSd-S=L zcko^m$pcQWtDj$H8p~Qy0K^wNIy$QH0?0TgqNqgXhR4?lA+i3Ex%GHoc(`z8yUo}?K-xtt6uKE3ax&Cup;dP&qEK0GgHId;GdMx zpx{Fv&7S*5!3UL@^MfvqcPA)O_M5BE_MpgFHFxa)1ctv zjKI{aLBS`iDkxDv&@>csht^Y@R?$JxAl{RXaJ$2tV8$9W8!b3o(l60bYP5VR#&0|Ls;Vk^#9`as&}D+s@$y5HWd)yBI<>IOi?ny; zgP&{@J%_m74!Y#NUK!5W_3@P~Ah7HeTqnplvvh2m8j-{fOe*D#)jEn=zjp0xJ z>mh`b%%A8ce!u9maNKvjd!KnRGJMC$o=ZpZ@oyXoo;L92bM?CvwkGy^bE8ar=$L|lDQm?6@ zsd>mOf+R@rZ&tBaSA-tNS;{N#uDN}bwgZ2>G(Fw7i!}#7a_Dg=5oAQ?OIpM-|Hi8U z#_e&AuVA{NQhwRyIvdU=wcnd_!V9@x>{K_UC^OWbjA)6|0QwPvXp6q=7n&Z4j&JEA zm>vJ(r~!^+U$H_AOPAhil>)VcO~v3uai1|rd&`4`(l>N<@%`<$@%zp0ZK*|IdJ4G8 zzc}eEG4?E_nv_Qkaw1TG3+gi}!gd~w2P3-R=q}tl^%DjK+m@E%<#xSNO;#_QLz2J}R|>^^yNx$C&$wD*?vp>vLn%9pk1*53j~CWIjmPnYQ)9 zU@>_x^*7JQWPz9=DE@Sgn;_z?b=E#DEpnV@3KBw~2t{ z0$cC4>Zi5uL2)^;slzqmS4fRnHc<^=dJ(7ku;i7M!=53@l2B!r4Ik@2YW~AY(R6;b zT^i~^Ub~MOGsdg(`qY|L^O24i#I>^t(uq40=&&Lm#L3lVDGa(;p!lb^1L{SQBBe=- z^03rZw`#}qW~U^Uok16Hs9^4#IpWm7Ae(FTT3w%w@+FBa~^5?c9f+RjQWj`RAlVNc!%iZJT6=Z4?N0&^Ru%PTIPi7}n# z+|_LU+$`qwO1WBY3nnb0zND(pBH*KO^CY)&e?MaorXz#v=+wAiWGV80tRrgB88tvh zlO|#HGBE4fBxz;jSQz@^To|Ncd^qBw2ko5?Y$|&gh^D=dre>yAMx3)V)n!4@uRkLP z5J!Ou_Mf22AXM9T>|Fko*8z*TdeW^_)`S(3 zT=Xl_fFw`Uszu@ygWUK+(N`6{n_II-2b-kT6^<#vyZ9`{8MWhn2AQTMLzvp?7Dp-E z!0WvhH1i&1b9-=XmYegzlGd$SEiG40PZf&7a`$-}KA_Ru*T#NM9yIwS^hoBq@0vB6 zg$4$UNmsqAIm4zi5d%ZaxeE4ZEL|Ue4);62=Ts(09{``1b(sijl z_03RyAEQ21$}dgZ=B=@>u6Sj!!_eMkk4K5~XTBO@Y$*|1B*YX09`$H*MxMpsFa{E?dHuXqKVY(=WHZ_wh0eia1YH0qtC zbX=hHAShGePFt@rn~#8Q8o2i?td z+Yx4UImCebZd4VLu+1AhHF;xl)Su{MJ7m=yonG&BQD4`sch@1yexIm*p7uYXwIOcl z#nX_R_O34Wy;=^Itl}0rucCW>H}H1pOrVAs=8n(PDdu#|53MAhlcr_67f^q9Yet*_ z?$Kkq4rg$}EU(Z;SKkEw#&4KaJb3--PPr())!RGi-N6j~Hl0UnjGC%8GUtKn^#u>8 zy>J~8O{ek!)!9GOT&PcK6OvO)N*C()4Pb%X*>QA};03--3|~khhjmTB0mE2YN!jn` zs$<1n=%)$y(ZEU4)};qbB6OZC#~j9 ziuc=tbt~?^0NTNq3)>!j0M{3DyjFA^e6d3N;2yW#HhCNuVi_jadIGEW)g(S0U6*40 zmpD1v8>jW7Y1^`e8UdO1AI(Jda$7b!9IS!klvDKseka9$P;p6-q{6hBc-oIc5)f)y zLY=FaM@(I5n?w3{hQcFr(L$t$E%I>4`fJ1RO*Jk1f4XeOCGHh+2?_{u9I z+b;S72gTJ^=Os_sDGdd*X=dlgggl|uvcu#_lcY~fZWyAS)#%lP7i)kh4QBO&yQd@` z`t-XC9#r;}bzTW{LfjE(r}RpP)~)xHsKK7$jIaYiOi#m2^&zgIW+_{S!HD{zLAsJ( zyK*J-zLBRbamzT<(g}bJq*%wmX8&~OAJ>4sK6|k?ZnZ&8-bHiAnfcd-WEob&;kHOn zo_Sb(HWWaZX<%sCdg%^sw}g~`H_m3&P1A+Tv@SMa>kZ5bEp%>u9Ff(gz!K8&42H8V zF1Ll4sUZQo&|=)RgakAGWsqjT;TAPWZw|$aWkt(DpKh4K)6oA^KCku^1nz&Wd^V+c z%YP*d1^MIxNAJT-^9dlmKMfq|Io?ckZ(G{1KaZ3sQ}($(UR?mDxS)%!;g zM)jBqBGXexY~u(?dXS0!=~FNLjRTj zK;g`HGN8_=cv|kRyXjR=fk|E%>V}~fx~)yzCSBO zS8Bu%Bnp|bF)UFCffH@l+hfP#>MSw>!1$P|qf6f*MO(wNKWOYdy9A2vX65M5F1ec- zr(?UxLrqpf&AM7};VtssB<(5vZxV5TojPLu!^4B3o}OwDaM!Nwl9cqxe}N!y`$z+Ng0S^YKsI>8NcBr8Q^d$y~ISc z3TvCI?k9|s84qz6e^d%b|M9jq*v`pJoju3rJ|E%6jzNKnIaH8{8wt~EgPgbU2UHRnmik_TWf zyc0*1ND4vTdQwD)s#*Gq7tf2>xH9R;sF4{(pXEu%jz!Q;2RgE6rEh-~l?l{5BNGvi zUhcl|5tO}j^PZ~$1iTRKj6e{_n{}4HkaiXuEiE~S@!R9%5$_O#zARe=k2eOHV9+JeR-KO)GCEaQqfW@ zd@)2mxTfGTMSwI>Qs(X>Z%(V?_xB$E>JjUx0?WM2H<`u^Zf2I)L2B%U{u%fGM)Zqe z(n#^m?R9HI4k?|l9AsLXcyXdsV5E0oZx2Ky*)LpMB>I;2=W@aUc9|nd?ArxV8qXvoI3=}e~-Y^9OyHV zH>N|6G}xt6<;`Q4NMo-NZL?q*(n*_E^$NK#pYka=+|h**8&9!rPk|G4JhUpO4+<-e zJDCoSDtV2lbrDJ!-_fUYCfddgti zMP~y^LTbvK>&-kn0a!~1_r7?5hx_lP9Rq4P#9`nRa{tjmK60l(;)Z7 z#no${4MZgYh!Hp3GJm>6J=c?G${H?-{Yoi6^j*8pl6i&jQS8GE5y*nyiT+*kW04vl z!KX#PFVZ$v*5CjOOUrvO2jZKkSk;+gmcS>mfG4#4Itn;QnuUiYo?ym?~zm(c*f>v6;p^ z^kaN5f3t<)Map(hThXqTtR(^o#MA2W#p`nm2(hl!qufhwUoSb9OAkZhxLf?@8o)!P zVXJn++4OXFc18t`&5HrtsZE#fL-&y^O7A|1ny66d_irWD8TR$FDVfsQCdf=p?JU0v3$^EZx(6vR*6!;y_D z`<=It;a7dA3&inGs+@L-~i4rh-xg=P?0^T`b-v_W(IxDgE|Cz>#uK?lsxc-jDdH9LaqtFk)ibt2UDH*kaG@7y}6Nm1(gY=A4SC@JK zz-YXicRau(-D-V=hv+-|#Dx7BtX4g8ACaQIu-6KLI0Tgv^BKH{&G_xR|0I`;U;hKEe>%Wo zgX`a<|AG?_ghCf@P~`qT3xDZ_5J{kttR9B52b@xK*f-uC0^e&}+n=V}jAjg1{naa7MhttCAfS@cf31`)b9#jNz z=syJYM}G3udd(`iVjhO{K{&M_{W&XP$T-GcEb%%&D}DM@ubbCCu15U?2M+m(oeNaU0G|4d}btHG(wl-fLS&Ff7&rV z-24A&$N01c|4Tc@F_#ACQ%=#h^^hg~^E-DbE8Cj;-bnkiUplv)n&avs=wW3&esZWs zo#g`=zmZ&4`|TH=aLpA68uTZ1%%@M_wRpwuHb!Z@6sYd!FFJp+yJFm5_TSY`M&F}BzT8sX{uL*wlY&ZeI} zZTQH;M~)0|vvWgi2FfknFl}j{VDQRDE1%p}3XdLQq}brlhz3mgd2)C1M6_SR=b%!N zU~_fQcl2_iWa#PM_hQ#Cdg0sr0I-4FHHET4u^i9>OJKZ|t(5h@QBb`;wCHIu67i<{ zp0*^)%IRc$U}^i7>k{#<{P%1A22f4dg72(eenk`8O$s%!gu%Q4UVeBuDDPlp1 z{pp${+>+nUH9oN7%Vv62@fLhqS}K-D(l`2<|L0fuf6CQv+crcz`jmYK{#r=jl2VWx zLKF)6(o#_+r}=cPtvOzBkY0#!K}PLfym-;y#N>o|%f<;W27R96b7#)A_+lCHo&PUd z=zj5R_>BL*?ri$fzJRO!(wvoV{P+45|If{qTm0$ke|q*lx}bl&C;zh`zi7<=pLlft zh_na2D}>G!gh?#_@#LY1^97_5Oq2e)@&IWKLN+*=R_<9qH!7m0la^o%D^;5|-4Yd> zz;SF1{6e-p6{L{-=rvO^z-gro3d!=riqCT+nx)3!Dy?6>sz0i*Z!BIrOkIsK2A#0Om{Scpd$s zT}`1)o3Gm(zj$%Dc17x35ne78yG<%gJxW@^`fXpp--CRlU<_s%`mrk$Be;)aK$$sb~p(HV+IK-;O}g!(y;05wl~bmY5;B6&ObYG4@RxL1zaK`KH#U|GkFH zpL}h(aOp}v?SQX^FTA5%De%%6K}>;oYIx?>jC>FyO#q~!0o$lPNmZ@62~iFw_>^y% zY-{JKpLTH2qq5Y?dfl2eYkc$h)^9Aj^$j_uK6%&d)@p&R%uha?(7ND?ZwHeY)5txx zqh=4ecD!|}uf^7{nyFs-w(aa$za=hd{A;&1%iGr0Ee-LSJ6(UncFSWAtL%zy7@Gx$ zR$g+y_CC4H@So>%|8_IgbPIrBcdvDkef-PzFI=|`PJ5*E@Kn-udR3?Qkv4z}yQGEd zJ%#!9sM1J(15*b~QJ*k>YDyNaM-3x~@#p9)Saa>In>U~I9#gIJu4KLQ4(f!9^$k;| zar5xntP7p@q@vFOdaet9>?*^ZLyKxaN4g$Zv{A<(7bpJBO@E@oC{!M)&hYESIiT7}-7BXBc;n`M7yVPXk_Q{`;O; z{Tf}>Tr0nV+Vx@%r1bOLIOouOx=_{q->1%<`Rv?g;I;l= zw<$iy6|4*e7+P?$T0dc)(Rxc-c(nHqG&&T&vnY$FZ&~v%km6!~kVhBFy~f~Xl0j}zROy0~YJP6@z-?jSK^1{>??tAM>^(0u z@D&c6t4eN$BXFJ!+p_WV*D%zH{jS@XSUhh6T#P`0Y3lKtWY#c)QQM|8`*5m(^%0{@ z4^CZc_+G!gp8lELyN^a`5RSL%g__$m^c)WC`pP-hEK6P5Dahfvryl6yq45El}h;L0V zPBJunFexK@k$%S6n!`oDftemE+kjC=ifhirVA&9NC$@jK;=P(vZC36zCa{OC-UT9d z70}C4uT{jH*|S@rKGDt6@tB~qt-j4yv(z{H|MSK}bNeVXKeE29!XJq?ewF>1As?J< zbH%cYzS_AA7zL%^yR;DO3W|tm9uc;1eT>>s&ar^l+`7t3UTshOGk%7Q|0ru@Hb-5u zX$C9cnpuMfR18mJfZv*3KL?gDV=p5|9n z*Y!!C4e@c?bY4#AIZZyseCwnn{neq;=5O)he8M%flMVAv2i4VN#07=ST^=OeUVwn1 z6V1@7Ok$r`~+oK(Ac>(uexj!0c7#J0e-3GN^r5x~I0oCIg3QHt(|TXtG26UMWTRnqy~dK_^oJ4sI#2Mm9NW z@Q(W=3hv7ImtFOpCNGE1N%)kI8sO~NvU75=dS&Nq-Aeoz=C2L>tQ0)kT6cz7Eg$Cz z#sTh#tb82d2DZ;Lwp)25_g^7`i?u`y{qYX8p9b80$4)o5ib+b7-OLp6hTROQHqW6B zhIl!M$C{{sfc~3utTRlL7X!9;wtM=gVHpyZ5L*tOWi<2nR(=YX*0RsjIjaLIi9!C_ zRU|a-kX5HjIDTY)wQdn}M(&a^B?Xzogc+8Ic&m#^%n(M3G(1hfYOhN0c6A!v|F}=X zjGxiJ_hPJ3Zz5(Fn`{fi60WMJhsxRXY_UD|cf7xJ%S2cjv%oMc1tKyn{oS+~^yaU& z9&*=$2EbKKI(Hhr`UkqtAY=~7 z?0tB{&jY9JSnpW8(69vh>M9h?2#xjh?G3>_T`9wW&5O&0sm#}1vzV2p*l9$6`c7sg z`TZNB=Z_zI{(EeKw$o}k%76X!-9LF{PZaBkSM&#;DnZ(O1!Jc}_h{5CZl`VkW=a-7 z^)_UCj(f`2Az4u!G-zhl7Cv<^_oG19)`yuX_9}5$vX3JH>lKeWIAqVK#44=^Cv(Gj zHhGx4l3L$&Q6*t5+`L(ShnZ4u=m?i+k*>S5c+ZU$7wY^%=H|5+nY}wLwjzDua!ds} zb&iY8Wa#X*8KVnM>=?Kmotlb&I@1CM6&#=T@r-bZ^ij!el6r+Z-4TXo2f_auELqBt z*EcyFc-k_$OU|I-s8QnnST~+TuH%^62gy%N#?%^S+R){c03Y(?kXg_+POC{*GNKem zmnROhV8XBbkCgKWp?1+Kc+tRgRFUt=WgLXBXdRq5;R-saCwQvulwfxomwY*ZCQR6S z;6MWOcx^ZlcR3VI;k)H-8og-u3BPNi*m0;zU2c7?v!NsHZ5v-i76%z7XwREWws(>Y zTJ6xktLt1$-{&q*ki2(xCQvWqZoJ|xu8Bxf5yXlN&LFRCqpPT+^f3z}LK)#=4-z@1vRKXF+mxjf$s7_hoeO zTiob*;0k@oUC`vaspu?Y5uS%|53qwZ+=dm%hCRh`Tw3uPS<|n`_cOxNi-V#D2Eh?3 zCI5Q?_m$f&8v6>fux;|#lnIc-_qJ>Gr;1K!hNqgDfz0bfJ5U(TjM0-Mk{0mz2^~!i zw{j>6ooBu`W`?X$S>r98UjFvBtiG=7V%&ubL+KT~@KA%uy_H*|MfRodABto_6V*$a z`s3eQFJoB9ntD_cPY~uWC_7BukibB~)}u-;&J9fe=HsHd?ArEOl#AL?yZnP4P&`^O zx?o*o;b~9Wunkm)?71)RG(v;yO6D6WK~JS<03PC6byE$&j+7v@m6vw3twqR^y&=RVuQpXoRAjHm!^n2AQNqt0_dO zBrRH>paiT`T4w;<9)o3w+=$85U^D8z!Kwr zo2)kiL`iRu5Hn%8En&o);6RsQ$U(;u)q`1he-MVF5h;cgswIxQ10qBF?$gSfxd8(a zYOCyj_k3UT!}(T_>Wqa`{Q+GoZ?L2C;GH3$@r_SW`D5)Lz`&{Unh_hzK^Ny_QsrgwwPU3Af3DMQ#=CaFVz8U4$~QRFk86EKH&Uc1jL9s-(C?ST0-dJDzp?4LRdaLcy98g)d<52^iZ_(RZ z19*-_#|Fp4wEpSGFAEIDJf9N056XEtU=<-eZxCX)y$tz>Q1}B3W0^ya9A9;Nn|p6t zYJu1x2ucI|T^7BsaBh5O?>z5_RiQ!9b({dZ28bH$g4=^oJsLffU^ryz58K_C2m zV$F(o=Gsx{<(b#ho}-lwC`BH_n3ujus`hnwc5qNO_NcsFN!-1?`^CR)peVgZ+X1A+ zCT!Kq^}BNyD1zsfbh`WCh#?$@gwAit7><1-4A04(fIN-%{kzn_LF z;Zf3>0xG+pb-FRpUJips>p#tL!&`B9ppuh`%IqWsrjl)ljFH;3|2f=!?Aeu5a}m3g z%o;Dgo!X>}E@NU;9%;6j;fzU1Z9l(%+ldpl>Z|wDKJr&YX2NqarUMI?cPig}?tccl zZ$?)qNPgnlPeYZE=+8$ca<1VY`*3;NAK!pER}G%)cT0pcWAtWly3)~Uts4V>{OxlX zNXQu)qj8cp!?X@_vHt!qSbuu42Zq*;oTTu0^Y_rQS5t2VPvf3U=jn{DDY*-30*evo zhd`sKiGKlybEYAzJyffEno+bx+WHEyWfs(4#C_=psLe{N*m~OhVnl@PA*)RYaD?q0 zV{5>p(8cEq$L&Uxb-4&FZOaE7{df-o?S@gd+D#Zpe?%C)%pu;J81*4A!9&z~GInJ94u*R|Ce| zeDov*U-c^C(5S@Cw|{C!cUFE2=`MBt;?w8RYZ%in3kEeuC1?CdSVjNIbg4ObnJ#k|dCmLB zSSf2`6@|y?AV4kFhZ`LlwbsOB9CSLjB$skQZ8G+W7bEP>;Du0faR9oK#So|%HYb0x zWoFSgS+LLQnDJ7z+Px!xS&_)0GZ$Idi^CpSa8A4+!BI0_O*&sRcG12cU3xn!{lIt0 z0iq#8CkJzu4dEBd)5xozci|Q$>%-^Axx%y+Y?B}}1~qmg`{5bzlCwaNmV<)S9-o?u zAMXr}H;^n-%vS^5`&zd8zSXK-QNaVe(1vbkW;Pz|G8M~A99A1d$tHE;I~Bx-1|L75 z=P&*KfOrA0k=_r31;?AJoFe{Pf$F-qeT?Jg(zV3h}uL%N-PBivcNSNtjT;2j8M{0iAk4wIgTNr0_VW9XC zrEd-MDuU_$v=O=&lgqo`B6m0f8@a)`99u+b#td&T(sJN~NAggeIPtvOQG9`5{kzVV zJJ$ME>S619R$XRmOkaj;8tnGo2&HvF9l1IX+h!ow|Eu}c}W0J>ig4h zrI#y!3?48C>ET~C0IhK}v>X2QUx>vDqy3H`gLOO~E`B7BdQ;$3VRlGpF}QwpCXlc( z*qjOqNbgS7ToW(e=FU@X9+ucu;i?UMBT#T%=Uk5H5ji)3Q`l0tOJVe0gGCs2Ge6u& z{LSD4@8k^vA<~Won5S)AaIS~D)bxFz>Z4ZxLjpmJGmRT9{&AY*6+WpSe?04w00F$()@L@_^Dyk=>Dy#FSf z3C)r{V=MbE{ZLhQpktxQYez)e&Bl^FW-t;PWIO=hbaDPE5U4G=J)x=3_nrH^c#pu5 zeFLT_q^h>Q07EhnqagWhS~?Swm_`^#UacAhtb1da zlDJQ^k0lAyEY;C&LY(UBt(>d`uI>muf7>6;uuX-<&(6SgVZ&967sR8)5c^FFp1=Xo zLd1OIBqt3$f5)FZ1Ck|Ou}^#vK`~frx-+5Y>!FHM^+urW!*gz~`XoeSV|C>m*U5aF z3jbyWVBH7mIhio8(il!Agy?!BVqk+&Gh&`^LpbUYVhZ|8xQu<|>oXjBkeVY;eF#{;uUlVk5<|y%MhFyf?$H)tZ1EBqM zzbcBZT$Z!bc0(qtSQ26zm}x!#cE8?szj^JF{r24A_NUTgW*UDfauLwQmR`EF?$kN3 z8S79n+_@(Wfd3*Vz(+zMy(8CoL4@S+7@Okj_wV1&uR~xHwRa^0Ed(vfW=VN1Komou zTW8&gpD25$AYLbr7KDwKco&cBu~-i0HKarK-psNkZTf)rgjAn z1~g;$fi#e+TYO(*+a1sZ=X6!n0)*o457bxxD*5#?{yI`Q(en~dj{w#gqypiaO$)an z^gUJqw2hK!#KdIzCs~Dn|Abc7LJ>X+*8$wbm8n^q2 zq3%-TrwUbd&;CTpJszXnzGn&w0grLSwK9;><)P`6`EP#tNT??VHl+WL*M%4k#^rs- zZ1)fM7q+1lxavxPz1L(t}mx&#iF{)Bx z-)qm~bdf8}z(UVI6Ufmh-~)vVt)N6RetV$9GMU9k@X%TDy@l^}bpnB)J7kaBZW}L| z+2@fQMkBHk6;(@gx*1~sORPI~s!KHxAoc@;wU?z&AlIB&2A^I(P4UtcxyPWj6)XHOz)j8)v_OEii=Ky zyT?*Lm9BXhFox=1i{PQ8q+*e|E<+FQMfm2t=uH`bR-EBlTuw<|i|sEzsaGvvv|=2y z`5OkgL?Cr^GKXor`4X=}e}Fd+E;PBcq(Fj< zR*v^?p3WUQvlRfsiWTpABoV&$sQs(je8w-B1LeL^NI-m9XaEqO?_4)zCKRyLQCYuC z_*p^WA~JGGpUFiIk__-!341Ol8Q3a*33Qoe8 z7p4(|HNzy53!jeO1Vru3{GApH-CPf5!ODbIVv2JFknh*!X4;U(CXx*JHzvyhdK0;<<5FC_(t?cv~=bULq#TLzA16%4K4+fo4o z_hC*Ncqd%-uw0Kc(FIxJ6_^d(XO8c_i&R#n$+v# z@~h@&d|1Vkk2RSM6Yy@cGHC3 zc3qj}E@;8DL|4%3G*#UN+vl8h^mVL2XqC7lNc?ewB3neNXi@kYzZukn)6~17(N5{; znZFkm1*-SapkJG&If=g$_8pSfGn4gFfeKiUZNj)oZ%78ssq5)rcA5U+;m#}HXQJta zt~J3(g8XPp8)(N~yr{tJbKX&PAi%~Dg*f28 z&(MRJMA9CPkobj%24CtfQq&vqms@@VlVqYX8Eur)D_@8|guLiW1i-8`*LqUPb{V3xy?1bi4W${nl>YXl}bRHCZ zxzNB}D*|`@J`Gk59NK-{M1XKrkd^HN>TvP;^<6=?ssJ!p;<=h~w0cy4V488Z)}uvzrY~A))q%uMQn;9!x(IvnctcD(fPozFSQHc<|AFjVLuD~c zE8~CUFn|I>P@A{j91A8262+s@l7}umX{Qjm!N_PdKp8JI6rjd|U#WuUT)EfS1#W?t z0DS8WZqgC>(yv$+gY^VTJRUWDn(L&79 zDE1uA`rGJDQqYJ=LJ4^6f?ZpVfGpDIaPG)c8)p!44a}xt&^=Lae|D%E`iOp$^{Qa$ zgeZGwVfumyP&?#hGf2|;=TQ=C{)u!^0%8V+l8?)!0s3YPnIc}pTSf^F2QiwmLg~+X zViS57ebLu;r45NQJYvpZ@jeZ1c>1!x7d-|H*Q}3j0HlD~(`U@c@3d(=g+u-L$EuR< z6lBkZGscRazBU;7TyDVp*|Y(lj?jX9<~&>DmRB#Y9n4g1(?I;k-3tVKDPqWru!E*; zk`y)AcUqE16)HaYUsnMRuL54Psxfl*(WKTi)wVX^CI~t=$*hR8QV?Iy)*RUt4Jr2& zECE9I_Z7eR+F0zKt>=%UoCnT%gtjHRM-po_Z2d$~H*B;eAb&#t#A~d8M0(N2U=O@A z+JFeBA*C@JY3~FSsC@n+kYG2C88rS!?ZS*nraOANKB%A&+zuHBZVy)7Kx`6K51=HO zdtMx%#c2L+qwN6j#uM$ngW=sxBD6;(V5FE#VZZX>HQE!6dj=Hs8^nB^%Gp9}S1lvbz=w!6>XmF6u z=>v(|5j+dgL70OHSJ(3#7(I#-GXkul5)h0?WRV(vgLSAX;B}?1k}ys!3lQsQ6sCx(yi}>lu$hY(Dn33d%-|Uougho`90jhOSq-TGyI(i(hKO-u+rt3s52* zIHIl~e9R!ZJq9w%-=ID8#L1H{ZvI|hia4V>E??hU#Qe!XLj)%2OaPGYgWd&EEz}vd z(HjM^g)Hf-qvD6kG>SLb-yfD6jfQU%BX^8?WdV{4bq1V*nVZrVrE&17`kRJPsR(0*q)#sNawQ-Wrb>!iG~}Ry)ymWyQ*Op-MXqL?946|pB&o^FVq1L`Go*v za)7<8Pi!PLX4bQ^7DynnX(o);EEcBWmAN z!M5_j?ogePbjAiWBqt;FSQse>K=hf&rKQlD{yjNHJ!fzz9$#LtKiu)jBh}UlyT#)bZY#d>gbE zPn&}xM!pkk$dLUkd)5wBn=H7l(*=9s)^kV*vM8PH*5n=0x_*QCC>W~pXYDXmk!w3u zi_C7^tKt2#+8kGodV3Op>iO-B+gK+=VkTt&uPeh^)aCadeT)2tSzQOg(+_GM=FAf|-|`WGa|mH?QMqPV9~CGhyQkuu@F&VT+q#uB}V1?R-rXiVBj zgNQrGU~fjWO6iV|y;nZ6NIoS2cq^;0kp*gSk2@YkZY%}kBIS1M`nn31X^^TH9MFe2 zkQEktwdk4g_SdKAe?0auNqURr50qGkW-)U`@%>&-b&;rohqiHfz~~p=ng4Fog67}t z@#sl3smEY~1oAPn5kV*@@Geyl7y}f}8C`U8vK}1tpa64I)ON0yurxVYuTVC<%)fH; z!y7$_?zcp4P@VYs{nICNv_f57pX}SZbgN5zd-!{c52&9!hhw0ndaxp zwfTNJ^!_{ZPX|t%-7kwZdz$d=L5@adZXaHlr2JvGit$$!f)c;O@&}ZrPoMs7&634f z?rGuWa7Z!_8^OhqF)+Jfq1@jK*}ETb>nruwuU}`ketgYdOhTYmMUEcARL&g`JH&+5#YBV7DyS1f`Mdmhf%LhAi?oG+N|9qsXQKZK1m8g9@J(R7YP6z# zI&g6_@g`K?=a3X}2Kw|mF0Lnj)Issw@C(GNp^s+lAu`y}BPE3jaUL$G?kt_REga$J+~D?)(~@P??8k7wz9=aDJj?jFB}WSVW?V{rEfV1 zb%K9pDz+|YS})-$+S{3SM3i(4{Wr|SHN#C`hG%Vhk@As7=n=_37bqqE6Jb%$;-Xz? z5a^6AT0ZRW4BZEgOcqPeh&No!kOni9xx%_H{W5T}@kr0G@K9LL1xJQ;B~Q9G_0DW(Cp!&Bps>}bG2br+#?6>x81HnxAPVJPpQ14MEhA@i1DLMMmodHZZ}#UP=^}LmpVj2z zVdQltf|wBuN?gGBd)-|tuVtoMjKmW$++r~khawWLO{KxtGzM}QakfnalvzS-?4u%0 zOyRa!8VKm-3nN^s{^G>i9rL!odw!1uw=4C`I}tJO!kfF|QZYG$s##M|VTzO<)4MbM;-yPE4O4VM#T;#>?O=x`@k6{Yn`|$DlY3LR zmJkcILZoXQ69EgJhthK~42KnqToIEF)}6cdO)~7+Hn~W1IaFa}&F5~2U+=2#xGph) zp)HQ|{7#ej7TFlrr#GuBRO;jYl#((uF&wvPR?qab#3je&J{j9jN$FoHqLJ1$zRoo% zpA6PPi7Oo4Cl+rKO6_C8jen7H!p;JzJO~Pxbia?@7(X3S&a#NHqgrKvven*)G(?7-)+yk#=4H6|?kEz&88MoS76@}d&}n5U=}w3gjBFZ^a9k)@jMQP5 z$wrc%f8Q}2>`l~kuHW0whzJI0eM$oAa+%;-U+-X3#Et@E$1+1*xls^?2ro4IXk|R= zxg3bfrA0w~2VjnWYyn$D>;Y@>jmJ)baq z!Skc5Yr<^W)b70YTKfX+e#ZNEoOe7)qAprNOLbb7;go4o3db!4u{j@Lp^ zqK*{pMu##Y@`#|ZMT*E_y4PTa&_mB`TpTymM7fn2)01QY4q z=nUzUE1KwLn0g^5%}@XPwBNk9T^#5=8HIOdhAm%BPNz{N*^7kwaWWO_O~F!Kg#IF; z*k@3uEU6?3541y@%LyUA3#Zq$zkpH5f&m#vV@$JV?T*L|;`5pgC?IV8d9dGtmuJZR zi$CwkLa|SB%k-%RBjFXQy@{KGQP&CMl8MDD=udZZ)bhMALC8Zi!&i&dH zAO|4`r}JPIL`W$dmcwH`#VoQ-RUjsDgwZbz$;R+{)Yu7kUakjnn=|FK*$8Z#Be>#x z_=pQXz~qZ^1re-^QL`ghiH^UJkCH~xi&Li8JC=cWM=YFu3Bwk?3jP6!$@o2ge4~Q7 z2@wu><<5n}j(ogNOi>#l1^+`faeKqwjDUhos4j4e66-+bbH*_m_u2#^3n@Z7;uF|S zf^IJvmV1mo(k{Ia5o{X>ni5p4VZP`yr5999qx8}%OkuR@(4u$t~=m7 zqGnC`7kc8BN%~2`AT#YL6mrvpy*L^IWcz^nxgM$p$WZm$klBnqmSKEB;tD&A$q^=2 z9GF3dF&+|(uXxPqB4b&^Z4_DK?dCx0MKoIMvjE5E%_X4zSK*zAdVs08^-!pbhlyvI=TzgILPH#KkhFzRs(I3JgUn{OFh%xh>v4WAl(f@Ktof(X^o-(3 z=K%uB5l1QMdA-_Q21tMIrfXTd!Jw2}?j?M$P;_%j|mrsHR3%$Omn z05W0+WH4-hl%!k}76s~8f^|Mv2lxq60QW~pg6A+#{Afl4#~ZpQ$lr8Clh8*mUxIzh)Uk19^imA zHzlB1@ItVbiV;kYRkJmQBm0^e01Mq^7^e3@S)AwzivJ;ERTg)(7f0?!!&eIXz?ku$GY^bJCl3@I0C$z$4;oefoK6gN0y0g zYcireq)59AC3hGj588nlkmq?}NiW@xPrkQZPyCFxmf3>s^w~ij@!u4m!ml?)+{pcX zuh{JfZf#QnpB%}EBp-lg!Z^S);_nG!y8np-^?zn}-g=1%3*Qj@M)S#+1V{0va%e>n zY2@y;7XK{hSSW-LZi2+g z)}snd7E;9Wc<%fso7A|0p8c$hoM#kRfgVgn@w*zdxx{?QnmxHl{^m4-YfQbOl506@ zH)~Z!@N)~(amNucMZmIudye7l}#qPb` zgi4O^_12ZIioFIXI15^~7ZPB_K9tNHCw}JIRMdIX(J9-MQrWGHU5^STjrAft9<2h6 zbJb5nl!e0D`ioo=lmq=I6Gk;gqnzETVd7tM+=%cFkZg&tec`%d;2vY)V8;F^3fh>d1lx5fQD~D4??~2+@yeTm^i6H4xO*r9eT-FZQ{+p}afR zPb_AmstR!N#?m@C*_mn3SMgmkY{3@qLUAN1P>aCIIlqb3r9K$mn~qKy!p(rRLZl?4 zU=H@;MG{8`vh@R^)uO--LCydQ^vZ|_D=+2DL4l8W4Ls5;8#DjORO^c221m9#Af zwR!$6d7o@VO6<#g*b?xW(lQ-#@kyD+=)K*5x~2~O%4q16D6AO$#4lfr8v(pV?>&(F z2@-OMcF?-Fx{IPC(FP+T6fqVd2*!dAe~X>Y(8peePH{TjJRs+UzN zyf`=s+&U>Kb_^h27$ibwg+d}>sQWioYO%KQs1F}h>FuQR?(ah;ECr({|3^y^<53tr zz#Auxv~?EIT@d{H!b75>rCCL5NZc8JJ{A2~yiPndBG>)C(4|lrFE&sj=3>F`M|DW8pir1%DSsJx@8#YmkU|ZHi}!J4WQ!LFcA}h1w}G-*ci?I;JfJEU3T0ww@40~fg)YzHC9Qq z+HVi9B7qLw$2ojNt=?uWQELd8FNk`<<#CW<;)?tXPR6Q8%b<l6xs5J2?C z@?3FeSITzD`rPVO!d4~%ob>9VwpZ;356{9vBHM))&89mV`s^|vWlEvLj2%Nhah>09JJeR?(3hyo+AtQdiFuBrI z+73R<%t0*5ufCAuBYXOnk>VHb5or}LTnX${G!^I{NNoo7kj;yI!}Z!YyE(z?D1q!b zoC#zui(R44HoiYvR36KPtcj@cjHki=w)mWZ}^sx0emB&LDIGm_->~l? zSTF6O9gDofdZGi4Y;3;1#*386;_q)BiDN`UG?TRS`{KVB>c*6aCX84);Uxs@D(rnEmLp<@AaHd#Ey<)DbJa!}xZp{v z5vhoZeWV|(@&$p!EfD2AQ4cC&w!~4>KO+7DfdXo3qG}F79&*>1fFY(|3Wlzpf5hId zbIyJM38-+4+wk!|a^H|UN z4+k=PA+}<6O7h)^%LttzH-7-Y{-s}kgE6qpJ7DuDIxI{G6(HAtiLym(3&2sbuuP4k zBNH*kZy7{B9-|HQM&b_=C%gF$NOA1|N&afUK$7@!%R`iDE)^kYdvx!d`0dcw&4aCnd@NU0^oCV>1e3pfUz`O%_b6> zx0y&KPB)w{MlQ^5++9X9#9uuciN%wWVi69z85u1IrYu%70WJ8!2XWz4vJH$O1d&`g zaEzIO#z3*{5l9(=%L`&+4#QU5X;=-PhQJlsMQGXn8i{3W#eSYr{;30awPMhoH8YK4 zCZ-kPZrbzwFhr!o0k}E? z%$8)r*D^Lvt8g&bpFxQOfJQItPKqBjSRY6PKpBQUEUuFfr-JAN+YRjlZ@*Ts#Bauu zdY=1m%N%QU;v_^QA=pr76fP(Jo!VJbnaApvXXwq0K%4#ysS204YtsFa9xs+QrTN zy-0j9BeaQd-1f%@U~jXT+Kb9f?AVJmmMogV$fX~YCn{9Y^pWsPLJ&4_x2aWqI@?m% zmrM9keuf00Q=8h@FAMrKIeXKagN#wb{cDGcvST9yhgI$(0ILd^c&}^*V)S<=3&qbB z(+}LG4@5dx1N)hgp@>q9O@|7y4;p4Op)DZ?=>GoTY0Q6{f*M^Ev2)JXB#M7TP*i$gh~O-JXsV(WLbqiKOfXlvdIHVEZg&xBZ>+&B<&~rr{|ZSBhT}!Suj%R_Ex720WQs%0t=`%M6HnI54$FU%>yJJB`m<>pxWSr zXi^v}bu8B$#NP&QiEU6b#SbFB(~pLlf4F9Jm{Q6cpyz=Fl09U56C`{|U{!zILxQ3m z-Q9N-%ddYo?{lzn2BSf6DlTgioX(qQrd$3;sbZ9l>}I9 z1hDH8OqvxgX78SRb|tRzqVGRx%p zWP5a8P}|80a8#Y#4Yr`2++Z<|RWrn+JEGBZEdOY6r>%(Sgs>O76@{PXj0Rf(Y|Sc2 z+xSw7Mb%C0FFcYjPW0WED}rx)dT>BGHss&5`N_w{4wN^C=f`xjpWQw*f2{ryA#Eis z4ylh^yo8OeBd4wuqI)k3thl(_$h|XJ>_#u5KG8nf!yS>X_h%(?yht@rMSFJi7XP5G zq5$6T97Y+Ghv8?N02AC;)+pXC1{w)`E?Z`pZr+W)jnVzfS5AcG4J` z2RAPCybooM*yVbpK%xjv>%+a(mVm*~2my9(Hdu@@lmMs}^`HyUk&;F37JH>pS1MXz zhlr1IXJiB(YsLJuMGcTeYOiQZKmF-Qc3zQTSq7ROPbsn*3^)-PysjMgF5UPGMKA%R zGF1Izq`r{6TmajTow3iraH&FD{Z@i{*1gywqq*GZkd{Ra=Ii~NJ{k#+)cde6U^9Gh zaS3XJArWc8M5JT*k9vArTI1Fhz~r;3{)N(~E>S8n3ZY6nBvu9okV#3(zoRIK{tgMtFIUnb~)n)A37KyNh;=e_-|j2S2s zXorbOu^Tm{EpRQ9oL^Wihb4@=-K0C-L5FpEDCvPiVp7k39m=1{M2pR0Oxg&8h!Ar2 zAQ-v46#e~v=t17O%fiqwZ{at$S?wx%k%iYv z{jQ|qGUl*Dt!^Ozqm#`wANPSkBwZHRtYCvFQGlr-?7p3*P_$+wiGTH zallGLReVyPsG^R|3GEjO8URSe*RaZOh>ON)f}zSLo~RYxY|P>jpKFHN0Z1=57fAqt?U~%_P6;+0~ia zB$hjQ<5aA7b}QIR9$BG7;mxl>2MddcSXqjBEPj|PU-Mp4|TT zZQ`<#x11~J0cm&Fn$nKKYaJ1*o}wm3GOo2VIf=j`A@`S!K>BEbJhJJ+xsqLwi~`%O z!ub^XaDq$Tk-Ds40T^N<))$q)(BqF}9rJ=VJk_RVraGAjXutGZ^bP}KQ4kM04s{_) zocTSBN}ll&i(!eUzB$u-Jl^x&64$v!DbD?GoqG3|sN3JFdVBt2wOlPZ-q>{%%!#-y z_xvNAK*I&GYGG*YIn#?r>r9bmQtHa2_nSp%ZmQC#{GhL2xT!iZquUOmPN*RmLynA| zO?T9>8L&YjDM~Q`j8>+N4iyV=~`_t3jf>V!3y6{ttuJ- zWszX}baX*n!ncu)A|!KfMyI(^B_l%c^>2-i76(ExX|cn%$&>Kc6uznZTHyuCePpp; zQQy5l?(+>%W+v6~8vruqsV3@tRoF&J5o(-7q{G6@ih_j1tc`n@{GXU#X5&n+fr$(+ zSYlt1dUKZNzojujWpBMRVd$co&QRk))LIKScg*>%HY|D4_XW82uLbj=UPJ>vhG9%6 z$Nk=jdid2MEiErzkk!m8Y}ap9yuBm#8`moA$reh z1H3*&Gy+!i6zQvJ%;B^va?kAx^YXE>r}mp*{J3p;kBpCzTD=bA?I!}FRc z*)|)3Zd^|3wzG{y0jyvj!&}=u4{Pb*tHMHj2}p*zk}I(YI*^7&Mn=^w;$N;E(JyNe z#6l+Ff4+B1o6(C(=?RcRrKC1ZIJ^k#&SIRSYiX!p&AnbinXKH}QsQ$sVP~=D3uFI4 zwZ|KFtmp?Hn3tpK zq?>&z9Uj$!LzTs;d730=nbgw=>gl!INCFS{2;pQFm7rl-kR3A$yjk7+U|EvNYWjvini3QFU8X==fnxVILydbJ0N_H+R0Qrh! zf0?v=F=6o{k>;PofEyH1MH0Tz%&7Cl=}l3sW!J1g4`~m45|@C~+9~8w*_nrtjdUnb zGgTnC8W#=c$(Sbx99ll9aVG$MTW1|BHV5mbM9#tI^Q&^~rRy(|aj2uh4dj798x8mU9Si|w26 zOM{3TOpD3VC;{F_&9qgyB4>|~!8!$3pax@2YC2%`Ii&f_E&RamVi<^~#Qde9_9D=7-Blh($OkVt!VWVxK`(?Q9eMax#E-<~1U_00zs>WQX zv0%J{E=7`m7+96dF3iQnkcXSN+Z-NW6bcv7M2{Wb2zrJ$xHk4b<}&^wYqo^dQ(`>t z7krGk0J)!QWpvYnK7Jjv@Tx5w^YJb`hR%5U{>y|75Fqv8o~16`WmlHF$RKcgcl<)8 zD1nhex3);<&kg)`Vh;JSXd(8#k-IRwuvQjeR~KY8eNnH+{Ihg4L$KMK%psCiLv`29 z2BJaFKZ42mam6wyf*ffaDHzf@Bzk>`L5-Z8Z<%opmH)CYqzQ_G>c z0%E0|B|V_-S^-DDXQ~-dNymn!6YCVjr|c2Q@e)i7_z%LRF5A7vH<{&N*q0I;O$cBc z_2NiZ6HO#vEa*o|_8|by^|Jy%AiA6yz()?~lv<^UsLUZ(^9|84~XM<(+ z<_d<55WffG4Nxr!{u&+JS&&^A!?(xgT~h5RqeNN)23|>VVF)h=#5?ZbBYd}d z#7>y0GSIZBp-1LdHE7;PJ~Y=5IAO7v@zTS=tMnlN>n)kxxw-ojX_K7!=}kV7C_$~F zP%B;@>sEb=yBD6(w24U$L#8X)XC-gU3B9OoSh6#IRJ{FDT@b$xKz*Z<%r4PWlCh^~I7zRTi~t9jem!+)eq zZ8SUG*IugkQ9GLG&=-rW>RXb`?7Lk&`${g2=xd87_oXy0|0l!zzxzTn%*%$xG@ey= zute}bm4r)xc%EpA%lu}LoHWG~PAHqFZkhuTb6>*Xpn#CaZg_3oRRnexaiBsYzFZrT zCJsg4x{IjQ7@@{`W;JQ%)Z92+1VMsHQQ#Z4mp8hN!Q{o_@NUeiT__JXOKlh{uoyK` zuK>{#=`gU+HEGhMCV49KFl0`YeS~RbT^3?j-djJuX(h=j1c*?>u}S|kQ^;ySHUbS1 z*&jW-4$&=bAnj+d#KQ8Z=rgQGkjc*|@%i)TlS}RpgagvQYR{^VKkqRC?3ED|JrlJp zp-B2T`^JqMA&85}SlO9qS_R~Y-Il~16dHE|JRqb@rJ|C3$aSh&n5WtyI!hi~I3v=i zqW&4s4#mfJ5Y<$JM&S#cOU3Krh+10@8N+Ygq|-48sD1F@0f1@^OJKaroZ69MaFs+f zc}^%Pngx*<=FX5l`tDdu0@4t6`&uDoxEhNJlZXk2Xwn-(nmHh~i3mZY)XkaO+j##2 zP$(aka*i!#y&GSgt)S4_kyrR}2?V{7pGbcfgUai|^FS!#Vi{CXnIrUPDJ}&t9!i8Q z0}!&dnr#Xsg)A-H1foqfLiQB}_y=$5l(<2+Ewug|^z&PYidVBnRMN#VI0k~3YSw;_ zwG;hrt(}&*IyBL}zt@yv^g5kP7*N&Q^{6)!;oP~#79kC7BOK3r8kkiJ4HBO+OM#`h5Kta8)G9Xcf$i*NQ4q224`l}(jxz=eywT~(=Ya+A2TO9+E*~$X!PEVx67jHGM zrf}xM#+u|AgcHGf`v7f_EnBxzQhd_fd@XVH%Hy}A$>Y zMgPMoH8tRgItNPgHsXZ%VLD&`M~^yht_)hJTCZLgWCBDCIZlRN0d|xZ+6IztwTbu5 zGiSWSKX5kl`x6!PW;?|WAE1a=3V;~vT}qUTJlSTEvIhB}5^UYI3Tz%^TOr!JNh{1k zCZ$l-x%oNp8j~<*aVq~-6V?EwlBL!ho--tES;d0=MP(!R7hyCi)|?9dPRTEQN#G$~ zv923u{n9`=u~k$`dYn}*aIR$Cw-yu3r4RU|?tT|_Q_(9VBQP+Ki+?R0jXYE=|2ci< z8sMzbAlWHD2~5p#+F24e4GVQ*i|ORe*v+x9k#RDD)+y)L3*Ovc6e=h_yGJ6xwabRXR6H(cGVJZ*~d=@-S~uD{Eb0- zbAJ2jZpx(ZD^%MuE8aAsf6*HamEd`R$yJR~wDS8juWzAVR1KqtH72_a!25-3;p?ti zD&BSF@M<`pN$cU_%1>nq-mF~|{`V@+ZVtpM*O&~vmHuG&wO8w|uDNX7*tj$Hliy_v zO)(?**P^=`p-Kb1mKIdrJvNB~smlvk83Lm!?vJ+VgVC1m3t!ckCj%V#7@7#M+E?)_ zSN&j4>l;7!aP{3jO3*py(KJEp*7IuxZ|eTO^eCSyw+REKy>BCdm!m$8i``gq z(!m8-XWNFYW(|+O5JqXdRON)jso>&-0SrA@#P+0(<-i9rJ8Yg_f1%$PKLaJK6&j-# zYG^ng)|eCpPu$W3DW$y{vr_9@uS-dheph06U;KWi7;bZzf2#tb3!{J+ekThh+BFAj zb{5BcMOL!fsV&+njT>2|C9h#$4^*=9YmvS$I4*XOn`e(SnE5ODDsdeE8K%80BP$o% zV~ry$!3fQ&n{e2MPzGC!dKR!0Wp3vr9yLVS}l9g;77|d1O zur&Lv`(**|TuiZ&yLayvzfOgP&jRyxjU%vJ3WjQ=ww|%_owjEa;L$SsH*hVp-b=_3 zT2459zoJ!Fo;;sxxep)ufYQ;p%L1-A|JwtYk~Q7mqkE5LCj#cZE>`t+$r+9Nbc z@W9kR@^w-uGdeqGYZcDicd{%X5QnQ=K$;2ThpWlh?0K*^K^2nv;Ki?SDNb9Uc&wUJ z)~F4cSe0>rAy@n0+)Sey)DNgkGTKvhBf%6EJCiNlj%2q3^u313;PNQ+`Y{5z8gg}# z0z0iRKt&gEL)Yq(F0`@fu#+f4VlCd`@qX(@sar@ybp6iqWK~FipASPBnw;=q5X1|E zs+k#`@2^?#BH8S!M|i1xy#gU!74ET*{xHZ|1^CZ%AegneL;$%mg z+GGmkP?ABRPFyAN2*OVO^Y_!UClCnaxN$odgizuz4}iOMG;05N!Q-KLB3@J3??OALJ+-idc>KpzyFq)=!%om z*=_925n<8)n0mZj+;uEi(ZAo)gxv_b8w=z{44DL$KRX)0tDeyy>E|l`Tz8S!TMPa# z%+&tx%RT@5L^xAN|99g9|9waQAHJi@-YNYijzhY-JRC)!jVps<=Aydbg?wS1`Q;TS z@BaS#^lV?j#GwBWFb1WLyO=sIQKy9N^sVw zlCVbpSKw}ZXCD5S(9TLhw#x;AnAuH#>WHgy&5Fz^Qfe5~ z0RS3Fw1{|_@4{N8M~avj{p~rFL|G$b{~EO4ebC9V6#QdQTSik1c^Se?uau>N6=zVP zCXdb%B0-!eW}IkmzAnma!H%LRIT2?IWIbkiBJ^T({M?H+9zc-MDl+~N}O+M2v+!0I)mg>G+nuq7#a(L zk4yB!-+vbk!D9`cy|S&Arv))K=w`I;LeYDrtPRp%EWnL@GW~;fOraakAx}+cpP)|1 zyEJ7D4GmHs*%nrXIc}xia{UcP_yC?I(?Gj zE*FGOr&FJUZ-RQmcmr#q6IpXP==qC z5fm!*IX!*-bgb;=zqYN4v|R5@@T`*_eCLsASy1UMur6&eGv zh|@!(Oj4ZeNaxb{;unGT8ro@1=T@rbg!Y8kp<7DDt*f2wBb*6|&escS+p)iSR;sMW z3VPf@lC+v0X#DH9KU+3@>fz6sOHCl`s?92P;HVeoglx59+b#DjDe5x;Yr_YO;ebM_ zvBVu3Bv|?q2}`+hAht&xdy|0MizYL2jxgaHLXlW5J!fURvLux#OsXVxxWZn}W5Th? z^HcDL{ax=vwN?#LR0Cguhnr8yqy;T3Qp|{vBVKywir%Jbjy1AOi*bGv{F%WgK*T8E z=m`+yayDs`tY0MFsiU|&a**#jeGX!e&&ATMeG=K<;3pEGIh#Nioh#|!=+)fYF~ouw0?e;Tj9DfHuaiRR z(;i#&Yj145Gt7&)G%Wz7o`6*E8SnVSkjEnK!j$@ZZS|zFv%7nZBenjy%K+E!JY0mf zrEYTIFV{}cPkdjwISVu9gFhoVf^#}UYti_sf`gf!Z+D0vRfk5>T1Nyd6gEd;!$+Zh zl!rf+GT2u1ZT%Ahn(Cm6b2R7GSPlZDZlv^5Z^6-MC`mC*9Z%CN6p})miy$U5J@0eD z&#bplTICu#s85TaJcdIQJfX%>Tr94Yg-46Of0No2Bv@bV0K($U0Z&cx{o0$T+Jpw6 zuPE_(_U!A!?ZZF_JJwjry2?2W@+B|O2Wh-BiQmsP6j4B+&?6hK)>uIl$c92LKc{Qm z1AjyNw*>og843cH7!$yh0U4i!@5jE6&0ynG!6{n$c#>dBKJYv9S5}#@KqnLCuGh)L z?m522RA4ZXc*XQUCdWCrrs)H@eg?8| z*4Cq0cpe|D|3mC(n~mLo45t>46TCTZH{iXL6d(^DID*k@=L=5gP*!OXO!3tYu;aa; zu`znn62XZd&=0mMyt(Ju5P{cyKg@4eu;r)nxQ)C!k=^0@Z(yT-1J+!+dwvA zW0$CEKw#_FT*2nH2f$xbVo@}eUZRL45=~YF83}TGxMRKpubYzuE3RWMs@By%TyU?u z1h>+wK;`=`ToKI>&wRdy-pffNs6FQC#SavuY{k?8R<_oaqq~)W)WMnynBWH#bLJpt zKMw`%-_S!5Xat-y*`T@E;=*1{L2>C~uo~l%vE`2i1(~lb7Z~{S{(#@4uj_{T!Km7R zqk^Mx*q@6cIhu9t1V7Lw-B6>+AuP<`3xzLTHe#S2!+y1fx2H1%6ZMD~ma1DJ8W`9y zC7O{Img2mc(I1oM^$QNWYtgmuGo}8Me}GR@fi7EIEMNQ%pVXq&h|c^v`+I0or!KAo zszKAQ;I--Tl<>6y7P4+V3Yc8+g0GO;|n1(DeQjJlj(a|BuO9yA!@R>jX zC9KE#t38EdK`7SIAya`wMGn|C+x<{g^kA#;a>zqqmjDMRUViAzSb@@07IktS{-LPc ziMrG%uLg`;Bh3jlFF!!Y6l$Lu_}Q(+OM0qu?)0Vzmj8j!J--%Z&2OVwQjI%+)8qVP zB=#42-c@=aUJ>e}33o*Xr)BMD9{!wp!Vq<7W?ROKvc#R0@oSOIO&>L!zMH}Ew+2ZF-7dW$$BD%CH-mOkc+63 zT}{TafA~dHuzBbG#?C!>B5#bR-WIxh?%cU7x#^dl+<~Pde4yj}i3bhy(lO@JRNrE| zuz~{17d*PmULZj$k7;z|SLSe(5qq^r2T>3K`!pX|s91Hafdb)YAG{}w?6=h8ll2kC zD)26^W(!k2yHjoYYa7adk;;Z4Yb%IcbHa3tDCPR_Vz&D@itY=A2qv?^<1|Yh+V7Uy zyUxYtnC>-XUIuJ0rx{=IL41BR4jWbtLuKOE!9MF!%Z1oA1ss>cY7&lSfJgab0;IK8<@-`Xr?tQA#-5`X-r*Z=B!SJz5q2 zz{&3wXyjYh&3PRNyElrE6#)F+*wL4L@Y<&h!`z4d(Uf?+Tma!H{Y&!&LgCoOF8eqd zX+3g74K_6(CMbVRHTv1qjgE`O(&ed~5lDxpns}y~c$wdO_;8d#nJ&$E7)+vdKVQBa zWZ8q`Mf&EoxMxLLzX#ZkqV7Z#+` z0(QyO7r!*O#sS@EUfd|x|5h%~qIC=9)!-bb|4{~$z|zc`7T6~d?;=i1pmZd)w_6od z{cj)k!h=0_YdCrK>^PW|m6zrZX6W(_mw}TM>}=81|MSL4jV;jgEU8WxY~Ic+g1p|6 z!gh@Ec3~$SUE-0Teg^(sKgR9W$waRt_L9|UcaBv_$YxHL@)BWnamt0y1X?>NYq`-J z*5uoVkDR;V72A>&1;Tc>(_!FGU-1co7a4f|0&a-UTT)D7{_>rI7>##5KNZ2NFb;rK zD~DHEgnjvs7el4>&&|7P&`G>QVq#X*D^|^-t#k&Eu>rah(+r%IZIRCVVbP z*+X}*WVq&uYnAZWcTtmsUo_7J(|T`yEwUdSq|PH7r3CcC9Gp}#Jm=gz>k+KRG9I_u zE;zA{@)y{Qqjuz?+{FpRSCgSx+5`@PX8k!hNX5q!1UfqGpE`#3LAx&$QaKqRD9c_0 z&uJmM10ChqRzXaPlk|ZL=vw*J$?!pn)y2k<{S5+PJf+z(!D+ZxW6^bxNesap1=NQ= z2>WN-y#XwE ztQM>|&p0CTJc^VMHP{{cDC{pOBzSbxsnJNE3C!s9K0krMSQ0xnb=PjNCcNVf$5o?I z!+8~GgqXMvI$0l%Xu!WtdBU{q?`^q;8YPwhfwGFe z6ig9~+CgfyLPPZhVoH&GM@fQRfDAG!PjuvDaqhV&<4r`9J%?Li5lX^c2fVE=`a97s zF-Gs?MKmwa<&fU6wwlQy2R5;GPBbl`83edYc=osr2R?n4QG_!yo-`nP7fjfq9@IK> z#H;L%PQRlHG$DhTLwXw{Sy~i3-41GBQaXzsb<375klg}JLL^>Au@bu;`0JU$#t#t2 zdff%$#pyCCV7|pQ!7VPu17G|b+asz}Qb$L@bN#tuV9c15fx(m8|J3@!|7%1w>Ofsb znhqB@A>a{Yy(UqWG762{X{x00J8HfqLEn<;j$aEOtAcS^bb)Ml#2JZ zZ5v_8s3KqpF?#}GD=|?PJ>yAWTQS@!m#y#rc2g9>EEW8s=0=gyCq<+~ivZaS646T; z4`zdrCPJDpO;d!%Asn}kh7(-CFhIwB*|I-zWP^nSiAY7z>U{d>aW+&eMM{bIdAl+C z6pBv;Nb{RW03^mQg_9OIq&XrYBCd(zEoct60!$8&0G52*1-Fi?P-j|t1*s$>Gr68! zO^9YhYyhGscqIu#6t`{NnnhR&-LQ8pYDWtOzoc{zQgvOVYWdk{=9D7+lZ!D%KNXXz zs@!|q+%$DbqPh{h*mYSEF{kTvyL)eAZx)8S zj3ZMramaN0aIC3lSQ-1VsAt`3c^K(6+tHw$qh-N48+eD4=I*YE^?)T8sqvDEKqTs? z@q#zUIan6g@Z$Lb*WyB>qo~gac?a;Nu1N?-Z;a8HtmV7!(_(LSSP@Kwed5@39yO7O z1UAl>aOblcTFHR$D360(Ylk7O!rt{kDJ~5A45P3`Wi(Ph91;grI?AgIWw%mwsX7xKRDpZ&A@>-=!|3~=k*bN1PLt+m&VfHC-POyTsoX*uh^ ziPM!c{zc#YKX=SGGVXsW_D~igs>BVS16Pq>V-;2k2{+!y><4-$|++c&z&VfVUadICWk1$PTeN+VEaLP|c-x}Le;DP~@w%r`z zfg(l^pd>cV$b!-LxalrNT*IyI~i7wuZ5La9|FX6g=ZGx<}t{|E50UDz5j`*1E z_i)*tOr(!L2^rN-Z=zlT`T>%-Z^4tfG@M{Ffj#Ggq7;~y!b|`abG|dGP&i{WXpKzc z1b5hWUiyg%FO-gduFanbQAjcvDKD`ja*gp1f9qp+>4t;V5I;S~Sz97`+njbG35V*j zRP|Uhw;d4O5=4Uaw1Mv^hnhPJwki&ch6w{4>{qlw;s2~49v9^w$gAwocWABdx(r{D z8~nCnzMvhdc$+dch$Sz*1Z5O6O%@W{eJWZxue%dkPFJ8gtZeWjQpSG7k114QQR9s? zIE?HXu1vOBA3>||QgSUT5x;MD0>%0>qEnqnk2sFJ4STZ`kQw7dAd+G-mzQyey_|)Z zu(5HL3hhzK3TTf2jK1yhN>bvSSxhqX8ze&JU9WtKaA8M0=x@AuT;bTh%rwRsY#uFj-=}~E#v`03eH*B zikI;%=u1Jc3ODQexDhQ(;x**tLOR>w99RHN;xthDQ7-7}HiTA?LyG~C8fa&aRIUKb z-`m%I08-fp;W%XZG;zgu0ziFYU==ZU>ie-N)xLf}g+8iowem?Y}I))gRZM6c$WPIPYng5;sqwfJU+(pS?oDM*Mon^V`q+zz)}dk z+&CU1Aup$;Abpw>g8)bnQcT4L6UH$k-984Y-fNiw>R~#1(V1D= z;&A|?cERKbOLsd@4ykwrp)cCkE`C!fQcTdLNcI3AlCG?R$z;&6CO(*8#)+^Kr*^Hv z8HmNHr}yHKzTwxS?(bahxAK0}+xhwl|!OZNcJOI&cJpkwk z)S^=1pV>shS=kJA6U*f|j2A(B`2c@w)&R}I+7g@D66IF|aE_x`@2M|MLObz-;>trO zotZTK<9RG8t&O|O^z+~d%NdK@6--*kCz&F9+>Ppio;ixWF2Lt!kq5E@Qb8-7J@A;w zjm`tN8;kL#g1zaXx89b3-{~{?v7hsy@pGlOdmz{4q4rT6?0v?kB4d|{{L2SZ*YiDZ z);QGFz81rToi>!T#`u~atvx3jMyu!9>z_V2sQ8&eZTcUh?5uI$+d)47l**i{wE6ik zRIV2WjH>OIFR35QZRaB5G=I_BcuN=LS~#qpe|t$iGyr1N8ae=O`ncjV5s%8+eq`Fh zj3=fTW@gCTX@zS8jDtQ7;vNYr^04bFhl?RZ+eCqya9=P^@Ae3wF7`2U!*mm2Nhp(g)K zpDhp;1BG)V^*X9y0dNoRLW5c-4Fd>^V6(HFU(Yy&B#V)JPi0!drmXIm;cb0=Md>e3_)#yOp&z(GYbM0_zLn3EIe7zhYX_0?KlFT zx4QB{Vc`*A80I+g1Q`JUegI!e>mdz=CL<7;2<`02PC+=bJ~-IzJ^pypxsg$tg5}zw z)6U9zb<8CQzl@Jc#*W4@eVC5v3V3@7t|gAdWsiG83$7%gFTfRAYWjxpJfQ(am>t4p zrNboa1{$-{VV$&ASv5_Nf$7WcUjTN0%W-)s_6-X$RDoga86ytItQL#M=AVlIZW26@ z0e?W{!b!iwUDW5lY{2c6&*Hr9Hd$}+@=ow#!oVBk%eK*___+4{UPrZCxOn<5rRgR_lZ^KsQ_qYH*NEOwAWUlC6uL3p~KP!nn^Vdg8=QE;_q!z9{t z$f8z81c^j6d*TRK*{k5~v_DvUjuQb3SkfRSI5H=q!yT{g;h{lG+LA5KL$9e{XS*g(;M{0S3kZ`{{h6x@Lh!b_pLx^|ZZpCY2@ zR84@t52H&985J6NutkiT0reewKLa6jE9>2^ph=iG3hoea$f1*S=Pt|f6@=7>vf4N> z?n-jTV*6;=v9fJpO;T!WvQ&0ffxDeFbm={$K~so2v4+`Oj9^2Ol{Ru^6+{*J%3v`Wtz2 z)?S2j_24OuAu(Vg@RpCG5cQAu04TeNq<2}wcTm`{HV4((_FhUbWGRA|85;n(XE>5b z@+27g4En|3>8|F(1Xi0%n`3x8f0nDf z<4f~5Y6aLMdjL-)^*^=`L@N>sQ%|=XU~%^#dvS~j3hKbe_K)XHD{Ut!Y}<{HTMz2s zVebH3P+ z9C3m>=e_A}uevf&PeB0y;IK(nRhy2a|C|Hqb%h7V>6R5x*TroZ)iP2?;87-rJ$Pxv zs#;r$VXv@DrtWsttSy?N{urQg~p>T(kp)I_&CptmPDRgR+R|s-TVYySqCov=W$eN&4gwPF zuKsQmLAZJxujT`+#oJ$C4;t+4_`1qZRHY?V9?ty7E%t_^hE?ru#`I3B?QA_)dFdma zDw%LQ(^7jfJjH2ZMXe!8aslE4m8N>*tJ>aIm?ygEO+XLM_{W~dHM88{reu9^2QdES z5I;;TcMGC9CBTsluDclI@keaSI<1_Ch`=B5MXSEIuci%ALx=$57b z`Obg_V_3icoe7`4{P%6XvWGjRA3}ozqzV32U1Nc zGF~An2_5y7_CC0N6C#o1pWC{Y;7gy+A{a{WA;-O1Tl~ zT>Sv!FG;4IgQwoCB;@Z|w>XRu3Va9xQtw#$xNz_S z5R!SFy}zRtvB8|hvLz2$oT4wlOj3fKEf!}PSvnYOyS6Ldqiv&~^hr@wRWd3e_nXo~ zMa9Jtl>M@BN0q&{iCG^JK{|0!bF;sd>eMIvnI+9ctFY5m#rF&KwH z7*`I0@54)0lHXC+5f-$A%=ZbOO-ApbT$2Q3KknUF>Z1v# zl%4^BUFgVkK~yr|7fmh+#rmUr(9>URO|IJBz75z)=}Q(*C-%d{f^&*F81=*fZ8~Ixns89mv zZaD+7HEr#hQ*P&cEX2eq<0E2fZP_v-9)cWt>VY;KWf$an2^rXqgp17vDm4*pHcU*_ zhc`SCh4Bv!ikh>H7@^ZLVk|d#5AMHk;zVkV&@^lcH44vY&o=7l#1uVS;zC}s|9TeH z!b!t8Y2mM&7@v*4l~&EJpUjR|)Q;BW=oSVh5_$K|VN*t3*6H?;!x*EJ_&Gz%1r~R<+&g`5a}7yUuy4%@)OdjkVQ($nBh% z`@nB;xjpy4FTIY# zdgbhs9Y(lui18z)ORg27BB#0lU_iF1fV1tgT8jg#GJumml8BWw(!`Xd#dcSH5z-)0 zv8E-jq|YBwoAc$ZHRz>S57R&0k^!tifA$tye?xM*P-q>d6c^1bZB}xSo!i;8V(5U| z?pD)T57jbj8$NXD_&{Q$ND|w=DMq)7#P316L-LO4s1N<0ijE-L{h+xf2w_U4(i5y4kw{*@2Gx;juR~Zfw(+=FNI3r`YkyF z_SJjyCb>6&uTVVghVm$k>Ll!m&92nQF&J}t7*f)n_nO&L<^+Fa+B3L-)ILgfzV%jP zCXA+MFijNt)3I@h1_|?e!05#}=HPxOWnYa%R3P5qt8%8jl5i}!xCDP7bSwrfp(M=!sA`~gsgxLfPJ4o&kwFEqRRYe; z=hAxTn38tkG%1ngOc6(Oa{F*neFfi;9E|SA;AYk72P)p(4OH$pxP!JXCkRtET)8}b0Mm?ej zd)5hL9qBV!^#uG6oAsG+P+&r*79e7T6n>TXDnDb@09=RUZyD~hJQw^zoMAV9M}wXr zVJDPw5lj`5*}0V6vUGRJY>qlDK=t^O>Pmf>R`S(y#xX_Rq`?WR>A^@*){g_>^ui)N)XBGpc`77S^Ox7++SeG8dJNa$RS&`xggLsTZ zzi;x|7hAXhW%QJ&9sAaa|LTL+OP(PxAe)Bj$UzjXgKB4JzN)SLVcaxP>fWb!wqj;O z-;>k^Ia~3 zatqOJ$}DSP1n?ZF+AcS@_BR7W;vi>HC+yC)6QbkVEv*du2Up=@#|ta8N@+(tp^zWv zKn-Y(;@JSVR5YeV3uaJ6`o4Mb?NFN^9kp=_cgk~y4QVi>W1m>2-(HGmBFo^4>#Osq zv(hE1w-9*@KOzAff>fx+pp9VB1jp};J}9!T-@joE<0H-rsKz53Op!AvwgVP^wmqfOuB9rA> z$b4N;yt9)8;}V3LXy*@_YM>_#%Fg2X!|~lMkVIgxDXN!%G}&CN*rt!ij^4aFju`}< z0nFMoRtg1*z&y99o)kvo&_`S(f|D%OduF`ZZj-=((atDkbm$$Lp!nSR+d{Ax0OD4m z*&)ALG>>fwogjtcUm_XUww%SD&im+_!tdke?Lv;vw$8h_k+CNqEy2V#lB7O2RRS6@ zKp~PwxtI=&qLmkqKu62?rNbIyyvgi2mb3hJ?Z9Ow5>dEzt2Mm}y&M&v@bkh=-_(8t zaZufg$&_l*djc)VA3bh$J$lE4Kk=9UweEob$GiV~N8T!Fzc?_t#7@YH*O^