From e7d5b0aef726c77edaacad11802df9a95a992851 Mon Sep 17 00:00:00 2001 From: "A.s." <62971995+adRn-s@users.noreply.github.com> Date: Sat, 24 Oct 2026 15:49:24 +0200 Subject: [PATCH 01/10] feat(alignmentSieve): opt-in --keepTags for shifted BAM output Default shifted output is unchanged (SEQ, QUAL and all tags dropped). --keepTags TAG [TAG ...] copies only the named tags (e.g. CB). Tags that describe the original alignment (NM, MD, MC, SA, XA, ...) are rejected because the CIGAR is rewritten. Needs --shift/--ATACshift and BAM output. Shift handling is untouched, so expanding and long shifts keep working. --- docs/content/tools/alignmentSieve.rst | 13 ++++ pydeeptools/deeptools/alignmentSieve2.py | 22 +++++++ .../deeptools/test/test_alignmentsieve.py | 62 +++++++++++++++++++ src/alignmentsieve.rs | 26 +++++++- 4 files changed, 120 insertions(+), 3 deletions(-) diff --git a/docs/content/tools/alignmentSieve.rst b/docs/content/tools/alignmentSieve.rst index f10b165fbd..7b7e0a37d9 100644 --- a/docs/content/tools/alignmentSieve.rst +++ b/docs/content/tools/alignmentSieve.rst @@ -84,3 +84,16 @@ As can be seen, such fragments are considered to be on the ``-`` strand, so nega .. note:: If the ``--shift`` or ``--ATACshift`` options are used, then only properly-paired reads will be used. + +Shifted BAM output +^^^^^^^^^^^^^^^^^^ + +With ``--shift`` or ``--ATACshift`` and BAM output, each kept read is rewritten as a single match (``M``) covering the shifted fragment, positioned at the shifted start. SEQ and QUAL are empty and all auxiliary tags are dropped. Expanding shifts and shifts longer than the read are supported because no reference or read bases are needed. + +If a downstream step needs a tag such as a single-cell barcode, copy it with ``--keepTags``: + +.. code:: bash + + $ alignmentSieve -b possorted.bam --ATACshift --keepTags CB -o shifted.bam + +Only the listed tags are written, with their input values. Tags that describe the original alignment (``NM``, ``MD``, ``MC``, ``SA``, ``XA``, ``CC``, ``CP``, ``CG``, ``OA``, ``OC``, ``OP``, ``TS``) are refused, because the rewritten CIGAR and moved mates would make them wrong. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. diff --git a/pydeeptools/deeptools/alignmentSieve2.py b/pydeeptools/deeptools/alignmentSieve2.py index fd8966d150..637d662409 100644 --- a/pydeeptools/deeptools/alignmentSieve2.py +++ b/pydeeptools/deeptools/alignmentSieve2.py @@ -7,6 +7,11 @@ from deeptools.hp import r_alignmentsieve from deeptools.parserCommon import existingFile +# SAM tags that describe the original alignment (CIGAR, mismatches, mate or +# supplementary/secondary alignments, junctions). Shifting rewrites the CIGAR and +# moves mates, so these would be wrong on the output. +ALIGNMENT_TAGS = frozenset(['NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS']) + def parseArguments(): parser = argparse.ArgumentParser( @@ -73,6 +78,12 @@ def parseArguments(): action='store_true', help='Shift the produced BAM file or BEDPE regions as commonly done for ATAC-seq. This is equivalent to --shift 4 -5 5 -4.') + general.add_argument('--keepTags', + nargs='+', + default=[], + metavar='TAG', + help='Copy these two-letter auxiliary tags (for example CB for a cell barcode) from the input onto shifted BAM records. By default shifting drops all tags, SEQ and QUAL. Only has an effect together with --shift or --ATACshift and BAM output. Tags that describe the alignment itself (%s) are rejected because shifting rewrites the CIGAR, which makes them wrong.' % ', '.join(sorted(ALIGNMENT_TAGS))) + output = parser.add_argument_group('Output arguments') output.add_argument('--BED', action='store_true', @@ -168,6 +179,16 @@ def main(args=None): print("Warning! The --ATACshift option is used, but a --shift option is provided as well. The latter will be ignored in favor of 4 -5 5 -4.") args.shift = [4, -5, 5, -4] + for tag in args.keepTags: + if len(tag) != 2: + sys.exit("--keepTags expects two-letter tags, got '{}'.".format(tag)) + if tag in ALIGNMENT_TAGS: + sys.exit("--keepTags: '{}' describes the original alignment and would be wrong after shifting.".format(tag)) + if args.keepTags and not args.shift: + sys.exit("--keepTags only applies together with --shift or --ATACshift.") + if args.keepTags and args.BED: + sys.exit("--keepTags only applies to BAM output, not --BED.") + if args.ignoreDuplicates: args.samFlagExclude |= 0x400 @@ -197,4 +218,5 @@ def main(args=None): args.maxFragmentLength, args.label, args.smartLabels, + args.keepTags, ) diff --git a/pydeeptools/deeptools/test/test_alignmentsieve.py b/pydeeptools/deeptools/test/test_alignmentsieve.py index 338b96d06f..791071f1e6 100644 --- a/pydeeptools/deeptools/test/test_alignmentsieve.py +++ b/pydeeptools/deeptools/test/test_alignmentsieve.py @@ -155,3 +155,65 @@ def test_with_cram_output_with_shifts(): aln_seive.main(args) _assert_equals(BAMFILE_OUT8, output_bam_file) + + +def _bam_with_cell_barcodes(path: str) -> None: + """Copy the fixture, adding a CB tag derived from the read name.""" + with pysam.AlignmentFile(BAMFILE_IN, "rb") as fin, pysam.AlignmentFile(path, "wb", template=fin) as fout: + for read in fin: + read.set_tag("CB", f"CELL{hash(read.query_name) % 7}-1") + fout.write(read) + + +def test_alsieve_shift_drops_tags_by_default(): + """Shifting without --keepTags drops every tag, SEQ and QUAL (unchanged behaviour).""" + _, inbam = tempfile.mkstemp(suffix=".bam") + _, outbam = tempfile.mkstemp(suffix=".bam") + _bam_with_cell_barcodes(inbam) + aln_seive.main(f"--bam {inbam} -o {outbam} --ATACshift".split()) + with pysam.AlignmentFile(outbam, "rb") as f: + reads = list(f) + assert reads + assert all(not r.get_tags() for r in reads) + + +def test_alsieve_keeptags_cb_matches_default_alignments(): + """--keepTags CB keeps only CB, with the input value, and does not change positions.""" + _, inbam = tempfile.mkstemp(suffix=".bam") + _, plain = tempfile.mkstemp(suffix=".bam") + _, kept = tempfile.mkstemp(suffix=".bam") + _bam_with_cell_barcodes(inbam) + aln_seive.main(f"--bam {inbam} -o {plain} --ATACshift".split()) + aln_seive.main(f"--bam {inbam} -o {kept} --ATACshift --keepTags CB".split()) + with pysam.AlignmentFile(inbam, "rb") as fi: + expected_cb = {(r.query_name, r.flag): r.get_tag("CB") for r in fi} + with pysam.AlignmentFile(plain, "rb") as fp, pysam.AlignmentFile(kept, "rb") as fk: + plain_reads, kept_reads = list(fp), list(fk) + assert len(plain_reads) == len(kept_reads) > 0 + for p, k in zip(plain_reads, kept_reads): + assert (p.query_name, p.flag, p.reference_start, p.cigarstring, p.template_length) == ( + k.query_name, k.flag, k.reference_start, k.cigarstring, k.template_length) + assert [t for t, _ in k.get_tags()] == ["CB"] + assert k.get_tag("CB") == expected_cb[(k.query_name, k.flag)] + + +def test_alsieve_keeptags_rejects_alignment_tags(): + """Tags describing the original alignment are wrong after a CIGAR rewrite and are refused.""" + _, outbam = tempfile.mkstemp(suffix=".bam") + for tag in ("NM", "MD", "SA"): + try: + aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift --keepTags {tag}".split()) + except SystemExit as e: + assert tag in str(e.code) + else: + raise AssertionError(f"--keepTags {tag} was accepted") + + +def test_alsieve_keeptags_needs_shift_and_bam_output(): + _, outbam = tempfile.mkstemp(suffix=".bam") + for extra in ("", "--ATACshift --BED"): + try: + aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --keepTags CB {extra}".split()) + except SystemExit: + continue + raise AssertionError(f"--keepTags CB {extra!r} was accepted") diff --git a/src/alignmentsieve.rs b/src/alignmentsieve.rs index 70e917077a..afc2c909fc 100644 --- a/src/alignmentsieve.rs +++ b/src/alignmentsieve.rs @@ -29,6 +29,7 @@ pub fn r_alignmentsieve( maxfraglen: u32, // maximum fragment length. label: &str, // user defined label smartlabels: bool, // derive label from filename + keep_tags: Vec, // 2-letter aux tags to copy onto shifted records. ) -> PyResult<()> { // Open input BAM once and stream through in order let mut bam = Reader::from_path(bamifile) @@ -47,6 +48,13 @@ pub fn r_alignmentsieve( let write_filters = filtered_out_readsfile != "None"; let readshift: Vec = shift.extract(py).expect("Failed to extract shift"); + let keep_tags: Vec<[u8; 2]> = keep_tags + .iter() + .map(|t| match t.as_bytes() { + [a, b] => [*a, *b], + _ => panic!("--keepTags expects 2-letter tags, got '{}'", t), + }) + .collect(); // shift is of length 0, 2, or 4. // Build chrom_names and chrom_sizes from BAM header — indexed by tid for O(1) lookup, zero allocations per record. @@ -194,7 +202,7 @@ pub fn r_alignmentsieve( } let tid = record.tid() as usize; - if let Some(shifted) = apply_shift(&record, &readshift, chrom_sizes[tid]) { + if let Some(shifted) = apply_shift(&record, &readshift, chrom_sizes[tid], &keep_tags) { if let Some(ref mut w) = obam { w.write(&shifted).unwrap_or_else(|e| { panic!( @@ -489,7 +497,12 @@ fn query_alignment_end(record: &bam::Record) -> i64 { read_pos } -fn apply_shift(record: &bam::Record, shift: &[i32], chrom_len: u64) -> Option { +fn apply_shift( + record: &bam::Record, + shift: &[i32], + chrom_len: u64, + keep_tags: &[[u8; 2]], +) -> Option { if !record.is_proper_pair() { return None; } @@ -554,7 +567,9 @@ fn apply_shift(record: &bam::Record, shift: &[i32], chrom_len: u64) -> Option> = newrec .aux_iter() .filter_map(|r| r.ok().map(|(t, _)| t.to_vec())) @@ -562,6 +577,11 @@ fn apply_shift(record: &bam::Record, shift: &[i32], chrom_len: u64) -> Option Date: Sat, 24 Oct 2026 16:22:25 +0200 Subject: [PATCH 02/10] style(alignmentSieve): use f-strings for ruff UP031/UP032 --- pydeeptools/deeptools/alignmentSieve2.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pydeeptools/deeptools/alignmentSieve2.py b/pydeeptools/deeptools/alignmentSieve2.py index 637d662409..8c4e9017c1 100644 --- a/pydeeptools/deeptools/alignmentSieve2.py +++ b/pydeeptools/deeptools/alignmentSieve2.py @@ -82,7 +82,7 @@ def parseArguments(): nargs='+', default=[], metavar='TAG', - help='Copy these two-letter auxiliary tags (for example CB for a cell barcode) from the input onto shifted BAM records. By default shifting drops all tags, SEQ and QUAL. Only has an effect together with --shift or --ATACshift and BAM output. Tags that describe the alignment itself (%s) are rejected because shifting rewrites the CIGAR, which makes them wrong.' % ', '.join(sorted(ALIGNMENT_TAGS))) + help=f"Copy these two-letter auxiliary tags (for example CB for a cell barcode) from the input onto shifted BAM records. By default shifting drops all tags, SEQ and QUAL. Only has an effect together with --shift or --ATACshift and BAM output. Tags that describe the alignment itself ({', '.join(sorted(ALIGNMENT_TAGS))}) are rejected because shifting rewrites the CIGAR, which makes them wrong.") output = parser.add_argument_group('Output arguments') output.add_argument('--BED', @@ -181,9 +181,9 @@ def main(args=None): for tag in args.keepTags: if len(tag) != 2: - sys.exit("--keepTags expects two-letter tags, got '{}'.".format(tag)) + sys.exit(f"--keepTags expects two-letter tags, got '{tag}'.") if tag in ALIGNMENT_TAGS: - sys.exit("--keepTags: '{}' describes the original alignment and would be wrong after shifting.".format(tag)) + sys.exit(f"--keepTags: '{tag}' describes the original alignment and would be wrong after shifting.") if args.keepTags and not args.shift: sys.exit("--keepTags only applies together with --shift or --ATACshift.") if args.keepTags and args.BED: From 060fd4af7ac22b4c87191b4482c56101eb69119e Mon Sep 17 00:00:00 2001 From: "A.s." <62971995+adRn-s@users.noreply.github.com> Date: Mon, 26 Oct 2026 10:28:57 +0100 Subject: [PATCH 03/10] fix(alignmentSieve): validate --keepTags names against the SAM pattern, reject AS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A multi-byte tag such as 'éA' passed the length check and panicked in Rust. Require [A-Za-z][A-Za-z0-9] in the CLI. AS describes the original alignment score, so it joins the rejected tags. --- docs/content/tools/alignmentSieve.rst | 2 +- pydeeptools/deeptools/alignmentSieve2.py | 7 ++++--- pydeeptools/deeptools/test/test_alignmentsieve.py | 14 +++++++++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docs/content/tools/alignmentSieve.rst b/docs/content/tools/alignmentSieve.rst index 7b7e0a37d9..f34b422181 100644 --- a/docs/content/tools/alignmentSieve.rst +++ b/docs/content/tools/alignmentSieve.rst @@ -96,4 +96,4 @@ If a downstream step needs a tag such as a single-cell barcode, copy it with ``- $ alignmentSieve -b possorted.bam --ATACshift --keepTags CB -o shifted.bam -Only the listed tags are written, with their input values. Tags that describe the original alignment (``NM``, ``MD``, ``MC``, ``SA``, ``XA``, ``CC``, ``CP``, ``CG``, ``OA``, ``OC``, ``OP``, ``TS``) are refused, because the rewritten CIGAR and moved mates would make them wrong. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. +Only the listed tags are written, with their input values. Each tag must be a valid SAM tag name (a letter followed by a letter or digit). Tags that describe the original alignment (``AS``, ``NM``, ``MD``, ``MC``, ``SA``, ``XA``, ``CC``, ``CP``, ``CG``, ``OA``, ``OC``, ``OP``, ``TS``) are refused, because the rewritten CIGAR and moved mates would make them wrong. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. diff --git a/pydeeptools/deeptools/alignmentSieve2.py b/pydeeptools/deeptools/alignmentSieve2.py index 8c4e9017c1..54fef3cc5b 100644 --- a/pydeeptools/deeptools/alignmentSieve2.py +++ b/pydeeptools/deeptools/alignmentSieve2.py @@ -1,4 +1,5 @@ import argparse +import re import signal import sys from importlib.metadata import version @@ -10,7 +11,7 @@ # SAM tags that describe the original alignment (CIGAR, mismatches, mate or # supplementary/secondary alignments, junctions). Shifting rewrites the CIGAR and # moves mates, so these would be wrong on the output. -ALIGNMENT_TAGS = frozenset(['NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS']) +ALIGNMENT_TAGS = frozenset(['AS', 'NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS']) def parseArguments(): @@ -180,8 +181,8 @@ def main(args=None): args.shift = [4, -5, 5, -4] for tag in args.keepTags: - if len(tag) != 2: - sys.exit(f"--keepTags expects two-letter tags, got '{tag}'.") + if not re.fullmatch(r'[A-Za-z][A-Za-z0-9]', tag): + sys.exit(f"--keepTags expects SAM tags (a letter followed by a letter or digit), got '{tag}'.") if tag in ALIGNMENT_TAGS: sys.exit(f"--keepTags: '{tag}' describes the original alignment and would be wrong after shifting.") if args.keepTags and not args.shift: diff --git a/pydeeptools/deeptools/test/test_alignmentsieve.py b/pydeeptools/deeptools/test/test_alignmentsieve.py index 791071f1e6..73c00af6fc 100644 --- a/pydeeptools/deeptools/test/test_alignmentsieve.py +++ b/pydeeptools/deeptools/test/test_alignmentsieve.py @@ -200,7 +200,7 @@ def test_alsieve_keeptags_cb_matches_default_alignments(): def test_alsieve_keeptags_rejects_alignment_tags(): """Tags describing the original alignment are wrong after a CIGAR rewrite and are refused.""" _, outbam = tempfile.mkstemp(suffix=".bam") - for tag in ("NM", "MD", "SA"): + for tag in ("AS", "NM", "MD", "SA"): try: aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift --keepTags {tag}".split()) except SystemExit as e: @@ -209,6 +209,18 @@ def test_alsieve_keeptags_rejects_alignment_tags(): raise AssertionError(f"--keepTags {tag} was accepted") +def test_alsieve_keeptags_rejects_malformed_tag_names(): + """Non-SAM tag names fail as a CLI error, not as a Rust panic (e.g. multi-byte characters).""" + _, outbam = tempfile.mkstemp(suffix=".bam") + for tag in ("éA", "A-", "1A", "C", "CBX"): + try: + aln_seive.main(["--bam", BAMFILE_IN, "-o", outbam, "--ATACshift", "--keepTags", tag]) + except SystemExit as e: + assert "SAM tags" in str(e.code) + else: + raise AssertionError(f"--keepTags {tag!r} was accepted") + + def test_alsieve_keeptags_needs_shift_and_bam_output(): _, outbam = tempfile.mkstemp(suffix=".bam") for extra in ("", "--ATACshift --BED"): From f7246af46534eb13371a0b433c9b0ce944457ad6 Mon Sep 17 00:00:00 2001 From: "A.s." <62971995+adRn-s@users.noreply.github.com> Date: Mon, 26 Oct 2026 10:59:33 +0100 Subject: [PATCH 04/10] fix(alignmentSieve): reject BQ, MM and ML in --keepTags Shifted records have empty SEQ and QUAL, so tags that depend on the original bases (BQ, MM, ML) would be stale. --- docs/content/tools/alignmentSieve.rst | 2 +- pydeeptools/deeptools/alignmentSieve2.py | 7 ++++--- pydeeptools/deeptools/test/test_alignmentsieve.py | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/content/tools/alignmentSieve.rst b/docs/content/tools/alignmentSieve.rst index f34b422181..f802bdd0f2 100644 --- a/docs/content/tools/alignmentSieve.rst +++ b/docs/content/tools/alignmentSieve.rst @@ -96,4 +96,4 @@ If a downstream step needs a tag such as a single-cell barcode, copy it with ``- $ alignmentSieve -b possorted.bam --ATACshift --keepTags CB -o shifted.bam -Only the listed tags are written, with their input values. Each tag must be a valid SAM tag name (a letter followed by a letter or digit). Tags that describe the original alignment (``AS``, ``NM``, ``MD``, ``MC``, ``SA``, ``XA``, ``CC``, ``CP``, ``CG``, ``OA``, ``OC``, ``OP``, ``TS``) are refused, because the rewritten CIGAR and moved mates would make them wrong. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. +Only the listed tags are written, with their input values. Each tag must be a valid SAM tag name (a letter followed by a letter or digit). Tags that describe the original alignment (``AS``, ``NM``, ``MD``, ``MC``, ``SA``, ``XA``, ``CC``, ``CP``, ``CG``, ``OA``, ``OC``, ``OP``, ``TS``) or the original SEQ and QUAL (``BQ``, ``MM``, ``ML``) are refused, because the rewritten CIGAR, moved mates and empty SEQ and QUAL would make them wrong. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. diff --git a/pydeeptools/deeptools/alignmentSieve2.py b/pydeeptools/deeptools/alignmentSieve2.py index 54fef3cc5b..be063b91a1 100644 --- a/pydeeptools/deeptools/alignmentSieve2.py +++ b/pydeeptools/deeptools/alignmentSieve2.py @@ -9,9 +9,10 @@ from deeptools.parserCommon import existingFile # SAM tags that describe the original alignment (CIGAR, mismatches, mate or -# supplementary/secondary alignments, junctions). Shifting rewrites the CIGAR and -# moves mates, so these would be wrong on the output. -ALIGNMENT_TAGS = frozenset(['AS', 'NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS']) +# supplementary/secondary alignments, junctions) or the original SEQ/QUAL (BQ, MM, ML). +# Shifting rewrites the CIGAR, moves mates and empties SEQ and QUAL, so these would be +# wrong on the output. +ALIGNMENT_TAGS = frozenset(['AS', 'NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS', 'BQ', 'MM', 'ML']) def parseArguments(): diff --git a/pydeeptools/deeptools/test/test_alignmentsieve.py b/pydeeptools/deeptools/test/test_alignmentsieve.py index 73c00af6fc..cc2bc8b1b0 100644 --- a/pydeeptools/deeptools/test/test_alignmentsieve.py +++ b/pydeeptools/deeptools/test/test_alignmentsieve.py @@ -200,7 +200,7 @@ def test_alsieve_keeptags_cb_matches_default_alignments(): def test_alsieve_keeptags_rejects_alignment_tags(): """Tags describing the original alignment are wrong after a CIGAR rewrite and are refused.""" _, outbam = tempfile.mkstemp(suffix=".bam") - for tag in ("AS", "NM", "MD", "SA"): + for tag in ("AS", "NM", "MD", "SA", "BQ", "MM", "ML"): try: aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift --keepTags {tag}".split()) except SystemExit as e: From 2e932012cfe2793bd855bbddbe86785af8b5222a Mon Sep 17 00:00:00 2001 From: "A.s." <62971995+adRn-s@users.noreply.github.com> Date: Mon, 26 Oct 2026 11:15:41 +0100 Subject: [PATCH 05/10] fix(alignmentsieve): reject CM and PT, duplicate --keepTags values CM and PT depend on the original alignment and go stale after the CIGAR rewrite. A repeated tag would be written twice on one record. --- pydeeptools/deeptools/alignmentSieve2.py | 4 +++- pydeeptools/deeptools/test/test_alignmentsieve.py | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pydeeptools/deeptools/alignmentSieve2.py b/pydeeptools/deeptools/alignmentSieve2.py index be063b91a1..ed5aecdaf8 100644 --- a/pydeeptools/deeptools/alignmentSieve2.py +++ b/pydeeptools/deeptools/alignmentSieve2.py @@ -12,7 +12,7 @@ # supplementary/secondary alignments, junctions) or the original SEQ/QUAL (BQ, MM, ML). # Shifting rewrites the CIGAR, moves mates and empties SEQ and QUAL, so these would be # wrong on the output. -ALIGNMENT_TAGS = frozenset(['AS', 'NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS', 'BQ', 'MM', 'ML']) +ALIGNMENT_TAGS = frozenset(['AS', 'NM', 'MD', 'MC', 'SA', 'XA', 'CC', 'CP', 'CG', 'OA', 'OC', 'OP', 'TS', 'BQ', 'MM', 'ML', 'CM', 'PT']) def parseArguments(): @@ -186,6 +186,8 @@ def main(args=None): sys.exit(f"--keepTags expects SAM tags (a letter followed by a letter or digit), got '{tag}'.") if tag in ALIGNMENT_TAGS: sys.exit(f"--keepTags: '{tag}' describes the original alignment and would be wrong after shifting.") + if len(set(args.keepTags)) != len(args.keepTags): + sys.exit("--keepTags: each tag may be given only once.") if args.keepTags and not args.shift: sys.exit("--keepTags only applies together with --shift or --ATACshift.") if args.keepTags and args.BED: diff --git a/pydeeptools/deeptools/test/test_alignmentsieve.py b/pydeeptools/deeptools/test/test_alignmentsieve.py index cc2bc8b1b0..f4a9975381 100644 --- a/pydeeptools/deeptools/test/test_alignmentsieve.py +++ b/pydeeptools/deeptools/test/test_alignmentsieve.py @@ -200,7 +200,7 @@ def test_alsieve_keeptags_cb_matches_default_alignments(): def test_alsieve_keeptags_rejects_alignment_tags(): """Tags describing the original alignment are wrong after a CIGAR rewrite and are refused.""" _, outbam = tempfile.mkstemp(suffix=".bam") - for tag in ("AS", "NM", "MD", "SA", "BQ", "MM", "ML"): + for tag in ("AS", "NM", "MD", "SA", "BQ", "MM", "ML", "CM", "PT"): try: aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift --keepTags {tag}".split()) except SystemExit as e: @@ -221,6 +221,16 @@ def test_alsieve_keeptags_rejects_malformed_tag_names(): raise AssertionError(f"--keepTags {tag!r} was accepted") +def test_alsieve_keeptags_rejects_duplicates(): + """A repeated tag would be written twice on the same record.""" + _, outbam = tempfile.mkstemp(suffix=".bam") + try: + aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift --keepTags CB CB".split()) + except SystemExit as e: + assert "only once" in str(e.code) + else: + raise AssertionError("duplicate --keepTags was accepted") + def test_alsieve_keeptags_needs_shift_and_bam_output(): _, outbam = tempfile.mkstemp(suffix=".bam") for extra in ("", "--ATACshift --BED"): From 6d6e50f2e2ecfd7060a03f17f68e357323a137b4 Mon Sep 17 00:00:00 2001 From: "A.s." <62971995+adRn-s@users.noreply.github.com> Date: Mon, 26 Oct 2026 18:43:03 +0100 Subject: [PATCH 06/10] fix(alignmentsieve): accumulate repeated --keepTags, expose it in the Galaxy wrapper argparse store kept only the last --keepTags group, so the duplicate check missed repeats and earlier tags were dropped. --- galaxy/wrapper/alignmentSieve.xml | 8 ++++++ pydeeptools/deeptools/alignmentSieve2.py | 1 + .../deeptools/test/test_alignmentsieve.py | 27 ++++++++++++++----- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/galaxy/wrapper/alignmentSieve.xml b/galaxy/wrapper/alignmentSieve.xml index ea8a697a7f..1d0caff542 100644 --- a/galaxy/wrapper/alignmentSieve.xml +++ b/galaxy/wrapper/alignmentSieve.xml @@ -69,6 +69,10 @@ #elif $ATACshift: --ATACshift #end if + #if ($shift or $ATACshift) and $keepTags: + #set tags = " ".join(["'{}'".format(x) for x in $keepTags.split(" ")]) + --keepTags $tags + #end if #if $BED: --BED -o '$outFile' @@ -98,6 +102,10 @@ take strand into consideration for strand-specific protocols. Note that only properly paired reads are considered."/> + + ^[A-Za-z][A-Za-z0-9]( [A-Za-z][A-Za-z0-9])*$ + diff --git a/pydeeptools/deeptools/alignmentSieve2.py b/pydeeptools/deeptools/alignmentSieve2.py index ed5aecdaf8..88351d5150 100644 --- a/pydeeptools/deeptools/alignmentSieve2.py +++ b/pydeeptools/deeptools/alignmentSieve2.py @@ -81,6 +81,7 @@ def parseArguments(): help='Shift the produced BAM file or BEDPE regions as commonly done for ATAC-seq. This is equivalent to --shift 4 -5 5 -4.') general.add_argument('--keepTags', + action='extend', nargs='+', default=[], metavar='TAG', diff --git a/pydeeptools/deeptools/test/test_alignmentsieve.py b/pydeeptools/deeptools/test/test_alignmentsieve.py index f4a9975381..7ebd4104ee 100644 --- a/pydeeptools/deeptools/test/test_alignmentsieve.py +++ b/pydeeptools/deeptools/test/test_alignmentsieve.py @@ -224,12 +224,27 @@ def test_alsieve_keeptags_rejects_malformed_tag_names(): def test_alsieve_keeptags_rejects_duplicates(): """A repeated tag would be written twice on the same record.""" _, outbam = tempfile.mkstemp(suffix=".bam") - try: - aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift --keepTags CB CB".split()) - except SystemExit as e: - assert "only once" in str(e.code) - else: - raise AssertionError("duplicate --keepTags was accepted") + for tags in ("--keepTags CB CB", "--keepTags CB --keepTags CB"): + try: + aln_seive.main(f"--bam {BAMFILE_IN} -o {outbam} --ATACshift {tags}".split()) + except SystemExit as e: + assert "only once" in str(e.code) + else: + raise AssertionError(f"{tags!r} was accepted") + +def test_alsieve_keeptags_repeated_option_accumulates(): + """--keepTags CB --keepTags UB keeps both tags, not just the last group.""" + inbam = tempfile.mkstemp(suffix=".bam")[1] + outbam = tempfile.mkstemp(suffix=".bam")[1] + with pysam.AlignmentFile(BAMFILE_IN) as src, pysam.AlignmentFile(inbam, "wb", template=src) as dst: + for r in src: + r.set_tag("CB", "AAAC") + r.set_tag("UB", "TTTG") + dst.write(r) + aln_seive.main(f"--bam {inbam} -o {outbam} --ATACshift --keepTags CB --keepTags UB".split()) + with pysam.AlignmentFile(outbam) as out: + for r in out: + assert sorted(t for t, _ in r.get_tags()) == ["CB", "UB"] def test_alsieve_keeptags_needs_shift_and_bam_output(): _, outbam = tempfile.mkstemp(suffix=".bam") From fd661253b56df4804f37d82984aea7dc32f1651a Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 28 Oct 2026 16:56:33 +0100 Subject: [PATCH 07/10] drop deny list and shift responsibility to end-user --- docs/content/tools/alignmentSieve.rst | 2 +- galaxy/wrapper/alignmentSieve.xml | 2 +- pydeeptools/deeptools/alignmentSieve2.py | 13 +------ .../deeptools/test/test_alignmentsieve.py | 39 +++++++++++-------- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/docs/content/tools/alignmentSieve.rst b/docs/content/tools/alignmentSieve.rst index f802bdd0f2..6ae82daf48 100644 --- a/docs/content/tools/alignmentSieve.rst +++ b/docs/content/tools/alignmentSieve.rst @@ -96,4 +96,4 @@ If a downstream step needs a tag such as a single-cell barcode, copy it with ``- $ alignmentSieve -b possorted.bam --ATACshift --keepTags CB -o shifted.bam -Only the listed tags are written, with their input values. Each tag must be a valid SAM tag name (a letter followed by a letter or digit). Tags that describe the original alignment (``AS``, ``NM``, ``MD``, ``MC``, ``SA``, ``XA``, ``CC``, ``CP``, ``CG``, ``OA``, ``OC``, ``OP``, ``TS``) or the original SEQ and QUAL (``BQ``, ``MM``, ``ML``) are refused, because the rewritten CIGAR, moved mates and empty SEQ and QUAL would make them wrong. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. +Only the listed tags are written, with their input values; reads that lack a listed tag are written without it. Each tag must be a valid SAM tag name (a letter followed by a letter or digit). Tags are copied verbatim and not checked for meaning: the CIGAR, positions, mate fields, SEQ and QUAL are rewritten, so tags that describe them (for example ``MD``, ``NM``, ``MC``, ``SA``, ``MM`` or ``ML``) will be stale on the output. ``--keepTags`` needs ``--shift`` or ``--ATACshift`` and BAM output. Without it, behaviour is unchanged. diff --git a/galaxy/wrapper/alignmentSieve.xml b/galaxy/wrapper/alignmentSieve.xml index 1d0caff542..f4d865f6a1 100644 --- a/galaxy/wrapper/alignmentSieve.xml +++ b/galaxy/wrapper/alignmentSieve.xml @@ -103,7 +103,7 @@ protocols. Note that only properly paired reads are considered."/> + help="Space-separated two-character SAM tags (for example CB UB) copied from the input onto shifted BAM records. By default shifting drops all tags. Only used together with a shift and BAM output. Tags are copied verbatim, so tags that describe the original alignment (such as NM, MD or SA) will be stale."> ^[A-Za-z][A-Za-z0-9]( [A-Za-z][A-Za-z0-9])*$ Date: Wed, 28 Oct 2026 20:45:14 +0100 Subject: [PATCH 08/10] planemo tests for keeptags, ensure no BED with keeptags under galaxy wrapper --- galaxy/wrapper/alignmentSieve.xml | 17 ++++++++++++++++- galaxy/wrapper/test-data/alignmentSieve5.bam | Bin 0 -> 134313 bytes 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 galaxy/wrapper/test-data/alignmentSieve5.bam diff --git a/galaxy/wrapper/alignmentSieve.xml b/galaxy/wrapper/alignmentSieve.xml index f4d865f6a1..83d0e1e8db 100644 --- a/galaxy/wrapper/alignmentSieve.xml +++ b/galaxy/wrapper/alignmentSieve.xml @@ -69,7 +69,7 @@ #elif $ATACshift: --ATACshift #end if - #if ($shift or $ATACshift) and $keepTags: + #if ($shift or $ATACshift) and $keepTags and not $BED: #set tags = " ".join(["'{}'".format(x) for x in $keepTags.split(" ")]) --keepTags $tags #end if @@ -161,6 +161,21 @@ + + + + + + + + + + + + + + + 7OiwFb&00000{{{d;LjnNq08Nk0O2jY}h1-pgK1E+(a@*K$vZ^|uLamj8 zTS?nE2GZP;TxZ5N^x?7IdJapUgEzfimInIdv9dUGuFMz0nv}fDbh*R zy|J#5!FtSo{*p>LbTz)Ty%TQ=Uf!* zp_X8AP*%GwjJn5fA`P?I8(2O8PFd)UJDW71r*wtsMp?E0ft^?LtUZtpv>FvDP}XeR zq#boeZ*|FgHKjn)44;Sxlf=vZo8^uhqu=x+{s+uMiMSR4001A02m}BC000301^_}s z0ssIot$lm6UR8DP;c-XhmTQ&fJC`wTFHn$>$fJAjwfEXcJAkR;9nW&-uP@ zueIiyYadMiI5NJB@$1@i%{3ptIp6$Jp3u^H2Z4$zvZnWzic8 zrcnNwK|Th^H^q=mzW_9li&FJH^45H6 z3;B?}UF3N{zFm+;k(GUIYSXW)+*B^`>+@T{Grc9B0^m;xz_est78QVXB`tV5qA-vz zZJ*7I!LoBt#yce$8vrj)0T-2pUSyT_WV};a@?k(;D(HpE@W2csYRoOgtl5-`1+^mw9H2X#gJ&;MJ14K`T^QDN;B8gzTKx z0-m+M3;Z4cpO@M_D6;BXlRL6l&_?x^J4dn=KqUb~7-iMh%32#y#RFaU4gD!k+zXd#bphv)$0r*Se)>VB2v(|^9 zP%iH9+!5}q=`0vBE;8FFu^~xA*}5a23gq}I0bBq%H_ZXb zYH!Wb_K|tJO+qF!p%nJe7IiJ@#ojJ3*^0YGTTx;U3qmjJ(gPmIVkaXD@*r!){j14h z!jAyAs3ZHwAs+$cCF1_U>*W>MqN*-phvXNG86sQ1OtcnR-(ClTQPfEb>ax5aqBJu*hXymnsqs{fgPW zMF9S^DC4r9*BJ~3&UTf#yEk0&Tg;NlcHSwT5!F|Fde?qiy z@TWK%%`sH5XlQpv7KHq9(WmBpT|ha?D$jL9E%so5$9f30b`xZQC07;xXj34R<*hvd z`_N!CYjp%@GUt8;q36r+zk-ibmTM50*^`6~RjNs=;DInPv% zHQTa|9g@8mG4F@pjuBNZ??d4b-Pc*|31g^odog0(h~NI7s2DK!M&Xbk2sbfD@*f%G z^Q6R##GC=XvZmL2A-XKc3#FEPr zyJ+E1T;zY1kVzQVi-AB6OeDY*E7~lA+?z3o!QBXPjcD<)fmN*_jndfM74yWefjqh9 zlH$2aDeD=H9}kfKDS!}2cK4IB{b%r`h$LV|LAXVL4_Q|#kGSgth5{a`+Xl(t*OO_V!lLn~s=SQk z$MajjGd(?CA;-#1`dikj=v!OFw3u*b9Wadro2f7WVV0&apsFH~^6xUbwo%IZnpg|I zDX+;4fqII__&@^omb@9ieOWRV8ML8NutHg`V~Gw2OloniDC4SM7SIZfh}KJhUv+>z zQ9Oj-z9xm>6thqaXN|I+y8U9Xd+&+Zpa(_AN3m83-KeX=kK*2NkQ;rwV~9+g#-`Z0 zV_1=~JvfVeFd=*CK&zcxTVggJk-=2c>*3OOSHFZ%{=%Ci_h8X(UiXMMf43 zl(Amu@=p#ja{wO@lO6JWrkspoV!X?&h%{~#tr5(HF$OtyWoi%kl>zc>W(POnxBJDY zwg$4L9aMGYWhLJqc&NjMhkJBVh+e%jeo}mnc63k%q~zhua@R=FVLc^?Dg#YaAVzFE z)WK4ZVC>Ka$^B1d>;=M2q`!q}Yw^4mD7VzLqB$npA|x>k z==&q#>AD0>rAVe&ZC)};btI!y>m|ZxNJVI>`4puS-V9KWV)ma3uvZCzzh7((_y1@{ z02`%raLTS~Z7Al=913Z$)MJ>XQbqR~!2|f!+iWkG zUuXc|##)0)(ZufYy&A3cElI0FqB>N7c|*|AQptZkEU2pI0K=6wpnHc7;KQNWM%Pbc# ziE@CUHU+rEmQx)p^bBU9sBGlB7g_jl5tlUu0% zN^ih#^F{U$;dFt|w^mooO3#U8KTE~EFCo&pKwO2SwPFI5bC~Gog#;Ty(I3K8+b`i! zIneW%vrlIF!=mwX%D&+-J&!r2RN%Ts3aPzfRs_|veN-vBUWzEZs?ZoO0LG%8EuuON zY7x-ALp!xd1a&%D!tYL=W?GHtASCeQngcQcI$A1xHr?$!MZaFR0lAA7ItPOJj z77Zyu*QVT?BEibqT7-Z)FBx53G;}E=)W4Ah(5RKka)b4jnPt+yMU1XeU&u1iqq;pH zp-VYG;!@8|#1yUGxd)dnT|_+7QcNa;Q@+FA*(ip+dnc`>O~Q$ZV*{T*cGjHA8y5I6r9%royC0r z`3YkM)lyj#uM{0ozai0zgP_V7WL4lQjftVY+eLjLp;nCvK$#j*phmFXQLOLojg7sS zXf;quQIAAcasl8)OtkW>WCEwyYSiB<{3(mrLie4p`YRZ(D3oKd-$39C-PKJBxcbW*7TVw&2D(?}kIj!ZQ*;(R2*skEAI zMy7gDT3X5!+MbtMv8JMm+^7nq6|K#^`yah@C&;{+~^IDvCS z!-Dmy3=XTV3)TsIm{9`iq5HoHb%l5p*6LPP21~t+i7lx=?ZOlZ-0E@**^0}Cr`3%D zPEC+Nqki-Wex>`nnACf8wHU9s9Zb6fHRxUnQ7<1#b%aWlvD*?PaJvc?qFza;2f51n zqC8$xGzS(=5Sg{9Yc68BDxv}BNhFxpjTj~Z%Of=S@uFTiQz{|obrHgTp2&hajn*OP ziU{b*BB;|A9tM{yh8An2091PaSV{p}tpQ;i%q^92)>A|h(CH|SES1SF7mJ{7H)90V zW5K8s<2sSBa=R|V6R?6gtq0GL>p*`0$wUxatQdBFjZmp;>q?QaYj=J{R(ilR6oBco z2o+!@qX1OKTqkm?P8~Gds+CM4NNv>%#LstIs6(ONz_JL2?KPoWS;HJvs)H>OD^^Y;aJbZUjH*%yc(0gT5@*+x z?1&0tV!(CGvD&jI^f)%C1s#CquR8=Qq0#|(Ce;FL46#-gSr&5w)-lKGRs43VNU-I7 z3%`P#J=2^8xRsXLb3vb!M$Vc-XtUJXQVU{McSQYOqHCidz0$Sx`=gtdAJh)hUJz+K;80nyrScXO8QU zQhk+ah6zvB?aW$9tXo8ag;c<1q^*Ws>+KQR<}y(Nnz9S1YenQuM^v%`n^F#|)`)^& zw#%GxShq7OKn%;JVwa&MhJ^~O8B4L;9?>g#fEd2Tz+fxgU8*TiMNuHgMU*ZyqG1O0 zbIie-4XHkn>bX@lWDBcZaa6ztMq8<#b*IFKdlj+JxolvZ%Mp@u3ENC1P&W)-Ac8uR z6=BH6eLuOud18-=JHyj$sZ`8fD{=u&;kw&WDGoY40oras@3vJGvdfiwr^|4xlUC6@ z!D(XSiaV9i4VC&?mx!H9ZtrThy?TFw5%fADBYSngG<202stHjyMyhugCAzosjNBkB zK*0s=8yNu{Em2HiM`UEF%+%JAq6WAFnPGmpkx^EfGCEaE+MJ1^P^~sGWEc_J8zq9p ztB8b4-4yAFlTD!0z1&94#N^l1d~&O(0PRMT z$mj1njhzY$B9cr;pHDrKA5SnLt=`p8r#3So0Hp!fCCWj039~|7Q95TrfX$4i5|@9E zNCmpQ{X{2JQmW610jpaQ4#m1T(q=Ya%vzlpy~t7-*6MW8R=aaYA?lV$yn1V*eF2FO zaX|*2kO?ifFrno;dU8du>9Z`G@s+|F2K3$;gDG1#TsdA;R%gmKEMI+rnVNfDQr2N6 zjPM5;3!*l+eD&JAHnJD9{xUJ!)=WmhYGr*@5^@-`z716D7ZkQeXa$8;1vkU-1txPR zEx0+ExRxewW;B^gpuWh6mP#ULiD_FiL|Kq+)qZ7gDB3SZ=!-`aNfww+y!GM`fZijP@@UKI691AHRqWc5tqk%G>9Vz{wlswOj1w^idJh|*l8fo?#Z2gO@XVU*F$8ta&mR5%GYZ5ooLJX=L1##-=xZ30r@9X>=#XNf#SKQ4YbZJii73;pNPVp zEp8r}G;NUJftmMbl?OL6d~H}l7@4#+QYU>-LU1hF@b-_#hEdK4cX6sq*X#Uqkxy+Q zbIJZm32w4A{OAA=Z|r=GiT23|FH6*uNB!@PM!X&_*p2vCinTwdTgd_5`Rf3C9ZUR* zw=uxf%DP-s3a4$?1zyks=EC%kiS&=#4#^`w9tkDx7TbaF2NW380w=nT+#&IJ#0YIj zg+HpQDHK$}Rjvc%CuW3qNKmvUGS|%!qM@&I5FYSYDMRb@{`Q*O8^H={u8XiJvpqyjh0MR zv`>o^v|HVC*8GnH{~f1dwfdF?ww-H1nX0u zWgN*xl9+=&T3*P{My%&Wi3#m?hc=J=jR<|XB$a=(TAwG_fR;lhA+Hy`wOgIzz27&P zoZTi=YNp#9T@SW=`K?krH)g zB=}?f{IJ$CvdUC`_)MaN*{-!XR(W_`(DM-z|9ml4c7|ob3+=e&l6zX1BJo>;UG8!n z346$=$waO{hUx;(3zj^R!&0fWo9UVl1@QtC7#`M3jQ7&MfnC7?!T(f|(BcIqW+4l7 zqe!$gv}4)Vc~xeSxR3)Dm)rnX*tI6zvwkT1h9e8_)E$*F^9`}xTx*N$$-jYbehYb~ zhkO!{znGXJvX=6)EGr|&`31&K9G9TTDBr_Lrs4E5kI^A7Frm<~0KQKI)(yu`nYD`A zOm4})pNf&Qra!qNGP)|J0lXi8Kbn{-K|n$IUg$j>S-d;6ndggfg*#T|7|kEeZ7-SW zCOJJ3Wwj=uN48=hhZmXSVSA|yuq!GbSST^l8}9<%1ubAd(|d1EoLZW+nbb>ye?b%w zInmsbDeskObYd42{BvdUd>Ttm0Z)dp1qxtQovE0u;E)gNr7qrUMnX!6ISY~JwUNE{ zb*f(6CkDuF4J5Sl4eCLzs$Drlyl^8JHgU72!REab(YMw=Hfhjr zB_e=o8o(48|7oJ)sOpNEa3ST$`FM#r9}5Be717L7W}_iw_&zh8-6K1Hr5JR>chG=O zh49-0{+R@PXu?=bsYOlAjltt64zL$v(FCo?(~}}oBt#jLcS3$T5c0Q~faRn_Evu=S z>r$aYhRS)&OaDDB*?Z$>p;RuNYNAJRUpF%p9>qDl81}o2Ui?lk(VIOP%~zz<#($Gw z=%&9H;e}R;ypY?U?OM2jMSeMwOJ6M>>%4J%l#^8@*H8XKrj6oINssF(i>#?S1cKVO z5A|Tggex_c zDk28O7EdGQwU_LLSId&Am^%#|_A2d|5w_}4(QJ#zY`O)qu&IVarOM%^L>;7E=MC%f zJDA*gy%6h8ZUP`qP`%R9iZXC2 z+Pn#WjWOXD_T>A>Cs`SC?g-7C%k_tE)BnIlL zZ!>TORl~>d*VFHu5%z5@l&R*T=?n!6p^;-5|4qP&fgs*sd=A<1+mps|)S(idi#HiT zER;!;CdVpGM%rer7n=TLK?~Ry1Zl(d31%E214@>4W^*5TAc$Wwg7`vWV%+a#44v=W zKn;2sBdDJCeksw@?6>iSZsM(ob&&54$C;?8`4mKO#*Ow-q1wNZ>+4b}F|3M*OC?a> zMXZzPaApv-8|oIxMKF!R5max!`H57S&ueAqw$|IFYcrT3ywFKO9TO`V?e3L&%g-P&7jXnZr5lQITY=l4C*>*xQ!V{?}oZHp#^@AX{cN8U{1l7L_38ygb<2# zuU_Z}&Po-+np%nm35_hQ;OGMm^;jva>!d_a+vJ3ANhUk@xy$cMz!xS*8+0??io;M; zxd%Lu!*4NiSS4p6le6x0J0}W0CgVEV-_;Ad5Qu<3Ey2}+ATM$npUpago}5rGVy7w# zcR=-sngM-xkMBO1E%szOR|$qrrUCWhftOM_qsy*_na4i8K_cp^z>TTe1LX(E4zx$v z{^Q&>uqW3`dg3$Zjc%d3jQpl}Rmm$QNEeFcQjOey zaO?*TGIKDlPa)&@;$J}GD{0Lh@{(k&mhJ%}k8Y4MsE9_4GkdpC>I`V43@t7+G)`5T zy&9N9J)tLG4csuc2o~saY^r30sQWU3=n7fSCL<6_9a^d^+52XHrx&uz-%a(*dR3Ru z^6tkZA}`6;Hu#k|33L?LQJ=)ki8iNJ8%G$|aVvdA9t8JG3}IZiKNEt|m1bJ>X72T6 zVPJazqgG4gHkPTt7WF*1i9&PtEFIhnr)yV9Mf#~`tcrRHR9$OMs}5##^&zP%eK=oU z)a21%Y8li+7*z5(7m49AU0_*PO>kFMF;q_jXlm~qvH!uH&}jYQfD(ueLT^m>yH72hGlk-uP}<7fj95jZLM1qjkNyUWH+(C zm?UJKhOo#|rwQsegLM-C-92@5>W+ohJyYRky*IMfl_GoY_S%JOJ(Te+w@Jap)KEYU zDhg+SqE5!Q9NG)VP`Bc@$HXd4(Ikh=cDn|J88)E83M zW4j{>k)<*|;A4rTrQKp2F7z370+5Kuyz!pkQrBP$Em`CaUPDM=O+%Rb6%j-7McJ zGFj%c^qL{O3U`h5?=c?m5&0UN=Ke~BT13Ap;a3^AnlUN+^Ri9#r`5vUFPP82N1n28 zD*do~G%N~=pUDCXCbwMIlb_xznj}bRXn*rWWQb}Q>;KI}7U)lLh61n=^LKe70%-Ns zho|300_zVail?pNkO-*v{Zv1AP^_9c1qkNh@dytjrq=G9Pzd@yM*Y`y;TRP?kzHkm z>wS7(Bmi6@e!e@m8ZPzykpMV3{Xoz8fU~e%0p@LhP6ogl-;Y{c*%kEOL~{}us)ocy zpsp$r)IC!dh|b>`xgP5T`dsRD9Cvg%jQx&elB#X^?cv01AM$EVG-$~tRYx*H-7HUW zO_ogStf7IO>(x$ffzF&JXcPQGoCs5#`+}s;e?*!T9PpK;h7MF<7W0m%Tcv@?se_8@ z5WQRx{=MoVWVIQ@QR8`GBW_Q#uOmhvDsHxu6XsA_3N4V7uV(?Ru06+jh zUu*7?#iJPkJS;iYfl)0hQdMKP`^%4Imink1r%knusK%)j?B$&tDiz$$lB^2tJs4Xe zSd}wi=b-K#Zq`|1`sdEIhMU!(di{fM$}hSGU6d32S{ZKfGLZvvCoU!gxsD`2y(H^J zYR&B%iAaE9SFcI1VC}Br5cN1l2OgJgOH(AK)EAls$I3nFcU&Z}I!7cyoGHBt0n}Bj zGeyO6Cb7fsKY@`dl^vz4X8jUl=mk$;ydb^v_v2ql$*S{EU|*Q zI;S^idme%AOi*iH|95x*<}hp(t@IC4wa`|pUu3DCQqiqV$BGP)b3;=IdeX43V+2Z# z2zQD>kki)@zT`uoGZ{_&pa|N&iy+*6ZlUk&$vwGVD^|EsCozuo+lkteKiwEE_2gdI zgG8zJ!wFm6%GJY-IysU7trxZ5>6QvtdK%-b@5XN*5kml?zTm9-s9A6kz-f^PK)ei? zo<>AXpepF}MT!WC`VuAK(;pwLi%QcNt}J~?Tvtw$Go!ktP?Cq#(4 zhzY7TrzlQeuGys=$%$w!Q=Q8}Tit_tv?e1mk;UI4}hw6#&FhIbUe)?VuU@dAHpdK${;Vpj-Y z@G?+kQLn4%rNoX)eM)}8p$UO?h9uY&%4Qv<`b;nNRyYo;rIgLU5OOBq0>%c?Vf}*? zyQV7=0IFadxo{za`gF3rf*y%26*y~~mqkZZ66+lzXG;mYrP(}KgRCPebsogP&G+{C={5pAu~#QK58Go-$Ti_FWx5NO<<1ks0W7L>bz8F-I{3( zrMimQDw=D$T#AC-!KlyxZ~~y&@6*K~*q!r^2!J6O&lY{4J2EQ?V6@ieazoKrIX&^= zQg31$%XZnZOck!O+EUh@bA#?TG0M6<>8@}BETn1_c8pQhX)kp!#RuA6_sh~&+{1u3 zGXuB>;IRIcNHC}-!^)|7z4q>5e0d;*)e+MwU$;wC2t7cp3eCNfxtfvecjQ~(8_8Bp zTciSq%Sd)j#9=KGm7tl8qVjEJOD?=x%b@;sg1&ADA-DpB7Ztr~8&* zvf6{#6T(VIn3QsUSxm59iX|-Ht{ZZN@B5T59S zTJ+?H@BC)l&|a-$?A7^+W>c>u5HbNA==-{4LZiOW&ovBOaCM^qH6RF(G z69%ZaF}~$cDPUt}xIzKk#t4AAC6lujqi)ks0Jkv;Kso0hiNu}DT7(L4Tf||>Z|6Ca zVY}q}{l?f3^fM9KZi)E)&HzJrk^5bYXW5>(fT2l*>cSuq1S#xYiuh0S+Q^>1?lCSW z?u}(tTIbZpZaCL+HzNdULRgm=J8g9_Fb`WZnzbm^7~|D2nK!r@C7?!B=?Yq}=Qe!U zeKXS=kpgvlZbQY|98s)uq_ou?4GF*g9tM=m^&+u`?F?Lmpj#NwB?;!*V*|t8zn2Nw zD7gCLMA9<3`z2U$ZaDPbhzVGl5NfN9J>04L2y~Xa)c=B|KA51GU{Q1I6xcgvrS~z> z+Cc#Q6Om#@jjg%XI`2^5Pva3yyQR*Gnk!%4&q(z^S+6FG?FPkG8j{GlBk%x2hL8Z{ zQY)ZQVuV#KOO9iGfcgFp0Q6~*V>P5!WC!Un%<%gkWW4G`;%3RlRUxXRw|4pJ021`Rt}ZOuw%tWKKDYOFk*eU7rwPe8QUt+vAX?M&aLi0nA<|; zVoUKhXt$X)3|TnPqop_~oRJAZA7O$En#Da)tO`1Fw_$$u2$Kp@Xn9tuD%cvm3Xj2~ z%rPLBy*WwS7!oSq9rq~X1r8n;-;|Xc)}KbAiw&Y5po=GTMdwzVwjUha{J6CjKA1qs@G+uZId`wP4<^iQ12YCzeo5Zx zI}2s7HKMQ|OwcUtslE{Ps}bGWDC!m&nZhC`QgzAQv;I})7$i`eGHzv%4k(jbjuQPE zEp?Xb3rPt+CAyfhdHk5J;IJhZ3_QkAqU5&!P+Tf`7elwYpx#jLBGl%_G*s^>(6BkT z)@>0Ln46eBX-~_BD!`$Vi&-w9`rXIfP!~)6K}<`pggP=>)Q@;=ie+f^9)=EP8*^T7 z?1}I1`h~pE6>MW%;T6)TRM>P7n%Bpf@2671-J%A#Wq~lrc$^6`7AG{oZDF2>o(zRon@1ZiT{SqAp7_WrUpa&!y1u;EvdC5$Fb0DUVlLgljAgQky835Po_N4 z*u3x_3I5?g41XEP>ehfvZIq$wc`Cy3UMl5xZX2Zp>RN@5rBcyR6Itlbo{9vu7mKFGnNSF~>gmW< z$ptyL>p%Sdrz1It|82w)tP;tHCiFmLZ3|Kb*mKZcDS;0=ce1|zy|6^R7QJqXZGwMizR^=T*^|<&5v zcbM-tQouea8(bb!h&dO;_4s~^VFYI@}D=|vyH+oI%-esxOO>j%1(XG{v5cW82 zA0B|#^PxTYQf;>)@uAx}r<p`T*C6Rp$3dl z&rUSYO%`-)j%8DAt0U?%pnhHqf||$G6jW9zwtMbPMgkOCtq=_hRH{ZrfVyZ|8sJTa zu{vfvbpw*ZnLi_~Mh$>oPcAc~xS6*R=qL=LfaMgi8O0fT zWuDL;53Th_6J5zvcr42rs#?*^Z)mLubQa?R?iWEd6+#eOX~cqAN7Q9q+GZ?~i%KhY zM4c1Bt@v$Q0<|#B^VynxhxctrwYgD7(bdAH&e^u?X-joLE*3cZeT77rYi`*+veXAe zRP2?d7uL#5aa*;=c<2M}N|0;*{7C4o_8bol0104=s8)5~(Cyl$qIR_Jbpl;Bp1M|y zVoOWS{&|*n1idaHR675ru$Cs%%Bmyi#pB}T`prv4bu*q{6snAYdX|d3$`ztaX@(AQ zg(b?4+5SBlO}#kPFGQ&|DgZR?l~r5}xF@5j*U0+c(BNQf@Utn{2TP{?{ZpW}KwMqx z+D5@Zka2n>hgg3%@N(G_X)sO`(M{F;HfycPDb7 zV)AZX>c$TB|DBBfuT705HJ86-$gELYVjpb!Ek^%osh>?y_GMvciYQaF5l&zf zK&YRP6rg+?Vq@FJd&7bL5`msZptmoBK5zp5tGC{IYXp?!Yi*O7Hb!Hcxw&@?-~WB| z{=brg9suY?fHjW zX$se!{odrO*Dn-|N?Hj|OzJD2Ys)1*KdaZO=khKXwgdUXEJq@hs zp{^L9{u5Ad6;O@Rt%*%+El!Nl>ib9Df1QYFp;Z$+v}%(Zd;gPiNpA*flI)7!U*n%P z>L%D3W&IPNo*~(l0;*|ZXsz?1e^zUIs4E9r{T@)S6j38&)hV{o%zRW&0`v;WSfSPs z5C~)PvmO;;?ie>!M1Vx*6d`D8v=vQtMgy1xR^@bTT}V32=m4()^?t#v;HVT*8YBU$ zRO)G9a#SZSAJvv+)J;;j?%WE2HE8HJgy`qq{f=?asRH&x)Xk!=B3h-WTdShu-v7iA zt%{}!NpW5X*B(~u7*jowG1Y$r>dnGgX(SeFjKNVE%PI9FMyWgT>~n%rDFV92CrT`^ z|92Pff70^%PeJ$M*;j;g-H=t;237@mtrtdA}&&{?e! z41jDEQPsCjCB@~ylb0)t=~4X{px+QPD?|+%y0zN)$b^8C8Mpcypngh>tFTp=X#=-P zF)$Wz@<;@{TtszkP`V2-2&=P!{t%!yRzSU{WMzHO$LRe@pN&%ny49(%W1_w{H-I;R z`j8k{eXE^;s0uD1TGdq4eR5%exQdh-DX-$tni-Y)eSlsqhE*ymQCjO{Qec#N%Cb_Y zOq|)LTSHKp+TFs}}Wj)?%D>6ya1-za5ibMmqjYd&xl%gnVo)Rw= z?5nF^e2ml_p*LWxmQw(Q@10_^310{r?KV`)R`4s9ON}Y&e@V6Wa;f10vVzmbjiC-? zeNJj&yZohqiXH~FkEe<4zDumlwx~zKzD1}{DV>4VswG25MV_qL%WTj^ILb2R1 zB&$uWGfDSlon#u%7%iFCm&AO~F`6c{hT5;(434brArEWMe}xuyRpz zh#Q&M_1^&9TO-Oe8U!3zQhm>bxUZhoL*{zr-xHHf(*lvW0w}pBZUMX^7x`}ie4ZF? zBf2HE)HtSG;>AoC48gfuRInyY?OJWM9U#9}>SBsaz1Ss{qeJ0g5E`N~Iq;EEIN6io&$t+HISUO+v7XMZHcU`p`_>W(~54_d$1OXTUNQN@rx5Bf0!Yz2>1puB16dm40G#1UE2ZjSv};ThrAQdZWAMN zY6GSWZK5=q>*AFRn2AE4lz=<3)dJZfY#b|z-CjUfTygt>5iisL*If`M>P*e++oyKa$q5oO#jF-65 zhQ@^kLXUwCeC`BNfp}=yz_@HSSC5od;s}abSj>u%mYSqFUVAkY9^S0v<&J?42K8kC zt*u2_r>HcW|8k`iSEO*tECnLnNy=uLmQ`PUc%SHXN)BK%S0_G6lo~k z(Z*}8iQT|B!qXB-6qh2eYg`0!NZfR5BjdLFB~I^X?_v!mCLlF6M`~_lN)lSeFd}12 zL-WuLxufovBpMRSJhC`Z0J)#R?S!)4g%RK8j~Ih^!`6ITXbcvKq(0p3m6U zU3j*wMw%lM2ADuJ4bv2#&zQh7a{t;<(1A$)1a4Q0qE11d#Iw6a1)vmD-7FRzi(w3F z6B7telw7u)#g@@!(=ydCjRXHHW%90eL(gL6kC^$pnumIekW!yB9y*kWdKwwZ~8uj1KXien>9rCdan0sfUy>t^P#p2D-c zq=-cc1~z~^;8HY95a2|81kZMf6po^i5v&U|j$%N!Fp*_Ze*dN3DIijzB(hv&*}_B? zirDu`4J7K8CU|g;9!}fLh)OBzS~0XzAw(TWq@IC^S6fEP%o{`lz**UbjtZq4BkF~W zs8kexSkx+x$~KOuOcgaF>V=G`hop-5=(NapHDNLti7A0TBW+}K?{D$`$XC%BpJoJo z4$uBrbO6|^^VBw@kC_payy}jM{YQHItYr()Rqu4>U7>Zh1=O})IhIzp}*Y0DvDy2)*15$ei8vLe(^ zON{{D9Rbk8R<+^w94}@>J#K!6t=vSTH{*@t)|@V8M5WH{e6e!{6@|GgSaF5+qD-q7 zkG%gUMLHE}#X+Mj+@KNPKd%Bei0lZJf;7@a4an{eZD%+a8pwWLtk?2Md5L-nlK~D_ zBcSgnPeb0N9TQkC9r4zEB8Qq_riKRPNpnTurHrW5U*0U1mX4OEC|P+OEfcOdRLU!R z#k|t3HW)~4BO3%c)Mtr#6Q_eTAvU_pfx6!ePquP*EDsf?YNaIbpr`@FYX#8gm14BI zW29i;E;ZQX0YTAHvWaYm&7r<3N7kkHH#Slw=-JA02V+)G%L_i;vNx(#wX~hjhRUPGdx5W%aS2ij0BcVA}UoXw3+E>E4PeRQ_#F+`yFvyh5Uzv-MT>Yj@!bUv?I%orFr}nCfQhTeu$3)UD1(-y` z#n7cK)V>F5(}`cGJUZ+(k%j%mW)z&F-m=> z>{Q+41*1MZj@qj+Ne4z%Q|e&Bvn&91F~!Qe=7oVk2TEmyc1YMxML&khod4A#A)YUI zN=KCshqhE^)H=9^N?^_1pSg-LRazALK;`}fI0ZyjFl<%?oobaPP!Ckt#on~3RO(fX zQmKXeYtd5kZoTxXtC&zF9u>1bT{^(kBl+)Kv9W*xbRw(52!~O?HB43YQwvalxE|H@ zK&VwvtY%E`1a&uqO0~-UA`3)=rjEMC^g_*u`m9XbH(go2csa%Gy%IAcHwYkLvD!*)>H_4C#!X8S1V;}EtVQfYrU2! zENR5Bqq21daq*{+FHTQH-NV$ti!x)?biHK=@Bun8%hbSo7*XHEvp*I471g?w@S9TE zOmG5vJ#$pARvEjF146ZmnJBl8|F%JoE_Bj3RCPDgju9w@0AmmW{h+U!fZjO5*j*-4 zRtm#4PvjaX))_&`{BIS_AMWG;s^M6iPCv(hzJzCA6uY(1Qu1$YqPn8=shb!>eFD$6 ziUE-3){z)So$vIPs8dm2sI=>p0nn!<)PP7Agp z(6P2~0sIdVN)|@ey-acW^YfM4*%Vilf(E>`QI<7t1GkE8aDF+nEZO!lB^xbyZx?qW zvW4z4vD`M&T&}86p*ljVDWPR!Dz-c3%iHOv*7~5qZJbinJD4RN>VrO7x#-mU>_rKB z=SaA|v68JKjtT=Yv{#H@-N|_Ck=lT*yYY7?~ zxz&)@D;J2Yb#`5%bbxypQE9#Xk_u(hUy_$l^PX*k*t6wV{YqoKmq9(f##s!mG?b_S zT|lD0_c0n+GcT@>7OPRE2KF&QaDJh-!DN=s2@NKttiv;*k`G)evX6|jHAT5p%^iabk!Wr1!(;O;f;XB4ne zBALpCyHWxB83oWn!*yb8%~v8M1x!(?Km2Nqx$L#ACF%i2tuzq&?b=Ydv7U04%2sXG z_E3k3@O?O}uZo2`U2LQ8X;^;KZT@lfqFldQzEshU3$dC*aTD~N912kx)UNb4r&2KqT>4N8% zYZl-;fiY@vBI?wx-jt}D<)MJZr~xEX#>UAP2ZLh$hkXur)Got<`P@kxMOagvt zVOK$M8u%7tS9DhAhyj~s4MdBBz4iUM_?jN-aMn({LF>f{c0+d>aAMkXqvmgo5CRuf z=GXK=HR9QHu*U`!TBWnHczgz3{uM#2B7>x03W893W?}Vtk#T6FnTX0J7R+r3-3ZTIHhm~97hAts{ zWuiMqpj`+^I?;`{q>qJG!;)3eSQwN0r7AlUl z^uZUf!qGW42|U5nfy6(5Mcg;Z+4iyy{LV;feN=SUB}&M4pJw5{9KoSdb@}JDRaWCH z;)@ULxbbbH#tDB%%Rx9W%dK61cO0lytTsL^~Q~*1w6?Ftn=q<_fGO_Qe|xY9#gZDW9<&gPt0pt}d?dLA_=EQq-rJqoR$`onqUXZ?cw0 z^)w^u25Br%-oKPU^IrHGQLEX?WvSFdBTD^5Wq{GUAW|yz&~!WiCaEk*si5ti)>)g*|16%|WhHyNHC3D;Lts&?Of zUo=K`Kj7IBv)V0=aPn2AxtUPutmIGBfevlL0^})4yX`xP-yp2Xl|0vq5d3D zKV7{iM@xbjVkvHy;UAddV%36pVSI_dMt!NMaq)wZ1)(#=W`G0^umhx6Gb1R~ zK{tzyJ4G$pIRK5%6<0rC-ajqKTNhop>PA>iOl*t!+(=;ABxbDaPG1=UemLS+msGCF zVAgKv12BQBuAd*tEgNcqwRioj{B-;C%%|IlB6?UH;Pi>BvbKDI@zt9u1b#Z-_iO*KPXV=B0G8;dl&zVa`1N=|Z6 zB9NJhFaM1^PRq1X^)Zn`%s#Tfe_WK)@&ReLvRwYiwLD3niz5vEd176TrZkbnD51H_ z%Zp6rkf^Abemj0o$=%5xvRfk>dPb^d>tv(NhWw>QKuBkQ-cw9ejZulxE|Xy|%r zk{tt~p7+!j|A^XX2PVjcV`fM3T)=(|3wJKdjPiGR7n^Aca427R*F1w#8@3>b^25w; z1(OZ&7pT$uje#cQ9?p$(f&cq69JA??2wkA-wA>lcn*HGsSLhbC+XbNA)aQPR`rMfW zF^c;p@45wg=mO9~o0%hDPYly2(+4=fCo=4Q@J2J2@BupX>Z~8JAea{cyH~SLq{Spb ztKi={@{zghz74y35va`o<*sHd5uL&Sy7P&Bble3`sB}D(ENkmpv~rp{^9lWThbU{t za1XU1^6rXm0f$`SK-IquvAzHfV?{!Cem3L&R4MaFf=Ar>)N{%|US`)itl|a4Zd|F> z%#pl6XZb=OyIl#dcqfEA?bg-%P z+GhI@QFT#19*Dkr&phE zI(|OEvD_XS7`bg~Rsi0UU;)@k?YrClX%kcL1ypsU|As)U)gRxtVx?43zIO+G0!~-0 zW%d1uRRK37bW`UTP(Rfc4JmpQsPP3+y*J@V1Kn#K$)}5VlQ*c0^Z_7Ps#x~1PQ`I* zvQnc^q-Yh*6@cpX^4lGulGjL!Q}Pf})Bt)#Vqey6NdU#Ndj#S)=7l!Z#Szs5*h}NJ zT7GN0em%Ia8WGhX@P6uhjaIfwR5Jb$a1|Zubpb2e#leM`7V*9E99`8ffp?`9%R_<0 zWWPFT-_@^zcclsYV>EhjN*L42~ zTih$Hs$b1YgLG8_?n+Bb$3qF4UUACGRRT^x{jC>h9nJNv>}4rcG`szuZ}Dt)ZzG+D z=z!Iru(}z`IHJ!5#A?u}%mlzyt9OTzw!L{R%j$0=I2F7(a8&iX z1U3G0sO1RHKz#^!YdaE-4B7>3rNjYJ;wn-U2EGecyWp||#;Vdfn&@nxlSnfTh1Q@X zX3O))??0IEWe(#iYSYT8ipv_y>Iv4UKAA2pM&bapP2nIyEE4@qK=gq8_IEV4lBAQ^ zezAZ>-9!@Imjs|@!~@8)Ml?%R^lnt-A%P`jLd=_;(vr zD;=wmV68-rREX6BfrN#s>S_{PjAB{c6Ks1Fr6QGiZB=&nLs(XquIizLLT-1N$5Jj# z!U}EDwetUAApf%gq3SRkN8PHNQc@O?RJG&bD>Pc`ytP(LOPjZSUf1-fE+0_+ru_EZ zKz~}dS+0}=0GuudS9OF>0FI@qu1l%fWq4KzQ9a4u|2SIBbOTjd+RSk@gSS|Oc)vr@sCGPL26ony09H>WbOHRhx+syQdO&%KSX}`g>t1fG zx{h+us9G=3lye+Wje$Q&EucC;!mntRHjN~DFbOQ(&}wDd!2{EYYRwe=Ml0^^q#flK5B10IUH1&jQ<(W)tn!|NU(sQ~MJR3pd_5Qz?kATolSJ z{tlq}SYVSuS#?|K*Krv7Ec38lz2^Lqo!^+mFz7oVg>i+&2_0(N(4SWBHsty=@Ay9(s4-;6g`XinLxP{idoe^+* z03Y!jz7yq-+x8iO&uiq>nir3<3M zA*#niRlDxCnoe7_&|lAi4Nz?)0Uz~5?0cyf)T}J)PF-sqOuAf^r4O#wb&A2 zN3wdHkEx9TcWZ4FDn!MWmx$F)U*%f0soJWJWL1-EhiGuE>RRKVOfvUHB&){)z+HN( zk^vOws;(hA`qjV>yvSM%Kwp>j1Fr_rReR;8dou{&>U3ExTo&{FDgbM!Sh+YjQ}|Th$@ha^!#G~` zVXX@EI``r5EU(uB8*nH9-8b$tlr*5^f@;`jb}is_A%Foe>^x<>E}iSE90$Wpz+1t( z4j2I~v3@BKxA*2DEUVW6R<)hyiBL7P*Scdx;CgUbyBM&*q8CtW@LrWI-063{hu5!# z8iIPgTb9=wfCy+u+dGs4~)$)fxw>~bvZ41Og@(^kXFmouaH-Te)A&?8mChNzf zfLGzUpqo67;GR&HRpN`zyuuLsW?%=N36vSfK5MB3p`t8MPt?u86S!Y~yOlktb%d=MTEgHiBFo%Meu7$vrF*`5S{VF zY3dnz#Vyjz40cj!1;tWt#XM#mGO)}@XrmiJ(6-o72NLP2G zYDJg5YaxE^jHe*Vv1RmVb8)Zhs?AU~bOz)Y^;La~<^#3QMh>8xk+qzz1DyUarp-u2 zU*z8f>|s=QF;%_TXHaU)A_|~J`Gs{rtmXpP@M;3J$x!hnit5r3)qNA%zNiVIDn&%s zgE&B|q)!IQOuZ_zbyn5`7wCLoN6>JFcOi;Zb*%PLC(vmMx2)a*?teZ2irm?%OhjLj zHY12Jd7FpT?SWR~UZ=ffb%Q4gxGhv>>rJ*<7jOgc*I#GIeReX+`s*8j0O+K|{e)e{U| z>}|hFQfzW<*$8-b6zzhV0z0D9R$2XRC~ev5ju?qnP%&ULkkt!J zR>4TJmDSBa1EdKbe;*dF?Yr6nwDrFRUx23ACAqBY-78cP-2%LobHQHIRKh>)if*A} zxdq(+d~o1Y*AI)XYPBpL$!LhE4lq<&WR%K%dWjg-s)dxTS}`g`Gm2z%E~HZwJx3u& zv~&gJbPJHvpRjZl7!0=NZ>uK&J{a_Wt1f9(pyu_vfbjnhgK_~7SXTJ&^`w9{(F1S? z7{Rh^VE;AM@D%kboLq%{{o6bT@cUG!xX5B)12s4R?Y+H^dKGT>u04S59=CcIO)P0? zp%LG*$ZAvz-R=>qZB$W70#x$AQnhR=WT|&}3QTk^Ryl3uzRCf1#7vLq@KAM3;EPmN z-9Za`s5=3x=R@t=npesz^{T~R0jxgYNdc}2ITe){>6KY6?+RSi1D>n8k80{nDj}L& zlj1^3SzRKkLbWsCRHae{E7ezr{UEzM!O9MrtyF-WQVc+$1{NH^F7N<;%Db%63Bs}h zLDr)>lITSy0Fw+rRqF$&E4UVC7tmFjYx;YtR-C-r6gku-UA2xWK#&2jx(ZR%%D^F} zs|K|NOLaF8fVqHL8B>*fmHab)vRE%up7qC$Lt3idAU_Gm!v0E$M*OHJA24T@EE z1GVz+EC;+;vJ-z&?!Qt{DLcQi8_ci#h&QfuFQ933`EXmrUX=ROe;LTDNV!@xODSd* z5Z&YPRku;4B68J~X}fZ;7Hg(QbaQx&_^?Ya}O1H{0lWbL!xtlEQvAXiVjlO?vHJ8eoJb^lmWc9t%1O~R5^ch#01CtU^ zkzbkvm;?bj6;bBmvqe%>Vf_;A-09HptEK~Bz9UUJLB7QeGthXtgyO_Sz#>-<01@QguC2f2})!vK&RS8lswyQ#GZ0{|Ii| zddEa3UQm%sZdvndEhXv}7rsbaA)L85`vCTVLw%L|Kx3dgF@L$_R^49vwLPln`@a#0 zEh;IjugsbXJ^;k(YrGIXHZ6_FlSoxnWsy`b^4#h;3XnorhumI`BB`F|3CrQN%dt8Iy5dY=B4^9RbG^lf^|O7z^wYZ zY}8;?E%dGTc^skp0wG&2afJ@t=5-{|xuDCYcVBACGKG2t5&cnMFrr&uBLXEE);5ck zDm4M04@K9bLh_4J1{lS@s~35L%>-pu;!AN{Gq}we9l*bZmicN^bY00G2?J9~bSV&4 z!~_b}?xG{uK=>ix1${5!OTxP_sL)PZ5iK}w^AKQFy`Vd3PppFuU|HP{Tq_;Jy@$o@ zgOOWnSsw8?Y@ea2P#4L;78nnB?&{ODgWG|}um^Aeuv#T_CyW^lW30Ldu$A_iI-nEw zR1bgzW6Nv7X57do7-u~i@NTLC#941k`F_bVBMmSMG{7qfUAj8Pa%wWk1vi<3uGq&q z3&N|{IBslrS5+)|Ms!(mFPM`z2!ic(= zz()g*s@Jw=AJwd(@!4ZM18{nYD^LRK*Nj8ydM@ z!Uw!GoDN2<;yBf!#RjHRT*#%ki(1YE)dG%KnK}p*wPJg%r{>QEa9JQz?^yoLIU z``7_2TGp(U%gXb-EhtsjuYNETSoON>trk4yaf0rq3dY(&Fub-v?rMqEED3bP4M2C|c)f}xYyjed<@E&MRXcBIsUPHa*;*@b0=z37 z?EM_ggE_O|j8*plK1QlgFQPVO@ zo7Ym+tU77Y6wLmF48(GU?K=ny-|35 zl@^3mT18wXXCVnDK=m7*b3H(7OuDN|95%^>xedIFR8M-ez$XH!kUpT7m4TCeObfvH&9}p0H*xhbIvCRjptS;U3VgmYdNZ}IE>fz!s#8E%HE;J9K{K#4#A?$4 zr#$I^TWLC^55C4Ybsa$tYUmC|+Uq|BtiUxq$23H5+@ zBdREW9}gsMdWe4Z`%i=KU(FhAz`S`JRXx>DQmQWcoE6n?fyszpo8}`->Dar{${nn+ ze%n*HT}?wl9p37?c(V+lS$!KAt6!WZn8p(mC>3D|1ezLepm+ux>dk?|$S)tO*E+?}|$2XF>Rz>W~+iaT#% zCEyHr0Sce_$4mnbpfc?XIO9>)>zG^NVvku?UjTm9Z%xy2!>sGw&;}b(0dfw&uR>Jc z(wL2Cz;0(7SR$XRKU(4_uZuG#sXv<+eoFbN#;Oxqghk0T(LL zO6w1R64dD89-6xAx-Bzh8$z(21($VFi2m}=F>_VvdR-yibZcd;YCQ|2b#<^P=Ah0@ zMG@T|$lMJ^uHuMp<%zrDcwih+Ov{9|2@b7`vB0HY772D)C9Us z{Fc=hfp7im({zLKxY48(6IeI$7=XX_qDTH8Vc$RKG_+UsFTen3Xt9%)TD5OUYJyFk z!TqK$0RzxX^EDh}Z2wvqmisTz#K}v5)jyc#Xz5zK%Cl;uv2_{CswVAD(^k_=4WK%# zQf;d#tFCLgo<3CvA{!aMy?Q1y{f}B6{@j{W8E96u3Ca$eXo%5JfYN;F` z3(M&|$N|)WbafX3Oa5Q9wY*f+5 zu+u7z)qN~f0rNX?tnLmRz+j3y?yj^Jyo#y+0i^e(Ie_7)QQQG&0K7WTzS~0`WiPI8J9-veFJj#9fp+zkfpWUws_UI7S05#c+r}?m=nS*-;w%I~`{B?Y|5RwbqsI z3LwKsm8w+3GJ=a@UiN5|eKe)yjv3kmcmQl(| zSB19jm#}pe5xrfAz7RqiscUs9^BUEaUIAD2o@v@)I3_Bwlth$btSU;?eN&H8sdDFm zmagjm0TPGpHRJvO03VA81ONa4009360763o0Ie>pTT856WfeYP1Q8Mm61fC0I-oBx z+53O)f6t)CSP@!ErBD@0d6ho6eL=AZy)8nZFWP{Bf*>fbL^LKqoaoSr5CJtPF_8gE zVnbyHG(r5jh(Z%Wf#g|`R$GR-bqApEHwzj4;#o)c;2ZJkCtXjNmuzVWf zF9dZ3-Y(Hl3tN}I459X=HG!c1m7v~*w_Pe~s!M0QuY)s%9TW9>ysha*HD%!-Yw$%~ z`64h`-q5xaqPfV_;Erd-Y zsF#eO&Yy#N0Ztw4`hZv!NT-1NeihBPn=x)5-qG~n3uPRg22!vP;2D7$W zHjVHW5a!MCfQupOW10sPRUNC!)}gXy#QrmqzD>Mp6)>MxKED)6ql><_sW2t+s<&sA zIz&AisB1N)mcI5TL9@XIUDTngKF}AeWr;tP!}ptHBJtI?JJQuw1=UJeRX)O3V}Pvh z9p9~hc4FD0IDiCeaz?xg&?@NAs}AAqb_LWTuY{P&IzbI~#HnV!|6jya@5I|pecxXc zuB_qyMI1q$5%u3BsusZkwki%_5mmlIRQam#mW1j%1avh(pVfS|2=LP2>gYpdNT|L; zvWf)2lWG7+T20>7RjQIvMQwZ4rfyRq0N|@Ode|zps@1X)(0L@QtXJ({)>Y+A?UVDw z{Qv2wDtD;q4}W46Q(YmydJ?LKJA!J1RskEQ@{+Kjgh2fNF!BGLc)M0Xwa6+K`J^`R zD(3%(JN$pGVyUKBOG2qDgSaC8f4IZ`8&p(reS<$C`D)DX7yI9!fg)F13!gG5Smu-Y zemE5hKv9aQwyX*jb@=^H;cc&q3VES`P`knvECIet62Nje>jP>6Fp>ZgQfnDJ3DqMV zp!aL33R(>|;rqQ*6%Dj)s%zC+6;S(Pg;G@*7OO`(qUuI9s!Y=ZqpNTsu+I8OhXY)v zx~i>Bk$`PV=vI|=h`JPSrRu9CWHksb7|hr)Q6IzGl!9stk3FuFI8f)=@Dk2Req*X_3^*$+9m%>-~s%16dPeKW(B8nC%fgcdm ztAYBk+N~i4I%i5`7v~x3haI!k_xfspD`d7RtSg9GkCJG;swV|VVZ~rkB3i9s)%qxj z)`xq0AdemZg~fWLSK?JiJG|<0tpz}}j;4@cjRosgkCFgTC7sEuRrFPzd}{T8GopUf zQLR>K-(N^i?P0VkI99D0=o5ImS+T!-zbm9<1q?xBf{IgJp|t=4Y9m@eS5%28^&{e` zzs1`=)lwdRB2cSPqO%$gRTZ_F0l|Yr-}t}x#V4VF>2jS+<i(BVP48yxphR zA2kXYJCq450J<#VRfCB*RW{h7j;ZiWt0xfDr-8azjVg!2ij0D$-BNCaq5cA>lPbA{!fF!ewW{gY za<@8RBF}(-0_u;oU_}N@-d1P=gJu27P}Fv{Ufb6LNLO9E(qIb8-HM6&2cRBQdw`~{ z7zwdt#uQbWpo_F>EfEk3umC3F_mT0-7$+iLH>Wt+fb&TmdIe@D#9Atyc0T zB@jiMW$VunPzixY)EtO*B{(E26c(0PPwMbheF}nW6)8$@T?9t2o=i|51nPHt#vt&3 z721``(>C~&iF^=VrzMs~s{yiF8$sG8lgJ=^3X%2Kkae4ut`S$JKvqG+<|@_&e2$>L z2Gsji4agwiyim7A}5db!rw2_=C2hj?o(yS*H=bPU3C9s#lLc#wO_lj3ave zJVD)pxBI$L(Oe{GAc@n$u_B=@PoKzX%So-ho}St)8q3-lOGQ1Mh$>|GdQ}0k4~YmZ zG%nbOj3=s!+GN2XK^xHr2pKeVy|LJ{;Qv6r zpMky#(7V*y8YQh@Xo01i3OZD(EC?P}8RpiCC2uXxA>H*hO{ooOA$y>R-9_OXYuUd@ z;(smPcJwVSqeQB!TB%9{U5~fhd&+eX^4fV>2ag9jsc#sKIkvaNAnb#+p9E-QD5x_9 zqZENmub>AA^8L~T=c3Ldrg{)>KU2F33@kxXN|`*X|MQ5c7M(d5 zxZ^ZXY1X{>D_RS-VP&H3#oLb*QDqq(8aAYG!H+5G2E5&(7AhI7q*SB3u9&FviKs8) z?f0s!WNm?wy>exWV}gpQ9`6G+7y>IyE#rc&)3=t5Qj?F(ctLkz^CvjDa=pp}!KtuY z$G{#_Vhff99RYB#FIAWP1hf$%Eh+U<{qI;9nWnPsT4;DNBSaExAGMEV~&5ZJFWHmzfT zd|LfVhX?$mcV4exF{CQP4tE%;oETi&vkWYalVn}Wyq=?;N9Of6wOtUoT*^B@PrUUR z{c^!H$7`S!5*ne3rNBUfUrOVY^R$wHmXGO{jc^g3k_p~Jb*F48OxZ^iX_%o zw8iE0IaFz*^uZ1$BZ-xvzM=E0*_qvVsB(I-TO9$~XBK(8UUjgxH>k^ih}KG$?8efI zkVHb@A)T->ji`Ww$-JdQ!1*0r@RcemW+3#I!iXnEf}Bsj{}qi1Yz9k|7K42_23F6M zdI8B+Z)#ii{2(y*)eDIIWh{P9oz~jJdTy$(5mUW{w(HoE{&!SGeEKr9C`)LnSn zpmu?>60*)nD?pF8zD^R0Tg3Hg0zKaSR!3*?eRW_j zL;)c*Yb!e@>T7s=L7gq+&dLUOtuL%24g19t`AOhg`lrHVT&<$!gtaE>(5vM5{5z^wwGYknWWAh>!7u4ICZ@TvK}MC$wT+BiSx)N8yS>Y> z*6~^%01Q;lnKt(9Y(|dP^6$TtX!U*Va)VqM<)W@2vHD`q#41ax6v2ZY)|U|l zyrgNhI#vQets?^l5J5!Ll|&s{=jVN-X6b0x6r7>s2HIq_Oyc+E~b`G4|Hrfi07ifxeEn zXL`Do=#g8J@rezrt4Icr>+>tsfvtTM|DJ-{URkW_UEB|UYcf!@I+RtegtqtHgAC7% z@?>=t0X^E2tmm8=jt44|Zt1C3BezSrQdg5?^?DBraO`-^Bst+UbZN1gi26>?@#37H zTIAoqy5q)Vao?F0d>eU4GgPzl+xhJu?0@jdNeWj1H z!n~GDYUuEamB2L}jn!_AUv970^Psw(Nct$=u2bnnOzJ)e#a4L61g|BM%69DTK5AvS z2+Ui+btI{rq6HPX+sVIw9T8QC{QW)5%E%@l2VLLs{de|=IZ+|vpxjiG9j4l++P}RC$W1j#OeIHG`VSb}2UfYMm;!`uds4mLZt->Ffl2`E z)Ii(&_3^YScRaVMuG+rY8P5S!QS+^RF6yR^$y&PxoO@rDqi*g{z%8n;wojq*9~*8a zhd{C(yr-wF8mZYOE=pMAgIk>7=4{I4TeFhkPnb|R_Vhuqe4Wjt~VqDeY*fF*iX znM+va_Pizm$$~F(y zT|`t_V?5AvVK=(6$VJ^vL|v#=mi%%d7xf-8uZds%rteoVLV*= z$z^4za(T5;8!hHsS>M|^84UaGEol@QBQ`b&#N^+`W0*ePzoV35%mzU)lsbp_09NOlfW?@&56TQA);r4qBXrT?*`&Si`swLN3X};zbZJAcbQkBSX15JV) z(n7zbYFKeD%>rHSVm|{=#A+_Rs~tkDzgH^)d$rUGEL$ZTUjayJ%@GTaVdN`d1yF#h zbsjZVhrH>ZfK|W&?z6fAC1aJ$qHM@p2nW3%Sd{{@+KHdgWv`@ zXkfJ&XmL%-m68f8$I^G!Na}85JkqcyQt;a8k_4A2kh%u!)pk9r6bDsjt-P&D3Rfsv zTNAL=MO3P8lN5sLNSDrJuUO55SSs_&JXs33uCXMfWss7th(TWKgsVQ5CZLHEm0$eMWQKC87IiAtOG~& zV159a>Y@(Ck?pEt!~}RafP&mZ8^SbOO%w;ssv6Pu9sxVGhxM6^YSvYmCbC^=lu)5# zud20SI(O8qu1^x7E?{*z73y#S{af`B0N4CnDi-g4$c2jQZ;oq{p&>44sY((51`R75 zI=CRgVIv`jOeXnaE0O34kQ3sAFKNj{{Tvz-Tib#ww|t z)JgzW1lTy+A@VV!A2^Yf>dc)4#(zjEUFuWEveawBK~>%pl~4XietN}86HTv$nhIBQP=p@|6HNWm)gf4L4GjS5t< z-w4d=Si=GuTs6`HOQq!s|MNG3tU{GaJC`E$C#BXF(-K+LCgA>$98gqk)V!$(SS6_t zx~iT6Qq=)`kH$Z0u#)>XV+ZS=QU?PA18ZWnX3jtnL)t2msO&p?H>|Zh77S2;;5wsA9S18~a9cs!f!yMnAFUv%U*#d7$J_O#J`L2WPVk4; zxhf^Gm|lntpws$vAP2aSIzgSd6~&5L)uTAVr75&dB3*D=9vG>^a5XO#3oeT& z>M8Zm0iR&gz@WO!>7_WCzH8mXsu+*Oh(1nFGXKgAW%H6E<3JqL)7DNHZ z42;<@+7_*yhIvvr(dFqap~rNDDrEa0y#t41?IX>Ha`^tpR>h^kdVOSS(Z z7rzB4CNBZ|H`dw^jpbg|H$5_BsxN^Mc%H@EaGQ7hxawtK|B5eMXF!4V@STtxK0fnu z;HtX70Iia`jHU~^o}_Dl{!H!@i7H&;DieAPhgTb+b*d#x!7Whp;x=GX zdQ&YULYsyFffp4Cj3K&)mZ}%klZH!83cXZ|6wb!m7Kl~9M?)1s>thv~#cAGC=x4c2 zHP1w4iQK3Xv(?D^{}&K?6p#O!>p#;vxYX_7(<`rltl|=j3F`I(`B}v)AOX_S@EW6a zr(Lo3@tRix{Gz|6xr#f!!9V`nf&0%`d36MZ=aK?xH3Y^f+XD)CkZRRs7qF$e<<+kn zmC#n7v9HzbAOk$ds9AQKSA7e372JQviB`XF994~~BP9buXlX})Val&+MeK5Am@2~t z1OPh%u?k16b$U}J9#AfovgcAy5uxj70HCjgL}jfW3v$d~15!)FSewMM5Kk?o%et<5 zNP6C54MTj_F#*QfIJaWi%Qq5qWaImU!UM&H!(R^MR$f5QzmS9U9eG zb_N2=B@_fmnyxsBS8ANE?+k<%H?Y7`F97APO9Ti9`Rxo?z)B-sQ6s`u^>!Lu<$A-42}stGqP4ymka`U=ZSV2##4l|cuOUbSaDs&tNXs;k0x8Qa# z`eDE?0#>!cNP{H6$_q(@D+q)lsfp=VWV__5)_#KoHpToekg7Pyp>b)LQ9q1S%_R=nJ0={S_tr}S7s@e>WG1>(TVAjCuG-^2J%HFC32m}VOD{xqs zT9{3p>&s>d9Od~NkO^!yCa!d9A$}&X8*J5VgS^soTFDg&th)ndb&26tWAP{g z1Vss)kcgztH#jlFISzsWD;7{?J*CdDs76gSNJ&9u?KYduYDw*G)>31TMW=&{ZI;Ul zT|h0s?Kbp5>)l}Dz(Z_2j7N%QD{Z~N#fRf~{C)6XC~$!@7=dp@3Qwab5~U^?O4{}W zoYgYRs*+NCu4zDl_s;CPBCyfK@$h{k@_^F?*NvCFZH*9 z?BYrTVu|xe-Bn(}7egllj`bEJy((kDEhN9Lik?C>UgNLkD=n_j*xH?x&xD?4TmhP2 zCt0BmAT3c>$Yh`xa;p^t51%4W3wW_k28tnbY0{pFX63SyYal_+dNPn+^Oxv#|0~gI zQO0mO#$KRRwW`Yvt7@L&Ptznue1N@yJn&{qtF;tv8c?+EDRnL{TMkE=336F9kMN<~ z0x3Y*_7ww}#jHwwHC@0vh+OXl24I}3riZ!Cn<3dzjsT{;zyMC*WXoX-OCkw?W-Rcj z5VTY+2i#?N>q5gdxm>H{KnQKlsst)=sSi=-kQcu<5U(?`z4qHmOj%33o<~(rp|g2z z)qtU8A&^ayWF_h~cn=7jW%gQVF*MHv5iKfot-c?~tX5iq^^kL32L#3$)ZPiO`#@9H6RW5nZ|yLZ_Cx55yH~jM*ri zWMCnOpxeVcNxpx))U7ND@);(6tg;Wp)erDVUS1Dx zzoqI7iu0&cXNUz;>R9NH_$q^K(_WR zYO2l<4<@wr3^SWL=l5{?O8o#R^w>s9kSRjLzJfH(8Ose0TPklJkw z^tJjS(CSk>TkUo*_*(r4X!TKZ=$zXb=}Xl%c$5V5flF>{Ja{sDfRn&~pf`Zq!~$OT z9{3iZt!>xRgx%?l1CLt=gkD2Epwq<{5ZWQ`ZM23%x&20LrDLV8<6G5j;`VpyV6am! zn$yu-KA68#XsPN}|K4=g`+H58(6Lfq<`_Viy5u{6@%OhL;Wj3OcANNoxJspd9{B1r z>9x`xV{|}P>NN)TGyg4oicOcg>AYmtj_`rU1Upby=i;| zf6t=R84TXG2Z!o$qtB$<7|s+hmikiz1ML#R`$^R~gr^#_T-!4T`)!t*)pw~>w~0WLtP*LTqvpiQ&(jrB8ub9FgAtWLwd?^Zv# z(ESbfOsHE0_zD&3Ob7Hg>JNaaYO-=V^#Ja0Jb$TwIPj5$;|FA%eKkz1G-Z=}rG%pq z{%C-KmCFr&L6s;iE{Rjr#QVnsAFaBKldO`_Y!KzyW=Vl+ONS0{3UnnkRJSeCcL0YC zFkX4Ch1aAyBe+U)*vI{+K&@vOycJbzt*nJIt>JqXNa!N@Z7l`C@*#Pptjh}F)rSX! zK1AUf!M_Wo7}atI_7pmYlQxD7n@WiQX$r0CaNz!w9kgV z`3_(JjA{u}>J)vq$kbOQ1svlt2qY^sUG4P7`)*|#P{4YlC7?4N!`JFG;H%ejxTZVC zq2Eg1U^kUd2J5#{C0;J3!HPq&^qtDIKnQ$3O)K0v9==sg3&bk(nFH+f1o~2s1Xi_) z!!_P?2!F4R4CFvJ87Xk9C&b^Y&jO*_xX^A>fG_kYU;r-~DR8HI$^U#Lbdu56{VE_6 z+IoSQ$Ew}-1%LaG4j9$nQ3S;8-}RMxG+63p?o_({%LibopeeZDQnxV($Zucqm-@Lt ztTK-Zb;lz325=0psu#>bZca}i6Y75dHPrt*?Mwdm9|OLBhk2;nK7)SWZ%OU+8T1qS ztTlAqZ8Y{T0QCKuR%BGDJITA>R=s7+2kvlTefvj3)m5#eca=lf=qGe1e|e@$T=$LY z3xQkp3~H(F%q=E$yj8n-Sn1L0d;|DGzyX{^Q$Tk#PCuzSAp6A+$+6O8CC~KH zPpQgfz0G98jd`oSu^tOdV56~Ho%vY)W*rNb`Wmm;dW|;zQWKD_tR2uN$QyoPUTASy zZa~B?NWk~MX+6B*vf=%6l>ld@)6KqYnbmlbnZN%DI9I3Qf!@7 zKvduR^(W|(?(PO9MEKI6v@kGqhjhxIg1`(RB~pTfO2Z^Ql(e9N65`CzVF3;)Qi8zC z@4f!toQrd=PV9a5ex9{HtKz*9pSgCg#36S?>x9}jsQ)~b3$~2P-O@*{L*m^Ej^QPC zo1x|Kjbr@#e8vcw6Dz}jEU)!4J*vLTj(7Br-EIWvqUaPoOx^+>+%V8ZY2CWFjvu*> zQVdV!v44=Bp*yJw*6XZ9O!QE$p!d(Il&O+9%g)=Q{`rjKs(GKek0YSklPm5UOxJ(I zoT?_DmvbG!sRW|4=zC~?&YmAruDfNvja-gWBbBqcx|>>nvKD&(6AV4yB<`UCA8 z=0g|zoO7-f6Y*4$YBNT9aF-Lhv){sWrw;1;_Xq=yl1^23@J2SwtlfF3_SG%DeLa#l zy&&t_sTV2QI;xteB!vvCFGIg>md~-C{(Uwz0`@7bw>Nm+CbDVq%fMy#l<9*QPr~TC zm49plYvF5taIc(fyWpR?l)j;&l{x!e7)t@{n60S;n&Fv>4sc+V?h3u+AgWM%k7$c-CWtUd1FCh{fAs~tuYpwaKDzAW{O(}(*hZiN&*a|_ zR39m`=WI~>?AoU7{sJ#AK&>$MiH|}lAPq*98x-jIAuR{J#w%^3HOvr!n|%XSjVv7y zme^V>W-*yvgY& zSz_Rg{bL~oSa{A%{sPX$0;t#?fs?=!@2$HKM}dUc%1EqpZ`Sz{xe4)^efevW#nBCn z+q;wvtIJs3N@u!G`0M|*{26Pch!rir+?xHH zFZPldb{zu;9nXEYCSLAO5@mpo3wNOYPty8HN|!hW0rF@o7&kmPmrMH3AERIoA$l+m`E{YDos zs9VJ8H1$JOz|L-ZIq)yNzk&~a=nvoAEU`ZJeiaB8#x)o8olnvY!#`%H7_+L!6Rf8E z2!Y!4Aw`*3**}R`_=DK=(3OxYhCI6~;wPoX@FxkyNWC za^6-nwF8_TlWNHJoPsnRngzWGyo-v(?$qh!azo`SyQTGH$Mwh|!mv^J!m0(j z-)!oGBZ0L={*+CJx7ca(gS#gr@C})~BFimkD$+CcRgM`h% zlk|%Y$0|Mo``GCG9VWrqT?P#M>Z#aY(&A*a_| zz$-*m|10C(3b^MO{%)Dkl*6VmBK=U43??{BH04i2-EV8xqCpMqXe>1Uqw{xJ!}o{Y z74U8OKmiF*6h?YfR51_l&QNq({ts0w5+bD*XPN@4{+355=N7BymA4?F6F0F}EB`ko z_+as3DKcGkO(Ve}Tc#`ft)g#ros?hE5pjUZ=OPxoWZonSMetu!`8O-6T*@p1jC<>q zMVCwK#&DzZ@UfmNTPqExG;u-RVDi+Jl_ur#odz}vbB~pw_7+`=6648$pB<8{I<0eb zV>DQnxP+2J;xad!NvJ_%L|vF0Z>I~V^Mz)R;Iqb7b|{Y$KPtW{_qLkdn zShHHX;-T4A`4?ytg^|y%=^l=Ijs$#+bRrXF{pIS+VSkR4T$GZ97dG_P5Aj~_eo}r@60Ov|`TCgyZq0OgHs~oUmJ$K?(^-<;?sDjc z$;PGDxO1c{DEhCavcuVmO<&?7T_$3I1vhb-SxJt~xv3(Y3_I$2w;s=At zUg|Pc57GXpb0wYI@#7qqL=8_jMfkN4BAplw^9P8*M+28hI8=ekd@1<9*DJmT&i+O6 zY&zj@xCaotykS*XZYhSBTM~AG+bh>s2RN1b%B_v>C+cnLGevFYym#tZsec-37TDY2 z=(l#>wwjTADu3{hzCHTag3eGkMKM9^@yLE{>oN)Gzka866U}< z58GUr_W3l5;JB9B_K*7izpFBsCd0ksUD;Q=3|zdlR~L_`00(@A$g3saBnk`w2sVwi zHmUHzE=B0>^QwA+z?MycO?VAtmM>c3js^{6Kx^&!kJ#?Vk0dU0iy7q)8}#lqKYtWt zOd4yM!l)%LsXqYMpFTST6->MwhrH?*ZlYxFW}u0mfrqHNp{iYl@Tjk^VwJ4PlMK<8 zyNO-LDwbHY8p2P{%fxWr#4ogc*W|BqSNlqPTn+q{t9>BE6u`{ocegSvW9t1=+4~JC6{4e} z&!J28E0^mHkV~T!9kb_}FSSbLnx;OP9OaPXJu&UgPGQxf3r->>W+K0NL7eu$%VS-B z%3wN+7Pl+Qy%Ksu=FoP_&XUnx!OWD1M#|gxe?Y^*J%vAI^Fn%GLVnBQE8)#R{xRFa zO5E+Jlb?>YwEJ)jNHABIvwkrYv2`%kz}(rxi@Yjbd5JZWc1B!tLQ*pIF<`|#cd!%l zL*p8{4|FT4PK->X%EvfU+b;Qoc2-xBYC3LuZOfDkA-r6+{2|jP@kVT{nc7wm4X%dO zezQ1$o3fFKoAmYxp3b$hx3X)KqP`|U*VFMbfH+HWX<9Zge=o>@pYXgs;Yyt&&?>Q?oJO{N? z6JkpXo7P*7>73Uy=a1P=EAv`p5T+2d_(Wk`ZofMllDgbTz+6SzQQPZBAOB>{MJbH` z?vjGdYt{Hqdy$iBdcgiks{v%T%tzjKHOW%p%2>dTx&@x}_pDaE6;K(hKh|Jr;=t?s z#-6L7oT`yBaPPkfwZn&;I^9j2!z9gbeoTdAi`L&h!EJ;tu;%EH*!&4(26*k{SD-!d zcGlLne{Dm~Rdk!06@Xg&vdQt7*TSiDJcVQ76Mgf5cjzyVIb0|2p8$x}1L!uEzoKIv z_q!Y7BfioK+jWp7!EQk;xW|>7`ZRm~Ury+aN?rW+9sWUoJs}xHg{c?`6Zptl{&- zrQ03QthUu)n3ys^LDAJxAnVJ}pgo!M#hP{HL^Qw0h9onJ->ar@ynxdZoD;$xdp*Gx z;L@KW34PnA0i22YM|WJO_b(AVj{fll!_xkYwW1zw^9!Y!7S^v7HKdCv8w5^Se1A`{ zTWTBYK#wD`QVVA^|9Jhg#q&t7$_irQYB=fu$KBl-_W+9H?d5jcdOcG#pn12K=j!Iw z@XhSE^J_-O3s^RdE6dwM)XKf_RU?}4=cc;&Ai8KCOZi2`zJws{&yK+l_MSE(6c8Kx zocA0BN^AQ`3W&v65f!YJ4}909gJNQHj?nZHal6m$oPIB8ewILYj}WdL@7U=Xkf+BH_={u2vNB$I<9TBFS^RE&l9? z`1fG`RTwW<8QZ7%fNCTf^A<81jxfSmv zPOiQJtw7%fsVM{4(7AkENm;(Ff>QTjQl!5BLa?{hKT7VFzKnl)6Vrzja-=$EC+XC` z1}qeFdoMloaVzdQDe|)MM@o5bUwd*Feti!B8=y^xTI%nRP-|13o|$%R`C-$jZ7 zmwFja2X1WK3n8kMI%U+r7(2eTprkGji;Qb`-0jH>2i)-GI_JXRrz(TrZ_WiV;g!gr z(95(0mnX)QK_OQ-n1aXZTTMHXb={m5iPaAQ;OZN5;Q2F6;;>!0a9u1LX~)Kb;|^Uy z?K4ZO3FVGcin+_p=9v1HOK-bdE=YA^Si^2A9*J)@NVRB-sC&(5)11&dgfK7zwkEBh(~*}3&xo=w;kpoTRx!t-@Wndl z7GOmvog_qjR``-A>?M5Xy}@e1FzzMAR5&|7AZ8`?-I}K6H|(-%P-zhUnc%ImkIT&d zhvLn$w}9(tLE*Px-vG6`kWqVWQ!M$9;~NJRI9;$voush8%J4-=4VUM(fr881M?+~~ z)t_T5rsbj)-sm!VCgvNb?=;z9Q*-Mp$@n*F*2&LVf%r(p5ep`w?J&x*AZUanqj*MlBGL@MyYZEdP8kUj zWe2?X-ZHV9!&o}|sxcw)2*PI~(S!hVbitsZ(`bHXJcQx323CkQ4JJgoz*g87^ic8v z_=Gw4RGZ~On=up<=#3Q*0hURx@<3=_CS8>}gT|A}#|S5fukE)dSqb0av1z5$`Z$q{ zfm@}Sz7CiA&o-AF-{@O9*-#jo&FVAB`(NJmcF<~$DF|{9Z8VNoXk%=}2(b~)=&ITW zDPv^YD2GITJ51)GVYmiT`@pBdNt3zN9#hd1ep8B@fP;^80oiUhJO_Q>%YSG}5Iy;i z1!~=2Q!|rKE9}XuK=tx-z;xpp*HpecS*cf9vxUBQANge3iH&}{| z16PTyd}*~ec`F`(&|vj1bzu#+f8DnB5N?mvB{j&sf{#^mGMy+j+3lqQ6VF-Hx|m;p zW-@zkyw1~CV(5fVqMhOb3>sdbEe!cLUjygAu`2i*3R3ime!b>B!riVdPPLeh&%#g5 zPgi~b@)2g9`z#xJ4=6aE)$oG%&Knxa*zhNxA>_(h+X|G@4{1%1_!Xz*e1H0t>ykAE0g!Kz`L zjkpcTlKwA?ns53h>BR@yPW{QG`2${wnA~}VxxA{Kq4{lcbJ9o^YyNWTcKZCCS6%S! z*okEb1Cn%OOV+Lk3Sv0q#f80657%p>)F7qw0rcZbULt(dG_i&FB&@~-jbmS_|M1Ls zrC_V@=1)g07e)nOjYKiuFklVjAxRYxhhPesEEL!810~*RC;L?q;^>F{T-t~ci5d<) zVjql_P}S{D!s*P>dyngeiE?0ER%5_l-X4yYpqI0DE^Ce+A`40hKmQq&L8Wi6(%(09 zU6m7W!UD;Dlw35Q#GT?^nRq@*HQEeT{nl+MKWxeKPhS8hvUVx^HzDr;LTsda?@IYk zuGFIF@g?TRSw|oOuLg~jW_lj5ulBvzgYN@&*SFe0t zmipJGu^>HNC~^jy#nCR?l5nyN4Eq{1VoU3VxP3o2L?A`u@4s@ESAxyXfglCOziNkAV zip|TZP!;89{kJE`cJ|__w?ak3z0^Y`DzdMzbe6yAJ@F0o&=|jYMhgh=2Y_0GHCl`m z!%pRG@KfBw`1r}N9nj4}R<}Nq6uSS#UXSNw+DG)Zn&GznzS0&q54~72dXXdV`9S;V|1vJMbd!Al-vA) zvoqOgSXE-HxP}_HQ?K{lC$v?Q<(v4Klj!dHI>XF3Lh#R;-iwV=iZA;xRq?CL-C4qm z%yG}bVMG!b5NsSmt|0ygo_@s91|P0#dGR^B&uYaiy4#)4JO2VWCGI(TpE7h(%8qPA0La!0cxkwd^&4V?Dg*jv>9OgmgRt0!FHpJ+W? zN|(#{=y$0xh7NzC;?w5c*?QamQic>20@Ik-%)sRox2*#-ixx=(xMO30#E| zfx-m`?xE8yKe4RNoYQUwJfEtFEMULYlG-F3s2@a_f0u_uBLgp==Dqd8_qk97(VaMX zNk$>ux3gl!WoGG|-RNel(uGe3Gu^y2qTsE!dX?G9Z26m>ZX@%UJB&43GbjN#)TfeSC&ET_R9 z;KbNlgeT5px|;e121B@=ySTh}qbFGrJcp{zu-TS=4h+TKaI)a2kx)TbQ*&qiflipQ z9!VcKhtB;wYHVD?4dftAS6Q2%Xd=frCxw44j9LUxN#Avw_xis?3KG~ zPx#ES?0aVF&Nq4~^6rdV!H14Xr!BYV^DDD;$Z=HrnYh#oQL;VXeA$0nj=gDH#EEHl zJj~Ng48Ikla8@<(iOhpNf1~MZj~8M78L`*)_LFrgt;U_u>qJ(NCx}PBnkPf{j_0dP z*(JRf)t^%5RapO`A&$+)V+m@ z(fN4s3L$E--=H@KPiqBenek?S#+t8}eW#kPzz~$-7iP%MgLe#b8B_SL{;y8j3`Y&h z2OZ?zADv@tz#R7CIF~N@OCZ-Ab~`QuB=~l|1Dd12rC9rAdf7Mb%q)FAMzJP9Uxq#C z^ft&azUHBl9`DS=7%WROr7#zkSgsG!2Up<=+yjuh1M}a5V&|;*s>LYgpSZ7|3nZOF zLuGx(s7f|kiZPZJ;C}O@BSXhGcPy2ECtC;`G#2{U>c3YyP7&PrfUf*j{w@=#$oGzt z|E?>1cuOkt)2m`EPN2H@nN<0uFlh%;C|hF9c_g@)DkKy1^^Z#tM*?rH9@dawhHQBH z@3m8RWM)8iI%EFT&h5M7nSEt^Y7t;MX0PLOjuFS&J_E6}+nz)Ri+PalW{Y`A>X%<+ zGXF5s9YV)P@;Qmm2W?GPk4+!W9#Ja3 zRD9>$n<(tKQrj&Xm?~oXcC;mfQMs=?UDkD0ir#^7iUz?-o@If8mukDnC>yVJ{nj|H zk{T(Nsm9>*CKON@m*1Ql^37!GPTSv~zmRG%I$2f<=CW3zT8HBXcX||nF9$1!{^o>9 z7`<}uNYZ{(jLD9vLFQw1tY;It!dKuh z$bgpV_b;qO!wyZ)D|?oc70>7Q#UV{JT6<0N0lWM31>koTeGP7%;wt|NJlw%QewRe@ zGJpF$NgSA#;5n1nbRJ5(XghgrxGw6WOLb#vJuCX*`owRIsdc(f+e3$Y9Jy_Yd0qWi z4X}%Tnnx(fM}%8;_EZ;8L|b0BfTD1BPz~~pT8!7? zKa?9-_dmgJ2Za&cnLfdi+fA@{sxHdv;O$IBF%KE69_#Ii*$9312fwHjZCUimlx}%n zrBk=^Ea+Tq0+T(|Y@bm)ATvy1hP?4UeapGDGa&mJ1(YMVXhJVa%?e|2JNw_oQtU*F z>izJblJ7_A^LfY|PC6h9$8VxJyU8n;o11IaIU*JV=d!W}S%w2)>$7ULuNVF%yu#Dx zI}lIutm1STHB&n`{o8Jzc%-9`NVXl`+88Eco-Y^@NNKg>;1@J5nY5V;(o{%p8Do7mZgxV-yS@QEmRZ)%o2 zJ=d+XTLVuJH&%7<3>)f7XH{X`A3(aU6%K2!|9m#uUc(4Mq!_!Et{tji7=1Cm3}+Ay zyvlp+oih(Pw_6+T-GUv^MlPWP^0MzvIWZgDOjaj4h|xFTUN{v0?EP@jJg>ow$-JLu zg3IrDZm9GjTs$b$g;&*{snt}9VLwZ-Ie?kX~e+*kUX(<+;R;6f|ZO)xe`u3YvUG2MC;AO4aO=`3-~{Vou{ z3gQgkfBJ=78QbREBUl{>qw2oh4eF=#OPYF(uC@EYx1XvR(r>6;Ck1Wljm6pwV%HQ~ z5Am@;(}v4CeBI?bw}pPZVtzhTGQQxhVeRHt2idyK1n((Y2m2K(i4sRHy|%SdH3!<{ zvy!n}N;&iDxzyyw-wy;=e+9$%nu!i-F5CUjN!J|8MO+RGhHUjA)C8Fi7ABT1L*)`K zhbtrbV2?VbLg7~{n=fTPU#X|ORe}2fy{5$q?SAUOdHbPFCzwM3;G~H=+PmCW{GdHJ_Pf{*SMt>vh1YRBamLLci|E zH*~yBSE`2v>X=Ok{&P2hK0gkJ_X~Zu4PJ}Qnty{buAXL5BRbk7KE-cBXM$V`^6POA zhnIDjT^no#IMexj^p}7oIvh>$o~>aDQ7_cSik^#(H-t%woM~itkypAm-V~L0#Ne7^ z>}LK}2^)t#N8?I4cPggpSWSJiCQ6Q7LD@f$KfQo~fLcm^a8Pn{#-QSLHT6FH;JbIU zRn0z>u2<{J%}s-3U472>sx=TKLyFz_)H%-}ay- z#;2>)RVY;B=MzonI%Fe*Sn^1nb)HeQvYcA7tn(tfuUvd2ix)O>99?5jUW3YSus zn@Jo4*_x=O^^)5e39h5d<~Q|fIHUZ3IZHt%vuX6Yd2LhnjdJu}ib(Gou6iplxyhHy z1l=7-Xd=w~?1&3^c)bk~+kobd)Vvn$NP-dku9eq9gbgXT5A}r)*%z?1&v4VF5mc`> zzw3dsuH0Fv-?E3>hHEw7{`Z8?YAA4vB!CF>asTxt1j1|(q)qtD*`0cOR;TQ}AR-YE zbY2qEv@tGA=*s-A_~T(ElF`(Son>d~q*o=+;e&JQAl&R#fS!!|%`fe_ch^gIC7_4h zNt{NH$$7ApG_96TYU~n?!-lW8@=Q0F>R1F5_;|l770L|wziv)FDw?ai@AOKLst+oY zkjS%LL@WE< zXUU9CIhnSB;drK5w8wrV&s(N2+(|@WM{VR}?M0IA9p#9~im32beE})$)V?vd0p=*# z*U*%AFsuH=CwkrOZF-*nqJyY&GZsO#JHfbIGB%CqU)G_!Ie&F);^?n`F;b2X37 z7z;5W%jo1Jq<4M_qAaiHVNiGmAJuvQonPvBk}HM*aL?quzKB_rT4z zR3REiJfGyCG3ffb$%gsXqcxjp_e}erLTzIqZij3FBNZ;-1>GqVXyl?YKo8>aUA*h- zUm=ju_bN1}0kE2?E~J;#z(#W`vBeOG*#Lfk(z7;u#9$)NrqO+jS(F?~`SAS0R-d~p ze^<@XG_!>)6D|AAnDo_^OF&Rbg7h?@KOEzD+&&)A_KqyG>WG)Af)SWb?Z z!34JL6exytp4z41-A(yI1#Ogk(*-T&n-GJi3=1}B#@ zHIZ_9hr9-mt<&FVUq2|JJ?@jB1x}>tebIx2Osh1qE{4yxRJz|)%xr2ZbV;MKy zr5apC1g^*5*4mVbey#gwy(b9QDm4tMk+wghONUOTn_wYK#~!CgsYXOmA#uQD3^!U1 zl)AcBQzIja|1J4bwL}{T=OkV9C*wGkmw}E#r|v22CNqRYFk!tO-J#o~9#N(|X&~PY!abHPcO&2TL^=Elm3UBL zd}YQx_qh_kfqK2XVlb~aPcHaC6%~^DZ7auVHSIK2|2ww_oS~k#AOFi{5A>j>>&#ao zGE;0j_b=Ntooi%aoNZs7n)Vhx2xFXYC?{yY{OHB&z=m>AuX#=VY~YHqP#R+YW_o>) z)>?5HZ5>ys&(bCZFkO20P7`?Yr0_JGiO&Ssp`iYv*Kq})zMARDx%&IjnZhAmLNkNu zd>Chb>@64BiUSwa3PoA1_Pflgo%3cCsUv|638Sp0ar#!sajL-V#=-LSeoj=DD?-xr z^?-piE7}dS)E1z|ZJ#{mNcV}cvOIw1Ji>efLh|CjGZR@D{8e(0N03U+?u8koy7 z26GOs5_bee;Hs7|YlGO(hTx;EDiSF8^-t-Z1R#yuFs42EYcH!*uD`M1F*{l=Ufh~) z!c{%@$DYKw&ngJJsy?NBZF{)QC%hb>%hsb|?Rg|wH(oGu%Cvc8O_~S1nmmRes0@T^ zM=Nxfzqrrrg7}o*KlweMP^^Z#q%A_vPGqh3@2&%XK0;J#1D$bKUmv*)*EC2YS`q(sb!U}b@Uj`B%IKH5Wh|C^T|I^!s zo+Vi#TIYwGol#P7P}`ko;Tq!Y%?Uvgn?U4%gdJLU_Fco3g^)3X;Rnw0ann^i@v2La zQFPc=u9U;@sArvBK44El_AptfBW$gsd$IY9w-E91K{neYiYP?GpD=`xaTK_htwj{Edw= zT$vqhE{8WdaiyM1hJ|FGldVu=NTI~>XrmUhCZec<-t zZ$N#klRy6b6*=jBklQL&J#X=d;vbFls>+vtqxGDYpJZ422i?c5zB~wLG_NZsg!X*7 z#|^S4=ODTud?&(|E=D-N8_0vXa@Hk8IedKD>Z>BJ+ez=eH%_`hbx-Quwl*G+#fA}% zj`Qrl>{M;Xm%R=FwfBM2ar9iI-9KQn(3>M?@fRTgu9QVLly$dcVTs}JyoOu zaGwhYT~tNl%3U%k@IuzO>=9uX5K_XVi(C|ro~ylRGX#3jNPrjtcXUw;kF-BA=U_nz zbWEG4fO`B0J3ftr7V7)w95L+%<_#T}JxwsK46ldY7K&WHi_tQ8b;N1-!R(wT7tQ?R zRh#ezxMAD97vznR=;8m-Lb?I1%&?=>&-N2s1Z)@Tu%|ol#@n2oH^w|yoV@n)MRp|i z=*(kVS~=tzhmjQAHV*5)oesL(RAnRg+lJP@CVx=spbiqTWUlXZsMmZ6NNbMemVDz- zKj1FlJE*qmI@^1CYZkMFkP%mSl1n593tR+I_uA{IPRXvSH92VNc?MR*Eb()C&YWuI zqU~NXs(K#=-aMk{`JC4pO7CmH7=c{EctkH^##P(*roP71h9fl3_S3JOJ$MbhLq)9B zc^oVU37Agz=Z8W?lvD(!WI7o=@nh@72|oKQh*1%Z!}bk@VJP3v`W!ZV5X8I@+kZNL zLWwZw-VWry#$0wcwLRGDCS_r1_neM5kW8^}I6<+JD4y%yA$)vf*Q+&j)}LLp-Nubn z*V^V5(8?p16~eCWDsPL_bir$lA#IbU@bALHDmdT%AcL-g=rn+QVmf*A**|mS{-#kJ z4=;adcIdDXTFqnHa*7Z4{f_@5w!ia}X2gkWY|~0P_q=!Yk5cYR5v7TgHYU z&`)bcM5j-TvtO(DYUUdFvky)&xB@!s*A$ii8YxnvNC2hZ)caSwLIt^Ll{mSWj- z0XRQkiI;FR_hHaZSn{&(GwCo}_yqC9j z?|lB{qKhW=0ES(R?c4mPSA;g)ZdD-Up`YX)7m0zWJ$0#{Xta%1AXQsTzOes=(?}mO zwL=wKAU%2Zj+_78)}Qi4v2mS*7BvByG7b^D)c1^i;G5DnZkumGe?{!mghYjhG;1DGAFs@nDrlC2#L| ztYp|Z(B^@m8Fnjxr?m-y06lu3c>w3?HQ{F76T^r`Li4hLxtBK<9ZR#GvO`W@bq`!$ z3yO8b3o7ae-`BGE>N@XiZIXdjO9@;OQ8%Jb$A8 zld2$4vk!NPZ!{P1bHklDowBLc?{$SaDrQr80_mIVvK=m8qM`m$_4!m89B}Z%TtYTt zAZT?}ju%YCKa{V4SG{eJzs3&Y&2`y3(4HcDy<6w~I+SVDQ`lFV)z?q4(yt)8d+{vp zc)D#S?SSeQ-R$NwxxKry9O{Hge3BF>k^(gFVvz5A{isc@-H9n<~d@0 zoalyNxSN8NE4xHag-z?!1n!#67m!MYWtoR30^C5D!lfD5{#dzi5!?2B$zb;nC=Mpi z>>M~Fs`R8Hy*nd~=VoXF$db>E{30;fIFA{xu{~z^_Nkvc*jHza?rF9-ww|bZa9ghW7`EKbSn!+?=AaXUDz{6e zS-i7Uc#YZU z6(eD_%M>-TC(p{|gaT&nqP@j;7-0>34{0!@yUE3e6y-W!(If~>48vF65=DoX{hJ$H5yZ>+Ui zZ!0DtU%n-aZo|%lo9yvPdI5w#KNKT?3*bgOTF|c*GGIx!FX$8YXP_XA=Y7!%=BX1RaJoIb?FUo72nd z%s=$1Y5)Ar9#{saC9Fot;Ym?dkY-FR0i5eIM}a-e0adrC2Il?D^dUazr=}MtLKX6{ zoFAR*B=&(Oz{v;_Dl1vdBX7))R>q-BlNAxK+8<++J1b8M+V3+z_wr<|=Pl|%!{+Y; z@7$XJNmc0Vtqr)F+9|Na6>+H1f&CGnBY1*NCsfVe19*VbS zoKwtoK;C-u%|uCQtR}#FvOtuJuNZ2Hcb{X971Y4KL0P9h$?}rH6RFhD)22f{fSg>pc!RaY6T{~2x*2gttd?Wtq z9gxkcp|vq3@BQwgq<9iSpJvLnh?7$A29<~Q5e`H^NY&@eoUa`-L2@)n9Ebx-UW!;| zNj`8G*c?i6Dz74^(AK49fBZj#-x61*17Eg127ZPBYY0}P1$~A5LG##zW(R#T*(iI- z|0@Dfc*G;SopHc^YL+f2=TPyqP)L-Lgsz_|!1igx=Aj}q?ge&K-*MW_*-}ox;THAy z9$1E5WopJGrC#LxJGyGph}Zsv9F*2Q%6?+CwY7JV7H|*ehC%d=LG6*gXMoO&a0;Gv z6g||h7fM3miXg$L5E}qLMc!gdf_)1U!D|tRe zSC!c-Fmj05u!8R3JTk88(!)+Z_>S*q;nh6wJ5R58_$+9^0j!Pc$JcM$mP_e6R`tWrOpQ@o z3if{iI|-0qWX0EIi2leT;QMEW&?mMXWQ538$^1$lw6W%Q|DE=h_ldgJ z=-WXrT8g{XBHxA)6CzL>5a7a??CSN1i^>1e{unGa%ML>_tbz$G@eIX@;{YM1pM|yj zL?fX*%C$>?r}d5|_O2>|SY9s9#V_jWTncs}w+|4_=mSH!vnf4T>ST~L&rR$mcszz4}flA@?kjrFZFdVLo<4b@qM z=z}hgR0Pkx&JUJ)#rgwL7?1(W55*Vl>73FQS_lZ+&zux*X#S=aazAj+6eJ$;t7h zl*`iS+-7Q`7~kzU(pkLD`N-=u{u`OqbtrP)-N77-bbQI#TZQ#CChff@?H3aQ%9P#a z^rszVdM`Y;vDb9}&+jfdGz>jI|842<%Jq)V#hEQ zVDS^-{8yO{`t$put0W>$y>hvW_V5-~fS_a#cw)2U`2Eh{t?z5@OKmgf_13y-$)~a; zD;p+rYaA?)-B3A(E;^6Yo}(Z*^lG9>#KTVOhb(NaLsl`3&!l5?iSWBAmz)Z0VY4PM5B( z`1R5U>yoKQtj48_10w8BE@a%?DB|HS`yXHE9>gaE5TkwFe43W#t;z}0lyGWb_aBCh zGDnxs*D`}COQ^o+UA_`oKM?+VI_bTga)EI!n_qp26}q)q3HfUopN=HFDK#6NnHfh~ z$$SfMDiq5cv+hW-P*Pg5q4q}_Ve6^a!cN+-Dv>UP5SI(?KPp9mPH%s9c=954B z-Irv-Y+IDf~J}GT#@Baq1T#}Xfr1medfU3&g@$9AdMG#V!35&Su zMN6`t9cx^dD}Oux8D0BC%Tz7KE!7H8@ro$p_{Nbk)h6^m0vg4pav4%Dh83tl82mo~ zfk1x0t)Nt41UD7jz@46pwQCem@hOe1BP>gT{nK{Zjem|+LDR^1Q{(eO$s)7m1cOz{5EA*!0%>e4CHoo7&Q#@at=@gKGtJwjCdaP4x8H~WV#0wz!{_7^xiL2TbUga(=rWRF&rXo^nO?B=7pCn>kq6Mm9jG8J0s)$yiC1>?ykNLZ> zVE>I5DZpH_`_FdzMP03$*8F?lKvx@j0iNpF=>@9)!yyIlfowxVcDj}X6+7Uhu2%fN zk?hAA+}GNLiUbwwdSXf~q&DM7wZ>gVq|%U}VjT(pcG9-GkWwN1g-$`dfrP*7h^9*T zw?<7V#8FrH3uG5n0UX!a>etmgP5ziv}Zuy$ENRckA@3ZXR(f7X#(b(($w+E6|D5J%1<2_&Y9ZS_{H zJ*XKKIVuFy4mq_;jf&d!)rYCRTCz0ba8^DcRn5KC)8t->S-nLytCdJ0S%?*61-VyG z6Ajo3sOPI`mBpU`GYGDVnSiIs4cHo>7pZCmJ5|9>i5?(U%~78r0ua;-3R@i?79zl! zF+dFU9jqNwNLG=tRAR10v2w9KL(J8OSo>1pVp#{n;t*am1GoAC)=pN*Dr~X}@PRHg zo^b%r64YN6*t%w%S-D332F3wAO9UX)>e-sTmLR|+2iKB9BwPJYqF0iyUaI*kiL4Q+ z2DpOcS!(@5as|X*uP!*Ofb3@!fuD%7{)kwXmBQDkBoL&Evqxxwpv4l)@*J@&E3mez z5C$V)OK}vfjVum+j_g&~*6*tMYL~Cg4fb=yV2cFK(NJ+%UP5eyYoS&JFc=iN3S?)H z2Aa@>>5zTt6za}1sFz}GwVJS6x&4TPpa%m#|A0coF4oHVmI{*0I{*9^dd~kem0D?Q z3(!@hEi?;$p(nXIPepA;$v~-s!f6Nevb1-dOufHD3n_;w52? z&UvD#|3!}fDy&_u#%tqT6&yGSR$^0LBwi)Js9vL{79v;=5;Vrj)WiWWREbxwP+3sn z>l~H?VnM5-PNe!(Jqv6t6>gIRK`??WxqgvofY6}JRSzJxTIzr(F9pV~yhsk~B#i|O z<9ZGFN_ar{0Y4D*6pdV3h^=v0SdI?Km8Jm`&_fE`YD)v4z-UL%TCab9*8wckEI_p& zTIW)yxT=9l5#wIfRdos$!$8%YwxCYF4xu)%quxb9Wd!BQPl7GPIEus4lkoZU}* z48R$MJQy1WWs7J%B(hhAdIr``Qtv8UK!svO%ZJt~>O=zP7Xr(Ly@FrzRnstS{VCB_ zX*sw}JuM>@aN+E##HuSVktAR*Ee{Ukdj+y0%9RZ@OIcs)NiEJ$i+1=EjhE6@ii`^S zZ-N>M1Y3&=mtrJmcWEH%TUh%mH4TzP7^(Hhw`AZjR7rzY7E0lDv`~Qn-rfvEJrbzj zQ{-w|)}j%Q9T8#@)R%isYndw7BzcvO_=^miB!VxKL@??cBjP|5L?Wl}S6tD*u| zX#x<|qDltYfD<}&*j9zPJ-x)S#|DQ5x8=!JU+Ib2)~E!FD3??NLzP@0Ou#FI30Mx) ze=poD6s{2l2!A^ebSXe@FZAsg;X@)KHU|1CF;|iY->AB*PKQyRT>Q_bZmnVvCrB3-B}#_!)6m0{W#w z-5z@7Pz|?ODuD+WhPqdwaMN}}hT2)sfmM}=Sl=LLB{}Q4YT-tz z*06twD=KEHe$iu8f1uibP{DB4fREk|1l>bxv04a&B@adf05XgS^_Rp}-K%v2kq*l| z2>ca6eYQYZ&XU%-1$>h@03iZSR5>eYheaX`(t_rJZ}!kD%QRbs8xShkY81n3W>nrJ zl+}Y;H%!*Im~Zs0o(`Ks)vpIvi^xwHo0{4Gw}?%ZnD9x}Qg>t3-2Snx-cl$Awml}P zX*|35xJn~}G7a-MDAs1Zbm|@w_6Ifke=-r4m33uNZ z)@HJSNL8HmgDMve6Mz%|^)Opescz^wtA|w<0J`do39tcDVc9IG;~WsQ9f%-UK}&AH z2I5$6E8GBSGzwP6Oq`9ZdE*@tu8COh*Xp*F2*Bg7@u=RB!(ylhYdz6zydt?3>YxZ% z6YVs5hg<iY-RSBtH53-ovO+~H0H0OwHxhGovEC9f z9$-V3fs#-SA4~T7evew+qY`Ycg_bl^$}G8Bz2B2y-=(UR+DDi_dg zV9Nu+4@qz#sNYnpOr2i49CU6zm+Gn7WnJhDji|7XQbLABj%thf+^ig0AlM~q!xkY_ zs4F9brMG(4tn7ldFBHsb15L%>Ac1ghR<@kah5B$Q!|smTG~#rT`x$x+-S%HkGz)GfOjaRSH%GogCGjT2D;t0VHd8Fjz8kOit?e$W@h{ z-m22J;!pyrR@Qb{+eL!y_viD$;FWr}b<5g0k3`tJhFR*5k<%CT|5{;!Z>ohqSE)ZB z=d=QA-zc1Zgrx$!Z`cUy$H`8mz;v=|s5=iM%qgH<&i2YuwlZl6&M*H~MEO@^?LM_? zE!_apWrV=8VnOv*%n@=6*x3LYYv5>1bHb~Vn zuttb&dvf!y4Oa5O&gFA{_>~ zul{2aRIJt~;}(KSgJoCwihyoM&gu$XtaaPGirgP%wm_>340KIlr!o^_y@dZMTBfVp z5d*lcFupQ789AqHb%Oe+KE5#f+(r(%Jqarw(7CGFcVTh|xIOuP>AAW=1?@JN5i%C)jH1keFfpe$OwRgJ5fws2Dc)mk=^glAkde!9<#i|FbAEV=Umlll~uDKz+yll3@i{4>U>YIdZ(JHdine)9Muo?`K{Rj#{8=8)Z+nGs+X!e z#Xb!6Ms0v=;T0G0eV{?=5UeVIF0ZtzP+*>V93VHVpCDUZuQ#t}y#ToYK1p1_8%4*` z?T5=Lkez$()ddA&83K@ey^73O?Lq_~1l9wEe0`c&%mwi2o*-~lsdE`g1*#UPhq5Zr zr-=Zr)gJO%e91(n&6=vREMEOHvemU%Tc;Wp>4lBHeI&)QF1uZcvI@7dkD9MGqv#@} zih2brt?WwF>ghr|%K;v$d6ct4$AIyS(59Z55?2uCgq*uszi3GWD`T zS8+->e>g32twN6zT&0@8?odoF)zG6=E7TyUJ8+syH4v?OuVAics_W~w7_!w@^yDg= zvsgb!tS@UX#F9ai+_lD@FmP4D3r@|%R%^APpoN-sFj5C=y6pPm_wUwYtsf~A zED*5N_$N{pRtMg#=USaqAi|(fq6Nr7%SQAP6Tkf{zPW`IDl~u3Xn|2=!MmcrW80f8f>skvM0;)C^ zDN9ZG)!hld`j3U|ss%;(2McJKrtU$m>Z4lALRfso0}2IAO*Kod80sCRCsO6b38{n# zZ$(q~-vzbp+CjCV?TMpZOM4K%@{0iz$5W#gxd-@6&sMKfJ7FXduE4Ja>4qZ$V5qn1 zGpyLE%&`k|0Z|y%3bI!Z6Lf+~g>|QRbH}n5@m8Y^(c_tv*tq!lW2rd}{%%849|lkgrH!>0OiB_I)$( z`$bg`S3xDNkhj+nUDmo(Cssw8c`qq+!%nvY=ObK8NQcQI+K*2xaKW(>0o3&843_kG zfHj4J;t~?Bi&kAyIDbghw5E`O?n^*_tc{v1M5*!r_i>HbFYDlyo!ZDpC|hNJw2{& zPf8|@8mZa@c2$=W2lz_iOh8}PL1#yphkh(scS|)lzjDO!N5XaAK){jXB@6Hg^5j;akGUQ}zW;W;3@}csgYXK$ zJL?CcK3^CyY1t}xDx|CsgB^&vw$NeH&YGfX4TIGnW+$je_RygFX&J!G%Q!g=dKB?1 zw`*b5Vudj!EH@TLhPc3^hzopPBLNmV_l%X6*oHqmdu&fwb)rfwcITmT0USqArR{iy z$}V@ip@*SL=av3aez$ikzgfqV>$*{w!0eb&zSZN&R!g9>V@5gZiR2Faq(E7=bxY&` z2!*VzSbgCnqE~NY?QwO^%1i!dMzAcA#cL-M(A!ItZQc57X)`otDCmC_-i8vja&1GT zb@X?_P9~T22fAw+x7i|36?28_Fc5WZ;YXd?eBD8#;0kI=*f7)^^nRGOA3`X$FmlP$ z(dge{uj8I@C#ewP0LL2bPa%i(YrT85m8*q9K@H$y$yQJ4+3IDg$C5Uy5X8fH8nH9f zJ9dP!enb;%I}!tJm5w0xs{5%VWR;1g6IC9pGrg1tm#2|9;8~rqX^VlWa#9QP6^jFw z_4w9HR8YxSkX(;Y5~nYjF;vN|&nk?B)a`Fj8AySJm&r5owaeTrS1n+7Hf$JbX{)oP zyJ4sswBL6mFAwF(FcYh^wA`$6SDj9q&9c?(Iiq2E^?u=bjM*nAG`*Uj%53xTYDu^= z$DEr$CID5cq$z0FSqaHPGz?gY4Cve6K4>ApCsk&4IQnriv0@R5TS>N%s0~ z@dd{2%TxKiT1gH|UiW|XH~M%)n+r)FV>1v`ns^UaqrlFqEBPq%%K7|NPkD&oghC7F z}y|jchfs$co^~3PL1|ABt?rKnHRONsyu8`sF?0>UEk-yWLBu`Vh)`D(P2E8YfXH;@oPyfb)T0YJH9gCoJ3zKqd5hx^RjS>0M>Mfc_9~O;$EaSV zGj*QZ)ipg_;E5{3C_l(8nPt-?Ru5T2v}(J;PG_dh^Ur6XVyrJ$O;x8WdKlr6@#XdPPs!;{RK_wpgvIBTTfK_MsY$axrHs0ktp1?EB@k zDFzd3OuVGEwiZOKtwEH4mqw*Uqa+6Ejfmi(7=gAa-U4#UsrI2qNwlE}-tfWb3n?K1 zt8L&(Z31>?|L3sx+VicMt>N|mlgaE^v*teE+N9Q3iBoC>a%c?;p{szaI$&VVP2g_w zeteZgmCCAn{5PuUs)J-8Z|Z8m>MSyUyRCh@jG{DZvPCi4w_EK|s+DTC>TCtb^Ir`v zYM@7I-R)p`Q6B|H^+Tg*Uq>lLNvcYh0F44 ztT_vA-sedjVj{fy~IXD|b#RT}`SM-Aku+FRv04>5%W90}O~91ABamm8Ip7V?sGEE~a5eX4;(O?s<} zy;W9*=-up%;QJ3*@BsB#T$xfFNE#5TRNcVpw??$qUN+DK&=@NoKz~5B*3PiGw5!hm z3&?v-+Vh6p9VTf3pYcQ%%M1au_U+{NZ}Q}TPZ|?3S;Ps9Xz@s}`FN-`mUExld zNj=>R^z;TTR{_(T8rA0W7wFAZF>5QMbwriBcw3ANu-yjjcm4*|ZgWwxy2VojRGW*P zbz_aHYpL!tsJ54Fn#_{iw15T&i}g+||$%!)tdpR+`l<;AUNJR;-)M@$kt(p&(_Q-l(tj^ccV6es@sXh-h zfG66XR%0M{dQED;3!ZWFpBbTL&J{bJGeaYBF9OGUMxbn5OvC{6={Xs}Fh_g*i0Cnv zsv23QbX4^D)Uim>#>tDG%t9eL=vJis#B&yxC7Q5!$;0YH>M#t015qEapiVHVgTDk= zJ)#X-PCQ3XwF)ZP~zElaAbaw?djO3-%j{WCO9CsWIuGGHoM zC-AHgRW927QKd?*swA(%X-k##q&h9IlIyx?Uyy9c3r0P~dI?c|!{}O+gN|SfU*krs z4h8DY>0pAHr))`C%P>0;Vm&@-8q#$o%aS25kL@53{=QKPbHO~Mw|W^E>w|iGVX$zM zmdS9I#334s-vKPZka4T{{Hd@O$Gpx43+y|<`Oh#)7K50bSgrC10_5!Q7=WkM;!?fD zQSj0s#9Y_`j{kHb`ncL(;8rkEBqdRb(tJ4F0nRyVe6{J^1&UjAJS&f2eD9*1J8RGyA zK*nL^1~d+k*Lof?W-Qx_K~of=x|Psh88yomK+2Sp`>@JmCx1|VwL4-Wss05}y;3iQ z2!sepbtf=ae61c+4GWh-sItJ1d>5#|jHvRxdRDywbWhVV<$^FS+wTNk;H*Gz-PhxV zY_+L&pX5DR=0v61IF|DReI&FFgQ&{RWyTU_Y=8Ci!&hokR-LtLc>`YY+yFJWBFkD5 zRqC-s8Cv9h)l&<-SuNc=fJTzjzX5l}{eZjF#*G8$Azi@Vfl!&#g~oDh8_-CyI_|kv z&#D;<+trd|AgVF~p^k$XC<#>f$vR}u65ik|!w}7GBBE8GzM5QrKjkW<1C*|#z-k=m zKl`eO)!Z_!(}0|dc2U)n)$;;t)rwZ-Exr4bXRrhIwewwwwSPJL@CH2#RWoGBfUAphbt7-+nB6~k8 zzyrv?SNmbktn~>|ECG@tZOd!GwNBN1%LJ=YToA8mnxKgNH4s|N*QX-8ux?VQUx#Q1 z)=g^F>z;shm0Dq~7mX@TThb7P7O#7Xp{vzmC~Fl3?9>vCkQ>|uSeDB z6-rrmd75muTRTi8=j_yIgAcLn0$O!yVBos(s9}_c#A=*oJ&DfN1D3jVNuGdTjG$KI ziTVD40+7At%0-q&Jy{(x!ypbW$YWDvl_n~y?gdz^8UPn8P~LzyKy<|dSgiI#*<(|G zg_4UhL2>XK;Ii@x)@t>#I_p-F)i*r_#+9m6c`%$6fSZDd)i*sOTz6}Epo{4x&FVkE z_usA$uys+At;7Ff#(Fu zoWaEO0#5{U9$2Dc_&+_x@IR~NCEj8Q3vOQ)5gNAMP1G*RyPD=D%fzFy+~B5jacXDVjZ}vlKel9g%y!1R<{&zm6o-* z(9VYyR^2G@*Ve3A3w%maeamwN))-fSS8n6sqO206t#5nG)pFIfvcIAl+c2jCNUU#z zi#1cfSoJfPd6-b$uE^kS2x9djO#sK&!?+(n?i%i#B33UBRCMdwVWl}kS>#2A49h#7 z?|)D&+i=N}m(Hs+>PvK%=2_|tn>dYm<(k)-dJ?@zYcWiKPE^!h8z$2Nml)m!7T|lv z_)d+x6!LCpS|%}C4}1?$-gDS>HiF1xuB&&M? ztFr=YDvT`vWvjK*E>xc=WC zw>_b5hqr{!tZ+&KrgU3cwUm|2cBU=waCn?+?2FaB8-u^KLCE^3L~|9f-uoYQcAs_G|FoA5X?lq*!Sbn^Cn4^Z^hv57lHR{2g z4Pj{jKJqjKml#b33IrL;89C|kxw5z+n6VC#0D zCj_|5Sh?ffaMJ%0wl4MorJAkPL29AakFxWdG4(sY{it4S^sWbE20Rf#h4w7#Np+qz zyugJ3W|kUai8B{@b&KkS;99M*Vn8lhQFMViSNnje<{t4@wIAXP1V~f;FOR8uMm_(u zj)TZ!Qv(MznfHTR#p?zO)o6tuWv}=F*_hX(WVEv16Rs^+6(HlIqU5p+^Qi1em6dgw zY5_R}NUO@5vhMdN>*H2|xhf)(L*lM6Oj11nc)eH;SO;6DRIVb9vjlEP9{`GV_mJ_> zuZuk;73%$=HU zJZ#Oc$nQVoQP#z3g_)#U@G?U|*$~Qu4gqDo&Y0n>&x))SWmj1mqP^Qgz_rZNtHFc9 zb(Zn!SplEA)t3`pKpX9-8loF5n7Gc~xup6rpgO9lDww#I zRR0as>OwlI+tg7bUb!qttW;yEP|o@ZpgPwmFAO$Mvy59eIeeM_Yfv3H>@?!41;y=X z*60%uTwP_1aK(e9oidihWp$G1r$DbZY7eJKJOg=F{{i36dpz0;7j-2dEvR*s)4fGr z5K+C_7>wiOl3F(jr5I@iXBhwMk*XR7kzvjAf~Vv19I4e2z$yeNVAzJlKt?M+ zu~cK0a2AFt)y7=Cq>WsI6+vmQjsPRb*dh0*`@9ZLNI#31 z!k}*4a#o4Db3yZrM7Z_Biwsvj_xQk@)IyMhza~%W3!whn3{1Q3)~QsgFMy^#Y++it z_=}S0|2!w9J@wAL>ncq74ipJ0TOS49dV>LK+Qr_HQauW!x=z~-0XR{z5^~JrSC^@_ zn#(m=N_UldZD{N27?1#Kz=LYM;%+lbWjzKofX(XtY8v3Ib4v|425!KJwH@LDMIBbY zzu|Q4kowfO05#Ljs-eoW2kX^)fbL~##^M6|9`2<9Jk#-%MYT0*(@(DJ z^*bN{$TSsbs4^hI3YDsZXwdJl459+jpxd76vXMnWBMbmP?7bdK!yQawOOjBmppIF?+iJ=8TCIxV2fWx3=YB9ux_0Xs`0@!J7iFS7Sr2x(Z0su%0zSeq}1KtDIacFnk~}$>W9$KcW$JEx>K6{yPXn^7yBM<9|&D zjO=bQNkyFoIOTlfRb!vCl?KW?H4WUUF)Oa>U=Q?Tb<`57i|L}V+7R7tRu^0ZHhEOj z!BM?pnJRZlUVc9!I;O*rcCjbq^`8!o>LcxmH!u~YvFhsottwRqEKDBNbdRN8qMpAC zKB5VrVU_2)A6AQ2?hw1C0B$+_79+51!6o+7D)p@7SXjUBA2pV)x}ZkdSv6GOG%8`; zO(yA8rUw$&Z(M&qxU+oUPpihvSyLA$L`rpr$E@69Wh*TZN~r)dJlATG5dgG+{iFb9 z00HoR=e=sQ>TZZi3-Fa$m2i3ezW;Tt8!FdM`+fhI-nkKwF7o@&0j%!U`WA9MOn(0m zFaUe>7E5=LORDM+`2HP+sp?`-YE<0|aI<<xU{YfoZ zavdxusb-V|q2;J^J%!Ml)H+xV7fuO#9^%&Zc_3lmV#L+;%1x4$99TxVO4K#0`o4t& zlp>F6CLsEb4wTVdW0H4uW`J8Ecd8e_T@jae6|wrZepkC2XOh)ffYrTbJJem{k-9p| zvPiO*gtBY$? zqVB}KqzFac-i6DPV!Z(Hy4$R;y5IwnS44G>7F~lic}ev`K$RzZ*QpY4r+6jR z?|=f^h=y=H`GO$VLWc_?iZ-Oa3qqFVT1R-|5qY`<)D9w(jY1Yg^hpDXx9+h}^Pb&c zg(lADc6+Pi(%``~Bt6SfFIfOxOwnUAqmTbf86K$S9**p;}~glnn|UU4u#s6)l^n%o-DU z(TQ{cb)&s^E{m2x$d*sCOm0QlONZ)?(6k;UH7?kw({p^ z&z;TQ^;7Trp>t-xI9vPkk3T+}-SOs|Z~A(r4_DeQv z^QrnY`>(gnX4@~{v1RM*(gEm$>!AMt(7h^X!n2IOl^D`&_VzW<%N9W2{T4}I0_fce zs5h~*7Jywb$re@AIqI`O-Kn8kC#bbcu2grH-rwW>ON6|^m=qV@Uz7At0lIw*v_MGH zpA?i(tO*N}YD)bWK!11~)HzXVHMMpnl$;k(x2_^=1nPM`>SODuhw)6bF)pg>QZ=@# zA-UPV3?$vSF6msSFGA9fDUw<_D43}0T!_gKrEVlA^>v`$tfGdlI)@+YY$levktp?R z0KG|5DnPAE(R8)C?8#C6+&b!9sVDI4#F$cHRMtSV*(Ur}u75G;XR^ zP^0&u^Tn7*6cE=%y>=b+IG#PCi3wBU^`iHKT=S$!9t{kCSS za41`Ra9v4ID~VN=hJcx_3Lr~8r&UygPZkuTaAkLax?7UB5(OI`HpuRP(im@IV zH`YE{AqA8!7n4a`J%7YkKd(xPA6GN10M5m1_52aHx=)eR!B=fA0VyygTUFHgS$zX% zb)8yQAo?4R$Dw$~a^R+sv)ZG`+Lr(UhSk-K7()Wm}vw8;4{#XftPCNja1^6+;uFeW-AFTmxYZqNuvMWsie}`w! zsb`hCRHE%t&P!Td6ZPkb0Z6%WK-H?`>uANVd|{b&^SY>WR0*udw7?3rqEeAK01F`A zx|xV72JnC?Dsn(FR#Z`=JsYUK1=v0iz+$bhb)o{q0=}f6iUm}uTAeYuP89W|<^jD~ zC8@2vlfY7(iaO6%UqxWqp;bYBacR)8zyW9-xS52jSAe=tMNN437|~qRL=zU1^-qAh zMG1m}YO~MMvOv9ON7fa?3KnV5qj4*$taH>Kz_UjijgXDr0@eD&N|w!}6Z(6|dac$8 z0kxV`JC_^`O9P#&^-X}@uYfwqgFy7Z~d2jm#gWWv83=>#{gS1fZ;zuD;8aO_7Qe2(zd>Nh$b#0FQiuUuKny^7 z;j3C&P1$!j<;cqG3rCW`=d>iyQvnsIrJ4{)61b2g?7z~=fYtUQAO>~?HD(|Q`y!&% zuj%0$)g|;<0&F!SUt6Mpi$*Nq##RWl1=zm$98}b~wZ2Vqt4iCTxQM2@E{7T!ZFLc` zfPaImd(;pRVEqw)3s35H}j?Tmk<9)K97kNFpV=mV`9R z6tIOT;3=SPQi+=clM*{{E>_}KTS#L0Q9OHGje$rkLWUw@S=I_(Jknrkt&osmh^Qz8 zbB>u6?H7-f*MFd*R;jCuLAcJwlJfdJq-2w}?KjkB(2EP8xIF|`uTDrB4fH=-#TC?=5||sCQet)RRst&d>Oi9o@(Dj7qrD(8aO+48 z_%(IRfFxLxN6dx=Fh=~+kr?=h)?kXWdSn6gLpfOzSuY)l*ZWme2`m-~J4iiDP%k5> z|BYwgPzf=lsv1FwhdyBqQ7Xq3nT&d$NZ5DSR~TuJOo1?_8A*p&|zkt>$KI_z!atnR?GZ5nlFdOE~c z@He@z@x?Y$v7FJowRfz7$tAeE6yaXvsJ4^x`b9loK>_$Fa8(rTfmzjdVpURH{!)t# zL8gYSqRV8W?ik5eht+%qJ}jUUKmb@`u7;q?eBg1lV1b)PFC&p`+4O>eKCe^a$bWKN zIY`q=r#Cx@QGLBpuk^G{4N>^e=%=DS*C2%Z^AAQ80N8l8P{japMY^iUFK#00GZUu5 z)(UYI5LX#_`yqn5AJ496O8#E7dBK^ndW|MHLg0COChW;9>D>p!SR~tku^7wmp=hpVd5EzoQYZg||Sh;tT95 zRMud9c!Xp;(CCFx2H8yQftJ;U`LeY1s(#DuODt z)mPLIAj}n%3+Kw&PDK5R76MjTR^b{eh8TP*bQP%r{ujCRSC!l(+F9s#|YfXevoi;ZFH!T@tNh=A9S2>7fvLrLfje?Y9Xb?HKeq7wmBDvluq~+pX^ixv_X4ImBkPk zm7OT6c-3EOs8DN^`U2I8W2D7S0{UF*{BiV{TUJb3-4Y$FfyzwqmPS;?B%}g4IhI#< zj%7#<`J4fvQkXl!`zG1;Xm@@J8g<`+IRapwH0MDXb@XnEb^?9`f zlzCtcGQMzm>hZtOC;`Q$Fu4i{fjF>SM;_MktFR>Mj!gpVvvdesl@W zG9p|TV_3hki{$Em#F#k~Ju+5E#GsZHwB^L*dk~(5_m9dlk_*G}ZlA0@Gk`rLTfNlam-`tT zc%?2ozQubRu~iAyx2t)@^~^$%#?r77@Dn5iNVoc1YPy!gPqGt%QkZ$`?IVe0Ps0Ob za`96m zRq*dMDhpexL%j~hicJDOHPTt>r~wWjo1rC!GEvmm8w&yb#x-UZD6kERVIt~2Vykc9 z*(uenkW&jXOLW4o4{dcH5mmUQht;?m#8(66;RW7B6tItYfNZZ^rh0&oi$(S z<_;29Ue#~i*q#W+bP*cPJg_p<*EI`RtJrZ&PFAjqjyl)CHZcK}23nq54K;A*2)lMd zO)b)0MA_kUmNJ3gHtK41X@i$3tE;X|M18rz+4Zd;LW?Y0@$KO6K-QIbWwIB3(WiQr zQ2TW=4~jupJI5M~{Ui0IIuJv01+v^_$cd4``$x?6an)QQYL@lrYJ>9=QO`7-V1*1$ zh*(u(wu(A;0+~BJscwfZ&x3~9;_^ah2=O)0 zdqxVZV~xHAllv^COJeoK!4X^if*M(6jd6v+f*}x54-!%3te#Q__$b(dtT2VLRA6ph z06mY?f{!$!6-LaagT2;?uYX2!)&BV9l2jE^Fc}vnzW(28Ec@yO2~2K~0=%QH%0Rz+ zgL?6(?^;rpJN-G@GV%Rep#8RCOhVt(QkbRQOQOnadZ_B_YeZE{nFFr@?j5nIFR3<_ zJ9xiLZsgL*P|`z0QUQHZJ*gyDt}tZxhF+39G*Yb`QJKqrzATrH_>lR~NL_JE4JlA; zu1KrFm6#@?iccL?L$x#l{Sp_Z42%xEZ$zu7R5nPMz$im8Px;`_5>drepHO=i$*QTE zzI|aV`)7%$uQx9WqoT<2gQATsMBGn6U)5$;y#a&{6(C$SESG?5pbv~#l?E!~@ERRF ztIsJzr9MEE`iA!UYipqn9)NgNT~JY%UG<3;ZG|bLkyI5K!SDbH0I%t*cD(}73d{bU zE38^QJd*zut*$UkGQ2@pUH($Q5OsOo`orp$fp7syb`3CRWVaa)lWJ9N`R;2hn=any z9bRTTyq;F)sPe6k8&#Tp@v|mFF6{6K7q+``l}oN2V#<^%BP|{r$yJZFN)<1AR<6Jn zh*dpA+)7Z7w_;V1uh5{gV!rwiG1c#Bh}y4Ni4hegWTolhw&mMUv! zEo9nh}=Fk}a zMfLvW@5Bt*x??1!h*ocC+&5eJQq&Oi_()fIM77lZ29I33m-Ih0|KlU?zgsob<*)C| z6x8`i$&$zs^%mdq?#l42n5;Xso6KY*PE+d~^_>l`TG`q_3y7d%bp+zF%a{2z3z(#z|uBYksS1@G!!nd?|<$Ape3xqj4(ZC5JtE}ICPQ7royumz_m7&U2 za=LpapH<0I_ifmRh9iVPWZjBMTXBylZ?Sof*2E-eNR z6>xII32tcZMJ;@RXcz^4e`JSIT?&zFw>cmRplxLz-#A6yU%q#zUgTT;w%;&dpCYxD zy#I9#V_o>J)$sM78Y!*sX;8Kh6j8fc$^$($!h;@Et6<@kZS9vW7!Uk3X)S(YgZ^#H zl`#lHA$%3%03zzsUb^fZ06b9YyFt2Y!%)Qpj;R_b zf(OIGkBKVk+^^)m)F&E^@Z#O5VPO5g)~+{Z&$7A~w=iO|ec5zb7N3U?i`fEU_jCWh zJ6vJwy67}k{#1Bru`R8F2+}fO1Ekm$D6}w2ZD~D#UZ{=Y4qY>ps8xcU`S7gg4~*aB}W*o$LHRziUT_1RkJCn`T0}go0U> z$Ea$zqa$nkBCCa{8x)%&ycW{91?GAOxUU84TTU04M6aZ7+gj&mL^W(*MTw^JC$D27 zr@=VCLA2dqJ5z}6^7Jk8R47X&3~ANl9RpmKQJE^Di&m{9YJqzkh^iKC?xwn$YAPsH zGX>8ERCj{gI-8%=u*00`DsNd91?n*D1V-=_Ux86;feODPaWF(o+|^;PH&Is8`tqmh z2@_296SRbcpiwkgSF@Y!es zX%Z%YxokKXfJM!SSPjB!m{?T>E~iu-mz^dxB{CZjrbhj9+qCN=}Rab_tr&OIqrZA$5JjJjUlz}yWPlBV; z;myx^ih)ho4JK9Bt6WM8_by1v3{h=?q=ZrZ49fz*f&iC5Xulj&*6_n>K}6WYdI~7( zKeCZfupMOe>M3xqCU`}>4ZdS7;8VZ?UJ%d_7z3}^lX?oAlrDGOLS^bMaxto7p)TV^ zJF|8ic2txq*bufywWp(Ka}{l~Yb&@CyINKW>WA(D=YJ-PDlA~E)&D&m#`+3RKcKN9 zZ;$G~fKV@F#tHz0SfTzm$XB(zvdlBUuh1Zp10)$*I()jrvHDO)nqU^Q2vxVsdX_H- zXaIX!0X*GtR+o9A^#(?OH2~iMy~}0Z&P8*X-7-1}PU=)|VwH;XOB01ljL_)TUhws| zdfc0^T+sjG4z!mO))78q6C?!JzOmF_0@6k&C&Rp;|u zwT%-w>$gI_|7NzoWLIMB_wNVgs-owch}RCQXwapskXwL3=U;)nS5y0^2GC&gR8f!giZ8`m4psYH3xQ-@)&YY#a zRtGxDz~5kVhI(1ERBTI?rbw#}09{qbdV{BJsgKcU7?i}Q8F~PG|FRGGo{w~phwNqj z5m2hrSRZKg3_+C0`6p2Vmtqcr^Pk6!^>7>_krY_W0K{`T2w1(CwQNR3fM}re`$>_- zfmA1Y1bAe+wxpB6T41PPkNFVLfQ3CD^o}+xEBQIr$0>mZ90JPfp;{L#l0pot)R!R9 z9|Om7wWna+!bq`><;Or*6^`g!8m&9fL-ww|2tHpsVV8R5_X<$}-HIwugZU-k0ThVf z68iZrl!5gCFLktnKjNFSYJhJ}y(fg~Do?)JUXHh7eF-SQE#8`~v%nc9fSWx;+k3HA z06zm%ZwVP+YizJu0lWePu!gCC-8QxYcm=SkgBM$=RNc`HD}Yxzii;ohjV?8CvMjH! z0bXz56JZ7-!;1AaU<2;-U|O{{!>j;a?{l*TGpS z#>)gF+Jc@5qk1a?^#V)G)?On4_<3~zZ5Yw5Q%u3aPxrU33`UFx~4O~8Q;ss5>T zg6DW}+P8h4}`TS~o=Q>QQ?&3l<%b{V`N*_{*s26k} zO__mv1>k(boPd_t=TNE+T=LAY+QtY9(*RxWx|&jTw!^Fj{1ULLclEDnG0cT_wXFUU zu)2;1S8aR*Ms$2s8~BJxdp+8A7>nsdV&mBaHyu;Z3GfZnVae>p=s@WfnOpH(H;d zKGlVuW8d!vYYQn=7a=T6s@Hqw*4mhcVG>XWcri79E|P~eDsKRzayM@=x3^<$4E#n% z05r#w1T>JXtyJFtQhmS!j?mtFnIwqk01z)#iX$t+~g|1mG&`1f}W% z&xMKgR+d@-fTS=9Pz?as-b`7?RKMkG2)o-xVPaj+(qMqQV_AI@u&Ncd1)d0?fk4WL zj?YR5FTUc*EgM4?_Nd+j-@k!Fc^HHkE7doFT0P487GT}R^7{XPst!cObacagHEIT^ zf>)y~)we)waTTjuk8(??+=_=S;sUjqk9Ncs|4durB3Fqi71N}M1BtHWa6UtaRm!K= zBTOK+ItspjanJW^SlzpnG*JFT(M+&9J-j89|I9h*(ND zxO5^^v%pM*idKV9>{$ePYjgz&luv834~&4>+beW_2T5-T-J;V_wg0 zQ2nzOubcSrj)ilYB61y*{SvQQw?VR|f(}bp5Wh%?Iy;OuU`Ir6<@-x*luV`p;Y8ag znU>Yx>EYaB5miQ*clGomi?mc3Po=wSXt}aN~MDt**F$ z&S9)>^0gOSkhn0S>pi0zEtuFaqT4*H@hx-+Ms%Y?^cq?Qa?l~HqP`b!dM%sYwGYNv zPT$+1{TEW1IuLP|=W6w5DpwTlsX+`N{< za>YQ(YC2<5LhRWO^lVAo${N5vFo0^R{+1d5 z7kZLWb&K|w(9(*FjbKf{$sI|+22Z)79*7bT04I%41{$!+(_g7$;7ATCoR>n zSaY9?gq*40oL2yj5Jq)B#~w3t;WNUkfm~oz$LhM>Q(tYv&RFaE zCqT3A?U8q*YLAtR1PU#%mL-I;IHiNv3#b)vfp;vgr*wqD3u$oeg4x&$dkU~v-}7~D z+(jnqUJ=oqzC6&yGMOS$9TPp^DciRv!!6ZQfmEMk8z*4jz)JO05DH9s?|`!%XNjKH z!$sSLG!%$+FjzwN7=y*029D}cUmoCMZ&{(9288+}ma&1!czXfxs|-=T_uP#^R{kEsHrI=`7qctu%lyq6-seaADzE(S$c zq|-7FBzhkkT^YUdCOphTD4^!F7)Xf~ z9905t)mGmkZ#}%I^(EQ*>4w1FkPIBw4*Bido)$}$ma%pNApBs~kqhy+Ei}W@GMmIJNhsBa zdi*WAVQiJDdyz5|vH?X$bjhdJ++D^gLe*7)<+O6`F7sN~S^$6jeLlqAUb|&P#{ziP zqphvATN_#x9o6vpp1NHFCeYphbX3}Tx!1EA(d@E}Ssl@+-fc3BS=|>fZtkqJTV^Yu z0hBCQXSY;m0}<@xay6iS_Oxb$)6zEK-L!V;^cgLyrvux%i6Ohb%W5iqFc!T+C>e%=8s&hf5mKy7tn5Fucfa-Sn?OQ&u#44AnsC<8d zc%1|Mz)IF^Ev9qqOpMj+QY(bO5zgswgbz}xmEKh8U`wKniZ^pQTo!-iuU_d-A}zP2 z=}b{o=OPJ<;!jl3Adu=ed%nlBbmu@9T1Bt&oQl;=2Cnc-+r(11lCVwm3tZPTz*$Yo zZ`)~vEg6O`pNkYyG;DHwMD^(e=`%`7oTPz7HNd>irvU1$B*=mw)#EuYf{Y%5@z?XfkpF_|^O6x2tK5N%!MpeV8gu3rch>)uZe| z9y@Mqr8)t8z}p^R-}YqeR1m9L&VGQFuAL&gwbm0Ij^$F?!F5)-*!R1R^&F=IAusxfi@su|x)69457jpMiuEjufdGzraZTOPaC=sZJ9PC@CIEMe+e&pwhq1n! z-YPZLgG@uA6h6wnq{9hrrqw{jGf-ufzIcwt_?G}{y`3X))rK{e2tbDziztxjPvp19 zJXL1t+K9W(2N2chn59}16^klnTDRGwv{|wkh3iW}xUQG=A{wwZcUkTEUj#TkEWiB+ zEe301QK(;$;sx@n%Ym)F&ojlYy~{x!NuO2jKgxlZ1GjRBJ;pN{3aFPkC9Hr0N6R~$ z)m^m9qHShXt*XFD;HQBARIEE_U?Jr?3Dsw3(z`}}^)rCgugPy0`@FT-7De@tDm$Qh zafh{@=P3p^5xA_ex(r;a6Z^AfeV4Xb)S?uM7NZYnTD7_y5Y-UiB98`0qoL9z;Utvk zV{AEOG#i~H5?H2^3<3ji1vsi#Jy?0ewfjx!L}0i+uu!ay?tE5NmSO|)v;3A`azhysXrjS^G^ zTLI2WrFx$)4@}bftz#*)gR?@cdZ^Yw{FP*@^}u-%$m%5XfFp4Gw34%uAh1ejLICA- z8mI+8h4(MhKmlki{4(YP>M1rUglI#w1Qn|lJqzdXg0~l-`$6IY#JM0(_}5mBnk zPGDxWtOsqR7N&JJpsFi7qP6p>S#@>}XAz=qb!m}rhHt!bW~0@WAh4dpdTgM$ZUgIM z{(ig2XutnTU;qz$5EzG#vTDmB5(5Cv|L;5EiZ9bk71a(vSsU`}JPk>9GKfJ_!5%F{e6# zx{{Xc-HGEcR&}O}PcS<3TUMwy0-<_{wkOT3vAPkQzjiWjr&SQQYiU_s4eZKKefg>a zdgyjoGAQ8d4y(aY=|IaGI%eWd@7SYS4Wz0H@Oh72Y0R;Q5!EpZx^(Dn$TFhiqtf-3 zg|xKdtg_gX`X>-o9294L+X=j6Eru%AKLsi+BBC!c(1B@~oTRAV&Xt%QIDj?a_;q81 zkA%59CsRRGbra{)RR7(rn=q<6)OtO&D((O)qdHcAh*LEKtX2cocBIyus0$Q&60S(if>xx|4=0HJpbCS27`(TCE3S)%nAJ@b&E) z6O2}@>wyW-uJcVaUUS;kRs-$;0{C6c*JyD?O<sasV zVAU5|%H`Lg`!s@QwGrsm`-SSi`)XE2T1q=SOW@+!Ccx`Js6OKvH`Y!58ri5q^VXYy z6MSEvKyOTA8f9|*B@M{464Wd=frL%3z$2cTt&{-kl~z=-*aR+s&PZM3oroKcnb`}l z8C(FJmZlFJx#Q;62W|nzN#abllvA)8V5NEwFsuDOX$6gH z*7|I+)GVtq1=b2teV@m%42A%7S_rD&qq0=*1rpGm!B5h&a`ywR1Q69T*kOS&Gphpk z0lix8nKf>8gBVfw3S2}x*Uol~)vK?8@7J!&7SDQEv%_Lpy&rtP_Q-FeXXQ*TFrwq{ z*H*??Ju9+}UWonvZ+4UdIaZ!K5NfsR!47N1w@%%iD{HO(1%xYq&?jZPQR6Pl#I;E8 z23^*F>xkI5&_Y1nxmVX3Ww65h5OCP@STk&-tGTxBwI_(Oi-$VGpvBZ-yL0ig2(PXR zEc4|7jrrxN_sj^@*8Fl9RUJOM!FOF7<4a*wH4vDfRNbW`OZDO2=rMw^4yYTroA!e= z8J1eOE($`pxQ9V}`F^gibv3BWbKN-|DG`HQLPf zvTg@L)eVgEeCP{}Z3`>Z?SNICXt~Z)4QkBUSfV?CP)`=2Zl!Hzi310kU1qo+yaOD+ zUe%9#>h_IQMtl5-sM@OYsirz>A(rUl;Pd0YXLv<9t#U10#qdG0UBIuXw^~c*0qPe6 zX4B@Kw-TLhCGwZM@LRJw z2_k?MJ>O%m?wCawuS-0^b$ci>j8~l%U+OE}H>S#p{8q?fZPRR_@_jMZydM-+7L!>FoW(RKFL2=9!D)ogJvs$*@{ z-pd9`)$Oy`o3*ziwwz0I7I#55Oa-U}?8Zr$0G9JAqZv016982KFmD{j>-pTYm^}__ zTJ`~tb&jVgrrAXiY33HiF?{nK5FPY=4g9o@gmf?p&YM5e5wkI(^;t;}sHMgV74G(f z*h2Hbt7!4QevToP=t`P`D7M%SQnn8Y)thN-AywN_-%d$!M*tCB&?oD$({(#ZgS6J3 zWbn!Fj^@SHz6wi{%HM2|C#Zk>0}!+RRi6y8jz;54%~|tYiq}8^egG6;ZlBCWO_#&u zTzb47A4j zP=^ax;Hlg;_ZX~MeF3P|B_h_xJ(*Au7t(3W+%fj~4WjLhlNH_)V{_cr3iXAK;ChKK zWN(aHv(FEv+8(#ICw0uMg28CUs;jFkwr)-F+hFBI@cla0w1NgJ&Ips`^d)drwQjwE zTGblLCaZ^T5$eV<6CDL>S)z|#=NT$l{-mR1^>?0zU}KBR%Jipz=xSfW=1v7#_5T_0 zRG0TX`(~p4Vy*T0Bq`dU4#UfU>LqN@rnc0XP_5)|BG*3&q^beHS6I!u9yX0L?J#6; zIqu~STfKnhmhNhZmFv#|ub=Gurnof&jw+qEDBuH%i0Zk#YB_vJURo@r6fG*a$Mkbx zs~7d@9?xLWgb<5L>GAcs#dMzGS(B*x7owK|7uoV8tpNO7tkJl3N_#t9sMwh z!KWTDRg<0To5vsqKvWm@`QCjE5+SUL7^)05Lw*6w)wzAX$~hQ98;bz46z;Mg2G)A5 zZ_>h@VYJ@rFt}H`-uXAQ81Ale+Iw{v_`oml5WwsPOc4Q$dDZ0(`W}J1$YJd@lBzCZ zewZ2-XX(;%`YJg8&w2{?b%#v{n5rx*(8}4XK&Wa0&!QoqyB=s2;5BerHM8DG3-@~Y zH47}XdI>J;|8-m|-ni5fYgO+aD@>4;z*`-LbsZCHEdhP+TEZdN5INf6u+~uts2h|# zP?C!XN&r#4L8v}T%~f7!fKms^3OE{ysBY*J%-B(RsnY$3N;)_Q*6wIW8gQ>CyOO+G zs|#`!0$E+=>)mPZHcItnqGSLoA;0RFVqH$7OMT)dE5&N(l4Jn^{0a!*bA8_~Q>2fb zYdx$i(m+<%c#~Oi2taw=;S+%FG8GaI z4g!hZ#05~}gp^644>QDR^S1sPrYvKK<^BKwABzYC000000RIL6LPG)oL@u0MYs{Br z8ULf3eQ0h@ldYP)war?4ot+s#s~QVikVRL~yDCRL3c7Lx^rktW_W<-jH>fenRN7c$s_3F| zBdE(qP#4ZY-3-(d0;|W5&53%M5tXk0jHFZzQB{Dz#@m>BqS96E7ev*hfT)bBqVdu8L|qNkaS2u1N(Y~E zm0`8MCu#udCh@Xhuqvxm8I^)(E^9E>zO23YcD5VUXa$QRP#v_5BIy0Ipj!&IYP6}G zaqgwbP2v~7tU`Lw5p@gm5oZN5!4w`ubLJ0=q&2P&~&_f`Es{g zc|b>4S8&=71}#xP$cVZJ-%g8Wl`D;i;w!7IbBw50Got<+qJC8r)c`enGS(1BL~VoK zISYCQppSQf)>aiN9}uftM&KH})iTwqXU{*B^awy#3!t@9Q-*07r>tVM%ApWXeu z#D1Vg8+4Vk%8o(3mbohmEYFF~3RF+g+TpK(F;)(BJ-+Rb+)67rs|pSl5My90;5x>y z_DJcfc7a&AL@_Yp?~JI|F`_<$Z{L$ZDY9CXYvZ!Ir>K;!_6iC>jH+zN&@Hk+5SI}q5v5MK+z!>Xwj9L8zpbttOKyKv$h`8z#XRI9RKA_$zx&X8qGWdma zuHgd9M^G2eK|Kc4l_F}WQgQ(vV4^7LP^rHL=GO$bGKx-a1Hy{U&W~ty=Bhr#1gq0P z-6%RMqBV#WLSR;$uU5Ra5rMNGb@i z4ybQk(Jku`^);aG7f|bT9W!W9gau>~b*R=8g~&=CpiNGyav|!>B!TOh%ObN{E}E4^ z5&#QM2DF8_toh7kjpN&QMQ)7{=tHno(%Ey2ZGJ~!eNvznb+}f1A~iEiKxwRb*E?orgjAQ7t)qxOkjS8VeKo$E9>yvLuA(z^(au6N&ZSj zOLPeV)+5a@QD8n3uqWl%3d*A3st7IKo6L#&VaBj_y#;`cl=kV

