linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section
@ 2020-08-21 16:52 Remi Bernon
  2020-08-21 16:52 ` [PATCH v3 2/3] perf symbols: Try reading the symbol table with libbfd Remi Bernon
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Remi Bernon @ 2020-08-21 16:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Remi Bernon, Alexander Shishkin, Arnaldo Carvalho de Melo,
	Ingo Molnar, Jiri Olsa, Mark Rutland, Namhyung Kim,
	Peter Zijlstra, Jacek Caban

Wine generates PE binaries for most of its modules and perf is unable
to parse these files to get build_id or .gnu_debuglink section.

Using libbfd when available, instead of libelf, makes it possible to
resolve debug file location regardless of the dso binary format.

Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Jacek Caban <jacek@codeweavers.com>
---

v3: Rebase and small changes to PATCH 2/3 and and PATCH 3/3.

 tools/perf/util/symbol-elf.c | 80 ++++++++++++++++++++++++++++++++++--
 1 file changed, 77 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 8cc4b0059fb0..f7432c4a4154 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -50,6 +50,10 @@ typedef Elf64_Nhdr GElf_Nhdr;
 #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
 #endif
 
+#ifdef HAVE_LIBBFD_SUPPORT
+#define PACKAGE 'perf'
+#include <bfd.h>
+#else
 #ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
 extern char *cplus_demangle(const char *, int);
 
@@ -65,9 +69,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,
 {
 	return NULL;
 }
-#else
-#define PACKAGE 'perf'
-#include <bfd.h>
+#endif
 #endif
 #endif
 
@@ -530,6 +532,36 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
 	return err;
 }
 
+#ifdef HAVE_LIBBFD_SUPPORT
+
+int filename__read_build_id(const char *filename, void *bf, size_t size)
+{
+	int err = -1;
+	bfd *abfd;
+
+	abfd = bfd_openr(filename, NULL);
+	if (!abfd)
+		return -1;
+
+	if (!bfd_check_format(abfd, bfd_object)) {
+		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
+		goto out_close;
+	}
+
+	if (!abfd->build_id || abfd->build_id->size > size)
+		goto out_close;
+
+	memcpy(bf, abfd->build_id->data, abfd->build_id->size);
+	memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
+	err = abfd->build_id->size;
+
+out_close:
+	bfd_close(abfd);
+	return err;
+}
+
+#else
+
 int filename__read_build_id(const char *filename, void *bf, size_t size)
 {
 	int fd, err = -1;
@@ -557,6 +589,8 @@ int filename__read_build_id(const char *filename, void *bf, size_t size)
 	return err;
 }
 
+#endif
+
 int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
 {
 	int fd, err = -1;
@@ -608,6 +642,44 @@ int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
 	return err;
 }
 
+#ifdef HAVE_LIBBFD_SUPPORT
+
+int filename__read_debuglink(const char *filename, char *debuglink,
+			     size_t size)
+{
+	int err = -1;
+	asection *section;
+	bfd *abfd;
+
+	abfd = bfd_openr(filename, NULL);
+	if (!abfd)
+		return -1;
+
+	if (!bfd_check_format(abfd, bfd_object)) {
+		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
+		goto out_close;
+	}
+
+	section = bfd_get_section_by_name(abfd, ".gnu_debuglink");
+	if (!section)
+		goto out_close;
+
+	if (section->size > size)
+		goto out_close;
+
+	if (!bfd_get_section_contents(abfd, section, debuglink, 0,
+				      section->size))
+		goto out_close;
+
+	err = 0;
+
+out_close:
+	bfd_close(abfd);
+	return err;
+}
+
+#else
+
 int filename__read_debuglink(const char *filename, char *debuglink,
 			     size_t size)
 {
@@ -660,6 +732,8 @@ int filename__read_debuglink(const char *filename, char *debuglink,
 	return err;
 }
 
+#endif
+
 static int dso__swap_init(struct dso *dso, unsigned char eidata)
 {
 	static unsigned int const endian = 1;
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 2/3] perf symbols: Try reading the symbol table with libbfd
  2020-08-21 16:52 [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Remi Bernon
@ 2020-08-21 16:52 ` Remi Bernon
  2020-08-21 16:52 ` [PATCH v3 3/3] perf tests: Add test for PE binary format support Remi Bernon
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Remi Bernon @ 2020-08-21 16:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Remi Bernon, Alexander Shishkin, Arnaldo Carvalho de Melo,
	Ingo Molnar, Jiri Olsa, Mark Rutland, Namhyung Kim,
	Peter Zijlstra, Jacek Caban

Wine generates PE binaries for its code modules and also generates
debug files in PE or PDB formats, which perf cannot parse either.

Trying to read symbols on non-ELF binaries with libbfd, when supported,
makes it possible for perf to report symbols and annotations for Windows
applications running under Wine.

Because libbfd doesn't provide symbol size (probably because of some
backends not supporting it), we compute it by first sorting the symbols
by addresses and then considering that they are sequential in a given
section.

Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Jacek Caban <jacek@codeweavers.com>
---

v3: Also include local and weak bfd symbols and mark them as such, only
    global symbols were previously reported, and that caused a very
    imprecise address to symbol resolution.

 tools/perf/util/symbol.c | 140 +++++++++++++++++++++++++++++++++++++++
 tools/perf/util/symbol.h |   4 ++
 2 files changed, 144 insertions(+)

diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 1f5fcb828a21..55023d301eb9 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1525,6 +1525,138 @@ static int dso__load_perf_map(const char *map_path, struct dso *dso)
 	return -1;
 }
 
+#ifdef HAVE_LIBBFD_SUPPORT
+#define PACKAGE 'perf'
+#include <bfd.h>
+
+static int bfd_symbols__cmpvalue(const void *a, const void *b)
+{
+	const asymbol *as = *(const asymbol **)a, *bs = *(const asymbol **)b;
+
+	if (bfd_asymbol_value(as) != bfd_asymbol_value(bs))
+		return bfd_asymbol_value(as) - bfd_asymbol_value(bs);
+
+	return bfd_asymbol_name(as)[0] - bfd_asymbol_name(bs)[0];
+}
+
+static int bfd2elf_binding(asymbol *symbol)
+{
+	if (symbol->flags & BSF_WEAK)
+		return STB_WEAK;
+	if (symbol->flags & BSF_GLOBAL)
+		return STB_GLOBAL;
+	if (symbol->flags & BSF_LOCAL)
+		return STB_LOCAL;
+	return -1;
+}
+
+int dso__load_bfd_symbols(struct dso *dso, const char *debugfile)
+{
+	int err = -1;
+	long symbols_size, symbols_count;
+	asection *section;
+	asymbol **symbols, *sym;
+	struct symbol *symbol;
+	bfd *abfd;
+	u_int i;
+	u64 start, len;
+
+	abfd = bfd_openr(dso->long_name, NULL);
+	if (!abfd)
+		return -1;
+
+	if (!bfd_check_format(abfd, bfd_object)) {
+		pr_debug2("%s: cannot read %s bfd file.\n", __func__,
+			  dso->long_name);
+		goto out_close;
+	}
+
+	if (bfd_get_flavour(abfd) == bfd_target_elf_flavour)
+		goto out_close;
+
+	section = bfd_get_section_by_name(abfd, ".text");
+	if (section)
+		dso->text_offset = section->vma - section->filepos;
+
+	bfd_close(abfd);
+
+	abfd = bfd_openr(debugfile, NULL);
+	if (!abfd)
+		return -1;
+
+	if (!bfd_check_format(abfd, bfd_object)) {
+		pr_debug2("%s: cannot read %s bfd file.\n", __func__,
+			  debugfile);
+		goto out_close;
+	}
+
+	if (bfd_get_flavour(abfd) == bfd_target_elf_flavour)
+		goto out_close;
+
+	symbols_size = bfd_get_symtab_upper_bound(abfd);
+	if (symbols_size == 0) {
+		bfd_close(abfd);
+		return 0;
+	}
+
+	if (symbols_size < 0)
+		goto out_close;
+
+	symbols = malloc(symbols_size);
+	if (!symbols)
+		goto out_close;
+
+	symbols_count = bfd_canonicalize_symtab(abfd, symbols);
+	if (symbols_count < 0)
+		goto out_free;
+
+	qsort(symbols, symbols_count, sizeof(asymbol *), bfd_symbols__cmpvalue);
+
+#ifdef bfd_get_section
+#define bfd_asymbol_section bfd_get_section
+#endif
+	for (i = 0; i < symbols_count; ++i) {
+		sym = symbols[i];
+		section = bfd_asymbol_section(sym);
+		if (bfd2elf_binding(sym) < 0)
+			continue;
+
+		while (i + 1 < symbols_count &&
+		       bfd_asymbol_section(symbols[i + 1]) == section &&
+		       bfd2elf_binding(symbols[i + 1]) < 0)
+			i++;
+
+		if (i + 1 < symbols_count &&
+		    bfd_asymbol_section(symbols[i + 1]) == section)
+			len = symbols[i + 1]->value - sym->value;
+		else
+			len = section->size - sym->value;
+
+		start = bfd_asymbol_value(sym) - dso->text_offset;
+		symbol = symbol__new(start, len, bfd2elf_binding(sym), STT_FUNC,
+				     bfd_asymbol_name(sym));
+		if (!symbol)
+			goto out_free;
+
+		symbols__insert(&dso->symbols, symbol);
+	}
+#ifdef bfd_get_section
+#undef bfd_asymbol_section
+#endif
+
+	symbols__fixup_end(&dso->symbols);
+	symbols__fixup_duplicate(&dso->symbols);
+	dso->adjust_symbols = 1;
+
+	err = 0;
+out_free:
+	free(symbols);
+out_close:
+	bfd_close(abfd);
+	return err;
+}
+#endif
+
 static bool dso__is_compatible_symtab_type(struct dso *dso, bool kmod,
 					   enum dso_binary_type type)
 {
@@ -1698,6 +1830,7 @@ int dso__load(struct dso *dso, struct map *map)
 		bool next_slot = false;
 		bool is_reg;
 		bool nsexit;
+		int bfdrc = -1;
 		int sirc = -1;
 
 		enum dso_binary_type symtab_type = binary_type_symtab[i];
@@ -1716,12 +1849,19 @@ int dso__load(struct dso *dso, struct map *map)
 			nsinfo__mountns_exit(&nsc);
 
 		is_reg = is_regular_file(name);
+#ifdef HAVE_LIBBFD_SUPPORT
 		if (is_reg)
+			bfdrc = dso__load_bfd_symbols(dso, name);
+#endif
+		if (is_reg && bfdrc < 0)
 			sirc = symsrc__init(ss, dso, name, symtab_type);
 
 		if (nsexit)
 			nsinfo__mountns_enter(dso->nsinfo, &nsc);
 
+		if (bfdrc == 0)
+			break;
+
 		if (!is_reg || sirc < 0)
 			continue;
 
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index ff4f4c47e148..11fe71f46d14 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -175,6 +175,10 @@ int symbol__config_symfs(const struct option *opt __maybe_unused,
 
 struct symsrc;
 
+#ifdef HAVE_LIBBFD_SUPPORT
+int dso__load_bfd_symbols(struct dso *dso, const char *debugfile);
+#endif
+
 int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss,
 		  struct symsrc *runtime_ss, int kmodule);
 int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss);
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 3/3] perf tests: Add test for PE binary format support
  2020-08-21 16:52 [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Remi Bernon
  2020-08-21 16:52 ` [PATCH v3 2/3] perf symbols: Try reading the symbol table with libbfd Remi Bernon
@ 2020-08-21 16:52 ` Remi Bernon
  2020-08-26 11:47 ` [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Jiri Olsa
  2020-09-03  0:25 ` Arnaldo Carvalho de Melo
  3 siblings, 0 replies; 8+ messages in thread
From: Remi Bernon @ 2020-08-21 16:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Remi Bernon, Alexander Shishkin, Arnaldo Carvalho de Melo,
	Ingo Molnar, Jiri Olsa, Mark Rutland, Namhyung Kim,
	Peter Zijlstra, Jacek Caban

This adds a precompiled file in PE binary format, with split debug file,
and tries to read its build_id and .gnu_debuglink sections, as well as
looking up the main symbol from the debug file. This should succeed if
libbfd is supported.

Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Jacek Caban <jacek@codeweavers.com>
---

v3: Add a dso != NULL check after dso__new.

 tools/perf/Makefile.perf           |   1 +
 tools/perf/tests/Build             |   1 +
 tools/perf/tests/builtin-test.c    |   4 ++
 tools/perf/tests/pe-file-parsing.c |  98 +++++++++++++++++++++++++++++
 tools/perf/tests/pe-file.c         |  14 +++++
 tools/perf/tests/pe-file.exe       | Bin 0 -> 75595 bytes
 tools/perf/tests/pe-file.exe.debug | Bin 0 -> 141644 bytes
 tools/perf/tests/tests.h           |   1 +
 8 files changed, 119 insertions(+)
 create mode 100644 tools/perf/tests/pe-file-parsing.c
 create mode 100644 tools/perf/tests/pe-file.c
 create mode 100644 tools/perf/tests/pe-file.exe
 create mode 100644 tools/perf/tests/pe-file.exe.debug

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 6031167939ae..b2a3f5b652fe 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -961,6 +961,7 @@ install-tests: all install-gtk
 	$(call QUIET_INSTALL, tests) \
 		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \
 		$(INSTALL) tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \
+		$(INSTALL) tests/pe-file.exe* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \
 		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \
 		$(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \
 		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \
diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build
index 84352fc49a20..69bea7996f18 100644
--- a/tools/perf/tests/Build
+++ b/tools/perf/tests/Build
@@ -60,6 +60,7 @@ perf-y += api-io.o
 perf-y += demangle-java-test.o
 perf-y += pfm.o
 perf-y += parse-metric.o
+perf-y += pe-file-parsing.o
 
 $(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build
 	$(call rule_mkdir)
diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index d328caaba45d..651b8ea3354a 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -341,6 +341,10 @@ static struct test generic_tests[] = {
 		.desc = "Parse and process metrics",
 		.func = test__parse_metric,
 	},
+	{
+		.desc = "PE file support",
+		.func = test__pe_file_parsing,
+	},
 	{
 		.func = NULL,
 	},
diff --git a/tools/perf/tests/pe-file-parsing.c b/tools/perf/tests/pe-file-parsing.c
new file mode 100644
index 000000000000..19eae3e8e229
--- /dev/null
+++ b/tools/perf/tests/pe-file-parsing.c
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <stdbool.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <string.h>
+#include <linux/bitops.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <subcmd/exec-cmd.h>
+
+#include "debug.h"
+#include "util/build-id.h"
+#include "util/symbol.h"
+#include "util/dso.h"
+
+#include "tests.h"
+
+#ifdef HAVE_LIBBFD_SUPPORT
+
+static int run_dir(const char *d)
+{
+	char filename[PATH_MAX];
+	char debugfile[PATH_MAX];
+	char build_id[BUILD_ID_SIZE];
+	char debuglink[PATH_MAX];
+	char expect_build_id[] = {
+		0x5a, 0x0f, 0xd8, 0x82, 0xb5, 0x30, 0x84, 0x22,
+		0x4b, 0xa4, 0x7b, 0x62, 0x4c, 0x55, 0xa4, 0x69,
+	};
+	char expect_debuglink[PATH_MAX] = "pe-file.exe.debug";
+	struct dso *dso;
+	struct symbol *sym;
+	int ret;
+
+	scnprintf(filename, PATH_MAX, "%s/pe-file.exe", d);
+	ret = filename__read_build_id(filename, build_id, BUILD_ID_SIZE);
+	TEST_ASSERT_VAL("Failed to read build_id",
+			ret == sizeof(expect_build_id));
+	TEST_ASSERT_VAL("Wrong build_id", !memcmp(build_id, expect_build_id,
+						  sizeof(expect_build_id)));
+
+	ret = filename__read_debuglink(filename, debuglink, PATH_MAX);
+	TEST_ASSERT_VAL("Failed to read debuglink", ret == 0);
+	TEST_ASSERT_VAL("Wrong debuglink",
+			!strcmp(debuglink, expect_debuglink));
+
+	scnprintf(debugfile, PATH_MAX, "%s/%s", d, debuglink);
+	ret = filename__read_build_id(debugfile, build_id, BUILD_ID_SIZE);
+	TEST_ASSERT_VAL("Failed to read debug file build_id",
+			ret == sizeof(expect_build_id));
+	TEST_ASSERT_VAL("Wrong build_id", !memcmp(build_id, expect_build_id,
+						  sizeof(expect_build_id)));
+
+	dso = dso__new(filename);
+	TEST_ASSERT_VAL("Failed to get dso", dso);
+
+	ret = dso__load_bfd_symbols(dso, debugfile);
+	TEST_ASSERT_VAL("Failed to load symbols", ret == 0);
+
+	dso__sort_by_name(dso);
+	sym = dso__find_symbol_by_name(dso, "main");
+	TEST_ASSERT_VAL("Failed to find main", sym);
+	dso__delete(dso);
+
+	return TEST_OK;
+}
+
+int test__pe_file_parsing(struct test *test __maybe_unused,
+			  int subtest __maybe_unused)
+{
+	struct stat st;
+	char path_dir[PATH_MAX];
+
+	/* First try development tree tests. */
+	if (!lstat("./tests", &st))
+		return run_dir("./tests");
+
+	/* Then installed path. */
+	snprintf(path_dir, PATH_MAX, "%s/tests", get_argv_exec_path());
+
+	if (!lstat(path_dir, &st))
+		return run_dir(path_dir);
+
+	return TEST_SKIP;
+}
+
+#else
+
+int test__pe_file_parsing(struct test *test __maybe_unused,
+			  int subtest __maybe_unused)
+{
+	return TEST_SKIP;
+}
+
+#endif
diff --git a/tools/perf/tests/pe-file.c b/tools/perf/tests/pe-file.c
new file mode 100644
index 000000000000..eb3df5e9886f
--- /dev/null
+++ b/tools/perf/tests/pe-file.c
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0
+
+// pe-file.exe and pe-file.exe.debug built with;
+// x86_64-w64-mingw32-gcc -o pe-file.exe pe-file.c
+//   -Wl,--file-alignment,4096 -Wl,--build-id
+// x86_64-w64-mingw32-objcopy --only-keep-debug
+//   --compress-debug-sections pe-file.exe pe-file.exe.debug
+// x86_64-w64-mingw32-objcopy --strip-debug
+//   --add-gnu-debuglink=pe-file.exe.debug pe-file.exe
+
+int main(int argc, char const *argv[])
+{
+	return 0;
+}
diff --git a/tools/perf/tests/pe-file.exe b/tools/perf/tests/pe-file.exe
new file mode 100644
index 0000000000000000000000000000000000000000..838a46dae724aff6ad9b371f409662c89e1fd2c7
GIT binary patch
literal 75595
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
KIlibLN&gqG(8tsO

literal 0
HcmV?d00001

diff --git a/tools/perf/tests/pe-file.exe.debug b/tools/perf/tests/pe-file.exe.debug
new file mode 100644
index 0000000000000000000000000000000000000000..287d6718d6c9954bcfc28f11d8352d0d9f3ad04e
GIT binary patch
literal 141644
zcmeFYbx<D7_AdGoEVu=CPjG@uaQ6Vg-QC>@?(Xg(K!5<j-Q6{~ySv^Y-#)*y&)K`~
z-}hE!s%E;^>ZhMx>*=1MUZzJ{EgA$40)Zfa^W_BussqZ`gYVDv|NY_vG$Rr=AcCr4
zhKcLIq=tzVO-${HZ0xL!?Q|`P^mVPQtR0B-42kR<t%yvmh=gPnh%BuQ4CxRMV9EYP
zEhh{D83dyKV`YPZ1|dP9QxGKx?#&w#5E0<c22Nza_wJwae<A~Xum0D#Uk^yon|~@m
z?bV;n^yW`qpg$x)(<}bZ@vqAN*#Fk_+8zx8$wB{v{BzX-fmHq%^}o46av%`izuW(+
z^YMW|@BfQ`C<dSg`!5aua?v>$x;Oy!xA?&2-(vgs9;+ZZ9XbPD2VKC~_S(Skdil?z
z4J6k_XZH^<`z_GU_n(+oPa8;wk513g)WX2jfaTQz<n(9k|7(0c5Cb2b%|Cp9w9t74
z|L4*6igWn~xBHr_&3|HEJ%4a|_V%y!Y#89;^IH4Q!w00(MrZmD-=8^&{!h%S2jFX?
z6O>nct(&}FvR^O%d9;D}+UOiC{*3!4#ftyLyn0@7^vwUX$-OSHHsE~iKm?rscJP6a
z1?WFA{PFZz0C&;YYZXZRAJ_jN|KOOI{@7{cK*0x)zVb1=iuAvaKR9OgKMrqtps)dO
zL_o>+UvR99e{iR-`epx%Pv^hj*#68c=;P~}uJ{+u=D*<B+5Yg=zmD7XFPzVR!Etc>
z!HoeB(CNQ$|JTBP&EpT~@8z!oe--$vz+VOaD)3i<zY6?S;I9II75M+G0<S-Fv4Im$
z4mg3|C-MqH3SZ}t)EH_={3Y|<^`yS!oBp4_2>w5t%HP2LD)3i<zY6?S;I9II75J;b
zUj_au@K=Gq3j9^zuL6G+_%{XAq{RRAt`0)ZC4Ev?M@L5w1cu1aPqYduq*2ALc!OWz
zRtTGX5A`|t{$ehHsn2JckQb4Su%s!DnH14A*i+&o!ySk**z=J6(C=Gqj9;;=&v)aV
zl4mOdDNiuPCj=3X=a6*2m1ZORwc`YzWM{0PC*%tW#C5jO0|qHAepJ0>q^9R_E+}Ps
z$j?!OFUSw%ksGyHYY<Y)ATuqh<x7;@c8D*nd<3~XP~}g?)hVY7ts2mD<sim#AIPjH
zS5Jm3NGjwj7^&Ms*}2d`ui&OD*2m+)WyHAFY^cf;)JRZJva?z|cDZX%m(Dp{HSu=8
zJ{#iq7Gc!FXOLnuv({CtD#I00_I~}@_wwPu;uk)?PoSO=I;npX>2LL~0)G|wtH56c
z{wnZSfxim;Rp74ze--$vz+VOaD)9ev1^(yvKe$DoOZs86tBd+{3a{63f=AhbaBR)*
zN_|RO0Vh;rVz4)7B)>_1ZHd_(R=}txT9W@XFyN5Mrgdnbmzz0;(+o_sQpi5F+!M)R
zqMh91Q#X;s%&vAY;mWXLGF-TmzH2$*xRKadbT7c#cHO>vIvc(aJ9FjDs%pJiv>$1{
zPjCH!tVek}N{kR8?QliNJ?Ch%lZj6~|CpKiBUAHJqtnse{O=llU0$z*#ETR``xKAD
zWNAT$FH)m~oSr%_h!8ssPD1VtPBaNdh{Ib+#3}eycO8*uV#&-$+|I;lS?cqZKfO;P
z9V#7uT=%Ds97@Gy?8wj?+cWJ5aEiCZ2+q5^IjJNQ;Se8pR(C-kh}~t;eAv5FjG0UP
zIcpG0uD8<kWXjC7Zy)fef%&91LT|Wpo|5vzq6I=s6O!K#p#?)yIQ)0(+9>kuFOACZ
z$ter!Waz*h0Z&xsMa0|Kt^0yIfl4w8Yf+6~v*V?Qj$0c07?Ky=Qf3s&V#XI$kb14M
z3y&h%RFSxAjV<tncGz7>65U%4AsXcKgfWZI7GsjQtAo$q6ulwGLQ*9uCj(N3^vvi4
z52M77XZf`kQdp8C6F&A|l2m%9&EuP7$!;0jwLL{nom*9~<j`^n9<C%zmGjl5^#lal
z2drc3dCPxye^=UxU@~kdE6_#wvlL&xv%}$IvxXF1z6{z!RC0~@8zW+GDwr?B<Y6iE
z4!YR58@;g`oMOFYop)Q1h)*zrf}9O<efGNw@JADJdfsYg^{T`MRa4P)8LC5v+jXN1
z$8`84*I5$F&Y(M=sR}XauIJLJd!7nB5lJgz$fFCU50|<X@Og$QYF;BW8_C8$<2Czq
zq{F(N)2FWA&lTm{@zP0|Ke@D4+b#w^xxlyJLdqR<6-v}nu*Cg-cI|%>$92j-MnV$H
z6ke#=if<)yH5rX-Ad@6koyh&&`hH&K&6J|VaKt4gDY#H2@B4bsF^K&EF)H3#si*al
z*rF(k`iZDvfBXkzrhb#u{&0nb&LJa8M;h9PS+d_Ng8Rdo*S+MwV>1#y1}tCrPX+6W
zeXjM8waeru)PKJ7EcU&wZIItfBV<s2o4Sh&folfs_&~kuC{M4!E#sg(+q(wGYt?kQ
zA8pVQs;M$7N=-Hkb^EX<Q5SGGq_`9bb%{MHMUkN?wiO!&>Be|$Fnt=o4L2xhV@N}u
z^f4^|Si{W8Wji!rOBl;VY>Cdy)}08$F<^5dC16h=a_Xp%ug|YXipR4M{!%V`&~L<|
z&k-qrRiQ8XLJRgNSC0I~bIPr)N=0QL@n_LTaSJf{+N@M0_w$tccg8$XsX?Zy#$m+{
zb`)Gmw6rk|;0SZ48wBkx(Ku0V7;$?An|h3KBSQvl9y~0)ZSY$XGJ?$*3VZOyjXnz-
znN4D?(Wz)U7<)nAJm19m{^SRz;RmD7?a>$efkj`~BYyh!kf(cGv{^sYi#K}}bn^a&
z8-MS}*|&x<WvYBEMezgVV!6+BA|4?DE>;Lif%ULGY~iW-?e#NEi-*Iag}BUB6lHAl
zQ;3*DcwK^TV2hiLU-6}$sfDZWd)<@XV(qRfduHx$ddytpmxYq^0-5gxhh^Wpd}&~q
z{~UZw>6<SimR}fR*RLiOUpqb+^<FeR83(Crtxz}~Wtb<KmM$UIZ)44XjMqN(eO@Yl
z=vSrO@Xvnhw^aEn@$j-&LA{kE{VH|5IJiV7@!n&r)SRp5@L4j(7?pJ{321lyf!pP5
zsLMRblEbtpcR}zKTy$|c1>RE?$8c9Jt?wt@jEzE5$cdioa_)qfwC3az_oQsOzev#<
zNTiVP@#>oTQ&o~Mc%Wm-SJ!VA;ixU2_`!XJz?Y#(TdzZG5$u27RUzR{Ac~q_IuA;S
zIPoK!I$P=tfP8-<8ow=>R@t=iY3Q_eXjQKFhM_ZKXjQ5A=3}R53UPkqiGE-dqhJze
zOBVLAUf{5qH!+ezbnFZSp)yY8ZR6DV<ddW@iTBrlo9|~s8oaAniZ}#5r(p0%e76cT
z9z21a$j{7h+QDo5Z(s1?wEfqJ-+BiIAnCIst~ILG$s(9T)&&`|XCuCIM!C~c8qj@v
zL~(AcYJw;5NvI_%ppd9KsPCp~><jXO?B+|Szy&gAR9}{UjxY-po9W#Jje}Z50r4dW
zPP4qHt#^~YVhneBj@iGZPk^nsvH*xGBw!f^%fDqvz!{WCey*&ts~-*PPhgNU`mGXN
z=$Q)6LnZ>B>|BuMG#lqPLXCTJKnoc0x20K?UB<WkN6(o7ULe5atr%lMUXa`@uNu2R
zUJ%{1t{6L+Qo$IwdJFetY))90k|t)^`*BY`2WxQ1FsV&2<gs+Zg*Lzf0bT(5eTNF|
zi&RN$vn~-+Gq>`u7mbqiW?ixx#eM3+^SwJE-|g#kB?ST;8Vrp0w{T_K@HE;;YE$0h
zsU1Fv`n=^Vkr{Ior23xYyKjqIe_)rpsIQy}B~P^$pa=2%Ceu2&vbOAunP6=bU~^b)
zBmaF=RWAS=h|^otR$xK8L9;$gE6cK;5L7$M_c29NMT(-vG)7;&u>^)Oopx_7G*FYT
z(hh!!TWFXLFGDoV=CSIAQH`gnqfjaGtR@c~Ekm6na=)-UmS@klOAV8JxKP#|?@THE
z%EyvUIay|FPDsBvo{E+pMN|M6^$Hth5#`)I1$#Yt%-4dzDuEeC@_23=Hv%M$L@6K6
zIDaj!UXUnm<#upeh+9Ng(X(pJ_fw;n;@RPffe{rSS0a*9PiUz*jt;{l>2O7ID#)bH
z>QUvL(U+fOHLJJEv%HJAq;^4@Jr7#=Jrs6Dn`t?u4=F~~5xvA5t{SjQk?m_*bwvRo
z9*v105#4bwa?37A$t9ugOY;z;g?PM>F0}qr6%wcPx-IN^G@A|=&g8*uSyT?vTD|CR
zo;2Kp9f(aZlW!E)2kh<e7t~?}(d6Kq{brwFv)!Ope>A2s-##7&hO`q*tQs?k<17l|
zykY(}wyHIOY~czy+#O)`s8qzNT0+U1>LA$n3(mp`!UBa^isQ`s;bDA?7gcof%h08>
z2@algwrOMv!Pj!m<3y|sF`=I9X@c0=N5pKFT>=?QDTq^yozAqBlW@TYxcfem?Ug}I
zb<MdCvV4!%o4d!E;LTk}iLz6cEwG3CV!8o+lm}|hA<N$btL!g?MyBft+i=nMbR1lB
zet2O<FPSrjK1~0xD@a+xSXw2aYck-?4~k<*`LM}UR7I}h#Cl!rm6*5*c6*%9WE|vK
zSiz0JWHWDBG^tPfjXm>?Owu|#1P!Ll+ZRDuR8Nn+A^DFAG}}5RWD!{lm+6vh9TP2L
zIJ`>{A?1_w0gASC(m21#+|W;F6!LA$Hu0VGQ+jr9P)AjC<FDjb$so%MSB%*uD7>lE
z{rC9w2_;2p%j12CF;t;3b})3rWpH}QMzKa`k8JzBS&ZpvXgfY)6%ps#N|-(AlOkn&
zZ4}r*&vhhEE7~@Vb0v1n1+}GP_idx}F%m^f(Ms*e&>5B!OFw*Np9qXq$jj?@IjOYy
z$%b*fGzq@6ooKDdy>j8xYQmP*FJK$kXRROiCbwsgy*HeVF|U+D-hRlgYQjfGPgy^u
zK<Z4<2+AtAmO(uOhYka-dsi=Y<krg27JZnLt1<oq${j1~v<-tfcU)erAeJgtV{tm&
zV&uw*g$z2q)+b-*3W&uim5>*io~wk7PJ~CzA&jw|FDFKy1!>apq-opRE(nY)w0VPT
zX`d1i;&N}OBEoiSH4lm~FxVd+;zisLmd3M<A*=jus1aQ7mxyB!^}_}U<@P6Nk##%q
zW7VG%QRfhte6KnyM0!)&d8s3p9E>WwAQI*Gn1s9(Z57W0U<UO={j`dlb+FVPeyiOw
zVFhls<^>RTF-+Yzs@*ce3yu@ac8uy^71GI?tgY1WV-;GiOm;9>f`Jb$wv=NpPJyb5
z2~7g&%zUt?<5G1oSyoH;gHpE`s`wba^HqCNAYt$Ihwad-_&$5*s$u}<L%dOarfPPb
zta)M@nPpS1Jq?}|*+j(hV^k>8juI}keSypVJN9L^1fqsochaNJMh}$3zxJGO%L*=)
zJ{2fod0ut<JW6(l<oz_qf*O}SfG=XGsH%y4bP)VR=jR`z?&q~IcE>~*$)5bCRR$+Y
zgeXe|?>N}o?DXievw#nihn~6Gt5dW(3^fs|QYux;`emLkEaawJyW?et-Jl!44nEhC
z030LcV5!ln2e~vzwmo`CATVJbc~Mfo+2d}}F5`F55UqPm%ND*@A|wU8DsvsUcBfF#
zUL?MYX<j3~wMN>GqaYd+QGF-=Eom%tRRvXNSZts95@J)4B@YxPyr!>X1HQx6Y&@PM
z8CndF9Uo#n+al`ftRJb1V6^%Ymnnh`mPFQ}BrX3=P5s`$XuAdJd;ksdY+cQkj)yC!
z7u1j803oN;zM~<$g|Fzl^6p`i^YV;exS7C`_Suhpb@pZ%CyZ2(w~RuXmhroC55GdS
zrB0a|#<SHOn7U}NIW#_HA?cL2pta1d#S?QZa6x)<Vn?pA5Mtwo3Zi&8p4cUx^(CX6
zte$n9or!s$1jke<ZG;QQorSazCnJYf%||U36E~Bp<-5GtxG>|*uF~<?BFaW~YL8bg
z$B4Z#Qao_Muo7;w>5j<}cM*Wt_FCmQ>k}j6p7CzdATh~NWA0-_4Ipv6$oCa{d`r{h
zF4}SS{B}f*an^Tt6RY~v1Z(?~&~o2Jr^4DZ%&=pWjF8?M*u5xw<~O0aE>U(2?6;!z
zB$@h9wC9T!Mpuy$!cjMoS3%UJv>2tn%eFHfYbv}$%5gE3URXC9V}a_!hrWF#<TaKx
z@{?g=n@3-{gnLOsOr-3S-nVi2&ma(nU7A;}xs$zFYLh<>6AlbS(_dp}pB<SNZtplB
zA7M$V^(MjSlsM>K-)l5eL~7FU$iJy;TN%F4WsVdTrRs9Y#Z-#1i(0KEB^~eoDCmqt
za#H!eC~;A&`bDe&{2I0xMmp;d4ym)|?U(N^6FiwbPz0)xsMxq!tB<y={cF@A>Bb#2
zO=mtKLgi&2y~g}+q`Ou_gW)5D_1ka*OKjLV-&oqVgqUvWVV;)Wim`K#B-{!x^+_o7
zZ$<Nox9L@$xD-@lp6zz2Sd*X-Oe#>t(QS)&#<bYL2WuoCsc-l-p9y)CZ`TSPqkFu^
z5Vz5%UVPKLj?!>Ibpr#*Lm=xf8rK}x+$)*~zH0bnL|@_qZX{RE=qP`>S&@P&c}Yp>
z9>w>_A9h;`LPsL_`Ce;9hy;vBc`r$KQmp)Qb(tZD-ab3{8fuRII)lc>ltD!;uLTjo
zS_o;3?{ka^w}yx)yom#M>C#1YiBmk~rS41bZCYP4I($oL<2yk&R`Fy55py)rj@}N^
zKHTzQT)aK}P|}m#?;iu}Ei72D!RcF4!+n!fzVt8{W~xZ{v~m3cY_|IE;krgVH9*zb
z0|1@Kx2x)pdtsg1+8|J(vahW*t$j472xlD^(j(JonWE=~L!vN>84vkPqHW8nXAq83
zUQO}STrp47#*f-my6ba{n@4@PvMQSHcZT<<3ezE5Fp#{fGPA2l{=<)#W)rh;OjW5}
zj&??0$fH)%?VP>@6i(ISC>oIIrY?B<_g%2Kc#gkcM7^>z8XYj`d<fb1EQy-2k<78O
z`3Z$i=ex|a$T&Pr#7Ov_YhM6?N_)?v%%d}J+<)vU0LS7j&R*EerB}Lg_)SmbYWmUu
zX}Oj#H}xn@OZ?;Ih=$vTl)V^<l3@Q54(2v#4_6ikl||D_1^VKpZ*k>K`4oAdWy(n;
zPF9J+O+q#pBttvXA6>{1>Z<&F`;4_@s5G)PFXY!{18qZP>66WsQRv;^3(YE4aYHl)
zoM^t!tfRlgP1P+lop0rLPVaxAr{qa`ar`1eK}#hKz0pg;&ZDWFCf&<qxp1{#Mb6!m
zX#FH$|0sQ=(z&+mtHR7VAnGa|QTfH(hNSfulqtkOST|N6%=;K^<6*ou&C<6+Qk|vb
zwuBp37-(D1CJz2bG!+NW2pyO2Fn#XLkRM`3`d3UUiHyMW6MNFSo??ByJX<L^!AiVH
zTIU%cBV|QUpE?&nNcK6E#6->AW<T;RaW4_qX8KL&HJEl4thb5<Nym9qx>q6aQ%UiH
z3cpTSA%91d_P6S$PomUOY#0wU5ZkpZ{FL6Z{7lM@>-R-1mkrT5J*_Ji?tQ60S`5F6
zab<Vguz+NQpeaR9Hu>DwuYI*|J%1Cz$m;U1E1|Wkm&mzqY~*c4)=SS(<8-=P$(uj6
zzptj5a&sYRSE{cyU$hO^&iq=rJnl4Vg`n~oDtC^N<bpL)HRTp2{&yK_7$vkDS~JeZ
zky6OpaAz#6Rgb5!%Q+>SjSLp7wGR=Obdm8`h`l22qNgN2<cu1&I6F&$>yhhLj`avw
zJD;{4E<cgx?4KAm6&e`4`{Yi9Qv@!`E`m6y4DBiEgq&*>3s+okfl~--r?}qy5GN(O
zgRyo!0{>HDg*ZWy#-vw=5gH{ig+IsTJ3Fs}{{wv$2gAHYCXap)7Y!5ZSd)x-&*ab?
zgosDkE<7A3<J%O?&aYNd?xwC_R%%15VBjspXRsKTpYf~+Xs~>AtXPF5Z>Wr5eT!|V
zw0*!bu@~CphWOGC{G{hVM`C?62F5!1M&VY&U&|r-ygMz@RA^Khn<?fT<`EaG3stw6
zs2K{O(w4`h`U1KF6ovLWVR7NIraGyLnXddE8+4wke%sjphBa%}hqkgO<v;0ce|wwQ
zbJ{-&;W>NkA1|t~cW1#PxS6$|(YHJjI?}^*X~^>Jq{_{i;wM~+ui^(Z`T~sX58fCC
z)?UR6EgreZMf405@|QX1qu7Vv^2I)jopJ;+7vCPMIj~9)66V|8lh$bOYR>UyQ58-^
z+c_1-cQ4;#meF5buO5)`5|*~wL+@0%pdbQ&bG+PM?E3JDS0+`q^yl?VITEN_lYX)0
zH_wZ#<i~NTj%iuhGve1%E52N3Bv|BL5+i7cs4-^7Gzzv59_LC+mPbkx&s0RVu5xYd
z_@|zJE;+1&$!fDUB2L?=4YnM&b87OLQ^K%gKkgi3#W1t;fD`<!+IPh6bLLbLE!$m0
zJFa^D)|iqh5N}0rpq^&x_!bxbNH2%3_tWjB85^7<*No1$Aav)d4Sx6|-JG(>Rvi<1
zI7{b6-yBbx>d7+&nh7tAg{?Ytd-kXRH@s2O3(%l$xjvU3wCb);9(Lu0>aKt&njU7w
zm~L+ga$|JC$5r-_96=i9-9B9}OvdesjZUnF<Ny&oVt9O`9NS(;tbM~A|Bc>c2|_q&
zjzET~QGq0`<Mu^pfulKlWfV-#fpVvWm69>~kAlV<oohDVN=(_b%wIH@K3t!Wx5iNd
zqTDDh>PgsyZG2VNpsMRO1PZ#kZgimdP$w*J54R1b9Iz`%LA(w2p&h&s5=jh>fPvJ7
zPvq1`wH<sL0x21jn~2(_4W=Dj29_Wija!HR)Te0`3{r`77#u^@B;B=bnufWXJG)On
znGs1vk7I}l>3yYKq-)#93m@U9bvEaG4=TlzdFk)<5c&>|$NWirTFu+2HfcuT>~eUq
z9)f*0fu9`4QU;4828FR)t)`%J+b!twkOHmYYS#HIl_T;trE_F1i{$Fb1Q5@Mb65y-
z0_N(1ROEs^L`{}(+21pw%3j|@hOZt*_pNA6UekjXUNR}paBr^%+^?K7zbTJ9XQswh
zc8M8g@emk2M1ilhgb@FfT%O&lI`O+FJ5Atq^)7M>+M_p;FA%7tPvA-MIs1gxKWZS;
znLJ*+WON^<igm2OafAr5A-dDkcs;J{92USFK2I8O*-w65cc)WSv=nj^%J9tY+e}8A
zwbI{|_9<+%Dk=Gc9hhLlm!s}^I8~P_$CSATl^~V+UnRE5B?h~VvFE}=zp5nQqKD62
zijW3NCu#*q9Yk!Z?K@YFNH5FEFU8CFDrGpqZN61Xxux(}%=)l{r%vrk@T6r)ju8eR
zbBymjvU{3Enszb46?fmgxgUY33d)XF{S=~~L3@iRgn3EiB)H@fF%nCEym)%cb7*n6
z!#OC?AD40EG;l}lQQp4JassW~mP8~5SNe3y0bAM>+okoAY>C8|x%GH1ZxqNE-NGen
zVTiHN@xaI^)oC<PdWWXT>#t$45wctNOH<R8{LS%0#VyH5;;Q#?-pRKa5?9ud!`>t$
z;uRG=J?@XJSV!a+Kf<`duqZz5nXWe^x9|&b*9$*I5Uq1A-Vz*QRv;K8$|S;ubxli3
zTQQLTBu`$eyZ=VKnWCCP^1~}t3=<*}Z5D*!Kq_F2{)2(VLL?p=s#urnqlxpHhH*$;
z;9S~f-^Os~VSpV&=UnswZ9?e$-WDnuT231n#5d7Kx|~3`Pt<339Rmieyb3DBKS&Rs
zY`<A-9ns9bbq`4|VZjnj^NMu-GV0O9jMh(2mlSMX3iHW4JvDcb+$>D~_q&>L%=Tcw
z{z1Z;lc6bkz!UH^h#g|S94Os-tO6l5x5ZGID>!y`W^=CMVnKu>DHD#5-6@>)n^MxD
zTRw~%XD>>4W4s;0_5phd1NTH$1S)R9y`0wbvSzldU`oULU2V<%DVTRNzIG+t^6?{i
zypcMjSfori8A%=Q8^JA5%LSHiU>CmyjIm0;LSt-W+@67xlPO~yMP`}r4PM1IO#;Vn
zX2c(3l;@Ne0SVk^g(jbiE1mbGcr^Ks4IK+FpEb-(O&J2L`!k4_!BL?jzFH3z*>z#Y
zavZ4SSiHbmpJe#`mT<U-2>;%7lM54KXvB2Oln;NVX~1MWA?U#tX4HUl0eO^;(!`%P
zi86WvMgX4`n8Ll-rXx3EPTF`f%B}0bp*%nkfxP0N**&0E2){JUA0w7o@U1p&wD|OH
zD+zO;uNoz!lRQ3)v_<=jkK6w0<1+o~vclIhC*NC)gMfWT{YF2g9*jww7=Z*k&%vrO
z|E}84Wnh9_%l#YGUfawwEK_3oNQ-_5E{{?z@tmI$Q>gj&bahTWD?XF8m0et7f4W-1
zX>&1kRqG{@#$zRz<(3uA+WcH5*BQ_uzK&~!k<JQtgw^Y=_RAsgmX#|&DX_gz1&nv^
zon)sGr({>{U^kfH<(KD=*Bk_4^qpADq6bUctlc?QAK};>e=%GoxWF=NxV5PCZDb$1
z|AOsU&LeGU$1vyifHjl!sQuz=ixd0x3v2a?^>;ZDU1nZsk0h5{5vlg+WZYrk|MpBz
zHud~vCs$aS#>@$_!@2{sTEu2_MN!x-=;d=QohgeXJ-3BAqnjTYY)q5r53KrZ;-WUB
z3V)Kjk<;nvr*9K$NN;rQk!dL2TkCj4;bN~%?k#>y+cb$k@>>4=Gc2WrX)er~AypLC
zrSiGMgh0o-^q~W+<vakARrBl53ftWrBEl$X64E=1VvX=6;z)*MHLC8!vk@5ZUPtcS
z8pQk(BuJzn_%a>@ONJEM;V5)HY#Z1|+tC!E9A{fbXa%)P%{nyH6_zqE&g&}W7zz=Q
z;MVyY+v-&wnwA8tFr=Hvw#)7l1E)?tzDK(8$RvidMh;Rnhm+IVU<*zh<kp}nd4-gd
zEfh~=A}>PY8PS!`Hmh-1y`#S1RS7qPPhgVSLAQR1Z3OE`rV+lab7D%zR9!1LxAKs?
z8EG4ptOVdbT7=De^7ZoOSUHQFT`N`=p!JhgDVIDfy;#Vu))^2yrd=KKg)`1!117RJ
zW{{A5iXF#H$n}|?5zO&mS8Jv<q6QoC3sj!CJ-0X8iok~L`vNEP8|%$9UG5(U-Kuq^
zk7?n^QnZ&QJHaYsyqSK)Xx^1>uzFU%grLtT)4N)QA)rHx>wQUvlAqLtvylq(o(d+r
zTBWP?OAJHnp4CX6kM!s}SmFYS8Cc*H-mS0bLP7r=i{fJ8Qh9(jN{U3c8&s*VcfIHH
zcBp2HNNVw#e{eplbMZSnVRebyYVKO;tkPL+r&@37XzfMLSR#3JcV%MlvZD&J(w<oL
z6rd^L3ifWbfo#iG`!Vb)pn4At1=k%w+RaS_4ga=|a}i9!csJ_i37U2tp$+dFXqtV+
zhaVkt)o89(gR1>;*xMI7lkO5dJB*&0C}e046%r9UZ^(Fp@`GIr7`C|d2A^|f`;eO$
zeY>uH{vqmM(JZKIa!jng<sGwb78p*4_TZ%0lL!R;v!aYeIT*D(D{X8?p~!F&@XycU
zBfEfHG3=jaC@~*33OIz7x*FJoCdgTE)C>qJtsG*Q<p&*w_D#^)P*wG(-4yeMOD=!(
z;jmQ{&auCbjf5qu3w2b%z14dYIU9k+OSdZ6eHb203E}b4OWYboq#6%x`cyW!esV>O
zVG}D#$jGK&o|7p?d+fwN?oDJw1_6!HWj}r-i9*NQbm<L5gP$Kq2x`A}-rd1&$Wue%
zhtcc5%~&AQL%IIw_hQGZez;#^&`HHv(OnVBTAB@Rk<k34Vok%%%J{u(2|Tv6$pwaH
zIf^`XZTzgu_L?$7PW)CmKdA5WrMWBcrS}?@>*)nl-1+hlg$DUT*!FQ|L)-JVQ5CvI
zczvTe<XJa&VpG4;B%E0e_PMkH<>l*ykXtWmJ`DJMqA*hg-f>j;btE$7uqT_X0@UMp
z$MY^R!F8|JdO<vRS1&yD>UA)b7;78NsdDsoU@I8nn)dB}PnX!&YCVuQ+hU-1mpgQ4
zbEV3O?a#oOh^HkPw2&Zu@U`|n6&D|eY~Lpy7upAV)R*J@qYf{vsj>v0!sgHPkO-C?
z$UM$@^vw8$M~tXPq|Mb3Au4sw@t2jYdm;#X<)AfRgX)u58}G01yWyc9N+}C)p-jo4
z`jMZqo}HYNSq0ex%lTJJz-Su#5X)9n#I+obvT5!UQEc^nY9RJ<yEZCMiHL)o$Myvp
z@j5?c9x!5IW5Xcv7d79KVB#D_5Q0HTqC01df%tU^$y!_j{adEm%OEf7Wp*EBI!F9?
zv=KEYy31P=FI>~*O(rYHE<})x(Bbu&qQ)W)ZdnkX<;-Dn4QJEJ7UCH%4GE}|*1Mp1
z@=U(+@W4x3G9M?k8RE&p$BcP$qXu!{MvCPWOK*FeF+#yyS^c7l!8p3%4pv{NdsHXM
zX{^QiNf_QEvW6pl88_yqP8%91YbyS}HlkcIN3OrGQd1=~bAZlp{kHLHtQoKEI@QI&
zG{~@;0JXu~_{s%z!krW*=KcKr>Yx=D3`1I7%3q-Ij^}GVRXo80iuV=9{g1$L!ZON@
zK^rdG%(Vb{0p-hEf)WO(HhNkyabN$|65PI_jz#%aHp5DAc|D2w0*CMHevy=92^cCd
zknc;sL}L5SG;+t$s*G<#EL0v!^~5Hko8+aWSipW74t0~yQ(~3hbAwXG8LR#Dn97?r
zX#0F46ji6o5L6BujxI5;S~s#%9pt<)mC|9?J^CEcd#_{AhJYfK>~A$c$bU;EZ0!XV
zCuMwz?Xe4)iK^MPyA|JieHIx<`;|=^L-&iaK{0Q8Cz`NELfqJ{S4(Js9+YFwIa7!p
zRjdDR*BttD|E|aL4hNou;Q-mBP={_=f#Zu?jhv8Cc+vYj{TL6<S}FYNtDO+q0^Tgr
zoE?|^Cc&UIZ#hF$93G;>O?h1emA$c;OC;`@#$>8Q3>yTlR*l@Wk2!3Fr4|_*uxfRI
zYTB!~j7fX41v^anS8n|si-Kyu4dEJ>Nz0JVciD%sKHAXIY|9(>*u0rrFk%v-E1y)u
zjF2<LU%n>=FGN5rtKIv(_PMTgzbacZK~?@h!O;Q7fGoa9yiE20g4XZ|My^B?#U8JH
zt?Vkl9mf}&LOH<i3M#qmo|44v`${E6g*14xyaJ*mYMMZ;)3?NL1b4<W4CXzmUTAoO
z8N>8`u3W8+o-}Ey<7kaDI3P+Fq}H+scg(X6JCvsCE1fDZvHVbbY_S6Z(l$L4eW3$7
zFIik``OhBQ*axI#Cw6u%C7K8}OX&l-C%?!Ypg~1ibm((@g;$qW%jh#hVhz-aIf)s1
z(jx2WUwQUMh@y@oe%wKvgpte%&M;4_=8`guYhUEcBlrcgo&E5gmHHl^Noj6}DA>5G
zu*;(9A*;_>@m7P(oX42CN?v<hM>o*o#O&josW|Tuv%2r2XcD6&6{OIOUSeOWn^$=z
z&z6Dfj+)ff_SjAU{_|FMw?JiAI}?Fm=Kb=1s(W~FOJ#izoz+xc1xWG`s=U&lG=Ssh
zw&!C@W6S!XB-punAVh5ccwd{?NA*-`I+_fvK62-F-cFs#=W^l(vXXY%MwJI^EN8Nb
zpqtIxsol4xFDGrig9V^YJ_qKX70H9EawEs1N3jOE;W^i04@OL&suaU;*o_{%XW4}p
zwG5$!9fQIAJ$2HfA`2sAkvwdJ@Inmnhb1F{J3}E(eyj4TG^~W)^P>}nJY6OGiQ^wk
zx^?)13%q7fHlzL`3;D?mM@Eu_b|z|ybA^NqOb@nBrLEGF1mDXSEG~sJuGNPjux6_1
z%<YoRMQRDf9<HXd2lBSAdDA#9e++1mm}DurvNOJcBYbD#|7+X_OsGr1Jjwh)7$H3O
z==yxbMp$rH@{NBZ@geqSqe1~mQ|4xy&VmU&ctV)G(IL2g(p0hVq;YRnA^c#`D-NLt
zw4P+{U5j_5W>yp0eOs4^7i>5Sr5dZGU!n;nyvo6-8drKKBtf}NJw7(ik8t{AGn$!3
z`ojalT(v3I=PufKZ0(eKr1uR~8^MPUbz*JXP(^g;6Jrecq!b>}L88*9a=NxW3Z)D^
zG)%$DZ$H~3s(Rq$ZER3@TpB=rG83?!@s!uTaqg0GX<|_S%B2faIGayu_4UEnE@2AI
z2rG%+rC=jZ^B2isGDGE@V7=7cc;oX>@rKHm{el3GyK%+dd=Y&n>w6#7lZukAcU{X;
zFxhi)lW!<4_0)XAKe6je#2++=Cx0KauX@vSvyd)KPPN<Q6Z({b&X7|j6C5opn!(Is
z&as4tWcon5WpsqBRj;emloJ;T?E-;T@~+pCjqjH4yZ*9?A*b$EQ3Af~%ru#QPHEHy
z6Hl_k$i@hhgjZbT@BI=!tP@CrF0az2Zxgl!c{nqIoCL+N$He$M7Yc$Zu|jPrdorNk
zC;N3PKAo|UGi_>qQbJ;)avHot2Gv@m__L>dLX47}n<C@#suYeMKgIp;<>Cl@TUEgC
z!^<}$it67u=*^xX6y+>$)f#eMHx9)_x0AFq!-hT}1Q^yyJ3%ZOL1|tf8lSN)eEt?9
znB^f!nq981kBGSnHCI{NP49-pq}??dc!dJpgBlfptzW6etpX<!#Mx`kKUNM}y!Bfy
z7beC>(MG_kx|O7TvxI+G*XxY|JKdQ3y9U1z9AlAvWMvg&<;;sZURrLQT2+I?QG=j*
zh(=w<>de(VIU%5CKl}Pe=(EbVfegKZ1j1pO6VxKeP*#(6$SAUFb~DznCUf=r%HjAm
zjTpKOE-SMd3mm~p&fg;=9bOMt-(6OF3DrAMBFJB)8ilELCkpK#Yc#znRGCm@g+$Mk
zzu&HAd$WJUXkq5W$i(VgDO;~fDz5ReZxHzH<xnO(f(L%!;=D7@F4x-FaC?kFL5Nhg
zaWBmG+{XK5Hz+~o2SboP)kXH?BN~JT^xjSF$ps&K7TqfHVB5J#ZC(4K+|zhvyO>4%
zr?d7Q<&cg1jXMMlTxkr2urTc7<7>)i*KTB7jOv>UPQ9f-^<=M$P(!2L$PXG-+``(p
z2Wh3|tshi#QqG@`7i9Ydgy%bh&Qu)mvLZ^C%t`_S_d4ThZsw@ccyBpb-Zdz=TYi81
zZK&B9H1H{g&Izf~=K)%8{PV=L1_I$p1bMQCd{Pw-<v14sh2{^lQv;gVx1zoGou%)O
z&6@PbV?sWQeJjAxeJ7ucWys4I5kn`-vb-wh;PJ@5cdk_Kz=5L85_!F8%Z(!$P3Juw
zud^kN?fZStf3IrWU`2>K#M@uL`BtnlETWqBJsE1Jrnu%<B>Rl#*d%X|sBmfgljBlQ
zH6dnxQSan@jFi_8X4x6fx|pY)F(V26CDHw7PB`R3v}8$)o%N^UbtyeeA&LXG<0cK}
z6QgaxT#iIF-D?!H*>r5HmBX^k^LT6UR`h<9YR!J~pZpi$1`QPzKDbOvVBce!FKljl
zdepablmZIo?;hdzmNzZh2wilrvhE$T1fvXWTrjG_u<P6%tqXOhJ2Qg~B&+JD@b;Dk
zMnz0=l_r{5Yz%mbkL^G6#BKeG=!xAg0N<h8sZvb*<<3<l?otRT-4x_-V$#-uM@Hw*
z!>m1nSz`!y*;}{7b@2R#cI}>o@AeF>`)rK+`4*zzaQ=92Dx5&K&6zEVX8$_aD5#!n
zXzMfwYcF%!q4OdIUFop?XEb}<#~xVY^CGbu7{Yy&B;TLSV_)C&a2+kpvSbbkP$w!h
zXia;u#rcPrR{9&e>3q=AWJ9dhw2lwCCK0+xTY3Q{TK1DwE8M9Lz}Lig*1<=+fFm3H
z#8ueyGGDqvUI_`wUT<)scsq#p67=A36Y;x6AEs*AUA^Q4;+F}o$Bm*GQ~lzbp}07P
z1l6x8GB?ATwZHF#WC|uZ>ar5g)Zbf4MiSz3i?H4c@Y;;aK?pvt8W+zw*oim7_-SLv
z7%>@4ntPbnVGw3w!N%EJojudijwut3aK6*d@)K_7V4E}9nIcD16!N^7wNw<!5D7pb
z@X!I?4WRBVDm~uSWUkX3A)01gaLPPuwZ6}PN>$azx9GsrQ0?;^6nFY1dhWoQLIOO$
z7vhBAv;_0La2zzDx>Qn<Mb`OlqD7=g8B3v!M>gXM7EzBn4Afd93wG~~Z$L6g4H6ws
zAH{{Q3-YRo++)R|<cQ67LtPt&+K<>jEC=&W%3E4{pmAXgb`8^B(+`EO(svd3->-{r
zYL(lf_hQPbboFf@MG>LKQ0&`AD_9y}hE*h)`AWuBD}J}UxI(}9K%%)O@Y!m5rXX!?
zK!t1~A(bOP<p!+rt>oJe!g2Fqt`n!#iKXgMt$aHIOk;RL66QK_h$BUbv8MOI3aR4^
zL6M(Z3o%pU&o-{UEga%tjG2c;;m8(YN{VZKR!&{I6)_q31g|BfkAzZOhtUk8atxYj
z;cTkwdn;*9p9j&4?*^3@Q<>9G_LQ>N_x8b2%dQ%;8%Iw_t<X@jSHAt7T|ohM-87jo
z+-;pigZxhtpGgy!30Q44y4~9^6nIh8ZT9f_@BFS0XhAJ4>4Ridk}e@=dtl-@q)ibf
z(vAe-*hM*^5zZ2H;d5KY*Ge7F;wPFzXm&bI97sI2S=CU#+kfan*P3i{$)eb`ysLWp
z9ExJsKJ?K&j3-V*LnF6!MU`YCsK99NA$lU9m>G&yR|~UHW^LsY`*#9~jIZlYW%;>;
z_yeeWGUEIrIovTk1ErYwZ+a*T0((s|F^kU72lBUh#P@lbV*PFN#lT4D5QR1t%54f%
z`(GOHO>mJ83OV{;&OVvoNHR=j5|9i_9^Ja1huXeqkr)<Sza0DGAyLMWUv50Bkc{*w
zl04xKpWb84AU;^S<@HPYUv6V0{TSCOGML>y!8u!i2j4(;t4M^+sFrMXw&Vio?+!;b
ze`iZG=1pdA(C`7%ycZ-TNV&icK0~>^)Kz*>>)O=ilO4fe;=3Cad0f+=f44>C;b#1q
zloM|DI;;3eP{*Bj;R0Lb#rKZ>((B6p_7TMMR7;0;u385B^EpV}*@xG;#VID*cd;0@
z--@h%wmiyz<!v~cO;T#m=qeYn4b$TpEA|=jn|5upn0&6&gH{3UuLhk8phcwg(GE)P
zw_uNFH%MztO}KB!zAo=v{0!dWO}zSvAnAD0fJ4%PtAfh>9F{x~fy|EihHI6{g%Sew
zR1_ZkMqoAJv=<ht1>V=XoiM6xCsvfmMn%%IB=O#yc&ptTA{)`#@sz_Zr04d{JIl>v
zj9Ux{SmjALK01Er^s&Ryu`oSY%gt2|JnWG2wgykAea8Js9O0MFl37|Z7H{Z-Yib?K
z?#ZsxzH&mnY0=BXM|!cNSsHWo&I{I$oa?$id14V0KQ0RL<dNb97K9`5rrUbZ#nvTg
zk^S40bfVe|+zt4dtoVAcX>I5rA}cR-=Ee|>$V9aY+A%>Mn?|$@{=T?14Lyvfs<hGV
zWV5D@8eiL>Ye+=;`?^!_I2pV%6AYy|B_e6euWNM{8`&om@b<ihpIgu^c1khsH(|}u
z>(bwb;FK>|&*r?m$ZY(WRex+&UjHI#t*}xMgx{0h-&?VPZkheStyKIOZuPxjZruFi
zH{!bolXIlh*cW+@yBEQ@R+LyTCW@C&gh`K49vbHxVZw?ls!~56#xf@8$__}k6xs47
z6PPbn%1!VKR(`dEQL&lZ_z%$Dd$<;q*bPG56sekGH>X6JTb0#<$7asMMb9HgZtx)F
z245=OJb>6ky?eDl4izY{FS2qq-aezNYHzD&+J|6x{M?Bcz`VQm#xqIFrzh@M-#u25
zZ=*K$$FP}hXX%7BNy0s%KCOb$b=a%<6WE=;Ob)$Nc6g+OA2_#JJii;tH6DOY*)w~X
zpeFB7{yK94RoAkfG8rapIVkI9I6BF|n4o9d1U>=nIZ^Uv%7IyCR&K(Ph8=x$obmY{
zG;&$6aW+ssRiNBxyG*^ZD2x*qVnZk%o^Zcs`n5pF2nTw!hA_y(G8DWjODD~hy}{V1
zqiDWfw4t!YvPeEku;GZltx3*(5Hj4|<W_~MHobjSce8D(e3KzR$l5$V6kFjZZnc4J
ze5(z}3T>X-Jr=(2j``@+^m+kOO(e#hxG>>^fO+m7Z0d#(s`6VVdr9T;)k@f3KGL}o
z;_Uo&a$IT<5iap#Ik_0wlrwmfBW=X@FA?Q&PjL*MeTL^k57vXaqm_`?env;FBIS!8
zYob-f=rf5c7&Jz<vscB3D>9^d>{EtFbXU~N&ABqkT$T|XMm;Xhylx43Wmc9qkUCy&
zW1j1eZ<Thb9+{V0E^ak-I-{x^@9MTm4f2?nVOk((xyPU53R5Zf2ro+>QWH1gkO_I0
zBy%<<PkFua!#FA8OqE2hR|-2ddv^&-JIWIp=sqD?>D<m=>lYlkpb<R6WJ%99M2QkX
zK036rx;$dPhxBT&hQqgp!u7&Afy3toXMJ>_uf-FsgnmrFV1&Lid$(he((rPH=Cd<l
zY7v{{2yuF~@c!Z3%;AbMl_;n+p2-_ivODGQ&;qrBn)NZ&M)YyOKBs0{_C~X@VbXK!
zA%FOguN;j<_9g-NM1qHV!;#CQKT6^XTDs_A0QfE<zI(6byf!6+cS-p<a>|ayxuN_~
zQ{1z0&q4c6y!cq=3@C$W%wG%9A+;@_0KRbe`5oxYtNZN==&Jxvn{`ahOIzd7Z{-Sf
zhTl+<xk>P*awYtA0iZ@D%A)4(fIzauiQNKi?*M|GAwBLTWiJ`C2l~b>fZ=JP=jhU5
zB{Rtm=nj0eAo2`=!1|d;(vPXV`Oj}lf!KkM6#}~e7HIOD6N?U@lQQ|J+G|k6M(eMs
z8T~p3oWN%Z(0f3+5lcIe0R%<NA`$>}IuRd%aciKz8a<IjNWy-NuFb-w;e_;Zdp+OE
zdu-ofMHw80_lI@dcjyPs%2a11u@OvS4{!3tzC~f%MOoP}O-cLTlC9plwVbrqFpblu
zm94+*i@F!?XR4=kVfk;J%7e-=-0<DHCiN`A5nS7v?oBIyRbZM6HZ1@Ze)PQg=0%{A
zV+13rvfgDd+SV)j_y{;8XY_KtCV>j6jMT6-H|-2-?mPm(E5g#~rB-Sgj`IfbC|v9T
z0lyq$G`MT6lb!%twYID|gCPBZA;@%xXGW8cv2~5TuYuUiN$)~Cl=2AGJ$`(kmwzUr
zyt!I07gK-f^O7P5;!nC6P7+hrC(h!q+I7SAT5iCTGd=HuXRzdth!yEq%Ju8c9|bwe
zuQbiVJ+Dk&@)_W?ZlLEHw2dY>N*3xqc-Hw;2gOD4`Rp#Gs6rnVowt#!`7l|CoX;;b
z2|w-|ggOIN9el&_(pBogK`$8<@o$K^!?$Dls0kk^pDn%XT0Eq3?a-M%X=(FNd`{6X
z^e!%Ub<v?7n*Az+2l<P$I=qthRv-L;x2AYF2Y0X1_bThSX9f|b7iy+fyt+o91MrxW
zpHT08Xe-ZI`JCAviBPId4|$xunsMp=HE*{FeCDRoK%fVp2vXUMcCpZTO5Suu_-8{d
zrST2`&x%zG=@4|`Au1h%C~*P+)%`=SZYJ={xwd;e@W%vwaQug_F2aGkoirEYN@k7a
z$Aedfiw@NZ3+)>-qUy!wERlOA)HMo%rBT1+8*jTx@GT2|Y^Y)YO$V+5(|Ki62sI`P
zKu<PV&WCZOeUZ%8P{1ke0nrIq97ba#qr*mtcP7-1VUQ*JfJ=!fjdwv}Nr}4Vyk2nM
zsXZecpaQl6Y7PU9z`j35Jj;Sib2{q?fJKw#yRmI`LPOe)I-zC3^;<7<Pr&NUO;-Z?
zxCcy)I00r<(JVVaXl-{ZL9&y=0B6muLjnV|Lrc3P02~+6Qq-7@KE~LQzvSte{Q?1(
z;G1rn>I65GC?$>siRNU=6d*NVv)($8Mfs}W7r=V(e}fC)ABMG*z@Ue+*G#BcEDGa+
z2H;)GYeNuCs4@3~1U_rT<+`t;S=W>;R0p|0uOg7yrw+6TV02QbDVOR5&H*$jz|dE!
z=myBESw8~+{PN*RfGO$+)y9%gL>YztYPWJ6<0)#%KwZ!`w32=-mtG~nrch2eBgmC`
zZO7LJHs3WW+RWepTuG`-ulz|_0YzC@`C7KDxqt|61uWyhoTXM%qyo{E|NK(`o9UFG
zVTvbNZZV+W7Vk~xmtz_kv4k9K4t<x1{D`rC_#IZd*q-Iv;s@D%4}?rWlGIPsaR?`r
z-*3u*jIRt3zIy?_5`I)5Tud{$JBc0hEps4k+9{p1S6A7dF&7}98~Rx(ch#-@`6QS9
zUV%ZOC{-DW{1!0dt}K`5z@!!@O<7I#D{INejlVBaM%gL_!vEhJ<dhM8<;yjNo4x=u
z+_LT+i=&*T+>-84r`Ei`)wOfp`eUHaz!k{Q(~{M>I^iDJ3}@j8lx#Kns=!KVDeRg1
z{@U{wlsK>oJTq7(*MZQ1ZEuFJ>krp|uXy^kq{ZlZ1WI798|ubuiJ+iU0<45umEi;$
zAeEH?1zMo6M*eOEtT4Ac^#16v-%{@EJpcySwf4HenpI6cymqA(SefAj%o^APU^1J5
z{b}D{!)xp*1H^JOZwu7}R;(LtZ#56lx<tkJyh?TTzqX+j0(8zZI=g@XC+lKgfT>!s
zeE$Pj8vE`;dn&-4)uOynCgR!BPAO?jt~|Aa`xtH|mt}ouewV~4pcb)zQK#_Ru90a{
zTudF|%GI0p>aMWNSEq=jh-PH0T6$wuIG;L~tq9lx@L4g-x+Q5k<q0BKIm?=d$Tpfz
zb`8Eiy(X9E<Pp|-XL=`tJ~cX2$mfD2jU$d=y-AgMvX(iWpUar}+b9=rn;*vh#R%^O
zgr?pyho*96C}1^m^yTxMI8b?brQbK%F9e$aKJ7CfanI#?6?(-e?BDq5<N0_ei{EB^
za_~<!ZOyM-cNzk5Ob>}i%5iP-?wc<BB1n9dvz(u2Kz2Z1F|;6TAPm{__vJh%c))9V
zCAlnTD<{}8n%4+`*YkOBATH;6cD{GePF|6{R6rNj+7FTZjB~2%ADRHVd8**+1J)g#
zFqV;OzYO42Jawz0({mwgK=CLS{n=@RiF}sx@&RK*<a3FzahP(j+UG3iA1>Y3(^ESc
zEAI{y0YYh>NK#-l*^B4|fY6q-6UcD!c&Aw!2(zW#r0_LGtl`xACMLX9YHP(TXP$SP
z8!154je>Zusc7|*QUGao5(}1;OL#83N}KycJ{_8Zg%&iVdPe1Tf8#l^``D;UL`0Wl
zQe?JI$7Z}ay`xD>lJ=pjkvshhkg%(3eksq%xvdc((BP;qkQcQM%q6n&80ws$25}i<
z`2NL@nYJo)K49>gv*dvLCUXSRc=e#Vg$M*b4gB;FAc`^;Q0iPp$)pbbOWo*nH!(0j
z<{2ilz(@yo+t~mCf=Jx9%MYuT0GBJ*S&<fO2%w-KRRr|NAl1tS&{gCE?>05mg(`qp
z7O37dtOuH>nE;DK^LMw_yQv*bt|1~Sf<`B^>)>pj6V9ZfG@z-`MWd;`&Iz}v|6FT*
ze@*pu)F@)kM&Y{abE7!G$U+|6M_gZ^*8l^W4!Cn@UJD;E6y^#|;3;Yf#C3s?3@Fsl
z2G0Zp6aXaz<bwZEWE>#J#6~UzTIO^xfYE~@VwkU7mCM1teH(4OhnG|JT%NWTq5)dK
zmB{=6#VpJefx>)j%1HzuivAK79KS|2{NX3bOfzvTUGexB$wjbZURZvN+7D8B(UQ8D
zKAe)7JQ7;90%zfwI$y&AAStS7DIlU`pEQ8h7L2WUv=Q|UaPK)w2iF5PqGqp47obh*
zI~zD)gm{KGxImD-Wjb1(%Z|n9ev#ctjQ%o~0|3L|lSQSvu;+5~Kku8DfcMRXxjb39
z^t6KmHI2GwTA#D5sY^y{f&48~?>*8Ac~%OG|1k}(?tc9QT-iJ;O8-Kg0jQ>X58U#9
zP<w#c03d$+AEvshXG>Wr&q@zK`-;c~Iu!A&7y-|Kl5eB6wty@B4@Y^@S70a@zy^k5
zmGNweP|hj`0n;+FI<<3^4}||35)ggMu)Jr>5)j7-Kxw~!aRl^l{Km6F_ifZZ2MDo|
z-!pRsnt#|}G>NmW#)oJ2EPcgv&UI{OFjKPO_9_XORoCUWI8!^H*nVuxG6OddW#h8N
zbYXZV{e?>XJ4)75Y#{&4;)tFnRB6v;d%~#Q?=+dO?{bUpn~I#PzJyepwC=Qr-q-FN
z(*_<=16b%<wRaKUN8Rmy-!|CnUl8;<>3&d~NxE4a1Oslt(Fw#s6Pv5$nkqMLALq<L
z;Z0!d7b^&eEelx_wiVH@_f0#EI7(lDv4o>ec&Xrlr<1Hak!s1PJMeaP2H>x5`wpzQ
z{<qa;fWhIb1cVibZc+o#P_mdAlD<ATRrl9sA77b52y8ojl(TM{Op#8iUmYthQgT^0
zi$9b6Xr^~Q(VxEi?77VJE6N!UxT|+y2xb75yoWogRG?9N69#y;65P0Y{4fIIJ{Uz)
z{|>Ay*GSR-hqSj0%j#+Sg+=LBKqRD*l928O3F(rSkS^)&?(UXuX^@ic4ngFiQ@BWJ
zc<1`x_jB)O@8f;;hxh$(tywd3_M9_|<2P#-Apf%0o^{JJf%WkESqxZa1Z)LAF7kq0
z^Z?tXN<g6=vu3JCXp?SZ&4IwWSL}Pa{j(L$403z7tZiL((Iltl%lC*Mh=|)@+oNi;
zJM9W{Q|7U8irH`6a^_LAhSTNS7OFydlrP+%(gA9!IhQ0ATwREu=2C$I+;AB-kTz5?
zvkkEb+mG`x!KgFI+~WE%0(2bS9dQ;5LfijqGjt4?gvCkp<j|#M#Us)eEDFE-pyp?Q
z(uIcy!cjJH`=a$(CJ3Pr<zAH?CwNqW&CYH>_6YVl!5sBb$)XNVKYE}^vUnxl7UmLF
zd($Sg!%`n181&cWL_k+P=hA1~%%rd*|3^3a;>w(H%}l)al6m9P>lh}Z<hGl(&TL3|
zHS*xC17nf9!|qu(W+#Za(8jw>O~J)85=v!3^%=0KnKHL?&*d6LEq>wlczfmL0%q%@
zcJP(PS3%ON1#I1T@Te6$ChFgs+j;i*+O=K>RrccAmnw}`)l0Bu5j}Nw=b2BXJcS?6
zBCC0sASw4}wg4~}S8dotRCBOq7v&<uwOm$To2aHdVm2Rqc%_zu<vEMKyMN{<7miY=
z4r*PaVDWsGcT+Yd2~;$tqkw5AoY14gRwPK;+(D@7R!@9Ym)27{fmEbMQdKg6Bv=MF
z2PpA5Si&{E1Y!G+nsBv1Spj>x9=D#CAPX~<tzr(=T^%_+4GXDj_p1b?tSCeAx*N|f
zh?!ZPy<d!~h`ZFP-ZNF_&M3L$C*p2VaBFwh`2A89-}%S-(~}~cZP*~2CKuPM&lfLC
zq_EjX0w~{PE-+$6r+*4?cC#C04G8ykW3d?bTVTP8&ajgo;CG!3M77xZk&3eOSufxV
z&L~<s5{}8ww-zLsEZ@q)E)iqY3Qw1sen?04o2-EF9Miu;_{OF3l=kmty)R08>Ps>s
ztnt(rTkg!1MfB&(6}~6!oTf@)sJzU%hCU_;A9gEnD2%6+XynGU<hcgK5HGGjg&YrK
z6bq7i`o4$1xX%4$<9qC<YPVv>0Rog$Q7(-vrb)VE>gf-3HQvx;_j~vuNdSkEqAfmR
zp$IDDEsOcXHVZ*ej=i7RfaoFiU5H6|3A$p$<lcBH+Tb!KeO5kBkfSIlpFnyv#Mou)
zSWS|5K-leNy88Fdp#QDzwiFnw)nDbgp!n2fZ35PuAEI)^H=EjoB47xPtWP3VdPeb2
z>ej$|cuXG?)KURVu6Y@W=@h--PX=s-f~~+Gq1A|yns<dS{f;mZp(i;(%1VG2^P`;;
z5Pn;!C<4rKn`C8^^AfxQ`+q7qSeO>jvRRNkRrRM|)3$Wi>xD}}?zJ^05&bFyiDLVI
z-SJZgM&>piOn9rgzXS?qwK{op^Q?th=P68;fTsUpZ;z#H0!iUa0h=4JT)K5>c?mYd
zcJpAucDU@UjX?+>!hH0|0htkO=S~`k!curwHWAVRcI@yjt|yC)^YXz{$E>`PaCmk{
z?4OM~@FXe!yQF%(g8+LTeGmEA^#MGlS_okeKnL{=MeqdD;P|MTv!GX5zY3lP){Jw=
zfHI?)P(dZf_UzvqahTxAw_Tkc4<3^*OVXnofG8q!0kDEv3hrJH(~|4SdwGwA5c-7K
zhwACUZcC?RK=FRR%8%+#YBU5q!#cj~V2PjEm<Up(b6i~ijiQ{b;;93V%m7Guy>brp
zQ?`MaUoVwRr4&=sf=DPEo8(~mKq{v43)1>G?<r2;%bdS!%STPgeT7?D60LmQcGTin
zutx@-B!xq&Rddvr{RO&kCi`zAxE>JlT_ic!5T!I&c~mCP1Hm51QL1D1dF~rVmwe(g
z@x)jsH(LHxByGhXJMLyTmaBD4vIS?QTiV#}@PY>!4a7&mQbdZDDk)`bn_NAoXwtmi
z-aMTO!n4s56b;wM%yZlG^-W>xUFrw(;%N<!`_M!kW9sORnvaj2OzSBMNhPy?N0d)I
zif>L;Z&%UWDK#mSAA?EH^1Y^Y1~ql-Ct7%?1os5Z9sKFTbhT9K72L(`e<`(E<8~Ch
zFT7!V13KRgdCiK}E8K9_!MI!sk~QT)t*W4-k7|iVfNrk+J?>$G_h9WyiQ59wcb0g7
z1)yS5YM`V+Z+Ll_kZowD2?T@heGF)UGWZJvkfT5i-GK)rnxz*b{$@Gn;Nu<~B0w%r
z-76qxr=Ss{8Sz*8QkLjfsTt%Zg<^@uOV2)M8}uPjO$5O>5QdDJfb<U9#c>>1Gxa4~
zK4?}O+Q0?Xkkl~z!vqqO##+$EG33mK2Wlx+_zplfj`BtyOoG4=K~cWftWYO22l2bm
zztTdVIB^d>d@-4Q3L)AR;<uB!y2Yz#LPsHG43{l6RnXE{oz9?R8v3<bdkD=RysR#p
zn|n&xtqz}h)gzB!jiZFyd0N$$Y7~iE#f}LvX36T3Wg0B@0ws3^(AT3^fpKC!>~)$O
zKJ`aXzD0q=;sK|T;)_A8>em=}*Db;8_=Z%ou7YJ6(l0h~;=c5k;8l{}xyv*$7S6hW
z`fG4*k7UrT75G3v|FrR)6_;b?i_dq__5)gG8p&STw_5ZYmpqs==Qn@w72ke}J*mS|
zszbY7x5s@$`S)w2dh$tKOm%ykVSY;SeThxk;MJm0CB96$T&Mk?6ZJN`r^&3|e*@>A
zND>I$0vOEr?#}?Hz6HEEs2cw=Cvwq2;}Tu!+!M5aNg(vAR|?l>KO;1*^*3MXW4<44
zR=h2Kws8JEuVRa?#q~RG5uA*wz=0RvHhL>Z2T3yTN&<Lv{xA@<;01^u8m(!*bQXSW
z%Ogps>Q&p`<gIt(c>Tk@`a6+{oL~{<N9Y+_=VxC33vW)DtJLUEUcQKUq%+Seuo^$9
z+I?z^{mWaArnCU+i{4KN7N6$=N)`FLUxK@|2gvjKeIF8{YokBi6SHO6%}zddTnlw9
z&ZhkPl$mVzYPP6}&yf-j+tIVtBSKnua_Y^L_X`C0*8oe)DP>xXIKMTl^UXDC$2HT~
zyHe=vdHK{oS}-{hP`>M>AcBW~Z4|#Ffd(h?UgxxWXEzg&%2*`H0U`$R@;79=shnwP
zpluvo5s*Z~`Gx!Dwlcfc2m9tuAC(_CC4NZ&cK|$l>OZU%W%L4Dm6xMeOIUGl9jE#Y
zSxE)J&OncQwxXJ_;-X?i5ehQ>Z~nbMpbbE0sBj{maY%oVk(Ffr`-E*80(=rUT3ZJC
z0dj_qt=c#zQ(19TWQD&xL`zok2V2X91N6awGh}4?o%9iHF(6m%t2<1KO|~r~S;;xT
z%|P)79E?r!&8^jtI<x|Pg4ud7%KsfU1MMO>dJ@8lJdoac`)_Ej$s)pvEtBYk@bF0h
zH3N3(^nO(Xl?b<ZO+aN874g(x1_qh|GX?Xy5aC1$A%8yO*>(NHQj@0q5?d7!U}k`Y
zJYt;yP=TYX%)<|K&s7EpkW-LftLOqT05SubL*Y13k?Ftk|DYl(iPZc79FPHs8F0DZ
z^2`xVWD6WjU6D)tX~Bx92RnGm{H-j~Bb4<U>>w)aw5qMW8Ud7icoy`poXi=cx5*-y
zR+0mYO~%-PTo_<>P)nzg8C3#8uAzkkMpR}x-3$y+6~N1YfvQgVNje#<x&gN2Gerd&
z2_1T=X>(Ln32f!`JP$9V({$DH=$xt$lV+w>wk?n0;Y6rC)ZY-TD5yfU1AKGsYZ29e
zt@a#J`5?%O0mB-+`V9JCeRGvdesH28(}R<ybuh)%6xm6pFZE@--A$R=6GzXb3f08R
zz|f79=cRz~{2#|lhc!VP8#4`F)kKvW-3f!T$8bY=Xp;p9$NzACR2FpIELq75E4p1Q
zzGwvQJrp^=1?jxS!O^b{qU~ml5f28kZ9Lr^M5k@VFy9IrTXlu(gF+<;0+-g?P&Ys<
zx9%OL1c>VlP_3u|88`%LOb5!OVl5C%E@ZVPFtRrF6a+8aGt99DKq@X%CAWb|U|%<>
zEC~d>%(Jxw{x+%Sor1Bo?$%S11Fg<c+Q5Vsj!zQbfKr={RM<2D@Yu<z?=U#G`TP}>
zh2;Zi;<IFd4Y@9HDVScTHez2Gfo+$mGv9zeD<iIQHAk;YD|$8z8ar~4I1_Y-JLDlh
zm_$`?z9N41F`ZGlA_<o9sZpW*TR2UlR73yIK`xvv{@@W`)04ir%m)vYE#aO1;?`qx
z=F5YA>KncnTc3(|EHAD;GDRxDEe23--HmVSi^=HHcTj}eCgv^UNicnqYU2Ip13z1$
zFITK|i`M=u^DAL~v$xjRaBZgaaxKv5wc;zUf3jE+>2gyuN}q(D54E9t&&PGwhDP*c
zq#BQQelfAn^pyoV#6r6)k$v3v4M(fL5WlG{MfY&+OpEA2#J|sRi9RQE@m~~E9IVLh
z{WhK~UE{RIV;E}-JIJNXbhMmX)nol|#_MOHN%y(7js&MREjC!ev4!lk?3{|ot5)30
z%E>)G%3G3aSDN!;3Q6*ffb??n<?_+p@75*vct0)o_%ZEgq*|t9bdSqrZW;YQ-ZfNw
zNzIoilvGlfc4IDQ^C*p3NN^;H<u0ixz>DXxlu($yz*`wVkZ#puCr={1Z)U1ZW7{LI
z%8+22OK=3ogQjw6_HLeFY3)k4K8)fxPDw3*(?In5(yd3^WC_^?Bj6;^7x(xobISZZ
z=~nN)XTYKb!*)dh6Dt=x$%K~$mS44=1v|GT3{+lF=^hYT6nqP5?y%{K0z6op;qZDu
zzxK01zza_Jn9L?P3JiU1%Pz2N*0j?SQJ8L6q^qxmSx}(zR!(!;G9}^}y1jnR#<%e7
zg7PuzaHH8L3@5lSAy#<e9{O_}KMkWSEj|InkcXoNqMFA7tf409crFLjc?d`@l+q%)
z2bJJ~)^H6geL27<_rs=?W^ZY8gWEs5;D8-V6PQB6#rgp-zz*U#0#c$#lQLjJ&{PHJ
zgPp;V1dU=Mg4vqDK)&ARuAu6~Z#WH%CuXg`0Yjy`P>;C#bAp5<?=J59BEDDzi2mU}
zXK9w1rsOZ4|F#()1R>WJ=bVvu^x!TB9{xR*0^$xgMuG6AoM&zV(k@*ucFB)&scS--
z#k7oGT~Ph5^!tE-4N7Z%lRTO|y&mMPdGaG?qi5JINT%zc-4et1jsDsZ`_GZ;gVyid
zfinq?)i{T(*##Z~5Mot@>GmIH)5H_M$C|LKY4%nIxdMRR72`m9_xK|R@ed&QwvFOx
zZvs6ckduKlZ3*E=j4Tg;7J>>4Ej*|C4bVc1)D{;QT1c}e2+%^%^)Iy0<zHyw5kL!p
zzJH;GmjEpUm4BgyD=@S$yWkdv7J>qxg{p_kFtiY8hoOZudmR8R6p+3IXdy^ZQh*i$
z;V`ri^Z>LFXosPNAT9tc1lf2C&_adj-vBKHJutK|yMPad76OGZv=9jT|9}<(rvO?A
zECOgD5DU;kFyuH-Z6*^O!Lbz$&;&yZY4)-KS_m}2&_ZA&3@ucc_WEyVA&~Gdv{0e;
zbA$n&^+%DW8a2*hnlQ`Dm(uEq?T-oyr;mHm50AnM)3=3~HjKFwPHj6bgw7=A*R_}N
zOy2j@`_k??T>gjx(oopxi6{_-u_`X@2D-18BmC-2ePI}$lIht6E*4+Ebc)X;oUaT}
z-ay~Bt7ME`D+@^5LQTqFm`{061mFn>L4RwbF9O@!v1}S>3Fi{dw;NBK)<8Y_uv@vl
z;?-Vz$}`~eO5y9|DfiIJs;s#UxVAGLCW>O3y?Yl*GK;k!=QA&=U1|5uas#yss&;T7
zLSEz5JYXphuANUfFX~OK0L|upYG6iXJU5#IvK^jQ0`s^SCN1`)-4!fmhb1k*TJwFj
zr}`QJ_=F>{9t;Pv&})Wd#T?eqd6EiJs{J!Fk|yw6f0ZsDIA=u)<pv`O#o-52&;9-7
znHu{6uwoDgjCnik+`<^JVIha6Q5B@ZEpbdLXzoD@%+dkFaf?L428bb^HMLGQ(+TJ8
zU0nH9G<)CmYFRF^^}kygEO_)@lEtK-Q-SR#vCUK7u_m)X`U5*i40<Xj_m#~|Q&0J>
z^i6iz*O}Zh_xO%tC;#NyqPyKX2E%ADmt3Yl;ayO9Ast}UfOYEfwWU8WKg0fG{7>Aa
zg*>f%_sty5o(clfYq{gv>;hYG>R@b7`lhM@u?uCT$JWvTNDLT56b2*r+Xx<BKpFy0
z8e}X0Ge?H5tH5%RGx>Ve3M}aa(k?-Dd(w!kFLrPd1%|q4T=m)ar4iHj-zuq^qw|-l
z_K>a1wOJ-!P(9-b$<sZjbIgr^?$u@+uR2JwF<jtbyfhj7TlFR&EBSmzz7B8D$C03J
z6A)kA>3K=KV2!nWH<uxngYSF=R%Abd7;*(KTMoOJ=Tlsq&z!$}?Wmw3X#QdOmK>;D
z8GwF214Iy3sv1Ipq1Ddd-FPbw_xK+W7N%+%f;*^i1%TNEhH_yrn*wVyfZ5Ke0szb=
zy2b(y0(d<6p~A@qmOVr$Cyuzl(5I~5y(PO)1c-s8lSpUo_whg_AoTs1Zxs!}GI;yn
z64a1JKZq!>zWV2#|G9|ON)u5{1=gRNEDMn!BGuK1Y9x$Ek5=1uzzFlC5C%}hSO_}-
zM)01$;d}zR-W2vQa%^F?F-zgpdG`tEcO!QT$TmLC!BFBE8eILa*ZR{hr~)1&#WIr6
zJPS~##r!V`b8By{t!m-PhAq*NcP2VnBn^LWnRCup=+rx8T)*KukPeO>>`0ZuRz(&A
zD4PZadK5s}2o20&C>w<VEkM~csL`VU%9h6B2vD}0fINV*1!af=luZ^l_ys`OR9>Y6
zlx^rsP&7c<EY$P<g|cNE@BaTp*#w3Z|3TSk2;2e6CNLEHFO<y;plrL+!P)-}WdpkY
zgR%(>P5ujI6M&&?qW_?5pdX-YvkB-3FqBP!)e)d<*~U`;LfLj<C>sdF!#^n7<iAn2
z^M9jkqW_?5Kqw4l0~WzhHuw0v|3cX&6VMO;8_EWA8iuj~lmCOV0b7r%CE)7*7swWT
z1OwTo04oe+1F~Tt8?fphkWGR09Dr;y3FsIwkPQrd<$nX&Xb4*W0onGXga7ZZ)vE&=
z{{h*IJzoL^{~O2#H2qH?+rD(LJPc$5EHIEwfwlf0kPQg?2V?^gyoZ5ofb5^w<E4Qp
z0J7~%H+rkoih``I%!v;Q4+o{T^_*f6&7yluW$pFXJ?TdCYPlpIYl?m8DuYXGwA4N6
zD)Xvfu#zuumwzeA-XsJl+iZf)Mpgd|XscJH40VsU<ezg*2VJ%oGATGGY8%I(=}t{$
z8W6yj6&Y31v;;@h>!Aq@{l#);BB1FV0BU?np8K!~d$wg8-@-sPh1z>cC#TrJ*E1-u
z&Z+n~k3K|f{~q;}Vz+dUe@*nhMAyNjE_+kUn_*f;!M<{vV93$H0FKLqS4@?yWW#Q!
zzu)C`kQQFD$<7&DfkVO>R|!v`f#?2$oBT72OdijO#Xj`qc3!TTntdY$@!G;g9gAp3
zn>^G{a<ekLO^D7Fl)deZi9EW7E!JPZ6}azpEp2&n%31$PlcPYY@AZ({iAH=oDzYxR
zTlF;^K3?2v@#$RQ{<0>G-`oX@=h}b*?f~WclS?!yrV%x{Vv}>^XB`tKgZVZwX3nXy
z-8z`0;c?@da?A`lng)H@3}|NW{HQAI-uQ$&W*_GbD-qECLSv+jm~EMmtj8zfh5Yf>
zkBn_Jez89mW|v<`+;86AOXN$I!1ST;tkNmrpEuL(KcaGNCaCh+yFCYQr`zmA{W_`*
z)U<7@yjXZ=l?Um$Y(+JHlOi@ZLG?i{`P25an}f#iIE_7h*7%S6Z;=qulM5eT)mFlQ
zvP$iQ1s!NuKq1Oo-PWy{L36$8B^&nylk1mSnKpBO<;O%7eW&FyOCJxWGu&M|-|mfh
z5TeAn<;1n_d;2Z~9M-%kvM`cKqari9mw$jRU~T<;sa&kDe$mf?H}5W|dT|-WENeci
zB{eH5HcOjgRvKv*&sk4BKp8L)`UlHIsdG$8SeggRqG_siazx4!fr3Ltydlc+{wvi;
ztZabu;dCCA?5F1{WXic4tl_pDVwOokY|^^8xF^YPB5keM_S(lLFQTQ#BH{8$0%Qq<
zls5=Z1=|>6A8#O+=*{a&YlolR`qi|Yth5**^XEddxk<NNcj*hcNjsvi=Qzyx)Qd$J
zAT-wUDsrP%au{0I&xZ~rsHZL0WW80(gg#B@CXpsAYiOEH4ns_w^#atvn|-yT=Af1|
z>yp84wnbCe8WTZSe~P6!pO091M`==-FT(Kn(OySO4G^P<RdSeZ6~EG&&rQln*6OgR
z6k!nRX~qM3isLU2`~e5}NHL=bAWg%)smcYcnVOM6oP+YOh<Q+g7y7JK1Dr2qr*e~o
zm|GxSmXpKa8^n|_PK2S21|S!_&xa@h1d0sZYbyakWt)50Kq-JQfs^2EzFI&EAk2Zs
z&rrGC4esHFwf(g0qwJ~mqp3)CO6}w}nP`n6*~GDL>e^wPvZwJFZf~QE`<7xiqc~!T
zy5-fS$aJ1wihgv!5p5>7B42yjqSNg62V3gr8Jt0<@Rje~g}R!HhMGo9f5(p9!(%37
zCzAi7LxE9OO;`8#{rDL+=F*^%R(;AwZWMo2(m5(|eH=~wDS5Yu?DkHA*1B?70Ou)g
z102#}PoP(0<cC`mJS4^s3)Bm%LdV}a)qDe9MqhjtG#i3^x$zb{{4%+sz-?wJm83lc
z$zk9DhwbbqAJTVnqZ*mya4?q&yF|Xf<TlH|Bd(wN+e<tlLUdTt91Oah`!hacF6|!G
zevDLf75!F?X+J5+tR+~ynH#02vr@4RDA>OD0&)ZAlmN~pS#&0(%7^)V!khqgAMG&?
z3Z%n4G9+uO``W0$fWPG;m`gw1dTAUc`<-#lUc8F<ni%jm7H}Wvd#eIbhfZ>WfSAnV
z+o%W;(WrW${bYaeN2EdG`fpxUVlV>RR9eu*r|4ykjAZ@i;BR4{!z5u;M#t8d$@B)T
zebMNE`8G`l@8_$z9PcTIY_EvxO$6ib5eGypqo>&ICOcHtb2$bmzq!~G*Q*D$&z*9c
zRjS?)0xp>uHUBS@T1ixU_LEv_n8tlLujC6jBeFt)KS^N^=-g&ML;!KX*0C<c)Qz})
zp4@`4jvrGCe2he1Gl<*FK%#Y_^0_o|{fR=weQuB|=F(MGdB!tPw}^^N7!)DWuTuLM
zsMVNxcZdPJ(y&N62&;>`d#!9Y*{^N>4i3=Uq-z2fFD-`bNuWze4US*a130}EM|fd<
zc=<_RCi}6FMiT=#1xXx1YFtq{*%8-=9jb+(+D)d9D1Y;YPHD#m%vY@4TVQHA@btiQ
zn~iC0D>+Q2J9(}d5Z7;`k`#ilXq@^gf_^pfR~w*mmfOc;Hpao<fehLhb3{OR4g%yQ
zvM@wcfh?V3;UN3TbW?;Wex%Bl4n=bkk&+gXRC!iVQ`-G)2sFs`eU1ag*pI(2f$%0=
zZhi!$%EiHrIS}~-7F$qkt4r{yfr2xyz7J3y^0z$!?365P_oCyNSGaZGc%Hlf?G8^L
zuramHmY*nd^o?&Qy+EpT^PZ#w!-|iL9TqUZJmet;sL<RLfnCdme<OhW2$m30V7+?Y
z4?w;6GV^msoxpA)po%8z1<vu|T~h<En)2OX_R`c$M~r?m(fG7V)g{s06$s*je<qw3
zF#jjH4fHSeJbMa6Ru5MKH*Qg%>0)Ztb+U|a<#JrURQp273cft?Y6CF>T!O>Pno-hj
zVfDZGD)0JV)0VAQ4)TBe(D%wk`W>Fpa$&bIW0#1fUXkQ5aC<9aRmVc%EWFP*GGN{_
zjqnwaA2QbkV&Eo)fewbQ#V$AeWQJeoN%f~2_V?j*5bII1cR}A*J(U<k^qJF*BskKA
z2hfChc-7CO;4*<=`M2Q(BezLwMhqZ2@6m*TsSdSIq&9Ooicy8H1G1S^t4BpF$8m*`
zKyWlUJl}z^Zb@vajE%O;luo=Jy`Cu@9jjLqf0Gk1&##WY3_=x?quv=O?Y&;#8fna<
zDV{6=I8{uQQMpX2xwGyBwac%EDNgamL@Yb@eN+ft*sBE-?3=&3kELzy?E6>`4i^CB
z)%20uAodH4>NVlOQ?E50RG@hOsb%?yh~<L{Tr4amUnS`Q4HqrvFl>M;YXsDQ54Nhy
z*k>SA8NEByU?{Fl%+bKY!U4%&VxR+tG@U9^gI3P9Nmw@hQX?zPb%D=b1FOQeli>&&
z2;l;n05up-E@UI^P_O{JgCB;~P$t4rLH2U7S#bkhMun*PAoRBDv0!?fnW!1?_f%ZV
ztC2rl*L^_&Oj}WYvIeM|>~mph_*>Zl56JiM-zow2{-Uj70V&kZ*)RZt<uaSxq38=@
zmvIvSQpVvh9e)<k@-z&+{|s1{mufp{f!Svz10Z`QiuXi8Cqlh0YzieTb%UOVrCBrz
zP-}9YgTgX2xAD9Hgp9ZV6C^ru8KX~tKgjX-hcJ%Lc>*KidXJYtFLQ-%5;<{wRvwV&
zr{xe6AJDjI<TMhomCGn6!Ol7mz5#AjntMgG=VkO>;cdn<3YDK8^)(xhEU=+hM3How
zN2`{u#_QT+S@U7+ZnYSvuv=!17)_0cbC*w0Tl&N`o$1v6m4%CW3=r}#W&bFRQ(KKc
z7AQMkHO=$2m)f#3#)ZDw_z>UCSN4@9Y4o*voa}r@h64g<vk$0_*@$nz8X@VYwtUQV
zfd_4xD%|`QIwoKGpI}wAztQW8x;+tV(;uU@td_#1HDajkq`&^mq<MQ!P2sx}-{8Z@
z!^5Qcy*%-32pBQbmIB%?6HyY>SK}LqhJ*B80*Nsx5tS#qca3k?h+oV>yxJxJP5GfP
zN!p{WU&t|F!xH0vtN#1Qan`#Z-c=<u!|16eIlO3#@nJ-~Ck-Ny;1Pd1d$K6X5Lh9Y
zQsI>^`bQtw>!Vx40B9QMFe&YZmT25k!e!^ZKS;uSz%ci2YypBBYSTcMP|{eW?EF#5
zCYIiId;@94`WXV?>j$3>0mZ^;_LG!~dqv6pi+sSTVazbJq@e#4?jlVkdDu^4JKkxy
zR96c*wober$3}HvJCZ-8Vk6XSIAfoRr@V{$K=qg;Ms{BMi%A-|I>=|s&X=n4rpKxj
zI$BA{2Rj9iQXd#I;CqG)0@5=<gp`W9#HVd5BIB$r&tg@2(p;G|O<OiU&2q?B8efWD
zWbuyod>P_p5dS_xeNeIaJ-}{=x7-*f!*$%EBLqf^0l|0*WT-n|>(t7(@8Yx=XCW4*
zoc`cG5HB8}KFFlzU4~5X9!T&_P#;)fzgJp~cj83M>eAn}GW^TrCp*75+7qBtJN|No
zS?^P(q&X*DHMKlW%zCqNR;9ADdzfA0$u<Z_o$g>^t3NkiAe-+-ywf=Na2YUaEdKqc
zddG34O(P(nC0=0@^q{rUrBpa{Y<>ZDpl!Zo0<0>hicFe2qC;<i>EAa$fXJK25rbiy
zp>N@5(kzzyOAC}ag9BahPP|XE=z-uYzm5dJ|GSLjIk|^utBSZ&>3cDFUDe#L5}SSd
z^7taZgNmY&4^h%2DayF4#3erJ5AKGSc%u{o5r0v0fxT>GSI>Y^xvN+}shGb$tRt-9
z7BqRU-~c-@k-b6W9TY$Mfz;i3k(99$@5H1=KB(nMa1mP>1p=p&UBvaBT&H%(X<E15
z5h<&{W$~`Pcm%Qs?R0&RKe36~fo}e76M2xIDqRJ4al}5RUBf3X_P^docP5mFZa@={
zlz1NGADCu$py;y)Coc3_n`bUJ@^PIi6?&Ucbk4C2=w`IUI&`z?@u^R-qYv|mOIfYb
z!}z3UV&}{R?TJfx^b;Q%E=jlt`E`ath+Ab0GEgbJc9-QT4KBoG*giB!484${AE-cW
zP2Uw?^#wH4|1N9UOWn6qrCB=Rny*Eg2pBj2B&~DCCFs=UCYB6H{Gxi7)sX?TV=9e7
zh8m>7Wv*-+ioQJVewP(qOu_F%^LYMY8@egaN9|L5*{s|L8FHeSfDo{&JdEdN0V6OK
z`XF>BFR%C{QU)P(SKJTs7R+4`w@bsjtcM2aO(?F#`4u06Wo)O4Bf}M+n(q^zVpQOK
zSsSrW@$lh^%c+7E;DNja9up^aCS+_=_!RH10!kjxd_vI&;^d(512XhR_}yKW3;qOT
zPXQIdhh`xR^+7&qVGD|WqVyo|-Lihg*XO+kyetgef#Qyl_?S+9xaO1iJ^~@AQGSpw
zl}YPNuq^L_(2+I`LWY<<0QWcf>`s;Q<GZZ89wom{6^pzP2wla{Qy-c%Pl;2P6)!@d
z518zr#~^ym_c?R`LdTbQmt{cK4JoBx+JK^Se}0fBz}|!=J_jcM*#a~<0}z6eL@?Z5
zU{L&&jUUEqY|gIu0(1vXTo9v2cc7}@#UIAIzJ%UoWomCisiM2@vf%T#p*q+)d3RZ8
zo*Tvw@>Q+~KE<(W>rh+=nY%1eNe-XlpQiji#nWQfd=BCEC?IMg*L(;uAlN3SSA2z(
z8^CEMjWd^RabYmjrz3Y+@!CHir6t0^GRxR&KI+b12%XzA(5$}=O<ZOLwyK}G$driQ
zWsxg_WFXxIsiiOK+nL~ic*Vz)GYT1M!M)2;&Z7X$WuSIV1#A{U1~zkbff}%Jr4UGJ
zP1=E;>!N}_N}`xf70;hk$1dSaDV-|y^jCanaIbu5T=d_7f!2)#35R&iCkAqvtydaY
zd-+4=LH<WINOvfyIG7eT>8CEJFTrH6JGslEM*`W!{RBwlxAE&_i<Mr5s=6aQj6V@w
zhrV4c1_8rfh2omV3_yk;TMl<wB6VF5f+G`f1KejL_6L{cu`9kFIFJGcp@R^D-c!(L
z3qqqt0ETDfWlU!sM862klWl(%kQ4#9o6u1@Ox{6A>3%wy&rUvVKSUEg8cYyj1Rv9y
zM3x76{{o@OxBi`MAFD<on%F<C`0#%yKFHfNgYoy#0pYNbRt2tORl}xuqhMqw+oX~K
zn0lxMtI+dyuqu3cu6*i(2#s=kkPp%T)4juU6@;Tr5KO4!fgLE-6pmhjw{K^i{^8#%
zKC!!}KBmb1AhEw7ftsBlsF48|{m%doRyxSLA5tI-sjtChEAZ4sG#L9~Jj3JZU6zm1
ziOU0ZW@jBKex4W)7#Kc@I*`)oUJvqyrU{xukUgPr^fhQfOaz!&tJ)ybcVaw1WII8g
zVab9Y!!=(9sGs?D)}`-2JyTCy)Ior;z#PbXx06e~dLzdCHRkyh-}i4$(r%=p$8Znh
zs-(T%&pwVp2o5*+iG64qBJQ%rK!(W*;;uq<NV_2@iLA2kk$rZ^hauPeRi>K0o#2!t
zqy?-f6$BvVNqvpHvPr~W`RtG;+N5+kycas3yuN~-g50c&ICk;xbaoZ&6y|oWFF?$q
z#JM$Z%1a<xi@Z`C63WcA^YnJj7AzK^jPBNSrd2RMR}@t9HX#lore2G;lj)}JQ+aVj
ziEEz1C?oyqnPKa~USj<5TWabxVPxtxU;p^y8gXgY%J}$WT@jh?y2QjlQ@kRoKTJ~6
zKXqf{YqX1~+SoGVYxsnvuS%a#uieARbR#`Y48#gleDS~vI)W8nRPpM{bgQsZuOWcW
zkKEJ-4zcmaNI)7j?1u_|pbvwDdW|V8-cG|ez9vEOMf~-3LGrG;;tOXsneIo5#6ae_
zPSa9alpPjqL0J+sQ_8m?J)S98^p6<wkhNj~&Tc+rqO}+H@s;F0IjXhKy(NYuuOgWy
zb6W~LUy!C(e#(nr`f1m-HK~H%|M9zBF|w-pltRUCVuz?edPeshi(Q=exiS&zmIW-Z
zl4*h7hU`yhQ*7sVSNKAih^kq7DE0V6d}kJM?`QFd#%V+1G<wF?3=?PZvU;=X<hG!J
z?|(%Y?={EAl?o-WEEdmD^w)gHpZO9nx+7fhP#9>P+jV_FnaSS}K_dSUA+H>Ah*Pxp
zs~pjlcj)86bchriNxx4*%$g9MF}YlrWBj+j;#px$q)b`H6<?ngQOd9ZGE?H(J@aUJ
z*2eFDNS?{h*wZ=-jO&GIcTY+8GihN4Ey3{){p{OPOlO>t?r%-g%}<EDVEHafLvTQi
z*yB!m$7I{Q@k#r=5G4~OE2Qa_0=06DNTf?9@zBJy{_Ay&*b~S6Kdmo%f9+LcML`uq
zY`jS3>!EMdmu0+BcYlxta|^}zO;8P&jjVncu;$6kIhYWs?|OQN-g`yDNV&1IZsZ*a
zrOEuBa7@%iKT?C){rlDOXG|wzV$qo0#uMiL^bKy8w$3jTqqsKvorIsmSj{Yaa5y|;
z2`gM5)h({DIewlzSkKxaaTu@P|0-SUnN`GxLPRh~^MVm?97Yq+{_F}_Bnpo-^?JxR
zj!lqn7_qlA3Z|0U_B_N8g_VD4C73?szDG$H#Gii6?L{M(gS980`M{OFg0lCU+Y4U~
z>VHlq50RUxJi(mzRhUNowQ=a69s32#dW$5}LcG7&tc<icJ@yN;-0R-b%E2pkx!2vL
zuLrMO(s}(=Oer@6)6=7{RvU({(B-lsu_9Mz@7bNyJfA2qZ`840^j~!uWZn?V>Ee^7
z=1BDKnD4**(^JYkIeYk%%P*37dN$+>9rwi(x!-uCW|I9WX6qeST|9%Xv2RF1vDnwY
zdW05r1gl)_c6?BYS;ZA>eatN_wnHWTtzov$lerWeSv@^_#@+CmK>uqgq!;Op-FK3r
zQX$jMKdUHy_51g3uFdaaNkew@UB!LO67Qm#^HKKgA!h_ah9Lzsg9<eKw=s)9_QH;q
z??f5yBzFcU(Mu0${z$oL>@1JsetAfI&Ew=={B-1oZ5}UvVdS3wfY=jh$sL7-p^X|X
zg-(XZvZKL0OaT;?i1W0UGQEv_^EaP!==}=UR5D|pcWdoD&q?XwfWFzbZ<cwef=_;T
zZ;HEp(yMhp;<J-6m_4*~knWlN(UQ!=uixs(xu0;f+ooUrv{y^a>T`mdVI>UK3Tybw
zrSpbQJp1E;Fvp)7)Px`1wo`s+oE>gBI)y3T-*HcHznw@L7A3#_rFbXHF6T}%jTP@$
z;p0PU)y+QUH<!#hOxU1Rres8Caoy6mt?>l1li{5g_hR_%2D8@w66>kT9~@T>UE%)6
zxm^ltFVy+<PK&~W;ZG^Sc|Hq<Ik>sZD2liSlb?Hj2jZZSq;*jejJPT}cn9fnq-+R{
z#H_u1|DnY3dc~+kNlTSo+1r^QuMe-5&^>TA&G5V-4Aq0VBSuE$W=Wi0t~w#HgEOv(
zZ<xKXT23{-Ag%}y&?D8ZqrLgCr^EA$yam)hum@Z7a$AIW5N4!n$66C<^b<Z5W|FY6
zM)zkj*(;HChH$+x;;dg3b;7mz&^PLa-l!q`@^-`<Z}zy^@}vLon&BA^mp~-5B$9`_
zFK&ZT^XJ^JpDl5+MH)|>DcvR!v!Arm6Q`yTN%ZsW?nkYk3lMYYy^o5!Qnbm`s^WT~
z7(#OCvuUy{Z2gVfO##9so1OWJYq|}wE;?$>!`^sVyc*?Y1Lii(P-{?R23;%r(WB(J
zD@{YvfV4Op!>VrmlZ;pQcTI{`^hb}0<IPD+^uN(oznjma%VAw^ZpTn;2+THHeWv*n
z`nv&7zuksS=E(1;QrpeWBD}71f!2?_##W(OZSC`2P82+P&mm!1g2%FJ&hr5BZyLX=
z7W=s(hdqwt+wHO716Db`W@?VeWv_;h?p$p)aakXTwA<WIlD3}rQ1p266@0Pvi715n
zvok&XdVBw*;6zDicsfRykn8YWvNz`R72z4T>|+sO@yW#nN^<`KzExMsPnxtJZxB5f
zJ;Dk0L*evqvQ2^+d!M9qLRm(bEPjmLG1Z-`pxNxQjoOE5*{O66ysew{C%W}AX$jY|
zbIAFee8A56d(BX)s3};z$Lc|W5&{1QM^*w_K+A^fy4UX#|2^w!a!MKN$382|omFOr
zQvM;C;e1|~8IwCwO2l8>eDf1&!y;#8j;>G4MBI6U`7SS}8J$Z{{Nvh~P!bni{jY9^
z^rxhQTnc8sW}hs~mJD3VZHzt8qWod??iok=6ca1U<!!0z^%f<iy@-lmx2OC%W%*6Y
z#_zT^5zcJ6)EbxQ3nX13so94(Tm<UljDrWkQ)GAS#ePzp(qz=-m$ljtDipWBsSL~E
zS5&8kg^llc3>K)R1Moh-VtzB)X;_W9#l1=35(`=Um>e#b;_>jLvreh!cJ6Mx-#!@S
zn2)Go^y{_@=l)f9&sA0w9>2^Fs8z)#Tps8z6J_ZKm2HuTGd?0qSI_65O-nGK7iu+&
zloifP<X=M8S@%ue4|U6ha~w6_&D+$-D{q?rRM#kgCCeDpzD|Dc0~#{IM<`A}5pc-Z
z1+}uGvvWoDHvJkmP=1{i^~PYO3>1~&&SgNowWxUnp#0_L3J2KVf9k#s%6xrHXJX{=
zgbE1SfxjaMHnhMMScGQ{e5LX>-MGtDS$E-N!X|qGOi8#522}W`xiGtA5AlKEmj;+Y
zr+h?}q5;%ECnNWWr>Vyz9nkSwBy<33<w$=j3nbb|oWbl>_*96mnHE*m)g|p45$K1q
z10-+zv3Ax?F}i&Q>>)_-z(~C$Z4je#JjB+!aY-M8%n_*7AI37nwnZY^BEv|cx3CL6
zs24A50PwV_Gd29(k+2fpM&-c|L;C(^Ss291g!jf0xVXW}p$vl0qz}I{y-ld`7SR|O
zGcwx+#^_xIA|g;GX7R}vvN#y@OwFpbf9<I&LPXU&<qy|3Mv@V9%LqFW7Cf;tg#Q6k
z%ZxT)U@Fw=!+*e3;3^DE1>V8HR2R;o|A47bt5E=^f*8TTRA9^hJD3Vt<c5K%E}YT-
zCzuL2{~MT!Q+x6cm<qLO`=7v67tSgGrUIw_0aGE1t}rkaDE<dbg<9Rgz*MM}4ggaD
z%|BpjXWbVVm<oLO2TTRQ`3FqxtULJ!Om*R0fq|*O5Ez&WT47)+Ao^cmDyYD~RFD-g
zFcqZnKVT|ku^E7=uo?_Z1?d3;Q-Q93z*HAb8vv#PvtVGVN8QPPz*MN!G5}KnH4IDz
z{V*^U$cKTcz}{c9OdQLLbH7EHbd#^|Hx~%8Wn!{-vw5a4J8eR8^3x}#X@-8H+lF}F
zI-DD@hPzXz3We$hpxK3!qcBNJuuo5}OZm%A<B}Y{HZ+ZHtS4R>p3~N{_B41cieZG-
zb4J-Rv`jp$Ua*S7@of^B+4?gbF`>-?_B7aqc<22(dw3<n@UNAoc0y3`%*k$*rCB7U
zZ|}gwlGf?0Ac=ru64uG^UQSx-8)ozRU_1@gC+LUyHFd!uJBtc*!S78>qUAT^8uJiW
zV*0-}*`o9ald;~S@Jw^EUg@HDc)PkXVHsrhY@8Xjgbf)vG>=kh`QSM{E@E-~_MJpL
z{guh7eio<Ynruth{QlT9>sKzr3}>)p6%@iP3K_j<BDb#HWPasA-mm-QXISZ%Pn!LI
zWoq76cS0KuR@=|khQh8XuX$t~^5o|I+3fGDqKqif0$Yg8Rm@$LzECr5vfw%fw);&M
zZD8NLXz`vXV$ht)>8&)=iJ3I9?t+@t?>UX$8~q{4KN@`c@SV&4ZqVc~w-LeGJygUy
zf}Be^v=QO<2|ka~PD-!}M%)I?iH|nLfa!_PSnTgnMJVLU-<a0LsUlo98cvGynqN#V
z##6}_+f}_sau{#Fy`b@aU*mzXBWK&TU#5}ANR(zfBkAgQO1UgH3HhTtt^BG;(gw9F
z!_~Hm-P~sR5ND-Xl*`%??w5>#Gk=iBUxvx=XT{q?%tH-_h?%clspiMFcaA@;&KM!N
znPa?u&{W?JY8HVm3VWR2=$egaq~04^K~Ck8xu1m5d^CioN%tOo!A7JxFMw=)FNsTj
z^{Q#sxXFUoh87<4!E|h?a>9_oGt#HB6yl8b@HA(7w$VDp0Nzt(W~8y5;1MgQ)<?e)
zL-hHYO0s6FfXk~1NAX8V+eyO4$^o*g#OlhGzY4G5b82ssZAOG0sc`Kcr>)Vhe6A9q
zI<1u$y}IO8Q&l1glpk9<^d7Kc+MNToCumQ3H&&I-x{o;6{&KgGL<kPNET_dtkld*X
z4)8c3^|3=sI6E6Knb@7YSxh^@&R9muWJ9AD3Vs|{-nxCjh!HNfGuY->1HZnIw4CJA
zdnC<Nw>s9*J4LC~YjTOy>k3>GZ&*Fx2g{ks=TtX`HI_43wBR&-Etb(cWuDPH2f&<y
z*gZ;$9+>9Ch;8yPCY*ZBCDuLq_=3db;gJDC88JRVQ##yEY~oFa#`Z|)A5EX@>4S&Z
zZHkg<XJD{xmr8mrvPI_ZQ=Rj-dlZThy7DMaVDgX(l<vguw#(%=Fp#r*A_S@?oUssK
zx94<spvs?<L?fz6<zM3E?+Q@lUv4S>k-n48tEY0u3M%Rmht81aU+!T~-PXT#*EgSH
z;Vm$=$ZeTY_tc0wFHd2={T6xiD|95HF~)gjkoR7Fr?|lAQ=W80T=ch#5nd^?%Ye+7
zAol)o%8q*6y;r~FMz>fLHHaqhZlqDqC|(=gk5vDa+pLG}AbS@W!FG_rpW6g@M5Em(
zN$QfkU>6xW2t<KDx5FJH!7g&_Yr_JgKf)IcN{_VH5Q^Ro`NVlNBoX(uXvvK?tS#on
z8R?Sl0{!svqZyh@So-Wfd2z(j`m-Ix-tK#0OEYeC;Y%8!`G4`UO9YIASllyBTl(bL
z<!2v6up5xxm+-b5To|~h@w_DoS$>ggL>1?bJpCc(o7BC)%hAS(j|k%XIb`Fe6`~Xu
zmmj4Vl^@}ER>k*)dNz3CZcMqqQz>`K(}5qOawpS=0zGF}ii?B6MLS+lv_n$LCHB31
znxzDO&`Ruw(dZPcFt^1@wa1`7FTI3Akl61r$dqcwqL(jN8NjDghMFpd&W^}8NVP{Q
zN6aEA0)o%=Z<R^)(#e!3<Y<zl1Qx#ch0o$ANRTTtH@Q5IyP51k1CmbGC@z-UFz`#U
z>e)UNWHVI0igPFJ2$gDQUqgs<A1Z!Xnj#DbZuEr<^hAS0XK!hPq}u<ehR!-*gBvI#
znKCqBmg0imN3kF~LkwtbL1Yl$-_m>ovj$M0KNsJBc8y1I;kR8XzF(LmNUO|@p#zAC
zQoAWG1Qn^3nO)VujWC@usbfg!EdJ9|ii;q-HYu;?cq(x>eGEku7ZDmCB=#dpQp0DN
z_1@u?>bDuvE9;B*sTO#jgqKR)uLDANn_4Cc<!aF~@qM&)*SMQ*Vfg|*1l91_a$lJ^
zcRWQP9T6R;6sr%YVAd0)QSNkI%LF<YU4Ue>dIn`u)FknJu`h6OHxjYgQeHoQ(t~Oq
zFoTws_FtVn2WnxnA^CH_S=V>KsBI8F<_<ymf{v?UZotMC1{!-1;%;VkxiktM*jq<|
zsqC^!6c@$%;k3&7p596Y-cz2%)XF~Fg@CqLKbltA=jK`>&V6eb7kGrs7&eQ~#QmY5
zL$L}Qj88)n7!?GNLTZDc+9jz;t~_C_&;#Ph)mtki@Yp5}f@kFi8Uj2D6~V9((koBA
zc5jyQ!p6ldP03y>5#PT~W~NY{xJZ-%0sqw}zMrJ1S&;3aUS9&z>gCH)4PjC7eF0;@
zQp2KIAowx#tuixNBE>}>vR=W;Gd%24{B$A;W#$x|H_BMeAAK~iP+sqo5chvCvPtC~
zyqlli57!DjhcJZ<^lRSDtpq-DFQi>z1-8f9mN@>LSdNB97|eAV4{*+Y5^QC^DAv01
zIB!AtOS#nX&2JgyMWdl$<LosTt?z9Z<BnIRdu8(uh5y;0r$4V11nw@7Ojamnl%|vo
zCqzTk%P3`g$3(akB~5{mG2qQYpMYj?*mY3Y^UN*tea$Gt{SB7Ry4k=D^_IBn?rAl<
zNcYdL>E)MSuQv|<#3gM)INr5;d>FqkVNcqt{lsn4eepR2|IJPajZ~9a`RI-j_UN(3
z%TeL1z<ez8gW63m6Wrf@d}lLXrTEH&Ti;G_c-q@@hty*n7_4qgZU1r`V2Evu<GHcj
zLF41h87Q>YYi)?`_4)QQ+al8(SLVCjg<S8KW9Jn=*<XFcA*qxC%bdPk*J4t?bY)5?
zLqgsw$kkB>xss$rDii5zVb(EdHAUF2B2P!xARfKYiq^hV+WratsXIIZor}GJx1)`T
zfvXjwv1h$PZ|;%n`NRTkT(bzeE6uY95tK|J&W)#!QE)yzzOwflga{AM4x^SxPoA`X
zA<k$gD>PN7s7DXouIDmYZCWcozFJtHsQnds_%^le*nZEx#w+;eczJ*0<@$N$m5M_o
z-eNQ1qo!bFdFDvW3~w=VQ-0Rx6K1`vq;k90Mgv7(OyvtddDg?J(qO_*w@L>zXh!Oa
zEG@__HTl<<XVhCFm@9CZPYi2neX?DD<`kR$UQ2)RG3Z8J#7X0uddIjWe7%bkj<Xjj
zDMDMIR=WdU4Hlfib9tRWoSa^L!EhnVzZ<>jN_VD=iB9+oBe%6HjP=^uTgmCtWQj60
z%19?E?I`N|3@0f#S1MSAD<Peps4o<6NRLw>t5{{%q#Y_m9g$c#f?D&EkT)U-UgJXi
z?q-3L0onX@lO?Ks1bt|wU;S|XgzZNISo_Jb3%b+=#)frJ+bv!{eIWcw^ytMCh$SEu
z+|^xt319IpES;FAkM+-a5oTL|BFn(b@pn&oWYV6YU}k=e<gwZoo{;#Y3cVYM*;n<p
zIf|65kItI2d3Eq9=(s37$_ZCb`mxirtH%|?>2HV2gkYOk%(CJa$`9}d49$oAb}JYp
zk{EG5@^^8)NpX|KmwhQ>_2E1i&l}=?y|&Xdv9W1;F0rDInr1D<kvE7WMQ=2|g&)21
zMrl)Dsufe?1a}nGY|YgMRbu5OV+h4Yk4j4r<#Cx{{B&6tg-fIJubtyS>Cx%NHG*d1
z>77Kf`Ud#*!dx${Gz`X85~3=&^-PUAR+8R9l`EAZ3^TcsJF(F_Im0EQm~5-OVAjJ=
z#w3sJRJFdt6g2zikEJ)^!JX{8j|t@Zjo^BZx>uro0-;t|LqHXrdZ72PdigVBAokYB
z(aRX+hR&bI+xC=Ha9}N5i1SzT*66ldgX@KboJcH<AWQ6<_gc%ba7)&^1DjGl=P^Rc
zt$f_^IhkV<V>wf69axw#FB3AdUKg<qg$slX^8Q71E_oZ@@Q6)Zta5@SG!DMA{B0^N
z%Het_Esl+Ml+kMP^c}C65XD#C$O94r!EB;8acprP#uQdRos?npF@N~rQPuh5NgXv4
zVpwQOY2!^sZ1w;bat|8qQjNjumioX-U-wT4=M=_Yt;?6lGO>y!Y5M!Sz$d$#-_=c>
zj5a8?+D}D3$A3)+{+l-joe8IV_53l$$GM9425@LmX;Fd|i`Bs&2M_FWBp$Wdgr1b^
z`^SLR{KZF<cXcT5OgL{CEt+0<k6NAoN<VwsJNm{9+$u3vZNzKPT%|7V&S<?2s`QX)
z1Gg?_bII!6b(7vHTCxo<)Bqj9*bQq~8lzJ0sAT8+c7g>4*o{KF(`ZEggvI#HtKQM%
zL15($t#ibI=oG0LUevqLG)9Bxo>Qb2i*-iWY}(z1CSQf7S@FA+{Da^j5<VXo?-gnA
z*@*7L)CHbXzN-ty1^4xh+a{l^npVX8KjOWs`y38zF=fAPQhFujBDh>l4W$-4NV?Nx
zyta73W(m_bVLtVptZWYEXYOLkDwEU|Xk<1YvXqX~16GSzgj3xC8Dg_VlmW?j_q8wO
zx+b3O=f{{&-8wGGgvLe*RwW4&rtE5EPY!nquh$OUc`D1sp2)+*6qhgtd`BMFoZ%HI
zx<?vxqp+b#?s9DKiF)iB@N?is%w0wK5RF$v`)u(&+3_!hlxZF#txs%~meNU3YM&5c
z2a%Qh-X+81Nip<Hj!Id>8sTqUn(a<|meS@6tDVx^E8$qQyIvQ6d)eMauV_F^t~eB+
z<u3g~WHYz>-$zWORx2?29^N9hrK)+ZR(Ma@)7H~tbC>JuU>2$k`PI2|)yaY@R^4}S
zWqxN|fxPx4s+}55_c?i7?YAcNghkN}6C>Mlzh_hJzjcJhzGR)rKWp83@<6m_(ti;4
zu3Oa7sEPL$c^mGI%TkMFT+J}B@|*YKC33;L?c0yEm0w6s)TEy`_S+aX8i=R7kl9SN
zevyiAV0q50zn?KEZSx2Gl^a<3F1B66i1YG}4YAJdMvacrDvEqQ${t9XaFPPd55ez0
zhrBYdBrX9P3qmr2-Sbzi7(1~{l0Wx71Fd^wYB-3verRG7{AsN>az#$#n%C&wpytI*
zE{glcB4t&nR$eIh6t4E|-F$1B`$+Kj?}#D6eC{ELOd^dOgwh>I_;I_L@Iwp?q(h=F
zsI|=9Ba0aM-M=d0q%07|^mc74yZ19#F&-(o_p9vbJ0xbGu<M4sDl~12r_z;~a7}uq
zc_RIkZ8oef;kWp6Wk-ITc6<^Kf68fuVDN^eKqD%;_#<*3meLF-%kw=~T+-sA-(P;R
zG`lFb_I6>Guguv*u}FH>*skMP?rc=W!QZ|)(!r?9)k6L&r)p`8TORZY(raJ29>)FQ
z&U6rR>k5zYSFU1~UY}|lym-KDhs{;QH6;^KnjGMT^WA*g;@wZKsdDO^wUa6@McK~Y
z#TLLW!gxy^;3A@GyN)_F?C*sW^2~(rPsS@OUa1;e!+74ZyHAk#L$w;^M2t(v^R9@V
z`Q#r=o?-ike~5PTs`(o~<|q^$(fXC9W=wp~jGo7j|7@CovLq_c_R(l)f~}HSIi!zA
zxBy8!uL3FlGjqrm6<kF=+l(<mLr3CUTVJH_VImYMh5}L|PAJU3#Aa)GMI0R}nP-fj
zv5FE|-@l)}vwrFV7e$W&|4tjc`MLFFf)v@X(ZaQpH*`^JoW+mKq&(SeR%BHDwZ7{|
z?79a3_jLZLl}Y?$?4Vx_xgS*K_{~npOe`^Cm?=Qph-oZnyUA5iG8MzdLpN-kr&G)m
z8J*V@VJGdis$^D8$2YLB#x6=A?zOVUb#F=qtSVnL3qave(~bam84)lQp7&aDoVq$;
z*UeFlYJ;LdZAxAZ6mqoI;J@2i@?kM!_gWnye{k)Lt$QZeXJv)y8%Snykm)N#6$-wr
z<f|(8?aVb1x7R9*)KLa#M|diZYS`#}x)KYhL`iUgUCyQVhCn{WXx=1nQq8OeP&Xi$
zra`T+cnd)bCGrU{Mqa|3E_89J(kvU;dx%nTZn*nx4(}B=id`HF%Nmf}$FGQK*w{*4
z4f-#Reg7ZA-ZG%7plutaJEcXsK|nydq(nfvTUtWclx$kMTRH{llI~Wz8>AcQZaBm9
zeDC?*^XvRsv+kKYuDNIS1{U{R>m6`e?7#vnTRY$J2G9Lt4|nuSDs7QcUkEPod43l8
zp9hjZvYBngr(2)phd*lJ_Q;_{P?kz8LQn*%uku{}S@=d99V|&=VT=P#mGccXA1}{j
zqcI01x^b;R9ugApZ^Zou<bX^C9v-X?+p7XJk{T?cb{27|(ir1@7g8>rkE?8ahH3+-
zL?c?t5%i-ca7t_$GXg3w48Sj581?R{m)Z5~b8^PulmOC{*Dx;t(n2_;$E<wxDHdc7
zT`t7Y4v=jPOvBf~b8fD<H)>pthfe<-ksTkMm>s!T@nib1jcX$b;I9Cl_53M2)7VVD
zQZ^cG1;QA!F_7uW<nNskb1VuBZ4`&rEtSC@Qow8Z?eh0-vZ3OUpRW!J3>@ii8g30q
zD><1!@M5%_24LnKMo<El%fOH?5p1c(#`gJtNF2IPYB00_`b<GgDA2(Sji>}Grq5!d
zs1D{pO2GTu1E=bO{=_u|tVE0UJX|pVRabB++Yhu$h15tuuRNa<*i09o)QfqC%*TT7
zIk)Mvr*Oc*g}7oLXfQix2|;LE44+dV$#+&|`+{}|gOvQY&7xMJFC%c8%J&m|IvTar
zi7B#eT2$48zd;lIQ2?|${CD+0yYv+!*oAI&lX_AhSjH#*B7lG=v}!eX+;Fd1`a#Zl
z?})_l4$VK|f`Xr0lp{9vocy-+d&NrMUgZOxBYKZR-1!Y_{|g#s6WAd?vU4m%jUSP)
zlb;^A<6i27C}k6^g_N|J$$D!eV@JBvZ%Ieznyo7}#D6k#bC#;yV6wCH4Ww;?9oBd|
zkU_;Y-1UQGBv(~4)NymsVzmA@v9pDT%hhiuuM`wR<2td$ffs6Mc$$3{JXN_l8->+-
z1gAQaO`KFgGP?FU|Ex^US(<ueO|7>yI|Y$<PAgY^e%L<!2oC$w!+X~>MriH+<sbO<
zeP(QXMbJtnmvM|IafEenQ0(;;PMNSGO>1dYp{VZz9{QU|Ki6BfNvkq_)w-7gE#9`~
z2v=XP27AYDY@uVu>8hz7ZHS9<y?DE%N_z`Bmme}9DhjHwDr@}Z3BoD){fW~zZx^#{
z@nT%7*s>1hqlwdohBo`c6s;L*zM$>G3WeQTtB#s8@6AemhrOCE(?PfYiTYX8di32F
zO9t16H!x0tXI^s1g*k7>T#Vg}-8_Q*aaaD{&!18`G%Iy~@?z$7H#Ns{ITW!PS$VHe
zFSTFpyuxir2Hw()l+)J!Nt<Z8tP#o`zQ-ig7<igh0$)RqkB<tK71gLCvM6Jt=WKmV
zFxHD|sAuY-ozh7I|L~<t|9VZ)P%fb^wl0<%z2T%*WR{@zMJzVi5>~D)o1Ko|sKYYH
zLRGnY0eUSF^hI6QUSk<N-ozW$?N!#%;}h1dh%TBgJd?Ak8{F!Rl75PE4U;Y5LAO93
z^o7>loCz+5yqI(vdAja|8`TM#)@^dPL4+lq<kZZgK_BuZCR1MPv|<KcUT<37khG8f
zRhPriOZL;tgp-gykL6XC)zY{#m3FRZih+^MeCgBPITB2basRYEDXwN%35ED!5@e$H
zBx!?2+n&u;>$C>^d5&?{Z&S^;i_WOAcldc4-c;0~^9Px<#$SeSH>Nr|JIhbJSoCu2
z$7~g8{^pv|RcQe+!pdaqz2QG19&EcOE`fn^YqwjB;yakjuO1iJC;uTqHkUqb492#s
zyqG0E6yGQbA%d)X-QyfF^box^k;;BYq8oFj-X{vRa-(vo<P{b1({20Ka}3IRVb}v1
z6dQ7%bR4kQUJ35sHp=oFK2fH+mR(sc4ZN(eFyCTyxCEuXU*WFSDQWbj6eJo(2ON9O
z99z%UH;t`t&3DcE<|_Ri_vw}KGmb=-c%e47w&rQCTx!UACGz@+4f28<jyadKSE%aO
z-$xD(ee9ZAx-km2z>e^86d<c<TjztI3i1ZjuXe_EX{s%Fv-`hui)39XPH|L@J^KAh
zgp|Sk6kXc<{p$9|>w+Vhe${*i-gMHS*mN|iy^Wtu=6npyzaJMRsO4kMoI5fy2iF6_
z(p#PC?E|b;Uv0g!HTFphsTw6=a3$KeSy6%FXR4LGt~g5y-{IrubPYGCB{r2v$^3#>
zbu+E{CUmBM>yU&`+nYJ{ucb%8gmNFn{UCk|%v$ZJ^G*k|2*o0ylf2?<=+Ngu$hYBz
z`_A@?UFAwhbHdfHrH;);xef`E!kJZz56JX{k>_g%BpLWwbskoq^US_}b?~*VJGLd{
zFYncet;uZd`#ZB35o=aB^vUNhF|<(hO?`eYsojs*%}F*^1jYu*>Mo}6SRM<6FhRlC
z$YA<nSXp|077o{Iw54@6IL73)!NY%l{TPmwd*im!4oq5OZ7NlEKa2M<=bEs{nrm6S
zn;iP(tuEGQV^)0hnS^57bE+9zu=i$+vvP%OQU&eU4Vf;nkL+74cN!`iev{=smn>W2
zD|d5xu{~~WmbpdkZ?Vp4`F5N~H6{U{k9w{Ut{cN+S#A!$rBlk5#md{P(P^FuPl^WX
z_OTuGaeMHdV^`)v;W9P)YAVs~SQl(AvdgU-y<e~=<9vd?+O|=0V`6u8NZ+x^9EhkJ
z85+#q(9X_rHg>E2vPvskMszT0eZxPiJd(44WRHKs&*hugzCgT`owd=ORpkj6wN7u|
zGhKUGar3|x*OO(G>I!uyZ4D#$QC${3h|`6(L49O+WUFLcS!H-m7@LpVsXAM!8`S$1
z*m3*5G?OTzc&MUGc=<Hcp*N^$MsHxPVzh@9xxBSN|6*x<l$M;@2(^9bo<fJ6@$VY#
z7bFznn0`cg!@9>ki^PL?TUNv)SoPX?*3HHU_GmeF8*wqnLdW75CzIVZ@RWflcpZ*^
zAm+YTd2No#wb3!i=tq+h=LD{U?k~Avf4lP!maMTR5CoTTQ)?_2qvDNuVO~d@1XHUx
zVaVw={hvoGO&|LAl1kE9s`*5ck``G<^cGu^y|(I6!O_B0i%i*#lQ~qrY|Nu$)ThSI
z`C(ay;;PdAm;N7VaHmLlvZ+hhO`W9F+WZAR%!uJuYr?En%{o^F*u6XMa;4d#z`t+W
zrhhN>6ulz)2C6*p%3zG%@{^}Srq*5IO~5_=#s0Riehy@y5@NM{{@tBUi1PYJm9)V2
z>ERZZMvPx4nh-}N#D-0Dzq~53V1aBx+T(XFGlF&)dk%SJ4av)$>?63?#C*V@;GXz;
zQA)EU?l3!7a0ksTQNO7TRD2MjB=)wr2M}^xrbXB-U14LooS$Rsi?_vM#v?5^rYQN}
zw_!@HKKXq4!0^PILwt{|BXI03NTu&%SL!DL-%DLv*72C|qgI$vA(Vo6hx8pP9IV35
zi|at$iK%fxe_5(k;Y!M6!TClvoknH;!WP^)1fMp(bM&SAQTD$|h(2#~@VVdSyyaLi
zW+_DUE~c&#yLU!v?MRLCT$Er$M@5+{3uO0WO($c8hi6U9%H5dVxib41-4W??897|G
z6!}#RKJd_sZ+P>35BAzX?l$0GXt_BnrCGVXu9ymVH%iFFKJ~-c;!LQ{2lPNB0Ub9b
zmInp$$t<4bu`!W_88>C=zc^MdxUGd<to__hv3@&}O?^+ak8aqzfswG#Fc`&YOJ{v&
zn}yGE20ALzN*i=!l~iKxa8tM|bns;9C<jF}L1A}hqC)EpXtDZ>i)2kFSuN);68~9}
zG!xT&E<Bz@#o%KSLMBNQ4j9iYUp+)zXi>Ob(An+tYcf<YRO?yxCQHo-WJUZNnVXrI
z4%HO%blQ&bx<h-+Kw2*8z#BgQ-Jcczg=E5T#nXVLOz)58B(G!!Pd;{8OlIQB1Qha_
zS9W>89qA+kQ{(4(M@@&DpwW*Hb#DuFepfyuxO7U$)<2|5?>5cIOik=;NB-dX?zQq-
zYGNe<QC6{RJIc(wyS#Uvav_vFGie07(++$53W9Z85^^<cr)F*~z8htOHWIX$%Hv4#
zLvGRj!EZlnZgxmgV4^n)cd2-7dfiJ8W;th2+6($d2#R5-u&vO6dANYzP$jv`lA?0w
zAt{)Vh&K8QW<KbsVgAenYPV~UO8*JQ!B_?l{CBxQISDGROaoVBjmE2?ZesAQ<`rpr
zl5$5k;_PF{Sn~@Ws&=>296bIcOXeMAqzj6lv3Df(6YVB{e=naYepGNcJ3661@#)}e
zuH8-7P9pBwzDcb;jpK2#+DZ}~@%nS8bJ7okEt&P{d#e%YHe5}4!mcu-1MSh_%7phC
zm1kA-B1?mdpr}3l*0GJio1mkATc3BM&JH~tA)1ln!h+WlX~_do>n)?_JEMBGZsg?K
zxuQMrfswCL1%%R5llJ)<-bf!_E6<ChmJ_&~6bkEq@odqbpo#10_4n+WGgfS{(^I--
zXzp<rN5+0Srph_bFkh8nyOGChouFdbJ%SnzfS<jvzZ;RFUg=U|n~mFv^msdAxr}!5
ztKBfP;xU|kX^5e5RdbEcd&B#q-wZckku0Vk8EPlGB)WOh@J29MP-^K)T|+u|aLH3=
zvt<ADsEehI<z{wG$u;hduNm9Wa8ZAh&^uA>=7D$)sSn03Rqdt({S)2#0sbMUS|O=%
z#Nw}Jb@KQUeP~c0StozqMxM*VT_bq6Ybnxb5YnL-S@n0y#(=Vt5SA9(EsDa$YSNzT
zpq0_XkX@76W*_gy7H?|rPS*W+E94A>qg4v)uBxz(WRvz$Rab@N4dVWxh;4iA%<p7x
zk#%X9>yAgNSE;9vaf{(g3r?pUY!54|U^97p7(N|pU^d{vDE>1+=W?Plp;_!z3>Ylf
zQV75);AP@;jY!4cSTrMtY|MS$GP&2oPnTy@eW~i!bn;&GtQvQ#i==!#A1RHiAs~i^
zk;_u%Va@gjm-GDx3I1z(2%*_w+)(wDCM~|X-hs3%ouK7z`lc8Q(vw$+9^DNAy(=MC
z6es;tNh^H0p=0%-3<G2#?aFl(^{GO8^u@+Pj!dD#)tuE<TxE~vujH{m$QP8!AJE-(
z0~R_DlkLB|vOg^>wyfI>8I6<|=37DQ^NU;Dp~glwP^-s{$&F*edqo|a%C^C1-AXtu
zyHGR3tl7gdje2@)^8MZSb8YIjmpVR}2cE+EWrx%)A{N}NFuRBZwKfu?J}z86lq?3k
z-62jUmq)9V-^rpF!|3f{=GMou@XFukeB0?8%HCfT`$lyCj;D7niTqvl>(_(wuS5bh
z^Y)v3m$35ql50$0DTE@$<^+AQpyuM7rQC2LUn}U?`DaJI{ZL#clC14GoQ;U;H6I+c
zrTIZLN9qUDTv9>B0-kQXCl}4yS2tpNnsT`OLm8;2-nRi>S!ll`JQ-o<5xio2iM90^
zIcoOv*G6*}dPaZYgH47mf{>5JE57+u=VZ!WlR=xrgI^Xh0s`h>p>!CITfs^~(4fFu
z;UnJMk^?`_Lvrf7`m{Kggv4Nyxwn?7$!Si=ul1=fl4n-JB!uJ{-J>>6^OjRoa^Wo+
zbWR~>H~9|q0(yO%H@(eyU)a{0JbpRjkoz8y?tDEGEM|`c=Zax=Y_GNV2T=}_{vCqj
z6fRc?3r!a0Q5)MHlI4}YVico9B}Q;d-Sv-;-`chdjuuIeJIn40+?Nf7agMQv!&z5Y
zR^gTma{hIEYx?3e&hE*$6Zn^iZ(?<dt%as!iRj%}qJ!(vRMXvXp_@13`FOJB(UjT+
zEK-i3-Kp;!*)IuW)V0rB2>E=mL5P`eLTP;E$UDZ~{aD!9{G$>OLyG5dUl759)p<pZ
z+q?!<KoK$eRfex0>Lc)SN27c}X6a8x6m(IC#(zPHMQ>F3;-MKC?JU(~FBaY4gE~b_
zsh@vnr@OB9gHs7*7JS_WhgVM!Z@TnKAJ^z(*1yz29HNaoyd!`6b9nV4L-T-}6s3!<
zAH$^uw|ZXI!FDo@$ENg(a64yZ{}koCJO+G^e6)l1_r#~v*B-h)XGFX#@<KeC<K^`!
zqM^(F(<Wc^2rb;PLeyb_+)EumTs)@OS+L1r=4REsOZ5b7*>&>VdSXA(zZ(q)$A3D{
z0+UUyIkojIk#RRNTt*P|-WOY--JT?Q_`!ZEldw2U?jUOa_eDV`O?a|7ZW*(Q1<OD#
z7L98oTl(Z374OG_TQtOWVfd8}3i1bW92*4!hy;N*69T0oa<OQ#0fP8ON8kGVziwH?
zuQ-=>*DnkoMwr<bvoJD}z6s|48z}xBFF!bHc|uZ?S{ra_#So@$Z-^eC$E09-GxgCm
zo{#C>Y<7Sm6lQEj*#z&KyIF$nUpRuuk(j^N|Mn{T%VJX0bzAt*x(|q?R*!`qk5#Z3
z>+Z|ULRCJ=BG0S;$+(>`^f)4Y^>5FI!nHljuU1&Ug)H&%;_LoiK&Gctb<RJ(fr$=>
zfYuh1hHP^z*dD0Mfiba%2Swp}knXI9P`xiHQOB9!W2rc4>qK%INf3AZa8}$sDMCHA
zL%E&eX=LPX42hO;;e_sixhA4uQE7Qym33B7>xs{mrbJ@azimx>Pp408yn?CQWwzcM
z%bNRn18`v@#pGJ7`kf15Gw-~<3vv9}evNH^6tNgoBG*<{*z9_Ab2zRj=?|aFPH~HT
zd%L>WJ6@G-w1jnfYP!pi^Vmhve6!OPVbI-~*PQuSFY3c!gIW-1Ac22ad+F0kuBJ-3
zb!10EoNWWoy=j#6BjFKCt%`Qg^HY{}K~8yHsUOcDtgeHjy`>pHbcaqD;d*~h;d7#w
z@CEcFfqVOhdq-^uQ)>Pc)tVoeF}jw7F0U{#exx{kmbo5|qhyvC*rhy53DUj7#Og|n
z^dW@iYDs9$<KJVsz+}iadc5h?d3@Z^MaBiiYsXuAr`X@4DWZQ$V_ijkblT4EA&Sh}
zd=d{A2u0}EdMvM4tPdvsuF5SU#49qJkV;B6@5_}l&z&m5m_k~312-lVEhu)d_<NY1
ztJPzofZT3Cvqv;^17^Q)L#W7v%LHm_ZiPlZSkjAQTtv{MQNna{h$B*zd{aR)k@NWv
zcp~zt*7t4mg|2cYOr;2mupmcjk7hXmCM}ub1TQrnx=CDveYG*!k4hFgjq0_M{^Ti?
zITj-D*Tv^AdopZ8lPQ|ysTssnwV0E6Kg>0tcsdmvuo3*ob1S!haPAtS0;%!1{9k_g
zlcz;mJ73|Mg@N(WE>FD@+p7)cQxwMm#CCFMG~*WiDB1Zye=zbY7Rrvy{%16l<NX{@
zx~N#H@S%OZG9g=Mhp^|X(t6Gd<1|O;B?)qUokk1B4y??lu29~;BZoA<_pj?)TxfEB
zujLx)mY*PD1ZPbt^@rAV+y1#pd`I=pAkh!`^!xSG?Cble@+Ow0)<+^)Ua|-mQ{KZM
z^7+uGvJ<hKxHwhlvS4@}{TXz-a_zS9Xvc%9NBTYe$;H^&^2#mp3WL!*c<$MXa<VPK
zR$7&WdZV9TnC?h*5D>q!63^{WGpu}}A+Nj<N=glO4aiL=iXv-2d&4Ur`yFFAYNE={
zN2GR!Ew~ELE>cAMW!}%~F8}XeiLrYok5AtJJP7w9qPPrIDdqA)2~8E{4yayK(RTl=
zy~}aBM_C$1Tk0#tOLdUFqmBGwZ1Ds+>$3+j9!-5exrTs@i5@%412p4)6xq@faUdxB
zE@x)t#f&Ze>wJoeJFHGretrR=f%@+1s0x7(<(sonW7SbTsQKD%k;e&`@ThF#A~7&a
zoPxrc6!wTThv99wUPcKbv8kfI)!qZ0M@#=ktqK&HSZ-gHHIgr1Vy?fcA62A}qM&Ww
z3-_F@&f>pNZHU_!qwQW$y@eGo$S_U{T%EiBJ-tQNb%;AWMp5X)+~I9GuRp-J&w!g)
zbyJ>5RedNqOh9p+ry+x0t?gqWj~Ux7ByMT0D~CHDAi77jeEBjo#KtFgjfC}<%4R{y
zmH)8{>GAEVC}~HXCDG%hLmF$8Xeu&<+U+68u*nj^n~6nY=W4cb7hmE0J54pIH%|*H
zgUGkG1z*v<HebA59gV5iY8T%$ZfoRl=1+-^UyBvMdDk|7!`ohE-+s5IoyO<i){No(
zvRHeIhFzjS<}WFK;1l^|ZAJExbJQ9x<E>Yz(^PKBjx}VfcrjZvu+8H)>n-m6W~$OT
zJa<txsrHz4VpaB+h2{C}n(>)>sVD5=d-uAXTpn@lRDu?C@3|1sh=>7oDc*`~?+wC5
zY$<PT7SDNBfhex1*^-^Q6?Qv^uvT>M2E0%&18pZRab3I4Ujozm?j#jg@lZA1#c(pk
z_2#Ixk=noZYXW*lTUS*-7O><622U-q-^I~$r@yr*^&7Pc;?5`aZs;`{0_o!P6OC9m
zTK5}`<mFtx&|HCUz_^D$*<mf641Q_1weZ`y*O|(xHXtH>UkN!$`7VU;f#B7s+kP|R
zj2GUc&5{?QaAbEe@jXkI(h^-g6AJfJNILg&_j@NS1NLh(c*|67`8#}(497W{R_%dK
z#m!;5;%)QN4BAgE-zGIaq$8sv>vbF(m&9+LGz(%UN)g*t{OIRi;qKFCOeNljP8`Q5
zd$8F}C5Xjuua^I<Cb(KJ-_GRqt5*JU0KXyF8V$GJ%JYM+*G($P5W9U@VuQWpczb1!
z*<TbxaWjAAQrypb)M8uwj8a=FMMRVrF2wmt!kAMOGvr|Emu3S@xfj&3gKnjXz+;9N
zjfF@z+3TledVNVcUj0Ddcm-a0&aZIlgM25<mQT#QE|WuIDdLA`HHy|RF}4G$2{Owb
zh>?zj!mIBRV23sonjv0+uhW#yAHGMp&%7bWfXbtUXZ@PSv|^jMi9c*#{z|M^o>1uO
z@rR<s=O}6|=E?5fva}~XJZLR276DRg;0@^^cztwr^6e>R__fE{0bj?UXwTMsVg>3I
zOdMuAo~E_Gt2@X12@=~=WTNYho$=Nzm4D!@o;ShZMXykX*^&9u1{J3c$3g-RU#YFd
zC8ym`V4uuzmdy+HDVeXf!Xa%Q+<k;Tx-7@10iu76Fhu^yzN3`=@uy}dL8!J>AOO71
z*#=>6i{Alh;c;HRywmV8c&P1nro3HyNRDN5-pWX1q83LnRtI)WpYrNf&K9Ozp(j`E
z(T+*T8CC}ZO%KYSPB9(b(a1ov#~bHw^%b5(f)gn&Z;osk3q6y)tqj4#>83g178kvd
z2GRY-%rj*8l<8|!EJ>K&p{S>tClb5jl`01dd3OQ`d6(I>U+w|D4fTnIy0>}{F~3x_
zV!#N7wUPzbuT=OFrb<(n!#5e8!H@C_S=`lipRhfuv03fB$u;394kAx4iz_fiSnAlU
zMI)brM*hjmjfvy)sBfx2LF9c*&Tjbgn(W`l!qrvLT{}#dZpy{`GAd?2v7==-r|x)o
zz#}3mKX#*Mm*65OKhmRQzcV+)K~!m`MEfa*v#Cvsn*A>3gd>=Bzr$~WBZ#O5I@O5s
z)`IJE);Dj4M-@2lUngJdG1CljIBCZVQDRPwQyVH*jhO8@G7VP($)rSV9s(nb3+wc}
z$SqhYB<3qImG&N>h}Ul)U*E96lSlX#wZA*RnupOm*0Y5>3Ttr?HEpQM`NKlQnXn!y
zp|gv|7ffVd*w&NjFz%^iiRZK|6@NV*A-c)mT+ZHt<F>1l)|`@bEYfmL{l=4kfufVb
z!q)4Bp=N)=Hx36+eI~{_R+(jmgfsm<3oTNJqx}mzBD+7^uRN$JDsTto$iDR7ca1c~
zp`VjKgex=>CBEP$bf_vJsgTAUGm15pCGYR}q5l{q`u5()fykovXO@5)WtBks+o1su
zf>K6R;*hsC*C)HIOv;)fw451*0fj&GjGfld%D6aWL}(q#r(twCy98u4eBaze_jaYE
zBjJV+ed>IuGtWS`mP$*+?r<T$G@?w53Ol8Wu~Tj$xZ0GUUY<_lkH!vB1r|9v_xf4Q
zINP9C(YiwLm$PDL9CnCDkj58F)W~U(Q++GesTa&Zkt@ZSKL%TdaRZp=EQRk8Jm2Im
z32aHlSa2f;PmosozovNM8fjct&xU{FqXDaSFr?$#hbQS(V7A&Z%=Qb%(x*47dXNV4
z{S#F`TnvS(oakg<Uy!6%w)&Gg!ztDCbWSb540SVxuTL|6_`tLwAxi*2k9@vNeMiup
zihX6>N6uMo(3d$CYr3KQF#*6-2s@;*qRa63umM{n{o;9QhU2j{KR+k}SCrgRYpq~}
z%4$M6Jb~b*lJEg0IBrskd;(DIf1wKwkR+dxrHqhsVpaUSd1n+k_Iyy6a-Hnii=whF
zk_&DFj*eV!wP<1*!`h#^`wL=}Oge~d_axD}1K*&ahZ4Un|E-JY(4;vAx=o<EoYh~2
z$H$M-9o7wx2(<|x`l$jh<kEZHRW_qP?~R*c$o8(ZT{0`NQ*Ilns9}ZFGQ30l*{O~d
z@>Q*UEDJ5~)r*6037!^TRjiOhwlJK{Xa~kig6lYOO9OsdH&D3pmP`pN!~hho<eCA8
zpm3$1YK+|6C0-)C<@YD8HtKmMGUUGkw<IG1H@M@hx2hqNcNn9-&R1-2tfL>nk=Ovf
zwS(`O(oa~<JJZZihs(v^XiB0r9!YX-KSkph@3vngF@8TP5Jj%&MSlm)@{US~IdME`
zV;pVEgy_Wn+AXZc*u$dc9i5&LoV16a2xtGjZ6mgRgx`+5;st+h-N8N>MpV`%zEizR
zEm-xN{PgFpPNgfTpd<3iE+<g1fC}$uSpkzGFR&5%gk^P&!u|F)s?k^<;@5KuZrQ9&
z-8Er`zu>s#EwQ{^81`1r-(OGb@7MU#Yy+JH6})}(Mgp9W6_#Ztwj~<z@}DB|T*TdY
z6_%wYnka>XCtN0+tegF~SK_KWFQIn}gg=)hbQ_TKU&cH#rTptDr2n}rr;2QE#WF4`
zuNnlgLLPrg&x>4{ocqugm1n*V4{ezdl~83^ho|9l7M0g0pnx#~XICak*WrWg|2e*O
z*7x}2MYx-pU#R;FJHPdvYMse4!g$*URf_K1l}Y%w&YB)sB)f*$A$M!=+msJtDNst0
z(cq{<s+8N83adGHobtlH;8g6RUtUHhlZTVxkHT$;73p}Jtm?@6<kz3x5qVyC6iMv|
zZb^BMX~~^e7d+#YcW1}{@Hc3;R#}T5C2}?-eiO(mC6Y=NJOz`*Dv<pA-)CWeDZe5~
zp{jZCCu2JLmzJ7LJ)Budldo{3_DS2jyHWhqts&DQJtv1zIbN*dBW8)DvL-dkbaMd<
zE`prtWE=`ynu|By1+8x^sumOZp9z+KatO*aHk{+I99cYTcbwa2f4;RRVuix`G`u3*
zo$*0?Jszb>%#L&}u)Glp%MnM3G?~Le%7BDGG~tv)jH6FNVEk?n7av}LSrE?non7dy
zG*bwyzCxL#FR_w85qv0`@jHl74m?8t3^@53UIe?Fveo{AjHWBxC9{w)BDY|3dp@NN
z-XqiQHsHPN2Tm!9;?AXSM}L_MvZLZ<C#(t8&nw2A9F@cfJWFI_-#&M%Z@$y;IPpbw
z_F`&6Nxd$5{{e<;Z2S1_WC!j6Tvvy~b=j4#&tvwafTVoar|eLXX+G|uRne&~;RyL5
z*529+78A@XW4UJcErju??lik-=k(~--8hcBs$WGpx%g#@e+I4J%o-qR?=##dD0hwM
zb-hr-a=cZvbxZQTrd(P`?3&Im3x_rO?27s0nqhk0tSsg;%AX@W%((pbqd1|O)~3hS
z2w=#e)VLL6I8k-OPBbd(rT9s_&Zc0<8PBPUD6)O7?^<bf(o1a##@1BxGF)!|wHBRI
z{3w?LKb>2i;bBWqKxH*|i*N*2k@d_U_bek1s!1?D^Tz?#w9Y?0F@OBNEb7`o-0H|6
zSL)d%wk6s5JU5SUBz0a#Dl^nw^{uoH*?jAL%p;bYKJAOE>+`(sy#kIG6#WsZ0~hb%
z0u7?>B>8VKCkeyiuK%@apLXlE#cXjWIon{o{dkeOGc}z(-EmLbKu!5z9?BMRCnR_)
zSXe5g;1$x31|?!`r++W{#EPF9dgml`TRN$+Ys<PMUuFK;t)79`8-MrcN4MF4pwYqC
zavi84Bvtv8;?3S(0!3QN+Wrx@?8@MOkJ6%Vh?1i63EIw#sx<UmT#;1NC9Y%C)LGX)
zV&<GWcyQ>oBKuz3r?y&ZCB}uVpZ@nS?fBE*U-xb&+;`wGt;O;|ba%@GYeFmfc>T3q
z)j520xAX&}oG6^-LUoVUE&qr0;;Z%752>#e*3$>@UPqKK%zoo#SLF1Q$AC(l;B!sl
z!Y`=_4Pod8!}1U=8ztyZ`ljCKoA2fmE{s|vZQ|6d<atGDn-?PTUfvBl5Y((}i444+
zv9uxZ{eq<Z@ojVFpQ;<t2z(oM4JQRQjIGG^kSpgLw7j|&-*Cp72coJ{|0^#ZmfhvW
z*vjk9mBXNmCzJ1O6dx2?5^vM*+(_VmKKjO#1Z_W+LItkxP7TMH{9P{p*AZGg=kNFT
z@1HPJ9~cQ4^`1&`-HCY%?$x0(OR1);EYcP2WPy)1o&Kp&THd1<;7u{4vA@Q}Q12II
zyeUF(UP{(J_DG^FX^;Mm5T&b>jyryJ9z}_BvyHHeA67m!P}r9AW?2?3sEwQUl#y{g
zmtF2pqpYy^yKcF1z(YvF?g@AZO`FdF58(iG_nC)~)8H2H5JsPjKl2cRalk_u2L!-F
zXx4oG%tHwJ01sj8$@u^95Gr-c83G={e&{aXA#4s$Yy~`o8Qrn1fQPUWNY6ZkAi^^b
zA!wd?2!Zow9>Rd|#3jH($Z6pA%tHv`KJyTQ=9z~OXaXL>Z@~Qj%R>nIpLqyL*dP9f
zhcGrg(F^bp_Ca?651~xA+%n)H1X_TH5a3z{JcPjiGY=s^4|oWH_R|0G5CSd0LkK4K
z%tHuf1$YRb@jmkquIak{zdVE>FMx+oyIbxkp&5)X0Uko&67Ud$X*}}~lCZY`9>VyO
zalk{!vDA-=530>DpG(d#34qLT$O2B${xy8AKFcZyJ?TFG^h`lW_gtQqh!$4^rs$RY
zk_iM!WcPKPiaBQ?gy#g)Gqd^x)`&s_9v)<biu(=adhT|o5Azu90|d5N{Iv`PQ=Ug1
zN6sJoL*Fy0npb>1=M~v60SPK%R$6wv*H0J)fR2GsYJBsd|F|L^Of?5Ft1LWGL>q<{
zER-r@*1eb_QITfC$+!htmLG^w^0GB4Jn`|A`n1q|YhibC8*A%+S8dB&hmksteLa_g
z1?dpvxJR*gxtCVdUPu3ZW!h`%foxz|$i);uTBVt$;AMC$>urX66AHW<UbHbq2&QOe
z%J45Jw`_epb-ZZfF*Q>G!8HlqI|8#kLKZE$_1v~r2piZ5Ud}!>Qy_^?g)kog^m1hy
z0-!^RPih9%v`u3+qX^7_m)SPh6(mP~?d%0u5bvsLL=6DSPWd4IJJ8m3El>fysgND8
zu^$eYqt!+Q;YJ{)KoF?dL<A1@0y1L3Mj-XCV5MEpT_%Rx1X8NMg%sj*OTwcEVpXUh
zD)&NndF?;c09aK;Zw!9QdFL15z@D(7;sR)POy3|tTbExc805>gumKJD7w&LS0|>t0
zOB=+pS|2ZE$8&O*UABs8T3Lad7EN;R;e<*cY+wIIS$d%sKTgDPvl`PCS9R^6h#A9&
zsx(3LStV#=fp!=Y{t{ztWT?ZA;Cy}3T&x0bLhby$s8|H5%8ZP;kW57GEJ{?V;+QEv
zt-V=!mJDfshA2+}yYXc7ZzQP2BXi0}T+!B~QByhvg~-hhdj=BnBsMAhBEo(|9##dB
zUD&yhjN&5MAMgpVl%m`mp_;a#T0^gojkUamYf5t)j$0O{)N^^u{U9$?rkoxT3`~k;
zMU{O=Zwg*zt<aHC<nCfO?(&5qc8j&;_4~)@<nDQoBzbp_PF0SlJgRj223-}q=5mvn
zg^ZEvYFo-bS<|c6kZZ~&5nX_~IyurTOi4@mnaUIPGC!l(@6+cW5`Le3@0QBt7M4Bu
zDwI{7w>KFd$`U_)u9YB#!W2L4<ky(^M_tysF`2H#kVuoMbeHg=EPO!L+AS@i@#UXM
za6_$IWg^_H@{NtRMC0BQGkn$H{?83=b5ign_Qge&pzTwxq=hDLt5?>G{D1cswDs9I
zj15Sk#Z2$(i{FCkGA4sGh^A#qXHGUmQ=0{qU5f?XrGsTIG<D!FFQuB{yLuM=5B0_O
zCH<mhnkGU9O{W(a@QH6VKU&E|zKtiAS}miy8a2t=M{S18#F|GqHVk@wrSH`CTxGip
zYfdLRtTaS}dVJ;nzf_H;4VA@C!;Gjdb4TmxXh2Phe5J^74wQYV;~!QYZRx?TvNbKN
z?5+DZ?RQlM0X@-eGSKHfjgJ-eGEqB?gR;@A{D11YG|^q=SY9CZ&xY=o%X(?o4|sWp
zpsWNm?HkG|DAW%eGH-fRLJ}X|9&Lg?VYAMk1i)>e19)!|i2Pi*rFVeuKJa3g>R-|9
z)rp8<{XkhQyen-5fjb~;?9_iIYYZp;{Y=)#++@6rzji5;u}>sUsa8MG%Gl>({0_7X
zOp0WQ$A7*u`<Jvr692>3NWWm_4fq;C$Y;Jr6qh-`*C-3H0lr2M{y%(;z&GG)1VezY
z@go5G%-2YGSot5mMqu~M*9aQG*Z2*<{|{dyu>3Dy<MN`<u)k_TBmQeJHC2U!aq(|y
zblK@B%KSVQ8v#wPq$O2jm>K%C!4&g-ub`d!3ZYyB;F{ui3a+{1WBzH+6;ckIC0wSf
zYz(^mn}U)+HRX!QzbP#jf8_$pApw*{rM(>fjqbufK!?1J>S9IL)DyNgX-^K4s!cVo
zzshDow@fAp1iDncKlM`{*e9L(!!KJ&5x_|4{%Jr{n%fuynhQUsEIZxu*Xa-i#rgq$
zIj4HlfMK_>Vc?haw=zD67a_(F{D&_!sYMRw(1GXdI17?k6>ufjA007nqZ0NG6f=Q{
zbIfKI^O1j{jv(K2Y#S=FqK7!cFkpaR_cJ=f!sc5!axsx!e(9JfR2P0wuA~e`*mv>(
zqMO(rf<p(k=&E`kDD+7HT<COFlna~tv0NNr(ozoBAScBervM7iTn@l6uTCjbKd_79
zR7AV5>4bEvKzQizwb)J4e;;*M0e32w923_`*(Z`PhNxIjAHkU@MS!}R!SrQF!O|~W
z0wYhV9G2``y6<4M=UBeMfuP@3uu)w2{d`41Pz+Qr;Cqf?`Vb`G&Q(zf;H11J09s;3
zhzS6joSLmc{Xm0S0HyVb*`!1*PX;8>(KTghKM=)*ZbrssY@Ey~cFBwvfQB4pOj38}
z3Z4u#u`j3}p}I_Qt(LjbFQ||BH~mY7XbR&U7F~f`VbCj9U%W*0U(pqa2KB`mK(y%8
zzbJ!fwy*$mwEvoG0!4!VYX=mcMWTSFfBe8s`@e3sf!AjdApL^)Jp6y6DE!CmDOnmM
zF>J-ZX(3w(C;>o6=q^*>voI~wslNwZEptwT%m^sdTc<NF)F|K_uBl`IS*AYB8w<{X
zt8ionas_v2z~F3KdcM)I$ezzuw0_hkxmq@PRtX5uWLrEDy%oFsn^f>v{4{FKK6?6G
zxt7*D5E$a(9m<mF(TK7eb?O(oyGF@<P8O)=(PGCvl&$%nnw{HDnZoCKojag{Jgo9I
z0>vele&(#F6V)ZR1hccWfMF=UF~|{oNL9{A<L6S8{?Vj%o*7-`4e5dEU6u>vIjUf+
zT+WDlVpQNkI+<Oqp2b;8^&d0E55hxPOmxZ`h$b^b!cQPXpcK4WEmJf2765#ABWfi<
zG_AzH5r7$xnJGPq6|pbGr`W9>-5`RQt;?^$!y5qqd8PNyUr;J-Yo5Lk&3}Pk(&U&H
z;&1V=aRZuETK?XI(4f2Il5a15tY?|3@)P}?1(Y0x-cc>YSB`91W1_j_E<tK%RWm?0
zLo);ALj3&1YoR{y)u+<7?kNT$rH-6Xq$B$`jeD;Nju9Nn8s;($$}_gS&i>`DVugLY
z^bMlfD8OuXc{nj%RXNaxt>~?J+EC=h+Yr?y0j!pzV!lLU9M{V1TIj>DB+J<3I!lzq
zfFwrAYADyUct$cc(5;r8*G<8Q0cljlcZX0wA5YV5aZpsH$&xqn1iJ%l$8)5|T^@#o
zc(2@fABGP1>z;Y=6X-ULv#$e$0A(#;>Tc*yA5)1AWtVk^hxEa=bLdTn2}5;JkFYva
z)B0Fn%v^3CC;sBF=$2TN$ZWN&Xgp~g-9bxTk<>^e?L@%K3Vi9Q$0ba%9}+eeMN(KQ
z)))U1nfs{gDJ5>yJ>~UNtuiiQNt?Xd`1mNXR~>vSs)J&crJ1Fo6eqZzA=gZzjAQVH
zss4ZJRHhirqV7Ib$r4dax`ST3;%HqI&>n4OHl2aCEic1~qf<ZG(7cyb`}u~5F@fl?
z|GxB8rJO)^wJbajky5grWdg?u>?=-hY~&w<P)Y5#xQG3(qL9*?A(~r<l<)8l`+uLq
zbP@^lH?!<G$H#GgeZ4{he1S3(&3cxqX_V_pAYCEGfaK7d1b!t2<_p9KV4le;EKpOh
z4;|H$2E1$1TseYQL71TR=Dz^MLdUCBppuS?hKlB5R`$U(4<S*do+ZxYO`ZL7<Y1*{
z+J*R=yzlW7Tm3?8+Z*YdbjICaThafo!V$;+pTZF##)bG6zSu@J1QZ9wxx;Uni5~rz
z2n(_Ms<oQhKI{+Q574LE2Sm;8;Jp;!n45T42>dfD;bBF~qhrW0>Rnk2_LWA-CjI&k
z(X%?86f5t**>#%_moR=~>Ac`mB21e=8ELKn38it>I!4Xmqpsh;eT9kNA7NndTAjFo
zqoXHkzJ86;;|RBdC34$;1rKRYb}W~;Ajik{qCb5@A5az6zDH>QNvXU#BM1BP?g{^j
zZpHqU+5A)r$wh&4g!y|e;YQC7319jW%zEt8R1?3@HNNg6nkA3Qjd^>b^@65PIyL}@
z2NoU{9;?J>^AYui_mxZn#CDn#4n5VoYPGkLstKnza6=o;ABMEIa-+PwsIjT2(e3S}
z2=?AKiR-QVa$|9EQ*oPXTeP9?N`RX2`&wC_rWcAxr!Q_H`fWYSC#XQ&cEUy(ZyEG6
zUMc&%nng4n@?!ZEfj8&(*T?BmvU--2EdK$ZWq)$hfw~Z1A0kZ&(abJTtLBT632`5g
z>_uCMhe}~;xp;(h5gZ~#lQ#Y4W%>E_?-FN7Y5bw&SK!oLSV<6~Nloa$Ro|{3($LID
z9_MX}Kn2k>mQ%0cb1%4g`Di<fwGhwuLL=z_XrSMGN>Z|>M)So1(Lafx$(~D}wJZH*
zxj`{?d1LQ=!HLfRY*jyY)WEsWiTo4~05*R1W=5|enrm`aN$3mlvmGAlr^tu0X&;Y^
zlTVrLWwW42hq4Q4E7LsXK)DLlZ05t1Rf%>6;`(KkFBD4dU6er6&;6vAPEDk~QYM*p
za67RKWyh;$sc8E#pI$y%=fcY<O9<~mcWA8_>G#(~5l?iXbEv0_rQRMlI`O&=%>m4l
z=@Ao-2tf8ER|2sI%N<<4GXqFB>UtD?AcIeRZRI$?#d}S;#5bBi|3OF!YeD_2AWuBK
zU7tIX?Zr!Gq{AZZ?K5%9m9msO&*3d>^ab^Sg}i-=yI`NDe>>cguoLb2&YK4Hc=g3)
zonaDiE>r4m9bn-aqluyr4~vRVsh<@)4TK2mi`mu|KMTec5Cvf`sB0c1;{jhpXM@sY
z^~I58)kab)Ww%j*qUSIDsr8<3m07b<DC&zJ*VV#MZuDFyy{REE7OO!XMY-+zm_wwk
zlqtN*XH(h9h=*36$tl0`Brp0jy}T*?0MhkdfXkzA!^44!D?Kemo-I2s62jO17WQUV
z<^<tBn<j06tGe79#e%Qegcz}AUTK5U_QBw#SAq4{*dh-rXUPCuDTuUK2(6ZqaD^pq
zHin>(R6xo~E5;cqiUvN_-|mE4qT$HCXv+w-DUMFB3JxK&J(=-8R6*5wvE>sA+tvl8
z$3ty|KhUCM8t*CZq-1Gy5=C0Sr{#}*;Gv&>g<yF?W0x1YKrot(8sZ-6Aee3PeZaJL
zMmPKT*miC5cXKIfWHmeQ>y9HOj~NatT?e<XeYmqO!PwSWflwp5Tu+56$&ExTn#sds
zOGI*8WJl*$SBQ@`*PN1u(BI!+-LWV{Lqthcoeah9+;C1k%R@$4ud6x?!wZ)wWoHd#
zD9^R;cMG(o(1nx5ciO4^c`S40Yvt!{OW~buwtmr(|MeHB<JiaO7TDrj3nI2hA2K~V
zz-St&%wf$m%d=C$!<{*T`VOo!7)$Yp_WWAb`8v63craRwrFs@0PHr-5H4rJl<8Z!*
z<;cC@FA&JTzhd+wIdKS*r2m`#dKCl3tw!5Kbh<9A+tj}M{MY-RiOJn}MEe{q7bxPo
zVkjR4n+Z&VuBIp_{X`Eu(Q!!VtG-c0@229hYGbuo&Z&ou65h|Dxf#vl;{6;iE08E4
z@t!aBymE@Pyr*WBQYkH#X4DuN3J5_^cC~r;!R}Yy5N$Hg$$KFg($bq4`m^=&larR~
z348gt3E2F&wfor~BNw_qH}=0mQYk3bg0aE<iBzEH-^!dw3%=WtKb*XG8cG;s75U<e
zXh8-pl4)q9#I+~E!US7<x0uqu3y&4BQbnj00!AE&MG5w0U|tmWRSU!N#Gyiba@`QM
z@nFWw{j^M>qsNqn?|<sbc{I&ZSK$7weW|!&hbfODbz(syL`r>dif~_az-9v_BHkUi
zwtWGy)D2l~7Y-hZT2tH>t>8TJZS_tj^T4OjlP@+{yVK|0`xE(BbKEYodz2ha;$!lF
z$jH87WvrI<I{g>#G3v)B2b=(TGu*rKU1rC>=0e^pIW4swf1m!~p^NB*wU)yDUCAkp
zw7Wy9?U1&PG(4ewq!4+GTCuzdBh+f3D0+wsvez19dp*2C&(7rEC8SFp`Kv(cj3o^R
zE0MVB$Dp9OL^56#)vrLWx++Eu1lw6;DpKDd%2(n`?U({6ry~Rt?U>OVoEz<!>p1lt
z5M)~z_fZ^p-jCudNL{E45F|KWVuzK$Go0}(HI#*4fe5yY@o>B)R6eA#EpWUTG3}VS
z<UXW<A65cYqS`SfXdx1Xc=fA}&n+{g3kP*UsUOi68V$@g;dnjb|Jw?Egya40;6qAI
z58UYcka~&1^Ww9>@xHzN^eR<`7Ex*?&;fYkz57Jj(2hA1`(qQHcL%tv04~3xlu{zu
zLXkM};d#Huybfr`G);JEyb{RyqW;G$0F2eS9^H<)=%pja0)c<E{t7r~`T)V<6m2Uf
zF>S`=fWVWOEl4ekk1Bgpde1Pz@v5;IQ+tRnzt8X?W&V-8O{TIbcYRI1T_3JMB#go%
zto2@@GJfMIuD=~~+5b!oZ6OQUn-S6WSc0!C3zmbl=p^$EKQ>KSJ0??bb33B#x9O|`
zyn5K!n;d{?`5kh$Y%dS`)deFx82V^Z1ahtW5x3rFe$j`tART=HCJ;IrbkrT9So(yy
z`RPaO;bYy*cYe?a?hzr%T*2nO@@oBu{L}hVVMxg7fzO4rCL#PKWe`XDWqUkAm<;Gj
z|E-5A;oL|p&?PEoS?l5c>E~*-2{nW5r#dr-jlb|YA=cdHRl|ktT5t-5Nh+<vZ-#HB
z6YQ|}D_~?=g@4suL}LU4FP_}IcWD}@;7(dXB4D77$Zj5HqABS^`Cf#M6W30Dm7(UI
zi=`<}e<@1SdJeMEhs@V#qPgpF&eDWDau-g@a9A;8@=^Ia_Bc@^3{JiCGR2BSi0y>-
z)r(EOQ1ZX?hfX@+V)_s~KYs|(dR0@iNX3+~49PgasyzEX@%4$7trz=SzNs7CYXQ5u
zSaBEG*xfn=)*QNIEO_%q+KE2#jo6P*$~ap)RU3A^BM{n&Fj*Lk*tRA<H1=eyxg_R3
zrw=xbbQ77IH)*DB(K&LlyAgkcOl9)UG!!`XIR#^PIX}te@y0p^Cw>fyo2Mn^veh?f
zVSCB<s@guWtioVq-3rJ)_Ii!oZZr~;;EI>o00vrpEts4lF5-ncRA;md<D<HPFePN^
z3Y3$#iL$Iq>W)!q^-Vk@NY%d2{WEWHj<~2nOUMU?!$Vs@xVUkslCrqqF%swlKAT3H
z0(M^Rk)p{_?}BFWVkpPD#AU-WLwrVS`S;lrP{{|6(i^*P&839ZK|@GYw+SK+K;6he
zkYejj!DPL|PW&qS)G%7$NV6V-4f>nH3R8?VPhZQ-XtniY$^yG7IH_^&>GD-&F#MpC
zu`vw<)%EPMiY2;1Dn$TZx8T=L>yoQ_i)8rAMloP`<fv)`Tm@0Lfc_&jHAP_J(xBm{
z9HDjOf|({+Z$M0J2b>{gFz&tFgMYycu6{xtxz;7vg`Wb-Dn!yUKZ7~Z+_)xy$v0*B
z@=|$LNBeTvl{{aXvwQ_(TJxW8?Whn<mRfz$mcq{;0`S9Kk<pll&kSfjP749t)>9v~
zXS77?F-Bs;rm$J1O+lX#_ZW!6FeM3=!%I@$2}EJC%a)bW5KRdxSBjcqK<isB8Z@O!
z*4=Ot;||I+{ilkko}!e0ro<m&=t+;QILbZEHNXiDcIRBpJ}0L_NKI}=Yh;Tm1PCWW
zYOP~cH~sNou^NPI>cC9O^VsvPOWMl5ITa-*Hzl2xbm-M5b(TnmA<{a4#mE)ksRc;Z
zvTq|kp2iVPnbGzY!o|KWwl2wR{jOKf(X?wkE{N8CJB0X?MGLIRrgtpqOp0jJcaM6F
zmPeIw$IZ456El^6FZb%UEF1v@(!>ERFvH~p(Ri>Ayj3%5roiGo31Q0s<aU}|1VD!@
z6g)@=gH;gsA~3j|4W)eEUR>a{<s|^CdLyC+$cvroA`27ft~*o91rYN`oodP|9<c~y
z`ghXHgkL?UmStKf3iPr4$TtP6x!5_oH38hMi){ikNAT8i1JKLXeF0W~8BbLiAB5(Q
zECkY#idlCt;ogzD8TFeb1`hB!xi#D{(gKZZ<i-yG!LX<dpnv)%ND&YGi}kbgjI_WH
zJJ#p!&WB~PyJTZMRCa$h!4pTiaZYTlsn`#I+3$)oWE<XWRK@Fg*TB9gDwr%1a6Z6f
z;D3SvJ+>&Nh}`}AGL^#8m#A@Jq?xD}``<as%P!IB)gfJq=A9h&;PZos&9)wXZj#?O
zrU~zt=zHVwwZAA?ym?@DTPP~SLyasll;4{&4<E{Rusl`y&=xq)13ibanv#B*qh#@N
zB#E!$UlXb3g9M%v%w(qe=jw`mEGUUlxUc(>uj&K`+INyJ1~DJMM$>hMf$mVppDoeg
zf0a-xFLSmaK^N?r)cRNwmavux^)P|ox6^)aF#gcEBFVMY+E1~keoAd?#Z`@u7{B8F
z7acPa@cmJJ!cJywm;gmxKjO)MwFQF{U45P|t_+f^pT&^mJ+Sr>3qQXmMbZ?JuOy3W
z@=EM?Un=v@DGfVH1J;qYfLM=LyIQwSFI4}LK7Bhwy@wz+BfU^EwUY0!)}Y1@fd3+e
z`jHGj9iav8OYT^pDnd@x?>S3#_+#;UX@l-*1XIjvT37p=Qf<V~AxD-PVJ`>NEj&Ki
zbe_gc+KxXGY(E)uZ3=x6{3ld}_G3PI$tHoH!kTxgYt*hCacV`8HG>g-McdgCak3mY
zQLQmHsj!!7+_n&dV7-6U=JA_PBdP9ZRCjGu!8b}#)<RL$T&zlCh9+Gj9l^z3d1S9=
zO5X1<-&;Zj<=h?7*>+*S9#0cO42his;eHS(?S2iko=yy&$~(K=<7nlC(Kh(g-ey-j
z9-*~c!XB^DD0q&1;3OlmSS0rK+(0jpL8I@&@>;-8G|;Fzg>-9S+-CeGt56~R+b;ye
z&B<S-Q^Kv}&O+3_qF&vdpzTO=di2HV)<KegMvbI@_<KWHD(83QAU&&;Q4w@X#CN2_
zncS#j^o#SFFF^F-tl=D$bF-Qpkl_A0Nrh?GRWm-KyWF!kX*#i(N`HMcvV!F4SyS9%
zXuZ|FYyb7w?24};B{n5(W4<D?dfjqM->KiWXPH~~Kx+o$;M&^bUglSYY3j-XpMMx>
zcjoQfxy*cEt<{I%Y07g!8$<QJe;1e@5NWQ$)Y?LszoiG_#nbi&ccMcMEu?oXsXvid
z)ePYA`W(Up%r#%#<`CqK80m%hU03mhV~cb`Bf?$Ceo+(GlW{Eti(+Pe3TNOLhhPgr
z2`NhM&;&ncV_AQmA}dZ$VbGt_eVViyNvV_H9JiEw{O%tnen8Pxg(<R0YBgWp`P7x~
z(VF)V2FNx)k8NEFo;)2h85&M_p#jd$)7q3;)S{H3N0vh7BCE`H91mvlQtRcgry#}6
zK%H|>1O*P=myf(cOOfkO?0xG8wn73@*Rk9guU<*(Xs<K{L-|}rThEn`-cG*1_l$hp
zP338eHb_ac9`X6^C8&qMRv0r9`+j~kSi1Z6^4u3*)N7|gh|;Zt%7EP~`E6U6JYDAI
zZ6Z6X0+H!%SydioJ=xtD;5B>fBq|P(+xyuwH~vUQ@kPSDYW;5Kj(+eUU{Kx?VrBCM
zp7%EFIOyE*F*+jSF}n4A4@Im?00yHT)x-+N3n3%}9anv-;tr}Zo&2)s-#$%}Ujq=d
z#l1uR5}Y#HtNuUiy=7Qj!O|`o+}+*XAwclp?iSqL-Q7L7ySoJ^xVuAecXxu_mHnN2
z&-r=&-_5h0=~dO$Rn>3zFf*&GtI>2woVNd}?zRebA!(CH8>^3W^h(YkYm>B~sY?hu
zhOEnJlOQmuj|2^1%w5}u@JawA(*Kb5+9X7zH9tegFm8z*LcV@e9}y3yE9z|%`T+YM
zaya5YB>z7ZsdW29Wpu{hcVPcq205%pf2LGulZ^9flT7=E(OtoENra}jg^-iQfzqmv
z=nUK`*@wJg7*n?kaU{?~s7tU4N{gtEh&6nL#8)4Q3n-*;2*JOZ*VL@}X&>#huTApQ
zhhKPi_nIL%)FI*=LS7i%0WH_Ft51>sxQ0>l6Qjj|)O$o;8?Z)~m+r<>1gq_I4{?;{
zF@*`$tA=k)UaTYb!C&eaa{tcOoFY~8bFdd{J9<}}WJerkP>}7*)6_PS<Wzs%IEEvl
z5y}(>s%8*rEFC%dojBlB!Ix-92xBiacclW$Q4Gh}w`<8ASeQ0dI&G5jjSE=Gi!3^F
zY(qhTBUnk=6`wCcrN0?KboN@_NJq)*-%0KE-bvrdz7GDWpo`4U)CGa^99F;em~*Sc
zRPFGlup@^d++iM8N3FALsU=UN)2A0uh5vo<DlN6=Lm_aGMz1Gnit0@P#csOiO|g?z
z`FNXLL{N5}Z0x_Lewzm0>P<2IoTVn!l>n7`lY9@?mB9RY@<nlctLEh!KMh#(6ZzXE
z?RO=G`RT6-<mb;kw!LvnC~I5sQ#!y)wBNv^8#$F4@ETm?j@lo6g0Na&^G1G_cjBcB
zRjLX9{MuXB4chhk7#I*)1sSI>|1~XqgcMdzd0w`c*ERv8j+oCp8Jdr#P12Xu9EX8Z
z61%c>To&~&_oZVZJq?L8<_k|B8$RbK2dHa8w-*=e6(!7{0ae=s8~mO&Nwr(=DcOd^
zMrqpwVc<J$o8+z9l&lgfk8J|0eupGt{Ct>OV(=Z8-1}0JZNm1(n0;|(QIJ=MBx>xO
zYy$D7ZGzn4%Q`thN?2x*@W>hEiR>OgDH+%%Aa;M}l%xvilU0IT1e8f%P@WhbxFjb1
zX~-;cvklB7=gd~IP0+r=Jf+l-Kn=+((%v#zC+EvN+MztT{=Gro=5YozsVGg&Bu~{M
z0rdIca7tSA!PzFDmbfM+NicFs!c6Z`(y;LTGyl&FhHV1AD9}331K=dA$|{9)0BX3B
zmSqzv>i~fqlfcX(c-nPxlgMq#6RBGJL}yj`14^3eds{&B_PTAtde6RFqH{PcrzD7K
zn<O_l&{w=i`@{+H{SETF8+Xo8P}maNgmEmH4f0f`w022M1!k8-?JoUO$~N!b1=$Aw
z!1B!fTL@*&(E~U@aNSsENLFc3rA_ki;KnxLB_b=cD6-5sQ3WO0Hi5QaPIfNp_<-_c
z^vOO^o8NCr*70S63$S5n+XiU17?+((q-~S*ywwIwGTU%U*4C@GN_r}Ja7xN2to^Ub
z)Jh<6jdA4$x$3>pI(e!rfS!iCM^>isPKX20j1m>_v=qP$Yt}9$b6?as{eZH~Iw5eK
zoQWT6R<_~#z94hI;e>Ha_IAz*Z3EyE&C1^H&PUlMj3tlG%d!$_IVMiz)~99~cc~EC
zCgfPrT~VG$I<`qxqyc0No=He1xtrH1&<juElnwHici>dDB73-VfYGIX>zwFZmIDm(
zJTRUc<Sm&+zrqR~6ZfsUqBF^tl>wM-ty7&6Rg_GCyIOM%PRYK>E6Vab_g2YO89Po%
zH&bA)@Sy#XRnn*4Am_vB%q)@}1BP5>xnEXkY8aT~?ikms#(IUnDRfiLiGtHNd3ePz
z6S@?gvp?G1?}gBWC{Ffo7Mx8%w@?Shov)etQX&ffczCy!h8CdS+N$dnh53G)FmVW^
zu%xDRr{!cz?_V~ugcE8`*EoI8&n*%QN^*(BkykXr;b5fSjw0i$@)y=#k-cXI_h6zY
z7{+3;gf<d}+-sTXr|!KO3?>}9HgKgCwS4llWUaTj95~0<y)Ms(#B;RBI$UzcasEz#
zJU7gi=zdTVy*MG1MQvBujF|x|F#elH_wk$Dl2lZNZ0>-Sb?5n&OK^=4#&?J$=gv4n
z0ULtUJbx?v`?WppXcc`C2#N~z9!vq`Dwg1IXH2pR0fM-XFP+Fx%4lrqf4<K7StIPu
z%-s~8tY4!$Sq@&j!{AMA3;3&zu-)8J<4nf4!5>$|PRC^P`#Lj92i2T>%I)MOA_+Qh
zOe+;tfp5Mc$j`2%m!C62v-nf>$p7hq@B=O89TuCk<kItce`(e2=(E7#diQ)4m*njL
zqb^&{oSmd|Ao##@v}Bg74@Zx>7xO%B=}?iW;!OW*=dg+KQ_zwE&tIyeY6s;9$Bl-_
zS%V9lr{b2Gn83Wu--Im0SJ|b+pz9LQKImd6nROHazf2SRSd3)&zBO1FZv+URs<7=Q
zPTww53{x>G#07Gg#(bi$8ez)b)7E09_^cYkJY#X!q1n+yzL6#7W#C0KRYHji*bELL
zbN6JXi)h<zT79Ns>Ktr*(n2`LG*Wi7ASBvTzDcX<^EKExVaP+sxLM$*zcTp*d8(2h
zBe1Lz8kS}|C4O7e%hq#b1cl2gT7$`QHaj~DPPk?45`3-3%guK;8|A;IFg*M{P_HyS
z^Jr5)1PMD7SG3R`qj3U0Ox43;*<BGVl1C6UNFyz~oV;?dJ1hkxP?fafunJQdrKdO5
z|D931jhMn2KW(bmds9e8kgvlFeWS?gPJKwjv8!UaDfh%3d2z%{rx7b8E(Lj*hcSWY
z6QJfb#6K!7U({|&MZzV9MU%l0a3a1}7f>48WxRATWVX=ha@sac@g7{>FKNbLDJ3>v
zn_*xx-rsLk{pVIbt+=rfQ;&^?HM9}h@^7~3y)&E!YKfULaw^7_hsHR#jDeM`XKA{>
z>YN@albYG2*tY}O4oD%Gza0~r*GCM9Ls~xr1MlO~=<+~I^gavAyTiLF#7yOwdhB3U
zxFYY>Cy7<4>p2s(w53c=PD4-!%$b14K)hCNl^;-Se>>QLGiAS&d~BKinG$P2H^ICf
zE25C<ngK;*Ha4J_f<C)3KPA^;^oD6BUV-aGctNw)uqU=hm#K#n_3tYI+k;@_lRktF
zjiS*$n!x3+&mm^(7!?coB^X&#q#lNvF>l#nSL{0zBjVGE0l6)@I$pal<hr+qoA9^W
z(qbC%h;`n+QqWs|$Smc%(+N_OA=DEZjPYAE%M#nF0O)kR;`>w6tljp6<=G992vekA
zl}XfnY}@*%3gR@1_o3<aX~1dKI0+7Nb?gI|o+%1@Xce%yS#nu9pZ}regaPlTBR;BW
z&Z5GgJ2H(URVa$v#zlXA1Yf+EbV)>TBKf!nB}!|fx+JS@npHPoU;k4GE44O?K&$d_
z<)(gYnGKP5;XIv>1I_@RPN_)3u!uy&W*<b;t)dU{MuZ;YA<_mHN&}^jc9L|8`>Wa7
zXG)8ktl7CjP;zZMGL@9_0Xx4NNp{(-PC@#5o!ZcQmV>oJ!tAJ>4XwaLkWcCNGXCU?
z^vrCNZkmcWK6z~IF-B9@r^2y9kYOpWq0q}cVoIOfG0k^14aJGnuxTbdE?P39D6a4*
zr57SzX2_c?(;dhl2$b@y<&Z-~Bb}dYu~YKj*IWNMH+xyY7Feorr0xee2>2!pOTMmq
zR59P~*W;*u{0@%G&e4&{cHFH{@%^Pj9=(4km)-36SqvV_z(~+k_rZ#YhhxMxEtI>j
zs8+7y<TR{sP~&JYmtdZ%wvaHk1e>3F6T)@m|D+b)l)qdEq4Gy@6oe;&C@sb(e)#;l
zpsay%Ukb<^rD91cd$mi4<pF!y8j-%fPOlw6>$e+FxAm-YS*El{4vAC2dj!G*<o@%!
z6vWZil*tuJUJiSali6ux;YriYN+*klx346E9#<ZQ#aGn8KuIudT*^@NU?qLLs&RHD
zRN|#wng8=uw{_)2It&kM1@++Dt5UkCBjuE^S=KH|YeT>MBk^W6#(LGQ7i;0wf{1Ix
zM`x_!YQ@W+lyrGva9x!b(?7h-P*i8~CQeL=$7fMDF}c9LhB9%(y<YBn`z(2Jzb@!$
zTvv9EbbJGGO9KaIi<E(kYHzT(y3K%Bw`O$j$s|t#U-o9E#&2xFSA^F^BRed-eEiGo
z0=bhj9Rc+>j4B?=q+(0Hr@ujNPK6I<3-tr4>FoD$3Dy?b{c9idVJ%ZJLD4JFFYI9p
z6~fs92QvurY2#(pz|dix)C?P5PzdWWLC_-|O|2f93RFWXxa!;@H~i&oh4Rx-k45rZ
zQCFgcD9_;OWKvy3;V2BH5og%>CXLv6LqQyUon`4)V=9WlJKPk?<SxIUR~*UM=dVcm
zNd*WYp!Vz{gyB+j5a^LC43P9|@C-?thnN%fJ`DhwqJ;isiqfkpn4$eMK&flaz9md%
z)S7ZWM`(H2VPG5$$BS<nPvUK5K%qruC`7M^ZmC+J63PEd4cyDA+yXixO6W|a2i6l)
zlW8@7dAkkU_Z-U-O&lec4b2@!Mpp3ai$Vw9`Q*04de8aF>O4<Vof~5ZIL6w@yq8xf
zR0rkuLW|t10#sZSR@w~Ze-6IQm&*ykBBa~YG;d7G(j^tra%amye%^s9c_$5GLQ^WQ
zA<nPv!|}&b?O;!Zb2&K~Y&jdY8<{jT&J6yMZ!>a*D5Oq3H!DF*{Y$5Bdlp9zz9SVA
z>*ihSSc=ozxyB0-=|&Y5ltm84z9|d*5f0ihCK$dbwok~d+PH+wcyXJXOVKnSWu5}W
z2(2}-VS{EpWCQgV8)wT`dDMpy=&ZN$sujK8v`VHz<PUA!F0P8k=k^aeu8dSlt`(jl
zMd!E2a`B6`gb4A@J~^?N>6~ReI^+oZncSo<Ge)=(RV1}27#976g>(&K<V(Koh>=Ab
zpfI_Em=l;?iXdTkVlo1h+dNL`k|;!2*FHweZU@(qDaGATuoo!OR6OSBf5yqa+Wy%+
z;cFbOrrY5M37g9C|Jiab1yecVYXC7N)5EVgr(uRvw%zpyC+r3nBdBVywivpt35V#S
z^vX{ds`8}2<{^omPgK1+Ij5kQ>X`O#(xiY_>}0OkPIvjyWp~w?w7XZ~{V%hP!r)pU
z?8hV3)XV_KEVbwQjx}7}F>-d1|1B2d&4)b3E37X)*_N(DCX8s8r2~_*W)}{ZkP1&>
z=Y8^)jrNi|91rt@H||I8NZ+g0`avHg5v*HNh2=oPdnA-#52$S$mcnyalhO@Os5sQk
zO3YK<b%;x3MeiB}`c%!)8Y|}!I=VHQ?Wepk<{Y`b;WG$g-t-f1`%I0@QbgaA^|f5s
z4gy|V@J#Vi>xUSmIjbue76<2zQScR#{e^~c$F&=dm@jl9zE+>~kIS#TD*LhX;VV1B
z*|RO*qIG$hFp7%4uLfN?dCe<7d)ih*;b8kGr74>lkS1paM^G8FlhlpWbXE-f`hKRF
zF)>kYJ`ZYRXUbY#WCFgb@5!1-ny-ejU=)37tsCzp(b~~(v^FYWX40Tx`@uI$!(SxZ
zuXZ!DZfFXddt}COm&oDbX*-&3*1cVC+sWD^Ol=$uY$Wd!L<VoNaz$;(lF)LK-AVNr
zyXGZtaUyJw&i!WG=%<IcC3$3iDSyoz3>W%{WP6bLEmc~6?`-;<-1l3Kjz2@vwYo>&
z^91n4vawvI`D(#1me(ZT{@AfgWqq*J?coU?>0x>|%#79Gs#W`(Mmh#6B=-QtOFbCE
zS$IchEqH_NOchr{Qg64u=0(L8Mb{~2lAa*}YUf(3*1nl;r(E<~7%9_TcA9Krcs;da
zWeKxefrL(cpKXl9K4@IR^)>PcZ6>#Db2=G2KTW-l9e#Q$$<ZIG+oa(7K@!KQ)j)j0
z<HlNEf~jPh+x{;d_u=5LbLcOM{v8}USr%0W=r>qV6n$`t=v<T<uQ#gMR(%-l;PX_~
zeD7*CTZ(AMK^co>?}8K&o6RDp(n)2>&p7Nd9S)IO?!lgBrm1ypF<Xl3nUcA`SUWTj
zwk5AYeCbefu!av)9NkmIYN%8FZ&Yl#WA57ZAkAT$#YDKDeMDL%5Q5B}%{e2pYPSy=
zdGM}1oJhf(IJs?Qzwnl)Vjdj}4T*W831C!Ev0Kr)D_lq_W-ql$3OZNM^^m<PF8U2l
zi=v#1ESi8&aQoZUROHe>_SyF}zAe-RcITg3E1ahO)+v0~5#B3nk07!bf!cDPE<9x#
zGu1p34(*GM`dup1keK0H(q}Wc4{TQzP1w3jINE|xslIzH^g;d_my%uW*pw-pi{+{c
z9Kmqp7=_P^lQQ<}v9aPR6~&6Je3i*IR&L_J-2U{Ghs+TH>N?2rLGRWpdr8OF4VJ9C
zNWz7cYh{b)=LEeRMI2KWcaE&<w%?o~npZD*ORq=kBYM<(mLt^Pj-3qNW<UEcgC9Ju
z3pEfN_lQW3M7h%?1~jG1M`<N()WX}CC{`|D&$gy83A-*v8Q=H@K8|ID>Q6{bmPE)H
zUHgt8Z!EvUME5T6Ms6HYt`LImLvmqWcVO#8MYT=LQgpHoZXSufnvW~equU!?Lq{9B
zb%40bQAB7)>R@-QB*d6J?l~OKBXy+n*}GX=91Y5BG_Hly>z(u2g6b}<{7i<}U?7Y0
zrgp8w+V7l-df%KRQCDU4P&_w>L5f4#h9a8L>+$LL*Zn>q)i}@Y8Y4(!9Tt-d9|rFv
z>Aww=bU9v1MW7iuTQw&5>#w3a0+f@f*a+dw%?%2kkBrnR4~O-J@IcN_<y(Ex^0c3_
zi8*c7OSpBXO6Ak%uv^;!&IK!AsK)Z$hpZI-iJg){tuJrNTqp!J_HFB|9hP|GFN{QI
zgh4UGe1%|3PG)bR1;>i<Up8!@=wgvtuL*d0j|1JNCZ~&>5RD`>deVfkT~mJs5ZJ>J
zIqU=t<2$#&g>+mREjjslFNEC9PVN~owwke??ekxT?%Y63IlE_z<wEayY17xHJ>2}x
zQQ_bB@+K;r1riJ?P2<*)86xhQmw+qaj~0SbM(+lH872F6GM0q*`&U{ev!gQTP~7UT
z0u)4Uvb<e)Q*asVDm+mM7KLH$4a=j<1CnL|LpQ76+lSw)?FGeenC_sB4^^o4Q;FSS
zkaOd!jYN6|e1*~dSbwI@gq{86`-nx_a-Qn3C88F|f9Bc%3v_0>BaSZI!$%gtzwhH#
zeACL=Hbvi>+QQuxPw?eUAC>#EaTO^*z4IIoApq8h_-8(D7l{2bV4W007_{4s=WBzH
z#7d6DJYu2owM&O~3F623Qd<Uc7R%(@+PCq=(Fp6)G-SbcO_-#sX)YTY`|A!6{<UJ4
zrq!1^>Q29J`qOMv2d6c9=;(IWUFIVm<v*E)GWxN4o>M9;9Uc|#*xxqlns&FF$g7xz
zX;&lvzhE#I$etk}vyeBsb?jk4ez^KA%E+bu+sCO1^#Dtf_3{wsAo@B>t6zWW^K+OA
z^>0BOp7a2!(&ygRhPny-Y)n0+{$Gs0)ZLgrzgW?2?nybY_STw?RSwVu^kFi1_kl%p
zfu@apxjF=IX>Nnfnu;HOe*P2OU{z$vzC=GA=<uo`$jciipgN9nkl|M&7Y`?6q5gZ<
zdO4St?i>e?h%lH)*#!aK_2K-K=+tZST45`P<k>@2k16uXuFUm_?*3u}Au@pr^4Cq*
z(80G>pQo=k{S52gyq!Q^ArOxUzsi}QT;~R-`MQ!h9Op>CpfA&cOAi;Xyfd6UEKt()
z5EqNKzR4Yho}po`_i>1bZhBkGZ2U`2g?4XWA_cl5&kB9o7T&xwI@;f<KD!L5bTHH8
zRlJ>>oM9Rnbqh}<8;l~SHF6C3@U$|k4hu72W!GLi4ojngL+4VF$O`+(u5Aajfv~gJ
zk#V#;-`vKRAUpn0hhnq|)xnR5YzlTk6-fnz-=WmoIh(UPf-1_FA#u(zvC67(8L&)K
z?#mKH73KGVPce^iPY6g4_p=qjo$g*?P>=At(G{K0LEpmog6>ll3d<<Z2iI7bd08F5
zEQ)mE*_fd|>@q)TUayO?FXnI|ASsDWu;q5mcIERCGqa`yGx-$iY=dY6X@!{IHhs`t
zDHt{=(5v3f-QAId;ztu7y{q4U(A+r1%HR{EkH8n1m13DGTntN}*crXm@LCF>FxzAD
zkCb|Hr)LtLNghxR^Vl1zEO#1+eYGn%tQ5TieiAn!A@gKTJm1Rl(VS~_dHT{Nkk#po
zLa69j*kGA#Z^+$Jx1v$SW6Jf&mz>haJ6;n)xzx3-8?t6{Wk?^$QJE<ZJ3y{NFf=0N
zV=XH|EWO&Ko763tF>k{5S^0H9=GXd1-bxc|zS)m@zUl3C_dM0A`qe??fA+1|-IPXP
z&SmPReP1PWnQkI=2KPhUlkeXGc|VKT;`#;Q{W8fAdwC(W$|;rCy%p+V*O!aY%^yBv
z_apnh(KqW_i{hYFjE*b}Sra03G3I&gRPNac;bUIADYilUMlgy)Gbt#D{c8B-7qduX
zm$nuAEe}RDl2Kq6X8xCtDsN<>Dj)dIKmKt`JJYK~+d+xX<7eC3rO(?y-j|)Ga0x^H
z*u1D$tk6SK`CU3hpO>Y^r170f^mmYG*V;!SkadVEik7wCuOIJu*i+3FO<tM#0)7FF
zKEBn9!?`3r>q$KE4L@=jK09M)fQ?tHu>vtgJObkFci{ZG+QaQO2^g5>fwo?GMQ+`T
zHnNen9WK=cYfFMHzk^6tQAUmgS5=96inH{F+buDOi@F*0=Y`LJ9a2%<yp6FBsr7{U
z+nx!EI;eW^Vt=!?6fKBm^I{09^3*!qP@$@HpRrFuTxMz*q7S`h!vf@!W;l8S)=SP*
zZTbeU{KM+_n<tmtXk$u`ZE)|mLew&dt(LdVS|J}!^0_9;yg;?M9nd(cS}Y%q*5A6b
zCqD65I2t!`lX*tUI?;%>V47KZtyeQ6Dz5bQ_Fk78G5Pu;8M?kOc+y$TLWo9vRI6@~
zx_VxbKgr8Yz}x5sB|g$iH*MN3o#`2|lZa=`e9x%+p7FiHIhNukH-t7@UzNMEY>qEP
z4Mt#AqkDfgHsMl?{siyBGuwk93lZC{4O9I%thMjc(Cx9vhm@E>RxY5KLwk*bW8+;d
zCNpn{jUrReO5RPhTD{Ctw&Zn4&8l6PUn5B7X`?l1hr_G=b;VgAKsL(8y4~-KAJ^7U
z$t%R$K|aT#_gM)Oc@yCrg!t0T9RGP0G*mtuwi!lMS9j0Ln^)!{g3o%^njj?oM(m78
z2m6t00@st8_gjjq)zk&4(`DoH^ZZ3shg@A?lrDW=@J>P@RP`lj(7KMDUg2@g!`+1E
zph2)Lw?sU|#0N;@mVMf)ZLgo3QIY6ctxbPFr7QH@s-(KPLbdDM(BrpX4q!N^kFMC3
z+=845k8^MmP!?uj7F(2aKq&pD3I|)dri_zSl%$$2f~6cArxnRv%-!#Pqw^LkP1y%J
zSv8!dqUe~r{<|nlZS_0W0q$deSWVOegh&7EelEMfoOv<Hmg*2&FVLquw;MAC=PkPD
z@vGHpeBC56bMI>^IYcXxFburw9-D2byt^lcOORv#a#TZ~-{VsVVucuoCyZI5Odr;P
zI8_&vY>%$qZ$k*yL;RuLK;m5Mp$}ZY7mSa*Nw}ysYfsGjPuv=~AQRW!XWoVnyA`bn
zUxXvv480qw#Z-YDjkLTH;2HU@40mb=dG<@tnP9YEouBzpm+>cZ*8>rDUOkYYRwoaJ
zIr1yRwKTZrUos`^z_7@?KSY1$Iq;lVo$!>OtytOIzH&8v<#CX__!#kA#isi<B)-h^
z_b*m{aqZHS`pDsH;Fg$ewtX>UtMtkmlB`aK5P@jPjn_|pxxh$U#e!c1MIB(HFcK=t
zN?;X_AdcNpk(Mynu;ir;<rXR`;tFU)fqq(wd|Xv<{?|^34UCq=DU?~>7O=(+QMeHX
zF2rr_-oCK5(Ta*_qm39C{Z|)?vtuHVNkB%i(IRF-iAssDJ8e5~&D-67O`egw12glR
zyNG|~4Wv+EqN#~RM(I}&7${HLvq;gBFnQenLh>cll4c_ZPgR?P6<xF&Kx%qcc4Z<1
zgGlD=L4`%VGJ?6UK}qZVlkE2wjg!p_bm?f{8<tlJbDj%xd3#Q77p^L#sfwq@uA^x5
zT&vITW<hGVmW;e2cp4UCCzGQk(DD&>+8yPiI%F{F+DF&wcS!ikRtl$X@RgQk8A1VM
z6-4ia-`xF1jXO%$aMO&1XeabmOL=x2*3N6JnoDRDP}Zp3;-~}cM9pmy7N8;2FY|u|
zjpai)P^-?+x{brs_hg5zIvjQV{<FXp5RLm)LA7v0>MgHag9g+YG2A9010@>6jS&gZ
z6lc;~?q6Fs%lJLf=bS}LQV<iMRgk6=Qv{a7```fJswA9G@INmaFmup%MW4G0Le~Ci
z)LZnH{AWE76ZUTi;B)tUpVlByhLuPBlg4fO0|>>LcQM5S%qxp73r0W~rrKHapFOkc
z-ER?Cf`>;>>_&o-00YZ1$Q|V~GOtkWr$x6G2GcGtWsV-BF8J3w5=LDSd_O-K6sBDk
zR3<|@8XNz&_d;6T;LoEmcNBhPoO-~i4y)yaG$=e0-2vBdta>dJroJt!^<DsmC()_9
z8`3u(DcA9T#W>nmU2x-9Mz>Dr&j$oIYM|40Wh>Qy2Soa=K$MW*&p*|`7?Bu;L+sTG
z8Cg(=_hdgDy(l0L_Re2^LmE6gGuIC<U3Vai1eS~OkMiBASk!y4v%r18_otOI2mnUW
zPLUC*nemP7`2K(gHKDA`7$7{1YLoM?(C9w^lz7p9kGxapY<XyY1DH>X-UDP)!Z(Ha
zAtt-LKS*%zC5}lp5NGqmE2o_R%F<J}0U5zF8ebD2+%d=p?;sDajM}Tk4+<?+OPIoJ
ze7|_V>#yj6Y`x0|1%#T<04v3{JtD$ikLMTmkq%*Ix1~LGTNJOgCx0ND4gqHuIm3RI
zCw%lcR|KZ9r2T^VR0p9O;|U}LAqvd3_3%Ny`FEp%5M&Aq+_2-GI4eUxBU{gq3Q#tA
z#J*)8;(Xl}wlBuKOH@FDeDTUE{NX?lxbYQF8Sxo;T@o$RuqSN$C#G-gk=7$i_3HMq
zHbDC_DC$iJBmW_Bm-yA-kJMYp$cFHYoaG8ezAelw4Z^rBJZj>A4TBrCOmN*>76q9z
zXS0q0+#NZ%^gtB?0hAy_(PE)xVEov!-iNvXfx#<{a^3r56pa_)Ro>42=z%g~m)GRq
z4w{{~gM)t7|8)&h<c~Cj%UMR<xH#zu<;}cA`y&Tv>0--41hmX$;?#=SGDic>#<}h_
z$MS6X2}p<bB}f1wF_(W2VV?D!fe=d4?V$RIqe{R?c3-C|poN3(v>f(X-x^5f&bS@q
zfFnPRcHO&jnsF^hncBfTXuW<&3InL1({2?9T>5`wC}{xEWV|F$er$C(^nV0GoF}+9
zbIpO|C1BRYQX3vH2jeut2KdjQ@&hn%|G$DL0pZ!Bk`+KDLFBy>pt7{U(-A0At%|Yw
zzhb}F1SCQ)!-4GqxU~jQjRA5XFv)<sKolhaAhuF(Bw)bax8NT!I^76(&;dv5j>akm
z2LwnC{fm+uf}?Fk!}0oe`-rK;e0V`uwmmtrq9@Ut=9UM<R$j698BYS8bg#~!0RTW`
z>~D0wj}ab6(ddENtIIeBoF!irQ3r_d{}4r;5wspYd**~)LTX!S)Z~7ZtcfAUw(;{2
zi}(wtG39}@vSsrgW!mRpMnD)PFjU4VCO|?0v8(!Iz`NmFg=&8!F%Be2022IZ;R8Ir
z%vx=(?I4!aunWXz{fWwxaR_f_UG?wWixU$%G9F9%jM_2=Y6XL!s9ZqrfjCN6z?A{f
z2fXxsDyE8Yi3DW`at#gu^S?@tJ45FsQIc1|V$8OT#5%ozyw(R*n?v<Wqx5K))#4cw
z1)ur{9<Lgu37})?%^Dcuo1p_%HNc|nc&-#M<=p=TQUYCm^B_z>1~Au|Q~?I^QemB1
z8qmfG*HT&m0Ir3OG~f-Wh;G#*1u)yB-2klwI`^MQN?>s8j>^XXscfP7MWB&enS_$q
zmGi~U2tYI%PTm0uH!1FufQjke!rc4<G`zaWy9Fx$g;H(;4RxZ=fbn*hml0J2WTzZt
zfOp9rqpGR*H>kbe6*AyMujHY0fa_Qu*lIuxulOwhb0-i>2~6i35I6pRE<)kdD&%jQ
zj20*`&-gIr>$_tl{*aM<g6~f*%>>tZ=$Es3u8Fi`Cso<|GTO@rw)b8a?DDV+Wvlxr
z!NBb8RG85Z2d|8nC6d*{tfI=mEVC-(=Rgbx&x6dweEvf;z+jjW4qiH(n)#eI7#9A{
zR7-z_g%&)NU`AL!Z9D-DySdsnz<?@1N<WQG9u*rCMNU7hvKyf6au}G;v6DgjH<>Z8
z5C3i|>#y)2(K6F-(*_s>0Q#fK0o_o_Fz`;w%Ba|fRMpb@X;&txJ#`9ry80_1>!AJG
zv4K5xSz;v26BNndp~=ux%vA#f0R|NGu<&#=u|3So5mEsL7N^&s{oYE7`ah2K0Mm_L
zu<$(isXff<SV#c|@%iZ3ho*Q;%=8&H0S2=ZfUy{L;N@fiv>#Cr6Wg^qq@bs6<qQH2
zJ`p&xgFzp(pUGd8g!wJdCHW_KC`1PZ&;<&>UmE}qH4XhVVRrzJDr9We?~?jIAdmwL
zFusF_T9{FThw8a}0Umi*3Xz8Vd%g1SsapUcW<F0N4=_Nn2M-nH0nj7{jOibNhqhhT
zfrnBgk}*#_{3K_7qm2s(?MEethKEa&*8dT*3fd1k0tXNGg^HPe1u$-aZW3UCH3A-5
z{#y?d`|ud(G@=^}d{pBofS6GPXuqMOmVO#rC3xtI3L$9!8xAorOfD!8p`s!{4@;c@
z;}bwX0s#b2cECf6$+LRu!dF213p6mXQ&71;`$>tR;iG`jrYErsFn}0kV5WDg(9-{L
z$rI93S0HX2VBq352HHP1`x7GcH;*PJwwh}@J#&`X=?G~5sRcP4yjOG?J#!VIj)wjZ
zV-INfJM!cn<~YC|4{ZwOi9KL;<U0!j&?SNP^VR?zP}c|af~J6nV!%@}zg75H0rPJ@
zOvf(3;D%<Eff?TYVw3R}%=qzKw-^KC(;Uqg$SIq1j)#vU@Vz?$j~1cp!L5Mw_7ihI
z=u^CfSm4DE54Pu%4@!aMZA&_EyRYT4{zeg<y!oR(zUC%Jr!3f5fE)I8ESQy-*I#NU
zvv@%r5^5<$luL4bd0t?J-Je$C<e4y>`8t*MZ!ucPNh$-i5cQfu5^i(8rD4yXp)v@+
zsKmL@SFd=OEqyna>7H*=J-yI1_6Xh}_5L-pvo&C4DZgTTYsu21A7UOKFOG>$&qN>e
zv9SYOIc92Kx4p<tQo9K4)pRB;zu($6TMEW%ZbSR#3vP00i~lv!Z^d(o$BmAAbU`Sv
z{hMvQkVgo0d?u@;0k&Ypg0GyLoNTfph+7YKLH>z0J*HEH_gBoI6xH?0+~NJ-=@PQK
z)m3Elx1?XTc6Y#5(aIu_k)j_jz8|-9&uOnSc^SkVseL;Kj@MX=fVx;zZ!7GrVfk5}
z*Vb2qhJBr1hXjgR9S^MG<Umw;Wsf|HSseAY>&0qs4G8!}7%s;jnJA!k#C94%e9H6>
z)R6sW>Bc0QcfiP%!B%?^YXIQAW*)qwQo0hn0LwO{$nozCmyQuDE=859s$?nW>b%F{
z2;!GobQo9RI^v8~$|^BH*>LvKY!7JH&%CC#9M=#h-2Rff;$obylU{`;diiHN8?hgc
z!x4t7{%pj~_&fS3JFrGW4z%kUXO;(e`BUcK%-I$I1x4SLqIATS4CO2Vc5u%v;A;^?
z#y?$}c^(lu;;f(yxhpRF*oEA9<+1-PB>Ej<0Y1w+N8&+t0yPt+zH_jEBE9Q0Vpjr>
zCrm`8NF8zALz)6W`k2*scLb=Ua!&(vLAKn=Is?|a#?a6K=FEY2xh-IoAT^551YqYJ
zp!~DD%wa&4iUmM6VDzu{-@?e0j^Xlb>Wkd3fttb=OIRnW$R!M#^QCYRrt324b8gMO
zMAS9l6i*Kv$DIB`c}Z+7{DPyZ3wxycvtuN%eGUoAl@`faA`S2qw#4Gtzfpsz0KE5U
z#u$S&h3dzs^nh#Kg_O{MjsGlu2#KHlpNk*hEr6KK+a(8;E5YyoweF#niPjOTtH=l<
zgGcV!4gaqxqOW`=;B^kL&QU|}s>5e1>whp%W0aV|j*$Wg7qi<cNf<8Ickdn*(7O`Q
z!BH#z{29xqaUQZ0Z1z%a5T!HRAXu(frFHxRO<=Bh#pOJzA${rZ&wS=R!z-G^^P-a6
za(gY7m*r%~cmQ^pqo-4X-={yC#};i7eRNlLQU?KB2IVqVcI>X*(LeAqS-M*l?EtNp
z(If2O^=B)3x38B#!}C;h8i{l6k3dPnQCO6Y*v~9SkNUG`zhT`vt9<m1SgVXEp@Evc
zYTF(PSAx$%P8b#0WDPVx0wx!4f3RlnsSO4gSl(?n7JP^8=hyYJVh(&H2yJXY)z$?h
zef^ocbUmChU{~PW6qptc%1`GUq^<;hahdu6b3E`eMG;U|t^4!NlIz2ZGYo)+h+)S-
z{G8jD6RZ<3u#BCwiwQ7UC)6P%Xj}>8Su#|)bkDi@$&8sIbcTr%6C6F4Zm9N?cz-C;
zQUcRyxKg^9zmd*62x=~37fIqL-+RV*(igc~N|>F)JNW|<=hnUh$MN$D8~US;bp}_P
zO$BrxL2_u+(L;Z@Ba?(lK`eSnicH}#Q2aJyrxhJgrgZDrR(m;)KkFAl5Dvypz_LL_
z!eJWR;X~r21LygY0>@M94_(dtLtS}VrY4I^qpzMvlTkXE;sf{tvobJw-x9<jWUvQe
zKoZ35=aOkSJuO(&4fadGqlua<M9J`-#l8>TOhBhG|KN=LX_yz=*1kB!IWC;A(xk!E
zx(>Xj4^urvkUKbpePIHzln$e<lLu-hslYs7d|GR^_O716>#gpxE<ps_Q#};WJ2;S_
ze%Hwv`;McnM^9Y5Rp)D+uX-!=nbcdcG4cz11GLHVf*LNHDwdl&5GGFi+Xjx>!J(%J
zwnUKY@juG|X1<L=mMs?yMz+<?R1JeQlTV&`%_~hfaBVnQD@|OfSi?rQanZ!#I+<D(
z6@!0-Czr3?`T+qC;JN=AU?9YsS*DB~1ws&TnrK42_t2aWJJOwkDBv71<4K)K*a7fg
zmIY!Nuq#j`1Od3OudRWN*1^$T6v|a^<pc#Bx5ngZlk>lKfJf?Na#FQ6O-i4y@@6Wy
z#;8;eWgKWQ+X~QyhaKINT5=U=-%T&lI4VZyWI8mT$@{6cN3S%s{hu4afo{CwrtWP&
zZp;rLwb<X?T*KOGgYQ#(R0q-nwsyCO{~`V4@g0~DQ~&mVO98m~Vl0a{tTeskzP-XK
zp0DET04e{q0Wo0vH)e+%Z$-HRFimexNb~c7w}4^xG+eRaa>Rdjf1`EO7}zR5PQ!`R
zpJ{p`+@N>VFg*1U)Ss=wG9jXL)KuRGiUI_%_d7yoS<M3l5L>PL4<Yuyp08gUE;j)W
z*I9syG&6qSpRs29T*W}m89%NrJ9(tevQO2o6$)3KCkMlOvRt~jc6o5$Z{Z{(;+P#Z
zcANIe=9?mu>QSbYt~y)1-_NaCI|gg;o~tF2S6sldaUN1&V=#X#qJTsEeqoczLPON+
z3sLFCS{MOW!kmlp_+|a8A*HGR=QvGCzdF7*q}eRE#t$x;qiK>=$LM`#yQ4Z3qT0N`
z<nf|vZ6pYd0#`w;Jv$27-!dC634a|@+85+DcmiiCfXx@N9%Rf-vx{GRQYq@XkJZK!
z8V;9@`X<DJORh^jFp1V9x;t&idKm6O;q3zF5`9X``sPNoA*0L8h3n<WOEv@Ms|<MN
zS6b8YuVhV9=j`1H?Cr5En33X;B^%^xKIWrPDHHGVTHL)^dAuZ9gXN`tJ{A#T;q&8U
z@iO=>7iQq{GH|^k-h85uf5<steAiT!g}4`ChFz8azQh1R7K>i<MlehHJ6X0d&p#zz
zXy4L;NQ6g{sD<N`>EUL<;f>l!Qs=E;Atf~Cl994)kFe$$X|9EdR4bL`ONwC)9!^t5
zJBkRGkC_J3-yo*>4_9gva?UpQ_2f^Y-+DYdU;g{|e}{mkjHJ;2NK$0FXI*HF3XyRl
zR}X!)MYdsvyn2lUS;Mw|48SoZF`gz5PWKk!H)PbX<syGc+P@=h(oB&;MF5)+N=V#T
z)U4F~t**o)S$a?`F+t}pX-3nP29jn8N;13vjw~%a!9yHooSRkprDUzgcYWs6@oWOr
zX8L15S#E-i(Qi*7=t!8J1oslfUqkO?6y9lM8}uhSJO06!!=T=9{0VukQzJwCDwAG^
zDdlsIda+z6=aKy)vK@w0Zxb}@xrNC2(R$8tTjn7tgfDYs#fy@$3?%&=kUtOB{{B%k
zoqqX6)l^4uw8$6S44N6pR5h{;q-mRLh5Md<5%ghXM@QGg4W{yk$bVJBVlq{2`KU<v
zYgy1WZ6?mf-0efe+K${8Zk+vXRU*;0@zr{ZrIHihSQxmr`<uVCHrhpYoHJ|oWxCfX
z?Zrex%;)S1WWwR{he0vcb1bNT;rqW1D?txdv&8)2i2b92sb7?lX22_iyxH4j%;5Su
zB`JrUzNbOTJN4m#s~;?;?3y<A<|4&r{F%xbo9G;R|Ik}&ho3g~;VK2iea_>UW?6Si
zhQ)O=3(ZG}2DL46;gYlaP8cR;s4<K7OSG#%c~{$bWxSN4y()ETt2Fq*LsU0$T))Sx
zedBjgj_+lk0{o33`Dd=Irk?RWc5dC$m!p*Yl{0ymCN?y$=je9m)+m0gO~Xf~XRy~-
z3O9lt^~5hL&96<Tu=j^}%@+Qth58y>?V9`DXJD~b$(PSUNE}a3PgNI+m*VoBpsga5
zeKNImFxxKX642(LZ~ij965G5#5-`r&iC0_{?adOLjuNJtX|ionaXM<!&NB|rGj{M(
z*|`|a$TB*KGXi7GBLmH)xDk?AhLB@v@hiJ?53yq_np6C)Q`n_X7r6@hHxWXRGAPSb
zsCkL8wac485v1`EXb2F-xp8aeSG__(mNFZ3>}WZDmmB^rXZc+ow@q)|$7}*VpH!F@
zeWlgl5B-ZSG62Wv-aS~#9eSaWQjt$z?Qfp_z|XNY64g4v3hM7#eJiwV)~b}2#o~8@
zVPojX^M54g$E8UVXb4A5_!8(m$>-@4+{#zD$|7-Wgee5-QXSZ}>(L)n3(IP0MBh8A
zR$yvYgz=qS5VYBFj0vJP<Pp_|5LA>MexGT4t*cFO2NMP5G{N~6t+36Yp<tK!Fh4?G
zdxKE)!2joYPp<swM`F6%<QX%aNEs@I$*4DpyA&$f!ARnF(c0@uPbb}pWo?mK7jIDO
z`+lRbq6#b8(mYH7nP0Wv#9Weu=PZAfbj5Tj(?^sIiK_6;FD?h96gsa)SJIhg&gP>m
z=kKHo=Em?6PiuS&{PE3D_W)XNCp=i@17f~7YBrtU0W4*jZs0DZ(_a|NXe!zxpwdJ<
zmB$ZKSw#EW<~)s|T4^{}HfgvV%3UC-cQz?%8YyOL3InVR1w@H0T_t5fLl%uAkZvmP
zdx`&5LgWuV>E?tk`ijEH>Z01ngs#xD+V<ZcmMf>Vl#CskRp*w<NaPD3JlxsUz-Q>W
z+hTSlYUL(o_1<{Wb+d7hUdjD4ftcP-vfy=YL}{P2a5}k`)TMQ$8zb3cj~E^v8|Zo2
zNsAV2$LPbkB<3dPRXyT0-x5jJFt_2;k2sapqu;SCcR8)cC>stZ$-`)Hm30XH%92|K
z^JbJ5yvt0Mx@oF|e-I)L_^#;=Q@K3cWZW~R&eHD5EX#ujo#2jR4HZEYl$IALHj|VF
z5cV%VQO}krQVzlsRAZ^R#!)EjxSY|Wg~b)QoRehgk{OPEMmivt;~xFY01Ejj5`>9I
z*@;Jnh@<A1XP&@kb(?`LjDhYFs^0d9u9%U(^=6~+Qk`Og+;u8UnY2EL$>6IAoox(P
z&Eko{M)F3In>;C??#rDPn{0`8pIwY8!$gYtw+1!#&g2JV2Fi6kB@+1g?G$jDW2opD
zIIk6;nX4F3(cA)lUsYP!Wld}hOl;UdF0sd2D^xIanv{N^k$1-i8}ug)Z2DC6Y_OB5
z=)<3XMw_N7Oc@?d8XQhmz7~JS%(ah-cW2VL)+NlJYcn*Mte`-$T)GN(0aDw#pRDbN
z+l}&C(0R<&@54YeE8)0d{H(>flO>)~9z}-Ek>m3=ni&o`{X(@?5^pBVS+&xlz-^P+
z>D&E>*q^_eY<w}EJ&28xk>bzZb{0DpD^>)mq2Op|5#OiYL+=jXK8N~&+Xs#cWS5~>
zCv6w|;$M9P-pP&d@!z4oDdw7qEyd(^Yad))L2;SOB*XU=ox1&H87Mr_nH^7;*ASGJ
z5b;FUq$O`q&frO9|92mH|CRbL0{=zezX<#nf&U`#Uj+V(!2gdC_}{<(nf!p?|C&D5
zTFWkesp3bs5ef8)MP29gDH{W}=iv<mJd$Wq^?T0Q<>a!QZuv>vtdmF)Fp~BAg%qX!
zt)mub)@ON5E}B&_*1u#kIhs2Rj{Uhf67(5%!6DiiD$&SSmKa<kN#2dnLS2bg8l0xQ
z$cZfeB=ee|HABX3zH>k2cwM#~y-l@w%i=*|3p`+lDt$JW#C*`2D1>~3KsKJN58U_M
zSMxyaLI6hyaS8=R?B_evbDEpn1r-|_*dIP>4VUK*j~r{c!k0MR$k4=Vj{?~&S#FNM
zsYVZp(k0@kNKTOpJDA#VXOC;-O9r*d9aRZ&bN-w<WLx<1)wbeiQN633DJ|hR`Gun+
zWsX~h1xyBMyv(1)Ru}Rscy4q$%4);D8kwZIh||1+<dGsIuKRlU$@843lPnY1kkKEp
zLx+@xFTXZYm}CYM2MgFWB!*B2E$?=md!>q^;#Ql4_;bQ}5@p!L2Um-V*9+S$mPwVv
z2qmdln>@2LToSn_l{E;Jb!I4?#?p<Ov}G_6(c;3gbAB|DX=ROa4=Rx)W{;^pCA!I@
z(`hJAot|iW(%PC-G#PT}N-S93{3sUdG(k&`IHjS4Yr{@tSB<mpG#`XjqtT=49|QT3
z=sFrHKLneMMk;GhNl!ScC~mUl0)@`6B4t(;;B33H{i%R6NmyvqqO#4IJSX+^25tb3
z(V34f#EcB>yrWrN_kh-l85@jz5B{h~a8I{rr_fakIU^5Yqv(NqRbr?W94TDZlp)OI
z?W?wvQ6Tf3A)GtLK9C=lr*Ofu!VKQ7Y=-DNJSn)s$(I;^ae3074oepQjZPKt-+yaC
zj|&^r{UDdkO&rm@1JwMT7?mu&l(QWmbG8E(;HRfDjy&RYI;+W6OniT;d4p=TE%R3I
zi0;AnQLMJL#g7D&EgXT$5_S^iJSz+DFjT-u2+3cNc(K%~CiY>vzoPM4l7Hu`#_ihK
zQ$u=_r3vOwtDg}j-KqAxXR%EyG|+Wl5;ugt?sNLO3RRnm{usm*IjOMwCyyfdUBq~f
z{I8QcS=3h%dOn&!vDNtbsJ}nH$XdLT+io{Q;BrK|yQ+k0`{jtoWfSy2upTp5*aRSn
z*2D4l+`GZNWQUfHIt70Ia2A^}%!et4=D3SCu*3n5Ou+v&VKA>~`Cz0UeEK?br_m`#
znUi9{``2NY6nW5PdX%N5S4#|*uSljfs@==n&aA%l`(CKU6R++~z5pZCzE<8YG~{z$
zT!BZavKO*JIJ!+Y-{zcNa^cM}DqSM<8Jvj=@>-K8nP8J7W4;IG+PS9aw>MS0UC7nK
zK=BEWgeSNIQR~ctO)v}xPl<Bm@OaG)d~}=Aa%(}ahgnMh(h4Z^(2Q0r-4e3<zO^CJ
zJ_|*`xKO*~N$BLizTcB!PJI@C5MR9PRQ-|H#MX|=eq_hR;0hvKn+nFwusEoE_~c@s
zrH=_e-9#6484KDUnDSVu_K~j+)MBIDy|JdxZq!lC?$Ahy(nwKv@MzU@kBCgIvw5&{
z=4x(Nuea52MBQ8JBz~M!n-F~Y+ZAx=Q^Z0<Wx|!0A4Y#1jBO&I*EE~Avi(I5Y|iUv
z?QS>92ik!ErsoNmGuG10lPL~@6l72=a(clUl;k<NS12FrAiix=DXM02L#1K|rs>|9
zp8noMRAnu4qeI)Vu20tAz~c*Kh)Ya}%OAL@)!;!42&F0Q;EXzI>^f=>?NyfTRqOVn
zA!A8e!^zVBE>$o`C6~w=?Z_HjbRBl;c1s0kRb}S`CFjMw<FVp@SB2cHs_efjS$Z~E
z>))lCT~Ns_stz<;kE}V}MyC1BXbOW$8YKL@)SBqBwPHd)|7(^zJ-CYOaqQWLgb8?}
zDVh>r|AT`=*$n4QG0P`}=-9QUPES=oa{B59l?hMeVoM95!)I`WG=6jd7A>rHF=sgh
zp0UG6cDBC)?=@Fz?{dzg?0B>{G6$U2a~DJ@BB+2|OMSQvYdEUd+gGYatB_y&1YO5-
zSIOThg7s|L52D`qMuH_<TDC2$crHCdxdkGl7TOsK=Kk9b%ZBL8N7O!o-}GasE?;P7
z#U}I;+e+ZT%ls~o(k9yGmTzne9Ru<rRMPs@r2=7Iz28W&?*@Est%qA6vTI|ZemTEe
z8WY4v6BLPfYxG(vc|y+meHXNL#Y2oc7EJ-s@f~{cQ8O544L^|mmV(~0@fBwh1QVS1
zSK;J3gbn6nAV%LLzFG1TBz3_po9ImXuF3(=O(d6y!dH|*h6Q_qFnNkjaXNV@iv_9b
zb9Y9r>};uTFtB^_=!u_u6+blSl*uvPiCEMhPCeM+w$7+m6Y&)ie-YK)Al^^jX{_^F
z?md}}Q5CxdlAgQrOjsABRjcAsRpOqY&9N&YpkW;c^8m-;6{0p%Ymw25`GHs)tYDQ8
z8zp&Sl;2`@M)dQ}qJkP!#9b4k)2LBySVlPp*AuhVy9C%$Jem}n5m7~{OUvP0!Fm{|
zPVq}q_Ue|Tfadp0$+v}UZ5=^(52pN<R9LR%!{d1=scQMfRmw-wr31nyibXth8@MDo
zh4DPAJlCzmAUOVpTD_N?K)g7MA!T({dr2gJ&|>FQWa8Ahw9}eyXU|qjZF@tVVc8<%
zJKR8(T5>aLOqolMo{hmF9eHOYEqtQdhyG&Nkd%f?P5yEUjTdI*+!5)5b@WL;@~nrZ
zxD*s?&B~+tP06Xe$*U=eOqVvUwYp%q7Uyv>$UvHYoN(!^qtD2ANS9i?&08@py*86c
zfk~Uyy7Y;?z4%((q}gSQogQI}F^u9Jd%#t4)n|EIBZsMU#*KwMw0@1ljfik?4M^E5
zvw1(C@M^g%B6)KHmOx^dYqmCSWKGNfpOX|l$G!GA=H`VyX#nqo_6lSl9GK4Fdpjy_
zWe?0JS^rD?S*-JND4l`rIf~qs!H1V#e-d>V!VJ-BtUT?sdZUs)asC?aPNs3MXf3ZV
zpml<>I~8{pRy2~bnM(S4C&_vXa!)?1E;RiGBz)x!f6`-C0p*U|F2#G0^s8Rc$(Ayu
z2S_9Od4qByjU^l`>`3}7+Ab({`;krvDY(#P7KQUHqMkaI{l@$X_pohYl!R_(@_tPa
zBqiwY*yubSQHrTsq1V7))kY42%USRkqe5q$MXZ8bQT!nUxE%JLu35uil257b#5T3U
zO5HQU`0gEGoi{MM9=KZR0jVJ%KB#V%?s4R!9)h_SW#%)&`<<Tl<FYGIR(&fV^NR4B
zVi#VZU+Iuq#qTT+dxr+OCw(=nQ$t@R(e%9rG#XQv-sJi-_&0;v(@2-Lvo%a=-)Vw*
z<FisaMV>&du<5iu^;%t`TEP9}m92AxuaHOoxCJ1iue&CA9BUFgaPx3*u8a%g(LHiy
z1{~ufd1=ywy$(lsxt`9nZ_iK=)C}VFNF!=QqD9-`b^3k2z=30S0Vh^n-tE0cgqY3x
z5n*WxEwG5F43BYOlom=RBEQQ}h21ywDw?g$tME%%UqyMYu)ImE%i5}HyG2wH@LW*v
zw%YK@Rk=lrXWH<HfhI5T{JdXt=4^h8U0<VQyu_lgbEvUDIHP7mASp+%aEb%7eM8jV
zl?@W`L?AXB%Ba`=;zq^#(p@VBKa{34VbfsmlJu$v-&}(|#b9vZx5Gxq-<XzDR#K9+
z+~_Or@VQiG&iF#_%M$eS$S2#n6Y9w8+kWG|Way4}BEJI+JD4jhL|&8(?3=-#bM5`!
z-^RVCkS(WX<h<r{xfqRW13h|%fz=#4_#N3-cy}_{Sshue^8L2WAxyaC<CG)`UQ=w6
z)Tafb+;IFVoXtqA16ok`^h#*Ym`sv%7_Sp@j8JWF1|9S@4ovBiu)n~jDhd8@4V$<~
z6lmBsrw+`F^`1I(B=#S<pjSjUyoN~rKkdB<TuklzKRzwUUPQJOvPMD@l2lSuqOv5W
zsis9!jcFoDg^;!EyNc}VL-s9X&5{S%Le}g;WC_3bJ?ES`old6b>GNIw|JS$sRns}w
zdEeJ{-`938=gjGgS-$qWc8^U0pTBh(<(E7D<->K4okr9hR5ka<e9LB0pOfCrOUa++
zwJ<W$cEs!hLqGgHE%Fj3Z5`0O>df7ZH!fMU(?!%b_D&z00gHdGZM<R0H+hW2qTk<|
zC*nWao9{hpQ1em9gqf1X1@-P^t6jZ3&}GHOn3!3%V+Q3k&6BS<<76@}H8k*TLU6rm
z2UpnkxPA4-;|#}DLwfngyowrQzfClwf!Y1=XIg{zI%FLUjUSpT-+e+fB`Z<aLd~(J
z)2xQYUDw>ay7Azkc3;kKIbh<oZmIs?vJ>frhYRys{hgIE?{IQw<3zmFtD*OiLqQ&I
zHZFOT?)o_2biv5q&0?qP<_z_}<v8koUZdqFd^L-2Y<v8Cr{1~q=ft7)Hx%Ao<{tKB
zuAoKVp@+MVpPwM|kJs|H*RC^t-;kJtEt(xq?ELaTmiaG}JNARlEO7DaH^AuT)dQ*8
zXXknLU%#+uPnXBGQ%_pg{oC<J%~~35L-cw(dmO*m>SXoa!Ce}?ecx8w_j6X(;F*&X
z?e#xxu9N!UWDncy;P319e+{|$<=M<{o(Enf?(yI6rhTne|Cmu9Ux}uOk83~Jtv}gd
z-L*Z!yYFm23hu9auiyX0<msc2oq2ii@lipv=j5z)8uO0zZ7I?!_);%!^y{ZT;)FLe
z4XvHtm^N*ZU>d*Y&dn_oW3*;Q3>@Wjc-7&$HzK-uoY?C0VBI-&*?RM9L-uJUzSoMD
zTyM4hV9>nPIj4<I9anEKxcbOBRy&=~{<xn$r@7;|{n@P#*=Aq7B3|F%aE&{Wt!D=3
zwz_dTYvcF<?=@D)|LS^m*af5FXIs6-sH<Q2I@B@$_q**6es3C3t!VHJiQA`uRn6S4
zKhZ3Z*DM;FKf$uuuAz&&X3Wo>nDKMzjKrBCNzN(fg5v!Ltr|RR)Q46}s?TUW)zd)d
z+{F{(78-V6f)C^xBu`&u|5tmbH3kiSOpP+Q_VwC?q&EpM1E2TqaKe61{U;BO)oN(H
zspqWSSAT68ntk^B4pZ+TX@$X$y6v8K;oXs5bvIwW9x*8D^SL*-S4Xcq96SGc)~CAW
zy-tNk<xYw0H|BHQi?y?kk1aSH>*XI;pl>s($(5z2ueCes<9<6%IOL#CXrjaFbw=G<
z_N>!eKJMV0oP(2+S{EjavRPnXeMnrj-j45%Of<CEKKamseLdp$1!Sdmi`R*7YPF(H
z;r&4)2K9C8x6}Od`<%_~Ba6GV?WGlxYH-|c)b*Ukk+(+7@S62W|8X@-zpHN_TFq;5
z%6CC8(Sdh**IwzZm@uX|*}v(C--~^6en*%`&)EH_zHawz)qh^~*xadSn*Bmwn~(1#
z2|d<-HEbC0&CqJooAfIBnX%f=buVqXIHXuUe#_p2<8*KJZMSMqgC}i=dknLx;nH#Q
z8uuS^?U$kPBai+b+F;k^_eD*=O?LVE^JGWkE6b)oJkc=b#1@l9;ThFsA;M?_oueKr
zIvp%*k^8&bM60tl(_b4MTD0c1Z0(A#lh5nv>omOZ;d1tO`P-?ov{9=K5?%ytS(%<^
z?viNddS8F(rLWD$^`2mI?ycYTGm)()jb3JCx^{u%?5q`b^_Cic>eXfbzUyu?&$?|`
zy=e3CH$5L^=8Tn%@jDyVBgU&+La?LMufdFU3%6dKxcpkvWsCfm-5>Mh>a^jz56Rz2
zJ1%mWo9{b)gn3Zwnx98b|DIgu)`n-P&&Q`ecx!X{?bLh6re={Jo6GvPYc^F`wrP6R
z!8L2IZP>)J(+$f`2Q539`RQaln|Sis#MCRFY%Y_Zsac<<-XlLYYx1Y}x>_@0tzPch
z1K%@#`}E&;_t}8>k8L6&hosL9{?(>#tBbq#%~+G%$kRD`(8CTLt{t5DY;3gmx1!)^
z%f434=hWBhS@imPU1P8GVKEmIULD*nwH|hG@^s@guZdkp<{9ifm=UXPV$|c(|KY8l
z%C1*xpi%>s8mQDjr3NZBP^p1R4OD8NQUjG5sMNs!Aq}wi|Em{7u3j?C*+Ey-=+~Ef
z2IusDE)U$>-RQvXyRLzC>ebW#(zM6u*z659y>vU;_g%bT$dr^RfA!T3bkuvjc+-n^
zqYs-LjQacIjjNXjWsgf8B;QiB=KY#A<06JPZ4~f)^4g-`KOb~I)#yjfWr^Q5`Z(9V
zyD;(2@c3(Dqc_!Nja=5M&BU5&j-roec4wQsC~j%_UH*9Awd<BCUo|d0Y8yE;P%`6q
zK=r<_hd*3u`utGqb>T7XeWu6heu#Fh(M@mRy0-VSJDX4brPI7&A6ft9dyF2-JTjlI
zOz?btYPWg3dD^Gp5qbI_8nn9j`@_KK=iRk-O<h)$;X70J!K=s1bP{iD?)*xeH+gB{
zl|xa9Lw2nyX!&S@*0NLQ$F*NKvhOfcorXgkuEpu@TfAmyeBq^r8*aHo?R#wfZE)n^
z`X@vN#qFvYWEQ<YnH<-<O0nbP*cMiW6Y6|w=N<d$_QPghdNdt4`_eH}vydt)hfUqM
z!)8Wsc6vnW=U2s|+M6G~4AA>F$Y9v7m?II!DJPnJ&#D@=%J%b<cPUT*9wN@4d(U9?
z`+k!(k7V99{op^VNPfWTenI+{;jvG@+4Npgw{7$Efb@5}j^{s$shc+9_55h#UwY9m
z&lCi|bxzPb_3*^x2z}3}`&N4exBKilVX=Emn*!&@y+6GwZ2ZLGx}{;*tjNpJ*w6X=
zLD>CnoqHQkR5eR$^SHyeQK4?XVx(6sGh!ybJYe^xe@49z-%?s%>Y3a5Th;dUdOFW`
z->-9j(@GnO+0mARWH&tzm~S7P6L6^Np(pjWOgLV@-}$|xzb#qv?ZPFCNopUuK60LP
zLoYu{?Q6%4Uk&<9nvmPvVbc47KNtSIwRX@`y~OsvlDEdZ8Jb@xzuaM4&%JN;hksc*
zx%s3<n(cabYP{)Inw5Rn&|OQ0*L!zQ+OTc!#rKbRjC<bYO0%;oYTG14*E%(7O2I(w
z2V1*_ewumVO2a!Ve3n?{_sMTwr<HEIs%_SJpAytR=wZLj&h<p-o@G5#-}IUAR(!})
zz3S$SoM*m;z2fTUzgXfJwryb8)bo>j#cq1=s!0FYRqys;Yu&%h-}Clk*9&!rU6|)K
zaBa(PrWd*y#g6g_IAB#gYg3c42kM0CrHpBM$9J6g>YYgzH7xS#9Jh|#H0Pl_riV`F
zdRC9Fop^Sw$6#a2caLukIdS^J%z~o>ejooCdw#e6=F`UY-%p#_Bg9}yHS=8$#$0dm
zsM&-Llk<yiyv%Pf*5}x-4b~?dzBjpN^3dqey9KxQ>=hL6_?@RWMY!|vZ;eHZ<;MSq
zvQlMND>YE5fl3WjYM@dBl^UqjK&1vMHBhO6{|*hX>;Gz9BUev%zawkXMf*mNGag%x
z)~of`w%yKx-iaMj*Hk%kcx>94v%=(@cYD0Xeavim`P%jCW81G^Jn+cHs4fo{#*8+1
zad<iR;n53rha59qo^|RnXT!IYP2V4EsXgm`hewl|b*MM!;?<aK(c&#Dj|R`aquIB+
zdHtG=FXTr5=y2%69gBrd=7CEzLS4N+_|KG&u4kVkIoc}u%(M?vmR;`k)~!vE&1z{U
zKm8R+twKG99hkA8L1bU+?hpJN^=mZjbXHxb==_2X_A81OeAn^3UH8?5ycHjIW!fg%
z*uTA-dN-r@&~a0C9$nwi^zNI*-IvUry`+^>ySkk=<hqW(7+Gscyt_$=(Xmw>Jp&Wu
zlP`;hegEuQc-z0(>TW*^@;AHu{XON~(>u#9R*kgU++lmd5RWPA3*84t;~gZ+Px&|g
zH2ZSQ61{I4D{F{GKX)@4)>yam)sL~RRSmB=A1#V#H0#{i9kY^OopG5L?eWT}OQ5J<
zFKO%09r|G>S5<A?M!bGeBk2^Yk1zJNT5<UBvmS2e1{}F!8{BS=N#@7u=SQ}i=CtFK
zO-$q1Pa94|4%z>*D0bMP!2UfXACE6uROivnB=4;eaWRPo$y54N-`(r$=uyvqUo#BP
zHT7NHv)a5W4~GAacAwzCcg_008=RgaIoIL&jG$)G8;iVL#?*@H@Z-(Hxw|rJ*u>j+
z`@CadX034Zad*FdX|exq&y(qQyK1UAi1Rz0Fh2TpNQX)7gpUJkwVRI9&(j^VzQ+vp
zOM^eG&%UVJC3!*AnW>u}G)$}4uv?}iHTB5;&AWH#=hgO@R&BfgpdH&sKS@pS89TSA
zNzR_L-Ztxsqh*ED*EUGMC|&rv;JDw4L!UO)2|0CQUF2WW^dC*U89Qrr)prJuH*FhG
z;IzR~G^73(SI;JcTgx9EUshjpl>X&_+4rxs?GtyQ_sc!QQ!F}0Y{>ayH}05a)SdL>
zHDW_dUPV9bd+O;<cXNvm*R0M)npMp$nw9@)hvd}nch_ob`KOH^9<*rPs;twa_L$zy
zx~^ttxmvf=sWV!~pRP+t+;-($=7#)CW1VLE#dS8gEH!QCWAQ`dlg$Cc|Bhg*<XNeK
zN)1$Mpi%>s8mQDjr3NZBP^p1R4OD92e^CSM`oHs`$kl5+YtQxaXmC8t|L)E=8(U=U
zPYS7dFWEJ-aCnGbjXfSM+f>=}{_Xf5_P693t<RiYd}fDw(5&tvkEdblZ}>Pjwwbqa
ztfzx>hqGHRubdj_>=rxLX8n@01M3fIl4NGL=lF`A4|^6J3x9AaBV^@|`{5_TuU<X!
z{@2lw`Kw>Acs}-7ldT$hYGVdOTsYR)uEDbQYBvXKe;uDXMlbhcje;Xpq(2_E&v}%y
zFuQq+=!`|;%esAPxlQWhmeJSS?V8%u&a<=%#9KEV`f-2unI%Q9b$xzUpVC+JRF#-c
zdAB<YUdb<Y{HtAXT0`}q<5|;c+k{sQuJim*exm8KLt43`G-F>hJ2}Bl^Y)|G>X8~v
z4K6-6))D_~U&Y~u&el0Qoda%G8PL_NmGP9`gV*RCO<1}2l3B!%gt~5%XBmHa^JZJW
zxB7c`<u|MSqQ!8(8MSf)_NMtY)U?SAylEPDAfZaeq%9_g|H>%1yye5f+|j$DNACI@
zy6MVWr>^xPMxh1Abi;<k{xFNYXYSE&{i0=!o^0t=6#Vz(4NqUL`+)DJW*(a79`;=4
zN32Uh1pZ&Dx!3)`sXdq7?0EQ^afgxjSGoo#r^`c<TW#%;FfCE1_;`XK_I%418){T-
ztkWcAS^YtuYTXQ*)h179F?j6OTW!Y8Nb|2VP;bcdK@ZegHC*!Hu0eyGA>#F`18i%o
zoBL>UQ_ak*+mGx=pK~92_`snv4IBm>EE+VXbJ~O<edbK+a`thD+V@8_css|c_I+P>
z;g+B+qLY&hlTVz^kDU`4`!w%|+V4wi-zF89tl7F`)#30qLB~2izSc5B?0)Z@#;Bg@
zi%&OP;ybA46^}74-RmtsSm$8xXT3Zh)^C~jslCtZr8ZeZ14q>8H0WFPYfF8yhDt`v
z?lh>^q?<(&yOEDB^?BTWRKTePwRYtV+aK6+ztinsQ@(jDtu3(Wd8f_$;fJeSHO<NN
z%Sudsx$R^Pzebr}pNm`8bkfvX|5-B?W{O%I_xrxx!efs!!Zn53v4aa2oJjiV@_ntX
zf#0SLy8=3W?)Rnh%OhHS&YKK;=u#MTOPE&w?YN$IJU^sL(z>0kADz?gecP|T4X4M=
zFDm}nL#uhiYdTZ&`=>9h)2Qj!lxy<6?M%nE-S+8eaoYWPUyL8FbJjffG(p|M<#VCm
zN&WC}<G@y{_aBZH4d`F3(M!R4lNxV4w+6JaPwseg*~e=4r`C8nC@ps8!@A!(9D36t
z;I&=4$)dB{8?5QyH*B(Oe3jgG0k=YyEVn;4r?zM3k*P^d-W;uUF)4A@g_J<2e6QMu
z>woL$_{{s{te4xjYgCmY9p4rg_NZIMH8FZ$eeB;BXS$s%ifb_ASjVjN9y{~5wK=xt
zLh?SF;H5$DLw<G*{JX^~%Tr&XYEK#oLQ;(59;4x_dPR1)b#Yo%ugg6a`AxI-4fz$X
zm3wjS#_lc5vJM7UzcA_dTtTix7W>zPd+HA||H^N^f7^yRA@*^jMwsO~?De$Y@@wZ@
z^{+jx66$J%u0MSIS?az~332C!+NB?keBY?*(SgTv1y=304?A|wZQy=g>kl#6AFce}
z7u6WI>(S)E$iAD8)!kQAJJ~Zv^RM~d8M6(aYkkogm#EY4l1@jThgAi`8$`GCG|+45
zy||@)2hZT3wtMRixxU=@!1)_NAqxXf=NP4?O8dnwIrB5lC(@y5^QlX8dcK+4?)0lC
zx6<9yBj?^6-sEfl@kSTV`cDqn(s1=2t5#d%5{`b`cj-`-b#)HT&@WbhvaeI!>ht_w
zjk-85ENWeJz_5ukChaYJm^J^N@Ob*KHf|@j&5AizJbP%Y%|^Yvwvj^psz+D6iW(a_
zY~~$NhQ^+@8qJ+vuKT?3h5D~H{q2GmPng=q*r!MP?TZ(^?W1W>?^?3f+WJFgb-c82
zQApjB8(Mlg7mU|gQa$v_@3F&^-VeBW_ebp9J(JfLiF9Y_7x`r*eth{+!>xhY_(^tt
zUzV+{<ygF_t;X@Zx(R0`VV$emcO7eIwsfLh-c2i=c}M!REZ98w(#Gux@vW;ku6+5e
zZf@3|2CEMa`}ARU+apOU0w>NHGUm|ySAG{Y9?uw^d?9f1fP}b3?OS@rHfZTR>6O!z
zoM%Uq2E=WHopP${6i8=(9i#rs@Q9xJceR<#3VKY}vRKh_UBtkIxR{I<)p9S4i(g}(
zk*XsNtdbi!{mRm&caAm6u50l;ZbA(mY1jUCua|494c?Ftc;TJC#`hJodUgx9$cvn>
zBmGrmyUig(Y@FA%T1TPuqM`xy2HcswUXnRvt*_;yJs;w;a_XCmO1`1~GkHwZ@tGdO
z>)RE%4X$c=Vb8N>&0@N4`51Rk<B?kD&yj<=o%EQPQ50#J_rtPzLBGTari-RM-*)@l
z=Ceag?i^d&CUS&bfX=Ss5nYz$)zf)YUD7~jb+nh=K|}rXzem=X)3<rnz~zHasWtas
zVY&5IpD~kaZpqlvR@%A#>)7T;rXBA4a?Ri=J<dOBT41$xPUyL1#(~A#KRDMp9kRgf
zi^a)JO(u)CFJ1KN*1DLC#xjl9uJhC7?e96Z>eFdd)x6XjOQ+<7P1pMRLsw^qn~i4i
zsM!fQCvd)H>R`KI*E+l6TD5=tqozf=dYyT3w#Io$8djY$uhYtG)<kXQu#6oc!M*Zs
z*RU{GpT8r{w-xvB_JbVtU-cJfJ)2#}V!-oDxi)vxCoY)zpm@fCpPmynI(#3oe?@<d
zxCxt{TY1*i8ZvYGk<6o)YIu!KUh3y}L09cfgIK|{{1>jH>Uj7Su8CT(M@Mbvf_;JW
z_UHsPeXiH9{Z})i6O;SLCH@uIC+~^-Ew@=Y&97Bi?0Y^cV{iM>>0|0Yo)lrG8NImw
zw7BEzTl79WNUrwV<ZxVo+u^&{a&P_|xmD;rwr^hJhPAyj!cVE|Ha&YIdBA6fRzqby
z(hd)wQLUNZf<ta!vVXp*`Yl}$xv>9VIop<wnkC)zLfvY5U+3_9VUc@o<m}zNBmdRg
z(0<QWT)KTHCdAL6OJY{rD)&}BU1E6AB=z0Jui-&=ADo&cX#TeThRKcF?i-pT%bSt@
zwqsD#$Jlm##Ya3{9B*32)M>gX+4933^}g?Q?;pG6-e$3I?9UY^$B1?pKY6RU<9gqP
z5zPzcO4`Kj9r|$f_75@rF12sG%iYO%)waeCZ@;~)v;E{}hXG4|oPB?+?G1++hu%0$
z92u>Vm42{_Meg}o#)XHR7Ckp!7&TF&`OEdrmJy*nzeR16bcz!$Fvdu>#d&z*{srHQ
z^26Nw85`xlb4?o@{C9qX3+K=1uaGtozHPI4sey;Zl{>Qif;TSDG<MXjt|J|}DD%<l
z;}QdV7Z=w)i_Q%<j!CiKb2?=G_klTX+wAjtRTm`=%xU^_!0hXz>!#N2@$vp4tF2)=
zP4aGSxgxaBSbW(;Jzf^zF|oz2?T)8CJwJHH&a2jSjC{mByNFM_)ZRYUOGz6qDCi)1
z*}`P~;oiyaPUE+ly{tF9+2n(}sxF!NyIPBj!lM7hsb{6=N)1$Mpi%>s8u(w-0K5Lz
z%*Oryzxz7a4ADI|E;%-3gY&xnQmvVq)pVLob<l3Mx<-?g64zSs(qXz&Jy+`9&vcB`
zZlvXC7Vlsb-!fr}?vzo}4ATtjOwBGhUfb$j>XGQYg5LS}C-iigGj8GSvyDT8W;8cT
zZu5EF&E4^>nuZtThAuzbv0=frooj!eEjDqHn&h^fHas%qW5ZU3b+a!Y8*Ccjan-;r
zdEK<%_a6PyTQ1%FBk}xz57VQo&HOq=XmK`db@lfR0z&KUU4E`<$J;l4YP@=HamK)F
zU7P3=14p0hz5R*C{^`F)Ke#;YM<d+_*Tolq{J!uyGO>2_uydW%zC01s?J_rZlDy-a
zC+$CXo11F#RJf&RcVe<lOlrvCQz4?*CpX+8XEkmi+&JcBhaA^)GqNA1{fh78Rr6b)
zFIjV}YI$qhp8EAmJ++&a;s2uLDn(anpi%>s8mQDjr3NZBP^p1R4OD8NQUjG5sMJ8E
z2L8DQO#Fi+V!(y?{q<WQ2vGBt$;FXk6JIV58GWiIFcfI0aj!9F3vr;0Uj;@%T!YWu
zngW3a{%WXcDXu9l;6t50$i&}_axkxe$u0+@jaH?UgXscH5*nkbJ%b6R96lky)Iyu8
z;g|3d2qHmoEvMFeV64lLei#^2{IWVchqE{poW-HzrKAOo@JqEvBnuc%D262|zJ$_F
zNg-zs!5NH8^x`Eb)+%I?TADCi9B^z48-kKoPQQ8sQ&0{@1Pt*JR;$58Rynm60+U@1
z<}ffRDlj3Upir4uuJB$~`W@8LE=L>hfgwr+^FMlc6<jne2h$W7!*VcPfXM)cXr71_
z2y8*gR8Rzhssa;<P#o$vL6EDY5R5Z01<G2$gv&)Td7%<R)q+1)A)E;x5fVU<9PLq1
z7+GH6<BeMQ^T(b}#YL$Kj0re{v7!)J8frZuV<1hT{+RfQ<RY3vda0oXhNX&$Pk1;(
zQrJtaBXg?!YZA#astT%x8VQpc%IoC7M9N~&5MbQ#*??T)l$Gcg@yzP@EuF_0U>Y!n
z<zRLa<)M(=p`oT8DG=OHoR|DKOk-**Fk;dyUO7)=bZ|vOElOdh(xB@!rlta8iciXC
zO5z^Vn0g9KcF9Z1V-mHb)WNTY+AXM(SdLqYX^b|=8fqQsGcKkY%$TS2jpp2o^jSUH
z)O8hnydj84WeYP}5lhme)x?01pwNI$7`1%F0YRbExMcu7)(Wk_d-=^(Ff;?kmB9!Y
z&!lRRUJ%`Kt1_NRdP#Yvf)VF~@k~=tDbM6wR-7=NNqRwfCh;w9VLX%gBXI!@HIm;6
znp*}DjR8PZuA!#Sy@)eLV{tg9G$s{yB4d7u0iI+(Qqh~y2DjVfl2ShuhR8Ail?(i@
z)(^si)(?pnZejEz0h!W|BBr<?oDGA14F7?C(txG(6X5Gh6jDMzgsBL8;#BBIYSOc-
zSr0SC2%_)}Qb`bwS{Y0&1!X!Yt}qs5FJgCAhoqiRNLj;F5ob*9U58pqk5bx#Y7eo+
zRn#Qj#umOUxUvY6@2e0~sxZD94?5+m#1FZJu?4XgWeX!5kzC0wJHejhJSzL087vTx
z7~_`1z>u6rWxtyIlm+;CU`WoRvfnH&1N!VbFhpZ2vmY=dpHZ3ZBxJF+V3@uGhU7DC
z5H!^IeImGTz*wU_lugUdY?`?44fa%KOF%7dEHiO>5LYNa3>C>0BQ@)YOpbC@_y%bY
zk<KlQ-3>uj_@QFfT?#{wp4K4$DMyhSI%xB`bBw(vxs@J02}U0nDVR|9x?Dz!1Oj8y
zcVH=77~+Tz>jlhmsF$)ulQQjY4@`HZEn0vNzYHO=@cSoQFnYd-s+6851WEjSMKZsN
z>6!Q#rDuLynE0~BB}&h5lroAJ+H2EPjgE^vAV}-EB@mcC&<~|&6YfR&Y&<Y=I98?S
z>A>s(fYNi{GWjeZeDGVI4qu=)r9<C9kt{?M$*NGncQtrWzG_&uuhO$Y)}M)%xW2*o
zGplF54jDbWqV}Kk%;d4vz)*Rt3_kR1kYLbsw3$DqnAi?=HyYt++YZ-BHu%$Qa4Q(J
zY{uA>_%nCriK>GAzyvF8nnXyvk_k)-sH*bVbznXyZMqg{t_}&)hrkR|#t!i!etAV?
z;rCB=CpA9f`U|k9@)%<kmKPIWn!r%L;U|%h1!)Q25QdAf1PK`Lt;k~-<M_>0j&T%*
z=$RiAjBi*&e0eeG4GiTQI4D&Z-$((yJm1(13{+62Z-6XN2LsFIjNMb=l3Ik!DRqGP
zp|tz9GI}o%Gy^6ZwN%;N7??!3C>6`Cp#nau9>Dl2?cRdZ4(7xLn2d7l?hH&LNGQ+l
z9nl2J?g8P#@Cd0iOeQa3dVweSNb##!!}6P}Xwo=bPr(soQ?C9PFPH_)?s72OfpLY=
z+4b@XP`pt~;R*N)9fM+xzO$4kppZf&X(;`WYBRC>ZM2#@&#sssMiMvT6vhwJKqZaP
zP&33Qw=i?9bdU*yvepGAGImv~=!Kd#kVKo@@)bhvhcdnz-3glD0&u1Y#cYHVQsYi*
z!j4z!0iyw4)O@TNUl3~O69q$as{FYlFzIk+%AftfhwmU3z{H~!q(|sG9{{>7FnLf8
z)%UXJV=llrKmz5@WY)zU512e=1qqZt3q!>dLc;t?ES!|{F}Nsch^qORHLerIl!>9|
zW2DV!7BJklfTSp+aB<{n#$NY9<C`M@m@Ftz)jS~r7_!Gm*}@Qf_-c#?rV$KE*`n-u
zLJ}~<QU9c8Mu&2x4&{<?<b;y>02~CXz{gdgL&GxlLoi!`iK8);gB=3J6rw5VBulWp
zAPAu_(oZN72u9#oF;Y{MD1pFRNx^|28+^0@pt1ztrl*17hU&kG_X4F&iN|sa6YrTI
zQ}N!23&0r@@0V~)TA`t4giq2Rwor2tCp!m_6g@4q(@u~y#@1RDhRz#?z))Hx982|G
zG5@ji^u`rd7EVeON|s$erRK|8gDChodAg#WYCcZ=EL36OQbwMhp2YrShDFWCa8RO{
z0K=UA2}7>u!V}EbF!5ytMH9)~@&cG|%J>>axgr-L_yUXp8bswoU8s`vOa@9+;tH~=
ze5eh~aAgc01DemL88EAnE~tEH$*|}AZ3~Q{iZ~_UuD}qZQ~7W+PKZacg^6Wy4}+fb
z2ZaW4?-VhyV+ezimX?|8=%L9P*UQU?qzO=E*?biKW9v!!t=fNV`vFo8#?jNXd`v$Q
zoqv)=Wb}m&<tG{c$$<*EIwY7uzzl{>sr)P?BwiT_OdM*f%Flto=+;-ApXI<<tFSv`
z)18n-*)&8flX0^%wxi_u=gcz7riLo#>J*09>nr+1TF;h$lQUJ?oz78lU`^#HYqXwt
z30s)FnhO%K05wNquahGtuNL5#%B%df9>K*zhXYSDHhl`0C6?osIl$~x+O!(l!!Ij<
z=?0ZhIiWT%+`LL^qydwHE2?tBUSQmmc7Kmrd~qj$xvk6zBtrP*A~4=6e1p`u3Cw0?
zP8b0SH{CJ*a{*1D{0BiP^p|!qWqk;zGBMVBhDf}M5tiRv0Syr-G0IstMIja>w&s@q
zGLNF~6BU9z<t<QMsls?mG3cti<uNp7a+dLyS3vW5y#r<+Zn&tLp%nv@U5+QzL@Kh;
zWir5M$l|M3516=etlW~MG&HlkmEAq1mB|g43Bo|JL@JhrD@@H~ep7{&iM_zHRH>M~
z`1&JkJEP5waARB%vuZCu;rmB#V4jqtXGhX^IJK%wI|7(wrJn7GcwX@XCPjswnMkP$
zSyZG*!^IJPVVz`RNtiDiEn(n8>CmuD9TLGYL>3)QRIe9<q6_JYu~L9^jSUvx@J31s
zsg(lEZm5fz<r2zaP_#Li3!r#|CE;3nUyF(S@4!e^VECRucJo^kfy(l4JVDt)#Tr)0
zLUF*Xb2H#=RGaxbNz7P4MkI6={W9Y+!5I_XTHr%Pw-Ko5XsOZ`S{IyWyw2TQAV?^M
zK#m7S2l<(b?w_PtywVRCYuJJs3&!&Wp@tJMhDy&QvlGSwEW1&_WaE^&drQ##5(LZ>
zrT3B@BYtQ`0P_NYMn(z^wZHgGK#2n;1GOnVm%XN*0}Of2fyyM>5JWW27A6YXpruq4
zM1+g6Z>*SLut6YL4n8Sh@~82FaNG%uA=pzsPbf!0DPU?TM-Yk+>6aHUTyy*zKUB&p
zYb`^MAY|{0^qAT=CT(I1<6{Iv`52i^a`i*d*U=02cItFyi$sHAyi(;MFm?18A2Z||
z6!^Em?8k!)l#e-=iTMhQYdJnv4XLqCQ)ZNT4bFU4^?_M|PEr0tB=SphVDiviRsPc+
z7;EsM{Kpkc;7lb7<3AQk|A~}G%FEu9A&ns|{ZB_CQ^v>suqR`VHeWJk>~)VwEYV`>
z&;}S2m|N9|?+Q$u(iVoO$k($Fm~Tp3l)Wbt3=9d1Kk1p#;b^4}@#KUsP!#GX5tp3$
zk0*Q-IxKt6kE?<tU@~BCc1$5Vg$|6y2t=?C6mPVLjnfl^!ogf1e2~N_KFkQhT97<Z
zWT4>2eEgfpwPs|grJ&E;!i)|UP&Q!j7DFxoXUr&*joOq}$xN6Vl}vQofsd*YBo95^
z)RFO)b0UGjlPB*DFkVV;@!`7@YJ3Mq0~vsdZau^?zf{2pLwXD-`elkwUiSsMz*sb6
zqT2#Z=X;$YFyw9)oB@0m@&$on42+=)uOpSrfk{$E_ia#!#@WJn<`guO8Xd50BM&Tj
zV^#sS1s^HYPrRk9=q4avV8{T@dfhls@-VArDY1k?^Px1e8k83t%q~#8kwsY#zY0o$
zlEU~Z)gGcBZ?I~uXeaaWZ+unRLNy1by7DjMt0Q0{%2zuouQ3OV9|i&gRnvAylS`E+
zAcf9n{P1HNtSL(&1cLX#97ndHvetOM^Pt90V4AdG{4kYkP@1C_7?9Xe<%fE}NWq8N
zZSDb|M+ZukR=`+70_BI(OI@W-O@Og3#}9h~69_)kC}RjgFnNi>_~9b7S?Px%$dV;y
zD2&~+8&WMT%MbZ>=Z<DXBy;E5n(<YBw-qh3N1MI(G4?8Zlo<+)875}<1G}3j>XrWR
zR$OFkVTj9ofnmUGGGc6DRhot3d=fC;D)h|gaD!5Zq}mK3U0ME(4qZ`;IAEE2W}aqI
z>X0D$WhJEd-p}Ze-2dR)V<Rv=<>)XS7(;j{<<Eu?#Mj|zV4f*;$d6^xx~ss%{R16d
zQR+~NjTGOKZb;Y&?t%~HhlXY9hhPeUDNy(-Msq?CR70p~V+3I{TSHL1ITT|Oju?qp
zi~}f19Evw685~MDD5i}|)|v*2H;0k}N`aEX_k_QpU+%JqiKc(z39d>{P;`~^!DP{R
z7>%SWjj}Q={T#@0V5lq_2_%2ba|*o(KEQaC_ZaNNb7YZ|E5IZvJu0tE*USaxNLwb0
zdci07B_9}TrPrAPz-RRZm;#Wg^<W;~Em2DoX|EFoC_vHo&QJj#rVY$VWu_%NOZ?Il
zm=qP>OKP+MCIJ}yfvh+PDm81Ozk3peeo>j0+F2^OB4m7{pb6E|GBW^uPl5Ffeq=M5
zR;t1`NSnK%u~`i?==E0-X*nTtN?%~eXoa9czf3sSm=kA$QQFH8WWJugfblYBY|)>o
z%J~}zOr8oo^YkNNBE=hgh>zeI20BA3`z|mEA}TZLVGYh?^aF;Xbaz6VITW*_XgG&r
z?hoIfDfAOuUm5HCE9sUz>2^Hn={)IPJm~_=QiyiZ3)&OBaaLa6$&&<}es#CxN#D+s
zK9nb2t3uMvc+$;y($jd-$=ZsmdF={GH|0qu&$x25VTK0{xD<0Mp7cf)l1`rU;K=H3
z#FM_5C*6!E-LOK^+wr6~<4K>(liq<Ry<LT*8}X!*`@<Y<n31uGLosj3lWtle>4rS%
zwRqB_dD6*FGTk0J-YqI5y%|rsCQmwfR)pJkvIESOZe1bijd;?Fks>&<%p^SNRe91K
zDkNQ(C%up--H#{z7p5QFzPnaPx;9Vx8=iD8p7cVV^br-3UW+H4+(+eV-km4?1y8zn
zg`|@w*f_Gf-{48N<4M24lO9+h=>negOFZe8Jn3h7(xnxWPM+}N_WdYNI@yutV9Yo3
zq(@drdLd7GI#0S0Px?}x^tcL1FW^bv&XeAZCw&G_dP0Syzu-w<&68e>CtdPiB>gE*
z`eL4RO`de}Jp|el=scfPp}yzwq|fC^CwJ1hUT4Qjr`H9`F*;D|0ukAy4hr)T`bUJa
zw@bq@H%?Ks5UX1BrgUNE#uSFk)yXb07s#72mi6ph>G?C4g+eT|uDpb6=sskT-f;`F
zJEsk8ptHb`ojG)}RGEf;oodLeK~4e9-{4IIW^D^*4RWOv2kLYUFnXPtb>-kPF`I!&
zLK9T&&K&?IRk=>t0zP~NoCc;ja-BA=YN!!z{Bi{tVsz4D4K@CHn$)-hj26~t1gfEC
zjZbvHL}7N8$hTxE-yj#C6F8@+qahizZ<MuWr0;kL*fkNU-ljw?N^XBpvKc-K2|*<&
z>dO0!lq}L_fJ?WTUX@7cD;i}ykIh@7mE}M5ea0LAz{ki_*p!c9b4KBjipDEH63~nI
z#*B|GaiuJ$ysS7_42+~D<72(JhM=MAfbs9l_!!wm=KIDDU^2?_v7^8Y?8vNzWst?^
za~_!XN*{xhlu@n&V_1%lJpjf*>0=Jy!rd=md@M)lV?v=+C=~gI_(@8BFZ4C|<f+I%
zq<KZa>;@nFz&A)vVEaWB%H$}D55bVwVKF#Su4?0OOzM>81Cnx$ABTQHMZgd$w=g*>
z7uTp9#qBpiGdao(f>h-wUEF$VJeKhvGIJ$pZZQOABX&WleUho%i}aZZFa_oKMjv2~
zVw;89v+_Yre&-y4u`b8%?!Y7|?QRM_M4N13?EaB!cYp33W`RIN+FXv^CBP7$FVF52
zAJukGLK8_#|5Ll?{R6vOLy#)FC!k-GgBiOID%0+Zfoa#8v3oeH;1WmcfH8#osTz0w
z0;V}~3uSi^YV+-W3>fcn?0z1YjDKMFI%p3yrud73#U&bx!@y8c2qCfa7JqqQL};);
zP-1RF&zc0dqe@y@W(?9}K?<%@HpM}y!i)tfW0~5o>q>T1NmkKNBS*yB*h25=nXzqV
zcKKAaS($B8z(~<Ter{oQ3wspvW_p>ZqG%6;F*AcII27}va4?!uT4Vo8`Wv3~G@f)_
zo^<lPD_S}|&pf8W?o58x{-3j{StirwvgQEvKCL@Ut?0#{F+J><wPzXgF<!s^mF6$;
zG#|~={2TZW*Y0Ml=4rb(Vzm0Nq@U+Wm-D1Q<w<YJlWtfc>6tv~5}x#2p7g3b>Fp{c
zJ%cCRk0<>GPx@DQI5*-<D<u6WPr4UR`X!$9r#$K8nG;2Z{8x5A$dm5Qlb*?wPTq#Z
z?Ynh_q^I+wJMp9+<w-xzlkQL<>AQK-?Re7DdD6G?q`Ou~I{79oCziWg@}zI)Nl)TQ
zA5kIcn|ad7?3B|UvoxOcXr6TM3Q14nN$<#$zM3c9pC>)ALef)s(v5i17xSb$@uW*D
zBz-kcI$2k8H9wapoxE9z8*z~plD?cLU6&_4o+rH#PkLO1q%Y=4uf>xd&6BRhlb%o^
z=}A24nmp-pp7eLjtU$T0OsbIdxjgB`%$!6yuaoek=kla4uaNWvp7cVVbU&W-OFZc*
z6_Os$lm3P$-HRuEKTrDR3Q3RSNq@?d?#`2*!jrzcLeiso(#c){H{P9i(&zG|AFPn{
zNS<`E)5Vo;$CEDSNzbT|bU9Bt*~{fhx8zCpVx`loi7aG*@>Y>7A7&L<LKZzY&SrXn
zR+KKxu5}77AT5-=(xi8-|H&$n@K^Ly#VV3*GqZ{;(Pp~uc`EwOtT_G$`(;+B>=)@B
zw=lhkXY#6wl~gw48){@Pi(7d8`d4#WEoP0z<kjxEOnVrLnNw*$G=IRZCTPu*_jyuY
z=gYnk5pM%!9$LMLJrGLshGl!p|De|q{k>GShj=f#Q^wv-5ilhCLHWR-gJqPec-W21
z!wH8!-A`!%%nM~S5l`TUR7+sua0%fIKHT@a5V1mE>Yb?G%)TEX3ObQT?G&615r-k-
z5MSv;?4&C(AtDLB--m}Nl@yT=UWkKA)KdhcmM@L5R$}md*q~6kzra*U2@eVg6=A^D
zVkvT2sBef=Ks|Xy_>f|O_E7gL8Hzn9)ZJT#;sHvak`Jln4T_XQ83zh=ub<TNpCH3G
z{RIL;B}Nz)s!)fkl0s<*El^Uz<uZvl6zr9h@pQ+iXZaMIWn%EfZlMx`w|4jn@s18`
zn+vdINB3(I+LJ<ChwAA{P?$LhMcEBXAr6UsDauh$n8>9lw?QF=oKci~P`=W>K~cVd
z!o(m&(ZKilnAH|VX#$Ehr<OS=#kj~yw*`gSxut5kgF*_qn@3T6K_R=}#Oo-^R0YOb
z@cTERKpPUFh<XnNtBv`<Ff%Kv)+$h#c_u~KOE@Da$h`oHauF1+4j+J$fv{qw{{)2;
zN;)}epo<R}gQb`d3JS~F4wOs?Vf#K*fiWymO9BdsQI<~vC>Efw{aOhMGp5je_d}#`
zF#CZaPveq40fVoIkar#v$*flI0prTi>IYD?IrjPm3b`}JO4r7>Ix;x5T7z<l(=T&S
zxNWuvC52OK3@D_q?Fj;f8HFiZOap~^PclVWOeh>ahe5GM>SOhM9h5ipSU}Z!14=f>
zf;I7!H#75ue#jT{o!tf2Xb-7D)iMC49Y-6+pqO$fmY|TrN*@TyTrgm*ECz+^Q3;^9
za`+?@J{<o!017jor`mH76l+c|9)Q9;7e`@Uf?~;$UKP)(H{!@@016o_*ftx1G6F=_
z%I2Un<M0^*N;?il2uhM7BQYA2gOb8&;e1e-^&r*4R8X=x7CZ%tH;3{D6t+D=A>NHA
z6hd~%xF`mOOVNR&GOIsIR%cL{IW|SH1H~29$QeZufnvyMvlJ9)x<m}df?~>PVIn9a
zI9g35wYU}p#fX+e$+`-PH7H<3OTPn(A&1XLP)G||>uBN|0L=WE;-d{pM=)W1Odk}k
zkM$-Pz$uKIL@btqs|81v2QYD*zWakhYOtOV0ZIlaL^36PDk#jepcEw$lspdSHJ~h3
zN=H?}U!ah}wmA!w6bPbviX0w9Ml@4kSn0Qb+0AKT5h!sSS(<pN+7Pwa7B&L~YAnI0
zBPiaSTGpWCacnvU6lNtw^=l$1#hlS09u#tKl(o((P)K3hyaN<wHA?Y02g-JiHtvGr
z#i4uvg}D<!)gs>~=4w?RlsHbC`+#D`@q~e(kiw22qd_s^$eIL-C8rjd4KYs_Q_`2v
ze8?F^*$Ijv&e)zF0mYkRox7wKCkozz!t6&;d}_lEaiAha)0~@t63MZS8P1reUa4Ar
zL2=@=*@a-hgYBs=D60WyeJmUlcB}+gFa?ww9L#)BBua{6E)hk=Ak|YL89GV+LBH71
zY6ogLDQgkVS3x0rxo9Naujin=;b00u`HEk*@9LODJ18lNC=iwQ-ul4o23wYMdr;gt
zoV$Y(M@z;9lmVbfOLF!lb0kt&3wi-_l*1<+6w*~zt8+ma!Kt+t6w($7BUIe^N91zG
zl<mOm28OhSYR?5w{5Z1i5sb2h01DoMQVXnE3;qB_uB@f7j;}yq4J_LWZ9F6e<CL(D
zJ}7}4&fP(YR`LN@-~h@~4rK%=<Y`_uy2C)R29~8v0ws-8Yc42;z_8Xy10@Nk6oq*s
zVjhR{5n${9V0(H26il~DP@aO~%JHaApm+m=2GClqP9D}nVeQp|N9hX6ZsZr%>-vI1
z-XqQS%L9}I4kZkfB#sVaK}q3I77_}&K=qWgBMlTO{<1B+017!{TlfqVQdr7QP|`VC
zt!IcxQEE&`zdG3zwOGy_fFUV>mEIE+Qx3%e6l(xjOb93$oL)==#f&3;6)4<(9Rr2g
z<s&V?d!Inj=E!;q3O7;;K}iuXZLZn^PYy--iG3mhgd&+JG(a4#JP!)>4^y6qe0*f$
z@yb(4P^egW;x8kQSTJm`d{iEjH8ew~x#K<ginkC2g^m|Vg8W<|HAE~I%N(dT83^#!
zDWR{ByrPc&0>6=oOzba}%S@PhL2`*a+)oxJ7y5_Ed?8rzX0boOCWih4RCq*Kc_`Z2
zrG*KFK_Q|5vCu~pE=EEwvne8}R4AV)6$?T{p}_j#yflzbSf#29ogG~U3>P}OxViUp
zauVA0xA7PtbnfTw(0}MqN>AWimZq5a7AW3BPuY>HB%xmz^ZInGRpsPg7huKVM*hJ}
z1iy7cywW~sJl;-3T^GWv!MrY%1_6w{hd@!d(AQTU2A?R^0-+ylLzaQ02ST!$;v*`H
zEoJsFiJv&qSE_vD1)p6|2p;uQFvCAq;$K$mPVm|Qs;CSsnfLLrLBI|V3Uw}}Eczew
zOn`k=YB3-*LWn+yrShP#Q0C1YJTdflDCzfp+V<;5A32gEDo`nd(m_kdC3U8Vw^Gqe
zoieda;}qdb9V_CMvQ1PJx=m53m=+50Pc?)x{C}2kgs8A2(NA28OzTU*gJp-MQkXD6
z66Pb42>sv&;cz#WLL37Lr?h9-x(^;IbaHfaM@SLx2tuZa68kZ2t4RN;gjIfz%T=*5
zOa4<${<*bfvSL*iGEpe;4GSGlhd3qgUvm53=rH3Y_|AI-_8%wG0Uj0>9E4=8`2MPp
zyy%R&=&O=0^bHG<O2i@JP&ph&CMIts7Y2m;i-IH(GO=KQo6t5al<a^H75j$C{0N~x
z6JlkMT*I(Gi+A7sf7g>(^CM2^1WDqCgiVQj$%`3!zX-Wpg1A)FDA$$$oGt!)qlN9`
z|9_fD&v7agglvD6E{qqmDr~CQpcmr)Lzrx$i4>!+i7AGWNH@GL0)qsSrBoc$&B9zL
ziwKnmg@_RWFq(+?!vqYhBsZG$>}FwV%JT=|P!AV(N9X=RSGWEic7ugO`#TM`rE+S2
z7d!q`MW~_z<~8N@`_Haa(Se5=_GO|VOstqOF<kC}_s%)vy>tC#BqAsbUQ$}(b#(tp
zTmPrro@u#Te+Qw$6O^+7=89rYBxb(rLTrt9`HEp{b2Br6I3z+yz3GA+QQs{Q{$X}e
zal`#nWzbE=3!jLW3WLQHseztx=MvX_!v)M`p#)P3m{2&u+>Ej#VIcDJQ!-%eOX$9o
zuk-LS1P<n<3{$3x(A~+6olySwtDxNQC}*TE`A*SJL@~Je`=9a@4kODeOu-$=0>uXF
z6Qx0TR|G=)pin>8{&d<Yb!s!wg{<!w*Bl_0(>VJuSwBBNyd{`S>Zn*`FWQD7WtHO8
zKT_-~5CY@cU)d^w&@tR4ER-Zdk&i^|7-}0KlVP}50F->ip%EciYAJ?)Nsy0BB%6r!
zMhIE0R@}T5OHJhpEXUa7`$#3e6#1WY;Gc#lz19|DfT0%KOum7iQFaRu<7=AKiky!U
z2vuKJreReqkfl{zE?2349$@~d5=wj(j6Yf`7LU~T#L72FIR>Wt!c2p)Dy6m~dCMGy
zQ2JVVUi@!lau;SoYV}Pf$tLsyUO;`Jj6GG1ChVzVS!QD1y?eLrjH<}84y$YWo4h!L
zOOW+0{v8yFeqvqaK8H{g5*~o1F1BzKS4xh~ia86W;32rAa>_w=R-`0X(3=vD*p2Fk
zN`y*1iy_1q;)BrxpTS~Ts94git55{~RI(!L3~IvylO4#iE3u}exX@;yPKL@Q!-BB+
zA(D86PCzmgxQXQ+q0|8Er(9Cl2T9O&x)o%E!TuJ_jC|3MvL%F(Z4HI46%#FL`$|~$
z28mF}rb6`ANfa)}<OUNw()Ed0c89oQ;@2-6qQ&Hh4p=flz&04WbA_p;Tqq4!Ob}_|
zuw7X@XUZ)xEGcjslk9AXe9<k8J3$y|iMGPA+!luUlRo$clQmcfwrI!&D%A14x(JC_
z7!*zzFbbffr*viV5_uWMXhm(&*f1IXxs*@1qGQ7GSc;Lo5QTwAQp7_OjM^x*+KDCD
z9JIyY5CnBA$0vmsD4g!kNsH;cP*`$1fj07x2(fG;S}s&b4N^*FE0qXN+QKEhnyE+K
zhbdJ{;p1cziuD7f>fl=>Y=jc2ZHS+fVjG4wl5&>Ia{Kcfp0x#UV~lDoyoVl0-2-J}
zk)I=WPs;KJ)`8d>uCg#+4C<)jE(r%2^Mwepz#T!0;F62!%jgmwR8(q?2?JYUxK!*L
z<R9eA3^GK`f9?sj8bSCuVIv?yYLE8>kfl%mP`ScDj3)+)MbeUvNGAt2T$tW*cQy&k
zpFFEXHSZ5%Xs1BO<XCvo5yqx7+DoLR`sySWjW5GBsSuHp0EN^t)WNir0umgvxvVsu
zdysE1HGyKlOz82<%>v5PG2`u0`tG5ECE_tGoD+z&X3NYyu!>m5i$+!3)NJ!`GhL)G
z182XS&W-f;1?*!hlFG5QLvQP#LO8V+7GgRZ5K1<J6zPKAkw*SegcDpmJS>z7I1D#_
zf<NZ&vb65l&t0h#(tY}QKvix_0+2w_V$6XVuXQI=SY@Cox8Z4*@Rc%Np%|Q~+(EIS
zpVZ^#D(X_Hp%#JQSJuFX_K<MoCM34A+*>9HYSzV+1Jih4UkNfTHW?^o(thttGgaBu
z(t{gD#$Z}SWjhVE^N&q^pi13dzz~2t2aLP=mI}MF@)V<~68ohTsf?thoHT@lk0;q5
z?$6E|IAaCtyCt{Y*jp8p2>KDvQsXZMP`dkyp~h7#!_6w(0P=-rV_~G6M9>dgQmp8w
zPMKI|#)?q4z_1AzF6hK0^;P5+W$Vgb`C~SM8AGY4As*|9ghOqp^8&f#ezPhVVM9;v
z$RYE1C^{UX7~#vvDCi*MDh5R%2{-OAPd}tfY2lBdOI=nqF=KQ>`F)8DPMXO)`^udQ
z!mGIxKZXY-jedCqZA<E*CHe~cY6-y~h606DGEL#kfR(c=#h6xdenibG<Rz5D&Xq{Q
zK`Jb{Y0ljoC&EgO*St8P`@lS;O!cDF(1)NSfk|Z%)t*~wCZ*^ru`zr*ggZ$k(L>#;
z<qyti1-qswJIqQNq{P@kwIA`Lc$^yhV<q!qiP&b-F*7}<%)(uTGp-w?xSd;aVk!v}
z;a-=}Un0UkMx|z|fx+SOU||SZ_>@XrblRi*kBQ$v$56OCLSHebr|zLr%Nf>2%2^sW
zkH8SL*~(diGlMznFeUqd_F$mr_f6@b?BeZDLk4RF`kpDXs!=>7r@X3aE}&{MU)IQ9
d{)C3KpVc8VF;zB(dL*40NaV^fzEm6u{vUR4ax?${

literal 0
HcmV?d00001

diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
index 4447a516c689..ef0f33c6ba23 100644
--- a/tools/perf/tests/tests.h
+++ b/tools/perf/tests/tests.h
@@ -122,6 +122,7 @@ int test__pfm(struct test *test, int subtest);
 const char *test__pfm_subtest_get_desc(int subtest);
 int test__pfm_subtest_get_nr(void);
 int test__parse_metric(struct test *test, int subtest);
+int test__pe_file_parsing(struct test *test, int subtest);
 
 bool test__bp_signal_is_supported(void);
 bool test__bp_account_is_supported(void);
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section
  2020-08-21 16:52 [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Remi Bernon
  2020-08-21 16:52 ` [PATCH v3 2/3] perf symbols: Try reading the symbol table with libbfd Remi Bernon
  2020-08-21 16:52 ` [PATCH v3 3/3] perf tests: Add test for PE binary format support Remi Bernon
@ 2020-08-26 11:47 ` Jiri Olsa
  2020-09-03  0:25 ` Arnaldo Carvalho de Melo
  3 siblings, 0 replies; 8+ messages in thread
From: Jiri Olsa @ 2020-08-26 11:47 UTC (permalink / raw)
  To: Remi Bernon
  Cc: linux-kernel, Alexander Shishkin, Arnaldo Carvalho de Melo,
	Ingo Molnar, Mark Rutland, Namhyung Kim, Peter Zijlstra,
	Jacek Caban

On Fri, Aug 21, 2020 at 06:52:36PM +0200, Remi Bernon wrote:
> Wine generates PE binaries for most of its modules and perf is unable
> to parse these files to get build_id or .gnu_debuglink section.
> 
> Using libbfd when available, instead of libelf, makes it possible to
> resolve debug file location regardless of the dso binary format.
> 
> Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Jacek Caban <jacek@codeweavers.com>
> ---
> 
> v3: Rebase and small changes to PATCH 2/3 and and PATCH 3/3.

all 3 patches look ok to me especially since I found out the new
code for loading symbols is for non ELF objects only ;-)

it'd be great if somebody with libbfd skills could review this,
but for me it looks ok.. for patchset:

Acked-by: Jiri Olsa <jolsa@redhat.com>

thanks,
jirka

> 
>  tools/perf/util/symbol-elf.c | 80 ++++++++++++++++++++++++++++++++++--
>  1 file changed, 77 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
> index 8cc4b0059fb0..f7432c4a4154 100644
> --- a/tools/perf/util/symbol-elf.c
> +++ b/tools/perf/util/symbol-elf.c
> @@ -50,6 +50,10 @@ typedef Elf64_Nhdr GElf_Nhdr;
>  #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
>  #endif
>  
> +#ifdef HAVE_LIBBFD_SUPPORT
> +#define PACKAGE 'perf'
> +#include <bfd.h>
> +#else
>  #ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
>  extern char *cplus_demangle(const char *, int);
>  
> @@ -65,9 +69,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,
>  {
>  	return NULL;
>  }
> -#else
> -#define PACKAGE 'perf'
> -#include <bfd.h>
> +#endif
>  #endif
>  #endif
>  
> @@ -530,6 +532,36 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
>  	return err;
>  }
>  
> +#ifdef HAVE_LIBBFD_SUPPORT
> +
> +int filename__read_build_id(const char *filename, void *bf, size_t size)
> +{
> +	int err = -1;
> +	bfd *abfd;
> +
> +	abfd = bfd_openr(filename, NULL);
> +	if (!abfd)
> +		return -1;
> +
> +	if (!bfd_check_format(abfd, bfd_object)) {
> +		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
> +		goto out_close;
> +	}
> +
> +	if (!abfd->build_id || abfd->build_id->size > size)
> +		goto out_close;
> +
> +	memcpy(bf, abfd->build_id->data, abfd->build_id->size);
> +	memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
> +	err = abfd->build_id->size;
> +
> +out_close:
> +	bfd_close(abfd);
> +	return err;
> +}
> +
> +#else
> +
>  int filename__read_build_id(const char *filename, void *bf, size_t size)
>  {
>  	int fd, err = -1;
> @@ -557,6 +589,8 @@ int filename__read_build_id(const char *filename, void *bf, size_t size)
>  	return err;
>  }
>  
> +#endif
> +
>  int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
>  {
>  	int fd, err = -1;
> @@ -608,6 +642,44 @@ int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
>  	return err;
>  }
>  
> +#ifdef HAVE_LIBBFD_SUPPORT
> +
> +int filename__read_debuglink(const char *filename, char *debuglink,
> +			     size_t size)
> +{
> +	int err = -1;
> +	asection *section;
> +	bfd *abfd;
> +
> +	abfd = bfd_openr(filename, NULL);
> +	if (!abfd)
> +		return -1;
> +
> +	if (!bfd_check_format(abfd, bfd_object)) {
> +		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
> +		goto out_close;
> +	}
> +
> +	section = bfd_get_section_by_name(abfd, ".gnu_debuglink");
> +	if (!section)
> +		goto out_close;
> +
> +	if (section->size > size)
> +		goto out_close;
> +
> +	if (!bfd_get_section_contents(abfd, section, debuglink, 0,
> +				      section->size))
> +		goto out_close;
> +
> +	err = 0;
> +
> +out_close:
> +	bfd_close(abfd);
> +	return err;
> +}
> +
> +#else
> +
>  int filename__read_debuglink(const char *filename, char *debuglink,
>  			     size_t size)
>  {
> @@ -660,6 +732,8 @@ int filename__read_debuglink(const char *filename, char *debuglink,
>  	return err;
>  }
>  
> +#endif
> +
>  static int dso__swap_init(struct dso *dso, unsigned char eidata)
>  {
>  	static unsigned int const endian = 1;
> -- 
> 2.28.0
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section
  2020-08-21 16:52 [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Remi Bernon
                   ` (2 preceding siblings ...)
  2020-08-26 11:47 ` [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Jiri Olsa
@ 2020-09-03  0:25 ` Arnaldo Carvalho de Melo
  2020-09-03 16:51   ` Arnaldo Carvalho de Melo
  3 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-09-03  0:25 UTC (permalink / raw)
  To: Remi Bernon
  Cc: linux-kernel, Alexander Shishkin, Ingo Molnar, Jiri Olsa,
	Mark Rutland, Namhyung Kim, Peter Zijlstra, Jacek Caban

Em Fri, Aug 21, 2020 at 06:52:36PM +0200, Remi Bernon escreveu:
> Wine generates PE binaries for most of its modules and perf is unable
> to parse these files to get build_id or .gnu_debuglink section.
> 
> Using libbfd when available, instead of libelf, makes it possible to
> resolve debug file location regardless of the dso binary format.
> 
> Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Jacek Caban <jacek@codeweavers.com>
> ---
> 
> v3: Rebase and small changes to PATCH 2/3 and and PATCH 3/3.
> 
>  tools/perf/util/symbol-elf.c | 80 ++++++++++++++++++++++++++++++++++--
>  1 file changed, 77 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
> index 8cc4b0059fb0..f7432c4a4154 100644
> --- a/tools/perf/util/symbol-elf.c
> +++ b/tools/perf/util/symbol-elf.c
> @@ -50,6 +50,10 @@ typedef Elf64_Nhdr GElf_Nhdr;
>  #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
>  #endif
>  
> +#ifdef HAVE_LIBBFD_SUPPORT

So, the feature test should also test for the buildid struct field, see
below:

> +#define PACKAGE 'perf'
> +#include <bfd.h>
> +#else
>  #ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
>  extern char *cplus_demangle(const char *, int);
>  
> @@ -65,9 +69,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,
>  {
>  	return NULL;
>  }
> -#else
> -#define PACKAGE 'perf'
> -#include <bfd.h>
> +#endif
>  #endif
>  #endif
>  
> @@ -530,6 +532,36 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
>  	return err;
>  }
>  
> +#ifdef HAVE_LIBBFD_SUPPORT
> +
> +int filename__read_build_id(const char *filename, void *bf, size_t size)
> +{
> +	int err = -1;
> +	bfd *abfd;
> +
> +	abfd = bfd_openr(filename, NULL);
> +	if (!abfd)
> +		return -1;
> +
> +	if (!bfd_check_format(abfd, bfd_object)) {
> +		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
> +		goto out_close;
> +	}
> +
> +	if (!abfd->build_id || abfd->build_id->size > size)
> +		goto out_close;

amazonlinux:1, centos:6, debian:8, mageia:5, oraclelinux:6, ubuntu:14.04
fail, its all old stuff, but adding a reference to abfd->build_id to the
feature test that ends up defining HAVE_LIBBFD_SUPPORT will solve that,
I'll do it tomorrow morning if you don't beat me to it.

util/symbol-elf.c: In function 'filename__read_build_id':
util/symbol-elf.c:551:11: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  if (!abfd->build_id || abfd->build_id->size > size)
           ^~
util/symbol-elf.c:551:29: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  if (!abfd->build_id || abfd->build_id->size > size)
                             ^~
util/symbol-elf.c:554:17: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  memcpy(bf, abfd->build_id->data, abfd->build_id->size);
                 ^~
util/symbol-elf.c:554:39: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  memcpy(bf, abfd->build_id->data, abfd->build_id->size);
                                       ^~
util/symbol-elf.c:555:18: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
                  ^~
util/symbol-elf.c:555:50: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
                                                  ^~
util/symbol-elf.c:556:12: error: 'bfd {aka struct bfd}' has no member named 'build_id'
  err = abfd->build_id->size;
            ^~
  CC       /tmp/build/perf/util/cap.o
make[4]: *** [/tmp/build/perf/util/symbol-elf.o] Error 1
make[4]: *** Waiting for unfinished jobs....
  LD       /tmp/build/perf/util/scripting-engines/perf-in.o
  LD       /tmp/build/perf/util/intel-pt-decoder/perf-in.o
make[3]: *** [util] Error 2
make[2]: *** [/tmp/build/perf/perf-in.o] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [sub-make] Error 2
make: *** [all] Error 2
make: Leaving directory `/git/linux/tools/perf'
+ exit 1
[perfbuilder@five ~]$

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section
  2020-09-03  0:25 ` Arnaldo Carvalho de Melo
@ 2020-09-03 16:51   ` Arnaldo Carvalho de Melo
  2020-09-04  7:57     ` Remi Bernon
  0 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-09-03 16:51 UTC (permalink / raw)
  To: Remi Bernon
  Cc: linux-kernel, Alexander Shishkin, Ingo Molnar, Jiri Olsa,
	Mark Rutland, Namhyung Kim, Peter Zijlstra, Jacek Caban

Em Wed, Sep 02, 2020 at 09:25:19PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Aug 21, 2020 at 06:52:36PM +0200, Remi Bernon escreveu:
> > Wine generates PE binaries for most of its modules and perf is unable
> > to parse these files to get build_id or .gnu_debuglink section.
> > 
> > Using libbfd when available, instead of libelf, makes it possible to
> > resolve debug file location regardless of the dso binary format.
> > 
> > Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> > Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> > Cc: Ingo Molnar <mingo@redhat.com>
> > Cc: Jiri Olsa <jolsa@redhat.com>
> > Cc: Mark Rutland <mark.rutland@arm.com>
> > Cc: Namhyung Kim <namhyung@kernel.org>
> > Cc: Peter Zijlstra <peterz@infradead.org>
> > Cc: Jacek Caban <jacek@codeweavers.com>
> > ---
> > 
> > v3: Rebase and small changes to PATCH 2/3 and and PATCH 3/3.
> > 
> >  tools/perf/util/symbol-elf.c | 80 ++++++++++++++++++++++++++++++++++--
> >  1 file changed, 77 insertions(+), 3 deletions(-)
> > 
> > diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
> > index 8cc4b0059fb0..f7432c4a4154 100644
> > --- a/tools/perf/util/symbol-elf.c
> > +++ b/tools/perf/util/symbol-elf.c
> > @@ -50,6 +50,10 @@ typedef Elf64_Nhdr GElf_Nhdr;
> >  #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
> >  #endif
> >  
> > +#ifdef HAVE_LIBBFD_SUPPORT
> 
> So, the feature test should also test for the buildid struct field, see
> below:
> 
> > +#define PACKAGE 'perf'
> > +#include <bfd.h>
> > +#else
> >  #ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
> >  extern char *cplus_demangle(const char *, int);
> >  
> > @@ -65,9 +69,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,
> >  {
> >  	return NULL;
> >  }
> > -#else
> > -#define PACKAGE 'perf'
> > -#include <bfd.h>
> > +#endif
> >  #endif
> >  #endif
> >  
> > @@ -530,6 +532,36 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
> >  	return err;
> >  }
> >  
> > +#ifdef HAVE_LIBBFD_SUPPORT
> > +
> > +int filename__read_build_id(const char *filename, void *bf, size_t size)
> > +{
> > +	int err = -1;
> > +	bfd *abfd;
> > +
> > +	abfd = bfd_openr(filename, NULL);
> > +	if (!abfd)
> > +		return -1;
> > +
> > +	if (!bfd_check_format(abfd, bfd_object)) {
> > +		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
> > +		goto out_close;
> > +	}
> > +
> > +	if (!abfd->build_id || abfd->build_id->size > size)
> > +		goto out_close;
> 
> amazonlinux:1, centos:6, debian:8, mageia:5, oraclelinux:6, ubuntu:14.04
> fail, its all old stuff, but adding a reference to abfd->build_id to the
> feature test that ends up defining HAVE_LIBBFD_SUPPORT will solve that,
> I'll do it tomorrow morning if you don't beat me to it.
> 
> util/symbol-elf.c: In function 'filename__read_build_id':
> util/symbol-elf.c:551:11: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   if (!abfd->build_id || abfd->build_id->size > size)
>            ^~
> util/symbol-elf.c:551:29: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   if (!abfd->build_id || abfd->build_id->size > size)
>                              ^~
> util/symbol-elf.c:554:17: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   memcpy(bf, abfd->build_id->data, abfd->build_id->size);
>                  ^~
> util/symbol-elf.c:554:39: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   memcpy(bf, abfd->build_id->data, abfd->build_id->size);
>                                        ^~
> util/symbol-elf.c:555:18: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
>                   ^~
> util/symbol-elf.c:555:50: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
>                                                   ^~
> util/symbol-elf.c:556:12: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>   err = abfd->build_id->size;
>             ^~
>   CC       /tmp/build/perf/util/cap.o
> make[4]: *** [/tmp/build/perf/util/symbol-elf.o] Error 1
> make[4]: *** Waiting for unfinished jobs....
>   LD       /tmp/build/perf/util/scripting-engines/perf-in.o
>   LD       /tmp/build/perf/util/intel-pt-decoder/perf-in.o
> make[3]: *** [util] Error 2
> make[2]: *** [/tmp/build/perf/perf-in.o] Error 2
> make[2]: *** Waiting for unfinished jobs....
> make[1]: *** [sub-make] Error 2
> make: *** [all] Error 2
> make: Leaving directory `/git/linux/tools/perf'
> + exit 1
> [perfbuilder@five ~]$

So, I have the cset at the end of this message in front of your series +
the following patch applied to your patch, the debuglink part seems ok
and can continue depending on just libbfd, having or not abfd->buildid.

- Arnaldo

diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index f7432c4a4154a149..94a156df22d5a8d3 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -532,7 +532,7 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
 	return err;
 }
 
-#ifdef HAVE_LIBBFD_SUPPORT
+#ifdef HAVE_LIBBFD_BUILDID_SUPPORT
 
 int filename__read_build_id(const char *filename, void *bf, size_t size)
 {
@@ -560,7 +560,7 @@ int filename__read_build_id(const char *filename, void *bf, size_t size)
 	return err;
 }
 
-#else
+#else // HAVE_LIBBFD_BUILDID_SUPPORT
 
 int filename__read_build_id(const char *filename, void *bf, size_t size)
 {
@@ -589,7 +589,7 @@ int filename__read_build_id(const char *filename, void *bf, size_t size)
 	return err;
 }
 
-#endif
+#endif // HAVE_LIBBFD_BUILDID_SUPPORT
 
 int sysfs__read_build_id(const char *filename, void *build_id, size_t size)
 {

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section
  2020-09-03 16:51   ` Arnaldo Carvalho de Melo
@ 2020-09-04  7:57     ` Remi Bernon
  2020-09-04 19:03       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 8+ messages in thread
From: Remi Bernon @ 2020-09-04  7:57 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Alexander Shishkin, Ingo Molnar, Jiri Olsa,
	Mark Rutland, Namhyung Kim, Peter Zijlstra, Jacek Caban

On 2020-09-03 18:51, Arnaldo Carvalho de Melo wrote:
> Em Wed, Sep 02, 2020 at 09:25:19PM -0300, Arnaldo Carvalho de Melo escreveu:
>> Em Fri, Aug 21, 2020 at 06:52:36PM +0200, Remi Bernon escreveu:
>>> Wine generates PE binaries for most of its modules and perf is unable
>>> to parse these files to get build_id or .gnu_debuglink section.
>>>
>>> Using libbfd when available, instead of libelf, makes it possible to
>>> resolve debug file location regardless of the dso binary format.
>>>
>>> Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
>>> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
>>> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
>>> Cc: Ingo Molnar <mingo@redhat.com>
>>> Cc: Jiri Olsa <jolsa@redhat.com>
>>> Cc: Mark Rutland <mark.rutland@arm.com>
>>> Cc: Namhyung Kim <namhyung@kernel.org>
>>> Cc: Peter Zijlstra <peterz@infradead.org>
>>> Cc: Jacek Caban <jacek@codeweavers.com>
>>> ---
>>>
>>> v3: Rebase and small changes to PATCH 2/3 and and PATCH 3/3.
>>>
>>>   tools/perf/util/symbol-elf.c | 80 ++++++++++++++++++++++++++++++++++--
>>>   1 file changed, 77 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
>>> index 8cc4b0059fb0..f7432c4a4154 100644
>>> --- a/tools/perf/util/symbol-elf.c
>>> +++ b/tools/perf/util/symbol-elf.c
>>> @@ -50,6 +50,10 @@ typedef Elf64_Nhdr GElf_Nhdr;
>>>   #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
>>>   #endif
>>>   
>>> +#ifdef HAVE_LIBBFD_SUPPORT
>>
>> So, the feature test should also test for the buildid struct field, see
>> below:
>>
>>> +#define PACKAGE 'perf'
>>> +#include <bfd.h>
>>> +#else
>>>   #ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
>>>   extern char *cplus_demangle(const char *, int);
>>>   
>>> @@ -65,9 +69,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,
>>>   {
>>>   	return NULL;
>>>   }
>>> -#else
>>> -#define PACKAGE 'perf'
>>> -#include <bfd.h>
>>> +#endif
>>>   #endif
>>>   #endif
>>>   
>>> @@ -530,6 +532,36 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
>>>   	return err;
>>>   }
>>>   
>>> +#ifdef HAVE_LIBBFD_SUPPORT
>>> +
>>> +int filename__read_build_id(const char *filename, void *bf, size_t size)
>>> +{
>>> +	int err = -1;
>>> +	bfd *abfd;
>>> +
>>> +	abfd = bfd_openr(filename, NULL);
>>> +	if (!abfd)
>>> +		return -1;
>>> +
>>> +	if (!bfd_check_format(abfd, bfd_object)) {
>>> +		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
>>> +		goto out_close;
>>> +	}
>>> +
>>> +	if (!abfd->build_id || abfd->build_id->size > size)
>>> +		goto out_close;
>>
>> amazonlinux:1, centos:6, debian:8, mageia:5, oraclelinux:6, ubuntu:14.04
>> fail, its all old stuff, but adding a reference to abfd->build_id to the
>> feature test that ends up defining HAVE_LIBBFD_SUPPORT will solve that,
>> I'll do it tomorrow morning if you don't beat me to it.
>>
>> util/symbol-elf.c: In function 'filename__read_build_id':
>> util/symbol-elf.c:551:11: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    if (!abfd->build_id || abfd->build_id->size > size)
>>             ^~
>> util/symbol-elf.c:551:29: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    if (!abfd->build_id || abfd->build_id->size > size)
>>                               ^~
>> util/symbol-elf.c:554:17: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    memcpy(bf, abfd->build_id->data, abfd->build_id->size);
>>                   ^~
>> util/symbol-elf.c:554:39: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    memcpy(bf, abfd->build_id->data, abfd->build_id->size);
>>                                         ^~
>> util/symbol-elf.c:555:18: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
>>                    ^~
>> util/symbol-elf.c:555:50: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
>>                                                    ^~
>> util/symbol-elf.c:556:12: error: 'bfd {aka struct bfd}' has no member named 'build_id'
>>    err = abfd->build_id->size;
>>              ^~
>>    CC       /tmp/build/perf/util/cap.o
>> make[4]: *** [/tmp/build/perf/util/symbol-elf.o] Error 1
>> make[4]: *** Waiting for unfinished jobs....
>>    LD       /tmp/build/perf/util/scripting-engines/perf-in.o
>>    LD       /tmp/build/perf/util/intel-pt-decoder/perf-in.o
>> make[3]: *** [util] Error 2
>> make[2]: *** [/tmp/build/perf/perf-in.o] Error 2
>> make[2]: *** Waiting for unfinished jobs....
>> make[1]: *** [sub-make] Error 2
>> make: *** [all] Error 2
>> make: Leaving directory `/git/linux/tools/perf'
>> + exit 1
>> [perfbuilder@five ~]$
> 
> So, I have the cset at the end of this message in front of your series +
> the following patch applied to your patch, the debuglink part seems ok
> and can continue depending on just libbfd, having or not abfd->buildid.
> 

Thanks! I may have missed the first changeset you mention -- IIUC the 
one adding the feature check -- but it sounds good to me nonetheless.

Should I do anything?
-- 
Rémi Bernon <rbernon@codeweavers.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section
  2020-09-04  7:57     ` Remi Bernon
@ 2020-09-04 19:03       ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-09-04 19:03 UTC (permalink / raw)
  To: Remi Bernon
  Cc: linux-kernel, Alexander Shishkin, Ingo Molnar, Jiri Olsa,
	Mark Rutland, Namhyung Kim, Peter Zijlstra, Jacek Caban

Em Fri, Sep 04, 2020 at 09:57:33AM +0200, Remi Bernon escreveu:
> On 2020-09-03 18:51, Arnaldo Carvalho de Melo wrote:
> > Em Wed, Sep 02, 2020 at 09:25:19PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Em Fri, Aug 21, 2020 at 06:52:36PM +0200, Remi Bernon escreveu:
> > > > Wine generates PE binaries for most of its modules and perf is unable
> > > > to parse these files to get build_id or .gnu_debuglink section.
> > > > 
> > > > Using libbfd when available, instead of libelf, makes it possible to
> > > > resolve debug file location regardless of the dso binary format.
> > > > 
> > > > Signed-off-by: Remi Bernon <rbernon@codeweavers.com>
> > > > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> > > > Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
> > > > Cc: Ingo Molnar <mingo@redhat.com>
> > > > Cc: Jiri Olsa <jolsa@redhat.com>
> > > > Cc: Mark Rutland <mark.rutland@arm.com>
> > > > Cc: Namhyung Kim <namhyung@kernel.org>
> > > > Cc: Peter Zijlstra <peterz@infradead.org>
> > > > Cc: Jacek Caban <jacek@codeweavers.com>
> > > > ---
> > > > 
> > > > v3: Rebase and small changes to PATCH 2/3 and and PATCH 3/3.
> > > > 
> > > >   tools/perf/util/symbol-elf.c | 80 ++++++++++++++++++++++++++++++++++--
> > > >   1 file changed, 77 insertions(+), 3 deletions(-)
> > > > 
> > > > diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
> > > > index 8cc4b0059fb0..f7432c4a4154 100644
> > > > --- a/tools/perf/util/symbol-elf.c
> > > > +++ b/tools/perf/util/symbol-elf.c
> > > > @@ -50,6 +50,10 @@ typedef Elf64_Nhdr GElf_Nhdr;
> > > >   #define DMGL_ANSI        (1 << 1)       /* Include const, volatile, etc */
> > > >   #endif
> > > > +#ifdef HAVE_LIBBFD_SUPPORT
> > > 
> > > So, the feature test should also test for the buildid struct field, see
> > > below:
> > > 
> > > > +#define PACKAGE 'perf'
> > > > +#include <bfd.h>
> > > > +#else
> > > >   #ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
> > > >   extern char *cplus_demangle(const char *, int);
> > > > @@ -65,9 +69,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,
> > > >   {
> > > >   	return NULL;
> > > >   }
> > > > -#else
> > > > -#define PACKAGE 'perf'
> > > > -#include <bfd.h>
> > > > +#endif
> > > >   #endif
> > > >   #endif
> > > > @@ -530,6 +532,36 @@ static int elf_read_build_id(Elf *elf, void *bf, size_t size)
> > > >   	return err;
> > > >   }
> > > > +#ifdef HAVE_LIBBFD_SUPPORT
> > > > +
> > > > +int filename__read_build_id(const char *filename, void *bf, size_t size)
> > > > +{
> > > > +	int err = -1;
> > > > +	bfd *abfd;
> > > > +
> > > > +	abfd = bfd_openr(filename, NULL);
> > > > +	if (!abfd)
> > > > +		return -1;
> > > > +
> > > > +	if (!bfd_check_format(abfd, bfd_object)) {
> > > > +		pr_debug2("%s: cannot read %s bfd file.\n", __func__, filename);
> > > > +		goto out_close;
> > > > +	}
> > > > +
> > > > +	if (!abfd->build_id || abfd->build_id->size > size)
> > > > +		goto out_close;
> > > 
> > > amazonlinux:1, centos:6, debian:8, mageia:5, oraclelinux:6, ubuntu:14.04
> > > fail, its all old stuff, but adding a reference to abfd->build_id to the
> > > feature test that ends up defining HAVE_LIBBFD_SUPPORT will solve that,
> > > I'll do it tomorrow morning if you don't beat me to it.
> > > 
> > > util/symbol-elf.c: In function 'filename__read_build_id':
> > > util/symbol-elf.c:551:11: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    if (!abfd->build_id || abfd->build_id->size > size)
> > >             ^~
> > > util/symbol-elf.c:551:29: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    if (!abfd->build_id || abfd->build_id->size > size)
> > >                               ^~
> > > util/symbol-elf.c:554:17: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    memcpy(bf, abfd->build_id->data, abfd->build_id->size);
> > >                   ^~
> > > util/symbol-elf.c:554:39: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    memcpy(bf, abfd->build_id->data, abfd->build_id->size);
> > >                                         ^~
> > > util/symbol-elf.c:555:18: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
> > >                    ^~
> > > util/symbol-elf.c:555:50: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    memset(bf + abfd->build_id->size, 0, size - abfd->build_id->size);
> > >                                                    ^~
> > > util/symbol-elf.c:556:12: error: 'bfd {aka struct bfd}' has no member named 'build_id'
> > >    err = abfd->build_id->size;
> > >              ^~
> > >    CC       /tmp/build/perf/util/cap.o
> > > make[4]: *** [/tmp/build/perf/util/symbol-elf.o] Error 1
> > > make[4]: *** Waiting for unfinished jobs....
> > >    LD       /tmp/build/perf/util/scripting-engines/perf-in.o
> > >    LD       /tmp/build/perf/util/intel-pt-decoder/perf-in.o
> > > make[3]: *** [util] Error 2
> > > make[2]: *** [/tmp/build/perf/perf-in.o] Error 2
> > > make[2]: *** Waiting for unfinished jobs....
> > > make[1]: *** [sub-make] Error 2
> > > make: *** [all] Error 2
> > > make: Leaving directory `/git/linux/tools/perf'
> > > + exit 1
> > > [perfbuilder@five ~]$
> > 
> > So, I have the cset at the end of this message in front of your series +
> > the following patch applied to your patch, the debuglink part seems ok
> > and can continue depending on just libbfd, having or not abfd->buildid.
> > 
> 
> Thanks! I may have missed the first changeset you mention -- IIUC the one
> adding the feature check -- but it sounds good to me nonetheless.
> 
> Should I do anything?

No need at this time, here is the new feature test that ends up being
used to check if that abfd->build_id is present:

[acme@five perf]$ git log torvalds/master.. --oneline
d39497a94c1672c2 (HEAD -> perf/core) perf: ftrace: Add filter support for option -F/--funcs
6330d59303482407 perf tools: Consolidate close_control_option()'s into one function
bd0c035c66c933ee perf intel-pt: Document snapshot control command
7f5b197269a34f9a perf annotate: Add 'ret' (intel disasm style) as an alias for 'retq'
2481b0089bddb6b6 perf annotate: Allow configuring the 'disassembler_style' knob via 'perf config'
d20aff1512f013fa (quaco/perf/core) perf record: Add 'snapshot' control command
a8fcbd269b4340c3 perf tools: Add FIFO file names as alternative options to --control
1f4390d825cc04e9 perf tools: Use AsciiDoc formatting for --control option documentation
40db8ff59e75af10 perf tools: Handle read errors from ctl_fd
9864a66defeb8df0 perf tools: Consolidate --control option parsing into one function
ed21d6d7c48e6e96 perf tests: Add test for PE binary format support
eac9a4342e5447ca perf symbols: Try reading the symbol table with libbfd
ba0509dcb7f80640 perf dso: Use libbfd to read build_id and .gnu_debuglink section
e71e19a9ea70952a tools features: Add feature test to check if libbfd has buildid support
[acme@five perf]$


$ git show e71e19a9ea70952a
commit e71e19a9ea70952a53d58a99971820ce6c1794a8
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Sep 3 13:44:39 2020 -0300

    tools features: Add feature test to check if libbfd has buildid support
    
    Which is needed by the PE executable support, for instance.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jacek Caban <jacek@codeweavers.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Remi Bernon <rbernon@codeweavers.com>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index c1daf4d57518c579..8b381d8ec9ded098 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -41,6 +41,7 @@ FEATURE_TESTS_BASIC :=                  \
         gtk2                            \
         gtk2-infobar                    \
         libbfd                          \
+        libbfd-buildid			\
         libcap                          \
         libelf                          \
         libelf-getphdrnum               \
@@ -113,6 +114,7 @@ FEATURE_DISPLAY ?=              \
          glibc                  \
          gtk2                   \
          libbfd                 \
+         libbfd-buildid		\
          libcap                 \
          libelf                 \
          libnuma                \
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index d220fe952747053a..9e5f8db4a1689832 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -15,6 +15,7 @@ FILES=                                          \
          test-hello.bin                         \
          test-libaudit.bin                      \
          test-libbfd.bin                        \
+         test-libbfd-buildid.bin		\
          test-disassembler-four-args.bin        \
          test-reallocarray.bin			\
          test-libbfd-liberty.bin                \
@@ -229,6 +230,9 @@ $(OUTPUT)test-libpython-version.bin:
 $(OUTPUT)test-libbfd.bin:
 	$(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
 
+$(OUTPUT)test-libbfd-buildid.bin:
+	$(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
+
 $(OUTPUT)test-disassembler-four-args.bin:
 	$(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
 
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
index 5479e543b1947ee9..80c5795f324ba04f 100644
--- a/tools/build/feature/test-all.c
+++ b/tools/build/feature/test-all.c
@@ -90,6 +90,10 @@
 # include "test-libbfd.c"
 #undef main
 
+#define main main_test_libbfd_buildid
+# include "test-libbfd-buildid.c"
+#undef main
+
 #define main main_test_backtrace
 # include "test-backtrace.c"
 #undef main
@@ -208,6 +212,7 @@ int main(int argc, char *argv[])
 	main_test_gtk2(argc, argv);
 	main_test_gtk2_infobar(argc, argv);
 	main_test_libbfd();
+	main_test_libbfd_buildid();
 	main_test_backtrace();
 	main_test_libnuma();
 	main_test_numa_num_possible_cpus();
diff --git a/tools/build/feature/test-libbfd-buildid.c b/tools/build/feature/test-libbfd-buildid.c
new file mode 100644
index 0000000000000000..157644b04c052a51
--- /dev/null
+++ b/tools/build/feature/test-libbfd-buildid.c
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <bfd.h>
+
+int main(void)
+{
+	bfd *abfd = bfd_openr("Pedro", 0);
+	return abfd && (!abfd->build_id || abfd->build_id->size > 0x506564726f);
+}
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 190be4fa5c2187f3..f73a85ea3e7fb20a 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -825,6 +825,12 @@ else
   $(call feature_check,disassembler-four-args)
 endif
 
+ifeq ($(feature-libbfd-buildid), 1)
+  CFLAGS += -DHAVE_LIBBFD_BUILDID_SUPPORT
+else
+  msg := $(warning Old version of libbfd/binutils things like PE executable profiling will not be available);
+endif
+
 ifdef NO_DEMANGLE
   CFLAGS += -DNO_DEMANGLE
 else

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-09-04 19:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-21 16:52 [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Remi Bernon
2020-08-21 16:52 ` [PATCH v3 2/3] perf symbols: Try reading the symbol table with libbfd Remi Bernon
2020-08-21 16:52 ` [PATCH v3 3/3] perf tests: Add test for PE binary format support Remi Bernon
2020-08-26 11:47 ` [PATCH v3 1/3] perf dso: Use libbfd to read build_id and .gnu_debuglink section Jiri Olsa
2020-09-03  0:25 ` Arnaldo Carvalho de Melo
2020-09-03 16:51   ` Arnaldo Carvalho de Melo
2020-09-04  7:57     ` Remi Bernon
2020-09-04 19:03       ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).