m0atj$XSS8m<-nn#ziK(ev~N% zcH-M1u@rz_QCx##C?A+o;D!#$@@>&y4J;}mWh?x_IMxjv=RYp;AmSA&;jXOroV$*7 z#MawOr2sr2p?b~9F|l<4qt(Os_Pp2)h_ER5l?D&ujCBDcD&_1g0ui!xfsq1|OAgVC zq7G4C1nO5LCO~XOQyTDEap%90IX@Y|L?LIV7~!nmD94=tM#cchRG$@<3Jy#?79>|? zEaLzR8C#u@+^Wt3h^fIs2_dK46O)@BymArT>j>zKgYlH*hBr#hnb zFH23P6jj}7a$FAJP!HnUH$@8|V+F%Tv;u8qP;c&_SNlq38}&lb5aXLnH+MMJ(_-%q zc!>V7@+ugv8vZncx&z;Ki}6~Mtf4Lmf?-TRF`hLpwb^C}rpg)3ThzooLAMvWOq2wj zPWT@nSF)tT!1_0-b5j>X8pJZ;Zy`p_@N3QF03z*9DuyWsP`;vqAm^T_?*a9sSYkt| z&L<05l@226&|7~8)D2>ni4rzSj4I$KG3-(^YW=g61#4q-?R*p^}Pm0>{tQUIN9 z-jXT|t5wr+{`I1y8lcX>3{3WcIX@@rOHwE>Njk$QKq14h!tj8b2Rq}#-+GGqWA>=ML{ zQR-sGR^OD`jML;=JECntyGAeIeTzCXY4Mh(xaeQ?6!isZCNvWQLUxA8rB{row=&G) zGYbZTPt21FA-EO#jOc}=#8tve7_Xv1*|U;S%^8Zd)79-v1UMr_faw+!dKMAoP{s(8 zk@XG+^{nJpX*vR^OlF1dHAmR)=%}wI#I6O3U~3Srll8hMC@J8G=vHp3971w@nDd{J&Ogn9(XsVVs?4(f09~3 z^`y-~$P}xD1dw`yzFg?q)#JNJLl%?RRv-uZs&r9tidSV+sx%YTrYGp6)U{00VI|=9 z4Vv~`Z)FwZQ|IyRH-(N3Tr`m(IG=l>QXgn-A*BALi<}k*gmT8|;(;sJ|GI2DxfwRY$|(*21z4Xc}ce7%Kz1 zy2JfXNs)>cBQ4w?Sx|91jH{XR|4(M?b)Z7{bAiZ;4Wg(+RI07B$kr*Spae?BDQZUfEk@U?4z)l9karnG7>U0Fnno~@&>%9Jad0xn8z z5Nfd3jX+ctl(E@9&>F_9j^o>7BC*0H03}f;3#+k|S3Txnb%a$tMSTa~ z{wfk6+6l2}+8djY0{fx9EKROwHkcBs;L0Y)?ys!vh*le=oe;8Br!pz|)@GHSsBidkGALy=*%qkC9G{!)HM$1-leZYH|z@XB7>La*vOYN0e$7HNhWka*N@q9lti(RM*xW$_R*2&uA{Uu_)+1*#l5U=r zv>C59iCaOV?{3<0WixaA{{-fe!ZSVX?OY{#Q@foX*_#+7?DqdWW*9kXT3FoJf)mFaJM<32VK-h_bpu*E({1 z{UOFr-^RCJm0C+Cz@##20WPm{s6eBqhi*$+fKEWF@X1^`C6R1s}QMYn^WYr*Bl#5VmpxtmLP(9L- zQ}&6V^gJffMpUxV^hBL3G*_pH6(|L&YfJ-~O!Y{I0``f7-IJTbVSOx!I=rfXNt>2+ zRH5!NaW;5BR?J;(>k#!>F;(N}J_Kq6B~H|Bj8-qmuVZSig0dQ-2Jj%R40@D_E0?7F z-+p)6c7Vq_KsOW;z{tDHcCdP~qh47oaW!f#SR5VmHOJQ0+ZkU~g|X$FEvq*F+1^oE ztP>0N=4;lr0(LNQ^(xH5ep@Uqb)vEjWQ_@dI~cXnmfX|g+_t$9*Ve#J29;K2w~Mt^ zb1k+XD(wmG7VWCJ6WBI^os6~82Kr;7VKuhR+n2?ON=?_(C2JjNTelVPR7Y*KMOxSHTx~1xz>%i`?JT&5NiFnV zWOJbzJo4bAt<^n@R%z^fQnY~PkiDO%G-SE0#8^QrF%v=75=Cv&;3Z;erL6^eB#i!o z4LwommHXP#p4G^UcF6#mW_7Qa1sm^~+o0ne++wHb0gbir_W8#d1E3UeUkP;NF=N}U z#u=^B+pdjb2xz|Jl4KpCE|fEC>v2dwRPw6_#k*?0x$37^;ucSq0?WuNhPGpkcR1FP zLW2>Nl_Q^ZT-RbR6RoJhaJ$GY8vjy8+X4DS%S14P>z|wqi z($?xBrWf#m1>#D~)S`uju|^dd`&%nVK0TG^-@?ONil8bs`d%S0TzzQQ>HmD z+1ge$(Lsa$-`bVM+F4!a3ni(P_93(qRBBQm6QF?9@Xy1Ard0}QNr2!mxfqjc2;i70 zV8@g)B#=OenSzN8#!gHbTu5Yu?SceCHYvu$_Cpzrs3KZY1UQM*$UIOALMChNb1vuK z|N8b?o9HIeeK?54{@31n&EK~tRlCCOpNdO-suGk3EC*Zlj=5D#5x^~RW_AFlYB@Mn zs#ZsdP+D`+A}*g9=y;LQ+|+Pg(POE$0_?nN=uhSpkw3mb%%%vD5_}*0QK! z`}!jbb=JzIYjjx)A9FV?^e$jmcuwFpH52kCEu>vp1(f=}KEdqLD{@pV6`85gfO_Jq zz+v5gU=fB5sRF3TT#{IDSXT#1EUVR|bvO^u(tn`vM!2RMH)}xShTBd*QfE!NEheee zHQ-t?T;?LxUHi}&d9Bt2a<&t#kiA1a5VuzL0cWVa3m434L3Qg8ac?xz>BY z379po$o&{3T~jfHj6sW9m-hxVaEht{AI~f`a38o?JREU>cXex^W4cy)j+~6k%I%5`{0q(F;7?72)C$ugQ2maJT zv{T`xTCe@Sm|QbSy|1DP&a5mUrtUS!Lz~ZLBz&@iEpS0rU#CY zM|C~8tQQ;EMZYB^Pu2QBc5#ALWb2^hzfz#e(T-@iMXp{na(1^ItKYo^qx$7gY;y(Wbs~zCunBvY9JJ!Fp z96*PCM=JGUuvAs45^|&o9V_)8&8n3*YbWpj!@vQ4Nefp1jxSE?rIZKWu~(}EHSASt zMskvd!2x(UaH=j=d%_;%E>7qvdU>gj4Upge2nYb!{@-IJmkE7;PK9eUZ@U3FKu#_0 zQ=2Sgq)4kd?^uR>)uw>2(n;8;ec$q+S(Zb@4H80>C)BYzs7faD44)=vPfeqx}51BYIP42p}bP$lq5aIFp+s58u?-d$2s zF+8Ws0M@!0NagaYSArpuQ=(Yw7>n+Au6zBgbN#$;c^a0NRA8@i>UUMce zZS$7hOA{-Uc^B5HcEx4Zlmiz22;)f|p@;T_9x^cIENH8k$Am{15R`ozSSTC7n~lOk zQPd4J19OOD-WJ%Xo29c zR&P{KDvz0vndTe_BKdy~4B%OYsqSM9qygLx*2-5^e~u$@lhNgf&PBeQu^nIyCXINV zH>;{jHUJI!{*S!UY2KBlrp$^e)>#=TmG|m<2AM}%>sifzr}awYu)lFz->8I+n`t*7>Sb56c`Ul;^s?X*2>lGu(TkzMsv?Tuo?? zA0kfbd^1?_F-)2Q{19lKS_bsU3}jq|w0em#YucN(o|*6Oqpji&z{SRpNpFTdPN;eS zBp}ss-fQQbDDK zvZOljOi6Y1TJqQA1M><^#qIzXV3AQ=?*WeF1=ta|RcEMo)gv>J9&l%1uYRm{tqa$; zFDVhk-Wo}*2NsBt&5C2Q$XZBdvlATFql|OKbuh9gj19uXLpuZUs`|tON0ttDROWSx z;?@5MToV9f^ELuRw*>i!tx>gOWIJGXDk|!;bHc~2I0rl}HhmX#v6;_nwuz=L(fz*9T z>H=fVjOq*AwX7;QXY_m^WLN177#hJHHVUr&kbO=^DmnryRMX1!wTx5tByS^y9;9v7 zhK z#&A@1MXl>HLol8f18KmWR>G2$8RIRe$_x^g7eT^eNF64EDQ#8Oq{yzKl^$bc>@HrV z%!&>{j_hem66S&KX8Wc)j&P?IJM8@ zQ}Ad~{kZj51J2hajFZvut3UzQXd$))p2+~~mw}mxe^5hgkJv~P>eue)8CvZ?+GX7S zOR!a!=m04J6OQ}-Ym7;Y9`H`?|7*Y#Zl^nN;69qo;-&Id738{*Cwv`9T}e`3Q|(JK z1jtSnRAp%*rOwgXm(y0OsvA;6-NI)CUk3rkq@H8Ap&&=bPc2c%YxH^`Y`sCvh8Q80 zwT+wRE@wgkBZL%_1u?5fJ~IlKo;j}^=77nP;)I$@CA*RrJikz+WgRJWsXlV=25!ri z%}Pa0%t)n94fJI>n~8BbvKZ@XrR1GH-hsrt0P~48ul4>2iCgE zsxl>vI%|uxh?P2}g9C8xKza6)oH#TNx?zG_B0$gtpYU z%1RfuBXGoTfLY<5@C8=wvgWxcGKJ8u{4dZdCqpNzH-JPp1u204pu`19<-)~6RRLTJ zs>u+L9cWQS@V7v%bG36dN{0##g3>neco?UJz6F9H9ygq`SMM~{B#yZ~V58+N5Cn4& z_(iLI)8Sx}LGarF7qHqeEKNnns;(+H8U8kiSASq2`g>SL8Lz$#zJIwf8QMpkX;S@o zJy)grM4U1T{y(5qwt@E>gJBd`aSy9)5i;N%pw;E3Rz29E{Qh^q_w!KGUB*~Yci2px z)&CC^8Rn`*M((wj3_7am7=UZ_F1V{)5V+E)vQeLb97{_7j}$s(6|d=7wOneY0ycc% z;9c{p5$2LbN}B8y8^tui#Oa3~&V0N(>bFVT;xdy%ZpY5zGBKz{W- zaH{Um>1PD$a*ra_zW@u>rmzo@l{WxMyeSKk9J;A$Pn)u+nY6Q$PMEkc7H z@>)uLA4pxLkFg8fr8I%>0|oG0-wGAT;LY$!p?iT{Jyt8RjoMd5n{yVBK|KFn5Col} z53voy;IyWDP*ODjbwtooj~*!8cGGDf*+4n~Oc*GIeh~00tJT<=N+8^8X(($!owg6a z_b(Z!4@Zmw_Jp+177ctl2rcyjYc9ZD);1efnj)8ahCUiN>(D&h%Ou1KqJ;0{Us+CYci54k5Ax~o)ZhSdcm_1uB- z+-ozO3!w12=FzyKjFq~?fQLBbaa&WsI_%$QQhn6nr&QPCKlC)ANF5&m#pU{NW6$$~1F3GX|QvBe6De#AjJnzC|yytyiMtX6K7u2r3Y-)xp@ z-4CpFp>bSY&QjBvq83JzqBv+jpw=Y=;{`z;wMZD!R$+qAj{^lT<>4`AA}}URlnOvn zSL<|1f+s)*7k@aAnZRxOBwwG_MlSUeV5v_SF!?@2MlSV}V5#>TlyN=ewG_I4z+nGS z9gp<7t~p9M-FGpkKAnq>jIT)hvtQ)2E-13iy)&cCO!7oh$!oTW7UV9PpN4G7If~b`DS7s|O+3SLQb+2cA4LHplq5N9>bKKU)s>F7YK2KY;o_jWWG$qq9q=h| zs_xVY4cxp9rE6RYDH3$5W({yEyj(5ZI?_~9YEx4A3b=q-;8d*`7$o0Z3aDKzsA+Ve ze#mx(8nU@b&dec%QuX`C27tLkEQp z`wMO|P*1Ea%Tg6O{{Cl;srw%8WFkuFCX?IH!wAO-eNH0{ma~!4tIh`7ztbX)?+u5> zE%hO5l;0-_nGvCVl90IXH%0S?waXGGRr zy1+Q8Oh|L8IuhcO&%{aHHp_UEs0Y1^+bymTKd8olel=Lzt+CV{`a2(Dntz6*_NMvc zPS#c}y#(0PIK48);|ha-q>H_Z(*Ot8-&F}H`~kr@sf@_`CrfGv(@ z8ECou-hq$3nHG95_E%aBx_8GV*E*f!@+m+uj4+(@Q-fP+$0-+P&hCwP2gYX%;Bj z907_pD|GAuU4euQbv|Sd1 zu}%~C;&Br=RN6{i_kK9VPbINNmFioSTMf6GmSp>=ao04+10t!bwI=KIsj4Xrpb}#V zoplSG^;+Fpj~-^D3riy5s7(u&`h*U=8}`_!8<09S-mcVXXFWNPwCUT8YM{@SBX8AY z;8vZjrfWW{fhN^=0P2gcJ)pQWE0e%hy>3jf^}s>WtxN_AVGGpM(x>2vQ^4y+xY~yt z&42l=v?=zK zSJ^VhbK}ihpVSe0=to;>4=AoJbS(2ti`vjf+{6jpX`KHaRY;uBceQsj0dda9)`q*>%^+yMCwdF?sSM$TPb>cs9^p%d# zeo(PSW6PU@b_=jE9FreOP6v?z)Ve9)w&L$ zgWRfPz@6gbf10}e9#@jR00=3O&@J@aL+aE{!|89y)#a>?6#93RQ~uRH+K3^ilP%T1 zddTQ$p~nU4A9oo=r803$X%&R8AfX$qiC_}ilw|y=#SEuGj|(I!SE_kh=1c&oms}vS zR9_4fRjyZ43O-ak3qZkYjYfBoR8;{Z7(ev@xM!CY4I)gR69_5Ku`WOda6h3)9bc>6 z#@il!ys5laa{@7?{>YsNIF1v_R%ovt@RQ!uB6T)KgowksONzLuvG^}54*r^o={OCgT?wY!T0Z? z-~Lq{+iZptt7KJ5h~hsp5CVPKm;~z5ImsI^A1L5yqX0InE0!tmT8;V&^MMQ8sI%`4 zXRJ%|Q?6Qx!j-c?WbrEf_J~?nEG8MYLeXUfwR#p<>UIlj#s-jjAEkSa1{Euj)WQy6@~KAH{SRWgP%p&omr(0jBgIhc zy2imUKlcu5z*7VHy1`Z*!Zt)jm0Ys(Nq6Mu`$?eMuJfVc(yUB@xZ-W=0d=2nVd4*B zgz|{^4~z-R&N%plvQd6qF;^`t_~aH|Bax%j>1+Iz zs7H;}jG8~xT&c@8QtB4HT{mo3mrP?q*DFaQrEbtzJ)KlGDhXAss96D9%Sh^0V+vr1 zVW!p^kF7LKWufQZi-l~KBiGwO&9D^3aS{%oF$P` zH<`4)r7M9{bYe^R&NWiNZu;#}1H42EpejJ#cuz)XLU(E8o1>X6CSYeoNSe*eSsfzd zDPQ9&MxFpH_3S{rzFb`@l~ofCEGz%nxM`v10HNDV{4TZC6Edq5trw^X{59YK7=L|{ z>H&QWyENA42Bco7d8;0VT}nMK-~#SZQ!6G1aV!S(KQvu{r1BiVSFQ3|Nk)~<6;*>G zrEWK8mRPR|wQNYaaJ=F?a0S-UZM385dp`Riw~e<{N*MS5{d~fA}prDfIln zN-tL3wd;Sq?=A+P|3B8_F1$v%p_BqPZLH9jwOoDFTPdCO&&w7SmKF!fDmp_lzi`fd zU@BU|r%ljOU)8BRolj*}q{%jG^Cohs|7kuO%g7S0D^Y1ZOCzOjG#s_NRJj|krfdzd z`7QyMirEKLVjQ2oLEir*f#Ui+)BKMar=(L^5^&Y?jX{Vm-)x;_S5$u&hG!VMJEcPy zT1r8>L8NAeP6eb9X$6Mv5Ev8$X_zD(8XP60q-0156%+?hlI*XY~X$|#uI$7q0{@9xr5k=9~2;guFcJUGfC zngS{aV)scs!x}8Hsa8@)!vvnrdpWR9ruPp;Ar6UboZ|$?uJk{Z>h2p{WLu8U=Rjdk zWEUf9Ih-jcRP^(>cy!&Vyk%a*ud0Xx+H)n6RP~@aJ`c^VhF7ua$&uN%_sS zcJXru$brgn67Og#0I!|F9^z4V6v!+;g_kcIbCq(6$7UvDhku_twyk{XU@Jk5hX z+cJdA9&y!8YruUk61|(YHcFLo+T;tQJRgkmp8=SpXtpUG4gF&N+=VwEV^-a~>2>}g zw9$k_8v;9V{P|2@OQoo+#RW*lsfzo7!ZphY*sOuy%!*RMo__oQx^EDxtrlvBN+kwU zjQ4btz2t}>`w#M9>yL#m?fwo2Sm|EgsN#LFC5>y7qfWet)iSgeKq-JaTl9NwejCVmI!2gH$O}$I{7WAVW0?`;q3d4>Fzw;YTNOrpw~$e+A|&2G}Jiq%(~BUEi~jrgBGGuYCPQu(3nM zVm!%Jd<)S!8U20lypd`uD1RsQw{a8WXJQtl z=WCMZ7S0irOAOevH%&E&#?AxSMk-&M6K{{CQH=66b2?*cj^5z&+-a#bC$8cI*!z~8 zNoj@kHYooD8z)W1UD2F6n+3|d@DrK%G)|HG;2Pe>H@#3Qt|}=4QzLHJFpb+Fh^VQ9 zv0XNKS+-gz-KUn{y7uU!T7P!R=PW4fUOH zcT~Lc%A-~B#xP5jSMBIo2^-P}WjcjeP(f-3~x zL3Dc4Mk2KrQCZx|u7SKD-F(r3N+W7&>vrHh?bCZbU;b0@@YVGRs5D6Xb&_I)KYP}cG2FpeBs@5ht(p2<{-&5WN=E1id_?}w_KOYaTSE7R z8eXQEioP&5>x1sPXTlomuP-8-W)%SGt!GE$%QV~1?MDZ?d2Y;8fcS@(lTt>;yTzv& zG+c1xPqXO`utC5x?I}szp)S@2<3!fr*W%Y0>zocD*d}nhXIN9!%xh8AnZL7YaiP_w|!$% zSykEa4pkb=9uPBPAAQ-8_}|pWT|vy`n7{M*p0VB?`Q=9w++njScY5(0%siGqO_BuW ztkzIC;7-SgWMX7hed+y+(AAUDy1$B_mu)VxVp_m+REEA9Dz2oZ?m4YzhK^T(?hT7} zZn%hrZnhSih82R|lw!lKrb+hP&%cDf6&Sg>4~`#9%V*mKg>t^tw%S}Rp|KH^f!Bq! zD=KpL*?wji_z|wjdg@@|>CvO|Q}{&AD^G@9>X#%sB23{YLREW<@`)3Osu_eu{OAf& zakpMwl8ttbB!5qPG3w3~a2vMs8vy1zfiL}^5IL7T_BurFO@zi#7_m8;suiq@eE1<#)Op8b1uyFwkT1=oW5!>KQB zku5bdu|Xhr+|4uND@ZkZFz8x8rM|uuJN5K++h3`YlRpPr`F9@ELV(QPjluC{WH zrgS?1hu<=5>swmmK-O6q5x{Vlxtk-W@|2_s^v)DKw+=7hDUXeJnTua%4v)LM4%uCd zSp%C@#0Nje6k3SUhCBn|h*E215iO^BOdM)5zeW6AfI1Z_1EQPM&2{yE-qyR+3c>cl9R4)kR2! zgHA4K!Dqww0M*?=7efT6JJjaA#6rI6N$cQu9qU#%FbT++<mMhv2@0nyc1c&3a3Ft1ui&JnPZT0b1 z-l!UA$2Q+*Xmv(kWiU^U%Kk7n*~}HVMqAe7!7Gt zoe2@C&t^j1r^++X4C!N35Qp(rsNeF2nWbGC@(I419La@QN+{2fc&t zz@So+$X?RpY1eqal3C`|avq~*Xl*1m!6qy8_<7sSW;p-}IMkdy;`aoUQ0Nbt?x(w5 z8zW7Q-V}SN>(`2D7;)Gm+pfTrP)veTXRr4dADX&*Rik5wDR2OU>cjHlU5+p+9l;qL z7BaGfjd_P3p9hbEn>KY=?Xu<5mssK@u6f0q=knyFGxna)+vr7tXUpZw(G#WVSHM#y zj=Iboedj;OB*^sT$yJF2Y7nte4UtXdkeSN2KoqLi%Ly(yvV8$QkdwP_uv))!<;MfL zaYHBQnLBcdl}dw$ru1^Nje1KE6Oxzfy zkoDt0vl)%A*thCm0l%#o2&Ue9?vyNR;lS`8yzigr^rinppMjzIvMjIM6NQbAKAT|s zt;b;=kOCxrNRQ408<#ss^8XXqz=?T$KC0uUd5s2wzf~3a+2reBm{jplf5*z6oE6n? z#9Ar(FX9F3RdbvqI^m*cSiKnbtbFk*v;K1R&$nzi?U{U|u6wzB?$`BJ;Qx#38?tu|tvf$7JvUS(hB3#c7O ztYaUD;o>l3vhNQ;{nd=SrrrL)uxMMscO7}?%6w&qhXjEeIwHt*u`0g~BQo3_zyn*8 z0t&I=h29%;a(1S=v~=qa`NR7`6(2fk9J?gCmcc&$u^w?-DJ%^C@;PB&a5nc_2ZUQg zwG$ta;|v?EqN7l9(AI9brHNM#g6ezfjM%RK{x^OgtR{&{9KH4m=~ zBb&7$P^+$_HQPi4yHB~v#uik?LK76O;5}fO+EQP z8(5hp#J70@M~H#1tf-Wj_Tvpue|-gna2Rw;K0AGnxY^NcI@Nh0Zgee# zbx)iQ4jZ`ON?=shOJe9FUKP%fJf1zR;I*f17v|h7UL>o&qCa$fb`~z~#umDCM>K&b z+RUhg`JL|)%Rhe=gr}xN%_S#KfFDjpAgVGc&#OwCVjjZ`KbuX+P{u`)AGt!C0J07$ zV9tt{F0sM2^qsai+;d<98UEnn{)qbaG0nC$T&pV8f11`>4^X{R4cl`DxHQT%5hFQv zECWqo$b9yjv@y0R4m*yj!Zd6JnmbG75=KWx@U^N^G_cjAG`kJ!6<(Tt%50T~iRQ2Y z{1CO#aoRPo_PSs~QxUB(I)?F@CmG0&of{*(e$(1`$3kJK&@^N;zmCkKTAy zBMWf-#yL-D@dTup9^8Y32v_+*&Pa-7L(+mq6lsR6 zT3@Au*G?}T12Yb(9^-*SdT4juzU{OXU;t)+gR!LfkF7X@e8UX_B8&;kmxX8dQJz`N z_B)-tL}NI=>do4dWx=1A-t=s=-k}T^KP0LtzE*^k6$O)BTIz@<--dSq4+pMIv8H$S zuMLciGMI!Z0Y&&3)anmZYIL(yX#!ZL{|s@jjo-!`zIOX_Gr4=E-co-X8E=v#$D}l- z@(Jf|8{k4V{81Iqjlx?>1jeVAsAwwqX>_ZxtMqw&H9*hP)cNSnt7yTE@3cr$*HDf( zi>+YNuQgMC*baJ4c{87~JWKtg78XnU(l82K;an1RSwTs93W3OI8XP9@GrY zh$vZ}lv@I5(m%<$aVuh@7t4?vR}sLY8kq)+DJ%tqC2{vU@(B~j*M<>N4?#w zySbs+c+vSHW!X9vB4KeH!T^vg1&jdol_$tmS*{lqTZH`gpvsG)?-3TS9}y&~flPDV z5v$Widfl`Ucf4DH+GbW)U0*>xw>qg==;tMtGLW|<;;axHd>gU(Vg&YK&;@tK!u!Nt zw~sPjro{>Kc}w&?W~;V)Ji|qS`g0_Xhad>U_Gb=BLbgk~q$ z=xz61y>?TV_;nYIez8jskLWg$n_=AE)zo0M;Xi*&HRq2O)J!WQA4oGf_{tt-Z)3po zG9WCQDr(E*(JCg_VE|TMS7u|yR86geQj(N+@x%u?4rX9 zFH=d;X_%N470{u4zlOTcL-_^Xy+b#1ts#-X4fP6ursyoF)xtZ z_{kHlf0bI^R1@iD_Sau9R&&|-)PF=vyC!mjjCuFOM0~M$LX&`$OK5uWs*` zh>U*^A#<0FzpPILK}TZi2v(S#p3MOWYENAB>BcV$qE!ZCgZW zut?YG3zutMAT#69sE@MzTouOw-(-`kF`*rEGeZid|5MY4mZf(wlXk;uyUz~aQds9|i7 zaLaGsy#v)QZ&cN!+D7L*wMZV>BR&OV%{n(_xBhOmds1=|?J*|)$qh$;!Efk%pxYMy zsi!4lt9^2|#!Tb^7OF+|y)UESJ<3-dkA-QUIvET>tRpQ~prIcR4GphVQ*4N*M&_1L zy|+yvP~6A^zH7>K*GeAJ0<)Hlqf}oYvT@Ma$Gr7;1fV~Rs_Sb%gr|7}{@aR&`pXwM zMGVx$@arN_pPmxyz2bwy(_=FmY(v@|?o z5Mz8adNkQ+WvM?W@u>?+38tSGAU2IG=0czhtZJ>7IMKD!7(8`cQh?WvQTr{b*v136>6Ov8)wKDju4e5=y+|pcUS-~$&`%?+Px)RH zB&l1EN*7m@mRRT^P6$uI$Sk(vWy%SD!l;>G)K6ex)rFgSHEIFHqjTj@>C3loQ)lDW z|3Kk0Jn$iCQ)?lC7WXFPV?ZZx#c0y(E!%PhJiyEALIu=L#xOstSM5y zg(4f&nY{_WN(jz_QXZ?fYc;snTtldxV&lg6V6%Y2v!2&EAUD;opx@T7b_i^)c;(5~ z=P3(?NAWG8Gqc$CxA*MmTK!@45Wn#$NP3E-0OnzZ($d^QUNayPv(z1?yM>qP)QuVa z9vTWU20sDlVF?Ul_>k)j44o#S);Nmw{@V7P+D=AagoAml%M*$!Afs>WK3??^X>sTt zO_sC~39sR&l5d(mKLWzuq-`!ok{)mfRBA{+PP&swE%Bvi z-IJ5k`f@8fLBoXpuBECD2VRXz;rhyGmWUxvR3FPthg<~T7zO@9=HO&MuklK})1c{y zxhLpITB9^@AF3}M=_GO_MjQNI2sdrcqd8q?p9eV$V_qn>Goif< z#zKd`r~9e+4E)pS$CNF)gn^^CzGA@6I#s8wEv@YFA;$vru5csC+>!FLFZ|xZXcqPJ zevhsfgL6#~2@H&i?jGFIP&~=u z^FBbvEQV7XoQ@`WDT+;zLb$Qu3NPIsxJ|U(Jtwq$#4t38 zEp`sx)(N;FS(Fd1P1%3sn79#~9um*Jbelp1LtfyItZv`fnb>`jJLT%%ui2(^nUIoO z_h;9k?YrhW*vc_n;5PX3(s+)jN$K=;QQdq$Ru=UToc)hug8+?{r~?2?x*{bJ$k_C2)DPwb zx1aKnvFOJ5iva{S`*dZ=?tB~a!1gzZ4$zuVkCIL{9Qz((2i3+g(Fj}em-=sH4Z?bW znFAi;t2euwAKJC*R9`FR?T{Ur)~S+YNNF`-v4QbT{K5o)A0qY>Jw;VAc0bVFn(X#{ zipOKpRQ_|JxVAQ-8WNq3N9?i=Uj$IG_O&bEuqX}DXj|hK`Pe~%$OYe-s%RP_T}Gtb zMWyg(p1MHKM(b_NGeXD6!6dzq^Q#Ag@d6?RcP|b3)vpoK0`R1Dsg!PN>hPxAb~$)^ zEtw1@ErE_|!C#f=B$wYSN7)Zrf8# z-8DqSrjDc|JKEFD&MmDE(2~d=MrpW&Rrvw=vF{YBfAffkF!@<)pmfT~bVN&GvD|36 z>GTLl!VmdBuij6(X@WC0xa+UbHo$+co7O*D%jf1s885E*WIg`urw$+wLZ|tcaR{YKc1lZ}+Q$X~B69?$Mj;tiaFm?%i3PHn&U(2Pvzy)}A zd57*~d-1M+XoA=pIq<}7MbV{oe%t<`6m(wFH|2@YLimJ?3)UG!$tr;}za{MesrmXo z91czLiyx3gWqrRx^~UqS0q90$?DQRn)sZM&pT-8APk(mrQ<<)9Nly z=lwNDqa`y}BdVlF#2?E3dIaQ{)e~Qp+vtYdSSxwJ6hS-yfEr3(*6~-TC!ByWy{-3Y z&3W8Y1Bko?l2#4F+&%36Fr}K_7ju|D5YzNCzA<-&5p5=@Y9F(?FiQ-MJ+z(6e@ zu=aBPK05kIU1f{~t2o&Dn5?YfbrFbKJS9fo*fsjK1cb?FSEw26QD1wyPMt1c#PfM2 zwb&q-!ei*oJS9Ior&v4>IQUDNk$1+0H}x36p*V_Ucx{LH@9y$`^%|ud$%nyw>pg6w z=`H{EPnzYe7d`n0`@aG6@l6@);}-j6uQpf$$V97|^3Cu3dEjWpQ|KJsCzwj1BsG4^_$QOd7&Zv+jp?#?_->e3Ed7gI zxNhucvyFbVV25rStF;SL?P-5Y+X6d5@_t>bUa?+2J_o)aWh4zjs9A_(?#*Ysu0j}S zy6x-R=c&4Fnl6%iWA(WioXX(_eFt&B<>N_JDqY5|7)=#+bt1fU`O?OHC@am9 zq6N1{6p^%>zN034bROs$MCTm`6YqXpYAWUom+pkb*K?sMdUd#=sjDT*>d?USas}Z2 z`z;l}gC8<>X4OoI+wp32It;|jdJA*ia5C#N0rK^V>>c}bEyCPOJz^gw3rZ29SiH%g z(|ho6caMY*^}!58Z7Kd;!Tx+dKhi(ElTI=`@(b1d`ASq`~`1(n1h zV@LzuE|ThdCYbK=&|h`q-+KWd(%4Y<5pR=Ng7=%$Y9Z>3J_hc0$?2Cp3C>1fD_dap z<#oVekmO3ogx56yj}pAY6=nuv=0EB1xYz|@#k>Si>)O{pw7FEh?$eG=6*jr(qeTFh z^c-#eC(!c*qAD}Cypc)vsYcc;xfXdVaX`7;@8Q@EKD*_|mY;q#6R7&bA@<^+C~8y0 ziseU@!AZTGbw+4TZb#Nn&#EI*+B?H7>7#HwanPDVoZDc`LXOZ zL3^Sbm+{>VHQ6d;lK=9&-K}{M#=x19(ni%SbfyS2Xvtgr8SlPg2;>9nj4?yCq1i{j zR(Ocdo}#;Lze3~v_h;1Rvv%5)6M~ULc(o4~{oRM?yl`%!ml15$h`YpwoOuGXj$5$j zH$}_<8zIs{a;$_!VPR~jQ^+enba{XEz4^CPyH_lZe&X*9cgIvE z%ZB{T3Hda*F#%Zv6_~ESixnh8Kf~SA!Ey%W)SfoMNnNLz&leRCY8$5RWZFbqR|D?q zdpWV#m2qa9GqnE)ECu%pLCkM*@*Fqss0CL zB-Q9$*974iANBY6CbU5b6um%v=sd$rP$Jl0AQannWe3Lnk7PEA{>w}w5~?2t5B)&s zy*&B>cPY^~h(|W+9SpdiXM6AynIHVT6JnzjGnU1iBoSq_MC-7tZq)SPiaTJ@l6j^f zCz^wmtPaSr3%jIB2Slarz-nmcdCBCU~|#|+WIl&hVo|rRayNoT*E!QO678^5$JEQD&*DA zd!_;BKlrE3YfaUxFG>=)>M}z0;~NDdY@VI}Ko+m3%u}Og_1pPD6FLPXRo4wlW@~#o?6mXIToUW(1(}yDTLiwRVYK;W?QbSEgIW5| zhnXtC*m$!>TjisX_!cSh^@qnon1-W6W6Be3YiYW7b~C$45ytHW#vn^#uf_=u^mnB& z_;FOECP8V^EUukmQ~Q|1tf;2wjL0op^|B-AuTIrHx4rbU-!T2K%kyN(7g6UI(2(=8 zS~(?Jv&RA)&Q>EkU)`zkq$UFA9X?=FrRu}*n zDQdAbx!Q3(@maBcP5bre#sjMvs)a&pqFe~3GqTO$qiy-?(qXg)^7wiKeU!rP^=T9} zMqHc}e+xH+7T-dCY|FWG1HMK<56DYyf-%6AE@e|rc{hrFL@w~~Z_PtmHrZKRG#a%t zeg|HS6vi-=%^7K4a46wDAjIEPZDTfoo_E%NOh#7yO2$fv&m+T+6Mi*du3lx6BUdl3 z^LeY!fwH!!?w-tog^DERka|vgdSfA!!#m+-r?VS2v7r6#(9cmF@11~%-hP_hqhwAH zqn}E){P4C}ksIh~AC*=4itRC&N)ix_*tarGBpn8aN6o*=26CfqRWcFPl>eOg$vSQ6 z$ap_{3fNDGo^z9V5-XP{U^ZJX1oxQ$na zFTme?_jrAGG~noW{_)P586)lAO$%z2x65;7qWaLdUYs#~Ay={}z!tu(9@~f>#i3iH z2})zr$ClyT0pTqKCtUttKly2RR?NKle_^n2n}XQUR%%1+(}WM*1A_sf#aZ?2)uK=E zAK&Xe`7u^I5Xa>#oh#R5qcq=}A)OKWT;#!#95X2t2Zb^^Zq%MU1Ae_lTdQst4E<{y z(UxdaEHXZ8h3;S>zQ~q+WP>ZP6IOa;zXlo`n>^yAqpDFM7gO0#<5%6Mgf>q2-}5tM z?356%44!Z>#2tY}&aU+z-J;hMAziPGt)@#hpZy5!5X|~F6 zxbvDEG2#L#{;H~=x_O56FkYIDE%XnL9*YM4@hPsgKaM0%l!mOoPgzL}(s?Z*)eSt; z$ljnGa6c9-t0ZZnoqti0{mZrX{BOad77$fBua+nsGygqE53)q~Ze3cror$WxyaEw)wShVr-hY039% z^2Ps~7b;>Wc<2C_ezFx`rgs_5LE+=ssgL}*be1^=e=5Zcezmk4tvMyXjXqiyvbuwG zf%P(#ctJBli!Bcy#=Ohj0*d+w%X&Qu8*VK85r5k~ylb9`uYbd)z;3HSu}wLjM4Lkl zwPG?epKO+5(FtrH&>#BqyQUZ^wGrtmRGN0dmCtOTez^rJHpK9!wz zC@w)mV8-EPL>Lhi>XP7AHkpN`7VCztr15ofalCqsfSmCP<%jtOXVSM)dY+ z@?hdAqrh^@@~WwSF=!99F{|?@%IQ);M9@YYi&&G5x|G?x^~(201d@8}MDri;xd7$S zz>-Z$%a~#F4%E;qZnWZ7ayWvbwR`C0N-!mv)M3MWGN>LX!xeX3wtn@qZnd~3vliJN zAt^0ueiQ)k!^OsyBrpC7qb!ra1Ij0FT9+ou2uRspd4?J!#%e!w$mZh)c5Q5B#!AvF{J&6@TbFb}^FcY0^m6{>FM4 zXBj=-rwVodZ)I*T-OMyA8cw`0#*FyG&?*92tI( zj3Rmi8k(CM^nR;OsYCCIzi;xYGI?Ueq;@07PCDvWS#5TPH^A<{GRj`CT~{sU4&}3} zK+TI5`$pR7cowyC50fx@lS~0syW|_$Q|$f|oY&lil)Gs_w;vefQAyv6qHa@7x& zF~Kzz`Y<|EFR^5!On}($8nimT7%pM*Ca$q&DV>JL^ypvi3Yuv&)L`PNU9^n^GBN({ zG>ReSuU6Evl+W*E#%QjUd|Dq2d^)i~4BM(h=V;+6!5Ge+7y3cp7`@6HBor7AlOglu z%&T`AwO;Jzg^gdQPt^(GU*sPxj3u=_=LEEzV*5XRlW#MF*>2$5Uk(|`(c5xWBwC>9 z0X?M=a}cieHc>2nH)E-#tW~jqz^n zLHfO!%Ll=_?nJdJM$V?1=3^&GBkpg#*i*-qag>Dz2T10b;79B0i_*8Qq9=_o@K+yh z!XG{DlbZ7`E78rVCbL)*u4dwXVrN04(ewnpAvSsI?3{DvTc7*WJ}t1;v-wkP6k@|M)l>*am;>c6kg zUH!V;J2#g2%dt*#VM%Vn=C2w|3TY`4+cYLNR{dZEChPCck;1OlqmNZPDdax|%Of*n zN{F|iL`v+$Y66dR!5Z3!QiJ^J*wWrcGotYcSr^^U*Ge_#h@PY5y9 zHLCRb`@g1?Y-=LB^=rB^%nN@+sLK5<#3@mq zi0sE$(q!;FG(8$*Y`J`;m}uTT_5gQ-3q*4sZLIocBz;M;xth;PMQLP~^7R~xOW>`7 z$jnA$jBY=3j``FMGvN~_rigxjpoC*EG5{&CB`~kWaEtoh##q60@9X3!pQnA0a@`>L z`{w?dOtjIE9(RuedLkbIOfFuqg90Jt*dKLUlqZH~g5wt`Gmr|o~Z>)xiZNf2GW z{Y~1%g?~;Gf@bhlnuZ%3@?V?{1?AB%eGg|ZDMnj_`V49AB4w&CGka>)fyiGA?rrao zA>2^d{L{Iy6pd%%D(+tpyXJ$R4mIk8DwlL|S@!HL5fqI(_&3{|Ie zg$HMrze46L(Q9v`6%qs|<-f9bUD*PN6^DmEK9+t3cg34wP2Q*=Q)6i$1MR%T=Hwhd zcDAN#0lKToF4utT07_>0n{%Aoj0DA4f0vxdLBghU8Gb2ZJ_c-}5MTeroAI@})W3_6 zgJv4uT}_U`1o>Bl=e?hwe;S2)!76X>D-%c&7Hne)fffH9TmJs6u(-VRqowtx^a+I z#aIRmT9kIoyhELWTqT&ifUw~R3>s-DfgdEojym`(#3%8etkf#Hk59F>7w~yi^Khlj z&xl>6N+U_D;r>Oc|4V2`Mi;=p&XRJ-!sSw4BbBD z5)T+~0m|{@1vJ`BjhEadqWrj{en~qP`h<=Mi_n zLXXwJO^nj%tGf|Kf(|~{FZp*aOZw5Vlad3@uY{hh7-aEs9#Fr<_(qv39qO9VX#;hP zywJTaZ4r_0Ij^;j6t{EGP70dDPJEywbu?FT&mXe%XO6 zU#MC>1NiG8zWt{(JbXEB_QJ#;_5H)B)=RJp9a!@>H;sih)5kVSxXP2ISbfp+Zbkcv zj>PwJr%58GBcjiYUMWZluVT@>SHmCOTJO+Mvn>dWa2p%M2mW&Ml1aVm5mAHIk6$?2 ztbQlpPoMvQ=YWZ(=T=iu`v+lq@?KqwP^p7^|HQvz<@$C{KAy%uVM291tK1l&*S%-+_c0-fqPsS=+4KI#5Z!IHq} zf=X$h{+rU$4o}oK)2-G&@q1@xdb6;&YU3eA8DBBtV{Cz9*<^OIE?G6){PPV%b>`(( z2i9WAGtJ|x%d4xWlhMDP1Tl!k2Hr2Mn2MeJ@8a>=mhHe*V}*taeq({_;=rl?S2^#+ zG5MtGMm)j|bvPDUx$5rGwMid8_P(SRjRnNOLL_ZOZD-dF$|{bWF$jkt$h2Xk+HN!x$&!_9$^?@0IWZkot%Szx9{PTWtWo;j+GFd7pQn4Fuu| z$cZHAEFWQ)P%2e$7n5=YiNt^B-xo|4jgrkVnPAC8T(JN5HZX+MkmPXEKqD~9SE zoaYZUnTQqca}q1tRpQwDW%L;Hpn+_n%whyPIszInsv`DL5*k7_v;Rd08ThY~s?L^o z0VWAG+N6B;l1=3Iz!H~uEJ#quvvNt2@6VUCpTwh^4(|+#pA_p+~Jb+^7Ws~x!<@AEE(QO`p$4}h$~af_FtL!XMU^DUu>>b#L}9ftYx`f z$JRzaKDvrJb4m@5rs}o{`OTJAQlPG@N#j%T+*u=_DO4r8ec7HR?BIgeXMwu09D@M79@waWwr+ zs9G@})qP7--t7FG67nvIg{g>6&TJNSrT-=h4WRAO8xg2I<(>TVQ5Pz9xwgR_Z}zcr zZNh#b^1b5)euKVrdO+V)_-c3|J3P=T&*EFIHY-^v?f2`cfF9tx8PUTf*jsLwyDS#M zESve~57iglYd_n1e3 zIvn)VeOGlf(l)aOPth07LG@KWm-{K*z+%F~R^BSvDu)eS2VtzgqKCmRT=v9ku@&9V zpA>#2Rw+XF9FaniQ<5nz7s$e`2IFFUU#b7i zP>gEiL-L5h0kHrowplG8@u-gG`ITDT9p#)KnK1f*`IH%IL%fuJP`2-ydT|HM!OU$Z z=`Ez#5PG-;7clYT4@HpIW?%w)l(H6?GG7|^yMom(;z^)5!O2DrxU|9mS2sa>PL8#! z4=67pCn$bKyDgAnrqZi0MrW4N%ltfpiz}*|M79O-fPCap`bDsc`w_C z@c1D1_txfb8^M>%)3E0fMj0KHsuF6B^sx zWi~7dH~EtXayK%b&#Jqbc}j2ZLD+Xw}Rhw3w zQl$tytobpAAJgoG;lynoAG>r%9J8yRv#0gH>Li{>rSQ=T{j%s+FM|uSLQRz2UtuJZ z_@zfz`4h%}XDp|Et+IJ&xqj`-g4|=eR{B1p z@Nvn{t`6+1Llb*0a%4^-obP(k%pU7d&KbV%Ha_=@BBQn1ICtzdf}qbqy=hri{!hW|1s7ZM3d#el~9K!hm4e1 zf&QwaPxfBG^8ovrA_~=$vk9`uP>Aq;p7_Q9@L9*pJe4j{sZM!_!JjeC5bQiB;YyOs zHqKV+Hi2wt%mgRCsb8OR&!MV6wlhphazI^RjNiP9aL0dv;v8UmL)&aN-=QKCPN(W1%|T50i@W~F&&M@BROjQc-mEfX&SMN* zdcJ*k@e9Of(4Ee;DFpdLv^pnrM=%F2=xGqmVREU~a+tck=0t7u3CCz~LP7H~>T%EF zWwM^#h%vJQ26=Wen?A}Eso>D4^_(Bgjs{XJWx+?UE|f&4u7QY>x7eeK$Be^q>~|gx z2Yy8+1byZ5+t^t=?qe1*=2s`xxX84WbS8*^s%4pe@QVBv5ROm!GMrI)l4m#yXtkaW z-t>V!)G~aSsnDL@_qHHkMVYT&l(xe)KR?U&@xN-GpOS&5pFNR@@F@EDwvbv zcmuCtb+9NaffsUFUoQ#=ZN%~B;M@8TPtt38A*QF9i-_vGJ*mXMw5vz2YvT;=H^51y ziz%#xO3SV{6ufHig@?lcWPhEmbZcaUbIRGd?c;U@B?|bxw7E<(Moq8qBrI_Bna}?K zbwG;0O6!x1gFQ7DzN+h_PTXv>8nzGVlLg5lsi9PzEcQfd zVk;F4;bk}l;7BDC@IldBQ#)Cqn`KRS66#(Lx>$ik=m4cCmP06c7R!LZG7b z`MKq7k|XXelLGj9c8t+_5Do{cYev7m!$dDsptwd%M5#%SxCQ?QHW)}=)kP>k zG-+333QG@L5R}hXwn>fpOP`QCu)|skn*R6~Q&v$!bN7hc?=m8`2u%30I7E)_t1=Fp zwT25}pJq6_SSn(=*#xm5tLVHfR8Q1%a`Q`+-g`7jL9jA?QD@`||4?&{w`32B!u3R5 z4b*=SI}$X&SkRm|!ndL)>QbP7RYWD(vNir{(b8ok_Gv~06i`1a>H!R5RncV`#WCQS z4mWdWhE!xRI95&tb&aJh)OiPjI-78SNJxNZGtOr^1mLeSbxOz<*)9j+Vwn0YlN?V2 z^;2T?g&YEsLy#JjNF>mOna`(y2n`r2wfl<8jh|(1iqz^arGfb-%%n~tyrNYM>i0UT zd{^b_TGo|rKpQV*PgKgdKPGaunVtbx(ROh)!`AP06f(Am5PhN4fc{Gcly;Ly1K_k6QvaPHl?>qKOm!Z`-Fo138IUT0o-T8B*hjAn+E=K# zS!Orj`;4hxoGIir4#1;*-ehl4Wn>g!{O7p99mcO`i=i8JKA>3x2Xh@wK%LuOoqvrEJ@iGmGV*~URc^B^y-Xd%b3H-#zV=z<2`^@( zX`azsKC)(L38L|c8Dr#KjL6MMVfZLqFeSy|=)>BM?Y-TMmdwcWAWeW@)9R^*Vn-%p zcL02BDskd476tj52)A_^WqYp#z|k-kb*aA~PAmok1tIXt7Vv@yn5Jeo=IWHK30VO- z%BiUWdR}(I8PYsJ6{w5^BSenIvChNUX&GULp|ceYzQyyKV>Z9UIH+|};!_XXH{i7+ z{fpa!xkl&E#L(QLNT-FI(1Md^1K5>j@MDA*k<>hj#NWV3Uw20 zll?To!eo1uW6#`ldEtDV{gzmDp{YgdX(!dGt|gH@jLcmxU7#D*i%Z&b#lIkx?HCH# z!x+#_*=eC*6+8fbSpvREcG>ZMZU`LkV$K2Zf_ZfzKpt!MUgrL`$TQ!`vJ-!Q9P*hs zD>FMHsPQR^Vk)f;0Qu(3ep)A+}XfZ(Nh7R2m6b=lg z#i6v`ObaG)v-IxF3p?@BN!r%?`RVk^Xl_${yr^-})0@je&x!8Vyit4y9Ghw@>qi zKvvh`>lQ_0a0?N2^8IUZc2g$NM=94+9Y_^iEAJf)t(WI$rHZ?ykty15PTjGtsSR z5-N%gz1BTRosq{G0E%03Xbuc)X$#wvRFeN2G94GB>IN598m>9~&gnGPyg9o?9lk`8 z&T|~X7=YE8aok}+(liFE_FT*HkPZWQt5~z3SX;rb*0it3sK6l|er1DbR^a`i1E_IA z$3#*mG0=`oMLpi5OJksSF$`EDcSDBdbcFDoc)+dnqC1>YV9xD}yrG_lZ@i;PJG6pwu+}oLHd> zy3VO#Ih?sFV(Qm3iw>oyG{}}<2E*0E8Lkqkx8w%JTC)ritzqeCW3I#4+DS-Lw!;|> z*pYb;C0Z&@Cvgv-PA75i&n`8#S7=j0k6`TT6;il1JB#m;1fwTavsUE@=B8)|>f_=~ zg_~5Vs2AU|RhFP)}3brkdc^yI(_vE~*&FCd{#u8QV7KP}q7aQrkC zfTKHn)$fRR73`0v0x*{`fLo^JCn=k~nP&15U3GRwa&CtK+?*RkZjFegY~@fN&UO;Q z#Z?J4tYcm(^=hKk()6@=N9x1b z$N0ik;FQ#9#s)l_d*(A7y-Y!m=?JX;Ud&nH{n2x#C(>NaL~9)At<&Q3yv^DSf>kv@ z6{u_{!b@AA@yircv%FBu11&`WC|h`T)A5*&VD&CB2cTxN(WryE!g8p`c4Vvk@-$g-M!4Gx)* z<;n~58L^_=>Tfd~Kuit!x23CllDa)JZAY0!V^A6=%dvGqM}d8HrVvhBVscI1N>dQz*!`2^J1UG<}HN`+_xOQSkZDD<`8{B%C;7vef9uY_{>%GinZOgneGrK&EQm84|%X%;4 zSMJMBoKts|ECBKq&29A*45{D7*^`;|6EwmVxj|igN*~ z!&-ku46SB^VWjMZ3_9T|?W9~K8kS(GCC!2qV^^QfyaXJr3Z@3YFj}=!;^}yMo(y5F ztC~{)(@_Z)i+15s*S=n$kIKJ7BYyHGl~lt>>LXdL3SZ}uxEdCMJ|NZ>!lw`Wq0-ZN z5B^jTfMy${a3u}>vvmN=NWk_?eQEeSPhsG$DqnM1fbD39ohH_o!v`x<3*b8B>PoS^ z60G2*B2Y7-)dp!>ve7FP792^d$DMIeP~Ac5$Hcx(u!5M9>N}#qdnHmEuF{+VVnEG} z1PwaUYk6A^D(h;R45uWUK|Pi6EYD=rHC{sAmkh6*IxevEL`{~EQ?7E9KAGu-#IJIs z=4xR_CF~;6vIP6WDXFJ*1VP(!8JpGk3A5t4O4w&Jj-{q|H=zlRD=?nPkh*|GHJb)as!Qoz zE$z6gl^I*re%m2s>oP`J|4x33eK^0QocHLl(5z{ySIaw0z-L5MLlS`C60KIn)t8nt zCg3~LLkzPKI}I??42$MQ?apREzn*)fkc8hDGe8=sxrXp6##<4n^h+Fv8&ZgX2M#uX z>jtdqXt9_~#NK)&HWh$X9m0B#D6CCb2pwg)D1~Iq{=b}@`x{4VHpw7dWav|%u zbCG`k3`6NI$yhUswdwcIbSUc?xh7-l(HM!=3FB>hkylUL)Cw=esl(yZX8 z#k&fp4O7=L!+1d&LA_B7gMz`>ewTHuELKUINg{QEx;wM)6zx@~Ts@~lu9k=nJAC3O zCG{MJ)YmeT*U<}=Q8f%jkhL|$yH7w3_3F1pVGW<-O7&`Whqby^Oaz17 zfK;qjGa5jK^*Yh61OwNp25{d`oyRYVpkbFWMP0+7(iYBDIWO4S<4L)?hT$shwp=Y% zErOMsl&c)*>(Z`nx*^vO^pH#x6b*5wplcaW3fS%tjaATPPUU|sb5q3APiCA|dp9V( zsf!p3cn{7#nwbiLLv1GGEtdsc(&4Pm%M`6z>zApdUfMCiyFN2$L-VGPe~Pl0fc;X& zSU)AVE}KLcbs(BFb9G-(s)c??%q=`+6$;1&o3gI!h}PDNRyACXN$-Chb5*q4bD5a1 z1baOFK!1|^HI(6Y=v1%or^fpqidj(Dx=#m~*D-~_cgWu#ZLy{5&wW1G)Jw$TO0dN! zeSS|unbkOn)CuZKQWBItAd_0EbsZ(UlQQnF{lZ&H>Sc_j`j5;LcTEIDKOj<;s{&ls zQ3cp2mMlrAsJ7yLt+|>thx)wS3~b)0hYh4(@cRF)U2DuP0je?(svPE1@1glnM2<_4WuXcmRpA zb_EI5l+|0Pw(^+l_O5OSL@VoKam9cfXwQEGcvlL)e0R)R4N#%e*82R|tr{`8?OAOM zfLE@eK47XBN)p0Sy+mz3HwN;{Z;3dTQd%l?IeLa`c7d)-cTI;y}J)D-~MJ$N@!xTjxG&q09YUB(bbR zI+Vm^kN<4}6ZrqsuhzIScMOIa&eeHGzz6;hs;hk}w^b{b2Gq*=5g%~S%fmj^%fS8L z$Gc9BpR+FVFnG2lN z|AMnpG{aTY0{D0c>#tt{m=Pz66Z8|htx~ggsAzFoz~^5PNZ0%;&4YVXetW6528vey z#hev~UCTP1fSsfFzZD$RBT-Cr<|au?b}8@BL2U(h>WK)0#WBOmT)fr1N>kL!;mSa2 z@f>$~Mp+ zefA z--z}c(0papDnnMPmq6-!fmT_$zb1bFI$?oVmqxI7>jI;tCJVgNZ=#xEvE;d zaJ$s&z*5x%SVIE~zwwqmtLuScJtpA{o>_9C(`2X=ZV-tJN!`bq@;7}qVTJCw#r?IySM;l>(I;E78SNp+De|NSCdVJeb^73EH!X-@hWEP12Ux(F)+z5=%yxI==y{ z79#yYd$e%*Y`JKuFheO^Y4;Ui0~dh}d|^WR87-4o znzogKxWuc7Y=D;fCkbsmH?vn#wHNa$=|yA%J`}hCpJne#0nFlAD1@)c&?wXogAGtC zcn@{h8|fM;=5#_EQ^u6`iqTDGaw7eyPwhGuA~k7>~| z60l47BkQdi$TqnNEcNJwPpWee6H(cU2dYxE)SCn5ngfD77NdPuH-p?t9q}y20QN(Z zma65U8)@3!D+RHo`pKp9BIaty31#xnyuez~5RwT-RlA))=uru0F>2LTGV5~w;sv5G=vMIky3##V z0muWWB?Qu1Xo<#s?E-K0$b@F>GAC8sV7&?{>SwkKeE(CtqoFf_l_cvVU`aC+Ti*s& zszr;>(}-1K747z4G+l|3OG`kjJTKwHo?IFzmjtMr*qMQVZ3zTyIWqubWQIv08>4}uIS;t)A2-?2QK2CN>9`-nfAva3qJ;Y%Z!-1a+StK_YAssNj^DssA1KVIW#K%Z|r?W{J&5H_Rg!nDh(DAU(cyXvNdRN1osLhq`_jI|eFH#jOyxb3DI zz)u9)XSF+!Tsb460S3K%*iwCG?fsFA%@AT_k7_qiR$6oUP^1(%s02;>e$4}|rb4|Y zk<-3kJN&(d3iX>LPWygkp`RN`*$rsy_Nk&<^+tv=2gp^st9Jxqz@5}wOZ+R9Rryy7 zTZP{Nmg@R1Q;4MxhG0vbpOvzjHbugf0WHcN6%u+r1Fl-=vb|MzfLo;&@Jw1>@q3O; zld8PdH?s25h{HN<1Jqsl$A|?Ov|VCL^?7k+B)2r|lWWIvd=f~ln6d_xdpxT9Q^0A} zKR&tEu)0NQVige!#_@U~9GTcvA#vJt#7IQ$!B*8*vv1vFaq=DoarzTEDBk z+~shJ)~A8wRU&zJEGa5aK_?oeZR1NmJP+q?AXyd7M`>78JDs3+ShTn=`ROwUl3(#G zCA)2QkF74d;gZ>Mbt9I@7Q2=KO{XyFtZ2r|?Qg{%pm8-ox`D;Vnj)6Jl6EYL(agld zQ zPoKRk85xGzGE8ZJOOJ5twpo>DT6iZsbP;hZzqR{W4hcsoZBDw{pPu z;_D0jT*LVz(bU~~nq*aWs76?I-Ht|n9qa{v1FTqGSKfrpqw;wxKEwoT_;x7`iagBS zb0pZ}?tH=L4g`;H@_V9v7<}XfUh=)bxlpD25vuMxjpFn=H%%Kjy>A8tf0$m2PLEKQ z+@#)&s^JvBZ!PpAR_B5>Q~p0R|E{XDmh3~>Rn^FIdAK(t-v(x6tw_F;R`=Bnkhj-r z$2))6^FI&dj!$oq@%%t}*G3E90p_%f)C`>~E52+d7rIH?(R%x%`!4X{)CIVR`G#sj zDybW`B7QUv_VD1k`@o%0d%A`CEV5W-XDgi^RgUfpBqLr;6`R+n&&J|N=tc$~vH)tE z;kX|t_w#w;)G&T+EQ+LFw!qt!j{&4MY`#BG<-Cwe^;mRvsr$e~pi2b^TDz_Lzy>Jz zr?;F#9&y2+SBW`+I;Z0U)- z8aX?A9rT+QIXtI_0tWG2^ql0~D}AIb)Sa;yoqH=mTNKMiB`%>9~qYYXAb0!4a*d{dE2S0*yM;qwjXSPz9~KmOpAQEY^;Q6 z1+psp!D$ujwEEaV0Z9^=l*L4$=domT-%hO6+OZV+P{#-K{Z%Aj??-DmvO||ol&VK{ z2Tj3guwFNc$}DrlO?)_TR@YGdr^B-qk)tgj(OEqVw)OQ1ZT~t;vPk7f?o|PM;G?CU z%u=SVaG*kqMvtwlrb^u;Qol^yZTa*{>k-QMtS4?j^j)c+l8Rp?37evwDD;Aa%vNZ7 zv)YNDUF8`P`UubfZ-`(LHM84^7c7Z3Jhko-u&J+2Vi>iC z$Xv5Raotn80dvE;HHu63_#Q`)rOt)EZGq2^A5*iYNnOXQ+=laPr5*rbi{1b}W?6Nh zC_(Lh2z$RFsp}blwD12a`daLE-NB1>Ads=VluFfhT1D%6NRf5Tb%2CD#eN!4 zgL{~Ab>+>nklk$+MP}FfSiouF=zL8|7p{ihw5a*TV}U}&tq0ESQ+Getr6zW% zx6$u+)Ww!RVy~rME|ohp9sOV+wSRV`U^nO}U^7<-K|X9-wA$m7Kdsb5U;`9AaY;mF zXO$!aSLaO!dFoF9Z*Xgb`#9zlTW|15ume}}8joTB+8uZ*@U|8suR!YKnJRAWt!Wk3 zQ^0lK#oM5c(eyUW_;euAww`W)$I`Pxe+d-UCYBXip0S{wyD};>6uUnIuGKCP`a^03 zG}9*Wm5VYF@#h(!0`#?BK)sess%4$NfC{!1`W0B}Iu81Cz@$uj)k>I|!~WVx>ZT;t z3}16?RjqRdx(c!Mehtp*&0Mj%VoM1F+YLKO8^w~naPRQYox)M2xmRFM#ATTK+YF5Zcujs9N0|L^Vh?}+%pq5!q6RF_pFsL>;TwB(+qP&Z930byYz z_h+Vj&sPF}_`hQ?m;ndWnnEOXkvG^fd|m5i|7n7?_W3l0p-j!?N%4pS_U8!>-!7*@ zYv&7e;$x;T(0U%&0OfC75<}n(m}T<~IA&T=>H_Qcp ziy=J#y1|otxcGi#Vm;Vhyrey57}|aKi=>Y?=4ZAcp_43JmRt(@k|UNHR5L0SojVXb zerKB_Io;X3Z1FeM*kof6LVqES0vF<*NPp-tz|p=lBvnz@o9R3A5!Uvd9R<$pyNqaH zkr+(q{EF?2G)5S)V&^xkKd%=YzPEmS_)hA^xQPy}WQ!#7E&@fv7bMo~-YCEAjbtBc zi8(X{Ss+{fLa?!mtU;9RjbJzSXrL80#o(fH2O5dFBvI5t2G<`Y)Xg=Ll3`vpbvIF{ zzOL)2(bdlvP21M82~_BOPjBa~495gE`>u`#?@C(`{2N7D`t1hnNgWgTezK{~io2FW za$E)SWS+Iq<;N;9Vk+BPH7J{L3^0mX-93x?8(Q72Rl`bByQNb7sPn8S{CM8S#^O6v z>dS#WD6d;rumKId#d{38ReXM*6 zx6P0IWr8bEYsu?((-KRGVifBSTR9@BnNQ9^I3?tziH$lVLi5=WPJREi1T!d>{o4d*9j>DGuW)01 zwPu*N)kLYEl;6HWHGup{wFW6#HANYMW5Eqr%2o@;R^6r_eQ5A_|zV&u8~yjZFL&6tD`v=Cf(;sfyuKt*F zcuZZ_?&?ag0m>GBJv}RrZ*DhWCD?$wd6Q(rEwyL05?p|o)Df@L?&?agtIAYqWA%(d z=h11qs@>gAr!l+N$<6NS0#K~~7b$7ZdV^#-j65wHgq&Uo*z4OONpjKFr7P^Awu?z1 zwAexoiQ!K= zABm!HH0vy}ig*@jg|6yx0WbI_`T!J%E765sD}-)44(O^|S-%C)9_ zdpN7BjtB0__81!3^;@XKT31~Q%Y?@V!XQr9pH+0l4iqh%6L37ZRy!DQwhu03m6Ew@ zJuqq?u&)XP>~ElUWym47s(KYTsRtOz!_ragNv#5xN?SRc6SFFVwhc_`U|6O|y_Q-P zA1T5%U@r9;KGknr(Viw$i!is+^s-lQu?BEez^!17yv98s?5>^wr0!u-L7N7fTgt&z zU1A=9Y2|0XKM$;w_nhUSa~=P`xYZYo;pqY<3c2;Izt`ecOXQ}C5HD$QQi3Mhd6u~D%j>J*bY z|9;mbK0?+XrtIxm)xfRzLZl~>tFDxCO3HIC5xBVqYgPQf{K8%9;7qAArfCo5Sc*JzKD_s-#{tZ;7&mNs7b$@hP zpwAy>QvK}WCCm#NF8_b;V^)w*$&X{g>EuGWc zjU!J{;pQ}OSTU)tNljiTz*(*WM;cj5QHZij!2Vv`cD^DwpW{@8NvB*<+pcO3i)6 z@&^o}Z=SpU001A02m}BC000301^_}s0surXtXx^FUR4$TK@;PYIK@Q4IP_j9qUP** z?~^zX94Kg|Exle^91u|qN>N59#HuJNpb}AOL6HigU_c=nf-#~%G%+#p0irL02o;nT z1T-k%x6b{Cv(H&)?Y~MNF62CXS^wH={MOog{b=Rip$ntY>X)y1&R(NSN0WcQ#JBI^ zza}jiyQFFx>Vwr=)~16FUS6(at&GyO(#eO~Iv3*TPkWC>M;@{1;KN7j#|Vc_QIDCT zUV(4tN~jh7#AJPKjWKcbtS5C*-^|GRYka$M7*!ipK~`&A?To7&BkK(H{3+_4t45>a z9)JAtVOcFuy-&5TObDaVRMvGZ)cqUO4O7%dfx2}VRjbO?rmB1$j1G3Rd+#R#)F@Zm zD%x7RV6&6-vae;5!KbuLa3vP zhB>OW%u(G7%o7At)xeA@;E%6T#elwT3Ocj@I{>;_0wtwJ9Sl&FZ<+u47HC(ePsX=1 zM5pp3u151A?s@1OOGiu47O>v?8DcdNsa%UW}`R2Vb>;?7tsYmziLFGrnCcfX6F<227LRnUCTn2QH`h`2bPR!*Dh`2+RUVy`vCkN30RprxMUH(gKo!f0N=ILR_^{e z@H6r4)5E|hH(*>2kr6SxN=8EN=;A@S=0LiEg#jAUdxe@KQ-+94dG}pX-9=Fc)r`g| zM#QoV`A!LWCy?JRBGdUPXHbG!tvWJK4)7@E0I94!QmQ{7a|#+ZjC#orsQIXY(r%M* zfQ`rz1w$Q@w?n4!_Gzfhdy%h+DZ^7G0%Hy~>UM}|2jO=xYQ7yZZxCgM(M78wl94lh zK+W$MaKMdX@!;ShD9K~cXmm2*okz5Q_uD5|^BpB%Wzj$&vZYGJT*-g!3%qBzIwk}R zA7F6&>2W$H;3Gs+HZ@K#AcH!qhurUILS~ZwWm4)uqLx)`V!A9eTnn9yd*kbs*{fN ze@K5h@Iw+XdG%V+Nvay)I@V6BH~{=!2KW&O=0T+Hn)M_!d9--vHtC~-M9B7%Box#}QKlyN*`$$yXPkqPn%OeOFyi8%;k%Lvv$84f`% zj~Ea4k@J@P5FuhHQU*#;AR~qjg^Uvz2mE)T;G%XcYSdd`yOQbvOCpzn$vj}msN_uY z1ISwl`DK0D^K8)pDK6^>XK^}&+%z7^kUIzXSIB&rR2Gq%(UVcC3dRi_;Ff_R@l9gL zhs;VxShG*v@^gBCTLvQNW|0HMH=m#k1pYW+87EF1a3=E8@$CarXht$|(IVtqXk$R) z4>P0tR}QvYmM}WZYLrC?SVF^E_$65 zm#IT@7L73M!udVW#-jxmx*;+u1!~t;XdjBEF_ZaWsrPFrBC_L1g;AxPB=Vl9dE7~X zG7KQ#q8U{4$&8x!#kbQ%HzBSp5T9Xm?8rQA9!_TbWC7nkB?dX9R0W#@(;N3hoSvz}rNVgH1%B!?WFxXP?X%24#}t zN<>tJ9++~JdLl(84$*@}2IX5tCyCrq@^kU+L~*j>@F&7BP|B&W2ZnKHA!HD-t{XZL z4OOh3D8q>3UP_V085ev<Fl zP=f;*mFMaQms+^1U(l}(KP{E_G`*<;Dy;-U)eiJJr!ZXc5wPD!*oLw;eu+4-te5;ZXyR4VxJd_o4~zfF)&Wja6V&%RQq z!gbSo@U`)0hbnHQ48i-KwIh$k)O9s-xy9 zRdhPzApm&p@3aw6ip3nr`P%O`X2I37iXeac6&(# z3H8@HLFR}OrlpL@l>g&Xub!dahi~5z?X96O;Cz*?n91oGj1F#GRdw|!Z+GP2$;H;OC6?GUJQ2CQSY9JVs;=PmeliZ}@LjXXn!GBIBv2_)x;Tu+u;O5+sp6rk=XWI&r}pl0DV2rp#Z zl>&>rmq~{O`$xR49Otgv7zG@-AncHa@n$N99+oJuic!EeM$|VD#a~$Vr4bG7yF*}R ziFO;41*pq9w1kS39WZ&->=HF6>*@uW9d6qCR1t5IRK{pavK}HW{D$%F4nj3Np+lNT zsFVlaE$;2W1WZC6j3!z&rv_-seUZqI=d<$pH1KMCJE=6Yj8qYtgfZ@%8X%J62Zij~ zCSm$J-`kj+{X%?utH>i-%(@!pC|N(JXFVU^-dq^1A_^c1MydqoJF9}E&3+Y<6#|S0 z*RDiS^Gaa3Fhpz$Yz5-pG6t}nIjWZ|2%A++%4)9C1Sr7UbgB(ES(0b%17o8db2(y_X;=bp}fLYMtn-RnrSq z$k-KoJ%K}gy)|$g(7!THQSFgpRrsac<}(qAcLBQ;itwOfoo3G zCoh(m)|K(IC#E&qWSa1ymoR)NmBJT@1vVx~IDJqpj-#%=GtjksU2L#CiA#km@~UT! z>Qcr7sI)jzbXFp5kOI7o*;r~K>JCP!`$!GeBwC>rplpzQ#nkLO7^~7i{h8Qckpi5; zOanPf1kD5M8Zlbqq=>o=K{@Wy(+;KtI76yd`Xux2z2^aav0PU)VKqkhYiur#^rOmm znUi{kWT=f(Ay!w^2E^dl>nN8oN~McXTg7@cyY$sp>gCMuf3-~8G<8LcbU%;6AoKe# zXJYj~F_wL)SXSVVHX$^N>wZqu*De&UU^Lq@fe3tya+N{7f(ZZ=RL&K-0Aj=w)UdKC z(+>bwFls$S=GdCv!clXDpdFJa>I`(Vbi0MQXvG%T0_wDLRhPR;%AkLX+ zqDfqcN!l1DSYO4Q)oTHIqc~=QUsF4YG4kOHgAqD>>;68chmzW z?(LK77*E}|)B;gf0Rv*-sVb>CQJ=pk>@Q3@3yX#Yyp>gMP6bd@xl;6hc$KGlP;_x# z1sEw*HC9C=FzSC07ML`Ms57e~BJ|5*!J6-k_08%h0}A-Qcv#@9s9tr!WoNaa1$sco zt@bV1D%Go~04lNr$F6Yvgz?q_?8-a@%>_{w;4K-{pE7zqngUCqwrpR490{ni%u2Vi zJ|o6}{03G(wQ{nqk!Ck>oCM(t2Fl1o%LMg$Mpk-hUqNw@rKT#wDv*!-_2JkaR z)Pokp%gZYaD@d@|WNhvQq+c+(m4d(}g^JCBUdNEhWPY{O0`1x=t#+MPqL^E2T-o09 zJrgC|$i#uCFAAkV7+=DmE*nI=*Mqu40)-I z+PPW1N$NG3$7T2n0W;*8y!1Z9@#5Sqe~Tg4#AFfvR}4i=bnYpIO3p{r9F`^z`Mr1v z_Z7hXhDbfrE^0(*pts>N++7=6xGOIM7^`DkJXcwG;8W)QTt`$aM4 zWP87(UIzO0!sLETzCiJb!knXhKPC%gcW1~i%aQ4J@@b;|=J&EQk4K0$ zoIiBQBmag$K3nRdn8n%*`Q8cg?*{6J;|q^Dph4Gg5vRKkQ0$VBDX@R3^fCfn1wfIe zqaQ&2{Qz0LU2Ljdb1Ti(!N+dW*g1)9w=&-MDj=U#x@}?L(X_>?xQNN2hC;AtY#DK= zc@`mYZ-^1<$}OQh!EF$mitJ6j{Bf(kxHDtBpwzN=wk>xHO2`BJ=_2ZXTf5qrFU#xx z_>vl5zI2<@Ow%vjAAQs=_xlTL0#mwLUn&U9)vCZ0BFF?=3n=LGXcY#c;Dl+bVo@48kVY-(?ikm&f(qZb9f7=-o4r- z1SJ33Ji?s=UK`Mg)|&jpI{iO;QgCV|)|vT?%zR!{Q1LjbofzvTqZy}*mWH+O+u*rz zpT`Zx*fnL%ncb+YL4^YmWxwHJBgmrS78N7%&yr})NfIg>R+#94p1@7Z>NvE&h?HX< z*AbddI?xkist9y!fr()4Y7wXycL3N)E+su{B+Oc6!zqQ;hUj`djUncVr-E3Ww9pd# zVNwYg{tEyY{+&Ox5Lep(0g};QfQahb#;`*N$VcXje+jOiWooT@{Y)>T7$WJwbZS(` z2l~*b>l>gv0R1fzIQIJvcvM&DNui;&L?ge#Cy6$vx^$o;PrEWiT9YM+DNPDg)j{y6xajwkQQ&J8 zW96Y9?8!0xiRr^NDCF`590XUj#;9<25gVpN+3*l38{RljVYi2!GihFCu59Qbde3W- zMVIx0Y695DC<+e3vNVwBS2PnaDo1lFkce`dTNqJJSzV>dDkX1|;iyZ2dK?ac7@r-t zAF6pUKF^#SH_9v(bs*JCjU3o0J)Tk~jMOW#*6)GGy2P5#BnhavbA;Pn5SsaWfYmDp z*5rTY9IS}F3oqk7&FcGr)!CX}8CjN`vL<8)lM;2hzYlBxH+d|wkT1$I%U#biYM(}| zRs*#mYdDv}jqY?3SsuvhBE8GUjghk<;9$<*MKixeb-Y7$o{?vF6Ms>{fQ(VZqiJEx za{79Wnn82pi8(oJ6lkE9lwSd=3k}=qdh)2kO}Pr_8&2-x}6dI zG3EOkqEA{QRGkSTDO87nvRW`u0IWuH31s_Ab^>#xR}TYL@72Qq0n?(f+IT?|#(Z`M zr$;($M|xt*4eI^7xr~G_tjdv6IRXygWi5*Z+J~hCAgUYnh)p1>$YVVMj&-XQvic|` zG7LDTzBm4}4~BLc2^=RvTS4hlt)|1j6L7b5kzm!jKpI0nmW#us*4_Pm%?QSOXSyT?G@sSg^G+JU~2lKLUIsaaMZl7qP9&!=!D0yp(xk5;)uy(zbJ zhBzg5Q$+Qno}BRa4Ec}Ks^-aDN?ZV{zX4LUKr44Ts%%jUva4mq=)Ll;j)G%dMO62w z`D@Zr>{-WD?nDQ0w5NW$M)iRBRh1Qq6{XlvC)&q7m-THUw4kC{O$--Nf^6Wi9=)VW@9ZT(44e)X@^9J@E` zAFi34rLOdbBz;tFhapzjK>hqiQU9&g ziR2GZk14D+dU}^xvGj2{q@8Z4`WAK4Ojb0Le$u9V4!qT6R<6#WedP2n64eyw)Xxnh zQ2Nq=fhfxNA8}fxtWXLVG0NHM<*J$HMPY0K^E?YBdWBK3>8l-_W7&MhNmD6J%r>SBG=f7G=RSDXOC=)Z{STEqIgJqMM`s?bwK=Kqud&MIs$ zsAe^zy-?7Kgz6L^RFhg2XjB9#$(x*+R}f0kF?zl%0c=uz|H6U2knbDkY2epy(7`mF zLruOPFJCQ_H1MKUYnl2_YwH!gsU%~(uP~~sbX=aHQq6KM1LrvWJ!OC!&K9fQuMhk= zrBH43-}8FOUOQlk>b05$j8$HOaO=0p)oeFM>0nx8i2cvxOb9qyU)m=tEZwEpx zj8&Vc522<}ZEosm1MR2_Or}YdFRIt7qUwV*ORA?0a2v!%D_6+?0$d1&0l;Y>0GQMp z7F;7_9`npyRKgM{BD%^bEb?2ei8PTKQ<+_GlgefRU48^?C4E*Xj@=!IM0Mke>;H;i7XonH7mqqOiL5V_(vw8v+tpwznL5rMs z>N9=_&?{#TaAj?ym9MRNjGJCT8Ax=emRg;L(W^+Lcz&aiGAgHKd-!@|PR#Q}Y>WbU!=@iiYpVN~Cd|pj0yC8s@HnXHasZ~UE zLKoFx!Y*cOUDZ*M2U1#?Da`tkrKUnUsAp0L&ILZJ!K{G1lDvKa zs4Vs_Hd}eiJZ7Bo)Q9Pw*P_~0Sz89y0)O83N<7d(;7`ug!A-#+9dx)-9I~P3! z3rTbw=zym!>%!}3EAoTL8%&UUJq~ohcFkmuUMtBsG6TeL z6v*l}D`;Umm_@wuKc?J`O0~JFUmBPo-LWt!s}}%XH|P=O2>F+jtZ`f>D93=PKBqfv zqsEPr6JlAKqSE~Z;Ig(EXoAiaDySYzk1HwyS>0juEjim#@vvDzPDUO`b&Ea~Gn~aQ zxpRZ;V1anO5GWRI-u*LGvG|C>Qn6eJbih9urlkXEBy|8HdcerBbjEF^uwK~n1U9QV z27lgCvU*WZgz=aWwj@-%<6R{w0#rprx9SC9&f8Npl-q2xv`7Mp?$CAMkSGP0GudlF zC9#WuVSU~Ruv~;q8kKcm8HciZmj$TH{&iJxr&W|xfkfA7txMHVvGSCaYmG=hi$k4m zhfH`Rgq({KR9P?TDP7#GMgnaJHtDQg)RPRo-9mI|q5nv#Ujo;^ZJ=-Sb`8Nr$s^q4 zuc9(LqI#c}3YbQ|P3x4gNa_@=s`(@E{@>J>%LyzY`TpY`A7F>!u9OaXB2QtPIU>5l z$lE#jrvv4JD8!RaK;rgwZO%l(bB-xQn?v1e7?lq2uhi5DxT#lkBqagT9!B-21^{6f zd`{kf(vu2Upjj0k`ZWSm&!9Q9eqwJbW@oMR}{D$60$w^;UV%lKZSk3Bb&K*`ro&Qw6{W6O#u}0SS0tZ(i;W z+e)He21I!Ve}jRy(E>4$L}&HHYmcbPnrh53zbXo>QH^C5;FNps{zmmxz3x>hsaDwj=a8bPzNy7Nn83abrK9_ySiatrMdRw)2q0jwU2k41rLCynzmS{+DtIXw|XhKszcU7 zg%0G5Jk_rOFX#ocdO6(~5S2MCs^ zRHDuIGqA;XR14_AZOG5R0uX&iPXl#9*EFKOQF%ZOExlw7U`{*I57GqgvJWsHx=i>%daIW=(JmEmg&-pb}1-Aga$8m~#v=PIVQk zujNHu7b?|80C-mNe%1c@6P!{4uIj1TY*MWXCs%UvfJn7gC=YfOc&o3N8=#7z#>zxOJhodWKkSQl?}j;)F~E{t19NcSjvOe zfmGGInl3Lzk%JAU*a95uTyU%}nt)SWvX59;GpJV)(e374k@Dwp6Y?u_WC7*@4`{bG zY(7e_)7xS-PTDo}ytY9Il72Fil@QCC#S-a3WtCF(OmL?1Iomrp;{n1fYFj0WE^>@3jx(L2iArPe=s17>aUE@ zqKi2xuWDgW6m*M`U2Nea%40>W^4^a(k8ANdsnx9HiKC3OK-vKWvno&*Wo+>cFvatl zkp*BUpyn`$yTX80{RS{Af6qw})d$X)Q*r^w0>BFMqMobL5zRf&O?g#|z*X^N&)uq4 z@du8iR3TQmq4hzPs@D`8#_Icem!-g+?P2wNsaEe$oj`AtJ?#6{tCCQr^7|J9sd`E4 zu$jJps#kI2N($j|76Y@o&jcN;T)~c0Yegv0w{?_sm$1wd-Wy1PWfVyC$9jv2s{|!+ zRXA4w_3bSNN`(g|?=&2M_Hd|nRgF-6q`{a0cs!{97x!dr*Qup2AIc((>Rb8_T(RCo zzJSHx1u$rmR<-J&E{&ZOLX^Fg8`Z`I4q!Mlx}>@UJl59?lz5j1&NKR% z5*856cL{K;-m?azeUx;0RW|}}eV-LskYkl{3`h^w109>+B03IEb)jagx`_T#0&ePw zEHN2|t1VKO3=eUMr=kx?zHP~C~GVNF_9mu67oVERy`dZsyKJu!T z_EeYVt9I2}XdurN5j|*Zr0T4+kVKdDKYtnE^q9Gi)`OhXIQ5mv_3Gz) z_^|T%F9S-IM^7G7iwpknid5Chd&=uejlLbq*is>goa+=}*{uKvz~RbzgV)w_` zzN;_0b1qO`5oMB92t1Fz{~dj!#}Iay0*jKtXQCpI)ql|Pb)yg{Wq5#sPBsl>)%bpQ zRb*Leh6s#cbpf&ZhSj_68X`%p)CEP^fatA2SDkG>0B_<}>Z(=1QcclsFR2fJ(^cGF z!F@)+Qmq1(>L=#v5wcVzDL)RZiz1LJd+WQ@iI{vCQj>B`l2EFz8xY|xUy-v_ttbdY z^Lwj$?&?mpZ0U`hPbsYWsU>p*Y6~J#8WzMV_bz@@b*w$yX^qu}=vf0jW7Qqx*M!xN zg4C7wKJJV(0jqk#mF22o^+D3)0j%!1tD6kRq74!%?`k!;D@OQTVkFmEXue^ro}=p( zF~}~Db#>3N-mI3Fd_+4b0k;7O;A6c}O)hybvGP=J@9`|uK5HL!M1KF89s#()&;V`h zS;^{JpsqhMGZysthah<|+>)@i=c<+%Df>1`@GAjVs$sCV zCPK2h4zS7s@RvpILl(wZ#ftXbFraO2g}s%zo5 zZpph^4}|qCz0KC;mvf@c{eT&QNLk;Lvr{X~E?&)tO@_!}Uk|*%eHu{gsBwcLYld8? zBIsLg090ROWu-n=w%6QgPqA>Ct5lo2xpR_KtpL)hO!RnbE7gp(4`!r& zzi$DTsZ>3TG>uh12wI`OR3CV1>co%(I9D^)0CXqp0Jspaz@XaNlpu??lOVUsRmA>g%Yu;SsF%6qy8^lY$7nWsh-?Ij`d>+c1A%Fm7BI!9H7^C*%W*4DoZh#oLJ zDxL+XT_q^ZVJql;;F*3&%T<7xcqvo&12eTx+Y(ZJTCwCg6Yg68%6}uUCY7f08;lWv&6XaY zdbMW$I08qkZ%S0>hu}L_9gNFC$oPT+TEsIyDcsHfm?gtl{yjS&n`(>eGq&;7ng4}rYs7w0^|h6 z5X=%0ow7iJd4QiHU!DgklR%;e^x}eZsw(D`(iK@1Nc3Z^wlGqw3^PO`Kqa<7qAdM? zXLKyob@>Pwhaj33ig>I{)$dVijG-UHoj|H4m^`Em<8ILX{FtNI=r?#}jD6X;&WcMPg zkPEO4xB#rF?oumObWfEVw4isO67?u)M_4c0X>NdkvWtp2@#&Fh%=#BIOPCP-eRGa{zEG4JFQ{=5~ z2cmjZUqCc$gy7)<-ooJ(S2b2YKSQZ5k5=U{f+xecK(sYPbR`izUCpXdNJ({d&e#^Y z`u)DBE>}Z9AI4LP>UJQib4^k8hRmd>J`6;4&cN6{+5s<+e&t^S0hqG(PqGV4S!FlA z1CR9)psiU~-KkD4ak9Edcz7`?QM!IdPY&!F^#pvF@UbAO#lYA=)d6vmBCw;!1zc{q zfDJaHysRBP@yaqavE+k;YOFR?W1|e#!G`+`zF)!^hJ8O5S7%!_`_{HdnFiVkW-Jcq z8)#j+I?rNu*s5Rw!Q^o8pbK_PPs~TR=hnaVVs_=Wq{>EhcHgZ^)`?$j`NrZ)^~!Y<#ToQ zCn55+1MnZ!EaUmNcEyIBYNlsax^R2)`9BIC6}uJBtKK@->uYj>NL&--0zcXlt!_4) z6^hol6*7%c2H>%t$ZE4%uI3IP(y4T^2GQoGt~StXIzz_troIO_Jz<94wCeh+DP700 zN{w)4z7KF_I9l7Ss?>=0E|CoQ12!7Xk2Pf25hMn={s|9)pi=$gz)v}9063<@Ie>~) zN?D=_>nFgG9y5lP+=Ok)FDj#V3Rr!jCjfp*&3|wPlpGXp2ZsUhZ$mY4?d4I)?iy7r z0;%#t-J>SecvD`Pj2ezHfaKBH(|TMJ0kVP_I{`_Rz&@DWzzJgbm3vfw)q{nRPS9>3 z0GAkpTU}&CDF9FRIIPzgK|pIqN*K{uddo%^$X61523UdFbW{Io44IHq!Hp0JY_59- zIvc5x&*L@7Lu^_4!=n<>fW;6Ex=M`XhHB|o>c%jQC#{K{RABzYC z000000RIL6LPG)ovM;P%Ys_U;c|PKwCJ-WE{LxgfH2s{>{@Clj)}F-H(xgEYX22lS z0CK5_3_?q}C^ySZu0kE|ia==*s-_`&|d){P^a}n&ip5*L%OMIefDE=iWb@OxC^U;CNlkQzYiMr#vVV{?<*;F7U(v~HRrd=&`q?odzM zjk*_T{X2zLXMCG;Fl}y(Nt3s|brJOb-Jn}`gC2~t&10kj)HYe}Hny=zp-d(N(0?JI z8*%nm2_brK=Rgmi16{WOdOpr>S12{zrF!Su7^4dW^AswV{pN$s51dL0%w1t-fC#A@j`KlDG*`(I-&JwoSm)G>RZ#e1ThG{*Z1ltUyC_m4OPU z{$2sKP%G!15DnNRLEjJ1e^V`>7X@fqZ^Qt+O}W$==n6pZ90#>xRg7~HKTF9;MeVzQ z(=@4S97s*Rv?Vn*6SKON$f{U?&nRMLjOc0>fo)767VtrGt1T|z>)NeC^_^`@>vD?h z`yV8?S_8G60$7Nu$tn3IQAGeAQr!w%ppOPFFa+<3Sg{Lu31=TsQC(|2NQDr<04_&r z1$3&b+1j>vU&@lG;#V)zgwBAeb)t~k_baDW z{ECS-mDV-h&IcB29$*{s0DI#CF4c?`d|>b?!(E$54B)oipFhKV2QaTuFriDW&yCm? z=Zy+F5RD9(;o zLg3C;*_@je_Agr!0X>)Z`f<&xK=fk}BbZaOEa*u%J4XSvQ_*h&gsKqGM~G4#2%*}dYQK|s(zhvD z2oJVFaEnnh6mgP>lAvpZCu+Wkl{0@+ie!cb4g*+rUEHDXj6 zC~QW$+K_8~Y$RB}QOy9XBx?Z@+ZYy9JWd?IuXJ18CF)345UJQ012NT)kLciGkm_g5c_2VO~I$zBzp-`|>8F>(HfC#`7BPrmOwFo$yh`aT% zupIcCgjW(*|C7oq7;9WWY@JIC^hpA`4?sVyN|kACLbU=xtMf~OiU+t#OM%4#I2T}6 z8yc%H&_e;bRZUi68;X>`qEAdz|C8|lBAk6r%>eNu7l>ADvY#&ku3of2w)s|m0@0pV|j`=mM`J#u3BZO5s5`y;dRv6 zz21YfucGKtsFoEpn@y^%$T_)+Dd8ZAiWsSFQ=b(?kW(arYFEJj#^j7!jgeIro+ggP z>W&rs2f@+fXUe_O+8U|PjMM;h6CjytM!KG|p`<=DQn9ZYmI&>as!cO*RyNLoF3SH2 z0DVjag{-0ggnvN2dieRzlFvUx^Hm+E@cG6DNw1@62&K=CXzI;s5)cutN_dTWu!=d; z)DPh7;93R z3auYhQ6)<84s|8Os)ksqZ;vEar)Z^hp%u-wwnUUd2&vmiSoJG zw|yj7xj+?Fe0t6(0g5Le_K%UOf_6q#jG%}5$C651l2r8qx)9jlLJQng`R$TYrZzOWf)u zmC_=d018$q783B}x60inaqe(w7~^6cBM5N3TrOEKysDKE8`{7u|^X(1KO9!dW$a-Qm@fUOKJ525T`qF*@aD4 zyhvn9s$iF>^(y%3-1S1UVS_L)5>veeXP2wZb=)j$zr+U;_EAJnZHX5RRL{^;i|K@2v5mCC8s@IQN7(;9Z4#jKEJ%QS#E*nh5MlrKNeCp->a{AV zBB{YjT+Ny*-zS6~qJ>r6rOMPI@^zFfJp1||5NCan)?1#AtrnE3yWT}Z81;jZyy_@5 z0x;bmU;_JL2#HWJ)Z1}(Wu;teSI3KNG)(??kYK&743~5vP=kCun3Nk5R__?etgomP z0Rl=kAi4xkEcK3&9QZO7v@3#2&CVsy#;bOWjF)^;l~kaj$12&Hr#avbVgN4GO6y$; zApPYoyec*_OTA;H4D^vo3=}f-wIr!mP83p?2JMOf`2GTpA!=u0^}`Wmy;04qk^W~V z%77Ldxz!&MUP;07Vl4vb{GZJZRJ+1Dp|6Z|?X~8D6H*O8GpZnln1ENvtx9EltLm%z zwe=ydendhbF{__b+lx|NOhF2Fp3VX>R8g$It>mkqHAvqk(ZK4*1oaSY9KO3&Fu%$0 z0WblMwO4*jO02!m3vZt5neGmIdm{A_lG`HVyddNGI$QYGhr& zCD+I>1g!+`B%})H$!ZedIyK1BU5cy>w3CP&x}J z10$=-EC>4O2>&;$lK`Mpih<|`HSF_$Hj)CIS25MW21$hRE3tn+BlhoDfPPUmDv|;x z@GFF5*^K@F5>%-zf2ESFiU$n1)uv%}@YhCs)upOcHEZcQOg1Z7Gt|xc@)~RvGytwo zG}bt$qW1gio3%8kyH_!;1w~ud3V)3V>p9i(T7h2$bO|Q0qUCGE1jvl+t(AGu`O)Pe z>d(ow9-)tIm~MNov62X)y}+7*KPNhH7Eu3L%`T!aORmE8`t};ADAqZu3$)Wcn_zpx zFdC>TtX;q!V5dMXf;C#O`o)M|-K}1#^w<;HmI2{a{OzEw&Mlz3DyTBIG`xUckPA3Y zn_K8&0JH*Sbj|uErX@k8Z+n}nR!9J(X@x3akN-!^fv$fu-`^GN8nLNeJ+z5t*$a?( z?TpIkVvb%~%qR&HUcFA#>Ll#~(sUY3R;*yHP+%k0>UAOkr)ZmIX|-r$l9%!2MoIx1 zt^K0y-70Dkxx#UY&L(=YYbbw4(K5hskvQmeVg#?(n(Wg>BlMVMD7s0s z9r8;O2gs(}HEP7#TVNcL`UVjJ5!X9v*NR49gI`0#62Ui(x^@Au1W;OZ1lgR)8zj3B zD|nIGWJbl_7tvhlGHRsuOKhqHh{MVWF>5Sn;HuX;lYl#Lc2*VDBMw08-Wk$meuGR} z-G;N%D;qpcMk3JUlC48(c(;XcoFg>;~=P9MK%-7 zK+go|Jr$us0RTaem7D~!}X*Q+bjc_75qvcPNDkj-R;582$N+P{oX z50bOT%t|(I83DajWmS^hrPS?&un<5%*S#6gj#UVMLSwyDZE1Otp`MMie^50*ez=Sa zKuyT27ckR+TPqWB-Q0R`jo52CX}Sj?b%Rz2n{Gv*$}VO#TKa^+9)wr2zw#+HVwYJk z1S=6*wJhk7`s^NL6*Ul7q`H{nvY>}l%8T8*2&k(dUboIJ33`k^XWu0(G02`pBl*fu zs2Hat3Aj#GRfwvURcmLw&noK71Ke5j)Pm|{g)t%i2_yo1E4hGMarT62t8(je=(b}0 zeB*A7Fj=cv9NmyLku55z3#&Fm4cK#qS3<5=HNbQ}3li(HW6${PIbv9@t5rg#uefBx zf`C1V36PnvO_d#{>|g>?i6N2|W&vfv+HqjnY>k}Jr6)35^jK7{{IR##(to58~vfPvmobt^D{D66%o**GRt z`-~{nN7a!i*giBD;a!lg1ocw;Ww4Ev9%F>NE4*O!QMDZ?(@WqI1UAqyll=(lHTn{t zS-sZo%?S%bKqO#4A_3p1Jmj_TI?nJ`-%fP()Y?RhxWJ5CmDkZ&apCPNylAaWnsoxu zO>gDmeOMCptjhb4;;j(_%ac>EFsvK&4sxs8wC6#F4>=8Q^>;~b@j;v&ucquCdTOP- zUIJ@e{vP@MEn4d~PoIbLNrqx$psTU(B&av)D_pDZ;{mX1U*)nS>M@!Nm<}+4*3`}K zS+gYSDf$x6YIY@$VYI3!@a_nR{(6Um% z{zR}&Tv6U#%&SG~>}`Wkh!2MDKcZNg4d|i(v404zQ5GPIwLh^e7grY!(P0f@uS@?m zM~&1i+DJf}F0uku)_6i=mn8KtOxV5t$@e?+mqQYkTmT{0Sk3X5A3RVo1& zR*WDl6?lcX#f2qNRS8&oBFIKrjL4C;gb!HZjf;(H)ndBLlfW@H8hrq<*AMCW_2R>G z!-(Yo60vNplr0w@N!3tihGko2hGCIWgOiP;}nVn1^3?Y&_f zd?2v^+qM1B;R^{n_gDt>Nqy;d@r|gV_#a5bU!{~hyD%j64+y7@t!!L~P<4R-+MzTC zSRqzrt6m8jyl6aR)w_vfy-6R4=#0O-IRgF%&%E_I0=h*TjGR{O-~ltj;IuU8ot2ji zB)M`H^~H?PnnjiZx^CU@^OY|1bUz$ADov4MR8nWGdaU;Nc>m?SVRdO8sV+UBRRRXD zqz?s^5h^lutb)1lp7(^`=>nlUwQ&G4z`h)*vNC_E>QsBr18Ai7t>4LN$)^8E=tN=v z>;hy};1;!J*INr1S}I2BQ60YJwH&J|q%J?Ew%3cM~jr8t})V=r{6T_bT<@%Ul;#o_L|{)N%V7% z{z9Z#ea$#_1|Sti>U#;PH&(_WBwK}21^h#a%aVGp9;mH$f=st;kYTsxP}hvAT^Vli zUaL)7Pq)~;w3lS-npl5J#Q$mC`Y%2YHxz$M)L(|rZ>W_)=Vs!E>K_QF?$>t>x*a~- zm8@Z?Srsf0PD!eIy6RKq$)S>qw8A}`h6u#{i>ThEDiw;=9xW?dB7Gk)j}$AeR+UQT z7P|0Pd;t-FJQ7oVUKQ0S|3ggfDr@tkZkz*M?61qCkteBAHUH@3L?N{AsIE{kd#iRs zN0o`B%3AA%YICK(!a7knwIr!zfp0ir$}aWU>aNxN`+(Y|&M;-1{d%>x(i>eLg0_TH zJ1VWkg&p=Gr`nM^h5q7Df8Bh@sg`i+N0k?c7I$rjKD8ycDjnMoso`JmzcbNDT^@At zzcX15b$jK}*~ORahNv5eRlQ%gf7AHKMk}EjwW=FN9KcF|QUTE_R--thn_4@pl{Pe{S$ zG%M`7?sE?3xt{xX|L%vbe(=Me0UR`|B3R0 z8NL}G^dbOyG{!e$M;QHEbx|Pyv5@+|mLb!BtQQ5e)!mW&PlFtTflhw^dz>7kJ!!^- z+VS`M1ex7V`eVM&pv^bqf2oVXm-??*P}O1w^dHqF0cE|0K2=M%;0xdqAXQB?zeZ6_ zS)m)KP9AKc@81krFi`va+5K;EPWqXeOMq9gCo&gqse$~9iVpgMV5ao;Yf7~*IfW`o zQOC+mp#697TAfS&7P)$AdA~sPurq<7+7fB79?k+*a#2f(tWt_PZ}R))Z(oWG1Bhqg z_U>eG_1sKwr_P+_1o^EFbN^1w3?$VqqpqsiXXiivnE_YjFJpC@#*Vb9PQPEbM$C!$ zs*Md1zE1fNIO-3h{*UF{^aXHf!2fwF8dXZ}U;agkN+ACKFnFpzjPU~-B2!Br|I})Ve5q3E-^f+H9NhnHd`H;8wL({pYeMq1DE_@XPyt^@i}lLlR!XH(L<(nD zF9#RkB#+g+aUfp;SAes=$fD|TMBSEzRqcP2d=-i z>T3#IO0}o}ItzTOU3^D?Yp*JD=df1^Dk~w-9ekO`umCzxuTpA@gN~p&yLnTjv!<-v z+(Ow$oi(!p4`2fos;Yo~p~D+BoU}(r-Np^8D^|$o8i=wUNVgdK_$t91&>oB>gHV3wphE;|eZi*b$CadPqsLHO$nCc{e zV-d>HHZcqnfOV|a)69w)i0dZRJ)CEtO^-QsR+p3NkobMHtZt_4yPfnsCRCrm#6Rg( z;QmLHs%wB4X22bV*Y6R~$YYKIk=pFZE^W z{z;fxh)ErYR1wkAH9)A^RX8J(tZys{_Fw-sflS3s)TEe29^F9S&tAXZR_lXatDxst zJ@xg7OR1r%cE6HWn^3G6Dk1^oWEBK=>9y8+r&CY6Og3ajUWd-cccvVz$P|6R=u zNOd)R0)`L3zgC|BM?K1iHa!kQ|EQk;N7bgtC+Ja41Ehb{TLUSOb&(DLF@l=1O9zk} z`Bvany&2l^@M3BK4S$=TR=y47s&u~iFX*dkuHExL)NO%-(k0=R z6V6wFw*?BIAEGX`T@c1l?e)Kt`qY-W!tVf>cS@+%tGtJHm5NuTB-T>>KuTpExTxD1 z9nkpqi#io!m1s=q->G@vP3d^)i4*KjRVq(`uF@0*DhN~^fQ|H1nQ0{-bUt`e&oTba z@xWT)6jcH_hUSCMf1KS^K;Gx;l=*>F<_J9L$H@*Mb0@2rv{xu$1M5z0;02u2lOp{a$pk!=Nta>}RSGyU< z%E+qJQmWD+`#SFk`buP8Z%8*?sAH*ZrT*_<1j5SgT&oP{_2fYnZg3Svz>9zfv@^2J zSKU>yQJSg}gAJ6`VsO-#_=eaKca_xDC0Sq8D6U)#j`}*kR!#+o1<2hqs5%~XH%}`h z&auw=ngFZIs_1xBDuB_@Zk?t&RwZZc2)dPd>(z(~BG1HD^_60$8|co+;$6DVo zDkL3+8ae5(T${=bm{C_{$#2y}10H9?Du5K#SAhssXU^9~!qw)~IzzQK@ImSW**W0D zog|}MKkE{pSico3*bPn%EDlOI2D%j3E0rtl0=GIY zn3cBOK$X_>b_!}JJSU(xG(aynoo9t8$9)~JEFjhuObNCa{QQr#EMN%d#xzTV$D5ti z=56nf&aF*22D+hY-u}`^jyLfF{#YH&iMBKr+HmCl^4cxgMqZ+RlUdFJN`R4Y-9GY|D=9->cOD4X~C; zz!Eof1JzZD|4B8V_$rRLqb%W&>D_^o^3H8TvEd7K4G1rGF^Y{bc~7a=AeXcSYO%T} zkhfu|s#Xe#1|`#oTXzwtrdSq7C=AO&l0iCV)%B!1Ba~3CbyGW6Ye7YXKx=_e_e6RO zMni_VHbd1_-VybAw$X3QiIqsvUT#$%u1L8TWCM0Z*ZDZFDwlNNz$Pvj>W_HhZm0s~ zo{B4!W-uLuP*3nAqf3ZO(q6k_By*8aRND`@B-#%*s9okFLv3d3z*&#PmJg}Vo@z^M zA}FRugB%X_11f}|LvJS%CH*Yu=T1$>6)g9^Q^S`p50`TqVuqrtL>XVIV<^DXP= z!D~GknO;|AEgD6_%d~>@T@QjUb&!#wRilQ$s>%yD!j8yW)&t9`wfC*m39!|B-?Bag z&iY$DsfyBDrPceS*7hCA2Z6J005{-Zl*(LlOxkc>l~NP|az&`eV$1RzH)5)+07bvf zJE9(s)$bLx(!{VNLsG;FvoY{mw@}m}*Mu&(RY%a5>&C!Yw^B2hxiJGNwmH^ic2=ve zZl-e8UbDXVmx2o00yl!E^-cNP$5;VJgTP#3;iRq$1iC5E!Lfx3Ku6f5cH!3B10A>t zRK=AnVHNe*nhXxUV%ZE1dYmr_aUDFO`*oX9AFgvipnoQh_4|>Y@LK+xk&Ep{HgGez zse2H)0@M0i04wM16B-yV*}o%UJB+ag^FSA0xJVfR=dYP*@H zm@MO_{{|id7F&sZ7SMXT;qaO|tIJXUXqsg20YPpz)QYPBkHy1BeLP?UHpTkQB+II+ z(@R*xdpw|89*>mUib@G`^0Y$tYD=KjbQ7)LScYI<00{MRmShCOVGMN=x6X|82DZmT z4|kHl`y&^tP37vpfh{1${?kaQp+#im2kuXRhovlhpQNs^Vchdiia_-VtfbXOLpjq8 z^a`G3ZqLT~-~WkIR>10&+h{h(GVb|DeG>R9$D^zGUCULW!{If`20R5mzwRWukm?n) zf5`v*PY0YJPUo(XU|zaO78GDV9dHBI#0*QSp=&O>0F5y`1CIK;;;}p*={TyBN?fZ< z$}Js1Pe$g=95;ZZSH#2W_tA9tGvN2%DJT7nGniIYZjf@Iu0@@d9Z`>RCmJJ4Svn zkcGUOMxTY+h(rRWA}O0n0wYh(d^>NR@R}&?nP)eU+gC%Y9JjJBX!+@4!mw6&CA}JU z?mdP)dDd4(Lg)5G`QgrDo)tlEk1BURv$|w+D6(a&v}a}?FmmShc(FP1&&Ef7DWE+c zquR)JSehdro83U}oer|!x`<`*GBDDA(BsQ@T}at4D>YKdz`nnC81UIWy3^Gy^-h!; zcaW4u-8a?T%Yl1wBXxi+J*bt%jU$v-K$88><;dG<+CoxcB8wSfppusQoZZ0f0ae6W z?^}(>SQC8}+zK6@yeo3w8q>G&yzQzyA=Cb)-tSz7_$1Et7&OZ z--ou2CY8;;D)Q_Gat}BIt7ySUdz^Irznh^pzy}%d**#A9;d*kl6qDz6?T-K-X0p&2 zfly~n^BucwrWQXO z-3F9JK27^++YG?$s1woN8p#~BC-wXoe_OynFQ@U1VJcyuR#~p3TG&k0cM~eT06wc` zx9@)`PeyqJSckn(>D9pRzmsO846A}M7JF`N0Jql_%wt{k-e8@@ozuWY9{hTWYX_Fh zv!%#dqx}qZA?z%)MIH=m^wQ8axB1pGdx9ZzvB=S5!^&lZ6= z>1!YY`@>#jO}?vt479&Y;0LF19Z2(`;0zMJh^fb(Wq~bt`rpwx|H*$KUx`L` zS*p?~P0L8^`+Xq#{%TF)Rq_x0DnE@QpB-@l)lo}EDRW)@)*U(W0f!Z7xgTQvtHkvB z#GZ*N=0|DRA+}^tYU{Hcy*>>wtD1X(Y9sO9(}Bw6^lnD<$gYSeA)|anWx_JZ`~4$Z zAAU0}(MyWZaV$wZQ(G5)zkg&Kg7IlMoqulN)=lKoSz2pZ}v#?If!#_mhm(TLfgTeSj58yZ*txb z$hL#~puOH-j!ZT+n#KJ}_I402XoU0E^e$MM4?iINMj*p_g|vDtkzp;do22CWu&474a9g#-?G>8nvmK3x|Np3<_t1Z? z-v)Nz_eHJ`M1t;G68D;u93ZiNJ5UYaE%^DU`c&rHBIbAV`~&bpHP~K2qcyiWQEZ`j zjEL#(JAt5QOC;}|W`+E($P2{u`5kc5^BCypvKD31ccvQ=oqrdAY83p1$d?+94Cg5% z`r8S9{&X+K9`3%87#B&ophoGPK&>pA<~tc%G&hGkfiC9cd2Q|#25Q}k2P2@3aWP-3 z?h07IIm`lDmUCbK?E+eL4V!ERgMAEjB2+D-zaAq^X!L3LnhK$+vHD`fS!>RqG1Q3! z)^SvCuF03c?m%t-E}D(Dltli$+8wx856~B21}6P`wL4I6UO~lb*t7iK|7M_6c?*re zH8(1WHCLKKs`^cE)LXd^)aGRLkNQ3EsWwm3t-Rh)ga4`i5vbJ}J-(JrAC}vnRLRdr zQR*6=3Iv1esRhsiL|RL|+Qw`?=;Zg;z1RZn%#qz{F9U46{eB>^ zx{;a{x0TFI;lMG8AAqZ>Cw+#RYVBLdT(YQ0(XNw!1}@-by~qkBx9iE#F;tZqZN096 ziUjaQ>Z>@u5N&5pYvfm=qn;P@)f_8rKh3l*R}3iXM64CB6pcJ<0aPCG3hlc17ceXI zJ3Y!uH_`yQL#r56CEB6-ub`Dj^M!M1C7{+=MJmWyh3@LVflqaDkIpr^9AxbZe04EE z-~Zpit6C_a-;InPWpb^gE>uF9{wQEqS42wP%_#w@2vzrN->&Wfx@v7Cwr)?i`&_qs z0WGVh#Hd~AJL_MI0_>xiuDt;Ru$Fcu*jYKBKz1*fKU_B*qxx;mVEd*Dom5-=zYvSn z8twePsoDoF)x}Jyj8ZF-W|hENYQ<<=d>?rJSF%{`R6}i&B(8x35z?Wf7CpkCI~o$I zYBztBK&sPyfzE+zW38hNQd0k0?FU*_&B|vZ1ySYBQy;i8HKefs4gjq(gQGfQr9}5C z)uj0Vu5Ex$16%bFEj?&!gUev2X!7JhAgypuWc;={DCsMegWywbh;nh+5p@4k9Rz26 zaGI{r^hW#rXZ1F?t5@~-xV%Fx)mO`vIL)_IZv#tpL67qrIjfRnYE^19Df<)fRMq}3 zq*Y~gRjOLMk;@w86%GX)z_pRymRbXAskfA6M^NoDSVrH!W6W`x&=fH{{50@V*RYqW zUUikbUB9Wx0gjJ)7`#+9)i2V|uZuYaw9Yd~pL!S^RqxaW`l+-^Ux@%DW0!V4s$PJ3 zwA?NK)2ON_q$mwQe-_YGcSn>;QK_X)C1XcHC*S|_9+|uvr7I-)Bgd_i0wt>u=yJ}M zG31NMhn{-B>CTcH`3|X zq@eLN^%0<{buj2YifYG;ricJ0sM`OyfjU*DPkE}70JP4(nT~VX))yv#3943smeMMq z-b?~coz(?Zb-+WkXlth+e9eLcuxXlaW^8fLFsV+Cs^zAqBZG8} z(o(mR>JFqL_E;zTj@YM~fIh?Bb#J8E|NZZPXLU!UDRkg^y$f}$$_j;R?|^5eF7N_c z1yl-oZCVg-9j<$L7pRp5yqQ<*b*lGCbd~BYpjHs*$72P{fom_(bw~X&?Fc%Xb3El&e>Z8=yNx%d9i%Le{%A`u=iM zwODlynGz7{M+EhL+Okl%S5?o*YTZuGP;I=vfGR*s?&fR2<3O!wzT&Uw4MhZv*qP3+KV_r7_ zJkC=qZCWE=0KWi7eJxgAZ#CiiNBv)*0zS&KU~Z3?q*mm~7HNeZ>o0+^n%mNFl`z#Fv z?KtdIC)C%X-C(xEdy2?)g8IlbUr^g-qVsDOCqN}YD^4%OCeuz;mnN7uG%zm!QNZV- z9TtsA5dUSJ2$X`ZrHw0=I@d=%2`<*k9woVT7E9ENhL`=KLJ7u`0q64BNP;~}L;lasoTlx>WF%MkFS#)(k_&80g@UoQ~MRpI#dBtyd2C(Q`=-Q z{#a-BeB(One8~o%!7`Vs{^Y2+a=di}T@aaa)fAgJSL(MUVbJp}=xRPkH5gTxhpmRF z$K*^P)aASxU@&y9vZ|ImdtR3vQ7?-IEqYn=QVK1#t=#<|mUcRZ&;9@aABzYC00000 z0RIL6LPG)o)B=r`&1zIZ5QWAE&F&sp<{$@0(dMX7$3A^QX)g zGx+YK_74BPZ27Q75?Fe4?RvS?+uoKe8+WK3bl{g$8M_g zwg@GkoUpY%Db!hox`Wz_E-H(2w$bWCk>Em}mfCb+ze1tyDA}&Re_ueU8)u{biR~srpCHZKjAOcxwz?{<6CIW9O zW_54?8X5tOY!#{Viqu`yK2&oBvdy3}+u#+c^NQ5VHM1TW0Bz0q2^4dj5?YnooZoVD zO9&U`RHlU9MQyJ(0btdf6A9;-wN#zy7*=}|{7;-A6@EQ7SJqq9@nQ88wa>LBV7=rJ zvv9D?%CH(q9i{3OQnlHYDjsYWS76wfiCeK6NL^5*KAz+%P@OA53c{*MT~NB(%+>Fc zx>_t|Re-IgrCvns_5=e^35g{qAGOtbR-ryX?M-C|kWGkHfUi>VJ}cC74Ry7l?hmQI za9R7^mxUeRg+h$Y9LQX-^9Izl|Aa+Qmle0ZoRq8Vv9B?)6t6BS!}=4H-m2LO>l(Yt z!m!Dc;;IpJbo_6C?$(YEp&W|G!y=dV>1#?G=%WhMN=#2Y~jg zy9%a?#d!oE;th0C>XMSGJ=6|rPXI_wc&H%?DYX6n7kg0Xj9Ur-03VA81ONa400936 U0763o02=@U00000000000LLZCl>h($ literal 0 HcmV?d00001 From 3538d83f86481d3b01e385efe1a48d14ca78939f Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 28 Oct 2026 20:45:51 +0100 Subject: [PATCH 09/10] fix comments alsieve rs --- src/alignmentsieve.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/alignmentsieve.rs b/src/alignmentsieve.rs index afc2c909fc..6028556e84 100644 --- a/src/alignmentsieve.rs +++ b/src/alignmentsieve.rs @@ -29,7 +29,7 @@ pub fn r_alignmentsieve( maxfraglen: u32, // maximum fragment length. label: &str, // user defined label smartlabels: bool, // derive label from filename - keep_tags: Vec, // 2-letter aux tags to copy onto shifted records. + keep_tags: Vec, // 2-character aux tags to copy onto shifted records. ) -> PyResult<()> { // Open input BAM once and stream through in order let mut bam = Reader::from_path(bamifile) @@ -48,14 +48,14 @@ pub fn r_alignmentsieve( let write_filters = filtered_out_readsfile != "None"; let readshift: Vec = shift.extract(py).expect("Failed to extract shift"); + // shift is of length 0 or 4 (the CLI expands 2 values to 4). let keep_tags: Vec<[u8; 2]> = keep_tags .iter() .map(|t| match t.as_bytes() { [a, b] => [*a, *b], - _ => panic!("--keepTags expects 2-letter tags, got '{}'", t), + _ => panic!("--keepTags expects 2-character tags, got '{}'", t), }) .collect(); - // shift is of length 0, 2, or 4. // Build chrom_names and chrom_sizes from BAM header — indexed by tid for O(1) lookup, zero allocations per record. let h = bam.header(); @@ -568,8 +568,8 @@ fn apply_shift( newrec.set(record.qname(), Some(&new_cigar), &[], &[]); // Remove all auxiliary tags, then copy back only the ones the user asked for. - // The CIGAR above no longer matches the original alignment, so tags that - // describe it (NM, MD, MC, SA, ...) are rejected by the CLI, not handled here. + // They are copied verbatim; tags describing the original alignment + // (NM, MD, MC, SA, ...) will be stale against the rewritten record. let tags: Vec> = newrec .aux_iter() .filter_map(|r| r.ok().map(|(t, _)| t.to_vec())) From 3fa039266f02662e13b10d3ca28d0a4c79f4670f Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 28 Oct 2026 20:59:01 +0100 Subject: [PATCH 10/10] keeptag docs fix --- docs/content/tools/alignmentSieve.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/tools/alignmentSieve.rst b/docs/content/tools/alignmentSieve.rst index 6ae82daf48..510f8cfc92 100644 --- a/docs/content/tools/alignmentSieve.rst +++ b/docs/content/tools/alignmentSieve.rst @@ -88,7 +88,7 @@ As can be seen, such fragments are considered to be on the ``-`` strand, so nega Shifted BAM output ^^^^^^^^^^^^^^^^^^ -With ``--shift`` or ``--ATACshift`` and BAM output, each kept read is rewritten as a single match (``M``) covering the shifted fragment, positioned at the shifted start. SEQ and QUAL are empty and all auxiliary tags are dropped. Expanding shifts and shifts longer than the read are supported because no reference or read bases are needed. +With ``--shift`` or ``--ATACshift`` and BAM output, each kept read is rewritten as a single match (``M``) covering the shifted read, positioned at the shifted start. SEQ and QUAL are empty and all auxiliary tags are dropped. Because no reference or read bases are needed, expanding shifts and shifts longer than the read do not fail: a read that would shrink below 1 bp is written as a 1 bp record, and is only dropped if it ends up outside the chromosome. If a downstream step needs a tag such as a single-cell barcode, copy it with ``--keepTags``: