[med-svn] [falcon] 04/08: Imported Upstream version 1.7.5

Afif Elghraoui afif at moszumanska.debian.org
Sun Oct 23 12:18:47 UTC 2016


This is an automated email from the git hooks/post-receive script.

afif pushed a commit to branch master
in repository falcon.

commit 8bf77747783cee05a483e90b7c848c5c2d6a8900
Author: Afif Elghraoui <afif at debian.org>
Date:   Sat Oct 22 22:29:22 2016 -0700

    Imported Upstream version 1.7.5
---
 .gitignore                                         |    10 -
 .travis.yml                                        |    24 +-
 DALIGNER/DB2Falcon.c                               |   133 +
 DALIGNER/GNUmakefile                               |    33 +
 DALIGNER/HPC.daligner.c                            |  1585 ++
 DALIGNER/LA4Falcon.c                               |   802 +
 DALIGNER/LA4Ice.c                                  |   568 +
 DALIGNER/LAcat.c                                   |   192 +
 DALIGNER/LAcheck.c                                 |   361 +
 DALIGNER/LAdump.c                                  |   487 +
 DALIGNER/LAindex.c                                 |   201 +
 DALIGNER/LAmerge.c                                 |   397 +
 DALIGNER/LAshow.c                                  |   618 +
 DALIGNER/LAsort.c                                  |   285 +
 DALIGNER/LAsplit.c                                 |   242 +
 DALIGNER/LICENSE                                   |    34 +
 DALIGNER/Makefile                                  |    53 +
 DALIGNER/README                                    |   521 +
 DALIGNER/README_PB.md                              |     8 +
 DALIGNER/align.c                                   |  5157 +++++
 DALIGNER/align.h                                   |   354 +
 DALIGNER/daligner.c                                |   731 +
 DALIGNER/daligner_p.c                              |     1 +
 DALIGNER/filter.c                                  |  2306 +++
 DALIGNER/filter.h                                  |    35 +
 DALIGNER/filter_p.c                                |     2 +
 DALIGNER/py_utils/DAPI.py                          |    72 +
 DALIGNER/py_utils/DAPipe.py                        |    93 +
 DALIGNER/py_utils/DBLA_to_falcon.py                |    42 +
 DALIGNER/py_utils/FALCON_ASM_NOTE                  |    27 +
 DALIGNER/py_utils/LAPI.py                          |   110 +
 DALIGNER/py_utils/LAPipe.py                        |   177 +
 DAMASKER/DB.c                                      |  1736 ++
 DAMASKER/DB.h                                      |   420 +
 DAMASKER/GNUmakefile                               |    25 +
 DAMASKER/HPC.REPmask.c                             |   877 +
 DAMASKER/HPC.TANmask.c                             |   530 +
 DAMASKER/Makefile                                  |    34 +
 DAMASKER/QV.c                                      |  1387 ++
 DAMASKER/QV.h                                      |    96 +
 DAMASKER/README                                    |   172 +
 DAMASKER/REPmask.c                                 |   636 +
 DAMASKER/TANmask.c                                 |   462 +
 DAMASKER/align.c                                   |  5157 +++++
 DAMASKER/align.h                                   |   354 +
 DAMASKER/datander.c                                |   182 +
 DAMASKER/tandem.c                                  |  1364 ++
 DAMASKER/tandem.h                                  |    24 +
 DAZZ_DB/Catrack.c                                  |   259 +
 DAZZ_DB/DAM2fasta.c                                |   213 +
 DAZZ_DB/DB.c                                       |  1742 ++
 DAZZ_DB/DB.h                                       |   420 +
 DAZZ_DB/DB2fasta.c                                 |   180 +
 DAZZ_DB/DB2quiva.c                                 |   189 +
 DAZZ_DB/DBdump.c                                   |   784 +
 DAZZ_DB/DBdust.c                                   |   471 +
 DAZZ_DB/DBrm.c                                     |    40 +
 DAZZ_DB/DBshow.c                                   |   579 +
 DAZZ_DB/DBsplit.c                                  |   216 +
 DAZZ_DB/DBstats.c                                  |   346 +
 DAZZ_DB/DBupgrade.Dec.31.2014.c                    |    86 +
 DAZZ_DB/DBupgrade.Sep.25.2014.c                    |    96 +
 DAZZ_DB/DUSTupgrade.Jan.1.2015.c                   |    80 +
 DAZZ_DB/GNUmakefile                                |    41 +
 DAZZ_DB/LICENSE                                    |    34 +
 DAZZ_DB/Makefile                                   |    75 +
 DAZZ_DB/QV.c                                       |  1387 ++
 DAZZ_DB/QV.h                                       |    96 +
 DAZZ_DB/README                                     |   502 +
 DAZZ_DB/fasta2DAM.c                                |   687 +
 DAZZ_DB/fasta2DB.c                                 |   728 +
 DAZZ_DB/quiva2DB.c                                 |   510 +
 DAZZ_DB/rangen.c                                   |   182 +
 DAZZ_DB/simulator.c                                |   573 +
 FALCON-examples/LICENSE                            |    23 +
 FALCON-examples/README.md                          |    24 +
 FALCON-examples/data/git-sym.makefile              |    30 +
 FALCON-examples/data/makefile                      |    16 +
 FALCON-examples/git-sym.makefile                   |    31 +
 FALCON-examples/logging.ini                        |    46 +
 FALCON-examples/makefile                           |    20 +
 .../run/arab/fc_run.cfg                            |     9 +-
 FALCON-examples/run/arab/input.fofn                |     1 +
 .../run/ecoli/fc_run.cfg                           |     8 +-
 FALCON-examples/run/ecoli/input.fofn               |     3 +
 .../run/ecoli2/fc_run.cfg                          |     6 +-
 FALCON-examples/run/ecoli2/input.fofn              |     3 +
 .../run/lambda-hgap/fc_run.cfg                     |    24 +-
 FALCON-examples/run/lambda-hgap/input.fofn         |     1 +
 FALCON-examples/run/lambda-smb14/fc_run.cfg        |    37 +
 FALCON-examples/run/lambda-smb14/input.fofn        |     1 +
 FALCON-examples/run/lambda-smb14/logging.ini       |    46 +
 .../run/lambda/fc_run.cfg                          |    25 +-
 FALCON-examples/run/lambda/input.fofn              |     1 +
 FALCON-examples/run/synth0/check.py                |    38 +
 FALCON-examples/run/synth0/data/ref.fasta          |     2 +
 FALCON-examples/run/synth0/data/synth0.fasta       |  1750 ++
 FALCON-examples/run/synth0/fc_run.cfg              |    47 +
 FALCON-examples/run/synth0/input.fofn              |     1 +
 FALCON-examples/run/synth0/logging.ini             |    30 +
 FALCON-examples/run/synth0/logging.json            |    31 +
 FALCON-examples/run/synth0/logging.many.ini        |    66 +
 FALCON-examples/run/synth0/makefile                |    19 +
 FALCON-examples/scripts/check.py                   |    44 +
 FALCON-examples/scripts/circ-sim.py                |    92 +
 FALCON-examples/scripts/relabel_fasta.py           |    30 +
 FALCON-examples/scripts/synther.py                 |   140 +
 LICENSE => FALCON-make/LICENSE                     |     0
 FALCON-make/README.md                              |    84 +
 FALCON-make/config-edit-user.sh                    |    18 +
 FALCON-make/config-edit.sh                         |    17 +
 FALCON-make/config-standard.sh                     |    19 +
 FALCON-make/get-pip.py                             | 19177 +++++++++++++++++++
 FALCON-make/makefile                               |    68 +
 .travis.yml => FALCON/.travis.yml                  |     0
 LICENSE => FALCON/LICENSE                          |     0
 MANIFEST.in => FALCON/MANIFEST.in                  |     0
 README.md => FALCON/README.md                      |     0
 {doc => FALCON/doc}/README                         |     0
 {doc => FALCON/doc}/falcon_icon.svg                |     0
 {doc => FALCON/doc}/falcon_icon2.png               |   Bin
 {examples => FALCON/examples}/build_env.sh         |     0
 {examples => FALCON/examples}/build_env2.sh        |     0
 .../examples}/ecoli_asm_graph_exploration.ipynb    |     0
 {examples => FALCON/examples}/fc_run_LG.cfg        |     0
 {examples => FALCON/examples}/fc_run_arab.cfg      |     0
 {examples => FALCON/examples}/fc_run_dmel.cfg      |     0
 {examples => FALCON/examples}/fc_run_ecoli.cfg     |     0
 {examples => FALCON/examples}/fc_run_ecoli_2.cfg   |     0
 {examples => FALCON/examples}/logging.json         |     0
 {examples => FALCON/examples}/run_ecoli_test.sh    |     0
 {falcon_kit => FALCON/falcon_kit}/FastaReader.py   |     0
 {falcon_kit => FALCON/falcon_kit}/__init__.py      |     0
 {falcon_kit => FALCON/falcon_kit}/bash.py          |    46 +-
 {falcon_kit => FALCON/falcon_kit}/falcon_kit.py    |     0
 {falcon_kit => FALCON/falcon_kit}/fc_asm_graph.py  |     0
 {falcon_kit => FALCON/falcon_kit}/functional.py    |   129 +-
 .../falcon_kit}/mains/__init__.py                  |     0
 .../falcon_kit}/mains/actg_coordinate.py           |     0
 .../falcon_kit}/mains/calc_cutoff.py               |     0
 .../falcon_kit}/mains/consensus.py                 |     0
 .../falcon_kit}/mains/contig_annotate.py           |     0
 .../falcon_kit}/mains/ctg_link_analysis.py         |     0
 .../falcon_kit}/mains/dedup_a_tigs.py              |     0
 .../falcon_kit}/mains/fasta2fasta.py               |     0
 FALCON/falcon_kit/mains/fetch_reads.py             |   133 +
 FALCON/falcon_kit/mains/get_read_ctg_map.py        |   129 +
 .../falcon_kit}/mains/graph_to_contig.py           |     0
 .../falcon_kit}/mains/graph_to_utgs.py             |     0
 .../falcon_kit}/mains/ovlp_filter.py               |     3 +-
 .../falcon_kit}/mains/ovlp_stats.py                |     0
 .../falcon_kit}/mains/ovlp_to_graph.py             |     0
 FALCON/falcon_kit/mains/pr_ctg_track.py            |   159 +
 FALCON/falcon_kit/mains/report_pre_assembly.py     |    46 +
 FALCON/falcon_kit/mains/rr_ctg_track.py            |   169 +
 {falcon_kit => FALCON/falcon_kit}/mains/run0.py    |    12 +-
 {falcon_kit => FALCON/falcon_kit}/mains/run1.py    |   136 +-
 {falcon_kit => FALCON/falcon_kit}/mains/tasks.py   |     0
 {falcon_kit => FALCON/falcon_kit}/multiproc.py     |     0
 {falcon_kit => FALCON/falcon_kit}/run_support.py   |    29 +-
 .../falcon_kit}/stats_preassembly.py               |    65 +-
 {falcon_kit => FALCON/falcon_kit}/util/__init__.py |     0
 {falcon_kit => FALCON/falcon_kit}/util/io.py       |    12 +
 {falcon_kit => FALCON/falcon_kit}/util/system.py   |     0
 setup.py => FALCON/setup.py                        |     6 +-
 {src => FALCON/src}/c/DW_banded.c                  |     0
 {src => FALCON/src}/c/Makefile                     |     0
 {src => FALCON/src}/c/Makefile.osx                 |     0
 {src => FALCON/src}/c/common.h                     |     0
 {src => FALCON/src}/c/ext_falcon.c                 |     0
 {src => FALCON/src}/c/falcon.c                     |     0
 {src => FALCON/src}/c/kmer_lookup.c                |     4 +-
 .../src}/py_scripts/fc_actg_coordinate.py          |     0
 {src => FALCON/src}/py_scripts/fc_consensus.py     |     0
 .../src}/py_scripts/fc_contig_annotate.py          |     0
 .../src}/py_scripts/fc_ctg_link_analysis.py        |     0
 {src => FALCON/src}/py_scripts/fc_dedup_a_tigs.py  |     0
 .../src}/py_scripts/fc_graph_to_contig.py          |     0
 {src => FALCON/src}/py_scripts/fc_graph_to_utgs.py |     0
 {src => FALCON/src}/py_scripts/fc_ovlp_filter.py   |     0
 {src => FALCON/src}/py_scripts/fc_ovlp_stats.py    |     0
 {src => FALCON/src}/py_scripts/fc_ovlp_to_graph.py |     0
 {src => FALCON/src}/py_scripts/fc_run.py           |     0
 {src => FALCON/src}/py_scripts_v0.1/falcon_asm.py  |     0
 .../src}/py_scripts_v0.1/falcon_asm_s.py           |     0
 .../src}/py_scripts_v0.1/falcon_dedup.py           |     0
 .../src}/py_scripts_v0.1/falcon_fixasm.py          |     0
 .../src}/py_scripts_v0.1/falcon_overlap.py         |     0
 .../src}/py_scripts_v0.1/falcon_overlap2.py        |     0
 {src => FALCON/src}/py_scripts_v0.1/falcon_qrm.py  |     0
 .../src}/py_scripts_v0.1/falcon_qrm_0.py           |     0
 .../src}/py_scripts_v0.1/falcon_sense.py           |     0
 .../src}/py_scripts_v0.1/falcon_ucns_data.py       |     0
 .../src}/py_scripts_v0.1/falcon_utgcns.py          |     0
 {src => FALCON/src}/py_scripts_v0.1/get_ovl.sh     |     0
 {src => FALCON/src}/py_scripts_v0.1/get_rdata.py   |     0
 {src => FALCON/src}/py_scripts_v0.1/overlapper.py  |     0
 {src => FALCON/src}/py_scripts_v0.1/ovlp_filter.sh |     0
 {src => FALCON/src}/py_scripts_v0.1/redis_graph.py |     0
 .../src}/py_scripts_v0.1/remove_dup_ctg.py         |     0
 {src => FALCON/src}/utils/fetch_preads.py          |     0
 {test => FALCON/test}/HPCdaligner_synth0.sh        |     0
 FALCON/test/HPCdaligner_synth0_preads.sh           |     9 +
 {test => FALCON/test}/helpers.py                   |     0
 {test => FALCON/test}/test_actg_coordinate.py      |     0
 {test => FALCON/test}/test_consensus.py            |     0
 {test => FALCON/test}/test_contig_annotate.py      |     0
 {test => FALCON/test}/test_ctg_link_analysis.py    |     0
 {test => FALCON/test}/test_functional.py           |    82 +-
 {test => FALCON/test}/test_graph_to_contig.py      |     0
 {test => FALCON/test}/test_graph_to_utgs.py        |     0
 {test => FALCON/test}/test_ovlp_filter.py          |     0
 {test => FALCON/test}/test_ovlp_stats.py           |     0
 {test => FALCON/test}/test_ovlp_to_graph.py        |     0
 {test => FALCON/test}/test_run.py                  |     0
 {test => FALCON/test}/test_run_LG.py               |     0
 {test => FALCON/test}/test_stats_preassembly.py    |    23 +-
 {test_data => FALCON/test_data}/t1.fa              |     0
 {test_data => FALCON/test_data}/t1.fofn            |     0
 {test_data => FALCON/test_data}/t2.fa              |     0
 {test_data => FALCON/test_data}/t2.fofn            |     0
 travis.sh => FALCON/travis.sh                      |     0
 README.md                                          |    62 +-
 default-env.sh                                     |    11 +
 env.sh                                             |    11 +
 makefile                                           |    25 +
 .travis.yml => pypeFLOW/.travis.yml                |     7 +-
 pypeFLOW/License.txt                               |    20 +
 pypeFLOW/README.rst                                |    71 +
 pypeFLOW/doc/Example1.png                          |   Bin 0 -> 19144 bytes
 pypeFLOW/doc/Example2.png                          |   Bin 0 -> 182447 bytes
 pypeFLOW/doc/Makefile                              |   153 +
 pypeFLOW/doc/concurrent_execution.rst              |    15 +
 pypeFLOW/doc/conf.py                               |   242 +
 pypeFLOW/doc/examples.rst                          |   175 +
 pypeFLOW/doc/index.rst                             |    28 +
 pypeFLOW/doc/introduction.rst                      |    62 +
 pypeFLOW/doc/modules.rst                           |     7 +
 pypeFLOW/doc/pypeflow.rst                          |    35 +
 pypeFLOW/doc/rdf_resprentation.rst                 |   134 +
 pypeFLOW/example/PypeTest.py                       |   268 +
 pypeFLOW/example/README.txt                        |    10 +
 pypeFLOW/example/test_shutdown.py                  |    72 +
 .../example/testdata/.placeholder                  |     0
 pypeFLOW/examples-pwatcher/README.md               |    60 +
 pypeFLOW/examples-pwatcher/ab/delete.json          |     1 +
 pypeFLOW/examples-pwatcher/ab/jobs/b               |     3 +
 pypeFLOW/examples-pwatcher/ab/jobs/c               |     3 +
 .../examples-pwatcher/ab/logging-cfg.json          |    28 +-
 pypeFLOW/examples-pwatcher/ab/makefile             |    10 +
 pypeFLOW/examples-pwatcher/ab/query-ab.json        |     5 +
 pypeFLOW/examples-pwatcher/ab/run.json             |    12 +
 .../escher--unbelievable-527581_1024_768.jpg       |   Bin 0 -> 202550 bytes
 pypeFLOW/presentation/pipelines.png                |   Bin 0 -> 617718 bytes
 pypeFLOW/presentation/pypeFLOW_tutorial.html       |  2412 +++
 pypeFLOW/presentation/pypeFLOW_tutorial.rst        |   505 +
 .../mains => pypeFLOW/pwatcher}/__init__.py        |     0
 pypeFLOW/pwatcher/fs_based.py                      |   797 +
 .../pwatcher}/mains/__init__.py                    |     0
 pypeFLOW/pwatcher/mains/fs_heartbeat.py            |   149 +
 pypeFLOW/pwatcher/mains/pwatcher.py                |    12 +
 pypeFLOW/pwatcher/mains/pypeflow_example.py        |   133 +
 .../mains => pypeFLOW/pypeflow}/__init__.py        |     0
 pypeFLOW/pypeflow/common.py                        |   149 +
 pypeFLOW/pypeflow/controller.py                    |   875 +
 pypeFLOW/pypeflow/data.py                          |   315 +
 pypeFLOW/pypeflow/pwatcher_bridge.py               |   370 +
 pypeFLOW/pypeflow/task.py                          |   892 +
 pypeFLOW/readme.slurm.md                           |   112 +
 pypeFLOW/setup.py                                  |    27 +
 {falcon_kit/mains => pypeFLOW/src}/__init__.py     |     0
 pypeFLOW/src/tests/test_pypeflow_common.py         |    23 +
 pypeFLOW/src/tests/test_pypeflow_controller.py     |   497 +
 pypeFLOW/src/tests/test_pypeflow_data.py           |   202 +
 pypeFLOW/src/tests/test_pypeflow_task.py           |   326 +
 pypeFLOW/travis.sh                                 |    11 +
 travis.sh                                          |    22 +-
 277 files changed, 71973 insertions(+), 239 deletions(-)

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 7a42f33..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-/build/
-/dist/
-falcon_kit.egg-info/
-*.pyc
-*.pyo
-*.swp
-*.so
-*.dylib
-*.dll
-*.egg
diff --git a/.travis.yml b/.travis.yml
index dd67f33..b767859 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,20 +3,24 @@
 # This file can be validated on:
 # http://lint.travis-ci.org/
 
-#before_install: sudo apt-get install -y cmake
-# cmake is pre-installed in Travis for both linux and osx
-
-#before_install:
-#  - sudo apt-get update -qq
-#  - sudo apt-get install -qq valgrind
-#sudo: required
 os:
   - linux
-language: python
+language: cpp
 compiler:
-  - clang  # hmm. distutils uses 'gcc' anyway
-#  - gcc
+  - gcc
+#  - clang
+#  We should test with clang within the modules, not here.
 script: ./travis.sh
+#addons:
+#  apt:
+#    sources:
+#    - ubuntu-toolchain-r-test
+#    packages:
+#    - time
+#    - gcc-4.8
+#    - g++-4.8
+#    - clang
+#   - libxqilla-dev # missing, but not needed?
 #env:
 #  matrix:
 #    - SHARED_LIB=ON  STATIC_LIB=ON CMAKE_PKG=ON  BUILD_TYPE=release VERBOSE_MAKE=false
diff --git a/DALIGNER/DB2Falcon.c b/DALIGNER/DB2Falcon.c
new file mode 100644
index 0000000..3be1122
--- /dev/null
+++ b/DALIGNER/DB2Falcon.c
@@ -0,0 +1,133 @@
+/********************************************************************************************
+ *
+ *  Recreate all the .fasta files that have been loaded into a specified database.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  May 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "DB.h"
+
+static char *Usage = "[-U] [-w<int(80)>] <path:db>";
+
+int main(int argc, char *argv[])
+{ HITS_DB    _db, *db = &_db;
+  FILE       *dbfile;
+  int         nfiles;
+  int         UPPER, WIDTH;
+
+  //  Process arguments
+
+  { int   i, j, k;
+    int   flags[128];
+    char *eptr;
+
+    ARG_INIT("DB2fasta")
+
+    WIDTH = 80;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("U")
+            break;
+          case 'w':
+            ARG_NON_NEGATIVE(WIDTH,"Line width")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    UPPER = 1 + flags['U'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open db and also db image file (dbfile)
+
+  if (Open_DB(argv[1],db))
+    { fprintf(stderr,"%s: Database %s.db could not be opened\n",Prog_Name,argv[1]);
+      exit (1);
+    }
+  if (db->part > 0)
+    { fprintf(stderr,"%s: Cannot be called on a block: %s.db\n",Prog_Name,argv[1]);
+      exit (1);
+    }
+
+  Trim_DB(db);
+  { char *pwd, *root;
+
+    pwd    = PathTo(argv[1]);
+    root   = Root(argv[1],".db");
+    dbfile = Fopen(Catenate(pwd,"/",root,".db"),"r");
+    free(pwd);
+    free(root);
+    if (dbfile == NULL)
+      exit (1);
+  }
+
+  //  nfiles = # of files in data base
+
+  fscanf(dbfile,DB_NFILE,&nfiles);
+
+  //  For each file do:
+
+  { HITS_READ  *reads;
+    char       *read;
+    int         f, first;
+    FILE *ofile;
+
+    reads = db->reads;
+    read  = New_Read_Buffer(db);
+    first = 0;
+    if ((ofile = Fopen(Catenate(".","/","preads4falcon",".fasta"),"w")) == NULL)
+      exit (1);
+    for (f = 0; f < nfiles; f++)
+      { int   i, last;
+        char  prolog[MAX_NAME], fname[MAX_NAME];
+
+        //  Scan db image file line, create .fasta file for writing
+
+        fscanf(dbfile,DB_FDATA,&last,fname,prolog);
+
+
+        //   For the relevant range of reads, write each to the file
+        //     recreating the original headers with the index meta-data about each read
+
+        for (i = first; i < last && i <  db->nreads; i++)
+          { int        j, len;
+            HITS_READ *r;
+
+            r     = reads + i;
+            len   = r->rlen;
+            fprintf(ofile,">%09lld", (long long int) i);
+            fprintf(ofile,"\n");
+
+            Load_Read(db,i,read,UPPER);
+
+            for (j = 0; j+WIDTH < len; j += WIDTH)
+              fprintf(ofile,"%.*s\n",WIDTH,read+j);
+            if (j < len)
+              fprintf(ofile,"%s\n",read+j);
+          }
+
+        first = last;
+      }
+  fclose(ofile);
+  }
+
+  fclose(dbfile);
+  Close_DB(db);
+  exit (0);
+}
diff --git a/DALIGNER/GNUmakefile b/DALIGNER/GNUmakefile
new file mode 100644
index 0000000..d0ceb2f
--- /dev/null
+++ b/DALIGNER/GNUmakefile
@@ -0,0 +1,33 @@
+THISDIR:=$(abspath $(dir $(realpath $(lastword ${MAKEFILE_LIST}))))
+LIBDIRS?=${THISDIR}/../DAZZ_DB
+CFLAGS+= -O3 -Wall -Wextra -fno-strict-aliasing -Wno-unused-result
+CPPFLAGS+= -I${THISDIR}/../DAZZ_DB -I${PREFIX}/include
+#CPPFLAGS+= -MMD -MP
+LDLIBS+= -ldazzdb -lm -lpthread
+LDFLAGS+= $(patsubst %,-L%,${LIBDIRS})
+MOST = daligner HPC.daligner LAsort LAmerge LAsplit LAcat LAshow LAdump LAcheck LAindex
+ALL:=${MOST} daligner_p LA4Falcon LA4Ice DB2Falcon
+vpath %.c ${THISDIR}
+vpath %.a ${THISDIR}/../DAZZ_DB
+
+%: %.c
+
+all: ${ALL}
+daligner: filter.o
+daligner_p: filter_p.o
+${ALL}: align.o
+
+install:
+	rsync -av ${ALL} ${PREFIX}/bin
+symlink:
+	ln -sf $(addprefix ${CURDIR}/,${ALL}) ${PREFIX}/bin
+clean:
+	rm -f ${ALL}
+	rm -f ${DEPS}
+	rm -fr *.dSYM *.o *.d
+
+.PHONY: clean all
+
+SRCS:=$(notdir $(wildcard ${THISDIR}/*.c))
+#DEPS:=$(patsubst %.c,%.d,${SRCS})
+#-include ${DEPS}
diff --git a/DALIGNER/HPC.daligner.c b/DALIGNER/HPC.daligner.c
new file mode 100644
index 0000000..c5ad623
--- /dev/null
+++ b/DALIGNER/HPC.daligner.c
@@ -0,0 +1,1585 @@
+/*********************************************************************************************\
+ *
+ *  Produce a script to compute overlaps for all block pairs of a DB, and then sort and merge
+ *    them into as many .las files as their are blocks.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  June 1, 2014
+ *
+ *********************************************************************************************/
+ 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "filter.h"
+
+#undef  LSF  //  define if want a directly executable LSF script
+
+static char *Usage[] =
+  { "[-vbad] [-t<int>] [-w<int(6)>] [-l<int(1000)>] [-s<int(100)]",
+    "        [-M<int>] [-B<int(4)>] [-D<int( 250)>] [-T<int(4)>] [-f<name>]",
+    "      ( [-k<int(14)>] [-h<int(35)>] [-e<double(.70)>] [-AI] [-H<int>] |",
+    "        [-k<int(20)>] [-h<int(50)>] [-e<double(.85)>]  <ref:db|dam>   )",
+    "        [-m<track>]+ <reads:db|dam> [<first:int>[-<last:int>]"
+  };
+
+  //  Command Options
+
+static int    DUNIT, BUNIT;
+static int    VON, BON, AON, ION, CON, DON;
+static int    WINT, TINT, HGAP, HINT, KINT, SINT, LINT, MINT;
+static int    NTHREADS;
+static double EREL;
+static int    MMAX, MTOP;
+static char **MASK;
+static char  *ONAME;
+
+#define LSF_ALIGN "bsub -q medium -n 4 -o DALIGNER.out -e DALIGNER.err -R span[hosts=1] -J align#%d"
+#define LSF_SORT  "bsub -q short -n 12 -o SORT.DAL.out -e SORT.DAL.err -R span[hosts=1] -J sort#%d"
+#define LSF_MERGE \
+          "bsub -q short -n 12 -o MERGE%d.DAL.out -e MERGE%d.DAL.err -R span[hosts=1] -J merge#%d"
+#define LSF_CHECK \
+          "bsub -q short -n 12 -o CHECK%d.DAL.out -e CHECK%d.DAL.err -R span[hosts=1] -J check#%d"
+
+void daligner_script(int argc, char *argv[])
+{ int   nblocks;
+  int   usepath;
+  int   useblock;
+  int   fblock, lblock;
+#ifdef LSF
+  int   jobid;
+#endif
+
+  FILE *out;
+  char  name[100];
+  char *pwd, *root;
+
+  //  Make sure DB exists and is partitioned, get number of blocks in partition
+
+  pwd = PathTo(argv[1]);
+  if (strcmp(argv[1]+(strlen(argv[1])-4),".dam") == 0)
+    root = Root(argv[1],".dam");
+  else
+    root = Root(argv[1],".db");
+
+  { int i, nfiles;
+    FILE *dbvis;
+
+    dbvis = fopen(Catenate(pwd,"/",root,".dam"),"r");
+    if (dbvis == NULL)
+      { dbvis = Fopen(Catenate(pwd,"/",root,".db"),"r");
+        if (dbvis == NULL)
+          exit (1);
+      }
+
+    if (fscanf(dbvis,"files = %d\n",&nfiles) != 1)
+      SYSTEM_ERROR
+    for (i = 0; i < nfiles; i++)
+      { char buffer[30001];
+
+        if (fgets(buffer,30000,dbvis) == NULL)
+          SYSTEM_ERROR
+      }
+
+    useblock = 1;
+    if (fscanf(dbvis,"blocks = %d\n",&nblocks) != 1 || nblocks == 1)
+      { useblock = 0;
+        nblocks  = 1;
+      }
+
+    usepath = (strcmp(pwd,".") != 0);
+  }
+
+  //  Set range fblock-lblock checking that DB.<fblock-1>.las exists & DB.<fblock>.las does not
+
+  { char *eptr, *fptr;
+    FILE *file;
+
+    if (argc == 3)
+      { fblock = strtol(argv[2],&eptr,10);
+        if (*eptr != '\0' && *eptr != '-')
+          { fprintf(stderr,"%s: final argument '%s' does not start with an integer\n",
+                           Prog_Name,argv[2]);
+            exit (1);
+          }
+        useblock = 1;
+        if (*eptr == '-')
+          { lblock = strtol(eptr+1,&fptr,10);
+            if (*fptr != '\0')
+              { fprintf(stderr,"%s: second part of range '%s' is not an integer\n",
+                               Prog_Name,eptr+1);
+                exit (1);
+              }
+          }
+        else
+          lblock = fblock;
+        if (fblock < 1 || lblock > nblocks || fblock > lblock)
+          { fprintf(stderr,"%s: range %d-%d is empty or out of bounds\n",Prog_Name,fblock,lblock);
+            exit (1);
+          }
+      }
+    else
+      { fblock = 1;
+        lblock = nblocks;
+      }
+
+    if (fblock > 1)
+      { file = fopen(Catenate(pwd,"/",root,Numbered_Suffix(".",fblock-1,".las")),"r");
+        if (file == NULL)
+          { if (usepath)
+              fprintf(stderr,"%s: File %s/%s.%d.las should already be present!\n",
+                             Prog_Name,pwd,root,fblock-1);
+            else
+              fprintf(stderr,"%s: File %s.%d.las should already be present!\n",
+                             Prog_Name,root,fblock-1);
+            exit (1);
+          }
+        else
+          fclose(file);
+      }
+    if (useblock)
+      file = fopen(Catenate(pwd,"/",root,Numbered_Suffix(".",fblock,".las")),"r");
+    else
+      file = fopen(Catenate(pwd,"/",root,".las"),"r");
+    if (file != NULL)
+      { if (usepath)
+          if (useblock)
+            fprintf(stderr,"%s: File %s/%s.%d.las should not yet exist!\n",
+                           Prog_Name,pwd,root,fblock);
+          else
+            fprintf(stderr,"%s: File %s/%s.las should not yet exist!\n",Prog_Name,pwd,root);
+        else
+          if (useblock)
+            fprintf(stderr,"%s: File %s.%d.las should not yet exist!\n",Prog_Name,root,fblock);
+          else
+            fprintf(stderr,"%s: File %s.las should not yet exist!\n",Prog_Name,root);
+        exit (1);
+      }
+
+    DON = (DON && useblock);
+    out = stdout;
+  }
+
+  { int level, njobs;
+    int i, j, k, p;
+
+    //  Create all work subdirectories if DON
+
+    if (DON)
+      { if (ONAME != NULL)
+          { sprintf(name,"%s.00.MKDIR",ONAME);
+            out = fopen(name,"w");
+          }
+
+        fprintf(out,"# Create work subdirectories\n");
+        for (i = fblock; i <= lblock; i++)
+          fprintf(out,"mkdir work%d\n",i);
+      }
+
+    //  Produce all necessary daligner jobs ...
+
+    if (ONAME != NULL)
+      { sprintf(name,"%s.01.OVL",ONAME);
+        out = fopen(name,"w");
+      }
+
+    njobs = 0;
+    for (i = fblock; i <= lblock; i++)
+      njobs += (i-1)/BUNIT+1;
+
+    fprintf(out,"# Daligner jobs (%d)\n",njobs);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i++)
+      { int bits;
+        int low, hgh;
+
+        bits = (i-1)/BUNIT+1;
+        low  = 1;
+        for (j = 1; j <= bits; j++)
+          {
+#ifdef LSF
+            fprintf(out,LSF_ALIGN,jobid++);
+            fprintf(out," \"");
+#endif
+            fprintf(out,"daligner");
+            if (VON)
+              fprintf(out," -v");
+            if (BON)
+              fprintf(out," -b");
+            if (AON)
+              fprintf(out," -A");
+            if (ION)
+              fprintf(out," -I");
+            if (KINT != 14)
+              fprintf(out," -k%d",KINT);
+            if (WINT != 6)
+              fprintf(out," -w%d",WINT);
+            if (HINT != 35)
+              fprintf(out," -h%d",HINT);
+            if (TINT > 0)
+              fprintf(out," -t%d",TINT);
+            if (HGAP > 0)
+              fprintf(out," -H%d",HGAP);
+            if (EREL > 0.)
+              fprintf(out," -e%g",EREL);
+            if (LINT != 1000)
+              fprintf(out," -l%d",LINT);
+            if (SINT != 100)
+              fprintf(out," -s%d",SINT);
+            if (MINT >= 0)
+              fprintf(out," -M%d",MINT);
+            if (NTHREADS != 4)
+              fprintf(out," -T%d",NTHREADS);
+            for (k = 0; k < MTOP; k++)
+              fprintf(out," -m%s",MASK[k]);
+            if (useblock)
+              if (usepath)
+                fprintf(out," %s/%s.%d",pwd,root,i);
+              else
+                fprintf(out," %s.%d",root,i);
+            else
+              if (usepath)
+                fprintf(out," %s/%s",pwd,root);
+              else
+                fprintf(out," %s",root);
+            hgh = (i*j)/bits + 1;
+            for (k = low; k < hgh; k++)
+              if (useblock)
+                if (usepath)
+                  fprintf(out," %s/%s.%d",pwd,root,k);
+                else
+                  fprintf(out," %s.%d",root,k);
+              else
+                if (usepath)
+                  fprintf(out," %s/%s",pwd,root);
+                else
+                  fprintf(out," %s",root);
+
+            if (DON)
+              for (k = low; k < hgh; k++)
+                { fprintf(out," && mv");
+                  for (p = 0; p < NTHREADS; p++)
+                    { fprintf(out," %s.%d.%s.%d.C%d.las",root,i,root,k,p);
+                      fprintf(out," %s.%d.%s.%d.N%d.las",root,i,root,k,p);
+                    }
+                  fprintf(out," work%d",i);
+                  if (k != i)
+                    { fprintf(out," && mv");
+                      for (p = 0; p < NTHREADS; p++)
+                        { fprintf(out," %s.%d.%s.%d.C%d.las",root,k,root,i,p);
+                          fprintf(out," %s.%d.%s.%d.N%d.las",root,k,root,i,p);
+                        }
+                      fprintf(out," work%d",k);
+                    }
+                }
+
+#ifdef LSF
+            fprintf(out,"\"");
+#endif
+            fprintf(out,"\n");
+            low = hgh;
+          }
+      }
+
+    //  ... and then all the initial sort & merge jobs for each block pair
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.02.SORT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Initial sort jobs (%d)\n", lblock*lblock - (fblock-1)*(fblock-1) );
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = 1; i <= lblock; i++)
+      for (j = (i < fblock ? fblock : 1); j <= lblock; j++)
+        {
+#ifdef LSF
+          fprintf(out,LSF_SORT,jobid++);
+          fprintf(out," \"");
+#endif
+          fprintf(out,"LAsort");
+          if (VON)
+            fprintf(out," -v");
+          if (CON)
+            fprintf(out," -a");
+          for (k = 0; k < NTHREADS; k++)
+            if (useblock)
+              if (DON)
+                { fprintf(out," work%d/%s.%d.%s.%d.C%d",i,root,i,root,j,k);
+                  fprintf(out," work%d/%s.%d.%s.%d.N%d",i,root,i,root,j,k);
+                }
+              else
+                { fprintf(out," %s.%d.%s.%d.C%d",root,i,root,j,k);
+                  fprintf(out," %s.%d.%s.%d.N%d",root,i,root,j,k);
+                }
+            else
+              { fprintf(out," %s.%s.C%d",root,root,k);
+                fprintf(out," %s.%s.N%d",root,root,k);
+              }
+          fprintf(out," && LAmerge");
+          if (VON)
+            fprintf(out," -v");
+          if (CON)
+            fprintf(out," -a");
+          if (lblock == 1)
+            { if (usepath)
+                if (useblock)
+                  fprintf(out," %s/%s.1",pwd,root);
+                else
+                  fprintf(out," %s/%s",pwd,root);
+              else
+                if (useblock)
+                  fprintf(out," %s.1",root);
+                else
+                  fprintf(out," %s",root);
+            }
+          else if (i < fblock)
+            { if (DON)
+                fprintf(out," work%d/L1.%d.%d",i,i,(j-fblock)+1);
+              else
+                fprintf(out," L1.%d.%d",i,(j-fblock)+1);
+            }
+          else
+            { if (DON)
+                fprintf(out," work%d/L1.%d.%d",i,i,j);
+              else
+                fprintf(out," L1.%d.%d",i,j);
+            }
+          for (k = 0; k < NTHREADS; k++)
+            if (useblock)
+              if (DON)
+                { fprintf(out," work%d/%s.%d.%s.%d.C%d.S",i,root,i,root,j,k);
+                  fprintf(out," work%d/%s.%d.%s.%d.N%d.S",i,root,i,root,j,k);
+                }
+              else
+                { fprintf(out," %s.%d.%s.%d.C%d.S",root,i,root,j,k);
+                  fprintf(out," %s.%d.%s.%d.N%d.S",root,i,root,j,k);
+                }
+            else
+              { fprintf(out," %s.%s.C%d.S",root,root,k);
+                fprintf(out," %s.%s.N%d.S",root,root,k);
+              }
+
+#ifdef LSF
+          fprintf(out,"\"");
+#endif
+          fprintf(out,"\n");
+        }
+
+    //  Check .las files (optional)
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.03.CHECK.OPT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Check initial .las files jobs (%d) (optional but recommended)\n",
+                 (fblock-1) * ((lblock-fblock)/(BUNIT+1) + 1) +
+                 (lblock-fblock+1) * ((lblock-1)/(BUNIT+1) + 1) );
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = 1; i <= lblock; i++)
+      for (j = (i < fblock ? fblock : 1); j <= lblock; )
+        { k = j+BUNIT;
+          if (k > lblock)
+            k = lblock;
+#ifdef LSF
+          fprintf(out,LSF_CHECK,0,0,jobid++);
+          fprintf(out," \"");
+#endif
+          fprintf(out,"LAcheck -vS");
+          if (usepath)
+            fprintf(out," %s/%s",pwd,root);
+          else
+            fprintf(out," %s",root);
+          while (j <= k)
+            { if (lblock == 1)
+                { if (usepath)
+                    if (useblock)
+                      fprintf(out," %s/%s.1",pwd,root);
+                    else
+                      fprintf(out," %s/%s",pwd,root);
+                  else
+                    if (useblock)
+                      fprintf(out," %s.1",root);
+                    else
+                      fprintf(out," %s",root);
+                }
+              else if (i < fblock)
+                { if (DON)
+                    fprintf(out," work%d/L1.%d.%d",i,i,(j-fblock)+1);
+                  else
+                    fprintf(out," L1.%d.%d",i,(j-fblock)+1);
+                }
+              else
+                { if (DON)
+                    fprintf(out," work%d/L1.%d.%d",i,i,j);
+                  else
+                    fprintf(out," L1.%d.%d",i,j);
+                }
+              j += 1;
+            }
+#ifdef LSF
+          fprintf(out,"\"");
+#endif
+          fprintf(out,"\n");
+        }
+
+    //  Clean up
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.04.RM",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Remove initial .las files\n");
+
+    for (i = 1; i <= lblock; i++)
+      { if (DON)
+          fprintf(out,"cd work%d\n",i);
+        for (j = (i < fblock ? fblock : 1); j <= lblock; j++)
+          { fprintf(out,"rm");
+            for (k = 0; k < NTHREADS; k++)
+              if (useblock)
+                { fprintf(out," %s.%d.%s.%d.C%d.las",root,i,root,j,k);
+                  fprintf(out," %s.%d.%s.%d.N%d.las",root,i,root,j,k);
+                }
+              else
+                { fprintf(out," %s.%s.C%d.las",root,root,k);
+                  fprintf(out," %s.%s.N%d.las",root,root,k);
+                }
+            fprintf(out,"\n");
+            fprintf(out,"rm");
+            for (k = 0; k < NTHREADS; k++)
+              if (useblock)
+                { fprintf(out," %s.%d.%s.%d.C%d.S.las",root,i,root,j,k);
+                  fprintf(out," %s.%d.%s.%d.N%d.S.las",root,i,root,j,k);
+                }
+              else
+                { fprintf(out," %s.%s.C%d.S.las",root,root,k);
+                  fprintf(out," %s.%s.N%d.S.las",root,root,k);
+                }
+            fprintf(out,"\n");
+          }
+        if (DON)
+          fprintf(out,"cd ..\n");
+      }
+
+    if (ONAME != NULL)
+      fclose(out);
+
+    //  Higher level merges (if lblock > 1)
+
+    if (lblock > 1)
+      { int pow, stage;
+
+        //  Determine the number of merging levels
+
+        stage = 5;
+
+        pow = 1;
+        for (level = 0; pow < lblock; level++)
+          pow *= DUNIT;
+
+        //  Issue the commands for each merge level
+
+        { int  p, cnt, dnt;
+
+          cnt = lblock;
+          dnt = (lblock-fblock)+1;
+          for (i = 1; i <= level; i++)
+            { int bits, dits;
+              int low, hgh;
+
+              if (ONAME != NULL)
+                { sprintf(name,"%s.%02d.MERGE",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              bits = (cnt-1)/DUNIT+1;
+              dits = (dnt-1)/DUNIT+1;
+
+              //  Incremental update merges
+
+#ifdef LSF
+              jobid = 1;
+#endif
+              if (dnt >= 1)
+                { int last;
+
+                  last = (dnt == 1 || i == level);
+                  fprintf(out,"# Level %d merge jobs (%d)\n",
+                              i,bits*((lblock-fblock)+1) + dits*(fblock-1));
+                  for (j = 1; j < fblock; j++)
+                    {
+#ifdef LSF
+                      fprintf(out,LSF_MERGE,i,i,jobid++);
+                      fprintf(out," \"");
+#endif
+                      if (last)
+                        { if (DON)
+                            { if (usepath)
+                                fprintf(out,"mv %s/%s.%d.las work%d/L%d.%d.0.las && ",
+                                            pwd,root,j,j,i,j);
+                              else
+                                fprintf(out,"mv %s.%d.las work%d/L%d.%d.0.las && ",root,j,j,i,j);
+                            }
+                          else
+                            { if (usepath)
+                                fprintf(out,"mv %s/%s.%d.las L%d.%d.0.las && ",pwd,root,j,i,j);
+                              else
+                                fprintf(out,"mv %s.%d.las L%d.%d.0.las && ",root,j,i,j);
+                            }
+                        }
+                      low = 1;
+                      for (p = 1; p <= dits; p++)
+                        { hgh = (dnt*p)/dits;
+#ifdef LSF
+                          if (p > 1)
+                            { fprintf(out,LSF_MERGE,i,i,jobid++);
+                              fprintf(out," \"");
+                            }
+#endif
+                          fprintf(out,"LAmerge");
+                          if (VON)
+                            fprintf(out," -v");
+                          if (CON)
+                            fprintf(out," -a");
+                          if (last)
+                            if (DON)
+                              if (usepath)
+                                fprintf(out," %s/%s.%d work%d/L%d.%d.0",pwd,root,j,j,i,j);
+                              else
+                                fprintf(out," %s.%d work%d/L%d.%d.0",root,j,j,i,j);
+                            else
+                              if (usepath)
+                                fprintf(out," %s/%s.%d L%d.%d.0",pwd,root,j,i,j);
+                              else
+                                fprintf(out," %s.%d L%d.%d.0",root,j,i,j);
+                          else
+                            if (DON)
+                              fprintf(out," work%d/L%d.%d.%d",j,i+1,j,p);
+                            else
+                              fprintf(out," L%d.%d.%d",i+1,j,p);
+                          for (k = low; k <= hgh; k++)
+                            if (DON)
+                              fprintf(out," work%d/L%d.%d.%d",j,i,j,k);
+                            else
+                              fprintf(out," L%d.%d.%d",i,j,k);
+#ifdef LSF
+                          fprintf(out,"\"");
+#endif
+                          fprintf(out,"\n");
+                          low = hgh+1;
+                        }
+                    }
+                }
+              else
+                fprintf(out,"# Level %d merge jobs (%d)\n",i,bits*((lblock-fblock)+1));
+
+              //  New block merges
+
+              for (j = fblock; j <= lblock; j++) 
+                { low = 1;
+                  for (p = 1; p <= bits; p++)
+                    { hgh = (cnt*p)/bits;
+#ifdef LSF
+                      fprintf(out,LSF_MERGE,i,i,jobid++);
+                      fprintf(out," \"");
+#endif
+                      fprintf(out,"LAmerge");
+                      if (VON)
+                        fprintf(out," -v");
+                      if (CON)
+                        fprintf(out," -a");
+                      if (i == level)
+                        if (usepath)
+                          fprintf(out," %s/%s.%d",pwd,root,j);
+                        else
+                          fprintf(out," %s.%d",root,j);
+                      else
+                        if (DON)
+                          fprintf(out," work%d/L%d.%d.%d",j,i+1,j,p);
+                        else
+                          fprintf(out," L%d.%d.%d",i+1,j,p);
+                      for (k = low; k <= hgh; k++)
+                        if (DON)
+                          fprintf(out," work%d/L%d.%d.%d",j,i,j,k);
+                        else
+                          fprintf(out," L%d.%d.%d",i,j,k);
+#ifdef LSF
+                      fprintf(out,"\"");
+#endif
+                      fprintf(out,"\n");
+                      low = hgh+1;
+                    }
+                }
+
+              //  Check new .las (optional)
+
+              if (ONAME != NULL)
+                { fclose(out);
+                  sprintf(name,"%s.%02d.CHECK.OPT",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              fprintf(out,"# Check level %d .las files jobs (%d) (optional but recommended)\n",
+                          i+1,(fblock-1)*((dits-1)/(BUNIT+1)+1) +
+                              (lblock-fblock+1)*((bits-1)/(BUNIT+1)+1) );
+
+#ifdef LSF
+              jobid = 1;
+#endif
+              if (dnt >= 1)
+                { int last;
+
+                  last = (dnt == 1 || i == level);
+                  for (j = 1; j < fblock; j++)
+                    for (p = 1; p <= dits;)
+                      { k = p+BUNIT;
+                        if (k > dits)
+                          k = dits;
+#ifdef LSF
+                        fprintf(out,LSF_CHECK,i,i,jobid++);
+                        fprintf(out," \"");
+#endif
+                        fprintf(out,"LAcheck -vS");
+                        if (usepath)
+                          fprintf(out," %s/%s",pwd,root);
+                        else
+                          fprintf(out," %s",root);
+                        while (p <= k)
+                          { if (last)
+                              if (usepath)
+                                fprintf(out," %s/%s.%d",pwd,root,j);
+                              else
+                                fprintf(out," %s.%d",root,j);
+                            else
+                              if (DON)
+                                fprintf(out," work%d/L%d.%d.%d",j,i+1,j,p);
+                              else
+                                fprintf(out," L%d.%d.%d",i+1,j,p);
+                            p += 1;
+                          }
+#ifdef LSF
+                        fprintf(out,"\"");
+#endif
+                        fprintf(out,"\n");
+                      }
+                }
+
+              for (j = fblock; j <= lblock; j++) 
+                for (p = 1; p <= bits;)
+                  { k = p+BUNIT;
+                    if (k > bits)
+                      k = bits;
+#ifdef LSF
+                    fprintf(out,LSF_CHECK,i,i,jobid++);
+                    fprintf(out," \"");
+#endif
+                    fprintf(out,"LAcheck -vS");
+                    if (usepath)
+                      fprintf(out," %s/%s",pwd,root);
+                    else
+                      fprintf(out," %s",root);
+                    while (p <= k)
+                      { if (i == level)
+                          if (usepath)
+                            fprintf(out," %s/%s.%d",pwd,root,j);
+                          else
+                            fprintf(out," %s.%d",root,j);
+                        else
+                          if (DON)
+                            fprintf(out," work%d/L%d.%d.%d",j,i+1,j,p);
+                          else
+                            fprintf(out," L%d.%d.%d",i+1,j,p);
+                        p += 1;
+                      }
+#ifdef LSF
+                    fprintf(out,"\"");
+#endif
+                    fprintf(out,"\n");
+                  }
+
+              //  Cleanup (optional)
+
+              if (ONAME != NULL)
+                { fclose(out);
+                  if (i == 1)
+                    sprintf(name,"%s.%02d.RM.OPT",ONAME,stage++);
+                  else
+                    sprintf(name,"%s.%02d.RM",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+              if (i == 1)
+                fprintf(out,"# Remove level %d .las files (optional)\n",i);
+              else
+                fprintf(out,"# Remove level %d .las files\n",i);
+
+              if (dnt >= 1)
+                { int last;
+
+                  last = (dnt == 1 || i == level);
+                  for (j = 1; j < fblock; j++)
+                    { low = 1;
+                      if (DON)
+                        fprintf(out,"cd work%d\n",j);
+                      for (p = 1; p <= dits; p++)
+                        { hgh = (dnt*p)/dits;
+                          fprintf(out,"rm");
+                          if (last)
+                            fprintf(out," L%d.%d.0.las",i,j);
+                          for (k = low; k <= hgh; k++)
+                            fprintf(out," L%d.%d.%d.las",i,j,k);
+                          fprintf(out,"\n");
+                          low = hgh+1;
+                        }
+                      if (DON)
+                        fprintf(out,"cd ..\n");
+                    }
+                }
+
+              for (j = fblock; j <= lblock; j++) 
+                { low = 1;
+                  if (DON)
+                    fprintf(out,"cd work%d\n",j);
+                  for (p = 1; p <= bits; p++)
+                    { hgh = (cnt*p)/bits;
+                      fprintf(out,"rm");
+                      for (k = low; k <= hgh; k++)
+                        fprintf(out," L%d.%d.%d.las",i,j,k);
+                      fprintf(out,"\n");
+                      low = hgh+1;
+                    }
+                  if (DON)
+                    fprintf(out,"cd ..\n");
+                }
+
+              if (ONAME != NULL)
+                fclose(out);
+
+              if (dnt >= 1)
+                { if (dnt > 1)
+                    dnt = dits;
+                  else
+                    dnt = 0;
+                }
+              cnt = bits;
+            }
+        }
+    }
+  }
+
+  free(root);
+  free(pwd);
+}
+
+/*********************************************************************************************\
+ *
+ *  Produce a script to compute overlaps for all block pairs between two DBs, and then sort
+ *    and merge them into as many .las files as their are blocks of the 1st DB.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  December 31, 2014
+ *
+ *********************************************************************************************/
+ 
+#define LSF_MALIGN "bsub -q medium -n 4 -o MAPALL.out -e MAPALL.err -R span[hosts=1] -J align#%d"
+#define LSF_MSORT  "bsub -q short -n 12 -o SORT.ALL.out -e SORT.ALL.err -R span[hosts=1] -J sort#%d"
+#define LSF_MMERGE \
+            "bsub -q short -n 12 -o MERGE%d.ALL.out -e MERGE%d.ALL.err -R span[hosts=1] -J merge#%d"
+
+void mapper_script(int argc, char *argv[])
+{ int   nblocks1, nblocks2;
+  int   useblock1, useblock2;
+  int   usepath1, usepath2;
+  int   fblock, lblock;
+#ifdef LSF
+  int   jobid;
+#endif
+
+  FILE *out;
+  char  name[100];
+  char *pwd1, *root1;
+  char *pwd2, *root2;
+
+  //  Make sure DAM and DB exist and the DB is partitioned, get number of blocks in partition
+
+  pwd1   = PathTo(argv[1]);
+  if (strcmp(argv[1]+(strlen(argv[1])-4),".dam") == 0)
+    root1 = Root(argv[1],".dam");
+  else
+    root1 = Root(argv[1],".db");
+
+  { int i, nfiles;
+    FILE *dbvis;
+
+    dbvis = fopen(Catenate(pwd1,"/",root1,".dam"),"r");
+    if (dbvis == NULL)
+      { dbvis = Fopen(Catenate(pwd1,"/",root1,".db"),"r");
+        if (dbvis == NULL)
+          exit (1);
+      }
+
+    if (fscanf(dbvis,"files = %d\n",&nfiles) != 1)
+      SYSTEM_ERROR
+    for (i = 0; i < nfiles; i++)
+      { char buffer[30001];
+
+        if (fgets(buffer,30000,dbvis) == NULL)
+          SYSTEM_ERROR
+      }
+
+    useblock1 = 1;
+    if (fscanf(dbvis,"blocks = %d\n",&nblocks1) != 1 || nblocks1 == 1)
+      { useblock1 = 0;
+        nblocks1  = 1;
+      }
+
+    usepath1 = (strcmp(pwd1,".") != 0);
+
+    fclose(dbvis);
+  }
+
+  pwd2   = PathTo(argv[2]);
+  if (strcmp(argv[2]+(strlen(argv[2])-4),".dam") == 0)
+    root2 = Root(argv[2],".dam");
+  else
+    root2 = Root(argv[2],".db");
+
+  if (strcmp(root2,root1) == 0 && strcmp(pwd1,pwd2) == 0)
+    { fprintf(stderr,"%s: Comparing the same data base %s/%s against itself, use HPCdaligner\n",
+                     Prog_Name,pwd1,root1);
+      exit (1);
+    }
+
+  { int i, nfiles;
+    FILE *dbvis;
+
+    dbvis = fopen(Catenate(pwd2,"/",root2,".dam"),"r");
+    if (dbvis == NULL)
+      { dbvis = Fopen(Catenate(pwd2,"/",root2,".db"),"r");
+        if (dbvis == NULL)
+          exit (1);
+      }
+
+    if (fscanf(dbvis,"files = %d\n",&nfiles) != 1)
+      SYSTEM_ERROR
+    for (i = 0; i < nfiles; i++)
+      { char buffer[30001];
+
+        if (fgets(buffer,30000,dbvis) == NULL)
+          SYSTEM_ERROR
+      }
+
+    useblock2 = 1;
+    if (fscanf(dbvis,"blocks = %d\n",&nblocks2) != 1 || nblocks2 == 1)
+      { useblock2 = 0;
+        nblocks2  = 1;
+      }
+
+    usepath2 = (strcmp(pwd2,".") != 0);
+
+    fclose(dbvis);
+  }
+
+  //  Set range fblock-lblock checking that DB.<fblock-1>.las exists & DB.<fblock>.las does not
+
+  { char *eptr, *fptr, *src2;
+    FILE *file;
+
+    if (argc == 4)
+      { fblock = strtol(argv[3],&eptr,10);
+        if ((*eptr != '\0' && *eptr != '-') || eptr <= argv[3])
+          { fprintf(stderr,"%s: final argument '%s' does not start with an integer\n",
+                           Prog_Name,argv[3]);
+            exit (1);
+          }
+        useblock2 = 1;
+        if (*eptr == '-')
+          { lblock = strtol(eptr+1,&fptr,10);
+            if (*fptr != '\0' || fptr <= eptr+1)
+              { fprintf(stderr,"%s: second part of range '%s' is not an integer\n",
+                               Prog_Name,eptr+1);
+                exit (1);
+              }
+          }
+        else
+          lblock = fblock;
+        if (fblock < 1 || lblock > nblocks2 || fblock > lblock)
+          { fprintf(stderr,"%s: range %d-%d is empty or out of bounds\n",Prog_Name,fblock,lblock);
+            exit (1);
+          }
+      }
+    else
+      { fblock = 1;
+        lblock = nblocks2;
+      }
+
+    if (usepath2)
+      src2 = Strdup(Catenate(pwd2,"/",root2,""),"Allocating small string!");
+    else
+      src2 = Strdup(root2,"Allocating small string!");
+    if (src2 == NULL)
+      exit (1);
+
+    if (fblock > 1)
+      { file = fopen(Catenate(src2,".",root1,Numbered_Suffix(".",fblock-1,".las")),"r");
+        if (file == NULL)
+          { fprintf(stderr,"%s: File %s.%s.%d.las should already be present!\n",
+                           Prog_Name,src2,root1,fblock-1);
+            exit (1);
+          }
+        else
+          fclose(file);
+      }
+    if (useblock2)
+      { file = fopen(Catenate(src2,".",root1,Numbered_Suffix(".",fblock,".las")),"r");
+        if (file != NULL)
+          { fprintf(stderr,"%s: File %s.%s.%d.las should not yet exist!\n",
+                           Prog_Name,src2,root1,fblock);
+            exit (1);
+          }
+      }
+    else
+      { file = fopen(Catenate(src2,".",root1,".las"),"r");
+        if (file != NULL)
+          { fprintf(stderr,"%s: File %s.%s.las should not yet exist!\n",
+                           Prog_Name,src2,root1);
+            exit (1);
+          }
+      }
+
+    free(src2);
+
+    DON = (DON && useblock1 && useblock2);
+    out = stdout;
+  }
+
+  { int level, njobs;
+    int i, j, k, t;
+    char orient[2] = { 'C', 'N' };
+
+    //  Create all work subdirectories if DON
+
+    if (DON)
+      { if (ONAME != NULL)
+          { sprintf(name,"%s.00.MKDIR",ONAME);
+            out = fopen(name,"w");
+          }
+
+        fprintf(out,"# Create work subdirectories\n");
+        for (i = fblock; i <= lblock; i++)
+          fprintf(out,"mkdir work%d\n",i);
+      }
+
+    //  Produce all necessary daligner jobs ...
+
+    if (ONAME != NULL)
+      { sprintf(name,"%s.01.CMP",ONAME);
+        out = fopen(name,"w");
+      }
+
+    njobs = nblocks1 * ( (lblock-fblock)/BUNIT + 1);
+
+    fprintf(out,"# Daligner jobs (%d)\n",njobs);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i++)
+      { int bits;
+        int low, hgh;
+
+        bits = (nblocks1-1)/BUNIT+1;
+        low  = 1;
+        for (j = 1; j <= bits; j++)
+          {
+#ifdef LSF
+            fprintf(out,LSF_MALIGN,jobid++);
+            fprintf(out," \"");
+#endif
+            fprintf(out,"daligner -A");
+            if (VON)
+              fprintf(out," -v");
+            if (BON)
+              fprintf(out," -b");
+            fprintf(out," -k%d",KINT);
+            if (WINT != 6)
+              fprintf(out," -w%d",WINT);
+            fprintf(out," -h%d",HINT);
+            if (TINT > 0)
+              fprintf(out," -t%d",TINT);
+            if (EREL > 0.)
+              fprintf(out," -e%g",EREL);
+            else
+              fprintf(out," -e.85");
+            if (LINT != 1000)
+              fprintf(out," -l%d",LINT);
+            if (SINT != 100)
+              fprintf(out," -s%d",SINT);
+            if (NTHREADS != 4)
+              fprintf(out," -T%d",NTHREADS);
+            if (MINT >= 0)
+              fprintf(out," -M%d",MINT);
+            for (k = 0; k < MTOP; k++)
+              fprintf(out," -m%s",MASK[k]);
+
+            fprintf(out," ");
+            if (usepath2)
+              fprintf(out,"%s/",pwd2);
+            fprintf(out,"%s",root2);
+            if (useblock2)
+              fprintf(out,".%d",i);
+
+	    hgh = 1 + (nblocks1*j)/bits;
+            for (k = low; k < hgh; k++)
+              { fprintf(out," ");
+                if (usepath1)
+                  fprintf(out,"%s/",pwd1);
+                fprintf(out,"%s",root1);
+                if (useblock1)
+                  fprintf(out,".%d",k);
+              }
+
+            if (DON)
+              for (k = low; k < hgh; k++)
+                { fprintf(out," && mv");
+                  for (t = 0; t < NTHREADS; t++)
+                    { fprintf(out," %s.%d.%s.%d.C%d.las",root2,i,root1,k,t);
+                      fprintf(out," %s.%d.%s.%d.N%d.las",root2,i,root1,k,t);
+                    }
+                  fprintf(out," work%d",i);
+                }
+#ifdef LSF
+            fprintf(out,"\"");
+#endif
+            fprintf(out,"\n");
+            low = hgh;
+          }
+      }
+
+    //  ... and then all the initial sort & merge jobs for each block pair
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.02.SORT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Initial sort jobs (%d)\n", nblocks1*((lblock-fblock)+1));
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (j = fblock; j <= lblock; j++)
+      for (i = 1; i <= nblocks1; i++)
+        {
+#ifdef LSF
+          fprintf(out,LSF_MSORT,jobid++);
+          fprintf(out," \"");
+#endif
+          fprintf(out,"LAsort ");
+          if (VON)
+            fprintf(out,"-v ");
+          if (CON)
+            fprintf(out,"-a ");
+          for (k = 0; k < NTHREADS; k++)
+            for (t = 0; t < 2; t++)
+              { if (DON)
+                  fprintf(out,"work%d/",j);
+                fprintf(out,"%s",root2);
+                if (useblock2)
+                  fprintf(out,".%d",j);
+                fprintf(out,".%s",root1);
+                if (useblock1)
+                  fprintf(out,".%d",i);
+                fprintf(out,".%c%d ",orient[t],k);
+              }
+
+          fprintf(out,"&& LAmerge ");
+          if (VON)
+            fprintf(out,"-v ");
+          if (CON)
+            fprintf(out,"-a ");
+          if (nblocks1 == 1)
+            { if (usepath2)
+                fprintf(out,"%s/",pwd2);
+              fprintf(out,"%s",root2);
+              if (useblock2)
+                fprintf(out,".%d",j);
+              fprintf(out,".%s",root1);
+            }
+          else
+            { if (DON)
+                fprintf(out,"work%d/",j);
+              fprintf(out,"L1.%d.%d",j,i);
+            }
+
+          for (k = 0; k < NTHREADS; k++)
+            for (t = 0; t < 2; t++)
+              { if (DON)
+                  fprintf(out," work%d/%s",j,root2);
+                else
+                  fprintf(out," %s",root2);
+                if (useblock2)
+                  fprintf(out,".%d",j);
+                fprintf(out,".%s",root1);
+                if (useblock1)
+                  fprintf(out,".%d",i);
+                fprintf(out,".%c%d.S",orient[t],k);
+              }
+#ifdef LSF
+          fprintf(out,"\"");
+#endif
+          fprintf(out,"\n");
+        }
+
+    //  Check .las files (optional)
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.03.CHECK.OPT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Check initial .las files jobs (%d) (optional but recommended)\n",
+                 (lblock-fblock+1) * ((nblocks1-1)/(BUNIT+1) + 1) );
+
+    fprintf(out,"# Check all level 1 .las files (optional but recommended)\n");
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (j = fblock; j <= lblock; j++)
+      for (i = 1; i <= nblocks1; )
+        { k = i+BUNIT;
+          if (k > nblocks1)
+            k = nblocks1;
+#ifdef LSF
+          fprintf(out,LSF_CHECK,0,0,jobid++);
+          fprintf(out," \"");
+#endif
+          fprintf(out,"LAcheck -vS");
+          if (usepath2)
+            fprintf(out," %s/%s",pwd2,root2);
+          else
+            fprintf(out," %s",root2);
+          if (usepath1)
+            fprintf(out," %s/%s",pwd1,root1);
+          else
+            fprintf(out," %s",root1);
+          while (i <= k)
+            { fprintf(out," ");
+              if (nblocks1 == 1)
+                { if (usepath2)
+                    fprintf(out,"%s/",pwd2);
+                  fprintf(out,"%s",root2);
+                  if (useblock2)
+                    fprintf(out,".%d",j);
+                  fprintf(out,".%s",root1);
+                }
+              else
+                { if (DON)
+                    fprintf(out,"work%d/",j);
+                  fprintf(out,"L1.%d.%d",j,i);
+                }
+              i += 1;
+            }
+#ifdef LSF
+          fprintf(out,"\"");
+#endif
+          fprintf(out,"\n");
+        }
+
+    //  Clean up (optional)
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.04.RM",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Remove initial .las files\n");
+
+    for (j = fblock; j <= lblock; j++)
+      { if (DON)
+          fprintf(out,"cd work%d\n",j);
+        for (i = 1; i <= nblocks1; i++)
+          for (t = 0; t < 4; t++)
+            { fprintf(out,"rm");
+              for (k = 0; k < NTHREADS; k++)
+                { fprintf(out," %s",root2);
+                  if (useblock2)
+                    fprintf(out,".%d",j);
+                  fprintf(out,".%s",root1);
+                  if (useblock1)
+                    fprintf(out,".%d",i);
+                  fprintf(out,".%c%d",orient[t%2],k);
+                  if (t >= 2)
+                    fprintf(out,".S");
+                  fprintf(out,".las");
+                }
+              fprintf(out,"\n");
+            }
+        if (DON)
+          fprintf(out,"cd ..\n");
+      }
+
+    if (ONAME != NULL)
+      fclose(out);
+
+    //  Higher level merges (if lblock > 1)
+
+    if (nblocks1 > 1)
+      { int pow, stage;
+
+        //  Determine the number of merging levels
+
+        stage = 5;
+
+        pow = 1;
+        for (level = 0; pow < nblocks1; level++)
+          pow *= DUNIT;
+
+        //  Issue the commands for each merge level
+
+        { int  p, cnt;
+
+          cnt = nblocks1;
+          for (i = 1; i <= level; i++)
+            { int bits;
+              int low, hgh;
+
+              if (ONAME != NULL)
+                { sprintf(name,"%s.%02d.MERGE",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              bits = (cnt-1)/DUNIT+1;
+              fprintf(out,"# Level %d jobs (%d)\n",i,bits*((lblock-fblock)+1));
+
+              //  Block merges
+
+#ifdef LSF
+              jobid = 1;
+#endif
+              for (j = fblock; j <= lblock; j++) 
+                { low = 1;
+                  for (p = 1; p <= bits; p++)
+                    { hgh = (cnt*p)/bits;
+#ifdef LSF
+                      fprintf(out,LSF_MMERGE,i,i,jobid++);
+                      fprintf(out," \"");
+#endif
+                      fprintf(out,"LAmerge ");
+                      if (VON)
+                        fprintf(out,"-v ");
+                      if (CON)
+                        fprintf(out,"-a ");
+                      if (i == level)
+                        { if (usepath2)
+                            fprintf(out,"%s/",pwd2);
+                          fprintf(out,"%s",root2);
+                          if (useblock2)
+                            fprintf(out,".%d",j);
+                          fprintf(out,".%s",root1);
+                        }
+                      else
+                        { if (DON)
+                            fprintf(out,"work%d/",j);
+                          fprintf(out,"L%d.%d.%d",i+1,j,p);
+                        }
+                      for (k = low; k <= hgh; k++)
+                        if (DON)
+                          fprintf(out," work%d/L%d.%d.%d",j,i,j,k);
+                        else
+                          fprintf(out," L%d.%d.%d",i,j,k);
+
+#ifdef LSF
+                      fprintf(out,"\"");
+#endif
+		      fprintf(out,"\n");
+                      low = hgh+1;
+                    }
+                }
+
+              //  Check new .las (optional)
+
+              if (ONAME != NULL)
+                { fclose(out);
+                  sprintf(name,"%s.%02d.CHECK.OPT",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              fprintf(out,"# Check level %d .las files jobs (%d) (optional but recommended)\n",
+                          i+1,(lblock-fblock+1)*((bits-1)/(BUNIT+1)+1) );
+
+#ifdef LSF
+              jobid = 1;
+#endif
+              for (j = fblock; j <= lblock; j++) 
+                for (p = 1; p <= bits; )
+                  { k = p+BUNIT;
+                    if (k > bits)
+                      k = bits;
+#ifdef LSF
+                    fprintf(out,LSF_CHECK,0,0,jobid++);
+                    fprintf(out," \"");
+#endif
+                    fprintf(out,"LAcheck -vS");
+                    if (usepath2)
+                      fprintf(out," %s/%s",pwd2,root2);
+                    else
+                      fprintf(out," %s",root2);
+                    if (usepath1)
+                      fprintf(out," %s/%s",pwd1,root1);
+                    else
+                      fprintf(out," %s",root1);
+                    while (p <= k)
+                      { fprintf(out," ");
+                        if (i == level)
+                          { if (usepath2)
+                              fprintf(out,"%s/",pwd2);
+                            fprintf(out,"%s",root2);
+                            if (useblock2)
+                              fprintf(out,".%d",j);
+                            fprintf(out,".%s",root1);
+                          }
+                        else
+                          { if (DON)
+                              fprintf(out,"work%d/",j);
+                            fprintf(out,"L%d.%d.%d",i+1,j,p);
+                          }
+                        p += 1;
+                      }
+#ifdef LSF
+                    fprintf(out,"\"");
+#endif
+                    fprintf(out,"\n");
+                  }
+
+              //  Cleanup (optional)
+
+              if (ONAME != NULL)
+                { fclose(out);
+                  sprintf(name,"%s.%02d.RM",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              fprintf(out,"# Remove level %d .las files\n",i);
+
+              for (j = fblock; j <= lblock; j++) 
+                { if (DON)
+                    fprintf(out,"cd work%d\n",j);
+                  low = 1;
+                  for (p = 1; p <= bits; p++)
+                    { hgh = (cnt*p)/bits;
+                      fprintf(out,"rm");
+                      for (k = low; k <= hgh; k++)
+                        fprintf(out," L%d.%d.%d.las",i,j,k);
+                      fprintf(out,"\n");
+                      low = hgh+1;
+                    }
+                  if (DON)
+                    fprintf(out,"cd ..\n");
+                }
+
+              if (ONAME != NULL)
+                fclose(out);
+
+              cnt  = bits;
+            }
+        }
+    }
+  }
+
+  free(root2);
+  free(pwd2);
+  free(root1);
+  free(pwd1);
+
+  exit (0);
+}
+
+int main(int argc, char *argv[])
+{ int    i, j, k;
+  int    flags[128];
+  char  *eptr;
+  int    mapper;
+
+  //  Process options and decide if its a overlap or mapper script
+
+  ARG_INIT("HPC.daligner")
+
+  KINT  = 0;
+  HINT  = 0;
+  HGAP  = 0;
+  EREL  = 0.;
+
+  BUNIT = 4;
+  DUNIT = 250;
+  TINT  = 0;
+  WINT  = 6;
+  LINT  = 1000;
+  SINT  = 100;
+  MINT  = -1;
+
+  MTOP = 0;
+  MMAX = 10;
+  MASK = (char **) Malloc(MMAX*sizeof(char *),"Allocating mask track array");
+  if (MASK == NULL)
+    exit (1);
+  ONAME = NULL;
+
+  NTHREADS = 4;
+
+  j = 1;
+  for (i = 1; i < argc; i++)
+    if (argv[i][0] == '-')
+      switch (argv[i][1])
+      { default:
+          ARG_FLAGS("vbadAI");
+          break;
+        case 'e':
+          ARG_REAL(EREL)
+          if (EREL < .7 || EREL >= 1.)
+            { fprintf(stderr,"%s: Average correlation must be in [.7,1.) (%g)\n",Prog_Name,EREL);
+              exit (1);
+            }
+          break;
+        case 'f':
+          ONAME = argv[i]+2;
+          break;
+        case 'h':
+          ARG_POSITIVE(HINT,"Hit threshold (in bp.s)")
+          break;
+        case 'k':
+          ARG_POSITIVE(KINT,"K-mer length")
+          break;
+        case 'l':
+          ARG_POSITIVE(LINT,"Minimum ovlerap length")
+          break;
+        case 'm':
+          if (MTOP >= MMAX)
+            { MMAX = 1.2*MTOP + 10;
+              MASK = (char **) Realloc(MASK,MMAX*sizeof(char *),"Reallocating mask track array");
+              if (MASK == NULL)
+                exit (1);
+            }
+          MASK[MTOP++] = argv[i]+2;
+          break;
+        case 's':
+          ARG_POSITIVE(SINT,"Trace spacing")
+          break;
+        case 't':
+          ARG_POSITIVE(TINT,"Tuple suppression frequency")
+          break;
+        case 'w':
+          ARG_POSITIVE(WINT,"Log of bin width")
+          break;
+        case 'B':
+          ARG_NON_NEGATIVE(BUNIT,"Blocks per command")
+          break;
+        case 'D':
+          ARG_NON_NEGATIVE(DUNIT,"File per merge")
+          if (DUNIT < 3)
+            { fprintf(stderr,"%s: Files per merge must be at least 3 (%d)\n",
+                             Prog_Name,DUNIT);
+              exit (1);
+            }
+          break;
+        case 'H':
+          ARG_POSITIVE(HGAP,"HGAP threshold (in bp.s)")
+          break;
+        case 'M':
+          ARG_NON_NEGATIVE(MINT,"Memory allocation (in Gb)")
+          break;
+        case 'T':
+          ARG_POSITIVE(NTHREADS,"Number of threads")
+          break;
+      }
+    else
+      argv[j++] = argv[i];
+  argc = j;
+
+  VON = flags['v'];
+  BON = flags['b'];
+  AON = flags['A'];
+  ION = flags['I'];
+  CON = flags['a'];
+  DON = flags['d'];
+
+  if (argc < 2 || argc > 4)
+    { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+      fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+      fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[2]);
+      fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[3]);
+      fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[4]);
+      exit (1);
+    }
+
+  if (argc == 2)
+    mapper = 0;
+  else if (argc == 4)
+    mapper = 1;
+  else
+    { (void) strtol(argv[2],&eptr,10);
+      if ((*eptr == '\0' || *eptr == '-') && eptr > argv[2])
+        mapper = 0;
+      else
+        mapper = 1;
+    }
+
+  if (mapper)
+    { if (AON || ION)
+        { fprintf(stderr,"%s: Cannot use -A or -I options in a comparison script\n",Prog_Name);
+          exit (1);
+        }
+      if (HGAP > 0)
+        { fprintf(stderr,"%s: Cannot use -H option in a comparison script\n",Prog_Name);
+          exit (1);
+        }
+      if (KINT <= 0)
+        KINT = 20;
+      if (HINT <= 0)
+        HINT = 50;
+      if (EREL <= 0.)
+        EREL = .85;
+    }
+  else
+    { if (KINT <= 0)
+        KINT = 14;
+      if (HINT <= 0)
+        HINT = 35;
+    }
+
+  for (j = 1; 2*j <= NTHREADS; j *= 2)
+    ;
+  NTHREADS = j;
+
+  if (mapper)
+    mapper_script(argc,argv);
+  else
+    daligner_script(argc,argv);
+
+  exit (0);
+}
diff --git a/DALIGNER/LA4Falcon.c b/DALIGNER/LA4Falcon.c
new file mode 100644
index 0000000..e767833
--- /dev/null
+++ b/DALIGNER/LA4Falcon.c
@@ -0,0 +1,802 @@
+/************************************************************************************\
+*                                                                                    *
+* Copyright (c) 2014, Dr. Eugene W. Myers (EWM). All rights reserved.                *
+*                                                                                    *
+* Redistribution and use in source and binary forms, with or without modification,   *
+* are permitted provided that the following conditions are met:                      *
+*                                                                                    *
+*  · Redistributions of source code must retain the above copyright notice, this     *
+*    list of conditions and the following disclaimer.                                *
+*                                                                                    *
+*  · Redistributions in binary form must reproduce the above copyright notice, this  *
+*    list of conditions and the following disclaimer in the documentation and/or     *
+*    other materials provided with the distribution.                                 *
+*                                                                                    *
+*  · The name of EWM may not be used to endorse or promote products derived from     *
+*    this software without specific prior written permission.                        *
+*                                                                                    *
+* THIS SOFTWARE IS PROVIDED BY EWM ”AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,    *
+* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND       *
+* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EWM BE LIABLE   *
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES *
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS  *
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY      *
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     *
+* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN  *
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      *
+*                                                                                    *
+* For any issues regarding this software and its use, contact EWM at:                *
+*                                                                                    *
+*   Eugene W. Myers Jr.                                                              *
+*   Bautzner Str. 122e                                                               *
+*   01099 Dresden                                                                    *
+*   GERMANY                                                                          *
+*   Email: gene.myers at gmail.com                                                      *
+*                                                                                    *
+\************************************************************************************/
+
+/*******************************************************************************************
+ *
+ *  Utility for displaying the overlaps in a .las file in a variety of ways including
+ *    a minimal listing of intervals, a cartoon, and a full out alignment.
+ *
+ *  Author:    Gene Myers
+ *  Creation:  July 2013
+ *  Last Mod:  Jan 2015
+ *
+ *******************************************************************************************/
+
+/*******************************************************************************************
+ *
+ *  Based on the original LAshow.c, this code is modified by Jason Chin to support generating
+ *    consensus sequences from daligner output
+ *
+ *  Last Mod:  July 2015
+ *
+ *******************************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+typedef struct {
+    int r_id;
+    int score;
+    int t_o;
+    int t_s;
+    int t_e;
+    int t_l;
+} hit_record;
+
+hit_record * hits;
+
+#define MIN(X,Y)  ((X) < (Y)) ? (X) : (Y) 
+
+static int compare_hits(const void  * h1, const void *h2) {
+    return ((hit_record *) h2)->score - ((hit_record *) h1)->score;
+}
+
+
+static char *Usage[] =
+    { "[-mfsocarUFM] [-i<int(4)>] [-w<int(100)>] [-b<int(10)>] ",
+      "    <src1:db|dam> [ <src2:db|dam> ] <align:las> [ <reads:FILE> | <reads:range> ... ]"
+    };
+
+#define LAST_READ_SYMBOL  '$'
+
+static int ORDER(const void *l, const void *r)
+{ int x = *((int32 *) l);
+  int y = *((int32 *) r);
+  return (x-y);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB   _db1, *db1 = &_db1;
+  HITS_DB   _db2, *db2 = &_db2;
+  Overlap   _ovl, *ovl = &_ovl;
+  Alignment _aln, *aln = &_aln;
+
+  FILE   *input;
+  int64   novl;
+  int     tspace, tbytes, small;
+  int     reps, *pts;
+  int     input_pts;
+
+  int     ALIGN, CARTOON, REFERENCE, FLIP;
+  int     INDENT, WIDTH, BORDER, UPPERCASE;
+  int     ISTWO;
+  int     MAP;
+  int     FALCON, OVERLAP, M4OVL;
+  int     SEED_MIN, MAX_HIT_COUNT, SKIP;
+
+  //  Process options
+
+  { int    i, j, k;
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("LA4Falcon")
+
+    INDENT    = 4;
+    WIDTH     = 100;
+    BORDER    = 10;
+
+    FALCON    = 0;
+    M4OVL     = 0;
+    SEED_MIN  = 8000;
+    SKIP      = 0;
+
+    ALIGN     = 0;
+    REFERENCE = 0;
+    CARTOON   = 0;
+    FLIP      = 0;
+    MAX_HIT_COUNT = 400;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("smfocarUFM")
+            break;
+          case 'i':
+            ARG_NON_NEGATIVE(INDENT,"Indent")
+            break;
+          case 'w':
+            ARG_POSITIVE(WIDTH,"Alignment width")
+            break;
+          case 'b':
+            ARG_NON_NEGATIVE(BORDER,"Alignment border")
+            break;
+          case 'H':
+            ARG_POSITIVE(SEED_MIN,"seed threshold (in bp)")
+            break;
+          case 'n':
+            ARG_POSITIVE(MAX_HIT_COUNT, "max numer of supporting read ouput (used for FALCON consensus. default 400, max: 2000)")
+            if (MAX_HIT_COUNT > 2000) MAX_HIT_COUNT = 2000; 
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    UPPERCASE = flags['U'];
+    ALIGN     = flags['a'];
+    REFERENCE = flags['r'];
+    CARTOON   = flags['c'];
+    FLIP      = flags['F'];
+    MAP       = flags['M'];
+    OVERLAP   = flags['o'];
+    M4OVL     = flags['m'];
+    FALCON    = flags['f'];
+    SKIP      = flags['s'];
+
+    if (argc <= 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB or DB pair
+
+  { int   status;
+    char *pwd, *root;
+    FILE *input;
+
+    ISTWO  = 0;
+    status = Open_DB(argv[1],db1);
+    if (status < 0)
+      exit (1);
+    if (db1->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    if (argc > 3)
+      { pwd   = PathTo(argv[3]);
+        root  = Root(argv[3],".las");
+        if ((input = fopen(Catenate(pwd,"/",root,".las"),"r")) != NULL)
+          { ISTWO = 1;
+            fclose(input);
+            status = Open_DB(argv[2],db2);
+            if (status < 0)
+              exit (1);
+            if (db2->part > 0)
+              { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[2]);
+                exit (1);
+              }
+            Trim_DB(db2);
+          }
+        else
+          db2 = db1;
+        free(root);
+        free(pwd);
+      }
+    else
+      db2 = db1;
+    Trim_DB(db1);
+  }
+
+  //  Process read index arguments into a sorted list of read ranges
+
+  input_pts = 0;
+  if (argc == ISTWO+4)
+    { if (argv[ISTWO+3][0] != LAST_READ_SYMBOL || argv[ISTWO+3][1] != '\0')
+        { char *eptr, *fptr;
+          int   b, e;
+
+          b = strtol(argv[ISTWO+3],&eptr,10);
+          if (eptr > argv[ISTWO+3] && b > 0)
+            { if (*eptr == '-')
+                { if (eptr[1] != LAST_READ_SYMBOL || eptr[2] != '\0')
+                    { e = strtol(eptr+1,&fptr,10);
+                      input_pts = (fptr <= eptr+1 || *fptr != '\0' || e <= 0);
+                    }
+                }
+              else
+                input_pts = (*eptr != '\0');
+            }
+          else
+            input_pts = 1;
+        }
+    }
+
+  if (input_pts)
+    { int v, x;
+      FILE *input;
+
+      input = Fopen(argv[ISTWO+3],"r");
+      if (input == NULL)
+        exit (1);
+
+      reps = 0;
+      while ((v = fscanf(input," %d",&x)) != EOF)
+        if (v == 0)
+          { fprintf(stderr,"%s: %d'th item of input file %s is not an integer\n",
+                           Prog_Name,reps+1,argv[2]);
+            exit (1);
+          }
+        else
+          reps += 1;
+
+      reps *= 2;
+      pts   = (int *) Malloc(sizeof(int)*reps,"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      rewind(input);
+      for (v = 0; v < reps; v += 2)
+        { fscanf(input," %d",&x);
+          pts[v] = pts[v+1] = x;
+        }
+
+      fclose(input);
+    }
+
+  else
+    { pts  = (int *) Malloc(sizeof(int)*2*argc,"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      reps = 0;
+      if (argc > 3+ISTWO)
+        { int   c, b, e;
+          char *eptr, *fptr;
+
+          for (c = 3+ISTWO; c < argc; c++)
+            { if (argv[c][0] == LAST_READ_SYMBOL)
+                { b = db1->nreads;
+                  eptr = argv[c]+1;
+                }
+              else
+                b = strtol(argv[c],&eptr,10);
+              if (eptr > argv[c])
+                { if (b <= 0)
+                    { fprintf(stderr,"%s: %d is not a valid index\n",Prog_Name,b);
+                      exit (1);
+                    }
+                  if (*eptr == '\0')
+                    { pts[reps++] = b;
+                      pts[reps++] = b;
+                      continue;
+                    }
+                  else if (*eptr == '-')
+                    { if (eptr[1] == LAST_READ_SYMBOL)
+                        { e = INT32_MAX;
+                          fptr = eptr+2;
+                        }
+                      else
+                        e = strtol(eptr+1,&fptr,10);
+                      if (fptr > eptr+1 && *fptr == 0 && e > 0)
+                        { pts[reps++] = b;
+                          pts[reps++] = e;
+                          if (b > e)
+                            { fprintf(stderr,"%s: Empty range '%s'\n",Prog_Name,argv[c]);
+                              exit (1);
+                            }
+                          continue;
+                        }
+                    }
+                }
+              fprintf(stderr,"%s: argument '%s' is not an integer range\n",Prog_Name,argv[c]);
+              exit (1);
+            }
+
+          qsort(pts,reps/2,sizeof(int64),ORDER);
+
+          b = 0;
+          for (c = 0; c < reps; c += 2)
+            if (b > 0 && pts[b-1] >= pts[c]-1)
+              { if (pts[c+1] > pts[b-1])
+                  pts[b-1] = pts[c+1];
+              }
+            else
+              { pts[b++] = pts[c];
+                pts[b++] = pts[c+1];
+              }
+          pts[b++] = INT32_MAX;
+          reps = b;
+        }
+      else
+        { pts[reps++] = 1;
+          pts[reps++] = INT32_MAX;
+        }
+    }
+
+  //  Initiate file reading and read (novl, tspace) header
+
+  { char  *over, *pwd, *root;
+
+    pwd   = PathTo(argv[2+ISTWO]);
+    root  = Root(argv[2+ISTWO],".las");
+    over  = Catenate(pwd,"/",root,".las");
+    input = Fopen(over,"r");
+    if (input == NULL)
+      exit (1);
+
+    if (fread(&novl,sizeof(int64),1,input) != 1)
+      SYSTEM_ERROR
+    if (fread(&tspace,sizeof(int),1,input) != 1)
+      SYSTEM_ERROR
+
+    if (tspace == 0) {
+        printf("\nCRITICAL ERROR: tspace=0 in '%s'", root);
+        exit(1);
+    }
+    if (tspace <= TRACE_XOVR)
+      { small  = 1;
+        tbytes = sizeof(uint8);
+      }
+    else
+      { small  = 0;
+        tbytes = sizeof(uint16);
+      }
+
+    if (!(FALCON || M4OVL))
+      {
+        printf("\n%s: ",root);
+        Print_Number(novl,0,stdout);
+        printf(" records\n");
+      }
+
+    free(pwd);
+    free(root);
+  }
+
+  //  Read the file and display selected records
+
+  { int        j;
+    uint16    *trace;
+    Work_Data *work;
+    int        tmax;
+    int        in, npt, idx, ar;
+    int64      tps;
+    int64      p_aread = -1;
+    char       buffer[131072];
+    int        skip_rest = 0;
+
+    char      *abuffer, *bbuffer;
+    int        ar_wide, br_wide;
+    int        ai_wide, bi_wide;
+    int        mn_wide, mx_wide;
+    int        tp_wide;
+    int        blast, match, seen, lhalf, rhalf;
+    int        hit_count;
+
+    aln->path = &(ovl->path);
+    if (ALIGN || REFERENCE || FALCON)
+      { work = New_Work_Data();
+        abuffer = New_Read_Buffer(db1);
+        bbuffer = New_Read_Buffer(db2);
+        if (FALCON) {
+            hits = calloc(sizeof(hit_record), 50001);
+            hit_count = 0;
+        }
+      }
+    else
+      { abuffer = NULL;
+        bbuffer = NULL;
+        work = NULL;
+      }
+
+    tmax  = 1000;
+    trace = (uint16 *) Malloc(sizeof(uint16)*tmax,"Allocating trace vector");
+    if (trace == NULL)
+      exit (1);
+
+    in  = 0;
+    npt = pts[0];
+    idx = 1;
+
+    ar_wide = Number_Digits((int64) db1->nreads);
+    br_wide = Number_Digits((int64) db2->nreads);
+    ai_wide = Number_Digits((int64) db1->maxlen);
+    bi_wide = Number_Digits((int64) db2->maxlen);
+    if (db1->maxlen < db2->maxlen)
+      { mn_wide = ai_wide;
+        mx_wide = bi_wide;
+        tp_wide = Number_Digits((int64) db1->maxlen/tspace+2);
+      }
+    else
+      { mn_wide = bi_wide;
+        mx_wide = ai_wide;
+        tp_wide = Number_Digits((int64) db2->maxlen/tspace+2);
+      }
+    ar_wide += (ar_wide-1)/3;
+    br_wide += (br_wide-1)/3;
+    ai_wide += (ai_wide-1)/3;
+    bi_wide += (bi_wide-1)/3;
+    mn_wide += (mn_wide-1)/3;
+    tp_wide += (tp_wide-1)/3;
+
+    if (FLIP)
+      { int x;
+        x = ar_wide; ar_wide = br_wide; br_wide = x;
+        x = ai_wide; ai_wide = bi_wide; bi_wide = x;
+      }
+
+    //  For each record do
+
+    blast = -1;
+    match = 0;
+    seen  = 0;
+    lhalf = rhalf = 0;
+    for (j = 0; j < novl; j++)
+
+       //  Read it in
+
+      { Read_Overlap(input,ovl);
+        if (ovl->path.tlen > tmax)
+          { tmax = ((int) 1.2*ovl->path.tlen) + 100;
+            trace = (uint16 *) Realloc(trace,sizeof(uint16)*tmax,"Allocating trace vector");
+            if (trace == NULL)
+              exit (1);
+          }
+        ovl->path.trace = (void *) trace;
+        Read_Trace(input,ovl,tbytes);
+
+        //  Determine if it should be displayed
+
+        ar = ovl->aread+1;
+        if (in)
+          { while (ar > npt)
+              { npt = pts[idx++];
+                if (ar < npt)
+                  { in = 0;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        else
+          { while (ar >= npt)
+              { npt = pts[idx++];
+                if (ar <= npt)
+                  { in = 1;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        if (!in)
+          continue;
+
+        //  Display it
+
+        aln->alen  = db1->reads[ovl->aread].rlen;
+        aln->blen  = db2->reads[ovl->bread].rlen;
+        aln->flags = ovl->flags;
+        tps        = ((ovl->path.aepos-1)/tspace - ovl->path.abpos/tspace);
+
+        if (OVERLAP && !FALCON)
+          { if (ovl->path.abpos != 0 && ovl->path.bbpos != 0)
+              continue;
+            if (ovl->path.aepos != aln->alen && ovl->path.bepos != aln->blen)
+              continue;
+          }
+
+        if (MAP)
+          { while (ovl->bread != blast)
+              { if (!match && seen && !(lhalf && rhalf))
+                  { printf("Missing ");
+                    Print_Number((int64) blast+1,br_wide+1,stdout);
+                    printf(" %d ->%lld\n",db2->reads[blast].rlen,db2->reads[blast].coff);
+                  }
+                match = 0;
+                seen  = 0;
+                lhalf = rhalf = 0;
+                blast += 1;
+              }
+            seen = 1;
+            if (ovl->path.abpos == 0)
+              rhalf = 1;
+            if (ovl->path.aepos == aln->alen)
+              lhalf = 1;
+            if (ovl->path.bbpos != 0 || ovl->path.bepos != aln->blen)
+              continue;
+            match = 1;
+          }
+
+        // printf(" %7d %7d\n",ovl->path.abpos,ovl->path.aepos);
+        // continue;
+
+        if (!(FALCON || M4OVL) ) {
+            if (ALIGN || CARTOON || REFERENCE)
+              printf("\n");
+            if (FLIP)
+              { Flip_Alignment(aln,0);
+                Print_Number((int64) ovl->bread+1,ar_wide+1,stdout);
+                printf("  ");
+                Print_Number((int64) ovl->aread+1,br_wide+1,stdout);
+              }
+            else
+              { Print_Number((int64) ovl->aread+1,ar_wide+1,stdout);
+                printf("  ");
+                Print_Number((int64) ovl->bread+1,br_wide+1,stdout);
+              }
+            if (COMP(ovl->flags))
+              printf(" c");
+            else
+              printf(" n");
+            printf("   [");
+            Print_Number((int64) ovl->path.abpos,ai_wide,stdout);
+            printf("..");
+            Print_Number((int64) ovl->path.aepos,ai_wide,stdout);
+            printf("] x [");
+            Print_Number((int64) ovl->path.bbpos,bi_wide,stdout);
+            printf("..");
+            Print_Number((int64) ovl->path.bepos,bi_wide,stdout);
+            printf("]");
+        }
+
+        //  Display it
+        if (M4OVL)
+          {
+            int64 bbpos, bepos;
+            double acc;
+
+
+
+            if (COMP(ovl->flags)) {
+                bbpos = (int64) aln->blen - (int64) ovl->path.bepos;
+                bepos = (int64) aln->blen - (int64) ovl->path.bbpos;
+            } else {
+                bbpos = (int64) ovl->path.bbpos;
+                bepos = (int64) ovl->path.bepos;
+            }
+            acc = 100-(200. * ovl->path.diffs)/( ovl->path.aepos - ovl->path.abpos + ovl->path.bepos - ovl->path.bbpos
+);
+            printf("%09lld %09lld %lld %5.2f ", (int64) ovl->aread, (int64) ovl->bread,  (int64) bbpos - (int64) bepos
+, acc);
+            printf("0 %lld %lld %lld ", (int64) ovl->path.abpos, (int64) ovl->path.aepos, (int64) aln->alen);
+            printf("%d %lld %lld %lld ", COMP(ovl->flags), bbpos, bepos, (int64) aln->blen);
+            if ( ((int64) aln->blen < (int64) aln->alen) && ((int64) ovl->path.bbpos < 1) && ((int64) aln->blen - (int64) ovl->path.bepos < 1) )
+              {
+                printf("contains\n");
+              }
+            else if ( ((int64) aln->alen < (int64) aln->blen) && ((int64) ovl->path.abpos < 1) && ((int64) aln->alen -
+ (int64) ovl->path.aepos < 1) )
+              {
+                printf("contained\n");
+              }
+            else
+              {
+                printf("overlap\n");
+              }
+
+          }
+        if (FALCON)
+          {
+            if (p_aread == -1) {
+                Load_Read(db1, ovl->aread, abuffer, 2);
+                printf("%08d %s\n", ovl->aread, abuffer);
+                p_aread = ovl->aread;
+                skip_rest = 0;
+            }
+            if (p_aread != ovl -> aread ) {
+                int tmp_idx;
+                qsort( hits, hit_count, sizeof(hit_record), compare_hits ); 
+                for (tmp_idx = 0; tmp_idx < hit_count && tmp_idx < MAX_HIT_COUNT; tmp_idx++) {
+                    Load_Read(db2, hits[tmp_idx].r_id, bbuffer, 0);
+                    if (hits[tmp_idx].t_o) Complement_Seq(bbuffer, hits[tmp_idx].t_l );
+                    Upper_Read(bbuffer);
+                    int64 const rlen = (int64)(hits[tmp_idx].t_e) - (int64)(hits[tmp_idx].t_s);
+                    if (rlen < (int64)sizeof(buffer)) {
+                        strncpy( buffer, bbuffer + hits[tmp_idx].t_s, rlen );
+                        buffer[rlen - 1] = '\0';
+                        printf("%08d %s\n", hits[tmp_idx].r_id, buffer);
+                    } else {
+                        fprintf(stderr, "[WARNING]Skipping super-long read %08d, len=%lld\n", hits[tmp_idx].r_id, rlen);
+                    }
+                }
+                hit_count = 0;
+
+                printf("+ +\n");
+                Load_Read(db1, ovl->aread, abuffer, 2);
+                printf("%08d %s\n", ovl->aread, abuffer);
+                p_aread = ovl->aread;
+                skip_rest = 0;
+            }
+
+            if (skip_rest == 0) {
+                int ovl_len, overhang_len, score;
+                ovl_len = ovl->path.bepos - ovl->path.bbpos;
+                overhang_len = MIN( ovl->path.abpos, ovl->path.bbpos );
+                overhang_len +=  MIN(  aln->alen - ovl->path.aepos,  aln->blen - ovl->path.bepos);
+                score = ovl_len - overhang_len;
+                hits[hit_count].r_id = ovl->bread;
+                hits[hit_count].t_o = COMP(aln->flags);
+                hits[hit_count].t_s = ovl->path.bbpos;
+                hits[hit_count].t_e = ovl->path.bepos;
+                hits[hit_count].t_l = aln->blen;
+                hits[hit_count].score = score; 
+                hit_count ++;
+                if (hit_count > 50000) skip_rest = 1;
+
+#undef TEST_ALN_OUT
+#ifdef TEST_ALN_OUT
+                {
+                    tps = ((ovl->path.aepos-1)/tspace - ovl->path.abpos/tspace);
+                    if (small)
+                        Decompress_TraceTo16(ovl);
+                    Load_Read(db1, ovl->aread, abuffer, 0);
+                    Load_Read(db2, ovl->bread, bbuffer, 0);
+                    if (COMP(aln->flags))
+                        Complement_Seq(bbuffer, aln->blen);
+                    Compute_Trace_PTS(aln,work,tspace);
+                    int tlen  = aln->path->tlen;
+                    int *trace = aln->path->trace;
+                    int u;
+                    printf(" ");
+                    for (u = 0; u < tlen; u++)
+                        printf("%d,", (int16) trace[u]);
+                }
+#endif
+                //printf("\n");
+                if (SKIP == 1) {  //if SKIP = 0, then skip_rest is always 0
+                    if ( ((int64) aln->alen < (int64) aln->blen) && ((int64) ovl->path.abpos < 1) && ((int64) aln->alen - (int64) ovl->path.aepos < 1) ) {
+                        printf("* *\n");
+                        skip_rest = 1;
+                    }
+                }
+            }
+         }
+
+        if (ALIGN || CARTOON || REFERENCE)
+          { if (ALIGN || REFERENCE)
+              { char *aseq, *bseq;
+                int   amin,  amax;
+                int   bmin,  bmax;
+
+                if (FLIP)
+                  Flip_Alignment(aln,0);
+                if (small)
+                  Decompress_TraceTo16(ovl);
+
+                amin = ovl->path.abpos - BORDER;
+                if (amin < 0) amin = 0;
+                amax = ovl->path.aepos + BORDER;
+                if (amax > aln->alen) amax = aln->alen;
+                if (COMP(aln->flags))
+                  { bmin = (aln->blen-ovl->path.bepos) - BORDER;
+                    if (bmin < 0) bmin = 0;
+                    bmax = (aln->blen-ovl->path.bbpos) + BORDER;
+                    if (bmax > aln->blen) bmax = aln->blen;
+                  }
+                else
+                  { bmin = ovl->path.bbpos - BORDER;
+                    if (bmin < 0) bmin = 0;
+                    bmax = ovl->path.bepos + BORDER;
+                    if (bmax > aln->blen) bmax = aln->blen;
+                  }
+
+                aseq = Load_Subread(db1,ovl->aread,amin,amax,abuffer,0);
+                bseq = Load_Subread(db2,ovl->bread,bmin,bmax,bbuffer,0);
+
+                aln->aseq = aseq - amin;
+                if (COMP(aln->flags))
+                  { Complement_Seq(bseq,bmax-bmin);
+                    aln->bseq = bseq - (aln->blen - bmax);
+                  }
+                else
+                  aln->bseq = bseq - bmin;
+
+                Compute_Trace_PTS(aln,work,tspace,GREEDIEST);
+
+                if (FLIP)
+                  { if (COMP(aln->flags))
+                      { Complement_Seq(aseq,amax-amin);
+                        Complement_Seq(bseq,bmax-bmin);
+                        aln->aseq = aseq - (aln->alen - amax);
+                        aln->bseq = bseq - bmin;
+                      }
+                    Flip_Alignment(aln,1);
+                  }
+              }
+            if (CARTOON)
+              { printf("  (");
+                Print_Number(tps,tp_wide,stdout);
+                printf(" trace pts)\n\n");
+                Alignment_Cartoon(stdout,aln,INDENT,mx_wide);
+              }
+            else
+              { printf(" :   = ");
+                Print_Number((int64) ovl->path.diffs,mn_wide,stdout);
+                printf(" diffs  (");
+                Print_Number(tps,tp_wide,stdout);
+                printf(" trace pts)\n");
+              }
+            if (REFERENCE)
+              Print_Reference(stdout,aln,work,INDENT,WIDTH,BORDER,UPPERCASE,mx_wide);
+            if (ALIGN)
+              Print_Alignment(stdout,aln,work,INDENT,WIDTH,BORDER,UPPERCASE,mx_wide);
+          }
+        else if (!(FALCON || M4OVL) )
+          { printf(" :   < ");
+            Print_Number((int64) ovl->path.diffs,mn_wide,stdout);
+            printf(" diffs  (");
+            Print_Number(tps,tp_wide,stdout);
+            printf(" trace pts)\n");
+          }
+      }
+
+    if (FALCON)
+      { 
+        qsort( hits, hit_count, sizeof(hit_record), compare_hits ); 
+        int tmp_idx;
+        for (tmp_idx = 0; tmp_idx < hit_count && tmp_idx < MAX_HIT_COUNT; tmp_idx++) {
+            Load_Read(db2, hits[tmp_idx].r_id, bbuffer, 0);
+            if (hits[tmp_idx].t_o) Complement_Seq(bbuffer, hits[tmp_idx].t_l );
+            Upper_Read(bbuffer);
+            strncpy( buffer, bbuffer + hits[tmp_idx].t_s, (int64) hits[tmp_idx].t_e - (int64) hits[tmp_idx].t_s );
+            buffer[ (int64) hits[tmp_idx].t_e - (int64) hits[tmp_idx].t_s - 1] = '\0';
+            printf("%08d %s\n", hits[tmp_idx].r_id, buffer);
+        }
+        printf("+ +\n");
+        printf("- -\n");
+        free(hits);
+      }
+
+
+    free(trace);
+    if (ALIGN || FALCON)
+      { free(bbuffer-1);
+        free(abuffer-1);
+        Free_Work_Data(work);
+      }
+  }
+
+  Close_DB(db1);
+  if (ISTWO)
+    Close_DB(db2);
+
+  exit (0);
+}
diff --git a/DALIGNER/LA4Ice.c b/DALIGNER/LA4Ice.c
new file mode 100644
index 0000000..4361dfb
--- /dev/null
+++ b/DALIGNER/LA4Ice.c
@@ -0,0 +1,568 @@
+/************************************************************************************\
+*                                                                                    *
+* Copyright (c) 2014, Dr. Eugene W. Myers (EWM). All rights reserved.                *
+*                                                                                    *
+* Redistribution and use in source and binary forms, with or without modification,   *
+* are permitted provided that the following conditions are met:                      *
+*                                                                                    *
+*  · Redistributions of source code must retain the above copyright notice, this     *
+*    list of conditions and the following disclaimer.                                *
+*                                                                                    *
+*  · Redistributions in binary form must reproduce the above copyright notice, this  *
+*    list of conditions and the following disclaimer in the documentation and/or     *
+*    other materials provided with the distribution.                                 *
+*                                                                                    *
+*  · The name of EWM may not be used to endorse or promote products derived from     *
+*    this software without specific prior written permission.                        *
+*                                                                                    *
+* THIS SOFTWARE IS PROVIDED BY EWM ”AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,    *
+* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND       *
+* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EWM BE LIABLE   *
+* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES *
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS  *
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY      *
+* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     *
+* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN  *
+* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      *
+*                                                                                    *
+* For any issues regarding this software and its use, contact EWM at:                *
+*                                                                                    *
+*   Eugene W. Myers Jr.                                                              *
+*   Bautzner Str. 122e                                                               *
+*   01099 Dresden                                                                    *
+*   GERMANY                                                                          *
+*   Email: gene.myers at gmail.com                                                      *
+*                                                                                    *
+\************************************************************************************/
+
+/*******************************************************************************************
+ *
+ *  Utility for displaying the overlaps in a .las file in a variety of ways including
+ *    a minimal listing of intervals, a cartoon, and a full out alignment.
+ *
+ *  Author:    Gene Myers
+ *  Creation:  July 2013
+ *  Last Mod:  Jan 2015
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage[] =
+    { "[-carmEUF] [-i<int(4)>] [-w<int(100)>] [-b<int(10)>] ",
+      "         [<src1:db|dam> [ <src2:db|dam> ] <align:las> [ <reads:range> ... ]"
+    };
+
+#define LAST_READ_SYMBOL  '$'
+
+static int ORDER(const void *l, const void *r)
+{ int x = *((int32 *) l);
+  int y = *((int32 *) r);
+  return (x-y);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB   _db1, *db1 = &_db1; 
+  HITS_DB   _db2, *db2 = &_db2; 
+  Overlap   _ovl, *ovl = &_ovl;
+  Alignment _aln, *aln = &_aln;
+
+  FILE   *input;
+  int64   novl;
+  int     tspace, tbytes, small;
+  int     reps, *pts;
+
+  int     ALIGN, CARTOON, REFERENCE, FLIP;
+  int     INDENT, WIDTH, BORDER, UPPERCASE;
+  int     ISTWO;
+  int     ICE_FL;
+  int     M4OVL;
+
+  //  Process options
+
+  { int    i, j, k;
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("LA4Ice")
+
+    INDENT    = 4;
+    WIDTH     = 100;
+    BORDER    = 10;
+    M4OVL     = 0;
+    ICE_FL    = 0;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("carmEUF")
+            break;
+          case 'i':
+            ARG_NON_NEGATIVE(INDENT,"Indent")
+            break;
+          case 'w':
+            ARG_POSITIVE(WIDTH,"Alignment width")
+            break;
+          case 'b':
+            ARG_NON_NEGATIVE(BORDER,"Alignment border")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    UPPERCASE = flags['U'];
+    ALIGN     = flags['a'];
+    REFERENCE = flags['r'];
+    CARTOON   = flags['c'];
+    FLIP      = flags['F'];
+    M4OVL     = flags['m'];
+    ICE_FL    = flags['E'];
+
+    if (argc <= 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB or DB pair
+
+  { int   status;
+    char *pwd, *root;
+    FILE *input;
+
+    ISTWO  = 0;
+    status = Open_DB(argv[1],db1);
+    if (status < 0)
+      exit (1);
+    if (db1->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    if (argc > 3)
+      { pwd   = PathTo(argv[3]);
+        root  = Root(argv[3],".las");
+        if ((input = fopen(Catenate(pwd,"/",root,".las"),"r")) != NULL)
+          { ISTWO = 1;
+            fclose(input);
+            status = Open_DB(argv[2],db2);
+            if (status < 0)
+              exit (1);
+            if (db2->part > 0)
+              { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[2]);
+                exit (1);
+              }
+            Trim_DB(db2);
+          }
+        else
+          db2 = db1;
+        free(root);
+        free(pwd);
+      }
+    else
+      db2 = db1;
+    Trim_DB(db1);
+  }
+
+  //  Process read index arguments into a sorted list of read ranges
+  pts  = (int *) Malloc(sizeof(int)*2*argc,"Allocating read parameters");
+  if (pts == NULL)
+    exit (1);
+
+  reps = 0;
+  if (argc > 3+ISTWO)
+    { int   c, b, e;
+      char *eptr, *fptr;
+
+      for (c = 3+ISTWO; c < argc; c++)
+        { if (argv[c][0] == LAST_READ_SYMBOL)
+            { b = db1->nreads;
+              eptr = argv[c]+1;
+            }
+          else
+            b = strtol(argv[c],&eptr,10);
+          if (eptr > argv[c])
+            { if (b == 0)
+                { fprintf(stderr,"%s: 0 is not a valid index\n",Prog_Name);
+                  exit (1);
+                }
+              if (*eptr == '\0')
+                { pts[reps++] = b;
+                  pts[reps++] = b;
+                  continue;
+                }
+              else if (*eptr == '-')
+                { if (eptr[1] == LAST_READ_SYMBOL)
+                    { e = INT32_MAX;
+                      fptr = eptr+2;
+                    }
+                  else
+                    e = strtol(eptr+1,&fptr,10);
+                  if (fptr > eptr+1 && *fptr == 0 && eptr[1] != '-')
+                    { pts[reps++] = b;
+                      pts[reps++] = e;
+                      if (b > e)
+                        { fprintf(stderr,"%s: Empty range '%s'\n",Prog_Name,argv[c]);
+                          exit (1);
+                        }
+                      continue;
+                    }
+                }
+            }
+          fprintf(stderr,"%s: argument '%s' is not an integer range\n",Prog_Name,argv[c]);
+          exit (1);
+        }
+
+      qsort(pts,reps/2,sizeof(int64),ORDER);
+
+      b = 0;
+      for (c = 0; c < reps; c += 2)
+        if (b > 0 && pts[b-1] >= pts[c]-1) 
+          { if (pts[c+1] > pts[b-1])
+              pts[b-1] = pts[c+1];
+          }
+        else
+          { pts[b++] = pts[c];
+            pts[b++] = pts[c+1];
+          }
+      pts[b++] = INT32_MAX;
+      reps = b;
+    }
+  else
+    { pts[reps++] = 1;
+      pts[reps++] = INT32_MAX;
+    }
+
+  //  Initiate file reading and read (novl, tspace) header
+  
+  { char  *over, *pwd, *root;
+
+    pwd   = PathTo(argv[2+ISTWO]);
+    root  = Root(argv[2+ISTWO],".las");
+    over  = Catenate(pwd,"/",root,".las");
+    input = Fopen(over,"r");
+    if (input == NULL)
+      exit (1);
+
+    if (fread(&novl,sizeof(int64),1,input) != 1)
+      SYSTEM_ERROR
+    if (fread(&tspace,sizeof(int),1,input) != 1)
+      SYSTEM_ERROR
+
+    if (tspace <= TRACE_XOVR)
+      { small  = 1;
+        tbytes = sizeof(uint8);
+      }
+    else
+      { small  = 0;
+        tbytes = sizeof(uint16);
+      }
+
+    if (!(M4OVL)) {
+        printf("\n%s: ",root);
+        Print_Number(novl,0,stdout);
+        printf(" records\n");
+    }
+
+    free(pwd);
+    free(root);
+  }
+
+  //  Read the file and display selected records
+  if (tspace > 0)
+  { int        j;
+    uint16    *trace;
+    Work_Data *work;
+    int        tmax;
+    int        in, npt, idx, ar;
+    int64      tps;
+
+    char      *abuffer, *bbuffer;
+    int        ar_wide, br_wide;
+    int        ai_wide, bi_wide;
+    int        mn_wide, mx_wide;
+    int        tp_wide;
+
+    aln->path = &(ovl->path);
+    if (ALIGN || REFERENCE)
+      { work = New_Work_Data();
+        abuffer = New_Read_Buffer(db1);
+        bbuffer = New_Read_Buffer(db2);
+      }
+    else
+      { abuffer = NULL;
+        bbuffer = NULL;
+        work = NULL;
+      }
+
+    tmax  = 1000;
+    trace = (uint16 *) Malloc(sizeof(uint16)*tmax,"Allocating trace vector");
+    if (trace == NULL)
+      exit (1);
+
+    in  = 0;
+    npt = pts[0];
+    idx = 1;
+
+    ar_wide = Number_Digits((int64) db1->nreads);
+    br_wide = Number_Digits((int64) db2->nreads);
+    ai_wide = Number_Digits((int64) db1->maxlen);
+    bi_wide = Number_Digits((int64) db2->maxlen);
+    if (db1->maxlen < db2->maxlen)
+      { mn_wide = ai_wide;
+        mx_wide = bi_wide;
+        tp_wide = Number_Digits((int64) db1->maxlen/tspace+2);
+      }
+    else
+      { mn_wide = bi_wide;
+        mx_wide = ai_wide;
+        tp_wide = Number_Digits((int64) db2->maxlen/tspace+2);
+      }
+    ar_wide += (ar_wide-1)/3;
+    br_wide += (br_wide-1)/3;
+    ai_wide += (ai_wide-1)/3;
+    bi_wide += (bi_wide-1)/3;
+    mn_wide += (mn_wide-1)/3;
+    tp_wide += (tp_wide-1)/3;
+
+    if (FLIP)
+      { int x;
+        x = ar_wide; ar_wide = br_wide; br_wide = x;
+        x = ai_wide; ai_wide = bi_wide; bi_wide = x;
+      }
+
+    //  For each record do
+
+    for (j = 0; j < novl; j++)
+
+       //  Read it in
+
+      { Read_Overlap(input,ovl);
+        if (ovl->path.tlen > tmax)
+          { tmax = ((int) 1.2*ovl->path.tlen) + 100;
+            trace = (uint16 *) Realloc(trace,sizeof(uint16)*tmax,"Allocating trace vector");
+            if (trace == NULL)
+              exit (1);
+          }
+        ovl->path.trace = (void *) trace;
+        Read_Trace(input,ovl,tbytes);
+
+        //  Determine if it should be displayed
+
+        ar = ovl->aread+1;
+        if (in)
+          { while (ar > npt)
+              { npt = pts[idx++];
+                if (ar < npt)
+                  { in = 0;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        else
+          { while (ar >= npt)
+              { npt = pts[idx++];
+                if (ar <= npt)
+                  { in = 1;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        if (!in)
+          continue;
+
+        // move calculation of sStart and sEnd (bbpos, bepos) up here since both ICE and M4OVL uses it
+        int64 bbpos, bepos;
+        if (COMP(ovl->flags)) {
+            bbpos = (int64) db2->reads[ovl->bread].rlen - (int64) ovl->path.bepos;
+            bepos = (int64) db2->reads[ovl->bread].rlen - (int64) ovl->path.bbpos;
+        } else {
+            bbpos = (int64) ovl->path.bbpos;
+            bepos = (int64) ovl->path.bepos;
+        }
+
+        if (ICE_FL)
+        {
+            // only contiue if it is a full-length-to-full-length mapping, as in:
+            // (1) qStart < 200 and sStart < 200
+            // (2) qEnd + 50 > qLen and sEnd + 50 > qLen
+            if (ovl->path.abpos > 200 || bbpos > 200)
+                continue;
+            if (ovl->path.aepos + 50 < db1->reads[ovl->aread].rlen)
+                continue;
+            if (bepos + 50 < db2->reads[ovl->bread].rlen)
+                continue;
+        }
+
+        //  Display it
+
+        aln->alen  = db1->reads[ovl->aread].rlen;
+        aln->blen  = db2->reads[ovl->bread].rlen;
+        aln->flags = ovl->flags;
+        tps        = ((ovl->path.aepos-1)/tspace - ovl->path.abpos/tspace);
+
+
+        if (M4OVL) {
+            double acc;
+            acc = 100-(200. * ovl->path.diffs)/( ovl->path.aepos - ovl->path.abpos + ovl->path.bepos - ovl->path.bbpos);
+
+            printf("%09lld %09lld %lld %5.2f ", (int64) ovl->aread, (int64) ovl->bread,  (int64) bbpos - (int64) bepos, acc);
+            printf("0 %lld %lld %lld ", (int64) ovl->path.abpos, (int64) ovl->path.aepos, (int64) aln->alen);
+            printf("%d %lld %lld %lld ", COMP(ovl->flags), bbpos, bepos, (int64) aln->blen);
+            if ( ((int64) aln->blen < (int64) aln->alen) && ((int64) ovl->path.bbpos < 1) && ((int64) aln->blen - (int64) ovl->path.bepos < 1) )
+              {
+                printf("contains\n");
+              }
+            else if ( ((int64) aln->alen < (int64) aln->blen) && ((int64) ovl->path.abpos < 1) && ((int64) aln->alen - (int64) ovl->path.aepos < 1) )
+              {
+                printf("contained\n");
+              }
+            else
+              {
+                printf("overlap\n");
+              }
+
+        }
+
+        if (!M4OVL) {
+            if (FLIP)
+              { Flip_Alignment(aln,0);
+                Print_Number((int64) ovl->bread+1,ar_wide+1,stdout);
+                printf("  ");
+                Print_Number((int64) ovl->aread+1,br_wide+1,stdout);
+              }
+            else
+              { Print_Number((int64) ovl->aread+1,ar_wide+1,stdout);
+                printf("  ");
+                Print_Number((int64) ovl->bread+1,br_wide+1,stdout);
+              }
+            if (COMP(ovl->flags))
+              printf(" c");
+            else
+              printf(" n");
+            printf("   [");
+            Print_Number((int64) ovl->path.abpos,ai_wide,stdout);
+            printf("..");
+            Print_Number((int64) ovl->path.aepos,ai_wide,stdout);
+            printf("] x [");
+            Print_Number((int64) ovl->path.bbpos,bi_wide,stdout);
+            printf("..");
+            Print_Number((int64) ovl->path.bepos,bi_wide,stdout);
+            printf("]");
+        }
+
+        if (ALIGN || CARTOON || REFERENCE)
+          { if (ALIGN || REFERENCE)
+              { char *aseq, *bseq;
+                int   amin,  amax;
+                int   bmin,  bmax;
+
+                if (FLIP)
+                  Flip_Alignment(aln,0);
+                if (small)
+                  Decompress_TraceTo16(ovl);
+
+                amin = ovl->path.abpos - BORDER;
+                if (amin < 0) amin = 0;
+                amax = ovl->path.aepos + BORDER;
+                if (amax > aln->alen) amax = aln->alen;
+                if (COMP(aln->flags))
+                  { bmin = (aln->blen-ovl->path.bepos) - BORDER;
+                    if (bmin < 0) bmin = 0;
+                    bmax = (aln->blen-ovl->path.bbpos) + BORDER;
+                    if (bmax > aln->blen) bmax = aln->blen;
+                  }
+                else
+                  { bmin = ovl->path.bbpos - BORDER;
+                    if (bmin < 0) bmin = 0;
+                    bmax = ovl->path.bepos + BORDER;
+                    if (bmax > aln->blen) bmax = aln->blen;
+                  }
+
+                aseq = Load_Subread(db1,ovl->aread,amin,amax,abuffer,0);
+                bseq = Load_Subread(db2,ovl->bread,bmin,bmax,bbuffer,0);
+
+                aln->aseq = aseq - amin;
+                if (COMP(aln->flags))
+                  { Complement_Seq(bseq,bmax-bmin);
+                    aln->bseq = bseq - (aln->blen - bmax);
+                  }
+                else
+                  aln->bseq = bseq - bmin;
+
+                Compute_Trace_PTS(aln,work,tspace,GREEDIEST);
+
+                if (FLIP)
+                  { if (COMP(aln->flags))
+                      { Complement_Seq(aseq,amax-amin);
+                        Complement_Seq(bseq,bmax-bmin);
+                        aln->aseq = aseq - (aln->alen - amax);
+                        aln->bseq = bseq - bmin;
+                      }
+                    Flip_Alignment(aln,1);
+                  }
+              }
+            if (CARTOON)
+              { printf("  (");
+                Print_Number(tps,tp_wide,stdout);
+                printf(" trace pts)\n\n");
+                Alignment_Cartoon(stdout,aln,INDENT,mx_wide);
+              }
+            else
+              { if (!M4OVL) {
+                    printf(" :   = ");
+                    Print_Number((int64) ovl->path.diffs,mn_wide,stdout);
+                    printf(" diffs  (");
+                    Print_Number(tps,tp_wide,stdout);
+                    printf(" trace pts)\n");
+                }
+              }
+            if (REFERENCE)
+              Print_Reference(stdout,aln,work,INDENT,WIDTH,BORDER,UPPERCASE,mx_wide);
+            if (ALIGN)
+              Print_Alignment(stdout,aln,work,INDENT,WIDTH,BORDER,UPPERCASE,mx_wide);
+          }
+        else
+          { printf(" :   < ");
+            Print_Number((int64) ovl->path.diffs,mn_wide,stdout);
+            printf(" diffs  (");
+            Print_Number(tps,tp_wide,stdout);
+            printf(" trace pts)\n");
+          }
+      }
+
+    free(trace);
+    if (ALIGN)
+      { free(bbuffer-1);
+        free(abuffer-1);
+        Free_Work_Data(work);
+      }
+  }
+
+  if (M4OVL) {
+    printf("+ +\n");
+    printf("- -\n");
+  }
+
+  Close_DB(db1);
+  if (ISTWO)
+    Close_DB(db2);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAcat.c b/DALIGNER/LAcat.c
new file mode 100644
index 0000000..5b39340
--- /dev/null
+++ b/DALIGNER/LAcat.c
@@ -0,0 +1,192 @@
+/*******************************************************************************************
+ *
+ *  Merge together in index order, overlap files <XXX>.1.las, <XXX>.2.las, ... into a
+ *    single overlap file and output to the standard output
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage = "[-v] <source:las> > <target>.las";
+
+#define MEMORY   1000   //  How many megabytes for output buffer
+
+int main(int argc, char *argv[])
+{ char     *iblock, *oblock;
+  FILE     *input;
+  int64     novl, bsize, ovlsize, ptrsize;
+  int       tspace, tbytes;
+  char     *pwd, *root, *root2;
+
+  int       VERBOSE;
+
+  //  Process options
+
+  { int i, j, k;
+    int flags[128];
+
+    ARG_INIT("LAcat")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("v") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (argc <= 1)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  ptrsize = sizeof(void *);
+  ovlsize = sizeof(Overlap) - ptrsize;
+  bsize   = MEMORY * 1000000ll;
+  oblock  = (char *) Malloc(bsize,"Allocating output block");
+  iblock  = (char *) Malloc(bsize + ptrsize,"Allocating input block");
+  if (oblock == NULL || iblock == NULL)
+    exit (1);
+  iblock += ptrsize;
+
+  pwd    = PathTo(argv[1]);
+  root   = Root(argv[1],".las");
+
+  root2 = index(root,'#');
+  if (root2 == NULL)
+    { fprintf(stderr,"%s: No #-sign in source name '%s'\n",Prog_Name,root);
+      exit (1);
+    }
+  if (index(root2+1,'#') != NULL)
+    { fprintf(stderr,"%s: Two or more occurences of #-sign in source name '%s'\n",Prog_Name,root);
+      exit (1);
+    }
+  *root2++ = '\0';
+
+  { int64    povl;
+    int      i, mspace;
+
+    novl   = 0;
+    tspace = 0;
+    mspace = 0;
+    tbytes = 0;
+    for (i = 0; 1; i++)
+      { char *name = Catenate(pwd,"/",Numbered_Suffix(root,i+1,root2),".las");
+        if ((input = fopen(name,"r")) == NULL) break;
+
+        if (fread(&povl,sizeof(int64),1,input) != 1)
+          SYSTEM_ERROR
+        novl += povl;
+        if (fread(&mspace,sizeof(int),1,input) != 1)
+          SYSTEM_ERROR
+        if (i == 0)
+          { tspace = mspace;
+            if (tspace <= TRACE_XOVR)
+              tbytes = sizeof(uint8);
+            else
+              tbytes = sizeof(uint16);
+          }
+        else if (tspace != mspace)
+          { fprintf(stderr,"%s: PT-point spacing conflict (%d vs %d)\n",Prog_Name,tspace,mspace);
+            exit (1);
+          }
+
+        fclose(input);
+      }
+    fwrite(&novl,sizeof(int64),1,stdout);
+    fwrite(&tspace,sizeof(int),1,stdout);
+  }
+
+  { int      i, j;
+    Overlap *w;
+    int64    tsize, povl;
+    int      mspace;
+    char    *iptr, *itop;
+    char    *optr, *otop;
+
+    optr = oblock;
+    otop = oblock + bsize;
+
+    for (i = 0; 1; i++)
+      { char *name = Catenate(pwd,"/",Numbered_Suffix(root,i+1,root2),".las");
+        if ((input = fopen(name,"r")) == NULL) break;
+
+        if (fread(&povl,sizeof(int64),1,input) != 1)
+          SYSTEM_ERROR
+        if (fread(&mspace,sizeof(int),1,input) != 1)
+          SYSTEM_ERROR
+
+        if (VERBOSE)
+          fprintf(stderr,"  Concatenating %s: %lld la\'s\n",Numbered_Suffix(root,i+1,root2),povl);
+
+        iptr = iblock;
+        itop = iblock + fread(iblock,1,bsize,input);
+
+        for (j = 0; j < povl; j++)
+          { if (iptr + ovlsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,input);
+              }
+
+            w = (Overlap *) (iptr - ptrsize);
+            tsize = w->path.tlen*tbytes;
+
+            if (optr + ovlsize + tsize > otop)
+              { fwrite(oblock,1,optr-oblock,stdout);
+                optr = oblock;
+              }
+
+            memcpy(optr,iptr,ovlsize);
+            optr += ovlsize;
+            iptr += ovlsize;
+
+            if (iptr + tsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,input);
+              }
+            
+            memcpy(optr,iptr,tsize);
+            optr += tsize;
+            iptr += tsize;
+          }
+
+        fclose(input);
+      }
+
+    if (optr > oblock)
+      fwrite(oblock,1,optr-oblock,stdout);
+  }
+
+  if (VERBOSE)
+    fprintf(stderr,"  Totalling %lld la\'s\n",novl);
+
+  free(pwd);
+  free(root);
+  free(oblock);
+  free(iblock-ptrsize);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAcheck.c b/DALIGNER/LAcheck.c
new file mode 100644
index 0000000..5de3efe
--- /dev/null
+++ b/DALIGNER/LAcheck.c
@@ -0,0 +1,361 @@
+/*******************************************************************************************
+ *
+ *  Check the structural integrity of .las files
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2014
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage = "[-vS] <src1:db|dam> [ <src2:db|dam> ] <align:las> ...";
+
+#define MEMORY   1000   //  How many megabytes for output buffer
+
+int main(int argc, char *argv[])
+{ HITS_DB   _db1,  *db1  = &_db1;
+  HITS_DB   _db2,  *db2  = &_db2;
+  int        VERBOSE;
+  int        SORTED;
+  int        ISTWO;
+  int        status;
+
+  //  Process options
+
+  { int i, j, k;
+    int flags[128];
+
+    ARG_INIT("LAcheck")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vS")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+    SORTED  = flags['S'];
+
+    if (argc <= 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB
+
+  { int   status;
+    char *pwd, *root;
+    FILE *input;
+
+    ISTWO  = 0;
+    status = Open_DB(argv[1],db1);
+    if (status < 0)
+      exit (1);
+    if (db1->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    pwd    = PathTo(argv[2]);
+    root   = Root(argv[2],".las");
+    if ((input = fopen(Catenate(pwd,"/",root,".las"),"r")) == NULL)
+      { ISTWO = 1;
+        if (argc <= 3)
+          { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+            exit (1);
+          }
+        status = Open_DB(argv[2],db2);
+        if (status < 0)
+          exit (1);
+        if (db2->part > 0)
+          { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[2]);
+            exit (1);
+          }
+        Trim_DB(db2);
+      }
+    else
+      { fclose(input);
+        db2 = db1;
+      }
+    Trim_DB(db1);
+
+    free(root);
+    free(pwd);
+  }
+
+  { char      *iblock;
+    int64      bsize, ovlsize, ptrsize;
+    int        i, j;
+    HITS_READ *reads1  = db1->reads;
+    int        nreads1 = db1->nreads;
+    HITS_READ *reads2  = db2->reads;
+    int        nreads2 = db2->nreads;
+
+    //  Setup IO buffers
+
+    ptrsize = sizeof(void *);
+    ovlsize = sizeof(Overlap) - ptrsize;
+    bsize   = MEMORY * 1000000ll;
+    iblock  = (char *) Malloc(bsize+ptrsize,"Allocating input block");
+    if (iblock == NULL)
+      exit (1);
+    iblock += ptrsize;
+
+    //  For each file do
+
+    status = 0;
+    for (i = 2+ISTWO; i < argc; i++)
+      { char     *pwd, *root;
+        FILE     *input;
+        char     *iptr, *itop;
+        Overlap   last, prev;
+        int64     novl;
+        int       tspace, tbytes;
+        int       has_chains;
+
+        //  Establish IO and (novl,tspace) header
+
+        pwd    = PathTo(argv[i]);
+        root   = Root(argv[i],".las");
+        if ((input = Fopen(Catenate(pwd,"/",root,".las"),"r")) == NULL)
+          goto error;
+
+        if (fread(&novl,sizeof(int64),1,input) != 1)
+          SYSTEM_ERROR
+        if (fread(&tspace,sizeof(int),1,input) != 1)
+          SYSTEM_ERROR
+        if (novl < 0)
+          { if (VERBOSE)
+              fprintf(stderr,"  %s: Number of alignments < 0\n",root);
+            goto error;
+          }
+        if (tspace < 0)
+          { if (VERBOSE)
+              fprintf(stderr,"  %s: Trace spacing < 0\n",root);
+            goto error;
+          }
+
+        if (tspace <= TRACE_XOVR)
+          tbytes = sizeof(uint8);
+        else
+          tbytes = sizeof(uint16);
+
+        iptr = iblock;
+        itop = iblock + fread(iblock,1,bsize,input);
+
+        //  For each record in file do
+
+        has_chains = 0;
+        last.aread = -1;
+        last.bread = -1;
+        last.flags =  0;
+        last.path.bbpos = last.path.abpos = 0;
+        last.path.bepos = last.path.aepos = 0;
+        prev = last;
+        for (j = 0; j < novl; j++)
+          { Overlap ovl;
+            int     tsize;
+            int     equal;
+
+            //  Fetch next record
+
+            if (iptr + ovlsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,input);
+                if (iptr + ovlsize > itop)
+                  { if (VERBOSE)
+                      fprintf(stderr,"  %s: Too few alignment records\n",root);
+                    goto error;
+                  }
+              }
+
+            ovl   = *((Overlap *) (iptr - ptrsize));
+            iptr += ovlsize;
+            tsize = ovl.path.tlen*tbytes;
+
+            if (iptr + tsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,input);
+                if (iptr + tsize > itop)
+                  { if (VERBOSE)
+                      fprintf(stderr,"  %s: Too few alignment records\n",root);
+                    goto error;
+                  }
+              }
+            ovl.path.trace = iptr;
+            iptr += tsize;
+
+            //  Basic checks
+
+            if (ovl.aread < 0 || ovl.bread < 0)
+              { if (VERBOSE)
+                  fprintf(stderr,"  %s: Read indices < 0\n",root);
+                goto error;
+              }
+            if (ovl.aread >= nreads1 || ovl.bread >= nreads2)
+              { if (VERBOSE)
+                  fprintf(stderr,"  %s: Read indices out of range\n",root);
+                goto error;
+              }
+
+            if (ovl.path.abpos >= ovl.path.aepos || ovl.path.aepos > reads1[ovl.aread].rlen ||
+                ovl.path.bbpos >= ovl.path.bepos || ovl.path.bepos > reads2[ovl.bread].rlen ||
+                ovl.path.abpos < 0               || ovl.path.bbpos < 0                       )
+              { if (VERBOSE)
+                  fprintf(stderr,"  %s: Non-sense alignment intervals\n",root);
+                goto error;
+              }
+
+            if (ovl.path.diffs < 0 || ovl.path.diffs > reads1[ovl.aread].rlen ||
+                                      ovl.path.diffs > reads2[ovl.bread].rlen)
+              { if (VERBOSE)
+                  fprintf(stderr,"  %s: Non-sense number of differences\n",root);
+                goto error;
+              }
+
+            if (Check_Trace_Points(&ovl,tspace,VERBOSE,root))
+              goto error;
+
+            if (j == 0)
+              has_chains = ((ovl.flags & (START_FLAG | NEXT_FLAG | BEST_FLAG)) != 0);
+            if (has_chains)
+              { if ((ovl.flags & (START_FLAG | NEXT_FLAG)) == 0)
+                  { if (VERBOSE)
+                      fprintf(stderr,"  %s: LA has both start & next flag set\n",root);
+                    goto error;
+                  }
+                if (BEST_CHAIN(ovl.flags) && CHAIN_NEXT(ovl.flags))
+                  { if (VERBOSE)
+                      fprintf(stderr,"  %s: LA has both best & next flag set\n",root);
+                    goto error;
+                  }
+              }
+            else
+              { if ((ovl.flags & (START_FLAG | NEXT_FLAG | BEST_FLAG)) != 0)
+                  { if (VERBOSE)
+                      fprintf(stderr,"  %s: LAs should not have chain flags\n",root);
+                    goto error;
+                  }
+              }
+
+            //  Duplicate check and sort check if -S set
+
+            equal = 0;
+            if (SORTED)
+              { if (CHAIN_NEXT(ovl.flags) || !has_chains)
+                  { if (ovl.aread > last.aread) goto inorder;
+                    if (ovl.aread == last.aread)
+                      { if (ovl.bread > last.bread) goto inorder;
+                        if (ovl.bread == last.bread)
+                          { if (COMP(ovl.flags) > COMP(last.flags)) goto inorder;
+                            if (COMP(ovl.flags) == COMP(last.flags))
+                              { if (ovl.path.abpos > last.path.abpos) goto inorder;
+                                if (ovl.path.abpos == last.path.abpos)
+                                  { equal = 1;
+                                    goto inorder;
+                                  }
+                              }
+                          }
+                      }
+                    if (VERBOSE)
+                      { if (CHAIN_NEXT(ovl.flags))
+                          fprintf(stderr,"  %s: Chain is not valid (%d vs %d)\n",
+                                         root,ovl.aread+1,ovl.bread+1);
+                        else
+                          fprintf(stderr,"  %s: Reads are not sorted (%d vs %d)\n",
+                                         root,ovl.aread+1,ovl.bread+1);
+                      }
+                    goto error;
+                  }
+                else
+                  { if (ovl.aread > prev.aread) goto inorder;
+                    if (ovl.aread == prev.aread)
+                      { if (ovl.path.abpos > prev.path.abpos) goto inorder;
+                        if (ovl.path.abpos == prev.path.abpos)
+                          goto dupcheck;
+                      }
+                    if (VERBOSE)
+                      fprintf(stderr,"  %s: Chains are not sorted (%d vs %d)\n",
+                                     root,ovl.aread+1,ovl.bread+1);
+                    goto error;
+                  }
+              }
+          dupcheck:
+            if (ovl.aread == last.aread && ovl.bread == last.bread &&
+                COMP(ovl.flags) == COMP(last.flags) && ovl.path.abpos == last.path.abpos)
+              equal = 1;
+          inorder:
+            if (equal)
+              { if (ovl.path.aepos == last.path.aepos &&
+                    ovl.path.bbpos == last.path.bbpos &&
+                    ovl.path.bepos == last.path.bepos)
+                  { if (VERBOSE)
+                      fprintf(stderr,"  %s: Duplicate overlap (%d vs %d)\n",
+                                     root,ovl.aread+1,ovl.bread+1);
+                    goto error;
+                  }
+              }
+
+            last = ovl;
+            if (CHAIN_START(ovl.flags))
+              prev = ovl;
+          }
+
+        //  File processing epilog: Check all data read and print OK if -v
+
+        if (iptr < itop)
+          { if (VERBOSE)
+              fprintf(stderr,"  %s: Too many alignment records\n",root);
+            goto error;
+          }
+
+        if (VERBOSE)
+          { fprintf(stderr,"  %s: ",root);
+            Print_Number(novl,0,stderr);
+            fprintf(stderr," all OK\n");
+          }
+        goto cleanup;
+
+      error:
+        status = 1;
+      cleanup:
+        if (input != NULL)
+          fclose(input);
+        free(pwd);
+        free(root);
+      }
+
+    free(iblock-ptrsize);
+  }
+
+  Close_DB(db1);
+  if (ISTWO)
+    Close_DB(db2);
+
+  exit (status);
+}
diff --git a/DALIGNER/LAdump.c b/DALIGNER/LAdump.c
new file mode 100644
index 0000000..070c3c2
--- /dev/null
+++ b/DALIGNER/LAdump.c
@@ -0,0 +1,487 @@
+/*******************************************************************************************
+ *
+ *  Utility for displaying the information in the overlaps of a .las file in a very
+ *    simple to parse format.
+ *
+ *  Author:    Gene Myers
+ *  Creation:  July 2013
+ *  Last Mod:  Jan 2015
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage =
+    "[-cdt] [-o] <src1:db|dam> [ <src2:db|dam> ] <align:las> [ <reads:FILE> | <reads:range> ... ]";
+
+#define LAST_READ_SYMBOL  '$'
+
+static int ORDER(const void *l, const void *r)
+{ int x = *((int *) l);
+  int y = *((int *) r);
+  return (x-y);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB   _db1, *db1 = &_db1; 
+  HITS_DB   _db2, *db2 = &_db2; 
+  Overlap   _ovl, *ovl = &_ovl;
+
+  FILE   *input;
+  int64   novl;
+  int     tspace, tbytes, small;
+  int     reps, *pts;
+  int     input_pts;
+
+  int     OVERLAP;
+  int     DOCOORDS, DODIFFS, DOTRACE;
+  int     ISTWO;
+
+  //  Process options
+
+  { int    i, j, k;
+    int    flags[128];
+
+    ARG_INIT("LAdump")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("ocdtUF")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    OVERLAP   = flags['o'];
+    DOCOORDS  = flags['c'];
+    DODIFFS   = flags['d'];
+    DOTRACE   = flags['t'];
+
+    if (DOTRACE)
+      DOCOORDS = 1;
+
+    if (argc <= 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB or DB pair
+
+  { int   status;
+    char *pwd, *root;
+    FILE *input;
+
+    ISTWO  = 0;
+    status = Open_DB(argv[1],db1);
+    if (status < 0)
+      exit (1);
+    if (db1->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    if (argc > 3)
+      { pwd   = PathTo(argv[3]);
+        root  = Root(argv[3],".las");
+        if ((input = fopen(Catenate(pwd,"/",root,".las"),"r")) != NULL)
+          { ISTWO = 1;
+            fclose(input);
+            status = Open_DB(argv[2],db2);
+            if (status < 0)
+              exit (1);
+            if (db2->part > 0)
+              { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[2]);
+                exit (1);
+              }
+            Trim_DB(db2);
+          }
+        else
+          db2 = db1;
+        free(root);
+        free(pwd);
+      }
+    else
+      db2 = db1;
+    Trim_DB(db1);
+  }
+
+  //  Process read index arguments into a sorted list of read ranges
+
+  input_pts = 0;
+  if (argc == ISTWO+4)
+    { if (argv[ISTWO+3][0] != LAST_READ_SYMBOL || argv[ISTWO+3][1] != '\0')
+        { char *eptr, *fptr;
+          int   b, e;
+
+          b = strtol(argv[ISTWO+3],&eptr,10);
+          if (eptr > argv[ISTWO+3] && b > 0)
+            { if (*eptr == '-')
+                { if (eptr[1] != LAST_READ_SYMBOL || eptr[2] != '\0')
+                    { e = strtol(eptr+1,&fptr,10);
+                      input_pts = (fptr <= eptr+1 || *fptr != '\0' || e <= 0);
+                    }
+                }
+              else
+                input_pts = (*eptr != '\0');
+            }
+          else
+            input_pts = 1;
+        }
+    }
+
+  if (input_pts)
+    { int v, x;
+      FILE *input;
+
+      input = Fopen(argv[ISTWO+3],"r");
+      if (input == NULL)
+        exit (1);
+
+      reps = 0;
+      while ((v = fscanf(input," %d",&x)) != EOF)
+        if (v == 0)
+          { fprintf(stderr,"%s: %d'th item of input file %s is not an integer\n",
+                           Prog_Name,reps+1,argv[2]);
+            exit (1);
+          }
+        else
+          reps += 1;
+
+      reps *= 2;
+      pts   = (int *) Malloc(sizeof(int)*reps,"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      rewind(input);
+      for (v = 0; v < reps; v += 2)
+        { fscanf(input," %d",&x);
+          pts[v] = pts[v+1] = x;
+        }
+
+      fclose(input);
+    }
+
+  else
+    { pts  = (int *) Malloc(sizeof(int)*2*argc,"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      reps = 0;
+      if (argc > 3+ISTWO)
+        { int   c, b, e;
+          char *eptr, *fptr;
+
+          for (c = 3+ISTWO; c < argc; c++)
+            { if (argv[c][0] == LAST_READ_SYMBOL)
+                { b = db1->nreads;
+                  eptr = argv[c]+1;
+                }
+              else
+                b = strtol(argv[c],&eptr,10);
+              if (eptr > argv[c])
+                { if (b <= 0)
+                    { fprintf(stderr,"%s: %d is not a valid index\n",Prog_Name,b);
+                      exit (1);
+                    }
+                  if (*eptr == '\0')
+                    { pts[reps++] = b;
+                      pts[reps++] = b;
+                      continue;
+                    }
+                  else if (*eptr == '-')
+                    { if (eptr[1] == LAST_READ_SYMBOL)
+                        { e = INT32_MAX;
+                          fptr = eptr+2;
+                        }
+                      else
+                        e = strtol(eptr+1,&fptr,10);
+                      if (fptr > eptr+1 && *fptr == 0 && e > 0)
+                        { pts[reps++] = b;
+                          pts[reps++] = e;
+                          if (b > e)
+                            { fprintf(stderr,"%s: Empty range '%s'\n",Prog_Name,argv[c]);
+                              exit (1);
+                            }
+                          continue;
+                        }
+                    }
+                }
+              fprintf(stderr,"%s: argument '%s' is not an integer range\n",Prog_Name,argv[c]);
+              exit (1);
+            }
+
+          qsort(pts,reps/2,sizeof(int64),ORDER);
+
+          b = 0;
+          for (c = 0; c < reps; c += 2)
+            if (b > 0 && pts[b-1] >= pts[c]-1) 
+              { if (pts[c+1] > pts[b-1])
+                  pts[b-1] = pts[c+1];
+              }
+            else
+              { pts[b++] = pts[c];
+                pts[b++] = pts[c+1];
+              }
+          pts[b++] = INT32_MAX;
+          reps = b;
+        }
+      else
+        { pts[reps++] = 1;
+          pts[reps++] = INT32_MAX;
+        }
+    }
+
+  //  Initiate file reading and read header
+  
+  { char  *over, *pwd, *root;
+
+    pwd   = PathTo(argv[2+ISTWO]);
+    root  = Root(argv[2+ISTWO],".las");
+    over  = Catenate(pwd,"/",root,".las");
+    input = Fopen(over,"r");
+    if (input == NULL)
+      exit (1);
+
+    if (fread(&novl,sizeof(int64),1,input) != 1)
+      SYSTEM_ERROR
+    if (fread(&tspace,sizeof(int),1,input) != 1)
+      SYSTEM_ERROR
+
+    if (tspace <= TRACE_XOVR)
+      { small  = 1;
+        tbytes = sizeof(uint8);
+      }
+    else
+      { small  = 0;
+        tbytes = sizeof(uint16);
+      }
+
+    free(pwd);
+    free(root);
+  }
+
+  //  Scan to count sizes of things
+
+  { int   j, al, tlen;
+    int   in, npt, idx, ar;
+    int64 novls, odeg, omax, sdeg, smax, ttot, tmax;
+
+    in  = 0;
+    npt = pts[0];
+    idx = 1;
+
+    //  For each record do
+
+    novls = omax = smax = ttot = tmax = 0;
+    sdeg  = odeg = 0;
+
+    al = 0;
+    for (j = 0; j < novl; j++)
+
+       //  Read it in
+
+      { Read_Overlap(input,ovl);
+        tlen = ovl->path.tlen;
+        fseeko(input,tlen*tbytes,SEEK_CUR);
+
+        //  Determine if it should be displayed
+
+        ar = ovl->aread+1;
+        if (in)
+          { while (ar > npt)
+              { npt = pts[idx++];
+                if (ar < npt)
+                  { in = 0;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        else
+          { while (ar >= npt)
+              { npt = pts[idx++];
+                if (ar <= npt)
+                  { in = 1;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        if (!in)
+          continue;
+
+        //  If -o check display only overlaps
+
+        if (OVERLAP)
+          { if (ovl->path.abpos != 0 && ovl->path.bbpos != 0)
+              continue;
+            if (ovl->path.aepos != db1->reads[ovl->aread].rlen &&
+                ovl->path.bepos != db2->reads[ovl->bread].rlen)
+              continue;
+          }
+
+        if (ar != al)
+          { if (sdeg > smax)
+              smax = sdeg;
+            if (odeg > omax)
+              omax = odeg;
+            sdeg = odeg = 0;
+            al = ar;
+          }
+
+        novls += 1;
+        odeg  += 1;
+        sdeg  += tlen;
+        ttot  += tlen;
+        if (tlen > tmax)
+          tmax = tlen;
+      }
+
+    if (sdeg > smax)
+      smax = sdeg;
+    if (odeg > omax)
+      omax = odeg;
+
+    printf("+ P %lld\n",novls);
+    printf("%% P %lld\n",omax);
+    printf("+ T %lld\n",ttot);
+    printf("%% T %lld\n",smax);
+    printf("@ T %lld\n",tmax);
+  }
+
+  //  Read the file and display selected records
+  
+  { int        j;
+    uint16    *trace;
+    int        tmax;
+    int        in, npt, idx, ar;
+    int64      verse;
+
+    rewind(input);
+    fread(&verse,sizeof(int64),1,input);
+    fread(&tspace,sizeof(int),1,input);
+    if (verse < 0)
+      { for (j = 0; j < 5; j++)
+          fread(&verse,sizeof(int64),1,input);
+      }
+
+    tmax  = 1000;
+    trace = (uint16 *) Malloc(sizeof(uint16)*tmax,"Allocating trace vector");
+    if (trace == NULL)
+      exit (1);
+
+    in  = 0;
+    npt = pts[0];
+    idx = 1;
+
+    //  For each record do
+
+    for (j = 0; j < novl; j++)
+
+       //  Read it in
+
+      { Read_Overlap(input,ovl);
+        if (ovl->path.tlen > tmax)
+          { tmax = ((int) 1.2*ovl->path.tlen) + 100;
+            trace = (uint16 *) Realloc(trace,sizeof(uint16)*tmax,"Allocating trace vector");
+            if (trace == NULL)
+              exit (1);
+          }
+        ovl->path.trace = (void *) trace;
+        Read_Trace(input,ovl,tbytes);
+
+        //  Determine if it should be displayed
+
+        ar = ovl->aread+1;
+        if (in)
+          { while (ar > npt)
+              { npt = pts[idx++];
+                if (ar < npt)
+                  { in = 0;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        else
+          { while (ar >= npt)
+              { npt = pts[idx++];
+                if (ar <= npt)
+                  { in = 1;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        if (!in)
+          continue;
+
+        //  If -o check display only overlaps
+
+        if (OVERLAP)
+          { if (ovl->path.abpos != 0 && ovl->path.bbpos != 0)
+              continue;
+            if (ovl->path.aepos != db1->reads[ovl->aread].rlen &&
+                ovl->path.bepos != db2->reads[ovl->bread].rlen)
+              continue;
+          }
+
+        //  Display it
+            
+        printf("P %d %d",ovl->aread+1,ovl->bread+1);
+        if (COMP(ovl->flags))
+          printf(" c");
+        else
+          printf(" n");
+        if (CHAIN_NEXT(ovl->flags))
+          printf(" -");
+        else if (BEST_CHAIN(ovl->flags))
+          printf(" >");
+        else if (CHAIN_START(ovl->flags))
+          printf(" +");
+        else
+          printf(" .");
+        printf("\n");
+
+        if (DOCOORDS)
+          printf("C %d %d %d %d\n",ovl->path.abpos,ovl->path.aepos,ovl->path.bbpos,ovl->path.bepos);
+
+        if (DODIFFS)
+          printf("D %d\n",ovl->path.diffs);
+
+        if (DOTRACE)
+          { uint16 *trace = (uint16 *) ovl->path.trace;
+            int     tlen  = ovl->path.tlen;
+
+            if (small)
+              Decompress_TraceTo16(ovl);
+            printf("T %d\n",tlen>>1);
+            for (j = 0; j < tlen; j += 2)
+              printf(" %3d %3d\n",trace[j],trace[j+1]);
+          }
+      }
+
+    free(trace);
+  }
+
+  Close_DB(db1);
+  if (ISTWO)
+    Close_DB(db2);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAindex.c b/DALIGNER/LAindex.c
new file mode 100644
index 0000000..3f2445a
--- /dev/null
+++ b/DALIGNER/LAindex.c
@@ -0,0 +1,201 @@
+/*******************************************************************************************
+ *
+ *  Create an index with extension .las.idx for a .las file.
+ *    Utility expects the .las file to be sorted.
+ *    Header contains total # of trace points, max # of trace points for
+ *    a given overlap, max # of trace points in all the overlaps for a given aread, and
+ *    max # of overlaps for a given aread.  The remainder are the offsets into each pile.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  Sept 2015
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage = "[-v] <source:las> ...";
+
+#define MEMORY   1000   //  How many megabytes for output buffer
+
+int main(int argc, char *argv[])
+{ char     *iblock;
+  FILE     *input, *output;
+  int64     novl, bsize, ovlsize, ptrsize;
+  int       tspace, tbytes;
+  char     *pwd, *root;
+  int64     tmax, ttot;
+  int64     omax, smax;
+  int64     odeg, sdeg;
+  int       i;
+
+  int       VERBOSE;
+
+  //  Process options
+
+  { int j, k;
+    int flags[128];
+
+    ARG_INIT("LAindex")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("v") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (argc <= 1)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  For each file do
+
+  ptrsize = sizeof(void *);
+  ovlsize = sizeof(Overlap) - ptrsize;
+  bsize   = MEMORY * 1000000ll;
+  iblock  = (char *) Malloc(bsize + ptrsize,"Allocating input block");
+  if (iblock == NULL)
+    exit (1);
+  iblock += ptrsize;
+
+  for (i = 1; i < argc; i++)
+    { pwd   = PathTo(argv[i]);
+      root  = Root(argv[i],".las");
+      input = Fopen(Catenate(pwd,"/",root,".las"),"r");
+      if (input == NULL)
+        exit (1);
+    
+      if (fread(&novl,sizeof(int64),1,input) != 1)
+        SYSTEM_ERROR
+      if (fread(&tspace,sizeof(int),1,input) != 1)
+        SYSTEM_ERROR
+      if (tspace <= TRACE_XOVR)
+        tbytes = sizeof(uint8);
+      else
+        tbytes = sizeof(uint16);
+    
+      output = Fopen(Catenate(pwd,"/.",root,".las.idx"),"w");
+      if (output == NULL)
+        exit (1);
+    
+      free(pwd);
+      free(root);
+
+      if (VERBOSE)
+        { printf("  Indexing %s: ",root);
+          Print_Number(novl,0,stdout);
+          printf(" records ... ");
+          fflush(stdout);
+        }
+
+      fwrite(&novl,sizeof(int64),1,output);
+      fwrite(&novl,sizeof(int64),1,output);
+      fwrite(&novl,sizeof(int64),1,output);
+      fwrite(&novl,sizeof(int64),1,output);
+    
+      { int         j, alst;
+        Overlap    *w;
+        int64       tsize;
+        int64       optr;
+        char       *iptr, *itop;
+        int64       tlen;
+    
+        optr = sizeof(int64) + sizeof(int32);
+        iptr = iblock;
+        itop = iblock + fread(iblock,1,bsize,input);
+    
+        alst = -1;
+        odeg = sdeg = 0;
+        omax = smax = 0;
+        tmax = ttot = 0;
+        for (j = 0; j < novl; j++)
+          { if (iptr + ovlsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,input);
+              }
+    
+            w = (Overlap *) (iptr - ptrsize);
+    
+            tlen = w->path.tlen;
+            if (alst < 0)
+              { fwrite(&optr,sizeof(int64),1,output);
+                alst = w->aread;
+              }
+            else
+              while (alst < w->aread)
+                { if (sdeg > smax)
+                    smax = sdeg;
+                  if (odeg > omax)
+                    omax = odeg;
+                  fwrite(&optr,sizeof(int64),1,output);
+    	          odeg = sdeg = 0;
+                  alst += 1;
+                }
+            if (tlen > tmax)
+              tmax = tlen;
+            ttot += tlen;
+            odeg += 1;
+            sdeg += tlen;
+    
+            iptr += ovlsize;
+    
+            tsize = tlen*tbytes;
+            if (iptr + tsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,input);
+              }
+            
+            optr += ovlsize + tsize;
+            iptr += tsize;
+          }
+        fwrite(&optr,sizeof(int64),1,output);
+      }
+    
+      if (sdeg > smax)
+        smax = sdeg;
+      if (odeg > omax)
+        omax = odeg;
+    
+      rewind(output);
+    
+      fwrite(&omax,sizeof(int64),1,output);
+      fwrite(&ttot,sizeof(int64),1,output);
+      fwrite(&smax,sizeof(int64),1,output);
+      fwrite(&tmax,sizeof(int64),1,output);
+
+      if (VERBOSE)
+        { Print_Number(ttot,0,stdout);
+          printf(" trace points\n");
+          fflush(stdout);
+        }
+    
+      fclose(input);
+      fclose(output);
+    }
+
+  free(iblock-ptrsize);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAmerge.c b/DALIGNER/LAmerge.c
new file mode 100644
index 0000000..6c1f3dc
--- /dev/null
+++ b/DALIGNER/LAmerge.c
@@ -0,0 +1,397 @@
+/*******************************************************************************************
+ *
+ *  Given a list of sorted .las files, merge them into a single sorted .las file.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage = "[-va] <merge:las> <parts:las> ...";
+
+#define MEMORY 4000   // in Mb
+
+#undef   DEBUG
+
+  //  Heap sort of records according to (aread,bread,COMP(flags),abpos) order
+
+#define COMPARE(lp,rp)				\
+  if (lp->aread > rp->aread)			\
+    bigger = 1;					\
+  else if (lp->aread < rp->aread)		\
+    bigger = 0;					\
+  else if (lp->bread > rp->bread)		\
+    bigger = 1;					\
+  else if (lp->bread < rp->bread)		\
+    bigger = 0;					\
+  else if (COMP(lp->flags) > COMP(rp->flags))	\
+    bigger = 1;					\
+  else if (COMP(lp->flags) < COMP(rp->flags))	\
+    bigger = 0;					\
+  else if (lp->path.abpos > rp->path.abpos)	\
+    bigger = 1;					\
+  else if (lp->path.abpos < rp->path.abpos)	\
+    bigger = 0;					\
+  else if (lp > rp)				\
+    bigger = 1;					\
+  else						\
+    bigger = 0;
+
+static void reheap(int s, Overlap **heap, int hsize)
+{ int      c, l, r;
+  int      bigger;
+  Overlap *hs, *hr, *hl;
+
+  c  = s;
+  hs = heap[s];
+  while ((l = 2*c) <= hsize)
+    { r  = l+1;
+      hl = heap[l];
+      if (r > hsize)
+        bigger = 1;
+      else
+        { hr = heap[r];
+          COMPARE(hr,hl)
+        }
+      if (bigger)
+        { COMPARE(hs,hl)
+          if (bigger)
+            { heap[c] = hl;
+              c = l;
+            }
+          else
+            break;
+        }
+      else
+        { COMPARE(hs,hr)
+          if (bigger)
+            { heap[c] = hr;
+              c = r;
+            }
+          else
+            break;
+        }
+    }
+  if (c != s)
+    heap[c] = hs;
+}
+
+  //  Heap sort of records according to (aread,abpos) order
+
+#define MAPARE(lp,rp)				\
+  if (lp->aread > rp->aread)			\
+    bigger = 1;					\
+  else if (lp->aread < rp->aread)		\
+    bigger = 0;					\
+  else if (lp->path.abpos > rp->path.abpos)	\
+    bigger = 1;					\
+  else if (lp->path.abpos < rp->path.abpos)	\
+    bigger = 0;					\
+  else if (lp > rp)				\
+    bigger = 1;					\
+  else						\
+    bigger = 0;
+
+static void maheap(int s, Overlap **heap, int hsize)
+{ int      c, l, r;
+  int      bigger;
+  Overlap *hs, *hr, *hl;
+
+  c  = s;
+  hs = heap[s];
+  while ((l = 2*c) <= hsize)
+    { r  = l+1;
+      hl = heap[l];
+      if (r > hsize)
+        bigger = 1;
+      else
+        { hr = heap[r];
+          MAPARE(hr,hl)
+        }
+      if (bigger)
+        { MAPARE(hs,hl)
+          if (bigger)
+            { heap[c] = hl;
+              c = l;
+            }
+          else
+            break;
+        }
+      else
+        { MAPARE(hs,hr)
+          if (bigger)
+            { heap[c] = hr;
+              c = r;
+            }
+          else
+            break;
+        }
+    }
+  if (c != s)
+    heap[c] = hs;
+}
+
+#ifdef DEBUG
+
+static void showheap(Overlap **heap, int hsize)
+{ int i;
+  printf("\n");
+  for (i = 1; i <= hsize; i++)
+    printf(" %3d: %5d, %5d\n",i,heap[i]->aread,heap[i]->bread);
+}
+
+#endif
+
+  //  Input block data structure and block fetcher
+
+typedef struct
+  { FILE   *stream;
+    char   *block;
+    char   *ptr;
+    char   *top;
+    int64   count;
+  } IO_block;
+
+static void ovl_reload(IO_block *in, int64 bsize)
+{ int64 remains;
+
+  remains = in->top - in->ptr;
+  if (remains > 0)
+    memcpy(in->block, in->ptr, remains);
+  in->ptr  = in->block;
+  in->top  = in->block + remains;
+  in->top += fread(in->top,1,bsize-remains,in->stream);
+}
+
+  //  The program
+
+int main(int argc, char *argv[])
+{ IO_block *in;
+  int64     bsize, osize, psize;
+  char     *block, *oblock;
+  int       i, fway;
+  Overlap **heap;
+  int       hsize;
+  Overlap  *ovls;
+  int64     totl;
+  int       tspace, tbytes;
+  FILE     *output;
+  char     *optr, *otop;
+
+  int       VERBOSE;
+  int       MAP_SORT;
+
+  //  Process command line
+
+  { int j, k;
+    int flags[128];
+
+    ARG_INIT("LAmerge")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("va") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE  = flags['v'];
+    MAP_SORT = flags['a'];
+
+    if (argc < 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+
+    fway = argc-2;
+    if (fway > 252)
+      { fprintf(stderr,"Exceeded maximum # of inputs and outputs (252) of merge\n");
+        exit (1);
+      }
+  }
+
+  //  Open all the input files and initialize their buffers
+
+  psize  = sizeof(void *);
+  osize  = sizeof(Overlap) - psize;
+  bsize  = (MEMORY*1000000ll)/(fway + 1);
+  block  = (char *) Malloc(bsize*(fway+1)+psize,"Allocating LAmerge blocks");
+  in     = (IO_block *) Malloc(sizeof(IO_block)*fway,"Allocating LAmerge IO-reacords");
+  if (block == NULL || in == NULL)
+    exit (1);
+  block += psize;
+
+  totl   = 0;
+  tbytes = 0;
+  tspace = 0;
+  for (i = 0; i < fway; i++)
+    { int64  novl;
+      int    mspace;
+      FILE  *input;
+      char  *pwd, *root;
+      char  *iblock;
+
+      pwd   = PathTo(argv[i+2]);
+      root  = Root(argv[i+2],".las");
+      input = Fopen(Catenate(pwd,"/",root,".las"),"r");
+      if (input == NULL)
+        exit (1);
+
+      if (fread(&novl,sizeof(int64),1,input) != 1)
+        SYSTEM_ERROR
+      totl += novl;
+      if (VERBOSE) fprintf(stdout, "In file %s, there are %lld records\n", Catenate(pwd,"/",root,".las"), novl);
+      free(pwd);
+      free(root);
+      if (fread(&mspace,sizeof(int),1,input) != 1)
+        SYSTEM_ERROR
+      if (i == 0)
+        { tspace = mspace;
+          if (tspace <= TRACE_XOVR)
+            tbytes = sizeof(uint8);
+          else
+            tbytes = sizeof(uint16);
+        }
+      else if (tspace != mspace)
+        { fprintf(stderr,"%s: PT-point spacing conflict (%d vs %d)\n",Prog_Name,tspace,mspace);
+          exit (1);
+        }
+
+      in[i].stream = input;
+      in[i].block  = iblock = block+i*bsize;
+      in[i].ptr    = iblock;
+      in[i].top    = iblock + fread(in[i].block,1,bsize,input);
+      in[i].count  = 0;
+    }
+
+  //  Open the output file buffer and write (novl,tspace) header
+
+  { char *pwd, *root;
+
+    pwd    = PathTo(argv[1]);
+    root   = Root(argv[1],".las");
+    output = Fopen(Catenate(pwd,"/",root,".las"),"w");
+    if (output == NULL)
+      exit (1);
+    free(pwd);
+    free(root);
+
+    fwrite(&totl,sizeof(int64),1,output);
+    fwrite(&tspace,sizeof(int),1,output);
+
+    oblock = block+fway*bsize;
+    optr   = oblock;
+    otop   = oblock + bsize;
+  }
+
+  if (VERBOSE)
+    { printf("Merging %d files totalling ",fway);
+      Print_Number(totl,0,stdout);
+      printf(" records\n");
+    }
+
+  //  Initialize the heap
+
+  heap = (Overlap **) Malloc(sizeof(Overlap *)*(fway+1),"Allocating heap");
+  ovls = (Overlap *) Malloc(sizeof(Overlap)*fway,"Allocating heap");
+  if (heap == NULL || ovls == NULL)
+    exit (1);
+
+  hsize = 0;
+  for (i = 0; i < fway; i++)
+    { if (in[i].ptr < in[i].top)
+        { ovls[i]     = *((Overlap *) (in[i].ptr - psize));
+          in[i].ptr  += osize;
+          hsize      += 1;
+          heap[hsize] = ovls + i;
+        }
+    }
+
+  if (hsize > 3)
+    { if (MAP_SORT)
+        for (i = hsize/2; i > 1; i--)
+          maheap(i,heap,hsize);
+      else
+        for (i = hsize/2; i > 1; i--)
+          reheap(i,heap,hsize);
+    }
+
+  //  While the heap is not empty do
+
+  while (hsize > 0)
+    { Overlap  *ov;
+      IO_block *src;
+      int64     tsize, span;
+
+      if (MAP_SORT)
+        maheap(1,heap,hsize);
+      else
+        reheap(1,heap,hsize);
+
+      ov  = heap[1];
+      src = in + (ov - ovls);
+
+      do
+        { src->count += 1;
+
+          tsize = ov->path.tlen*tbytes;
+          span  = osize + tsize;
+          if (src->ptr + span > src->top)
+            ovl_reload(src,bsize);
+          if (optr + span > otop)
+            { fwrite(oblock,1,optr-oblock,output);
+              optr = oblock;
+            }
+
+          memcpy(optr,((char *) ov) + psize,osize);
+          optr += osize;
+          memcpy(optr,src->ptr,tsize);
+          optr += tsize;
+
+          src->ptr += tsize;
+          if (src->ptr >= src->top)
+            { heap[1] = heap[hsize];
+              hsize  -= 1;
+              break;
+            }
+          *ov       = *((Overlap *) (src->ptr - psize));
+          src->ptr += osize;
+        }
+      while (CHAIN_NEXT(ov->flags));
+    }
+
+  //  Flush output buffer and wind up
+
+  if (optr > oblock)
+    fwrite(oblock,1,optr-oblock,output);
+  fclose(output);
+
+  for (i = 0; i < fway; i++)
+    fclose(in[i].stream);
+
+  for (i = 0; i < fway; i++)
+    totl -= in[i].count;
+  if (totl != 0)
+    { fprintf(stderr,"%s: Did not write all records to %s (%lld)\n",argv[0],argv[1],totl);
+      exit (1);
+    }
+
+  free(ovls);
+  free(heap);
+  free(in);
+  free(block-psize);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAshow.c b/DALIGNER/LAshow.c
new file mode 100644
index 0000000..4d6cf45
--- /dev/null
+++ b/DALIGNER/LAshow.c
@@ -0,0 +1,618 @@
+/*******************************************************************************************
+ *
+ *  Utility for displaying the overlaps in a .las file in a variety of ways including
+ *    a minimal listing of intervals, a cartoon, and a full out alignment.
+ *
+ *  Author:    Gene Myers
+ *  Creation:  July 2013
+ *  Last Mod:  Jan 2015
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage[] =
+    { "[-caroUF] [-i<int(4)>] [-w<int(100)>] [-b<int(10)>] ",
+      "    <src1:db|dam> [ <src2:db|dam> ] <align:las> [ <reads:FILE> | <reads:range> ... ]"
+    };
+
+#define LAST_READ_SYMBOL  '$'
+
+static int ORDER(const void *l, const void *r)
+{ int x = *((int *) l);
+  int y = *((int *) r);
+  return (x-y);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB   _db1, *db1 = &_db1; 
+  HITS_DB   _db2, *db2 = &_db2; 
+  Overlap   _ovl, *ovl = &_ovl;
+  Alignment _aln, *aln = &_aln;
+
+  FILE   *input;
+  int     sameDB;
+  int64   novl;
+  int     tspace, tbytes, small;
+  int     reps, *pts;
+  int     input_pts;
+
+  int     ALIGN, CARTOON, REFERENCE, OVERLAP;
+  int     FLIP, MAP;
+  int     INDENT, WIDTH, BORDER, UPPERCASE;
+  int     ISTWO;
+
+  //  Process options
+
+  { int    i, j, k;
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("LAshow")
+
+    INDENT    = 4;
+    WIDTH     = 100;
+    BORDER    = 10;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("caroUFM")
+            break;
+          case 'i':
+            ARG_NON_NEGATIVE(INDENT,"Indent")
+            break;
+          case 'w':
+            ARG_POSITIVE(WIDTH,"Alignment width")
+            break;
+          case 'b':
+            ARG_NON_NEGATIVE(BORDER,"Alignment border")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    CARTOON   = flags['c'];
+    ALIGN     = flags['a'];
+    REFERENCE = flags['r'];
+    OVERLAP   = flags['o'];
+    UPPERCASE = flags['U'];
+    FLIP      = flags['F'];
+    MAP       = flags['M'];
+
+    if (argc <= 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB or DB pair
+
+  { int   status;
+    char *pwd, *root;
+    FILE *input;
+    struct stat stat1, stat2;
+
+    ISTWO  = 0;
+    status = Open_DB(argv[1],db1);
+    if (status < 0)
+      exit (1);
+    if (db1->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    sameDB = 1;
+    if (argc > 3)
+      { pwd   = PathTo(argv[3]);
+        root  = Root(argv[3],".las");
+        if ((input = fopen(Catenate(pwd,"/",root,".las"),"r")) != NULL)
+          { ISTWO = 1;
+            fclose(input);
+            status = Open_DB(argv[2],db2);
+            if (status < 0)
+              exit (1);
+            if (db2->part > 0)
+              { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[2]);
+                exit (1);
+              }
+           stat(Catenate(db1->path,"","",".idx"),&stat1);
+           stat(Catenate(db2->path,"","",".idx"),&stat2);
+           if (stat1.st_ino != stat2.st_ino)
+             sameDB = 0;
+            Trim_DB(db2);
+          }
+        else
+          db2 = db1;
+        free(root);
+        free(pwd);
+      }
+    else
+      db2 = db1;
+    Trim_DB(db1);
+  }
+
+  //  Process read index arguments into a sorted list of read ranges
+
+  input_pts = 0;
+  if (argc == ISTWO+4)
+    { if (argv[ISTWO+3][0] != LAST_READ_SYMBOL || argv[ISTWO+3][1] != '\0')
+        { char *eptr, *fptr;
+          int   b, e;
+
+          b = strtol(argv[ISTWO+3],&eptr,10);
+          if (eptr > argv[ISTWO+3] && b > 0)
+            { if (*eptr == '-')
+                { if (eptr[1] != LAST_READ_SYMBOL || eptr[2] != '\0')
+                    { e = strtol(eptr+1,&fptr,10);
+                      input_pts = (fptr <= eptr+1 || *fptr != '\0' || e <= 0);
+                    }
+                }
+              else
+                input_pts = (*eptr != '\0');
+            }
+          else
+            input_pts = 1;
+        }
+    }
+
+  if (input_pts)
+    { int v, x;
+      FILE *input;
+
+      input = Fopen(argv[ISTWO+3],"r");
+      if (input == NULL)
+        exit (1);
+
+      reps = 0;
+      while ((v = fscanf(input," %d",&x)) != EOF)
+        if (v == 0)
+          { fprintf(stderr,"%s: %d'th item of input file %s is not an integer\n",
+                           Prog_Name,reps+1,argv[2]);
+            exit (1);
+          }
+        else
+          reps += 1;
+
+      reps *= 2;
+      pts   = (int *) Malloc(sizeof(int)*reps,"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      rewind(input);
+      for (v = 0; v < reps; v += 2)
+        { fscanf(input," %d",&x);
+          pts[v] = pts[v+1] = x;
+        }
+
+      fclose(input);
+    }
+
+  else
+    { pts  = (int *) Malloc(sizeof(int)*2*argc,"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      reps = 0;
+      if (argc > 3+ISTWO)
+        { int   c, b, e;
+          char *eptr, *fptr;
+
+          for (c = 3+ISTWO; c < argc; c++)
+            { if (argv[c][0] == LAST_READ_SYMBOL)
+                { b = db1->nreads;
+                  eptr = argv[c]+1;
+                }
+              else
+                b = strtol(argv[c],&eptr,10);
+              if (eptr > argv[c])
+                { if (b <= 0)
+                    { fprintf(stderr,"%s: %d is not a valid index\n",Prog_Name,b);
+                      exit (1);
+                    }
+                  if (*eptr == '\0')
+                    { pts[reps++] = b;
+                      pts[reps++] = b;
+                      continue;
+                    }
+                  else if (*eptr == '-')
+                    { if (eptr[1] == LAST_READ_SYMBOL)
+                        { e = INT32_MAX;
+                          fptr = eptr+2;
+                        }
+                      else
+                        e = strtol(eptr+1,&fptr,10);
+                      if (fptr > eptr+1 && *fptr == 0 && e > 0)
+                        { pts[reps++] = b;
+                          pts[reps++] = e;
+                          if (b > e)
+                            { fprintf(stderr,"%s: Empty range '%s'\n",Prog_Name,argv[c]);
+                              exit (1);
+                            }
+                          continue;
+                        }
+                    }
+                }
+              fprintf(stderr,"%s: argument '%s' is not an integer range\n",Prog_Name,argv[c]);
+              exit (1);
+            }
+
+          qsort(pts,reps/2,sizeof(int64),ORDER);
+
+          b = 0;
+          for (c = 0; c < reps; c += 2)
+            if (b > 0 && pts[b-1] >= pts[c]-1) 
+              { if (pts[c+1] > pts[b-1])
+                  pts[b-1] = pts[c+1];
+              }
+            else
+              { pts[b++] = pts[c];
+                pts[b++] = pts[c+1];
+              }
+          pts[b++] = INT32_MAX;
+          reps = b;
+        }
+      else
+        { pts[reps++] = 1;
+          pts[reps++] = INT32_MAX;
+        }
+    }
+
+  //  Initiate file reading and read (novl, tspace) header
+  
+  { char  *over, *pwd, *root;
+
+    pwd   = PathTo(argv[2+ISTWO]);
+    root  = Root(argv[2+ISTWO],".las");
+    over  = Catenate(pwd,"/",root,".las");
+    input = Fopen(over,"r");
+    if (input == NULL)
+      exit (1);
+
+    if (fread(&novl,sizeof(int64),1,input) != 1)
+      SYSTEM_ERROR
+    if (fread(&tspace,sizeof(int),1,input) != 1)
+      SYSTEM_ERROR
+    if (tspace <= 0)
+      { fprintf(stderr,"%s: Garbage .las file, trace spacing <= 0 !\n",Prog_Name);
+        exit (1);
+      }
+
+    if (tspace <= TRACE_XOVR)
+      { small  = 1;
+        tbytes = sizeof(uint8);
+      }
+    else
+      { small  = 0;
+        tbytes = sizeof(uint16);
+      }
+
+    printf("\n%s: ",root);
+    Print_Number(novl,0,stdout);
+    printf(" records\n");
+
+    free(pwd);
+    free(root);
+  }
+
+  //  Read the file and display selected records
+  
+  { int        j;
+    uint16    *trace;
+    Work_Data *work;
+    int        tmax;
+    int        in, npt, idx, ar;
+    int64      tps;
+
+    char      *abuffer, *bbuffer;
+    int        ar_wide, br_wide;
+    int        ai_wide, bi_wide;
+    int        mn_wide, mx_wide;
+    int        tp_wide;
+    int        blast, match, seen, lhalf, rhalf;
+
+    aln->path = &(ovl->path);
+    if (ALIGN || REFERENCE)
+      { work = New_Work_Data();
+        abuffer = New_Read_Buffer(db1);
+        bbuffer = New_Read_Buffer(db2);
+      }
+    else
+      { abuffer = NULL;
+        bbuffer = NULL;
+        work = NULL;
+      }
+
+    tmax  = 1000;
+    trace = (uint16 *) Malloc(sizeof(uint16)*tmax,"Allocating trace vector");
+    if (trace == NULL)
+      exit (1);
+
+    in  = 0;
+    npt = pts[0];
+    idx = 1;
+
+    ar_wide = Number_Digits((int64) db1->nreads);
+    br_wide = Number_Digits((int64) db2->nreads);
+    ai_wide = Number_Digits((int64) db1->maxlen);
+    bi_wide = Number_Digits((int64) db2->maxlen);
+    if (db1->maxlen < db2->maxlen)
+      { mn_wide = ai_wide;
+        mx_wide = bi_wide;
+        tp_wide = Number_Digits((int64) db1->maxlen/tspace+2);
+      }
+    else
+      { mn_wide = bi_wide;
+        mx_wide = ai_wide;
+        tp_wide = Number_Digits((int64) db2->maxlen/tspace+2);
+      }
+    ar_wide += (ar_wide-1)/3;
+    br_wide += (br_wide-1)/3;
+    ai_wide += (ai_wide-1)/3;
+    bi_wide += (bi_wide-1)/3;
+    mn_wide += (mn_wide-1)/3;
+    tp_wide += (tp_wide-1)/3;
+
+    if (FLIP)
+      { int x;
+        x = ar_wide; ar_wide = br_wide; br_wide = x;
+        x = ai_wide; ai_wide = bi_wide; bi_wide = x;
+      }
+
+    //  For each record do
+
+    blast = -1;
+    match = 0;
+    seen  = 0;
+    lhalf = rhalf = 0;
+    for (j = 0; j < novl; j++)
+
+       //  Read it in
+
+      { Read_Overlap(input,ovl);
+        if (ovl->path.tlen > tmax)
+          { tmax = ((int) 1.2*ovl->path.tlen) + 100;
+            trace = (uint16 *) Realloc(trace,sizeof(uint16)*tmax,"Allocating trace vector");
+            if (trace == NULL)
+              exit (1);
+          }
+        ovl->path.trace = (void *) trace;
+        Read_Trace(input,ovl,tbytes);
+
+        //  Determine if it should be displayed
+
+        ar = ovl->aread+1;
+        if (in)
+          { while (ar > npt)
+              { npt = pts[idx++];
+                if (ar < npt)
+                  { in = 0;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        else
+          { while (ar >= npt)
+              { npt = pts[idx++];
+                if (ar <= npt)
+                  { in = 1;
+                    break;
+                  }
+                npt = pts[idx++];
+              }
+          }
+        if (!in)
+          continue;
+
+        //  If -o check display only overlaps
+
+        aln->alen  = db1->reads[ovl->aread].rlen;
+        aln->blen  = db2->reads[ovl->bread].rlen;
+        aln->flags = ovl->flags;
+        tps        = ovl->path.tlen/2;
+
+        if (OVERLAP)
+          { if (ovl->path.abpos != 0 && ovl->path.bbpos != 0)
+              continue;
+            if (ovl->path.aepos != aln->alen && ovl->path.bepos != aln->blen)
+              continue;
+          }
+
+        //  If -M option then check the completeness of the implied mapping
+
+        if (MAP)
+          { while (ovl->bread != blast)
+              { if (!match && seen && !(lhalf && rhalf))
+                  { printf("Missing ");
+                    Print_Number((int64) blast+1,br_wide+1,stdout);
+                    printf(" %d ->%lld\n",db2->reads[blast].rlen,db2->reads[blast].coff);
+                  }
+                match = 0;
+                seen  = 0; 
+                lhalf = rhalf = 0;
+                blast += 1;
+              }
+            seen = 1;
+            if (ovl->path.abpos == 0)
+              rhalf = 1;
+            if (ovl->path.aepos == aln->alen)
+              lhalf = 1;
+            if (ovl->path.bbpos != 0 || ovl->path.bepos != aln->blen)
+              continue;
+            match = 1;
+          }
+
+        //  Display it
+            
+        if (ALIGN || CARTOON || REFERENCE)
+          printf("\n");
+
+        if (BEST_CHAIN(ovl->flags))
+          printf("> ");
+        else if (CHAIN_START(ovl->flags))
+          printf("+ ");
+        else if (CHAIN_NEXT(ovl->flags))
+          printf(" -");
+
+        if (FLIP)
+          { Flip_Alignment(aln,0);
+            Print_Number((int64) ovl->bread+1,ar_wide+1,stdout);
+            printf("  ");
+            Print_Number((int64) ovl->aread+1,br_wide+1,stdout);
+          }
+        else
+          { Print_Number((int64) ovl->aread+1,ar_wide+1,stdout);
+            printf("  ");
+            Print_Number((int64) ovl->bread+1,br_wide+1,stdout);
+          }
+        if (COMP(ovl->flags))
+          printf(" c");
+        else
+          printf(" n");
+        if (ovl->path.abpos == 0)
+          printf("   <");
+        else
+          printf("   [");
+        Print_Number((int64) ovl->path.abpos,ai_wide,stdout);
+        printf("..");
+        Print_Number((int64) ovl->path.aepos,ai_wide,stdout);
+        if (ovl->path.aepos == aln->alen)
+          printf("> x ");
+        else
+          printf("] x ");
+        if (ovl->path.bbpos == 0)
+          printf("<");
+        else
+          printf("[");
+        if (COMP(ovl->flags))
+          { Print_Number((int64) (aln->blen - ovl->path.bbpos),bi_wide,stdout);
+            printf("..");
+            Print_Number((int64) (aln->blen - ovl->path.bepos),bi_wide,stdout);
+          }
+        else
+          { Print_Number((int64) ovl->path.bbpos,bi_wide,stdout);
+            printf("..");
+            Print_Number((int64) ovl->path.bepos,bi_wide,stdout);
+          }
+        if (ovl->path.bepos == aln->blen)
+          printf(">");
+        else
+          printf("]");
+
+        if (CARTOON)
+          { printf("  (");
+            Print_Number(tps,tp_wide,stdout);
+            printf(" trace pts)\n\n");
+          }
+        else
+          { printf("  ~  %4.1f%%   (",(200.*ovl->path.diffs) /
+                    ((ovl->path.aepos - ovl->path.abpos) + (ovl->path.bepos - ovl->path.bbpos)) );
+            Print_Number((int64) ovl->path.diffs,mn_wide,stdout);
+            printf(" diffs, ");
+            Print_Number(tps,tp_wide,stdout);
+            printf(" trace pts)\n");
+          }
+
+        if (ALIGN || CARTOON || REFERENCE)
+          { if (ALIGN || REFERENCE)
+              { char *aseq, *bseq;
+                int   amin,  amax;
+                int   bmin,  bmax;
+                int   self;
+
+                if (FLIP)
+                  Flip_Alignment(aln,0);
+                if (small)
+                  Decompress_TraceTo16(ovl);
+
+                self = sameDB && (ovl->aread == ovl->bread) && !COMP(ovl->flags);
+
+                amin = ovl->path.abpos - BORDER;
+                if (amin < 0) amin = 0;
+                amax = ovl->path.aepos + BORDER;
+                if (amax > aln->alen) amax = aln->alen;
+                if (COMP(aln->flags))
+                  { bmin = (aln->blen-ovl->path.bepos) - BORDER;
+                    if (bmin < 0) bmin = 0;
+                    bmax = (aln->blen-ovl->path.bbpos) + BORDER;
+                    if (bmax > aln->blen) bmax = aln->blen;
+                  }
+                else
+                  { bmin = ovl->path.bbpos - BORDER;
+                    if (bmin < 0) bmin = 0;
+                    bmax = ovl->path.bepos + BORDER;
+                    if (bmax > aln->blen) bmax = aln->blen;
+                    if (self)
+                      { if (bmin < amin)
+                          amin = bmin;
+                        if (bmax > amax)
+                          amax = bmax;
+                      }
+                  }
+
+                aseq = Load_Subread(db1,ovl->aread,amin,amax,abuffer,0);
+                if (!self)
+                  bseq = Load_Subread(db2,ovl->bread,bmin,bmax,bbuffer,0);
+                else
+                  bseq = aseq;
+
+                aln->aseq = aseq - amin;
+                if (COMP(aln->flags))
+                  { Complement_Seq(bseq,bmax-bmin);
+                    aln->bseq = bseq - (aln->blen - bmax);
+                  }
+                else if (self)
+                  aln->bseq = aln->aseq;
+                else
+                  aln->bseq = bseq - bmin;
+
+                Compute_Trace_PTS(aln,work,tspace,GREEDIEST);
+
+                if (FLIP)
+                  { if (COMP(aln->flags))
+                      { Complement_Seq(aseq,amax-amin);
+                        Complement_Seq(bseq,bmax-bmin);
+                        aln->aseq = aseq - (aln->alen - amax);
+                        aln->bseq = bseq - bmin;
+                      }
+                    Flip_Alignment(aln,1);
+                  }
+              }
+            if (CARTOON)
+              Alignment_Cartoon(stdout,aln,INDENT,mx_wide);
+            if (REFERENCE)
+              Print_Reference(stdout,aln,work,INDENT,WIDTH,BORDER,UPPERCASE,mx_wide);
+            if (ALIGN)
+              Print_Alignment(stdout,aln,work,INDENT,WIDTH,BORDER,UPPERCASE,mx_wide);
+          }
+      }
+
+    free(trace);
+    if (ALIGN)
+      { free(bbuffer-1);
+        free(abuffer-1);
+        Free_Work_Data(work);
+      }
+  }
+
+  Close_DB(db1);
+  if (ISTWO)
+    Close_DB(db2);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAsort.c b/DALIGNER/LAsort.c
new file mode 100644
index 0000000..ce0d8d1
--- /dev/null
+++ b/DALIGNER/LAsort.c
@@ -0,0 +1,285 @@
+/*******************************************************************************************
+ *
+ *  Load a file U.las of overlaps into memory, sort them all by A,B index,
+ *    and then output the result to U.S.las
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage = "[-va] <align:las> ...";
+
+#define MEMORY   1000   //  How many megabytes for output buffer
+
+static char *IBLOCK;
+
+static int SORT_OVL(const void *x, const void *y)
+{ int64 l = *((int64 *) x);
+  int64 r = *((int64 *) y);
+
+  Overlap *ol, *or;
+  int      al, ar;
+  int      bl, br;
+  int      cl, cr;
+  int      pl, pr;
+
+  ol = (Overlap *) (IBLOCK+l);
+  or = (Overlap *) (IBLOCK+r);
+
+  al = ol->aread;
+  ar = or->aread;
+  if (al != ar)
+    return (al-ar);
+
+  bl = ol->bread;
+  br = or->bread;
+  if (bl != br)
+    return (bl-br);
+
+  cl = COMP(ol->flags);
+  cr = COMP(ol->flags);
+  if (cl != cr)
+    return (cl-cr);
+
+  pl = ol->path.abpos;
+  pr = or->path.abpos;
+  if (pl != pr)
+    return (pl-pr);
+
+  if (ol < or)
+    return (-1);
+  else if (ol > or)
+    return (1);
+  else
+    return (0);
+}
+
+static int SORT_MAP(const void *x, const void *y)
+{ int64 l = *((int64 *) x);
+  int64 r = *((int64 *) y);
+
+  Overlap *ol, *or;
+  int      al, ar;
+  int      pl, pr;
+
+  ol = (Overlap *) (IBLOCK+l);
+  or = (Overlap *) (IBLOCK+r);
+
+  al = ol->aread;
+  ar = or->aread;
+  if (al != ar)
+    return (al-ar);
+
+  pl = ol->path.abpos;
+  pr = or->path.abpos;
+  if (pl != pr)
+    return (pl-pr);
+
+  if (ol < or)
+    return (-1);
+  else if (ol > or)
+    return (1);
+  else
+    return (0);
+}
+
+int main(int argc, char *argv[])
+{ char     *iblock, *fblock, *iend;
+  int64     isize,   osize;
+  int64     ovlsize, ptrsize;
+  int       tspace, tbytes;
+  int       i;
+
+  int       VERBOSE;
+  int       MAP_ORDER;
+ 
+  //  Process options
+
+  { int j, k;
+    int flags[128];
+
+    ARG_INIT("LAsort")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("va") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE   = flags['v'];
+    MAP_ORDER = flags['a'];
+
+    if (argc <= 1)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  For each file do
+
+  ptrsize = sizeof(void *);
+  ovlsize = sizeof(Overlap) - ptrsize;
+  isize   = 0;
+  iblock  = NULL;
+  osize   = MEMORY * 1000000ll;
+  fblock  = Malloc(osize,"Allocating LAsort output block");
+
+  for (i = 1; i < argc; i++)
+    { int64    *perm;
+      FILE     *input, *foutput;
+      int64     novl, sov;
+
+      //  Read in the entire file and output header
+
+      { int64  size;
+        struct stat info;
+        char  *pwd, *root, *name;
+
+        pwd   = PathTo(argv[i]);
+        root  = Root(argv[i],".las");
+        name  = Catenate(pwd,"/",root,".las");
+        input = Fopen(name,"r");
+        if (input == NULL)
+          exit (1);
+
+        stat(name,&info);
+        size = info.st_size;
+
+        if (fread(&novl,sizeof(int64),1,input) != 1)
+          SYSTEM_ERROR
+        if (fread(&tspace,sizeof(int),1,input) != 1)
+          SYSTEM_ERROR
+
+        if (tspace <= TRACE_XOVR)
+          tbytes = sizeof(uint8);
+        else
+          tbytes = sizeof(uint16);
+
+        if (VERBOSE)
+          { printf("  %s: ",root);
+            Print_Number(novl,0,stdout);
+            printf(" records ");
+            Print_Number(size-novl*ovlsize,0,stdout);
+            printf(" trace bytes\n");
+            fflush(stdout);
+          }
+
+        foutput = Fopen(Catenate(pwd,"/",root,".S.las"),"w");
+        if (foutput == NULL)
+          exit (1);
+
+        fwrite(&novl,sizeof(int64),1,foutput);
+        fwrite(&tspace,sizeof(int),1,foutput);
+
+        free(pwd);
+        free(root);
+
+        if (size > isize)
+          { if (iblock == NULL)
+              iblock = Malloc(size+ptrsize,"Allocating LAsort input block");
+            else
+              iblock = Realloc(iblock-ptrsize,size+ptrsize,"Allocating LAsort input block");
+            if (iblock == NULL)
+              exit (1);
+            iblock += ptrsize;
+            isize   = size;
+          }
+        size -= (sizeof(int64) + sizeof(int));
+        if (size > 0)
+          { if (fread(iblock,size,1,input) != 1)
+              SYSTEM_ERROR
+          }
+        fclose(input);
+        iend = iblock + (size - ptrsize);
+      }
+
+      //  Set up unsorted permutation array
+
+      perm = (int64 *) Malloc(sizeof(int64)*novl,"Allocating LAsort permutation vector");
+      if (perm == NULL)
+        exit (1);
+
+      { int64 off;
+        int   j;
+
+        if (CHAIN_START(((Overlap *) (iblock-ptrsize))->flags))
+          { sov = 0;
+            off = -ptrsize;
+            for (j = 0; j < novl; j++)
+              { if (CHAIN_START(((Overlap *) (iblock+off))->flags))
+                  perm[sov++] = off;
+                off += ovlsize + ((Overlap *) (iblock+off))->path.tlen*tbytes;
+              }
+          }
+        else
+          { off = -ptrsize;
+            for (j = 0; j < novl; j++)
+              { perm[j] = off;
+                off += ovlsize + ((Overlap *) (iblock+off))->path.tlen*tbytes;
+              }
+            sov = novl;
+          }
+      }
+
+      //  Sort permutation array of ptrs to records
+
+      IBLOCK = iblock;
+      if (MAP_ORDER)
+        qsort(perm,sov,sizeof(int64),SORT_MAP);
+      else
+        qsort(perm,sov,sizeof(int64),SORT_OVL);
+
+      //  Output the records in sorted order
+
+      { int      j;
+        Overlap *w;
+        int64    tsize, span;
+        char    *fptr, *ftop, *wo;
+
+        fptr = fblock;
+        ftop = fblock + osize;
+        for (j = 0; j < sov; j++)
+          { w = (Overlap *) (wo = iblock+perm[j]);
+            do
+              { tsize = w->path.tlen*tbytes;
+                span  = ovlsize + tsize;
+                if (fptr + span > ftop)
+                  { fwrite(fblock,1,fptr-fblock,foutput);
+                    fptr = fblock;
+                  }
+                memcpy(fptr,((char *) w)+ptrsize,ovlsize);
+                fptr += ovlsize;
+                memcpy(fptr,(char *) (w+1),tsize);
+                fptr += tsize;
+                w = (Overlap *) (wo += span);
+              }
+            while (wo < iend && CHAIN_NEXT(w->flags));
+          }
+        if (fptr > fblock)
+          fwrite(fblock,1,fptr-fblock,foutput);
+      }
+
+      free(perm);
+      fclose(foutput);
+    }
+
+  if (iblock != NULL)
+    free(iblock - ptrsize);
+  free(fblock);
+
+  exit (0);
+}
diff --git a/DALIGNER/LAsplit.c b/DALIGNER/LAsplit.c
new file mode 100644
index 0000000..adf6cf5
--- /dev/null
+++ b/DALIGNER/LAsplit.c
@@ -0,0 +1,242 @@
+/*******************************************************************************************
+ *
+ *  Split an OVL file arriving from the standard input into 'parts' equal sized .las-files
+ *    <align>.1.las, <align>.2.las ... or according to a current partitioning of <path>
+ *
+ *  Author:  Gene Myers
+ *  Date  :  June 2014
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+#include "align.h"
+
+static char *Usage = "-v <align:las> (<parts:int> | <path:db|dam>) < <source>.las";
+
+#define MEMORY   1000   //  How many megabytes for output buffer
+
+int main(int argc, char *argv[])
+{ char     *iblock, *oblock;
+  FILE     *output, *dbvis;
+  int64     novl, bsize, ovlsize, ptrsize;
+  int       parts, tspace, tbytes;
+  int       olast, blast;
+  char     *pwd, *root, *root2;
+
+  int       VERBOSE;
+
+  //  Process options
+
+  { int i, j, k;
+    int flags[128];
+
+    ARG_INIT("LAsplit")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("v") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (argc != 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  { char *eptr;
+    int   nfiles, cutoff, all;
+    int64 size;
+    char  buffer[2*MAX_NAME+100];
+
+    parts = strtol(argv[2],&eptr,10);
+    if (*eptr != '\0')
+      { pwd   = PathTo(argv[2]);
+        if (strcmp(argv[2]+(strlen(argv[2])-4),".dam") == 0)
+          root  = Root(argv[2],".dam");
+        else
+          root  = Root(argv[2],".db");
+        dbvis = fopen(Catenate(pwd,"/",root,".dam"),"r");
+        if (dbvis == NULL)
+          { dbvis = fopen(Catenate(pwd,"/",root,".db"),"r");
+            if (dbvis == NULL)
+              { fprintf(stderr,"%s: Second argument '%s' is not an integer or a DB\n",
+                               Prog_Name,argv[2]);
+                exit (1);
+              }
+          }
+        free(pwd);
+        free(root);
+
+        if (fscanf(dbvis,DB_NFILE,&nfiles) != 1)
+          SYSTEM_ERROR
+        while (nfiles-- > 0)
+          if (fgets(buffer,2*MAX_NAME+100,dbvis) == NULL)
+            SYSTEM_ERROR
+        parts = 0;
+        if (fscanf(dbvis,DB_NBLOCK,&parts) != 1)
+          { fprintf(stderr,"%s: DB %s has not been partitioned\n",Prog_Name,argv[2]);
+            exit (1);
+          }
+        if (fscanf(dbvis,DB_PARAMS,&size,&cutoff,&all) != 3)
+          SYSTEM_ERROR
+        if (fscanf(dbvis,DB_BDATA,&olast,&blast) != 2)
+          SYSTEM_ERROR
+      }
+    else
+      { dbvis = NULL;
+        if (parts <= 0)
+          { fprintf(stderr,"%s: Number of parts is not positive\n",Prog_Name);
+            exit (1);
+          }
+      }
+  }
+
+  ptrsize = sizeof(void *);
+  ovlsize = sizeof(Overlap) - ptrsize;
+  bsize   = MEMORY * 1000000ll;
+  oblock  = (char *) Malloc(bsize,"Allocating output block");
+  iblock  = (char *) Malloc(bsize + ptrsize,"Allocating input block");
+  if (oblock == NULL || iblock == NULL)
+    exit (1);
+  iblock += ptrsize;
+
+  pwd   = PathTo(argv[1]);
+  root  = Root(argv[1],".las");
+
+  root2 = index(root,'#');
+  if (root2 == NULL)
+    { fprintf(stderr,"%s: No #-sign in source name '%s'\n",Prog_Name,root);
+      exit (1);
+    }
+  if (index(root2+1,'#') != NULL)
+    { fprintf(stderr,"%s: Two or more occurences of #-sign in source name '%s'\n",Prog_Name,root);
+      exit (1);
+    }
+  *root2++ = '\0';
+
+  if (fread(&novl,sizeof(int64),1,stdin) != 1)
+    SYSTEM_ERROR
+  if (fread(&tspace,sizeof(int),1,stdin) != 1)
+    SYSTEM_ERROR
+  if (tspace <= TRACE_XOVR)
+    tbytes = sizeof(uint8);
+  else
+    tbytes = sizeof(uint16);
+
+  if (VERBOSE)
+    fprintf(stderr,"  Distributing %lld la\'s\n",novl);
+
+  { int      i, j;
+    Overlap *w;
+    int      low, hgh, last;
+    int64    tsize, povl;
+    char    *iptr, *itop;
+    char    *optr, *otop;
+
+    iptr = iblock;
+    itop = iblock + fread(iblock,1,bsize,stdin);
+
+    hgh = 0;
+    for (i = 0; i < parts; i++)
+      { output = Fopen(Catenate(pwd,"/",Numbered_Suffix(root,i+1,root2),".las"),"w");
+        if (output == NULL)
+          exit (1);
+
+        low = hgh;
+        if (dbvis != NULL)
+          { if (fscanf(dbvis,DB_BDATA,&olast,&blast) != 2)
+              SYSTEM_ERROR
+            last = blast-1;
+            hgh  = 0;
+          }
+        else
+          { last = 0;
+            hgh  = (novl*(i+1))/parts;
+          }
+
+        povl = 0;
+        fwrite(&povl,sizeof(int64),1,output);
+        fwrite(&tspace,sizeof(int),1,output);
+
+        optr = oblock;
+        otop = oblock + bsize;
+
+        for (j = low; j < novl; j++)
+          { if (iptr + ovlsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,stdin);
+              }
+
+            w = (Overlap *) (iptr-ptrsize);
+            if (dbvis == NULL)
+              { if (j >= hgh && w->aread > last)
+                  break;
+                last = w->aread;
+              }
+            else
+              { if (w->aread > last)
+                  break;
+              }
+
+            tsize = w->path.tlen*tbytes;
+            if (optr + ovlsize + tsize > otop)
+              { fwrite(oblock,1,optr-oblock,output);
+                optr = oblock;
+              }
+            
+            memcpy(optr,iptr,ovlsize);
+            optr += ovlsize;
+            iptr += ovlsize;
+
+            if (iptr + tsize > itop)
+              { int64 remains = itop-iptr;
+                if (remains > 0)
+                  memcpy(iblock,iptr,remains);
+                iptr  = iblock;
+                itop  = iblock + remains;
+                itop += fread(itop,1,bsize-remains,stdin);
+              }
+	    memcpy(optr,iptr,tsize);
+            optr += tsize;
+            iptr += tsize;
+          }
+        hgh = j;
+
+        if (optr > oblock)
+          fwrite(oblock,1,optr-oblock,output);
+
+        rewind(output);
+        povl = hgh-low;
+        fwrite(&povl,sizeof(int64),1,output);
+
+        if (VERBOSE)
+          fprintf(stderr,"  Split off %s: %lld la\'s\n",Numbered_Suffix(root,i+1,root2),povl);
+
+        fclose(output);
+      }
+  }
+
+  free(pwd);
+  free(root);
+  free(iblock-ptrsize);
+  free(oblock);
+
+  exit (0);
+}
diff --git a/DALIGNER/LICENSE b/DALIGNER/LICENSE
new file mode 100644
index 0000000..9aa819c
--- /dev/null
+++ b/DALIGNER/LICENSE
@@ -0,0 +1,34 @@
+
+  Copyright (c) 2014, Dr. Eugene W. Myers (EWM). All rights reserved.                
+                                                                                     
+  Redistribution and use in source and binary forms, with or without modification,   
+  are permitted provided that the following conditions are met:                      
+                                                                                     
+   · Redistributions of source code must retain the above copyright notice, this     
+     list of conditions and the following disclaimer.                                
+                                                                                     
+   · Redistributions in binary form must reproduce the above copyright notice, this  
+     list of conditions and the following disclaimer in the documentation and/or     
+     other materials provided with the distribution.                                 
+                                                                                     
+   · The name of EWM may not be used to endorse or promote products derived from     
+     this software without specific prior written permission.                        
+                                                                                     
+  THIS SOFTWARE IS PROVIDED BY EWM ”AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,    
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND       
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EWM BE LIABLE   
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS  
+  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY      
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     
+  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN  
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      
+                                                                                     
+  For any issues regarding this software and its use, contact EWM at:                
+                                                                                     
+    Eugene W. Myers Jr.                                                              
+    Bautzner Str. 122e                                                               
+    01099 Dresden                                                                    
+    GERMANY                                                                          
+    Email: gene.myers at gmail.com                                                      
+
diff --git a/DALIGNER/Makefile b/DALIGNER/Makefile
new file mode 100644
index 0000000..8ff2739
--- /dev/null
+++ b/DALIGNER/Makefile
@@ -0,0 +1,53 @@
+DEST_DIR = ~/bin
+
+CFLAGS = -O3 -Wall -Wextra -Wno-unused-result -fno-strict-aliasing
+
+ALL = daligner HPC.daligner LAsort LAmerge LAsplit LAcat LAshow LAdump LAcheck LAindex
+
+all: $(ALL)
+
+daligner: daligner.c filter.c filter.h align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o daligner daligner.c filter.c align.c DB.c QV.c -lpthread -lm
+
+HPC.daligner: HPC.daligner.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o HPC.daligner HPC.daligner.c DB.c QV.c -lm
+
+LAsort: LAsort.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAsort LAsort.c DB.c QV.c -lm
+
+LAmerge: LAmerge.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAmerge LAmerge.c DB.c QV.c -lm
+
+LAshow: LAshow.c align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAshow LAshow.c align.c DB.c QV.c -lm
+
+LAdump: LAdump.c align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAdump LAdump.c align.c DB.c QV.c -lm
+
+LAcat: LAcat.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAcat LAcat.c DB.c QV.c -lm
+
+LAsplit: LAsplit.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAsplit LAsplit.c DB.c QV.c -lm
+
+LAcheck: LAcheck.c align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAcheck LAcheck.c align.c DB.c QV.c -lm
+
+LAupgrade.Dec.31.2014: LAupgrade.Dec.31.2014.c align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAupgrade.Dec.31.2014 LAupgrade.Dec.31.2014.c align.c DB.c QV.c -lm
+
+LAindex: LAindex.c align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o LAindex LAindex.c align.c DB.c QV.c -lm
+
+clean:
+	rm -f $(ALL)
+	rm -fr *.dSYM
+	rm -f LAupgrade.Dec.31.2014
+	rm -f daligner.tar.gz
+
+install:
+	cp $(ALL) $(DEST_DIR)
+
+package:
+	make clean
+	tar -zcf daligner.tar.gz README Makefile *.h *.c
diff --git a/DALIGNER/README b/DALIGNER/README
new file mode 100644
index 0000000..91c6d7d
--- /dev/null
+++ b/DALIGNER/README
@@ -0,0 +1,521 @@
+
+
+
+*** PLEASE GO TO THE DAZZLER BLOG (https://dazzlerblog.wordpress.com) FOR TYPESET ***
+         DOCUMENTATION, EXAMPLES OF USE, AND DESIGN PHILOSOPHY.
+
+
+/************************************************************************************\
+
+UPGRADE & DEVELOPER NOTES ! ! !
+
+  If you have already performed a big comparison and don't want to recompute all your
+local alignments in .las files, but do want to use a more recent version of the
+software that entails a change to the data structures (currently the update on
+December 31, 2014), please note the routine LAupgrade.Dec.31.2014.  This take a .las file,
+say X.las, as an argument, and writes to standard output the .las file in the new
+format.
+
+  The program can be made with "make" but is not by default created when make is
+called without an argument.
+
+  For those interested in the details, on December 30, the "alen" and "blen" fields
+were dropped to save space as they can always be gotten from the underlying DB.
+
+\************************************************************************************/
+
+
+                      The Daligner Overlap Library
+
+                                      Author:  Gene Myers
+                                      First:   July 17, 2013
+                                      Current: April 10, 2016
+
+
+  The commands below permit one to find all significant local alignments between reads
+encoded in Dazzler database.  The assumption is that the reads are from a PACBIO RS II
+long read sequencer.  That is the reads are long and noisy, up to 15% on average.
+
+  Recall that a database has a current partition that divides it into blocks of a size
+that can conveniently be handled by calling the "dalign" overlapper on all the pairs of
+blocks producing a collection of .las local alignment files that can then be sorted and
+merged into an ordered sequence of sorted files containing all alignments between reads
+in the data set.  The alignment records are parsimonious in that they do not record an
+alignment but simply a set of trace points, typically every 100bp or so, that allow the
+efficient reconstruction of alignments on demand.
+
+1. daligner [-vbAI]
+       [-k<int(14)>] [-w<int(6)>] [-h<int(35)>] [-t<int>] [-M<int>]
+       [-e<double(.70)] [-l<int(1000)] [-s<int(100)>] [-H<int>] [-T<int(4)>]
+       [-m<track>]+ <subject:db|dam> <target:db|dam> ...
+
+Compare sequences in the trimmed <subject> block against those in the list of <target>
+blocks searching for local alignments involving at least -l base pairs (default 1000)
+or more, that have an average correlation rate of -e (default 70%).  The local
+alignments found will be output in a sparse encoding where a trace point on the
+alignment is recorded every -s base pairs of the a-read (default 100bp). Reads are
+compared in both orientations and local alignments meeting the criteria are output to
+one of several created files described below.  The -v option turns on a verbose
+reporting mode that gives statistics on each major step of the computation.  The
+program runs with 4 threads by default, but this may be set to any power of 2 with
+the -T option.
+
+The options -k, -h, and -w control the initial filtration search for possible matches
+between reads.  Specifically, our search code looks for a pair of diagonal bands of
+width 2^w (default 2^6 = 64) that contain a collection of exact matching k-mers
+(default 14) between the two reads, such that the total number of bases covered by the
+k-mer hits is h (default 35). k cannot be larger than 32 in the current implementation.
+If the -b option is set, then the daligner assumes the data has a strong compositional
+bias (e.g. >65% AT rich), and at the cost of a bit more time, dynamically adjusts k-mer
+sizes depending on compositional bias, so that the mers used have an effective
+specificity of 4^k.
+
+If there are one or more interval tracks specified with the -m option, then the reads
+of the DB or DB's to which the mask applies are soft masked with the union of the
+intervals of all the interval tracks that apply, that is any k-mers that contain any
+bases in any of the masked intervals are ignored for the purposes of seeding a match.
+An interval track is a track, such as the "dust" track created by DBdust, that encodes
+a set of intervals over either the untrimmed or trimmed DB.
+
+Invariably, some k-mers are significantly over-represented (e.g. homopolymer runs).
+These k-mers create an excessive number of matching k-mer pairs and left unaddressed
+would cause daligner to overflow the available physical memory.  One way to deal with
+this is to explicitly set the -t parameter which suppresses the use of any k-mer that
+occurs more than t times in either the subject or target block.  However, a better way
+to handle the situation is to let the program automatically select a value of t that
+meets a given memory usage limit specified (in Gb) by the -M parameter.  By default
+daligner will use the amount of physical memory as the choice for -M.  If you want to
+use less, say only 8Gb on a 24Gb HPC cluster node because you want to run 3 daligner
+jobs on the node, then specify -M8.  Specifying -M0 basically indicates that you do not
+want daligner to self adjust k-mer suppression to fit within a given amount of memory.
+
+For each subject, target pair of blocks, say X and Y, the program reports alignments
+where the a-read is in X and the b-read is in Y, and vice versa.  However, if the -A
+option is set ("A" for "asymmetric") then just overlaps where the a-read is in X and
+the b-read is in Y are reported, and if X = Y, then it further reports only those
+overlaps where the a-read index is less than the b-read index.  In either case, if the
+-I option is set ("I" for "identity") then when X = Y, overlaps between different
+portions of the same read will also be found and reported.
+
+Each found alignment is recorded as -- a[ab,ae] x bo[bb,be] -- where a and b are the
+indices (in the trimmed DB) of the reads that overlap, o indicates whether the b-read
+is from the same or opposite strand, and [ab,ae] and [bb,be] are the intervals of a
+and bo, respectively, that align.  The program places these alignment records in files
+whose name is of the form X.Y.[C|N]#.las where C indicates that the b-reads are
+complemented and N indicates they are not (both comparisons are performed) and # is
+the thread that detected and wrote out the collection of alignments contained in the
+file.  That is the file X.Y.O#.las contains the alignments produced by thread # for
+which the a-read is from X and the b-read is from Y and in orientation O.  If T is 
+the number of threads, the command "daligner -A X Y" produces 2T thread files
+X.Y.?.las and "daligner X Y" produces 4T files X.Y.?.las and Y.X.?.las (unless X=Y
+in which case only T files, X.X.?.las, are produced).
+
+By default daligner compares all overlaps between reads in the database that are
+greater than the minimum cutoff set when the DB or DBs were split, typically 1 or
+2 Kbp.  However, the HGAP assembly pipeline only wants to correct large reads, say
+8Kbp or over, and so needs only the overlaps where the a-read is one of the large
+reads.  By setting the -H parameter to say N, one alters daligner so that it only
+reports overlaps where the a-read is over N base-pairs long.
+
+While the default parameter settings are good for raw Pacbio data, daligner can be used
+for efficiently finding alignments in corrected reads or other less noisy reads. For
+example, for mapping applications against .dams we run "daligner -k20 -h60 -e.85" and
+on corrected reads, we typically run "daligner -k25 -w5 -h60 -e.95 -s500" and at
+these settings it is very fast.
+
+
+2. LAsort [-va] <align:las> ...
+
+Sort each .las alignment file specified on the command line. For each file it reads in
+all the overlaps in the file and sorts them in lexicographical order of (a,b,o,ab)
+assuming each alignment is recorded as a[ab,ae] x b^o[bb,be]. It then writes them all
+to a file named <align>.S.las (assuming that the input file was <align>.las). With the
+-v option set then the program reports the number of records read and written. If the
+-a option is set then it sorts LAs in lexicographical order of (a,ab) alone, which is
+desired when sorting a mapping of reads to a reference.
+
+If the .las file was produced by damapper the local alignments are organized into
+chains where the LA segments of a chain are consecutive and ordered in the file.
+LAsort can detects that it has been passed such a file and if so treats the chains as
+a unit and sorts them on the basis of the first LA in the chain.
+
+
+3. LAmerge [-va] <merge:las> <parts:las> ...
+
+Merge the .las files <parts> into a singled sorted file <merge>, where it is assumed
+that  the input <parts> files are sorted. Due to operating system limits, the number of
+<parts> files must be <= 252.  With the -v option set the program reports the # of
+records read and written.  The -a option indicates the sort is as describe for LAsort
+above.
+
+If the .las file was produced by damapper the local alignments are organized into
+chains where the LA segments of a chain are consecutive and ordered in the file.  When
+merging such files, LAmerge treats the chains as a unit and orders them on the basis
+of the first LA in the chain.
+
+Used correctly, LAmerge and LAsort together allow one to perform an "external" sort
+that produces a collection of sorted files containing in aggregate all the local
+alignments found by the daligner, such that their concatenation is sorted in order of
+(a,b,o,ab) (or (a,ab) if the -a option is set). In particular, this means that all the
+alignments for a given a-read will be found consecutively in one of the files.  So
+computations that need to look at all the alignments for a given read can operate in
+simple sequential scans of these sorted files.
+
+
+4. LAshow [-caroUF] [-i<int(4)>] [-w<int(100)>] [-b<int(10)>]
+                    <src1:db|dam> [ <src2:db|dam> ]
+                    <align:las> [ <reads:FILE> | <reads:range> ... ]
+
+LAshow produces a printed listing of the local alignments contained in the specified
+.las file, where the a- and b-reads come from src1 or from src1 and scr2, respectively.
+If a file or list of read ranges is given then only the overlaps for which the a-read
+is in the set specified by the file or list are displayed. See DBshow for an explanation
+of how the file and list of read ranges are interpreted.  If the -F option is set then
+the roles of the a- and b- reads are reversed in the display.
+
+If the -c option is given then a cartoon rendering is displayed, and if -a or -r option
+is set then an alignment of the local alignment is displayed.  The -a option puts
+exactly -w columns per segment of the display, whereas the -r option puts exactly -w
+a-read symbols in each segment of the display.  The -r display mode is useful when one
+wants to visually compare two alignments involving the same a-read.  If a combination of
+the -c, -a, and -r flags is set, then the cartoon comes first, then the -a alignment,
+and lastly the -r alignment.  The -i option sets the indent for the cartoon and/or
+alignment displays, if they are requested.  The -b option sets the number of symbols on
+either side of the aligned segments in an alignment display, and -U specifies that
+uppercase should be used for DNA sequence instead of the default lowercase.  If the
+-o option is set then only alignments that are proper overlaps (a sequence end occurs
+at the each end of the alignment) are displayed.  If the -F option is given then the
+roles of the A- and B-reads are flipped.
+
+When examining LAshow output it is important to keep in mind that the coordinates
+describing an interval of a read are referring conceptually to positions between bases
+starting at 0 for the position to the left of the first base.  That is, a coordinate c
+refers to the position between the c-1'st and c'th base, and the interval [b,e] captures
+the e-b bases from the b'th to the e-1'st, inclusive.  We give an example with a cartoon
+and (part of an) alignment for which we will explain several additional
+important points:
+
+      1    1,865 c   [18,479..20,216] x [ 1,707..     0>  ( 19 trace pts)
+
+      18479              4235
+  A ========+----------+======>  dif/(len1+len2) = 478/(1737+1707) = 27.76%
+  B  <======+-----------
+       5576
+
+   18469 agccgcctag[tgcctcgcaaacgc-t-cggggcggcgt-gaaagcgg--
+         ::::::::::[||||||||||||||*|*|||*|||*|||*||||||||**
+    1717 ctcttcttta[tgcctcgcaaacgccttcggcgcg-cgttgaaagcggtt  17.9%
+
+   18513 -ccggtgggtc--agtggcgagttctggcagtgcgctggg-ctgcgaaat
+         *||||||*|||**|||||*||||*|*|*|||**|||||||*||*||||||
+   1669 gccggtgcgtcgcagtgg-gagt-c-gtcag--cgctggggcttcgaaat  24.0%
+
+        . . .
+
+The display of an LA always begins with a line giving the A-read, then the B-read, then
+an indication of orientation (i.e. are A and B from the same strand (n) or the opposite
+strand (c)?) followed by the A-interval and B-interval that are aligned.  In particular,
+note carefully that when the B-read is in the complement orientation (c), then the
+B-interval gives the higher coordinate first, the idea being that one will align from
+the highest base down to the lowest base in the descending direction on B, complement
+the characters as you go.  Further note that in the alignment display the coordinates at
+the start of each line follow this orientation convention and give the coordinate of the
+"tick mark" just left of the first character in each line.  It is useful to know if an
+interval reaches the end of read, and to signal this we use an angle-bracket <> instead
+of a square bracket [], e.g. in the example the B-segment starts at the beginning of the
+read.  Finally, observe that in the cartoon the numbers are not coordinates but rather
+indicate the lengths of the unaligned bits left and right of the two aligned intervals.
+Finally, observe that in the cartoon the numbers are not coordinates but rather indicate
+the lengths of the unaligned bits left and right of the two aligned intervals.
+
+With the introduction of damapper, .las files can now contain chains.  If LAshow detects
+that it has been passed a file with chain information then it displays marks at the left
+that reveal the chain structure, e.g.:
+
+   >     117   37,630 c   [   253.. 7,980] x [   331,430..   324,027]  ~  10.5%
+   +     117   37,628 n   [   253.. 7,983] x [21,493,673..21,501,079]  ~  10.6%
+   +     117       57 c   [   253.. 1,086] x [ 2,008,164.. 2,007,369]  ~   9.8%
+    -    117       57 c   [ 1,300.. 7,982] x [ 2,007,351.. 2,000,945]  ~  10.7%
+   >     117       15 c   [ 7,992.. 8,716] x [   242,529..   241,822]  ~   7.8%
+    -    117       15 c   [ 8,752..14,299] x [   241,824..   236,425]  ~  10.7%
+    -    117       15 c   [14,133..14,832] x [   236,630..   235,953]  ~  12.1%
+   +     117   37,628 n   [ 7,992.. 8,716] x [19,202,357..19,203,064]  ~   7.7%
+    -    117   37,628 n   [ 8,752..14,832] x [19,203,062..19,208,974]  ~  10.9%
+
+A chain begins with either a > or + character, where > indicates this is the highest
+scoring chain and + indicates an alternate near optimal chain (controlled by the
+-n parameter to damapper).  Each additional LA of a chain is marked with a - character.
+
+
+5. LAdump [-cdt] [-o] <src1:db|dam> [ <src2:db|dam> ]
+                      <align:las> [ <reads:FILE> | <reads:range> ... ]
+
+Like LAshow, LAdump allows one to display the local alignments (LAs) of a subset of the
+piles in an .las file and select which information to show about them.  The difference
+is that the information is written in a very simple "1-code" ASCII format that makes it
+easy for one to read and parse the information for further use.  For each LA the pair of
+reads is output on a line.  -c requests that one further output the coordinates of the
+LA segments be output.  The -d option requests that the number of difference in the LA
+be output, and -t requests that the tracepoint information be output.  Finally, -o
+requests that only LAs that are proper overlaps be output. 
+
+The format is very simple.  Each requested piece of information occurs on a line.  The
+first character of every line is a "1-code" character that tells you what information
+to expect on the line.  The rest of the line contains information where each item is
+separated by a single blank space.  The trace point line gives the number of trace
+point intervals in the LA and is immediately followed by that many lines containing
+a pair of integers giving the # of differences and b-displacement in each successive
+trace point interval.
+
+    P #a #b #o #c     - (#a,#b^#o) have an LA between them where #o is 'n' or 'c' and
+                        #c is '>' (start of best chain), '+' (start of alternate chain),
+                        '-' (continuation of chain), or '.' (no chains in file)
+    C #ab #ae #bb #be - #a[#ab,#ae] aligns with #b^#o[#bb,#be]
+    D #               - there are # differences in the LA
+    T #n              - there are #n trace point intervals for the LA
+     (#d #y )^#n      - there are #d difference aligning the #y bp's of B with the
+                           next fixed-size interval of A
+    + X #             - Total amount of X (X = P or T)
+    % X #             - Maximum amount of X in any pile (X = P or T)
+    @ T #             - Maximum number of trace points in any trace
+
+1-code lines that begin with +, %, or @ are always the first lines in the output.
+They give size information about what is contained in the output.  Specifically,
+'+ X #' gives the total number of LAs (X=P), or the total number of trace point
+intervals (X=T) in the file .  '% X #' gives the maximum number of LAs (X=P) or
+the maximum number of trace point intervals (X=T) in a given *pile* (collection of
+LAs all with the same a-read (applies only to sorted .las files).  Finally @ T #
+gives the maximum # of trace point intervals in any trace within the file.
+
+
+6. LAindex -v <source:las> ...
+
+LAindex takes a series of one or more sorted .las files and produces a "pile
+index" for each one.  If the input file has name "X.las", then the name of its
+index file is ".X.las.idx".  For each A-read pile encoded in the .las file,
+the index contains the offset to the first local alignment with A in the file.
+The index starts with four 64-bit integers that encode the numbers % P, + T, % T,
+and @ T described for LAdump above, and then an offset for each pile beginning
+with the first A-read in the file (which may not be read 0). The index is meant
+to allow programs that process piles to more efficiently read just the piles
+they need at any momment int time, as opposed to having to sequentially scan
+through the .las file.
+
+
+7. LAcat [-v] <source:las> > <target>.las
+
+Given template name <source> that contains a single #-sign somewhere within it,
+find all files that match it when the # is replace by i for i in 1,2,3,...  and
+a .las extension is added if not present.  Then concatenate these files in order
+into a single .las file and pipe the result to the standard output.  The -v
+option reports the files concatenated and the number of la's within them to
+standard error (as the standard output receives the concatenated file).
+
+
+8. LAsplit [-v] <target:las> (<parts:int> | <path:db|dam>) < <source>.las
+
+If the second argument is an integer n, then divide the alignment file <source>, piped
+in through the standard input, as evenly as possible into n alignment files with the
+names specified by template <target>, subject to the restriction that all alignment
+records for a given a-read are in the same file.  The name of the n files is the
+string <target> where the single #-sign that occurs somewhere in it is replaced
+by i for i in [1,n] and a .las extension is added if necessary.
+
+If the second argument refers to a database <path>.db that has been partitioned, then
+divide the input alignment file into block .las files where all records whose a-read is
+in <path>.i.db are in the i'th file generated from the template <target>.  The -v
+option reports the files produced and the number of la's within them to standard error.
+
+
+9. LAcheck [-vS] <src1:db|dam> [ <src2:db|dam> ] <align:las> ...
+
+LAcheck checks each .las file for structural integrity, where the a- and b-sequences
+come from src1 or from src1 and scr2, respectively.  That is, it makes sure each file
+makes sense as a plausible .las file, e.g. values are not out of bound, the number of
+records is correct, the number of trace points for a record is correct, and so on.  If
+the -S option is set then it further checks that the alignments are in sorted order.
+If the -v option is set then a line is output for each .las file saying either the
+file is OK or reporting the first error.  If the -v option is not set then the program
+runs silently.  The exit status is 0 if every file is deemed good, and 1 if at least
+one of the files looks corrupted.
+
+With the introduction of damapper, LAcheck checks to see if a file has chain
+information, and if it does, then it checks the validity of chains and assumes that
+the chains were sorted with the -a option to LAsort and LAmerge.
+
+
+10. HPC.daligner [-vbad] [-t<int>] [-w<int(6)>] [-l<int(1000)] [-s<int(100)]
+                    [-M<int>] [-B<int(4)>] [-D<int( 250)>] [-T<int(4)>] [-f<name>]
+                  ( [-k<int(14)>] [-h<int(35)>] [-e<double(.70)] [-AI] [-H<int>]
+                    [-k<int(20)>] [-h<int(50)>] [-e<double(.85)]  <ref:db|dam>  )
+                    [-m<track>]+ <reads:db|dam> [<first:int>[-<last:int>]]
+
+HPC.daligner writes a UNIX shell script to the standard output or to a series of files
+beginning with the prefix <name> if the -f option is set, that either performs an
+"overlap" computation on all the blocks in a single database, or a "comparison"
+computation on all pairs of blocks between two databases, depending on whether it is
+given one or two DB's as arguments (<ref> and <reads>).  We describe the overlap
+script first and its effect first and then later the comparison script.
+
+An Overlap Script: consists of a sequence of commands that effectively run daligner on
+all pairs of blocks of a split database and then externally sorts and merges them using
+LAsort and LAmerge into a collection of alignment files with names <path>.#.las where #
+ranges from 1 to the number of blocks the data base is split into. These sorted files
+if concatenated by say LAcat would contain all the alignments in sorted order (of
+a-read, then b-read, ...).  Moreover, all overlaps for a given a-read are guaranteed
+to not be split across files, so one can run artifact analyzers or error correction on
+each sorted file in parallel.
+
+The data base must have been previously split by DBsplit and all the parameters, except
+-a, -d, -f, -B, and -D, are passed through to the calls to daligner. The defaults for
+these parameters are as for daligner. The -v and -a flags are passed to all calls to
+LAsort and LAmerge. All other options are described later. For a database divided into
+N sub-blocks, the calls to daligner will produce in total 2TN^2 .las files assuming
+daligner runs with T threads. These will then be sorted and merged into N^2 sorted .las
+files, one for each block pair. These are then merged in ceil(log_D N) phases where
+the number of files decreases geometrically in -D until there is 1 file per row of
+the N x N block matrix. So at the end one has N sorted .las files that when
+concatenated would give a single large sorted overlap file.
+
+The -B option (default 4) gives the desired number of block comparisons per call to
+daligner. Some must contain B-1 comparisons, and the first B-2 block comparisons
+even less, but the HPCdaligner "planner" does the best it can to give an average load
+of dal block comparisons per command. The -D option (default 250) gives the maximum
+number of files that will be merged in a single LAmerge command.  The planner performs
+D-way merges at all of the ceil(logD N) levels save the last, so as to minimize the
+number of intermediate files.
+
+If the integers <first> and <last> are missing then the script produced is for every
+block in the database.  If <first> is present then HPCdaligner produces an incremental
+script that compares blocks <first> through <last> (<last> = <first> if not present)
+against each other and all previous blocks 1 through <first>-1, and then incrementally
+updates the .las files for blocks 1 through <first>-1, and creates the .las files for
+blocks <first> through <last>.
+
+A Comparison Script: consists of a sequence of commands that effectively maps every
+read in the DB <reads> against a reference set of sequences in the DB <ref>, recording
+all the found local alignments in the sequence of files <reads>.1.<ref>.las,
+<reads>.2.<ref>.las, ... where <reads>.<ref>.k.las contains the alignments between all
+of <ref> and the k'th block of <reads>. The parameters are exactly the same as for the
+overlap script save that the -k, -h, and -e defaults are set more stringently for
+mapping, and the -A, -I , and -H options make no sense as <ref> and <reads> are
+expected to be distinct data sets.  If the integers <first> and <last> are missing then
+the script produced is for every block in the database <reads>. If <first> is present
+then HPC.daligner produces a script that compares blocks <first> through <last> (<last>
+= <first> if not present) of <reads>against DAM <ref>.
+
+The command scripts output by HPC.daligner and other HPC.<x> programs consists of
+command blocks each of which begins with a comment line (begins with #) followed by a
+potentially long list of lines each containing a shell command.  Command blocks whose
+comment mentions "jobs" and gives the number of said in parenthesis, we call parallel
+blocks because each command line in the block can be sent to a node in a cluster for
+independent execution, i.e. none of the commands in a block depend on another in the
+block.  The remaining command blocks we call house-keeping blocks because they can be
+executed by the shell on the launch/server node and the commands are either checking
+the integrity of .las files with LAcheck, or removing intermediate files with rm. Each
+block should be performed in the order given and should complete before the next block
+is performed.
+
+If the -f option is set, then each command block is written to a file with a name of
+the form <name>.#.<description> where <name> is specified by the user in the -f option
+argument, # gives the order in which the command block in the given file is to be
+performed in relation to other command block files, and <description> is a (very)
+short symbolic reminder of what the block is doing.  For example, "HPC.daligner -fJOBS
+DB" would produce the files:
+
+     JOBS.01.OVL
+     JOBS.02.SORT
+     JOBS.03.CHECK.OPT
+     JOBS.04.RM
+     JOBS.MERGE
+     JOBS.06.CHECK.OPT
+     JOBS.07.RM.OPT
+
+The number of command blocks varies as it depends on the number of merging rounds
+required in the external sort of the .las files.  The files with the suffix .OPT are
+optional and need not be executed albeit we highly recommend that one run all the
+CHECK blocks.
+
+A new -d option requests scripts that organize files into a collection of
+sub-directories so as not to overwhelm the underlying OS for large genomes.  Recall
+that for a DB divided into N blocks, the daligner will produce 2N2T .las-files where
+T is the number of threads specified optionally with the -T option (default 4).  With
+the -d option set, N sub-directories (with respect to the directory HPC.daligner is
+called in) of the form "work<i>" for i from 1 to N are created in an initial command
+block, and then all work files are placed in those sub-directories, with a maximum
+of N(2T+1) files appearing in any sub-directory at any given point in the process.
+
+Example:
+
+//  Recall G.db from the example in DAZZ_DB/README
+
+> cat G.db
+files =         1
+       1862 G Sim
+blocks =         2
+size =        11 cutoff =         0 all = 0
+         0         0
+      1024      1024
+      1862      1862
+> HPCdaligner -mdust -t5 G | csh -v   // Run the HPCdaligner script
+
+# Dazzler jobs (2)
+dazzler -d -t5 -mdust G.1 G.1
+dazzler -d -t5 -mdust G.2 G.1 G.2
+# Initial sort jobs (4)
+LAsort G.1.G.1.*.las && LAmerge G.L1.1.1 G.1.G.1.*.S.las && rm G.1.G.1.*.S.las
+LAsort G.1.G.2.*.las && LAmerge G.L1.1.2 G.1.G.2.*.S.las && rm G.1.G.2.*.S.las
+LAsort G.2.G.1.*.las && LAmerge G.L1.2.1 G.2.G.1.*.S.las && rm G.2.G.1.*.S.las
+LAsort G.2.G.2.*.las && LAmerge G.L1.2.2 G.2.G.2.*.S.las && rm G.2.G.2.*.S.las
+# Level 1 jobs (2)
+LAmerge G.1 G.L1.1.1 G.L1.1.2 && rm G.L1.1.1.las G.L1.1.2.las
+LAmerge G.2 G.L1.2.1 G.L1.2.2 && rm G.L1.2.1.las G.L1.2.2.las
+
+> LAshow -c -a:G -w50 G.1 | more  // Take a look at the result !
+
+G.1: 34,510 records
+
+         1          9 c   [     0.. 1,876] x [ 9,017..10,825]  ( 18 trace pts)
+
+                      12645
+    A      ---------+====>   dif/(len1+len2) = 398/(1876+1808) = 21.61%
+    B <====+---------
+       9017
+
+         1 ..........gtg-cggt--caggggtgcctgc-t-t-atcgcaatgtta
+                     |||*||||**||||||||*||||*|*|*||**|*|*||||
+      9008 gagaggccaagtggcggtggcaggggtg-ctgcgtcttatatccaggtta  27.5%
+
+        35 ta-ctgggtggttaaacttagccaggaaacctgttgaaataa-acggtgg
+           ||*|||||||||||||*|**|*||*|*||||||*|**|||||*|*|||||
+      9057 tagctgggtggttaaa-tctg-ca-g-aacctg-t--aataacatggtgg  24.0%
+
+        83 -ctagtggcttgccgtttacccaacagaagcataatgaaa-tttgaaagt
+           *||||||||*||||||||*||**||||*|||**|||||||*||||*||||
+      9100 gctagtggc-tgccgttt-ccgcacag-agc--aatgaaaatttg-aagt  20.0%
+
+       131 ggtaggttcctgctgtct-acatacagaacgacggagcgaaaaggtaccg
+           ||*|||||||||||||*|*||||*|*|*||||||||||*||||||||||*
+      9144 gg-aggttcctgctgt-tcacat-c-ggacgacggagc-aaaaggtacc-  16.0%
+
+...
+
+> LAcat G >G.las       //  Combine G.1.las & G.2.las into a single .las file
+> LAshow G G | more    //   Take another look, now at G.las
+
+G: 62,654 records
+   1    9 c   [     0.. 1,876] x [ 9,017..10,825] :   <    398 diffs  ( 18 trace pts)
+   1   38 c   [     0.. 7,107] x [ 5,381..12,330] :   <  1,614 diffs  ( 71 trace pts)
+   1   49 n   [ 5,493..14,521] x [     0.. 9,065] :   <  2,028 diffs  ( 91 trace pts)
+   1   68 n   [12,809..14,521] x [     0.. 1,758] :   <    373 diffs  ( 17 trace pts)
+   1  147 c   [     0..13,352] x [   854..14,069] :   <  2,993 diffs  (133 trace pts)
+   1  231 n   [10,892..14,521] x [     0.. 3,735] :   <    816 diffs  ( 37 trace pts)
+   1  292 c   [ 3,835..14,521] x [     0..10,702] :   <  2,353 diffs  (107 trace pts)
+   1  335 n   [ 7,569..14,521] x [     0.. 7,033] :   <  1,544 diffs  ( 70 trace pts)
+   1  377 c   [ 9,602..14,521] x [     0.. 5,009] :   <  1,104 diffs  ( 49 trace pts)
+   1  414 c   [ 6,804..14,521] x [     0.. 7,812] :   <  1,745 diffs  ( 77 trace pts)
+   1  415 c   [     0.. 3,613] x [ 7,685..11,224] :   <    840 diffs  ( 36 trace pts)
+   1  445 c   [ 9,828..14,521] x [     0.. 4,789] :   <  1,036 diffs  ( 47 trace pts)
+   1  464 n   [     0.. 1,942] x [12,416..14,281] :   <    411 diffs  ( 19 trace pts)
+
+...
diff --git a/DALIGNER/README_PB.md b/DALIGNER/README_PB.md
new file mode 100644
index 0000000..27720bb
--- /dev/null
+++ b/DALIGNER/README_PB.md
@@ -0,0 +1,8 @@
+We have removed DB and QV files, since there are identical in DAZZ_DB.
+
+Now, this package will not build unless the DAZZ_DB directory is supplied.
+
+    CPPFLAGS+= -Idazzdb-build-dir
+    LDFLAGS+= -Ldazzdb-build-dir
+
+For now, we use a relative path, `../DAZZ_DB`, assuming we are both submodules.
diff --git a/DALIGNER/align.c b/DALIGNER/align.c
new file mode 100644
index 0000000..eb877d4
--- /dev/null
+++ b/DALIGNER/align.c
@@ -0,0 +1,5157 @@
+/*******************************************************************************************
+ *
+ *  Fast alignment discovery and trace generation along with utilites for displaying alignments
+ *     Based on previously unpublished ideas from 2005, subsequently refined in 2013-14.  Basic
+ *     idea is to keep a dynamically selected interval of the f.r. waves from my 1986 O(nd) paper.
+ *     A recent cool idea is to not record all the details of an alignment while discovering it
+ *     but simply record trace points through which the optimal alignment passes every 100bp,
+ *     allowing rapid recomputation of the alignment details between trace points.
+ *
+ *  Author :  Gene Myers
+ *  First  :  June 2013
+ *  Current:  June 1, 2014
+ *
+ ********************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+#include <limits.h>
+
+#include "DB.h"
+#include "align.h"
+
+#undef    DEBUG_PASSES     //  Show forward / backward extension termini for Local_Alignment
+#undef    DEBUG_POINTS     //  Show trace points
+#undef    DEBUG_WAVE       //  Show waves of Local_Alignment
+#undef     SHOW_MATCH_WAVE //  For waves of Local_Alignment also show # of matches
+#undef    SHOW_TRAIL       //  Show trace at the end of forward and reverse passes
+#undef    SHOW_TPS         //  Show trace points as they are encountered in a wave
+
+#undef  DEBUG_EXTEND       //  Show waves of Extend_Until_Overlap
+
+#undef  DEBUG_ALIGN        //  Show division points of Compute_Trace
+#undef  DEBUG_SCRIPT       //  Show trace additions for Compute_Trace
+#undef  DEBUG_AWAVE        //  Show F/R waves of Compute_Trace
+
+#undef  SHOW_TRACE         //  Show full trace for Print_Alignment
+
+#undef  WAVE_STATS
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  Working Storage Abstraction                                                           *
+*                                                                                        *
+\****************************************************************************************/
+
+typedef struct            //  Hidden from the user, working space for each thread
+  { int     vecmax;
+    void   *vector;
+    int     celmax;
+    void   *cells;
+    int     pntmax;
+    void   *points;
+    int     tramax;
+    void   *trace;
+  } _Work_Data;
+
+Work_Data *New_Work_Data()
+{ _Work_Data *work;
+  
+  work = (_Work_Data *) Malloc(sizeof(_Work_Data),"Allocating work data block");
+  if (work == NULL)
+    EXIT(NULL);
+  work->vecmax = 0;
+  work->vector = NULL;
+  work->pntmax = 0;
+  work->points = NULL;
+  work->tramax = 0;
+  work->trace  = NULL;
+  work->celmax = 0;
+  work->cells  = NULL;
+  return ((Work_Data *) work);
+}
+
+static int enlarge_vector(_Work_Data *work, int newmax)
+{ void *vec;
+  int   max;
+
+  max = ((int) (newmax*1.2)) + 10000;
+  vec = Realloc(work->vector,max,"Enlarging DP vector");
+  if (vec == NULL)
+    EXIT(1);
+  work->vecmax = max;
+  work->vector = vec;
+  return (0);
+}
+
+static int enlarge_points(_Work_Data *work, int newmax)
+{ void *vec;
+  int   max;
+
+  max = ((int) (newmax*1.2)) + 10000;
+  vec = Realloc(work->points,max,"Enlarging point vector");
+  if (vec == NULL)
+    EXIT(1);
+  work->pntmax = max;
+  work->points = vec;
+  return (0);
+}
+
+static int enlarge_trace(_Work_Data *work, int newmax)
+{ void *vec;
+  int   max;
+
+  max = ((int) (newmax*1.2)) + 10000;
+  vec = Realloc(work->trace,max,"Enlarging trace vector");
+  if (vec == NULL)
+    EXIT(1);
+  work->tramax = max;
+  work->trace  = vec;
+  return (0);
+}
+
+void Free_Work_Data(Work_Data *ework)
+{ _Work_Data *work = (_Work_Data *) ework;
+  if (work->vector != NULL)
+    free(work->vector);
+  if (work->cells != NULL)
+    free(work->cells);
+  if (work->trace != NULL)
+    free(work->trace);
+  if (work->points != NULL)
+    free(work->points);
+  free(work);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  ADAPTIVE PATH FINDING                                                                 *
+*                                                                                        *
+\****************************************************************************************/
+
+  //  Absolute/Fixed Parameters
+
+#define BVEC  uint64     //  Can be uint32 if PATH_LEN <= 32
+
+#define TRIM_LEN    15   //  Report as the tip, the last wave maximum for which the last
+                         //     2*TRIM_LEN edits are prefix-positive at rate ave_corr*f(bias)
+                         //     (max value is 20)
+
+#define PATH_LEN    60   //  Follow the last PATH_LEN columns/edges (max value is 63)
+
+  //  Derivative fixed parameters
+
+#define PATH_TOP  0x1000000000000000ll   //  Must be 1 << PATH_LEN
+#define PATH_INT  0x0fffffffffffffffll   //  Must be PATH_TOP-1
+#define TRIM_MASK 0x7fff                 //  Must be (1 << TRIM_LEN) - 1
+#define TRIM_MLAG 200                    //  How far can last trim point be behind best point
+#define WAVE_LAG   30                    //  How far can worst point be behind the best point
+
+static double Bias_Factor[10] = { .690, .690, .690, .690, .780,
+                                  .850, .900, .933, .966, 1.000 };
+
+  //  Adjustable paramters
+
+typedef struct
+  { double ave_corr;
+    int    trace_space;
+    float  freq[4];
+    int    ave_path;
+    int16 *score;
+    int16 *table;
+  } _Align_Spec;
+ 
+/* Fill in bit table: TABLE[x] = 1 iff the alignment modeled by x (1 = match, 0 = mismatch)
+     has a non-negative score for every suffix of the alignment under the scoring scheme
+     where match = MATCH and mismatch = -1.  MATCH is set so that an alignment with TRIM_PCT
+     matches has zero score ( (1-TRIM_PCT) / TRIM_PCT ).                                     */
+
+#define FRACTION 1000  //  Implicit fractional part of scores, i.e. score = x/FRACTION
+
+typedef struct
+  { int    mscore;
+    int    dscore;
+    int16 *table;
+    int16 *score;
+  } Table_Bits;
+
+static void set_table(int bit, int prefix, int score, int max, Table_Bits *parms)
+{ if (bit >= TRIM_LEN)
+    { parms->table[prefix] = (int16) (score-max);
+      parms->score[prefix] = (int16) score;
+    }
+  else
+    { if (score > max)
+        max = score;
+      set_table(bit+1,(prefix<<1),score - parms->dscore,max,parms);
+      set_table(bit+1,(prefix<<1) | 1,score + parms->mscore,max,parms);
+    }
+}
+
+/* Create an alignment specification record including path tip tables & values */
+
+Align_Spec *New_Align_Spec(double ave_corr, int trace_space, float *freq)
+{ _Align_Spec *spec;
+  Table_Bits   parms;
+  double       match;
+  int          bias;
+
+  spec = (_Align_Spec *) Malloc(sizeof(_Align_Spec),"Allocating alignment specification");
+  if (spec == NULL)
+    EXIT(NULL);
+
+  spec->ave_corr    = ave_corr;
+  spec->trace_space = trace_space;
+  spec->freq[0]     = freq[0];
+  spec->freq[1]     = freq[1];
+  spec->freq[2]     = freq[2];
+  spec->freq[3]     = freq[3];
+
+  match = freq[0] + freq[3];
+  if (match > .5)
+    match = 1.-match;
+  bias = (int) ((match+.025)*20.-1.);
+  if (match < .2)
+    { fprintf(stderr,"Warning: Base bias worse than 80/20%% ! (New_Align_Spec)\n");
+      fprintf(stderr,"         Capping bias at this ratio.\n");
+      bias = 3; 
+    }
+
+  spec->ave_path = (int) (PATH_LEN * (1. - Bias_Factor[bias] * (1. - ave_corr)));
+  parms.mscore   = (int) (FRACTION * Bias_Factor[bias] * (1. - ave_corr));
+  parms.dscore   = FRACTION - parms.mscore;
+
+  parms.score = (int16 *) Malloc(sizeof(int16)*(TRIM_MASK+1)*2,"Allocating trim table");
+  if (parms.score == NULL)
+    { free(spec);
+      EXIT(NULL);
+    }
+  parms.table = parms.score + (TRIM_MASK+1);
+
+  set_table(0,0,0,0,&parms);
+
+  spec->table = parms.table;
+  spec->score = parms.score;
+
+  return ((Align_Spec *) spec);
+}
+
+void Free_Align_Spec(Align_Spec *espec)
+{ _Align_Spec *spec = (_Align_Spec *) espec;
+  free(spec->score);
+  free(spec);
+}
+
+double Average_Correlation(Align_Spec *espec)
+{ return (((_Align_Spec *) espec)->ave_corr); }
+
+int Trace_Spacing(Align_Spec *espec)
+{ return (((_Align_Spec *) espec)->trace_space); }
+
+float *Base_Frequencies(Align_Spec *espec)
+{ return (((_Align_Spec *) espec)->freq); }
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  LOCAL ALIGNMENT FINDER: forward_/reverse_wave and Local_Alignment                     *
+*                                                                                        *
+\****************************************************************************************/
+
+
+#ifdef WAVE_STATS
+
+static int64 MAX, TOT, NWV;
+static int64 RESTARTS;
+
+void Init_Stats()
+{ MAX = TOT = NWV = 0;
+  RESTARTS = 0;
+}
+
+void Print_Stats()
+{ printf("\nMax = %lld  Ave = %.1f  # = %lld\n",MAX,(1.*TOT)/NWV,NWV);
+  printf("\nRestarts = %lld\n",RESTARTS);
+}
+
+#endif
+
+
+#ifdef DEBUG_WAVE
+
+static void print_wave(int *V, int *M, int low, int hgh, int besta)
+{ int k, bestk;
+
+  (void) M;
+  printf("  [%6d,%6d]: ",low,hgh);
+  for (k = low; k <= hgh; k++)
+    { if (besta == V[k])
+        bestk = k;
+      // printf(" %3d",(V[k]+k)/2);
+      printf(" %3d",besta-V[k]);
+    }
+  printf(" : %d (%d,%d)\n",besta,(besta+bestk)/2,(besta-bestk)/2);
+#ifdef SHOW_MATCH_WAVE
+  printf("                   ");
+  for (k = low; k <= hgh; k++)
+    printf(" %3d",M[k]);
+  printf("\n");
+#endif
+  fflush(stdout);
+}
+
+#endif
+
+/* At each furthest reaching point, keep a-coordinate of point (V), bitvector
+     recording the last TRIM_LEN columns of the implied alignment (T), and the
+     # of matches (1-bits) in the bitvector (M).                               */
+
+typedef struct
+  { int ptr;
+    int diag;
+    int diff;
+    int mark;
+  } Pebble;
+
+static int VectorEl = 6*sizeof(int) + sizeof(BVEC);
+
+static int forward_wave(_Work_Data *work, _Align_Spec *spec, Alignment *align, Path *bpath,
+                        int *mind, int maxd, int mida, int minp, int maxp, int aoff, int boff)
+{ char *aseq  = align->aseq;
+  char *bseq  = align->bseq;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *HB;
+  int    *_HA, *_HB;
+  int    *NA, *NB;
+  int    *_NA, *_NB;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha, trimhb;
+  int     morea, morey, mored;
+  int     moreha, morehb;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = maxd;
+  low = *mind;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEl;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _HB = _HA + vlen;
+    _NA = _HB + vlen;
+    _NB = _NA + vlen;
+    _T  = ((BVEC *) (_NB + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    HB = _HB-vmin;
+    NA = _NA-vmin;
+    NB = _NB-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  /* Compute 0-wave starting from mid-line */
+
+  more  = 1;
+  aclip =  INT32_MAX;
+  bclip = -INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  trimhb = morehb = 1;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a  = aseq + hgh;
+    for (k = hgh; k >= low; k--)
+      { int     y, c, d;
+        int     ha, hb;
+        int     na, nb;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = (((y+k)+(TRACE_SPACE-aoff))/TRACE_SPACE-1)*TRACE_SPACE+aoff;
+#ifdef SHOW_TPS
+        printf(" A %d: %d,%d,0,%d\n",avail,-1,k,na); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = na;
+        ha  = avail++;
+        na += TRACE_SPACE;
+
+        nb = ((y+(TRACE_SPACE-boff))/TRACE_SPACE-1)*TRACE_SPACE+boff;
+#ifdef SHOW_TPS
+        printf(" B %d: %d,%d,0,%d\n",avail,-1,k,nb); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = nb;
+        hb  = avail++;
+        nb += TRACE_SPACE;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip < k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y += 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k >= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na += TRACE_SPACE;
+          }
+        while (y >= nb)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" B %d: %d,%d,0,%d\n",avail,hb,k,nb); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = hb;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = nb;
+            hb  = avail++;
+            nb += TRACE_SPACE;
+          }
+
+        if (c > besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+            trimhb = hb;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        HB[k] = hb;
+        NA[k] = na;
+        NB[k] = nb;
+
+        a -= 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (hgh >= aclip)
+        { hgh = aclip-1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+              morehb = HB[aclip];
+            }
+        }
+      if (low <= bclip)
+        { low = bclip+1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+              morehb = HB[bclip];
+            }
+        }
+      aclip =  INT32_MAX;
+      bclip = -INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nFORWARD WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  /* Compute successive waves until no furthest reaching points remain */
+
+  while (more && lasta >= besta - TRIM_MLAG)
+    { int     k, n;
+      int     ua, ub;
+      BVEC    t;
+      int     am, ac, ap;
+      char   *a;
+
+      low -= 1;
+      hgh += 1;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move;
+          int64 vd, md, had, hbd, nad, nbd, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEl))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEl;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _HB = _HA + vlen;
+              _NA = _HB + vlen;
+              _NB = _NA + vlen;
+              _T  = ((BVEC *) (_NB + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          hbd = ((void *) (_HB+wing)) - (((void *) (HB+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          nbd = ((void *) (_NB+wing)) - (((void *) (NB+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (hbd < 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (nbd < 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nbd > 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (hbd > 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          HB = _HB-vmin;
+          NA = _NA-vmin;
+          NB = _NB-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low >= minp)
+        { NA[low] = NA[low+1];
+          NB[low] = NB[low+1];
+          V[low]  = -1;
+        }
+      else
+        low += 1;
+
+      if (hgh <= maxp)
+        { NA[hgh] = NA[hgh-1];
+          NB[hgh] = NB[hgh-1];
+          V[hgh]  = am = -1;
+        }
+      else
+        am = V[--hgh];
+
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = -1;
+      a  = aseq + hgh;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = ub = -1;
+      for (k = hgh; k >= low; k--)
+        { int     y, m;
+          int     ha, hb;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          ap = ac;
+          ac = am;
+          am = V[d = k-1];
+
+          if (ac < am)
+            if (am < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = am+1;
+                m  = M[d];
+                b  = T[d]; 
+                ha = HA[d];
+                hb = HB[d];
+              }
+          else
+            if (ac < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = ac+2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+                hb = HB[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip < k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y += 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k >= NA[k])
+            { if (cells[ha].mark < NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] += TRACE_SPACE;
+            }
+
+          while (y >= NB[k])
+            { if (cells[hb].mark < NB[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" B %d: %d,%d,%d,%d\n",avail,hb,k,dif,NB[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = hb;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NB[k];
+                  hb = avail++;
+                }
+              NB[k] += TRACE_SPACE;
+            }
+
+          if (c > besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                        trimhb = hb;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          ub = HB[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+          HB[k] = hb;
+
+          a -= 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta-besty] != 4)
+            more = 1;
+          if (hgh >= aclip)
+            { hgh = aclip-1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                  morehb = HB[aclip];
+                }
+            }
+          if (low <= bclip)
+            { low = bclip+1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                  morehb = HB[bclip];
+                }
+            }
+          aclip =  INT32_MAX;
+          bclip = -INT32_MAX;
+        }
+
+      n = besta - WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] < n)
+          hgh -= 1;                               
+        else
+          { while (V[low] < n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    uint16 *btrace = (uint16 *) bpath->trace;
+    int     atlen, btlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+        trimhb = morehb;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = btlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = (mida-k)/2;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",(mida+k)/2,b); fflush(stdout);
+#endif
+    for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+      { k = cells[h].diag;
+        a = cells[h].mark - k;
+        d = cells[h].diff;
+        atrace[atlen++] = (uint16) (d-e);
+        atrace[atlen++] = (uint16) (a-b);
+#ifdef SHOW_TRAIL
+        printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,a-b); fflush(stdout);
+#endif
+        b = a;
+        e = d;
+      }
+    if (b+k != trimx)
+      { atrace[atlen++] = (uint16) (trimd-e);
+        atrace[atlen++] = (uint16) (trimy-b);
+#ifdef SHOW_TRAIL
+        printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+    else if (b != trimy)
+      { atrace[atlen-1] = (uint16) (atrace[atlen-1] + (trimy-b));
+        atrace[atlen-2] = (uint16) (atrace[atlen-2] + (trimd-e));
+#ifdef SHOW_TRAIL
+        printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+
+    a = -1;
+    for (h = trimhb; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = (mida+k)/2;
+    e = 0;
+    low = k;
+#ifdef SHOW_TRAIL
+    printf("  B path = (%5d,%5d)\n",b,(mida-k)/2); fflush(stdout);
+#endif
+    for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+      { k = cells[h].diag;
+        a = cells[h].mark + k;
+        d = cells[h].diff;
+        btrace[btlen++] = (uint16) (d-e);
+        btrace[btlen++] = (uint16) (a-b);  
+#ifdef SHOW_TRAIL
+        printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a,a-k,d-e,a-b); fflush(stdout);
+#endif
+        b = a;
+        e = d;
+      }
+    if (b-k != trimy)
+      { btrace[btlen++] = (uint16) (trimd-e);
+        btrace[btlen++] = (uint16) (trimx-b);  
+#ifdef SHOW_TRAIL
+        printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimx-b); fflush(stdout);
+#endif
+      }
+    else if (b != trimx)
+      { btrace[btlen-1] = (uint16) (btrace[btlen-1] + (trimx-b));
+        btrace[btlen-2] = (uint16) (btrace[btlen-2] + (trimd-e));
+#ifdef SHOW_TRAIL
+        printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimx-b); fflush(stdout);
+#endif
+      }
+
+    apath->aepos = trimx;
+    apath->bepos = trimy;
+    apath->diffs = trimd;
+    apath->tlen  = atlen;
+    bpath->tlen  = btlen;
+  }
+
+  *mind = low;
+  return (0);
+}
+
+/*** Reverse Wave ***/
+
+static int reverse_wave(_Work_Data *work, _Align_Spec *spec, Alignment *align, Path *bpath,
+                        int mind, int maxd, int mida, int minp, int maxp, int aoff, int boff)
+{ char *aseq  = align->aseq - 1;
+  char *bseq  = align->bseq - 1;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *HB;
+  int    *_HA, *_HB;
+  int    *NA, *NB;
+  int    *_NA, *_NB;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha, trimhb;
+  int     morea, morey, mored;
+  int     moreha, morehb;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = maxd;
+  low = mind;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEl;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _HB = _HA + vlen;
+    _NA = _HB + vlen;
+    _NB = _NA + vlen;
+    _T  = ((BVEC *) (_NB + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    HB = _HB-vmin;
+    NA = _NA-vmin;
+    NB = _NB-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  more  = 1;
+  aclip = -INT32_MAX;
+  bclip =  INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  trimhb = morehb = 1;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a = aseq + low;
+    for (k = low; k <= hgh; k++)
+      { int     y, c, d;
+        int     ha, hb;
+        int     na, nb;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = (((y+k)+(TRACE_SPACE-aoff)-1)/TRACE_SPACE-1)*TRACE_SPACE+aoff;
+#ifdef SHOW_TPS
+        printf(" A %d: -1,%d,0,%d\n",avail,k,na+TRACE_SPACE); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = y+k;
+        ha  = avail++;
+
+        nb = ((y+(TRACE_SPACE-boff)-1)/TRACE_SPACE-1)*TRACE_SPACE+boff;
+#ifdef SHOW_TPS
+        printf(" B %d: -1,%d,0,%d\n",avail,k,nb+TRACE_SPACE); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = y;
+        hb  = avail++;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip > k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y -= 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k <= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na -= TRACE_SPACE;
+          }
+        while (y <= nb)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" B %d: %d,%d,0,%d\n",avail,hb,k,nb); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = hb;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = nb;
+            hb  = avail++;
+            nb -= TRACE_SPACE;
+          }
+
+        if (c < besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+            trimhb = hb;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        HB[k] = hb;
+        NA[k] = na;
+        NB[k] = nb;
+
+        a += 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (low <= aclip)
+        { low = aclip+1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+              morehb = HB[aclip];
+            }
+        }
+      if (hgh >= bclip)
+        { hgh = bclip-1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+              morehb = HB[bclip];
+            }
+        }
+      aclip = -INT32_MAX;
+      bclip =  INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nREVERSE WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  while (more && lasta <= besta + TRIM_MLAG)
+    { int    k, n;
+      int    ua, ub;
+      BVEC   t;
+      int    am, ac, ap;
+      char  *a;
+
+      low -= 1;
+      hgh += 1;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move, vd, md, had, hbd, nad, nbd, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEl))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEl;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _HB = _HA + vlen;
+              _NA = _HB + vlen;
+              _NB = _NA + vlen;
+              _T  = ((BVEC *) (_NB + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          hbd = ((void *) (_HB+wing)) - (((void *) (HB+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          nbd = ((void *) (_NB+wing)) - (((void *) (NB+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (hbd < 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (nbd < 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nbd > 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (hbd > 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          HB = _HB-vmin;
+          NA = _NA-vmin;
+          NB = _NB-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low >= minp)
+        { NA[low] = NA[low+1];
+          NB[low] = NB[low+1];
+          V[low]  = ap = INT32_MAX;
+        }
+      else
+        ap = V[++low]; 
+
+      if (hgh <= maxp)
+        { NA[hgh] = NA[hgh-1];
+          NB[hgh] = NB[hgh-1];
+          V[hgh] = INT32_MAX;
+        }
+      else
+        hgh -= 1;
+
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = INT32_MAX;
+      a  = aseq + low;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = ub = -1;
+      for (k = low; k <= hgh; k++)
+        { int     y, m;
+          int     ha, hb;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          am = ac;
+          ac = ap;
+          ap = V[d = k+1];
+
+          if (ac > ap)
+            if (ap > am)
+              { c = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = ap-1;
+                m  = M[d];
+                b  = T[d];
+                ha = HA[d];
+                hb = HB[d];
+              }
+          else
+            if (ac > am)
+              { c  = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = ac-2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+                hb = HB[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip > k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y -= 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k <= NA[k])
+            { if (cells[ha].mark > NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] -= TRACE_SPACE;
+            }
+          while (y <= NB[k])
+            { if (cells[hb].mark > NB[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" B %d: %d,%d,%d,%d\n",avail,hb,k,dif,NB[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = hb;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NB[k];
+                  hb = avail++;
+                }
+              NB[k] -= TRACE_SPACE;
+            }
+
+          if (c < besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                        trimhb = hb;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          ub = HB[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+          HB[k] = hb;
+
+          a += 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+            more = 1;
+          if (low <= aclip)
+            { low = aclip+1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                  morehb = HB[aclip];
+                }
+            }
+          if (hgh >= bclip)
+            { hgh = bclip-1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                  morehb = HB[bclip];
+                }
+            }
+          aclip = -INT32_MAX;
+          bclip =  INT32_MAX;
+        }
+
+      n = besta + WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] > n)
+          hgh -= 1;                               
+        else
+          { while (V[low] > n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    uint16 *btrace = (uint16 *) bpath->trace;
+    int     atlen, btlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+        trimhb = morehb;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = btlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = cells[h].mark - k;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",b+k,b); fflush(stdout);
+#endif
+    if ((b+k)%TRACE_SPACE != aoff)
+      { h = cells[h].ptr;
+        if (h < 0)
+          { a = trimy;
+            d = trimd;
+          }
+        else
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            d = cells[h].diff;
+          }
+#ifdef SHOW_TRAIL
+        printf("    +%4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+        if (apath->tlen == 0)
+          { atrace[--atlen] = (uint16) (b-a);
+            atrace[--atlen] = (uint16) (d-e);
+          }
+        else
+          { atrace[1] = (uint16) (atrace[1] + (b-a));
+            atrace[0] = (uint16) (atrace[0] + (d-e));
+          }
+        b = a;
+        e = d;
+      }
+    if (h >= 0)
+      { for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            atrace[--atlen] = (uint16) (b-a);
+            d = cells[h].diff;
+            atrace[--atlen] = (uint16) (d-e);
+#ifdef SHOW_TRAIL
+            printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+            b = a;
+            e = d;
+          }
+        if (b+k != trimx)
+          { atrace[--atlen] = (uint16) (b-trimy);
+            atrace[--atlen] = (uint16) (trimd-e);
+#ifdef SHOW_TRAIL
+            printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+        else if (b != trimy)
+          { atrace[atlen+1] = (uint16) (atrace[atlen+1] + (b-trimy));
+            atrace[atlen]   = (uint16) (atrace[atlen]   + (trimd-e));
+#ifdef SHOW_TRAIL
+            printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+      }
+
+    a = -1;
+    for (h = trimhb; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = cells[h].mark + k;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  B path = (%5d,%5d)\n",b,b-k); fflush(stdout);
+#endif
+    if ((b-k)%TRACE_SPACE != boff)
+      { h = cells[h].ptr;
+        if (h < 0)
+          { a = trimx;
+            d = trimd;
+          } 
+        else
+          { k = cells[h].diag;
+            a = cells[h].mark + k;
+            d = cells[h].diff;
+          }
+#ifdef SHOW_TRAIL
+        printf("    +%4d: (%5d,%5d): %3d / %3d\n",h,a,a-k,d-e,b-a); fflush(stdout);
+#endif
+        if (bpath->tlen == 0)
+          { btrace[--btlen] = (uint16) (b-a);
+            btrace[--btlen] = (uint16) (b-a);
+          }
+        else
+          { btrace[1] = (uint16) (btrace[1] + (b-a));
+            btrace[0] = (uint16) (btrace[0] + (d-e));
+          }
+        b = a;
+        e = d;
+      }
+
+    if (h >= 0)
+      { for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+          { k = cells[h].diag;
+            a = cells[h].mark + k;
+            btrace[--btlen] = (uint16) (b-a);
+            d = cells[h].diff;
+            btrace[--btlen] = (uint16) (d-e);
+#ifdef SHOW_TRAIL
+            printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a,a-k,d-e,b-a); fflush(stdout);
+#endif
+            b = a;
+            e = d;
+          }
+        if (b-k != trimy)
+          { btrace[--btlen] = (uint16) (b-trimx);
+            btrace[--btlen] = (uint16) (trimd-e);
+#ifdef SHOW_TRAIL
+            printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimx); fflush(stdout);
+#endif
+          }
+        else if (b != trimx)
+          { btrace[btlen+1] = (uint16) (btrace[btlen+1] + (b-trimx));
+            btrace[btlen]   = (uint16) (btrace[btlen]   + (trimd-e));
+#ifdef SHOW_TRAIL
+            printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimx); fflush(stdout);
+#endif
+          }
+      }
+
+    apath->abpos = trimx;
+    apath->bbpos = trimy;
+    apath->diffs = apath->diffs + trimd;
+    apath->tlen  = apath->tlen  - atlen;
+    apath->trace = atrace + atlen;
+    bpath->tlen  = bpath->tlen  - btlen;
+    bpath->trace = btrace + btlen;
+  }
+
+  return (0);
+}
+
+
+/* Find the longest local alignment between aseq and bseq through (xcnt,ycnt)
+   See associated .h file for the precise definition of the interface.
+*/
+
+Path *Local_Alignment(Alignment *align, Work_Data *ework, Align_Spec *espec,
+                      int low, int hgh, int anti, int lbord, int hbord)
+{ _Work_Data  *work = ( _Work_Data *) ework;
+  _Align_Spec *spec = (_Align_Spec *) espec;
+
+  Path *apath, *bpath;
+  int   aoff, boff;
+  int   minp, maxp;
+  int   selfie;
+
+  { int alen, blen;
+    int maxtp, wsize;
+
+    alen = align->alen;
+    blen = align->blen;
+
+    if (hgh-low >= 7500)
+      wsize = VectorEl*(hgh-low+1);
+    else
+      wsize = VectorEl*10000;
+    if (wsize >= work->vecmax)
+      if (enlarge_vector(work,wsize))
+        EXIT(NULL);
+
+    if (alen < blen)
+      maxtp = 2*(blen/spec->trace_space+2);
+    else
+      maxtp = 2*(alen/spec->trace_space+2);
+    wsize = 4*maxtp*sizeof(uint16) + sizeof(Path);
+    if (wsize > work->pntmax)
+      if (enlarge_points(work,wsize))
+        EXIT(NULL);
+
+    apath = align->path;
+    bpath = (Path *) work->points;
+
+    apath->trace = ((uint16 *) (bpath+1)) + maxtp;
+    bpath->trace = ((uint16 *) apath->trace) +  2*maxtp;
+  }
+
+#ifdef DEBUG_PASSES
+  printf("\n");
+#endif
+
+  selfie = (align->aseq == align->bseq);
+   
+  if (lbord < 0)
+    { if (selfie && low >= 0)
+        minp = 1;
+      else
+        minp = -INT32_MAX;
+    }
+  else
+    minp = low-lbord;
+  if (hbord < 0)
+    { if (selfie && hgh <= 0)
+        maxp = -1;
+      else
+        maxp = INT32_MAX;
+    }
+  else
+    maxp = hgh+hbord;
+
+  if (ACOMP(align->flags))
+    { aoff = align->alen % spec->trace_space;
+      boff = 0;
+    }
+  else if (COMP(align->flags))
+    { aoff = 0;
+      boff = align->blen % spec->trace_space;
+    }
+  else
+    { aoff = 0;
+      boff = 0;
+    }
+
+  if (forward_wave(work,spec,align,bpath,&low,hgh,anti,minp,maxp,aoff,boff))
+    EXIT(NULL);
+
+#ifdef DEBUG_PASSES
+  printf("F1 (%d,%d) ~ %d => (%d,%d) %d\n",
+         (2*anti+(low+hgh))/4,(anti-(low+hgh))/4,hgh-low,
+         apath->aepos,apath->bepos,apath->diffs);
+#endif
+
+  if (reverse_wave(work,spec,align,bpath,low,low,anti,minp,maxp,aoff,boff))
+    EXIT(NULL);
+
+#ifdef DEBUG_PASSES
+  printf("R1 (%d,%d) => (%d,%d) %d\n",
+         (anti+low)/2,(anti-low)/2,apath->abpos,apath->bbpos,apath->diffs);
+#endif
+
+  bpath->diffs = apath->diffs;
+  if (ACOMP(align->flags))
+    { uint16 *trace = (uint16 *) apath->trace;
+      uint16  p;
+      int     i, j;
+
+      bpath->aepos = apath->bepos;
+      bpath->bepos = apath->aepos;
+      bpath->abpos = apath->bbpos;
+      bpath->bbpos = apath->abpos;
+
+      apath->abpos = align->alen - bpath->bepos;
+      apath->bbpos = align->blen - bpath->aepos;
+      apath->aepos = align->alen - bpath->bbpos;
+      apath->bepos = align->blen - bpath->abpos;
+      i = apath->tlen-2;
+      j = 0;
+      while (j < i)
+        { p = trace[i];
+          trace[i] = trace[j];
+          trace[j] = p;
+          p = trace[i+1];
+          trace[i+1] = trace[j+1];
+          trace[j+1] = p;
+          i -= 2;
+          j += 2;
+        }
+    }
+  else if (COMP(align->flags))
+    { uint16 *trace = (uint16 *) bpath->trace;
+      uint16  p;
+      int     i, j;
+
+      bpath->abpos = align->blen - apath->bepos;
+      bpath->bbpos = align->alen - apath->aepos;
+      bpath->aepos = align->blen - apath->bbpos;
+      bpath->bepos = align->alen - apath->abpos;
+      i = bpath->tlen-2;
+      j = 0;
+      while (j < i)
+        { p = trace[i];
+          trace[i] = trace[j];
+          trace[j] = p;
+          p = trace[i+1];
+          trace[i+1] = trace[j+1];
+          trace[j+1] = p;
+          i -= 2;
+          j += 2;
+        }
+    }
+  else
+    { bpath->aepos = apath->bepos;
+      bpath->bepos = apath->aepos;
+      bpath->abpos = apath->bbpos;
+      bpath->bbpos = apath->abpos;
+    }
+
+#ifdef DEBUG_POINTS
+  { uint16 *trace = (uint16 *) apath->trace;
+    int     a, h;
+
+    printf("\nA-path (%d,%d)->(%d,%d)",apath->abpos,apath->bbpos,apath->aepos,apath->bepos);
+    printf(" %c\n",((COMP(align->flags) || ACOMP(align->flags)) ? 'c' : 'n'));
+    a = apath->bbpos;
+    for (h = 1; h < apath->tlen; h += 2)
+      { int dif = trace[h-1];
+        int del = trace[h];
+        a += del;
+        printf("      %d / %d (%d)\n",dif,del,a);
+      }
+  }
+
+  { uint16 *trace = (uint16 *) bpath->trace;
+    int     a, h;
+
+    printf("\nB-path (%d,%d)->(%d,%d)",bpath->abpos,bpath->bbpos,bpath->aepos,bpath->bepos);
+    printf(" %c [%d,%d]\n",((COMP(align->flags) || ACOMP(align->flags)) ? 'c' : 'n'),
+                           align->blen,align->alen);
+    a = bpath->bbpos;
+    for (h = 1; h < bpath->tlen; h += 2)
+      { int dif = trace[h-1];
+        int del = trace[h];
+        a += del;
+        printf("      %d / %d (%d)\n",dif,del,a);
+      }
+  }
+#endif
+
+  return (bpath);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  EXTENSION VERSION OF LOCAL ALIGNMENT                                                  *
+*                                                                                        *
+\****************************************************************************************/
+
+static int VectorEn = 4*sizeof(int) + sizeof(BVEC);
+
+static int forward_extend(_Work_Data *work, _Align_Spec *spec, Alignment *align,
+                          int midd, int mida, int minp, int maxp)
+{ char *aseq  = align->aseq;
+  char *bseq  = align->bseq;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *NA;
+  int    *_HA, *_NA;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha;
+  int     morea, morey, mored;
+  int     moreha;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = midd;
+  low = midd;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEn;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _NA = _HA + vlen;
+    _T  = ((BVEC *) (_NA + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    NA = _NA-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  /* Compute 0-wave starting from mid-line */
+
+  more  = 1;
+  aclip =  INT32_MAX;
+  bclip = -INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a  = aseq + hgh;
+    for (k = hgh; k >= low; k--)
+      { int     y, c, d;
+        int     ha, na;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = ((y+k)/TRACE_SPACE)*TRACE_SPACE;
+#ifdef SHOW_TPS
+        printf(" A %d: %d,%d,0,%d\n",avail,-1,k,na); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = na;
+        ha  = avail++;
+        na += TRACE_SPACE;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip < k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y += 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k >= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na += TRACE_SPACE;
+          }
+
+        if (c > besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        NA[k] = na;
+
+        a -= 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (hgh >= aclip)
+        { hgh = aclip-1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+            }
+        }
+      if (low <= bclip)
+        { low = bclip+1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+            }
+        }
+      aclip =  INT32_MAX;
+      bclip = -INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nFORWARD WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  /* Compute successive waves until no furthest reaching points remain */
+
+  while (more && lasta >= besta - TRIM_MLAG)
+    { int     k, n;
+      int     ua;
+      BVEC    t;
+      int     am, ac, ap;
+      char   *a;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move;
+          int64 vd, md, had, nad, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEn))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEn;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _NA = _HA + vlen;
+              _T  = ((BVEC *) (_NA + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          NA = _NA-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low > minp)
+        { low -= 1;
+          NA[low] = NA[low+1];
+          V[low]  = -1;
+        }
+      if (hgh < maxp)
+        { hgh += 1;
+          NA[hgh] = NA[hgh-1];
+          V[hgh]  = am = -1;
+        }
+      else
+        am = V[hgh];
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = -1;
+      a  = aseq + hgh;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = -1;
+      for (k = hgh; k >= low; k--)
+        { int     y, m;
+          int     ha;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          ap = ac;
+          ac = am;
+          am = V[d = k-1];
+
+          if (ac < am)
+            if (am < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = am+1;
+                m  = M[d];
+                b  = T[d]; 
+                ha = HA[d];
+              }
+          else
+            if (ac < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = ac+2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip < k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y += 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k >= NA[k])
+            { if (cells[ha].mark < NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] += TRACE_SPACE;
+            }
+
+          if (c > besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+
+          a -= 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta-besty] != 4)
+            more = 1;
+          if (hgh >= aclip)
+            { hgh = aclip-1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                }
+            }
+          if (low <= bclip)
+            { low = bclip+1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                }
+            }
+          aclip =  INT32_MAX;
+          bclip = -INT32_MAX;
+        }
+
+      n = besta - WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] < n)
+          hgh -= 1;                               
+        else
+          { while (V[low] < n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    int     atlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = (mida-k)/2;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",(mida+k)/2,b); fflush(stdout);
+#endif
+    for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+      { k = cells[h].diag;
+        a = cells[h].mark - k;
+        d = cells[h].diff;
+        atrace[atlen++] = (uint16) (d-e);
+        atrace[atlen++] = (uint16) (a-b);
+#ifdef SHOW_TRAIL
+        printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,a-b); fflush(stdout);
+#endif
+        b = a;
+        e = d;
+      }
+    if (b+k != trimx)
+      { atrace[atlen++] = (uint16) (trimd-e);
+        atrace[atlen++] = (uint16) (trimy-b);
+#ifdef SHOW_TRAIL
+        printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+    else if (b != trimy)
+      { atrace[atlen-1] = (uint16) (atrace[atlen-1] + (trimy-b));
+        atrace[atlen-2] = (uint16) (atrace[atlen-2] + (trimd-e));
+#ifdef SHOW_TRAIL
+        printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+
+    apath->aepos = trimx;
+    apath->bepos = trimy;
+    apath->diffs = trimd;
+    apath->tlen  = atlen;
+  }
+
+  return (0);
+}
+
+static int reverse_extend(_Work_Data *work, _Align_Spec *spec, Alignment *align,
+                          int midd, int mida, int minp, int maxp)
+{ char *aseq  = align->aseq - 1;
+  char *bseq  = align->bseq - 1;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *NA;
+  int    *_HA, *_NA;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha;
+  int     morea, morey, mored;
+  int     moreha;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = midd;
+  low = midd;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEn;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _NA = _HA + vlen;
+    _T  = ((BVEC *) (_NA + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    NA = _NA-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  more  = 1;
+  aclip = -INT32_MAX;
+  bclip =  INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a = aseq + low;
+    for (k = low; k <= hgh; k++)
+      { int     y, c, d;
+        int     ha, na;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = ((y+k+TRACE_SPACE-1)/TRACE_SPACE-1)*TRACE_SPACE;
+#ifdef SHOW_TPS
+        printf(" A %d: -1,%d,0,%d\n",avail,k,na+TRACE_SPACE); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = y+k;
+        ha  = avail++;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip > k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y -= 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k <= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na -= TRACE_SPACE;
+          }
+
+        if (c < besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        NA[k] = na;
+
+        a += 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (low <= aclip)
+        { low = aclip+1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+            }
+        }
+      if (hgh >= bclip)
+        { hgh = bclip-1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+            }
+        }
+      aclip = -INT32_MAX;
+      bclip =  INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nREVERSE WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  while (more && lasta <= besta + TRIM_MLAG)
+    { int    k, n;
+      int    ua;
+      BVEC   t;
+      int    am, ac, ap;
+      char  *a;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move, vd, md, had, nad, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEn))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEn;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _NA = _HA + vlen;
+              _T  = ((BVEC *) (_NA + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          NA = _NA-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low > minp)
+        { low -= 1;
+          NA[low] = NA[low+1];
+          V[low]  = ap = INT32_MAX;
+        }
+      else
+        ap = V[low]; 
+      if (hgh < maxp)
+        { hgh += 1;
+          NA[hgh] = NA[hgh-1];
+          V[hgh] = INT32_MAX;
+        }
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = INT32_MAX;
+      a  = aseq + low;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = -1;
+      for (k = low; k <= hgh; k++)
+        { int     y, m;
+          int     ha;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          am = ac;
+          ac = ap;
+          ap = V[d = k+1];
+
+          if (ac > ap)
+            if (ap > am)
+              { c = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = ap-1;
+                m  = M[d];
+                b  = T[d];
+                ha = HA[d];
+              }
+          else
+            if (ac > am)
+              { c  = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = ac-2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip > k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y -= 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k <= NA[k])
+            { if (cells[ha].mark > NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] -= TRACE_SPACE;
+            }
+
+          if (c < besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+
+          a += 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+            more = 1;
+          if (low <= aclip)
+            { low = aclip+1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                }
+            }
+          if (hgh >= bclip)
+            { hgh = bclip-1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                }
+            }
+          aclip = -INT32_MAX;
+          bclip =  INT32_MAX;
+        }
+
+      n = besta + WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] > n)
+          hgh -= 1;                               
+        else
+          { while (V[low] > n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    int     atlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = cells[h].mark - k;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",b+k,b); fflush(stdout);
+#endif
+    if ((b+k)%TRACE_SPACE != 0)
+      { h = cells[h].ptr;
+        if (h < 0)
+          { a = trimy;
+            d = trimd;
+          }
+        else
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            d = cells[h].diff;
+          }
+#ifdef SHOW_TRAIL
+        printf("    +%4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+        atrace[--atlen] = (uint16) (b-a);
+        atrace[--atlen] = (uint16) (d-e);
+        b = a;
+        e = d;
+      }
+    if (h >= 0)
+      { for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            atrace[--atlen] = (uint16) (b-a);
+            d = cells[h].diff;
+            atrace[--atlen] = (uint16) (d-e);
+#ifdef SHOW_TRAIL
+            printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+            b = a;
+            e = d;
+          }
+        if (b+k != trimx)
+          { atrace[--atlen] = (uint16) (b-trimy);
+            atrace[--atlen] = (uint16) (trimd-e);
+#ifdef SHOW_TRAIL
+            printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+        else if (b != trimy)
+          { atrace[atlen+1] = (uint16) (atrace[atlen+1] + (b-trimy));
+            atrace[atlen]   = (uint16) (atrace[atlen]   + (trimd-e));
+#ifdef SHOW_TRAIL
+            printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+      }
+
+    apath->abpos = trimx;
+    apath->bbpos = trimy;
+    apath->diffs = trimd;
+    apath->tlen  = - atlen;
+    apath->trace = atrace + atlen;
+  }
+
+  return (0);
+}
+
+
+/* Find the longest local alignment between aseq and bseq through (xcnt,ycnt)
+   See associated .h file for the precise definition of the interface.
+*/
+
+int Find_Extension(Alignment *align, Work_Data *ework, Align_Spec *espec,
+                   int diag, int anti, int lbord, int hbord, int prefix)
+{ _Work_Data  *work = ( _Work_Data *) ework;
+  _Align_Spec *spec = (_Align_Spec *) espec;
+
+  Path *apath;
+  int   minp, maxp;
+
+  { int alen, blen;
+    int maxtp, wsize;
+
+    alen = align->alen;
+    blen = align->blen;
+
+    wsize = VectorEn*10000;
+    if (wsize >= work->vecmax)
+      if (enlarge_vector(work,wsize))
+        EXIT(1);
+
+    if (alen < blen)
+      maxtp = 2*(blen/spec->trace_space+2);
+    else
+      maxtp = 2*(alen/spec->trace_space+2);
+    wsize = 2*maxtp*sizeof(uint16);
+    if (wsize > work->pntmax)
+      if (enlarge_points(work,wsize))
+        EXIT(1);
+
+    apath = align->path;
+    apath->trace = ((uint16 *) work->points) + maxtp;
+  }
+
+#ifdef DEBUG_PASSES
+  printf("\n");
+#endif
+
+  if (lbord < 0)
+    minp = -INT32_MAX;
+  else
+    minp = diag-lbord;
+  if (hbord < 0)
+    maxp = INT32_MAX;
+  else
+    maxp = diag+hbord;
+
+  if (prefix)
+    { if (reverse_extend(work,spec,align,diag,anti,minp,maxp))
+        EXIT(1);
+      apath->aepos = (anti-diag)/2;
+      apath->bepos = (anti+diag)/2;
+#ifdef DEBUG_PASSES
+      printf("E1 (%d,%d) => (%d,%d) %d\n",
+             (anti+diag)/2,(anti-diag)/2,apath->abpos,apath->bbpos,apath->diffs);
+#endif
+    }
+  else
+    { if (forward_extend(work,spec,align,diag,anti,minp,maxp))
+        EXIT(1);
+      apath->abpos = (anti-diag)/2;
+      apath->bbpos = (anti+diag)/2;
+#ifdef DEBUG_PASSES
+      printf("F1 (%d,%d) => (%d,%d) %d\n",
+             (anti+diag)/2,(anti-diag)/2,apath->aepos,apath->bepos,apath->diffs);
+#endif
+     }
+
+#ifdef DEBUG_POINTS
+  { uint16 *trace = (uint16 *) apath->trace;
+    int     a, h;
+
+    printf("\nA-path (%d,%d)->(%d,%d)",apath->abpos,apath->bbpos,apath->aepos,apath->bepos);
+    printf(" %c\n",(COMP(align->flags) ? 'c' : 'n'));
+    a = apath->bbpos;
+    for (h = 1; h < apath->tlen; h += 2)
+      { int dif = trace[h-1];
+        int del = trace[h];
+        a += del;
+        printf("      %d / %d (%d)\n",dif,del,a);
+      }
+  }
+#endif
+
+  return (0);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  OVERLAP MANIPULATION                                                                  *
+*                                                                                        *
+\****************************************************************************************/
+
+static int64 PtrSize   = sizeof(void *);
+static int64 OvlIOSize = sizeof(Overlap) - sizeof(void *);
+
+int Read_Overlap(FILE *input, Overlap *ovl)
+{ if (fread( ((char *) ovl) + PtrSize, OvlIOSize, 1, input) != 1)
+    return (1);
+  return (0);
+}
+
+int Read_Trace(FILE *input, Overlap *ovl, int tbytes)
+{ if (tbytes > 0 && ovl->path.tlen > 0)
+    { if (fread(ovl->path.trace, tbytes*ovl->path.tlen, 1, input) != 1)
+        return (1);
+    }
+  return (0);
+}
+
+void Write_Overlap(FILE *output, Overlap *ovl, int tbytes)
+{ fwrite( ((char *) ovl) + PtrSize, OvlIOSize, 1, output);
+  if (ovl->path.trace != NULL)
+    fwrite(ovl->path.trace,tbytes,ovl->path.tlen,output);
+}
+
+void Compress_TraceTo8(Overlap *ovl)
+{ uint16 *t16 = (uint16 *) ovl->path.trace;
+  uint8  *t8  = (uint8  *) ovl->path.trace;
+  int     j;
+
+  for (j = 0; j < ovl->path.tlen; j++)
+    t8[j] = (uint8) (t16[j]);
+}
+
+void Decompress_TraceTo16(Overlap *ovl)
+{ uint16 *t16 = (uint16 *) ovl->path.trace;
+  uint8  *t8  = (uint8  *) ovl->path.trace;
+  int     j;
+
+  for (j = ovl->path.tlen-1; j >= 0; j--)
+    t16[j] = t8[j];
+}
+
+void Print_Overlap(FILE *output, Overlap *ovl, int tbytes, int indent)
+{ int     i;
+
+  fprintf(output,"%*s%d vs. ",indent,"",ovl->aread);
+  if (COMP(ovl->flags))
+    fprintf(output,"c(%d)\n",ovl->bread);
+  else
+    fprintf(output,"%d\n",ovl->bread);
+  fprintf(output,"%*s  [%d,%d] vs [%d,%d] w. %d diffs\n",indent,"",
+                 ovl->path.abpos,ovl->path.aepos,ovl->path.bbpos,ovl->path.bepos,ovl->path.diffs);
+
+  if (tbytes == 1)
+    { uint8 *trace = (uint8 *) (ovl->path.trace);
+      if (trace != NULL)
+        { int p = ovl->path.bbpos + trace[1];
+          fprintf(output,"%*sTrace: %3d/%5d",indent,"",trace[0],p);
+          for (i = 3; i < ovl->path.tlen; i += 2)
+            { if (i%10 == 0)
+                fprintf(output,"\n%*s",indent+6,"");
+              p += trace[i];
+              fprintf(output," %3d/%5d",trace[i-1],p);
+            }
+          fprintf(output,"\n");
+        }
+    }
+  else
+    { uint16 *trace = (uint16 *) (ovl->path.trace);
+      if (trace != NULL)
+        { int p = ovl->path.bbpos + trace[1];
+          fprintf(output,"%*sTrace: %3d/%5d",indent,"",trace[0],p);
+          for (i = 3; i < ovl->path.tlen; i += 2)
+            { if (i%10 == 0)
+                fprintf(output,"\n%*s",indent+6,"");
+              p += trace[i];
+              fprintf(output," %3d/%5d",trace[i-1],p);
+            }
+          fprintf(output,"\n");
+        }
+    }
+}
+
+int Check_Trace_Points(Overlap *ovl, int tspace, int verbose, char *fname)
+{ int     i, p; 
+
+  if (((ovl->path.aepos-1)/tspace - ovl->path.abpos/tspace)*2 != ovl->path.tlen-2)
+    { if (verbose) 
+        EPRINTF(EPLACE,"  %s: Wrong number of trace points\n",fname);
+      return (1);
+    }         
+  p = ovl->path.bbpos;
+  if (tspace <= TRACE_XOVR)
+    { uint8 *trace8 = (uint8 *) ovl->path.trace;
+      for (i = 1; i < ovl->path.tlen; i += 2)
+        p += trace8[i];
+    }
+  else      
+    { uint16 *trace16 = (uint16 *) ovl->path.trace;
+      for (i = 1; i < ovl->path.tlen; i += 2)
+        p += trace16[i];
+    }
+  if (p != ovl->path.bepos)
+    { if (verbose)
+        EPRINTF(EPLACE,"  %s: Trace point sum != aligned interval\n",fname);
+      return (1); 
+    }         
+  return (0);
+}
+
+
+void Flip_Alignment(Alignment *align, int full)
+{ char *aseq  = align->aseq;
+  char *bseq  = align->bseq;
+  int   alen  = align->alen;
+  int   blen  = align->blen;
+  Path *path  = align->path;
+  int   comp  = COMP(align->flags);
+
+  int  *trace = (int *) path->trace;
+  int   tlen  = path->tlen;
+
+  int   i, j, p;
+
+  if (comp)
+    { p = path->abpos;
+      path->abpos = blen - path->bepos;
+      path->bepos = alen - p;
+      p = path->aepos;
+      path->aepos = blen - path->bbpos;
+      path->bbpos = alen - p;
+
+      if (full)
+        { alen += 2;
+          blen += 2;
+
+          for (i = 0; i < tlen; i++)
+            if ((p = trace[i]) < 0)
+              trace[i] = alen + p;
+            else
+              trace[i] = p - blen;
+
+          i = tlen-1;
+          j = 0;
+          while (j < i)
+            { p = trace[i];
+              trace[i] = trace[j];
+              trace[j] = p;
+              i -= 1;
+              j += 1;
+            }
+
+          alen -= 2;
+          blen -= 2;
+        }
+    }
+  else
+    { p = path->abpos;
+      path->abpos = path->bbpos;
+      path->bbpos = p;
+      p = path->aepos;
+      path->aepos = path->bepos;
+      path->bepos = p;
+
+      if (full)
+        for (i = 0; i < tlen; i++)
+          trace[i] = - (trace[i]);
+    }
+
+  align->aseq  = bseq;
+  align->bseq  = aseq;
+  align->alen  = blen;
+  align->blen  = alen;
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  ALIGNMENT PRINTING                                                                    *
+*                                                                                        *
+\****************************************************************************************/
+
+/* Complement the sequence in fragment aseq.  The operation does the
+   complementation/reversal in place.  Calling it a second time on a
+   given fragment restores it to its original state.                */
+
+void Complement_Seq(char *aseq, int len)
+{ char *s, *t;
+  int   c;
+
+  s = aseq;
+  t = aseq + (len-1);
+  while (s < t)
+    { c    = 3 - *s;
+      *s++ = (char) (3 - *t);
+      *t-- = (char) c;
+    }
+  if (s == t)
+    *s = (char) (3 - *s);
+}
+
+
+/* Print an alignment to file between a and b given in trace (unpacked).
+   Prefix gives the length of the initial prefix of a that is unaligned.  */
+
+static char ToL[8] = { 'a', 'c', 'g', 't', '.', '[', ']', '-' };
+static char ToU[8] = { 'A', 'C', 'G', 'T', '.', '[', ']', '-' };
+
+int Print_Alignment(FILE *file, Alignment *align, Work_Data *ework,
+                    int indent, int width, int border, int upper, int coord)
+{ _Work_Data *work  = (_Work_Data *) ework;
+  int        *trace = align->path->trace;
+  int         tlen  = align->path->tlen;
+
+  char *Abuf, *Bbuf, *Dbuf;
+  int   i, j, o;
+  char *a, *b;
+  char  mtag, dtag;
+  int   prefa, prefb;
+  int   aend, bend;
+  int   comp, blen;
+  int   sa, sb;
+  int   match, diff;
+  char *N2A;
+
+  if (trace == NULL) return (0);
+
+#ifdef SHOW_TRACE
+  fprintf(file,"\nTrace:\n");
+  for (i = 0; i < tlen; i++)
+    fprintf(file,"  %3d\n",trace[i]);
+#endif
+
+  o = sizeof(char)*3*(width+1);
+  if (o > work->vecmax)
+    if (enlarge_vector(work,o))
+      EXIT(1);
+
+  if (upper)
+    N2A = ToU;
+  else
+    N2A = ToL;
+
+  Abuf = (char *) work->vector;
+  Bbuf = Abuf + (width+1);
+  Dbuf = Bbuf + (width+1);
+
+  aend = align->path->aepos;
+  bend = align->path->bepos;
+
+  comp = COMP(align->flags);
+  blen = align->blen;
+
+  Abuf[width] = Bbuf[width] = Dbuf[width] = '\0';
+                                           /* buffer/output next column */
+#define COLUMN(x,y)							\
+{ int u, v;								\
+  if (o >= width)							\
+    { fprintf(file,"\n");						\
+      fprintf(file,"%*s",indent,"");					\
+      if (coord > 0)							\
+        { if (sa < aend)						\
+            fprintf(file," %*d",coord,sa);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %s\n",Abuf);					\
+          fprintf(file,"%*s %*s %s\n",indent,"",coord,"",Dbuf);		\
+          fprintf(file,"%*s",indent,"");				\
+          if (sb < bend)						\
+            if (comp)							\
+              fprintf(file," %*d",coord,blen-sb);			\
+            else							\
+              fprintf(file," %*d",coord,sb);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %s",Bbuf);					\
+        }								\
+      else								\
+        { fprintf(file," %s\n",Abuf);					\
+          fprintf(file,"%*s %s\n",indent,"",Dbuf);			\
+          fprintf(file,"%*s %s",indent,"",Bbuf);			\
+        }								\
+      fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));		\
+      o  = 0;								\
+      sa = i-1;								\
+      sb = j-1;								\
+      match = diff = 0;							\
+    }									\
+  u = (x);								\
+  v = (y);								\
+  if (u == 4 || v == 4)							\
+    Dbuf[o] = ' ';							\
+  else if (u == v)							\
+    Dbuf[o] = mtag;							\
+  else									\
+    Dbuf[o] = dtag;							\
+  Abuf[o] = N2A[u];							\
+  Bbuf[o] = N2A[v];							\
+  o += 1;								\
+}
+
+  a = align->aseq - 1;
+  b = align->bseq - 1;
+
+  o  = 0;
+  i = j = 1;
+
+  prefa = align->path->abpos;
+  prefb = align->path->bbpos;
+
+  if (prefa > border)
+    { i = prefa-(border-1);
+      prefa = border;
+    }
+  if (prefb > border)
+    { j = prefb-(border-1);
+      prefb = border;
+    }
+
+  sa   = i-1;
+  sb   = j-1;
+  mtag = ':';
+  dtag = ':';
+
+  while (prefa > prefb)
+    { COLUMN(a[i],4)
+      i += 1;
+      prefa -= 1;
+    }
+  while (prefb > prefa)
+    { COLUMN(4,b[j])
+      j += 1;
+      prefb -= 1;
+    }
+  while (prefa > 0)
+    { COLUMN(a[i],b[j])
+      i += 1;
+      j += 1;
+      prefa -= 1;
+    }
+
+  mtag = '[';
+  if (prefb > 0)
+    COLUMN(5,5)
+
+  mtag  = '|';
+  dtag  = '*';
+
+  match = diff = 0;
+
+  { int p, c;      /* Output columns of alignment til reach trace end */
+
+    for (c = 0; c < tlen; c++)
+      if ((p = trace[c]) < 0)
+        { p = -p;
+          while (i != p)
+            { COLUMN(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          COLUMN(7,b[j])
+          j += 1;
+          diff += 1;
+        }
+      else
+        { while (j != p)
+            { COLUMN(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          COLUMN(a[i],7)
+          i += 1;
+          diff += 1;
+        }
+    p = align->path->aepos;
+    while (i <= p)
+      { COLUMN(a[i],b[j])
+        if (a[i] == b[j])
+          match += 1;
+        else
+          diff += 1;
+        i += 1;
+        j += 1;
+      }
+  }
+
+  { int c;     /* Output remaining column including unaligned suffix */
+
+    mtag = ']';
+    if (a[i] != 4 && b[j] != 4 && border > 0)
+      COLUMN(6,6)
+
+    mtag = ':';
+    dtag = ':';
+
+    c = 0;
+    while (c < border && (a[i] != 4 || b[j] != 4))
+      { if (a[i] != 4)
+          if (b[j] != 4)
+            { COLUMN(a[i],b[j])
+              i += 1;
+              j += 1;
+            }
+          else
+            { COLUMN(a[i],4)
+              i += 1;
+            }
+        else
+          { COLUMN(4,b[j])
+            j += 1;
+          }
+        c += 1;
+      }
+  }
+
+  /* Print remainder of buffered col.s */
+
+  fprintf(file,"\n");
+  fprintf(file,"%*s",indent,"");
+  if (coord > 0)
+    { if (sa < aend)
+        fprintf(file," %*d",coord,sa);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %*s %.*s\n",indent,"",coord,"",o,Dbuf);
+      fprintf(file,"%*s",indent,"");
+      if (sb < bend)
+        if (comp)
+          fprintf(file," %*d",coord,blen-sb);
+        else
+          fprintf(file," %*d",coord,sb);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s",o,Bbuf);
+    }
+  else
+    { fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %.*s\n",indent,"",o,Dbuf);
+      fprintf(file,"%*s %.*s",indent,"",o,Bbuf);
+    }
+  if (diff+match > 0)
+    fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));
+  else
+    fprintf(file,"\n");
+
+  fflush(file);
+  return (0);
+}
+
+int Print_Reference(FILE *file, Alignment *align, Work_Data *ework,
+                    int indent, int block, int border, int upper, int coord)
+{ _Work_Data *work  = (_Work_Data *) ework;
+  int        *trace = align->path->trace;
+  int         tlen  = align->path->tlen;
+
+  char *Abuf, *Bbuf, *Dbuf;
+  int   i, j, o;
+  char *a, *b;
+  char  mtag, dtag;
+  int   prefa, prefb;
+  int   aend, bend;
+  int   comp, blen;
+  int   sa, sb, s0;
+  int   match, diff;
+  char *N2A;
+  int   vmax;
+
+  if (trace == NULL) return (0);
+
+#ifdef SHOW_TRACE
+  fprintf(file,"\nTrace:\n");
+  for (i = 0; i < tlen; i++)
+    fprintf(file,"  %3d\n",trace[i]);
+#endif
+
+  vmax = work->vecmax/3;
+  o = sizeof(char)*6*(block+1);
+  if (o > vmax)
+    { if (enlarge_vector(work,3*o))
+        EXIT(1);
+      vmax = work->vecmax/3;
+    }
+
+  Abuf = (char *) work->vector;
+  Bbuf = Abuf + vmax;
+  Dbuf = Bbuf + vmax;
+
+  if (upper)
+    N2A = ToU;
+  else
+    N2A = ToL;
+
+  aend = align->path->aepos;
+  bend = align->path->bepos;
+
+  comp = COMP(align->flags);
+  blen = align->blen;
+
+#define BLOCK(x,y)							\
+{ int u, v;								\
+  if (i%block == 1 && i != s0 && x < 4 && o > 0)			\
+    { fprintf(file,"\n");						\
+      fprintf(file,"%*s",indent,"");					\
+      if (coord > 0)							\
+        { if (sa < aend)						\
+            fprintf(file," %*d",coord,sa);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %.*s\n",o,Abuf);				\
+          fprintf(file,"%*s %*s %.*s\n",indent,"",coord,"",o,Dbuf);	\
+          fprintf(file,"%*s",indent,"");				\
+          if (sb < bend)						\
+            if (comp)							\
+              fprintf(file," %*d",coord,blen-sb);			\
+            else							\
+              fprintf(file," %*d",coord,sb);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %.*s",o,Bbuf);					\
+        }								\
+      else								\
+        { fprintf(file," %.*s\n",o,Abuf);				\
+          fprintf(file,"%*s %.*s\n",indent,"",o,Dbuf);			\
+          fprintf(file,"%*s %.*s",indent,"",o,Bbuf);			\
+        }								\
+      fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));		\
+      o  = 0;								\
+      sa = i-1;								\
+      sb = j-1;								\
+      match = diff = 0;							\
+    }									\
+  u = (x);								\
+  v = (y);								\
+  if (u == 4 || v == 4)							\
+    Dbuf[o] = ' ';							\
+  else if (u == v)							\
+    Dbuf[o] = mtag;							\
+  else									\
+    Dbuf[o] = dtag;							\
+  Abuf[o] = N2A[u];							\
+  Bbuf[o] = N2A[v];							\
+  o += 1;								\
+  if (o >= vmax)							\
+    { if (enlarge_vector(work,3*o))					\
+        EXIT(1);							\
+      vmax = work->vecmax/3;						\
+      memmove(work->vector+2*vmax,Dbuf,o);				\
+      memmove(work->vector+vmax,Bbuf,o);				\
+      memmove(work->vector,Abuf,o);					\
+      Abuf = (char *) work->vector;					\
+      Bbuf = Abuf + vmax;						\
+      Dbuf = Bbuf + vmax;						\
+    }									\
+}
+
+  a = align->aseq - 1;
+  b = align->bseq - 1;
+
+  o  = 0;
+  i = j = 1;
+
+  prefa = align->path->abpos;
+  prefb = align->path->bbpos;
+
+  if (prefa > border)
+    { i = prefa-(border-1);
+      prefa = border;
+    }
+  if (prefb > border)
+    { j = prefb-(border-1);
+      prefb = border;
+    }
+
+  s0   = i;
+  sa   = i-1;
+  sb   = j-1;
+  mtag = ':';
+  dtag = ':';
+
+  while (prefa > prefb)
+    { BLOCK(a[i],4)
+      i += 1;
+      prefa -= 1;
+    }
+  while (prefb > prefa)
+    { BLOCK(4,b[j])
+      j += 1;
+      prefb -= 1;
+    }
+  while (prefa > 0)
+    { BLOCK(a[i],b[j])
+      i += 1;
+      j += 1;
+      prefa -= 1;
+    }
+
+  mtag = '[';
+  if (prefb > 0)
+    BLOCK(5,5)
+
+  mtag  = '|';
+  dtag  = '*';
+
+  match = diff = 0;
+
+  { int p, c;      /* Output columns of alignment til reach trace end */
+
+    for (c = 0; c < tlen; c++)
+      if ((p = trace[c]) < 0)
+        { p = -p;
+          while (i != p)
+            { BLOCK(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          BLOCK(7,b[j])
+          j += 1;
+          diff += 1;
+        }
+      else
+        { while (j != p)
+            { BLOCK(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          BLOCK(a[i],7)
+          i += 1;
+          diff += 1;
+        }
+    p = align->path->aepos;
+    while (i <= p)
+      { BLOCK(a[i],b[j])
+        if (a[i] == b[j])
+		match += 1;
+	else
+          diff += 1;
+        i += 1;
+        j += 1;
+      }
+  }
+
+  { int c;     /* Output remaining column including unaligned suffix */
+
+    mtag = ']';
+    if (a[i] != 4 && b[j] != 4 && border > 0)
+      BLOCK(6,6)
+
+    mtag = ':';
+    dtag = ':';
+
+    c = 0;
+    while (c < border && (a[i] != 4 || b[j] != 4))
+      { if (a[i] != 4)
+          if (b[j] != 4)
+            { BLOCK(a[i],b[j])
+              i += 1;
+              j += 1;
+            }
+          else
+            { BLOCK(a[i],4)
+              i += 1;
+            }
+        else
+          { BLOCK(4,b[j])
+            j += 1;
+          }
+        c += 1;
+      }
+  }
+
+  /* Print remainder of buffered col.s */
+
+  fprintf(file,"\n");
+  fprintf(file,"%*s",indent,"");
+  if (coord > 0)
+    { if (sa < aend)
+        fprintf(file," %*d",coord,sa);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %*s %.*s\n",indent,"",coord,"",o,Dbuf);
+      fprintf(file,"%*s",indent,"");
+      if (sb < bend)
+        if (comp)
+          fprintf(file," %*d",coord,blen-sb);
+        else
+          fprintf(file," %*d",coord,sb);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s",o,Bbuf);
+    }
+  else
+    { fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %.*s\n",indent,"",o,Dbuf);
+      fprintf(file,"%*s %.*s",indent,"",o,Bbuf);
+    }
+  if (diff+match > 0)
+    fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));
+  else
+    fprintf(file,"\n");
+
+  fflush(file);
+  return (0);
+}
+
+/* Print an ASCII representation of the overlap in align between fragments
+   a and b to given file.                                                  */
+
+static inline void repchar(FILE *file, int symbol, int rep)
+{ while (rep-- > 0)
+    fputc(symbol,file);
+}
+
+void Alignment_Cartoon(FILE *file, Alignment *align, int indent, int coord)
+{ int   alen = align->alen;
+  int   blen = align->blen;
+  Path *path = align->path;
+  int   comp = COMP(align->flags);
+  int   w;
+
+  fprintf(file,"%*s",indent,"");
+  if (path->abpos > 0)
+    fprintf(file,"    %*d ",coord,path->abpos);
+  else
+    fprintf(file,"%*s",coord+5,"");
+  if (path->aepos < alen)
+    fprintf(file,"%*s%d",coord+8,"",alen-path->aepos);
+  fprintf(file,"\n");
+
+  fprintf(file,"%*s",indent,"");
+  if (path->abpos > 0)
+    { fprintf(file,"A ");
+      w = Number_Digits((int64) path->abpos);
+      repchar(file,' ',coord-w);
+      repchar(file,'=',w+3);
+      fputc('+',file);
+      repchar(file,'-',coord+5);
+    }
+  else
+    { fprintf(file,"A %*s",coord+4,"");
+      repchar(file,'-',coord+5);
+    }
+
+  if (path->aepos < alen)
+    { fputc('+',file);
+      w = Number_Digits((int64) (alen-path->aepos));
+      repchar(file,'=',w+2);
+      fputc('>',file);
+      repchar(file,' ',w);
+    }
+  else
+    { fputc('>',file);
+      repchar(file,' ',coord+3);
+    }
+
+  { int asub, bsub;
+
+    asub = path->aepos - path->abpos;
+    bsub = path->bepos - path->bbpos;
+    fprintf(file,"   dif/(len1+len2) = %d/(%d+%d) = %5.2f%%\n",
+                 path->diffs,asub,bsub,(200.*path->diffs)/(asub+bsub));
+  }
+
+  { int   sym1e, sym2e;
+    int   sym1p, sym2p;
+
+    if (comp > 0)
+      { sym1p = '<'; sym2p = '-'; sym1e = '<'; sym2e = '='; }
+    else
+      { sym1p = '-'; sym2p = '>'; sym1e = '='; sym2e = '>'; }
+
+    fprintf(file,"%*s",indent,"");
+    if (path->bbpos > 0)
+      { fprintf(file,"B ");
+        w = Number_Digits((int64) path->bbpos);
+        repchar(file,' ',coord-w);
+        fputc(sym1e,file);
+        repchar(file,'=',w+2);
+        fputc('+',file);
+        repchar(file,'-',coord+5);
+      }
+    else
+      { fprintf(file,"B ");
+        repchar(file,' ',coord+3);
+        fputc(sym1p,file);
+        repchar(file,'-',coord+5);
+      }
+    if (path->bepos < blen)
+      { fprintf(file,"+");
+        w = Number_Digits((int64) (blen-path->bepos));
+        repchar(file,'=',w+2);
+        fprintf(file,"%c\n",sym2e);
+      }
+    else
+      fprintf(file,"%c\n",sym2p);
+  }
+
+  fprintf(file,"%*s",indent,"");
+  if (path->bbpos > 0)
+    fprintf(file,"    %*d ",coord,path->bbpos);
+  else
+    fprintf(file,"%*s",coord+5,"");
+  if (path->bepos < blen)
+    fprintf(file,"%*s%d",coord+8,"",blen-path->bepos);
+  fprintf(file,"\n");
+
+  fflush(file);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  O(ND) trace algorithm                                                                 *
+*                                                                                        *
+\****************************************************************************************/
+
+
+#ifdef DEBUG_AWAVE
+
+static void print_awave(int *V, int low, int hgh)
+{ int k;
+
+  printf("  [%6d,%6d]: ",low,hgh);
+  for (k = low; k <= hgh; k++)
+    printf(" %3d",V[k]);
+  printf("\n");
+  fflush(stdout);
+}
+
+#endif
+
+#ifdef DEBUG_ALIGN
+
+static int depth = 0;
+
+#endif
+
+typedef struct
+  { int  *Stop;          //  Ongoing stack of alignment indels
+    char *Aabs, *Babs;   //  Absolute base of A and B sequences
+
+    int  **PVF, **PHF;   //  List of waves for iterative np algorithms
+    int   mida,  midb;   //  mid point division for mid-point algorithms
+
+    int   *VF,   *VB;    //  Forward/Reverse waves for nd algorithms
+                         //  (defunct: were used for O(nd) algorithms)
+  } Trace_Waves;
+
+static int dandc_nd(char *A, int M, char *B, int N, Trace_Waves *wave)
+{ int x, y;
+  int D;
+
+#ifdef DEBUG_ALIGN
+  printf("%*s %ld,%ld: %d vs %d\n",depth,"",A-wave->Aabs,B-wave->Babs,M,N);
+#endif
+
+  if (M <= 0)
+    { x = (wave->Aabs-A)-1;
+      for (y = 1; y <= N; y++)
+        { *wave->Stop++ = x;
+#ifdef DEBUG_SCRIPT
+          printf("%*s *I %ld(%ld)\n",depth,"",y+(B-wave->Babs),(A-wave->Aabs)+1);
+#endif
+        }
+      return (N);
+    }
+  if (N <= 0)
+    { y = (B-wave->Babs)+1;
+      for (x = 1; x <= M; x++)
+        { *wave->Stop++ = y;
+#ifdef DEBUG_SCRIPT
+          printf("%*s *D %ld(%ld)\n",depth,"",x+(A-wave->Aabs),(B-wave->Babs)+1);
+#endif
+        }
+      return (M);
+    }
+
+  { int  *VF = wave->VF;
+    int  *VB = wave->VB;
+    int   flow;  //  fhgh == D !
+    int   blow, bhgh;
+    char *a;
+
+    y = 0;
+    if (N < M)
+      while (y < N && B[y] == A[y])
+        y += 1;
+    else
+      { while (y < M && B[y] == A[y])
+          y += 1;
+        if (y >= M && N == M)
+          return (0);
+      }
+
+    flow   = 0;
+    VF[0]  = y;
+    VF[-1] = -2;
+
+    x = N-M;
+    a = A-x;
+    y = N-1;
+    if (N > M)
+      while (y >= x && B[y] == a[y])
+        y -= 1;
+    else
+      while (y >= 0 && B[y] == a[y])
+        y -= 1;
+
+    blow = bhgh = -x;
+    VB += x;
+    VB[blow]   = y;
+    VB[blow-1] = N+1;
+
+    for (D = 1; 1; D += 1)
+      { int   k, r;
+        int   am, ac, ap;
+
+        //  Forward wave
+
+        flow -= 1;
+        am = ac = VF[flow-1] = -2;
+
+        a = A + D;
+        x = M - D;
+        for (k = D; k >= flow; k--)
+          { ap = ac;
+            ac = am+1;
+            am = VF[k-1];
+
+            if (ac < am)
+              if (ap < am)
+                y  = am;
+              else
+                y = ap;
+            else
+              if (ap < ac)
+                y = ac;
+              else
+                y = ap;
+
+            if (blow <= k && k <= bhgh)
+              { r = VB[k];
+                if (y > r)
+                  { D = (D<<1)-1;
+                    if (ap > r)
+                      y = ap;
+                    else if (ac > r)
+                      y = ac;
+                    else
+                      y = r+1;
+                    x = k+y;
+                    goto OVERLAP2;
+                  }
+              }
+
+            if (N < x)
+              while (y < N && B[y] == a[y])
+                y += 1;
+            else
+              while (y < x && B[y] == a[y])
+                y += 1;
+            
+            VF[k] = y;
+            a -= 1;
+            x += 1;
+          }
+
+#ifdef DEBUG_AWAVE
+        print_awave(VF,flow,D);
+#endif
+
+        //  Reverse Wave
+
+        bhgh += 1;
+        blow -= 1;
+	am = ac = VB[blow-1] = N+1;
+
+        a = A + bhgh;
+        x = -bhgh;
+        for (k = bhgh; k >= blow; k--)
+          { ap = ac+1;
+            ac = am;
+            am = VB[k-1];
+
+            if (ac > am)
+              if (ap > am)
+                y  = am;
+              else
+                y = ap;
+            else
+              if (ap > ac)
+                y = ac;
+              else
+                y = ap;
+
+            if (flow <= k && k <= D)
+              { r = VF[k];
+	        if (y <= r)
+                  { D = (D << 1);
+                    if (ap <= r)
+                      y = ap;
+                    else if (ac <= r)
+                      y = ac;
+                    else
+                      y = r;
+                    x = k+y;
+                    goto OVERLAP2;
+                  }
+              }
+
+            y -= 1;
+            if (x > 0)
+              while (y >= x && B[y] == a[y])
+                y -= 1;
+            else
+              while (y >= 0 && B[y] == a[y])
+                y -= 1;
+
+            VB[k] = y;
+            a -= 1;
+            x += 1;
+          }
+
+#ifdef DEBUG_AWAVE
+        print_awave(VB,blow,bhgh);
+#endif
+      }
+  }
+
+OVERLAP2:
+
+#ifdef DEBUG_ALIGN
+  printf("%*s (%d,%d) @ %d\n",depth,"",x,y,D);
+  fflush(stdout);
+#endif
+  if (D > 1)
+    { 
+#ifdef DEBUG_ALIGN
+      depth += 2;
+#endif
+      dandc_nd(A,x,B,y,wave);
+      dandc_nd(A+x,M-x,B+y,N-y,wave);
+#ifdef DEBUG_ALIGN
+      depth -= 2;
+#endif
+    }
+  else if (D == 1)
+    { if (M > N)
+        { *wave->Stop++ = (B-wave->Babs)+y+1;
+#ifdef DEBUG_SCRIPT
+          printf("%*s  D %ld(%ld)\n",depth,"",(A-wave->Aabs)+x,(B-wave->Babs)+y+1);
+#endif
+        }
+      else if (M < N)
+        { *wave->Stop++ = (wave->Aabs-A)-x-1;
+#ifdef DEBUG_SCRIPT
+          printf("%*s  I %ld(%ld)\n",depth,"",(B-wave->Babs)+y,(A-wave->Aabs)+x+1);
+#endif
+        }
+#ifdef DEBUG_SCRIPT
+      else
+        printf("%*s  %ld S %ld\n",depth,"",(wave->Aabs-A)+x,(B-wave->Babs)+y);
+#endif
+    }
+
+  return (D);
+}
+
+
+static int Compute_Trace_ND_ALL(Alignment *align, Work_Data *ework)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  int   L, D;
+  int   asub, bsub;
+  Path *path;
+  int  *trace;
+
+  path = align->path;
+  asub = path->aepos-path->abpos;
+  bsub = path->bepos-path->bbpos;
+
+  if (asub < bsub)
+    L = bsub;
+  else
+    L = asub;
+  L *= sizeof(int);
+  if (L > work->tramax)
+    if (enlarge_trace(work,L))
+      EXIT(1);
+
+  trace = wave.Stop = ((int *) work->trace);
+
+  D = 2*(path->diffs + 4)*sizeof(int);
+  if (D > work->vecmax)
+    if (enlarge_vector(work,D))
+      EXIT(1);
+  
+  D = (path->diffs+3)/2;
+  wave.VF = ((int *) work->vector) + (D+1);
+  wave.VB = wave.VF + (2*D+1);
+
+  wave.Aabs = align->aseq;
+  wave.Babs = align->bseq;
+
+  path->diffs = dandc_nd(align->aseq+path->abpos,path->aepos-path->abpos,
+                         align->bseq+path->bbpos,path->bepos-path->bbpos,&wave);
+  path->trace = trace;
+  path->tlen  = wave.Stop - trace;
+  return (0);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  O(NP) tracing algorithms                                                              *
+*                                                                                        *
+\****************************************************************************************/
+
+/* Iterative O(np) algorithm for finding the alignment between two substrings (specified
+     by a Path record).  The variation includes handling substitutions and guarantees
+     to find left-most alignments so that low complexity runs are always aligned in
+     the same way.
+*/
+
+#ifdef DEBUG_ALIGN
+
+static int ToA[4] = { 'a', 'c', 'g', 't' };
+
+#endif
+
+static int iter_np(char *A, int M, char *B, int N, Trace_Waves *wave, int mode)
+{ int  **PVF = wave->PVF; 
+  int  **PHF = wave->PHF;
+  int    D;
+  int    del = M-N;
+
+  { int  *F0, *F1, *F2;
+    int  *HF;
+    int   low, hgh;
+    int   posl, posh;
+
+#ifdef DEBUG_ALIGN
+    printf("\n    BASE %ld,%ld: %d vs %d\n",A-wave->Aabs,B-wave->Babs,M,N);
+    printf("    A = ");
+    for (D = 0; D < M; D++)
+      printf("%c",ToA[(int) A[D]]);
+    printf("\n");
+    printf("    B = ");
+    for (D = 0; D < N; D++)
+      printf("%c",ToA[(int) B[D]]);
+    printf("\n");
+#endif
+
+    if (del >= 0)
+      { low = 0;
+        hgh = del;
+      }
+    else
+      { low = del;
+        hgh = 0;
+      }
+
+    posl = -INT32_MAX;
+    posh =  INT32_MAX;
+    if (wave->Aabs == wave->Babs)
+      { if (B == A)
+          { EPRINTF(EPLACE,"Error: self comparison starts on diagonal 0 (Compute_Trace)\n");
+            EXIT(-1);
+          }
+        else if (B < A)
+          posl = (B-A)+1;
+        else
+          posh = (B-A)-1;
+      }
+
+    F1 = PVF[-2];
+    F0 = PVF[-1];
+
+    for (D = low-1; D <= hgh+1; D++)
+      F1[D] = F0[D] = -2;
+    F0[0] = -1;
+
+    low += 1;
+    hgh -= 1;
+
+    for (D = 0; 1; D += 1)
+      { int   k, i, j;
+        int   am, ac, ap;
+        char *a;
+
+        F2 = F1;
+        F1 = F0;
+        F0 = PVF[D];
+        HF = PHF[D];
+
+        if ((D & 0x1) == 0)
+          { if (low > posl)
+              low -= 1;
+            if (hgh < posh)
+              hgh += 1;
+          }
+        F0[hgh+1] = F0[low-1] = -2;
+
+#define FS_MOVE(mdir,pdir)			\
+  ac = F1[k]+1;					\
+  if (ac < am)					\
+    if (ap < am)				\
+      { HF[k] = mdir;				\
+        j = am;					\
+      }						\
+    else					\
+      { HF[k] = pdir;				\
+        j = ap;					\
+      }						\
+  else						\
+    if (ap < ac)				\
+      { HF[k] = 0;				\
+        j = ac;					\
+      }						\
+    else					\
+      { HF[k] = pdir;				\
+        j = ap;					\
+      }						\
+						\
+  if (N < i)					\
+    while (j < N && B[j] == a[j])		\
+      j += 1;					\
+  else						\
+    while (j < i && B[j] == a[j])		\
+      j += 1;					\
+  F0[k] = j;
+
+        j = -2;
+        a = A + hgh;
+        i = M - hgh;
+        for (k = hgh; k > del; k--)
+          { ap = j+1;
+            am = F2[k-1];
+            FS_MOVE(-1,4)
+            a -= 1;
+            i += 1;
+          }
+
+        j = -2;
+        a = A + low;
+        i = M - low;
+        for (k = low; k < del; k++)
+          { ap = F2[k+1]+1;
+            am = j;
+            FS_MOVE(2,1)
+            a += 1;
+            i -= 1;
+          }
+
+        ap = F0[del+1]+1;
+        am = j;
+        FS_MOVE(2,4)
+
+#ifdef DEBUG_AWAVE
+        print_awave(F0,low,hgh);
+        print_awave(HF,low,hgh);
+#endif
+
+        if (F0[del] >= N)
+          break;
+      }
+  }
+
+  { int   k, h, m, e, c;
+    int   ap = (wave->Aabs-A)-1;
+    int   bp = (B-wave->Babs)+1;
+
+    PHF[0][0] = 3;
+
+    c = N;
+    k = del;
+    e = PHF[D][k];
+    PHF[D][k] = 3;
+
+    if (mode == UPPERMOST)
+
+      while (e != 3)
+        { h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h < k)       // => e = -1 or 2,  UPPERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] <= c)
+                c = PVF[D][h]-1;
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == -1)  //  => edge is 2, others are 1, and 0
+                { if (c <= PVF[D+2][k+1])
+                    { e = 4;
+                      h = k+1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c <= PVF[m][k+1])
+                    { if (k == del)
+                        e = 4;
+                      else
+                        e = 1;
+                      h = k+1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+            }
+
+          m = PHF[D][h];
+          PHF[D][h] = e;
+          e = m;
+          k = h;
+        }
+
+    else if (mode == LOWERMOST)
+
+      while (e != 3)
+        { h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h > k)       // => e = 1 or 4,   LOWERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] < c)
+                c = PVF[D][h];
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == 1)  //  => edge is 2, others are 1, and 0
+                { if (c < PVF[D+2][k-1])
+                    { e = 2;
+                      h = k-1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c < PVF[m][k-1])
+                    { if (k == del)
+                        e = 2;
+                      else
+                        e = -1;
+                      h = k-1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+            }
+
+          m = PHF[D][h];
+          PHF[D][h] = e;
+          e = m;
+          k = h;
+        }
+
+    else //  mode == GREEDIEST
+
+      while (e != 3)
+        { h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          m = PHF[D][h];
+          PHF[D][h] = e;
+          e = m;
+          k = h;
+        }
+
+    k = D = 0;
+    e = PHF[D][k];
+    while (e != 3)
+      { h = k-e;
+        c = PVF[D][k];
+        if (e > 1)
+          h += 3;
+        else if (e == 0)
+          D += 1;
+        else
+          D += 2;
+#ifdef DEBUG_SCRIPT
+        if (h > k)
+          printf("     D %d(%d)\n",(c-k)-(ap-1),c+bp);
+        else if (h < k)
+          printf("     I %d(%d)\n",c+(bp-1),(c+k)-ap);
+        else
+          printf("     %d S %d\n",(c+k)-(ap+1),c+(bp-1));
+#endif
+        if (h > k)
+          *wave->Stop++ = bp+c;
+        else if (h < k)
+          *wave->Stop++ = ap-(c+k);
+        k = h;
+        e = PHF[D][h];
+      }
+  }
+
+  return (D + abs(del));
+}
+
+static int middle_np(char *A, int M, char *B, int N, Trace_Waves *wave, int mode)
+{ int  **PVF = wave->PVF; 
+  int  **PHF = wave->PHF;
+  int    D;
+  int    del = M-N;
+
+  { int  *F0, *F1, *F2;
+    int  *HF;
+    int   low, hgh;
+    int   posl, posh;
+
+#ifdef DEBUG_ALIGN
+    printf("\n%*s BASE %ld,%ld: %d vs %d\n",depth,"",A-wave->Aabs,B-wave->Babs,M,N);
+    printf("%*s A = ",depth,"");
+    for (D = 0; D < M; D++)
+      printf("%c",ToA[(int) A[D]]);
+    printf("\n");
+    printf("%*s B = ",depth,"");
+    for (D = 0; D < N; D++)
+      printf("%c",ToA[(int) B[D]]);
+    printf("\n");
+#endif
+
+    if (del >= 0)
+      { low = 0;
+        hgh = del;
+      }
+    else
+      { low = del;
+        hgh = 0;
+      }
+
+    posl = -INT32_MAX;
+    posh =  INT32_MAX;
+    if (wave->Aabs == wave->Babs)
+      { if (B == A)
+          { EPRINTF(EPLACE,"Error: self comparison starts on diagonal 0 (Compute_Trace)\n");
+            EXIT(1);
+          }
+        else if (B < A)
+          posl = (B-A)+1;
+        else
+          posh = (B-A)-1;
+      }
+
+    F1 = PVF[-2];
+    F0 = PVF[-1];
+
+    for (D = low-1; D <= hgh+1; D++)
+      F1[D] = F0[D] = -2;
+    F0[0] = -1;
+
+    low += 1;
+    hgh -= 1;
+
+    for (D = 0; 1; D += 1)
+      { int   k, i, j;
+        int   am, ac, ap;
+        char *a;
+
+        F2 = F1;
+        F1 = F0;
+        F0 = PVF[D];
+        HF = PHF[D];
+
+        if ((D & 0x1) == 0)
+          { if (low > posl)
+              low -= 1;
+            if (hgh < posh)
+              hgh += 1;
+          }
+        F0[hgh+1] = F0[low-1] = -2;
+
+        j = -2;
+        a = A + hgh;
+        i = M - hgh;
+        for (k = hgh; k > del; k--)
+          { ap = j+1;
+            am = F2[k-1];
+            FS_MOVE(-1,4)
+            a -= 1;
+            i += 1;
+          }
+
+        j = -2;
+        a = A + low;
+        i = M - low;
+        for (k = low; k < del; k++)
+          { ap = F2[k+1]+1;
+            am = j;
+            FS_MOVE(2,1)
+            a += 1;
+            i -= 1;
+          }
+
+        ap = F0[del+1]+1;
+        am = j;
+        FS_MOVE(2,4)
+
+#ifdef DEBUG_AWAVE
+        print_awave(F0,low,hgh);
+        print_awave(HF,low,hgh);
+#endif
+
+        if (F0[del] >= N)
+          break;
+      }
+  }
+
+  { int   k, h, m, e, c;
+    int   d, f;
+
+    d = D + abs(del);
+    c = N;
+    k = del;
+
+    if (mode == UPPERMOST)
+
+      for (f = d/2; d > f; d--)
+        { e = PHF[D][k];
+          h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h < k)       // => e = -1 or 2,  UPPERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] <= c)
+                c = PVF[D][h]-1;
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == -1)  //  => edge is 2, others are 1, and 0
+                { if (c <= PVF[D+2][k+1])
+                    { e = 4;
+                      h = k+1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c <= PVF[m][k+1])
+                    { if (k == del)
+                        e = 4;
+                      else
+                        e = 1;
+                      h = k+1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+            }
+
+          k = h;
+        }
+
+    else if (mode == LOWERMOST)
+
+      for (f = d/2; d > f; d--)
+        { e = PHF[D][k];
+          h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h > k)       // => e = 1 or 4,   LOWERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] < c)
+                c = PVF[D][h];
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == 1)  //  => edge is 2, others are 1, and 0
+                { if (c < PVF[D+2][k-1])
+                    { e = 2;
+                      h = k-1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c < PVF[m][k-1])
+                    { if (k == del)
+                        e = 2;
+                      else
+                        e = -1;
+                      h = k-1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+            }
+
+          k = h;
+        }
+
+    else //  mode == GREEDIEST
+
+      for (f = d/2; d > f; d--)
+        { e = PHF[D][k];
+          h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+          k = h;
+        }
+
+    wave->midb = (B-wave->Babs) + PVF[D][k];
+    wave->mida = (A-wave->Aabs) + k + PVF[D][k];
+  }
+
+  return (0);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  COMPUTE_TRACE FLAVORS                                                                 *
+*                                                                                        *
+\****************************************************************************************/
+
+int Compute_Trace_ALL(Alignment *align, Work_Data *ework)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path *path;
+  char *aseq, *bseq;
+  int   M, N, D;
+
+  path = align->path;
+  aseq = align->aseq;
+  bseq = align->bseq;
+
+  M = path->aepos-path->abpos;
+  N = path->bepos-path->bbpos;
+  
+  { int64 s;
+    int   d;
+    int   dmax;
+    int   **PVF, **PHF;
+
+    if (M < N)
+      s = N;
+    else
+      s = M;
+    s *= sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    dmax = path->diffs - abs(M-N);
+
+    s = (dmax+3)*2*((M+N+3)*sizeof(int) + sizeof(int *));
+
+    if (s > 256000000)
+      return (Compute_Trace_ND_ALL(align,ework));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = M+N+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (N+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = ((int *) work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  D = iter_np(aseq+path->abpos,M,bseq+path->bbpos,N,&wave,GREEDIEST);
+  if (D < 0)
+    EXIT(1);
+  path->diffs = D;
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+
+  return (0);
+}
+
+int Compute_Trace_PTS(Alignment *align, Work_Data *ework, int trace_spacing, int mode)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path   *path;
+  char   *aseq, *bseq;
+  uint16 *points;
+  int     tlen;
+  int     ab, bb;
+  int     ae, be;
+  int     diffs;
+
+  path   = align->path;
+  aseq   = align->aseq;
+  bseq   = align->bseq;
+  tlen   = path->tlen;
+  points = (uint16 *) path->trace;
+
+  { int64 s;
+    int   d;
+    int   M, N;
+    int   dmax, nmax;
+    int   **PVF, **PHF;
+
+    M = path->aepos-path->abpos;
+    N = path->bepos-path->bbpos;
+    if (M < N)
+      s = N*sizeof(int);
+    else
+      s = M*sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    nmax = 0;
+    dmax = 0;
+    for (d = 1; d < tlen; d += 2)
+      { if (points[d-1] > dmax)
+          dmax = points[d-1];
+        if (points[d] > nmax)
+          nmax = points[d];
+      }
+    if (tlen <= 1)
+      nmax = N;
+
+    s = (dmax+3)*2*((trace_spacing+nmax+3)*sizeof(int) + sizeof(int *));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = trace_spacing+nmax+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (nmax+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = (int *) (work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  { int i, d;
+
+    diffs = 0;
+    ab = path->abpos;
+    ae = (ab/trace_spacing)*trace_spacing;
+    bb = path->bbpos;
+    tlen -= 2;
+    for (i = 1; i < tlen; i += 2)
+      { ae = ae + trace_spacing;
+        be = bb + points[i];
+        d  = iter_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode);
+        if (d < 0)
+          EXIT(1);
+        diffs += d;
+        ab = ae;
+        bb = be;
+      }
+    ae = path->aepos;
+    be = path->bepos;
+    d  = iter_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode);
+    if (d < 0)
+      EXIT(1);
+    diffs += d;
+  }
+
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+  path->diffs = diffs;
+
+  return (0);
+}
+
+int Compute_Trace_MID(Alignment *align, Work_Data *ework, int trace_spacing, int mode)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path   *path;
+  char   *aseq, *bseq;
+  uint16 *points;
+  int     tlen;
+  int     ab, bb;
+  int     ae, be;
+  int     diffs;
+
+  path   = align->path;
+  aseq   = align->aseq;
+  bseq   = align->bseq;
+  tlen   = path->tlen;
+  points = (uint16 *) path->trace;
+
+  { int64 s;
+    int   d;
+    int   M, N;
+    int   dmax, nmax;
+    int   **PVF, **PHF;
+
+    M = path->aepos-path->abpos;
+    N = path->bepos-path->bbpos;
+    if (M < N)
+      s = N*sizeof(int);
+    else
+      s = M*sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    nmax = 0;
+    dmax = 0;
+    for (d = 1; d < tlen; d += 2)
+      { if (points[d-1] > dmax)
+          dmax = points[d-1];
+        if (points[d] > nmax)
+          nmax = points[d];
+      }
+    if (tlen <= 1)
+      nmax = N;
+
+    s = (dmax+3)*4*((trace_spacing+nmax+3)*sizeof(int) + sizeof(int *));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = trace_spacing+nmax+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (nmax+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = ((int *) work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  { int i, d;
+    int as, bs;
+    int af, bf;
+
+    diffs = 0;
+    ab = as = af = path->abpos;
+    ae = (ab/trace_spacing)*trace_spacing;
+    bb = bs = bf = path->bbpos;
+    tlen -= 2;
+    for (i = 1; i < tlen; i += 2) 
+      { ae = ae + trace_spacing;
+        be = bb + points[i];
+        if (middle_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode))
+          EXIT(1);
+        af = wave.mida;
+        bf = wave.midb;
+        d  = iter_np(aseq+as,af-as,bseq+bs,bf-bs,&wave,mode);
+        if (d < 0)
+          EXIT(1);
+        diffs += d;
+        ab = ae;
+        bb = be;
+        as = af;
+        bs = bf;
+      }
+
+    ae = path->aepos;
+    be = path->bepos;
+
+    if (middle_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode))
+      EXIT(1);
+    af = wave.mida;
+    bf = wave.midb;
+    d  = iter_np(aseq+as,af-as,bseq+bs,bf-bs,&wave,mode);
+    if (d < 0)
+      EXIT(1);
+    diffs += d;
+    as = af;
+    bs = bf;
+    
+    d += iter_np(aseq+af,ae-as,bseq+bf,be-bs,&wave,mode);
+    if (d < 0)
+      EXIT(1);
+    diffs += d;
+  }
+
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+  path->diffs = diffs;
+
+  return (0);
+}
+
+int Compute_Trace_IRR(Alignment *align, Work_Data *ework, int mode)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path   *path;
+  char   *aseq, *bseq;
+  uint16 *points;
+  int     tlen;
+  int     ab, bb;
+  int     ae, be;
+  int     diffs;
+
+  path   = align->path;
+  aseq   = align->aseq;
+  bseq   = align->bseq;
+  tlen   = path->tlen;
+  points = (uint16 *) path->trace;
+
+  { int64 s;
+    int   d;
+    int   M, N;
+    int   mmax, nmax, dmax;
+    int   **PVF, **PHF;
+
+    M = path->aepos-path->abpos;
+    N = path->bepos-path->bbpos;
+    if (M < N)
+      s = N*sizeof(int);
+    else
+      s = M*sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    nmax = mmax = 0;
+    for (d = 0; d < tlen; d += 2)
+      { if (points[d] > mmax)
+          mmax = points[d];
+        if (points[d+1] > nmax)
+          nmax = points[d+1];
+      }
+    if (tlen <= 1)
+      { mmax = M;
+        nmax = N;
+      }
+    if (mmax > nmax)
+      dmax = nmax;
+    else
+      dmax = mmax;
+
+    s = (dmax+3)*2*((mmax+nmax+3)*sizeof(int) + sizeof(int *));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = mmax+nmax+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (nmax+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = (int *) (work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  { int i, d;
+
+    diffs = 0;
+    ab = path->abpos;
+    bb = path->bbpos;
+    for (i = 0; i < tlen; i += 2)
+      { ae = ab + points[i];
+        be = bb + points[i+1];
+        d = iter_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode);
+        if (d < 0)
+          EXIT(1);
+        diffs += d;
+        ab = ae;
+        bb = be;
+      }
+  }
+
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+  path->diffs = diffs;
+
+  return (0);
+}
diff --git a/DALIGNER/align.h b/DALIGNER/align.h
new file mode 100644
index 0000000..c3b31ae
--- /dev/null
+++ b/DALIGNER/align.h
@@ -0,0 +1,354 @@
+/*******************************************************************************************
+ *
+ *  Local alignment module.  Routines for finding local alignments given a seed position,
+ *    representing such an l.a. with its interval and a set of pass-thru points, so that
+ *    a detailed alignment can be efficiently computed on demand.
+ *
+ *  All routines work on a numeric representation of DNA sequences, i.e. 0 for A, 1 for C,
+ *    2 for G, and 3 for T.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ ********************************************************************************************/
+
+#ifndef _A_MODULE
+
+#define _A_MODULE
+
+#include "DB.h"
+
+#define TRACE_XOVR 125   //  If the trace spacing is not more than this value, then can
+                         //    and do compress traces pts to 8-bit unsigned ints
+
+/*** INTERACTIVE vs BATCH version
+
+     The defined constant INTERACTIVE (set in DB.h) determines whether an interactive or
+       batch version of the routines in this library are compiled.  In batch mode, routines
+       print an error message and exit.  In interactive mode, the routines place the error
+       message in EPLACE (also defined in DB.h) and return an error value, typically NULL
+       if the routine returns a pointer, and an unusual integer value if the routine returns
+       an integer.
+     Below when an error return is described, one should understand that this value is returned
+       only if the routine was compiled in INTERACTIVE mode.
+
+***/
+
+
+/*** PATH ABSTRACTION:
+
+     Coordinates are *between* characters where 0 is the tick just before the first char,
+     1 is the tick between the first and second character, and so on.  Our data structure
+     is called a Path refering to its conceptualization in an edit graph.
+
+     A local alignment is specified by the point '(abpos,bbpos)' at which its path in
+     the underlying edit graph starts, and the point '(aepos,bepos)' at which it ends.
+     In otherwords A[abpos+1..aepos] is aligned to B[bbpos+1..bepos] (assuming X[1] is
+     the *first* character of X).
+
+     There are 'diffs' differences in an optimal local alignment between the beginning and
+     end points of the alignment (if computed by Compute_Trace), or nearly so (if computed
+     by Local_Alignment).  
+
+     Optionally, a Path can have additional information about the exact nature of the
+     aligned substrings if the field 'trace' is not NULL.  Trace points to either an
+     array of integers (if computed by a Compute_Trace routine), or an array of unsigned
+     short integers (if computed by Local_Alignment).
+
+     If computed by Local_Alignment 'trace' points at a list of 'tlen' (always even) short
+     values:
+
+            d_0, b_0, d_1, b_1, ... d_n-1, b_n-1, d_n, b_n
+
+     to be interpreted as follows.  The alignment from (abpos,bbpos) to (aepos,bepos)
+     passes through the n trace points for i in [1,n]:
+
+            (a_i,b_i) where a_i = floor(abpos/TS)*TS + i*TS
+                        and b_i = bbpos + (b_0 + b_1 + b_i-1)
+
+     where also let a_0,b_0 = abpos,bbpos and a_(n+1),b_(n+1) = aepos,bepos.  That is, the
+     interior (i.e. i != 0 and i != n+1) trace points pass through every TS'th position of
+     the aread where TS is the "trace spacing" employed when finding the alignment (see
+     New_Align_Spec).  Typically TS is 100.  Then d_i is the number of differences in the
+     portion of the alignment between (a_i,b_i) and (a_i+1,b_i+1).  These trace points allow
+     the Compute_Trace routines to efficiently compute the exact alignment between the two
+     reads by efficiently computing exact alignments between consecutive pairs of trace points.
+     Moreover, the diff values give one an idea of the quality of the alignment along every
+     segment of TS symbols of the aread.
+
+     If computed by a Compute_Trace routine, 'trace' points at a list of 'tlen' integers
+     < i1, i2, ... in > that encodes an exact alignment as follows.  A negative number j
+     indicates that a dash should be placed before A[-j] and a positive number k indicates
+     that a dash should be placed before B[k], where A and B are the two sequences of the
+     overlap.  The indels occur in the trace in the order in which they occur along the
+     alignment.  For a good example of how to "decode" a trace into an alignment, see the
+     code for the routine Print_Alignment.
+
+***/
+
+typedef struct
+  { void     *trace;
+    int       tlen;
+    int       diffs;
+    int       abpos, bbpos;
+    int       aepos, bepos;
+  } Path;
+
+
+/*** ALIGNMENT ABSTRACTION:
+
+     An alignment is modeled by an Alignment record, which in addition to a *pointer* to a
+     'path', gives pointers to the A and B sequences, their lengths, and indicates whether
+     the B-sequence needs to be complemented ('comp' non-zero if so).  The 'trace' pointer
+     of the 'path' subrecord can be either NULL, a list of pass-through points, or an exact
+     trace depending on what routines have been called on the record.
+
+     One can (1) compute a trace, with Compute_Trace, either from scratch if 'path.trace' = NULL,
+     or using the sequence of pass-through points in trace, (2) print an ASCII representation
+     of an alignment, or (3) reverse the roles of A and B, and (4) complement a sequence
+     (which is a reversible process).
+
+     If the alignment record shows the B sequence as complemented, *** THEN IT IS THE
+     RESPONSIBILITY OF THE CALLER *** to make sure that bseq points at a complement of
+     the sequence before calling Compute_Trace or Print_Alignment.  Complement_Seq complements
+     the sequence a of length n.  The operation does the complementation/reversal in place.
+     Calling it a second time on a given fragment restores it to its original state.
+
+     With the introduction of the DAMAPPER, we need to code chains of alignments between a
+     pair of sequences.  The alignments of a chain are expected to be found in order either on
+     a file or in memory, where the START_FLAG marks the first alignment and the NEXT_FLAG all
+     subsequent alignmenst in a chain.  A chain of a single LA is marked with the START_FLAG.
+     The BEST_FLAG marks one of the best chains for a pair of sequences.  The convention is
+     that either every record has either a START- or NEXT-flag, or none of them do (e.g. as
+     produced by daligner), so one can always check the flags of the first alignment to see
+     whether or not the chain concept applies to a given collection or not.
+***/
+
+#define COMP_FLAG  0x1
+#define ACOMP_FLAG 0x2   //  A-sequence is complemented, not B !  Only Local_Alignment notices
+
+#define COMP(x)   ((x) & COMP_FLAG)
+#define ACOMP(x)  ((x) & ACOMP_FLAG)
+
+#define START_FLAG 0x4   //  LA is the first of a chain of 1 or more la's
+#define NEXT_FLAG  0x8   //  LA is the next segment of a chain.
+#define BEST_FLAG  0x10  //  This is the start of the best chain
+
+#define CHAIN_START(x)  ((x) & START_FLAG)
+#define CHAIN_NEXT(x)   ((x) & NEXT_FLAG)
+#define BEST_CHAIN(x)   ((x) & BEST_FLAG)
+
+typedef struct
+  { Path   *path;
+    uint32  flags;        /* Pipeline status and complementation flags          */
+    char   *aseq;         /* Pointer to A sequence                              */
+    char   *bseq;         /* Pointer to B sequence                              */
+    int     alen;         /* Length of A sequence                               */
+    int     blen;         /* Length of B sequence                               */
+  } Alignment;
+
+void Complement_Seq(char *a, int n);
+
+  /* Many routines like Local_Alignment, Compute_Trace, and Print_Alignment need working
+     storage that is more efficiently reused with each call, rather than being allocated anew
+     with each call.  Each *thread* can create a Work_Data object with New_Work_Data and this
+     object holds and retains the working storage for routines of this module between calls
+     to the routines.  If enough memory for a Work_Data is not available then NULL is returned.
+     Free_Work_Data frees a Work_Data object and all working storage held by it.
+  */
+
+  typedef void Work_Data;
+
+  Work_Data *New_Work_Data();
+
+  void       Free_Work_Data(Work_Data *work);
+
+  /* Local_Alignment seeks local alignments of a quality determined by a number of parameters.
+     These are coded in an Align_Spec object that can be created with New_Align_Spec and
+     freed with Free_Align_Spec when no longer needed.  There are 4 essential parameters:
+
+     ave_corr:    the average correlation (1 - 2*error_rate) for the sought alignments.  For Pacbio
+                    data we set this to .70 assuming an average of 15% error in each read.
+     trace_space: the spacing interval for keeping trace points and segment differences (see
+                    description of 'trace' for Paths above)
+     freq[4]:     a 4-element vector where afreq[0] = frequency of A, f(A), freq[1] = f(C),
+                    freq[2] = f(G), and freq[3] = f(T).  This vector is part of the header
+                    of every HITS database (see db.h).
+
+     If an alignment cannot reach the boundary of the d.p. matrix with this condition (i.e.
+     overlap), then the last/first 30 columns of the alignment are guaranteed to be
+     suffix/prefix positive at correlation ave_corr * g(freq) where g is an empirically
+     measured function that increases from 1 as the entropy of freq decreases.  If memory is
+     unavailable or the freq distribution is too skewed then NULL is returned.
+
+     You can get back the original parameters used to create an Align_Spec with the simple
+     utility functions below.
+  */
+
+  typedef void Align_Spec;
+
+  Align_Spec *New_Align_Spec(double ave_corr, int trace_space, float *freq);
+
+  void        Free_Align_Spec(Align_Spec *spec);
+
+  int    Trace_Spacing      (Align_Spec *spec);
+  double Average_Correlation(Align_Spec *spec);
+  float *Base_Frequencies   (Align_Spec *spec);
+
+  /* Local_Alignment finds the longest significant local alignment between the sequences in
+     'align' subject to:
+
+       (a) the alignment criterion given by the Align_Spec 'spec',
+       (b) it passes through one of the points (anti+k)/2,(anti-k)/2 for k in [low,hgh] within
+             the underlying dynamic programming matrix (i.e. the points on diagonals low to hgh
+             on anti-diagonal anti or anti-1 (depending on whether the diagonal is odd or even)),
+       (c) if lbord >= 0, then the alignment is always above diagonal low-lbord, and
+       (d) if hbord >= 0, then the alignment is always below diagonal hgh+hbord.
+
+     The path record of 'align' has its 'trace' filled from the point of view of an overlap
+     between the aread and the bread.  In addition a Path record from the point of view of the
+     bread versus the aread is returned by the function, with this Path's 'trace' filled in
+     appropriately.  The space for the returned path and the two 'trace's are in the working
+     storage supplied by the Work_Data packet and this space is reused with each call, so if
+     one wants to retain the bread-path and the two trace point sequences, then they must be
+     copied to user-allocated storage before calling the routine again.  NULL is returned in
+     the event of an error.
+
+     Find_Extension is a variant of Local_Alignment that simply finds a local alignment that
+     either ends (if prefix is non-zero) or begins (if prefix is zero) at the point
+     (anti+diag)/2,(anti-diag)/2).  All other parameters are as before.  It returns a non-zero
+     value only when INTERACTIVE is on and it cannot allocate the memory it needs.
+     Only the path and trace with respect to the aread is returned.  This routine is experimental
+     and may not persist in later versions of the code.
+  */
+
+  Path *Local_Alignment(Alignment *align, Work_Data *work, Align_Spec *spec,
+                        int low, int hgh, int anti, int lbord, int hbord);
+
+  int   Find_Extension(Alignment *align, Work_Data *work, Align_Spec *spec,    //  experimental !!
+                       int diag, int anti, int lbord, int hbord, int prefix);
+
+  /* Given a legitimate Alignment object, Compute_Trace_X computes an exact trace for the alignment.
+     If 'path.trace' is non-NULL, then it is assumed to be a sequence of pass-through points
+     and diff levels computed by Local_Alignment.  In either case 'path.trace' is set
+     to point at an integer array within the storage of the Work_Data packet encoding an
+     exact optimal trace from the start to end points.  If the trace is needed beyond the
+     next call to a routine that sets it, then it should be copied to an array allocated
+     and managed by the caller.
+
+     Compute_Trace_ALL does not require a sequence of pass-through points, as it computes the
+     best alignment between (path->abpos,path->bbpos) and (path->aepos,path->bepos) in the
+     edit graph between the sequences.  Compute_Trace_PTS computes a trace by computing the
+     trace between successive pass through points.  It is much, much faster than Compute_Trace_ALL
+     but at the tradeoff of not necessarily being optimal as pass-through points are not all
+     perfect.  Compute_Trace_MID computes a trace by computing the trace between the mid-points
+     of alignments between two adjacent pairs of pass through points.  It is generally twice as
+     slow as Compute_Trace_PTS, but it produces nearer optimal alignments.  All these routines
+     return 1 if an error occurred and 0 otherwise.
+  */
+
+#define LOWERMOST -1   //   Possible modes for "mode" parameter below)
+#define GREEDIEST  0
+#define UPPERMOST  1
+
+  int Compute_Trace_ALL(Alignment *align, Work_Data *work);
+  int Compute_Trace_PTS(Alignment *align, Work_Data *work, int trace_spacing, int mode);
+  int Compute_Trace_MID(Alignment *align, Work_Data *work, int trace_spacing, int mode);
+
+  /* Compute_Trace_IRR (IRR for IRRegular) computes a trace for the given alignment where
+     it assumes the spacing between trace points between both the A and B read varies, and
+     futher assumes that the A-spacing is given in the short integers normally occupied by
+     the differences in the alignment between the trace points.  This routine is experimental
+     and may not persist in later versions of the code.
+  */
+
+  int Compute_Trace_IRR(Alignment *align, Work_Data *work, int mode);   //  experimental !!
+
+  /* Alignment_Cartoon prints an ASCII representation of the overlap relationhip between the
+     two reads of 'align' to the given 'file' indented by 'indent' space.  Coord controls
+     the display width of numbers, it must be not less than the width of any number to be
+     displayed.
+
+     If the alignment trace is an exact trace, then one can ask Print_Alignment to print an
+     ASCII representation of the alignment 'align' to the file 'file'.  Indent the display
+     by "indent" spaces and put "width" columns per line in the display.  Show "border"
+     characters of sequence on each side of the aligned region.  If upper is non-zero then
+     display bases in upper case.  If coord is greater than 0, then the positions of the
+     first character in A and B in the given row is displayed with a field width given by
+     coord's value.
+
+     Print_Reference is like Print_Alignment but rather than printing exaclty "width" columns
+     per segment, it prints "block" characters of the A sequence in each segment.  This results
+     in segments of different lengths, but is convenient when looking at two alignments involving
+     A as segments are guaranteed to cover the same interval of A in a segment.
+
+     Both Print routines return 1 if an error occurred (not enough memory), and 0 otherwise.
+
+     Flip_Alignment modifies align so the roles of A and B are reversed.  If full is off then
+     the trace is ignored, otherwise the trace must be to a full alignment trace and this trace
+     is also appropriately inverted.
+  */
+
+  void Alignment_Cartoon(FILE *file, Alignment *align, int indent, int coord);
+
+  int  Print_Alignment(FILE *file, Alignment *align, Work_Data *work,
+                       int indent, int width, int border, int upper, int coord);
+
+  int  Print_Reference(FILE *file, Alignment *align, Work_Data *work,
+                       int indent, int block, int border, int upper, int coord);
+
+  void Flip_Alignment(Alignment *align, int full);
+
+
+/*** OVERLAP ABSTRACTION:
+
+     Externally, between modules an Alignment is modeled by an "Overlap" record, which
+     (a) replaces the pointers to the two sequences with their ID's in the HITS data bases,
+     (b) does not contain the length of the 2 sequences (must fetch from DB), and
+     (c) contains its path as a subrecord rather than as a pointer (indeed, typically the
+     corresponding Alignment record points at the Overlap's path sub-record).  The trace pointer
+     is always to a sequence of trace points and can be either compressed (uint8) or
+     uncompressed (uint16).  One can read and write binary records of an "Overlap".
+***/
+
+typedef struct {
+  Path    path;         /* Path: begin- and end-point of alignment + diffs    */
+  uint32  flags;        /* Pipeline status and complementation flags          */
+  int     aread;        /* Id # of A sequence                                 */
+  int     bread;        /* Id # of B sequence                                 */
+} Overlap;
+
+
+  /* Read_Overlap reads the next Overlap record from stream 'input', not including the trace
+     (if any), and without modifying 'ovl's trace pointer.  Read_Trace reads the ensuing trace
+     into the memory pointed at by the trace field of 'ovl'.  It is assumed to be big enough to
+     accommodate the trace where each value take 'tbytes' bytes (1 if uint8 or 2 if uint16).
+
+     Write_Overlap write 'ovl' to stream 'output' followed by its trace vector (if any) that
+     occupies 'tbytes' bytes per value.  
+
+     Print_Overlap prints an ASCII version of the contents of 'ovl' to stream 'output'
+     where the trace occupes 'tbytes' per value and the print out is indented from the left
+     margin by 'indent' spaces.
+
+     Compress_TraceTo8 converts a trace fo 16-bit values to 8-bit values in place, and
+     Decompress_TraceTo16 does the reverse conversion.
+
+     Check_Trace_Points checks that the number of trace points is correct and that the sum
+     of the b-read displacements equals the b-read alignment interval, assuming the trace
+     spacing is 'tspace'.  It reports an error message if there is a problem and 'verbose'
+     is non-zero.  The 'ovl' came from the file names 'fname'.
+  */
+
+  int Read_Overlap(FILE *input, Overlap *ovl);
+  int Read_Trace(FILE *innput, Overlap *ovl, int tbytes);
+
+  void Write_Overlap(FILE *output, Overlap *ovl, int tbytes);
+  void Print_Overlap(FILE *output, Overlap *ovl, int tbytes, int indent);
+
+  void Compress_TraceTo8(Overlap *ovl);
+  void Decompress_TraceTo16(Overlap *ovl);
+
+  int  Check_Trace_Points(Overlap *ovl, int tspace, int verbose, char *fname);
+
+#endif // _A_MODULE
diff --git a/DALIGNER/daligner.c b/DALIGNER/daligner.c
new file mode 100644
index 0000000..bad4369
--- /dev/null
+++ b/DALIGNER/daligner.c
@@ -0,0 +1,731 @@
+/*********************************************************************************************\
+ *
+ *  Find all local alignment between long, noisy DNA reads:
+ *    Compare sequences in 'subject' database against those in the list of 'target' databases
+ *    searching for local alignments of 1000bp or more (defined constant MIN_OVERLAP in
+ *    filter.c).  Subject is compared in both orientations againt each target.  An output
+ *    stream of 'Overlap' records (see align.h) is written in binary to the standard output,
+ *    each encoding a given found local alignment between two of the sequences.  The -v
+ *    option turns on a verbose reporting mode that gives statistics on each major stage.
+ *
+ *    The filter operates by looking for a pair of diagonal bands of width 2^'s' that contain
+ *    a collection of exact matching 'k'-mers between the two sequences, such that the total
+ *    number of bases covered by 'k'-mer hits is 'h'.  k cannot be larger than 32 in the
+ *    current implementation.
+ *
+ *    Some k-mers are significantly over-represented (e.g. homopolymer runs).  These are
+ *    suppressed as seed hits, with the parameter 't' -- any k-mer that occurs more than
+ *    't' times in either the subject or target is not counted as a seed hit.  If the -t
+ *    option is absent then no k-mer is suppressed.  Alternatively, the option -M specifies
+ *    that 't' is dynamically set to the largest value such that less than -M memory is
+ *    used.
+ *
+ *    For each subject, target pair, say XXX and YYY, the program outputs a file containing
+ *    overlaps of the form XXX.YYY.[C|N]#.las where C implies that the reads in XXX were
+ *    complemented and N implies they were not (both comparisons are performed), and # is
+ *    the thread that detected and wrote out the collection of overlaps.  For example, if
+ *    NTHREAD in the program is 4, then 8 files are output for each subject, target pair.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  June 1, 2014
+ *
+ *********************************************************************************************/
+ 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <sys/param.h>
+#if defined(BSD)
+#include <sys/sysctl.h>
+#endif
+
+#include "DB.h"
+#include "filter.h"
+
+static char *Usage[] =
+  { "[-vbAI] [-k<int(14)>] [-w<int(6)>] [-h<int(35)>] [-t<int>] [-M<int>]",
+    "        [-e<double(.70)] [-l<int(1000)>] [-s<int(100)>] [-H<int>] [-T<int(4)>]",
+    "        [-m<track>]+ <subject:db|dam> <target:db|dam> ...",
+  };
+
+int     VERBOSE;   //   Globally visible to filter.c
+int     BIASED;
+int     MINOVER;
+int     HGAP_MIN;
+int     SYMMETRIC;
+int     IDENTITY;
+uint64  MEM_LIMIT;
+uint64  MEM_PHYSICAL;
+
+/*  Adapted from code by David Robert Nadeau (http://NadeauSoftware.com) licensed under
+ *     "Creative Commons Attribution 3.0 Unported License"
+ *          (http://creativecommons.org/licenses/by/3.0/deed.en_US)
+ *
+ *   I removed Windows options, reformated, and return int64 instead of size_t
+ */
+
+static int64 getMemorySize( )
+{
+#if defined(CTL_HW) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM64))
+
+  // OSX, NetBSD, OpenBSD
+
+  int     mib[2];
+  size_t  size = 0;
+  size_t  len = sizeof( size );
+
+  mib[0] = CTL_HW;
+#if defined(HW_MEMSIZE)
+  mib[1] = HW_MEMSIZE;            // OSX
+#elif defined(HW_PHYSMEM64)
+  mib[1] = HW_PHYSMEM64;          // NetBSD, OpenBSD
+#endif
+  if (sysctl(mib,2,&size,&len,NULL,0) == 0)
+    return ((size_t) size);
+  return (0);
+
+#elif defined(_SC_AIX_REALMEM)
+
+  // AIX
+
+  return ((size_t) sysconf( _SC_AIX_REALMEM ) * ((size_t) 1024L));
+
+#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGESIZE)
+
+  // FreeBSD, Linux, OpenBSD, & Solaris
+
+  size_t  size = 0;
+
+  size = (size_t) sysconf(_SC_PHYS_PAGES);
+  return (size * ((size_t) sysconf(_SC_PAGESIZE)));
+
+#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
+
+  // ? Legacy ?
+
+  size_t  size = 0;
+
+  size = (size_t) sysconf(_SC_PHYS_PAGES);
+  return (size * ((size_t) sysconf(_SC_PAGE_SIZE)));
+
+#elif defined(CTL_HW) && (defined(HW_PHYSMEM) || defined(HW_REALMEM))
+
+  // DragonFly BSD, FreeBSD, NetBSD, OpenBSD, and OSX
+
+  int          mib[2];
+  unsigned int size = 0;
+  size_t       len  = sizeof( size );
+
+  mib[0] = CTL_HW;
+#if defined(HW_REALMEM)
+  mib[1] = HW_REALMEM;		// FreeBSD
+#elif defined(HW_PYSMEM)
+  mib[1] = HW_PHYSMEM;		// Others
+#endif
+  if (sysctl(mib,2,&size,&len,NULL,0) == 0)
+    return (size_t)size;
+  return (0);
+
+#else
+
+  return (0);
+
+#endif
+}
+
+typedef struct
+  { int *ano;
+    int *end;
+    int  idx;
+    int  out;
+  } Event;
+
+static void reheap(int s, Event **heap, int hsize)
+{ int      c, l, r;
+  Event   *hs, *hr, *hl;
+
+  c  = s;
+  hs = heap[s];
+  while ((l = 2*c) <= hsize)
+    { r  = l+1;
+      hl = heap[l];
+      hr = heap[r];
+      if (hr->idx > hl->idx)
+        { if (hs->idx > hl->idx)
+            { heap[c] = hl;
+              c = l;
+            }
+          else
+            break;
+        }
+      else
+        { if (hs->idx > hr->idx)
+            { heap[c] = hr;
+              c = r;
+            }
+          else
+            break;
+        }
+    }
+  if (c != s)
+    heap[c] = hs;
+}
+
+static int64 merge_size(HITS_DB *block, int mtop)
+{ Event       ev[mtop+1];
+  Event      *heap[mtop+2];
+  int         r, mhalf;
+  int64       nsize;
+
+  { HITS_TRACK *track;
+    int         i;
+
+    track = block->tracks;
+    for (i = 0; i < mtop; i++)
+      { ev[i].ano = ((int *) (track->data)) + ((int64 *) (track->anno))[0];
+        ev[i].out = 1;
+        heap[i+1] = ev+i;
+        track = track->next;
+      }
+    ev[mtop].idx = INT32_MAX;
+    heap[mtop+1] = ev+mtop;
+  }
+
+  mhalf = mtop/2;
+
+  nsize = 0;
+  for (r = 0; r < block->nreads; r++)
+    { int         i, level, hsize;
+      HITS_TRACK *track;
+
+      track = block->tracks;
+      for (i = 0; i < mtop; i++)
+        { ev[i].end = ((int *) (track->data)) + ((int64 *) (track->anno))[r+1];
+          if (ev[i].ano < ev[i].end)
+            ev[i].idx = *(ev[i].ano);
+          else
+            ev[i].idx = INT32_MAX;
+          track = track->next;
+        }
+      hsize = mtop;
+
+      for (i = mhalf; i > 1; i--)
+        reheap(i,heap,hsize);
+
+      level = 0;
+      while (1)
+        { Event *p;
+
+          reheap(1,heap,hsize);
+
+          p = heap[1];
+          if (p->idx == INT32_MAX) break;
+
+          p->out = 1-p->out;
+          if (p->out)
+            { level -= 1;
+              if (level == 0)
+                nsize += 1;
+            }
+          else
+            { if (level == 0)
+                nsize += 1;
+              level += 1;
+            }
+          p->ano += 1;
+          if (p->ano >= p->end)
+            p->idx = INT32_MAX;
+          else
+            p->idx = *(p->ano);
+        }
+    }
+
+  return (nsize);
+}
+
+static HITS_TRACK *merge_tracks(HITS_DB *block, int mtop, int64 nsize)
+{ HITS_TRACK *ntrack;
+  Event       ev[mtop+1];
+  Event      *heap[mtop+2];
+  int         r, mhalf;
+  int64      *anno;
+  int        *data;
+
+  ntrack = (HITS_TRACK *) Malloc(sizeof(HITS_TRACK),"Allocating merged track");
+  if (ntrack == NULL)
+    exit (1);
+  ntrack->name = Strdup("merge","Allocating merged track");
+  ntrack->anno = anno = (int64 *) Malloc(sizeof(int64)*(block->nreads+1),"Allocating merged track");
+  ntrack->data = data = (int *) Malloc(sizeof(int)*nsize,"Allocating merged track");
+  ntrack->size = sizeof(int);
+  ntrack->next = NULL;
+  if (anno == NULL || data == NULL || ntrack->name == NULL)
+    exit (1);
+
+  { HITS_TRACK *track;
+    int         i;
+
+    track = block->tracks;
+    for (i = 0; i < mtop; i++)
+      { ev[i].ano = ((int *) (track->data)) + ((int64 *) (track->anno))[0];
+        ev[i].out = 1;
+        heap[i+1] = ev+i;
+        track = track->next;
+      }
+    ev[mtop].idx = INT32_MAX;
+    heap[mtop+1] = ev+mtop;
+  }
+
+  mhalf = mtop/2;
+
+  nsize = 0;
+  for (r = 0; r < block->nreads; r++)
+    { int         i, level, hsize;
+      HITS_TRACK *track;
+
+      anno[r] = nsize;
+
+      track = block->tracks;
+      for (i = 0; i < mtop; i++)
+        { ev[i].end = ((int *) (track->data)) + ((int64 *) (track->anno))[r+1];
+          if (ev[i].ano < ev[i].end)
+            ev[i].idx = *(ev[i].ano);
+          else
+            ev[i].idx = INT32_MAX;
+          track = track->next;
+        }
+      hsize = mtop;
+
+      for (i = mhalf; i > 1; i--)
+        reheap(i,heap,hsize);
+
+      level = 0;
+      while (1)
+        { Event *p;
+
+          reheap(1,heap,hsize);
+
+          p = heap[1];
+          if (p->idx == INT32_MAX) break;
+
+          p->out = 1-p->out;
+          if (p->out)
+            { level -= 1;
+              if (level == 0)
+                data[nsize++] = p->idx;
+            }
+          else
+            { if (level == 0)
+                data[nsize++] = p->idx;
+              level += 1;
+            }
+          p->ano += 1;
+          if (p->ano >= p->end)
+            p->idx = INT32_MAX;
+          else
+            p->idx = *(p->ano);
+        }
+    }
+  anno[r] = nsize;
+
+  return (ntrack);
+}
+
+static int read_DB(HITS_DB *block, char *name, char **mask, int *mstat, int mtop, int kmer)
+{ int i, isdam, status, kind, stop;
+
+  isdam = Open_DB(name,block);
+  if (isdam < 0)
+    exit (1);
+
+  for (i = 0; i < mtop; i++)
+    { status = Check_Track(block,mask[i],&kind);
+      if (status >= 0)
+        if (kind == MASK_TRACK)
+          mstat[i] = 0;
+        else
+          { if (mstat[i] != 0)
+              mstat[i] = -3;
+          }
+      else
+        { if (mstat[i] == -2)
+            mstat[i] = status;
+        }
+      if (status == 0 && kind == MASK_TRACK)
+        Load_Track(block,mask[i]);
+    }
+
+  Trim_DB(block);
+
+  stop = 0;
+  for (i = 0; i < mtop; i++)
+    { HITS_TRACK *track;
+      int64      *anno;
+      int         j;
+
+      status = Check_Track(block,mask[i],&kind);
+      if (status < 0 || kind != MASK_TRACK)
+        continue;
+      stop += 1;
+      track = Load_Track(block,mask[i]);
+
+      anno = (int64 *) (track->anno); 
+      for (j = 0; j <= block->nreads; j++)
+        anno[j] /= sizeof(int);
+    }
+
+  if (stop > 1)
+    { int64       nsize;
+      HITS_TRACK *track;
+
+      nsize = merge_size(block,stop);
+      track = merge_tracks(block,stop,nsize);
+
+      while (block->tracks != NULL)
+        Close_Track(block,block->tracks->name);
+
+      block->tracks = track;
+    }
+
+  if (block->cutoff < kmer)
+    { for (i = 0; i < block->nreads; i++)
+        if (block->reads[i].rlen < kmer)
+          { fprintf(stderr,"%s: Block %s contains reads < %dbp long !  Run DBsplit.\n",
+                           Prog_Name,name,kmer);
+            exit (1);
+          }
+    }
+
+  Read_All_Sequences(block,0);
+
+  return (isdam);
+}
+
+static void complement(char *s, int len)
+{ char *t;
+  int   c;
+
+  t = s + (len-1);
+  while (s < t)
+    { c = *s;
+      *s = (char) (3-*t);
+      *t = (char) (3-c);
+      s += 1;
+      t -= 1;
+    }
+  if (s == t)
+    *s = (char) (3-*s);
+}
+
+static HITS_DB *complement_DB(HITS_DB *block, int inplace)
+{ static HITS_DB _cblock, *cblock = &_cblock;
+  int            nreads;
+  HITS_READ     *reads;
+  char          *seq;
+  
+  nreads = block->nreads;
+  reads  = block->reads;
+  if (inplace)
+    { seq = (char *) block->bases;
+      cblock = block;
+    }
+  else
+    { seq  = (char *) Malloc(block->reads[nreads].boff+1,"Allocating dazzler sequence block");
+      if (seq == NULL)
+        exit (1);
+      *seq++ = 4;
+      memcpy(seq,block->bases,block->reads[nreads].boff);
+      *cblock = *block;
+      cblock->bases  = (void *) seq;
+      cblock->tracks = NULL;
+    }
+
+  { int   i;
+    float x;
+
+    x = cblock->freq[0];
+    cblock->freq[0] = cblock->freq[3];
+    cblock->freq[3] = x;
+
+    x = cblock->freq[1];
+    cblock->freq[1] = cblock->freq[2];
+    cblock->freq[2] = x;
+
+    for (i = 0; i < nreads; i++)
+      complement(seq+reads[i].boff,reads[i].rlen);
+  }
+
+  { HITS_TRACK *src, *trg;
+    int        *data, *tata;
+    int         i, x, rlen;
+    int64      *tano, *anno;
+    int64       j, k;
+
+    for (src = block->tracks; src != NULL; src = src->next)
+      { tano = (int64 *) src->anno;
+        tata = (int   *) src->data;
+
+        if (inplace)
+          { data = tata;
+            anno = tano;
+            trg  = src;
+          }
+        else
+          { data = (int *) Malloc(sizeof(int)*tano[nreads],
+                                  "Allocating dazzler interval track data");
+            anno = (int64 *) Malloc(sizeof(int64)*(nreads+1),
+                                    "Allocating dazzler interval track index");
+            trg  = (HITS_TRACK *) Malloc(sizeof(HITS_TRACK),
+                                         "Allocating dazzler interval track header");
+            if (data == NULL || trg == NULL || anno == NULL)
+              exit (1);
+
+            trg->name = Strdup(src->name,"Copying track name");
+            if (trg->name == NULL)
+              exit (1);
+
+            trg->size = 4;
+            trg->anno = (void *) anno;
+            trg->data = (void *) data;
+            trg->next = cblock->tracks;
+            cblock->tracks = trg;
+          }
+
+        for (i = 0; i < nreads; i++)
+          { rlen = reads[i].rlen;
+            anno[i] = tano[i];
+            j = tano[i+1]-1;
+            k = tano[i];
+            while (k < j)
+              { x = tata[j];
+                data[j--] = rlen - tata[k];
+                data[k++] = rlen - x;
+              }
+            if (k == j)
+              data[k] = rlen - tata[k];
+          }
+        anno[nreads] = tano[nreads];
+      }
+  }
+
+  return (cblock);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB    _ablock, _bblock;
+  HITS_DB    *ablock = &_ablock, *bblock = &_bblock;
+  char       *afile,  *bfile;
+  char       *aroot,  *broot;
+  void       *aindex, *bindex;
+  int         alen,    blen;
+  Align_Spec *asettings;
+  int         isdam;
+  int         MMAX, MTOP, *MSTAT;
+  char      **MASK;
+
+  int    KMER_LEN;
+  int    BIN_SHIFT;
+  int    MAX_REPS;
+  int    HIT_MIN;
+  double AVE_ERROR;
+  int    SPACING;
+  int    NTHREADS;
+
+  { int    i, j, k;
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("daligner")
+
+    KMER_LEN  = 14;
+    HIT_MIN   = 35;
+    BIN_SHIFT = 6;
+    MAX_REPS  = 0;
+    HGAP_MIN  = 0;
+    AVE_ERROR = .70;
+    SPACING   = 100;
+    MINOVER   = 1000;    //   Globally visible to filter.c
+    NTHREADS  = 4;
+
+    MEM_PHYSICAL = getMemorySize();
+    MEM_LIMIT    = MEM_PHYSICAL;
+    if (MEM_PHYSICAL == 0)
+      { fprintf(stderr,"\nWarning: Could not get physical memory size\n");
+        fflush(stderr);
+      }
+
+    MTOP  = 0;
+    MMAX  = 10;
+    MASK  = (char **) Malloc(MMAX*sizeof(char *),"Allocating mask track array");
+    MSTAT = (int *) Malloc(MMAX*sizeof(int),"Allocating mask status array");
+    if (MASK == NULL || MSTAT == NULL)
+      exit (1);
+
+    j    = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vbAI")
+            break;
+          case 'k':
+            ARG_POSITIVE(KMER_LEN,"K-mer length")
+            if (KMER_LEN > 32)
+              { fprintf(stderr,"%s: K-mer length must be 32 or less\n",Prog_Name);
+                exit (1);
+              }
+            break;
+          case 'w':
+            ARG_POSITIVE(BIN_SHIFT,"Log of bin width")
+            break;
+          case 'h':
+            ARG_POSITIVE(HIT_MIN,"Hit threshold (in bp.s)")
+            break;
+          case 't':
+            ARG_POSITIVE(MAX_REPS,"Tuple supression frequency")
+            break;
+          case 'H':
+            ARG_POSITIVE(HGAP_MIN,"HGAP threshold (in bp.s)")
+            break;
+          case 'e':
+            ARG_REAL(AVE_ERROR)
+            if (AVE_ERROR < .7 || AVE_ERROR >= 1.)
+              { fprintf(stderr,"%s: Average correlation must be in [.7,1.) (%g)\n",
+                               Prog_Name,AVE_ERROR);
+                exit (1);
+              }
+            break;
+          case 'l':
+            ARG_POSITIVE(MINOVER,"Minimum alignment length")
+            break;
+          case 's':
+            ARG_POSITIVE(SPACING,"Trace spacing")
+            break;
+          case 'M':
+            { int limit;
+
+              ARG_NON_NEGATIVE(limit,"Memory allocation (in Gb)")
+              MEM_LIMIT = limit * 0x40000000ll;
+              break;
+            }
+          case 'm':
+            if (MTOP >= MMAX)
+              { MMAX  = 1.2*MTOP + 10;
+                MASK  = (char **) Realloc(MASK,MMAX*sizeof(char *),"Reallocating mask track array");
+                MSTAT = (int *) Realloc(MSTAT,MMAX*sizeof(int),"Reallocating mask status array");
+                if (MASK == NULL || MSTAT == NULL)
+                  exit (1);
+              }
+            MASK[MTOP++] = argv[i]+2;
+            break;
+          case 'T':
+            ARG_POSITIVE(NTHREADS,"Number of threads")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE   = flags['v'];   //  Globally declared in filter.h
+    BIASED    = flags['b'];   //  Globally declared in filter.h
+    SYMMETRIC = 1-flags['A'];
+    IDENTITY  = flags['I'];
+
+    if (argc <= 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[2]);
+        exit (1);
+      }
+
+    for (j = 0; j < MTOP; j++)
+      MSTAT[j] = -2;
+  }
+
+  MINOVER *= 2;
+  if (Set_Filter_Params(KMER_LEN,BIN_SHIFT,MAX_REPS,HIT_MIN,NTHREADS))
+    { fprintf(stderr,"Illegal combination of filter parameters\n");
+      exit (1);
+    }
+
+  /* Read in the reads in A */
+
+  afile = argv[1];
+  isdam = read_DB(ablock,afile,MASK,MSTAT,MTOP,KMER_LEN);
+  if (isdam)
+    aroot = Root(afile,".dam");
+  else
+    aroot = Root(afile,".db");
+
+  asettings = New_Align_Spec( AVE_ERROR, SPACING, ablock->freq);
+
+  /* Compare against reads in B in both orientations */
+
+  { int i, j;
+
+    aindex = NULL;
+    broot  = NULL;
+    for (i = 2; i < argc; i++)
+      { bfile = argv[i];
+        if (strcmp(afile,bfile) != 0)
+          { isdam = read_DB(bblock,bfile,MASK,MSTAT,MTOP,KMER_LEN);
+            if (isdam)
+              broot = Root(bfile,".dam");
+            else
+              broot = Root(bfile,".db");
+          }
+
+        if (i == 2)
+          { for (j = 0; j < MTOP; j++)
+              { if (MSTAT[j] == -2)
+                  printf("%s: Warning: -m%s option given but no track found.\n",Prog_Name,MASK[i]);
+                else if (MSTAT[j] == -1)
+                  printf("%s: Warning: %s track not sync'd with relevant db.\n",Prog_Name,MASK[i]);
+                else if (MSTAT[j] == -3)
+                  printf("%s: Warning: %s track is not a mask track.\n",Prog_Name,MASK[i]);
+              }
+
+            if (VERBOSE)
+              printf("\nBuilding index for %s\n",aroot);
+            aindex = Sort_Kmers(ablock,&alen);
+          }
+
+        if (strcmp(afile,bfile) != 0)
+          { if (VERBOSE)
+              printf("\nBuilding index for %s\n",broot);
+            bindex = Sort_Kmers(bblock,&blen);
+            Match_Filter(aroot,ablock,broot,bblock,aindex,alen,bindex,blen,0,asettings);
+
+            bblock = complement_DB(bblock,1);
+            if (VERBOSE)
+              printf("\nBuilding index for c(%s)\n",broot);
+            bindex = Sort_Kmers(bblock,&blen);
+            Match_Filter(aroot,ablock,broot,bblock,aindex,alen,bindex,blen,1,asettings);
+
+            free(broot);
+          }
+        else
+          { Match_Filter(aroot,ablock,aroot,ablock,aindex,alen,aindex,alen,0,asettings);
+
+            bblock = complement_DB(ablock,0);
+            if (VERBOSE)
+              printf("\nBuilding index for c(%s)\n",aroot);
+            bindex = Sort_Kmers(bblock,&blen);
+            Match_Filter(aroot,ablock,aroot,bblock,aindex,alen,bindex,blen,1,asettings);
+
+            bblock->reads = NULL;  //  ablock & bblock share "reads" vector, don't let Close_DB
+                                   //     free it !
+          }
+
+        Close_DB(bblock);
+      }
+  }
+
+  exit (0);
+}
diff --git a/DALIGNER/daligner_p.c b/DALIGNER/daligner_p.c
new file mode 100644
index 0000000..f1af194
--- /dev/null
+++ b/DALIGNER/daligner_p.c
@@ -0,0 +1 @@
+#include "daligner.c"
diff --git a/DALIGNER/filter.c b/DALIGNER/filter.c
new file mode 100644
index 0000000..a1fd056
--- /dev/null
+++ b/DALIGNER/filter.c
@@ -0,0 +1,2306 @@
+/* vim: set et ts=2 sts=2 sw=2 : */
+/*******************************************************************************************
+ *
+ *  Fast local alignment filter for long, noisy reads based on "dumbing down" of my RECOMB 2005
+ *     filter with Jens Stoye, and a "smarting up" of the k-mer matching by turning it into
+ *     a threaded sort and merge paradigm using a super cache coherent radix sort.  Local
+ *     alignment is accomplised with dynamically-banded O(nd) algorithm that terminates when
+ *     it fails to find a e-matching patch for a significant distance, and polishes the match
+ *     to the last e-prefix-positive 32-mer.
+ *
+ *  Author :  Gene Myers
+ *  First  :  June 2013
+ *  Current:  June 1, 2014
+ *
+ ********************************************************************************************/
+
+//  A complete threaded code for the filter
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+#include <pthread.h>
+
+#include "DB.h"
+#include "filter.h"
+#include "align.h"
+
+#define THREAD    pthread_t
+
+#define MAX_BIAS  2    //  In -b mode, don't consider tuples with specificity
+                       //     <= 4 ^ -(kmer-MAX_BIAS)
+#define MAXGRAM 10000  //  Cap on k-mer count histogram (in count_thread, merge_thread)
+
+#define PANEL_SIZE     50000   //  Size to break up very long A-reads
+#define PANEL_OVERLAP  10000   //  Overlap of A-panels
+
+#define MATCH_CHUNK    100     //  Max expected number of hits between two reads
+#define TRACE_CHUNK  20000     //  Max expected trace points in hits between two reads
+
+#undef  TEST_LSORT
+#undef  TEST_KSORT
+#undef  TEST_PAIRS
+#undef  TEST_CSORT
+#define    HOW_MANY   3000   //  Print first HOW_MANY items for each of the TEST options above
+
+#undef  TEST_GATHER
+#undef  TEST_CONTAIN
+#undef  SHOW_OVERLAP          //  Show the cartoon
+#undef  SHOW_ALIGNMENT        //  Show the alignment
+#define   ALIGN_WIDTH    80   //     Parameters for alignment
+#define   ALIGN_INDENT   20
+#define   ALIGN_BORDER   10
+
+#ifdef SHOW_OVERLAP
+#define NOTHREAD
+#endif
+
+#ifdef TEST_GATHER
+#define NOTHREAD
+#endif
+
+#ifdef TEST_CONTAIN
+#define NOTHREAD
+#endif
+
+typedef struct
+  { uint64 p1;   //  The lower half
+    uint64 p2;
+  } Double;
+
+#if __ORDER_LITTLE_ENDIAN__ == __BYTE_ORDER__
+
+typedef struct
+  { uint64 code;
+    int    rpos;
+    int    read;
+  } KmerPos;
+
+typedef struct
+  { int    diag;
+    int    apos;
+    int    aread;
+    int    bread;
+  } SeedPair;
+
+#else
+
+typedef struct
+  { uint64 code;
+    int    read;
+    int    rpos;
+  } KmerPos;
+
+typedef struct
+  { int    apos;
+    int    diag;
+    int    bread;
+    int    aread;
+  } SeedPair;
+
+#endif
+
+/*******************************************************************************************
+ *
+ *  PARAMETER SETUP
+ *
+ ********************************************************************************************/
+
+static int Kmer;
+static int Hitmin;
+static int Binshift;
+static int Suppress;
+
+static int    Kshift;         //  2*Kmer
+static uint64 Kmask;          //  4^Kmer-1
+static int    TooFrequent;    //  (Suppress != 0) ? Suppress : INT32_MAX
+
+static int    NTHREADS;       //  Adjusted downward to nearest power of 2
+static int    NSHIFT;         //  NTHREADS = 1 << NSHIFT
+
+int Set_Filter_Params(int kmer, int binshift, int suppress, int hitmin, int nthread)
+{ if (kmer <= 1)
+    return (1);
+
+  Kmer     = kmer;
+  Binshift = binshift;
+  Suppress = suppress;
+  Hitmin   = hitmin;
+
+  Kshift = 2*Kmer;
+  if (Kmer == 32)
+    Kmask = 0xffffffffffffffffllu;
+  else
+    Kmask = (0x1llu << Kshift) - 1;
+
+  if (Suppress == 0)
+    TooFrequent = INT32_MAX;
+  else
+    TooFrequent = Suppress;
+
+  NTHREADS = 1;
+  NSHIFT   = 0;
+  while (2*NTHREADS <= nthread)
+    { NTHREADS *= 2;
+      NSHIFT   += 1;
+    }
+
+  return (0);
+}
+
+
+/*******************************************************************************************
+ *
+ *  LEXICOGRAPHIC SORT
+ *
+ ********************************************************************************************/
+
+#define BMER      4
+#define BSHIFT    8             //  = 2*BMER
+#define BPOWR   256             //  = 2^BSHIFT
+#define BMASK  0xffllu          //  = BPOWR-1
+
+static uint64  QMASK;           //  = BMASK << NSHIFT
+static int     LEX_shift;
+static int64   LEX_zsize;
+static int     LEX_last;
+static int     LEX_next;
+static Double *LEX_src;
+static Double *LEX_trg;
+
+typedef struct
+  { int64  beg;
+    int64  end;
+    int64  tptr[BPOWR];
+    int64 *sptr;
+  } Lex_Arg;
+
+#define VERY_VERBOSE 0
+
+static void *lex_thread(void *arg)
+{ Lex_Arg    *data  = (Lex_Arg *) arg;
+  int64      *sptr  = data->sptr;
+  int64      *tptr  = data->tptr;
+  int         shift = LEX_shift;   //  Must be a multiple of 8 in [0,120]
+  int        qshift = (LEX_next - LEX_shift) - NSHIFT;
+  int64       zsize = LEX_zsize;
+  Double     *src   = LEX_src;
+  Double     *trg   = LEX_trg;
+  int64       i, n, x;
+  uint64      c, b;
+
+  n = data->end;
+  if (VERY_VERBOSE)
+    { printf("\n ----");
+      printf("\n shift=%d, LEX_last=%d, n=%lld", shift, LEX_last, n);
+      fflush(stdout);
+    }
+  if (shift >= 64)
+    { shift -= 64;
+      if (LEX_last)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p2;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p2;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((b >> qshift) & QMASK) + x/zsize] += 1;
+          }
+    }
+
+  else if ( ! LEX_last && LEX_next >= 64)   //  && LEX_shift < 64
+
+    { qshift = (LEX_next - 64) - NSHIFT;
+      if (qshift < 0)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((src[i].p2 << NSHIFT) & QMASK) + x/zsize] += 1;
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((src[i].p2 >> qshift) & QMASK) + x/zsize] += 1;
+          }
+    }
+
+  else // LEX_last || LEX_next < 64
+    if (LEX_last)
+      if (shift == 0)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            x = tptr[c&BMASK]++;
+            trg[x] = src[i];
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+          }
+    else
+      if (shift == 0)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            x = tptr[c&BMASK]++;
+            if (VERY_VERBOSE)
+            { printf("\n @=%p+%lld i=%6lld,c&=%3lld,x=%3lld,c=%lld ", (void*)trg, (sizeof(Double)*x), i, (c&BMASK), x, c);
+              fflush(stdout);
+            }
+            trg[x] = src[i];
+            sptr[((c >> qshift) & QMASK) + x/zsize] += 1;
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((b >> qshift) & QMASK) + x/zsize] += 1;
+          }
+
+  if (VERY_VERBOSE)
+    { printf("\n Finished @%p n=%lld", (void*)trg, n);
+      fflush(stdout);
+    }
+  return (NULL);
+}
+
+static Double *lex_sort(int bytes[16], Double *src, Double *trg, Lex_Arg *parmx)
+{ THREAD  threads[NTHREADS];
+
+  int64   len, x, y;
+  Double *xch;
+  int     i, j, k, z;
+  int     b, c, fb;
+
+  len       = parmx[NTHREADS-1].end;
+  LEX_zsize = (len-1)/NTHREADS + 1;
+  LEX_src   = src;
+  LEX_trg   = trg;
+  QMASK     = (BMASK << NSHIFT);
+
+  for (c = 0; c < 16; c++)
+    if (bytes[c])
+      break;
+  fb = c;
+  for (b = c; b < 16; b = c)
+    { for (c = b+1; c < 16; c++)
+        if (bytes[c])
+          break;
+      LEX_last  = (c >= 16);
+      LEX_shift = (b << 3);
+      LEX_next  = (c << 3);
+ 
+      if (b == fb)
+        { for (i = 0; i < NTHREADS; i++)
+            for (z = 0; z < NTHREADS*BPOWR; z++)
+              parmx[i].sptr[z] = 0;
+        }
+      else
+        { x = 0;
+          for (i = 0; i < NTHREADS; i++)
+            { parmx[i].beg = x;
+              x = LEX_zsize*(i+1);
+              if (x > len)
+                x = len;
+              parmx[i].end = x;
+              for (j = 0; j < BPOWR; j++)
+                parmx[i].tptr[j] = 0;
+            }
+          parmx[NTHREADS-1].end = len;
+
+          for (j = 0; j < BPOWR; j++)
+            { k = (j << NSHIFT);
+              for (z = 0; z < NTHREADS; z++)
+                for (i = 0; i < NTHREADS; i++)
+                  { parmx[i].tptr[j] += parmx[z].sptr[k+i];
+                    parmx[z].sptr[k+i] = 0;
+                  }
+            }
+        }
+
+      x = 0;
+      for (j = 0; j < BPOWR; j++)
+        for (i = 0; i < NTHREADS; i++)
+          { y = parmx[i].tptr[j];
+            parmx[i].tptr[j] = x;
+            x += y;
+          }
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_create(threads+i,NULL,lex_thread,parmx+i);
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_join(threads[i],NULL);
+
+      xch     = LEX_src;
+      LEX_src = LEX_trg;
+      LEX_trg = xch;
+
+#ifdef TEST_LSORT
+      printf("\nLSORT %d\n",LEX_shift);
+      if (LEX_shift >= 64)
+        { x = (1 << ((LEX_shift-64)+BSHIFT))-1;
+          for (i = 0; i < len; i++)
+            { printf("%6d: %8llx %8llx %8llx %8llx : %4llx",
+                     i,LEX_src[i].p2>>32,(LEX_src[i].p2)&0xffffffffll,LEX_src[i].p1>>32,
+                     LEX_src[i].p1&0xffffffffll,LEX_src[i].p2&x);
+              if (i > 0 && (LEX_src[i].p1 < LEX_src[i].p1 ||
+                             (LEX_src[i].p1 == LEX_src[i].p1 && 
+                             (LEX_src[i].p2 & x) < (LEX_src[i-1].p2 & x))))
+                printf(" OO");
+              printf("\n");
+            }
+        }
+      else
+        { x = (1 << (LEX_shift+BSHIFT))-1;
+          for (i = 0; i < len; i++)
+            { printf("%6d: %8llx %8llx %8llx %8llx : %4llx",
+                     i,LEX_src[i].p2>>32,(LEX_src[i].p2)&0xffffffffll,LEX_src[i].p1>>32,
+                     LEX_src[i].p1&0xffffffffll,LEX_src[i].p1&x);
+              if (i > 0 && (LEX_src[i].p1 & x) < (LEX_src[i-1].p1 & x))
+                printf(" OO");
+              printf("\n");
+            }
+        }
+#endif
+    }
+
+  return (LEX_src);
+}
+
+
+/*******************************************************************************************
+ *
+ *  INDEX BUILD
+ *
+ ********************************************************************************************/
+
+static int *NormShift = NULL;
+static int  LogNorm, LogThresh;
+static int  LogBase[4];
+
+static HITS_DB    *TA_block;
+static KmerPos    *TA_list;
+static HITS_TRACK *TA_track;
+
+typedef struct
+  { int    tnum;
+    int64 *kptr;
+    int    fill;
+  } Tuple_Arg;
+
+
+static void *tuple_thread(void *arg)
+{ Tuple_Arg  *data  = (Tuple_Arg *) arg;
+  int         tnum  = data->tnum;
+  int64      *kptr  = data->kptr;
+  KmerPos    *list  = TA_list;
+  int         i, m, n, x, p;
+  uint64      c;
+  char       *s;
+
+  c  = TA_block->nreads;
+  i  = (c * tnum) >> NSHIFT;
+  n  = TA_block->reads[i].boff;
+  s  = ((char *) (TA_block->bases)) + n;
+  n -= Kmer*i;
+
+  if (TA_track != NULL)
+    { HITS_READ *reads = TA_block->reads;
+      int64     *anno1 = ((int64 *) (TA_track->anno)) + 1;
+      int       *point = (int *) (TA_track->data);
+      int64      a, b, f; 
+      int        q = 0;
+
+      f = anno1[i-1];
+      for (m = (c * (tnum+1)) >> NSHIFT; i < m; i++)
+        { b = f;
+          f = anno1[i];
+          for (a = b; a <= f; a += 2)
+            { if (a == b)
+                p = 0;
+              else
+                p = point[a-1];
+              if (a == f)
+                q = reads[i].rlen;
+              else
+                q = point[a];
+              if (p+Kmer <= q)
+                { c = 0;
+                  for (x = 1; x < Kmer; x++)
+                    c = (c << 2) | s[p++];
+                  while (p < q)
+                    { x = s[p];
+                      c = ((c << 2) | x) & Kmask;
+                      list[n].read = i;
+                      list[n].rpos = p++;
+                      list[n].code = c;
+                      n += 1;
+                      kptr[c & BMASK] += 1;
+                    }
+                }
+            }
+          s += (q+1);
+        }
+
+      m = TA_block->reads[m].boff - Kmer*m;
+      kptr[BMASK] += (data->fill = m-n);
+      while (n < m)
+        { list[n].code = 0xffffffffffffffffllu;
+          list[n].read = 0xffffffff;
+          list[n].rpos = 0xffffffff;
+          n += 1;
+        }
+    }
+
+  else
+    for (m = (c * (tnum+1)) >> NSHIFT; i < m; i++)
+      { c = p = 0;
+        for (x = 1; x < Kmer; x++)
+          c = (c << 2) | s[p++];
+        while ((x = s[p]) != 4)
+          { c = ((c << 2) | x) & Kmask;
+            list[n].read = i;
+            list[n].rpos = p++;
+            list[n].code = c;
+            n += 1;
+            kptr[c & BMASK] += 1;
+          }
+        s += (p+1);
+      }
+
+  return (NULL);
+}
+
+static void *biased_tuple_thread(void *arg)
+{ Tuple_Arg  *data  = (Tuple_Arg *) arg;
+  int         tnum  = data->tnum;
+  int64      *kptr  = data->kptr;
+  KmerPos    *list  = TA_list;
+  int         n, i, m;
+  int         x, a, k, p;
+  uint64      d, c;
+  char       *s, *t;
+
+  c  = TA_block->nreads;
+  i  = (c * tnum) >> NSHIFT;
+  n  = TA_block->reads[i].boff;
+  s  = ((char *) (TA_block->bases)) + n;
+  n -= Kmer*i;
+
+  if (TA_track != NULL)
+    { HITS_READ *reads = TA_block->reads;
+      int64     *anno1 = ((int64 *) (TA_track->anno)) + 1;
+      int       *point = (int *) (TA_track->data);
+      int64      j, b, f; 
+      int        q = 0;
+
+      f = anno1[i-1];
+      for (m = (c * (tnum+1)) >> NSHIFT; i < m; i++)
+        { b = f;
+          f = anno1[i];
+          t = s+1;
+          for (j = b; j <= f; j += 2)
+            { if (j == b)
+                p = 0;
+              else
+                p = point[j-1];
+              if (j == f)
+                q = reads[i].rlen;
+              else
+                q = point[j];
+              if (p+Kmer <= q)
+                { c = 0;
+                  a = 0;
+                  k = 1;
+                  while (p < q)
+                    { x = s[p];
+                      a += LogBase[x];
+                      c  = ((c << 2) | x);
+                      while (a < LogNorm && k < Kmer)
+                        { if (++p >= q)
+                            break;
+                          k += 1;
+                          x  = s[p];
+                          a += LogBase[x];
+                          c  = ((c << 2) | x);
+                        }
+                      while (1)
+	                { int u = a-LogBase[(int) t[p-k]];
+                          if (u < LogNorm) break;
+                          a  = u;
+                          k -= 1;
+                        }
+                      if (a > LogThresh)
+                        { d = ((c << NormShift[k]) & Kmask);
+                          list[n].read = i;
+                          list[n].rpos = p;
+                          list[n].code = d;
+                          n += 1;
+                          kptr[d & BMASK] += 1;
+                        }
+                      p += 1;
+                      a -= LogBase[(int) s[p-k]];
+                    }
+                }
+            }
+          s += (q+1);
+	}
+    }
+
+  else
+    for (m = (c * (tnum+1)) >> NSHIFT; i < m; i++)
+      { t = s+1;
+        c = 0;
+        p = a = 0;
+        k = 1;
+        while ((x = s[p]) != 4)
+          { a += LogBase[x];
+            c  = ((c << 2) | x);
+            while (a < LogNorm && k < Kmer)
+              { if ((x = s[++p]) == 4)
+                  goto eoread2;
+                k += 1;
+                a += LogBase[x];
+                c  = ((c << 2) | x);
+              }
+            while (1)
+	      { int u = a-LogBase[(int) t[p-k]];
+                if (u < LogNorm) break;
+                a  = u;
+                k -= 1;
+              }
+            if (a > LogThresh)
+              { d = ((c << NormShift[k]) & Kmask);
+                list[n].read = i;
+                list[n].rpos = p;
+                list[n].code = d;
+                n += 1;
+                kptr[d & BMASK] += 1;
+              }
+            p += 1;
+            a -= LogBase[(int) s[p-k]];
+          }
+      eoread2:
+        s += (p+1);
+      }
+
+  m = TA_block->reads[m].boff - Kmer*m;
+  kptr[BMASK] += (data->fill = m-n);
+  while (n < m)
+    { list[n].code = 0xffffffffffffffffllu;
+      list[n].read = 0xffffffff;
+      list[n].rpos = 0xffffffff;
+      n += 1;
+    }
+
+  return (NULL);
+}
+
+static KmerPos *FR_src;
+static KmerPos *FR_trg;
+
+typedef struct
+  { int  beg;
+    int  end;
+    int  kept;
+  } Comp_Arg;
+
+static void *compsize_thread(void *arg)
+{ Comp_Arg   *data  = (Comp_Arg *) arg;
+  int         end   = data->end;
+  KmerPos    *src   = FR_src;
+  int         n, i, c, p;
+  uint64      h, g;
+
+  i = data->beg;
+  h = src[i].code;
+  n = 0;
+  while (i < end)
+    { p = i++;
+      while ((g = src[i].code) == h)
+        i += 1;
+      if ((c = (i-p)) < TooFrequent)
+        n += c;
+      h = g;
+    }
+
+  data->kept = n;
+  return (NULL);
+}
+
+static void *compress_thread(void *arg)
+{ Comp_Arg   *data  = (Comp_Arg *) arg;
+  int         end   = data->end;
+  KmerPos    *src   = FR_src;
+  KmerPos    *trg   = FR_trg;
+  int         n, i, p;
+  uint64      h, g;
+
+  i = data->beg;
+  h = src[i].code;
+  n = data->kept;
+  while (i < end)
+    { p = i++;
+      while ((g = src[i].code) == h)
+        i += 1;
+      if (i-p < TooFrequent)
+        { while (p < i)
+            trg[n++] = src[p++];
+        }
+      h = g;
+    }
+
+  return (NULL);
+}
+
+void *Sort_Kmers(HITS_DB *block, int *len)
+{ THREAD    threads[NTHREADS];
+  Tuple_Arg parmt[NTHREADS];
+  Comp_Arg  parmf[NTHREADS];
+  Lex_Arg   parmx[NTHREADS];
+  int       mersort[16];
+
+  KmerPos  *src, *trg, *rez;
+  int       kmers, nreads;
+  int       i, j, x, z;
+  uint64    h;
+
+  for (i = 0; i < NTHREADS; i++)
+    parmx[i].sptr = (int64 *) alloca(NTHREADS*BPOWR*sizeof(int64));
+
+  for (i = 0; i < 16; i++)
+    mersort[i] = 0;
+  for (i = 0; i < Kshift; i += 8)
+    mersort[i>>3] = 1;
+
+  if (NormShift == NULL && BIASED)
+    { double scale;
+
+      NormShift = (int *) Malloc(sizeof(int)*(Kmer+1),"Allocating Sort_Kmers bias shift");
+      if (NormShift == NULL)
+        exit (1);
+      for (i = 0; i <= Kmer; i++)
+        NormShift[i] = Kshift - 2*i;
+      LogNorm = 10000 * Kmer;
+      LogThresh = 10000 * (Kmer-MAX_BIAS);
+
+      scale = -10000. / log(4.);
+      for (i = 0; i < 4; i++)
+        LogBase[i] = (int) ceil( scale * log(block->freq[i]) );
+    }
+
+  nreads = block->nreads;
+  kmers  = block->reads[nreads].boff - Kmer * nreads;
+
+  if (kmers <= 0)
+    goto no_mers;
+
+  if (VERBOSE)
+  {
+    printf("\n Kshift=%d", Kshift);
+    printf("\n BSHIFT=%d", BSHIFT);
+    printf("\n TooFrequent=%d", TooFrequent);
+    printf("\n (Kshift-1)/BSHIFT + (TooFrequent < INT32_MAX)=%d", ((Kshift-1)/BSHIFT + (TooFrequent < INT32_MAX)));
+    printf("\n sizeof(KmerPos)=%ld", sizeof(KmerPos));
+    printf("\n nreads=%d", nreads);
+    printf("\n Kmer=%d", Kmer);
+    printf("\n block->reads[nreads].boff=%lld", (block->reads[nreads].boff));
+    printf("\n kmers=%d", kmers);
+    printf("\n sizeof(KmerPos)*(kmers+1)=%ld", (sizeof(KmerPos)*(kmers+1)));
+    fflush(stdout);
+  }
+
+  if (( (Kshift-1)/BSHIFT + (TooFrequent < INT32_MAX) ) & 0x1)
+    { trg = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+2),"Allocating Sort_Kmers vectors");
+      src = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+2),"Allocating Sort_Kmers vectors");
+    }
+  else
+    { src = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+2),"Allocating Sort_Kmers vectors");
+      trg = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+2),"Allocating Sort_Kmers vectors");
+    }
+  if (VERBOSE) printf("\n Allocated %d of %ld (%lu bytes) at %p", (kmers+1), sizeof(KmerPos), (sizeof(KmerPos)*(kmers+1)), (void*)trg);
+  if (src == NULL || trg == NULL)
+    exit (1);
+
+  if (VERBOSE)
+    { printf("\n   Kmer count = ");
+      Print_Number((int64) kmers,0,stdout);
+      printf("\n   Using %.2fGb of space\n",(1. * kmers) / 33554432);
+      fflush(stdout);
+    }
+
+  TA_block = block;
+  TA_list  = src;
+  TA_track = block->tracks;
+
+  for (i = 0; i < NTHREADS; i++)
+    { parmt[i].tnum = i;
+      parmt[i].kptr = parmx[i].tptr;
+      for (j = 0; j < BPOWR; j++)
+        parmt[i].kptr[j] = 0;
+    }
+
+  if (BIASED)
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,biased_tuple_thread,parmt+i);
+  else
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,tuple_thread,parmt+i);
+
+  for (i = 0; i < NTHREADS; i++)
+    pthread_join(threads[i],NULL);
+
+  x = 0;
+  for (i = 0; i < NTHREADS; i++)
+    { parmx[i].beg = x;
+      j = (int) ((((int64) nreads) * (i+1)) >> NSHIFT);
+      parmx[i].end = x = block->reads[j].boff - j*Kmer;
+    }
+
+  rez = (KmerPos *) lex_sort(mersort,(Double *) src,(Double *) trg,parmx);
+  if (BIASED || TA_track != NULL)
+    for (i = 0; i < NTHREADS; i++)
+      kmers -= parmt[i].fill;
+
+  if (TooFrequent < INT32_MAX && kmers > 0)
+    { parmf[0].beg = 0;
+      for (i = 1; i < NTHREADS; i++)
+        { x = (((int64) i)*kmers) >> NSHIFT;
+          h = rez[x-1].code;
+          while (rez[x].code == h)
+            x += 1;
+          parmf[i-1].end = parmf[i].beg = x;
+        }
+      parmf[NTHREADS-1].end = kmers;
+
+      if (rez[kmers-1].code == 0xffffffffffffffffllu)
+        rez[kmers].code = 0;
+      else
+        rez[kmers].code = 0xffffffffffffffffllu;
+
+      if (src == rez)
+        { FR_src = src;
+          FR_trg = rez = trg;
+        }
+      else
+        { FR_src = trg;
+          FR_trg = rez = src;
+        }
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_create(threads+i,NULL,compsize_thread,parmf+i);
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_join(threads[i],NULL);
+
+      x = 0;
+      for (i = 0; i < NTHREADS; i++)
+        { z = parmf[i].kept;
+          parmf[i].kept = x;
+          x += z;
+        }
+      kmers = x;
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_create(threads+i,NULL,compress_thread,parmf+i);
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_join(threads[i],NULL);
+    }
+
+  rez[kmers].code   = 0xffffffffffffffffllu;
+  rez[kmers+1].code = 0;
+    
+  if (src != rez)
+    free(src);
+  else
+    free(trg);
+
+#ifdef TEST_KSORT
+  { int i;
+
+    printf("\nKMER SORT:\n");
+    for (i = 0; i < HOW_MANY && i < kmers; i++)
+      { KmerPos *c = rez+i;
+        printf(" %5d / %5d / %10lld\n",c->read,c->rpos,c->code);
+      }
+    fflush(stdout);
+  }
+#endif
+
+  if (VERBOSE)
+    { if (TooFrequent < INT32_MAX || BIASED || TA_track != NULL)
+        { printf("   Revised kmer count = ");
+          Print_Number((int64) kmers,0,stdout);
+          printf("\n");
+        }
+      printf("   Index occupies %.2fGb\n",(1. * kmers) / 67108864);
+      fflush(stdout);
+    }
+
+  if (kmers <= 0)
+    { free(rez);
+      goto no_mers;
+    }
+
+  if (kmers > (int64) (MEM_LIMIT/(4*sizeof(KmerPos))))
+    { fprintf(stderr,"Warning: Block size too big, index occupies more than 1/4 of");
+      if (MEM_LIMIT == MEM_PHYSICAL)
+        fprintf(stderr," physical memory (%.1fGb)\n",(1.*MEM_LIMIT)/0x40000000ll);
+      else
+        fprintf(stderr," desired memory allocation (%.1fGb)\n",(1.*MEM_LIMIT)/0x40000000ll);
+      fflush(stderr);
+    }
+
+  *len = kmers;
+  return (rez);
+
+no_mers:
+  *len = 0;
+  return (NULL);
+}
+
+
+/*******************************************************************************************
+ *
+ *  FILTER MATCH
+ *
+ ********************************************************************************************/
+
+static int find_tuple(uint64 x, KmerPos *a, int n)
+{ int l, r, m;
+
+  // smallest k s.t. a[k].code >= x (or n if does not exist)
+
+  l = 0;
+  r = n;
+  while (l < r)
+    { m = ((l+r) >> 1);
+      if (a[m].code < x)
+        l = m+1;
+      else
+        r = m;
+    }
+  return (l);
+}
+
+  //  Determine what *will* be the size of the merged list and histogram of sizes for given cutoffs
+
+static KmerPos  *MG_alist;
+static KmerPos  *MG_blist;
+static SeedPair *MG_hits;
+static int       MG_comp;
+static int       MG_self;
+
+typedef struct
+  { int    abeg, aend;
+    int    bbeg, bend;
+    int64 *kptr;
+    int64  nhits;
+    int    limit;
+    int64  hitgram[MAXGRAM];
+  } Merge_Arg;
+
+static void *count_thread(void *arg)
+{ Merge_Arg  *data  = (Merge_Arg *) arg;
+  KmerPos    *asort = MG_alist;
+  KmerPos    *bsort = MG_blist;
+  int64      *gram  = data->hitgram;
+  int64       nhits = 0;
+  int         aend  = data->aend;
+
+  int64  ct;
+  int    ia, ib;
+  int    jb, ja;
+  uint64 ca, cb;
+  uint64 da, db;
+  int    ar, ap;
+  int    a, b;
+
+  ia = data->abeg;
+  ca = asort[ia].code;
+  ib = data->bbeg;
+  cb = bsort[ib].code;
+  if (MG_self)
+    { while (1)
+        { while (cb < ca)
+            cb = bsort[++ib].code;
+          while (cb > ca)
+            ca = asort[++ia].code;
+          if (cb == ca)
+            { ja = ia++;
+              while ((da = asort[ia].code) == ca)
+                ia += 1;
+              jb = ib++;
+              while ((db = bsort[ib].code) == cb)
+                ib += 1;
+
+              if (ia > aend)
+                { if (ja >= aend)
+                    break;
+                  da = asort[ia = aend].code;
+                  db = bsort[ib = data->bend].code;
+                }
+
+              ct = 0;
+              b  = jb;
+              if (IDENTITY)
+                for (a = ja; a < ia; a++)
+                  { ar = asort[a].read;
+                    if (MG_comp)
+                      { while (b < ib && bsort[b].read <= ar)
+                          b += 1;
+                      }
+                    else
+                      { ap = asort[a].rpos;
+                        while (b < ib && bsort[b].read < ar)
+                          b += 1;
+                        while (b < ib && bsort[b].read == ar && bsort[b].rpos < ap)
+                          b += 1;
+                      }
+                    ct += (b-jb);
+                  }
+              else
+                for (a = ja; a < ia; a++)
+                  { ar = asort[a].read;
+                    while (b < ib && bsort[b].read < ar)
+                      b += 1;
+                    ct += (b-jb);
+                  }
+
+              nhits += ct;
+              ca = da;
+              cb = db;
+
+              if (ct < MAXGRAM)
+                gram[ct] += 1;
+            }
+        }
+    }
+  else
+    { while (1)
+        { while (cb < ca)
+            cb = bsort[++ib].code;
+          while (cb > ca)
+            ca = asort[++ia].code;
+          if (cb == ca)
+            { ja = ia++;
+              while ((da = asort[ia].code) == ca)
+                ia += 1;
+              jb = ib++;
+              while ((db = bsort[ib].code) == cb)
+                ib += 1;
+
+              if (ia > aend)
+                { if (ja >= aend)
+                    break;
+                  da = asort[ia = aend].code;
+                  db = bsort[ib = data->bend].code;
+                }
+
+              ct  = (ia-ja);
+              ct *= (ib-jb);
+
+              nhits += ct;
+              ca = da;
+              cb = db;
+
+              if (ct < MAXGRAM)
+                gram[ct] += 1;
+            }
+        }
+    }
+
+  data->nhits = nhits;
+
+  return (NULL);
+}
+
+  //  Produce the merged list now that the list has been allocated and
+  //    the appropriate cutoff determined.
+
+static void *merge_thread(void *arg)
+{ Merge_Arg  *data  = (Merge_Arg *) arg;
+  int64      *kptr  = data->kptr;
+  KmerPos    *asort = MG_alist;
+  KmerPos    *bsort = MG_blist;
+  SeedPair   *hits  = MG_hits;
+  int64       nhits = data->nhits;
+  int         aend  = data->aend;
+  int         limit = data->limit;
+
+  int64  ct;
+  int    ia, ib;
+  int    jb, ja;
+  uint64 ca, cb;
+  uint64 da, db;
+  int    ar, ap;
+  int    a, b, c;
+
+  ia = data->abeg;
+  ca = asort[ia].code;
+  ib = data->bbeg;
+  cb = bsort[ib].code;
+  if (MG_self)
+    { while (1)
+        { while (cb < ca)
+            cb = bsort[++ib].code;
+          while (cb > ca)
+            ca = asort[++ia].code;
+          if (cb == ca)
+            { ja = ia++;
+              while ((da = asort[ia].code) == ca)
+                ia += 1;
+              jb = ib++;
+              while ((db = bsort[ib].code) == cb)
+                ib += 1;
+
+              if (ia > aend)
+                { if (ja >= aend)
+                    break;
+                  da = asort[ia = aend].code;
+                  db = bsort[ib = data->bend].code;
+                }
+
+              ct = 0;
+              b  = jb;
+              if (IDENTITY)
+                for (a = ja; a < ia; a++)
+                  { ar = asort[a].read;
+                    if (MG_comp)
+                      { while (b < ib && bsort[b].read <= ar)
+                          b += 1;
+                      }
+                    else
+                      { ap = asort[a].rpos;
+                        while (b < ib && bsort[b].read < ar)
+                          b += 1;
+                        while (b < ib && bsort[b].read == ar && bsort[b].rpos < ap)
+                          b += 1;
+                      }
+                    ct += (b-jb);
+                  }
+              else
+                for (a = ja; a < ia; a++)
+                  { ar = asort[a].read;
+                    while (b < ib && bsort[b].read < ar)
+                      b += 1;
+                    ct += (b-jb);
+                  }
+
+              if (ct < limit)
+                { b = jb;
+                  if (IDENTITY)
+                    for (a = ja; a < ia; a++)
+                      { ap = asort[a].rpos;
+                        ar = asort[a].read;
+                        if (MG_comp)
+                          { while (b < ib && bsort[b].read <= ar)
+                              b += 1;
+                          }
+                        else
+                          { while (b < ib && bsort[b].read < ar)
+                              b += 1;
+                            while (b < ib && bsort[b].read == ar && bsort[b].rpos < ap)
+                              b += 1;
+                          }
+                        if ((ct = b-jb) > 0)
+                          { kptr[ap & BMASK] += ct;
+                            for (c = jb; c < b; c++)
+                              { hits[nhits].bread = bsort[c].read;
+                                hits[nhits].aread = ar;
+                                hits[nhits].apos  = ap; 
+                                hits[nhits].diag  = ap - bsort[c].rpos;
+                                nhits += 1;
+                              }
+                          }
+                      }
+                  else
+                    for (a = ja; a < ia; a++)
+                      { ap = asort[a].rpos;
+                        ar = asort[a].read;
+                        while (b < ib && bsort[b].read < ar)
+                          b += 1;
+                        if ((ct = b-jb) > 0)
+                          { kptr[ap & BMASK] += ct;
+                            for (c = jb; c < b; c++)
+                              { hits[nhits].bread = bsort[c].read;
+                                hits[nhits].aread = ar;
+                                hits[nhits].apos  = ap; 
+                                hits[nhits].diag  = ap - bsort[c].rpos;
+                                nhits += 1;
+                              }
+                          }
+                      }
+                }
+              ca = da;
+              cb = db;
+            }
+        }
+    }
+  else
+    { while (1)
+        { while (cb < ca)
+            cb = bsort[++ib].code;
+          while (cb > ca)
+            ca = asort[++ia].code;
+          if (cb == ca)
+            { if (ia >= aend) break;
+              ja = ia++;
+              while ((da = asort[ia].code) == ca)
+                ia += 1;
+              jb = ib++;
+              while ((db = bsort[ib].code) == cb)
+                ib += 1;
+
+              if (ia > aend)
+                { if (ja >= aend)
+                    break;
+                  da = asort[ia = aend].code;
+                  db = bsort[ib = data->bend].code;
+                }
+
+              ct = ib-jb;
+              if ((ia-ja)*ct < limit)
+                { for (a = ja; a < ia; a++)
+                    { ap = asort[a].rpos;
+                      kptr[ap & BMASK] += ct;
+                      for (b = jb; b < ib; b++)
+                        { hits[nhits].bread = bsort[b].read;
+                          hits[nhits].aread = asort[a].read;
+                          hits[nhits].apos  = ap;
+                          hits[nhits].diag  = ap - bsort[b].rpos;
+                          nhits += 1;
+                        }
+                    }
+                }
+              ca = da;
+              cb = db;
+            }
+        }
+    }
+
+  return (NULL);
+}
+
+  //  Report threads: given a segment of merged list, find all seeds and from them all alignments.
+
+static HITS_DB    *MR_ablock;
+static HITS_DB    *MR_bblock;
+static SeedPair   *MR_hits;
+static int         MR_two;
+static Align_Spec *MR_spec;
+static int         MR_tspace;
+
+typedef struct
+  { uint64   max;
+    uint64   top;
+    uint16  *trace;
+  } Trace_Buffer;
+
+static int Entwine(Path *jpath, Path *kpath, Trace_Buffer *tbuf, int *where)
+{ int   ac, b2, y2, ae;
+  int   i, j, k;
+  int   num, den, min;
+#ifdef SEE_ENTWINE
+  int   strt = 1;
+  int   iflare, oflare;
+#endif
+
+  uint16 *ktrace = tbuf->trace + (uint64) (kpath->trace);
+  uint16 *jtrace = tbuf->trace + (uint64) (jpath->trace);
+
+  min   = 10000;
+  num   = 0;
+  den   = 0;
+
+#ifdef SEE_ENTWINE
+  printf("\n");
+#endif
+
+  y2 = jpath->bbpos;
+  j  = jpath->abpos/MR_tspace;
+
+  b2 = kpath->bbpos;
+  k  = kpath->abpos/MR_tspace;
+
+  if (jpath->abpos == kpath->abpos)
+    { min = abs(y2-b2);
+      if (min == 0)
+        *where = kpath->abpos;
+    }
+
+  if (j < k)
+    { ac = k*MR_tspace;
+
+      j = 1 + 2*(k-j);
+      k = 1;
+
+      for (i = 1; i < j; i += 2)
+        y2 += jtrace[i];
+    }
+  else
+    { ac = j*MR_tspace;
+
+      k = 1 + 2*(j-k);
+      j = 1;
+
+      for (i = 1; i < k; i += 2)
+        b2 += ktrace[i];
+    }
+
+  ae = jpath->aepos;
+  if (ae > kpath->aepos)
+    ae = kpath->aepos;
+
+  while (1)
+    { ac += MR_tspace;
+      if (ac >= ae)
+        break;
+      y2 += jtrace[j];
+      b2 += ktrace[k];
+      j += 2;
+      k += 2;
+
+#ifdef SEE_ENTWINE
+      printf("   @ %5d : %5d %5d = %4d\n",ac,y2,b2,abs(b2-y2));
+#endif
+
+      i = abs(y2-b2);
+      if (i <= min)
+        { min = i;
+          if (i == 0)
+            *where = ac;
+        }
+      num += i;
+      den += 1;
+#ifdef SEE_ENTWINE
+      if (strt)
+        { strt   = 0;
+          iflare = i;
+        }
+      oflare = i;
+#endif
+    }
+
+  if (jpath->aepos == kpath->aepos)
+    { i = abs(jpath->bepos-kpath->bepos);
+      if (i <= min)
+        { min = i;
+          if (i == 0)
+            *where = kpath->aepos;
+        }
+    }
+
+#ifdef SEE_ENTWINE
+  if (den == 0)
+    printf("Nothing\n");
+  else
+    printf("MINIM = %d AVERAGE = %d  IFLARE = %d  OFLARE = %d\n",min,num/den,iflare,oflare);
+#endif
+
+  if (den == 0)
+    return (-1);
+  else
+    return (min);
+}
+
+
+//  Produce the concatentation of path1 and path2 where they are known to meet at
+//    the trace point with coordinate ap. Place this result in a big growing buffer,
+//    that gets reset when fusion is called with path1 = NULL
+
+static void Fusion(Path *path1, int ap, Path *path2, Trace_Buffer *tbuf)
+{ int     k, k1, k2;
+  int     len, diff;
+  uint16 *trace;
+
+  k1 = 2 * ((ap/MR_tspace) - (path1->abpos/MR_tspace));
+  k2 = 2 * ((ap/MR_tspace) - (path2->abpos/MR_tspace));
+
+  len = k1+(path2->tlen-k2);
+
+  if (tbuf->top + len >= tbuf->max)
+    { tbuf->max = 1.2*(tbuf->top+len) + 1000;
+      tbuf->trace = (uint16 *) Realloc(tbuf->trace,sizeof(uint16)*tbuf->max,"Allocating paths");
+      if (tbuf->trace == NULL)
+        exit (1);
+    }
+
+  trace = tbuf->trace + tbuf->top;
+  tbuf->top += len;
+
+  diff = 0;
+  len  = 0;
+  if (k1 > 0)
+    { uint16 *t = tbuf->trace + (uint64) (path1->trace);
+      for (k = 0; k < k1; k += 2)
+        { trace[len++] = t[k];
+          trace[len++] = t[k+1];
+          diff += t[k];
+        }
+    }
+  if (k2 < path2->tlen)
+    { uint16 *t = tbuf->trace + (uint64) (path2->trace);
+      for (k = k2; k < path2->tlen; k += 2)
+        { trace[len++] = t[k];
+          trace[len++] = t[k+1];
+          diff += t[k];
+        }
+    }
+
+  path1->aepos = path2->aepos;
+  path1->bepos = path2->bepos;
+  path1->diffs = diff;
+  path1->trace = (void *) (trace - tbuf->trace);
+  path1->tlen  = len;
+}
+
+
+static int Handle_Redundancies(Path *amatch, int novls, Path *bmatch, Trace_Buffer *tbuf)
+{ Path *jpath, *kpath;
+  int   j, k, no;
+  int   dist;
+  int   awhen = 0, bwhen = 0;
+  int   hasB;
+
+#ifdef TEST_CONTAIN
+  for (j = 0; j < novls; j++)
+    printf("  %3d: [%5d,%5d] x [%5d,%5d]\n",j,amatch[j].abpos,amatch[j].aepos,
+                                              amatch[j].bbpos,amatch[j].bepos);
+#endif
+
+  hasB = (bmatch != NULL);
+
+  for (j = 1; j < novls; j++)
+    { jpath = amatch+j;
+      for (k = j-1; k >= 0; k--)
+        { kpath = amatch+k;
+
+          if (kpath->abpos < 0)
+            continue;
+
+          if (jpath->abpos < kpath->abpos)
+
+            { if (kpath->abpos <= jpath->aepos && kpath->bbpos <= jpath->bepos)
+                { dist = Entwine(jpath,kpath,tbuf,&awhen);
+                  if (dist == 0)
+                    { if (kpath->aepos > jpath->aepos)
+                        { if (hasB)
+                            { if (MG_comp)
+                                { dist = Entwine(bmatch+k,bmatch+j,tbuf,&bwhen);
+                                  if (dist != 0)
+                                    continue;
+                                  Fusion(jpath,awhen,kpath,tbuf);
+                                  Fusion(bmatch+k,bwhen,bmatch+j,tbuf);
+                                  bmatch[j] = bmatch[k];
+#ifdef TEST_CONTAIN
+                                  printf("  Really 1");
+#endif
+                                }
+                              else
+                                { dist = Entwine(bmatch+j,bmatch+k,tbuf,&bwhen);
+                                  if (dist != 0)
+                                    continue;
+                                  Fusion(jpath,awhen,kpath,tbuf);
+                                  Fusion(bmatch+j,bwhen,bmatch+k,tbuf);
+#ifdef TEST_CONTAIN
+                                  printf("  Really 2");
+#endif
+                                }
+                            }
+                          else
+                            { Fusion(jpath,awhen,kpath,tbuf);
+#ifdef TEST_CONTAIN
+                              printf("  Really 3");
+#endif
+                            }
+                          k = j;
+                        }
+                      kpath->abpos = -1;
+#ifdef TEST_CONTAIN
+                      printf("  Fuse! A %d %d\n",j,k);
+#endif
+                    }
+                }
+            }
+
+          else // kpath->abpos <= jpath->abpos
+
+            { if (jpath->abpos <= kpath->aepos && jpath->bbpos <= kpath->bepos)
+                { dist = Entwine(kpath,jpath,tbuf,&awhen);
+                  if (dist == 0)
+                    { if (kpath->abpos == jpath->abpos)
+                        { if (kpath->aepos > jpath->aepos)
+                            { *jpath = *kpath;
+                              if (hasB)
+                                bmatch[j] = bmatch[k];
+                            }
+                        }
+                      else if (jpath->aepos > kpath->aepos)
+                        { if (hasB)
+                            { if (MG_comp)
+                                { dist = Entwine(bmatch+j,bmatch+k,tbuf,&bwhen);
+                                  if (dist != 0)
+                                    continue;
+                                  Fusion(kpath,awhen,jpath,tbuf);
+                                  *jpath = *kpath;
+                                  Fusion(bmatch+j,bwhen,bmatch+k,tbuf);
+#ifdef TEST_CONTAIN
+                                  printf("  Really 4");
+#endif
+                                }
+                              else
+                                { dist = Entwine(bmatch+k,bmatch+j,tbuf,&bwhen);
+                                  if (dist != 0)
+                                    continue;
+                                  Fusion(kpath,awhen,jpath,tbuf);
+                                  *jpath = *kpath;
+                                  Fusion(bmatch+k,bwhen,bmatch+j,tbuf);
+                                  bmatch[j] = bmatch[k];
+#ifdef TEST_CONTAIN
+                                  printf("  Really 5");
+#endif
+                                }
+                            }
+                          else
+                            { Fusion(kpath,awhen,jpath,tbuf);
+                              *jpath = *kpath;
+#ifdef TEST_CONTAIN
+                              printf("  Really 6");
+#endif
+                            }
+                          k = j;
+                        }
+                      else
+                        { *jpath = *kpath;
+                          if (hasB)
+                            bmatch[j] = bmatch[k];
+                        }
+                      kpath->abpos = -1;
+#ifdef TEST_CONTAIN
+                      printf("  Fuse! B %d %d\n",j,k);
+#endif
+                    }
+                }
+            }
+        }
+    }
+
+  no = 0;
+  for (j = 0; j < novls; j++)
+    if (amatch[j].abpos >= 0)
+      { if (hasB)
+          bmatch[no] = bmatch[j];
+        amatch[no++] = amatch[j];
+      }
+  novls = no;
+
+#ifdef TEST_CONTAIN
+  for (j = 0; j < novls; j++)
+    printf("  %3d: [%5d,%5d] x [%5d,%5d]\n",j,amatch[j].abpos,amatch[j].aepos,
+                                              amatch[j].bbpos,amatch[j].bepos);
+#endif
+
+  return (novls);
+}
+
+void Diagonal_Span(Path *path, int *mind, int *maxd)
+{ uint16 *points;
+  int     i, tlen;
+  int     dd, low, hgh;
+
+  points = path->trace;
+  tlen   = path->tlen;
+
+  dd = path->abpos - path->bbpos;
+  low = hgh = dd;
+
+  dd = path->aepos - path->bepos;
+  if (dd < low)
+    low = dd;
+  else if (dd > hgh)
+    hgh = dd;
+
+  dd = (path->abpos/MR_tspace)*MR_tspace - path->bbpos;
+  tlen -= 2;
+  for (i = 1; i < tlen; i += 2)
+    { dd += MR_tspace - points[i];
+      if (dd < low)
+        low = dd;
+      else if (dd > hgh)
+        hgh = dd;
+    }
+
+  *mind = (low >> Binshift)-1;
+  *maxd = (hgh >> Binshift)+1;
+}
+
+typedef struct
+  { int64       beg, end;
+    int        *score;
+    int        *lastp;
+    int        *lasta;
+    Work_Data  *work;
+    FILE       *ofile1;
+    FILE       *ofile2;
+    int64       nfilt;
+    int64       ncheck;
+  } Report_Arg;
+
+static void *report_thread(void *arg)
+{ Report_Arg  *data   = (Report_Arg *) arg;
+  SeedPair    *hits   = MR_hits;
+  Double      *hitd   = (Double *) MR_hits;
+  char        *aseq   = (char *) (MR_ablock->bases);
+  char        *bseq   = (char *) (MR_bblock->bases);
+  HITS_READ   *aread  = MR_ablock->reads;
+  HITS_READ   *bread  = MR_bblock->reads;
+  int         *score  = data->score;
+  int         *scorp  = data->score + 1;
+  int         *scorm  = data->score - 1;
+  int         *lastp  = data->lastp;
+  int         *lasta  = data->lasta;
+  Work_Data   *work   = data->work;
+  FILE        *ofile1 = data->ofile1;
+  FILE        *ofile2 = data->ofile2;
+  int          afirst = MR_ablock->tfirst;
+  int          bfirst = MR_bblock->tfirst;
+  int          maxdiag = ( MR_ablock->maxlen >> Binshift);
+  int          mindiag = (-MR_bblock->maxlen >> Binshift);
+
+  Overlap     _ovla, *ovla = &_ovla;
+  Overlap     _ovlb, *ovlb = &_ovlb;
+  Alignment   _align, *align = &_align;
+  Path        *apath = &(ovla->path);
+  Path        *bpath;
+  int64        nfilt = 0;
+  int64        ahits = 0;
+  int64        bhits = 0;
+  int          small, tbytes;
+
+  int    AOmax, BOmax;
+  int    novla, novlb;
+  Path  *amatch, *bmatch;
+
+  Trace_Buffer _tbuf, *tbuf = &_tbuf;
+
+  Double *hitc;
+  int     minhit;
+  uint64  cpair;
+  uint64  npair = 0;
+  int64   nidx, eidx;
+
+  //  In ovl and align roles of A and B are reversed, as the B sequence must be the
+  //    complemented sequence !!
+
+  align->flags = ovla->flags = ovlb->flags = MG_comp;
+  align->path  = apath;
+
+  if (MR_tspace <= TRACE_XOVR)
+    { small  = 1;
+      tbytes = sizeof(uint8);
+    }
+  else
+    { small  = 0;
+      tbytes = sizeof(uint16);
+    }
+
+  AOmax = BOmax = MATCH_CHUNK;
+  amatch = Malloc(sizeof(Path)*AOmax,"Allocating match vector");
+  bmatch = Malloc(sizeof(Path)*BOmax,"Allocating match vector");
+
+  tbuf->max   = 2*TRACE_CHUNK;
+  tbuf->trace = Malloc(sizeof(short)*tbuf->max,"Allocating trace vector");
+
+  if (amatch == NULL || bmatch == NULL || tbuf->trace == NULL)
+    exit (1);
+
+  fwrite(&ahits,sizeof(int64),1,ofile1);
+  fwrite(&MR_tspace,sizeof(int),1,ofile1);
+  if (MR_two)
+    { fwrite(&bhits,sizeof(int64),1,ofile2);
+      fwrite(&MR_tspace,sizeof(int),1,ofile2);
+    }
+
+  minhit = (Hitmin-1)/Kmer + 1;
+  hitc   = hitd + (minhit-1);
+  eidx   = data->end - minhit;
+  nidx   = data->beg;
+  for (cpair = hitd[nidx].p2; nidx < eidx; cpair = npair)
+    if (hitc[nidx].p2 != cpair)
+      { nidx += 1;
+        while ((npair = hitd[nidx].p2) == cpair)
+          nidx += 1;
+      }
+    else
+      { int   ar, br;
+        int   alen, blen;
+        int   doA, doB;
+        int   setaln, amark, amark2;
+        int   apos, bpos, diag;
+        int64 lidx, sidx;
+        int64 f, h2;
+
+        ar = hits[nidx].aread;
+        br = hits[nidx].bread;
+        alen = aread[ar].rlen;
+        blen = bread[br].rlen;
+        if (alen < HGAP_MIN && blen < HGAP_MIN)
+          { nidx += 1;
+            while ((npair = hitd[nidx].p2) == cpair)
+              nidx += 1;
+            continue;
+          }
+
+#ifdef TEST_GATHER
+        printf("%5d vs %5d : %5d x %5d\n",br+bfirst,ar+afirst,blen,alen);
+#endif
+        setaln = 1;
+        doA = doB = 0;
+        amark2 = 0;
+        novla  = novlb = 0;
+        tbuf->top = 0;
+        for (sidx = nidx; hitd[nidx].p2 == cpair; nidx = h2)
+          { amark  = amark2 + PANEL_SIZE;
+            amark2 = amark  - PANEL_OVERLAP;
+
+            h2 = lidx = nidx;
+            do
+              { apos  = hits[nidx].apos;
+                npair = hitd[++nidx].p2;
+                if (apos <= amark2)
+                  h2 = nidx;
+              }
+            while (npair == cpair && apos <= amark);
+
+            if (nidx-lidx < minhit) continue;
+
+            for (f = lidx; f < nidx; f++)
+              { apos = hits[f].apos;
+                diag = hits[f].diag >> Binshift;
+                if (apos - lastp[diag] >= Kmer)
+                  score[diag] += Kmer;
+                else
+                  score[diag] += apos - lastp[diag];
+                lastp[diag] = apos;
+              }
+
+#ifdef TEST_GATHER
+            printf("  %6lld upto %6d",nidx-lidx,amark);
+#endif
+
+            for (f = lidx; f < nidx; f++)
+              { apos = hits[f].apos;
+                diag = hits[f].diag;
+                bpos = apos - diag;
+                diag = diag >> Binshift;
+                if (apos > lasta[diag] &&
+                     (score[diag] + scorp[diag] >= Hitmin || score[diag] + scorm[diag] >= Hitmin))
+                  { if (setaln)
+                      { setaln = 0;
+                        align->aseq = aseq + aread[ar].boff;
+                        align->bseq = bseq + bread[br].boff;
+                        align->alen = alen;
+                        align->blen = blen;
+                        ovlb->bread = ovla->aread = ar + afirst;
+                        ovlb->aread = ovla->bread = br + bfirst;
+                        doA = (alen >= HGAP_MIN);
+                        doB = (SYMMETRIC && blen >= HGAP_MIN &&
+                                   (ar != br || !MG_self || !MG_comp));
+                      }
+#ifdef TEST_GATHER
+                    else
+                      printf("\n                    ");
+
+                    if (scorm[diag] > scorp[diag])
+                      printf("  %5d.. x %5d.. %5d (%3d)",
+                             bpos,apos,apos-bpos,score[diag]+scorm[diag]);
+                    else
+                      printf("  %5d.. x %5d.. %5d (%3d)",
+                             bpos,apos,apos-bpos,score[diag]+scorp[diag]);
+#endif
+                    nfilt += 1;
+
+                    bpath = Local_Alignment(align,work,MR_spec,apos-bpos,apos-bpos,apos+bpos,-1,-1);
+
+                    { int low, hgh, ae;
+
+                      Diagonal_Span(apath,&low,&hgh);
+                      if (diag < low)
+                        low = diag;
+                      else if (diag > hgh)
+                        hgh = diag;
+                      ae = apath->aepos;
+                      for (diag = low; diag <= hgh; diag++)
+                        if (ae > lasta[diag])
+                          lasta[diag] = ae;
+#ifdef TEST_GATHER
+                      printf(" %d - %d @ %d",low,hgh,apath->aepos);
+#endif
+                    }
+
+#ifdef FALCON_DALIGNER_P
+                    if (apath->abpos > 24 && apath->bbpos > 24)
+                      continue;
+
+                    if (alen - apath->aepos > 24 && blen - apath->bepos > 24)
+                      continue;
+
+                    if (alen < 500 || blen < 500)
+                      continue;
+#endif  // FALCON_DALIGNER_P
+
+                    if ((apath->aepos-apath->abpos) + (apath->bepos-apath->bbpos) >= MINOVER)
+                      { if (doA)
+                          { if (novla >= AOmax)
+                              { AOmax = 1.2*novla + MATCH_CHUNK;
+                                amatch = Realloc(amatch,sizeof(Path)*AOmax,
+                                                 "Reallocating match vector");
+                                if (amatch == NULL)
+                                  exit (1);
+                              }
+                            if (tbuf->top + apath->tlen > tbuf->max)
+                              { tbuf->max = 1.2*(tbuf->top+apath->tlen) + TRACE_CHUNK;
+                                tbuf->trace = Realloc(tbuf->trace,sizeof(short)*tbuf->max,
+                                                      "Reallocating trace vector");
+                                if (tbuf->trace == NULL)
+                                  exit (1);
+                              }
+                            amatch[novla] = *apath;
+                            amatch[novla].trace = (void *) (tbuf->top);
+                            memcpy(tbuf->trace+tbuf->top,apath->trace,sizeof(short)*apath->tlen);
+                            novla += 1;
+                            tbuf->top += apath->tlen;
+                          }
+                        if (doB)
+                          { if (novlb >= BOmax)
+                              { BOmax = 1.2*novlb + MATCH_CHUNK;
+                                bmatch = Realloc(bmatch,sizeof(Path)*BOmax,
+                                                        "Reallocating match vector");
+                                if (bmatch == NULL)
+                                  exit (1);
+                              }
+                            if (tbuf->top + bpath->tlen > tbuf->max)
+                              { tbuf->max = 1.2*(tbuf->top+bpath->tlen) + TRACE_CHUNK;
+                                tbuf->trace = Realloc(tbuf->trace,sizeof(short)*tbuf->max,
+                                                      "Reallocating trace vector");
+                                if (tbuf->trace == NULL)
+                                  exit (1);
+                              }
+                            bmatch[novlb] = *bpath;
+                            bmatch[novlb].trace = (void *) (tbuf->top);
+                            memcpy(tbuf->trace+tbuf->top,bpath->trace,sizeof(short)*bpath->tlen);
+                            novlb += 1;
+                            tbuf->top += bpath->tlen;
+                          }
+
+#ifdef TEST_GATHER
+                        printf("  [%5d,%5d] x [%5d,%5d] = %4d",
+                               apath->abpos,apath->aepos,apath->bbpos,apath->bepos,apath->diffs);
+#endif
+#ifdef SHOW_OVERLAP
+                        printf("\n\n                    %d(%d) vs %d(%d)\n\n",
+                               ovla->aread,ovla->alen,ovla->bread,ovla->blen);
+                        Print_ACartoon(stdout,align,ALIGN_INDENT);
+#ifdef SHOW_ALIGNMENT
+                        Compute_Trace_ALL(align,work);
+                        printf("\n                      Diff = %d\n",align->path->diffs);
+                        Print_Alignment(stdout,align,work,
+                                        ALIGN_INDENT,ALIGN_WIDTH,ALIGN_BORDER,0,5);
+#endif
+#endif // SHOW_OVERLAP
+
+                      }
+#ifdef TEST_GATHER
+                    else
+                      printf("  No alignment %d",
+                              ((apath->aepos-apath->abpos) + (apath->bepos-apath->bbpos))/2);
+#endif
+                  }
+              }
+
+            for (f = lidx; f < nidx; f++)
+              { diag = hits[f].diag >> Binshift;
+                score[diag] = lastp[diag] = 0;
+              }
+#ifdef TEST_GATHER
+            printf("\n");
+#endif
+          }
+
+        for (f = sidx; f < nidx; f++)
+          { int d;
+
+            diag = hits[f].diag >> Binshift;
+            for (d = diag; d <= maxdiag; d++)
+              if (lasta[d] == 0)
+                break;
+              else
+                lasta[d] = 0;
+            for (d = diag-1; d >= mindiag; d--)
+              if (lasta[d] == 0)
+                break;
+              else
+                lasta[d] = 0;
+          }
+
+         
+         { int i;
+
+#ifdef TEST_CONTAIN
+           if (novla > 1 || novlb > 1)
+             printf("\n%5d vs %5d:\n",ar,br);
+#endif
+
+           if (novla > 1)
+             { if (novlb > 1)
+                 novla = novlb = Handle_Redundancies(amatch,novla,bmatch,tbuf);
+               else
+                 novla = Handle_Redundancies(amatch,novla,NULL,tbuf);
+             }
+           else if (novlb > 1)
+             novlb = Handle_Redundancies(bmatch,novlb,NULL,tbuf);
+
+           for (i = 0; i < novla; i++)
+             { ovla->path = amatch[i];
+               ovla->path.trace = tbuf->trace + (uint64) (ovla->path.trace);
+               if (small)
+                 Compress_TraceTo8(ovla);
+               Write_Overlap(ofile1,ovla,tbytes);
+             }
+           for (i = 0; i < novlb; i++)
+             { ovlb->path = bmatch[i];
+               ovlb->path.trace = tbuf->trace + (uint64) (ovlb->path.trace);
+               if (small)
+                 Compress_TraceTo8(ovlb);
+               Write_Overlap(ofile2,ovlb,tbytes);
+             }
+           ahits += novla;
+           bhits += novlb;
+         }
+      }
+
+  free(tbuf->trace);
+  free(bmatch);
+  free(amatch);
+
+  data->nfilt  = nfilt;
+  data->ncheck = ahits + bhits;
+
+  if (MR_two)
+    { rewind(ofile2);
+      fwrite(&bhits,sizeof(int64),1,ofile2);
+      fclose(ofile2);
+    }
+  else
+    ahits += bhits;
+
+  rewind(ofile1);
+  fwrite(&ahits,sizeof(int64),1,ofile1);
+  fclose(ofile1);
+
+  return (NULL);
+}
+
+
+/*******************************************************************************************
+ *
+ *  THE ALGORITHM
+ *
+ ********************************************************************************************/
+
+void Match_Filter(char *aname, HITS_DB *ablock, char *bname, HITS_DB *bblock,
+                  void *vasort, int alen, void *vbsort, int blen,
+                  int comp, Align_Spec *aspec)
+{ THREAD     threads[NTHREADS];
+  Merge_Arg  parmm[NTHREADS];
+  Lex_Arg    parmx[NTHREADS];
+  Report_Arg parmr[NTHREADS];
+  int        pairsort[16];
+
+  SeedPair *khit, *hhit;
+  SeedPair *work1, *work2;
+  int64     nhits;
+  int64     nfilt, ncheck;
+
+  KmerPos  *asort, *bsort;
+  int64     atot, btot;
+
+  asort = (KmerPos *) vasort;
+  bsort = (KmerPos *) vbsort;
+
+  atot = ablock->totlen;
+  btot = bblock->totlen;
+
+  MR_tspace = Trace_Spacing(aspec);
+
+  { int64 powr;
+    int   i, nbyte;
+
+    for (i = 0; i < NTHREADS; i++)
+      parmx[i].sptr = (int64 *) alloca(NTHREADS*BPOWR*sizeof(int64));
+
+    for (i = 0; i < 16; i++)
+      pairsort[i] = 0;
+
+    powr = 1;
+    for (nbyte = 0; powr < ablock->maxlen; nbyte += 1)
+      powr <<= 8;
+    for (i = 4; i < 4+nbyte; i++)
+      pairsort[i] = 1;
+
+    powr = 1;
+    for (nbyte = 0; powr < ablock->nreads; nbyte += 1)
+      powr <<= 8;
+    for (i = 8; i < 8+nbyte; i++)
+      pairsort[i] = 1;
+
+    powr = 1;
+    for (nbyte = 0; powr < bblock->nreads; nbyte += 1)
+      powr <<= 8;
+    for (i = 12; i < 12+nbyte; i++)
+      pairsort[i] = 1;
+  }
+
+  nfilt = ncheck = nhits = 0;
+
+  if (VERBOSE)
+    { if (comp)
+        printf("\nComparing %s to c(%s)\n",aname,bname);
+      else
+        printf("\nComparing %s to %s\n",aname,bname);
+    }
+
+  if (alen == 0 || blen == 0)
+    goto zerowork;
+
+  { int    i, j, p;
+    uint64 c;
+    int    limit;
+
+    MG_alist = asort;
+    MG_blist = bsort;
+    MG_self  = (aname == bname);
+    MG_comp  = comp;
+
+    parmm[0].abeg = parmm[0].bbeg = 0;
+    for (i = 1; i < NTHREADS; i++)
+      { p = (int) ((((int64) alen) * i) >> NSHIFT);
+        if (p > 0)
+          { c = asort[p-1].code;
+            while (asort[p].code == c)
+              p += 1;
+          }
+        parmm[i].abeg = parmm[i-1].aend = p;
+        parmm[i].bbeg = parmm[i-1].bend = find_tuple(asort[p].code,bsort,blen);
+      }
+    parmm[NTHREADS-1].aend = alen;
+    parmm[NTHREADS-1].bend = blen;
+
+    for (i = 0; i < NTHREADS; i++)
+      for (j = 0; j < MAXGRAM; j++)
+        parmm[i].hitgram[j] = 0;
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,count_thread,parmm+i);
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_join(threads[i],NULL);
+
+    if (VERBOSE)
+      printf("\n");
+    if (MEM_LIMIT > 0)
+      { int64 histo[MAXGRAM];
+        int64 tom, avail;
+
+        for (j = 0; j < MAXGRAM; j++)
+          histo[j] = parmm[0].hitgram[j];
+        for (i = 1; i < NTHREADS; i++)
+          for (j = 0; j < MAXGRAM; j++)
+            histo[j] += parmm[i].hitgram[j];
+
+        avail = (int64) (MEM_LIMIT - (sizeof_DB(ablock) + sizeof_DB(bblock))) / sizeof(Double);
+        if (asort == bsort || avail > alen + 2*blen)
+          avail = (avail - alen) / 2;
+        else
+          avail = avail - (alen + blen);
+        avail *= .98;
+
+        tom = 0;
+        for (j = 0; j < MAXGRAM; j++)
+          { tom += j*histo[j];
+            if (tom > avail)
+              break;
+          }
+        limit = j;
+
+        if (limit <= 1)
+          { fprintf(stderr,"\nError: Insufficient ");
+            if (MEM_LIMIT == MEM_PHYSICAL)
+              fprintf(stderr," physical memory (%.1fGb), reduce block size\n",
+                             (1.*MEM_LIMIT)/0x40000000ll);
+            else
+              { fprintf(stderr," memory allocation (%.1fGb),",(1.*MEM_LIMIT)/0x40000000ll);
+                fprintf(stderr," reduce block size or increase allocation\n");
+              }
+            fflush(stderr);
+            exit (1);
+          }
+        if (limit < 10)
+          { fprintf(stderr,"\nWarning: Sensitivity hampered by low ");
+            if (MEM_LIMIT == MEM_PHYSICAL)
+              fprintf(stderr," physical memory (%.1fGb), reduce block size\n",
+                             (1.*MEM_LIMIT)/0x40000000ll);
+            else
+              { fprintf(stderr," memory allocation (%.1fGb),",(1.*MEM_LIMIT)/0x40000000ll);
+                fprintf(stderr," reduce block size or increase allocation\n");
+              }
+            fflush(stderr);
+          }
+        if (VERBOSE)
+          { printf("   Capping mutual k-mer matches over %d (effectively -t%d)\n",
+                   limit,(int) sqrt(1.*limit));
+            fflush(stdout);
+          }
+
+        for (i = 0; i < NTHREADS; i++)
+          { parmm[i].nhits = 0;
+            for (j = 1; j < limit; j++)
+              parmm[i].nhits += j * parmm[i].hitgram[j];
+            parmm[i].limit = limit;
+          }
+      }
+    else
+      for (i = 0; i < NTHREADS; i++)
+        parmm[i].limit = INT32_MAX;
+
+    nhits = parmm[0].nhits;
+    for (i = 1; i < NTHREADS; i++)
+      parmm[i].nhits = nhits += parmm[i].nhits;
+
+    if (VERBOSE)
+      { printf("   Hit count = ");
+        Print_Number(nhits,0,stdout);
+        if (asort == bsort || nhits >= blen)
+          printf("\n   Highwater of %.2fGb space\n",
+                       (1. * (alen + 2*nhits)) / 67108864);
+        else
+          printf("\n   Highwater of %.2fGb space\n",
+                       (1. * (alen + blen + nhits)) / 67108864);
+        fflush(stdout);
+      }
+
+    if (nhits == 0)
+      goto zerowork;
+
+    if (asort == bsort)
+      hhit = work1 = (SeedPair *) Malloc(sizeof(SeedPair)*(nhits+1),
+                                         "Allocating daligner hit vectors");
+    else
+      { if (nhits >= blen)
+          bsort = (KmerPos *) Realloc(bsort,sizeof(SeedPair)*(nhits+1),
+                                       "Reallocating daligner sort vectors");
+        hhit = work1 = (SeedPair *) bsort;
+      }
+    khit = work2 = (SeedPair *) Malloc(sizeof(SeedPair)*(nhits+1),
+                                        "Allocating daligner hit vectors");
+    if (hhit == NULL || khit == NULL || bsort == NULL)
+      exit (1);
+
+    MG_blist = bsort;
+    MG_hits  = khit;
+
+    for (i = NTHREADS-1; i > 0; i--)
+      parmm[i].nhits = parmm[i-1].nhits;
+    parmm[0].nhits = 0;
+
+    for (i = 0; i < NTHREADS; i++)
+      { parmm[i].kptr = parmx[i].tptr;
+        for (p = 0; p < BPOWR; p++)
+          parmm[i].kptr[p] = 0;
+      }
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,merge_thread,parmm+i);
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_join(threads[i],NULL);
+
+#ifdef TEST_PAIRS
+    printf("\nSETUP SORT:\n");
+    for (i = 0; i < HOW_MANY && i < nhits; i++)
+      { SeedPair *c = khit+i;
+        printf(" %5d / %5d / %5d /%5d\n",c->aread,c->bread,c->apos,c->apos-c->diag);
+      }
+#endif
+  }
+
+  { int   i;
+    int64 x;
+
+    x = 0;
+    for (i = 0; i < NTHREADS-1; i++)
+      { parmx[i].beg = x;
+        parmx[i].end = x = parmm[i+1].nhits;
+      }
+    parmx[NTHREADS-1].beg = x;
+    parmx[NTHREADS-1].end = nhits;
+
+    khit = (SeedPair *) lex_sort(pairsort,(Double *) khit,(Double *) hhit,parmx);
+
+    khit[nhits].aread = 0x7fffffff;
+    khit[nhits].bread = 0x7fffffff;
+    khit[nhits].diag  = 0x7fffffff;
+    khit[nhits].apos  = 0;
+
+#ifdef TEST_CSORT
+    printf("\nCROSS SORT %lld:\n",nhits);
+    for (i = 0; i < HOW_MANY && i <= nhits; i++)
+      { SeedPair *c = khit+i;
+        printf(" %5d / %5d / %5d /%5d\n",c->aread,c->bread,c->apos,c->apos-c->diag);
+      }
+#endif
+  }
+
+  { int    i, w;
+    int64  p;
+    int    d;
+    int   *counters;
+
+    MR_ablock = ablock;
+    MR_bblock = bblock;
+    MR_hits   = khit;
+    MR_two    = ! MG_self && SYMMETRIC;
+    MR_spec   = aspec;
+
+    parmr[0].beg = 0;
+    for (i = 1; i < NTHREADS; i++)
+      { p = (nhits * i) >> NSHIFT;
+        if (p > 0)
+          { d = khit[p-1].bread;
+            while ((khit[p].bread) == d)
+              p += 1;
+          }
+        parmr[i].beg = parmr[i-1].end = p;
+      }
+    parmr[NTHREADS-1].end = nhits;
+
+    w = ((ablock->maxlen >> Binshift) - ((-bblock->maxlen) >> Binshift)) + 1;
+    counters = (int *) Malloc(NTHREADS*3*w*sizeof(int),"Allocating diagonal buckets");
+    if (counters == NULL)
+      exit (1);
+
+    for (i = 0; i < 3*w*NTHREADS; i++)
+      counters[i] = 0;
+    for (i = 0; i < NTHREADS; i++)
+      { if (i == 0)
+          parmr[i].score = counters - ((-bblock->maxlen) >> Binshift);
+        else
+          parmr[i].score = parmr[i-1].lasta + w;
+        parmr[i].lastp = parmr[i].score + w;
+        parmr[i].lasta = parmr[i].lastp + w;
+        parmr[i].work  = New_Work_Data();
+
+        parmr[i].ofile1 =
+             Fopen(Catenate(aname,".",bname,Numbered_Suffix((comp?".C":".N"),i,".las")),"w");
+        if (parmr[i].ofile1 == NULL)
+          exit (1);
+        if (MG_self)
+          parmr[i].ofile2 = parmr[i].ofile1;
+        else if (SYMMETRIC)
+          { parmr[i].ofile2 = 
+                Fopen(Catenate(bname,".",aname,Numbered_Suffix((comp?".C":".N"),i,".las")),"w");
+            if (parmr[i].ofile2 == NULL)
+              exit (1);
+          }
+      }
+
+#ifdef NOTHREAD
+
+    for (i = 0; i < NTHREADS; i++)
+      report_thread(parmr+i);
+
+#else
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,report_thread,parmr+i);
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_join(threads[i],NULL);
+
+#endif
+
+    if (VERBOSE)
+      for (i = 0; i < NTHREADS; i++)
+        { nfilt  += parmr[i].nfilt;
+          ncheck += parmr[i].ncheck;
+        }
+
+    for (i = 0; i < NTHREADS; i++)
+      Free_Work_Data(parmr[i].work);
+    free(counters);
+  }
+
+  free(work2);
+  free(work1);
+  goto epilogue;
+
+zerowork:
+  { FILE *ofile;
+    int   i;
+
+    nhits  = 0;
+    for (i = 0; i < NTHREADS; i++)
+      { ofile = Fopen(Catenate(aname,".",bname,Numbered_Suffix((comp?".C":".N"),i,".las")),"w");
+        fwrite(&nhits,sizeof(int64),1,ofile);
+        fwrite(&MR_tspace,sizeof(int),1,ofile);
+        fclose(ofile);
+        if (! MG_self && SYMMETRIC)
+          { ofile = Fopen(Catenate(bname,".",aname,Numbered_Suffix((comp?".C":".N"),i,".las")),"w");
+            fwrite(&nhits,sizeof(int64),1,ofile);
+            fwrite(&MR_tspace,sizeof(int),1,ofile);
+            fclose(ofile);
+          }
+      }
+  }
+
+epilogue:
+
+  if (VERBOSE)
+    { int width;
+
+      if (nhits <= 0)
+        width = 1;
+      else
+        width = ((int) log10((double) nhits)) + 1;
+      width += (width-1)/3;
+
+      printf("\n     ");
+      Print_Number(nhits,width,stdout);
+      printf(" %d-mers (%e of matrix)\n     ",Kmer,(1.*nhits/atot)/btot);
+      Print_Number(nfilt,width,stdout);
+      printf(" seed hits (%e of matrix)\n     ",(1.*nfilt/atot)/btot);
+      Print_Number(ncheck,width,stdout);
+      printf(" confirmed hits (%e of matrix)\n",(1.*ncheck/atot)/btot);
+      fflush(stdout);
+    }
+}
diff --git a/DALIGNER/filter.h b/DALIGNER/filter.h
new file mode 100644
index 0000000..db565f1
--- /dev/null
+++ b/DALIGNER/filter.h
@@ -0,0 +1,35 @@
+/*******************************************************************************************
+ *
+ *  Filter interface for the dazzler.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ ********************************************************************************************/
+
+#ifndef _FILTER
+
+#define _FILTER
+
+#include "DB.h"
+#include "align.h"
+
+extern int    BIASED;
+extern int    VERBOSE;
+extern int    MINOVER;
+extern int    HGAP_MIN;
+extern int    SYMMETRIC;
+extern int    IDENTITY;
+
+extern uint64 MEM_LIMIT;
+extern uint64 MEM_PHYSICAL;
+
+int Set_Filter_Params(int kmer, int binshift, int suppress, int hitmin, int nthreads); 
+
+void *Sort_Kmers(HITS_DB *block, int *len);
+
+void Match_Filter(char *aname, HITS_DB *ablock, char *bname, HITS_DB *bblock,
+                  void *atable, int alen, void *btable, int blen,
+                  int comp, Align_Spec *asettings);
+
+#endif
diff --git a/DALIGNER/filter_p.c b/DALIGNER/filter_p.c
new file mode 100644
index 0000000..d5ce6f0
--- /dev/null
+++ b/DALIGNER/filter_p.c
@@ -0,0 +1,2 @@
+#define FALCON_DALIGNER_P
+#include "filter.c"
diff --git a/DALIGNER/py_utils/DAPI.py b/DALIGNER/py_utils/DAPI.py
new file mode 100644
index 0000000..e7906fb
--- /dev/null
+++ b/DALIGNER/py_utils/DAPI.py
@@ -0,0 +1,72 @@
+from ctypes import *
+
+_READIDX = c_uint16
+_TRACE_XOVR = 125
+
+class HITS_READ(Structure):
+    _fields_ = [ ("origin", c_int),
+                 ("begin", _READIDX),
+                 ("end", _READIDX),
+                 ("boff", c_int64),
+                 ("coff", c_int64),
+                 ("flags", c_int)]
+
+
+class HITS_TRACK(Structure):
+    pass
+
+HITS_TRACK._fields_ = [ ("_track", POINTER(HITS_TRACK)),
+                        ("name", c_char_p),
+                        ("size", c_int),
+                        ("anno", c_void_p),
+                        ("data", c_void_p)]
+
+
+class HITS_DB(Structure):
+    _fields_ = [ ( "oreads", c_int ),
+                 ( "breads", c_int ),
+                 ( "cutoff", c_int ),
+                 ( "all", c_int),
+                 ( "freq", c_float * 4),
+                 ( "maxlen", c_int),
+                 ( "totlen", c_int64),
+                 ( "nreads", c_int),
+                 ( "trimmed", c_int),
+                 ( "part", c_int),
+                 ( "ofirst", c_int),
+                 ( "bfirst", c_int),
+                 ( "path", c_char_p),
+                 ( "loaded", c_int),
+                 ( "bases", c_void_p),
+                 ( "reads", POINTER(HITS_READ)),
+                 ( "tracks", POINTER(HITS_TRACK)) ]
+
+
+DB = CDLL("./DB.so")
+
+libc = CDLL("libc.so.6")
+
+fopen = libc.fopen
+fclose = libc.fclose
+fread = libc.fread
+fread.argtypes = [c_void_p, c_size_t, c_size_t, c_void_p]
+
+open_DB = DB.Open_DB
+open_DB.argtypes = [c_char_p, POINTER(HITS_DB)]
+open_DB.restype = c_int
+
+load_read  = DB.Load_Read
+load_read.argtypes = [POINTER(HITS_DB), c_int, c_char_p, c_int]
+load_read.restype = c_int
+
+close_DB = DB.Close_DB
+close_DB.argtypes = [POINTER(HITS_DB)]
+close_DB.restype = c_int
+
+trim_DB = DB.Trim_DB
+trim_DB.argtypes = [POINTER(HITS_DB)]
+trim_DB.restype = c_int
+
+new_read_buffer = DB.New_Read_Buffer
+new_read_buffer.argtypes = [ POINTER(HITS_DB) ]
+new_read_buffer.restype = POINTER(c_char)
diff --git a/DALIGNER/py_utils/DAPipe.py b/DALIGNER/py_utils/DAPipe.py
new file mode 100644
index 0000000..161e107
--- /dev/null
+++ b/DALIGNER/py_utils/DAPipe.py
@@ -0,0 +1,93 @@
+from pypeflow.common import *
+from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+from pypeflow.task import PypeTask, PypeThreadTaskBase, PypeTaskBase
+from pypeflow.controller import PypeWorkflow, PypeThreadWorkflow
+import os
+import uuid
+import sys
+
+
+def run_script(job_data, job_type = "SGE" ):
+    if job_type == "SGE":
+        job_name = job_data["job_name"]
+        cwd = job_data["cwd"]
+        sge_option = job_data["sge_option"]
+        script_fn = job_data["script_fn"]
+        sge_cmd="qsub -N {job_name} {sge_option} -o {cwd}/sge_log -j y\
+                 -S /bin/bash {script}".format(job_name=job_name,
+                                               cwd=os.getcwd(),
+                                               sge_option=sge_option,
+                                               script=script_fn)
+
+        #print sge_cmd
+        os.system( sge_cmd )
+        os.system( "sleep 1")
+    elif job_type == "local":
+        os.system( "bash %s" % job_data["script_fn"] )
+
+def wait_for_file(filename, task = None, job_name = ""):
+    while 1:
+        time.sleep(60)
+        if os.path.exists(filename):
+            break
+
+        if task != None:
+            if task.shutdown_event != None and task.shutdown_event.is_set():
+                os.system("qdel %s" % job_name)
+                break
+
+def run_daligner(self):
+    daligner_cmd = self.parameters["daligner_cmd"]
+    job_id = self.parameters["job_id"]
+    cwd = self.parameters["cwd"]
+    script_dir = os.path.join( cwd )
+    script_fn =  os.path.join( script_dir , "rj_%05d.sh" % (job_id))
+    log_path = os.path.join( script_dir, "rj_%05d.log" % (job_id))
+    script = []
+    script.append( "export PATH=~/task2014/dazzler/DALIGNER/:$PATH" )
+    script.append( "cd %s" % cwd )
+    script.append( "/usr/bin/time "+ daligner_cmd + ( " >& %s " % log_path ) + ( " && touch %s" % fn( self.job_done ) ) )
+
+    with open(script_fn,"w") as script_file:
+        script_file.write("\n".join(script))
+
+    job_name = self.URL.split("/")[-1]
+    job_name += "-"+str(uuid.uuid1())[:8]
+    job_data = {"job_name": job_name,
+                "cwd": cwd,
+                "sge_option": " -pe smp 6 -q huasm ",
+                "script_fn": script_fn }
+    run_script(job_data, job_type = "SGE")
+    wait_for_file( fn( self.job_done ), task=self, job_name=job_name )
+
+if __name__ == "__main__":
+    prefix = sys.argv[1]
+    concurrent_jobs = 64
+    PypeThreadWorkflow.setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
+    wf = PypeThreadWorkflow()
+
+    job_id = 0
+    db_file = makePypeLocalFile(os.path.abspath( "./%s.db" % prefix ))
+    with open("run_jobs.sh") as f :
+        for l in f :
+            l = l.strip().split()
+            if l[0] == "daligner":
+                try:
+                    os.makedirs("./job_%05d" % job_id)
+                except OSError:
+                    pass
+                os.system("cd ./job_%05d;ln -s ../.%s.bps .; ln -s ../.%s.idx .; ln -s ../%s.db ." % (job_id, prefix, prefix, prefix) )
+                job_done = makePypeLocalFile(os.path.abspath( "./job_%05d/job_%05d_done" % (job_id,job_id)  ))
+                parameters =  {"daligner_cmd": " ".join(l),
+                               "cwd": os.path.join(os.getcwd(), "job_%05d" % job_id),
+                               "job_id": job_id}
+                make_daligner_task = PypeTask( inputs = {"db_file": db_file},
+                                               outputs = {"job_done": job_done},
+                                               parameters = parameters,
+                                               TaskType = PypeThreadTaskBase,
+                                               URL = "task://localhost/mtask_%05d" % job_id )
+                daligner_task = make_daligner_task ( run_daligner )
+                wf.addTask(daligner_task)
+                job_id += 1
+                print job_id
+    wf.refreshTargets(updateFreq = 45) #all
diff --git a/DALIGNER/py_utils/DBLA_to_falcon.py b/DALIGNER/py_utils/DBLA_to_falcon.py
new file mode 100644
index 0000000..6482da3
--- /dev/null
+++ b/DALIGNER/py_utils/DBLA_to_falcon.py
@@ -0,0 +1,42 @@
+from DAPI import *
+from ctypes import *
+import LAPI
+import sys
+
+
+rcmap = dict(zip("ACGTacgtNn-","TGCATGCANN-"))
+def rc(seq):
+    return "".join([rcmap[c] for c in seq[::-1]])
+
+ovl_data = LAPI.get_ovl_data(sys.argv[1])
+
+db = HITS_DB()
+open_DB(sys.argv[2], db)
+trim_DB(db)
+aln = LAPI.Alignment()
+aln.aseq = LAPI.new_read_buffer(db)
+aln.bseq = LAPI.new_read_buffer(db)
+
+count = 0
+for aread in ovl_data:
+    LAPI.load_read(db, aread, aln.aseq, 2)
+    aseq = cast( aln.aseq, c_char_p)
+    aseq = aseq.value
+    print "%08d" % aread, aseq
+    for aln_data in ovl_data[aread]:
+        aread, bread, acc, abpos, aepos, alen, comp, bbpos, bepos, blen = aln_data
+
+        LAPI.load_read(db, bread, aln.bseq, 2)
+
+        bseq = cast(aln.bseq, c_char_p)
+        bseq = bseq.value
+        bseq = bseq[bbpos:bepos]
+        #load_read(db, ovl.bread, aln.bseq, 2)
+        if comp == 1:
+            bseq = rc(bseq)
+        print bread, bseq
+    print "+ +"
+    count += 1
+print "- -"
+
+close_DB(db)
diff --git a/DALIGNER/py_utils/FALCON_ASM_NOTE b/DALIGNER/py_utils/FALCON_ASM_NOTE
new file mode 100644
index 0000000..4869ca9
--- /dev/null
+++ b/DALIGNER/py_utils/FALCON_ASM_NOTE
@@ -0,0 +1,27 @@
+
+# example for using daligner and Falcon to generate an assembly
+
+export PATH=/path_to_DAZZLER/DALIGNER/:$PATH
+export PATH=/path_to_DAZZLER/DAZZ_DB/:$PATH
+. /path_to_HBAR_FALCON/bin/activate
+
+for f in `cat input.fofn `; do fasta2DB yeast $f; done
+DBsplit -x500 -s400 yeast
+HPCdaligner -v -dal4 -t16 -m.70 -l1000 -s1000  yeast > run_jobs.sh
+bash run_jobs.sh
+
+cp /path_to_DAZZLER/DALIGNER/DB.so .
+cp /path_to_DAZZLER/DALIGNER/py_utils/*.py .
+for i in 1 2 3 4; do
+    python DBLA_to_falcon.py yeast.$i.las yeast.db | falcon_sense.py \
+    --min_cov 4 --output_multi --min_idt 0.70 --trim_size 10 \
+    --n_core 24 > preads.$i.fa;
+done
+
+mkdir falcon_asm
+cat preads.1.fa preads.2.fa preads.3.fa preads.4.fa > falcon_asm/preads.fa
+
+cd falcon_asm
+falcon_overlap.py --d_core 3 --n_core 24 --min_len 8000 preads.fa > preads.ovl
+falcon_asm.py preads.ovl preads.fa
+falcon_fixasm.py
diff --git a/DALIGNER/py_utils/LAPI.py b/DALIGNER/py_utils/LAPI.py
new file mode 100644
index 0000000..f02fcf0
--- /dev/null
+++ b/DALIGNER/py_utils/LAPI.py
@@ -0,0 +1,110 @@
+from ctypes import *
+from DAPI import *
+
+_READIDX = c_uint16
+_TRACE_XOVR = 125
+
+class Path(Structure):
+    _fields_ = [("trace", POINTER(c_uint16)),
+                ("tlen", _READIDX),
+                ("diffs", _READIDX),
+                ("abpos", _READIDX),
+                ("bbpos", _READIDX),
+                ("aepos", _READIDX),
+                ("bepos", _READIDX)]
+
+
+class Alignment(Structure):
+    _fields_ = [("path", POINTER(Path)),
+                ("aseq", POINTER(c_char)),
+                ("bseq", POINTER(c_char)),
+                ("alen", c_int),
+                ("blen", c_int),
+                ("flag", c_int)]
+
+class Overlap(Structure):
+    _fields_ = [("path", Path),
+                ("aread", c_int),
+                ("bread", c_int),
+                ("alen", _READIDX),
+                ("blen", _READIDX),
+                ("flags", c_int)]
+
+libc = CDLL("libc.so.6")
+
+fopen = libc.fopen
+fclose = libc.fclose
+fread = libc.fread
+fread.argtypes = [c_void_p, c_size_t, c_size_t, c_void_p]
+
+"""void *realloc(void *ptr, size_t size);"""
+realloc = libc.realloc
+realloc.argtypes = [c_void_p, c_size_t]
+realloc.restype = c_void_p
+
+"""void *malloc(size_t size);"""
+malloc = libc.malloc
+malloc.argtypes = [c_size_t]
+malloc.restype = c_void_p
+
+ptr_size = sizeof(c_void_p)
+ovl_IO_size = sizeof(Overlap) - ptr_size
+
+def _read_overlap(in_f, ovl):
+    p = ovl.path.trace
+    fread( cast( addressof(ovl) + ptr_size, c_void_p ), ovl_IO_size, 1, in_f )
+    ovl.path.trace = p
+
+def _read_trace(in_f, ovl, tbytes):
+    fread( cast(ovl.path.trace, c_void_p), tbytes, ovl.path.tlen, in_f )
+
+def get_ovl_data(fn):
+
+    in_f = fopen(fn, "r")
+
+    novl = c_int64()
+    tspace = c_int()
+    fread(addressof(novl) , sizeof(c_int64), 1, in_f)
+    fread(addressof(tspace) , sizeof(c_int), 1, in_f)
+
+    if tspace.value < _TRACE_XOVR:
+        small  = 1
+        tbytes = sizeof(c_uint8)
+    else:
+        small  = 0
+        tbytes = sizeof(c_uint16)
+
+    tmax = 1000
+    trace = cast( malloc( sizeof(c_uint16) * tmax ), POINTER(c_uint16) )
+
+    ovl = Overlap()
+    ovl_data = {}
+
+    for j in xrange(novl.value):
+        _read_overlap(in_f, ovl)
+
+        if ovl.path.tlen > tmax:
+            tmax = 1.2*ovl.path.tlen + 100
+            trace = cast( realloc( trace, sizeof(c_uint16) * tmax ),  POINTER(c_uint16) )
+
+        ovl.path.trace = trace
+        _read_trace(in_f, ovl, tbytes)
+
+        if ovl.alen < 8000:
+            continue
+        if ovl.path.abpos > 50 and ovl.path.bbpos > 50:
+            continue
+        if ovl.alen - ovl.path.aepos > 50 and ovl.blen - ovl.path.bepos > 50:
+            continue
+        comp = ovl.flags & 0x1
+        bbpos, bepos  = ovl.path.bbpos, ovl.path.bepos
+        if comp == 1:
+            bbpos, bepos = ovl.blen - bepos, ovl.blen - bbpos
+        acc = 100 - (200.0 * ovl.path.diffs / ( ovl.path.aepos - ovl.path.abpos + ovl.path.aepos - ovl.path.abpos ))
+
+        ovl_data.setdefault(ovl.aread,[])
+
+        ovl_data[ovl.aread].append( (ovl.aread, ovl.bread, acc, ovl.path.abpos,  ovl.path.aepos, ovl.alen, comp, bbpos, bepos, ovl.blen) )
+    fclose(in_f)
+
+    return ovl_data
diff --git a/DALIGNER/py_utils/LAPipe.py b/DALIGNER/py_utils/LAPipe.py
new file mode 100644
index 0000000..e16f12d
--- /dev/null
+++ b/DALIGNER/py_utils/LAPipe.py
@@ -0,0 +1,177 @@
+from pypeflow.common import *
+from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+from pypeflow.task import PypeTask, PypeThreadTaskBase, PypeTaskBase
+from pypeflow.controller import PypeWorkflow, PypeThreadWorkflow
+import os
+import uuid
+import sys
+
+
+
+def run_script(job_data, job_type = "SGE" ):
+    if job_type == "SGE":
+        job_name = job_data["job_name"]
+        cwd = job_data["cwd"]
+        sge_option = job_data["sge_option"]
+        script_fn = job_data["script_fn"]
+        sge_cmd="qsub -N {job_name} {sge_option} -o {cwd}/sge_log -j y\
+                 -S /bin/bash {script}".format(job_name=job_name,
+                                               cwd=os.getcwd(),
+                                               sge_option=sge_option,
+                                               script=script_fn)
+
+        #print sge_cmd
+        os.system( sge_cmd )
+        os.system( "sleep 1")
+    elif job_type == "local":
+        os.system( "bash %s" % job_data["script_fn"] )
+
+def wait_for_file(filename, task = None, job_name = ""):
+    while 1:
+        time.sleep(30)
+        if os.path.exists(filename):
+            break
+
+        if task != None:
+            if task.shutdown_event != None and task.shutdown_event.is_set():
+                os.system("qdel %s" % job_name)
+                break
+
+def run_p_task(self):
+    p_script_fn = self.parameters["p_file"]
+    job_id = self.parameters["job_id"]
+    cwd = self.parameters["cwd"]
+    script_dir = os.path.join( cwd )
+    script_fn =  os.path.join( script_dir , "rp_%05d.sh" % (job_id))
+    log_path = os.path.join( script_dir, "rp_%05d.log" % (job_id))
+    script = []
+    script.append( "export PATH=~/task2014/dazzler/DALIGNER/:$PATH" )
+    script.append( "cd %s" % cwd )
+    script.append( ("/usr/bin/time bash %s " % p_script_fn)  + ( " >& %s " % log_path ) + ( " && touch %s" % fn( self.job_done ) ) )
+
+    with open(script_fn,"w") as script_file:
+        script_file.write("\n".join(script))
+
+
+
+    job_name = self.URL.split("/")[-1]
+    job_name += "-"+str(uuid.uuid1())[:8]
+    job_data = {"job_name": job_name,
+                "cwd": cwd,
+                "sge_option": " -pe smp 2 -q huasm ",
+                "script_fn": script_fn }
+    run_script(job_data, job_type = "SGE")
+    wait_for_file( fn( self.job_done ), task=self, job_name=job_name )
+
+def run_consensus_task(self):
+    job_id = self.parameters["job_id"]
+    cwd = self.parameters["cwd"]
+    script_dir = os.path.join( cwd )
+    script_fn =  os.path.join( script_dir , "cp_%05d.sh" % (job_id))
+    log_path = os.path.join( script_dir, "cp_%05d.log" % (job_id))
+
+    with open( os.path.join(cwd, "c_%05d.sh" % job_id), "w") as p_script:
+        print >> p_script, ". /mnt/secondary/Share/HBAR_03202013/bin/activate"
+        print >> p_script, "cd .."
+        print >> p_script, """./LA4Falcon -o -f:%s las_files/%s.%d.las | """ % (prefix, prefix, job_id),
+        print >> p_script, """ falcon_sense.py --trim --output_multi --min_idt 0.70 --min_cov 4 --local_match_count_threshold 3 --max_n_read 800 --n_core 8 > %s""" % fn(self.out_file)
+
+    script = []
+    script.append( "cd %s" % cwd )
+    script.append( ("/usr/bin/time bash c_%05d.sh " % job_id )  + ( " >& %s " % log_path ) + ( " && touch c_%05d_done" % job_id  ) )
+
+    with open(script_fn,"w") as script_file:
+        script_file.write("\n".join(script))
+
+    job_name = self.URL.split("/")[-1]
+    job_name += "-"+str(uuid.uuid1())[:8]
+    job_data = {"job_name": job_name,
+                "cwd": cwd,
+                "sge_option": " -pe smp 6 -q huasm ",
+                "script_fn": script_fn }
+    run_script(job_data, job_type = "SGE")
+    wait_for_file( os.path.join(cwd,"c_%05d_done" % job_id) , task=self, job_name=job_name )
+
+
+if __name__ == "__main__":
+
+    prefix = sys.argv[1]
+
+    concurrent_jobs = 16
+    PypeThreadWorkflow.setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
+    wf = PypeThreadWorkflow()
+
+    mjob_data = {}
+
+    with open("run_jobs.sh") as f:
+        for l in f:
+            l = l.strip().split()
+            if l[0] not in ( "LAsort", "LAmerge" ):
+                continue
+            if l[0] == "LAsort":
+                p_id = int( l[2].split(".")[1] )
+                mjob_data.setdefault( p_id, [] )
+                mjob_data[p_id].append(  " ".join(l) )
+            if l[0] == "LAmerge":
+                l2 = l[2].split(".")
+                if l2[1] == "L2":
+                    p_id = int(  l[2].split(".")[2] )
+                    mjob_data.setdefault( p_id, [] )
+                    mjob_data[p_id].append(  " ".join(l) )
+                else:
+                    p_id = int( l[2].split(".")[1] )
+                    mjob_data.setdefault( p_id, [] )
+                    mjob_data[p_id].append(  " ".join(l) )
+
+    db_file = makePypeLocalFile(os.path.abspath( "./%s.db" % prefix ))
+
+    for p_id in mjob_data:
+        s_data = mjob_data[p_id]
+
+        try:
+            os.makedirs("./p_%05d" % p_id)
+            os.makedirs("./p_%05d/sge_log" % p_id)
+        except OSError:
+            pass
+        try:
+            os.makedirs("./preads")
+        except OSError:
+            pass
+        try:
+            os.makedirs("./las_files")
+        except OSError:
+            pass
+        with open("./p_%05d/p_%05d.sh" % (p_id, p_id), "w") as p_script:
+            print >> p_script, """for f in `find .. -wholename "*job*/%s.%d.%s.*.*.las"`; do ln -sf $f .; done""" % (prefix, p_id, prefix)
+            for l in s_data:
+                print >> p_script, l
+                print >> p_script, "mv %s.%d.las ../las_files" % (prefix, p_id)
+
+        p_file = os.path.abspath( "./p_%05d/p_%05d.sh" % (p_id, p_id) )
+        job_done = makePypeLocalFile(os.path.abspath( "./p_%05d/p_%05d_done" % (p_id,p_id)  ))
+        parameters =  {"p_file": p_file,
+                       "cwd": os.path.join(os.getcwd(), "p_%05d" % p_id),
+                       "job_id": p_id}
+        make_p_task = PypeTask( inputs = {"db_file": db_file},
+                                       outputs = {"job_done": job_done},
+                                       parameters = parameters,
+                                       TaskType = PypeThreadTaskBase,
+                                       URL = "task://localhost/ptask_%05d" % p_id )
+        p_task = make_p_task ( run_p_task )
+
+        wf.addTask(p_task)
+
+
+        out_file = makePypeLocalFile(os.path.abspath( "./preads/out.%04d.fa" % p_id  ))
+        parameters =  {"cwd": os.path.join(os.getcwd(), "preads" ),
+                       "job_id": p_id}
+        make_c_task = PypeTask( inputs = {"job_done": job_done},
+                                outputs = {"out_file": out_file },
+                                parameters = parameters,
+                                TaskType = PypeThreadTaskBase,
+                                URL = "task://localhost/ct_%05d" % p_id )
+
+        c_task = make_c_task( run_consensus_task )
+        wf.addTask(c_task)
+        print p_id
+    wf.refreshTargets(updateFreq = 15) #all
diff --git a/DAMASKER/DB.c b/DAMASKER/DB.c
new file mode 100644
index 0000000..46046b7
--- /dev/null
+++ b/DAMASKER/DB.c
@@ -0,0 +1,1736 @@
+/*******************************************************************************************
+ *
+ *  Compressed data base module.  Auxiliary routines to open and manipulate a data base for
+ *    which the sequence and read information are separated into two separate files, and the
+ *    sequence is compressed into 2-bits for each base.  Support for tracks of additional
+ *    information, and trimming according to the current partition.
+ *
+ *  Author :  Gene Myers
+ *  Date   :  July 2013
+ *  Revised:  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <dirent.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+
+/*******************************************************************************************
+ *
+ *  GENERAL UTILITIES
+ *
+ ********************************************************************************************/
+
+char *Prog_Name;
+
+#ifdef INTERACTIVE
+
+char Ebuffer[1000];
+
+#endif
+
+void *Malloc(int64 size, char *mesg)
+{ void *p;
+
+  if ((p = malloc(size)) == NULL)
+    { if (mesg == NULL)
+        EPRINTF(EPLACE,"%s: Out of memory\n",Prog_Name);
+      else
+        EPRINTF(EPLACE,"%s: Out of memory (%s)\n",Prog_Name,mesg);
+    }
+  return (p);
+}
+
+void *Realloc(void *p, int64 size, char *mesg)
+{ if (size <= 0)
+    size = 1;
+  if ((p = realloc(p,size)) == NULL)
+    { if (mesg == NULL)
+        EPRINTF(EPLACE,"%s: Out of memory\n",Prog_Name);
+      else
+        EPRINTF(EPLACE,"%s: Out of memory (%s)\n",Prog_Name,mesg);
+    }
+  return (p);
+}
+
+char *Strdup(char *name, char *mesg)
+{ char *s;
+
+  if (name == NULL)
+    return (NULL);
+  if ((s = strdup(name)) == NULL)
+    { if (mesg == NULL)
+        EPRINTF(EPLACE,"%s: Out of memory\n",Prog_Name);
+      else
+        EPRINTF(EPLACE,"%s: Out of memory (%s)\n",Prog_Name,mesg);
+    }
+  return (s);
+}
+
+FILE *Fopen(char *name, char *mode)
+{ FILE *f;
+
+  if (name == NULL || mode == NULL)
+    return (NULL);
+  if ((f = fopen(name,mode)) == NULL)
+    EPRINTF(EPLACE,"%s: Cannot open %s for '%s'\n",Prog_Name,name,mode);
+  return (f);
+}
+
+char *PathTo(char *name)
+{ char *path, *find;
+
+  if (name == NULL)
+    return (NULL);
+  if ((find = rindex(name,'/')) != NULL)
+    { *find = '\0';
+      path = Strdup(name,"Extracting path from");
+      *find = '/';
+    }
+  else
+    path = Strdup(".","Allocating default path");
+  return (path);
+}
+
+char *Root(char *name, char *suffix)
+{ char *path, *find, *dot;
+  int   epos;
+
+  if (name == NULL)
+    return (NULL);
+  find = rindex(name,'/');
+  if (find == NULL)
+    find = name;
+  else
+    find += 1;
+  if (suffix == NULL)
+    { dot = strchr(find,'.');
+      if (dot != NULL)
+        *dot = '\0';
+      path = Strdup(find,"Extracting root from");
+      if (dot != NULL)
+        *dot = '.';
+    }
+  else
+    { epos  = strlen(find);
+      epos -= strlen(suffix);
+      if (epos > 0 && strcasecmp(find+epos,suffix) == 0)
+        { find[epos] = '\0';
+          path = Strdup(find,"Extracting root from");
+          find[epos] = suffix[0];
+        }
+      else
+        path = Strdup(find,"Allocating root");
+    }
+  return (path);
+}
+
+char *Catenate(char *path, char *sep, char *root, char *suffix)
+{ static char *cat = NULL;
+  static int   max = -1;
+  int len;
+
+  if (path == NULL || root == NULL || sep == NULL || suffix == NULL)
+    return (NULL);
+  len =  strlen(path);
+  len += strlen(sep);
+  len += strlen(root);
+  len += strlen(suffix);
+  if (len > max)
+    { max = ((int) (1.2*len)) + 100;
+      if ((cat = (char *) realloc(cat,max+1)) == NULL)
+        { EPRINTF(EPLACE,"%s: Out of memory (Making path name for %s)\n",Prog_Name,root);
+          return (NULL);
+        }
+    }
+  sprintf(cat,"%s%s%s%s",path,sep,root,suffix);
+  return (cat);
+}
+
+char *Numbered_Suffix(char *left, int num, char *right)
+{ static char *suffix = NULL;
+  static int   max = -1;
+  int len;
+
+  if (left == NULL || right == NULL)
+    return (NULL);
+  len =  strlen(left);
+  len += strlen(right) + 40;
+  if (len > max)
+    { max = ((int) (1.2*len)) + 100;
+      if ((suffix = (char *) realloc(suffix,max+1)) == NULL)
+        { EPRINTF(EPLACE,"%s: Out of memory (Making number suffix for %d)\n",Prog_Name,num);
+          return (NULL);
+        }
+    }
+  sprintf(suffix,"%s%d%s",left,num,right);
+  return (suffix);
+}
+
+
+#define  COMMA  ','
+
+//  Print big integers with commas/periods for better readability
+
+void Print_Number(int64 num, int width, FILE *out)
+{ if (width == 0)
+    { if (num < 1000ll)
+        fprintf(out,"%lld",num);
+      else if (num < 1000000ll)
+        fprintf(out,"%lld%c%03lld",num/1000ll,COMMA,num%1000ll);
+      else if (num < 1000000000ll)
+        fprintf(out,"%lld%c%03lld%c%03lld",num/1000000ll,
+                                           COMMA,(num%1000000ll)/1000ll,COMMA,num%1000ll);
+      else
+        fprintf(out,"%lld%c%03lld%c%03lld%c%03lld",num/1000000000ll,
+                                                   COMMA,(num%1000000000ll)/1000000ll,
+                                                   COMMA,(num%1000000ll)/1000ll,COMMA,num%1000ll);
+    }
+  else
+    { if (num < 1000ll)
+        fprintf(out,"%*lld",width,num);
+      else if (num < 1000000ll)
+        { if (width <= 4)
+            fprintf(out,"%lld%c%03lld",num/1000ll,COMMA,num%1000ll);
+          else
+            fprintf(out,"%*lld%c%03lld",width-4,num/1000ll,COMMA,num%1000ll);
+        }
+      else if (num < 1000000000ll)
+        { if (width <= 8)
+            fprintf(out,"%lld%c%03lld%c%03lld",num/1000000ll,COMMA,(num%1000000ll)/1000ll,
+                                               COMMA,num%1000ll);
+          else
+            fprintf(out,"%*lld%c%03lld%c%03lld",width-8,num/1000000ll,COMMA,(num%1000000ll)/1000ll,
+                                                COMMA,num%1000ll);
+        }
+      else
+        { if (width <= 12)
+            fprintf(out,"%lld%c%03lld%c%03lld%c%03lld",num/1000000000ll,COMMA,
+                                                       (num%1000000000ll)/1000000ll,COMMA,
+                                                       (num%1000000ll)/1000ll,COMMA,num%1000ll);
+          else
+            fprintf(out,"%*lld%c%03lld%c%03lld%c%03lld",width-12,num/1000000000ll,COMMA,
+                                                        (num%1000000000ll)/1000000ll,COMMA,
+                                                        (num%1000000ll)/1000ll,COMMA,num%1000ll);
+        }
+    }
+}
+
+//  Return the number of digits, base 10, of num
+
+int  Number_Digits(int64 num)
+{ int digit;
+
+  digit = 0;
+  while (num >= 1)
+    { num /= 10;
+      digit += 1;
+    }
+  return (digit);
+}
+
+
+/*******************************************************************************************
+ *
+ *  READ COMPRESSION/DECOMPRESSION UTILITIES
+ *
+ ********************************************************************************************/
+
+//  Compress read into 2-bits per base (from [0-3] per byte representation
+
+void Compress_Read(int len, char *s)
+{ int   i;
+  char  c, d;
+  char *s0, *s1, *s2, *s3;
+
+  s0 = s;
+  s1 = s0+1;
+  s2 = s1+1;
+  s3 = s2+1;
+
+  c = s1[len];
+  d = s2[len];
+  s0[len] = s1[len] = s2[len] = 0;
+
+  for (i = 0; i < len; i += 4)
+    *s++ = (char ) ((s0[i] << 6) | (s1[i] << 4) | (s2[i] << 2) | s3[i]);
+
+  s1[len] = c;
+  s2[len] = d;
+}
+
+//  Uncompress read form 2-bits per base into [0-3] per byte representation
+
+void Uncompress_Read(int len, char *s)
+{ int   i, tlen, byte;
+  char *s0, *s1, *s2, *s3;
+  char *t;
+
+  s0 = s;
+  s1 = s0+1;
+  s2 = s1+1;
+  s3 = s2+1;
+
+  tlen = (len-1)/4;
+
+  t = s+tlen;
+  for (i = tlen*4; i >= 0; i -= 4)
+    { byte = *t--;
+      s0[i] = (char) ((byte >> 6) & 0x3);
+      s1[i] = (char) ((byte >> 4) & 0x3);
+      s2[i] = (char) ((byte >> 2) & 0x3);
+      s3[i] = (char) (byte & 0x3);
+    }
+  s[len] = 4;
+}
+
+//  Convert read in [0-3] representation to ascii representation (end with '\n')
+
+void Lower_Read(char *s)
+{ static char letter[4] = { 'a', 'c', 'g', 't' };
+
+  for ( ; *s != 4; s++)
+    *s = letter[(int) *s];
+  *s = '\0';
+}
+
+void Upper_Read(char *s)
+{ static char letter[4] = { 'A', 'C', 'G', 'T' };
+
+  for ( ; *s != 4; s++)
+    *s = letter[(int) *s];
+  *s = '\0';
+}
+
+//  Convert read in ascii representation to [0-3] representation (end with 4)
+
+void Number_Read(char *s)
+{ static char number[128] =
+    { 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+    };
+
+  for ( ; *s != '\0'; s++)
+    *s = number[(int) *s];
+  *s = 4;
+}
+
+
+/*******************************************************************************************
+ *
+ *  DB OPEN, TRIM & CLOSE ROUTINES
+ *
+ ********************************************************************************************/
+
+
+// Open the given database or dam, "path" into the supplied HITS_DB record "db". If the name has
+//   a part # in it then just the part is opened.  The index array is allocated (for all or
+//   just the part) and read in.
+// Return status of routine:
+//    -1: The DB could not be opened for a reason reported by the routine to EPLACE
+//     0: Open of DB proceeded without mishap
+//     1: Open of DAM proceeded without mishap
+
+int Open_DB(char* path, HITS_DB *db)
+{ HITS_DB dbcopy;
+  char   *root, *pwd, *bptr, *fptr, *cat;
+  int     nreads;
+  FILE   *index, *dbvis;
+  int     status, plen, isdam;
+  int     part, cutoff, all;
+  int     ufirst, tfirst, ulast, tlast;
+
+  status = -1;
+  dbcopy = *db;
+
+  plen = strlen(path);
+  if (strcmp(path+(plen-4),".dam") == 0)
+    root = Root(path,".dam");
+  else
+    root = Root(path,".db");
+  pwd = PathTo(path);
+
+  bptr = rindex(root,'.');
+  if (bptr != NULL && bptr[1] != '\0' && bptr[1] != '-')
+    { part = strtol(bptr+1,&fptr,10);
+      if (*fptr != '\0' || part == 0)
+        part = 0;
+      else
+        *bptr = '\0';
+    }
+  else
+    part = 0;
+
+  isdam = 0;
+  cat = Catenate(pwd,"/",root,".db");
+  if (cat == NULL)
+    return (-1);
+  if ((dbvis = fopen(cat,"r")) == NULL)
+    { cat = Catenate(pwd,"/",root,".dam");
+      if (cat == NULL)
+        return (-1);
+      if ((dbvis = fopen(cat,"r")) == NULL)
+        { EPRINTF(EPLACE,"%s: Could not open database %s\n",Prog_Name,path);
+          goto error;
+        }
+      isdam = 1;
+    }
+
+  if ((index = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r")) == NULL)
+    goto error1;
+  if (fread(db,sizeof(HITS_DB),1,index) != 1)
+    { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+      goto error2;
+    }
+
+  { int   p, nblocks, nfiles;
+    int64 size;
+    char  fname[MAX_NAME], prolog[MAX_NAME];
+
+    nblocks = 0;
+    if (fscanf(dbvis,DB_NFILE,&nfiles) != 1)
+      { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+        goto error2;
+      }
+    for (p = 0; p < nfiles; p++)
+      if (fscanf(dbvis,DB_FDATA,&tlast,fname,prolog) != 3)
+        { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+          goto error2;
+        }
+    if (fscanf(dbvis,DB_NBLOCK,&nblocks) != 1)
+      if (part == 0)
+        { cutoff = 0;
+          all    = 1;
+        }
+      else
+        { EPRINTF(EPLACE,"%s: DB %s has not yet been partitioned, cannot request a block !\n",
+                         Prog_Name,root);
+          goto error2;
+        }
+    else
+      { if (fscanf(dbvis,DB_PARAMS,&size,&cutoff,&all) != 3)
+          { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+            goto error2;
+          }
+        if (part > nblocks)
+          { EPRINTF(EPLACE,"%s: DB %s has only %d blocks\n",Prog_Name,root,nblocks);
+            goto error2;
+          }
+      }
+
+    if (part > 0)
+      { for (p = 1; p <= part; p++)
+          if (fscanf(dbvis,DB_BDATA,&ufirst,&tfirst) != 2)
+            { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+              goto error2;
+            }
+        if (fscanf(dbvis,DB_BDATA,&ulast,&tlast) != 2)
+          { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+            goto error2;
+          }
+      }
+    else
+      { ufirst = tfirst = 0;
+        ulast  = db->ureads;
+        tlast  = db->treads;
+      }
+  }
+
+  db->trimmed = 0;
+  db->tracks  = NULL;
+  db->part    = part;
+  db->cutoff  = cutoff;
+  db->all     = all;
+  db->ufirst  = ufirst;
+  db->tfirst  = tfirst;
+
+  nreads = ulast-ufirst;
+  if (part <= 0)
+    { db->reads = (HITS_READ *) Malloc(sizeof(HITS_READ)*(nreads+2),"Allocating Open_DB index");
+      if (db->reads == NULL)
+        goto error2;
+      db->reads += 1;
+      if (fread(db->reads,sizeof(HITS_READ),nreads,index) != (size_t) nreads)
+        { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+          free(db->reads);
+          goto error2;
+        }
+    }
+  else
+    { HITS_READ *reads;
+      int        i, r, maxlen;
+      int64      totlen;
+
+      reads = (HITS_READ *) Malloc(sizeof(HITS_READ)*(nreads+2),"Allocating Open_DB index");
+      if (reads == NULL)
+        goto error2;
+      reads += 1;
+
+      fseeko(index,sizeof(HITS_READ)*ufirst,SEEK_CUR);
+      if (fread(reads,sizeof(HITS_READ),nreads,index) != (size_t) nreads)
+        { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+          free(reads);
+          goto error2;
+        }
+
+      totlen = 0;
+      maxlen = 0;
+      for (i = 0; i < nreads; i++)
+        { r = reads[i].rlen;
+          totlen += r;
+          if (r > maxlen)
+            maxlen = r;
+        }
+
+      db->maxlen = maxlen;
+      db->totlen = totlen;
+      db->reads  = reads;
+    }
+
+  ((int *) (db->reads))[-1] = ulast - ufirst;   //  Kludge, need these for DB part
+  ((int *) (db->reads))[-2] = tlast - tfirst;
+
+  db->nreads = nreads;
+  db->path   = Strdup(Catenate(pwd,PATHSEP,root,""),"Allocating Open_DB path");
+  if (db->path == NULL)
+    goto error2;
+  db->bases  = NULL;
+  db->loaded = 0;
+
+  status = isdam;
+
+error2:
+  fclose(index);
+error1:
+  fclose(dbvis);
+error:
+  if (bptr != NULL)
+    *bptr = '.';
+
+  free(pwd);
+  free(root);
+
+  if (status < 0)
+    *db = dbcopy;
+
+  return (status);
+}
+
+
+// Trim the DB or part thereof and all loaded tracks according to the cuttof and all settings
+//   of the current DB partition.  Reallocate smaller memory blocks for the information kept
+//   for the retained reads.
+
+void Trim_DB(HITS_DB *db)
+{ int         i, j, r;
+  int         allflag, cutoff;
+  int64       totlen;
+  int         maxlen, nreads;
+  HITS_TRACK *record;
+  HITS_READ  *reads;
+
+  if (db->trimmed) return;
+
+  if (db->cutoff <= 0 && db->all) return;
+
+  cutoff = db->cutoff;
+  if (db->all)
+    allflag = 0;
+  else
+    allflag = DB_BEST;
+
+  reads  = db->reads;
+  nreads = db->nreads;
+
+  for (record = db->tracks; record != NULL; record = record->next)
+    if (strcmp(record->name,". at qvs") == 0)
+      { uint16 *table = ((HITS_QV *) record)->table;
+
+        j = 0;
+        for (i = 0; i < db->nreads; i++)
+          if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+            table[j++] = table[i];
+      }
+    else
+      { int   *anno4, size;
+        int64 *anno8;
+        char  *anno, *data;
+
+        size = record->size;
+        data = (char *) record->data; 
+        if (data == NULL)
+          { anno = (char *) record->anno;
+            j = 0;
+            for (i = r = 0; i < db->nreads; i++, r += size)
+              if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+                { memmove(anno+j,anno+r,size);
+                  j += size;
+                }
+            memmove(anno+j,anno+r,size);
+          }
+        else if (size == 4)
+          { int ai;
+
+            anno4 = (int *) (record->anno);
+            j = anno4[0] = 0;
+            for (i = 0; i < db->nreads; i++)
+              if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+                { ai = anno4[i];
+                  anno4[j+1] = anno4[j] + (anno4[i+1]-ai);
+                  memmove(data+anno4[j],data+ai,anno4[i+1]-ai);
+                  j += 1;
+                }
+            record->data = Realloc(record->data,anno4[j],NULL);
+          }
+        else // size == 8
+          { int64 ai;
+
+            anno8 = (int64 *) (record->anno);
+            j = anno8[0] = 0;
+            for (i = 0; i < db->nreads; i++)
+              if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+                { ai = anno8[i];
+                  anno8[j+1] = anno8[j] + (anno8[i+1]-ai);
+                  memmove(data+anno8[j],data+ai,anno8[i+1]-ai);
+                  j += 1;
+                }
+            record->data = Realloc(record->data,anno8[j],NULL);
+          }
+        record->anno = Realloc(record->anno,record->size*(j+1),NULL);
+      }
+
+  totlen = maxlen = 0;
+  for (j = i = 0; i < nreads; i++)
+    { r = reads[i].rlen;
+      if ((reads[i].flags & DB_BEST) >= allflag && r >= cutoff)
+        { totlen += r;
+          if (r > maxlen)
+            maxlen = r;
+          reads[j++] = reads[i];
+        }
+    }
+  
+  db->totlen  = totlen;
+  db->maxlen  = maxlen;
+  db->nreads  = j;
+  db->trimmed = 1;
+
+  if (j < nreads)
+    { db->reads = Realloc(reads-1,sizeof(HITS_READ)*(j+2),NULL);
+      db->reads += 1;
+    }
+}
+
+// The DB has already been trimmed, but a track over the untrimmed DB needs to be loaded.
+//   Trim the track by rereading the untrimmed DB index from the file system.
+
+static int Late_Track_Trim(HITS_DB *db, HITS_TRACK *track, int ispart)
+{ int         i, j, r;
+  int         allflag, cutoff;
+  int         ureads;
+  char       *root;
+  HITS_READ   read;
+  FILE       *indx;
+
+  if (!db->trimmed) return (0);
+
+  if (db->cutoff <= 0 && db->all) return (0);
+
+  cutoff = db->cutoff;
+  if (db->all)
+    allflag = 0;
+  else
+    allflag = DB_BEST;
+
+  root = rindex(db->path,'/') + 2;
+  indx = Fopen(Catenate(db->path,"","",".idx"),"r");
+  fseeko(indx,sizeof(HITS_DB) + sizeof(HITS_READ)*db->ufirst,SEEK_SET);
+  if (ispart)
+    ureads = ((int *) (db->reads))[-1];
+  else
+    ureads = db->ureads;
+
+  if (strcmp(track->name,". at qvs") == 0)
+    { EPRINTF(EPLACE,"%s: Cannot load QV track after trimming\n",Prog_Name);
+      fclose(indx);
+      EXIT(1);
+    }
+
+  { int   *anno4, size;
+    int64 *anno8;
+    char  *anno, *data;
+
+    size = track->size;
+    data = (char *) track->data; 
+    if (data == NULL)
+      { anno = (char *) track->anno;
+        j = r = 0;
+        for (i = r = 0; i < ureads; i++, r += size)
+          { if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+              { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                fclose(indx);
+                EXIT(1);
+              }
+            if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff)
+              { memmove(anno+j,anno+r,size);
+                j += size;
+              }
+            r += size;
+          }
+        memmove(anno+j,anno+r,size);
+      }
+    else if (size == 4)
+      { int ai;
+
+        anno4 = (int *) (track->anno);
+        j = anno4[0] = 0;
+        for (i = 0; i < ureads; i++)
+          { if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+              { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                fclose(indx);
+                EXIT(1);
+              }
+            if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff)
+              { ai = anno4[i];
+                anno4[j+1] = anno4[j] + (anno4[i+1]-ai);
+                memmove(data+anno4[j],data+ai,anno4[i+1]-ai);
+                j += 1;
+              }
+          }
+        track->data = Realloc(track->data,anno4[j],NULL);
+      }
+    else // size == 8
+      { int64 ai;
+
+        anno8 = (int64 *) (track->anno);
+        j = anno8[0] = 0;
+        for (i = 0; i < ureads; i++)
+          { if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+              { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                fclose(indx);
+                EXIT(1);
+              }
+            if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff)
+              { ai = anno8[i];
+                anno8[j+1] = anno8[j] + (anno8[i+1]-ai);
+                memmove(data+anno8[j],data+ai,anno8[i+1]-ai);
+                j += 1;
+              }
+          }
+        track->data = Realloc(track->data,anno8[j],NULL);
+      }
+    track->anno = Realloc(track->anno,track->size*(j+1),NULL);
+  }
+
+  fclose(indx);
+  return (0);
+}
+
+// Shut down an open 'db' by freeing all associated space, including tracks and QV structures, 
+//   and any open file pointers.  The record pointed at by db however remains (the user
+//   supplied it and so should free it).
+
+void Close_DB(HITS_DB *db)
+{ HITS_TRACK *t, *p;
+
+  if (db->loaded)
+    free(((char *) (db->bases)) - 1);
+  else if (db->bases != NULL)
+    fclose((FILE *) db->bases);
+  if (db->reads != NULL)
+    free(db->reads-1);
+  free(db->path);
+
+  Close_QVs(db);
+
+  for (t = db->tracks; t != NULL; t = p)
+    { p = t->next;
+      free(t->anno);
+      free(t->data);
+      free(t);
+    }
+}
+
+
+// Return the size in bytes of the memory occupied by a given DB
+
+int64 sizeof_DB(HITS_DB *db)
+{ int64       s;
+  HITS_TRACK *t;
+
+  s = sizeof(HITS_DB)
+    + sizeof(HITS_READ)*(db->nreads+2)
+    + strlen(db->path)+1
+    + (db->totlen+db->nreads+4);
+
+  t = db->tracks;
+  if (t != NULL && strcmp(t->name,". at qvs") == 0)
+    { HITS_QV *q = (HITS_QV *) t;
+      s += sizeof(HITS_QV)
+         + sizeof(uint16) * db->nreads
+         + q->ncodes * sizeof(QVcoding)
+         + 6;
+      t = t->next;
+    }
+
+  for (; t != NULL; t = t->next)
+    { s += sizeof(HITS_TRACK)
+         + strlen(t->name)+1
+         + t->size * (db->nreads+1);
+      if (t->data != NULL)
+        { if (t->size == 8)
+            s += sizeof(int)*((int64 *) t->anno)[db->nreads];
+          else //  t->size == 4
+            s += sizeof(int)*((int *) t->anno)[db->nreads];
+        }
+    }
+
+  return (s);
+}
+
+
+/*******************************************************************************************
+ *
+ *  QV LOAD & CLOSE ROUTINES
+ *
+ ********************************************************************************************/
+
+HITS_DB *Active_DB = NULL;  //  Last db/qv used by "Load_QVentry"
+HITS_QV *Active_QV;         //    Becomes invalid after closing
+
+int Load_QVs(HITS_DB *db)
+{ FILE        *quiva, *istub, *indx;
+  char        *root;
+  uint16      *table;
+  HITS_QV     *qvtrk;
+  QVcoding    *coding, *nx;
+  int          ncodes = 0;
+
+  if (db->tracks != NULL && strcmp(db->tracks->name,". at qvs") == 0)
+    return (0);
+
+  if (db->trimmed)
+    { EPRINTF(EPLACE,"%s: Cannot load QVs after trimming the DB\n",Prog_Name);
+      EXIT(1);
+    }
+
+  if (db->reads[db->nreads-1].coff < 0)
+    { if (db->part > 0)
+        { EPRINTF(EPLACE,"%s: All QVs for this block have not been added to the DB!\n",Prog_Name);
+          EXIT(1);
+        }
+      else
+        { EPRINTF(EPLACE,"%s: All QVs for this DB have not been added!\n",Prog_Name);
+          EXIT(1);
+        }
+    }
+
+  //  Open .qvs, .idx, and .db files
+
+  quiva = Fopen(Catenate(db->path,"","",".qvs"),"r");
+  if (quiva == NULL)
+    return (-1);
+
+  istub  = NULL;
+  indx   = NULL; 
+  table  = NULL;
+  coding = NULL;
+  qvtrk  = NULL;
+
+  root = rindex(db->path,'/');
+  if (root[1] == '.')
+    { *root = '\0';
+      istub = Fopen(Catenate(db->path,"/",root+2,".db"),"r");
+      *root = '/';
+    }
+  else
+    istub = Fopen(Catenate(db->path,"","",".db"),"r");
+  if (istub == NULL)
+    goto error;
+
+  { int   first, last, nfiles;
+    char  prolog[MAX_NAME], fname[MAX_NAME];
+    int   i, j;
+
+    if (fscanf(istub,DB_NFILE,&nfiles) != 1)
+      { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+        goto error;
+      }
+
+    if (db->part > 0)
+      { int       pfirst, plast;
+        int       fbeg, fend;
+        int       n, k;
+        FILE     *indx;
+
+        //  Determine first how many and which files span the block (fbeg to fend)
+
+        pfirst = db->ufirst;
+        plast  = pfirst + db->nreads;
+
+        first = 0;
+        for (fbeg = 0; fbeg < nfiles; fbeg++)
+          { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+                goto error;
+              }
+            if (last > pfirst)
+              break;
+            first = last;
+          }
+        for (fend = fbeg+1; fend <= nfiles; fend++)
+          { if (last >= plast)
+              break;
+            if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+                goto error;
+              }
+            first = last;
+          }
+
+        indx   = Fopen(Catenate(db->path,"","",".idx"),"r");
+        ncodes = fend-fbeg;
+        coding = (QVcoding *) Malloc(sizeof(QVcoding)*ncodes,"Allocating coding schemes");
+        table  = (uint16 *) Malloc(sizeof(uint16)*db->nreads,"Allocating QV table indices");
+        if (indx == NULL || coding == NULL || table == NULL)
+          { ncodes = 0;
+            goto error;
+          }
+
+        //  Carefully get the first coding scheme (its offset is most likely in a HITS_RECORD
+        //    in .idx that is *not* in memory).  Get all the other coding schemes normally and
+        //    assign the tables # for each read in the block in "tables".
+
+        rewind(istub);
+        (void) fscanf(istub,DB_NFILE,&nfiles);
+
+        first = 0;
+        for (n = 0; n < fbeg; n++)
+          { (void) fscanf(istub,DB_FDATA,&last,fname,prolog);
+            first = last;
+          }
+
+        for (n = fbeg; n < fend; n++)
+          { (void) fscanf(istub,DB_FDATA,&last,fname,prolog);
+
+            i = n-fbeg;
+            if (first < pfirst)
+              { HITS_READ read;
+
+                fseeko(indx,sizeof(HITS_DB) + sizeof(HITS_READ)*first,SEEK_SET);
+                if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+                  { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                    ncodes = i;
+                    goto error;
+                  }
+                fseeko(quiva,read.coff,SEEK_SET);
+                nx = Read_QVcoding(quiva);
+                if (nx == NULL)
+                  { ncodes = i;
+                    goto error;
+                  }
+                coding[i] = *nx;
+              }
+            else
+              { fseeko(quiva,db->reads[first-pfirst].coff,SEEK_SET);
+                nx = Read_QVcoding(quiva);
+                if (nx == NULL)
+                  { ncodes = i;
+                    goto error;
+                  }
+                coding[i] = *nx;
+                db->reads[first-pfirst].coff = ftello(quiva);
+              }
+
+            j = first-pfirst;
+            if (j < 0)
+              j = 0;
+            k = last-pfirst;
+            if (k > db->nreads)
+              k = db->nreads;
+            while (j < k)
+              table[j++] = (uint16) i;
+
+            first = last;
+	  }
+
+        fclose(indx);
+        indx = NULL;
+      }
+
+    else
+      { //  Load in coding scheme for each file, adjust .coff of first read in the file, and
+        //    record which table each read uses
+
+        ncodes = nfiles;
+        coding = (QVcoding *) Malloc(sizeof(QVcoding)*nfiles,"Allocating coding schemes");
+        table  = (uint16 *) Malloc(sizeof(uint16)*db->nreads,"Allocating QV table indices");
+        if (coding == NULL || table == NULL)
+          goto error;
+  
+        first = 0;
+        for (i = 0; i < nfiles; i++)
+          { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+                goto error;
+              }
+  
+            fseeko(quiva,db->reads[first].coff,SEEK_SET);
+            nx = Read_QVcoding(quiva);
+            if (nx == NULL)
+              { ncodes = i;
+                goto error;
+              }
+            coding[i] = *nx;
+	    db->reads[first].coff = ftello(quiva);
+
+            for (j = first; j < last; j++)
+              table[j] = (uint16) i;
+
+            first = last;
+          }
+      }
+
+    //  Allocate and fill in the HITS_QV record and add it to the front of the
+    //    track list
+
+    qvtrk = (HITS_QV *) Malloc(sizeof(HITS_QV),"Allocating QV pseudo-track");
+    if (qvtrk == NULL)
+      goto error;
+    qvtrk->name   = Strdup(". at qvs","Allocating QV pseudo-track name");
+    if (qvtrk->name == NULL)
+      goto error;
+    qvtrk->next   = db->tracks;
+    db->tracks    = (HITS_TRACK *) qvtrk;
+    qvtrk->ncodes = ncodes;
+    qvtrk->table  = table;
+    qvtrk->coding = coding;
+    qvtrk->quiva  = quiva;
+  }
+
+  fclose(istub);
+  return (0);
+
+error:
+  if (qvtrk != NULL)
+    free(qvtrk);
+  if (table != NULL)
+    free(table);
+  if (coding != NULL)
+    { int i;
+      for (i = 0; i < ncodes; i++)
+        Free_QVcoding(coding+i);
+      free(coding);
+    }
+  if (indx != NULL)
+    fclose(indx);
+  if (istub != NULL)
+    fclose(istub);
+  fclose(quiva);
+  EXIT(1);
+}
+
+// Close the QV stream, free the QV pseudo track and all associated memory
+
+void Close_QVs(HITS_DB *db)
+{ HITS_TRACK *track;
+  HITS_QV    *qvtrk;
+  int         i;
+
+  Active_DB = NULL;
+
+  track = db->tracks;
+  if (track != NULL && strcmp(track->name,". at qvs") == 0)
+    { qvtrk = (HITS_QV *) track;
+      for (i = 0; i < qvtrk->ncodes; i++)
+        Free_QVcoding(qvtrk->coding+i);
+      free(qvtrk->coding);
+      free(qvtrk->table);
+      fclose(qvtrk->quiva);
+      db->tracks = track->next;
+      free(track);
+    }
+  return;
+}
+
+
+/*******************************************************************************************
+ *
+ *  TRACK LOAD & CLOSE ROUTINES
+ *
+ ********************************************************************************************/
+
+//  Return status of track:
+//     1: Track is for trimmed DB
+//     0: Track is for untrimmed DB
+//    -1: Track is not the right size of DB either trimmed or untrimmed
+//    -2: Could not find the track 
+
+int Check_Track(HITS_DB *db, char *track, int *kind)
+{ FILE       *afile;
+  int         tracklen, size, ispart;
+  int         ureads, treads;
+
+  afile = NULL;
+  if (db->part > 0)
+    { afile  = fopen(Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".anno"),"r");
+      ispart = 1;
+    }
+  if (afile == NULL)
+    { afile  = fopen(Catenate(db->path,".",track,".anno"),"r");
+      ispart = 0;
+    }
+  if (afile == NULL)
+    return (-2);
+
+  if (fread(&tracklen,sizeof(int),1,afile) != 1)
+    { fprintf(stderr,"%s: track files for %s are corrupted\n",Prog_Name,track);
+      exit (1);
+    }
+  if (fread(&size,sizeof(int),1,afile) != 1)
+    { fprintf(stderr,"%s: track files for %s are corrupted\n",Prog_Name,track);
+      exit (1);
+    }
+
+  if (size == 0)
+    *kind = MASK_TRACK;
+  else if (size > 0)
+    *kind = CUSTOM_TRACK;
+  else
+    { fprintf(stderr,"%s: track files for %s are corrupted\n",Prog_Name,track);
+      exit (1);
+    }
+  
+  fclose(afile);
+
+  if (ispart)
+    { ureads = ((int *) (db->reads))[-1];
+      treads = ((int *) (db->reads))[-2];
+    }
+  else
+    { ureads = db->ureads;
+      treads = db->treads;
+    }
+
+  if (tracklen == ureads)
+    return (0);
+  else if (tracklen == treads)
+    return (1);
+  else
+    return (-1);
+}
+
+// If track is not already in the db's track list, then allocate all the storage for it,
+//   read it in from the appropriate file, add it to the track list, and return a pointer
+//   to the newly created HITS_TRACK record.  If the track does not exist or cannot be
+//   opened for some reason, then NULL is returned.
+
+HITS_TRACK *Load_Track(HITS_DB *db, char *track)
+{ FILE       *afile, *dfile;
+  int         tracklen, size;
+  int         nreads, ispart;
+  int         treads, ureads;
+  void       *anno;
+  void       *data;
+  char       *name;
+  HITS_TRACK *record;
+
+  if (track[0] == '.')
+    { EPRINTF(EPLACE,"%s: Track name, '%s', cannot begin with a .\n",Prog_Name,track);
+      EXIT(NULL);
+    }
+
+  for (record = db->tracks; record != NULL; record = record->next)
+    if (strcmp(record->name,track) == 0)
+      return (record);
+
+  afile = NULL;
+  if (db->part)
+    { afile  = fopen(Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".anno"),"r");
+      ispart = 1;
+    }
+  if (afile == NULL)
+    { afile = fopen(Catenate(db->path,".",track,".anno"),"r");
+      ispart = 0;
+    }
+  if (afile == NULL)
+    { EPRINTF(EPLACE,"%s: Track '%s' does not exist\n",Prog_Name,track);
+      return (NULL);
+    }
+
+  dfile  = NULL;
+  anno   = NULL;
+  data   = NULL;
+  record = NULL;
+
+  if (ispart)
+    name = Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".data");
+  else
+    name = Catenate(db->path,".",track,".data");
+  if (name == NULL)
+    goto error;
+  dfile = fopen(name,"r");
+
+  if (fread(&tracklen,sizeof(int),1,afile) != 1)
+    { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+      goto error;
+    }
+  if (fread(&size,sizeof(int),1,afile) != 1)
+    { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+      goto error;
+    }
+
+  if (size < 0)
+    { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+      goto error;
+    }
+  if (size == 0)
+    size = 8;
+
+  if (ispart)
+    { ureads = ((int *) (db->reads))[-1];
+      treads = ((int *) (db->reads))[-2];
+    }
+  else
+    { ureads = db->ureads;
+      treads = db->treads;
+    }
+
+  if (db->trimmed)
+    { if (tracklen != treads && tracklen != ureads)
+        { EPRINTF(EPLACE,"%s: Track '%s' not same size as database !\n",Prog_Name,track);
+          goto error;
+        }
+      if ( ! ispart && db->part > 0)
+        { if (tracklen == treads)
+            fseeko(afile,size*db->tfirst,SEEK_CUR);
+          else
+            fseeko(afile,size*db->ufirst,SEEK_CUR);
+        }
+    }
+  else
+    { if (tracklen != ureads)
+        { if (tracklen == treads)
+            EPRINTF(EPLACE,"%s: Track '%s' is for a trimmed DB !\n",Prog_Name,track);
+          else
+            EPRINTF(EPLACE,"%s: Track '%s' not same size as database !\n",Prog_Name,track);
+          goto error;
+        }
+      if ( ! ispart && db->part > 0)
+        fseeko(afile,size*db->ufirst,SEEK_CUR);
+    }
+  if (tracklen == treads)
+    nreads = ((int *) (db->reads))[-2];
+  else
+    nreads = ((int *) (db->reads))[-1];
+
+  anno = (void *) Malloc(size*(nreads+1),"Allocating Track Anno Vector");
+  if (anno == NULL)
+    goto error;
+
+  if (dfile != NULL)
+    { int64 *anno8, off8, dlen;
+      int   *anno4, off4;
+      int    i;
+
+      if (fread(anno,size,nreads+1,afile) != (size_t) (nreads+1))
+        { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+          goto error;
+        }
+
+      if (size == 4)
+        { anno4 = (int *) anno;
+          off4  = anno4[0];
+          if (off4 != 0)
+            { for (i = 0; i <= nreads; i++)
+                anno4[i] -= off4;
+              fseeko(dfile,off4,SEEK_SET);
+            }
+          dlen = anno4[nreads];
+          data = (void *) Malloc(dlen,"Allocating Track Data Vector");
+        }
+      else
+        { anno8 = (int64 *) anno;
+          off8  = anno8[0];
+          if (off8 != 0)
+            { for (i = 0; i <= nreads; i++)
+                anno8[i] -= off8;
+              fseeko(dfile,off8,SEEK_SET);
+            }
+          dlen = anno8[nreads];
+          data = (void *) Malloc(dlen,"Allocating Track Data Vector");
+        }
+      if (data == NULL)
+        goto error;
+      if (dlen > 0)
+        { if (fread(data,dlen,1,dfile) != 1)
+            { EPRINTF(EPLACE,"%s: Track '%s' data file is junk\n",Prog_Name,track);
+              goto error;
+            }
+        }
+      fclose(dfile);
+      dfile = NULL;
+    }
+  else
+    { if (fread(anno,size,nreads,afile) != (size_t) nreads)
+        { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+          goto error;
+        }
+      data = NULL;
+    }
+
+  fclose(afile);
+
+  record = (HITS_TRACK *) Malloc(sizeof(HITS_TRACK),"Allocating Track Record");
+  if (record == NULL)
+    goto error;
+  record->name = Strdup(track,"Allocating Track Name");
+  if (record->name == NULL)
+    goto error;
+  record->data = data;
+  record->anno = anno;
+  record->size = size;
+
+  if (db->trimmed && tracklen != treads)
+    { if (Late_Track_Trim(db,record,ispart))
+        goto error;
+    }
+
+  if (db->tracks != NULL && strcmp(db->tracks->name,". at qvs") == 0)
+    { record->next     = db->tracks->next;
+      db->tracks->next = record;
+    }
+  else
+    { record->next = db->tracks;
+      db->tracks   = record;
+    }
+
+  return (record);
+
+error:
+  if (record != NULL)
+    free(record);
+  if (data != NULL)
+    free(data);
+  if (anno != NULL)
+    free(anno);
+  if (dfile != NULL)
+    fclose(dfile);
+  fclose(afile);
+  EXIT (NULL);
+}
+
+void Close_Track(HITS_DB *db, char *track)
+{ HITS_TRACK *record, *prev;
+
+  prev = NULL;
+  for (record = db->tracks; record != NULL; record = record->next)
+    { if (strcmp(record->name,track) == 0)
+        { free(record->anno);
+          free(record->data);
+          free(record->name);
+          if (prev == NULL)
+            db->tracks = record->next;
+          else
+            prev->next = record->next;
+          free(record);
+          return;
+        }
+      prev = record;
+    }
+  return;
+}
+
+
+/*******************************************************************************************
+ *
+ *  READ BUFFER ALLOCATION AND READ ACCESS
+ *
+ ********************************************************************************************/
+
+// Allocate and return a buffer big enough for the largest read in 'db', leaving room
+//   for an initial delimiter character
+
+char *New_Read_Buffer(HITS_DB *db)
+{ char *read;
+
+  read = (char *) Malloc(db->maxlen+4,"Allocating New Read Buffer");
+  if (read == NULL)
+    EXIT(NULL);
+  return (read+1);
+}
+
+// Load into 'read' the i'th read in 'db'.  As an upper case ASCII string if ascii is 2, as a
+//   lower-case ASCII string is ascii is 1, and as a numeric string over 0(A), 1(C), 2(G), and
+//   3(T) otherwise.
+//
+// **NB**, the byte before read will be set to a delimiter character!
+
+int Load_Read(HITS_DB *db, int i, char *read, int ascii)
+{ FILE      *bases  = (FILE *) db->bases;
+  int64      off;
+  int        len, clen;
+  HITS_READ *r = db->reads;
+
+  if (i >= db->nreads)
+    { EPRINTF(EPLACE,"%s: Index out of bounds (Load_Read)\n",Prog_Name);
+      EXIT(1);
+    }
+  if (bases == NULL)
+    { bases = Fopen(Catenate(db->path,"","",".bps"),"r");
+      if (bases == NULL)
+        EXIT(1);
+      db->bases = (void *) bases;
+    }
+
+  off = r[i].boff;
+  len = r[i].rlen;
+
+  if (ftello(bases) != off)
+    fseeko(bases,off,SEEK_SET);
+  clen = COMPRESSED_LEN(len);
+  if (clen > 0)
+    { if (fread(read,clen,1,bases) != 1)
+        { EPRINTF(EPLACE,"%s: Failed read of .bps file (Load_Read)\n",Prog_Name);
+          EXIT(1);
+        }
+    }
+  Uncompress_Read(len,read);
+  if (ascii == 1)
+    { Lower_Read(read);
+      read[-1] = '\0';
+    }
+  else if (ascii == 2)
+    { Upper_Read(read);
+      read[-1] = '\0';
+    }
+  else
+    read[-1] = 4;
+  return (0);
+}
+
+char *Load_Subread(HITS_DB *db, int i, int beg, int end, char *read, int ascii)
+{ FILE      *bases  = (FILE *) db->bases;
+  int64      off;
+  int        len, clen;
+  int        bbeg, bend;
+  HITS_READ *r = db->reads;
+
+  if (i >= db->nreads)
+    { EPRINTF(EPLACE,"%s: Index out of bounds (Load_Read)\n",Prog_Name);
+      EXIT(NULL);
+    }
+  if (bases == NULL)
+    { bases = Fopen(Catenate(db->path,"","",".bps"),"r");
+      if (bases == NULL)
+        EXIT(NULL);
+      db->bases = (void *) bases;
+    }
+
+  bbeg = beg/4;
+  bend = (end-1)/4+1;
+
+  off = r[i].boff + bbeg;
+  len = end - beg;
+
+  if (ftello(bases) != off)
+    fseeko(bases,off,SEEK_SET);
+  clen = bend-bbeg;
+  if (clen > 0)
+    { if (fread(read,clen,1,bases) != 1)
+        { EPRINTF(EPLACE,"%s: Failed read of .bps file (Load_Read)\n",Prog_Name);
+          EXIT(NULL);
+        }
+    }
+  Uncompress_Read(4*clen,read);
+  read += beg%4;
+  read[len] = 4;
+  if (ascii == 1)
+    { Lower_Read(read);
+      read[-1] = '\0';
+    }
+  else if (ascii == 2)
+    { Upper_Read(read);
+      read[-1] = '\0';
+    }
+  else
+    read[-1] = 4;
+
+  return (read);
+}
+
+
+/*******************************************************************************************
+ *
+ *  QV BUFFER ALLOCATION QV READ ACCESS
+ *
+ ********************************************************************************************/
+
+// Allocate and return a buffer of 5 vectors big enough for the largest read in 'db'
+
+char **New_QV_Buffer(HITS_DB *db)
+{ char **entry;
+  char  *qvs;
+  int    i;
+
+  qvs   = (char *) Malloc(db->maxlen*5,"Allocating New QV Buffer");
+  entry = (char **) Malloc(sizeof(char *)*5,"Allocating New QV Buffer");
+  if (qvs == NULL || entry == NULL)
+    EXIT(NULL);
+  for (i = 0; i < 5; i++)
+    entry[i] = qvs + i*db->maxlen;
+  return (entry);
+}
+
+// Load into entry the QV streams for the i'th read from db.  The parameter ascii applies to
+//  the DELTAG stream as described for Load_Read.
+
+int Load_QVentry(HITS_DB *db, int i, char **entry, int ascii)
+{ HITS_READ *reads;
+  FILE      *quiva;
+  int        rlen;
+
+  if (db != Active_DB)
+    { if (db->tracks == NULL || strcmp(db->tracks->name,". at qvs") != 0)
+        { EPRINTF(EPLACE,"%s: QV's are not loaded (Load_QVentry)\n",Prog_Name);
+          EXIT(1);
+        }
+      Active_QV = (HITS_QV *) db->tracks;
+      Active_DB = db;
+    }
+  if (i >= db->nreads)
+    { EPRINTF(EPLACE,"%s: Index out of bounds (Load_QVentry)\n",Prog_Name);
+      EXIT(1);
+    }
+
+  reads = db->reads;
+  quiva = Active_QV->quiva;
+  rlen  = reads[i].rlen;
+
+  fseeko(quiva,reads[i].coff,SEEK_SET);
+  if (Uncompress_Next_QVentry(quiva,entry,Active_QV->coding+Active_QV->table[i],rlen))
+    EXIT(1);
+
+  if (ascii != 1)
+    { char *deltag = entry[1];
+
+      if (ascii != 2)
+        { char x = deltag[rlen];
+          deltag[rlen] = '\0';
+          Number_Read(deltag);
+          deltag[rlen] = x;
+        }
+      else
+        { int j;
+          int u = 'A'-'a';
+
+          for (j = 0; j < rlen; j++)
+            deltag[j] = (char) (deltag[j]+u);
+        }
+    }
+
+  return (0);
+}
+
+
+/*******************************************************************************************
+ *
+ *  BLOCK LOAD OF ALL READS (PRIMARILY FOR DALIGNER)
+ *
+ ********************************************************************************************/
+
+// Allocate a block big enough for all the uncompressed sequences, read them into it,
+//   reset the 'off' in each read record to be its in-memory offset, and set the
+//   bases pointer to point at the block after closing the bases file.  If ascii is
+//   non-zero then the reads are converted to ACGT ascii, otherwise the reads are left
+//   as numeric strings over 0(A), 1(C), 2(G), and 3(T).
+
+int Read_All_Sequences(HITS_DB *db, int ascii)
+{ FILE      *bases;
+  int        nreads = db->nreads;
+  HITS_READ *reads = db->reads;
+  void     (*translate)(char *s);
+
+  char  *seq;
+  int64  o, off;
+  int    i, len, clen;
+
+  bases = Fopen(Catenate(db->path,"","",".bps"),"r");
+  if (bases == NULL)
+    EXIT(1);
+
+  seq = (char *) Malloc(db->totlen+nreads+4,"Allocating All Sequence Reads");
+  if (seq == NULL)
+    { fclose(bases);
+      EXIT(1);
+    }
+
+  *seq++ = 4;
+
+  if (ascii == 1)
+    translate = Lower_Read;
+  else
+    translate = Upper_Read;
+
+  o = 0;
+  for (i = 0; i < nreads; i++)
+    { len = reads[i].rlen;
+      off = reads[i].boff;
+      if (ftello(bases) != off)
+        fseeko(bases,off,SEEK_SET);
+      clen = COMPRESSED_LEN(len);
+      if (clen > 0)
+        { if (fread(seq+o,clen,1,bases) != 1)
+            { EPRINTF(EPLACE,"%s: Read of .bps file failed (Read_All_Sequences)\n",Prog_Name);
+              free(seq);
+              fclose(bases);
+              EXIT(1);
+            }
+        }
+      Uncompress_Read(len,seq+o);
+      if (ascii)
+        translate(seq+o);
+      reads[i].boff = o;
+      o += (len+1);
+    }
+  reads[nreads].boff = o;
+
+  fclose(bases);
+
+  db->bases  = (void *) seq;
+  db->loaded = 1;
+
+  return (0);
+}
+
+int List_DB_Files(char *path, void actor(char *path, char *extension))
+{ int            status, plen, rlen, dlen;
+  char          *root, *pwd, *name;
+  int            isdam;
+  DIR           *dirp;
+  struct dirent *dp;
+
+  status = 0;
+  pwd    = PathTo(path);
+  plen   = strlen(path);
+  if (strcmp(path+(plen-4),".dam") == 0)
+    root = Root(path,".dam");
+  else
+    root = Root(path,".db");
+  rlen = strlen(root);
+
+  if (root == NULL || pwd == NULL)
+    { free(pwd);
+      free(root);
+      EXIT(1);
+    }
+
+  if ((dirp = opendir(pwd)) == NULL)
+    { EPRINTF(EPLACE,"%s: Cannot open directory %s (List_DB_Files)\n",Prog_Name,pwd);
+      status = -1;
+      goto error;
+    }
+
+  isdam = 0;
+  while ((dp = readdir(dirp)) != NULL)     //   Get case dependent root name (if necessary)
+    { name = dp->d_name;
+      if (strcmp(name,Catenate("","",root,".db")) == 0)
+        break;
+      if (strcmp(name,Catenate("","",root,".dam")) == 0)
+        { isdam = 1;
+          break;
+        }
+      if (strcasecmp(name,Catenate("","",root,".db")) == 0)
+        { strncpy(root,name,rlen);
+          break;
+        }
+      if (strcasecmp(name,Catenate("","",root,".dam")) == 0)
+        { strncpy(root,name,rlen);
+          isdam = 1;
+          break;
+        }
+    }
+  if (dp == NULL)
+    { EPRINTF(EPLACE,"%s: Cannot find %s (List_DB_Files)\n",Prog_Name,pwd);
+      status = -1;
+      closedir(dirp);
+      goto error;
+    }
+
+  if (isdam)
+    actor(Catenate(pwd,"/",root,".dam"),"dam");
+  else
+    actor(Catenate(pwd,"/",root,".db"),"db");
+
+  rewinddir(dirp);                         //   Report each auxiliary file
+  while ((dp = readdir(dirp)) != NULL)
+    { name = dp->d_name;
+      dlen = strlen(name);
+#ifdef HIDE_FILES
+      if (name[0] != '.')
+        continue;
+      dlen -= 1;
+      name += 1;
+#endif
+      if (dlen < rlen+1)
+        continue;
+      if (name[rlen] != '.')
+        continue;
+      if (strncmp(name,root,rlen) != 0)
+        continue;
+      actor(Catenate(pwd,PATHSEP,name,""),name+(rlen+1));
+    }
+  closedir(dirp);
+
+error:
+  free(pwd);
+  free(root);
+  return (status);
+}
+
+void Print_Read(char *s, int width)
+{ int i;
+
+  if (s[0] < 4)
+    { for (i = 0; s[i] != 4; i++)
+        { if (i%width == 0 && i != 0)
+            printf("\n");
+          printf("%d",s[i]);
+        }
+      printf("\n");
+    }
+  else
+    { for (i = 0; s[i] != '\0'; i++)
+        { if (i%width == 0 && i != 0)
+            printf("\n");
+          printf("%c",s[i]);
+        }
+      printf("\n");
+    }
+}
diff --git a/DAMASKER/DB.h b/DAMASKER/DB.h
new file mode 100644
index 0000000..983bee7
--- /dev/null
+++ b/DAMASKER/DB.h
@@ -0,0 +1,420 @@
+/*******************************************************************************************
+ *
+ *  Compressed data base module.  Auxiliary routines to open and manipulate a data base for
+ *    which the sequence and read information are separated into two separate files, and the
+ *    sequence is compressed into 2-bits for each base.  Support for tracks of additional
+ *    information, and trimming according to the current partition.  Eventually will also
+ *    support compressed quality information. 
+ *
+ *  Author :  Gene Myers
+ *  Date   :  July 2013
+ *  Revised:  April 2014
+ *
+ ********************************************************************************************/
+
+#ifndef _HITS_DB
+
+#define _HITS_DB
+
+#include <stdio.h>
+
+#include "QV.h"
+
+#define HIDE_FILES          //  Auxiliary DB files start with a . so they are "hidden"
+                            //    Undefine if you don't want this
+
+//  For interactive applications where it is inappropriate to simply exit with an error
+//    message to standard error, define the constant INTERACTIVE.  If set, then error
+//    messages are put in the global variable Ebuffer and the caller of a DB routine
+//    can decide how to deal with the error.
+//
+//  DB, QV, or alignment routines that can encounter errors function as before in
+//    non-INTERACTIVE mode by exiting after printing an error message to stderr.  In
+//    INTERACTIVE mode the routines place a message at EPLACE and return an error
+//    value.  For such routines that were previously void, they are now int, and
+//    return 1 if an error occured, 0 otherwise.
+
+#ifdef INTERACTIVE
+
+#define EPRINTF sprintf
+#define EPLACE  Ebuffer
+#define EXIT(x) return (x)
+
+#else // BATCH
+
+#define EPRINTF fprintf
+#define EPLACE  stderr
+#define EXIT(x) exit (1)
+
+#endif
+
+typedef unsigned char      uint8;
+typedef unsigned short     uint16;
+typedef unsigned int       uint32;
+typedef unsigned long long uint64;
+typedef signed char        int8;
+typedef signed short       int16;
+typedef signed int         int32;
+typedef signed long long   int64;
+typedef float              float32;
+typedef double             float64;
+
+
+/*******************************************************************************************
+ *
+ *  COMMAND LINE INTERPRETATION MACROS
+ *
+ ********************************************************************************************/
+
+extern char *Prog_Name;   //  Name of program
+
+#ifdef INTERACTIVE
+
+extern char Ebuffer[];
+
+#endif
+
+#define SYSTEM_ERROR							\
+  { EPRINTF(EPLACE,"%s: System error, read failed!\n",Prog_Name);	\
+    exit (2);								\
+  }
+
+#define ARG_INIT(name)                  \
+  Prog_Name = Strdup(name,"");          \
+  for (i = 0; i < 128; i++)             \
+    flags[i] = 0;
+
+#define ARG_FLAGS(set)                                                                  \
+  for (k = 1; argv[i][k] != '\0'; k++)                                                  \
+    { if (index(set,argv[i][k]) == NULL)                                                \
+        { fprintf(stderr,"%s: -%c is an illegal option\n",Prog_Name,argv[i][k]);        \
+          exit (1);                                                                     \
+        }                                                                               \
+      flags[(int) argv[i][k]] = 1;                                                      \
+    }
+
+#define ARG_POSITIVE(var,name)                                                          \
+  var = strtol(argv[i]+2,&eptr,10);                                                     \
+  if (*eptr != '\0' || argv[i][2] == '\0')                                              \
+    { fprintf(stderr,"%s: -%c '%s' argument is not an integer\n",			\
+                     Prog_Name,argv[i][1],argv[i]+2);      				\
+      exit (1);                                                                         \
+    }                                                                                   \
+  if (var <= 0)                                                                         \
+    { fprintf(stderr,"%s: %s must be positive (%d)\n",Prog_Name,name,var);              \
+      exit (1);                                                                         \
+    }
+
+#define ARG_NON_NEGATIVE(var,name)                                                      \
+  var = strtol(argv[i]+2,&eptr,10);                                                     \
+  if (*eptr != '\0' || argv[i][2] == '\0')                                              \
+    { fprintf(stderr,"%s: -%c '%s' argument is not an integer\n",			\
+                     Prog_Name,argv[i][1],argv[i]+2);      				\
+      exit (1);                                                                         \
+    }                                                                                   \
+  if (var < 0)	                                                                        \
+    { fprintf(stderr,"%s: %s must be non-negative (%d)\n",Prog_Name,name,var);          \
+      exit (1);                                                                         \
+    }
+
+#define ARG_REAL(var)                                                                   \
+  var = strtod(argv[i]+2,&eptr);                                                        \
+  if (*eptr != '\0' || argv[i][2] == '\0')                                              \
+    { fprintf(stderr,"%s: -%c '%s' argument is not a real number\n",			\
+                     Prog_Name,argv[i][1],argv[i]+2);      				\
+      exit (1);                                                                         \
+    }
+
+/*******************************************************************************************
+ *
+ *  UTILITIES
+ *
+ ********************************************************************************************/
+
+//  The following general utilities return NULL if any of their input pointers are NULL, or if they
+//    could not perform their function (in which case they also print an error to stderr).
+
+void *Malloc(int64 size, char *mesg);                    //  Guarded versions of malloc, realloc
+void *Realloc(void *object, int64 size, char *mesg);     //  and strdup, that output "mesg" to
+char *Strdup(char *string, char *mesg);                  //  stderr if out of memory
+
+FILE *Fopen(char *path, char *mode);     // Open file path for "mode"
+char *PathTo(char *path);                // Return path portion of file name "path"
+char *Root(char *path, char *suffix);    // Return the root name, excluding suffix, of "path"
+
+// Catenate returns concatenation of path.sep.root.suffix in a *temporary* buffer
+// Numbered_Suffix returns concatenation of left.<num>.right in a *temporary* buffer
+
+char *Catenate(char *path, char *sep, char *root, char *suffix);
+char *Numbered_Suffix(char *left, int num, char *right);
+
+
+// DB-related utilities
+
+void Print_Number(int64 num, int width, FILE *out);   //  Print readable big integer
+int  Number_Digits(int64 num);                        //  Return # of digits in printed number
+
+#define COMPRESSED_LEN(len)  (((len)+3) >> 2)
+
+void   Compress_Read(int len, char *s);   //  Compress read in-place into 2-bit form
+void Uncompress_Read(int len, char *s);   //  Uncompress read in-place into numeric form
+void      Print_Read(char *s, int width);
+
+void Lower_Read(char *s);     //  Convert read from numbers to lowercase letters (0-3 to acgt)
+void Upper_Read(char *s);     //  Convert read from numbers to uppercase letters (0-3 to ACGT)
+void Number_Read(char *s);    //  Convert read from letters to numbers
+
+
+/*******************************************************************************************
+ *
+ *  DB IN-CORE DATA STRUCTURES
+ *
+ ********************************************************************************************/
+
+#define DB_QV   0x03ff   //  Mask for 3-digit quality value
+#define DB_CSS  0x0400   //  This is the second or later of a group of reads from a given insert
+#define DB_BEST 0x0800   //  This is the longest read of a given insert (may be the only 1)
+
+//  Fields have different interpretations if a .db versus a .dam
+
+typedef struct
+  { int     origin; //  Well # (DB), Contig # (DAM)
+    int     rlen;   //  Length of the sequence (Last pulse = fpulse + rlen)
+    int     fpulse; //  First pulse (DB), left index of contig in scaffold (DAM)
+    int64   boff;   //  Offset (in bytes) of compressed read in 'bases' file, or offset of
+                    //    uncompressed bases in memory block
+    int64   coff;   //  Offset (in bytes) of compressed quiva streams in '.qvs' file (DB),
+                    //  Offset (in bytes) of scaffold header string in '.hdr' file (DAM)
+    int     flags;  //  QV of read + flags above (DB only)
+  } HITS_READ;
+
+//  A track can be of 3 types:
+//    data == NULL: there are nreads 'anno' records of size 'size'.
+//    data != NULL && size == 4: anno is an array of nreads+1 int's and data[anno[i]..anno[i+1])
+//                                    contains the variable length data
+//    data != NULL && size == 8: anno is an array of nreads+1 int64's and data[anno[i]..anno[i+1])
+//                                    contains the variable length data
+
+typedef struct _track
+  { struct _track *next;  //  Link to next track
+    char          *name;  //  Symbolic name of track
+    int            size;  //  Size in bytes of anno records
+    void          *anno;  //  over [0,nreads]: read i annotation: int, int64, or 'size' records 
+    void          *data;  //     data[anno[i] .. anno[i+1]-1] is data if data != NULL
+  } HITS_TRACK;
+
+//  The information for accessing QV streams is in a HITS_QV record that is a "pseudo-track"
+//    named ". at qvs" and is always the first track record in the list (if present).  Since normal
+//    track names cannot begin with a . (this is enforced), this pseudo-track is never confused
+//    with a normal track.
+
+typedef struct
+  { struct _track *next;
+    char          *name;
+    int            ncodes;  //  # of coding tables
+    QVcoding      *coding;  //  array [0..ncodes-1] of coding schemes (see QV.h)
+    uint16        *table;   //  for i in [0,db->nreads-1]: read i should be decompressed with
+                            //    scheme coding[table[i]]
+    FILE          *quiva;   //  the open file pointer to the .qvs file
+  } HITS_QV;
+
+//  The DB record holds all information about the current state of an active DB including an
+//    array of HITS_READS, one per read, and a linked list of HITS_TRACKs the first of which
+//    is always a HITS_QV pseudo-track (if the QVs have been loaded).
+
+typedef struct
+  { int         ureads;     //  Total number of reads in untrimmed DB
+    int         treads;     //  Total number of reads in trimmed DB
+    int         cutoff;     //  Minimum read length in block (-1 if not yet set)
+    int         all;        //  Consider multiple reads from a given well
+    float       freq[4];    //  frequency of A, C, G, T, respectively
+
+    //  Set with respect to "active" part of DB (all vs block, untrimmed vs trimmed)
+
+    int         maxlen;     //  length of maximum read (initially over all DB)
+    int64       totlen;     //  total # of bases (initially over all DB)
+
+    int         nreads;     //  # of reads in actively loaded portion of DB
+    int         trimmed;    //  DB has been trimmed by cutoff/all
+    int         part;       //  DB block (if > 0), total DB (if == 0)
+    int         ufirst;     //  Index of first read in block (without trimming)
+    int         tfirst;     //  Index of first read in block (with trimming)
+
+       //  In order to avoid forcing users to have to rebuild all thier DBs to accommodate
+       //    the addition of fields for the size of the actively loaded trimmed and untrimmed
+       //    blocks, an additional read record is allocated in "reads" when a DB is loaded into
+       //    memory (reads[-1]) and the two desired fields are crammed into the first two
+       //    integer spaces of the record.
+
+    char       *path;       //  Root name of DB for .bps, .qvs, and tracks
+    int         loaded;     //  Are reads loaded in memory?
+    void       *bases;      //  file pointer for bases file (to fetch reads from),
+                            //    or memory pointer to uncompressed block of all sequences.
+    HITS_READ  *reads;      //  Array [-1..nreads] of HITS_READ
+    HITS_TRACK *tracks;     //  Linked list of loaded tracks
+  } HITS_DB; 
+
+
+/*******************************************************************************************
+ *
+ *  DB STUB FILE FORMAT = NFILE FDATA^nfile NBLOCK PARAMS BDATA^nblock
+ *
+ ********************************************************************************************/
+
+#define MAX_NAME 10000      //  Longest file name or fasta header line
+
+#define DB_NFILE  "files = %9d\n"   //  number of files
+#define DB_FDATA  "  %9d %s %s\n"   //  last read index + 1, fasta prolog, file name
+#define DB_NBLOCK "blocks = %9d\n"  //  number of blocks
+#define DB_PARAMS "size = %10lld cutoff = %9d all = %1d\n"  //  block size, len cutoff, all in well
+#define DB_BDATA  " %9d %9d\n"      //  First read index (untrimmed), first read index (trimmed)
+
+
+/*******************************************************************************************
+ *
+ *  DB ROUTINES
+ *
+ ********************************************************************************************/
+
+  // Suppose DB is the name of an original database.  Then there will be files .DB.idx, .DB.bps,
+  //    .DB.qvs, and files .DB.<track>.anno and DB.<track>.data where <track> is a track name
+  //    (not containing a . !).
+
+  // A DAM is basically a DB except that:
+  //    1. there are no QV's, instead .coff points the '\0' terminated fasta header of the read
+  //          in the file .<dam>.hdr file
+  //    2. .origin contains the contig # of the read within a fasta entry (assembly sequences
+  //          contain N-separated contigs), and .fpulse the first base of the contig in the
+  //          fasta entry
+
+  // Open the given database or dam, "path" into the supplied HITS_DB record "db". If the name has
+  //   a part # in it then just the part is opened.  The index array is allocated (for all or
+  //   just the part) and read in.
+  // Return status of routine:
+  //    -1: The DB could not be opened for a reason reported by the routine to EPLACE
+  //     0: Open of DB proceeded without mishap
+  //     1: Open of DAM proceeded without mishap
+
+int Open_DB(char *path, HITS_DB *db);
+
+  // Trim the DB or part thereof and all loaded tracks according to the cutoff and all settings
+  //   of the current DB partition.  Reallocate smaller memory blocks for the information kept
+  //   for the retained reads.
+
+void Trim_DB(HITS_DB *db);
+
+  // Shut down an open 'db' by freeing all associated space, including tracks and QV structures,
+  //   and any open file pointers.  The record pointed at by db however remains (the user
+  //   supplied it and so should free it).
+
+void Close_DB(HITS_DB *db);
+
+  // Return the size in bytes of the given DB
+
+int64 sizeof_DB(HITS_DB *db);
+
+  // If QV pseudo track is not already in db's track list, then load it and set it up.
+  //   The database must not have been trimmed yet.  -1 is returned if a .qvs file is not
+  //   present, and 1 is returned if an error (reported to EPLACE) occured and INTERACTIVE
+  //   is defined.  Otherwise a 0 is returned.
+
+int Load_QVs(HITS_DB *db);
+
+  // Remove the QV pseudo track, all space associated with it, and close the .qvs file.
+
+void Close_QVs(HITS_DB *db);
+
+  // Look up the file and header in the file of the indicated track.  Return:
+  //     1: Track is for trimmed DB
+  //     0: Track is for untrimmed DB
+  //    -1: Track is not the right size of DB either trimmed or untrimmed
+  //    -2: Could not find the track
+  // In addition, if opened (0 or 1 returned), then kind points at an integer indicating
+  //   the type of track as follows:
+  //      CUSTOM  0 => a custom track
+  //      MASK    1 => a mask track
+
+#define CUSTOM_TRACK 0
+#define   MASK_TRACK 1
+
+int Check_Track(HITS_DB *db, char *track, int *kind);
+
+  // If track is not already in the db's track list, then allocate all the storage for it,
+  //   read it in from the appropriate file, add it to the track list, and return a pointer
+  //   to the newly created HITS_TRACK record.  If the track does not exist or cannot be
+  //   opened for some reason, then NULL is returned if INTERACTIVE is defined.  Otherwise
+  //   the routine prints an error message to stderr and exits if an error occurs, and returns
+  //   with NULL only if the track does not exist.
+
+HITS_TRACK *Load_Track(HITS_DB *db, char *track);
+
+  // If track is on the db's track list, then it is removed and all storage associated with it
+  //   is freed.
+
+void Close_Track(HITS_DB *db, char *track);
+
+  // Allocate and return a buffer big enough for the largest read in 'db'.
+  // **NB** free(x-1) if x is the value returned as *prefix* and suffix '\0'(4)-byte
+  // are needed by the alignment algorithms.  If cannot allocate memory then return NULL
+  // if INTERACTIVE is defined, or print error to stderr and exit otherwise.
+
+char *New_Read_Buffer(HITS_DB *db);
+
+  // Load into 'read' the i'th read in 'db'.  As a lower case ascii string if ascii is 1, an
+  //   upper case ascii string if ascii is 2, and a numeric string over 0(A), 1(C), 2(G), and 3(T)
+  //   otherwise.  A '\0' (or 4) is prepended and appended to the string so it has a delimeter
+  //   for traversals in either direction.  A non-zero value is returned if an error occured
+  //   and INTERACTIVE is defined.
+
+int  Load_Read(HITS_DB *db, int i, char *read, int ascii);
+
+  // Load into 'read' the subread [beg,end] of the i'th read in 'db' and return a pointer to the
+  //   the start of the subinterval (not necessarily = to read !!! ).  As a lower case ascii
+  //   string if ascii is 1, an upper case ascii string if ascii is 2, and a numeric string
+  //   over 0(A), 1(C), 2(G), and 3(T) otherwise.  A '\0' (or 4) is prepended and appended to
+  //   the string holding the substring so it has a delimeter for traversals in either direction.
+  //   A NULL pointer is returned if an error occured and INTERACTIVE is defined.
+
+char *Load_Subread(HITS_DB *db, int i, int beg, int end, char *read, int ascii);
+
+  // Allocate a set of 5 vectors large enough to hold the longest QV stream that will occur
+  //   in the database.  If cannot allocate memory then return NULL if INTERACTIVE is defined,
+  //   or print error to stderr and exit otherwise.
+
+#define DEL_QV  0   //  The deletion QVs are x[DEL_QV] if x is the buffer returned by New_QV_Buffer
+#define DEL_TAG 1   //  The deleted characters
+#define INS_QV  2   //  The insertion QVs
+#define SUB_QV  3   //  The substitution QVs
+#define MRG_QV  4   //  The merge QVs
+
+char **New_QV_Buffer(HITS_DB *db);
+
+  // Load into 'entry' the 5 QV vectors for i'th read in 'db'.  The deletion tag or characters
+  //   are converted to a numeric or upper/lower case ascii string as per ascii.  Return with
+  //   a zero, except when an error occurs and INTERACTIVE is defined in which case return wtih 1.
+
+int   Load_QVentry(HITS_DB *db, int i, char **entry, int ascii);
+
+  // Allocate a block big enough for all the uncompressed sequences, read them into it,
+  //   reset the 'off' in each read record to be its in-memory offset, and set the
+  //   bases pointer to point at the block after closing the bases file.  If ascii is
+  //   1 then the reads are converted to lowercase ascii, if 2 then uppercase ascii, and
+  //   otherwise the reads are left as numeric strings over 0(A), 1(C), 2(G), and 3(T).
+  //   Return with a zero, except when an error occurs and INTERACTIVE is defined in which
+  //   case return wtih 1.
+
+int Read_All_Sequences(HITS_DB *db, int ascii);
+
+  // For the DB or DAM "path" = "prefix/root.[db|dam]", find all the files for that DB, i.e. all
+  //   those of the form "prefix/[.]root.part" and call actor with the complete path to each file
+  //   pointed at by path, and the suffix of the path by extension.  The . proceeds the root
+  //   name if the defined constant HIDE_FILES is set.  Always the first call is with the
+  //   path "prefix/root.[db|dam]" and extension "db" or "dam".  There will always be calls for
+  //   "prefix/[.]root.idx" and "prefix/[.]root.bps".  All other calls are for *tracks* and
+  //   so this routine gives one a way to know all the tracks associated with a given DB.
+  //   -1 is returned if the path could not be found, and 1 is returned if an error (reported
+  //   to EPLACE) occured and INTERACTIVE is defined.  Otherwise a 0 is returned.
+
+int List_DB_Files(char *path, void actor(char *path, char *extension));
+
+#endif // _HITS_DB
diff --git a/DAMASKER/GNUmakefile b/DAMASKER/GNUmakefile
new file mode 100644
index 0000000..a085f88
--- /dev/null
+++ b/DAMASKER/GNUmakefile
@@ -0,0 +1,25 @@
+THISDIR:=$(abspath $(dir $(realpath $(lastword ${MAKEFILE_LIST}))))
+CFLAGS = -O3 -Wall -Wextra -Wno-unused-result -fno-strict-aliasing
+LDLIBS+= -lm -lpthread
+LDFLAGS+= $(patsubst %,-L%,${LIBDIRS})
+ALL = datander TANmask REPmask HPC.TANmask HPC.REPmask
+vpath %.c ${THISDIR}
+
+%: %.c
+
+all: ${ALL}
+datander: tandem.o align.o
+TANmask: align.o
+REPmask: align.o
+${ALL}: align.o DB.o QV.o
+
+clean:
+	rm -f ${ALL}
+	rm -fr *.dSYM *.o
+
+install:
+	rsync -av ${ALL} ${PREFIX}/bin
+symlink:
+	ln -sf $(addprefix ${CURDIR}/,${ALL}) ${PREFIX}/bin
+
+.PHONY: clean all
diff --git a/DAMASKER/HPC.REPmask.c b/DAMASKER/HPC.REPmask.c
new file mode 100755
index 0000000..03181d8
--- /dev/null
+++ b/DAMASKER/HPC.REPmask.c
@@ -0,0 +1,877 @@
+/*********************************************************************************************\
+ *
+ *  Produce a script to compute overlaps for all block pairs of a DB, and then sort and merge
+ *    them into as many .las files as their are blocks.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  June 1, 2014
+ *********************************************************************************************/
+ 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+
+#undef  LSF  //  define if want a directly executable LSF script
+
+static char *Usage[] =
+  { "[-vbd] [-t<int>] [-w<int(6)>] [-l<int(1000)>] [-s<int(100)>]",
+    "       [-M<int>] [-B<int(4)>] [-D<int( 250)>] [T<int(4)>] [-f<name>]",
+    "       [-k<int(14)>] [-h<int(35)>] [-e<double(.70)>] [-m<track>]+",
+    "       -g<int> -c<int> <reads:db|dam> [<block:int>[-<range:int>]"
+  };
+
+#define LSF_ALIGN \
+            "bsub -q medium -n 4 -o DAL.REP%d.out -e DAL.REP%d.err -R span[hosts=1] -J align#%d"
+#define LSF_SORT  \
+            "bsub -q short -n 12 -o SORT.REP%d.out -e SORT.REP%d.err -R span[hosts=1] -J sort#%d"
+#define LSF_MERGE \
+    "bsub -q short -n 12 -o MERGE%d.REP%d.out -e MERGE%d.REP%d.err -R span[hosts=1] -J merge#%d"
+#define LSF_CHECK \
+          "bsub -q short -n 12 -o CHECK%d.DAL.out -e CHECK%d.DAL.err -R span[hosts=1] -J check#%d"
+#define LSF_MASK \
+    "bsub -q short -n 12 -o MASK.REP%d.out -e MASK.REP%d.err -R span[hosts=1] -J maskrep#%d"
+
+int main(int argc, char *argv[])
+{ int   nblocks;
+  int   usepath;
+  int   useblock;
+  int   fblock, lblock;
+#ifdef LSF
+  int   jobid;
+#endif
+
+  FILE *out;
+  char  name[100];
+  int   stage;
+  char *pwd, *root;
+
+  int    CINT, SPAN;
+  int    DUNIT, BUNIT;
+  int    VON, BON, DON;
+  int    WINT, TINT, HINT, KINT, SINT, LINT, MINT;
+  int    NTHREADS;
+  double EREL;
+  int    MMAX, MTOP;
+  char **MASK;
+  char  *ONAME;
+
+  { int    i, j, k;         //  Process options
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("HPC.REPmask")
+
+    BUNIT = 4;
+    DUNIT = 250;
+    KINT  = 14;
+    WINT  = 6;
+    HINT  = 35;
+    TINT  = 0;
+    EREL  = 0.;
+    LINT  = 1000;
+    SINT  = 100;
+    MINT  = -1;
+
+    MTOP = 0;
+    MMAX = 10;
+    MASK = (char **) Malloc(MMAX*sizeof(char *),"Allocating mask track array");
+    if (MASK == NULL)
+      exit (1);
+    ONAME = NULL;
+    out   = stdout;
+
+    NTHREADS = 4;
+
+    SPAN = -1;
+    CINT = -1;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vbd");
+            break;
+          case 'c':
+            ARG_POSITIVE(CINT,"Repeat coverage threshold")
+            break;
+          case 'e':
+            ARG_REAL(EREL)
+            if (EREL < .7 || EREL >= 1.)
+              { fprintf(stderr,"%s: Average correlation must be in [.7,1.) (%g)\n",Prog_Name,EREL);
+                exit (1);
+              }
+            break;
+          case 'f':
+            ONAME = argv[i]+2;
+            break;
+          case 'g':
+            ARG_POSITIVE(SPAN,"Block span")
+            break;
+          case 'h':
+            ARG_POSITIVE(HINT,"Hit threshold (in bp.s)")
+            break;
+          case 'k':
+            ARG_POSITIVE(KINT,"K-mer length")
+            break;
+          case 'l':
+            ARG_POSITIVE(LINT,"Minimum ovlerap length")
+            break;
+          case 't':
+            ARG_POSITIVE(TINT,"Tuple suppression frequency")
+            break;
+          case 's':
+            ARG_POSITIVE(SINT,"Trace spacing")
+            break;
+          case 'w':
+            ARG_POSITIVE(WINT,"Log of bin width")
+            break;
+          case 'm':
+            if (MTOP >= MMAX)
+              { MMAX = 1.2*MTOP + 10;
+                MASK = (char **) Realloc(MASK,MMAX*sizeof(char *),"Reallocating mask track array");
+                if (MASK == NULL)
+                  exit (1);
+              }
+            MASK[MTOP++] = argv[i]+2;
+            break;
+          case 'B':
+            ARG_NON_NEGATIVE(BUNIT,"Blocks per command")
+            break;
+          case 'D':
+            ARG_NON_NEGATIVE(DUNIT,"Files per merge")
+            if (DUNIT < 3)
+              { fprintf(stderr,"%s: Files per merge must be at least 3 (%d)\n",
+                               Prog_Name,DUNIT);
+                exit (1);
+              }
+            break;
+          case 'M':
+            ARG_NON_NEGATIVE(MINT,"Memory allocation (in Gb)")
+            break;
+          case 'T':
+            ARG_POSITIVE(NTHREADS,"Number of threads")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VON = flags['v'];
+    BON = flags['b'];
+    DON = flags['d'];
+
+    if (argc < 2 || argc > 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[2]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[3]);
+        exit (1);
+      }
+    if (SPAN < 0)
+      { fprintf(stderr,"%s: Must supply -g parameter\n",Prog_Name);
+        exit (1);
+      }
+    if (CINT < 0)
+      { fprintf(stderr,"%s: Must supply -c parameter\n",Prog_Name);
+        exit (1);
+      }
+
+    for (j = 1; 2*j <= NTHREADS; j *= 2)
+      ;
+    NTHREADS = j;
+  }
+
+  //  Make sure DB exists and is partitioned, get number of blocks in partition
+
+  pwd = PathTo(argv[1]);
+  if (strcmp(argv[1]+(strlen(argv[1])-4),".dam") == 0)
+    root = Root(argv[1],".dam");
+  else
+    root = Root(argv[1],".db");
+
+  { int i, nfiles;
+    FILE *dbvis;
+
+    dbvis = fopen(Catenate(pwd,"/",root,".dam"),"r");
+    if (dbvis == NULL)
+      { dbvis = Fopen(Catenate(pwd,"/",root,".db"),"r");
+        if (dbvis == NULL)
+          exit (1);
+      }
+
+    if (fscanf(dbvis,"files = %d\n",&nfiles) != 1)
+      SYSTEM_ERROR
+    for (i = 0; i < nfiles; i++)
+      { char buffer[30001];
+
+        if (fgets(buffer,30000,dbvis) == NULL)
+          SYSTEM_ERROR
+      }
+
+    useblock = 1;
+    if (fscanf(dbvis,"blocks = %d\n",&nblocks) != 1 || nblocks == 1)
+      { useblock = 0;
+        nblocks  = 1;
+      }
+
+    if (nblocks < SPAN)
+      { fprintf(stderr,"%s: There a fewer than -g = %d blocks in the DB!\n",Prog_Name,SPAN);
+        exit (1);
+      }
+
+    usepath = (strcmp(pwd,".") != 0);
+  }
+
+  //  Set range fblock-lblock checking that DB.<fblock-1>.las exists & DB.<fblock>.las does not
+
+  { char *eptr, *fptr, *sfx;
+    FILE *file;
+
+    if (argc == 3)
+      { fblock = strtol(argv[2],&eptr,10);
+        if ((*eptr != '\0' && *eptr != '-') || eptr <= argv[2])
+          { fprintf(stderr,"%s: final argument '%s' does not start with an integer\n",
+                           Prog_Name,argv[2]);
+            exit (1);
+          }
+        useblock = 1;
+        if (*eptr == '-')
+          { lblock = strtol(eptr+1,&fptr,10);
+            if (*fptr != '\0' || fptr <= eptr+1)
+              { fprintf(stderr,"%s: second part of range '%s' is not an integer\n",
+                               Prog_Name,eptr+1);
+                exit (1);
+              }
+            if (lblock < SPAN)
+              { fprintf(stderr,"%s: End of range %d must be >= group span -g = %d\n",
+                               Prog_Name,lblock,SPAN);
+                exit (1);
+              }
+          }
+        else
+          lblock = fblock;
+        if (fblock < 1 || lblock > nblocks || fblock > lblock)
+          { fprintf(stderr,"%s: range %d-%d is empty or out of bounds\n",Prog_Name,fblock,lblock);
+            exit (1);
+          }
+      }
+    else
+      { fblock = 1;
+        lblock = nblocks;
+      }
+
+    sfx = Strdup(Numbered_Suffix(".rep",SPAN,".anno"),"Allocating small string!");
+    if (sfx == NULL)
+      exit (1);
+
+    if (fblock > 1)
+      { file = fopen(Catenate(pwd,"/.",root,Numbered_Suffix(".",fblock-1,sfx)),"r");
+        if (file == NULL)
+          { if (usepath)
+              fprintf(stderr,"%s: File %s/%s.%d%s should already be present!\n",
+                             Prog_Name,pwd,root,fblock-1,sfx);
+            else
+              fprintf(stderr,"%s: File %s.%d%s should already be present!\n",
+                             Prog_Name,root,fblock-1,sfx);
+            exit (1);
+          }
+        else
+          fclose(file);
+      }
+    if (useblock)
+      file = fopen(Catenate(pwd,"/.",root,Numbered_Suffix(".",fblock,sfx)),"r");
+    else
+      file = fopen(Catenate(pwd,"/.",root,sfx),"r");
+    if (file != NULL)
+      { if (usepath)
+          if (useblock)
+            fprintf(stderr,"%s: File %s/.%s.%d%s should not yet exist!\n",
+                           Prog_Name,pwd,root,fblock,sfx);
+          else
+            fprintf(stderr,"%s: File %s/.%s%s as should not yet exist!\n",Prog_Name,pwd,root,sfx);
+        else
+          if (useblock)
+            fprintf(stderr,"%s: File .%s.%d%s should not yet exist!\n",Prog_Name,root,fblock,sfx);
+          else
+            fprintf(stderr,"%s: File .%s%s should not yet exist!\n",Prog_Name,root,sfx);
+        exit (1);
+      }
+
+    DON = (DON && useblock);
+  }
+
+  { int level, njobs;
+    int i, j, k, p;
+
+    if (DON)
+      { if (ONAME != NULL)
+          { sprintf(name,"%s.00.MKDIR",ONAME);
+            out = fopen(name,"w");
+          }
+
+        fprintf(out,"# Create work subdirectories\n");
+        for (i = fblock; i <= lblock; i++)
+          fprintf(out,"mkdir temp%d\n",i);
+      }
+
+    //  Produce all necessary daligner jobs ...
+
+    if (ONAME != NULL)
+      { sprintf(name,"%s.01.OVL",ONAME);
+        out = fopen(name,"w");
+      }
+
+    njobs = 0;
+    for (i = fblock; i <= lblock; i++)
+      { int base;
+
+        base = fblock + ((i-fblock)/SPAN)*SPAN;
+        if (base + SPAN > lblock+1)
+          base = (lblock+1) - SPAN;
+        njobs += (i-base)/BUNIT+1;
+      }
+
+    fprintf(out,"# Daligner jobs (%d)\n",njobs);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i++)
+      { int bits, base;
+        int low, hgh;
+
+        base = fblock + ((i-fblock)/SPAN)*SPAN;
+        if (base + SPAN > lblock+1)
+          base = (lblock+1) - SPAN;
+        bits = (i-base)/BUNIT+1;
+        low  = base;
+        for (j = 1; j <= bits; j++)
+          {
+#ifdef LSF
+            fprintf(out,LSF_ALIGN,SPAN,SPAN,jobid++);
+            fprintf(out," \"");
+#endif
+            fprintf(out,"daligner");
+            if (VON)
+              fprintf(out," -v");
+            if (BON)
+              fprintf(out," -b");
+            if (KINT != 14)
+              fprintf(out," -k%d",KINT);
+            if (WINT != 6)
+              fprintf(out," -w%d",WINT);
+            if (HINT != 35)
+              fprintf(out," -h%d",HINT);
+            if (TINT > 0)
+              fprintf(out," -t%d",TINT);
+            if (EREL > .1)
+              fprintf(out," -e%g",EREL);
+            if (LINT != 1000)
+              fprintf(out," -l%d",LINT);
+            if (SINT != 100)
+              fprintf(out," -s%d",SINT);
+            if (MINT >= 0)
+              fprintf(out," -M%d",MINT);
+            if (NTHREADS != 4)
+              fprintf(out," -T%d",NTHREADS);
+            for (k = 0; k < MTOP; k++)
+              fprintf(out," -m%s",MASK[k]);
+            if (useblock)
+              if (usepath)
+                fprintf(out," %s/%s.%d",pwd,root,i);
+              else
+                fprintf(out," %s.%d",root,i);
+            else
+              if (usepath)
+                fprintf(out," %s/%s",pwd,root);
+              else
+                fprintf(out," %s",root);
+            hgh = ((i-base+1)*j)/bits + base;
+            for (k = low; k < hgh; k++)
+              if (useblock)
+                if (usepath)
+                  fprintf(out," %s/%s.%d",pwd,root,k);
+                else
+                  fprintf(out," %s.%d",root,k);
+              else
+                if (usepath)
+                  fprintf(out," %s/%s",pwd,root);
+                else
+                  fprintf(out," %s",root);
+
+            if (DON)
+              for (k = low; k < hgh; k++)
+                { fprintf(out," && mv");
+                  for (p = 0; p < NTHREADS; p++)
+                    { fprintf(out," %s.%d.%s.%d.C%d.las",root,i,root,k,p);
+                      fprintf(out," %s.%d.%s.%d.N%d.las",root,i,root,k,p);
+                    }
+                  fprintf(out," temp%d",i);
+                  if (k != i)
+                    { fprintf(out," && mv");
+                      for (p = 0; p < NTHREADS; p++)
+                        { fprintf(out," %s.%d.%s.%d.C%d.las",root,k,root,i,p);
+                          fprintf(out," %s.%d.%s.%d.N%d.las",root,k,root,i,p);
+                        }
+                      fprintf(out," temp%d",k);
+                    }
+                }
+
+#ifdef LSF
+            fprintf(out,"\"");
+#endif
+            fprintf(out,"\n");
+            low = hgh;
+          }
+      }
+
+    //  ... and then all the initial sort & merge jobs for each block pair
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.02.SORT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Initial sort jobs (%d)\n",((lblock-fblock)+1)*SPAN);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i++)
+      { int base;
+
+        base = fblock + ((i-fblock)/SPAN)*SPAN;
+        if (base + SPAN > lblock+1)
+          base = (lblock+1) - SPAN;
+        for (j = base; j < base+SPAN; j++)
+          {
+#ifdef LSF
+            fprintf(out,LSF_SORT,SPAN,SPAN,jobid++);
+            fprintf(out," \"");
+#endif
+            fprintf(out,"LAsort");
+            if (VON)
+              fprintf(out," -v");
+            for (k = 0; k < NTHREADS; k++)
+              if (useblock)
+                if (DON)
+                  { fprintf(out," temp%d/%s.%d.%s.%d.C%d",i,root,i,root,j,k);
+                    fprintf(out," temp%d/%s.%d.%s.%d.N%d",i,root,i,root,j,k);
+                  }
+                else
+                  { fprintf(out," %s.%d.%s.%d.C%d",root,i,root,j,k);
+                    fprintf(out," %s.%d.%s.%d.N%d",root,i,root,j,k);
+                  }
+              else
+                { fprintf(out," %s.%s.C%d",root,root,k);
+                  fprintf(out," %s.%s.N%d",root,root,k);
+                }
+            fprintf(out," && LAmerge");
+            if (VON)
+              fprintf(out," -v");
+            if (useblock)
+              if (DON)
+                if (SPAN == 1)
+                  fprintf(out," temp%d/%s.R%d.%d",i,root,SPAN,j);
+                else
+                  fprintf(out," temp%d/L1.%d.%d",i,i,(j-base)+1);
+              else
+                if (SPAN == 1)
+                  fprintf(out," %s.R%d.%d",root,SPAN,j);
+                else
+                  fprintf(out," L1.%d.%d",i,(j-base)+1);
+            else
+              fprintf(out," %s.R%d",root,SPAN);
+            for (k = 0; k < NTHREADS; k++)
+              if (useblock)
+                if (DON)
+                  { fprintf(out," temp%d/%s.%d.%s.%d.C%d.S",i,root,i,root,j,k);
+                    fprintf(out," temp%d/%s.%d.%s.%d.N%d.S",i,root,i,root,j,k);
+                  }
+                else
+                  { fprintf(out," %s.%d.%s.%d.C%d.S",root,i,root,j,k);
+                    fprintf(out," %s.%d.%s.%d.N%d.S",root,i,root,j,k);
+                  }
+              else
+                { fprintf(out," %s.%s.C%d.S",root,root,k);
+                  fprintf(out," %s.%s.N%d.S",root,root,k);
+                }
+#ifdef LSF
+            fprintf(out,"\"");
+#endif
+            fprintf(out,"\n");
+          }
+      }
+
+    //  Check .las files (optional)
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.03.CHECK.OPT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    njobs = ((lblock-fblock)+1) * ((SPAN-1)/(BUNIT+1) + 1);
+
+    fprintf(out,"# Check inital .las jobs (%d) (optional but recommended)\n",njobs);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i++)
+      { int base;
+
+        base = fblock + ((i-fblock)/SPAN)*SPAN;
+        if (base + SPAN > lblock+1)
+          base = (lblock+1) - SPAN;
+        for (j = base; j <= (base+SPAN)-1; )
+          { k = j+BUNIT;
+            if (k > (base+SPAN)-1)
+              k = (base+SPAN)-1;
+#ifdef LSF
+            fprintf(out,LSF_CHECK,0,0,jobid++);
+            fprintf(out," \"");
+#endif
+            fprintf(out,"LAcheck -vS");
+            if (usepath)
+              fprintf(out," %s/%s",pwd,root);
+            else
+              fprintf(out," %s",root);
+            while (j <= k)
+              { if (useblock)
+                  if (DON)
+                    if (SPAN == 1)
+                      fprintf(out," temp%d/%s.R%d.%d",i,root,SPAN,j);
+                    else
+                      fprintf(out," temp%d/L1.%d.%d",i,i,(j-base)+1);
+                  else
+                    if (SPAN == 1)
+                      fprintf(out," %s.R%d.%d",root,SPAN,j);
+                    else
+                      fprintf(out," L1.%d.%d",i,(j-base)+1);
+                else
+                  fprintf(out," %s.R%d",root,SPAN);
+                j += 1;
+              }
+#ifdef LSF
+            fprintf(out,"\"");
+#endif
+            fprintf(out,"\n");
+          }
+      }
+
+    //  Clean up
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.04.RM",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Remove initial .las files\n");
+
+    for (i = fblock; i <= lblock; i++)
+      { int base, span;
+
+        if (DON)
+          fprintf(out,"cd temp%d\n",i);
+        span = SPAN;
+        base = fblock + ((i-fblock)/SPAN)*SPAN;
+        if (base + SPAN > lblock+1)
+          base = (lblock+1) - SPAN;
+        else if (i + SPAN > lblock)
+          span = (lblock-base)+1;
+        for (j = base; j < base+span; j++)
+          { fprintf(out,"rm");
+            for (k = 0; k < NTHREADS; k++)
+              if (useblock)
+                { fprintf(out," %s.%d.%s.%d.C%d.las",root,i,root,j,k);
+                  fprintf(out," %s.%d.%s.%d.N%d.las",root,i,root,j,k);
+                }
+              else
+                { fprintf(out," %s.%s.C%d.las",root,root,k);
+                  fprintf(out," %s.%s.N%d.las",root,root,k);
+                }
+            fprintf(out,"\n");
+            if (j < base+SPAN)
+              { fprintf(out,"rm");
+                for (k = 0; k < NTHREADS; k++)
+                  if (useblock)
+                    { fprintf(out," %s.%d.%s.%d.C%d.S.las",root,i,root,j,k);
+                      fprintf(out," %s.%d.%s.%d.N%d.S.las",root,i,root,j,k);
+                    }
+                  else
+                    { fprintf(out," %s.%s.C%d.S.las",root,root,k);
+                      fprintf(out," %s.%s.N%d.S.las",root,root,k);
+                    }
+                fprintf(out,"\n");
+              }
+          }
+        if (DON)
+          fprintf(out,"cd ..\n");
+      }
+
+    if (ONAME != NULL)
+      fclose(out);
+    stage = 5;
+
+    //  Higher level merges (if lblock > 1)
+
+    if (lblock > 1)
+      { int pow;
+
+        //  Determine numbe of merge levels
+
+        pow = 1;
+        for (level = 0; pow < SPAN; level++)
+          pow *= DUNIT;
+
+        //  Issue the commands for each merge level
+
+        { int  p, cnt;
+
+          cnt = SPAN;
+          for (i = 1; i <= level; i++)
+            { int cits;
+              int low, hgh;
+
+              if (ONAME != NULL)
+                { sprintf(name,"%s.%02d.MERGE",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              cits = (cnt-1)/DUNIT+1;
+
+              //  Incremental update merges
+
+              njobs = ((lblock-fblock)+1)*cits;
+              fprintf(out,"# Level %d jobs (%d)\n",i,njobs);
+
+#ifdef LSF
+              jobid = 1;
+#endif
+
+              //  New block merges
+
+              for (j = fblock; j <= lblock; j++) 
+                { low = 1;
+                  for (p = 1; p <= cits; p++)
+                    { hgh = (cnt*p)/cits;
+#ifdef LSF
+                      fprintf(out,LSF_MERGE,i,SPAN,i,SPAN,jobid++);
+                      fprintf(out," \"");
+#endif
+                      fprintf(out,"LAmerge");
+                      if (VON)
+                        fprintf(out," -v");
+                      if (DON)
+                        if (cits == 1)
+                          fprintf(out," temp%d/%s.R%d.%d",j,root,SPAN,j);
+                        else
+                          fprintf(out," temp%d/L%d.%d.%d",j,i+1,j,p);
+                      else
+                        if (cits == 1)
+                          fprintf(out," %s.R%d.%d",root,SPAN,j);
+                        else
+                          fprintf(out," L%d.%d.%d",i+1,j,p);
+                      for (k = low; k <= hgh; k++)
+                        if (DON)
+                          fprintf(out," temp%d/L%d.%d.%d",j,i,j,k);
+                        else
+                          fprintf(out," L%d.%d.%d",i,j,k);
+#ifdef LSF
+                      fprintf(out,"\"");
+#endif
+                      fprintf(out,"\n");
+                      low = hgh+1;
+                    }
+                }
+
+              //  Check new .las (optional)
+
+              if (ONAME != NULL)
+                { fclose(out);
+                  sprintf(name,"%s.%02d.CHECK.OPT",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              fprintf(out,"# Check level %d .las files jobs (%d) (optional but recommended)\n",
+                          i+1,((lblock-fblock)+1)*((cits-1)/(BUNIT+1)+1));
+
+#ifdef LSF
+              jobid = 1;
+#endif
+              for (j = fblock; j <= lblock; j++) 
+                for (p = 1; p <= cits; )
+                  { k = p+BUNIT;
+                    if (k > cits)
+                      k = cits;
+#ifdef LSF
+                    fprintf(out,LSF_CHECK,i,i,jobid++);
+                    fprintf(out," \"");
+#endif
+                    fprintf(out,"LAcheck -vS");
+                    if (usepath)
+                      fprintf(out," %s/%s",pwd,root);
+                    else
+                      fprintf(out," %s",root);
+                    while (p <= k)
+                      { if (DON)
+                          if (cits == 1)
+                            fprintf(out," temp%d/%s.R%d.%d",j,root,SPAN,j);
+                          else
+                            fprintf(out," temp%d/L%d.%d.%d",j,i+1,j,p);
+                        else
+                          if (cits == 1)
+                            fprintf(out," %s.R%d.%d",root,SPAN,j);
+                          else
+                            fprintf(out," L%d.%d.%d",i+1,j,p);
+                        p += 1;
+                      }
+#ifdef LSF
+                    fprintf(out,"\"");
+#endif
+                    fprintf(out,"\n");
+                  }
+
+              //  Cleanup (optional)
+
+              if (ONAME != NULL)
+                { fclose(out);
+                  sprintf(name,"%s.%02d.RM",ONAME,stage++);
+                  out = fopen(name,"w");
+                }
+
+              fprintf(out,"# Remove level %d .las files)\n",i);
+
+              for (j = fblock; j <= lblock; j++) 
+                { low = 1;
+                  for (p = 1; p <= cits; p++)
+                    { hgh = (cnt*p)/cits;
+                      fprintf(out,"rm");
+                      for (k = low; k <= hgh; k++)
+                        if (DON)
+                          fprintf(out," temp%d/L%d.%d.%d.las",j,i,j,k);
+                        else
+                          fprintf(out," L%d.%d.%d.las",i,j,k);
+                      fprintf(out,"\n");
+                      low = hgh+1;
+                    }
+                }
+
+              if (ONAME != NULL)
+                fclose(out);
+
+              cnt = cits;
+            }
+        }
+      }
+
+    //  Finish with MASKrep
+
+    { int h, step;
+
+      if (ONAME != NULL)
+        { sprintf(name,"%s.%02d.MASK",ONAME,stage++);
+          out = fopen(name,"w");
+        }
+ 
+#ifdef LSF
+    jobid = 1;
+#endif
+      step   = (SPAN-1)/BUNIT+1;
+      njobs  = (((lblock-fblock)+1) / SPAN)*step;
+      step   = (SPAN-1)/step+1;
+      njobs += ((((lblock-fblock)+1) % SPAN)-1)/step + 1;
+
+      fprintf(out,"# REPmask jobs (%d)\n",njobs);
+
+      for (i = fblock; i <= lblock; i += SPAN)
+       for (h = i; h < i+SPAN && h <= lblock; h += step)
+        {
+#ifdef LSF
+          fprintf(out,LSF_MASK,SPAN,SPAN,jobid++);
+          fprintf(out," \"");
+#endif
+          fprintf(out,"REPmask");
+          if (VON)
+            fprintf(out," -v");
+          fprintf(out," -c%d -mrep%d",CINT,SPAN);
+          if (usepath)
+            fprintf(out," %s/%s",pwd,root);
+          else
+            fprintf(out," %s",root);
+          j = h+step;
+          if (j > i+SPAN)
+            j = i+SPAN;
+          if (j > lblock)
+            j = lblock+1;
+          for (k = h; k < j; k++)
+            if (useblock)
+              if (DON)
+                fprintf(out," temp%d/%s.R%d.%d",k,root,SPAN,k);
+              else
+                fprintf(out," %s.R%d.%d",root,SPAN,k);
+            else
+              fprintf(out," %s.R%d",root,SPAN);
+#ifdef LSF
+          fprintf(out,"\"");
+#endif
+          fprintf(out,"\n");
+        }
+
+      //  Cleanup (optinoal)
+
+      if (ONAME != NULL)
+        { sprintf(name,"%s.%02d.RM",ONAME,stage++);
+          out = fopen(name,"w");
+        }
+
+      if (DON)
+        fprintf(out,"# Cleanup all temporary directories\n");
+      else
+        fprintf(out,"# Cleanup all R%d.las files\n",SPAN);
+
+      if (DON)
+        for (i = fblock; i <= lblock; i++)
+          fprintf(out,"rm -r temp%d\n",i);
+      else
+        for (i = fblock; i <= lblock; i += SPAN)
+         for (h = i; h < i+SPAN && h <= lblock; h += step)
+          { fprintf(out,"rm");
+            j = h+step;
+            if (j > i+SPAN)
+              j = i+SPAN;
+            if (j > lblock)
+              j = lblock+1;
+            for (k = h; k < j; k++)
+              if (useblock)
+                fprintf(out," %s.R%d.%d.las",root,SPAN,k);
+              else
+                fprintf(out," %s.R%d.las",root,SPAN);
+            fprintf(out,"\n");
+          }
+  
+      if (ONAME != NULL)
+        fclose(out);
+    }
+  }
+
+  printf("# Once all the .rep masks have been computed for every block\n");
+  printf("#   you should call 'Catrack' to merge them, and then you should\n");
+  printf("#   remove the block tracks\n");
+
+  free(root);
+  free(pwd);
+
+  exit (0);
+}
diff --git a/DAMASKER/HPC.TANmask.c b/DAMASKER/HPC.TANmask.c
new file mode 100644
index 0000000..70750c6
--- /dev/null
+++ b/DAMASKER/HPC.TANmask.c
@@ -0,0 +1,530 @@
+/*********************************************************************************************\
+ *
+ *  Produce a script to compute tandem repeat masks for all blocks or range of blocks of a DB
+ *
+ *  Author:  Gene Myers
+ *  Date  :  March 24, 2016
+ *
+ *********************************************************************************************/
+ 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "DB.h"
+
+#undef  LSF  //  define if want a directly executable LSF script
+
+static char *Usage[] =
+  { "[-vd] [-k<int(12)>] [-w<int(4)>] [-h<int(35)>] [-T<int(4)>]",
+    "      [-e<double(.70)] [-l<int(500)>] [-s<int(100)] [-f<name>]",
+    "      <reads:db|dam> [<first:int>[-<last:int>]"
+  };
+
+#define LSF_TAND "bsub -q medium -n 4 -o TANDEM.out -e TANDEM.err -R span[hosts=1] -J tandem#%d"
+#define LSF_SORT "bsub -q short -n 12 -o SORT.TAN.out -e SORT.TAN.err -R span[hosts=1] -J sort#%d"
+#define LSF_MERGE \
+    "bsub -q short -n 12 -o MERGE%d.REP%d.out -e MERGE%d.REP%d.err -R span[hosts=1] -J merge#%d"
+#define LSF_CHECK \
+          "bsub -q short -n 12 -o CHECK%d.DAL.out -e CHECK%d.DAL.err -R span[hosts=1] -J check#%d"
+#define LSF_MASK \
+          "bsub -q short -n 12 -o MASK.TAN.out -e MASK.TAN.err -R span[hosts=1] -J masktan#%d"
+
+int main(int argc, char *argv[])
+{ int   nblocks;
+  int   usepath;
+  int   useblock;
+  int   fblock, lblock;
+#ifdef LSF
+  int   jobid;
+#endif
+
+  FILE *out;
+  char  name[100];
+  char *pwd, *root;
+
+#define BUNIT  4
+
+  int    VON, DON;
+  int    WINT, HINT, KINT, SINT, LINT;
+  int    NTHREADS;
+  double EREL;
+  char  *ONAME;
+
+  { int    i, j, k;         //  Process options
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("HPC.TANmask")
+
+    KINT  = 12;
+    WINT  = 4;
+    HINT  = 35;
+    EREL  = 0.;
+    LINT  = 500;
+    SINT  = 100;
+    ONAME = NULL;
+    out   = stdout;
+
+    NTHREADS = 4;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vd");
+            break;
+          case 'e':
+            ARG_REAL(EREL)
+            if (EREL < .7 || EREL >= 1.)
+              { fprintf(stderr,"%s: Average correlation must be in [.7,1.) (%g)\n",Prog_Name,EREL);
+                exit (1);
+              }
+            break;
+          case 'f':
+            ONAME = argv[i]+2;
+            break;
+          case 'h':
+            ARG_POSITIVE(HINT,"Hit threshold (in bp.s)")
+            break;
+          case 'k':
+            ARG_POSITIVE(KINT,"K-mer length")
+            break;
+          case 'l':
+            ARG_POSITIVE(LINT,"Minimum ovlerap length")
+            break;
+          case 's':
+            ARG_POSITIVE(SINT,"Trace spacing")
+            break;
+          case 'w':
+            ARG_POSITIVE(WINT,"Log of bin width")
+            break;
+          case 'T':
+            ARG_POSITIVE(NTHREADS,"Number of threads")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VON = flags['v'];
+    DON = flags['d'];
+
+    if (argc < 2 || argc > 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[2]);
+        exit (1);
+      }
+
+    for (j = 1; 2*j <= NTHREADS; j *= 2)
+      ;
+    NTHREADS = j;
+  }
+
+  //  Make sure DB exists and is partitioned, get number of blocks in partition
+
+  pwd = PathTo(argv[1]);
+  if (strcmp(argv[1]+(strlen(argv[1])-4),".dam") == 0)
+    root = Root(argv[1],".dam");
+  else
+    root = Root(argv[1],".db");
+
+  { int i, nfiles;
+    FILE *dbvis;
+
+    dbvis = fopen(Catenate(pwd,"/",root,".dam"),"r");
+    if (dbvis == NULL)
+      { dbvis = Fopen(Catenate(pwd,"/",root,".db"),"r");
+        if (dbvis == NULL)
+          exit (1);
+      }
+
+    if (fscanf(dbvis,"files = %d\n",&nfiles) != 1)
+      SYSTEM_ERROR
+    for (i = 0; i < nfiles; i++)
+      { char buffer[30001];
+
+        if (fgets(buffer,30000,dbvis) == NULL)
+          SYSTEM_ERROR
+      }
+
+    useblock = 1;
+    if (fscanf(dbvis,"blocks = %d\n",&nblocks) != 1 || nblocks == 1)
+      { useblock = 0;
+        nblocks  = 1;
+      }
+
+    usepath = (strcmp(pwd,".") != 0);
+  }
+
+  //  Set range fblock-lblock checking that DB.<fblock-1>.las exists & DB.<fblock>.las does not
+
+  { char *eptr, *fptr;
+    FILE *file;
+
+    if (argc == 3)
+      { fblock = strtol(argv[2],&eptr,10);
+        if ((*eptr != '\0' && *eptr != '-') || eptr <= argv[2])
+          { fprintf(stderr,"%s: final argument '%s' does not start with an integer\n",
+                           Prog_Name,argv[2]);
+            exit (1);
+          }
+        useblock = 1;
+        if (*eptr == '-')
+          { lblock = strtol(eptr+1,&fptr,10);
+            if (*fptr != '\0' || fptr <= eptr+1)
+              { fprintf(stderr,"%s: second part of range '%s' is not an integer\n",
+                               Prog_Name,eptr+1);
+                exit (1);
+              }
+          }
+        else
+          lblock = fblock;
+        if (fblock < 1 || lblock > nblocks || fblock > lblock)
+          { fprintf(stderr,"%s: range %d-%d is empty or out of bounds\n",Prog_Name,fblock,lblock);
+            exit (1);
+          }
+      }
+    else
+      { fblock = 1;
+        lblock = nblocks;
+      }
+
+    if (fblock > 1)
+      { file = fopen(Catenate(pwd,"/.",root,Numbered_Suffix(".",fblock-1,".tan.anno")),"r");
+        if (file == NULL)
+          { if (usepath)
+              fprintf(stderr,"%s: File %s/.%s.%d.tan.anno should already be present!\n",
+                             Prog_Name,pwd,root,fblock-1);
+            else
+              fprintf(stderr,"%s: File .%s.%d.tan.anno should already be present!\n",
+                             Prog_Name,root,fblock-1);
+            exit (1);
+          }
+        else
+          fclose(file);
+      }
+    if (useblock)
+      file = fopen(Catenate(pwd,"/.",root,Numbered_Suffix(".",fblock,".tan.anno")),"r");
+    else
+      file = fopen(Catenate(pwd,"/.",root,".tan.anno"),"r");
+    if (file != NULL)
+      { if (useblock)
+          { if (usepath)
+              fprintf(stderr,"%s: File %s/.%s.%d.tan.anno should not yet exist!\n",
+                             Prog_Name,pwd,root,fblock);
+            else
+              fprintf(stderr,"%s: File .%s.%d.tan.anno should not yet exist!\n",
+                             Prog_Name,root,fblock);
+            exit (1);
+          }
+        else
+          { if (usepath)
+              fprintf(stderr,"%s: File %s/.%s.tan.anno should not yet exist!\n",Prog_Name,pwd,root);
+            else
+              fprintf(stderr,"%s: File .%s.tan.anno should not yet exist!\n",Prog_Name,root);
+            exit (1);
+          }
+      }
+
+    DON = (DON && useblock);
+  }
+
+  { int njobs;
+    int i, j, k, p;
+
+    //  Create all work subdirectories if -d is set
+
+    if (DON)
+      { if (ONAME != NULL)
+          { sprintf(name,"%s.00.MKDIR",ONAME);
+            out = fopen(name,"w");
+          }
+
+        fprintf(out,"# Create work subdirectories\n");
+        for (i = fblock; i <= lblock; i++)
+          fprintf(out,"mkdir temp%d\n",i);
+      }
+
+    //  Produce all necessary datandem jobs ...
+
+    if (ONAME != NULL)
+      { sprintf(name,"%s.01.OVL",ONAME);
+        out = fopen(name,"w");
+      }
+
+    njobs = (lblock - fblock)/BUNIT + 1;
+
+    fprintf(out,"# Datander jobs (%d)\n",njobs);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i += BUNIT)
+      {
+#ifdef LSF
+        fprintf(out,LSF_TAND,jobid++);
+        fprintf(out," \"");
+#endif
+        fprintf(out,"datander");
+        if (VON)
+          fprintf(out," -v");
+        if (KINT != 12)
+          fprintf(out," -k%d",KINT);
+        if (WINT != 4)
+          fprintf(out," -w%d",WINT);
+        if (HINT != 35)
+          fprintf(out," -h%d",HINT);
+        if (EREL > .1)
+          fprintf(out," -e%g",EREL);
+        if (LINT != 500)
+          fprintf(out," -l%d",LINT);
+        if (SINT != 100)
+          fprintf(out," -s%d",SINT);
+        if (NTHREADS != 4)
+          fprintf(out," -T%d",NTHREADS);
+        j = i+BUNIT;
+        if (j > lblock+1)
+          j = lblock+1;
+        for (k = i; k < j; k++)
+          if (useblock)
+            if (usepath)
+              fprintf(out," %s/%s.%d",pwd,root,k);
+            else
+              fprintf(out," %s.%d",root,k);
+          else
+            if (usepath)
+              fprintf(out," %s/%s",pwd,root);
+            else
+              fprintf(out," %s",root);
+
+          if (DON)
+            for (k = i; k < j; k++)
+              { fprintf(out," && mv");
+                for (p = 0; p < NTHREADS; p++)
+                  fprintf(out," %s.%d.T%d.las",root,k,p);
+                fprintf(out," temp%d",k);
+              }
+
+#ifdef LSF
+        fprintf(out,"\"");
+#endif
+        fprintf(out,"\n");
+      }
+
+    //  ... and then all the sort & merge jobs for each block
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.02.SORT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Sort & merge jobs (%d)\n", lblock - fblock + 1);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i++)
+      {
+#ifdef LSF
+        fprintf(out,LSF_SORT,jobid++);
+        fprintf(out," \"");
+#endif
+        fprintf(out,"LAsort");
+        if (VON)
+          fprintf(out," -v");
+        for (k = 0; k < NTHREADS; k++)
+          if (useblock)
+            if (DON)
+              fprintf(out," temp%d/%s.%d.T%d",i,root,i,k);
+            else
+              fprintf(out," %s.%d.T%d",root,i,k);
+          else
+            fprintf(out," %s.T%d",root,k);
+        fprintf(out," && LAmerge");
+        if (VON)
+          fprintf(out," -v");
+        if (useblock)
+          if (DON)
+            fprintf(out," temp%d/%s.T.%d",i,root,i);
+          else
+            fprintf(out," %s.T.%d",root,i);
+        else
+          fprintf(out," %s.T",root);
+        for (k = 0; k < NTHREADS; k++)
+          if (useblock)
+            if (DON)
+              fprintf(out," temp%d/%s.%d.T%d.S",i,root,i,k);
+            else
+              fprintf(out," %s.%d.T%d.S",root,i,k);
+          else
+            fprintf(out," %s.T%d.S",root,k);
+#ifdef LSF
+          fprintf(out,"\"");
+#endif
+          fprintf(out,"\n");
+        }
+
+    //  Check .las (option)
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.03.CHECK.OPT",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Check all .las files jobs (%d) (optional but recommended)\n",
+                (lblock-fblock)/(BUNIT+1)+1);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; )
+      { k = i+BUNIT;
+        if (k > lblock)
+          k = lblock;
+#ifdef LSF
+        fprintf(out,LSF_CHECK,0,0,jobid++);
+        fprintf(out," \"");
+#endif
+        fprintf(out,"LAcheck -vS");
+        if (usepath)
+          fprintf(out," %s/%s",pwd,root);
+        else
+          fprintf(out," %s",root);
+        while (i <= k)
+          { if (useblock)
+              if (DON)
+                fprintf(out," temp%d/%s.T.%d",i,root,i);
+              else
+                fprintf(out," %s.T.%d",root,i);
+            else
+              fprintf(out," %s.T",root);
+            i += 1;
+          }
+#ifdef LSF
+        fprintf(out,"\"");
+#endif
+        fprintf(out,"\n");
+      }
+
+    //  Clean up (optional)
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.04.RM",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# Cleanup all intermediate .las files\n");
+
+    for (i = fblock; i <= lblock; i++)
+      { if (DON)
+          fprintf(out,"cd temp%d\n",i);
+        fprintf(out,"rm");
+        for (k = 0; k < NTHREADS; k++)
+          if (useblock)
+            fprintf(out," %s.%d.T%d.S.las %s.%d.T%d.las",root,i,k,root,i,k);
+          else
+            fprintf(out," %s.T%d.S.las %s.T%d.las",root,k,root,k);
+          fprintf(out,"\n");
+        if (DON)
+          fprintf(out,"cd ..\n");
+      }
+
+    //  Finish with MASKtan
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.05.MASK",ONAME);
+        out = fopen(name,"w");
+      }
+
+    fprintf(out,"# TANmask jobs (%d)\n",njobs);
+
+#ifdef LSF
+    jobid = 1;
+#endif
+    for (i = fblock; i <= lblock; i += BUNIT)
+      {
+#ifdef LSF
+        fprintf(out,LSF_MASK,jobid++);
+        fprintf(out," \"");
+#endif
+        fprintf(out,"TANmask");
+        if (VON)
+          fprintf(out," -v");
+        if (LINT != 500)
+          fprintf(out," -l%d",LINT);
+        if (usepath)
+          fprintf(out," %s/%s",pwd,root);
+        else
+          fprintf(out," %s",root);
+        j = i+BUNIT;
+        if (j > lblock+1)
+          j = lblock+1;
+        for (k = i; k < j; k++)
+          if (useblock)
+            if (DON)
+              fprintf(out," temp%d/%s.T.%d",k,root,k);
+            else
+              fprintf(out," %s.T.%d",root,k);
+          else
+            fprintf(out," %s.T",root);
+#ifdef LSF
+        fprintf(out,"\"");
+#endif
+        fprintf(out,"\n");
+      }
+
+    //  Clean up
+
+    if (ONAME != NULL)
+      { fclose(out);
+        sprintf(name,"%s.06.RM",ONAME);
+        out = fopen(name,"w");
+      }
+
+    if (DON)
+      fprintf(out,"# Cleanup all temp directories\n");
+    else
+      fprintf(out,"# Cleanup all T.las files\n");
+
+    if (DON)
+      for (i = fblock; i <= lblock; i++)
+        fprintf(out,"rm -r temp%d\n",i);
+    else
+      for (i = fblock; i <= lblock; i += BUNIT)
+        { fprintf(out,"rm");
+          j = i+BUNIT;
+          if (j > lblock+1)
+            j = lblock+1;
+          for (k = i; k < j; k++)
+            if (useblock)
+              fprintf(out," %s.T.%d.las",root,k);
+            else
+              fprintf(out," %s.T.las",root);
+          fprintf(out,"\n");
+        }
+
+    if (ONAME != NULL)
+      fclose(out);
+  }
+
+  printf("# Once all the .tan masks have been computed for every block\n");
+  printf("#   you should call 'Catrack' to merge them, and then you should\n");
+  printf("#   remove the individual block tracks\n");
+
+  free(root);
+  free(pwd);
+
+  exit (0);
+}
diff --git a/DAMASKER/Makefile b/DAMASKER/Makefile
new file mode 100644
index 0000000..2779a0e
--- /dev/null
+++ b/DAMASKER/Makefile
@@ -0,0 +1,34 @@
+DEST_DIR = ~/bin
+
+CFLAGS = -O3 -Wall -Wextra -Wno-unused-result -fno-strict-aliasing
+
+ALL = datander TANmask REPmask HPC.TANmask HPC.REPmask
+
+all: $(ALL)
+
+datander: datander.c tandem.c tandem.h align.c align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o datander datander.c tandem.c align.c DB.c QV.c -lpthread -lm
+
+TANmask: TANmask.c align.h align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o TANmask TANmask.c align.c DB.c QV.c -lm
+
+REPmask: REPmask.c align.h align.h DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o REPmask REPmask.c align.c DB.c QV.c -lm
+
+HPC.TANmask: HPC.TANmask.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o HPC.TANmask HPC.TANmask.c DB.c QV.c -lm
+
+HPC.REPmask: HPC.REPmask.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o HPC.REPmask HPC.REPmask.c DB.c QV.c -lm
+
+clean:
+	rm -f $(ALL)
+	rm -fr *.dSYM
+	rm -f damasker.tar.gz
+
+install:
+	cp $(ALL) $(DEST_DIR)
+
+package:
+	make clean
+	tar -zcf damasker.tar.gz README Makefile *.h *.c
diff --git a/DAMASKER/QV.c b/DAMASKER/QV.c
new file mode 100644
index 0000000..cdb6a63
--- /dev/null
+++ b/DAMASKER/QV.c
@@ -0,0 +1,1387 @@
+/*******************************************************************************************
+ *
+ *  Compressor/decompressor for .quiv files: customized Huffman codes for each stream based on
+ *    the histogram of values occuring in a given file.  The two low complexity streams
+ *    (deletionQV and substitutionQV) use a Huffman coding of the run length of the prevelant
+ *    character.
+ *
+ *  Author:   Gene Myers
+ *  Date:     Jan 18, 2014
+ *  Modified: July 25, 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#undef DEBUG
+
+#define MIN_BUFFER 1000
+
+#define HUFF_CUTOFF  16   //  This cannot be larger than 16 !
+
+
+/*******************************************************************************************
+ *
+ *  Endian flipping routines
+ *
+ ********************************************************************************************/
+
+static int LittleEndian;  //  Little-endian machine ?
+                          //     Referred by: Decode & Decode_Run
+static int Flip;          //  Flip endian of all coded shorts and ints
+                          //     Referred by: Decode & Decode_Run & Read_Scheme
+
+static void Set_Endian(int flip)
+{ uint32 x = 3;
+  uint8 *b = (uint8 *) (&x);
+
+  Flip         = flip;
+  LittleEndian = (b[0] == 3);
+}
+
+static void Flip_Long(void *w)
+{ uint8 *v = (uint8 *) w;
+  uint8  x;
+
+  x    = v[0];
+  v[0] = v[3];
+  v[3] = x;
+  x    = v[1];
+  v[1] = v[2];
+  v[2] = x;
+}
+
+static void Flip_Short(void *w)
+{ uint8 *v = (uint8 *) w;
+  uint8  x;
+
+  x    = v[0];
+  v[0] = v[1];
+  v[1] = x;
+}
+
+
+/*******************************************************************************************
+ *
+ *  Routines for computing a Huffman Encoding Scheme
+ *
+ ********************************************************************************************/
+
+typedef struct
+  { int    type;             //  0 => normal, 1 => normal but has long codes, 2 => truncated
+    uint32 codebits[256];    //  If type = 2, then code 255 is the special code for
+    int    codelens[256];    //    non-Huffman exceptions
+    int    lookup[0x10000];  //  Lookup table (just for decoding)
+  } HScheme;
+
+typedef struct _HTree
+  { struct _HTree *lft, *rgt; 
+    uint64         count;
+  } HTree;
+
+  //  Establish heap property from node s down (1 is root, siblings of n are 2n and 2n+1)
+  //    assuming s is the only perturbation in the tree.
+
+static void Reheap(int s, HTree **heap, int hsize)
+{ int      c, l, r;
+  HTree   *hs, *hr, *hl;
+
+  c  = s;
+  hs = heap[s];
+  while ((l = 2*c) <= hsize)
+    { r  = l+1;
+      hl = heap[l];
+      hr = heap[r];
+      if (r > hsize || hr->count > hl->count)
+        { if (hs->count > hl->count)
+            { heap[c] = hl;
+              c = l;
+            }
+          else
+            break;
+        }
+      else
+        { if (hs->count > hr->count)
+            { heap[c] = hr;
+              c = r;
+            }
+          else
+            break;
+        }
+    }
+  if (c != s)
+    heap[c] = hs;
+}
+
+  //  Given Huffman tree build a table of codes from it, the low-order codelens[s] bits
+  //    of codebits[s] contain the code for symbol s.
+
+static void Build_Table(HTree *node, int code, int len, uint32 *codebits, int *codelens)
+{ if (node->rgt == NULL)
+    { uint64 symbol = (uint64) (node->lft);
+      codebits[symbol] = code;
+      codelens[symbol] = len;
+    }
+  else
+    { code <<= 1;
+      len   += 1;
+      Build_Table(node->lft,code,len,codebits,codelens);
+      Build_Table(node->rgt,code+1,len,codebits,codelens);
+    }
+}
+
+  // For the non-zero symbols in hist, compute a huffman tree over them, and then
+  //   build a table of the codes.  If inscheme is not NULL, then place all symbols
+  //   with code 255 or with more than HUFF_CUTOFF bits in the encoding by inscheme
+  //   as a single united entity, whose code signals that the value of these symbols
+  //   occur explicitly in 8 (values) or 16 (run lengths) bits following the code.
+  //   All the symbols in this class will have the same entry in the code table and
+  //   255 is always in this class.
+
+static HScheme *Huffman(uint64 *hist, HScheme *inscheme)
+{ HScheme *scheme;
+  HTree   *heap[259];
+  HTree    node[512];
+  int      hsize;
+  HTree   *lft, *rgt;
+  int      value, range;
+  int     i;
+
+  scheme = (HScheme *) Malloc(sizeof(HScheme),"Allocating Huffman scheme record");
+  if (scheme == NULL)
+    return (NULL);
+
+  hsize = 0;                        //  Load heap
+  value = 0;
+  if (inscheme != NULL)
+    { node[0].count = 0;
+      node[0].lft   = (HTree *) (uint64) 255;
+      node[0].rgt   = NULL;
+      heap[++hsize] = node+(value++);
+    }
+  for (i = 0; i < 256; i++)
+    if (hist[i] > 0)
+      { if (inscheme != NULL && (inscheme->codelens[i] > HUFF_CUTOFF || i == 255))
+          node[0].count += hist[i];
+        else
+          { node[value].count = hist[i];
+            node[value].lft   = (HTree *) (uint64) i;
+            node[value].rgt   = NULL;
+            heap[++hsize] = node+(value++);
+          }
+      }
+
+  for (i = hsize/2; i >= 1; i--)    //  Establish heap property
+    Reheap(i,heap,hsize);
+
+  range = value;                    //   Merge pairs with smallest count until have a tree
+  for (i = 1; i < value; i++)
+    { lft = heap[1];
+      heap[1] = heap[hsize--];
+      Reheap(1,heap,hsize);
+      rgt = heap[1];
+      node[range].lft = lft;
+      node[range].rgt = rgt;
+      node[range].count = lft->count + rgt->count;
+      heap[1] = node+(range++);
+      Reheap(1,heap,hsize);
+    }
+
+  for (i = 0; i < 256; i++)        //  Build the code table
+    { scheme->codebits[i] = 0;
+      scheme->codelens[i] = 0;
+    }
+
+  Build_Table(node+(range-1),0,0,scheme->codebits,scheme->codelens);
+
+  if (inscheme != NULL)            //  Set scheme type and if truncated (2), map truncated codes
+    { scheme->type = 2;            //    to code and length for 255
+      for (i = 0; i < 255; i++)
+        if (inscheme->codelens[i] > HUFF_CUTOFF || scheme->codelens[i] > HUFF_CUTOFF)
+          { scheme->codelens[i] = scheme->codelens[255];
+            scheme->codebits[i] = scheme->codebits[255];
+          }
+    }
+  else
+    { scheme->type = 0;
+      for (i = 0; i < 256; i++)
+        { if (scheme->codelens[i] > HUFF_CUTOFF)
+            scheme->type = 1;
+        }
+    }
+
+  return (scheme);
+}
+
+#ifdef DEBUG
+
+  //  For debug, show the coding table
+
+static void Print_Table(HScheme *scheme, uint64 *hist, int infosize)
+{ uint64 total_bits;
+  uint32 specval, mask, code, *bits;
+  int    speclen, clen, *lens;
+  int    i, k;
+
+  total_bits = 0;
+  bits = scheme->codebits;
+  lens = scheme->codelens;
+  if (scheme->type == 2)
+    { specval = bits[255];
+      speclen = lens[255];
+    }
+  else
+    specval = speclen = 0x7fffffff;
+
+  printf("\nCode Table:\n");
+  for (i = 0; i < 256; i++)
+    if (lens[i] > 0)
+      { clen = lens[i];
+        mask = (1 << clen);
+        code = bits[i];
+        printf(" %3d: %2d ",i,clen);
+        for (k = 0; k < clen; k++)
+          { mask >>= 1;
+            if (code & mask)
+              printf("1");
+            else
+              printf("0");
+          }
+        if (code == specval && clen == speclen)
+          { printf(" ***");
+            if (hist != NULL)
+              total_bits += (clen+infosize)*hist[i];
+          }
+        else if (hist != NULL)
+          total_bits += clen*hist[i];
+        printf("\n");
+      }
+  if (hist != NULL)
+    printf("\nTotal Bytes = %lld\n",(total_bits-1)/8+1);
+}
+
+  //  For debug, show the histogram
+
+static void Print_Histogram(uint64 *hist)
+{ int    i, low, hgh;
+  uint64 count;
+
+  for (hgh = 255; hgh >= 0; hgh--)
+    if (hist[hgh] != 0)
+      break;
+  for (low = 0; low < 256; low++)
+    if (hist[low] != 0)
+      break;
+  count = 0;
+  for (i = low; i <= hgh; i++)
+    count += hist[i];
+
+  for (i = hgh; i >= low; i--)
+    printf("    %3d: %8llu %5.1f%%\n",i,hist[i],(hist[i]*100.)/count);
+}
+
+#endif
+
+
+/*******************************************************************************************
+ *
+ *  Read and Write Huffman Schemes
+ *
+ ********************************************************************************************/
+
+  //  Write the code table to out.
+
+static void Write_Scheme(HScheme *scheme, FILE *out)
+{ int     i;
+  uint8   x;
+  uint32 *bits;
+  int    *lens;
+
+  lens = scheme->codelens;
+  bits = scheme->codebits;
+
+  x = (uint8) (scheme->type);
+  fwrite(&x,1,1,out);
+
+  for (i = 0; i < 256; i++)
+    { x = (uint8) (lens[i]);
+      fwrite(&x,1,1,out);
+      if (x > 0)
+        fwrite(bits+i,sizeof(uint32),1,out);
+    }
+}
+
+  //  Allocate and read a code table from in, and return a pointer to it.
+
+static HScheme *Read_Scheme(FILE *in)
+{ HScheme *scheme;
+  int     *look, *lens;
+  uint32  *bits, base;
+  int      i, j, powr;
+  uint8    x;
+
+  scheme = (HScheme *) Malloc(sizeof(HScheme),"Allocating Huffman scheme record");
+  if (scheme == NULL)
+    return (NULL);
+
+  lens = scheme->codelens;
+  bits = scheme->codebits;
+  look = scheme->lookup;
+
+  if (fread(&x,1,1,in) != 1)
+    { EPRINTF(EPLACE,"Could not read scheme type byte (Read_Scheme)\n");
+      free(scheme);
+      return (NULL);
+    }
+  scheme->type = x;
+  for (i = 0; i < 256; i++)
+    { if (fread(&x,1,1,in) != 1)
+        { EPRINTF(EPLACE,"Could not read length of %d'th code (Read_Scheme)\n",i);
+          return (NULL);
+        }
+      lens[i] = x;
+      if (x > 0)
+        { if (fread(bits+i,sizeof(uint32),1,in) != 1)
+            { EPRINTF(EPLACE,"Could not read bit encoding of %d'th code (Read_Scheme)\n",i);
+              free(scheme);
+              return (NULL);
+            }
+        }
+      else
+        bits[i] = 0;
+    }
+
+  if (Flip)
+    { for (i = 0; i < 256; i++)
+        Flip_Long(bits+i);
+    }
+
+  for (i = 0; i < 256; i++)
+    { if (lens[i] > 0)
+        { base = (bits[i] << (16-lens[i]));
+          powr = (1 << (16-lens[i]));
+          for (j = 0; j < powr; j++)
+            look[base+j] = i;
+        }
+    }
+
+  return (scheme);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Encoders and Decoders
+ *
+ ********************************************************************************************/
+
+  //  Encode read[0..rlen-1] according to scheme and write to out
+
+static void Encode(HScheme *scheme, FILE *out, uint8 *read, int rlen)
+{ uint32  x, c, ocode;
+  int     n, k, olen, llen;
+  int    *nlens;
+  uint32 *nbits;
+  uint32  nspec;
+  int     nslen;
+
+  nlens = scheme->codelens;
+  nbits = scheme->codebits;
+
+  if (scheme->type == 2)
+    { nspec = nbits[255];
+      nslen = nlens[255];
+    }
+  else
+    nspec = nslen = 0x7fffffff;
+
+#define OCODE(L,C)				\
+{ int    len  = olen + (L);			\
+  uint32 code = (C);				\
+						\
+  llen = olen;					\
+  if (len >= 32)				\
+    { olen   = len-32;				\
+      ocode |= (code >> olen);			\
+      fwrite(&ocode,sizeof(uint32),1,out);	\
+      if (olen > 0)				\
+        ocode = (code << (32-olen));		\
+      else					\
+        ocode = 0;				\
+    } 						\
+  else						\
+    { olen   = len;				\
+      ocode |= (code << (32-olen));;		\
+    }						\
+}
+
+  llen  = 0;
+  olen  = 0;
+  ocode = 0;
+  for (k = 0; k < rlen; k++)
+    { x = read[k];
+      n = nlens[x];
+      c = nbits[x];
+      OCODE(n,c);
+      if (c == nspec && n == nslen)
+        OCODE(8,x);
+    }
+
+  if (olen > 0)                              //  Tricky: must pad so decoder does not read past
+    { fwrite(&ocode,sizeof(uint32),1,out);   //    last integer int the coded output.
+      if (llen > 16 && olen > llen)
+        fwrite(&ocode,sizeof(uint32),1,out);
+    }
+  else if (llen > 16)
+    fwrite(&ocode,sizeof(uint32),1,out);
+}
+
+  //  Encode read[0..rlen-1] according to non-rchar table neme, and run-length table reme for
+  //    runs of rchar characters.  Write to out.
+
+static void Encode_Run(HScheme *neme, HScheme *reme, FILE *out, uint8 *read, int rlen, int rchar)
+{ uint32  x, c, ocode;
+  int     n, h, k, olen, llen;
+  int    *nlens, *rlens;
+  uint32 *nbits, *rbits;
+  uint32  nspec, rspec;
+  int     nslen, rslen;
+
+  nlens = neme->codelens;
+  nbits = neme->codebits;
+  rlens = reme->codelens;
+  rbits = reme->codebits;
+
+  if (neme->type == 2)
+    { nspec = nbits[255];
+      nslen = nlens[255];
+    }
+  else
+    nspec = nslen = 0x7fffffff;
+
+  rspec = rbits[255];
+  rslen = rlens[255];
+
+  llen  = 0;
+  olen  = 0;
+  ocode = 0;
+  k     = 0;
+  while (k < rlen)
+    { h = k;
+      while (k < rlen && read[k] == rchar)
+        k += 1;
+      if (k-h >= 255)
+        x = 255;
+      else
+        x = k-h;
+      n = rlens[x];
+      c = rbits[x];
+      OCODE(n,c);
+      if (c == rspec && n == rslen)
+        OCODE(16,k-h);
+      if (k < rlen)
+        { x = read[k];
+          n = nlens[x];
+          c = nbits[x];
+          OCODE(n,c);
+          if (c == nspec && n == nslen)
+            OCODE(8,x);
+          k += 1;
+        }
+    }
+
+  if (olen > 0)
+    { fwrite(&ocode,sizeof(uint32),1,out);
+      if (llen > 16 && olen > llen)
+        fwrite(&ocode,sizeof(uint32),1,out);
+    }
+  else if (llen > 16)
+    fwrite(&ocode,sizeof(uint32),1,out);
+}
+
+  //  Read and decode from in, the next rlen symbols into read according to scheme
+
+static int Decode(HScheme *scheme, FILE *in, char *read, int rlen)
+{ int    *look, *lens;
+  int     signal, ilen;
+  uint64  icode;
+  uint32 *ipart;
+  uint16 *xpart;
+  uint8  *cpart;
+  int     j, n, c;
+
+  if (LittleEndian)
+    { ipart = ((uint32 *) (&icode));
+      xpart = ((uint16 *) (&icode)) + 2;
+      cpart = ((uint8  *) (&icode)) + 5;
+    }
+  else
+    { ipart = ((uint32 *) (&icode)) + 1;
+      xpart = ((uint16 *) (&icode)) + 1;
+      cpart = ((uint8  *) (&icode)) + 2;
+    }
+
+  if (scheme->type == 2)
+    signal  = 255;
+  else
+    signal  = 256;
+  lens = scheme->codelens;
+  look = scheme->lookup;
+
+#define GET								\
+  if (n > ilen)								\
+    { icode <<= ilen;							\
+      if (fread(ipart,sizeof(uint32),1,in) != 1)			\
+        { EPRINTF(EPLACE,"Could not read more bits (Decode)\n");	\
+          return (1);							\
+        }								\
+      ilen    = n-ilen;							\
+      icode <<= ilen;							\
+      ilen    = 32-ilen;						\
+    }									\
+  else									\
+    { icode <<= n;							\
+      ilen   -= n;							\
+    }
+
+#define GETFLIP								\
+  if (n > ilen)								\
+    { icode <<= ilen;							\
+      if (fread(ipart,sizeof(uint32),1,in) != 1)			\
+        { EPRINTF(EPLACE,"Could not read more bits (Decode)\n");	\
+          return (1);							\
+        }								\
+      Flip_Long(ipart);							\
+      ilen    = n-ilen;							\
+      icode <<= ilen;							\
+      ilen    = 32-ilen;						\
+    }									\
+  else									\
+    { icode <<= n;							\
+      ilen   -= n;							\
+    }
+
+  n     = 16;
+  ilen  = 0;
+  icode = 0;
+  if (Flip)
+    for (j = 0; j < rlen; j++)
+      { GETFLIP
+        c = look[*xpart];
+        n = lens[c];
+        if (c == signal)
+          { GETFLIP
+            c = *cpart;
+            n = 8;
+          }
+        read[j] = (char) c;
+      }
+  else
+    for (j = 0; j < rlen; j++)
+      { GET
+        c = look[*xpart];
+        n = lens[c];
+        if (c == signal)
+          { GET
+            c = *cpart;
+            n = 8;
+          }
+        read[j] = (char) c;
+      }
+
+  return (0);
+}
+
+  //  Read and decode from in, the next rlen symbols into read according to non-rchar scheme
+  //    neme, and the rchar runlength shceme reme
+
+static int Decode_Run(HScheme *neme, HScheme *reme, FILE *in, char *read,
+                      int rlen, int rchar)
+{ int    *nlook, *nlens;
+  int    *rlook, *rlens;
+  int     nsignal, ilen;
+  uint64  icode;
+  uint32 *ipart;
+  uint16 *xpart;
+  uint8  *cpart;
+  int     j, n, c, k;
+
+  if (LittleEndian)
+    { ipart = ((uint32 *) (&icode));
+      xpart = ((uint16 *) (&icode)) + 2;
+      cpart = ((uint8  *) (&icode)) + 5;
+    }
+  else
+    { ipart = ((uint32 *) (&icode)) + 1;
+      xpart = ((uint16 *) (&icode)) + 1;
+      cpart = ((uint8  *) (&icode)) + 2;
+    }
+
+  if (neme->type == 2)
+    nsignal = 255;
+  else
+    nsignal = 256;
+  nlens = neme->codelens;
+  nlook = neme->lookup;
+
+  rlens = reme->codelens;
+  rlook = reme->lookup;
+
+  n     = 16;
+  ilen  = 0;
+  icode = 0;
+  if (Flip)
+    for (j = 0; j < rlen; j++)
+      { GETFLIP
+        c = rlook[*xpart];
+        n = rlens[c];
+        if (c == 255)
+          { GETFLIP
+            c = *xpart;
+            n = 16;
+          }
+        for (k = 0; k < c; k++)
+          read[j++] = (char) rchar;
+
+        if (j < rlen)
+          { GETFLIP
+            c = nlook[*xpart];
+            n = nlens[c];
+            if (c == nsignal)
+              { GETFLIP
+                c = *cpart;
+                n = 8;
+              }
+            read[j] = (char) c;
+          }
+      }
+  else
+    for (j = 0; j < rlen; j++)
+      { GET
+        c = rlook[*xpart];
+        n = rlens[c];
+        if (c == 255)
+          { GET
+            c = *xpart;
+            n = 16;
+          }
+        for (k = 0; k < c; k++)
+          read[j++] = (char) rchar;
+
+        if (j < rlen)
+          { GET
+            c = nlook[*xpart];
+            n = nlens[c];
+            if (c == nsignal)
+              { GET
+                c = *cpart;
+                n = 8;
+              }
+            read[j] = (char) c;
+          }
+      }
+
+  return (0);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Histogrammers
+ *
+ ********************************************************************************************/
+
+//  Histogram runlengths of symbol runChar in stream[0..rlen-1] into run.
+
+static void Histogram_Seqs(uint64 *hist, uint8 *stream, int rlen)
+{ int k;
+
+  for (k = 0; k < rlen; k++)
+    hist[stream[k]] += 1;
+}
+
+static void Histogram_Runs(uint64 *run, uint8 *stream, int rlen, int runChar)
+{ int k, h;
+
+  k = 0;
+  while (k < rlen)
+    { h = k;
+      while (k < rlen && stream[k] == runChar)
+        k += 1;
+      if (k-h >= 256)
+        run[255] += 1;
+      else
+        run[k-h] += 1;
+      if (k < rlen)
+        k += 1;
+    }
+}
+
+
+/*******************************************************************************************
+ *
+ *  Reader
+ *
+ ********************************************************************************************/
+
+static char  *Read = NULL;   //  Referred by:  QVentry, Read_Lines, QVcoding_Scan,
+static int    Rmax = -1;     //                Compress_Next_QVentry
+
+static int    Nline;         //  Referred by:  QVcoding_Scan
+
+char *QVentry()
+{ return (Read); }
+
+void Set_QV_Line(int line)
+{ Nline = line; }
+
+int Get_QV_Line()
+{ return (Nline); }
+
+//  If nlines == 1 trying to read a single header, nlines = 5 trying to read 5 QV/fasta lines
+//    for a sequence.  Place line j at Read+j*Rmax and the length of every line is returned
+//    unless eof occurs in which case return -1.  If any error occurs return -2.
+
+int Read_Lines(FILE *input, int nlines)
+{ int   i, rlen;
+  int   tmax;
+  char *tread;
+  char *other;
+
+  if (Read == NULL)
+    { tmax  = MIN_BUFFER;
+      tread = (char *) Malloc(5*tmax,"Allocating QV entry read buffer");
+      if (tread == NULL)
+        EXIT(-2);
+      Rmax = tmax;
+      Read = tread;
+    }
+
+  Nline += 1;
+  if (fgets(Read,Rmax,input) == NULL)
+    return (-1);
+
+  rlen = strlen(Read);
+  while (Read[rlen-1] != '\n')
+    { tmax  = ((int) 1.4*Rmax) + MIN_BUFFER;
+      tread = (char *) Realloc(Read,5*tmax,"Reallocating QV entry read buffer");
+      if (tread == NULL)
+        EXIT(-2);
+      Rmax = tmax;
+      Read = tread;
+      if (fgets(Read+rlen,Rmax-rlen,input) == NULL)
+        { EPRINTF(EPLACE,"Line %d: Last line does not end with a newline !\n",Nline);
+          EXIT(-2);
+        }
+      rlen += strlen(Read+rlen);
+    }
+  other = Read;
+  for (i = 1; i < nlines; i++)
+    { other += Rmax;
+      Nline += 1;
+      if (fgets(other,Rmax,input) == NULL)
+        { EPRINTF(EPLACE,"Line %d: incomplete last entry of .quiv file\n",Nline);
+          EXIT(-2);
+        }
+      if (rlen != (int) strlen(other))
+        { EPRINTF(EPLACE,"Line %d: Lines for an entry are not the same length\n",Nline);
+          EXIT(-2);
+        }
+    }
+  return (rlen-1);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Tag compression and decompression routines
+ *
+ ********************************************************************************************/
+
+//  Keep only the symbols in tags[0..rlen-1] for which qvs[k] != rchar and
+//    return the # of symbols kept.
+
+static int Pack_Tag(char *tags, char *qvs, int rlen, int rchar)
+{ int j, k;
+
+  j = 0;
+  for (k = 0; k < rlen; k++)
+    if (qvs[k] != rchar)
+      tags[j++] = tags[k];
+  tags[j] = '\0';
+  return (j);
+}
+
+  //  Count the # of non-rchar symbols in qvs[0..rlen-1]
+
+static int Packed_Length(char *qvs, int rlen, int rchar)
+{ int k, clen;
+
+  clen = 0;
+  for (k = 0; k < rlen; k++)
+    if (qvs[k] != rchar)
+      clen += 1;
+  return (clen);
+}
+
+  //  Unpack tags by moving its i'th char to position k where qvs[k] is the i'th non-rchar
+  //    symbol in qvs.  All other chars are set to rchar.  rlen is the length of qvs and
+  //    the unpacked result, clen is the initial length of tags.
+
+static void Unpack_Tag(char *tags, int clen, char *qvs, int rlen, int rchar)
+{ int j, k;
+
+  j = clen-1;
+  for (k = rlen-1; k >= 0; k--)
+    { if (qvs[k] == rchar)
+        tags[k] = 'n';
+      else
+        tags[k] = tags[j--];
+    }
+}
+
+
+/*******************************************************************************************
+ *
+ *  Statistics Scan and Scheme creation and write
+ *
+ ********************************************************************************************/
+
+  // Read up to the next num entries or until eof from the .quiva file on input and record
+  //   frequency statistics.  Copy these entries to the temporary file temp if != NULL.
+  //   If there is an error then -1 is returned, otherwise the number of entries read.
+
+static uint64   delHist[256], insHist[256], mrgHist[256], subHist[256], delRun[256], subRun[256];
+static uint64   totChar;
+static int      delChar, subChar;
+
+  // Referred by:  QVcoding_Scan, Create_QVcoding
+
+int QVcoding_Scan(FILE *input, int num, FILE *temp)
+{ char *slash;
+  int   rlen;
+  int   i, r;
+
+  //  Zero histograms
+
+  bzero(delHist,sizeof(uint64)*256);
+  bzero(mrgHist,sizeof(uint64)*256);
+  bzero(insHist,sizeof(uint64)*256);
+  bzero(subHist,sizeof(uint64)*256);
+
+  for (i = 0; i < 256; i++)
+    delRun[i] = subRun[i] = 1;
+
+  totChar    = 0;
+  delChar    = -1;
+  subChar    = -1;
+
+  //  Make a sweep through the .quiva entries, histogramming the relevant things
+  //    and figuring out the run chars for the deletion and substition streams
+
+  r = 0;
+  for (i = 0; i < num; i++)
+    { int well, beg, end, qv;
+
+      rlen = Read_Lines(input,1);
+      if (rlen == -2)
+        EXIT(-1);
+      if (rlen < 0)
+        break;
+
+      if (rlen == 0 || Read[0] != '@')
+        { EPRINTF(EPLACE,"Line %d: Header in quiva file is missing\n",Nline);
+          EXIT(-1);
+        }
+      slash = index(Read+1,'/');
+      if (slash == NULL)
+  	{ EPRINTF(EPLACE,"%s: Line %d: Header line incorrectly formatted ?\n",
+                         Prog_Name,Nline);
+          EXIT(-1);
+        }
+      if (sscanf(slash+1,"%d/%d_%d RQ=0.%d\n",&well,&beg,&end,&qv) != 4)
+        { EPRINTF(EPLACE,"%s: Line %d: Header line incorrectly formatted ?\n",
+                         Prog_Name,Nline);
+          EXIT(-1);
+        }
+
+      if (temp != NULL)
+        fputs(Read,temp);
+
+      rlen = Read_Lines(input,5);
+      if (rlen < 0)
+        { if (rlen == -1)
+            EPRINTF(EPLACE,"Line %d: incomplete last entry of .quiv file\n",Nline);
+          EXIT(-1);
+        }
+
+      if (temp != NULL)
+        { fputs(Read,temp);
+          fputs(Read+Rmax,temp);
+          fputs(Read+2*Rmax,temp);
+          fputs(Read+3*Rmax,temp);
+          fputs(Read+4*Rmax,temp);
+        }
+
+      Histogram_Seqs(delHist,(uint8 *) (Read),rlen);
+      Histogram_Seqs(insHist,(uint8 *) (Read+2*Rmax),rlen);
+      Histogram_Seqs(mrgHist,(uint8 *) (Read+3*Rmax),rlen);
+      Histogram_Seqs(subHist,(uint8 *) (Read+4*Rmax),rlen);
+
+      if (delChar < 0)
+        { int   k;
+          char *del = Read+Rmax;
+
+          for (k = 0; k < rlen; k++)
+            if (del[k] == 'n' || del[k] == 'N')
+              { delChar = Read[k];
+                break;
+              }
+        }
+      if (delChar >= 0)
+        Histogram_Runs( delRun,(uint8 *) (Read),rlen,delChar);
+      totChar += rlen;
+      if (subChar < 0)
+        { if (totChar >= 100000)
+            { int k;
+
+              subChar = 0;
+              for (k = 1; k < 256; k++)
+                if (subHist[k] > subHist[subChar])
+                  subChar = k;
+            }
+        }
+      if (subChar >= 0)
+        Histogram_Runs( subRun,(uint8 *) (Read+4*Rmax),rlen,subChar);
+
+      r += 1;
+    }
+
+  return (r);
+}
+
+  //   Using the statistics in the global stat tables, create the Huffman schemes and write
+  //   them to output.  If lossy is set, then create a lossy table for the insertion and merge
+  //   QVs.
+
+QVcoding *Create_QVcoding(int lossy)
+{ static QVcoding coding;
+
+  HScheme *delScheme, *insScheme, *mrgScheme, *subScheme;
+  HScheme *dRunScheme, *sRunScheme;
+
+  delScheme  = NULL;
+  dRunScheme = NULL;
+  insScheme  = NULL;
+  mrgScheme  = NULL;
+  subScheme  = NULL;
+  sRunScheme = NULL;
+
+  //  Check whether using a subtitution run char is a win
+
+  if (totChar < 200000 || subHist[subChar] < .5*totChar)
+    subChar = -1;
+
+  //  If lossy encryption is enabled then scale insertions and merge QVs.
+
+  if (lossy)
+    { int k;
+
+      for (k = 0; k < 256; k += 2)
+        { insHist[k] += insHist[k+1];
+          insHist[k+1] = 0;
+        }
+
+      for (k = 0; k < 256; k += 4)
+        { mrgHist[k] += mrgHist[k+1];
+          mrgHist[k] += mrgHist[k+2];
+          mrgHist[k] += mrgHist[k+3];
+          mrgHist[k+1] = 0;
+          mrgHist[k+2] = 0;
+          mrgHist[k+3] = 0;
+        }
+    }
+
+  //  Build a Huffman scheme for each stream entity from the histograms
+
+#define SCHEME_MACRO(meme,hist,label,bits)	\
+  scheme = Huffman( (hist), NULL);		\
+  if (scheme == NULL)				\
+    goto error;					\
+  if (scheme->type)				\
+    { (meme) = Huffman( (hist), scheme);	\
+      free(scheme);				\
+    }						\
+  else						\
+    (meme) = scheme;
+
+#ifdef DEBUG
+
+#define MAKE_SCHEME(meme,hist,label,bits)	\
+  SCHEME_MACRO(meme,hist,label,bits)		\
+  printf("\n%s\n", (label) );			\
+  Print_Histogram( (hist));			\
+  Print_Table( (meme), (hist), (bits));	
+
+#else
+
+#define MAKE_SCHEME(meme,hist,label,bits)	\
+  SCHEME_MACRO(meme,hist,label,bits)
+
+#endif
+
+  { HScheme *scheme;
+
+    if (delChar < 0)
+      { MAKE_SCHEME(delScheme,delHist, "Hisotgram of Deletion QVs", 8);
+        dRunScheme = NULL;
+      }
+    else
+      { delHist[delChar] = 0;
+        MAKE_SCHEME(delScheme,delHist, "Hisotgram of Deletion QVs less run char", 8);
+        MAKE_SCHEME(dRunScheme,delRun, "Histogram of Deletion Runs QVs", 16);
+#ifdef DEBUG
+        printf("\nRun char is '%c'\n",delChar);
+#endif
+      }
+
+#ifdef DEBUG
+    { int    k;
+      uint64 count;
+
+      count = 0;
+      for (k = 0; k < 256; k++)
+        count += delHist[k];
+      printf("\nDelTag will require %lld bytes\n",count/4);
+    }
+#endif
+
+    MAKE_SCHEME(insScheme,insHist, "Hisotgram of Insertion QVs", 8);
+    MAKE_SCHEME(mrgScheme,mrgHist, "Hisotgram of Merge QVs", 8);
+
+    if (subChar < 0)
+      { MAKE_SCHEME(subScheme,subHist, "Hisotgram of Subsitution QVs", 8);
+        sRunScheme = NULL;
+      }
+    else
+      { subHist[subChar] = 0;
+        MAKE_SCHEME(subScheme,subHist, "Hisotgram of Subsitution QVs less run char", 8);
+        MAKE_SCHEME(sRunScheme,subRun, "Histogram of Substitution Run QVs", 16);
+#ifdef DEBUG
+        printf("\nRun char is '%c'\n",subChar);
+#endif
+      }
+  }
+
+  //  Setup endian handling
+
+  Set_Endian(0);
+
+  coding.delScheme  = delScheme;
+  coding.insScheme  = insScheme;
+  coding.mrgScheme  = mrgScheme;
+  coding.subScheme  = subScheme;
+  coding.dRunScheme = dRunScheme;
+  coding.sRunScheme = sRunScheme;
+  coding.delChar    = delChar;
+  coding.subChar    = subChar;
+  coding.prefix     = NULL;
+  coding.flip       = 0;
+
+  return (&coding);
+
+error:
+  if (delScheme != NULL)
+    free(delScheme);
+  if (dRunScheme != NULL)
+    free(dRunScheme);
+  if (insScheme != NULL)
+    free(insScheme);
+  if (mrgScheme != NULL)
+    free(mrgScheme);
+  if (subScheme != NULL)
+    free(subScheme);
+  if (sRunScheme != NULL)
+    free(sRunScheme);
+  EXIT(NULL);
+}
+
+  // Write the encoding scheme 'coding' to 'output'
+
+void Write_QVcoding(FILE *output, QVcoding *coding)
+{
+  //   Write out the endian key, run chars, and prefix (if not NULL)
+
+  { uint16 half;
+    int    len;
+
+    half = 0x33cc;
+    fwrite(&half,sizeof(uint16),1,output);
+
+    if (coding->delChar < 0)
+      half = 256;
+    else
+      half = (uint16) (coding->delChar);
+    fwrite(&half,sizeof(uint16),1,output);
+
+    if (coding->subChar < 0)
+      half = 256;
+    else
+      half = (uint16) (coding->subChar);
+    fwrite(&half,sizeof(uint16),1,output);
+
+    len = strlen(coding->prefix);
+    fwrite(&len,sizeof(int),1,output);
+    fwrite(coding->prefix,1,len,output);
+  }
+
+  //   Write out the scheme tables
+
+  Write_Scheme(coding->delScheme,output);
+  if (coding->delChar >= 0)
+    Write_Scheme(coding->dRunScheme,output);
+  Write_Scheme(coding->insScheme,output);
+  Write_Scheme(coding->mrgScheme,output);
+  Write_Scheme(coding->subScheme,output);
+  if (coding->subChar >= 0)
+    Write_Scheme(coding->sRunScheme,output);
+}
+
+  // Read the encoding scheme 'coding' to 'output'
+
+QVcoding *Read_QVcoding(FILE *input)
+{ static QVcoding coding;
+
+  // Read endian key, run chars, and short name common to all headers
+
+  { uint16 half;
+    int    len;
+
+    if (fread(&half,sizeof(uint16),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read flip byte (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    coding.flip = (half != 0x33cc);
+
+    if (fread(&half,sizeof(uint16),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read deletion char (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    if (coding.flip)
+      Flip_Short(&half);
+    coding.delChar = half;
+    if (coding.delChar >= 256)
+      coding.delChar = -1;
+
+    if (fread(&half,sizeof(uint16),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read substitution char (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    if (coding.flip)
+      Flip_Short(&half);
+    coding.subChar = half;
+    if (coding.subChar >= 256)
+      coding.subChar = -1;
+
+    //  Read the short name common to all headers
+
+    if (fread(&len,sizeof(int),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read header name length (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    if (coding.flip)
+      Flip_Long(&len);
+    coding.prefix = (char *) Malloc(len+1,"Allocating header prefix");
+    if (coding.prefix == NULL)
+      EXIT(NULL);
+    if (len > 0)
+      { if (fread(coding.prefix,len,1,input) != 1)
+          { EPRINTF(EPLACE,"Could not read header name (Read_QVcoding)\n");
+            EXIT(NULL);
+          }
+      }
+    coding.prefix[len] = '\0';
+  }
+
+  //  Setup endian handling
+
+  Set_Endian(coding.flip);
+
+  //  Read the Huffman schemes used to compress the data
+
+  coding.delScheme  = NULL;
+  coding.dRunScheme = NULL;
+  coding.insScheme  = NULL;
+  coding.mrgScheme  = NULL;
+  coding.subScheme  = NULL;
+  coding.sRunScheme = NULL;
+
+  coding.delScheme = Read_Scheme(input);
+  if (coding.delScheme == NULL)
+    goto error;
+  if (coding.delChar >= 0)
+    { coding.dRunScheme = Read_Scheme(input);
+      if (coding.dRunScheme == NULL)
+        goto error;
+    }
+  coding.insScheme = Read_Scheme(input);
+  if (coding.insScheme == NULL)
+    goto error;
+  coding.mrgScheme = Read_Scheme(input);
+  if (coding.mrgScheme == NULL)
+    goto error;
+  coding.subScheme = Read_Scheme(input);
+  if (coding.subScheme == NULL)
+    goto error;
+  if (coding.subChar >= 0)
+    { coding.sRunScheme = Read_Scheme(input);
+      if (coding.sRunScheme == NULL)
+        goto error;
+    }
+
+  return (&coding);
+
+error:
+  if (coding.delScheme != NULL)
+    free(coding.delScheme);
+  if (coding.dRunScheme != NULL)
+    free(coding.dRunScheme);
+  if (coding.insScheme != NULL)
+    free(coding.insScheme);
+  if (coding.mrgScheme != NULL)
+    free(coding.mrgScheme);
+  if (coding.subScheme != NULL)
+    free(coding.subScheme);
+  if (coding.sRunScheme != NULL)
+    free(coding.sRunScheme);
+  EXIT(NULL);
+}
+
+  //  Free all the auxilliary storage associated with the encoding argument
+
+void Free_QVcoding(QVcoding *coding)
+{ if (coding->subChar >= 0)
+    free(coding->sRunScheme);
+  free(coding->subScheme);
+  free(coding->mrgScheme);
+  free(coding->insScheme);
+  if (coding->delChar >= 0)
+    free(coding->dRunScheme);
+  free(coding->delScheme);
+  free(coding->prefix);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Encode/Decode (w.r.t. coding) next entry from input and write to output
+ *
+ ********************************************************************************************/
+
+int Compress_Next_QVentry(FILE *input, FILE *output, QVcoding *coding, int lossy)
+{ int rlen, clen;
+
+  //  Get all 5 streams, compress each with its scheme, and output
+
+  rlen = Read_Lines(input,5);
+  if (rlen < 0)
+    { if (rlen == -1)
+        EPRINTF(EPLACE,"Line %d: incomplete last entry of .quiv file\n",Nline);
+      EXIT (-1);
+    }
+
+  if (coding->delChar < 0)
+    { Encode(coding->delScheme, output, (uint8 *) Read, rlen);
+      clen = rlen;
+    }
+  else
+    { Encode_Run(coding->delScheme, coding->dRunScheme, output,
+                 (uint8 *) Read, rlen, coding->delChar);
+      clen = Pack_Tag(Read+Rmax,Read,rlen,coding->delChar);
+    }
+  Number_Read(Read+Rmax);
+  Compress_Read(clen,Read+Rmax);
+  fwrite(Read+Rmax,1,COMPRESSED_LEN(clen),output);
+
+  if (lossy)
+    { uint8 *insert = (uint8 *) (Read+2*Rmax);
+      uint8 *merge  = (uint8 *) (Read+3*Rmax);
+      int    k;
+
+      for (k = 0; k < rlen; k++)
+        { insert[k] = (uint8) ((insert[k] >> 1) << 1);
+          merge[k]  = (uint8) (( merge[k] >> 2) << 2);
+        }
+    }
+
+  Encode(coding->insScheme, output, (uint8 *) (Read+2*Rmax), rlen);
+  Encode(coding->mrgScheme, output, (uint8 *) (Read+3*Rmax), rlen);
+  if (coding->subChar < 0)
+    Encode(coding->subScheme, output, (uint8 *) (Read+4*Rmax), rlen);
+  else
+    Encode_Run(coding->subScheme, coding->sRunScheme, output,
+               (uint8 *) (Read+4*Rmax), rlen, coding->subChar);
+
+  return (rlen);
+}
+
+int Uncompress_Next_QVentry(FILE *input, char **entry, QVcoding *coding, int rlen)
+{ int clen, tlen;
+
+  //  Decode each stream and write to output
+
+  if (coding->delChar < 0)
+    { if (Decode(coding->delScheme, input, entry[0], rlen))
+        EXIT(1);
+      clen = rlen;
+      tlen = COMPRESSED_LEN(clen);
+      if (tlen > 0)
+        { if (fread(entry[1],tlen,1,input) != 1)
+            { EPRINTF(EPLACE,"Could not read deletions entry (Uncompress_Next_QVentry\n");
+              EXIT(1);
+            }
+        }
+      Uncompress_Read(clen,entry[1]);
+      Lower_Read(entry[1]);
+    }
+  else
+    { if (Decode_Run(coding->delScheme, coding->dRunScheme, input,
+                     entry[0], rlen, coding->delChar))
+        EXIT(1);
+      clen = Packed_Length(entry[0],rlen,coding->delChar);
+      tlen = COMPRESSED_LEN(clen);
+      if (tlen > 0)
+        { if (fread(entry[1],tlen,1,input) != 1)
+            { EPRINTF(EPLACE,"Could not read deletions entry (Uncompress_Next_QVentry\n");
+              EXIT(1);
+            }
+        }
+      Uncompress_Read(clen,entry[1]);
+      Lower_Read(entry[1]);
+      Unpack_Tag(entry[1],clen,entry[0],rlen,coding->delChar);
+    }
+
+  if (Decode(coding->insScheme, input, entry[2], rlen))
+    EXIT(1);
+
+  if (Decode(coding->mrgScheme, input, entry[3], rlen))
+    EXIT(1);
+
+  if (coding->subChar < 0)
+    { if (Decode(coding->subScheme, input, entry[4], rlen))
+        EXIT(1);
+    }
+  else
+    { if (Decode_Run(coding->subScheme, coding->sRunScheme, input,
+                     entry[4], rlen, coding->subChar))
+        EXIT(1);
+    }
+
+  return (0);
+}
diff --git a/DAMASKER/QV.h b/DAMASKER/QV.h
new file mode 100644
index 0000000..532b2f4
--- /dev/null
+++ b/DAMASKER/QV.h
@@ -0,0 +1,96 @@
+/*******************************************************************************************
+ *
+ *  Compressor/decompressor for .quiv files: customized Huffman codes for each stream based on
+ *    the histogram of values occuring in a given file.  The two low complexity streams
+ *    (deletionQV and substitutionQV) use a Huffman coding of the run length of the prevelant
+ *    character.
+ *
+ *  Author:   Gene Myers
+ *  Date:     Jan 18, 2014
+ *  Modified: July 25, 2014
+ *
+ ********************************************************************************************/
+
+#ifndef _QV_COMPRESSOR
+
+#include <stdio.h>
+
+#define _QV_COMPRESSOR
+
+  //  The defined constant INTERACTIVE (set in DB.h) determines whether an interactive or
+  //    batch version of the routines in this library are compiled.  In batch mode, routines
+  //    print an error message and exit.  In interactive mode, the routines place the error
+  //    message in EPLACE (also defined in DB.h) and return an error value, typically NULL
+  //    if the routine returns a pointer, and an unusual integer value if the routine returns
+  //    an integer.
+  //  Below when an error return is described, one should understand that this value is returned
+  //    only if the routine was compiled in INTERACTIVE mode.
+
+  //  A PacBio compression scheme
+
+typedef struct
+  { void    *delScheme;   //  Huffman scheme for deletion QVs
+    void    *insScheme;   //  Huffman scheme for insertion QVs
+    void    *mrgScheme;   //  Huffman scheme for merge QVs
+    void    *subScheme;   //  Huffman scheme for substitution QVs
+    void    *dRunScheme;  //  Huffman scheme for deletion run lengths (if delChar > 0)
+    void    *sRunScheme;  //  Huffman scheme for substitution run lengths (if subChar > 0)
+    int      delChar;     //  If > 0, run-encoded deletion value
+    int      subChar;     //  If > 0, run-encoded substitution value
+    int      flip;        //  Need to flip multi-byte integers
+    char    *prefix;      //  Header line prefix
+  } QVcoding;
+
+  // Read the next nlines of input, and QVentry returns a pointer to the first line if needed.
+  //   If end-of-input is encountered before any further input, -1 is returned.  If there is
+  //   an error than -2 is returned.  Otherwise the length of the line(s) read is returned.
+
+int       Read_Lines(FILE *input, int nlines);
+char     *QVentry();
+
+  // Get and set the line counter for error reporting
+
+void      Set_QV_Line(int line);
+int       Get_QV_Line();
+
+  // Read up to the next num entries or until eof from the .quiva file on input and record
+  //   frequency statistics.  Copy these entries to the temporary file temp if != NULL.
+  //   If there is an error then -1 is returned, otherwise the number of entries read.
+
+int       QVcoding_Scan(FILE *input, int num, FILE *temp);
+
+  // Given QVcoding_Scan has been called at least once, create an encoding scheme based on
+  //   the accumulated statistics and return a pointer to it.  The returned encoding object
+  //   is *statically allocated within the routine.  If lossy is set then use a lossy scaling
+  //   for the insertion and merge streams.  If there is an error, then NULL is returned.
+
+QVcoding *Create_QVcoding(int lossy);
+
+  //  Read/write a coding scheme to input/output.  The encoding object returned by the reader
+  //    is *statically* allocated within the routine.  If an error occurs while reading then
+  //    NULL is returned.
+
+QVcoding *Read_QVcoding(FILE *input);
+void      Write_QVcoding(FILE *output, QVcoding *coding);
+
+  //  Free all the auxiliary storage associated with coding (but not the object itself!)
+
+void      Free_QVcoding(QVcoding *coding);
+
+  //  Assuming the file pointer is positioned just beyond an entry header line, read the
+  //    next set of 5 QV lines, compress them according to 'coding', and output.  If lossy
+  //    is set then the scheme is a lossy one.  A negative value is returned if an error
+  //    occurred, and the sequence length otherwise.
+
+int      Compress_Next_QVentry(FILE *input, FILE *output, QVcoding *coding, int lossy);
+
+  //  Assuming the input is position just beyond the compressed encoding of an entry header,
+  //    read the set of compressed encodings for the ensuing 5 QV vectors, decompress them,
+  //    and place their decompressed values into entry which is a 5 element array of character
+  //    pointers.  The parameter rlen computed from the preceeding header line, critically
+  //    provides the length of each of the 5 vectors.  A non-zero value is return only if an
+  //    error occured.
+
+int      Uncompress_Next_QVentry(FILE *input, char **entry, QVcoding *coding, int rlen);
+
+#endif // _QV_COMPRESSOR
diff --git a/DAMASKER/README b/DAMASKER/README
new file mode 100644
index 0000000..be4fdb7
--- /dev/null
+++ b/DAMASKER/README
@@ -0,0 +1,172 @@
+
+
+
+*** PLEASE GO TO THE DAZZLER BLOG (https://dazzlerblog.wordpress.com) FOR TYPESET ***
+         DOCUMENTATION, EXAMPLES OF USE, AND DESIGN PHILOSOPHY.
+
+
+
+                The Dazzler Repeat Masking Suite: DA MASKER
+
+                            Author:  Gene Myers
+                            First:   April 10, 2016
+
+  Scrubbing is complicated by the presence of repeats.  We currently handle this by
+soft-masking all tandem and interspersed repeats in the input data when computing
+overlaps.  This implies that reads that are completely repetitive sequence are not
+scrubbed.  This is typically a small part of the data set and a portion thereof that
+is currently not correctly assembled by any assembly system at the current time, and
+therefore the masking is of minor consequence.  Eventually, these completely masked
+reads will be analyzed in downstream processes that will attempt to resolve ultra-long
+(15Kbp or more) repeats.
+
+  The masking suite therefore consists of several programs that in combination can be
+used to produce repeat masks for a data set as follows:
+
+1. REPmask [-v] [-m<track(rep)>] -c<int> <subject:db> <overlaps:las> ...
+
+This command takes as input a database <source> and a sequence of sorted local
+alignments blocks, <overlaps>, produced by a daligner run for said database.  Note
+carefully that <source> must always refer to the entire DB, only <overlaps> can
+involve a block number.
+
+REPmask examines each pile for an A-read and determines the intervals that are covered
+-c or more times by LAs.  This set of intervals is output as a repeat mask for A in an
+interval track with default name .rep, that can be overridden with the -m option.  If
+the -v option is set, then the number of intervals and total base pairs in intervals
+is printed.
+
+2. tander [-v] [-k<int(12)>] [-w<int(4)>] [-h<int(35)>] [-T<int(4)>]
+               [-e<double(.70)] [-l<int(1000)] [-s<int(100)]
+               <path:db|dam> ...
+
+This program is a variation of daligner tailored to the task of comparing each read
+against itself (and only those comparisons).   As such each block or DB serves as both
+the source and target, and the -b, -A, -I, -t, -M, -H, and -m options are irrelevant.
+The remaining options are exactly as for daligner (see here).
+
+For each subject block, say X, this program produces just 4NTHREAD files X.T#.las
+where -T is the number of threads (by default 4) and where all the alignments do not
+involve complementing the B-read (which is also the A-read).  These should then be
+sorted and merged with LAsort and LAmerge as for example performed by the script
+generator HPC.TANmask described below.
+
+3. TANmask [-v] [-l<int(500)>] [-m<track(tan)>] <subject:db> <overlaps:las> ...
+
+This command takes as input a database <source> and a sequence of sorted local
+alignments blocks, <overlaps>, produced by a datander run for said database.  Note
+carefully that <source> must always refer to the entire DB, only <overlaps> can
+involve a block number.
+
+TANmask examines each pile for an A-read and finds those self-LAs whose two alignment
+intervals overlap and for which the union of these two intervals is -l bases or
+longer.  Each of these regions signals a tandem element in A of length -l or greater,
+and a disjoint list of these is built.  This set of intervals is output as a tandem
+mask for A in an interval track with default name .tan, that can be overridden with
+the -m option.  If the -v option is set, then the number of intervals and total base
+pairs in intervals is printed.
+
+4. HPC.REPmask [-vbd]
+               [-t<int>] [-w<int(6)>] [-l<int(1000)>] [-s<int(100)>]
+               [-M<int>] [-B<int(4)>] [-D<int( 250)>] [-T<int(4)>] [-f<name>] 
+               [-k<int(14)>] [-h<int(35)>] [-e<double(.70)>] [-m<track>]+
+               -g<int> -c<int> <reads:db|dam> [<first:int>[-<last:int>]]
+
+HPC.REPmask writes a UNIX shell script to the standard output that consists of a
+sequence of commands that effectively runs daligner, LAsort, and LAmerge to compare
+all consecutive groups of -g blocks against each other and then applies REPmask to the
+result in order to generate a repeat mask for the database <path>.   For example if -g
+is 3, then it will compare blocks 1-3 against each other, blocks 4-6 against each
+other, and so on with daligner, and then sort and merge so that all the alignments
+with an A-read in block i are in the file <path>.i.las (e.g. <path>.2.las will contain
+all alignments where the A-read is in block 2 and the B-read is in blocks 1, 2, or 3).
+Thereafter "REPmask -c -mrep<-g> <path> <path>.i.las" is run for every block i,
+resulting in a .rep<-g> block for each mask that can then be combined with Catrack
+into a single track for the entire DB.
+
+The data base must have been previously split by DBsplit and all options, except -B,
+-D, -d, and -f are passed through to the calls to daligner. The defaults for these
+parameters are as for daligner. The -v flag, for verbose-mode, is also passed to all
+calls to LAsort and LAmerge.  The -d and -f parameters are explained later.  The -B
+and -D options control the form of the script generated by HPC.REPmask as follows.
+The -B option determines the number of block comparisons per daligner job and the
+-D option determines the fan-in for the hierarchical LAmerge process exactly as
+for HPC.daligner.  For a database divided into N sub-blocks, the calls to daligner
+will produce a total of 2g^2(N/g)T .las files when daligner is run with T threads
+as specified by the -T option.  These will then be sorted and merged into Ng sorted
+.las files, g^2 for each of the N/g block groups. These are then merged in
+ceil(log_D g) phases where the number of files decreases geometrically in -D until
+there is 1 file per block. So at the end one has N sorted .las files, one per block.
+
+If the integers <first> and <last> are missing then the script produced is for every
+block in the database. If <first> is present then HPC.REPmask produces an incremental
+script that performs as much of the task as possible for blocks <first> through <last>
+(<last> = <first> if not present) where it is assumed that the script has been called
+previously up to block <first>-1.  If <last> is not evenly divisible by -g then the
+script performs the block comparisons and merges for the last incomplete group but
+does not yet invoke REPmask as all the necessary comparisons have not been made.
+Symmetrically, if the initial part of the range completes a previously incomplete
+block group, then the script generates calls to complete the comparisons for the
+initial group and produces the repeat-masks for that group.
+
+The command script output by HPC.REPmask and other HPC.<x> programs consists of
+command blocks each of which begins with a comment line (begins with #) followed by a
+potentially long list of lines each containing a shell command.  Command blocks whose
+comment mentions "jobs" and gives the number of said in parenthesis, we call parallel
+blocks because each command line in the block can be sent to a node in a cluster for
+independent execution, i.e. none of the commands in a block depend on another in the
+block.  The remaining command blocks we call house-keeping blocks because they can be
+executed by the shell on the launch/server node and the commands are either checking
+the integrity of .las files with LAcheck, or removing intermediate files with rm. Each
+block should be performed in the order given and should complete before the next block
+is performed.
+
+If the -f option is set, then each command block is written to a file with a name of
+the form <name>.#.<description> where <name> is specified by the user in the -f
+option argument, # gives the order in which the command block in the given file is
+to be performed in relation to other command block files, and <description> is a
+(very) short symbolic reminder of what the block is doing.  For example,
+"HPC.REPmask -g3 -c10 -fJOBS DB" would produce the files:
+
+  JOBS.01.OVL
+  JOBS.02.SORT
+  JOBS.03.CHECK.OPT
+  JOBS.04.RM
+  JOBS.MERGE
+  JOBS.06.CHECK.OPT
+  JOBS.07.RM
+  JOBS.08.MASK
+  JOBS.09.RM
+
+The number of command blocks varies as it depends on the number of merging rounds
+required in the external sort of the .las files.  The files with the suffix .OPT
+are optional and need not be executed albeit we highly recommend that one run
+all the CHECK blocks.
+
+The -d option requests scripts that organize files into a collection of
+sub-directories so as not to overwhelm the underlying OS for large genomes.  For
+a DB divided into N blocks and the daligner calls in the script will produce 2gNT
+.las-files where T is the number of threads specified by the -T option passed to
+daligner (default is 4).  With the -d option set, N sub-directories (with respect
+to the directory HPC.daligner is called in) of the form "temp<i>" for i from 1 to
+N are created in an initial command block, and then all intermediate files are
+placed in those sub-directories, with a maximum of g(2T+1) files appearing in any
+sub-directory at any given point in the process.
+
+5. HPC.TANmask [-vd] [-k<int(12)>] [-w<int(4)>] [-h<int(35)>] [-T<int(4)>]
+                     [-e<double(.70)] [-l<int(1000)] [-s<int(100)] [-f<name>]
+                     <reads:db|dam> [<first:int>[-<last:int>]]
+
+HPC.TANmask writes a UNIX shell script to the standard output that runs datander on
+all relevant blocks of the supplied DB, then sorts and merges the resulting alignments
+into a single .las for each block, and finally calls TANmask on each LA block to
+produce a .tan mask for each block that can be merge into a single track for the
+entire DB with Catrack.
+
+All option arguments are passed through to datander except for the -d and -f options
+which serve the same role as for HPC.REPmask above.  The -v option is passed to all
+programs in the script, and the -l option is also passed to TANmask.  If the integers
+<first> and <last> are missing then the script produced is for every block in the
+database <reads>. If <first> is present then HPC.TANmask produces a script that
+produces .tan tracks for blocks <first> through <last> (<last> = <first> if
+not present).
diff --git a/DAMASKER/REPmask.c b/DAMASKER/REPmask.c
new file mode 100644
index 0000000..a54c436
--- /dev/null
+++ b/DAMASKER/REPmask.c
@@ -0,0 +1,636 @@
+/*******************************************************************************************
+ *
+ *  MASKrep takes a .las file and builds a .rep mask of every interval of a read that
+ *    is covered by -c or more LA's.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  March 27 2016
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "DB.h"
+#include "align.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-v] [-m<track(rep)] -c<int> <source:db> <overlaps:las> ...";
+
+#undef  DEBUG_BLOCKS
+#undef  DEBUG_GAP_MERGE
+
+
+//  Partition Constants
+
+#define TINY_HILL   3    //  Minimum peak to trough coverage between two repeat intervals
+#define MIN_HILL   10    //  Minimum peak to trough coverage between two overlapping rep.int.s 
+#define MAX_OVL    20    //  Maximum overlap between two repeat intervals
+#define PEEL_BACK 300    //  First and last PEEL_BACK bases don't count for coverage
+
+
+//  Global Data Structures
+
+static int VERBOSE;
+static int MIN_COVER;
+
+static HITS_DB _DB, *DB = &_DB;   //  Data base
+
+static int DB_PART;               //  Input is an Overlap block
+static int DB_FIRST;              //     for reads DB_FIRST to DB_LAST-1
+static int DB_LAST;
+
+static int TRACE_SPACING;         //  Trace spacing (from .las file)
+static int TBYTES;                //  Bytes per trace segment (from .las file)
+
+static FILE   *MSK_AFILE;         //  .rep.anno
+static FILE   *MSK_DFILE;         //  .rep.data
+static int64   MSK_INDEX;         //  Current index into .rep.data file as it is being written
+
+//  Statistics
+
+static int64 nreads, totlen;
+static int64 nmasks, masked;
+
+
+/*******************************************************************************************
+ *
+ *  HIGH_COVERAGE INTERVAL PARTITIONER:
+ *    Find intervals of high coverage separated by low or no coverage interavls.
+ *    Alignments are peeled back by PEEL_BACK base pairs so that pile ups whose boundaries
+ *    overlap by this much are still found.  Small dips below the coverage threshold are
+ *    merged.
+ *
+ *******************************************************************************************/
+
+typedef struct
+  { int add;
+    int pos;
+  } Event;
+
+static int EVENT_SORT(const void *l, const void *r)
+{ Event *x = ((Event *) l);
+  Event *y = ((Event *) r);
+
+  if (x->pos != y->pos)
+    return (x->pos - y->pos);
+  return (x->add - y->add);
+}
+
+static int *blocks(Overlap *ovls, int novl, int *ptrim)
+{ static int    nmax = 0;
+  static Event *ev = NULL;
+  static int   *trim = NULL;
+  static int   *flim;
+
+  int ecnt, ntrim;
+
+  if (novl > nmax)
+    { nmax = novl*1.2 + 1000; 
+      ev    = (Event *) Realloc(ev,sizeof(Event)*2*nmax,"Reallocating event vector");
+      trim  = (int *) Realloc(trim,sizeof(int)*4*nmax,"Reallocating trim vector");
+      flim  = trim + 2*nmax;
+    }
+ 
+  //  Set up and sort event queue
+
+  { int i, ab, ae;
+
+    ecnt = 0;
+    for (i = 0; i < novl; i++)
+      { ab = ovls[i].path.abpos+PEEL_BACK;
+        ae = ovls[i].path.aepos-PEEL_BACK;
+
+        if (ae >= ab) 
+          { ev[ecnt].add = 1;
+            ev[ecnt].pos = ab;
+            ecnt += 1;
+            ev[ecnt].add = 0;
+            ev[ecnt].pos = ae;
+            ecnt += 1;
+          }
+      }
+
+    qsort(ev,ecnt,sizeof(Event),EVENT_SORT);
+  }
+
+  //  Compute in - out intervals (over the contracted alignment intervals) with respect to
+  //    coverage depth threshold MIN_COVER and also the max (in interavls) or min (out intervals)
+  //    coverage.
+
+  { int i;
+    int cov, min, max;
+
+    ntrim = 0;
+    cov   = 0;
+    min   = 0;
+    max   = 0;
+    for (i = 0; i < ecnt; i++)
+      if (ev[i].add)
+        { cov += 1;
+          if (cov > max)
+            max += 1;
+          if (cov == MIN_COVER) 
+            { trim[ntrim]   = ev[i].pos-PEEL_BACK;
+              flim[ntrim++] = min;
+              max = MIN_COVER;
+#ifdef DEBUG_BLOCKS
+              printf("    In %4d\n",ev[i].pos-PEEL_BACK);
+#endif
+            }
+#ifdef DEBUG_BLOCKS
+          printf("  Add %4d (%3d)\n",ev[i].pos,cov);
+#endif
+        }
+      else
+        { if (cov == MIN_COVER)
+            { trim[ntrim]   = ev[i].pos+PEEL_BACK;
+              flim[ntrim++] = max;
+              min = MIN_COVER;
+#ifdef DEBUG_BLOCKS
+              printf("    Out %4d\n",ev[i].pos+PEEL_BACK);
+#endif
+            }
+          cov -= 1;
+          if (cov < min)
+            min = cov;
+#ifdef DEBUG_BLOCKS
+          printf("  Del %4d (%3d)\n",ev[i].pos,cov);
+#endif
+        }
+  }
+
+  //  Merge intervals that overlap by more than 20bp and have a small "hill" to either
+  //    the left or right.
+
+  { int i, j;
+
+    j = 2;
+    for (i = 2; i < ntrim; i += 2)
+      { int deep, over;
+
+        deep = flim[i-1] - flim[i];
+        if (deep > flim[i+1] - flim[i])
+          deep = flim[i+1] - flim[i];
+        over = trim[i-1] - trim[i];
+#ifdef DEBUG_BLOCKS
+        printf("  Trim [%5d,%5d] [%3d,%3d]",trim[i],trim[i+1],flim[i],flim[i+1]);
+        printf("  DEEP %4d OVER %4d",deep,over);
+#endif
+        if (deep <= TINY_HILL || (deep < MIN_HILL && over > MAX_OVL))
+          { trim[j-1] = trim[i+1];
+            if (flim[i+1] > flim[j-1])
+              flim[j-1] = flim[i+1];
+#ifdef DEBUG_BLOCKS
+            printf(" FOLD");
+#endif
+          }
+        else
+          { trim[j]   = trim[i];
+            trim[j+1] = trim[i+1];
+            flim[j]   = flim[i];
+            flim[j+1] = flim[i+1];
+            j += 2;
+          }
+#ifdef DEBUG_BLOCKS
+        printf("\n");
+#endif
+      }
+    if (ntrim > 0)
+      ntrim = j;
+  }
+
+  *ptrim = ntrim;
+  return (trim);
+}
+
+
+/*******************************************************************************************
+ *
+ *  FORMULATE POSSIBLE REPEAT INTERVALS
+ *
+ *******************************************************************************************/
+
+static void PARTITION(int aread, Overlap *ovls, int novl)
+{ int   ntrim, *trim;
+
+#if defined(DEBUG_BLOCKS) || defined(DEBUG_GAP_MERGE)
+  printf("\nAREAD %d (%d)\n",aread,DB->reads[aread].rlen);
+#endif
+
+  if (novl <= 0)
+    { fwrite(&MSK_INDEX,sizeof(int64),1,MSK_AFILE);
+      return;
+    }
+
+  //  Merge overlap pairs that appear to have a low-quality induced gap between them
+
+  { int   i, j, k;
+    int   bread, agap, bgap;
+    Path *ipath, *jpath;
+
+#ifdef DEBUG_GAP_MERGE
+    printf("\nGAPS\n");
+    if (novl > 0)
+      { ipath = &(ovls[0].path);
+        bread = ovls[0].bread;
+        printf("    %5d %5d  [%5d,%5d] [%5d,%5d]\n",
+               aread,bread,ipath->abpos,ipath->aepos,ipath->bbpos,ipath->bepos);
+      }
+#endif
+
+    k = 0;
+    for (i = 1; i < novl; i++)
+      { ipath = &(ovls[i].path);
+        bread = ovls[i].bread;
+#ifdef DEBUG_GAP_MERGE
+        printf("    %5d %5d  [%5d,%5d] [%5d,%5d]\n",
+               aread,bread,ipath->abpos,ipath->aepos,ipath->bbpos,ipath->bepos);
+#endif
+        for (j = k; j >= 0; j--)
+          if (bread == ovls[j].bread && COMP(ovls[i].flags) == COMP(ovls[j].flags))
+            { jpath = &(ovls[j].path);
+              if (jpath->aepos < ipath->abpos+PEEL_BACK)
+                { agap = ipath->abpos - jpath->aepos;
+                  bgap = ipath->bbpos - jpath->bepos;
+                  if (abs(agap-bgap) < .2*(agap+bgap) + 200)
+                    { if (ipath->aepos > jpath->aepos)
+                        jpath->aepos = ipath->aepos;
+                      if (ipath->bepos > jpath->bepos)
+                        jpath->bepos = ipath->bepos;
+                      jpath->tlen += agap;
+#ifdef DEBUG_GAP_MERGE
+                      printf("  Span off = %d ->%4d %4d",k-j,agap,bgap);
+                      printf("    %5d %5d  [%5d,%5d] [%5d,%5d]\n",
+                             aread,bread,jpath->abpos,jpath->aepos,jpath->bbpos,jpath->bepos);
+#endif
+                      break;
+                    }
+                }
+            }
+          else
+            { j = -1;
+              break;
+            }
+        if (j < 0)
+          { k += 1;
+            ovls[k] = ovls[i];
+          }
+      }
+    novl = k+1;
+  }
+
+  //  Find the high-coverage intervals over the pair-merged alignment intervals
+
+  trim = blocks(ovls,novl,&ntrim);
+
+  if (VERBOSE)
+    { int i;
+
+      for (i = 0; i < ntrim; i += 2)
+        masked += trim[i+1]-trim[i];
+      nmasks += ntrim/2;
+      nreads += 1;
+      totlen += DB->reads[aread].rlen;
+    }
+
+  //  Write out the trim intervals for the read
+
+  { int i;
+
+    for (i = 0; i < ntrim; i += 2)
+      { fwrite(trim+i,sizeof(int),1,MSK_DFILE);
+        fwrite(trim+(i+1),sizeof(int),1,MSK_DFILE);
+      }
+    MSK_INDEX += ntrim*sizeof(int);
+    fwrite(&MSK_INDEX,sizeof(int64),1,MSK_AFILE);
+  }
+}
+
+
+  //  Read in each successive pile and call ACTION on it.  Read in the traces only if
+  //   "trace" is nonzero
+
+static int make_a_pass(FILE *input, void (*ACTION)(int, Overlap *, int), int trace)
+{ static Overlap *ovls = NULL;
+  static int      omax = 500;
+  static uint16  *paths = NULL;
+  static int      pmax = 100000;
+
+  int64 i, j, novl;
+  int   n, a;
+  int   pcur;
+  int   max;
+
+  if (ovls == NULL)
+    { ovls = (Overlap *) Malloc(sizeof(Overlap)*omax,"Allocating overlap buffer");
+      if (ovls == NULL)
+        exit (1);
+    }
+  if (trace && paths == NULL)
+    { paths = (uint16 *) Malloc(sizeof(uint16)*pmax,"Allocating path buffer");
+      if (paths == NULL)
+        exit (1);
+    }
+
+  rewind(input);
+  fread(&novl,sizeof(int64),1,input);
+  fread(&TRACE_SPACING,sizeof(int),1,input);
+  if (TRACE_SPACING <= TRACE_XOVR)
+    TBYTES = sizeof(uint8);
+  else
+    TBYTES = sizeof(uint16);
+
+  Read_Overlap(input,ovls);
+  if (trace)
+    { if (ovls[0].path.tlen > pmax)
+        { pmax  = 1.2*(ovls[0].path.tlen)+10000;
+          paths = (uint16 *) Realloc(paths,sizeof(uint16)*pmax,"Expanding path buffer");
+          if (paths == NULL) exit (1);
+        }
+      fread(paths,TBYTES,ovls[0].path.tlen,input);
+      if (TBYTES == 1)
+        { ovls[0].path.trace = paths;
+          Decompress_TraceTo16(ovls);
+        }
+    }
+  else
+    fseek(input,TBYTES*ovls[0].path.tlen,SEEK_CUR);
+
+  if (ovls[0].aread < DB_FIRST)
+    { fprintf(stderr,"%s: .las file overlaps don't correspond to reads in block %d of DB\n",
+                     Prog_Name,DB_PART);
+      exit (1);
+    }
+
+  pcur = 0;
+  n = max = 0;
+  for (j = DB_FIRST; j < DB_LAST; j++)
+    { ovls[0] = ovls[n];
+      a = ovls[0].aread;
+      if (a != j)
+        n = 0;
+      else
+        { if (trace)
+            memcpy(paths,paths+pcur,sizeof(uint16)*ovls[0].path.tlen);
+          n = 1;
+          pcur = ovls[0].path.tlen;
+          while (1)
+            { if (Read_Overlap(input,ovls+n) != 0)
+                { ovls[n].aread = INT32_MAX;
+                  break;
+                }
+              if (trace)
+                { if (pcur + ovls[n].path.tlen > pmax)
+                    { pmax = 1.2*(pcur+ovls[n].path.tlen)+10000;
+                      paths = (uint16 *) Realloc(paths,sizeof(uint16)*pmax,"Expanding path buffer");
+                      if (paths == NULL) exit (1);
+                    }
+                  fread(paths+pcur,TBYTES,ovls[n].path.tlen,input);
+                  if (TBYTES == 1)
+                    { ovls[n].path.trace = paths+pcur;
+                      Decompress_TraceTo16(ovls+n);
+                    }
+                }
+              else
+                fseek(input,TBYTES*ovls[n].path.tlen,SEEK_CUR);
+              if (ovls[n].aread != a)
+                break;
+              pcur += ovls[n].path.tlen;
+              n    += 1;
+              if (n >= omax)
+                { omax = 1.2*n + 100;
+                  ovls = (Overlap *) Realloc(ovls,sizeof(Overlap)*omax,"Expanding overlap buffer");
+                  if (ovls == NULL) exit (1);
+                }
+            }
+
+          if (n >= max)
+            max = n;
+          pcur = 0;
+          for (i = 0; i < n; i++)
+            { ovls[i].path.trace = paths+pcur;
+              pcur += ovls[i].path.tlen;
+            }
+        }
+      ACTION(j,ovls,n);
+    }
+
+  return (max);
+}
+
+
+int main(int argc, char *argv[])
+{ FILE  *input;
+  char  *root, *dpwd;
+  char  *las, *lpwd;
+  int64  novl;
+  int    c;
+  char  *MASK_NAME;
+
+  //  Process arguments
+
+  { int  i, j, k;
+    int  flags[128];
+    char *eptr;
+
+    ARG_INIT("REPmask")
+
+    MIN_COVER = -1;
+    MASK_NAME = "rep";
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("v")
+            break;
+          case 'c':
+            ARG_POSITIVE(MIN_COVER,"Repeat coverage threshold")
+            break;
+          case 'm':
+            MASK_NAME = argv[i]+2;
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (argc < 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+    if (MIN_COVER <= 0)
+      { fprintf(stderr,"%s: Must supply -c parameter for repeat threshold\n",Prog_Name);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB
+
+  { int status;
+
+    status = Open_DB(argv[1],DB);
+    if (status < 0)
+      exit (1);
+    if (status == 1)
+      { fprintf(stderr,"%s: Cannot be called on a .dam index: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+    if (DB->part)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+    Trim_DB(DB);
+  }
+
+  //  Initialize statistics gathering
+
+  if (VERBOSE)
+    { int i;
+
+      nreads = 0;
+      totlen = 0;
+      masked = 0;
+      nmasks = 0;
+
+      printf("\nREPmask -c%d -m%s %s",MIN_COVER,MASK_NAME,argv[1]);
+      for (i = 2; i < argc; i++)
+        printf(" %s",argv[i]);
+      printf("\n");
+    }
+
+  //  Determine if overlap block is being processed and if so get first and last read
+  //    from .db file
+
+  dpwd = PathTo(argv[1]);
+  root = Root(argv[1],".db");
+
+  for (c = 2; c < argc; c++)
+    { las  = Root(argv[c],".las");
+
+      DB_PART  = 0;
+      DB_FIRST = 0;
+      DB_LAST  = DB->nreads;
+
+      { FILE *dbfile;
+        char  buffer[2*MAX_NAME+100];
+        char *p, *eptr;
+        int   i, part, nfiles, nblocks, cutoff, all, oindx;
+        int64 size;
+
+        p = rindex(las,'.');
+        if (p != NULL)
+          { part = strtol(p+1,&eptr,10);
+            if (*eptr == '\0' && eptr != p+1)
+              { dbfile = Fopen(Catenate(dpwd,"/",root,".db"),"r");
+                if (dbfile == NULL)
+			exit (1);
+                if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
+                  SYSTEM_ERROR
+                for (i = 0; i < nfiles; i++)
+                  if (fgets(buffer,2*MAX_NAME+100,dbfile) == NULL)
+                    SYSTEM_ERROR
+                if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1)
+			SYSTEM_ERROR
+				if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3)
+                  SYSTEM_ERROR
+                for (i = 1; i <= part; i++)
+                  if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2)
+                    SYSTEM_ERROR
+                if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2)
+                  SYSTEM_ERROR
+                fclose(dbfile);
+                DB_PART = part;
+                *p = '\0';
+              }
+          }
+      }
+
+      //   Set up preliminary trimming track
+
+      { int   len, size;
+        char  ans[strlen(MASK_NAME)+7];
+        char  dts[strlen(MASK_NAME)+7];
+
+        strcpy(ans,Catenate(".",MASK_NAME,".","anno"));
+        strcpy(dts,Catenate(".",MASK_NAME,".","data"));
+        if (DB_PART > 0)
+          { MSK_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,
+                                       Numbered_Suffix(".",DB_PART,ans)),"w");
+            MSK_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,
+                                       Numbered_Suffix(".",DB_PART,dts)),"w");
+          }
+        else
+          { MSK_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,ans),"w");
+            MSK_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,dts),"w");
+          }
+        if (MSK_AFILE == NULL || MSK_DFILE == NULL)
+          exit (1);
+
+        len  = DB_LAST - DB_FIRST;
+        size = 0;
+        fwrite(&len,sizeof(int),1,MSK_AFILE);
+        fwrite(&size,sizeof(int),1,MSK_AFILE);
+        MSK_INDEX = 0;
+        fwrite(&MSK_INDEX,sizeof(int64),1,MSK_AFILE);
+      }
+
+      //  Open overlap file
+
+      lpwd = PathTo(argv[c]);
+      if (DB_PART > 0)
+        input = Fopen(Catenate(lpwd,"/",las,Numbered_Suffix(".",DB_PART,".las")),"r");
+      else
+        input = Fopen(Catenate(lpwd,"/",las,".las"),"r");
+      if (input == NULL)
+        exit (1);
+
+      free(lpwd);
+      free(las);
+
+      //  Get trace point spacing information
+
+      fread(&novl,sizeof(int64),1,input);
+      fread(&TRACE_SPACING,sizeof(int),1,input);
+
+      //  Process each read pile
+
+      make_a_pass(input,PARTITION,1);
+
+      fclose(MSK_AFILE);
+      fclose(MSK_DFILE);
+    }
+
+  if (VERBOSE)
+    { printf("\nInput:    ");
+      Print_Number((int64) nreads,7,stdout);
+      printf(" (100.0%%) reads     ");
+      Print_Number(totlen,12,stdout);
+      printf(" (100.0%%) bases\n");
+
+      printf("Masks:    ");
+      Print_Number(nmasks,7,stdout);
+      printf(" (%5.1f%%) masks     ",(100.*nmasks)/nreads);
+      Print_Number(masked,12,stdout);
+      printf(" (%5.1f%%) bases\n",(100.*masked)/totlen);
+    }
+
+  free(dpwd);
+  free(root);
+
+  Close_DB(DB);
+  free(Prog_Name);
+
+  exit (0);
+}
diff --git a/DAMASKER/TANmask.c b/DAMASKER/TANmask.c
new file mode 100644
index 0000000..624a506
--- /dev/null
+++ b/DAMASKER/TANmask.c
@@ -0,0 +1,462 @@
+/*******************************************************************************************
+ *
+ *  MASKtan takes as input a .las file of self alignments (produced by datandem) and
+ *    builds a .tan mask track that encodes the union of all self-overlapping LA's (signature)
+ *    of a tandem repeat) of length greater than MIN_LEN (set by -l parameter).
+ *
+ *  Author:  Gene Myers
+ *  Date  :  March 27 2016
+ *
+ *******************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <math.h>
+
+#include "DB.h"
+#include "align.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-v] [-m<track(tan)>] [-l<int(500)>] <source:db> <overlaps:las> ...";
+
+//  Partition Constants
+
+#define SEP_FUZZ 20
+
+
+//  Global Data Structures
+
+static int VERBOSE;
+static int MIN_LEN;
+
+static HITS_DB _DB, *DB = &_DB;   //  Data base
+
+static int DB_PART;               //  Input is an Overlap block
+static int DB_FIRST;              //     for reads DB_FIRST to DB_LAST-1
+static int DB_LAST;
+
+static int TRACE_SPACING;         //  Trace spacing (from .las file)
+static int TBYTES;                //  Bytes per trace segment (from .las file)
+
+static FILE   *TN_AFILE;          //  .tan.anno
+static FILE   *TN_DFILE;          //  .tan.data
+static int64   TN_INDEX;          //  Current index into .tan.data file as it is being written
+
+//  Statistics
+
+static int64 nreads, totlen;
+static int64 nmasks, masked;
+
+
+static int ISORT(const void *l, const void *r)
+{ int x = *((int *) l);
+  int y = *((int *) r);
+  return (x-y);
+}
+
+static void TANDEM(int aread, Overlap *ovls, int novl)
+{ static int  nmax = -1;
+  static int *add = NULL;
+  static int *del;
+
+  int evnum;
+
+  (void) aread;
+
+  if (VERBOSE)
+    { nreads += 1;
+      totlen += DB->reads[aread].rlen;
+    }
+
+  if (novl == 0)
+    { fwrite(&TN_INDEX,sizeof(int64),1,TN_AFILE);
+      return;
+    }
+
+#ifdef DEBUG
+  printf("\nAREAD %d:\n",aread);
+#endif
+
+  if (novl > nmax)
+    { nmax = 1.2*novl + 500;
+      add  = (int *) Realloc(add,4*sizeof(int)*nmax,"Allocating sort vector");
+      if (add == NULL)
+        exit (1);
+      del = add + nmax;
+    }
+
+  //  For each overlapping LA record mask interval as an add and del event
+  //    that are then sorted
+
+  { int   i;
+    Path *ipath;
+ 
+    evnum = 0;
+    for (i = 0; i < novl; i++)
+      { ipath = &(ovls[i].path);
+        if (ipath->abpos - ipath->bepos <= SEP_FUZZ)
+          { if (ipath->aepos - ipath->bbpos > MIN_LEN)
+              { add[evnum] = ipath->bbpos;
+                del[evnum] = ipath->aepos;
+                evnum += 1;
+              }
+          }
+      }
+    qsort(add,evnum,sizeof(int),ISORT);
+    qsort(del,evnum,sizeof(int),ISORT);
+  }
+
+  //  Output the union of the mask intervals to the .tan track
+
+  { int i, j, x, a;
+
+    x = a = 0;
+    i = j = 0;
+    while (j < evnum)
+      if (i < evnum && add[i] <= del[j])
+        { if (x == 0)
+            { fwrite(add+i,sizeof(int),1,TN_DFILE);
+              TN_INDEX += sizeof(int);
+#ifdef DEBUG
+              printf("  + %5d: %3d\n",add[i],x);
+#endif
+              a = add[i];
+            }
+          x += 1;
+          i += 1;
+        }
+      else
+        { x -= 1;
+          if (x == 0)
+            { fwrite(del+j,sizeof(int),1,TN_DFILE);
+              TN_INDEX += sizeof(int);
+#ifdef DEBUG
+              printf("  - %5d: %3d\n",del[j],x);
+#endif
+              if (VERBOSE)
+                { masked += del[j]-a;
+                  nmasks += 1;
+                }
+            }
+          j += 1;
+        }
+#ifdef DEBUG
+    printf("   %lld\n",TN_INDEX);
+#endif
+    fwrite(&TN_INDEX,sizeof(int64),1,TN_AFILE);
+  }
+
+}
+
+  //  Read in each successive pile and call ACTION on it.  Read in the traces only if
+  //   "trace" is nonzero
+
+static int make_a_pass(FILE *input, void (*ACTION)(int, Overlap *, int), int trace)
+{ static Overlap *ovls = NULL;
+  static int      omax = 500;
+  static uint16  *paths = NULL;
+  static int      pmax = 100000;
+
+  int64 i, j, novl;
+  int   n, a;
+  int   pcur;
+  int   max;
+
+  if (ovls == NULL)
+    { ovls = (Overlap *) Malloc(sizeof(Overlap)*omax,"Allocating overlap buffer");
+      if (ovls == NULL)
+        exit (1);
+    }
+  if (trace && paths == NULL)
+    { paths = (uint16 *) Malloc(sizeof(uint16)*pmax,"Allocating path buffer");
+      if (paths == NULL)
+        exit (1);
+    }
+
+  rewind(input);
+  fread(&novl,sizeof(int64),1,input);
+  fread(&TRACE_SPACING,sizeof(int),1,input);
+  if (TRACE_SPACING <= TRACE_XOVR)
+    TBYTES = sizeof(uint8);
+  else
+    TBYTES = sizeof(uint16);
+
+  Read_Overlap(input,ovls);
+  if (trace)
+    { if (ovls[0].path.tlen > pmax)
+        { pmax  = 1.2*(ovls[0].path.tlen)+10000;
+          paths = (uint16 *) Realloc(paths,sizeof(uint16)*pmax,"Expanding path buffer");
+          if (paths == NULL) exit (1);
+        }
+      fread(paths,TBYTES,ovls[0].path.tlen,input);
+      if (TBYTES == 1)
+        { ovls[0].path.trace = paths;
+          Decompress_TraceTo16(ovls);
+        }
+    }
+  else
+    fseek(input,TBYTES*ovls[0].path.tlen,SEEK_CUR);
+
+  if (ovls[0].aread < DB_FIRST)
+    { fprintf(stderr,"%s: .las file overlaps don't correspond to reads in block %d of DB\n",
+                     Prog_Name,DB_PART);
+      exit (1);
+    }
+
+  pcur = 0;
+  n = max = 0;
+  for (j = DB_FIRST; j < DB_LAST; j++)
+    { ovls[0] = ovls[n];
+      a = ovls[0].aread;
+      if (a != j)
+        n = 0;
+      else
+        { if (trace)
+            memcpy(paths,paths+pcur,sizeof(uint16)*ovls[0].path.tlen);
+          n = 1;
+          pcur = ovls[0].path.tlen;
+          while (1)
+            { if (Read_Overlap(input,ovls+n) != 0)
+                { ovls[n].aread = INT32_MAX;
+                  break;
+                }
+              if (trace)
+                { if (pcur + ovls[n].path.tlen > pmax)
+                    { pmax = 1.2*(pcur+ovls[n].path.tlen)+10000;
+                      paths = (uint16 *) Realloc(paths,sizeof(uint16)*pmax,"Expanding path buffer");
+                      if (paths == NULL) exit (1);
+                    }
+                  fread(paths+pcur,TBYTES,ovls[n].path.tlen,input);
+                  if (TBYTES == 1)
+                    { ovls[n].path.trace = paths+pcur;
+                      Decompress_TraceTo16(ovls+n);
+                    }
+                }
+              else
+                fseek(input,TBYTES*ovls[n].path.tlen,SEEK_CUR);
+              if (ovls[n].aread != a)
+                break;
+              pcur += ovls[n].path.tlen;
+              n    += 1;
+              if (n >= omax)
+                { omax = 1.2*n + 100;
+                  ovls = (Overlap *) Realloc(ovls,sizeof(Overlap)*omax,"Expanding overlap buffer");
+                  if (ovls == NULL) exit (1);
+                }
+            }
+
+          if (n >= max)
+            max = n;
+          pcur = 0;
+          for (i = 0; i < n; i++)
+            { ovls[i].path.trace = paths+pcur;
+              pcur += ovls[i].path.tlen;
+            }
+        }
+      ACTION(j,ovls,n);
+    }
+
+  return (max);
+}
+
+
+int main(int argc, char *argv[])
+{ FILE       *input;
+  char       *root, *dpwd;
+  char       *las, *lpwd;
+  int         c;
+  char       *MASK_NAME;
+
+  //  Process arguments
+
+  { int  i, j, k;
+    int  flags[128];
+    char *eptr;
+
+    ARG_INIT("TANmask")
+
+    MIN_LEN   = 500;
+    MASK_NAME = "tan";
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("v")
+            break;
+          case 'm':
+            MASK_NAME = argv[i]+2;
+            break;
+          case 'l':
+            ARG_POSITIVE(MIN_LEN,"Minimum retained segment length")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (argc < 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open trimmed DB
+
+  { int status;
+
+    status = Open_DB(argv[1],DB);
+    if (status < 0)
+      exit (1);
+    if (DB->part)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+    Trim_DB(DB);
+  }
+
+  //  Initialize statistics gathering
+
+  if (VERBOSE)
+    { int i;
+
+      nreads = 0;
+      totlen = 0;
+      masked = 0;
+      nmasks = 0;
+
+      printf("\nTANmask -l%d -m%s %s",MIN_LEN,MASK_NAME,argv[1]);
+      for (i = 2; i < argc; i++)
+        printf(" %s",argv[i]);
+      printf("\n");
+    }
+
+  //  Determine if overlap block is being processed and if so get first and last read
+  //    from .db file
+
+  dpwd = PathTo(argv[1]);
+  root = Root(argv[1],".db");
+
+  for (c = 2; c < argc; c++)
+    { las  = Root(argv[c],".las");
+
+      DB_PART  = 0;
+      DB_FIRST = 0;
+      DB_LAST  = DB->nreads;
+
+      { FILE *dbfile;
+        char  buffer[2*MAX_NAME+100];
+        char *p, *eptr;
+        int   i, part, nfiles, nblocks, cutoff, all, oindx;
+        int64 size;
+
+        p = rindex(las,'.');
+        if (p != NULL)
+          { part = strtol(p+1,&eptr,10);
+            if (*eptr == '\0' && eptr != p+1)
+              { dbfile = Fopen(Catenate(dpwd,"/",root,".db"),"r");
+                if (dbfile == NULL)
+                  exit (1);
+                if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
+                  SYSTEM_ERROR
+                for (i = 0; i < nfiles; i++)
+                  if (fgets(buffer,2*MAX_NAME+100,dbfile) == NULL)
+                    SYSTEM_ERROR
+                if (fscanf(dbfile,DB_NBLOCK,&nblocks) != 1)
+                  SYSTEM_ERROR
+                if (fscanf(dbfile,DB_PARAMS,&size,&cutoff,&all) != 3)
+                  SYSTEM_ERROR
+                for (i = 1; i <= part; i++)
+                  if (fscanf(dbfile,DB_BDATA,&oindx,&DB_FIRST) != 2)
+                    SYSTEM_ERROR
+                if (fscanf(dbfile,DB_BDATA,&oindx,&DB_LAST) != 2)
+                  SYSTEM_ERROR
+                fclose(dbfile);
+                DB_PART = part;
+                *p = '\0';
+              }
+          }
+      }
+
+      //  Set up mask track
+
+      { int len, size;
+        char  ans[strlen(MASK_NAME)+7];
+        char  dts[strlen(MASK_NAME)+7];
+
+        strcpy(ans,Catenate(".",MASK_NAME,".","anno"));
+        strcpy(dts,Catenate(".",MASK_NAME,".","data"));
+        if (DB_PART > 0)
+          { TN_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,
+                                      Numbered_Suffix(".",DB_PART,ans)),"w");
+            TN_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,
+                                      Numbered_Suffix(".",DB_PART,dts)),"w");
+          }
+        else
+          { TN_AFILE = Fopen(Catenate(dpwd,PATHSEP,root,ans),"w");
+            TN_DFILE = Fopen(Catenate(dpwd,PATHSEP,root,dts),"w");
+          }
+        if (TN_AFILE == NULL || TN_DFILE == NULL)
+          exit (1);
+
+        len  = DB_LAST - DB_FIRST;
+        size = 0;
+        fwrite(&len,sizeof(int),1,TN_AFILE);
+        fwrite(&size,sizeof(int),1,TN_AFILE);
+        TN_INDEX = 0;
+        fwrite(&TN_INDEX,sizeof(int64),1,TN_AFILE);
+      }
+
+      //  Open overlap file
+
+      lpwd = PathTo(argv[c]);
+      if (DB_PART > 0)
+        input = Fopen(Catenate(lpwd,"/",las,Numbered_Suffix(".",DB_PART,".las")),"r");
+      else
+        input = Fopen(Catenate(lpwd,"/",las,".las"),"r");
+      if (input == NULL)
+        exit (1);
+
+      free(lpwd);
+      free(las);
+
+      //  Process each read pile
+
+      make_a_pass(input,TANDEM,0);
+
+      fclose(TN_AFILE);
+      fclose(TN_DFILE);
+    }
+
+  if (VERBOSE)
+    { printf("\nInput:    ");
+      Print_Number((int64) nreads,7,stdout);
+      printf(" (100.0%%) reads     ");
+      Print_Number(totlen,12,stdout);
+      printf(" (100.0%%) bases\n");
+
+      printf("Masks:    ");
+      Print_Number(nmasks,7,stdout);
+      printf(" (%5.1f%%) masks     ",(100.*nmasks)/nreads);
+      Print_Number(masked,12,stdout);
+      printf(" (%5.1f%%) bases\n",(100.*masked)/totlen);
+    }
+
+  free(dpwd);
+  free(root);
+
+  Close_DB(DB);
+  free(Prog_Name);
+
+  exit (0);
+}
diff --git a/DAMASKER/align.c b/DAMASKER/align.c
new file mode 100644
index 0000000..eb877d4
--- /dev/null
+++ b/DAMASKER/align.c
@@ -0,0 +1,5157 @@
+/*******************************************************************************************
+ *
+ *  Fast alignment discovery and trace generation along with utilites for displaying alignments
+ *     Based on previously unpublished ideas from 2005, subsequently refined in 2013-14.  Basic
+ *     idea is to keep a dynamically selected interval of the f.r. waves from my 1986 O(nd) paper.
+ *     A recent cool idea is to not record all the details of an alignment while discovering it
+ *     but simply record trace points through which the optimal alignment passes every 100bp,
+ *     allowing rapid recomputation of the alignment details between trace points.
+ *
+ *  Author :  Gene Myers
+ *  First  :  June 2013
+ *  Current:  June 1, 2014
+ *
+ ********************************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+#include <limits.h>
+
+#include "DB.h"
+#include "align.h"
+
+#undef    DEBUG_PASSES     //  Show forward / backward extension termini for Local_Alignment
+#undef    DEBUG_POINTS     //  Show trace points
+#undef    DEBUG_WAVE       //  Show waves of Local_Alignment
+#undef     SHOW_MATCH_WAVE //  For waves of Local_Alignment also show # of matches
+#undef    SHOW_TRAIL       //  Show trace at the end of forward and reverse passes
+#undef    SHOW_TPS         //  Show trace points as they are encountered in a wave
+
+#undef  DEBUG_EXTEND       //  Show waves of Extend_Until_Overlap
+
+#undef  DEBUG_ALIGN        //  Show division points of Compute_Trace
+#undef  DEBUG_SCRIPT       //  Show trace additions for Compute_Trace
+#undef  DEBUG_AWAVE        //  Show F/R waves of Compute_Trace
+
+#undef  SHOW_TRACE         //  Show full trace for Print_Alignment
+
+#undef  WAVE_STATS
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  Working Storage Abstraction                                                           *
+*                                                                                        *
+\****************************************************************************************/
+
+typedef struct            //  Hidden from the user, working space for each thread
+  { int     vecmax;
+    void   *vector;
+    int     celmax;
+    void   *cells;
+    int     pntmax;
+    void   *points;
+    int     tramax;
+    void   *trace;
+  } _Work_Data;
+
+Work_Data *New_Work_Data()
+{ _Work_Data *work;
+  
+  work = (_Work_Data *) Malloc(sizeof(_Work_Data),"Allocating work data block");
+  if (work == NULL)
+    EXIT(NULL);
+  work->vecmax = 0;
+  work->vector = NULL;
+  work->pntmax = 0;
+  work->points = NULL;
+  work->tramax = 0;
+  work->trace  = NULL;
+  work->celmax = 0;
+  work->cells  = NULL;
+  return ((Work_Data *) work);
+}
+
+static int enlarge_vector(_Work_Data *work, int newmax)
+{ void *vec;
+  int   max;
+
+  max = ((int) (newmax*1.2)) + 10000;
+  vec = Realloc(work->vector,max,"Enlarging DP vector");
+  if (vec == NULL)
+    EXIT(1);
+  work->vecmax = max;
+  work->vector = vec;
+  return (0);
+}
+
+static int enlarge_points(_Work_Data *work, int newmax)
+{ void *vec;
+  int   max;
+
+  max = ((int) (newmax*1.2)) + 10000;
+  vec = Realloc(work->points,max,"Enlarging point vector");
+  if (vec == NULL)
+    EXIT(1);
+  work->pntmax = max;
+  work->points = vec;
+  return (0);
+}
+
+static int enlarge_trace(_Work_Data *work, int newmax)
+{ void *vec;
+  int   max;
+
+  max = ((int) (newmax*1.2)) + 10000;
+  vec = Realloc(work->trace,max,"Enlarging trace vector");
+  if (vec == NULL)
+    EXIT(1);
+  work->tramax = max;
+  work->trace  = vec;
+  return (0);
+}
+
+void Free_Work_Data(Work_Data *ework)
+{ _Work_Data *work = (_Work_Data *) ework;
+  if (work->vector != NULL)
+    free(work->vector);
+  if (work->cells != NULL)
+    free(work->cells);
+  if (work->trace != NULL)
+    free(work->trace);
+  if (work->points != NULL)
+    free(work->points);
+  free(work);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  ADAPTIVE PATH FINDING                                                                 *
+*                                                                                        *
+\****************************************************************************************/
+
+  //  Absolute/Fixed Parameters
+
+#define BVEC  uint64     //  Can be uint32 if PATH_LEN <= 32
+
+#define TRIM_LEN    15   //  Report as the tip, the last wave maximum for which the last
+                         //     2*TRIM_LEN edits are prefix-positive at rate ave_corr*f(bias)
+                         //     (max value is 20)
+
+#define PATH_LEN    60   //  Follow the last PATH_LEN columns/edges (max value is 63)
+
+  //  Derivative fixed parameters
+
+#define PATH_TOP  0x1000000000000000ll   //  Must be 1 << PATH_LEN
+#define PATH_INT  0x0fffffffffffffffll   //  Must be PATH_TOP-1
+#define TRIM_MASK 0x7fff                 //  Must be (1 << TRIM_LEN) - 1
+#define TRIM_MLAG 200                    //  How far can last trim point be behind best point
+#define WAVE_LAG   30                    //  How far can worst point be behind the best point
+
+static double Bias_Factor[10] = { .690, .690, .690, .690, .780,
+                                  .850, .900, .933, .966, 1.000 };
+
+  //  Adjustable paramters
+
+typedef struct
+  { double ave_corr;
+    int    trace_space;
+    float  freq[4];
+    int    ave_path;
+    int16 *score;
+    int16 *table;
+  } _Align_Spec;
+ 
+/* Fill in bit table: TABLE[x] = 1 iff the alignment modeled by x (1 = match, 0 = mismatch)
+     has a non-negative score for every suffix of the alignment under the scoring scheme
+     where match = MATCH and mismatch = -1.  MATCH is set so that an alignment with TRIM_PCT
+     matches has zero score ( (1-TRIM_PCT) / TRIM_PCT ).                                     */
+
+#define FRACTION 1000  //  Implicit fractional part of scores, i.e. score = x/FRACTION
+
+typedef struct
+  { int    mscore;
+    int    dscore;
+    int16 *table;
+    int16 *score;
+  } Table_Bits;
+
+static void set_table(int bit, int prefix, int score, int max, Table_Bits *parms)
+{ if (bit >= TRIM_LEN)
+    { parms->table[prefix] = (int16) (score-max);
+      parms->score[prefix] = (int16) score;
+    }
+  else
+    { if (score > max)
+        max = score;
+      set_table(bit+1,(prefix<<1),score - parms->dscore,max,parms);
+      set_table(bit+1,(prefix<<1) | 1,score + parms->mscore,max,parms);
+    }
+}
+
+/* Create an alignment specification record including path tip tables & values */
+
+Align_Spec *New_Align_Spec(double ave_corr, int trace_space, float *freq)
+{ _Align_Spec *spec;
+  Table_Bits   parms;
+  double       match;
+  int          bias;
+
+  spec = (_Align_Spec *) Malloc(sizeof(_Align_Spec),"Allocating alignment specification");
+  if (spec == NULL)
+    EXIT(NULL);
+
+  spec->ave_corr    = ave_corr;
+  spec->trace_space = trace_space;
+  spec->freq[0]     = freq[0];
+  spec->freq[1]     = freq[1];
+  spec->freq[2]     = freq[2];
+  spec->freq[3]     = freq[3];
+
+  match = freq[0] + freq[3];
+  if (match > .5)
+    match = 1.-match;
+  bias = (int) ((match+.025)*20.-1.);
+  if (match < .2)
+    { fprintf(stderr,"Warning: Base bias worse than 80/20%% ! (New_Align_Spec)\n");
+      fprintf(stderr,"         Capping bias at this ratio.\n");
+      bias = 3; 
+    }
+
+  spec->ave_path = (int) (PATH_LEN * (1. - Bias_Factor[bias] * (1. - ave_corr)));
+  parms.mscore   = (int) (FRACTION * Bias_Factor[bias] * (1. - ave_corr));
+  parms.dscore   = FRACTION - parms.mscore;
+
+  parms.score = (int16 *) Malloc(sizeof(int16)*(TRIM_MASK+1)*2,"Allocating trim table");
+  if (parms.score == NULL)
+    { free(spec);
+      EXIT(NULL);
+    }
+  parms.table = parms.score + (TRIM_MASK+1);
+
+  set_table(0,0,0,0,&parms);
+
+  spec->table = parms.table;
+  spec->score = parms.score;
+
+  return ((Align_Spec *) spec);
+}
+
+void Free_Align_Spec(Align_Spec *espec)
+{ _Align_Spec *spec = (_Align_Spec *) espec;
+  free(spec->score);
+  free(spec);
+}
+
+double Average_Correlation(Align_Spec *espec)
+{ return (((_Align_Spec *) espec)->ave_corr); }
+
+int Trace_Spacing(Align_Spec *espec)
+{ return (((_Align_Spec *) espec)->trace_space); }
+
+float *Base_Frequencies(Align_Spec *espec)
+{ return (((_Align_Spec *) espec)->freq); }
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  LOCAL ALIGNMENT FINDER: forward_/reverse_wave and Local_Alignment                     *
+*                                                                                        *
+\****************************************************************************************/
+
+
+#ifdef WAVE_STATS
+
+static int64 MAX, TOT, NWV;
+static int64 RESTARTS;
+
+void Init_Stats()
+{ MAX = TOT = NWV = 0;
+  RESTARTS = 0;
+}
+
+void Print_Stats()
+{ printf("\nMax = %lld  Ave = %.1f  # = %lld\n",MAX,(1.*TOT)/NWV,NWV);
+  printf("\nRestarts = %lld\n",RESTARTS);
+}
+
+#endif
+
+
+#ifdef DEBUG_WAVE
+
+static void print_wave(int *V, int *M, int low, int hgh, int besta)
+{ int k, bestk;
+
+  (void) M;
+  printf("  [%6d,%6d]: ",low,hgh);
+  for (k = low; k <= hgh; k++)
+    { if (besta == V[k])
+        bestk = k;
+      // printf(" %3d",(V[k]+k)/2);
+      printf(" %3d",besta-V[k]);
+    }
+  printf(" : %d (%d,%d)\n",besta,(besta+bestk)/2,(besta-bestk)/2);
+#ifdef SHOW_MATCH_WAVE
+  printf("                   ");
+  for (k = low; k <= hgh; k++)
+    printf(" %3d",M[k]);
+  printf("\n");
+#endif
+  fflush(stdout);
+}
+
+#endif
+
+/* At each furthest reaching point, keep a-coordinate of point (V), bitvector
+     recording the last TRIM_LEN columns of the implied alignment (T), and the
+     # of matches (1-bits) in the bitvector (M).                               */
+
+typedef struct
+  { int ptr;
+    int diag;
+    int diff;
+    int mark;
+  } Pebble;
+
+static int VectorEl = 6*sizeof(int) + sizeof(BVEC);
+
+static int forward_wave(_Work_Data *work, _Align_Spec *spec, Alignment *align, Path *bpath,
+                        int *mind, int maxd, int mida, int minp, int maxp, int aoff, int boff)
+{ char *aseq  = align->aseq;
+  char *bseq  = align->bseq;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *HB;
+  int    *_HA, *_HB;
+  int    *NA, *NB;
+  int    *_NA, *_NB;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha, trimhb;
+  int     morea, morey, mored;
+  int     moreha, morehb;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = maxd;
+  low = *mind;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEl;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _HB = _HA + vlen;
+    _NA = _HB + vlen;
+    _NB = _NA + vlen;
+    _T  = ((BVEC *) (_NB + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    HB = _HB-vmin;
+    NA = _NA-vmin;
+    NB = _NB-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  /* Compute 0-wave starting from mid-line */
+
+  more  = 1;
+  aclip =  INT32_MAX;
+  bclip = -INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  trimhb = morehb = 1;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a  = aseq + hgh;
+    for (k = hgh; k >= low; k--)
+      { int     y, c, d;
+        int     ha, hb;
+        int     na, nb;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = (((y+k)+(TRACE_SPACE-aoff))/TRACE_SPACE-1)*TRACE_SPACE+aoff;
+#ifdef SHOW_TPS
+        printf(" A %d: %d,%d,0,%d\n",avail,-1,k,na); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = na;
+        ha  = avail++;
+        na += TRACE_SPACE;
+
+        nb = ((y+(TRACE_SPACE-boff))/TRACE_SPACE-1)*TRACE_SPACE+boff;
+#ifdef SHOW_TPS
+        printf(" B %d: %d,%d,0,%d\n",avail,-1,k,nb); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = nb;
+        hb  = avail++;
+        nb += TRACE_SPACE;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip < k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y += 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k >= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na += TRACE_SPACE;
+          }
+        while (y >= nb)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" B %d: %d,%d,0,%d\n",avail,hb,k,nb); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = hb;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = nb;
+            hb  = avail++;
+            nb += TRACE_SPACE;
+          }
+
+        if (c > besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+            trimhb = hb;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        HB[k] = hb;
+        NA[k] = na;
+        NB[k] = nb;
+
+        a -= 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (hgh >= aclip)
+        { hgh = aclip-1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+              morehb = HB[aclip];
+            }
+        }
+      if (low <= bclip)
+        { low = bclip+1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+              morehb = HB[bclip];
+            }
+        }
+      aclip =  INT32_MAX;
+      bclip = -INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nFORWARD WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  /* Compute successive waves until no furthest reaching points remain */
+
+  while (more && lasta >= besta - TRIM_MLAG)
+    { int     k, n;
+      int     ua, ub;
+      BVEC    t;
+      int     am, ac, ap;
+      char   *a;
+
+      low -= 1;
+      hgh += 1;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move;
+          int64 vd, md, had, hbd, nad, nbd, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEl))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEl;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _HB = _HA + vlen;
+              _NA = _HB + vlen;
+              _NB = _NA + vlen;
+              _T  = ((BVEC *) (_NB + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          hbd = ((void *) (_HB+wing)) - (((void *) (HB+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          nbd = ((void *) (_NB+wing)) - (((void *) (NB+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (hbd < 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (nbd < 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nbd > 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (hbd > 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          HB = _HB-vmin;
+          NA = _NA-vmin;
+          NB = _NB-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low >= minp)
+        { NA[low] = NA[low+1];
+          NB[low] = NB[low+1];
+          V[low]  = -1;
+        }
+      else
+        low += 1;
+
+      if (hgh <= maxp)
+        { NA[hgh] = NA[hgh-1];
+          NB[hgh] = NB[hgh-1];
+          V[hgh]  = am = -1;
+        }
+      else
+        am = V[--hgh];
+
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = -1;
+      a  = aseq + hgh;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = ub = -1;
+      for (k = hgh; k >= low; k--)
+        { int     y, m;
+          int     ha, hb;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          ap = ac;
+          ac = am;
+          am = V[d = k-1];
+
+          if (ac < am)
+            if (am < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = am+1;
+                m  = M[d];
+                b  = T[d]; 
+                ha = HA[d];
+                hb = HB[d];
+              }
+          else
+            if (ac < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = ac+2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+                hb = HB[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip < k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y += 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k >= NA[k])
+            { if (cells[ha].mark < NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] += TRACE_SPACE;
+            }
+
+          while (y >= NB[k])
+            { if (cells[hb].mark < NB[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" B %d: %d,%d,%d,%d\n",avail,hb,k,dif,NB[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = hb;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NB[k];
+                  hb = avail++;
+                }
+              NB[k] += TRACE_SPACE;
+            }
+
+          if (c > besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                        trimhb = hb;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          ub = HB[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+          HB[k] = hb;
+
+          a -= 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta-besty] != 4)
+            more = 1;
+          if (hgh >= aclip)
+            { hgh = aclip-1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                  morehb = HB[aclip];
+                }
+            }
+          if (low <= bclip)
+            { low = bclip+1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                  morehb = HB[bclip];
+                }
+            }
+          aclip =  INT32_MAX;
+          bclip = -INT32_MAX;
+        }
+
+      n = besta - WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] < n)
+          hgh -= 1;                               
+        else
+          { while (V[low] < n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    uint16 *btrace = (uint16 *) bpath->trace;
+    int     atlen, btlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+        trimhb = morehb;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = btlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = (mida-k)/2;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",(mida+k)/2,b); fflush(stdout);
+#endif
+    for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+      { k = cells[h].diag;
+        a = cells[h].mark - k;
+        d = cells[h].diff;
+        atrace[atlen++] = (uint16) (d-e);
+        atrace[atlen++] = (uint16) (a-b);
+#ifdef SHOW_TRAIL
+        printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,a-b); fflush(stdout);
+#endif
+        b = a;
+        e = d;
+      }
+    if (b+k != trimx)
+      { atrace[atlen++] = (uint16) (trimd-e);
+        atrace[atlen++] = (uint16) (trimy-b);
+#ifdef SHOW_TRAIL
+        printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+    else if (b != trimy)
+      { atrace[atlen-1] = (uint16) (atrace[atlen-1] + (trimy-b));
+        atrace[atlen-2] = (uint16) (atrace[atlen-2] + (trimd-e));
+#ifdef SHOW_TRAIL
+        printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+
+    a = -1;
+    for (h = trimhb; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = (mida+k)/2;
+    e = 0;
+    low = k;
+#ifdef SHOW_TRAIL
+    printf("  B path = (%5d,%5d)\n",b,(mida-k)/2); fflush(stdout);
+#endif
+    for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+      { k = cells[h].diag;
+        a = cells[h].mark + k;
+        d = cells[h].diff;
+        btrace[btlen++] = (uint16) (d-e);
+        btrace[btlen++] = (uint16) (a-b);  
+#ifdef SHOW_TRAIL
+        printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a,a-k,d-e,a-b); fflush(stdout);
+#endif
+        b = a;
+        e = d;
+      }
+    if (b-k != trimy)
+      { btrace[btlen++] = (uint16) (trimd-e);
+        btrace[btlen++] = (uint16) (trimx-b);  
+#ifdef SHOW_TRAIL
+        printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimx-b); fflush(stdout);
+#endif
+      }
+    else if (b != trimx)
+      { btrace[btlen-1] = (uint16) (btrace[btlen-1] + (trimx-b));
+        btrace[btlen-2] = (uint16) (btrace[btlen-2] + (trimd-e));
+#ifdef SHOW_TRAIL
+        printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimx-b); fflush(stdout);
+#endif
+      }
+
+    apath->aepos = trimx;
+    apath->bepos = trimy;
+    apath->diffs = trimd;
+    apath->tlen  = atlen;
+    bpath->tlen  = btlen;
+  }
+
+  *mind = low;
+  return (0);
+}
+
+/*** Reverse Wave ***/
+
+static int reverse_wave(_Work_Data *work, _Align_Spec *spec, Alignment *align, Path *bpath,
+                        int mind, int maxd, int mida, int minp, int maxp, int aoff, int boff)
+{ char *aseq  = align->aseq - 1;
+  char *bseq  = align->bseq - 1;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *HB;
+  int    *_HA, *_HB;
+  int    *NA, *NB;
+  int    *_NA, *_NB;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha, trimhb;
+  int     morea, morey, mored;
+  int     moreha, morehb;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = maxd;
+  low = mind;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEl;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _HB = _HA + vlen;
+    _NA = _HB + vlen;
+    _NB = _NA + vlen;
+    _T  = ((BVEC *) (_NB + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    HB = _HB-vmin;
+    NA = _NA-vmin;
+    NB = _NB-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  more  = 1;
+  aclip = -INT32_MAX;
+  bclip =  INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  trimhb = morehb = 1;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a = aseq + low;
+    for (k = low; k <= hgh; k++)
+      { int     y, c, d;
+        int     ha, hb;
+        int     na, nb;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = (((y+k)+(TRACE_SPACE-aoff)-1)/TRACE_SPACE-1)*TRACE_SPACE+aoff;
+#ifdef SHOW_TPS
+        printf(" A %d: -1,%d,0,%d\n",avail,k,na+TRACE_SPACE); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = y+k;
+        ha  = avail++;
+
+        nb = ((y+(TRACE_SPACE-boff)-1)/TRACE_SPACE-1)*TRACE_SPACE+boff;
+#ifdef SHOW_TPS
+        printf(" B %d: -1,%d,0,%d\n",avail,k,nb+TRACE_SPACE); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = y;
+        hb  = avail++;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip > k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y -= 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k <= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na -= TRACE_SPACE;
+          }
+        while (y <= nb)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" B %d: %d,%d,0,%d\n",avail,hb,k,nb); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = hb;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = nb;
+            hb  = avail++;
+            nb -= TRACE_SPACE;
+          }
+
+        if (c < besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+            trimhb = hb;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        HB[k] = hb;
+        NA[k] = na;
+        NB[k] = nb;
+
+        a += 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (low <= aclip)
+        { low = aclip+1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+              morehb = HB[aclip];
+            }
+        }
+      if (hgh >= bclip)
+        { hgh = bclip-1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+              morehb = HB[bclip];
+            }
+        }
+      aclip = -INT32_MAX;
+      bclip =  INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nREVERSE WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  while (more && lasta <= besta + TRIM_MLAG)
+    { int    k, n;
+      int    ua, ub;
+      BVEC   t;
+      int    am, ac, ap;
+      char  *a;
+
+      low -= 1;
+      hgh += 1;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move, vd, md, had, hbd, nad, nbd, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEl))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEl;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _HB = _HA + vlen;
+              _NA = _HB + vlen;
+              _NB = _NA + vlen;
+              _T  = ((BVEC *) (_NB + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          hbd = ((void *) (_HB+wing)) - (((void *) (HB+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          nbd = ((void *) (_NB+wing)) - (((void *) (NB+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (hbd < 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (nbd < 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nbd > 0)
+            memmove(_NB+wing,  ((void *) (NB+low)) - move, span*sizeof(int));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (hbd > 0)
+            memmove(_HB+wing,  ((void *) (HB+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          HB = _HB-vmin;
+          NA = _NA-vmin;
+          NB = _NB-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low >= minp)
+        { NA[low] = NA[low+1];
+          NB[low] = NB[low+1];
+          V[low]  = ap = INT32_MAX;
+        }
+      else
+        ap = V[++low]; 
+
+      if (hgh <= maxp)
+        { NA[hgh] = NA[hgh-1];
+          NB[hgh] = NB[hgh-1];
+          V[hgh] = INT32_MAX;
+        }
+      else
+        hgh -= 1;
+
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = INT32_MAX;
+      a  = aseq + low;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = ub = -1;
+      for (k = low; k <= hgh; k++)
+        { int     y, m;
+          int     ha, hb;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          am = ac;
+          ac = ap;
+          ap = V[d = k+1];
+
+          if (ac > ap)
+            if (ap > am)
+              { c = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = ap-1;
+                m  = M[d];
+                b  = T[d];
+                ha = HA[d];
+                hb = HB[d];
+              }
+          else
+            if (ac > am)
+              { c  = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+                hb = ub;
+              }
+            else
+              { c  = ac-2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+                hb = HB[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip > k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y -= 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k <= NA[k])
+            { if (cells[ha].mark > NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] -= TRACE_SPACE;
+            }
+          while (y <= NB[k])
+            { if (cells[hb].mark > NB[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" B %d: %d,%d,%d,%d\n",avail,hb,k,dif,NB[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = hb;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NB[k];
+                  hb = avail++;
+                }
+              NB[k] -= TRACE_SPACE;
+            }
+
+          if (c < besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                        trimhb = hb;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          ub = HB[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+          HB[k] = hb;
+
+          a += 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+            more = 1;
+          if (low <= aclip)
+            { low = aclip+1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                  morehb = HB[aclip];
+                }
+            }
+          if (hgh >= bclip)
+            { hgh = bclip-1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                  morehb = HB[bclip];
+                }
+            }
+          aclip = -INT32_MAX;
+          bclip =  INT32_MAX;
+        }
+
+      n = besta + WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] > n)
+          hgh -= 1;                               
+        else
+          { while (V[low] > n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    uint16 *btrace = (uint16 *) bpath->trace;
+    int     atlen, btlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+        trimhb = morehb;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = btlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = cells[h].mark - k;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",b+k,b); fflush(stdout);
+#endif
+    if ((b+k)%TRACE_SPACE != aoff)
+      { h = cells[h].ptr;
+        if (h < 0)
+          { a = trimy;
+            d = trimd;
+          }
+        else
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            d = cells[h].diff;
+          }
+#ifdef SHOW_TRAIL
+        printf("    +%4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+        if (apath->tlen == 0)
+          { atrace[--atlen] = (uint16) (b-a);
+            atrace[--atlen] = (uint16) (d-e);
+          }
+        else
+          { atrace[1] = (uint16) (atrace[1] + (b-a));
+            atrace[0] = (uint16) (atrace[0] + (d-e));
+          }
+        b = a;
+        e = d;
+      }
+    if (h >= 0)
+      { for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            atrace[--atlen] = (uint16) (b-a);
+            d = cells[h].diff;
+            atrace[--atlen] = (uint16) (d-e);
+#ifdef SHOW_TRAIL
+            printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+            b = a;
+            e = d;
+          }
+        if (b+k != trimx)
+          { atrace[--atlen] = (uint16) (b-trimy);
+            atrace[--atlen] = (uint16) (trimd-e);
+#ifdef SHOW_TRAIL
+            printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+        else if (b != trimy)
+          { atrace[atlen+1] = (uint16) (atrace[atlen+1] + (b-trimy));
+            atrace[atlen]   = (uint16) (atrace[atlen]   + (trimd-e));
+#ifdef SHOW_TRAIL
+            printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+      }
+
+    a = -1;
+    for (h = trimhb; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = cells[h].mark + k;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  B path = (%5d,%5d)\n",b,b-k); fflush(stdout);
+#endif
+    if ((b-k)%TRACE_SPACE != boff)
+      { h = cells[h].ptr;
+        if (h < 0)
+          { a = trimx;
+            d = trimd;
+          } 
+        else
+          { k = cells[h].diag;
+            a = cells[h].mark + k;
+            d = cells[h].diff;
+          }
+#ifdef SHOW_TRAIL
+        printf("    +%4d: (%5d,%5d): %3d / %3d\n",h,a,a-k,d-e,b-a); fflush(stdout);
+#endif
+        if (bpath->tlen == 0)
+          { btrace[--btlen] = (uint16) (b-a);
+            btrace[--btlen] = (uint16) (b-a);
+          }
+        else
+          { btrace[1] = (uint16) (btrace[1] + (b-a));
+            btrace[0] = (uint16) (btrace[0] + (d-e));
+          }
+        b = a;
+        e = d;
+      }
+
+    if (h >= 0)
+      { for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+          { k = cells[h].diag;
+            a = cells[h].mark + k;
+            btrace[--btlen] = (uint16) (b-a);
+            d = cells[h].diff;
+            btrace[--btlen] = (uint16) (d-e);
+#ifdef SHOW_TRAIL
+            printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a,a-k,d-e,b-a); fflush(stdout);
+#endif
+            b = a;
+            e = d;
+          }
+        if (b-k != trimy)
+          { btrace[--btlen] = (uint16) (b-trimx);
+            btrace[--btlen] = (uint16) (trimd-e);
+#ifdef SHOW_TRAIL
+            printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimx); fflush(stdout);
+#endif
+          }
+        else if (b != trimx)
+          { btrace[btlen+1] = (uint16) (btrace[btlen+1] + (b-trimx));
+            btrace[btlen]   = (uint16) (btrace[btlen]   + (trimd-e));
+#ifdef SHOW_TRAIL
+            printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimx); fflush(stdout);
+#endif
+          }
+      }
+
+    apath->abpos = trimx;
+    apath->bbpos = trimy;
+    apath->diffs = apath->diffs + trimd;
+    apath->tlen  = apath->tlen  - atlen;
+    apath->trace = atrace + atlen;
+    bpath->tlen  = bpath->tlen  - btlen;
+    bpath->trace = btrace + btlen;
+  }
+
+  return (0);
+}
+
+
+/* Find the longest local alignment between aseq and bseq through (xcnt,ycnt)
+   See associated .h file for the precise definition of the interface.
+*/
+
+Path *Local_Alignment(Alignment *align, Work_Data *ework, Align_Spec *espec,
+                      int low, int hgh, int anti, int lbord, int hbord)
+{ _Work_Data  *work = ( _Work_Data *) ework;
+  _Align_Spec *spec = (_Align_Spec *) espec;
+
+  Path *apath, *bpath;
+  int   aoff, boff;
+  int   minp, maxp;
+  int   selfie;
+
+  { int alen, blen;
+    int maxtp, wsize;
+
+    alen = align->alen;
+    blen = align->blen;
+
+    if (hgh-low >= 7500)
+      wsize = VectorEl*(hgh-low+1);
+    else
+      wsize = VectorEl*10000;
+    if (wsize >= work->vecmax)
+      if (enlarge_vector(work,wsize))
+        EXIT(NULL);
+
+    if (alen < blen)
+      maxtp = 2*(blen/spec->trace_space+2);
+    else
+      maxtp = 2*(alen/spec->trace_space+2);
+    wsize = 4*maxtp*sizeof(uint16) + sizeof(Path);
+    if (wsize > work->pntmax)
+      if (enlarge_points(work,wsize))
+        EXIT(NULL);
+
+    apath = align->path;
+    bpath = (Path *) work->points;
+
+    apath->trace = ((uint16 *) (bpath+1)) + maxtp;
+    bpath->trace = ((uint16 *) apath->trace) +  2*maxtp;
+  }
+
+#ifdef DEBUG_PASSES
+  printf("\n");
+#endif
+
+  selfie = (align->aseq == align->bseq);
+   
+  if (lbord < 0)
+    { if (selfie && low >= 0)
+        minp = 1;
+      else
+        minp = -INT32_MAX;
+    }
+  else
+    minp = low-lbord;
+  if (hbord < 0)
+    { if (selfie && hgh <= 0)
+        maxp = -1;
+      else
+        maxp = INT32_MAX;
+    }
+  else
+    maxp = hgh+hbord;
+
+  if (ACOMP(align->flags))
+    { aoff = align->alen % spec->trace_space;
+      boff = 0;
+    }
+  else if (COMP(align->flags))
+    { aoff = 0;
+      boff = align->blen % spec->trace_space;
+    }
+  else
+    { aoff = 0;
+      boff = 0;
+    }
+
+  if (forward_wave(work,spec,align,bpath,&low,hgh,anti,minp,maxp,aoff,boff))
+    EXIT(NULL);
+
+#ifdef DEBUG_PASSES
+  printf("F1 (%d,%d) ~ %d => (%d,%d) %d\n",
+         (2*anti+(low+hgh))/4,(anti-(low+hgh))/4,hgh-low,
+         apath->aepos,apath->bepos,apath->diffs);
+#endif
+
+  if (reverse_wave(work,spec,align,bpath,low,low,anti,minp,maxp,aoff,boff))
+    EXIT(NULL);
+
+#ifdef DEBUG_PASSES
+  printf("R1 (%d,%d) => (%d,%d) %d\n",
+         (anti+low)/2,(anti-low)/2,apath->abpos,apath->bbpos,apath->diffs);
+#endif
+
+  bpath->diffs = apath->diffs;
+  if (ACOMP(align->flags))
+    { uint16 *trace = (uint16 *) apath->trace;
+      uint16  p;
+      int     i, j;
+
+      bpath->aepos = apath->bepos;
+      bpath->bepos = apath->aepos;
+      bpath->abpos = apath->bbpos;
+      bpath->bbpos = apath->abpos;
+
+      apath->abpos = align->alen - bpath->bepos;
+      apath->bbpos = align->blen - bpath->aepos;
+      apath->aepos = align->alen - bpath->bbpos;
+      apath->bepos = align->blen - bpath->abpos;
+      i = apath->tlen-2;
+      j = 0;
+      while (j < i)
+        { p = trace[i];
+          trace[i] = trace[j];
+          trace[j] = p;
+          p = trace[i+1];
+          trace[i+1] = trace[j+1];
+          trace[j+1] = p;
+          i -= 2;
+          j += 2;
+        }
+    }
+  else if (COMP(align->flags))
+    { uint16 *trace = (uint16 *) bpath->trace;
+      uint16  p;
+      int     i, j;
+
+      bpath->abpos = align->blen - apath->bepos;
+      bpath->bbpos = align->alen - apath->aepos;
+      bpath->aepos = align->blen - apath->bbpos;
+      bpath->bepos = align->alen - apath->abpos;
+      i = bpath->tlen-2;
+      j = 0;
+      while (j < i)
+        { p = trace[i];
+          trace[i] = trace[j];
+          trace[j] = p;
+          p = trace[i+1];
+          trace[i+1] = trace[j+1];
+          trace[j+1] = p;
+          i -= 2;
+          j += 2;
+        }
+    }
+  else
+    { bpath->aepos = apath->bepos;
+      bpath->bepos = apath->aepos;
+      bpath->abpos = apath->bbpos;
+      bpath->bbpos = apath->abpos;
+    }
+
+#ifdef DEBUG_POINTS
+  { uint16 *trace = (uint16 *) apath->trace;
+    int     a, h;
+
+    printf("\nA-path (%d,%d)->(%d,%d)",apath->abpos,apath->bbpos,apath->aepos,apath->bepos);
+    printf(" %c\n",((COMP(align->flags) || ACOMP(align->flags)) ? 'c' : 'n'));
+    a = apath->bbpos;
+    for (h = 1; h < apath->tlen; h += 2)
+      { int dif = trace[h-1];
+        int del = trace[h];
+        a += del;
+        printf("      %d / %d (%d)\n",dif,del,a);
+      }
+  }
+
+  { uint16 *trace = (uint16 *) bpath->trace;
+    int     a, h;
+
+    printf("\nB-path (%d,%d)->(%d,%d)",bpath->abpos,bpath->bbpos,bpath->aepos,bpath->bepos);
+    printf(" %c [%d,%d]\n",((COMP(align->flags) || ACOMP(align->flags)) ? 'c' : 'n'),
+                           align->blen,align->alen);
+    a = bpath->bbpos;
+    for (h = 1; h < bpath->tlen; h += 2)
+      { int dif = trace[h-1];
+        int del = trace[h];
+        a += del;
+        printf("      %d / %d (%d)\n",dif,del,a);
+      }
+  }
+#endif
+
+  return (bpath);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  EXTENSION VERSION OF LOCAL ALIGNMENT                                                  *
+*                                                                                        *
+\****************************************************************************************/
+
+static int VectorEn = 4*sizeof(int) + sizeof(BVEC);
+
+static int forward_extend(_Work_Data *work, _Align_Spec *spec, Alignment *align,
+                          int midd, int mida, int minp, int maxp)
+{ char *aseq  = align->aseq;
+  char *bseq  = align->bseq;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *NA;
+  int    *_HA, *_NA;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha;
+  int     morea, morey, mored;
+  int     moreha;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = midd;
+  low = midd;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEn;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _NA = _HA + vlen;
+    _T  = ((BVEC *) (_NA + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    NA = _NA-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  /* Compute 0-wave starting from mid-line */
+
+  more  = 1;
+  aclip =  INT32_MAX;
+  bclip = -INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a  = aseq + hgh;
+    for (k = hgh; k >= low; k--)
+      { int     y, c, d;
+        int     ha, na;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = ((y+k)/TRACE_SPACE)*TRACE_SPACE;
+#ifdef SHOW_TPS
+        printf(" A %d: %d,%d,0,%d\n",avail,-1,k,na); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = na;
+        ha  = avail++;
+        na += TRACE_SPACE;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip < k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y += 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k >= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na += TRACE_SPACE;
+          }
+
+        if (c > besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        NA[k] = na;
+
+        a -= 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (hgh >= aclip)
+        { hgh = aclip-1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+            }
+        }
+      if (low <= bclip)
+        { low = bclip+1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+            }
+        }
+      aclip =  INT32_MAX;
+      bclip = -INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nFORWARD WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  /* Compute successive waves until no furthest reaching points remain */
+
+  while (more && lasta >= besta - TRIM_MLAG)
+    { int     k, n;
+      int     ua;
+      BVEC    t;
+      int     am, ac, ap;
+      char   *a;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move;
+          int64 vd, md, had, nad, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEn))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEn;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _NA = _HA + vlen;
+              _T  = ((BVEC *) (_NA + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          NA = _NA-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low > minp)
+        { low -= 1;
+          NA[low] = NA[low+1];
+          V[low]  = -1;
+        }
+      if (hgh < maxp)
+        { hgh += 1;
+          NA[hgh] = NA[hgh-1];
+          V[hgh]  = am = -1;
+        }
+      else
+        am = V[hgh];
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = -1;
+      a  = aseq + hgh;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = -1;
+      for (k = hgh; k >= low; k--)
+        { int     y, m;
+          int     ha;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          ap = ac;
+          ac = am;
+          am = V[d = k-1];
+
+          if (ac < am)
+            if (am < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = am+1;
+                m  = M[d];
+                b  = T[d]; 
+                ha = HA[d];
+              }
+          else
+            if (ac < ap)
+              { c  = ap+1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = ac+2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip < k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y += 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k >= NA[k])
+            { if (cells[ha].mark < NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] += TRACE_SPACE;
+            }
+
+          if (c > besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+
+          a -= 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta-besty] != 4)
+            more = 1;
+          if (hgh >= aclip)
+            { hgh = aclip-1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                }
+            }
+          if (low <= bclip)
+            { low = bclip+1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                }
+            }
+          aclip =  INT32_MAX;
+          bclip = -INT32_MAX;
+        }
+
+      n = besta - WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] < n)
+          hgh -= 1;                               
+        else
+          { while (V[low] < n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    int     atlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = (mida-k)/2;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",(mida+k)/2,b); fflush(stdout);
+#endif
+    for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+      { k = cells[h].diag;
+        a = cells[h].mark - k;
+        d = cells[h].diff;
+        atrace[atlen++] = (uint16) (d-e);
+        atrace[atlen++] = (uint16) (a-b);
+#ifdef SHOW_TRAIL
+        printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,a-b); fflush(stdout);
+#endif
+        b = a;
+        e = d;
+      }
+    if (b+k != trimx)
+      { atrace[atlen++] = (uint16) (trimd-e);
+        atrace[atlen++] = (uint16) (trimy-b);
+#ifdef SHOW_TRAIL
+        printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+    else if (b != trimy)
+      { atrace[atlen-1] = (uint16) (atrace[atlen-1] + (trimy-b));
+        atrace[atlen-2] = (uint16) (atrace[atlen-2] + (trimd-e));
+#ifdef SHOW_TRAIL
+        printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,trimy-b); fflush(stdout);
+#endif
+      }
+
+    apath->aepos = trimx;
+    apath->bepos = trimy;
+    apath->diffs = trimd;
+    apath->tlen  = atlen;
+  }
+
+  return (0);
+}
+
+static int reverse_extend(_Work_Data *work, _Align_Spec *spec, Alignment *align,
+                          int midd, int mida, int minp, int maxp)
+{ char *aseq  = align->aseq - 1;
+  char *bseq  = align->bseq - 1;
+  Path *apath = align->path;
+
+  int     hgh, low, dif;
+  int     vlen, vmin, vmax;
+  int    *V, *M;
+  int    *_V, *_M;
+  BVEC   *T;
+  BVEC   *_T;
+
+  int    *HA, *NA;
+  int    *_HA, *_NA;
+  Pebble *cells;
+  int     avail, cmax;
+
+  int     TRACE_SPACE = spec->trace_space;
+  int     PATH_AVE    = spec->ave_path;
+  int16  *SCORE       = spec->score;
+  int16  *TABLE       = spec->table;
+
+  int     besta, besty;
+  int     trima, trimy, trimd;
+  int     trimha;
+  int     morea, morey, mored;
+  int     moreha;
+  int     more, morem, lasta;
+  int     aclip, bclip;
+
+  hgh = midd;
+  low = midd;
+  dif = 0;
+
+  { int span, wing;
+
+    span = (hgh-low)+1;
+    vlen = work->vecmax/VectorEn;
+    wing = (vlen - span)/2;
+    vmin = low - wing;
+    vmax = hgh + wing;
+
+    _V  = ((int *) work->vector);
+    _M  = _V + vlen;
+    _HA = _M + vlen;
+    _NA = _HA + vlen;
+    _T  = ((BVEC *) (_NA + vlen));
+
+    V  = _V-vmin;
+    M  = _M-vmin;
+    HA = _HA-vmin;
+    NA = _NA-vmin;
+    T  = _T-vmin;
+
+    cells = (Pebble *) (work->cells);
+    cmax  = work->celmax;
+    avail = 0;
+  }
+
+  more  = 1;
+  aclip = -INT32_MAX;
+  bclip =  INT32_MAX;
+
+  besta  = trima  = morea = lasta = mida;
+  besty  = trimy  = morey = (mida-hgh) >> 1;
+  trimd  = mored  = 0;
+  trimha = moreha = 0;
+  morem  = -1;
+
+  { int   k;
+    char *a;
+
+    a = aseq + low;
+    for (k = low; k <= hgh; k++)
+      { int     y, c, d;
+        int     ha, na;
+        Pebble *pb;
+
+        y = (mida-k) >> 1;
+
+        if (avail >= cmax-1)
+          { cmax  = ((int) (avail*1.2)) + 10000;
+            cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+            if (cells == NULL)
+              EXIT(1);
+            work->celmax = cmax;
+            work->cells  = (void *) cells;
+          }
+
+        na = ((y+k+TRACE_SPACE-1)/TRACE_SPACE-1)*TRACE_SPACE;
+#ifdef SHOW_TPS
+        printf(" A %d: -1,%d,0,%d\n",avail,k,na+TRACE_SPACE); fflush(stdout);
+#endif
+        pb = cells+avail;
+        pb->ptr  = -1;
+        pb->diag = k;
+        pb->diff = 0;
+        pb->mark = y+k;
+        ha  = avail++;
+
+        while (1)
+          { c = bseq[y];
+            if (c == 4)
+              { more = 0;
+                if (bclip > k)
+                  bclip = k;
+                break;
+              }
+            d = a[y];
+            if (c != d)
+              { if (d == 4) 
+                  { more  = 0;
+                    aclip = k;
+                  }
+                break;
+              }
+            y -= 1;
+          }
+        c = (y << 1) + k;
+
+        while (y+k <= na)
+          { if (avail >= cmax)
+              { cmax  = ((int) (avail*1.2)) + 10000;
+                cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),"Reallocating trace cells");
+                if (cells == NULL)
+                  EXIT(1);
+                work->celmax = cmax;
+                work->cells  = (void *) cells;
+              }
+#ifdef SHOW_TPS
+            printf(" A %d: %d,%d,0,%d\n",avail,ha,k,na); fflush(stdout);
+#endif
+            pb = cells+avail;
+            pb->ptr  = ha;
+            pb->diag = k;
+            pb->diff = 0;
+            pb->mark = na;
+            ha  = avail++;
+            na -= TRACE_SPACE;
+          }
+
+        if (c < besta)
+          { besta  = trima = lasta = c;
+            besty  = trimy = y;
+            trimha = ha;
+          }
+
+        V[k]  = c;
+        T[k]  = PATH_INT;
+        M[k]  = PATH_LEN;
+        HA[k] = ha;
+        NA[k] = na;
+
+        a += 1;
+      }
+  }
+
+  if (more == 0)
+    { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+        more = 1;
+      if (low <= aclip)
+        { low = aclip+1;
+          if (morem <= M[aclip])
+            { morem  = M[aclip];
+              morea  = V[aclip];
+              morey  = (morea - aclip)/2;
+              moreha = HA[aclip];
+            }
+        }
+      if (hgh >= bclip)
+        { hgh = bclip-1;
+          if (morem <= M[bclip])
+            { morem  = M[bclip];
+              morea  = V[bclip];
+              morey  = (morea - bclip)/2;
+              moreha = HA[bclip];
+            }
+        }
+      aclip = -INT32_MAX;
+      bclip =  INT32_MAX;
+    }
+
+#ifdef DEBUG_WAVE
+  printf("\nREVERSE WAVE:\n");
+  print_wave(V,M,low,hgh,besta);
+#endif
+
+  while (more && lasta <= besta + TRIM_MLAG)
+    { int    k, n;
+      int    ua;
+      BVEC   t;
+      int    am, ac, ap;
+      char  *a;
+
+      if (low <= vmin || hgh >= vmax)
+        { int   span, wing;
+          int64 move, vd, md, had, nad, td;
+
+          span = (hgh-low)+1;
+          if (.8*vlen < span)
+            { if (enlarge_vector(work,vlen*VectorEn))
+                EXIT(1);
+
+              move = ((void *) _V) - work->vector;
+              vlen = work->vecmax/VectorEn;
+
+              _V  = (int *) work->vector;
+              _M  = _V + vlen;
+              _HA = _M + vlen;
+              _NA = _HA + vlen;
+              _T  = ((BVEC *) (_NA + vlen));
+            }
+          else
+            move = 0;
+
+          wing = (vlen - span)/2;
+
+          vd  = ((void *) ( _V+wing)) - (((void *) ( V+low)) - move);
+          md  = ((void *) ( _M+wing)) - (((void *) ( M+low)) - move);
+          had = ((void *) (_HA+wing)) - (((void *) (HA+low)) - move);
+          nad = ((void *) (_NA+wing)) - (((void *) (NA+low)) - move);
+          td  = ((void *) ( _T+wing)) - (((void *) ( T+low)) - move);
+
+          if (vd < 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+          if (md < 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (had < 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (nad < 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (td < 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+
+          if (td > 0)
+            memmove( _T+wing,  ((void *) ( T+low)) - move, span*sizeof(BVEC));
+          if (nad > 0)
+            memmove(_NA+wing,  ((void *) (NA+low)) - move, span*sizeof(int));
+          if (had > 0)
+            memmove(_HA+wing,  ((void *) (HA+low)) - move, span*sizeof(int));
+          if (md > 0)
+            memmove( _M+wing,  ((void *) ( M+low)) - move, span*sizeof(int));
+          if (vd > 0)
+            memmove( _V+wing,  ((void *) ( V+low)) - move, span*sizeof(int));
+
+          vmin = low-wing;
+          vmax = hgh+wing;
+
+          V  =  _V-vmin;
+          M  =  _M-vmin;
+          HA = _HA-vmin;
+          NA = _NA-vmin;
+          T  =  _T-vmin;
+        }
+
+      if (low > minp)
+        { low -= 1;
+          NA[low] = NA[low+1];
+          V[low]  = ap = INT32_MAX;
+        }
+      else
+        ap = V[low]; 
+      if (hgh < maxp)
+        { hgh += 1;
+          NA[hgh] = NA[hgh-1];
+          V[hgh] = INT32_MAX;
+        }
+      dif += 1;
+
+      ac = V[hgh+1] = V[low-1] = INT32_MAX;
+      a  = aseq + low;
+      t  = PATH_INT;
+      n  = PATH_LEN;
+      ua = -1;
+      for (k = low; k <= hgh; k++)
+        { int     y, m;
+          int     ha;
+          int     c, d;
+          BVEC    b;
+          Pebble *pb;
+
+          am = ac;
+          ac = ap;
+          ap = V[d = k+1];
+
+          if (ac > ap)
+            if (ap > am)
+              { c = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = ap-1;
+                m  = M[d];
+                b  = T[d];
+                ha = HA[d];
+              }
+          else
+            if (ac > am)
+              { c  = am-1;
+                m  = n;
+                b  = t;
+                ha = ua;
+              }
+            else
+              { c  = ac-2;
+                m  = M[k];
+                b  = T[k];
+                ha = HA[k];
+              }
+
+          if ((b & PATH_TOP) != 0)
+            m -= 1;
+          b <<= 1;
+
+          y = (c-k) >> 1;
+          while (1)
+            { c = bseq[y];
+              if (c == 4)
+                { more = 0;
+                  if (bclip > k)
+                    bclip = k;
+                  break;
+                }
+              d = a[y];
+              if (c != d)
+                { if (d == 4) 
+                    { more  = 0;
+                      aclip = k;
+                    }
+                  break;
+                }
+              y -= 1;
+              if ((b & PATH_TOP) == 0)
+                m += 1;
+              b = (b << 1) | 1;
+            }
+          c = (y << 1) + k;
+
+          while (y+k <= NA[k])
+            { if (cells[ha].mark > NA[k])
+                { if (avail >= cmax)
+                    { cmax  = ((int) (avail*1.2)) + 10000;
+                      cells = (Pebble *) Realloc(cells,cmax*sizeof(Pebble),
+                                                       "Reallocating trace cells");
+                      if (cells == NULL)
+                        EXIT(1);
+                      work->celmax = cmax;
+                      work->cells  = (void *) cells;
+                    }
+#ifdef SHOW_TPS
+                  printf(" A %d: %d,%d,%d,%d\n",avail,ha,k,dif,NA[k]); fflush(stdout);
+#endif
+                  pb = cells+avail;
+                  pb->ptr  = ha;
+                  pb->diag = k;
+                  pb->diff = dif;
+                  pb->mark = NA[k];
+                  ha = avail++;
+                }
+              NA[k] -= TRACE_SPACE;
+            }
+
+          if (c < besta)
+            { besta = c;
+              besty = y;
+              if (m >= PATH_AVE)
+                { lasta = c;
+                  if (TABLE[b & TRIM_MASK] >= 0)
+                    if (TABLE[(b >> TRIM_LEN) & TRIM_MASK] + SCORE[b & TRIM_MASK] >= 0)
+                      { trima  = c;
+                        trimy  = y;
+                        trimd  = dif;
+                        trimha = ha;
+                      }
+                }
+            }
+
+          t  = T[k];
+          n  = M[k];
+          ua = HA[k];
+          V[k]  = c;
+          T[k]  = b;
+          M[k]  = m;
+          HA[k] = ha;
+
+          a += 1;
+        }
+
+      if (more == 0)
+        { if (bseq[besty] != 4 && aseq[besta - besty] != 4)
+            more = 1;
+          if (low <= aclip)
+            { low = aclip+1;
+              if (morem <= M[aclip])
+                { morem  = M[aclip];
+                  morea  = V[aclip];
+                  morey  = (morea - aclip)/2;
+                  mored  = dif;
+                  moreha = HA[aclip];
+                }
+            }
+          if (hgh >= bclip)
+            { hgh = bclip-1;
+              if (morem <= M[bclip])
+                { morem  = M[bclip];
+                  morea  = V[bclip];
+                  morey  = (morea - bclip)/2;
+                  mored  = dif;
+                  moreha = HA[bclip];
+                }
+            }
+          aclip = -INT32_MAX;
+          bclip =  INT32_MAX;
+        }
+
+      n = besta + WAVE_LAG;
+      while (hgh >= low)
+        if (V[hgh] > n)
+          hgh -= 1;                               
+        else
+          { while (V[low] > n)
+              low += 1;
+            break;
+          }
+
+#ifdef WAVE_STATS
+      k = (hgh-low)+1;
+      if (k > MAX)
+        MAX = k;
+      TOT += k;
+      NWV += 1;
+#endif
+
+#ifdef DEBUG_WAVE
+      print_wave(V,M,low,hgh,besta);
+#endif
+    }
+
+  { uint16 *atrace = (uint16 *) apath->trace;
+    int     atlen;
+    int     trimx;
+    int     a, b, k, h;
+    int     d, e;
+
+    if (morem >= 0)
+      { trimx  = morea-morey;
+        trimy  = morey;
+        trimd  = mored;
+        trimha = moreha;
+      }
+    else
+      trimx = trima-trimy;
+
+    atlen = 0;
+
+    a = -1;
+    for (h = trimha; h >= 0; h = b)
+      { b = cells[h].ptr; 
+        cells[h].ptr = a;
+        a = h;
+      }
+    h = a;
+
+    k = cells[h].diag;
+    b = cells[h].mark - k;
+    e = 0;
+#ifdef SHOW_TRAIL
+    printf("  A path = (%5d,%5d)\n",b+k,b); fflush(stdout);
+#endif
+    if ((b+k)%TRACE_SPACE != 0)
+      { h = cells[h].ptr;
+        if (h < 0)
+          { a = trimy;
+            d = trimd;
+          }
+        else
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            d = cells[h].diff;
+          }
+#ifdef SHOW_TRAIL
+        printf("    +%4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+        atrace[--atlen] = (uint16) (b-a);
+        atrace[--atlen] = (uint16) (d-e);
+        b = a;
+        e = d;
+      }
+    if (h >= 0)
+      { for (h = cells[h].ptr; h >= 0; h = cells[h].ptr)
+          { k = cells[h].diag;
+            a = cells[h].mark - k;
+            atrace[--atlen] = (uint16) (b-a);
+            d = cells[h].diff;
+            atrace[--atlen] = (uint16) (d-e);
+#ifdef SHOW_TRAIL
+            printf("     %4d: (%5d,%5d): %3d / %3d\n",h,a+k,a,d-e,b-a); fflush(stdout);
+#endif
+            b = a;
+            e = d;
+          }
+        if (b+k != trimx)
+          { atrace[--atlen] = (uint16) (b-trimy);
+            atrace[--atlen] = (uint16) (trimd-e);
+#ifdef SHOW_TRAIL
+            printf("           (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+        else if (b != trimy)
+          { atrace[atlen+1] = (uint16) (atrace[atlen+1] + (b-trimy));
+            atrace[atlen]   = (uint16) (atrace[atlen]   + (trimd-e));
+#ifdef SHOW_TRAIL
+            printf("         @ (%5d,%5d): %3d / %3d\n",trimx,trimy,trimd-e,b-trimy); fflush(stdout);
+#endif
+          }
+      }
+
+    apath->abpos = trimx;
+    apath->bbpos = trimy;
+    apath->diffs = trimd;
+    apath->tlen  = - atlen;
+    apath->trace = atrace + atlen;
+  }
+
+  return (0);
+}
+
+
+/* Find the longest local alignment between aseq and bseq through (xcnt,ycnt)
+   See associated .h file for the precise definition of the interface.
+*/
+
+int Find_Extension(Alignment *align, Work_Data *ework, Align_Spec *espec,
+                   int diag, int anti, int lbord, int hbord, int prefix)
+{ _Work_Data  *work = ( _Work_Data *) ework;
+  _Align_Spec *spec = (_Align_Spec *) espec;
+
+  Path *apath;
+  int   minp, maxp;
+
+  { int alen, blen;
+    int maxtp, wsize;
+
+    alen = align->alen;
+    blen = align->blen;
+
+    wsize = VectorEn*10000;
+    if (wsize >= work->vecmax)
+      if (enlarge_vector(work,wsize))
+        EXIT(1);
+
+    if (alen < blen)
+      maxtp = 2*(blen/spec->trace_space+2);
+    else
+      maxtp = 2*(alen/spec->trace_space+2);
+    wsize = 2*maxtp*sizeof(uint16);
+    if (wsize > work->pntmax)
+      if (enlarge_points(work,wsize))
+        EXIT(1);
+
+    apath = align->path;
+    apath->trace = ((uint16 *) work->points) + maxtp;
+  }
+
+#ifdef DEBUG_PASSES
+  printf("\n");
+#endif
+
+  if (lbord < 0)
+    minp = -INT32_MAX;
+  else
+    minp = diag-lbord;
+  if (hbord < 0)
+    maxp = INT32_MAX;
+  else
+    maxp = diag+hbord;
+
+  if (prefix)
+    { if (reverse_extend(work,spec,align,diag,anti,minp,maxp))
+        EXIT(1);
+      apath->aepos = (anti-diag)/2;
+      apath->bepos = (anti+diag)/2;
+#ifdef DEBUG_PASSES
+      printf("E1 (%d,%d) => (%d,%d) %d\n",
+             (anti+diag)/2,(anti-diag)/2,apath->abpos,apath->bbpos,apath->diffs);
+#endif
+    }
+  else
+    { if (forward_extend(work,spec,align,diag,anti,minp,maxp))
+        EXIT(1);
+      apath->abpos = (anti-diag)/2;
+      apath->bbpos = (anti+diag)/2;
+#ifdef DEBUG_PASSES
+      printf("F1 (%d,%d) => (%d,%d) %d\n",
+             (anti+diag)/2,(anti-diag)/2,apath->aepos,apath->bepos,apath->diffs);
+#endif
+     }
+
+#ifdef DEBUG_POINTS
+  { uint16 *trace = (uint16 *) apath->trace;
+    int     a, h;
+
+    printf("\nA-path (%d,%d)->(%d,%d)",apath->abpos,apath->bbpos,apath->aepos,apath->bepos);
+    printf(" %c\n",(COMP(align->flags) ? 'c' : 'n'));
+    a = apath->bbpos;
+    for (h = 1; h < apath->tlen; h += 2)
+      { int dif = trace[h-1];
+        int del = trace[h];
+        a += del;
+        printf("      %d / %d (%d)\n",dif,del,a);
+      }
+  }
+#endif
+
+  return (0);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  OVERLAP MANIPULATION                                                                  *
+*                                                                                        *
+\****************************************************************************************/
+
+static int64 PtrSize   = sizeof(void *);
+static int64 OvlIOSize = sizeof(Overlap) - sizeof(void *);
+
+int Read_Overlap(FILE *input, Overlap *ovl)
+{ if (fread( ((char *) ovl) + PtrSize, OvlIOSize, 1, input) != 1)
+    return (1);
+  return (0);
+}
+
+int Read_Trace(FILE *input, Overlap *ovl, int tbytes)
+{ if (tbytes > 0 && ovl->path.tlen > 0)
+    { if (fread(ovl->path.trace, tbytes*ovl->path.tlen, 1, input) != 1)
+        return (1);
+    }
+  return (0);
+}
+
+void Write_Overlap(FILE *output, Overlap *ovl, int tbytes)
+{ fwrite( ((char *) ovl) + PtrSize, OvlIOSize, 1, output);
+  if (ovl->path.trace != NULL)
+    fwrite(ovl->path.trace,tbytes,ovl->path.tlen,output);
+}
+
+void Compress_TraceTo8(Overlap *ovl)
+{ uint16 *t16 = (uint16 *) ovl->path.trace;
+  uint8  *t8  = (uint8  *) ovl->path.trace;
+  int     j;
+
+  for (j = 0; j < ovl->path.tlen; j++)
+    t8[j] = (uint8) (t16[j]);
+}
+
+void Decompress_TraceTo16(Overlap *ovl)
+{ uint16 *t16 = (uint16 *) ovl->path.trace;
+  uint8  *t8  = (uint8  *) ovl->path.trace;
+  int     j;
+
+  for (j = ovl->path.tlen-1; j >= 0; j--)
+    t16[j] = t8[j];
+}
+
+void Print_Overlap(FILE *output, Overlap *ovl, int tbytes, int indent)
+{ int     i;
+
+  fprintf(output,"%*s%d vs. ",indent,"",ovl->aread);
+  if (COMP(ovl->flags))
+    fprintf(output,"c(%d)\n",ovl->bread);
+  else
+    fprintf(output,"%d\n",ovl->bread);
+  fprintf(output,"%*s  [%d,%d] vs [%d,%d] w. %d diffs\n",indent,"",
+                 ovl->path.abpos,ovl->path.aepos,ovl->path.bbpos,ovl->path.bepos,ovl->path.diffs);
+
+  if (tbytes == 1)
+    { uint8 *trace = (uint8 *) (ovl->path.trace);
+      if (trace != NULL)
+        { int p = ovl->path.bbpos + trace[1];
+          fprintf(output,"%*sTrace: %3d/%5d",indent,"",trace[0],p);
+          for (i = 3; i < ovl->path.tlen; i += 2)
+            { if (i%10 == 0)
+                fprintf(output,"\n%*s",indent+6,"");
+              p += trace[i];
+              fprintf(output," %3d/%5d",trace[i-1],p);
+            }
+          fprintf(output,"\n");
+        }
+    }
+  else
+    { uint16 *trace = (uint16 *) (ovl->path.trace);
+      if (trace != NULL)
+        { int p = ovl->path.bbpos + trace[1];
+          fprintf(output,"%*sTrace: %3d/%5d",indent,"",trace[0],p);
+          for (i = 3; i < ovl->path.tlen; i += 2)
+            { if (i%10 == 0)
+                fprintf(output,"\n%*s",indent+6,"");
+              p += trace[i];
+              fprintf(output," %3d/%5d",trace[i-1],p);
+            }
+          fprintf(output,"\n");
+        }
+    }
+}
+
+int Check_Trace_Points(Overlap *ovl, int tspace, int verbose, char *fname)
+{ int     i, p; 
+
+  if (((ovl->path.aepos-1)/tspace - ovl->path.abpos/tspace)*2 != ovl->path.tlen-2)
+    { if (verbose) 
+        EPRINTF(EPLACE,"  %s: Wrong number of trace points\n",fname);
+      return (1);
+    }         
+  p = ovl->path.bbpos;
+  if (tspace <= TRACE_XOVR)
+    { uint8 *trace8 = (uint8 *) ovl->path.trace;
+      for (i = 1; i < ovl->path.tlen; i += 2)
+        p += trace8[i];
+    }
+  else      
+    { uint16 *trace16 = (uint16 *) ovl->path.trace;
+      for (i = 1; i < ovl->path.tlen; i += 2)
+        p += trace16[i];
+    }
+  if (p != ovl->path.bepos)
+    { if (verbose)
+        EPRINTF(EPLACE,"  %s: Trace point sum != aligned interval\n",fname);
+      return (1); 
+    }         
+  return (0);
+}
+
+
+void Flip_Alignment(Alignment *align, int full)
+{ char *aseq  = align->aseq;
+  char *bseq  = align->bseq;
+  int   alen  = align->alen;
+  int   blen  = align->blen;
+  Path *path  = align->path;
+  int   comp  = COMP(align->flags);
+
+  int  *trace = (int *) path->trace;
+  int   tlen  = path->tlen;
+
+  int   i, j, p;
+
+  if (comp)
+    { p = path->abpos;
+      path->abpos = blen - path->bepos;
+      path->bepos = alen - p;
+      p = path->aepos;
+      path->aepos = blen - path->bbpos;
+      path->bbpos = alen - p;
+
+      if (full)
+        { alen += 2;
+          blen += 2;
+
+          for (i = 0; i < tlen; i++)
+            if ((p = trace[i]) < 0)
+              trace[i] = alen + p;
+            else
+              trace[i] = p - blen;
+
+          i = tlen-1;
+          j = 0;
+          while (j < i)
+            { p = trace[i];
+              trace[i] = trace[j];
+              trace[j] = p;
+              i -= 1;
+              j += 1;
+            }
+
+          alen -= 2;
+          blen -= 2;
+        }
+    }
+  else
+    { p = path->abpos;
+      path->abpos = path->bbpos;
+      path->bbpos = p;
+      p = path->aepos;
+      path->aepos = path->bepos;
+      path->bepos = p;
+
+      if (full)
+        for (i = 0; i < tlen; i++)
+          trace[i] = - (trace[i]);
+    }
+
+  align->aseq  = bseq;
+  align->bseq  = aseq;
+  align->alen  = blen;
+  align->blen  = alen;
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  ALIGNMENT PRINTING                                                                    *
+*                                                                                        *
+\****************************************************************************************/
+
+/* Complement the sequence in fragment aseq.  The operation does the
+   complementation/reversal in place.  Calling it a second time on a
+   given fragment restores it to its original state.                */
+
+void Complement_Seq(char *aseq, int len)
+{ char *s, *t;
+  int   c;
+
+  s = aseq;
+  t = aseq + (len-1);
+  while (s < t)
+    { c    = 3 - *s;
+      *s++ = (char) (3 - *t);
+      *t-- = (char) c;
+    }
+  if (s == t)
+    *s = (char) (3 - *s);
+}
+
+
+/* Print an alignment to file between a and b given in trace (unpacked).
+   Prefix gives the length of the initial prefix of a that is unaligned.  */
+
+static char ToL[8] = { 'a', 'c', 'g', 't', '.', '[', ']', '-' };
+static char ToU[8] = { 'A', 'C', 'G', 'T', '.', '[', ']', '-' };
+
+int Print_Alignment(FILE *file, Alignment *align, Work_Data *ework,
+                    int indent, int width, int border, int upper, int coord)
+{ _Work_Data *work  = (_Work_Data *) ework;
+  int        *trace = align->path->trace;
+  int         tlen  = align->path->tlen;
+
+  char *Abuf, *Bbuf, *Dbuf;
+  int   i, j, o;
+  char *a, *b;
+  char  mtag, dtag;
+  int   prefa, prefb;
+  int   aend, bend;
+  int   comp, blen;
+  int   sa, sb;
+  int   match, diff;
+  char *N2A;
+
+  if (trace == NULL) return (0);
+
+#ifdef SHOW_TRACE
+  fprintf(file,"\nTrace:\n");
+  for (i = 0; i < tlen; i++)
+    fprintf(file,"  %3d\n",trace[i]);
+#endif
+
+  o = sizeof(char)*3*(width+1);
+  if (o > work->vecmax)
+    if (enlarge_vector(work,o))
+      EXIT(1);
+
+  if (upper)
+    N2A = ToU;
+  else
+    N2A = ToL;
+
+  Abuf = (char *) work->vector;
+  Bbuf = Abuf + (width+1);
+  Dbuf = Bbuf + (width+1);
+
+  aend = align->path->aepos;
+  bend = align->path->bepos;
+
+  comp = COMP(align->flags);
+  blen = align->blen;
+
+  Abuf[width] = Bbuf[width] = Dbuf[width] = '\0';
+                                           /* buffer/output next column */
+#define COLUMN(x,y)							\
+{ int u, v;								\
+  if (o >= width)							\
+    { fprintf(file,"\n");						\
+      fprintf(file,"%*s",indent,"");					\
+      if (coord > 0)							\
+        { if (sa < aend)						\
+            fprintf(file," %*d",coord,sa);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %s\n",Abuf);					\
+          fprintf(file,"%*s %*s %s\n",indent,"",coord,"",Dbuf);		\
+          fprintf(file,"%*s",indent,"");				\
+          if (sb < bend)						\
+            if (comp)							\
+              fprintf(file," %*d",coord,blen-sb);			\
+            else							\
+              fprintf(file," %*d",coord,sb);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %s",Bbuf);					\
+        }								\
+      else								\
+        { fprintf(file," %s\n",Abuf);					\
+          fprintf(file,"%*s %s\n",indent,"",Dbuf);			\
+          fprintf(file,"%*s %s",indent,"",Bbuf);			\
+        }								\
+      fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));		\
+      o  = 0;								\
+      sa = i-1;								\
+      sb = j-1;								\
+      match = diff = 0;							\
+    }									\
+  u = (x);								\
+  v = (y);								\
+  if (u == 4 || v == 4)							\
+    Dbuf[o] = ' ';							\
+  else if (u == v)							\
+    Dbuf[o] = mtag;							\
+  else									\
+    Dbuf[o] = dtag;							\
+  Abuf[o] = N2A[u];							\
+  Bbuf[o] = N2A[v];							\
+  o += 1;								\
+}
+
+  a = align->aseq - 1;
+  b = align->bseq - 1;
+
+  o  = 0;
+  i = j = 1;
+
+  prefa = align->path->abpos;
+  prefb = align->path->bbpos;
+
+  if (prefa > border)
+    { i = prefa-(border-1);
+      prefa = border;
+    }
+  if (prefb > border)
+    { j = prefb-(border-1);
+      prefb = border;
+    }
+
+  sa   = i-1;
+  sb   = j-1;
+  mtag = ':';
+  dtag = ':';
+
+  while (prefa > prefb)
+    { COLUMN(a[i],4)
+      i += 1;
+      prefa -= 1;
+    }
+  while (prefb > prefa)
+    { COLUMN(4,b[j])
+      j += 1;
+      prefb -= 1;
+    }
+  while (prefa > 0)
+    { COLUMN(a[i],b[j])
+      i += 1;
+      j += 1;
+      prefa -= 1;
+    }
+
+  mtag = '[';
+  if (prefb > 0)
+    COLUMN(5,5)
+
+  mtag  = '|';
+  dtag  = '*';
+
+  match = diff = 0;
+
+  { int p, c;      /* Output columns of alignment til reach trace end */
+
+    for (c = 0; c < tlen; c++)
+      if ((p = trace[c]) < 0)
+        { p = -p;
+          while (i != p)
+            { COLUMN(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          COLUMN(7,b[j])
+          j += 1;
+          diff += 1;
+        }
+      else
+        { while (j != p)
+            { COLUMN(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          COLUMN(a[i],7)
+          i += 1;
+          diff += 1;
+        }
+    p = align->path->aepos;
+    while (i <= p)
+      { COLUMN(a[i],b[j])
+        if (a[i] == b[j])
+          match += 1;
+        else
+          diff += 1;
+        i += 1;
+        j += 1;
+      }
+  }
+
+  { int c;     /* Output remaining column including unaligned suffix */
+
+    mtag = ']';
+    if (a[i] != 4 && b[j] != 4 && border > 0)
+      COLUMN(6,6)
+
+    mtag = ':';
+    dtag = ':';
+
+    c = 0;
+    while (c < border && (a[i] != 4 || b[j] != 4))
+      { if (a[i] != 4)
+          if (b[j] != 4)
+            { COLUMN(a[i],b[j])
+              i += 1;
+              j += 1;
+            }
+          else
+            { COLUMN(a[i],4)
+              i += 1;
+            }
+        else
+          { COLUMN(4,b[j])
+            j += 1;
+          }
+        c += 1;
+      }
+  }
+
+  /* Print remainder of buffered col.s */
+
+  fprintf(file,"\n");
+  fprintf(file,"%*s",indent,"");
+  if (coord > 0)
+    { if (sa < aend)
+        fprintf(file," %*d",coord,sa);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %*s %.*s\n",indent,"",coord,"",o,Dbuf);
+      fprintf(file,"%*s",indent,"");
+      if (sb < bend)
+        if (comp)
+          fprintf(file," %*d",coord,blen-sb);
+        else
+          fprintf(file," %*d",coord,sb);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s",o,Bbuf);
+    }
+  else
+    { fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %.*s\n",indent,"",o,Dbuf);
+      fprintf(file,"%*s %.*s",indent,"",o,Bbuf);
+    }
+  if (diff+match > 0)
+    fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));
+  else
+    fprintf(file,"\n");
+
+  fflush(file);
+  return (0);
+}
+
+int Print_Reference(FILE *file, Alignment *align, Work_Data *ework,
+                    int indent, int block, int border, int upper, int coord)
+{ _Work_Data *work  = (_Work_Data *) ework;
+  int        *trace = align->path->trace;
+  int         tlen  = align->path->tlen;
+
+  char *Abuf, *Bbuf, *Dbuf;
+  int   i, j, o;
+  char *a, *b;
+  char  mtag, dtag;
+  int   prefa, prefb;
+  int   aend, bend;
+  int   comp, blen;
+  int   sa, sb, s0;
+  int   match, diff;
+  char *N2A;
+  int   vmax;
+
+  if (trace == NULL) return (0);
+
+#ifdef SHOW_TRACE
+  fprintf(file,"\nTrace:\n");
+  for (i = 0; i < tlen; i++)
+    fprintf(file,"  %3d\n",trace[i]);
+#endif
+
+  vmax = work->vecmax/3;
+  o = sizeof(char)*6*(block+1);
+  if (o > vmax)
+    { if (enlarge_vector(work,3*o))
+        EXIT(1);
+      vmax = work->vecmax/3;
+    }
+
+  Abuf = (char *) work->vector;
+  Bbuf = Abuf + vmax;
+  Dbuf = Bbuf + vmax;
+
+  if (upper)
+    N2A = ToU;
+  else
+    N2A = ToL;
+
+  aend = align->path->aepos;
+  bend = align->path->bepos;
+
+  comp = COMP(align->flags);
+  blen = align->blen;
+
+#define BLOCK(x,y)							\
+{ int u, v;								\
+  if (i%block == 1 && i != s0 && x < 4 && o > 0)			\
+    { fprintf(file,"\n");						\
+      fprintf(file,"%*s",indent,"");					\
+      if (coord > 0)							\
+        { if (sa < aend)						\
+            fprintf(file," %*d",coord,sa);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %.*s\n",o,Abuf);				\
+          fprintf(file,"%*s %*s %.*s\n",indent,"",coord,"",o,Dbuf);	\
+          fprintf(file,"%*s",indent,"");				\
+          if (sb < bend)						\
+            if (comp)							\
+              fprintf(file," %*d",coord,blen-sb);			\
+            else							\
+              fprintf(file," %*d",coord,sb);				\
+          else								\
+            fprintf(file," %*s",coord,"");				\
+          fprintf(file," %.*s",o,Bbuf);					\
+        }								\
+      else								\
+        { fprintf(file," %.*s\n",o,Abuf);				\
+          fprintf(file,"%*s %.*s\n",indent,"",o,Dbuf);			\
+          fprintf(file,"%*s %.*s",indent,"",o,Bbuf);			\
+        }								\
+      fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));		\
+      o  = 0;								\
+      sa = i-1;								\
+      sb = j-1;								\
+      match = diff = 0;							\
+    }									\
+  u = (x);								\
+  v = (y);								\
+  if (u == 4 || v == 4)							\
+    Dbuf[o] = ' ';							\
+  else if (u == v)							\
+    Dbuf[o] = mtag;							\
+  else									\
+    Dbuf[o] = dtag;							\
+  Abuf[o] = N2A[u];							\
+  Bbuf[o] = N2A[v];							\
+  o += 1;								\
+  if (o >= vmax)							\
+    { if (enlarge_vector(work,3*o))					\
+        EXIT(1);							\
+      vmax = work->vecmax/3;						\
+      memmove(work->vector+2*vmax,Dbuf,o);				\
+      memmove(work->vector+vmax,Bbuf,o);				\
+      memmove(work->vector,Abuf,o);					\
+      Abuf = (char *) work->vector;					\
+      Bbuf = Abuf + vmax;						\
+      Dbuf = Bbuf + vmax;						\
+    }									\
+}
+
+  a = align->aseq - 1;
+  b = align->bseq - 1;
+
+  o  = 0;
+  i = j = 1;
+
+  prefa = align->path->abpos;
+  prefb = align->path->bbpos;
+
+  if (prefa > border)
+    { i = prefa-(border-1);
+      prefa = border;
+    }
+  if (prefb > border)
+    { j = prefb-(border-1);
+      prefb = border;
+    }
+
+  s0   = i;
+  sa   = i-1;
+  sb   = j-1;
+  mtag = ':';
+  dtag = ':';
+
+  while (prefa > prefb)
+    { BLOCK(a[i],4)
+      i += 1;
+      prefa -= 1;
+    }
+  while (prefb > prefa)
+    { BLOCK(4,b[j])
+      j += 1;
+      prefb -= 1;
+    }
+  while (prefa > 0)
+    { BLOCK(a[i],b[j])
+      i += 1;
+      j += 1;
+      prefa -= 1;
+    }
+
+  mtag = '[';
+  if (prefb > 0)
+    BLOCK(5,5)
+
+  mtag  = '|';
+  dtag  = '*';
+
+  match = diff = 0;
+
+  { int p, c;      /* Output columns of alignment til reach trace end */
+
+    for (c = 0; c < tlen; c++)
+      if ((p = trace[c]) < 0)
+        { p = -p;
+          while (i != p)
+            { BLOCK(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          BLOCK(7,b[j])
+          j += 1;
+          diff += 1;
+        }
+      else
+        { while (j != p)
+            { BLOCK(a[i],b[j])
+              if (a[i] == b[j])
+                match += 1;
+              else
+                diff += 1;
+              i += 1;
+              j += 1;
+            }
+          BLOCK(a[i],7)
+          i += 1;
+          diff += 1;
+        }
+    p = align->path->aepos;
+    while (i <= p)
+      { BLOCK(a[i],b[j])
+        if (a[i] == b[j])
+		match += 1;
+	else
+          diff += 1;
+        i += 1;
+        j += 1;
+      }
+  }
+
+  { int c;     /* Output remaining column including unaligned suffix */
+
+    mtag = ']';
+    if (a[i] != 4 && b[j] != 4 && border > 0)
+      BLOCK(6,6)
+
+    mtag = ':';
+    dtag = ':';
+
+    c = 0;
+    while (c < border && (a[i] != 4 || b[j] != 4))
+      { if (a[i] != 4)
+          if (b[j] != 4)
+            { BLOCK(a[i],b[j])
+              i += 1;
+              j += 1;
+            }
+          else
+            { BLOCK(a[i],4)
+              i += 1;
+            }
+        else
+          { BLOCK(4,b[j])
+            j += 1;
+          }
+        c += 1;
+      }
+  }
+
+  /* Print remainder of buffered col.s */
+
+  fprintf(file,"\n");
+  fprintf(file,"%*s",indent,"");
+  if (coord > 0)
+    { if (sa < aend)
+        fprintf(file," %*d",coord,sa);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %*s %.*s\n",indent,"",coord,"",o,Dbuf);
+      fprintf(file,"%*s",indent,"");
+      if (sb < bend)
+        if (comp)
+          fprintf(file," %*d",coord,blen-sb);
+        else
+          fprintf(file," %*d",coord,sb);
+      else
+        fprintf(file," %*s",coord,"");
+      fprintf(file," %.*s",o,Bbuf);
+    }
+  else
+    { fprintf(file," %.*s\n",o,Abuf);
+      fprintf(file,"%*s %.*s\n",indent,"",o,Dbuf);
+      fprintf(file,"%*s %.*s",indent,"",o,Bbuf);
+    }
+  if (diff+match > 0)
+    fprintf(file," %5.1f%%\n",(100.*diff)/(diff+match));
+  else
+    fprintf(file,"\n");
+
+  fflush(file);
+  return (0);
+}
+
+/* Print an ASCII representation of the overlap in align between fragments
+   a and b to given file.                                                  */
+
+static inline void repchar(FILE *file, int symbol, int rep)
+{ while (rep-- > 0)
+    fputc(symbol,file);
+}
+
+void Alignment_Cartoon(FILE *file, Alignment *align, int indent, int coord)
+{ int   alen = align->alen;
+  int   blen = align->blen;
+  Path *path = align->path;
+  int   comp = COMP(align->flags);
+  int   w;
+
+  fprintf(file,"%*s",indent,"");
+  if (path->abpos > 0)
+    fprintf(file,"    %*d ",coord,path->abpos);
+  else
+    fprintf(file,"%*s",coord+5,"");
+  if (path->aepos < alen)
+    fprintf(file,"%*s%d",coord+8,"",alen-path->aepos);
+  fprintf(file,"\n");
+
+  fprintf(file,"%*s",indent,"");
+  if (path->abpos > 0)
+    { fprintf(file,"A ");
+      w = Number_Digits((int64) path->abpos);
+      repchar(file,' ',coord-w);
+      repchar(file,'=',w+3);
+      fputc('+',file);
+      repchar(file,'-',coord+5);
+    }
+  else
+    { fprintf(file,"A %*s",coord+4,"");
+      repchar(file,'-',coord+5);
+    }
+
+  if (path->aepos < alen)
+    { fputc('+',file);
+      w = Number_Digits((int64) (alen-path->aepos));
+      repchar(file,'=',w+2);
+      fputc('>',file);
+      repchar(file,' ',w);
+    }
+  else
+    { fputc('>',file);
+      repchar(file,' ',coord+3);
+    }
+
+  { int asub, bsub;
+
+    asub = path->aepos - path->abpos;
+    bsub = path->bepos - path->bbpos;
+    fprintf(file,"   dif/(len1+len2) = %d/(%d+%d) = %5.2f%%\n",
+                 path->diffs,asub,bsub,(200.*path->diffs)/(asub+bsub));
+  }
+
+  { int   sym1e, sym2e;
+    int   sym1p, sym2p;
+
+    if (comp > 0)
+      { sym1p = '<'; sym2p = '-'; sym1e = '<'; sym2e = '='; }
+    else
+      { sym1p = '-'; sym2p = '>'; sym1e = '='; sym2e = '>'; }
+
+    fprintf(file,"%*s",indent,"");
+    if (path->bbpos > 0)
+      { fprintf(file,"B ");
+        w = Number_Digits((int64) path->bbpos);
+        repchar(file,' ',coord-w);
+        fputc(sym1e,file);
+        repchar(file,'=',w+2);
+        fputc('+',file);
+        repchar(file,'-',coord+5);
+      }
+    else
+      { fprintf(file,"B ");
+        repchar(file,' ',coord+3);
+        fputc(sym1p,file);
+        repchar(file,'-',coord+5);
+      }
+    if (path->bepos < blen)
+      { fprintf(file,"+");
+        w = Number_Digits((int64) (blen-path->bepos));
+        repchar(file,'=',w+2);
+        fprintf(file,"%c\n",sym2e);
+      }
+    else
+      fprintf(file,"%c\n",sym2p);
+  }
+
+  fprintf(file,"%*s",indent,"");
+  if (path->bbpos > 0)
+    fprintf(file,"    %*d ",coord,path->bbpos);
+  else
+    fprintf(file,"%*s",coord+5,"");
+  if (path->bepos < blen)
+    fprintf(file,"%*s%d",coord+8,"",blen-path->bepos);
+  fprintf(file,"\n");
+
+  fflush(file);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  O(ND) trace algorithm                                                                 *
+*                                                                                        *
+\****************************************************************************************/
+
+
+#ifdef DEBUG_AWAVE
+
+static void print_awave(int *V, int low, int hgh)
+{ int k;
+
+  printf("  [%6d,%6d]: ",low,hgh);
+  for (k = low; k <= hgh; k++)
+    printf(" %3d",V[k]);
+  printf("\n");
+  fflush(stdout);
+}
+
+#endif
+
+#ifdef DEBUG_ALIGN
+
+static int depth = 0;
+
+#endif
+
+typedef struct
+  { int  *Stop;          //  Ongoing stack of alignment indels
+    char *Aabs, *Babs;   //  Absolute base of A and B sequences
+
+    int  **PVF, **PHF;   //  List of waves for iterative np algorithms
+    int   mida,  midb;   //  mid point division for mid-point algorithms
+
+    int   *VF,   *VB;    //  Forward/Reverse waves for nd algorithms
+                         //  (defunct: were used for O(nd) algorithms)
+  } Trace_Waves;
+
+static int dandc_nd(char *A, int M, char *B, int N, Trace_Waves *wave)
+{ int x, y;
+  int D;
+
+#ifdef DEBUG_ALIGN
+  printf("%*s %ld,%ld: %d vs %d\n",depth,"",A-wave->Aabs,B-wave->Babs,M,N);
+#endif
+
+  if (M <= 0)
+    { x = (wave->Aabs-A)-1;
+      for (y = 1; y <= N; y++)
+        { *wave->Stop++ = x;
+#ifdef DEBUG_SCRIPT
+          printf("%*s *I %ld(%ld)\n",depth,"",y+(B-wave->Babs),(A-wave->Aabs)+1);
+#endif
+        }
+      return (N);
+    }
+  if (N <= 0)
+    { y = (B-wave->Babs)+1;
+      for (x = 1; x <= M; x++)
+        { *wave->Stop++ = y;
+#ifdef DEBUG_SCRIPT
+          printf("%*s *D %ld(%ld)\n",depth,"",x+(A-wave->Aabs),(B-wave->Babs)+1);
+#endif
+        }
+      return (M);
+    }
+
+  { int  *VF = wave->VF;
+    int  *VB = wave->VB;
+    int   flow;  //  fhgh == D !
+    int   blow, bhgh;
+    char *a;
+
+    y = 0;
+    if (N < M)
+      while (y < N && B[y] == A[y])
+        y += 1;
+    else
+      { while (y < M && B[y] == A[y])
+          y += 1;
+        if (y >= M && N == M)
+          return (0);
+      }
+
+    flow   = 0;
+    VF[0]  = y;
+    VF[-1] = -2;
+
+    x = N-M;
+    a = A-x;
+    y = N-1;
+    if (N > M)
+      while (y >= x && B[y] == a[y])
+        y -= 1;
+    else
+      while (y >= 0 && B[y] == a[y])
+        y -= 1;
+
+    blow = bhgh = -x;
+    VB += x;
+    VB[blow]   = y;
+    VB[blow-1] = N+1;
+
+    for (D = 1; 1; D += 1)
+      { int   k, r;
+        int   am, ac, ap;
+
+        //  Forward wave
+
+        flow -= 1;
+        am = ac = VF[flow-1] = -2;
+
+        a = A + D;
+        x = M - D;
+        for (k = D; k >= flow; k--)
+          { ap = ac;
+            ac = am+1;
+            am = VF[k-1];
+
+            if (ac < am)
+              if (ap < am)
+                y  = am;
+              else
+                y = ap;
+            else
+              if (ap < ac)
+                y = ac;
+              else
+                y = ap;
+
+            if (blow <= k && k <= bhgh)
+              { r = VB[k];
+                if (y > r)
+                  { D = (D<<1)-1;
+                    if (ap > r)
+                      y = ap;
+                    else if (ac > r)
+                      y = ac;
+                    else
+                      y = r+1;
+                    x = k+y;
+                    goto OVERLAP2;
+                  }
+              }
+
+            if (N < x)
+              while (y < N && B[y] == a[y])
+                y += 1;
+            else
+              while (y < x && B[y] == a[y])
+                y += 1;
+            
+            VF[k] = y;
+            a -= 1;
+            x += 1;
+          }
+
+#ifdef DEBUG_AWAVE
+        print_awave(VF,flow,D);
+#endif
+
+        //  Reverse Wave
+
+        bhgh += 1;
+        blow -= 1;
+	am = ac = VB[blow-1] = N+1;
+
+        a = A + bhgh;
+        x = -bhgh;
+        for (k = bhgh; k >= blow; k--)
+          { ap = ac+1;
+            ac = am;
+            am = VB[k-1];
+
+            if (ac > am)
+              if (ap > am)
+                y  = am;
+              else
+                y = ap;
+            else
+              if (ap > ac)
+                y = ac;
+              else
+                y = ap;
+
+            if (flow <= k && k <= D)
+              { r = VF[k];
+	        if (y <= r)
+                  { D = (D << 1);
+                    if (ap <= r)
+                      y = ap;
+                    else if (ac <= r)
+                      y = ac;
+                    else
+                      y = r;
+                    x = k+y;
+                    goto OVERLAP2;
+                  }
+              }
+
+            y -= 1;
+            if (x > 0)
+              while (y >= x && B[y] == a[y])
+                y -= 1;
+            else
+              while (y >= 0 && B[y] == a[y])
+                y -= 1;
+
+            VB[k] = y;
+            a -= 1;
+            x += 1;
+          }
+
+#ifdef DEBUG_AWAVE
+        print_awave(VB,blow,bhgh);
+#endif
+      }
+  }
+
+OVERLAP2:
+
+#ifdef DEBUG_ALIGN
+  printf("%*s (%d,%d) @ %d\n",depth,"",x,y,D);
+  fflush(stdout);
+#endif
+  if (D > 1)
+    { 
+#ifdef DEBUG_ALIGN
+      depth += 2;
+#endif
+      dandc_nd(A,x,B,y,wave);
+      dandc_nd(A+x,M-x,B+y,N-y,wave);
+#ifdef DEBUG_ALIGN
+      depth -= 2;
+#endif
+    }
+  else if (D == 1)
+    { if (M > N)
+        { *wave->Stop++ = (B-wave->Babs)+y+1;
+#ifdef DEBUG_SCRIPT
+          printf("%*s  D %ld(%ld)\n",depth,"",(A-wave->Aabs)+x,(B-wave->Babs)+y+1);
+#endif
+        }
+      else if (M < N)
+        { *wave->Stop++ = (wave->Aabs-A)-x-1;
+#ifdef DEBUG_SCRIPT
+          printf("%*s  I %ld(%ld)\n",depth,"",(B-wave->Babs)+y,(A-wave->Aabs)+x+1);
+#endif
+        }
+#ifdef DEBUG_SCRIPT
+      else
+        printf("%*s  %ld S %ld\n",depth,"",(wave->Aabs-A)+x,(B-wave->Babs)+y);
+#endif
+    }
+
+  return (D);
+}
+
+
+static int Compute_Trace_ND_ALL(Alignment *align, Work_Data *ework)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  int   L, D;
+  int   asub, bsub;
+  Path *path;
+  int  *trace;
+
+  path = align->path;
+  asub = path->aepos-path->abpos;
+  bsub = path->bepos-path->bbpos;
+
+  if (asub < bsub)
+    L = bsub;
+  else
+    L = asub;
+  L *= sizeof(int);
+  if (L > work->tramax)
+    if (enlarge_trace(work,L))
+      EXIT(1);
+
+  trace = wave.Stop = ((int *) work->trace);
+
+  D = 2*(path->diffs + 4)*sizeof(int);
+  if (D > work->vecmax)
+    if (enlarge_vector(work,D))
+      EXIT(1);
+  
+  D = (path->diffs+3)/2;
+  wave.VF = ((int *) work->vector) + (D+1);
+  wave.VB = wave.VF + (2*D+1);
+
+  wave.Aabs = align->aseq;
+  wave.Babs = align->bseq;
+
+  path->diffs = dandc_nd(align->aseq+path->abpos,path->aepos-path->abpos,
+                         align->bseq+path->bbpos,path->bepos-path->bbpos,&wave);
+  path->trace = trace;
+  path->tlen  = wave.Stop - trace;
+  return (0);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  O(NP) tracing algorithms                                                              *
+*                                                                                        *
+\****************************************************************************************/
+
+/* Iterative O(np) algorithm for finding the alignment between two substrings (specified
+     by a Path record).  The variation includes handling substitutions and guarantees
+     to find left-most alignments so that low complexity runs are always aligned in
+     the same way.
+*/
+
+#ifdef DEBUG_ALIGN
+
+static int ToA[4] = { 'a', 'c', 'g', 't' };
+
+#endif
+
+static int iter_np(char *A, int M, char *B, int N, Trace_Waves *wave, int mode)
+{ int  **PVF = wave->PVF; 
+  int  **PHF = wave->PHF;
+  int    D;
+  int    del = M-N;
+
+  { int  *F0, *F1, *F2;
+    int  *HF;
+    int   low, hgh;
+    int   posl, posh;
+
+#ifdef DEBUG_ALIGN
+    printf("\n    BASE %ld,%ld: %d vs %d\n",A-wave->Aabs,B-wave->Babs,M,N);
+    printf("    A = ");
+    for (D = 0; D < M; D++)
+      printf("%c",ToA[(int) A[D]]);
+    printf("\n");
+    printf("    B = ");
+    for (D = 0; D < N; D++)
+      printf("%c",ToA[(int) B[D]]);
+    printf("\n");
+#endif
+
+    if (del >= 0)
+      { low = 0;
+        hgh = del;
+      }
+    else
+      { low = del;
+        hgh = 0;
+      }
+
+    posl = -INT32_MAX;
+    posh =  INT32_MAX;
+    if (wave->Aabs == wave->Babs)
+      { if (B == A)
+          { EPRINTF(EPLACE,"Error: self comparison starts on diagonal 0 (Compute_Trace)\n");
+            EXIT(-1);
+          }
+        else if (B < A)
+          posl = (B-A)+1;
+        else
+          posh = (B-A)-1;
+      }
+
+    F1 = PVF[-2];
+    F0 = PVF[-1];
+
+    for (D = low-1; D <= hgh+1; D++)
+      F1[D] = F0[D] = -2;
+    F0[0] = -1;
+
+    low += 1;
+    hgh -= 1;
+
+    for (D = 0; 1; D += 1)
+      { int   k, i, j;
+        int   am, ac, ap;
+        char *a;
+
+        F2 = F1;
+        F1 = F0;
+        F0 = PVF[D];
+        HF = PHF[D];
+
+        if ((D & 0x1) == 0)
+          { if (low > posl)
+              low -= 1;
+            if (hgh < posh)
+              hgh += 1;
+          }
+        F0[hgh+1] = F0[low-1] = -2;
+
+#define FS_MOVE(mdir,pdir)			\
+  ac = F1[k]+1;					\
+  if (ac < am)					\
+    if (ap < am)				\
+      { HF[k] = mdir;				\
+        j = am;					\
+      }						\
+    else					\
+      { HF[k] = pdir;				\
+        j = ap;					\
+      }						\
+  else						\
+    if (ap < ac)				\
+      { HF[k] = 0;				\
+        j = ac;					\
+      }						\
+    else					\
+      { HF[k] = pdir;				\
+        j = ap;					\
+      }						\
+						\
+  if (N < i)					\
+    while (j < N && B[j] == a[j])		\
+      j += 1;					\
+  else						\
+    while (j < i && B[j] == a[j])		\
+      j += 1;					\
+  F0[k] = j;
+
+        j = -2;
+        a = A + hgh;
+        i = M - hgh;
+        for (k = hgh; k > del; k--)
+          { ap = j+1;
+            am = F2[k-1];
+            FS_MOVE(-1,4)
+            a -= 1;
+            i += 1;
+          }
+
+        j = -2;
+        a = A + low;
+        i = M - low;
+        for (k = low; k < del; k++)
+          { ap = F2[k+1]+1;
+            am = j;
+            FS_MOVE(2,1)
+            a += 1;
+            i -= 1;
+          }
+
+        ap = F0[del+1]+1;
+        am = j;
+        FS_MOVE(2,4)
+
+#ifdef DEBUG_AWAVE
+        print_awave(F0,low,hgh);
+        print_awave(HF,low,hgh);
+#endif
+
+        if (F0[del] >= N)
+          break;
+      }
+  }
+
+  { int   k, h, m, e, c;
+    int   ap = (wave->Aabs-A)-1;
+    int   bp = (B-wave->Babs)+1;
+
+    PHF[0][0] = 3;
+
+    c = N;
+    k = del;
+    e = PHF[D][k];
+    PHF[D][k] = 3;
+
+    if (mode == UPPERMOST)
+
+      while (e != 3)
+        { h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h < k)       // => e = -1 or 2,  UPPERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] <= c)
+                c = PVF[D][h]-1;
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == -1)  //  => edge is 2, others are 1, and 0
+                { if (c <= PVF[D+2][k+1])
+                    { e = 4;
+                      h = k+1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c <= PVF[m][k+1])
+                    { if (k == del)
+                        e = 4;
+                      else
+                        e = 1;
+                      h = k+1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+            }
+
+          m = PHF[D][h];
+          PHF[D][h] = e;
+          e = m;
+          k = h;
+        }
+
+    else if (mode == LOWERMOST)
+
+      while (e != 3)
+        { h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h > k)       // => e = 1 or 4,   LOWERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] < c)
+                c = PVF[D][h];
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == 1)  //  => edge is 2, others are 1, and 0
+                { if (c < PVF[D+2][k-1])
+                    { e = 2;
+                      h = k-1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c < PVF[m][k-1])
+                    { if (k == del)
+                        e = 2;
+                      else
+                        e = -1;
+                      h = k-1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+            }
+
+          m = PHF[D][h];
+          PHF[D][h] = e;
+          e = m;
+          k = h;
+        }
+
+    else //  mode == GREEDIEST
+
+      while (e != 3)
+        { h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          m = PHF[D][h];
+          PHF[D][h] = e;
+          e = m;
+          k = h;
+        }
+
+    k = D = 0;
+    e = PHF[D][k];
+    while (e != 3)
+      { h = k-e;
+        c = PVF[D][k];
+        if (e > 1)
+          h += 3;
+        else if (e == 0)
+          D += 1;
+        else
+          D += 2;
+#ifdef DEBUG_SCRIPT
+        if (h > k)
+          printf("     D %d(%d)\n",(c-k)-(ap-1),c+bp);
+        else if (h < k)
+          printf("     I %d(%d)\n",c+(bp-1),(c+k)-ap);
+        else
+          printf("     %d S %d\n",(c+k)-(ap+1),c+(bp-1));
+#endif
+        if (h > k)
+          *wave->Stop++ = bp+c;
+        else if (h < k)
+          *wave->Stop++ = ap-(c+k);
+        k = h;
+        e = PHF[D][h];
+      }
+  }
+
+  return (D + abs(del));
+}
+
+static int middle_np(char *A, int M, char *B, int N, Trace_Waves *wave, int mode)
+{ int  **PVF = wave->PVF; 
+  int  **PHF = wave->PHF;
+  int    D;
+  int    del = M-N;
+
+  { int  *F0, *F1, *F2;
+    int  *HF;
+    int   low, hgh;
+    int   posl, posh;
+
+#ifdef DEBUG_ALIGN
+    printf("\n%*s BASE %ld,%ld: %d vs %d\n",depth,"",A-wave->Aabs,B-wave->Babs,M,N);
+    printf("%*s A = ",depth,"");
+    for (D = 0; D < M; D++)
+      printf("%c",ToA[(int) A[D]]);
+    printf("\n");
+    printf("%*s B = ",depth,"");
+    for (D = 0; D < N; D++)
+      printf("%c",ToA[(int) B[D]]);
+    printf("\n");
+#endif
+
+    if (del >= 0)
+      { low = 0;
+        hgh = del;
+      }
+    else
+      { low = del;
+        hgh = 0;
+      }
+
+    posl = -INT32_MAX;
+    posh =  INT32_MAX;
+    if (wave->Aabs == wave->Babs)
+      { if (B == A)
+          { EPRINTF(EPLACE,"Error: self comparison starts on diagonal 0 (Compute_Trace)\n");
+            EXIT(1);
+          }
+        else if (B < A)
+          posl = (B-A)+1;
+        else
+          posh = (B-A)-1;
+      }
+
+    F1 = PVF[-2];
+    F0 = PVF[-1];
+
+    for (D = low-1; D <= hgh+1; D++)
+      F1[D] = F0[D] = -2;
+    F0[0] = -1;
+
+    low += 1;
+    hgh -= 1;
+
+    for (D = 0; 1; D += 1)
+      { int   k, i, j;
+        int   am, ac, ap;
+        char *a;
+
+        F2 = F1;
+        F1 = F0;
+        F0 = PVF[D];
+        HF = PHF[D];
+
+        if ((D & 0x1) == 0)
+          { if (low > posl)
+              low -= 1;
+            if (hgh < posh)
+              hgh += 1;
+          }
+        F0[hgh+1] = F0[low-1] = -2;
+
+        j = -2;
+        a = A + hgh;
+        i = M - hgh;
+        for (k = hgh; k > del; k--)
+          { ap = j+1;
+            am = F2[k-1];
+            FS_MOVE(-1,4)
+            a -= 1;
+            i += 1;
+          }
+
+        j = -2;
+        a = A + low;
+        i = M - low;
+        for (k = low; k < del; k++)
+          { ap = F2[k+1]+1;
+            am = j;
+            FS_MOVE(2,1)
+            a += 1;
+            i -= 1;
+          }
+
+        ap = F0[del+1]+1;
+        am = j;
+        FS_MOVE(2,4)
+
+#ifdef DEBUG_AWAVE
+        print_awave(F0,low,hgh);
+        print_awave(HF,low,hgh);
+#endif
+
+        if (F0[del] >= N)
+          break;
+      }
+  }
+
+  { int   k, h, m, e, c;
+    int   d, f;
+
+    d = D + abs(del);
+    c = N;
+    k = del;
+
+    if (mode == UPPERMOST)
+
+      for (f = d/2; d > f; d--)
+        { e = PHF[D][k];
+          h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h < k)       // => e = -1 or 2,  UPPERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] <= c)
+                c = PVF[D][h]-1;
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == -1)  //  => edge is 2, others are 1, and 0
+                { if (c <= PVF[D+2][k+1])
+                    { e = 4;
+                      h = k+1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c <= PVF[m][k+1])
+                    { if (k == del)
+                        e = 4;
+                      else
+                        e = 1;
+                      h = k+1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c+1;
+                }
+            }
+
+          k = h;
+        }
+
+    else if (mode == LOWERMOST)
+
+      for (f = d/2; d > f; d--)
+        { e = PHF[D][k];
+          h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+
+          if (h > k)       // => e = 1 or 4,   LOWERMOST
+            { char *a;
+  
+              a = A + k;
+              if (k < 0)
+                m = -k;
+              else
+                m = 0;
+              if (PVF[D][h] < c)
+                c = PVF[D][h];
+              while (c >= m && a[c] == B[c])
+                c -= 1;
+              if (e == 1)  //  => edge is 2, others are 1, and 0
+                { if (c < PVF[D+2][k-1])
+                    { e = 2;
+                      h = k-1;
+                      D = D+2;
+                    }
+                  else if (c == PVF[D+1][k])
+                    { e = 0;
+                      h = k;
+                      D = D+1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+              else      //   => edge is 0, others are 1, and 2 (if k != del), 0 (otherwise)
+                { if (k == del)
+                    m = D;
+                  else
+                    m = D-2;
+                  if (c < PVF[m][k-1])
+                    { if (k == del)
+                        e = 2;
+                      else
+                        e = -1;
+                      h = k-1;
+                      D = m;
+                    }
+                  else if (c == PVF[D-1][k])
+                    { e = 0;
+                      h = k;
+                      D = D-1;
+                    }
+                  else
+                    PVF[D][h] = c--;
+                }
+            }
+
+          k = h;
+        }
+
+    else //  mode == GREEDIEST
+
+      for (f = d/2; d > f; d--)
+        { e = PHF[D][k];
+          h = k+e;
+          if (e > 1)
+            h -= 3;
+          else if (e == 0)
+            D -= 1;
+          else
+            D -= 2;
+          k = h;
+        }
+
+    wave->midb = (B-wave->Babs) + PVF[D][k];
+    wave->mida = (A-wave->Aabs) + k + PVF[D][k];
+  }
+
+  return (0);
+}
+
+
+/****************************************************************************************\
+*                                                                                        *
+*  COMPUTE_TRACE FLAVORS                                                                 *
+*                                                                                        *
+\****************************************************************************************/
+
+int Compute_Trace_ALL(Alignment *align, Work_Data *ework)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path *path;
+  char *aseq, *bseq;
+  int   M, N, D;
+
+  path = align->path;
+  aseq = align->aseq;
+  bseq = align->bseq;
+
+  M = path->aepos-path->abpos;
+  N = path->bepos-path->bbpos;
+  
+  { int64 s;
+    int   d;
+    int   dmax;
+    int   **PVF, **PHF;
+
+    if (M < N)
+      s = N;
+    else
+      s = M;
+    s *= sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    dmax = path->diffs - abs(M-N);
+
+    s = (dmax+3)*2*((M+N+3)*sizeof(int) + sizeof(int *));
+
+    if (s > 256000000)
+      return (Compute_Trace_ND_ALL(align,ework));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = M+N+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (N+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = ((int *) work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  D = iter_np(aseq+path->abpos,M,bseq+path->bbpos,N,&wave,GREEDIEST);
+  if (D < 0)
+    EXIT(1);
+  path->diffs = D;
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+
+  return (0);
+}
+
+int Compute_Trace_PTS(Alignment *align, Work_Data *ework, int trace_spacing, int mode)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path   *path;
+  char   *aseq, *bseq;
+  uint16 *points;
+  int     tlen;
+  int     ab, bb;
+  int     ae, be;
+  int     diffs;
+
+  path   = align->path;
+  aseq   = align->aseq;
+  bseq   = align->bseq;
+  tlen   = path->tlen;
+  points = (uint16 *) path->trace;
+
+  { int64 s;
+    int   d;
+    int   M, N;
+    int   dmax, nmax;
+    int   **PVF, **PHF;
+
+    M = path->aepos-path->abpos;
+    N = path->bepos-path->bbpos;
+    if (M < N)
+      s = N*sizeof(int);
+    else
+      s = M*sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    nmax = 0;
+    dmax = 0;
+    for (d = 1; d < tlen; d += 2)
+      { if (points[d-1] > dmax)
+          dmax = points[d-1];
+        if (points[d] > nmax)
+          nmax = points[d];
+      }
+    if (tlen <= 1)
+      nmax = N;
+
+    s = (dmax+3)*2*((trace_spacing+nmax+3)*sizeof(int) + sizeof(int *));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = trace_spacing+nmax+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (nmax+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = (int *) (work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  { int i, d;
+
+    diffs = 0;
+    ab = path->abpos;
+    ae = (ab/trace_spacing)*trace_spacing;
+    bb = path->bbpos;
+    tlen -= 2;
+    for (i = 1; i < tlen; i += 2)
+      { ae = ae + trace_spacing;
+        be = bb + points[i];
+        d  = iter_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode);
+        if (d < 0)
+          EXIT(1);
+        diffs += d;
+        ab = ae;
+        bb = be;
+      }
+    ae = path->aepos;
+    be = path->bepos;
+    d  = iter_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode);
+    if (d < 0)
+      EXIT(1);
+    diffs += d;
+  }
+
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+  path->diffs = diffs;
+
+  return (0);
+}
+
+int Compute_Trace_MID(Alignment *align, Work_Data *ework, int trace_spacing, int mode)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path   *path;
+  char   *aseq, *bseq;
+  uint16 *points;
+  int     tlen;
+  int     ab, bb;
+  int     ae, be;
+  int     diffs;
+
+  path   = align->path;
+  aseq   = align->aseq;
+  bseq   = align->bseq;
+  tlen   = path->tlen;
+  points = (uint16 *) path->trace;
+
+  { int64 s;
+    int   d;
+    int   M, N;
+    int   dmax, nmax;
+    int   **PVF, **PHF;
+
+    M = path->aepos-path->abpos;
+    N = path->bepos-path->bbpos;
+    if (M < N)
+      s = N*sizeof(int);
+    else
+      s = M*sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    nmax = 0;
+    dmax = 0;
+    for (d = 1; d < tlen; d += 2)
+      { if (points[d-1] > dmax)
+          dmax = points[d-1];
+        if (points[d] > nmax)
+          nmax = points[d];
+      }
+    if (tlen <= 1)
+      nmax = N;
+
+    s = (dmax+3)*4*((trace_spacing+nmax+3)*sizeof(int) + sizeof(int *));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = trace_spacing+nmax+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (nmax+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = ((int *) work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  { int i, d;
+    int as, bs;
+    int af, bf;
+
+    diffs = 0;
+    ab = as = af = path->abpos;
+    ae = (ab/trace_spacing)*trace_spacing;
+    bb = bs = bf = path->bbpos;
+    tlen -= 2;
+    for (i = 1; i < tlen; i += 2) 
+      { ae = ae + trace_spacing;
+        be = bb + points[i];
+        if (middle_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode))
+          EXIT(1);
+        af = wave.mida;
+        bf = wave.midb;
+        d  = iter_np(aseq+as,af-as,bseq+bs,bf-bs,&wave,mode);
+        if (d < 0)
+          EXIT(1);
+        diffs += d;
+        ab = ae;
+        bb = be;
+        as = af;
+        bs = bf;
+      }
+
+    ae = path->aepos;
+    be = path->bepos;
+
+    if (middle_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode))
+      EXIT(1);
+    af = wave.mida;
+    bf = wave.midb;
+    d  = iter_np(aseq+as,af-as,bseq+bs,bf-bs,&wave,mode);
+    if (d < 0)
+      EXIT(1);
+    diffs += d;
+    as = af;
+    bs = bf;
+    
+    d += iter_np(aseq+af,ae-as,bseq+bf,be-bs,&wave,mode);
+    if (d < 0)
+      EXIT(1);
+    diffs += d;
+  }
+
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+  path->diffs = diffs;
+
+  return (0);
+}
+
+int Compute_Trace_IRR(Alignment *align, Work_Data *ework, int mode)
+{ _Work_Data *work = (_Work_Data *) ework;
+  Trace_Waves wave;
+
+  Path   *path;
+  char   *aseq, *bseq;
+  uint16 *points;
+  int     tlen;
+  int     ab, bb;
+  int     ae, be;
+  int     diffs;
+
+  path   = align->path;
+  aseq   = align->aseq;
+  bseq   = align->bseq;
+  tlen   = path->tlen;
+  points = (uint16 *) path->trace;
+
+  { int64 s;
+    int   d;
+    int   M, N;
+    int   mmax, nmax, dmax;
+    int   **PVF, **PHF;
+
+    M = path->aepos-path->abpos;
+    N = path->bepos-path->bbpos;
+    if (M < N)
+      s = N*sizeof(int);
+    else
+      s = M*sizeof(int);
+    if (s > work->tramax)
+      if (enlarge_trace(work,s))
+        EXIT(1);
+
+    nmax = mmax = 0;
+    for (d = 0; d < tlen; d += 2)
+      { if (points[d] > mmax)
+          mmax = points[d];
+        if (points[d+1] > nmax)
+          nmax = points[d+1];
+      }
+    if (tlen <= 1)
+      { mmax = M;
+        nmax = N;
+      }
+    if (mmax > nmax)
+      dmax = nmax;
+    else
+      dmax = mmax;
+
+    s = (dmax+3)*2*((mmax+nmax+3)*sizeof(int) + sizeof(int *));
+
+    if (s > work->vecmax)
+      if (enlarge_vector(work,s))
+        EXIT(1);
+
+    wave.PVF = PVF = ((int **) (work->vector)) + 2;
+    wave.PHF = PHF = PVF + (dmax+3);
+
+    s = mmax+nmax+3;
+    PVF[-2] = ((int *) (PHF + (dmax+1))) + (nmax+1);
+    for (d = -1; d <= dmax; d++)
+      PVF[d] = PVF[d-1] + s;
+    PHF[-2] = PVF[dmax] + s;
+    for (d = -1; d <= dmax; d++)
+      PHF[d] = PHF[d-1] + s;
+  }
+
+  wave.Stop = (int *) (work->trace);
+  wave.Aabs = aseq;
+  wave.Babs = bseq;
+
+  { int i, d;
+
+    diffs = 0;
+    ab = path->abpos;
+    bb = path->bbpos;
+    for (i = 0; i < tlen; i += 2)
+      { ae = ab + points[i];
+        be = bb + points[i+1];
+        d = iter_np(aseq+ab,ae-ab,bseq+bb,be-bb,&wave,mode);
+        if (d < 0)
+          EXIT(1);
+        diffs += d;
+        ab = ae;
+        bb = be;
+      }
+  }
+
+  path->trace = work->trace;
+  path->tlen  = wave.Stop - ((int *) path->trace);
+  path->diffs = diffs;
+
+  return (0);
+}
diff --git a/DAMASKER/align.h b/DAMASKER/align.h
new file mode 100644
index 0000000..c3b31ae
--- /dev/null
+++ b/DAMASKER/align.h
@@ -0,0 +1,354 @@
+/*******************************************************************************************
+ *
+ *  Local alignment module.  Routines for finding local alignments given a seed position,
+ *    representing such an l.a. with its interval and a set of pass-thru points, so that
+ *    a detailed alignment can be efficiently computed on demand.
+ *
+ *  All routines work on a numeric representation of DNA sequences, i.e. 0 for A, 1 for C,
+ *    2 for G, and 3 for T.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ ********************************************************************************************/
+
+#ifndef _A_MODULE
+
+#define _A_MODULE
+
+#include "DB.h"
+
+#define TRACE_XOVR 125   //  If the trace spacing is not more than this value, then can
+                         //    and do compress traces pts to 8-bit unsigned ints
+
+/*** INTERACTIVE vs BATCH version
+
+     The defined constant INTERACTIVE (set in DB.h) determines whether an interactive or
+       batch version of the routines in this library are compiled.  In batch mode, routines
+       print an error message and exit.  In interactive mode, the routines place the error
+       message in EPLACE (also defined in DB.h) and return an error value, typically NULL
+       if the routine returns a pointer, and an unusual integer value if the routine returns
+       an integer.
+     Below when an error return is described, one should understand that this value is returned
+       only if the routine was compiled in INTERACTIVE mode.
+
+***/
+
+
+/*** PATH ABSTRACTION:
+
+     Coordinates are *between* characters where 0 is the tick just before the first char,
+     1 is the tick between the first and second character, and so on.  Our data structure
+     is called a Path refering to its conceptualization in an edit graph.
+
+     A local alignment is specified by the point '(abpos,bbpos)' at which its path in
+     the underlying edit graph starts, and the point '(aepos,bepos)' at which it ends.
+     In otherwords A[abpos+1..aepos] is aligned to B[bbpos+1..bepos] (assuming X[1] is
+     the *first* character of X).
+
+     There are 'diffs' differences in an optimal local alignment between the beginning and
+     end points of the alignment (if computed by Compute_Trace), or nearly so (if computed
+     by Local_Alignment).  
+
+     Optionally, a Path can have additional information about the exact nature of the
+     aligned substrings if the field 'trace' is not NULL.  Trace points to either an
+     array of integers (if computed by a Compute_Trace routine), or an array of unsigned
+     short integers (if computed by Local_Alignment).
+
+     If computed by Local_Alignment 'trace' points at a list of 'tlen' (always even) short
+     values:
+
+            d_0, b_0, d_1, b_1, ... d_n-1, b_n-1, d_n, b_n
+
+     to be interpreted as follows.  The alignment from (abpos,bbpos) to (aepos,bepos)
+     passes through the n trace points for i in [1,n]:
+
+            (a_i,b_i) where a_i = floor(abpos/TS)*TS + i*TS
+                        and b_i = bbpos + (b_0 + b_1 + b_i-1)
+
+     where also let a_0,b_0 = abpos,bbpos and a_(n+1),b_(n+1) = aepos,bepos.  That is, the
+     interior (i.e. i != 0 and i != n+1) trace points pass through every TS'th position of
+     the aread where TS is the "trace spacing" employed when finding the alignment (see
+     New_Align_Spec).  Typically TS is 100.  Then d_i is the number of differences in the
+     portion of the alignment between (a_i,b_i) and (a_i+1,b_i+1).  These trace points allow
+     the Compute_Trace routines to efficiently compute the exact alignment between the two
+     reads by efficiently computing exact alignments between consecutive pairs of trace points.
+     Moreover, the diff values give one an idea of the quality of the alignment along every
+     segment of TS symbols of the aread.
+
+     If computed by a Compute_Trace routine, 'trace' points at a list of 'tlen' integers
+     < i1, i2, ... in > that encodes an exact alignment as follows.  A negative number j
+     indicates that a dash should be placed before A[-j] and a positive number k indicates
+     that a dash should be placed before B[k], where A and B are the two sequences of the
+     overlap.  The indels occur in the trace in the order in which they occur along the
+     alignment.  For a good example of how to "decode" a trace into an alignment, see the
+     code for the routine Print_Alignment.
+
+***/
+
+typedef struct
+  { void     *trace;
+    int       tlen;
+    int       diffs;
+    int       abpos, bbpos;
+    int       aepos, bepos;
+  } Path;
+
+
+/*** ALIGNMENT ABSTRACTION:
+
+     An alignment is modeled by an Alignment record, which in addition to a *pointer* to a
+     'path', gives pointers to the A and B sequences, their lengths, and indicates whether
+     the B-sequence needs to be complemented ('comp' non-zero if so).  The 'trace' pointer
+     of the 'path' subrecord can be either NULL, a list of pass-through points, or an exact
+     trace depending on what routines have been called on the record.
+
+     One can (1) compute a trace, with Compute_Trace, either from scratch if 'path.trace' = NULL,
+     or using the sequence of pass-through points in trace, (2) print an ASCII representation
+     of an alignment, or (3) reverse the roles of A and B, and (4) complement a sequence
+     (which is a reversible process).
+
+     If the alignment record shows the B sequence as complemented, *** THEN IT IS THE
+     RESPONSIBILITY OF THE CALLER *** to make sure that bseq points at a complement of
+     the sequence before calling Compute_Trace or Print_Alignment.  Complement_Seq complements
+     the sequence a of length n.  The operation does the complementation/reversal in place.
+     Calling it a second time on a given fragment restores it to its original state.
+
+     With the introduction of the DAMAPPER, we need to code chains of alignments between a
+     pair of sequences.  The alignments of a chain are expected to be found in order either on
+     a file or in memory, where the START_FLAG marks the first alignment and the NEXT_FLAG all
+     subsequent alignmenst in a chain.  A chain of a single LA is marked with the START_FLAG.
+     The BEST_FLAG marks one of the best chains for a pair of sequences.  The convention is
+     that either every record has either a START- or NEXT-flag, or none of them do (e.g. as
+     produced by daligner), so one can always check the flags of the first alignment to see
+     whether or not the chain concept applies to a given collection or not.
+***/
+
+#define COMP_FLAG  0x1
+#define ACOMP_FLAG 0x2   //  A-sequence is complemented, not B !  Only Local_Alignment notices
+
+#define COMP(x)   ((x) & COMP_FLAG)
+#define ACOMP(x)  ((x) & ACOMP_FLAG)
+
+#define START_FLAG 0x4   //  LA is the first of a chain of 1 or more la's
+#define NEXT_FLAG  0x8   //  LA is the next segment of a chain.
+#define BEST_FLAG  0x10  //  This is the start of the best chain
+
+#define CHAIN_START(x)  ((x) & START_FLAG)
+#define CHAIN_NEXT(x)   ((x) & NEXT_FLAG)
+#define BEST_CHAIN(x)   ((x) & BEST_FLAG)
+
+typedef struct
+  { Path   *path;
+    uint32  flags;        /* Pipeline status and complementation flags          */
+    char   *aseq;         /* Pointer to A sequence                              */
+    char   *bseq;         /* Pointer to B sequence                              */
+    int     alen;         /* Length of A sequence                               */
+    int     blen;         /* Length of B sequence                               */
+  } Alignment;
+
+void Complement_Seq(char *a, int n);
+
+  /* Many routines like Local_Alignment, Compute_Trace, and Print_Alignment need working
+     storage that is more efficiently reused with each call, rather than being allocated anew
+     with each call.  Each *thread* can create a Work_Data object with New_Work_Data and this
+     object holds and retains the working storage for routines of this module between calls
+     to the routines.  If enough memory for a Work_Data is not available then NULL is returned.
+     Free_Work_Data frees a Work_Data object and all working storage held by it.
+  */
+
+  typedef void Work_Data;
+
+  Work_Data *New_Work_Data();
+
+  void       Free_Work_Data(Work_Data *work);
+
+  /* Local_Alignment seeks local alignments of a quality determined by a number of parameters.
+     These are coded in an Align_Spec object that can be created with New_Align_Spec and
+     freed with Free_Align_Spec when no longer needed.  There are 4 essential parameters:
+
+     ave_corr:    the average correlation (1 - 2*error_rate) for the sought alignments.  For Pacbio
+                    data we set this to .70 assuming an average of 15% error in each read.
+     trace_space: the spacing interval for keeping trace points and segment differences (see
+                    description of 'trace' for Paths above)
+     freq[4]:     a 4-element vector where afreq[0] = frequency of A, f(A), freq[1] = f(C),
+                    freq[2] = f(G), and freq[3] = f(T).  This vector is part of the header
+                    of every HITS database (see db.h).
+
+     If an alignment cannot reach the boundary of the d.p. matrix with this condition (i.e.
+     overlap), then the last/first 30 columns of the alignment are guaranteed to be
+     suffix/prefix positive at correlation ave_corr * g(freq) where g is an empirically
+     measured function that increases from 1 as the entropy of freq decreases.  If memory is
+     unavailable or the freq distribution is too skewed then NULL is returned.
+
+     You can get back the original parameters used to create an Align_Spec with the simple
+     utility functions below.
+  */
+
+  typedef void Align_Spec;
+
+  Align_Spec *New_Align_Spec(double ave_corr, int trace_space, float *freq);
+
+  void        Free_Align_Spec(Align_Spec *spec);
+
+  int    Trace_Spacing      (Align_Spec *spec);
+  double Average_Correlation(Align_Spec *spec);
+  float *Base_Frequencies   (Align_Spec *spec);
+
+  /* Local_Alignment finds the longest significant local alignment between the sequences in
+     'align' subject to:
+
+       (a) the alignment criterion given by the Align_Spec 'spec',
+       (b) it passes through one of the points (anti+k)/2,(anti-k)/2 for k in [low,hgh] within
+             the underlying dynamic programming matrix (i.e. the points on diagonals low to hgh
+             on anti-diagonal anti or anti-1 (depending on whether the diagonal is odd or even)),
+       (c) if lbord >= 0, then the alignment is always above diagonal low-lbord, and
+       (d) if hbord >= 0, then the alignment is always below diagonal hgh+hbord.
+
+     The path record of 'align' has its 'trace' filled from the point of view of an overlap
+     between the aread and the bread.  In addition a Path record from the point of view of the
+     bread versus the aread is returned by the function, with this Path's 'trace' filled in
+     appropriately.  The space for the returned path and the two 'trace's are in the working
+     storage supplied by the Work_Data packet and this space is reused with each call, so if
+     one wants to retain the bread-path and the two trace point sequences, then they must be
+     copied to user-allocated storage before calling the routine again.  NULL is returned in
+     the event of an error.
+
+     Find_Extension is a variant of Local_Alignment that simply finds a local alignment that
+     either ends (if prefix is non-zero) or begins (if prefix is zero) at the point
+     (anti+diag)/2,(anti-diag)/2).  All other parameters are as before.  It returns a non-zero
+     value only when INTERACTIVE is on and it cannot allocate the memory it needs.
+     Only the path and trace with respect to the aread is returned.  This routine is experimental
+     and may not persist in later versions of the code.
+  */
+
+  Path *Local_Alignment(Alignment *align, Work_Data *work, Align_Spec *spec,
+                        int low, int hgh, int anti, int lbord, int hbord);
+
+  int   Find_Extension(Alignment *align, Work_Data *work, Align_Spec *spec,    //  experimental !!
+                       int diag, int anti, int lbord, int hbord, int prefix);
+
+  /* Given a legitimate Alignment object, Compute_Trace_X computes an exact trace for the alignment.
+     If 'path.trace' is non-NULL, then it is assumed to be a sequence of pass-through points
+     and diff levels computed by Local_Alignment.  In either case 'path.trace' is set
+     to point at an integer array within the storage of the Work_Data packet encoding an
+     exact optimal trace from the start to end points.  If the trace is needed beyond the
+     next call to a routine that sets it, then it should be copied to an array allocated
+     and managed by the caller.
+
+     Compute_Trace_ALL does not require a sequence of pass-through points, as it computes the
+     best alignment between (path->abpos,path->bbpos) and (path->aepos,path->bepos) in the
+     edit graph between the sequences.  Compute_Trace_PTS computes a trace by computing the
+     trace between successive pass through points.  It is much, much faster than Compute_Trace_ALL
+     but at the tradeoff of not necessarily being optimal as pass-through points are not all
+     perfect.  Compute_Trace_MID computes a trace by computing the trace between the mid-points
+     of alignments between two adjacent pairs of pass through points.  It is generally twice as
+     slow as Compute_Trace_PTS, but it produces nearer optimal alignments.  All these routines
+     return 1 if an error occurred and 0 otherwise.
+  */
+
+#define LOWERMOST -1   //   Possible modes for "mode" parameter below)
+#define GREEDIEST  0
+#define UPPERMOST  1
+
+  int Compute_Trace_ALL(Alignment *align, Work_Data *work);
+  int Compute_Trace_PTS(Alignment *align, Work_Data *work, int trace_spacing, int mode);
+  int Compute_Trace_MID(Alignment *align, Work_Data *work, int trace_spacing, int mode);
+
+  /* Compute_Trace_IRR (IRR for IRRegular) computes a trace for the given alignment where
+     it assumes the spacing between trace points between both the A and B read varies, and
+     futher assumes that the A-spacing is given in the short integers normally occupied by
+     the differences in the alignment between the trace points.  This routine is experimental
+     and may not persist in later versions of the code.
+  */
+
+  int Compute_Trace_IRR(Alignment *align, Work_Data *work, int mode);   //  experimental !!
+
+  /* Alignment_Cartoon prints an ASCII representation of the overlap relationhip between the
+     two reads of 'align' to the given 'file' indented by 'indent' space.  Coord controls
+     the display width of numbers, it must be not less than the width of any number to be
+     displayed.
+
+     If the alignment trace is an exact trace, then one can ask Print_Alignment to print an
+     ASCII representation of the alignment 'align' to the file 'file'.  Indent the display
+     by "indent" spaces and put "width" columns per line in the display.  Show "border"
+     characters of sequence on each side of the aligned region.  If upper is non-zero then
+     display bases in upper case.  If coord is greater than 0, then the positions of the
+     first character in A and B in the given row is displayed with a field width given by
+     coord's value.
+
+     Print_Reference is like Print_Alignment but rather than printing exaclty "width" columns
+     per segment, it prints "block" characters of the A sequence in each segment.  This results
+     in segments of different lengths, but is convenient when looking at two alignments involving
+     A as segments are guaranteed to cover the same interval of A in a segment.
+
+     Both Print routines return 1 if an error occurred (not enough memory), and 0 otherwise.
+
+     Flip_Alignment modifies align so the roles of A and B are reversed.  If full is off then
+     the trace is ignored, otherwise the trace must be to a full alignment trace and this trace
+     is also appropriately inverted.
+  */
+
+  void Alignment_Cartoon(FILE *file, Alignment *align, int indent, int coord);
+
+  int  Print_Alignment(FILE *file, Alignment *align, Work_Data *work,
+                       int indent, int width, int border, int upper, int coord);
+
+  int  Print_Reference(FILE *file, Alignment *align, Work_Data *work,
+                       int indent, int block, int border, int upper, int coord);
+
+  void Flip_Alignment(Alignment *align, int full);
+
+
+/*** OVERLAP ABSTRACTION:
+
+     Externally, between modules an Alignment is modeled by an "Overlap" record, which
+     (a) replaces the pointers to the two sequences with their ID's in the HITS data bases,
+     (b) does not contain the length of the 2 sequences (must fetch from DB), and
+     (c) contains its path as a subrecord rather than as a pointer (indeed, typically the
+     corresponding Alignment record points at the Overlap's path sub-record).  The trace pointer
+     is always to a sequence of trace points and can be either compressed (uint8) or
+     uncompressed (uint16).  One can read and write binary records of an "Overlap".
+***/
+
+typedef struct {
+  Path    path;         /* Path: begin- and end-point of alignment + diffs    */
+  uint32  flags;        /* Pipeline status and complementation flags          */
+  int     aread;        /* Id # of A sequence                                 */
+  int     bread;        /* Id # of B sequence                                 */
+} Overlap;
+
+
+  /* Read_Overlap reads the next Overlap record from stream 'input', not including the trace
+     (if any), and without modifying 'ovl's trace pointer.  Read_Trace reads the ensuing trace
+     into the memory pointed at by the trace field of 'ovl'.  It is assumed to be big enough to
+     accommodate the trace where each value take 'tbytes' bytes (1 if uint8 or 2 if uint16).
+
+     Write_Overlap write 'ovl' to stream 'output' followed by its trace vector (if any) that
+     occupies 'tbytes' bytes per value.  
+
+     Print_Overlap prints an ASCII version of the contents of 'ovl' to stream 'output'
+     where the trace occupes 'tbytes' per value and the print out is indented from the left
+     margin by 'indent' spaces.
+
+     Compress_TraceTo8 converts a trace fo 16-bit values to 8-bit values in place, and
+     Decompress_TraceTo16 does the reverse conversion.
+
+     Check_Trace_Points checks that the number of trace points is correct and that the sum
+     of the b-read displacements equals the b-read alignment interval, assuming the trace
+     spacing is 'tspace'.  It reports an error message if there is a problem and 'verbose'
+     is non-zero.  The 'ovl' came from the file names 'fname'.
+  */
+
+  int Read_Overlap(FILE *input, Overlap *ovl);
+  int Read_Trace(FILE *innput, Overlap *ovl, int tbytes);
+
+  void Write_Overlap(FILE *output, Overlap *ovl, int tbytes);
+  void Print_Overlap(FILE *output, Overlap *ovl, int tbytes, int indent);
+
+  void Compress_TraceTo8(Overlap *ovl);
+  void Decompress_TraceTo16(Overlap *ovl);
+
+  int  Check_Trace_Points(Overlap *ovl, int tspace, int verbose, char *fname);
+
+#endif // _A_MODULE
diff --git a/DAMASKER/datander.c b/DAMASKER/datander.c
new file mode 100644
index 0000000..fac27af
--- /dev/null
+++ b/DAMASKER/datander.c
@@ -0,0 +1,182 @@
+/*********************************************************************************************\
+ *
+ *  Find all local self-alignment between long, noisy DNA reads:
+ *    Compare sequences in each supplied blocks against themselves search for local alignments
+ *    of MIN_OVERLAP or more above the diagonal (A start coord > B start coord).  An output
+ *    stream of 'Overlap' records (see align.h) is written in binary to a set of files, one
+ *    per thread, each encoding a given found local alignment.  The -v option turns on a verbose
+ *    reporting mode that reports progress and gives statistics on each major stage.
+ *
+ *    The filter operates by looking for a pair of diagonal bands of width 2^'s' that contain
+ *    a collection of exact matching 'k'-mers between positions of a sequence, such that the total
+ *    number of bases covered by 'k'-mer hits is 'h'.  k cannot be larger than 15 in the
+ *    current implementation.
+ *
+ *    For each subject, say XXX, the program outputs a file containing LAs of the form
+ *    XXX.XXX.T#.las where # is the thread that detected and wrote out the collection of LAs.
+ *    For example, if NTHREAD in the program is 4, then 4 files are output for each subject block.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  March 27, 2016
+ *
+ *********************************************************************************************/
+ 
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <sys/param.h>
+#if defined(BSD)
+#include <sys/sysctl.h>
+#endif
+
+#include "DB.h"
+#include "tandem.h"
+
+static char *Usage[] =
+  { "[-v] [-k<int(12)>] [-w<int(4)>] [-h<int(35)>] [-T<int(4)>]",
+    "     [-e<double(.70)] [-l<int(500)>] [-s<int(100)>] <subject:db|dam> ...",
+  };
+
+int     VERBOSE;   //   Globally visible to filter.c
+int     MINOVER;
+
+static int read_DB(HITS_DB *block, char *name, int kmer)
+{ int i, isdam;
+
+  isdam = Open_DB(name,block);
+  if (isdam < 0)
+    exit (1);
+
+  Trim_DB(block);
+
+  if (block->cutoff < kmer)
+    { for (i = 0; i < block->nreads; i++)
+        if (block->reads[i].rlen < kmer)
+          { fprintf(stderr,"%s: Block %s contains reads < %dbp long !  Run DBsplit.\n",
+                           Prog_Name,name,kmer);
+            exit (1);
+          }
+    }
+
+  Read_All_Sequences(block,0);
+
+  return (isdam);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB    _bblock;
+  HITS_DB    *bblock = &_bblock;
+  char       *bfile;
+  char       *broot;
+  Align_Spec *settings;
+  int         isdam;
+
+  int    KMER_LEN;
+  int    BIN_SHIFT;
+  int    HIT_MIN;
+  double AVE_ERROR;
+  int    SPACING;
+  int    NTHREADS;
+
+  { int    i, j, k;
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("datander")
+
+    KMER_LEN  = 12;
+    HIT_MIN   = 35;
+    BIN_SHIFT = 4;
+    AVE_ERROR = .70;
+    SPACING   = 100;
+    MINOVER   = 500;    //   Globally visible to filter.c
+
+    NTHREADS  = 4;
+
+    j    = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("v")
+            break;
+          case 'k':
+            ARG_POSITIVE(KMER_LEN,"K-mer length")
+            if (KMER_LEN > 32)
+              { fprintf(stderr,"%s: K-mer length must be 32 or less\n",Prog_Name);
+                exit (1);
+              }
+            break;
+          case 'w':
+            ARG_POSITIVE(BIN_SHIFT,"Log of bin width")
+            break;
+          case 'h':
+            ARG_POSITIVE(HIT_MIN,"Hit threshold (in bp.s)")
+            break;
+          case 'e':
+            ARG_REAL(AVE_ERROR)
+            if (AVE_ERROR < .6 || AVE_ERROR >= 1.)
+              { fprintf(stderr,"%s: Average correlation must be in [.6,1.) (%g)\n",
+                               Prog_Name,AVE_ERROR);
+                exit (1);
+              }
+            break;
+          case 'l':
+            ARG_POSITIVE(MINOVER,"Minimum alignment length")
+            break;
+          case 's':
+            ARG_POSITIVE(SPACING,"Trace spacing")
+            break;
+          case 'T':
+            ARG_POSITIVE(NTHREADS,"Number of threads")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];   //  Globally declared in filter.h
+
+    if (argc <= 1)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        exit (1);
+      }
+  }
+
+  MINOVER *= 2;
+  if (Set_Filter_Params(KMER_LEN,BIN_SHIFT,HIT_MIN,NTHREADS))
+    { fprintf(stderr,"Illegal combination of filter parameters\n");
+      exit (1);
+    }
+
+  /* Compare each block against itself */
+
+  { int i;
+
+    broot = NULL;
+    for (i = 1; i < argc; i++)
+      { bfile = argv[i];
+        isdam = read_DB(bblock,bfile,KMER_LEN);
+        if (isdam)
+          broot = Root(bfile,".dam");
+        else
+          broot = Root(bfile,".db");
+
+        settings = New_Align_Spec( AVE_ERROR, SPACING, bblock->freq);
+
+        Match_Self(broot,bblock,settings);
+
+        Free_Align_Spec(settings);
+        Close_DB(bblock);
+      }
+  }
+
+  exit (0);
+}
diff --git a/DAMASKER/tandem.c b/DAMASKER/tandem.c
new file mode 100644
index 0000000..498f59f
--- /dev/null
+++ b/DAMASKER/tandem.c
@@ -0,0 +1,1364 @@
+/*******************************************************************************************
+ *
+ *  Adaption of the fast local alignment filter of "daligner" for finding alignments between
+ *     a read and itself above the diagonal.  Satellites create a "ladder" of these self alignments
+ *     that can be detected in order to recognize said repetitive sequences within the read.
+ *
+ *  Author :  Gene Myers
+ *  First  :  March 2016
+ *  Current:  March 27, 2016
+ *
+ ********************************************************************************************/
+
+//  A complete threaded code for the filter
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+#include <pthread.h>
+
+#include "DB.h"
+#include "align.h"
+#include "tandem.h"
+
+#define THREAD    pthread_t
+
+#define PANEL_SIZE     50000   //  Size to break up very long A-reads
+#define PANEL_OVERLAP  10000   //  Overlap of A-panels
+
+#define MATCH_CHUNK    100     //  Max initial number of hits between two reads
+#define TRACE_CHUNK  20000     //  Max initial trace points in hits between two reads
+
+#undef  TEST_LSORT
+#undef  TEST_KSORT
+#undef  TEST_PAIRS
+#undef  TEST_CSORT
+#define    HOW_MANY   3000   //  Print first HOW_MANY items for each of the TEST options above
+
+#undef  TEST_GATHER
+#undef  TEST_CONTAIN
+#undef  SHOW_OVERLAP          //  Show the cartoon
+#undef  SHOW_ALIGNMENT        //  Show the alignment
+#define   ALIGN_WIDTH    80   //     Parameters for alignment
+#define   ALIGN_INDENT   20
+#define   ALIGN_BORDER   10
+
+#ifdef SHOW_OVERLAP
+#define NOTHREAD
+#endif
+
+#ifdef TEST_GATHER
+#define NOTHREAD
+#endif
+
+#ifdef TEST_CONTAIN
+#define NOTHREAD
+#endif
+
+typedef struct
+  { uint64 p1;   //  The lower half
+    uint64 p2;
+  } Double;
+
+#if __ORDER_LITTLE_ENDIAN__ == __BYTE_ORDER__
+
+typedef struct
+  { uint64 code;
+    int    rpos;
+    int    read;
+  } KmerPos;
+
+#else
+
+typedef struct
+  { uint64 code;
+    int    read;
+    int    rpos;
+  } KmerPos;
+
+#endif
+
+/*******************************************************************************************
+ *
+ *  PARAMETER SETUP
+ *
+ ********************************************************************************************/
+
+static int Kmer;
+static int Hitmin;
+static int Binshift;
+
+static int    Kshift;         //  2*Kmer
+static uint64 Kmask;          //  4^Kmer-1
+
+static int NTHREADS;    //  Must be a power of 2
+static int NSHIFT;      //  log_2 NTHREADS
+
+int Set_Filter_Params(int kmer, int binshift, int hitmin, int nthreads)
+{ if (kmer <= 1)
+    return (1);
+
+  Kmer     = kmer;
+  Binshift = binshift;
+  Hitmin   = hitmin;
+
+  Kshift = 2*Kmer;
+  if (Kmer == 32)
+    Kmask = 0xffffffffffffffffllu;
+  else
+    Kmask = (0x1llu << Kshift) - 1;
+
+  NTHREADS = 1;
+  NSHIFT   = 0;
+  while (2*NTHREADS <= nthreads)
+    { NTHREADS *= 2;
+      NSHIFT   += 1;
+    }
+
+  return (0);
+}
+
+
+/*******************************************************************************************
+ *
+ *  LEXICOGRAPHIC SORT
+ *
+ ********************************************************************************************/
+
+#define BMER      4
+#define BSHIFT    8             //  = 2*BMER
+#define BPOWR   256             //  = 2^BSHIFT
+#define BMASK  0xffllu          //  = BPOWR-1
+
+static uint64  QMASK;           //  = BMASK << NSHIFT
+static int     LEX_shift;
+static int64   LEX_zsize;
+static int     LEX_last;
+static int     LEX_next;
+static Double *LEX_src;
+static Double *LEX_trg;
+
+typedef struct
+  { int64  beg;
+    int64  end;
+    int64  tptr[BPOWR];
+    int64 *sptr;
+  } Lex_Arg;
+
+static void *lex_thread(void *arg)
+{ Lex_Arg    *data  = (Lex_Arg *) arg;
+  int64      *sptr  = data->sptr;
+  int64      *tptr  = data->tptr;
+  int         shift = LEX_shift;   //  Must be a multiple of 8 in [0,120]
+  int        qshift = (LEX_next - LEX_shift) - NSHIFT;
+  int64       zsize = LEX_zsize;
+  Double     *src   = LEX_src;
+  Double     *trg   = LEX_trg;
+  int64       i, n, x;
+  uint64      c, b;
+
+  n = data->end;
+  if (shift >= 64)
+    { shift -= 64;
+      if (LEX_last)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p2;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p2;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((b >> qshift) & QMASK) + x/zsize] += 1;
+          }
+    }
+
+  else if ( ! LEX_last && LEX_next >= 64)   //  && LEX_shift < 64
+
+    { qshift = (LEX_next - 64) - NSHIFT;
+      if (qshift < 0)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((src[i].p2 << NSHIFT) & QMASK) + x/zsize] += 1;
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((src[i].p2 >> qshift) & QMASK) + x/zsize] += 1;
+          }
+    }
+
+  else // LEX_last || LEX_next < 64
+    if (LEX_last)
+      if (shift == 0)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            x = tptr[c&BMASK]++;
+            trg[x] = src[i];
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+          }
+    else
+      if (shift == 0)
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            x = tptr[c&BMASK]++;
+            trg[x] = src[i];
+            sptr[((c >> qshift) & QMASK) + x/zsize] += 1;
+          }
+      else
+        for (i = data->beg; i < n; i++)
+          { c = src[i].p1;
+            b = (c >> shift);
+            x = tptr[b&BMASK]++;
+            trg[x] = src[i];
+            sptr[((b >> qshift) & QMASK) + x/zsize] += 1;
+          }
+
+  return (NULL);
+}
+
+static Double *lex_sort(int bytes[16], Double *src, Double *trg, Lex_Arg *parmx)
+{ THREAD  threads[NTHREADS];
+
+  int64   len, x, y;
+  Double *xch;
+  int     i, j, k, z;
+  int     b, c, fb;
+
+  len       = parmx[NTHREADS-1].end;
+  LEX_zsize = (len-1)/NTHREADS + 1;
+  LEX_src   = src;
+  LEX_trg   = trg;
+  QMASK     = (BMASK << NSHIFT);
+
+  for (c = 0; c < 16; c++)
+    if (bytes[c])
+      break;
+  fb = c;
+  for (b = c; b < 16; b = c)
+    { for (c = b+1; c < 16; c++)
+        if (bytes[c])
+          break;
+      LEX_last  = (c >= 16);
+      LEX_shift = (b << 3);
+      LEX_next  = (c << 3);
+ 
+      if (b == fb)
+        { for (i = 0; i < NTHREADS; i++)
+            for (z = 0; z < NTHREADS*BPOWR; z++)
+              parmx[i].sptr[z] = 0;
+        }
+      else
+        { x = 0;
+          for (i = 0; i < NTHREADS; i++)
+            { parmx[i].beg = x;
+              x = LEX_zsize*(i+1);
+              if (x > len)
+                x = len;
+              parmx[i].end = x;
+              for (j = 0; j < BPOWR; j++)
+                parmx[i].tptr[j] = 0;
+            }
+          parmx[NTHREADS-1].end = len;
+
+          for (j = 0; j < BPOWR; j++)
+            { k = (j << NSHIFT);
+              for (z = 0; z < NTHREADS; z++)
+                for (i = 0; i < NTHREADS; i++)
+                  { parmx[i].tptr[j] += parmx[z].sptr[k+i];
+                    parmx[z].sptr[k+i] = 0;
+                  }
+            }
+        }
+
+      x = 0;
+      for (j = 0; j < BPOWR; j++)
+        for (i = 0; i < NTHREADS; i++)
+          { y = parmx[i].tptr[j];
+            parmx[i].tptr[j] = x;
+            x += y;
+          }
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_create(threads+i,NULL,lex_thread,parmx+i);
+
+      for (i = 0; i < NTHREADS; i++)
+        pthread_join(threads[i],NULL);
+
+      xch     = LEX_src;
+      LEX_src = LEX_trg;
+      LEX_trg = xch;
+
+#ifdef TEST_LSORT
+      printf("\nLSORT %d\n",LEX_shift);
+      if (LEX_shift >= 64)
+        { x = (1 << ((LEX_shift-64)+BSHIFT))-1;
+          for (i = 0; i < len; i++)
+            { printf("%6d: %8llx %8llx %8llx %8llx : %4llx",
+                     i,LEX_src[i].p2>>32,(LEX_src[i].p2)&0xffffffffll,LEX_src[i].p1>>32,
+                     LEX_src[i].p1&0xffffffffll,LEX_src[i].p2&x);
+              if (i > 0 && (LEX_src[i].p1 < LEX_src[i].p1 ||
+                             (LEX_src[i].p1 == LEX_src[i].p1 && 
+                             (LEX_src[i].p2 & x) < (LEX_src[i-1].p2 & x))))
+                printf(" OO");
+              printf("\n");
+            }
+        }
+      else
+        { x = (1 << (LEX_shift+BSHIFT))-1;
+          for (i = 0; i < len; i++)
+            { printf("%6d: %8llx %8llx %8llx %8llx : %4llx",
+                     i,LEX_src[i].p2>>32,(LEX_src[i].p2)&0xffffffffll,LEX_src[i].p1>>32,
+                     LEX_src[i].p1&0xffffffffll,LEX_src[i].p1&x);
+              if (i > 0 && (LEX_src[i].p1 & x) < (LEX_src[i-1].p1 & x))
+                printf(" OO");
+              printf("\n");
+            }
+        }
+#endif
+    }
+
+  return (LEX_src);
+}
+
+
+/*******************************************************************************************
+ *
+ *  INDEX BUILD
+ *
+ ********************************************************************************************/
+
+static HITS_DB    *TA_block;
+static KmerPos    *TA_list;
+
+typedef struct
+  { int    tnum;
+    int64 *kptr;
+  } Tuple_Arg;
+
+static void *tuple_thread(void *arg)
+{ Tuple_Arg  *data  = (Tuple_Arg *) arg;
+  int         tnum  = data->tnum;
+  int64      *kptr  = data->kptr;
+  KmerPos    *list  = TA_list;
+  int         i, m, n, x, p;
+  uint64      c;
+  char       *s;
+
+  c  = TA_block->nreads;
+  i  = (c * tnum) >> NSHIFT;
+  n  = TA_block->reads[i].boff;
+  s  = ((char *) (TA_block->bases)) + n;
+  n -= Kmer*i;
+
+  for (m = (c * (tnum+1)) >> NSHIFT; i < m; i++)
+    { c = p = 0;
+      for (x = 1; x < Kmer; x++)
+        c = (c << 2) | s[p++];
+      while ((x = s[p]) != 4)
+        { c = ((c << 2) | x) & Kmask;
+          list[n].read = i;
+          list[n].rpos = ++p;
+          list[n].code = c;
+          n += 1;
+          kptr[c & BMASK] += 1;
+        }
+      s += (p+1);
+    }
+
+  return (NULL);
+}
+
+static KmerPos *Sort_Kmers(HITS_DB *block, int *len, KmerPos **buffer)
+{ THREAD    threads[NTHREADS];
+  Tuple_Arg parmt[NTHREADS];
+  Lex_Arg   parmx[NTHREADS];
+  int       mersort[16];
+
+  KmerPos  *src, *trg, *rez;
+  int       kmers, nreads;
+  int       i, j, x;
+
+  for (i = 0; i < NTHREADS; i++)
+    parmx[i].sptr = (int64 *) alloca(NTHREADS*BPOWR*sizeof(int64));
+
+  for (i = 0; i < 16; i++)
+    mersort[i] = 0;
+  for (i = 0; i < Kshift; i += 8)
+    mersort[i>>3] = 1;
+
+  nreads = block->nreads;
+  kmers  = block->reads[nreads].boff - Kmer * nreads;
+
+  if (kmers <= 0)
+    goto no_mers;
+
+  if (((Kshift-1)/BSHIFT) & 0x1)
+    { trg = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+1),"Allocating Sort_Kmers vectors");
+      src = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+1),"Allocating Sort_Kmers vectors");
+    }
+  else
+    { src = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+1),"Allocating Sort_Kmers vectors");
+      trg = (KmerPos *) Malloc(sizeof(KmerPos)*(kmers+1),"Allocating Sort_Kmers vectors");
+    }
+  if (src == NULL || trg == NULL)
+    exit (1);
+
+  if (VERBOSE)
+    { printf("\n   Kmer count = ");
+      Print_Number((int64) kmers,0,stdout);
+      printf("\n   Using %.2fGb of space\n",(1. * kmers) / 33554432);
+      fflush(stdout);
+    }
+
+  TA_block = block;
+  TA_list  = src;
+
+  for (i = 0; i < NTHREADS; i++)
+    { parmt[i].tnum = i;
+      parmt[i].kptr = parmx[i].tptr;
+      for (j = 0; j < BPOWR; j++)
+        parmt[i].kptr[j] = 0;
+    }
+
+  for (i = 0; i < NTHREADS; i++)
+    pthread_create(threads+i,NULL,tuple_thread,parmt+i);
+
+  for (i = 0; i < NTHREADS; i++)
+    pthread_join(threads[i],NULL);
+
+  x = 0;
+  for (i = 0; i < NTHREADS; i++)
+    { parmx[i].beg = x;
+      j = (int) ((((int64) nreads) * (i+1)) >> NSHIFT);
+      parmx[i].end = x = block->reads[j].boff - j*Kmer;
+    }
+
+  rez = (KmerPos *) lex_sort(mersort,(Double *) src,(Double *) trg,parmx);
+
+  if (rez[kmers-1].code == 0xffffffffffffffffllu)
+    rez[kmers].code = 0;
+  else
+    rez[kmers].code = 0xffffffffffffffffllu;
+ 
+  if (src != rez)
+    *buffer = src; 
+  else
+    *buffer = trg; 
+
+#ifdef TEST_KSORT
+  { int i;
+
+    printf("\nKMER SORT:\n");
+    for (i = 0; i < HOW_MANY && i < kmers; i++)
+      { KmerPos *c = rez+i;
+        printf(" %5d / %5d / %10lld\n",c->read,c->rpos,c->code);
+      }
+    fflush(stdout);
+  }
+#endif
+
+  if (VERBOSE)
+    { printf("   Index occupies %.2fGb\n",(1. * kmers) / 67108864);
+      fflush(stdout);
+    }
+
+  if (kmers <= 0)
+    { free(rez);
+      goto no_mers;
+    }
+
+  *len = kmers;
+  return (rez);
+
+no_mers:
+  *len = 0;
+  return (NULL);
+}
+
+
+/*******************************************************************************************
+ *
+ *  FILTER MATCH
+ *
+ ********************************************************************************************/
+
+  //  After the initial sort, all equal K-tuples are contiguous, and for a given K-tuple read,rpos
+  //    is in sorted order because the sort is stable.  For a given read, record the distance between
+  //    consecutive positions with the same K-mer in the .code field.  Afterwords, the array is
+  //    stably resorted on read,rpos so that for each read one has effectively a "linked list" of
+  //    positions with equal K-mers.
+
+static KmerPos  *MG_alist;
+
+typedef struct
+  { int    abeg, aend;
+    int64 *kptr;
+  } Merge_Arg;
+
+static void *count_thread(void *arg)
+{ Merge_Arg  *data  = (Merge_Arg *) arg;
+  int64      *kptr  = data->kptr;
+  KmerPos    *asort = MG_alist;
+  int         aend  = data->aend;
+
+  uint64 ca, da;
+  int    ia;
+  int    ar, nr;
+  int    ap, np;
+
+  ia = data->abeg;
+  da = asort[ia].code;
+  while (ia < aend)
+    { ca = da;
+      ar = asort[ia].read;
+      ap = asort[ia].rpos;
+      kptr[ap & BMASK] += 1;
+      while ((da = asort[++ia].code) == ca)
+        { np = asort[ia].rpos;
+          if ((nr = asort[ia].read) == ar)
+            asort[ia].code = np - ap;
+          else
+            { asort[ia].code = 0;
+              ar = nr;
+            }
+          ap = np;
+          kptr[ap & BMASK] += 1;
+        }
+      asort[ia].code = 0;
+    }
+            
+  return (NULL);
+}
+
+  //  Report threads: using the linked lists of consereved K-mers find likely seeds and then check
+  //    for alignments as per "daligner".
+
+static HITS_DB    *MR_ablock;
+static Align_Spec *MR_spec;
+static int         MR_tspace;
+
+typedef struct
+  { uint64   max;
+    uint64   top;
+    uint16  *trace;
+  } Trace_Buffer;
+
+  //  Determine if the minimum B-distance between the overlapping trace points of jpath and kpath
+  //    Return this minimum and also the A-coordinate of a trace point where it is acheived.
+
+static int Entwine(Path *jpath, Path *kpath, Trace_Buffer *tbuf, int *where)
+{ int   ac, b2, y2, ae;
+  int   i, j, k;
+  int   num, den, min;
+#ifdef SEE_ENTWINE
+  int   strt, iflare, oflare;
+#endif
+
+  uint16 *ktrace = tbuf->trace + (uint64) (kpath->trace);
+  uint16 *jtrace = tbuf->trace + (uint64) (jpath->trace);
+
+  min   = 10000;
+  num   = 0;
+  den   = 0;
+
+#ifdef SEE_ENTWINE
+  strt = 1;
+  printf("\n");
+#endif
+
+  y2 = jpath->bbpos;
+  j  = jpath->abpos/MR_tspace;
+
+  b2 = kpath->bbpos;
+  k  = kpath->abpos/MR_tspace;
+
+  if (jpath->abpos == kpath->abpos)
+    { min = abs(y2-b2);
+      if (min == 0)
+        *where = kpath->abpos;
+    }
+
+  if (j < k)
+    { ac = k*MR_tspace;
+
+      j = 1 + 2*(k-j);
+      k = 1;
+
+      for (i = 1; i < j; i += 2)
+        y2 += jtrace[i];
+    }
+  else
+    { ac = j*MR_tspace;
+
+      k = 1 + 2*(j-k);
+      j = 1;
+
+      for (i = 1; i < k; i += 2)
+        b2 += ktrace[i];
+    }
+
+  ae = jpath->aepos;
+  if (ae > kpath->aepos)
+    ae = kpath->aepos;
+
+  while (1)
+    { ac += MR_tspace;
+      if (ac >= ae)
+        break;
+      y2 += jtrace[j];
+      b2 += ktrace[k];
+      j += 2;
+      k += 2;
+
+#ifdef SEE_ENTWINE
+      printf("   @ %5d : %5d %5d = %4d\n",ac,y2,b2,abs(b2-y2));
+#endif
+
+      i = abs(y2-b2);
+      if (i <= min)
+        { min = i;
+          if (i == 0)
+            *where = ac;
+        }
+      num += i;
+      den += 1;
+#ifdef SEE_ENTWINE
+      if (strt)
+        { strt   = 0;
+          iflare = i;
+        }
+      oflare = i;
+#endif
+    }
+
+  if (jpath->aepos == kpath->aepos)
+    { i = abs(y2-b2);
+      if (i <= min)
+        { min = i;
+          if (i == 0)
+            *where = kpath->aepos;
+        }
+    }
+
+#ifdef SEE_ENTWINE
+  if (den == 0)
+    printf("Nothing\n");
+  else
+    printf("MINIM = %d AVERAGE = %d  IFLARE = %d  OFLARE = %d\n",min,num/den,iflare,oflare);
+#endif
+
+  if (den == 0)
+    return (-1);
+  else
+    return (min);
+}
+
+  //  Produce the concatentation of path1 and path2 where they are known to meet at
+  //    the trace point with coordinate ap. Place this result in a big growing buffer,
+  //    that gets reset when fusion is called with path1 = NULL
+
+static void Fusion(Path *path1, int ap, Path *path2, Trace_Buffer *tbuf)
+{ int     k, k1, k2;
+  int     len, diff;
+  uint16 *trace;
+
+  k1 = 2 * ((ap/MR_tspace) - (path1->abpos/MR_tspace));
+  k2 = 2 * ((ap/MR_tspace) - (path2->abpos/MR_tspace));
+
+  len = k1+(path2->tlen-k2);
+
+  if (tbuf->top + len >= tbuf->max)
+    { tbuf->max = 1.2*(tbuf->top+len) + 1000;
+      tbuf->trace = (uint16 *) Realloc(tbuf->trace,sizeof(uint16)*tbuf->max,"Allocating paths");
+      if (tbuf->trace == NULL)
+        exit (1);
+    }
+
+  trace = tbuf->trace + tbuf->top;
+  tbuf->top += len;
+
+  diff = 0;
+  len  = 0;
+  if (k1 > 0)
+    { uint16 *t = tbuf->trace + (uint64) (path1->trace);
+      for (k = 0; k < k1; k += 2)
+        { trace[len++] = t[k];
+          trace[len++] = t[k+1];
+          diff += t[k];
+        }
+    }
+  if (k2 < path2->tlen)
+    { uint16 *t = tbuf->trace + (uint64) (path2->trace);
+      for (k = k2; k < path2->tlen; k += 2)
+        { trace[len++] = t[k];
+          trace[len++] = t[k+1];
+          diff += t[k];
+        }
+    }
+
+  path1->aepos = path2->aepos;
+  path1->bepos = path2->bepos;
+  path1->diffs = diff;
+  path1->trace = (void *) (trace - tbuf->trace);
+  path1->tlen  = len;
+}
+
+  //  Given all the LA's for a given read in amatch[0..novls-1], merge any overlapping LA's and
+  //    remove any redundant ones.
+
+static int Handle_Redundancies(Path *amatch, int novls, Trace_Buffer *tbuf)
+{ Path *jpath, *kpath;
+  int   j, k, no;
+  int   dist, awhen = 0;
+
+#ifdef TEST_CONTAIN
+  for (j = 0; j < novls; j++)
+    printf("  %3d: [%5d,%5d] x [%5d,%5d]\n",j,amatch[j].abpos,amatch[j].aepos,
+                                              amatch[j].bbpos,amatch[j].bepos);
+#endif
+
+  for (j = 1; j < novls; j++)
+    { jpath = amatch+j;
+      for (k = j-1; k >= 0; k--)
+        { kpath = amatch+k;
+
+          if (kpath->abpos < 0)
+            continue;
+
+          if (jpath->abpos < kpath->abpos)
+
+            { if (kpath->abpos <= jpath->aepos && kpath->bbpos <= jpath->bepos)
+                { dist = Entwine(jpath,kpath,tbuf,&awhen);
+                  if (dist == 0)
+                    { if (kpath->aepos > jpath->aepos)
+                        { Fusion(jpath,awhen,kpath,tbuf);
+#ifdef TEST_CONTAIN
+                          printf("  Really 3");
+#endif
+                          k = j;
+                        }
+                      kpath->abpos = -1;
+#ifdef TEST_CONTAIN
+                      printf("  Fuse! A %d %d\n",j,k);
+#endif
+                    }
+                }
+            }
+
+          else // kpath->abpos <= jpath->abpos
+
+            { if (jpath->abpos <= kpath->aepos && jpath->bbpos <= kpath->bepos)
+                { dist = Entwine(kpath,jpath,tbuf,&awhen);
+                  if (dist == 0)
+                    { if (kpath->abpos == jpath->abpos)
+                        { if (kpath->aepos > jpath->aepos)
+                            *jpath = *kpath;
+                        }
+                      else if (jpath->aepos > kpath->aepos)
+                        { Fusion(kpath,awhen,jpath,tbuf);
+                          *jpath = *kpath;
+#ifdef TEST_CONTAIN
+                          printf("  Really 6");
+#endif
+                          k = j;
+                        }
+                      else
+                        *jpath = *kpath;
+                      kpath->abpos = -1;
+#ifdef TEST_CONTAIN
+                      printf("  Fuse! B %d %d\n",j,k);
+#endif
+                    }
+                }
+            }
+        }
+    }
+
+  no = 0;
+  for (j = 0; j < novls; j++)
+    if (amatch[j].abpos >= 0)
+      amatch[no++] = amatch[j];
+  novls = no;
+
+#ifdef TEST_CONTAIN
+  for (j = 0; j < novls; j++)
+    printf("  %3d: [%5d,%5d] x [%5d,%5d]\n",j,amatch[j].abpos,amatch[j].aepos,
+                                              amatch[j].bbpos,amatch[j].bepos);
+#endif
+
+  return (novls);
+}
+
+  //  Determine the range of diagonal bins containing trace points of path
+
+void Diagonal_Span(Path *path, int *mind, int *maxd)
+{ uint16 *points;
+  int     i, tlen;
+  int     dd, low, hgh;
+
+  points = path->trace;
+  tlen   = path->tlen;
+
+  dd = path->abpos - path->bbpos;
+  low = hgh = dd;
+
+  dd = path->aepos - path->bepos;
+  if (dd < low)
+    low = dd;
+  else if (dd > hgh)
+    hgh = dd;
+
+  dd = (path->abpos/MR_tspace)*MR_tspace - path->bbpos;
+  tlen -= 2;
+  for (i = 1; i < tlen; i += 2)
+    { dd += MR_tspace - points[i];
+      if (dd < low)
+        low = dd;
+      else if (dd > hgh)
+        hgh = dd;
+    }
+
+  *mind = (low >> Binshift)-1;
+  *maxd = (hgh >> Binshift)+1;
+}
+
+typedef struct
+  { int64       beg, end;
+    int        *score;
+    int        *lastp;
+    int        *lasta;
+    Work_Data  *work;
+    FILE       *ofile;
+    int64       nfilt;
+    int64       ncheck;
+  } Report_Arg;
+
+static void *report_thread(void *arg)
+{ Report_Arg  *data   = (Report_Arg *) arg;
+
+  HITS_READ   *aread  = MR_ablock->reads;
+  KmerPos     *asort  = MG_alist;
+
+  int         *score  = data->score;
+  int         *scorp  = data->score + 1;
+  int         *scorm  = data->score - 1;
+  int         *lastp  = data->lastp;
+  int         *lasta  = data->lasta;
+  int          maxdiag = ( MR_ablock->maxlen >> Binshift);
+  int          mindiag = (-MR_ablock->maxlen >> Binshift);
+
+  FILE        *ofile  = data->ofile;
+
+  char        *aseq   = (char *) (MR_ablock->bases);
+  Work_Data   *work   = data->work;
+  int          afirst = MR_ablock->tfirst;
+
+  Overlap     _ovla, *ovla = &_ovla;
+  Alignment   _align, *align = &_align;
+  Path        *apath = &(ovla->path);
+  int64        nfilt = 0;
+  int64        ahits = 0;
+  int          small, tbytes;
+
+  int    novla;
+  int    AOmax;
+  Path  *amatch;
+
+  Trace_Buffer _tbuf, *tbuf = &_tbuf;
+
+  int      ar, aend;
+  KmerPos *aoff;
+
+  align->flags = ovla->flags = 0;
+  align->path  = apath;
+
+  if (MR_tspace <= TRACE_XOVR)
+    { small  = 1;
+      tbytes = sizeof(uint8);
+    }
+  else
+    { small  = 0;
+      tbytes = sizeof(uint16);
+    }
+
+  AOmax  = MATCH_CHUNK;
+  amatch = Malloc(sizeof(Path)*AOmax,"Allocating match vector");
+
+  tbuf->max   = 2*TRACE_CHUNK;
+  tbuf->trace = Malloc(sizeof(short)*tbuf->max,"Allocating trace vector");
+
+  if (amatch == NULL || tbuf->trace == NULL)
+    exit (1);
+
+  fwrite(&ahits,sizeof(int64),1,ofile);
+  fwrite(&MR_tspace,sizeof(int),1,ofile);
+
+#ifdef TEST_GATHER
+  printf("\nNEW THREAD %5d(%5lld)-%5d(%5lld)\n",asort[data->beg].read,data->beg,
+                                                asort[data->end-1].read,data->end);
+  fflush(stdout);
+#endif
+
+  aoff = asort + (data->beg - Kmer);
+  aend = asort[data->end-1].read;
+  for (ar = asort[data->beg].read; ar < aend; ar++)
+    { int alen, amarkb, amarke;
+      int apos, diag;
+      int setaln;
+
+#ifdef TEST_GATHER
+      printf("Read %5d\n",ar);
+      fflush(stdout);
+#endif
+      setaln = 1;
+      novla  = 0;
+      tbuf->top = 0;
+
+      alen   = aread[ar].rlen;
+      amarkb = Kmer;
+      amarke = PANEL_SIZE;
+      if (amarke >= alen)
+        amarke = alen+1;
+      while (1)
+        {
+          // Accumulate diagonal scores
+
+          for (apos = amarkb; apos < amarke; apos++)
+            { diag = aoff[apos].code;
+              if (diag == 0) continue;
+              diag >>= Binshift;
+              if (apos - lastp[diag] >= Kmer)
+                score[diag] += Kmer;
+              else
+                score[diag] += apos - lastp[diag];
+              lastp[diag] = apos;
+            }
+
+          // Examine diagonal scores for hits to check out
+
+          for (apos = amarkb; apos < amarke; apos++)
+            { diag = aoff[apos].code;
+              if (diag == 0) continue;
+              diag >>= Binshift;
+              if (apos > lasta[diag] &&
+                  (score[diag] + scorp[diag] >= Hitmin || score[diag] + scorm[diag] >= Hitmin))
+                { int bpos;
+
+                  bpos = apos - aoff[apos].code;
+                  if (setaln)
+                    { setaln = 0;
+                      align->aseq = align->bseq = aseq + aread[ar].boff;
+                      align->alen = align->blen = alen;
+                      ovla->aread = ovla->bread = ar + afirst;
+                    }
+#ifdef TEST_GATHER
+                  if (scorm[diag] > scorp[diag])
+                    printf("  %5d.. x %5d.. %5d (%3d)",
+                           bpos,apos,apos-bpos,score[diag]+scorm[diag]);
+                  else
+                    printf("  %5d.. x %5d.. %5d (%3d)",
+                           bpos,apos,apos-bpos,score[diag]+scorp[diag]);
+                  fflush(stdout);
+#endif
+
+                  nfilt += 1;
+
+                  Local_Alignment(align,work,MR_spec,apos-bpos,apos-bpos,apos+bpos,-1,-1);
+
+                  { int low, hgh, ae;
+
+                    Diagonal_Span(apath,&low,&hgh);
+                    if (diag < low)
+                      low = diag;
+                    else if (diag > hgh)
+                      hgh = diag;
+                    ae = apath->aepos;
+                    for (diag = low; diag <= hgh; diag++)
+                      if (ae > lasta[diag])
+                        lasta[diag] = ae;
+#ifdef TEST_GATHER
+                    printf(" %d - %d @ %d",low,hgh,apath->aepos);
+#endif
+                  }
+
+                  if ((apath->aepos-apath->abpos) + (apath->bepos-apath->bbpos) >= MINOVER)
+                    { if (novla >= AOmax)
+                        { AOmax = 1.2*novla + MATCH_CHUNK;
+                          amatch = Realloc(amatch,sizeof(Path)*AOmax,
+                                           "Reallocating match vector");
+                          if (amatch == NULL)
+                            exit (1);
+                        }
+                      if (tbuf->top + apath->tlen > tbuf->max)
+                        { tbuf->max = 1.2*(tbuf->top+apath->tlen) + TRACE_CHUNK;
+                          tbuf->trace = Realloc(tbuf->trace,sizeof(short)*tbuf->max,
+                                                "Reallocating trace vector");
+                          if (tbuf->trace == NULL)
+                            exit (1);
+                        }
+                      amatch[novla] = *apath;
+                      amatch[novla].trace = (void *) (tbuf->top);
+                      memcpy(tbuf->trace+tbuf->top,apath->trace,sizeof(short)*apath->tlen);
+                      novla += 1;
+                      tbuf->top += apath->tlen;
+
+#ifdef TEST_GATHER
+                      printf("  [%5d,%5d] x [%5d,%5d] = %4d",
+                             apath->abpos,apath->aepos,apath->bbpos,apath->bepos,apath->diffs);
+#endif
+#ifdef SHOW_OVERLAP
+                      printf("\n\n                    %d(%d) vs %d(%d)\n\n",
+                             ovla->aread,ovla->alen,ovla->bread,ovla->blen);
+                      Print_ACartoon(stdout,align,ALIGN_INDENT);
+#ifdef SHOW_ALIGNMENT
+                      Compute_Trace_ALL(align,work);
+                      printf("\n                      Diff = %d\n",align->path->diffs);
+                      Print_Alignment(stdout,align,work,
+                                      ALIGN_INDENT,ALIGN_WIDTH,ALIGN_BORDER,0,5);
+#endif
+#endif // SHOW_OVERLAP
+                    }
+#ifdef TEST_GATHER
+                  else
+                    printf("  No alignment %d",
+                            ((apath->aepos-apath->abpos) + (apath->bepos-apath->bbpos))/2);
+                  printf("\n");
+#endif
+                }
+            }
+
+          // Clear diagonal scores
+
+          for (apos = amarkb; apos < amarke; apos++)
+            { diag = aoff[apos].code;
+              if (diag == 0) continue;
+              diag >>= Binshift;
+              score[diag] = lastp[diag] = 0;
+            }
+
+          if (amarke > alen) break;
+
+          amarkb = amarke - PANEL_OVERLAP;
+          amarke = amarkb + PANEL_SIZE;
+          if (amarke > alen)
+            amarke = alen+1;
+        }
+
+      // Clear diagonal last positions
+
+      for (apos = Kmer; apos <= alen; apos++)
+        { int d;
+
+          diag = aoff[apos].code;
+          if (diag == 0) continue;
+          diag >>= Binshift;
+          for (d = diag; d <= maxdiag; d++)
+            if (lasta[d] == 0)
+              break;
+            else
+              lasta[d] = 0;
+          for (d = diag-1; d >= mindiag; d--)
+            if (lasta[d] == 0)
+              break;
+            else
+              lasta[d] = 0;
+        }
+
+      // Merge overlapping alignments and remove redundant ones
+
+      { int i;
+
+#ifdef TEST_CONTAIN
+        if (novla > 1)
+          printf("\n%5d vs %5d:\n",ar,ar);
+#endif
+
+        if (novla > 1)
+          novla = Handle_Redundancies(amatch,novla,tbuf);
+
+        for (i = 0; i < novla; i++)
+          { ovla->path = amatch[i];
+            ovla->path.trace = tbuf->trace + (uint64) (ovla->path.trace);
+            if (small)
+              Compress_TraceTo8(ovla);
+            Write_Overlap(ofile,ovla,tbytes);
+          }
+        ahits += novla;
+      }
+
+      aoff += alen - (Kmer-1);
+    }
+
+  free(tbuf->trace);
+  free(amatch);
+
+  data->nfilt  = nfilt;
+  data->ncheck = ahits;
+
+  rewind(ofile);
+  fwrite(&ahits,sizeof(int64),1,ofile);
+  fclose(ofile);
+
+  return (NULL);
+}
+
+
+/*******************************************************************************************
+ *
+ *  THE ALGORITHM
+ *
+ ********************************************************************************************/
+
+void Match_Self(char *aname, HITS_DB *ablock, Align_Spec *aspec)
+{ THREAD     threads[NTHREADS];
+  Merge_Arg  parmm[NTHREADS];
+  Lex_Arg    parmx[NTHREADS];
+  Report_Arg parmr[NTHREADS];
+  int        pairsort[16];
+
+  int64     nfilt, ncheck;
+
+  KmerPos  *asort, *osort;
+  int       alen;
+  int64     atot;
+
+  //  Setup 
+
+  atot = ablock->totlen;
+
+  nfilt = ncheck = 0;
+
+  { int64 powr;
+    int   i, nbyte;
+
+    for (i = 0; i < NTHREADS; i++)
+      parmx[i].sptr = (int64 *) alloca(NTHREADS*BPOWR*sizeof(int64));
+
+    for (i = 0; i < 16; i++)
+      pairsort[i] = 0;
+
+    powr = 1;
+    for (nbyte = 0; powr < ablock->maxlen; nbyte += 1)
+      powr <<= 8;
+    for (i = 8; i < 8+nbyte; i++)
+      pairsort[i] = 1;
+
+    powr = 1;
+    for (nbyte = 0; powr < ablock->nreads; nbyte += 1)
+      powr <<= 8;
+    for (i = 12; i < 12+nbyte; i++)
+      pairsort[i] = 1;
+  }
+
+  //  Build K-mer sorted index of ablock
+
+  if (VERBOSE)
+    printf("\nIndexing %s\n",aname);
+
+  osort = NULL;   //  Just to shut up dumb compilers
+  asort = Sort_Kmers(ablock,&alen,&osort);
+
+  if (VERBOSE)
+    printf("\nComparing %s to itself\n",aname);
+
+  if (alen == 0)
+    goto zerowork;
+
+  //  Determine equal K-mer links
+
+  { int    i, p;
+    uint64 c;
+
+    parmm[0].abeg = 0;
+    for (i = 1; i < NTHREADS; i++)
+      { p = (int) ((((int64) alen) * i) >> NSHIFT);
+        if (p > 0)
+          { c = asort[p-1].code;
+            while (asort[p].code == c)
+              p += 1;
+          }
+        parmm[i].abeg = parmm[i-1].aend = p;
+      }
+    parmm[NTHREADS-1].aend = alen;
+
+    for (i = 0; i < NTHREADS; i++)
+      { parmm[i].kptr = parmx[i].tptr;
+        for (p = 0; p < BPOWR; p++)
+          parmm[i].kptr[p] = 0;
+      }
+
+    MG_alist = asort;
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,count_thread,parmm+i);
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_join(threads[i],NULL);
+
+#ifdef TEST_PAIRS
+    printf("\nCROSS SORT %d:\n",alen);
+    for (i = 0; i < HOW_MANY && i <= alen; i++)
+      { KmerPos *c = asort+i;
+        printf(" %5d / %5d / %10lld\n",c->read,c->rpos,c->code);
+        fflush(stdout);
+      }
+#endif
+  }
+
+  //  Resort the list on read,rpos
+
+  { int      i;
+    KmerPos *rez;
+
+    for (i = 0; i < NTHREADS; i++)
+      { parmx[i].beg = parmm[i].abeg;
+        parmx[i].end = parmm[i].aend;
+      }
+
+    rez = (KmerPos *) lex_sort(pairsort,(Double *) asort,(Double *) osort,parmx);
+    if (rez != asort)
+      { osort = asort;
+        asort = rez;
+      }
+
+#ifdef TEST_CSORT
+    printf("\nCROSS SORT %d:\n",alen);
+    for (i = 0; i < HOW_MANY && i <= alen; i++)
+      { KmerPos *c = asort+i;
+        printf(" %5d / %5d / %10lld\n",c->read,c->rpos,c->code);
+        fflush(stdout);
+      }
+#endif
+  }
+
+  //  Apply the diagonal filter and find local alignments about seed hits
+
+  { int    i, w;
+    int64  p;
+    int    ar;
+    int   *counters;
+
+    MG_alist  = asort;
+    MR_ablock = ablock;
+    MR_spec   = aspec;
+    MR_tspace = Trace_Spacing(aspec);
+
+    parmr[0].beg = 0;
+    for (i = 1; i < NTHREADS; i++)
+      { p = (alen * i) >> NSHIFT;
+        if (p > 0)
+          { ar = asort[p-1].read;
+            while ((asort[p].read) == ar)
+              p += 1;
+          }
+        parmr[i].beg = parmr[i-1].end = p;
+      }
+    parmr[NTHREADS-1].end = alen;
+
+    w = ((ablock->maxlen >> Binshift) - ((-ablock->maxlen) >> Binshift)) + 1;
+    counters = (int *) Malloc(NTHREADS*3*w*sizeof(int),"Allocating diagonal buckets");
+    if (counters == NULL)
+      exit (1);
+
+    for (i = 0; i < 3*w*NTHREADS; i++)
+      counters[i] = 0;
+    for (i = 0; i < NTHREADS; i++)
+      { if (i == 0)
+          parmr[i].score = counters - ((-ablock->maxlen) >> Binshift);
+        else
+          parmr[i].score = parmr[i-1].lasta + w;
+        parmr[i].lastp = parmr[i].score + w;
+        parmr[i].lasta = parmr[i].lastp + w;
+        parmr[i].work  = New_Work_Data();
+
+        parmr[i].ofile =
+             Fopen(Catenate("","",aname,Numbered_Suffix(".T",i,".las")),"w");
+        if (parmr[i].ofile == NULL)
+          exit (1);
+      }
+
+#ifdef NOTHREAD
+
+    for (i = 0; i < NTHREADS; i++)
+      report_thread(parmr+i);
+
+#else
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_create(threads+i,NULL,report_thread,parmr+i);
+
+    for (i = 0; i < NTHREADS; i++)
+      pthread_join(threads[i],NULL);
+
+#endif
+
+    if (VERBOSE)
+      for (i = 0; i < NTHREADS; i++)
+        { nfilt  += parmr[i].nfilt;
+          ncheck += parmr[i].ncheck;
+        }
+
+    for (i = 0; i < NTHREADS; i++)
+      Free_Work_Data(parmr[i].work);
+    free(counters);
+  }
+
+  //  Finish up
+
+  goto epilogue;
+
+zerowork:
+  { FILE *ofile;
+    int   i;
+
+    nfilt  = 0;
+    for (i = 0; i < NTHREADS; i++)
+      { ofile = Fopen(Catenate("","",aname,Numbered_Suffix(".T",i,".las")),"w");
+        fwrite(&nfilt,sizeof(int64),1,ofile);
+        fwrite(&MR_tspace,sizeof(int),1,ofile);
+        fclose(ofile);
+      }
+  }
+
+epilogue:
+
+  free(asort);
+  free(osort);
+
+  if (VERBOSE)
+    { int width;
+
+      if (nfilt <= 0)
+        width = 1;
+      else
+        width = ((int) log10((double) nfilt)) + 1;
+      width += (width-1)/3;
+
+      printf("\n     ");
+      Print_Number(nfilt,width,stdout);
+      printf(" seed hits (%e of matrix)\n     ",(1.*nfilt/atot)/atot);
+      Print_Number(ncheck,width,stdout);
+      printf(" confirmed hits (%e of matrix)\n",(1.*ncheck/atot)/atot);
+      fflush(stdout);
+    }
+}
diff --git a/DAMASKER/tandem.h b/DAMASKER/tandem.h
new file mode 100644
index 0000000..578c663
--- /dev/null
+++ b/DAMASKER/tandem.h
@@ -0,0 +1,24 @@
+/*******************************************************************************************
+ *
+ *  Filter interface for the datandem.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  March 2016
+ *
+ ********************************************************************************************/
+
+#ifndef _TANDEM
+
+#define _TANDEM
+
+#include "DB.h"
+#include "align.h"
+
+extern int    VERBOSE;
+extern int    MINOVER;
+
+int Set_Filter_Params(int kmer, int binshift, int hitmin, int nthreads); 
+
+void Match_Self(char *aname, HITS_DB *ablock, Align_Spec *settings);
+
+#endif
diff --git a/DAZZ_DB/Catrack.c b/DAZZ_DB/Catrack.c
new file mode 100644
index 0000000..308a11a
--- /dev/null
+++ b/DAZZ_DB/Catrack.c
@@ -0,0 +1,259 @@
+/********************************************************************************************
+ *
+ *  Concate in block order all "block tracks" <DB>.<track>.# into a single track
+ *    <DB>.<track>
+ *
+ *  Author:  Gene Myers
+ *  Date  :  June 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-v] <path:db|dam> <track:name>";
+
+int main(int argc, char *argv[])
+{ char *prefix;
+  FILE *aout, *dout;
+  int   VERBOSE;
+
+  //  Process arguments
+
+  { int   i, j, k;
+    int   flags[128];
+
+    ARG_INIT("Catrack")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("v") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (argc != 3)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  { char *pwd, *root;
+    int   plen;
+
+    plen = strlen(argv[1]);
+    if (strcmp(argv[1]+(plen-3),".dam") == 0)
+      root = Root(argv[1],".dam");
+    else
+      root = Root(argv[1],".db");
+    pwd = PathTo(argv[1]);
+    prefix = Strdup(Catenate(pwd,PATHSEP,root,"."),"Allocating track name");
+    free(pwd);
+    free(root);
+
+    aout = fopen(Catenate(prefix,argv[2],".","anno"),"r");
+    if (aout != NULL)
+      { fprintf(stderr,"%s: Track file %s%s.anno already exists!\n",Prog_Name,prefix,argv[2]);
+        fclose(aout);
+        exit (1);
+      }
+
+    dout = fopen(Catenate(prefix,argv[2],".","data"),"r");
+    if (dout != NULL)
+      { fprintf(stderr,"%s: Track file %s%s.data already exists!\n",Prog_Name,prefix,argv[2]);
+        fclose(dout);
+        exit (1);
+      }
+
+    aout = Fopen(Catenate(prefix,argv[2],".","anno"),"w");
+    if (aout == NULL)
+      exit (1);
+    dout = NULL;
+  }
+ 
+  { int   tracktot, tracksiz;
+    int64 trackoff;
+    int   nfiles;
+    char  data[1024];
+    void *anno;
+
+    anno     = NULL;
+    trackoff = 0;
+    tracktot = tracksiz = 0;
+    fwrite(&tracktot,sizeof(int),1,aout);
+    fwrite(&tracksiz,sizeof(int),1,aout);
+
+    nfiles = 0;
+    while (1)
+      { FILE *afile, *dfile;
+        int   i, size, tracklen;
+
+        afile = fopen(Numbered_Suffix(prefix,nfiles+1,Catenate(".",argv[2],".","anno")),"r");
+        if (afile == NULL)
+          break;
+        dfile = fopen(Numbered_Suffix(prefix,nfiles+1,Catenate(".",argv[2],".","data")),"r");
+
+        if (VERBOSE)
+          { fprintf(stderr,"Concatenating %s%d.%s ...\n",prefix,nfiles+1,argv[2]);
+            fflush(stderr);
+          }
+  
+        if (fread(&tracklen,sizeof(int),1,afile) != 1)
+          SYSTEM_ERROR
+        if (fread(&size,sizeof(int),1,afile) != 1)
+          SYSTEM_ERROR
+        if (nfiles == 0)
+          { tracksiz = size;
+            if (dfile != NULL)
+              { dout = Fopen(Catenate(prefix,argv[2],".","data"),"w");
+                if (dout == NULL)
+                  { fclose(afile);
+                    fclose(dfile);
+                    goto error;
+                  }
+              }
+            else
+              { anno = Malloc(size,"Allocating annotation record");
+                if (anno == NULL)
+                  { fclose(afile);
+                    goto error;
+                  }
+              }
+          }
+        else
+          { int escape = 1;
+            if (tracksiz != size)
+              { fprintf(stderr,"%s: Track block %d does not have the same annotation size (%d)",
+                               Prog_Name,nfiles+1,size);
+                fprintf(stderr," as previous blocks (%d)\n",tracksiz);
+              }
+            else if (dfile == NULL && dout != NULL)
+              fprintf(stderr,"%s: Track block %d does not have data but previous blocks do\n",
+                             Prog_Name,nfiles+1);
+            else if (dfile != NULL && dout == NULL)
+              fprintf(stderr,"%s: Track block %d has data but previous blocks do not\n",
+                             Prog_Name,nfiles+1);
+            else
+               escape = 0;
+            if (escape)
+              { fclose(afile);
+                if (dfile != NULL) fclose(dfile);
+                if (anno != NULL) free(anno);
+                goto error;
+              }
+          }
+  
+        if (dfile != NULL)
+          { int64 dlen;
+
+            if (size == 4)
+              { int anno4;
+  
+                for (i = 0; i < tracklen; i++)
+                  { if (fread(&anno4,sizeof(int),1,afile) != 1)
+                      SYSTEM_ERROR
+                    anno4 += trackoff;
+                    fwrite(&anno4,sizeof(int),1,aout);
+                  }
+                if (fread(&anno4,sizeof(int),1,afile) != 1)
+                  SYSTEM_ERROR
+                dlen = anno4;
+              }
+            else
+              { int64 anno8;
+  
+                for (i = 0; i < tracklen; i++)
+                  { if (fread(&anno8,sizeof(int64),1,afile) != 1)
+                      SYSTEM_ERROR
+                    anno8 += trackoff;
+                    fwrite(&anno8,sizeof(int64),1,aout);
+                  }
+                if (fread(&anno8,sizeof(int64),1,afile) != 1)
+                  SYSTEM_ERROR
+                dlen = anno8;
+              }
+            trackoff += dlen;
+
+            for (i = 1024; i < dlen; i += 1024)
+              { if (fread(data,1024,1,dfile) != 1)
+                  SYSTEM_ERROR
+                fwrite(data,1024,1,dout);
+              }
+            i -= 1024;
+            if (i < dlen)
+              { if (fread(data,dlen-i,1,dfile) != 1)
+                  SYSTEM_ERROR
+                fwrite(data,dlen-i,1,dout);
+              }
+          }
+        else
+          { for (i = 0; i < tracklen; i++)
+              { if (fread(anno,size,1,afile) != 1)
+                  SYSTEM_ERROR
+                fwrite(anno,size,1,aout);
+              }
+          }
+  
+        tracktot += tracklen;
+        nfiles   += 1;
+        if (dfile != NULL) fclose(dfile);
+        fclose(afile);
+      }
+  
+    if (nfiles == 0)
+      { fprintf(stderr,"%s: Couldn't find first track block %s1.%s.anno\n",
+                       Prog_Name,prefix,argv[2]);
+        goto error;
+      }
+    else
+      { if (dout != NULL)
+          { if (tracksiz == 4)
+              { int anno4 = trackoff;
+                fwrite(&anno4,sizeof(int),1,aout);
+              }
+            else
+              { int64 anno8 = trackoff;
+                fwrite(&anno8,sizeof(int64),1,aout);
+              }
+          }
+        else
+          { fwrite(anno,tracksiz,1,aout);
+            free(anno);
+          }
+        rewind(aout);
+        fwrite(&tracktot,sizeof(int),1,aout);
+        fwrite(&tracksiz,sizeof(int),1,aout);
+      }
+  }
+  
+  fclose(aout);
+  if (dout != NULL)
+    fclose(dout);
+  free(prefix);
+
+  exit (0);
+
+error:
+  fclose(aout);
+  unlink(Catenate(prefix,argv[2],".","anno"));
+  if (dout != NULL)
+    { fclose(dout);
+      unlink(Catenate(prefix,argv[2],".","data"));
+    }
+  free(prefix);
+
+  exit (1);
+}
diff --git a/DAZZ_DB/DAM2fasta.c b/DAZZ_DB/DAM2fasta.c
new file mode 100644
index 0000000..9c6ffff
--- /dev/null
+++ b/DAZZ_DB/DAM2fasta.c
@@ -0,0 +1,213 @@
+/********************************************************************************************
+ *
+ *  Recreate all the .fasta files that are in a specified DAM.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  May 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-vU] [-w<int(80)>] <path:dam>";
+
+int main(int argc, char *argv[])
+{ HITS_DB    _db, *db = &_db;
+  FILE       *dbfile, *hdrs;
+  int         nfiles;
+  int         VERBOSE, UPPER, WIDTH;
+
+  //  Process arguments
+
+  { int   i, j, k;
+    int   flags[128];
+    char *eptr;
+
+    ARG_INIT("DAM2fasta")
+
+    WIDTH = 80;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vU")
+            break;
+          case 'w':
+            ARG_NON_NEGATIVE(WIDTH,"Line width")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    UPPER   = 1 + flags['U'];
+    VERBOSE = flags['v'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open db
+
+  { int   status;
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+    if (status == 0)
+      { fprintf(stderr,"%s: Cannot be called on a .db: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+    if (db->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+  }
+
+  { char *pwd, *root;
+
+    pwd    = PathTo(argv[1]);
+    root   = Root(argv[1],".dam");
+    dbfile = Fopen(Catenate(pwd,"/",root,".dam"),"r");
+    hdrs   = Fopen(Catenate(pwd,PATHSEP,root,".hdr"),"r");
+    free(pwd);
+    free(root);
+    if (dbfile == NULL || hdrs == NULL)
+      exit (1);
+  }
+
+  //  nfiles = # of files in data base
+
+  if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
+    SYSTEM_ERROR
+
+  //  For each file do:
+
+  { HITS_READ  *reads;
+    char       *read;
+    int         f, first;
+    char        nstring[WIDTH+1];
+
+    if (UPPER == 2)
+      for (f = 0; f < WIDTH; f++)
+        nstring[f] = 'N';
+    else
+      for (f = 0; f < WIDTH; f++)
+        nstring[f] = 'n';
+    nstring[WIDTH] = '\0';
+
+    reads = db->reads;
+    read  = New_Read_Buffer(db);
+    first = 0;
+    for (f = 0; f < nfiles; f++)
+      { int   i, last, wpos;
+        FILE *ofile;
+        char  prolog[MAX_NAME], fname[MAX_NAME], header[MAX_NAME];
+
+        //  Scan db image file line, create .fasta file for writing
+
+        if (fscanf(dbfile,DB_FDATA,&last,fname,prolog) != 3)
+          SYSTEM_ERROR
+
+        if (strcmp(fname,"stdout") == 0)
+          { ofile  = stdout;
+
+            if (VERBOSE)
+              { fprintf(stderr,"Sending %d contigs to stdout ...\n",last-first);
+                fflush(stdout);
+              }
+          }
+        else
+          { if ((ofile = Fopen(Catenate(".","/",fname,".fasta"),"w")) == NULL)
+              exit (1);
+
+            if (VERBOSE)
+              { fprintf(stderr,"Creating %s.fasta ...\n",fname);
+                fflush(stdout);
+              }
+          }
+
+        //   For the relevant range of reads, write each to the file
+        //     recreating the original headers with the index meta-data about each read
+
+        wpos = 0;
+        for (i = first; i < last; i++)
+          { int        j, len, nlen, w;
+            HITS_READ *r;
+
+            r     = reads + i;
+            len   = r->rlen;
+
+            if (r->origin == 0)
+              { if (i != first && wpos != 0)
+                  { fprintf(ofile,"\n");
+                    wpos = 0;
+                  }
+                fseeko(hdrs,r->coff,SEEK_SET);
+                fgets(header,MAX_NAME,hdrs);
+                fputs(header,ofile);
+              }
+
+            if (r->fpulse != 0)
+              { if (r->origin != 0)
+                  nlen = r->fpulse - (reads[i-1].fpulse + reads[i-1].rlen);
+                else
+                  nlen = r->fpulse;
+
+                for (j = 0; j+(w = WIDTH-wpos) <= nlen; j += w)
+                  { fprintf(ofile,"%.*s\n",w,nstring);
+                    wpos = 0;
+                  }
+                if (j < nlen)
+                  { fprintf(ofile,"%.*s",nlen-j,nstring);
+                    if (j == 0)
+                      wpos += nlen;
+                    else
+                      wpos = nlen-j;
+                  }
+              }
+
+            Load_Read(db,i,read,UPPER);
+
+            for (j = 0; j+(w = WIDTH-wpos) <= len; j += w)
+              { fprintf(ofile,"%.*s\n",w,read+j);
+                wpos = 0;
+              }
+            if (j < len)
+              { fprintf(ofile,"%s",read+j);
+                if (j == 0)
+                  wpos += len;
+                else
+                  wpos = len-j;
+              }
+          }
+        if (wpos > 0)
+          fprintf(ofile,"\n");
+
+        if (ofile != stdout)
+          fclose(ofile);
+
+        first = last;
+      }
+  }
+
+  fclose(hdrs);
+  fclose(dbfile);
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DB.c b/DAZZ_DB/DB.c
new file mode 100644
index 0000000..ad0fcb1
--- /dev/null
+++ b/DAZZ_DB/DB.c
@@ -0,0 +1,1742 @@
+/*******************************************************************************************
+ *
+ *  Compressed data base module.  Auxiliary routines to open and manipulate a data base for
+ *    which the sequence and read information are separated into two separate files, and the
+ *    sequence is compressed into 2-bits for each base.  Support for tracks of additional
+ *    information, and trimming according to the current partition.
+ *
+ *  Author :  Gene Myers
+ *  Date   :  July 2013
+ *  Revised:  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <dirent.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+
+/*******************************************************************************************
+ *
+ *  GENERAL UTILITIES
+ *
+ ********************************************************************************************/
+
+char *Prog_Name;
+
+#ifdef INTERACTIVE
+
+char Ebuffer[1000];
+
+#endif
+
+void *Malloc(int64 size, char *mesg)
+{ void *p;
+
+  if ((p = malloc(size)) == NULL)
+    { if (mesg == NULL)
+        EPRINTF(EPLACE,"%s: Out of memory\n",Prog_Name);
+      else
+        EPRINTF(EPLACE,"%s: Out of memory (%s)\n",Prog_Name,mesg);
+    }
+  return (p);
+}
+
+void *Realloc(void *p, int64 size, char *mesg)
+{ if (size <= 0)
+    size = 1;
+  if ((p = realloc(p,size)) == NULL)
+    { if (mesg == NULL)
+        EPRINTF(EPLACE,"%s: Out of memory\n",Prog_Name);
+      else
+        EPRINTF(EPLACE,"%s: Out of memory (%s)\n",Prog_Name,mesg);
+    }
+  return (p);
+}
+
+char *Strdup(char *name, char *mesg)
+{ char *s;
+
+  if (name == NULL)
+    return (NULL);
+  if ((s = strdup(name)) == NULL)
+    { if (mesg == NULL)
+        EPRINTF(EPLACE,"%s: Out of memory\n",Prog_Name);
+      else
+        EPRINTF(EPLACE,"%s: Out of memory (%s)\n",Prog_Name,mesg);
+    }
+  return (s);
+}
+
+FILE *Fopen(char *name, char *mode)
+{ FILE *f;
+  char newmode[3];
+
+  if (name == NULL || mode == NULL)
+    return (NULL);
+  if (strcmp(mode, "r") == 0) {
+      strcpy(newmode,"rm");
+  } else {
+      strcpy(newmode,mode);
+  }
+  if ((f = fopen(name,newmode)) == NULL)
+    EPRINTF(EPLACE,"%s: Cannot open %s for '%s'\n",Prog_Name,name,mode);
+  return (f);
+}
+
+char *PathTo(char *name)
+{ char *path, *find;
+
+  if (name == NULL)
+    return (NULL);
+  if ((find = rindex(name,'/')) != NULL)
+    { *find = '\0';
+      path = Strdup(name,"Extracting path from");
+      *find = '/';
+    }
+  else
+    path = Strdup(".","Allocating default path");
+  return (path);
+}
+
+char *Root(char *name, char *suffix)
+{ char *path, *find, *dot;
+  int   epos;
+
+  if (name == NULL)
+    return (NULL);
+  find = rindex(name,'/');
+  if (find == NULL)
+    find = name;
+  else
+    find += 1;
+  if (suffix == NULL)
+    { dot = strchr(find,'.');
+      if (dot != NULL)
+        *dot = '\0';
+      path = Strdup(find,"Extracting root from");
+      if (dot != NULL)
+        *dot = '.';
+    }
+  else
+    { epos  = strlen(find);
+      epos -= strlen(suffix);
+      if (epos > 0 && strcasecmp(find+epos,suffix) == 0)
+        { find[epos] = '\0';
+          path = Strdup(find,"Extracting root from");
+          find[epos] = suffix[0];
+        }
+      else
+        path = Strdup(find,"Allocating root");
+    }
+  return (path);
+}
+
+char *Catenate(char *path, char *sep, char *root, char *suffix)
+{ static char *cat = NULL;
+  static int   max = -1;
+  int len;
+
+  if (path == NULL || root == NULL || sep == NULL || suffix == NULL)
+    return (NULL);
+  len =  strlen(path);
+  len += strlen(sep);
+  len += strlen(root);
+  len += strlen(suffix);
+  if (len > max)
+    { max = ((int) (1.2*len)) + 100;
+      if ((cat = (char *) realloc(cat,max+1)) == NULL)
+        { EPRINTF(EPLACE,"%s: Out of memory (Making path name for %s)\n",Prog_Name,root);
+          return (NULL);
+        }
+    }
+  sprintf(cat,"%s%s%s%s",path,sep,root,suffix);
+  return (cat);
+}
+
+char *Numbered_Suffix(char *left, int num, char *right)
+{ static char *suffix = NULL;
+  static int   max = -1;
+  int len;
+
+  if (left == NULL || right == NULL)
+    return (NULL);
+  len =  strlen(left);
+  len += strlen(right) + 40;
+  if (len > max)
+    { max = ((int) (1.2*len)) + 100;
+      if ((suffix = (char *) realloc(suffix,max+1)) == NULL)
+        { EPRINTF(EPLACE,"%s: Out of memory (Making number suffix for %d)\n",Prog_Name,num);
+          return (NULL);
+        }
+    }
+  sprintf(suffix,"%s%d%s",left,num,right);
+  return (suffix);
+}
+
+
+#define  COMMA  ','
+
+//  Print big integers with commas/periods for better readability
+
+void Print_Number(int64 num, int width, FILE *out)
+{ if (width == 0)
+    { if (num < 1000ll)
+        fprintf(out,"%lld",num);
+      else if (num < 1000000ll)
+        fprintf(out,"%lld%c%03lld",num/1000ll,COMMA,num%1000ll);
+      else if (num < 1000000000ll)
+        fprintf(out,"%lld%c%03lld%c%03lld",num/1000000ll,
+                                           COMMA,(num%1000000ll)/1000ll,COMMA,num%1000ll);
+      else
+        fprintf(out,"%lld%c%03lld%c%03lld%c%03lld",num/1000000000ll,
+                                                   COMMA,(num%1000000000ll)/1000000ll,
+                                                   COMMA,(num%1000000ll)/1000ll,COMMA,num%1000ll);
+    }
+  else
+    { if (num < 1000ll)
+        fprintf(out,"%*lld",width,num);
+      else if (num < 1000000ll)
+        { if (width <= 4)
+            fprintf(out,"%lld%c%03lld",num/1000ll,COMMA,num%1000ll);
+          else
+            fprintf(out,"%*lld%c%03lld",width-4,num/1000ll,COMMA,num%1000ll);
+        }
+      else if (num < 1000000000ll)
+        { if (width <= 8)
+            fprintf(out,"%lld%c%03lld%c%03lld",num/1000000ll,COMMA,(num%1000000ll)/1000ll,
+                                               COMMA,num%1000ll);
+          else
+            fprintf(out,"%*lld%c%03lld%c%03lld",width-8,num/1000000ll,COMMA,(num%1000000ll)/1000ll,
+                                                COMMA,num%1000ll);
+        }
+      else
+        { if (width <= 12)
+            fprintf(out,"%lld%c%03lld%c%03lld%c%03lld",num/1000000000ll,COMMA,
+                                                       (num%1000000000ll)/1000000ll,COMMA,
+                                                       (num%1000000ll)/1000ll,COMMA,num%1000ll);
+          else
+            fprintf(out,"%*lld%c%03lld%c%03lld%c%03lld",width-12,num/1000000000ll,COMMA,
+                                                        (num%1000000000ll)/1000000ll,COMMA,
+                                                        (num%1000000ll)/1000ll,COMMA,num%1000ll);
+        }
+    }
+}
+
+//  Return the number of digits, base 10, of num
+
+int  Number_Digits(int64 num)
+{ int digit;
+
+  digit = 0;
+  while (num >= 1)
+    { num /= 10;
+      digit += 1;
+    }
+  return (digit);
+}
+
+
+/*******************************************************************************************
+ *
+ *  READ COMPRESSION/DECOMPRESSION UTILITIES
+ *
+ ********************************************************************************************/
+
+//  Compress read into 2-bits per base (from [0-3] per byte representation
+
+void Compress_Read(int len, char *s)
+{ int   i;
+  char  c, d;
+  char *s0, *s1, *s2, *s3;
+
+  s0 = s;
+  s1 = s0+1;
+  s2 = s1+1;
+  s3 = s2+1;
+
+  c = s1[len];
+  d = s2[len];
+  s0[len] = s1[len] = s2[len] = 0;
+
+  for (i = 0; i < len; i += 4)
+    *s++ = (char ) ((s0[i] << 6) | (s1[i] << 4) | (s2[i] << 2) | s3[i]);
+
+  s1[len] = c;
+  s2[len] = d;
+}
+
+//  Uncompress read form 2-bits per base into [0-3] per byte representation
+
+void Uncompress_Read(int len, char *s)
+{ int   i, tlen, byte;
+  char *s0, *s1, *s2, *s3;
+  char *t;
+
+  s0 = s;
+  s1 = s0+1;
+  s2 = s1+1;
+  s3 = s2+1;
+
+  tlen = (len-1)/4;
+
+  t = s+tlen;
+  for (i = tlen*4; i >= 0; i -= 4)
+    { byte = *t--;
+      s0[i] = (char) ((byte >> 6) & 0x3);
+      s1[i] = (char) ((byte >> 4) & 0x3);
+      s2[i] = (char) ((byte >> 2) & 0x3);
+      s3[i] = (char) (byte & 0x3);
+    }
+  s[len] = 4;
+}
+
+//  Convert read in [0-3] representation to ascii representation (end with '\n')
+
+void Lower_Read(char *s)
+{ static char letter[4] = { 'a', 'c', 'g', 't' };
+
+  for ( ; *s != 4; s++)
+    *s = letter[(int) *s];
+  *s = '\0';
+}
+
+void Upper_Read(char *s)
+{ static char letter[4] = { 'A', 'C', 'G', 'T' };
+
+  for ( ; *s != 4; s++)
+    *s = letter[(int) *s];
+  *s = '\0';
+}
+
+//  Convert read in ascii representation to [0-3] representation (end with 4)
+
+void Number_Read(char *s)
+{ static char number[128] =
+    { 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+    };
+
+  for ( ; *s != '\0'; s++)
+    *s = number[(int) *s];
+  *s = 4;
+}
+
+
+/*******************************************************************************************
+ *
+ *  DB OPEN, TRIM & CLOSE ROUTINES
+ *
+ ********************************************************************************************/
+
+
+// Open the given database or dam, "path" into the supplied HITS_DB record "db". If the name has
+//   a part # in it then just the part is opened.  The index array is allocated (for all or
+//   just the part) and read in.
+// Return status of routine:
+//    -1: The DB could not be opened for a reason reported by the routine to EPLACE
+//     0: Open of DB proceeded without mishap
+//     1: Open of DAM proceeded without mishap
+
+int Open_DB(char* path, HITS_DB *db)
+{ HITS_DB dbcopy;
+  char   *root, *pwd, *bptr, *fptr, *cat;
+  int     nreads;
+  FILE   *index, *dbvis;
+  int     status, plen, isdam;
+  int     part, cutoff, all;
+  int     ufirst, tfirst, ulast, tlast;
+
+  status = -1;
+  dbcopy = *db;
+
+  plen = strlen(path);
+  if (strcmp(path+(plen-4),".dam") == 0)
+    root = Root(path,".dam");
+  else
+    root = Root(path,".db");
+  pwd = PathTo(path);
+
+  bptr = rindex(root,'.');
+  if (bptr != NULL && bptr[1] != '\0' && bptr[1] != '-')
+    { part = strtol(bptr+1,&fptr,10);
+      if (*fptr != '\0' || part == 0)
+        part = 0;
+      else
+        *bptr = '\0';
+    }
+  else
+    part = 0;
+
+  isdam = 0;
+  cat = Catenate(pwd,"/",root,".db");
+  if (cat == NULL)
+    return (-1);
+  if ((dbvis = fopen(cat,"r")) == NULL)
+    { cat = Catenate(pwd,"/",root,".dam");
+      if (cat == NULL)
+        return (-1);
+      if ((dbvis = fopen(cat,"r")) == NULL)
+        { EPRINTF(EPLACE,"%s: Could not open database %s\n",Prog_Name,path);
+          goto error;
+        }
+      isdam = 1;
+    }
+
+  if ((index = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r")) == NULL)
+    goto error1;
+  if (fread(db,sizeof(HITS_DB),1,index) != 1)
+    { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+      goto error2;
+    }
+
+  { int   p, nblocks, nfiles;
+    int64 size;
+    char  fname[MAX_NAME], prolog[MAX_NAME];
+
+    nblocks = 0;
+    if (fscanf(dbvis,DB_NFILE,&nfiles) != 1)
+      { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+        goto error2;
+      }
+    for (p = 0; p < nfiles; p++)
+      if (fscanf(dbvis,DB_FDATA,&tlast,fname,prolog) != 3)
+        { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+          goto error2;
+        }
+    if (fscanf(dbvis,DB_NBLOCK,&nblocks) != 1)
+      if (part == 0)
+        { cutoff = 0;
+          all    = 1;
+        }
+      else
+        { EPRINTF(EPLACE,"%s: DB %s has not yet been partitioned, cannot request a block !\n",
+                         Prog_Name,root);
+          goto error2;
+        }
+    else
+      { if (fscanf(dbvis,DB_PARAMS,&size,&cutoff,&all) != 3)
+          { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+            goto error2;
+          }
+        if (part > nblocks)
+          { EPRINTF(EPLACE,"%s: DB %s has only %d blocks\n",Prog_Name,root,nblocks);
+            goto error2;
+          }
+      }
+
+    if (part > 0)
+      { for (p = 1; p <= part; p++)
+          if (fscanf(dbvis,DB_BDATA,&ufirst,&tfirst) != 2)
+            { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+              goto error2;
+            }
+        if (fscanf(dbvis,DB_BDATA,&ulast,&tlast) != 2)
+          { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+            goto error2;
+          }
+      }
+    else
+      { ufirst = tfirst = 0;
+        ulast  = db->ureads;
+        tlast  = db->treads;
+      }
+  }
+
+  db->trimmed = 0;
+  db->tracks  = NULL;
+  db->part    = part;
+  db->cutoff  = cutoff;
+  db->all     = all;
+  db->ufirst  = ufirst;
+  db->tfirst  = tfirst;
+
+  nreads = ulast-ufirst;
+  if (part <= 0)
+    { db->reads = (HITS_READ *) Malloc(sizeof(HITS_READ)*(nreads+2),"Allocating Open_DB index");
+      if (db->reads == NULL)
+        goto error2;
+      db->reads += 1;
+      if (fread(db->reads,sizeof(HITS_READ),nreads,index) != (size_t) nreads)
+        { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+          free(db->reads);
+          goto error2;
+        }
+    }
+  else
+    { HITS_READ *reads;
+      int        i, r, maxlen;
+      int64      totlen;
+
+      reads = (HITS_READ *) Malloc(sizeof(HITS_READ)*(nreads+2),"Allocating Open_DB index");
+      if (reads == NULL)
+        goto error2;
+      reads += 1;
+
+      fseeko(index,sizeof(HITS_READ)*ufirst,SEEK_CUR);
+      if (fread(reads,sizeof(HITS_READ),nreads,index) != (size_t) nreads)
+        { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+          free(reads);
+          goto error2;
+        }
+
+      totlen = 0;
+      maxlen = 0;
+      for (i = 0; i < nreads; i++)
+        { r = reads[i].rlen;
+          totlen += r;
+          if (r > maxlen)
+            maxlen = r;
+        }
+
+      db->maxlen = maxlen;
+      db->totlen = totlen;
+      db->reads  = reads;
+    }
+
+  ((int *) (db->reads))[-1] = ulast - ufirst;   //  Kludge, need these for DB part
+  ((int *) (db->reads))[-2] = tlast - tfirst;
+
+  db->nreads = nreads;
+  db->path   = Strdup(Catenate(pwd,PATHSEP,root,""),"Allocating Open_DB path");
+  if (db->path == NULL)
+    goto error2;
+  db->bases  = NULL;
+  db->loaded = 0;
+
+  status = isdam;
+
+error2:
+  fclose(index);
+error1:
+  fclose(dbvis);
+error:
+  if (bptr != NULL)
+    *bptr = '.';
+
+  free(pwd);
+  free(root);
+
+  if (status < 0)
+    *db = dbcopy;
+
+  return (status);
+}
+
+
+// Trim the DB or part thereof and all loaded tracks according to the cuttof and all settings
+//   of the current DB partition.  Reallocate smaller memory blocks for the information kept
+//   for the retained reads.
+
+void Trim_DB(HITS_DB *db)
+{ int         i, j, r;
+  int         allflag, cutoff;
+  int64       totlen;
+  int         maxlen, nreads;
+  HITS_TRACK *record;
+  HITS_READ  *reads;
+
+  if (db->trimmed) return;
+
+  if (db->cutoff <= 0 && db->all) return;
+
+  cutoff = db->cutoff;
+  if (db->all)
+    allflag = 0;
+  else
+    allflag = DB_BEST;
+
+  reads  = db->reads;
+  nreads = db->nreads;
+
+  for (record = db->tracks; record != NULL; record = record->next)
+    if (strcmp(record->name,". at qvs") == 0)
+      { uint16 *table = ((HITS_QV *) record)->table;
+
+        j = 0;
+        for (i = 0; i < db->nreads; i++)
+          if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+            table[j++] = table[i];
+      }
+    else
+      { int   *anno4, size;
+        int64 *anno8;
+        char  *anno, *data;
+
+        size = record->size;
+        data = (char *) record->data; 
+        if (data == NULL)
+          { anno = (char *) record->anno;
+            j = 0;
+            for (i = r = 0; i < db->nreads; i++, r += size)
+              if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+                { memmove(anno+j,anno+r,size);
+                  j += size;
+                }
+            memmove(anno+j,anno+r,size);
+          }
+        else if (size == 4)
+          { int ai;
+
+            anno4 = (int *) (record->anno);
+            j = anno4[0] = 0;
+            for (i = 0; i < db->nreads; i++)
+              if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+                { ai = anno4[i];
+                  anno4[j+1] = anno4[j] + (anno4[i+1]-ai);
+                  memmove(data+anno4[j],data+ai,anno4[i+1]-ai);
+                  j += 1;
+                }
+            record->data = Realloc(record->data,anno4[j],NULL);
+          }
+        else // size == 8
+          { int64 ai;
+
+            anno8 = (int64 *) (record->anno);
+            j = anno8[0] = 0;
+            for (i = 0; i < db->nreads; i++)
+              if ((reads[i].flags & DB_BEST) >= allflag && reads[i].rlen >= cutoff)
+                { ai = anno8[i];
+                  anno8[j+1] = anno8[j] + (anno8[i+1]-ai);
+                  memmove(data+anno8[j],data+ai,anno8[i+1]-ai);
+                  j += 1;
+                }
+            record->data = Realloc(record->data,anno8[j],NULL);
+          }
+        record->anno = Realloc(record->anno,record->size*(j+1),NULL);
+      }
+
+  totlen = maxlen = 0;
+  for (j = i = 0; i < nreads; i++)
+    { r = reads[i].rlen;
+      if ((reads[i].flags & DB_BEST) >= allflag && r >= cutoff)
+        { totlen += r;
+          if (r > maxlen)
+            maxlen = r;
+          reads[j++] = reads[i];
+        }
+    }
+  
+  db->totlen  = totlen;
+  db->maxlen  = maxlen;
+  db->nreads  = j;
+  db->trimmed = 1;
+
+  if (j < nreads)
+    { db->reads = Realloc(reads-1,sizeof(HITS_READ)*(j+2),NULL);
+      db->reads += 1;
+    }
+}
+
+// The DB has already been trimmed, but a track over the untrimmed DB needs to be loaded.
+//   Trim the track by rereading the untrimmed DB index from the file system.
+
+static int Late_Track_Trim(HITS_DB *db, HITS_TRACK *track, int ispart)
+{ int         i, j, r;
+  int         allflag, cutoff;
+  int         ureads;
+  char       *root;
+  HITS_READ   read;
+  FILE       *indx;
+
+  if (!db->trimmed) return (0);
+
+  if (db->cutoff <= 0 && db->all) return (0);
+
+  cutoff = db->cutoff;
+  if (db->all)
+    allflag = 0;
+  else
+    allflag = DB_BEST;
+
+  root = rindex(db->path,'/') + 2;
+  indx = Fopen(Catenate(db->path,"","",".idx"),"r");
+  fseeko(indx,sizeof(HITS_DB) + sizeof(HITS_READ)*db->ufirst,SEEK_SET);
+  if (ispart)
+    ureads = ((int *) (db->reads))[-1];
+  else
+    ureads = db->ureads;
+
+  if (strcmp(track->name,". at qvs") == 0)
+    { EPRINTF(EPLACE,"%s: Cannot load QV track after trimming\n",Prog_Name);
+      fclose(indx);
+      EXIT(1);
+    }
+
+  { int   *anno4, size;
+    int64 *anno8;
+    char  *anno, *data;
+
+    size = track->size;
+    data = (char *) track->data; 
+    if (data == NULL)
+      { anno = (char *) track->anno;
+        j = r = 0;
+        for (i = r = 0; i < ureads; i++, r += size)
+          { if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+              { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                fclose(indx);
+                EXIT(1);
+              }
+            if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff)
+              { memmove(anno+j,anno+r,size);
+                j += size;
+              }
+            r += size;
+          }
+        memmove(anno+j,anno+r,size);
+      }
+    else if (size == 4)
+      { int ai;
+
+        anno4 = (int *) (track->anno);
+        j = anno4[0] = 0;
+        for (i = 0; i < ureads; i++)
+          { if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+              { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                fclose(indx);
+                EXIT(1);
+              }
+            if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff)
+              { ai = anno4[i];
+                anno4[j+1] = anno4[j] + (anno4[i+1]-ai);
+                memmove(data+anno4[j],data+ai,anno4[i+1]-ai);
+                j += 1;
+              }
+          }
+        track->data = Realloc(track->data,anno4[j],NULL);
+      }
+    else // size == 8
+      { int64 ai;
+
+        anno8 = (int64 *) (track->anno);
+        j = anno8[0] = 0;
+        for (i = 0; i < ureads; i++)
+          { if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+              { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                fclose(indx);
+                EXIT(1);
+              }
+            if ((read.flags & DB_BEST) >= allflag && read.rlen >= cutoff)
+              { ai = anno8[i];
+                anno8[j+1] = anno8[j] + (anno8[i+1]-ai);
+                memmove(data+anno8[j],data+ai,anno8[i+1]-ai);
+                j += 1;
+              }
+          }
+        track->data = Realloc(track->data,anno8[j],NULL);
+      }
+    track->anno = Realloc(track->anno,track->size*(j+1),NULL);
+  }
+
+  fclose(indx);
+  return (0);
+}
+
+// Shut down an open 'db' by freeing all associated space, including tracks and QV structures, 
+//   and any open file pointers.  The record pointed at by db however remains (the user
+//   supplied it and so should free it).
+
+void Close_DB(HITS_DB *db)
+{ HITS_TRACK *t, *p;
+
+  if (db->loaded)
+    free(((char *) (db->bases)) - 1);
+  else if (db->bases != NULL)
+    fclose((FILE *) db->bases);
+  if (db->reads != NULL)
+    free(db->reads-1);
+  free(db->path);
+
+  Close_QVs(db);
+
+  for (t = db->tracks; t != NULL; t = p)
+    { p = t->next;
+      free(t->anno);
+      free(t->data);
+      free(t);
+    }
+}
+
+
+// Return the size in bytes of the memory occupied by a given DB
+
+int64 sizeof_DB(HITS_DB *db)
+{ int64       s;
+  HITS_TRACK *t;
+
+  s = sizeof(HITS_DB)
+    + sizeof(HITS_READ)*(db->nreads+2)
+    + strlen(db->path)+1
+    + (db->totlen+db->nreads+4);
+
+  t = db->tracks;
+  if (t != NULL && strcmp(t->name,". at qvs") == 0)
+    { HITS_QV *q = (HITS_QV *) t;
+      s += sizeof(HITS_QV)
+         + sizeof(uint16) * db->nreads
+         + q->ncodes * sizeof(QVcoding)
+         + 6;
+      t = t->next;
+    }
+
+  for (; t != NULL; t = t->next)
+    { s += sizeof(HITS_TRACK)
+         + strlen(t->name)+1
+         + t->size * (db->nreads+1);
+      if (t->data != NULL)
+        { if (t->size == 8)
+            s += sizeof(int)*((int64 *) t->anno)[db->nreads];
+          else //  t->size == 4
+            s += sizeof(int)*((int *) t->anno)[db->nreads];
+        }
+    }
+
+  return (s);
+}
+
+
+/*******************************************************************************************
+ *
+ *  QV LOAD & CLOSE ROUTINES
+ *
+ ********************************************************************************************/
+
+HITS_DB *Active_DB = NULL;  //  Last db/qv used by "Load_QVentry"
+HITS_QV *Active_QV;         //    Becomes invalid after closing
+
+int Load_QVs(HITS_DB *db)
+{ FILE        *quiva, *istub, *indx;
+  char        *root;
+  uint16      *table;
+  HITS_QV     *qvtrk;
+  QVcoding    *coding, *nx;
+  int          ncodes = 0;
+
+  if (db->tracks != NULL && strcmp(db->tracks->name,". at qvs") == 0)
+    return (0);
+
+  if (db->trimmed)
+    { EPRINTF(EPLACE,"%s: Cannot load QVs after trimming the DB\n",Prog_Name);
+      EXIT(1);
+    }
+
+  if (db->reads[db->nreads-1].coff < 0)
+    { if (db->part > 0)
+        { EPRINTF(EPLACE,"%s: All QVs for this block have not been added to the DB!\n",Prog_Name);
+          EXIT(1);
+        }
+      else
+        { EPRINTF(EPLACE,"%s: All QVs for this DB have not been added!\n",Prog_Name);
+          EXIT(1);
+        }
+    }
+
+  //  Open .qvs, .idx, and .db files
+
+  quiva = Fopen(Catenate(db->path,"","",".qvs"),"r");
+  if (quiva == NULL)
+    return (-1);
+
+  istub  = NULL;
+  indx   = NULL; 
+  table  = NULL;
+  coding = NULL;
+  qvtrk  = NULL;
+
+  root = rindex(db->path,'/');
+  if (root[1] == '.')
+    { *root = '\0';
+      istub = Fopen(Catenate(db->path,"/",root+2,".db"),"r");
+      *root = '/';
+    }
+  else
+    istub = Fopen(Catenate(db->path,"","",".db"),"r");
+  if (istub == NULL)
+    goto error;
+
+  { int   first, last, nfiles;
+    char  prolog[MAX_NAME], fname[MAX_NAME];
+    int   i, j;
+
+    if (fscanf(istub,DB_NFILE,&nfiles) != 1)
+      { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+        goto error;
+      }
+
+    if (db->part > 0)
+      { int       pfirst, plast;
+        int       fbeg, fend;
+        int       n, k;
+        FILE     *indx;
+
+        //  Determine first how many and which files span the block (fbeg to fend)
+
+        pfirst = db->ufirst;
+        plast  = pfirst + db->nreads;
+
+        first = 0;
+        for (fbeg = 0; fbeg < nfiles; fbeg++)
+          { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+                goto error;
+              }
+            if (last > pfirst)
+              break;
+            first = last;
+          }
+        for (fend = fbeg+1; fend <= nfiles; fend++)
+          { if (last >= plast)
+              break;
+            if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+                goto error;
+              }
+            first = last;
+          }
+
+        indx   = Fopen(Catenate(db->path,"","",".idx"),"r");
+        ncodes = fend-fbeg;
+        coding = (QVcoding *) Malloc(sizeof(QVcoding)*ncodes,"Allocating coding schemes");
+        table  = (uint16 *) Malloc(sizeof(uint16)*db->nreads,"Allocating QV table indices");
+        if (indx == NULL || coding == NULL || table == NULL)
+          { ncodes = 0;
+            goto error;
+          }
+
+        //  Carefully get the first coding scheme (its offset is most likely in a HITS_RECORD
+        //    in .idx that is *not* in memory).  Get all the other coding schemes normally and
+        //    assign the tables # for each read in the block in "tables".
+
+        rewind(istub);
+        (void) fscanf(istub,DB_NFILE,&nfiles);
+
+        first = 0;
+        for (n = 0; n < fbeg; n++)
+          { (void) fscanf(istub,DB_FDATA,&last,fname,prolog);
+            first = last;
+          }
+
+        for (n = fbeg; n < fend; n++)
+          { (void) fscanf(istub,DB_FDATA,&last,fname,prolog);
+
+            i = n-fbeg;
+            if (first < pfirst)
+              { HITS_READ read;
+
+                fseeko(indx,sizeof(HITS_DB) + sizeof(HITS_READ)*first,SEEK_SET);
+                if (fread(&read,sizeof(HITS_READ),1,indx) != 1)
+                  { EPRINTF(EPLACE,"%s: Index file (.idx) of %s is junk\n",Prog_Name,root);
+                    ncodes = i;
+                    goto error;
+                  }
+                fseeko(quiva,read.coff,SEEK_SET);
+                nx = Read_QVcoding(quiva);
+                if (nx == NULL)
+                  { ncodes = i;
+                    goto error;
+                  }
+                coding[i] = *nx;
+              }
+            else
+              { fseeko(quiva,db->reads[first-pfirst].coff,SEEK_SET);
+                nx = Read_QVcoding(quiva);
+                if (nx == NULL)
+                  { ncodes = i;
+                    goto error;
+                  }
+                coding[i] = *nx;
+                db->reads[first-pfirst].coff = ftello(quiva);
+              }
+
+            j = first-pfirst;
+            if (j < 0)
+              j = 0;
+            k = last-pfirst;
+            if (k > db->nreads)
+              k = db->nreads;
+            while (j < k)
+              table[j++] = (uint16) i;
+
+            first = last;
+	  }
+
+        fclose(indx);
+        indx = NULL;
+      }
+
+    else
+      { //  Load in coding scheme for each file, adjust .coff of first read in the file, and
+        //    record which table each read uses
+
+        ncodes = nfiles;
+        coding = (QVcoding *) Malloc(sizeof(QVcoding)*nfiles,"Allocating coding schemes");
+        table  = (uint16 *) Malloc(sizeof(uint16)*db->nreads,"Allocating QV table indices");
+        if (coding == NULL || table == NULL)
+          goto error;
+  
+        first = 0;
+        for (i = 0; i < nfiles; i++)
+          { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { EPRINTF(EPLACE,"%s: Stub file (.db) of %s is junk\n",Prog_Name,root);
+                goto error;
+              }
+  
+            fseeko(quiva,db->reads[first].coff,SEEK_SET);
+            nx = Read_QVcoding(quiva);
+            if (nx == NULL)
+              { ncodes = i;
+                goto error;
+              }
+            coding[i] = *nx;
+	    db->reads[first].coff = ftello(quiva);
+
+            for (j = first; j < last; j++)
+              table[j] = (uint16) i;
+
+            first = last;
+          }
+      }
+
+    //  Allocate and fill in the HITS_QV record and add it to the front of the
+    //    track list
+
+    qvtrk = (HITS_QV *) Malloc(sizeof(HITS_QV),"Allocating QV pseudo-track");
+    if (qvtrk == NULL)
+      goto error;
+    qvtrk->name   = Strdup(". at qvs","Allocating QV pseudo-track name");
+    if (qvtrk->name == NULL)
+      goto error;
+    qvtrk->next   = db->tracks;
+    db->tracks    = (HITS_TRACK *) qvtrk;
+    qvtrk->ncodes = ncodes;
+    qvtrk->table  = table;
+    qvtrk->coding = coding;
+    qvtrk->quiva  = quiva;
+  }
+
+  fclose(istub);
+  return (0);
+
+error:
+  if (qvtrk != NULL)
+    free(qvtrk);
+  if (table != NULL)
+    free(table);
+  if (coding != NULL)
+    { int i;
+      for (i = 0; i < ncodes; i++)
+        Free_QVcoding(coding+i);
+      free(coding);
+    }
+  if (indx != NULL)
+    fclose(indx);
+  if (istub != NULL)
+    fclose(istub);
+  fclose(quiva);
+  EXIT(1);
+}
+
+// Close the QV stream, free the QV pseudo track and all associated memory
+
+void Close_QVs(HITS_DB *db)
+{ HITS_TRACK *track;
+  HITS_QV    *qvtrk;
+  int         i;
+
+  Active_DB = NULL;
+
+  track = db->tracks;
+  if (track != NULL && strcmp(track->name,". at qvs") == 0)
+    { qvtrk = (HITS_QV *) track;
+      for (i = 0; i < qvtrk->ncodes; i++)
+        Free_QVcoding(qvtrk->coding+i);
+      free(qvtrk->coding);
+      free(qvtrk->table);
+      fclose(qvtrk->quiva);
+      db->tracks = track->next;
+      free(track);
+    }
+  return;
+}
+
+
+/*******************************************************************************************
+ *
+ *  TRACK LOAD & CLOSE ROUTINES
+ *
+ ********************************************************************************************/
+
+//  Return status of track:
+//     1: Track is for trimmed DB
+//     0: Track is for untrimmed DB
+//    -1: Track is not the right size of DB either trimmed or untrimmed
+//    -2: Could not find the track 
+
+int Check_Track(HITS_DB *db, char *track, int *kind)
+{ FILE       *afile;
+  int         tracklen, size, ispart;
+  int         ureads, treads;
+
+  afile = NULL;
+  if (db->part > 0)
+    { afile  = fopen(Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".anno"),"r");
+      ispart = 1;
+    }
+  if (afile == NULL)
+    { afile  = fopen(Catenate(db->path,".",track,".anno"),"r");
+      ispart = 0;
+    }
+  if (afile == NULL)
+    return (-2);
+
+  if (fread(&tracklen,sizeof(int),1,afile) != 1)
+    { fprintf(stderr,"%s: track files for %s are corrupted\n",Prog_Name,track);
+      exit (1);
+    }
+  if (fread(&size,sizeof(int),1,afile) != 1)
+    { fprintf(stderr,"%s: track files for %s are corrupted\n",Prog_Name,track);
+      exit (1);
+    }
+
+  if (size == 0)
+    *kind = MASK_TRACK;
+  else if (size > 0)
+    *kind = CUSTOM_TRACK;
+  else
+    { fprintf(stderr,"%s: track files for %s are corrupted\n",Prog_Name,track);
+      exit (1);
+    }
+  
+  fclose(afile);
+
+  if (ispart)
+    { ureads = ((int *) (db->reads))[-1];
+      treads = ((int *) (db->reads))[-2];
+    }
+  else
+    { ureads = db->ureads;
+      treads = db->treads;
+    }
+
+  if (tracklen == ureads)
+    return (0);
+  else if (tracklen == treads)
+    return (1);
+  else
+    return (-1);
+}
+
+// If track is not already in the db's track list, then allocate all the storage for it,
+//   read it in from the appropriate file, add it to the track list, and return a pointer
+//   to the newly created HITS_TRACK record.  If the track does not exist or cannot be
+//   opened for some reason, then NULL is returned.
+
+HITS_TRACK *Load_Track(HITS_DB *db, char *track)
+{ FILE       *afile, *dfile;
+  int         tracklen, size;
+  int         nreads, ispart;
+  int         treads, ureads;
+  void       *anno;
+  void       *data;
+  char       *name;
+  HITS_TRACK *record;
+
+  if (track[0] == '.')
+    { EPRINTF(EPLACE,"%s: Track name, '%s', cannot begin with a .\n",Prog_Name,track);
+      EXIT(NULL);
+    }
+
+  for (record = db->tracks; record != NULL; record = record->next)
+    if (strcmp(record->name,track) == 0)
+      return (record);
+
+  afile = NULL;
+  if (db->part)
+    { afile  = fopen(Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".anno"),"r");
+      ispart = 1;
+    }
+  if (afile == NULL)
+    { afile = fopen(Catenate(db->path,".",track,".anno"),"r");
+      ispart = 0;
+    }
+  if (afile == NULL)
+    { EPRINTF(EPLACE,"%s: Track '%s' does not exist\n",Prog_Name,track);
+      return (NULL);
+    }
+
+  dfile  = NULL;
+  anno   = NULL;
+  data   = NULL;
+  record = NULL;
+
+  if (ispart)
+    name = Catenate(db->path,Numbered_Suffix(".",db->part,"."),track,".data");
+  else
+    name = Catenate(db->path,".",track,".data");
+  if (name == NULL)
+    goto error;
+  dfile = fopen(name,"r");
+
+  if (fread(&tracklen,sizeof(int),1,afile) != 1)
+    { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+      goto error;
+    }
+  if (fread(&size,sizeof(int),1,afile) != 1)
+    { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+      goto error;
+    }
+
+  if (size < 0)
+    { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+      goto error;
+    }
+  if (size == 0)
+    size = 8;
+
+  if (ispart)
+    { ureads = ((int *) (db->reads))[-1];
+      treads = ((int *) (db->reads))[-2];
+    }
+  else
+    { ureads = db->ureads;
+      treads = db->treads;
+    }
+
+  if (db->trimmed)
+    { if (tracklen != treads && tracklen != ureads)
+        { EPRINTF(EPLACE,"%s: Track '%s' not same size as database !\n",Prog_Name,track);
+          goto error;
+        }
+      if ( ! ispart && db->part > 0)
+        { if (tracklen == treads)
+            fseeko(afile,size*db->tfirst,SEEK_CUR);
+          else
+            fseeko(afile,size*db->ufirst,SEEK_CUR);
+        }
+    }
+  else
+    { if (tracklen != ureads)
+        { if (tracklen == treads)
+            EPRINTF(EPLACE,"%s: Track '%s' is for a trimmed DB !\n",Prog_Name,track);
+          else
+            EPRINTF(EPLACE,"%s: Track '%s' not same size as database !\n",Prog_Name,track);
+          goto error;
+        }
+      if ( ! ispart && db->part > 0)
+        fseeko(afile,size*db->ufirst,SEEK_CUR);
+    }
+  if (tracklen == treads)
+    nreads = ((int *) (db->reads))[-2];
+  else
+    nreads = ((int *) (db->reads))[-1];
+
+  anno = (void *) Malloc(size*(nreads+1),"Allocating Track Anno Vector");
+  if (anno == NULL)
+    goto error;
+
+  if (dfile != NULL)
+    { int64 *anno8, off8, dlen;
+      int   *anno4, off4;
+      int    i;
+
+      if (fread(anno,size,nreads+1,afile) != (size_t) (nreads+1))
+        { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+          goto error;
+        }
+
+      if (size == 4)
+        { anno4 = (int *) anno;
+          off4  = anno4[0];
+          if (off4 != 0)
+            { for (i = 0; i <= nreads; i++)
+                anno4[i] -= off4;
+              fseeko(dfile,off4,SEEK_SET);
+            }
+          dlen = anno4[nreads];
+          data = (void *) Malloc(dlen,"Allocating Track Data Vector");
+        }
+      else
+        { anno8 = (int64 *) anno;
+          off8  = anno8[0];
+          if (off8 != 0)
+            { for (i = 0; i <= nreads; i++)
+                anno8[i] -= off8;
+              fseeko(dfile,off8,SEEK_SET);
+            }
+          dlen = anno8[nreads];
+          data = (void *) Malloc(dlen,"Allocating Track Data Vector");
+        }
+      if (data == NULL)
+        goto error;
+      if (dlen > 0)
+        { if (fread(data,dlen,1,dfile) != 1)
+            { EPRINTF(EPLACE,"%s: Track '%s' data file is junk\n",Prog_Name,track);
+              goto error;
+            }
+        }
+      fclose(dfile);
+      dfile = NULL;
+    }
+  else
+    { if (fread(anno,size,nreads,afile) != (size_t) nreads)
+        { EPRINTF(EPLACE,"%s: Track '%s' annotation file is junk\n",Prog_Name,track);
+          goto error;
+        }
+      data = NULL;
+    }
+
+  fclose(afile);
+
+  record = (HITS_TRACK *) Malloc(sizeof(HITS_TRACK),"Allocating Track Record");
+  if (record == NULL)
+    goto error;
+  record->name = Strdup(track,"Allocating Track Name");
+  if (record->name == NULL)
+    goto error;
+  record->data = data;
+  record->anno = anno;
+  record->size = size;
+
+  if (db->trimmed && tracklen != treads)
+    { if (Late_Track_Trim(db,record,ispart))
+        goto error;
+    }
+
+  if (db->tracks != NULL && strcmp(db->tracks->name,". at qvs") == 0)
+    { record->next     = db->tracks->next;
+      db->tracks->next = record;
+    }
+  else
+    { record->next = db->tracks;
+      db->tracks   = record;
+    }
+
+  return (record);
+
+error:
+  if (record != NULL)
+    free(record);
+  if (data != NULL)
+    free(data);
+  if (anno != NULL)
+    free(anno);
+  if (dfile != NULL)
+    fclose(dfile);
+  fclose(afile);
+  EXIT (NULL);
+}
+
+void Close_Track(HITS_DB *db, char *track)
+{ HITS_TRACK *record, *prev;
+
+  prev = NULL;
+  for (record = db->tracks; record != NULL; record = record->next)
+    { if (strcmp(record->name,track) == 0)
+        { free(record->anno);
+          free(record->data);
+          free(record->name);
+          if (prev == NULL)
+            db->tracks = record->next;
+          else
+            prev->next = record->next;
+          free(record);
+          return;
+        }
+      prev = record;
+    }
+  return;
+}
+
+
+/*******************************************************************************************
+ *
+ *  READ BUFFER ALLOCATION AND READ ACCESS
+ *
+ ********************************************************************************************/
+
+// Allocate and return a buffer big enough for the largest read in 'db', leaving room
+//   for an initial delimiter character
+
+char *New_Read_Buffer(HITS_DB *db)
+{ char *read;
+
+  read = (char *) Malloc(db->maxlen+4,"Allocating New Read Buffer");
+  if (read == NULL)
+    EXIT(NULL);
+  return (read+1);
+}
+
+// Load into 'read' the i'th read in 'db'.  As an upper case ASCII string if ascii is 2, as a
+//   lower-case ASCII string is ascii is 1, and as a numeric string over 0(A), 1(C), 2(G), and
+//   3(T) otherwise.
+//
+// **NB**, the byte before read will be set to a delimiter character!
+
+int Load_Read(HITS_DB *db, int i, char *read, int ascii)
+{ FILE      *bases  = (FILE *) db->bases;
+  int64      off;
+  int        len, clen;
+  HITS_READ *r = db->reads;
+
+  if (i >= db->nreads)
+    { EPRINTF(EPLACE,"%s: Index %d out of bounds %d (Load_Read)\n",Prog_Name,i,db->nreads);
+      EXIT(1);
+    }
+  if (bases == NULL)
+    { bases = Fopen(Catenate(db->path,"","",".bps"),"r");
+      if (bases == NULL)
+        EXIT(1);
+      db->bases = (void *) bases;
+    }
+
+  off = r[i].boff;
+  len = r[i].rlen;
+
+  if (ftello(bases) != off)
+    fseeko(bases,off,SEEK_SET);
+  clen = COMPRESSED_LEN(len);
+  if (clen > 0)
+    { if (fread(read,clen,1,bases) != 1)
+        { EPRINTF(EPLACE,"%s: Failed read of .bps file (Load_Read)\n",Prog_Name);
+          EXIT(1);
+        }
+    }
+  Uncompress_Read(len,read);
+  if (ascii == 1)
+    { Lower_Read(read);
+      read[-1] = '\0';
+    }
+  else if (ascii == 2)
+    { Upper_Read(read);
+      read[-1] = '\0';
+    }
+  else
+    read[-1] = 4;
+  return (0);
+}
+
+char *Load_Subread(HITS_DB *db, int i, int beg, int end, char *read, int ascii)
+{ FILE      *bases  = (FILE *) db->bases;
+  int64      off;
+  int        len, clen;
+  int        bbeg, bend;
+  HITS_READ *r = db->reads;
+
+  if (i >= db->nreads)
+    { EPRINTF(EPLACE,"%s: Subread Index %d out of bounds %d (Load_Read)\n",Prog_Name,i,db->nreads);
+      EXIT(NULL);
+    }
+  if (bases == NULL)
+    { bases = Fopen(Catenate(db->path,"","",".bps"),"r");
+      if (bases == NULL)
+        EXIT(NULL);
+      db->bases = (void *) bases;
+    }
+
+  bbeg = beg/4;
+  bend = (end-1)/4+1;
+
+  off = r[i].boff + bbeg;
+  len = end - beg;
+
+  if (ftello(bases) != off)
+    fseeko(bases,off,SEEK_SET);
+  clen = bend-bbeg;
+  if (clen > 0)
+    { if (fread(read,clen,1,bases) != 1)
+        { EPRINTF(EPLACE,"%s: Failed read of .bps file (Load_Read)\n",Prog_Name);
+          EXIT(NULL);
+        }
+    }
+  Uncompress_Read(4*clen,read);
+  read += beg%4;
+  read[len] = 4;
+  if (ascii == 1)
+    { Lower_Read(read);
+      read[-1] = '\0';
+    }
+  else if (ascii == 2)
+    { Upper_Read(read);
+      read[-1] = '\0';
+    }
+  else
+    read[-1] = 4;
+
+  return (read);
+}
+
+
+/*******************************************************************************************
+ *
+ *  QV BUFFER ALLOCATION QV READ ACCESS
+ *
+ ********************************************************************************************/
+
+// Allocate and return a buffer of 5 vectors big enough for the largest read in 'db'
+
+char **New_QV_Buffer(HITS_DB *db)
+{ char **entry;
+  char  *qvs;
+  int    i;
+
+  qvs   = (char *) Malloc(db->maxlen*5,"Allocating New QV Buffer");
+  entry = (char **) Malloc(sizeof(char *)*5,"Allocating New QV Buffer");
+  if (qvs == NULL || entry == NULL)
+    EXIT(NULL);
+  for (i = 0; i < 5; i++)
+    entry[i] = qvs + i*db->maxlen;
+  return (entry);
+}
+
+// Load into entry the QV streams for the i'th read from db.  The parameter ascii applies to
+//  the DELTAG stream as described for Load_Read.
+
+int Load_QVentry(HITS_DB *db, int i, char **entry, int ascii)
+{ HITS_READ *reads;
+  FILE      *quiva;
+  int        rlen;
+
+  if (db != Active_DB)
+    { if (db->tracks == NULL || strcmp(db->tracks->name,". at qvs") != 0)
+        { EPRINTF(EPLACE,"%s: QV's are not loaded (Load_QVentry)\n",Prog_Name);
+          EXIT(1);
+        }
+      Active_QV = (HITS_QV *) db->tracks;
+      Active_DB = db;
+    }
+  if (i >= db->nreads)
+    { EPRINTF(EPLACE,"%s: Index out of bounds (Load_QVentry)\n",Prog_Name);
+      EXIT(1);
+    }
+
+  reads = db->reads;
+  quiva = Active_QV->quiva;
+  rlen  = reads[i].rlen;
+
+  fseeko(quiva,reads[i].coff,SEEK_SET);
+  if (Uncompress_Next_QVentry(quiva,entry,Active_QV->coding+Active_QV->table[i],rlen))
+    EXIT(1);
+
+  if (ascii != 1)
+    { char *deltag = entry[1];
+
+      if (ascii != 2)
+        { char x = deltag[rlen];
+          deltag[rlen] = '\0';
+          Number_Read(deltag);
+          deltag[rlen] = x;
+        }
+      else
+        { int j;
+          int u = 'A'-'a';
+
+          for (j = 0; j < rlen; j++)
+            deltag[j] = (char) (deltag[j]+u);
+        }
+    }
+
+  return (0);
+}
+
+
+/*******************************************************************************************
+ *
+ *  BLOCK LOAD OF ALL READS (PRIMARILY FOR DALIGNER)
+ *
+ ********************************************************************************************/
+
+// Allocate a block big enough for all the uncompressed sequences, read them into it,
+//   reset the 'off' in each read record to be its in-memory offset, and set the
+//   bases pointer to point at the block after closing the bases file.  If ascii is
+//   non-zero then the reads are converted to ACGT ascii, otherwise the reads are left
+//   as numeric strings over 0(A), 1(C), 2(G), and 3(T).
+
+int Read_All_Sequences(HITS_DB *db, int ascii)
+{ FILE      *bases;
+  int        nreads = db->nreads;
+  HITS_READ *reads = db->reads;
+  void     (*translate)(char *s);
+
+  char  *seq;
+  int64  o, off;
+  int    i, len, clen;
+
+  bases = Fopen(Catenate(db->path,"","",".bps"),"r");
+  if (bases == NULL)
+    EXIT(1);
+
+  seq = (char *) Malloc(db->totlen+nreads+4,"Allocating All Sequence Reads");
+  if (seq == NULL)
+    { fclose(bases);
+      EXIT(1);
+    }
+
+  *seq++ = 4;
+
+  if (ascii == 1)
+    translate = Lower_Read;
+  else
+    translate = Upper_Read;
+
+  o = 0;
+  for (i = 0; i < nreads; i++)
+    { len = reads[i].rlen;
+      off = reads[i].boff;
+      if (ftello(bases) != off)
+        fseeko(bases,off,SEEK_SET);
+      clen = COMPRESSED_LEN(len);
+      if (clen > 0)
+        { if (fread(seq+o,clen,1,bases) != 1)
+            { EPRINTF(EPLACE,"%s: Read of .bps file failed (Read_All_Sequences)\n",Prog_Name);
+              free(seq);
+              fclose(bases);
+              EXIT(1);
+            }
+        }
+      Uncompress_Read(len,seq+o);
+      if (ascii)
+        translate(seq+o);
+      reads[i].boff = o;
+      o += (len+1);
+    }
+  reads[nreads].boff = o;
+
+  fclose(bases);
+
+  db->bases  = (void *) seq;
+  db->loaded = 1;
+
+  return (0);
+}
+
+int List_DB_Files(char *path, void actor(char *path, char *extension))
+{ int            status, plen, rlen, dlen;
+  char          *root, *pwd, *name;
+  int            isdam;
+  DIR           *dirp;
+  struct dirent *dp;
+
+  status = 0;
+  pwd    = PathTo(path);
+  plen   = strlen(path);
+  if (strcmp(path+(plen-4),".dam") == 0)
+    root = Root(path,".dam");
+  else
+    root = Root(path,".db");
+  rlen = strlen(root);
+
+  if (root == NULL || pwd == NULL)
+    { free(pwd);
+      free(root);
+      EXIT(1);
+    }
+
+  if ((dirp = opendir(pwd)) == NULL)
+    { EPRINTF(EPLACE,"%s: Cannot open directory %s (List_DB_Files)\n",Prog_Name,pwd);
+      status = -1;
+      goto error;
+    }
+
+  isdam = 0;
+  while ((dp = readdir(dirp)) != NULL)     //   Get case dependent root name (if necessary)
+    { name = dp->d_name;
+      if (strcmp(name,Catenate("","",root,".db")) == 0)
+        break;
+      if (strcmp(name,Catenate("","",root,".dam")) == 0)
+        { isdam = 1;
+          break;
+        }
+      if (strcasecmp(name,Catenate("","",root,".db")) == 0)
+        { strncpy(root,name,rlen);
+          break;
+        }
+      if (strcasecmp(name,Catenate("","",root,".dam")) == 0)
+        { strncpy(root,name,rlen);
+          isdam = 1;
+          break;
+        }
+    }
+  if (dp == NULL)
+    { EPRINTF(EPLACE,"%s: Cannot find %s (List_DB_Files)\n",Prog_Name,pwd);
+      status = -1;
+      closedir(dirp);
+      goto error;
+    }
+
+  if (isdam)
+    actor(Catenate(pwd,"/",root,".dam"),"dam");
+  else
+    actor(Catenate(pwd,"/",root,".db"),"db");
+
+  rewinddir(dirp);                         //   Report each auxiliary file
+  while ((dp = readdir(dirp)) != NULL)
+    { name = dp->d_name;
+      dlen = strlen(name);
+#ifdef HIDE_FILES
+      if (name[0] != '.')
+        continue;
+      dlen -= 1;
+      name += 1;
+#endif
+      if (dlen < rlen+1)
+        continue;
+      if (name[rlen] != '.')
+        continue;
+      if (strncmp(name,root,rlen) != 0)
+        continue;
+      actor(Catenate(pwd,PATHSEP,name,""),name+(rlen+1));
+    }
+  closedir(dirp);
+
+error:
+  free(pwd);
+  free(root);
+  return (status);
+}
+
+void Print_Read(char *s, int width)
+{ int i;
+
+  if (s[0] < 4)
+    { for (i = 0; s[i] != 4; i++)
+        { if (i%width == 0 && i != 0)
+            printf("\n");
+          printf("%d",s[i]);
+        }
+      printf("\n");
+    }
+  else
+    { for (i = 0; s[i] != '\0'; i++)
+        { if (i%width == 0 && i != 0)
+            printf("\n");
+          printf("%c",s[i]);
+        }
+      printf("\n");
+    }
+}
diff --git a/DAZZ_DB/DB.h b/DAZZ_DB/DB.h
new file mode 100644
index 0000000..983bee7
--- /dev/null
+++ b/DAZZ_DB/DB.h
@@ -0,0 +1,420 @@
+/*******************************************************************************************
+ *
+ *  Compressed data base module.  Auxiliary routines to open and manipulate a data base for
+ *    which the sequence and read information are separated into two separate files, and the
+ *    sequence is compressed into 2-bits for each base.  Support for tracks of additional
+ *    information, and trimming according to the current partition.  Eventually will also
+ *    support compressed quality information. 
+ *
+ *  Author :  Gene Myers
+ *  Date   :  July 2013
+ *  Revised:  April 2014
+ *
+ ********************************************************************************************/
+
+#ifndef _HITS_DB
+
+#define _HITS_DB
+
+#include <stdio.h>
+
+#include "QV.h"
+
+#define HIDE_FILES          //  Auxiliary DB files start with a . so they are "hidden"
+                            //    Undefine if you don't want this
+
+//  For interactive applications where it is inappropriate to simply exit with an error
+//    message to standard error, define the constant INTERACTIVE.  If set, then error
+//    messages are put in the global variable Ebuffer and the caller of a DB routine
+//    can decide how to deal with the error.
+//
+//  DB, QV, or alignment routines that can encounter errors function as before in
+//    non-INTERACTIVE mode by exiting after printing an error message to stderr.  In
+//    INTERACTIVE mode the routines place a message at EPLACE and return an error
+//    value.  For such routines that were previously void, they are now int, and
+//    return 1 if an error occured, 0 otherwise.
+
+#ifdef INTERACTIVE
+
+#define EPRINTF sprintf
+#define EPLACE  Ebuffer
+#define EXIT(x) return (x)
+
+#else // BATCH
+
+#define EPRINTF fprintf
+#define EPLACE  stderr
+#define EXIT(x) exit (1)
+
+#endif
+
+typedef unsigned char      uint8;
+typedef unsigned short     uint16;
+typedef unsigned int       uint32;
+typedef unsigned long long uint64;
+typedef signed char        int8;
+typedef signed short       int16;
+typedef signed int         int32;
+typedef signed long long   int64;
+typedef float              float32;
+typedef double             float64;
+
+
+/*******************************************************************************************
+ *
+ *  COMMAND LINE INTERPRETATION MACROS
+ *
+ ********************************************************************************************/
+
+extern char *Prog_Name;   //  Name of program
+
+#ifdef INTERACTIVE
+
+extern char Ebuffer[];
+
+#endif
+
+#define SYSTEM_ERROR							\
+  { EPRINTF(EPLACE,"%s: System error, read failed!\n",Prog_Name);	\
+    exit (2);								\
+  }
+
+#define ARG_INIT(name)                  \
+  Prog_Name = Strdup(name,"");          \
+  for (i = 0; i < 128; i++)             \
+    flags[i] = 0;
+
+#define ARG_FLAGS(set)                                                                  \
+  for (k = 1; argv[i][k] != '\0'; k++)                                                  \
+    { if (index(set,argv[i][k]) == NULL)                                                \
+        { fprintf(stderr,"%s: -%c is an illegal option\n",Prog_Name,argv[i][k]);        \
+          exit (1);                                                                     \
+        }                                                                               \
+      flags[(int) argv[i][k]] = 1;                                                      \
+    }
+
+#define ARG_POSITIVE(var,name)                                                          \
+  var = strtol(argv[i]+2,&eptr,10);                                                     \
+  if (*eptr != '\0' || argv[i][2] == '\0')                                              \
+    { fprintf(stderr,"%s: -%c '%s' argument is not an integer\n",			\
+                     Prog_Name,argv[i][1],argv[i]+2);      				\
+      exit (1);                                                                         \
+    }                                                                                   \
+  if (var <= 0)                                                                         \
+    { fprintf(stderr,"%s: %s must be positive (%d)\n",Prog_Name,name,var);              \
+      exit (1);                                                                         \
+    }
+
+#define ARG_NON_NEGATIVE(var,name)                                                      \
+  var = strtol(argv[i]+2,&eptr,10);                                                     \
+  if (*eptr != '\0' || argv[i][2] == '\0')                                              \
+    { fprintf(stderr,"%s: -%c '%s' argument is not an integer\n",			\
+                     Prog_Name,argv[i][1],argv[i]+2);      				\
+      exit (1);                                                                         \
+    }                                                                                   \
+  if (var < 0)	                                                                        \
+    { fprintf(stderr,"%s: %s must be non-negative (%d)\n",Prog_Name,name,var);          \
+      exit (1);                                                                         \
+    }
+
+#define ARG_REAL(var)                                                                   \
+  var = strtod(argv[i]+2,&eptr);                                                        \
+  if (*eptr != '\0' || argv[i][2] == '\0')                                              \
+    { fprintf(stderr,"%s: -%c '%s' argument is not a real number\n",			\
+                     Prog_Name,argv[i][1],argv[i]+2);      				\
+      exit (1);                                                                         \
+    }
+
+/*******************************************************************************************
+ *
+ *  UTILITIES
+ *
+ ********************************************************************************************/
+
+//  The following general utilities return NULL if any of their input pointers are NULL, or if they
+//    could not perform their function (in which case they also print an error to stderr).
+
+void *Malloc(int64 size, char *mesg);                    //  Guarded versions of malloc, realloc
+void *Realloc(void *object, int64 size, char *mesg);     //  and strdup, that output "mesg" to
+char *Strdup(char *string, char *mesg);                  //  stderr if out of memory
+
+FILE *Fopen(char *path, char *mode);     // Open file path for "mode"
+char *PathTo(char *path);                // Return path portion of file name "path"
+char *Root(char *path, char *suffix);    // Return the root name, excluding suffix, of "path"
+
+// Catenate returns concatenation of path.sep.root.suffix in a *temporary* buffer
+// Numbered_Suffix returns concatenation of left.<num>.right in a *temporary* buffer
+
+char *Catenate(char *path, char *sep, char *root, char *suffix);
+char *Numbered_Suffix(char *left, int num, char *right);
+
+
+// DB-related utilities
+
+void Print_Number(int64 num, int width, FILE *out);   //  Print readable big integer
+int  Number_Digits(int64 num);                        //  Return # of digits in printed number
+
+#define COMPRESSED_LEN(len)  (((len)+3) >> 2)
+
+void   Compress_Read(int len, char *s);   //  Compress read in-place into 2-bit form
+void Uncompress_Read(int len, char *s);   //  Uncompress read in-place into numeric form
+void      Print_Read(char *s, int width);
+
+void Lower_Read(char *s);     //  Convert read from numbers to lowercase letters (0-3 to acgt)
+void Upper_Read(char *s);     //  Convert read from numbers to uppercase letters (0-3 to ACGT)
+void Number_Read(char *s);    //  Convert read from letters to numbers
+
+
+/*******************************************************************************************
+ *
+ *  DB IN-CORE DATA STRUCTURES
+ *
+ ********************************************************************************************/
+
+#define DB_QV   0x03ff   //  Mask for 3-digit quality value
+#define DB_CSS  0x0400   //  This is the second or later of a group of reads from a given insert
+#define DB_BEST 0x0800   //  This is the longest read of a given insert (may be the only 1)
+
+//  Fields have different interpretations if a .db versus a .dam
+
+typedef struct
+  { int     origin; //  Well # (DB), Contig # (DAM)
+    int     rlen;   //  Length of the sequence (Last pulse = fpulse + rlen)
+    int     fpulse; //  First pulse (DB), left index of contig in scaffold (DAM)
+    int64   boff;   //  Offset (in bytes) of compressed read in 'bases' file, or offset of
+                    //    uncompressed bases in memory block
+    int64   coff;   //  Offset (in bytes) of compressed quiva streams in '.qvs' file (DB),
+                    //  Offset (in bytes) of scaffold header string in '.hdr' file (DAM)
+    int     flags;  //  QV of read + flags above (DB only)
+  } HITS_READ;
+
+//  A track can be of 3 types:
+//    data == NULL: there are nreads 'anno' records of size 'size'.
+//    data != NULL && size == 4: anno is an array of nreads+1 int's and data[anno[i]..anno[i+1])
+//                                    contains the variable length data
+//    data != NULL && size == 8: anno is an array of nreads+1 int64's and data[anno[i]..anno[i+1])
+//                                    contains the variable length data
+
+typedef struct _track
+  { struct _track *next;  //  Link to next track
+    char          *name;  //  Symbolic name of track
+    int            size;  //  Size in bytes of anno records
+    void          *anno;  //  over [0,nreads]: read i annotation: int, int64, or 'size' records 
+    void          *data;  //     data[anno[i] .. anno[i+1]-1] is data if data != NULL
+  } HITS_TRACK;
+
+//  The information for accessing QV streams is in a HITS_QV record that is a "pseudo-track"
+//    named ". at qvs" and is always the first track record in the list (if present).  Since normal
+//    track names cannot begin with a . (this is enforced), this pseudo-track is never confused
+//    with a normal track.
+
+typedef struct
+  { struct _track *next;
+    char          *name;
+    int            ncodes;  //  # of coding tables
+    QVcoding      *coding;  //  array [0..ncodes-1] of coding schemes (see QV.h)
+    uint16        *table;   //  for i in [0,db->nreads-1]: read i should be decompressed with
+                            //    scheme coding[table[i]]
+    FILE          *quiva;   //  the open file pointer to the .qvs file
+  } HITS_QV;
+
+//  The DB record holds all information about the current state of an active DB including an
+//    array of HITS_READS, one per read, and a linked list of HITS_TRACKs the first of which
+//    is always a HITS_QV pseudo-track (if the QVs have been loaded).
+
+typedef struct
+  { int         ureads;     //  Total number of reads in untrimmed DB
+    int         treads;     //  Total number of reads in trimmed DB
+    int         cutoff;     //  Minimum read length in block (-1 if not yet set)
+    int         all;        //  Consider multiple reads from a given well
+    float       freq[4];    //  frequency of A, C, G, T, respectively
+
+    //  Set with respect to "active" part of DB (all vs block, untrimmed vs trimmed)
+
+    int         maxlen;     //  length of maximum read (initially over all DB)
+    int64       totlen;     //  total # of bases (initially over all DB)
+
+    int         nreads;     //  # of reads in actively loaded portion of DB
+    int         trimmed;    //  DB has been trimmed by cutoff/all
+    int         part;       //  DB block (if > 0), total DB (if == 0)
+    int         ufirst;     //  Index of first read in block (without trimming)
+    int         tfirst;     //  Index of first read in block (with trimming)
+
+       //  In order to avoid forcing users to have to rebuild all thier DBs to accommodate
+       //    the addition of fields for the size of the actively loaded trimmed and untrimmed
+       //    blocks, an additional read record is allocated in "reads" when a DB is loaded into
+       //    memory (reads[-1]) and the two desired fields are crammed into the first two
+       //    integer spaces of the record.
+
+    char       *path;       //  Root name of DB for .bps, .qvs, and tracks
+    int         loaded;     //  Are reads loaded in memory?
+    void       *bases;      //  file pointer for bases file (to fetch reads from),
+                            //    or memory pointer to uncompressed block of all sequences.
+    HITS_READ  *reads;      //  Array [-1..nreads] of HITS_READ
+    HITS_TRACK *tracks;     //  Linked list of loaded tracks
+  } HITS_DB; 
+
+
+/*******************************************************************************************
+ *
+ *  DB STUB FILE FORMAT = NFILE FDATA^nfile NBLOCK PARAMS BDATA^nblock
+ *
+ ********************************************************************************************/
+
+#define MAX_NAME 10000      //  Longest file name or fasta header line
+
+#define DB_NFILE  "files = %9d\n"   //  number of files
+#define DB_FDATA  "  %9d %s %s\n"   //  last read index + 1, fasta prolog, file name
+#define DB_NBLOCK "blocks = %9d\n"  //  number of blocks
+#define DB_PARAMS "size = %10lld cutoff = %9d all = %1d\n"  //  block size, len cutoff, all in well
+#define DB_BDATA  " %9d %9d\n"      //  First read index (untrimmed), first read index (trimmed)
+
+
+/*******************************************************************************************
+ *
+ *  DB ROUTINES
+ *
+ ********************************************************************************************/
+
+  // Suppose DB is the name of an original database.  Then there will be files .DB.idx, .DB.bps,
+  //    .DB.qvs, and files .DB.<track>.anno and DB.<track>.data where <track> is a track name
+  //    (not containing a . !).
+
+  // A DAM is basically a DB except that:
+  //    1. there are no QV's, instead .coff points the '\0' terminated fasta header of the read
+  //          in the file .<dam>.hdr file
+  //    2. .origin contains the contig # of the read within a fasta entry (assembly sequences
+  //          contain N-separated contigs), and .fpulse the first base of the contig in the
+  //          fasta entry
+
+  // Open the given database or dam, "path" into the supplied HITS_DB record "db". If the name has
+  //   a part # in it then just the part is opened.  The index array is allocated (for all or
+  //   just the part) and read in.
+  // Return status of routine:
+  //    -1: The DB could not be opened for a reason reported by the routine to EPLACE
+  //     0: Open of DB proceeded without mishap
+  //     1: Open of DAM proceeded without mishap
+
+int Open_DB(char *path, HITS_DB *db);
+
+  // Trim the DB or part thereof and all loaded tracks according to the cutoff and all settings
+  //   of the current DB partition.  Reallocate smaller memory blocks for the information kept
+  //   for the retained reads.
+
+void Trim_DB(HITS_DB *db);
+
+  // Shut down an open 'db' by freeing all associated space, including tracks and QV structures,
+  //   and any open file pointers.  The record pointed at by db however remains (the user
+  //   supplied it and so should free it).
+
+void Close_DB(HITS_DB *db);
+
+  // Return the size in bytes of the given DB
+
+int64 sizeof_DB(HITS_DB *db);
+
+  // If QV pseudo track is not already in db's track list, then load it and set it up.
+  //   The database must not have been trimmed yet.  -1 is returned if a .qvs file is not
+  //   present, and 1 is returned if an error (reported to EPLACE) occured and INTERACTIVE
+  //   is defined.  Otherwise a 0 is returned.
+
+int Load_QVs(HITS_DB *db);
+
+  // Remove the QV pseudo track, all space associated with it, and close the .qvs file.
+
+void Close_QVs(HITS_DB *db);
+
+  // Look up the file and header in the file of the indicated track.  Return:
+  //     1: Track is for trimmed DB
+  //     0: Track is for untrimmed DB
+  //    -1: Track is not the right size of DB either trimmed or untrimmed
+  //    -2: Could not find the track
+  // In addition, if opened (0 or 1 returned), then kind points at an integer indicating
+  //   the type of track as follows:
+  //      CUSTOM  0 => a custom track
+  //      MASK    1 => a mask track
+
+#define CUSTOM_TRACK 0
+#define   MASK_TRACK 1
+
+int Check_Track(HITS_DB *db, char *track, int *kind);
+
+  // If track is not already in the db's track list, then allocate all the storage for it,
+  //   read it in from the appropriate file, add it to the track list, and return a pointer
+  //   to the newly created HITS_TRACK record.  If the track does not exist or cannot be
+  //   opened for some reason, then NULL is returned if INTERACTIVE is defined.  Otherwise
+  //   the routine prints an error message to stderr and exits if an error occurs, and returns
+  //   with NULL only if the track does not exist.
+
+HITS_TRACK *Load_Track(HITS_DB *db, char *track);
+
+  // If track is on the db's track list, then it is removed and all storage associated with it
+  //   is freed.
+
+void Close_Track(HITS_DB *db, char *track);
+
+  // Allocate and return a buffer big enough for the largest read in 'db'.
+  // **NB** free(x-1) if x is the value returned as *prefix* and suffix '\0'(4)-byte
+  // are needed by the alignment algorithms.  If cannot allocate memory then return NULL
+  // if INTERACTIVE is defined, or print error to stderr and exit otherwise.
+
+char *New_Read_Buffer(HITS_DB *db);
+
+  // Load into 'read' the i'th read in 'db'.  As a lower case ascii string if ascii is 1, an
+  //   upper case ascii string if ascii is 2, and a numeric string over 0(A), 1(C), 2(G), and 3(T)
+  //   otherwise.  A '\0' (or 4) is prepended and appended to the string so it has a delimeter
+  //   for traversals in either direction.  A non-zero value is returned if an error occured
+  //   and INTERACTIVE is defined.
+
+int  Load_Read(HITS_DB *db, int i, char *read, int ascii);
+
+  // Load into 'read' the subread [beg,end] of the i'th read in 'db' and return a pointer to the
+  //   the start of the subinterval (not necessarily = to read !!! ).  As a lower case ascii
+  //   string if ascii is 1, an upper case ascii string if ascii is 2, and a numeric string
+  //   over 0(A), 1(C), 2(G), and 3(T) otherwise.  A '\0' (or 4) is prepended and appended to
+  //   the string holding the substring so it has a delimeter for traversals in either direction.
+  //   A NULL pointer is returned if an error occured and INTERACTIVE is defined.
+
+char *Load_Subread(HITS_DB *db, int i, int beg, int end, char *read, int ascii);
+
+  // Allocate a set of 5 vectors large enough to hold the longest QV stream that will occur
+  //   in the database.  If cannot allocate memory then return NULL if INTERACTIVE is defined,
+  //   or print error to stderr and exit otherwise.
+
+#define DEL_QV  0   //  The deletion QVs are x[DEL_QV] if x is the buffer returned by New_QV_Buffer
+#define DEL_TAG 1   //  The deleted characters
+#define INS_QV  2   //  The insertion QVs
+#define SUB_QV  3   //  The substitution QVs
+#define MRG_QV  4   //  The merge QVs
+
+char **New_QV_Buffer(HITS_DB *db);
+
+  // Load into 'entry' the 5 QV vectors for i'th read in 'db'.  The deletion tag or characters
+  //   are converted to a numeric or upper/lower case ascii string as per ascii.  Return with
+  //   a zero, except when an error occurs and INTERACTIVE is defined in which case return wtih 1.
+
+int   Load_QVentry(HITS_DB *db, int i, char **entry, int ascii);
+
+  // Allocate a block big enough for all the uncompressed sequences, read them into it,
+  //   reset the 'off' in each read record to be its in-memory offset, and set the
+  //   bases pointer to point at the block after closing the bases file.  If ascii is
+  //   1 then the reads are converted to lowercase ascii, if 2 then uppercase ascii, and
+  //   otherwise the reads are left as numeric strings over 0(A), 1(C), 2(G), and 3(T).
+  //   Return with a zero, except when an error occurs and INTERACTIVE is defined in which
+  //   case return wtih 1.
+
+int Read_All_Sequences(HITS_DB *db, int ascii);
+
+  // For the DB or DAM "path" = "prefix/root.[db|dam]", find all the files for that DB, i.e. all
+  //   those of the form "prefix/[.]root.part" and call actor with the complete path to each file
+  //   pointed at by path, and the suffix of the path by extension.  The . proceeds the root
+  //   name if the defined constant HIDE_FILES is set.  Always the first call is with the
+  //   path "prefix/root.[db|dam]" and extension "db" or "dam".  There will always be calls for
+  //   "prefix/[.]root.idx" and "prefix/[.]root.bps".  All other calls are for *tracks* and
+  //   so this routine gives one a way to know all the tracks associated with a given DB.
+  //   -1 is returned if the path could not be found, and 1 is returned if an error (reported
+  //   to EPLACE) occured and INTERACTIVE is defined.  Otherwise a 0 is returned.
+
+int List_DB_Files(char *path, void actor(char *path, char *extension));
+
+#endif // _HITS_DB
diff --git a/DAZZ_DB/DB2fasta.c b/DAZZ_DB/DB2fasta.c
new file mode 100644
index 0000000..eb769be
--- /dev/null
+++ b/DAZZ_DB/DB2fasta.c
@@ -0,0 +1,180 @@
+/********************************************************************************************
+ *
+ *  Recreate all the .fasta files that have been loaded into a specified database.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  May 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "DB.h"
+
+static char *Usage = "[-vU] [-w<int(80)>] <path:db>";
+
+int main(int argc, char *argv[])
+{ HITS_DB    _db, *db = &_db;
+  FILE       *dbfile;
+  int         VERBOSE, UPPER, WIDTH;
+
+  //  Process arguments
+
+  { int   i, j, k;
+    int   flags[128];
+    char *eptr;
+
+    ARG_INIT("DB2fasta")
+
+    WIDTH = 80;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vU")
+            break;
+          case 'w':
+            ARG_NON_NEGATIVE(WIDTH,"Line width")
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    UPPER   = 1 + flags['U'];
+    VERBOSE = flags['v'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open db, and db stub file
+
+  { int   status;
+    char *pwd, *root;
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+    if (status == 1)
+      { fprintf(stderr,"%s: Cannot be called on a .dam index: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+    if (db->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    pwd    = PathTo(argv[1]);
+    root   = Root(argv[1],".db");
+    dbfile = Fopen(Catenate(pwd,"/",root,".db"),"r");
+    free(pwd);
+    free(root);
+    if (dbfile == NULL)
+      exit (1);
+  }
+
+  //  For each cell do:
+
+  { HITS_READ  *reads;
+    char        lname[MAX_NAME];
+    FILE       *ofile = NULL;
+    int         f, first, last, ofirst, nfiles;
+    char       *read;
+
+    if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
+      SYSTEM_ERROR
+
+    reads = db->reads;
+    read  = New_Read_Buffer(db);
+    first = ofirst = 0;
+    for (f = 0; f < nfiles; f++)
+      { int   i;
+        char  prolog[MAX_NAME], fname[MAX_NAME];
+
+        //  Scan db image file line, create .fasta file for writing
+
+        if (fscanf(dbfile,DB_FDATA,&last,fname,prolog) != 3)
+          SYSTEM_ERROR
+
+        if (f == 0 || strcmp(fname,lname) != 0)
+          { if (f > 0)
+              { if (ofile == stdout)
+                  { fprintf(stderr," %d reads\n",first-ofirst);
+                    fflush(stderr);
+                  }
+                else
+                  fclose(ofile);
+              }
+
+            if (strcmp(fname,"stdout") == 0)
+              { ofile  = stdout;
+                ofirst = first;
+
+                if (VERBOSE)
+                  { fprintf(stderr,"Sending to stdout ...");
+                    fflush(stdout);
+                  }
+              }
+            else
+              { if ((ofile = Fopen(Catenate(".","/",fname,".fasta"),"w")) == NULL)
+                  exit (1);
+
+                if (VERBOSE)
+                  { fprintf(stderr,"Creating %s.fasta ...\n",fname);
+                    fflush(stdout);
+                  }
+              }
+
+            strcpy(lname,fname);
+          }
+
+        //   For the relevant range of reads, write each to the file
+        //     recreating the original headers with the index meta-data about each read
+
+        for (i = first; i < last; i++)
+          { int        j, len;
+            int        flags, qv;
+            HITS_READ *r;
+
+            r     = reads + i;
+            len   = r->rlen;
+            flags = r->flags;
+            qv    = (flags & DB_QV);
+            fprintf(ofile,">%s/%d/%d_%d",prolog,r->origin,r->fpulse,r->fpulse+len);
+            if (qv > 0)
+              fprintf(ofile," RQ=0.%3d",qv);
+            fprintf(ofile,"\n");
+
+            Load_Read(db,i,read,UPPER);
+
+            for (j = 0; j+WIDTH < len; j += WIDTH)
+              fprintf(ofile,"%.*s\n",WIDTH,read+j);
+            if (j < len)
+              fprintf(ofile,"%s\n",read+j);
+          }
+
+        first = last;
+      }
+
+    if (f > 0)
+      { if (ofile == stdout)
+          { fprintf(stderr," %d reads\n",first-ofirst);
+            fflush(stderr);
+          }
+        else
+          fclose(ofile);
+      }
+  }
+
+  fclose(dbfile);
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DB2quiva.c b/DAZZ_DB/DB2quiva.c
new file mode 100644
index 0000000..a7b93da
--- /dev/null
+++ b/DAZZ_DB/DB2quiva.c
@@ -0,0 +1,189 @@
+/********************************************************************************************
+ *
+ *  Recreate all the .quiva files that have been loaded into a specified database.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  May 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "DB.h"
+#include "QV.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-vU] <path:db>";
+
+int main(int argc, char *argv[])
+{ HITS_DB    _db, *db = &_db;
+  FILE       *dbfile, *quiva;
+  int         VERBOSE, UPPER;
+
+  //  Process arguments
+
+  { int   i, j, k;
+    int   flags[128];
+
+    ARG_INIT("DB2quiva")
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        { ARG_FLAGS("vU") }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+    UPPER   = flags['U'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open db, db stub file, and .qvs file
+
+  { char *pwd, *root;
+    int   status;
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+    if (status == 1)
+      { fprintf(stderr,"%s: Cannot be called on a .dam index: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+    if (db->part > 0)
+      { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+        exit (1);
+      }
+
+    pwd    = PathTo(argv[1]);
+    root   = Root(argv[1],".db");
+    dbfile = Fopen(Catenate(pwd,"/",root,".db"),"r");
+    quiva  = Fopen(Catenate(pwd,PATHSEP,root,".qvs"),"r");
+    free(pwd);
+    free(root);
+    if (dbfile == NULL || quiva == NULL)
+      exit (1);
+  }
+
+  //  For each cell do:
+
+  { HITS_READ  *reads;
+    char        lname[MAX_NAME];
+    FILE       *ofile = NULL;
+    int         f, first, last, ofirst, nfiles;
+    QVcoding   *coding;
+    char      **entry;
+
+    if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
+      SYSTEM_ERROR
+
+    reads = db->reads;
+    entry = New_QV_Buffer(db);
+    first = ofirst = 0;
+    for (f = 0; f < nfiles; f++)
+      { int   i;
+        char  prolog[MAX_NAME], fname[MAX_NAME];
+
+        //  Scan db image file line, create .quiva file for writing
+
+        if (reads[first].coff < 0) break;
+
+        if (fscanf(dbfile,DB_FDATA,&last,fname,prolog) != 3)
+          SYSTEM_ERROR
+
+        if (f == 0 || strcmp(fname,lname) != 0)
+          { if (f > 0)
+              { if (ofile == stdout)
+                  { fprintf(stderr," %d quivas\n",first-ofirst);
+                    fflush(stderr);
+                  }
+                else
+                  fclose(ofile);
+              }
+
+            if (strcmp(fname,"stdout") == 0)
+              { ofile  = stdout;
+                ofirst = first;
+
+                if (VERBOSE)
+                  { fprintf(stderr,"Sending to stdout ...");
+                    fflush(stdout);
+                  }
+              }
+            else
+              { if ((ofile = Fopen(Catenate(".","/",fname,".quiva"),"w")) == NULL)
+                  exit (1);
+
+                if (VERBOSE)
+                  { fprintf(stderr,"Creating %s.quiva ...\n",fname);
+                    fflush(stderr);
+                  }
+              }
+
+            strcpy(lname,fname);
+          }
+
+        //   For the relevant range of reads, write the header for each to the file
+        //     and then uncompress and write the quiva entry for each
+
+        coding = Read_QVcoding(quiva);
+
+        for (i = first; i < last; i++)
+          { int        e, flags, qv, rlen;
+            HITS_READ *r;
+
+            r     = reads + i;
+            flags = r->flags;
+            rlen  = r->rlen;
+            qv    = (flags & DB_QV);
+            fprintf(ofile,"@%s/%d/%d_%d",prolog,r->origin,r->fpulse,r->fpulse+rlen);
+            if (qv > 0)
+              fprintf(ofile," RQ=0.%3d",qv);
+            fprintf(ofile,"\n");
+
+            Uncompress_Next_QVentry(quiva,entry,coding,rlen);
+
+            if (UPPER)
+              { char *deltag = entry[1];
+                int   j;
+
+                for (j = 0; j < rlen; j++)
+                  deltag[j] -= 32;
+              }
+
+            for (e = 0; e < 5; e++)
+              fprintf(ofile,"%.*s\n",rlen,entry[e]);
+          }
+
+        first = last;
+      }
+
+    if (f > 0)
+      { if (ofile == stdout)
+          { fprintf(stderr," %d quivas\n",first-ofirst);
+            fflush(stderr);
+          }
+        else
+          fclose(ofile);
+      }
+  }
+
+  fclose(quiva);
+  fclose(dbfile);
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBdump.c b/DAZZ_DB/DBdump.c
new file mode 100644
index 0000000..735e726
--- /dev/null
+++ b/DAZZ_DB/DBdump.c
@@ -0,0 +1,784 @@
+/*******************************************************************************************
+ *
+ *  Display a portion of the data-base and selected information in 1-code format.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  November 2015
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage[] =
+    { "[-rhsiqp] [-uU] [-m<track>]+",
+      "          <path:db|dam> [ <reads:FILE> | <reads:range> ... ]"
+    };
+
+#define LAST_READ_SYMBOL   '$'
+#define MAX_BUFFER       10001
+
+typedef struct
+  { FILE  *input;
+    int    lineno;
+    int    read;
+    int    beg;
+    int    end;
+  } File_Iterator;
+
+File_Iterator *init_file_iterator(FILE *input)
+{ File_Iterator *it;
+
+  it = Malloc(sizeof(File_Iterator),"Allocating file iterator");
+  it->input = input;
+  it->lineno = 1;
+  rewind(input);
+  return (it);
+}
+
+int next_read(File_Iterator *it)
+{ static char nbuffer[MAX_BUFFER];
+
+  char *eol;
+  int   x;
+
+  if (fgets(nbuffer,MAX_BUFFER,it->input) == NULL)
+    { if (feof(it->input))
+        return (1);
+      SYSTEM_ERROR;
+    }
+  if ((eol = index(nbuffer,'\n')) == NULL)
+    { fprintf(stderr,"%s: Line %d in read list is longer than %d chars!\n",
+                     Prog_Name,it->lineno,MAX_BUFFER-1);
+      return (1);
+    }
+  *eol = '\0';
+  x = sscanf(nbuffer," %d %d %d",&(it->read),&(it->beg),&(it->end));
+  if (x == 1)
+    it->beg = -1;
+  else if (x != 3)
+    { fprintf(stderr,"%s: Line %d of read list is improperly formatted\n",Prog_Name,it->lineno);
+      return (1);
+    }
+  it->lineno += 1;
+  return (0);
+}
+
+static int qv_map[51] =
+  { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
+    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
+    'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
+    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
+    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+    'Y'
+  };
+
+static int prof_map[41] =
+  { '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
+    'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
+    't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C',
+    'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+    'N',
+  };
+
+int main(int argc, char *argv[])
+{ HITS_DB    _db, *db = &_db;
+  FILE       *hdrs = NULL;
+  int64      *qv_idx = NULL;
+  uint8      *qv_val = NULL;
+  int64      *pf_idx = NULL;
+  uint8      *pf_val = NULL;
+
+  int         nfiles;
+  char      **flist = NULL;
+  int        *findx = NULL;
+
+  int            input_pts;
+  int            reps = 0;
+  int           *pts  = NULL;
+  File_Iterator *iter = NULL;
+  FILE          *input = NULL;
+
+  int         TRIM, UPPER;
+  int         DORED, DOSEQ, DOQVS, DOHDR, DOIQV, DOPRF, DAM;
+
+  int          MMAX, MTOP;
+  char       **MASK;
+  HITS_TRACK **MTRACK;
+
+  //  Process arguments
+
+  { int  i, j, k;
+    int  flags[128];
+
+    ARG_INIT("DBdump")
+
+    MTOP  = 0;
+    MMAX  = 10;
+    MASK  = (char **) Malloc(MMAX*sizeof(char *),"Allocating mask track array");
+    if (MASK == NULL)
+      exit (1);
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("hpqrsiuU")
+            break;
+          case 'm':
+            if (MTOP >= MMAX)
+              { MMAX = 1.2*MTOP + 10;
+                MASK = (char **) Realloc(MASK,MMAX*sizeof(char *),"Reallocating mask track array");
+                if (MASK == NULL)
+                  exit (1);
+              }
+            MASK[MTOP++] = argv[i]+2;
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    DAM   = 0;
+    TRIM  = 1-flags['u'];
+    UPPER = 1+flags['U'];
+    DOQVS = flags['q'];
+    DORED = flags['r'];
+    DOSEQ = flags['s'];
+    DOHDR = flags['h'];
+    DOIQV = flags['i'];
+    DOPRF = flags['p'];
+
+    if (argc <= 1)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        exit (1);
+      }
+
+    if ( ! TRIM && DOIQV)
+      { fprintf(stderr,"%s: -i and -u are incompatible\n",Prog_Name);
+        exit (1);
+      }
+    if ( ! TRIM && DOPRF)
+      { fprintf(stderr,"%s: -p and -u are incompatible\n",Prog_Name);
+        exit (1);
+      }
+  }
+
+  //  Open DB or DAM, and if a DAM open also .hdr file
+
+  { char *pwd, *root;
+    int   status;
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+    if (status == 1)
+      { root   = Root(argv[1],".dam");
+        pwd    = PathTo(argv[1]);
+
+        if (db->part > 0)
+          *rindex(root,'.') = '\0';
+        hdrs = Fopen(Catenate(pwd,PATHSEP,root,".hdr"),"r");
+        if (hdrs == NULL)
+          exit (1);
+        DAM = 1;
+        if (DOQVS)
+          { fprintf(stderr,"%s: -Q and -q options not compatible with a .dam DB\n",Prog_Name);
+            exit (1);
+          }
+
+        free(root);
+        free(pwd);
+      }
+  }
+
+  //  Load QVs if requested
+
+  if (DOQVS)
+    { if (Load_QVs(db) < 0)
+        { fprintf(stderr,"%s: QVs requested, but no .qvs for data base\n",Prog_Name);
+          exit (1);
+	}
+    }
+
+  //  Check tracks and load tracks for untrimmed DB
+
+  { int i, status, kind;
+
+    MTRACK = Malloc(sizeof(HITS_TRACK *)*MTOP,"Allocation of track pointer vector");
+    if (MTRACK == NULL)
+      exit (1);
+
+    for (i = 0; i < MTOP; i++)
+      { status = Check_Track(db,MASK[i],&kind);
+        if (status == -2)
+          { fprintf(stderr,"%s: Warning: -m%s option given but no track found.\n",
+                           Prog_Name,MASK[i]);
+            exit (1);
+          }
+        else if (status == -1)
+          { fprintf(stderr,"%s: Warning: %s track not sync'd with db.\n",Prog_Name,MASK[i]);
+            exit (1);
+          }
+        else if (kind != MASK_TRACK)
+          { fprintf(stderr,"%s: Warning: %s track is not a mask track.\n",Prog_Name,MASK[i]);
+            exit (1);
+          }
+        else if (status == 0)
+          MTRACK[i] = Load_Track(db,MASK[i]);
+        else if (status == 1 && !TRIM)
+          { fprintf(stderr,"%s: Warning: %s track is for a trimmed db but -u is set.\n",
+                           Prog_Name,MASK[i]);
+            exit (1);
+          }
+      }
+  }
+
+  //  If not a DAM then get prolog names and index ranges from the .db file 
+
+  if (!DAM)
+    { char *pwd, *root;
+      FILE *dstub;
+      int   i;
+
+      root   = Root(argv[1],".db");
+      pwd    = PathTo(argv[1]);
+      if (db->part > 0)
+        *rindex(root,'.') = '\0';
+      dstub  = Fopen(Catenate(pwd,"/",root,".db"),"r");
+      if (dstub == NULL)
+        exit (1);
+      free(pwd);
+      free(root);
+
+      if (fscanf(dstub,DB_NFILE,&nfiles) != 1)
+        SYSTEM_ERROR
+
+      flist = (char **) Malloc(sizeof(char *)*nfiles,"Allocating file list");
+      findx = (int *) Malloc(sizeof(int *)*(nfiles+1),"Allocating file index");
+      if (flist == NULL || findx == NULL)
+        exit (1);
+
+      findx += 1;
+      findx[-1] = 0;
+
+      for (i = 0; i < nfiles; i++)
+        { char prolog[MAX_NAME], fname[MAX_NAME];
+  
+          if (fscanf(dstub,DB_FDATA,findx+i,fname,prolog) != 3)
+            SYSTEM_ERROR
+          if ((flist[i] = Strdup(prolog,"Adding to file list")) == NULL)
+            exit (1);
+        }
+
+      fclose(dstub);
+
+      //  If TRIM (the default) then "trim" prolog ranges and the DB
+
+      if (TRIM)
+        { int        nid, oid, lid;
+          int        cutoff, allflag;
+          HITS_READ *reads;
+
+          reads  = db->reads - db->ufirst;
+          cutoff = db->cutoff;
+          if (db->all)
+            allflag = 0;
+          else
+            allflag = DB_BEST;
+          
+          nid = 0;
+          oid = db->ufirst;
+          lid = oid + db->nreads;
+          for (i = 0; i < nfiles; i++)
+            { while (oid < findx[i] && oid < lid)
+                { if ((reads[oid].flags & DB_BEST) >= allflag && reads[oid].rlen >= cutoff)
+                    nid++;
+                  oid += 1;
+                }
+              findx[i] = nid;
+            }
+        }
+
+      else if (db->part > 0)
+        { for (i = 0; i < nfiles; i++)
+            findx[i] -= db->ufirst;
+        }
+    }
+
+  if (TRIM)
+    { int i, status, kind;
+
+      Trim_DB(db);
+
+      //  Load tracks for trimmed DB
+
+      for (i = 0; i < MTOP; i++)
+        { status = Check_Track(db,MASK[i],&kind);
+          if (status < 0)
+            continue;
+          else if (status == 1)
+            MTRACK[i] = Load_Track(db,MASK[i]);
+        }
+    }
+
+  if (DOIQV)
+    { int         status, kind;
+      HITS_TRACK *track;
+
+      status = Check_Track(db,"qual",&kind);
+      if (status == -2)
+        { fprintf(stderr,"%s: .qual-track does not exist for this db.\n",Prog_Name);
+          exit (1);
+        }
+      if (status == -1)
+        { fprintf(stderr,"%s: .qual-track not sync'd with db.\n",Prog_Name);
+          exit (1);
+        }
+      track = Load_Track(db,"qual");
+      qv_idx = (int64 *) track->anno;
+      qv_val = (uint8 *) track->data;
+    }
+
+  if (DOPRF)
+    { int         status, kind;
+      HITS_TRACK *track;
+
+      status = Check_Track(db,"prof",&kind);
+      if (status == -2)
+        { fprintf(stderr,"%s: .prof-track does not exist for this db.\n",Prog_Name);
+          exit (1);
+        }
+      if (status == -1)
+        { fprintf(stderr,"%s: .prof-track not sync'd with db.\n",Prog_Name);
+          exit (1);
+        }
+      track = Load_Track(db,"prof");
+      pf_idx = (int64 *) track->anno;
+      pf_val = (uint8 *) track->data;
+    }
+
+  //  Process read index arguments into a list of read ranges
+
+  input_pts = 0;
+  if (argc == 3)
+    { if (argv[2][0] != LAST_READ_SYMBOL || argv[2][1] != '\0')
+        { char *eptr, *fptr;
+          int   b, e;
+
+          b = strtol(argv[2],&eptr,10);
+          if (eptr > argv[2] && b > 0)
+            { if (*eptr == '-')
+                { if (eptr[1] != LAST_READ_SYMBOL || eptr[2] != '\0')
+                    { e = strtol(eptr+1,&fptr,10);
+                      input_pts = (fptr <= eptr+1 || *fptr != '\0' || e <= 0);
+                    }
+                }
+              else
+                input_pts = (*eptr != '\0');
+            }
+          else
+            input_pts = 1;
+        }
+    }
+
+  if (input_pts)
+    { input = Fopen(argv[2],"r");
+      if (input == NULL)
+        exit (1);
+
+      iter = init_file_iterator(input);
+    }
+  else
+    { pts = (int *) Malloc(sizeof(int)*2*(argc-1),"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      reps = 0;
+      if (argc > 2)
+        { int   c, b, e;
+          char *eptr, *fptr;
+
+          for (c = 2; c < argc; c++)
+            { if (argv[c][0] == LAST_READ_SYMBOL)
+                { b = db->nreads;
+                  eptr = argv[c]+1;
+                }
+              else
+                b = strtol(argv[c],&eptr,10);
+              if (eptr > argv[c])
+                { if (b <= 0)
+                    { fprintf(stderr,"%s: %d is not a valid index\n",Prog_Name,b);
+                      exit (1);
+                    }
+                  if (*eptr == 0)
+                    { pts[reps++] = b;
+                      pts[reps++] = b;
+                      continue;
+                    }
+                  else if (*eptr == '-')
+                    { if (eptr[1] == LAST_READ_SYMBOL)
+                        { e = db->nreads;
+                          fptr = eptr+2;
+                        }
+                      else
+                        e = strtol(eptr+1,&fptr,10);
+                      if (fptr > eptr+1 && *fptr == 0 && e > 0)
+                        { pts[reps++] = b;
+                          pts[reps++] = e;
+                          if (b > e)
+                            { fprintf(stderr,"%s: Empty range '%s'\n",Prog_Name,argv[c]);
+                              exit (1);
+                            }
+                          continue;
+                        }
+                    }
+                }
+              fprintf(stderr,"%s: argument '%s' is not an integer range\n",Prog_Name,argv[c]);
+              exit (1);
+            }
+        }
+      else
+        { pts[reps++] = 1;
+          pts[reps++] = db->nreads;
+        }
+    }
+
+  //  Scan to count the size of things
+
+  { HITS_READ  *reads;
+    int         c, b, e, i, m;
+    int         map, substr;
+    int64       noreads;
+    int64       seqmax, seqtot;
+    int64       iqvmax, iqvtot;
+    int64       prfmax, prftot;
+    int64       hdrmax, hdrtot;
+    int64       trkmax[MTOP], trktot[MTOP];
+
+    map    = 0;
+    reads  = db->reads;
+    substr = 0;
+
+    noreads = 0;
+    seqmax = 0;
+    seqtot = 0;
+    iqvmax = 0;
+    iqvtot = 0;
+    prfmax = 0;
+    prftot = 0;
+    hdrmax = 0;
+    hdrmax = 0;
+    hdrtot = 0;
+    for (m = 0; m < MTOP; m++)
+      { trkmax[m] = 0;
+        trktot[m] = 0;
+      }
+
+    c = 0;
+    while (1)
+      { if (input_pts)
+          { if (next_read(iter))
+              break;
+            e = iter->read;
+            b = e-1;
+            substr = (iter->beg >= 0);
+          }
+        else
+          { if (c >= reps)
+              break;
+            b = pts[c]-1;
+            e = pts[c+1];
+            if (e > db->nreads)
+              e = db->nreads;
+            c += 2;
+          }
+
+        for (i = b; i < e; i++)
+          { int         len, ten;
+            int         fst, lst;
+            HITS_READ  *r;
+
+            r   = reads + i;
+            len = r->rlen;
+
+            noreads += 1;
+
+            if (DOHDR)
+              { int ten;
+
+                if (DAM)
+                  { char header[MAX_NAME];
+
+                    fseeko(hdrs,r->coff,SEEK_SET);
+                    fgets(header,MAX_NAME,hdrs);
+                    header[strlen(header)-1] = '\0';
+                    ten = strlen(header);
+                  }
+                else
+                  { while (i < findx[map-1])
+                      map -= 1;
+                    while (i >= findx[map])
+                      map += 1;
+                    ten = strlen(flist[map]);
+                  }
+                if (hdrmax < ten)
+                  hdrmax = ten;
+                hdrtot += ten;
+              }
+
+            for (m = 0; m < MTOP; m++)
+              { int64 *anno;
+
+                anno = (int64 *) MTRACK[m]->anno;
+                ten = ((anno[i+1]-anno[i]) >> 3);
+                if (ten > trkmax[m])
+                  trkmax[m] = ten;
+                trktot[m] += ten;
+              }
+
+            if (substr)
+              { fst = iter->beg;
+                lst = iter->end;
+                if (DOIQV)
+                  { fprintf(stderr,"%s: Cannot select subreads when -i is requested\n",Prog_Name);
+                    exit (1);
+                  }
+                if (DOPRF)
+                  { fprintf(stderr,"%s: Cannot select subreads when -p is requested\n",Prog_Name);
+                    exit (1);
+                  }
+              }
+            else
+              { fst = 0;
+                lst = len;
+              }
+
+            if (DOSEQ | DOQVS)
+              { int ten = lst-fst;
+                if (ten > seqmax)
+                  seqmax = ten;
+                seqtot += ten;
+              }
+            if (DOIQV)
+              { int ten = qv_idx[i+1] - qv_idx[i];
+                if (ten > iqvmax)
+                  iqvmax = ten;
+                iqvtot += ten;
+              }
+            if (DOPRF)
+              { int ten = pf_idx[i+1] - pf_idx[i];
+                if (ten > prfmax)
+                  prfmax = ten;
+                prftot += ten;
+              }
+          }
+      }
+
+    printf("+ R %lld\n",noreads);
+    printf("+ M %d\n",MTOP);
+    if (DOHDR)
+      { printf("+ H %lld\n",hdrtot);
+        printf("@ H %lld\n",hdrmax);
+      }
+    for (m = 0; m < MTOP; m++)
+      { printf("+ T%d %lld\n",m,trktot[m]);
+        printf("@ T%d %lld\n",m,trkmax[m]);
+      }
+    if (DOSEQ | DOQVS)
+      { printf("+ S %lld\n",seqtot);
+        printf("@ S %lld\n",seqmax);
+      }
+    if (DOIQV)
+      { printf("+ I %lld\n",iqvtot);
+        printf("@ I %lld\n",iqvmax);
+      }
+    if (DOPRF)
+      { printf("+ P %lld\n",prftot);
+        printf("@ P %lld\n",prfmax);
+      }
+  }
+
+  //  Display each read (and/or QV streams) in the active DB according to the
+  //    range pairs in pts[0..reps) and according to the display options.
+
+  { HITS_READ  *reads;
+    char       *read, **entry;
+    int         c, b, e, i, m;
+    int         substr;
+    int         map;
+    char        qvname[5] = { 'd', 'c', 'i', 'm', 's' };
+
+    read  = New_Read_Buffer(db);
+    if (DOQVS)
+      entry = New_QV_Buffer(db);
+    else
+      entry = NULL;
+
+    map    = 0;
+    reads  = db->reads;
+    substr = 0;
+
+    if (input_pts)
+      iter = init_file_iterator(input);
+    else
+      iter = NULL;
+
+    c = 0;
+    while (1)
+      { if (input_pts)
+          { if (next_read(iter))
+              break;
+            e = iter->read;
+            b = e-1;
+            substr = (iter->beg >= 0);
+          }
+        else
+          { if (c >= reps)
+              break;
+            b = pts[c]-1;
+            e = pts[c+1];
+            if (e > db->nreads)
+              e = db->nreads;
+            c += 2;
+          }
+
+        for (i = b; i < e; i++)
+          { int         len;
+            int         fst, lst;
+            int         flags, qv;
+            HITS_READ  *r;
+
+            r   = reads + i;
+            len = r->rlen;
+            if (DORED)
+              printf("R %d\n",i+1);
+
+            flags = r->flags;
+            qv    = (flags & DB_QV);
+            if (DOHDR)
+              { if (DAM)
+                  { char header[MAX_NAME];
+
+                    fseeko(hdrs,r->coff,SEEK_SET);
+                    fgets(header,MAX_NAME,hdrs);
+                    header[strlen(header)-1] = '\0';
+                    printf("H %ld %s\n",strlen(header),header);
+                    printf("L %d %d %d\n",r->origin,r->fpulse,r->fpulse+len);
+                  }
+                else
+                  { while (i < findx[map-1])
+                      map -= 1;
+                    while (i >= findx[map])
+                      map += 1;
+                    printf("H %ld %s\n",strlen(flist[map]),flist[map]);
+                    printf("L %d %d %d\n",r->origin,r->fpulse,r->fpulse+len);
+                    if (qv > 0)
+                      printf("Q: %d\n",qv);
+                  }
+              }
+
+            if (DOQVS)
+              Load_QVentry(db,i,entry,UPPER);
+            if (DOSEQ)
+              Load_Read(db,i,read,UPPER);
+
+            for (m = 0; m < MTOP; m++)
+              { int64 *anno;
+                int   *data;
+                int64  s, f, j;
+
+                anno = (int64 *) MTRACK[m]->anno;
+                data = (int *) MTRACK[m]->data;
+
+                s = (anno[i] >> 2);
+                f = (anno[i+1] >> 2);
+                printf("T%d %lld ",m,(f-s)/2);
+                if (s < f)
+                  { for (j = s; j < f; j += 2)
+                      printf(" %d %d",data[j],data[j+1]);
+                  }
+                printf("\n");
+              }
+
+            if (substr)
+              { fst = iter->beg;
+                lst = iter->end;
+              }
+            else
+              { fst = 0;
+                lst = len;
+              }
+
+            if (DOSEQ)
+              { printf("S %d ",lst-fst);
+                printf("%.*s\n",lst-fst,read+fst);
+              }
+
+            if (DOIQV)
+              { int64 k, e;
+
+                k = qv_idx[i];
+                e = qv_idx[i+1];
+                printf("I %lld ",e-k);
+                while (k < e)
+                  putchar(qv_map[qv_val[k++]]);
+                printf("\n");
+              }
+
+            if (DOPRF)
+              { int64 k, e;
+
+                k = pf_idx[i];
+                e = pf_idx[i+1];
+                printf("P %lld ",e-k);
+                while (k < e)
+                  putchar(prof_map[pf_val[k++]]);
+                printf("\n");
+              }
+
+            if (DOQVS)
+              { int k;
+
+                for (k = 0; k < 5; k++)
+                  { printf("%c %d ",qvname[k],lst-fst);
+                    printf("%.*s\n",lst-fst,entry[k]+fst);
+                  }
+              }
+          }
+      }
+  }
+
+  if (input_pts)
+    { fclose(input);
+      free(iter);
+    }
+  else
+    free(pts);
+
+  if (DAM)
+    fclose(hdrs);
+  else
+    { int i;
+
+      for (i = 0; i < nfiles; i++)
+        free(flist[i]);
+      free(flist);
+      free(findx-1);
+    }
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBdust.c b/DAZZ_DB/DBdust.c
new file mode 100644
index 0000000..3b75400
--- /dev/null
+++ b/DAZZ_DB/DBdust.c
@@ -0,0 +1,471 @@
+/*******************************************************************************************
+ *
+ *  My implementation of the SDUST algorithm (Morgulis et al., JCB 13, 5 (2006), 1028-1040)
+ *
+ *  Author:  Gene Myers
+ *  Date  :  September 2013
+ *  Mod   :  Is now incremental
+ *  Date  :  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <math.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+#undef DEBUG
+
+#ifdef DEBUG
+
+static int Caps[4] = { 'A', 'C', 'G', 'T' };
+static int Lowr[4] = { 'a', 'c', 'g', 't' };
+
+#endif
+
+static char *Usage = "[-b] [-w<int(64)>] [-t<double(2.)>] [-m<int(10)>] <path:db|dam>";
+
+typedef struct _cand
+  { struct _cand *next;
+    struct _cand *prev;
+    int           beg;
+    int           end;
+    double        score;
+  } Candidate;
+
+int main(int argc, char *argv[])
+{ HITS_DB   _db, *db = &_db;
+  FILE      *afile, *dfile;
+  int64      indx;
+  int        nreads;
+  int       *mask;
+  Candidate *cptr;
+
+  int        WINDOW;
+  double     THRESH;
+  int        MINLEN;
+  int        BIASED;
+
+  { int   i, j, k;
+    int   flags[128];
+    char *eptr;
+
+    ARG_INIT("DBdust")
+
+    WINDOW = 64;
+    THRESH = 2.;
+    MINLEN = 9;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("b")
+            break;
+          case 'w':
+            ARG_POSITIVE(WINDOW,"Window size")
+            break;
+          case 't':
+            ARG_REAL(THRESH)
+            if (THRESH <= 0.)
+              { fprintf(stderr,"%s: Threshold must be positive (%g)\n",Prog_Name,THRESH);
+                exit (1);
+              }
+            break;
+          case 'm':
+            ARG_NON_NEGATIVE(MINLEN,"Minimum hit")
+            MINLEN -= 1;
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    BIASED = flags['b'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open .db or .dam
+
+  { int status;
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+  }
+
+  mask = (int *) Malloc((db->maxlen+1)*sizeof(int),"Allocating mask vector");
+  cptr = (Candidate *) Malloc((WINDOW+1)*sizeof(Candidate),"Allocating candidate vector");
+  if (mask == NULL || cptr == NULL)
+    exit (1);
+
+  { char *pwd, *root, *fname;
+    int   size;
+
+    pwd   = PathTo(argv[1]);
+    root  = Root(argv[1],".db");
+    size  = 0;
+
+    fname = Catenate(pwd,PATHSEP,root,".dust.anno");
+    if ((afile = fopen(fname,"r+")) == NULL || db->part > 0)
+      { if (afile != NULL)
+          fclose(afile);
+        afile = Fopen(fname,"w");
+        dfile = Fopen(Catenate(pwd,PATHSEP,root,".dust.data"),"w");
+        if (dfile == NULL || afile == NULL)
+          exit (1);
+        fwrite(&(db->nreads),sizeof(int),1,afile);
+        fwrite(&size,sizeof(int),1,afile);
+        nreads = 0;
+        indx = 0;
+        fwrite(&indx,sizeof(int64),1,afile);
+      }
+    else
+      { dfile = Fopen(Catenate(pwd,PATHSEP,root,".dust.data"),"r+");
+        if (dfile == NULL)
+          exit (1);
+        if (fread(&nreads,sizeof(int),1,afile) != 1)
+          SYSTEM_ERROR
+        if (nreads >= db->nreads)
+          { fclose(afile);
+            fclose(dfile);
+            exit(0);
+          }
+        fseeko(afile,0,SEEK_SET);
+        fwrite(&(db->nreads),sizeof(int),1,afile);
+        fwrite(&size,sizeof(int),1,afile);
+        fseeko(afile,0,SEEK_END);
+        fseeko(dfile,0,SEEK_END);
+        indx = ftello(dfile);
+      }
+
+    free(pwd);
+    free(root);
+  }
+
+  { int       *mask1;
+    char      *read, *lag2;
+    int        wcount[64], lcount[64];
+    Candidate *aptr;
+    double     skew[64], thresh2r;
+    int        thresh2i;
+    int        i;
+
+    read = New_Read_Buffer(db);
+    lag2 = read-2;
+
+    mask1 = mask+1;
+    *mask = -2;
+
+    aptr  = cptr+1;
+    for (i = 1; i < WINDOW; i++)
+      cptr[i].next = aptr+i;
+    cptr[WINDOW].next = NULL;
+
+    cptr->next = cptr->prev = cptr;
+    cptr->beg  = -2;
+
+    thresh2r = 2.*THRESH;
+    thresh2i = (int) ceil(thresh2r);
+
+    if (BIASED)
+      { int a, b, c, p;
+
+        p = 0;
+        for (a = 0; a < 4; a++)
+         for (b = 0; b < 4; b++)
+          for (c = 0; c < 4; c++)
+            skew[p++] = .015625 / (db->freq[a]*db->freq[b]*db->freq[c]);
+      }
+
+    for (i = nreads; i < db->nreads; i++)
+      { Candidate *lptr, *jptr;
+        int       *mtop;
+        double     mscore;
+        int        len;
+        int        wb, lb;
+        int        j, c, d;
+
+        len = db->reads[i].rlen;	  //  Fetch read
+        Load_Read(db,i,read,0);
+
+        c = (read[0] << 2) | read[1];     //   Convert to triple codes
+        for (j = 2; j < len; j++)
+          { c = ((c << 2) & 0x3f) | read[j];
+            lag2[j] = (char) c;
+          }
+        len -= 2;
+
+        for (j = 0; j < 64; j++)		//   Setup counter arrays
+          wcount[j] = lcount[j] = 0;
+
+        mtop = mask;                      //   The dust algorithm
+        lb   = wb   = -1;
+
+        if (BIASED)
+
+          { double lsqr, wsqr, trun;      //   Modification for high-compositional bias
+
+            wsqr = lsqr = 0.;
+            for (j = 0; j < len; j++)
+              { c = read[j];
+
+#define ADDR(e,cnt,sqr)	 sqr += (cnt[e]++) * skew[e];
+
+#define DELR(e,cnt,sqr)	 sqr -= (--cnt[e]) * skew[e];
+
+#define WADDR(e) ADDR(e,wcount,wsqr)
+#define WDELR(e) DELR(e,wcount,wsqr)
+#define LADDR(e) ADDR(e,lcount,lsqr)
+#define LDELR(e) DELR(e,lcount,lsqr)
+
+                if (j > WINDOW-3)
+                  { d = read[++wb];
+                    WDELR(d)
+                  }
+                WADDR(c)
+
+                if (lb < wb)
+                  { d = read[++lb];
+                    LDELR(d)
+                  }
+                trun  = (lcount[c]++) * skew[c];
+                lsqr += trun;
+                if (trun >= thresh2r)
+                  { while (lb < j)
+                      { d = read[++lb];
+                        LDELR(d)
+                        if (d == c) break;
+                      }
+                  }
+
+                jptr = cptr->prev;
+                if (jptr != cptr && jptr->beg <= wb)
+                  { c = jptr->end + 2;
+                    if (*mtop+1 >= jptr->beg)
+                      { if (*mtop < c)
+                          *mtop = c;
+                      }
+                    else
+                      { *++mtop = jptr->beg;
+                        *++mtop = c;
+                      }
+                    lptr = jptr->prev;
+                    cptr->prev = lptr;
+                    lptr->next = cptr;
+                    jptr->next = aptr;
+                    aptr = jptr;
+                  }
+
+                if (wsqr <= lsqr*THRESH) continue;
+
+                jptr   = cptr->next;
+                lptr   = cptr;
+                mscore = 0.;
+                for (c = lb; c > wb; c--)
+                  { d = read[c];
+                    LADDR(d)
+                    if (lsqr >= THRESH * (j-c))
+                      { for ( ; jptr->beg >= c; jptr = (lptr = jptr)->next)
+                          if (jptr->score > mscore)
+                            mscore = jptr->score;
+                        if (lsqr >= mscore * (j-c))
+                          { mscore = lsqr / (j-c);
+                            if (lptr->beg == c)
+                              { lptr->end   = j;
+                                lptr->score = mscore;
+                              }
+                            else
+                              { aptr->beg   = c;
+                                aptr->end   = j;
+                                aptr->score = mscore;
+                                aptr->prev  = lptr;
+                                lptr = lptr->next = aptr;
+                                aptr = aptr->next;
+                                jptr->prev = lptr;
+                                lptr->next = jptr;
+                              }
+                          }
+                      }
+                  }
+
+                for (c++; c <= lb; c++)
+                  { d = read[c];
+                    LDELR(d)
+                  }
+              }
+          }
+
+        else
+
+          { int lsqr, wsqr, trun;                 //  Algorithm for GC-balanced sequences
+
+            wsqr = lsqr = 0;
+            for (j = 0; j < len; j++)
+              { c = read[j];
+
+#define ADDI(e,cnt,sqr)	 sqr += (cnt[e]++);
+
+#define DELI(e,cnt,sqr)	 sqr -= (--cnt[e]);
+
+#define WADDI(e) ADDI(e,wcount,wsqr)
+#define WDELI(e) DELI(e,wcount,wsqr)
+#define LADDI(e) ADDI(e,lcount,lsqr)
+#define LDELI(e) DELI(e,lcount,lsqr)
+
+                if (j > WINDOW-3)
+                  { d = read[++wb];
+                    WDELI(d)
+                  }
+                WADDI(c)
+
+                if (lb < wb)
+                  { d = read[++lb];
+                    LDELI(d)
+                  }
+                trun  = lcount[c]++;
+                lsqr += trun;
+                if (trun >= thresh2i)
+                  { while (lb < j)
+                      { d = read[++lb];
+                        LDELI(d)
+                        if (d == c) break;
+                      }
+                  }
+
+                jptr = cptr->prev;
+                if (jptr != cptr && jptr->beg <= wb)
+                  { c = jptr->end + 2;
+                    if (*mtop+1 >= jptr->beg)
+                      { if (*mtop < c)
+                          *mtop = c;
+                      }
+                    else
+                      { *++mtop = jptr->beg;
+                        *++mtop = c;
+                      }
+                    lptr = jptr->prev;
+                    cptr->prev = lptr;
+                    lptr->next = cptr;
+                    jptr->next = aptr;
+                    aptr = jptr;
+                  }
+
+                if (wsqr <= lsqr*THRESH) continue;
+
+                jptr   = cptr->next;
+                lptr   = cptr;
+                mscore = 0.;
+                for (c = lb; c > wb; c--)
+                  { d = read[c];
+                    LADDI(d)
+                    if (lsqr >= THRESH * (j-c))
+                      { for ( ; jptr->beg >= c; jptr = (lptr = jptr)->next)
+                          if (jptr->score > mscore)
+                            mscore = jptr->score;
+                        if (lsqr >= mscore * (j-c))
+                          { mscore = (1. * lsqr) / (j-c);
+                            if (lptr->beg == c)
+                              { lptr->end   = j;
+                                lptr->score = mscore;
+                              }
+                            else
+                              { aptr->beg   = c;
+                                aptr->end   = j;
+                                aptr->score = mscore;
+                                aptr->prev  = lptr;
+                                lptr = lptr->next = aptr;
+                                aptr = aptr->next;
+                                jptr->prev = lptr;
+                                lptr->next = jptr;
+                              }
+                          }
+                      }
+                  }
+
+                for (c++; c <= lb; c++)
+                  { d = read[c];
+                    LDELI(d)
+                  }
+              }
+          }
+
+        while ((jptr = cptr->prev) != cptr)
+          { c = jptr->end + 2;
+            if (*mtop+1 >= jptr->beg)
+              { if (*mtop < c)
+                  *mtop = c;
+              }
+            else
+              { *++mtop = jptr->beg;
+                *++mtop = c;
+              }
+            cptr->prev = jptr->prev;
+            jptr->prev->next = cptr;
+            jptr->next = aptr;
+            aptr = jptr;
+          }
+
+        { int *jtop, ntop;
+
+          ntop = 0;
+          for (jtop = mask1; jtop < mtop; jtop += 2)
+            if (jtop[1] - jtop[0] >= MINLEN)
+              { mask[++ntop] = jtop[0];
+                mask[++ntop] = jtop[1]+1;
+              }
+          mtop  = mask + ntop;
+          indx += ntop*sizeof(int);
+          fwrite(&indx,sizeof(int64),1,afile);
+          fwrite(mask1,sizeof(int),ntop,dfile);
+        }
+
+#ifdef DEBUG
+
+        { int *jtop;
+
+          printf("\nREAD %d\n",i);
+          for (jtop = mask1; jtop < mtop; jtop += 2)
+            printf(" [%5d,%5d]\n",jtop[0],jtop[1]);
+
+          Load_Read(db,i,read,0);
+
+          jtop = mask1;
+          for (c = 0; c < len; c++)
+            { while (jtop < mtop && c > jtop[1])
+                jtop += 2;
+              if (jtop < mtop && c >= *jtop)
+                printf("%c",Caps[(int) read[c]]);
+              else
+                printf("%c",Lowr[(int) read[c]]);
+              if ((c%80) == 79)
+                printf("\n");
+            }
+          printf("\n");
+        }
+
+#endif
+      }
+  }
+
+  fclose(afile);
+  fclose(dfile);
+
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBrm.c b/DAZZ_DB/DBrm.c
new file mode 100644
index 0000000..6bad19b
--- /dev/null
+++ b/DAZZ_DB/DBrm.c
@@ -0,0 +1,40 @@
+/********************************************************************************************
+ *
+ *  Remove a list of .db databases
+ *     Delete all the files for the given data bases <name>.db ... (there are a couple
+ *     of hidden . files for each DB, and these are removed too.)  Do not use "rm" to
+ *     remove a database.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+static char *Usage = "<path:db|dam> ... ";
+
+static void HANDLER(char *path, char *name)
+{ (void) name;
+  unlink(path);
+}
+
+int main(int argc, char *argv[])
+{ int   i;
+
+  Prog_Name = Strdup("DBrm","");
+
+  if (argc <= 1)
+    fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+
+  for (i = 1; i < argc; i++)
+    if (List_DB_Files(argv[i],HANDLER) < 0)
+      fprintf(stderr,"%s: Could not list database %s\n",Prog_Name,argv[i]);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBshow.c b/DAZZ_DB/DBshow.c
new file mode 100644
index 0000000..d4346a5
--- /dev/null
+++ b/DAZZ_DB/DBshow.c
@@ -0,0 +1,579 @@
+/*******************************************************************************************
+ *
+ *  Display a specified set of reads of a database in fasta format.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  September 2013
+ *  Mod   :  With DB overhaul, made this a routine strictly for printing a selected subset
+ *             and created DB2fasta for recreating all the fasta files of a DB
+ *  Date  :  April 2014
+ *  Mod   :  Added options to display QV streams
+ *  Date  :  July 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage[] =
+    { "[-unqUQ] [-w<int(80)>] [-m<track>]+",
+      "         <path:db|dam> [ <reads:FILE> | <reads:range> ... ]"
+    };
+
+#define LAST_READ_SYMBOL   '$'
+#define MAX_BUFFER       10001
+
+typedef struct
+  { FILE  *input;
+    int    lineno;
+    int    read;
+    int    beg;
+    int    end;
+  } File_Iterator;
+
+File_Iterator *init_file_iterator(FILE *input)
+{ File_Iterator *it;
+
+  it = Malloc(sizeof(File_Iterator),"Allocating file iterator");
+  it->input = input;
+  it->lineno = 1;
+  rewind(input);
+  return (it);
+}
+
+int next_read(File_Iterator *it)
+{ static char nbuffer[MAX_BUFFER];
+
+  char *eol;
+  int   x;
+
+  if (fgets(nbuffer,MAX_BUFFER,it->input) == NULL)
+    { if (feof(it->input))
+        return (1);
+      SYSTEM_ERROR;
+    }
+  if ((eol = index(nbuffer,'\n')) == NULL)
+    { fprintf(stderr,"%s: Line %d in read list is longer than %d chars!\n",
+                     Prog_Name,it->lineno,MAX_BUFFER-1);
+      return (1);
+    }
+  *eol = '\0';
+  x = sscanf(nbuffer," %d %d %d",&(it->read),&(it->beg),&(it->end));
+  if (x == 1)
+    it->beg = -1;
+  else if (x != 3)
+    { fprintf(stderr,"%s: Line %d of read list is improperly formatted\n",Prog_Name,it->lineno);
+      return (1);
+    }
+  it->lineno += 1;
+  return (0);
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB    _db, *db = &_db;
+  FILE       *hdrs = NULL;
+
+  int         nfiles;
+  char      **flist = NULL;
+  int        *findx = NULL;
+
+  int            reps, *pts;
+  int            input_pts;
+  File_Iterator *iter = NULL;
+  FILE          *input;
+
+  int         TRIM, UPPER;
+  int         DOSEQ, DOQVS, QUIVA, DAM;
+  int         WIDTH;
+
+  int         MMAX, MTOP;
+  char      **MASK;
+
+  //  Process arguments
+
+  { int  i, j, k;
+    int  flags[128];
+    char *eptr;
+
+    ARG_INIT("DBshow")
+
+    WIDTH = 80;
+    MTOP  = 0;
+    MMAX  = 10;
+    MASK  = (char **) Malloc(MMAX*sizeof(char *),"Allocating mask track array");
+    if (MASK == NULL)
+      exit (1);
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("unqUQ")
+            break;
+          case 'w':
+            ARG_NON_NEGATIVE(WIDTH,"Line width")
+            break;
+          case 'm':
+            if (MTOP >= MMAX)
+              { MMAX = 1.2*MTOP + 10;
+                MASK = (char **) Realloc(MASK,MMAX*sizeof(char *),"Reallocating mask track array");
+                if (MASK == NULL)
+                  exit (1);
+              }
+            MASK[MTOP++] = argv[i]+2;
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    DAM   = 0;
+    TRIM  = 1-flags['u'];
+    UPPER = 1+flags['U'];
+    DOQVS = flags['q'];
+    DOSEQ = 1-flags['n'];
+    QUIVA = flags['Q'];
+    if (QUIVA && (!DOSEQ || MTOP > 0))
+      { fprintf(stderr,"%s: -Q (quiva) format request inconsistent with -n and -m options\n",
+                       Prog_Name);
+        exit (1);
+      }
+    if (QUIVA)
+      DOQVS = 1;
+
+    if (argc <= 1)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        exit (1);
+      }
+  }
+
+  //  Open DB or DAM, and if a DAM open also .hdr file
+
+  { char *pwd, *root;
+    int   status;
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+    if (status == 1)
+      { root   = Root(argv[1],".dam");
+        pwd    = PathTo(argv[1]);
+
+        if (db->part > 0)
+          *rindex(root,'.') = '\0';
+        hdrs = Fopen(Catenate(pwd,PATHSEP,root,".hdr"),"r");
+        if (hdrs == NULL)
+          exit (1);
+        DAM = 1;
+        if (QUIVA || DOQVS)
+          { fprintf(stderr,"%s: -Q and -q options not compatible with a .dam DB\n",Prog_Name);
+            exit (1);
+          }
+
+        free(root);
+        free(pwd);
+      }
+  }
+
+  //  Load QVs if requested
+
+  if (DOQVS)
+    { if (Load_QVs(db) < 0)
+        { fprintf(stderr,"%s: QVs requested, but no .qvs for data base\n",Prog_Name);
+          exit (1);
+        }
+    }
+
+  //  Check tracks and load tracks for untrimmed DB
+
+  { int i, status, kind;
+
+    for (i = 0; i < MTOP; i++)
+      { status = Check_Track(db,MASK[i],&kind);
+        if (status == -2)
+          printf("%s: Warning: -m%s option given but no track found.\n",Prog_Name,MASK[i]);
+        else if (status == -1)
+          printf("%s: Warning: %s track not sync'd with db.\n",Prog_Name,MASK[i]);
+        else if (kind != MASK_TRACK)
+          printf("%s: Warning: %s track is not a mask track.\n",Prog_Name,MASK[i]);
+        else if (status == 0)
+          Load_Track(db,MASK[i]);
+        else if (status == 1 && !TRIM)
+          printf("%s: Warning: %s track is for a trimmed db but -u is set.\n",Prog_Name,MASK[i]);
+      }
+  }
+
+  //  If not a DAM then get prolog names and index ranges from the .db file 
+
+  if (!DAM)
+    { char *pwd, *root;
+      FILE *dstub;
+      int   i;
+
+      root   = Root(argv[1],".db");
+      pwd    = PathTo(argv[1]);
+      if (db->part > 0)
+        *rindex(root,'.') = '\0';
+      dstub  = Fopen(Catenate(pwd,"/",root,".db"),"r");
+      if (dstub == NULL)
+        exit (1);
+      free(pwd);
+      free(root);
+
+      if (fscanf(dstub,DB_NFILE,&nfiles) != 1)
+        SYSTEM_ERROR
+
+      flist = (char **) Malloc(sizeof(char *)*nfiles,"Allocating file list");
+      findx = (int *) Malloc(sizeof(int *)*(nfiles+1),"Allocating file index");
+      if (flist == NULL || findx == NULL)
+        exit (1);
+
+      findx += 1;
+      findx[-1] = 0;
+
+      for (i = 0; i < nfiles; i++)
+        { char prolog[MAX_NAME], fname[MAX_NAME];
+  
+          if (fscanf(dstub,DB_FDATA,findx+i,fname,prolog) != 3)
+            SYSTEM_ERROR
+          if ((flist[i] = Strdup(prolog,"Adding to file list")) == NULL)
+            exit (1);
+        }
+
+      fclose(dstub);
+
+      //  If TRIM (the default) then "trim" prolog ranges and the DB
+
+      if (TRIM)
+        { int        nid, oid, lid;
+          int        cutoff, allflag;
+          HITS_READ *reads;
+
+          reads  = db->reads - db->ufirst;
+          cutoff = db->cutoff;
+          if (db->all)
+            allflag = 0;
+          else
+            allflag = DB_BEST;
+          
+          nid = 0;
+          oid = db->ufirst;
+          lid = oid + db->nreads;
+          for (i = 0; i < nfiles; i++)
+            { while (oid < findx[i] && oid < lid)
+                { if ((reads[oid].flags & DB_BEST) >= allflag && reads[oid].rlen >= cutoff)
+                    nid++;
+                  oid += 1;
+                }
+              findx[i] = nid;
+            }
+        }
+
+      else if (db->part > 0)
+        { for (i = 0; i < nfiles; i++)
+            findx[i] -= db->ufirst;
+        }
+    }
+
+  if (TRIM)
+    { int i, status, kind;
+
+      Trim_DB(db);
+
+      //  Load tracks for trimmed DB
+
+      for (i = 0; i < MTOP; i++)
+        { status = Check_Track(db,MASK[i],&kind);
+          if (status < 0)
+            continue;
+          else if (status == 1 && kind == MASK_TRACK)
+            Load_Track(db,MASK[i]);
+        }
+    }
+
+  //  Process read index arguments into a list of read ranges
+
+  input_pts = 0;
+  if (argc == 3)
+    { if (argv[2][0] != LAST_READ_SYMBOL || argv[2][1] != '\0')
+        { char *eptr, *fptr;
+          int   b, e;
+
+          b = strtol(argv[2],&eptr,10);
+          if (eptr > argv[2] && b > 0)
+            { if (*eptr == '-')
+                { if (eptr[1] != LAST_READ_SYMBOL || eptr[2] != '\0')
+                    { e = strtol(eptr+1,&fptr,10);
+                      input_pts = (fptr <= eptr+1 || *fptr != '\0' || e <= 0);
+                    }
+                }
+              else
+                input_pts = (*eptr != '\0');
+            }
+          else
+            input_pts = 1;
+        }
+    }
+
+  if (input_pts)
+    { input = Fopen(argv[2],"r");
+      if (input == NULL)
+        exit (1);
+
+      iter = init_file_iterator(input);
+    }
+  else
+    { pts  = (int *) Malloc(sizeof(int)*2*(argc-1),"Allocating read parameters");
+      if (pts == NULL)
+        exit (1);
+
+      reps = 0;
+      if (argc > 2)
+        { int   c, b, e;
+          char *eptr, *fptr;
+
+          for (c = 2; c < argc; c++)
+            { if (argv[c][0] == LAST_READ_SYMBOL)
+                { b = db->nreads;
+                  eptr = argv[c]+1;
+                }
+              else
+                b = strtol(argv[c],&eptr,10);
+              if (eptr > argv[c])
+                { if (b <= 0)
+                    { fprintf(stderr,"%s: %d is not a valid index\n",Prog_Name,b);
+                      exit (1);
+                    }
+                  if (*eptr == 0)
+                    { pts[reps++] = b;
+                      pts[reps++] = b;
+                      continue;
+                    }
+                  else if (*eptr == '-')
+                    { if (eptr[1] == LAST_READ_SYMBOL)
+                        { e = db->nreads;
+                          fptr = eptr+2;
+                        }
+                      else
+                        e = strtol(eptr+1,&fptr,10);
+                      if (fptr > eptr+1 && *fptr == 0 && e > 0)
+                        { pts[reps++] = b;
+                          pts[reps++] = e;
+                          if (b > e)
+                            { fprintf(stderr,"%s: Empty range '%s'\n",Prog_Name,argv[c]);
+                              exit (1);
+                            }
+                          continue;
+                        }
+                    }
+                }
+              fprintf(stderr,"%s: argument '%s' is not an integer range\n",Prog_Name,argv[c]);
+              exit (1);
+            }
+        }
+      else
+        { pts[reps++] = 1;
+          pts[reps++] = db->nreads;
+        }
+    }
+
+  //  Display each read (and/or QV streams) in the active DB according to the
+  //    range pairs in pts[0..reps) and according to the display options.
+
+  { HITS_READ  *reads;
+    HITS_TRACK *first;
+    char       *read, **entry;
+    int         c, b, e, i;
+    int         hilight, substr;
+    int         map;
+    int       (*iscase)(int);
+
+    read  = New_Read_Buffer(db);
+    if (DOQVS)
+      { entry = New_QV_Buffer(db);
+        first = db->tracks->next;
+      }
+    else
+      { entry = NULL;
+        first = db->tracks;
+      }
+
+    if (UPPER == 1)
+      { hilight = 'A'-'a';
+        iscase  = islower;
+      }
+    else
+      { hilight = 'a'-'A';
+        iscase  = isupper;
+      }
+
+    map    = 0;
+    reads  = db->reads;
+    substr = 0;
+
+    c = 0;
+    while (1)
+      { if (input_pts)
+          { if (next_read(iter))
+              break;
+            e = iter->read;
+            b = e-1;
+            substr = (iter->beg >= 0);
+          }
+        else
+          { if (c >= reps)
+              break;
+            b = pts[c]-1;
+            e = pts[c+1];
+            if (e > db->nreads)
+              e = db->nreads;
+            c += 2;
+          }
+
+        for (i = b; i < e; i++)
+          { int         len;
+            int         fst, lst;
+            int         flags, qv;
+            HITS_READ  *r;
+            HITS_TRACK *track;
+
+            r   = reads + i;
+            len = r->rlen;
+
+            flags = r->flags;
+            qv    = (flags & DB_QV);
+            if (DAM)
+              { char header[MAX_NAME];
+
+                fseeko(hdrs,r->coff,SEEK_SET);
+                fgets(header,MAX_NAME,hdrs);
+                header[strlen(header)-1] = '\0';
+                printf("%s :: Contig %d[%d,%d]",header,r->origin,r->fpulse,r->fpulse+len);
+              }
+            else
+              { while (i < findx[map-1])
+                  map -= 1;
+                while (i >= findx[map])
+                  map += 1;
+                if (QUIVA)
+                  printf("@%s/%d/%d_%d",flist[map],r->origin,r->fpulse,r->fpulse+len);
+                else
+                  printf(">%s/%d/%d_%d",flist[map],r->origin,r->fpulse,r->fpulse+len);
+                if (qv > 0)
+                  printf(" RQ=0.%3d",qv);
+              }
+            printf("\n");
+
+            if (DOQVS)
+              Load_QVentry(db,i,entry,UPPER);
+            if (DOSEQ)
+              Load_Read(db,i,read,UPPER);
+
+            for (track = first; track != NULL; track = track->next)
+              { int64 *anno;
+                int   *data;
+                int64  s, f, j;
+                int    bd, ed, m;
+
+                anno = (int64 *) track->anno;
+                data = (int *) track->data;
+
+                s = (anno[i] >> 2);
+                f = (anno[i+1] >> 2);
+                if (s < f)
+                  { for (j = s; j < f; j += 2)
+                      { bd = data[j];
+                        ed = data[j+1];
+                        if (DOSEQ)
+                          for (m = bd; m < ed; m++)
+                            if (iscase(read[m]))
+                              read[m] = (char) (read[m] + hilight);
+                        if (j == s)
+                          printf("> %s:",track->name);
+                        printf(" [%d,%d]",bd,ed);
+                      }
+                    printf("\n");
+                  }
+              }
+
+            if (substr)
+              { fst = iter->beg;
+                lst = iter->end;
+              }
+            else
+              { fst = 0;
+                lst = len;
+              }
+
+            if (QUIVA)
+              { int k;
+
+                for (k = 0; k < 5; k++)
+                  printf("%.*s\n",lst-fst,entry[k]+fst);
+              }
+            else
+              { if (DOQVS)
+                  { int j, k;
+
+                    printf("\n");
+                    for (j = fst; j+WIDTH < lst; j += WIDTH)
+                      { if (DOSEQ)
+                          printf("%.*s\n",WIDTH,read+j);
+                        for (k = 0; k < 5; k++)
+                          printf("%.*s\n",WIDTH,entry[k]+j);
+                        printf("\n");
+                      }
+                    if (j < lst)
+                      { if (DOSEQ)
+                          printf("%.*s\n",lst-j,read+j);
+                        for (k = 0; k < 5; k++)
+                          printf("%.*s\n",lst-j,entry[k]+j);
+                        printf("\n");
+                      }
+                  }
+                else if (DOSEQ)
+                  { int j;
+    
+                    for (j = fst; j+WIDTH < lst; j += WIDTH)
+                      printf("%.*s\n",WIDTH,read+j);
+                    if (j < lst)
+                      printf("%.*s\n",lst-j,read+j);
+                  }
+              }
+          }
+      }
+  }
+
+  if (input_pts)
+    { fclose(input);
+      free(iter);
+    }
+  else
+    free(pts);
+
+  if (DAM)
+    fclose(hdrs);
+  else
+    { int i;
+
+      for (i = 0; i < nfiles; i++)
+        free(flist[i]);
+      free(flist);
+      free(findx-1);
+    }
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBsplit.c b/DAZZ_DB/DBsplit.c
new file mode 100644
index 0000000..6a218ec
--- /dev/null
+++ b/DAZZ_DB/DBsplit.c
@@ -0,0 +1,216 @@
+/*******************************************************************************************
+ *
+ *  Split a .db into a set of sub-database blocks for use by the Dazzler:
+ *     Divide the database <path>.db conceptually into a series of blocks referable to on the
+ *     command line as <path>.1.db, <path>.2.db, ...  If the -x option is set then all reads
+ *     less than the given length are ignored, and if the -a option is not set then secondary
+ *     reads from a given well are also ignored.  The remaining reads are split amongst the
+ *     blocks so that each block is of size -s * 1Mbp except for the last which necessarily
+ *     contains a smaller residual.  The default value for -s is 400Mbp because blocks of this
+ *     size can be compared by our "overlapper" dalign in roughly 16Gb of memory.  The blocks
+ *     are very space efficient in that their sub-index of the master .idx is computed on the
+ *     fly when loaded, and the .bps file of base pairs is shared with the master DB.  Any
+ *     tracks associated with the DB are also computed on the fly when loading a database block.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  September 2013
+ *  Mod   :  New splitting definition to support incrementality, and new stub file format
+ *  Date  :  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-af] [-x<int>] [-s<float(200.)>] <path:db|dam>";
+
+int main(int argc, char *argv[])
+{ HITS_DB    db, dbs;
+  int64      dbpos;
+  FILE      *dbfile, *ixfile;
+  int        status;
+
+  int        FORCE;
+  int        ALL;
+  int        CUTOFF;
+  int64      SIZE;
+
+  { int   i, j, k;
+    int   flags[128];
+    char *eptr;
+    float size;
+
+    ARG_INIT("DBsplit")
+
+    CUTOFF = 0;
+    size   = 200;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("af")
+            break;
+          case 'x':
+            ARG_NON_NEGATIVE(CUTOFF,"Min read length cutoff")
+            break;
+          case 's':
+            ARG_REAL(size)
+            if (size <= 0.)
+              { fprintf(stderr,"%s: Block size must be a positive number\n",Prog_Name);
+                exit (1);
+              }
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    SIZE  = size*1000000ll;
+    ALL   = flags['a'];
+    FORCE = flags['f'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open db
+
+  status = Open_DB(argv[1],&db);
+  if (status < 0)
+    exit (1);
+  if (db.part > 0)
+    { fprintf(stderr,"%s: Cannot be called on a block: %s\n",Prog_Name,argv[1]);
+      exit (1);
+    }
+
+  { char    *pwd, *root;
+    char     buffer[2*MAX_NAME+100];
+    int      nfiles;
+    int      i;
+
+    pwd    = PathTo(argv[1]);
+    if (status)
+      { root   = Root(argv[1],".dam");
+        dbfile = Fopen(Catenate(pwd,"/",root,".dam"),"r+");
+      }
+    else
+      { root   = Root(argv[1],".db");
+        dbfile = Fopen(Catenate(pwd,"/",root,".db"),"r+");
+      }
+    ixfile = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r+");
+    if (dbfile == NULL || ixfile == NULL)
+      exit (1);
+    free(pwd);
+    free(root);
+
+    if (fscanf(dbfile,DB_NFILE,&nfiles) != 1)
+      SYSTEM_ERROR
+    for (i = 0; i < nfiles; i++)
+      if (fgets(buffer,2*MAX_NAME+100,dbfile) == NULL)
+        SYSTEM_ERROR
+
+    if (fread(&dbs,sizeof(HITS_DB),1,ixfile) != 1)
+      SYSTEM_ERROR
+
+    if (dbs.cutoff >= 0 && !FORCE)
+      { printf("You are about to overwrite the current partition settings.  This\n");
+        printf("will invalidate any tracks, overlaps, and other derivative files.\n");
+        printf("Are you sure you want to proceed? [Y/N] ");
+        fflush(stdout);
+        if (fgets(buffer,100,stdin) == NULL)
+          SYSTEM_ERROR
+        if (index(buffer,'n') != NULL || index(buffer,'N') != NULL)
+          { printf("Aborted\n");
+            fflush(stdout);
+            fclose(dbfile);
+            exit (1);
+          }
+      }
+
+    dbpos = ftello(dbfile);
+    fseeko(dbfile,dbpos,SEEK_SET);
+    fprintf(dbfile,DB_NBLOCK,0);
+    fprintf(dbfile,DB_PARAMS,SIZE,CUTOFF,ALL);
+  }
+
+  { HITS_READ *reads  = db.reads;
+    int        nreads = db.ureads;
+    int64      totlen;
+    int        nblock, ireads, treads, rlen, fno;
+    int        i;
+
+
+    nblock = 0;
+    totlen = 0;
+    ireads = 0;
+    treads = 0;
+    fprintf(dbfile,DB_BDATA,0,0);
+    if (ALL)
+      for (i = 0; i < nreads; i++)
+        { rlen = reads[i].rlen;
+          if (rlen >= CUTOFF)
+            { ireads += 1;
+              treads += 1;
+              totlen += rlen;
+              if (totlen >= SIZE)
+                { fprintf(dbfile,DB_BDATA,i+1,treads);
+                  totlen = 0;
+                  ireads = 0;
+                  nblock += 1;
+                }
+            }
+        }
+    else
+      for (i = 0; i < nreads; i++)
+        { rlen = reads[i].rlen;
+          if (rlen >= CUTOFF && (reads[i].flags & DB_BEST) != 0)
+            { ireads += 1;
+              treads += 1;
+              totlen += rlen;
+              if (totlen >= SIZE)
+                { fprintf(dbfile,DB_BDATA,i+1,treads);
+                  totlen = 0;
+                  ireads = 0;
+                  nblock += 1;
+                }
+            }
+        }
+
+    if (ireads > 0)
+      { fprintf(dbfile,DB_BDATA,nreads,treads);
+        nblock += 1;
+      }
+    fno = fileno(dbfile);
+    if (ftruncate(fno,ftello(dbfile)) < 0)
+      SYSTEM_ERROR
+
+    fseeko(dbfile,dbpos,SEEK_SET);
+    fprintf(dbfile,DB_NBLOCK,nblock);
+
+    dbs.cutoff = CUTOFF;
+    dbs.all    = ALL;
+    dbs.treads = treads;
+    rewind(ixfile);
+    fwrite(&dbs,sizeof(HITS_DB),1,ixfile);
+  }
+
+  fclose(ixfile);
+  fclose(dbfile);
+  Close_DB(&db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBstats.c b/DAZZ_DB/DBstats.c
new file mode 100644
index 0000000..b0e46c2
--- /dev/null
+++ b/DAZZ_DB/DBstats.c
@@ -0,0 +1,346 @@
+/*******************************************************************************************
+ *
+ *  Display statistics about the contents of a .db and a histogram of its read lengths.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *  Mod   :  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "DB.h"
+
+static char *Usage = " [-nu] [-b<int(1000)>] [-m<track>]+ <name:db|dam>";
+
+int main(int argc, char *argv[])
+{ HITS_DB _db, *db = &_db;
+  int     dam;
+
+  int64   ototal;
+  int     oreads;
+  int     nbin, *hist;
+  int64  *bsum;
+
+  int     NONE;
+  int     TRIM;
+  int     BIN;
+
+  int     MMAX, MTOP;
+  char  **MASK;
+
+  { int   i, j, k;
+    int   flags[128];
+    char *eptr;
+
+    ARG_INIT("DBstats")
+
+    BIN    = 1000;
+    MTOP  = 0;
+    MMAX  = 10;
+    MASK  = (char **) Malloc(MMAX*sizeof(char *),"Allocating mask track array");
+    if (MASK == NULL)
+      exit (1);
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("nu")
+            break;
+          case 'b':
+            ARG_POSITIVE(BIN,"Bin size")
+            break;
+          case 'm':
+            if (MTOP >= MMAX)
+              { MMAX = 1.2*MTOP + 10;
+                MASK = (char **) Realloc(MASK,MMAX*sizeof(char *),"Reallocating mask track array");
+                if (MASK == NULL)
+                  exit (1);
+              }
+            MASK[MTOP++] = argv[i]+2;
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    NONE = flags['n'];
+    TRIM = 1-flags['u'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  { int i, status, kind;
+
+    //  Open .db or .dam
+
+    status = Open_DB(argv[1],db);
+    if (status < 0)
+      exit (1);
+    dam = status;
+
+    //  Check tracks and load tracks for untrimmed DB
+
+    for (i = 0; i < MTOP; i++)
+      { status = Check_Track(db,MASK[i],&kind);
+        if (status == -2)
+          fprintf(stderr,"%s: Warning: -m%s option given but no track found.\n",Prog_Name,MASK[i]);
+        else if (status == -1)
+          fprintf(stderr,"%s: Warning: %s track not sync'd with db.\n",Prog_Name,MASK[i]);
+        else if (kind != MASK_TRACK)
+          fprintf(stderr,"%s: Warning: %s track is not a mask track.\n",Prog_Name,MASK[i]);
+        else if (status == 0)
+          Load_Track(db,MASK[i]);
+        else if (status == 1 && !TRIM)
+          fprintf(stderr,"%s: Warning: %s track is for a trimmed db but -u is set.\n",
+                         Prog_Name,MASK[i]);
+      }
+
+    oreads = db->nreads;
+    ototal = db->totlen;
+
+    if (TRIM)
+      { Trim_DB(db);
+
+        //  Load tracks for trimmed DB
+
+        for (i = 0; i < MTOP; i++)
+          { status = Check_Track(db,MASK[i],&kind);
+            if (status < 0)
+              continue;
+            else if (status == 1)
+              Load_Track(db,MASK[i]);
+          }
+      }
+  }
+
+  { int        i;
+    int64      totlen;
+    int        nreads, maxlen;
+    HITS_READ *reads;
+
+    nreads = db->nreads;
+    totlen = db->totlen;
+    maxlen = db->maxlen;
+    reads  = db->reads;
+
+    nbin  = maxlen/BIN + 1;
+    hist  = (int *) Malloc(sizeof(int)*nbin,"Allocating histograms");
+    bsum  = (int64 *) Malloc(sizeof(int64)*nbin,"Allocating histograms");
+    if (hist == NULL || bsum == NULL)
+      exit (1);
+
+    for (i = 0; i < nbin; i++)
+      { hist[i] = 0;
+        bsum[i] = 0;
+      }
+ 
+    for (i = 0; i < nreads; i++)
+      { int rlen = reads[i].rlen;
+        hist[rlen/BIN] += 1;
+        bsum[rlen/BIN] += rlen;
+      }
+
+    if (dam)
+      printf("\nStatistics for all contigs");
+    else if (db->all || !TRIM)
+      printf("\nStatistics for all wells");
+    else
+      printf("\nStatistics for all reads");
+    if (TRIM && db->cutoff > 0)
+      { printf(" of length ");
+        Print_Number(db->cutoff,0,stdout);
+        printf(" bases or more\n\n");
+      }
+    else if (dam)
+      printf(" in the map index\n\n");
+    else
+      printf(" in the data set\n\n");
+
+    Print_Number((int64) nreads,15,stdout);
+    if (dam)
+      printf(" contigs");
+    else
+      printf(" reads  ");
+    if (TRIM)
+      { printf("      out of ");
+        Print_Number((int64 ) oreads,15,stdout);
+        if (oreads <= 0)
+          printf("  (100.0%%)");
+        else
+          printf("  (%5.1f%%)",(100.*nreads)/oreads);
+      }
+    printf("\n");
+
+    Print_Number(totlen,15,stdout);
+    printf(" base pairs");
+    if (TRIM)
+      { printf("   out of ");
+        Print_Number(ototal,15,stdout);
+        if (ototal <= 0)
+          printf("  (100.0%%)");
+        else
+          printf("  (%5.1f%%)",(100.*totlen)/ototal);
+      }
+    printf("\n\n");
+
+    if (nreads > 0)
+      { int64 ave, dev;
+
+        ave = totlen/nreads;
+        Print_Number(ave,15,stdout);
+        if (dam)
+          printf(" average contig length\n");
+        else
+          { printf(" average read length\n");
+
+            dev  = 0;
+            for (i = 0; i < nreads; i++)
+              { int rlen = reads[i].rlen;
+                dev += (rlen-ave)*(rlen-ave);
+              }
+            dev = (int64) sqrt((1.*dev)/nreads);
+
+            Print_Number(dev,15,stdout);
+            printf(" standard deviation\n");
+          }
+      }
+
+    if (totlen <= 0)
+      { free(hist);
+        free(bsum);
+        Close_DB(db);
+        exit (0);
+      }
+
+    printf("\n  Base composition: %.3f(A) %.3f(C) %.3f(G) %.3f(T)\n",
+           db->freq[0],db->freq[1],db->freq[2],db->freq[3]);
+
+    if (!NONE)
+      { int64 btot;
+        int   cum, skip, avg;
+
+        printf("\n  Distribution of Read Lengths (Bin size = ");
+        Print_Number((int64) BIN,0,stdout);
+        printf(")\n\n        Bin:      Count  %% Reads  %% Bases     Average\n");
+        if (dam)
+          skip = 0;
+        else
+          skip = -1;
+        cum  = 0;
+        btot = 0;
+        for (i = nbin-1; i >= 0; i--)
+          { cum  += hist[i];
+            btot += bsum[i];
+            if (hist[i] != skip)
+              { Print_Number((int64) (i*BIN),11,stdout);
+                printf(":");
+                Print_Number((int64) hist[i],11,stdout);
+                if (cum > 0)
+                  avg = btot/cum;
+                else
+                  avg = 0;
+                printf("    %5.1f    %5.1f   %9d\n",(100.*cum)/nreads,(100.*btot)/totlen,avg);
+              }
+            if (cum == nreads) break;
+          }
+      }
+  }
+
+  { int64      totlen;
+    int        numint, maxlen;
+    HITS_TRACK *track;
+
+    for (track = db->tracks; track != NULL; track = track->next)
+      { char  *data = track->data;
+        int64 *anno = (int64 *) track->anno;
+        int   *idata, *edata;
+        int64  ave, dev, btot;
+        int    k, rlen, cum;
+
+        totlen = 0;
+        numint = 0;
+        maxlen = 0;
+        for (k = 0; k < db->nreads; k++)
+          { edata = (int *) (data + anno[k+1]);
+            for (idata = (int *) (data + anno[k]); idata < edata; idata += 2)
+              { rlen = idata[1] - *idata;
+                numint += 1;
+                totlen += rlen;
+                if (rlen > maxlen)
+                  maxlen = rlen;
+              }
+          }
+
+        printf("\n\nStatistics for %s-track\n",track->name);
+
+        printf("\n  There are ");
+        Print_Number(numint,0,stdout);
+        printf(" intervals totaling ");
+        Print_Number(totlen,0,stdout);
+        printf(" bases (%.1f%% of all data)\n",(100.*totlen)/db->totlen);
+
+        if (numint <= 0) continue;
+
+        nbin = maxlen/BIN + 1;
+        for (k = 0; k < nbin; k++)
+          { hist[k] = 0;
+            bsum[k] = 0;
+          }
+
+        ave = totlen/numint;
+        dev  = 0;
+        for (k = 0; k < db->nreads; k++)
+          { edata = (int *) (data + anno[k+1]);
+            for (idata = (int *) (data + anno[k]); idata < edata; idata += 2)
+              { rlen = idata[1] - *idata;
+                dev += (rlen-ave)*(rlen-ave);
+                hist[rlen/BIN] += 1;
+                bsum[rlen/BIN] += rlen;
+              }
+          }
+        dev = (int64) sqrt((1.*dev)/numint);
+
+        printf("\n");
+        Print_Number(ave,15,stdout);
+        printf(" average interval length\n");
+        Print_Number(dev,15,stdout);
+        printf(" standard deviation\n");
+
+
+        printf("\n  Distribution of %s intervals (Bin size = ",track->name);
+        Print_Number((int64) BIN,0,stdout);
+        printf(")\n\n        Bin:      Count  %% Intervals  %% Bases     Average\n");
+        cum  = 0;
+        btot = 0;
+        for (k = nbin-1; k >= 0; k--)
+          { cum  += hist[k];
+            btot += bsum[k];
+            if (hist[k] > 0)
+              { Print_Number((int64) (k*BIN),11,stdout);
+                printf(":");
+                Print_Number((int64) hist[k],11,stdout);
+                printf("        %5.1f    %5.1f   %9lld\n",(100.*cum)/numint,
+                                                      (100.*btot)/totlen,btot/cum);
+                if (cum == numint) break;
+              }
+          }
+        printf("\n");
+      }
+  }
+
+  free(hist);
+  free(bsum);
+  Close_DB(db);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBupgrade.Dec.31.2014.c b/DAZZ_DB/DBupgrade.Dec.31.2014.c
new file mode 100644
index 0000000..5c71a3d
--- /dev/null
+++ b/DAZZ_DB/DBupgrade.Dec.31.2014.c
@@ -0,0 +1,86 @@
+/*******************************************************************************************
+ *
+ *  Interim code: upgrade previous db to have fpulse,rlen fields
+ *
+ *  Author:  Gene Myers
+ *  Date  :  December 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+typedef struct
+  { int     origin; //  Well #
+    int     beg;    //  First pulse
+    int     end;    //  Last pulse
+    int64   boff;   //  Offset (in bytes) of compressed read in 'bases' file, or offset of
+                    //    uncompressed bases in memory block
+    int64   coff;   //  Offset (in bytes) of compressed quiva streams in 'quiva' file
+    int     flags;  //  QV of read + flags above
+  } HITS_OLD;
+
+int main(int argc, char *argv[])
+{ HITS_DB    db;
+  FILE      *nxfile, *ixfile;
+  char      *pwd, *root;
+  int        i;
+
+  if (argc != 2)
+    { fprintf(stderr,"Usage: %s <path:db>\n",argv[0]);
+      exit (1);
+    }
+
+  pwd    = PathTo(argv[1]);
+  root   = Root(argv[1],".db");
+  ixfile = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r");
+  nxfile = Fopen(Catenate(pwd,PATHSEP,root,".ndx"),"w");
+  if (ixfile == NULL || nxfile == NULL)
+    exit (1);
+  free(pwd);
+  free(root);
+
+  if (fread(&db,sizeof(HITS_DB),1,ixfile) != 1)
+    SYSTEM_ERROR
+  fwrite(&db,sizeof(HITS_DB),1,nxfile);
+
+  fprintf(stderr,"Converting %d reads\n",db.ureads);
+  fflush(stderr);
+
+  for (i = 0; i < db.ureads; i++)
+    { HITS_OLD  orec;
+      HITS_READ nrec;
+
+      if (i%10000 == 0)
+        { fprintf(stderr,"  Processing %d\n",i);
+          fflush(stderr);
+        }
+
+      if (fread(&orec,sizeof(HITS_OLD),1,ixfile) != 1)
+        SYSTEM_ERROR
+
+      nrec.origin = orec.origin;
+      nrec.fpulse = orec.beg;
+      nrec.rlen   = orec.end-orec.beg;
+      nrec.boff   = orec.boff;
+      nrec.coff   = orec.coff;
+      nrec.flags  = orec.flags;
+
+      fwrite(&nrec,sizeof(HITS_READ),1,nxfile);
+    }
+
+  fclose(ixfile);
+  fclose(nxfile);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DBupgrade.Sep.25.2014.c b/DAZZ_DB/DBupgrade.Sep.25.2014.c
new file mode 100644
index 0000000..77e41cf
--- /dev/null
+++ b/DAZZ_DB/DBupgrade.Sep.25.2014.c
@@ -0,0 +1,96 @@
+/*******************************************************************************************
+ *
+ *  Interim code: upgrade previous db to have int's for pulse positions.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  September 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+typedef struct
+  { int     origin; //  Well #
+    uint16  beg;    //  First pulse
+    uint16  end;    //  Last pulse
+    int64   boff;   //  Offset (in bytes) of compressed read in 'bases' file, or offset of
+                    //    uncompressed bases in memory block
+    int64   coff;   //  Offset (in bytes) of compressed quiva streams in 'quiva' file
+    int     flags;  //  QV of read + flags above
+  } HITS_OLD;
+
+typedef struct
+  { int     origin; //  Well #
+    int     beg;    //  First pulse
+    int     end;    //  Last pulse
+    int64   boff;   //  Offset (in bytes) of compressed read in 'bases' file, or offset of
+                    //    uncompressed bases in memory block
+    int64   coff;   //  Offset (in bytes) of compressed quiva streams in 'quiva' file
+    int     flags;  //  QV of read + flags above
+  } HITS_NEW;
+
+int main(int argc, char *argv[])
+{ HITS_DB    db;
+  FILE      *nxfile, *ixfile;
+  char      *pwd, *root;
+  int        i;
+
+  if (argc != 2)
+    { fprintf(stderr,"Usage: %s <path:db>\n",argv[0]);
+      exit (1);
+    }
+
+  pwd    = PathTo(argv[1]);
+  root   = Root(argv[1],".db");
+  ixfile = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r");
+  nxfile = Fopen(Catenate(pwd,PATHSEP,root,".ndx"),"w");
+  if (ixfile == NULL || nxfile == NULL)
+    exit (1);
+  free(pwd);
+  free(root);
+
+  if (fread(&db,sizeof(HITS_DB),1,ixfile) != 1)
+    SYSTEM_ERROR
+  fwrite(&db,sizeof(HITS_DB),1,nxfile);
+
+  fprintf(stderr,"Converting %d reads\n",db.ureads);
+  fflush(stderr);
+
+  for (i = 0; i < db.ureads; i++)
+    { HITS_OLD  orec;
+      HITS_NEW  nrec;
+
+      if (i%10000 == 0)
+        { fprintf(stderr,"  Processing %d\n",i);
+          fflush(stderr);
+        }
+
+      if (fread(&orec,sizeof(HITS_OLD),1,ixfile) != 1)
+        SYSTEM_ERROR
+
+      nrec.origin = orec.origin;
+      nrec.beg    = orec.beg;
+      nrec.end    = orec.end;
+      nrec.boff   = orec.boff;
+      nrec.coff   = orec.coff;
+      nrec.flags  = orec.flags;
+
+      fwrite(&nrec,sizeof(HITS_NEW),1,nxfile);
+    }
+
+  fclose(ixfile);
+  fclose(nxfile);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/DUSTupgrade.Jan.1.2015.c b/DAZZ_DB/DUSTupgrade.Jan.1.2015.c
new file mode 100644
index 0000000..d0af6af
--- /dev/null
+++ b/DAZZ_DB/DUSTupgrade.Jan.1.2015.c
@@ -0,0 +1,80 @@
+/*******************************************************************************************
+ *
+ *  Interim code: upgrade dust track indices from int's to int64's
+ *
+ *  Author:  Gene Myers
+ *  Date  :  December 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+int main(int argc, char *argv[])
+{ FILE      *afile, *dfile;
+  FILE      *nafile, *ndfile;
+  char      *pwd, *root;
+  int        size, tracklen;
+  int        i, vint, dint;
+  int64      vlong;
+
+  if (argc != 2)
+    { fprintf(stderr,"Usage: %s <path:db>\n",argv[0]);
+      exit (1);
+    }
+
+  pwd    = PathTo(argv[1]);
+  root   = Root(argv[1],".db");
+  afile  = Fopen(Catenate(pwd,PATHSEP,root,".dust.anno"),"r");
+  dfile  = Fopen(Catenate(pwd,PATHSEP,root,".dust.data"),"r");
+  nafile = Fopen(Catenate(pwd,PATHSEP,root,".next.anno"),"w");
+  ndfile = Fopen(Catenate(pwd,PATHSEP,root,".next.data"),"w");
+  if (afile == NULL || dfile == NULL || nafile == NULL || ndfile == NULL)
+    exit (1);
+  free(pwd);
+  free(root);
+
+  if (fread(&tracklen,sizeof(int),1,afile) != 1)
+    SYSTEM_ERROR
+  fwrite(&tracklen,sizeof(int),1,nafile);
+
+  if (fread(&size,sizeof(int),1,afile) != 1)
+    SYSTEM_ERROR
+  size = 8;
+  fwrite(&size,sizeof(int),1,nafile);
+
+  for (i = 0; i <= tracklen; i++)
+    { if (fread(&vint,sizeof(int),1,afile) != 1)
+        SYSTEM_ERROR
+      vlong = vint;
+      fwrite(&vlong,sizeof(int64),1,nafile);
+    }
+
+  vint >>= 2;
+  for (i = 0; i < vint; i += 2)
+    { if (fread(&dint,sizeof(int),1,dfile) != 1)
+        SYSTEM_ERROR
+      fwrite(&dint,sizeof(int),1,ndfile);
+      if (fread(&dint,sizeof(int),1,dfile) != 1)
+        SYSTEM_ERROR
+      dint += 1;
+      fwrite(&dint,sizeof(int),1,ndfile);
+    }
+
+  fclose(nafile);
+  fclose(ndfile);
+  fclose(afile);
+  fclose(dfile);
+
+  exit (0);
+}
diff --git a/DAZZ_DB/GNUmakefile b/DAZZ_DB/GNUmakefile
new file mode 100644
index 0000000..de52eb3
--- /dev/null
+++ b/DAZZ_DB/GNUmakefile
@@ -0,0 +1,41 @@
+THISDIR:=$(abspath $(dir $(realpath $(lastword ${MAKEFILE_LIST}))))
+CFLAGS+= -O3 -Wall -Wextra -fno-strict-aliasing -Wno-unused-result
+CPPFLAGS+= -MMD -MP
+LDLIBS+= -lm
+LDFLAGS+=
+ALL = fasta2DB DB2fasta quiva2DB DB2quiva DBsplit DBdust Catrack DBshow DBstats DBrm simulator \
+      fasta2DAM DAM2fasta DBdump rangen
+ALL = fasta2DB DB2fasta DBsplit DBdust Catrack DBshow DBstats DBrm simulator \
+      fasta2DAM DAM2fasta DBdump rangen
+#quiva2DB would require -DINTERACTIVE, and we do not need quiva support.
+vpath %.c ${THISDIR}
+
+all: ${ALL}
+${ALL}: libdazzdb.a
+
+libdazzdb.a: DB.o QV.o
+	${AR} -rcv $@ $^
+
+# Shared libs are not used yet, but maybe someday.
+%.os: %.c
+	${CC} -o $@ -c $< -fPIC ${CFLAGS} ${CPPFLAGS}
+libdazzdb.so: DB.os QV.os
+	${CC} -o $@ $^ -shared ${LDFLAGS}
+install:
+	rsync -av ${ALL} ${PREFIX}/bin
+	rsync -av libdazzdb.* ${PREFIX}/lib
+	rsync -av $(wildcard ${THISDIR}/*.h) ${PREFIX}/include
+symlink:
+	ln -sf $(addprefix ${CURDIR}/,${ALL}) ${PREFIX}/bin
+	ln -sf $(addprefix ${CURDIR}/,$(wildcard libdazzdb.*)) ${PREFIX}/lib
+	ln -sf $(wildcard ${THISDIR}/*.h) ${PREFIX}/include
+clean:
+	rm -f ${ALL}
+	rm -f ${DEPS}
+	rm -fr *.dSYM *.o *.a *.so *.os
+	rm -f DBupgrade.Sep.25.2014 DBupgrade.Dec.31.2014 DUSTupgrade.Jan.1.2015
+	rm -f dazz.db.tar.gz
+
+SRCS:=$(notdir $(wildcard ${THISDIR}/*.c))
+DEPS:=$(patsubst %.c,%.d,${SRCS})
+-include ${DEPS}
diff --git a/DAZZ_DB/LICENSE b/DAZZ_DB/LICENSE
new file mode 100644
index 0000000..9aa819c
--- /dev/null
+++ b/DAZZ_DB/LICENSE
@@ -0,0 +1,34 @@
+
+  Copyright (c) 2014, Dr. Eugene W. Myers (EWM). All rights reserved.                
+                                                                                     
+  Redistribution and use in source and binary forms, with or without modification,   
+  are permitted provided that the following conditions are met:                      
+                                                                                     
+   · Redistributions of source code must retain the above copyright notice, this     
+     list of conditions and the following disclaimer.                                
+                                                                                     
+   · Redistributions in binary form must reproduce the above copyright notice, this  
+     list of conditions and the following disclaimer in the documentation and/or     
+     other materials provided with the distribution.                                 
+                                                                                     
+   · The name of EWM may not be used to endorse or promote products derived from     
+     this software without specific prior written permission.                        
+                                                                                     
+  THIS SOFTWARE IS PROVIDED BY EWM ”AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,    
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND       
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EWM BE LIABLE   
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS  
+  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY      
+  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     
+  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN  
+  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      
+                                                                                     
+  For any issues regarding this software and its use, contact EWM at:                
+                                                                                     
+    Eugene W. Myers Jr.                                                              
+    Bautzner Str. 122e                                                               
+    01099 Dresden                                                                    
+    GERMANY                                                                          
+    Email: gene.myers at gmail.com                                                      
+
diff --git a/DAZZ_DB/Makefile b/DAZZ_DB/Makefile
new file mode 100644
index 0000000..197d74b
--- /dev/null
+++ b/DAZZ_DB/Makefile
@@ -0,0 +1,75 @@
+DEST_DIR = ~/bin
+
+CFLAGS = -O3 -Wall -Wextra -Wno-unused-result -fno-strict-aliasing
+
+ALL = fasta2DB DB2fasta quiva2DB DB2quiva DBsplit DBdust Catrack DBshow DBstats DBrm simulator \
+      fasta2DAM DAM2fasta DBdump rangen
+
+all: $(ALL)
+
+fasta2DB: fasta2DB.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o fasta2DB fasta2DB.c DB.c QV.c -lm
+
+DB2fasta: DB2fasta.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DB2fasta DB2fasta.c DB.c QV.c -lm
+
+quiva2DB: quiva2DB.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -DINTERACTIVE -o quiva2DB quiva2DB.c DB.c QV.c -lm
+
+DB2quiva: DB2quiva.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DB2quiva DB2quiva.c DB.c QV.c -lm
+
+DBsplit: DBsplit.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBsplit DBsplit.c DB.c QV.c -lm
+
+DBdust: DBdust.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBdust DBdust.c DB.c QV.c -lm
+
+Catrack: Catrack.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o Catrack Catrack.c DB.c QV.c -lm
+
+DBshow: DBshow.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBshow DBshow.c DB.c QV.c -lm
+
+DBdump: DBdump.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBdump DBdump.c DB.c QV.c -lm
+
+DBstats: DBstats.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBstats DBstats.c DB.c QV.c -lm
+
+DBrm: DBrm.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBrm DBrm.c DB.c QV.c -lm
+
+simulator: simulator.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o simulator simulator.c DB.c QV.c -lm
+
+rangen: rangen.c
+	gcc $(CFLAGS) -o rangen rangen.c
+
+fasta2DAM: fasta2DAM.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o fasta2DAM fasta2DAM.c DB.c QV.c -lm
+
+DAM2fasta: DAM2fasta.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DAM2fasta DAM2fasta.c DB.c QV.c -lm
+
+DBupgrade.Sep.25.2014: DBupgrade.Sep.25.2014.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBupgrade.Sep.25.2014 DBupgrade.Sep.25.2014.c DB.c QV.c -lm
+
+DBupgrade.Dec.31.2014: DBupgrade.Dec.31.2014.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DBupgrade.Dec.31.2014 DBupgrade.Dec.31.2014.c DB.c QV.c -lm
+
+DUSTupgrade.Jan.1.2015: DUSTupgrade.Jan.1.2015.c DB.c DB.h QV.c QV.h
+	gcc $(CFLAGS) -o DUSTupgrade.Jan.1.2015 DUSTupgrade.Jan.1.2015.c DB.c QV.c -lm
+
+clean:
+	rm -f $(ALL)
+	rm -fr *.dSYM
+	rm -f DBupgrade.Sep.25.2014 DBupgrade.Dec.31.2014 DUSTupgrade.Jan.1.2015
+	rm -f dazz.db.tar.gz
+
+install:
+	cp $(ALL) $(DEST_DIR)
+
+package:
+	make clean
+	tar -zcf dazz.db.tar.gz README Makefile *.h *.c
diff --git a/DAZZ_DB/QV.c b/DAZZ_DB/QV.c
new file mode 100644
index 0000000..cdb6a63
--- /dev/null
+++ b/DAZZ_DB/QV.c
@@ -0,0 +1,1387 @@
+/*******************************************************************************************
+ *
+ *  Compressor/decompressor for .quiv files: customized Huffman codes for each stream based on
+ *    the histogram of values occuring in a given file.  The two low complexity streams
+ *    (deletionQV and substitutionQV) use a Huffman coding of the run length of the prevelant
+ *    character.
+ *
+ *  Author:   Gene Myers
+ *  Date:     Jan 18, 2014
+ *  Modified: July 25, 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#undef DEBUG
+
+#define MIN_BUFFER 1000
+
+#define HUFF_CUTOFF  16   //  This cannot be larger than 16 !
+
+
+/*******************************************************************************************
+ *
+ *  Endian flipping routines
+ *
+ ********************************************************************************************/
+
+static int LittleEndian;  //  Little-endian machine ?
+                          //     Referred by: Decode & Decode_Run
+static int Flip;          //  Flip endian of all coded shorts and ints
+                          //     Referred by: Decode & Decode_Run & Read_Scheme
+
+static void Set_Endian(int flip)
+{ uint32 x = 3;
+  uint8 *b = (uint8 *) (&x);
+
+  Flip         = flip;
+  LittleEndian = (b[0] == 3);
+}
+
+static void Flip_Long(void *w)
+{ uint8 *v = (uint8 *) w;
+  uint8  x;
+
+  x    = v[0];
+  v[0] = v[3];
+  v[3] = x;
+  x    = v[1];
+  v[1] = v[2];
+  v[2] = x;
+}
+
+static void Flip_Short(void *w)
+{ uint8 *v = (uint8 *) w;
+  uint8  x;
+
+  x    = v[0];
+  v[0] = v[1];
+  v[1] = x;
+}
+
+
+/*******************************************************************************************
+ *
+ *  Routines for computing a Huffman Encoding Scheme
+ *
+ ********************************************************************************************/
+
+typedef struct
+  { int    type;             //  0 => normal, 1 => normal but has long codes, 2 => truncated
+    uint32 codebits[256];    //  If type = 2, then code 255 is the special code for
+    int    codelens[256];    //    non-Huffman exceptions
+    int    lookup[0x10000];  //  Lookup table (just for decoding)
+  } HScheme;
+
+typedef struct _HTree
+  { struct _HTree *lft, *rgt; 
+    uint64         count;
+  } HTree;
+
+  //  Establish heap property from node s down (1 is root, siblings of n are 2n and 2n+1)
+  //    assuming s is the only perturbation in the tree.
+
+static void Reheap(int s, HTree **heap, int hsize)
+{ int      c, l, r;
+  HTree   *hs, *hr, *hl;
+
+  c  = s;
+  hs = heap[s];
+  while ((l = 2*c) <= hsize)
+    { r  = l+1;
+      hl = heap[l];
+      hr = heap[r];
+      if (r > hsize || hr->count > hl->count)
+        { if (hs->count > hl->count)
+            { heap[c] = hl;
+              c = l;
+            }
+          else
+            break;
+        }
+      else
+        { if (hs->count > hr->count)
+            { heap[c] = hr;
+              c = r;
+            }
+          else
+            break;
+        }
+    }
+  if (c != s)
+    heap[c] = hs;
+}
+
+  //  Given Huffman tree build a table of codes from it, the low-order codelens[s] bits
+  //    of codebits[s] contain the code for symbol s.
+
+static void Build_Table(HTree *node, int code, int len, uint32 *codebits, int *codelens)
+{ if (node->rgt == NULL)
+    { uint64 symbol = (uint64) (node->lft);
+      codebits[symbol] = code;
+      codelens[symbol] = len;
+    }
+  else
+    { code <<= 1;
+      len   += 1;
+      Build_Table(node->lft,code,len,codebits,codelens);
+      Build_Table(node->rgt,code+1,len,codebits,codelens);
+    }
+}
+
+  // For the non-zero symbols in hist, compute a huffman tree over them, and then
+  //   build a table of the codes.  If inscheme is not NULL, then place all symbols
+  //   with code 255 or with more than HUFF_CUTOFF bits in the encoding by inscheme
+  //   as a single united entity, whose code signals that the value of these symbols
+  //   occur explicitly in 8 (values) or 16 (run lengths) bits following the code.
+  //   All the symbols in this class will have the same entry in the code table and
+  //   255 is always in this class.
+
+static HScheme *Huffman(uint64 *hist, HScheme *inscheme)
+{ HScheme *scheme;
+  HTree   *heap[259];
+  HTree    node[512];
+  int      hsize;
+  HTree   *lft, *rgt;
+  int      value, range;
+  int     i;
+
+  scheme = (HScheme *) Malloc(sizeof(HScheme),"Allocating Huffman scheme record");
+  if (scheme == NULL)
+    return (NULL);
+
+  hsize = 0;                        //  Load heap
+  value = 0;
+  if (inscheme != NULL)
+    { node[0].count = 0;
+      node[0].lft   = (HTree *) (uint64) 255;
+      node[0].rgt   = NULL;
+      heap[++hsize] = node+(value++);
+    }
+  for (i = 0; i < 256; i++)
+    if (hist[i] > 0)
+      { if (inscheme != NULL && (inscheme->codelens[i] > HUFF_CUTOFF || i == 255))
+          node[0].count += hist[i];
+        else
+          { node[value].count = hist[i];
+            node[value].lft   = (HTree *) (uint64) i;
+            node[value].rgt   = NULL;
+            heap[++hsize] = node+(value++);
+          }
+      }
+
+  for (i = hsize/2; i >= 1; i--)    //  Establish heap property
+    Reheap(i,heap,hsize);
+
+  range = value;                    //   Merge pairs with smallest count until have a tree
+  for (i = 1; i < value; i++)
+    { lft = heap[1];
+      heap[1] = heap[hsize--];
+      Reheap(1,heap,hsize);
+      rgt = heap[1];
+      node[range].lft = lft;
+      node[range].rgt = rgt;
+      node[range].count = lft->count + rgt->count;
+      heap[1] = node+(range++);
+      Reheap(1,heap,hsize);
+    }
+
+  for (i = 0; i < 256; i++)        //  Build the code table
+    { scheme->codebits[i] = 0;
+      scheme->codelens[i] = 0;
+    }
+
+  Build_Table(node+(range-1),0,0,scheme->codebits,scheme->codelens);
+
+  if (inscheme != NULL)            //  Set scheme type and if truncated (2), map truncated codes
+    { scheme->type = 2;            //    to code and length for 255
+      for (i = 0; i < 255; i++)
+        if (inscheme->codelens[i] > HUFF_CUTOFF || scheme->codelens[i] > HUFF_CUTOFF)
+          { scheme->codelens[i] = scheme->codelens[255];
+            scheme->codebits[i] = scheme->codebits[255];
+          }
+    }
+  else
+    { scheme->type = 0;
+      for (i = 0; i < 256; i++)
+        { if (scheme->codelens[i] > HUFF_CUTOFF)
+            scheme->type = 1;
+        }
+    }
+
+  return (scheme);
+}
+
+#ifdef DEBUG
+
+  //  For debug, show the coding table
+
+static void Print_Table(HScheme *scheme, uint64 *hist, int infosize)
+{ uint64 total_bits;
+  uint32 specval, mask, code, *bits;
+  int    speclen, clen, *lens;
+  int    i, k;
+
+  total_bits = 0;
+  bits = scheme->codebits;
+  lens = scheme->codelens;
+  if (scheme->type == 2)
+    { specval = bits[255];
+      speclen = lens[255];
+    }
+  else
+    specval = speclen = 0x7fffffff;
+
+  printf("\nCode Table:\n");
+  for (i = 0; i < 256; i++)
+    if (lens[i] > 0)
+      { clen = lens[i];
+        mask = (1 << clen);
+        code = bits[i];
+        printf(" %3d: %2d ",i,clen);
+        for (k = 0; k < clen; k++)
+          { mask >>= 1;
+            if (code & mask)
+              printf("1");
+            else
+              printf("0");
+          }
+        if (code == specval && clen == speclen)
+          { printf(" ***");
+            if (hist != NULL)
+              total_bits += (clen+infosize)*hist[i];
+          }
+        else if (hist != NULL)
+          total_bits += clen*hist[i];
+        printf("\n");
+      }
+  if (hist != NULL)
+    printf("\nTotal Bytes = %lld\n",(total_bits-1)/8+1);
+}
+
+  //  For debug, show the histogram
+
+static void Print_Histogram(uint64 *hist)
+{ int    i, low, hgh;
+  uint64 count;
+
+  for (hgh = 255; hgh >= 0; hgh--)
+    if (hist[hgh] != 0)
+      break;
+  for (low = 0; low < 256; low++)
+    if (hist[low] != 0)
+      break;
+  count = 0;
+  for (i = low; i <= hgh; i++)
+    count += hist[i];
+
+  for (i = hgh; i >= low; i--)
+    printf("    %3d: %8llu %5.1f%%\n",i,hist[i],(hist[i]*100.)/count);
+}
+
+#endif
+
+
+/*******************************************************************************************
+ *
+ *  Read and Write Huffman Schemes
+ *
+ ********************************************************************************************/
+
+  //  Write the code table to out.
+
+static void Write_Scheme(HScheme *scheme, FILE *out)
+{ int     i;
+  uint8   x;
+  uint32 *bits;
+  int    *lens;
+
+  lens = scheme->codelens;
+  bits = scheme->codebits;
+
+  x = (uint8) (scheme->type);
+  fwrite(&x,1,1,out);
+
+  for (i = 0; i < 256; i++)
+    { x = (uint8) (lens[i]);
+      fwrite(&x,1,1,out);
+      if (x > 0)
+        fwrite(bits+i,sizeof(uint32),1,out);
+    }
+}
+
+  //  Allocate and read a code table from in, and return a pointer to it.
+
+static HScheme *Read_Scheme(FILE *in)
+{ HScheme *scheme;
+  int     *look, *lens;
+  uint32  *bits, base;
+  int      i, j, powr;
+  uint8    x;
+
+  scheme = (HScheme *) Malloc(sizeof(HScheme),"Allocating Huffman scheme record");
+  if (scheme == NULL)
+    return (NULL);
+
+  lens = scheme->codelens;
+  bits = scheme->codebits;
+  look = scheme->lookup;
+
+  if (fread(&x,1,1,in) != 1)
+    { EPRINTF(EPLACE,"Could not read scheme type byte (Read_Scheme)\n");
+      free(scheme);
+      return (NULL);
+    }
+  scheme->type = x;
+  for (i = 0; i < 256; i++)
+    { if (fread(&x,1,1,in) != 1)
+        { EPRINTF(EPLACE,"Could not read length of %d'th code (Read_Scheme)\n",i);
+          return (NULL);
+        }
+      lens[i] = x;
+      if (x > 0)
+        { if (fread(bits+i,sizeof(uint32),1,in) != 1)
+            { EPRINTF(EPLACE,"Could not read bit encoding of %d'th code (Read_Scheme)\n",i);
+              free(scheme);
+              return (NULL);
+            }
+        }
+      else
+        bits[i] = 0;
+    }
+
+  if (Flip)
+    { for (i = 0; i < 256; i++)
+        Flip_Long(bits+i);
+    }
+
+  for (i = 0; i < 256; i++)
+    { if (lens[i] > 0)
+        { base = (bits[i] << (16-lens[i]));
+          powr = (1 << (16-lens[i]));
+          for (j = 0; j < powr; j++)
+            look[base+j] = i;
+        }
+    }
+
+  return (scheme);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Encoders and Decoders
+ *
+ ********************************************************************************************/
+
+  //  Encode read[0..rlen-1] according to scheme and write to out
+
+static void Encode(HScheme *scheme, FILE *out, uint8 *read, int rlen)
+{ uint32  x, c, ocode;
+  int     n, k, olen, llen;
+  int    *nlens;
+  uint32 *nbits;
+  uint32  nspec;
+  int     nslen;
+
+  nlens = scheme->codelens;
+  nbits = scheme->codebits;
+
+  if (scheme->type == 2)
+    { nspec = nbits[255];
+      nslen = nlens[255];
+    }
+  else
+    nspec = nslen = 0x7fffffff;
+
+#define OCODE(L,C)				\
+{ int    len  = olen + (L);			\
+  uint32 code = (C);				\
+						\
+  llen = olen;					\
+  if (len >= 32)				\
+    { olen   = len-32;				\
+      ocode |= (code >> olen);			\
+      fwrite(&ocode,sizeof(uint32),1,out);	\
+      if (olen > 0)				\
+        ocode = (code << (32-olen));		\
+      else					\
+        ocode = 0;				\
+    } 						\
+  else						\
+    { olen   = len;				\
+      ocode |= (code << (32-olen));;		\
+    }						\
+}
+
+  llen  = 0;
+  olen  = 0;
+  ocode = 0;
+  for (k = 0; k < rlen; k++)
+    { x = read[k];
+      n = nlens[x];
+      c = nbits[x];
+      OCODE(n,c);
+      if (c == nspec && n == nslen)
+        OCODE(8,x);
+    }
+
+  if (olen > 0)                              //  Tricky: must pad so decoder does not read past
+    { fwrite(&ocode,sizeof(uint32),1,out);   //    last integer int the coded output.
+      if (llen > 16 && olen > llen)
+        fwrite(&ocode,sizeof(uint32),1,out);
+    }
+  else if (llen > 16)
+    fwrite(&ocode,sizeof(uint32),1,out);
+}
+
+  //  Encode read[0..rlen-1] according to non-rchar table neme, and run-length table reme for
+  //    runs of rchar characters.  Write to out.
+
+static void Encode_Run(HScheme *neme, HScheme *reme, FILE *out, uint8 *read, int rlen, int rchar)
+{ uint32  x, c, ocode;
+  int     n, h, k, olen, llen;
+  int    *nlens, *rlens;
+  uint32 *nbits, *rbits;
+  uint32  nspec, rspec;
+  int     nslen, rslen;
+
+  nlens = neme->codelens;
+  nbits = neme->codebits;
+  rlens = reme->codelens;
+  rbits = reme->codebits;
+
+  if (neme->type == 2)
+    { nspec = nbits[255];
+      nslen = nlens[255];
+    }
+  else
+    nspec = nslen = 0x7fffffff;
+
+  rspec = rbits[255];
+  rslen = rlens[255];
+
+  llen  = 0;
+  olen  = 0;
+  ocode = 0;
+  k     = 0;
+  while (k < rlen)
+    { h = k;
+      while (k < rlen && read[k] == rchar)
+        k += 1;
+      if (k-h >= 255)
+        x = 255;
+      else
+        x = k-h;
+      n = rlens[x];
+      c = rbits[x];
+      OCODE(n,c);
+      if (c == rspec && n == rslen)
+        OCODE(16,k-h);
+      if (k < rlen)
+        { x = read[k];
+          n = nlens[x];
+          c = nbits[x];
+          OCODE(n,c);
+          if (c == nspec && n == nslen)
+            OCODE(8,x);
+          k += 1;
+        }
+    }
+
+  if (olen > 0)
+    { fwrite(&ocode,sizeof(uint32),1,out);
+      if (llen > 16 && olen > llen)
+        fwrite(&ocode,sizeof(uint32),1,out);
+    }
+  else if (llen > 16)
+    fwrite(&ocode,sizeof(uint32),1,out);
+}
+
+  //  Read and decode from in, the next rlen symbols into read according to scheme
+
+static int Decode(HScheme *scheme, FILE *in, char *read, int rlen)
+{ int    *look, *lens;
+  int     signal, ilen;
+  uint64  icode;
+  uint32 *ipart;
+  uint16 *xpart;
+  uint8  *cpart;
+  int     j, n, c;
+
+  if (LittleEndian)
+    { ipart = ((uint32 *) (&icode));
+      xpart = ((uint16 *) (&icode)) + 2;
+      cpart = ((uint8  *) (&icode)) + 5;
+    }
+  else
+    { ipart = ((uint32 *) (&icode)) + 1;
+      xpart = ((uint16 *) (&icode)) + 1;
+      cpart = ((uint8  *) (&icode)) + 2;
+    }
+
+  if (scheme->type == 2)
+    signal  = 255;
+  else
+    signal  = 256;
+  lens = scheme->codelens;
+  look = scheme->lookup;
+
+#define GET								\
+  if (n > ilen)								\
+    { icode <<= ilen;							\
+      if (fread(ipart,sizeof(uint32),1,in) != 1)			\
+        { EPRINTF(EPLACE,"Could not read more bits (Decode)\n");	\
+          return (1);							\
+        }								\
+      ilen    = n-ilen;							\
+      icode <<= ilen;							\
+      ilen    = 32-ilen;						\
+    }									\
+  else									\
+    { icode <<= n;							\
+      ilen   -= n;							\
+    }
+
+#define GETFLIP								\
+  if (n > ilen)								\
+    { icode <<= ilen;							\
+      if (fread(ipart,sizeof(uint32),1,in) != 1)			\
+        { EPRINTF(EPLACE,"Could not read more bits (Decode)\n");	\
+          return (1);							\
+        }								\
+      Flip_Long(ipart);							\
+      ilen    = n-ilen;							\
+      icode <<= ilen;							\
+      ilen    = 32-ilen;						\
+    }									\
+  else									\
+    { icode <<= n;							\
+      ilen   -= n;							\
+    }
+
+  n     = 16;
+  ilen  = 0;
+  icode = 0;
+  if (Flip)
+    for (j = 0; j < rlen; j++)
+      { GETFLIP
+        c = look[*xpart];
+        n = lens[c];
+        if (c == signal)
+          { GETFLIP
+            c = *cpart;
+            n = 8;
+          }
+        read[j] = (char) c;
+      }
+  else
+    for (j = 0; j < rlen; j++)
+      { GET
+        c = look[*xpart];
+        n = lens[c];
+        if (c == signal)
+          { GET
+            c = *cpart;
+            n = 8;
+          }
+        read[j] = (char) c;
+      }
+
+  return (0);
+}
+
+  //  Read and decode from in, the next rlen symbols into read according to non-rchar scheme
+  //    neme, and the rchar runlength shceme reme
+
+static int Decode_Run(HScheme *neme, HScheme *reme, FILE *in, char *read,
+                      int rlen, int rchar)
+{ int    *nlook, *nlens;
+  int    *rlook, *rlens;
+  int     nsignal, ilen;
+  uint64  icode;
+  uint32 *ipart;
+  uint16 *xpart;
+  uint8  *cpart;
+  int     j, n, c, k;
+
+  if (LittleEndian)
+    { ipart = ((uint32 *) (&icode));
+      xpart = ((uint16 *) (&icode)) + 2;
+      cpart = ((uint8  *) (&icode)) + 5;
+    }
+  else
+    { ipart = ((uint32 *) (&icode)) + 1;
+      xpart = ((uint16 *) (&icode)) + 1;
+      cpart = ((uint8  *) (&icode)) + 2;
+    }
+
+  if (neme->type == 2)
+    nsignal = 255;
+  else
+    nsignal = 256;
+  nlens = neme->codelens;
+  nlook = neme->lookup;
+
+  rlens = reme->codelens;
+  rlook = reme->lookup;
+
+  n     = 16;
+  ilen  = 0;
+  icode = 0;
+  if (Flip)
+    for (j = 0; j < rlen; j++)
+      { GETFLIP
+        c = rlook[*xpart];
+        n = rlens[c];
+        if (c == 255)
+          { GETFLIP
+            c = *xpart;
+            n = 16;
+          }
+        for (k = 0; k < c; k++)
+          read[j++] = (char) rchar;
+
+        if (j < rlen)
+          { GETFLIP
+            c = nlook[*xpart];
+            n = nlens[c];
+            if (c == nsignal)
+              { GETFLIP
+                c = *cpart;
+                n = 8;
+              }
+            read[j] = (char) c;
+          }
+      }
+  else
+    for (j = 0; j < rlen; j++)
+      { GET
+        c = rlook[*xpart];
+        n = rlens[c];
+        if (c == 255)
+          { GET
+            c = *xpart;
+            n = 16;
+          }
+        for (k = 0; k < c; k++)
+          read[j++] = (char) rchar;
+
+        if (j < rlen)
+          { GET
+            c = nlook[*xpart];
+            n = nlens[c];
+            if (c == nsignal)
+              { GET
+                c = *cpart;
+                n = 8;
+              }
+            read[j] = (char) c;
+          }
+      }
+
+  return (0);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Histogrammers
+ *
+ ********************************************************************************************/
+
+//  Histogram runlengths of symbol runChar in stream[0..rlen-1] into run.
+
+static void Histogram_Seqs(uint64 *hist, uint8 *stream, int rlen)
+{ int k;
+
+  for (k = 0; k < rlen; k++)
+    hist[stream[k]] += 1;
+}
+
+static void Histogram_Runs(uint64 *run, uint8 *stream, int rlen, int runChar)
+{ int k, h;
+
+  k = 0;
+  while (k < rlen)
+    { h = k;
+      while (k < rlen && stream[k] == runChar)
+        k += 1;
+      if (k-h >= 256)
+        run[255] += 1;
+      else
+        run[k-h] += 1;
+      if (k < rlen)
+        k += 1;
+    }
+}
+
+
+/*******************************************************************************************
+ *
+ *  Reader
+ *
+ ********************************************************************************************/
+
+static char  *Read = NULL;   //  Referred by:  QVentry, Read_Lines, QVcoding_Scan,
+static int    Rmax = -1;     //                Compress_Next_QVentry
+
+static int    Nline;         //  Referred by:  QVcoding_Scan
+
+char *QVentry()
+{ return (Read); }
+
+void Set_QV_Line(int line)
+{ Nline = line; }
+
+int Get_QV_Line()
+{ return (Nline); }
+
+//  If nlines == 1 trying to read a single header, nlines = 5 trying to read 5 QV/fasta lines
+//    for a sequence.  Place line j at Read+j*Rmax and the length of every line is returned
+//    unless eof occurs in which case return -1.  If any error occurs return -2.
+
+int Read_Lines(FILE *input, int nlines)
+{ int   i, rlen;
+  int   tmax;
+  char *tread;
+  char *other;
+
+  if (Read == NULL)
+    { tmax  = MIN_BUFFER;
+      tread = (char *) Malloc(5*tmax,"Allocating QV entry read buffer");
+      if (tread == NULL)
+        EXIT(-2);
+      Rmax = tmax;
+      Read = tread;
+    }
+
+  Nline += 1;
+  if (fgets(Read,Rmax,input) == NULL)
+    return (-1);
+
+  rlen = strlen(Read);
+  while (Read[rlen-1] != '\n')
+    { tmax  = ((int) 1.4*Rmax) + MIN_BUFFER;
+      tread = (char *) Realloc(Read,5*tmax,"Reallocating QV entry read buffer");
+      if (tread == NULL)
+        EXIT(-2);
+      Rmax = tmax;
+      Read = tread;
+      if (fgets(Read+rlen,Rmax-rlen,input) == NULL)
+        { EPRINTF(EPLACE,"Line %d: Last line does not end with a newline !\n",Nline);
+          EXIT(-2);
+        }
+      rlen += strlen(Read+rlen);
+    }
+  other = Read;
+  for (i = 1; i < nlines; i++)
+    { other += Rmax;
+      Nline += 1;
+      if (fgets(other,Rmax,input) == NULL)
+        { EPRINTF(EPLACE,"Line %d: incomplete last entry of .quiv file\n",Nline);
+          EXIT(-2);
+        }
+      if (rlen != (int) strlen(other))
+        { EPRINTF(EPLACE,"Line %d: Lines for an entry are not the same length\n",Nline);
+          EXIT(-2);
+        }
+    }
+  return (rlen-1);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Tag compression and decompression routines
+ *
+ ********************************************************************************************/
+
+//  Keep only the symbols in tags[0..rlen-1] for which qvs[k] != rchar and
+//    return the # of symbols kept.
+
+static int Pack_Tag(char *tags, char *qvs, int rlen, int rchar)
+{ int j, k;
+
+  j = 0;
+  for (k = 0; k < rlen; k++)
+    if (qvs[k] != rchar)
+      tags[j++] = tags[k];
+  tags[j] = '\0';
+  return (j);
+}
+
+  //  Count the # of non-rchar symbols in qvs[0..rlen-1]
+
+static int Packed_Length(char *qvs, int rlen, int rchar)
+{ int k, clen;
+
+  clen = 0;
+  for (k = 0; k < rlen; k++)
+    if (qvs[k] != rchar)
+      clen += 1;
+  return (clen);
+}
+
+  //  Unpack tags by moving its i'th char to position k where qvs[k] is the i'th non-rchar
+  //    symbol in qvs.  All other chars are set to rchar.  rlen is the length of qvs and
+  //    the unpacked result, clen is the initial length of tags.
+
+static void Unpack_Tag(char *tags, int clen, char *qvs, int rlen, int rchar)
+{ int j, k;
+
+  j = clen-1;
+  for (k = rlen-1; k >= 0; k--)
+    { if (qvs[k] == rchar)
+        tags[k] = 'n';
+      else
+        tags[k] = tags[j--];
+    }
+}
+
+
+/*******************************************************************************************
+ *
+ *  Statistics Scan and Scheme creation and write
+ *
+ ********************************************************************************************/
+
+  // Read up to the next num entries or until eof from the .quiva file on input and record
+  //   frequency statistics.  Copy these entries to the temporary file temp if != NULL.
+  //   If there is an error then -1 is returned, otherwise the number of entries read.
+
+static uint64   delHist[256], insHist[256], mrgHist[256], subHist[256], delRun[256], subRun[256];
+static uint64   totChar;
+static int      delChar, subChar;
+
+  // Referred by:  QVcoding_Scan, Create_QVcoding
+
+int QVcoding_Scan(FILE *input, int num, FILE *temp)
+{ char *slash;
+  int   rlen;
+  int   i, r;
+
+  //  Zero histograms
+
+  bzero(delHist,sizeof(uint64)*256);
+  bzero(mrgHist,sizeof(uint64)*256);
+  bzero(insHist,sizeof(uint64)*256);
+  bzero(subHist,sizeof(uint64)*256);
+
+  for (i = 0; i < 256; i++)
+    delRun[i] = subRun[i] = 1;
+
+  totChar    = 0;
+  delChar    = -1;
+  subChar    = -1;
+
+  //  Make a sweep through the .quiva entries, histogramming the relevant things
+  //    and figuring out the run chars for the deletion and substition streams
+
+  r = 0;
+  for (i = 0; i < num; i++)
+    { int well, beg, end, qv;
+
+      rlen = Read_Lines(input,1);
+      if (rlen == -2)
+        EXIT(-1);
+      if (rlen < 0)
+        break;
+
+      if (rlen == 0 || Read[0] != '@')
+        { EPRINTF(EPLACE,"Line %d: Header in quiva file is missing\n",Nline);
+          EXIT(-1);
+        }
+      slash = index(Read+1,'/');
+      if (slash == NULL)
+  	{ EPRINTF(EPLACE,"%s: Line %d: Header line incorrectly formatted ?\n",
+                         Prog_Name,Nline);
+          EXIT(-1);
+        }
+      if (sscanf(slash+1,"%d/%d_%d RQ=0.%d\n",&well,&beg,&end,&qv) != 4)
+        { EPRINTF(EPLACE,"%s: Line %d: Header line incorrectly formatted ?\n",
+                         Prog_Name,Nline);
+          EXIT(-1);
+        }
+
+      if (temp != NULL)
+        fputs(Read,temp);
+
+      rlen = Read_Lines(input,5);
+      if (rlen < 0)
+        { if (rlen == -1)
+            EPRINTF(EPLACE,"Line %d: incomplete last entry of .quiv file\n",Nline);
+          EXIT(-1);
+        }
+
+      if (temp != NULL)
+        { fputs(Read,temp);
+          fputs(Read+Rmax,temp);
+          fputs(Read+2*Rmax,temp);
+          fputs(Read+3*Rmax,temp);
+          fputs(Read+4*Rmax,temp);
+        }
+
+      Histogram_Seqs(delHist,(uint8 *) (Read),rlen);
+      Histogram_Seqs(insHist,(uint8 *) (Read+2*Rmax),rlen);
+      Histogram_Seqs(mrgHist,(uint8 *) (Read+3*Rmax),rlen);
+      Histogram_Seqs(subHist,(uint8 *) (Read+4*Rmax),rlen);
+
+      if (delChar < 0)
+        { int   k;
+          char *del = Read+Rmax;
+
+          for (k = 0; k < rlen; k++)
+            if (del[k] == 'n' || del[k] == 'N')
+              { delChar = Read[k];
+                break;
+              }
+        }
+      if (delChar >= 0)
+        Histogram_Runs( delRun,(uint8 *) (Read),rlen,delChar);
+      totChar += rlen;
+      if (subChar < 0)
+        { if (totChar >= 100000)
+            { int k;
+
+              subChar = 0;
+              for (k = 1; k < 256; k++)
+                if (subHist[k] > subHist[subChar])
+                  subChar = k;
+            }
+        }
+      if (subChar >= 0)
+        Histogram_Runs( subRun,(uint8 *) (Read+4*Rmax),rlen,subChar);
+
+      r += 1;
+    }
+
+  return (r);
+}
+
+  //   Using the statistics in the global stat tables, create the Huffman schemes and write
+  //   them to output.  If lossy is set, then create a lossy table for the insertion and merge
+  //   QVs.
+
+QVcoding *Create_QVcoding(int lossy)
+{ static QVcoding coding;
+
+  HScheme *delScheme, *insScheme, *mrgScheme, *subScheme;
+  HScheme *dRunScheme, *sRunScheme;
+
+  delScheme  = NULL;
+  dRunScheme = NULL;
+  insScheme  = NULL;
+  mrgScheme  = NULL;
+  subScheme  = NULL;
+  sRunScheme = NULL;
+
+  //  Check whether using a subtitution run char is a win
+
+  if (totChar < 200000 || subHist[subChar] < .5*totChar)
+    subChar = -1;
+
+  //  If lossy encryption is enabled then scale insertions and merge QVs.
+
+  if (lossy)
+    { int k;
+
+      for (k = 0; k < 256; k += 2)
+        { insHist[k] += insHist[k+1];
+          insHist[k+1] = 0;
+        }
+
+      for (k = 0; k < 256; k += 4)
+        { mrgHist[k] += mrgHist[k+1];
+          mrgHist[k] += mrgHist[k+2];
+          mrgHist[k] += mrgHist[k+3];
+          mrgHist[k+1] = 0;
+          mrgHist[k+2] = 0;
+          mrgHist[k+3] = 0;
+        }
+    }
+
+  //  Build a Huffman scheme for each stream entity from the histograms
+
+#define SCHEME_MACRO(meme,hist,label,bits)	\
+  scheme = Huffman( (hist), NULL);		\
+  if (scheme == NULL)				\
+    goto error;					\
+  if (scheme->type)				\
+    { (meme) = Huffman( (hist), scheme);	\
+      free(scheme);				\
+    }						\
+  else						\
+    (meme) = scheme;
+
+#ifdef DEBUG
+
+#define MAKE_SCHEME(meme,hist,label,bits)	\
+  SCHEME_MACRO(meme,hist,label,bits)		\
+  printf("\n%s\n", (label) );			\
+  Print_Histogram( (hist));			\
+  Print_Table( (meme), (hist), (bits));	
+
+#else
+
+#define MAKE_SCHEME(meme,hist,label,bits)	\
+  SCHEME_MACRO(meme,hist,label,bits)
+
+#endif
+
+  { HScheme *scheme;
+
+    if (delChar < 0)
+      { MAKE_SCHEME(delScheme,delHist, "Hisotgram of Deletion QVs", 8);
+        dRunScheme = NULL;
+      }
+    else
+      { delHist[delChar] = 0;
+        MAKE_SCHEME(delScheme,delHist, "Hisotgram of Deletion QVs less run char", 8);
+        MAKE_SCHEME(dRunScheme,delRun, "Histogram of Deletion Runs QVs", 16);
+#ifdef DEBUG
+        printf("\nRun char is '%c'\n",delChar);
+#endif
+      }
+
+#ifdef DEBUG
+    { int    k;
+      uint64 count;
+
+      count = 0;
+      for (k = 0; k < 256; k++)
+        count += delHist[k];
+      printf("\nDelTag will require %lld bytes\n",count/4);
+    }
+#endif
+
+    MAKE_SCHEME(insScheme,insHist, "Hisotgram of Insertion QVs", 8);
+    MAKE_SCHEME(mrgScheme,mrgHist, "Hisotgram of Merge QVs", 8);
+
+    if (subChar < 0)
+      { MAKE_SCHEME(subScheme,subHist, "Hisotgram of Subsitution QVs", 8);
+        sRunScheme = NULL;
+      }
+    else
+      { subHist[subChar] = 0;
+        MAKE_SCHEME(subScheme,subHist, "Hisotgram of Subsitution QVs less run char", 8);
+        MAKE_SCHEME(sRunScheme,subRun, "Histogram of Substitution Run QVs", 16);
+#ifdef DEBUG
+        printf("\nRun char is '%c'\n",subChar);
+#endif
+      }
+  }
+
+  //  Setup endian handling
+
+  Set_Endian(0);
+
+  coding.delScheme  = delScheme;
+  coding.insScheme  = insScheme;
+  coding.mrgScheme  = mrgScheme;
+  coding.subScheme  = subScheme;
+  coding.dRunScheme = dRunScheme;
+  coding.sRunScheme = sRunScheme;
+  coding.delChar    = delChar;
+  coding.subChar    = subChar;
+  coding.prefix     = NULL;
+  coding.flip       = 0;
+
+  return (&coding);
+
+error:
+  if (delScheme != NULL)
+    free(delScheme);
+  if (dRunScheme != NULL)
+    free(dRunScheme);
+  if (insScheme != NULL)
+    free(insScheme);
+  if (mrgScheme != NULL)
+    free(mrgScheme);
+  if (subScheme != NULL)
+    free(subScheme);
+  if (sRunScheme != NULL)
+    free(sRunScheme);
+  EXIT(NULL);
+}
+
+  // Write the encoding scheme 'coding' to 'output'
+
+void Write_QVcoding(FILE *output, QVcoding *coding)
+{
+  //   Write out the endian key, run chars, and prefix (if not NULL)
+
+  { uint16 half;
+    int    len;
+
+    half = 0x33cc;
+    fwrite(&half,sizeof(uint16),1,output);
+
+    if (coding->delChar < 0)
+      half = 256;
+    else
+      half = (uint16) (coding->delChar);
+    fwrite(&half,sizeof(uint16),1,output);
+
+    if (coding->subChar < 0)
+      half = 256;
+    else
+      half = (uint16) (coding->subChar);
+    fwrite(&half,sizeof(uint16),1,output);
+
+    len = strlen(coding->prefix);
+    fwrite(&len,sizeof(int),1,output);
+    fwrite(coding->prefix,1,len,output);
+  }
+
+  //   Write out the scheme tables
+
+  Write_Scheme(coding->delScheme,output);
+  if (coding->delChar >= 0)
+    Write_Scheme(coding->dRunScheme,output);
+  Write_Scheme(coding->insScheme,output);
+  Write_Scheme(coding->mrgScheme,output);
+  Write_Scheme(coding->subScheme,output);
+  if (coding->subChar >= 0)
+    Write_Scheme(coding->sRunScheme,output);
+}
+
+  // Read the encoding scheme 'coding' to 'output'
+
+QVcoding *Read_QVcoding(FILE *input)
+{ static QVcoding coding;
+
+  // Read endian key, run chars, and short name common to all headers
+
+  { uint16 half;
+    int    len;
+
+    if (fread(&half,sizeof(uint16),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read flip byte (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    coding.flip = (half != 0x33cc);
+
+    if (fread(&half,sizeof(uint16),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read deletion char (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    if (coding.flip)
+      Flip_Short(&half);
+    coding.delChar = half;
+    if (coding.delChar >= 256)
+      coding.delChar = -1;
+
+    if (fread(&half,sizeof(uint16),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read substitution char (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    if (coding.flip)
+      Flip_Short(&half);
+    coding.subChar = half;
+    if (coding.subChar >= 256)
+      coding.subChar = -1;
+
+    //  Read the short name common to all headers
+
+    if (fread(&len,sizeof(int),1,input) != 1)
+      { EPRINTF(EPLACE,"Could not read header name length (Read_QVcoding)\n");
+        EXIT(NULL);
+      }
+    if (coding.flip)
+      Flip_Long(&len);
+    coding.prefix = (char *) Malloc(len+1,"Allocating header prefix");
+    if (coding.prefix == NULL)
+      EXIT(NULL);
+    if (len > 0)
+      { if (fread(coding.prefix,len,1,input) != 1)
+          { EPRINTF(EPLACE,"Could not read header name (Read_QVcoding)\n");
+            EXIT(NULL);
+          }
+      }
+    coding.prefix[len] = '\0';
+  }
+
+  //  Setup endian handling
+
+  Set_Endian(coding.flip);
+
+  //  Read the Huffman schemes used to compress the data
+
+  coding.delScheme  = NULL;
+  coding.dRunScheme = NULL;
+  coding.insScheme  = NULL;
+  coding.mrgScheme  = NULL;
+  coding.subScheme  = NULL;
+  coding.sRunScheme = NULL;
+
+  coding.delScheme = Read_Scheme(input);
+  if (coding.delScheme == NULL)
+    goto error;
+  if (coding.delChar >= 0)
+    { coding.dRunScheme = Read_Scheme(input);
+      if (coding.dRunScheme == NULL)
+        goto error;
+    }
+  coding.insScheme = Read_Scheme(input);
+  if (coding.insScheme == NULL)
+    goto error;
+  coding.mrgScheme = Read_Scheme(input);
+  if (coding.mrgScheme == NULL)
+    goto error;
+  coding.subScheme = Read_Scheme(input);
+  if (coding.subScheme == NULL)
+    goto error;
+  if (coding.subChar >= 0)
+    { coding.sRunScheme = Read_Scheme(input);
+      if (coding.sRunScheme == NULL)
+        goto error;
+    }
+
+  return (&coding);
+
+error:
+  if (coding.delScheme != NULL)
+    free(coding.delScheme);
+  if (coding.dRunScheme != NULL)
+    free(coding.dRunScheme);
+  if (coding.insScheme != NULL)
+    free(coding.insScheme);
+  if (coding.mrgScheme != NULL)
+    free(coding.mrgScheme);
+  if (coding.subScheme != NULL)
+    free(coding.subScheme);
+  if (coding.sRunScheme != NULL)
+    free(coding.sRunScheme);
+  EXIT(NULL);
+}
+
+  //  Free all the auxilliary storage associated with the encoding argument
+
+void Free_QVcoding(QVcoding *coding)
+{ if (coding->subChar >= 0)
+    free(coding->sRunScheme);
+  free(coding->subScheme);
+  free(coding->mrgScheme);
+  free(coding->insScheme);
+  if (coding->delChar >= 0)
+    free(coding->dRunScheme);
+  free(coding->delScheme);
+  free(coding->prefix);
+}
+
+
+/*******************************************************************************************
+ *
+ *  Encode/Decode (w.r.t. coding) next entry from input and write to output
+ *
+ ********************************************************************************************/
+
+int Compress_Next_QVentry(FILE *input, FILE *output, QVcoding *coding, int lossy)
+{ int rlen, clen;
+
+  //  Get all 5 streams, compress each with its scheme, and output
+
+  rlen = Read_Lines(input,5);
+  if (rlen < 0)
+    { if (rlen == -1)
+        EPRINTF(EPLACE,"Line %d: incomplete last entry of .quiv file\n",Nline);
+      EXIT (-1);
+    }
+
+  if (coding->delChar < 0)
+    { Encode(coding->delScheme, output, (uint8 *) Read, rlen);
+      clen = rlen;
+    }
+  else
+    { Encode_Run(coding->delScheme, coding->dRunScheme, output,
+                 (uint8 *) Read, rlen, coding->delChar);
+      clen = Pack_Tag(Read+Rmax,Read,rlen,coding->delChar);
+    }
+  Number_Read(Read+Rmax);
+  Compress_Read(clen,Read+Rmax);
+  fwrite(Read+Rmax,1,COMPRESSED_LEN(clen),output);
+
+  if (lossy)
+    { uint8 *insert = (uint8 *) (Read+2*Rmax);
+      uint8 *merge  = (uint8 *) (Read+3*Rmax);
+      int    k;
+
+      for (k = 0; k < rlen; k++)
+        { insert[k] = (uint8) ((insert[k] >> 1) << 1);
+          merge[k]  = (uint8) (( merge[k] >> 2) << 2);
+        }
+    }
+
+  Encode(coding->insScheme, output, (uint8 *) (Read+2*Rmax), rlen);
+  Encode(coding->mrgScheme, output, (uint8 *) (Read+3*Rmax), rlen);
+  if (coding->subChar < 0)
+    Encode(coding->subScheme, output, (uint8 *) (Read+4*Rmax), rlen);
+  else
+    Encode_Run(coding->subScheme, coding->sRunScheme, output,
+               (uint8 *) (Read+4*Rmax), rlen, coding->subChar);
+
+  return (rlen);
+}
+
+int Uncompress_Next_QVentry(FILE *input, char **entry, QVcoding *coding, int rlen)
+{ int clen, tlen;
+
+  //  Decode each stream and write to output
+
+  if (coding->delChar < 0)
+    { if (Decode(coding->delScheme, input, entry[0], rlen))
+        EXIT(1);
+      clen = rlen;
+      tlen = COMPRESSED_LEN(clen);
+      if (tlen > 0)
+        { if (fread(entry[1],tlen,1,input) != 1)
+            { EPRINTF(EPLACE,"Could not read deletions entry (Uncompress_Next_QVentry\n");
+              EXIT(1);
+            }
+        }
+      Uncompress_Read(clen,entry[1]);
+      Lower_Read(entry[1]);
+    }
+  else
+    { if (Decode_Run(coding->delScheme, coding->dRunScheme, input,
+                     entry[0], rlen, coding->delChar))
+        EXIT(1);
+      clen = Packed_Length(entry[0],rlen,coding->delChar);
+      tlen = COMPRESSED_LEN(clen);
+      if (tlen > 0)
+        { if (fread(entry[1],tlen,1,input) != 1)
+            { EPRINTF(EPLACE,"Could not read deletions entry (Uncompress_Next_QVentry\n");
+              EXIT(1);
+            }
+        }
+      Uncompress_Read(clen,entry[1]);
+      Lower_Read(entry[1]);
+      Unpack_Tag(entry[1],clen,entry[0],rlen,coding->delChar);
+    }
+
+  if (Decode(coding->insScheme, input, entry[2], rlen))
+    EXIT(1);
+
+  if (Decode(coding->mrgScheme, input, entry[3], rlen))
+    EXIT(1);
+
+  if (coding->subChar < 0)
+    { if (Decode(coding->subScheme, input, entry[4], rlen))
+        EXIT(1);
+    }
+  else
+    { if (Decode_Run(coding->subScheme, coding->sRunScheme, input,
+                     entry[4], rlen, coding->subChar))
+        EXIT(1);
+    }
+
+  return (0);
+}
diff --git a/DAZZ_DB/QV.h b/DAZZ_DB/QV.h
new file mode 100644
index 0000000..532b2f4
--- /dev/null
+++ b/DAZZ_DB/QV.h
@@ -0,0 +1,96 @@
+/*******************************************************************************************
+ *
+ *  Compressor/decompressor for .quiv files: customized Huffman codes for each stream based on
+ *    the histogram of values occuring in a given file.  The two low complexity streams
+ *    (deletionQV and substitutionQV) use a Huffman coding of the run length of the prevelant
+ *    character.
+ *
+ *  Author:   Gene Myers
+ *  Date:     Jan 18, 2014
+ *  Modified: July 25, 2014
+ *
+ ********************************************************************************************/
+
+#ifndef _QV_COMPRESSOR
+
+#include <stdio.h>
+
+#define _QV_COMPRESSOR
+
+  //  The defined constant INTERACTIVE (set in DB.h) determines whether an interactive or
+  //    batch version of the routines in this library are compiled.  In batch mode, routines
+  //    print an error message and exit.  In interactive mode, the routines place the error
+  //    message in EPLACE (also defined in DB.h) and return an error value, typically NULL
+  //    if the routine returns a pointer, and an unusual integer value if the routine returns
+  //    an integer.
+  //  Below when an error return is described, one should understand that this value is returned
+  //    only if the routine was compiled in INTERACTIVE mode.
+
+  //  A PacBio compression scheme
+
+typedef struct
+  { void    *delScheme;   //  Huffman scheme for deletion QVs
+    void    *insScheme;   //  Huffman scheme for insertion QVs
+    void    *mrgScheme;   //  Huffman scheme for merge QVs
+    void    *subScheme;   //  Huffman scheme for substitution QVs
+    void    *dRunScheme;  //  Huffman scheme for deletion run lengths (if delChar > 0)
+    void    *sRunScheme;  //  Huffman scheme for substitution run lengths (if subChar > 0)
+    int      delChar;     //  If > 0, run-encoded deletion value
+    int      subChar;     //  If > 0, run-encoded substitution value
+    int      flip;        //  Need to flip multi-byte integers
+    char    *prefix;      //  Header line prefix
+  } QVcoding;
+
+  // Read the next nlines of input, and QVentry returns a pointer to the first line if needed.
+  //   If end-of-input is encountered before any further input, -1 is returned.  If there is
+  //   an error than -2 is returned.  Otherwise the length of the line(s) read is returned.
+
+int       Read_Lines(FILE *input, int nlines);
+char     *QVentry();
+
+  // Get and set the line counter for error reporting
+
+void      Set_QV_Line(int line);
+int       Get_QV_Line();
+
+  // Read up to the next num entries or until eof from the .quiva file on input and record
+  //   frequency statistics.  Copy these entries to the temporary file temp if != NULL.
+  //   If there is an error then -1 is returned, otherwise the number of entries read.
+
+int       QVcoding_Scan(FILE *input, int num, FILE *temp);
+
+  // Given QVcoding_Scan has been called at least once, create an encoding scheme based on
+  //   the accumulated statistics and return a pointer to it.  The returned encoding object
+  //   is *statically allocated within the routine.  If lossy is set then use a lossy scaling
+  //   for the insertion and merge streams.  If there is an error, then NULL is returned.
+
+QVcoding *Create_QVcoding(int lossy);
+
+  //  Read/write a coding scheme to input/output.  The encoding object returned by the reader
+  //    is *statically* allocated within the routine.  If an error occurs while reading then
+  //    NULL is returned.
+
+QVcoding *Read_QVcoding(FILE *input);
+void      Write_QVcoding(FILE *output, QVcoding *coding);
+
+  //  Free all the auxiliary storage associated with coding (but not the object itself!)
+
+void      Free_QVcoding(QVcoding *coding);
+
+  //  Assuming the file pointer is positioned just beyond an entry header line, read the
+  //    next set of 5 QV lines, compress them according to 'coding', and output.  If lossy
+  //    is set then the scheme is a lossy one.  A negative value is returned if an error
+  //    occurred, and the sequence length otherwise.
+
+int      Compress_Next_QVentry(FILE *input, FILE *output, QVcoding *coding, int lossy);
+
+  //  Assuming the input is position just beyond the compressed encoding of an entry header,
+  //    read the set of compressed encodings for the ensuing 5 QV vectors, decompress them,
+  //    and place their decompressed values into entry which is a 5 element array of character
+  //    pointers.  The parameter rlen computed from the preceeding header line, critically
+  //    provides the length of each of the 5 vectors.  A non-zero value is return only if an
+  //    error occured.
+
+int      Uncompress_Next_QVentry(FILE *input, char **entry, QVcoding *coding, int rlen);
+
+#endif // _QV_COMPRESSOR
diff --git a/DAZZ_DB/README b/DAZZ_DB/README
new file mode 100644
index 0000000..5d239dc
--- /dev/null
+++ b/DAZZ_DB/README
@@ -0,0 +1,502 @@
+
+
+
+*** PLEASE GO TO THE DAZZLER BLOG (https://dazzlerblog.wordpress.com) FOR TYPESET ***
+         DOCUMENTATION, EXAMPLES OF USE, AND DESIGN PHILOSOPHY.
+
+
+/************************************************************************************\
+
+UPGRADE & DEVELOPER NOTES ! ! !
+
+  If you have already built a big database and don't want to rebuild it, but do want
+to use a more recent version of the software that entails a change to the data
+structures (currently the updates on Sept 25, 2014 and December 31, 2014), please note
+the routines DBupgrade.Sep.25.2014 and DBupgrade.Dec.31.2014.  These take a DB, say X,
+as an argument, and produce a file .X.ndx which you should then replace .X.idx with.
+To update a very old DB to today's version you will need to run both in sequence.
+
+  Both of the upgrade programs can be made with "make" but are not by default created
+when make is called without an argument.
+
+  For those interested in the details, on September 25, the "beg" and "end" fields went
+from shorts to ints, and on December 31, the "beg" and "end" fields became "fpulse" and
+"rlen", respectively where fpulse = beg and rlen = end-beg.
+
+  Unfortunately, the .dust track formats also changed on Dec.31.2014 and Jan.1.2015.  To
+upgrade said use DUSTupgrade.Jan.1.2015.  This program takes a DB, say X as an argument
+and produces .X.next.anno and .X.next.data which you should then replace .X.dust.* with.
+Of course, it may, if the DB is not too big, be easier and simpler to just rerun DBdust.
+
+  Developers should also note carefully that the calling conventions to Open_DB have
+changed and there are new utility routines Number_Digits and Check_Track.
+
+\************************************************************************************/
+
+
+                The Dazzler Database Library
+
+                            Author:  Gene Myers
+                            First:   July 17, 2013
+                            Current: December 31, 2014
+
+  To facilitate the multiple phases of the dazzler assembler, we organize all the read
+data into what is effectively a "database" of the reads and their meta-information.
+The design goals for this data base are as follows:
+
+(1) The database stores the source Pacbio read information in such a way that it can
+       recreate the original input data, thus permitting a user to remove the
+       (effectively redundant) source files.  This avoids duplicating the same data,
+       once in the source file and once in the database.
+
+(2) The data base can be built up incrementally, that is new sequence data can be added
+       to the data base over time.
+
+(3) The data base flexibly allows one to store any meta-data desired for reads.  This
+       is accomplished with the concept of *tracks* that implementors can add as they
+       need them.
+
+(4) The data is held in a compressed form equivalent to the .dexta and .dexqv files of
+       the data extraction module.  Both the .fasta and .quiva information for each
+       read is held in the data base and can be recreated from it.  The .quiva
+       information can be added separately and later on if desired.
+
+(5) To facilitate job parallel, cluster operation of the phases of our assembler, the
+       data base has a concept of a *current partitioning* in which all the reads that
+       are over a given length and optionally unique to a well, are divided up into
+       *blocks* containing roughly a given number of bases, except possibly the last
+       block which may have a short count.  Often programs con be run on blocks or
+       pairs of blocks and each such job is reasonably well balanced as the blocks are
+       all the same size.  One must be careful about changing the partition during an
+       assembly as doing so can void the structural validity of any interim
+       block-based results.
+
+  A Dazzler DB consists of one named, *visible* file, e.g. FOO.db, and several
+*invisible* secondary files encoding various elements of the DB.  The secondary files
+are "invisible" to the UNIX OS in the sense that they begin with a "." and hence are
+not listed by "ls" unless one specifies the -a flag.  We chose to do this so that when
+a user lists the contents of a directory they just see a single name, e.g. FOO.db, that
+is the one used to refer to the DB in commands.  The files associated with a database
+named, say FOO,  are as follows:
+
+(a) "FOO.db": a text file containing
+                 (i)  the list of input files added to the database so far, and
+                 (ii) how to partition the database into blocks (if the partition
+                       parameters have been set).
+
+(b) ".FOO.idx": a binary "index" of all the meta-data about each read allowing, for
+                  example, one to randomly access a read's sequence (in the store
+                  ".FOO.bps").  It is 28N + 88 bytes in size where N is the number of
+                  reads in the database.
+
+(c) ".FOO.bps": a binary compressed "store" of all the DNA sequences.  It is M/4 bytes
+                  in size where M is the total number of base pairs in the database.
+
+(d) ".FOO.qvs": a binary compressed "store" of the 5 Pacbio quality value streams for
+                  the reads.  Its size is roughly 5/3M bytes depending on the
+                  compression acheived.  This file only exists if .quiva files have
+                  been added to the database.
+
+(e) ".FOO.<track>.anno": a *track* containing customized meta-data for each read.  For
+    ".FOO.<track>.data"  example, the DBdust command annotates low complexity intervals
+                         of reads and records the intervals for each read in two files
+                         .FOO.dust.anno & .FOO.dust.data.  Any kind of information
+                         about a read can be recorded, such as micro-sats, repeat
+                         intervals, corrected sequence, etc.  Specific tracks will be
+                         described as modules that produce them are released.
+
+If one does not like the convention of the secondary files being invisible, then
+un-defining the constant HIDE_FILES in DB.h before compiling the library, creates
+commands that do not place a prefixing "." before secondary file names, e.g. FOO.idx
+instead of .FOO.idx.  One then sees all the files realizing a DB when listing the
+contents of a directory with ls.
+
+  While a Dazzler DB holds a collection of Pacbio reads, a Dazzler map DB or DAM holds
+a collection of contigs from a reference genome assembly.  This special type of DB has
+been introduced in order to facilitate the mapping of reads to an assembly and has
+been given the suffix .dam to distinguish it from an ordinary DB.  It is structurally
+identical to a .db except:
+
+(a) there is no concept of quality values, and hence no .FOO.qvs file.
+
+(b) every .fasta scaffold (a sequence with runs of N's between contigs estimating the
+    length of the gap) is broken into a separate contig sequence in the DB and the
+    header for each scaffold is retained in a new .FOO.hdr file.
+
+(c) the original and first and last pulse fields in the meta-data records held in
+    .FOO.idx, hold instead the contig number and the interval of the contig within
+    its original scaffold sequence.
+
+A map DB can equally well be the argument of many of the commands below that operate
+on normal DBs.  In general, a .dam can be an argument anywhere a .db can, with the
+exception of routines or optioned calls to routines that involve quality values, or
+the special routines fasta2DAM and DAM2fasta that create a DAM and reverse said,
+just like the pair fasta2DB and DB2fasta do for a normal DB.  So in general when we
+refer to a database we are referring to either a DB or a DAM.
+
+  The command DBsplit sets or resets the current partition for a database which is
+determined by 3 parameters: (i) the total number of basepairs to place in each block,
+(ii) the minimum read length of reads to include within a block, and (iii) whether or
+not to only include the longest read from a given well or all reads from a well (NB:
+several reads of the same insert in a given well can be produced by the Pacbio
+instrument).  Note that the length and uniqueness parameters effectively select a
+subset of the reads that contribute to the size of a block.  We call this subset the
+*trimmed* data base.  Some commands operate on the entire database, others on the
+trimmed database, and yet others have an option flag that permits them to operate on
+either at the users discretion.  Therefore, one should note carefully to which version
+of the database a command refers to.  This is especially important for any command that
+identifies reads by their index (ordinal position) in the database.
+
+Once the database has been split into blocks, the commands DBshow, DBstats, and DBdust
+below and commands yet to come, such as the local alignment finder dalign, can take a
+block or blocks as arguments.  On the command line this is indicated by supplying the
+name of the DB followed by a period and then a block number, e.g. FOO.3.db or simply
+FOO.3, refers to the 3'rd block of DB FOO (assuming of course it has a current
+partition and said partition has a 3rd block).  One should note carefully that a block
+is a contiguous range of reads such that once it is trimmed has a given size in base
+pairs (as set by DBsplit).  Thus like an entire database, a block can be either
+untrimmed  or trimmed and one needs to again be careful when giving a read index to
+a command such as DBshow.
+
+All programs add suffixes (e.g. .db) as needed.  The commands of the database library
+are currently as follows:
+
+1. fasta2DB [-v] <path:db> ( -f<file> | -i[<name>] | <input:fasta> ... )
+
+Builds an initial data base, or adds to an existing database, either (a) the list of
+.fasta files following the database name argument, or (b) the list of .fasta files in
+<file> if the -f option is used, or (c) entries piped from the standard input if the
+-i option is used.  If a faux file name, <name>, follows the -i option then all the
+input received is considered to have come from a file by the name of <name>.fasta by
+DB2fasta, otherwise it will be sent to the standard output by DB2fasta.  The SMRT cells
+in a given named input (i.e. all sources other than -i without a name) can only be
+added consecutively to the DB (this is checked by the command). The .fasta headers must
+be in the "Pacbio" format (i.e. the output of the Pacbio tools or our dextract program)
+and the well, pulse interval, and read quality are extracted from the header and kept
+with each read record. If the files are being added to an existing database, and the
+partition settings of the DB have already been set (see DBsplit below), then the
+partitioning of the database is updated to include the new data.  A file may contain
+the data from multiple SMRT cells provided the reads for each SMRT cell are consecutive
+in the file.
+
+2. DB2fasta [-vU] [-w<int(80)>] <path:db>
+
+The set of .fasta files for the given DB are recreated from the DB exactly as they were
+input.  That is, this is a perfect inversion, including the reconstitution of the
+proper .fasta headers.  Because of this property, one can, if desired, delete the
+.fasta source files once they are in the DB as they can always be recreated from it.
+Entries imported from the standard input will be place in the faux file name given on
+import, or to the standard output if no name was given. 
+By default the output sequences are in lower case and 80 chars per line.  The -U option
+specifies upper case should be used, and the characters per line, or line width, can be
+set to any positive value with the -w option.
+
+3. quiva2DB [-vl] <path:db> ( -f<file> | -i | <input:quiva> ... )
+
+Adds .quiva streams to an existing DB "path".  The data comes from (a) the given .quiva
+files on the command line, or (b) those in the file specified by the -f option, or
+(c) the standard input if the -i option is given. The input files must be added in the
+same order as the .fasta files were and have the same root names, e.g. FOO.fasta and
+FOO.quiva. The files can be added incrementally but must be added in the same order as
+their corresponding .fasta files. This is enforced by the program. With the -l option
+set the compression scheme is a bit lossy to get more compression (see the description
+of dexqv in the DEXTRACTOR module here).
+
+4. DB2quiva [-vU] <path:db>
+
+The set of .quiva files within the given DB are recreated from the DB exactly as they
+were input.  That is, this is a perfect inversion, including the reconstitution of the
+proper .quiva headers.  Because of this property, one can, if desired, delete the
+.quiva source files once they are in the DB as they can always be recreated from it.
+Entries imported from the standard input will be place in the faux file name given on
+import, or to the standard output if no name was given. 
+By .fastq convention each QV vector is output as a line without new-lines, and by
+default the Deletion Tag entry is in lower case letters.  The -U option specifies
+upper case letters should be used instead.
+
+5. fasta2DAM [-v] <path:dam> ( -f<file> | -i[<name>] | <input:fasta> ... )
+
+Builds an initial map DB or DAM, or adds to an existing DAM, either (a) the list of
+.fasta files following the database name argument, or (b) the list of .fasta files in
+<file> if the -f option is used, or (c) entries piped from the standard input if the -i
+option is used.  If a faux file name, <name>, follows the -i option then all the input
+received is considered to have come from a file by the name of <name>.fasta by
+DB2fasta, otherwise it will be sent to the standard output by DB2fasta.  Any .fasta
+entry that has a run of N's in it will be split into separate "contig" entries and the
+interval of the contig in the original entry recorded. The header for each .fasta entry
+is saved with the contigs created from it.
+
+6. DAM2fasta [-vU] [-w<int(80)>] <path:dam>
+
+The set of .fasta files for the given map DB or DAM are recreated from the DAM
+exactly as they were input. That is, this is a perfect inversion, including the
+reconstitution of the proper .fasta headers and the concatenation of contigs with
+the proper number of N's between them to recreate scaffolds.
+Entries imported from the standard input will be place in the faux file name given on
+import, or to the standard output if no name was given.  By default the output
+sequences are in lower case and 80 chars per line. The -U option specifies upper case
+should be used, and the characters per line, or line width, can be set to any positive
+value with the -w option.
+
+7. DBsplit [-a] [-x<int>] [-s<int(200)>] <path:db|dam>
+
+Divide the database <path>.db or <path>.dam conceptually into a series of blocks
+referable to on the command line as <path>.1, <path>.2, ...  If the -x option is set
+then all reads less than the given length are ignored, and if the -a option is not
+set then secondary reads from a given well are also ignored.  The remaining reads,
+constituting what we call the trimmed DB, are split amongst the blocks so that each
+block is of size -s * 1Mbp except for the last which necessarily contains a smaller
+residual.  The default value for -s is 200Mbp because blocks of this size can be
+compared by our "overlapper" dalign in roughly 16Gb of memory.  The blocks are very
+space efficient in that their sub-index of the master .idx is computed on the fly
+when loaded, and the .bps and .qvs files (if a .db) of base pairs and quality values,
+respectively, is shared with the master DB.  Any relevant portions of tracks
+associated with the DB are also computed on the fly when loading a database block.
+If the -f option is set, the split is forced regardless of whether or not the DB in
+question has previously bin split, i.e. one is not interactively asked if they wish
+to proceed.
+
+8. DBdust [-b] [-w<int(64)>] [-t<double(2.)>] [-m<int(10)>] <path:db|dam>
+
+Runs the symmetric DUST algorithm over the reads in the untrimmed DB <path>.db or
+<path>.dam producing a track .<path>.dust[.anno,.data] that marks all intervals of low
+complexity sequence, where the scan window is of size -w, the threshold for being a
+low-complexity interval is -t, and only perfect intervals of size greater than -m are
+recorded.  If the -b option is set then the definition of low complexity takes into
+account the frequency of a given base.  The command is incremental if given a DB to
+which new data has been added since it was last run on the DB, then it will extend
+the track to include the new reads.  It is important to set this flag for genomes with
+a strong AT/GC bias, albeit the code is a tad slower.  The dust track, if present,
+is understood and used by DBshow, DBstats, and dalign.
+
+DBdust can also be run over an untriimmed DB block in which case it outputs a track
+encoding where the trace file names contain the block number, e.g. .FOO.3.dust.anno
+and .FOO.3.dust.data, given FOO.3 on the command line.  We call this a *block track*.
+This permits job parallelism in block-sized chunks, and the resulting sequence of
+block tracks can then be merged into a track for the entire untrimmed DB with Catrack.
+
+9. Catrack [-v] <path:db|dam> <track:name>
+
+Find all block tracks of the form .<path>.#.<track>... and merge them into a single
+track, .<path>.<track>..., for the given DB or DAM.   The block track files must all
+encode the same kind of track data (this is checked), and the files must exist for
+block 1, 2, 3, ... up to the last block number.
+
+10. DBshow [-unqUQ] [-w<int(80)>] [-m<track>]+
+                    <path:db|dam> [ <reads:FILE> | <reads:range> ... ]
+
+Displays the requested reads in the database <path>.db or <path>.dam.  By default the
+command applies to the trimmed database, but if -u is set then the entire DB is used.
+If no read arguments are given then every read in the database or database block is
+displayed.  Otherwise the input file or the list of supplied integer ranges give the
+ordinal positions in the actively loaded portion of the db.  In the case of a file, it
+should simply contain a read index, one per line.  In the other case, a read range is
+either a lone integer or the symbol $, in which case the read range consists of just
+that read (the last read in the database if $).  One may also give two positive
+integers separated by a dash to indicate a range of integers, where again a $
+represents the index of the last read in the actively loaded db.  For example,
+1 3-5 $ displays reads 1, 3, 4, 5, and the last read in the active db.  As another
+example, 1-$ displays every read in the active db (the default).
+
+By default a .fasta file of the read sequences is displayed.  If the -q option is
+set, then the QV streams are also displayed in a non-standard modification of the
+fasta format.  If the -n option is set then the DNA sequence is *not* displayed.
+If the -Q option is set then a .quiva file is displayed  and in this case the -n
+and -m options mayt not be set (and the -q and -w options have no effect).
+
+If one or more masks are set with the -m option then the track intervals are also
+displayed in an additional header line and the bases within an interval are displayed
+in the case opposite that used for all the other bases.  By default the output
+sequences are in lower case and 80 chars per line.  The -U option specifies upper
+case should be used, and the characters per line, or line width, can be set to any
+positive value with the -w option.
+
+The .fasta or .quiva files that are output can be converted into a DB by fasta2DB
+and quiva2DB (if the -q and -n options are not set and no -m options are set),
+giving one a simple way to make a DB of a subset of the reads for testing purposes.
+
+12. DBdump [-rhsiqp] [-uU] [-m<track>]+
+                     <path:db|dam> [ <reads:FILE> | <reads:range> ... ]
+
+Like DBshow, DBdump allows one to display a subset of the reads in the DB and select
+which information to show about them including any mask tracks.  The difference is
+that the information is written in a very simple "1-code" ASCII format that makes it
+easy for one to read and parse the information for further use.  -r requests that each
+read number be displayed (useful if only a subset of reads is requested).  -h prints
+the header information which is the source file name, well #, and pulse range.
+-s requests the sequence be output, -i requests that the intrinsic quality values be
+output, -q requests that the 5 quiva sequences be output, -p requests the repeat
+profile be output (if available), and -m<track> requests that mask <track> be output.
+Set -u if you want data from the untrimmed database (the default is trimmed) and
+set -U if you'd like upper-case letter used in the DNA sequence strings.
+
+The format is very simple.  Each requested piece of information occurs on a line.  The
+first character of every line is a "1-code" character that tells you what information
+to expect on the line.  The rest of the line contains information where each item is
+separated by a single blank space.  Strings are output as first an integer giving the
+length of the string, a blank space, and then the string terminated by a new-line.
+Intrinsic quality values are between 0 and 50, inclusive, and a vector of said are
+displayed as an alphabetic string where 'a' is 0, 'b' is '1', ... 'z' is 25, 'A' is
+26, 'B' is 27, ... and 'Y' is 50.  Repeat profiles are also displayed as string where
+'_' denotes 0 repetitions, and then 'a' through 'N' denote the values 1 through 40,
+respectively.  
+
+    R #              - read number
+    H # string       - original file name string (header)
+    L # # #          - location: well, pulse start, pulse end
+    Tx #n (#b #e)^#n - x'th track on command line, #n intervals all on same line
+    S # string       - sequence string
+    I # string       - intrinsic quality vector (as an ASCII string)
+    P # string       - repeat profile vector (as an ASCII string)
+    d # string       - Quiva deletion values (as an ASCII string)
+    c # string       - Quiva deletion character string
+    i # string       - Quiva insertion value string
+    m # string       - Quiva merge value string
+    s # string       - Quiva substitution value string
+    + X #            - Total amount of X (X = H or S or I or P or R or M)
+    @ X #            - Maximum amount of X (X = H or S or I or P)
+
+1-code lines that begin with + or @ are always the first lines in the output.  They
+give size information about what is contained in the output.  That is '+ X #' gives
+the number of reads (X=R), the number of masks (X=M), or the total number of
+characters in all headers (X=H), sequences (X=S), or intrinsic quality vectors (X=I),
+or read profile vector (X=P).  And '@ X #' gives the maximum number of characters
+in any header (X=H), sequence (X=S), intrincic quality vector (X=I), or read profile
+vector (X=P).  The size numbers for the Quiva strings are identical to that for the
+sequence as they are all of the same length for any given entry.
+
+12. DBstats [-nu] [-b<int(1000)] [-m<track>]+ <path:db|dam>
+
+Show overview statistics for all the reads in the trimmed data base <path>.db or
+<path>.dam, including a histogram of read lengths where the bucket size is set
+with the -b option (default 1000).  If the -u option is given then the untrimmed
+database is summarized.  If the -n option is given then the histogran of read lengths
+is not displayed.  Any track such as a "dust" track that gives a series of
+intervals along the read can be specified with the -m option in which case a summary
+and a histogram of the interval lengths is displayed.
+
+13. DBrm <path:db|dam> ...
+
+Delete all the files for the given data bases.  Do not use rm to remove a database, as
+there are at least two and often several secondary files for each DB including track
+files, and all of these are removed by DBrm.
+
+14.  simulator <genome:dam> [-CU] [-m<int(10000)>] [-s<int(2000)>] [-e<double(.15)]
+                                  [-c<double(50.)>] [-f<double(.5)>] [-x<int(4000)>]
+                                  [-w<int(80)>] [-r<int>] [-M<file>]
+
+In addition to the DB commands we include here, somewhat tangentially, a simple
+simulator that generates synthetic reads over a given genome reference contained in a
+supplied .dam DB.  The simulator first reconstitutes the scaffolds of the reference
+genome and fills in their gaps (a run of N's in .fasta format indicating the estimate
+gap length) with a random sequence that follows the base distribution of the contigs.
+It will then sample reads from these scaffold sequences.
+
+The simulator generates sample reads of mean length -m from a log-normal length
+distribution with standard deviation -s, but ignores reads of length less than -x. It
+collects enough reads to cover the genome -c times and Introduces -e fraction errors
+into each read where the ratio of insertions, deletions, and substitutions are set by
+defined constants INS_RATE (default 73%) and DEL_RATE (default 20%) within generate.c.
+One can control the rate at which reads are picked from the forward and reverse
+strands with the -f option. The -r option seeds the random number generator for the
+generation process so that one can reproducibly generate the same dataset. If this
+parameter is missing, then the job id of the invocation seeds the random number
+generator effectively guaranteeing a different sampling with each invocation.
+
+The output is sent to the standard output (i.e. it is a UNIX pipe). The output is in
+Pacbio .fasta format suitable as input to fasta2DB. Uppercase letters are used if the
+-U option is given, and the width of each line can be controlled with the -w option.
+
+Finally, the -M option requests that the scaffold and coordinates within said scaffold
+from which each read has been sampled are written to the indicated file, one line per
+read, ASCII encoded. This "map" file essential tells one where every read belongs in
+an assembly and is very useful for debugging and testing purposes. If the map line for
+a read is say 's b e' then if b < e the read is a perturbed copy of s[b,e] in the
+forward direction, and a perturbed copy s[e,b] in the reverse direction otherwise.
+
+15. rangen <genlen:double> [-U] [-b<double(.5)>] [-w<int(80)>] [-r<int>]
+
+Generate a random DNA sequence of length genlen*1Mbp that has an AT-bias of -b.
+Output the sequence to the standard output in .fasta format.  Use uppercase letters if
+-U is set and -w base pairs per line (default 80).  The result can then be converted
+into a .dam DB and given to the simulator to create a read database over a random
+synthetic sequence.  The -r option seeds the random number generator for the
+generation process so that one can reproducibly generate the same sequence. If this
+parameter is missing, then the job id of the invocation seeds the random number
+generator effectively guaranteeing a different sequence with each invocation.
+
+Example:
+
+     A small complete example of most of the commands above. 
+
+> rangen 1.0 >R.fasta           //  Generate a randome 1Mbp sequence R.fasta
+> fasta2DAM R R.fasta           //  Load it into a .dam DB R.dam
+> simulator R -c20. >G.fasta    //  Sample a 20x data sets of the random geneome R
+> fasta2DB G G.fasta            //  Create a compressed data base of the reads, G.db
+> rm G.fasta                    //  Redundant, recreate any time with "DB2fasta G"
+> DBsplit -s11 G                //  Split G into 2 parts of size ~ 11MB each
+> DBdust G.1                    //  Produce a "dust" track on each part
+> DBdust G.2
+> Catrack G dust                //  Create one track for all of the DB
+> rm .G.*.dust.*                //  Clean up the sub-tracks
+> DBstats -mdust G              //  Take a look at the statistics for the database
+
+Statistics for all reads in the data set
+
+          1,836 reads        out of           1,836  (100.0%)
+     20,007,090 base pairs   out of      20,007,090  (100.0%)
+
+         10,897 average read length
+          2,192 standard deviation
+
+  Base composition: 0.250(A) 0.250(C) 0.250(G) 0.250(T)
+
+  Distribution of Read Lengths (Bin size = 1,000)
+
+        Bin:      Count  % Reads  % Bases     Average
+     22,000:          1      0.1      0.1       22654
+     21,000:          0      0.1      0.1       22654
+     20,000:          1      0.1      0.2       21355
+     19,000:          0      0.1      0.2       21355
+     18,000:          4      0.3      0.6       19489
+     17,000:          8      0.8      1.3       18374
+     16,000:         19      1.8      2.8       17231
+     15,000:         43      4.1      6.2       16253
+     14,000:         81      8.6     12.0       15341
+     13,000:        146     16.5     21.9       14428
+     12,000:        200     27.4     34.4       13664
+     11,000:        315     44.6     52.4       12824
+     10,000:        357     64.0     71.2       12126
+      9,000:        306     80.7     85.8       11586
+      8,000:        211     92.2     94.8       11208
+      7,000:         95     97.3     98.4       11017
+      6,000:         43     99.7     99.8       10914
+      5,000:          6    100.0    100.0       10897
+
+
+Statistics for dust-track
+
+  There are 158 intervals totaling 1,820 bases (0.0% of all data)
+
+  Distribution of dust intervals (Bin size = 1,000)
+
+        Bin:      Count  % Intervals  % Bases     Average
+          0:        158        100.0    100.0          11
+
+> ls -al
+total 66518744
+drwxr-xr-x+ 177 myersg  staff        6018 Mar  2 13:28 .
+drwxr-xr-x+  20 myersg  staff         680 Feb 26 19:52 ..
+-rw-r--r--+   1 myersg  staff     5002464 Mar  2 13:28 .G.bps
+-rw-r--r--+   1 myersg  staff       14704 Mar  2 13:28 .G.dust.anno
+-rw-r--r--+   1 myersg  staff        1264 Mar  2 13:28 .G.dust.data
+-rw-r--r--+   1 myersg  staff       73552 Mar  2 13:28 .G.idx
+-rw-r--r--+   1 myersg  staff         162 Mar  2 13:28 G.db
+> cat G.db
+files =         1
+       1836 G Sim
+blocks =         2
+size =        11 cutoff =         0 all = 0
+         0         0
+      1011      1011
+      1836      1836
diff --git a/DAZZ_DB/fasta2DAM.c b/DAZZ_DB/fasta2DAM.c
new file mode 100644
index 0000000..15e074a
--- /dev/null
+++ b/DAZZ_DB/fasta2DAM.c
@@ -0,0 +1,687 @@
+/*******************************************************************************************
+ *
+ *  Add .fasta files to a DB:
+ *     Adds the given fasta files in the given order to <path>.db.  If the db does not exist
+ *     then it is created.  All .fasta files added to a given data base must have the same
+ *     header format and follow Pacbio's convention.  A file cannot be added twice and this
+ *     is enforced.  The command either builds or appends to the .<path>.idx and .<path>.bps
+ *     files, where the index file (.idx) contains information about each read and their offsets
+ *     in the base-pair file (.bps) that holds the sequences where each base is compessed
+ *     into 2-bits.  The two files are hidden by virtue of their names beginning with a '.'.
+ *     <path>.db is effectively a stub file with given name that contains an ASCII listing
+ *     of the files added to the DB and possibly the block partitioning for the DB if DBsplit
+ *     has been called upon it.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  May 2013
+ *  Modify:  DB upgrade: now *add to* or create a DB depending on whether it exists, read
+ *             multiple .fasta files (no longer a stdin pipe).
+ *  Date  :  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-v] <path:dam> ( -f<file> | -i[<name>] | <input:fasta> ... )";
+
+static char number[128] =
+    { 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 4, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 4, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+    };
+
+typedef struct
+  { int    argc;
+    char **argv;
+    FILE  *input;
+    int    count;
+    char  *name;
+  } File_Iterator;
+
+File_Iterator *init_file_iterator(int argc, char **argv, FILE *input, int first)
+{ File_Iterator *it;
+
+  it = Malloc(sizeof(File_Iterator),"Allocating file iterator");
+  if (it == NULL)
+    return (NULL);
+  it->argc  = argc;
+  it->argv  = argv;
+  it->input = input;
+  if (input == NULL)
+    it->count = first;
+  else
+    { it->count = 1;
+      rewind(input);
+    }
+  return (it);
+}
+
+int next_file(File_Iterator *it)
+{ static char nbuffer[MAX_NAME+8];
+
+  if (it->input == NULL)
+    { if (it->count >= it->argc)
+        return (0);
+      it->name = it->argv[it->count++];
+    }
+  else
+    { char *eol;
+
+      if (fgets(nbuffer,MAX_NAME+8,it->input) == NULL)
+        { if (feof(it->input))
+            return (0);
+          fprintf(stderr,"%s: IO error reading line %d of -f file of names\n",Prog_Name,it->count);
+          it->name = NULL;
+          return (1);
+        }
+      if ((eol = index(nbuffer,'\n')) == NULL)
+        { fprintf(stderr,"%s: Line %d in file list is longer than %d chars!\n",
+                         Prog_Name,it->count,MAX_NAME+7);
+          it->name = NULL;
+          return (1);
+        }
+      *eol = '\0';
+      it->count += 1;
+      it->name  = nbuffer;
+    }
+  return (1);
+}
+
+
+int main(int argc, char *argv[])
+{ FILE  *istub, *ostub;
+  char  *dbname;
+  char  *root, *pwd;
+
+  FILE  *bases, *indx, *hdrs;
+  int64  boff, ioff, hoff, noff;
+
+  int    ifiles, ofiles;
+  char **flist;
+
+  HITS_DB db;
+  int     ureads;
+  int64   offset, hdrset;
+
+  char   *PIPE;
+  FILE   *IFILE;
+  int     VERBOSE;
+
+  //   Process command line
+
+  { int   i, j, k;
+    int   flags[128];
+
+    ARG_INIT("fasta2DAM")
+
+    IFILE = NULL;
+    PIPE  = NULL;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("v")
+            break;
+          case 'f':
+            IFILE = fopen(argv[i]+2,"r");
+            if (IFILE == NULL)
+              { fprintf(stderr,"%s: Cannot open file of inputs '%s'\n",Prog_Name,argv[i]+2);
+                exit (1);
+              }
+            break;
+          case 'i':
+            PIPE = argv[i]+2;
+            if (PIPE[0] != '\0')
+              { FILE *temp;
+
+                temp = fopen(PIPE,"w");
+                if (temp == NULL)
+                  { fprintf(stderr,"%s: Cannot create -i name '%s'\n",Prog_Name,argv[i]+2);
+                    exit (1);
+                  }
+                fclose(temp);
+                unlink(PIPE);
+              }
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (IFILE != NULL && PIPE != NULL)
+      { fprintf(stderr,"%s: Cannot use both -f and -i together\n",Prog_Name);
+        exit (1);
+      }
+
+    if ( (IFILE == NULL && PIPE == NULL && argc <= 2) ||
+        ((IFILE != NULL || PIPE != NULL) && argc != 2))
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Try to open DAM file, if present then adding to DAM, otherwise creating new DAM.  Set up
+  //  variables as follows:
+  //    dbname = full name of map index = <pwd>/<root>.dam
+  //    istub  = open db file (if adding) or NULL (if creating)
+  //    ostub  = new image of db file (will overwrite old image at end)
+  //    bases  = .bps file positioned for appending
+  //    indx   = .idx file positioned for appending
+  //    hdrs   = .hdr file positioned for appending
+  //    ureads = # of reads currently in db
+  //    offset = offset in .bps at which to place next sequence
+  //    hdrset = offset in .hdr at which to place next header
+  //    ioff   = offset in .idx file to truncate to if command fails
+  //    boff   = offset in .bps file to truncate to if command fails
+  //    hoff   = offset in .hdr file to truncate to if command fails
+  //    ifiles = # of .fasta files to add
+  //    ofiles = # of .fasta files added so far
+  //    flist  = [0..ifiles+ofiles] list of file names (root only) added to dam so far
+
+  { int i;
+
+    root   = Root(argv[1],".dam");
+    pwd    = PathTo(argv[1]);
+    dbname = Strdup(Catenate(pwd,"/",root,".dam"),"Allocating map index name");
+    if (dbname == NULL)
+      exit (1);
+
+    if (PIPE != NULL)
+      ifiles = 1;
+    else if (IFILE == NULL)
+      ifiles = argc-2;
+    else
+      { File_Iterator *ng;
+
+        ifiles = 0;
+        ng = init_file_iterator(argc,argv,IFILE,2);
+        if (ng == NULL)
+          exit (1);
+        while (next_file(ng))
+          { if (ng->name == NULL)
+              exit (1);
+            ifiles += 1;
+          }
+        free(ng);
+      }
+
+    bases = NULL;
+    indx  = NULL;
+    hdrs  = NULL;
+    ostub = NULL;
+    ioff  = 0;
+    boff  = 0;
+    hoff  = 0;
+
+    istub = fopen(dbname,"r");
+    if (istub == NULL)
+      { ofiles = 0;
+
+        bases = Fopen(Catenate(pwd,PATHSEP,root,".bps"),"w+");
+        indx  = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"w+");
+        hdrs  = Fopen(Catenate(pwd,PATHSEP,root,".hdr"),"w+");
+        if (bases == NULL || indx == NULL || hdrs == NULL)
+          goto error;
+
+        fwrite(&db,sizeof(HITS_DB),1,indx);
+
+        ureads  = 0;
+        offset  = 0;
+        hdrset  = 0;
+        boff    = 0;
+        ioff    = 0;
+        hoff    = 0;
+      }
+    else
+      { if (fscanf(istub,DB_NFILE,&ofiles) != 1)
+          { fprintf(stderr,"%s: %s.dam is corrupted, read failed 1\n",Prog_Name,root);
+            goto error;
+          }
+
+        bases = Fopen(Catenate(pwd,PATHSEP,root,".bps"),"r+");
+        indx  = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r+");
+        hdrs  = Fopen(Catenate(pwd,PATHSEP,root,".hdr"),"r+");
+        if (bases == NULL || indx == NULL || hdrs == NULL)
+          goto error;
+
+        if (fread(&db,sizeof(HITS_DB),1,indx) != 1)
+          { fprintf(stderr,"%s: %s.idx is corrupted, read failed\n",Prog_Name,root);
+            goto error;
+          }
+        fseeko(bases,0,SEEK_END);
+        fseeko(indx, 0,SEEK_END);
+        fseeko(hdrs, 0,SEEK_END);
+
+        ureads = db.ureads;
+        offset = ftello(bases);
+        hdrset = ftello(hdrs);
+        boff   = offset;
+        ioff   = ftello(indx);
+        hoff   = hdrset;
+      }
+
+    flist  = (char **) Malloc(sizeof(char *)*(ofiles+ifiles),"Allocating file list");
+    ostub  = Fopen(Catenate(pwd,"/",root,".dbx"),"w+");
+    if (ostub == NULL || flist == NULL)
+      goto error;
+
+    fprintf(ostub,DB_NFILE,ofiles+ifiles);
+    noff = 0;
+    for (i = 0; i < ofiles; i++)
+      { int  last;
+        char prolog[MAX_NAME], fname[MAX_NAME];
+
+        if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+          { fprintf(stderr,"%s: %s.dam is corrupted, read failed 5(%d)\n",Prog_Name,root,i);
+            goto error;
+          }
+        if ((flist[i] = Strdup(fname,"Adding to file list")) == NULL)
+          goto error;
+        noff = ftello(ostub);
+        fprintf(ostub,DB_FDATA,last,fname,prolog);
+      }
+  }
+
+  { int            maxlen;
+    int64          totlen, count[4];
+    int            rmax;
+    HITS_READ      prec;
+    char          *read;
+    int            append;
+    int            c;
+    File_Iterator *ng = NULL;
+
+    //  Buffer for accumulating .fasta sequence over multiple lines
+
+    rmax  = MAX_NAME + 60000;
+    read  = (char *) Malloc(rmax+1,"Allocating line buffer");
+    if (read == NULL)
+      goto error;
+
+    totlen = 0;              //  total # of bases in new .fasta files
+    maxlen = 0;              //  longest read in new .fasta files
+    for (c = 0; c < 4; c++)  //  count of acgt in new .fasta files
+      count[c] = 0;
+
+    //  For each .fasta file do:
+
+    if (PIPE == NULL)
+      { ng = init_file_iterator(argc,argv,IFILE,2);
+        if (ng == NULL)
+          goto error;
+      }
+
+    while (PIPE != NULL || next_file(ng))
+      { FILE *input;
+        char *path, *core;
+        int   nline, eof, rlen;
+
+        //  Open it: <path>/<core>.fasta if file, stdin otherwise with core = PIPE or "stdout"
+
+        if (PIPE == NULL)
+
+          { if (ng->name == NULL) goto error;
+
+            path  = PathTo(ng->name);
+            core  = Root(ng->name,".fasta");
+            if ((input = Fopen(Catenate(path,"/",core,".fasta"),"r")) == NULL)
+              goto error;
+            free(path);
+          }
+
+        else
+
+          { if (PIPE[0] == '\0')
+              core  = Strdup("stdout","Allocating file name");
+            else
+              core  = Strdup(PIPE,"Allocating file name");
+            if (core == NULL)
+              goto error;
+            input = stdin;
+          }
+
+        //  Check that core is not too long and name is unique or last source if PIPE'd
+        //    If PIPE'd and last source, then overwrite last file line of new stub file.
+
+        if (strlen(core) >= MAX_NAME)
+          { fprintf(stderr,"%s: File name over %d chars: '%.200s'\n",
+                           Prog_Name,MAX_NAME,core);
+            goto error;
+          }
+
+        { int j;
+
+          append = 0;
+          if (PIPE == NULL || (strcmp(core,"stdout") != 0 &&
+                 (ofiles == 0 || strcmp(core,flist[ofiles-1]) != 0)))
+            { for (j = 0; j < ofiles; j++)
+                if (strcmp(core,flist[j]) == 0)
+                  { fprintf(stderr,"%s: File %s.fasta is already in database %s.dam\n",
+                                   Prog_Name,core,Root(argv[1],".dam"));
+                    goto error;
+                  }
+            }
+	  else if (ofiles > 0 && strcmp(core,flist[ofiles-1]) == 0)
+            { fseeko(ostub,noff,SEEK_SET);
+              append = 1;
+            }
+        }
+
+        //  Get the header of the first line.  If the file is empty skip.
+
+        rlen  = 0;
+        nline = 1;
+        eof   = (fgets(read,MAX_NAME,input) == NULL);
+        if (eof || strlen(read) < 1)
+          { fprintf(stderr,"Skipping '%s', file is empty!\n",core);
+            fclose(input);
+            free(core);
+            continue;
+          }
+
+        //   Add the file name to flist
+
+        if (VERBOSE)
+          { if (PIPE != NULL && PIPE[0] == '\0')
+              fprintf(stderr,"Adding scaffolds from stdio ...\n");
+            else
+              fprintf(stderr,"Adding '%s.fasta' ...\n",core);
+            fflush(stderr);
+          }
+    
+        if (!append)
+          flist[ofiles++] = core;
+
+        // Check that the first line is a header line
+
+        if (read[strlen(read)-1] != '\n')
+          { fprintf(stderr,"File %s.fasta, Line 1: Fasta line is too long (> %d chars)\n",
+                           core,MAX_NAME-2);
+            goto error;
+          }
+        if (!eof && read[0] != '>')
+          { fprintf(stderr,"File %s.fasta, Line 1: First header in fasta file is missing\n",core);
+            goto error;
+          }
+
+        //  Read in all the sequences until end-of-file
+
+        { int i, x, n;
+
+          while (!eof)
+            { int hlen;
+
+              read[rlen] = '>';
+              hlen = strlen(read+rlen);
+              fwrite(read+rlen,1,hlen,hdrs);
+
+              rlen  = 0;
+              while (1)
+                { eof = (fgets(read+rlen,MAX_NAME,input) == NULL);
+                  nline += 1;
+                  x = strlen(read+rlen)-1;
+                  if (read[rlen+x] != '\n')
+                    { fprintf(stderr,"File %s.fasta, Line %d:",core,nline);
+                      fprintf(stderr," Fasta line is too long (> %d chars)\n",MAX_NAME-2);
+                      goto error;
+                    }
+                  if (eof || read[rlen] == '>')
+                    break;
+                  rlen += x;
+                  if (rlen + MAX_NAME > rmax)
+                    { rmax = ((int) (1.2 * rmax)) + 1000 + MAX_NAME;
+                      read = (char *) realloc(read,rmax+1);
+                      if (read == NULL)
+                        { fprintf(stderr,"File %s.fasta, Line %d:",core,nline);
+                          fprintf(stderr," Out of memory (Allocating line buffer)\n");
+                          goto error;
+                        }
+                    }
+                }
+              read[rlen] = '\0';
+
+              n = 0;
+              i = -1;
+              while (i < rlen)
+                { int pbeg, plen, clen;
+
+                  while (i < rlen)
+                    if (number[(int) read[++i]] < 4)
+                      break;
+
+                  if (i >= rlen) break;
+
+                  pbeg = i;
+                  prec.fpulse = pbeg;
+                  prec.origin = n++;
+                  prec.boff   = offset;
+                  prec.coff   = hdrset;
+                  prec.flags  = DB_BEST;
+                  while (i < rlen)
+                    { x = number[(int) read[i]];
+                      if (x >= 4) break;
+                      count[x] += 1;
+                      read[i++] = (char) x;
+                    }
+                  prec.rlen = plen = i-pbeg;
+                  ureads += 1;
+                  totlen += plen;
+                  if (plen > maxlen)
+                    maxlen = plen;
+
+                  Compress_Read(plen,read+pbeg);
+                  clen = COMPRESSED_LEN(plen);
+                  fwrite(read+pbeg,1,clen,bases);
+                  offset += clen;
+
+                  fwrite(&prec,sizeof(HITS_READ),1,indx);
+                }
+              hdrset += hlen;
+            }
+        }
+
+        fprintf(ostub,DB_FDATA,ureads,core,core);
+
+        if (PIPE == NULL)
+          fclose(input);
+        else
+          break;
+      }
+
+    //  Update relevant fields in db record
+
+    db.ureads = ureads;
+    if (istub == NULL)
+      { for (c = 0; c < 4; c++)
+          db.freq[c] = (float) ((1.*count[c])/totlen);
+        db.totlen = totlen;
+        db.maxlen = maxlen;
+        db.cutoff = -1;
+      }
+    else
+      { for (c = 0; c < 4; c++)
+          db.freq[c] = (float) ((db.freq[c]*db.totlen + (1.*count[c]))/(db.totlen + totlen));
+        db.totlen += totlen;
+        if (maxlen > db.maxlen)
+          db.maxlen = maxlen;
+      }
+  }
+
+  //  If db has been previously partitioned then calculate additional partition points and
+  //    write to new db file image
+
+  if (db.cutoff >= 0)
+    { int64      totlen, dbpos, size;
+      int        nblock, ireads, tfirst, rlen;
+      int        ufirst, cutoff, allflag;
+      HITS_READ  record;
+      int        i;
+
+      if (VERBOSE)
+        { fprintf(stderr,"Updating block partition ...\n");
+          fflush(stderr);
+        }
+
+      //  Read the block portion of the existing db image getting the indices of the first
+      //    read in the last block of the exisiting db as well as the partition parameters.
+      //    Copy the old image block information to the new block information (except for
+      //    the indices of the last partial block)
+
+      if (fscanf(istub,DB_NBLOCK,&nblock) != 1)
+        { fprintf(stderr,"%s: %s.dam is corrupted, read failed 2\n",Prog_Name,root);
+          goto error;
+        }
+      dbpos = ftello(ostub);
+      fprintf(ostub,DB_NBLOCK,0);
+      if (fscanf(istub,DB_PARAMS,&size,&cutoff,&allflag) != 3)
+        { fprintf(stderr,"%s: %s.dam is corrupted, read failed 3\n",Prog_Name,root);
+          goto error;
+        }
+      fprintf(ostub,DB_PARAMS,size,cutoff,allflag);
+      if (allflag)
+        allflag = 0;
+      else
+        allflag = DB_BEST;
+
+      nblock -= 1;
+      for (i = 0; i <= nblock; i++)
+        { if (fscanf(istub,DB_BDATA,&ufirst,&tfirst) != 2)
+            { fprintf(stderr,"%s: %s.dam is corrupted, read failed 4\n",Prog_Name,root);
+              goto error;
+            }
+          fprintf(ostub,DB_BDATA,ufirst,tfirst);
+        }
+
+      //  Seek the first record of the last block of the existing db in .idx, and then
+      //    compute and record partition indices for the rest of the db from this point
+      //    forward.
+
+      fseeko(indx,sizeof(HITS_DB)+sizeof(HITS_READ)*ufirst,SEEK_SET);
+      totlen = 0;
+      ireads = 0;
+      for (i = ufirst; i < ureads; i++)
+        { if (fread(&record,sizeof(HITS_READ),1,indx) != 1)
+            { fprintf(stderr,"%s: %s.idx is corrupted, read failed\n",Prog_Name,root);
+              goto error;
+            }
+          rlen = record.rlen;
+          if (rlen >= cutoff)
+            { ireads += 1;
+              tfirst += 1;
+              totlen += rlen;
+              if (totlen >= size)
+                { fprintf(ostub," %9d %9d\n",i+1,tfirst);
+                  totlen = 0;
+                  ireads = 0;
+                  nblock += 1;
+                }
+            }
+        }
+
+      if (ireads > 0)
+        { fprintf(ostub,DB_BDATA,ureads,tfirst);
+          nblock += 1;
+        }
+
+      db.treads = tfirst;
+
+      fseeko(ostub,dbpos,SEEK_SET);
+
+      fprintf(ostub,DB_NBLOCK,nblock);    //  Rewind and record the new number of blocks
+    }
+  else
+    db.treads = ureads;
+
+  rewind(ostub);
+  fprintf(ostub,DB_NFILE,ofiles);
+
+  rewind(indx);
+  fwrite(&db,sizeof(HITS_DB),1,indx);   //  Write the finalized db record into .idx
+
+  if (istub != NULL)
+    fclose(istub);
+  fclose(ostub);
+  fclose(indx);
+  fclose(bases);
+  fclose(hdrs);
+
+  rename(Catenate(pwd,"/",root,".dbx"),dbname);   //  New image replaces old image
+
+  exit (0);
+
+  //  Error exit:  Either truncate or remove the .idx, .bps, and .hdr files as appropriate.
+  //               Remove the new image file <pwd>/<root>.dbx
+
+error:
+  if (ioff != 0)
+    { fseeko(indx,0,SEEK_SET);
+      if (ftruncate(fileno(indx),ioff) < 0)
+        fprintf(stderr,"%s: Fatal: could not restore %s.idx after error, truncate failed\n",
+                       Prog_Name,root);
+    }
+  if (boff != 0)
+    { fseeko(bases,0,SEEK_SET);
+      if (ftruncate(fileno(bases),boff) < 0)
+        fprintf(stderr,"%s: Fatal: could not restore %s.bps after error, truncate failed\n",
+                       Prog_Name,root);
+    }
+  if (hoff != 0)
+    { fseeko(hdrs,0,SEEK_SET);
+      if (ftruncate(fileno(hdrs),hoff) < 0)
+        fprintf(stderr,"%s: Fatal: could not restore %s.hdr after error, truncate failed\n",
+                       Prog_Name,root);
+    }
+  if (indx != NULL)
+    { fclose(indx);
+      if (ioff == 0)
+        unlink(Catenate(pwd,PATHSEP,root,".idx"));
+    }
+  if (bases != NULL)
+    { fclose(bases);
+      if (boff == 0)
+        unlink(Catenate(pwd,PATHSEP,root,".bps"));
+    }
+  if (hdrs != NULL)
+    { fclose(hdrs);
+      if (hoff == 0)
+        unlink(Catenate(pwd,PATHSEP,root,".hdr"));
+    }
+  if (ostub != NULL)
+    { fclose(ostub);
+      unlink(Catenate(pwd,"/",root,".dbx"));
+    }
+  if (istub != NULL)
+    fclose(istub);
+
+  exit (1);
+}
diff --git a/DAZZ_DB/fasta2DB.c b/DAZZ_DB/fasta2DB.c
new file mode 100644
index 0000000..b080fb5
--- /dev/null
+++ b/DAZZ_DB/fasta2DB.c
@@ -0,0 +1,728 @@
+/*******************************************************************************************
+ *
+ *  Add .fasta files to a DB:
+ *     Adds the given fasta files in the given order to <path>.db.  If the db does not exist
+ *     then it is created.  All .fasta files added to a given data base must have the same
+ *     header format and follow Pacbio's convention.  A file cannot be added twice and this
+ *     is enforced.  The command either builds or appends to the .<path>.idx and .<path>.bps
+ *     files, where the index file (.idx) contains information about each read and their offsets
+ *     in the base-pair file (.bps) that holds the sequences where each base is compessed
+ *     into 2-bits.  The two files are hidden by virtue of their names beginning with a '.'.
+ *     <path>.db is effectively a stub file with given name that contains an ASCII listing
+ *     of the files added to the DB and possibly the block partitioning for the DB if DBsplit
+ *     has been called upon it.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  May 2013
+ *  Modify:  DB upgrade: now *add to* or create a DB depending on whether it exists, read
+ *             multiple .fasta files (no longer a stdin pipe).
+ *  Date  :  April 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "DB.h"
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-v] <path:string> ( -f<file> | -i[<name>] | <input:fasta> ... )";
+
+static char number[128] =
+    { 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 1, 0, 0, 0, 2,
+      0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 3, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0,
+    };
+
+typedef struct
+  { int    argc;
+    char **argv;
+    FILE  *input;
+    int    count;
+    char  *name;
+  } File_Iterator;
+
+File_Iterator *init_file_iterator(int argc, char **argv, FILE *input, int first)
+{ File_Iterator *it;
+
+  it = Malloc(sizeof(File_Iterator),"Allocating file iterator");
+  if (it == NULL)
+    return (NULL);
+  it->argc  = argc;
+  it->argv  = argv;
+  it->input = input;
+  if (input == NULL)
+    it->count = first;
+  else
+    { it->count = 1;
+      rewind(input);
+    }
+  return (it);
+}
+
+int next_file(File_Iterator *it)
+{ static char nbuffer[MAX_NAME+8];
+
+  if (it->input == NULL)
+    { if (it->count >= it->argc)
+        return (0);
+      it->name = it->argv[it->count++];
+    }
+  else
+    { char *eol;
+
+      if (fgets(nbuffer,MAX_NAME+8,it->input) == NULL)
+        { if (feof(it->input))
+            return (0);
+          fprintf(stderr,"%s: IO error reading line %d of -f file of names\n",Prog_Name,it->count);
+          it->name = NULL;
+          return (1);
+        }
+      if ((eol = index(nbuffer,'\n')) == NULL)
+        { fprintf(stderr,"%s: Line %d in file list is longer than %d chars!\n",
+                         Prog_Name,it->count,MAX_NAME+7);
+          it->name = NULL;
+          return (1);
+        }
+      *eol = '\0';
+      it->count += 1;
+      it->name  = nbuffer;
+    }
+  return (1);
+}
+
+
+int main(int argc, char *argv[])
+{ FILE  *istub, *ostub;
+  char  *dbname;
+  char  *root, *pwd;
+
+  FILE  *bases, *indx;
+  int64  boff, ioff;
+
+  int    ifiles, ofiles, ocells;
+  char **flist;
+
+  HITS_DB db;
+  int     ureads;
+  int64   offset;
+
+  char   *PIPE;
+  FILE   *IFILE;
+  int     VERBOSE;
+
+  //   Process command line
+
+  { int   i, j, k;
+    int   flags[128];
+
+    ARG_INIT("fasta2DB")
+
+    IFILE = NULL;
+    PIPE  = NULL;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("v")
+            break;
+          case 'f':
+            IFILE = fopen(argv[i]+2,"r");
+            if (IFILE == NULL)
+              { fprintf(stderr,"%s: Cannot open file of inputs '%s'\n",Prog_Name,argv[i]+2);
+                exit (1);
+              }
+            break;
+          case 'i':
+            PIPE = argv[i]+2;
+            if (PIPE[0] != '\0')
+              { FILE *temp;
+
+                temp = fopen(PIPE,"w");
+                if (temp == NULL)
+                  { fprintf(stderr,"%s: Cannot create -i name '%s'\n",Prog_Name,argv[i]+2);
+                    exit (1);
+                  }
+                fclose(temp);
+                unlink(PIPE);
+              }
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+
+    if (IFILE != NULL && PIPE != NULL)
+      { fprintf(stderr,"%s: Cannot use both -f and -i together\n",Prog_Name);
+        exit (1);
+      }
+
+    if ( (IFILE == NULL && PIPE == NULL && argc <= 2) || 
+        ((IFILE != NULL || PIPE != NULL) && argc != 2))
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Try to open DB file, if present then adding to DB, otherwise creating new DB.  Set up
+  //  variables as follows:
+  //    dbname = full name of db = <pwd>/<root>.db
+  //    istub  = open db file (if adding) or NULL (if creating)
+  //    ostub  = new image of db file (will overwrite old image at end)
+  //    bases  = .bps file positioned for appending
+  //    indx   = .idx file positioned for appending
+  //    ureads = # of reads currently in db
+  //    offset = offset in .bps at which to place next sequence
+  //    ioff   = offset in .idx file to truncate to if command fails
+  //    boff   = offset in .bps file to truncate to if command fails
+  //    ifiles = # of .fasta files to add
+  //    ofiles = # of .fasta files added so far
+  //    ocells = # of SMRT cells already in db
+  //    flist  = [0..ifiles+ocells] list of file names (root only) added to db so far
+
+  { int i;
+
+    root   = Root(argv[1],".db");
+    pwd    = PathTo(argv[1]);
+    dbname = Strdup(Catenate(pwd,"/",root,".db"),"Allocating db name");
+    if (dbname == NULL)
+      exit (1);
+
+    if (PIPE != NULL)
+      ifiles = 1;
+    else if (IFILE == NULL)
+      ifiles = argc-2;
+    else
+      { File_Iterator *ng;
+
+        ifiles = 0;
+        ng = init_file_iterator(argc,argv,IFILE,2);
+        if (ng == NULL)
+          exit (1);
+        while (next_file(ng))
+          { if (ng->name == NULL)
+              exit (1);
+            ifiles += 1;
+          }
+        free(ng);
+      }
+
+    bases = NULL;
+    indx  = NULL;
+    ostub = NULL;
+    ioff  = 0;
+    boff  = 0;
+
+    istub = fopen(dbname,"r");
+    if (istub == NULL)
+      { ocells = 0;
+
+        bases = Fopen(Catenate(pwd,PATHSEP,root,".bps"),"w+");
+        indx  = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"w+");
+        if (bases == NULL || indx == NULL)
+          goto error;
+
+        fwrite(&db,sizeof(HITS_DB),1,indx);
+
+        ureads  = 0;
+        offset  = 0;
+        boff    = 0;
+        ioff    = 0;
+      }
+    else
+      { if (fscanf(istub,DB_NFILE,&ocells) != 1)
+          { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",Prog_Name,root);
+            goto error;
+          }
+
+        bases = Fopen(Catenate(pwd,PATHSEP,root,".bps"),"r+");
+        indx  = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r+");
+        if (bases == NULL || indx == NULL)
+          goto error;
+
+        if (fread(&db,sizeof(HITS_DB),1,indx) != 1)
+          { fprintf(stderr,"%s: %s.idx is corrupted, read failed\n",Prog_Name,root);
+            goto error;
+          }
+        fseeko(bases,0,SEEK_END);
+        fseeko(indx, 0,SEEK_END);
+
+        ureads = db.ureads;
+        offset = ftello(bases);
+        boff   = offset;
+        ioff   = ftello(indx);
+      }
+
+    flist  = (char **) Malloc(sizeof(char *)*(ocells+ifiles),"Allocating file list");
+    ostub  = Fopen(Catenate(pwd,"/",root,".dbx"),"w+");
+    if (ostub == NULL || flist == NULL)
+      goto error;
+
+    fprintf(ostub,DB_NFILE,ocells+ifiles);   //  Will write again with correct value at end
+    ofiles = 0;
+    for (i = 0; i < ocells; i++)
+      { int  last;
+        char prolog[MAX_NAME], fname[MAX_NAME];
+
+        if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+          { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",Prog_Name,root);
+            goto error;
+          }
+        if (ofiles == 0 || strcmp(flist[ofiles-1],fname) != 0)
+          if ((flist[ofiles++] = Strdup(fname,"Adding to file list")) == NULL)
+            goto error;
+        fprintf(ostub,DB_FDATA,last,fname,prolog);
+      }
+  }
+
+  { int            maxlen;
+    int64          totlen, count[4];
+    int            pmax, rmax;
+    HITS_READ     *prec;
+    char          *read;
+    int            c;
+    File_Iterator *ng = NULL;
+
+    //  Buffer for reads all in the same well
+
+    pmax = 100;
+    prec = (HITS_READ *) Malloc(sizeof(HITS_READ)*pmax,"Allocating record buffer");
+    if (prec == NULL)
+      goto error;
+
+    //  Buffer for accumulating .fasta sequence over multiple lines
+
+    rmax  = MAX_NAME + 60000;
+    read  = (char *) Malloc(rmax+1,"Allocating line buffer");
+    if (read == NULL)
+      goto error;
+
+    totlen = 0;              //  total # of bases in new .fasta files
+    maxlen = 0;              //  longest read in new .fasta files
+    for (c = 0; c < 4; c++)  //  count of acgt in new .fasta files
+      count[c] = 0;
+
+    //  For each new input source do
+
+    if (PIPE == NULL)
+      { ng = init_file_iterator(argc,argv,IFILE,2);  //  Setup to read .fasta's
+        if (ng == NULL)                              //    from command line or file
+          goto error;
+      }
+
+    while (PIPE != NULL || next_file(ng))
+      { FILE *input;
+        char  prolog[MAX_NAME];
+        char *path, *core;
+        int   nline, eof, rlen, pcnt;
+        int   pwell;
+
+        //  Open it: <path>/<core>.fasta if file, stdin otherwise with core = PIPE or "stdout"
+
+        if (PIPE == NULL)
+
+          { if (ng->name == NULL) goto error;
+
+            path  = PathTo(ng->name);
+            core  = Root(ng->name,".fasta");
+            if ((input = Fopen(Catenate(path,"/",core,".fasta"),"r")) == NULL)
+              goto error;
+            free(path);
+          }
+
+        else
+
+          { if (PIPE[0] == '\0')
+              core  = Strdup("stdout","Allocating file name");
+            else
+              core  = Strdup(PIPE,"Allocating file name");
+            if (core == NULL)
+              goto error;
+            input = stdin;
+          }
+
+        //  Check that core is not too long and name is unique or last source if PIPE'd
+
+        if (strlen(core) >= MAX_NAME)
+          { fprintf(stderr,"%s: File name over %d chars: '%.200s'\n",
+                           Prog_Name,MAX_NAME,core);
+            goto error;
+          }
+
+        { int j;
+
+ 
+          if (PIPE == NULL || (strcmp(core,"stdout") != 0 &&
+                 (ofiles == 0 || strcmp(core,flist[ofiles-1]) != 0)))
+            for (j = 0; j < ofiles; j++)
+              if (strcmp(core,flist[j]) == 0)
+                { fprintf(stderr,"%s: File %s.fasta is already in database %s.db\n",
+                                 Prog_Name,core,Root(argv[1],".db"));
+                  goto error;
+                }
+        }
+
+        //  Get the header of the first line.  If the file is empty skip.
+
+        pcnt  = 0;
+        rlen  = 0;
+        nline = 1;
+        eof   = (fgets(read,MAX_NAME,input) == NULL);
+        if (eof || strlen(read) < 1)
+          { fprintf(stderr,"Skipping '%s', file is empty!\n",core);
+            fclose(input);
+            free(core);
+            continue;
+          }
+
+        //   Add the file name to flist
+
+        if (VERBOSE)
+          { if (PIPE != NULL && PIPE[0] == '\0')
+              fprintf(stderr,"Adding reads from stdio ...\n");
+            else
+              fprintf(stderr,"Adding '%s.fasta' ...\n",core);
+            fflush(stderr);
+          }
+        flist[ofiles++] = core;
+
+        // Check that the first line is a header and has PACBIO format.
+
+        if (read[strlen(read)-1] != '\n')
+          { fprintf(stderr,"File %s.fasta, Line 1: Fasta line is too long (> %d chars)\n",
+                           core,MAX_NAME-2);
+            goto error;
+          }
+        if (!eof && read[0] != '>')
+          { fprintf(stderr,"File %s.fasta, Line 1: First header in fasta file is missing\n",core);
+            goto error;
+          }
+
+        { char *find;
+          int   well, beg, end, qv;
+
+          find = index(read+1,'/');
+          if (find != NULL && sscanf(find+1,"%d/%d_%d RQ=0.%d\n",&well,&beg,&end,&qv) >= 3)
+            { *find = '\0';
+              strcpy(prolog,read+1);
+              *find = '/';
+            }
+          else
+            { fprintf(stderr,"File %s.fasta, Line %d: Pacbio header line format error\n",
+                             core,nline);
+              goto error;
+            }
+        }
+
+        //  Read in all the sequences until end-of-file
+
+        { int i, x;
+
+          pwell = -1;
+          while (!eof)
+            { int   beg, end, clen;
+              int   well, qv;
+              char *find;
+
+              find = index(read+(rlen+1),'/');
+              if (find == NULL)
+                { fprintf(stderr,"File %s.fasta, Line %d: Pacbio header line format error\n",
+                                 core,nline);
+                  goto error;
+                }
+              *find = '\0';
+              if (strcmp(read+(rlen+1),prolog) != 0)
+                { fprintf(ostub,DB_FDATA,ureads,core,prolog);
+                  ocells += 1;
+                  strcpy(prolog,read+(rlen+1));
+                }
+              *find = '/';
+              x = sscanf(find+1,"%d/%d_%d RQ=0.%d\n",&well,&beg,&end,&qv);
+              if (x < 3)
+                { fprintf(stderr,"File %s.fasta, Line %d: Pacbio header line format error\n",
+                                 core,nline);
+                  goto error;
+                }
+              else if (x == 3)
+                qv = 0;
+
+              rlen  = 0;
+              while (1)
+                { eof = (fgets(read+rlen,MAX_NAME,input) == NULL);
+                  nline += 1;
+                  x = strlen(read+rlen)-1;
+                  if (read[rlen+x] != '\n')
+                    { if (read[rlen] == '>')
+                        { fprintf(stderr,"File %s.fasta, Line %d:",core,nline);
+                          fprintf(stderr," Fasta header line is too long (> %d chars)\n",
+                                         MAX_NAME-2);
+                          goto error;
+                        }
+                      else
+                        x += 1;
+                    }
+                  if (eof || read[rlen] == '>')
+                    break;
+                  rlen += x;
+                  if (rlen + MAX_NAME > rmax)
+                    { rmax = ((int) (1.2 * rmax)) + 1000 + MAX_NAME;
+                      read = (char *) realloc(read,rmax+1);
+                      if (read == NULL)
+                        { fprintf(stderr,"File %s.fasta, Line %d:",core,nline);
+                          fprintf(stderr," Out of memory (Allocating line buffer)\n");
+                          goto error;
+                        }
+                    }
+                }
+              read[rlen] = '\0';
+
+              for (i = 0; i < rlen; i++)
+                { x = number[(int) read[i]];
+                  count[x] += 1;
+                  read[i]   = (char) x;
+                }
+              ureads += 1;
+              totlen += rlen;
+              if (rlen > maxlen)
+                maxlen = rlen;
+
+              prec[pcnt].origin = well;
+              prec[pcnt].fpulse = beg;
+              prec[pcnt].rlen   = rlen;
+              prec[pcnt].boff   = offset;
+              prec[pcnt].coff   = -1;
+              prec[pcnt].flags  = qv;
+
+              Compress_Read(rlen,read);
+              clen = COMPRESSED_LEN(rlen);
+              fwrite(read,1,clen,bases);
+              offset += clen;
+
+              if (pwell == well)
+                { prec[pcnt].flags |= DB_CSS;
+                  pcnt += 1;
+                  if (pcnt >= pmax)
+                    { pmax = ((int) (pcnt*1.2)) + 100;
+                      prec = (HITS_READ *) realloc(prec,sizeof(HITS_READ)*pmax);
+                      if (prec == NULL)
+                        { fprintf(stderr,"File %s.fasta, Line %d: Out of memory",core,nline);
+                          fprintf(stderr," (Allocating read records)\n");
+                          goto error;
+                        }
+                    }
+                }
+              else if (pcnt == 0)
+                pcnt += 1;
+              else
+                { x = 0;
+                  for (i = 1; i < pcnt; i++)
+                    if (prec[i].rlen > prec[x].rlen)
+                      x = i;
+                  prec[x].flags |= DB_BEST;
+                  fwrite(prec,sizeof(HITS_READ),pcnt,indx);
+                  prec[0] = prec[pcnt];
+                  pcnt = 1;
+                }
+              pwell = well;
+            }
+
+          //  Complete processing of .fasta file: flush last well group, write file line
+          //      in db image, and close file
+
+          x = 0;
+          for (i = 1; i < pcnt; i++)
+            if (prec[i].rlen > prec[x].rlen)
+              x = i;
+          prec[x].flags |= DB_BEST;
+          fwrite(prec,sizeof(HITS_READ),pcnt,indx);
+        }
+
+        fprintf(ostub,DB_FDATA,ureads,core,prolog);
+        ocells += 1;
+
+        if (input != stdin)
+          fclose(input);
+        else
+          break;
+      }
+
+    //  Finished loading all sequences: update relevant fields in db record
+
+    db.ureads = ureads;
+    if (istub == NULL)
+      { for (c = 0; c < 4; c++)
+          db.freq[c] = (float) ((1.*count[c])/totlen);
+        db.totlen = totlen;
+        db.maxlen = maxlen;
+        db.cutoff = -1;
+      }
+    else
+      { for (c = 0; c < 4; c++)
+          db.freq[c] = (float) ((db.freq[c]*db.totlen + (1.*count[c]))/(db.totlen + totlen));
+        db.totlen += totlen;
+        if (maxlen > db.maxlen)
+          db.maxlen = maxlen;
+      }
+  }
+
+  //  If db has been previously partitioned then calculate additional partition points and
+  //    write to new db file image
+
+  if (db.cutoff >= 0)
+    { int64      totlen, dbpos, size;
+      int        nblock, ireads, tfirst, rlen;
+      int        ufirst, cutoff, allflag;
+      HITS_READ  record;
+      int        i;
+
+      if (VERBOSE)
+        { fprintf(stderr,"Updating block partition ...\n");
+          fflush(stderr);
+        }
+
+      //  Read the block portion of the existing db image getting the indices of the first
+      //    read in the last block of the exisiting db as well as the partition parameters.
+      //    Copy the old image block information to the new block information (except for
+      //    the indices of the last partial block)
+
+      if (fscanf(istub,DB_NBLOCK,&nblock) != 1)
+        { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",Prog_Name,root);
+          goto error;
+        }
+      dbpos = ftello(ostub);
+      fprintf(ostub,DB_NBLOCK,0);
+      if (fscanf(istub,DB_PARAMS,&size,&cutoff,&allflag) != 3)
+        { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",Prog_Name,root);
+          goto error;
+        }
+      fprintf(ostub,DB_PARAMS,size,cutoff,allflag);
+      if (allflag)
+        allflag = 0;
+      else
+        allflag = DB_BEST;
+
+      nblock -= 1;
+      for (i = 0; i <= nblock; i++)
+        { if (fscanf(istub,DB_BDATA,&ufirst,&tfirst) != 2)
+            { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",Prog_Name,root);
+              goto error;
+            }
+          fprintf(ostub,DB_BDATA,ufirst,tfirst);
+        }
+
+      //  Seek the first record of the last block of the existing db in .idx, and then
+      //    compute and record partition indices for the rest of the db from this point
+      //    forward.
+
+      fseeko(indx,sizeof(HITS_DB)+sizeof(HITS_READ)*ufirst,SEEK_SET);
+      totlen = 0;
+      ireads = 0;
+      for (i = ufirst; i < ureads; i++)
+        { if (fread(&record,sizeof(HITS_READ),1,indx) != 1)
+            { fprintf(stderr,"%s: %s.idx is corrupted, read failed\n",Prog_Name,root);
+              goto error;
+            }
+          rlen = record.rlen;
+          if (rlen >= cutoff && (record.flags & DB_BEST) >= allflag)
+            { ireads += 1;
+              tfirst += 1;
+              totlen += rlen;
+              if (totlen >= size)
+                { fprintf(ostub," %9d %9d\n",i+1,tfirst);
+                  totlen = 0;
+                  ireads = 0;
+                  nblock += 1;
+                }
+            }
+        }
+
+      if (ireads > 0)
+        { fprintf(ostub,DB_BDATA,ureads,tfirst);
+          nblock += 1;
+        }
+
+      db.treads = tfirst;
+
+      fseeko(ostub,dbpos,SEEK_SET);
+      fprintf(ostub,DB_NBLOCK,nblock);    //  Rewind and record the new number of blocks
+    }
+  else
+    db.treads = ureads;
+
+  rewind(indx);
+  fwrite(&db,sizeof(HITS_DB),1,indx);   //  Write the finalized db record into .idx
+
+  rewind(ostub);                        //  Rewrite the number of files actually added
+  fprintf(ostub,DB_NFILE,ocells);
+
+  if (istub != NULL)
+    fclose(istub);
+  fclose(ostub);
+  fclose(indx);
+  fclose(bases);
+
+  rename(Catenate(pwd,"/",root,".dbx"),dbname);   //  New image replaces old image
+
+  exit (0);
+
+  //  Error exit:  Either truncate or remove the .idx and .bps files as appropriate.
+  //               Remove the new image file <pwd>/<root>.dbx
+
+error:
+  if (ioff != 0)
+    { fseeko(indx,0,SEEK_SET);
+      if (ftruncate(fileno(indx),ioff) < 0)
+        fprintf(stderr,"%s: Fatal: could not restore %s.idx after error, truncate failed\n",
+                       Prog_Name,root);
+    }
+  if (boff != 0)
+    { fseeko(bases,0,SEEK_SET);
+      if (ftruncate(fileno(bases),boff) < 0)
+        fprintf(stderr,"%s: Fatal: could not restore %s.bps after error, truncate failed\n",
+                       Prog_Name,root);
+    }
+  if (indx != NULL)
+    { fclose(indx);
+      if (ioff == 0)
+        unlink(Catenate(pwd,PATHSEP,root,".idx"));
+    }
+  if (bases != NULL)
+    { fclose(bases);
+      if (boff == 0)
+        unlink(Catenate(pwd,PATHSEP,root,".bps"));
+    }
+  if (ostub != NULL)
+    { fclose(ostub);
+      unlink(Catenate(pwd,"/",root,".dbx"));
+    }
+  if (istub != NULL)
+    fclose(istub);
+
+  exit (1);
+}
diff --git a/DAZZ_DB/quiva2DB.c b/DAZZ_DB/quiva2DB.c
new file mode 100644
index 0000000..6d099f5
--- /dev/null
+++ b/DAZZ_DB/quiva2DB.c
@@ -0,0 +1,510 @@
+/*******************************************************************************************
+ *
+ *  Adds the given .quiva files to an existing DB "path".  The input files must be added in
+ *  the same order as the .fasta files were and have the same root names, e.g. FOO.fasta
+ *  and FOO.quiva.  The files can be added incrementally but must be added in the same order  
+ *  as the .fasta files.  This is enforced by the program.  With the -l option set the
+ *  compression scheme is a bit lossy to get more compression (see the description of dexqv
+ *  in the DEXTRACTOR module).
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2014
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "DB.h"
+#include "QV.h"
+
+//  Compiled in INTERACTIVE mode as all routines must return with an error
+//    so that cleanup and restore is possible.
+
+#ifdef HIDE_FILES
+#define PATHSEP "/."
+#else
+#define PATHSEP "/"
+#endif
+
+static char *Usage = "[-vl] <path:string> ( -f<file> | -i | <input:quiva> ... )";
+
+typedef struct
+  { int    argc;
+    char **argv;
+    FILE  *input;
+    int    count;
+    char  *name;
+  } File_Iterator;
+
+File_Iterator *init_file_iterator(int argc, char **argv, FILE *input, int first)
+{ File_Iterator *it;
+
+  it = Malloc(sizeof(File_Iterator),"Allocating file iterator");
+  if (it == NULL)
+    return (NULL);
+  it->argc  = argc;
+  it->argv  = argv;
+  it->input = input;
+  if (input == NULL)
+    it->count = first;
+  else
+    { it->count = 1;
+      rewind(input);
+    }
+  return (it);
+}
+
+int next_file(File_Iterator *it)
+{ static char nbuffer[MAX_NAME+8];
+
+  if (it->input == NULL)
+    { if (it->count >= it->argc)
+        return (0);
+      it->name = it->argv[it->count++];
+    }
+  else
+    { char *eol;
+
+      if (fgets(nbuffer,MAX_NAME+8,it->input) == NULL)
+        { if (feof(it->input))
+            return (0);
+          fprintf(stderr,"%s: IO error reading line %d of -f file of names\n",Prog_Name,it->count);
+          it->name = NULL;
+          return (1);
+        }
+      if ((eol = index(nbuffer,'\n')) == NULL)
+        { fprintf(stderr,"%s: Line %d in file list is longer than %d chars!\n",
+                         Prog_Name,it->count,MAX_NAME+7);
+          it->name = NULL;
+          return (1);
+        }
+      *eol = '\0';
+      it->count += 1;
+      it->name  = nbuffer;
+    }
+  return (1);
+}
+
+
+int main(int argc, char *argv[])
+{ FILE      *istub;
+  char      *root, *pwd;
+
+  FILE      *quiva, *indx;
+  int64      coff;
+
+  HITS_DB    db;
+  HITS_READ *reads;
+  int        nfiles;
+
+  FILE      *temp;
+  char      *tname;
+
+  int        VERBOSE;
+  int        LOSSY;
+  int        PIPE;
+  FILE      *INFILE;
+
+  //  Process command line
+
+  { int   i, j, k;
+    int   flags[128];
+
+    ARG_INIT("quiva2DB")
+
+    INFILE = NULL;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("vli")
+            break;
+          case 'f':
+            INFILE = fopen(argv[i]+2,"r");
+            if (INFILE == NULL)
+              { fprintf(stderr,"%s: Cannot open file of inputs '%s'\n",Prog_Name,argv[i]+2);
+                exit (1);
+              }
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    VERBOSE = flags['v'];
+    LOSSY   = flags['l'];
+    PIPE    = flags['i'];
+
+    if (INFILE != NULL && PIPE)
+      { fprintf(stderr,"%s: Cannot use both -f and -i together\n",Prog_Name);
+        exit (1);
+      }
+
+    if ( (INFILE == NULL && ! PIPE && argc <= 2) || 
+        ((INFILE != NULL || PIPE) && argc != 2))
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+        exit (1);
+      }
+  }
+
+  //  Open DB stub file, index, and .qvs file for appending.  Load db and read records,
+  //    get number of cells from stub file, and note current offset to end of .qvs
+
+  root   = Root(argv[1],".db");
+  pwd    = PathTo(argv[1]);
+  istub  = Fopen(Catenate(pwd,"/",root,".db"),"r");
+  if (istub == NULL)
+    { fprintf(stderr,"%s",Ebuffer);
+      exit (1);
+    }
+  if (fscanf(istub,DB_NFILE,&nfiles) != 1)
+    { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",root,Prog_Name);
+      exit (1);
+    }
+
+  indx  = Fopen(Catenate(pwd,PATHSEP,root,".idx"),"r+");
+  if (indx == NULL)
+    { fprintf(stderr,"%s",Ebuffer);
+      exit (1);
+    }
+  if (fread(&db,sizeof(HITS_DB),1,indx) != 1)
+    { fprintf(stderr,"%s: %s.idx is corrupted, read failed\n",root,Prog_Name);
+      exit (1);
+    }
+
+  reads = (HITS_READ *) Malloc(sizeof(HITS_READ)*db.ureads,"Allocating DB index");
+  if (reads == NULL)
+    { fprintf(stderr,"%s",Ebuffer);
+      exit (1);
+    }
+  if (fread(reads,sizeof(HITS_READ),db.ureads,indx) != (size_t) (db.ureads))
+    { fprintf(stderr,"%s: %s.idx is corrupted, read failed\n",root,Prog_Name);
+      exit (1);
+    }
+
+  quiva = NULL;
+  temp  = NULL;
+  coff  = 0;
+
+  if (reads[0].coff < 0)
+    quiva = Fopen(Catenate(pwd,PATHSEP,root,".qvs"),"w");
+  else
+    quiva = Fopen(Catenate(pwd,PATHSEP,root,".qvs"),"r+");
+
+  tname = Strdup(Catenate(".",PATHSEP,root,Numbered_Suffix("",getpid(),".tmp")),
+                 "Allocating temporary name");
+  temp = Fopen(tname,"w+");
+
+  if (quiva == NULL || temp == NULL)
+    { fprintf(stderr,"%s",Ebuffer);
+      goto error;
+    }
+  fseeko(quiva,0,SEEK_END);
+  coff = ftello(quiva);
+
+  //  Do a merged traversal of cell lines in .db stub file and .quiva files to be
+  //    imported, driving the loop with the cell line #
+
+  { FILE          *input = NULL;
+    char          *path = NULL;
+    char          *core = NULL;
+    File_Iterator *ng = NULL;
+    char           lname[MAX_NAME];
+    int            first, last, cline;
+    int            cell;
+
+    if (!PIPE)
+      { ng = init_file_iterator(argc,argv,INFILE,2);
+        if (ng == NULL)
+          { fprintf(stderr,"%s",Ebuffer);
+            goto error;
+          }
+      }
+
+    for (cell = 0; cell < nfiles; cell++)
+      { char  prolog[MAX_NAME], fname[MAX_NAME];
+
+        if (cell == 0)
+
+          //  First addition, a pipe: find the first cell that does not have .quiva's yet
+          //     (error if none) and set input source to stdin.
+
+          if (PIPE)
+            { first = 0;
+              while (cell < nfiles)
+                { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+                    { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",core,Prog_Name);
+                      goto error;
+                    }
+                  if (reads[first].coff < 0)
+                    break;
+                  first = last;
+                  cell += 1;
+                }
+              if (cell >= nfiles)
+                { fprintf(stderr,"%s: All .quiva's have already been added !?\n",Prog_Name);
+                  goto error;
+                }
+
+              input = stdin;
+
+              if (VERBOSE)
+                { fprintf(stderr,"Adding quiva's from stdin ...\n");
+                  fflush(stderr);
+                }
+              cline = 0;
+            }
+
+          //  First addition, not a pipe: then get first .quiva file name (error if not one) to
+          //    add, find the first cell name whose file name matches (error if none), check that
+          //    the previous .quiva's have been added and this is the next slot.  Then open
+          //    the .quiva file for compression
+
+          else
+            { if (! next_file(ng))
+                { fprintf(stderr,"%s: file list is empty!\n",Prog_Name);
+                  goto error;
+                }
+              if (ng->name == NULL)
+                { fprintf(stderr,"%s",Ebuffer);
+                  goto error;
+                }
+  
+              core = Root(ng->name,".quiva");
+              path = PathTo(ng->name);
+              if ((input = Fopen(Catenate(path,"/",core,".quiva"),"r")) == NULL)
+                { fprintf(stderr,"%s",Ebuffer);
+                  goto error;
+                }
+  
+              first = 0;
+              while (cell < nfiles)
+                { if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+                    { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",core,Prog_Name);
+                      goto error;
+                    }
+                  if (strcmp(core,fname) == 0)
+                    break;
+                  first = last;
+                  cell += 1;
+                }
+              if (cell >= nfiles)
+                { fprintf(stderr,"%s: %s.fasta has never been added to DB\n",Prog_Name,core);
+                  goto error;
+                }
+        
+              if (first > 0 && reads[first-1].coff < 0)
+                { fprintf(stderr,"%s: Predecessor of %s.quiva has not been added yet\n",
+                                 Prog_Name,core);
+                  goto error;
+                }
+              if (reads[first].coff >= 0)
+                { fprintf(stderr,"%s: %s.quiva has already been added\n",Prog_Name,core);
+                  goto error;
+                }
+  
+              if (VERBOSE)
+                { fprintf(stderr,"Adding '%s.quiva' ...\n",core);
+                  fflush(stderr);
+                }
+              cline = 0;
+            }
+
+        //  Not the first addition: get next cell line.  If not a pipe and the file name is new,
+        //    then close the current .quiva, open the next one and after ensuring the names
+        //    match, open it for compression
+
+        else
+          { first = last;  
+            strcpy(lname,fname);
+            if (fscanf(istub,DB_FDATA,&last,fname,prolog) != 3)
+              { fprintf(stderr,"%s: %s.db is corrupted, read failed\n",core,Prog_Name);
+                goto error;
+              }
+            if (PIPE)
+              { int c;
+                if ((c = fgetc(input)) == EOF)
+                  break;
+                ungetc(c,input);
+              }
+            else if (strcmp(lname,fname) != 0)
+              { if (fgetc(input) != EOF)
+                  { fprintf(stderr,"%s: Too many reads in %s.quiva while handling %s.fasta\n",
+                                   Prog_Name,core,fname);
+                    goto error;
+                  }
+
+                fclose(input);
+                free(path);
+                free(core);
+
+                if ( ! next_file(ng))
+                  break;
+                if (ng->name == NULL)
+                  { fprintf(stderr,"%s",Ebuffer);
+                    goto error;
+                  }
+
+                path = PathTo(ng->name);
+                core = Root(ng->name,".quiva");
+                if ((input = Fopen(Catenate(path,"/",core,".quiva"),"r")) == NULL)
+                  { fprintf(stderr,"%s",Ebuffer);
+                    goto error;
+                  }
+
+                if (strcmp(core,fname) != 0)
+                  { fprintf(stderr,"%s: Files not being added in order (expect %s, given %s)\n",
+                                   Prog_Name,fname,core);
+                    goto error;
+                  }
+
+                if (VERBOSE)
+                  { fprintf(stderr,"Adding '%s.quiva' ...\n",core);
+                    fflush(stderr);
+                  }
+                cline = 0;
+              }
+          }
+
+        //  Compress reads [first..last) from open .quiva appending to .qvs and record
+        //    offset in .coff field of reads (offset of first in a cell is to the compression
+        //    table).
+
+        { int64     qpos;
+          QVcoding *coding;
+          int       i, s;
+
+          rewind(temp);
+          if (ftruncate(fileno(temp),0) < 0)
+            { fprintf(stderr,"%s: System error: could not truncate temporary file\n",Prog_Name);
+              goto error;
+            }
+          Set_QV_Line(cline);
+          s = QVcoding_Scan(input,last-first,temp);
+          if (s < 0)
+            { fprintf(stderr,"%s",Ebuffer);
+              goto error;
+            }
+          if (s != last-first)
+            { if (PIPE)
+                fprintf(stderr,"%s: Insufficient # of reads on input while handling %s.fasta\n",
+                               Prog_Name,fname);
+              else
+                fprintf(stderr,"%s: Insufficient # of reads in %s.quiva while handling %s.fasta\n",
+                               Prog_Name,core,fname);
+              goto error;
+            }
+
+          coding = Create_QVcoding(LOSSY);
+          if (coding == NULL)
+            { fprintf(stderr,"%s",Ebuffer);
+              goto error;
+            }
+
+          coding->prefix = Strdup(".qvs","Allocating header prefix");
+          if (coding->prefix == NULL)
+            { fprintf(stderr,"%s",Ebuffer);
+              goto error;
+            }
+
+          qpos = ftello(quiva);
+          Write_QVcoding(quiva,coding);
+
+          //  Then compress and append to the .qvs each compressed QV entry
+ 
+          rewind(temp);
+          Set_QV_Line(cline);
+          for (i = first; i < last; i++)
+            { s = Read_Lines(temp,1);
+              if (s < -1)
+                { fprintf(stderr,"%s",Ebuffer);
+                  goto error;
+                }
+              reads[i].coff = qpos;
+              s = Compress_Next_QVentry(temp,quiva,coding,LOSSY);
+              if (s < 0)
+                { fprintf(stderr,"%s",Ebuffer);
+                  goto error;
+                }
+              if (s != reads[i].rlen)
+                { fprintf(stderr,"%s: Length of quiva %d is different than fasta in DB\n",
+                                 Prog_Name,i+1);
+                  goto error;
+                }
+              qpos = ftello(quiva);
+            }
+          cline = Get_QV_Line();
+
+          Free_QVcoding(coding);
+        }
+      }
+
+    if (fgetc(input) != EOF)
+      { if (PIPE)
+          fprintf(stderr,"%s: Too many reads on input while handling %s.fasta\n",
+                         Prog_Name,lname);
+        else
+          fprintf(stderr,"%s: Too many reads in %s.quiva while handling %s.fasta\n",
+                         Prog_Name,core,lname);
+        goto error;
+      }
+    if ( ! PIPE && cell >= nfiles)
+      { fclose(input);
+        free(core);
+        free(path);
+        if (next_file(ng))
+          { if (ng->name == NULL)
+              { fprintf(stderr,"%s",Ebuffer);
+                goto error;
+              }
+            core = Root(ng->name,".quiva");
+            fprintf(stderr,"%s: %s.fasta has never been added to DB\n",Prog_Name,core);
+            goto error;
+          }
+      }
+  }
+
+  //  Write the db record and read index into .idx and clean up
+
+  rewind(indx);
+  fwrite(&db,sizeof(HITS_DB),1,indx);
+  fwrite(reads,sizeof(HITS_READ),db.ureads,indx);
+
+  fclose(istub);
+  fclose(indx);
+  fclose(quiva);
+  fclose(temp);
+  unlink(tname);
+
+  exit (0);
+
+  //  Error exit:  Either truncate or remove the .qvs file as appropriate.
+
+error:
+  if (coff != 0)
+    { fseeko(quiva,0,SEEK_SET);
+      if (ftruncate(fileno(quiva),coff) < 0)
+        fprintf(stderr,"%s: Fatal: could not restore %s.qvs after error, truncate failed\n",
+                       Prog_Name,root);
+    }
+  if (quiva != NULL)
+    { fclose(quiva);
+      if (coff == 0)
+        unlink(Catenate(pwd,PATHSEP,root,".qvs"));
+    }
+  if (temp != NULL)
+    { fclose(temp);
+      unlink(tname);
+    }
+  fclose(istub);
+  fclose(indx);
+
+  exit (1);
+}
diff --git a/DAZZ_DB/rangen.c b/DAZZ_DB/rangen.c
new file mode 100644
index 0000000..27d8354
--- /dev/null
+++ b/DAZZ_DB/rangen.c
@@ -0,0 +1,182 @@
+/*******************************************************************************************
+ *
+ *  Synthetic DNA shotgun sequence generator
+ *     Generate a fake genome of size genlen*1Mb long, that has an AT-bias of -b.
+ *     The -r parameter seeds the random number generator for the generation of the genome
+ *     so that one can reproducbile produce the same underlying genome to sample from.  If
+ *     missing, then the job id of the invocation seeds the generator.  The sequence is
+ *     sent to the standard output in .fasta format.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  April 2016
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+
+static char *Usage = "<genlen:double> [-U] [-b<double(.5)>] [-w<int(80)>] [-r<int>]";
+
+static int    GENOME;     // -g option * 1Mbp
+static double BIAS;       // -b option
+static int    HASR = 0;   // -r option is set?
+static int    SEED;       // -r option
+static int    WIDTH;      // -w option
+static int    UPPER;      // -U option
+
+static char *Prog_Name;
+
+//  Generate a random DNA sequence of length *len* with an AT-bias of BIAS.
+//    Uppercase letters if UPPER is set, lowercase otherwise.
+
+static char *random_genome(int len)
+{ static char  *seq = NULL;
+  static double x, PRA, PRC, PRG;
+  int    i;
+
+  if (seq == NULL)
+    { PRA = BIAS/2.;
+      PRC = (1.-BIAS)/2. + PRA;
+      PRG = (1.-BIAS)/2. + PRC;
+      if ((seq = (char *) malloc(WIDTH+1)) == NULL)
+        { fprintf(stderr,"%s: Allocating genome sequence\n",Prog_Name);
+          exit (1);
+        }
+    }
+
+  if (UPPER)
+    for (i = 0; i < len; i++)
+      { x = drand48();
+        if (x < PRC)
+          if (x < PRA)
+            seq[i] = 'A';
+          else
+            seq[i] = 'C';
+        else
+          if (x < PRG)
+            seq[i] = 'G';
+          else
+            seq[i] = 'T';
+      }
+  else
+    for (i = 0; i < len; i++)
+      { x = drand48();
+        if (x < PRC)
+          if (x < PRA)
+            seq[i] = 'a';
+          else
+            seq[i] = 'c';
+        else
+          if (x < PRG)
+            seq[i] = 'g';
+          else
+            seq[i] = 't';
+      }
+  seq[len] = '\0';
+
+  return (seq);
+}
+
+int main(int argc, char *argv[])
+{ int    i, j;
+  char  *eptr;
+  double glen;
+ 
+  //  Process command arguments
+  //
+  //  Usage: <GenomeLen:double> [-b<double(.5)>] [-r<int>]
+
+  Prog_Name = strdup("rangen");
+
+  WIDTH = 80;
+  BIAS  = .5;
+  HASR  = 0;
+  UPPER = 0;
+
+  j = 1;
+  for (i = 1; i < argc; i++)
+    if (argv[i][0] == '-')
+      switch (argv[i][1])
+      { default:
+          fprintf(stderr,"%s: %s is an illegal option\n",Prog_Name,argv[i]);
+          exit (1);
+        case 'U':
+          if (argv[i][2] != '\0')
+            { fprintf(stderr,"%s: %s is an illegal option\n",Prog_Name,argv[i]);
+              exit (1);
+            }
+          UPPER = 1;
+          break;
+        case 'b':
+          BIAS = strtod(argv[i]+2,&eptr);
+          if (*eptr != '\0' || argv[i][2] == '\0')
+            { fprintf(stderr,"%s: -%c '%s' argument is not a real number\n",
+                             Prog_Name,argv[i][1],argv[i]+2);
+              exit (1);
+            }
+          if (BIAS < 0. || BIAS > 1.)
+            { fprintf(stderr,"%s: AT-bias must be in [0,1] (%g)\n",Prog_Name,BIAS);
+              exit (1);
+            }
+          break;
+        case 'r':
+          SEED = strtol(argv[i]+2,&eptr,10);
+          HASR = 1;
+          if (*eptr != '\0' || argv[i][2] == '\0')
+            { fprintf(stderr,"%s: -r argument is not an integer\n",Prog_Name);
+              exit (1);
+            }
+          break;
+        case 'w':
+          WIDTH = strtol(argv[i]+2,&eptr,10);
+          if (*eptr != '\0' || argv[i][2] == '\0')
+            { fprintf(stderr,"%s: -w '%s' argument is not an integer\n",Prog_Name,argv[i]+2);
+              exit (1);
+            }
+          if (WIDTH < 0)
+            { fprintf(stderr,"%s: Line width must be non-negative (%d)\n",Prog_Name,WIDTH);
+              exit (1);
+            }
+          break;
+      }
+    else
+      argv[j++] = argv[i];
+  argc = j;
+
+  if (argc != 2)
+    { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage);
+      exit (1);
+    }
+
+  glen = strtod(argv[1],&eptr);
+  if (*eptr != '\0')
+    { fprintf(stderr,"%s: genome length is not a real number\n",Prog_Name);
+      exit (1);
+    }
+  if (glen < 0.)
+    { fprintf(stderr,"%s: Genome length must be positive (%g)\n",Prog_Name,glen);
+      exit (1);
+    }
+  GENOME = (int) (glen*1000000.);
+
+  //  Set up random number generator
+
+  if (HASR)
+    srand48(SEED);
+  else
+    srand48(getpid());
+
+  //  Generate the sequence line at a time where all lines have width WDITH, save the last.
+
+
+  fprintf(stdout,">random len=%d bias=%g\n",GENOME,BIAS);
+  for (j = 0; j+WIDTH < GENOME; j += WIDTH)
+    fprintf(stdout,"%s\n",random_genome(WIDTH));
+  if (j < GENOME)
+    fprintf(stdout,"%s\n",random_genome(GENOME-j));
+
+  exit (0);
+}
diff --git a/DAZZ_DB/simulator.c b/DAZZ_DB/simulator.c
new file mode 100644
index 0000000..cf1d694
--- /dev/null
+++ b/DAZZ_DB/simulator.c
@@ -0,0 +1,573 @@
+/*******************************************************************************************
+ *
+ *  Synthetic DNA shotgun dataset simulator
+ *     From a supplied reference genome in the form of a Dazzler .dam, sample reads of
+ *     mean length -m from a log-normal length distribution with standard deviation -s,
+ *     but ignore reads of length less than -x.  Collect enough reads to cover the genome
+ *     -c times.   Introduce -e fraction errors into each read where the ratio of insertions,
+ *     deletions, and substitutions are set by defined constants INS_RATE and DEL_RATE
+ *     within generate.c.  The fraction -f controls the rate at which reads are picked from
+ *     the forward and reverse strands which defaults to 50%.  If -C is set then assume the
+ *     scaffolds are circular.
+ *
+ *     The -r parameter seeds the random number generator for the generation of the genome
+ *     so that one can reproducbile produce the same underlying genome to sample from.  If
+ *     missing, then the job id of the invocation seeds the generator.  The output is sent
+ *     to the standard output (i.e. it is a pipe).  The output is in fasta format (i.e. it is
+ *     a UNIX pipe).  The output is in Pacbio .fasta format suitable as input to fasta2DB.
+ *
+ *     The genome is considered a sequence of *scaffolds* (these are reconstituted from the
+ *     Dazzler's internal encoding of a .dam), where the gaps are filled with a random
+ *     sequence that follows the base distribution of the contigs of the genome.  The program
+ *     then samples these filled in scaffolds for reads.  If the -C optioin is set then the
+ *     program assumes each scaffold is a circular sequence.
+ *
+ *     The -M option requests that the scaffold and coordinates from which each read has
+ *     been sampled are written to the indicated file, one line per read, ASCII encoded.
+ *     This "map" file essentially tells one where every read belongs in an assembly and
+ *     is very useful for debugging and testing purposes.  If a read pair is say b,e then
+ *     if b < e the read was sampled from [b,e] in the forward direction, and from [e,b]
+ *     in the reverse direction otherwise.
+ *
+ *  Author:  Gene Myers
+ *  Date  :  July 2013
+ *  Mod   :  April 2016 (generates reads w.r.t. a reference genome)
+ *
+ ********************************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+
+#include "DB.h"
+
+static char *Usage[] = { "<genome:dam> [-CU] [-m<int(10000)>]  [-s<int(2000)>] [-e<double(.15)>]",
+                         "                   [-c<double(50.)>] [-f<double(.5)>] [-x<int(4000)>]",
+                         "                   [-w<int(80)>] [-r<int>] [-M<file>]",
+                       };
+
+static int    CIRCULAR;   // -C option
+static int    UPPER;      // -U option
+static int    RMEAN;      // -m option
+static int    RSDEV;      // -s option
+static double ERROR;      // -e option
+static double COVERAGE;   // -c option
+static double FLIP_RATE;  // -f option
+static int    RSHORT;     // -x option
+static int    WIDTH;      // -w option
+static int    HASR;       // -r option is set?
+static int    SEED;       // -r option
+static FILE  *MAP;        // -M option
+
+#define INS_RATE  .73333  // insert rate
+#define DEL_RATE  .20000  // deletion rate
+#define IDL_RATE  .93333  // insert + delete rate
+
+//  Complement (in the DNA sense) string *s*.
+
+static void complement(int elen, char *s)
+{ char *t;
+  int   c;
+
+  t = s + (elen-1);
+  while (s <= t)
+    { c = *s;
+      *s = (char) (3-*t);
+      *t = (char) (3-c);
+      s += 1;
+      t -= 1;
+    }
+}
+
+//  A unit normal distribution random number generator
+
+#define UNORM_LEN 60000
+#define UNORM_MAX   6.0
+
+static double unorm_table[UNORM_LEN+1];  // Upper half of cdf of N(0,1)
+static double unorm_scale;
+
+static void init_unorm()
+{ double del, sum, x;
+  int    i;
+
+  unorm_scale = del = UNORM_MAX / UNORM_LEN;
+
+  sum = 0;                            // Integrate pdf, x >= 0 half only.
+  for (i = 0; i < UNORM_LEN; i++)
+    { x = i * del;
+      unorm_table[i] = sum;
+      sum += exp(-.5*x*x) * del;
+    }
+  unorm_table[UNORM_LEN] = sum;
+
+                /* Normalize cdf */
+  sum *= 2.;
+  for (i = 0; i < UNORM_LEN; i++)
+    unorm_table[i] /= sum;
+  unorm_table[UNORM_LEN] = 1.;
+
+#ifdef DEBUG
+  printf("Truncated tail is < %g\n",
+          exp(-.5*UNORM_MAX*UNORM_MAX)/(sum*(1.-exp(-UNORM_MAX))) );
+  printf("Diff between last two entries is %g\n",.5-unorm_table[UNORM_LEN-1]);
+
+  printf("\n  CDF:\n");
+  for (i = 0; i <= UNORM_LEN; i += 100)
+    printf("%6.2f: %10.9f\n",i*del,unorm_table[i]);
+#endif
+}
+
+static int bin_search(int len, double *tab, double y)
+{ int l, m, r;
+
+  // Searches tab[0..len] for min { r : y < tab[r] }.
+  //   Assumes y < 1, tab[0] = 0 and tab[len] = 1.
+  //   So returned index is in [1,len].
+
+  l = 0;
+  r = len;
+  while (l < r)
+    { m = (l+r) >> 1;
+      if (y < tab[m])
+        r = m;
+      else
+        l = m+1;
+    }
+  return (r);
+}
+
+static double sample_unorm(double x)
+{ double y;
+  int    f;
+
+  if (x >= .5)  // Map [0,1) random var to upper-half of cdf */
+    y = x-.5;
+  else
+    y = .5-x;
+
+  f = bin_search(UNORM_LEN,unorm_table,y);    // Bin. search upper-half cdf
+#ifdef DEBUG
+  printf("Normal search %g -> %g -> %d",x,y,f);
+#endif
+
+  // Linear interpolate between table points
+
+  y = (f - (unorm_table[f]-y) / (unorm_table[f] - unorm_table[f-1]) ) * unorm_scale;
+
+  if (x < .5) y = -y;       // Map upper-half var back to full range
+#ifdef DEBUG
+  printf(" -> %g\n",y);
+#endif
+
+  return (y);
+}
+
+//  Open and trim the reference genome *name*.  Determine the number of scaffolds and sizes
+//    of each scaffold (in nscaffs and the .coff field of the read records) in the dam.  Then
+//    create a sequence for each scaffold (index in the .boff field of the read records), that
+//    consists of its contigs with a random sequence filling the gaps (generated according to
+//    the bp frequency in db.freq[4]).
+
+HITS_DB *load_and_fill(char *name, int *pscaffs)
+{ static HITS_DB db;
+  HITS_READ *reads;
+  FILE      *bases;
+  char      *seq;
+  int        nreads, nscaffs;
+  int        i, c;
+  int64      ctot;
+  int64      o, u;
+  double     PRA, PRC, PRG;
+
+  if (Open_DB(name,&db) != 1)
+    { fprintf(stderr,"%s: %s is not a Dazzler .dam\n",Prog_Name,name);
+      exit (1);
+    }
+  Trim_DB(&db);
+
+  PRA = db.freq[0];
+  PRC = PRA + db.freq[1];
+  PRG = PRC + db.freq[2];
+
+  nreads  = db.nreads;  
+  reads   = db.reads;
+
+  nscaffs = 0;
+  for (i = 0; i < nreads; i++)
+    if (reads[i].origin == 0)
+      nscaffs += 1;
+
+  for (i = 0; i < nscaffs; i++)
+    reads[i].coff = 0;
+
+  c = -1;
+  for (i = 0; i < nreads; i++)
+    { if (reads[i].origin == 0)
+        c += 1;
+      reads[c].coff = reads[i].fpulse+reads[i].rlen;
+    }
+
+  ctot = 0;
+  for (i = 0; i < nscaffs; i++)
+    ctot += reads[i].coff+1;
+
+  bases = Fopen(Catenate(db.path,"","",".bps"),"r");
+  if (bases == NULL)
+    exit (1);
+
+  seq = (char *) Malloc(ctot+4,"Allocating space for genome");
+  if (seq == NULL)
+    exit (1);
+  *seq++ = 4;
+
+  c = -1;
+  o = u = 0;
+  for (i = 0; i < nreads; i++)
+    { int   len, clen;
+      int64 off;
+
+      if (reads[i].origin == 0)
+        { if (c >= 0)
+            o += reads[c].coff + 1;
+          c += 1;
+          u = o;
+        }
+      else
+        { int64  p;
+          double x;
+
+          p = u + reads[i-1].rlen;
+          u = o + reads[i].fpulse;
+          while (p < u)
+            { x = drand48();
+              if (x < PRC)
+                if (x < PRA)
+                  seq[p++] = 0;
+                else
+                  seq[p++] = 1;
+              else
+                if (x < PRG)
+                  seq[p++] = 2;
+                else
+                  seq[p++] = 3;
+            }
+        }
+
+      len = reads[i].rlen;
+      off = reads[i].boff;
+      if (ftello(bases) != off)
+        fseeko(bases,off,SEEK_SET);
+      clen = COMPRESSED_LEN(len);
+      if (clen > 0)
+        { if (fread(seq+u,clen,1,bases) != 1)
+            { EPRINTF(EPLACE,"%s: Read of .bps file failed\n",Prog_Name);
+              exit (1);
+            }
+        }
+      Uncompress_Read(len,seq+u);
+      if (reads[i].origin == 0)
+        reads[c].boff = o;
+    }
+  reads[nscaffs].boff = ctot;
+
+  db.bases  = (void *) seq;
+  db.loaded = 1;
+
+  *pscaffs = nscaffs;
+  return (&db);
+}
+
+//  Generate reads (a) whose lengths are exponentially distributed with mean *mean* and
+//    standard deviation *stdev*, and (b) that are never shorter than *shortest*.  Each
+//    read is a randomly sampled interval of one of the filled scaffolds of *source*
+//    (each interval is equally likely) that has insertion, deletion, and/or substitution
+//    errors introduced into it and which is oriented in either the forward or reverse
+//    strand direction with probability FLIP_RATE.  The number of errors introduced is the
+//    length of the string times *erate*, and the probability of an insertion, delection,
+//    or substitution is controlled by the defined constants INS_RATE and DEL_RATE.
+//    If the -C option is set then each scaffold is assumed to be circular and reads can
+//    be sampled that span the origin.   Reads are generated until the sum of the lengths of
+//    the reads is greater thant coverage times the sum of the lengths of the scaffolds in
+//    the reference (i.e. including filled scaffold gaps in the genome size).  The reads are
+//    output as fasta entries with the PacBio-specific header format that contains the
+//    sampling interval, read length, and a read id.
+
+static void shotgun(HITS_DB *source, int nscaffs)
+{ HITS_READ *reads;
+  int        gleng;
+  int        maxlen, nreads, qv;
+  int64      totlen, totbp;
+  char      *rbuffer, *bases;
+  double     nmean, nsdev;
+  double    *weights;
+  int        scf;
+
+  nsdev = (1.*RSDEV)/RMEAN;
+  nsdev = log(1.+nsdev*nsdev);
+  nmean = log(1.*RMEAN) - .5*nsdev;
+  nsdev = sqrt(nsdev);
+
+  bases = source->bases;
+  reads = source->reads;
+  gleng = reads[nscaffs].boff - nscaffs;
+  if (gleng <= RSHORT)
+    { fprintf(stderr,"Genome length is less than shortest read length !\n");
+      exit (1);
+    }
+
+  init_unorm();
+
+  weights = (double *) Malloc(sizeof(double)*(nscaffs+1),"Allocating contig weights");
+  if (weights == NULL)
+    exit (1);
+  
+  { double r;
+
+    r = 0.;
+    for (scf = 0; scf < nscaffs; scf++)
+      { weights[scf] = r/gleng;
+        r += reads[scf].coff;
+      }
+    weights[nscaffs] = 1.;
+  }
+
+  qv = (int) (1000 * (1.-ERROR));
+
+  rbuffer = NULL;
+  maxlen  = 0;
+  totlen  = 0;
+  totbp   = COVERAGE*gleng;
+  nreads  = 0;
+  while (totlen < totbp)
+    { int    len, sdl, ins, del, elen, slen, rbeg, rend;
+      int    j;
+      double uni;
+      char  *s, *t;
+
+      scf = bin_search(nscaffs,weights,drand48()) - 1;   //  Pick a scaffold with probabilitye
+                                                         //    proportional to its length
+
+      uni = drand48();
+      len = (int) exp(nmean + nsdev*sample_unorm(uni));    //  Pick a read length
+      if (len <= RSHORT)
+        continue;
+
+      // New sampler:
+
+      slen = reads[scf].coff;
+      rbeg = (int) (drand48()*slen);          //  Pick a spot for read start
+      if (CIRCULAR)
+        rend = (rbeg + len) % slen;           //  Wrap if circular
+      else
+        { if (drand48() < .5)                 //  Pick direction and trim if necessary
+            { rend = rbeg + len;              //    if not circular
+              if (rend > slen)
+                { rend = slen;
+                  len  = rend - rbeg;
+                }
+            }
+          else
+            { rend = rbeg;
+              rbeg = rbeg - len;
+              if (rbeg < 0)
+                { rbeg = 0;
+                  len  = rend;
+                }
+            }
+          if (len <= RSHORT)
+            continue;
+        }
+
+      // Old sampler:
+      //
+      // rbeg = (int) (drand48()*((reads[scf].coff-len)+.9999999));
+      // rend = rbeg + len;
+
+      sdl = (int) (len*ERROR);      //  Determine number of inserts *ins*, deletions *del,
+      ins = del = 0;                //    and substitions+deletions *sdl*.
+      for (j = 0; j < sdl; j++)
+        { double x = drand48();
+          if (x < INS_RATE)
+            ins += 1;
+          else if (x < IDL_RATE)
+            del += 1; 
+        }
+      sdl -= ins;
+      elen = len + (ins-del);
+
+      if (elen > maxlen)
+        { maxlen  = ((int) (1.2*elen)) + 1000;
+          rbuffer = (char *) Realloc(rbuffer,maxlen+3,"Allocating read buffer");
+          if (rbuffer == NULL)
+            exit (1);
+        }
+
+      t = rbuffer;
+      s = bases + (reads[scf].boff + rbeg);
+
+      //   Generate the string with errors.  NB that inserts occur randomly between source
+      //     characters, while deletions and substitutions occur on source characters.
+
+      while ((len+1) * drand48() < ins)
+        { *t++ = (char) (4.*drand48());
+          ins -= 1;
+        }
+      for ( ; len > 0; len--)
+        { if (len * drand48() >= sdl)
+            *t++ = *s;
+          else if (sdl * drand48() >= del)
+            { double x = 3.*drand48();
+              if (x >= *s)
+                x += 1.;
+              *t++ = (char) x;
+              sdl -= 1;
+            }
+          else
+            { del -= 1;
+              sdl -= 1;
+            }
+          s += 1;
+          if (*s == 4)
+            s = bases + reads[scf].boff;
+          while (len * drand48() < ins)
+            { *t++ = (char) (4.*drand48());
+              ins -= 1;
+            }
+        }
+      *t = 4;
+
+      if (drand48() >= FLIP_RATE)    //  Complement the string with probability FLIP_RATE.
+        { complement(elen,rbuffer);
+          j = rend;
+          rend = rbeg;
+          rbeg = j;
+        }
+
+      printf(">Sim/%d/%d_%d RQ=0.%d\n",nreads+1,0,elen,qv);
+      if (UPPER)
+        Upper_Read(rbuffer);
+      else
+        Lower_Read(rbuffer);
+      for (j = 0; j+WIDTH < elen; j += WIDTH)
+        printf("%.*s\n",WIDTH,rbuffer+j);
+      if (j < elen)
+        printf("%s\n",rbuffer+j);
+
+       if (MAP != NULL)
+         fprintf(MAP," %6d %9d %9d\n",scf,rbeg,rend);
+
+       totlen += elen;
+       nreads += 1;
+    }
+}
+
+int main(int argc, char *argv[])
+{ HITS_DB *source;
+  int      nscaffs;
+
+  //  Process command line
+
+  { int    i, j, k;
+    int    flags[128];
+    char  *eptr;
+
+    ARG_INIT("simulator");
+
+    RMEAN     = 10000;
+    RSDEV     = 2000;
+    ERROR     = .15;
+    COVERAGE  = 50.;
+    FLIP_RATE = .5;
+    RSHORT    = 4000;
+    HASR      = 0;
+    MAP       = NULL;
+    WIDTH     = 80;
+
+    j = 1;
+    for (i = 1; i < argc; i++)
+      if (argv[i][0] == '-')
+        switch (argv[i][1])
+        { default:
+            ARG_FLAGS("CU");
+            break;
+          case 'c':
+            ARG_REAL(COVERAGE)
+            if (COVERAGE < 0.)
+              { fprintf(stderr,"%s: Coverage must be non-negative (%g)\n",Prog_Name,COVERAGE);
+                exit (1);
+              }
+            break;
+          case 'e':
+            ARG_REAL(ERROR)
+            if (ERROR < 0. || ERROR > .5)
+              { fprintf(stderr,"%s: Error rate must be in [0,.5] (%g)\n",Prog_Name,ERROR);
+                exit (1);
+              }
+            break;
+          case 'f':
+            ARG_REAL(FLIP_RATE)
+            if (FLIP_RATE < 0. || FLIP_RATE > 1.)
+              { fprintf(stderr,"%s: Error rate must be in [0,1] (%g)\n",Prog_Name,FLIP_RATE);
+                exit (1);
+              }
+            break;
+          case 'm':
+            ARG_POSITIVE(RMEAN,"Mean read length")
+            break;
+          case 'r':
+            SEED = strtol(argv[i]+2,&eptr,10);
+            HASR = 1;
+            if (*eptr != '\0' || argv[i][2] == '\0')
+              { fprintf(stderr,"%s: -r argument is not an integer\n",Prog_Name);
+                exit (1);
+              }
+            break;
+          case 's':
+            ARG_NON_NEGATIVE(RSDEV,"Read length standard deviation")
+            break;
+          case 'x':
+            ARG_NON_NEGATIVE(RSHORT,"Read length minimum")
+            break;
+          case 'w':
+            ARG_NON_NEGATIVE(WIDTH,"Line width")
+            break;
+          case 'M':
+            MAP = Fopen(argv[i]+2,"w");
+            if (MAP == NULL)
+              exit (1);
+            break;
+        }
+      else
+        argv[j++] = argv[i];
+    argc = j;
+
+    CIRCULAR = flags['C'];
+    UPPER    = flags['U'];
+
+    if (argc != 2)
+      { fprintf(stderr,"Usage: %s %s\n",Prog_Name,Usage[0]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[1]);
+        fprintf(stderr,"       %*s %s\n",(int) strlen(Prog_Name),"",Usage[2]);
+        exit (1);
+      }
+  }
+
+  if (HASR)
+    srand48(SEED);
+  else
+    srand48(getpid());
+
+  //  Read and generate
+
+  source = load_and_fill(argv[1],&nscaffs);
+
+  shotgun(source,nscaffs);
+
+  if (MAP != NULL)
+    fclose(MAP);
+
+  exit (0);
+}
diff --git a/FALCON-examples/LICENSE b/FALCON-examples/LICENSE
new file mode 100644
index 0000000..8204a5c
--- /dev/null
+++ b/FALCON-examples/LICENSE
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Christopher Dunn
+Copyright (c) 2015 Pacific Biosciences
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/FALCON-examples/README.md b/FALCON-examples/README.md
new file mode 100644
index 0000000..55c68cf
--- /dev/null
+++ b/FALCON-examples/README.md
@@ -0,0 +1,24 @@
+# FALCON-examples
+Examples, with test-cases, and a useful place for testing
+
+To run, first build FALCON and its dependencies, and set-up your environment. (See FALCON-integrate in GitHub.) Then:
+```
+make run-ecoli
+```
+We do not recommend piping the output, since if you need to stop early (with Ctrl-C aka KeyboardInterrupt), your program might be killed before it has time to `qdel` the outstanding jobs.
+
+## Environment
+One way to set-up your environment is to use Python **virtualenv**. Before running these examples, activate your virtualenv in your shell or via FALCON-integrate.
+
+# Data
+## `*.fofn`
+These are "files of filenames". Since they are in the repo, they should be relative paths. (Relative to the current directory when they are used. But that is wrong. It should be relative to their own location. TODO)
+
+## Files
+The repo source is lightweight because it contains symlinks instead of the contents of large files. These are managed by **git-sym**.
+
+## [git-sym](https://github.com/cdunn2001/git-sym)
+This separates big-file caching from revision-control. There are several alternatives:
+
+# `data` directories
+Relying on **git-sym**, symlinks to the data are stored in `data/` sub-directories. The files should point (relatively) into `.git_sym/`, which contains more symlinks to a cache directory. `git_sym.makefile` should include a rule to produce files for those symlinks.
diff --git a/FALCON-examples/data/git-sym.makefile b/FALCON-examples/data/git-sym.makefile
new file mode 100644
index 0000000..8a6ca6e
--- /dev/null
+++ b/FALCON-examples/data/git-sym.makefile
@@ -0,0 +1,30 @@
+# Cache big-data files and create symlinks.
+# To use, create a symlink into ${GIT_SYM_DIR}, and then simply build it.
+# Be sure to 'make setup-cache' once first, or add so-called order-only prerequisites.
+#   http://www.gnu.org/software/make/manual/make.html#Prerequisite-Types
+#
+# This can become a real program someday. For now, keep it simple by recording exact build rules here.
+GIT_SYM_DIR:=../.git/git-sym
+GIT_SYM_CACHE:=${HOME}/git-sym-cache
+
+${GIT_SYM_DIR}/%: ${GIT_SYM_CACHE}/% | ${GIT_SYM_DIR}
+	ln -sf $< $@
+
+${GIT_SYM_CACHE}/foo: | ${GIT_SYM_CACHE}
+	cp -f ~/foo $@
+${GIT_SYM_CACHE}/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.1.subreads.fasta: | ${GIT_SYM_CACHE}
+	cd $(dirname $@); wget -c https://www.dropbox.com/s/tb78i5i3nrvm6rg/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.1.subreads.fasta
+${GIT_SYM_CACHE}/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.2.subreads.fasta: | ${GIT_SYM_CACHE}
+	cd $(dirname $@); wget -c https://www.dropbox.com/s/v6wwpn40gedj470/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.2.subreads.fasta
+${GIT_SYM_CACHE}/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.3.subreads.fasta: | ${GIT_SYM_CACHE}
+	cd $(dirname $@); wget -c https://www.dropbox.com/s/j61j2cvdxn4dx4g/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.3.subreads.fasta
+
+${GIT_SYM_CACHE}/lambda-creads.1.fasta: | ${GIT_SYM_CACHE}
+	cp -f /lustre/hpcprod/cdunn/data/lambda/cx.pb.fasta $@
+${GIT_SYM_CACHE}/lambda-hgap-3.creads.fasta: | ${GIT_SYM_CACHE}
+	cp -f /mnt/secondary/Smrtanalysis/userdata/jobs/082/082640/data/corrected.fasta $@
+
+setup-cache: | ${GIT_SYM_CACHE}
+
+${GIT_SYM_DIR} ${GIT_SYM_CACHE}:
+	mkdir -p $@
diff --git a/FALCON-examples/data/makefile b/FALCON-examples/data/makefile
new file mode 100644
index 0000000..4314a1c
--- /dev/null
+++ b/FALCON-examples/data/makefile
@@ -0,0 +1,16 @@
+ECOLI_FASTA:= \
+	ecoli.1.subreads.fasta \
+	ecoli.2.subreads.fasta \
+	ecoli.3.subreads.fasta
+
+ecoli: ${ECOLI_FASTA}
+ecoli2: ecoli
+lambda: lambda-creads.fasta lambda-hgap-3.creads.fasta
+lambda-hgap: lambda-hgap-3.creads.fasta
+arab: arab-creads.fasta
+synth0: synth0.fasta
+%.fasta:
+	git-sym update $@
+
+foo-test:
+	git-sym update $@
diff --git a/FALCON-examples/git-sym.makefile b/FALCON-examples/git-sym.makefile
new file mode 100644
index 0000000..2041a81
--- /dev/null
+++ b/FALCON-examples/git-sym.makefile
@@ -0,0 +1,31 @@
+# Cache big-data files.
+# This is used by git-sym.
+# Paths here should be absolute, but targets should be just filenames, sans path.
+# Note: '/lustre' paths are PacBio-internal.
+# Note: So-called order-only prerequisites can be useful.
+#   http://www.gnu.org/software/make/manual/make.html#Prerequisite-Types
+foo:
+	# This is just for testing git-sym. Sorry for touching home dir.
+	-touch ~/foo
+	cp -f ~/foo $@
+m140913_050931_42139_c100713652400000001823152404301535_s1_p0.1.subreads.fasta:
+	curl -L https://www.dropbox.com/s/tb78i5i3nrvm6rg/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.1.subreads.fasta
+m140913_050931_42139_c100713652400000001823152404301535_s1_p0.2.subreads.fasta:
+	curl -L https://www.dropbox.com/s/v6wwpn40gedj470/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.2.subreads.fasta
+m140913_050931_42139_c100713652400000001823152404301535_s1_p0.3.subreads.fasta:
+	curl -L https://www.dropbox.com/s/j61j2cvdxn4dx4g/m140913_050931_42139_c100713652400000001823152404301535_s1_p0.3.subreads.fasta
+lambda-creads.1.fasta:
+	cp -f /lustre/hpcprod/cdunn/data/lambda/cx.pb.fasta $@
+lambda-hgap-3.creads.fasta:
+	cp -f /lustre/hpcprod/cdunn/data/lambda/hgap-3.corrected.fasta $@
+synth0.pb.fasta:
+	curl -L https://www.dropbox.com/s/a80t8ll29gvt883/cx.pb.fasta.gz | zcat > $@
+	#cp -f /lustre/hpcprod/cdunn/data/synth0/cx.pb.fasta $@
+synth0-circ-20.pb.fasta:
+	curl -L https://www.dropbox.com/s/bjhcvp05u46o2qy/circ-20.pb.fasta.gz | zcat > $@
+	#cp -f /lustre/hpcprod/cdunn/data/synth0/circ-20.pb.fasta $@
+synth0.ref.fasta:
+	curl -L https://www.dropbox.com/s/jz0m0n2a1b19xyd/from.fasta.gz | zcat > $@
+	#cp -f /lustre/hpcprod/cdunn/data/synth0/from.fasta $@
+arab-creads.fasta:
+	cp -f /lustre/hpcprod/cdunn/data/arab_test/corrected.fasta $@
diff --git a/FALCON-examples/logging.ini b/FALCON-examples/logging.ini
new file mode 100644
index 0000000..5b1a966
--- /dev/null
+++ b/FALCON-examples/logging.ini
@@ -0,0 +1,46 @@
+[loggers]
+keys=root,pypeflow,fc_run
+
+[handlers]
+keys=stream,file_pypeflow,file_fc
+
+[formatters]
+keys=form01
+
+[logger_root]
+level=NOTSET
+handlers=stream
+
+[logger_pypeflow]
+level=NOTSET
+handlers=file_pypeflow
+qualname=pypeflow
+propagate=1
+
+[logger_fc_run]
+level=NOTSET
+handlers=file_fc
+qualname=fc_run
+propagate=1
+
+[handler_stream]
+class=StreamHandler
+level=INFO
+formatter=form01
+args=(sys.stderr,)
+
+[handler_file_pypeflow]
+class=FileHandler
+level=INFO
+formatter=form01
+args=('pypeflow.log',)
+
+[handler_file_fc]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('fc_run.log',)
+
+[formatter_form01]
+format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
+
diff --git a/FALCON-examples/makefile b/FALCON-examples/makefile
new file mode 100644
index 0000000..5b65c85
--- /dev/null
+++ b/FALCON-examples/makefile
@@ -0,0 +1,20 @@
+default:
+	@echo 'Try "make run-foo" for any sub-dir of run/.'
+run-%: setup-%
+	cd run/$*; fc_run.py fc_run.cfg logging.ini
+setup-%:
+	git-sym update run/$*
+	git-sym show run/$*
+	git-sym check run/$*
+# Our only integration test, for now.
+test:
+	python -c 'import pypeflow.common; print pypeflow.common'
+	python -c 'import falcon_kit; print falcon_kit.falcon'
+	${MAKE} run-synth0
+	${MAKE} -C run/synth0 test
+	${MAKE} -C run/synth0 clean
+	${MAKE} -C run/synth0 go0 # still test the old pypeflow too, for now
+	${MAKE} -C run/synth0 clean
+	${MAKE} -C run/synth0 go1 # should be the same as go
+
+.PHONY: default
diff --git a/examples/fc_run_arab.cfg b/FALCON-examples/run/arab/fc_run.cfg
similarity index 81%
copy from examples/fc_run_arab.cfg
copy to FALCON-examples/run/arab/fc_run.cfg
index aafa300..f494f83 100644
--- a/examples/fc_run_arab.cfg
+++ b/FALCON-examples/run/arab/fc_run.cfg
@@ -1,4 +1,6 @@
 [General]
+#job_type = local
+
 # list of files of the initial bas.h5 files
 input_fofn = input.fofn
 #input_fofn = preads.fofn
@@ -13,10 +15,9 @@ length_cutoff = 15000
 length_cutoff_pr = 15000
 
 
-jobqueue = your_queue
+jobqueue = production
 sge_option_da = -pe smp 8 -q %(jobqueue)s
 sge_option_la = -pe smp 2 -q %(jobqueue)s
-# 6 seems to small... 8 might be better for Dmel
 sge_option_pda = -pe smp 8 -q %(jobqueue)s
 sge_option_pla = -pe smp 2 -q %(jobqueue)s
 sge_option_fc = -pe smp 24 -q %(jobqueue)s
@@ -25,8 +26,8 @@ sge_option_cns = -pe smp 8 -q %(jobqueue)s
 pa_concurrent_jobs = 32
 ovlp_concurrent_jobs = 32
 
-pa_HPCdaligner_option =  -v -dal128 -t16 -e.70 -l1000 -s1000
-ovlp_HPCdaligner_option = -v -dal128 -t32 -h60 -e.96 -l500 -s1000
+pa_HPCdaligner_option =  -v -B128 -t16 -e.70 -l1000 -s1000
+ovlp_HPCdaligner_option = -v -B128 -t32 -h60 -e.96 -l500 -s1000
 
 pa_DBsplit_option = -x500 -s400
 ovlp_DBsplit_option = -x500 -s400
diff --git a/FALCON-examples/run/arab/input.fofn b/FALCON-examples/run/arab/input.fofn
new file mode 100644
index 0000000..be6fdd7
--- /dev/null
+++ b/FALCON-examples/run/arab/input.fofn
@@ -0,0 +1 @@
+data/arab-creads.fasta
diff --git a/examples/fc_run_ecoli.cfg b/FALCON-examples/run/ecoli/fc_run.cfg
similarity index 84%
copy from examples/fc_run_ecoli.cfg
copy to FALCON-examples/run/ecoli/fc_run.cfg
index ba4a5b4..c2d5682 100644
--- a/examples/fc_run_ecoli.cfg
+++ b/FALCON-examples/run/ecoli/fc_run.cfg
@@ -1,4 +1,6 @@
 [General]
+#job_type = local
+
 # list of files of the initial bas.h5 files
 input_fofn = input.fofn
 #input_fofn = preads.fofn
@@ -13,7 +15,7 @@ length_cutoff = 12000
 length_cutoff_pr = 12000
 
 
-jobqueue = your_queue
+jobqueue = production
 sge_option_da = -pe smp 8 -q %(jobqueue)s
 sge_option_la = -pe smp 2 -q %(jobqueue)s
 sge_option_pda = -pe smp 8 -q %(jobqueue)s
@@ -24,8 +26,8 @@ sge_option_cns = -pe smp 8 -q %(jobqueue)s
 pa_concurrent_jobs = 32
 ovlp_concurrent_jobs = 32
 
-pa_HPCdaligner_option =  -v -dal4 -t16 -e.70 -l1000 -s1000
-ovlp_HPCdaligner_option = -v -dal4 -t32 -h60 -e.96 -l500 -s1000
+pa_HPCdaligner_option =  -v -B4 -t16 -e.70 -l1000 -s1000
+ovlp_HPCdaligner_option = -v -B4 -t32 -h60 -e.96 -l500 -s1000
 
 pa_DBsplit_option = -x500 -s50
 ovlp_DBsplit_option = -x500 -s50
diff --git a/FALCON-examples/run/ecoli/input.fofn b/FALCON-examples/run/ecoli/input.fofn
new file mode 100644
index 0000000..e4d9b6b
--- /dev/null
+++ b/FALCON-examples/run/ecoli/input.fofn
@@ -0,0 +1,3 @@
+data/ecoli.1.subreads.fasta
+data/ecoli.2.subreads.fasta
+data/ecoli.3.subreads.fasta
diff --git a/examples/fc_run_ecoli_2.cfg b/FALCON-examples/run/ecoli2/fc_run.cfg
similarity index 86%
copy from examples/fc_run_ecoli_2.cfg
copy to FALCON-examples/run/ecoli2/fc_run.cfg
index cd8f91d..1bf351c 100644
--- a/examples/fc_run_ecoli_2.cfg
+++ b/FALCON-examples/run/ecoli2/fc_run.cfg
@@ -1,4 +1,6 @@
 [General]
+#job_type = local
+
 # list of files of the initial bas.h5 files
 input_fofn = input.fofn
 #input_fofn = preads.fofn
@@ -24,8 +26,8 @@ sge_option_cns = -pe smp 8 -q %(jobqueue)s
 pa_concurrent_jobs = 32
 ovlp_concurrent_jobs = 32
 
-pa_HPCdaligner_option =  -v -dal24 -t16 -e.70 -l1000 -s1000
-ovlp_HPCdaligner_option = -v -dal24 -t32 -h60 -e.96 -l500 -s1000
+pa_HPCdaligner_option =  -v -B24 -t16 -e.70 -l1000 -s1000
+ovlp_HPCdaligner_option = -v -B24 -t32 -h60 -e.96 -l500 -s1000
 
 pa_DBsplit_option = -x500 -s200
 ovlp_DBsplit_option = -x500 -s200
diff --git a/FALCON-examples/run/ecoli2/input.fofn b/FALCON-examples/run/ecoli2/input.fofn
new file mode 100644
index 0000000..e4d9b6b
--- /dev/null
+++ b/FALCON-examples/run/ecoli2/input.fofn
@@ -0,0 +1,3 @@
+data/ecoli.1.subreads.fasta
+data/ecoli.2.subreads.fasta
+data/ecoli.3.subreads.fasta
diff --git a/examples/fc_run_ecoli_2.cfg b/FALCON-examples/run/lambda-hgap/fc_run.cfg
similarity index 52%
copy from examples/fc_run_ecoli_2.cfg
copy to FALCON-examples/run/lambda-hgap/fc_run.cfg
index cd8f91d..e527fcb 100644
--- a/examples/fc_run_ecoli_2.cfg
+++ b/FALCON-examples/run/lambda-hgap/fc_run.cfg
@@ -1,19 +1,21 @@
 [General]
+job_type = local
+
 # list of files of the initial bas.h5 files
 input_fofn = input.fofn
 #input_fofn = preads.fofn
 
-input_type = raw
-#input_type = preads
+#input_type = raw
+input_type = preads
 
 # The length cutoff used for seed reads used for initial mapping
-length_cutoff = 12000
+length_cutoff = 1
 
 # The length cutoff used for seed reads usef for pre-assembly
-length_cutoff_pr = 12000
+length_cutoff_pr = 1
 
 
-jobqueue = your_queue
+jobqueue = production
 sge_option_da = -pe smp 8 -q %(jobqueue)s
 sge_option_la = -pe smp 2 -q %(jobqueue)s
 sge_option_pda = -pe smp 8 -q %(jobqueue)s
@@ -24,12 +26,12 @@ sge_option_cns = -pe smp 8 -q %(jobqueue)s
 pa_concurrent_jobs = 32
 ovlp_concurrent_jobs = 32
 
-pa_HPCdaligner_option =  -v -dal24 -t16 -e.70 -l1000 -s1000
-ovlp_HPCdaligner_option = -v -dal24 -t32 -h60 -e.96 -l500 -s1000
+pa_HPCdaligner_option =  -v -B4 -t16 -h1 -e.70 -l1 -s1000
+ovlp_HPCdaligner_option = -v -B4 -t32 -h1 -e.99 -l1 -s1000
 
-pa_DBsplit_option = -x500 -s200
-ovlp_DBsplit_option = -x500 -s200
+pa_DBsplit_option = -x5 -s50 -a
+ovlp_DBsplit_option = -x5 -s50 -a
 
-falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 4 --max_n_read 200 --n_core 6
+falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 1 --max_n_read 20000 --n_core 6
 
-overlap_filtering_setting = --max_diff 100 --max_cov 100 --min_cov 20 --bestn 10 --n_core 24
+overlap_filtering_setting = --max_diff 10000 --max_cov 100000 --min_cov 0 --bestn 1000 --n_core 24
diff --git a/FALCON-examples/run/lambda-hgap/input.fofn b/FALCON-examples/run/lambda-hgap/input.fofn
new file mode 100644
index 0000000..4cda474
--- /dev/null
+++ b/FALCON-examples/run/lambda-hgap/input.fofn
@@ -0,0 +1 @@
+data/lambda-hgap-3.creads.fasta
diff --git a/FALCON-examples/run/lambda-smb14/fc_run.cfg b/FALCON-examples/run/lambda-smb14/fc_run.cfg
new file mode 100644
index 0000000..bf644fc
--- /dev/null
+++ b/FALCON-examples/run/lambda-smb14/fc_run.cfg
@@ -0,0 +1,37 @@
+[General]
+use_tmpdir = True
+job_type = local
+input_fofn = input.fofn
+
+#input_type = raw
+input_type = preads
+
+# The length cutoff used for seed reads used for initial mapping
+length_cutoff = 1
+
+# The length cutoff used for seed reads usef for pre-assembly
+length_cutoff_pr = 1
+
+
+jobqueue = production
+sge_option_da = -pe smp 8 -q %(jobqueue)s
+sge_option_la = -pe smp 2 -q %(jobqueue)s
+sge_option_pda = -pe smp 8 -q %(jobqueue)s
+sge_option_pla = -pe smp 2 -q %(jobqueue)s
+sge_option_fc = -pe smp 24 -q %(jobqueue)s
+sge_option_cns = -pe smp 8 -q %(jobqueue)s
+
+pa_concurrent_jobs = 32
+ovlp_concurrent_jobs = 32
+
+#pa_HPCdaligner_option =  -v -B4 -t16 -h1 -e.70 -l1 -s1000
+#ovlp_HPCdaligner_option = -v -B4 -t32 -h1 -e.99 -l1 -s1000
+pa_HPCdaligner_option = -v -k25 -h35 -w5 -H1000 -e.95 -l40 -s1000 -t27
+ovlp_HPCdaligner_option = -v -k25 -h35 -w5 -H1000 -e.95 -l40 -s1000 -t27
+
+pa_DBsplit_option = -x5 -s50 -a
+ovlp_DBsplit_option = -x5 -s50 -a
+
+falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 1 --max_n_read 20000 --n_core 6
+
+overlap_filtering_setting = --max_diff 10000 --max_cov 100000 --min_cov 0 --bestn 1000 --n_core 4
diff --git a/FALCON-examples/run/lambda-smb14/input.fofn b/FALCON-examples/run/lambda-smb14/input.fofn
new file mode 100644
index 0000000..c6376c2
--- /dev/null
+++ b/FALCON-examples/run/lambda-smb14/input.fofn
@@ -0,0 +1 @@
+data/corrected.smb14.daz.fasta
diff --git a/FALCON-examples/run/lambda-smb14/logging.ini b/FALCON-examples/run/lambda-smb14/logging.ini
new file mode 100644
index 0000000..20a333d
--- /dev/null
+++ b/FALCON-examples/run/lambda-smb14/logging.ini
@@ -0,0 +1,46 @@
+[loggers]
+keys=root,pypeflow,fc_run
+
+[handlers]
+keys=stream,file_pypeflow,file_fc
+
+[formatters]
+keys=form01
+
+[logger_root]
+level=NOTSET
+handlers=stream
+
+[logger_pypeflow]
+level=NOTSET
+handlers=file_pypeflow
+qualname=pypeflow
+propagate=1
+
+[logger_fc_run]
+level=NOTSET
+handlers=file_fc
+qualname=fc_run
+propagate=1
+
+[handler_stream]
+class=StreamHandler
+level=INFO
+formatter=form01
+args=(sys.stderr,)
+
+[handler_file_pypeflow]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('pypeflow.log',)
+
+[handler_file_fc]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('fc_run.log',)
+
+[formatter_form01]
+format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
+
diff --git a/examples/fc_run_ecoli_2.cfg b/FALCON-examples/run/lambda/fc_run.cfg
similarity index 51%
copy from examples/fc_run_ecoli_2.cfg
copy to FALCON-examples/run/lambda/fc_run.cfg
index cd8f91d..c61075e 100644
--- a/examples/fc_run_ecoli_2.cfg
+++ b/FALCON-examples/run/lambda/fc_run.cfg
@@ -1,19 +1,22 @@
 [General]
+use_tmpdir = True
+job_type = local
+
 # list of files of the initial bas.h5 files
 input_fofn = input.fofn
 #input_fofn = preads.fofn
 
-input_type = raw
-#input_type = preads
+#input_type = raw
+input_type = preads
 
 # The length cutoff used for seed reads used for initial mapping
-length_cutoff = 12000
+length_cutoff = 1
 
 # The length cutoff used for seed reads usef for pre-assembly
-length_cutoff_pr = 12000
+length_cutoff_pr = 1
 
 
-jobqueue = your_queue
+jobqueue = production
 sge_option_da = -pe smp 8 -q %(jobqueue)s
 sge_option_la = -pe smp 2 -q %(jobqueue)s
 sge_option_pda = -pe smp 8 -q %(jobqueue)s
@@ -24,12 +27,12 @@ sge_option_cns = -pe smp 8 -q %(jobqueue)s
 pa_concurrent_jobs = 32
 ovlp_concurrent_jobs = 32
 
-pa_HPCdaligner_option =  -v -dal24 -t16 -e.70 -l1000 -s1000
-ovlp_HPCdaligner_option = -v -dal24 -t32 -h60 -e.96 -l500 -s1000
+pa_HPCdaligner_option =  -v -B4 -t16 -h1 -e.70 -l1 -s1000
+ovlp_HPCdaligner_option = -v -B4 -t32 -h1 -e.99 -l1 -s1000
 
-pa_DBsplit_option = -x500 -s200
-ovlp_DBsplit_option = -x500 -s200
+pa_DBsplit_option = -x5 -s50 -a
+ovlp_DBsplit_option = -x5 -s50 -a
 
-falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 4 --max_n_read 200 --n_core 6
+falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 1 --max_n_read 20000 --n_core 6
 
-overlap_filtering_setting = --max_diff 100 --max_cov 100 --min_cov 20 --bestn 10 --n_core 24
+overlap_filtering_setting = --max_diff 10000 --max_cov 100000 --min_cov 0 --bestn 1000 --n_core 24
diff --git a/FALCON-examples/run/lambda/input.fofn b/FALCON-examples/run/lambda/input.fofn
new file mode 100644
index 0000000..f5c086e
--- /dev/null
+++ b/FALCON-examples/run/lambda/input.fofn
@@ -0,0 +1 @@
+data/lambda-creads.fasta
diff --git a/FALCON-examples/run/synth0/check.py b/FALCON-examples/run/synth0/check.py
new file mode 100755
index 0000000..5cdd9fc
--- /dev/null
+++ b/FALCON-examples/run/synth0/check.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python2.7
+import sys
+def read_dna(ifs):
+    """Assume one contig.
+    """
+    header = ifs.readline()
+    dna = ""
+    for line in ifs:
+        dna += line.strip()
+    return dna
+def reverse_complement(dna):
+    complement = {"T": "A", "A": "T",
+            "G": "C", "C": "G"}
+    return ''.join([complement[base] for base in reversed(dna)])
+def compare_rot(ref, qry):
+    """Compare circular DNA.
+    """
+    if len(ref) != len(qry):
+        raise Exception('%d != %d' %(len(ref), len(qry)))
+    for i in range(len(ref)):
+        rot = ref[i:] + ref[:i]
+        if rot == qry:
+            return i
+    raise Exception('no match')
+def compare_circ(ref, qry):
+    """Compare circular DNA.
+    """
+    try:
+        d = 'n'
+        shift = compare_rot(ref, qry)
+    except Exception:
+        d = 'rc'
+        shift = compare_rot(reverse_complement(ref), qry)
+    print('shifted by %d (%s)' %(shift, d))
+def main(prog, ref='data/ref.fasta', qry='2-asm-falcon/p_ctg.fa'):
+    compare_circ(read_dna(open(ref)), read_dna(open(qry)))
+
+main(*sys.argv)
diff --git a/FALCON-examples/run/synth0/data/ref.fasta b/FALCON-examples/run/synth0/data/ref.fasta
new file mode 100644
index 0000000..9532755
--- /dev/null
+++ b/FALCON-examples/run/synth0/data/ref.fasta
@@ -0,0 +1,2 @@
+>synthetic/0/0_5000
+AACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGC [...]
diff --git a/FALCON-examples/run/synth0/data/synth0.fasta b/FALCON-examples/run/synth0/data/synth0.fasta
new file mode 100644
index 0000000..15086cc
--- /dev/null
+++ b/FALCON-examples/run/synth0/data/synth0.fasta
@@ -0,0 +1,1750 @@
+>m000_000/0/1899_3899
+CCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGA
+GTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGT
+CCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATG
+TCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGA
+AAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGC
+TGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTAT
+CTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTC
+GTCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAA
+AGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATC
+TCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCAT
+GGCTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGA
+TTGCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTC
+TGCAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTG
+GGCACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTAC
+GTTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGA
+TTCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAA
+AAGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAACATGTGCCACCGCGATCCCA
+CTGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATA
+AGCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGA
+CACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGT
+CAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTA
+CCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCT
+TGCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCG
+TAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAAC
+AAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGAT
+ACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGG
+CTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCC
+CAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCA
+CCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGG
+TTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCG
+AACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATA
+AATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTACATCT
+GGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTC
+ACACAGGAGTGGTTACGAAT
+>m000_000/1/2080_4080
+CAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAA
+AAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCT
+GGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATC
+TCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCG
+TCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAA
+GTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCT
+CGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATG
+GCTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGAT
+TGCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCT
+GCAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGG
+GCACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACG
+TTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGAT
+TCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAA
+AGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAACATGTGCCACCGCGATCCCAC
+TGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAA
+GCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGAC
+ACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTC
+AGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTAC
+CAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTT
+GCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGT
+AGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACA
+AGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATA
+CCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGC
+TCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCC
+AGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCAC
+CACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGT
+TACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGA
+ACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAA
+ATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTACATCTG
+GAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCA
+CACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCA
+GTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCACGTC
+TCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACTATGC
+GAGTGAGAGAAGCACATGCT
+>m000_000/2/3976_5976
+AGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCC
+TCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCA
+CGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTC
+AAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGT
+AGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCT
+TAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAA
+GACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAAC
+CTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCC
+TAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCA
+TGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTA
+GGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTG
+GGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTT
+AAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGA
+GATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCC
+TTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTAT
+CGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAG
+GTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCG
+CTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCC
+AAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCT
+TGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCG
+TTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGC
+TAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAG
+ATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGT
+GATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCAT
+TCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTT
+TGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAA
+ATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAA
+GTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTC
+TTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTG
+TCACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACA
+ATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGC
+GCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAAT
+ACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCC
+CGTACTTTATCGATCGAGCA
+>m000_000/3/4550_6550
+CGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGT
+ACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAA
+ACCTTGATGGATCTACGATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCC
+TATGACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGT
+GATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATAC
+CCCATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCG
+CGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTC
+GACAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTA
+TTAATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAG
+ATGGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGC
+TGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGA
+TGTTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTG
+GGCATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTT
+GCATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGG
+GCGGCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGT
+GCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGA
+AATAATGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGC
+GTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAG
+AGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTC
+CCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTG
+GTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAA
+TTTTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCC
+TATATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTC
+ACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCA
+ACCATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGA
+TCGAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTT
+GAACAGATAAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTA
+CATAATTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAA
+GTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTC
+CTTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATG
+CGACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTA
+AAATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCA
+GGATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATT
+CACCAGTCGACTTGCAAGGC
+>m000_000/4/733_2733
+GCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCA
+CGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGC
+TCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTT
+ATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGA
+GCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGA
+GCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCAC
+GTTTTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGATTAGCCATTCGCGCGC
+GCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCAC
+GAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAAC
+CCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACG
+CAAATATCTCCAAAATGCGACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATA
+AGGTTTCGGAGGTCGTAAAATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAG
+TGCCACCCTAGCATCCAGGATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTA
+GACGCTCGTACTAAATTCACCAGTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTA
+TATCCTAGCAGATTCTACCTCAATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGC
+GCGGCCCACACTCGCAACAAGGAAATGACGACCAGGGACGACATGATGTAGCGGGACTTA
+GGCACAATCGACTGGCGATCTTAGTTGACTTACAAAAGATCACGGGCCTACGCAATCGCC
+TAAGGAGCACCATGGCCCGGAGGCCTGCACAATAGACGTACGGCGCTCAAATACATTAGA
+TCGCCAAACAGGGAGTATAGTCATGACCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGA
+TGAAATGTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGATTCACGCGGCATTTGC
+AAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAATATGTGGAGTGCTGACC
+TCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGC
+CCTAATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATGCGCGAACGGATA
+ATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAAAAGGAAGCTACG
+CGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCGAATCGAGACAA
+CGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCC
+CAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGTAGTGGTACA
+CTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCA
+TTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAACGGACAGTA
+AGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAACACAATAATCA
+AGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTAGGGTAACTCGGG
+TAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCCTAAAGCCACCTT
+CCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCCTCACCGGGTTCG
+GGCAAGCAGGGTGGTAATCC
+>m000_000/5/1721_3721
+CTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCTGC
+ACAATAGACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGACC
+GCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCC
+CCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGAGT
+CAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCC
+TTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATGTC
+AATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAA
+AATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTG
+GAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCT
+CTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGT
+CGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAG
+TGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTC
+GGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGG
+CTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGATT
+GCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTG
+CAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGG
+CACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGT
+TTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATT
+CCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAAA
+GCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAACATGTGCCACCGCGATCCCACT
+GCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAG
+CGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACA
+CTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCA
+GTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTACC
+AGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTG
+CTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTA
+GGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAA
+GGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATAC
+CCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCT
+CTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCA
+GAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACC
+ACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTT
+ACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAA
+CCTGATTCTTCTCTCTCCGA
+>m000_000/6/3727_5727
+TTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAG
+TTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGC
+AGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCA
+GAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTG
+CAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAA
+TGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCC
+CACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACT
+TTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGG
+TATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTG
+TCCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGC
+TCTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAA
+TTCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTT
+ACGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTC
+TCCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTA
+CTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTT
+GTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACG
+ATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGG
+AGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCA
+GAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCC
+ATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGA
+AGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATAC
+GTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACG
+GGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAG
+CCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTC
+ATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCT
+AAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGT
+TGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAA
+TGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTAC
+CTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCC
+AGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCG
+GATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTC
+GGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGA
+CTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCC
+GGGGCCGTGTCACACAATAC
+>m000_000/7/1730_3730
+GATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCTGCACAATAGAC
+GTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGACCGCTATTCTC
+GCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCCCCGCATTCC
+CTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCC
+GGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAG
+GTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGA
+CACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTG
+GTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGG
+GGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGAT
+GCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGT
+ATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGAT
+TTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAAC
+ACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAA
+GAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACG
+ATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAAC
+CAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGG
+CAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTT
+CCACCCACCCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGAC
+TCCTCCTCGGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAG
+GACGACGTTTGGACCTCAGACTTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGT
+CCAGGTACTAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATG
+CTCCCAGTTTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTT
+GTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTA
+CTTTAACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCG
+AACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCG
+ATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGA
+TATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAAC
+AAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGC
+ACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGG
+CTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCA
+AAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAA
+ACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCT
+CAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCT
+TCTCTCTCCGATTGGACTTT
+>m000_000/8/4618_6618
+GAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGAT
+GGATCTACGATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAA
+TGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGC
+TGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTC
+AGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGG
+TTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGC
+GACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGA
+CAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCC
+GCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACC
+TGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATT
+CGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTAC
+CAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGT
+TACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGT
+ATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGA
+AAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGA
+TACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCC
+GGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTT
+GTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGA
+GGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTAT
+CGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTT
+GAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTC
+GTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGC
+TCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGC
+TTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTT
+CCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGAT
+AAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTT
+AGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTT
+CCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATT
+TTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACACTG
+TAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAA
+TCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGA
+ACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCAGTC
+GACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCAATT
+GCTCGCGAGTTATATGAAAT
+>m000_000/9/3537_5537
+CAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCC
+TGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAG
+CGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCT
+CCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTC
+GTAACAACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATT
+GGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGA
+ATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTC
+ACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGA
+CATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACAT
+GCTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAG
+ATCATGCACTTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATA
+GTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGA
+ATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATG
+ATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAG
+AGGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGG
+TACGGTACTTACGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATT
+TTCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGG
+GCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATC
+GGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGA
+TGGATCTACGATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACA
+ATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCG
+CTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCT
+CAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGG
+GTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAG
+CGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTG
+ACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGC
+CGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGAC
+CTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCAT
+TCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTA
+CCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGG
+TTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTG
+TATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAG
+AAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATG
+ATACGCATCGGATAGTTAAA
+>m000_000/10/3679_5679
+CACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCAC
+CCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACA
+TATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAA
+TTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATC
+ACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGA
+TTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCT
+TGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGA
+GTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAA
+ATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGC
+CAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAA
+TGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGAC
+CCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTG
+CGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAA
+TAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGC
+AGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGC
+GAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGG
+CGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAG
+GATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGAT
+AACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTT
+TAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGA
+CACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTC
+TTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTC
+AAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAG
+TATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGC
+ATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTA
+GTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAA
+CATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATC
+ATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGAT
+TAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCA
+CGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGA
+ATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATT
+ACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTC
+GGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTG
+TGTCGATAGCAGCAGTTAAT
+>m000_000/11/2224_4224
+TCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAG
+GTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGT
+AGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCC
+TGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAA
+CGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAACA
+CAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTAGGG
+TAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCCTAA
+AGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCCTCA
+CCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCGTCC
+AGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGCTC
+TCGACAGGATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTGGAC
+CTCAGACTTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAGACT
+GCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGAAC
+ATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAG
+GGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTA
+AATGAATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTA
+CACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGAC
+GATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGAC
+GCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCC
+TTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGC
+TGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGA
+CGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCA
+ATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTC
+GTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCG
+GATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTG
+GACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAA
+CAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAAT
+CGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCA
+GCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAA
+TTGCAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTAT
+CAATGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCG
+CCCCACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGC
+ACTTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTT
+GGGTATTAGTGTAGCCAGAT
+>m000_000/12/4046_6046
+ATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTAGA
+CCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATAT
+GAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAG
+TTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTA
+CTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAA
+TATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTT
+AACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTAT
+CCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTT
+TTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCG
+AGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAG
+CAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCAT
+AATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCT
+GGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTT
+ATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGG
+GAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAAT
+AGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTAC
+GTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATA
+ACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATT
+ATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGC
+GCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGA
+GCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATG
+CAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATG
+GCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAGTCT
+TGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAG
+GTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATTACAACCA
+GTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAG
+ACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGAT
+AGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATA
+CCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAA
+TCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGC
+GATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCTAAT
+GCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTAT
+CGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGATGAG
+TGAGGGAGCTGAATCCTAAT
+>m000_000/13/4271_6271
+GTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTC
+GTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCA
+CGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGG
+TAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCG
+TGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCT
+CAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGT
+TACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCC
+TACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTT
+TTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGG
+GAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCA
+TTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTG
+CCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCT
+TTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTA
+AGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCA
+TGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATAC
+TTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAAC
+GACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGAT
+GGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAA
+TGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAA
+CGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGA
+GGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATA
+GTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGC
+CTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTT
+AGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGG
+CCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAG
+TGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCAC
+ATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTC
+TCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGT
+AGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATG
+TATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCA
+TATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAACA
+CCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACC
+TCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAAC
+GCCCCATAAAGGCCCACGAA
+>m000_000/14/3617_5617
+GGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTT
+CTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCC
+ACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCA
+CATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATT
+AATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTA
+TCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGA
+GATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCT
+CTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCAC
+GAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCA
+AAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTA
+GCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTT
+AATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAG
+ACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACC
+TGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCT
+AATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCAT
+GCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAG
+GCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGG
+GGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTA
+AGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAG
+ATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCT
+TTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATC
+GACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGG
+TCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGC
+TCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCA
+AGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTT
+GCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGT
+TAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCT
+AACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGA
+TCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTG
+ATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATT
+CACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTT
+GAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAA
+TTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAG
+TCGGAGAAGACGGGCGGTCC
+>m000_000/15/3358_5358
+ACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCAC
+TTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTC
+CTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCC
+AGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCT
+GGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGC
+GATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTC
+CGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCG
+TAACAACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTG
+GCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAA
+TATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCA
+CTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGAC
+ATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATG
+CTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGA
+TCATGCACTTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAG
+TAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAA
+TAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGA
+TGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGA
+GGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGT
+ACGGTACTTACGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTT
+TCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGG
+CGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCG
+GAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGAT
+GGATCTACGATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAA
+TGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGC
+TGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTC
+AGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGG
+TTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGC
+GACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGA
+CAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCC
+GCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACC
+TGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATT
+CGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTAC
+CAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGT
+TACGTCCAATGAATGTGTGA
+>m000_000/16/1219_3219
+TTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGC
+TCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATA
+TCTCCAAAATGCGACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTT
+CGGAGGTCGTAAAATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCAC
+CCTAGCATCCAGGATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCT
+CGTACTAAATTCACCAGTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCT
+AGCAGATTCTACCTCAATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCC
+CACACTCGCAACAAGGAAATGACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACA
+ATCGACTGGCGATCTTAGTTGACTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGA
+GCACCATGGCCCGGAGGCCTGCACAATAGACGTACGGCGCTCAAATACATTAGATCGCCA
+AACAGGGAGTATAGTCATGACCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAAT
+GTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCC
+GATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCA
+AACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAAT
+CCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTA
+CGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTT
+CGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGA
+CGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCT
+TAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGC
+AAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAA
+ACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGT
+TGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCA
+ACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCT
+TGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAA
+AGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAG
+CAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTA
+GAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATG
+CCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAA
+CATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGA
+GGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATT
+TCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTC
+AAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATA
+GCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGT
+GAGAAGAGGGTCGAAAAGCT
+>m000_000/17/3533_5533
+AAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACG
+AGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAA
+CAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCT
+CTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACA
+ATTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGT
+GATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTT
+ACGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGG
+GGTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGG
+TAGACATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGC
+ACATGCTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCG
+CCAGATCATGCACTTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAA
+TATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAG
+GCGAATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCG
+GATGATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATC
+ACAGAGGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGT
+AGGGTACGGTACTTACGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGA
+TATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGC
+CCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACT
+CATCGGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACC
+TTGATGGATCTACGATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTAT
+GACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGAT
+CGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCC
+ATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGA
+TTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGAC
+AGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTA
+ATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATG
+GTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGT
+TGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGT
+TCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGC
+ATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCA
+TAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCG
+GCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCA
+AAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAAT
+AATGATACGCATCGGATAGT
+>m000_000/18/759_2759
+GAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTG
+AACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCG
+TATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCT
+CGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCT
+TTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTC
+CGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATA
+AGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTA
+GCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTC
+CGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTT
+TCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACACTGT
+AGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAAT
+CATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAA
+CATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCG
+ACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCAATTG
+CTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCCCACACTCGCAACAAGGAAAT
+GACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACAATCGACTGGCGATCTTAGTT
+GACTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCT
+GCACAATAGACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGA
+CCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGAT
+CCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGA
+GTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGT
+CCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATG
+TCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGA
+AAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGC
+TGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTAT
+CTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTC
+GTCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAA
+AGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATC
+TCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCAT
+GGCTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGA
+TTGCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTC
+TGCAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTG
+GGCACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTAC
+GTTTTTTTTTTCCACCCACC
+>m000_000/19/537_2537
+TTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAG
+TCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCT
+TGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGT
+CACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAA
+TTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCG
+CAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATA
+CCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCC
+GTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCT
+GCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAG
+CGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGA
+TTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAAT
+GACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCA
+TAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATA
+GGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACACTGTAGCAAGGACACACGGGTA
+TCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAATCATGACGCCCAGTTTGAA
+TTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAACATTCATTGCTAAGCTCT
+ACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCGACTTGCAAGGCTCGGACA
+CGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCAATTGCTCGCGAGTTATATGAAA
+TCGCCATCCCACATGCGCGGCCCACACTCGCAACAAGGAAATGACGACCAGGGACGACAT
+GATGTAGCGGGACTTAGGCACAATCGACTGGCGATCTTAGTTGACTTACAAAAGATCACG
+GGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCTGCACAATAGACGTACGGC
+GCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGACCGCTATTCTCGCCTCAG
+GGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGA
+TTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAAT
+ATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCT
+TTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGG
+AATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAAT
+GAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGG
+GGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGG
+TCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATT
+TTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTG
+GAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGG
+TTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGG
+CCGAACACAATAATCAAGCC
+>m000_000/20/4725_6725
+TTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAA
+GGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAA
+AATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTA
+GGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACC
+TTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGG
+CGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTAC
+CTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTG
+TCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGC
+GTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTA
+GCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAG
+GAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCG
+ATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGC
+GAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGG
+AGAGAAATAATGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCT
+CTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGT
+ACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTG
+TGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCG
+TCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGA
+CATAATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACAT
+AGCCCTATATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTA
+TTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGAT
+ACTCAACCATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAA
+TTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACG
+TCGTTGAACAGATAAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGT
+CACTACATAATTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCG
+CTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCG
+TCGTCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCA
+AAATGCGACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGG
+TCGTAAAATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGC
+ATCCAGGATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACT
+AAATTCACCAGTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGA
+TTCTACCTCAATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCCCACACT
+CGCAACAAGGAAATGACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACAATCGAC
+TGGCGATCTTAGTTGACTTA
+>m000_000/21/4106_6106
+CCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATAT
+GAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAG
+TTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTA
+CTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAA
+TATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTT
+AACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTAT
+CCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTT
+TTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCG
+AGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAG
+CAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCAT
+AATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCT
+GGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTT
+ATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGG
+GAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAAT
+AGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTAC
+GTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATA
+ACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATT
+ATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGC
+GCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGA
+GCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATG
+CAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATG
+GCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAGTCT
+TGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAG
+GTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATTACAACCA
+GTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAG
+ACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGAT
+AGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATA
+CCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAA
+TCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGC
+GATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCTAAT
+GCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTAT
+CGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGATGAG
+TGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTAAAC
+GCTTCACGTTTTTCACACGT
+>m000_000/22/3035_5035
+CAGACACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTC
+ATGTCAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGA
+GTTACCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAA
+AGCTTGCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAG
+CGCGTAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCC
+GAACAAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGC
+GGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGG
+TAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGA
+TGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGA
+GCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTG
+TTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCAT
+TTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGA
+GATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTAC
+ATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAA
+TGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGG
+TGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCC
+ACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCGAGATAGCGGAC
+TATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAA
+GTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATATGAAGCAATC
+ATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTT
+TGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGA
+GACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATT
+CACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAG
+CGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTATCCTCGGGTA
+CGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACCACC
+GTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCC
+CAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTG
+GCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCATAATCGGACA
+TCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGAC
+AAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGG
+CTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATG
+AACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGT
+TTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTG
+AGAAAATTGGCGTTATTAAT
+>m000_000/23/4883_6883
+AGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGT
+AATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAAC
+TACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATA
+ATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGA
+ATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTC
+TGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATT
+GGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCG
+ATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAG
+ATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAG
+TCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAA
+GAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATTACAA
+CCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAG
+AAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTC
+GATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACA
+ATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGT
+CAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATT
+AGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCT
+AATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTT
+TATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGAT
+GAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTA
+AACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGATTAGCC
+ATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAATGACCTT
+TAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGG
+CCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCC
+AGACGAAACGCAAATATCTCCAAAATGCGACACTGTAGCAAGGACACACGGGTATCTTAG
+ACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAATCATGACGCCCAGTTTGAATTCCTG
+ATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAACATTCATTGCTAAGCTCTACTAGG
+CAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCGACTTGCAAGGCTCGGACACGTGTT
+GCCCCAACTATATCCTAGCAGATTCTACCTCAATTGCTCGCGAGTTATATGAAATCGCCA
+TCCCACATGCGCGGCCCACACTCGCAACAAGGAAATGACGACCAGGGACGACATGATGTA
+GCGGGACTTAGGCACAATCGACTGGCGATCTTAGTTGACTTACAAAAGATCACGGGCCTA
+CGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCTGCACAATAGACGTACGGCGCTCAA
+ATACATTAGATCGCCAAACAGGGAGTATAGTCATGACCGCTATTCTCGCCTCAGGGGCGA
+GCGGCCCTGATGAAATGTGA
+>m000_000/24/4337_6337
+ACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACC
+TGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCT
+AATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCAT
+GCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAG
+GCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGG
+GGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTA
+AGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAG
+ATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCT
+TTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATC
+GACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGG
+TCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGC
+TCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCA
+AGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTT
+GCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGT
+TAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCT
+AACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGA
+TCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTG
+ATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATT
+CACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTT
+GAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAA
+TTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAG
+TCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCT
+TGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGT
+CACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAA
+TTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCG
+CAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATA
+CCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCC
+GTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCT
+GCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAG
+CGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGA
+TTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAAT
+GACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCA
+TAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATA
+GGCCCCAGACGAAACGCAAA
+>m000_000/25/770_2770
+GTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCA
+CATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGT
+CTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCG
+TAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTAT
+GTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGC
+ATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAAC
+ACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTAC
+CTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAA
+CGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGC
+TAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACACTGTAGCAAGGACAC
+ACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAATCATGACGCCCA
+GTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAACATTCATTGCT
+AAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCGACTTGCAAGGC
+TCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCAATTGCTCGCGAGTTA
+TATGAAATCGCCATCCCACATGCGCGGCCCACACTCGCAACAAGGAAATGACGACCAGGG
+ACGACATGATGTAGCGGGACTTAGGCACAATCGACTGGCGATCTTAGTTGACTTACAAAA
+GATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCTGCACAATAGAC
+GTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGACCGCTATTCTC
+GCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCCCCGCATTCC
+CTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCC
+GGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAG
+GTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGA
+CACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTG
+GTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGG
+GGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGAT
+GCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGT
+ATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGAT
+TTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAAC
+ACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAA
+GAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACG
+ATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAAC
+CAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGG
+CAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTT
+CCACCCACCCGTCCAGGGGC
+>m000_000/26/2718_4718
+GCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCT
+AGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCAT
+GCCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGA
+ACATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATG
+AGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGAT
+TTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCT
+CAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGAT
+AGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAG
+TGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGA
+ACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTG
+GACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAA
+AGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTT
+TCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAG
+AGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCG
+GGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAG
+GCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTC
+TCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCA
+CCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCAC
+ATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTA
+ATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTAT
+CACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAG
+ATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTC
+TTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACG
+AGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAA
+AATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAG
+CCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTA
+ATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGA
+CCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCT
+GCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTA
+ATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATG
+CAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGG
+CGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGG
+GCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAA
+GGATTCATAATCGGACATCC
+>m000_000/27/4643_6643
+TAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATT
+CATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACG
+CCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGG
+CTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACC
+AGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGT
+AATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAAC
+TACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATA
+ATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGA
+ATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTC
+TGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATT
+GGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCG
+ATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAG
+ATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAG
+TCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAA
+GAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATTACAA
+CCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAG
+AAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTC
+GATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACA
+ATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGT
+CAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATT
+AGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCT
+AATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTT
+TATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGAT
+GAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTA
+AACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGATTAGCC
+ATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAATGACCTT
+TAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGG
+CCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCC
+AGACGAAACGCAAATATCTCCAAAATGCGACACTGTAGCAAGGACACACGGGTATCTTAG
+ACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAATCATGACGCCCAGTTTGAATTCCTG
+ATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAACATTCATTGCTAAGCTCTACTAGG
+CAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCGACTTGCAAGGCTCGGACACGTGTT
+GCCCCAACTATATCCTAGCAGATTCTACCTCAATTGCTCGCGAGTTATATGAAATCGCCA
+TCCCACATGCGCGGCCCACA
+>m000_000/28/508_2508
+GAAATAATGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTA
+GCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACC
+AGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGC
+TCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCC
+TGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACAT
+AATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGC
+CCTATATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTG
+TCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACT
+CAACCATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTC
+GATCGAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCG
+TTGAACAGATAAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCAC
+TACATAATTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTG
+AAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCG
+TCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAA
+TGCGACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCG
+TAAAATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATC
+CAGGATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAA
+TTCACCAGTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTC
+TACCTCAATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCCCACACTCGC
+AACAAGGAAATGACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACAATCGACTGG
+CGATCTTAGTTGACTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGG
+CCCGGAGGCCTGCACAATAGACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAG
+TATAGTCATGACCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAAC
+AGTGAACGGATCCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCT
+CATCACCAAGAGTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTT
+CGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCG
+TGGCATACATGTCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGT
+GGTGCGCAGGAAAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGAT
+CCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAA
+CCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAG
+ATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGCAAGTACAAG
+CCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAAACGAGAGAT
+GGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGAT
+TATGGACGCATGGCTACGGT
+>m000_000/29/4132_6132
+GCCAGATCATGCACTTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGA
+ATATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCA
+GGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCC
+GGATGATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGAT
+CACAGAGGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCG
+TAGGGTACGGTACTTACGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGG
+ATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACG
+CCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTAC
+TCATCGGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAAC
+CTTGATGGATCTACGATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTA
+TGACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGA
+TCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCC
+CATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCG
+ATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGA
+CAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATT
+AATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGAT
+GGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTG
+TTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATG
+TTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGG
+CATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGC
+ATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGC
+GGCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGC
+AAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAA
+TAATGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGT
+ATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAG
+TATTTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCC
+CATGGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGGT
+TATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATT
+TTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTA
+TATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCAC
+ATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAAC
+CATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATC
+GAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGA
+ACAGATAAGATAATTAACAC
+>m000_000/30/1981_3981
+GGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGC
+CAATAACAAGGCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATG
+CGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAA
+AAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTC
+GAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTC
+GAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTC
+AGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAG
+CCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGC
+TAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGA
+ACACAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTA
+GGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCC
+TAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCC
+TCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCG
+TCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGG
+CTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTG
+GACCTCAGACTTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAG
+ACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTG
+AACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTT
+AAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGA
+TTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAA
+CTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGT
+GACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCC
+GACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACC
+CCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTC
+CGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTT
+CGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGA
+GCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGT
+TTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGAT
+CCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGA
+TTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAA
+CAACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCG
+AATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATAT
+GCAGCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTC
+GAATTGCAAGGACCGAGATT
+>m000_000/31/4971_6971
+ACAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTAT
+TAATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGA
+TGGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCT
+GTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGAT
+GTTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGG
+GCATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTG
+CATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGG
+CGGCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTG
+CAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAA
+ATAATGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCG
+TATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGA
+GTATTTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCC
+CCATGGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGG
+TTATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAAT
+TTTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCT
+ATATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCA
+CATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAA
+CCATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGAT
+CGAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTG
+AACAGATAAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTAC
+ATAATTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAG
+TCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCC
+TTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGC
+GACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAA
+AATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAG
+GATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTC
+ACCAGTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTAC
+CTCAATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCCCACACTCGCAAC
+AAGGAAATGACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACAATCGACTGGCGA
+TCTTAGTTGACTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCC
+GGAGGCCTGCACAATAGACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTAT
+AGTCATGACCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGT
+GAACGGATCCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCAT
+CACCAAGAGTCAGATGGCCG
+>m000_000/32/2059_4059
+CCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTA
+CGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTT
+CGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGA
+CGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCT
+TAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTAAGC
+AAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTTTAA
+ACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGT
+TGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCA
+ACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCT
+TGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAA
+AGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAG
+CAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTA
+GAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATG
+CCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAA
+CATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGA
+GGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATT
+TCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTC
+AAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATA
+GCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGT
+GAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAA
+CCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGG
+ACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAA
+GTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTT
+CGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGA
+GGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGG
+GTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGG
+CTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCT
+CACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCAC
+CCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACA
+TATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAA
+TTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATC
+ACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGA
+TTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCT
+TGTCGAGATAGCGGACTATG
+>m000_000/33/4928_6928
+GTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACG
+TCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGG
+GTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGC
+CCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCA
+TACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTA
+AACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTT
+GATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAAT
+GAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACC
+TAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCA
+GGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGG
+ATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCG
+GGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGAC
+TTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCG
+GGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCG
+GAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCT
+CACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGAT
+GTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTG
+CGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACT
+ATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCAT
+GCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTA
+ACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACT
+ACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGA
+AACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTTTCTGTTGTG
+GCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACACTGTAGCAAGGAC
+ACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAATCATGACGCC
+CAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAACATTCATTG
+CTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCGACTTGCAAG
+GCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCAATTGCTCGCGAGT
+TATATGAAATCGCCATCCCACATGCGCGGCCCACACTCGCAACAAGGAAATGACGACCAG
+GGACGACATGATGTAGCGGGACTTAGGCACAATCGACTGGCGATCTTAGTTGACTTACAA
+AAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCTGCACAATAG
+ACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGACCGCTATTC
+TCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCCCCGCATT
+CCCTAAGGATTCACGCGGCA
+>m000_000/34/1858_3858
+GGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGAT
+TCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAATA
+TGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTT
+TGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGGA
+ATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATG
+AAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGG
+GTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGT
+CTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTT
+TTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGG
+AAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGT
+TGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGC
+CGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAG
+CTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAG
+CCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATT
+GCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCAC
+CCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTC
+GGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGT
+TTGGACCTCAGACTTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTAC
+TAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGT
+TTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGA
+GTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACA
+AGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGC
+TAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGT
+TGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGG
+CCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAA
+ACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCAC
+TTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTC
+CTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCC
+AGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCT
+GGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGC
+GATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTC
+CGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCG
+TAACAACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTG
+GCGAATCGCAGCGTCAATTA
+>m000_000/35/2727_4727
+TAATCCCAGTACGTTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTAGAATACTG
+AGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATGCCGACGTC
+ATTCTCTATAAAAAGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAACATGTGCC
+ACCGCGATCCCACTGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGAGGCGGGTT
+CCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATTTCTTATTG
+CTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTG
+AGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATAGCAAATCT
+GTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAG
+GGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGC
+CGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGG
+CCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACC
+CGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACA
+GAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGA
+TCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATT
+GCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGC
+CTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCC
+GCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCC
+TCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTA
+CGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGG
+CAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTATCGA
+GCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTACTCC
+AGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCGAGA
+TAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTAGAC
+CTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATATG
+AAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAGT
+TTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTAC
+TTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAAT
+ATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTTA
+ACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTATC
+CTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTT
+TTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGA
+GTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAGC
+AGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCATA
+ATCGGACATCCTAGGTGGTT
+>m000_000/36/3186_5186
+CAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGACGA
+TAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGC
+CCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTT
+GGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTG
+GGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACG
+TGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAAT
+CCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGT
+ACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGA
+TGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGA
+CTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACA
+GTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCG
+CAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGC
+AGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATT
+GCAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCA
+ATGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCC
+CCACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCAC
+TTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGG
+GTATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGT
+GTCCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAG
+CTCTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAA
+ATTCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACT
+TACGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGT
+CTCCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCT
+ACTCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTT
+TGTGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTAC
+GATCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAG
+GAGTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATC
+AGAGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGC
+CATCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAG
+AAGTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATA
+CGTCTTTTCGCTCAAACTACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGAC
+GGGTAAGGCCAAGTATAATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACA
+GCCCATGGCTTGCATGAATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTT
+CATACTTCCGTTAGTTCTGC
+>m000_000/37/4287_6287
+TTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAAT
+ATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTTA
+ACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTATC
+CTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTT
+TTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGA
+GTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAGC
+AGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCATA
+ATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCTG
+GCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTA
+TGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGGG
+AGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATA
+GAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTACG
+TTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATAA
+CAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATTA
+TCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCG
+CATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGAG
+CTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATGC
+AATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATGG
+CAGACTACCGTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAGTCTT
+GGATAGCCGCCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGG
+TAAGCATGCGCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATTACAACCAG
+TAGTGGCCGCCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGA
+CGGGCGGTCCGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGATA
+GCAGCAGTTAATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATAC
+CTCTTTGCAGACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAAT
+CTCTCACGTTGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGCG
+ATTGGCTCTCTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCTAATG
+CCGCTTATCAGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATC
+GATCGAGCAGAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGATGAGT
+GAGGGAGCTGAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTAAACG
+CTTCACGTTTTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGATTAGCCATTC
+GCGCGCGCCGGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAATGACCTTTAGT
+CATCACGAGCTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCA
+CGAAACCCCGGCTCGTCGTC
+>m000_000/38/3264_5264
+GGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGG
+GGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTC
+ACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGA
+ACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTC
+CGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGT
+ATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGAC
+TGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCC
+GCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCA
+CCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGA
+CTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCC
+AGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTAT
+CGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTAC
+TCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCG
+AGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTA
+GACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCAT
+ATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGAT
+AGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGG
+TACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCG
+AATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGC
+TTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTT
+ATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCC
+TTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCG
+CGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACT
+AGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTC
+ATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGC
+CTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGC
+TTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCA
+GGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTA
+ATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACT
+ACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAA
+TAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAA
+TTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCT
+GCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTG
+GAGCTTGTGCGGGTCTGCCT
+>m000_000/39/556_2556
+CCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTC
+CGAAGGAGTACCAGAGTATTTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTT
+AATTGACTGTGCTCCCCATGGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCA
+GACGCCGCGTCCTGGTTATTATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGT
+TGTCTCAGACATAATTTTACTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCT
+CTTAAACATAGCCCTATATTTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATC
+AGCAGTCTATTGTCACATCAGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCA
+GAGCAGGATACTCAACCATCGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCT
+GAATCCTAATTCGATCGAACTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTT
+TTTCACACGTCGTTGAACAGATAAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCC
+GGCAGAGGTCACTACATAATTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAG
+CTTTTTGCGCTGAAGTCGTTTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCC
+GGCTCGTCGTCGTCCTTTCATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAA
+ATATCTCCAAAATGCGACACTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGG
+TTTCGGAGGTCGTAAAATTAAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGC
+CACCCTAGCATCCAGGATTTGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGAC
+GCTCGTACTAAATTCACCAGTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATAT
+CCTAGCAGATTCTACCTCAATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGCGCG
+GCCCACACTCGCAACAAGGAAATGACGACCAGGGACGACATGATGTAGCGGGACTTAGGC
+ACAATCGACTGGCGATCTTAGTTGACTTACAAAAGATCACGGGCCTACGCAATCGCCTAA
+GGAGCACCATGGCCCGGAGGCCTGCACAATAGACGTACGGCGCTCAAATACATTAGATCG
+CCAAACAGGGAGTATAGTCATGACCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGA
+AATGTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAA
+CCCGATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCC
+CCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCT
+AATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATGCGCGAACGGATAATT
+CTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGT
+GTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGG
+CGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAA
+GCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGTAGTGGTACACTA
+AGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCCTGGGGGTCATTT
+TAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGT
+TGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAACACAATAATCAAGC
+CCAACTATCTATTGAATCCA
+>m000_000/40/2274_4274
+TGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCC
+ATTTTTCAGTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCG
+CTGGAAGCCCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCC
+AGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAA
+GGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGG
+ATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGT
+TGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGT
+GATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCAC
+CCACCCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCT
+CCTCGGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAGGACG
+ACGTTTGGACCTCAGACTTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGTCCAG
+GTACTAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCC
+CAGTTTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGC
+GAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTT
+AACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACC
+CGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCA
+TGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATC
+ATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAA
+AAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACAC
+TCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGG
+ACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAA
+AGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGA
+GCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAAC
+AAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTC
+TCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAA
+TTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTG
+ATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTA
+CGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGG
+GTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGT
+AGACATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCA
+CATGCTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGC
+CAGATCATGCACTTTGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAAT
+ATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGG
+CGAATAGGTCGTGTCCCGTG
+>m000_000/41/3008_5008
+TCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAGGGCA
+TGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTAAATG
+AATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTACACA
+GTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGACGATA
+GCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGCCC
+CGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTTGG
+AGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGG
+GGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTG
+TCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCC
+CCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTAC
+TGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATG
+TTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACT
+TTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGT
+TATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCA
+GCGTCAATTAATTCCCAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAG
+AACTCCTTATCACTATCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGC
+AAGGACCGAGATTTACTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAAT
+GCATATCCTCTTGTCGAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCC
+ACCACCCACGAGTCTAGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTT
+TGTGACTCAAAATCATATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGT
+ATTAGTGTAGCCAGATAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGT
+CCCGTGCTTAATGAGGTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCT
+CTCGTCAAGACCCTCGAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAAT
+TCACGAACCTGCGAGCTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTA
+CGGTAGCCTAATAGTTATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCT
+CCGTGGCATGCAGTCCTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTAC
+TCTCAGTAGGCGAGCGCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTG
+TGTTACTGGGGCGACTAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGA
+TCCTACTTAAGGATTCATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGA
+GTTTTAGAGATAACGCCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAG
+AGGGAGCCTTTTAGGCTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCA
+TCATTTATCGACACCAGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAA
+GTGCCCAGGTCTTGTAATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACG
+TCTTTTCGCTCAAACTACGT
+>m000_000/42/3392_5392
+AGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTA
+GGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTT
+TGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCT
+AGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGC
+CTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGT
+CATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACG
+TGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTACGTGT
+TACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGA
+TAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCC
+CGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAG
+CCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCGAGATAGCG
+GACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTAGACCTAGT
+CAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATATGAAGCA
+ATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACA
+CTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAA
+GGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCA
+ATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTTAACTCA
+GAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTATCCTCGG
+GTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACC
+ACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAA
+TCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGT
+TTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCATAATCGG
+ACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTA
+GACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAG
+AGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGA
+ATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATC
+GGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTG
+CTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCC
+GAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAAC
+AACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGC
+TGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGT
+GCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAA
+TACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGAC
+TACCGTCGACCCGATAGGGC
+>m000_000/43/3383_5383
+CACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTG
+AACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTT
+CCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTG
+TATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGA
+CTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACC
+CGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTC
+ACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATG
+ACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCC
+CAGGCAAGATAATGTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTA
+TCGAGCTCCCGGTGCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTA
+CTCCAGTAGCCCACGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTC
+GAGATAGCGGACTATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCT
+AGACCTAGTCAAGTGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCA
+TATGAAGCAATCATGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGA
+TAGTTTACACTTTGACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAG
+GTACTTGAAGGAGACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTC
+GAATATGCAATTCACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAG
+CTTAACTCAGAGCGTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGT
+TATCCTCGGGTACGTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTC
+CTTTTTACCACCGTCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGC
+GCGAGTAAATCCCAGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGAC
+TAGCAGAGTTTGGCTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATT
+CATAATCGGACATCCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACG
+CCTGGCCTAGACAAAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGG
+CTTATGAAGAGGCTAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACC
+AGGGAGTGAATGAACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGT
+AATAGAATCGGTTTCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAAC
+TACGTTCTGCTGAGAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATA
+ATAACAGCCGAAGGAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGA
+ATTATCAACAACGGCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTC
+TGCGCATGCTGTCAGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATT
+GGAGCTTGTGCGGGTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCG
+ATGCAATAATACGGACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAG
+ATGGCAGACTACCGTCGACC
+>m000_000/44/155_2155
+ACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTCAGTGCGCGCGTTGATGTTC
+ATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGGGTCTGCCTAGCGTGGGCAT
+TACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACGGACGCAAAGGAGTTGCATA
+GGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGC
+TGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAA
+AGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAA
+TGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATT
+GCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTAT
+TTTGTGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCAT
+GGAGGTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTAT
+TATCGAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTA
+CTTGAACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATAT
+TTCGTATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATC
+AGCTCGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCAT
+CGCTTTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAA
+CTTCCGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACA
+GATAAGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAA
+TTTAGCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGT
+TTTCCGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTC
+ATTTTCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACA
+CTGTAGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATT
+AAATCATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATT
+TGAACATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCA
+GTCGACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCA
+ATTGCTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCCCACACTCGCAACAAGG
+AAATGACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACAATCGACTGGCGATCTT
+AGTTGACTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAG
+GCCTGCACAATAGACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTC
+ATGACCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAAC
+GGATCCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACC
+AAGAGTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCA
+ACGTCCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATA
+CATGTCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGC
+AGGAAAAATCAACTGGTTCA
+>m000_000/45/1871_3871
+GATGAAATGTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGATTCACGCGGCATTT
+GCAAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAATATGTGGAGTGCTGA
+CCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGCCAATAACAAG
+GCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATGCGCGAACGGA
+TAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAAAAGGAAGCTA
+CGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCGAATCGAGAC
+AACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCGAGGTTAGCT
+CCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCAGTAGTGGTA
+CACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGCCCTGGGGGT
+CATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCTAACGGACAG
+TAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAACACAATAAT
+CAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTAGGGTAACTCG
+GGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCCTAAAGCCACC
+TTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCCTCACCGGGTT
+CGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCGTCCAGGGGCA
+TCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGCTCTCGACAG
+GATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTGGACCTCAGAC
+TTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAGACTGCGGGCT
+AGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGAACATAGTCC
+TGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTAAGGGCATGC
+TCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGATTAAATGAAT
+CAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAACTACACAGTG
+AGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTGACGATAGCA
+CGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCGACGCCCCGT
+AGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCCCCTTGGAGT
+AACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCCGCTGGGGGC
+TTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCT
+ATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCA
+TCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTTTCGTACTGT
+GGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATCCGGATGTTG
+ATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGATTGGACTTTA
+CAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAACAACAGTTAT
+TGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCG
+TCAATTAATTCCCAGGCAAG
+>m000_000/46/3636_5636
+TGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATT
+TCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAG
+ATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTACA
+TCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAAT
+GTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGT
+GCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCA
+CGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACT
+ATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAAG
+TGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATATGAAGCAATCA
+TGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTT
+GACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGAG
+ACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATTC
+ACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAGC
+GTCGGCACTGCTCTCGTAGGGTACGGTACTTACGGTAGCCTAATAGTTATCCTCGGGTAC
+GTGGGCTCGGTTTAGGATATTTTCCGTGGTCTCCGTGGCATGCAGTCCTTTTTACCACCG
+TCTCTCCGGGTTGACGCCCGGGCGGATTCTACTCTCAGTAGGCGAGCGCGAGTAAATCCC
+AGCGTGCTCCCTGTACTCATCGGAAACGTTTGTGTTACTGGGGCGACTAGCAGAGTTTGG
+CTTAGCCGGTGAAAACCTTGATGGATCTACGATCCTACTTAAGGATTCATAATCGGACAT
+CCTAGGTGGTTTCCTATGACAATGATTCAGGAGTTTTAGAGATAACGCCTGGCCTAGACA
+AAGCATTAAGGCGTGATCGCGCTGAGCATCAGAGGGAGCCTTTTAGGCTTATGAAGAGGC
+TAGAGGTAAAATACCCCATCTCAGCTCAGCCATCATTTATCGACACCAGGGAGTGAATGA
+ACCGTGTTAGGCCGCGATTGGGTTTTGCAGAAGTGCCCAGGTCTTGTAATAGAATCGGTT
+TCTGAAACCTTTTCGACAGAGCGACGTATACGTCTTTTCGCTCAAACTACGTTCTGCTGA
+GAAAATTGGCGTTATTAATTGACAGACGACGGGTAAGGCCAAGTATAATAACAGCCGAAG
+GAGGGTTACCTAAGATGGTGCCGCTATACAGCCCATGGCTTGCATGAATTATCAACAACG
+GCTCGGCTGTCAGCTGTTGACCTGACTCTTCATACTTCCGTTAGTTCTGCGCATGCTGTC
+AGTGCGCGCGTTGATGTTCATTCGCGTTTCTAAACGACGCTAACATTGGAGCTTGTGCGG
+GTCTGCCTAGCGTGGGCATTACCAGGCTCGTTGATGGAAGATCATCGATGCAATAATACG
+GACGCAAAGGAGTTGCATAGGTTACGTCCAATGAATGTGTGATTAAGATGGCAGACTACC
+GTCGACCCGATAGGGCGGCTGTATGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCG
+CCCACCGGCGAGGTGCAAAAGAAAAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGC
+GCAAAACGGAGAGAAATAATGATACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCG
+CCTTGTTCTCTAGCGTATTGCCGGCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTC
+CGAAGGAGTACCAGAGTATT
+>m000_000/47/2436_4436
+ATCTCGGGTCTAACACCCAGGTTGCTAACGGACAGTAAGTTGTTGCCACGATTATGGACG
+CATGGCTACGGTAAGAAAGGGCCGAACACAATAATCAAGCCCAACTATCTATTGAATCCA
+GGATTGCGGCAACGATGGATAGCTAGGGTAACTCGGGTAGCCTTGTCGTGTACGGAGATG
+CTCTGCAGAAAAACCAGTTGAGCCCTAAAGCCACCTTCCGGAAAGGCACTCTGCCAACTA
+CTGGGCACTCAGGGCAGTGATTGCCTCACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAG
+TACGTTTTTTTTTTCCACCCACCCGTCCAGGGGCATCTAGCTAGAATACTGAGCTCCTTT
+CGATTCCCTTCGACTCCTCCTCGGGCTCTCGACAGGATCCATGCCGACGTCATTCTCTAT
+AAAAAGCCTACAAGGACGACGTTTGGACCTCAGACTTCACGAACATGTGCCACCGCGATC
+CCACTGCTCATTGTCCAGGTACTAGACTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGT
+ATAAGCGCCTAATGCTCCCAGTTTGAACATAGTCCTGCTGATTTCTTATTGCTTAGACAC
+AGACACTTCACCTTGTGCGAGAGTTAAGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCA
+TGTCAGTGCTAGTACTTTAACAAGATTAAATGAATCAGAGATAGCAAATCTGTGCATGAG
+TTACCAGGAACTCGAACCCGGCTAACTACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAA
+GCTTGCTGGTCTCGATCATGGTTGTGACGATAGCACGTCCGAACCGCCGGCCGAATGAGC
+GCGTAGGTGAACGATATCATGGCCCGACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCG
+AACAAGGGTATAACAAAAAAAAACCCCCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCG
+GATACCCTTGGTGCACACTCACTTCCGCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGT
+AGGCTCTGATGGGGCTGGACTCCTTCGACGTGTCTATTTGAGAGGTTCCGATCTTTTGAT
+GCCCAGAAGCACCAAAAAAGCCAGAGCAATCCCCATCTTGCGGGTTGTATTGCGCTAGAG
+CCACCACACGCAAAACGAGCCTGGTTTCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGT
+TGGTTACTCGGCCTCAACAAGCGATCCGGATGTTGATATTTCTCACCCGCCGCGGTCATT
+TCGAACCTGATTCTTCTCTCTCCGATTGGACTTTACAGGCCACCCTCACCCTCACGTGAG
+ATAAATATGCCTGAACAATTCGTAACAACAGTTATTGCTCACATATGACTACGTGTTACA
+TCTGGAGTGCCCGTAGTGATTGGCGAATCGCAGCGTCAATTAATTCCCAGGCAAGATAAT
+GTCACACAGGAGTGGTTACGAATATGCAGCAGAACTCCTTATCACTATCGAGCTCCCGGT
+GCCAGTAGCTAACGCGGGGTCACTCGAATTGCAAGGACCGAGATTTACTCCAGTAGCCCA
+CGTCTCCCAGAGTTAGGTAGACATCTATCAATGCATATCCTCTTGTCGAGATAGCGGACT
+ATGCGAGTGAGAGAAGCACATGCTGCCGCCCCACCACCCACGAGTCTAGACCTAGTCAAG
+TGCTTTACAATACATCGCCAGATCATGCACTTTGTGACTCAAAATCATATGAAGCAATCA
+TGGTCGGCGGTGGCGAATATAGTAACTTGGGTATTAGTGTAGCCAGATAGTTTACACTTT
+GACTCTAGAACACCCAGGCGAATAGGTCGTGTCCCGTGCTTAATGAGGTACTTGAAGGAG
+ACCTAAGGCCTTCCCCGGATGATGTCTCAGCTCTCGTCAAGACCCTCGAATATGCAATTC
+ACTCCAAGGGCAAGATCACAGAGGCAACAAATTCACGAACCTGCGAGCTTAACTCAGAGC
+GTCGGCACTGCTCTCGTAGG
+>m000_000/48/339_2339
+ACGTCCAATGAATGTGTGATTAAGATGGCAGACTACCGTCGACCCGATAGGGCGGCTGTA
+TGTCTTACCTAACGCATTCACGAGTCTTGGATAGCCGCCCACCGGCGAGGTGCAAAAGAA
+AAAGTCCCAGGAGGGTTTGAATAAGAGGTAAGCATGCGCAAAACGGAGAGAAATAATGAT
+ACGCATCGGATAGTTAAATTACAACCAGTAGTGGCCGCCTTGTTCTCTAGCGTATTGCCG
+GCTCAGTCGGGCCTCAAGTCGGAGAAGACGGGCGGTCCGAAGGAGTACCAGAGTATTTTG
+TGATGAGACTTTAGTTCTTGTGTCGATAGCAGCAGTTAATTGACTGTGCTCCCCATGGAG
+GTGAGTCCGGGGCCGTGTCACACAATACCTCTTTGCAGACGCCGCGTCCTGGTTATTATC
+GAAAGGTCGGAGTGACAATTCAGTCAATCTCTCACGTTGTCTCAGACATAATTTTACTTG
+AACAGGGCTCACATGGCGCAGATTAGCGATTGGCTCTCTTAAACATAGCCCTATATTTCG
+TATAACGATGTCTCAATACCATCTAATGCCGCTTATCAGCAGTCTATTGTCACATCAGCT
+CGGATGGTGCGTAGCCCCGTACTTTATCGATCGAGCAGAGCAGGATACTCAACCATCGCT
+TTATTTACTATGTATTCTGCTGATGAGTGAGGGAGCTGAATCCTAATTCGATCGAACTTC
+CGGAGCCATGCATATCAGCGTCTAAACGCTTCACGTTTTTCACACGTCGTTGAACAGATA
+AGATAATTAACACCCTGATTAGCCATTCGCGCGCGCCGGCAGAGGTCACTACATAATTTA
+GCCGCGACTACCTCCAATGACCTTTAGTCATCACGAGCTTTTTGCGCTGAAGTCGTTTTC
+CGGTCTGGAAACGCCCCATAAAGGCCCACGAAACCCCGGCTCGTCGTCGTCCTTTCATTT
+TCTGTTGTGGCTAGCATAGGCCCCAGACGAAACGCAAATATCTCCAAAATGCGACACTGT
+AGCAAGGACACACGGGTATCTTAGACCCCTAATAAGGTTTCGGAGGTCGTAAAATTAAAT
+CATGACGCCCAGTTTGAATTCCTGATCGTCCAAGTGCCACCCTAGCATCCAGGATTTGAA
+CATTCATTGCTAAGCTCTACTAGGCAAGAGTCTAGACGCTCGTACTAAATTCACCAGTCG
+ACTTGCAAGGCTCGGACACGTGTTGCCCCAACTATATCCTAGCAGATTCTACCTCAATTG
+CTCGCGAGTTATATGAAATCGCCATCCCACATGCGCGGCCCACACTCGCAACAAGGAAAT
+GACGACCAGGGACGACATGATGTAGCGGGACTTAGGCACAATCGACTGGCGATCTTAGTT
+GACTTACAAAAGATCACGGGCCTACGCAATCGCCTAAGGAGCACCATGGCCCGGAGGCCT
+GCACAATAGACGTACGGCGCTCAAATACATTAGATCGCCAAACAGGGAGTATAGTCATGA
+CCGCTATTCTCGCCTCAGGGGCGAGCGGCCCTGATGAAATGTGACGAACAGTGAACGGAT
+CCCCGCATTCCCTAAGGATTCACGCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGA
+GTCAGATGGCCGGCCAATATGTGGAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGT
+CCTTAGGTGAGGTTAGCTTTGCCAATAACAAGGCCCTAATCCATCACCGTGGCATACATG
+TCAATTTTTGACACTCGGAATGCGCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGA
+AAAATCAACTGGTTCAATGAAAAAGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGC
+TGGAAACGGGGGGATGGGGGTCGAATCGAGACAACGGCGACGGGGCCAACCCATGTGTAT
+CTCTCTCGGATGCGCTGGTCTCGAGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTC
+GTCGTGGCTGTATCCATTTT
+>m000_000/49/1862_3862
+AGCGGCCCTGATGAAATGTGACGAACAGTGAACGGATCCCCGCATTCCCTAAGGATTCAC
+GCGGCATTTGCAAACCCGATTCTGCTCATCACCAAGAGTCAGATGGCCGGCCAATATGTG
+GAGTGCTGACCTCCCCAAACCCTGTTCGAAGCAACGTCCTTAGGTGAGGTTAGCTTTGCC
+AATAACAAGGCCCTAATCCATCACCGTGGCATACATGTCAATTTTTGACACTCGGAATGC
+GCGAACGGATAATTCTACGCGTCTGTGGTGCGCAGGAAAAATCAACTGGTTCAATGAAAA
+AGGAAGCTACGCGTGTTCGCATTGATCCTGAGTTAGCTGGAAACGGGGGGATGGGGGTCG
+AATCGAGACAACGGCGACGGGGCCAACCCATGTGTATCTCTCTCGGATGCGCTGGTCTCG
+AGGTTAGCTCCCAAGCTTAGGTCGAGATCTAGTGCTCGTCGTGGCTGTATCCATTTTTCA
+GTAGTGGTACACTAAGCAAGTACAAGCCTCCAGAGAAAGTGTCGCGATTTCGCTGGAAGC
+CCTGGGGGTCATTTTAAACGAGAGATGGGTTCTTATCTCGGGTCTAACACCCAGGTTGCT
+AACGGACAGTAAGTTGTTGCCACGATTATGGACGCATGGCTACGGTAAGAAAGGGCCGAA
+CACAATAATCAAGCCCAACTATCTATTGAATCCAGGATTGCGGCAACGATGGATAGCTAG
+GGTAACTCGGGTAGCCTTGTCGTGTACGGAGATGCTCTGCAGAAAAACCAGTTGAGCCCT
+AAAGCCACCTTCCGGAAAGGCACTCTGCCAACTACTGGGCACTCAGGGCAGTGATTGCCT
+CACCGGGTTCGGGCAAGCAGGGTGGTAATCCCAGTACGTTTTTTTTTTCCACCCACCCGT
+CCAGGGGCATCTAGCTAGAATACTGAGCTCCTTTCGATTCCCTTCGACTCCTCCTCGGGC
+TCTCGACAGGATCCATGCCGACGTCATTCTCTATAAAAAGCCTACAAGGACGACGTTTGG
+ACCTCAGACTTCACGAACATGTGCCACCGCGATCCCACTGCTCATTGTCCAGGTACTAGA
+CTGCGGGCTAGTAATGAGGCGGGTTCCTCAAAGTATAAGCGCCTAATGCTCCCAGTTTGA
+ACATAGTCCTGCTGATTTCTTATTGCTTAGACACAGACACTTCACCTTGTGCGAGAGTTA
+AGGGCATGCTCCGGCTCAAGTCTTGAGCAAGTCATGTCAGTGCTAGTACTTTAACAAGAT
+TAAATGAATCAGAGATAGCAAATCTGTGCATGAGTTACCAGGAACTCGAACCCGGCTAAC
+TACACAGTGAGGAAAGTGAGAAGAGGGTCGAAAAGCTTGCTGGTCTCGATCATGGTTGTG
+ACGATAGCACGTCCGAACCGCCGGCCGAATGAGCGCGTAGGTGAACGATATCATGGCCCG
+ACGCCCCGTAGAGCTGGACTGGGGGCCAATGCCGAACAAGGGTATAACAAAAAAAAACCC
+CCTTGGAGTAACTGAAAGTCTCACCCGCGCAGCGGATACCCTTGGTGCACACTCACTTCC
+GCTGGGGGCTTACGTTTCGTGAACAGAGTAGGGTAGGCTCTGATGGGGCTGGACTCCTTC
+GACGTGTCTATTTGAGAGGTTCCGATCTTTTGATGCCCAGAAGCACCAAAAAAGCCAGAG
+CAATCCCCATCTTGCGGGTTGTATTGCGCTAGAGCCACCACACGCAAAACGAGCCTGGTT
+TCGTACTGTGGTGGAGGCTGACTGCCTAGCCTGTTGGTTACTCGGCCTCAACAAGCGATC
+CGGATGTTGATATTTCTCACCCGCCGCGGTCATTTCGAACCTGATTCTTCTCTCTCCGAT
+TGGACTTTACAGGCCACCCTCACCCTCACGTGAGATAAATATGCCTGAACAATTCGTAAC
+AACAGTTATTGCTCACATATGACTACGTGTTACATCTGGAGTGCCCGTAGTGATTGGCGA
+ATCGCAGCGTCAATTAATTC
diff --git a/FALCON-examples/run/synth0/fc_run.cfg b/FALCON-examples/run/synth0/fc_run.cfg
new file mode 100644
index 0000000..91c1b01
--- /dev/null
+++ b/FALCON-examples/run/synth0/fc_run.cfg
@@ -0,0 +1,47 @@
+[General]
+use_tmpdir = true
+job_type = local
+#job_type = sge
+#stop_all_jobs_on_failure = true
+
+# list of files of the initial bas.h5 files
+input_fofn = input.fofn
+#input_fofn = preads.fofn
+
+input_type = raw
+#input_type = preads
+
+# The length cutoff used for seed reads used for initial mapping
+#length_cutoff = 1
+genome_size = 5000
+seed_coverage = 20
+
+# The length cutoff used for seed reads usef for pre-assembly
+length_cutoff_pr = 1
+
+
+jobqueue = production
+sge_option_da = -pe smp 8 -q %(jobqueue)s
+sge_option_la = -pe smp 2 -q %(jobqueue)s
+sge_option_pda = -pe smp 8 -q %(jobqueue)s
+sge_option_pla = -pe smp 2 -q %(jobqueue)s
+sge_option_fc = -pe smp 24 -q %(jobqueue)s
+sge_option_cns = -pe smp 8 -q %(jobqueue)s
+
+pa_concurrent_jobs = 32
+cns_concurrent_jobs = 32
+ovlp_concurrent_jobs = 32
+
+pa_HPCdaligner_option =   -v -B4 -t50 -h1 -e.99 -w1 -l1 -s1000
+ovlp_HPCdaligner_option = -v -B4 -t50 -h1 -e.99 -l1 -s1000
+
+#pa_DBsplit_option =   -a -x5 -s.00065536
+pa_DBsplit_option =   -a -x5 -s.065536
+#pa_DBsplit_option =   -a -x5 -s1
+ovlp_DBsplit_option = -a -x5 -s50
+
+falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 1 --max_n_read 20000 --n_core 0
+#--min_cov_aln 1 --min_len_aln 40
+
+overlap_filtering_setting = --max_diff 10000 --max_cov 100000 --min_cov 1 --min_len 1 --bestn 1000 --n_core 0
+#dazcon = 1
diff --git a/FALCON-examples/run/synth0/input.fofn b/FALCON-examples/run/synth0/input.fofn
new file mode 100644
index 0000000..1a8d298
--- /dev/null
+++ b/FALCON-examples/run/synth0/input.fofn
@@ -0,0 +1 @@
+data/synth0.fasta
diff --git a/FALCON-examples/run/synth0/logging.ini b/FALCON-examples/run/synth0/logging.ini
new file mode 100644
index 0000000..50904ac
--- /dev/null
+++ b/FALCON-examples/run/synth0/logging.ini
@@ -0,0 +1,30 @@
+[loggers]
+keys=root
+
+[handlers]
+keys=stream,file_all
+
+[formatters]
+keys=form01,form02
+
+[logger_root]
+level=NOTSET
+handlers=stream,file_all
+
+[handler_stream]
+class=StreamHandler
+level=INFO
+formatter=form02
+args=(sys.stderr,)
+
+[handler_file_all]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('fc.log',)
+
+[formatter_form01]
+format=[%(asctime)s %(name)s:%(lineno)d[%(levelname)s] %(message)s
+
+[formatter_form02]
+format=%(asctime)s[%(levelname)s] %(message)s
diff --git a/FALCON-examples/run/synth0/logging.json b/FALCON-examples/run/synth0/logging.json
new file mode 100644
index 0000000..ac52ab8
--- /dev/null
+++ b/FALCON-examples/run/synth0/logging.json
@@ -0,0 +1,31 @@
+{
+    "disable_existing_loggers": false,
+    "root": {
+        "level": "NOTSET",
+        "handlers": ["stream", "file_all"]
+    },
+    "formatters": {
+        "form01": {
+            "format": "[%(levelname)s\t%(asctime)s %(name)s:%(lineno)d]\n\t%(message)s"
+        },
+        "form02": {
+            "format": "%(message)s"
+        }
+    },
+    "handlers": {
+        "stream": {
+            "stream": "ext://sys.stdout",
+            "class": "logging.StreamHandler",
+            "formatter": "form02",
+            "level": "INFO"
+        },
+        "file_all": {
+            "filename": "all.log",
+            "mode": "w",
+            "class": "logging.FileHandler",
+            "formatter": "form01",
+            "level": "DEBUG"
+        }
+    },
+    "version": 1
+}
diff --git a/FALCON-examples/run/synth0/logging.many.ini b/FALCON-examples/run/synth0/logging.many.ini
new file mode 100644
index 0000000..22af7d8
--- /dev/null
+++ b/FALCON-examples/run/synth0/logging.many.ini
@@ -0,0 +1,66 @@
+[loggers]
+keys=root,pypeflow,fc_run
+
+[handlers]
+keys=stream,file_pypeflow,file_fc_run,file_all
+
+[formatters]
+keys=form01,form02
+
+[logger_root]
+level=NOTSET
+handlers=stream,file_all
+
+[logger_pypeflow]
+level=NOTSET
+handlers=file_pypeflow
+qualname=pypeflow
+propagate=1
+
+[logger_pwatcher]
+level=NOTSET
+handlers=file_pwatcher
+qualname=pwatcher
+propagate=1
+
+[logger_fc_run]
+level=NOTSET
+handlers=file_fc_run
+qualname=fc_run
+propagate=1
+
+[handler_stream]
+class=StreamHandler
+level=INFO
+formatter=form02
+args=(sys.stderr,)
+
+[handler_file_pypeflow]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('pypeflow.log',)
+
+[handler_file_pwatcher]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('pwatcher.log',)
+
+[handler_file_fc_run]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('fc_run.log',)
+
+[handler_file_all]
+class=FileHandler
+level=DEBUG
+formatter=form01
+args=('fc.log',)
+
+[formatter_form01]
+format=%(asctime)s - %(name)s:%(lineno)d - %(levelname)s - %(message)s
+
+[formatter_form02]
+format=[%(levelname)s] %(message)s
diff --git a/FALCON-examples/run/synth0/makefile b/FALCON-examples/run/synth0/makefile
new file mode 100644
index 0000000..d471427
--- /dev/null
+++ b/FALCON-examples/run/synth0/makefile
@@ -0,0 +1,19 @@
+# This will show 'shift by 273', but we do not mind if the shift changes,
+# since it is circular. We just want output to match input with some shift,
+# and maybe with reverse-complement.
+go: run
+	${MAKE} test
+run:
+	fc_run fc_run.cfg logging.json
+go1: run1
+	${MAKE} test
+run1:
+	fc_run1 fc_run.cfg logging.ini
+go0: run0
+	${MAKE} test
+run0:
+	fc_run0 fc_run.cfg logging.ini
+test:
+	./check.py
+clean:
+	\rm -rf 0-*/ 1-*/ 2-*/ *.log mypwatcher/
diff --git a/FALCON-examples/scripts/check.py b/FALCON-examples/scripts/check.py
new file mode 100755
index 0000000..303c3ed
--- /dev/null
+++ b/FALCON-examples/scripts/check.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+import sys, collections, pprint, itertools
+def ranges(covered):
+    for c, g in itertools.groupby(covered.items(), lambda x: x[1]):
+        indices = [i for i,c in g]
+        beg = min(indices)
+        end = max(indices) + 1
+        yield beg, end, c
+def check(iref, ireads):
+    """For now, expect a full-line of bases, not split.
+    """
+    reads = list()
+    header = iref.readline()
+    n = int(header.split('/')[-1].split('_')[-1])
+    dna = iref.readline().strip()
+    assert n == len(dna), '%d != %d' %(n, len(dna))
+    while True:
+        header = ireads.readline()
+        if not header:
+            break
+        beg, end = map(int, header.split('/')[-1].split('_'))
+        assert end >= beg
+        assert n >= end
+        bases = ireads.readline() # discard for now
+        reads.append([beg, end])
+    reads.sort()
+    covered = {i:0 for i in range(n)}
+    #collections.defaultdict(int)
+    for beg, end in reads:
+        #print beg, end, covered[beg]
+        for i in range(beg, end):
+            covered[i] += 1
+    for beg, end, c in ranges(covered):
+        if c <=1:
+            print beg, end, c
+    return
+    pprint.pprint(sorted([(i,c) for i,c in covered.items() if c < 3]))
+def main(prog, fn_ref, fn_reads):
+    """Check lines of 'reads' FASTA vs. 'ref' FASTA.
+    """
+    with open(fn_ref) as ref, open(fn_reads) as reads:
+        check(ref, reads)
+if __name__ == "__main__":
+    main(*sys.argv)
diff --git a/FALCON-examples/scripts/circ-sim.py b/FALCON-examples/scripts/circ-sim.py
new file mode 100755
index 0000000..9b4a365
--- /dev/null
+++ b/FALCON-examples/scripts/circ-sim.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+from __future__ import division
+import sys, os, random
+from random import choice
+
+DNA_BASES = ['A', 'C', 'G', 'T']
+COMPLEMENT = {
+    'A': 'T',
+    'C': 'G',
+    'G': 'C',
+    'T': 'A',
+}
+complement = lambda x: (COMPLEMENT[base] for base in x)
+
+class DnaCreator(object):
+    def Create(self, n):
+        return [choice(DNA_BASES) for _ in range(n)]
+def WriteSplit(write, seq, split=60):
+    nfull = len(seq) // split
+    for i in range(nfull):
+        slice = seq[i*split:(i+1)*split]
+        write(''.join(slice))
+        write('\n')
+    if nfull < len(seq):
+        slice = seq[nfull*split:]
+        write(''.join(slice))
+        write('\n')
+def CircSimulate(dna, writer, cov=20.0, avg=2000):
+    class CircSampler(object):
+        def Sample(self, tlen, rlen):
+            beg = random.randrange(tlen)
+            end = beg + rlen
+            return beg, end
+    dna_len = len(dna)
+    circ_dna = dna + dna
+    sampler = CircSampler()
+    target_total_read_len = dna_len * cov
+    total_read_len = 0
+    nreads = 0
+    while total_read_len < target_total_read_len:
+        i = nreads
+        beg, end = sampler.Sample(dna_len, avg)
+        read = circ_dna[beg:end]
+        # Write PB-style.
+        writer.write(">m000_000/{0:d}/{1:d}_{2:d}\n".format(i, beg, end))
+        WriteSplit(writer.write, read)
+        #writer.write(''.join(read))
+        #writer.write('\n')
+        total_read_len += len(read)
+        nreads += 1
+        print total_read_len, (total_read_len/target_total_read_len), nreads
+    coverage = total_read_len / len(dna)
+    avg_read_len = total_read_len / nreads
+    sys.stderr.write(repr(locals().keys()))
+    sys.stderr.write("""
+dna_len={dna_len}
+n_zmws={nreads}
+avg_read_len={avg_read_len}
+total={total_read_len}
+coverage={coverage:.1f}x
+""".format(**locals()))
+
+def read_dna(ifs):
+    header = ifs.readline()
+    dna = ""
+    for line in ifs:
+        dna += line.strip()
+    return dna
+def main(prog, cov, golden_fasta=None):
+    cov = float(cov)
+    avg = 2000
+    if golden_fasta:
+        dna = read_dna(open(golden_fasta))
+        dna_len = len(dna)
+    else:
+        dna_len = 5000
+        dna = DnaCreator().Create(dna_len)
+    print("dna_len:", dna_len)
+    with open('from.fasta', 'w') as dna_writer:
+        dna_writer.write(">synthetic/0/0_%d\n" %len(dna))
+        dna_writer.write(''.join(dna))
+        dna_writer.write("\n")
+    with open('cx.ref.fasta', 'w') as ref_writer:
+        ref_writer.write(">rand%d\n" %dna_len)
+        WriteSplit(ref_writer.write, dna)
+    with open('cx.fasta', 'w') as writer:
+        #synth(4600000, writer, n_zmws=25000)
+        #synth(4, writer, n_zmws=4, avg_read_len=2)
+        #synth(40, writer, n_zmws=2, avg_read_len=500)
+        CircSimulate(dna, writer, cov=cov, avg=2000)
+if __name__ == "__main__":
+    main(*sys.argv)
diff --git a/FALCON-examples/scripts/relabel_fasta.py b/FALCON-examples/scripts/relabel_fasta.py
new file mode 100644
index 0000000..98ab442
--- /dev/null
+++ b/FALCON-examples/scripts/relabel_fasta.py
@@ -0,0 +1,30 @@
+import sys, os
+from pbcore.io import FastaIO
+
+def run(reader, writer):
+    for record in reader:
+        seq_length = len(record.sequence) 
+        zmw = record.header.split('/')[1]
+        bounds = record.header.split('/')[-1]
+        start, end = [int(k) for k in bounds.split('_')]
+        new_end = start + seq_length
+
+        new_header = "m000_000/{zmw}/{start}_{end}".format(zmw=zmw, start=start, end=new_end)
+
+        writer.writeRecord(new_header, record.sequence)
+
+def main(iname, ofile):
+    reader = FastaIO.FastaReader(iname)
+    writer = FastaIO.FastaWriter(ofile)
+    run(reader, writer)
+
+if __name__ == '__main__':
+    iname, oname = sys.argv[1:3]
+    ofile = open(oname, 'w')
+    try:
+        main(iname, ofile)
+    except:
+        # clean up (for make)
+        ofile.close()
+        os.unlink(oname)
+        raise
diff --git a/FALCON-examples/scripts/synther.py b/FALCON-examples/scripts/synther.py
new file mode 100755
index 0000000..8faa4e1
--- /dev/null
+++ b/FALCON-examples/scripts/synther.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+from __future__ import division
+import sys, os, random
+from random import choice
+
+DNA_BASES = ['A', 'C', 'G', 'T']
+COMPLEMENT = {
+    'A': 'T',
+    'C': 'G',
+    'G': 'C',
+    'T': 'A',
+}
+complement = lambda x: (COMPLEMENT[base] for base in x)
+
+def WriteSplit(write, seq, split=60):
+    nfull = len(seq) // split
+    for i in range(nfull):
+        slice = seq[i*split:(i+1)*split]
+        write(''.join(slice))
+        write('\n')
+    if nfull < len(seq):
+        slice = seq[nfull*split:]
+        write(''.join(slice))
+        write('\n')
+def synth(dna_len, ref_writer, dna_writer, writer, n_zmws=100):
+    '''
+    Writer FASTA files:
+        ref_writer: reference (source DNA)
+        writer: all "reads"
+    '''
+    min_read_len = 25 # imposed by DALIGNER
+    class DnaCreator(object):
+        def Create(self, n):
+            return [choice(DNA_BASES) for _ in range(n)]
+    class Loader(object):
+        worst_len = 500
+        best_len = 1500
+        def __init__(self, n_zmws):
+            self.n_zmws = n_zmws
+        def Load(self):
+            worst_len = self.worst_len
+            best_len = self.best_len
+            n_zmws = self.n_zmws
+            tlen = len(dna)
+            for i in range(self.n_zmws):
+                rlen = random.randrange(worst_len, best_len + 1)
+                beg = random.randrange(rlen + len(dna)) - rlen
+                end = beg + rlen
+                beg = max(0, beg)
+                end = min(end, tlen)
+                if end - beg >= min_read_len:
+                    yield (i, beg, end)
+    class Ringer(object):
+        def Ring(self, i, beg, end):
+            capA = []
+            capB = []
+            ring = dna[beg:end] + capA + list(complement(reversed(dna[beg:end]))) + capB
+            return ring
+    class Sampler(object):
+        def Read(self, seq, upton):
+            l = len(seq)
+            if upton >= l:  # == b/c randrange(0) fails
+                return seq
+            curr = random.randrange(l-upton)
+            return seq[curr:curr+upton]
+    class MessyReader(object):
+        erate = .0
+        def Read(self, seq):
+            '''No inserts or deletes yet.
+            (And we under-shoot erate by choice(DNA_BASES).)
+            '''
+            dist = random.uniform
+            choice = random.choice
+            erate = self.erate
+            return [b if dist(0, 1) > erate else choice(DNA_BASES) for b in seq]
+            #return [b for b in seq if dist(0, 1) > erate]
+    class RingReader(object):
+        def Read(self, ring, n):
+            '''No inserts or deletes yet.
+            '''
+            l = len(ring)
+            curr = random.randrange(l)
+            while n:
+                yield ring[curr]
+                curr += 1
+                if curr == l:
+                    curr = 0
+                n -= 1
+    dna = DnaCreator().Create(dna_len)
+    ref_writer.write(">rand%d\n" %dna_len)
+    dna_writer.write(">synthetic/0/0_%d\n" %len(dna))
+    dna_writer.write(''.join(dna))
+    dna_writer.write("\n")
+    WriteSplit(ref_writer.write, dna)
+    loader = Loader(n_zmws)
+    #ringer = Ringer()
+    reader = MessyReader()
+    total_read_len = 0
+    nreads = 0
+    for i, beg, end in loader.Load():
+        #print dna[beg:end]
+        #ring = ringer.Ring(i, beg, end)
+        ##print ring
+        #n = random.randrange(min_read_len, avg_read_len * 2)
+        #read = list(reader.Read(ring, n))
+        #read = list(reader.Read(dna[beg:end], n))
+        #read = dna[beg:end]
+        read = list(reader.Read(dna[beg:end]))
+        if len(read) < min_read_len:
+            continue
+        #writer.write(">m000_000/{0:d}/garbage/{1:d}_{2:d}\n".format(i, 0, len(read)))
+        # >m140913_050931_42139_c100713652400000001823152404301535_s1_p0/9/1607_26058 RQ=0.831
+        writer.write(">m000_000/{0:d}/{1:d}_{2:d}\n".format(i, beg, end))
+        writer.write(''.join(read))
+        writer.write('\n')
+        total_read_len += len(read)
+        nreads += 1
+    coverage = total_read_len / dna_len
+    avg_read_len = total_read_len / nreads
+    sys.stderr.write(repr(locals().keys()))
+    sys.stderr.write("""
+dna_len={dna_len}
+n_zmws={n_zmws}
+avg_read_len={avg_read_len}
+total={total_read_len}
+coverage={coverage:.1f}x
+""".format(**locals()))
+        
+    #reader = PbReader(dna)
+def main():
+    with open('cx.ref.fasta', 'w') as ref_writer,\
+         open('cx.fasta', 'w') as writer,\
+         open('from.fasta', 'w') as dna_writer:
+        #synth(4600000, ref_writer, dna_writer, writer, n_zmws=25000)
+        #synth(4, ref_writer, writer, n_zmws=4, avg_read_len=2)
+        #synth(40, ref_writer, writer, n_zmws=2, avg_read_len=500)
+        #synth(500000, ref_writer, dna_writer, writer, n_zmws=14000)
+        synth(500000, ref_writer, dna_writer, writer, n_zmws=14000)
+if __name__ == "__main__":
+    main()
diff --git a/LICENSE b/FALCON-make/LICENSE
similarity index 100%
copy from LICENSE
copy to FALCON-make/LICENSE
diff --git a/FALCON-make/README.md b/FALCON-make/README.md
new file mode 100644
index 0000000..26dc8c9
--- /dev/null
+++ b/FALCON-make/README.md
@@ -0,0 +1,84 @@
+# FALCON-make
+These are some ways to install the FALCON packages from a FALCON workspace.
+
+See *Installation* in the wiki.
+
+# Types of installation
+Python modules will be installed according to your environment,
+and other executables will go into `${FALCON_PREFIX}/bin`, which
+must already exist.
+
+    mkdir -p ${FALCON_PREFIX}/bin
+
+## Standard install
+This is more permanent, not for developers. Python modules go into
+your current site-packages, so you can run this within a **virtualenv**
+for convenience, if you want.
+
+Other executables are copied into `${FALCON_PREFIX}/bin` rather than symlinked.
+
+```sh
+bash config-standard.sh
+```
+
+## Development install
+This is safest. We use `pip install --edit` so any changes in your Python
+code are immediately reflected in your installation. Again, a
+**virtualenv** is fine, if you want.
+
+Other executables are installed into `${FALCON_PREFIX}/bin` as symbolic links.
+
+```sh
+bash config-edit.sh
+```
+
+## Development install into Python userbase
+This is least likely to fail. Similar to the regular "development install",
+we use `pip install --edit --user` so that
+our FALCON Python modules remain at the front of your `sys.path`, but all updated
+Python modules go into your current `site.USER_BASE`, which can be controlled
+by `${PYTHONUSERBASE}`.
+
+```sh
+bash config-edit-user.sh
+```
+
+# Dependencies
+All those installation types require `pip`.
+
+## pip
+If you do not have `pip` yet, we install
+it for you via `make install-pip`.
+
+* https://pip.pypa.io/en/stable/installing/
+
+Behind a firewall, you might need to find another way to install `pip` yourself.
+
+## Anaconda
+It can be helpful to install Anaconda first, for a helpful
+set of Python dependencies. If you do, remember to add
+your new anaconda2/bin into your `$PATH` before proceeding.
+
+* https://docs.continuum.io/anaconda/install
+
+## extras
+Some extra stuff can be installed via `make extra`
+
+# Environment
+We live this to you, but here are some ideas.
+
+## PYTHONUSERBASE
+We recommend that you export `PYTHONUSERBASE` before running `make`.
+Otherwise, your build will (typically) be installed into `~/.local`
+which is fine if you have only one installation.
+
+* https://docs.python.org/2/library/site.html
+
+## PATH
+Before running tests, you need to add the new `bin` to your `PATH`.
+
+    export PYTHONUSERBASE=$(python -c 'import site; print site.USER_BASE')
+    export PATH=${PYTHONUSERBASE}/bin
+
+# About the [LICENSE](LICENSE)
+Standard PacBio "Open Source License".
diff --git a/FALCON-make/config-edit-user.sh b/FALCON-make/config-edit-user.sh
new file mode 100644
index 0000000..5eae26a
--- /dev/null
+++ b/FALCON-make/config-edit-user.sh
@@ -0,0 +1,18 @@
+THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+mkdir -p ${FALCON_PREFIX}/bin
+
+cat << EOF > ${THISDIR}/config.mk
+FALCON_INSTALL_RULE=symlink
+FALCON_PIP_EDIT=--edit
+FALCON_PIP_USER=--user
+FALCON_PREFIX=${FALCON_PREFIX}
+FALCON_WORKSPACE=${FALCON_WORKSPACE}
+PATH=${PYTHONUSERBASE}/bin:${PATH}
+
+#export FALCON_WORKSPACE
+#export FALCON_PREFIX
+#export FALCON_PIP_EDIT
+#export FALCON_PIP_USER
+#export FALCON_INSTALL_RULE
+EOF
diff --git a/FALCON-make/config-edit.sh b/FALCON-make/config-edit.sh
new file mode 100644
index 0000000..437ab86
--- /dev/null
+++ b/FALCON-make/config-edit.sh
@@ -0,0 +1,17 @@
+THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+mkdir -p ${FALCON_PREFIX}/bin
+
+cat << EOF > ${THISDIR}/config.mk
+FALCON_INSTALL_RULE=symlink
+FALCON_PIP_EDIT=--edit
+FALCON_PIP_USER=
+FALCON_PREFIX=${FALCON_PREFIX}
+FALCON_WORKSPACE=${FALCON_WORKSPACE}
+
+#export FALCON_WORKSPACE
+#export FALCON_PREFIX
+#export FALCON_PIP_EDIT
+#export FALCON_PIP_USER
+#export FALCON_INSTALL_RULE
+EOF
diff --git a/FALCON-make/config-standard.sh b/FALCON-make/config-standard.sh
new file mode 100644
index 0000000..8d98520
--- /dev/null
+++ b/FALCON-make/config-standard.sh
@@ -0,0 +1,19 @@
+THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+mkdir -p ${FALCON_PREFIX}/bin
+
+cat << EOF > ${THISDIR}/config.mk
+FALCON_INSTALL_RULE=install
+FALCON_PIP_EDIT=
+FALCON_PIP_USER=
+FALCON_PREFIX=${FALCON_PREFIX}
+FALCON_WORKSPACE=${FALCON_WORKSPACE}
+
+#export FALCON_WORKSPACE
+#export FALCON_PREFIX
+#export FALCON_PIP_EDIT
+#export FALCON_PIP_USER
+#export FALCON_INSTALL_RULE
+EOF
+
+echo 'You might still need to modify or remove easy-install.pth from site-packages/'
diff --git a/FALCON-make/get-pip.py b/FALCON-make/get-pip.py
new file mode 100644
index 0000000..6a7d009
--- /dev/null
+++ b/FALCON-make/get-pip.py
@@ -0,0 +1,19177 @@
+#!/usr/bin/env python
+#
+# Hi There!
+# You may be wondering what this giant blob of binary data here is, you might
+# even be worried that we're up to something nefarious (good for you for being
+# paranoid!). This is a base85 encoding of a zip file, this zip file contains
+# an entire copy of pip.
+#
+# Pip is a thing that installs packages, pip itself is a package that someone
+# might want to install, especially if they're looking to run this get-pip.py
+# script. Pip has a lot of code to deal with the security of installing
+# packages, various edge cases on various platforms, and other such sort of
+# "tribal knowledge" that has been encoded in its code base. Because of this
+# we basically include an entire copy of pip inside this blob. We do this
+# because the alternatives are attempt to implement a "minipip" that probably
+# doesn't do things correctly and has weird edge cases, or compress pip itself
+# down into a single file.
+#
+# If you're wondering how this is created, it is using an invoke task located
+# in tasks/generate.py called "installer". It can be invoked by using
+# ``invoke generate.installer``.
+
+import os.path
+import pkgutil
+import shutil
+import sys
+import struct
+import tempfile
+
+# Useful for very coarse version differentiation.
+PY2 = sys.version_info[0] == 2
+PY3 = sys.version_info[0] == 3
+
+if PY3:
+    iterbytes = iter
+else:
+    def iterbytes(buf):
+        return (ord(byte) for byte in buf)
+
+try:
+    from base64 import b85decode
+except ImportError:
+    _b85alphabet = (b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                    b"abcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~")
+
+    def b85decode(b):
+        _b85dec = [None] * 256
+        for i, c in enumerate(iterbytes(_b85alphabet)):
+            _b85dec[c] = i
+
+        padding = (-len(b)) % 5
+        b = b + b'~' * padding
+        out = []
+        packI = struct.Struct('!I').pack
+        for i in range(0, len(b), 5):
+            chunk = b[i:i + 5]
+            acc = 0
+            try:
+                for c in iterbytes(chunk):
+                    acc = acc * 85 + _b85dec[c]
+            except TypeError:
+                for j, c in enumerate(iterbytes(chunk)):
+                    if _b85dec[c] is None:
+                        raise ValueError(
+                            'bad base85 character at position %d' % (i + j)
+                        )
+                raise
+            try:
+                out.append(packI(acc))
+            except struct.error:
+                raise ValueError('base85 overflow in hunk starting at byte %d'
+                                 % i)
+
+        result = b''.join(out)
+        if padding:
+            result = result[:-padding]
+        return result
+
+
+def bootstrap(tmpdir=None):
+    # Import pip so we can use it to install pip and maybe setuptools too
+    import pip
+    from pip.commands.install import InstallCommand
+    from pip.req import InstallRequirement
+
+    # Wrapper to provide default certificate with the lowest priority
+    class CertInstallCommand(InstallCommand):
+        def parse_args(self, args):
+            # If cert isn't specified in config or environment, we provide our
+            # own certificate through defaults.
+            # This allows user to specify custom cert anywhere one likes:
+            # config, environment variable or argv.
+            if not self.parser.get_default_values().cert:
+                self.parser.defaults["cert"] = cert_path  # calculated below
+            return super(CertInstallCommand, self).parse_args(args)
+
+    pip.commands_dict["install"] = CertInstallCommand
+
+    implicit_pip = True
+    implicit_setuptools = True
+    implicit_wheel = True
+
+    # Check if the user has requested us not to install setuptools
+    if "--no-setuptools" in sys.argv or os.environ.get("PIP_NO_SETUPTOOLS"):
+        args = [x for x in sys.argv[1:] if x != "--no-setuptools"]
+        implicit_setuptools = False
+    else:
+        args = sys.argv[1:]
+
+    # Check if the user has requested us not to install wheel
+    if "--no-wheel" in args or os.environ.get("PIP_NO_WHEEL"):
+        args = [x for x in args if x != "--no-wheel"]
+        implicit_wheel = False
+
+    # We only want to implicitly install setuptools and wheel if they don't
+    # already exist on the target platform.
+    if implicit_setuptools:
+        try:
+            import setuptools  # noqa
+            implicit_setuptools = False
+        except ImportError:
+            pass
+    if implicit_wheel:
+        try:
+            import wheel  # noqa
+            implicit_wheel = False
+        except ImportError:
+            pass
+
+    # We want to support people passing things like 'pip<8' to get-pip.py which
+    # will let them install a specific version. However because of the dreaded
+    # DoubleRequirement error if any of the args look like they might be a
+    # specific for one of our packages, then we'll turn off the implicit
+    # install of them.
+    for arg in args:
+        try:
+            req = InstallRequirement.from_line(arg)
+        except:
+            continue
+
+        if implicit_pip and req.name == "pip":
+            implicit_pip = False
+        elif implicit_setuptools and req.name == "setuptools":
+            implicit_setuptools = False
+        elif implicit_wheel and req.name == "wheel":
+            implicit_wheel = False
+
+    # Add any implicit installations to the end of our args
+    if implicit_pip:
+        args += ["pip"]
+    if implicit_setuptools:
+        args += ["setuptools"]
+    if implicit_wheel:
+        args += ["wheel"]
+
+    delete_tmpdir = False
+    try:
+        # Create a temporary directory to act as a working directory if we were
+        # not given one.
+        if tmpdir is None:
+            tmpdir = tempfile.mkdtemp()
+            delete_tmpdir = True
+
+        # We need to extract the SSL certificates from requests so that they
+        # can be passed to --cert
+        cert_path = os.path.join(tmpdir, "cacert.pem")
+        with open(cert_path, "wb") as cert:
+            cert.write(pkgutil.get_data("pip._vendor.requests", "cacert.pem"))
+
+        # Execute the included pip and use it to install the latest pip and
+        # setuptools from PyPI
+        sys.exit(pip.main(["install", "--upgrade"] + args))
+    finally:
+        # Remove our temporary directory
+        if delete_tmpdir and tmpdir:
+            shutil.rmtree(tmpdir, ignore_errors=True)
+
+
+def main():
+    tmpdir = None
+    try:
+        # Create a temporary working directory
+        tmpdir = tempfile.mkdtemp()
+
+        # Unpack the zipfile into the temporary directory
+        pip_zip = os.path.join(tmpdir, "pip.zip")
+        with open(pip_zip, "wb") as fp:
+            fp.write(b85decode(DATA.replace(b"\n", b"")))
+
+        # Add the zipfile to sys.path so that we can import it
+        sys.path.insert(0, pip_zip)
+
+        # Run the bootstrap
+        bootstrap(tmpdir=tmpdir)
+    finally:
+        # Clean up our temporary working directory
+        if tmpdir:
+            shutil.rmtree(tmpdir, ignore_errors=True)
+
+
+DATA = b"""
+P)h>@6aWAK2mlEMt4LC+=l$pn003+$000jF003}la4%n9X>MtBUtcb8d7WDSZ`-yK|J{ED>nxD8+S;<
+=;SJgIu%S({0@)g*?b`!VLy#@n<|2z4DJ5~Y{qOJYNQ#uDWZg8ZmPFnc9`8Q9JLTlr7p+!btVHz%ukK
+iVXm+xiY?R!yEZekAt9X_%v9G0SSiaJ-Y#W}L=gGvrFXcKfxqsSjMYVO0Qg?TCQ|C%|6Yq0X!9?Bh(T
+8rX;uE7qE$Wm%ta;rCS!t)q>q<9yS?2iiLMf?c?1kL#^Qy2<SE8mn&!lZc+0k!#lL^Cv7g-^6qr|Eu5
+i=UBmE1l;Tku-(HHn at vB+Z1*cp;j61xDy-?$%zKXl88B)w)$8FK0}*t2?eVF<9jv^IS1@!YcV&?#WlV
+=4379xV(_nMr_}ZA+Bg-#@^QjC{k at -@=e~BjsB6B^((3NdDHM<?Q3J3-tu(|@08$n!CLG^nXAlAeVo`
+mgW1-NpO)S6s*oyG{I{0tMyGYYzRkB>r>!bWvHE&s8{-Ls3pSI3Y529F{KdG%Y?4eSlM|L}Ew<I3R}I
+ at p#WrPr%fDfbWGl{gd0iiH(z~6|Y$G1HW;v^YTPa{|&4JzTcx9ylPj)AA at N4r7emw{7?4Gk6-0g&kN;
+I%PLgUP4$8lL~FN?P1Gd6V#?aZ(*q*=|BfpCRO(Bcjmfpr*Y#$l6SR~uCJUaDILPE~VN9zYWC&%xnE(
+~={l&hN?K9p{O^WsBo6S~h3alW--i=7r(SndVJfr}cr9!54)Dhg^dX!OKaOSu!xff=$0k&(g1^U~Y_E
+ at VJEw;uKutlHSExR^@vDg9HWtC<;zokN55e+B-(Zvim-9ah`5O32x~g<0<T`RD3#P5KVk5)nPI23g`$
+0->|%GBzRw4@`lIBIXTaCI<=8cD>cSpb{5{E)1apN94uppZD7ToLMOxxUx-Fygm!M<o0U#z-bIDM&Q=
+GeWvkY>WLa at 0HzX>Mu6MjFnO-YV1KSv)ddEPak9r5Jtp4<S!d}WMY8)+RVuSmsz{fSdCpoaa$RP`tCr
+WNO0YP;2`YQY3{ku2Wi#I=AU0%Gqh{yqP<vIm`7fM#fZg?s15mnLS8XUAhC-d`eB4m>N^5**G+i02Ux
+)e>E+?<^+Jp~Yms)+|gFOVu)8lyJq;AO(@DvafY6?tR$%-NY?Yd`}0s^AZV;A5mwWVRvPrUko!;Gpe>
+Uj$jiH;T0$+{K9z<m2jQX?MW08|v-HC=QV9o`l__1ZzIn0(uPeTHbv5mkS&6{u#W<EYZ3um`ibpk__E
+AGcV(0ptoC<bBH6(UL+6!Oaj_L>}h_^BJk5X3ORw_f$#Jfjx%M8g(dgwX;laCiU;tSv*b~+0Jb)LAXK
+ymGM%cLtlL)hEem(%2}L at Bh=Lit-}+4ouT`V(MYD^ed6e|E^};)ca96oT^IImRyzeaUE>sj%cE0vVW)
+aguGg*~~#XHsVBMt1LkR-k3hfv*eozQCBm<wtfLJ*QeR=q`~cpOzl>=^X*KS8+wT#8OY+;y`79r=uHa
+0^y&qT^vU0NK7JH=b~)R%ojyrr}j9#1@>K48}v}8i^y^urN)zIdYX{u!9Z=p2Nn+ at PKDt2EQ3@UA2vq
+8BR&7Ty6DG5w|9o(vSSq1Zis6XXxn}EOvaKHY5Urh&@|$iE{e({ngd=#oM>pj~AC$%SjMM<|t*dg_J?
+ at J0V*Q5k$eY5xm0za}eiuIplVDU>!#@(&AbP1|KZOM~f%{)S_iQ^xVv2^>Sc7wBEyv-6ce4Z at VLxu<^
+n9Z6|g)vLrhn&Q=HbqN>|wRN!qV5but}-G(7#c_m(=-8J-NPuKTE^a3y(FWJIQaA at w;Hj%}^Xg)L`so
+aV6j$tk=D5|#lI7TeLvyssCV!<bYac_c&if)SWNM7nbxbNh>$$0Gf;q*fAF-dX7*Ia8jAwxuc1S&CQ8
+66tHsPiQe`aPLiuudB{wpFsN^>V<#q17;gk}+YiGy)pCkLKi%gfLA24|s(c!*kN}INH6k$Z9lP1A~cA
+4_dQv5sT7arKsYY2OnUeRv0Ivj+>ap_mGd$;<3!&JV+k0+k3Fm at 0}u1tD!E7;L!h2onoQO{$r(o$8M~
+nETfs9pBF`j%goFmP`=8+;er_(S98MHlQk)zsi#6DMm4sjT;*jb5w(I5SBX2SKaX;vVM!c+{&~0PB$%
+ASF at gvPXESI4I0-L{4C6Ak9s<=>R^M*nxKJhyuJdLGWD2#6AA8PM8h at cW!bBXZqogO*6=x8}SUR3sK!
+)Ggv|8XciP)*Fgz*YWvstLrjCS6R-JE~Dw0Z*q6{f=5@`@`+twNB8cMjiu>6q at JhR(tujDtbT#th8tN
+_wk8f9O#=DM`3LDdEq8VX8xzBuPt(m(E|<Z6)uuTZ!>xcXU&BNYy0f4BQk^F57UYd6(CNq at z5a<^^<!
+OHs6B&*A5E{?)%V7 at uq}X6#oR_i#ri-ZA%O&zE{UA&P8B2k)&VOoe6XY`D?`S}UfE;=J$DqiMc1&(E@
+foY_vroLRFc+<N9LuDFIcG{vdV&eWLD35{nKo%%G>c0lO7!op6D`4wAnFcp>m!}<gN=isE^+_-aiE~R
+!BU;q?BIp&P#_7w>_hwYfp8?on*%`E;E%~<48c(|R<u?oh!*FV30CuON4SFSn5GIw_O7y+kcC?=yb5~
+h3#^CQkP&jI@|#tZ1j*xICqR@!`SgVYsaN6cId2lXEWwr&d0I=xq-;c*{5lE)_k43(ndn%DhFbU<_(A
+ at uz52mMg=&A&5;5rMjm6VMZrGrvwu;<_hH2fH$lHo4 at LA5L)aEJy{MiH at a=>qq at 6??VW%CdT(&K^$r_
+aSC_it{e(eey_~7g+#}}!%>?vc07VSVXwCY6>Wv!)UjpLQ$0nza3nr)!A(XX{agt6xJ)M6=Z6(%2idY
+c&mpCCyofB2t#Sdj4|~~=G0a`g02~t!`w+lrISN)x6|flSo3gVa%`sNIas3<nI#qlx at A$DHEONQGvu?
+giI(B at 0n+YvTfU6>eGWQPTQJT<g*K|I2V^iEN3Vv at xPlhK(PYX9 at Wg|F}#0B<AoY;+pElu4M&)BXV-4
+1T=sDWioX!3^^z)ZF(Z0vX6CTycwV;R!y;IP~7m}!z~d%ScssRfqI(q?9!bMt=lax&5x8<^T*jXx~HP
+Llh?ft_D?HGmVYltqc@#r5@@>vK5nrr>fgcYr8<?vsde=8q!I3vRk?=IamU(O`-VaDtI)Eep)1$pI4A
+0JpSQ2e^+ashgUjeX at eX6Cc{f%Fw(qcd>nO`6Bz_@)Gbn>Y2uldh_&ZBgX{JzzWN^9P?`^i`ELev*1T
+|7<(buPBLEwKJp?^2X_|ofK|JVr?0V%O{X2nJJqJZ0y&hu7;e)U<4Ksg3|bT&ti;aU7e_(n{KDp#E<|
+m=fuf?DLf=kK{`rN}>=$qe)6VDoBd1<7#Q(a?0Z(5k`H@%GrozR~GqGI#%GV8qqm7IWerf^hWm&9wxt
+THJ-B1*RE$sKQ8L1D{dJ!kV0fGdn#s2O*=mvlVyoZ1LuN_ku>%PbJCOBEv_IPWQ&9EV%I5EXpHLNsN(
+OktJis#8^*1NI-Q?rq2 at mF7dDExm!KosATt at a$ix#+BdB>;5><8`UcC&U>72^<s<4F at Q6t6QD)o!{n~
+uIvDZ+hYfHP=`>1&k-a(goBj_-OaI&m2hjn2&#3a{Pu>2-SJmX)1;%k0LZDN#$F+}-L|+>sDD5P`$do
++j`hOdU1r}$l#7iKJ2`zZuJeBM&3FKuN8xR8JRXeWH8m_K(m_}HWGGQJ7N|w|_}>?A5kVV{b>ECl$Jt
+?n6`8mmYg={JF~t%B$isR-JnTpsBheRx at HK23jtq{+zq9D*g=|aHR4?EdQ+qfmfNL$aXrwxLPlZ|oYA
+e4XpP;t$P?s`|D{ykco;_oqs7Cb3)}pY<b<d at Sa|3 at hnN2s)Yrj1?_3y~UcCI!+m(qQ26o7@}pIbm8P
+J<>1ry!(f$doZ{htu|Ex>$hwz`u*>a>hOk78YGR00kyrXGBZsB(ekd1)^^|O-|LfrhAXKn7<Br8D$Kt
+^_SzDA)S6_%i|eP`8Mkv0yHEC7M9`M&((St59%Sj3R5lzL>8r=q=IPh!mz#2aT!L2zN;LZfrul3iz67
+0hQ5NIr##*G2M(MNfO{}MPDq9u91jLsJ>uTuqeq9z_{>q|F}Ong##itupn+FpzvQ1|&V{Tu0^Rhk@{q
+Bi)G4C;VEi-7Cm{q$1C)66`hP!NfVd7RI*ISEFEJ>NZNr9W(eX2XLjcfe|EA at 9eC`Nh41nPuEXJK&cs
+$^d<)8&yH()!xIrPq)Q+*DR`6$0IYkFFFyuvscUx?v(hmqkXrlu=+HqP>Kn|M~y at 2C1t#1|izf5G&LR
+Kl}H*o{v0_ow=VZ?_BE{(DrH(ElF~GSK+(K?EcaWzwMWPnmf6w=StKwaMjbB{8ecp3I$Hwh3<1i1ksr
+*%$9EZ?kKX(#`RTI7szC3W;ugfc!T7P<$4dY~D{78#dx3K?Z+wZnlv=ZN$NMIJ;uX@`K7jH_8?cfzD<
+NT at 4Tl?-c-jCG5V>x$XCclvcR!;bPA@?iC9OHjF`=7=dYtPdFRuD}id7KZ>H}SZ2Dmnf*J6u4<;j407
+ at R15ir?1QY-O00;mH1*=F)Nu*^n0RR9<0ssIH0001RX>c!JUu|J&ZeL$6aCu#kPfx=z48`yL6qa^qhe
+pR4X$Ov65%(yx$r_O+A$C>v?Xk0z4RXq#_nz%vY>qQ1WfxkqQ3~9gVkXcZ82v&<UC&KZ?;~zIykOJp;
+MKxvKxYGa3BiRkSV`2dPR95H=y3#^%=HKq#n&fI6MNq$hoHTWD;CXy`fMOwXo>-nOOFrzI{72-zy%~$
+-fkObx$UHfPxf%%rxUd8a|66~GLQ3R8vL7cRBF~PDAlJ+)moR4V01a?*}x!0kg`h%(L#G~Xb*s9h+(`
+5M8UCb&3ZGqcoGOQp;VW#N-&4rFgQZvZ8g0VLYnU307k(&=&*eVS1J1Pdg6a5y1w?^{XcI6_WR=6a(m
+`zGIdXf614yQS7FS(g!rYKD_V)ETsH=luY{RzM;)7bdFi;y4^T at 31QY-O00;mH1*=F?!S>Aw4FCXuEd
+T%#0001RX>c!MVRL0;Z*6U1Ze%WSdCeMYZ{s%ddwvC>VqtmDtL<)a{Sd(D?dH)M-8w-YZ4W^}$P#U<D
+@!U#Iq?<y-*1KwiIS*fd+6izA(5$>;c(tVG6;hAv0&t+-0k8bB}pC&F(dfOSsqIU|I1ot1rtFK9Ibh|
+Bb2UdS#w4y$#zxAC5cy}%xlT0{(W?0#`AKs$%>8rSql3m4$W&>$tvc8+20Q_F91gz>B*|Bva=++6o9j
+`5Y4A3D^m7o0WRa at W4vMKILKR=yi8(+X5n~U;1sk*IJ(cctmB*&`xYfFABwz;(}r?ZT{9toNDIRr6IO
+NThVSFl2y#Xig^+QctC`O at FZqnz!mRzlBl5&!h#B-t&h}YZi}!Vwr>7ZL!_!tyQBv-zSdy;rX__VSq%
+79iriEOA&Xv@;h1L)kYC)Ik3-DW|z-h5LW$U=krTC8J)p^Nxv6QZSIs4U8F^j%pzt$ONJ66aUQS(sV4
+ms)rXju!IlqqYas6=vodvbDieLW**S63HTz{~Rc<;71+YJUE>xVpK0_u*{$BVAtH(DRGi<*AnC<<;4b
+i;LT9`u=wD;gp^(t_;r6w4E0$I&UUSS;d()kr~-ANh at A%W~9KC=GlK31)*+xxRH@=yYLiN1_K`XXaw-
+0RQZ#^fG>2<INB6Vwk-L0baX^12oKz9PVOc~_mg`V$H_odbF0$`xcs2TLQ0Ex2d)TqaHO2q8ckTPeqo
+869xJIJ5a2J%f~nuN07r2Lwpj`*fRXb!7kUULqe5~P?*xp80eh6kuU~`fg4$A8PB0_gF~)fSd?0Sh)(
+|JMB9oMcg5~QO$sk6c0Oo22!xui<5b4JUnB}*QKTH&xlVgGuBK4!|FcVZ2e4o4!<b{}!7bLU_45u at Vh
+D)FJ(AHK<fcvDChkeXAP3aaOs18Mdua?t;!Z|J5_}=>r)}HXp5>QZ-re#8D575dCpzLc4@#&~}RV0i<
+&po~zzI at q8dD^0VVU0x)u`TO7C9phVf-I3Gk=sm|-(&-cplVQIPz_LHS*QU$qf$e&@+gU`Oe#MLr(J#
+_o}(1exNH)LG>LDKa_B5-)}61jgm=KQ+%oXog7G-F>^BfFZl`H8NVJPTGNVJP2!|cXJCKI1hU)6a<*@
+lM^=TzSyXj14*>W9bg^`^KooS5Q7&c~*k0sBTn4`<ih|G2jd{F&ze97R#THBP>TUiXzW*!dmPB+|zrH
+Jr<^h=o)p%sO~g at gk72)0sI!E`#HldZ`BoG@^aHr6zf>Ppit(ELYA&8q<Zq at ti{*(nS_mk?xGmSBOhE
+rk?w3oCgoz=8Crt1rixz5{2-8A$*VqIVL%TGcoph>GTDW;JNDL2wt#xIFGzhZ27TQ9fHAw3RoYo=LB-
+KS2GJK^`Fpk*zaGO3XW#f}-P7;um+q7Tz<jF(u)f$$TRvw_yGWE!><8Ez5obvd!z5J`F(EOneGbAr5q
+$5(xH>U;;kw at zcT2u)!Ln9DKBGA9u+ND>Vfso`(D6 at _x!7qwJuTMjjtv5pjXs?<(0?7J<w};u?NJHKA
+(~lsyQm at 8S_cMH(Fok-3tnWu+(~`Bt@~Zt#?v7Z$q>I=VcI`9_$4gRf3R`GTzDM3yLN)Ex3B8Psj7EY
+IX&NWKku4rN8NopTpwg at 3jt+Tl2?siij{)YCPTm#k-;{jX#`CvT1idd%6L<uF(9)4QwXV)<?GERnZQ5
+K+Zumjqh)6Bs8~i<`yCyALfA%bi&ve5}eofd={X?EUSxF6JoYVtIZMxaN2RHpk0ScM4#7rUZb(C)p~4
+48Y5v>R^E(^0F=<6pEK%yAByqu>@ij*hlc{6_5(Ba1abS$ds+>4N_ONL`>FM&Z5?0U}|c)Q~!Nx1?=v
+6I%szJ4aBhN3A_Fsn3@~h_D$DSgESNIDrb~EW&&M`YPq0?duqG at RwMOSPXvMHFt1ZaZ8z(MQjp;kz6F
+EEBKjeI{D7-GSJMRkMln!=00I`vnD7w#Q!g&{7h?<Fk at aM%zj<aA!zO5iYdssT`$f0|i-Nj-Dm+VkhU
+u-!1!F8*;~nL>ksbaY;Z(I$eg&PBdC8$(O0QLqq!ZJqqI4q_m}=i?t?s_OACppJV0S}%8bz|AN2ZO|o
+)xSsFUoLR;R%DaVr#<X-zT~^f4meh38UkG#`<;a`TeVZ&ycgLQmVES{F^-^0F0a1_Bf>m(89VPc%8ES
+>!Qx{G2E2p at c|HTc+LJuVfB3x!?NEGt-RX6?JK2PSI!~&hT8T+-Rs<qh}byzm<GD`JOb6|yO(s at mSu=
+|Kb<})45;*UDj{)ku%Vf(n8<LO%eW2E$rS6rZM<hhSyL|$YGRfE*Z|N>BTU>vm5XFm%B|XCqI*cVSUM
+KE8D7PlsZAfzBc|%NE!LiZ{;*{LCQ7Kep(w2j+w7Dz2Q{pCjJ;LVRdkyaF~<(8{ox2c!%YzT_`OU|Wh
+}=}vH|m!ZT$zdtBZ!LfN-j6p_wh#?w`a|hS0CG`p?wAI8THbcFd>}wTq%ybF_&ZLQx_?75Iu<s8D$ee
+6M*9qhIw{cewb}t&(wv&h9p5#k#yZetVCVZ1{FYzMgg~ESqB at d>P6<xID-$v?Xt&uXP^>23n~4v954u
+6AHoALD`rAOrUvyo*~`=-$QCu&d?O=YQy7{kptSEMvTZiqE8x#VV#s~bs+GN<++bm%FD{Kp~Tv<>hXV
+P-#5~LZ@)fm$9~dc7;i;yE>16wiR1^YZZ}Ldaj=pK0zbMdo*}f`28rHi`^Lf7!p>k~=&Lvrz%=3ku~I
+~=*k>GAhhN(=Pc`kx+xggDudBtD#@*y{aY>gKbg{g=y_wwOZrz)Smy{}f1%-wWem+g_?B~Vx%{6^@a<
+jNtYNBM)-7e}-^LK6LSO5)vf7}aIi#7BN_yNt#0H#Fkl_QBvss<V=fjmDzbOnV&`0Dp=*c6YQ_k>eVS
+Ej;Sl<*Au at 7y1HCMT*>LfUIcm=JXdE^@E-_gnfTv|LZ4$!7!tbW)I+41K2?j{LyndYc;R7{#{Bu-vfI
+M^Af#JzxC%!`U$bxmmMp_J2(q4+}y at 4B;L+<`~Ev1!@2^ld2q at 33awrB+PE^6pW<|Wpmg;0O;$bg%9;
+4K%$Tyh1iXSE+_i%&3`0DVu9a#ZE#PoP(p?P)Z4%`P^xhaCujDAk6_5eA_=`>GDGSriq5gBaunn6J9Z
+4!UqSep=Y*s^Tb%x1EYQ0e_rUVAxSS|5$9Q<7X8lXK{hl3GWz5q>0ktNtEBOqs7Zu}rOD;jf&2ydVu!
+Nlam5e_pQajyePSH79Z2%y!VPNeC<r5ozAJ~Lr5vo!aBse^r60)DE<9(dvShn{4KXi91?as^KOjN}hc
+k|PIAmu{a!rNFEs7#o$N2rkWA)_arV8S&=Zr$US(b~?^9|f=n7hjHp*yEZVq{n~G`rF-8<<f?cA<Os-
+L=zhD>0pc39Gy1@!p>>DJsY-><X9vB3!`h6>=@J{I)kd6;j*extM1u7NK1yj-#W=SCsk{80psbb4eBv
+VnCbQalM2hJIyG_>hxbnG`wuY}+c?MLIcQLzXHnb4kT`IA(P0ZH%g9Rst3umPW5L}Vk-#6xV<08E3P1
+#P!=dopWbhk}rSF$OJCpKBE3Ubbn&oKzq}dtC%^L|ivYY$mXrG?;)XAhXhT3&(%2__jy0;hm45`7~!}
+}o-R>%}}>6ayto9Q;Zy+B}fW(Vl5Oh<%0B9>>0G5`9TvNp{mhO0kI7?%FHK)fGPeSd-OllI8d8S^9kO
+)`Z_9AyL1nxeCGuAOKIzn8kc_b0pQGhR9Hz~3V(k5~F+g5lwRb6*Rrny6Q=%=cH at SU?*I4ZeVIsp2QP
+wM$Ycsm!2V&vS>0W24s$@B67kT&ED}b7lKFGvj>F at aYeoo)9Ynb-;%^n*(RV!GVx^f;87WezW&)@ZYC
+?<zXqKW-;)56hm$71Rkh{lYf^r+0{_iY_dHh8%c1p0_ql!oSSVR{S5m%^GsfZ>dJ~B;VwR`)D8#Pu^7
+;BuZJ|BpQ51HoQmL^>4dx(gH!u)D1sSL at bf`K-Y$9C>kIrxl)qC9<0}9GwPFyA>80a6s%AXEr4fB2#>
+F+|t=W_cfu-S%nMz;$q}o~g7iVmt<S!{sID>cxUSNnA$0u=B at v`C>ezZ5C+{K#C*<WR-DwNhdM{~SuV
+yhj!C;xD^T%Z`BEyCyy4*+-zf2{7q$zoHKTwO>+K*&wHrJBr)3A7XRG~Z?Qeo#$zF4cAeX=_gNp at q%*
+;ThT<3bl{qW!{2!hWod8EMxQbwF}a@(evCrAABI)mJjNZWyKk1YU{B at gt0C-SU>{CLsM2UJQqn0z2%M
+p^skAHq>Aa$e*sWS0|XQR000O82?eW2+AzdDrVIc8;V1wA5dZ)HaA|NaVqtS-aA9(DWpXZXd7WBqZ``
+;M{_bBvtPw~`*XkvQelhAp)4bdnC@#UF=@-WpxDt1lwIm88wd=j2|GhJOkw{5vJ7)yWt~4CZ4Cm#Up;
+xQb->G6mbefBnbW|!PiDJ6%R;$&;R*Hrc#kSYIWJN)E(+Q~w-6&D_nicl@#f5vWPRf4-hKAYjeRv~>X
+PQ0gqokePrs7KXn%64F-+n8lr4}0@>I+NN at h&e8tgVF16 at LuKc)Kg~sbgx9FmJ?xDNkOCcFT8G+mXB$
+B}Fp~Wa$NgpPKDxc`EFhV#{l`b_|LQ*si4wJdl0cq6B?gF<BhA)IF_PdsrJ5ii5EN2I?Xkw>3%+rtP|
+lOSL9DrVGtv!&_PxivP|oE-ngS$fanDPO>e3EF>d0V9&f1O$S_4x%&5)+b_jxjSp`#SW(tgDe^@!txv
+zOy89$#LpAVC{Q>2-AaSc%6}`@`jojb^??{KMIg at _|xfMAuxe?$odmtxUPmiC5Gtbd=%=(IL!F_nkby
+1{>)!Q|BP2~>Md;R+1h at ad>_;YD_b^@%0&e-%ylMN%Z=DU_v<jD1Y;Fg=6U`Lf#OqG%w2OfA?=66X$9
+}DDKc&^DknC!<NW`x{W0hpJPHSo#My_u06d8PN}-RykQ?Cytqaz)+_i=H-d{)}Np3tB4|Hbx8U>dLLM
+4+AU0VfC^l_%<(=SK6;@l90c?Qa>f|0saO1omm!cxF*ek%59@>1}1nGth+J1Msd&;{O8}SXcVHSY3LP
+DQ%S)rq=wKZV(YVz+mO(<A`R0Nc2fDpz~&m4HIDe25Xe<E!{w>kyVSELwP<(vDO(ek at 2*LjTy0Ubt1G
+J<=sV%(6uS0XI<q at z;9%K-*1eIJDo;&bdGZDEKtT}CsVU^5O^^({>F$2ik9$Mpg;5C4L5&vmt8z#ckl
+xZcE%;%!#0_ooLS_T$lo#YQBvKjqiM(0h!&^wHI(_5)AzRW*(+8#sG$%w&%)}f2#?$%-HoxE#h<6RS`
+UpuZJFCd-eEf<)AQvi0lK)3=r`9a$_Ka3={?7Z|w?Jsn$~`1EHzfINWK>D4)v(iaZ@=_UB)R_9CbQjp
+MR&~YZ9bm~t&gpO3QhE$!EdgJXzLUFVx(oqn#2DarjLxZmWhchpe0)<HQEaisx&Za1qt$NzPNd#KzEX
+SYri7%Yw}8gDqwk&gIr=oAyn!sKAa&wO|436vI2(L)Hc9&W{*G?XO-YdR7+|`51?RQ*I2Bz6g2?^AVY
+eh1=u50J9rr%Af7T+khi7T)>a=0`J|z|O(s5!KQ-O38m;mkb6s1hBqCw8VoxmkFv=0HyCh09j8vi=vg
+981#7e?x?T;Jkh@)#09We;izln~vMuuGq$CzX<+H;GgZ`jfJl<H{thc=gX^XbOcP1fj+Ex3jCr6*WE?
+{T5KO#N=oFL|XPEWJOc=6qt8TMF|fKr%n at F(*u&oB@~<KI7OgFLG^5I`?Y(d~tXC>ieXO>}!QYE3e&)
+KveJzONJHBzJ*L@@)6=i^MSW!b*{RaYwLaY(@e1X)~;-h9ypHR_G?!GYHxQR*p~LSRx!+7fW9NPeGdo
+|K==Zb?Uj-2y at BjDr++aa?{LUJ_mCUmUyqxEewa)vCjjJHV8IA`>>wsEyTjXN4LBA`kk7OD2u}*C_7S
++iK}yL=4OtrvvUm6zff208y};ukSmuS>^Bfq2!w=Gx&F7l at 3WXs)<$x$JtWKV_3KL%LAI_5XGg$X2af
+g$%#}Qh4>{7y~PC at I72sb=Z-AU1RjybO$pK3P1n73vv<Sk;E|BR~%AU;ZV96HCL6UoD3XZG-^hE`R)_
+cDkdOdQgxyc1!@TOe>?%BW%<&B2R#Y at hzElcEFq(_kIP4ZWxU?=zN(ZSXTgbv^zD8n;GaG?#Vn+*jCe
+aQNIw7g|M{7!OrIo_E({C}UJ{WHQ%tnsF4ki$)N~LuPZ`fpYYnS)`_OcbY|hJoY&5dAT1#nnNUyA$=m
+{o|O+SnhhJ<&-c>I42Ws#O%ZfWI(Csz9|3xDx`B5?_;Mv`(?;BoPZSdFA83`04ekEGC7fpDztN+$g|o
+uM!EjmuODsp at feAiJCS-w(0qM#=UahU at lU3FR&JVCb4o4noHcLz9`9dbL%W?_0G#v at Y^>E-Axr0LUjy
+p=(FK)DFB2NP5(t&2w()u7+2wX#BHGn>2FK|i$L9}7krz#UQvO?#=>4kS4%gmy0%MLvpnKAS*tmcwek
+Vug`T3k9Zj2{h7Mr9Q+3J;uYsoICgBTxvtDhMv?pLjrNg7c#HpMU*y`*ZQ>_8%XU*}=kDMH~!^iXB>j
+AB#{SY-KMooubWfP)3f-0!P}O%tY+!$SW3y(U>lrE1_M|+4w9Aw}6~?)uZNdK(>%XLM^cJMZP^l_ at SN
+{$e?IP^&YYj2%*y8^#b5Ga{2BvBz*zyzZ~!c+RDxwoixPG8;{0LilZlSjlcm1W5o2d3+y_{h2$DNlUg
+_dz{#*8e#n_Wt-*Zg8Q6STZrtJ}Lht!*|3ayqDUjVW^3LAkk3T>I9TzF^$BkTb^dYY>JV;j^?^fCR?7
+Ha;c#$xhJ&k<V^iTl$#)0vytYD7NvTr(*8L%;r!2P+w^K`HRfaXxla={bkQ73q9=FD@=o>V=X#?>T_r
+jk4tOf&i!5U?ZlA&r|#y@)l}<bj>mP?PImQ!P)6iOh|gEH^u>8di at T(__gxJuN){Lh6rF0_LF#Y2ppQ
+(V-Pxy at USC(1^0^0sdE{>dmY%asiyDtf2b at F0p0tfWV|W{V|-~E}{4J0AynH_ciEVEaV*kk11D1X+_L
+U1=0l3ZJ^F*LU`%R3i%-LEo5%3!Oc|1N}NnUNLMu~hd{7|@=dYP!TTCOo?!tu7ceR2eU(KR6SED7xDz
+Hh*FroPUbwdj3!+3XOT%ws!AUIy*Z=ST0=94RNV5pCDrm|u4nf#7+0|l0Yp9U}@|gIp11|Oq7DCD_!=
+|X_zq10o$#qu&@NgTZ?*A-16I++$ZGH}Fen;7hC4N#sfBA&t_%zExQQm<AH$Ae)*?w2ENAF1pS9FlP4
+L9dkH)GhCfN^`xdrV|p;P~BOOPyv at pMZzf51jiru!U`l-77j%AH{g6PJaLxjhd#+OTu at p>ExRZs?vm0
+U|)DM&tW*4;cd_2vMHib6`IvP!PGLHe%;#Ly;8UnBxHqC6f-1%y6Zqc`Izr=AZV|wi^7XuPjvxkX5Zc
+;s>EuCkq-dvNLxJ&Bp~TRJ;D!wWAO_w(WfTNN;lQar{-|_foSt7!+EQWR|7N%H)zo$E1>o<yt%R8wun
+ygYbp9xFHK&ZoA`U<G)mX_!|K^~IJvjgCOO9te!Cgfyrf%-JKMWN#V0O1nQ^}ZY6na1Um{fr$FQO0!-
+8BxRNxrG-`wEk$Xq~piPw1Jt%`Fzcei&|C0_zXd%!V^ErM>{q!9X_OY+H-3;MtctH+E4yRLw_)37j)!
+9EMp*iLO>je7yBf{Y$$9TE?R5h`GF`9f0|pUo0#_xb3VLq{V;YkhvZ3y$pGdf3G at Pob*}=X|})2FTon
+^mspEbCnSxJCl1cKBqv+^BnQSLNQnqlPzN?5!~&XN?LJq_Ees1G9LI;C=<5NJLqA}Ulau8|F~zSl4CA
+6WJkP)G7w_RZ8sg1ys_Y+0}RPL?jb`25eN}MfN4=M`o-49v$(<Exnx~UOO_^uxlc}Ja2NA55<=yZTA}
+u7a&@(osw`7@`AXsa0)B<~F?V-}yulFu8apmKqaOb7(RU_iIT9 at nI7Xa-Cpy70!(`CI9~=(GpenShpX
+az at x~FPjzW|cLzfg$Euc4i);l~MH{0N222b$Io5r6Jj%gnvIbwDg<Gq~iCf^Bn%`P-R5t*KiCvy(-<0
+A`r~g-)&*mF3>l_qhk0IIAm?E-mXf>1t&o*xy};*~Ht!g{;lZOBVU;hDm00DM$l}+0HoKEOW&Cbc=%~
+-r|HwbLtL00{QX4v=d744YvBTwj(2z at b@CnlR_2{@*$r%&45iiDFC>ui850(_PMUscve@~WIX_E{|ni
+$Jw0&1{rQrMJp(U?C4&WAI$yp5@!!B{yAuFl6RW+9v8Bg9{x5Lwh`{w6%A2{2N69yX3}!5MwwQy_xUw
+e%Dafr^M}Pjd;AP)m{?FB at g`Rk*rf$vot08v^lLIifS=a`<RMe>5bkc45W&gJj(Df=^!HP*?Gp+F3HC
+f?xEjG-^=;HrSO9KQH0000800{-FND8zROuG>P00uq)01*HH0B~t=FJo<FZ*X*JZ*FrgaCyx;{cqdIm
+A~t+7%&JZwGz|qVee3*KAdZNli+qYM(kZIng+y(97$7CB+DV~=!*XD_daIG8A_I%WLwn0Zlw8m^S<VN
+%~KRb6SI+x%0*STx+;y3WiHlD)zxM)x!WjFH at eJpT_~|pjS||3wi3Bo=~DH3sxnh^vFuv$o3d(uBXnt
+6S+-iXO0*lbove#$DT`v4h<C89QPNbUSSnqvVP3X9phw+qgv{{Ec`WN%m3b^OS;Bu!vl9TdRg<M^AC)
+RaEgPduB5GaR&tk1g)ySfU*FNeDa4uWblz9G}$TOR&EAldKC$%()Jp)d}T?I&q40dYMs<MUUMd2X_Us
+hF7RF8l)Fd|n*ughdIiGYo(rrL@$U3G2Os5BLNTUSjh<kD0{*Q%7iPk7y`E3>w$3geam{=lw+XW>Ai$
+4$N?1YV<1=Hm9Jo16F7x3}q=>+f&oc5Y%<KFX#9rW$(;a3;}Zu0A<P(}{q;@2X}i+smqKo2r<L)wWHu
+wn#U?n?j{qpg<O>`ji!2u7>HdN|(Bn&2COWyy4EM^l_t9F&mEER=FC;yV>2m9p;KElgv^({nPFB`}Fe
+S^38R6_4fT-m?lf>26XJxu&HZxVUmqB8`bZ-y?g)e$Jgnbi`zHXx0A^P)KYBay-HbRDe3Wa&5R?KHnT
+Ir9wmnVzE>cw612i+vZ$7SRar|5XtNNDg#cCQws28eQj%O}Evsu>%B_k?v0|$#vA9<|L;Lwu+FuTWy`
+j+n6CY)9?xQnh7<0zu1E2SC#!{#nyA!nBEpS+TWLn426Pf3hLsR?DjG;Bm4S%uaYNJ4nAFP<2%vl{Q3
+}ZQ~R|0H+yEI9!8v`yGD;^N(7OhAjQ#;WwJfvb%yJ%(+%Qh;zPs!jEMY`;Ck*92J9A0y~#(q8ju`1P|
+1y|b0B^WmXZV>xgH46ibsFQjJcE>XSU?&C4z=g-nXCM~2b(3cTjU`Ksr8^j*N_2IO2FBkPAjP}A4KzD
+<%rsqH7aDXAD3)E(;*ybQO%iC6UWEss-A2MaDFoBKESNUr>{_*`Y148xY_bXhQ?hNFX#is`$~m3Ex`c
+ZX?uUqlVpm0T5wU#y5hp)4^wAL^%iVM<;SMu0a|Sz`eVsO0#qCweEpg^E!4K1Z82 at 5c6!ciA5}=QwS~
+;!BJB306SLY at c3!-}A_#217Ucmz9LcaosEF0Wd63@{yW%q at 8P{sN0QRiO_f0Gxz#=Ho|CmU7NDR9Jk6
+{duBlZ|)0*Z}N!vA~t_+{)av=dm~7{IEBKAJ6044R}EOn8bjR2Fn1-ou_E>j~yBTfp%@=9T^1xqTuYv
+v=w;Mw&_&Ag>Jz4cd{_bLu!y#^u8-8CeUQp9dv=v;YO{?szE8L@<BIMxdk^b9%Q4 at 3UKt(;pL46c%UX
+Lz3v+FSqV?f<`W>jQGe?+;0KV<X9CD$^uG{@SydK0)NGKo27XB~Y=#g@>cU?7#0qL*4_OTBSakh3jd&
+vLu^J|vC<k`N$JrS~89?cSYL=BbD&BZu5wmLpoWe1OPF8hgJHq65zNWp_4+;bacDL%<x@!}ABAPSsV!
+DNSj_EK+T+;Oe0oHgM|3kDIY()}J7=MHNj^h7wk3X&*<L`|<$xiQnxDydM^+~sMS3oeTJ&wfR7ztV#p
+x}>u9s at zKjbk8UQB>;__Y_v3S*8z*l`fR~2L6yIz56?S--2I&yL2AavfV@;9?=a9pirc6n#9pP-bC0B
+w+iqA%dAU4^7tjX0x>{bZSE=fp$+b;l+}X12Yho-f32%fH`S-zaTzXXO at M_z((Y=72sERUV_%D++gfF
+MwF8#%iD1sq!Ju~&AJ9gfVfONv|IbI7PhjK$2O%&{A~H^Gqsavy!_=-C84!PrvDJHe_N|ZX5Au`Vc3V
++)+a-oR7%}qkN at g2$(xoEC+vH0?{GhgV>)BZmO)Y5g(tV&CJR@@OV|83NfE>Gu?~sKu3<gRX8<hoQhs
+&7kRZ+<?;op24Tz0t7C>K*@_lhw_H1}zN<Ek<TYVZo$!So?JDxen>7di;eq_~jB>>x|s(lt<E3(14cg
+-X_mh|NP8JEk~3z+nNw9ul9Und1v#?sc77r-Sa)z?U`ToJZ-p5WI-9DKgve5kUzblp_Hr7XHM7wg==q
+fydX7MkxkZZv(*Ca7=CJX(M4KY6w1FI0prhAyz1`oKZAN<~s({F9ezx?t<Z3ECy<VQ at vTHBimFuQ{FH
+SnDY;@LFL!@zeoJvGXCg;W}-iMW217*FwtL>JskMXUs<)}X{J~npc%3oFPfT~8KlkGW-g|BhQSy(@af
+}B*ZA*p2GK5LUU=arnQBg5cU%(afHyD}cux*u7+BigITchVYL&RW5X%m$A%sZ=xmO9v!!z)ql?TuoAe
+>M~OrV~N at 9pjPf*}iptXDb%<RKms2K*`{wdlFYT1Z`TtxW|6w{G+Ul6$Xq6sO?42MJxy&Giq06Dnc_R
+g==LDULHjvjL{n3s}ux>s_t+o5z|S;#f>Sz5jm18>}KFMsMpv;RfFd|4Bkf0Xxw1-0a#7=;IBjl3XkC
+mI`2d_L%Lkz2I#l(;kr%SDbDxZ1AbuySo8EbLdhH<Q=_)hi)vBe2s at 7%?63CEwyy0;-Z5g338ka41pm
+}Bni6*<N-xU`EiTwqN{vlblu)BjjrOiWCKF{#gww7qN?sG;cfx(70fIk|Gqa&Gv>-*V>~h9ij-EIl;D
+aLa)7xf!U5QqN~xE0s3ClX->%@6;xz)_T|4tricPyM=+ at 5hF4__|Ie4ZVR(bcA?yzjK4Fvfn5d at P$bO
+s5#5Y*YLS9B5<+G9wYL=OHj1NrRcd%);WWILVdK)cYh-w4>479_)V8hJ0VDxQMgQ=$C?{~?p0^$WK?8
+gV}g!9{x#h*$#A^CS at 6TwMO|#p~;6B!#e)-d_hk9LrG-ffLyh6N81D5yn0-KD;k2a*Pmm%!i!@>nEGa
+w5M5bS1)k&9^-vb<~e-tdHm+x?cI+TKU|-XiAxundwxT~gCLo6G(h<JpitYYZoLt at 6?p~vhc(cRgiQ8
+97CPV4T2$3?C*IuM-P|V8AjlWuz1mi=O|F3N;=hvLp{WaX>x5{*<{ebk&yws4#rXN6?a_A{1}0BsUE|
+X;+`X<ea;2Vo^STm}32^gRiW^4V0Z-gVf78G6Mjn$Rll@#NjtCq}aWwsvQk?9g{!Q{N)(;?1H)*brVX
+Dk_>}O8UV7D!XZS1)MQl5hSr3NRuF6niorH5dGjSd;&jo}1#O?dD6H<=22a|1DFd)gCc?1_ghd!E>X_
+SLQ!{o&Xb$CvH^mtY$Rom{xQ)@YAB9LT38UO_*;Lpx?4;rue>7SN!Fb6ba;^>1lIih7biO;GH`J$nrD
+;r(+s^p at Wx1U<$MT=5V7dbYR{#z~eaW{F$BAAP%8$X7E1!>CsW!nbM95h~8%V==}^?qGUqfb=#2hR{n
+QKlO)iKtM^9<GW5()B0$}?CnE13)h8mQv7^*D=2WE^_I~z*@>VXRxrCv)is&&KQADj8-M5cE-b4wSxP
+Iz^lTV%EF50#{rLW>4;tOGCYGWHURgRZ$ZRX8K(Sx;!W_nXCBfQ%^hbQ$Am04<D>yegxDjJmeq|H(Wz
+Fzru<;FM%|L_Q9<#Cj<(FU1(6j-{lA at 7@tv8_X2k<)mEA$Db!@32n3mDn&er~RG2SZ0ggp&ySFXyMTy
+DveTyy9`Zr}0%qA>4P6Q&F7(wFJB&qt#~_R6sI{zJv93nJhI{cvmO(GQqx+BoSBFz?{pAyXz|?ekC73
+r}-roDB}lTx;f6=q-)it;ZyMx!pjazsBE={CV|%qVpI_>woM|5dvPB<jfbETWMzM{ZL}F4qInT5PQlO
+21??WStWYft8FStr!t=?&vvAAN&Yr=f+SA+t$<XODjA24<N5^z{Q~z$1c&Hts&rvc+;$-;TD-*=c9CL
++g0mClJ!rqak%<jD)*A1QT>A;*Tf)JWD2V&@;V`~aNWjdP+`e(LRmF2sJ#UF<3N-J<jF4+zD?IfWq=7
+-dAaz*bqIFE%S<Jug05faA}agk-J1|zOC%r at c-=sY`At;lV=4f at UzdUJ7BVuuQD!>6GgKdY#Aj_$9*c
+Ee^5-qx=jamxucWo6ZN3t6RW6~rdQMEqD$KcZ}fskUklmP3U4eA-55_w2K(ZH;wQWX at LZz_jQB$E{0Y
+v$bDH8G;{eIPj?~9(~cozc?oq4;TNcsu$diUtjq+rues2z7cx=eC4}w+J#Fn0vbcJ*8z|O-CK5k&*>q
+J8)?`W+P=nRz)OXZ+=)b!)?q9dWS0HzQN}oG-3(&HXjpEav at vAhR|W(pa at k7s)_=r6tnUHfxsw_F^YD
+B+hqoGQb)rYgCbEDBgjJ_r&jAfw#ZfeW;jDQ4q)u%|Dm^g&*%kAM8z7uAIQ{cMlfb#{?u5MK#gdVy)!
+xS;Iq1J0$PM~4p3V*qWC2}?NcVS-B7eI61P;D(I6i6$JRyp(cW(5=6aX4AK1d0B0>ZVn7(y>DvRQYW^
+77ktZ_uoD>U&3>g!~sbG7UiK6isBI at 6}${-}zsnVaQ~S2FrH-sx!?i$_rol(7<H;C7LDTCji!)(=kB5
+t(5xR`;|T at Z_$_ldRf?29r;DBj7SI7cI*eBhGzoI&*sddM!6>`*AY*%q^V&)=m|LoZIgkRLoi<{Wt%s
+8Y&j<CK*SW=sFgEyP7SQ+iDI;Jg_0-w(a6f-vad81d{kH4`{m^03<YFkC)=6EoqNwm;cZDVI_7+fMgb
+;<Ln&MP;QmWncT2>db`H`!e5uwocTQsRXRs?4jds5e$*|r%g{7&TNV(o{+?CjU3)tsc{}!|_ at GDP3|K
+idr%cfS1u5yh^v$N$9eCFmK*|e(J;_qz0;ZtNIMX83)!r=O at xaAds*9V9eh&x#R$g9V)sALXzc+09w7
+j}5eCDy$VS6&IhR;;mWwwcJ{QSMCImH(&f<681(b{D*1K^ubW=|g%}ALSFTUFlXeYn9?JL7taxVggU~
+O3Bm0)T$_e6_G5~)mg5=2elYHlZmh|ojAq~i-l|3sVn>;QO=PVy`yHWSaPI at kSGL9ybgQ}g at eS_{(NO
+<UOzMoT>kq%XhqxXhNXDI+#z;uLtg_jZKv at Wu>PBw&8;yO7C+<kb<<SM-eC$yr}2gF#$KXV0JuwRNJc
+b>mc5Fl{fqfWP{4}i&M|fFyczC3Hyio;Z~ya5F0))ENfL{fhap+H%^b&=jTP1Wf*<!hNrgp(aK_yYsQ
+1>8?!V+r?xlJ9{AsT^sJzKvLBiAE+?oAl%ppM~VE*mxp0ad4e4Hh$MN<|O>MWsl+`i%xtNAa)8(hx^(
+PJo9I>0udYIfArZfno)hw8i29R3}Gg_EYJplJ$@r`~Zv&As8^qmY`;67P00gmHVZ%^B_RkU|bukZ1aC
+CO9W>ra$9@;f|ATdPL%w5Bm_f><1}zn<4I$&v+({Fmis>`cN$1i0e-hJAlp(>DmgF4VmtG;QK3eya$#
+$=>r~wz4Qm!^ZX_kD=T-o`bs$Ex85^~kZXyw&Pjp2>j#L`O0w5;wd_RPg*l*hCZ0O+%D%M1<|>3Xdbv
+ToU=6d>mEYp<2Pfbr_=lmv&rKkF;~!o2KVADf^Ob(4b|&K2_BWaDf>^5$z0SmkpoowTHHF}ZA;a+guP
+%l;+g%<Em|oWSM{V at O*P>bvUtFvBFhZ@>{?XLbJPg=&- at T#<_S6o8PjsdZ3xZ}(54zWl;Z<@}<9{1k3
+;kk`&4L5kXw*aXsgQ=3e4P9P1JyDeo)>IO+Y^Eg8}6PV?!H0JXGG9BHxf<m^K9tQ3dD8r{oAAH^GOg>
+O))Im(18~&HJI&F_%zeJ-)4&6dYlM*Qs$#^zriHn$nkC58gXEQKY={?e^5&U1QY-O00;mH1*=Fo_M~k
+wBLD#EdjJ3r0001RX>c!OZ+C8NZ((FEaCz-L{d3zkmcRS2z$%jw)yj;M?e5IE<L+hCbmQAJ$;3(9J+F
+_ZL`Y&yky?VZt){uZ{oV%v0w5(j+54E;TTQ2tNZ{e&;o*G)UewiEB*~&}+FB-w$k&^yZbUj$Rnayw;o
+k=b`uTjBo3C=6=0)5#d7;dsrEE5-vOj-TRcXE#)pD7aOY?J`uVu5{NZYou-!?_sEUJ2Ke%I1`Q!5<J{
+ at U6uja+XQc_9xDntFSDAmC#fsX~YcqOAUw(&HCT&ysg9&%}v%SGV#&-p=Kw5vSDnd0kiaanS6$v`_$d
+fn?g`n>e|aWmeU(%5UR!buCrg)<u!e%z&G;R#K!&@Z*Gj- at kh;|JF*?H~{n$y8-~kL5C-hSEVu#PD|C
+K1<(*4(u}6!MXFZc=W3lc^HtY%U1hSc-QH~9oObVMRn4nNZHl~+x6M at 4>!y}+DsX+$CQ<n>@FUBiLAr
+&hHmfO-Z{Raa=U43}$#TFaRaewFk+->O)Ks+P23{w)ggXH|ef#Xi=?~A7=RduB{_5=X^{ca~n8Uo=HJ
+~tu87HcpZR%<+m6`-IiDfyjGGIT;-fdGQnS_TjY>G$#YXM7{#`Be&YlN$tQr2M)&Dy4UUS_gv5_lRmR
+I+I|O;r^tnYDS5nI31)- at SkH?)B at JXUW-%)9=G>ZEhNV3*#46n!Ty3WexNEV+zy^AD(UU(!;W-=BdXb
+H#ICLOuvxu&pNHIWKFd1x?Im~WBA%*-+)_T1%aRYOm1GsX_jspSzDNYOqG1f&wxAMy?dj7>;us at E7Sc
+cd`A%67ry0le6**x&+E@#zXBe5mpps%{?(t8v(tZnJ{51J+5m|LwyFi9n!25%nCt)n60qN7sq!Yjmfz
+;{W>0_Q at pRes<_-Saevf&IELW9HT@~F>@a!2s+et0ABmc02eFy7HF#5fKKdx~3P1Bd~n<U2`v1Qucu8
+VpzPv%7qJb!R-kR-Sh6A+x|W6%b~RtaJRugBir9_K0n3XG>>4F4psA907_Pugklo8E?9(t5rEQWIe6%
+c29gG%51(D(K({7Bd*Yz{cIL?&VO|Rnu%Np8N=ZUBFy%-^&`Nss%s{6Mjk0q9iHPHK@}GG|S{dv<kKu
+tbN%;6V@=J(TM(i3o at ZDMJj;1P>9rW0}KWY at kg_g)KyT|*z1_3O$uXwut<+`mi)3F9g7bmL;${wVEIN
+<F}jBB2QmPj(0V5NcanVUrajthn-#awIymMhrgb!N8UqIuat(NqaKSM>(QOb2LHXTWh#HfR2duysG{y
+69oQrdYd?8Lw#Q518f;v97P<C}P1b}|Kr$<m^alf%aWp15;p%ds00J+&(>gMI50s&A+5EO;HmIZZO<Y
+ihoJ at M1)251g~J3s#Ih3yGKO at 1bvPa@bT9>qUbc^P?QodeHCw-dAm#4YH({@@*^pGMk$3s?1lcvfMDM
+v6ayG*$lx%Y9l`Wslqbhww5xfL6}5g56y=>Lzbi(FkN+dpnvqY!8-Hjf<Uu5{f{kfr9W?t4P<gEETuM
+;`aRUg>Ps5l5ZkCSw~jD*E}0tOgltr*o4N)XDx4FX9rIv_A6+%`QL{PKyZ=q(U{GVTDt}Z%3%|KXE22
+b?wrVvU)(O-Am~KP$Zx0<f4zHwvb4U*%h5!nW!53SPBq@=M;D>Uat7(7_v<t9Qy{*FV0ALHLxybFXyO
+lpHYg~hv at M!w#7zMFhmVtv)%zg&z_m#G1n9blKY#_(9|2~!%FEse=cD<i^?}%y4CH~}O)8$mzZY30RX
+J|ND!rEI3&yYCfb($nGWp^8Tl67fGp=#?aJ6tveTn<zLVP2lCsXnJ9y-+qtUpyG?!F!vh;ge~*^fR at U
+#qV#&XM*PA0PFeYp53=#RqhzKaOJdydn>a6Z~Jd5wPV6{x8nj^+rYXRwxOsXxdb at I*CS8<f-G)1RjGG
+mt4uMIzfk6ZznWc<^_22;(J)i{M!m#{nFamk+Hvl7;K7wg_8iO at +L_lP;?8}s$e;8(1u~K9o6u4Y~SK
+Kn(sjq82zTIGlkpXqdN}ydS)Cjt{vdyY-iBJb-vNVrY{jR#vhtdm|6ZL8#1#>*?=7^aPw9zIEdv|$n{
+KS8Ni#@5?#7HEjszG+n?w$WBwi2<SR#`e+2?Ro}3>(zHkRS(}MvLqFT^b<M20?edFRVG_;<^z%<c7#f
+dUb=f{sP#Frvs)TR^ou3tPkzVL|f9zzx|ngaIl=L<-s;4n(wL8$1PRj%~xEd;btk%eL1^|IkE at RkvcV
+}pr^UR5PD#{W+|M4sO^bvkc64D2$1fni7lJJ#S-0uYV3E6fc_0<gt#e6hX{VW3drj30Rm>|pB-0(3Ee
+{DEN25jAVcQ)^NQy1CcdC)qg<i4rC1BkW*em<zz-I5XU+f*fXKC0;QTMsoYWGl1>+(2+Z((a50>{hr_
++@>c9=(}4U1|7BHGSIEUHm>u|%UmZOL`0P{rtXs<^XgctRutzj9jYd<RKKD<czcY>&oY1|K1YJWb3)E
+&RzWCzmCasrh;u>i`!hFgCwo?jgk<M^;c?eFC{eey(k<g?@=DJBs+Lb at I4%HqAK@<U+)>XS)5xs$7+q
+AI2Tn52sXcjcBN-)?Yesh8Y9|y~zC#N<CKF)}3Sz$C5C<?f+tnA!ERS88Vrh&l{rH=;!@g?s)P`Fc?!
+rVe}`X;~-B}NM3;^q$Sw{K5G7aGmWO$)O0y#e%4fkh-9ieN`}_}Z<k1JSYmHyXV$yHkuje7oJb6GtRG
+ydVrXOm5>|pC$`}-R;fd?oE!K21PrC4yO>3+Jd4PRCT^Y&k`Gya*ozH;tuMvx)D`d;}ktkc63iITMb3
+g97-8Gn-3OR59&Xx(;H*MVUWjqE<C`~EHlIIrmUj_T`BPyatZNaK>iA&STtyaBf+x-d%|#LmYQ;4%9a
+^QJ4d4Qy2T(_fq}Mhy4i4ZwdqSO)4CH~eI>&ZOmnmsQvg!}H6Op~YccKO51SuH7hZdWc1+MrPamFxvu
+O}(fX4)INM at Lptj@!^cZ%MclrJl=;J!Q4LCnaB1-tenk>A>QxM))hk;!y@!Z4eBEkTa!UtlQbi>>}Km
+$iQGPY;COZ7vnP@~p;YrDcy3iH!8Hfr!)GV#3AI#NQFFtUnP?j*k4-Y_>U&JHR$`Wj+WBt=~!!)X1RO
+ji|F%ug at r2i#a2B5(@SnQePc?)o%hj8D2s6J)xy_mF0_^G=h`+(;f*p88RZ2VYp<Ct20I3Sgsp(0X$G
+znk1M41aLMR7%wr1LXW%o0vppV#}w2faQncm?oVJP(+o2VCqqH`=tGasN6#3A!*?(ixYaI3{T!5S{Zf
+|8W(Do-R4E76 at 9;8J&EfZ&V$j|Y&u{uMu;QGxK*!S30KBz&HVXG23ap}1(nv29$Mj&paB{^DwV}=B?E
+<Cj9z9DJ(q;@I`z?rFKNXZV0DBXi25ca1RykOMU~ejbU^J(^mL<HAY at akBOTiDy@){&92v4z2w*(H2l
+o^^+n8M4^<bhSkTosx>UGRIC%lQS$=t28WwHpvL-kjLjoWvGJ*xOUQm;l7d08h1KE~ISYbaO!V0meiF
+5_Js|!@hQ40ckLan2Fi8vy$d*U86>qw{qT+UyMO|ak>zBLop1Z4P{FmP-vv)MZx(=0tR{o!E|V~pk4}
+WxX4ipmKt{gN#J4!9uJrEV0|P#<nVE6G01X-YvjPfUQ7g3_(in at D-Z~a1nP#=hH02zrS**MBqqKT;;c
+)ofkpkD_s(0G at k2F6KFUFs_Q(^?b<~GO6Vc1VsTl2L@$6P0bY~Jsp-GU%;tgA51F)QhlJz=QijuMjkm
+k)Hfz&~eSYQB<zZB%;sWt- at yscW?PVBtkqp=c)FT|oqm+`1CrF=sB?+5(LhIqRpAMA)%#8Z`-K246(j
+JwAHam5A!zQT=+p at F;hFtI1_TUOb4UfQ8DWq$0|MXjo~$Vi;P5+7C at kLv<_215iaIrr#iEn4>o7o1m5
+u9)sxc}F(eIyH)XDo$V1mq{2)0GBW)Jp_ycX8jg?r9zf-$u7R+&Kw(=r${H3r5#-YcxDqrWAbx_x&nT
+hQ$TgeraBi?c%dp_`Fs&TGJS4Rinq#=H-p!THH=ww^$)t}>Yt0gd(pY(<R5a~_0;~k^uf|=ixMqz(4*
+3+_KBSDuIq>HTfz>V<`i_xr|6s+M~{6xhhEqsrjCF$dI95S&)>dFUcG+xd>k}N6Ktof7Sag5$v0<`RB
+~i1cJu>-oOU^T`s?0?C~#2?4k!TNSMjFWU<8z&f`@(7u?usy-;kb-blkjSaZTA|RjDR~?Z1S+=WgVm*
+}0qfCt1Zh@{1+`Md+SljmoZ&4u^KxM?0s8-XXQ8e3 at GvvttB|0pUL2N;Vz)t<7kP(f3EA0Qkvp2Fo|^
+YYEOP4Wmo4;<vCQTS199+-~gEkg3bjv{vEJbJ#-F8vH*8*b3fKYJ#HRdTHYU4)BJGg6(AzMNQSDg(%z
+gjLk#Soy^1(4O$>cTcow!tgy8MSSUXIjY&{XG^}Z8=RFm_JNhjP7eNJJSQ;w8FV5#AgVr)FRp$eJ2aY
+a0J^V(zrubthD7skWvT8`2)h+CJO6RC*je&NsbKODV1 at MBb(;|QcGOt4eYd>>fCxDcKyat?da-j%>s$
+dbuuw2VZq{wzC+yZDduW{qkM#oAPRXvvlI7lbwfY?Q!NEr^R)+w^Yx&l87mj{bn;a~V7n;Y~B7AXkq%
+*KmFk33bKF&l4c^pa88t=F<P#b2;7uJd`Yd^idWk}OixXeUSUlixX25J3vTq%jiAe<WJ0*t`e0gn|VG
+P;?<1c$w)qvWl^LRyp8E>&)alZ8=54I_Ekqa*Y0X$p at qcC>bMuI_M5K9%o8=$0~dFT!1gMV}VNDWIw8
+0Ri*D*I^dAVpyk2;DKQ-*fpElj#KT=D0JO+&y>$l-O7FsOJqb=-yGntjUI}L3{Uksqe*9$4b^=fh>z@
+;>w{)}Z?q{9eCVFFb8`N#!7!<t#T at Pbd*$zPVc;z*SKcl4Gj>ff9^zh6qH-^Z?X&0SvAc0olx at m1AfL
+f%a+qIl at 8xvV5Z#X{$Ke5d6_|YTr{_RWfh?N8FM&cGzl%K{{3Y(!eGpXtEHLiJmg at OQf*s`o>`(QN(2
+?G}x4CgF+*(2DHm9n33q-sb2L?eS9r7~T}lby}Eb%=?d6DQk>LTxy8&>LzHoNfT%f(ZL$mrTGlK#RFN
+G>eK>pe6>b4A9)lE>?nR?P|MB$~B2{#=oO2_NGP3%fLVx$cY8y`*8H}ku7w=K9ijkLhDN-sEx0+Y*tm
+Kjm3Q)##2({;H~kjg|1t&MqWilxq)G!O)Iy|Nw+uYYyHzB`M0^+;Mog5TO8)R90#Lsk(o*Eot`c>4(q
+NXYCH#-3VIEMq0W-%xw+Yp(P;E1*=YYkXBknD6Z3tI`xS#r<Y(a%j!YBZ;l`bUL?<xB*!Uzi_038|<`
+lxzK%T%`9acxp-j+EgC}I;_CeMv9?7M7rngi=%<evN{UkZ<U^PdO`w!tz#Hd-PRS8_}FL!exX6`IFlt
+j8O75jVYzbaDp7L!v;CuO)~BU;(T|k0?2$(WO>S)S231b_1Ws%erbe(c?)BY=@iD)jpAFOU1#39FtD$
+R;*{e;HP`-79Ng~_~S|7N;1KEM}zw6Yy6h!gA`F5-hYV2BMUIJz!Fxts_<mm1^RJai*XOoLlJcd62JQ
+Onc<9sD&~}Icj%=PkmKVqWi%gO47J05V2f;ubS|UuU;m25`j5tby2P#_=J*u2e5)j@@gxB(CcUF%i{G
+cesKLPg(uywy;7MgxfR9G}*L{fll@;aR+NzPmcrZw3ond}E(Snx-ivmk^H&KrqoQcFHdkl&P;=9wIzJ
+GoUsvL<&=6ax0 at uPF1dizk=)9wqmO-yWvwspd0b~Kn#Hknec=!r4y$L_Zql%b$E<;bYzxSowCsQ(xK4
+2%>zagTgO3t*Nsi!?`?Lx8V`)2R2_JL6{*f}(5!AZ5f%w~dYkCL$hU4m$$y6Gy~2Q`eH3ODzr#I(b7W
+z8H4Y24F??_&*}t=f9H5{1xF(aDzaT)5*aAhlkxCeG#3fhre7*{`#x!#>#_F<wTTtwMxMV at dk`mWJao
+&!HjuPRaYPa at +(vcAQ~LujXR+vkB^#qK at glOAFRX&R#0NQV80(-c=FO{N$vrl&sp990}v_ji#Zvzfah
+5Mcs*A!9S@{V%ACk?GX2P`er6N&(zV2Mf}M7wQX1Y<Uei=5$%nbT?MeN{V7YXBGWtu^Qs|9J(P$zJ9Z
+fp)j4P{EL0=;69 at Z1Acj_t-5>q2GB}}IHAQ`C8Vj_0^9=H{guu`v{>Hgq$V&w`wQ7c_<MoezjF)Tc>g
+|8rILDB+&bulQl at a39Q=<vj(vUL%tmQUWYk~HGwan69TJlwTDG$1XFT`90D-cd5N(J`ADItZDxhnh*d
+A}I(K3EhmFV?agu>#Ju};rTsSd+;vS#5Cps0HxoAB~NF#IG4`PXug<+6f)F#VkaERg>HYkN8koGDxGb
+{wY$W(m#C#vFJ6M)l+a*^Zr17oS&NcfANXbHpu4<H2!OE}?7se)+}<{)W7fTGulJyTb}z#JO@%QO^{n
+tMMm&&9L3^Wd2YySIIM1o$By1fscx!kX3AYCXkBGjD84)Il@<ac0oEJJ`QeMTKC^ExpIpgage-`eb at q
+nr%N;zG+wbw@%U37KxSydI$p1C;!-kf+GfMPH*3qB;%IzSlB2;g)~c(Vdu1rz4hb$toVFp7gZk+y7?=
+w|70d5MrNFU1;@6DR>$V1XN25iCvZ8Te-!Xe^##{J@<RQ*)8mSl;06WrUt|BFZWNGwVc`-h<JaE>U-T
+o6zj|TmjyZg=P6_qYq#wd6{9L8f*mEMKyZwyIfHX*)%hdGJT|*ro&~;yf;jh5}lOC;)9hmpgik{BD_g
+K#Y!+&pm^j~Nu7^1phIplzVIxe=!djurOr+LS#I?=>u*hV4s^uyrhr#wDl35}(+12Qp2!Ftg2bdUNE~
+#>e{^vN^mx8lVA%LtzQkjb;KF at lkJ+BS`tG&kX056lOL}`@1I?x|fjvg$-hI4DeIuf;j>H$@@zK%IWH
+$&a=LiC_t_$T}{aovN7{demid76tApP5oh^S3M7Vdo20+(Wmn!9FUa`S;W+sJv2mBXnnbT-)uuN}T1h
+$!xC#Ti#+_FYM01Uvrly$%$P!Y~vY=Eh?`q3H_P at zRYqQ-pX29ExdatWmhEk#73<gA`a&H`_K~R{<E{
+t{p&Zs2Jn!z=tLcEzxqOmB>knifXX~g2kZAv?4EX){^5YSOlcn^$q}Lx^7cz#pp9b1{>KA3g~&DN(Un
+d!}YK at c<TVeAj`9w&)Zs?@jC$U{6(5&XgZkU$LHo24HhFh2(SZ0MusJ27%(T+Q5AE>D99H1vIT3T at 5F
+NdLve=gCihW{K9Dk>JN0*bYXN1T(;Z-hrB-gDsGM*>c!fmuVj-o4TfrQ{;a<Q{U^~h6rrGxB^7qeV_u
+vKY=dH8!yJoQm1g2DMuaq)a;S`R=@|S$G69zB*J?BaJ96eEcyaw}@IQl?9%M3#3HR+WJGZK}?%F=-9?
+e5$I!o<+@#)Wa0Dab84;mPUMojr%CvUm17VEu7xL(F_|jue9ycNCLYr;W~N-t0nXRc$D51*&D8mzZh;
+%>dlIb|jp_dp|M~;PD`sAqhJWLE7fB$XIT7fgv^vo;G~yTRImdbx58yK-sj;Xvq#KBv8$M1|9CB10n-
+f6t!M|Y}PGKF>|QHdOd6fDKr at tBqaa#&eEz)EHwt&B=lJExNgqCQ-Az+FxW)aSxlGgFc2T_-q?M+5gn
+cW)6PmlwQv0J6UxuWp_|SIg0&5389fWbu^@&l-|mFFYl$3dmCd<Yd}XmmLC?n4z`4J`s2Z&3#X}^~$l
+PXxJLaJh(L*&E>2!y4=~U!GoA~q{B<H}*NtoC>@!-U0hwll8?m?7s{0v0&ZB3Cg_-?z^L*PASG&IS54
+1Cn at f%bvZE|ar%8I9eBWEXMdf6T6k$-n7FfGKYXm|?Ju4tA5nw;4ODwSPZTkSXss2*Rm0P{A%zM+^QP
+bICa=1l1T!dy^R=roM7)sIhk5=GA7)v6(JM)+N6jR~Z|+9)R`wOlv3XM8P8;N^HQ}$(qJ|ty<KB=T)N
+VI*pU?Hnt$H{mvLC5A}%w6^kgJV3r-`72Qno4gNcu(EV;=EFOCO-Miri5Q3iL9D}tt_`liM&k=P<o(O
+0b3R|LH=epUg<8`|k5AI=ed|>=7mTmH87*Fp)*Wcej?poqW)q$3KFq#DzWm2)q(19VoC2t?hfqC>a-1
+v_G3g-oj@{qzUIKf`CyVmE94hHqft|Aru at U@NcFr}v5{4F2j(z>oNb;pO!j at m;WSKf`!z&6hAxwu|b(
+p>x%L?xY(VU>nX85*>m^tuVvxViSv&u at na{@v+qygn0W0}N<x(u~(v8Get(hddlz%$9Es$2OyIiiH7&
+7#PZ<V_z6ZpmT0it=D;0Y`S++6W`VH4+KlUO&po3gLL*tDPGUx(7hwo?!E~NdAA#{<=}GN{c!<(E({&
+9v&Pj9>>ZmEgJpU`I~u#H>CQuy7M?vE?5np2;7y{hW!IJBw9R^h3*5(Q8V=f#+uuK*M=#B>pV`~6^=E
+eX*6M*43tYmZGbg(GnD6q$4Pb;s>>PQdkW1DXQyQFxq3AHfmgC%9?#Kg4B0b+G%b^rm&U0;2JJ%XU&R
+X<JZ1^;*Yp^}ow`afBi%+W6n<(zpp?yf+G~G~f7bCl7QHQa&r(8U>V|OQ5(7|m<$)k?5=_TJ(8yOx5g
+u9mk*)QA&ME7Vkde7W|-8pk>m!9!I4d?`92K)Cq&vf9X2vZ>((O+}a18GHIbij{VbBKuJk1lLKUHKU)
+j!vHE6lNjUkdUI<p5Pd3zAN*iUj|u{zUk?#PG5IB%AQ-8>9~uewrhN at f`jEdbp+AHH3}#ZMOjhjP?4=
+1b%8ilGwvB7qSoP|*0zVtB6PNQv6zZW{!NKjnN#A50)|r?bb3JRG&YwTAy;4 at te_L$voe1{FuvADa;;
+u(Dh+^3k9Oh#WV+!CWE4<M(YgKE7UOWbKeoj{hDDYDQm~6kIS%<)H&ua(itd=^N4h_3hp%Ceaz%eBn?
+qH#^;}QHMy#Cy>|Ja3^2sdInjD)Y`zIS6B)w?YQJL#MZI1sYo5Qyp++KFwbUN^p4U_*rIycmyj*0xgr
+f{9O1zti)C7X$t<L*^ufVz2xR)TvKDD65$Ti$lOM2cRT&X-0zme&<hn-+^s)!QobrV{%8!@mBB#q)R>
+A3HZx<r~{N9(?+rk1~1vXqh)4BR7?L#5b)T at -<k8co+Ls-gHF*dc9s%jXdW38T_Y@{{u_?@civx#M#T
+&KjO0BS$kbiRa8_bO;<AWEp-}@qh3s659B#e8V_*+zt%b{LSg*NK>2Bj`9S=LS)#l#=Uido3*v7?jyD
+2`XoX8b>|y4PX%hqDOiFut0;sWSXIKpg<k+N-fL at P4=K%d5J$d{uzq5kkPEFp^;(9P2CwfR%-zOBY8P
+oT8v*n^;YLj411YR1BcW?6T23QYq5wtM(ER7H6S~2(E1()e#$)z59SC270>H!pA;w9#Xhxp(SO at VF`T
+)6R4HYwh=CEfmECa2efuPxI-Q&*MIig$l1z`f@*_+ti9hY|>xo9x8dl at y#;O@<dCxuq0VbTSrXp?15l
+o9ONcBRt0AZ{Es-WS;bA&ZaQUoj^X+wTv`vdgMrto+u3(_+nIB;5cEnzunWiKhf3m at 9^Xw9yf}-tLS6
+<yc1Y&*Z_z9ddY2zeAczQ6#iw+;yO>UX?GTb>E<T2>|N~rL%_JSw+ZDfj2FuXz|uzI8IfKBZU_2t0M~
+`#o&m<usCsedeSH?A;51TV>u((>x{57qsRLHF)_d0}96Yr%HK%m#4PMEt%C>ZbdseAF1q}L;i&hU-cc
+WN%5c<wLQ5)wtey<3oyFlv0*u5KSd at ROv^As%5_ at nQ|bU}2FJ~3z-ed>m;=k=!l309m&=|ul)FF@<xr
+)4m?tHPep)bt0e^|t^Nmsod~p&H<kGs;cxVgq|<9?#D0zK~3dj(MF^+I!&s9_+7=@jg^KU%b>gbj(=w
+dcYX5Ma{YEjMIjD0 at Fk+KQQol0be>>Ynm}%Pwxx>`%wgIzML*}Q~}-7AD*4jFNcPxnBC!~Fn|4bXRxp
+!v=zy#m3B4`=5*1iRuf(b!?Z!&#buXdt)qn#;BvUPKfVvl*J&49(&3B%=b&#eQ#|Hrhavpv)(tC&j`5
+1?wQ(@TQ^8KOmf2If01IYuvqJW__X=yTnQBhS3GUVxMsWXll67l|b29S2aV{^c->v<8 at QbMfJai9C8Z
+VyDJhvr|%%__TfxUAh5miwj4*=pSEVsHLW3Z~h!Aa{J3_{KtATIAqeFj%%6N&-Qtp(<O4x_am(9uts@
+dayGZ`>U&&39EB<L8dLZDWGa3R{Sj2-{J7>;S!2WX^7<AV!N8t~;XZpYF at I;HT4V&P^cBG0rgS;!Cxj
+k8ct8p6>SN2SeT7EbW^v-|OxU=V;W9KkwA9gx?XY?<^J at LicNpfrCtW01GR+lN<N4O(nIIkg_pP4biY
+3-vQ`Wu{uZn9*o_~OFczBaMH{pSO?c9q^&c3I!9&Y6n5ow1#7eQi%okM{4x-I=$Avb1c^#8x|%#&`Ql
+bz4qW??ifh=j5{5-_lx~%dH_-ioy at JWyt(S}gP at h^S>D5C9u*5y;Bl~rbJs^AQB0mXZ6Xxg*ad#c$V7
+=p=sP3-x`{eq at u8y%c>b>e3hwB&nu)2E2Pnu0wnMjvF^BppLJ`Ld6&0+t3-j8xzhx1ug8-n5%DAMIMt
+Gw0~iQ+}Ik&Ct{Of<H4Z3Kg&3KKea&y~V_?+!+ZmN`cEG~ry9q4;>Xy at so0iMzH{J2uy<D{@=urh@>2
+)6?G)RM_nngyWs13pBA5 at 81BB4f`z2a`ROrc%)R9(IMkpVeX|UC?*7b0wCZ|aQQM8wquHjR_vy#uY74
+>9EK00K+fTxk}-=p`WR at Q&Z(FNItD-c4({IH^xtdt-)ZviG4XxP>!8iHJ$?<s&+b7O(jfLQ3^u?zhp{
+<9#Kk5?McLnI+rTErVjXRGyfAUV>Pn>kUc}2ED!hsq<vNY3FU6n11mVZh{@EylXXf<Shpy9Z?9|TmfH
+)^VC^St*GCI2RWv*R3h93=d?kH+?=;dWqUtSKM&hYORDaD91#0WDlt$T5ZJ!xTyN?17;h;+nfe0lEX@
+pyu^x%s7;(L1_mtK-bkd!15-cO5~vPneK^r+9lb*nckTc!@?2iihu)c#U=wjA(PdbOZQrPV5=?5ET=R
+v(vDDWx>5c;JyfuF&!LWr8r+_*ZD<+-Kl!p6^rxq*?PCW*-12f+G(`|7Ap4m^FSSm%}DG>rVaW6ooTA
+?YxZ1W+;VuuR$jHL at amAXLV<bDs~V&A1kcWn5{~ALu}T(IOMiPoAKp`ZNSGXIn?1C#L4(H7I`q>q_pj
+=7jz#mHI$aDTk*2I_5lKqSl3V(RP%d*M_d6m*s)ow7xPs0b+hxZvr%Tc%46)&7cd~Z}aNZlFXIxjj5B
+aW&Nc at c7SRObGdElYq+niI52*jd)sR at C2D-WI2Vmwe(*<1Eri~dQ5u8?I99q{A)VTFU>S$|Bo at qYnOO
+9KQH0000800{-FNai)y_>c+!04yH>01*HH0B~t=FJ*XRWpH$9Z*FrgaCy~PO>^5g621FZpgfh5R3&qE
+G9L$R<=`ZC?Apo4I!^X5Go^w^NWz!|H~=YG`|J001Efewa=f*tRaG2O0ve5n?$@uO^Yino$5fS-w#JL
+vt4vgDXY1A4)|Dt_`XE>8{QUfE>1-k9^JQJtPR-{+7o~NTkPC0~x>ED-d=|#(O1a9~+&9D0wbW)RR<K
++yc2nV0sbn*{)MYZ?D3e*2c>UPSAtU%#__MRKG?(6sPrAHv&bo2y@?>@<@PdP{rB`H0sOCHJx|w-vd?
+oW-(&xcMV{32WoifVFd~ZNxwbN!LbZ2tc=oh2^7qhiFW%#Z3mD7uwKL22=Yg?Oae6WT65_eM5!EM*d2
+r078Y>`T1Y$X;-EXj(ftne`5mphDf>aSWmRVY(+m%rP8?5}mMK1t_Q*xs|9ST(z*LBghK?L5NCdD?kz
+WiOUkL*&}1r0d0N<*Tm>6Rf$+os!uuF0Qg8D0f${)=CuCSE4R2DtnR1N{LOdB<vEa$FLUK3mHta8Qs|
+L`ysP8wkV|e*0LMzs#@mCYy`F}MH*(&Ds%*lf7fuddMa)PJ95EY6A{&>v426x3F%ffquE{IlT#aQYyY
+~|dG=PjXD>DKgi at T1h0HS7X+=l3AX5l2r_##0T|dV*GS}I^)=K3RHbxfesep;&X<3zX5YUXIpJBc(i4
+0UQ`;@uP*kH0}=|=iBPw-FKcwgt0E)k9G at DLOxRbDttv4IbeL)K72IpQ&_2w-?EvXZGKXi^(p&F5pU@
+ at 2G6FM3S){JeN2e*0rTLzX4 at kH=5L2_K)9#DQT*cSYp<;er$zaj9d*JbWKNsNJhv7K=;@H4`eaE>kew
+jHg|uxsP7?xn0gv;&s!I`M6_oD!P{DbH;u??|9UD)$9buk~LCra%6~lta!7@!e+bignd!8bkCRlOuY;
+f`^!0nl4Zo`cQZ=<wAze$Ob<L`&A*kihXBU83)HgiK6{ht%ab#CQg?yLVMsm|k^KLqSW2Cv?h<{2$uz
+Tf!(wtJDM-bGv0HPovNjWIm{vYGIZHPZ3{0mw6PJeKSNIULJg!ri*e?XkVuuW0E_I4@*nu)Tn at TO#--
+&T<x5}Zc1S=deQ<!D$g^F+ at v&x$hDvu>b5li4fOSY!uf&@lwN^K0XDsILH5`q!927DnCkb>UViegJYD
+Dm~p=hjB1D1?+rHGK_iGKG?})zvx?mpQz7fB_#FGo&g<uIyNV$S9DlzS3y`De0g_feFxXiYWs`&$MF-
+M3mVwmpj_X2Fk-CR4a{B+zGJqu3bUx)fH+_wFZelXp at CSG%bQ!I1~5Satwn``NepNKTfY!VC5`K=j|k
+zf%n?C3zgCn^}$QI#HRQp_D4%&naSWIhD~vFsl-7+WsSH#wRWmqsZ-vE+#u at Y0(7XP%QZpM3rjc-Zut
+N%<VOMr&!f>kIXG_zi9z)y<c1W!MhSBiVxmwzR8cGA9wO#(ZF=#}VO}CUNi61!6=#p|^t?mu(xfaPhL
+lg84j3^0YQNC{E1hRYj&#<UL9fW-+vig{yRi?w<C$_4_GqZIWsMY9bI{KN$ZRb)tc8LA!FecBYgA&+x
+>yYfWkl~^_>p)KxuxU#oJ;Pv%R*!7h5y|IQ-RzF>S-_=7`JQcV4Ww<^$_(g#KWjY(SP3I2EV<?Er2_|
+#sGNMMy4(nkbh6Y3Y-E4urZ-R(mV*2BTGiLVR~(NYSgm$*VGe{chtwYCH6gyUk0k(g48HlbcSs&StUk
+cdI6DDL1A3 at 9n!eCSV&T29ng at mbx6{!0=W{kB7(sFfUjEHV2&1{puz_}Dk+-5yoS{LTQ^U~=WirgiS;
+Cu47LI&z3NN!hArB)&wH_b9$ncYb3wzr*G6&2jWPdv4bcd)o}EuR%}&&kUtIowgX9nY4U!~nXWxH+98
+nC}4bdzu6=|wx5t{*I1j~C=ML75kh>TKufVwFN2)LhEc;dW+{k`n%Z*&v3BwZU8q=Uu9MSQx5doFCI7
+~Zfg8b9i7ZBzue1vmcQ7X3I&#7)!aAa$W>II*oiFw=ulG9OUhhk_A&!COr-WNUIO2?XiVwcg;Hfi0O*
++m_S8WzY>-7G*Qbjc|fEik+?9VcY8ItARc0o0#QfQF3`n#Q1he25_Dk_k!qjsH`5~Hv~%>_H0U%RG>`
+_!%Tuy=<CWBpvF+HL+5RFtuP!|BSj?{on$haoak1jVr45xnK_N?v-_|vb_Ry}$Wa%mc#LHCdckT4y(9
+IJlja1FcRkPktZ~x&gF3n<({X1-gk|UHX~ofAGS!u)ZX;kFZ<($yzka;Cy}z2 at Tz<Y0;ydxyX234h4(
+b=`EDY-us0Q7R@}XC!Wc1sQ at 1PqPl9X<!0MD1ZUk^zM`n8chG!`kp(gtD{g9p|;2?cG2MKxZdILUGwp
+%O+k-crS$4lM<_4jo=1V^hpns7N_Dx73!pX?KsVmGtFJ3rkx^lV%qzdAbPozv<Z-BFCr^QE<x*I`jNg
+F*{Sxz|tBWO;wjVJ8cP at IFxTAzS}_QuZd)nQ?pqCtQ15 at M<h&{gho at 2g2}!I?aMTzIECA*7k(CnR)Z5
+5`9M at mPkC_g>P7AIrwy~HUsArrX6$%P=~fRgWuy|}OO@&+MGDbA*BlUB?COBJY(}JPDi-O(it}T?;@q
+CBE;zz|EEYr`T)_k74`?s0=o_E7PP}?W4HQv(X362%=%BiSSkv_}DER;G6>Z48AbMnuRyC>$wh);kw0
+iNNSw9EPq<0NxHlcCQ^abPXwu<OnBCh%7%qgx=Te>Y5oUK$qk2isiuKF-&&szn_DCz^7M!8Vl!;L|+*
+PPQ&{d2m%x%zx1K3%@~$K|`L&*JSz@!{jWcz=2S=0 at N<LGg*tukSv-=jXete}1{WyLx~1;r{dRq^@s&
+y-GwZm3*LeNtd at -51r;brvkkJkwX|XG`3d)iTFsIxW&e&07Dkk6Lc+-VB|<jAy}3*YU$sH)*1pT<SvF
+97xyNdV68}=sHuoqyQQuhx#yp*s&OdYI%GO!1tjwo__A6T94!cBl7}o#EvqCS2JyU}+iUd*BP)d=M~b
+(9?iw-u235P2O)I+GrV>k-22m8ccVGLGO20W>(WBQ0rJ?@~Rryfq{nI7B&$_dITYIEM{x)TXnY8tJY7
+2m-y*2%gc=+XEL)^Y^JLCOuMx8Mf^ecgS1Wi(`cX*_uI<646i1*p-Z0Pw_GtsZ*%b$ONq)#*T+&@pk0
+5169<&Qu8{M<iBjlDy3#1}2NeD0s)-8$jUup`#Y+`2J8(3wt#s_Po=qq>HIL7|zcG}JDRX3pYYF48q<
+nM0nhFSm+y5Q_c4nxxj2bDeHG(PQ#Gpa+G}PgfQF*5&&GB8DXY@;Uyk_4AMB$ItO7U_5GKie5)9?3-?
+sXHVNW;fu`nC(>~@n+8yzA6e>07(D^p>5KQ^BE8xmgQSV6WiV(QY)|0UWO6!|_V at OU^T!sAKM0I^Q#;
+{9w^dmA^fE1FbkI(~fq??Y0}oqRnsYcHli?2r{{c`-0|XQR000O82?eW2QW-jNrY8UZbCCc53;+NCaA
+|NaX>Md?crI{x#eMsi+ctLa at AFq6a=oI~67897+U+!x)ODQ3=kt1fJa*Ea$yA3DA&EN_sgRUslzsf|-
++cfeUet^mZ>!zoa7f?+xVX44TwIJsqj&YbD=OKFMwVG8bJ5k}?cwdKsVJ&k-pO_}8l9|~dMoDh)xO&|
+ay}Quc2_r@$QEr~?mIc>zfVro`?6lIi)yX^T&@d-u&m2cF1w<xS`DJgwleSbyHe`XMJJoCuFF=xXb<M
+GHcyQyzb&@1JM5(Sw5!|VZkKf%{o*!jD(Fso!oAoPyLA3hR(ai|P%_=tA7z{Fo3bnxx?8)fX{E?o!LR
+4^_rt3<^5?y5I}3n%V|8I!Z=sXAMzPECype6&7l3&w4W5z{0l#Io+{k>sYw8^!=`a=Tt^|DDbyHE*%{
+D8GU*sHzKBeN%- at W+$)ekS{FaPuX%Qu&={`lr{DlR{~ef!6E?_Yjvzdf0F&8E5BHFBBZT<I>nlQ`7;R
+rR*m{mYMx)2Z|J^qG3?LsJA{1`Cu`b#r*z7nFBPxpPQ^hx~2Pc1^L^<EJ-u_g%fO@~QZDz~v9JY2oGb
+vXNPScvZDs2IK`FUsWFg6ZwxDDa-GQQX-8pLOxXOeuuy%e{}|)*SA$!XSr_w`{$SQ_pbqEMLUOCoC-w
+jysP;S_y?bf&J2iK1gh(E3xeLwVUGG at JGuMEvoE`BZN_T4HOIFBq3L3qZd-l{<TTY3)&dC>cOhZ!vgJ
+*NC{I5!mIA`2hq?NC41hz1%dD!aV#$Ptcnxdno<(N#^78e|rm35glau)zCJQ*pg}54jhosxRsH?82%k
+fl<SKDsB?8^BjtMXFLx4?EXMB%dB=MoFNrQXT!kdT`3HNd-k`QpR7m-9cqd-Wf$-drMBn(#*g)=F0c<
+C%(0-F8F at f|wP5exKdQO3)x)Y~WuxZbb<sC+d}G<r3JPsG9;1(Te0!%5#{4Zg>9l>7wY;^6>QZ=jL$v
+|6WW8S~9|q?Pw}SzvX`>Q}u!VE^9y>_9FK2^z5J0XZXLTzmI)BKR<nXdggyx0d?!<-qe*;A0COe-2mB
+&th~(*tr|$GD#16mi-<p5p|SzIsim5(W%ruiC3BkS`FsM!mSxtqLajC84liJiiX0?IQZN1l%zbixLha
+;o1rnpEif%qnT3N29I2Bl8DiqaC1!4q&KqaAmSTt27p*!ly{j6#F!lmLw{deM)){W5M_|YvezmW&{nA
+lBEotCC9q=`Mm1~{b}qBV?0f~c&-=&Lxc{`~BV=C4!n=TrXA8T at DR^(bA at N=OV8A0bD3H8s_o{%x{$G
+uS`;m>48D^~!$Y>TV;Ourk*pIo81RV<DK*Y`e%a0gS0W7p?e8)Gk!{S)g8cVCB!B1MGzlcKum;`*i^J
+v!M2C4{G&UI{Ss!SzX!!JQbjEZR*@=pjd$d0)o9Qkld at KfgUA)tD at CAknXRxpa^b3H<0;>-+6AcCsx%
+NO}L6RIg+7gNeBlN+4mb at iYxer@{bC(DK|u4;Qw2hRUPWUunw0SA+z={FL(?f89KS#R0YU40V@@_Nqv
+J_4LlPJ4RR_L2Z2fne%#?30VB7Ii)@EFTvGrtK-^R}ZK}IC$UU*!b1JJ;bJRoN8G2UVk~9U44U~B3vT
+QHD%gR<x9W>LgYxXUw87PL at 3zQkemzSV<&OzsssF^Jf+|D2nXaM<-s?JOc2!-S~y|gA6hV%k(0prZv$
+w~VeJ_icRwjQ8!@mx5Xf#BH$c}%h{6(3qQS5yV3pFkQ&?rd$4Ft7K`QkppuPsO6BvgXjg0Y$AsSna;-
+P>1!w5z=`k`x(=-W-SDT9i%4gr$_5q0s7Z_uvbVEN&@7LTne6meFNZtY)(n%D;gLxQ2cG(<RWX<dt5E
+&Vidv|tA32#Z<8MFkHo+4i!!$;D;2L+FhT=Z0O2<spr+_H;%`8AU~Xjxv5*#wjHGHQP#0k%viK-*S~A
+eMwo>HK<z-hlhg4kFKz|2gs at O<=gs>5}fIxVXcLgc8dq5WA-dH!eRvuETs$RUg1l?FRKy2lKW>PjExj
+QrJda>Sg(0LrN6n}z+0Nu2}EC2_2+4m1fwmNhhL_XmG9|#kf_*<Ix9Uzv}BN3I)Yx9v91-u6Gu at LPN1
+&kTrri^WDA{qZ}>~Tr_Rq~eVLldsOm*Cq;P#yr+ZHfg_#%Q7;M1bQ at 16QR&MZ}^N;9<ZnRLd?hdj15!
+`aj%4KD%MOInyf9Rsj`!0XjG!pNn-HFq=0S%xcD_A51B%T+(23Sm#^0sc$`nl0TYuTG=IjpIz<)g}fI
+qj}ALZ2*{LSIjid1dYhraKpnl6;uaPmko30bT at geU#Bfk-?rDL4|Ni~kOSey~xX-l(qOBVJW7_~(Iji
+!{M{EH<A>kzs+efl+Ur6Bdfczf7wL2afg%XS;Zv+V(kQ{QRMb0;F*P~(yMi6};wx(o~=!t}9-)m(^bg
+|_S{p3-YxK!-=R*uV(84gPS8)<B8e@<Fue5fZIAh1v9d`=TiB>MjKrI1y&Ajd?96aM4#cW-b8fVb?*3
+`7z%3?#0!0}B=)rvQ{eQvjsrHcHh}-ih;I&NZ_!ezbJC0dh>dg*o-tbA%(1b(O<NZ7&$Qy69n;=WxBW
+U2Z^`L#<jF#sfTu%*<3RjZh-$-)L9tkjuk at Tovm*3PR$>+Wt`sPD#m#NHl-|Z%;2TU*pobl^{=8TWCw
+Mt at C|}l3u(8#?LYwk$nVK_Ax6;oZmEFC`1tc7Qnb}dQ~sW^MFp3+UL*BBlzEUum1B7FVCUZ(7kq3 at 5>
+zN4Fub|tQR1P$$^1iNn&#epri8OKmq;@!VZXCVGIR+i>eZ0Luo~f(sn18#R`cLJ~=Rgb at wqV_cGR5P$
+larE)Lb5u7MU{F1NCsllvtpQkk;Ef9((!sZ>YSx=U4>!xBA3)T?iMhVq(vtiU1%25XpQiS~X1iJ?w%T
+L5QR#7Jt?u=^89CKK!*7mBN;qfm8@`cOUn%>FAXC_$EYTJp9^^86d<4qdTiBdIqb+PXnMt6Ct5d76TT
+wS%F}K|5nL-&NVo^CkQ9^$II0pcisGwIh*a&2j_URXZUpjgYN?Ji=$T*$k8n=&5LswvaSikr0F_R+vP
+arSGmHrL+lGMcC~-B1-&9+z+4E(5H&^QB-}n)A+%)y4v2Wgt#J9kuHV*c-#=dU)T;{F63)*W-lUL?~z
+pTIU#p3I<c3XLiN?NYvhV!^xQv1pYAy1j5u7aV!^Z96w2$c3L(v@<7lBchN9{x^Zdl^eoKT>5)NRnp5
+hqv0m@^8b4CsP>!`2z>3lpn at iFAKf}ZUjOgJLHLR^5T4g-YXa~x4_CGEx!hp4)sF;TRzT4K~;mF<^Ry
+olAb1`DE~?CEZ>7EU3^^exUIR7Lu|r#t%BQ?_pMPc<k6v`<7JC-GK6|5zQLAN at N@tOit%M}&B+=iXZU
+glT=SGVuY(cKo;<qlhooU`@&V9Hk{nd|9Ap2^l)_kR!ssLRXGu;f`ou$X~0BMPwTIG3 at sv@kfx&s07d
+&C8cHwBBT+lL46M1 at DRMjaFU8wgcF03s;*|l5>Q~qQ8UtO8`N76u$k5$mTEi(O}>kdr2-Al_CRX4Axp
+Cxc~Gj+GU89Pg~)gNirqhZ<tSRqio64?BO^3)rSw`e?L%9R9W)Qt<h)|RqPj^s4r%kCFg9qb$dznRA0
+_(f>%U at E9d&H-9pFx2tIU9ww)@aisCP3^L38Rx>yfHTd*Mwkk$qYqxQIRZr>QWLrQDdU_4zDSz!@5PS
+Bi``E>pE7IcJk$3k<`iv)`rKqo$Pr^YKmHNm@#`87b>+!JuIR<aU7%sJ8+^0znwj{Mz?62*IA`qD9o~
+aNg<$U90<!5s?=wz&bgpa at 2R(xN||!QX-6HV2Btj-I4}M_8Bw}ik;O<(1o)yN=_Of)qaaxNfJydXV=!
+zSPgBO?HOQub3(SeI3HnA<ra)>T)WCG?Jr;O3?-2^R;pH at nIIkB+Vd*&B*KcgAO1G^0K0hHYWpbbH?U
+P7Sr>!PVB>b^Ng+luz%O7RY`^fLNJrwa>g+0p1^l at K1f34BGD~iUD7P<8?2)!eb6W$np;!|=@mZ9GbV
+E*1&)zYiIV5&vdvCNkM|?QC^Z7`8D}mE&(K(488pIyT1L9tp-i-#kscJd!MS@{p746nQxW`@x9n at F=7
+Dl*#xB=?e?Ne>WTl?nx0$ZQ>ZWO)Gjw?zzQCg`6Vtu7;6`RMR!v|-7S?{Y(aaoMuL3t`re^$W?ov}<6
+C}1&_1!YP8rFOsEV1?1T=$`OKH?mdg5p8^@B6&r2CW%~_!eRxIca8qK&Vq&wl^JjqC9!&JnUP#5#DOx
+OHWY`GjGv6B;&gH~J9YhM_Ot at i)EF<?ep=Nl;N^OosM|F4e!am87OYLy<jXpj`9PGy6i0t6!CuX9*NL
+=>0w+8x0TULNeq{Sm>WazD*?SOrFR!00T-6R$lXKCFy?7GyT}}dzw?X6=7cNY+j?jh-UP8gqZzE15^w
+1X7Ub at Cc*BoN1){heOJC;Uy&7;mGVpQZfR+3V{{u*iAx9n<;fZA6DRpfmsFsae(tc~yJEWJyES{UVpK
+5-rHl@`0XdW>^fHT=`-=vTnwu#Ri*#%d at OFO;I;Nyh0!)XiXhQ%P at SeS(9FJjw<@$|z1o`)>97QCK5<
+Q_1eOZf<;3sn_u_y96_gF$*t#6(2prWAkf%+7LN5O8kJDBy9u^kgDZLUevVnMAAhllnAmv_?1EpjG&I
+dV(&IEv*isFy;{GD^_k$PHY8c3v7QuQW!_IPppe|s=4G(9t#8L5`IXe#A21gU18`6rwSx$&yrMl+BFn
+LGXiG00ni&FPcXS6hRNm-<HFO0iicDew6fIHda`z0&Qy5?HEV=@ggZoIh`kYqJ-r03HA7{fe8WiL?cz
+AiG9C`r(_l=IWP{uGp>$>ZJp at P{djqTGDu2Lju at X#(A0v;e&vXURyc%PLv_rCFn#(sY?+^0 at Sj$I7~j
+AfV^!H%m|wa*P(z{s0STJw^aKtXZBnjB5E8qF^nS1FP#RZ`m(7A#OFp{BCxjl{w&Q?lR5?CW|eJmv)$
+y?1pl>IiC{ov;;swQ(qnCcvAF<N$Wzp=m0q2ga44v|6hb)PeL43K^fY3yL at ip*6r^w_9|D=UU5DrGbO
+VELRahw`jr~>OF-jv}iyqeJ9R{x}njAedk?Gia|I~%p{qP<JnA&cSfUp+>U*(zON)d>|^NrAkVO6MXa
+SZV9*_6`S6`sN(#+%-5>7=9xsgEalgX2X+p5K57>8v*oyI{6J%BlrNI4cblNw(olKxX{hahMF$M}pY_
+RFVFkq^nxA`7 at 1wh26PmYmo{=mU+Z?N+2uqy_<W&i`- at jB3-{h2X0S-1n^m_|SE>rN&?P;=s7*Yl1(!
+Y}~9$X&7BZ`n!F6^jD&{{s_^9WyrVl}X-=@IXlnMWekVu<HN at hMIug0c&17FF}h$1EAyR7Gx<3_vlaa
+03}Gocy5E-2^=_0K9~Zbuwg}zCln#UD}|@egH-4kJViMwY6dqfm9RPR)-;(7Zh)KzY9T?=7Iou_LFJ8
+rIZSc*ykGD%7Vg5+jQ>6nP$I^u;bX9rt|Ihf?|^tK;JRORv>T4G3C7C5f4!lxM1<Y*v1rgE^}q(x_nY
+FEmc0Dz9eOLK2&XsL2Q&blL-WcVp_h8rXn!U0a0D>WEnLV}EZ!yP6a;>*wt(jr;0F2t%1%j93AdX9jB
+Vbj!`4`w$=q4jX3}X`JwLio!Kj05&Ox{bhBhRis1*n~XIf#P-ma(Db`Nb;TA<*Md*C?q=S5FA8>*;2O
+e~JJvzo!b?rA5w>1%K1DPRVbZqLw_8qmBS4H7D*9%dcf*hA<C=J<eql&l({6%2A6n<aIG#7PUh1~=Dv
+XLe7qmdt?IOHA)AV1gvoY(|}$AuJflY=-Ebxqe=17*Jmp%c3g}XwxHe;jUQmVoQ`n6lV~`1392{loN~
+=z5d8L(Tl=SfK2guEm;{-W`v_>_G?m2vY8||bc^;Ij)m(46O_c~)m{LTP~639^|b!rDi+;Njzui!XpJ
+E^sBwTgF&>t`OzEh(T<q7$_;IfhC+(zHim7XcGu10l&CbV>P-TKBtHha&iO0{~eR89L!>FBVz7Asd^S
+7uQT5jDQq|q)|8 at dS3Pz~@pjz2`w(dVJmn<NsiIQ81G&%hAAE`YP+gVUH_O9yk?JkqeZUJz)$<x2>cX
+ak<W`=ljD@}X4Xog+6g)&XHiaSE#VY8*;&D|~J0v1f!HV^upxrUkLO_}PFb at k9~)E&&bd10i8Nud?#+
+OCP<;=jE^wA{cy1gFRf*Bl}a5v7H)c7&;<oz%Gx at 6}7Bn7h@~tw6dj`W}BZ#2XTH97jn~Z;`9?RmPj9
+tpgtJQIEYpwRq32&A}kFw$A-mK6s<ZA-R!;T5F~TrvWj&$fOS3bxT!1W??<+)4uq3gtXxQ5$f*4(MNK
+4WaJjb9Q)3>0-`D0Kz^_BC9h4K<<cvm`&{zQbraZG1YjB@{`Tj^jhVuw(OKqX-8Zc+j(xd%yJ6>1s4-
+O+2jF=cRed2MXCk}*T6g2S+7b}iaSuOBpD)zf|ljWY(^1eB+nuDeSsf_GVLq-L)dQ`l;17ovm8B}jXy
+zAQ{+e9 at 2MZ^NM7 at 76zoOVd4W{@1|5O-eyH=Wz)NpIBqj-2)G9X?T`!?on}3W^zdFuK%J1;EaCbU<GP
+M0=bMiQ$%>4w3DhbJ{cDuVL?aC$?-Vr>u5{ON(VG5*X^!CSrsSL{Sh$h9QRJECsWBnV}mdL{1Nm&K_{
+&Ij&}O7vvOM0Ug}$ND*b9!&Gl)kq5GsF<`-I^Hj}O)K?7UZ`MGp96!<ypIPsrw0*Qk1RO_P@{+yH4pt
+;TBZa)H=sE;YFx?rg=ms~>*Rj#C3Y4l?{<f=k>VO9MaO|$57Vxn^cVsyIJv`dW#L!3uhIW8&D+-22XH
+DKf3*^Sm=tL6sIhll82Uqxhsgc9NbV<%5hnBBHerq2LJfb7Sk7mS*Yb8H^$b<IBqWgt|mP7x9QR$$M;
+<9m;t}7`XiRZX+HN{;7KnTS*G3IDvS7s`VPSG|Jl~aE?ggqLXi|3+>t>u{Mf}1<B?z<9q0sO502t(Uu
+cS*F~fIVaXZsg%Y9qSFk<h-Dl<DH=SvPVLU2?pH)S?BY`!QRgCHuE(**2oDC=KHV=a*y;d1~uqpSV(P
+E)2j0Z89k7xRGKA7bu at z_TFndEG17s2xKX2;;<FKISgnd(>BZvXR*XYv2^j!J7lTrhh=zpH_K4aPU&9
+>LHApikdLG6?B2EGQLwa-OHeU3;{ckTYoWssy3P5B&-qgLSl3P`j;}ge(F|3bCj~Qr`D8mpBP!?~$=+
+9BgLW&Bz6Q{9QScO~CB(eDFB5Z3CS*&(%-Tg`BP**A#pQ4Sei-Fa<^572!4-csQG$}8=DAWF+u1J8y>
+1aLfpzU|FuAUL9u%F=qA!z-gvKG{UdnXubSnLx5q<_sAqrDy)V&bF2ny5HWc;I017bms*5M%N%cue*f
+d06ojRUc|>LL-S5)e#*8qrZHLRr%_{6qW3<z6s#15%wEL?E}!-GhfALBRat}WRH_*gw?159FLB<QJEt
+iF?|LcrVfztht`@66i9gfTXNjsF%k3-`uQItB%<^w%JZ5v*?NqbYx(1JIPHBNIolrmuR at l2E6DZ5uD3
+b6rBEdIC&z4G%1yD`*=D|X*pw(=VgT1bK8O~N6Y2x!`lat>9`G<@S^%pQf;tjLW52|rX_n_n#2<}6@;
+_d9K2EE!*9-QE#<VA=2hNuR;+ksm`}xjzFu;I<#v4f~@bDy1GoI}Z$<^uE at 2-DJzqxug`<Lr)CjT(Dg
+Q|Ip?8v!T8|m8PAj|$xD?9w~>=b%#rhJZNZM?D=+AtO7g*AULyd1N*;ZY!27TcoAh{xr7(%3uMM*9Gu
+T5M&G59DT^+OFndx={N;!)YRP>{y&0`l%l}olU7GpjY!%ldUOzNK}Skzug=UL5aarSZdhu>T0oT)I6b
+<tf>whoYsUJ at 1~vG2otspC*82OSc!gOr`<oA)eznKraEyqIUw}ouyWORP~+lbfC&C>ApjWqoEVSFSYa
+UmU3yvTD2M at 7c<C;VZBAS&_Qnt%xBsekvFw&S#^OP at NX;5R6o>XGf>|_yOT&Q*D({aIE##So9!`!>Ie
+sasRgLi_eo43BU1!SN^`Ao8*AS<66`h|m35W)#3qHgaFp;581B|yZ2jQV#c^ocC at 6@$w3A>|+BbNO0!
+99qsbk(hWe`3gN>#-m0Tp44~i-&f2#F?2!JxNm-q}~rjosv*|(dX9uEQ0{Ul3GR$eupPEIvh at KPpW?4
+NHP5B!Nb{R%euWgeKyj3osPlU;~1yE6uZbF at Z+?g;o`xLPojq7n2R2qz at K~ij0O at vZ-ze=;T}8EHgM+
+m=vWJeqfeJ9NRd$wj9iUA+<WIEV>AYij;1*_<vyvegI*Igh})*djBqNsC4~bdNaLu0KZL%HkL`g+{C-
+9M)$!=MvmB!Oj3u5PqK$&%a}s>(IXL%S8;GW$+KW?x+Y1Q>A0Ct91aE|}`ev?jxls(=RPAG+%G&OwIQ
+!>k&z$r*BX-~4$6vk}TqO at hU(Z*}hQX(@6(4PCo)wlnCB~pq%c8l8l23Z!<hAAp;uI^}5fLghpE&eiL
+-GF5d9%%IgWKjr%7DTIu$Yqrs|_JaJzbqsDb8S#Ox%-0eM{u4$8zhY-tUsr&`|1&A}=|#scGPM*Plg3
+sm(ZRj*4noHyBuRzX))ZKi*(fnx9F^dv2?M2A{sp8qaDQ&{m)5*V7P<&Dkr3VY<@q-~ZwDTZ~faEmWm
+Ea{5U-9T#Q*MaTi=+Xk7l1XREifi#8YrhX$Y91AtM%4WZSWjar<pG;=`Utc_#!HY4f%jv60pKA2&zAT
+;1T0X<NC*KS0OVXwk6<7H$b=&83pq5Ke^gP9?i<jv-1-4Po&eBu6nl&7*$&veh9w$1EQP!AzuB%h_Qd
+{W{p<$Kf0IR2TieE=?Vsvs=k&hWZE{gTO-nZpJB@^e4_EvCN+(_={>`d*K_n8-Kz(2kR?ng!7uhbq4P
+6v;IGcxpuFcF+n<v-z+^62-^iqhn_);7527WRy4Hlbhff>A8h;}h;$>Gyzm%z9GEbHsf%%O)`JjA=sK
+re?B22D<{9nd^?*oaR{ovoCtpKXOoeGM<em=gh-Y$e{~MpTMIMAYOH{TSWG#%~mKG>EH&=zPsVQq-+?
+<rc}U*UK&Zs?2_>u{erWx2JWzal&l(aTZ{|DBmWX7UZujwM4q)A{DsG$G2l^L*f=wX2cL-1Y-FYnzgX
+Fabls4pxQMvI$k4tpqs+DJ9G|$#F|7GgkY4y5rVVS^<5Wq(ZpIAPoQmj!4<FvWK9=PdooN!!lu^**Mr
+JwS%g?Fn9Vs_wl&gb~APsWfqhNhTIS(=DKtby{qAnX+&#EXN>w3X`nqk&jvSHL$SD>k$)45qn6_9Pw@
+3mYPDLa6<R-!6jxnQruR8gbl2J3ayB*P0us5J&Iay3 at f#@5C>Neb0L>=Qq^pH1=veaQm9iA4SDIXa1T
+<U&8VpXqEZFk^|t^HTXG{RGQi;(C)=%YCiq=E6*<MNGgf2a~;Ppekb=5wn*t&PduNo<C9I_6E<Wt1K@
+R6xfSkk1&6I_G8n52PQtgKg%&=k*rl4l~&p^&fV~cb2mJ5QaA8XTVz8&ytq`!Ae8H0oitFk7V#^vOep
+)pg0p^Gc at y*{86TJCGK?RV?IqWB+?Fb7CXjqzKxO0z-ND#>#Sv}($Hh4-9~2=rr`}y7<nfd9h_k_ycr
+5U7Sn3EUa4r^dIzLF<D;(WL415YmDK=fjv)L&L<G32af`GL}mZO=5g9|Uc8BEruLH6g+6r3Xo)oeD0t
+fXvt2gQCrY)Ipe^8p$iwjJKa#ous3ICN)Njm8MU$}o6OjyO(8I`nne)31N`Z=c)0-tnv=;rp1ym9XW)
+Kmc*jx}(Go{TvB(wDd62 at fUMtxQpjMWY<}v8~gdr at P~KLEN}P#Pl{6nIs+d(lIKsK;%ZZjh7OriSewc
+-S9no*iC&PE?C7`_XZB-xI2AwdWpe<fS$Vf7K(#*w<BMku3X?vrbZg|cBtP_ELI5{!qI(e*wsD4E`2Y
+-N`I|&j<6%}j_iU_I*p;q at xf%c%?nIloT(B6n5m>7NW4K!xdimAZ$ixAjde6C3g)s5tA~=?+KZQA%Xs
+eu$vh;HvvDsZpVtOFni<xS4rokynY9g@#>H^&C`V`e at K|k<(v{pI)93A!OIUVvGor{rSEs-?0RP+U2R
+yI at F(y_)iyPLs+xcH}M&mwjHdNdpYhLe)^fU5c&lilvyBwSG#MQcR1mMtP%)E^}$g2HSYtxlSO6GbPm
+ajrd3g3d{E&^IkZl!PrCw{$}S!A`~ZCWUlnyrWqF%MJ*t>52s;Gx4D+G4;r;c2#EL`<KtZHP^@C`D#2
+l6 at a5Oky0DwH&uNrGMqTF`im`}HKudtC}+($3btJWa5d#4>Bpi1lNpoQs-st!{z6}oMyU?Hh+0=J(u6
+5mBI+C4Y<)~yM%ZuPU91-2eS*!RzUaB}dt<pig8&*9I>!agpqtJ`1ZL$S{URY;8pDwOB0gf{*ovg(jT
+dtb8>Yx0Z5wq{_~=<}sK2Ot*3gflTx?LzOJ%CS>MPu$z<9?P4<utUkw((l-VA*J3$S=N;TT%2Ym;z&i
+Lu)&3ZsZ!V#2 at C<90+lh|9 at C`p&&j7BrIng`$Vv<rBjb%zDMw#e6chMoUwdgMpB0RF~suG_Age)mrbn
+hc$ysJ4YX)pJz7I&y*HUY3<nDizf(w2>L=J4`0VEJo<9stU$|yFLCKw at zfICPHa~o%EZhBT#fuFgkys
+U^lw|mc7qH+Gb7@&*SPkTs?+IoyCYeiE<1L at x}qAFr)fo$0Jb%qxkC=k8kO3PO2&9w0<uWDHNjUvOh$
+dm<DqldAivjq{u{46nEANOG;w|tBb4#j_VGKq19BL~C?EF#L!8u*);l10uZ-^FU0l)NdV+w?M|!%w`%
+cY_FS3?G_k2gkLR~WA9u~PHad>B<V^mfijOK?CC8PA|Q>-`&B+(srZ_~)tXkrKXn1a{#G;-^7 at Bp7MF
+{D*Lx;|qC?_brPBPT#lA1CJ$zlwjPEIc|KjyDO`(#gJ$?5|pGFyr_z&N6>Ybg2o}8Xh+O at I77x6BHd#
+q}k_&M+%Q at k43d@s;OyZN)10G_aKKZ_D9bNkt&Lj`w<2(Ui~+32>ruvo=l&f|Les!|CT;_JpbvZzs#=
+n-cawRvj)RnUpK=MOvN9v8_H&iX;oAtTT4EF<>AF_TA=Nc$~h&(i!uDK-PE@&Zjf84Q9HGlGUaqYe3L
+~ZZ<|7=GJAaXOe7rOhy)J0ax=rsNOs)oW8^TLGzk5x*|I~WBeki<y<||~DQ)))cgECxgS_1$#*ZIAKD
+!$e{5)~p^Al~@D8D<+$i26W(v<c0ifHL&IrWgNP`_OuazDIz0a&SWL|h9abKKzmtp-2A&*#VC)ex>Vc
+FdJ)U4L?6_4!_hu0DU)SBdh8F-Ck7bhY1}=*~?2`VZkcU1RD${07wVSFd at 8`D@<rFINw|w{!4H$=5}2
+eOdel$rxeML|mw=BMl3^_X5qoUuV7;=**GpSO0#U`D&mq{}+h)Y5*}uE>HdYb>{1VzWiSx=Ia5(Jn*9
+5e)WcmgLa7fK<2)t3oqt_>TTbQuCM&~eZoEz%Et4THn_#VBWK%$oDtNPU)yc0;@o|1 at F8ouf+IVUF<B
+Ok&OV4XM;|$;n33C09hz>kvxO*PU3~z{_u#{9E`?xu$p1sIr-NWAg~mgGDs<l0(%H4e`Au;1z;>hl9G
+P~dQ+jhhNS8+%p%@?&Wqkw{m{de%Lo|`zKG0uh)(z5=UwmJ2g#pLCYL65bt#{h-=`r>5(QmGy$VGDX-
+ at m#3?PNTRNehlYdN;t%Yf;C}goBL7&sf8EET%{x#;G18=!(X}ecx#9viA==3i<f>hdT4Wfe2#d{<!;^
+;{-I-)4#w!XJ`M2|M}hT=|5**{uBP^%hR*JZ1XQC7Z|0s!qZewCcH~Ah#w;!2GOCqbaeE?BezF+77vg
+*(zAI?CjGs-clt@)LyIfsiBMICSYIseK)?7#zZje?eUr>Fp6JK<AAyBe8?V5ki+Bvovk5qA&D|ulFWJ
+(Su$6%7`>Yfilt?5-D`o<Wr$ttlB-V>nKO3D}eUvR)yb-b+sZ@)+&m#0qQW?cxm<&+SF2;f^;L(YlW^
+rLcEZ{TdFquc=E5gLg)>}S-f8t(H&arSgT_c6 at wbr*Wo!!xK>bMo9o`GlSi|JK5A54_l-J+_3-WobXs
+H&lB$*P*3oZxlcT#y_D(AC3~Z=vE0<ebKa<M#hNK8LZMkN;}l3d*Yp-k+Fz(3OiCBxTFlVflJX%5P2%
+0BSGg8&ojPjoViiHMDsGb7~sH;E{|rrBcBe##?ih3vE@&JERvKr%Jk>irqcItg_sJsk(T(Iw&u#E>D|
+!xCoJG$njxysc-s(V(utHSSM3dp6~4*2^Ut#vfSq~(RX`g&02P at R$s|mj2OoPdZ|v;?iD*v)Q~x^zjX
+sOYwL8Qn{^J1n;3eH$LbV3JCkgQkgv|+A06wd%7`c8)Nw|R&+&{o^v2vYaO;xyBk`lk4NaH2$*FzGb6
+&K|tjT%%kyj*8CAB4%=pcd>)<sqey+ZdP2e^98s!&Y|9Z=nK`!s+P`~~Nn2eWCqCIKT~jmP_D;aVmCa
+wtTn+f;uCDK@$9=KLw1<-O8p*QVx_$+d|x_A-HDemaJnT8r90*lM~yW_XGm=vKjDfQDxbgEQ>MfV1fL
+S9UA{=~H{8<D8rN7g-@{xwJn=2CSYXH7mzgx#@!H=rru+G=_sn>-$zJVI1#3*g at tP@oS35vsqQo0OpJ
+jy3y at K(YuJPi-(bw^3}tsmGWXN-cmj;N`yvWl@#GstnN%mVeIy$#HY`KTZ!8acx?%spu9Lk1YGKbvbM
+0}mnh}*>5rZ|by8UtbuY3V-I9zqFJ>(#7vv)me0t>M<UH#*sgD#I7#|6sJkkcf5&@}QzCX9eu^^@kwt
+R7FsJ?M|a|8 at Gy3`>p)^$`{;?f*L%ShDGT+&q$ih5C7(JKO<>DnI3 at 61Bz{{v7<0|XQR000O82?eW2b
+W!e_lL!C+02TlM5C8xGaA|NaY;R*>bZKvHb1rasy;$Fm+qe;a*I&VUA0($<xxoQ_aIq*BiPJ7Fn;haj
+B*k_i&=PI)Ru*+6wO%*K{q6S+N&WI>leQ at 87fa;KaQMwP!=WaV$y=3kD^+FKVJEa;2f<3E?%76ZmaA$
+bw`Rs<Wh^gCW^A+B%$TtGWHO01TJ2euZ5rEXk!4KoYo#sYYop4>ip;-9Q5aXIe at bg^ckQc at R&>ut6M4
+gh#A;TShV at h4p_BPESNlD$inR4I$cNV%TfO at G@_L#5xctY8u`^bwUwK%gmNjX^nO5oJ)w|d4Kd!LH#~
+L;pBXlo1a);M-AvL^>&e&yLm(t_NUP~=<tF#m*`gyhdkiELZ`q}HN5A32<O37}P^L!^VyeAV_pG;xu_
+44iVW|>`Ie)tiZ*UQ!F@^4G%#c}-4=w>Gk+sINd{MRMVMZsLm)<<%WS%p0p<cDB(Czw%<&Jj@#>BdF_
+(KL$QS2;<MC7$2&tutzxJQv1nnzB5$_+b$z7Odr}fJq6M*CHxJDJ%q%rYfPwj;di=?A1dsP0mi!2;N6
+OUHz1eclYM%?eg8_wc8$iI`_uTN%6c0ARbfuXk!3Vhz&bv5GC_s*`DirU`Q(@o%D1OG5m;}^#73*925
+kPS7cr>;8+1O=V`y-$O1_bRpDbGZTgFnRlnklJ- at N3GjWhmSGA~;*4T{2hj_{mmUa`h_nUs*Q0lgue3
+cQ?fQW9YN><yfsS4;kNNpQlis~Ub0pf!|idO7KH`p_P6fvj}lqt><G3Bh+pRqT*G=eE$rw`Hy5N2o(H
+g?=_YjuLG#D28kWmapkk&p4T-;D0pbz`E0CNxqn%KmV{w!-#yCTng)urrwrB%iSv4F;UY0hfL!S*5aV
+sn)#w4kof91fao?_NWoGxD|U>oZ1vIV{)8%>g=V~N*l+sQf*~Uwt5fJ`sj*j=?X3IhFnmu)VcTVoK`v
+SRsrW7^PCt>WqVanp%~B*Zx!E*q<u%#rT>J))6C^XmQ6hcI}F_LDVK)}Ae7&5DxS8{f1Y>_zSh1pE<e
+ZXKNrjBn|8gD(RrZ9lU;ON!5$z6Uj+!U2vEPd`gFZquzMkDGD0EB4}}X%r4B5Smg--nP}dp4jtb8;#j
+S)Ne%DqXd&i&m123R7Y$wys5l8*UT-27mUoD9(y`?jD1y?|O$Dh2>T2z)Dl)fjfbajUE4HZ{Zz>MM!j
+CH7JMeh|b5RcL(-H4;>4GjC8xB|_Q`{GgLjbkHKMt8vFydv6{s at g(uO)7{&I_Ydp>7;XkVb?szPS_{*
+#{toYi5;-4H42}`S)v7cf(N*I#yrwS?FF(24wUj<usH!Zw`yJ=?M_wmwXEi83h8&siUn&7Nm7w<#kfG
+qQsLg$1dw4kb>FW(!Do^($9*ZQdlP*%MqQe8lWtp%9;{HpR52)!=h(Y->~JN44AMEMnCCGYrA8FF6l!
+0wTGy%&7c#%6td#3y8o86-6_pETC3QW*>gs0cr+k+8-A5At1_mKDLTBQc1AJiin>nz`wXCfP^dki_cd
+F94^F-r}ts7Yus<D6{yNY2VCa6E6$xsK>JEi{G)&mN5YZnYO)+FA=L9+iFKGPD at k;3<U_8LybBc9O_L
+Kza;3Uq}s_5!8Y^8A<?<P+j_Qcru!z6?S&xDwQY`L9*b&f}*m%(}S~_x!}LNc~6n{BN+K;r|Al^#6rU
+TfLRe-O;Iti)`K)J*V at uq(b4+6s>Aia9#AJX`^9>>S)`@nqcg*G*srCwcqA%<(f+U{H at xWxidv8xTcK
+?@+;hoR4Gz4?oQ`HiUY0$f%YyqCAU!9-!A at q$1VUY+&ECG&_UQo?{@Jr%+FV at v*=cizmg*Hc#Cl;F$0
+vT%-lM~5!k-JJVDb(iuUHpC$&1^9x}8_14-chU1+4bOIBuZSJ_jmZEWTuL^$aS*LBU<4(0sfovQGtm9
+qYEbP9Dp2|RH_DOyzzkJI>ihsK9j!S*8RycxIZ<4YkuwO6&*c-C^=(EZF)%IgEd&tIZ8n5|=dIK-pXJ
+ab#-dP|6Zo)}jo-TP$0ZYSsGXqX6!^L(?N+<ggsZkyE4nDJtxp_ovO7pz10L?&(O0`4Uz)<TXHFfrU_
+G7xa{;D|P31|^}LgKFUps&J9c)cThs4p7Hn6AoT0E~raukA`>eZ_rH{VO<a53K7^vEO3pAyM5wPaV|C
++^e;?pyphoUdO`3lSo2ATri0obqG?z=e3&R2O^O>?@lyUvWU6-KN$U(2f-tUPxYrbpPq4+?80RH7<Pq
+-p<QjGMy=S4LhlBu6=oE8h&gE`s4{$4SO#l3+FD+L;zx*;uDd)L$;w^~-o at pq|Ei8VZr5Qc<+>mM4qO
+^Cbek43N6aG0!IQ%X=jBb{m!W`uv=G>o~qo*+U41@&vy`UTa at LS2C+jU6ZLIf48yRk_e1R+paj7|{KU
+BPb0(ep4<i(GCb`X|^2Wg4728}w;A)s#h-(J#b<&_~x2zUYj&+c|x<NMtHfY8@@VN9h9?xhMpE!cY%H
+99&dc-DpAUA$Gw4m1c}gQ|9`}84wschBovCFAw}^UXWjmZ>(r3`4p+Y(5Ep~p_x5!^oDSamezE2b}k~
+cMC~rrXO3=Y<Vu-K>w4f{8)4{k3HGsb&TkbFdyU4C`K^Y^-Et)!xEm9EK2N<*r~$d{^K^O|ueM+~u>j
+7+2!UCP(0F({?P}up?qdUX#5=(uWa7JL8vrNW_cNn$>?1FmLc}M-bV8ku`G%S}N7fJp12}FMKirMw`m
+<_yhv_nJ<8vfjRp|U#jMQlZ^!cFB@?qH27(~>%!ST-M_vD)4v6%#HCU?{6?aR9{Ag3bVgpYpY_S3_4<
+nHau#R(YG(Z`Z-e*O+nO9KQH0000800{-FNTpE{`vwpI08K6c01*HH0B~t=FK}gWG%_`GVP|tLaCx0t
+dvn`168~SH0!L4V<V2!v*>O@&olfewsb}2S(<ImQTn`J8kc618<HL at w)9-$}3xEVE+DXbbiAVyA-No*
+2AE4tnZ$u_aUJJ&vnBC{)ExVWXnq8e;vBUW at cABRJujN7}vfi-wd{qUG<4l%ip0Y4pHg!{qFk~_<^0H
+=pQRPWfi%{K9Ci;0P%&%%wnV<K(%w)D|?~8=j%e+j at eUh(M at ZQ`;^`;QjWKx%#;|YVSqZsAcQm!WAb0
+mtIozwHPvdqh4#&%dy@>R-NmPh%WC~4{ryV}(2JY(OpdGOq(7R#z`YME3)OPBG=T4ZY+{yk9&DP$2uq
+%cG7vW!J3;@2_)WlT^aQL+;wTCfuJ1wHe^Fykp`(w|Jiy!ssSGFpd7=meBUL}enp()EI;e(3!XcYnhJ
+7iLXjv1C9mRD6bay!7CYuXNQa4X;wbu4SD}!N at ckY!rG)%0xW~(&%|rHG=Kz?>#?kiJILE at Q3I8wfDC
+Z;BNBT6aJL_+GMp%#cyhqKjh_Yo(W3^zF3rKLy4#P2b=p<jl@^tPJ+e8sN_VXBCEkdVKY&KWSz91OSa
+|}uj|qSL8r_uHpM0c1E^qVD6?hm`khLO4blQ-yG7wD*%P1uGXrCmK~?jzuFyL?_Y=S4<MTgl9+=Ng;B
+AyhcWjnySFOa@`$)gn>QXN(h2bp<x2>;%j<f<gHR*}4$iNC5OI=wW=e6S-#b$ZkO$5UjY#B)kdh7(TR
+&m|nQ!X<v<%L((<+R6syEmTi`?kPlz=+7!oT2QfetX0$k+*`?4QPbHmawK0OlB+=QAsKS%VhOhuvBKb
+0*WnlZQ19xusi4|1qi#Y>!Lc|-CcpnGz)a%T`)qv3ox-O(S at qr`HL6xp)Yttwy*bYrplCtCLE;vQ(jJ
+63g&uXFpA}m*jYKQu6Ett!~L7#Ce(ao>7M>o8&HupA!v}c>$L<REkq=jG8))r(3`FKK at j<Czr&G%=BE
+S8w?S~308e1WQ?}$uvf$C}6wnOT2G}@xUp8V&fJHw$)<1wf at OB1E1;mJ$c#lObO3)u#$h*r|Kb|vOp+
+b8=5i=oTz#|<Z$Z&YcK-?y)M2#-eWPlhl;fth$s5_o)yIl*uKpF=C5d=remzKo(ac|RAWC>!iXjYzcs
+^S)qlDHsqpHyzk&D6v`lmfPnrF_GjEfZ=lXMs)<<z)%lbEd3i(Ap`ZGOy>fB;QG^_a45>fz at b_MP(Yk
+7Q6zT0;5Xd9ths*&_|t$v`H{?q4z|{JJqtyQOc{0-|D)`Va;uAyENDJTP)N=EHkq~Pf@{4iN*qUcnHl
+?LI9s$^n*^yKR20-@>tl>A|@PcZ`1y5)4!FLMY~s<@b%e`AKtjzK2K)A(?!gW2TZ{9I<I+Bie;2T9Cr
+Qj+2j$P(t?UPzTY=9Vmy9;x8Kg+{~TWZ{>!V2i_6n5FlaCGPnjXLr4K9W!`t)I%hzY&yYv5?eSsYWxo
+)d)!M)G>drP>+=e1CB__fTVZ9ME_TPO>Osdq4C2M`9?A6xU#&K{i6R}vXh(<w=L0RV#e&t*>-aXN(4D
+T}8powCM649sU*`=?*Mlqf35^=7uA>(x;Hr)Ek4m4xTQFpMO9%EO6jMkyeLiiGC|=xCwqcTZ;e$w*97
+6ezF6+tOr at Qo~RvtFUY`MD*}rz5t#y-&QaLlc?nX$R6hVhtCgR92^}!w_wbqcH20XH)UJTP+rR1dzl@
+~k>5mS&FAp*i=*)9(6thatz<FgB~0pN7X7j#=rf^NS5dbVi2wlYP!t~mA~(V!moM2buTC%DeFRjwy14
+xPm$SF;!}qU#eRK96r`)e)v^L at 59<rK6BNGT9>N&&>ixfnOO0ED{Bc9dChUE!VKCmcPD?_SPx)qBW2q
+ReybECD)L|_FHVt2~Isd)+8*XG{vNLgh&f$T`<lzOtUtpMvGGY%Bn(mP>}QoBPo{GbV#t7F8G2QQAgA
+W0@`lP!wqpHPKq&cxCI*$xDa2unc7enLop!oTK!yCwx{rB=CFd$)hns!hwj!#;le2qaS|dONd$M5Yi~
+EV5{$jlF6TEHWQ8tgm)K(2Ai5(%FXo6}s7B2Xh9`jKLLUzAAajJUs&~lCz^j8gqfP{bMY-S+&la1Z_O
+A4N_)+PDw)R0tG`{m(np{cr7x7&kEx>7%IF&BeJ$b>qZMAkI)2cj8G#qAb at Bo&o(r6Ka6zW1d4Vo;ts
+n61{LE|;tCmNpq?4Xw9AmZU1L~&P4yP!8hwpUdyM&8>HJR|0MQu3=~_TWi>Yh at T*LkgbpDQGmgaGji0
+x*9Ze(;Lhs!MTJn_2M!Ke~?{RGeI&`jAYNL1vasRiBl?BOTezj|Hf&1%i+oUKJuf}KM35Ro_wk>vMXw
+alxkFYYRli>R&P*eM{-<vaEa!Kl(N=fShU-qJO{6Bgegjq)I!e1_%44tpmGUQ+WRZ)!$epV29#Y5*lE
+F!u+$t3`$NC7B9wuf~}Q%`>r_YGPGSgsQr0 at 2Gq;#&pF?KzA68o`Ke+RKiyr4Ijk$FVvUFrx9Px)3bj
+gL<V;%#R`%cau&g3v<V=ofE3glaU69I{{yJw4ggF<yo_PNjiyw>+Mt9_O?IoCD3z-<xfzgO))WJDMQv
+DNvzaOe)zCFB0Fx%hYhfR2kR{#)4c>PASIC=EttWz2fR4n=9Ab*0YTj!~w8`e3(o at B#0pQGo`QB{4w|
+^My?>l|~n=069Jv(^z;)POEs at iTTa^jVa_rulqv==Y0_h#SSJoWzw=n)EK9${tFZDFr!NIRPzbji+i9
+@)24)q$N8R6+id)u1U{T@~=thiWy4t at 8SqJ*gZ>>3Zh$h31<A3hRL<v)W686*ykuIkdLpQ>Vi=%&nBR
+KMQ%qSuaoe2CU(7+|jhfW2K!o>A>Vw2RJx=eR1JoV&~(EqRap#Hh|p;hPNaKTk_t1xVZ2Y$a0kqsTZ0
+MKvcn3;5{7cBj<d{mJkvsO~Y~<CQorvrV}aDiNMM(ixV25x*4LSCfi`;1nfOp_C3_p;5Lv8u|(8F2Qc
+v#ydlo%jymn&P*8|Ar9d#z)KqRo=0HhgnMb0ka8(}F4T;)R*gK~2`ZYC=s{#Tt819yuwn2TBH6g|r8-
+Xz08d3|!2HH^G2X7m at -)+)Go`ATb%G?^p18}q1OB5dJ(7ePB3?Kx^jxIvVi9sP21+s`>+*l3FV}Kar(
+d4KmBjyGv4FEiI6y>qWkla+L!%mk`7_E637Ise%T?@MfBLsAsy2Fai93p$MIbe}}j&j^<q*j!vKt%4x
+07Q{aq5VazyC4==vw9A%A}Jlem!Nzx(2V+<RpF=-gia$wWqBw4qw~$J4m~It_8LP;Q(&Nnja38?SfZq
+faU%#O^m89QN?9qm#!B9S>)C6OBb&4tr^p&$ll*20?-&I2kNuLulvR4&6Lx*06hoz-=BpyP22$apUJ`
+PV=eHDNl^a8_N}$G}X1b<BctAX~u}UiJK&z=OTHs)J5<7*9P1_w7S#U3JWg%k8gS=er;@$4$yYS=Azg
+u!Ot}7tq+r=Be1HyWOT1kM*iczKn2!U2^$zV;|-wXEGjGbq72?-x~JA)d;2om%M9&QahI-D}BgcP)@J
+k(5{vUPqh?sUMX!4^4vZBIjFJH0rkWLS{}&_usjP>Q13uWvq_kI?FNq8f1i3^+f-{65xfk1Y)7ODBRz
+{V`%kK<ssy7gcY+hXTUD=MN1W-HA73=9Dr45JFf$p>MPNo;tk3Erlsz$oiC$z!e6{uox#qO`D2z7l9z
+6yn`2aLI=XC!2oA6w1s$#7EM_QjM5lFfu#ra7|WP=&m*YrEozu_B(xjBr~=;RwK#@w2 at 5Q+NX0G|7P+
+`O7)8x*K|hpXqd_^ZwjIyeGKwfqnl$UVAMr*Mu2gsfC7SsRuoq(HIaU%9Y<G*E*`5dk6|f08|2;m!oh
+h40F(V*B0~E5ghk?JTw&@`+Dl!#@8I_*^d>B;fw1pjSfFpgx6uJFAf=SkF{PNlNC(PU5qk825GDnABM
+d;*lLI?w2Mdziab2v^%_rbn}(g;Ve;S^A+J{|PGRe!)W-rn?wX-bdAh1DQ1jIfJ`Nspu}YJG at B)<*%}
+bvwaxmK at JlJk@KOs_u|)_3Ggb<hu!t>3RS(x<3pE(K~yX>QHTsJD87=8!UdKvx+b2sGkwwrQ&Zu6<+N
+1J5(c^(>vud0l(Wi8hxWWN#D9xeNNPf$z=PD3)MP?ah|ySTuKeIa-%l8F)3Abg6THY>p6}+p{@U_?5M
+`0MAa|=ZL~G3Ix5BQ98}Kzr&;IEKyh}Ay@<5UI*x7PD%~}&ruYnThMLRQ&cOlhF>L-#XAiJG@*fZ+FJ
+%dYx`Gt)Yz!C_LoiQo(I2yrS3jQj)2>dmF7w)9Z8~FOl*;s|+J%%GOJSr;=>yaV;3ELe#_+n-YIq>pz
+M-`SPu1DT$wOZZw8K?Jd(xYBeLUOm2trAtMaH6|z>iS!rqT(jZdn>uIta&IRYSmxOP;N|ET5K`Vdr+X
+kADUR+tM<IIs9-!vHTQJlC0jxPbQSM#?LX8u`i^Z4tIy5?UAfe`0zZYy52k9yTQ3|(@j4>au5Q&_6(J
+hy0mD0ylR$9`5EPhr-AYud;$f9-*b5N_<HZAcdit`BJR+caovE&v1iRO&HpKz<JpoWa6r9Y7_8hCeZ(
+UYt;%SWQFI38<#v#VF<ZHGAJ??vx;|}BmM<RWD4Q~Fq<a1{OgCqQ^4RU}9)34d2;G}a?J3}*_raKMS}
+A<9M-!sfwh-pRa(~JOWe_zRLM<mvRGpp5^S21p>LVp{VDUtTPpbCF!lJ%C)2`2k at 5pt?ZLq3<QovLGL
+v1FN5j<u4!&6~<HmBIJRmKtl;)f16Em0q!)p2TU1SNg~o(Hr2zEu5FNOSEdi-G;Yh83pF*c4G4=>71o
+#}q>`uYFG^PhUD}7$?%5+0aCnK2I=ITwj&G_DVxRhCEr&c&g9!+V+b%=zDc_&OACcY(M>>9u{s7h7JX
+s7T>gQfJ%}MYe(`qlQAf6wpHE69<x`TJ2>Yy$O@=|QZJ;g`h8oXpYga8Tg*~G^u#t60Ri^IF+iDbXs*
+r&tUtot2xrAcb7t|R*itCe=L~BmQqC?tp0Y)wI{gyDC#kdlRn_t2pD4tv?1FK)zG-E>=c^UO^WG++iU
+g(^QJGiO%w!9lLF&04h4 at bx_31Ex0@qfW<9|E1;|!1MYK0#<%Si8B8=YiJ5VuWakl*0>PP-wNX at 152O
+&`!7Ug)^=X~{QR#Uo;xuN4fD$)x=mQd)U3$W{HpfKY|Dt#LYur4QujJ8sLaaH5 at 4sl4I;P)h>@6aWAK
+2mlEMt4Q0dclLb%005i-000vJ003}la4&OoVRUtKUt at 1%WpgfYc|D6k3c at fDMfY=x96?*RE@~4oSZ5^
+3#O0vSf?$cn<o*`K?%sc&H{~=dk*SuNM-la$-zgV$e|*xbmQj8iz;oXl at 6}#yz&J;4p)D|;k!~n|(?G
+N?a5or?f)wOPjCwg*xH=Opv6lneL5sF-t#*JUmoD at t<JY2T;R{ep0|XQR000O82?eW2=q$(~k|qEE*n
+I#13;+NCaA|NacW7m0Y%Xwly?twU+sKjVcl`>4S|0*q3bH+uxjEWsydIC7=&WByvXj{(>mnf8BoToCg
+NG<ilK;N->K6b~p6uR>b8HbncXf4jb#+yBbzw9b9bLDZO<6U;qO5|fsGBs;vtk*f#XOj{Sw6>`W~GAB
+cBNE43Z_|+R=Z%6&hFBs!fNZZiH}AAYEhNzAW0T&(^e`;f^1EY(`jAiZKD#tKRS}<vvR%3as>^VC-uG
+lsj8|d_06I!W=&b<wSKTl>s6jj^=)1*mw>0fEo=KL-lWY+-&RWhs#k53nRcPqjrqMZwHvkGEC54&zfG
+$GnyHVtr_;1n-+!lj*;aX-E>tr8{ySC7%DLh~YMo{|AW_w-(nUYgoj}=Sn>e{w#k{QII(yJ%uA2&)y8
+K|M1?6l7BwgC*vg%<2!_^{8Q(|6ji at Z$dx(t#bY03o9oCIxw!-v0Z1@$mfn<guZT2~2=0=O=jCsKTMQ
+B`F%fk*dgp3VP^4Dkl&Q>1G(2|gD!vy$RBk%gU?v(y7U&*}yTpib)9N at 4Afmmia#F5X^zx=7x=y86$H
+tK`k)+l%+F-dz|lrYmam-HYEgDGY>Zfq?ml&j9PBZl{~7oT<8=1PTxYzMN;!g;}~mCY>jBGcVg_5>)G
+^Qh-OL(s?plwZ&aMIf^<B#BHYAC^xD|>P=P at F4eh|u%j-T6?0WI2|Vo<tX0!)h_MrzYi95-K7Ic9>BE
+P&*U9xCFW>bU1?dO;AJ?-g+cc)**L3?Xy>oGrI)-|8%cN3u*;YW6K4hNPfW1%BSz44u1|-dXQ3;OsAo
+IrS@?P0GWwFSX8)5b%k{^kBXoB-#9B)_o_~__Q7gyJpAKoXgKfL?+>eJ<qZ!h3w_<RyPi=YP55oXP~p
+5O6OHE-!zm=F?4g2iTeTGs*b-0KwBDJ-XdRkJ2KBQ^lR^a{|2=Rvs$2#K169g8U~^XeES7}c1o1xT^1
+$eJVxYn3l1T%S3I1zrN3YpODrMx>$Fz&(u$Qf`K8#Yd*Z8PFnKTVQ9wC%~#I%LY+HAuBaH75pa8f>%U
+$WUGhx4ZVBKuLACQ(3C-*t+U1e!ixlV2E#K|$ehUN0S)3n!$=GL8z~Sc25A@$D{n&cI0~|b?O6asR>A
+wSP#rLSR{)m(zzzU`nkPg^83b6D?k0NSq49U9U%^zW3cs4y{Z2PDxFNJUjR1=gOK at E%nqbwi1In at +{k
+>v*QV?|&3`q$~CX7lAKZMwG&5Kz<?1(UgSAJBp6sU^>1Eo{=_s(V9wAcke*`P)#FbTFQ01<be&6V340
+fH8p^8wNt8k*3u4mSl(&brNkRaR-^;JC$id0E~ei?kaNqzGb_HMQXPXP8PwzQd`baG6};q6l};oZ%&8
+2e{e6Qhg5y=Fp*RnycVmRW+;x1gB`%Q at DjeC>amv%DgPbBs!XO4Gh~T2jn(uR=PDQ540&t=JU45{?@8
+ExQLf=5T9xVWt}Zo4P!Ace}Ods=bE1M*qmb3r?DyzflD>2SpHf3ERJI=0NnyCu^3m7v6Lx~qcNVtN;3
+!I1<++sN at ySe`x<yj1cL&RDFg~w5~D@~6B8b*c?K(}P<mKm*lEU78F&RS-;q>st07Bq4g95L46zOMdA
+rJHM9>;Yo9CL!#A&hNX8LiAgT74*k}XRGiyjHO0 at WUTgzO4EfW8QnJGGnG@zgc{+SZN0tJI0`c<}k^E
+%bzW9>&2Lu at a{MJX33$Cs=q<rOP#}r$qg&5@^CUI9JjsEa*_QtVN&!DhUt-mdW$rhNc-Hoggzo!9>Hm
+rLr(6R00)Dn*9L~2RMvm88vBMyKk%<GL6OQ22_N3I65E2e=V~jyzv1~ETr2gGKeBQ&x6siR5IWqJq{P
+7ToR?>CDEVeMZHR2y!eh75QdUTo7FB|k;Q6Q7V at +bShbq9Ro3iKfNWqY<LZD?3PAn#`w4J)!?06$go<
+4SZ(-g*<IM)%g)B|lTEOL?W-&|^#lauTE%13ogEr3=3z(|~s2nm>Yfw at EZq93;eUFSO;INB``V92!07
+W4WCsGXf{ahOXG50(a>cy;mhfx%-)WbYms=5iI0WL1!g&@b$4|`viFy!!ZQ{fyXE+lIRo{=DE$_;e$U
+getaoVr^Q*IO-es<uEvVJ*-?y^;Wn8hUfhT{7IseY-h(aXXQI-n=;b&fa`?_PxFN{_OTv_Y1UiTmWQ>
+qh%6krJJU at x8zJ@1t$t~+jxfzC*Wwk009a81)U4}#dyjhD^?YAsIv^RiCB*&!8e*`k9uo)Zv{TM_MYi
+ki8IZL!S1q;kld0a`3 at DLxtG<9(^rAR($J}Fk<OY&E4Y2wU)U(sENRaBT6X9wB3OyZh1_D5z{MKq*W{
+wc)M1yTenXMQbi}s&h)`xV1gq~ym{isCM>Qc{@~WK$#JWE=j)(*Q<gf-og%BZfdA2`;57%U5;$q at Z4v
+<wbxdaf;kbcD%?>}6;|1=5A-KU=}uN;+ds0Z{c&1$6wV4lrkC8NoAtLf{Yi_JO6Ti{;zOcwzR*&(5=6
+PZ%d!y)V02ZiI76|Hi+k3&R2V`F89oxUCiKayHPI-(J&z>GUs>59{|nypS%GdtXrC5c|ZLa*6`I4%L*
+EQ}@&X`;xVsT#^b?$<5V062_96vBFQ?u!^?l8ICP=GpDd^V`T3Np>#0MUHg59rQcWqNq|RJn0!I!}+p
+2AM<KAhUE?<=3Na_ at BDf2``-sIo>`S%wD}M#1Cy&_2{4J!gfA(2W<4s at Hbl^owgpzsVr5>^8- at h0pV2
+KXw&+<91jp5M9N|=0STbUxgekJ7<E;q6LL%f%H#+PgZ9P55Um=x>yaKDZ-5`D4cf5Y0#m;0p9|uqSt}
+bh7tzxs{;%yYq6%`nx1F3jEj^e6rs%#UE&&S>XhFs4OSH_FnEGTGZ^?k@{(;DE}b)nwXu_)@mnu`*6B
+lvyrt?hb&lk)HXH1{C$ushQ+OC7LNyJg2PM!=<Nd=`wyy^3RRCB(6^XaQ}eXk~r#O_A#!EV74$-89UJ
+4o`tq1PagbZ+L?8=pX;)6pNiU<taaQt;tVSONJFXB|(p=gV`!AmS8PtPCE{M{`u$N>f-f>tDjg+5Y at g
+=u=;~uGgSc(@>~;8&$O&Ys4k8NIg-2NbJ!xQ&@ENqQpWFNWKet(`m82m!c>UC90P>`TMMUSO_6bjgB`
+-ZN%LBHFV%yRRTNnQ?q+S1g2k!zL3|3j40aNJf<-~kVcv#Ow6_<C3v#>${*>1)P#x7q10JRIEXzhdkc
+wxGLj{KdJ)&+85LG~IK~Gnq!7bWf2Aj68E6X{+kFe^}EJ-Tt9ca|zgAXg<p#K}b{P=t9Cd{WF^zR?yr
+!S-M1aI;2mpR@?FQeYTbgwVuq&&ga{tbYmXEpxQ#nq3nz#Cx<ay<dHY6AuX$VQn+w5Fg(Y0#mfrvR$C
+>Y=GX8`FBNS*y`927{%|=fSdMzl1aqdmzb$xG3{EnG<*iBSn)k9Gw8hqhw at sE;2%~1xI=5V2T&$PcxL
+~E~R677$N{mHs}JEMa`Rj#mlN}K`<g7zz*l<E`A+d!!VGyPHKE6ge>sYpZ|Dq at pc>$Z*??X!|m*PvWi
+Z>2wpNDXs+g9*j1sC<io7MI<~@YjBuP!vid{@;S7|gR*i-m!pr4Z=bq<0vkuJU1azBfw}FnM#w&`HZ!
+l=;s0SF1ULgnc-~TzmH9}<QCp4ThaSmw%dRMlng1~|gMlKk{v_FF)mC#5Sk6>G&)>PH(TM>9`l@{W$B
+A3`Y-335){DWA6OeT#mxO{&}qP>pEX_Gd%0o9P{i|90^HrtWzuu!IRy;BGCAfs(NXciQt4X!K5tJR!r
+cDA<3s531IEN-u(eHcQK?y<4tf|Vl$Hqe_>&e*$r<krx&L^z4CC%%dH6&igh9C1o7YNhVNXJW?BHfSq
+3y9 at DEx_wReytO8H%{FmKTUrlj*&zF->*+iV_~DuS)kRTAFE$}Ir`suuy3Cc;AC_%qZ_wYpLH|usgJB
+PV!m(74^}cr3FAHm)&6*Hul2>b>PP7j?v_1rxk?KJ8%6f{Hv^T+eGMRAKhArWQ*g*twrT%86 at dRBl)j
+7?<Nw6x{>Kq+k6B6S5b9g>)cCyBt<9r4kl{WmOat5fNGNR#bDh2uyy|m(Ab|AHn)%YZ3k~2U{555-}>
+~1pp`vKfX>J<JbeZv2wPi%D<4D}Dcn}RU^v9BV7;a9D3c)?5AUSVu+#!_W`JD{l!lm_g$G&hZF50?<b
+78x6#IJU0%p3e<FTBd8k32IKnN{_zPGV%)a`f47`Rg>a2p*Wt1eTbjtQZCTGc3NZk{jA(%%GrG4)mwH
+C=Agcy<6qBA1R-j!1t9kz?Q-QtErfbQ^!PU{jhfvC{T}%)GQhO=+JZxUf9E`(x0Q~15ZD^9k?%4|ovw
+*gu&CBbTS0D%H^yc6nx_T1*@S#BR|F;5-WY at AUzW1aOx><({xZ|6qqBE5xI at -2>Gyyxp(7jO8EPVlzU
+_J#sJt!;h&HM+MaS8)C at VGYs{=O9L#vy}h9NT_`Tu5GIQ*^6R71Zl7~Ta2Lvq?KL+$}8^01J#=;gIrh
+R{4lMXbWQnt>?kukxCWVOqK6jMC?@IVex3V+VFc?4Fnb$GSLD6XI9?1r}ho$h0u?cZT1kn*bd!*}c-{
+88$`k_RNW}@LtC5HY})t;u~@M$t at dkVl7#<?UuHPituohQQfT at Y2_9xG6+v&l^%B7Rbqsu^SNonA>Ax
+5r&DFedroFPh(z>KPtZOF5zNa0vy?0T at v?Cn1U|ya1B|p5*EUX^aaPRocCN-mIJ at JH?`iR>+bN2^iA*
+on<F{#kCunsT9Z_T93IE at qzeE?ijq|>U^c5LJ)<M^a#oZRbJ!@FV!F!NgCayPm*7!{MJi2*y3x?;MP3
+3WnLVd_g?)mjJHK^}Gjea#ml3yM~AL!Yi=EJ=}17JL+Cl>hE^nlROOP2OU4m7*Bw|K$&xd=iBt-Ur!?
+ct;?S2W8HR60hroFWK7SBf`PiP0DAH>OQ1Pzyk{z#XKQ2O8G)l;Z<AXkBAlp0PSU8H2n^#*qdU?V%@_
+F1TUO?taz}CP6rU*XB*Ofu+cH+}*A^3&z3IN9}!kIZX64K+JwsZLGj7r%{adSeWu!^M-9U>T&&o%o3d
+XeZm|E*LPq}wFPbrqFRE*hPa!h6R|S?3>SOoyq6zEV)rH&1s3(Ysio;7lX0Ntu at loV!>A-&TYy>f^p_
+p=AYC-FH%kq0hsd0qg7!85k1Smj#CBI-D at SOh?y$l7-<{uREsxQ<9RSuAX32^Blh&8_G at t`8{;YU+xZ
+Lch3n8*Ks-6>iHbD~`f4qo9c_MdFfUt+UC-EmKN0cBSq=vU^i at VvOX>UP_uima6CO%YS=Zix7rFMweZ
+4bd}wa$k{&0@^Y8gy+kz_m+aE1TJC3M$eeU|4($&<8*n2-xtfX;CqzmZ?^MBsfYo)?Mx^J%a=DS_35Z
+GHvR$njy^E3OA>qeF{^+c%lJNvaHus5tw+*Ys(sc4WQfbM8R-gjqBh#1!i^HG!?9^lVH>$u+g5G4AAJ
+kqdkER3N0jr4J?FoLkLBK)VN&GHaoElbksVgCme`Ht{E)h7(P^b0G8v`9_kh#o6a!S)eaOq`Z at XVpL=
+ at ubp*o;Y at T&i*A&Bh9_(MAgdDgR@(&8Dj<1u;pFdw;xwn6~`sm(%`1Hp?c*B?gy0aBD;Eafa+`tf6i>
+$wCAcP|wbdM-^Oiw7}D7f8{Ut=N&H0 at vNXvU(KPXac8sEjPxcDWussfX5Sb|o&#wwRBCC#WN6JM#}p!
+d%n>EaEx)D+BgdvS(qF3 at tLcNzgc9Np`)Qar4lKo#%R!06^C*E1(@~0CX{1AQ5vq?0995gNu(7_=np#
+G~q8kp2!{th!zx?+RnG8wJV5^-A+Pf434w0)~-cEdX!ec91Rc}?kc6^q?auw{Bv`5^4+a9Qu6)KEbd<
+c^ZB!{0y+X{X;*4JhGMM_mv;zwN!GkWwG&HfA%54q4lTIM_!-&J?K}rY5q2Qs3|0nI6yb$Y_MN?MoN|
+Dh7f38>SobN~Hmr2|n>2fNNTlJeraai9 at QOB!a5G$7s{{Kf0>Ezj4iu3N49*3wxN*=O?uE8*`-Z4>5O
+RrIuf(uvF1}bc%;|q)ne!hRKU}%68_ubNknMQwlhkCob)pwZ`zdq7MKqmJTR`7`ql#EcUMm%>nr2g<o
+t`d%<J&2Ek4`tcO?tY?Hm4x)TUDPv|J}1^7Moal1X%Hor`M`cT%7>cU2vaPS&Dl%#6p79)P!L3R#2L+
+OB1?UD6L~r7~iy<??@4=hj5=}&9t4}sU|L~C8IB=H at FL@-~RU0>43q89f;u=?4c;??o5GrZ$a?S4W1M
+zyUl792yoW=Rc(4i3TNuXOZU}@UyJw)7jeLr*L|P#*V%dlQf$Ye$LvI93+jQj!F1M`tub67QjAKMg7p
+?w(sHZgOOfm#$U#j8xdN-~><%}+X8$7g-<|$T)xJG7YgvNJ9iy5wU|obXn;nUQVQcs(uG<B67)H*I7R
+HOh(fY@%`a0G~BF8j!oHgz&c*6V(j6uIof>(3^3I{hB^+8#LG%Lly>xChMJq5&(7(@+KoDM+3O_91GD
+plDOlx3*2YS#I&EC45(0TDg2R0e>cu7R<K(D at kE7p5d_LHRPR7uX=orw3t;+aL-c{N1ZI0?ur6H9C{=
+=<e4r5_D{d+&88m(@9)$qj-e=w at x)YoY*OEOZ?Ljm2sC}FqE?M$emD~KAoc<`8YWF<|N?2m9wC27AL>
+MCj$o at clwy(laM<fnS)tRLZ_<{l*{nI6CbFe<t<6pX;vhOtZx`PlUB=njIE-m5m-yYY8=YYegP)g{^J
+YkOwr4KL;nr at bLvC}h<X4jJ_(UxQH{QP=X}BSM$NJ`7spw)At_<i5AWQ81bpERknG1W5F;hg)T&$FHP
+>P~5dT~a796&<;EkclKw}Yl76ceY+oR7E-=g}7hidqo*T~>8^0aE0eE{=C{C_ae`=gEGIu76&wfAlOt
+$i23-6T-WEDnC8lM4zc;K4(&Jq4ziQ!tCbvO8zS#D<>oIYPEgsZ*tnmXR2l+S#>2O;Vtx!8ayi^c(l+
+i{MD{HZD#SRyGB&RS7d5X>JHsp-Dm#o^5_!v&i=W_RmcDegSsQkf4H}pn?EXO*OE(ovobVb}``d3G7F
+qReeQ{K<GOl_D(~85kG^*btmuBEO*zt%R+F0C6`EMc!Wbbhg;^ptBek(;5ik6mKD11`!Hq~$WCJNIQG
+NzTuV?5ZqybT0!s6dKK>PEv5F at y3}p`=p&hJ;OAv at +Z(`_!WzMuh9-#?<EC$A-W{V(UN0pu&_gRJhB3
+0Z^1Q=*jI;s$18f5hWqTsrmpwA0qWy;MmMHefKjW;wCdx8g5zzWYW;DGF*yBq=H-Xc~;A~ZergW42Fl
+hrbXYYqb2>C-GHpvkUr=t(#9a6{DenASb6(Nd-i(m9=`;}an`Sym~><r2?J;08WN3?^Pgj)YTd&BoBW
+F$mN6;!!*~^cVc)FBk8xKVMzoQRxpKKV5!!fBl!gKvfu;vcMxu0*q8hWGX)2#YeluJIIgp^tM)X6LcK
+1x|h8s&(pk-vQi`fdG`U&0|Nd($NxnG1618<SI7xI)Z)Tgk#w3)H at dgAepB2EiP4`Yzq+9qG%z#6 at Dk
+k<eUKaNC2thitGqm*^z329+dizw8sUN$PU#+fe!6(`>hs%AP8U8os_s<b86ylZbT@;sce;zZ!){ldHi
+yV9$BMFz=oTC=h3Z(mDL3I5-oP47`>a$F0|`uFPk$ZtI&Y4Pl(=U`%-4xnh1C@!rIDS_arei8?G-db1
+d2g}TR5!v;QzElyAD-$Z%TW({~r!uHUSkW3Vs8ck{yK6UgVyjk at ch=qrT~ck>8v>znwTJNB=U;U(?pN
+d)oSnc63qTFqJE at X8FXVm7h2WJ&&Je4uu1B!vf~cb=qLyl8#%g5dZMYJp2-WnMW^K#k-5FC&AQake%2
++m20RscM{3uFzX)vbc=Kub)fqH7RS1vg>?s7`ycazH(L*K#z5=;`z+%1dXQH<G?-~TB0S1LE`adl%bZ
+z>8OcBz;HXZ+2U*LwyRAxKut6F5htHS3HX&93Y1LM*&}@c5A5uLEeh8kO?WcRkr>X}bS<Ak9cr$iJ`R
+<<kckhr(!ZxE at OO41y1f8b;QzUv;_kOIPIfGF at tn=>}T{=D^H_t!4w=VWF91<r;YGmz()QP9l+#TM2x
+O{*8>DAk}7gw_HfL3wxYwO0i>~Vb?>+C~v4r7>Sw1we_81K1+EKgBLeklaH?3?0dbPvAy*@+F*VGPcD
+pM*}RB~DZw$mA+eyajcb8XREelJV<n4H3|s&SEflM2P8U_QM8F6PZd50!aF&Ue#W#B8F(wXhYSQZ$i_
+IzfRMz=%RcRTCn{Hk*eJ419d}Nf$*BWA6AjXg^C|f<n`cQv(&`7&YOS3`;1uZxj=fsZWcPJxDPUSNqS
+apvD}`p7sFxwhVd+;ZE7Hlq}xhpq6rr^jBrA5x~Hgg^M+spp`=~tHV$!d%WkBxj$ZFgDa|ze*Cc7-EF
+j^c5I5|9nA~A8`ig3NV;s0r_?xs^)_7{~ZtFO2Ys|*shVkld>61W<VoyyOc`7HG2LkI80H0FWq<=O at U
+%O0UPAGUMvzt7gj5PEYOwbQMeK=#|Wm!u00?tA(RhSQ;cAZ4z1U&i=q0o`^-*G!96m%M*AEI;i>c0pP
+$_KDgomvvd%8{0J!%<0riDW&IJR2wRW;Z)>pqcPj4c0_vimVCV07#XBxr$ylj-SvkCun-J1cRCgTCd@
+hWyNfYOB$8W8sm at 9=(TEy=26hV`dD+)5DCCe5&%V~*%N~5pBEd>HueUf;5lw`K4jIb%~PFhi-*mZSGq
+XS84a04d%_YrSQr`!9ofTYS~^)48agLU5OvyzzEIj3y1VK!ACR&;-~CPMIlx*JPGjs1r<0;yK?<@whq
+5<kC*S%zjf3bG9K(iDf=KL6=(vL}&uu=TB6_RrStffA3gU3m8T*qzS!ZTibPo+qhz4a%*@=W*KIqM~i
+Ffo&a{tWmU?KV&>FiN(sv*Ke_1VQs5kPYT^yWFw6f&3GOl<KYD`08jNvO9`Z5MB0B&{LAl#s(%Jw6Kc
+xxeA^`iK-KC9E4c$Cx+=pYYN?qI0MA&Df*p_%`ky0kpN67M0F*x&f))O!N!kopEf~+mUQ;ZYWNc&<o*
+r&j7+So!upz3Nf2z0CyJ(h)Li?lo-aqjkX%oMU+*Iu2?*~P;=fg;|@m_K|d}7%{x3K4Du1QSvg=@sRi
+v5ThC3}VLNm%jnNIdPXCHK%nG9d2~4`e9Bh=84wE at zDW_q=CRFi~eAqt(&*SIOzjM|jz?(94xf(R5sW
+Faw^vA6;Sgy?@ZjAswk6#Et>5!B;0|+lpXyl+{6updrtjk`X!gtu0N$?I^;Bllh7WBW#vlmc)1Wv;R1
+mcZOlV_3>HA$YUipQp#L-LFhk{uiqbet`-d!dFNY&jgJJ7)Qakm$DK8%G#oMf)U_;K~*aC`Bso!AdsN
+Cw|<FG1{~h51QW(K|jkOJpa`wjqC0pJgFm{gsRIoq!Z|o_cvTeB{}<Oo0U(a!E9uSjI$MHw3)5$9F;6
+Bx$WFw&zvJ_d~Qb$2>IO^Us|T6RW-%qCZMnPdpPzD&;z)7$M4*%kOK)JnLkmfaJC>>om!{6siHt)?*y
+3a1JWrqbkQStu4qqA_KwxtF+O;{-aTIb%}a;qA)mabO+EecB|X~gu)L|9PBVLh`^9u;;C#V+oBwc*<V
+SQS-;u8RZ2pnZ5C04#!W=k4?H*Fn^LQ}F4bNq*>gnWadO~s58ta1Tf at UgH%;Pzqx$x*Nt|o(@tKyj4I
+aGZ(`l65TKmZ2I1#<ESju<fgq1Xj|v&S<+s2c*D_lr{jd1<lsvjf<p9|;;sC(c at bEE(W{JzIb=N=9=2
+d~`Aj<}FEL#=5`^i%SXCa_Wa)6L$6dx6e9#>M9H_*6{8i(gc85T89|-VbE)UVl at cAI!uA#ityq<HJmJ
+a8iY4~MTbbQ#A<2MB?{lEL~hsmR4d@(1#z2UPcU(@*p(iOgb$NoHwk{>yh0CbHF{*}8Q42hh&qptezE
+niV_k<FPU(IoC!X7gSoiFmI|CiX8pBa*&TRa^J7}0Hp>zTb#@zp;OCJLbtgKAkE3>I<RzD^XhHnN6Q+
+aauf+Rxyoh?WBS`kM1>?{&wFA^jgiHfjg+$n1+#omij`7G9*v*=O2$ILaLW#*gqhqL7(w$dtvdQpxAi
+hP>gdE+N+V3S$LJ_Q_qBM_N0lu<Fd4`<9KGc(+lw@{&_&ccng!gRb8x%LPmrR>$vZNlCzpI{{WA^y0m
+C50$a$x)W{HaKP5dHMgANYcA$Sz at -}Cd8K!kg9>HBl#12Dn%U~0aK@;dEQkO=()+h%c{y1hs@!YJ312
+%C62Ca(FE|q1r!KgO*l>`;VtKSU;cz;UQW~8E9E(;_~4=20I46|ldc3R<`SQbKm3=H*H5zib>PI3A%Z
+hS+eFG85MnIS0n#o6c_*3a`;|SKVD=^N9{A(t*012x2hSh)54egQ8v$4-J313dX3B>vINA{zWPs6`6;
+Lj4Mm#66H?tq-+BIvtPR2<|`NY`(7_nrr at 8)!pY at a+qUnlzJ^|uJ(_1zqQ(;of_L3J0>URpwoTc?3>I
+#1muz+R8-&w=AYJ;3^MawU419SJ^$OCG2-<P~y<V<?NFd$~?w4~TTmsXuX=90n%#3Tgo1_!<*+lb6Q$
+5;3lJ?6S)+7?DJ_wO*;NYs0-TyO8(7oWx+blv9}xR?bV@&82kMEWO)WE!x~a87A{O2MtgUeK%1Vq1!o
+OQDEpxM^UB^B*?J3b1JP>LIGt7I>YVE>gQkZH;w%?Z4=N>+YzdTvyR2r`4|EpZsJcTBpZ8Z at HTi#OM5
+sV89aMtPzdyALudX|H?f1-`sj6>NNeTOCM%M)s%vz9oCo8pwkSy3)?uVmN)aaZ1Be9)0nmrLCj;r?^!
+Fx07dR*O;1`{Qk8a|O at lVe2!Y)tCpt_Zrf2G5=^G}1Dv4c73 at pBE~Hu%zG>Zb#u{irLUEZK*XY7Zdw6
+x5;7$qCmyftn+C^ltqo28CDW`yinOJ_%;q`MJwwB#s6rtb5g~ax3{(bV4H;m~;6%bZXGgb*8U<LP7xH
+LY~#Da75nBQ6H`hKD`ddZ)k<FAN29qZelVD>_t!9uK0vMg<u5A&~*Q`bH$Uqy@^6?9m1878Dv#@MNE2
+vkwkVa>TyJu8!S+V8;n1G(jV(VvFZ)$(2x!e6Sa*rVD$i%sYixtc$lcVj8NJ(r5^sF1U0Un+y7(<e=z
+6_4>NP39x>&e4+ at yCB9M|SPDr1pInR=(58*Zlz=B3hs&aR8(fJgLQL!Weq~10Z)tsS9 at Nd2wR;J`IZC
+6u;MnjiAavH$bh+Pj0lY=|XA=DVh(^M at +j>8BAJ-xfD3UjBG<Xdx8b7xvW9oFavAvpJSOv#Yy(5Xy);
+p#VjU=`v=kq!vGrz|3Wac5FISJao9L#ZvKUO%6 at Q-Hi?4w3idnRG<KUU at slgdH0ks3$Nx#iy0#xWT%U
+Phzl!zIVQm8yjEY*EUf7`2UA;f894-VAM5A<NXWHfll at K7|YV<Kkx>7q#q0?wAWWp5gmrE0b0 at cRiL^
+Dk at 4z)-<yZ at jxEdB%jxc3oL7p^S5ZgFgNNty_NFSe>BH4>$$4AJpA2(~q49<+Ww#$b#phnf!B3^CQAe
+ln{XC;jUFe;#6FG!xI@@!5_u<)$AL!bpPoorNuubVS5;oFqNElX%KI&7ag&N4Gp|8E^X at nZx?*i=q(7
+-{J$dPJs=Zgdf>-E2aVEBDc9t*s_Y8v7-`l_j at KbF-$tmwhwDGP9L#?B=?C>|YBsZ2Nbje-{4IwH_lm
+P9V;LW7?>um^DQ;_m{?oz>E=j(e##{?XGF*||I`^ITEvgfMf>283VJByhUXL~z#~jrgs%U#EYO-e5nN
+*G)jkW<=f2_=|pgi|&(_cHVAoC+=#8*Fehy63W^i14sXb>W>R24~*lp#3RtOP;;0SJR7WTJqtnq8yj7
+9WMX9CFo*5+*Wl%3SbEHzaqzPo-K(?ZJNj|R-Vk>ea?a>+n at TQY76%7rl*bO<?Acf2K;pQeB?>QZlsc
+N^9)ne~tB5IN+z)%)N4`t)5k_;IcKxD*@u(K1;r at A3>`@|q)x5xqzD#gt5*VzZJlF#B7M5m=SG$+E1y
+3*D&mG5f_LBl1@{&%=mhEyyA8u-M`aTt at ggRFMXNx=lZLNTc1F6Vt3Ht6Dh5$@eUT$S~wI;tuS>Xq9B
+~=GyK07%8NPk%>Lk}LULg`#SYPY|A(N?XNWt6W at igV8k`sn298nydB!g^@sB}lZ5{)+6Y{TU3p*9iM=
+2?weX<#7U{tkddF4f!?nWlpp>-_SEAsNJ+fWAvaJ4Hgt;zc%BTFswbQBDY*iMkQmOO9rNN2{sdSLWef
+o73H=#jDj5FE~`7A^#SSucI at y1>%%;8b@=C3sAgS at k^$^p2^iha^z{(gNG<Nn3Gc(mirU`!O3y(Q-B0
+*fnYAYuBwk|NyXMVfYPF8sbT)bQM=Xb=xxVb at lOIpi$=^8ZPBb<r*hl!tKv7<^^T7d=mwl4#U%mD(k&
+e0uas at NC$Qp1erCklwTO<ZOTElwy_?oLM+T3`8dI}^Jd|Zdr&AW;uUQr)W>A|l-R9tar3eYV7m$8(#_
+hWh7{j>>swpdr?51iJ9W{zu!zomsAa&lXt&xSlZ`fpH60|XQR000O82?eW2nYvru3kCoHClUYv7XSbN
+aA|NaUv_0~WN&gWUtei%X>?y-E^v9RS51%GHW0n*R}jjfcIs%87HNS1IW*V}8X)MQAIKpHw6rvqn59I
+Oq}FkR{P(^gCEHqi(`Zp2)|SZm;F~vZxM`Xuo$9jumfF%-p`6&@D?X{V5+!x`O>Lpb39}K{EW8n&CG7
+E{B`SGae4WJI!nDGfhJ4LS^vRQLrOuM%wbJmSTBk}Hob4mK+Vr{<YZ8SC8!VMVHBIm3T9c4)J8Utn-e
+F(Tcct{$gmiAnIt4Sav8EAy=e#A^WJ!wSg;#mL>3wf0&*8H()(g3IM)#ib_?#re`%0Vj_}jRwlfE7w-
+OeS+BXMcAZ44lgqry+M?!B>2Y-?52qL#M=+}3?tYNTg+J4JCghSbi$8v?)vP&sicbx(X8fZ%OUnfQ}m
+Z<W?~R#in78-YbxDv#qz9j$>f9Ko)Ty(1A|cS5Th5~)+4(!r&?l}bl2U4TBhyn6N5Z<lYcF2zgn8u<_
+(@6`_JZe*|hN@!zlP_LL?sVo&Z=Ppo03LFrbqm0?M)?yQC8xh!2NE*(NDo5w6*Ho#tWk$dRPzGr67S5
+27_tbQrSFwF8QM(Igi8#O;Ct=zEk?Xs#r#vpklSwrK0GG5 at vJLckP2ibCiVXW!xjH}wQ_q- at vI4%uyP
+8PHE;y+i_DfYVAVYaMx#ZoiS66TI%QwFR#ep#y*u~$A at fp~)vY`cd2%PeKxl96;Xrpi*DO at 8_<eGGc8
+gBqB*Eht|3f1CFVxNFejVXH_vte9u0F9oY0MI79+Hd98fJn5)qYnYjKq<7B<T8Z1ZV|xC8)`%Mz)S6Y
+=U!Y~RLa-=Ix9?bfz=lMY)SclE-d}slk at JP>$Sf4;rUNLXXyORKI|f9$Om4&NCZCPO3v>9Q~LSom+bS
+iFKGsx8|i at yujKhk9N8wp*4tfl!k>I-*F0ZLe6B*@g2Ia>v$hz2L8bJ|r^{eZp9<={coQ64S!?XU?<B
+~bK!=RJCCYzA;?E=T4l)N?e(W7&1&nAtGz}Cm+mZYmG%Exvl)016fgBc!@MeSVy5p=ubpsht%+4stvh
+t!K2|e_+^y2z@@Oh-S=vnX{x_Nzl#~TL*b%Nj;G<|unKiFjA57icEbNUY58<#`#a-&ZD^&M!%IdK<`j
+eekZv~{b<QO1h>@L{8dOq~V5_-L##6+t7w|Eky0j<^LE$dp>nGz_N4vhY2?-95hJ4O$Ta9`(MZ*cAjB
+J!&&nRRuYW>Na}2TLpEC-MwRFB%IO?sWjxAtXN`V*4v=|VMrK6vQVNk1 at +Wslef%)1HquxQ%bR*4jI3
+nbjAm?+wtOo%^xNX*3yCBHOUeN6AzhnomPI4X6Z^iTTa80M at 8-8I0Ae65M8bA3mxSzkeLZ&AbT<ph*@
+$pJmJ6ZR$P&YoooYjDzGP{$}Am5Bac8Hj?AiI%1mTatF at J(;9%XBAh-DD0mqv+ku$9P%*?Wk1C<?&qw
+07X$3e at IJ&I^y%5ii{Q2B|$eQ4LIA`k_VYPNxn<-K<YmIGkJ<5|UKi5DT~`JT0vkcYw=$12ZpJ1sqHr
+^^zE{(g{0QalpB3>+ON_;}+w%qrxH*;5`5Zw50A?3$Wkx(x1O2M>tu0ZB&U at zeVk%rw@=jQ{K>-$w}2
+Vjp%T(#ISzT`tA<d)wr0)=?S;d?!^rp2yi_wk*;@7BvAhZw&(6T{IfgzmX>kTm^9B<bCZM{rublg#U&
+CJ6Yhn)|q$UKa}DAm8`e=T%1l8HxhTI>i(5%xcGi$hwG?N8-;zRn{KKc69)JeXY%W;sjzywU<uRmTw3
+G3;NFESrgbLR$&LY(AHRKPmZQX)!p&($09<cywFy=aGV073vVGN%dw#w}hATqzuwYrYgTS`V&9RMln3
+-6DXS$qcps6#?&oG(Kp~DMf!~d0esfve$%+7WAx0pGdH~gPkUgNAh0RJB^SvncUBIQe~rUny3&LlK5t
+C20<*%?;D$}9`lfm3q;=)IalT;Be$rVf_#k2IJ)=v-M4)44{>gt<0eHDvnP=fVR_{smA=0|XQR000O8
+2?eW2?KO!1Iy(RWAUFX47ytkOaA|NaUv_0~WN&gWX>eg=WO8M5b1ras?R|T98 at aLP|N0ad>3T at o6h%@
+pEi0C?j>k at P&cvQO<0QN5b$FU&Q|g%P=5#mp$Y$?n->Sm<(aokLdpx<rd*iW5pin3j3WY-9hduTxTix
+c##bwEc{r)rd$1J;8#Oyqs_ICCd`#zb*X%Wv at nXw;!dc)S~EY4X3wbC+AChIcG*~^POj+b#-_I7r5cX
+wa1c~q2Lwm_oSF_Aw1;p*rB{ur at klqRe7A}W(Cg(8zY%5PbcvL9~C%Pa*7?=O==|4^{CXnmT;Q5hesv
+QP1WA`%m27Ns*r)T7xfkBcHMcJQk-F0ZrvQ^EP#*_r3rl8wjnb-B*t at t7scRhE~~r(~MV;_)IW<2+gv
+J3Bk#7yP2kGWbe-QIz?5TJG$O$5(M)Ko@|@DQgXS{oY{I+5w5Z%9bnW+#~^Nw`{&nr`XeCXFR1J#z|U
+^%iC34K)p8nqubdj^V^dh2A|3 at Y>}lGot^k*8m~(BHd at B7^E}IWtyNSMJ`La$YKyK_)U?aOpY$z|gI=
+ at AZ3zr~!@p1FY|{Ea{nm&6M|OJ3`X`L-i6LW$tcYPi%4Awl{aHL$l!?f=%;+!UD-doQ{?_5m<0p?{EK
++Q2Cteis$(<>D;6u|}r>kiCsXb|Z^M_WKO*+W&9F%l|N(MDQhQ*Dlp_>3{z?VJsWg!LlvgBHCO3~!jC
+xzVNf4eMBXGxTTb{fnJS*xE=xUETY(K5P+-1ODIsV`TeGe}qyGYBR{k``r at PUH6Es_QFO$Ew8JXybog
+ykN&2_5_-61q{E!#4tN62Bkn11x`Rq<Mg7u^n2<vC2LeLRxcJ%M&1&BeWd#j-*dX`1?w}Alla%!DI2o
+KkJ;hSmQ@}lMJ%RtFUA3F??RRM0xVp%E?G8*BI!j;GH;!?@W0EbWH_UCJFa{L9jSfipnbf3UNT--Y!6
+1w`5p|9 at 5A_i{^xd_L;0>^;f#%r)W5!E{hPV-k-d|1SM&EaE6<m!1+5J6j3!LGgO=nnDk7Li+_J&2mS
+ZlLmQa^HtV$D5|Hiruv}YQ#@)G)Souw`OGyjAWVc2`dt}o*}CNs(6o1`cMrby9hC%*YejJANw3R at H=f
+l|h~1FWb8qc_dgY1!`B1BWAxGNlQJX4Lw%cCyicwqg3 at B~37pM;Wh92lf=h at 7S3z7YP}4s6hX^zD!_U
+Pe8|@wr=<~i5D}LXk}ziPKgY(KV1M>Hh!O#(c)bW3xASc{5iQv(snlaM?95Qcswo^Sy|9h2(lAn_@{W
+W0)3?M!m3x$=khXU8T^qm>Q$Z;uzqAvjNE~Oq3IOW$Kyo_6mc0JkK>=mWAXjpVisLx$&4?pB<d3R8)t
+$+Hi at SZI1MlsY?j3ZYRV;$S;Sho47~(S@*MiIxMjC-$=a7?xjH#Gn5-{~-irGqS$=Vl6va9o^!rD{j#
+dlet6jv4d6##q(_jwl81>V*vVQ#Y8fF{}1^n6*E%7p at -QcCbOR^hs%mvpeyNEjhQkZf?&EyY<;6D9ZR
+QGQ|W?goV8uGhGg}mOOi9~ks*I-X;WF|^rRg=++>W<!n(QSs|ml*Fhu?^BBvK>nxpJn9k$R{7Io%0|5
+di4G4w|{*9Cusg~i2oj`f5RfFEY?fD3;1iaSaV0Mt^X=ILi-f at meJSH9BwCQr-4>VY$STLZxCeP#^o|
+9KHZ0G%1H>aDC%T27Hze~e>JK1(I?;}g{=*)(O}ySU{NHKD1-yQaZ8L#KGGM)jG-^p<Ky`<zc6NrXyb
+&v6eNYefxbhRNI+w<^NhVt$Xe4TE6a`1vv*sttGfle%Zl}CwMgRG?<C2BD*`M6uuMOGd^lv+$zoy9nI
+O+;k$~;yQksY at -Q*TEF<LK5(T^Xg%SKmTrc_c4HueLVQvW2m$hv5(jH-IvPEc8~+mA(O9 at Bmbcu8pGh
+`9hFMgqY9jtuTaogFz~^k22VFtpfUR1GtCocO+??Wt_nS2tr0(w?ubwbAEk4ILQm#S7Y9zE|`X2Y(t`
+)4%m7rv;j(c(hu at Q7#l9N~OkGde&nto4|MA2Ha+A;t##ANNif$xS>@s1vcz3WI2vt<(NApppMuh3yt}
+Gi#=jWXgj($MmM(R9B6u;o~b|`Z45-rLdzDX>9jn3pReOz-ZBX8Hd+Q5dHE#`!&}aS91Hc&Ee(SZ#`a
+dB$KK_Vh>!<veb{AIlnk~K1uUVGk4?7YZCEQlvkm#Yt^P8$L}~D^&Xx$yx3DER*YbI!rTfbpkYAN+aW
+3U2$H4gFi&+ug1USiN3-3vqSHIT`k&6oAn#IL5Pq_LhUkKG1w%cVgT`wXnYcaoJUXyov+sb1$iHc+zE
+nqtw;U;~Oq&!p)S}*}OpE at Jx>X8Svk>*wK(a^4)dm8$AE!yX5?;g`yP12?l`|5~?OS3UX?Bba}xqpmT
+ at I_1$TGnQ;@*FW<Lzp(OYI0p_Pm+s$9&YV0ill6q;;Ed5AYIXz(i7Q3W4c$&GgM<qNAf9HBzBwgSvLj
+G`4p55!LBroFM!)Cn%8BPF_;t=u^J!S76tlIr`29?TrF%zT^_@>RnCm!cG<ft(1k^I?P{8*U%PT{hr2
+T8+I6(6lxB2Sr5TLAq}Gh?tu?@Jb4Kqrl7rEgAIgy$%5eb;VL8rLD7k1c7BK~XL}dgvV^qToK=745>{
+;QGmB#Tbo=NE-Wp-*F7plg3M7rHN5VGKh9Q1RCow4C&KW_J33X4sa#teusV0f977%_q2dz9~*4wNxA_
+?;BTJV|FVh9bh`%6rhlcmt(iNh{)?*D;<WfW{SBjtxOa*U*V6#c4p&doL~Z3+ghM8X&ev3UZH(O2RRa
+mH!t;*G<QQmCzPBCS{bQ=n~+l%#*y}-WRN%r7;D#8j}Md7<UvGhV_(A9gIHH51iyFCwK}2dQ-L&;ku(
+rB`bbjVIM=SdSm$E8(xk6{)7$es2x8rAo5)*X8kIgO;$Qy7 at 6Pr)zvx28VnR=B4D_F{LeVg at WiEPr|a
+beT}b?g9?(}<p6fLIjst;p_|_`pQsapYNROc-7#vbw{R9n=uqr+E8`3%f7xX4su9rqb)CMLcAQN?Vsy
+T1c&*nAUVV+A$_OX#XK2OAfm-zQGN!$2cH*|FMUxL!NOh}gPvq7gL%}cRfE~7m8XY9-=W61O%{3Hv*Y
+>>v5A3a`xAxk$Yx9H{Tn+OBIx?5*wXEeFmRm_<2wASGHu-EUw|5}}{BGK#hSnVfBVsHpVI-TZJ7~7j=
+Q&=6!6ZYioyC47j^854u{d)YjKb^mS{nHOGU%ghOKA8J>&GW(VDX`6gKMsb+2ZsZ*R~6+B`v-@^R_9|
+#y-EBh#z at ozO@*x?8TYIS%n67AY*@c?Z$)`Fm^ma=UX3!@-}ceJMjfS1wml^`&zNDb7d0|5l#u2j#S@
+fR1iKvc%56p5zCLjtEn_B9fiw-n`3%uDsF5=Yv at R&QDd)Rc)pn38(VCQ<U{VeMCr7)Bk#9rVbn0V7UB
+sjw{~;=3F^C=PvAq#7Dl8(ee8+Qc)UdQ$jtrM;jD5wH?7PIWj2LP^f{Q?QSFTCo-_=d-J}RiaM|z~Bn
+i+$Ij)fgUGC!uRv-ts^hNeTcJJ)iooa(bR#zd^u*$H>n$!l4`@@Y(b?sP6fwMKrekzLEr(=d5or=Qa7
+n!-YYs^W1)i!spTjgDba9D@%(Pi|mc(JlvWGjt)b=%Yx)57M!q?|DvwuJ__p6*bmp(Jn4(HC}?E(v`f
+LcGLI-mPEzhzQGK5J{?*bH77B5WZHqopd>MBEFRp|fl9V5=EP6g0F$j!wRD?`Ab1(zkfKla^84?{@7}
+)t$u=hwP^eGZeOfG{RiPHjxZvSG*dc`6;qS9-g~78tTVGt7C!RPT1ugVW!BL&A^BlK@(2>a^n||_EZA
+0Y-wx(L^+^A)o5U+++B}YeY(Zi~uxIQ{%k1ESPAM&!QaIMHbKwofdhxo at K{&DmXwBgJcfXW5^NUg;9p
+?ucjGFvZZ81%!aWVBe|z9ZpzC%;1{9?FQXuad}U#OJa7;bUjh*5swRHIY2F3g;-KRa7m}4XeY}X@$FL
+4E3fknK3gfhX2oFD?}F0oRw&gy&+q=jA4Vz_utu={(%Mp{XS<iQ>-VTeP{&!@BcFlhpctt%uxA#Z<Vd
+uT04q0>@Il;__HVfX_TPUG3?H%Y_fL|qZi6c+Nl__EM+;Qu{}3M^$)V at N8YGzX<?H1hJLgu?6E(SL@<
+UOPuCO}5LB&lvv}dRW|dIlz&K<&bGoyK`xNPu!7k*AqBF&ML7d5Dxyy=A$!djPL1W;sfu@?=h)o^}LT
+xco)Zh{FZFXA<^a_`oqHTH&7&O58!h7+hxyODI$$#-Jt?Ha+*C|A6i{MyJ7+h0uwB4_vt%z?@Y%fdj(
+wpR2G at IhOAZwg)Lf#L45+CmFlXR_Tfxi-{ZMoe41}1vIY`+qvtl)#=BYV54kPWHZj8wWs_^CF;P}Mb&
+-lu`htTt-)#$n?TZ)N;2umh1I(i at NpT27c*Z$QvJ7pFUVY?jFlT6F2LTcph38d|mwABCS~{6iSM4<BV
+xB at g6T@geh~gA?7+!n1-rMjH0Y@#Xz=)fI06{`+Bn at Ub^G{BiV5Ja=4vK8IVb_*!)(Lx#I0q$jOhvNG
+)YLIk&z!zw*1%ZvTB_uh(P2Sw5|r9zUazSmGq#IdEOoQv2KA}O)Z(yvU6k|Rfsv`!gnBqtx<0K(=eVr
+<M-xx#^~0AF-e1&mBv>$hA=C_th^yF3o9LemrxRDm at pv6Q<+pl+v~8yi)m7K()<N6sA)v^c%^rsU4R=
+5U|PT~OyD^;?YswoWKQ8BqimYD|`pu6T?;#kZJ0Zk{~xm_CDFpyNpyO&0vz10};#y36Z0R_8ff3EU{6
+3__Ww(QeEJ2 at -Xk1MoX}^v#XuI-NzBiAqP{vt&MxY4gKR$YHwRu at x$rcJQlWk?48UEO#Q?R%ECzc|Hd
+8AFtc>D0mD!b6*EkyG)ibrVd at lR~QQC*Bvll1=Az0lj2gi(d;q;Jxf+n(@1B5^MVT$Yd|a4(QOYGEc_
+=P^<c#r_AmiQ556Q~(<sHucl52g$c86uC<qv;Q{e7mjk2O6CO!v3TN4<B6P at f}tl4g^CKh&9YnX+3w#
+pN9O`%Ocq-CsTKt?QQq7DC=2NdazQ6Hrykv1APbb{pk)zKv<=Z>ZpPHt9rD$aipM3H_waK)l?qPmLb2
+upEo0&DZ^Vf-<4^WuM?z~a2T<@y!lHe<EOW at MlibE6Y_>QPiOOE2g!!U- at Mk*o-PW}eB?lS5$im1l&D
+*2b{q&3TL_S&ez6Y8EjhLz8&}lZxowxin8PsjVuWa-3>l<yIM4w*X^wz=I2qU_#Vj- at W~biCQ%4YzDh
+5?p^e3lZ*!*YSQ+MobcVj at EI75es8eb={X!(6zC2r6ocYPx{uX+QND^=4VxME`-79&<oM*IVMERT at 3=
+SV&5$+v*ASW=3D!(mhLy=3gUZ1Y>fjF2vcSE3>k)LXpybOmQ<_t(;%PEZ;u&V?wQ*_UwY$b`k;;o~K-
+j!5F};kZpD4pZN|fK7h&;;yHb(7C-3wrx+ucVq)`s6YazCuk#8I^=P2!PS{&p=2Rfp_I89J#GIZ3)g5
+}i(nyE9QJ9D6ia#cPU>A3vIXets=yy?&eOeBA!JBgfN6!h_dE0}AUC{0_}_yuIm|wi7Dt!E%VTJgF4;
+yC$uWNPWi at Q_0#`8-xf1nhM&@a3xar&vGR)flODcQ0GpAY)ERW!8Jwdt2Q?nv~VtC=-o_ at Jx`J47q+=
+xwWoMfTj`i%?&T`Pf0ws;fkcLaOv-EQr^v9;#?20B;74ybjg+XaPr9dxctH%JY-B9d*;43~p2zI(tZj
+b*i-PWPoxFG{E-x-SE-(J~;G%7diU1g}n~t!0b<*P0eNo9&CQw_ at 0PqPgMNQD<_njMyZ-eZepbvh6`G
+u=>$<sNP;Cn1!TH)yw{O4OtZz_T#RKny~K<Tk4dRmtV!zHoR+|VBybIXG2S!#qu0_E7g%cc%vf{DPdv
+43<lMkiOGP*oLRTO|v(=>SY~g9l!w;k0Oj;geOJLol>om7E_Ouw$$EEG~hu!pLURC<a`*ilUX{CqKfW
+5Lv-sM@!uJGBDA&!*xcy6)=OI{SzE{S5)=cYR!zyV}vCEzOSN1GE=F5G%LkF(9sQeM7dl<B1Uy(add`
+^nyxG4U4hh&&}N$<{w_8HwyAa4thFE!CPTqiX)4_OMz$6kIH8;@k&DmMeWzIpYX$AiWR(Xu7M|2xn-L
+s|puN~*bWdZk$gXjlBjyNua<Gp+z;(P>;D3uXw6f+WbJv#%=rcGtao3<yWO!5;r%+O0D)2iA6by$gsW
+}mmH`)jP^{6-g?)9tlKfnBb{N4E<&)@&l!+Y^7bkWOp)llMxre=k*+Vu>}cv~@&9G#`Ao``5x<>1_b6
+Cr|jA0s-Nix(k_bN_yCGyR<f*_>GXp8*FZlKORk7tzRyi3uSb8B4P_EX-<7c{IQF*`+wGm}WmjImNyL
+U0WpT?v%<@uhd$xBnn+IJx(!NVxV08_1xv=iX|x;y?LMCGH{5dmpIN!17O#SvAt`|O~BDQ7(DJjKHvc
+q=}F}<C^xH4&me|(k+{u3 at s!t~G)q`1*V(!t+X34NFi`unZd0HZ{=wJ94hA$0N+qR4(e_2KR3}Q)n+>
+?4!V7I`2=wJ0&dWJzs`O5AI|8hiw%iW-PX<p8n9>BXNzy!v(f<3X?Q?&rJ~h?~4)T!4v-MO0J^0a0f$
+%_<XFTq*wii0<c63D32$Z(%@TL*Ue9122lvZwaY%OLtrOCjToSMjwFRYBmB<1-g7;)y7u)x)Ada1OEu
+;M1S2o*#ic3y^OZRC^-1?OkIM3R+Rz6JxPYP8#u4xU0%CHjY#cPT#Bj at GCm_qd+vs5#852uthk)Ih$7
+b<hlvV~H;FhI at 01n`u at bOM6MC^{0Xu*=q%l1kG+*%e^h}Z(NDriyfI)c^8iO-3+BMK|!mMFLXgykKaT
+KaPjEdJ@%7|snb;>eX%Ox2R?KfIe`rw9RT(COy!HJps<W1eh7roTDqxAC#8bIfl-?-df8Kws~voK2fg
+#q<F-+~pp`>VGCuj)6Tyf%JD at 9H8=Lz9Ht}{{r4a-DY(L67q<}V6_!}N)psn{zy)A~an!H=HCmbDXU6
+V>`lf8_J%SyWVWBW3`Y1{Qp0`5s%m{8lA-8^7;uVqm(<F1DC;J4XoXkU2v9IK)MhbkDbmc2w<e*f5l_
+i-9cFJqpC`ITrJkUw}d)6|{R6cG+~!<$GKowy=!sP{)45<-?$Ibvwl)&=DaP%R!gmq-#$sxP6}!Uh3E
+3IxEx5Ua8QN0;jZ&D2QF#}A@=$^=6%!@(Ri{79AI`{7Xk^%|n78l}BlMqM7)f*Z;yu>c5VlTX;7t7$q
+0ji)>E(U$X(2EBb_yILe5cMN{HUKu^2?Eky<3ak)xY^f$w`i1(2>klTWI){op14|4V6wq|5@~zInnA~
+tIKkG-+{MiC98mLPKOX=E!%bh9n6ucHe?BTex8t8nr&aR)dqC5Qn&aV0S`W)Zp+_{O|ib>~(YUkL?5D
+yawwM at Hyvqk)(wk4|Z!md!`j^B4rS-DHB-(9*QIjs<CB^A at 0VHZ1;U<+Sb9q&BsUUjp-SZQV1-+h)X(
+;$7V%7NHp(c(I~E!Z4K50wNl3}E#ac=V;hy2bBCy}M5{Q%Q8|vp8B%d_O6{)k}F($|o at z+s@o<(U?0=
+e1pH|l`-0=8JriU?x33w-_)y}zb+c1i4GiQtX7O9M#k~rL<|g$7lI`%Zl%M`(I_}KRjEqe{Sr|DJv!U
+mh54<ifS>SeOnBqrD!N**G45wqCRBNK+-Y{BFkop{Ko_N2Uagj8z;D8rr8Fsf;jUJYf7LD^o_5H9t&`
+_%u>T>zI^Nm3aR>XRN?@{$MskvcA51*l=KkHu*{bQT;$XX8q5;sSUH96QjlHCkaBDJvUDH;vsVym?+J
+>q|aI2P-s#P_Wu9wC|EPwy`Rw0I{y(S&Xid(q+8ePZ?)!0I|U%lVJolX_6j>0+2?uoNJ%FsuTPg)n5b
+>D{l^QFA;u5ixq6o{W+&kY}bk1exYAodj{_H+_oMpsF;hJ|LDXGLKFX)2+s&YBCeaT6d(XUSDEL)dHr
+-V8uKgpx#|yV*41hf{(Y$>4suqP~PTO(kch=rv7_4ERxt^(?Ml+J20e*;Q<UdWjqgf|tq}-RU+03~vw
+*+`HP1AFMy%Sw3mtPQ$U2Ducy`6~zaHSK?Fex!ocn;7oe<zUn3+(yf3~8M<I9;u9=<bbwGW6_kz-hR>
+}_-r at pc1A!Td)?pdAA~P!tf<oR#YPFPo(S(Z+q4=}r#gCx)sCn^YC?33q+Uxb2kvQ)6`zI#{hlkb}`3
+Vd(TTU9`1$&$9Cb^l;CDV$lr6O93C;>2sEh5V#T^GWMt51TkFQSrDh}KUy>N#Ce;J2CRBs<`hGr2(rq
+sl?x)b53+Pq+bUv#OJPVb#P)+afMw%b&(WS~P9pz@`Y4Y}nG)M<X8UuAm)_c+gl5vRENr<jXwQF`DE;
+;C{e3o4X5#ZpeZom1ALSXoNE(_!e<@qcJ{;r`-7rZ4=G(i9h27Hp(Wuj$5>l(*rL8;7)aJF11<K6phH
+CRR>&#w-wy`Y?TGeDQJJw5Na`it`DV$EkFtkNC=KJQ4G{Bogat})xW)Ht2aJwAQ?X*m^}1;(EJPn+~9
+}qsd<eIs~Z{AG%~Dg#NEr|XAdX$b<8e6mGA~4C2QqzixP&`7j#vTt|t11T3iC4XNq9n3AN;ali(6z!g
+fNBH^B-<lRI#IA^2$(gA<(O#gP6ZZ2F^W%zgLM=F$j990$tm1P=rB_|d4KOzVmdjN*Q*<W92vEONb<O
+g(ujpOxE$SY5uXc3NNYl9XKL0bJlm9<^mDUsk4wXac_a1m8d7hz|OJDGUGC at UUG7+Q0@QE_$LdOmZkx
++MA-H(fom5Jlr!d$0N$r<vTc{fTy!PCU4$eN2%Vm5SS$Iv?57&ap at jz92E(4G)@VwX$JcfRk8IaDE?A
+peBj^zfPZf_^?U5|X8Z)*nR9i`QhEu5pz8Y>a)IrNHKK5Q;{Ab&v%Lt-6qp(pCzbc6pW?OZdJGbWn)!
+}_>G6V#2!7 at f(hI0`MXjN#W!34cF3H)yMVF9;)B2m at +xF-*6fE6X&8nkE>1?|m$zgzcHG_B;k+Ujfna
+w>jDu$eA!+n-`{idR$S}P=g3XgS<qrKBSmpAIUX^sp(?Dy8%@)^(C?sE*dx5 at 8jlX#I`(;{`^b*SOtT
+JY3if3T6<*%ssmZkHOLa&72f=uB^m4pH^92Gw<K at kQTBcCt_m0-;3y^FA$-2(BSf9DHkUy!XLxgJ3=p
+-i{VJEo0((eKZaN<t;wGP%5Yhg4j}c9=pK6u7-?|@E(X6p$HL9Xi}6t{6%3&h~Buu2<34#3jcDHWA63
+xDWI=n;5<Ja;N_`n5p_GofV_Y2UqaIH&HFzxT;wwj;}Hng8fYP at x?{s7O-5E_c4ZO_{rm at 2rR@X(QEv
+~23gaJl>wyyZAfBWkG2}a4;fY2 at bb`+G{(&H+**bSN<#qR|P*nb{%xI}_x$TQ2%=&OZM7(s6r1-KoPf
+_ccXo+Oh at Z}eTk()d9_4tsQEsBi4rW7v2 at 2Je;B0;wdzIQH|2oFyHwMI@`B2X&8vfITHff{o`qN6c;6
+`UXc#oYr{cFmEg-Jz|bObR{OcbGR_Vtua$%;W=~A)x+RZxZ;syLUg<D2V`nQUity7QH2d-6xzt`IAGJ
+8xSFGA$}!oIl}}|IV`T8 at LJq?S21s4B|4SSr@(yTU)A7+>HM(TPzmK at naUf6JhY3wa5<{Vjxu9DhMr5
++Mv#{{cl<A31Hl;?G-(00COl48)(^SUpi}nL?CE~^$Ro_BhoIrJXkQ<tT2dHitZy);dEi$JT@`rZG+r
+^HSoCbOvUrSo(hhO{2%nB(;%1M;*rWp-8O#g%dlq*p(x*dU_(pW2l*AZDwOKMEJw$zK<anraQI4x at Vh
+(U|%9?Xw5s;*xsp&p|?cTQ(MnOGKE5nIxNwRB8!^sHXb68L at y#)akdk=R(V9z=)e;DA(PBQVsExoWZI
+BH=AI`m3Bi_MkTJP7QH=N#OX5w at qML#Qr~stF2f(qWgpK+%1kK;)4bXf%gHSWJZ)jGwB-kNlrt<~-Hf
+4BTL+hlBO;EliJ{_u?Lp#UQ$x!+fOQ?Qw3cGUwwglINZ|YrIa<%2?~AR4$WtF|jVX&Y4_t at 32g|23a3
+t-*X8(d!QwdAjH1HHPDsizUdd$uTs_eTfIhYUON31$<`&L0%P|GEU}OQVGo9E03`!?^x8J_u3a at ubNC
+LF&0%$d%eO3$DrG{C at aF6jB}-cBm+E}Eq!=#|GaHw~5L8 at TlrpxYlJL;f6>)wQ^R-;n#~V8vjUSkXYy
+s1^%kXL70PV;i=-pGt&rfm8eth$a4G*6kvSIHTF(KecnryutLHA4%1QUhBPJ>m?+oH=8&R=l?Zu>GSq
+O#28No&gyTr2S83VhsJf!xY)@^1LR6q9O$QLw6%?yB6;v(t)!>}(Rw=7eD{%=wp;f=6Y>@Qo#*6Vi#I
+KoYeO^NgzvXIm`{kpgYuEK?encSt2&mERQap%m}zffVn>zpvs2*AuxoG+$1LCc$=`zkdHltuFUpOR%q
+)pq@&sQ)l?aDn<`@%Je1<a(%~zM3LNX9g)@Q#0u*1X$*VjXmQ7N8VT$Zf%^+q5yqD~aWOs`J|EmsX1Z
+frN=;X+liMm!uA(xo6`DRN;89E at S_-j=`tCL42NIs`3r1<QpRBHq_6g)QTI}cXMN%M|3m)-_Uq{}rcN
+Dzr*>+MFwdzEEvB)MH)U;OO>&YUSKA^zS$^XJaS9yS1Vl at I=rwY}#`Q$b#-AP0|69tJHluS5kU{2)RS
+;P$A`)O}@N8PiU+)Dq9nziOK%T|+U>fMT{mS at Cd9p@$IduX0dv#DSY?`lm|d)wJkQO&`E`0G)dho=nq
+2mD@~;MtfDh+m2~B+!qMkPa9Ol0Xhd9l9UFgG3VZh={24CF^|{1Nnje;-DbWSL)cG9nlwi?DfxUn0E^
+S^gnzG%Buf|bNg^89=4scK}&2hHM}g49<s-efwR9JegFFHAK(8;Lw!1Mg7|P?p8XS_Kq%X-{$O}`^mO
+#>__<8s*yG3-6#d3mS4+A>A})5M3fryd at pDv=*L=ND2c?2B4vR$qmx6}b>Idjk7dm-_e+=P|qhtJ|4}
+T2dyTNn#ZZL%J`X2>T4&>;m(NV$ld-awBu@%vyzsMN~jCY1dF^TuCz-HuF8_?e+T6IC`8lURI3^RIa9
+JB${H%1OV#p<3^M}W1-FT$uDbuj(mt0+~#`9Wktiz5OgjPeWHdQir2#M+{i4F3?wws<C6;RTEEvq&DW
+qvSlF0JG#KhEu<9yyuKKcTRM+V-}PEh$<scM(6D?dK+>3+3xUYcdObmvMs9{^QUi6azd-nSDs)lz~QX
+H^x~vO8ah<m3^{}!Q)Qu&^?Nw|H~78~SIk!kqfRqTqYEY;cx#p~gY`Z9;cC=aR3nduxJ>@mLxS9bTVY
+2e=d%of)%Sm1N90Q_{ct`f#WM$@+bV$EaJ||N>xt-fRx*2Py*lGTOLA%&VbnS0@)ha>v?QJ=H0Poj`Z
+SRW{klzI)*C^T>KT9jgAGoqr!)?p&hgy at AWk@?F9ofx%<$tsY;sQCn}r3^z7M+|I%^W+V;(utBTht!<
+LydRQd-hqdfrmtQjF+LAbR07*KWO(cNckpeiE~IxhikXlt{G(3Te<2bM02ozM70T6nV)GMy-yTwZHpX
+K=b2^)Vv+Mcar1n77wMg3faQ6Wu!w0(2c8j;U7^fqZOYGD}-<5>w8x;-SGguJv2=mUHGzL=N=ioX+t%
+o(e;4XnlnBP=&$}vc*UV}K|^NXr7vMqPX*nHP^<Zhw5$B`lrUq&PLnCXTi-_g9lb9V5w7~k559kE^pM
+v35B(l4jvwo%f$myhuq+isg%=H5k7n$eVZ*;6N;W;)NQb7E5ds#1C)`E9dP<iE+8qOTo9Ek3l7B`yKG
+9XK=kuP+A}L}uUUq2QNr(B<D(}!$l!BQh7wBN?2S2#t)pwoa%j;&$?#BGRuUIb4^b87YYrwah$v*Q-6
+Wl&2iLls$UfPp*XTU6ne5PyMNy=Yfz*BMg0up%RdC;T~bL@;A2IcUw1d=c=hsLNpoFL>Z1KyRh2+lXY
+f-Z%Qe)}T6z~Gpy$4PNqX96mbq+xH+H_5+DZ>8a*WKY-~3jF92pR#?t#8)03qu8!<>`zKCAk#8hm|*R
+=wc&ZDvkYerQHgINnmsD#TW$oYy0vTFQ+kAb$>V=;n~ZZ=0ymojqkDJ8p7HA)vVR}?AMudC)o+EzO5s
+4aiHif#ZimsUzkINqS$M~xbNB><vB?m;BNIR`7Gd#@!-s0d0$i34y~$tdEPDXwvhsP9_dMwuw$A&Lq*
+S^`#+|#KYRrJm$Vu96{z!_6QQpYSF`_Gx_PrYL6o{>W6Vb!WXd5`1wywQ(if=BpC#`S((CV^D2Q(|_D
+Z3wgvojITb%ZXI_#fQWKvR`v(Nay!oHOrjkR$0sm{?IsVMB*hc(z8c%y4T_%xd3Z0cNPJN#_pU?J7eI
+jYObcIB)E16N9T at wPN5Y3{>Yz`mZ`fIe+8$MuRh=7ssDsNzmWq$T%|n!wcVNz1e_{9z0GJ3lXtFt}Xt
+H+HF>uDxz6 at A^y5Q_!z8-LUkvI3;eeE$wA{S#L#Pl^ctalau5%sz1h#NPD+px9=PVF3^U}Xc{1V4>W^
+<;4f=;q*<tT#<uvE)sx5>UA~ICq!^sJVrqV>%v at lDw<ve7_Ew2}%wxVyfC at NOTDsmMM30j0i85Q9*_u
+?Yj>j9YWr~wpFB3f9NQJSpQ3p_kh at mswSjH{mdY~c-0Fh%3>bsT+yE{(@63%#xa%{MrTzDbdns+3Kk1
+01nLd10>eAM6{RwC^S4Z+t_yYi`<kkWRdlj)6|6V(=;5fxaLqe>)rw2gBjh=f_VwZhR$!g^yfNf>uTj
+YTCdhx~k1i at E&DV>8%3+=X2wg-astCpSSjP!`Jh9GEFG*DZ|0|9yD&C)b31{b^?U*YSgA6p}-6Cp0 at O
+|E_7jh(x3+O&jgHkCD}$j5|Bjv8Agvl1^;~Iujbi#)KS$tvN at kznWl?~%7vdt88-E|CO`qSgU^Wh;&=
+%g!=-$(#(Y?L5*w2cUx*gh^z7^F1|_~z5HIf(@>L(cA1f(IL%xoyDq#;PC}o>)uj4Qft%DZ9UyB+ILn
+VJn<s*%f01un^_Xf0B<zKzvp=`SvREq|_;=$fYl1BM$@b<qxOAq0zT^;e6l8p`egiiT|b9lo3Tk|X)H
++{#--#N1Lcj_H{y1S at 6GcrUGxD-9rZFxiW-#x9QUQ94++fr1RMJ6up1SKcBqptS;iV}_$xp12C;o#Yz
+d5UqRYN=Kl=+>_;9pvdVa=153MqNlWBx5wEFs!R(^VQ{b$PBo{!^8d^bwko>pc-FQ7NDl3rSN?C?5<J
+(YD7$n!PuyrOB_zq^ObvpMsI;sxMOW{okDJ<<D(hv_9`0lT`hUZ%SKAkOR!fVaGBHI0Gc%dmvlp2q^y
+Lkd-DNPMa(K9=AbU9oP};0`JKSsiX=I3NQMvWn+c++ur;Ovo!p#K^ddY|;*i=T=7Ha<@+$o0RPbJC42
+=|B69u=G0uAGA#rK^m^~6)C4a4<8rS;rT7!{J2T?<Kn8`(9Jn=z%gc|)i6!KOOgJ&TLbn>)2H8wiO)5
+d`Z!bw<joXwFqaP_(LNx$^}fYn#}-!62PgM-`|#nYPu#0h3V`8oYF{C*$^HnC0CC6NFf{g57xc-gDvi
+_z at 64on5CsdND#=L}d%{O8AixK9As#D5FntA&@M}JfcH9v3;D<qvXAi5WL4LY93XQ;$0B>jx)kuJ#&P
+un$5<t;t`fcgZbh<WBIq3J)UKc`Dw9}iK$Vr<=&n!aBz6s5e*F^cHID&BWdu%0>YV-w3`i7?eiIGBmQ
+^Kmf25dNc&_X28fuYd`b;1wDoRIPybfwq^&AgGh=WY_u$O|>x+l7fS(80{@zyk!2$5^$B_Y)Z+NG2d9
+}mnZxx&_QKd*uA`sbiB&Tpf>V-UAwNL_{7|@Qw!B*3`IAI?I<Uyg*hC>i`&k$K!cE<xF3rC4fuo2aJr
+)<B6|A#Q;x~P|CUP0eN6IZxmc3CTV+XDU5>-7m6KGS*P_}@MDiX;sdYhA=52^pVmHn5~+K02TH(p>Wq
+vMl|kjfV25aIfT?S)B7dPC}P$2*;@&0OI~f8|=fklKe;asKJJ5tohN*_^l`hB at g)ELn*fmy{!NSULvd
+EsfLyJLD}u>r(~HdqI_}d&OPIxqVksmC$GPzBq&;t!6LIcjMcpX?tO4TDPa1x%jQu+*ECD_2na0G6|8
+QA88VUH at O1*cCyk2 at pgQg*F`m6UXTVo)$Dt-*OZnkCzDi3kVa>~!pO7BN*EM9oy at NdR)Ke!q!(<AC$_
+Vb_laAOW{fN1d`#i^A39Y6GgPx>WO0S}`IbqK5>~I<d(gXA-4~{z=R>evZAkq#ot0Cr*?OQiCIOQ%c?
+FED7K_qu|<eR;zdc~a!Q(@Mdy?1*k_cG8PqNt#s&LqeS3AszTfAeU)D8&d;0IsmZ-SoNFnWB$U>VvKt
+XNnGmMn{S|tRfE;^*7Cq6~pB}-@&3u$IqOXQ%B?SASDGn<r;vrhPVs4L*^X^nxbJGH%OrfS(go6&0Mc
+wmv1SD85c8Mh04H^D&6D+(pVfeM!&qUmpq^holts6q}DQB8wKO}`PGpf<K9h0Jjjav*p2Lg*|=H8CsF
+_ha$M*Vd;op??s2n5K`^`pqYjim4D1xKDvbKS;Tr at Tj9c6rN~=idHa0~Fn-7~8?z_Xtc^5x~UN!+~6T
+%fWz70Ih_|2*K)t6o(=V$opOz>d|d@@PHpciq8TLgYX%&i|DvWD`NJ*wGR)P4dFK3aYIWzXcrRjJU?{
+5J8;26C)DSV!%(-yD&%lvd24<4&vjY0fNvlsC_ at yG|05(~#yO42qlb6P!PxnSxWLv9<=T*xhxyG#JF1
+erz*8svbd=5_QMnRPO!lORxLhYuRd#UuZB!{@(Y$Ki<KH8|O$hICgR?r`^?lzc)I<?ZCmHUxC&WzKXt
+yRG3x(Y{9t4j`Uv1V at BsXyMO4&+&2wI&tdl=I2cLC);qHGstup<4bj1|s^g^qxRr*(BT-4A|9goQm~*
+TIVAbyH2D{-Bg9b%RzN^YOBB?6&40Zw|UTRofO2iTR^fujwLW5_0=P|sR_a|x!4MxWsxqp7#8;DX*Yf
+C*H^iWG{8y)r!k^RBphGIv3tpHVJ?0^S<IgpBq+pJy|lc#28E22&y3B$46Qopduj&%g0&hUA-+?Z_+n
+8c_WOk#8gFp1F at 0FxN;FG8pgBM%kgPp|*y``7QsuipLT?RzMBtiIiV6Y=s7ufBWzCYnrPJrS|Z5ITcs
+P-04W at C=i6I=wW&8Ae|aoZ&Y(h5t5i3im-huz&zY(zN`$0Rix^(nwvI-{R_X)un$$t;y30cn3*Uvr_7
+)+P$y*kA9ge|MJe2eNF46WkttcrdGG<Rigr*Gy{(robe%8x&^+D)IQ|&jGGwaWs;6%BZux at Qe3rqVHB
+&n_{*DmG!q=F9CCf_Uei!&)JRPFO=jNPbKCd7<e3z>2JaW;ExrJ`p2Ixo$~`<r_dyvi<C{p_iL|a;w0
+e}}UU4HVh@*l#32~*^4tfBI-YQ$+(g8EbwkskX!R=lU$DmFebyx;wea=m^TE*!MHnTT$7~EE at pPjM62
+zS!`n>X-jQd!kCD%EHqXmv{fO;bpok{^zhE<X2kk(PIn&_bmUH6#{~V6O|gxa^*s?5bO>0vU!oK?WsI
+$C(KF06BhuMMomosHy(watQS&GimuVPuQShN}L&0YwyCtj1WC`FTw}kfG`*W7wdi#<-4SSZElp$q~u^
+Q>GmN^z<C1hVe90i#gCQ{d{tZ at o`BC7$EiIm^pwRcnbJ``U5}4gzNYgglxobU;RNcj;!^@@Gt>3)3s9
+R`d;@Yp=y>%Dj$PtE90A=nB<;s5gsJ5-Hu)HijOs=!LF;t~Uxic^5mZq^!8*<;%d(+C=0jK$qpcW8x3
+DG0#2jdn#P~9i$?O6$BokL&`Gb|KTXAqQ$*$sqNj%TQ6OdLPC9y@;h#0-TcA!sbEm{qSLB6Is&(?Ilg
+fwU^PX*KkKcJ;U>uHAD6kC~lzU4w$oEnV>N<arsZ8bA^-DiVpjq3+APPMv!%KSHc<=tZ_5Y|AUP2UTn
+1?xNC-)L=u*@Yx<7)Z|oSQ_$Eqf{Ep2gUyP6L1iJUMElv{$4Z3yj9T>V||wwS#6i!OXK{7`h4;qy3Z#
+k{}E6OVZVaw!9HuNk$$2&7&y-{3B3rNmWl2w(4|N(7aRwBrLzR;I$z)McBl)3fWr`a<M^Gt-PTpHTQT
+v<B-j2I2PPt!(EGb?Zls#0FnRIynxe!E5$Wr8VFzDIq$P0C5NfF-l1Om!JH+^X`N&Cc^?(7qZr2O|hi
+35|R}?+IQ2db6uW;2inwJN&4`0YOJly1dz==(3g4UC&HKAW?6Z$nEXnU}@U3WQ57f;+KeO70PgW<7>A
+mixpO6(}?_LYmoT_f3(Ku|*vc<}<v at u=$8f64HLIp3rs)d?}g>9NPQB<gtFm%{9_{ukg=#5j0GZP0!>
+yg0!vg-iI~YY^kao{5*M08p$Ap6C`H060#taZltpehBX&#{qH46Z($M&?A%_?kTIV<US+rn+{f+m~X+
+M(@JB(RiSCa?p0vFff5<i%r1Q;*lq at Qu(Lg?-OwK07u+o at itkMU@VCw=c+WSK{Cl~NmBDR7DszLKs0O
+-;E=D=(<}B_!DgRj*YjfTf?xf{KV^S|vM9?o$($LyqF+MSYavrZ1(Ny+?9{DWzV<kyyp}Q5Zn#DN&P<
+yw(E7M<zAi0IRyF4LpMm_;~Q?eOwC-pLgKnn3ilBO~Vrj+|9^$s~VJH>i>DIPjrPk8gCkw7_xsfERMP
+j)#DkQ5Sk*H(FkmqhsFlp>f(kRJ14LpMy at z`juyxF<_<jiqfVZ*_ArfkUYZAqz%kJj>RTMNA=_v3z~g
+cq`m1!_NrxBEF%1T~%6FaX%{c5p^I26N;}0$8BFn at smiE41)iKntW2Re+zJqtXIWQekz4K7g?%{;i1A
+!$FCNRzg-V-!yj%9iN1=t_r_I!Ip;hs at xX8%Rlq=347Br2v#PSQ-gkDyICv6Or!aMb1)Vdkey}@UUZ+
+=zzbf0V=+Tp4_nS!4O>M;oP5GGk)+(5|9O at D=dul9jp|e0~KVTMoXth3uY|n>qcTYkM;(?q;C(s|mB5
+&C%H5L2So#8yNC-MtD^kR{;zP}4ZX6Wr)fs^TMbGSEaoW6W1luX+jHW>&33dJF^4IW}QQqU&J#f3zK1
+R<!0Ht0?EwDNr|e&~q19=a^+J*_G?hGGPaE0lKaGw#jGw2ci;Ys)&T5%0&-i?in0B1lbuO|>5N4~KLP
+<m|Leo#O{Z!UH1^+MAObP{X5-<cDe4NWN3-ciG_(LB2lj1jtcuJoik_WLKkGCoS76F)pud at qh*l%<G#
+Kzv#f9pH1asX-&M9nxpJHX>ClrRCD0!kxqu-cPX%%zLDv38UTW<c~X2))r7ha)3^~62gG0KD(jhwFXu
+&Nj<kDr)<BsR#Hp*lHL6=D|F(J2#g$bUw$y-lP&&;cR$i`k^&}7>E<FVv9IiB^ja$H#9zK0OqBo!F;Y
+x9<sj`yAG at fyI(jMPQ#VDmNYqfk~xOk;ROu&_{M!yEAQk5+vatZGPRXX}?P^HEI25<f9W#%*7`hCdDh
+f3V7VZT2(nN5yQPFhu$09E0m;nSo3v(e~i0E_<c>GR?7)6w((;q&98=T8Ttr-#SG(bG}iJ<n}&Q&BY`
+?kR@(tGuQdE`FC=ij{X1H?2v(fuG(3{1hWsW}V;APk%!{ZG?V0x&!*@R|ZfS83cn{V+mC$9*=zXh2bj
+m&j1$tl|A at uLZKRn|DM>~s~5F6s9zP9qj_Jf;fv1OAUReFp-8~&-bV;Xz!SpTj1n|NfJqloREiZMmZ?
+O&85$OTBX4rcfh>=oJ=e4BFQBT%i^=kN^}y9WaWui{gAT6K<mWX8TBimwn{hKm<En~=j|R^VKf`byJ{
+|CfWk+`$R1{*<LH!kiBX9e_^XCFb{>AQ+miM?z`rGT+>a)%3*xGMW$uz$X%;PP^&;S`)ieXR<t9NxYU
+Sbx0NC}L94FS6Ff=&B=KKCLyyu%))uH at NuEkdn|#wd=hU7qTQrSeVjLc-yYviJDqf(oF>)I0DG;U%am
+3Up1OO1>o`GiD(TqdR!8lEuqOJj3`aFA8mKew<6zMe(-Dh`?5Vx=0AK3JBo#h{R*7n?+=n#eAy`!i{p
+VyNV<ia=hBI7(Ww2N6?}|+y0XS5Nk8}KOYJCW5qsv8jpd6+hEZg9d+!%@X-d%y8jg(!O9^llAAJ{XX_
+0SO;XiSnH}j7Z8%Tfo3;1d+LY}pB5(GvhJspwVa3Fc2)C&lxvLwv!C<IIZg{7eW6?YAcib6d1SKt4av
+5a$(y-*R-8;gP%Ttkuh9%$7!wOXL4W0SgQOO&MT1nwo4oY4(TGmkAT^8HOp<;{z_~qM4&6v)=PDpZNo
+PL8O|F?uBH%9n3NOGIZZ;<5GkmTxMY-3>jH%M{|ajcf1UkZ}EV*G1kD4}2k%`i(ZZ5nq7R)jYD!Db`@
+%g?p})<^dQSeI#ewBvVTWwog4BlG+iw}l4-gmc;esvbIg#>$n*>bk<o$$T at YdIkM?6|lN4KZnoB#y|Q
+Mfa}nA2TbWfAlD^(n>JA{<ho?BI`={z`Fw`l3#~|uCk8pQ7IQU03%T?T#AtZX?0Wn_v5q}3bM-R?B&z
+<Xuj*amZvxXkqU)>{7P>=4BcpGNh3>MWk<p<a4+^NQtVpAr7FqZ+=CsHrWKK(vzv`TpU~yYu0$WsvcL
+~rOWBpwgr^PxK$7I(rhkT&ZFfKz^@ce|pLA(Yk7hUGtL=L%zn+f+GfKFOwS*jtlJwixjL;msI6Ld@}4
++A1zK|Bm1ejU}Kh~v+n9Y%a}G7=iH?Xr6s2d%1+V%6GI8@&3gXyRWXI{0>A-}gc6Zay+zB<{a4*te3+
+Z(!dwal>FRutJcviDdt#Xx~<jYj6VnI?%qG^kbU|@{6H;<KBaQ4xFg{k^DOFX3tCfFHADTV}fl at G+D&
+F7Uf*Z)!p)B<sD4Crp{!WGA0HaQ+YTRJZ=7oyz2cQvo&5ufT?X~1_r$Y9eLkuoYf}NEbZ+)b$OKzXG5
+3CCZ8b6j;8s<8--hX@`sDx+77mF>Ova7WsZGanPWk%>RAJ|1roen(S~y$Z42kFcS`g4xR0Cb{w7p*qs
+qLGRgN1&vg at jR8{;CWo4;@PnIbT-t3P<|B9-e>17dIFB8EG=!;^#IVSR}qlsT$q#t2Oux^V7JsR1%n)
+35oISbkPrK#x*Aw0W)U3Bo=ktJ+Qq#_aEpxQr|79n<emL+#-Y)njwS3mkeiNBW1#Cc`yfZmRjJs^;rW
++`j2o^z+T}1_8Z!O$DC21L|d!`V)4lC+v=O&gJ6HYqPNP{{c`-0|XQR000O82?eW2GyXx642}Q*kZA$
+{7ytkOaA|NaUv_0~WN&gWaCvZHa&u{JXD)Dg?7e$`8^@6-`aeI#1X=}vID|!e_uO-6L3e42iunumSdm
+_DmST8^z>u5}n1N>oq!^j`?6+S1oE|(VI&t<GiA7+hySlr&y1J^my6Q<ZEynXn8qMxzNm*t2<zRNV at n
+qvkv{%gT%Ixy0j(Veh^!4-S-)w#TeEZ*`=zTJuM8|{Z&FByFtW2r!`?Q>9Rh1QalvUAHTBhfB(Pf$Bb
+vllti!x24;vyPdCFNxrM|BY;`CT+i%L*zK=XH|h&@#YDq7gKUW$P;dR23KXZBnLCd>kcJRgAI(AV%Y2
+G at qt<oz&RkMK(#Rs8?S>U!u;D)amr8p>di_qAUk^X{267w^@Bv%<HI3tGdia2qlI>qse^C{ZIua*))?
+ at 5CGw$La_4+#({l}5rNqS{!M9cv-$ZXtFB^zGR_eE`Mie56+RxNIo5;Gd{vZDl};uIBZJ=4h)oZv473
+A4W{BEakVS3ZUKLY!Jb<c;d6`4A>6ivx0P3jCzoes@;b4V}VlpXiVTjOdKF)Al)ecSIF}zLAi<^`N#q
+*vQHT0N!g0nF*lPs^Qs|1E{j(BJ6LGys?#2QzLy{KxSgbXHPR+QAJKi&a%;`{yR=-un%A9p|OM+ZmI`
+w#E_^WfF~tEjVk1iw3R^y9(t_wRl<j-bSc-M7boir&4BcHjOf`s2adSBUZb|9byn|L7=s_aQoX^ZxK)
+|5Y3vyxlwe;nl(0KSbX_&A0E4qr-zY2gd;R_#HJVzz+7I-fIBzX8*(9_wZo%yMx1n<3GjG>x1LB2=z6
+9-HqPwemFkZ`{8i+L-hWK5AWX{?L!w{0pPa>Z(o0acJ|-wzdeQ#LCf$o+W$}Z86ADUdw59A?fw8`_&|
+N!d-wiN9}fQT{c-gDyTe!e at bJ5R=-uvjhx^>v+dtt-Jls8a6GyLh-|YTjpX$8>I3K8>^zg^;_vsO|xC
+{T^J3e^#7ICxp?(Ojh_=&hVe)r*6SN`$fXg`j2KO7t(VqSlE2Mr)%q0T!312y07GaN)Z_8eg7*?~ehm
+LHDxO at ChP?;ZlQBdl&uB~I?f*%>U_v$JRzecb4DIvbkbC<e3@?M+~b1I-}8O;cEa<BC`CMV2!erk~Og
+tfoj+1r9Tv!uO30q~8X}3}FE^)@hl;A_n44X0x(LMpp=TRHpC{N*l=dtIDP`sH;H78#mQ}XtgdAUNS(
+(ll0S9cgbj^0mew_SPB>e5_g$i&L>F;aA&||aLoXe=tp2HrkineSIjrYMc#$Amh#G-q)7=~hTpeQbq5
+^o6D-=2abS-ao0}%}=n5ZNjQ|?47cL?;ppQ4%7*Pux?YvA%VzDE^cYT%A*cIwKA_m~p<s2Eul|}?Gvl
+4j8<PI13`#YGOe6X?ceahS?iJ%EAiS at DZH0pd0><yUEk3~5d|E?4DpvTDdFJUtvL<<Xm;Z38x&z%=lG
+MO{4eHlkDlJOYFl%_9#*SYWS>}+gA at VO{~^_h8wsRD+AO~5XbOlDU}#pRwTs!_d%#uD8$6`>zMj##-T
+m7{*N8Fk_g{M&r|yAH#?!f`=GZ-De}R%SVDm{<I!v-J{q7Bw^=q#VI^kYDx$M87X|E2x7FXEw*}#pcv
+%<W6JJ*30OmOOLv7)Q#~UdV^nn*F9ypJWD`|NF92&6tpYEz~ucj&tOf#Y8WTy6WDrqhk%L1a<EBVYyp
+8y5?De-dAC7S6XnS?tz?%nRNvji4*cAu=iNVdqXPB}tX2(VsECCz?z{5|jI>N^*tXyS&FkK08%h29Xa
+uYG92V_pgp`010IiG)MF7}iYiJ+HlD2OkX<C9wzESX|hg&#x6YABn4eM_BoZ<>Pj6y_JOjCs+m=-|CR
+MrP>v-RC98^Pvw7u}?vu=ed$nn$-~M)X{#pK2ap37aY`MEG4Mv`}%^q~d_+YL>vxiPDN}xN7=uGuSqh
+NmWR16oCnS#qv9f;)uy0ituS#j|P2g?x%Tyh^YvD6?I^Go{n)(9u-p*mn!1Cz>066i-0s@$DOYS+k@?
+nd3u~pQ+cx;y#W#dvG0FH&;M=b`M*X#9PeStWDb;7av>52MHY-+%<Adr^55r(gF#iy%TWsJ`!XHmY5f
+wKmIcdw+ at M*%O_S>~y-;fzzrsA<;xknoMG{^0u2Nq?aL8$>x~eWzrf0;(5*)OKGMS`AEc(%m)~ot;G0
+#VJQB3q}n61)z0P{IY&y&&h#>SJsVOIuKJx<GVfHaWyq7F<i(SlE4aU{r%p2DhmT7Aqr(bK4B%|z_uz
+aRB+s({=G&nFw*-JI6<UIJ?p7Q`RZyIWvV_M=1WaWbJtAZu4|i~1m^U&Zts*dcy>1q%lM?!&G{f2Xth
+t{ZQ3UlYqo$KT!I<JUzA_$BCnD2|K0Vltl+s6Uj&e1>1F_74H}ey+bB)k#_N59!ZF_YH1Vud}kE7jFy
+t&0p)?oSJ->r|-%)MVa!C$=$nr#NTJU?b7!Wp}ogt_8p9R|I;X?xA=~p?!%e|THnuM6>)Wb+$^YfP5t
+O~QYRCuq%`z_*_AGKL>qGxVkvFoga4q_$h-`He*pOcruQcO12bNyl at IA<`Uy)NU1zgn;^|ydkjg(aT9
+4*4>N<WuF0RvDf7vT?pdvszJlW{}i2O$OhOzo9An~gP_}^(+DAaFsY17N+Q-aSsp!xQ{&oin5TlwCks
+M6!)QhvUhrMdhX9o2V}bdR|XJt&9>kPjtCDXa}t;|{Y*UQVY){{8Wr!+p>a>N|cmN8NF^EEE1coB1%u
+=Mxvn8~Er5wx=t*R7yIWX$?1wcNg at nxXnjELxedRV#;eF>RzRv7y%pIt9m-I;Qb}JN&KEnWNA&zGML!
+Q0Dt5K0-Gk+DGn6yL=EEa|FVC=qCm>ut at nzFe)7IdZ?a-uA;mTxT5F8AMpY`GPbRO@^ZDiONKvVp)B;
+u-p`e)UqE^jcd8-Dvqja3g+93vsVgcb|1{_imz>K5|9~D1&WM8IJ*yCuPD*g?U#3*$pdqX`%@t6x$Fh
+z%g)#`HMFQ%$Y@=JbcmdS?v&}b)aO$*atV4i2AVw at UK^O;KmC^qaWc>#fDIUoaC|87!@t_e|~9cRFej
+$wZXF3C_Y6<5sii|iBdw1iviLaoG_6a-It4uA$R?fsw5z5(WrJBe_A*ioSS6_)FDzv=cjvWo~y?T{3B
+_Gb6L&JIAG<T}&jQ<eQSrB~-L3`PLHtV?=`!@Vlu0sPAV=I}}ih@^Zz&n7HSq2z;`7RVk+c}Xu|H-im
+}Bp{K-<|2u)l%L3kilDgaZh85gRK#tononcUYVsIltCFliK({GMfw9PN^?ZgKWR;>km*1fvKZ!wRf+{
+dRKvFuX(zfB__Kk0dAmH&Q`ocp46 at bUv1Cg-L5by&+(5teTZDk}IBjF+SlAfgs^N0bPDXE|^>>rqLKv
+K<8kk0M~(E(J!{fvug=!gh`0%a~3(nXR at Di%o-1!_O1f6KBc5yK!!W~xb{QU#>8fm6vBB096OAjKn*e
+1DEo0$m|MY7+|qHb7FV`5jWp&(UBoh+YnCyy)*hbs5YjN>C%}M=Xt4cqF`2H?ZXm{k$&k+(J(n51?v*
+z;Ip3XwB3_sAG|`0pdC!`zk at sRw9+DB1k?SOdK5P&gY=IT$64IQaQ_C*waC%qY9qsZAu$)U{d at s>;oA
+JW}$5#IMALmYh190WO|v_f_#Ph9*n2^X*xlJD9E`&g|OIdpyoZmCJCX}{r!`V<IQhd3l3lrSq!f?Nv7
+xHB&v6!?#GYwE at -i^vGrih^y-u6rzc<UY;B+R`|$U)A3~M|7<g%3p{g$08I<U+!$68jiq>E(AZn at byD
+wrcr}RpM^RqK)@9d0i1+bnkPys}XMF;p0vLWF at nh9~Yi3K4CA}T`jC9oglKAk}|n`Cv*qWT7PH+nWmW
+*`cUdob^)dG at T1#nhpG-={vk;{+%V6d9;HPo0MwXP0Tt8}{+t3^^Ytr)jTuN5du~4RONWb{|{YAYKUb
+d6rhA1PYEp(v?BMvfrnN(eLBvMI5~ZO%sg at q*;<VSM)WUJghe$Et2OxnWABuEOxM*aSDZ)$IKkH)#j|
+ao1TLz1wHNl{^g6#$8MM2)rIv22)w&lZFaxyGB>7~gC?TOIs(>(!bOzKib_vQ-^?_&5d$==^Ve+Fvm1
+ at AW~`~i!9c4tCh0a;qw)+}mI9X95ZlMuo>DD)%y9+e3|?+*h{*^)LqXgisYY3L22y)kqO<|)(0PGs7r
+od(0Zlpws`c~jufO@%fBRqm&;R~Eoehyl`3-&Bj5 at pD?Y-K6ot%$gdOI6hZpR|hjZG at MaduvzT+FpW7
+U=z-ulpNDw!_9cgTEA6-Ww4%M~Fq~qb`P<!U#?O)=Oj3=qvOzb+exSW=Iaj6`_7qi at 7Q`jjK;7&m|}U
+pbeXHmD;1|$O-uo?oY6O(Gai`-KLiDGKro|iu#$DbMV}yDx&K&ozYe#P;~Kvx0 at +8kK}xj068NkDnLb
+q!5fL<EX%X{?5szou{fGReGp}e(eOD4EY;=kElAg}ct91TuaQM?SYrT10pIYiz1c!VG{s>BkGo(Md^@
+C;n(t;T&{=!8k(UBM;NMmlP6PbHR%@XIj>;0Q&V<DoY$U{RU16&N!e_2)3~|x<9U14)uIBc2D`IsCzS
+uGjK15nRPfKN>Gt`5oHxCGCoF0S`nK0IYL2U-QfgG8SEEmCW#i^d4W(ZTo1MEa$S&HBGG_l0i99bL3#
+K45**z3UX&_>9k?DSiJ!|Qb*tKKf^>vDKLIhIKVi{IVzdemUwCa%g5mfgHG-FaF?J(L_kLW!P^L89tm
+Z+4!J at nCiWfBR@-`{=ZcpPpV0vEOq>z5Eb*>03QQQ~H7~u|$h6O{Hm4ULWMMd2LV?)5EkpQrcSQ<?mi
+}yhXE*#^aHk1{ew>`Xjq3KF<)auwpjGBV<PxA)-Yc)Uy2>aH5e^vvh>Vv%E!yH3Dq;Oq553EBB=!Z0M
+kGE82GWoHcTnC at lDDFY2jhCp%UHr*UIS{g2&BtRbIRKtST{`_re&4G^KTo;~s74CkF at wn>P>uaM)=T2
+aCYY`##hM}iqub+<^fJvMhtvrk&g<*F=hb3Sum`Pe at 9<6}g!4Dn|At?K9M?DvaV at 0YUOFJZZgR#^(O@
+a!6O7a|+aEw%{HB=3ZApXDetfZBjtB2NVNF3t5g&>f?g=i_f-X%@4}5oxmNG##TC%jB-L$DVz;7Z`@=
+^IuTzo at Cc)wD<Y&bD-$`eGHmdt;PVt93F?`DHaVU$yK+pKJnrs==F=;d^|YQKVRP8gLJ-SPW1W!Xq=&
+KOAg5N0Lfy41GmQtn!zXm^s2T%-J9oll7d|Bny at X$-6=Ln7J>5=x<`mqm~!MV5x;DU1dw`K_Ch#hp57
+nm+Dmx|%}hFA at eaPwE&+dO- at q5PXw;_zA)dky>1 at U24ONKKL#H!xXPO9zEmr|1?U*-BvZ7dY32etkD?
+l_yPw=wjzBD!qgEFYGrM3a`WXi~g$J<xFD$2z*$ZDxK8ml`;DZ3HeB$K)EbMkSdJhUuvocA*|YI}sKT
+`O@=r4izyVJ;{juL>H~SE{Q6x39J0Fw)<IWpV~uMabr_$kfPI!D(XInRq(Y%v!XnwtZ+`;S^2WfU!f+
+1^Uip(B26JiD=NojOw1M*C;6Sdq^sUfvLDj>!DLfBWrLw*dz8n10FI^ep5V;&s^7mQ8Ay45ewOLRw7@
+3WnQWlgG*MaOx8Ia9?LXTB)h;dTJcdi at hYt$DYl|vCwf|;kQi=M>-+X0Af8dYySS**+ExCWtZB9#&%X
+9YR?lZ>=iqm)A_a={RMpLzqfpgPveTwS8kS7(Wlz;JtwG;q1dX=rKI#UapF$aDgA!c07=Rf+qP06Ofg
+$j!6h{y8#1to_XbMj<w6{&uggpV-!9#hRh>r+bTy)2_*!P2sb-lgMlQi!M=>C1*6atE+B6w!=2 at 6Ug9
+D?f0$@b~J_L{INYT?MLH+Ugm-h!<3(zN6fH!M$>f)SgUuCW7R13(E&z9tpY?C`jpr{po3Oz68!t**&k
+Ab~F9n5?YXl at j)(!+gNZ at vIE2j`h7l1N6p2T7}ZsjV9sL+M at sKv9zp<+}OhB(0ui9PGqj|5ipxrsCu1
+Dsx(xBb!FNqLa%|M*?iJg02aV}iZq6nxX<^&A~Z%c?9rD{5gIv~c<`@N02wzUFKlGOk1C+e>Q?0tUE;
+s}CK&09fhONhc3h}vWeCD`4cn`<fPYl|zSoFvdI$nIk*}vAtin5V89+NR{OMUIM=$_3zf@!tB{=~J8X
+xZXD8v#pF|GYEL~w!-PNBu;3nl`~#30NEFeK#2<_I#YL{F4^*==&C{O;JW&&mNxNPIR-=3k}YjP4eYJ
+N^j`vlp6HR)Y~o{n$FI7CP#Szq`<A9#P4-+l@~^QE!egOgjc_pbCDhDc9dmL%?~Fg at J_Iw)e%B))fZz
+^tK5W0&{?VZ at qr}ydMM?ChoNwayE0dP at kW+Hfew^pn}DHYaE}ocG~nOJbXSm>-{mk<1=(*7yRu2w}1M
+&>P)D;G$@hD_LH at 5)=>ro4r?*4 at Qz2D?bYQwN{$Po3*qad7N0*f2i0f+c@?y9vbBBcBQQKS0>Pn(ljs
+I26GynQI%2>_r>?=)N7;28-K at 3?TgbeLTgbH^+?`c#u1}TaQ9r|z_uh3(`$HeiaVIw(i=UrEr5hVV{=
+Re_TNB&b1Da6k!A+=v1rz;{QM4`R8(6o&0k&Wo-Y()>@Y)t$$R$^-+qP*GFt+MC$rd1UdWXmJLp-GK`
+CGKhjiANAT5^hzxQU*SXzn6=6gIhFH_h<=S7<M#h4><R-m(`&n?vq-vm#C;wo0%!xBFfPVOAsdjvKQn
+&GjMD??k at g)BI=IK+5*0)qdZ1+ at MMWac}7Pjb3D*K)DkTWOPBtH_M6ME&n%K`|6CzCCes4pm+g1sw~l
+YuxijTGuu!tY~(NGvcTOB<5~&=PwA0yCPs~cF65vsGD`FL6y?UWXLVu$|95-K3$Jxyx$S|%*wf!%Mt|
+`pLE$X6vC+Wa09Q at b3-oX`bUY?5egQ- at Ii0&~We2f2iP-onYySvXbFQ1Hw1L2)uuMVvXs4B_aIN#Am}
+oPKs??(m82<~_1PQ3f|C*Ks`R6Mbw)R at 5WuPzkcwuLhZ_<i&Pj=9a%YuM~uG71!X%OplIv?a at 1+{O!9
+m6J$2x|;H7r?8eA`d1P-Eq`WO>~w?I*QV{Lkkautr5EQt?dTivSoI?!EqgDcxsYK4!mY5$IzDPvb(mO
+p7088GduQR(~bmse*yRnLALSo#Sgv(vQh>0bFoVgEmW8p!~V!C`o7UbHTFGB9BUJZHCEc9!Xs0SwoTg
+urmnSNX`|oNUYxG9%-bpmAU)Nb4J6v_kz5E@?51#ji>_gzwXWEs48>)}sXiD at c%>vYI}c}-+?eI-_mk
+PhoNm3J-{Ik+eR2>*<Q&Uqc9WvGX0IzgRArr?Zor`<B;TPl*Y)VqUuY2_>uW4p2lY6}Sus<L{aI38R`
+BQ9^(}t$S21pTjA}JrL|FtqCQk)9qaquxc-9UlNmch9m)|2k_pYFK^%c((LL_5Ol}_<S`iKXQ9b;#0#
+1_EL9baSUAw?VD`-OCXdYP8`am;SkKrLuQp>{NQ2Mjb0EwRW|87B@!L1Opj*LH7`$OZ$O&X(VWs5dR-
+6nJu{{Wbe;&uFK#02v(Up3w;$2m;j%!vo}(OzGTJn;>j3E^$P=02hM`Xn%7d5r(8Y3}ou`MfoVi5uIl
+zBrwtD!IR@{Ot>i{;kb(zpP+3AwnP1##UxT+nbyK`7r?wmZ>O$wyW13&1bPqu(t*OwD#k`Wz|^*hUWd
+jLUE%=n3_Se=6phXq*L<DMps4$_>f+(lb>AMjZCukmLDdDRvsJ)D`G*!7j&XZoQ30y9Dj!d@>V~S6&+
+A0!KcQmoTP6O5-kD>Eh4LfK3=@*{U^@uME@^n|r8 at 9JRL82&e_|mzM+l1&&JLh&+|w~=b_1#t!2*2p*
+=Q-&V3)Q>d=XjhJ=nf23}f%J-I;p?xAz&lbkDSIL-WgGloZ7i{Z#^eQ`6Wgrky~cMTRIBrT^)o6etmN
+Y_0g?#Nwao2ps?&bRJO2ica8DaVJfT!+_A0cmaetqCGfQ0v<>|oDP^(vyR%khRVCXy8B2P?3ZY+n~uU
+p2(zT6FVS2dV`Ps!EKR3!Aw$tA$`USl?vBUm;)<fqx`1wv>B5TD2Thw&Y#~`nv)G>1ne<cbb*4&x3iT
+)bX|AL()!Ku4<ypG8!8lrE`9mpmbErDElKGNGEMt>;)}Tii*d!?4?%^8}w)G%c at N1Jf1Li;LY|$fCZn
+wYCXWe&MZyZtB?9yG;atNW$AcECAjldCOR$w!#*q0s#P{)7K^8h|fIbA`?SNDf_LXz>=Oh$pbsHaUEm
+ts5*bKU at vQVm}tK~cgs#Vl?Ea7 at qI=Aa<1BgSc$_FNednlWYh@?El{s^huhi|2%uDB0wPZZp^irNnz3
+QcSm5fp#&ebb>aAR;G!vqV6I5#LItC_ at vMN;Cutz8yYUoyVXxk3pdRJbW8MhI~qO$51pUL<k+V}IEWP
+vTd`c*>4jacg?DShGLQU{W(f}FGjfsBH7tLQhL<_kwn?*O(zGbE_4tI|(wRT8NG4+t=)J><C#deB0RS
+feqta0v64c+EJ!4MZk=1+(>WExWY_;WiE3dh*pNJ76xf6{iF*;AQh5kV2p<A<bcbJB;$%t{LWu;3Oog
+Rl&q1zrk_IYbqSL4QWG6PVI71PpUH^S}-UZBNG{Cqos-7B(w^CZb3PhRiTe8y(L%;lZDtN`+9*Xm4C@
+%07tLr{FHN at v4v*X|m|D0Ccl2tLX;jV2nq3f4t30;mB=Y_7!@c;ENyI%nU|oI7UUsHS=<62-tB+$vhM
+)g5tbA)%_dx}cyX_EiRZEtX>KaHs_iKgbk{RYvb4RV0=Oha78V%>M2abtz;VI|0Z8>55M*@G1^c3v<@
+e7r&XwS_8yrK1&D4I&AwejUMF7jjm0a9^zT=g}&uu%*^4*YZfovD)_NPJ9Jb#fC65~h9=ozNP<Notkg
+hfM`c`X*(pp2gMr|)xh1yyv#3dyZr}9HmIx5nkhIX@(tqWX5_zD(R;(NA+ncQ5+A%B><6d}FLMpk6x|
+&3LpKYYxD`!%Vu3<hM$*}#v9tt~7biRDv5b5kq+wq_D3I(>`rZ=SzS$vi(KemN}V^aOsn?uEY$Hk~lE
+-mlVF-}5-;d+MT8Oj!rydHKsF at -e*H6tB2{Ct;jA82wAVMHK`IY&_{@isjg>Dh9OOdGK*7jLeTn{)+J
+eU7f7osYSB(%3xApp>^G35oG_zbONTO#(}0$wePmmNc+(&?*npn{;wO=*0sr{<0Z$0G;NT=?TSnOJ*3
+1a9&HP3fX|nhTKm=Rcf48S(%O<ZLFxxv^CA1)Uv0{HM`~)nD8 at 4c!bIIoq?fwrZ3x at w5e)yO)j~J>t5
+I-9u~J5l)VysTu7;)I%;UYm7#f<X!phCo^%e5_up8E5`p0aP^cDG9CcoFVpRuzz3fDm;}6L`vFw?~<m
+5?Oi#C<UcHH6*1n><K!ux{mKJWg>M@*HIY=uj#>f at rD&#*M95I0&KluNFwSJca*-*n(<-x~usShK&s;
+-QC!{e-N{H`#ceOqgFIy{69bK*9zc7S#i*rwZ@~^;wntG!%#ELf~+vbLm!h=Vc3CeS(o{)Mv4~vhJ_2
+0ssA{>Eyd&d?y#;>_|4O4nY0DslUTRd<tM@!VMEIS)C>Vy;{F==fziU`!+9Y;eKB=*`KPRxh`v`0Kn0
+0 at u+`3V>3fFKesrWNRZ0&epOrlO^ks|)NUPQl<0j5^nSBYa=!LQKy<Hrewo%N%K10kJR!;!d&HlC?jh
+qTkGUo9Yd5WXq-#NS#6<EBcH~mGDm?QA*Iq+?hUcx at CcGOs)3wqmvxPdRr#)q{l#^dzp?+o8rb)gVtz
+|vpQ2sU;Obq_NO{d1a=keCI at 7)`A3}dy-b-!*g8M{<5o==6AMda>w<8eBxuZGXPKz~_snHN=^jg*57Q
+pZHX#1->eT|2HxR1B#=j#J6*2o3(^e^W?QS}4z*xHo6_RUr`sDT at Wi`H&E2Dk!rJHOp;fyqZlC(#F^_
+rbBM2(ha%&?IA|h`j~g^BHCWUo!d0QNwhJ-wx1}fZc&z%ftkanX;-Fc!`aHyM+4gvo1R)F2G#Gkhe3X
+>ht+vnJ*~E)r`1kGmOo*Vy>1kBpAjwe<LEkM-}bK?tYA%sDlJ^h at 7B$LXj6Ja{n*@Yv$8MV6D_bjc{h
+PAZlUzmUY(djlHb|xBsU%^n9b{x9uGA)!sZ&YpT%6qNZ>b1Z*cidFC7smvN-=IPsgV_{FQHVyJXN~I_
+Sq)9C!}%(ucmbOxOca{b(JNIlJ*){8!uXIkI_g1#i3e0H?m&qVg$U|MQ~sYd^<W&J2)c?tSJa?j^!`m
+`jdz#td~l4_}c(7-uJfugn+9710K!S{mpEiIESY-VdLz>Uy^G)mNYtR09r3JSfV`ufF+8(p-EcRWXS3
+6BkV1W~t6Amq|9!r(+-DAw4^;G1{`x^@QU2*TtxqSi%<wF+k{b+ImypH=qTiN&oOd-3|;9q$7Sb?x%X
+f3C>5WF4ZupEh at za>5+dY%pQ77Km3RT_GMfuV2cF4_qpi+jKKPp<-4I?T7Bzl at Y@ZCfwn8yt%rSfbIv
+w8<E$F(Mx5rcB>Y at -xaL=KWg#N3JSEy}B`}Y?Y^>-XO!4|BUn94gSri1T=S8}THZ7lL at dw8k5+(=3;L
+V((O1=TciIF7B^b*~VOXpH5RADRj1SHvF1k_WiyS<hMz)nN83N?kXX{@lN7!D5ONCM*mEMYV$VmTC6s
+^VDml%ND)Vr~$Q=`5gd9yxH;_JC0Fwy4t`C!VqjGb3S(O9_AkS_fTePR=Xk)@Dc5L0IRQ8zbe=If|_+
+Xuw1;CdMF&j?y$b{Cx1)$uMB2levG<`s(F9p8;btS<aRW3C~mHx-B`ovSV!ReSUGg``ycXN%2z6FE3d
+-wem7elZ?to3Bt2tV%=ovtxlrCTZx(pWAIj<f3cXeg*P$Y5un;IDm9-Ca5QC#i&q?Nm93&el-sx*p`j
+O~;_#t)bpj7g$<-GGW<G91MRqHy1|@7lw1b0|{hVTY3jIk)#^n at fhe~@4GNiY^5#c`z5t<<5mjjw at CZ
+^|TDnXXGZOEw?ao9;H8a3%j$GyW5pv}ud3sURDX)Ch2i+3jWKFGoeQa_eLyO}9v71AZpM976+I?gB-I
+!?H)&Fvj7$@{On)dh>6GRn?`(kZ!vmDK{(TOCOP5sKCxg;2 at H)$35QnF!N*u~dzPD5sbBAX~3wraHZ+
+<5)t7_U!eqn(I at PQTI_qdz{nVIfXWA=`bxi?sY!ay{AAol{W?+0#IFO5L++lF+RkqM!)xZqvKvJLm>V
+;@_S%{wULL<c*pL_NVVl<9qB!@G!CG<?yF)8BqMaD=mPhGauT_XLPS-P*oNO+iirjp)_6`f6yX-y9Kx
+X!pG0&#K*<G=r$~hPZw8-$t>;CK%Y4Et at l!U!hNQ&TH27pPsW5zBcbtw2S}GKZs?4UG5{lweV<BcZNJ
+^BwtIX;<#bRpAY+83WRNyzPeMTjE2!m2tASQ<2nAm at KE(z~QzxHFun^ge?)g>}^D6Ha1T<=iTo}7|G8
+Om~_L&lJ&`8*%*QXlQeMbg3B67|*6nI3tq5k??m1II3OdzFEzv)%BB4~F;PAwV~%&(!1z0r&F`gu3p;
+r)nal^n56Fd_d!W7VHp828^<ynj2JvOw(aa9~(yM4}oNOn?oz&t at YM995MZuiP+c>4?2}648AHN9emn
+CQXZ8>Rc(!m=?wNPjFa^k^tzZ>RrtEqD0L~BDjHSVoiooTM589QT^of4DKAKNVVZ-+f$U%g{{3J6{H(
+uu*8Ba_C%+qR{eOS^cBgZ4>IL6&dx_4^Ed<#@jVq8M)Y<YbiB)o3co&VcF)5NG%u7hu at F*_|p-ghkg)
+D1Mms?I>f>iv#xIOi`WaNSIo}rA_>pPe58qGj4&JK7+GRn|o)*GZ8`1-6q at 73o7W+5m!!So;wU_+H0O
+05&!T at VnV9YgrJ$S8hpdv&~`P at ivvrbf|V^g{EUFdSVl$WZXpdfaMy?lT!HhNBYI8$ld*&nub%iqaKL
+ at WfQoTI#zo1V(Sdul8T>{&0AF_T%>l$NOh{-|v1n!h_uCWB#%JSaKO)Yv)CU;k6~^Z>o1CdjIcem&ry
+f*=rt9r6B8(=<=h^GeL<BdldG)^4zN4K`SNYxwUm8E9)jzvTNw?uJ#fh5!YVO-7H7ilZ0&556CKeZum
+yKNsNrk^TDxXDfbN-&@q*ECGpzj at Mt1H@v3K`g5H+lNbT-eq$cZPlzI$@GO3*F5l)=NDuF4-fQmFf;o
+z(+-KpR-eYXT=yV3=mGf5rbmi_QLFXs7mUfkv{JCw7RVwg+jUR at 5;ht+tNtn(F at cV7u(#q4d9iQ770>
+_a*${if-i70xsG9*4fGA}uOBctx(WnW091KcFH+aYU!ePjV4uxpmR1Yty^}(`;p$+_Aby89dc;V(<Sk
+$Myz|VRVh;Lx-N}MZG2Qc}<AsNGx>e>=>;CevnH(=)258dB+rXRm+UCBp<8{(~&0A37PkU1z;Q|V4I9
+ojRI&Lk6EYLU+rk at lpj|O%O(swa%Cb)#y1pYjP-oF5a_lFoPrag_}BNy?5P~t8@<8I0<M!KD%u=*vsb
+2c7EquvLh%Stq8!bq^9g4k?{N@<$s~lmU5WKQ1bvfzOwGR$$SWhzv|#_Yb*9QE?jTL$3VE*rfj0(}+!
+Pre^^8Gczyw`da0Eq+NVf^>73pHf<(<pI7rGn2Nv`oui1ITgQFqTZC*2RC=m&FgMW;L;XBQV~X at c$hV
+~-+zY()9vwDk(Tw#r-`T0zs92|%urII2tvvOH}zI-21CvBv{@SoV957y9hczL$ul-F4(IExWWjjSq4I
+S6)EC4`ethC(P{5%wQ${HZ6A}(WQd<v+HVOoNUPTnF3B=1P7(ZH?PTt!bf^5b6>?q=*ab;fm7NGP!yX
+8=6+ZrhO6F6CM2t|h6&2KqXj7WVD=3gGaS8icQRq?Ox4^m1NbUaBIgm`%5pB2IJYu%Kx%s^LcTh2y5l
+|WoWZ_*cf7yDlcR&iM9+|*o;4PMzY at jk|63a#K|*g9?b-tJ)FdNuFv-=fouJg1jnsmQIr;$(%eh=80Z
+b&uzaRuJh#}GF0O6F8P10r>F2JtsHZ=SDpNcv4hZ3n*6l2e3*5&{^IX}k?y5wBXsVAJH&Arb^(!CB=>
+tO8roV$a#<97p(E_Bf?H?)bE&d<(9l*{}6h5GjLJ}kdsxPN3d;ajibk7+cV&NH9ft)+Fc<10 at d#X53@
+wCssV&Z1LAyloP7Fc-4Frlg{?tiHp{oxFG{iRbGH`G8`dyzPU1w_sb!@*7wxG=pLvnT^kd&)}g8iapG
+cL|4h&AUx;f^F;zT+wlh^i0^&Y9k|EWv`f-udpx6zMYgJ)P#oi|!k4WHR5e6*cFw3>8If`ooH<*qLJ>
+ho%bsVV9Ty at jNSJfk;b{#IJ>=>BNXGl|dE*s4Ls~u~wJdOlLuI$J`rWV^>n^#y@%)}-JcBdEdEPsyuv
+=*I?=vOA2ozl+c>lo-T}M^pPN-df at ig1Beg%8JboY2~L;@WE>ms*YO2RvaNog|U2>eXl6`v`9oCIQ~-
+as5VMuaCPzX^Wc+o at 76a&|_?`Jx0o;vh-v_W9N~+M7}4lryvLeZI(h6&`5Cc-GLr_qZm!wchaq^#kKt
+Vss~Zh!1YjCEi8<R)je&hwlC)O7MBAM><Bg5DJQb34<raZQp~!Sr$Xt&os(FbMVrta8){f8QQVkR4pB
+h26LE<u9Hi~Nn%njDW_4jh1#GG7?QHl(vd8X0VmP9W3#M4C*vPw{gGS`R~Y`Rvi5!(uob22Le4U&%PK
+jK9tR5<6cJ4FojQ1SXyqL`pWbG8tqmw;T%_#MlBcXUs1Wk`9XCI4tX+?JLajdQom4w#)2p3EtIuPfN~
+_PKpH8dKil@}-(-6f27M*D_>sjXlEa>)tT5Wg4phhTB)-c*u$9dP0U35uAgk(HkmtSJE99uUO!V-m~Y
+r^9=3gkf3ip!$!U%0<POk0St%`Zk-;34`*emNrdFpM9eF@(h?5)+E#m;&Dc<Z*U4bELEeQZ?L_up7No
+p7f0vczd5gXs>|J-Xk~EV3oBLx}^0Ev5!c3+omcDf={iD8OfPdRtasC3!n}eaXM(ygvyj4P&uoP6m|_
+5&N(iO-QC#8D>v!Uu~^t28rdsF(sT~w^1jq*yS`3mM}$$6-V1BMkXmKAK>iquq?Ir8Ecu5JE)d9TZ9!
+HH0I<5Eki;&S#J+LXsz}|#ur31G!^gG|Oh_a$#7`<Oh at F+3rHW|O5Pn!RA}5NpEI}J=k#UA0p(ZH9X!
+(U8S)-7%-CLAE>N=gy$Z9|tm5^9HVB{Dxw6+%u5REQet5lWz^l)~;V at s^j)`q+g$p9punj*tc#r8Cnj
+)CBUi~*Ipr>%2Js;RYdOE%fFa{zIXFDAD$wCEq89gcFLn`nlXf at 9Mj;;nj(C#=3%o{y%@dw15Idd*Z)
+$U00gFv~93T=uPJvB9%(`-8MOo=>N^cvI17dj3#bYqyWwl%Qi7mm7t<L#{jOhjJaj)P?w)n5F2DOD9A
+bOIvZq>xk7jf3p3tH=w%bJucu|9i+loU|mHNp_{xG+EdJhLbHa=zc3YW9joH(vI?Ye8 at M)w_2`IrF)|
+U82h-Ukh)v(55Qu(6rB1BaGaz)<?ei0}vN7?pJDSvW{7$Y?{4M%-kl-&eJNX;+_-(P5fZDZErvr8nyJ
+_Q6HdJ>h_$;L#J>iSx>IB9m0?QSx^tnsJ{mJpx>%?r9W*@^2Z43|fEA-79y~e>2x(c+JGQ4sP>y3A^A
+#FH at 9DQ-bK2B;j2aDEPZDt8CVliQ-6AcOJ*nYuUEIES0TQ24n2(iajo+;LfG}mV`)><*$=5}I-Ongwn
+{mg0R8WNk0A)8ag_Blmxrfi<;WEn<-0n`h+zqLDc##kqKX|hR5U$;0Hg-Y5Zw5BkYrHz6{d#i0r&S~(
+%5*i=Smh0~mG%EhHt_X!j_oy9x0s!7iZ*Tg)YV8CO{RP9)u)O+avkYyMPEFV&k5y&crr6WgLH~?KXF&
+CQSX469=7CM~-nVVhK+5i!QK@~;(dC+Pbo55K1_2p;+3&;xXG4XYi}rPHaM&)*X4)XydRx!`ES;K#wc
+9_934I`(Fd48c>7=a0zB(7}Vot;P(1w at Onfk21Tj59VSd9$}X$P$`ju}dJu^_0h at bq<1cv7E7+t2XR^
+eYW>p>@~BW2}oc*TgTe9v)*Y{6p43`x*$U6N`0+bgZ<8t(Tox<Jny8SwSJ#UQr>~Zl`6f9k`?uR1S3k
+qay;}UrmKy6mmUmrm(d?@w##1$XIN~wKI9`ER!b`0vsuVv9E_YN^*kmHvObRE;tYt4U}MOJh|2U(e&J
+Y#+I}c4!7f4nObA(kST{XaVM7)hAqH at LW)2+xl^aWau at 4dJh{oiln#xx3!XNQMq2_F^Tj84EoF3-a*}
+wf5J}P)#j=>g_$D`EWUb3$jz-wx0`EvD!=H-RlaLMG7%@G|!K2v?I1&>Y4G5M7g^=uuv4-jhS5iI8J-
+ at s&?D=kaN&WO9t4M~M1r<&d+(oI{B}s;+mjE+h^5;Z30m5Jq7;&AyY at doZ(xPYuL19mg$y(6bw(}rY6
+8x-$Ae_17!|(>)#K=OqWfs!bQjE8tuC-8($Y4ajRR=L^yXQfVwX=$YTOFxHou~2oL&-wis&PfB6)wKN
+<YeM3ZnWFaFRvnT9>1~A4%pu5blU{b2w#(cnrY2*Z;|8zJh)jr&d~LuOzM4d&2o+D;Re}>>pfTNxyMK
+hrHVQNwWCfL&^skV-^KA58RE2HWZ_La%kf}RTxKKZIO&7JrU;~bG9#x@!XMS84t28A<EF0Y+|98d7Z-
+I(G9bn8$IE|{^iy<MCetZ^?-NtCjzY9s2G6vlDs-e7Ty1GG7Ot9pf;p|NtF>Q2jclCM>@q#Z)0;PX at O
+U0m(5-YEBIVbkY9?e*KGrDG2S=6bBXWGjxvSDKP&ghBkzW^QArzku9H+STqeHQC(oBzScoYY@%EmCLi
+;Hwrqc_NF<(~|oE8H<<md!CzrQG=V%7hK at u9!<02IV|=r|us^?+fb44IYs*K``J8nEZJOY!_-f3Wy9R
+nxY33t~BwW#S1yI-+FGi1CMUeLH^*v>tU$@&+!Vx-sf3$H!8 at 7v4iA-M+?BAa4eTahq`6DV8hz`>@;_
+;{B5ut`@In40s5V(z7Vu=!2y*E!n8wc;-N_nN24;Su4GEi(@Hz$GMD$8 at 1e`Bp=%pxa)EKGcuI&)^sL
+zH+TMe)dmejnd5Fus7Zwejd^IXCD-J!j*s?yBVaKGVtil at KWD@i$-=~F}hR<`gG{*Vm0zN>;;?2#jZ5
+d~^EHB6-tZ;n0fd|A<k&CMsb0F6z-D>y>NbNku{R3|YyX#%Z<rZ(5P~Vt|u`}6E^Q=sbV>z^(m98roz
+_p<{UXXlxF8TE;a_3dZGv2&CYy{YpN$%x2nAx2o4B|;OPtJZm28z7zhrHbO9A7ge%t<!NYLS;K_7(?*
+h(2ye)<x6J&129}QI1nV3^Sgxn85=HO2oln$Y0L&z45T^x1z-6irwwJ at SgVQiIp_DEiqvZ{svo at 74DM
+!vN?etQ;#!KO+N=_L%4Urb_d*&eiHvq+PvgwAR(}xu(@S3ENl!DAmP<ELOd}{HOeM~v*ytgwtAKASEy
+mWaDKkL_q|ZXJBj(U?V)DwAs_`q+m25yY-5+X>?6%6tmeK%V}=b_yR|M7VP)pa>m-mTP%ILx^2Ve90q
+l`UUH8_ZjW(}uEl6y?o at xt&KF_Ya`-1_^*}U}}*VRo^=SHW)xmR?!NW*Q|T~xOxJ(IXFa>`dAEZF7*?
+KT1XU|`s019{#&uvI)S>?E+(2^1q3>d at uV9>$rmIANgZQfHFIhTl)4#(9EEC(R4wE!yk~menUfyy!W_
+myaa+g7I%6M{4x7iaBjzMG<$kn88~myQM>4ICMdaW(`1>n_p_rYE}VbY?BG5$tQJl=j_eyf1Mq?J%-&
+GkTXeUK{??Fxom?^5bb-8WSG4<+J}{>{L0u(T=}2dJ#XYgBByN6VHxvOswb#LpoE_)8xrlWDuS{rhMF
+PXTRFC2Ujd0^M#v#QY!(B%c~|wG(xp)3i-w%M_gPTn=F1g<LEg>ug}hXJ<j+&tfYWhv<2S+z58fX#_e
+a%-FLDW3#H)~hyV)Qg?#OO=uQzu~xl5-)P!p36rPh8Z<9!%QeHc%bG+^qiH_Td>`d=|)e6D}b<Q)HX?
+(<7i#C`8w-CALHQ#59`+t>pvr?8>x6{f1cu$aLbN3Pn7zzlUY4?xPFV4sW!YO5o0$D%51sR48iXF=U#
+__EoIhSDCkMncmaqMrjoX+O(SXl)I*f}guAomh8(WVF&kYb}g;&OB!E at iM}B*xY!-oh%=&`fz*8Mu4B
+i!OCrT3sJZn%<?WRhS5SS|JMp2TCjkEd4)SgSh{Ff7(fZD#JL_-VI!B^-_wRH7uSq5fRQR`htXHhgjv
+vDIZYfp&bf7sokpBEN(<ZAP~+VD>~$Pk*VjIjGUusDNnN8P<ANkTwU*9s5A7>;s=IWv#Z{*9(lP6ZJ`
+P!-Pb8q4lCMa7U~2@*U$jv(e{ocOo_})@PhT=bL`wV$kRwK;q8wYsXEHiR_B}5Ls6t<`v&uW)WKAK!s
+-U?swlL!aMmO1aHn1l+NDR1wTV8piZ(P!4xr)gp%Q=$EJVzrCj#D+Oiz`+~YG`3WM|r at qn^RVeB)hz-
+fsX21G&y;L<x at pXvKo{lUHCd-W7nhr7jYFEsm7MhLo3I^nU#V=IdUW3cB<2`t7A)24EI#8UL{k4nl#|
+Vwe}fkVWmF!K$f%+*at9X3ng{4H;SfQR%X at lu;|5(6dEn~bc?KLbIQ40xM!qZ+620_hoWSBb}_*f$C(
+uRzbUTvg{-6;U9F*#`u8()&SaA=-cc$tonG826IMbNUd8leCm{vTv0K_PF4^Ag+ruAG`y@;(Q$K at duQ
+nGK$8YK+s#jz=Hr}Itbov{;+5znvIn_OiL|0xKuHJYyBQ&v7Fx4%+Ng|Ez=HvT&Pe-=XUvpA+3YHk&3
+?xna(y)9z)l**|4z%XL@*BKOO0<wv1N_qK>?OH`5IskcNri|&yZYTMjh>28zyXQZQz)AQC!`O%!yQr7
+oFBQhm?w$CMGn92hbY}~e~@RpxILak_Dr3+2}H^-noDwKz{q#}h#UY3saDJeHR#`_`4^jJ9`dGt^YW~
+kpSyFrY-+dk)W*$KD%LH!+<=!wf1A!<XgZx$3qJ;D<b-$xILCxZ;dR`Y>!s^>>$i3ME1P&8@>XLVPv;
+Xgw<|5<XVx+Xk*v6_NYmG`)u6yPPRun|NTVW~k at W}tQTB~f8u=4Z2)Jpg;>n>o;vAkvUvEkHIY*3~&o
+Isx$e`JTof7swe+G>;1~Cgbi-y7H?qzy8$6}Tr9NH at ohU31ayFoF1$7stywBDmAmU*_$Eg9IeULIp1v
+ at Dd?vpyYO7$*jAlBvg3HV2#>e*W*YEZ&uGiZZ?DR1u9M?GoL<pd)laH3gk2$|FU(m6?nCj(@7H`a}Ur
+bH86!PkPVsb!)rNvFJnE6!Zj|T{><9X?r1<cX{eTvB8)Fpaw2<q$Czh(Z at jxyqQDCbaVqi@`#hvR_y!
+Mh=Y_S({H&k&%LU>?KEd=OoCcMHl0sZ1|h&O*0G@!BhFqlq65GK3C?QAX_6QWa$I&>X0HE_*A1Y)ztJ
+3S*gT+xA2Wl5_2 at B0Sb4(Rsu(pj^#d3)S230+--5yKX+5{F_MQ?)dM3nfzkjmxb;FyQ3gXRb$u}M_^C
++0lWmh}dK5ZP#`@KU~WE?XoMyghO8+J#APKF)(BP`m`e;|8s09s452!W=TK?|^UgO7EC<C$)6b8+{AQ
+|Tb9 at pAh#Kt1?bMnTP)w90G^?fNTdx?Tnc417b|xa=EuQP<h9yL`v8`?TuD_)lNL#Z{fy+Q?z#{n+{m
+l(oq5{y}}f)`N}r-Gf;R9nlM)1i9t^L|@~Urd<gLw&6Uz<nwUyQ0_QVlsywGv{j`TiHUb`xoAKhuIK2
+`hQ8Qz)frfPGC}UnF1=Q1w{d%*usj^fX{@~m4E#BE2DruZe#gad&uYq}XB4ug$#tp%WsyBMbe{u7(3e
+YAw7{U{2Me+Z7qfS-ztA1H4Gw5wHP~wp>+M63WA{+UZTzj*e*lUq%?Uz2eP;Egzg9b~x!I%Pico at 42b
+SZ;;AQ3hw2apm_%Wf4t;AV^enVk*Q;l*-E at Oiz$~CpXpW7^RWc_ at NtNAyL?-$ef43d}G>AqxQe^c*&6
+_d?F{<)#ve_DHP|J=4{-<7}3-!C?Q at 5*J1^owTlw^jP9m}MUFpBt+bCS=XI{e9aiMK|EzX7CrAK}7G;
+W3Mln&EHn)uVS8g$iHu_)GWVAOPz6T>BRo6ZJE9;>fQX#oj~0ke5I2XS&eh at 5uq&1?J*?#mwRjAswnH
+xoShNKQ^U!1g5DZ(L(WSlBH`ZecRalVL-dT3Isr=gu_(vAWHP%-s(woj70|k<R6d_po1Lvrvs_h-K<&
+>9*G at bt=94k%{b-}ai_=N9Vn<qAZfnZTI&*-AYlJ}7WcETK1SROTkjeeB?z8SaWf4q9HPShmQ+*WPtG
+fp_d<>SV at -Lvn+I?&O8 at DIL6!9>QB`il}U3NSCj4=@I?^{E|OQM<fNI<r}=gkjRTxhDYs!DzvO`$3Yb
+Z~JT$xCtEl<d%L8O6TE>BfX&b- at mVGYnEZPqg=mLp+l?I$Y8<x|wka<tD;DJu-|Vug7LAlQg+WP4w8{
+kY4fqa~=>zo282=FeEE+rQEqQp0-!1AtaSK!L`Y|nCMoK3R^CIr2}&bI7bgmyhlr!>m+76yWYU>bH{6
+!Tu!xz&a at cM@!0Hq&Jmtr>0yEh4$D<x(poc!tqPsL$mXZw7lg4|HN);UA||&54sYZMWj6Q7*+RoTT#^
+XV1*b_rl<aYZu{sw|gLGxar^cqwbWGw6oy~#*Y|kj)mJpjAaL2wp<}i#mVrUh|I;rYiiI${H3XF2u*4
+L3!W!>^aI<RA(>Z3*R&5+-19=$>2 at y(=O)Gl2~ba^{QIwcg~n&YUK4lV~6s&^`OLcXsvE;5sOurU&N_
+pMqcf-n<ZDYmj1=nQBAA5F%MLyJsBvDTjAtpN}kr(>2t*CNkpo at QI{n&6bkri%O0nmTM^QE!#t=6(s~
+{VV-Y#hQCcTSbdK6AamKqJGq{b~f0_D=SW#PLGS%{rFj|!VsvR`lweTX at +9WV8D^tB%wT*Cb+buo2Wv
+Bq^YM#_I~P6t8+*+XR`DuoSQY6CGqW?Q8{q<#p;lJgjle&U#bPIC9Ul86|Lq<r;C^*myJ+fk1_ at JcsX
+<2#j>PvI#ZmtEH4_l;gl at p(p~E;E}EBxc#f7Xq;N*xZ~}!h;3Oes#+LFZiJ-0Drn5zL_;x2BC7DS!w?
+-TF{41-${kRIJh7OL3awmUK>5>&)(Y_`^)u9*Mo-!Kf`VvP;?=tH5F?ul%Pfk6;+{5OyjAr>2kqXAqm
+7x3c5l4lf-buD_O7)gn(YZ|ax4=f}kL$!SJn*eUAb-7(;5(k#;9pL8`tYzc68VJHBLs--Kmqonmn8a)
+b7wp1SplpPfx;Q=9adDEC^A$Al_A&;P!~e~BfeoYniQ3hS{8;8YTgV&#GnWxP6a-q2H1>s=|<f0cU4x
+`K#*%p`H7wEHId#aJ at vEEyx$%b8qf$A#hS3!s2z>Sfo~@Lw`&GA6H9+;^Lh*lT at D7q5j%;kA+3_oL at O
+V(7~+F?_DjDSlF)h*UhrmkWB!=|i-F9ndCD%@M2;0l)S0d}8VR0CuMx4dn$Oa*=irmV<@Sd|mXobX%G
+0(<QkiK%G-Ypyq4)+l_Oh#_x)KP at y7;n}jrpx>z-=cEd#+WJPSr2#ayieBVd^U}@zwa<XWQ#>?F9N-s
+_f|)yG_DLfc$$^+~OKalhKvKep3uTui=@<fNY#D?Y21a)FAqgc?Qdm;%Fq*U37~Xqnw1hFfe_i*Xm$$
+iCScBCG4ycw4thAw%W>oet@~6KIwbn63*bS1rjghQ?Ng0{4kt^)iuh`C^m8rO&)MH6Y#YsGMY>ZJVBX
+|vY91(^$iVmwlXc+G at v5qE7#c3!0_5NK%s|r{y-qnV`T>FM2SLEHWM-$fY_YXIMm9Ho=R8N$O?spJcW
+|)W!9(5nUHnYv%!yQi-PrLG#JmPGe3-LFswvdlvY4Z_ha6rzK7j|tWJ^SIZFo|pDExZ<(2P7-Df?_<|
+B3L{?;~Hn7e=OuH&HOL1bWUU~C)$1D~Z{H*H{EbqYY<Lv--fSh@#m6#os5RY at _vd!eliZ+c=z-DFfZG
+s;)<bE+Q`v9N at S*C^{^nvLu<#$w7)^s5d`vfyzE?*r5&=Klk$Y;u$0>ecZ_He>`G(uyisJ<lVI(|X7E
+Ok*~}Clg>o758qf9#Ip1k38j8vb1-otS6*Tle-VZ>FH%qmvM8sC`C<;@ohoJ35`)ogah&>ry=GkNMa8
+dp)|1K7^U=MjnXN?f!VQ at A95N8Y4|kG&Z8ti3x$YZ9wA=M#33Jr`ZICN^MHofgktZptuwJS9WM|=b5>
+%mbksPQ<tdVumrN12JG4Os3LNSfN>;fAY6aCKPg|OJG;F(V1cLRq<^J(bd~*z#C>yPuivb#Cuyo?1gV
+u?v*ja3(TKS|`JR50VDWEsC6QuZV=V{gHMo%q61|zcHM!fr<VB#?-Mn~>RvdLuef(a~#7QTS*pG5CDM
+`}XBBj-5Y9f^-zU=-+-L;kC5 at 6oeKQ9qNanVhjvf>hL-Ce{&@P_N92&Opwt)?O(U1LX+{k7d0z%F59^
+t8s_^2_-;S3%FSqAl#7^4S^*$MK;!lmt^Fu at O+g41=0sTe7U11wwriyI1G}rADFY}td`+$J0k0htYXt
+=s~m>>?Du_}xk;+A>41!__4uXS>Ff|lL)Og3GT#lWs4%rZa-!x3Gc}yyM5TL<_2njv&Lgh-YJhfd^NR
+wn3aV>-d693agwdMBFzih+onb5n9l}@oe(yLXD7M_mE;@bQ3QZV^2`~*gvd=EMbP<uh?&jln`Q+{Zo>
+ at wTLWTtj^s{eqF!X~?RhI*gJ`K0K_c34kgWtWoAuyn>zP`3Q!s!L2;I`1QD=1nnSp`uM(Frv$^Zb}|Q
+>*Y93R8 at KjflO^*%+$O!Q;KGZLPytC(JA`DEA6BM^a6k)zT`dS*>U`61FHIX=-+r<j}=38&$yMI%geP
++?{{vd<z{JfkH9?mF`~M2*n3mK+5XaSV308Vyq7~>FA#roy?2cGhgk$-u>b5`0S7SfBNy=hgWBN-|v1
+n0&-SesWv-j|I%??b6WP-I5L<T2I0n$8bZ at F$~&@9%KsfZvJCbY+mVCYZGc1mUH4h1h$06({FkrxHlv
+;e=1IK at kiuX-LsIf?*l5zkXv6wPqb#41+J&pM?wJSvNx(yQP-hSgOK{KHVJS*sW2=i!RoC_I>!73`2#
+XD$UMQdCmJ8Y1lusJ%nr5BzYJ;Bz?c(h)ANtnza)_a{JnKjR!8=0_6Jcm94;EvB(7t#^)|!b$6Y+~pz
+(W;8tV<`2=#Su;mnmF#V9yX|IbF<M%u;p`+ at 5?JvYcduQ|8baG;OW|Q{1Umccl8GC7Ol3s228CJ4}hh
+xhKnC$!+pCAbYmSoH2XM;3kE<1O=Q)T9Y at C>Jle(sI5qh%4}_$gU(ZRMPI?ur<#t4qT7A@?zmB$U7;}
+0qbsqjt>t@&X_&zRTZeV}4=N!CY)sYUv0YA-fPuSnFy$Pn5X`LtiZc7)<>HRomF>!FZqARhDXqWf(5t
+nSv)~{f${<|IS89g*m9ecOwJu(8t(4UwwYD{5iNQPxk2HP1h}7_RkQn{}+PzTDkF6 at Y4oHg&87H@*%s
+%7|fqoUDXB*26><5NTz7j7L(y&GD7iUh=?TJ+~1oA^cJ+-MICb>~#gFsl-FUEJaBHBZbLh)+%R81W!v
+e77Zzb}>~t5pg}JD<jeYg4QgD)<#;NWh~EAdSoVirl5m?#5vT_;v(<A=P<1>LnT!gO+kH;GMY9lj_|6
+*4ZklP^F+HpY9`e&87CW{*N||=difbgb<V$I<||~Rot`ypArUmH*Z9`M9375NYwtBItQhcJappetNv3
+7waXDMk<Jw`vzhIE#>o<xJfpS)z7E+;VgXYbpE;5HyMiaGCq;41$wLSY9v1zG*At&+F5f)ym+&Rsy&=
+bafk_%}Qy|UZ^O#YHUlPUfSdAyIPK_<9+T at i#E>!EY3kQZLt*Z{A9xF$0BN`;dcs8$5WmH_o2G<C-pv
+T!1Z1t;fW9Iep#+cEm-n}a`&U7QcTZ$=-Q~h>uWLgiX#QLSQq<=3cDy`|?OT8ZbMw-KEZNwUqZz%Y5q
+(xB_nm$D at qvw8b732{s#uj107EPdv%gDM15NvJHu{dZ40M!iI_-k4gTT+l#V1_5+C9~2_qtjW=1}6C8
+c9pvyz#Y7iD#@p1c-CcA#NZ8gtspa7(h3y{yjLCP_d&VTb}n_^uWcn-W&zTy1Z|G$yEE1<{Lhgb>;<(
+MAW8}xgq#aBb4~~HX*hh&ZZpKehR>Tm_#xsR1{!Q}3 at cMD^LI|3R;QaN)Sso*D4C at n(#!PIha|t08#h
+g$ff!FHZUqXqgg0sQ;c11vc!s_BxX_SjKD{y>aEC(;ubS_D(U=|d_TyDT!vvAL{?JyRiC=u2iq<r-FC
+TQ-`FP&hbe?X~GpA;|*J6oF8fI6ro%Xy2Le4>pAdzSIBU(Yrh6f{B6jb&g=r_sXMyPiZzY8D=CrI^Lo
+MazpeNrFJn8Ga#(nf|iqq4-R&}CW7XU*JAu7(z!Hrbl54SiwnIrr8O3+iW$6f{e-Kp{zw^j>b$xGn;0
+R+8vZi<|at)GP%2xhKD3)4XZW%I>5p(ItJyXe;vAs42<m5$dOyqWji(yZM_DC88f;;8yDW3wy8hy#IV
+aj!%vvYDcC?IO`ceb at EiLI+)d3Y+)#97oah{eC{?%57FvtH{7S#YtWw;EA}*C8V+~Y?yp<oap~P&itb
+p^9CEtCrJU9q08KrHA^0x;Zf(Bw(wHuF(?-X%bSm-v8bHEsb%c^wIFcO+3H_J<8up4*-9Fj*SCB^rgF
+&ZJY<Y0XjRrA=)SBP<T!EejI_(S{w(}o%dQYqPY1PN=yypx#us1i}yF0DFleJ3}eh;Ym#f>*8%m$==*
++?E(!J;I7&noQ`+vEA#Pcw4zLbH<SI_e&Bvo`rUVCz%7099P(*<aZ~gzXZPhg#(!#~bu?VcoSFh~O~(
+uumaFh8!Ejk|;VSyIcQ#+7VCMkdZ;$R{7px<w)R&A$D~aUvs)0O~sX+hbrBZfyW%5*OX`3>P7!Py1?)
+S?9IHDRRhWqiREN`So~gwNE1TAhi8){*P%pe$*VG}otwkd5$c9}VT^bJ&3e<g;h5Hqd$~qMtAn`+G*Y
+lh!z+0gP^Z at QEm-JR(9|W>-Opj at Mz<WOBF^yo75;TWtS+(Ijl~w+P at Y{^cD8E<<lLw#=@J)CO<fJrrY
+A=L-&xM?J!<sGKzzg_Ls1<LVtZwuO8oFWFUw}oLQ&N8z+JBWfQ^9g+d5 at tRzHTS8r-7$JeLi)fw~iKz
+g}SbXqt3rNE8!*yu>gtfb!^4oX~h=m6RTxM<0FImwS&5+s)tI$`SVCegqwAEnR7Wp7f<s*8=@$Y+jH~
+G|onLsx=O_>g0HGH7KY5o^XpS{2Dj7fEEpaPp(e^_89(z#6vG~>w~00m-DYK4q8JBOM`Y5Uu5}^YMBK
+ui96hJMLFd^<^@o-+#Fg{T)|y<3 at m7x)htN-1i<KU%0wS=#D|bPfOW`b5=Ut@!Y^{<0Kcen>I6dF98*
+UP^PH**t<ZvqF|G7}D1cHCxCDj}Gx2Bk$za1Z>=mSAnFu!_w`}sG<^8nn2Am!NDUHe_R8C|lbAfe4q}
+>J(I at MGtH0br<3tHftIi*9#VHyU*s3;tHHsUBmuz^%CxmV`S9EB}wf+bX8uTgYNCeoiO{b`<(+q-TAr
+6ZLITMF?&d(|8z)+##skHc;S6Wvm&(_h>fb1!fURLWwKCMd1~he!x7w^u3M^5wzO*&9q{Zlb@?Jv-Bc
+a&h&WacO38TefctWf`rmlvA&O8QTp~tg!};Epl9&Ixt1L$e|9Q7}s#CdCrwGe5u2iX{z-5)V3bXE1AH
+t9pS0B_qqGAMyG51lH- at O9u4~Bv5bMjCQj*AyfkHIn*%Knou2?3n-(_`CW`|w at qKkh4jZMmqT3=z_v;
+d`$KKsqd34P(9h&caWwY1V8g+q%-n<5+oHw1blEK&Gc#=A?E8s1Nj!0WCmu8vA)f^mR3hob132T%K<S
+eg>{j-4^3qN+brDC$v#$#Y=DYj^<3r=`T5#u5rST`)iqCaR5yS6tti$?7 at Z7*ngU_bTcQP~QHYEx*uW
+|ltG+}$nU at xP(R5Z%J9jAGczL)`OE#nVIH^`aAip!(*A!{dX)gSY$9&-nAzyW`!%!$rDC*?n5|{@<OG
+KR>OWR;S(I at lP-E4zbL%hP1FnhdB0hP at 0iI{hpc_D*_}L3R(b5aWb-YyZz-ch7`V at uZWnB`N#5q9&+s
+CP-m4yFa5(%2Q{0+sMqLN_h-OW7cYnR=^J}^;DIUN at 084t9-5rN?quQ7F8r*F%Ivh|&b<F24<E|2hTw
+W(^lWX%&tuG0LZj_A0K4ut!a0`Uvn2e1_R%HnLm^7l?)xyCJ4GwVK@%noBVb#QS06Yt{Cl$$yqOaSo1
+NaE?_I5Sd(eM|S$>{20NCiXHk$C=p@&(mR<c;FYOQ*prON4PgHBct^z53c{- at en7Tg>$0swNl1x6X<a
+!!b~e~fX4tuG6XtON3ccU1L+<hU8=EEl4v`Q{R8p+0GdUOQVMap<&h<YZYo0Z!a%Hs{`y%oGCJOrtQx
+Hu>1)e3iACvNky<d{lN at olTP&4Dxd;>n>4=igqIW)4qF at 6li6K;;k$!b-|@B7MCiyRM}F>&pOE;+*od
+_Nmj?V)rfZQTn0D*WK64G0Oz_*HPr)|gC0YQ7?gK_fS=}U8Lc=pTQ*m3J-1{gT+PpW?R!Ps`FQza`(+
+1>fGhPYK-pfO0=s8BVw_59^*Rbb$YSXyn|hGRGN^d}oh+APKT({Ej^)Ytf`+%J73xgZPZGvluCWrTf)
+-B_x!xA_LH;0zf6H3)4EXdjK2_xt+bXTs@%+bFr~dVUs^NRD04f*!|B=4;OU=a4DRE5?x}pcJ<mhQ$a
+)*3L_;i*(3hk4vzW#l at k}YCw`X&=wroH+%59LRYCtYE&=XL=v$~J-zw1$s)ybE~B&&nage}H2kH0`+k
+>1Ch_pl_ZcvL3_Sv?e)r{RtO1_=%^PZ?^ERX^SJc>Xs*rG`;>-ckBDL`<+>gE&7FbZQI_WCLC=o0Y5W
+;gZ~}5Qw;`#zE&$01aw1lZO|+EXZ_ANXt at -)c-NQveaPVb{r*Ufz4UI+WnBS4?+gRH^vu~mV*9KE13h
+u71J#l9J1b<aPT(O)M7RyC#Ch(=9Hr9B0Ad1I>lKC at YXvQ37a8m$^+1Ujp6i1pW8miPCFxKX)e0+akQ
+{P->&A%bL?1uaA3v5KKjxi#Xl!><6;YjBV`x)#E0BeXSj2(Ykq1nS9dnJ*WLBXtnB=x~_!%83 at 9!Bg+
+NX;84YFzFs8b#I-%iwdarA!grRBWT`B-=GG3LH-9_RG<@U{E2q^Ely+@}}x^tDs=zA29|FTbsZfS?-C
+lXqG~lIF!X9MUQQZKxoO`_?nahmy8*I*prYRMyI;V&6~m8gcHo|Bc`JiFm?cWO}M$Dml>8bppKE?TOV
+|a|2x#)Nr-??grxjBuVFsg@{GB46Ipsl<iNCW))%L3vLLkDn+zi6YvKAPb4<TPImUbs3=?+N0+s?v{i
+zUy46>RNjju&I+P=P!>4CwYcJ&%ahXT;hvK-{D<<=4?)5MbwImteB;uZ;Lzj$T-^1Fdp__Oi`c5@%H_
+16UM3?ETfT^rTWrFF$76uIkprF7ukZ5|l1c6YWPD=rbwWiCI$RxO=y(Nqxk&z?}$tw?gc;jD=UUGFuK
+vM06d4*(c(!8T~e4x at N!G7a))~Rc+!S-7tgRGK`g%eA_2wkd=oIyt6{yF at _tewZ;oEW=PPh6vK_Ux#V
+FI%Q0$P at gIbdJ%vNZ%iqU5?4Q6U#C-dRThP)5C$SHI}wiXKbX{M-&tXL{)FNLGp94E2?O`c}i(?T34i
+`VI(@8mnCN3nn_8Dk64q4cb;Bm9D$wEkW7 at wDuIDGM!k4|tPxdNcW;?_Cm=MrQ9M<Qmmj}BINs+7FWN
+kdB4pg@^nKkwAeZnCfuWM1XPpNucPJ<;FE~IAr`4xd&ox7$6Dg8`!<*bMvwB4Cz+!mWx^NP)>8N9T&Z
+seCpg)iL{YE7}JeiCO1I9#86pM@;9vQU7Jy@!-H|LX6dxh-h<1btv;^z0bD+9XqYgrdEK7Unw34!6YL
+}!m{m at OJ7v(0tj&g&-VZ&+pp!^9WT65s0QWw2lnZr4t%fTJyUB_103h!21sozs5_1zTNOLdA>tFiL=r
+NO8zjJk{<AKuXy)lhS92j4+>}Y)YwH06BlbD9x4`h6ExKznow`UQ3G@<fD^hn7#2VJQ{=ha)MaS)Y{q
+4V-v%Rg=_a8%^{@z%hjs?qU;5&dn+>+3jMgUC`mW4?Lc*McnQm9M46Q__<3%{MDxyS5z5|Y9kNp&VOr
+knCg|3Ee-IrPQ91=BQu06Teg1fUZ&C#VwC1H-WBtT)y}i!{9Xhaf|9)V<xK|N0D;=P-IeG<@5 at 9pfIZ
+x%9N`;yG at CIC~{Jr3~Rm__TCwMzhqaYZ{YZWeSgTnw&`giN{eGAhl{nz}Q!=VKi at nbP`KOC?`MeqjUi
+KkRCbU5W!`+Ko%oRk%r_LAkMCDXQr=42W86)rSHLtvS~<JLvSV_su<IpX_cF0AFd-KxuK6%U8t($iym
+w1v0KMx{h|cq?H_><}c27wZF-svqn6 at 3>fHwF*2%#Y?k=spMcdFK$vtK6WXl=i*=lxPvuaZ_UaA6CNA
+t<%Ca*@`lB<t}thzBnDG7)0E7-{`(ZG0Jt-3B}JEp&MwnDEt9$^k1?=>hkh!AGy{-&^rJn?x&So3p*}
+F4BY}9LvztgG{m7G}0<cHG_EM(s!I8Qw+4ofgGPTOf;zHk?h3UA-#>hi%%Vfrfw<=|fN8QO}(zBY!)}
+2 at pG~@VGEQdj|RU^e5g(~p16mCb0jc9`nUodPB+u*=anDwTV{Md1}16eZy^Tgl0n^t(?^?jMLTG8;pI
+RmPy(OK0BaoU!2o4}uBmV1Vz{*#KFW!BH4O|?{#Kvl+LzH21X_K#j0+7Klmt)VeIq4!GP>%(;n%Y^aM
+C5s^W6XHgf<u?VM-v_D|PV@(KP82@^H^X)_NA^m4i<v};%FmRm*{(mgfwvw*Sa3=m#4Ib^t&{1kbIA*
+QG at sGP{k4s8l?j3qjdIb63iC>z*(?7Y)j6MjRz`<Gi#<-eODDL~Excv+;2y5jyOnzuoV^EnO114xe<v
+U3r<HbCl3_PbQDZyn9W&f8GK at o$LJB-clPM)yZLyk!$8XiMcF`4<T)5&B+76Q$@S7YqCg2yl`M6stiw
+}jH+C}bY{z>9<4B-X;jp_cldKi!5v6FD&d|q>~7uHqEl$@aQLhMKh at 4+aHOY(`gfYb`pFk{npcPya2N
+p_vyqAZ7Fephxmq!Xz{ukq?m*A2DYv+f-71PzDL*FI0+l`*t8ljo;C*XV_~j7u3&OWqthRG}K2>z5_$
+w!&P{LW-i;cHmNHoSx6y1GXtn&SiO+JEzemuy$+Uu%J)F^;<SWr;O)H at Uv>oecoEv at -cAgn&%tKCJs2
+#|Ja$chPi{Bchj58e~Ni)v-P5DSjZoI@$Leu^9O@(ec=GU$0We+P9|bAX(p at VL-vL2)`d=BU8oIy?_B
+Pon;1#0`=x##gF2WFPfnffaEiCjoDwjln{?rBE$K=(3J`slmaBAh{UIIAOVU at P6MOg8y$&U6T8=9(Wf
+R_$(z4?s(XrvqV7W2i=Hj(x)annQpk?rsBwjXGNjh#*`d-{+O+E*m!w7bsF;J;$-PEZlPT4ue(!sbv5
++2F&C0145B#lUB^Gf;d?tSiVc0o3uv1V+HOY}wD!Dwk5)y0f6X<PUXn4g{{<t1nY&z at c1;x}J2rl|ph
+4GdIYq4yy)B_Ne&aI4#V*Oc1Vut506B;8%Vk6zVfUZ<#Lr~cyrm921q?(F`y5AHIHoLkX-y-?+StUJw
+5Na7VMPf|rdTo~YsGLoKgV~7$?Q=BT36Obx&{}yUYKsFrT+2G1_OWB)@6&2GJi#flTm$*1}K|Ao36+c
+ at h-$fAjsNqVbhZjeJCR)ont-S)DD(Y_NtAS}h+1@#A`WIMcnK*KnOvnghHRyOost;=0S?;~SgJo5*2{
+UMY(a6KDvz-r}ikBiRpmmCchA=2$cEW+0)rT+rF9P#jV%biK7FzDf&Y;I<Xz)xim>DGy4+<W-*<d$&v
+$S<sZTVVPfV#j2Y}>R$*5H)_6F<WIkvF;qAXY*#`(7p0b$S=Pziq9!&7oDt-(J1t=`itRJl5OIiguQE
+Tdfk#wUO30K-e0xXNHTOkY0J>*nCdy9BaNP!vzV`VpKmwR5)ACIh5bSdWX!H{L;2Mw4Oz)(HpO=a2zg
+g-)he3IWXqy6-+4r5GW(5MR<-oxQ}<jJ_CB6|3VANXB5~wk=!I<$vq89co?~+bKhC*hWERMd>N4VID#
+c!M#h~E6|AP at hoc~=Ps?iu7nEZwbtFB^>&oY4Cf2rz=Pk)TCq;e<RIWBcI)21Zg0MlZEDioSC=FVR?_
+p;+ at 5+@WC>`dYNx?0`ReraoaMgPE<`;_QG9})ANS?P_+umcHy1?0f)VvOD$C;%|Jh)*)=e{Nm4{sa3U
+QHK!dpC7<QrKpKV#jLxC`%dx_8HO$3Ga*^VxZoFVvJUS9U94^eORua8o%Ck`_{HmyZdyi_Gs5=&^DO%
+%N616{0S{1<z+A}B>02SP>cdLFthSba|n1)T@@ur|8)bH)KYsLIzE35E4}ZYhe|28FRE$<pnD(z3 at 6F
+-e4Ip|cA~9M7`x3WjnsS=6Fmo^;ipvs73TcKV&`%Sry8qLxnO5yN at uLCMD3=iOY!ckSfH#}c>Xk*QUf
++{S#qSi8<UJ`S6IMAS8-qH<b^&&OePo}C#kcWw9>hvJKDL=-gQ0|<>QNdt}nVIS!O at bJ>2Ejlm$U1SR
+ at Mm8pWbNKb~NuhWXDX at hXYV9M1fMBs;cyAS{%JQc4Ml&+!ShNAet1SXr9;`InLA46c5Y>eiC#9wxxCR
+r^6(on@?c7RFjT;BTVaLq#{sSV at P>m#`o6r47`rZDmd(WW=(Grn;XxREW~|#!#DmCokqD{INv1<_cI@
+Ch+mIL at vP30@)zk8B^)eWCR2$tn8maLa_Fje>O?s=iej+B`NGDqpQa}?~BO^1>M>6yI=me at AqFQ5`>S
+)5GVhjGcy02s~Hvo`-7PL1IDqd9#I0&p$?n|0_&-m)!Q7ml`<0bvM~%5M+5sy*i+Fz08-)lya?3 at Slk
+}TOLr|$o(m1Y`kG<2foV(+dNq-UVi5jm5E1l_JbbY4o78MTYQxC>cImZ-_}^(+yer=nW$F*o055r=j@
+L$Co-P3GLTv-sz*$cr&FZ?<(&DBzhk;==%Qu#RdoEc|XNM~6gZ&T~+Bh1zP1;^OPy{+3sUmvL>@u`#z
+eCo>22K6qI!$M9R3J2O?Q*OSyM!kzPiOn$x}mzcsd}>+q at vAbc)Ca^o10^FrRQoIRhw&Asx)5123UE$
+qLnJ#1b17>8=(`)*4(RRW>j^XVGS<RnwS;xsj%>iY(X%CQ_ybak^%$Hu at mYg_tXOTE|eVHf(P$gz=?9
+ei0P|au4?uI=aL>FT5kRVE;znv#<yNTPKw(FB&ixo#nY;Tz{b;gBhc+kPI}RcgG3c62Vm6~N9#z&V-h
+Roxym!87)^!yTr@%_evl0AK(M at N#NiboJhY5A(O+uK?FM%XVYGUFPi<k*a>fXqdYI<jS(s3QJ(X`p>&
+Xr>^(O8oQ&(*&@)tn1-*N`MH~DOw^nrb+mnBDcS0LS9j+yCxzHe|A$|_h6+K$Wtp;W@|M=PuGJ7`xrx
+jqdqI;^+pCq`^7jRWCqhfvQQjE$)Vz^3*8I=-QViU6=Z;=4Bj^gi_U3lh`pa=&g}>i56tQtsVEZgW4s
+B9^hv{X|i%RO$Q2zoKXqn5Jv4?P%(Z;X!v47a1goX&NULQXO0+M at rxyPeBShR*U~myG2N8X--5vtm3&
+$hw8YRovPI4quuK3NEL%Fj;5Ng{!yJ4??zJ#=3}=Ky5}1DNwc))4 at u?iX8}>$Tt0${sYxosTGsRaV=A
+DFXVSlf_{F}BtDXFHI<)iJE^40DZs}#j at D#V)|Fc~<eLwHj5M`?W6W{%F84(*wm)`$d4L?mhJ<esowY
+$7}ch~M}`2NO<7vVyifODs9y#bic2Z02;y1pbJeL+(5i-lIXz`jZUz+uNNuT{UgTnn*X(;q5ztc$P}L
+=c6s$G`rvZfDoM3$t9hUFFtlSYmm!o2w?p)e30%(mSn7ue6H1`C7use0LW at f)O?ki{d)DN|Uh((=WG8
+*`&|1fH}V#L?DV9;1blmNL2<O9Z*;zl#v{&!r at o}89A`9+LbfDn at YfL(lWcql<xuEci_0h>A2Aw?L8<
+ZB>)e>QLXwtj*`i3a#soVplX!QCli*E$s=K at q}*hR27KsjV5Ly)k02zOb++6AvL%Gd+oImhS0<Ud(0P
+}vEDtK*`vL;uX8zH{W3}wWEoz}6%-Rr}&fC>da*GOR93?%@wq at nIaL2op{FWSTb^q2i=UVHNDtBcunX
+Z_=AS|z<HEvu)Z{HnL^r$c(B;&kWN4H5%PMV;#&XP-tQN`W@)hcVoC47B{^)+2CoaYE!>A!K*+4NcIV
+=E at 0E9JCu-hwLRp7lR&P(y$58VdLo*?|7`*}Xz6+t)gG57e>HVtxd5Ff<LWXuJw%*^r%`%wj=QQ*{Ag
+!(cI$iy6-rFP^RDEd&fe%FM!UsLrNV^ij-kP|V)t at I^;uLwxmJfM~!;q8d|;q2C8A?+Rm|=BXXLs7LN
+J+88c@=2XGxwwO=Gc$N+z$_z>>4;nO}YqVJKO#6NFP+ at YJeTYWILuuT5P;+GxDFs<en)BHh!)j3+sgM
+(%$uklO5N##G-+sP at qCQjQ{>EP at xGa6Kl4qmF#s;HD+JVn-z-P*a;@cwJqR2tdGMy423TFz?bx20mqw
+<Dn4a!EVRj1*BcV;8W1*b&_UB~PWyb550avVc@=-k1+of66SmSc?Yl~r00if+HPfFW~%eHBlz`s;VxW
+3##-O_aX$=grH54MGiV1Gwse(XgSV9?k(JCiJxLP<n^$rW(I!;A<hk0_b+K<(8-pm>;0a#rJ6N(|+!%
+0sEeh_~BWCEq#TFVnB<%K>7I6T-DS+7Twe&lya5Lp{e32hEdPmu47{v?k`dr?Y&w6|2p^U_U(Ew7_53
+c^H}je%yuHSrS&3zxOQ(xR%}MKFpemuStDJjQ(b#MEjV}R-$%}HTKY}Uu-t|Mf`+ckf7VKp_6Ym`Vr!
+JubrF(GOKnZ~_Nmp`&_9KeaMH$fPFG+$61C+m=+B(Mt2qBlI#MU8Jl6A~n25V{Gg_rNUpa#fHOG}kH{
+MjW2F}7 at FpA8Xa=rrn`i*#?4DG)4l~SY95iitfG}j4R<!m1Fi}DxcC(|pmbIX=wxMs&*MuA}%I-jL!(
+INmH>ssFyTFwj<V+&!psfH-;LXS7JoN&ABL0Y0L)9As<KmSg~y9VoMO0bV}rnx2?QOnvvj?80VN`ext
+>AV$;ZJ{9MxzwBl`q1X$LjX>KO`a-5+JM%OWp(F*{n=O!!~kf7+4}Vhi0!<3HAZ~|O2u)pnD237LKIj
+~1(^}!L$fO0F#w(+cV#dE3H+?H3Gp1|@n<nPb0u*l_E;z7B}kvn!9sbhEUs44m2pxh!uhC!me1gp%0g
+^QW3>7x**vayzW>;44ATT)P+ at V{v86H+!nh?KHXb%LAta^6iW9Udf4wD+lO%Wd2X;S68EguTbM_VzZ%
+CbO89H${%aEzuML*38&I`l=xUn-<Z%4(HTs8Z$$z+#TwF-U=3jU-@^??mE6U2qpO|%GvWLxQ;eY=#es
+Zu=CI!Yvw0#B2@`=~6 at a*SZ`TGij;9C1{-^Yo$+vqf;K<SvT^7>hD>E6$kkK$mWD;vpeDV{(aQf at rw0
+pn-lg_d97;r8cxSykG!rV~>CZ%|F(WkX4aD?oqcH9u92@*bx78%OpxWbL+c?Kpy)7OCW&~LNWG0ez5e
+ytggpj-2T}~97IxL@<8VF%bX=pc9y2GWND%Y-zUg<v7#lCQE+CTV5mC$$~oN78;GDVY*2L?Fr;^;OpB
+ at k^GaJC1IbmFG-3oPKz##;Y;TiSFNPYYL0Kn=jD^lOPdGFb at esyH^NhMpFbcKSbFNJ^&yUoH15$<F1j
+iMcgC*lqN3t_C^UB6yao$FaR>LNKTCa}KOEqt8U2P&I2&*+nUVGC`G&(<m-L{OBe!uKBE*!lnk_TfE`
+BHh*DwgBt30|$1zzS-f5QXSUM;&U)pNwNCWhph^5^YCGR=88j!7QEJHic#@G+G$olc-G4a(3a1RQ6#$
+9r73R+Nixw%eYcp3HJ*Vg=1LsY%<0ygCe-{g%DkUDU#7<_!;(z8Kj$C913xQal0hzAHGJTU<3jyo6DA
+F7Y(R}fFkkHU3d*7UPgLWA2%_zNgcLbn_|YrsJu<e at nV5q3c=0 at mC8h!PZNhjvZSV at drVaYLb>V%Nu_
+k at MET=s$rO4uN4E_WpD)vMpavxVi|iA!G-^wWy+2;1xgS>!Sl at MC+~(v$f-*QfzRX#2<V(cT`+FdZGQ
+*<~+YjT#3(FBhBMnsHbO!{->l79}Fw0wPm?2Zm!Ul_+7oMPsGbxH|m2FSb+$i9c9>tMlXh&H*j=Dd0Q
+47R;Ss?J1c5M)dbLt_Ws37rp$0nhR+c9maFJ3_9pQCg5Pm?z%^BUE268K?WQd|>s5j&|IC_NiY--km<
+2F~xu_nDG at af<Q?mp6y5tte}!6Zv2eMF%t&FceZI#uW1wNd2yuE66Z~lWdgL7-s^nc+zypO)gjjX-Pq
+4^2RK-p`fR6pjXCTk;9zSGGlYTJBA1ynmMP%k8V(mv6~_rQ{r%RW`S`{mm9c9MsJbqrPB>VmWr3}Te7
+T1Ce>AT;WzVli4s8t!}m4lmHVdU!bVWbFw$%IQbt&NacYHbWpF<hMW239<mrV`r=7DYt4i}?hJS{vu2
+`5#!2 at R7U0OY}X;9OLMIPZ)PPjVE#Az6ha-Csq|8u!cu1H79jl)JO_10Hm1(2c46`kr=_e)>L%UXG)%
+LNFhsOR*sl0WuCN4L6P_Q~ll7r!O+qUjQi7RQ~)Jsx at jgfl-shv~-M1%(CJ*Q2dy1d~>yd+_bWd=gF5
+X;E at 42jH;C11nqB<MzrF89%Wz?T(}R;1$)`N`}#yu<N%4qsodl;42TS&kx{%nJYHn+Z*hHEfI*U>K$y
+sq#L6vq?5bA(y<5CK*(A%gw|r+1?$>IAe+T{x4Qz{qjw1^aBquz3zWp_UyZJT&kbFEX*FoM3N)r!^}{
+)HY*`fQw2(=c0g}C2gpKfhh1Kqb?rW)5-wf3Pj98WB9OM!1fx4Xz9<@dNCsr^Wf8Vq>KnXy=1KOketf
+|+6L4kgRQW*?!1gkqouVEbpmL)biWq~3IW>vVHsFVp>j{fdWo$kfv1c7l?qcB?W0Vx^f*%7<WF6YI(i
+UJ<!+L?`nzYz%DsLW&)3bz!zh+WX{5dPlhZZiH0Fz;Nj+r3vHwYT at G;fmr2?^g5r8g at Ep0}#mJ&_#mW
+mie-Isk*OcoY=Q;sC*uS!4z~pL*J*q;uue5x&`xs!aX_XvmDON!xLwrVQx<8cYqx&@jzEKF{+Y$T_S@
+t?b!y2 at Y?+FcELrNLY7~ObUNz})0L?Olr5Mo;A(OPpe9zFO4{xd2Bj6eGcH#}g4SwUOB3%R9YBH=O7U
+paYo7&=(}^l($H!4M{g??SK<ykVz(71pDxM1D6g_XQFj7z)O^b0d8M5q;Uq3WrS}5e(S-?;LkdCzZ1q
+!ZCbcatDOoQ1cu&Cl?6n$tlP9^~CvrOS(tlcB}w@?d3DTYlUSi$0Tv=bbDHXcUz_cTm=sGZv2nYB_Ma
+Cd};w2Xf=S-j^W at j!~>`7m#FlJ-{^X>1)lC)#E0#<2%!WHS>Z?oZD!mKpjvly at dzT{5~-p=pTctG%L3
+FVYfiF!r4tc8lgaK3T&K1#JLRjDQX`_#ez%*U34hXNNu)CG0t)GMVuWBe7^P at KG_DPjj{XkkO3#j^Rc
+O==J9uvHK61avXaW!z;?joX at 9dbx93>X!@y8<fG!6q98qQ%ERHjK!6(NV}Tr#mXQR@#aZsRYJp%0odM
+Bh=xpW*npPKw!@v=V9 at +_lL}!&Vn at Rqd)mQH>E-*Vi?Dm<j0yxmW4n?fPzHOhzHq5|qR_}$tYxE?fjN
+lTw5yvX1rxMUTadv^Md7^{+h_35Tk%d%UrvJNPw2l63cDir<)*U<{Nxw6D!6GN|l`v!43k+$Af6;mk0
+7|fpMf+XL&SrDc_O7X|Nfp+Yvs6%r6*w=gWE4siJ5({O at E|~`Czea2&7{6)x3Iikl}y{Jma$l*Z=Ox=
+-XY;Q9;MK)A4`m$#Y19YFi~E2cuJL5^HRc$q3xess!?=A!vuf}Z at E0KX<A<u<2 at +s+tCmJ$<ja$F!bq
+JQfBpC&#KTYPlhjJZ{zmxg=(*gCvn|kTw?$}9jLHiPM>-VrzyDWPBg4<T3X@&R{C-1C=a1`I(<C`sFc
+>e^&m9p4J=J*EC?c>h4n7XM7~N#1zYiPDk<OVrB;^Jr0V&)@Nj=&y7brHvstq1CV)gm at bx^$qr;2A1$
+;Sk>|2C0iU@)APPV?;aUv=pI}?yEzwxYq2C!7d1b!g{On1=5AdynuG<{dW)-=XQ<hL*qSXG^uFF}M!X
+>C5OdT8O?iMmg#ZX7)w!+%x(V@@Fo6s(wxpp&@j)6_4z9mQ6c3ymSeXZX0=jmZAVi)J3^>x&oaH0fy-
+^>pm;olrO7t)C;#&8oK)K6F0_8J-8iFsRV;4i^4u<^*X${n)UOuv-IRfxMY|;ooP<;3n|@y0P(O<4JT
+mDbABgbd^qk4^{98i4b<lYzjjdld7a0r{UqS6L(^X6PCIL9U$)S35w<Oml#m2b`%$mqumyJK}wlYSy9
+N?(v7>V1{Q*)BRSHxt6;FngrYKLNQgIS?p~me?R3q`#gIjG+v0+UsAV=DgH(KeN7!S7iyAvJqIP3TL|
+H3zX-aAVyoS$fsj6owQVLqb at lq^K^j?8hTb7QEV2xgRC4S2aJ7!Z~-jo7t^h5NfpmO0>)c%+He)p5No
+MTo(^r3BevlE>t4>tmVPt*e`!S^$SV+qn4d#W<$vA(cr-?ZYs!82ARBD&&5ce}Vpyu4g_M4$%2X>mjV
+_ZNZQU_<mA!vpM=WpbyM3=kk%Qk^5&@G_Cwp+%wz>KLh$7phdONZuh6qjG<N?Puy7Ow%g3OgYb_`3LZ
+=3f)p>1zJ`TZ9-M4)5!#yq;MShovEyr?*+vvu{zi=IH<4`2t7g6sKJFS5_T5|Axgz<r#FHr4ydj<UeC
+$vES-$)ZQGYs&=az at bpZnuPxEu)FKm9nw3R2={nKZ8zmIAGKTj#YbAyMATRy6OObJcTc=ci!{a8TXK`
+*U{!0Zl7Hn4gJ3iq(5{SY}DNb=3Lp{YlTbUQT0!!+->?~}2EsvrW{{p{5odC+lrN1U*4Z!JCDmrV<oX
+5DmqAd~c?uJ->|uK!)2%C4-Zvx^B*cHTRbsp8#VP)a%ga^J%?H-sz>X!V at 7oDRJ;{H(v^q(?=#&748f
+F%EW=DE at t!-ekqRaso{*Sn#gD5;~-0$hyZ_3Hrh0PCGAMl*Lr_hdju6)u>g5$q&#^huXG4#tJ6+BB3v
+kmW=uKW*1FXN!=BlsR>~a;d+7x$#gbJU5>&QBAa6Ew-t!OIf~9f#86$QJQWklWypBm*P)=}2uZUkoyG
+~a(9ZVGcITdVZB#Vq$=98G==OK%C}9tqtTF+e6cjyFaW{#@-3HBV<_ at ajLaHG|G=G2o|F`$7&21Y=e)
+q3H;A9DiAZ^LHBrA(@$+B{Bo#Hr_yqiRnRiFgPj7fkYNL!4g{PyeTJOEG+$GP3RI=adtftjA3o|&GWe
+hswY?C{ixm>5s85 at THx^6%Nc at VbxvvlX8elIRCZ()J31$vZedm^4Lf?x-+37_%j8ZnB_b^M3J)hBcek
+m>kB_HEXy?ztx~V!q$NQ&8k|GWzL<lo`RW%9aW3Wump+*y7Fe?wI4O4NSD@;;p)_x%{bxjjGP+?+Vv}
+!AdrKO5G!kBaW&#y$KWOo7sI(!V`CL2F==2DI2rz*LsU5gQRQF69tOsR%d<TaOgE#~jlAKpI~1;{gwn
+S4e58&f9DId(caV5t<s<JX3x$9%LpnI<TV at sb+~q=_keOs_CQYvu9e5qV^R+uM93t4h1}I*;=4pYz3L
+ at 8J5F*Qr>(yWiVfFoOcnNShugYgV7qbSgw<II)L!&ry_<+kt8hg;hNrHbhFFMM~<8+d}0ulfGRhplPk
+D_Xv?*9SEQ3)noaE!0lgEt*3dQnioH0;B((9xWsI<E`ujL^1zoE#0xQChxjiyy52I_&3RGR6O!-_Gdm
+EcE&yZc8E}f*}3FX at sX?B6OLJV6|z8#JuDldfp2jr~Pd{Jbq_5DIT>mI(s<|#2Nxt@>(6I?=n1#OetL
+b#4J_09=IcRIr!>Y)TR^_gJ-<_bcE(F=*<}{I>gqGTA)j;5{1g151Q5wO|SMIw5ux`hXGznjLv6p>O-
+mbrubAO75qsxJ_1^2e+*Ymqdlf=Ko6u+LEkzsmGBL5s&J%3k2!Lu(VBST(<%-W9WECN&2>Z<RXmgmU_
+AUi<s%5O=Cdp(D<0rUm7Uehns!eKQmwM>(o-q~(U8<OI+;XO<E3jy4Fz_K^5jEdYWj*fN68zvFpk*cx
+L8l%I&xW={WecWnCdBzb6%PZ)`PS=N6SD&(%HcLh#me~lFNi&&6Mm?1WAeeL1bXL_1*lz>YlhQ=*g^a
+I%F<Gm(aWgdM;Wwp`&Ope^`tM#mEVE_m6wT1RCQyZAC28EhjJ&b-x=m0729DC=-qS9&|UeZgW1o5jm1
+TorCqm>i{0fq${TTi^&b3nojnxL!%C}?BbUwe4dkkEr=9nbMhC!kPl>qWOL7sZA3LLVT2qe&h+Ka-Xf
+o+=l^8LnC1p#hEeuD8}-&=B`;ZU7{!{_>_tI~ClXuX5c=?tzH!9fFxa5eg;b9_&H>|iP9FID=3waGkn
+wB6eny^=-jr>x0;Oxmm`JB(B%ue;LR<|xzz<q~Ev#SLt9AQtJ$8 at AG~x*z0c3Tg`p5?4b(bScqG3{T%
+krt at hdDGO*>HO)hvd2AXt*@)W6Er8E!gxYFk^uK(Uc84n|LwPr8rRq2cFO%^1@=w=P~#~F at oH&!@!Zi
+n!J_WY0>N9FZI>ZrwxRaSx3!BL3r>*d5A_7t+`C3X-3i2;kJUypjB!97RTKRK1!%*)@4lobkj}g!z+B
+in!C()#9JsfD-40+5%G=P>Kd2<ey(K*JeBSPFE3FhDT^scF~6cuD;_#5Y*$uuE^Vzb_od{yo;Ylr0uc
+(uKJ=iG+(Av!U6z)ZSB!$h;K(+01wHG4Rq>}4ZvteZDE+DXu6r`ZBIu!mfZ5L at 2=+-Xr1-qzl$)_Phw
+fgW&(qaaQgf+Gj87eDkwK>OH78<R!eqwKC%)m7wd{z1D*n-4rKv(hjKjt;;|N-6(6eBkWBeTnP6``jD
+wJCBukkOiO7^4{Zbu0&Fz67&1%Xc>1{iQE2)%bx-!x%{hDzf!ZlVZ<L_{Ft6Hu?_8NW_Z9bHxrvoz(%
+b<eZo5McwFEO0cE*@FM%1Th_+VeG;_^aPH=lJiX+MOgrCm|Kp6r9wzBfefNK{9RM4upXtBVas^q&CK}
+$Ud=Q|i1 at E?FD171yZ!HXIh{i=OV4a9;xzq052!hIgeI}wg^W%!fnI*A+96UCG at D0*0W5qCS=HVd<Ds
+3JcwXTN;2LMmc|`;eaqZR_WZ>ytQapncs;5|Wl7DSq=#X4lsRtt?(^4E0w=d|(!B*8=*0GJi<^!13tn
+6O6j!>}h96Zs|rBe~7pQMBNfaf^HUlSJMO2IX3VY}wqrM)*sGMXmSVq6OX0HW*_xLY>sleFh#PTsw!O
+k>-h($hiFs8{YL^m>|LSS-gX;91xuI|mvQjS(#@XOpdGB~B#3v9SISE?|kKHU2N7;`n=FPaxrles+n?
+tEA}j*}6?eo8>2Nb at Sa-S-EAZzV_CO$<-{H;!${{)I6dU7aG%V+k@*Cgy*4=nw4hj&R$M|Hv1goZ+nL
+QDi3DeN{j36699eKa3nzH<$!J0l;M>ya9qMBCdDLbRoZFA>$MlqTq{02^yyO_8>eAUJ7X#^bDigBY#b
+#`cTi`e^ZW#6&qCCct<t0iq<W&C*ve0Qr7UnXvlk$_;ZTp761q8sQa0rsGRJl+n?ofwim+O0X(cNwcL
+PQob+$Js?aBQsBVTaw-e4BMoEFvrkzB9V12U5~1wqr&Y={GDwEL$gC#Bf=(e#c$ycO&!djNXQBh3?>v
+n8;#zahujAcHATR_kY^sK2>3lymDE-`uyE1pim!#*CusDJM3-4RPq|!iYB-Hnx4SvA^|n^NN&_05F>>
+vq~3+5#dU&@puypL+zu_>wY=_mhZ_A)W70Z?1-3=H|^O4KtM#HCA(oAQAqTl-%?K4RXrj}01!(-!TUb
+P-sM9|#6XTlDLOro%c$HY;^oII at 6q%ZI(R)|(?7iieua*Ado(=)Qntu1x2P#1#dlyf1g1FrsutcMPRJ
+8 at Pp00U{pA*S3YjVlU#nE$n<7yBo}BnjUb6cl8JYr7I47u at J~-^GbU$yuc at o8c;4Q=1IZT`0T5$c);<
+`Urg{80XzvJUBG{I**fZTuh<ly|L!-I#Nzo(tkt<JZH?eKc2^L%*x7E`OU`$l)f?)=kM|KWKnPFBB)W
+82~n$Fq8i(Ad{^ZRTKg{V at 54K(kaLU_H`Z2GyS0CyL1>la~|(l)xRSN%A=zvwP5w!<JHb6*G4j%s+%E
+6Lw#}c)tC^vmL+$*DsyW0TEs}E^=+_colYNxj1j3_B4A6tN&f5o-S${4iBiXNroG~32RBd!#u+qVW=R
+t?A!<vIEY=kjjF?!2We28EJBm3lKjD^Sk>52rcFmtIev;{Oci(;;~5$@03@>YB;=#Q(_%U;J{Zng(jl
+Ei#wpTx60{BuTOLd~f6~6<S!D&s5GU?oh-tJtn?d++b?woY|MAt=-~2snDw}qGw`J48F#tb%JN)(CXq
+*?5-{5dRfB)fp@%ys6pC4iE>+61g6xyw>lE6u?h5+U_DoVCzLx)RaJGJ|*)EJg3E2o(4MIoDggCtwjD
+`--eWkJ2>SX+9nBXGokcAkN6_cowRYwpWj%xWhNG9(_P#- at yCFJfUqq^XGd9X!$Xz4WvWsJGeqa&WEw
+c`Jze=WDA8p6~!5or7ARwQQZ(PfivAOS*sGq!2}wKtTy`$lL_zp}AO0(zD at UI2z6t9ta1w;&=u-(>2&
+VMC=}Zc^!5hb$Nc%nRua=vvg3rr&v`!;ZlTj8k`UfTQCEWG0l#<KKT~nV`>se8Aw<u8y52g)WhmqonK
+(N9DVMAQL*7jXPFi2C+opPb*_#fU{Z+`qJ)DjQE&<0K8_vRDlH-6x+sYz{0%my_NpieJ=Lno9Ion6!3
+#BS;x&Wc5VFrhSt{b~7PwazIh)$2eFdbGoZL9HU|h at AY`Yjmc}*(jcoGSR5QUf*4Z+81xgo%MC!@JgZ
+&@>e1`>_vNy(%;@P>oZrQnTi3q%Q)GvzMJG3c-KU7-M8M6a+=j7|ZSbbig at BL-sVxw&$RRueP%#R;mW
+b5BMzXfgG~%#G4$gx_HRt|K6NsTX+@`O4vVLia34B&t|hjb?I(D2WOS?Vg1Fl5v{CI>o7E_W}-ed5M-
+}o(>zn_*{9rc@@Q1jY>FQR6daI9cstNu*iPIw7<T4hwZo9ONmZ~Iyf~jTQIL!RBo2M4a%{?&m?S_IAz
+<yTn3s<%Y{x(08Tv)v2|HGzveF2JU-mc1aT8BL=5Y!O84gzw8J!bw=C&Cr==hjp3Oo*##}P!RFAj^!E
+9zs#nx4BoPv~vo)Z{fBbb~NAM#It3ulU3iVMBI5tk$MtJqJ^%4n9tfnb^h=i`w@=6O#37#gG^h_IA|+
+0)F0^|(ost}Q+DRR*ksP3Z-t4zd<`H=dOnZ!{tUtegWIxRkYU(NB2(U)kaVa%t^?aUnqFfc<IE;#8qJ
+Y1QEYM)F8B1<Bv(X!15K6Z(Tbb?xw|vu^cHktLb~z}!AC82#wZWjTJ{VoKu&sSE>zCo?0TZ;%Ach({s
+(rQiLUafy`jj!s@=Z?}W4*xysI7JE3tG(xuG{(~@4r;!6v at Ez8Lb~*Omc>L at 2S`S*Whtp=*G<x<tv<s
+zPZ4Gc+#pFn`3m at C<+!m$XM-y}zzzqZT+nq<Neok}n`kxxhDvmy%xnUe{m<Ino6M>EcOhgSzI@$#?K5
+*!W$3rZC&nLQkt6{|&qjqR4$;2A0L)?0pgaKeZ8_q@<&IR^ki5&&W#uw!#iXKw8hN^z8QzSq6lPy1JY
+FfKGqt at k>hg8EW**>IhVv4HR`7T3in6q0n>0|G-KhQEopvyN3bw4y4RiJF%<jYj-e)<cL`|0Cw6K_*O
+4W&F28XB#n)3Y*JS;3TgxTYJ?q-1x{pk(u_3h<I<*UFH_Kv_y%$2VI<Oou>MS9q?~hdQQLS6wuZ!gCM
+dD;CuNk<$fvFN!W58uQvn19Rh8s&!cwrhs}*s_NeyQRFIK6XtU4wrb>!{b!qk>c+F@|Jb~;K9(3PU&m
+As0nr&Rj>f~P!Gz6;#&e+TN(SDA32If)Q0;VxeyFx~S*wl-bRC`hJC;C<g%p(}C3~lX>@Ymbd*KwX&<
+JDSqfs3!H4iSiN9dTXtX!E4wTWaO&MRFq+JZEAxqw59dqtDj24RW-Y8IiDm5Y$V%z?XXgE&}>vnhHU5
+uWgj5fv at HAZdJ2vCWR$8a1DgK9b=^K@{fY>N-OPa0Yao(5tm|ZXi)gSQ!Un8LA^CLrFi#HV(`3ba?KV
+Ni~(Pgf!s!2(R{5I0{@w&M}>!`&V9a&LEZPA2`x<gGrqHZPdB=lx8G#^eTu5(PC=yojW+k8jrL~6P4U
+=uAE5>CnP?cT89ivhU^?jF2T_X+i{mkb!|<YY>t%$(cOCS^U*)Hc3<yYiL;3uPPM!vj3ZaFGaAuA-$;
+C_Nxysv%#;u|*2U~Zr5J(r<w5i=dCx}>_(B0O_~y{43??Zbe^^5CGX|w1)+DJBLli*Gu}#aWbT_+8hy
+kUh(ER(X2hl;mSQmv|3vRG at ebx(>5T13Ve36v`I>hp(@?DU$h+$d>${5aTk+VFg#uk5pL{I~K-6t~Su
+A!S)Wc{#)NqTQtw|nB$9XWd-yPwgz;cG<ALg}?yb{pJ7y~^-(2rCs<M=4rDT|}1KUolIx*XrfuUiLoV
+#4jCqV{fWC8J?aFkI}$AkRT+pf=Tn~@k*RQ%uQ=6h3X(V at UZbkDeMk)PKHqpPn{p6Y!r6ulCB~XtXx>
+Y>wzKBmAP>9-o0Y7RhD#z!O^x_B7wT{xVyXa?Y>KOeg5kCe}1=L8xBgX|3Xwc5#<ZtA^)plvP)UhMj&
+qVjPTuxTENSu{<F9h*S-Hd&6%20U~tS0RFy0gI7WD9Lt)ZLnpF8X6z?QWW$I?ce>;Q{)8n^`E*?L$G}
+{D%Ik^_vEfzJ+(*<-WJDrg_pLU;4io_XGph;IUHyZ7pn*$C;B*jfb!J)smCXM$J1!#fh;14CRe}5y0`
+8e<LnR+RW3tYfyIXpHA>D2Erht0>kqKroheFZdUgzU%Yje)f?%xh<mb?8T~rJ~Svc!YzPjMig at L4a|Y
+IC&17dQmaqxs%Vw``L61C=iWzf#Ng=6P8{1tQRNj$l$R(?2X3glOvuwrd02~W!E(B(&Gw$!wF!9&F1M
+K>juT2aQfHxe5n9gpTve)g at h|u`hpleN*wf3AqUdpL*eVX1j7n6EM_OQ7)x}-AJJvLrB4jEaT@#icz|
+B0r(9Ut!2!|Hjga+M+J)|}CczqcB|eJ%7W at Iyb}+=1oiSjDC=|e at H<YThKu{>q0U!m=l1iL}iDoQ275
+6v!ShtGp3y*1O+Dn(i+0aYwhcmIv+^L_F6f-$3RS at vmktS;K$m`6)s6N1ci!?jN8I73mq+&drLF2Krd
+Xc}@uXZ-g6Su;^)12Y}OB<Nw at njd`^m>TQ_HF<fD at f;nTZ>dhM|AN4Fl_A-gN-KSMSxY>j18CP?2kyx
+XSDM;!6nSY9Jx<e38m&rDqLieVoa05X$KKqsu#xx>tEVX4_qLkxP|SRe&X(|>lfu*03B?=!sD&^i?UY
+CwN`QQUN3l5lQ}I<pd2%_402(HWY=0-CfboGMLD9Pka-QQ>z-vaD#;mcGqr5q=Q^P;mU8`71++$5FRx
+QLv#VKKj5bNh7rQj5FpD07v`exsiz~?*5*xUFpWhaIyW`VEWTsR*Q2H515$B!bGa_`VrUj#bA%j4}0C
+?lJJYWA^a7D*5d3Ia0ZH-zFxEIUPO5T7|`?iSKa at W!C(Z>(qs at uo5nT<ZF>e^)YQ^)_7plf|<j3TP7M
+8oZM at v$fwt%AtHQe+UV#q8vdMlt;TD0bE#5pVfop-t^htK~j=8d&Ao?kmj)HZ0i#nN$)@bG+gLp%R)Z
+>z8CjmD$;|N_|<4x19!Dyelr-%4wX*Xy(7+LjM-)w*k`|*006?Q?B2;pt2N$Pr8OpEAB#bas2o-d at bm
+I-5RdtvbmuV5t_55((sTxeihshm0o at eOP&3pq??mdNrM?dBEOcud4o9CzzZF at O+gtM4?*gCS51MLwzR
+u1?Fq8yD-iD8tC+a018pmeo~$3d3Hy0}+V3A;!mlul at lU^h?z-{Hvu+%(gsqzAvF8SOQp_=jE?H?&{w
+dFvG#<97 at s`tgt93);t?>HB#mmq%{#$dmTiEo+^qszc4Bj!c>7ef6#iubr9lgRT6htq$;v_S at a15)hI
+oV+wOyW*sQooX^A{1p4t1c*r1Fde^v=>I9SQp`YOj%9y8D4k7_hj3v(0Wbn-p1XH+a#gc_aSYt`xzaf
+&9NB)hExQwBijMz;H2|Xe3P<=J1Ji%63 at 6{a$KT=oIQm>i}7P$_tdBdaT;O@%9q<W6yLoe9-jK~l9c`
+=m56_!M|c0WcL$zx6?7e>rWbFr(7HpUz}+cg)2BbL-b^a;!em;!AD)O)t>llTzNzUhX;8O0U`Ug6oK9
+w#i3W|3&doYDlZyf!WU~)hmOFSWNH5*1i4hgsr0K<Lv2kr*Sdv|N*(b!a-Bn_cF$q-<62jwXR&&WrQJ
+XO8)A+WSkNCC$m=`lPB_pm<*MMpSLASNBk<8xb>M<gkm6G_kPTX!_jIv`G*&&{M-HtIEOLM*pWopgXZ
+gL*aiCm-FVDNV at TudZE8HviZWMQl|Vv3)bux*NNozUG at 7dWA>tR7AW#COUhS(R8pPaHs;oY0M8MQy%|
+PbIEa9TT*8(iME#hR(Hme$!L`41lP(E_T$CQ-V=!cES^Qtl>aFoVt)e;6tw4d>O{@G-$s2y;(-q{(z9
+9`;ZlT|8O9+Z)M=3I2n*so-5{U#<lJH*go6&cI)--{?R|bd%nMOwEf-ItGz^{YMO5+cR$xhGwKy04S<
+#(6&x~fOeODr?T_!zU(<``9{gov9^7is|Ip|povdy9NT%xDr_cYM3DZEs|8oSn<w>o^QjLp_IU_2Q<;
+_6J=!*{I0cI28)s*75nD2Vdk~6W<y4w+Pvu8NaE~)CJ!OZiE)WKVlW&I8<RvTH~3MOVY$znv}BR#sMS
+qraOkS#|lH>Yrh<1=1baq at Ij9KVYO`2QZ9D*4{bbI#<BCH62Wj{a!Q4$^cEs0wCWpCcKlF?;j8-RA*a
+_N}w>6_rKjx0zggU|a-(vY1aPJox0s9Dw!i`SPztn}ZE0`Ja>~0nOi!%YYNbie1Zu=rBdOHCO7kgjBP
+!I16In7G1kS-iPBfPtP)sRFsm)YdkU%n!yl5YM#5pS<8SymV7yeijCO=D&lAP7NxLModX at b<63u+szo
+u%C~*yGVmPM?+b?<8bfH_yWQ&4h7`^7{I53~0iHwcpkM-gRb~U9qJc3x9vWboi_I6hI6!LN at nwhc1PM
+t1lBBx^<6Lh5HgbLdi{%pCb2VBvG&M&iU%2aPkJUt3Fdz|(wUYE6JUPD*63(O}-Az4Z3DXHY;XFZqv2
+c6Z!noKAqH?J><AIGuj+jN$WD&9?SvdYfVkscu`maXetx6tculHo-Q`E0rfoqMf`M0 at kW5(?dh1UGcd
+d8ygzwdT#6)$;C?^FecGUgyJ4Kibe{<gy3aFuB4;wfo-7%Jf*PrU<;Dn|Uyo?zk#ahoYDxMJVuM7cCP
+;qVcjI*enj5eJ<?J&~4sa6(*a{^B2!{UZ6KrB$*jtk6V&;!k;*fva7{FS`6{!&d#f#lIo!b#x79 at i~x
+A8C|w6Y$K0v@`h|zbP<K)%!{u1Cy&7?^Mx7VCRax);AFd&wzDrfh3mw~mBVjTr)M(KN!$*MvO1S$?!p
+j}d|C3m7>-DmF{jQ|8fSP8`d9n;+YKO+(fbmid4j=nwFhs#oV)UosLI2_T at xu=MfASUn_YHnM#jmIQ_
+4E){1!j<Is+q20nZYU6{2EJtjiv9U`QitO-+-^%HUh;9-&hvZw(e-ZTNtZ7OV7|J<ml~eJle@;!`b5d
+6qA>upL+B=h~(iJY+A6A$CDr*loL|-1nHzGLk(6*TALex3&MU20r8fOcrY}hGH?AYdh&83qlcTAOS^R
+`A=-Z1UAfmWXovA*S645>0_AICFhC9`;McYpEs3_AI$lFkDX2jms&6_73&Uw3F}{u#tQs5QV}FL1ZFU
+*I7&FWaXRQ*mRFIwbESqWKZ`P3o>_Iu7Vyjb38c0|5ELtERz0al#!H<&qk^dVM%P1NDJ5m*mgY<nmr2
+GBu9q-K+qikCMTO-MX{tB5JRt{JCEA6=b<bg}pZ9ri$G6>-m!yeVaY<$+~9Q4cn-r>rVPG{4FLDaJVF
+y-D4r?{4!>fM#FAtR54ft5(?f@(OhgV7!?$~qqX2mJ?8zu(U<yJ$|a5FR{ma5$b!mXQNZDpiVHJ~(*O
+&kyl&Kj*LU$`kk%J=yrI-;Xc*zr?XewsyNtxL;u~Dy>%VxHq9Q#S+x+cfAhj`J>Xz5q?d}Y(n=1TVsx
+8lGmq{X(g at O=>lx*AOQ at 6KBZl{l@>uiMhOunp(rJU#d5AlJosnnm at X=;EcWy{^e<$VlJ02^3c0noa*d
+uvwZWi-S!Z0DC4n)Ogl^K<u-+1m>b)V}$f;KY_JZ)}XbjT)(NVZA>9aG;X-!d>__LPlI|@QB5~|1Cv>
+2P>%@wc+7U#{M4npRmDVc=72Zq68Sme>?+6t#kAZIzQRiPO{O at grN+&ai%Z8bZ!8(Uw4E+Zn_c%=~si
+3+Llxq7$JJT;hpYE%t$!gMLB76}hiUPF450>&<6dq3_fqLDZHOWh at +ptaH>?TbgXS^#Ze2oqf6d|~I$
+(js1;>#azqI9sdNvF>!9?*lIe89NMJ;Cnl}JKOug3a5tn>E~a5`8f%;o^Crum=s!M at 8`WP6?1`bi7hF
+yD7z=~bktB_D|z}f+1|dfToOD at f<ImCr;mkpzPwny-kUdXZm83YK@#laaIJ-SP0D`*P)h>@6aWAK2ml
+EMt4LrT2aRR{000F8000;O003}la4%nWWo~3|axZdaEp}yYWN&gVaCvo7!EVAZ488X&Ja$Mr(Ms%y#A
+ob;P!zx|9wDugfI!;E&q>o#X)K4-ao%&DpG%j%a{)SE&=C2 at 6!z4QVQaemgg9LTnW8wML)b92?sYiTd
+hg>`j^`set1l>(YRI5cWmyzQY~bp3i?Uo7z^iv;gIs*Y+!`EKH?+sj)%^pu2ZP%F42j*MOn6pT<DG(B
+<!T8uR%<#3jRmq%lp!BjgN!oseOy`AO!#+4HldbGE+-&06M}p!l$o<yNl|j6c9-A~CrpC8gQq)?2hD+
+P4MKEc3APKI>h<BwT_+?zbhU=;S-ub at xC$F0Mgs>&CI_jnFPgzyLDmOtj9^L?c+d38#Y{Ff+=JMalUt
+)3Y*`#}9XBaHYHZtzY}1KZxBqlnuu)3ISSi?SKqwXUC?y6eUmLVCPENb_R>Io`KA%<d?=V6~*mku`#n
+ODm6Q1Xt&S+i`hCXME(XLGK`1kE!P)h>@6aWAK2mlEMt4JYxyb8|=008tR000*N003}la4%nWWo~3|a
+xZdabaHuVZf7oVdA(ZyZ{xNV|J{ED;ruW;=Tn?qiw at abG`maDU~MuaX>Y~tAkY#O^G=pDl8R$={onT<
+sV}5N*|{Q{akyCI<L7;Ue58DIMBWzVPVk4dB4>-!H?QHpugERkkspdIVPbN01pmm7JZ8CM38``zBx=p
+bMM-1$Q_sxFFHA^Y<m4<|kN^p$_0)9s7lhaq71;o8UMNyY1{hqDlxK{vr<j$B at SMcOrp!3aV at 9@Itu>
+z-B}9y0Ym8#0D3DWFP{LDc6B4Rwq1Q^4=O-uI?KY%Z*su@}Cz&CWCqG`jy}Z7=d<_EE3x3WsCM6N<-x
+U|2>}p472?E7*1!87&OA0~ggJ3YH3KV!NxZ?T4oX8?oTPhgBBwQ-NSCw+?)rbdL+XP at Snv?0p9l5%jl
+D}QtUER$Q<o(tC4>v#GllK?5w-?v<SC at C>=9av at xqf$be|2*WPv4V^>tD&=udd(C2?J{ZANEuV)Bwcf
+Xi1i6v)wV~h>#XWBw4bUr#uGL@`s8(F!E45GLeHuq-0{lC3;kXfC<86e8Ux0dT5|mIGF&;LMS4Dyx2@
+qQEW)b%P at LmFrX#EX~~}&O1YEGSH(B1{Vr(CRy6)RnM{t5DBRE|o-1-f&cM<f!{Z-2wFc9 at 3C~DUFq!
+{Jku`k;=Uen)7*2k=_-FL~;_99($?4*oH{X19`scGZfSa%s{H(+-I8LZ|kaKc;oP6HS&L;#u)9F<Iea
+GTLPzA!LRUV_}pfbf!m5SzyQ^lk<!Yx9f*^1RC7Aw8 at yOIjJAqM}Pl!fGoKr;dZ)rRFtl9Ebkf at vQDN
+_I{@v)#53iFfsw42>dS#;VlDT@{d5-)Ys+ul3hpMyMo at G~)>vFjw?RFXJi6SRQB%W at HIA)N5jzWtb9X
+;=|%&Z8rR%VYh;ok;DjOK?-y2q*e+7AVdlYbIwe&v}8$?2FHzCTCdn2kh&6it8*|5QK%q=1=c#3bG at c
+z(al;jjohtjhKgm94VC<VY3Ii1OQ{NJ5N8lV9Ul`pjZP?W6!Dy^C<-LY()mD8B2`f?uZtWufGy?9eD#
+w>kd+Ztifu|2<<(}z#6j|eWpp=2g$$#VKe1#lg{eo;hUb=`?I?ZPyBLa%V3=)So(Pg&C>z9?Z6EdmLW
+zc1tQ}djsWQc}ObZ*-p%@oW=WSHvk=Z_>vK*v at y#Y9miigqPfqhRQ<i~u2<#4}S4iS9f5DB7H(9R<aw
+J;h987SmmV_h1XhV2#cbi$4ijd9Y^rgw^k!@`XFk at Z{;unSBBrqQfH2dNwPp>)9uP#umnJOt||_aV}!
+zHrveIB2~y^gxGc;)v^+9&#8G9puzLbWYnxbbx33;N$DhTjbkv9U&QV^%EZCsy)^=G+wS=*YzlTe7bC
+O{ALXgVY|sLb&tsX&AS^y6KE3F(4y;h#AFg#G3d~EA*4m^Omu=ZB}RfYA3nC@`_mo|7AT^-opx9u?uB
+`xcd}3q(-ak`k*pomoBMwhUITc*anT;!1_dn8l6N31t6>_yjIYk<W|dG<YYFXw7U&!rxm}P3z2TWY8>
+D!&=`@?!eB~Zi4-Ae6N|;_j1I!MF28NP1G at OZcyxm-MXw<q{eURz37f#H$mDg|Y4%hLcUKPoVvC?&+r
+wTW~c>40x(=Xy%FCAm-ucre6#>?Or3FC4b5ox^m4aD+PtS^$sUOy(zGqOtu*s>$<WtW~F&#rp)SayM4
+d$X%k?QnM0tlaFvK_|P+kq%C%Z3~CDE6Unec<N~y_ox_osF!AnW?Q<GK+v8v_sH+Z84eC=g+7Y$bZ2O
+>V61lJvc*ull1ZNhOrN_?{hH!Ay4R$&;yHVSn*ODFw-~*Ve$VT+;250FKzA$~ZeMj+l!8IMtYmM0tOG
+F8mnTpQg;XuYMp`G(>2!LB#av_SYlQ}}iE;Ana%>k4o9hPr)CbKGfi%j#KHsaWR^orADc(U5eQkwLdZ
+|}w&A_MYKF%J6&C#LNGcQavdpZ5y6?iYEK|v8hvkW#=C_$`ED4!OKP9$sldqJxkc?>wAo1%g}3GZ;x{
+41umj6o5j@!Ck~6S05H>Lj)|&X*V2ppVJi?+Ng#tk(#5bTN~9$LG08<H6Z)?mxiII=zQ`^vh}Aey`1t
+ciiwY(=~=kC+)r(4?98VP_TT{u4az)F=#Y<7)$<hj%u!D?UFruLVZPoF at mmHIwrwb342XWXES$u(R}|
+(7Vd7)%Ci_a-`WPyjf2+ag}ey3!2S$c<T0qd#v5twjuF>mfN%F4VMi=8zTjmIZ13N-Z4HTKta_=w0P9
+vdEzg0a_oA{^%5_m?iMz5nblOXC8gwvxEv;+Xa7|^`3-k at 37yoBD+Hp0#X!uC8ihVf!*hTKJeHn!_3c
+Fad!R2z at 9<>J0_ti%4G at tj6YnBakUPii(ED2Ua0ktIwa3IA0f*Hgd-dS0BH at F@=?P|;#UoWCFT=hVi;
+hlT4(=W+I-BG1^&=+-1`U$AL<=*rgn-4jt6$biF!T~0R3X>MW>={z1)sQKw)VuNLsXptN<G2%W!%*wF
+tMMirFalp6+T*mh%Q at sWD4Ly<`wFyo3BeyMb3SAAn`+!(o{>?_=LpYTpn!Q#+qg%+ou>9#%h()39p7!
+kc}*427r^GuB}?XHRVnkGe5#~*)lDVyGBjkiPli!4%vg7|exY+IL?K%5PY$m)jpDL9bbgr|d|vQgG5R
+Gp^LR$;8lqyOL&uBa1!+~#e_!ci_+nmT4<*zQTJN)Z#fc8naM26-UX6K$MW%Uq*5qmX?hF?+-N;4W%o
+CQ!w1n!Z-x*U~6ER3Afph>b_ueq$uN)XgD$r`Aybv4cw(6ACh1WW(G;8tq3AuGdP8eRB=&Ls9PuF$-R
+m5>6 at COb_C2$TQ*b|E at TobkmwDsG4322xPi;|N}c2P&~8G)B(tvfX+;QL<II81=ndF~``O4;1|R%@ia
+y*0K)YdB`szc1mfr|Y->vA)o%v(>VB*y3HKJ??nlpaj~^#gom8T7>3_=16U^>SS(CZ!3mgGqol3s?wz
+1o&v}F(s}lWelbDJXH^pZ6bh!72c7#rEI!VyXn-EXc|1GNl5{6O6GT>c3Ra3bJT2co!w5C%w04C&C%-
+LzpA)U^`M>htPJf?<DP~^1GxlSCIt at P+JP+ERtkl$zS_Q6Zvu7yR7vmRP4Brn)(Q%r&@AQq=E_+GY7A
+HHjobrSz04Qo0^5&OfbsRqMM-0TOJX|vnEgE(rT5@|%U#WJFHl9=-A2*ikH2DCg`{>%sVLtgUP)h>@6
+aWAK2mlEMt4NtxO<G7D005G8000sI003}la4%nWWo~3|axZgfcrI{xtv&s7+qROw>#x8m(=qj)%1fNI
+bCan%RcxivJ%63#H0|YiI1~w4tSOQuNZWdE?tj1C1wewIlI3_Z5drKj7K_DV at xkSAIQ*OiVUPt}uvMJ
+0#}uBUJLbhcXW81#Sei$I#Sy#SW^4F4W^UxOx5MFZFnGmI<7Ar#ck7H<-iRH)e)IZ!`0oeyfk%J3n*g
+wQ##0eTgI553&C^XFL;z$0!PY$G%PqT0-6-S!n5|OIS-fK2+D-5Hm}N0kwPgw6vv`@gL4>Tiz+AEgas
+ZpHfslw-*`u3s;>;By_5v3uGC%h64UaN6!x~pX2yL{oHD|+x!WfRI8lSr%&;xd{R2Q<x09u at b1h~l3z
+(Xoy0P at 1zM?Q3M7;FMn2cnZW1ds#5xqx;cw_~=6{a}T^oEn$p%P<h at G4lf?zRWYo6qxDp2(h3o{|Wse
+c!;b44eTLmamgV;VLb^7HdCS!nDe-fH`Uez$kQrMBdC at WmLG%YsMbHZmthVftl}_?AEgdNet_)~@2UH
+4pwwN)51g7LyFH3C;8^m3eUX%1tct|i4MVo%N^(#&$l0y5Dn%Yd26_;<Axq+vDy_HHmP~w_vc=WMn=h
+03l+70GdVclW>}-0*hLZ)Phhz3-cJt}#^9=)t`Q-BE4|esDO)mdn|Cn8#joI|~>-luCU{`Y>HoLe!pG
+_fmc6oaK`D}LiEBgSLmsdCJe0DLr0kSt&RHY&|n=X*t#dLo936hf!v-8=_A7dc(advZwbU$9r*@RtB<
+~Os`&*zglyZ$`CzFJIyg)<<0IlKHghkB+L)5{wh>V-Tu{S6Xq at o92?j+Ftm$!BQ89JyqtSJ!{cXTN^B
+VV|zf&!&+1VG7($KAcZwWze+K^U3UD%+4kklV7KVbp>>=g$O8lWM4i_F%#>Yz`xU*+0`XB=Je|FW)8_
+Qv~_+{Ab*)Hreijl&lV__kMpYwY$gg8aIT09U|voo9Ta-CZvX_-pBK}DBs-f<&Vkwjk!3?QxIGxGQcz
+jPS>;)ta>rr81~maRPQ)P$4 at ag41C_tZBQJ~NQ0R;REKMaN24!@!IMr#fEsC;j!o^_VIBpJuIEC6y*s
+x)=*iTE9^-Dt5&yLf(pND|<0Og>g67P-u=C%DA>>;%0v*4>dBvT47TTpQ~6`Uz}811VSm_1Z<)Ny-o{
+l_to0M2YpGKg03*Vnh~<b)kV@!Rg=w^;nHwfz0 at E&KU|S#QVe-3UasVgUMnz~B$fO?2mw1Q0h%$CMv{
+6~5zXQ2=RK;DumQi){Rr`5Ax8C|gpYyk!u%=~m}1w;4(q3oa(VFJ}KcRm^VOClUOM4|pheD_2WbaGBN
+4oQ2%6Fplm<Ej(Jpr0it-6pL=)an#^Cj{=<MS~$n{$ck6Qa1y#1^y$V1E0tyfO}{n#(|vG<BgsGhy<-
+0@=SVkvbhiSnzhG~VfpjM90;-e*w8668u%CWnZ{LjA_w0 at 2uoQ|UI?Im0uEt<gmmx<hy>`I_qx|BPMI
+vDTaiY`LTSwrdla0zMNjmIzD<(q^92X_{=kpZ|yO4u6TQJ?Mj27v?l*5>enBui4&eCla7Km8CTcc5t$
+)7x)Wb6vGa|N@?G)?2Qit-91^gT$ZlDShxO*u(gKfc?G){k#%w0s`2-(digEL`7rz<03F!i>?2P!a*3
+XX4l03iMK>EyD4PZV`fFhV38~G7<2riAw|IfIE<f+=|={FR9O at agt?YC3T#MaT=7l%w2(Pq73NN3 at B$
+srH&@<NV)@~>uA&w1 at RRNZ-F1F7S6f*uk9HZURu)+sTbgLWlAx|%wQM)Fw at 37Xd?cYcz3)+1G+F869W
+ at msyxhapdkqdl5zOJt&u?*<eL#o<FcNyLLAY!h#um57-5bhur9k>EzxxW-vs`-I2c)e7lJ1SJ{Qax%z
+cOhU!a?-M2%o~;A?{Us!>V#CVnV at e3V&`zyxF0##5+S2NjT($uSzy7#)*Ld4Mg$BLQqfYSfof21N&6f
+Jf$ENPQ|hb4M>ir-a~hNBr^RGL9;pn!~hd8AK)PBfFqdZG<_u7<oV$1&+j<_5=%+%9z<CBG6JS<BvT9
+-2jAU7!B2mRI_7BaJ9jwsf=oRi at jF}3ljz<h1;XK4{n%axgumadN>oMhJu&1j3w%*&Nby$hpXysIl;*
+U&2amVT<T<l){ah=jV<h%N-Evf1!m=bkT$0iY$eXmUxx|<ymffQs^Iyy2KRRW#3yNC(4)c>t{!Cd8&p
+xp)q_Xe)&)moBvasM=1XE142FPZTj(=DPt$;wxq%#G4U)*~ZFQg(gY}tX4b_0gn|#0=tcOOQ%rBDdgR
+!Xi;PHqx_l`+NjlKSHiBN6SW$$#62O!<%ZXnGELA5Y~e@$!9f~l)&HbawEuzMSswpQ<MPyx{;)jGdBO
+<7 at oI*plzRHH!Kp^Y)lZE1 at No3aR=E&%M>&DPQf;dN&~`xq0p0YI3Rvb9>Ep*Iri#hM77Y#c;_b_Brh
+#g)DCJ8VgbreawyAcY)VDV&(Er`K;^AG1{u`9KoU!`OvKSR`k9$S!f~VFQ(;D@@eT6EC)=>>uP7P#D7
+08VK6RQtKkxO^|SJiw1QKT4;q5tJCB0)S#*`_fh;9sbVxE|NcLtHgqtJZlleiG5Z at V97Ciej0(~0>3l
+SO1x$;sR_gp(vif&6w1 at D&#)ZWr)@U$<&RT^b4ceSTpI1{^2li`w9b?j_y5)o6WwyInZB+mUcXf`DaN
+RTA)!2p$+1>iGtr}Ljb^qYo7Kbi%1HqXbWmIepX+%h62Y(*aC5khKmFU54iqvpc5aszTp?yvd*4H>9T
+xb}QX>F^qWO!yHD_*NKp~_`2gkQGE=<`4X5$*(f+ at e8Y_@T9RsU!>kw>e==YfgZUlyc$2lw-E7t!kLm
+#8MeKfp8MnyLaz;dO({_{F_S}S(<~|2XcQC!F}D;v_?@R?Q)&|1;990d#qrA*D>wjf;7P(rYUaUiiCS
+i8f`&lu|QVl at vZ%i0hb&t?Yke0#jnYrYUJ7#g?HM~Yvj7&$OYHUP)Y>FO_g4G%<Cgl%I2>;Nbw{fFa?
+VuDJBZ;o6PobhkDK*03(OlU at J$RFo#{MmB2Jo6LFq;%894eAUT1i$Q4E2VBi!p;7R)&s(o8yswIV<Wq
+cz{_uH6eF_VTi&R#G?$tTqvTQ2pb<jFxr<~DA6kIX5dL4B>xEFstY*rB(eownH(y5p5Z5aa(v&S>0<z
+Y0QVEWzt7SWGN)$cNEP1tpAn>ZP at EVf;1-RueTyGuc5qh>|>$OAf`GT!EO3rtYItz{!VBYEWO)LJn+6
+7tY2_`o*LG at TY?WXrK4!BTy{L|7C7oKK7$8+wse%Wfy+xMt6LN44(=h`Orm*8xvRyNjbQ}U^!H4ns;Q
+ at sep(Rem8YL_u9x7=LTJvVjc1)=dV1 at 2t5g4kxl)I`S>7<I<U>*QyWSh7 at q}C&jOD$&V2UbFyyqY*vT
+q_pM#^TQT6klsFFX8T&DIwfBJ at s@ULLUs89g-(@ny`t#B^e-(xmvkY>`Pt#(){e3&h5gZ1KQ72G9w;6
+s+~l+xES-HwoKQ?5jwY#n at VgY%ag=Pr_?8=mnOer(KY19$v<v)MY?I^`~n>3X^f&_-gNWeH4j at qNJmb
+W_P7CU7)D0*mdkcn1X`g at KPXWYK}T2^~Bm%M>nVP<jg<Mv-F|Ae}_YzW8)=aeiH-2tDcU7|DDXKn<GX
+O3P(Q8z$elLFjA(nDsX~=n7OqBq-m$m|aXSn%M|$m*6|-Msd_Z8hn^8>J_9N72pwBmGDg^hX at kT4nlZ
+}S0(hJl0$?DsErW9e!982Uhwomc3U%tx<klh8;#RnXH|qo#x4pA@;$3KZF#%sc-Mh<FXuVqF_BMg2!G
+`~Cz$`Chc=LuC#lj)d~Aggv3JiiQSwgdMK_~{oiHp$kFCh=$rVDd8}--&=J<gd#$@x(iYHZOtFk_Hyv
+9?K_z0;c83U$|l<-oV=zOj33zgQ|uE|y4dI^$Vl-x- at Y4TTr>m!&2<Z#@`AB~Q=y;#{jfvX>l1<5`vn
+7!x<j*uN$NopEpW^WHizNDcZir$TS6$m&8<J4Qnv9i+H{VC?0>YT>zs==3m*<ZzGgSVQ>9yz5P-A8>@
+7?{1%zptujcK;$JUB!`7#*f95A`o}XK^k?#g at Co-GFIAiA=4k?iZ&Tg{mrUtcXnUZ?{3-c)b~6M!H&u
+48c6G9GwmnRcCuZAP#AI!?<2`^t=~&hLuisR-A%HOSZ`Smmub9=v(j0qB^6_4ZX2zqO_(O0;kL*OH9^
+QkpX;LVMQxh<{o;IneOgX*icmS#-Qs;U-)E0O<j0SKHlkp4?y+LuzjlcR?=B4i`t9*h?g}-xD*mqbDj
+Hk at o^qKT^{Co%I~bT}gbkYNo{>J4E%#yM>8rY5P#)4&HzVZ%ZToIyu?=LKJNpu2C{+M=aEn?-1H5h`k
+9!P0nkSmLtyIq&4CMLBNp&l!p>@O2pq(!&)r<{C#_1*<Wyn(vD00jpcgS89ZQJYfpy~j|vzI}og8g@^
+$cvxT6$mvrb{hqAeGZ;{b~w6Z_Al`g-0%=&fPuwN>fRlQ{AV0Q2cnwr&&3re?gMf2=p{Ah(ZO{Wdq0I
+$-yh9M!dyHbH;)diR3RQ(Z3+u(+{}JHDoGa>De3k=+^o>$=VIoSiE;0?3NUIof;MV?e6~^{frw{e>>Z
+2_5bow6>p|$Iyq}Mq;?1<+Vdsdtt<I#qcDg#P_D&)#6Ky#W_F}eAjlFygI;OuJ)7%cvbJX;5m9N|Grk
+c50zB^}J@<6}Yj4S=w%8W}{`_H(a=jYR^lYHFkFB_=1M{+3cDXec`q~65wVy#c at T1S0BrCo2^Tf3j$6
+7E5IOPIZS+s at Z>^;RiMm)=%Iyi0G3wNM+0oqC&cFi#@;W}2($RdrWo?ytRo7biSwS3q4w=NTWk|6%AL
+0p6j*J4oP>f&UT$c+iWTdko;M>c0aYppG?-L-6l-mZb5M+KPWJ_FNSo(()@3+F5|t8 at epW4iad8&iKj
+&Z=dYPCpYrL13Lm~&ACtPyp)bS4Y^KZj|*{N+W`A%`w~WIJN<<Xxdwyq7^nWl-8Z4}CCJvQzvkQxHwV
+$2EJc>OUIy(8yh)y|U)soTLWsKSn^4m2I}7mG@>?|U+fbqwemkaKiobXX0o=2F5&p~gKXtt|e<6*}5n
+WV#sTj#_zRXeqRLUX69}b#<0Llxw8|BF%*x<d^XWwUZqZ at hK7g4~ubL%X(cqMWde!KtL<?-z2!7A*7d
+{~9s>&13)_gp`=a2`87*_xnt`LY_k?#&it_V8y#5=Y-~^HUS7d$cllf0q`-sgKrM)JfIRp^t#;g|Xmk
+ at IVeFfbST;1h?ChEz!HiLWivO9Sjovz|kO)cMOLP2A at A3wDR=~h^n-Aj|c_d91 at z)?lDmwLVdeoVH|8
+#M at Ct&|KOM-5>DUcb)UV?(>fHchlM?LuB337+LieIn%BeWvz5>6<!=3J9!Ty~!D>%*liQ_;o$o$^2A!
+td%{X%#nnqXcMdErov<(-0v&0v4 at E*RtCSOABecKv=i1YHjER?iyF}-bnP`&Pt{?(p%dM5_))I7E)W;
+yFgTsh$PMlS3FVV51XFM(>;B9WfgMAeP_uSbM&G-gNCZhTP9kdKlndM at c7-9A&<yA^y-r6y&?=E%Ap<
+PmE%W`G-Ec#;jivr#IgR<G7GX#`Q0g2<^l=oNH1yVQaQ%&A0HL!nff6;<8^(yyskYAxT#+3{|A<Fz6*
+WU at BwRWEa#ug`ufs#=*fj6hnsw<fw{_FXz;-!W?Sc!csW-*k2Gr5FeAc4I^qhn^f~Xq2In$ufMxGFeE
+F=n~~Am*px^pi2mR3q%&fQ?<;OI~GEg>r at ryE{vCMs6bQ#A<8$Es!a$s^w`z{D8k3C2AJu#78HrDCR8
+#y+F+(}$}aT5^&jxUgoC%PG58L>Yx|T9RQF#(?-~6shfNj33bLj#2r?VVSfc^{0MR;@$%E&Hp}VBFWc
+6cD{Tc+{cx_hfMq3Lz9k+p<A-V?lI4>1iPH$-5%hy>W3OPe`pnQ|Y^35MpPxUKOd9;l4$ai$)5KCn=8
+BhhXvpt&H9Eq#m13OWHZZ0T^b75&=6}+xZVyM6-UMQNiVUa|il^rOZH$znqZiTJXy1`)!f34k7Z)yok
+|CK=rMlTRTM<w!AeZ)|mLA|c!)Dm3>D<`dO39DmNW$E|%5mrx!gHBB@;?uPCfH7l%)&G at eGNzj<Wf-r
+HUi(z>gtoe43J}0Tou#Rq1W=GhMNkp7=>2g3p?BO0vo$iYl(Fi at kgY@vU4dc5TG33yR>zdKtp^PNYB+
+|;>&DYSHQdq?cB3koHVc48>z;3gg|B`8?f$XN-T at uoCLn?^^cl-2D9CPn1=dC(po?R>2uP?l{4fyNZh
+Q%4;y(oZ5u0VoPU;M5I3NwNbZ9`!Ms&l=aub8N?na<ufUg>~-JL?>NXtHXUYAI0vqzrQArjr_k7sp<#
+5Q_k-_Fnw&+3o@<{6z*fFMp`<FvqGu{hTgGAn!w at C#)uENTN8HeUwnbknVkS0GI~lBFG#RNHpZB2G<X
++egy^_H=X~SSJSQZu-<y&!hiUvVPlBMbi>3t(N&u*z!`CHN^Wu(f4o6MO)sAK^YiNZ;cKE{7)G=DoB>
+*o{Y*CMA<Qh1(Y%NAlF{dk2U=H!*FEdf?CxSnrMh}47jHHU>7KZ`&wPujePz at K?hAZfI(0R0ni!%pG_
+`<m{R(sO at xSTouZ--h^b3dLb}HoSSZa-VJ6L{f8}n7E^<9jdeZ7HbR}Hln_KqN343GQD3-W$dTV{o at A
+y+m(8x at N4U8HrL0!0+x8}-|uSQ1Lv!cD~8P at D+yJ}I!EA}N$@7+{-9vJ^Mb0gmk!NFonPyqp+)q01 at s
+o;&4uv4CduE(wP=%4>Q8Z-QX2Mkc4U>q(yH__V{g_g>Px>{mZ*#@O|*0P0zIQ1d_>+4(76c;LJE%Viw
+1s!Pl>T7U2YUpI~axz{P!)Ulx@%E~XFNcp2dt_>DML`YSEp=6AR&}{YWoa+KP}%2c<6fFr*t+Ey{ZwR
+ at g=E-5azKmnoXYWytV+4saH%yx#hmz?o8AdI5#p2Tfm%2u3EGgt$f{#k>N1*paAgLKUA4Wep3WM~Nq|
+3b&oRQ)$vqtX+A~NW0ZjX!a at wr1vP4a3W0oyjqW8!+c&(AKbcnnxu|^FPSO?+l299<BqX5frIN7po!$
+=}vu#*zU%9ch9tP*TcGf&iTOYY`?%+OmGjta--gt4a*)xafFK*}>N!=qyy>vFT$HY1Y+D^0Oo0;^QTk
+b<cIw at oQ+88KOCBq<6f65L+tB}D}at0H#0qmZfck`AQnWN^Zz;&Q_-+(Eh^s~9!5`nYF-IPjNA3DcR1
+1k>V`16jj6h_IJ_$v&+V50p`8n_Mvz@`((Ed^~#JQXi6YaL3eA^zhk{-r9RTXP0?RS(r*zOUs?u5?L}
+zl5J)5=NIw0N5$p{*n?tY3=I;PL$Y3jK at dZ^T{6NhQ79F;Vf`|{VW27l4r9(o{PBB{Z9^_G%H0g~9E#
+X)?<n@$vHe43Ag&T%RT8$7IH3SDcmRsh7nvXDS;YbYc&n;QJ6qk^!A~V{%Xc%kwzY%t5W!>_Z;v6+*a
+&Lf5 at H!aq*E+ORsdeHnT!>M++%PiTnCVkjuEou6W1P*jENUycAY89;AjQI2Z at bPY7J%xq0YV{-;J?KY
+|WE4+cgWS|L8nN7)pff3}tSiISqzZ8m~8gWI=l<zuGYD5;gwlg^t1cSW&1l002gR7e$Y5gnMv-+JE|p
+;fIPs!RyKgIgRF_Dd34Iu!c4nT>+qFPc#Kk<L4&Lt1&0Z^3;@*NQz37Tm2`8K5l`k6B*=mlZy-^F(Rw
+@?FLr`Zyy at r*CM~xa!#*;H(HK>d$t at vzje!r<en`@PWNazR3e+*=B^mzf(Q(1;N!*xUVUYNlFLY#_&E
+<WbJnOz7I`-tS#v0mo%D`;l1A-KVFFB_F!vFt{#&Npy*C-{W)ci}7(_<oeQWs7XjmO+ at _62WV8gz!ek
+DmH)k+B{v<$YUy2;^6SS>2rgqKRL7$_$k=!jsf`+`T%tEroj#6@$S2wD`G%nUG7m5a;<Du(f)EMQ~Q>
+G=Fa{={2Vu_Nct6E*XeKK;&_*qlbeX7^5`t1uVq`mBq208a+81eFXmmnepWBsHAcS3O1&%rgO6=H8+5
+B**e}Tn<5;H|Zo$Me856JB_bP;k_G`9?N6uCc?u16O2;`>#X1|;{HjwZ2vN!TwhP;&SbHe{d$QXd0Es
+i5#))FpC at WT`h0yhxtT5ux$8<X3UvJhX;s-T=wNNEs~Z7+6&)5 at 3Y>1XsOJ{9hc!Z~DwYg?lB#bqq?W
+U^Lc_qpbYy1X6LdHEL*)gA;@S at 8tHU*NWn5OE7QUSd>7UA&kvgz{jLW(tbR+sU!+Ua>mU!i!1wMCCeZ
+abI+<UBrVqhs+1$`R6Xx&5p01G1g8kIWQRi7tPpLwFoL$vE8Fv>BWbrm5uUs1KLhoL78&Z$gNt4gANV
+u<H}kB(z`q0sTeG3+NrQ-U0S)aIHJO?fwh6 at caz0Uk8knsmXym>p#tH<Iw%CzNwEX4YuT{{4TITP+oa
+>B;CfYLm~sSZ+(B2<gaGeXOg$BTWsj9>&ILa0iPK^5vkUIB~ZzR+{;#h%lCicp9E8)RE&*f#V!ieJz6
+C*V{tiE*C-9`;{JUtAh*oG^u)Eh%P;1q9s0f!84l40%Oz^0s$Op864GpsRrC5%*rWWwSXE5Bl}beS6+
+e|D^ZgUVX`1x(I#yGq>9LoBRR)<)_2Mv-PV0oS?G6SXbX)cAOdqJe#%2raLD9CAL6GNRK!~WP65V9E|
+z>m?6aBo7Qg7BV<@jd0d>%Eyh)VMhH3RXc3Lr^&+kIDuY+wLE1saJ%7h^W`Vt84Oj6MCBnh|r!yrZD<
+R{e(1E57fTX4sf4YMOv(UEjh>laPh9LnEtQLa47UwV3hd2WP6!FNSI1MaitvZ(Sm1lGS3fZ(~g;99ED
+k?t!k6>DS<*?0Z4bUSn`+<Jc5=O;xT5pO`sjyPeVyIJ}!#s7V;qW~9FfF-r6JIb at w_y2WN(Oe=mkl!x
+E at HQD&U)RB)Dn*=O^>r>a%gEh6m}KN_3UvJRw+B_&X1v#zV1VX4(OK#WG!Y>KY=DE)6Pt0K8y8H~ye1
+DvuBX=wL*t{G;q$v6-Vg>M6H;-75yKSA2+!>8k3X_s=A7d6_!Dvmux04(sBJ_L6!~%>*M#G3xlz+D>N
+2~C<L?OWrrw(N5aoCJG}DSV_6rV4R1*I;Hx1~{$}6U>C&H+N(JF$cmhT9lr41swoXfXNDqfPtfWHy8>
+IpXjT5B{u5m|E}L~ek*WiIbMma)9mcL{l<!kly8X4V1}At4`ybQ-_Zh@{D6#~Tiyu7J)joN8p0`bSDc
+Irv5B=ZcqKfv<cT>=RG<ktk{iVP?k<6mTKlvq>byGSm~#P=EW71SNH5gWp>;2*OxiL7U_(ODAb4Bd7%
+!1oQPsgC52!4c~G~8=<axYwq1+OALBNb&Y;8y2a=}O%W_;7}7V%3}R5oQ~U-eo>yy0k*O`dfM;4oWdZ
+3 at x254ng~_0RQEdUXhpl^2#qD4Dp at wpJ)FyE{V>UbNYfzoV%cU)X8l8^cdki9sEIvm6h$Lfv4TCI7O^
+yuTxUmP73T;wk-zqLFj|Tq_P)h>@6aWAK2mlEMt4K}&E>Nxj001rl001Na003}la4%nWWo~3|axY_HV
+`yb#Z*FvQZ)`7LUukY>bYEXCaCvQyK at Ng25JmSr#iSc{jc(kTXow3FJp-B40UDswOpC<ZTLcmpZ2x<I
+@<(f3qHU>UpM-mGLtsg8_lcxNOGc?Db_6Z~Vf;YiO{s+kuyfb0-N~hv#{@n520RWFL%tA=(psyk!ZBm
+1DmX)N6KCOp64 at 6S(SWXB2xW3{?1gP-SehBXNn(x`;b4wOb1Ibj4KR~n2qfF8|7TVMUl`K9ab3_Vu7C
+9VZjRL#P)h>@6aWAK2mlEMt4P{ZMx_G+001Zj001BW003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7LV{
+K$EaCwDOO>dkq5WVv&T;+g~R?dAT4rx*~hjdjno3mxXELa8GwN0Y-*LVEIvQ5%(0nfaddGnr;v(eU*N
+e_cmLsgxuo{5o$@n=xIwnQd?g<lIe?_MKVC%O?jt-RF}6TL7V*0S4>yG^;9l=`4SJe2Y~+4<PwqoVYl
+&V$23I4ji&I~ZZz+V;i{%M8kY4?zS~J)DRGzZjl{pv}G__ at p)ra}V$g6U}LM_vQ1`*Cs+nq53emEh4f
+<Z$ZrWDNdVhBhmLIp6i-CegMxMI489#!;6;fTQbrJ3C}7LZFXxg%EQ5n!L>)bz&V2(OEJkmVB3RMo5T
+o<mCnm<6Hnv=FJw{f0DCMv*DRa$qCBlf at 6G=Dy51G?Z$sQam at _Ex-uT%T)W+lpx9FEuv1%hBTJ4H{(e
+u#Z((g<=WrHK3DCTLs*a>-!FqyVK;yrx&@j$#L-u@<NS5mcZw)1nF_{!5WomoglLnP{1JjF9II#b;Wd
+~pYoC|Bg0_z6T5 at dF!##eg$fIml$3!3I%6OvkYdmsz_U16QrqA3aUIxbX!Vmc^9EAn~X{T>5>7a-h(m
+;e%ziJCaV~W$k{@FL6TNL;4t(r~ftYdG2 at 7JS!T#v@*CC|APKgHV7sMuOJ8Q(?UJj(>hp%qd8Y%2F^*
+_lA7~i9OreajV?CTUr<W}1QY-O00;mH1*=H$kaS%61ONbJ5C8xp0001RX>c!Jc4cm4Z*nhVVPj}zV{d
+MBa&K%eVPs)&bY*fbaCx0qQETKj5PsiZAug2lhQ%aYp91^P=5p6UDF at x-9!fD<dp0YgwOmQgcKho)Bi
+XWS%L&vF;<aZ!jb^@YG#2MZY0HjnU0S82S*?y*omnHAym*DWQaac0cMHavoL9WDpbZn=>6iWf>reh!=
+a!eMwpvLEx;J{{<q00c<KB**_9mZ1X`Na3 at +c%+G;f+1Maly&Uq0ij at BY<lwJIeyX0$>VP8Nl>c~~*L
+ME%O8sJIpNb8!ZHQk7vlX252DuD^cUueWUd>FKwp{nPrd&C0n{aAZXxYGI2aGa!#!=HlM{u4>pilhNf
+~7GU|a+3j_kGzp0)T<}X!2DHF%{{_8dae`J0V at 0`SaLe_x*|OW)mrIud2i#)nvP8<ZjCQ!m!-ix3!5w
+Y7;_du?nbJc6vx#L060O7iD%eEXICA8lz7pyrMYO<_MB{J<&g~MA*(f!`2F59iYZu*bC(fZN!|h-a(Z
+-;3I?8nNnN{M$hY#WY4>V`IH_h2M1I%J>y9Y?#qta*OuBw?;h>qGhGGPM%{DY}QVb;#g7ltFIzw=P0Q
+MGZ77hp9&MNr<T&XZxGX&;hT4BPG4`peUP{V-2nRfHvW)57Gz!l7l||IG*mSDOGm%vi0#wz~H4hgQhJ
+HVb*4fFz``d{F}`yvRwxo7KqqhT)6yg<&z6qlZf$uPP)ruUuz5GHgy-HOLMNBj-MoooU`S*o+{XMK?>
+Gsw+X2=d$R0)A@^nrM*)X-V?i{>6oA~h|4u$4aA-#eM0e&^Ei>8xiqjq{GSQVF~6hE;mXeZ1$*=$2Wk
+MVp+|w+`4Hv)Bn-O<DH&;~ZO}kUGB!?A_~-ZGAsc0(wy0cr9lDU?O9){}3AM7(t~%reaZFf)l#o~SxS
+~!Qp}menKQvPn^pWJoa@!ih{do7|TnsntJFs($89MP-pbcAGggx!~^Uz9MeoED1n$N)N1c*Ixi!EV|5
+C?$T$A}5xQX}22l>W|y89a`o%ncYW09>0?k+Wa%Mqsft=9b8So)?b6VZX7O5>X`}ydI+dg_&^cV*LIg
+W at P5~e(UkL#l&!~JGy2>o>@&gLRYbA6c{qmWx0>h6_IJjsN2k;U4^*@R^b_sEVn0 at 3OsyXF}Z`<s8Eb
+2+#6+#ILN5|9~71}D-{+}P)$6Rmrw%0Z^JbL8Z%J;jtF>U(3=CW`@6dzu+eDPEYwwl1m2xzSe6<}M}L
+~;93k*=gOlgHv_S^6yR3pzRaizWEb_c-DsTC?Rmr~25=Dy$Gb!Fwyi@^s;a3wKrXTO_1HxFoAeRJuKW
+9PmluVpx{gcgPsT8wr*kd at OsN)Q6#;fTpo=>(HTX&u$Kn{QaKyr1BSM_~&YAKGBNiWUysXl{w?s{W3>
+ at cMP9QemG41FPZIdIm0Dfk{m2SKP)0xJsTasodt8H)@%V-GXF0b)f=dxq)_N)|^tUlU&?OMPYVOV1<W
+11xX2rUNPsMAzG_Ssr(KI=x}=7Q|d^|6|~oj1Q>+DbakRg>G<G?q^tYa>rWuvV(X)=pE)Wtmx*)<QJh
+o)=iVEm&A-)v|27rxAd-;Y>xNid=1|nd4;VB2fyGn+T9oNIv)M`Xy~w3lNb?zHJ}<)K}*Mt9Tg%Uoh-
+wTcSgHXs&1l-zZZwN{rl((@4aI84*vmAO9KQH0000800{-FND`{X at GJoU02TuP03iSX0B~t=FJE?LZe
+(wAFJob2Xk}w>Zgg^QY%gPBV`ybAaCx0ky>5dr5Z?V1Cnh4LJV2xj{aGSKQHSoxwU6M&*vLLwMN!_pX
+GjAq6|Dyl+<m{!vP`_y2udn``u7i11dp#fsC)p^v=$q5WZZGshy|o=jg{;yfr%i2>VQ&<C at Tcx9vW<X
+ID<BdjCV4e3z4x%6?}7BO>9i<1Hs;_lMq5#86!N&h|ftSAAGDfLI59DgCkNN(N=3X;h6_;J3*R=aPYM
+I at rpWMjkq|)t>IJJ4*vkxXp!(=%F6mUASa-fbKdj5a79Djd-7 at IvNX<6S>Dw9kJRe+;N3Js8W)y}gl*
+p^o0yHXB*~*Y9{6T2*9Fxgb-|4sMOy4z><ujL_{&f|njHVn3>IC>FU&7Yu^A|?%kJSfdQ+ukjy?*_7v
+>&X-==^o at eNQ*0|XQR000O82?eW2c at j(T&Hw-apaB2?A^-pYaA|NaUv_0~WN&gWV_{=xWn*t{baHQOF
+Jo_QaA9;VaCwza!Ab)`486}+1iVy`y?85l6!apc^uA1IQ;nV7#3WO;fA6^NQVV);4q<qC at 8vz$^EyC%
+2jw1$=1luWq8bAA!s=hxJJS$wOehY|6Z)vidM*4_6oM}Y=1tmAI%b4uAk*(p<5 at 7XLYNK-Nz<Ni=vW)
+YkAmh_^QL2bMQgtE-`9-^50^MkyWM6xWB>6fPI>VlYY)<<%!XYEH?T#?l%gXT_jS++dwh#0;-Z(<j-$
+7J7K8^_m4Om>cz3&Weu+K)XnaLB*Gl{ZP)h>@6aWAK2mlEMt4POg2kiq7006`?001Tc003}la4%nWWo
+~3|axY_HV`yb#Z*FvQZ)`7PZ*FvQZ)|L3axQRr)mrOs+%^*bzJCQzMzGq;uI$)>uV=vRrA`6_NSh)_u
+OEEwf|j_us`aW!`O(Au?>93fB~p)#-4+Mj0*Un?hr at aPW~d+tW}kP0?Ubsr^!k|bY+Kf;+U1f}WvxWQ
+Hf7BkDcBu6WwrRV5mL!$7QoCj$1yA`x7)PX+S^*#tC(k^NO*1URho<0rY>_Pa-L>UqtZ+=^RnW#6bV;
+it$v&7QB_(+>sugE)=|5%RCN=prWWnY3ogaGLW)ABD!mo2(^we-QOsl5of(HOF7SbQDMg*~Ed8w=@X0
+=?XR{gZO4RJ!ZZFyj^`4%E>vh3%v0g7`vmZacgCVtu;xez&OoVmta~NL!e0KQF!PWD{+2Wh<@DT3t_O
+A=LyZo81!hhkVd3F#+_%{H0vqWsPDArA#hVXB3He>JudH;ZqCF2YiZ6xr-6zr}RTXD~}u=9eY1$$LhA
+hGnGeap%X`}p>Po&5c)(`ZIi at E1xDK`xezH)@B<epteaYPVz{;Tmo>HQ(l<Pz%_Z&x+-Q{%-5CsU(a6
+cA}iCct>L*{XEozYXPb%Sg0RfzPMVNd6y^M<;(8!w7dN33gr=JTuMf2yC at 4)mstiHD6fAJvFb$g3b(F
+Az2UK7s$^1tQa9FIncS64mN2r0gn>a9rHZ`GpxD>zv`E!@9ZHdHmU{I0_hli>^;#&tmFJ)92A;IWQ_~
+Q`3jT1mF}!m<5m#)D&j`jJsY%=M`pzHLtp}r=8z9}8EzqV}{~)R50`!}7+iU8qDC<0oGr44)Wf?Ji53
+jU0pi%w!@jc2ht_64`n4IJr!EVF at g##Qwj9Tga8D at n)P#I{3X-Y;<9lefSvMioLRC;qCi%O+s5e6TM?
+1AxXS!RvG4ZH(ase$(_EAK=S;f`VDXEI>VX!o5*nDx%hMT8S-M^7yWFr>Y1NA<bKP5Z3k6POwt2HoHT
+c0o3ofU!Olir=$q2xAE=j2bv at 3O!hB;~l#eAbR1<$A|+F)I@<K-GZe at U<?BO#WedgI*yK!#wV4q)6=M
+(Z2V%aMMC;vyhvE^O%VN3rbT$^Xzpr(n!pF`d at v_arkQS}_nZZ1hlc_D?ZoxmU1{blPeGxhvd3z*LxA
+aynXMrNZ=%+^JJoifR1=AH{4nml6Fd>M^qru+rdZn<Ix}<aEVD8SpM&U0+#G~RN%EFwu;-SP^_V2xY(
+xzX09Q3?=vK&Rba5aKG(fcf{!b^gI9}_;;rX1HS{bJ1t_991$gE7PoMT2XJo`53k at M$x7Tt}Tq68vV7
+`n{M%XY?9Bmq>YaK4-`hBMYEt2M7F>|J{A at u!*!vgzeL=KHh?7uMZKocG8KQZXw8=fRS_SX?azWHw~F
+klW1!iF;bTV1GH+^EYXc;B<fH)fl_wG_xV%fj+0m(I`JSxX;h|IX!+9KdpJ7;e~x+KKJ=u^qob|p7{=
+ztc{}@=P-8@&hb%G;x?fI7OP4CV7Ql5F>#+t+*r~1&ytmJUEe{-?(_4OXHty&LF at aJ^4eU9!N4#W!F9
+Jo4cVeZTsPZr{=O`4&_SDu1sL^Re&)-L_`-29yU<wJuuIy&;l}cB0nW0rQ78e8$u#gt0h6LEAQ*2zN;
+?JsmwWD7lq<~<@)yUxYxx`cXownr+;PbQJ3TNPV%HB91W}RnT+S7?=il?3->>-Au1{$ojxXECS7 at 3?P
+h|^cuVHq;;O6Lev39^LT}t2*G0!ckld!vESea0BX#wAzVCX?imY7DcDDiCx#qSvtqWW;e6w-}5Bb5w6
+-aaXOUz%M)fX8fl3l_nzGx5mHUhG7C!|rwh-2|N|<^`mD at X!|PC64FF%I>0rf)ICjBCVM&9sUOZ3ki&
+F=8jWR3w1^?d+B)4pkxDE6UoxNO}CJCAFb4Pq at x|b6<zo^IeM|Q6JY0Qo{J;}*qJ><>?aUGS<IC~q7X
+0#u&F}hD4V(qKNwso&a`Rz`Y<Mv(wPs1LXCb2)hPhRfS5o{k+ITX_JaTrR>1xuXC5G{Gv}63(JTS;sI
+mkAk_xqn%6faaQ+ak+Z{oilpS(Db8j7t>qnFWfH`~>GmLeuVeWN&GW3|w+0*#!o1b7ZStN at C4H6JP2A
+w$T+_*o-qpcMjatC0<4j4&0<28>1I8U>0F@)uW)M1Kd3_~wzzEf^g7x`jPPcL5A#-<7v;*$ORt2s)k2
+Jv!z$56NnfPD1qsxGdH at pqmZiUliG*XHlNJ0Y9VmhRb&5W(9CQ)*=XL&uuVwgn=Gnr-DVzk;OSZoq|9
+ZN0I;iqqL%a0!3k_pp650oVV-(nv+e at Bnoj0<_v+Lkxl^UsG;OcbxY9#q9N2egMogm`k|?}jt=dDXTZ
+J3)_jOxoXDvc8w;Mp72jEPPc8YV at KKa^piAr`Mfjgnp%K^TZNrIPZ}YGZ<JtyOXu+yht^*t$G|<$D)-
+jI(X~<|HWHMx7MaxaWjtf1F;WS;+LCC}jXY5&uxT7QML5R;EUVk`apCNh)3_+lKNR~}b#VwczSH|&Wl
+PU1_EJKBJFCgI$6p^LZC!H1PR!Ibufojel$V6f4H8n=kA{G#l2V`P0sj4ooAv9t-E7JtgjN*k#bsPdC
+0cfP#aV9Pe$h2HEFfGH-e}fW)zZAt&<<_LKTJJ|-W5_E38?5uR5E at _=LOPX~eX`EdjX;|K>PN%0i-I+
+H2e!<&IrqR~ulSopPj(0BljhpNQBf+PMu%c$;YWp0CLu?KLlXNu?5!okS~7%`%w%nRW3hOOi$yPOD`T
+0Ej3IR!vS7|6LCm~hvEsf;u`$~dl*lMR>X*|cshxd3;i{HEPYyua&IAib>mFjYj{Mq4xF0GEiG}g*Vc
+|BWCKD7K%EO51sVSIJlUW|s6zoycBUJUebqI}zu?HrFQW`sVtLLdQR_;u;H4cbS3Cv0$QAqA}odO61c
+nVSIj<=<q_3miWCHe&oAe^CMCOu$}@ed?B=>WDAd!!>wN!WcasOiZ5iP-E-U6=JE_jJ^&ywYMt;~p<6
+n6lR3(2-C}=IY68y7Z2`w*W1YUmAn3V>hQg&?A_sH|ckkoSgamyd%FSaJ`~sAQ`xe=+I?1_9dN7rBu_
+WFm=ktfP1}PQIySg=jvlbWna6b_f>zN9dE!j0wNaJvStMN>_fNnXDKXAXko}y4?(y at MnN!?24Y?d3XD
+W8GDR5GRi+dx*c*bOaV9vGpMX$3Tm3S+^>#4O6-j8&E&@RTqQKIN$``<b8Vy$(p!&6gzt_D$)Qe~&6G
+f*mkbeuPgLaUiGbcX{(Iz#<$|6arv74EOrkw1KJ+)KyxC(x<P0<l5#NE0pbKHKhsp@<sJ*6U=sBrdGH
+x4(K^LLvSCgRn1cr=K8q_#smfAbkAT at 6>rxKyjWOwvs%lBX^8otd at zgpk%>?md#V1Kf3u;vHJOzUbQ8
+s;~KFYr{)+T_z9xBS5!_`O2QC6G%d;7!A6E^mZTtbi({}$ZJPH6!Ve%=qd;7Erv{cj(^5plXq+UdVF+
+>Ei!}k5fR|KZAqxT9Dw%DTF6fz;zMy&^J3ff9i(sg*gaY6?g3!+gdp7I at ev@S<D-)$JHe}yqZe0w+a&
+B at x(+6^jMIBkr1_)?;zahWCHzc|WRM;c!vW*$><LTSqGq0>;|l99dmb?|R^m{&p5J20CJJ-V&&lqVe*
+X(wubkmA4y1?Gdr at rh5D#ldx8(6&V+_89=#yZCEYLcz>!3k>caDzH6W7yxIK&)|=nDW)J&px53ziC at U
+P4$~QbDBCZ&C^>Ab<`Ou$cHAV)7=f5cX)ZG`8!Oh(IGGHXNLf#0P2%VzbGNHW}FJ%+ti!#QvbmJ|(A&
+8zo>1xBWyGc>V-8w3|h*Ancn^9OL24lTIeOsr#q-d^$$=$4*{;tP<TK&?+=v4%sFx#wk3I at y}qq3I_8
+znv37-HwDd(;}<SyA%tCEm{iz-))lJLELziZ*nv*$jupi*B~(0op)vEG3Y at w4wZ|T$)&}R^p$ttA=Kg
+^KDe})-dGs`BY~hwDbql9J#Xfv%JBD<$*J)NGYt%$pKyn*hAAgSpYon2_=vt%&yAh)DYEO5cgYRi at za
+4Dp+xxx^Uzj|dH1s{uNH^5k6O`A(Jk;)Rm{t0)FKP11fqgw}K{3K7;tB0lqK`vbH{rztrdw%FPjnTpK
+Occz>O;|9QozZtv4?6z)5Tos-Sm_7*b%|F{3<#W;02yJ>CYbi=VDwuL3Hi$t>@Je0AWr^Ohs)g%ppVR
+NcW(PH#*65j#&?NLg$f;Ut{y1+CA>^<Uz+oPxj{c;fwZrV52QAt=cwn+t~cNSKw1XGRM6-CfQcYVu-d
+edk-2iNOCxI+7|FIj)Y`B5Wuw^?nX`<S}pG}5c}I>C?2Ul;&=AfD~@b`wCy#;Z7+0*`6(B?kZ2C>cZl
+$!N5pj1a5SB9_|2R_4|Tse;Lq{g^{|WjRMnN6UVr!hPhnWsH5E0M+s|J1*LQwV_W^<T$<a&HB^|+l-@
+p^7AF;)X60!k<4s37~hCZjp(yQyHn(l_^6JEqfOI`h;yzLn|0Nj3sXl$s&uO02-ARc7{sXHBYFo8<yq
+!kP+Z4an!OQnR}2A30k+~4yRjz6Ij?PQ;$hkCW-r;@|OcN)XbFMF%^gCsV-(xmHr^_x;t4K;e_gzNVL
+BABC1t9SytC{+8P#jt24W|!`F1X!|9d_<7ce4|$QY=xt)Q at N^MuAIKq>iD$%!r*1}qND22$Hp6eJA<E
+<Q0*m~sw$=ah62na>Deq<SI%$T1m~Pi>-wvpnlWPEHY$oDD&%zaj?SoyJ1|Sxcxe*X!%yVsLn*Lq*`5
+c|%6Yoo(a9v9I%fD0Ky2WbOXH!!4>z2%Q5UP+$61qr^1EW&|5mSGh;`O>HEF)Ks*1F-eXFG}@WPuVyV
+V~i;*}el+sUaCxeP}FCRpuF`)#A?RrL2UYVHSZc;W2$=!inJ4I5^g>^9|{?j|>AK^>BD>Gxw*`)Xf=p
+NQ&Th~zz%oG88+bnAL!Xa5CIO9KQH0000800{-FNI?Q4^`Qd*0C)%h04D$d0B~t=FJE?LZe(wAFJob2
+Xk}w>Zgg^QY%gYMY-M+HVQ_F|axQRromRna<2Dez`zr>?AvTc8MUMe;NVi>}m!`lL*h5hW6g9HArbvO
+LV*Bs=hO#AD+e_<%?O4M%Z{EBarU||y<H>Zr4~c%hB#ytmZ#ElkRgCmWSz9T6{A?_L4XW=sY<=~Ob=t
+jb2(O2Shy3}aLnNKX5K_Spt|moIPh&WpTBBP!8AK&!;tvj&)Eal7z^W$Wk|&j+s-bB(Jd*;#sbxp0Rf
+!rfAQMSj9~tp!#NspSAu&?vD^>iSTAbkwroBt-QY7DuI3s$o$xq*api&B^0!9RFrat(yK?2YL2B8cN_
+98qpgRz?H at ju&4NQ4?9&Uf5Z9OB48QSFDyULm6P0N<A7jx6dGygqPa&J<C1%y7;pNvpIrH8`W53&mE|
+{sb*%p2Z}5{!(*8WoevAWx0)Pn`fy0JjrqGlf2|%QI=4EUT>Y=?$(ddvR5Fif1c!houHTb51fSHM8T<
+!7pWhi71M`03 at RAT-8iUFsRN@!)<RO_9rRN!j%}LBn7BX at iIhF5OGHE}2xUNeQFEe at H7d(&AL(Ep%!f
++61Od0de*7Ci)}JC-?~j5o^f`XQ09`w9#tF*gB+4yd-fn at vhTy|!RoJrj9NklbGff1;?2(wffSUu#Yc
+O#O6yqA{9i!I)Rt`CjC>+HL*P0NOxoH(y5`|?svsA6hnJWepk!KECgiGaZN_~9U?`yAP(PIw1D||TYf
+7-*7KzEw=e1<_|L|<ajrp`X9<hviTGfiXQ=m|4B=E~x}3EQXgUp9zveVTn2I1RzwO5KWivwQCB9dV`{
+XFoe^;jI)d^B)VqNtYtKh<^8OmW|Jv`?TueJxq_e-u#CwBfI~f;gP;FeH)@!NZP2CM$6$Sblw%qQF{O
+7{e|A at 8oQ%o`1f!S(}*pKqFC$tS=q?5ma=WHGpf4uDxxg3tW{ETGf`9yN8opB0$Zdw1sHcLXLfTLrn!
+aOHEnla`W$uJCil-5nQj5wMP`^KPv>^G$UKP%SutudaCwNN#;ndWMnfyCYVy!DoQzD9OjUMYzJpd^C|
+|ZPTBwf~xf`(1yEu+up2$ys<mr*K9566=hs?Optk=i5Lc3)jNBO!>!Lju=-w2AP at e|(C-SLXdm*)x$!
+;S-GS+m8qlSp3|^o3KB6L+;&DB~E%v=?o8g(Ms9x(g*_wV1KmfK%gNg!Ci<g6 at 2f`~FhgA$@;S<dIt&
+Qv9;{2T)4`1QY-O00;mH1*=F7R37}n1pojo5C8xs0001RX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eXk~S
+BX>)XGV{<NWd6idNZ`(E$e)q57To{%;Tef4T#f;^lTic~T({8PUVkiQEmMEJIMQS7!$1VEbcSw<vCFj
+!kLDuEm_?^o~(kvHJqZl*76D&KleAYB0olYu6hDe4f3kyw|LhfrSWQKKuH5s8COGR3 at k^bhC&6Ba^HU
+0C*dPoS<xYJp^y?7nHxmcky)a~IB>LsYRM!kPg?|j+2SoS`lzb;nYPN$QQ6p`DUN)q8z6B$?oBWv~Sz
+2Ic9>>&7=XE0{}gshx~T<n5 at m5@Xil9v*{A{U3X?}Z~RqAkIR at uHnwr&TXM at VJFWWs`xZz0*a`NH7=-
+z-Y{{Qs at t?$T=w_Rhq_uSbrt4v08=;Zg*I6$~S=`EFFO(l?$%?dd#oe?N;|6%Q!H)!Hgzoc6;mfQ5mx
+NP!KSzVoBHLz1|W?a=ay#5uAK2l+Fm(D(qBmS0LxTBdSm?#SKkJg0v6_GbVQ4l|qbO6EvI6E9I@$`Eo
+J=QKmvlbQ%h|nQV2&CNhm*oXi)`6s(&HK0Xak!v)%Hi6m%85GN$5%xGb<%xFwC+arbdjflhztnXxjwx
+W>m#FFq%j9jkzv)L4lQTOA4g-;r?*6r8e7rCw45<B%^4lb>zg|iCE>7gCfTZH)@R<rXj51 at VjVfA_m0
+GkNTKU}_h1$gf89=eLhtVjq_0vhFWGm%<U`sGj24X5cIBEY&C#ty48#R*#P%Y-uu=^Y_1bju0|fNLaD
+D_14C3i<&=zyGL#!+Fm3_v2OKns{KLC5>p<g1b_zp`vM9ciC8gR|$Q<rF76z8Z?w#-MWua*&;3^-+py
+0hnh6KTNyG5&>}N=mMwtqkMVoorMSPm)9Q}{9314{R5eXLaPkW8|1`-C8k5C=@6%=_npFasFVk&`40A
+V66`H~1+e0ZDX{(zS;G2XEdrxVWI_bV*9F%?MvTwno{0ONgmTs6=<Px;Szx2)P{#7$)eqCox#;9l~fa
+R*Q*<f^(xI2E9U_3JfLv#0K`TT0obXmpY7kK4JsKqDl^F7M8g~zerS_)=O^z&j3)3Dzz3#U?5#p}}UO
+S{m=%VIc$c|IJ1wf_pDv@*N~oB}zf+zfm}+c}X`By|x~RS-p#QyoPv|HI++?jZNJr!346ehs;mdivPC
+CzZ96!O at IrKwITw`A{~Rh0sdFvPwcN_Tvfct+Sk&OqOi)vd{u{5EOO~KyYqm8}xfBL={tIbhFiH4ZL9
+Z>L~lxWbXj#st(>^r7uK6Q%aHt>)@>&|I!UIUq7CDFq3ezAE6Y&L~9&hBf+ilvA1rm6v}Tfw%!jin?L
+*U30s0icoLpiCD;G}G;zU9>tk3jR)XU-Bjvuvaq1fgHWjxJrxGX;5V#>wy*1I;t%){N3l&@iq9Brl+z
+=+<ZJ3E~lrd}rB7A)LX_AOoO+J(L<b1XIdt$o84Cgm5|2bR=yKSnv`>`Yp;v^FV`;wSUIMF*IuO~2Uw
+TK0q81)HP=kVuKd=B`Aah^Y$|MtSVxa2l)XVPqp7|p0IR|2S<EXG^e9LctN3^vhvA3-hRg6Rk<Mi+{d
+jH`n$RqdQirz5z`&1GRO&qru(-p!}85n7mci|Hv`W>a&4$J6P|YG3_K<K8*`&4;j>RsMT}2xv9T+C1O
+ba(KOFZysm^p(XcE(qHOP`ZI29+$EBpscf at 7i1<&%Z~4mG^r1uh_nB#~%r#eA;!)F%Dcfg~!(&;{=FE
+C at 8sCxk-5}gbry1S>;nMQlWafz344Jhw&AAVcE&)zxjxlWXLG2<gq=e0Egg0i58NLmsBP%|(u4_S0J2
+s&45gLuSYONHqz2!uyh|#n>vQ}O)%FB}`njq5`aQGOa`Sa;?&_Li06ThDw#{KB(Yoc=p(_ at oIOm{$T7
+B;12YN7L|>hh=^ZZiAUv)$l9_B!Ze=f`BP^FL5a0|XQR000O82?eW2+l{C1;s*c#p%?%FB>(^baA|Na
+Uv_0~WN&gWV_{=xWn*t{baHQOFLPybX<=+>dSxzfd7W5UZ`?Kze)q4K$|zRrs%kC-t$}@LbF?YYq-c!
+f!7$d8M0pu&DOIG_Rg3)h&XANu9rmVO1hJ0c$2q?lO6;q$){rp8pFcYh_D+=D)hAWT?)vXSBqt|%UGA
+Y0RlGfLnU!^1^FJG|w2GCkn^ZS7SKwB>K-4!<ajAqB2mVr|+5yCAxv!Y+1b?}>`27#AsuG1GL{D!E{H
+yt2daK)tpPZazJcn)a{MnYvw9NQ6X*E}2vOYfn{M8)ymClM7#jF&*k27wr0;W<Sg7pFv>K&>v(0nHqJ
+IJ8X`S-zk0jLKNIS3`B(oClK)HB2h+_RHa<cJ=ljjeIVoZ(!M^d>l8EJ5ApjL}YNaI5tO0;L603f}Wt
+utNOJ>#$5d at l+#}!J>V#W?$iAUgQzDtf7l8>`9rmo42JLd&$1t?l{YMtzfg1RADC;JF)dikAT4-V2lV
+5_5e*k^JdfUg1OAH(3zT+Qgf*{uUVnE2S~qDc>C_+)j9m|!`GlN<3aBbAOB?t0JJ=YH>*9AvS^{;>>%
+U~2tC2Dza7W*$#*Hdfvl7(4Lf$=z%Xf)hL&s4B~*2J;ESt;j^QV!M9PYyMIZ9KM7Rdi?`Bc{I%VmOlW
+lcb#JMQ=UCpYB*YOKPNLYIN8lQc%&#t3I3}fsb9SuwZ&vU9^R1&>N+U__IESe#+0{w8YTh{z~X+uyuL
+Q6%RHbN`A75NjAb`b@))Z|>+)<lyjbM2xBX1P?&o at WugSOh`Mn*vFY6B2`K0=foP-{3NfamI=})~Yk8
+Fw1$i914j}Fz($BNsUgx7eIxy?9A(-WMV3i>v$yAr{*@VFjGYt|3oGD=3PiidTE(4%~0T<(dwXE9-L3
+!n70IhZx(o!u%r0`S6;X#qq3U`&@c2U at pc`JDDtpgFD}9yg4+lV<f~~h$3pYH3g-)#G(^(X4Jp{8*e4
+632gDYo^kv<n1z}_cWn`y>?Q;i8EbCOGx5hfrlLgT+_xMZ3Z^lbM54WF(j5viCxY9IbD4QA%tZu>ibd
+)xi0lf;YD1AQr#A%=VG3j`COrt0!c;<2RRQz&9NUN(@RfW*uDq4-BN#VDmwAmQ$eC8!5xp5c9o7F;o_
+_keI*(;-*X+3><-EbY+>&Uc-weP}LCep@#A3XmN-(d%`)X!Tidu+HI*~ry$Mm+TE`*&~ebM(A^j?@js
+<3Lm-OKsEyj(rIZb4PY{<nK7EA<xKeUI?Nf{!|JXUXFWYkfxg_!8qe+7Bn*)Mq15zfX2qyw)@3$C)Fb
+KR>f+j%UW$h+&qHdJV3h at c7W|IZ`J0aZuq=N){{|eEaBZ=t%up8C|Nd}JxC32*f at pve)l1d-|-bT<Ai
+ewH#lra)A9C|ZmID=nHvbdWGFiHY at D^$#eQDB<eJxefnmJc;T-IUhY+cI^?6jATf^;lm{CK1c~Eyk at A
+_L^x0BkWw06yb{<soMjKd!f3BmtLd8IMQi-y0d>$0A~Ab`n*M}cq1Z|s(LGZ3>xL(Cdbsxmwd&|HE&w
+KLH4Lq%f_gPbNS52`BdNC)PKz#wuRnfhnv1*~<>_Ob7BguXm~dIeuO{erRP&UP~3n{l`vwCiU#%XEs%
+W}l#J+2}4vxMV1Ai*q10a{k>I|6YFk_-cLz@$x_ at JO`yaA`}9(E;H#0d#-n7W@?&V*#va at +#hgP&d6#
+^(=cyRKG>Q9*dG3Q^f`zTanE#!Q0sL#u7+to{D>GLY4lP~oZ at U}$KD~ncYHj>nr$I(WUA>k?o0(vbyX
+A-uulyRycAxnJWc$`U@!1YK`G;mBHp{Vu&B(DkC0P_0c=|FW<1Nhnh%2D0~S@@&RQf+xD*%KJ?;A_Ln
+sVSQx`~pPkR*q{0jEq6Z>2E6jSjOYZx_Argy;VY-L-^fl80;M(g*SNkz`Y#zK_RRgwpk^$a3hJ{sHl-
+b-;&NMkI)Vcg~rKIxj at sLh|59&gv1c4)gsgyX>a7?Hh_L-CUqqb}K{?o>7FTJ*RF<TUG_3^PIGTyw9E
+U3VMnik2O1^+Xy5d_HANO{JN5TeCYXbF0PWFkN58Rau30p7zRnR-5j;Iho=Kbyj#6ZS_FS(Y&#vBa<X
+E{WG0EgCM6I9)qoR2<>N;^#slw72)?5sYb$+7=G-piEBeT56}e)t+CS-1&uk4v{*FdOyF3z{3)%1u#v
+(HP!1x(b|*0O1}SBYs{xka`4-ikfaOdSroBykuyBwX+yyJ#YlSSt?X0Al%6wxoC&VVt&5Vhqle3h6VQ
+{*EV?_hUYCWHw{Q3`Ppd0#cJf$E{5i^cIGK at ve&gN-09pB8?8^`RAj!rjt5{I%DH$qZ};WsR8ZR*&;z
+-AWtjrf~1V_0!qmd(x1LlM#@6wx^yczbT-*aI;3luk%olGBO1qk6~dhJw7DIdvQ#PaHb8?(q at pW~JsR
+XXCym#&!T)>~Z(aJW~d6!6rrGS)-Y at n7Ij0{<jHcoVEs-!JFm at H+mb4$=A65ZQv<<w1K0*T1-<mhF&e
+jyMfqzTLfDc!z?;a*h|ZabmEzRMqDs<X|0#^4+(eQCLTInc^^6Z6PEXE`gOuTO+C2f!tv at MRo%ygsaH
+saqdw`@Mi1<D^pttj5C8qNIo|sV&YNFYM*jj(O9KQH0000800{-FNQ-;LLc9O~0P+C<03!eZ0B~t=FJ
+E?LZe(wAFJob2Xk}w>Zgg^QY%h0mVQ_F|axQRrb&x*~gCG#acRmH1m>Atn7#cfw>fR7MD~XCZj-{Wz5
+&xh at Svc~3_wI2G+MegCRwDs&(~lO3S4y`~*@4h at k6B_(0QID-*wbhVC}XUK=Flb_IF~VgKEXh~>;QM-
+2S|OLe51cY9H3F1`2pUUwBXS=GCBZh$=GJi<#Jn$;YAvNbp`V3_hK6p`m^J6NxZ8gu*)0ED95l{HH&k
+oX^DAn{XimViN>-hl5CB7jkpsNAO!L_1eW~)P)h>@6aWAK2mlEMt4N+5R{YBV0040T001ih003}la4%
+nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zb1z?CX>MtBUtcb8d3}&EZvrt4h4=i5w_REI0Z5%HDzOv^v2
+?1U#3!uYC6VK!@b8=CI0OrsoX^is&+a9TP`c=!*aRL^6on^GL5)$lZVbxnt7_fzKtIm96D`8eLOv=mb
+a9jvyT-R7QRc}Il^x;z=K0ojUE^Q-<935xKom~`jhHe)i}l?T*EnIEvf^aV)TV~$erpPF$ZCgy{2Jdy
+<!o3GSaD{H#A!}|THd>hLu-{Vt5zi8l5NhqG7pR2_7w7*A1=}U&!;$4^!gUb=4}1}P)h>@6aWAK2mlE
+Mt4P782LD?H007Jl001oj003}la4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PVPj}zb1!CTY-L|#VPj}zE^v
+9BS8Z?GHW2>qU%|N_DrbfgbXx})2(TngfC6a at q}j5fC<IzMMT{j<An7<B`r~&;QW9k++c15xDBk<?+>
+sVdtF&bmH&rcG6XBQ2OeUpP4QoZ4W=|jsrPEsF>r&Lfg3vXtuW<dkWZJ9?q4)JZ(Z^odYo}?>^Qsp)=
+LRn5L%*w})vB&RcOq{4qW?UZObRGjW+2~a$W#k5+iGDUA=i>OFlS|>3YaY>44*gb9+;B#j%~TL%qr%j
+>BUyUFw&YcqZnCY!ZIO)gi|6*&Q4kL2g6RWV(Buwzg^y3f0+aa?$gEX<=Gwk?iZJTUR<-SsB2boQ8Q7
+ZFL16HuQl*u$KY8QYn<n;_Z6&pJr~W9gzb at 2GwG0wX(1Qo&WFE(oNo+}jV?cs1}lTx+&Z_E0`0fl7=|
+kNEf{k<Y6vckGW~w~N?u*o9~6_yvJz2ITV{4mE#%rz0Ide(hsD$yP!dfOv<+Vi`M`K5>Ea8fFt}ib%K
+`!L*kbiv6*%*h86w1bB9FPXI#F1{=`y=nUM;V$m-o|v`e7cOL>K;2vU`Cf-WqiO7AxLxy&fpRIM!B3u
+6M6^JpXuecKhXZe}2F7b`GV|4h5Hz+UP*M2)6=iK-zH`$U)_Dp*SRk38oM%?E$oUH+V;<8XEO9^uf&S
+!E+9+Wy#0orPfN%+48e{i2{Ga?mBih8)F@;E`pA%9ZPdA*&|7qwP+cyaE}6~lrY%d9uciC^Eh2%8qpO
+=_fK6DQy5FngE7r>3_{65SfL~$(xP?h0lNisL&p0uI4U_fk!{X1+Tt=;0xE&`wF0y&3=}D%)Hl<{idy
+`IR#-pPoH0|WO<lzO>Z71AJHDeBG6kB}L5Kyy70=h0cxbS~&k?FyJhg~F-S9dDScBbYNqS}BH47x-b~
+TN0jzK+>Ax)KIJ839zu3 at Yc69IDdfkqwoxU1D8<TfT#UMquKDrQ3fR3#k0c};_aX1W{ANk78_rQCSVg
+cLT*5(9NPXLt^vd8Ls_)CW(XPp^1wC}}i937?**llLbl^WIzkpl&DdD+&;OGW?biE~ht&u%*|`h2=hA
+9K9KYB~~D8h~6aT7&55FTZ>T`E^+n;uQ%XYCz)PwNutD+k at Y=`Ry_c<D?;>IKx0pl?&<#V85tM{eHie
+_%%KIsB<&$Vk^X%w5}-nX at V2)dprifpdf+1Lhqv+eD9T|m at qzwkEVm+Wuz;%Qc?B{@JIV9xpfAG3CN&
+j*_wMK9ISrz-Sz5t!As)ckB;eo}TFO99H!I`Dxmn&_E^sDdZN2-h>k0F`;_|^A57h2>YV6P)wj<31yg
+sCn9shg=Sg^|4)+~;XAB3$oE4<}2$2h?>CVlJ<w{Yz_7RGGA9KZjmH$!;=4GdSakkl~V>1nyPu7)_W6
+EFXD at yoXv`;mS1%Wp4Ck(S#keN at 7iA&pw}$Qg`kg)9!WTEi|X6@}47M)joKn5R^)&Xd3IBzwh<LLwRu
+9Nl7}+`*Fg;rLds-p;7%W%Z(VS*3JT#R!`?>N$I&{{6S$BlJG;HQu%SF$6=4go|4*IGWM)V8VFU0aP$
+ampm at WozH$g>W-mc|KX(eXm_V;U#Gox@@}YDhZ6>Gkp6OuCjigwhS#onM>5Xl3m0s%=JJ`32f&NC(1W
+0OO<(%~8h_RK-<*o4(?RjWEy%Zs|Ff{sb!JsY at n#f%f*<_RlSk*)bUMBDWa=;L{^Ch0Y=x(s>v7ur{q
+{Qb*|;fDDDY=Te{Tu;o-03e=G`wQg!%3LtMUJeGK`C2^9gs%?!p|(@i$OQ0|XQR000O82?eW2(}>1Yr
+U3u|%>w`cE&u=kaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~LRa%E&`b6;a&V`ybAaCvo8O>f&U
+488kTaJke at Q!nd=918Tb%TC2GU}r(G=vu8T1rpOX|9+&S_+wjiuxRqV#}CtO3_U2-9_biSDX{$^L;_>
+qY_h=@MJoWK3CZ?2hVy$-6b4(MK-#H<P4Fg_WU7Y(_^ei|pC{^qhx>X5P3RAr^xis4Ck_n|+d`+4CW=
+hkz|BJGChN$F$OU>JQ!kTM#Q^COJW8;)O$<3U1lX1ktJm2Lw*oZ!lwb|_-}v!$x7}97EKAu7YM`#+%X
+YoqRq*+2aL0|)DZwu^HhtGkhh^BmU_)H&pdkZM%6dyml?h$D;nuyM^&-w%d|a4Z6Ym)*Q(p1(Z}%gy7
+N9^TYMN6w at TT1nH-H}p8!<gT1&=d59=i{8iBA4Sb#*!?$zs)rLYHvK$wJ)E#kw1Jr1s&xtgffPk8_gc
+cg;H0n0##1pkva1$293?&~ikLLmda=jKiDw1Kj~5v>~1$)<1)G4yZ#(kidG-(vRNjgf;w52=A7<QKQj
+E;-BTyWvk_g8k2=Pl_hFrb#2~PispU(yXYCmCb at b4c*cJKP)h>@6aWAK2mlEMt4LVXX*sh1008g+001
+BW003}la4%nWWo~3|axY_VY;SU5ZDB88UukY>bYEXCaCuFQv5Epg5JdC&iUtFdbx=1jGB{TcmBVBO!=
+YJQZEkj2dfL0&zjsB2i;8;GqXtmPwNpM{47QTcE|_4AYLPmajwhvuMZJV_R7JdHg2)Y}Oa){j_}WyfU
+A=-6NAm8Z(t_v2#u&NZa(fjuc#r~)^h|waBT*Dv3`T$UaxrCoTc4u+%L1G40&44GU#gpC(SKW$Ury!p
+t$g%oFNX(mE`%S_%#uQYISj|X^s}LJcTh_M1QY-O00;mH1*=Ft6{lZ|0{{Tr2><{b0001RX>c!Jc4cm
+4Z*nhVZ)|UJVQpbAVQzD2E^v9ZR#9`>I1qmKuh2{$409Z@!EL6w;Q@@B&=TkXnOvvscociVx*FLhiKG
+1cTgeW_aK33C>IXpk>HBuA{nqA+_*s4sY?CPRA>&jfl#_cZR0;>ubKHKHjFw~4|J_gNP6A0;1YAOgNB
+}aO_`z%$kTpx8YuUDKtr8~5Hj8&DkPUDURDmSJ*>XangbErd5G2ZC462Oef^o(81|w-EObGEU<203BY
+YA{m5~cFn>uccMJ^Rjbh#Bo>Vsoum*IG9O8POa<Eow at zd`vbV_E)Fh|6*J7rT?<}W?Q3RTCAKK+-b$I
+Hr0eG3w3?6rC04+i{K?d?F1)U?l&TpC@}nOZ|#CAL4}IpQMJrxou?Dy-rgTJei<CUF at Kpg1u8-r2>{;
+01A{@YDed+p?Fajmn=%eR%lxQsHcF|)UU12L-GEm1{1-&3<Z9h8WSprmY)MGhWn5oZL?uAv?%60{>te
+uP0!X1ql at jcEryIRbSd<VA@!j?r1a`3!dCW6T7?+A-)2U*(+JjDvH&VtUI8p1I$e9A at 7Ea`-G|`J1 at R
+RHX&Cx4l&s1V|83z_l!LI$i159<)T4#cA6vrY+%*6Ta>x-=k&y?BK#X^OWTDoP2_Sr^#{X^3opv^X*b
+X`WTW4P^$z4BsD=gg5tt=+CSa3^FYE<5=6=|yPZo)mUr3~pR8w2#E`{Au<Y>Zqc=pD&(<i}7pNe#IUQ
+{g1Dqjw|Y?`LbmG7`PpB_<#Dr(9JOF<qxyGug}H%OhD^6Af?)9iY1<OY(V;s0T#iy)=C6i1KcfwU{(i
+u2KXFIr}L*8&@Xd524_;90Um~T!E7}=1>P9I|2&+XG2R;B>3*^b>cCA|?lM at _fp?ZcuE;6 at e75UBTT>
+>|0}f`I;>729CKSXSGgNv2a<o3l*2O&Hz{XU>#f(oUclRrER$=g`k$>k at 0G?G5Hh^0J=B$p4UIi3qWe
+^1Vr#T*jQVRjE0?M<}7y at r9K%Z5`cv}JHtd7ZVYF-%8==)E2!E5q@*W?AS$qQbS7rZ7fcuijLn!MmOd
+BOX&UT~czGq_HZ8(gQ!4zAPW2iIvbgzGdp!gZP~;W~9sEY%_Xj|ap;6H6@<8BZRL2V303Y`%CHPRmHI
+>OnZ1>OUloW$9;+fsYTOwxvCIj2T0=EmOlwtSG2$74L&GSiT(E*1u3o0|XQR000O82?eW2$78_Ra0&n
+b#3cX#BLDyZaA|NaUv_0~WN&gWV{dG4a$#*@FJW$TX>@OQX>KzzE^v9RTHA8lI1+vLS765vq_VWib{@
+9MS(QsxG>IpUvt>Kw%{nd?OhFPS6v!dKbu^cM-|hxTf)~-+*>zP)yr2)d8>bI0%psel**1??Yt4R2CD
+&^%*?XSrL~PmV at yY8kySRPJULVa8UMRtmI1*BcfGHu^)#Yq{eLH8%I1%H6c$1~MX1OS@)K-<3sX91V=
+IMrwxl}Q;Pp5GGW10gRUS06$o4LBx+XNock2QOar55?7w7iey9oz<ZF-wy)r>mC1>(jD1+$@qLz+axl
+p%zLX92}IG6Ly_S at Oo+6u~;#gYI=Hhz~HZLX*>2uV80McXc{V=3%&`XBvoSJo4b**%Y`m-NnmTPxYoI
+SA283f_eLzunRz%ik7{HdYQ616?4ZSXzXdcd7bTo|My^H)R|*n}&+l`dWg_>}r=LZnEw1Nz^ouVQ;}(
+MXs)*K%E4W{zg&qZrM>>`(e8ic~VKg(I3#nO_r{A}13Bm9rAt-b(ek!y8n at B+S9GYrI!?O{3oi3R7oX
+1-DBM*jV9Yar$`GrWtifgf8I%R2*6V@!1{}wrn0gI*5Tt>h**KJH#7{)TzVdyK7ECG<hTm&pCZEdLdc
+gP@|r$ihTav^dR0STFaR$INs=%D8;hkJ+%Gq)BBD4^F&@(o<3O9!Wl5}r$@*P`sWOrc5hxH3WS#$i~t
+nw0I^4XoRc&`BM_ffMaYXzaWS7 at c!Mv`n$B{ARbdbq!|*!T at RUT{}Q+f5xUQwW_FvWqX(2W6|{!>vEG
+NVgngP;#A{a5`jiPzzhP!B7Ig^t5AuM!#HEp>)T5ft$7aQ6NV5<{89*@fiir;yrV+_ at gFJ~$eI;e+rb
+2?>aB&eai9sviPULX;UE{wLIS<PiwH=pniNAP!WsO#nZt<WVjQKL41~}3z8)W+oPRxj{rc;J at 1LK2UH
+txL^lIck at S|U+NB?>p!TZy5C{05cpt8=>gx%T**d^XCipWMr{d~He4fXSg{fx1j^O67c`|;lzeVBeeL
+5*`t!0lFPh;^23HjtfzeG6uS`WKiXu-CkR at fS+y$&WlyqES$HUF!QX%{P$AElvevBOxSr=1%1KsL8T!
+Q8*o_by_4q6~V{_a1(T2;qXE*yhxB)OOyyIWM*mF>Y<7N`lznmULx=uBnt^;B#k`5G=dgcTG{xT$TsF
+lOJ%F9Vxv*rQ!2w}Lv=7o)fnrMO(x8f+H>5wM_wz9lt!1JI;Q`)WY1~-4NBxmL^LU*Qeg{74T!N*MGg
+?W+wd)zutJf5Gn~<2K1=|ZYtTcXqz9oD8BLjWZw`nr#;Y-#ZCBtryR-JAF;E!VgLX$8yot4^Sdrntn6
+fm at 92j`xc4NvrT?kdHq~V}~S`2MdqJ@(+EOci+_ecF)aTKJb8TELcSC)`OV*tU_(|<M2^lH-Y9Prx5i
+N3QUunaI$vu$B!_VUfB!zAj4es at G=u1YOyg@>wU6^(?f5npN38)5l!M~qGc12J~uYlheEqfvf~I0A`S
+GFm1QCs-9rsm^BXVKD(E1ME^Q4Z*e{#f>?{M=%G5&f_LkuwtG?UFJrZ&YPf^1$tgWmP!R#tktZRRx>^
+{+mgCEN?Fb)_;;5V!jv`^4^5<S0kd2|swst7hy|3_k}Xkh11uM_$S}mMoiyS at 6C4f@lsR86VHT#T9;i
+ug97<q|SgC at PDXnnaETCB1m2l-z4jhYf^yv;=Ce)RXFw@}MCs6^>{D4X%Q+Z_7h-C at autMB`bQLneC1
+IN3fPw~<W6P6RZ(*15t%j;48&<v02V?-<fSQN=8!`L#%<~m71!puz^W9|I1yO^8I2qL?SKhTI1{}~fg
+<6A(y5ZtlaYF5D7MOM7x5h*KtM)zPoB8ehE}ULnoiX2HjLDmj;~r)d4A@@WT)umM=NKxpl`1z!w!t9A
++slsw0N0;xK2EO&0ZfxWi-8-$@x|42_Q63|(k`*w?3vd?_BZplyRG5nknOvh`TTmfHN76P|1!V2`gFe
+=z`P%h{_}h&_|Nkp>yOiS^Xt3mZUEb02xInTI*<Z<J7j(T{_<`h0Lb8%;lYCf=$H>#Tp_866yf}zFVH
+3+)qN2SNHT~8 at ApI^!VF?ji#^c{dj{c5lRfc}O)n(v^L$S%ORPaS+h$KhWZEDcHrNx3SozX8d>I78Bd
+U%zJ<++<UfM+VO>Jsf at 75-=ZEI7 at dPtkdzN1YofI)4t(KocI6Z}qXBI~X;wE%{-i7;B))B+gLCbDj8Q
+#XUVw8;)$Q=5$Wki{-->Z8re<m=a_E{XO;>d~e?O6`f(r%k;C+Y_&=O+9qm6RTI7`pLH^Vpp4bsJJIq
+k2duXvlr}-_5v5TQ2u^Ld*!mVx%{<@*w)_H?0NtygvD)n8fZ at e%SHkg{k>+iS!x^{?rgM73bl5Y at THH
+{qP(YrYI#hD-DTkQ)8W;64<Ih`&3fPWHeSH|<6z{52?)3^a+0 at mYwQL$dNDbzEr1(NH~GC|>TY at N(S-
+Jks~FFSu&F&(Z=KcIb3WSpak- at v1!oI9aM)UI;b8w~{h~wH@^sZ~I_q<t`e3!~Y*gfmPP>n*N96CMF<
+4=$q85elqr--4{Cr at ycg|VucnO<N$U^S7@<f4Yo<kTy;@J{Gj8(>^-%C%-KI~v)86uKzGGLqz3{sC-=
+{25b_^(VCt2`|-<&T=ptMI{__NnM#*NKoOwk}y5o0=<u6Lza8 at HzWCzSygZAIRVgnm_JQ(6w`oq!`EO
+GzTdtS9kzTC)N8_tg$V50)F9lg3vtmEmot4zHzDxzGdM$-oiGn_x8|m-L^n_dheIs4)1l5CBlcA at v{+
+H;kd%pU!WjJSlJ0NJwq6$D`0FAYu|h0wFvdRjuT-}Odv3_r_H|c at 31;P at 4l;ivloA5{z)(-_x-`V;C3
+t6W)$T+8^Qz{{C6?5^8eF^jn{3|@Eygz(}FbL1)5&W-oA*0*=o<v=B--}HTQZM)lVk;R?rTG5{))>vU
+?L!wP~N2_Q!*Vb0M9uO*$42g!Q=74ooWZhvWWs7P at YCa@OC_p7Tx28mBsxoixvAyMtFc<G(`tfW3NUk
+XloEgD0)jmdi4cb0tC*<)UIGgoU3jUvj3?#fQNzl30rWu>;f^dUIILE?KH#`oMX__>)SLLW^D(aN%T3
+!qUY0@~0dzwX(yJTqIn>@}%L2tVE|xnnN}Pqaq8~1^h13XBn^=TmkoCOrdDr!VNB-8&=-~wgt%Fyeaq
+r1<sD-C}7@&y`!5M-T>M$-k`t!5#9aqU}Jgg&6Uj)U;JDs?PEtnIqJ at WxS;7>$?aIzm~X at XhjoozUC~
+T_MkbG- at N|nSfX5zXZ%)t^c)6l!E4Rx5{7h}>h=Yi?V1F^cdTG{ir;8un{LroLLzp0s at c#$M6)a3+4Y
+M9~3JHeolrUc at Qi%&xr%fNuNsUukFVf~`(OC6ap0+&Lsk+E#%E$5Pj at iSlLBc9k;KW&F*|`J<>)=07O
+9KQH0000800{-FNPX7WFNFdC0DT7l03rYY0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~TJX>@5}Y-w|4E^v8`
+R85c5Fc7`xSB%udrmGOa773|RB%l<r2<>H8Z~#=f&7?Irb~Sb=`S;k)my_+%ja1d18IRwadE*(Z)UhV
+MKN$F|Br^vl;S(bxu!ftLuNEo1zyAP>7c0RkjUf0ArN#s_B7C`Bt?%yFP;h~1#LJ^11I*xGZo1u0NxL
+_KZ##>wbrcn(N=TX1+^7?miyLUY at 2u%TeRHNLij)Pm(I!`wfeh}H#NLENohdpIJ03BgL<ZI{xWTu{?Z
+(<ZGNG+8%CP`Kjb_7yi08`)?8l1`4{!}q8J}k9+%ve<x<Z(}dA$U+{e?TDq4cHP;!c(5Lv2C8R|MKGN
+ErtN=V@?%i-=2ZVpbXDU6}`)xSIY!GMUS68)1ka+qI*dJy3;~K*zvAc6MMgx4%06-Y4u+wOM|)yxm8P
++jf6tqQW(iqWH=u_YmB%!YaYiJ#lkzSwWct5-{5P`>*EB{d=LdOu)E735;74Mg|2*An0|IZmb8Zq_o+
+LoK3S^XMfaIVu*LG^lj|vo|lmGpd~!S1v#?Ehko>NT~6yGWMw?!HLiLBK||b``2?^d^gqCXx}OBx#5_
+858L*9e2H>!T!GMJt49o+%#%Ptl=h`5}{Rqq_A>F(>akaydqaTl9Rzr1!vwFUHLG(01Tkt0nG_ at P4Gk
+QC`bZNURnPht;4|b=7B381EbHvwnPILm-*S}A0)lqPCrY`R>R1Y9(jw1KFf=gSfz}1zcf6yisnh5rCk
+;Vtkq<LPcCiC8)3)R;AT^8Di$#fXpP2uC(CLKw<dppM$Wz*}jel-ZOCr+t8s7mA;w~d20)ARP1_MC03
+H~1JrQ;}>#Y!&_iP)h>@6aWAK2mlEMt4IxPqCHFn008wA0012T003}la4%nWWo~3|axY_VY;SU5ZDB8
+WX>KzzE^v9xS8Z>jI1v7xUtzV{3+z$Umv7beLz<@7oU%z3vT9eW6(TSc?g)--(=>Ow|9)dkz$8F7TAj
+40ipuzz at jS!KczjBRbiHNqOC-o2H1$N}rR2e5B7rTrJioZI$*prouFi&umvJCT>_f`IA{>BB#>3In8I
+dqf!0z=<NyzAmY~pn3aj>JFv$&gmUXUAdc5xwJM)P_8a at p$%w!Q8VeB#xbGC_Q?T?5Z0xe at igTb;y9=
+CSRBdI7K;gqs9Og4SwFhElVi;`DAZG26_cvf2*bd{_%&41{3uG7~Ujj53Rib6oynUf1`V(iC!u17b*1
+P7_$bn<y<HB=J_uz#|{s>k5tf-a2*#aM6H(gu`{4x63Vq&?1gtnJ+SivG-j+^3cu4*?77b&3n1#a5kI
+Yq3s<x+s!3v(N8?i5i)gVlacET=cCcoz5RTDKbpJa>HW+otrvXdb8>RRb1{iiY1XHy9oZ-?5pEbm5^x
+u{{aOm;W1IvVC;l5wEajJJ9V`zs#wmNGJQgucTY;N0vK%obxu+&9XZYa*y3v8or@>_6&PT&VgAbp)w|
+JGUlvazs-^%|22#M=rNL<(8kc3*O<ih~tmy*8mA+S3C%s%-*jGC@|q)A(a&HiH5UY`%Z<$67gn&RF<s
+|hW at ZIE4D?FC)$izX0?ec3G)g0A+ZbJ=9ti5z?jjmzO$osOxp-2EMdBZ3DHYZX)}VA0xt0ZSpdy0rD>
+Lj~JoFRJkLY%UY&PNtkni*F6e3 at aOPdI3HRrgxK3<yz4$9G?NCw^<kh8>b;{cC-cjp0RgGD3_|_E;@+
+O-Wkk&%557r1mJcyn-uihyX8Lj7G$THBU#tFNR3~c{qH4LFS<^4b!fMtBl+bmtcBN};cjC0agr2zvrM
+crF~oDn^98U$1Gf(JyXKB$Se$^JRk{}mJ>Bc at dWv^Bd1SP@(!3q~p0OWK_WwI#$Jfmw#)0#xyBkQzpj
+q*qkW3zj&SKtD=gL5*qfy at CrSX4C<7&3OuAc&il4{d~ntB^xC at o<Bs!il{p-qW~HeE!!1Fdl6tJ<cTO
+nknKak*o at GfOPbd>^<Z)6vcA(}~*FQj at 45H!~}H#n`i?G%*U>X2qyu3ml}tTe)#?Q$($UaEbk?I7?|o
+wdL%ncv{3mAwQC5u~*yCWb7POwwv6kw|w27bs<CT;LnVUn+41C8^F3c$nw5meB4Q at Se%k^NJIn`IOc?
+Ag3ypKFMUDR0!mUUqBwoAOSL#G73?qMw;OU!D62%zxu|Kt);1pGPLmK7)o953t+cN-J$x=~vIKO9oS(
+_dD#l_H;VqU7rp{OrxKLudu61b>cw2)nq^9v^ZOxh<UXVF4w$__j>8Zd%;2y+Mqkl#&ES)>Pn|h>_k$
+N<0^j~Ax$jf4%6YevLH`TR1Sd?|ZaQBW1C<?Kh*=x!NOwjRPZ_uW^7QBOeE|BuJpoMe}JX--K2U~gQG
+NZCeF}6QgAbSa4R>;0vTD7#F`g*;nYj*<ai-_=YB0MIJ?OJF75o&%h<c|$_u at 1n{+KbviKa28H*HH2b
+mu4$>!(t&IJp`ZYB|4=zgowx!_=DMvf4FmSCN~c91j_T*c;#p%028|&o<Vj~|Lho#nj2_C%ywN>^Z&5
+9YK!)(mt at fKv09sL`^W0{`(1WOR4iC|m)CE}*v~e&D6gToNGS_c9a-cTUj~Ce6`#b!J&sBauRbqUW1A
+sYe&YPtm0(9e8*`&1{9OssbkfS{%@Fce`?d{7W<KQ=z}|mQO9KQH0000800{-FNOyZ at A>su90FoF003
+QGV0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~-SZggdGZ7y(m?O5G!8aWVu&tEYTQUfjFAnEn0lc<ysn&vKr6
+QpYMg!aRP?HL<+y(OHg``d5)v5UPd1ls0w564S(?D_U@#^cnW#}_M++|MNZ##ta|0fTpekd&<8wB0#t
+!NvFz&Q5wX$Wj6{i3m$c6H-Fp=DOD(jQcQ6C}|x{1)oC;lKFxQ3Co0?ogN(>)j+Q!8FAK{9Yr)qQ}~#
+$9;aN?dH9(`vhnK?;P2w*y!Si)?LynqANru_j;60h{r*7Hr<(5Foe#|ZnWjhmOEC0HO}{_C>JM(uk^W
+iJcm122;YYRqD%W>s_<z~q=vb~O at f{ruNAJ&X!26-o5A8P8AWr5W$%Aa_uP})IycaxUu?cB(ef93PLh
+?0AhUOd|5uRLNmaay_4}(i9{Mt8b)i}cIU~Y++uVc|#V={%wBw>l1OzJ72QyZlEDY7*|jv%8FZRt~OT
+ at l&iEajApBS8qe$fi>wuGy5=4a4~Ma`@r4(ORBMDUvXgB=uFML{0+SOY5G6Mz!I|lna8^&7vZ<@Trgs
+K1FQdOVyDUjG8JqYjDkgi<k(I9LPMQfmBdeneTssgsCLNe3>?3Ng(7x at FmC@$&XfRYdPx19Jd3xRuL)
+Wrx38%lYy86;}Rmu!w{{LAesS3&7$dOLz_~lFmYp!0W1Q6{?QdyBqG;!GzI>Jh^0uRBn-k8yv4-*bm3
+;D<~p${pplR6#w2Z(GD$VWRG}6ay7$i10g)gw6U;e1c;OroJcrIJT&X*U0bgA+jkOIQH%<5w(2Q*0)x
+t$@!ZR#xf7_y at ZuZ~2ftQU6t{fw|mU`X_S~g!_p|s)@rsJ|8+G$Fy%bcNVM3?9eINR`jzrs*lk*UDC=
+I)lb3+pNs*0B22Hk+W++I<^P)ydZm=>^B5#K<dTD7p29`gt|!7Haijcsn)dm+NYo$XSlWu~(4jh4$As
+ at 51nFw|o=@E5V4i3qI?@-`gZN61~n-@#Q31fyyRYeIA@>4a&+ydri&lbk(p9{Q}>WX!j=h{+v77zCHa
+_N)9{;UAXor^tU~Wo#{8#UYURYvhc2uEiI#B?*R85P7{Qw at I8XijMYJyEgQtTQ?L69&V8|V-o3$H<%M
+Nm at upmVG%7gkVlgk=;($`j1a%{818n#=$%3beOgOVSFsx3v`Tjmbi4|_e%U&i at F8;8xPMKVgNYA$)&E
+1Zd9*zJB&cg&RYHVQblQ2k0?B2xc>MY0S>j(0%z(Fg8j*)I{c;EU2FY at WuTfg(y?G>7Dm(Ze(mNS-<`
+v9j%W+irTB08R%(IgXsFiBTt21(exo_um~tT#355OZZP4z^fYC3Vi(6?iPXZ+Ofm at P8Sl{wWqP&0Tbm
+YEvJ?pR-ij#6L7)wJYCG6T{A&+5#w;jlU$GI8t>Ndny7Kqwvr;G+P at s@+F&)brOld;+UkmYHbeZICFN
+}yRuk=Hl#D2(HIA25(x8pQ)o12qK0=x5v)=^)t|<KJDPX)QW28-gfRv7t%^>4MaHm9M9$mP-C~aOwWG
+V<X?C8v0Y_<=9MB at 2kPtvR4wlW;YXn1&X86{KBoYy!G*wR_n=I87Ak^B{mK6^^EA7Fe6UrCt!Q<pFf|
+z>l(RU at w+pUH~Pn5Y;o6beKr5p2x*>=e7F8C1E1yH^7$vqGSQt09vs5BTOiYEI0SR34O at 2nk_e4@)hi
+Ifs|QWZ;;ADtb37y$H!!_j3O>#E(@$A at Z*ggQ1)f3(daZU+$4gwoBLGLvjb1NLWHYEExaz#@H^$wel6
+If#n(bPUJMk`GPCeYX-AKJZgp4F=@Lsh(NPe>Nb9B0VhJ)74{sY|cLAfowmgwx0mru9<Y3*izrejF6b
+b9_OBY9J>^B8XN7JCX75~vsU_lK&vjR+1{vq&i__7e!^zsHN=xc+TH=}W=orWtRXz&%eOY7 at AAfE>i_
+0c;gt6%k%=rGu=?9+2OF<K&1<-h{sB-+0|XQR000O82?eW2y}EjuT>$_9MFIc-9{>OVaA|NaUv_0~WN
+&gWWNCABY-wUIUtei%X>?y-E^v8;QNd2bFbuutD=h7>7O`p!386~6Fp8KoZD<`_tE_d~K$}#q2ixD{b
+{*P{91{EG`T02+!Q^HFsmqKlLO5_fdF&81QX^Qn=0v6_8N7uLv+3PzBHIIe7^_bZ>rc}JLR*;>ZHpPO
+11=HXPFy+*vCH{K6T*u-*i5q#Oadg(($6xP{ehii1tHdGxzmafVYOUD>o^Md$e?Woi_LnsT|T|<Hru!
+Zg{Ms2IAW+=QHXJ+lH?nyl@>_?a~My9S#UpADy?+e!n0|)GW+P5V$<31{vtnAAgd9UQcS0Fnv<(9(lB
+&dAFAqA+*C*k`*K+JHxZGe5Ju3DE@~Zubuyl~>7~vFu8O at uHyHB4LANr@q3ltw#VWrA!qidbhi8A+G^
+`E(OG*hf<I1I9Jyj^(5mW-m8?Bv1r8+nABlF9+L4myLF)vB1t}#jcffVR0y9{wXkngKsP)h>@6aWAK2
+mlEMt4P93*vL;R007jU0012T003}la4%nWWo~3|axY|Qb98KJVlQKFZE#_9E^vA6eOr6mII`e-eg%#^
+IiehyiJh6gct^dHcARPNq~n~}>Fzy_M@@^A%{E1<d9kC(=D%-U01yB{Nl8zCduG4mheQ&ALZPZqHx$4
+fvA4S?W<{Ll*N391=X+n_FAsJe?1-acxhm7^n_2`%BXRI#|LGq5^M&{!&7+k#i+)L$AvAlL&XT-JVo?
+{OzDdOERee+B;;fk0_feUM7e$lDQJunX at F6Kh1mop(nO-$@0pG66Bv~YRjj+y=M7%sXI(~I_9M<n^5#
+_NsI(>Ei=H%PA=cjMZ at JDF(U|tprF`dqvx+#<CRHTb#Q9|>ps>qr;nez7s59IGfr9PF3`c$ndcs|Gf!
+ at H!c0KaLP&x?yEm*UUj>7fuiVp&Gli|A0~1)vO#9tilOvCjbi{QBfnjjX;?i;BKX>(w%;#6(<0Rl+}w
+>2aOBujwH?Yw{F`pR|CvlZ5&r&60C$7*%2ppQ#tMl?|rTt0v9rGzS_$8~LR&n;aGSJiUG$l@*e{LfXU
+kC4Fy)4X0Pp?3Owx`rI^inzb#OGNVrFx%xiFPfgx_{-sEB`cN&iw3d(Qvjr?muN0^NzLp74D7ga=zcx
+ipGoI2X0FbK>Wp=QP>YF at TBuq-*pK5Uc&Br+X8ieb-D9&zRtmCpQ%CR7HkeH(f1Sd}BJZ?~p4mD(uj<
+f=D)=@r#Cu7AeqY1Ga_*jKWj*o&Nt)byaw}6Q?WiBTJ;2)UGVLBYRggMZZd6WFwfbh`Vi)8|Yef#F6o
+WytM=dbx=FD<Cew^5bOo;CH&cd(qYMD~0gRn>h_#@}CW>VIbSv%b7Z;<QX=wfeCi5Q=6z#VI7^$Rxo{
+T>~?&%%9#bvT`|de*BLnX-F)7#SbmTzB~W^rIc>jvi-##XOV#*r1c7z%`2pg?qSI<n;ICXKev$6Iw|X
+-$n<hdVGY*2iulv!w(}^flC}eVWeJ!zfZ(z$u3_+3MV at FmB-zA=!A()shO7++gZ9}F|GhX|A{XP!zhG
+1N1|we%M`Ca98(}vXj>XVy69O;|_&O`DqO8TpTmUVaX+?P2vfrvz^H+0jWfIPc#S*kvF#LNE?vDO~|N
+LPn7Xtn*qIz}%O?9`Be&P9>$k5M+YDv+z at VYFTWw1XM2c0#C=#B+KdGH_s!f(*&X|atqhp$~V4nO+fo
+I{h7(;v%dxzu9QRpLIa-O<whS{c?!XldqPgKE}7Bz5hYRZD-S{_W^=OP9K6m8`u?#8`=03g6UmTj+Q7
+XX*Kkt$(W`G{F2*^r8IgszsB232OINttoYH*Z`k-bG2&-subFw{CSkE!zyTG8YN338-Tnj+R at CYaal6
+AP|YFf<`k9~p}AI9Z_?AIuBBG2wkJw!Kd8&qVcWl|GS!n*$`myQ$)Gp_$e_t*QJpYpllQY^S&I{DPCp
+&?>6BRpg4KZ#{19age>7A(YUu~9D>9Aq3K5vH9*lF=VvN%wdOy7fshLG(Tut_E1Mxj}0Cgpz*$iYFKY
+?5R=EaftV*lVzuvkGj(G&k7{A2jE)xanhhmRi<6~i>C=V4J^KSnk at F6T4sx+8n;aZh7NV-htg$csx;W
+#>gL;@mbGQa!(DjUjh0sehb at q*8)mXt+^XGOrf}YKbygL at 5Ol6Yc{Z`&fS3KfG)KY9c{H)g5e6lLP48
+p=DUwrr+4~wGrPDCshSr$j<(kUw`%FP(*h{8Ux4j6s95yu-!>{2jP&oS^=8#rb7BJ3dcI`K$sNe0*sR
+$SD<~EqZDBvB*ZgOH6;kr3W371jIOe at x=CUO&a%kT*-Au<0>(Kzdx>J4Q7}dERt4swxQECrtx*cDz!7
+l(lu1+-IY3Xu?4|(BLz_`i3TCAv!X2$P0Koye<tu}bX)b1MNAdjCnLznH6a(=H#$A>m)+56S*a1V50I
+tmv*3bfGBxVpdiTlSz3)B^?9yUq&0zt}P`eiT at lZjqH>Nj)bp7jA=n=8;R3$Y&>t<NFIm74JEyVJKXp
+Nm(g=OU`1;gSf={!9dFA*rAhG9X5EHcwF#=HmV)o!uA!F>2P5FuRG$XomU<-KG*404h;r(N&U(0$P?V
+J=h0 at dJm<VABQG+l)&TELE2q8{_!Ts at pts<A}x6+w`pA^*?f#LL-U~Fb6EH|yOoHGI!mg`0jEXR`W+Q
+Qh`vuA2g8fMhnJ6xRhMK2mLZ5Ztl#^zz6pl!^SwQAV!`rho^>C)6WYkar=ip1H?h%ybq{<=`uGSWP8L
+^590LTL0!RQb at Y$Z^sSE3^dN9XkDGXfZw49?X{Re=E3)FwKnEJ^LUUyQ>qGb{&5|2#MSBXo%QxvWH6d
+gqr3(fjmvs^mDW08c{p}4=l-~E))!NFK&5rom@@ZBy(BPb7`g{^fM#W4|)RXi$BC0G!Ar`I`XQekNs-
+FIHF{>0^_4aDIV2x2D_320>pEr9Q{A*!t5yKoqy2OS`!5&!g`Lo`U?$zNZczBxX6c6QteLZGn`&LG!D
+hNZV1jsP`gYwK;({zFox^A)cCTI^!OT at k=+;{@{#F;W14q4&fC!%tT$-5-p at Suwj!>hL<LLC=;5AQ+7
+_qmk^pYT#WkLAam}zS{qaa&T&OwUcWyln&s>yvR_a#$)hh!7+M`OoRnf$;YUs!50CiiE%UsX{qj-7+f
+=Cd}1(@VjiVg15_5LIV@)YR)IJm!t*AlweHZo!cox+3QhXC#sewf*bOpwt%DW}Smyyg=-IV6jvc;<94
+r^=$$<s0^EW^nT at fD;D1O6KC`5^*7(|kig5Lz?==ja~^z`-l$?2<SFA)&^@aFhG-k!WUem-bLP`Z(hS
+5|>qnb34l7=j^a$X`HbKFjJ?&=>?dFmwg7>^51A#T}9bmlt$*asYE|L52pbyklx)1IME!U|vDD_(9z4
+JW{h#i<y9pT=uF~uA)P=FK3KWR^-_VbaeteiBXM{Wd*rSQHVtR>I`WjKm(O42N06NqMY>{=?0IL8)Q+
+MN!*>Yht|!NpENt-r=Nc6I{CO at d1;XC2ajroA`4+6c~l)NTX2g8+JlGKz?uuaZ45TEgGSQgM^Co at EUv
+4+9`38Z%~Aj%WT0A&z_H)=t at e&{JJ5^zp>HJ);v%W?p>&SaiUnK!u<AB`D1tU_L!-y`V-YO_^nk~D5~
+I<m;~AOA1JQpE>>rjJa8?*Vh_%*#=)(q<5U{5#z>mcspp_fcS|0T51qJbXl7U{mPsq+Rc|1VdX-DtYh
+RGQPK-jlhg0q3v5Hlp;4kZ5AeM9iB`UVBzWgBGu`I)%J{0*$Lnd(4mnbgUm$?6o4;zeDNsgTi_GSpt6
+ln0oC7gSHD0lVb8ySMjId0n~t5AZOYPUCb2O~Ymx1E~YqvO_LTAS!xsB=RYQ*}-N;jLA^tp5IfM89>|
+#bTC_hW3T`RWl~h(i|Og##QzcS=_mL!rVQQ$le9Kn|C-(b-6E0}a6Y*InEa4Pync56o%Tefi-r0QVL5
+>n=1{>Ys?^5hHNiz-=v2^FB>)?vC?XQ5GEChMo<<7`6Ss!H at -ssD8Rr=RdufEu{6g_FB4xK?@3w-k8W
+!k|0=JLu(z3|OP7DyQ!H6)Mfw2ZrLHd^|gb+D<3P2rD*vQW$Dh)hwL<3J#pmxL&nmKkLBS{UMml`7?&
+q at X<geh1T%w`hJ%n0~d9H$(SDC5ace at 1XWGyQN3PKFjGn6wB@t at siA^5VWSK&d8}`NJ$2jSKW(WEgm8
+FA9D%rANU$XZaX;Qvd-#B9bKU)2gnZ^@!w15774a8X9biQ&C{j3h+fJR at ia^(w+=UC1H^iM&^^I0i~$
+MA}fkp46d7{d;}ycBNRL<BM at O6Ge@Sgbtkzuh!uh(lVX--mNjuA359LTB!h){mq=+dfX*7=CPcdiS16
+PVA6K(7UA7XL&h><$Ee9rxc+~OwY)<H<?y>8V9ni$bCEETnM<@Du_nYX+#J^z1_%lcdw&}Qo_ at h@u^x
+m5Ro~F)8NJ)q)S&l3ev1|YW+8Q+sn&-iNnm;`l_`J;y-9;VUqPWA?1XlDcF_uQ?5?P8L0D=DK6Lx2!F
+b~tb!m#eixb0zJ%@`r6j(<9*MVcV{B1EW=%eW5_1dm~gpY#9^s6QBtJVdic#{v)5v!((vvke75P2Pj=
+iZLUx1cpv>EYYaCSsa+ieVSz=!Z;NCSDZ|BLz`%6Icw6I?Jy5FSdygzeUJ=XP_T at lF?vXh(3pdR8n;D
+Az0r1Jp%Nvq=EY4U7g{Gepk`fe!VGbts3atiGUl`v%uxL}BIg0AEx8RJebGXiabySZF0H3s|IBSK9uf
+TRI4vM=k|>ucNG17|SQQPB3|&g51%};~$kN+HOB&KA0R}<SPTDN0SpuqNK2P7voB=Rr)?m&X$XylU7Y
+t3vHWZ{nz?ST#4ry&-w4rX2V60n#pxPmA?^?=XR`_tDRUrO?spx=KlfzG3ovI7QYcO7y^7v~Q#c?28c
+5Mx!1cW70q`W99e{@8?eTy8$6996oy8G=|M_J3QB)_&+e^Nu{X4Gh@><2sIKhxz4!n%@mT_{iBwnf*R
+>plp-<jfFKioSpGfXlc3kuG_@?20Nt;3#|x)RteVMC&H1qPi{v<9CRqrc+GHmec8Q)bFk;s1pllE89J
+o9KWv}WaKXojOd{KHLx2QB=valSPr(02aoOakA at m&kaF$>)9?G>lTNSqW;g+UKb5 at su$g5Ah`g)5t-=
+aenxxSL#}60`6f-h*F>N1^R>t5jx`z2UlrzcZrP;se1QjZ{rLWMyNUS${LpIyu8LsK;qk|!bBwKFCr`
+;4O-)sV>_Fmzq>}=!wyg&jwkbA at UMKWGf+b1h>Y1>Ls8%F4)YKN~^uUA7-u5G2JS01>f<HfSRoQUBs(
+Ooq3_xoRjht<;<%i4T80l$aQcDJAuFr$U5G>1p(LCc}G8kI|aK7|i`m75w?JIoBcBiiPj=#Oe7%$BI2
+f9*)KBFlJhP3K#V6f7+l3OZ&?3<^mK80D1ke60K1d5Vf_DcQ`aZ}Jgucc at 4FP0i$4%~i$8h8)IJ!bCZ
+o5UatHC7ZjdYLrBNCY1x)PO}5Z(&B1X8M1_raYS at LhA8W^nt5;gP<As=BL%7r-iI2t6jT!q5F;l~YFD
+JH24GWG;HCNnQZ=&Ei(V+YqHR4SRqAR`W!z3~bD9t<n$`XadHIY!W;?LBjy#2j)j&L4n;u3yTM~hxq(
+t*{WD=6a<5LK^B?-15<`ygoC4T=^3F#zSi`yhm|DoNaIH_UCslxn|6&Fr at rZvg8r{7QCp1=5t6C};jR
+F0)`9^gruOv}XHp&c*+7l)I}chzoivG?viynHko7@{zR1wKXZJIZK!K~bjHh`MdCP8KN`A)uhs9IcO<
+ei_a}JFRv~TSyqVL{~*q^Uh>iLeR2*(3Sxh0Sk<a3QVGKakzhQsRKf_O+J`nM7=k#5*gHSA_i1rK0rR
+hFQ$FsC(z3)ce0-g5hfQ5Flm(U?c<<nRqTEB)t|m at zo~~*l=034?ToMC?Ad_!97up+4~oX%uJKR=YuW
+0EU{EGeoTY9)S%1c4jN4_TH<2-fY2-N;ZpDcRrT8fYP~8+w)+Vv!h8cGu!xSm6rYf3pmT=-&h!d3JUz
+ at bV<(WgXlFAw|h0Q3prJ^b4rYn at Y`)GwR2!2=c2N=_CLsS=~k?B2=?kL({4HU3hMDNo at v!JxfeL9nQb
+R%)D=Z6!~;DV^qe%nZ<-m?@$nyOM(0-;xe$~)-b2`M}DiEpR?A&OxdHg-(X${v#y3#RX>#s)KC0AHR%
+x`JnTKq%MkH9Xb?II`U0#Nr$X=ac2$lY=jwBEjd-pAxVLh9{tUm1?}Yr8<VFaaz%7B%qNvTY*3No{JH
+Pu()4C6$uR7nuY|7F>r41 at h-|zE(EF)WHl*m3pBubg{NIewo-fQ0FCy%S{(Uo$zGLSQ{9%@J~HWy8Hp
+CJ)SwS#2$<z^Ljq|nkE^s()G&PuNE-z8r_2T^WR^KFAQ-wp9BUg&uZz|P%u31vF{VTbc<@3O^%Bt5i?
+e#D2~O1ftk4WGofhS^s*7ddsG-gb at lUQ6HA5$8lruX6XeTwU%T9b^z_=O??Kp9s=JAx}Cva3(FFrfsx
+l}fl0Gqk at RVa>ASsIwo(qvI==>y6six{<TP5O?mN#v5tRH-=>h-Cw-<=NTM$q8*oVO5~46rhnkz_656
+F+d^Ettdb&r!p>_&^P4`bxu$jM1IQ$uz30&5yHPkg%Ag7`2o_4w4zE}A33_4(CNIDM7fjI-G{IT8-Dm
+mDZCH=R(>3YT!|IHqp^n6P0O)1FmwTSaI*C(FFt8qpAZEGbbMeC(3_Q%eS0O*S};W7b}@C_B?%1605*
+#!Id;fYa^wO9*UQkC)TW1%GP{43+(dUNm{VZnBAr!M?f|nypv-HhBvTT?WaK6$4x0QnFYen_!==g{+o
+NaT&9bk7r$yvYeE2v}Vxl94wNAR9i1 at dS9HsMCiF(Vkh-I8B`8TaJ`znuq6I0}X+cBmk=1>!HSr%7Wv
+XF<Bhu(hutXTumU=M?KIpj~R_t3wCk{az13{587=l*J8(+ at e2m^enubm6Im>4d9L%1tyHX7s#loN_fe
+4E=xc^w8c=a_y;&zf?HX)nACu-N#sj=(F9X4J0UT(8J4d9l-!L^|bbWW(7^QpLB>eH`{=>3%dt-hV}W
+_k0mz7NPbj|hCAW~mWdSk9adifO8+kYy!Vax_h_;FA0nw|p%cdAp&k`jbMDC(xf@~nb?P+t9hyHpz*F
+<V)3NxY6uTzp=0KwM)E5M}>UVb&#>7jvad7u#Aa9~H|2|rNM*5)x>wDgG1ZYdW1}zIm9kFuHIJ{mavj
+zxphsJqHhdihDPn-$tA+cOtZXeV+85N98hG7`Gx#r=})*k2&Q9#JY7H%=hAZ&DO+h(2^EGfIFMcx93F
+=S^vS0PZqi#}9-JypX5c&b!?^VWeZ%W2u<xlFy%zHFxzm5=eES>N`L`lD)8k;dF+Oi3HsVhDOSL9q*+
+5NOfZxc#YV=2!m)DB9zNA^gL8eWeym#R}G<AkWO(3Dgc&U#){^AO?{wo|ouHPKP*Dn&$Dujw0OS2kcm
+;=%66-s0v1cisr78S%i-Z^fihaJkw|i*1c+yssm0k7ed8F5jPp$;4wk=(Jrq=0ovzPjfP#^TS##++W>
+}ItcAgu&$U3f$yz8;4t9kP;B5eAwH%JYE%f+z%oz#ZW{oxuot0?rwkj1F*!s;_Rj|IrGu=+mk@~8wT*
+WQuN(7)WxcXzk0ICtF8<?C~x`u^BU~lmP4}mck?$q;sHtjy$rOCaKuE2yG-3gP?o}hwD85*$GC1-Uw^
+Auw9sOBsbc#X^EDobaS*_jzx7hS{%*z&-!;B%OC!Ucw?cJYuGXCVk^Tk^@%t1t&_V97B`B}**{jt^;h
+G6j at rwt@y&WgD@=k%^o(2tLXA3Y-Wn`F)wzNu|hCae^*RvV?6D)gTp1Of2ZSRq_EeG>L(M at zBjOxP`<
+>hOSLHfi@|fG6T%DG+eDvPm^mQ$!FKo%K6(NJ}06qhJu at Y2kJQ<Ytaz$NMTAMi*;x+1sgu-m>=^y?cX
+CRlsTyCfTn{SzxeR+vTe5`qU=6e!SEn9NmNk<7b4{nM<xg~eNavMHeCLetk}gTJ?a2~m4F8g*8oAAD@
+nq|LUI~iCEjZ*^wk#x<pRdIw4U$aVvve at D6O4rJmiX0=}98dyFm(jDQcR26zHtF2Pav?($W$MVB=ObO
+WvVwu1Gb}xw8m!!*fhp8J%t7VxgfX>R3&|Egg4oVdAt#AAh6BQ1y2i2vOeJdXtQ*GHUW+(KzpF298E@
+f at RX+q@?b;iK-h__K#Jq1x!wFmbc at kn+jd9LGQ>eG<gJ}S|`l1E+bzBN<>&TEvf842D6^6#S;Pgy8p%
+XZbuGe@>SMB9)5TNqD3+ at ooYk<G5E0mairt)j<oXpedlfr`k8pr01L2aMQmY+em_vE3T7D|M8zyG6({
+a`>UoAo%Km8$Dl5UI(!-S}jbz+zfGD7$H!lF=2G}pun7Bwd+?o~3m5-joSIK>g7 at tvNFF_)i!*lG6ej
+E}AuS4S<qj|;A#geXB at S-VIfaFsv3jib}jKE88Wf#F1Xrt&ZSL89_2YWt%)^v80X42U|bXl$bcDVHP`
+7cp^T at 3jI50=(0o9f013v5yt(<cV0W36cZA}aGrFx^!V0sKsIX8+-%IayQ8uw)E^^_4ZlWrRiI)rR at 4
+nW2^3=uVI%O_6=83G{M`7j4zGck<+-uiQ?G0W0MRw{sza)3d>XdhH@~>yF_|Huu{#$Gi{W6X&!jUzQq
+Pm$IgZcCsH)btnW3!P$6M;hSVp+$H8#Y(#2)0b-Dr2Crb at h&L8;=p(6xNjD3C3+1qL-6oc`CKZa_)cp
+3;dQ~8+sx{OKhh5^BV&he$l1RJIV%H*xNw*Xt6B4E_o#wKutUOke{(M>m2Co0_<!c5mtv5e1Ji;exzG
+HNK?_{JxD;e|i5!jL*r<#;C!S0j*rHiG$pe&l*Bvbr#%9ReET0q(XfY&PApmTTCTu<eBx5V}F&}l6BG
+*5eWVi+!0_I*A!5dS8F(`G^n2!ERPLvj=w9a_Mw_^hR6ckiKXR&+{2>2%8@*<_1!=V=LnXA(b0?|n;x
+ at 9c;VA3mrno^Yop1nz?`#&PbfSUd*zEL|qm<3D}*#TQ>ceJq0V>(PT9 at vSN>1z*4zI2g&q0{QM`LqV$
+A`#A{zIEH`zg#Ubj|9nZSb-7xu at PgOZ?DcbFcnAiJ&ev2;TC+Y(^I1_YF`t2_LBR6To_0j7WQZL0WM=
+Cdt~_B<>2x6FWc9a==~x04H;ct;x*fnCY^Ko_GEnt~C13rJCii2$U_yRA0rg8CH=<=+5ysRvIf5>Wna
+_FNhSbcYWPw-Elz3ne7Z8=QWB*nlcf>Q?xw}a)9TBq=L at _q0cJTZ-kZ~_Ua(c)hzcS<Dv5Kw6R(QgR4
+rt|qY;S*ISDe!agzjF1R|=aQzD=+9PK8P-*D2n1LAh<9yxCosR7L!}Os<<OD%<1(o~eA$nH*idlj+zt
+TAJAki#%DH-&UNiii_qdqZ%o^RDzOM4q!T&M#FcS3f{>h;-H4p(F4}b=iurjSz=$cB=59vo`Wk3s~_o
+GaW)Cy2Q_ZpR#<S4H9@>-8)er8aPVd^GC>}LdM31}h=}7^stHq7V8GF9Iwo8uc(LZi>o><gjK!<tpU%
+hPZ^!@pGF+d5YR@&q8!}N+Ql*43=|dsT((63J>z@%phr5n*+vPMLNdng4#gABw*U%+H`o<bih{Xbaik
+&OhRFWIUqXS>oTB4$x at +z%M#BhBIOWyE6u0;203PRf{@g3?Dkx|XJd+fJ}kHt0C`o=@?u!XxtsfLv6v
+MB6i&=%ENPIugA<^L`&-DdQ+(@JQr%K5GNLhp-1j14aE<5=*&Xtyu>2FCR`5g$Hw9hvD=o}#h^ZTlEz
+O!A@{Oepv^+PflK#OBi=9gEdS{CP6 at MilWydO2Cy?8k$!oKoeGlU#q!2~_eYT6<iTb&W?-BUO$Xt0S_
+kG#t3NJXy2W9qnu+S!HHipY+EOVe*f8a}a}&&e7Fd>9filkw;>g|9vure_2#1NdY(0`}ku2vTf0V16H
+fp at gk$VIm<^U)-&1GjZC))IVI=i6UBMm(98K2jAA<mrNH{trOWu|l-Wnl<GC{67G;Bx|C~B(B^!(i78
+ht<OKC{m%lD|Rv!q~&(iOy9wd0}9lB}|g>C88k)y8Veg6_A96DNglQo#twtu_dKim8z?f6SBj%oB at oD
+t7AW%N*DJyN&Qy76#pC`y47WNIsX$p at eD?kDM&XdilkJe at Zg<ZJ7hcWPHwFRSaUQ?h0AqeKyqY;-D-2
+asYa~f9cM!L~~vx at w!<WZRAYVFTZKFPk!&&KDpdBw1sKP*i`I&L&gEGs*~9ibhgo-X8#+SZV~FwrSR+
+2H%lx^2s^xPg>Z`}8?uYT?%cM}gr8~dbYyNm-qKokHf~6 at 8MN-tUyVsMPq1vP>#PBxbs`D565N8e9gW
++}RxGs>Shm2>#U3;B8h&9fOkZLMe0h2D;#9d<bG9Mq^8qrL!G2*qrCXmjJ6~M+<+Wl?s>U{)lx}l&|2
+J at 3qTC&cbov@&sC1pwdu!XYR?{zOj`lR4`->$_<o0_8&iO_VLeA4h_U+Z}797T~GXXXwG{S*flbE at _f
+%Tj{nF$NIm2UJNqHg8V3<CG|I5S6^0cJ!R7ktTJvLuHrm)@2N7eO{>6r1er*^7$yZh90OJ);$*Vl0X+
+VF47eH(yVC-=38#6<5zNO0Ag#sZGk>p)T4TRe4LHQkahFCI#F#G(WUP?kI${Sa55N%V;w)<vNP%=Y$f
+c;JJ<tGiSup4J?pbvmF)~_G8W1lI(qB_j84&-S3IB<z+H?NV17X+ at KdNi)GyOb5TT7A<=XQ=nda|rbj
+kB#zrqpuiz~`0K8;I5A?uewQDMl$t=Ba48_SD9?(rDl+046ddGArkhv$PCwF{^Uj8lWu4ANi2igrKP1
+M?E_2I&6p~-e at fS!_-JC+B0^n41r@><XY6xifoY3u%zT-{)aCx7sW7~UyXnY*8dEs7G_3$>0-sGpMUI
+M^cFA=x^TcV(%Z#{pJR$h+r+zxdxmq)qJv4`Z%a8ex(o(D;m<JPDoXrt9nA>1QFzrABRbMg&jP$o5cF
+kusryT;skYzQ;0Nd>Kxui^}d3_zg>pt7fs}Z2>-UJfOlg`zRCFvQ0$LIUUrpVlwgZLiHrP9J_9xcBhs
+cFZW+(OUeNo`u*tEuuQm_XZtoYE&-BbVsTUD)<ye9RZHsg2lrm4)w!y7%PDp%iMyas*XcFp4F-C)(N)
+$9>xlUSW`q)};7V_J$rhLbLK(U$LAubzQJGp3>>?^}NhbIn)L{K?uBy*c{rW<N;Pzr1Uy{zg8><+hJ<
+y9>bPg-ig_PB@$m#F}@B6wsSC(Ar?Nz|XJS~eNOsmnn%FWzdm#2I;YBa;`@a-VWdT!0FP7~$8`k&eb+
+0M}FJWguli;&P8qnSSM*IN-+CAIv0%i=p^tI?_DF8q!qe7EBm!a at kp3WUwZV?qqMRhdQCi`YzOyWX#(
+U)4%cGu(FaR#DnmOwDrozPal at I{C8nq?x37u^=AWU%N?dJd!bW4?Il!PCTUZwgZrEy8gU_s<Fd^Ce}l
+%--UvR)ZE{kSXmono5MZ?Ek`EVE<e&$e&gPnc<lPHT;G`&h*YLFq~0SGxH5a at -W8I#nI%0rIeGsT?X!
+zC=TZ*3GZ{3^GM(LKSe9#Zj@;>qxVUIN<4fC at b__DuV!9)atU)Q=dRcAfcgU%kwV&^?G8!%`YR*h`q)
+fN!l`4lZV-c{Q3gW9fdsR|jzb)$=F;Pe~pfE;MH+(&)DsAiu=R5_BzokBuPjLCP#c+7~ye;NDyMVT=D
+zRp-yWhzhHC$vxub;J`p^=oaV)APPjxp}mi-5Na%-g34lMR*)PfTLDsYiHNo2cn|)=j^Yqf~9 at zP?|z
+iY068broc at c1LY8!5!eEVzG?Mw8HF50YqTG_4GNt)`6-8D!eqdc8|Bo{I%U%ZxibReFX$}c_o<5PC?f
+>HWpg{#mJew at NYDk;729}Z_ya)3;lKWY2^=I67zmlhp;Z?^JFdM)!m;`h3lcW%8pUJ2A*4?%W+bpIOx
+kxMhuSx_2p;=n66UK)k;q4J*t3ZS5#J<@K!3e#bg|;ZZ6Ci_~xW4alENB_`N at Gqwq0PXjq@H0TXWS#i
+gwU>cgftS)-6Kl4_qo9qQ#pNtYxkjO?Pcthm0$icY>_P+#8_RSCaox}j_l>Ap0U6;hv28hG;j_|^Hzi
+<9Fw?z>|zqP>4iFY(_edtXm4cmE(?y=1;l$r#jnlk)<AwUFiem at 2DeknYUz9r`ie2Q+*|*V^;NBI>dO
+{Z6n$@vuZ+#DFVFO2_RPOD@(q(#N&&H7+VN!(}7S`QaC;4Mk-V<NL(qaQY1s)mXxld;KeV`5 at g!Ef0g
+!MNL>($4BpUGLZu*2?p<xPb4Jnhljcqh>EW#r2~Lt%Gq*ZQr#@^zGXfLmX;FhSi- at Ju3$JWOrck!Me6
+NgmE6Qu?^ZL0R4=e96E(U9XuLxtTXDd*BOg(nk|dhCwuWw^j^sOZSsvRXf8wUdVzoOS&1$fh?eyFBFf
+}^ts?XNbRiM_fO3g!G3Ep5ZcxIl;H*L8*DT+5MIZAo+88T~I!{5PK)J7m0no|rVcJ7;Vh#2yQE6oU%o
+Ty;n`8+A<?y?H$OdF`U5rnmOt~u1bxTp$IS)b7G#Jds{T~o-9M|5SKP5-gMkC#{jvoSY_e{G+0l<3~~
+P~oT{pU{w`T-T7}H2Bx2Ufm<spLV{@V!yxJfAjxehW~4FXAbZCcQZYF|8$;j!>Zqd2b<}?743WJ?xDG
+>yb;j=E!!I9O`Dab+ExueRcli%@PBLVf9+L^fA-2v<M)%j{dGLI+Ws?my)B#mi}PTM1xoOP+8M=NqV)
+WqvPKEg at 3%<*KVh8HaO=gx+;zjn_3zg^XPwqM=M<F4W6LVZMHkXm#e#0+oi~|IeA!o->Muv9uYSPSro
+Mi5et!Jsm2h7A`}g2~zW(#F1i0_N!I<;%(dh8;WBifNYJC&#j{abtYW(r^&GTMhcrW$4`$r at A-`E3we
+%e3$yU^d~<kj=zpZa at U7`@(II>Vj(^<>R}@gr+KB&1ViO6b!14|eto%*Rk1(*LU6(3ZjBY<^8m;D1k(
+k7hFI$3!gB>l?7MQC_R?D{2iFzkP{bSjIVrEWK*|7y5;EC^6ff&NvelOsD+B^8yv?I0{Rb_cbA$=9sw
+Qp6t=r!BPim{a6^lqA0SvL?YnUwwU6Ne{Z<8j-v5}gS2ESdAp6y6Uc-N-FU2GUK>lgsxVwToV<p&lJD
+~xhEC-I<@F}~4stYYPqsK~qV68#jHYB5UWycVH+am~dE+2{B}G`^eTpHzpc~tJo2|WgOJSuhX_8yU^j
+dIlr!9+Z)!#O={VZJ6?PS=-dbsWop>8u4^_AdvU#OSl1S32g+-ZvCr)CQ5h%T*C;wv6v+N<I%I9Q&eE
+~0n1p at OHTa2E%^)MYeF at TDbm*8`!_ogJm#oHBny(a2 at vyKVqv`MKO5*V;?HU<*Nj8ppI~UCfFsbOqns
+2U084cXGr~XrGG;fY^XaReSeR7HSchCP(Hpu~Wz2SoGhr+I{8u+nmycMjG*9IRN&0Tp539jKmxNyI9~
+M?O@~)tJwCNpe5fr22%LsvfF%T33{&<@tELt9`lwCKJu?bO)|se_EOBGT>rwx3B;Sw#=i}h(JIU=!@d
+!>&G=D^7>}J>IIeHs?%9Wyw;=Js*k%2Q_{Wriw(AF5PZ#yKR(YF$_?|xy5yBA<MV0jCguKCH&+=-8fJ
+z8)dnD_*2GKv2eEmddGOToUUEp>&Z=lqA25+~{2)VVC?(TAQRlw#-OZ_)|h{<-j6{24GPJ-+tD+vGgq
+Io)5;nT&jyW_uw*0sJ%&rR)s&|b0iT5^oD!rn~|2!R~5=nXA&)Q)#Qj4(9H=m-E^uMmne>8;V82EKQZ
+UKQf_jOvA`D`Vfn-4j7)&fFK#UE*TBBPUn1u`Mk*V!N}v*W7K at Q`xCPWydG>m<Zk4>kyl*blvSbTrte
+;!_~>*_2WtzzuzBM4zCf}cmCDW?d&Ew`sct&k>5UvE)E=F&^xf)palQ4y>jAbX(4(r>epm(YoKDPMe?
+ at dK%BJYkUtOos;+gjB${p*OPeMP!dKH|AgueWaqiX4E`Sz)?m^2%O?mh_`s645MoCG4ZW{1--VzYc<y
+uM at fE4uJ_;qnF=n$2gNsRIac at G8NV!MYIIc8X+JCEp%)*a_{#<*f6jPc<xaBJV?0 at AMwoOxtzrkJQa@
+tF++HF)I=6b^lC-4RFhdTaE(dH25Ewztnj at _RPrPD^lsm2c8Ry;aAJFep{k4|d7H?dY;6MK}xmukgfc
+A#oNx2UF=ya=I>@TJ{%)<6k8Oiw7Q?5WJ$|%WFr~loZi=6Z^JKv$S5dSB%Ry$f&{rwxd`fKxVWfAztO
+PL5J6UTF(;v{|it{0|XQR000O82?eW2l_%w*!7cy*2f_dV9{>OVaA|NaUv_0~WN&gWWNCABY-wUIWMO
+n+VqtS-E^vA6efx9UMw0OF`YW(jxj<?uI*(0mOLyAuyta~aUHtfLXOpiK7X^_+2 at wb|04RyOcmMnKW8
+M#ta-6-r`VO at li@;3JOixcwcTacEVRn3UoXwj>Szn!Gn|^uxM|^W|cyO3KYu4Mgyt?kQ(X(;(#b=*?a
+SZ?YI(vUDvNzlQx~a2w&9c8MT9JLzZ0bePmrXr|n(u_jzI*ZP?A5!oX at B2mMZL(Ly?*un?TbHu|Niyc
+clZ*@9XxvU=*`)i?8|@pIxAP}N~}cPGZ6T4aIkEfRW_R~H~pp+vl*6Y+CJOVC3INKs<IbtQFR9g^224
+(iLd{leqot;XMWYaxbLg-QoXq at x@+ra)m&Wx64cK|*IYMUdA~0DYxSbr>TiE7*Zi04>{RvfdD&rGXZL
+fl#sN*TR&>p#or_MEoHr`~s>;9XTWI{nYx(h3v>nt^U#~<z>*m*hpGo$8-EG$RRxJL)rOw*6X=TNg=n
+I&KLe+dJe^0WPXYZdrfBOFE?3)+goxOVc@@$g*@NZ{l-_3##64a(ID+Ok>F4|7aTJg)KY-yS%*}Q-rE
+oSSsS&O#cPBJc27b`J?37^R^Ob)W}X+^P^iF<_IO|rWdX43q8_U<ol;k#(*&mZt(J3cr#n9Yi+0x~$w
+&U3_XTV8GuxA`Q?{|r<AqV9SqAr|gOyZt;-Cd<#Ru3ps3W}vG5=?#!W{sH=gR3lpGk|dugOx1VvZZu<
+5%%JOMKfZbW_We7JVJM%kw+jGxEJr>4xq}7|p1pqg^69JR(UL$gE5NHNdhq<kyZ2P?9TXbnFJ8TS|Ma
+`>&fezHxz697J$wE3c}{=*-|x at fy+3=N`*Q=I-o5_*?X$CYP|oi()O`1EPv1hdF*p9=)i<waXFtBjK2
+E8NC14PGb}+AsuFGc6kU~by<<DZ?k58yAT-W&T)2yQv&s3DHiuD?>mm$VFViyKrhHJ0O`X*agGtfEU7
+GepEqO8k)HXC)KTFU0^GWfiJ5 at k`9oq$HN5{aRniz%`+U}9yL)lIts`q*YoEwW|PW&-+``BOiQ0>^fz
+I08V(-~Q8mjbn(sz7jRCFj&g)?Hgca;y at 2)UWuX|8p|^*koDIRhZBI<_lU%@M`V?Kmz6x+42Ic at 9i5(
+XgX6H@@h<~iFBS{x_=ILG(fy~3MOHXdioMpuF}*zjzEZ5H<O%IPejR8oKDKg6Wf}Q(1I)HIqdIYDU%x
+)rH9o+=@JCpV&;{6ru@;-EA5oPX0W9$R!*~j$Eb0Zl9P72<Q&4<WycKKMCV;!b8o=qynx#whOtQ$ofI
+y)Pjcn9!*X5k37Pcnp`*=FMJSJ50^c7I~1Ypjq4eY1l>gtqcGDUE}wR>mbWVBOoHzrv_J010dK_W3$;
+;NW$GeQUMDBTl_jQY*GZyI=~2PwwxfCDn1sUtF=vBUIlIv7KN7=v{!QPu)(o3<3)G<&h6sqfZeUM@?q
+i0((3#vC#MfVc=6wy<=9K;O3;Xt%#EJA;n9vZ`PwXl{sgARB98jBPEk5N}yN?mWYI?gRjXe?ia!c7?J
+HO}Z4Ak`%87fphE9xa2`<q)`SHewe9&V+WxGjyq8TPy+?5Uk6 at 6X7;CQXBfvmODMxd>f*8@&J*bk3rg
+_KNKK<$E>+yR2-&zG at Vf)g=eBb4A}w1`x+s)Mc3V^%dnLvDPo)@||49i}qp+isNV8*a>)@|DH;|54ZV
+AG13rpAMy}?ewP~$s-nLqvA!qc`C)nevQ`B3Nn9~QTz09Z{=U{Os0{D|HpIfV`8F#ADdwE%<yr-0tgZ
+*Yy=iTqYTrv*%I1GJ)L^Q@>)GzCt6Ddq+60a$SsEGqn6S#R!f74>4(Wg{`Yn(~L|;<7C2C*NOg>V5+=
++rqED8zX{2xBxB5hO}K(Wqkvy{JI1I14I&7=?#|5mSrW7r_jWR`nGJF8YS+jg>C5gDe_Ni3XtRQ+D~q
+B%d%dOu&T#9<ySMPJj3!M+B}>}fG$}t%2bGQLAL^=2<HQ~!xgEKQJx2IkuSFy^qc;emfZ{?6(tB3`!<
+4`Bw&Knp;0^419RIVL9Xsw+?c3N2;T256(0x1>|VE1gKtrXAd|h8fFkS_w+w1|3L->zSHg_glJ+>>2x
+zEX2|Qqiq{AXK=t%o3d>^7v5ot=D)R1wsVRP|r;iCbl{Y5F$)1RBNW-L#_W<td4v2Nu)WKWjUO1duYj
+#NF}Uwkfs1>8hS2oR3ab at g0FOW<T$RtR8`fQtHR#66l8-3*wSC|0BK7<YaCu^X{~38mwY5PKk3o^oAK
+2x#*=%~|@$<A`AmcDfLko2yYycAV^S2l^kAcf1l3{1nCfp+dy*f%)DMZO=#$mKDsDpQ=9+a#`#Frg%z
+QM^Hsn!MZ|mBC at PTIqoE^u|A;b;2|*iII%K+YveX^OZAY;$gw3I*41{)1n=erZ#=YKkp*~iDGXrUtTz
+>E0$N!k;?^)&VC}Dq9ydJz0;7)a&d at I<R+5ZvNf=tabPBU<7 at uGd0?8pE6rc~?DvVA7Jqfl8DxkK~sP
+Gb*asXa-N*f at RXOcxNP6=|c5r721I;3AJ&4v8o8yNo9t8fs)iB5tqX<JYN?8Q0~0HPZIN>mFB;JR68V
+#QwJs)X*fxD|}%RW~8S5XjVQQcTb;DuqW_ at QCQ)NR~dzNP!a|;dVrjz=Yuwb_T>=GC7p35u at Y|bS%1g
+v4%2048Tgush9%PZFX^yALkbrAWH(!xrW(_bydtQIwN)ug=bip1v^*~ytdG`1f&IDjnxcFVW;J1OVq>
+8lUWBp(H2ZfH~vyq;(D{X1TJGH`9zPHYMh|xW=4%B6Eq3ci=th)))az&xs}5~b9ju*=s{$(8(;|yibV
+A>$gpb|;ASP-a&DuCFaZq$v?`Q?^dk{#>D~QyEoA>YGLOf`Cvh-1M1?1YGR at wt3$(*0y8;i0|0vQg8Z
+=1b#K01k(};sjjCBy?NYG&b!5r%bitbvV2^^86(76IlwOkJ&3m&eCV_t~5(_<zq(?=hZ8dE+pS<UTEw
+B2M&ShosbeO1q1anjgH_At2uMlg$$49MQ_EvZJs2NwFyoyGiNoc%ttg<P|5q29Z<!uY0bZp#H(k25+L
+f`RZRga(-|v6soQo3Rp0I=P5)ZCJ={P%?6GaG@<iov|U~qKCN!5?a|SRpM6n7>exZ19UqejQu*3G8qL
+sCtDOg(Wc0fiepI)cQA(N$tm8p750F4DN-lMkg}_NfBy;uiLiE}QQFmZG#qO at M%L0`M0!u0w!hO9Tu?
+EOYd1z at vq<YbnkJW<dM?XUTSe_udRewGDo~h#*|3a8R at A!5R!u8-v$A(08YgmDalZyGAr{KCdQE2zoq
+}<3fkpz@&fpcdhsM-^;D?EPGDy(@rU5ak*(m<xC{M|L5#?T0b0=(r)^ENl)Y-(1*k-5Pi8ux6z6WO!>
+T&hek6T+fUa8*OODo<j-6g*$arO`ApScEw0i`U`CatXf+ttOxw&lLVwaoHc%Z(zn2KCNF$0MnOMB>-L
+-y0}Q!hyTDz-Ek=32EMQzsU|rS=DUQu$&4 at YAtn1SXE`uhYOd2PA3?C)eAlV<RNyyZt;WYFc;4H*U)h
+9Vm?R0uEPO(I+0U?10A7ikg7?wIO8I!7EB5wsmaqCxq|~H%Q>Oj5_<=wBk8FCeE<OoMR<~+`Fs(75>V
+*Zo3l5^U;g1M;2V3%or8juO&`#}{F-d74$F~jMZ0&zEUJCG4N2d?vky6@^7SZx+-0N3-8j!4XCqfva`
+i_kgZ>34ll(>^tE|A|ao>Sul$SM-Kq=R3V@=!Rb^`y0ruQ_X1RZp2*bX-hB|wjrsud#n<5Vr~P;yw4=
+~5OCN4=hLuh!_dLI+_nXO_`AY7$nnleCb_a@@!;zsDycGWk#3NSQVb1g#VQl^tg~8qwGjg3N=u<%l|{
+QS;$~&0||pfm(aZUlL6AEi>@mI_xd<*#&9pakG*%DMcx0<eHb|HXNThUI{3CZPv6{MtR+Y3iAS}pE({
+bKNr5-gNQb<E2{U55Elt9+SoBjEM{o9EJY`=hivewL8Cb~G_*xY?2+QiY+8ZLBuHElczECT<$O~Wtp*
+<OY5j$d-qkOhkxmrt{8}He;F-H$nRzMf73L70w<OgM(te54Gi8!NMTw5Fu|1qow2DJWhbv$D(L=%$qH
+qZygK5uIq42;&%TK)j4RQe`^hCIjdgMxDndSkj9Px5Xuy^PsrjgsIk4nmG3*8VhE*>b<6OeWUnMf=zm
+6pv_cvy3<NaL)eQg_9c1e?{SLvKtxkwue;J`jMPL=<^PL at fWr!(3 at +!ydr)4qe#H+4WR)mj1Zhlpu-s
+C9v>?K%X2@&$rrJ$sX4`K`v8hnIs!7wsTWAcjR7lDVSIb26&7BGYjAdZG!{`XP&#470ce>fm~Y0Uhhy
+s5uNQnB|ig_o2C+ED|BQZg<V|A7Z=)#4^%CE7=%0#XplfjS0d<NEiG4fO}nsWiTUdMrnnL?7q)NF<rb
+yP*6t_HBnqKUIr6$Os2ET6=pr6Rs*?|M&GUJQg2IeQd)`=P6LlPR0iEdPK%HznEzOd*sdm8E!8&47f4
+T*v0;xVu9jh6YAnnd_8k1@!em`XLh4pj{qY!mh;!co}TX0);jb)Ug`buWB+VcfrDpxggG9-DDCw*I#S
+E38_VEQEP`?l!hCw_m3o^>VrbY)9Xpci&$=+><-Pd04;hqm_uh#Kt;5FP4EElFr@&tS1tO|h75+NukD
+8?4TE>_thR{#CiiXp)ngD*zcX6(Z$GAp-X<M7wG~`~K~BG%@7ZwVP0E7a=__rWbNCSc4;P1@)Pb^k-O
+tcW9<&k8q&Zs)QjWMi at w>1LJ&}p~oEn)4oJTA6-|)wlil6C=6<?q(+$l=Ik06NW!m1*>r8aLzDT$q1b
+V1C`wiz9zw(o(sC1)Z5UM<dDp<)Nn`hk0sM%@KT at 52B(=K4xYv~>Tj~kdT8AcB^oiaJH>w7jNR*E%HR
+9<x6*&p8YiSqAm-N|lZL^&9mGB6!W<}rIGX84ek4ArT53j$K-o-Xp-rF^w1SJsI{9 at WSuw}vewY&KXt
+z76Awm(`etj>gssfPm7U<?Fgk};<`wYb*a=l9BSKyj;ak~Z5-tr`#L({T$7dYRi*^JD{vw2y7Ushe(s
+<)4pi!>ycd1O$`*W7}}*rkhxZ+mCI*u4?;!vfkU-rOgsaxkeOQT&1qZuLP8hmYWKMuc{l9imIUo@(X-
+p(Zwo+QYHbi`4pL&s5CI7kbfCjRrO&)dI8IlDQC#HR--EzkMy^bYbrZtvj_I4VjqsCv%MB+x!<uIz6N
+274Uzq|!h`9jF`?KfM&ueE8S&Hg_ECCiY6O-s%PQvD!_X5 at H){Y$>sKO#%7uNH{rKaLa!)>9H4DL7Vo
+mOUqF5wNk&<n~mR_TOS3Ykx6?>;pHMPq=ZUNn!PDQ<tjxp?s<X{gUDSyKIDeUJZa9rQ?o<tB^DGoeH$
+{d7ZD`LQxP7kbgCr$B2b-_m)+SmhCZj0Vl_EDBLW54=c%6b;{wTxO*b?;;Lub^~jYI_JB(U4)S_$<pm
+mYBgxS+~RCOUk5^;pVjgsk~JIBL&;}J at zz-LQ$tNMh^APi#E$;d5;oIcK*2gfbxr1-Ylr_ut`_W17Y!
+BYzsps#iPgFpN1r)iG*mov&}$qP+BEvwkeJ+gyz_e{8+N&+mYmpf+Rr+cs0F^#~iVm#*S~(>^)ftfaA
+cFz(-rTav#-_cOqmgAi7(~{-v!n0ZTCw6obvwL_}R{tFQ*Xd%Hl?K`%y(VrAN*S00V>Bu6<yNFlnQnR
+2vAGh&o7k{GkA39CvLCWh)+dY7(h-UVW4xIi&tczA(61G3okf?|u=x_VbArAvtlWQj#mLB$M3pg|1_A
+sIxWuZ(%4lnCdgJtAe<OGd|zB2I~_6Lf?q3C1(~84Hk0$0KE0Qc>N~Uxpo!eG3@&*&LDWG8;`~lo`tK
+LkF`DH6uN(cUY06%FMPTp1<@i?P#5hLOQqAaiz4%FEN0l)ICj6Ej%*7&NJ}U(guhaaa`u?7&)Fpd2}L
+A0HCmTIYhri^qbIr&=;X&g*7g9!pp`Hk<zcZ2QW$80Zm030a#Zd*^i1G=zxi_qiC9tr=w+Zz||ObY7l
+#p3qkr!Pc`vrYo%+1N`}di7q<Kgqj%48^y-{sOv+69Lv;KtnxwBKCux>!8t2L^G&%=2RH~@1nilpWbX
+Q%P-l;Q}@KDFtQHi$L)=gbo_|Ah|^m5x<Mh*#u$HH(}l0`oT=73I82i(e~xP(?3nSUWE@>)(k)9mcNK
+v?7+$;Z%^Kf=XD-dz`;=NA`AU|i&jFaCgq<gYLP$iLt}`0cB&)wk8+E9s9r4DPGXzd(;w_JdOF4CvB2
+=Hf-ipVI3K%^(#0s at CZa7eKWbQt(s^tMbn<U0a~X#j31XbGsB8#gpvi^RITm<7iX{M<l2SE)Y68CI>~
+ly(F<I`?$#N;EEOZpt#J-9%Gk>B6Qiyg^vUota66|0T{$Xcq<PPg#jcRihx at -6`JCS4)fF8*SlSv+mn
+e5GQ(3oy`>RP at S5MZu3Q*XAVXJiqLI3ybtqnGFv`}Z)|vb=PQZNJooY$n>$pBP;P)fqi_#u%S?P5#&c
+iZAQ+}}&v&*mlAZpCUGU5{BX^X_X9$f<J0gj+=dC|?wGU7J;xO?1 at hQNKD$aai$6PIj~tlkrIII7(up
+CjbrM~NNN?1S3i%oY%Wr4J(;5b<BI!p}=aZ{RAzal!saGWrWsdR(BWfpS5wPVjh{gOGr}Rug21unIfk
+{A7Cp2ue&b`{M}8EH at SH(+H0 at qIP@SZt9Hf7#*w|T)()clR{Z8d16v9^WwNTmq0{1BZ|_Yrw@)n-4TD
+PlJqPt{~7;-X&GjHTOcAF7|<~p26pR5VN*<#jN~+*Bk{A=fuL9JoDxQaCUkOrG&y;qP9|O~V-TI`F4)
+8Dy}%(CK!V3K$v<2RQDvV^zxYz^ufE}Az%j{hJrN<gs}C~E!>?~YS51e}!b4EVQO7v7k)O_EDG%bbN)
+8f+#17fp1|K3)w~wg^&vx(N&W{S}^hDf;iMN(kWkDKTFK)N3g`m>DSbzfSTQJ`y8Bt)SeX69Qh*fQ`W
+lx;P_Oobh|D4^XH*L3y;uI~oKx0J at f3OM5HH0PYSxS#^Oj-ap*?~vU%;WCS?lV^F>~D^~9z&)IrC_L}
+DMqK~1OzcXFSIQ^)%E+0lFyl<SS3N*RQXpi1&sGHCRBY0mmZePR+Mqhl1!;5r2Z)XGNaZ~I6^T8 at iBx
+(>#S*cpJb<J(49xD&X<&8rPS$E#wjBVIaXshz2#T#`xa8TqT0_!D$|ys!(Yc3sJ70DHsT_Z9Z)5n>{(
+0SL#A>_=AVrGLZtDNkM~iS!TGY1Y%I!9T0TT^Zl<fBW)0_$nW_Lyi=g+eTU>Uu*E`?C`Z)D%b4N~j!=
+uD!Rd%Er!)(1$`MXN0Thv!#REc^7z{Zp8%W*vA0aGre3F$V-Ymp#NsRzGT(4!R(rDL}mUfIC_N1kh|J
+1Ln?$U`-B_}r6xf?zrkaW(d9s^%!H&Os&f^*96-Eg-!KMzK+k6XwuPMee%E|1|fJ-j#bCVsP3S_Qglq
+(9WrQJ8+<r0Xipv6w>IHCpwp0p<p`hss&XG at nV_&&ZyQI<_oYR`5bRDL4J9l0BnjX1SZ>+{E7oeZ^V`
+dM~+|v+{R54w}aXEN%|a_w at nz{<-TZAFphQ_zn#*9lUpp*RIpV^S}>L2atZ>7jKFZB!hY?nR#C6?-*8
+s{Tc+^Wi<r8D?u_zovWp6wM4eI%l)n=6K-oLxq6=n~XD&(^nlPk2nJauOeI%uPlQZr?WRiqu$Y(!lSw
+=|%F)~0FL<GQhVK)Q(=XW_x_|l^kXR0)smR^*B8;_t|V0MRQyn6lq?1YW`Pv5*?Uy^IwWwo$HNqem&Z
+n1sX8=DHPor$OpV~e?hZq&L%8kQI7s$FZWew!SDW<c1K5q2iZ#G~5Yp$n3X+>6#Zu``FP!MM~xg=v6J
+)5z*Na8R*Zx>PAz|BeEtG}R=fFOt(FmM6Gapx08`toNvn4>CJ7Pp7BeWG1IZ#n+e?4I;@X at b6-4Oac)
+q({0k6fl8OB+R97I^&R!SRP+wAl$kC`t9fwGbYn at CcR%V7p!}#187o-<`hRTf^bi*pBcpRk`AzCglzN
+~lYY}d?ott$a1QG2l&ou2JrR#Uc8mA}ka*RoQABmxe<yK%++SuD}XYHmQOiW6fOy^?`fvUqYb6nbCWI
+7J}vJ%FQI?bNeMuimjwCt{YXmqxN`C;(50w)W{(Tm!`t+c1B0~1VItWI3mx(jdacu%yMMatV)S?3)=U
+!lg%s7D9%d#PrmCTz&!s=?#CDNF`z5tJN at KO~`Rb;Iq0)X-F#(fGC&YRA%F4vUQPIa=cp^_(TkKy*X)
+m?(VlmRNxk+Mrk)ClMdn at F>M9y$&P#l{J{ACK|hM6g at ySD|(r%=;Rn%Z|9f}1^#W4Nx}}ZMMK)-degJ
+YiHn^VqBc?-fB8>eM{AQ)3MXecRSIh!GO>ZAQL at fsVrpt&Fmw1Jk`U6tEr}t_Ir8>WN+Rntzjk}8NQB
+PEmuu2VM&qzKnby`OQ6xV?`6wjlfrH!l;{%uUpGvprD&MdT=wpisEtPNpOlVX7r at 0$h%$BjCwQi>>Mc
+@$g;#DKLP>+an&7n(stps?AsR8y{^@n18jg2T6jZ;3)i7iBw30=raRf|@KhisP5$V|bOM18c~X+vYDg
+gTu?)#BlH3Rd>UlGX-Q9Fy}v+qY<Ae5*IxkxY2G&BSWmZ^ue!FtEx_I(JR8Gu&`>u2DMrlV7=-I<}U3
+I2{@CZll4;5lC#(W`xWz$MNMz@;MGV&x$!BR3<h+uWZnb7IiKi!Zo-NK at c^|pM-ES^0t_ruE#wI0n0x
+T at _3@6g(=H}2E at x&WhpD><bg^r<GYtZi)%mKf3Nz;9YwM5aDi!=B`TwN>*OIey_7*NW`|Qrx=G5_1Ki
+V}+3OTjN2*sAVY<dXLsgu{oTV!-RYc|NbA;<eJ4_2Rxs!nAFp6#?QO2$}JR8XGcq>bqc at v|e6*7_ZY{
+84POrta8k<>}@(;SIrS4n&v2M#VQ{qh0GB>Oz@&NqD-N-G<2lk}hTR-6Va(L<*(!B#AH;<(R<hanr#?
+ at sr^6h7%$B<|*}U8{|7V=<6+7^k~y*Z~&WM!qBP&^0u1U44pz(byOvb0fCwgC?0h1{LNkK3KsV`FaCe
+Yk7%Wd<{yY{1Z(|Yv%3Oq#4tnXf at 4gMdTFch{*~q4<*XK(6pdZt(%&-zs}4R+E!>QDJ)yq(#l{LSlQW
+7-4{2sbD~`ac9>1wQ?5sng^^BZQ;_?nhK1qc8AYp`i1&;l<vBt6ZHcZgbb-w=s-u9js|^Kdji=d*+JS
+{pCu$S4P>|6L8`SAL3aO!8RN3!bb;{Wa$OO|gJ*TQv at Kor#Otl^yI5-IBd`UDODyrjY at f>kJ7pO)~q^
++kCw?*AMXB(v*{ZTAT22Z|F$MNcQPvh9xXn$L?B=OjGr1w|*A|GoVd#v7qG>+Jd_;#%+F&(QY@}3;s3
+HVB})10mpOEM!Q1(XgH!(o0&Z$~cEAup4X6Q|Pm5E#*i(k;m5;c(yB<|DJOSyVQZgw4M5#lP-_uX}ia
++QlHx0nP_~4}|$PV1AEsF>N>5+g{>xG>2eiRG&wlhBTut=e~Kq&}MUU2ES<L8|@J6aHA8<1AKDfk1q6
+XSIWPA2 at 8p%@^G8%3BVmdnXVgcx8WTm<|iN at ZOhTk*`{6FiJpyzTpTc!@HhX+g*adhu~+0rSwqxnvt)
+5xR=5aYdPaKR%5u3uS-X<8SJ4LL=ixF(*&WfeFSLdR6D}8#CaIfhU7=s9^xmQ+=R02E0O(#MX-5MYW@
+IhrNjCD;co)1bDqE>LO9$V<>F)OAbW2v1NBK{+Oo2;%2qhT{e3&lOJqIw0-Ws0LEMy)5b3<G#uT?t38
+^Pdgqh>Qgsy|6v$L%M7+_GB~yX_V#CH>T&yWPH^5v6d4LuhJn-;?(mayCFH9Xk>X9460vRR5%Du^rYt
+TYspIMkglpf9TZhUBu~tUy%iC(B;^&Nf<Um$tp}7s4{j(Psk|SA|H+w7{c%*zqmM-8ODX2cKfVsFw!a
+M7)>`{x$@XQr@;Udmk!ru7t|wpbkT?otr}$1N(0hohG~y&B*Zj;!U;>ViHCF97EYuVhs7{5-2naJ0D?
+odV3~N#V9YY|94{Y|_P7a~0WtfHztov1rN2=2r_<~+KZ>1_S^16pAE%I?a)07 at Cb1ADn>auI;w0ehet
+lBk)oSwVfBs?bl#|i9%3YR(M|Mad#Pcpi)tEe=?4KFuSh+3i`)n%WUukU$hf*VewkdA+QiKQ8|3etD&
+*)NOO6-8s;d-C;e3Mm8=lIf&Xw&&1Q4xcl_R<6 at T}c!})lrghc3{k{t;)@gS7vsbOZ)o3U8kn5wrP)g
+e=DakS9+d@`y8+`vq1hJ8F|ynKoL|mE5$-6R_pI+-L%gj%$P&ad_e3<Jc9xLl2k|5MJrS!b<;}pG{}n
+ORFU8ojq?T8*L}Y}dGZ7_78o{NcRg*|t0y2Mix#cvPf!lVfST%%lO;}7gg60FKM-%;XBD^<$!)$**wX
+HZB@@x>?#r}3RNxYUQ&+A&FmOq$L3|c9QGwp&(sJ7&{9cowt^8gJ)1Qe8p0dSTrV#>1O<Y{O`S)*+ at p
+cFpj*^n-utUj3(VU8u^?)Xm?$YGIYfuO=ARjP==^cS@;0Y@%I3aTz5)@wrwKC2n!=NH at Ph@d~g&SsUn
+`HGQyY&`Br_u at 5-fPYwSX;RRACNkbL73cux89YU)<*As at Z*`S<^AALDt%eP9^q8FY$~LRdl*BjlP*AR
+;(o3~E660U%vk*~Y*)Rs1%LG%X0L<}q(#f`rC4I_bR3B9DgJA^?DN-sV{>SjE at n-Pj_w#m4MkYd17e1
+B+=<3kR0~p>xPr3`$_8j>i|S?s#Y-28kLG{&eZMLLDGCzO-&g^f_V>L^745(|LfA(qiu?7H&W<A2&9%
+hGz$zD;xmd)Yd7bi%FTZ$p7JQWXg>zf|3PUG-Rwho0q>UOk<#)Xe=jXoFMg#OxR()Tq!(Re&lELVM?0
+;D|FDU!_e)s1gp!hjbJe7GogIFAjx|MUk(Y>NnT=V9tE<2UP)@p-?G|=CnJ3U*Ol5oGCP+2#lBKb>N#
+D-@}`^oxrUx`Yv5V`D8A!*8+J?!OuqMJy*%0R{`c^+cep7WMTZcijB>Im*R?^`rRyBDc2m0xTtpvk4#
+N=AtgypvsRIRB*^<Sx?7<(Js;#wX)23clnrv at h}{T_49`_Fys5Y-fQLQ*}%p);N~SgzuJYF2<x2ep at n
+#^Tq3Za-t>YPH7X`r%v9t8F*?$9P;AvwNaD2#KzgTENCK9l+YPjNwF|pgm9|i?{W94nuI;NV$(((lG;
+`W$=scu==wd(zIpNE%QFy`>qVt5`0P~DoxhfAb)15nq_{203dN293>Jjmz&{+PJJo-QHsMhy!<?bkJ2
+Gj$cpW$YAZT_1Lab{vJu%az6G{MC|1poaehfuf%YXNnzvxoKM}kgubjM`klb%p571 at J4j*fEI`turc4
+vNS*CbI7Ms>+XCd^-sKw;*zS2AWJP@#ON}v9cqn?h^Jr>Ju3cMJ at GsjowUNazEK~+rMg*fzQ)W$S0I>
+6xVZ583-~gQ~A)vMrmP|7Q7>7KB7_lgGS8%uMg_~e?F*j|L5R%UK7PJO^(N#EY2tWFzo<?cv!(Co5BA
+c<cBJoQs&A*pHX~<^ppL4M?Io?nEz<PGw)MHM at 6RPw+@vuy1<S=DM#&?trlO!5RB51 at 2|OAke7A}%U{
+X`TGr^{5{b^EfIu;d>Pl9&v5{<GJiQk8I=z=WAmhy&^*6y|zP{+W1pG<m4?gX((|&K(dVa`KjOasl_`
+*Z{*KA`=!q;{mV+}rQ3n7>+lf;@7hR8UP$`A2q`s5Mc9?2H~k%2>Azj7)1J5E08WP3?KDkyuB<<aTnA
+&u8cFqwgSs6zWpeJuBjUY>T6|5G9%hHP~G;J7RGB>AOA1f3Awp)9xLo2c4mbH&~XOVEM#!Gjcy2f8AC
+3^k*jNbUh!p<H$2z}n%|aLAa`vC)yl&anQ}dG16z4Gg*y{yGk=4||OqZ5{eP?6B8j^T{)?z0P`#yNtp
+Bxf>p-U*xTFae<p3rp}}u>-3bey8|@Ww?*Bdw<YzQ^H;z?D%VM4n!VO^H|UB3dd8iUjL0^XLcen(vmP
+rsvY27Y%f}*H;C|=cpM=GCH|1KM;pumuh;8p+*$=R-ljrdCNy24V4#CZaZa=%kGz5?cK>S2o1#!(i&*
+`l?npOt6syx_FmKhFuF%Yo-zuGk*qKy7SItJ9 at ju`Qb9RyC}J`D$rykT4yi;T})>!|PN`?f9C*YTSj-
+zo<}_eQ_$3ae<T!O8Y6`6Z=~HWk<v3O-+#YmSUDN!SY1gp0+`#T<*yaN7Z{L~8V^STj2buF*DvH^}aC
+I;-MRR4BL0q;qVZgaY(k=2<Q~={BX!4 at zwmi!0JY35;^2xVWI70F*9t46b+4S5i+XYHb4?9}^fWZ;J6
+Wds=nPg!l{Hpe>fma$eH)K5c=JifW?wIRP)WZtpHG?r|?M<AoUkW+%F?X(@&J4chZc?#;zTiy$!L7nD
+A~|A2X at pVmAy+5|k<1!AiSPz+x#=>o~3mIe(j$}<XEx-7w&o9nHU1<g4X!Ks$lego>Z-qc at Q$ci{blY
+&q7M~4h(S{R}O=e&$++~M>C&m?g6O>o#_zWdT6T}AsAW3jwC{Oq+Z&3X|xoJ`A1M&z?eOlLcip!qFw2
+fh8umAIbDVDKZm$dU5lp`~gIF`T&FDte+lT=6a54cL7#MP^0$AL6;j2RSs5`VhnjSGusrGlb-GyW<~R
+WiLSaP~k&+24V%B`M~uf=iz>mZ6&LTB<jbxD3a^#=$@v<eYZXG5*ulFN7TwuFnRYMGh<m3$$0+J)5IO
+w{-bn+5Oo6V1d6B&EI3W*-h_4kL2FEEel7XvFk69cRH9iF=a%_e!P(;JM&e665^FKVwrza4SFXMxZEi
+h>=U55VBm0^oBu7cM5za8N*<dP$6=_sw#XPbq9O=MFcGYt^%KscDa-wd at GtL{5G@=M`Z?t^eY21*<M;
+g6RZf-{dx>c>PKnIH1Z0PI+D_JueIYgmT3_2*GEb)AbL4Ss)7zDD$GeH9q$Q$UaI{n-wkT-2f-cEe0H
+E6-Kb=Zh%Ha#Yz0shFIaHhZ1Q#XFh7RvMzh;Van9V|+7ld9DK3-wM()VCP;(Cz9H9wJR$TQ-tNpf&DP
+-~np)5`2|sM~trQ_mskbM(WlARB6n}Wvq~{kRSnk9#o`Tja7XWnfg<mNBbr2d%EZqs-1s+@*%twK}V8
+t1&a>)X0~V)UBUlQjYQ0Xx>?g%$|-8qE<wlyT1EE!^?Nn<nn92TAY}|KTaoeQXlb(ww2uUhk)fpH>(!
+0DgpPU8lIBQd8WPEL1&efA$m}zc;A8R}%bL*i+P&q5n8We}P2AYNbdG|4VDB$3j;r!Upc%d`-1fO*Fc
+#!3XdOu~7rUq>S>U4r03R(%MyDe=|Lv#xksA%bWD85EORT3UKwHHUmSB!!tT#se^)u3Vlr6y>OKkb*u
+WDV;5(um({(8suq9<0^vR=6HMQdXxe}qT2$A8M`-*c9{@b3>lVTjJ)CSo&4bCX=Sy{ji}eTeqvr`qSj
+rjfC8AQ;6q%>z!2{c at cB$&c33Z7ZJa64l=VcA+aUnoqMw&#elN(&aC&=1tXb?B#-r1=CFYw5+pXvT at L
+bNYXfp`1n|Hu!(;Cr}N2sZSlA@^!}=xV}2J{(nIHmZ$yihRy+wbwKA-w4!Nb`q$*gsh{?P#k%#k`0Yd
+O~R#?+0u{L15$A}y-L)y~5gf`EcXrn|Y0LzPb3wr`nxjt%+g_Avjzvjh;ZODB8TnKJnwtSJ8tJ2fWl9
+@!`d^@jpC9byhuIy!TgFXh`HHpvJyjgD*$~8B0^EMZu{!9VtlkE0EjF8}*-%w(Ob1PmEFbdli?m~VL7
+25Ug*pz?>gb}TpTcJ~fv>P`nqsK^WDiOF~+8xGjj0(G-W9UwjSKh`sl5R|~<(s%UcL5wgjojZC=;lrZ
+C+7F}1K;Xgi6t$1o{3ROMxP#|8OBWO9u=r3^x?+KrU^qj*@-*pND9P6yCnLG^bF%;&GPvOFO(lM-<se
+(A2ou2^`Z1KJ$TP2-_ZzOf^@^jOH9#x at R;6s&K<wxg%Z%s#hlb1xB2K1o|N}=sl<`p#HJ`rJv17Rce`
+Z4N_`u-Cs;DRxY+MX_#Y{cxI(rkFni*4TChFf3)^qRjQUFzJL85YRj}L`v|myJqlg(>Qz9$9F>AJU@<
+;91jvt}0YP4f0=w}jtfT1Lsu=1fwvB_4>eUpLcR#>}x5a3-SsOTViExUCQJEQV6I93?D##dzGWKBV1E
++yHZTjdc|<V2&L`-l#tAzz)cNXM|tO<650C4|n~OZX4ahQ5a0j%M`47CXLyH~GNi$`Y<a>}yp!aep~4
+auZUw-~Ht-qajOfqdSj$W+MNePuvzHh8$q3o^68QN|x!tL$N->s$nn2<)n{7x?Q-ld~aC<hV4-M-)8^
+8$Rgi&^D at 3eVL_VJp!!1G&O-N7&Nlsv9TnqFM$}I#dFwsEhz2R_eUUpyTT`HAf6SNZEtSAU;j8|sQG^
+7vpUa%GnCYsDq8_)|u}oXd*QwUkc6W$XFf at E*L at 9ie28U=0!X&y_iVuh%3d#}`n~GTRV^Q5o%Fi`+8e
+VcrHcH^5Rzs*b02yd%mc?4T$~nS_2v+zc9rbnBtO3!#qaaw+ejZ9Qep8HtXfeDj5KE<j7&b;H6}&Mkj
+7;KG;B-L8MkkAfqMVc;W&N;orc=sZ&Hd87k()b}lN&lkMkvz`@#IeJ?3OW<M3?yn(0eODwYm~Dxf-Q5
+W!~Y*nB5&|Gm;dLEHe_7IC8f9y|#N(^29q^#<1Phr6AuJ)jr?Ai8|b!kU1jx`UtsOsU25lP*IYq&wLX
+x1fdLroI{1?sP62HA;_gHh at +0E?`pUA<u5IEqAv<tcPWv%#&U?gzF9OVRuHiSr*~9cp&kW93fk|kiAM
+rwK|gSAla)AxX2seAV0<%OH at 3qLbVr-A+)bt1%qb2r)|(H3RgFrk=@AjH9BNz1xlq`khkEqc7)K{HMw
+)9rG8F3xIT7 at HRR{_M&=XD`iO13C-_}US2z}GV+FC(!Q(XKV7LaNRkJbNo{d}VJgR%{3TTC7j!8?{t>
+}2H=E*@J#K*1rte%8{jBi^NO1yOl9K>&4l1z};0AQcp9D}r=T<Vnd#M>il at U3H#g(^K at bgPATV_yluI
+HVgLADQ at V#D5f2zhMzGct6+fyl?@4e>Okx^s}=gHoMzl0p)HqhDRLAq^1E&-m0nJLVhpYpc3he6wfv@
+&fWSZMm6g52k}Tna>52La19PDHSnD=AZM|`{0$l$WP)h>@6aWAK2mlEMt4QJo&Rhu<008h&000~S003
+}la4%nWWo~3|axY|Qb98KJVlQcKWMz0RaCz-K{d3zkmcRS2z$KR<)yhnq-gfr1=bOp8?$$GD>apG3+s
+S4mii9N86v+cX%i5d$-}k)-fCRr}HObs`JLP0ziUb}W-uHU|_?(@7amtb+75RF`D!n at WJw7>ke)61M6
+y;uu^+vPsV!~d(I{S+KS>*Aa-NrwOGJ+OwMZ$B%Q>F{1H=JGX^`^+#ZL!k3SaSAlQRQi at 1w4ZrE?Epi
+<ywkmr3?7AmYi>St`XKP=j`p(#pS!(%Sb<J7UwCu_~G5%&D9@&y!+wi79T>p6R|A|so5r0n at lX-&#YL
+lVG8bNq1>I?R9a;9uWDJ!BH^ljulcrIiHx6Uxu2adxK^^*!fYguktoczyQ2pu{4wFBW>@s^Qp!Slozi
+N%-OtCmo=}^}J^e-~4HLK|fIuPpIw`hgtX-q<ySuyVKgLQVZz{d{4rr2bIb}Eee=Dx^l;P{^SgBnh)9
+=@EO1Si{N at is&6`!(YC9-s0lsrc;3OJFk=XzgqHL>F(wcO}QoNRbH2a1(k>iv}cU6k`wK+jt)AGo}h#
+pC|u1ZfYvJ$Foq)?B}(XW at LF$6G$1Pfkw0x%~Fck8khhSMR>L{2yo>Y_u-b?B&aHUy7(C$%zWNrr$x`
+{O0n_+wZZtd3=&&FkN;XC-?E1Ux83PhQ;zHp6H2T#ItA5=<nS|C}tW<UP`V&%oNC9X?ik&U74Y_SZ18
+<gx-JvUtdi<Q6^A!Fh-+A^(b_+Bng*$z;GFy*4N$UO3mS){*D8|h|zNzaSk2crSZ*Q=l>oU2q|B&IlL
+5lJ`WYoR#W8H`MV<Lc1r%V at VbJwBF=>3pd>I6rQ<x|(MjE42HcLf2xbO!;Oxhnx2#yvv<QiaU9DJNfI
+5^s5i7w{GiPkK0=+~kFrfy8sRDJ62GK&?BN!7%f&T-X7R%f1P$TAG3sz!XNwN^(q-g<Sw*_g<xz37Y3
+Ov&r{2wNzrVK=1f-J6Nyf#CTY=>_628>wQK8OqT!W-%bf6X9729dLn#4(s!u?#%Y<0WIHc2{M?K;#d=
+h!jPvPy%e)e#Ty?fW2USbm&QGm36)`x(qWwPPZE=mCZrDkTb&#*5!Ka`FvBrtcG67GC@^-+;`uS<fBa
+p3l*jOA+NFw2(b$$ELKd3{Ju>L6cJ^J1_QoEqQT!T$?&ReYWI=}Aki4(2zZg)&yzUI!uP;p&?K0 at 0ul
+!w&`hO8rOy$O5d$}VL0>K<^_>j%1tCFX&e^MBObJLs^I at gHYY8HK-+OEQ#SgchujpPV6P_&q>p4ebCl
+gSR?H1&OWP8LI{E2JQU9>W2yA`vYh)p8bT*iq;Z&VvN*3vuGX!A^RUCDe#04<ndT{rH|4GB&QoW1AQ$
+iWM1J_p+)0<H(*baQcG#;d!eKy4qEXCDlj?S5f8X=pfLT at H}&23lL255$QRl*l%XNDrzKv4vn~xo at U2
+Wxy^ZZw-xrKs=P1kSI<n9cK)5{ys8JsVvGWi#1nlu>fl-(L*j4Q~2eK1N^GNEfz4DY`a)cKm<KxhWFa
+g1%TLag|{&tX4`Yb))SQmO~kKmM#_mYKO~C{8<MCod#(qd*Sue$#w5|4*kQng9ed~qfDKm^IfQ|G7L3
+?VzpZ=LZA(P+8`1+bRTM{bu^_MIwRO{i4vitN#Y at Ex{CM%Yh1Q3~D`I~wDz>c at hPBXG0h4^$V7^}XV&
+coelCMw;(T1Y7YZSFDhae{PB7-;USmaYr0-#Z41Nd5Cb>#$h+|OHsEqMxY6$B&7W9;Xavbh3Qa3?@5v
+6;3d!{bpO!2>M1z{Y at K+^2h+-o&0I=Q;9dO7Bf*5I44tyYK*g3xpTLRD^eJ1prQ<SEkUUCGGabaREsU
+4pFN?kZ3JQusqQ(Q9(Kxgh%*!6M)U at e}^NkavQ}dsJew0HmcabI?TV8kPQS&L-|lxZd<m04OD at rCYA;
+jh#>`yM{U1p4VgjeIU82wHW#Rr(I(CyR(TL9=!yf`kGS2N8GFNKlzhw<-`i)4I#Ne8A>IeDAa5Cufj2
+QjYK#Xr$W0p&vAo(Y0bz9S&hgi1gQ_hLfN`|(L-^Y1W2S)Qg;uJBxPZe=!o>s3n0ySGuL|B^;I<WtkT
+GdRZ$xPl)Q>bEHGwI(23P65L+f9^*F`E4?Z15=%rM-+z!8&1ilX;{7da4K&hqd)DN;VSPs214nr{J<D
+SQ9H4>v45Y%fS9)4GrSJB|VoOMfy76!9DwzKI{v+t%W5l}y7!&_M{Jm(`dNG-V1Vt30>j<?0yVP{6?e
+t4R)GFL1{Ivw$Z6b;V_0A#ivjSy{0b;G5`)OGXV^EF=$v1KI)tXkWIUL|tH}xdCUp!r+87B4)#@oyan
+#!B?Os++)Ts%2Aa7H=OfCHx(?PP+4gQ9`N*M+r!Av(@qdH3!%g%WKt%cB-9M?bTO<8yN$>=yOUMNzAK
+auLV{9d1QNCr7-3WReooQPL<kzBb|`A#Be2RBOd^SfqwIh+Q;N(iLe+k0Dm?&bS*^q1g>uPmXvJ*e8E
+}Jqk`)Ruuf-F6y%OuZmD at lz4`i at F;3XBOu#xis2lBpqzNh%$P{riNs1Nc|=oqU#ev*VEku at eP`a<k*G
+knHk1PQT~7<_B&u0cKR%Pq~w^cH09D6w}+KyTeIgTVlRniLKTrOJ(r!74dNU;qW<8LGKTDIUP2BHdW6
+c$NgcksWcHsgsC<(*fT=aX$!fvZ1OjM3#yW!A|2y(3m1;rofTd0C=z<H4enN(g2evSM~7Y;X1IzmY_f
+*{?4)9i9?JfLek_~Qbt at VGQgM(=jc5<agEiK#jwUFTXbRXT}^?C9WWVPsnb=82?`ZdPEYgVRO@~4!H*
+anJBDMz`t5nU8Z-o<-4k$%_ at hRRe-A@rC*UyP;hKMFRn=PZh`1o@`uKF9E at Pc+%-kC3wR3(Icq3>ekg
+Ll_+xryn{lswv?+X>7I7UAeA`dmli+ivHsHmTzQ`-sqk_Az$5-;@apq4^Fk!((JUIxKfZVPE{A!v=WQ
+w&&xVJqYe7PK|q1CvJ2q<J%I+fR`{6!*050#+3I1C}%!KyK1={qPXMdU0;mwV~8R<bc5(qoaccvC3&J
+#z?)OAK-~n=KT7U1e_Kza4BYQ;4*~UC~4nR0t!a49B6dVRo=5J4VE)h{g&Ee-fHs|2rTxR+jR<OWc*^
+wz(pupdknVLnd#Q_2CTswrmK=1L#{yoDGIR$y4LFeayuXgdeNz~6UC~JjB)vOVA6xKSeTL~R(;6od?F
+|=<zmFz-0xz!M)&`JE!crUAei~l&Gpsw<+RrffFEl158p5}Y#p}>2BY@~T9^>I1KSHB5JxnYAN*&4Q2
+SZgfkCBgQid<SFr)dkiN8R~1hKhB_dsG=<>-YVNMReuj6iOZ7+>u;+s1oHTgl3IiW^DB!GD>OYOluXR
+Zkn6b_PhA2s_k(64&RZ_F<xRkOM&TJal{k^^44{D}Q?yL7&09So(R7etk4}<fjD>w^K_|AN=bc_#;_M
+Kt&$yBqT9m(_=E&sudcV7rR)rW_4x^Vhgv<6KfvJ$lMs+^hgJD^9pz9xX>;i8Fd~NT;4*L-(tuA*Vxe
+wIkJw~M2F*`J}GRBm#WCHdCgFd1u!kNBaW;P*-^mOM}?>}vcO{8y;zg9)&X5Ncl!9OY4CC!^Rz4JDwD
+&-4?hsupE*<uPg?}3Gt-vgkqP^^-s;>~`4ho5xm^t8NsUeBxctU~W3UVm7n|71q+f%vOlhnN#0^E9`g
+X+?sQMO$3`vJg=Gh=>*d4cLoCgZ)d}z4$whjo7ib{fzA7`b0BqTxoB*&6tV|$ui0l$cHre_ijT?dTfh
+*9-*@CgY2!e-Tpgc%g?S`%M#<U~DjQxg;FU^?AjJ2sXXBC51XF#f at n5d=SFJn~TLUJ#8UEU>6BfyH8p
+KjvT#dFIEbb|SSTo0&LyfXUcxWCjUSNHa1Ee{tdT06BFLv2S5;(&6sz9?WA5Y at 287iYiMFKm!qiDUq6
+CtX=>va)*`&vH<FfEs!G6?5pVYz$AagPVkqpR$$AZF8hZBO=;ES{>Qlugs{S$T&|#5_piHu{F;R4#ar
+8MY$1hrc7?dQuC3to%e%IS0ErE<ACa%iSfH?Ll)Cr<Tpv}hP7N>$E`xR)&NIdP(7Q256Ec6sV51*sG<
+%SmVFI}{TaZ?r{YTKkWFqIx>?HHoj?&-FQ?WKHEOwJ<1P{Zy*Cg8TN7KaT(k6cWyRZ9Q&GV;vr%_dsP
+;}C4w-PjC0YNZ!xl>3AfNeS{XwR3jt<Sn`oY{w$?zRhM-}JBVJ8c^3K%?eIH|zIlfyuxB+e`hM`6EhL
+Wq2P3XvsiLgF_X$X~V<GhmJy!u(cW92#0$=E*!*5Xf-AuHMVYvgEq0v>qvbFZ#U}XfQ-8_C+(rk_Txx
+ywd6c>kiq)50sB$rk;{WLiH}+#wDD?MBo%JHZZ@#^fh)Ylt-gn&$rgxTU at +Ok@6h7-Xs~EWF&u3ka^&
+Lymyef?(bUET6m75=dyN8Wg$;{^A^k>gagW#_5&o5Yxqx6&hJ8V#fev_bFS-JMF43PmAdSJwyK4xx30
+Rhfioug{M*a~I24Ms}kBTjfD|GVh#Tn*B)77-7`_Wc?V*~B3{hE?kM}Uzke;9}xv(#E}=d^$n*v0y+L
+E{G#!;N}op8*)9FmOJo#@RFQgI>bS!=dZ7K5PjM!k=OWv6^D`hji9aYF{vKViClx`FSYR`SkT at gVdoF
+={|-B>Wj^?$>BBC=BmN>O`%VQ&o!orPMO(K)fw>Dz5w0u`nM(MqnDsNZS5wnBNX?uEyXrg#9EMg=+9t
+7j<FzrreV>7)Foy#9lsfjU$w!I6-NzfFD>lAV%XC{fCOgs>|2Pd_^|FDEH8{jFaFF~l{e)Dw^)jYV~#
+7Xd%fHHG5kf2u3P>jhwNRSu)xt>lW^z8UQOBAkuji|)yFSSJh3ogk1;i-DJ^z+cV(iI8PE;_A(KU$l-
+ at 2%;IRj(H$`!O$nv;?G9Bf8;JM(KwwaR#WP{wWO#ox}jplg3u#w7lh1}v6O;?M>eVerBqv=wolh~%H)
+}XePln^&&`zAmx%wB)QX$$$A&3oWiC?Xy?cnJ)@<TY|Oxv8PV`JR^TCZ6p?17ha|(0;-_DVex8`Ppn$
+<;e_B;{f%g;13)UE_h`2{pT%PfQp~S61RdbWsGMR?Wr&-tK<HfEGu@(GJ~qt)nLk+;`xBIqRlXFB9#6
+T0gUa8?QyVXo~S8Js)3uZcuJ*k{#cs5uapcNcYf4cT=9koA^LzEGd+-EH#Xxz#3&1ta{lS^&c*rt{k~
+32J8q*{UiF!YcnS4Xj*lmI1`>QC{1ZEoLaYd4)sv_-e3%d}+C?<ANSZEo`32a#E+lCC*4X**&{E1`fw
+j6|v6$FHC^Rbg3k$2uyUvUnRkr&a=}3qo-53(xj>Ha8t|P>w-o;AsV0dWW^$)e;)egws6%J6%5zk%pO
+V_wVML8cE+Dau0F^--Zo=gVLr#hC_RbO*+M48-j_MA$p!Pq3hm!W?TZ83RjyG=Uv$oAB~>CD@$Nf@~P
+Rwm@^szBpm5{Q&k0Mto<RM@?59-AYt>tDFr*@S1agtj&~-ZNDgE3z{-(^w<k5|8JOV7^fR>4Gk6Z=ZW
+pwrw0vu(M^`bXB&g`kcin_>5J7hw<zdBlEck2=&2k<uQI_0Bqvx=&{ogP~LHKHVbDA&R5I*%azE{y|l
+}*t8(xZhy9>Jh^Lv_ycs;gyrErHw5xtqMu>FSHweqDNbZ&RJ0?TFKl{(u17&J at cX~EZMvE~XdNm9)ue
+O6PK?k1My2>fAf2}vqP_Zqt!)K2z4kFi~ZTJ4!g at y6f!1&Og8iqiPg&73gybm4H(}pBd8n_R5>^MYg{
++8 at i*smdup6*6DqE_SQyN8c%n^^!OzC33 at PBYZ-Fd)o!)7ybYwQcOK__ZL}7H&Q10K8fj0KdKn*%6;&
+lbPhtWtCN}ft42^L~mc;a~q&Jv$8HsjI!Gl8MoUC099jfd{;uk`QISw=Ab3=;=kzOQSo*UxxgC280<@
+qb}i!?f(t|k4;--<DV}~oqxK at DjmN4VkiTFd;$ey68)GvAGD0zP4hRe at MGzErMgH7|MZq4vJ#XY-Xtl
+8g0(VE5Zhdx)Wg;)?U~?-J;YN`G9_Xn9i=)yxBI^r01rJ2DXMt*`>Wu!efV!6>qM6;~2%qWFU|Ys<9<
+$DfS~lM#MDS~DUni%n+1<dWF1A^pu|S_=j&_rfQZ6QRQ%`WqD*XT(#x~)ZD|G`TMDeIanr3Y#96%D=-
+q at y-;aJTcs#WdH)b3nz_v~$3xLn`*oY+v8Ne`(1VUr^O`pp|)=IcfH!5!~oM&TC at LN6~i4I&CeklT$o
+be0s{o?w4rVOTUSsiRvop=6$xHc*Mm!kiw!s*}xf6n!meXmc?3H_WxLtOR&fU@%8!vBRzeJ)M2@&nXg
+iZk&uCG0any6<WV18#yt9j(u?AO&XWlEhU<dF9CI?whD)N2l5DOSh3gA1AyP-nZ1081dniG>Vadan&X
+GEUP=g&ORip?{m0i|z53eQNghkxk!$ZmO(a|HcijMacW>!SU$?Q`=~`VX{4}YCY5#PpVc`N!=I+Bus|
+l_9P?3?|_WRS6T-Cep+h~fx>1n{etfxB6yD)I^9ry+M&IN730|d6GSSt7ft;n4}d!e3zIUi>K{iM5Pc
+X+I2Fmh(<p||CC(q;tT`+H}JD269lmpD%l=4qn*41)Zj#%Y{BVGH-k5tJIFlF{=?N2cp}cBh56_-KmI
+{BFx4H6JJYoBUgDS2YNfSA5mfU|VHc;H#J3)E)eDf3U`d)Ok>6-;<-L-LaH(cNkr?(iGfc1X(f#*?_J
+m3(e^wYs_yvTOCm`6MIY at CM{nd%VcAXIz&?V=`j3`U91b)t#7ug2extR>v(OMqZT-8v-~|X4_Zf|I-l
+GcEQj<y%jJDm&zqqZTaF*V`YL)gywF{Pi0q_0)5YDm0eGoka`I15O9KQH0000800{-FNKXN9T}Uzj06
+oP303QGV0B~t=FJE?LZe(wAFJx(RbZlv2FKlmPVRUbDb1ras?R{%^+eVh)cl`=PYA?Wqf^Fro-R#I2x
+8qE_Cl8P9^kk2$P#^(PXpsN|fR>qd{`=fl6{-pakaE&9*>e^ru}HA$*6Y6O)~%D^^uyC&UZ#1moCMou
+ar$R`b98ca5<Dq4yDDE^H$n7d6r4SHcy<c^d>Z^cFOpsGGWkcoiJ{mx`8+G?EDf46Xs)y1`L4Mxi{NF
+sXl|1#3%)A1MVd4 at yn_!}6(rDJ(Ny_t+m!HaS!LNeD;k9LGRuN*o;`W`-OHzO^R@|+A`PB=|J|z>&;I
+tqtM6aD#FtR+=qO)r%Bl&LzvP>vMOChYybR>s-*!z_Kl@%4`A1zA>hr2xE at 7bRYgwyLo3hT|Zj$C&y{
+NLIrrJ%80(j(Ab6sT#&eKu$cAjmT;2FJtT2*B=34)VgQzgrFG6{+j2KXkc%*yF at z1~eVh#;vAcv9w<R
+X#i7(Zs6WmwDa5>!;KrOriWdFW1mpRVdn4tACVvF%ICvCaLO-K5dKk^BE4VNY?O8eL92JW9nn)`FWdd
+q2$lovcc*_R?m|Se5zs9isiJ~ZL)eC%(nR|otB%d$f_PdU%z_w{6&`LRW@(FhQ(ar^4G!Nk~(u<_W*d
+2L0{@-Ops`*$H5OTzM)SenG8U#WCjq;IV0?X`5If_p2N_`!8*CgrYXFZ`s=Jo5QeJ%t$dfCq2@}@^gN
+kgXX$iP!LX}lhqDP&Je^lr3MiZ>E0`CchHaHi>s3-;dxuqTR(UgB<g1KVWSKPx at gFc7Q*2m4tzhslM@
+SrAI9v*0OkonIfO0hr`DIqY=jT=VcBke at epBPX7Hb#@w*CWjcY|-U^zU4XW>+fSUT2ve{(s_^agf(jM
+!<Zw%8rhZs$gBu6?w$~{Tq50O}Tf|(b3V at k6(WM^u-kaK+!5A9EK@~!k?now;zqpql at Hp@!<3?mmiJ7
+(b1EyAHR6{^p#z-3jg}L{&0Sc<8I*7Is6~RACBP9pTaSgd^S4z`qj7JOp$3k{qEKD)&G6|)M>8C-ZuB
+IoAv5lvVnz|6KlHvHo9&`U#wTq^p{V+di=vTucptw`||0JP&vGAnoT{qe}A*v<ne~sTU=I4`W_w~rP+
+ceG+C_(trWJ=*lQ%t^Y6+c8!<OIK0ZET%x<<-5kRHDtQ1hC;HD^Vi(s|`4jAOXHQ&ZmX#z{0tdXE6!7
+JdkKng**Ahv6kstEQZcpR(%G?u_-7-qMz*y>llK=81}0d{(#@eW^}2iDxsZ}U|S_z6E5SchXC2Ti`t%
+58K0ar|IJMY&s2BgU>xH_7}aS;8y<hRlIr>cHU(k%w0}Gx<2+njn8}%jzabDwH at NW@g(ZOiNIgYb}*N
+j?dz^(2-RJV4abl;FMNbShrPiVu`gV`dNU)B6tKyszq76jOoo;0A+rdZHs0bd|zaFmCr|U at C@cZ_ at -n
+`3$B6di*PuRDX9a3a6g&Nfw~%KGGEofESo1=WNS at OC%c+D!$cc|q11<Enw85fa2+62z@~Y#g{9t6o$G
+SDN&|#|H7n+%VJ$Tgb#OE-)R at GtOjKUi+blSF`0;0d`HZIt(HtpZnjw3be*EAps<YJs$?oTIu-J at IjR
+1bKu9ssOWIbx}2ZTG$TTNI}2T at +k%L*5DwHqnSSZ`NNzFB4NWYq?gs4hX$ma}9A!>j>+gJlT>gG2e@#
+WR at g;0GA-BCi1Pxpu5;7uhYNF`~A9i&by39j<p2uB2sPC*iirLt_L&9a2<!Ht8^C-H4R9fC`tLQZo?#
+H~KArm1-TjYYE3BMc at NX4Q(iaA93}O2~ib`1!>NKm4!B7-B-~dB3Mgg-_ykwm>Il`M&rN*E#R+{I%%3
+Jl3~JpRoP~h%(E%Kai<O+DI41*BbXt7Guf)ndZEz7Lf^TfE+x3+;T!Rx=<C--1|Nm+M^x8p=po{Q`Ql
+^u#s79+oGETdgiuydIYaHB!}y3daY at AD6_>7qQy^=Q#K<#}hF at nE=XY3NU2ZE_4v>tXyx`B!p(u=-q>
+7inASuwt*)M16GyMhSo4>0vvtL49zZsYa)vg0CTP~?!_BNxxx7RDF04nurn}TNLR at tPBa4fTWVhFS*f
+zg4?Bl!&q_3d>&zYa)Sse at g)4Q>;VN+1%}Ni)BWNm>F2OMt@&tT)LDI2?dNdgEfiN0Mcd7j;8yk=kfA
+o!~Zau9=r^ivksQ2E-hb*nFqqpoH=jw*@2uY76&qO0a>!C2G+WLx;wbVxA#{q#f-RxFRsk%?_C7I7nt
+W{8P=ZM>6j2fC-$@l<+*}<e&$vO3-m(Q1*m(@!%s|1Y9Sz2q*@o)4Tu;b}AIa{N+59`85e&As9Z-pbl
+urIiM_QH9XLkJBxC|&?dp(MEq%_UX|qyq4~P3(L$S}-XVe+<`yP;*GITT#`Y<yK(vBNo(pS)pP(tk65
+zk}CY$GrJgfVlA%OW7gcr2`{OR*k=t{W;EgkSz0X!wSdvz7AvSl*gg;!U7z;ebK)kD$6fgoV%5wR_*M
+T~jAd;To;PB5-UJS7ta*7Bdf+CL~MAYC*>s+ws)G|+o$tuu*cdClCD8aLkq3vXaK*7ewcb(_)10gnRI
+HrYB1s)Wb at xKR=OV+*Udt#NF?wy{8LcU0<}TLxz2>V>0`(dx5>X+%XM6r*!cgkVm|jA0Il!VEjkv|ec
+xGyvi91C3H8r8S8O2If{RZVm;GH72Dh{TY$doQmrmvSI8AsPZ%~AXXI`I)heyvgi~@Z4R1h#cN8`X3&
+<g+%Xl4OcHHPJhz?*NUko((AKN%dSm8Yon|#Q(a&68zf<OMG&K!P1GL*wwQ$@bS|vR^<SX<T1<U*mD7
+#XL>}Plhq5x?G<PI$GW<y?<H=sx(m(y$lXW#S)wEB|Z0tiO^j=2G=(KB){tOyeT36Mm#Gm^Yk6+lE2?
+-GqFO8*|)%YB=JVK&PM>5$`VK&pUJ(M?1|HUT23UVzp_^5r&XGeJQ^6!No(D#4=PmCdtuFl6pW;d8Qy
++EFU|M~yQy77f?TW9mAHW;Se?y9l(`<RvF!UMsHuFCWDp81oR3YKuM)Mq27gL~D0UK2qYTddz6RB3r<
+YtdbpIQHc|~@lPfQAX9Mk7$7wWc9b1d(wsP&GF>=Zp(%q_Szef62f<N^3#@f%0CF||gZqF_2QWE-YNh
+=#Ji<tMtC6Axvos^qhfxA;5<f=#JKzFpGH5|1Tu;=omf at 4Qm|vGA;N+&t7NFq6JFvZ5<zmrAEajl^FI
+Z#ReU{0D<^WCpdF#=R)yt at f@q1g^&}`3xSJk$agLyq=zu&nA8H0LLqXHb6YP;Z%DsL~C1>f=+M&wA06
+zq{O#a3M%xvK=77wPhWa>$_t;dtaiqV~AR8ekt?D^7KDY;<j`M`$nxUMU+19<m?32N$035~C%7+R<%E
+Ym5pwAjJ%rbbwnSfEQ_=f;?bzE%mVjRO<m3>ee}f3##;0bmiI1Gs1G&+XRWf9kQ5i!J9e`z)TxiyrtD
+%HOpXc%OZILid!8hhbIpL_cG`eycz5MwfKvI4wX_a2y21<7ktUKkMgLnj|z}VO at 6-0n_UnA{<LC`N{o
+o7HR#a736K_vt at OwP#Tsyh92dw#8!79Dii5O-j-?#-apo;`)^UOWxJOXB>!UEc^w6y(KYqX+?p9`xdY
+opUjz=NLxquxe$k6XqY=_=M8{ELl1N<g7*cXR`>|>SIK8BD=yRD(NGzNs~<EF{h8`fwL7$CQ*kEE>FA
+;VKNfXE?UN_o|X6|Cplz3l0qp>dZ5fNgNir%gFk#xj_^i?U at 02Mv#`1Eg4Vw&pCBg#!rNSJ1UPHqnEQ
+8g}q&XxF%D2n=sd9^P4&q4`=R8?9^>0q%W(owCeEwoVE&n*;q>stWXnX9()k^50~;IylDR9FK!zncCx
+)ryQ%PJEkQ#hFLiNYpZ~c*^y#^^)Cxy4(<w>()%InUT2Qa(EJHKefTwAmA7dB$!qo1r7<dtK2It&K%k
+c7!^clNCoS8}gdBlMho>R#(uC8{#aHz9lrZrgK&T!x87Ofq9xQ)ELyq0NFeoAJ?>kS3^d^E{jIl=}J?
+!pJ9>20h*A{roO|Hy1k*>6lOgojyy2icYtO9dnQ6<Y>^#oQ0e^)CO^I%!2$d=1<*JEt+t9$iCPZOxNq
+}d}l6kikKUHxublUBKtZLikQUt at EUO|!@@13h2ceM?r$attW31e*>3tm9=>ZZ~ygs=_WBIdyP$$MzhT
+RldY|MFkF{5sdcfHPRh^xHx at yN&fu%jziz5d at +GSE`*L6XIIxT59Xs(K~~yq9nt`AYj~n)xq4j}y6T*
+<LVg>>s!))-*hjtU at l$aZfW?Zar?F2w^mJR`^f#nw>7V`B2~UWvgp<JNz;Jn?1YJdK{twquEJat-(r~
+yQkTFzgV at jgP<pv6K at 4R>7Fpw}DjrMeg_5IU!252vVwy*X!ei6n}6kY4ln~Sr_<!D5b_YE=>o)vPlUk
+>!+SL+vv2hu at 07~;~ee%&S&ZXQHoUc5<GITJMXfNiMY9-1~bnUPs-(=Sn0k0*cRWeQre@>+*ox at N<o(
+UyEqW8Hyv`U-`6DBtE+&_62M-7dvP+y0J5CxYk at axFlWZu*JU)w^X62PZ<n-xsX&u9Eo-vmZ;L1u%$j
+FuJa?;Pl<%k{F6$GA~=mIcllzIgmHuqxjQ)UO}Z>+B}FaQ5}Of9mbWY*1wQ5;d5v1gwIJRVJ#Rahy1B
+V)p1Ba30#)qK1foCB*P1e4=?J4%O%kPMi9IJI?)J%8mMoe*5dQTU4TY5Wo0G|?olypgx~Bl9jEL;#-d
+_Vp?THkXcI3h=}qESHw+ojzj14j+^!8<F|tF2yHgrUh&@ytHq4_J5`vQiXQ#B!8bqd|HX^kZBZ|gE)a
++ajp0EdH)owXrA8?NhY%^pSFTZ|#_UUJ1c4K_|<)?c*7oCU{>;s3S)Yl0>LLs+KKXo-Wj79-Hu(K4dI
+V4dlILiaJkc=ElQFKL at x7nD|x4PR6+PEqrk%Ag^v;`I&T<#yJGOUMm%UEi%i5Gd1tkjQ$4yH4B#Kvsv
+QZlNufi3&H^Opaz*S58-ugg_hQx~gsVtMD5t1Kzn-5o7bDf&n(_(FTElnc*v*!l55<T5rHZ^})?{I;E
+bW%!sy6lq&#iVpNtt75M<_C&kFFQl+7Zr3SMaoy;^*a4G9;OUUs$dPOk8enWdj}C2&-fCk>e`vk`!af
+L-bS(~NA_OMcaOsfRMab3a at bUtF_i!w<_0m`(ArRaL7QBhmf3u|Y&Tt=Fzw>5-mzBZ~(4)A{8VRC^+9
+}MMXf%qGG_|d1njhIFla}4Fs`ZsQZV6O&C3OIl4l_pAw~CHD|0;p??%NK_*+pvwV_1%9CMp$IgGFhN!
+|0=K*5Jkx1Y-P%VXWrvr@`AnX(-DedKf<#g-C*%th!D%y>T1#aFs{r0n{1?p9g37=L7uu at hEh=Va&z^
+{b*NLXm4I!jd2gIyv5&7rGVb(8*IHPabt+5KaGR$Tj$xGLE(l%L9Suf+h)Z7PH59}a%Jv3Ug<4IRE}U
+wD0{B1SjP<N?fkmiuC=mrwIi;^aR<>>k+$zdw at 1cji<?zF+mW>Y>z<8ZPk9osRb^q&y$a=`w-p_<-~>
+!`*p(Be(SDNXS$Ppvv9}%DwvfVTMg-BldK8Woz%k09ERt`dxDBCKko1nSup4tHw2E!}2j&osDph3^JP
+OVx0XiX(<B)zQ{E!tVL at K~UunBEj<b)!BFrvF2w;jOJV#Qje>lKTI3tO_hnXl at 0=9J4~N+{Z~Ja15hs
+g}Gp<_)Vy#5zGaQhdF~=)p5bdEs#ud3|2e1k#u4F8c*<25c(VUkOv2wjg+WMX&PB``C at -DAOznsTaZH
+yh6v~yq>nd4qFPeLUFR$fQ=sYbY*{cx`VE7at?qn*;zOUz<QKYgLDCmo{a1pJ!`SwxOe?8{im^dI<H+
+a6o1RD(Z*P9Y>e$&ISda&IvJQ*p++i#r1-EqwTg6VI*`Lf$4Hy!!e-!OcNY>%?c48Th!j#P-V5$Wr&_
+CPQh^K8jjSHc+!cj(bxCbSb|UDjID6YviHEAWg8Ynns(ke5OxhhaB~I4%1o@%n3jh3dMBg24%GP1+U`
+bkqv;$DF7lPU0RusBlc)RB1T~fYI{lt|j-L&RU-ti0H2HmbtM%j|rw$&uS95?P?Jb$9%%;m2WX#UEG$
+ik?WI{5M1Z%(0F8w}}0mj}-%gc=m#vf?hxlLC2_3X37Ssww^;Sm#J~HClIIz>@{dugJb4&W)nf4q5la
+A(M*z;fFUs&em4LAwkHl=4TzT;_zTvXc>4XYMC3I1kZJlC`X-vO3D)rqksw8&U=H}sBC1f2XCOD5+DQ
+BqqCPBy|`0-lEeP(zyn%(Qvau8`&4u)JBDKaX|X#6khXqKW(yM_VMAfSuPynz+Lg2~O;45V6+;)zfp#
+tQHiBPo5k_T#6>!8Tl<n+rCp?+zuS9MYZzX-C^<1B3jrN-2QZN=@1b)6?Kg6ZKU at IuNtoAkfi?8^gxD
+;ouD(}Lcu7I$+EvvM)>Zq5%iZ3pED%RWe8a+N{J$dJ}B_0gZK#CNYj-c(~=f$FA%BwFPbY*4RDbrKnb
+5WRmiVyX8Se1JG0qRkH0qqfR3m^v5aPp#Ou=wmB0e9$b128)1^M~|%LVN)Bd3hXZ*b2k{^YZ)e?kWwj
+URVcM6=tQ$szm}a1!N$+1ftl1(zVVdY<#gT*dK|}Zv>Av_0@?+l#zhlAROt4#CyxUR+<<CdJl189%ko
+R|HBB1{vdGj1Lz2BIn2?*3;%V}!#+)EP39QA^!G6x1^OZ=w*m()x0By7MWOADA|O5oLw~yHFU%gx$Cy
+?k8iCr62O6Uh*dz-w6mL6PFLowIMYWE)?2cTs2TKp>Kzb1(al0ZQ-7i$qL&ZsY7eSKVU4*2+Rd}S`GD
+Cb>w1QMIJ&&$`(aw&SbDLaS!|Af_Lj{j%z4UWiLrB%yTse%>_jCDnp!?Z<FRMSG7bn0tZt3_22PrGHt
+~0H=HwdGa309?{@4(jAppSZuJdM!j26_*Br?_v)3Tb#3q^A9*p7L&lDOD5!$|rA;mH_2bx0DazOBdsH
+$wSqV7PZU0S_!SgZ&6FiyCAty;k_{380Guy@%X?TitZ<UGst?~i3{J|$};D%Q}`ea)nCiOiB6#dx{A*
+MogAM0AyzX8>aP6efbcN!)Mf2f2I-QEjKYsVk;zi=*%{Q`<In*s)t at ea50z1&DibGvO(&N)h+GGcd(x
+u7s^EqfIz{Uh<^;oC at +7Zzrz-TK%9hz%K8VJV5Nh*V+&AdY6?nKqUd*pCVL at KpsO@(QZ^vI66=Z#UU1
+f{oAj^qE=j(Nr=1G%5%NyKpOtVzrmG-aPRTvPa&k2r!Ss%AhITJwJ2%pTC6I%igG^bTkDJNB0Zc&RQg
+$;wcVX*oud*IcVQyB>ehZN8I2{@dDRaPtkmh4?-Z*ltDlM7QEX<(%(!r70Y>nh997n9 at Yi|3!in}?4s
+emcJVaCH1Gls9MaCWJTPJ9+Ujym<7weqF%J(d+u7(HBS9f&&Xrdf2e=)Q1HNURbb>B7o-Y)hC@^ed_k
+=GZPYY35Liyn}T=v=OzF7kr8}KsV(g6Pf+1=d<}gthI0`fUw#omTgQ(sKN`6}`?D5srmg<teSS}2n*`
+#AB1Z+AD5gbnIl07cLo*}69OW;XA_Hgll at e`+LAVAPeeb&Z)|wAtS>SURgA!?|L!s<$3lhs7J(Rhd;^
+FdQTDi*+Ui_4t{_^1TFMs-9AC2!%{(An!zr`o_rmtVWJH6D|xCp|(Icd}Mk|6ybVlm2$)+&`1krdYD6
+dJSyO$i*B&s4(-`GR+nS-B;*bY8h^Vax~eGO*p(dC?{m0R at as?lz#1flb-!hf06o6}Jmh`aA--*jCgf
+VzJtscL%A?`LkVTFV69+92CLr25}H(AU?L2?l+&wz()khP!J`Xs}%0KH~!Jnyz<v_Yx*2-V;q-QsExP
+w<S-I>yuc(cuq*~HJ0VDFOPSFY!@Z)gbI=75J7U%SVR(sro4=fyUp}TUzVY$zpO}R|HNSioI%Xu35*u
+S}gUDdbFCRNP>Y)3evu;va(ld6~)nFK!hQYX<MXO{zOB3J&L3r=py|cIIkN|TyQk4H-H0q62A|;9U4`
+AF at 7LNbSXxmcq6>yy2bxGU7823`q2Pb5x6Y6rJ_D+CT7L5mMcw<z-$DL6bPBRIbiwBq3FNB(%+s=8vy
+7ZE^pk4}n4m<uHYp);EJ1b6gt2ou>ewbzua?-C814#N<wJqv4?-}O=t>v6Q&cd_%-~ScknuwdB{J~>{
+4XPM5@}po`maGQB=S{u|Q30f#3JlP~-D*jUR8}{9tPKB4K;JC4(6gkz*4 at ETwhA9gy{bLJo at U948S9&
+*%CYVfmUyR63(g)Zyr@>m;!rkLwG~{B34&HIH{pbGosx%YO`1^4Q$kGX3I$|MXA{ct8vi@|^A$=R+z|
+xr_FS^OMk%Q6?C>&R6u^ls7&HFy*Is47+7IJ{S;cle#c6|4oIiZ<-W!YRcXwa0D$B;*T<nSosU<z*n(
+}4Lj1n}D6tf>uU>Rk!<Q0>ABX#%mpn3 at Z#2O-$(~)2i=(N&`&W4nZI=wPxh<gSvW|(ba5%6n`&t`rqK
+x{zjVJXt-+QSET-f<n;W%W}1 at 8TV|N~$?LSF>sVJVl<-o3CkF;|X6^O!7}nIc3}MoRy9EKk(m9v00K%
+uS*UR at PNT!9XiNU0Y|_x6!2-6G1eFg7~h<xfa~4hI8{>P_yx at BO=OA(BUjQVpH47SluCLvBYBbYM)j>
+a_pg{OpaQZX0}>sN<)+4*I+Iuvkb)#Oh!<O6_P~r#CV_1iHbi4>R}EmmIO%vaQQ*7;IhYrmQx20@(RL
+2Tn=4d4rM{7>H%Fz=?HGn&0fJ_d?Abs=aT9EMr>bR64vZlU`IYpG@=I`sID~@c(M%qrb7FDM7*=(mya
+qL+XbqeVNlQw`@{T}LFb5dk`5O2?K!;UBG6ZnM at _?d)D31+(NBBvKbT(t*I2y2g)JW~1L2?CATuo9eB
+`niGLHF>gHK{x=Q3C{=HS8W`nz5Cd23<m5CfT|yB3oaOU-68xbGqE>u?qES%=NoXfPoyccz6n288n9Q
+*J~3*vmLZoaME!61egiREGOl{b=0u1P33f13!|+||D2=yyU92^WSf2N7L}KB!%hxRHSiZEo;umFB4Mg
+&)LqUwg^u(rL6t~4Xf0uTgiy_i#{ktlE#7RKh!Q4qJMRUu;X|GszG-4vyIjBT9w3J{8N}`xtp?~MCDH
+|~lYV at f|8PqIHyV348Qa-F0i!d=b$@Q9(@-IYQ#thGi><Z85=nA#ux02mI*he5@#Bzk4hG;uM~7CPK5
+<oxY at J;^AUb2^`m73krSc+9(+oKS2VYr^lh<H^<;C{xX_UWC|NPmzw}1X@`q?M%l4^~a(BB;vFI$DTF
+usq^-km1v^s`S!@7Bq at tlyq~@jCrz^m=A{U<l1IKDg7jy=kt##PrJSeF*4a3#TSkkWTe+DrNC};RR!6
+9qjf(Ijrmm10>2hm<Kuu%ihkaj4MT(a;4tp4aEWITq{<d6>p-HDqDiNmQ|)3NoA7roJuqEKH6u|w9Bb
+;>I|9+N#`&+&@yFih-QrQ)aEtvVV&Qb?6R^=s+myI^0GuLUxTBXdy>BSaiZ&ok{Bl|qO=<vE~PkFZ77
+cpv8fKD>pLysq5&P7IDMp9h8!m}N7p^*Xs~5s%J}YtBp+ at SND5SwIaBgS+z0647JY{tW9y8gO91%NOt
+(qtC8wmt3wHCSh$M at v*v-;In&Pj-ymRdPOsF=WMdTxj42MGU(Mw9+O8bB$CJE2y+f~x>iW<o;se@^cm
+1?PTUYF#Q|1;f?*imcAJoycL`G{H8brMW})Xy}jh9|@Hs1t0%GTAnRDEETTUc#xwa4j5&najo!#&>9g
+4|DOV{~qwr>4`Aul+1Ox&JY3Uq>PY}dsJp{0{ECz3$JM?`L|BRw}9_=ozNccLzr<OD3=4Fxr_P|VIOC
+Th{6eU at Zrdf&BPq`C2dGkIwH!agEr?1--cZsp{Ec2epnT(BsI>d41 at mlX)vZ;gU2bB(05^v$t<wVy{X
+$+MH(_q_|UyLsAMBrWksfIHsq2ZRQ>Utc7l#68zC~KylK4zyjw$?EJ_R;*$|PGoaBhztrNrK1=dWm9a
+B^9Fu?Y at WT)4*Fr5Q_4h4n`Xal$=o$ze!F4s!rGIOmzuTIOc!F at SSmYH={4|nK$!#s!)F54VP`0j+A9
+LWMz5|H+EOsSXO^`3OYXQ6l9kv(9}GTiW|)fqf?Mq)*%zqKCr95QRI4BRxZ8GcVY5w at XB3rG1Q0G7?W
+r)5*N@}S#&i~X52dhHZNo|-Uw7qi<Z%ZlmFNUwo{L1DLe3rxzfvE=bh-jsQYM6j%b$?0B$s7dOZDaMp
+}vgN_7dlC4=o`sjn0fDQETYPzguCh4nHqMzMG{@1Hzc;O}$xtMr0<fVmCM~LSjFDE^4)fx4ovlmIz}Z
+S|ImC}Y{usRa{>$%4qn at ZN?2_KN!0n+{l_uL34`Wlfc2d{dH9A8;3)kQ%SQ+=`Z%fp|k>!DW1|}jIPj
+NGPL8oImL96y$s-OYHY7MQ(5Us_HR&9+m5$y1uO7$Lp*@?=<x`FwPn`}k54{VFP*`bMf|I6&n6AXr~?
+mtcH-81aMYIP##S5E1gs8ismcURc9PA)&=S{dAx35koBHDwu&^E%Bd%9*O}o8#T%k&ovpH%7;u4tfRO
+YlZi9g~lebafHtCRSYJLZi{t~)w$VGQEr;_&d?2;!xgo^Ng45<mY1Ot96eU;)!*k at d8rQL;!)%+-Esk
+S8Cp9G{CY_C*ed%Ox+fR%u>mKS-kkq4d_2d<wbM*C12O4QPB-E;yYSa8Z|FU9Z4cn9OdrJU^9{+|d86
+d%W*@bwXKu*&!FbvRMljs8%zz5LC)?IvQX+)t^29)24#mOcYA^K_=8K{%Q+=vI=W;tamTp2H5N#x0Wb
+cYPyhJo#^>i7Z?!kiIqH6K`MyGa)dqyWCR8WTHv+OUcRae{17pnGUfQ%9&CzW)g6i&l1CHjhCc}_(13
+^t@|Q~RBE7 at 8&587eoIwOm89u^yfVqZdZhR$u8}s#A{<f2NL)s1^ohg2P)S9B$8bsCQ^NT;VR<>BCU=
+0Tv*}W{I(N=RTT+QV1-E_i2Rh?|(-!=sKQD1DrwYTS<FTKH`Ho9aE&>2j{^j4?fwOKf;It{>ljeHpNe
+WA_R3oDtGFx$q?SZd3;<i+n#CHvWzT*t|&4_<-||__YJF8CvS)0=oK1o0<zukW`|tv8H=!4P;v$>bUI
+c?X<yu+%kXnBdcoR1zxe6V<%f@=i=RHf{Al#~AL(uue|VqQ2(~?2rgBHgE}_U_d4GN=$iWZ&L)9D>Gq
+ at M@!1jb08k5~d8<JV<i8eHX;EbR{;JUpF%5i32(&bfPs~m8)lxuJtS?yc^M&6B70mHb|%n9G}L^rWY|
+N8_mAuJ<;Ng~?q9#KAjl61c*PeN~ukZ=T8%U=HSAqE(3s~Xerogzk|zlZY&ikXGCj%;VD<9S9Q6#YVq
+!O<DsrliaM$PGB=U<=y6FE^(vAof)|8~xzuqA{GIEFF87Lv|9>7|vzpIQ5@?AG#?BIKIinwgW<&BonW
+)-;!C4f1R|zLYcOaM at 9DY<Kd)TddgI?F1z8DnxSAI+0iw+i=#)9ad$7GNH8X-Z^w|gIE-A5GYaRg!G6
+IrAc^<dhJl+~z6c)I!7T-LaN4`JBQ~YTT|uA<;+2!;RRMq;o2q;RJxH-qxm{kfho<IJE#?J;_7yIJIW
+_c!0*57${+9(v;2a|Jz!a-^aV++WI2+*AZL+$FtkrfHF!_eb%S+X~u2|l!v5{g?jH%Hc>u6CJ$j?{dQ
+V$n}U(eBw3mr1gP7t)-4$U;IJR at glg1LkT4Ihwdn4gfFrS!yp9rRB7vU at V#`!dL?r+;VEzbPs}wbNHK
+wr&##WuE<GDnI`p;raQaB0NQ#y&u9G`XHZ0<=h6pKZdh*^gh{1DDos(1;pAh*g<CpqRo~zQHESD%hzw
+^ymyB*0f?E?(JOrpp$XJ(?R<wlELU3<B9pR!m)xfM_TD2N5+%me`H|Z*5)yi<q2~HbraqLFr5~VV-IZ
+H{wZ>DZApMeMUXW-_8dalSsq0nE#3}#Ntl^KCu0-4}2GBOCl%@6I+b&zuIVW_Q3}R87Rm01um_{~~82
+^&)^5fk2fk4B&^=-;}`kg{RJlpa3^lo+1VWgCHYw89uOXc)1ZfVkFz!Bh>!@8Ss_oUtYndRt6kYp-=X
+GOMvYU!4OYg&5nfM_YC^J6E0wwWPCGO at RrP!8aaGSKsG>XP at l03m#i*GFMKbQ!tMgK|h$4oFQgkN~_b
+a(L#f6W;dY<oj;UC-ndxhALaWWRzf*M}XxQPyQ5q?8FBVrQ{zwHGQLuE!HM!+-Z4?Y{9<llDg6CEnW<
+6*OhlY)g)m7)gDS8W0dveNieHhnG%e3*z5eLo97_o?;yF*5mU1lg055cctJ>ez(kYw{n{!R6S^oT58-
+E(2mA4IS!GK)-XWd1+M8kvoBmB66xRo$0QM#5#;IzPbo-ns-4jjD6dz#lqXVYGC`Z*$)DG0`jbn(bf`
+Ux8F}`0!3D2`Y#jbev$RMmXd_D0YGH>8!;qE;+Ch||{TbJ+YHtoVlDNK7U_qrVY>Zxz^(*pvB3-zpOz
+xL6a5L_3{_xl?uqdgzhqdSWeIxU*sM~7)vVdyC34n{ptDRp~E=R;NUccUEzkX?{&hyD<bN1iQmI+Baf
+^*XXosDhr?+c}1U0N3glraT-K^RiP8S3P3$zD at K>qC0RvHn$P%64rp)tp<iCy{P*sb~?B6qWF6UI5Tv
+vi|4|2UeY at dS$w^OU0(O(+_oI305Q5QY7g)_jh7VU!#gyt#=j4&S=Bb_+b|!y^KNb*whC-GEydLKy#r
+%8+cmK#W~%Qgpr3z3KO8_*M!!=TIuyH*((wY=^Vsa`d)g$wzDLK?78$I&4!UkC6cYXZ5yHD3X9ziD)U
+KVILA*y1ROz?PO8r^F)q_V4-crzbCKqX-r~J0co6J$d#`?R?IOT;X?X%M@^5kNp?k;@8>vekYgwXX6i
+-B+wyr*HzDUYc}e>yw|KHc3g1iJ0_#m!~#4zP8w=>B^OT3~&!(zItWduK`E0L at cRDtCsgSBGnOHo1ET
+U>%%(_-A7BC<sthV2(|pEqt;g19L*%hSmd(tT=TTiG?1B`UbCO&v-LS9o51cKPdbv at 22i!Sc%$8t+^9
+%@Re~JJ>Pxp?nU*0k|W2QK}=ukBf;9%xPnD55OufD8C1pbgdp5D06F8VOaS8+jQyhIVey-~>;XnDrFu
+K7G32diS}7^^2IjZPty_Gc#U5C<MCmj(wHad$kur2(3A!x~^M{e$(l<&DA)vr~yoSjhwK~dFcKvUje!
+&colSK9+W9tlBF8A5NA~zW2hDXYK01<QL8>9RgCo~t9+X?pG at yl5K-Z%WJ>fOT{b}6}OW`KG<y+7bGn
+1hF5KDGzg=>S36=ZOx?>mY`~|39~da+tc{jdByH?`%!NGfXEEmi2v)*S6cl#=OPIHOt5!iBt(j6sVc=
+ol?2z3XGj5T1t(iV=9ori&LH|b5#JQFDYQ&!H!Pg<#Z_;O!M=n&x23SJ`3*ir%xWlM^11#Ot8mD^kR;
+==g{N!^Jh`w!(kYyzT4z6Uq~94)$%^y`*HtH9!c}E3V%IuH-<b*=rxyAOy_Q7J!1~&zTZ9m_UZKRPhY
+%z_WgI$7f;=D+L*Wy(c;m?>)X at Ik4CTS5BHqSuEN(5CPqBR%!H#a5CE*zql=$LSbg*-?3MV$w8NM)HT
+iRPej~}GOy?mTqOxvV(N+5Fa2YpcHoB7mKISy^<_TuJL&%ZjeYe2$+l4I_s!x=D&srtBM(;gswq0Y`B
+}tmv9;Mcu*E0u?)6 at y>(8<VXjbiqfP|6Ed=-T`+{RszeuS*rqfdrd09p6MscQU<lc_*p>Y0n`xJ6K(O
+omOp%X-usfo>UTcbTZu-xhb_LuAa_z#0W3&pN_M*Eq5XJj+p+cQKvjzoUJwmV>Jgh>$ENm4b<g;6psf
+Qt%@OtHa26nhmY&l=t-uS&awO-j@`?)?J3d2Qk6~DH`g>=-jNN(K(;DdgB^EAe0xEaT$IztEcYT^>m4
+=H6#RCi<FOoqcU1DXV4hB^;laM1LVncyZ^t=VJ6f#wMm*&OR{)%WQ<<2Tql<fHDHUPRRZH~bIc-?_p1
+Qk|F}BKn?!#C<6|81X>GB*DXI<#(ARB^|sL{4mTZj(Da2dd(_I-PisoP{^=Hx9s_Nm%fQSk@@ApVvCT
+=jS at JKCdh&u1%!+RHw1s&sjM6r$d4Hk7CG at 7(Hvry@@1;3DcDNprf!BLlFma&a0ZTSBhj%grz3g}squ
+W}O3O!{e}hX`;Q#k1eVoLz)U6RrP*s(U%0<yLS@!nBZkNs|E5k2YC*{9>dH$0DtO?^lHxy#b!U6z9!6
+3IWuX}kBtuM$_23*@d|ca<9Sl!Im{a4ESvm|c|)H+bY2M8Wfm>>UvN_#+rXU2T6^mv3$=b`apnnK=Fx
+j%h}}Nt&gH0z8+W~1!-O%|1RL-^uP&AFS2n`3)Oh_~yn{?)m<Eg-tFjG7L#Uv7fjeeT3%!_ujo7!t^|
+)!W^`>C~OMozoV7nZgm8BqHvCeVOUP^D}K&0e;6jt)aiasIx07a5cDa)IWwd6_ES82DVYV@~&Z^Ks3w
+kNub{_Ww&Aj+>O3`Ff*slo8|;a68`JXcrHhZ>`7P-Jvzt2V}hWO#K&BZq22jCGd}DA>#k+L_~AwXjOE
+;jiWwr?exAsF at Cg&<CJ<_(7I<qT~O~{kJi at H%L>Hux?Vl`b|a!51o{6$hlxnXNv_A?7bQ|P>=-87S~(
+t58^2nFiVi#!I(nea*co<GP}+78yjn)^V$m^^)6)RAvdCh613xi&I(y%&!y#bPy?v at mNIwhwQT!Bgkp
+Cz^ZNK4Z=~gAQrGNqNaoL=RucGDW^N1SZK>B4MIk6v_uAb7*-(2mHk*N}F=@TF%iVOph`H5PgoOUhu6
+80>95vf%)8wlLt?~*h+2pZNr^EIJ{2{=Ie!)w*nn-tS<mjyj=k+<UkYV2lWLdi=8CC4f?B_uP8pptb8
+?8ZY(|Bwr$}k{nkLB6%Q}`v8KbugG#6nH2)z1{Ejw$AG%6BSDnrq`eadzJi>2i*xicA4nyAzzHqJz<S
+=~d=be>ysy_?ULe<>XkVgT6N$@;D$%#0+2RKgnjy1!{;YmIPl1asxGpxoZp$oirIN{5Y7*w)qOoynQ)
+n>M}6T;%Moir<w%F)fFx!@-K?LvF=RQ9$re1JlL2LKfx)}1 at 1(R#V0K2VYEC5YFn&8s?)_KC=gj}CzK
+aO#U~pJs{H;+DEMO8+Bi1eCRK$^?UtF1ncvB^81xX^gmkntDpw+2M)Zb~6t{DZS?nfPf?Vm9nbj_9IN
+do<KXOijftz71msehxt1AORq4Y)v5M5mnnT==#Sw8l6gfM4{UhHWbD?HRIV=Y>TBIaN&>*iDfBiZ9)X
+ at 4UBonAY$tM!g{K9&AJN8f7Bf6bs+h0yh{uEK3mL(4V#f<x%3(hW>PR)^a}+~b0&DjE{r&m<e!np%yW
+qRhWhWP2kG<H${*&if}l at 0F{`^E+{Je&5=BEw2!Lz<dKt$Gk=o<BKOBPAIt8WHPp<(Egx2JXFbM`X|8
+z3lhfx6=@6l5#j*upXBo#Z{d>TK4~9t-1DM1!jPF5o|+LhMjzAc%>)B@&E6X^p_cS83ERDeh4m?QL7>
+megO8KflS%0wrd=|tK*vhkTh>(woCd9}0N#wS`aa0^JdY_BjnCb9qu!uYeD)t$mwgjH^J;W>$o0r|Bs
+GmQQRMZMyC1U7zO$x#SEp^tw3L?=vua{9vzn<QCn{4qh1haLDBe}VA1L_G9+u-3rgsDW5t(wTWu~ID2
+)ai->nK at WZ>&F_-~?z5FSXgEv%lg$sNzk5u;y+SHGEhvJ@<6W<JpzraGei$8U~U~I8F$PMeevBY(Gh^
+SQ%r*7B2u2%l=(^=wjM&2~e9>U6x+nf|)8<cTy#4`Y3EH>W-4)FtQ!z7DYaVyonm6gr(UVH at B#69TV_
+O?$r~dA9H8H=|?umj6LIdM>~xuo at J`Td$pbbY0Mri4o}U6%=|kwjqe0($F3kZoUZAKDp1~5g;kCZ*5l
+Sv=`&QBLo#iBR~jvG$O`rj*b*2Je$Sb9p7b!^@nJkvJtwFU7i~9mOqm3>0Vbsq<xqF*y%vbk&RCb_D-
+jBHD$p}wW~-E^MJ4w&b at pDAx!Y89ubCL=$lh#0vVc!`mw=V5-QdDWk4+QbROqmtzv6JfRe^z^=XwCh&
+|7ao?Ax_)h8`h=QJ1q1$5 at eQ+3)9-K{JLQSRQjI6YpXgrYO(D*qH^zEP7ze_;j|oC6ixM+92-|MWdI)
+-RtyZJyQFqd-#aR at J&3xeD5l;)zjlxu{<h0vp9^acb3z}V6?p646i%hT#~gFBxqE`H>L5|4Eqo~LVq(
+P at l6G-9azja+(skYfvFJLgTRKscg$7M2GmkoXy_CCekl9WR^F53&Q$r7vZ at +gz<|_vAI?+b{Wxy7M=`
+XR7MDeyN2wMs3XQX!`lJ5>P)h>@6aWAK2mlEMt4N^>BzQm%0015}0018V003}la4%nWWo~3|axY|Qb9
+8KJVlQoBZfRy^b963ndCeQ!a@#icU0;F3n<42+Oq0IsxN$OG$JzBXwllW7?M&=dAQF;TQv^$pmNnCl-
+*XNC61>Q9;x<z~#1bwC=Y9jS!zQ~E7Rflt7JIBJ=aYZp$Y^J@!wzM>DU!vqWd32mUVi`L<ploufqmGN
+OPR3?IWO0|5bT|-vY3~N%tF|8Aq0DWe0X$vaTJz!CF5Dl4$n?6&yWB0^X1w31rEZx(bK0-M~5j_iWMR
++gc4Z^IIwalSemGk$vK-RsZcD*7-umI70Im9r;Lt%uaaAy!X8#inuM8Dg}4KEj~Oh5{dcfm$(3MvA!n
+&rsgTZ1R=F%-K3nlJTH2qfTr2<u`%^0Wtq`NpypSsvGBffP&PbEl(Oo2RM9EA?a+UMaE}E-Y0B41nL=
+5dzB(qyllv7x}9F0cPDNobsl<l*R-U-i=xlpBdJsKfKqJUw8TDTD9dm8hn(~PggbQ+9+=bT-!xlB{J7
+BQP`G|4LG5s?2KJ34zmnjW6Le}C}d;%NHe;PUe5{1ku|f)ECl`QFvl)q3|T^Ts%O65#rilcUqiqqo!d
+$EQb~)jQ$t8~@GzRTlhlmBE*P1ZE at q1OHqAQlp4uYpL<&>^BjW!QP0$2V`*2k at Boc(h_k8%@TKcDhsO
+(G`~@$SdlKl&r%dbC&A)*o^EjMEiV#TDF!@+1(`z4ST8{wYlHzi0T>`>5g5^zSj^dUnq)~io%%|obI=
+^F#Qv$wghAG>x8ILpal!$60r-G+s*-0Bz^xbT<-Fi4g0sgifdc#nN?HH|WU)cKG=+kJ;fNv}JO+^oY3
+DwuVu+d&@|nWFzWtraVnqYAP8PTjR3uu*eh>t0P+((V4*;wI{2i`WB5yAQRn#KcXUK*2q at 7Ws^aD-uj
+{cW at sAg#rv4aoCX1HcBavz`)f7?ubhjM`_qXfhb5<20B;)a9Rr%x8APoI!`xByro)2eLHLq4EMs79ye
+=$MANOC|}DtBv(ydVFzy^zSi!d3$`Wzq~*FX|$C)&exCE^{PV3(&ciqz2wmiuEiD2`dsF?94ABg-i%j
+jSx<nHi!5$XSuf#WJ=gHlIUNA`L2E*@hExd+546$8wZW*hY7RPtE79rFjy7~!Ql%*^Y1HyJnPdcQOq)
+6|wRRlb$|MH82bZKY<0IgoVv`B`twKkT3ARo^6Jj|A0rTvJZDjSN2Z^@Q(fG}`*aW?WEAYIUe<duP;?
+LfiWNzi|<9yJk7C%<bMhd?5>&@Z)(;*7Yttx5Qq|KQutzO-CBFf$&tu`bc$Hqw|;10L=r-K+wiY&m|%
+E~z5zK=pM+DBRQ!98$H2!n|N8D(rHz^A7W-*0PxsMo`G1ym!A2p0uZlxm%Te{wufhh$vYRi)Z?44nfm
+C`4BD+#s!P^J at ykZyctnd%4z*Ne^P5YV%Jy41}cS%Q=W9NK63})bLyU(oP77*PN+IRp7*g)s8jK(8AU
+JJD#d-aqL`_RgsyEO|I3%DOrFwZf&i9SmvS|!Gp#u?#LBK3D3A~96F^5V==21zGq+{EWqKJ@(@s4Kjt
+iEPaJ>Rw-}HGB!Xi$b at WK(X;OC2#t$SVka(FrT30jXdvLJ#+#6WlB2w>i{2S!0Ra%;O*l1^fb333oHx
+Q^G*~>RiTnn+{>2s`(tnLJA#2nGor}Y`oM$)nXexXA8^NxEmIRCLvCpx5%I(%$d;x2xjmQ|jD14BHT-
++)lxIcp_s3jx12n;SZU>qdK{RPbUTKRCp3N)RGQZ$U4uriQ&#shyd$rrLqJJ``#Kj7C$f at nD?Bdg|X>
+4CjO1M^%Ygi2*rUGLc}8iSjUIhsi at Q+2|xOHMCEk%-|RkxI(Pttr*&ER`s1wjf8eY4Nl-{42i~@tEH^
+c7~K)oR3H+le+B~()0IpDH4{Sz-jrB?$;rX#@w=mo%P`4+6vAt-AM)w5EX#cF`SVytpb}IzhO$^Zuc1
+9xvMM5hzr$s at N_XH~aJR7<WIW`Uya1o7Ys3r)CJh5O$*O#;%}rH>UZ5-2tXj=LBH+^3;Lel-3iv?<!I
+%QG(SF(}QgI6ws&|Bpc|5`z&%-S|UGt3#1{4V}iT3~rPnmk9P<k^SYjFiQzmSfYF^PveaLQ!?g)^4Z1
+|s~$Y(rr|L<uh;@gtrC<^VF(%I1Kuh0mDz<WqqxI~0&|;jkGAn&6`WkDcuR7gmxXm_eJ+Lct0Ga4e>=
+m63zV*-wxO$~9JAH~6>2GOQs2841-p<b#MKEL!qg5}E^IP<)mb$WZbq1lRzDOj1F`=K{gtOC|v9BsE?
+^rMKcK6Gb75NwgHv4VKleb2iZS_nDVuQCh{q+v~Yw%NDRB%eKB-Ho1^yoPjkp%YE|~wJ%!AV*j$Jwq=
+7RWUhIU0kXcANw>aX)Wg66_*voAQgp;Ysi;F0<lv8?N*`+V!2r9TtbRFQSVOS-N9=5&8WPA`Eb-IL#I
+V!mE#5GU&d2*YhAmP#<LTsEYC|_~b3YGPhXJ+>aRn0OHF`pw{WX2IFJaC%RVvM$zl~P89M^=n9DN{=F
+J?UW-KtRFdB2Tf>f&u*hlX#ZnYtg;R3xs!+A#GX7JVD_Z1d=Ete-=CeGsgN^L|nAdD-Fjy_$x-#+rpr
+qS9y70FNvw$#7KsoU%E`ZKo(Ns;sL)EsDB&@hFOhq~53Uvu5PAgPlugLnrpBDS<5bV#W7>B*_17o!pY
+qv|B at D0_Gua!;TpEWraC-Q(i>8!tAY6A?`4fK9*vYr at RzX%;Va%DaW>Y_jbkaQ3<J;Ng%a+fH?Nd{OG
+o&i{uv08tO~;ve}2#fB(gk5u{T9HYwx-s<K-Hz}ckhk3Dw4ba5@`_vhtS$%YFhoh<J==;>0t5jrStDl
+(rI2B_XIbS{p+KYoARG)8Q288?aJXU(bi>84O$58)9w^aJLjfINm9<QvD<rF0y^4%(m5>jj(yDv$~+E
+-O>|g6eYY;MB5dZP!(6l3|<6|9;%8a$KABYPG!Unfmf<-)NiGBCBrpPH3QD`ciG_=|oS)-A-{!WnZzE
+eLwn8_d(}FG!%C^*oR`T40$hJ*I!@0W?>liyvhKdKDw8=gr4qpQ3n9HqIvvc at A`T;wh-e6lygYgKEsk
+9{zR65)L(xEV`{DGaRqpA9XyVSFYjmK{dU!6)|34|Q-L^B5M#k_zjBP_^;RaeEouv=+5!3 at VG{CXY`0
+|hL`B-IdtDETFHW%RCTu!b4i)@$(nA^0cK?{DX(1NkZs?lgLSVa>VNsMV6!Y<kNVVd#bVJE6U9|+dH|
+jP0UynLMH5^KQKpixWpc$O~oF#V?Rc@%UnZ^+Z{qoWA1eO%1!}`H0DE8$rB>r9{rFOy!@5(UmfmBAUL
+{{pT7dYjacO{KqUdgyhArtU+Jqokl8_yz_$!wxPi4vZ&XbGu91Sf(lbp80$OgR^9iec`Az1xZI5W?Ae
+Or=~cu|0<L{fOOi6fKSF2Iq`NH+E4C?Csgb^IwuImTUDRt)hJh=7dM=?80Hi at f;fkC}Qe^mLO*4JJBd
+0_0jD)tJ<1ESiO>kdk>BxC9I$BhWX~HzW3FOpU$PEF?_#+9LIs at GhX0eh-lPsTy*BBKw~zOrERb(;eh
+SXp|z7Xsw#)fNW=zvnYsGK=mry$XKEhWeKjmUDN*%6t87wDOaz%YdurXI-#putl#VBOEm*FFXruucti
+~?ZZ5oqBCh^@%f=s5nStUAzS%a!YG;Sb}-dV~~pA9 at xkA|rhUut$MFgZ98Qr5cPjINFZh;FOo2^K6cM
+#o~0nLBQVhUnc7HfJHLDGQ#dl-nL~Oa+qex#L<GqPGC%ol%1o;ttslr2A@;D2Hh6C1Aq(3F00gt1lD*
+ap%go*=DXj(N|$u(A6~Z<enEJJM7nAe`R=+p~=^ej`&Q1qONU!+qGnZ_@>@(dkEy~y7?A}t!^(^CT;D
+1S@$}w9cZih9*dN3fcR8$(nBmI>;)L!Z at al$`+5xcj~;vA!r8vyaSn2yinPG=qHaTDs01&frBBZq`q8
+&@y+8b}!}1Y@*9~bj=Y*_oMgG@@taG}%dsxVFqLnuGz6Cn^dPbH<g{8poK)UKiAryw!4bb=~5A at S5PA
+~22%2v!I4;?4-M0*#AFOdkh8cAED9W1Fo0A)7CDE$}=-$LNCL?*&T$VeOtjUROK;_w8#?@ZrW(=>#<%
+rT7UhU1$@rmqNFo$2AK_pi0E<`i=qk9>6R{2!qA^ZS)vU;e_XM=5=uy2q>i{fd8SPsHG`6lpq1lN%?$
+viSgNL+#wr=T|9jnoN*OgTW~Mz}F6*H}|scMsXK*BOZl2H<o7YV5WN^V2d>zLPtj)AH+o$xHh^qA^>q
+yP}1DCF^Ks(I4Zl%jdsD-w^0_|o~|UyJ|t~)5il9h7bA7&Ic~3`N8Icc4bJ9Pa&Is&W9>Zy#)G-?w3I
+N^Ke&Hr3xMY}Cz_Y7K!#8e&xOD31(@drt+thU#|k3A^spbVAOI$qNkSHeZpP|fom;oLw93nkQ;PLS^g
+3^X^y%C9p&z(?+?!yb*@7Khx4<Zon at 5b!>sv#h9;KG^)s;8oFmP{yllQRte;)genODBBL$lSd(f^9BR
+k({Fn^S^*3;DhewY7}!AR7cz$I{t2BQ{U at qRR+9HT2$V8==iiuiEX~3zFctO-GI`fB7I+hnw4O&Um+b
+z1mPJU1!7K;NB+lIYxU-8JhgSRF`4x=ONJRq5yIUtT1CKv~ie{s$X6<KFQY)moT5G%Su{5Pogbuti}F
+5GX0B`9jbS!{@68`b~rW at 5x#fwLbEJv)}0 at X_2ViB-0{hO&d>p at 3ke(pWpd%;6Fsk_!cHpf<uxC4^_%
+DtdF+6r@^}N1Dn&-w37oqzw;2e^Y_GQPQs1Vv;BByWhU!G(I;eH&1shiS+SkP(qEa;!HaNmo2T*+oy_
+?SaC5Fa;`B7Ei!^Cv6XC70N3vuK(=x;vbYj)ULc=&%5lw0Bvs#%g(#t3M1tY6-+OgKfGhJpXtfrvKGU
+TqhmTqltj at QLWxT+e1XMl&xy{_mN(#-^4_M at u0w*{WuK;rafXS5L040w3W8yTMfm>9Bz|cHLOlQ#elK
+|4>T<1QY-O00;mH1*=Fs5v~G_2LJ$y7ytks0001RX>c!Jc4cm4Z*nhWX>)XJX<{#JVRCC_a&s<ld94_
+0Z`-!^yMG05f<SWX2yM3EUKq=OuE>S}Lt8A_z662FShUSq7IjG~i8u7W?;JiPQlfK<;R;AhQRn?8Ps#
+bKbFvZ at Z#GNP>Gk=4aA$TpJ0<T$dyssy)g*sECl_ztUYx_fZ^-Ywp$Bq9|KM!_V88GcYZR-97DR6u`E
+<}*(U2Rl)=yM2@{{PAifRsfuwar<;MZu$A381IZ6g`mvqmGW8^*{l*YB at B+*}p<Srgh+<o(AFx4&Nh_
+}lHrUvF>|;AST$C!eTPKx_>pkSl8*xfBf&B6})#Oe(VHD=E%v+H5+yVWeVf-hiCEA)l^3k#D~Jt^hi-
+8Q-@;0xzZgQYgPthkn`CR0FsDY_^tSPl}b;w^S4V)o5M9TWz#43NMHPJ)2Fb4=qy;uhYEtSiC78LGsz
+GENNYrCAlPb8E-U`tz<g8pUq~gnkq%E9%<cCuvab~{$MLTU(N_TC_nzbBQ at W14azYOXe{G=!JdJfQXr
+8kdOWibEt3eXfb(Bw2cL}nH(QdL?jI^jo)_e>B+umXk{lKT$VN{=ei%Wp1V~JUH&YPsPY6;c7=1s2NH
+F?7X4Hs~%#y%6fJWa_O8;v at B_%Nu8>IeXO$!bcPpm4 at A#7w{2&>Y^6Oe<~!oLRGTuePeEQ9L+E<01jn
+aaqS!EpN}Z`R^&d2v5ro{|=_0|GCiOt><VN>+3FP_qSr48-JtBsHIiz?Xo^6XZE$^@eG}icLW-ihmau
+uNNjQO{zm00j5u^C$6`lWD`x+9R&HHP5 at e{w&ps|NVXtv=XY-cWip}4hVIeDLKV0QP2_YdT_zz_Epzv
+l&*v#vFaV<p3Hq(VZRJV$LE;|XZKdJ&bhQP8gz#=F4WFzXh at IN^BwUn%?MVsRb6u9XV)c4qsw;cemmf
+sKT%Ewj*9v^D0iM&ED+a!V&{di?D^|>UfF%SF-Fs3?a=j+1Wh=hstXdFsf+ASlYaw>v`L4zI*INjNJ#
+AZvydudL1uPs<$OylJO7+*57)Xgut{A|e7K5q~isf3;4VuHLE7ohp^btjWW+uWhAArr;tR3m6EnjUhd
+{?wHxk5=R1?0s(ExTu1)~o@!-o6<GhS%&&VqWHf at OM_SrTrnVBMSHP9-XgA5(KIo{0}JxN?N|JfpJk3
+S-%ZkqmvC$vBkEKur-s;V2!Al=}0fwj1q^_H`w0&<lW7!p+S&F+Ez{s;7zsme6vcFwtDpvER1{SgS4)
+Fu|U)XS#z)hgxpIJ?HVM+v-huUy%<}Tigohm&z{=n&kzD^C{h)N8bl8W#H56lm{twE#g)&P+>#Ev{Mb
+iPFe7;Mc?ToX#x#d)58trHqY1Jv5ft$BQpeN>5_g%0$nJrhe~F;AJWSDzCoggODX?jHm0rEFbmtKQdt
+R|tlbZt+qvtEM5+IU<P^gkoJxW+sxMZEcONzB9pqoRF#24!e;=0~|*oTm_YEhPEQYuSWq2{o_{wwnV$
+A@$vn$L_OCqhSi1Sk?1ddsm>Lgyx7yeYEWL1F);kCfNgfah6k+**CLC5_4}QI{!$PK|j|K||4G*N7*w
+g+FNOKGVn<TK5ENS28wSo~rqLoZX at A=5fKntS@)$5TtRC7vLs_!|ynaFb3agdoo~iC>Yeg*eHcD7Diu
+IP0HOc7g at uYk*na9<y;_{KtL!%J>j%~;94`%#R6KgR?H6&VWUikue<_h{Y1f!{g<gz!7QOmdsA66rYI
+r?wAZM4LQaI+ at vu2o#1LBkj~Ibj+%g<a3rm-Gz$wa$gg_(eOm(&PYC4cRK)ZjzFfmfBQH<-{ZV at 8KJ_
+u2ZHtp4ze&1;Z*D9Dh13gtKq^~Zb9SRJlI>x|98N%XB`~vX1rkch-G7!>XhX&3aLHx5~&k-=UD7b3}d
+GjT<BKB(>=}4&8+vWYVvK+I=v^qP99P5!lUe2Qu`R740y88+rnuE1Gl9~vkD2%U%a<yfvU0!dMtsc at Y
+j%4Mn?BZq^_wk+z`sxPCg;6O0kYj+Uj_Cq`&ncX^j0w~HhME^+*`JpL88Aok7~CCjNtPPNJ;81#kD$n
+-D1DVeZg5^k5 at SmrDMI-CgZ_q3qJCYw`eoyXtD%0W`Easvy8B$M*;<F+Ch0J-Ri8FdNMYKEwvR$gz(0
+ALyLzBpC$gfM3zzYn_+m^)prQrlVU0OH at i_AXhP$FLy7iYniJCAqYuBi*#oH<v{Vk^L4CcHe+R^Bduw
+YV&xcKxE-HG-d)i<h7^cYIaRPwmG4Bi|^<KTZM*H=`ep(7saEcVnj?JEzWI>e&~dMZsNT|bQ46;3lRx
+7?$JF5QbA&9EOQIK at r)A2A&D at d@Am(}?2ePKMNkH<gwzy3vq=6Z8z>`^(te-YPGEH(Pa>17+f(#h(<f
+JsO-xEuw3kh6D9Bs#wdK${bUh at Cw`A#JF1+OJGTE;TZ0S!2sV&X3wcha~SfVpkqj3BC{pthsh4F at 6F%
+<!D;Svx;CVmKzG+Xk<w1P;jVguHy_f&N?PF2xy|8l at i$OQ0|XQR000O82?eW2Ap;C{p(6kQE|&lR9{>
+OVaA|NaUv_0~WN&gWWNCABY-wUIZDn*}WMOn+E^vA6J%4xH#*P2$Q%tS;k?ZVkE!DldZmVk*d!6WF%Y
+KraI8{`dT8<=EyX1!CN>&qp_X9A$IYaJBPG5U{r`N_3IfKDqFc<&>fZJ^JWW;7=mKT>3wrVa$|AkMsw
+zsy~^KyAt<(F3ti=PkJ?$e!Jc5=np+q>qfEZA{*(cGpLXD`cDk)=&u7Gvmi%sG2?@O*lBJRLV58<rLs
+d;aF|<mlkbcPDR-j`1P1+j{iq(ZOOl=L=pm)R~nRtO4+^d6NRTlwFjS8f%%(uG33iv$xZ?^>}ORc(q)
+XRa3KcK4%N7!y<);@y__^knN0j at ISjlLSc9Ol<|*CUgb34d at x1~wl1o2!II=+)vPL>BrIPbT(&B5APG
+<AdBdx8UT<y57x;8mi*9_8=5y6!!Rs0 at Oz=%|k<Yp6 at wd7x)bI21@)GE*{;c at cmH;(YU|!^PGtbYbA7
+^}tL>U5dH at vFh*Cdf`XXRp<Hmb*QQvt|>H$zs_Z%K2v<n at p>{9{AE%U+ALx&}b1TVBA-mKAU0>s4ds0
+zIpA)+Fb5$u++lvP<41^h{2CEHP5;@qInJf~6ed0zG^7H2HRVbbRpUFgcoTZQ-nW#rD+n$I$*2J&Tj1
+NEbl&0T5y~PwQH*{_DK1q3yJ)$|`PCWiZ)d at B<6D4 at CTNl~+77Y>?M%A$sEqw*fydi;H<aYt}+;8opR
+ItSMoLG-JSww-vC1#cnyDXEpFFEC%j_nS{Jb=i|`G?~01g%F81EJI}rq6kLbIyW+YiZwoV~qI|Jhobx
+I;%t3LJ&hu<N<qXhtzT!x>Ty!O<+ibZyhv~5Ww+CWtB3;XD1+1MUu<u~E?6K2G4I2$v^!A&tl7qvSZ<
+6WZ^EWRJ4!?39zCD`0oE{xbUnuT~&TyD%A*2sm)v$`V=}`(muMzfQxR>fJ4>F7$k+g~k)rw#63b{ZMX
+w1GYm;7QipWm_D9E8L<tj|?iT=EQ>!<vF%U}Z7m$gu3U&whu~uZ2_rC>+4t-Cl9nq21^s3Ls<vf#lV}
+;glL2yiazLU3gP*+NXeg9Q{x*@$<va(ZFpC|MYcW*naofPV(|#`s&3oG>bLCN0Nt-#)q(r at L%iE+j-i
+cK#Yc4%>9XuR|}8^ci8F$uV+<GtPyDV4ZpiBtE|SBUzZC$T7rnfKlWE3mMinyh-6^^!mE77i<-kUwvy
+lOJo}~RA=hhU8vRpd2Q8oD9?U@`P`?+jY3F5{joux-!oS~~*X5iyybb_)Ta`C?#tDrhA<Sw`uh;uW-v
+GA}!7Lyhy;^v*hic(PV?6uazuB6+PT^>S|BHn%f2j`Es(F1kT*MJd)$mIGjn5j at UM-PqZq})*zkV;Y9
+;eInBb?VoI at haabH=)n0-$}~XiqOR_|T=V4<tlyn=FX^v)%vrf1dk4#d8EWzeyWz7RiI8P|ZeP648%&
+vs#WkPDG$Z2MCS*6tzvwEH10J at bG#K+o<?lx)wDYdH>Zb!=^QF;(`5ayjlX&^4L0^!|%<h*YRFU;P89
+1TL7u)`;()6P^w*hp^Bo2^z$F;CwqJFpZHOH`qxKiUko1o9Kml9{1y$M5vti4zhKIw*d-Nq4%3h26R9
+8O7h2QYBQ57?G|^-PqhVDQ%$hm9;&ZRpPN0{eM^~@iP%llTaIf7UhK6?Zs!H>kuUE$vDHO5JdEF?A#X
+{*fYV-?WvsptbE4I@}WqipCQfuK4d at HR5RB}me$NmKVDy<V?oW)>mf#oJGwSk!rD#hX{sOakb#Nlh8h
+iQRuCLY^Ms+?3S-lo(`uyMf{#V6Po75lR-H8R<N(ncucJjP%NE$Z095f?<YiBHd9JH0#n=J3sThp at 8_
+%YqMFguqy8^1{Ld#~r6jq#Dv;Ah21MARN!<T+yFUBYqqT1{(^F844CS6TP+p%L*0)WIzN4T6KpSf6X}
+}DeX4Y_lvS&%M=V)FmC`u<$#bw+4J{_3Xt$Qg2<h{K;8zz5MOxsyHxOAk1M_?Z@>gV0E4d4EKORDw)4
+58?evUhbVNDY?&prS+dZ149nfgIpG(PIqNL=Db~EBbIIC;+Bbe=Y3~LjzR+4bei`WA{K(Vvqi5#!p>C
+-d8kmw|1zcSLR8|qUFsw1&n*G1$x2jGx0GZnlqnI5@&RpdXy_Eb`$7AT2H)?kG0D0?<YZCVUpR at p|%z
+`)vNdp&&83CpOp8rE*|l<oC!K^H7bZy2bB1hp&{Qys7`%wN0KUohN&{kOBQeM|6txe{)RybxYF#0@=<
+zk$jB27Qh~T$*LM<?JfG;Us8gS0$*0=%jo)ME?>wE8$=0CtEW%!ne=`Cd$sM@|qV+Dz;LNov#`O>g#p
+QZu91f9HLEG&T9w44z4%I!1SifGw01NfceO44HUuQX!E>jU at B==lG<$b!C9qQhR&c0jy0a5>r|`*41$
+gmR`6RzbK2H|y|9J;bJzY8sBQ>OG at 6yGc~(RXU<b|8;*QlzK7;)^lMHN&j~*Azdch$#ZZ{0gJv0k%#|
+syb-DWq`W;YTXpq?N at qmp@Ya<oh04!Ha$Y7wdZtPqYSEMO#ww&*^^_rhQj&#Z2()=Om`O+0%l($25MZ
+WS`ERC{4wO)N`GyvZzUYZ5ZPqHASwO>FB+yt at JmEFlYQ;+SLNZ7NK%i80RX=ZUblCP9NOS{N&B60l>f
+_Xdt{%ZavgY0pjCrd>2M_S_`kj)^j9;U%kzMsO`Y(WX>ZUy`9|GU>1bqouTbbhDQECt67lxoH)$38NZ
+qqQq+(G?iL#m%?<Mbh#N!ORg-+Nzlx6TicD=Gqxw|QOzNk)e{Y6MRvz-RxQZ1w6|T@>eVA<$@!f<m}P
+IGK_-pKiEs3pl_R^&SvqOOZhZpr0K(|S!Snr-sqHZF>{j1%<MII*mQt1-2jQs2GVSbUdhX=9K0dKt+3
+ptCkJ0DwwB41q8*>w1$EI$s7EiUH*dCJ(=TRry2NBYq2it`})H-?h_SMuTnLRqX8K$qMucwD6$LbJ>E
+s2Ql-yI%2fAhiyVcb%#->Jjlg+N{(93P8IlkyygkMZHlgICkz{g*9gLUj7q{n202(chnrem_3@!uSmE
+mXB`h;NaHgFg_S6jd_UX5?y}c<2^Dejir1fPCit8P`Fe%s2X&Y1#N}yqV8_QNqKPLfFlhCOxK}0LQ|$
+*jbOIvQd}M_v~iug{cQ!~B`8_vC5%XbQ4vw*0BRc53e?IHRhMFv&X-qdv0Cs7G!N(%jUx-r>?*~JQoL
+5h3&4uQ(K!P=geJ!D3KDdvXcUbZ+t0Eb=bPe{6bxg5sh7|TZ{KY5Q(ot?a}F!Roq-AKJ*F3MT(8b!7-
+dLrjAf-AB%!8?*b?bDV#qk-XfSZ}l*jexaUHS8%w1}8Vf%_-rn5VxpTvT{%&KF+z?_;GJEcS`yyA17)
+?6;OzR=fty}HAv<v~3)hBLk#W#n(+*<j32`JSahH3bW<NsA^2VJ%c^!j0C!SoWaDr`6>O0|06k!)g}B
+FEL_IKz+Y at GNkVKE9uMjZSS0`miRkN^a;DnL6sNpM)Uld%k3ow)?GoJMl%zJRR9+0atVw31erR8?EnJ
+7>aJReJ9XJevjsh*l~y#C%K6Eg7jIZr&S-)(4LJ;5;UXEOM+W^)>1y7f-MwWTQAu9pO_IblpI;1#1bg
+VX88SIt`IiJL{_>nm62HAjjuE*oqEiH`A!=Y}AbwV0fsvz#{gLgqbab-8PVSam+FcG5nwpv_?nC}@He
+c1SG?teECpAu_6Ao1EPwpG7q0n`+ at qd}F!lB2DSx)Z}Q at 4d&m_11Wd)CBG(&2<1-PuV5(k#Yy24!*+s
+5!3hO{mAReG7`BPCpdsa+Zw;egn`EleTpd4-5+h-(ydU3G9V9_3fH7lva+%)$U-8l~6Q>crIC1bCncT
+=#I3#sN(gQI>sQ`ChT$jLtzUy>R}IpryjaG^|l}h>lt{2BQ%YL0Ji$qf&M;fHkew1QLSuf8K3uIL&Qk
+r at gV31f(HmGPVU$}9-8XTWdeZiE{}m{b_1tS5(Y{N?ZwbWRquRiC~w;ua>nAoFWg;QR-Ux!nq#}KjfB
+%Why}VWBm&lrOweth#W4Oz!s9>YSjDq8N}|DdUf%L59<=9bxd1c=se{}gEv0EfEU_MIOHapRPCa&X&E
+R}2v8OZu<;J(L5w6u_4w`3zp*Q(QiBg-d^9!*IZJ|Jy1hyN05X2 at FDkC(QAMoZ+?hnnGpl+ at Q69nOI_
+_S%NE)I2gL$6$LSnPl5ZXU5e_8X!7a&MPx%cK0Q4!x3(x3&d_&KU$o<PtdfE+*aFemP_)c$`PpB(XJy
+Mp-+6j=l84Roe0A0g5~R99(FS_g38Pl?xgjL|EbSIvWZyYb*84%*C2<UONXxYfWKb>u$^}F{xb`5NA|
+5(3osAHx;#(v}j2c2ge0$@w^YyhmL3Dff<i94zv2Cd$iU)&4e211Pa!Sf<VP8l4|3u+{F?Q6k)PsV9z
+2}z+tDOnaX9j-<}NL>p73ws?E~0y~xRsa@$`l$Fq4^b6X`b-EAG=0TUIfxii&8eF<~*B7db07S=sGR2
+~3zsvW;0<$*dg8)}<<cf|{u4iJxGa)qzoTrH#9T$)2f4Uqius<Y=DBNY=H$@@1z#J at TAE^D2hE`#~Kw
+<Tuc;)8g62?WK{qxKq0$`eKKJj6&-ap^wr+Ikq+&K9!j1+Y%7*BkV-SpjM>{XMRiplrp_5KLksroP at 5
+&CfhgT74s|<l$1gc>9NxAd&PHAW_0JkxW9M{h`h6yP2yY0sGaSImg2!2;$yi;dSc2P^?{%0`mDfUnVP
+YR~b59zN4sWXZxwh>QaN*Sj5~uK*T6Zf at F+~@B<`{1<f%_KziJV7$yLkvKkl>hFlU|;%My}5yp;G at Z*
+5QY3j?UmV%~tjJA9Ndla=lYrf8wME%bMh+w?Pss6h?82+pmK|RW?rjBDY+Up{@9ya^<Z)IM at a_jmsry
+ma$#Ly=Wbz_WMvK_VIjrmX&I=EWm7h{}|4(x`Thx&(w)_tM>9Dr^luM(>LXN)D`eS{1!cO5&#x4V=57
+7yg1wn-tqDnb^Nu(d1cNPF_+`ZldDYgYms^Cql^pin at 6Bdk0oC1Ie!2LktjHkN>8so-C7IB)ZkLOsa2
+_yPTl(#i8-f-1V|FTx8xe8AX=4<B&&t1>gbJ!o`Cj<tDNqP7mUUqxen_(0+Ux}8Bc)R*fzzbrVuA<**
+GSc94ZCk at qG*~gkt2{?U-O~Bazo5+{;+`hpeHA=k6N{kW!0Xe&Jy|u_SluME}Lh*ocFrnv8E;GzWgUi
+5>f{Bgobucf{EX0%1Ld(;kWQ>@7pRc7|2OlBGfFh5vZ!QzbAyBpu*<5(r;vrI!4t<!jn5Oi#aMx?Hge
+7u)gRuB$@WupYNSE_<TbNK798QoLjj>4_kT-%%lFLu8&-!e00tpk<P`kn1xP%a#-VIIe1TR9d3#{~9_
+B!Z*A)W(0tCBQswCx*@-NyH^4DAWUao9tneK&Yg=-bHwa+WhG5k(`eKxR^V9kLkD^C2URb};Z+*6(2_
+5C-U`)X>wLF}7UBQm$%=X=%)^h8jLUG`usHA>)u6t3Bs`!mRO^d(O*VWswFs&g*G`;w*bvR<X*6{BHl
+~@Zj*P*6=E1!Qv(5_HYj`ef3~6F=Oja!qdt$fxY+wV>0v_P42pfRRg>p<+E!cf$3sX9A<cskXNNk-N9
+i6;y|o~nkFRRc@^I%9{WQyIDHyY6xEL;H^_nlC>(dT!=LDJHDQk{HD}@T5gIK#9t2Vd>>qoXKytKiVF
+fK-9=v}&6-ks8$L6)VjT at 4K42eX!)_-bon7v%>D2@$RtAnN>m4Np#gdh<q0D+^egPJXZDL0u?O*bZ8n
+1W(o`cw=O<Cmd at vXuTMY2au9YWhxGh$rUsvC(f}C{ZPjseoI*t%o?SEb?tDz29*!J7=l9yVz4vDDJWP
+)#sk1?O973%*NCskGcSdwNqI6#8HjZ*zO&S&z{ohDx2MR(cGo5DI6L^kX$`<H%6E7x#0-5D=EB({JSF
+Yv~_QeKhmt~IVxJqw%*E<W2syb0PCBT-3IG6I{{G})uOtD3C3DC42}Z_4(-g-owGr3>7o5r$D;IjCpK
+S~dn+$Cw^-WQR_lFWWWAf|5SRNIN1HVvztwX(>hlZNkC$WM%L0Z?i)M at lrvQM@>86ELX>li(UziPFGE
+{O<`~6mhWr5BhLngC(yS%p9`}glzeT5<AS|{Nq(kPZ_lV9x?W8cdZ#xYcq)g*>YihjZ8Lr1|wc0w~sx
+MkY;tAh!mp-WYq->I?#?G+{vmIU*cR3fAJ5<9pjgrqSA#fY}({yjZ&L5aJINVV{)XkcsvMn+Ij7`akp
+(-z}9*%40B4j5t3MW0Zbt*@(pE-|DAiu2PfNs(m84+ZDK#Vj~NR*QM+oF`q*Q1Yj{iHbxFv70=0v5wD
+min`-<0Iv5`wK}MxtkcJT5v|(E6%4$f#6oAmg+v*WD*{aCxyVk8W6$mwhUYriNOOwYdhtfR)~Uny9Q(
+6|Rza14Rn_j#kS2pa&gpS!E^sK6F2o4odm{Y9EK{!@tk_!Zy6C&Age at lEBF>~3i=a`*Cu*^G|5icfZ%
+TAms)Glw5oF_ at 5CwT}l&YXg%VYRb_~$_`*QOwhP$og at ff!iT;@)LdWUv~uvf?9(*qNp9qHgZyRzx2#3
+Y7%9U{`lbIKxJZ{3Af2rg1*zW2UoM?8aK^4Z at zrjZQNeotNxTVw`K&#(wV5FpxXcV(nOD5vj5Z-dhV)
+CxqI>o~tl)uZ_v<aSAPX?b24+g{~HfuCCx@`*^MArb>%0N7HU&=Pb43=i6<st$GnUR^My2w6Y0|@2=g
+-WDB*cxA-X9i9_vD5msya5Wy4A33k=_+*YU{rIc%?@=ZxRIIR80lvL8ayG<>H1l<ED7nU7WxY23rmj%
+EdgY&Mp5d_8DWF{|PBp~5qFR3X|JEgxLw~A&2s<(vtx at lZ~`c9}%D at DvtpXnM&CqcC<vxM3&ItrVtYi
++ismq6F*=^jyQ*>ksBxA_bfm0<7^2Q at n<Rjl(s at 8#=IhyGhs8=SenTnQihO3lF@<g8_DuGv33o%?5}W
+B)9z<Sd=2)yw^E4Xa+hb+g1ik1KZmVO+79 at KT;1XlxXiG|N;vC1spQRmOhgN6Ow~{Zv?0B=0vdS4NvT
+Pe7-8!YGT4vcc7`wMSU3V73a31+(-58linfA2!kiLFN|y+}w)OmRvq#U+g(#Qn~Z5O*)HwLMbnlD~{x
+*tKui1Y*y%SuyjefuWaQZ$TcI+_kH4EoM2%bP(}*3%C*P~VdAjRb?F_^%t^oz_ahy6p6Z+S4)B)CM%;
+XMz!BHj8ronzxCGdE8JMOD5dY)jn$iFMn^b<WsS?s`l4Pt(e2Ov0<Pu(IBvDH%)9m&1WdFtf$v&mA9q
+zxzl*MRyhbP|{>#Igv-+euuzDk1a)Si$n+vPI7j5YfA#CBsj`D*Ygrz)y;=~^%zYATEn|IhK8Lm|C%c
+d8?)%Mg$sj4IE_2SZpdc3Y)Ov|8M3I)bBIegG$*UBO;2GE7lITLqSCB+RZ>4cxJw4E>_%qKwto`zO!8
+o*uO_KmYne_C@@|82&qW@@rMH0?F9b{`BeS_xq#2oW=5&WIQ^1q8<+Z^y>)4-S|L4@&^wTi^Yb=?_R&
+&Kl;97)bUR{!`-LP{_~T<usu6fFGRfkYI-<5+CO=NV4_TvLuK*fdVtJo7uOZA_77iR<L{Girr#gynhf
+}(YAwXpS!LB)a2}iD2w;BDl14-M{*%mZJ$x~JuLcnon7%ra1`Cr=m}Q(WVfwHru!S76h$$<DDMQ4vNi
+C}*49T%IB$;1K-%bJP!{^@{v_(~5%$U`c16YH}Tl%l_RX)$mpP|v at ko?9pQ<?|ywRvpk-S>c!r7S=fF
+K+UxEa(tX(>VVA at MQme^6mbs16t|UA_t0Z#9iBG2#ap7x?&J}%M5J}=-?b5Y`BZXRjn-&>LM8}N$PnC
+v`A>d64i=DiK^Nwyit*Ru>ISog36 at iP$p+0?dHvMJhx>f>}7WT2mB9taj=Lsj~$2d+B{4zK-nNgu0pI
+&A%Uno%^?d#d3ckNt(`_Pmv3D~ye^D130pbfiY;0Q?)BoSrWf}GjfECQk{0>EM^t2hV~n^;K{>|&s+x
+7_sbT<`j~fU-kc<{~b6`)IWE$v?_s;TGEPSuJ%?@DO<v at s96%i;(Oj)nl2wjxtSdS^=e&CF=&_4wy77
+}dKtu5Tb%2{;D!Gup6s=Y(~^ttMH_|zg>$n4dnq4bR=B4?GY?{GfLNs>aBaZCb;y(oY66WmN5y-+P2<
+6&153gHOojxA^ab?-vC$-YHBtz$dk&o(ec!zXJuBg;xo(xU at PUVyp@8YRUHn?YHe<E?k<e_@~lj?gyc
+t*N+#3j(%$*)9N7p{?<;iiH))tf>yHP4};9*M#cTY({r=DBHp0rOYQLmjYEHj_`;0>NYL9pol26l5!@
+~OIX96W$uz|>hM#aToC-S*_BUgoPL3*QL%&~H3A|oKv|VFIx%R~IPWbtz2)(?oz+TzP&O=<zo5G=R1L
+(5PB&lXC0?SKm-v_LiW>mbFo}qzKiR4vslV+SJ*~U7$W;)jOSn95yQ8fzLN`4btBIqEcC>Lc%#Jof%_
+ZEtl0R*<#3vHEAkhUBm3!$Nid0wi7D;Zs#r216(D~ZBO+aLwnoMm(>vC1ixU7d2w<}MR`qd&+TQ3fk?
+zZ}UQVQkVnyJA%kaSH+(OT`qNO&VF1?%eyM&pi7k+nsvBSG-%`rZ~_`z1=H&yi=Y1fO4{@_J35I1%s3
+v(i5MZP^k$59in2ssa80e~NH4y0j&2^4bdg$8%OZitiH;rJ>sR(M9t7dXv;eb^rVTq}<A{vElBa*#|?
+jqlV7*Su1v(-Ow4*;7p#hic2 at u;~u2k7DX!4Io$-y5VPr9_Uw1R?-22rO9tD+D$BJ7OVJ^$8Tr#NMd<
+2|%r4YPyYD3A0-^ueNS<E0Yg99VfVf2)TPxc^RrNzkwjR`$XT9TQ-jEsW?|j}h at 6G1lF{?iAF!SiU><
+Oc+c>bS&a(<zD;CFB&n{|((p$Fnntt~BNaXUy#cI}tMR07<A+buu4MOX`pUmv7%`+G5xqOEmkX=A{y$
+ztfNt=?Agb90u^pq at Lbl>!2k;Z-qIjto%&J=`;R>crAz0iwtbG*c^Nzy^Zru*8TMe at u~LaR&oQTW--I
+W1SE|=j&9F2%pCcz(PjP>mZ^|_g>degk}W*R8>*vGD0lH12lC12brQ>+R3RD6U+~68IFQiLc8%_Tfa&
+E(Yg&W30T1Tn}A&KNU!VZbbfv22_gJx3!-0Ew^*lH7-^!ejzbuB)PdMogJ_-iz>U(+>Kyw+_S2_M&1-
+{$Jv;Tz at bH8jvTt^HixbdBymfYmkr!xnQns7Ay<-}txaXLg9C~_J_Q;H$bIPKsDV-f!)O#lg;E&SaWt
+M<Q?d;MLdJ_Huuqdkd!8HZ^bdt5A#*q&9+<aZzmKy$99V_|(2$rStugAMfSc$uE=dyc9LDYk;A=R~5d
+#L+sN2jeAv$G!V3u#Ht1~Oqnr&h{0Dk{<ATHm#H&Do8(SG!0I8bU;c9oM}o+Mg9xh-xE~;5{04SF8(?
+vX_DZ!O*6p#bJhO;S9Qt(4nRtiqEsw@(PX at H*F2m4k`W;Ly|>32lRfT at 6@dmCn`$Nw?i<_L4M{{b;r-
+<q)lF5+>!Sc6gBZV2soguyH!!$_G4o_!INcLr3-=Zgzb~>3BlJT;F7~RJ3?12C at c;#9nt{yz!gSEsJ0
+D$Qc2!CBUTnB9tNVBje?#41{46{uomz+S2-}eZtOY`3QBPUAUY;*eVmEoI?690hgM^=eM(f at WIwiqqa
+?|m^}XI$J_8g_WvRTec;rXeWn$amiiM6A;RKD;{>;SJc`QPhS6$wbRRN5ms$ho?m;%g^3<baQm8x!9^
+dQ)MxX at LLAlJw+)d<*XerGSOdD-nD=|{L9X%|4IT{igXJ7JtTo3S-t*>n9gsab}F#8XUi(7SvnQ=hCE
+cfyhkZm_i0z1v-(KT6i`uP`*wU!{&kKay`j^|g2Q@}M9!IEz7r)&Bi6pYNsR6N{S&v;;DKga6>|K}fw
+vM5D>$dV;4KM(_pD<7WNBD2jLLBUK$<nQeyOx1Oykj9>thU_Kwx2YT{GUCaTw7I}eH&q4E>afx&XFf8
++P&Z&wZj+&X<xE at X;i4brtKCaEJiJ*gf{CBU1%2aZXIQMXq9Qt6x9gjt1owYiGt6<^11WKps?w%@^ok
+ojwAVn*`+OMHvCkobyct0f8n$VpEa@`NUySLi-dn@!y>8CcTZ8giA#ywT7hs?%eQCW1WU5hJxgRf(c^
+d-K7q<ksZ-n$1IV9G!+k|H#rwI84KvX0$zUWdY4{y^nQbYmC8^^aUrRn9DU-mC8ntoIXI$T}Zzv`Hvl
+2UCz`(y)~^j)?z4`Nt03WPK>Lo<RbI{dH8<#mUi?0o%E*?Y1dnhmy%1zqLrX7j|H4O{_!))!Sc=c9{}
+IoQYlqAgvjm2)$O&dRX_lD>ez1 at sgffIiC*_y^?|wj7!2EJ$jw^GqJi|RUh1&0s91K%_XgCkoInziAu
+k<&IS)fH>m4@!CV^!ahc$)`66rcrcGIDvrQQ`hB57uzPf1Kx)>EJc{J<$Qa5uyuNDw(I2xcG6lm8iuV
+jZ)vbbg~=jA=j5bAvGy%NiKT9CII at H@RW68-vCJQK%@^(}H+nWCz9i2rF6wF)^<f2V9ejb$8#IOg at O8
+Bc`l#DVlkCw3>8y%qXM+|Y~R8Mtz{1o2s1hrde<6D!rK(MCY(l-FlIc^w*_{$zh8PWJia6Txw^5GSiA
+W=D#EdM8WPBr>|s0~`L;^sD{n7>E7#t at yx}pD<v5oROY)exQ-wc79rr-gbU=k>0NT^dhx#!-V{A6n?T
+~SyOgMGU-d3 at fzdon+o+j`LFje2W3IDeZj~b!cr0)1GW~5W)#tmaqKrMZmdSVwrM2;-neZQdaV#MDpo
+<wJADo)wsCAF!U?~=YjdE)IL)%SdWch88{tv+<!FAf4ha{MB=8=4^tgV63Ku=-1z+5(G3Ph4`dvKGOH
+5>xg(F}T^(FNFaESGR7S2EbcZ21L{vegkxYAg3m3;cKu?oC6=ezj$mvg#{z2u+otw>WdRIzaH`5ehwV
+6D|_Z2-8ksM7!tvbYExlTvP$BxIolid%y$<_WjAJPqvR|9oNURqKbA9lYBGq?IWo!PrrrUTvOn$it#!
+e=AaxP5}DQV;ppYs&4IERNbrE at f(LCRqZajri(~coycmvvQkOC!m`EU^KhVn*46+))zYr8-<g#ocubT
+ at X;qvj#jPg`$4$QZmGgyjLW|5T6V)9@(~p4n{7!vkkG^z<EN_3ejPs0V?F5`az6Zt$1XTRBmww`T;;E
+}n!?2w2yP5;fGrz(qCK`nNuvp-$2jMRYY=D*XX#$lfwE^hh6>>ij4F$putZr;O1e6 at LGhv1@0J7C$8D
+~}&80b5ziYIA3%X4DaAqXpU!SC(%8L7D8D5_=8H=M&*Q+kd45ee%95-OvlCsD}7{=s;MaM!#2K@|kn-
+&~G8xDLcVi`ka*o%g|x8R0vH)A?<B=Y2vEe at GpKBZ2(!Hk6JFsleTn=q|3Noa-QZ5nf7-5VZ+5Ij?wn
+-R5lBuQRSm!~MzmrnOD%R;pB+#^by|bs~N`l)yG&><X`Pg|;m^IoBWTXL=J}aTjyDpLM1|cP9)kTpYl
+z+FHnJj!|5cqNJ_SU(Gja?U(>+4ULth)IJwY%>fE8=r265Ryo8Ut+Uu}6<rNpMJoI+P)h>@6aWAK2ml
+EMt4MQ-qiTK&004X`001BW003}la4%nWWo~3|axY|Qb98KJVlQ%Kb8mHWV`XzLaCxm-dym_=5&z$xg3
+aP!`RY|ScWqG^U9?G>6bq!uA&&yBVJNgk+sw+6Akw?*9PYb!X7~^($zJbWjUcPX%y2l*A4y%X%kMAQs
+>)@#nX$cIU;YK3j4nnO>{V4C8oAkOmb{v<AFiJNcnSagnf+Uq{J=i)ud+^o?5$jhQi+`Dis`LjKOOY8
+D%r<st?zjw*qdr!=3Gm71{b1X9L6hkBbR$!!QG}2Vkb(CvOWsI-rl@={qE!IR6l6O%bdM>|L)U=o0p$
+Iz5nnL9|GNI-Bdf4W$V4(HzLcJ+|^a1LB52kh^&xWG`vuwk$th0O02ZIla;$Fs?7#w?rtmPuIk&(Udz
+JWs%><4 at O1i63xD%X*5+zt6il67|By--a{2mUC2BN;eT_05$%?PGBG2lkszsv at Q??O0qlej&D=}p?*V
+{~2_E|2QDSL&NqY+L5%zEu+lLG5odX{8a$#-C&$!IhpMxc6Em4d<Vf~^|CH8}2mD at s-hk&7JZ3a%9UA
+XK$)R)WSz=>N%VgnYSJgXv`{b(SSc6zeHN4X;tICBdIu(_<zTjo7|0V}FKMB}B!YU<zWP++g_dyGrK3
+q4q*Ch?gJIhZ$4C$J7PH-yg5iNE8in4X#VkLh08^mPu^8WHQAul5u0_bV={VlZh9k_F(lSnltdg+$O1
+?DvAO-Iul5hDa{LEP2gl3M+J6x_UxIzzEPAR#uLQN){p}DYy*}ky_CO=JkPA=4d3}UGxiCnXXK>W7pL
+(TwiIYX6Gds48C5cjc*UwU4e3NOS+;5gyp4eDDuJ)r3v_3zI{1{dPX}jtVFDAx-tj`()CU&Mw!Fz1g!
+r-$J2ty)?Qe#nky;Cb7dys1V%C2Os1)IJY$YOPrzcGLV!)8HgsGLQK|@#rVosfD#8Az;5o`Hi0t6z~a
+i(jDWif4oR+j53 at pBF{%7_ at wDPY(a8U&+!|3(z*7+sVyXz0{b8oD$iVZnh?lbE}S4em%Bye50J^6Znu
+3=~tt9Lh?2QmIh7WthZz;t%L{{8j*g@>Hkfi3g~(%8lHYXL9b^1X}o_Z>Er(EaDTslj>c4h^Q~?g55X
+JmMBP;2aN@;6G36rLM>lW;`HR)OU&R}ly;U=HojkuCyXn$?vIMUbxI?9y;B;#mwZNCuK~Qo3R*3{LjO
+G8089u^S;viJH}ejxXfEQHHgxb$Z{#FY!Af=c^nw}MMnGsPKo3~`IFy<4vgWH>z7au1R{PZ!?ZX)qBM
+y2%<$`2}ERu?(VF;B~v*Sf^umwO%YK_YS+bhr>VFmQLy=D#g93H?6PQ2X;@`h&l1)8daQFpuqT~y at gG
+ at 1#76~ZAdOES_MfGwhpnU^pbKvB5 at 4R#Q2aw!4a9NHquF)E>t at 5mD;3S<;&WDLWXw)N4Pgv`O2gCZE0
+n1oD1o-OZWwa4jjjrS&WP*^GMt-!YQKp-<McSp*h4Z9#ls04<yF{=H&gN^*$(UBSEV0Z4DqFVC8WKvi
+ at efR2DPlt|T+|x at EQ{G)?dQ3q|w61bT<{i*JB2~$6;!L3}X&>0Rpc_iFPEZm8I3pmBs_X*qTw`?Td&-
++6i_4OWEk|SP4IwOy6ol<swC!KDc{sB10TgLna1AWG6ska at 6_(p%{FUGFaah=HWnIHW#e;^m50q&IR!
+YWceOQg5Aj98^{*u;X6Gd^0IY&Z(HaqopSLOSnS82^tkYg_5mqo=*83y}u4RF{H!B|;l-enn#Oej9)>
+>zB{-UsARLZXy0g6md!o`2md-KJ^}B-=1>LqG*6h}bmPRuI;qP>l0s)@eK!0JUKe!7l!EHKUac7BT7+
+4J<ft(T3gEfZ@`uE?~702q+|!Jf~1b$t3Eqm`LTIViKt_HEBPY898cO?TZ|Sf!4C+;PaAo#xjPk!Nkk
+)AI2w;n;{BmY7Ef;OOgVqsv#x8LiHpjOhI8t%j9a>IyS6uL%8sJ;_THy;*b35&|d2-%)hhTZBbjt*&R
+H5bR}SgVc at p!NpLGGP~}+2SX6E%*2Y;(9{L}<q at gD1ohe2ZMcq#L6)O)3g0c(Q1tqO&4nqPXq5VQWG{
+G}aZcpOlf(%P)Z5Ay!I%qQVX3*MCdD4N~){#(9n&r3?8*RfJ6c*v+o~Qx1Y)4;X^~saYV7`%_RNTfhF
+c5t-a7SR=;RdA=yeo?8UgXKT7g{u8vSz=##>xwAgHk0M)1Dc`=8>g<D09=(DB}8EXflxMI+?Fc8^u*F
+%(8%d#f4iuL5$;8-$lGvvN{r_N3cMg3PXmBC@^uM8_Cs9Kq=3YXnh$fg8PEN at JKE2IQhCoCMPOEy9Z#
+fb01ymDz8A;+)*x~x3E+w1kns8r&9$9(z>dXt4WXSAO$oTN8EcID4B-N7+x^C1-)mX<=J37K~NB}Z1=
+8GAKJsxtv+Zd8t6C`{$O2^g^R>vbi<|Xh$LvCrn}7>)3NdYMc=CKw*m*{Q7|}R$9ZtMfox~k+x^JF1Q
+GItc#lhee7YtgNQ{Ti|CMzILC3deAZhPhbb0zs)`YE9yrw-1vC@`nPov(pt7Y_jyn#90`P4MfHMLJ;;
+A;1<3V>YK>^b{AgR8_+wgN8z|NV4ec_mai)_~DKIA?@qVPOjh7x9|k+D8qs!XBzUEC!JQ>LUyLJ2-yJ
+6+z=bL&V1<ay;pRIs+kaw0KVD;YmCgvU(NM3 at +Q+Xh785&U+D?2yOm=<Kol|M6wcp4StV7*9ia^0Ec<
+URkKBCNg|YGIMpK<E85Z<#8 at N?eMiGyK3`z(giZlKxt~gbh7dT0Di(-%osN}K^CxKyI<zyWo5Km{)$-
+2eB3yd*1qnJuVmC<qx at oF`qT<EUZc-Ptnzu2RIYUZwvD|NxF?o)yIhZ at 2vF{rAH#T#cMiFYag- at 7$Nb
+Y^r+&)e22~2s;3c>E0pRO3)U3m%;S2V0bL2SB+5BBt*1W!Y-V>Lo9+ at L&(8_&ehvPxf~0ypnXShgB at o
++lyPLF*jP+z851*3OY*G5>M#WElL!p`ViICcCe@>0O(SL5`2oFGyD%><vDp6d0^0*<VR~OE>A2E5E)x
+S{C|=zl7kpjeA75xXkO=UhTY6o<q5|y9dT3Q}%o^zgkQfwn^H;kh`78ac|r}i$=sJ6cWw({ISH1(f$9
+SL;MD3KgD^y8vfM!{YdRTQnx!+%nTfZ+}Xf7j21sX6D{s*CFU5uvr{^y_boyQ;LNO#3P-<;Mt-XH`-E
+)WRNq9IncG4x%_6L$%DhLGezbxM at s`TmBG_nn)1C;OAqiy|jsY3gvdImRlWnK$g*Km=2)eh?RRa<RL~
+ORDaWELw44ycsW_7_`Ajj3ykBn^?CJTSMWq4X2xnqT&f3ZW_k?bK=4{(#CgR|@ad2?o&4A%BX`}E8lP
+KO86F|j+s?w@$O^D4KQ>Ay&b1o+dcwR?`JESlx4UnZmXbIWM5H--v<SS))8_zueMXLkT!W+MWY2F{57
+z25*2xZ`1i(lW4rP2bq`cfmal9XxjDP&ImA_$1^1m<0k(XG7m7M6UFMo?OG(-<T?I6a(W{yI-}jA4Y5
+7C>Pyy!WBk%WQ>UUNk;ix at +EC`nDgx at z5xre?^w^LKA6H$d#l3XNHeeji>8qjpL1vVez!YhK4|D$uJm
+7Y`w8bx9}Q)eETbchAcr$hI%`iUo|wr9dCd{AJs|KW+4lQ5+Apw&vxA at U{Fcmi+)my8PW1%@Z&APkxI
+CEP-&WPFqR-M4bG^fSYSSLG+OOsaZ91Bu1Num%b2iL1N0hbasx7(yaNx}7^pQF17lg>yo!6;5xayvL*
+!|*hx4@)rV$oN3Jp8Po6R%OE#u4~GP)h>@6aWAK2mlEMt4LtMF+~Xy004J80015U003}la4%nWWo~3|
+axY|Qb98KJVlQ)Ja%pgMb1rastsDJw+qU(0{S}BbAE`#7^Rf0iUzN^H?K|z<#1}hlwj|?0BqSrINDcs
+PtG7RX?*SkQkd*CoWpar~0uS%|3*dyzznPPyNO`_FB9&UtzsDz|$!J1e7v)ay&6OhI>nVBh?D at +%{PQ
+jOmFILvF6b9tMlkG*CoGpNC8{9mijni3x+-#VQLNQ16^xt~Ri0AC;Tim3f>2m5SAwr9RlwawFt%m6LR
+c4!k+bFNlQ$P9k-Afa<|%po_RZzH<xlS~- at d!RhcIrm7R8qEg79rw2t|I{DJGY1NA at -=HXER)zAa?^O
+R)NvRH8~$bGMTt12amBZAlerUjVLazL}AfDVC_1<%U@^@-JSV@{HMeg2|#136u5IHAiCY+e-1Qei7oV
+w<Qx4$e)o71E6>K24E|(n;~~@7~BFLSF;i6UuFtRDn(Zrn-QMJH!Q!Ijz&m1aClL(AcCQ1`dJvqIo+~
+2hEeg)C#T2n&o1L%j^8X#PcANDLJ$O_AAY>sW(3xjAgsmsdGu^dYI+yr_m`*h at 5jJ75DLwToGr#XCdW
+U%8vQ_}WZPA?BQQUgi*Y6LBbi*WEtT^vPedU>8Ro#+BPzGi&GRwY(wwiERKL25y&91Q)G`HbaJBQ$!9
+U{>DMbN{mW4PL$rVSjR06R1 at cno25~*B_4<!6lyApoh^8DqC@!_ixKz}ly69aj@)5=QAGUJKSP6-?px
+TIkJskqQeDI+qUBVM2{QZ4g!@kkn9YHDhb_#2 at D#VkD+{03BD!=(54L`xJ9Ib%00BN_g?7*n~-Z;ERs
+#-!rM3DUh7uW2S3l0<$u+ynN|UHY)W9)xvRv-lOrJOV at DWe7?!AwW!WP58RDU at l2QvkWX7Zjf1PE+kk
+N&l$Pp>I$C05YS!FeH78?bouV$GCo_rIf>t$fKCaf%?XeSSHZt0Poi&14f*!RkI&|Ri#~r7ek7mN=jf
+a1kADfKql?$?mgkr8<;gGSXUCT(MkyzI92B5gYcyHF$T;3ou!A at _(iYR&?+mS8KT8?RK|9TEShy|H3T
+<ay<;nD at v9dTeGvnBfm^QEA9#8^^k$EFOn*TpHBT6cigfR#+lAu^B45FZg0Bcv7f&pNaR4IW=%*?E)E
+XwfNv>m$!*I0sOo7YF48|c9?4*-<A78pfthZ_39xwLSQ4k|V`AD?|Tl9JUb6hSzb2`Gg66qUQ%|9*<V
+&7g2*Ac~ngXF6&z1!@6A!`a}VW}U=&2cc%Mbor22CWTWnA#cEy0HKNrP$bY}LM3^o$FjSGm5Q9`|Ik9
+=4Lc$*r^vzC$f`t9fnwAe`)Wa6MBjNdN(Ek6M7LlHh}wbt^eGR>!2w|%e4dZ$DeMjeCz9z1ed1`O)rR
+H&sS3p$w;Q%Ut^R;Y2Ji=D*1l>PJ^`P1%>Zc#iMNbsaE1;vt#$^^PpE`<YjD0d&U{n}c1O1*3_7f&I9
+&1k5QdQPVakOuNm){G5&F#+&6BYMfal;RXo`@>9)L&AF91_<%K^9Bs{$fl{RRkc at du8h#v-&Z at Ky<?z
+8b@`8F4rYLU6$t`yrr1&!^tJme1~FOcnA%xz9XQ#@*$OhB=D|2a;gm0QDeY7r7P%2EO;Gix95-#}}?w
+ZJ+81)`p#@qfwH9`z9CKNPhu^5 at E6W0uj)zF&-O%9TPJUa<T-{I0CAZ2u4BWjD1U at 6BCoOG|zApc>D$
+dS+az$ZG4oGw}P1yD+c<Aa2KTGzel4Uq1x1~Cd(_fqWMNTzB%SON6#x+ww_tsVo=Q)0d`{2qkq#hjWY
+_~1C&uNE=9!#lB87ZVo~LbQ;d}0<sk+Y<pS4tgn{cs?K0 at yn;U;nyFLtRZ~Q?XVld9T_lE)l5 at d)*&w
+rI<#cHK<IRE8 at ES2#W=tm?BhNK(iE1AOB#K?-H2y=4&_G0-V>QD&?>p=?=7Ba%Xsl#SjNPZVgQS#pNF
+Z6~6Xj4P^=lvIeiM#N9WNxV7G}oaL at CrkWEy0KApTV><Fg9|-XkmT;nr`+SS}{A($jsw1&M`o`B;_j5
+WR5z>_G$J>fO%6#Nm2APgJ_jgKOPvZb at TE<M=j}S9C!-*5Hs^I*i;;7*Mgqvl^yhTpeqI4Z0QmB7qDY
+Ug+1ic95g#OWMZ*keddtU!b=Zb=TNGE#U>C9O*V$iw|QCMPw;HFUgJx_^U$o^%Qjq3Wy!^WiVgxae(S
+kK&F$&^L~4cuGr(75S&zXTw^}=<`uZ7?39-dw70|#KYrPp{7;dzcP>&j4=FJYVMum(LUr(Osq<4Dna$
+a^-Upl51CCgo*U>dV7`-2 at uu1k;-O~V&ct%8#$K}Rq;F$&*aoCtwM<npclF%W1>MHoRPo<pJ(2B(x~r
+dCI^$N}bP`xM4O$oL{(Fl&Ann<U{rGnn>bWuxOptb2#zH6gzh;+hKVA?UF2kES-kkef4>n)>97=hYo*
+8w4a7_2Afg0F`dkf4SB#q733ubfH0 at d7cYkkx;uZuwEiC($Gr<_sXvm$Q!w3eyWrew-CUm5zEusDl~b
+Rb`NC at 6Y?IDF9B66!(5QLEP=nj at jNYV<vt<q!OFh%lQmEbKOylwppD+Ow40^~_<I$bWPY(izi!=KH}u
++k8vF_daMwR-?HEd+^)%Nbbw+k_%NoAcT+2Pkh$`^vx^BJYSw>cH1JM*SZh;xMljPZ?uIT_pps>bG#;
+b~FY1qwXUDW&zO*r-8+I~&=fcNV`^;~d^7%qm-!@%Zo!E~@~)Lhox8xi|(%+DAibQqj`IB_Gg&U^n4g
+nKCMU-_ryo1d5O2FPeIH at JuULHv61?qd1&%|ooX7Y)OJsjHn<ogdQ5{aM0LelYU%|NjY?d$1Yy)I)9`
+%W<)#85ViE3PlIgbt{81&S4(T*aLQHVsItFaiu)X17+j!4)Pu^YvPd3(jA&+&amA at 1(e8z0}9F!0Ai}
+)1`)(Tx-~2b(R?BMF1B0GJ9_f8e&QZ^K2Z9*B!YKgWb*CvBa#+KV1 at jX+BpJUlIMvo{WFcf>XD_}Z|a
+IFldTvJi;*s6070WuN$hs$E?6`y4kx;pg~LD(4_r*07Q<2$x#^yO^Ui?plCDiL&2kNLEg<sAy4m9LE_
+78 at N5&-MCV>v-AC6A-#6Wvd>|?c&!DDtayvnluQy!uB&S>&<K~@22k!Z^U%T;_2SrvKea_^}R1BQIc1
+BY$4%T!W<T5N0+Gbv2fnk>@FNO#LY{S?n!#w!dBI;XTP&AYohpryFxEFzbV*srJtjRES)Edre$EJ%;)
+!f2)yrVkN>oFgk&E&%L=DTsJ024aInFA7iH+I3s4!&ZR<L6g?1UoY{spdt-mK>uv^`ab9Q{%1W(r>_s
+oSWt9KztXHSGx|X#aG4k$h-sZF`s5fJ((%uX9q?6Fp4j8omZY<0N|H({08r;VBt$c(&h)+ at rn9f*v9o
+@&kSdDE_g(hI6EHnPk1vS9lB6S at 8c4VD`@<r7oR}Uds$h7cmf#SJ5Q<3*4A?d`o%V`VJEWV~)@`jj)g
+-sTM<>~<r|Y&#rwMidu`N-y|Gm&Nqf#)4zYnG%?uET^J6l$3m~B&pde;oYQg;upr31;RN4Dh{7BCJKE
+A;<u^u}8p5!NFI$!*p@(DNPE>HfN9o?R2c$QfxQVR^N}y;{?evm=1j4q{+UP1meWVEoQnr%%$%M5icO
+X{fR{dxM}&@7>ipUd%xk at vwUOv{~k<H{>hRWL*a;(<0jq)RJ8eXx*$IhJosKYI;5CM*!)zd!&Lu27$c
+ZP7nRpI=8Z$-k}*gBM1ch8NaXl%m2PM+b%FRZ1(3OAlKIgf0f^P8K+cH#96O_S@{imk`6i@`82dX9TZ
+g!wgG|Zqi*p*o}u;7$G at nQX#jSLF25OUl)Se);VIRl93~`RtlP&!4`k8kw`EX&yy^h?I?yrjX~}!<+j
+qf%)NKc_ZTqk{crc!5SvbvFBlCF0b4c9vvzm(g#Ew^YyKi`{39&6KTnBx=S3Z!rt{?QNm6aAQ2&3N)!
+fStLOjF<k1=39j-V>5KSAaPIgxHKhXkfS$Pl7(hc%^Gc0QHRfq<|MzqE=Vf9hXXm2FxA}zzfC;wgv60
+hc^6t1AdTZ*o)HCuYnH)G<SGq4Ms<bMyd_G2`ISOKlRVi61=SFQnso<aK|VjordeawktT3i$6kS!Q+I
+r*8&>WxEvlF`8X}dtHcdFf^3xvn^i`cQNuUDXP^^Pt4D+Zx8<6vW~0>d+i5;VrXEs{D7G4!J^x|5GL0
+k=)(|=!-L1V`gPOY$Hq4){@m^f>vP4;HkoW_2%CxulI#Il^&Cm0yud#oQw${9__un4jKc&|@)U(2mcD
+c`;9i2Lfim)S`r)|7wGc(*R^b<3C%*@Ha_B3hTY8VUV){gdd!XPqYF!uJi+M^vJ#`hqRkDq%n6W{ciW
+8nq19UXw3>Nt$g`^@(7#W8!+zqSw1W=3^S+Ya`c*)5Nnrd<Qd)F2)tr-(4+!(K$J^_XPe^Y;dbmXO^j
+^|IGMpMdc8Q-=~*s~%|@`Zj<NK71{RplQ5X-QUT`p3lQGK^^GPKmP#y`Q8PNUVa|z#hM-4eY>jN&K?R
+1QtsPUm-|k$8Rhhiv~2w<r$xS3<@D+s#~|@MhHsF)IS$q|{Zi?IuX9wOR=R$A>Ykf$kCIx19UeY5$?X
+-1JxKLtNqe at zbLF*b%Ng!>)#TRB%4fbG+YtmZ3_bdRBw<y~RWXN5o=uxF!gmCwUTs_I6LOs0(w#K>o#
+q%Lw#-(QsskxzJe9zsyEz^lnTsknCo1N1uO&kj0Z21)%K`|;z#c-Aq!L*8uNg~M)Eu9@)r~jP74(~T2
+H$&HXKU>|S>Es{5UYOY%<lF+s>*C+V2?`leXMTQ^svBCaF2=THe{^ZkPEWbo7H#|_WU}o-wu9UV$lum
+2l5Dok6ZPS>u*c7GtoViHtK^eJe1;T9+(ZD?G}_%pYI5#Gcu?|nlBwi!fQ)aa)rj|o^*}$)3BwoIbpF
+1K8a6wz(RMDr#<HAi33ruws~)Fw7&c(r$Iy;QB-C4T%Y5?INdc&1F^RgKTx#myi4|qZP$vm1Jg-R*OI
+&NA4q-v{IsVY(N|cjQ#@Z6VNiP%bW(;j*1ybOnUv8IwpXb-E^<)oJ?i#aU%Pd#n-w6@&W8qJYh8UEMe
+efe at LB)OeF at IscKu-Px@t}ap>O<JJJ$3KMBL`xV7cPW>Q8ddJ2e4mZ;C$<w?F2eop^1yi;kchu{*4|*
+H-kaznAvFNE7R=)OAGN(?RYih=pYD&?uB;Y!}{)=&o4zIAaGMFiQ_>&SMRoh<oHAxch}ZAt!C!-E`yZ
+wqfK9J8K)c!fwV~DOJj&!^0I<t17u>Dk{Y0 at CLs#iX?t#bSOC<dv3aFhn=HHUSrd6=bGo~z}X}H-A|O
+zERp<o$j8skp`P!LG;ZJhbq+Z61g%e20vEpfYv&x+paR#UU%v21w}o=sY6}s~nV#ZnT)mzAve`|(q9V
+l_0)rr3$s(&1ZhI%!bi;^Amm#O=07=_JaQOLCMiswd^_N<Zy9g*eY9QX!6w2s~ui|=vMf15uB$`hf at M
+tz9{+;~Gew<)FfC at W+rV&0j#Yp6L&du!JXA2W at Uac~okmK_uSr^!-at;k+d0VH^?rG({MXh^o4-Zf`8
+ at ExbQ%5Bgbn62=GTXEM8n;&*@&Vi-<ajn7V1c!9JYeW;mJeUL=JO$v5Ja<eu`&ii9{^RK+SUmGZCu#^
+xYh0<P&PK2b?X!2Sz!>IMqMV=eE at Q-_rBma9@r?_@=Sm12Vz5 at 7KshZ@c=KpcEB0YBb*FWM(=JzmhEV
+|x-!LZy at Rcs?NC>$jUxvo{Mag|VfUi<!CmM{pmRC|r+|1-hdQOJcD7zE=c`6r%-xff7$|OwW`A?0*Lb
+MUiq=DYqlmX)LA=Zctz&=B$7STD(VSWwJ_H>j%qK1G7X at Gj+u6N_BwY~?ePQrNwPE%(+Mqu{@JtU|6+
+WJOl1|7DFzK{AqUe4G9Z!G9xs}xa08mQ<1QY-O00;mH1*=Hn{xsmHssI20Tmb+Z0001RX>c!Jc4cm4Z
+*nhWX>)XJX<{#QGcqn^cxCLpe_#~VwKzWeBgrJ$WEMy;{0<l_64dAdC0zm=$c88c7h-lvF#(?#w=1<6
+W&m3PiL+}n8P*@IzE|JVR*LqaZQsKm2v)&e7PFvM`C%~%)o4?_%R~(llLbQNd(NHNO at h+;-uLtQ{`Ey
+ObLZZ3f1P{ox#!$_&fUr%KE#+9hB3pRsxr)8M*HVr{`o%wf7z4%l+C=D{^!Yi4NLw!`4;bw*5|Kl_{p
+6OxBWQ(_S^2h`zL(<zub}EAl#k*qr3CVZm!Dz at lV#=acx#sMuA?2MgBOi;`D=y6MrY4x?=H- at UGfeu-
+HxCBNi{B at 2QLDz`OJp;}=&_*asF{Y5ZgzK39K_r0?ZFy4{QACEDt8GRzV~3iHbkM^q=`IvArN(~!Y1e
+}a!+YjH=W!o!LI9SayXGE53%py`P>^Q3_y?UU^Wz at MX;0wQekoqW-MyS`$Wxfm!iFi*L at 1(^>Sn0Hx*
+X*$X<<Np!Tzqn*<pq&oG<-xDz at 7Tn{+qYM55cbtP944P(R$tq&<~IH|NSdzqeFpsP9}WlgI<D2gn1k1
+1j6o~&^f%x_*EXzgxE;c at uh3^^IlRw*OL+}<to;c9PRZ7AK+9WVxD;-|<$L)5|NDRQuUhVE?lJ>GZ1)
+>W8QbfUvtMjv8NnHJT3xDO2?qKvsH#^59^pm0agkrZ$cqPav;>zo|FnZ4Z>2+A$l)T-XJewpXHavQBM
+wHc?6>`y+>ypGha*svT*-QDYOuWD#qCcCWtTFpWn^(C%@GLk<6g!nIo-|*MmZj=Fvw1}FdQr^>Q~;8q
+pNDM1hH#|$LoM9gU)`N>Rmk!%8(lSrN(aZ7Sv)pY>#q}gkk18m}MkiRaKwSqYC|GU<9x?c&EYpG090%
+`Ug~1JXj!AcS+8;J=$oJ8sk-NfQ=*AI~w>aW+22W=#0RUSF$jQmAi>e#jN at EC_h2&_NCMW8{a+qwA{!
+RMorH6V{$i?83TTRv&U+7lkqUCC1;Nel`>5Cg_^<o61Cl?)#k>EddPBGQ4dt~2DDM`wuS6{+ at m4y8t9
+WGbh*fl813vTboTgCpvD>ieoSivR!wdIJV0y2gEI<+&O)K1 at a(-tTd$9CV^zIYS{3xkLt+*H#Nyk=h5
+FjPEl|FTbX}x)36{-M>sBh+^|JNlry!x;K7voHut(Q_p_n9RHx~5>v|4s{*Q}yL>z2FKTq_K at copL_`
+V3GXkPqupa~((r-GN at gqUO#)fOx84D3{ynv;jq88 at b&(p_Bm<NcS<2BM+c#A%~XU8E@`7#U$wSpyV%T
+XRu-xM$4vpJW^S~cr~{OD`^jw6<A%qb at 1Bc@}*a)xzivTinWNF3#{ve6ev_N+Cttx(5 at PwtIgXAT5uW
+^F-%Pj&B<#yS;*;qi^9F%4`ftU=Z3_Y9v3<PeM<ilUocIcH50&mz3K at UB(5PnFfvhdK^M*TTgV1weyt
+^X$$MHNt6*Y4OYG4S*OEVJi3K##t0fw|jUydQw5;G(<g;q-T&N3x^DxH at m&fCQLG-9RG)m32KpF&dyb
+fBzRZxNqP%yC|Hg5-_7dkawg93b&VY^i=oTHTs)17|iW6#&nVm`Wn4S{H at Hl5#s0a*rkmrLdxbuh2A0
+8kYSvNAPT&I04$_AvE;?MY&M3P0Azy2!3fL~9@<SOBbFeUFmCaa$<Riv;}$t>b4<2as!x*v8h2^QY7Z
+lWn1Tao!YfJ0x?Dgj}QsAZ($UdMQ<GGuDVvqYjYY1pto%z#Q64Wdv4PqF2dh0x-8H6&fUbCOa)s5wMW
+Dm6TSSy9!K086M92Tr>2qUYs+9H~aFH6yFpvWUg7}BKu5<E<^(zfYqHawn{;8ol&dq?Tl}!PTGx-8uQ
+qXEXwVJ;VYmOl;HOio|SeJfKjrd0et at pM2f^HKZ+l=!}XG7K`_t_VON{RCkcaSiUaCY=rT~s+Ac)iyz
+|iW;LoupTW^j0jy=9Uw{=9*`7GYjbUuSmE43eL_);;-XA(H~(`;#&t)?m%=(&hhq%wtlZjX=k#x5eA&
+7c$37P6hRpT#`8XrANea1`n#zkr!)YJ$7*U0?hJzW6cFcf`m3bR8co;G at 2HqVO3VtSh~zy7bYM&r#ww
+u2QlwLoksc!_<fPvquC%vrP6{KG(CXpjkBd+HZjm2D%VcZs`ep6Av^<3UneSL&Z<v+w1sTCzY&oS}X#
+3*Ct~7;(%P5Lp+!ltS|!CGezs|$A#X)@X@&3Ez=6Vkst+5;XI=w_|060WJ)kW7bN6CLf|AM95@;`9Wn
+(mpC`y)&$`Jz7`x=adUt+~xV{tGqf#PLDVeCdyXcel<rILp-5&Cq8Tn9=hn#@Xd at EJ}y|!l|O$)}ek=
+OvNB0h`v$QQ6W=j8%<s8VC6EhN{n_K%<<dsN6FJ98K&%8Ul~M;1fS7E*o&5Q2rSH?X{Y2m?_(PYWL-c
+a6YxjD?(8<ZhZX4{|DpVfn2uwhQ^BCRv<sAn5FNd9g7>9!=MGWjibfR(BP-i%JMq$=Mlo;v%e)bjr^=
+$xDzwf=lfokhg0hvPzc~fd!s1iu8|yVn^3WMdV2c$!$u3w~4{E%nCvZ8A+F9i<An4VTOLBk+%?vfi;E
+}1ItCdTy0U<dixvvNHGLcm8}mP7P{+;tvv7(9Sj#E{u*ck%-30YBTHd2RL~Vf$a9mQVu{__8s;L?;j2
+bUO;oT<yrZ9SgHVDp6ZXM;1wx}>(<|f^JNx-jq!_Xw;gTXOsj^>UVG%s6<*$N)5ifLX{E6EmmSD|{kV
+lN52>2$FC1XMMQgM`Sy at C?|N!~0+6cemwuEB;b!C4y*sKQk~OI>lw=Dbpd&#EG+PzJKEX8<RAN5Tjek
+>}_O*`bnCMgBex0LT*~aqK`K04i8n8v$jZl!<H)U5mUcrw;O`?L{p}Nwv2%rpawPFvVvE-aHXowBxCX
+xO at u}eP*{b3)6^WSVD?#?25XG?byp$u9C7Hqa}+`4Cjjn%+2STfKWD{_6^hlgcTq>@_}$XMK%YTVBM0
+>i=Ryjf0inn)5N&Sv-URL3`H8H>mmDs=5y;H!{)bF*+O*@(wYw%R7n})k53_PXoETn>mn0?(uR-}?Vr
+87VM_DBYN&hTSo!V3L*a8NV%WNj9Gc89%}Xr|&{vI;A-3ha)m#@~cL*_w at tnrdV#w+u|1lYf*V0^}!2
+^iXB8Ku^T9&~awCDD4!=w^gVP5lUi at H@+3&YS+TF|}uG`p7fmLYj7SuFBgPU9#&4{hX4-voaP|G}zns
+RAlnF5gnX+D^9KT43orfC at f8x-~;QV7TE;zCk1g{st{pI4u%$!$^;OA^bPi^bx+SrjL|yt6=%#vlBTS
+kVE)tWdvdWE@#- at d`%q~*kU>-o>6V@;0S)q7!1vPhkR2%Kwo)-!jB2ZtPr$7(5M_*6<naMj06`9titC
+-`s{}%?O at QEhh!||Xmc4SPtjE55qXJO*<}SJzznf~<k4uAD&taZe?aBOij6r8p99nQ3i4Mj$;z5IBx1
+VO%R*kD7o@*Ks_j@`U$HZ1!({P-%3G>@pdH+Bt)_VN^5H>%jk~%3Zp`T`w^)EJgH|Db#ItgF9?0)XTG
+ZKt+9 at z<{|8W!4#bzq<v@>o3D@!!GO`Qy_6AU2?2Y~0&tHKEk2)J=A0bZWU&An0Z!sI at 85-k-9{~@%y
+0Kqw?2ZKh%3j;kaI4tZ!|;<{241$+cFg|%hIBdH2Z}&gNs}WOh!h at BGWTM#y?vumj at X_38&?9uiNh)a
+>UxcfgbEYN)X#9PtT8y_h3!{6`;`JWd9wgOFm}1v*w64&<jT0}jJFt|dy7 at zM$VqVNiJ}eipoV!>{Zl
+{8bNx*F~Q+siQyVrIJqYqaXkfE9eWU=mRj=VXd%q*KEWFEYcW=(3s#?QTz&pM8-)`|=qwhj{B^}b4nM
+tE$P=!irE^fa8w-DGhE{k^c5)#1WZ^)P-(=HeA&<;Mu~<S}<_)8k_o&K}Gh{_c(N+|NX8UP>a_T3uf#
+?eve at Iu2oZ1L9)%qng^-HYrq*RLwWg~09fJ<KlirAW!Y}6D80=dLqr>wHL)<R+UQ&J=AA&;XV3dGsF$
+l?%w;vwHF)KNZ8j1Tam<s;$qDe at ul<4NI<Q%#mfk-I4=FEi#+rnj_Ut8g`fjzQ2InR26!N#TxElR2mX
+?xlc^f+jwPd~Qj$=phJ-m7QvFZKrUhhy0}w7ar8!LFTr2$e|gyY<GIx#6wX${?cW4ewM!MF1wIK)Uv&
+}7g%5HWCd7G55sz3&_35&xjjx+&RUyV%5ZzkrOE_c^L&P&lXaoezd~CsO_Na at z`sh%mEpsQd2FeI2 at G
+7xegTj=eXt9E&eV{42h;+RP50H<1sLjh at hUTD%B##iLzSESYz`$65ZLVzZrcTHz6Y2a3z-DAaFIDS6-
+B8u`DRvbFMMCB?dd&W;^)dI5a~G-+2W^@!k?!0mfc`(g3&l?KeFB`cQ^eYLoh5{U_a6DHRQp$A&iqFG
+1M~s$2NUQ?#oQHGxl?Mz}Ol%|BJMCbKsc3POk2WJ&m8Waao8LhD`^;7gC_6;P at x7P7s-76RoufYP}b9
+V+NVQe^D*c0#jJXmlv_X;7o^<^rkr(f=P9<4p=G9_ARpD)|}$N9F&9H`+a?S-<tyHQs&S#8AfHJRleE
+M8)kX7FN~Wsyh&b^M=Qo!%{&$fYY;F3+1X=q_SdZf<_JVzghYQngHp1S1xkjY%OwwIBnM_ at 1|1k>8q&
+vpkV<P%&cToAxS)QE5O*d+rzX?6VJog&ZrLdcR$8J~IF@^-*zu*<Xf;UX79rbB{sJ at E0E^unR;I>HY$
+!sNTWb8Fds(rgA7GTxI}QBEoh+aI40cmUi<ajh3baY>CVRd|x#05IxDy13g89Tf8V;7Kb##uqu)CR;c
+K5gG$?iJSwPwwi1uLuz8RCF}PZ0-<!UwefeR}`hI^&t7OP$}uf|9Od;bPw~EO^9sR1gSr$TfqN9$^_K
+GpdyJmRm%Aj+ at MdShpM}AsB2o>AVW}+`4B|p_vZ+JE}5LE+3CNr;9khh9=aH2QE`@VNj%_9bJbVoszE
+c1r+I7s{PUKzQ87HcC%V{v!H4RpGAv+#$St#cawK|6Wt|q)!~DU{8f1uiglCmgB=u0x<FMmg5Y%{-Oy
+smFSvx{`dbT%gV4Af??c$Q0E>%4 at vJ97I1@76Zl3{!tku9g_E!E7IZX=g`tm8TYACa}&xLUFUW~zAeB
+t!VnUou~<Ux#ZO5DrCJA1=%+u`C}gh7=qELC=rHJK=GgDgLu)MER|qWOA+l`NqVXY9Zlg?^GT0u%0Ke
+dEaEu-Me7xwk?~c07)P<7|N0(Fy$`_xwPIV#x-CBB#HvN2HTGFv4dbbFrHspr!#4V$}8-Ad2oNf`?0;
+Re*B(tbBNqrC;fk(@`vR3aKvg0We`=fGo<jva?HO<#eg?lxrE8I~(y9k?$a~^Av!Kjhzg_hY-F4mnCg
+TWM>E2kOt#MPC+kYkKz`gO1C<ufta@=&H*FJ>cMAjH$EqH;d2(jXGteK>$l}vt at z3^)7OL!8kus6zNW
+U**ER3L>+uIuSOAfo%#MBz-{u_*e8UQ`!-DZt>y4&VK$-#m+m4Al`T>K{lx}#Yo0(8Fr6;?T9;DDs7%
+9*WS+=*(Agab{?m8R*2NVHFeR at 737gU_JxHI+mQ3nLQxRF?b0KoeJrWs+pShltc2}1E2cqLaJ>-PBAQ
+pR?y3T7d$AX0UYR2`S9yA=~|REYEPdE8DA<G1leV!VOBQjBlpuORoQBqz(&Dabcsw*k9(#Q-=}vTP^C
+%6@~A{z|$5XIj5e+XAv3F7?#g4{-hy5FNaC>!0xaB5;`VkB4t=Pe_bcaS#3yCGxEz$>;pN$O}m(zr2E
+9D3Uz>8j)o1lR?zx0^1G9-s4>0Ee1zAju;c)w8kRv&ip9$DlSJ62N(Dwjd#R;Pr<qoEcO^pG;)E5C{O
+Aa|26<jRD9Ez8HN7GP<a*`<BY&3%gtBr7RfFA4 at HvAJ1YPW(5PIIq;i2V0MHj<LV#>%<_F3m6jTL!^B
+w)_YcSN#9?Y*?Ph+R1SNA7kCh2)bG{1?;k;3hz@^d?==!X?!W_xnWj0>Ei;$}C)`Jcr7gZx$6xD?Oh<
+35wy`xFd1DP5$mep~?eY{j<JK_D2x5<y62N%8&xa=6L5ay^TXDYj)mGho?JN`0(%FHK%HG}(&DMn;+9
+OY^=(lW#~Sj}zOnG1<Tjp%<Hqm5n5~nUX|eM#32HZ8Fd`Dd at y~Pu4{`%jlM|zB!Q(^0k`MfoB~cc2`*
+BN{h6~EX|QNvC^jTQiYZ3E<USw7jnv#CX`9(_6^Ya47%-5+m8Zuhn=e0T<{H?NT}up&AW>8_?0pvJ8-
+qFcm~lflm^Q$igD}4k->7%GpCKD8v>mFkwh+a<}Npxat8O<=(lX%)$4$@$l`L7duepJ@~|9-1}L}t=8
+(zA*yJp#!keE1*>|b;Nlq^cvT7PBPvt-wCyas$$m3r?L7Lt_ewQ*X35Z&<mUZqfs6kp~v0vavH{VIsX
+^{M+Rjf2gS~Xt0*{UX%pG>6aD7hb|Vnn8BnL8r6V+3-}jvU~zy7H(oz#)6RaxJXFpaiB>ktKE%&!0wq
+#rT#4=?0(=R@*#~x`LFAX`Cq-D7vWeYs#IZKnLzH22bJh(RO at 3@h(1hAHnCow{Tx{+oN&%3U<-g6Nl(
+4aFD*94$;>iUxnA>4+gp~A_F%EE6q|6cT=OZK4hL!fMD8<{Zg<K13)Q3Y?oYVg&5kFt|Y(oF>+jEl0n
+*Rm&PW6e60bHSoBVNet^SQ*}uy6=auA5MOBeU!uq at a3SgdYpOL&yPsTti8_G!QbOmZw4&7|ptevZvYS
+oTQwXy$(=DcMKx$qx}Y8qB at WNe4+=086KW5JIq70+GMa3)ysxp;2G#%y2K3K%f+pC2*e$fcCw$z67h{
+m{73m0>Z&)<#Hl7G1ql_r^`7Oa$U0<i$i(zZPZD1ugOku85WFGKnSk;Yu%elULy_71imxB!mCFtFLh|
+Yt&hI2qc#kSf#ZE)*$>9c2v1Nlx(hd_S;@}Np}#Cz=4nIL?}7qL1*`x9hfg7S9Y(FvM^Y)3MQ}o_u6H
+Ndi3=tk8WSc>si|@EYl;WwmDTsXOzL8SyAcBl9!rI at 7OGJ$jsBw{-qYVoYlSy at Y~7uI?VMNGluaGRui
+eJUtS5T8IdZx#0vxbs^E>l0#?dP?#~I9-EWng-7=^j at xWowC*LDj6;x^ngf=<0E|Q&bxgBa1-fn7C8N
+NVH9o~fJVp<d2v<W{T+wt4kqxCL=TOoAw7qHx1eEa$zcYyL*@~ers at 0RbyH@STQ@;uxb;pA#qqL-_=7
+%v_KUB?13<PihiIV)aa;YWHkq#TzIk$=^q<;pm+#!Ff??vhqz(pGiL6)bdcI^@K2G_|<O!ufB8fL`pI
+q!f~3V~{fO^y-!ZD-3mxyrdwndbw-aGH=s$Ng7BTGnN&wYow_<RTRl9Sb&~k8zZl?hyw$>9m<#~o*&@
+N_OCWv8=Sczc<T#RITKne{>;n>Z+Q*ai-jz?VIjl3jAM)+W$>ZwTJs=^&$zz@$c#X-=Dt#MD#YwXINk
+>JvCtvgA#x2-fqJ}o>N<<M&Z at 4<A at ekiqn5%zHzea;+{KGjLouv;wR+EZ^`1QSo at pdk2RvYAs@<L{`7
+|Eq*pAtHZK`^7C8`PXY59yC2HyGL0u*c@^)RHX>ZiCH?e_SX<=(4`@DzRCuNVeeil?z_3)tn$@R*V89
+?;8Yf$ey4Sw{iQj|aDhVR3mhyaRWo<#2Kj6Nqq}ufuk1Mc)~_)3Tl;g(xNJJI=Kc?!PNxdYl2>$WU$z
+i31%QN4b6M(7kP#=r at QZxUJ3b<K5)i6m4JonCt|#h)+!vrDVa}fXY&%28>AT*?POE*tkvOTe;p-M=5J
+-(Y{lFaj8dY6PrXVIfPsTBei2s5cyxgbHxY*j%H{}jhhTyhuaix@`xD~wXLA<y2*is82%%D{<ajKaw#
+3_x<Mrn8p$D3mb0OqM)j!JX0{8KhOR_g#gd2UL>lA8HyJyh_LR?{?ZK!T@)QUZ-qp|tZv{$5+p)Qbja
+%Fv?-jQ}%vu20>wvWVW$>tx<My`ooSX*57}X<U)NCJUI3t!kg7vJb<Hvb1M0U;7YO?qkx=oRbu{b)ue
+D4vIMcz3NY?&qhi6}tL&=ztOr!0XX;{3Q>vZDfmtxoH2aRXj#v at l!%r8#w03$E|8aM4gt$n8??k-$mb
+tIqPH at Nohqi+82kQ&MBQ_ at x=b_6rS*$@XhO^iAVGhmU#c_c0rJ0HUNc^|)3ZMkR_Uu018B6g%7bY%Hh
+th~#XirOLHOl;204oofIG&5fPw;I)1PsJJqtBf{BfRz8h7J9rAvu}KH$7zF5`0Giy9Pi1B+BU~M&y~g
+<p=y;7qoe`*JA4&<3&ZCa_48}&t$3Pa^u=*Hn8}+~SsgsPQ<|U6MV$pQM#}G;T#!rYKKh-~J9uhNX`t
+=RC;%EvsU3O_I==+td-ST?N2cSV`IK=qqhA-#|m-+Q=A2<f(qJG2hGjQCVa1-2pmgBaQHPSva)M>xK`
+PTxV&qT(Q)6Gl+=TFlj*m7+OW{D+ufCC9%Kuekj`r*m>X9JM;;7K6S9AHtexd2}t(%?*r at Mw?b#e?hp
+_d$}os(wdnPN{xO{>lX-UD+pjAAtg at +~fy|e7q$gS}f|r`IZU^4rtZf4b$D^91wlb?6e@~IaK(z&vf*
+hcN-K?_<og(a0wY)*yr^_<bG_H+e7YKm=N-xR(E5UA at 1&E+{0dLzJc-1feap^lxjzrbyfH;b}tGkJ!<
+YudR}fn%a at A-Dqm^~wOSUnY)fGW at OXUuBA#`W;M&_js)7Nmz!eN&nyaPu0?8`H9V<NoM6QQ4qp4MOD4
+kvN2});x>0g&=sONLx<KZ$5?UQu03!}Y=aWZuP?X)m74)^AUh{K!mlH#yB3qO(q97h=+&iNE-a5H!k+
+O@<TbiN2I@^O?b9lrcJH(874vNa&Xg#{M3YdQE1KEwc_ at 1Q%Kvv_#g53HXphEl|e3u=ATp)wg#g$V+a
+n2a{ZWcaYPR9q*|qPwvnN6>YlxeW`jpJ at 1Vm8ZVA@>9;AO(g(g4|9GK2J^&_87R~g+0Rf at s<{2b%|`j
+d;t5z?<6W=$;e{<EZy9vkfMsF|rsW4)XpS^{c>VQyo5a;7rfK!0CULcm(b@;k{0wN^b&SkGlT2?zqwG
+f;jscg{s at VKnB~_*&n;JN|r2$1J2Dj>OMd8E)!_}JJ8#eHjy<t|!1eE<sLvD%OCw at 9fj)vnY;ZIXdGq
+ux9%q*pXAlb^al$)vQ6fCzSRVL1lTD at A%iq5!sk?QQXU)cPB?WBAbi=b#jnMma`vF_BSrRFB(p0;vxb
+Ks<q;_F?ZWCRzgeeL5yV(4p^PMUF1Rrv)0m7nKHw#_ybDMgwm#*G4&;!x7XxJfWWko`uR_!-b1B?G~t
+smKWziWf}WHZO!!I_9uaP?N1yE9(wNa7VFMTkJfxUSv~aKSrKX14_vEic^|^{x(bkQhy2+mHP?ILc11
+ef}C<UbWV6f+sRB8f{c?Y7ys3VCE?Wk&Sga|DN8S at wG_=RYOql=ik%kzJC+vK_gJmoZd?%epH)?QU<7
+j1!zN8N_nB5njUDz9)Xf`jk^882TReUj?@TDxoQrr)<K`-iqe*pkifYd0X~XsBClhKh>dvb_8lpQdQn
+p{Z+uR7PfQ5q09<-aN()ZluLrou>Y$uz}83o5Pcv8X_gI3{@=M}~S>XsQEQ1S1x(oOR#E3^ZNsK7x!f
+9PIL?6`<~?rC_yC%&n!f{bFl8Hl$|j;yR5lxIL_OLr5Lo@<or++;HfBgj#Z5GM7NTX6r2&vBD6R@};d
+5bCMvYp)p>LQ}jtx+QGw23$6L1-Qg*4yo}JbY=l|Mrs_s(;*Js>6pXU$qYrP8 at h2@2Qod|u?13fe*%|
+sg{3zv^4Aqtv%&}$xk=TLJ`s?vj45tpg`D275y#^?JxMU7J3$iZC%`wDa>Z{`Wuaqmm&8Xai6jPKBoz
+o)0}KLhlAWi>*)!Tm{DGm;qJbU}P-zh;@3j`7C2{W8WoG2s6N2Wi9T1Y{(D|koiP5~|gtNd>Qn2|r at Z
+?o>5wU;*qHudgR;%O*NF46{7zYCh^LmuH#cbfSJnC@|nfX@`6s}^>oUVCbbqa8=QxtNQjJ7f92q~Cc>
+hZz!PwQ4DmkM>}>j<2%DDYXlb8u+h>&Bs3gcd|6izlE=F65ClAldjP(kZDeJNtVOIY1D>nY6*h6M3^7
+RetQtBcJ2ZA_$=u1diO$Jt+7qE?)*&!Dthwc%o29ap6heLAb(0Za;-v^%uWPWP-`2WJ>dtG!Lo3q)R8
+mx^5hT405%aJeYuvxr18I#CeP`3W!~!QGxZ1AkW}AhdO(>jfdEkU*)l#^rhKCH9;WB+K#ioFRsmjZm*
+{;p}T#fA&BcB-C=FC;?}bL0zbxnR>&nw2Eo4kf`Tb`(W86G*=dh&GyyJEVSLbu`zKLn*8*zGlp_hm1>
+~+)v(!W?2ZV}Q_Q>WbYGvo9G>}VM@{|#f$5lmU(6tVUIYoBnC>)+ecedO*PvxEniNr`x_;j1590uC+>
+KDoOtkT+38>y0OtyJuT#ls4-*jg-DgpsyT>{$Q{^zvzPBQjbm*_zBuk3h*!;2T=6ZT;9UY?v<3Sy<)v
+&i4bY?4y!u9&RlxBIQ`soGC&LnF}Flj^dK at JUZYb8em)5Je5J{F(5jt!WCqso at XjyF;AW{J`lQhTw5v
+yvXZl(V_VSrfc)#{v?EkG)m68=ODsvwX_X|bv~Y;r<e^LyBP at 8fxbr@!@kv at F5)fr|FrwE1c6U1XED}
+i8ru?nSc5<hIA1&3HcUn0=B0^ruiX8(|Hn2%349_wT86gZ1K+eygb%-#7?D_zj5X!fA^A_?H4Lj`JLK
+d2>J-b{J<<i{5jX_|R$fG at +AGha$-^%lX6$U9=UYb`JzfoFhwqMvX!Gk7dgkO+23|A_}L-|lElGwd+r
+A0i4_6FzB-XJV?Op=d=&!<o`f=7p$5t#G&9G|hOY8g4>Vwfur0Kp+OO@&%pE7=xS84WYugXj8KT}raL
+;>LbpBO0C*JXNNW1YP-)lTAL;25cWXb~}*(cM^1 at Vl8x|!V7(nv+Y^avP&6$q at 2}}S;_<|)(L6kv6T#
+pMdfCD3dw-P(b)TBI!oeJSdJNDdmZbHLXKFm&Ipwllnj}Lk{xDDY^%c!kAE_OpI4GIp<2-<@T<cn at OY
+TOc|;xryH*E#gdVTZxe5~%=4mrZK=U`GgNlh$TS*O?=fnI?PHZ4W*U-7_hPk`|=W+&}%c`>@F`a9vO)
+U<<x6E}%GLg=8E1m20QrVV)%S`rnPAA*maQdH3_W!zMvi~BPIVNKX_nrRM$*w#JbNJ!G$$lfLIjv3HT
+5|JgI at xcblbr&32hgq=K<lL?TLy+s_bc^W-y>sA)9F4Druzi6fzH+ at yzz8$!ap6mWWwv>M=tqmEZO5G
+2*%FS`D58Ba{ezFoXcF`GkhCCaHg|`+INVD(DFc=s35`|TZ$q~3ecF8s&2?rH?VH9CXGr*ccyCekEUL
+nAMt{=1^)Z+kgeQupRf#c)HL1Lr^rpN)xraO0jSiI;RAF4cW^G%0LTdVhKX5&lQOMll|Ca|9p-}j=H4
+fyq3K~h=+RrKX at ii9-57510CJR^tu8flFBwXuY$b=v`yEy>WK9P)03sUTXmBALFIUrn_YJI&oLy3NCv
+cx}<TV1Q%xB0`B+2`L!W&Z<rV8!8H?wvs**8ogj}jaf^0Oo$nMkzxurviNaiMD-G<VT at C#Qj;(z>L`3
+>uM;Lsn>+=Or^M-sbZ-S2iw{YJ2R*Ie#h?0zw!UxCs3#uC?&9TFZ(GjG-g(7UuxBKUCo}*YIO1glzdh
+-x1`$;wJ-AwN<XQNVVO{PqkQK4Ef?STGP9qB?)081eMwHfulsKwA#ZBCdp|<0$&Z{vfK_5M>kA`iR8D
+RB}5DIEDf?cGVX>3X}dAFl9Vro&T>*&_B5Q%w`9+dIn&#{rREAb!vD1O#+0UW8GHlX{aLG4TALaNn3h
+bL3obP1oBVBM*(n*kOXgaaWKTt4Ck3A0!pfXO%YmRq4RmUTFqMK{g`i_8XifqYz)Tw0RT(}eSV@*aw_
+I|XIx|(x-KndQn at o62Kmv!kmLH=gQ)%UXz6Rsc43#~>vQ%>~)5Q5Zp=nUFk at M%^mdjy2qsg8jq%^T+#
+nhC4L9Xpai=l{A3mmM+-p+|f8G8EAYM48g^Zz$|%+2C0EvAK~faBQ1R0iv*upe5V7c4cPHB+V-HbPRH
+DMJwe|H_Y5rxn`lB-Ch39o}joLo=_25MYM at cI32PXlezY)6}SD at GrNSvgEYZO0{K4YKk(|UfT`ID<(V
+%<D_aveZRhun##~<Gr%u|1{FK4+<oOhc1o_CruE%{oir*btp;ek94T~m;{ZS>xd3`UA_fn^dvR-~|L~
+^Ng|Yjoyz1ayI;?PF+`M%ZRNj!in0qPH(eyIP(F{*oM{zH`!R?puGjLeQB8&cx^n at Oj%1=w}hXk{!U2
+(`<Z`t+GrKt;BZn-`M6!6XIt)pbF<(BNJ3sDD8d|kD$uw5D1*Z!E#upC{f$U&;1SwYAxtnEHZa9yrag
+>D}+#BT$wI77nBgq3<%C#p4-U3f at h2Q4?vMMfP(QQX-D+=&awbgQK&CTef_3fp0OgnKk>3PC~AlF>y<
+8_+~%z4(ubf}VB&j`y(QIUtMoaRQyo;z!g=nPS8!hKw-svE7t%dc^R6J-mJ*`b&t#8A2A_+_CyHVh`Z
+53Pj|`+)k at erxIh(8NV!*tfW*@ouHCw^<rZ at gMZ$awW3}!A*IBTQZR510#oI*wzAZ#GL-2^IcXYjfRf
+GtBKUS{U|`ka)3rjN{RsjZiv%<V<}{ye?oCAk$~G$L^)jP@!Jq(3i~Rz%5!yaqN}at8R=Co?B{}Dff5
+TJAm=BlD_>Z~34>52 at 7ZbY`*GFyt#Ao%cK&9(n0G4_M3;?^f{!L at oUw<-`UB85sdU6wMr at K=PV at d224
+eaeC7`X?6$}u?tY&yZB&uVs%avHb4tjH{O82C2Ls at Q2A7jmFUoL<b&KS?lCWlt69x?SJ)M|2l~#;MEM
+Rpb}v5{7Wf6=eBf-9OaIK`XR`nr6|}w8Nj^zIZKLMP{xUdUj83)VO55<oS<v`9*eE2N(SuSoG19;x_6
+&IEs7-P?~qheYn at urc_XlIT~b~h7oSsOqM)+hqiqiO<FWxN6+Cb6!sN>U7t-J!IGxbNUVHDdEPgA#ib
+|4 at +}1xJhKZN<9}oewU!mI{*W-b`8*2j4cTJJ+6mP6AQtd~950^}&zl>r?|WbT*u+~3kG7<VQG*yW2)
+**5a0hD&<I4)KH^fg&;h2$6J^OnoI75Rwjc`!Gst7#Ig94A6yo0;NWNo>=-MN`8d0W>pC{{Q!_w9t9u
+^O0`W^AI{s|!o3JU|HTV?Y_6&%A=dgpglF7I&eEUmBo)RInTr0||wo6;gQ~h&)P`JYU+vO7o<;JkV`G
+KrxP>HujE{`X0`p_ssWDh{jDHE1qDv$=#qpHP>5IRO;&U&^uJDXPFwv(_3nB at Tuaxkf}hu(Yz^B9?@b
+{4ctp1#RBX8G8d`%N|$>DQ+jGdO--C!G#M|k=&)$VY96@}NirCGYKS#PC-nw<kv_ZW^ALR!`h1H%U!_
+m9%^-6?I3N#xgx`<AH_%xjY5FKhj#omkY2PkLVfYL=@CQ8cS-tKePR8$NQd!U;)Pekm68oP}tQ%tejf
+UTHcX%L$T7U1R+L%#(gPMN-$57L6wEI4nGQ{-TC?7z(Z!U0;iej|=ea?R;gjz at GMkqmQgc95f&z48Og
+s1-)=YJrBVHVnYr6<tXq<A+1a at +2O$l!vGxhpnu-2MaH{-*Ae4iH8;97k at yKWse(d at C&+H`hpkZRk-J
+=6;?JdDMcyqbmS1h-d at cwonXHyzQp=+)XjLn__r3Vloy3765gKB%i-YBqn~gNLYSqMFrZFnYh3kXr3B
+Gcs8~_88*kBPlgS#-$A&UhH-ku{w<kgjL8sgIzL^QAx6#GAj at 0(rG3~I`v4bQJ6K{LwY`b`5MpFH_IH
+IcxczSg%h)3tEyU(SlC&Fp7MrOTd)4q_iC%0jEtcXSmQD*KmlQ}#`2sI;IDaEw-E`i|mo=SV%jY$n-^
+c|{u!;VlkQs|2n0>7<dZ8W(b4DAk*dN$L`>nAjli~c>BM@#i&7CbwZ2FmDrjQ5gj-IzEnRgw)%(YR78
+#IWg5dvL at bcm%0v4-=P<NHUPe;&Sn!ue<8Tj2cH;(HV4zY5<gIR8XEMcIw?Fqw{RFn}}6#l3XEMXtJ;
+?qReBknU>uDRL0!U69fn$?FFyH7(St^@B{c3yqhCLiApM_Uup7NF~08d+;T+lJu`IqJ~w)J&4y;@JmE
+e%3FbS3gC~esNe#>2d$y$Kz=mPLM^2jMx*<f8}jwhd0qr<<^p)D#}JG^$P7&uG6s`mI;!G1RY;)@I57
+SipcVT*NC{~A#rX%!=m#WZZeNp%HmevZ(`S@&5o&<>7W!urz}^&)x}n`$3&Wfrdxz~;AW^2JeoIAs5w
+~YizsrmIpYEd at 4B!-Zk;*l?AvixNO4$}Qv>esCsJ|tknU1yVky=KrZL!T*U0RZ+A-i3!FoS3}Q>z;>z
+`e#uL4 at XW9z#FXAzk at CWY<PMHUqDUSe@*(i!4UBqF63=HolH~u*8VNH<b?G9o#k(jlYw7U=LN9f5dMV
+<9GAdit(R-LJoN8rPViSsL&dZ>KDIO9~tyHTrCDL)hyGOysn?DU93sy{{pI{Rzf~+sh0ytQT0-)!fHV
+&br46fc_~SZ)1n<(Z5b$!(1^Y;&LPg<p?Q&b%wm*{S&WzD3Q~V(>UbeNLG1toPg4Gh<kM)0QU-w5Jc>
+^k(RBV!;dU*Gj+3XDhPR|@e4?516*M8+QX<m=n%ip81%~VcxxJNAH1OfQ+K5?oyTjdBpWLowXa!?-Xf
+Cy`fEG)ECQM$`F9rOAGgYMw8>W~_tI?<cVxOcSn4`+2&f1xZ#uVxic^`IFJUG7jGvvGc1d%qB5pwk6s
+?=F8>aaC6P5ZE&cM5qhA%+0#8U(OkBaG0;6MDB$!&_A>OoyE4LoNkzjaH_MWIgA<8`uO)6aNa7k8!nl
+#gG_>C|%3H$0TV-8%HZOI=BJgTPc8fSz7>&GK*RQf1$Z>eM03rmOVhn+KTKUXMj$?-f%vjry->`3_=O
+_+M<5NjFa#&Wfb5NBTbLN8hLCGXl&rv*3p~IfzWzuU;C&NeIE?=P at hu|L6gtR?Sj#E33*Uj7%Nh)+^6
+~Q45JG<k{K0JC(|W0D4f+68I>}qKxk_!CiB<GwA+s at cX_HvAL_i}BIyZ at H01N*x#BIUCW_IP?4`=Spz
+~~DTe;pYBwd<W+D)hXzW{Ni$!|9m7x5mIasZh=+YChxW&Vxz5T6D*9B8y>3n>X6jVseA_gj4l_fyhtY
+?=eouLEGe)?l at o#C<pq0pV!lrcF1*;Vc*jJd;e<#_AenES{t5UxkVV59dZ`U-{YyQd2s*Y8TRi3v~(Z
+Nm`;sm at 3DW2}2i{UHLbYU!arBKKxR7b3ontkxEf3??VYseu4tiN`TGMMd{#-1a+}BHT<<&&<us|!+Ml
+4TG8^GyNYfmvo0z8Z{j{=l#Dh$ybuU&xkuiuq2gCK3HPL`K at 7NjsX=ECRQV8oh;2r)u1;s}!t7!i%U`
+SRe(2Jc(mb at 86VRb=AC?7rfbcuzN|B0#sxnr~0291}_KiY+Sx8TeXj7TZH|U+>uhu*D4XoYTa|zbOea
+MLzew4Z!1LSZB0G_6CH8Ne{TTLxg4Dg5eQF3q_Z8^@D)+4coufJ7r));lt;>G?NTD&}Toy);oyVSwd!
+QZR!$KLE<M!{bV{7H~DL>2nt7H!v6u#)$W57CX4N)N<Q!vU9?`-g-b1e(yHZjSOUp0m2h;p4bP0vX29
+txVnNT+@()=(Cr9F?r^{3H9<fjt|kxHyzhB<=UZj(}RLxdigRPY<3ciynpPw=;c*p!!4K7x_bwPXx*o
+dB}?u+c3G{v>Ucuy-ha!mI~F`{@>G?+f9={%F)&~d(tDe5H^v}jq7&TsUPqaMAMG=ed#i9~RF0E%n5V
+`bMT^We7<Oq_%M5PPz<dP$=O&@$`d;xc1lP1dmq3!@Egs at HrVoS>y|*d8e}(w|;jtn3X0^VN&yNnpxB
+pUne|%H}YfFNWA07Q}_)e|51mA$^zv#}6pjq>S6 at LqU&mK+Sx2|d!e(6~RKXE6^k5xCY<bi!uEAG>7w
+vkd%+b%Z`xnMwMn&(in>gnPpt4S!39XTcWDZd=U=ax*yS9Zx1e5I8zj>il_3h5e6?Pw2}8SjHD9lEcS
+EtD{bZ%t+B9Zax7A_HD}t6a^>VNbD@&k{qH;LCV|ZI3p5*&L>!@Ora$F9uy1Tx{T&kY)?TzQ$gkPZ2E
+QY8E#`W1Td at pjm&)m6j^GZnd;@HHentIhG6H_LQ%nM&5F(xTcte70S|l4$I&Cxy;C0)|5QJFd-p5TD}
+I&I+QIX4<)|w_AKS at l7|!DIKE0<$uAS%=rOM>EeR&R at fb##SMp%u8#il}YfFBS_- at 7Ti6y&@`gah&vr
+AsY?=<+vtw(jk8Xv13tC6;>QPQx3%kZOa^-6l+R2vaXwxP8w;MzJD9W-a5Q=rF&I|O-1gShuSw}dw=a
++5h at VC;i at s-ZR29}-Uc%!@pv=p?m)s*y_2B at ih7O|66~#pWhykfCW_NlkEtfuG_tR1xDz-1)%m7=FIH
+%0<?%NEjq80&&H3wrL(C98zfkWWg&y>r*kvh~HzPDNPeK%Tyq&m8<F^>MX2~jHgf-q};JHVMfWkov<5
+SCRbXkY$3OlCVwSYTcWtBi_XP-I?g^PYnDby&i<x(Qv^JKboRe6g?l7ajt9_l)wIAdo^4HSF)om*Ev*
+x|mm;omvTlWDPCQCYLt|iI`<0f~RMlx|F_c3EP at VrIe*<;6ex~U{KA+NbAzk<llw at vOpfWfGp_`mP2F
+++qotw{_=cWs(<;vNm%HL=L?$gsfr*yoL0~=^n4YrdD(YdU=v}xY0{5fpxRd^CLiQai&36>k0=1dXHa
+<`I&Ht*04=mhlPXbhC0kvG!Hjkhj<4jmTGU|(Pa`D)rm7MielZaTjxaFQ?K_J>>md?k at RS|_twQ=xlW
+=hU>po+??ytAm&z0g|dM<uNxf4alC>W at Hd!n86y$rhc4k-AaT7?xh-rIL_Nnx;@1ckOYAOA1F at P&UTD
+J+u4>0onz5zXBS$Hq1&o7Yc7nmJ;J9!-{#~ACQ0a*tNU>)y{anM*h4bt9dc+%SAs{_>u<uH`E%;}1#&
+$6nK5YQ?BRylE;6efZ=kEOp9L{N%WfL*xUqo47ZU|k>_C at RiMqGiLW)T{pdHe5x0?GZy`Ih1YyXgLP;
+RU*w((YwDM7Xr;`+PWBbV$&%O<zGFycNMcetwDZpqoBzK15CZTuV;`Q3Yz5BI~@bhld-;x1L_0Vwr7y
+r2s&rJJ=^yCb4X&3zH;1nNxJ!-+dVRQKM{7Y=4WK0M!Q7{98HLLEY=L;na0ZR9sW(GfK_1TSiP;8thx
+sQTm{Ox$}nPMy^?HeqxtcP9Z3;b&W2Wc#{QZJ%&7=wLlbNT?_aQ`GIeo}LY>>szSiWzhm+U%rp#_};y
+^O3r*!RlRwCPdGWik`pbzbyKH<ZnvWC)|MP;%euDv at lb1F+x?4C5sQ|4Lr{<}i~Qw-glqo>ubO)V3P`
+MM^N@#I$cqRdHTL68YUOLua%wx;a6nkyu$GMfK2UffM=q|mr{92u5URy<=PdHX`)G>=#XRzU!W>SM4%
+AuLLl7hmV%8%RT}!=q6zMaNi+`cSR}<*vf8f?2)mhy`@B_n<=L2myPVJr5+;+sxQZwlNO1hg&e+go3y
+-?G;5WfmBjb0mDah72{=m-ACBX}4FDS*ZfMC0d&A(gtz`{UGvpa7RZ7y0XM1T3GSeZ8Z7&D6fa+Sgp|
+>jmx0p?y8AeU)in|E7IaXkU`{b!!O at 6Gm*p2te1O_w~_`w|McM8|cC*O{n6URU9!s%|jON9%B6F(MBo
+zeJze^Nn6%J-YY#M8(qllCDi05r&)Dn!P_FvX9Orjo;_sXCNjA7aP~#Cx0?=lKys$T_u+eV)F5mj$F#
+8O8A at z;?NmCMd6AxBMPO}2zZ&l?0N_zicq{O|gW$lO at Xn<lUE0S?`ay^Egjj+Qj64gc#SWYX{AjTR0T
+~cdO1fzPFMcZ6jx&oEu^neaGzBx3-v+7yrH&oi6v7F)L!UXEKa49porW&;1a2MeLMom87FsZ4c6rt&>
+Ybv&=#AB=O>e9=HTA~QI>^)$bYtdrxdiFan|3=AG|l>+dSpjpR+lB{`I_TNdM+AH&+k!M9*49%qyJJ`
+#!D;H$a_>&tXnnc(2fTn;vI3iP*!<fTl%Tvl~?c%XOPCT0uesF at 5m1Hs8{ZABi~kYyC_ at ew+V4Immoj
+v)@s3bCw=3kZE9`@<(oY=XSc1}-Y2B(zZptatbwzFMQ+O)v4~;99oEcli8?a&osec>Ez|@_oVpHAzY<
+NH35!;*)7s>gyQSJwEwuwuZ9M9HOEcm;!lz5M at 3uKrtCA6QzDu`oYeBg^1 at lR>isJ$wrs93nO(5Glt-
+{DYr<HM}G3e-XiZ?e^s!g)fDt4F(BQHbd5N;GV at e3>XX%&1v>3AKjLBwp8L|#uE4c_ at W9u3Amr02{%$
+~b5n2sc<P1I2b}K8+5=Bvtpw&K#e$rZCKZAO5Dp-vs!xio_v2U0mHmMTRbAV$|7%b{I-71aNCfu|R-s
+?wF)nkm9X>f`XYV54?<~JD%52Dzk^T+W2X(Fc-iuT~UI2G5jqhcmua^P1H$fDYrlXZ)jE)Lx5JWpoB>
+Qz?mfsU<9%r;IAeF2NON~_+X-kfrHpXy39qL+ASSv5TNY9X^lF&aXT*%<wwg|<6*V#J9=ehp8xQsH2u
+zioeq9vb7eP#%*~ZO=<P06cA1}{M|r07#_pZ at e7cs-Dw#X2e46%QCI60&@^1pI+9SebvgROFzNCp{(L
+q#}@R~p}7n{b!R%<ejT+&S)mQ|rUN`+NbAVKF_u$*_nijKCMu;_O{Y3o2PK~JI3m51zyghCiH13$I-j
+vm~ir`aJF<o#yG at 5{3<r_T>0tRvozAglXr1X~6&My%e94e3ZYNeE^Cv<!6rYl%=_!46&X?G^q=ZjNBT
+(IHrQQuDB=RFfVSl`4zSv&oEwFf6I^5j^foUQvWrVKuEl+=mS<ON{1kq(gGB%vjKr-_%lhvFVPB6)ly
+ju(dbb#QApu^#Fp5{5qep3d%q6h3+h2zaWeuZyx}aa}H`+ybBVI-KrW>srf-WgQhs`7<>4Ax}^YpA6q
+XrwvQD?$<fD_W6CQ_H1~iAe}Gy<%_bYaps*0LtJkSQ{nMcS*KmryOmDnsv<jT;JauJMNJ+1>DyDR&6^
+QW4s6EV=l^}8PSC`<`<@}Tqymx_q8MQAnLp577BTQ^_4j7a?5Rdobr5ltAG9b>VnBmFjlb7 at V0dGK6p
+&bsXv6Bltq1m%g#&Bi01n0HJ@=GX}xW^vm0{7}}Mp5qmyYT{#xN$?a7&mVy6yqseU?m<y?RO5?)C$f&
+5l?Nnz#;?Me|D+^z|M`ak>~|y^mqUj)9HP6*31L^TOJxQW~y#dYmadL2LQ`HQ_$Ioc)YV+#~SC~K&?Q
+GybtJt3!uwDb7SY1ue`<xE3nrw?Ve-Wz(3Q|6C-#3kI=6-ZsvaO(eAd!%KlKG*UtIT!$E7oziE+I9)O
+wxsNcrYsL0<r6>s(`8Gwf{7U0f*j&tDGA)SRtLOiw#I#z<66vlacMt})+CEI)e_k|Jt^Jp#WwG`#w0W
+H{apJ}BWDU7;;WhJz?Z|7<T7Ptie9I~3?_K&vy6<7t(HQsP0Tj&9|cF|d|%uvwE-cUKv^zqgr_Hqztd
+}a;Dtf7z7nm*Z@@kUeQMW%%nCR1)c4s&V8=Xyphm$`|}AI3?xP)@QbIc*cX#AiZQ0;Dq)ISjqbGZ$GE
+aFnD`)xW)_s+X+?IKymm99?!}+wscY+49>%dO<meWX=Z7DOP=6RjDH(*}NZga9 at s>Jp&TxU9ahGFnDi
+Mo_-apFp6B*pWyPp*-uSeYJm5HBHqaAm$eo*j^|;*<xJg*2ORC=LJs~7kl2Ts!y^sKZRFOteqmn6P?=
+o at z8M9@6IPTNuTkk8>Mw5W<fj!kc4(MQ-bttTXRyaVaU{39s6Xq_TOr6~b*K?O$S$@}l?P3#{CKa8T+
+0Sd3S-IG{Yfi}efw0ES|rgMZKz=~|B)Mymnyr-zaFJN|Kg?`Mkp=(h}&bfi}BKiEHVDWjjR~T=k|0fM
+!B2YlZMfm7 at bO^Lt at mZR$BS8dXT{8*W0`Kh%yId9&V2bgzua1cAjqS8-#K1O>_dG{Tj^%`S}dYnSwbF
+aeLtZw!&~zV?R^JgZ>^DZ(Db9&=9-CH4fdsg?n+Y1bT{FTAH!)6{KiivZu#i)qASkE>~Ithxtzm&p?l
+|FX_<{=+O~wkKr3V3ez4zyN+SIj_?uMt^<W(Wt5K at bb}D-R<U)^Qpd`mA`YLp55r;^xllab-knu%Hwr
+8iEFLf_pF$+JC!;W2JM2CS$fDoVW#F}9O6Quw&2#AWTwmIb=@)cW<Z+K2kPi&Aph|9VR?Ia)OG|UA+}
+xgfQf<dP!7>(a>l_EeEmv6V=Ni)G6|Cuf`-O&#1!8EL{X_$yD*SMREREy_ywhOrXm@#R2fQ*av5OtNz
+$0#Z-IctpL%M?i*<;9ySBjD8lsfUEid&#v*U)Rmv=kRjVIk!QvZEkOCiTHuY)IU=HRR3@?NSVSahL5_
+GhSX6qCLlZyL52$%DyxMwqLt#p&Hjz at 2~E0P_wkR+zeBjDD=|%A#R{oS5)-d4w0<i(fc8+vTNFM*;TN
+d<lr)Kkp0H>5P0cDS%J0M1&Dg`o=fk#!29IQ8g2k;8s2q*w_K?F55&y{GgLm+&KJzsa7}RL2HEn0w4}
+g-*IaCV0aoWLw0kbfUSP?Mj2>8pQqLZ2w%%L)q6=GSjZD9r?=@o^1gpHvA}_ZTFJpxi+O<g4vR9fwDN
+-`^fQ)r5W~GH@=`Kt4GS`Zl+M1Q1m8wTjU#~!JS at I{~UQ<DqksX_0oJP|<j3Y`KC{06<Pwb2Ex;uc4c
+=t3o^j(`B{h)gddPy at dVRxAE!Q#U*u5`%ty>eC#=&J5wml=5MnY(%|CYU23i at mL(>#oBVQzctx53f(b
+WO|#lIt$Ct_9^i81TVJr;g^#Rj_ve7BXjFwK39(TjHqc$fj<`hAS^5-?^D?g0P#>Ax0i3h-9BvMc6=z
++>c(5;<J!e`!F8}$D$C at ENI3omk)-mIEBKM*jlD at O^J54qFYm`TZO4Z)dOvn_J3f?*{n*v*_<&U$2g0
+Q_9M%V0NNnsdaQ+i?E4V{Q^O=Yf7KdVICvI5$`Velh;Qpz2f#oxxM|_HS!7PlEZ(c1`zAG(S4e`P}`Q
+|lJ<&o&3HQSIJAZCV~#R58|%2RTd1p+4eSzLLlag1Df3J at xLZk5VLu&VQv@>lY&UDT9g$Wn!6Oj0+ls
+Zy&uYLqd6Ou4Zgug2q9A49H-;uZx>8{VuDvNO at 9RM~k%TC~O%B96U at 3mWLnQNu=kN8aG)vMRS`WZ_BN
+KcU?|f%jSTt0(XR0Pa4@<p&Bc1Q(e>N^20RNDi<>xgEZ1?Ct9-_EKN>_Vq?NVv5)!4V()%EmueM>pMm
+V7lOptFptLGq{s5tg;k>~ICHN~wX|{pR4BS*@gDvvg4wOUw}Upu$!f=E+D50(?8_%F9iVQR-R>dzDKM
+->DZacFbrJC at 25-;yS-dSsr?HpNof6Lr^t(R$FLT#t${s)+A%99B5Md#T3Lky#H5Ij*<EyIfd5CU!V)
+fF`F)T*SqB^bN(^Yks-p54wU6@{2UC?R}!v=qdU#dk2U($<nf=?9;dC7)9(YvURh~28~fEWgK6|bTua
+%n&0yushe7d!)69m9`$2Gva7sQfuts$wmL;YhG_AQ`%t4E5_FU0Nv^G&RLv9f4UPJ1uSx;DhwXH1ln-
+WIV3+l9LFH-h*^stcUJ+2TpQ+E3(KEx+Avt at A!im at 8SLvbx@+4PA>I?cPA$7z(Umb at cR+^ouB;PM869
+X-#ccEqd%8o^{&=R#JFiVi}4{>5{*(p(^^!Vg|Pg57t$*R<v8A)0s_^Hz)5}@HijP)tUR^MX93}Ana|
+)-kK=thz0SBn0BzrjKM$qYwqslDPQqVJ_s{q#>JiD=g?YCZ=qa3*!lEjUiRvucAB?k7Nu(2{ZA?TGO&
+<AI{6 at QiEO8J$=!%w0(q2r+yuW`z+t~n;!s~tTI1&xL{wklS7k|L;sUWP}Ec8IHJ}W$mf{bL&01*b|8
+Pm<e7x?Q6!U4!YcE2!a-u<jL&8zWh at f^427k5ms7FSchI4Wu28I9JMQRJsDBpNf3Hb(g?<e=>^Do2L2
+%BZ|69}q8q1T24r!W=dxTW`$wpfSo6`Ap$g+#XA6y~N_#2i{h6GjCcfD0qnjdcLs%74%aoHDEzj5Dk5
+<da3NDffcbeD%!XiiSm51Co!L at U-wCW=Rhx1_`1-^9*tMjUIw|(KA-5%(&v-N#mkh06h!Su@`=JD_%j
+K3Prug6Br4xURQd)Rpu9SG&C{ld;yL3Mi+Ii?<ZQ<aVQVAwC1q(J<c8;y>(XDIOBnYj?8k*nR2X8v28
+L4`K~r*IQd!7XZv8b~YLrTkQbccwau55NhInEdI`Pv74mZhsMZ1V#f;iBz;Y~NW at F!GtUwCfN{T#bYe
+)}A5%O;e&<<B9nOI1E0t;6DfpvB8k<qg`{y`5vx<$eB8OLXK5h-Fyh12g}QW_EMvvk0EWjaGVw{$Hth
+(k at IQ^PWQ=NmB4!5*yK7np>TmnlP0Zs0xnPOchMpZy>ZTnNwgqeB_+;L;;l95}XgurgKI<rRkhO_#O~
+p-%&j6oIpBuX$BCl?@AW$g<xy~l-*l4$DGe|c*PU$IR7|@Dmrd5ezblw<YQ>`XzDFXGdFSmZSX-NpQ4
+1d)^@nKA}1Kghg!Ku!Y<jQ&P<cfsJYBhy!Q()Y*`J^_A|U?4s9Cecj4{Kx&1ggPf(Q5%pfuZW*|~PGr
+IrE6tqWk{2eX#Fq1#T1?~i%*_tWuE}+0o=Q421H8B3~sCb*A;-)zapWEu1*;3upQu(#GdJcnbLOm{JF
+}FYLB5zL74qSgA2eHn=H%*nGaysmXxci@`n>N8f+27IRk=#6GaDU<#W`<d)(uOGGe1<9w$VCc=z at SSY
+o}Bwqf|WhMEQ3LWS>{rAW4H9&YVKbB=#TT4pbsGvq`h^yv5j&7J0&xKI_<h2#CQhU=hDn_5UIr!mI6p
+S#k(;hx2 at NNmR{I at hV$cQP_j(ix*IIC&DoPRtl;NpMuaqQ+jhZ+8o=^ZT6zq31LuMYH`gdk=JwcZhs6
+QFbQpDB+8Cp>8~Y~(v1T1`xk}^6#<_sxdOJlD7q}7Yp at katcJf#IvR1exnoe#S20Wg&V-9Txwg$LPF|
+Cig at 7zUb7K?6**{!2An3h|(nR2#N#?6U+X~c`Yku>KZX>NzlrhP~=j1<(0-iga9rL<yD+3&xIl>DZxw
+~!J-Fi-(cd!=>#Rjs2ImP$|Hpf#P(0H#CR(Z*ys%3G|C^5y|`6vH(9Mef$J6m}!Nr)gtIW4?VD7h-i3
+&On=PZ{xPvF)mU_8G;?%$kw9sz|>^Zja=Z*!y8?J#?wzDKA`Pd%aLTU+B$6fLT=9}(}$+Fwf2k9{;`J
+L*nVHu%6chJrqQN0!)`1>d)7-<Q(N;s3=Uw=_Wn<M_9MeLdv=@QlAbNXo-L-3+FYNJ=#oIqKJioU*pP
+0W)4OGtAEm^;XQY8rz3FZ2TDI1y%XVicFtmn{t=H}LR)cyO40bCpA%j6IwlGW$*<Etj<<@;9>C9}mf5
+`d&O`k=y at 6e4lSI|ETGk+Tbc#CN_0@^>^`lh1)j-5u at 5Ob?cJ6foBdQJiznP`eRAKHRB(M4C?jS%Y0I
+mu#kHJpl1mr)|7d54!T(lvw;){6Tm41bL;rLLGxK_Q2H`fSp^?Tcs8wNRO_PtUL5vqrf-(HCUq4p3cb
+8=K~grDhlf<aabb{@y70uV*!@!9&mhnKq=5PKuS<U9olKH;>ZW$gJL-s3aVGc8FD8gO-<gp8bbbkc)M
+&qQO=lf9AVc<*h5coE7BV at gY`_C!R@`{NXc~wSugCHesc=w~*e`WAz at wK6O8n?9(VBKQpv1+lTjMBw0
+IH6Ni2H;Ie&4rG0q2iu_^vkUpeBAFi(=*G<=qCe26biBqON^w1fzct<Bgb=omxBsQ$FQ)0>2JO7dSA^
+%LGV;@aV?#C|cU1)K*<!%{mf%q)(XCP&zfv93gRpyD`qxUp!DFVT<l~F4#@|$E0UViCh#d)fbEzX}Va
+PphG=98s|=<mTWTmOQl11YkzUrI|{`SBe*^8Rq~Qjffy7ypq*9`)eUJo0`AVjQ{npZNXwMcpIsi~mfD
+H4pzM8W!(O7#6>HanK|0wjmyQkH7wZ(Ic-H8H(<aNA0Jj-I{&9<{*dm)q{R{&u35{h at oD2(r~Z5mzqL
+<PkQCaK`i91P&)ULpY4En9~&m-I?ZVj*s%XgJYGtx8RDr|^$=P+C4BX$A728ahlb#|JBj1iXM?_a73i
+xsv#^c&TIEpZi^GtbPF?%{4}0o?nj`&>J at v$=sWVE<c6nDlEH`I}s~&rKSG~_K<Er<U;jVgZmv`0s{S
+a5Z-wbip`{j3V)%(dmb=9lXUG<#0t6qujsy9n_)w at P_)tjoj>P^5FJWahV#HXnvLXaBUYtDN2Uhxl{_
+3k=&iL>6Lmpbd+2oSMXhB)i(q0V~M|HN5uXTn);+r?qddR715IO|>b4$gXq6V7_$hdArKpgZf4|E06u
+lQV`m>pgYxyE^OL`weHkxtg=ytncKkHxs*}4Sj6drQUi^pqqDWM8aEdHuct<lJM5UUwNk9dM_}Vx85f
+7)|*bf_5OCLx1Pr1{)wmFfl->L-cA49Q!jy_ at 9wGhR{%E+$cy5#r$3f{si&UqwDv6yd+0Iqf6P^H<R6
+E)>OFaJxT_x4^xa+c=sZ=apY1nY^?r5nf9k47i~C2edI^Ak?y7f?_J+16hzqywrpN1UdMguddi#gC=^
+ at -@-1KHqH$4Qnyqn&LA#QqC{O{fL#s!XTy at I;wjp%C^k1_w)Pfy3*|Ikq{@SPp?mX6dN^)$jrI_e=R{
+<)*x?SqbbE56~V=eV(6oWmqM^}hPwd+Oml{J-d__p6Klz*CRxyNstEN`BwwsW<lP1Yfz-QxEGI?x`nV
+Qusge)I+a3>ZwPa^AetV=tN6B_1dl);;DzR=&9FoX-fw^_105gIxOp(o_dd8ywp?ANiWj;Hcvg;sc&H
+I`B%T;sfUb+dg at _-Op;K?q;cQ$)Z?@XYwK-25?k|i(pM8S1sX`>0>Ped6|pbz-P`(e)DMF<GADoTVA=
+x?CgXkwQxAX7!{2`RGei9B7TtSq*)n~%RC2~;r`6*Iy at 5=g0BC(jt+7Xi5hUaBgsLM)<@c1EsQE|#GH
+Uft9s1BMAS#SXTn5CayGZ|kpw|1&<vsbJvTA7WVZ3#gpw5Rm&~y>+jqjkp>^dNfC)@u+(^T*Ok7OGn@
+^MWI41pGyqHDDG>Tq>QIAVaHa+KQ21m{v^LGISIK at jejTyGXX294H5em(vYjduL-AGOphHYDdMsk%cM
+L;C+cS%X=tRBQ5Z74Vc?-9he#bo%3SAB;~bf!Y-?^oJVA>ffQ=c_k~AqG>~xc%y}lmeO10lo9Y at 4wmL
+X5=0>%mP=XjHZvm`hW_~NfWVQvk`2NG?;%(jNnC?%J^L77<HK*-N`YQ%0KM2z8 at c8w5G?p9A~Ew<h$M
+@*RPZKSD6-cKGD>9cNcuFh_(Z9No+!%Q)b7Bh2Fu5LT;xZ4ag&(ab4U(LTg-S-%@#}eV{2wOxW)SW-~
+aw)w3rtUS^&84?bk44YmTAC>bP0x3*JA09;?$h7UGr)eXHscO6~ZRVM?th7$E0ys%|i=xh&}G)SwrIn
+|_Lf7Jmv3g~J|g=xGgn0ibOGjL3&MRup{VONiiJI>fzXvLD(wx-jf;1s}=6bYK2*^1D5B6QgyZ0dxR=
+NI2nR)D4zkpdatb+hBG<-3aQUzXi}T9e)w33gRIaW}qjT?14;G#C|n0r!pO&e<%QzQYp}A3RHl2+vdb
+-ke_EaElHhVZQYiF#VR9^spn!;K1M-7E!$ENVM<!d<1~PMeN9=ep)nfhgkpX}Z>YJNhUG``8T4mkvgt
+_hhxy`#F&i_QmSj(`2AAb4S>pLI8!h;mA6(YaVpU9S3{z@<r=czJ`$UBz-E*>d*{{$Z=T~?^&)aAjv7
+O!wx at a8;JX_Z?{1x&>FLmk2Cm;Npx^xilukaq=EOP!o6V4PHy^_#rpGB`1ogL`q$GV63RSal;6>f4?#
+LKo3NLu8TDKunr5BG|prqvI~LMK!Z`rY6!Aa+ at +U}VrrtsA%FCKQcBN7?~lVl)MV)Y3WE3bZq)wx4(E
+Mq|ocap0mbawv!eK$Mf>K))~&f8NGn9!yjYV%{|Ly+R(`Ht1=U|IHm34_TxAo<pzH$l3>lY&k;y)Q{6
+8hQBQb9kYds_jYICFL<B>BVI-xDk?#%?uO5rRdNxfH69?F)ff$XQQ_MY1rD5ZRNEPLLkwQj=FuhvMtv
+Wm=nM at m9Pf6K!!JUG#}?ow-OtR at dP{LN;qJ#d)71C{6nPx=AK}Z^Z2w`---hzxOXV<A4#)7oen>I*y+
+}8~pqRT37fC`#@Hr-vj*U{-T8?G{S934T!`q_(WgV?eUC=4E%sv51Gc2;lH=LFmSy;N!bMgoboa*cl+
+gP!&!we-f#N;TnExHhI-(|>;F2Jlzl@?lp3#~z^2MYROy?lMWRD at P>A>&Q|4|{I{P-XG;j}Mz%mjqK2
+m-42#6sebexgZx=6aqz2&|C=RA}E`1FKQ{ES5&-W`pp(g(_G5R`kJ}4si5Xk?v|Nasi|GW($WNzod5a
+E^E{UeqFHb6`~H6a-}ixYXP#NlnK?6aX3jh_#$U|W#0MFb8;Ki=V;vrL)M+aUZXo$W$W9taf#HvQbQ?
+sfRJv&6O>?-Tr4>b?R7(?7RSu>3D!I>+x~gZ<RaLzi=!<%GDH(cO=mM>SYnNit5Za{oL__HR0{O<B;T
+DfCq-{c{Ex7Q at oSaT|ZkYrLCQ_vhcXXMRgsM<Og*RaZ+J)GW5Jiq3;R-!!66Rai)|k37+*4=4z&>I`Y
+2+Dvd{HYlES?r0gvqU>l{qRsL~1ATmM at Ai;~A5lU=BGfHlo~!%C&bXxde&d39Zx4rQ}<zu|Hs$yjp33
+;f||x*n<$RS`{J87OMty#Ak!0#CSDM(_PcdvEi<1r7a?T$XQoq5k4Vcg6R*;i*@TXckUS#JSrs*w20}
+{VY#7)nLF3g6n+=EXth?fTZ`6gMf^d5_``5Z;9n~(T6}q-A!L79iRN6 at 4QC3dXWWuvC0I@uL3v#8y!A
+jlN0a^x_RLy1xmmvsesIDcmPBlq+2b_d`W>$INPb_G6s|x{;>XQ%)(dIE;1G|O4{cvI+P;+6y_6-#?}
+=1l$~xoOn)6h~hNfl*+0XQBEu^z>N9BE|E00qdDS<C3ywgUpuj_c-(YZhaSD8Zx2-HrCtxf++XpI?Z-
+jh7q_UeM!IFs4?RFZb5Atz)2zFkW<&jxDbFecE=_>_6}htgX+dTSkT(H2rQZbmH299#oD!aRFpy#O8R
+0{qb(0r+O|5tx0Qd-Zg&Rcdy*6fuG#>ddou(OWMx<#@|+3Sgd%UCY}s-S*fMZ`moF4$E(wrXw-Lx4b=
+FNO0!aAT-2+V(A$8GH?Pm4qd6Y-3%|w43TSDp|uc;q(W?Eb|xg66B5L=qYx-Cxz_NYxxZtbb0nNidqk
+P;NwoOkwO$=#>$Fy!t7z~^G;6fghMq~K0hS49>ey|YX!#l9d|x&KgP{00kOskgu&{a07_pg5+ygKG{m
+!9<)Ka$W#=Zz?0FKHf$*qtE;7*nmaL&z?N8zC_Nu%(&g&2ifSPUza4@`aWA);w_W};;Tm%5wt_1fSz3
+Z1nav5n{Jf9z(xr>F%M^^;sm{KNvxj&~{WC(6ox??lV{?~1z|ZX3EJTGo)=_Uz>s=)Laj<tlsg&Urd_
+_o85Xmsu8u)C}*+cSKM^={5<CYLHOuT at tc$nYCOb<YALgXPbmtH%Q3gj)ZRL9E%O3#diJc6P&PdIo>k
+NO<78G7FV-ZjrQh&)2|k4_&~=g51O0Iiw(IxS7mM~9|_%(<m-^@G-x`#t{fe{x4(A!)oF**utiX9igL
+U?<pFa`>=!DvGc~cVdI0yjQ-tVlqU|W-&f8Nl?nvJn?zQvY7w8m=@o8~|xuQ<wL6zXpXhYk;(XIy9fJ
+Y#;sEA3W%}n0q*p4Xg-aqlW*u5V(yp8b at DNqxa%`GXEtyF_g9={Mf at i#Y#x1jxrjgZqJ3(ducGNzk$h
+1~+<T&JnMj|PrbxxBDr2$k31#0gD#uA_7kZb><X#?~oUt%#DR4j5x+=x8p+3uWdqD^2X;79v>XQ{cas
+%ar4KZIOW{Nh|hZiJZ!D7B3||!LEL8E+s*j(0?r7>Qy(B`%0S0)qVXy?kI_aD=;C5RGH(hnoIFnw#yd
+Bux?n{#5V=jPYU+!w5F&Mw{zhd?YjMviP#R_yxiE+94l@$Y~g*h`WN#F>;Nb8s(EL1D!K19?}q7cq^d
+vJN0AGTF{Lm^Dvz8xa_Pv4=KGA-tFM`_Qm8f*BEsFZ`l7>;yp~!DH(8bEqNT6}O$U0AN5`S=ZM;vBO+
+~gA)hDY at m`*bD=jLPPZ;;QJ9j?+0|AtPS?>R-q3?0Pz#eKx5tsjAX)3g;vCsRv4dM9r(`cKuA;fk8lm
+pH~{3-pxnB*?yq?fH=^dsAOdoflM<t`kDZy-?ic0$t_d#&nfa92 at 8=+sL{~Y_yx+qO5Eq#I#Lc;&<73
+{FbZ}zcu3bg!sKKeou?v_2Tz1{aSvf$%kdIS?DTn$-2sZW~;99!aOXbl;4sUQa-&^r>p!4*V5n6-ZmU
+^+0w3blSSZgS^Vx2ziaXP!WsHa(;j!3wYnKLGL3M!S-N$_Eph(bEoc&_NSeenQw?;9TN>&TMOu<BQDd
+u1gfn!BgT&`$&MtEvkTi+rb&@6#<YMj4hTao4B~W86fyy(`ByMS-N%W|YHHn*rCK16aw+Q_ltd5oMSn
+YO|%Y`NpcA-gJh#2CvvV^Q at rr#eodYBzdI~|qE0V34=O4I5RtX>Ak%ArE-cjA_$_S+(>{e)MbP$YsZR
+ at qBQw_Ck*ugmGS6zPf*sI(U;UT=^h-Yb7pNrcx#8wQ(d(hWLOO{T%kR5RJ7WWP!wN$9n<s*qo3rm>a7
+P1)I%oZnC>_`6oVVzsL)7l?$NO*MYT_GzXfdmrP2rag{wL at J}oECjCcmVCV=-!<@s8nJSa at RbkyG}Xu
+|M5uIT`3Q^AWtNAqOmUgjMOcQr%xW*xh+qq%7foSEnc%QJqL#%hsU4bg<yB{y>{OTMJcTxCyP^%medo
+C2Jj~!q4DgineS=HMS(-eXpbdOkPD$cwvnXPTXkFRX+FOd!X6sc^9cT+B`&>#F*kh>yVIeD3ekXK at h$
+QI{_p!Q?+sbVHjLx#Vd8^2YbEDICp*`H`cteCzOI2?kSzEdcnYzrn3Dw~#>-sqyO=~WTQrUzT5}+5fa
+>DsE(3d(pVFMDn51NJ!j<+=bUEaZO7Zt??0fAfbJMD1gX+_`oJ>d^s;|svs;_Nc(`fY4naw+-P5d{l|
+^u7_L;J4|pO|P{27VdSMTe9~SR*sQvyjd8#OZEXpzJ8rhEy6#(tOO+*Z|N_#%a9;3)unV3T5^?hTB-1
+pLP$hPT~DPSG?8^}LTsrNnn-V{Sgo2!#4$X$#A8Pte^mYgW#XE{qKV<CPn$A~x3tB<8<mG0WIf~sp+`
+PoC+i`%DSF5sA)D4 at 7_y;<bQgNal|m0G`iIg at U>w6(xh+5gnP^3pYS9u=Et>GGDMI at wicn}D!O3Z*4$
+wY|j at Dt1=+p$-)s6}S>GqT${bp7!lC+LXu$c9oIlRW4P+R$x9VUI$dyF?GNn9z`Xr9#WEmTPzgL&_an
+?i5sU-rJFF+8&nOJhiSL}|&|TZ+c8uH4Nv&=?}J&=@+%8pEBG;zD?b*OrznuB&vu2`x!z46j?+gIq6*
+Ac&D<t1(;#QlK&XLD3kBZV(DVkzA6k#xTva6^KG*c*-_}jmj`os0>B<5PAKj_L@}L{x-<DF8U0NpUx;
+3ccC_XwpOtCtfh+D at Ss>eL?}sNC~8+KeMw<B4eO+u;l!!?Q2-*SseCZKAG{^5Vh6V-L1S2=^rtQ*c&}
+^QhE9 at 2CzTJhhv7nd7+$-is-5gdMXP8KMJU<1Q7xiEv7BW+Eutt<Xc4U((ZM9TWJQYzcW4m>hsat)5K
+*@2meA3O;igO)g6b5BC=f}J=yZc<gCcSMt$K<?6pW-uEI~p-m#8!jsShm`9hYH@&?W9J4$v49xM;s-!
+GTggwVP?Gf<?!dYHhTVe_aEwYC1 at 09Gf^)lyDpk3hyH|QZA;gXi!uMYsGd at ps-eF@OVoo5gjM=s%p8`
+j!ciLCTr~tZ6>Hkq?MNK7s;QNlQ(b0K<yzqOpmQX&Je7)wuRBX>Je#BnxK|Or9qZ?LU9E<A0c#L-|<a
+|W8Mlm%)IPN(H8bgJt2Zw=KQ8qFEodJB&(ybyIJH?)nS50O5411kmZSnsh=}#6&;&#qIsDZm`)X at m<8
+k4>xh*ec(rJQPg*|zRZ{Ad%oi0~=*~B-79}gt6WLkHuXFCO6#+(+oGMyh)!S4iGOp?-wP=YVE^1MsOG
+Ml(YYp+jrg_T*86KAjx}(UFt~V?)(^m9GLTw0(#gd8PPPmOQ3o+9yS_MfX-Zx51Bw2JfvC-kmNxwk`g
+}ea0AxvkN61(3T6?dgh*E+ at QKT*~jc3G`sT~_MYP=bFG+#+yZrDJgf5vygrA+8roDk+~bLee(n50*{|
+xGHWSlGJT36&IVBf?IN<uY5x;R>O^tm at LfTiXBPD)(I1?SE&*v{8r_VFyRJo>vn_^cP{PJ#JhZC)kBs
+=MOO9Ik|JeOto062bDT;X#-{yZ+DPpK0*3^11 at w)-G`IyxQtSDdf;HTrQ7-F!*y9U>YqUWXeHScDEt=
+3wv#PD7c^ww5i^NecwijQ?YB)Dbb)lqzJY8tBUA3M*u7l;69Ogr77|TeqR(*Bn2 at 5wORD|;Zv!hC^`l
+Msk=Nk%Zo~{xX*@`P|>u$4^KN$5s6*xv^^qtVmGJgR^wb8YBZ-2){vPOr}(dT)TN?GvHFkJa`-te$UT
+l&OBR@;_E1R!3#IE?7L<&{F5NN|eKpiBmq*<S6~=s^sKE8StafByux^tqs;6^bG5y!Zz9^n~V?N6O?&
+AjMu$d>GQ)vcF6^=M0yTbDc|>7TuT6RwRtiIdGszsqu{2QMfpXuQ{)}m|n!F73FAW9BC?~X=?!CXhK5
+Xr^2Z$gj>fu3&W{&^yw-GT=lE3WtN_(y6LBxv0d4i76}sNNYl_UK_bPpTUTW=Pd{Nco}u((=A#Tmgp0
+c=7)_=<Bs?o_H=*J@<K%F))Og;6YbK}muY3Z>h2W0lwR5d&{DzdW79vKeoqS)ixz&svf~Fn$?RM)NnM
+uWW>ztb5G)z;ujv`fkTk)e)>GbmwFB~$R?ObtIsj=N)og~ZdKcrH1wB4Yrd@*`#8kPf_TjraAz5M-q6
+4sB*ajxL83iA<%-P+p)Ds7F+%oR{P-Gr2q*GaiqrFBxG=|>mSMHlVuG08@!$_Lue2)svp9@?g&(%y8=
+!E{rV_t>>H-2H{C?-TRv`52z2O2 at nwrZWx>dudkdNbcOdjBU`dg=Eg6*M)89M at NuK(Dlf?CUc$VMcK{
+mZ#OT>o|2v0-`=#_!L&ytzTcWSbz0W2B9xtJH;#)ys5h*k7D{1EyAcK#yO8f(+cbV8<4c151iJ`6CD=
+%?j$k!th*)sGG~&7QWLn6yka?NR%Vb_9^D3Fw$-GWx4Vg7$){<FU=7 at t%nZs3w8l^Nih*lA_A?UdQjY
+~BqdEd^3z|ht%Q7^j?j`d1}ibDxoX7H>nn-*9r*MWOo9X#;IwKcVr at B9ytZ}m4+(!n1HdX+l4Db<Mw>
+SW;tQ6~tza0S_S5nLvi7v<3P$lU%8rk_RWT at j_X!6s?oCWoo3tDh;PsD-&UAs5<&qd;|a_OpZO3Q%^L
+iE}yYr>!Gn06{##aDt}^(g|`2Odp84=|pASiA*;#-N<Z1W*ahH$#f;N1(_|#RFSD7(~(Ta`gJ3f(Ng+
+dO|X$*?*}$@6Xify+th`4uU`+gZuROe&E-n at -~?O+>O!ru$h^aJuBgJ|Z19&qpiXlsvLgs{#g7_48vN
+++6OW&#@snFtigq}_c(~-K!QZ^2!s2Lfsd6A>5Wg(ib%61P>70w9lX-{tsftVX232YMvS`N`V+~cXp~
+>9#VFQf6j~u?!e4_f4X{W2lG4Jvr=3~Su<YyNaWBk3M3UMeU$0v<7PgM>>f7Oh)?L>p(Dztn>i&nSZo
+MfKvs=a1xrM*?~fV7fqU+P9f=d;p_19e{Fe$JwT)|PFPm2X|gP8Q$pCUT=27Ga~!%5t<z363UCGe@@h
+2p5{BX)6l+wATzSlzj7~ghY$Oi(-q0C4aKANNh<*TJl=4eEthox+zw7?XAgb%K+rs1-V`>;2hyf<Td3
+=eB3*?iM#+V9f2m+q=UJ1tSZ6?Epl9o!3jx;6YR?3+6+!89o<5#IDaTkBr>!K9NogDM11 at kr_z35*jj
+2=^^vq4%2e}=O9{>|(Oz?zl at Ifl%j}6b9g0W^ctMa-Ia2v-xWT2l&x;l7Hj1b*3=)^khtQJ>l)`LVAP
+Uo4`fS*7u6 at -x^RFIP=c(qlXrh}XJ{Z16QCjV`XBKTi-RHu)rB83`7Q|Jki>;+%L7awy>+^=SnKjhzV
+G`PKHP?gnmdLwCy2_`wJ9wAt8eJ=Q6szSEnB^5-f9>5ZArY6t+9g2WT`DeYvt)e(b-6_x*Ht>~GIS*)
+a4{}QV(>SZz<2!|2LavWhA<3N(_KBTcKqFCF19KZsi=H~s#08}l`uiY+qxgYH~np6#SXPvTw-krHCnH
+j^f7{G1fQg1JpsA2wS$7AG_t0IPit1>sJ)iwXx>?6Z{Ce_AjD<$J4J;7HNPdueM*y}V<k6?hs?&S+*p
+GkM}(4u!sAR at 8HE8j)$x?Ly3lgSfNNHrjLj_ at 49ekjrh~lHc)e<?_EyoPX_RgL#DqE~NIb#0ax1XQtO
+&FuaxEf}9^WgeDF^A8hXG4UBd>PdQ9A58H0F<460FHvMjGnApe}7fxOO#OH{GVxaB_WuII_=zM615G&
+FUL*6<#F_NgpilWf7bD%GyZsbu(EEJvcAS-M&1 at W%E==mu=<JCg>wIGj54H=i|vF2SYzHao${anD)%@
+2uw$23 at MIwEH*bQi}iG$*Q)s3jN;Gj=C-QpQQviD@#pqcmf{r0qN)e#e2O0}E`d01bQT9xj^2sF=*G$
+!357albA*Vv&n`6IsscEdhsHCU0z5FPBZ*!raeR{aq8y45)8#g4fsrcddg+8jp(?s;Sv4D{(q1+XY~y
+`O`-QPBrCT;&dz$HH`^k=J(n(NNPkxAAWP%-{=RbmC^-2?x7!-RW3{RLBKyB@^+0m{_T{f(C2z4pLR7
+2tiTMjlCXY at z`4UY6%8!);CZR$GO6gbuL#7AP4N;TmjOK-A{xZ&i}GK|?9T1~J^Z_Ai&f`es2uHaF!x
+ldJ&6qoeQ51K5h83EsZizV22%kyKzxBYcr{I|8J^Q^_QbCP at _K)tW~dma(D(c4 at 8m|~Uu2b)6H6ArhH
+PL{>gvR=mvI8f4$?%RorQETyucARQ3G3*m!Z<660^q>1|^k;+1aM;IQ;^f0!_nLQgV^^uK+?&_TTrpy
+?nUy-a at 9c$^UBap=?^H&chq*~}!DEG;Y2Yw_9v$FjQ0b_OZkYCQ^A3-S0oonY?MQNVD;- at EINIIVT%7
+HX>#8H&&Av~FW2pm2_e5{w=JG;0l%$TINoVjF-T86s?YXMGB~A_)Le7QZ6V7-a9bR2+s<F at WFN+9Oh2
+U(_$*nD^REy?aG$?f1!}jmTR?c|K%F$F><kWNzL+P8!Ri%;FaW?7oz|q$Y>ypHYnK-8nN4B|3=i;7$r
+0%Ps(n?5>0*DUbI5ykvl+Mu=$C;MIxf&ibN2=k7MUKG88kgr*Nr-o{jVSK*G*7S5-YV>8gS;P**H%n^
+$nthG@~_q2GNkWu2Ii(cs;Un0mJ6dAA}?JfK><Ul&!a4^+T?;GNfHtQN2`sF2?<qAxKS;xtgcB)0A*s
+pBnpx&`ai^Bo!2d+{tyH0h%)_ooU|2J>wUno^(pI7Bz2=w4-<O6o at J3&k&>Kl-QjkGsQ3WGy|IC4 at L(
+H7BN#<+K_^=-=v2oAYH&dt!3C~$T+j(zKrDa{c8dywXYi}IJ=w>$?$evzS@&;@yrcL|l$<hrT;>=WKY
+=A!e9A;~Mfrdda6l(fjID^e_ylqA;c%(c5`^YfDy+-a!df_ at k;3{N5|`0k6jp;`suDs)r^bpYQ9f~d9
+L at zOaJ1w?8(*NZqzki!<!NEMT80a=jU`@~Zk7Qs{VZYPRc#3rrn|*cm_03z3G)fdqr%i!+6&Xi(n^?}
+EKP+OV6hWsu;u0mV5s8-I?K=4n^F*AxhTv5mhXfaYdJ2=c*{Xy4z=tS=5Wh4VUDtF7Ut8I_k@{hc|(}
+#me+)tX?anYxt0aOG+1T}bBd)<nA0o;G76iEg?tIu&A9x+GFn)%XU{T3SaFn=rN6L3ZnXppD?Yilcna
+&wuyz;LrLcAs))lb23hQcEorD#qCRlzSZrulUWw>=0(|KXV77WWb!U{3Wa!^?JiynKpj54-BSvCoe55
+ at i`VZ|Y)mgT~F8rH?aieAQ2Dy+Ce#8N1%*nwlo7uL&yeqj}Rq(%$tRYAY7UKjKWYmJ~^SZf9S!iv$*(
+p^|_Q-Y<VuwsL!#Z^HW_n}(sg$GV)vQ*<#)y-{Sy)3M5u$~oGXfrLxg;fpf7sBceYq_xYgmsg!J^}07
+!m5FFxv=`cx>#5PU at aBaU|0)<RR?Rnutva|F02D!9i1ej9E-O>!XqBm2w}zPaF#$}9S&=6VI2i)S7Ch
+`RyUD|+nCX|&CW2w+(hdncG%JA{9B?plipG56f3*@Ai1ctPVutK5y?fPb($i(Y!@yCK3d;tEu{@)@4}
+^iMlQ3kH`E-}LhCeCjyFe2$yMt#Ty`-^E^V|<qhyzHl8c+x>1o+zu;kK7>y#?Hgi0=Ity8+}(o1r2*E
+(g&E*&M80IgH8?9x<n3D!Ezl3l8YNoV(Ko#x6e7bKSmt<!wj<(T9$K<l(ncBv391+iM+#WMB(9%e)RU
+`$sNEgk1zn$d#jAF+0(vAxA3!@6KQu!UL(EtMg5;t=i!EG>m+7id||uC+6?Go?AQwXQC+ux4N$s4|_o
+UD~oV3W>o-oB%(;-gM^5$mToA`7LqJ?-LfkMEO==Lkr8}iOP+ at 58#9)%|U6Ej*vZlfUMO~EzmTQr2U{
+&-R8b!1MEv%ng_ah)OdVRI?%C%7e1VX192 at kx5_6j)K(2N?Nw8Tl_6pd+5&T=j;5RVw7$Z0rnC7-#qZ
+Kb^Wy00DyI*zOYerxQEh0OfWwCdTa5ebM1Mms<U3lGR_a#uFb?#oMRw*}!fAA^Wrj81!0EMy=GJ1Xay
+IW2ry7gvvy;rb#Zre$31k)X5!2bCic8K0eN~gPSEcoioF)VVUFj!LO+RC>-r-Cz2umPISOQ5Vr<^n${
+ba|}Pr=jlQ<zI0<FPD~gJqG)SQaVDEfYO;nb-{)V_a3T&k#*iU&8g!?QHWaaxN=yEh}=3F<vp9buqY`
+D{$TO1LlWH+m#hKmK8Zh8?WIw0tZ7=th7b-k2Y2hACo+K=f_ZhdK~une6V?k65ye^?L>eIOT8op7_W_
+}Y_81dNggdJFKix<o6+8~lO~54lH;vYJl<AwL|P%YdC*+tyMgF24{L$-Ci`aPhNh++b}sKYx>x-|t(l
+}-ayM1j&1)jOcH6nEa&*uCnW}x4dW@}nZ650GXpVJPRqqh%gTZF|AUk7kiqt(Q#m?BR*?Ggm6&BZ^Fn
+eQra%>fp;$U<&RXCb<I5s<PJZh$y;Le2|%a5EfmD}yC-T|4&;5N^maG_*=Bm^kZ>FOQWIciv)X2zkl<
+Z+N(cO(7JDE+Ob3j3<Le~msf7lgG?2>Ychic6GXzM%4;ig0nL=(w+W#fZv}ui?NM+0|KbU40F+*!cJf
+4)mW+=;_j3FX3Q7oF=^rla-yyl!daXxlJ93bP~1HY2ei076lKQ<5X#;KxSyFBO<hsE%JV8P+ijcd4f6
+4wfR0n95A2WVoTTuPi<C%uI|mw&vQ2PAWFItC8j-gK|kg-3Ho8Oz5T_YJ!IQSw%tKzjLmT;`4R7ZL1z
+q2vBi+**;jvKt{92+!-nTG;%M1ech}~7aXPE9DXu23KD)z}B~+i4w;iUsw{ehcXC01>Bro2rm<apN^M
+B&=1PM|>1hE8Z1XBp+6RafIMsSkgDnXOq80$h1KoCnXiXf9<7Qu at IpA#G>I7je1!Gkv#b0_d4h$VQMU
+>d<I1n&_XC%8y(gTTI;F;{{v1bzhl2!;}jB`^@oCs<6df?xx|UV?K3H3Scm^!EtC69hp75d@<MG6`l9
+yh5;%U>Ctjg6jnKHz^*0nm|L)k06m?EI}s06oPpKuMlh|*iCSP;5@<gn^L)L`0dWJ?9 at TWP8xNr{}LU
+0b)$|Q8L6}SJ-bK84s_7n8Ht|fziTxNCVH_k1Ot91AZht3^$!DF!q_<a%P03?Y$%Ijy;y*a-IMvTSQa
+VL8O8>(Xco=}u?XQ3o|6|jCBqP(morYEPYGmED&trV%VT=_>&;SGCjBvbH?nMIU>Oub&(s8Y^oMY2k?
+sSmnJ|Y^PJ>ti{n>_*d=n_=fvkTcK2#?ZD~^SU5RLic8A5bum^b~wwHJjWQHuWbgi|h=YJwd4H4+WLF
+;3(dOEyrHD%{dUx>+J at I#H8PwiNo!7paUTTBnjrDy5M}zS(R%y=7AfP+lNXs7nj}8Nw%p;$^UB<ZwCU
+-i%5 at Ngv@->35v)*UNdTDL11?AO32}H%H_Ozg+suw8oH9>`gw=f=VgXEON~k?+7`O(v@%rUBE6+<YXj
+QgvlYw)grx25niG!MdYlMQ!haq$})q(=m}>v>&g0%YbK at km?%AP!8j{Uw&j`9Xh~%Y9Kk)~MD64WT=M
+G0j1V}*QQQncr&8xieS2B!JDXw{1b<|U(i%^+swszDiaSoOUn%uWG9_x2nv#67Y)Z6YKAwNVS9jL8-l
+n|6DV?Emz2sSaq!P{%rH1zO- at z9R>Cjl|P;gSptuYEx8^rgbzC(#`6g4_lF2#G50?GjR-PvBfnE&6bz
+sZ8ad$+U3^7H!}`GHGQ|7L!^*8FlsO(ER^3ZF- at j3SN3T8`2d>rzzG^Z6V2CyP||Y>L3VkIYfh8){Ce
+#XIr$WP$gr?;OfaFJmmV=N#D|y<mah#>UgF&qu%pDUB1DrP}b!z59Dl8~$lLoh-SR%MdLtPo$b^?E at z
+MY5ISMU+U+SD#|-WPF+d2t{tLGa|A#16#Zzr7<16l_13bLxZ%$BsIjS^`^OI<BpyVaWr=q~J^VB_^>h
+E}rqJ(r3ZbN!e+U0+Z2IdoQ3q1%kw%<cde0Cs)natY6)t(=UBN<%lUlDV6xpZeNgZ|{vBTf!#KOoFG7
+&;UCZ at qBPUu)GxRd!H+{tVW_pf#0lCg9$+mq==W(P9Y9 at nvsWCoBa&ba(a$8gEvS~5G6dFD%<kZ`7u`
+6!ulkLrm37)vE{D&#OSpCR)JGO at DgPA2vSIFcDB+D4ujr!oG5wnWkQE4 at NE^PoR9m0W%4Dwb?xDJDvL
+s-V4 at Tn@d(A7jB(Zb*5&2$dy|y;5wXHBpr2WcuwZ*G>H#BCRdrQIU3hz0`sP%{?iGQE=sBB8{He#>`B
+zHo?Cg$>YqS32S2S>KGXr>4e8uL+K!(Iv{?yvx at m^G)eK!Bt)xGWlZ&S`qT7KVdhSuM at 1o+GgGO^P|=
+^Wiv8!oqrT&>r}ghnzdQd1P|e)yZ&o9J^+U|C`LnyvKil{-ZT{@<^G}JZ{@*VC{{x;o>oom;ngi_W{_
+gjw#{qVAfA;tJSH}VW)xSTZAAfD=&-TsM at 4iWv>8}5Nzx3A8-OxqctImpN%rwm^nLTH2={)oNvIWmAT
+=cK!7r*f0OD`{Z<<+IjUR%E6^_8nuuX*FmwQs%s&boKs`}g|yH+-;h)8;K7e)RDtpKjf at y}V+_&Rw7F
+-m`b#=U?nUaPZLKBS(*Y`PK2SPkeLo)ah@(`~J+?b3dHFaPdb=<)y02KmB~=>My at uyZ+ma>YAIs->Uu
+NHfMJB4vtPuoK;PmHE;1iOBdHx54LX8_Mvue?K^br^zb8{)sJ at R>fWt;kDiY`?(syg-hDKlUfw>we*O
+W0LE7MuzM;C5vEx$pY2(u~CQQuC%FfB1l$UQX7EGQp^_h{QMvqB;`tJVEPMcm>^uJC2|91ZW<?;{f7a
+kEA)qg;A%#*Qk0|&(q9+EJ0SYp!f5l>0we|P`?Bg!9lq&1g&#D~f5DBEAOv6qouksB7+*q^hpFSM~Qv
+a$cm#{RsGeWQJyeUptH+KHx8dSavAlO#nAVFT$mR;*I=W)WnI6=9<?^P}?gdYB1%Lt;v%QP}(2*uye2
+bH*VoIm+vANg3IxIg=9%DTa)kY`720*XIoyJ3&9r5S^Wtlb0ntlB77XDfx!5afXZneSA)?F;}=r?@}@
+>j#5k+ukV*LC5a7V2?E=Oc;abNTs*sYMllI=4zr7A&n#}^<U|r(Nl6J+fJRdsUp$wjvz|Qy;**L=UL&
+C{J|4Ra)IE#m7E>%nVqJQAx=Q6dB{z3+Zf-q!ZUFrSkwgiZGGDAvlI$%1J;AW{B>kzaE>q<{Cfxf7_d
+c=<Bl$8;m|?ORA!dTo+8t(jcm|RrThPF5ki7n+xFnF7E3fe=Zee2PV-#xvcw&U~JJo8(+*8UsSF8?Z3
+LGJ$kHbBIEQ<WcinXpfxjja#0M)rj_$oLmcq#ZOI4F55`AYdrwdSqltK_NVgLG2FszaWblS(*532f`$
+u>yq<`8IAzVz!knR-qKvp%lvYJx<Ie>*6E`+-%=d1T9j2N<K>3N_t8<N_?E39F&z6lrNYgm7XWmarCH
+RnMx0fi|dn`+GncBB%Z20j37ckPM<YaFDiFnPJz`vXq+Jj)&za7L2(Q-jyL8TpnS~~X~Y<_MMZ|?=4F
+UFOvxK3>Q6s5&zO=Yg-OX4R>}wIBVDA4w2%(cpm<Y}2I3<w;;@7igE22PMWhjxmmzFJ(~WugvRjfqHC
+r#g3^hu&xSVX^kYJR}6a(TS9>OCW!oXjY^MCiS at F&Bv&>jpVfPMkr2SlY9QZm*0yu6$|bw;*2GsT!aE
+?u7&r0$k4CarmbLlG_`Q=h6f<fwCU_1S9u6#Y1(A!TePDq~nSEbvRC&P$z=txn0MK&ccSwL_g+Z<{cA
+`jk|4T3${Tg%;6S*GHwkEGB0x;b845)su|+yr~)4<JD;*^E>?W^#+5DH_JDq5(%ls+{}z|QV7LI_~jT
+4jeC+G6+q*Db$E{>#0`3NuGHJBjrqvBN4NYQHf1wjZ=j;dFsR4nr0Uf<X-a6!{jv5X^+AzSa%oVIVn`
+)M;j^+*$VR1xWQmL(y{U|Qz?Pq`ADcpsnHkyo-b%k;mxewsD<eBa6a<k-$o86K%ppXnoNTJ;ZV3&wi7
+v&PoMA{uQRN#_@@$;%Be}YA5LC(jjnJ#$Eb*LeI`zV)>P0cy`pd;WY-m)kfIHLe(Y1#<MaCSZUoYiG@
+aXYq52A~P^2wquyWUaUjl{Wo88lL_dE<>)`fNkKx~IN?T1`fpTA!6`nEKeg^BJpGD@>OHIRk8`Fo-CG
+EPYlE^>1BRH|pWL(74-8tVq^>m!1La??2evy8dUKke!AkL?nE+nH~MQ$?3R%#a!(0UcrZNV4 at QqGzxM
+~{-{K%(5a(H7J|T&KPo>XD>qZ0tn??NhUhc(Df#+Q;jz&P!Yfwx>7AQ8)+W!Vd(qsf4`VAPHI5TLH-!
+16Y%1>y-E{Z#|L&1{`#Y=e?LVx`z5Pday|=&Cy}ti`8~=ZG)3G<Y)%QQ#Ab$Dd_5I5m_{V$SJN~}FyX
+OxxL94Ttac8pMjgI5N_s(Z}%)R}ujkvde!pQpmCmQ&V8e50kL>qg<aF3+c`8{r9Z%B8C?7Qdp<Rl#%G
+wJUBU+3xAsl0pF%PvEG|AyrmR&ej~xH<FQ{zpyq{TtGEV$r?x4}Rg^@mnsrcl>`Xy|@3m_v-uaZQ!53
+Uh>ED?|<vq<zKC at Y&G^^9A?b at dY#)g>`^(w8h!q=*X6&q*QLFk?RJtmb~Gmqmxi5K8g-J`BuAPK+stK
+29+T#`Y%L2H(vdP1rgk7=8}ssL_)}86>6ny~VTj7fOQ7L4Q!mFIPa(7Qc@#T5Cp$kUQy*@~%Z#MqlBE
+8JSXh33#`tVGg`qihS+ehu0}u`;A;G!_rj0$h#^t0MGxbp<jSNi5BE;Dmhry5~8^wLRL!2?wkkN0dK|
+eGnDI--Mo=$Uu7i5a8;lgNsgR~P2sRO7)Ai3Jx%QN{%h|i4mLiyMbA%)9h78W6kmU=nr5Eh=9ldrrz8
+98KNWURMW at 6=41(nQ)N81m>pn($5-5StVhA1yo%*$>dC<cfs}_Jy!Zix5Av$ZQg*!t*i=ltpF&;fe(a
+7U&SGPbtvf;hrH;kw<kfbZRb2XLf^{4r9ke`t at rY3pa|iSXbW19EWA63o=q8r;MYC8-=8TH(>I%2IX;
+gZ-?mo2>n>&`0 at I@_&j|+D*Olg=xjnaB{SohhKPq{rzYfPWQXS%DcmKZ8M0w~P6lXapJT3P^X}$2#E>
+~Go5Z?Qc0kY~)h3m$y}V)*mYSL;C~&Le7^yy}M7lX8QSO3+SPrO=e5B0THIx_pP=0KjRGuVq8go%xN$
+dz=lc_h{QS=)e6EgKQ4=r~XLUSOII7>t7uqvpt)^~C+ at m`7 at YCbZ%AR{j)8#1L-gVfYoIVns#G{?%x?
+4)QNjRa?(IS#e1U+sb2x~{bsZ`KvB-FOr1c7<w%P@@<V^{LU>G!e=Ytur6E+wlKqHf?@rI_7!NG=-|N
+jZM|0#C}t1lkxgI!D89tq~fI_cpfD%G-KRExx6dx>`N%&siNGc<{R``Lo=w1@<ol1jXfu~T{tAMP>0x
+ at 6yoc#c`12QiT<O4ABO0qB6vmOeW}gH(|Bd`PL)74lw=o`Y0OVYV*QM1X(a2?tXPDKM|HDw*uxOl9~c
+dajDx)yaW|D?MylwYQpW4q9F&$#@8L)xWNLEqqV!mM&@1gA0bwJvQwOC<ToPknx6TOcX`Gc>D76zBn<
+Q?Pu})&W9Ad-c$Wv5#QsZOgf1dw0o^l*pE}N2ON`74L42wM)c6U10^SA#8ar at 8n|NjU4H1MMCllR+ik
+5Jz6CAh*%4zdZI5cc at s<_#P!fWtqbufef`(ATJBv#D%0ll_|8_&p at Yh3O)v>ngipU(tgy!2MC#-B*4O
+li$PT_jozZ5ZOIJHk0J^N62|+%I;Z=iQNy-17I&wo{Vb~Ief8<^9<RXDf^pb|5<W6xTOO-c3zX;UzhP
+&E$8>9?7l_D at 1X4ewe0WaER}^)X878pxNaNP-+JsCn19v%ZvKBY{N4Qj^Zfni&-O>yH+UT6M~SaGtz$
+K(bS(E<9n1S(C-{xab9+2$r{~+-=J(FWy8D9vnaB06kBt3YpZ_5Q|C^t?Yl|fRyK9^Nck%uwpa0i+Kz
+{x&X9e8jV`uNE!fkU;&zw3_Rw=SKzL(6`*GT4!<!7+fm+1<Ng}Ii(SFAd at N`04fXWW)doosHp&+uWgx
+tYQrT6unD2X<klW#!1br(gKGuni^wXz<A~C)F(Z<b;!6cZNT9;=4098S^ZZVqzT?GRxdb9h*f^OfZdL
+3W0$jmmr<sX at cPdu>?AT0D>n7dJ?!3s0lg|xDm7=a3yF#pdxT2U<9=m9lK6oAvi;D!Xkw~Oy*vKa)ON
+n>j+j5EGAe;FrT29Ad}!}f~JmjWB71-k0%&Fpd$z%&=B-Q+5{?snjdxSJi%dta)NaPs|l78EGC#wFpF
+Rsfq@{CAeCSg!BB!&f?$H41f2+6<?xOKH5Z8<f-ebn5v(UzO0bw<KEV`%c!FR8JpWy?2W|xVC*SSZow
+(u<2<5?eU2~S``+?}ExVRYzkAcQ;+c{ou8FUnPXvaT?BKe7+ at WVUa9e|6SoVG2Vw{2tx at jU6&<j&Ii&
++}IwY0sU5m~Zu@=}1c^<|@UQbIp~eCpO`nMV+i5cksf8WFp>SGU0C_6Z13*RE)}TBNKBmja|cZ?8J_T
+0gbpL{ihpo$1}x-A#B~}-o^dpyST5ti~EOnao>9v_Y-$<w>098zO9DbRbF-s7hav0H#=VSv12$vMtOJ
+hvtw&jb?@bU?O3`~-Fwdn^6ysnemH~PUF+VbJVW6f>)y{4+KGK^%KLyKJNA at KemH(uO`sE4DmyS6e|q
+=s&HDH6&ytdoSVl$$Ga8LjMHLs*e=&Rc<(Ju;Z@$Ss`sgE8US7_={`zZn`}S=nH{D_pm|k$44^2d$+h
+5#*x$K!d`H*-$#IMvAx2T;wdD=7txWf0>9^(6}$$JmItLWtl#ijSjlksjjw15A8 at h+wnD*Cy?Ytw}P<
+Y`w`mnkyeEx%7bq^d#uw6t33y$Ip=A4*F*v`2ogmHacwy%z73el7Xqp)f^K`qF!5wFtj||DoNIL$yf%
+d*m;@Q~sQr4?$@PH{e%$=;rtIb_4zb|CzP(_Sf#efi&=bd&sD03Q(I#>C?N at r~BGGwsij?A|VasqdM{
+KjMi7AITQ{)QvFfl)hc%XAqp`c#igo!>lM!cDS&vdIdEuomv#F^SOB?S4h!Zr6kV(V5dH^O4c%W;d#J
+cvgg?ajAH%lS)CzBer}C{_TEm66D1Rhjk-QOJoC|S6@)qd}+$3+Nnkzq&H>>SjUUbHxIFwkRvkf>9*c
+CIWqqz&%$>D6{h28~<2zW8GBXA&aCU7C>%)#fbGOzy`pZoauu(-H5mXMIZo_Xe(dOW^x;X?NI+i$at8
+#f9bKYsi;yKv!xmCtjr+_Ikf(DhrKQ4`PRKFc?!ZD&Q>uWV17n8S*wiqf`oUbMX`nK)r$(a*mnZzfC8
+YZpdxek*PIz6-;K4cnd;>+=qo$rEEH4dQ%LGA}Icv3=yQWLCsiZQnEu>3y^S=@)VSQ+4%vCb;-n#tJ)
+k=C012IdhPK-2;>`&N8 at 2<%BZQiE_I4*IV7Xbz>eL9!#Uru#k`t78Vx9qNAfl*$o~%m?b7AvJoRju+g
+JOv%=IUHh%ngHetd9mX(#o^78UT|1o{~boRP2l)dvz2>YN=%S_`V+5Cy&Y;jH)do at qTKA923-Yt%1ug
+n<Bw!ECnc0czdJG^Ql>$#1yCw6e=xtp`lU7Y!T&ROt5&PE;JEc{E(o;=Cf;O{xhCm42)vyne?Htq~(V
+=r?yW5x_tT3X5$En380dg&#$WXTe?bm>yIV#Nx!X3ZK=zw6hpXPY){5`EdHpMJ`Y?Oe}h{=(U&tDJrI
+*=KCuzJ2V#fdlNwkt6KOFTZ3bPo8Aoe)}!Ea^VC!_A6&+&z=>0QCV5Zu3x#tez?im)vH%ob#=Ai6+HH
+RXncrgtO+rVY9V9Ih;N!xV{b_fSj`_~A>5OV<b&B%K8d}|7qLzJefA|kqV%V%4aM(5 at ii1bgyP3i{1F
+s?JjI{FTd{c*e<{U(kK&h8{G$~AyiNS>6kkX2pQ88%ioby3zeVwPQ2Zkl{{+SVj^h77 at hd6*6^ehuCV
+rppjK!09m`l at _g$BmfFQ7TiTQsKaq(*qO72_v78UJ=L<L4(aerXZoSKnv+hE4o76u%3_*HHYv6hDsQQ
+(9LuDE?H6Kab)sqxk=(_!SiYD8;{E6Q6{ScxuYIBy8Zmu=UL-ehZwRLGjfOGTxWskD~a`Q2duD{$`5*
+rA>U+lEt%j)Mg)L3z-KsTR(P)IR7e(X1vu?jC<xXK6p0cla?~RXanQ#?`8bR_crm>6yJ~H$5Q;U6n_f
+EUqJC!Q~VDo{x*ughvHM7i%wJg3l#sVHU1Nn!jqIj2Bk2EQdmPN?4lITQVLgFarUbxXV(XFc4HD})r&
+a0`95d2j&N)IjugKa#Sf+ULn!_ at ieEtS=TiJ76#os1zmekap!kO<{%ML|WfNZ|mq1&J-;v@!O7Xi>{3
+j at WUy47R;!mRZ^C|ut6n{I#KWP)c{*x>{woc*U{lfZ%iS>OJ`*_c8?p?Zc?{D=D>lYIp9T5=|9vT`Jk
+=(0ij~?CJ`}gmvq!1BJ-t-?$mWYUCkH-+8e}A>?9}^cI852s$M}~)m_6tjX0s*>p>+-1VA04L)iwO&l
+2&eeKtM?Ng9(|MRkc^3oQJ$!dZtaqL_m)y{@A9a+Yk$P2^kZV8Lt~O3Zr$FE{3$?BIY9ShiXR$=$l)=
+`9b30<FZl}`-Mgp>$!Kf($!*)TZvAA42;d<CJgP?g at Cf*Z!M{!Gho6*Di+vn9Q2gZ3u(*LSF_AIJ9gs
+kKw|4CwYSE%ar&#0w|2Xkb`W@;8NJcThKRhxnIwmGAGOlyI0Oa4}aglz%xQLj at xQMu@M>@2X1Hk{Wp1
+oq3lzzC#LMgT6U<8oMPo(dujiVxti;RgAM2H-e at +bV0BRq9LA%@cE5Ea$Bb!!S>^-uO|lC0|!Nf`_z|
+3{*t1PYz3{^2f8E&(kykuec*RLW7E1rZNN$?Opt6c*;?;NqkSO^!>Bi;k4Bj8nKPI^3sUcppc*W&>pp
+lvQ+ub*3Ag9N5RTX%joURs#q_pcoeuN{m$JALj3?@ows%dN7(i!}}30`}l;1*ZC(W_X``OZRzafN7nF
+Uq#hknmw$3Nf(+6=VDGGhe|RXdYYeONNBIzg>6*7{IVd?iE>ugr#+YsT(lfxdRbX5gm1DGxH`0#~-sJ
+A at 9j=Y8?=A5Ur5{0z7#-;w)WF*&eJYyhu%HIsET;Yw*T9?e@}e4-;?OfBNR<CG@?23P(5Ng|%t9N;bN
+7~06nSpQkRd`IDb)A3${ue{>C5J3M6#Fj!r8`|k!<}dh0K31$rRMj4fvX~#B-9&Fonz)Uwo0h`s%A}*
+|KHq_19l#t5>fUvcd-+d?4h(k3arc$O>PTzsX)Dd1F1v3cGggVh0Z%6tcnjbKkRb=gzV7=g+gMsw#H*
+@@4kxFIR+Y at Y`>{u|NL!gDtA&?0tGaa?7Tl?ei!NbpABZQM+6?jt07^G|)Xq1Kk^}72n7_`8GC~?`4z
+tF}8 at GX7BS0G=5*TiBAJ!Jk98HX|P at R1jYBG_&SOoL-9va{7Dpl4#i(a at i$QXeH6cLocoWQ@*g?n|5i
+DrgWLyn=+Hqd{kIod#}01Y`t<38%RD-$J9KdC at aW^6U0b$%g!rs|m!93a_2|~8m8;8R572vuN4xguL1
+A0DcJAZR$Afk1 at _5fa4>#-6iUPEJ;DJXvJ=(2jpXSYaJ|a7))jc2Yqf)i#NpT)~u;l|C+}b_fr at 2bit
+f`Yzi^p7CIyg4z at c6^cRn6eg$F*}?XFKOEeegWo)CuW7<YwQR-kNu9*0iYywXa9Jb#&-Nz7*wQdZ+w7
+I<@K1)uT at z4_ul^`9JRA;qKw_sE44h6FtyDJ^HAm=_qnxEEtP$4l>+rq1w(S48mihL}zJz2-kHzErO`
+;+0Wj`qipGDVgpWcuKyFy-&v*yzSu(1wsYssC{zGGk?Y>HX;bQ1#Bse;QsT%N>M6uF45h^XsmDQ1x5a
+&iN4a8n1pBL(FJGQS<IX2nu3WkJ^Upv3NMp~rpMLu30-4`mzkdA+%}dXpK7IQAJ$v?;?d<G4f`fzm$T
+Ydh>0nC=%Hgk+AL<$d^Ml>HckfCj%Btmk#&sJxa%89<J!J3r_19lNNAqaDefxI)<Bvab8c+H0<HxZ;#
+lQdldrtFj4u7J7(>VLB#bT)>TF)Lmdi1r5ii)Cs{rY(`sh+R}ryY~F$N(4AYcm;OSGELU>&?Rmo0XO2
+T~kx at J3}{k|M<73@;*du&<APw`}=nXeuS66|MSm3=O2Ca5hwikhaY|@@V;>20>60iB0qfiFh6qShzN%
+`BqPB6JjGf5{`>Dw-?C-PbQ0MjO(xTz+}zxV1q&9$lUxnlusz75UAuPPrKP1$d3kxE?A#(EB6=d-zl#
+60Yu7l*GK;!)?dnTqxZu*IOT4_i+*;0u4jtm(eDjUKlj=v{4*QuiXZWd8r^GvGQh;P0VG_?>|K*ooYK
+ZS{QJR+DfB&8T`s=UPzWVB`kAC>!hwmw`n+QjAK2Pn<mvC5sxPKLYlBbZD6 at b42pg{rDi2}f1p+m7N(
+2y1d2xlu$om;`y9q at PX-??+=e5%JT#1peX!;T$01peTUlP6D#Iyigwtat~GXcN?ig?a4QF#%{Bs1KN^
+H?$qZ`QnQ&1pcT)YX2PdaQpUcZu`*tEpo4gKeb`6zk>gb8#g!&LxTSU0s^{&j{(5{z<~q&lTSY3ROg&
+zX3>UG{-}?A`}PR{?tAy{6>a6ji4(#O8qf!T-_TA_N5F0K&z$Q|avpk+bDw>j_xTL>40GPQobw@{bN=
+=P&VRdc;~2G-PJadeZQHgja(8$4B^iDJ^_Qp*K?CqbnWJ1m59$KA!;ZTD?z`^<z>YFUc>`bY0cZi<D1
+X%P%FCQb9OqnjlymJN&i(gu?!A|2*v0wdL__zjoOk({^983ludS_J`d9F$zTOJJUjd~q6!<&s1nmI)l
+Jp(t{ZDWn{uPx!XrMaq`+{>Xq9OZh&TrImo_2(D%{HrQ;=b^&uC4|z&-eEB?n1mU3p7wY+(8R)0UrU!
+#^^w~qs&o9;2ZEi`dyl{34{g_{!gBgXz2GP=Y0v+AfmyS_$K#+gnz~{&fPz)zklt|@TW0 at EB!zCpT;8
+&Xjmr-pQBt+7vL-KhC&D0IQR^Fk9MJ$Xcu at A&T>AGXow;HkNR4oA>=UUfd?cSG}IQJ*ui<v?SCDA>Wd
+e3>(<Se>R|!e8TyvS=m4+ZjlWR- at W;4-c<5(rpTzUjMnS{3oJSK4kwnA#pZNVezYx4~H~eqjyvb>tsR
+y7z0fmmn>ZCC`Zr!@Yk9 at R@ubCFZUzrrjU(C at 7B%Zp+`LG{2AAE-MIMDEo+ at 6VNf|d5XPioKTle%w{+
+H<c at r8Z4H?*6;sPxU<C$H%7&_2;vIKlr2}9pHQLbwfH7TEOezqwn``<Zn(6=Btb${I&ePf(AUJD>)w_
+(-8kX=dpy-fNyNtGiZ?8b8qxX)Tef%KIu`Sq4S4Q-%8Jn#_;dbrHhsSX^h7>e at A_w{bD>&>H_Tn?+Oj
+TpZYys{!%J`XKFBiV{!;zNi-}Y8t|l0|2c|i7*2Q$Jtxtiv}e$uv}g25o_na=cXIw1XrS^}e?;wnuSn
+)#WB5~lFZiF at +5*T!Xmbi33N4 at k<H6l{3;3g-+%zMMzxS+`zfCl(AsSvcNciVp;r!_;qQSy>(gmqKqf
+d%CRo9+DgVLTsgVLVSC-wY9BvaiGf3!1<FC=GK0W>JkkdDUMh(ZgVEk%KR!?Ym&-ZNVM))b<lAcX&R^
+%DR3cZr5%qG9BZM1xIxj*;7Q*fFV33OFE*&q|-vgJ|gbNu&Lez at Oy%`M$osT}Vcm1^m%3!UWHN2FN at L
+EpWqFtH@>W!*~ms0nf+9fqZjeAb+1|c$a8cOEi4CB!^$WQh8sUO(oHpMRgLOv}aky=&`MF{Lx=1{2vq
+))E#x90NN|?25!Jzp#^<E`g_c4&~IX_!q|pq+spv|5z(-zFo>_8rseC1hKB9=1?rO)Wrgwi6Z`SG8R6
+VCKAab&MsTz7DgNEphXoC`GDdG%#<&~))ZYvKCwvwFZ{P(JI00|82jH#L3Ho?j`55CbXaxW7oZFXgB^
+o{?8a7TR8mKLxJ%fgoG7U>)8Ww_v3H|t-bfO_Gf)}Pn3L5aBPYSY;F?>I3od3~hU<`vC0a&|sEq~{oc
+R1uC1#Ii&UhU+MKmOo{UrXT?CV&3v45ESB!UsgdzvcFfKIwI1U%o7_FMl~VlrPTK@#iwbxS42}O*G6T
+8m1EscpAzWV~#c6{{VmD1;PKs*Rw#&?Af#Vx^?RWJ at -S0LJQ(rj(os(%<|{uM8hXUgJ{o01NtPTJ+Gi
+XX=z?4e<@eTpC=j?5DoK)h7#hV8G3OQsOXczY-EfNsv7VAfxp84TCKJ_Z~%UD=gzg#(2$OM(elS1wft
+<wEBv$h;e5L(fPW&l=M6UPd9_T#t1=D$B0gF$F^rdHNHpLPG6s#$u>{M06yxs~?9Qh>>YT>kMS}+qj>
+*o>{v5cXJ)#X178VK`Z29ZY>I5d*RKqz|W6#&S-m}UWXwPMGdv5UDQ~m+|sQUo}2B04JTW`H3WG~1vr
+KP33prF7?!@cOZSDoNNpR}>?KH4+U&`3XXx2HYIY2m_!71Vd~9zA;S<m6<&X3ZLoaXCLfpBoGYK7amv
+(XPM!_FK{KKo)9 at 7T}Gs0eux at A;_bc58y$2KJ<o>*ZxlPja3EK_N>SlOXT*vklMnZ;s5EUpSqB&GgQI
+9SFc`vX=!QMsi~<|)Q^gKSh;c~A2etXPe at 4MWo2dj#TQ at Xix)2z_+Wkyd_e=o0*n(19hk#_2K1-kLyU
+#UW0yICAAJ+}-{7CGE~t|+3M3f=?HPU2D^uct{-4gjf`fxg<Kp6GfPaYB7ty at mchja#>!=NL^5avcOy
+SffINqOp@<|~heD>LAf**i8a77&{e5KR}=mYOzo&&iKb%FMPHZ9sS)q`z&eyc%y-oIrz<iJ<&hj{`60
+~aq at vP7(dAaA)X^Wx%So|u@(yLRo$AA9UEPO`PY1$dxs*aB!!pdl>)@RX7^`ql%>#_~@~bTmFoG6u%y
+cczE)EzghVr at q+CZ~XS#F{<zTUVnJ`<(K)aS+lM!TC|AIoH_Hir=EI>XJ%%Ka;JHv;3d$2b^$tp8|Y|
+A3)Ubo4ukJ8Mx(7 at Jp%JcxIsoj-GP=y9wPtdcPOL3y8eU6)OJ_o=H`C??6c3_2A)YtNdnNO6&fCY{Bb
+^c@?=pD7&DZ$9fc0y3;dNeU(5|)qCKFEpglBf?-;Xf=N_0pv%k3hhPDO%CtiAe#*7(XqMgRX#PDg;ri
+pq04Zy!&zkYo9 at ZrK8bpRR^01e8#7jrSl*Wi2L2@^a7+H83XG8Mv8U-B<^cXz*y8#g|OImF+=AG`?wF
+JZkIZoms`&PJnAwBPXXaIVwoc<<i5MLobDaT?Om7;h<ULovZe=nueG=#No%%K8T31a;f}>MsQTME86@
+Kff+ihO^L~w{G1kXh8X3-H_UcpdlqCg~!Im3f@}1dbPkGWsNe29eAT1p#On8WK-}DWNowqv;njUq>Db
+7aKBCI%yM&c(^0*z+_h^Lt|*1h$N7HoN4~c5k5aAx%ol+V)h#F40=tSud!YK}#BYKJFh-$_l{m_JBKl
+F3Df<5n8#eIw-g{4sf&c#ZzePNhHI<Wv`nJ(DMouH#caR&d6^GvAe)Ts(euMmj{-4_80=%QW!2~X-Z?
+swBQz1)aWo3!JmD;)(-_X~9zZE`2J3zZcoq$hJ2k4V+<ssOSF6s#Nf$^N^#TQ!WH=XVicPsw3ylTtCw
+!978Ko at ujZDG!wIh^_|F;3e)z)b<fK|h1O2oLxNb0Pq62VKjTFUK0=3VVC|zlysRe?|VM@}316lzy=>
+I#Ax|gJ|p)^91k|#@a^K^acK?8%2hIUI%;+UP76p4ZV!b{C~aN>)~(9|L7wcj<F4Cfr&NtQKLrjmtJ~
+F at V9NbD}Zp|CGa}lF$Ms4ML$Av?Xv#@?gD??`7ez<3&58cgFuI}-jDtReI3RlTRKp-n>TOfue|b#;Af
+=`13<U3HV?T8 at 8B6le?Wcan+^^R{}tS=_}h+)wla*ZY;&(V0jyZDLc|AM2oKtTFL(=mCumV{C;9Y^zs
+c`+;167=eF^@j at q3ms|GF0~%9^L5zeC-?4fUYt<WOhmi=az at 4hpmYcgo}M^fULw-*){+nM>WPP9Wby{
+=qx+ascoa%-y?pi+&enfc6T02mWXW#E+~0LEHuYw(FnNPgvJ~Km*23$S>&szy}zQFm|GhG3P|tqaKv?
+UDN~K(dVPDML$M!3Zd5^n*V9s1^(dOd-3_*_}#WIg1 at qEfpP|o;C14o+ax1csID-scKC;J$AjZY9{O(
+v<biz;|H#ojyqE@;?UN_hGG~4}bn at ggjD=p6OtSsMrh{zS$tL at UOuGi@+vHm;o8|um{zbCMCDTqe9c0
+s4HeF=1vuuXSW|3 at i$+Ux6|GOPE`x_7T_c+Vo#O@(0V!e-GAHj_V^F_Qvqtb9a at NN(CawFMSLt}o7Ua
+uca at _q#M`PhbyZD)|V+cFzIMcUuia9(hZ^8v>t9UInyp;PeM$@!>*oFD&H;Bqe<Kx-!_CntZJ+fAZ2U
+4#CNWX|8HzpbQx=`!_8CrLhENwVz(l7aCJgC{{3k~gl5KQHOYuoenEpH^PW{qh>;hkoHabeG8g=X>P;
+F!kZ9D9;*OeY&#OL|H$VW&Ya)*Qn1uM*Zf;NEkX(=o_Kuf_?>S;#iCQ>N at 9#f4whVZ)fz=GiT0BS-g0
+0B5;80g!u!;NA&9$i_lj?mW7-GKiKh%wAASfq2qzR6KmSg?_f<HI<`N{A9DbjgJ#owVS+Nh$2=GLLXJ
+k6D03djO|}p8Wl#Mm>HDB7+jzCHrHgvcl?MDE^0(dl&~VQK$^_%rPZv(|H%*CR9dm)a1~~R7&XX at mde
+ek+lHOO at KVZv`&<{b+7)<6@^?9;0#uS>rrjVSQXuA&s^$!^sxM2MGWJ#7-1H*bS*5sA^0b?#ndQa%v1
+V5gTbZyY_fFGfwg02&K!VzDHsC$+CF^<!GKYRN0=@V at A-HJR56SDPth2df?5$m~FN3_i!x>x9rlN#`&
+PS(*t*9RRF_|apl)ITWsL;kVVl{VDB0~b8&W&Ome0%<+=`jtz3#xM1806!)+;Kxu|XX-8UV*@>%$e-p
+(DNB|tNwmcSd4tbk;(@*mYpT#MU`=@QOSyllGraUW=Xr!n$Pr1`hBg6xr)~a_E2d7Jnq5>>G{IK)3LL
+O*g0jGa^>yf)-j(%z&@*8 at 6#NJs6LcFUS-&)GoCGh<%n&#Temq>K`)-(jLtSt~9Wd&@Vos>gcR^Q#HB
+GFIEBuIcap+f|n-DrKIsfUYQ6jJYHvAZ}zkdBgCMzv1O<B5hX(HMp=KGM(K{s$g8NfWcDnsZEp|8Ta>
+O1n<_HtRjfHndB2y}(T`Uq<o;IZwap}V!^f3&S<o_Qvl`u_=vegN|V%<WJn=zCBW*Dc at h&!3MMdIGFZ
+ub0=?SKG7+=$Xv2o~%g50gvEE%6AmO>FWCJUzwkw9YW@})w9^@?odvDrZYOW<KIHZ0$trK!l6*sHQGF
+P^nb|TY&NI7_S$QS&<#Nz2Oi42TG=-UJWv+skKl&~`rG%OscRFB at uLl|HQN6}#-289TK1edbFxql&pr
+2?==ad?V(dfz4_-idfESUst<LG^b6 at hG&K;*V(SRQ_!>qcpd*zQY1?wDG(?uC$enoB3x|ZHh7pBw=>f
+*CS@%-xfFZq=pj at R*{p^hJ4EgXUD8y){CeS0PU#Kgq2p`oE--4(j&jEoFEZ{9pHzXMK6U!e4rs2`NgH
+OonU at b!uOBU6~z3!w1h%BfL&!wb2*>ilWW?;`*7?c3K|r_)UZ9fgI3Ib+9;-J{WH_{515#X9hU1q;O5
+g);X+nZrc+D|;JJ9u3E2JV=wm9VOnnr~KEeSFd5z?!`P1V?FdT&@GXi#Yc`DDd at i2T64p?QO0p)ZzUy
+<eb4v)z at N$=d6WEc3A#kA8%IY+i}hFFFlo{xQSRsu6dj4e1Iik*!Vfe~)MjR8jwfEuCm9JJc4N-}XLG
+8~C at U)ah3V<(yP at O38vU?g!#L^!`ZXGtt@;9#yTXUc9udW)vFdj!&u1yE<upJ4iAkSq{Mpl4S>s0<kn
+K?3Sjz<uVl5qd4YUtiJp$?g{Q}|v7nBA1ZS<MIbNlw~&$0W{QHb_GfByWG*I$1<QJHh2o`J*o@#DFNh
+X)@xaG=0VS@%=)LkI`HQThw)OWd$w1CGROdmnj={E;X6ACt*60qJ2)9%DZG9OxECj~*>_%xD(~iw9+(
+tnor#hE4@?JJGQ8FXU~_zu_8|?V1F}qrAL4(KlePs<N(#`a)TQZuH5=jvagBFXk=sM?Tcoi2lDZJQNx
+D{rBJJ%a$z at YsKgrvF4=c6#r)4B7fwgjKAO|(5uMcXnTrY5;%azpyR;$)0Qn;lzoDKH*YKb_p=6yeg=
+IX>UsV8_29pss4PmEw0`n;AAD=#`ZodX>(BbPyFRs at i$l-Y)%*4q at Mqub+J3uhjmIQtc>c;?_-<EyS3
+GGv?0h#r;>Ymi%a?ClxpL(V>Z5*Mvu4e|-gx7Udi~D2b?dHB8aZ#j{kCwYFpjHMt%_c;V#T(1-+foqr
+!t12o~cbAw~Y^dT17<#)>&^+8fS?AuA?1dZVY~XkLDl=r=)#Qp(J0wdQK#@MTw8F;AzNkiaevVDfDH@
+mC~FE^660$Ykc<9laCq3VC03irp$?KWx<r6q&e`GU+)-(e<Rq8z6tFJxGLXw9R74QUz8)shU4V96XuV
+YzhbU{xr&D7N=pbY=vpx+2kzj1<oi}(w2*PG(H!j6>rxt+i(~GExgX|zn0E%yyc04EWGdi|ehUxgFpw
+8Ncwv%A!}h7VC9UaT9RYJTlppE|W00~3^^@6=Lf(SB2U!oYCS+aAH`XmJ6=`73F at W$u{f!tgLg=~Cho
+KzK?0TJVE)Eg%NyzSy+c9sz+-bVLzsMuud(PKVxxD)7t3n>c9uer(P?zABhO+qKiuFS7pFYkibA#ATC
+_fq(M85@{9QF?=V=12Z3;Xg*XO4;T#2l(5L*#G0(FVMSz8-vvx*RfOh$vI^)2PeucC6$ZX7(5RKbK8;
+l7Ig3n~1+jiN9^zHX*Ai`*F~3L*_z#pg*<61$K<(w)~IqO8qN)l8_e0N#u|52=fG_jeeQN{vzA>=%;}
+<(m`23R|J|cW at 9}GaWT)v*u87lu6l9t6gsa9b0uI7GO&Aq62 at 5u7r5IoXQo!WiqoEO;+h>!bQNznZ_S
+?JoK~D1fYa6-7*2J?8_rsDWEzdsJK>}?Cpn~AoU_(M4yhKWtU0sbl>B^s*4WIc>M2>7+4&(|jCt8X`Q
+y^{St<FwvNFcy<>cq28G4P&$qGuz&+1*^*+rd|lAV#J&o?CM^YSxtvO~If_SSUi`#>|bI at pkB%olg7+
+-GXuQap;8uODa3%P>rp-^nFUKgmeB=u_kKG72&>_2c#VR!>{+NO5r;Arh-E&}XVM at f*@5B|kd5AZMaJ
+uZ!B45jGANOoVhvOUcaFcj+74=Pr@!GVgQu+=Khn!!@{%m1ueo?xU1v-}tcju!xB0f&GUMmo5K!|L5K
+ at 2;;+(W|}a~Q<`TqWtxqeZJOhnw>_JAb at ht#8tawqHOFhQ*V|ruyuS1L&CAXEVee4yq280c7kDr8e#d
+){_hIjg-amO)dpr0%=+n;UF&}@QV4r7wUh(<F=ax at XUyW~y?*!jTzO#K-`hMtp#kaLzSHE<>SN$&f)%
+rc>zrp{I|M&i*0y+e$1HA$l2ks2q7kDDDUC_fp{y|Ye2|>w0IY9+MB|(dVUJKe0^kvYwpz0tyZ4d2J+
+6--;_C at Vy+R=Sgq0>T5p=(0dg+h$L!j8XYkfu^I+Vc<3%U)l3$NA*>6#2~edD&;R&)Ytq`t0&K<nxek
+N8fI~$-b$+6A8DAzL$M}^{w%}?d#~*-0wlZ_I_%=9)7+3eEmZFBK_k0M)-~O8}FCpH`%Y)&+PY--%`J
+Ie((Ej@!RTm%<rUMrQaI?CjzPi9txZqxHNDZQNROTf&znLf|7#91Z4*m6aHTX{TQ at Idqn%4wo`D|U`?
+=JaDMP}!5e}<3$_b+BqT2+w(rosnSJN<{jRT5Xsb|YJTL%s(!^;-XqIc%X#TCSXnxjIYi?`Qo-cSV^I
+Y%wiD$XzQP0z!XNgK at uZO*QdiA5)8s??<n&>snYm?V at uM1w6y_$GG;2q$7lIn+hNBNBLN%t}Nn0*%cE
+cZF)bH?X4pYFclzR&q?^*!(Vi*L2>qkjE~+R1*O`t9^P;n&&!G5?|dnf~+q-}C>@|Em8Z0bv3C111GL
+6EHhqYryV+qXEqW+fcm)20j%yE^uDpOGN$Kfh9p}gFXm49 at I^nsm<3;*FL9xL%UJ?vG!Z-dF>zCR>AF
+p)xqAuNx?4#R|PjGx{ZA=hh7V1LScnls|z%Rn&&mIX#&A{-X-20ePVr%_|EZL<QGZUeBpn>|J{Hs0ZD
+-`1nvpE5*V+&sIAd{6g(>AnUEDBtglPo$NMsIIRoxy4fXW(+UMQEC%|WfPl(?O0ZRgw1-u at xCg81rcL
+UxJxEOFPpmkucz~sO=fo+3^1dR$Z1T70XL>zWhdqV3G5=8YfEo5uR-jJgqKZN`o@?Pln&^@6CLXU=?0
+KQL4brhkA(WGe>XijP_YJSuFuIcEh_6+kJ;5pRuDbF;|Oi!cdv!1g&7ka+v`I_fys<+LaJ3SA09`pRx
+lY6%D3i5i!tC-r>dauo1`@PP4HS?b3{igT(-j&|JcnA6Dd=h;|`i%3*@X7Tl at R=^^?q5DHQSGhu+353
+;&o<)ay*>x2F2C{l&gUl|2j8Z?t$ZKyeZ;q`uLrd}f8QwICw&L|KIQw2Z?W&oz90L3>wC%f2Jv|l;&Q
+EDxZgm(8viK)KLp$eXdBogFeorKaDL#rz!|}-f=>rKgmew*6%rAW5i&m{u<r=aoXc1_8GAJcG~a9f(6
+sVw=Q-c=7veyp*K=MkdwuNni&wQ*Em7g(-Nw7U_ha6}y~lW`dB5wu!TT~%RO9`Jx1&!}>LsT5%<!4x<
+3gDB_Vx7*@qO2KgYPH4pZoqq?XcRnrC*v~reB_)yMKTGA^yYt)BUsj3;k#N&-Z`Pf2sc){_FfV`)~LE
+ocfLv{^$IE^6weYFJM%_m>_-7#Gs0xJweBUnrXXe!?i25k-_ at lVIhSfUx!2j|6)lm+F5gj+L52<WU3W
+!YB6PA&fcEhgT3c?FY<oU=VzZ5zFxjB`o8D;rSIi{9|8^9E!rQnj=?{M;BxqN6hA?eq#3D6){N7P*G$
+ypXtro}X};Cm()fEOdsceJdF6Wj;HCEV_kPpoL!V!LIQ4?<eAT{>`;PI=@Xhy~Piep9dw}|yK)+aOYv
+1^F at n7V>-oIObXFx<iBDJuo0W$(#CJsFia6I62z=eQI0XGBGfzi~?vI9R3Y#KB;XiZQ$^?ogbdj<yv=
+LNqRyf^q#us3mQ_r9Kezv>$fT31MCbyRE4dH(MCh*uBaiGFYRSNgXN at DET2nW^`Ap4#B6!ON+x-wggF
+_+aq&!HyxJAwxnYgv<;1HpHp#BYlJVj_<p;@AAF}`kv~0v2XX#fKWr|lF&Co4<h~bA`8YeDovE;ZOv)
+Tbt(Y|PnBm2Pgl=CDv9aD_j8Fq7J4rBeA#oU=L*kDo>x7ud)9c?dXDwV@|sIL^Z&JX{wz)eVHn?oh$&
+KB5i|!WQlto&Vs~b<yUso{o5CVR#2^+CQfv`4;2|fd9C$_G4oMLqMT!Uqmm)>L6hR_faYBkK6b?L4;f
+gCF9J)n{fGMts;G0XOpJAU5Fz at _%-rvJCGi`FsKKsaiu??Q$X`bO(u5*)^1^${hd5gDshaV8RKjgmV?
+%NOT at AkQEJ5}es^Xj%E4rnKi#Agu*lUQ>DKjF(=nOrhpygKXaY=hlmlHFr3D97HicU0{Q`@w#*Yy2iT
+)a7^iWAmx`C-=mDX1}y|>^Jr!N4t8=c=<PO(I`<bmyL>1qi$ZVqAA*9U-ZO4jHvdpIH6oR7Z+kG=3*f
+tZp at 9lNjL3gUDKrjCaXIxR9*#?RT;0~)x3t+^ZMQ=FYvV4YMxO&qnmn3-_l$9P(P*pywoGa5*T@^?Hh
+HfJT at kV#!@WLe4<8|4X&PlU(@1it8?(JDrM`Y)w0 at Fhf=C*^{hT+)zBJQfe75GJ9Fp6%Y~~Uf+%8GM;
+r+xiOFg5QkIg*gaaUtJ1C%t5+0z83Vc*i!zQ-y9NXAI9eZe?i59x(p^pKE7~v2{7~`1Sc!E=W!x>Rzf
+(rzgVum>`v4AEcGAd(oUB+cXCS^*dWkzPDE=}o3$UG6JAp7!=xO*l88B+<BR4J8K8KtX&DykA?Wm#2}
+ud1p>skyCoR9)?<hH9!7`L(0|ze9uy6)IGyP@(?SUr<W}1QY-O00;mH1*=GGYP}3qxBvhEegOa*0001
+RX>c!Jc4cm4Z*nhWX>)XJX<{#QHZ(3}cxB|h3wTu36)<`xlSw8o&L9i~5Q#8oG(Muinm9z~z>J)c8Hp
+7%RZuh-si4wuMzMk<o=nZKofcbdwNG1HwN>k*RbDEY1oGe+ at D)G>72ymAH26p+JaX<@YoD2fSKII2 at 8
+0jb-_J*8&e`w1_S);U*V+ at jWw~G#1R)*%3_}oB3jCi(`0xJ`@Hc48>OsQ4vo at c*(h}Hw?)14oURbc8=
+Ki~D?zp$0>W=&FyI(1|^R9xL(0v6zzOTSL?Z$$8 at 1JwmC3$(-F0+ku|M-vR?lRVOCI7l#pV>7Bz8|^s
+{;r4V`@Swaec#eGAHL^5c5~NkD!aa`oYL<x%im^x|A at YS_~WX%*xs4OUf~mjIX}w~p7?a|jAUAuFjmM
+(%NB$!@bWTGD=mZ%2M38oFrU)|!G<3~|F^KmLO^`s_B4Q}r!HA3`E~0136H|WT#GOf9~M}IzgEEaY>Q
+ye9#EjeBFw=7d?5&D|JRin at NbVGG^Cw5`x51 at MGAaR*kld}=bnCInF1KiB{g&IQ0@?fPbcs;g&)A*_7
+lr_;QuAOm{4De6=A?b;oELGxm at EV3wS}ABg|FEh3~UZDd)MQW?@YgJQGX+Ho_0#yYO`7?wWr;6ubzLx
+r48T at Y7SuO*%6q{?GguZV%lXU?2M<H#&lm$@#&^)B?HgpbXHHneBxk7C|mqCr9dC#gGzU8&)G+{n5$!
+-smJljs{%Ca>VN@(7wMy5VYAjP$ueyw5U8=jyhjE2#J3Jq*{gRU^tg=6@*RAn>NXjnJ&8=QCyCjW%Xb
+Ivt2q4`e8?8cDQ6$fVBsrla7h+cKBJlc5WVa+a`w_mC?+WN#(XkZi`>^?(iEie-RY+mL1bOWTv=EW!5
+aSnb5zwuHg1&>c at fo<jax8u7VlTbZLfklXSDp4nn`40E-8rwjvlLjCJqj&~!9d>?_$Dh}>1I?X?Sn#5
+RQ+A<qFt#3y4~N1tKH49dV9(@M5$1w#=^!D20E2!9AvbxF~8k3q4pA&K%aUr8hTNb4PfbHHkgT^5ObB
+&|#bc=*|7txBYCnRRFywcUvm9RuUogMAFejE7%=wyO+((Q(;&H2x?6at&<Mbhc3|%i_I4mq5FYhM|5}
+f3K?9tCuzV*+&31?fXGkehW7GQ|Jw52XmXQLn6$Qb&5~Lw6BiCD4=(ly(g{2ovR&tnYzb%MSU;=?HT|
+~(ULCgxM<12y039A{k`Uyy(Z`Q5l(aQAc7_IHt2-jYN5C5qce+)p!<`Wk>Uzl4rEtLWmY9SShO1w7k;
+B#gX{}}@k`ipbf(MWXY2gz)>1!P2#*iTe)ffQyL6j0OPV?B6x{O2Y^Th64d)e`p<{KN&<faz)bL%z$N
++<pv<28knSBH`3e`ET0zlIrLs`}tZVcrb&LBLii44*EDI!=U$FB;&FAw6Edaw}o&si+*pMX8#cEw(@-
+Ei&%O1cu8hf;;jCJruk<<F3#^If&DxoR!6xvq1Vo6ENVhFG$_q}_0C*@Tny?U7b3#|8i&01YZuXVJ?>
++G>XL87Ks3GPrKBs{)IKGHHM5X(jCd;`idPYUdp at jJjZ#P&}}?WHW|y_$I>nHYm#4wBDnJQL-I3^8(n
+_bG2uH#INc$3<H3*U at q<4tEs{a1ef+(#MG$sC0_Y$sJ!ZXC~P=K at Iq}^D8vgr&kOwq3w=k0zS~HJI<Q
+a$FZ5?#sOBiX<-Gujt8qT9zLy0HcD`*RU-`-az*0ttEbzfp0T><`maJ63&td^S3I)JISj>`k7<vIGIw
+jPhb7maZyA}G$hJL)TigRT)-Bk(j at J2>|RcwKxg;<mYT(b at 5z2;-3x&a1lY%t&C=yX?w;mqW17W09xI
+${`*3F)swxlMqB3|6%guy8J{`~o08iwZdDfyG~7rNs{pN>SF?RvhMHsJeD6jJUe2RIx>;_34 at 7imkHR
+m at cl^hQN9O2yaQZH(G6n4HU`>L@)kqKP>vVKy+ at JK15>gi!0i+J97y&2Km+XX_C0YCsae(F9OjkY?oM
+scW_IVwENkIUbfzFUbg`|E7vc!2&^NN1BE_^M_E0PCPyE4Rixooj7+$x#kPF3MX1nT#aV8FS>F;LxQE
+~F#Z^<&38(uIN!^_bhu4<nDPnC|wvsIyG1=W#^ObG|B!~K8T=7ex39P&nDtj8P#3l6<9SyK%n8vF3aY
+691t&#bzLKER%YX>-QAyPaZJFiM$<w;PvI-)H0;J)%ymnklf0z at PTq~?9?M>zzDY#9JiT^15T`>NF?!
+Z at 11;5aAe7HB{hO~@7U3VB!|3Anvj=Ul3jXV%%A7*OZC?9<eN!k+yIjLopm08iG8B}%ggDf{KsWee=e
+Mb%}McI7;Ag=}AKM;iMwwG$c&Rc-r`y#`!%pd+w8dJEeU3}c(e_HmE}U;ut~oxQqjmJk{T#PVzx4bZi
+p5AY($$8~c-p){I(s>ludc at tSUhqHLsmt`jrW*s6-uB#dd+Fo3zLr`Oy#%p}kgKN(RGS5tFhP0AKzuI
+m9pZ2q3(TcR{Z(fzzak*z(ASz)hy!+{0HrfN$STd#Wq!f7dM`zkI0eQ4@(`aX1tC={K at Q6<V473^0TL
+4g^GysIUI1tU7sUcK>9KR>Ct%1lKM3(s=h~(N3_FJ`jK-W#U7lB4=^N#VC)W7O#aZEkQKe9V7mTeJ2g
+XLJvQQZ?Wj8NLQ&2p^W5x*F?^8gv*X57Qj97sICCw#D?B(eBP4oPgi9Bvn%YJ^1`uI<bR+9eD_=-v&F
+C5>@V1_UazoysU5!%MZd>_YywMe7>MX+2<j1#a#<?bp;sK2r6yQ1X({SWQhe3-HMmI6;E>ju3?9%S#&
+dF(4-Sfbei$|IT16kU)^u5XEUl##M<-Y&P(vVq}-V!8UF3+=wEWpEZJTC$k+ekC0Ov4t=e`t|Ix`bHi
+ctHR~>EWi53|V%a{V+z~6{bUO5%seOs1kmD8H+Pq26s&+RigJm at a+romo;%i6<rOPbVT+#@96IkVy)N
+g>rWR}-)jzvJuDYVc&7_R+hH~|Fs;d-L5*T6gU##>L08R)%-#7&RZoX-IWl}D99g5uPs4<`&#a<uDkX
+aSceVn^{X*~UpSC{A7N-Sgn$wZyr@?Xu|Wg`r&mLqnJpXj8 at jS3Cz-^%Ky)RvGv-ZUpw5=YT at MTW|`#
+^_bFyBe|%|_6wIqPzK>5%oxK-h5nMZdKfMwuAug6>QQDb`dQkgP)hr4DiL`ZO0y)|a*-B<D4QRMZ8L`
+fv%NjhBCJ744SLL6iOQ&Mb2p2DX1S`3ws^$$3>4930vVDcwtFwa`80-H(Fy>^#>nW!n0XD)tS~b(SB^
+x?dw}GLT~<hp47JE=6UfyuyKHP!vVen)gTneg<hLMmKp9_Dw)#PuiaOgbuz=*(D8~{u^|LX4mfj at KYp
+)Ejp%%Y-#87hJvrn-F!`nj{t!aQrhTmw!*8N6%=pAT}mWcN4knw_0TP^_q5fq#Dx3L86e-v3rw2Hq8;
+-iTRxO~yPVjQY_N6pm$q<?4NbLWGXBZXM`(m&|mg>un0x#xf!I|AHjgB*)r6AcV at XzR`clD2wYzG!wG
+ok|+St+FwGNi)!ZWFI@#-l0o|s4<83%adzdm#Q(fnacnm*QDVPHq=}J!x>M*X?ySjarIB2R?&t5W9o^
+YG at y9Nc$6Mv#n4<jG>6^hiK}b!Md&*|3^TDqWBmRm>MIDCm0LPkfwhVGjkeHt{+>>GRHHmD*1QRHJJR
+XYgQcLh75XESyZmaECTMFeA_=wBl$i@=+;nqFKcbx(53s{>B!F_#h9K(=BEkDcj!btg!2U)CVG}!p;q
+K7+nl>aw at j^qAXuAjjl9bGEzik$f>bG4)Lc)eJ2;@z*&G7ep7jU;daDlA$8HyvoT1vK~zL0+*S5%<ja
+{~${9(>9VnyUEf?w%?6xg>DtN`{wBbLkn<Dl}erVYsv9 at Gh~w60*%w(rQ4lrOIuAst4`9aJNz+HlS$e
+cYoy-Cw=c at TLSKO@v#HMrGW=+L%KRwd+`U*+yxKXCDsyv{Wn)G(qu~}<}L7|h#0VT$wh7PKT|cx_pzA
+Yt<}u+0ayxP8twxR<VdW^$G(wz4(qUC)_d9a{+=#x(KmWFKDrP1#3|oE^Rhek;Qh$5@}Ntf*&PUJK=*
+b}z<n*&BdbyqhB6O!Rgo5dz(8Gbt0rH>lPhUhNLA058VDe=vDt650Fxz%AkUnOO9^ET#djm^Mu6v~0R
+BQDEZx|%a1~KniC+Ol)M at zza?vLMe^4NMzKa*~G>3k`&syUn;jLfJT>u<%QGOsYyMS{@KRX;`8t}&e`
+wWp~HX_Tdh!waxp|LX3f$RWl0wuZ#`+k0K3WG}EQNNUA0pQxp2{!{Ed;tGMZE}-#J?f~Owf*K8KDL79
+Ln!A#N-4_>^r8Tp1Kf at n9qDNxHvqQ`qPEv0gG{e^5QZH6`8+CM4zfKE at xVOff*Wx+APqv*tQ(q7^7nl
+0h$A)D$KVmLGrpS>>lA+vMCZ6>Yj=R6vAlaqzDErIOyE+<g%kLSU8pAdl<{&^2krV^TOext74Qo6^D*
++g?UjD(&^91vuLC*L2gAdQNY at xhRkr(}Q1_(LrJ?cI%1CU*34|UPt4VE<()z8rjongdtujQrzJIK{K$
+=mv7_eb4#F11?KqWWGHj&0eiqKZA1TYYo7yAfcYrO&l3rxHmrU6(A6c_g~GS6y&rJZQvN;DaZD|S}9+
+d?P^_*SCI25$=;z#?7*q9?9s7gwaq`gx?I20*m+pb}N=Wii8f>AR?q0K{zK3dj&w#KaXF$HkIN`pkNi
+N%Da)=WF+fsX6ux;_Gn>^rgLfIlMe<7Xnp#mZYmyb`UWnwh1&`i}ni-&NJM&Xgj+xzo!Y!lcDUQg?82
+w9|O<K4WPD;1HI_$qIr()CaW?L5YG>zNwKs>1a!C8Zm)#}V3Qqsc5P{PD9u<e121!1YYqdPN3r$s4j5
+Mb_C<%ab%T<ljNbyN*WF|h>t7Z42t%1AhvI*Mm!gLqL3S|6zOz1T_s9BdlKSPCsVu!KIPXxU)a|uFZ;
+O+&NYmP{5d?QjXdL#>w#wGF<RDsU5V4xWJ(Kg%c&krF<IIOpPkZVbq9_d?!u};`0jTQW?#cOfB?k+Gj
+>!^=l|AeNo at E(p5w3&YspoVB+AZpddan at 7tu`OGngS9l?6*oH_C)GUe&RrSV^7Lf12&LTTa}kuuxs;Z
+!Ss>ZgamGOz`INs8Q<NjAc at PZru1XVZ1a->IY~fLzQhv1nAnaN)sRD*nQ9!{y+_^ib;+R!lu;9wP?q)
+&pdIWukZx!`Z4~O6x90omcRiFXsb3uPMsCg5M at rqz7G)@W+Lb|)xcZCin#|V8E(8@;`f)K<Y9;FIznV
+5PXejHWKEo8%=A#u-LCb_GuMMz4CIKR`P8 at LW2~c at 1HwBgATt51X!@HDh^{7R$sYla7pJ)zHf|h$(Gy
+4$t<yQ!(PJCL9>RB at f)X9DG9 at VXexnG8ASM_()3QBKItA1^_l&>mRX<a1FZe$5<%QbwuKfRRX at 1s{E)
+;wf`X7nL4n_7sxCR>~E9n#RMLP4#{7x+pQpEU0QH~^IgOn9jFMowxR*T5r?@$+CD9wkG)BVW+Fw6WbL
+MqFVeG2#VC(mx!45oSNwMe)kuEojiNUAV(AKr7j$m&#SPAMGHc(lGq8#_CG(*eCSGsvNX#l*##_&XQf
+~N at TBt9>^+t8V|I at r<$Qjk2ai4DWS1y`D-9Wq=EeD1KDQP*+fenNeuw)(^{cFSu|`G9f?KpG(~$YRkR
+x#)Ye1)%e9Ax5InP2jlzsF2O5BiR*?+84rCMUB`-Y}LTlO!lg+ZEujfHo?MaWBga$qBh-ezvwMBWPWM
+smMeJP?`V*B-A&`ct>-wZ|u;#>q at Ebl(})V}OOn4)<F_%T*k3>CCrz=uAZCDg^BT7~S8{1eoHwa4IdI
+bUEInW|~~)cz%ND`)%x6bClZa?5oG8%RmbJ2w}NYHTGLymIqUjqtiENn at A}f&kjnH2pO};Ce6gSs^Hr
+-0F3el41^;os3z<WFEq&LLf?;a(Fu+69kaWdy#WNb0zKCGtibkR%Z1s8bHMMbS~QT%~!P%NQZ4aCNbM
+1_!Y5zosDnxuI0RZ7qs1KYk|b9bfK};)(B6e4l>&xj_`4UFl>9qd|qHUf4u?~tYWCgSKuZY8JgjIU<E
+;7?J8W^JK#kv&(0w(!^>SFW5%;@p-~pPl3APKyd3M)t;4|rUelS(t#*H8UcNuFumI0z2FmB2AbZFjWS
+221-OnB>4HoqT*=GTEKxXk5tHtmkXvAOj6WJe`+7^sV1~H?>eWj?@q0npv_|I(3Ws?&DcbE9+i%^tJK
+8DZg?};I$3u65*@yTsbMldU#^7z>Yerv1IfxIIEd5<V{ON6S0_wET5%4&JWIjEtX12aAjx|-HGg&UPt
+bKq?@ockb|O-+}`E>3N2)gHCuBP=buF+ETfB#;(jLZRRKQGl(-gAs23s{lA at DijBiR&93ROjaNxEi=#
+r6^CUPf=ntXIpixj6fA0eu|RQ`Y%d%B04QG5>`a2WHP&P at 3w%A0Yk>F{bGU~u%-6pJQPA4R0<8|9iy3
+TwYp!nfvN*y`W}mvRTsT8En&sFR>9Tb<n+ys_S4|m*+QQ3x;X{he>n>6*!w2`gV at jdw7D6Ks7Z*jZwY
++YTVC=FNARDx{N=8R==rwPy<bn{LWZVjXod at 3w2OeYGKEOUPANhvjDj2x-#q5fo4+n+2q}$KpzUU*|7
+PS*JHc)1K>_Z>>wAx#CRVW*JOoJ!4(k-sAa at ebhJCtHIQKO7g6AvoGwTm-SM0mB0j8&6?G_JK+VJqcH
+tWV16((P-rEGRpsVS5tmfX1p(D`|#Q5P9prL#nx=P3^sL=|jprQqfkiej9cb&rzlr?aI|^JYP9qjb|$
+()ZX;a<36YpenCK8r$gQ9i2n_%ul_nSj at akvZUu1}F-+a+i7%s4o%&)(P76Jt?(b9g9aFcaiL1ZL)E7
+WQp*x`wDaX*O)cAB|ni?OZOoT2k#J-2Cy%}P7B;ZI-tI!C0?+4J!AiWGUv`~?cwTY{{2kAxlHk#hP8l
+;alOXfmJQ5VJ4`*RoCB=(`64hgw9eRJ;NbZFLxisrj$DM{~#H0*&LZ-Uaf(n`4ho_7B<lDNW8klNLpF
+|cs8>Mj?<5AvK;1I}lu0UJN9(SChBaTi?8Y#7E_`t?vGN=58uk%j$598hGiUIaxRr6QSTk&5g2FtT}P
+gP at q>grRuLO2qI%I{yoxI=czP9N4LNkb(zRT62Imumg%1wy+I0G?2qcC_mym+Zzdi<`jaC*29+r{tCI
+W2jb8I6iF75Ds~$DHtlc4CA*?iEt=a2e5S;}!&-Ow=NEwX5Iu<Fuj&D^`^E^g`%LT-lxi8I(r!<_8k*
+7L$roy2#RAbO$JK=6K}U3&L(3h?)#le|?#_p>A{+V*>M~y$Mu3gJdjwjj(!a$vlw6s0K-O;{OSj30ZA
+NSSA(-T<O57ID(Wz-0oq^ge!KNa)36y_kpoM1jvm#RRw_c|OI7eoAIn-NjuQp7lzK-TYU#jb<pu3=fL
+-~}Oz`BNW%<IUdM|WZocJ@&eqd-4aM%Pu*tWaqI`N}~jmt4 at AdbYtih=Y!tn+K at 9CSQ)^Jp|jexnJ&_
+ftqaeWtRib*Xj;-k%8Q{>05yxK!x|DqjefYXb{nQ4G><QkOVwTTOc4ND4=hwd=h(nG at p~L1#;BqkfT8
+dKaNA at Z8-n-8qVZzs7WDr2a<-0rI!15ZiT(lJg5We=)qQJqo`1fPnCGO4=;t-Vh|NR(9?mLZvwugpDn
+Yn9mg99^OlouFVf1=8%%KlAdDhMe6 at zt_8Kx^mN1;(zADfJWW%}VRazZK*a+pSM-32=Hfk?>u!Sg2UM
+|_BeZL<TEBbpELI=n)@S%mpNRnsX&g}<<oP4ex4%}Lb$`<YSXt;EK`cE?rF$4r5*%&|XRc`+~RaXJ+A
+Pxw!Gt&a_-r+})_8X9oUPX;!V*te~5N$UjxXulrNE3)m2kzH#vbsg<EW_rT&0Q~UGf4JQ50=VwfbA=3
+2hihrvi4xVks}bzJA4=kyq|6JMm=_Swo+s?`mG&m;^LZbqS7HXG5EoZm3b(A)Wy6|aV05Hy`ThL+t at 5
+WEirE_-IV)ook+_X$^wDR`Yk7bjSha^jrr~Y`TM^y^M_KtX}8{?4IfaZIaMZ-ul2bR&zvuP!%-(a5Up
+^)g1KQxQY0;9z(3P at PTj#ySkquhV-U}X0U!aCE3}5^NxH&3vo=&AF&kx8fONhW$~pY4u>#w#M(B34%<
+}%iy!~eLObI}|8cmLL)J!e~hO_e(5+f}cWJXsmFr4o~%EXL?BVpNfpqS(wBdtQ$Bs?s5`jvs60t59mK
+Pq-dkjjk4lle(|<etN_yLF+cEe5<xo(|}<WbxHr-a^=rMQ;MF=f<7~^P#_op}%N_9q`I<zWOqU^~GxW
+Q4~X!5vVrCGH6?DM3VDHs}<YS|A8+V{N)6FF1c>N-~6xQWRLPTp{c0z{8x!a!hSFl)7eHq+!N1hV9i&
+cCb!XWKK2sr5mIU5*P at DHK3_EmpLuyLtBg}#)~OB3;9Tq+q+zI+PUY|SnBRRecaXpy<J)9Bw{ve;cyT
+{K>8x&t%;?A}4ae4Om)*N-4xQ{T#EYX%j4D7Y!vRL1^yc7dq#4_iHRC6MXFy$$hxeU at R-_$DK0s?1JZ
+mizNg}r6<Tqf#1pzw8yZRN<6GZsZ9s%G$SGU0XM_0o8S2(xm=r0hY(el0Ur4KsY1l01S*d4kJ<voCH|
+A==cA{A(tq7`X|^EOCNo+b^LEAd~%`}`Ah3y>$-PA}`_D(CY+6PByxk6J+)66-C{RjchjE7y#?4dbie
+5d@*|`-Cxh9}h;Q at 2!9EV=z+RkQG12bKj!er~knZC%GEejiV?GFb&^<hJ9@(Z!Ou~SF=E~0VL$I%ut%
+X4-;;enP at mGseY%X{Q&n{rtu!MJcnAon&-fKfZi{G_kjD`kS*ZWl(z%yTbwq?CiGpL>eC#H{##g*jW5
+xXybNF33KEB$Z9HieCjAwXmixkc6_G=yAqPa%@ZQjQt+rWd94I{F{v2ehTeaq6=xVjqaQ^Z|L`ycaUn
+24hkcfz6$E!(?hG$qdOT4lV9dk<B(PkN+N?Dsor-CHb6ff&boqxgJdI4w<>;w;r%q5Lva==EkA-rB7Y
+WvB*IsNYd+CPYn+#G6RSk2)QB=4XJf$r64PvWxUB;5n(Y6aQAY`@fnr0a?Y`|Q=8MLn#WAHa(BU%?2Y
+*ITu**Q2 at tC=)Uh26HJjPc6R|nt+U%kWptGL;1gcCGq!*F9!UQ-X3a27GQhrO;R7xpX0|tZYdVSLoJw
+h at ei;dIhj>QuDHyK0 at MefcfWwMUhLWr{agqwTn#O7AGE?CZ3<^Ucci&#1qlET7SM4=B2*F+ADDs(I|D
+R`Zvkr3Dw5`-0pHs)i}{Pz%i9ui5%BMiw7pYL-)>tEv<uZ={5J{|@53~-%cy8b3ZO?GrHtVzBLT-IU^
+gor1t=bFCVEDS(aFvJ1e-lMapu58p5(_Q)8(q}dA{9Xm>{zz3}qVokj~AQ<wy<o>ar4Lu+c<ku+3?8N
+4^7))_jSQlgHEWZ&yhg+6kv{(|s|?cIa at y8mS+{d5ju=oKOJ;sh2<Hf)pYP7o_HaAhoa*g{hS65B!rL
+s`X7J98rez*RMG|MyutnIABO<=qf}GZ9eQdZbQ5CI0-a`B<EgWOPzxgZO_ZM;hw+hdCr3z=<3#i_OO+
+vdz^W+e1dGY*p;91&05YE8K+eajjTrbKYC9atj9T4Tna$(4rHTtJY$%bM$G<WG$GjpG+=Iy<oy%h+#L
+&ju(`5i^|~ITx^<EvWP2kuR(QHp$ZnZ*8NN;NHq=Z;yAoDVn=0k#bv?Wp^p;u=^b9gUCsSN^iuDudtP
+_n-xWCTB4Nz6EMzG_e%uNqkzbwla1NrWaV)QYZLHRVOOru9!x-*T#V=i-w*ju!Lx`||3KZrPwXW at Wj3
+ne*P!3SJ>=cTnL47xabz<@JP9c(*uuE18*R=fMX#SMA}8~s8Sinx8 at U5_mGs}o&@G8e!4lslwupI}jL
+!7qDgke}tcfFJ&qc92i5`WlGr<4~29D$pg>FUR1Ci#+d8rEI+ at 1{#|Sq<leI=0jIqM}yC9I4Ay<>v}&
+%dEA$4wEB(p=pW at iy13rQ_W9YTGAqB5#y8Pzpi|03cb}478*tle<6$C_UYF70b=&KDI#;6C<EVBu_C1
+hv(F+2N?>QWaM%yNcP?Sl|8OF!#7T<z>aFJV0q=hoENspebCafVFKHCA6+zwMgeCjzq%qG;Hz3yB+kB
+ZB!>Fz!f(wi$KW1U=g6!jeOaTx`ryxDfd=f6CMWE=O?ax$LX3ew>`*jEpef|5FOIo(+qv4-+I;7cVS=
+p2^RP3Xw037;f=jYEZDLvf*nZYK1?%0CCH>W%(E19bPgcS}r{#3=_Q_rXxxfRhcj7*&yePwW5Oe~E!^
+11yf6(^(@bIojawQ$x70%r+0YePApy$q)VlJxBk<2Qd0ZB=YPi4C0vNJ{D^HFM~Mq7`jQEi*o>cgacS
+NCFL at 7DLNX!D83YE6k81EG#bSp%~5O?a1`IdD87^2--X`&Z=g8EwqZo4S+v_h>R%qc-HPYg?$Ndp7Gc
+R<a at Ds$19sSxhK&lD<#y3wj6++q&oB_{GK^LrQZDuA(8ZTQ;g{`XK<MHIgg^e7#H!!$#KYQOc9PBEF+
+15Dz7>pS{TJL`um at Rn>nY}fQ+)BId<51Gmvv%V=$alWAMsK70V^wd2-N3CF4pEcvBw)7Uh<`V16aDdH
+6*gh`SpztiRzx?k;(abraCphK-~hMp6Wmw25aFiOp%-uW#)d`9d1YC6$<YdUZUMiqOfAaL$CromjtN>
+&sjHW at u74eHFBCD^mLAD>?i8|^XRAP1br`ymvqAtTyN1nPDAt3E=k>L at Ksnk98FB<loF`=0)RUWRP*c
+9iF*WP?saVFp6*Go61PFGM|aUtl<iW?XSsW5iAp5(xFvL!_5)N*-L1+vqXoKm>7#t%L!n_%Bn?(^1ka
+R2FIu%g@^tDM*v8P$p;_0*klP$zfVL)DBsaRNK&zs+kFQk)d7UGg%{DD)xZA04Je%wNC(oOlccSCp{{
+r2GOLqC$F?Ffk5;{+=YT>k~MULjyg3_JVhrA-UO^$#_{rw+_pq*!c0^jOTkGdAObG@?P0SyM>F>ze3Y
+DRfcb*)1!bl2(5W!Jih6^#zSI9QL&isbMiWt94`-GU1V1m}xCa`yD~M at atAzSZoIjV+<~q0*QyFmEcE
+*>Y63C6r+}|ApnL%+}Bsr$20!tJ+~+J3q%mj&|4&ZL%?b-5-$God}~DgmzUs-sQS?`Lu5M4h`4lfY21
+ZezbP%yQI7^=`fP1qp}rbnv3h8VZXZgIN)MBYtbKCg`r`ZdL%{3MD5eB259G%t1z}ns}{(SVk55_y4d
+6h>L0kXBVx7wp<!r$>95<Z=lLTuj|+N+*6|^sUfy3n$4cG52SG+X-J;Ao!F~Xf12LfEGlax0pe?(F&|
+vNRK2k94QF*Yo{#zV%?(Y5#39wrJ`%_>=F*7_~rlMq5knIVe4eJ|Vzn$Lb<U({G>Xjq2I<z_IWP}Jgw
+Vj7>9^C&G9&ryp5CnzECWpI~&jKtc2bj;Z3Z1e7?$0E0Srw<mpvjI_pEik(;zE1iuOs5?l#CBha_v at 1
+!i|g0HG-Xs>@xFpH00|Jj3Ov$*M4W=E;Z?_RUcF~t8-Gr%<~NK56#iZeQ2$$;0$wNieV<>M9#n~piJD
+4J}?+J5)8MC^=N?(;t at SksS)Vp6W&1!9RHFGFHoeN9=411jmV+h9S;Px_Ya~Re60mUnkY!MET06p06)
+_z<mNlzL}bBhK-a27UueGeN2sNijupcw$Z5;rEt0Q4qCIwyPO-gH(a5^l%L>fKnorXh$`dW#F@}IGjz
+mYVP`-98Z#Pt;O at t?Jq(HwQ-1tyoOD2^Xt(|ue*9?8X^c-!(!PEjiuhRma!Q-PCNdej&lg7wGZh_SP)
+R(e5aySEw=K_ou6h!2tJ!S)dSQ`mjflbYqtGc>lkHQZ8qmEtUu{N;~5VKMC?T&erJnd0EHO9|NjP964
+84-Ed-W_v@^%0^}lO5`3eR9ManVJv$2=dfDU#o3tz>)rret at A%wYBf#xEhOPcc(H)d!4_{hPO}-h(+O
+>Xh))7tTrB=f$@+uRv*P9(jw$~Me_jdCRv~pHrZvgMJC(BhaMT>W$U5(^Hb1yM!#8YFMtumuK@%{FS~
+JSU!QUg#a#jAb-oN#7yYzIu5AaoHn&O7gtcAw3CvTn7bwF^wzDnd-}BCNq)rJ#tpA#V!=^fxd0oW~7J
+b+|M7Yq63W~DzS`l^aJ}!pWLrL*1w7PI_koo=W{v at 8;BH>}f_Rvyo at cFpqCWF4TypeX_5ScZsq^GHN+
+3o!M0ibxpSZy05g>Ccp0VwTS`W={W1*Uk*muRAyY*$8+BT at qu%kyHfEG at 5++O}g>H?@!!8mdy6w3f;F
+7ClpRq<t$cwG8ylKK0)K`!49;YQkP~qxjZ#|0;|5&o92Z4U#=I=g2)f)Xy at Nj6hLLjyPm%TadN+)jik
+vWATho8Gp%y7ppS3y1IJ#ayf#2>UQ)!{tjIgvl|ARUbNlK;uw#Bh2X!xt{1~@7Zzjr$PGX at Zg4<74}5
+pR-yWzBUmE;%!CxZOsXuAjm&NA6 at CP;EgI9rvPW+%s at U7uT7k(r{9bL7#E+IbsbiDn4rp29zE at 9mF*K
+4V*ylX#g<@gIk&P;Or=}8pVUv~_8zUG0fR$nI)XgzasG~ESsI7zmVN&~4$k>!~{mi<VUhj6ltpJ+vi_
+&W5VCWXfMGNjPwVkVYNA3(l8HZzfYi$K1sCq-sf_x%s_`y`no8JyuOIdlpIKYS_$|CCek14#<LB}u{8
+n-si4J8OT6g72<MQt(9sDfogE(fy%G!53&B?=va*;|TOE`;daiQNq-k_7M^PRn<TuzGxs3?{5#?;;X%
+p`M38Cq~f)_?a&16fqk5cUkFtE0w{PXC*!y88$iZ?xG%N#yT444 at d~5~r-=hOB_5)ehl1qxxAF|M5+8
+z=Z7KgnRjfzi_ at YM)qtWxlG!WF<3L;W|9HFhYS>TbA-At{s0tS>RGYQtpf+r8-vhd7nic4lUJ3yLGWC
+}uLialv3CX)ACc<7#z|7hrTtniJUGx>@5 at +H0WDVO3)ryXg+Rylgb4}0;XxKoZDwP{Uu?4VOpzZesox
+2rN>J^NEVGY}npTPFzE%O=}hk4}6vWD{54pPyH^l$`rQqo6mt;)GH4Od&@|@+cR*u?UV+G^W|bw=5XV
+77_KKsC%e;9BQK at Yf8R)w_Pxyds3`MWV*|N=Swqg9N=6}8 at N)gib<@q)wc)L|H!PpxPT+HclR1bi4iH
+)p4yvagz at zmfT{){X~SRP$!)tX0mD+CrW28_080d-c~`z+82*@HQ}>OT${z16xE9pGdEJ%EyqDQuw21
+Zdp={kz+|LgT*KUQDp at Ru~lj|D4Jp+NYAH5l_&cLM<!#~KN?VxP)E}MT at sk9PLtbA#Qq>kf~`0i$J!@
+aYOc4a8g%pBI-)A6E3c~SkMFTlRhXPfU&Z__1rrzB451ZFz>Yt%|9C}xzl=8L45t98&L9sKOE0a^v+l
+I`T5TNFgoR^IH_v0mp?R!>t3L}nIyk}rPtp|ld^>uzr`(AN6j!Q-+(ah7ydn^^yIWI-?;bi0-s1|{oA
+>IOry?(|1*viPF2d%O+a;w)eNA?40w0cfBM8c=Qs?^1#d*{OQgowCscRT5aGOsWOF?~(y^uEIK_q0Wf
+ at I=n(JRK+ at 1C6^@-4SwuJgF)_Pbjo2k^(VMxr~w7&su>>x5o%bBez?uDyF+~JC+TE`p79!Nc<blTdIF
+olN!N<?SK!fo?eR3R{_!;Q#ZmI4+N-nC6jf|b*KM_PitR`JRqOoh(;)lGZ*2jxtdXPFC{#4x#=~ATrc
+E3v)*~g9u3D$$HCSb%*>9|mZz68%(`2J9;MNun_eXse^e at i9;8OjO0Mp{QTVZC2<jjDkSK`!6KQCjwI
+mgT=xPOY_JpK!MsxDjdv2q8 at YsssIF>q3{GO~6_WwtWL+b}NK at -km#gZHv5-R*aO8p^@!kgdg<trr2p
+Nap$J21Dz<P7p8?T0I|HRYctJwzJ_8+JZR+-1lnYqq(pR^f3dw^l*5k=~)O1n!cBP;Var#yJWUS3~x)
+L10J!y4ehAL#%^mZh=`!JzmEO at WLXx~Bk4<r!{}<xf&xa9_?C52>Dxlr`4&OhE54O8Nqo27f^T?|sIA
+_ESbrfBx{XFW1g#p4?j~rns!6tX>a$J+ha0+T0K8U at q%9u2%$kG=rg|?cQ;%3fr=(tmEfsa at LjXQKJ5
+2~xZPz~V16KL=2H3q7QqiZ|G%wp2WG%>iO14wfEe2S^YDqswdawr>rr`|yoD42L7&H!d12pDtX0!Hyq
+8)q1Fs?HP>k*%7^;!2u78lF$=gBW at HEvENuUaY__8$>)HX-C){Rl~sv}yuy@)A7Vk=*MPM>R(OHK!rw
+#d+k957<{@A0p;RK+Lr2GDj#2veV<Qpfv|@^OI9?vy<Z{9 at b+^CUV~Mb3(~MhI4k5yEy$C3IKv~!5?s
+_^W~F~)J?OiE}PM*c!2$mTjuLb_Jydr%(r8}Ygw{x!}Q{-^Z;V9BUL|StBwrOuY{$NTbqy<00FdW7s`
+NJ*}V5#pm*wNn4X(VyY^+055^%-0Iz3 at kD}nOk3B73=W>v85OUOp1w=Fmy1!TKe$ZX+X at TWE+9!$Lk6
+E++Bf~l4apbW!pw~H{COMH-K#%B`7MG5rz;kaXo$c1&1pF8eS at DaGqd%rTQtSDIcudD9sj9O+;Sz|tu
+ChNS?ABQW at 8}?3 at qr;|60)}ga#gQtAaDE&G*PlElCM3KYBrAEcO|=!H~s;h+~t=XM&9 at Yp}_tC>%kz3
+K(zeI!)RCA3$no8%Bd{92R3A&z^;B~QGU#trMd*NM)B9&E!~Y{&)0^2lH`y2%^+rE-7N^qscN^kz;00
+nds&O0eE>PbF-oCRcWR%1oSJRV$Jhq!7s!9`Zi=5BN%_$5n*L()$0 at NaC6N^jI1{G$Ba*^?_HjxI8^S
+B;RwkW2&~Kz)cJrfi5y-zsK=`GooSS$f64Xpa^={sUAp`nERC&&l-S5 at pQ84v~TJDcw#v6HP*79#qkL
+Xs`%kHBKb2SUrC*ks4@(nsg;4#Os*yZ46NYFC1Qas6M(=M38x!iAX3Z?5)YB-H=h<4ukepUQIB3OoP>
+?fpxlMGoEh>m|0&z-9hes$t8Ayh=tnU(=Ex<8VB3`L84IXbz3^w@}%_IPBn3p7uCgrDUe!w?RPg_>-~
+FHmfuR8HO0{ItQQ3r;eItQd_OrTw=2aJzCjsmwi-@~JA at shlmd4O%m(R&`bR##gW$Rj#Cqo+B9p9p3&
+(;B<CT(9vLV*iO%~ICuH-EZb~s)Xpt~{dNtgLE&9X_n#q@<V-qGfz<8E_mIOSwC-i&{7hrtfO4qh`qf
+1aA!L&*gY~OnfH0^D(z2jHJ%3<q(f(0NY#MqFou#@j3=QTvuV14rhn#Tt(rxI~Y(+|QiWgeJ3A#i6!1
+&SV%dX-+@;2<?J_EOHOnMu(S$Kfx4jzvP67pQoDQo?#BghT|FPh_J8iol_a00rfp!?QL_?xatAVzA7c
+Nm5bPq}^1VkqH7+Pod9t&!-&yj|YXSx+lDz#^8b&!VB>II6v?Gm!*rHM%F~dqA|by<iw(_-_JtANtiX
+^7HV3$b**rLewtC1*#gM;K$DchOstD-7^LQ^@8&nD}&bhb|kVoMleE=RZs+$pmb^I0<3)w)*eBzeN7n
+9N0uH8>U%Oqq<K<lt#Xm}@6Ob)r85j$Vy$s&CLTO*$2f<%xK~?!%YZI^;{~{R at I#i^_CRFDYrcArP?|
+|6n6*+`gBp$BXhhh}4R?zTf6w3toqHx$K6sX2e0LpCz{l;iU!g5Z)U6WRfHDJ`&xf`_)|1)KLRRcZI`
+lA`Z9u*F1{jC|it<nG{ClkV{h67*$^2esek&RD9Ug~0Lx*Z&j`)j(WKO#;4S9<s)|Zm$cCuLi0cm|ce
+zvV9rik^U>ET92Q4^J7{fG2+i!xkI+#%NI(OZ>Rk5{zCi||4!2102IUW|fDVWl0N*v=EzLdUDW%vpHW
+Gp&F=xXFu}wk6`-c&Y~zn;t(%HzSOWZ{}F=*?G|12aqQ9tS^S?!M+h!AIkBwb0oLHTFGJ!`XKfMB^-8
+~3wp*wZ^;g1(L4Gtyt(-2!YM8F*Hq5;i7T#8(49Kyq#9(+T4XM*HTu*+do#IcDJ{D;0dF$CHTa<Ltj2
+gLj1kfnVVYD68&Tct!3>Fg8#ctqIcb#b%|P(XBw*hqK5n(*!`+W;R}(+x;=Y==kNZfgiTgQaRuc=9Dm
+AfCtj|R2Wg^7wA!=fg7;c7!R-TVzsxaEBy=53~uEx at U@OH^X8|7`idI10e0f6 at t0RZ%Dqs?17SjhyX8
+A^Rqv=Mf^9Df+&3mhcqtv)1 at e>!e^iNd8o8+&MG`VB2!S4FWDz2Tb%uj>YVnnWH|nCJ23=%5F%s}Yo1
+;(8NcfC}hk)xEwz0deX|JuPx&5`uBOa0dY-(P<2u?h33#-)e7I3uPjH<Sxt#a`e$Jp#{QLhQg;u$qb5
+XuTAK~VX5HDL1`JmDtJ!!v1=3bo(H?~A-lh)6Q^UxR<o(q8mo^rhK+|Z=|TxTM^eA+k=#cmaoSO!pL6
+hjgy<hIPwwd))jn<mz$U=98e7BdOKrH($Dlc{(GOd)=Wu{EMkf`kiLyu1tSzXZY}DT;#t;o-3&3!_Ma
+>}lW5kIstc&%-Ep(cfRqHMm>$5GSw-}JwVl9pz#j`GlRD101&}76C8eW+>G;FHQK(+3X^Xgh>Va=+o+
+Oxaywh!NHxW6)G*2#KwJ66SVu=Qk?m$4B=Y5<=2?lHNl8w#&9oUcEMM(SX#mu)3?Zx%pvR|`6O!=qPb
+ at 1d_ZlvrtWNbGpsel(LQ=ae*-LEE8W&}{1lJoNf8wKJoZ{CQ~LBf|#e|B3Sb1M_R$7l-V$78tw(yE<n
+atU3S-5QQRg%BH(!ieZcpruDlFSIfRI6H)GBSf=jv7R7-tMYM1LkbpiIQqvSFQlM)f9|XJ<UJlJJ at D|
+O1MvL}Ck=)Q(6yFSUl-T>P7iftdG~4^0HKU#>Uaci*;=43K7;9JZ;WPcjs>Rwn7}B}eB at -~FD|d&DN2
++A at tyf$zNRB?$NX~M>7p0ZB$BnJB+LESSH^<x!p-b6}7sK0?Lh2jsisk^KRF8Upy@%K+!0~0hP+~n^n
+5YMX=giUaftpv2X(}&`U<`LJIu{45jOuTh&o&!}%mEF}5VDAPan+#JR2jJx%*acu4Bgu~mjeFz(4U~d
+vI1mb;VHeK0hP`mMi^YK{+Spd`VT}=a6kvMsVfnvzjqZ_$)OtsjDfdI0DkzDQuv&!TmYZ*(Ij&0!O)+
+G0P9anwWaez*}xj{Jy&l4%HYr+h0g*C`H+ at zvNZ7rA*WQk$TA@`$gei0QChqb3QR2F8JDLrz8C4JXW|
+^O{!07?;(95514%s}zk!C1!S6+|E%6)JnTTp0vR1 at eNqlP)u_G-u6_0)aY(*F+v4C9kq-C2l+ob|UPR
+#W#8!H=4Br_4eA8z3p{Y7_Pl0x?Quken)+G7`nKwuzxiJKew!*aU(&%h=3##MNU=B`B+9bGJUP}==e;
+0TV&8^1Hz%qWSINtDij<VO6Mp>9s^>C{CG!;I$EQY&6)1zzJ9 at QMYB1fSzzqtzZOQpUpP#mW%)EEdC=
+yaju_?>KKN{yl%N#4!*Fp`IE4oF}ElG4Ke7v<N?D;zuQZ1bpm3ayFc;zXk=h>049s)n{7_!&4f1I{wF
+Qq+=)AxvO^Y*q4pk8<qUHE#%OKZ%rLTf~NIDAYc?gPp)5+AHlOWEN3^Imn`9$0}@+6^)XOS--O!+l&P
+q*5j_#idl}4IaBAn+?Z=a$(kI%AXL4I{Qj9h=U@!aJ)PVD~XJI00fuJqgl2U+wftJqpMGM{KCD7Tzc{
+1A_U|;)V$3gAA!UIX_7h~jkyHM->3Y6Y_QhI%$mX=m>h4!m%Z@#I|!ZwDCT at +TX57W*{^`f26JLU at Q^
+OdB~j?xC3!-;QB6?|ax0F5?vCBW^sHJ{*{&<m}2Z|2Zeegx{lZ$1-*Rj9J5h9#8csb7hwkD+XLZ)kM4
+XSPKdt~qZugPhUt+m3bJ&B{5@&as=!(1SG(CvA++Jd9Ucz_RRu{NkI?7O)$S2ta(t0|AUzK*tD{y8+J
+zCbf7+*aZ+6a{&i#<KypF22=MA<R{n0#2WP|uE?Ox90dC|rB<YlugG2Q(SP0pD>4h+N7%PA86w926Oz
+>Zup&mKpQV2XD^f};awYWrJdAWXrgnQvVMTHvsg>?R&<ANhOSKOw3}lSGnF8iVY0*u50C%MdXy0rcaM
+(k7EW)3k`=a9#=w8ZLc(9`$>vw4P{hJio9=rvz5s!31g~k(G(^r=6K(W-7Qm}84x+p(AG at f}1$}vnva
+h9KpUxUiW;#X$5;CaRp%Fv323&JMy%qmR!`{I2j<c)mmPe}nx-i>*(ek{XY?A4Bt+S8tNDSw;@-STH?
+{Wp}ADGoXMD4kWSF$emf9!$Qw+ZLunzSYm#>0IxJ=q$@5dk~xP;k7?#)yfM*{B|koIY#aUe!Lrke0tB
+LeqN&JvdF*iOMNKaE{4%RXmv65uF at dXCPyF=NK43dN3h$)`|HYnE(ncm4T{qtu~j9pS}>is>&lixW-=
+KOB>r<segczoc`_bv>p!h4`_+In^iS2R>&l`7((ndY{fBjBzZj5)=N$Ugb!ERCkcP3d`h|66Z>II9p*
+>R{R#*0KNMo(5aS)=nDMESdSNKViwq$ffXeOZH0-%^b9a7{7!6p8FAK}UAOcbY!c~i@`;q5pfoA!J;X
+<IjL#N#Z~-A5tF{|%WF%kgp%6xMFT8z`bPt(Ilh`o_ at y=oAaxVJ26#X}|k`U;7iW#X7h{GYn$14O**p
+ljr0{tzZPclt&j>luP8Quae>C+H9;E$;3Jf$;|Zu$|aZFN(5snIxfpqEwZ%}8Vap|Mqk^&6~gJSqg87
+Bvm0p1&lg&42R;=j#3Oaz&`D8wCkNm)wbC_7d4picnvFMS!8>8%0^Q;CAMUpaK-;r}?699DB=s)D;?H
+5{O05<i?zLUX3`Ek<)4AkOt$S=}FfgG*p0~z|Pd0+!%QO(_4IkaLmATB?06JK!_*Mz#Y|)%FabUtH6@
+Xk%eYY|yd?@sar?#&^$$-zS(4VnPR?8Ga&{6d$=>{-~^<M}GYtXl9-B}?URMihtI;;n|7ufxgiFgO4T
+{1Gvm=zt18L?XTOr;x#{Db-pq0!-P1ti+ZmfF&>A&S1uLC}S}VIHh&TU;M(v}6AnEtxZ6h&beMdq_w0
+P^N{uL-vUU%9M#&%47h at mEyZ?TInt1hX%7~R0b`>!yK9$Ry3!n=a3p>G-DdUz-W&D$RL*q>_;$*$A>~
+1c}n<ImkUZ}{I`p5h)?j48IJlNe#}w-rK`v-zvDx}j9Ed__EC$i=_3^1orw_bjP{R_?3AZ%A(H|^RtQ
+;vq0>zmBxv&hkEB%o4hBP1;qF7z1pXT%yALm%DOUy1;iuPFc!L}rdRTUEtC7)SxnmpOK`{N&Ks3Fpzg
+>BNtbg}$em$-ShB9R{5`&E;jo!%UE8$tU_InX1+y(6R|KLmKF`QR~kdW`?-HP>p=N!D+TLwC|8GJr2)
+SY at dh&Oqb%0->{T`X at q3aT%j2~V|@w0rTAPfRZ`oF6Jk6f~I04Y<LL4xAYtFe?(ZK-IAtUCUU~KHxIh
+-zl{1bI=if;VWp|`%XsB^M|oX)}rUo+r3J1lMi&5fCZmRaa%K+2gozg(YHTI>s$HcnPT)#lqFL2uH^N
+K|A%^jF~<0t7xLI*;HNC_hifoA*HH2d=YB|6^E{A1(J}FP?^DdzDdCS%+vo`5SRFDk^$v&7D$$kut#z
+np;ZsYU0$-C`>U!`CDg at S01r*5e-X=l&%?IR=s$xo)VJ1Eb9j>A?{Y8`=Swq|y)JvF_ZSFd3L!~6f at J
+owb3BnGqaV@&xogtReaBlhuu%^7~)hKiu&aY}xUi)%Xwyef8S*>ns>gx0omgioLMLG=U1}eJ|Qiqjn*
+SaWPdkdziQ|(5?s%L7-OL(G$%l%I(JMi*&GY0i1M#{U_9+e$hv<=@)S2dC_F0gQ?+5US(nZFbrmu=e6
+m&k2T=5HDNt&+bb{y}eZ`P%{hwt&BV%-<IAw=ML>Y6+m2 at D5KPK_qIM`WT5lct0kjuf^p6vG?$Mv`UP
+- at nPf^R6V=P$O;XIIuGJqLkv@)Vum&!DlUggZ*Nbo;v2kraurb{-Ksr<;g;_5-!=(?G7?(3EQaq1Wsr
+J}5X!<5qxx5M!FC?0>-Yy>-K3&p!ga(t(9t~G$jyH?%7(N&SN;UA(|KqmclMEKdAVo&A2z4f_%fDv^G
+b7#_bnh+b`DWREf<4poCg-9)|j8{WNI6ak<2pi?$@NWX={E%FfS07*IxdY-4{PogtKZ at a^)V7d2BDgf
+j6Pj9XN(_#RBux%W(d60eKktOLiH~MFXDeu?UndO(x7+fV>+35GdItujF(ZQpR=4D@)Ao0`A=b(F-(h
+^bepnf6sgHG~o^2Rr2&l9UsI9TR_p+Dt^(GU9n>1W|cfqwzict)|JuSR=KPB-Bvf`0|))Kc~hWDng{|
+(fNc+0W0JVSGt?)psLZ%78W8e*z-7*1H{=G~+iS8xNVYZw+#NNdWW+$OF7&xK)_jgVu-E{nOr$*l77I
+l4nxaTN+qHXmu*TS6QOwV82W}u{+Ng-k<BDlxdOFlS7Bf<#Fcn{lXA}HRv>7KlN7WrfR4*~4H)|z!SY
+|t0eHz|`?2X=Si7e^#G%Tr<BTKq`^_vxYWJy9=;m|X^k-HM!W%$zto!T4I`6>PdnfPlq&{nuB<mhP;J
+ek0X%Y2=R)t7yoZQ(JUxIY at DaqSX5)GD_c?TQ3{rP_qGc!aIy7+Ut){$tZ$zsql0`@IVZrd+oUhdR*w
+<Yis at 2v2v5U9m%#0(5yu!b570ZuPM)7M$&kgc_xHNY{-!l#B6W9Da<z4^i#)gzA0nF7}c5WRpHvV%zj
+wiG84Ff^M#-v5#2GDgmA4W~>_*ljyER<yy(zsFanXEls(w9DmD4Ij0=`*OZIO at vL4cEEh81YmhspjE=
+i7N{)T050T!sal7=}=-Y*(`)n0XCKB8vg}ant%WRX at 3qp6tSl`?iYok(~=xu{6n3+czCa#W;l*H9vIn
+)j5Fce6~S&6In<u1&Sa?EldK0>)sdNw>eluUR&8#1)zGG673=96=^j(3tUe*PU)UvZVS- at zjj;!l&yv
+(MvYzI8GSR<sg(V!lmyzFdq>D}iWGlh}t|E)lryMMCG>Lk`nnhU|)#mbHwFxnrTpL<&6hT}m0Wk!%zu
+(LLt04dR3h=hpfCjfSq0tMHP1y at Q;P2l#M<&fbD{oj${P&OGv#84h#Mw!aM%DUJUw-84{qKF`!QsF}b
+1r)EC72b*D?+LpKJ7f1FO&X4awm$uN~wTItEP$8Mue=oV$hccwvtsXrK!w%Eo(Jr$YdsvRvfWF7n(^a
+XSOjjW2&zGIR?yy^L!(uz=KRKrzOlhsOtkoqq_&UTes<Xa&LyY_lO|JFdD<PKSW9!lN>IDo`@U<b7Mr
+cRY7)D(wmR5o=5bIZl5l07hmLo at JywAr_9a-|e_Q{77k21VkUGo0OkVCGT(FWz&^_=>zgVs^p)vi0pJ
+%s<otI`n0!Vp&Dj$VbKVc~B=dCb>2t|^qBb68Ky>4HUX0(75TjzW!cK{@_(lQOm(f4B*^g9pCOEyte-
+B9leB5E|`m at Kx%=SK+-^CdOoY8}6;t(~;cpoh;VBOos-ofRjraBTL%E at SiY&wGyU{i<KjW@#D#Iq9zO
+6F){qG#q=Mm!3X!34>%<CSo#AO!>3IQ;}MJaZm`nJ_T#Ck)51?puf<yyd~HS_Xo`c-;}#(eusF-bRo_
+iX;8<MA7=b5}Aa3J#Pic>QKyVZ5 at qQ`56lE0R$Q^Y{+P+ at 1RtV*Jqn<vTHr-w;uJE;$_W@%Hjf6Fr1|
+ZkYTAiYM>}dRboE45IG=};Hs-(Sk!0f@<hfa3)R+3pGIkaE$T)iA`OIQRm7k_pZn%H6X;$wX at T0W`ra
+WpBh{#%|%wF}3Y*4V4#cnbpn14k{rW2GMaRqLRx9Gz}!^A)YriiVk9!;ho#V%_6&A6&XqPsepiy1(Uk
+m)%uqZiCvrOHaXbuN^++sv##G+Oymi1_cI}E{$o9#yy#K at 8D8T>5`660TKC;r{6dMyS>09Kdp#NV)!Z
+K6ZKs%LK1>;M`zzn^ejn>Qe+5-QqLHqMR at fVPFG?d8BXt96CPI>&Xv_fWnKqqB2YET&zi}s2?IcTCJt
+ay?VNmjA1vhM5+D%$unNv>1I?^AIkPQtBt4t8#xL&01DgIT1r~!An6&~87fCtXL-G;oLyPeaX(M?R^4
+BZ+S>wYikTsG)S``P}^r`Gn7rPb-$`Gk1wv=w2MRa=-bJpVR)P?BeQQ&18=(hkqB1ucziDyZjkTC%&7
+XvH9OOfO%(Y)wbjymUT<Z(0 at L&MUWh;TAd%bLVJe{1mkS~TMK7)Htx>LFcKJy<HS7~SFRV;unyF97Bi
+Q%r_&z?yCMgD`2F9K&=P{T4J^KizYU!PRUX85uWlIXyH|+xAxK2;w$)MA>g?{3X+R^BG+<;Ah*kdp4n
+$^GsKPudHfl=o-1GM_h6C)z#`zsU{mfZ+S4iT5T>6S7cVJ2}(*(Qe%Ovwx-F(X2nwta-6%`-Kn(b6X<
+|&I;`NXsko~}dJ$K2Y8&x78MP%XSt}cB*|63oaYdWBqPZyMEd|vX??ZznFpu8;g9glH!IDN4E!mDT+b
+>&zI6R1F*FQDq|7QRE-!$jX?Y=nwK+(?0;)>iM)oL%zs+VRJD*zewtZMZLr5&NPrUJj(l;$_uaLnyE<
+_*d^aYd83qP?h%#i&WZUu{O8c{v2edgO!T%71)9Ijh>87Rp0s1(~-K+6Ot}itM6TQXlbQbjQvBYloeb
+kh+ER0NVx_%RKgARYiJFXTZ8mu4)U6+vcxozK#ubP^6P=m#tIn-I7&Qa>chKtGcI4emY=n3zTd?^D~7
+r|KWGIj{r_VCY8bt#08Jw<yr%-ed2d&F$y(p=rGm1bYq(?XkT5IEM?lzw~-BfS{0(JZTb2EZA9`S_!`
+Mu#=jW<dVIZkXBEqP2vdylBdgGeaMJIZq^_3SLD%oiF6n05)B|az|Hpwe<xczv;zy-=z^dG+9!OU%Q4
+eG&!;B5e7222oO09JbJnEi6bi9Rr3nT9cX#a5}dyv$(j*@!dOJ5A{`}q5Ae4nqScO}g at +#FwXg4sV%W
+h;6}5Xyd(t_(rDKmEkSo^;vTgeL&n39k!nSS$_np6DI+AiKz=V@&j1-rF7P at P<o)4)<pR9lnzshW!}L
+omtWtKSmbJL!oRb8nkK)0Btvc25bie`#mVF%hjWHWw3fQN6A%>rYo5N*b#;LMFI9MTE_zv<gGrB&jOS
+T4e_$K(30NzGyFs-=r%9zB+M*hdBH_M%C{lqVKyH;Tie{*mRu-TZJ-F|pV8FSIc;{qXu{jzSl-!CNPk
+Z|bch at uU1+|Ak)<_*>W`Lk_ihk{eoglLt&;J9Zetta%e@<vbQp3L3|S248~9r~G+y^^F`PxG(KO2V at j
+gy2=aO&3$(J?)It80i2Q|O>-XRNp^tybl_Z_U<MnBy0%51{WEv at vmwv|kpAzO5EzMg at uk|*EAqMUda3
+)#O9YrFo%gP$L3rF(Q|^B+=TdH2)%4YSD@<ae(VAN?KSNWx!qED*il4r^%_AH^72{K0 at YUG>oAcduVK
+gYImT-A%GMsYAAQ$e`~I#xk*Y&=iE2HxdsH<>*ZXvirjtKj!`I9j?w!lw*cfj-H($aem|NG_`{**vS^
+dxrW{$f2!SZ{*!06Qs$@FqBiPZ+;Vi{?-ZPPZ#vQe9hU&(i+VbZw&Yzm18j!#UI6UPrs?JwPM_H;S`3
+Y?A^k){+Uesb<(?h#-_h?%5v!LkbI3+x{dVQ{7c)cO`d1o#^zRY>8i7Yv*2&Bf#LEpE?E&isxo5k-WS
+f87dkS#9iUicVp}t$0BF7Fm;JFN*FEyXfh3Db?F}uDyv`UV8Ek-kb_R;5Y`aDLTN9pqjefH940&r`_f
+Rk`wLAH^2*9H2JdeQ4q3y_Pew)X%nT-oU6M#2Cw`~lg;@)m{=N1V6Q+LL(sEApCgUKcVIvdeBW<<6g4
+%#@y4R3e{BfOurPuMr!u-)822#Pjzk$^4rrUz=s-ui*L5rt+_*{I+ENZ)PC|cS6P$ja-l)3&nrLiyO{
+oljZK8Md)LPLOTACg0Yqxh;7|#>B7*SwcJK^X8?BgEUMzAx_O_hrTH4p3A4;!9qR_X#Tz({5Ao|llCL
+DP(V^E!DM>w2^oH-D70GxXk4Cz^E{`Py+WR4=4yc;<6Y6cNGQn_uI#V#OHtb0KSS8D=Gz$zdobQ+g?B
+tBauVTAkEdt>=Gsod&n}g&$Peu4qJ04h+Y|`$3k~nxp%ARtoNn^+b7Eg4QK`1<AA%`Db?Trl9=D*S}f
++k)j>kJVV@=(korf+Nr9mYuKjA~zGu)f(})CMw!P(3M<Zb2U&6cKD#D2|03SV$Z8O48N+#gaz-l~mj`
+hTV3cTm2xJe{2sGK!HnfWW#Y}XJMwTIx<4naExcelh*!n{}5*k7$Qhb0oLSKdyUZ9!J?fosI=<Ik at O)
+b?cks;MNuWL7Y2&9fuxi^vRaB*{diJ>Vag~D*)VE(FM0Vx-Y675!}sCuDPfa2)sdMu^hr at qg}xj|G5K
+Y4O7W0EhmtXIg+r$KZx4MZ7sc>SGo!6PM*Pe$PrTGWq57BlC-lES_U)IFkZl6MwVJ=7xu`(xO?xCy?X
+`x6F`MTV$Uc|ZO5r<_cR9Wd(bShx5{BcYWH3o#^C at wwJI&D5Y&`NB1_-6!gS}^JKl>Ft&y>|8dmfw&S
+b6Ik$;&s%YqgV3iUN2+WBisR%?RCJX4?n~3qM|d;$LLwERxludmeZPQ<g#s+3wHudtKUQGJgX at O#cz-
+Y$14$SoIIIe<w5aO3Ii?8F&D-=G5O~ioWdX_!5N1;!!aBouJdnMZgAa_TQTnF<dYbEv7ySm^pW`%PUv
+y at Zk@6;UyJ3lruC&y92s7w^Y08A1Oe#{+-8!<4vFeb~M1gkfXNjcY$fej at cx2{}{aN2G7zeg7b_ at X_+
+FHqJ%Tslh*C&==0R}rO_F&C6pzx7K;1)t<>!m?FC9+$#%ApZZWuh2;ECq=;Q$)8|VlAY=3)4z~2_x1I
+05jlJQ at 7kkhb_XgO#sGeHt=<mVd?zk at R0P#g*9tfKg2v*En?N4&8m81=YI$@0{9i}edIlFm5+vH$|0-
++qFD1HLfi1k=#;*DZ$YVZE2-lr+}%W`hQb!3EI4NE*t}J(9Y3c!i)8NXxv#0}TP!9XwL3!RwkWsdFHU
+ezrjOi|@8;x4G!tVS=Bv$VJV5>v|b)I{f)77H<6a at Tz$I_ug@)Y2poX!)?~jHZ2nDJu0a+Cks4b;Rg}
+P-!lcGI1`U(XLIj9ItMA)j at l~S3~n@=2bvphHpBJA`s*$HT&IFNBEaOz-^P^OHazB~UoV}FK=iS7hI7
+)*9EfAlzI0S7I&MV|y0SU0O7U?Uy4Wvv1qA#Zr3$VEq}q(H5rh^PR~})<2 at UhP8P0t-@wQt8YNyg7KK
+=$~cwJtjRsSjC3}H at M=p1o{71U_ZYO|~H7hNUs$#oQ`23QwBSsA_t6u*joC`h~QYW$TUC?2{S)LAqzo
+ohx9vQ5=k)uXvnMW9RUn5M#-rK0tcyJg{d at dL*VV;RV6&JlQS+6t5TTx#%&0YJ;orB-id1sR-Yx&rZD
+!mLR%(5)<fFwIQWIVSH~Ezq4%g!q8TeQ6ky7Gz%%#-Td|;oxX12+23*dC>({j=oudLEY^VTW1dEd}&#
+_%Wtfkm>tS#7$%`JMhga;8?lBAe5~s=U?0_Nk<XopF4N%xirH at Q7B%9<0Tm$c+(_r1xiNBtM6HAt1eZ
+saqfcRZ&>Ls)WkCm3D_&j38<LB<<SP8N4R?$9crIFZ*}ByPO&Xl|=(SKj{w=@**FX$+CMPAM85RqkX<
+C;9KS-yaBE<y`iPe!|651cg4iTfj>PQB?*7f$`44cn9!=J4B?=!rYAO6$_`_4SW3oWP45O0@`54M=|!
+rz&f=q_yfRb>3hrR0n*J#j|4fNhqfX#xML&DXjkFG9aHEdzHn{d93r8}8=?xQ}N*4=hHZx6c$cm2BUZ
+ at Pedmj+k%mLpLH65;!GPaqw<7Z)$s2ZIPo-=3!|cYXtyRtmFWq`*=89Sgze$)M7Yi+(-l~#|nyv*WI^
+tr4Cxkf*&GA<Ev9*$M}SS4oL1k at lh)(i3sDcA%?MQptCd8qqfjgt at pW<ui>D-()|`Id(kR!E;XmO<Eq
+F&g9~T~K9cne=X*coEAy{orf2&u{jb0m4nkw`MffAa<|;G%85EWtBhKJaa-`ZN!bq|HawwuLrJm_0c%
+FQY93SK5kX{7%fIhWRWP>P2p1+Lyh&PO)Lpo%eC;SrO8GLO61AJ{K at b<Ob=T75m+xpfizP9hbb!K1NO
+&6WwYwIUp+aU?l*Y^3pq(HjnF9UpSue#Xuwf!4U)t2-Z%>K)N^0ht5UzKL%(5_BZkN<&YBQ~Iqp}YM1
+H(^Fg(AkLfn7*oM{WCIsRr!oC9QH_2%2yR<R0K&2i%jLE>4u~uuA?I9hzrQ$)IR$&1;DQUbIO;M=6KU
+ZG{+&@pHmsyC4c at 8KCF}SJ$}}y<jU$#DY(%P^zp`Z_C<LzOKSi%I8A&jrrVKCFMX4aAVTR`Rz1x~{eb
+L$k5~NXFNOahUa|K-$16VZ7NG2=XHSY(T=Q&7{F0wNbG+g%idWo{j8~j-- at tgqFPbS{arv(>Ua{qbc*
+TqE`>*keS@#WyS8Vwo;}z5UhyBE#&J?fM5_j=<MG99yt)bPsZ0rf~iar=ZGG1}-3Gs at _&<2cGTytu?;
+#-f~D-r|a6=QNVx6xnKC|ldE72m4QS^&9HOiRZ_0EsPO7weI4NvzF>bf?M;Onlr7T%2Hje`}_HYJUIT
+{H`|x7+wG01Tbd$(GB(gUI1g^QyeV{@Tm240gPjSqz?>WZ2gY`jGsLzoH2m0^@IS%X(t9Swq1JK0LCf
+*e+yvj{FU(kb^zlw2ukhBVW|Md-~B%eU?lXx0LIpn0~n|90LCc;0vM-I0OOSZa{?H5KmVTs7$GI^|6=
+b=0HUnA#_>BWGAufSf`X!s3X0-_f{CKZ$e=SgDDGAkpbSE>Ov8*~xqv`{BZh6Sm6ny2t#7May^8yWic
+4i?MP~I7mQ;#p>iwT{?|p^=LGAtC<@^4>1|QG4+qvi5_1rz~aXbgGx9I`KIs^G19$;+qI4Y&<8J(66F
+n+xf-AkO^Z#cjh|C8ff-GBN3<FIWvIl!2`?PdoUuWtR*2N+Ak{=@;sx~)wPFxKlztv5NqxMS;W9AGqT
+ZTSFWLP3)QjQl7bs at RSbj2qJ^g^rG$U>u68={Q3NU62Q~It{lv(D=}jTOVi~#SSzMbUM&j&JQ$}=8wp
+<wS}&eooB3>&o)>bQrBd2L{nn|WSNV6sL?O~Aw1KF0~LOzaV$U6i1tGq_7_z(1I3ZX-r`7OH*ut~qd3
+yoP8?}$BaSrUevTH7H2%`Q<s*$l at Fd>t9clEacjQV<fzy#j)`H4M8kevWi`TIb=xQu29BI7I`AFj=rz
+4H5;gpXwM&05_W56wsG}d1eM;d>Yk2Ic at k2HSiIMR4jKGL}FW=9&iG`ypK0gp5mJnc}y+C43fG(KGKy
+iY?MXT;=;f|jGYyVx`0E5$u6>(=<3dhHBI;wVhwk=VAO)}9&1y0Iwq-T}soI^F<7 at sEd~wfh~18f)=M
+uNDq9;`lA<#(mtk8fR5L#RoR)o^p&#9_Qn%dC{YiAg<i(CgZHk*IOQE;r8Ry?oGy7?H%K+FWIu@$=Xi
+RC`UBXWFE7gk3y<2tzZ}uB#jUpwQuzL0$Z18ajeD1B-GvdG=~3zUrUp-7W<o6H8vq_3&#g2#q~3_9l+
+p*_tby|n;~S^uEw%k(%CYe<IG**<?FV#(uyZ#9%{!xk_?P)Yg`XW(wkk?;h(&oG}}XnIilLCQz{FqV`
+|$=6CJ^&(@%&k(4jkTxJQPsEZ!BQx7Tb{unKrkhfl*xkG;V(eSO&?wYF at 08?9>NPF?A}KE~2}-O_%4Q
+(rb}pdIH{t}S!x&hAaa`@4UKW*U{>Ex2KGncMIZc4;C#01hpl8I$h^=KE@<>C4vV at rUa2`9pQRishl0
+neC+f)oyUZ`Nl-*pBzib$3(&B6-M%b8qU|0C};&l8okqUahWc7I&^zxkZ)n|^xD3v4Koxv)rJaP^p5!
+*wPDb0SHzbY-OPCH;QJcs`PVU{_qr_eD5|g>w~zH<vo~zQ2A?vrk9E`85Av62i*deLoNVHq%(Ox5-Mk
+nA-t5zT*vmp?ab|pJNYD3|0&hC|&WQauzb_3O(1Q13oO)^+Ld)Li7J)AJXQ~1;kIbh&>@#E88Z(=ToY
+2)6wntm<ssOdgQ at u>*^<8Z{FuGXP`JOnbt^BT}028a$V^0Bp)|PI^<s?w8Z2M|Q<2z#$x<Wd<pe>8h6
+gC9TR|1)`F`8N*Et=W^m9jC_&1gW|4GDeRg0nAX at s{4}dHe~OeEybRfWe-tG1wmtHQ2usb1$sKNzWW+
+=aJ+agWInF<*9?da1&1a6RW4*z6$q>)n at V|Cf#3VdjVeHCmJw?qPu>x96XM}!BUqx>J1uInfvMz(s;D
+NU0S&S<8a at w90NVd!rI-}FXviBcpc^2`FRZgc#*PmiORC^8fo3rj^%pC8EsbAWAGdezEOBgdKc8n!jK
+2?<#s#{9J1Ga_DlR24fQ_}LrDHYC_L6F&ikoq;|l+{W^2FKJ<8$pCGc5$qVSKaHa~1bHGAEIgquCat@
+dM1#0Q<i#Xy^_x5e-`59E0a<P1c+Sm0PBhg$ZVWT5PbO9Q^UgeRU9FwCgw$h4LL at 7Zx>MsKe**mr9`!
+3c*(@e!=nwbI~v4zK7cyzFkNDWK9d94opi at V%xQhF>DMz3d3}|DC at mU-Sc;EyX=5V7W(FvUP*92|@UX
+B(^NlC`hu>#crkd`QS=}M)e5W4+-_Fchs!l-qrz8GZofQ)rKh52E8Ks at _hfWBS3RlS70dL%gx|=!Vp$
+zyNIinQ31B&`m(XzHeUw<`AVh1br*B9PjD-!S%<se`xMrIl2=&M)~cfWt!{V++a@<RY=k$pN8q!`O^M
+raHu-|7bgYlAG)-CST6&*SU$$5cE!}2RO`(}%`(uZ9#q&0*;!W52irJ^l1xtMe3;onANZ784%WwtljN
+3nOYyHGBT|YI>$V3HL2S?qdu=ZDN at KtTlDx$0A2SNoO(p9_6RqJ{}t5l$Ef@@`T)x2{!GK~tf9WfMEC
+=*;y8^X at nK8AEFIKPe!{?nA!UWMn~tepzax3zlHBeu>TbJ0HLqJ7Lo`xr$thJ6Of4a};?mo4mfVM`m9
+b8adzQ*8)40Rvzt8kQ^kV6PEM4%FiBtXwV4XF9{K7+D{!blMMThITtIz*w5B;g>JlFN0b`rHTV=AD5)
+YYqjjpW37W8cI#C<SXdn$>&Bl1+pNJgKixB|YsM47P+n%U-sfpvPxomzF)s@`L;gg=XiICal$7jvqQs
+uEWu8}TVp|zPUM|A(Xr4A-VP%M}#QJZ;p7?owSk1Nm5q9yos`v_kdiNJf at fkAqSoT(SZtAeK`FT7F73
+)^&{`cqcU2J8k`x^}LDRqAZk<X1~?)&bBLJTFn at QV8)fBl>Ts*Sqw>NIU>k-j2U0Zn4<8T;qxUT_7A#
+-a}3WtlE8XiQ0wqCAXw_!c+W7Er9^i#oyxby-m$_L=BoZGZ5wxAtqO%%lXlR-#C4FFY!Xv=uX^wCi_|
+GLe91_cfrPg`wis8`9yqLiBi=?ZA*82fvbGx#KEB_XtS5^IH4vX4{aAY&gj7gBJUc3P%NEyJqv-jEAZ
+uPkeUL-Ss8M at n=*d>Zn3*FHkG^#tv83nigo98Uvad!<~&~+L?R+h<k3Z-5#D;hvOtQ&K!ad7kyz~18e
+&dm5o*v8r&BFg|J|z0+S#=S%G`f at GKrq0ci{O(>k5P(}^=TFe{x{lg$Cm%;8PU&fGopsNl{=aED&JID
+2hn_Jkeh?|{soPEnG~3hMS7_bL>GGM6tf(gpgmwmGOyMQ^ue>FtFw^C^W<#5PNBw{!0ITRRpG$JabIT
+G%N-q#$i%bMN+mraqo>^3j+3K%&wjC;JB(UMNdG4kH at _jySWaFQ~!BRZ8IgaRzT2YYoDVNW-~ZqJkUy
+aU+tEx^a9a8{)egA0g~`V&}rmm<-6*+r1et=t27RL7d5cc;;4~(C)tIefYRKYkR$2g|c{|Ebh{N^jEl
+~0W}2sM5U9<-<iu^4eFj-*(jyS7L1z59%N@><#!KGVNPi={79qS*BE`wItZ`yw;zxOUc=+w$E at 8AV0f
+Di(MABfz?8lO&*)V_-5bFM5<8vVk`w0{5A9~nn5 at f;1*O#*;Lv5-NpCavRcNdY<0m91Jc|lV89NWFxB
+JIJV<b)I$4$A10na$;BYrEK4xY+q7*U7Uh(#Xk{Vy$W^#0+vOrp16QEmKHRb0%9*#YTIJc3#_VCKWD#
+q6<~pR^f at W2f>r*$wtM=W>MYwZR)x#BJ($PS)u*^#s?T)3vTf`&Zg!u~ETGM!N7BZ44OyCO at mgNRDzQ
+8Qzp+kDHTJsEW1_PV&+loaA6M{PYGV8H|Rn-e^J+&&k>)d^7HWpJy6e`=73l!}a)5p_c?Rtxc!ec$hz
+}E_DuMcgI#(y*A;A%o_AK9CYl(ck0VBgM;ZrWnM=pgm@=3G;<!R4NCT~fk$mS)z$=pZ$E0D!@EuK4E8
+^8?6W%>LNDB_+PJ4SMn7jF&Msdsov4IyTW_F~Ryw#AI*V~iytkO$cAuvLvT3C-UiNUoK;HNe&c?&i#Z
+Xy=g>HCO7T=L;#(@)mG?cIL+1q;N at s@bMLO;B%&nkARVrL6|v;1ZRJFQSBj)Fr$?|{>^?Q~H+Z6R#Od
+77 at Y2j9Y!jP)m-o%X<<0i#U>)x9jC8uzbneh!z0 at 2zI%6?(A;gH;<q5LaE4se!Es)d at wFpTB)uwLt}A
+mTIY*G+qLWXJB;pQoP+&TX<QqI9wb3>%uU+Y6Ju*{!;Z+h0(ruizlC44`n-|sQ+sbJRoSZ?e%jC*iF#
+Ub(Y?`sJRNO#?CB|302V at tRf}U3AMWh=dq-iV)^Fn8#qOs&V{WO?czIaI1k#gN%(>?f1n|*nz3QmyHW
+qH5&V!TZl11vwG!WK-CvUrtwWPBg0$jUzOW7DZo`*)dr1s-@}PX(6 at pXv4%Oc2yaiM2D{mZY=>ADct*
+ at DOls5f=?_5#bC$rt=Ug%Ao7D;b)f30exxW87l5$~^k3YS~{t at qc)^80ItYgHSaF0k#&wma^2!5eJ-@
+djJJ&7)BtWbW(?PjUT{%G<cawxu;;%~duL!QP0syFY7{CnBm`oz{f&^rh4Cp=y-#D{PHml?dep2Kv>G
+bz!|&7tX{rVrjuDD2pF1mDhzg at pa*smpW$m!k5Ymtm|1JUF%dxXL+G?arszx55}oBhHCA{;_O%A><4g
+u8kbqq;);J(74`69YpWH7hiTb_yL4su^}rpO#?rWad|;r#lU=mFJ53w56Ec6kKPVrw_1sRi!KkdhVVQ
+Ni-gO`DCj(DV0(}(P?KN(Ad at CJluToWX9tqm_$DtM$FIH9)JUMI-=2rwP7cfr1K77TsI8iXQITeJB-m
+ZGAy$g;shq{W@)=GJ`b&^7?wr-JETi at fWt*WB!Y_)Hus_0=CzT!HOt+=k1S6p$kn+^(qZrcEC28K@!&
+QulOi%Y!qyJA#DgWTD&-dUxpu-*-isV)qj<yc0k at ppGzHES%z@&kD=TwbmXXB088cWy`3Hli!bIq{4R
+3cC&$ZFTmB+Lb!hwx~G!PiztzUvcZ2GoLTq&aL7r4EBbaBy5B(?P80ru5sSq4TrwYVDGkxuiZ8{;*Kl
+&PE|C8FWy4_<FaKBMh#a`SKzaQx~Pt-A~nVLpxQz6TP~&i!Iw-x`_|Jve2<wfnlAjT=BMjTBZXXGQfk
+>lQ at AfLnMoqYY>h0 at 1*hWDzpi9zu*o<lA6s4{R08a2Q}K}?DfhC7ZGkt2&8&4xD~+qtm)%<xXTMgn2*
+(p~C5(KWYwhN_1kd8*(nnz>E(KTF>u_El7k{<eP&dR)U;3Ig@?tQ~)U!a*+ZXTMoWTnWTPb9V!n?p?b
+B?fO^D_-*(4=u;_)QFH6HfR at z~($|D82~9%d~&5)kBhU$uU)r+c5G>T=&^o>qC#E>4vLu<+#G7nBvOu
+PCd)rnm0jXl$V9i at nvDYB#e#0RunC+ECVmOT(B^$uwoLv?h`x<mxwWW at 2h=4UL!ucU=s7K^ZudMC~mr
+C=`MLTh!j;7<wKG{XAl!tcDDxe!#xf35|>hsz0k(6MdNZ;o|Jsim=V<e18*>MT0gF~I&Qulj^)<JQil
+el7sz77Iw4<z8^kZc^=EcYm*6&fbY4h4rv&nBA^B|cg=9}{;n_>k*Hsg*<2fiZUq?RD`Z}_v#dTy?t-
+O$Y+{l{pvf?9rC0Wl_k|9TQ#Xms#zsmM(d+MUXR7I}Xp3{R+@^vL)H5Z{e*nHD;(KWWwTE<(=-yjd88
+?@VSU05}-0jX)D>Eb?(E6GolI98HXMd{bL(tioJKk92;b#}_H!@ZQtufyeuquP3nFDX}0|21K3;j^5t
+CnuEX>_>1p8LU9x*`v1~*Re+_s<ig2VmY}>oLDQ~l8dv2vlxMC<!r5()c_`eyr5jhJPmX9#M-5psA#s
+Td`@0fzHpEgCTy47d0U9BV$Dxia8Y-c!m8R7CaV6dnk(GW#oA$$Mz$==`<5*&d*W&`v)1vaO0B_pabc
+HqVV59;yr68~$JT{ElV0UF;%;&*D9>_QQ2y!?i$-bf0{^?&{F$fC;jBAnq0{ji+Tx#W(8JNiDSG=KT6
+|eFuADbK#^7Yp5P=>Is=;p;c%zEfL at f@%Ma4YaJj}OKOK0mrad5qc^{IZz7RGk%00s&V;N(tBZ7&C-E
+c(X9<e}m=T<}zUEH4R}wcf><)ig5uaXo6u*j`2)(|)YsRWC*?EJM at HHk$2|>SptGa<RY+-8FjS0cwWg
+L at m<b=32bKWp`nN!J1gukZz6LoXJ`)Yry82tcjbiD)x2Z4Ul(@2VMiC9j;_<j at xR_`PBTvRPIW3&G)$
+7)%&}elM2yjrD+SJ?yz+Pkmtg0zI9{vH5(L2t1v1;I1X_*UQpFM1CE=p%ZAvXyIzLI42Kb~KiHJxFk<
+Vp30vPX{de3ZNrA1dh8rd;IMb>koNdst-FBF9d^H$UO?ktI6nv3oLd{`(DNS2=t)DGaTyx6=W;GA%FZ
+LpMqSJmIZ1n7LGPX9nakp3-*4N;6X0bM`uQ|wAMSA_keYZ~Z#4_<)Y?`Uk?b1oMDvUcR9jnDaS6(g7C
+tRP=M(?!VS=i9aI%IPg&#+#b2XMrX74PWnJd<VsQDyBUBwafe{#Vq-VETJN^ITZzQX8QwomPTeW;(AF
+pW%{mr9zEG3Ca*2Z%;=xkr75Uk!gj+4VY>$)@uV=n}=<bE@~RnFca3w8xwZu?PaLm;?VQk`}hoSxI5d
+JfNHSw#sult`3{YB@%)xGR{NgXcW%`C#Y_wgjORwTeb`P&Zjye^WqsLz$8i43ehF_#-G1F2Z%KtA&qa
+J3+k at Jo3rDqsa;30^;1n0#Z}q18ZGoFF;0VlT^F;*io9o&6=(+f!B at 0;^<PlK;L!G$!j+M~6=kpD=ju
++c*GEQNv0-p~?w>`cL_{?Ar>kjyF8PflQ-MT>CaV;8RyGHo3a~!Z6Kq1FRC8Z;~eVo|s(gM2?$Eg1XH
+YElm^o2gIlyUsTJO{_?=e5AGd~dK=EB2R`a$nNjj)1iZ!200mwgJd`U;Uh;pyl^xtUGV?#Ld?AIyG<(
+U6-4>Hb{yRl+=wZtg(p|aCYXZh57&KV*7#7{v943GL{Y9QR=i(ANd38VG9>V_z+uU*+fri;-h$&nwdL
+8;~k+E?;<}C%%1i>*6Rw at MfmV1lzTk_y*Rb1#@l^<0Kb81>W}AYn%tv|FCpV(g`Tg^vwUO{k0@<PVj!
+bd>uJckUgU=Nq2;{_F}y1M5Et=t*?o9D at CU{0#u^X%9 at Zp+O(}3z9zkJbbi9PAAHjt*Mpb4<b$HIDcz
+aMCP9(4wDA}TAyxpx%?@qjN;^L&L5FZY%k5wvE#dt47;lq#^Be}@oNSIml(3g#u6K6s%etDs;EM0*LW
+N57`jTMP>y@>aYspy~j at 9fD*!<e6$@z5QpwjdFD8odXc^raETGWX8F`1mkjbkocBfm@`P>;v_eYK`_Y
+kd1Bz$m#9UXrpVjeed>acb#iByB(<(?{1ulwD7&{N1>;}E6#P%Kd6fF?IpUm22U|>!M3L?exFp0JDhM
+%lHI_npMz^C>u^1z)UB$}eF0z^gWab}U$C7g%=X;Qdtz`yMEIT<Pp`scAE*`;GZ}^2&$j>Qjw%u;W8y
+LpaSMpS?pCo!r&KEJN2GhMVLqvJpkn at ro;Q1A0)17;=69M+aIq;h`2_Zj=cSD>$`3oLTKc?#T@<Xeq|
+|Tsu-<{s4|^|j!(*6igG2px7pp4G4i<%yd<LX`yPLHww{l}PZutD{_8NEFB#yXR{h%m%>6s&Yg0>D{r
+^SPoN`rkTdw&+<U=iS&!tZFA#(y$@PVdu#ijX at 72^#HFy>RwXqc7D~8}V6MyUwc)Z5!A-wc0u(zEOJu
+BI{m*Hyk?CE7uoX!M!S$kC;}c3UKpM1?aqDAa}4s12)d-3u at 5ErWlq!K0H37YNw|WAG$T#jb3WB3IL-
+)jdlTOr$M_=d;u5jtI=LUd(If$hqiS__6qJBh5`v=FcdVfM>q?SN&YhK=Ie~zX7a;VZgAb#JcIOfznn
+)bgY<<pE>4-mG6?M49GN6%P-0^S71k&*O<BSz8Z*d)XAp6U;x_X~=hc7`*8yeBAZR`(snHe^&W}f<g@
+J>w?NgRLxwM(QEPv`KozL?J@*>|kn|S_gcgi25h!4}Z0n at h*?Ig6rOfX1jSB-Wj(XI;kVmXA_H%X25j
+5D4=n9aU7%bzXR#U1-;I6H)=So!R8vccYfj}^12XB(e-##v{V9=;J3HOmNJxpFP^qz3*T+dO}%Jg4!T
+aZnC>uq;(?pN5YRS4$Dad=^?;_^=;Q731+j)yBA}&6KeD%z5#6^u0Y^UfGr%?ZqYTZ4gEpkt5FnOM?K
+-U(`VCglR!_j!SPG%ihWCybw?d$IDFnO4qU}ElcVN4B4}B3*MpzRgtOLT=O(Am$YH?;(Kw+1i>g&MgG
+j2W5&709j8o9p`dz>chi@}h4MWc?4X#jEG|ku at X2lz!8?Vie|1-WadY9KP>?u+-Lm+l^~F-x+BMYw<s
+cjaJfte_Liww0&1ByR-Gg*zwm5wa0vyQV!mEnbU2n?Slk6g$b5Y_o_W|-vNMa2Q@~JJZA1K)gcU_4>`
+Z239qjIyHPq^<-2-~M!Mq*3c6b4#RB+i5XjAfu*iLdldmV6p~Hz+*^Zg__{29I+eWpm(K`(>@YP8wOr
+=fOj99$Z_r(6y_rI|%E~=Ej}p#e3}$4>P#4Rfv{m$ek}T#>=7XN41;TOScgf5&LT_{0;6_?&uau>`xI
+C?<XFou>UIAKEo0zu~!We!OjI=a+i`m!_)(-QF{AV`mmFz53ImxO6p$~gtJ>%gUV(=BeO5gzL)yD;+Z
+v|0%<!~T9N5^EVnQd??r6&3hE@*gKfc?9f<U6HXg6m*>@VEztP)2jZ-D;1?!i$^R+Y|{VLAM;x4scN`
+_2)R@&X>Ep^Y7?-tY-9-;Ui#9`?P#%f3qHYK}(NmN&7bcP(8w&314oCW_BJU#R&7gAM(FPDRb=_0!e2
+K2NpsLtuTQ2nKE^tjQRQd@|$;Q=`!>EHw6ApDs?ycrTb at a@Gw+`x!;br8SA?w+r?B)2g}oSp7^*AhY!
+_>m`rIPw&4_c=IbnNATkR<&W4Lg`YWE%**=v`)3PN_+GQw4l&7T4w?TTPwDxcu`;|LKkAyAao-({g`~
+CLYWUb+rcsUsU)fZ%p^)t8{W)*DYJK}4FHouxujMtyZfNKA}T+w_)D7yn{}&IX)m4XQV~Kb2ysUyFhi
+9>kH>2ZI!Vvo?-*9~0hB$pSnFkXzjGm^kHUEmr#g*YpDLF3Hu065eX6222%BW8mQ?wew)a+J6KU(C+B
+i*JHfCEI?&f3HYGLhf((tJ^?x;1ZHYTXq=FPO|1Gyn=hoj_mH&cAuKnts`9fdyh_Cg$@t2VePYx~>B`
+#}q);Y}91)D2oNHJ>fn*p{u7K|re;{C{Jl{JtT!!YJQ`HSr^U<Br#6mJEqttal%NKV**8j~_AL;!jA7
+woLCLb(l*jyUJDCoh|O#V$ZxwlQSCMKTmfWy|8=c+Rid#<BAqA2$&ei?$u^bkkq_^WGY$GvPRI}w&Z@
+S5HQH{kv>vkmbIP7Z7Ad_rh07%Zz{!EWSqbe2jQ;;uqOKp)kYl~U`92$mZzorc?!>|jir9UMl9b65nm
+dCT7WUEDnT{oxXEY_3c)Gmgy`eB9n-W0XGmQ_*>k83X!p3HtquBi2#aM3B2(j@#c590dnMw^c8tFCUi
+fT!ed!{+S7*mvINaZ at FO5^$?@f-N3HD#(><y*U2s97<boS#0`*tlo5EF$r!_kU3Xu0d~A#FTKzk}|J-
+dQ$NvCzeSQfD{i*)PQvpS5}D?FyYe+3nIAR^`|$!(EPP?UmS-6`oP at cXxMC|C9bWN|MAy74 at iLZ>r-r
+B&&)m7T<?kQpZ#qE?tD$?_!xazRWm4tp`O4+UWWH^krHV3>D_P;tX<Ob)AH-=i<E>WiSxLuJ5hA9+j2
+s>JW9J<Kla-z2vK}FqQYJ(N78IjumoXP{;3yXU_shiwi4^Y{ke%dRV~;{)3L_aGd=R^sDS%#^6pkF<d
+8Kq at dk|+{G0)SclmY%(xnc6Oz%tsvdJ=6O(c2SUViywRlSqJLrA7Bff%8FwVtux#0Rs^-S=Y(Er_`Hb
+n26KU5alOYcZ1Ci|XiLU!yOaKMRA81HqJ<)7%dJiDDN|4uc#=L+<PY-estt&YX^_>Q>i81KEZ$C+`Zl
+3i+j7$4BU$!i>jvZ-rS^J?3QCGvD84kRV at 9|8$zuY<v7UBPgS)8;O at PQd*q6B{jlOMu>D4>Sf!eZ(Qj
+Y-G(9^lwl&?NB(&Olo<?>E0XOxizCU$#jE6gB_1ONScR%T2b&OR_ay<SFmOfoOKW`2DK}2#N&c&C<-{
+cv5n8_hJtY|3%A$)8Edz8UIq1NVQ{)o8j?k8WrQR)8|?R}4ffmsgZ;at=5;Iv>sWZRI(FZ5xsDOLEgf
+%asY$@Movswu+uA^Nv76m4-D`&AhZ at r57%PELQLv7D*dFUhwWuR_x#Z%xj?7<TjIN$P6Y52<qh1Vdt%
+$t*hogvuW46ENC?3BW9mPZCR6N+z6X3BV!M=;#ub$vqAuW0c?~gtt*BSd^_9}xYG0OI=vGX_LJ=ahxa
+mVHn>ThU|m-ja*2v^2KPVI$!Cz$Vf at qZ@YlO6dUqs5nw8>G+$xS41*%TLJ1RU+SGFyF&@!7K_c=WUS@
+Gnn^Gao1T6&lEYF=+qyX*-8M@|1o~7$7i9BnbLU0zf!tmJiDb|Ee+sEfE3ITjnsuBp;CK}giD?b at s<?
+aB1US6=Whc@=Q)xn{lJl#(pMZwmQHXaT{_5-C}{^r%+h9#<Vo+wJ6;En)^WT9 at l_m0siox{$8?eM;~k
+F&NLG$xvPtP2$Lb-?;`k=k_i`NTlBDA}rjiuJalEcl>d$eUN0&4l$Cga;<G6&llH+xVUo|ki0r5JHqr
+M at X<+u{@lN at Io7ArZ9+Z&|{j^k!X=|e-~M#lAq#vO>OIgWc6rE-qrus|v at I5sj$c?QP at Mk$lyc%VW`<
+~SZrmZow%A8|d$am891$?<Z;!#TbR at nDXpBObu<^@#g${9VKe$5B0yF6epMA}(<p4+To6IbMZ$701^i
+zKi3yUL$Sdcs1g0aa=-tEywE+f0E-3h?j627lNgQ99JT4=C~U1RE`HAK9l2Y1GbUlp at _$DJRI>zjz=L
+L%JCS)gE)@2!$@k5CnD~~@tKG>jAM8*;^#P?j(9c4 at konwg5!CJ at 8ftr;-7H51o3w{UXJ)Wj;}&|701
+^izMSLh5zpuNyNFvkj(0Ul>EqZSm){QoBiyvcy6&luZu at Bxj1%0YF)YM*CD<I~HsRbx4K~}kO*d{c6K
+pPV8y{|y3^qS=n=51G*jU?wrQfM-2>_1^xyPepd6NP*7H+eR+k}EmI=6Y7+k}J7eca|bZW9GIQ at Kqkw
+}}Cpcy2SF+vve2hTE99O*+_2;5JjZjTvlo+(yf7^1x;Uw;43n(Ex$v0B+fNtfM6YOAWVlAM0q6z_J6k
+tc!C>cX{0<K)$#{Xa81jKcKgtlImb6W1kWLs#g7urJ&tg?{(ZFGCn}VcW`2buip`4Z7WS at u54nVI)c{
+kP*?*?A6C}yP^*gAR1+S#J9AxM>RLJ_z#ba_ZiUt73-`H{#s<939-JQ}J;AbwJyLINClzxOd!XJM#-w
+-cV*?_#$^P<QN-xC*V6(;V_qK=W?NiiY52!(lbAd?gvB8BB&{h`zyf{#2-wojxY-TU}%_uye0TyaT;#
+|;mYVB2c{kpXq-W>^AQJMb|Gr#0oKHcZ)v!m8SU)J_-6G2d|Qe*9eQw;2ywemgkAo(1d&52c~=}I-VL
+F}ms9FhQ0h?-rFrI)U3!sw%~sfxGa)*sczU5<$br~6i#_PgPRIol2PllChxJ}BP57>00FC_P at wz?K_v
+p*9(`Lmk%&@g&gaI{QAn*phk^;&kFbJR8;W_$TbB(S87 at aJwv1j9KRAIbw%xx}I(?s<6(`U)qk_YHUB
+0H(pN~U*_kTR&a)@(h9CLsOBF8Wh&n82UT{5ZJS|>e4VM$6^43sluffo>@XDXwC=4{>AS$d;UwJ|QGt
+`T<weJ=eTwR>y~G8kUGM@^fvW)b=BQgyz0HoVqKLpP at XuzUd!h(_Y30ilBiy`f{rL<&*x7y&Q_HsQI0
+vfY?ml9M|5rVb?oxq-%fXY2br{H_j|Lz2=<Ql)c644!n-NeoqH5bHKm!mBunoise_TU2g!9Jo{PlBk_
+%8Ai!!J04U0aAo$7lEP)vNaDRr^74<gvFpK1HT&Jd+wT0cGvZvkL@)9GijHQ%-<9i<k54+h!Sc)G4EO
+Gu{d%Wn+fT^TqsvY!lhFz1BzXl<K#iS0xyX&nxKp<SP6ZO86TIP?fIsVlPeNZu1x&ABugU#Kk)I$M0q
+{z<T)&%(ex0^FcrEqP=|G+J^d%^C0pC-0Vq&3U&o(nr^s)jg{F&V9`4)zx=+ll7?7tn`4NT{lD0QO*r
+5_-)UkZ5#Ioi_Qc|u0H}bV_A-}n?vgCMC0xQ~7ZE00dc1iU?xFxC*{+mUEpNe<zo~R6y#=Sje_%^atl
+n%pn)G^0e)Mw^G`RR?_wSaC72EHCbe9to@~>HR_q9mM-uA$FoG1xuL&y!Tm?Xo_v?KtVI`m0z7HOk9n
+=(B&_a;n13PtQMh;k>SLiOZ!`*wDbe3Nu9Tog{M5qkSHbK#;$g6|J_i6uv4nfuxM9q$j|$|HY&z)LFq
+wuNjeT$D`M1>*P2Z9x`EaaRkr_JkN|<hQMg?%NV2E_HocOHOQw_{-LvD$-g_OSX8r*2$gx_51(NPo-d
+>oq!qvM+j&XFj>HP0zNL_I|A+!@RWe{0{W;0T>--dj1h3AfcFddynt^AxIw_f0{$RigMePX9Cj0Mgn%
+;z%oH$Rz-I+~N5D at 6JS*S at 0o~ej*jd0(0q+n{FW at Wz(*=A;z!CwU74Urlw+OgLz>@<0BA~K^kVn8M0m
+lkBRlxfM%oeanz;XfK5O9ltRRaDbV1s~4KMp$z*jvCT0gVFA6mYhH*#hPZST5jN0pAyJtAK|Elz)$?o
+0?nuZR&!LHxV*2pF_V_IZRFCu=y|e3vRzEsAcz-ek;HBorVxq<=OB>DHJ5?ckWglp<s0KBRQM{f4Kms
+k*Q=X89<^04cR=H+(C>a&Ov(`nLrFAmP{l%W*eJhiOb8dCR%dlm~w$o7Eqf*a)^bP;BO#FC7A at bby|p
+xWD_gN03RlzfzJYe=ugAwwk2K+PKDSek}2@#>_>KmVI{;qfsAX#6;yW!oj|nAS4(~-gFN9R0{+lu0Qk
+`YS61+uMa%#- at a4e&Hjo4POkgn at 0Yj-$nOz#AnZ^93gG9N2rNIBWjLK|~cLCU>0u2keW|O&K$_5`O{X
+9mYkrujVFqaevmq8v9{&K+H3sOU-kN#5O|2fRvB;wRSY&J$8-8B$z4vQ7t%<z}#2*D{11Q!F7l2gqB+
+gxTwpAP_C&O6G5+*w#mHn2rMIUu=)(aU81xnwCUW;vY(FxfCIGr*4tc-D|mG6-xlfm&addRP+XICyeS
+&y*HZDx2|$C1?)I9Sh^d(j=sg at st2zGnkys^LvORzq28Pm6eTbmRfT`Rt>~phOl!){&MP>0J*esPH~q
+krxbNAd(QC<zD4=EG2cy2=^hJori%QrI9zy2=djeny7liUAI;M(+#!d|lbn7nNs!t~dJKVfMW$n8IXq
+jW>djIE(*pT)rYX}K_D|;Ld?xA5>s?Fn-SJPvhov_4pNwy)BR(_BF{C>W{97QDjnQbSCdqZPk)lj5@}
+J;8iBUC?JjVGTQL?xRb57318~GnhhTk;5b09X8;F#C%9N~_w;yhL=O*fP!XZlUc6LN(V=P(XaoytyY{
+X}zm!)`$@OSFO+tR`9*^;Ab2 at j$Eb$n^i2^3yb?RF?iJ&7_d&H`Y^3>l{{2LRov8&iW>72~3VO=cT0e
+`Wo((f49#s`ru_0^E8W at tu68!?v#JGPd^3zp9?-@%DFA%s7$}Hy-#C##A_SxvCLr3U=%d0cQZ2^3p2~
+y at Gz-2q>+n^oa6eKQW)3Pa<iu}#|X0=vhF8tRts~vF#8H~xG=XD=IR=5?jX$h!W<yXYGDo(<_d|MI}3
+B7Fn5vZ{m9Kha{R*FO_=q<++B|E2X5BL at d<MeVb+}G<~%t)gn5A+-*?>nkj$SjUlry}!c2vEl`to;x^
+H263F;e|7t>iEC%1aBBn<vEkkd^yN+V#iAtaU(&V`p#z71r5pm#%FBlWq=XO_ at 6I0dBl04o9W;r}~Xx
+aP6MIcj+iMnAC$wGoc=3WZQMR?GTwbG9ur6VNvJPl4sYwGC<GqIQdmi*v`{&~TuI9yL*kGd+}KSa|r1
+L=Q-44J%^G<n(0tL4up};HLy1#Dgf6N-Tm(;-Mse{qU!`;V;zjcca^le|pH7oBb8F at YmEwfzzMjHvgQ
+%FLnBJxy?U0tmeO+{QnDnH|A;jf4T%H8vkzh*Q5j}8vk5w^RKZ4{7?UGB|rZ8!Jo6q+3mJP7IHT=->$
+rkayPfZJIWe=`2|Z0i;5q4w4`*IeR<i6$I4ee{=}0{J^i;;&pi9w>NU^5u=d55US9XgtFNtp{f#%@di
+$Nfzx&?%AAI=HhK-vxZ~6F>e{9`Wv3<wRUAy<}-M9b1!OBC2k5nB!cKpPrpM8Gvi&I~o{_5**s=qz+-
+P!Md_))6)srKB at znri8^|#+IT&%y;aQVs~SFc^CMB(D<=HA9b>FMR|)3%*T?c2VCpMS?r0fC*n1a<A!
+UDKmyui%j0eM0;83+q2%;GpoqLn0!F-Z3m{_=xC{qwX9XlQMfwswr)5ddB?^WM*aOm>;y{T5a>@=Ph{
+Xo>}+amz3PP`@;(tEnf29mjAyU|Nl7swPRv+abw5n4e{fR2@@tJPMSPr>a^)IX5Mu-Pyg24|5v0xt_O
+KL)rYQNc5^a6-OOADW at lYuMKkkb&CKP^%qyFjA8%%UqM7+am!{^AnwfD~6Lsne_;5LBoJpQ*oRN{8nl
+pcjHN~2dla2P%a!r<rv+p;}u^O_|ax7WQVTPas?#7f{t9FhxW1cB7$80k@?71B$M-qT?%3RZ!oID<K8
+kqt*-()s}G?3^(%QO<_Uz_~=NAe5uL7{VfB>$16`F`&1pwSf<7em5_hvz5emw<K_+9xV;Mn33kpwuNM
+;w}<RXnsjPgd(8UrKhJWl^%I!^L(@U27OKse<MJ%MBOr%&D8Q=s`%?qaPE!&X&g2S#2;bygP8pwVFP0
+Wu*08LK>X?0XqV4l;z(BhO#tn7UJLdU#ax_hI|ZOw%yT*W)Upwsjm?GNFP>?|3mkOf#dw=I{F~XVX{I
+nIFnxXw^x^zB7W~d;bAgR|KBtqyG;Z0J%OmqI^DFZy^Cj~m^TFd=;NU}!UyfIf2kE4+nHUQjmpAe;mT
+})`hck5OE4P`y8Ej;k&1UMHU8aI>XS)P8mTvShh4JZZPGNHKc;)zH`Z7J4jvOA!m3~B4)`(n3fl7s6e
+ at z1XG>9yKA5Z^;L8+;OxFHdWi&hjFooS9KYqrTzASUF at Yhs=_$C`u2DJHX3cF@}9+H!%}cv~i;7jMgE
+8Lu^4GB6JkQY>>E`D~hPv87lX2^OD{&5RH)#)b5eHqu0TNDIO*Kw3x#!($jSCB<s9q^2-BV=Wm1gLFx
+^S#ljFNH0 at rw#mt2s*Rfxa<ZA_6q|r4R-}XBF%0 at cKj_ZF{kyxHTXgqqWo80=xPB9iGN)KmGBqZPCC8
+%4$kt at 0*s|xOn=B(VA-QaDY+<Du{bgjDQZ?2bO^(@=tuf`9=Gd$$voqzIIV~Fv=$-}*r6wg?lVS#ssS
+pNp4I0pa&HPzRDXE$?OHLMq;ADEqlLwfeIkSNuM>DN?&}OnM$jF|nNn?!M;GS!;TAiFpt~C|JNwt|XG
+v;s~vJ3x#dydW8x(9HFL}}f<QI0tvh}EPq^Ik_|%SAT&gyi;VmTq%RR!FuCt7cA4s!5ZRCWqkk2C_ND
+#&#|)&kP+E56M#$!ewQp00yawQGj at T20}jcK`b}jG&=<>Gc&S9Lf=5gWXa0NPGN}zq66~-9<=2E<B*0
+<*?Ci9Sni$3 at bL39tm&APxz-emll5(qZA>2~rSQ{&{4)Q%oI2CGA-z&fEQy`{h-{fQb?ktsmeaRSuRf
+X-AqD16vlwpl-=h!6n3<U~pXGP28?vF5d~7{UTFH0ITw9hY+nTEhHO+&XmyxD1WtpuD`rbOe*(Qx#NK
+=5(Iao~PLc|g!%aoNPn$Vsk1bUU8pc{m++2E#TLMBhqO*#D{?VFS6J8pA@{j~|k;yyT#iXAZv^{U)i(
+;;&f%mUpD6|CG at xfxmJOjDBFp3KU-BXZVcQ>G~;*EB2EXqdvBjly-HIdwL<y&uM at XyZcK3~@>H?Vuzb
+Qhi8=NN>_%vZ|_Wg|~TCUp@!>QXnC_;miMmhdTiH*G^_ZBV6IFAl?wU!q1ENMXHG35OrO<YM&~v3Z>a
+2xlJPTHyPpz^df<~yh)%HV5%nxj8u}q$^KOsAM&(TgExE=@~oim8{|%c#spM!H2Wv}g%cwCONKVCTTd
+rGy84i=R&UZZ)r)kU>Pfl+-L69dt2<TsSNN*jh$_;9sD^O4Fnk#_+JA%ZLpi*klK7><H`N39Z-e}sef
+`>SI|z$rIqZ8OpeKhkhHZ)d3%v<>y?3J at PcJv(73oR5Cbx0;u|m_<A(W8AUvQ}KaUnhmU!u_X5KXEt(
+M(knO=LTwu>{q1t`4Z`Sm9?@1o at DlR22!D+KvQ80zNsQu4A=dRr?CySJj57AWc;uyJ~VHFONej@%|t}
+&Iw)u2SWO!?t(PhNxCYwl6Dn7X75DMO%@SS?JlPU<Rhe`AJFoftTrp$6vPel*TaQ)D4yfxNB)@nZJ7M
+NL0+6c;5*3D$eYYdpF0Q{I*bsHQ-YTP-lR+FB+_MSBIy!2k#teS6CQ%|g9if?LEa?D8UQkP0=gYZkfJ
+^DukKLgTLErZo~%%gAfEyu?*f63z#*9DEvH5HXhP16ZcGbS9<4qQ9?E2-7na33q%4>Jep(0vUzp(c*B
+C+`1 at k?^tngP7e=B^c9>gEw_8;O~;d`T<qkPYeCFB+O=E>n%{17*!ci>b<eW*}$Qj$)<f2XMcp=@;;(
+!uPgw_UtQ7pof5O$BMzj&ymPrC6dOz>5SxJr0=aO#(ocfXO^16+xaP=p~S=+P6wo(bnvf>>cg}`R$8z
+z<(F0_g#i`s^e*@a->!NX at uMd-;*-0>NZ4e^&o1HNj=1;LgDE`Jcqc4D*}`dFMN>x0pJ!e#Lvvq0O*4
+3)x1UVN|xzfg8{>!)JD3#zHNvv at asFIslUgdE&c$$$G#Ntvpn^NJoRFEs$g}h4e=V%#_a2a%XxPPsER
+T0y)ELI2KYkw4$1L$aDz6_gLD|8a)ddZ19jEh7^Vy0lg*7`c$`WWk0;iNF^z4~Fi^hlhp+Awhl*e?5*
+!&wf`98=7f{`?%CDlm**968$a(c5UY5qTV9`U+_QBU)mX(!@woophY)%zr)8b#zJkDpJj;vY4afH5|y
+rA5)gEG^Wbei0uPELK<|KKHrY=iHfFP+Q3Q(HWQmjc=UOZkMP7Z9>Q<_qg=H>gvOdsll_c~rQY-I84s
+UBa=h>e1~EZxRyuplgUC&9!L{!0WT73&eSovXSu^A<sQ_>#`ADPRNq-#<CF@?oGN!rjqW8yGcv&?sK_
+$yhm3P;=ZOa-oQbgq?`34(k=Bv(k=1>(oOL$Q43mTXd`(ZdN|4((s*Yr(0GxM^>SKapJ#Ci5A3dlI-@
+3POCwiECrVELoAif%uRve(N+V5Q(cjAMOI|1BDfo8E>Ci(-+D}!H_Ruc0x3HEy8RH6<+l^h&W>}%kNN
+o%C-Ur(b(Qd#8?N0#25A~O|8$3;4g*08=VwzUDi8=}O-qHRuc|Z<m{{mAT?Qylt at 8VCOZ-npbCgrak_
+=U0#{6HD6c5Z*y{DY8P at Ld-Eb%1}r734hKSRNJr(8fag`oG`K+&0-Ku}M2&fp(&0-JlM21BJT_agS6G
+MSC|$v$mxD<KBr1PX+N5iWKYj+G9V}Hm<w1J*1m2)GamX5Zmr?uR3LQn<}>o7m*%%M;qk}ajS{yn70|
+i4ec)4>Q0a+9U|IUnuiN_gi}Gdc0~0)@Z8RYv>W0TuJCffG8V3AkNN5aJOUiT^HtHTkCW4*Ib<>{mE&
+m4tHAy)q_d)w^8k4n7y|u_H4^xYAe|K9MAixLfTN<j59x08CEZiiP$pEQdt=|87&xRY(O7MuvsgiA0j
+)RELNtnO!nH3>BiU8(0c}^FPvg=-9`5I?hBmWZqut|Rmv at G={QGO)F at t~YJLd4ewePsQ!g)JxnPQyD8
+q0 at -Mi>#!AdB6mn4IUw<8x;7Idig}#Il(Vd3qhvmW8%iEHFHkDJtD(q-0pf=2)h{usG8s!e)WbY?B2-
+$L3_`=46^;t(MF<7|vQDMTj;xH)C$LpfEM3F-r0S#()gR!hqhfhq$u~*e2wp+A>XJGcrvRQnG+?@|x=
+;oFi(H_YBtrTc$N*%mS-vYR-&|R8wqviiJESBy#uz{rCZ-J;j=;hZMnCDW!{88HmFvGU&fCeVl~g{w(
+Ai(TS-dlL$JQ#AfE?%BJyglPAO(BZdr2&CG;Rx?+me0{;v%@F1*lhBnc_96oo^n^MeUEhdQhIK#C#a3
+{Z!xNNJ*5^Kq at LKK-(fLC19AknTyQ_4Kk4fbX(g$43p>H;&S&hlnCttE%u<hh*2ls)4%EjyhtoEn!m$
+7Duoki=G;p8WtNZ`Ikw)sU+*&9=>*YqBI-Ou3k~z1=2TGpA=*thSWQY1#8LvO#z5j&{bJoCj>?u`u{Y
+3LqLzLIj{oY>L at xvtTK)n)0k91nqdxxI9wpV#o$TQ!+CiYA&)iJ9UaVBRe+72J!v^sf9B at i8&dVYUCi
+!3Okv<WGUOUoI_2<G at EX+<TBHz%nvUgP&-}3x{@|E)xuJ$TVomIISgqW={^IvVr7yn#MI(0oGEeza{%
+2iN67s=hf*MM%*e(Jatyf4G+A%R%nG+DnI at B&>~x)MN=aqJi500MDvLw{Z>$qgn&&F8EX8Hd%dq5R<1
+7*{6Hs|I?s7Gln&YS&<XcwXTJTQpR*cQe#RN*pw3)~~XqqCM?m`nQwE4)FQ*Alu)Iv;6#~EJ(l!2M(p
+BHTMI<K{fCJW1o>^VHSK%{3;qNy2k9uVob_r}%+h~=|%T##!uWlhZhnR8hR14bSbwHqyF5Ur~*Ck0CW
+Y)gt|0myTT<?mz at XJaj|9lTb9_VB)w84?vz{9fSMmYa^m#@N!*pqPLTz<ecQ_K|GFwHWqJ<Y;1C0^&Y
+UD<F+BQd#?zGS at _&#1wLBUsBK<mz_E>jpytnm&O%L<Pb)7ytG1 at CnSQGFu~ajGRV~!n*fe1n`V%|ez*
+MP>-o8s=H at 25Le%7zKh*IRxAfK2zsoIs{q_6n_t)=cKe^5gdFh)0&x8?j=w8jSv=fv%yW<^ra(#0Z5c
+ja)-e`OZ4Nnx~8!NbP1P|-uz7eH>o&tIaH*Y7mjv_2Vm7uE at cDPTwz4*|+hp-<i%vxcN73M?{X0ouKB
+H#=`|1J at Crm)W<xO0)Py$QHS+ah>vBmCzJo(lwAD%=Z&dy$}n_f_ML<L8C>MZwQH5#MXVexu;;uyFre
+xCeOfw2;$`ieLVXM<@QJzvgZ2t=isywf{dG{@+di&xZf&_kZ(utNpPq&3>-pCx>743qLneA|R>b(B(I
+AzJfNko%r+F&+Y$J at ZbAWxBBDmnpS`RcGmtQzt(sAaQD`C3;lQb{#X9~UoQjAe*eddgt at O6kGZ(9Ew1
+?fd-Bo+OM3|SSHI!##aB2ic%hmd8H-t*&)|CSzy0M?FKb$%UvQnn7y&=JP5)W}H-P^mFP(j<Gx`1{>7
+{#Gr@#0`hD`#6bJD5%PH9Nesrye2xzYdelV4X~CS>qp9`ZW0$FWZCc~^NmY8B8dV5WfS0;UR>EZ|H56
+9v=@7$sn+fI$MP1 at sY6DWIExM8K<maM&Q=1p(^>JSU(e;8_8y1w1L>J^?=w at WVfv(tk_9bpoyyuw1|r
+0rLb*7cg1CSpp^s7$sn+fSztmbta9l4-il-pi)30%Y8-2D`2&NRRUHBxL&|=0rLe+7cg1CnF1yXs24C
+sz$gL31q>BXBVd4lY5|o3He43`30Ngy#pR~--xcPy0+tJyCt$jOi2_Cm*k8b40o4LZ4I(}P|5JMDx`9
+pSb^f=x-!d&CS_v=owekxho$E!uiTKQen}%}}dYwGiG*Emp{kkC>o{jz2z$M~$LC}?A|2e1-d^S&m>t
+cLK#=Ez<S at PZX51;yhZ<n`%SOI<s--m#o26z|-?{$Dz0gUbdZH||Mj0BhrU!;$M!O8xFoB%&l0e%$#?
+IqY(1N<p~`@sX(-QlZHD2N8&HN0vcCl@=z7{4>FCqcXb--9n5=zIw9qOflO_)Ztj&!#TyP9J8Ea9a?k
+UjeXJS8g8+aGJpJtrVATARgdu0HZa~HUK^n;CJvv0e%*s0y@$<SMURHNKfDa>>~j_+mrLN8sOw$C~sg
+t72sR=0gmv#5UAIHCj&eM-&w#<1DxKQkfJsUG85p|-Z<+Gd;%O63hfr)Q2^sZIsZn0PxmEcD%j&*iKo
+J#twtQ64GKUW;CTR#3?k%7z)u3~H5mE{z=Hu!8_em<1h^Nz(_p_3;17ejT;b5gCJy0#5Sj&!aKjLuR#
+gBmz}JAU)kHu#MPS8&`~uhmJ~zO_0S<;w33w#HWf7dta)7-fxxAqOQzALdRDcf&{7HbH3;ZNN at 1c+;K
+*tAQ+)y4?5Ac$}8vs5!3|GJ)-2nbDjED7$BILml&?kVs72w7Zq6`51eFXP&0pOldpbvnbeE`Sa34J5r
+dVmK7UI}p0XpT<>cpbjAct3v(Aq!%7d0Pl at Uks;- at Ix(_kspA%F<|emVDR7=UIxwrJOGMH5ZG4&RO`4
+b2<zcn2=)yCW5xpifFrzbEYG84fIp9edIk1%09WdHyzc^h)&OMy>{kQa5YOps0_bjp@&LFJ;N1zF=UD
+)kOoj3Z_W1yxn+Ek7!vfqfji=Qvfa9lg|3-jaXF%SA9}U16 at VQ~R1^7CAK7hXkP&*UqtS86|ux>Wg1*
+L+)N9J%kB>?B9LLUtN(*XvXxa<gj#MMH;C4k-2xLg{5DQTRaRDcTwj?kFS(-Yys3|^iQj(>pHK_kF1n
+V|mxO&!3fEJ!yG1%u`+9xuZ60{;-;7g?PCX at D!UfezR|2{0gs`$0G|hx3Lo#|-I)bO8Qp7Uc at yYY##l
+0sC+ZltcL3AYLoLAQ(yn1CH<)_(lR=2e9YEJb!}$j#$X~90~BmLeVxZB4o}YQC|QSEaLV>0AGVI5B#q
+OxLepa0PL3!?I6+txFny4#e;Fn3ZQ&~{c?aW7jXaU0G=w~GS&fHwG{XVKM2<rfo=&n!jNK4Cluf%f%`
+oI^dAxQ0aiRB>Kec&9_9J|B)|(RARVDRAUysU$PV}kfNz#V`w9440DmhNX$WxVbG-cQ0(jSI&f6 at 2qt
+^gUu#W-w#2V3V0Q`LokM{z={O5VuKxkeIx*YgN*zZMXub_PP2lxqm!GI$iybkm-z#{>+e--K-;C=u{z
+RGE4zDCIR>$xlvz|pVscw+#51YaKb-vn^un~-*ZR{@NB8~g*F2=J-5d0eXiek1T|fSumqbOHcoyu<5J
+Ccrj-=k-VlaP}7HF91&k==(93%MajI_>|DkRsf9rg!75;3-|)S-t8YiZyU%0xCY?V9ng*ejxb;sA<F?
+r*nbx<dkD*Raem4Hdhh1_xCY>+J<wJFj_{GaP<{X}0l0B5k9QNmvVFiC*q0;R$L$e%?&o*_zz5+wjeY
+=ry&s<of^-1*MkVk7_*($S90L9zopk_TIt+R{;OhYPJOcd_;K2afABQ>uxF5j$<GlYxxa<VCUk<R#XO
+Q=R2LW6FUlHKt0AoIfJOVrsV5gH%z5x#h_&t2<F at FK}`U2#|xB!m*g7c5(4)Bb^F3?F3;y(XyNGpVgg
++0P^0!N5 at -VsL_CUAsP1de;k=LsC)lLANhw!jhY6FBZkmIRJ_j&biW;s|knFY<$Mfv`vTn7|RP7dXP5
+0!R3 at z!6>+I6}YE9LK$vkplng_y6{fpJ{hx>w}<@=C>nkZ7m<y2ut{Knv*{dHZEBU_BgKE1Q5ej0YrB
+RAg(Kdr+gfw1OUXf!*E4&Itq5ePv3$)n-gfk9)EdG#nsuqq!s&Bt=O+`#eP#O_WN3~KiP`C)Pg<Ev*3
+dqN(;0}ka%asWde0p=zkTB=74!npOuZ~ip8K?xi^|ai at -gk(OmU9nAMHuye;70t<hY)Rl&}L%VzyH1-
+aWPKFD*TAxs4ZE}d^UxbZh|;6O5N+&It|XON7H3}Um{ct(LDk`LdiRjbHruf0Y#Z{AEQDk{k5pMOrSU
+%yVo(n>z_j4y_w$%i~vneRhXd*{zT!i-1g`K$RpSLe at PxDY*@r<GTa(8^2TytfYL;lLfjf_eUYG)qS+
+D=V3q4U3iV-+6j9jk(WXSf at M(f$1J$o_|EyfZ@~9u5$Ad^j~=-E$zr&VZO at UGr|5Unt}e+Bm7NQ at Uw)
+|=jO~y%ztI&kv-hv5~KeO#?Q?VKc)5~mB<>{A%9noT>b`3_2|y{UwU;}<<-i1q=Dw^lV=&g!_`cn4`%
+mI_WSi+U3mmVNW=6|o_xEY!+AajfDh;>uN4pRHC7%0AImYhlviJWc5oE;z|0MYj;!nXRweU`AK0JMj-
+(9`oUK^{|A$|mTG?>*NPY$Le}vL&)3!BSWzOgy(zj-H17*%E{gH&kozXwLF8m~SX7m|v+?gm##E(0Zt
+KBP>RJ-Pnh9c12>2rlokxzI-)5 at n1{+z>&ZskMOnC24&e6H|$z^8(*JH>LY7G?cb<vcPnk|ZP~kSSB9
+kcS?6s7V<wFE1x=yzvJ4 at WT&T8UO6F&&c=RfA1*gX51d|F0`TVZuG#Mc-Z_f-H^78EZKH`TiOFTWC>(
+Z+BQm;Y^zOzlJLNiUoIwX0A$JY-`_*&A8CvBe?M*7v~6j|$TtBdJrMukL`pwOqKixWY`bS#5?MlD-uB
+Tnq_=qm(qBU9&zCN}OIRs}@y6or-KpB6J0-5-BRBbEKOW*!@pQs8iec$=^V`xwLPAJbSQrTp4=1BWjU
+rmDmKY2MmUfdSO(N5$PbYWXbr-q!-h0X7)Ujml+_~ib`|l at NSy{wlv9R`I(V|7<McZid=0l^%2aBUg;
+oLZ~{DD~VWR8|RXNe&n7mOfp=Nrhg1+&S<Rc5m1vGJtp<p)UUR!aKspk(kKN=EOZWat4(MjobQ)*(t_
+Pf#-c6eW|sp(Gc+X=f<8=SNEBR8unh93=$>1*EjJl&oC2lKky&e<RO4^9)(NdNo<Qb}f13l~-8)zWeU
+G<fD&1Vr|(cpL{}&?|hdm{gslB>L}U0dpFs?e?K{N=ny%2^e8!T;siN$>J<6vtFOp;P&|+SM#;C|e#^
+>5O-&8CaQ-Lq-DOJZ>gvd)OP5$#!Jo?@=pPbce1Kz37$bQ>x$%a|-VQ3ThPEf8=wNaWokSMU2gxeBl6
+*wpBPZxlxjiL*5WXjb4~OuhAiNR6-v#04LijxDOO`?S)e!z22wwr=k3smePT_k)_!tO(H-xuB_!SWTb
+qK!$!XJh3Cn5aT5dJ#|UjyOKL-=~9 at Pm4T4zGo>eh-Z8tc1J^W5FXZZmQb}mGGD^p(h6u`qd;t&pt@#
+Pb&$ndymk1r|^Cdz9)nahwyho_yh<KwCZ5oPZvP=We|Q1g#SB)-wxrALHO^T!h`aW2vymPZ%BATcrOU
+=gJ)47yrw;&cS87C5dI+u|2GJ~0m7ef3QyXRMA8ZBY!6aS!l2sTL5 at JluOkLReeWi8u$j<Fj}ZFcYC>
+1OPw0F52tE3ZQ+N%8zXQS>A^dCzp9kSrK=^eK{sRcV6~ga@@DS(9(-8i92w&$2-ybN92MQTL;ZdOQ3Q
+*Vu6ut!tb-tARHkgtNlPIZwkdjL)DY^U}C4U^Hj__R|`~V0)8p2P8 at N*#iJP2O`;h%x<uR{0_A^Z*qe
++0sxhVZpc;guo<{2_c72;T$3_lEHOA^e>XekO!}5W+8q at UKGnZ4myHQ~0L8B>r=@ij5tk9i!DT+}JNP
+B)DhK-s2pu+A;A4gH9J8J9 at NMmoy->PoI$BapQW)6m$k~hJOY?bh at OlzUX1xIE`?RPl%0+9}VQ=Vzr~
+kXp{P*hmeq-J%qa<Ax0aojn&0Mc;stf|FEz-lNy<fPl%U)W4i=&N*XwjQwZ+aL(^*<h6nob at rKdyNnJ
+Yx27o(w2o)ZBCqekpS_~W;pVXy8hd}Pmcnt2T0VWL&`bqwN9XgC3#XN*D4?Q#(K30dWT6Fj8&~?0E&D
+alPfbdD9wFwjA<KyC!IwOI=fKHt{`uO++88HTQPhdZw-?@p0BuoZ$kBv((#K$MZC3J7%0o?oaWAw))=
+;GrNbO~d-b at mq?(7kWy03+e_V_6h(swIs?4<h{-{lU=*ki-db at d-=_7K5Drz<-i%a162#4>UTD9owNp
+2k_u<Pr9Q`Qp}(@h+qP^cN;sFu at K~Nk5##=qS}SW#p at CvmB)5xLUbJ~ipS^?TI~>5m3#Q;q=cjdL!98
+!aZ{5aHgZhtAUB2A1mS>bWzcCI?n%Q3sXf~$6ux at k5Lrx!9}NYm(Oo-iXn2IDtFpZT9An2oS&od1jcs
+&KN*be`7~Rgp{SH85laRVW*BF0NEP9z3-PXk;2Hj&vLvf8KjqaE}P{3lmecMe;icJ_D4P}iGXZrl7SN
+jf6&_X&IoSc!qjyZ$<u!z`bLsMs7et^CX3Zfxy=!j;{PV^yZ4B8RRoJoAsUqUlyN-LH$sPacwgCbG!u
+hHk0wD7g4%jJ{N&GfmO>nXB6H+k}8rjIN(jdSQ8ujSoIN;2ZeDoZT+aA_QQ_u0i{*gnuHpq<lyPRaB$
+TxZAw`1I3Hljoj$j;vX;hP?RVi)7upbxc?I;DZmCKDcGe7N#qFTJair4)l$8L08zdYZp0u_%PEA&Yt;
+(oH=uboIQJ%)YjILbLY;H-+n#Mbc2f*FOqB5u920OD0vUeNB?kYX9x9wj&2xqbWktL=Rild06MzIprd
+=0_|gx_V7iq|qWj2$^f*~bPm}lP_t1aWIfaJ~F%d at eX6S6o`$PCUAbbpjkB9L0K==nC{G$+l4TOIm!t
+aOhjs4tTddgpV%Kue8MZV{|bLY-I5C*b~z&i(o3>q}3A7Yx$odY`e=+|A{u3a}MXMsIKLqht54Dwa0`
+nCmg=N`TK^Z~!V>h6QW28EHJp8Y}xb at dwL3m)3FZQCuVM at Z-(Z?Dj9!a}17?KeoN^a+J9ecQKd+c}_9
+zd_zgrI)9>yH8)0s<T_0&i%T2E4|QSkh;6Shr*-hApCXpbVvFf16(?Q$-9 at Ar)L<{uO1;?T!X+Bf^-E
+l#2*&q*QZz5ph01HvlhhPFDxuLEUZTulP?H<xTmj24`w7wRJblh_yGV{()#8Lg_9rjj~n~D^Z6k>-=5
+68Xl~lh-o{Tpg3!k4a~HAxCw~9Tgg5ewTmJpKckhmgiXUDX*W1(66IvGb+$dfLk5|Y;OTmr}$SMA>`n
+d|aKDX%~(-pf%EdH7oUU*>!^gAD)KY#v*Uw--JN9cRb{QUFJ-vj*S!i5XxVO)Cl^y$;@?cKZAu23k#M
+vfdgNXQf*=-?3wOou;{ewf$TF}LsCyLT^um{#p>Gi<;;_uMo34)_7y<@3)!e+<UablbLV^v556q|l$z
+&p!JMC#dK*-+V)1{7umvWT4Q`ekDm#4aoZKv17-c- at bkOk}+e(;LZljCp<FJiSQ#G$P4DHm-rBukFel
+Tk*?@BD=RCap`qal!DjIG`45EjJ_2<x5@`$@Hmo=D2YfO94;(l^H*eldfj_!w(<a9E_uqd{fB4}CT2)
+m=j~+eB{9zc-5zziDgn8k;_ugByapT5Cpt8jk78Xu4o6WivD^?_eUX8rrah9-7ojOI7mX_W<WXKRqy8
+xX|7m9TMEdRg%{yPO-W at WEly@o;>uK4MvpJ+uzg(IDh963V2_~Hx3C*%*~9r5bwYWn4uUotbwB!8guF
+bHMt!mq#n+5qM551=VsxpIa6_S<j2fBNaCo4@<+yKf+_%jgf}d;;p*P~c$&hW)ergFc0EIX>iH{!j+_
+!#t5c<X at IU#^tZMEb<3DJ3h#B$LDO1-#^3u&Ye4#Lq7I|GEsyw?AWn`@sH)>)TvV}55E2OTV_Tcu}(l
+8X7Kp&<Ltw_f%$<D^9}0`hB<ifAmbnN5b8h0e7JsH-etyrVEzN_ucABD;URy9|N8oR3f&MZ|4~s<y|E
+nQhx{KpbclZZ at y8VMoPy5G>M*81=Ewg1``L%Q at 7uSJ)s>ScPcj^3z%~HO8`cxdBjjzvFO-^2Q9AlCrI
+Gt79kiR$u<eu%te|xA0ZQNap3;l;^~a&E1l^KzC;qo?-MTV3ICv=N at GGFb#Qb0~AitRAn64-f<^}SOI
+OhG=Uw_R$#4*h=y^&um2Pg~jjp>hh{L(o}b)QihbBxmHBa{xSq%>k5$gqpjejr2de^A<U3#BVgQ+oC4
+)zyE7e`xC+AM!7Ma$d;aKT}Vz9$<Ny at inF6PEs2CDWpHj0C{l7K}v^!4B4MkT7Q+&w4;=UZ*?q9+!p_
+rE?vU1ygVWzq9>GvB9sC0;Racd7c57}V at q;ix?`GS9$~q`@{jE<jM*4N6M_HnUve47oS^hh;B^GZFci
+v-`6TB*<2a?kpNRdJx5+>B8B}invHU}SMDc5$CvrK*bj7^Da)o6>mILcJmNP8(STAIV^#XrWzNK^m$P
+f?Zf9&U6hEY|N4nM?Y2#31Re+Q+Z+x|TN&=#)@2?-er`LF`(8MZAg$$@3Pwep4OkM7tnU^r}NoPX2LL
+LEgJzM|9sGQ@!l at BU10=l3go&$h<@<;#~T^fOI9ltKPvIa<n-mgM;3k3Z<q&1>i at 3*+gt500i!=fp53
+?*4(&Y2Q&gshZLRl;I0epP|f*l<V_;UZ1f|>b;fM=K-JaIt?vuOYiD3{vn^2M at B~Wg!a4$`Nwk7Tn;S
+vSgxDPA<Keg9m~--l^@dA=8vQ=+eXpnbMIs_;P2iVO79XfBz{Aw5qQ#n;Z&bd22q~}Vw(hQY6!GRJwS
+%;n|Rv_zk-(d at 7c4bqx?f3kNx}&`GNHp`vW;Ius)z!mI3*Pc8^y4EtS5xU?hEY{wVqq$gl=vz+VcqpR
++)QnZU=?Gh7C_KBEkBea1Fv at Lovwos{-P86f>No1y;iV`L7u#6Pt6to%b=TY>rz);U=YSr(K5`-9fX7
+V?kn<VOWs`p(1A^bL^V6_DXYE9XD=Jf+FCAcI8djPH4U#x^Pb%f|YQGRXBAWsvJLwn?EMGcuQ&^N;lm
+`xnr&93RRcf6e7+sgB69;BVuS;q?85Bj`I1Mbp>wK!$mv=*7C9=;v3s3`rovJwJjBPW3rn)MxE+-X=v
+I;{CJSCiMXsdVSntyTteh{eJn-p+kFuj#7mDW4nkD%M8kZI*%+1+F at TS>t*PM{VnPY_}h{{oNib=oW2
+J#ybUs}2N^zjCWl@)UvpcHO%2GI1$h!B*Jq()^x4`n|JYv0<$uJ85xp at l<PYmB@{PP9 at 3Jh|_G5dG;~
+H!?v9H3u4S!pgM$ye6!$*rp(03O`)3-o|=Jok0Xp>fEY3cF@#?X?CSXwwYmM%%vQM>JK`t|2kOa^BiW
+1!G6TH_zudshB|pB2bA@`Vt2LcXy+Am4JHU>onOA7lTEGGh7PS#l at +2gtAqWcY9q$N+T#>odyml91sU
+AwxOJaQ_(kXgbJ{rlX5f<CqNi!!~Jzla4WTcgy7;+YIc(P>;ZG{rdIv%{Skqs29nfbDrF+o?N?jjaEI
+MLbn$Vqn{Lj3{V$702%%+>NB=UFWT;;Yb<xtRp!z3$?O>VSf-ZRL54>_hNU3GB9H-p&2^0Xj<?+YApc
+MnSow!?U4*hc^2j6ft+(D{^4yLbvMd- at I{E?KQ8bKJfD9jl46Htb4A>^g^?5C{NvkcR>EFyT^a+q*1<
+0 at rWGIGmRAACEMzKxOI_Vf6)VAFIBmZ*wkB*M+jXWTKB_$;e8Jf#+Gg+=(yGp;^{w&?SJeF=NjG`Zl`
+ux6AeO at PIcuvUhIFzFm4`^v=2A2VUOvix!*$Cg7A6fr<klgqS#5{-ocjcr>lj5_pvkxGzSRb(tEMB~r
+$>3bRZj~npu}(D~W3}}AeAhb;9RurgnW)dremB*Bkblg3y<U&`Kwp3Tb*6ivE>l`sO6Sd+=aAuMa@;I
+W at P}>Ehl_8cK7$M`v@@;!0x_M+%geVz+e!QM=|hu}lISb1yh5>G&dtrGR;!gRU%s5x>#x50inTka3$-
+K*@{N51wpFMLp+1V^0sLWoKJu!KUcCb2jhE*+>a(n4JR|CJIn;$)@&CyupQu3BnJV)?V8DPo($dnhQ&
+UrGp&e!U at X|{!(TNi$(kWA>(6X{J`t;LJ(<h&NlJSG%d*l~oz`g+c30V#t!=Mb<o?<z~z7XTsW!KSTu
+Oa{S^uW4#jXK6Wu47<*#y08MyaZ(bmgBFHBS)4dBqS7I`GK;&62|>QKl<pSx1bJFaHDy7c@*jdMf3Ra
+<C%`Id-rZu9*}qB74t|gS8{%!d|38yoP&BD<^|RVtkbMMLq0gy=hvIn=gN&QpdR?#?G&Ej!-qfl%rno
+hc at T_S)Mc8VpHHVxpH6%A>P7qZ?Mp$oX1pLDST~$MltKQQ%Yq-4DVa95t%ugkrk at nYK>y5j4D6rZTog
++;J~5Ymd2j=*zj*OD<o9jQKdf4{iWU_W{l0SLO1gCE(u;TBeK*a_%w*{f<4RVRPzJ0QC at 1oUax|9(=O
+C~j#&VB+G}aZIkHB#x+M$kwd55yJ at B{HLe~oGMXXk$~Fx1_(X0!R5haZ0UI`TPV#timhot9<j*RLO)K
+Yu>U2kbNCxgA*!<QMsu=X`N&fDr2g))A}^&Fee%+0J7R96yskIsb-r3(G&0rT?$Ja}SQHy5smlq+vSK
+k$>!DI_+d9;~&g0K&%~_v3VgV31yg6hcpzZEO8})JRl(uXb9oa2802$THfaFE at EPL_l6XKYI)fdsqNT
+QkV&m=Q);IXi=d#*sKe>+bM~I)X3dM3PXF=DoSfX<d++(3-}#;2>wE6q!20#;FR)H$&YY?0>gx17Fb3
+$q|Ni?`QBjfpoH<|&rZNT-_Y#ZYUnBR>NsA0IHn(iyQ*plNk|*!J`|c at 6jvU!R3^5$~kxeSHM828Npo
+^SyO-+qnztg5oQ at OdhYSN@hdLH<mYZAxNmu#7}VOrz}eSln{kC{7 at -w>LB+lGo?X!>Q`+onvJk|sRd#
+Ckq);)EUp{2^~B>qC#h=kuvqvu0`8I(YD)rXOCzbN+{J)&cs5&+$!>AAD`r0c(IY!F|!eLi<g*&!&`=
+lw6tjV0(Lew<m`ABoCE-`gQw1hOboOMd*>aRpMK)t5~lGnQtZXrey#d1&_@&CZC8Ng{SEMwzf7EjYhQ
+%v~62o2d{-s-J;tTh>ffh+FzE>8a*-GW2pFz_TTV-(EqX?w{y&TqlFgcn>8zPs(p#_@^Y<PWvy%bhOR
+-rjU2KLSeMKRa>5*-limIh|8rmFi21;t%XoRi1$uML5NVIo at 0L}!47+6;+87ry#9C-<Y*eDNw4HVrXf
+u^-&@<>F3i3ltM1^+7)zs8Pj?o%Ddi3qm9;e^<|HAK0jKS!|zQzH+(LrLnb)0}qVQc%y>1+C#8{<QO>
+mc{Y5<F)O?PfFo?eo1C{cib3M<m+V#IewlW1l~NzS^~GmzHlg-%aH_WC>a47#jfX1|Jc>_Q2<$UDNN5
+f5rA}M=r5JjKk#n(I4nK?2&sM at b>7 at qiXNoy;`2l8m2OClbgqH;ux7R_<`um=aQ0=J`e42`rUTX?Zdc
+zn}OzpYFU=Po^f$LV}o8~3*E_B4DI5d9vY^+e};Z&k at cnJU+niL6Mqdf7L)Td_#Jb at XUv1a<d`#b5m*
+8k6k~yQ>0>y0W<dJg`5zNY4KyeC_xL{?gUeBoE!wkZ&uYC34_L3rJM^;-L>>>0Anlrdcm7lKL_Gh)7_
+goAFX%ty0DFY(gvZ33 at Sb@v`CaCLV{|^c7Ck00g~l~x%p*;^rXSfINY49{cegI$dy}_-&x{dS7dg5qK
+0>$56?XM&BTPGm*Jpn9e_ZK<eGen at I$qTv#^uziRiAp2)y<q$tGYa%oNKXG{u|*o$!SM9t!ISVQ3>~V
+_1oaIr$>VRbxx~d?I@>Ba at u64z0+w^oi at j5*Ey|<wWDZzKeyxc45P5WC)ufEJOlWO<ol%lR_aFy at gm0
+{Dv9~P{tA7ii0_*&Hh-qy at Bg0o`_o0|vkjYVXZYNAd0cYJz5mjq)XGar<z0+nY~+H$6u$XurRKk;)Wr
+`pEd$ZOSie4I%$RRWY`0w2bPxJWe9jL=- at YSy>EEK4-W2~lD8B6y at qu}U;U1}J;%{7C{B{f{BNqzJ_Z
+=sfd*QlLe|TT1oOa#+djs_U4bkBt>9fa;r<=VdCV%eu{5Pdu7oB at v^yZ7)7|ayB5u6Krg`7CK*f(w{)
+$zfQu-;Vk^o9)^d`~^~R3S9rI}tx%AJOaBB6KyrEPe{#@jqo=_bt2-j0e1voHqClIe9R)!TKi#kQlT=
+;)Nw9z9-J5U;JozVqzZrCU*fZ`@z3rcpq5Vk!yXWE_#)#3G$%(ckg{j-17iWuwPgH`KEeqW1-GtZg+B
+ki>@g3$mJMr`tYR~?rZiBxaARi2%Irf+BbU3WGXgA;#Z&exrOe17|cIDFtlKQUfNTxb716y$;q4ksXx
+3N!#%;<v^;jkur at Fr<PnSttP`AY?(g)a=S=_Daf$aU)~;Q<#Eo|wf0h>CI$A$X=Mu^1l1Fs+5B3Uv{Q
+U%Z%ylptus$#*<Z;4 at n0_$*<Nvs^(nS0nS}3g!J`q|O%g5fhdReW1zc&rYV_||k<~W$?y^cI4;B>lwi
+IaSL_UtKi(?Q?JIV}aejhrg at 0y*KMyOs@#8D9QasVbo*>yI(4jWq$@>FyuDV)g3P73<cmTjIuEp at F;!
+yr7U at 2WyHrcpo?u`B3B$j0tRGqk}Ki702q&Hk4`_v^;j)!oCyxPsD-~F<|EZOk<A5yTFRbX_6Z^@<?7
+Bd<ASmV_Z)EYae}3_cg;Mk6FL(J^%P*TefWR?ccw at khMs>kAKd%p#>h$z8)&oxFL8IdDWjgx$PzgUtm
+pukAM|6_@~EtKymA6uv at qMv$oc(SyLhUe~G~dhzp4A;0d}1Ufk&ZlX~^11sW$HKi%r&*AKeZ1US=H2P
+a$S&_L1hDE-ct`qqDXuYVJtu at 3S1-8hRIyMs@IVMga)wl&5AR<}uLsCTeNSNV+oqyMd2xB8xW=9xmUA
+^dUZFmbinHwYc at 0)51H6!6>Vnp<n4FL`vyTA%tKAG at xuuA;HAu^c|^*s(+FJ at hWN5B-lUzz<}RzTKG9
+dzUV#E0-?Hnn;kxvZ-;bY at q(JDdaiG>B3{;D_M*2TzVoFX6A;u_{|dq>e|~E)YX4nyd{q-Zpq`m`nh!
+9r~Q}vk2d`m78d?JCnrbeUBRYHOH0+`k3X*CJ7_Yx!01Zm2i{!oep9^`SgL-xajM=6VB|5l`a#w9^fL
+AC+ixk=kN=aMoqca^ZtiNvQD0wQxoFX%SJKnd)zYO)bsl*8_U$@%VPYS6P7D9d-bVP5Xp<@2Q_g!`WN
+SeGZ{oy>b7bA?I1pP8E(5kCewLayZ=N1^f4SzwxiNO!?5&jBv+sG}2mFQq^ez6!Ww1o@#`*dAI{yj{%
+a<?Ld`BM`jKs)*$srqg5IgZ{Sy|a)k>zUfk$AA1n18UCDivM{?{}7zl$-_QAxA%F&K$*DfUk*Nj^hRJ
+-N>QYBVt;yRUZpKe<b&6lKA|JC-%t3U?tV$__+tZ9sDMjiwu%W2iIVIxN!vL0KLF<&;l>e+vrT_Jay{
+S4$sgq3cdcfZQJGx1OkO7=4PIuVe#U{YQlsGYWD2enl_X7Gx!kaAvZ=}urIN#t&O*V-8F>1b^r8<{@J
+*3;}Y&iP9B?&&H-Ckuwa44m{}K`OMwR_$BVxVrh?xtW7vNieaHJx%wf5664;}vsw%A;*sE&tip&?hX5
+8rH^XJbWy3M|I|MVleM(h8+=rBI;;lqd3fddD0t{B}&&dFek!|Yr4Pd~=~B1??d_~5KPgG)jKG6u#${
+^{7UV`iV=aQlvre<(Rn^bER>d2VfOMgFb`FSdAM`IF%mo;4Xa%*y&2OuzM8K22 at N=^EAR*<0#h&+NLN
+-Hl)8iPgmSuiVCSyWW236nmK3-*+O9)0&!^js%0jk3>hk_w2LJK6&WSp<a3?91dTVdsIIE{PX&AIp>a
+0D3otm*2zdDqUY1tFy>j-^hNje;Av;hoFUKpiQJ=0<nIRSkk}Y`jY<si at SkJ*pmM~&-gimg>X^BnbCG
+F$IOETlHH9vF<egZ|gn#<FxHaE;rI&x~!3NV8Yt6(&ZeP%MB^Co8``|NX_(Q2j(M_x)Xf at Awbo}a|dZ
+IGs8x}jU6Y(SQE3pExO1i{KdxS2qR$_8!NB-%zr9NN#IM*cx+jk>&4`Oj*FJeF9KH|;{i97LO at Ts61y
++t90!C(Bv)64Ze+~wU*VmTf12*hmgk9oodnLVg4{p11dZ{hFZ>)~tS>k at B-_ixenAm+#uI+(w?bLVQD
+8yyB8y4nNkXhW8cC-L3!+ld>9o!0ti=sq6)n^Mifmwo&8X at 8JCBH(JwCGwK!i+7x9)qell;<(SvU|)c
+LVi&aD0+VC^fU%{N!}Zzfa at TpyPhzMam+Jm+nE6Nc(DleEbNSFi4{4sFr<u#Yz8q9-8)oSJp9gBct6q
+KaIj(=fTz~T9N$snd{W$1td at kk#ed?x#|FPw6`R9By|7K4T_rgxnKlX??fqSEu#rCgrUyq)KZtepwz=
+{|XHk*7B*Ai!AyW88_dtFPZPYzEVC)JbWRL=m_oRjR-JNbN+C)wlmj?-^@;*D#g_=OC8#QWAp%XhIi2
+k^GFBoDum!4dCTyTg;79 at 9>|X>E*irdPjb?Mu#?Uj3G}WKX8Ay4qj9sBE>jw!EyOIxDTFs^Y%t;u3$k
+uX<v6X>nC$b>(9#CKgwg-{-3?pS1FxG;g`DqVzF;wfT+Bth9S3rKe?o<;z}g=8CGCYW-`RL%iF)vFqf
+ at YJYJ}Rq2Y=&ar$_<zHSSz4#w3s487qTIOHuua1A|{`!Ghxs+enoaJBXFY}i1H!ICoonNuCa;d*6&0A
+ACwV0n_%u0LAS61y$%g&tK&&9VopWJ`%nUj0bnmIW>XgSWDZ1|a7FtuRn^y&GtXA~7V|9o*ga>x8;H%
+V<P*c at yP9uIZ|JA>ZP_)tl>HoQ5!JKP*T9zGZD40nfn!eb*Tk at 1m?NM58UQWB|+Y>w=XG)Im{JYMHTj
+n+8pT60gcr)6x5w`F`wdP_!2ZcAQEK}%7~!j_U2E7BT09z7jB7ww34M!TZj(QDD3sK*{_kF!&3uRY#Q
+w=?WqJI^k#i|mDViM`COwHxfs_D*}ZZQ0Fst9{%)ZJ)C{>`uGO?zXSlJ+?=`Sklt{r&wNVyp?WcSh-f
+7RbUla3#}4snN at 2wSevb#)^0KT%~q>*+&XQYvpTF!tIO)Pu30^nConcJE|3!N2F3@{0~vwbKwh9AP!w
+1gC<$~1dIBlIj9^i4x8~95;5p$_SFk7O35^Yn3#EkMSb8WUlpD$m6@?atN<zy*wV{U4=FrYif8NU%<%
+{zFFaHHlO9KQH0000800{-FNM at 4%C#X3906 at zC02=@R0B~t=FJE?LZe(wAFJx(RbZlv2FLiWjY%Xwl<
+$Zg9+_tgk|N0b+RUdNY6)ihWd#jVR>nKXCQ`^#!<h19kREAn|wT!srhUDszM?d?W2LR$lNlx2)?)}~U
+CGsu_3<iV2U}i8FY;J4 at d-dwBDJ~aX5bceEmpd<BZo{A71*eNVIJ)Z=brqb{^X?{X^5C0#U1e!k)Kv^
+MPx3r?cd)nr;bcGVZo43 at vS9D<!|CzCS07Igk5BL+l-nqltGeleS)Jvxc4OYuOZZ-v`3wQIfq0$eKdk
+e<Y}MtrU0GbHC+#&?y)5esS*M^MX&ba%me3Dbyr|{3 at 7ubP-^=>)vZyZQ&$^Z0R(Hv)UapE#VbG{=?P
+A>(rTSIRuJTU(YWo-Ki&az4@>T(D at 6^{WZRQ&AE?=(9-?!aOldd*4y5??oBY=;5vuN@(L!9&5S-$Fm1
+A4ySG<9PX%+|~0U80I3QTn<PSh37En2NEi_jS=CnfD1gjE8uQ)JQv7C~CU~;3VDMDsRVxE`1*h;*5hP
+y-A8{weH5j36(uK920uZXO_+ud4jDZZM|-00A$^i^(wFE%lCBwUlv`r0<6Zt?XqlEGyLj@)<Ut4QF(i
+Mdh`}}u*@6&aUy;pExt<ITz at tI4vX#8)x5Y|H)&S`pzE|OfVZ-|g08`<E-fl-U`C}@Y10k@`*{40#%U
+ZZ({8p%7IoWI=@L-g%bTv47qhg>MT!3|R^I?a3_zN<Fm+)1j5aoqg`rCm$;<I&-o2w|QIa6^B!N<!Fg
+=f9LKRKE1k3}(6S)F`1oOHHuw?KosA<g861xLq41Mcb{V@!5lePpdk1yjOoY!^mY7)GNUyg$>gO~A6F
+uh0t|BLj;^N`A++-UO4{1!&K3feqh25E3nbipDmnmgc_I=IP$i*-?E0X$u=f_e>8aUQhGw8YU`6*<fz
+fONAcW{Uvj&N8ji%RId(bCf3=dx!7ezX1|7;aR&ihW|r;lpOEl(>xY)IijaPj)SlFKb%s9=<Md_X}o<
+tdKPZ%|Mm3vO`^Zs`gs at soZUPd?fx7BA^7F9ARL7o-|iou9PRHxQTY_w-+CQxY#i^uJ3NBtVKn{n)#S
+6kpHD_V!#5y^qR6~xS`;e4=t0r;1l|scd5~VT#9lW=Sq2w5NQ<kyLaq(}K0%^>_2zg#0m*s-_#S*XJ%
+Og8FhcyeWyECk8t6dJB%X*hJz#RdPyFR&Fb#|k%4jPDB7S{vyuWt}H2#LViZl4EeHOhw`Z5DHo4<;;M
+kCSV{i0jINWvdr3>ZJ1yXt}GMTJ}nbXepq4*!PLVIX#d$U%Fv7q1XShb(|Ajhcq3(_il5+305i^l}go
+6dGZ#nMvLqoFI?r93$wdsB66gnsMC|X4I*`J-?+UHLz;*&VXT#_y6-FVE>+Z5=I%xTR|0#8MRRoEj;6
+?FnWy?@(i-ox6$k0K-aXUoQb2o6Vl{kn`c2+2QAKOSXt`z<$?xM8$&2aoTTOyp<l0FS*$8Zab3N#IW5
+!yc(79M0IMvYlU&P_rk8Y4JKEi#?&E8ajY*GRv>fd!%47g~8DBy_R#`FYqLF&j<lVZdf@~VrtMGh`U#
+_e0oS`;(yDmGZ`=PFKda{HcCMjbQ_kann&+}mUm}W^LPq4KNTa%9weSSQ95uW4h!LKj163{?ZcT^GQV
+R*i43_q-?I=cAD%QiO)Z3b9(h7xL?!z7&L#%qCu0i=iBw;ZFMu+lmuaKrk$kAldfg{%`A&zsgm8 at C_O
+9zvMzoKw3XQ^GG_eKrYq9kC}6KnV++hrdifT}}!B4X)0S at w})qd>dh%k*`xzhwW&|T_QRX?z!8$@M#-
+FPuo!#JPjh&6GHeeMvW+%;@hV!z5~bv5B~*-*wFdNAvw at 0zqNURm-C0&L6wusYD{`oB!KF3MN9{!84>
+0aMqd*R6Z}3FfG7OVfU+YYt2sSsT2vcQSDdt at Bu?P}k(iG(Ss9NF779pyct91}B+J{bjr!kBUBgn_tj
+oL=;^4`XC*Q!J23WGFQnpHv!m3h$%6bdsOwj_%c>-GUBDw&zaU9 at RO~P!#I5eQs6h8t0w2c^7_#TurP
+gZ%h{d~L4L5P7Om{EOI8$kkH at t?TKS7kcOqq>c;Obk_kF`kG0IN)O_O>ZAAowlH~c3ipz)1+%}3egKk
+3}T^anOFRF_dI6YBLXPNq0wy;{PYVwMFKKi+Vy;1+>WUnaxBrlr_%~VM{x at kCBnq;_JEnlA#l)|5~31
+LE42M0hBPvH8H<sbXf+_KOZ?2KEE^!gss<#ikt<Imz6r7lv}N#z-5Cja<bZ+M%VcV4j_x8G!7Qk+b6R
+X+HZ*rw2sGy#n4zF$<=$DOk4e0$SCN6=n1H*jyON;q9(Tp=Sx?2`KFRvju?e9z%%pLn at z+B=n;N}3Cv
+8Er^9-S(x*;&trG*Yc$c&;&uJh_T5+e%~UZic>bxj0TJYWWvG{7PL3XM5_T{PV~g$Z&UAb{2tji=3;$
+H=7aW^lBB6#RDQi=leZa4hD=XGC=k9VEF#XRMXHUnu6c`E1>x8HN31!z4+L{_ETQ58o#5-hBM9_jdm{
+NrEf|1prwvU9n1D-hnIwi?c%0v&!=<&tSmOMw=~Cc-W$5i2T`h>x-aF*VPR5|7A|PVoI)%xNkj3%bWD
+B4OTU4jYe%))ecXBzrs@<2kKmzb}%DB)q-U*OPiab3Q43!p$Gqv>pu8_X$|ZL#4nn<B7)dMpuL}ZTRP
+`TJhE<mv)f$292}##oD8^b%wU8gv%b<NNwooc9%MHRRK)c)w~WT13bu41h|<H1LQbqa17QkUH_EEAtZ
+(uxfsw{_I7fd)!Y?N%MNqEKQ>ahBMAIu=jHnF#1WO)99VbGM87>vdYZR at twal!m^_iDZ(VQu#NIm2id
+M#V)#4!QoFvc!5kttwMcSN2rI_yfr3lIfYc14{kZj}{jce7nk;La*m;-Z;J%CYFOF)lMPB&06Qy5!<6
+xytV%n0xR~+lwlV7w`oL1kGKiF$2B?RPZ06(2Yz6)Rt~2gv7wIyE;Y1^UUleLzu$LbJElCi;u&wH|Uf
+EQG|}g79ERuy6n4x9DkiREr at 2|jCqZk{HsauxuI48dy>St07*hzA267nx9BHe!ais8kzuPa<l(xTZ~w
+1wBpcpfkf*S!b|~S}4E-+uadP-!9L#|e&}nv&&aO}_mHA~lyF==LfybIp+NH=+1S`fS1Vt4B(is|IQG
+Tafy!iQEfIu&GjLjQ}8G}PbQ33Dr3hC2^=hJXS9{O026Q8KBhO$H!=a}?|A}41H!;QfpS+<d-&=3QRg
+KI1&s`v|1Uxn>55%x)hH9fiosV)<-5Fw5UJ&IbltWZ#ew$sw&cT7bI6p))<A=^=LTYuH$tni>KSNE>P
+FQA0vSJBQm*ctVDK5;9*k7lcJU@)v;TB$1F`;aQ2Iucs6nyq5>&KYG_^Ag49D^+%b9}`>m&gYo@)kpL
+r^03%I4|I|k at ZJ|K`if6 at f95UC8*RTqqt~pgVUg-PA$VEtX2hT-pi8D_{l2b$YTSqJLy`*U)ru{p$XN
+iTWRm=^07xKguwJL-Iv2p0-=W^fU1<z<*Q%PF{8)~E6t{2E>o_Y&hi>z7?zDvy0g*B1f^Ut#X`pvX28
+(|!-u_n#V`_gu7(a@^4FSdIy8;Tt`r+4yprYm=zo|4<qYWJ%u3qVe at lG>fJ7%Eh%Ct1a$W*~~%=K(Bh
+#CM551W$8dh^OkF3I}3Ifh>AOYqyS;5NPX*l5+!X87g2OfNlZjAY~K)ApPIx4OGYt2#2_(lqN(#&a3w
+{#K4%Ohem?tc^eRTe-3L%DXuYaU$-7W<?_j+GQj^cy}~jUS;^*C)DnWyv(3Da|0N2WvRX8UCFpv0vdV
+LWupi2m at N>COrSBl$ygl+UWM;I1mLBtV<P3pNEHWgk01;0GAFoUTZ48Cd|6jnJ9+ViL=Yz2M3h1#h3Y
+HId+-%yTc at mm{it3H0s(xmSF;ji8Sn6BsMxMRuH8lT#rH6;1m at Vg1f)sPB}s&04D>887qtn64`Y0WRt
+x;o&u4PVz(R{t5iLL7?nJIll4YH(OZ6+OXYkdK1q4~x(9|q`9V@#UTawSnkkNF2Bta1_(S`1egIU??_
+Kuiw at X9~;g%CExHZL}lzQ0JQei)c)agqqEp?zvu6^|tWoW*Ao3c_35U`UdwTLBk{2U-^hQz>3EfJ<O4
+=-BOpe-KvhK|SUQp?njf9-Z>82Dt!ebMvNdNR>uwA005)IlETxTA1iDQyje#>~?E;dmk&HGY5 at 7uoYP
+!?`jwmbTXuuDX_zuwzp|NYTcmAf(MT_HEIyv!pmAWaS(hU2L>!yvvl1u0*EGQ#pH&7uB?J~))b%`rNY
+4`To&zm1t>vnDEqMjQQvlV=ubo37Abn^XeAWH;w>|TS=O_(<f)6VDqLouAaHb!+u^vW1{U5Lr(1wXL7
+k<<N25>>9H&Jq7Orn`a7Z&l3RQKrjTmhg?IPgfE%Kx`A~|o%vdcH98&&~f@(1Yuh0$tZ{w`uUq*4t4*
+#+by-^=rG*Jcq3UUyE&XAc&ZzfrSr;A2m<PDW3ND?(fdfnL}S>KqqsU9P+Q39Mm?D;@CLFMbt#pbe7-
+Dw++jmjiyb!tIWag;A|sm+baH(Z6nh6?uyrs%XA%{28- at H&O*hHZ5C+kgDv4`LOqIZ&AfwDr0!b;fi;
+k9u&!0bC)#hYVu85wz(~v#Y;5w`J4F~tkZRqXCzzn4NiK=&A_az8(dcV_Vwpj(r%Pr0Z>B8S}bsaB&d
+0SY3y$oDAgu2P)a%tGtJ0D;7O{02r^hZI;ax&xL9U^g9vJr5qrc{LsgD`Ck8H~pI|nEDASsOsdt)#u!
+QDt`ty4-46rszQz54afRLK_ITjmCU4vE(Onoi^6aN;>2KJr-m?a7w=mR@;Vc{(1DA5qE0u^$ru$qE&8
+2}~A1X-Q8RoHnjnd4w#{fioA5!E%T7A<!LmkH2*u(i8-jeceYi~1|uk68c)N3aH at 82^N9%`#BO5;3CL
+LrrRkeW*LJ9(4<BTkN%9Q4rX7AcSWa`IYao)D0xd$fZHbE*^5!oOoel*)MzY1iJDh)(2GQA#6-eRVHV
+|cw1Hl3n)84FM2{dOySeU?j}emN6q(qWYZuyX)PCRJ3Gi0iVm9+iY$0&i^C(LV5R9KeE5+pQC|#RsaF
+D~deu*qS-rXwo)VfYV1ClR6)2nhg{-;>Hf+uu3}=OvjA#Tl?+PtC&<sFQZKKRW=7U9d2CFI>H~ulw#8
+`qlyQBnsM=>7>Bs7w7R9=imaugy8*ydBRi(xr&(06F9%T<%Y%l6V2CxOmtq=0MK at q$hG7HwHnR|;MK&
+K@^_rXX(kfab8oN at x;_dQPpp)Y=f-A=@AV>)cbcG>V^u1FAAjez`8wh6Zv784RsyFFkv)_R5a%p9P_a
+D7>lHC8~b`EV_*l*4AdDFd&f&3H`zG)7Arh`B3Fdh8Auu$<q8&W9qz`)fljAn-;=DWYU#5(~HkP&bq>
+9V{ovA?I-Xs`69Sy!>$nkt2{**4IC+|gf|z~@c2C?It1ZsvH^t}jpY{;v|%(4umfmMkwFjJn~NXEcy`
+cq{HKp*CidT5Knsl_C2^?7<c77?r+Zj}RFqE`O;U)7u-qIC4_bS3x36>I53*dq{(f4z5_gg|HN9Qzhw
+}fz&c=jW9w`(*wfCT*qEAD1`=USx?J{kz#;loGj)ykp_(71OtGX?2L)4 at q{qgtdb;>q0JWZ_9mR!cO9
+UTXp^qcmG0)V`s at OQDFgy6uYFS8MtpcV+={@#2Ia3v-^Gd5=lpo!5JT*|we4G)g|=pyV1MI at l4LF!>#
+`P23Z(Ckx!U8v at S$VY0*oHZ1D`ZJMX6#N^F#jnDKL~4yVjp?aB%!M3=@H$eZs90-+aU=rMGF at I|uyzB
+?-2kn1!8<$k7hila4tDC_!-t5V_)D83URy^5``F5&8Q~*LY#D25n18k+AQT0w8SYbGO*5MGA{ijBVZ(
+N|Tg;yQnfcmW>QJ+1H7yjTz2iZ at Up9zgT3%sO-ui>qqC!@;OMM38#U02%8UL(HKs-UPEPl+{L?5$KD}
+V6zfUQMjVoaSAI6}73XbG?b`oUL#&NicCX}CfzJN)sWX29Awhyg0a2C@#!D-*~uLY?%_;H*e5MQ{E4#
+)ETzAU0ADuezr(6)h=45zRQ?{+OAHY1g_sR*=SIQH`k1rch at oTI8Wc#G=29ccTC}d+M{-DI0WkJUnp?
+Q$tMxj|o6#$iQd{{>t);^<@+uBT{6rDc3FT;RIl?D>m~+O+GwTiEPHk&>*mT=dCCsBSW2O?608)&6x4
+R^XDSsXHeI+8z3sRh9(u+a-YEdREcb^#|{+7rH^s(`3DE5Zine10Dbbn7#_I?M#l8s8K|haQ*Z%_q4Z
+816`^4IDcKc_bl?Jm6KQz18PK74I>W=JLV&>Uza)o$c8TVOt8qxDwwfBcv5l83&9dz=;c!Y6s%;p?+z
+3OE^aL at uEIQlct2<-%sDyCQf?gpaPR9W|ndZ`a3%ocMt*E-9tl!HcB)!H`?jX8+F?MIMDU>Y__XGWJ>
+axWBESmxkP8y{+m%uNPi>H6xw76_OAUgV)Xz9&#P6(9w1-VdCKCYNAR~-fj-;8BE(JF5i>52|fSk;qc
+b;tTgf+waCnpL97G2{fj+ah$BOJOW>o;GsN3=E5+5j<u>pu)H}j at xgMGgxEU0Q(Ldnv$y*D|qa?l7nx
+6I{3|_U<xWz!F$yU0csLpSh1o=c<!y!X7<?yREH75bmx4~dT5rU+j}rnFEgoOi1D1KMai63ZPTFM%h@
+8Bv#m?u6S4iy(I8n39GE4V3`0*{UxK9b9ca$<NTW175K+_O)l{p+#4(pHu8<^rPCZF<Jk&0lhK}ogQd
+1pjdKy^KR_R2CA$R%WaO6Uf;RFC}%$4c%#g1nGBbTkjao5gbGY5{0?Oyo<ws~uBpCX|4DYopPojo2Q8
+9yYC=5VBs<wg-F5-W4h174^TJ5~@Ay%Zr(69L<NN$p@<2mZ at a@Q+rwh(erV4{W*E6M)!GLuafvZv<~N
+`Kl59cOiveYSarvT;DD!HLo}>N|Iu%cmCe9Yu=BB-B=@rfoc9jA7z4D_3nb8g?dwou|D|D=8RVrag{$
++Fw(|-!YJ at BQ0WIcY%qkZBYr<nOLB^=C4N6pOR$ivB#78|#aU*PWRbQDSZ^kMObtJQ3AF#=^!UG=gT_
+r5($Qt?`zuNrupK`;A3gI6+aNe=w<hvzIxLE)9b&a-qiDK&7N6s{t$XT5>U22u<`tBWCRpipgxL-Hp8
+$o<iH}|n00X>nfs4Q0KmO|QWPhZe{m}zZ*%>#ZBT#~C&}%NK5x20^;t^(}oRp`?hf9wHH7sr1jh%)h>
+2)Az=!fU-^GEG`h6fc#Z<-)oQ^iLa+%J6^czR^chsPYyrf8aetriL|p34 at 4Z=ByQ`B)?^9kY5}!P2oC
+8a@(PW)kd}bTGxV05X2)^llIFvq|t`XnX9RO5OV at d~bK;a;norE)zgf`f8qb=eORCq<@I({zqveyF9(
+`c)KbzmnZEt2RiL%3u2DL(YZT8bv at xeJ;1AKsC){ft6tFYG^(Y$8Kr$Cq5;wUFCs<xKr at EH5#>nLW-7
+BkvW<fSj(6!jKN#LX;8cji7!SS{Dl8+$v=kh6!7K$z#C3sI;#{Q}X*GzvYHNqc(0v)k0+CQ0tSvB at MS
+&8*BZpP+m!it*8?Zc~*t^5MH}BpY9ew at g^bH~e at QSLB6A_07mz3589#jmMn{V6ok|P5tX1>Rcw^L*i7
+z%?V<GZIw%_I_McO+s*hbISr<=VAE(}yJ`24GAHEethm!ZujcLdEM_+7=;|cmncv1)#BL6#hLN!K(*w
+Bv3k@^x#xIKvce8x1BZI`ao2E*l8=Yr7mxlMDX+i%v6d}qOCd(ECoTW_M7<mci%CGeD|Fb-Z&JqucTC
+um#m`it5qHEs)ahSL-TN{XR+)paU||_+O$#l8;TMILl<`tL*MGO8N4Cx3257nx?O|eCWic>R at 4w~Fsv
+J5fFLC2ZAe at Ed72@Uh3p^zWkN>DLfM<N!U-cPOJfnWusm#K%#9cYFx>SxPt#2-j-dA4TDP>rsJpeK;o
+~^AgaX1<Oz|i at ls9Qp0qaKL*NSgM)Y`>bMSDpv-Y$DD^;5AX$(?`z-114Ua`X`xhiRS8sDs}GlszM$l
+$l4Ve0YDX2m%NQmUB9a<YS at JI35RvYP#3>2gs#3WZ<xcmz+XoDj~kE80=Wc3Wt)uxK!B<WvGcnKHVbe
+YO%Vgy##Yr+2g3{0E4AP*e@$zKq*a*vH-vpV9nVfQeI*-Ih2-{H88+piA69dQX~!9j157bR(BvdKsEX
+9J1LT~27}gti9`kiC11kr?d?#C7l88y>ee%kMxW8v?|0vEBsBu_*4L}UgP5=mxj4GNs!VR5ONyYA!QK
+}o3?uKxZSN8>72ZtcV}QPn1L_KwrNh{Iwgyhrpx(<Jrr;SAeHKWZ<-uj%X`-<5NIS4huFV)D&uMcF1E
+w9ryyX-QdMoXQp7jal1|BagfYqZa?|>@>5EOGlSzp0od&6<VN at +$N at sA{+xt8Ya5!w(xN7n~^kxJDcf
+iy1+K?Ky2d*8m at NF5Q=Q{t+2vg}yLnQQeLvT9!t#H}Qe*AzC9l`>gl#DY9%rLPeDVyAxjl7Xv7_oNCC
+dm-YWd5gI_(I)|4>;{w+Ec8LZ*;#-P;1kBMqG8ajR$XHh&E+wCwB2aZ^mpK=-=z=^*uptzX?5`E`0zh
+4iQI=b at As28AHGg7P1(WW2h&jyM$>fr$DQpzB<If}%qxgLlXLZO3oQ2S$65(Ju=v^b`Lhw5@&}`hqyI
+X6d-%bRK@)DT?xM5oEPj2Ky{43Pe1Z&lCXr`bBKd{#44 at N)T%<nLeV>yJ$P=-A{1d8iDp>J5pe&)OIy
+)0YRUN34>B6Tai~t7^d_~1YQC_y}Iuf|7m2AzVhICa(Ongb#Bp6}WN7^J-9hj)E)7>TS{71ruD&_{!N
+ZZ3be$`~~D&Rf;zR(Dymu7k|dC)j99DK>!S-Q%d8cle15sm}1FK&PEQ&E3Fgj!iF`h*{<JJop)a#|5$
+=VBaW|9ZXL)PafK12aMN<}t|jPIff{WA**>k&cWt4ME|>bR59W>5NZk(GW<j6joJ{l_4VquPm<e;K}I
+?{D75puWs at u8-%yO+2iR`e!l71O%UU}qlBXO&QvWICE)#P`nR)ogcV1aS5aG{=(ruQOCq>GT3M6rO at Q
+$TMRyl0bC_Qlt0SP!;E4~#Y}TY>5h%2oZ}1uAW=(@5Hd)(k^k1<5T$I|y({IaQwF at n(L+&Z1vf!Mq(T
+jLz#J%3-A=o8F$-#k6^>ynNref85f}CPeS}@3J&~Z5AYbncZ#0)5b%|Dk-bH8_kv+!wq7E;g_gZBIE`
+aF*8uahnlnf!$_JA(atu6s!_F<peo=kk_z3)5?`b13_cwXXGtj8tjywEqoKZYp- at 6dX~g|E(25m0~O8
+>>L7yt`~_%a&I==a(AG9p7brLg|-=hh!dY|*zM3aUnw4~(Q{N_1wASXDq3ssx<V_FNYPARSm94lUA-4
+-lR|bdFi4pnYfyh at Ws0$dG)%i9a!-PELKjq9D%;6WK!v2J3(D(VZT^YaH$L&LQ{EJalwB9sS#)xN%t$
+Hc2A<#Lgu)<7FheqJCkci|6|qdPT!d*8EjAW;FbpeqQ)c82mXsJ?n)(=qvBr$;6-cNiXM+n9Zj806nr
+Ig3<BPThfwTGI^WXj9cX9AdamzzOW at N4H|8EL263n%A+kse<O#};0+8yiMj+Ti)Gg9dw at w1?eC6rzYN
+^#&~|8|C*7De#nJf3-gA+NgaQ&1^G$Ime942Dnf_%EBk&oO6@&HrYQ)W<5n#S=(*Mz{c_*e=EVLUKY1
+2gIzqkLfsjQE*>EBW%D5))4tvxTHu=6pJ)qvYuI^Pc|g;5w%wAzQH_w)*^1hNGhWwI<6U7e*}s0Uf_Q
+N{M9del4Uua43g_<D~JT+JPvZNL1J<``KJ?3Pa9$~`F8jD^P8I+AVRjC!Bj^D;Q8uqRXi6uSPQ16ZZe
+TxMw3Q6=Pm#~ZJ)z`qEJk1AQQo0a<Mg->a at P}Y7tiy>FuKdT&aH}b9xR;;vtiakf)=Od5^qOzP-KR(%
+Vnl2RhP2`IS8)WQY1ALmBqaeP9ML^tuukDVCsopl4mk3anwJYi0jq&OB9;!=^t<FAm2utD at r6E=Vkc6
+4IoU>IyU;++(2DFv}*z$+GsPwNX>{O(pLNj&+;K!)2t&UEJ|DwTOPf{CU_SqH?py^HMzTRVmhI+^`MK
+zN+Ss9>;b7<qDAeEh=h(w3W3puR{4l5UkXhn<9t_M^p(~ifEt<v0bAd+0fhlhy2G3;PF0W{8;Bw*_Uh
+)20yxk)=V1<5Y(X#dZW&D{2LvT7~ziTj#r|4oXV_+N=L$~DXxK7p`EIhf)+$JU)w3CCw!y_R8<QJVFw
+U8Mzw<)c9vT+T9RC(NJ`17GQqCTNh+p=aF6-`YKa>x|E!3JSGdkfu*C0;<ir9GwFjh>k?H1cC~b6BVq
+ZnZ-znnS3G6C6WKNX?TiDuq^&a_iL#?42?YEc*Tj#z=OZ;dtlvaEAG0xC3Cl5k0gVt?m!&&V-B#qgPY
+yc4>td;5m%P>>P`{EYpHz1Pf(0ofGIasYPU|bf at +w}z|Pq~ni)^b_f!p#mlOH}<vBx+OjP%Y+3kYCf*
+YF~6LJmj7u;p+RFEJO2I)!{796$5hxCOy{7V32ElVXJHplq+bBh<)A+HTDQiX^av<zdvpZ!)&<E)j*A
+*gb}m_)5K|-`@I|dWx)w?aGuj6<W`ua^tE$vN~@uUNp{mI;JyOItIADviv-5ed8i`eruBi;MKE_to*9
+EO)^RX+GNm$<OBA)_Xxf81zfVtYf1toa1;Do41g)H&w?D|4(Kqy%0~xAbna?|;uHsoC1P0i4fK!h-<@
+f&-vr1|4uNq?KfPVO)*04ZzpW<Z*%*be246Kx`UXr7ZsX^0eKS*zqfoXq1gJO1F8ks{dJObQ(GLm`Y%
+7k(6N=um$9paLyD!3;a87cxx29v?I(&iGB&8 at Ag8~irV>m#lTY{m%pmlWU~1vukt5r*4}=d98eTFAYQ
+<9$r2NFwlc#TekpMKQKPT#p0~*Qn}~x{Z5WGM^TK3tMMGx;R<QFhRJXtNe~O+J0Rt1MQeYD$F=bkI^Q
+aJg8*ztj(?X at hU1Rk(;U<4KTqcstvB4-dpt98eOqsP-#TjC*sN3FY$BEVM<pQ%Uvslo#{srJVTBE><R
+^GkHuJuABxuKDe#Y&pbL|QE1U5OjF!0pffpUJej|1{@j|^#p&*@zjn9WNYB at R%tjn2|hE~q`+06T*0y
+CwRerI})7mVODGMB14AeheyfT1!`RT=(|N6Bqu2n_igtNx^UzjoR6LCR#8dFvzxBl|4N6-zT*Yk}4p6
+e7Gb&cNg1fzaL4PAdj14m&XgNh~r>C>1>mG at tI`qkN+K4&>H^OceYi$Xw2vVViOl$D=ew-a5_71h)MN
+F3~BG$#(eY^Yy@~=e*R}YkGD5m^Qh)|9G1O2ix?h>xd7kJu^Mgr#xzn&X><7^wu{^v~;5pmKpOD81Zr
+WM)%h19nxxv*85t7$bgFW$*4L~S<Y>JD6ob(8gioR#KW>${4a~>Kj(Lzm@!v{ddk}pDM8NL7Hw5j0`I
+y7h%5>}rf%Plx0)=Cy`#cpReF~W>Ysust9)XJsd at 9<EtrxknK}=?x)DPWKJKLt4+Bnb<1y3SI+#fPGm
+4RjvUN%*A+<?L?=x^<QzC1Z at l)etbyd|jmDG8;(!DA~S7){Pq|H5v53!gs_)VyM92pB(;u&c$;hKDI&
+9<O=D*4V+Z<3M4h0t at Fmbfu+N2T3Gd6PV=xUD4hExgjDt?70n3^5jGKH>ke$lVd!WE)x>=%nChW`$7@
+$1z2F;+P0c-cy~ZLfDS^!d%Q#E1jR1gPb>{>|?B48H2A})lib?vk61 at OHFgzk=XgZa?&<+$_-ehxyU~
+02mBCF{CH#-t%yvkXyn!)o}myRmdd_ESv*cEu8a!&(K-0nc1>Mf;thJ0Oz3avP at A}=v-|uxbn~XTDpq
++`q;cI`KF43rPt)f6w0ipT_Y|K7pvpT546k*mmn%?3LEBGM6lgz-t1Q1w=#&m^w at r7nIo4s`VPo2r^$
+ofPEq#rEn2+>XtR7xA>1tuF0R79J5CZkcQr(CSIOD}Bixp)(z?PZc$t|7b>TV^vT^CF`4BDj)SSV^vZ
+hSJuI_P&XD4~-<@Au<M+b at G>li-CVc7U{!AvGPe at 8=$HL4jMKYRNFCo<D7yDvKv-k=l&#CmKQqn5nB%
+^{W^;J7i(6Ce at b}&JjsUznlQuLseL$ywPx%W8!0wd)Ecn$+`cqq{%v}Rlk&RhI3g|k@;|}ekxd=qvzz
++Hpzh_JJdIJuc*>}0&bdVlv0~wr{yk%mf70{CZ~F!rh1^JdJvuL?fv?`^UTmYZgJ<qJopZaa-?>Em;4
+D!2^LYSOP6^?!LH~?0<7%y)y8L{&r6q(9=T>o8Ts+u!KHutftZN-hzfw8Xr5Mk|LMJ~X7C4e4!gDMNg
+~3n^gW`8v&hq~+YGWo-N<zC+WkNJ$6Nz7XojCgnzJN3oG>7I``|S82yrJ>u6|tET at SO`Ns!X7Ct+6bI
+`XIBr_lB?&1RN5{A&!AId3CmBFfzc;!-mV at Era2EBO2Gq|$39)yPZVL3e=%Fo87fc&pSep`&_)XH}>l
+KarPOR~S27P#z;AhKjKJu~<=dZuoQgBmB95KR1gK<E!2r at 4Y?vc0bww>*@Xn40q%^*<&ajU;aq<sNmO
+&A79Gv^e;dh@=akWS at VMbg|=ik=~^I~N8;b459r3*EOAG6EN&(fxAGYYk`*t})BX;Jd!z07u(9t}L1L
+ah<Jn+Lk$yJC-t*=}CJJ|dV$PKwd?gFhHtcE&0--ubJ)2LZJY;4OzL<Lz)Cm0sP-%Cql(EOHcu-deP(
+f at T3Ss28`9chlb>@Tz#|^PYgUK4x{$xxfct&!Adrup}oCG13>do=;A)q>+!oS0C at vZSnWSk6}UH#4DT
+2#~F;@&1N2Af0xk8P7 at -Eb@L(%*{Sf)j@~WW7ts6s|`6WMjs>Vd$wnS4_kZnyvMW^xwq_6Wx1eKj7=w
+=mVL-`I3`~1WQL)$q(qRq4G*J8E`+Ko@&y>JObcSuI~#_o(>#R<fhvpHzn%hdju9LJ^B~)s2{7(#8{C
+w=er{9OZ|p4{9roW+>C~O@%tBFeBK{<N5hN+)Qs;@Z}D;&l&ND2kRYDC5|mB_q(#}H??W{3GQMRm%ra
+l%4ijf+)dQ&*lxhmoJ-s>EJ2=36X$Td!DYwxHQ|2jO?uHwqON at LiItvOWD5b@I%?OLDZzy1&y(bJBfb
+c5e=KqC0A?YZfx*tf!-h1PuyHp7fB2UlIk|jTSX=X_Eb8sn>m<hszF|A2`D&-{n?!}XLDya0|yu<@ba
+n4#9q1DIQz$+tki!x$T5Ox}1M%MP=P^7kTj#3qMEJ}zuk!h=zYKh*^Hj)%H@|5nAn<td+`bRC_HN{%e
+J?0o<C-PB?z^t3JymGprSCn&bAm8(RU6yv}7Pn<iNBL=TERH3n*t1<XgPOQ?+&Y6?4gvg8X7NT$Sh?~
+>+iLrQps-)U<2JZR8&nQIemFQ~eGpf>KjWYG_~%dII6Q^_kHS9Q^+?n;_Yc=%Q2|Nw at xz}#9RB4)I2a
+iU_Ud(7PIfRm_$_{Wv9sguT<|-oeV_s*p1hg}2)&;Rm2r3`4FfQ{gMmURy15vT`G&N%+&Fft-sNSwYU
+$mM`65Hi<mpY--8E)Ikef4r%eCQB*ONFR&R<SM8GniNRwn_M#5(e=i4gbPf(HYGGNS-lfqx=ni7-0v%
+}`^J2cX at vXj=5brne0U+6GBAYbYvO-7Ya}Tsq-X9CC~D8jY#b&$zmljh at a!`gXGQsxSbK<%KVFIQ7bt
+>QWyZc_`OI38Sr4%f_s;Pk$GUYe_?;V!2)pq=Mr%#MHB}B9_4c>RDx=4fusOE2WoC?mCsr-g7;m5Z57
+0-r%XF<Jx!()eT<1HtX8#bPc7Tfp{m_3i`p`R<mamJP#Cg_2&Z(KK(oko<2oo_xe7M22zD}rzFG6l`x
+isnN<EXi4 at 7lI5T%RpR{lK_H%TiP#vPp>({&VUr(M*qHW)leq49cth~LwOaI+#8K{IBC>h$WnUiz~pT
+6CF`hNH62`m8g=8`TtQe7N*c1iB at 1?``{c|2RGJdNSk at Xj=MRCZe-UQD%)^JxaF?Bd_?58Wt$dXFydT
+pIN40h(5FtOxm6BDHO94fHcW$w6QWy4}Jz{vM65GgcZu=8x{Q4s>4DY4`Aa;o{G=)wD0^g&TEH;>8Fi
+sds>+OG})J5)L*kt)w;8y3z1X+bYkU>-K!~9^iElC6AdBL$b!(J<8is735VVP0Brf$#B0!S+?Vjqw7o
+-6`qsy({Wa$1Uc4z^_+<*RbNCx_zC}1))(#}%j1K+x5=O09e!mWDL?xun*QyV^R3Ytx+0UkxBGj4PLB
+8YJ|3T-)6iFC`nTt2XXBsF&$iCCe#Sri;Ft3r!25%f_is+2$&>w4yZYazfBWft>+F}G&wiqof1~n16q
+kTIx$+YH)*BV-6e&Kw&^@3s at A8W7)eg3{NCN*<ueujw`12C~eEv(UrO@(rQD$ba+r|%H_yrIOkyj7j2
+Tz+_=oauvi=F~{^ki%6NwCCRVe&{-T7u{>f-HTvees1J+^mJAPRCz|<FaV!XgkHo=crsaS72y|Khdo_
+;V<E*qbHBY*~2A9(Rt2jHpOg_sE2^9VoB|a6ndvJ$KVzd*nVbB%wX}tQ5JpWKp1>Jw%S$odNI^#Ngf9
+ZQwErhZ at F#pQfZaB&=dM6Qu+%rgu<7v<Q~FN8KrzNY<yifU4wx?O<6^!?zj3(J`z<I4~1`+4UCA}Xd%
+xUx((|zYtpQkrKRww6G%xCz|BZJByjGN?uMb;c)u3M&O)r(@>lIq39UpJ0}Ce}?i1pIF8aI&qWBh<oQ
+y$TmHW8TXJ=M%$sFX0 at OUDevvP_&sd2rLI)LZDd7?jiCWhVcCNKg5S0DG`hnZns!GxwI<?ZR|(aD|)a
+S>M&Ugr%aEo_4sOhC>QnzzqM*ucZAUZTSe*B<sBSU at 5Si@_V^t>^O6_%xa2oX(t7Xc;|HsCajoOpSKi
+sVF%cqj;5z+wIst%7_SK3*gihUt67#uU0mrXIR=`MyY^ad?zRQE02Ui@`iSVm0F_07A$+SruZ9i2|cI
+A)1rhTRx=hgrU~V=)WDD<@m<_hZ&>S>#(nT%(yakjnIHt1advn!p+L5GkB9qG0Ex6sUg54>q%F7BmeA
+PA$va9saND_;uYCjT_A<V;r!8wyg1Vki0KA>O$$y|7-L{PP_K#0tN&e4|2gmzgKVlkt>wh@>us=)zD0
+S1MtAvLn!hZz0uX4VaQ2Zp=^xHc*d>@6*M16aFWx!14+?gPjN5_Y!hkJ+b5+M8a%g;Xn3qkIQLHzrSp
+c#*<AWuKckq3{FuV!3R98!z9T(HjJ5sU&?@N<Nutv5P^AYzIJ!aSKRQh6A*9}{!POr+Eq3oV+>XnmL;
+MdKvX?&MW<_j9I$w5TjoPPWl3MI48QL&Hu at Zkldy-<%{T9}Whlwb|Ke2<i_sOoD)O2T5ZYpA1e1iMTr
+ at +#@(P`FbaZE at 2;W{D;;Cg=wVl!7UW9?iz$1Ng;^ETw<ALZQj;xC)c4&<lPvkEJEk@`nAdv{%uex#<R
+>>eN#n3il4mw2(0k+Uyfb0`bzdasq#arwXqhy<wP;jS81E;4~Fl<kOMF_mNxqou?;UaPxqLPNNt^!U#
+$Y>BC7w?-2Aw*C78%SE>Mp<)JM51FntA|GVYVera`|}_Guzud2TQ?^bYS`4|_A5j=>pKn9R73S0}i4J
+LYt{oxJ`%NN3%eAW?^msOgkzbB=0C{mhARs0ooYKMvlsz>ApFqeYGKBBx8$sWgU?D`0>V=!0wAVG_~W
+Sa3{Qs7hUN_-EQ(1 at tiLSl$FBZxvFopw1SWms_gCjOR at rmZhRx6@0APbe`Kv8x`(hkqSrnf at 0O0x)RW
+hB##PaBx+JJZaVBZHtxNcE$SMRW)MWw)wF|&g8UDhIJ8y6!NY*}3vv-!rLnY8*jv`*ZinL^aurj$9_p
+gt`^Lx$>PSJ|doO4sPB!&3h=KI0HVdwg$L~mBSqX{+RYFY%XMuP}d+m9~7YV at Hl4DY(w)S})+3dGPqn
+_JYfaJACSNK2SS^>_EM0v#WAAAzptLX{3iDt+t9UJ7+zn5rSbioqyJzNq40kKoCsb{=5Oe_^d`E82Zo
+-O7Qe4kd^2i5lJBHspJ?~5$s{m|PxvH4F>FvujYC`N&7#NYn*b4p!K>1r at yeF+6%n9zzKa<pV1y?-ZT
+6gbn52>QRh`!T>+OFsMo6TF}FGSd?j8I1u3h%^u{lqZ+d|J0aF5}}EVVrsh6L_<NwCzB}Wq)vgDsC9t
+HLz=6W4nbE77(mLCK$(HCv{)U`%~^wVEXs`7F-JK?5)u<o036vm4j;8rbi}dhTq%+I5a=NnG=1?I>uq
+T(8}@#9-Y`Q-mN#;f5egz5SwOaEs#7(EL7A<ad-yW!mx<k;ABFSuukYV&A0O?BtUhdpkqwK=9R<w<6E
+}`#_vQJ<20HEfLX#kRISzg&tyx7V!|c`XyLDH4oFNn3mPbAmfs&r}R7e0~R&sv_XqN2+%RB`(MsA{4J
+A7xZe#-?ucbyFc$2|cp4t{|AT4 at rC>6lReBDQ7`fQBe~1x*s1n5O^#FGOGhoHl?EzKw2|WwV+g8Pv03
+%}=l*Ca<StX*oWa=&=*J<3Q}}!8i5V(^_n`p at Y`8({WAGJs17BXss{CK at R`lezEfhxs2i=L at Y%UA~MD
+OeRD;A4DBFVC>l)sE)s9 at OLfXo>i`OK#D>nsTJNSio?{DKh+?UdK3`+*dJdhICINGU&hNShY+$e2!Rm
+#6KaQb?h?D)G?)ezYc>aHcxr`S71q`Mv{Kv2uj=o5t at t~VPTGOIyy%lZu^^;lmM2G}ScKtucxQ6dmbm
+!5oslksw;m5C;3M$J5s;Eb(*6A~$e>yx5)=lAET>RV*-?${5JyMLrl<B*($#;0*%|E;b<}JIRXZ2D9M
+y|^Aj-z00X4^#LSlte!^PogxI0y;M7>qB)s|0Cp24hSk=%Pt!eNOg0qFl53E9jQzcr`UaJ2RxrdbVe}
+S&2Mnh=oTe{i2$`ikhnOElpM$8K at TdrI{&v3_{W9N>~WRC)axZaip5THLOPNoqTI<!N<zgp>F+BxrZq
+Vny<K;wbvrcCYl0ar_^s5VjTx>>l<_ukOx6#4bAejWR+DEqnj!)dFS!|-r at 1ryw?<~WXsSD>)!K<W7r
++G$I*Q#TAZAu&tUMyT~p>z%2BFvJZ#2p$<VkVWe9^lzv{`i=*x1_)u7%+;#)NqW_ejGF&kC5OU5p4&5
+rpUPe6Fs25BQxo%V at 7iH3N(=DJt)!XMUkmt%mr1ouP(2M?5E1jg&l(E%(1 at vShM&^GJ=Vb}TkFU->=p
+`BIXDA<&P#q9Wt9yFWd>Epp`V9hW^D1EE3<CeT~$rfNOW?^1xf!vD7$DEy6kb77 at dPF0-9vCqB8GNfP
+zgDtkD$6_h?tBdQYGR*H;4#2aYt^lEw1>f9-L*|NKb(!4i+H4hs%ya>2!2(?`w1rdjGL9=xpe}DD)rg
+2+iUS7(x4&L*;^#|-nfIecs!d_w5?+o6w9o78SA;R?->{8*oe3zM+P1A*W at _&r)iL_gAp7V at z8+?1~@
+I~C_iTG96ANzy<Qi4O4sY+7i|vwrJ-DQ56%IUS3 at d-XZ*2vcw>(_1?|f*=O2$9b1q%qNViFSV at 1O~X0
+RH6ZU8xW0Mt8NpFC6qP>fPu4X1J^oaB*MENy9n6vf{7Xc#McASHP5rNqMX;&Lr=Bif;GV$8KNv<0I-k
+f%^7(Obf&ggREA>Cz6nd~6pSd8<#uqMGqa2w&uj;o}lBYJ!tA>(?I<5!RURTt|YpzDB)%!qxrRo#`LW
+5DXG=c9TUKlg$KFz at 08PFwn95HKG$y?RsPM`@hFQRMMTObU5A at c+v+YqoP`mqNxO3 at XfIW1<Rb<PGhG
+b93j8F38N8Tc6py<QQH7E5o%u!37__Az_PZY<%jZ{-GfUHV|sPY`?XAF`1vTex!o5rNWR?&T|(k##_d
+7x*|dp9o~tIrMp!hnNIjEn%4_en)LR(S+giY5kHxen_v8W&W-RFLJTQT at L@L6B*FjCsLo?kE9cr`n5m
+AwoG)#NSP<!HF-({;2nX=8H#Eh=SY8<#-9E?#vmi!Q#CA<^DJG#=YH&(6(5+elJlRj&9?+zGI(Q{Z$W
+Xq%1GDV)xDZrryGIF@;`*eMOfIkZ;kQNAA$*8OR&ZkjmQ)miBj61Ql=_;|HIm=hmiaF}L1jhzSk;V7U
+*#{D4%5G`WSage1d>Xsf@=8%9&sEx8sJ{FBIa0o>XLT9to1D%?0O>^=+0gMLbB_*Xg13^6lDQ{zT2eL
+WJ!zQZfEL at Lx}3=67IzKjmJ;Azj4~f2)F$ni-4=WqcC)T3k#k#I*qC!r$ShrTYnjfZXfTDrYTfmV?un
+}4N!0FH0D;aIV6JfX&apbY=&XfEB~cbSB)*xi)xpP!0;4BYRC at O~kV=>ckr~XwoZ>Yc74%$Qb*4HOij
+GU;14)w?l<-_`jHf*o5~38TK~&6prw=8NAT6gqyNQY&o|~Zf_nLIRwu24~Bx}~XZjeG1=t-wjvS+n{Y
+&@;9jL2+2VnmLUh&-8(IrzYmO>}U`tEG1bZ`hP$^oSKvrUvEC`Bz<yl6<fhmZwiy^_}{yZJl^Rhx$76
+a@{U8651v^J|lKrSC~|2nN~7q>1>&K?Gj9C((`3}M3RCELzA?bqP;vg+JC^K%Xm7KJnK~V0 at v6D@&(@
+icS_&z=sT<*6V1}(49AlQlc!|lwhQ at -PO9#OyyUWf^zv802izGxd@<m^bl|Vzo3t<*e8CdgsAWBo;VB
+REu~94v at i-hRLLtVSXdKrcDD$$d%dQ0Ita7d3)yDq at P)h>@6aWAK2mlEMt4MAewUn?K005s{0015U00
+3}la4%nWWo~3|axY|Qb98KJVlQ at Oa&u{KZZ2?n-8^e|+qRP5^(zoNIV59>kz}W7w6W9PtlOJCt?Lt~-
+McF(x)cS;Y$TE;DcNq_{Pvw003^VNZ1-_{&$^9G62M?E7|aU;?6dCEE(_v$7%hivlP|iT<Co5UXP>=^
+lbbYLUgpex<FG-mKj^}*&)EA*&dzW0%Q#{e at gl$SQ_jAMH__bB!#MJw<pt;Lo40RH&n`~A{5ofTG-q$
+VJA41`?cctC|J}O_{0Q|rdwYAGx9eoZ*F4IpHH#O_XNwiT4reRQwmi+?D<H?R;1a5_B#pP>oIY%lBu;
+a-h*Nfcdfq)c>baea=bI#t<5kuT;&lQr5e)X9 at wFf2VW7eE2!T$xCOE5jxrC4EHRYYoB8}I~6M&ffp5
+-ajn&vkN&pMsy)L*TpQ+CWo)>)jc{Z;rgpZ_4buw15n{MOH52&v_ESovdp!<T+=qcsp8nk!$(F=*A*r
+{)IVN0LefPN!)ar`T}G^QoYzHR*J4 at H~ZKNGf<x{0)7xr_;z^^Xb&-bUMMx&ob5m)&9X>Z8$wTLqY?{
+`~EV_82s-?Y*RK<li=Y5V9f;J7VsrdJD&Z>gIvOz^97qu!zj$BQ#<3Uh08Kogg^Mjn~KSSVPyEv!`H-
+iDwPsH&9PklrLXXkaXTyP0wNryJIul;%l#<eHr00-FxZOM>aBPrDmd(f^*RO05^fFO)DJVx&f>h_e?A
+vfwBX%`vQQPUFoHFaZDvFr%PE0RVg7=T(~{F=M{y3Upmi2581gHXI_%N0c&pYb(RvTX5}Ck{qBv*N1+
+4QYDJ`Zasl}c!qc<I`DgUXMq-rl>4r+*tY9)DK9jB2wVaEcNeAl~+cx!hO5RO3r6S&FlG#IP=k4O1cE
+5^(A-ZYGDi8A3P>M at XZ^?{fpxsw|A1#4h at U#QFbK^0o!GS8FYvuE=-$h?GfiWjHLXDMIsl*6KX21><W
+$8)~g7t#PgUHaMObgH2yJ_zovVTFaZHYvuSQl6x(E%%;ew)F%S+ at 9if=$zKzbm}Ro=o*s801ls8Ve5@
+Vn=e4KB_K&|3J75~O;R8OiGv!PcKLDMAU~A!;F)KYf?O&MQ_xD$EJh0A at hpzG99Ed+Kr;B2a?*++tb%
+m!gFU_)jkEEU<#i`d9eZrs-cx7nIIs7_>cFb?cGd^`)$#4g@$IYIliNqfx5vK>+{0gQKOH--$JtYR^k
+JO2lLP0mC4fYmbrX#7{J<W2 at Y{L%*eY0Si<$`44iAy#Kzs(Er+u^qfF<D*!`TzY#+n1$&8guOXTZ<n6
+vzEbL2K)kHDoJ)J)8S%>$1RQ$&hVfbqA%kwN4uAoEUXp9XD12$rd19HIR2zH=!T5S2t?ir`kT7-5?YC
+n^o>I&6GMmVJF943GUOwaD3EU{ZY~RulfpV)%Kv!Xa$+P3iFN3+N9A+)1+7*S;B*GaRVG6p)jRiRnvR
+f6l-Nc$kpMkaZ%}(1R#sTe0>*Qu$Yl?!}(C^R}IE8jW-D*u=d2GZB-E^jy{$(N4-h2_4AS6D1@<rw~D
+Vo061dK(UcB=HeIlJc$9^CxaCsyhglqD1*l*JgGHlvqK{H`J(!py4WMNX!;Q$=8U+e5(H%;sqM?^1t1
+!1M*K#HXjH0Rr%<RRO3n_8rTm(+7X7il1&&}J2W(MsaKth^70WxJBc73kub>c*yDqJbJl4{kmvQ~f6G
+>FXO(LB2XDQ8>WQ_E={4^)H>alnAQje^3ZrPxxvnFM3#U~CZ-kfp#jbDEVp(yc!hP*0mbq+y)YX at fuL
+eQs8BHUsC44E4}o73<XI-qI7D4{*@z>M{&2Ti{%QpOgzT9BlP+wZq)S>?7w13v*E*wQ&=eEmQ|xya=z
+6!$!mIVB)g(>4vwFyRbKf+LDa8jdoCcpZ(Vc7F8ZIvNS<Ufz!E-$axZSL80CXqAnA$%UX55%6Ky#V3b
+`F-CO8&1>yiaxgh0!j&5}e5alw_9HF)?Wyn3qTOUN`xa=z*u&%WxLFD;K0?WX*<HXfqIc<&~d2lv0)e
+JT%w at KH??zP!cjw=4Vq4`0l>QV(HN|#o^;h7wF!R=nBXg>r*{IzN at q=1TQ4bx8mn7{Oqi~t55Xi3mg@
+ea|2D?wc3DQPL7_mF5d{HOGy|Jl%3A56H=ecW=gwJ=A8X%(uCQ>7?Zv_KY6W|gZEq?qy0 at R`i67OIod
+GQ-G(t=>%DHixp<IS2(Ep!s>8%6VVZ0OCSkG-#R(Edm=Q8j01?2yYjN7Lwu#i9NfdNQ+<5pjX;We!!*
+~@p3-vgl`~-bWY5rCO?w2Yw=Y0wIAeD*;n1;$-szIj)aCGhD>zF42{OVjMWuiK|7*?)bth_u+^xA>Y~
+z6)0uJ<qUIkPK`FdkvcMjxFa^FnFu0P5;7ax{46cwps8Gh23jP1Qu*<(b006^t*un3N2s}yu{CGg;{P
+g_js5kxL^xehV at 6M+0PHTSe_O%U8?<0r)C=b}NZU1(58{DRWgWtggztcQREof~gG3Y|s1mEX;`ydDh_
+Q>!4{AKrl$MXrIqrEw=0SNi#9il_RlPL}kX2Vuex$at_DPN<4>08xpc(K6R!qennRZOX&Tx}9$o9PZ#
+TxmFf47Inyd)aE<OTX}5JWEP%uuH*ZMmdK7FfuIU8@`RY{Ru9vUWvZ!g-VA|+|h?wI16Qcp2T1%00{b
+GT6L-nku91Etddmo6OV?U2_cCbP=0<fd^wS<yVZP<-mpIq-&b(}7I|56I8n$Fc+ia~?p+f48oP_WB~?
+v~MG^c4L|wugpZk+yvIT~%kOltDphX$}DS_jQ2Au}l23$~~5w<9T-vwlR)&L7i)nXHhfXxU?OI7o)k=
+^h!avZhQxXn~E`)EXh`@R8!k`n<8#nUiQdL~1={)FKkTM#c(KLPK_W&Sn}=M^~8YzMm%<o24)!xRMY>
+c(ZWO%6Q-AeLc4(W($WnCv#I!AY?tco5*oRa~r)_DFIs%;w<|#?xSy(6E70eK~XRS}~8BJsQ=n=hCCu
+gh;GB2eVjBjacqdM at U?8DFR=Xo$ad_<BY=;p+CU8GG^<dWv~b%04BfC>h~8pPpi=(Vo at vw?x{{^9kMw
+Rv8F5^tfOw<DR}_Nts48iQZ&?vr6BxlxlY-wf<XA9&#z;UNgW==S3s}$BlC0ec)<A1DX^*!$TO%11@&
+cXO-0}P2G%epy{SPPxh5?lFf^7{MUo<qSYS(aPYP4Y)dad^9jSOpPP!y>$uM>aBNw5&f)PM(O`~ELcP
+avCx)v+K>9q}D`v=311h?x;&{4S0T}CscU-)$#&&#p(y at 59W{HIL_S_?z at FeiIZ==JvWx?WFz^ZQ2Gp
++7L+XO;4x^6niK at 9)3+&+mr7!Z7#bhsGOeJO9nsvDH{<pRL0v1ah+cDn_!-V3-DWWlgmxR(#7>Y>m;6
+OMi<ZMU`YAw_pZL^c5`&)2elkRk;O~`O|~5`_)32^bEasuq9R~`F`eU%+UiU_O7nKeGD3JaH)gi83=i
+6Wh~+xLjn~!{15McP{qI>uU9;1bGOg_9$x`1z$*mPhXH#jADQeP#0CKaGWn470r*|$3hH5d`x7`(-jV
+m*>p4XzVjeEYoCevAIB9jDRv8x9ZF3d#i}RFif&fq{n(m5u3fopvZYt>Y8;mJ2qctz?{N3rh({HBlzx
+?`w9KhTjktDQc_$$C)DgA~OZB3ltw%I1S^`jd*m)<B1O7ELOU6o)4xs8S4ON5+?8MUunb|ZVBpjV#S*
+J7ME^7W?BIoHT6H#KyM_ at k7L*I+<nuM`cwsiR-I^%%QBtMtYYh1a8qEK(qOgGf_*h4OFfW?@AH{z*G>
+wC!X`l9ryXrEj)rHCDM**{V||OQYnK4%P&Bq8BZVqGP>?|76v6+f<pK&O#6@>5Wz05>quI1z6t)^XEU
+pnwyd~G6R%%#C3!<4&O|5Pkz=^Svl5$rM3o2V5GT~hLQo5t`<(I+Yn%;fOp>lf`Qptsa at lgB2Jlkm8x
+$SI at mdiV?<c$3Na4k0kE%u43)-(04`&!2qCh7V1gID9mEmg8P&H&iMt4ddov}Z3jG0a(Ny^SO4=QOr0
+P2$V~hqnBd%FZJT@?g#!YHPJcyGTY8Bx&gFSbF(}|;obaJfKtVZ=3qmdOgqR)<5SlXBi6tN)IydUE*v
+PURgL!om*WP7vOq()C<0#kYyqXf`Sjke2w6WYG|e at NRRLi<<H)?8mEed}ECZ-nW|PE7eve=WaCpSq@}
+3j5tI1fV{S5=LDcm8O3)Z#6+_+ajpw?g!CIg?C|9sGTt!1itGiR6C3QO5S<Uj68bqjO<wP51*CV#?4<
+Wa*yv6xklE2F0Ah-tM^-GY5%USev5FIn{;L=g|Vv`R$!YSL at --b{=FJwr?vox_57PJ-<*DXdiEauL7Q
+6J+TMvZ@(#L_$Cd*wA^vLm!O+Ay2J5nj0wkL#$g>)-)cP>;CiZylAgI*pdE<T+=sxq#Fc#H=KR%ux09
+&z+6~O6Eb|O_`1 at xKkMoOh%J{D*-Athm9KsW*`SVi<IfVQ at jT9lKC8$uG|Ktik`RkUaVm)d;W3hII2U
+?L~K4BTIdXkIhbFj}$7LyS+Sn<zu~6203xX5*RduNMBTpIrLRct$Y&6}%L1F|d_o314CQ6BIN9!3Zf8
+- at +3;2xy%uW)_rtW)BV6qeC?J(|ITtWu-rR#&ciJvW3t0nr2)k7vF#N)!TpEW3_x34L^BPSTP4XnDf4
+zX^q^cdyYLCPj<0-0c{gq`IJ%-T>5Dfv`@o>DU-{lg#!p$vhoAY!qti|(N%1L_D8alw_CtacwNaB1c7
+sM_Wie~@7}(dp1(VVxvB2>8vDHEZfdq!E;*<xb-by}!YG5z^!I&Au|HWK)7{j8D3H8s62E08EWVXVbw
+wvyq_oJH#dI;uumenC#uA3nCybQkmvq8PN1;s9P+Pq!{gjHu4j1TGoG{b`275Myb)mACZDuyscjaeeq
+egscXbFNE{<BnY>P&57APQ=?Oeh#vCPZM$R?ab3Fy7=04~EIMA}XBaVyOG_lvpyK{RjT?GM-OirUS0+
+YgcAkMpzs0*S5Bc^f-mOD#$hqQ6McO{8rmo6*bD(ETsn*@zr|G5r$=Tr7TKHC0_1qOJfM^m&4ko5)`N
+%ww_ at w=?%eTs<f;OX|%>9SKArx3O^NX+6 at cQ;plKUnP3`7D{zAnveEEx(l8ZwbfwuY1$yGaNOiza5q;
+G*74Kpr!Fy{z%lxGXZb`sJX?-;{$ov)>nhQ&Oc8qL<D#GQOq>(ppAuJ&zS=T}k6pR<=Qm9L;ih;;Bcr
+abq{y^5(F$pu2eISn10@{^%R&gdw5n7jSx)8l61ZP=KJ2?=;06 at IrOf17KFI{gL-xJh(yI?o*Mnx{oD
+q at c)#K>g1Noa>2_Zp(=2uy}C*(&^qg2}<oBZ9xCQ at fZujq!CrYsoPjt8XOQm{5;c%PoM)t|Un~vFEoy
+U0!Zf(t%Ej!TNH057l5s8IT2O2wG+mM2ym9GcfK&a37ER&N7~Ei=)4?_lyObRPI*+lb}xl<>xo&Z$0)
+k0rS~>vreE10m?6t{6%<oL*zWac>^zlUhk#Ljs~B<K=_!(AZE1728aCtv!5S&FAtx{t+IxoG^#U{_+T
+_dOXV4nj>D1pn>>b=pe-a5sk!O0!=o2R%>KOZ^^OYgS2#hNOiVVAv23LFJgD&(B0o4|zW~jCWnV at tOl
+uRQ_=*|`zRp;Ed$}Mx%(qBw2^Xc(p7Wfi>o7w4a#LC7skY;^V*^!1I7lG*E3kU!Hw6|#4qOL3$=lMh^
+rV+erWd9nA50ksQqxj82TdZ7j)p*-vGzZ55RLM53Z)yT;j)x_wrvTM95(^ULWU1yEYl_-y&L5<TV4Lx
+R;88LR}3UbnTJ3|Upt5{2sG7dM=j|DOK|YTt9|K$b3j{Ocl3x`3c{eJB#YviX~6G?yH-n=vN&03=1DW
+#E~#J49BQ~2IUG4353Gn4gc%&Dr7-K_3Kr9R4(qyCasb%Bq=ojN#^XJJi4Q$|ko;%X0&t=hJg8bF0?+
+}8-4YR!n|rhFU=Oj_^F4TwSuB8~6c-Xe5oVA=nkDfJsDHzdC0yYVx{T+6tiR%z2B4w{0CDbTm)Olb&K
+pp-NB%6BVA|$r+#ORy;lL4t8TZEnb1)!Mx-i6UdibJ`fdzQ?;2qv%g`U?J6<)j)frmbpzj)cuvFr}hJ
+;mee^tINxSMU7|uwgW01L)NE4qbYf^<C)YrPuo;b4e<lc%LS(#Sopb_gW6C5$v{yFt>e~6#?^>X8N|a
+wYBQ3H|h^32AskVwR$iMAOvL|inP&1R?8*=BNrwb)OZ%od6zF1n4^Z1jOUA7wg<Z7(Ca<-dN21RbW}l
+<;*<^9ix<rPGyvHSET9s)%yExry#peq{rb^(?zE4a`Ojw00<kEfxY!$Hr+Ch34~XIK;Y89?Z_i^F#Vr
+>g;1(*uW}k9ZyarSUN6(r4!h8PNE^HA~F-MZ|maqCJm34%iY!Pdnot;@M_m|>$60T%;X`+Gm+NK7#@O
+$i~$N)Nn;nxa>1w<0;s;e|6%n_YM!bG(>Uxn+ic??~V|Lp8sKRy#m50oT|3bFd<n1i%Or<=fT654)_>
+4q^QBxS-?b at h1TF0GzhYOf8dcSoNO>j)S~^yL&n?v74KR*RttJyCQigwnjJ7ix4X>eE>E%ntCNl9gKI
+5)&(Qi3c*=-WQpCDsc<H%0>)C!;#<j(tb}aTVQ4R4cqj4TE&;%;bFJ`VlWt#74e&>iQlW0Q&qdQa-AX
+5+wN_*#){agQQFa%F*^aI3dMZLd)c7tHLRd>(1Z?DH&KUmjNb-_8bPEKhmU$SZyDxAy&ctNKc{z912y
+1dx1Ovh5QJ}LMO|*NPyOdTka9;mrJPvdw}9y_pmC1{E{W=)Da35eog$}0m`LEd0GB!j*@Fh64-iU`fG
+EZ^2>N=BZcrvD)++#|0KzupSAs5*dO<TqJ`MWJ?s=c>mis^ffO#w7-gXUv6o6nIoKzN8uzL3XBMQ2V?
+IqWH>fmIUn#*eKryrHLub4<RPBs+HPHSG7Q};F0)2zv-2HSm~wxPrgMuh{Cq;bGAa(Zk$BcFz|P0qFJ
+nH*@>DKZYvzkK(;7W>5GB$I<%7~(C+K at fu$TA1Ejr=w*mQdpx%6T<*ICRPP9p~{l8VSMZ28%e#c`UFP
+3UIUjpynmtI;f35N@#Yn;zp7}$ibijoZo%((-4bO9*^L>h)kJ>^*ytpY;kv>ps-($dY^6#HIw_gBta8
+K}lfvq`@)(rqS(wt0jE4OQK3FfU=2ODhS>pYSX~FjA4>?{;5um3QJ77tzT#%wj$agx;1=dsHh3woQu9
+CGNY4a=~MGPaec90%xuvbiVULT!^hsu6YJ<8~!Jme!Ac3TK4hnU1k<*I<Y!1m-%1KdWKjYO6N6#2L+3
+at`Ajr++e`Ru!Muf=Aqu^fJ5@~xaqGg%4ebob$5m^52E4}4uY4@~sDuFgAtt<myYoBPINvl7F`8v$l1
+_dm9At3l=arPvxXA}DHP$<D(dS0J==(@v%42y<vBxFG9Uv;wN!2&vt=V|}RYMX8DWeOVa~&xTMRi;F)
+>oK at bsnQ3#^tt{dmJnza+ at q$3xdQ+az1*N55gd-w)l(#N%ev<9J3`5w>TE at wf%xWZ!(==d%x6Dj?JzX
+ at UElFAz^`z6xON(8fYM$xt><V1FLc3qo?@=WEeR29N=%1#es$`jrJ^fERoj}=lQQP;rFN=eu at Z6mstL
+-?8N{3L}8$K=!2BD_QT>~Yw)cA{Wl!r~#K7ra|t?G7+Ku(4D%v>;BGalt8Tesa!RHRdhM((Zzs^Ypr4
+0kl`-r>(a`)|6U!zxde)4e;iiAmBg6QOjvzVnbS^;m4?OWZ)H0Gi!UJfVwfo{pZ#eNoEf&#++ at t~V>X
+2&8hvuy)Z$F;GFJQE5F0<y##76FWgksj+F)^&}u&+vDQb=Tk+F9&|YPjsw7J|3|#60i0|6lhE34*d~>
+ySB8g^i3(<1#<Vqr-tw)G0B8YavAo|!ZFtbBH+fESB{U<&MQ59EHAj3(9+RCMPFw`(xD92`vFxd3=y$
+te434YyQfQ;fHKV^l>sOY_?>Tg%U+K`NyC5DN<G5?s-cNg0##X&^^nz|gz4PW#7?vwfSK$>NVjG92$C
+YEl+KpRyPSE%)Thr9ilUZEAq&;K#+|emV=h%%)H_W*(T)t|z?Pmy#<!UIM`?`k)gvPr>s>z(iXe4$I9
+nHTD{-q9|;_X5W<Iu0(`970(XlX7oZcpH5ppW-nutmsM^Q^J4zC3F5v*w%i`i8EgVD^*DkyjiP2uqII
+akE~@f4eo8ajDCWtX~so!v><F>Ga~w-%r0iy(k^|GFk!Nwz*C#kqozfUafUItN7Wm|1USgEaAk|doP_
+E*EHc>b;qG3 at DOM$VJXpAho%cnw<^}|8b at m)m_xA%Mb(idFLfl-zx=Avcp~kc@`7j^`AG5z>Q&?_d16
+dKsH$20;<!!pF^aDub%QtEizBblBfzHlB{9O1N$39nP)h>@6aWAK2mlEMt4MxDfCWUR0000^0RS5S00
+3}la4%nWWo~3|axY|Qb98KJVlQ_yGA?C!W$e9wd{o7`Fn;z|a*}Lv7DzDsju0#w)aVjRT!IT^LsWu`F
+}p+v=q<+WN|lCl0IviRPnPCnSZiCnt#9kC6zSEgZMjthtKu$evqVt?TE&7I+f-*gRHDRWfspfko;hbX
+0rlSd`F#I)|9Sba=bV{&X6Bih=XvINW}cbU-2O0U;W*9;KTYGf{ha>K&Hc~+DE#uK{V9)oF6)g;_nVf
+yap`S=@2 at Xf*L2_AO?UpF=zDkGd+&W>(ZAeP)Fj<o^!<B_DsQPR`oVo`?z$>BH at ny<V_(kN-=7Ye&!>
+KO6#t*|U&5OXK6U<|?ES0rL+t(J`Cq~N?AV{2A7HSS^Z&`>pE2NnVZ49M-nV}LdjTvjg{#-YaZ5}#?&
+lwlsY}K6aAs4EDVyV-fxy2TaF at Zu0l$dR3;1p3I2&hT>8UsOu!(ir;bkUBcDFJ>giXKGFZS=5zj53={
+3tSUPk6tfGh0mD<2)1_<+#cJO`p&D at S?E+JgZIL4u6$+*Cr9(6Q4E^!nRs3gel^<JFaS4bEkMG$6a=X
+(e~N!+jAit)a$-V2jhCLf=8cG=83PtMXqXE-}F8BW^IKwbGO3#<TsSpbl2MZ05BtuV|~ENn{T=pZsE7
+L at c;e$|MRboob&}s|LW$ng35 at SBYiu?+yz`HB25Slh}Q+?L5fc+a6{5AJwcop*q_63K`!6`RtR`8tHc
+L6ty|3kNIO6}BdZ!>P;l!>D^S`_Yac}YS at 8_X%{(W~340t~O|pkWL+3Otpn>oSAVGSm=~|A{W4-h)P1
+EF83xg)DfJ3xuhMaHE#!Qau!h%T+?{{k9sv)m%z}7wN=Df?OZ09)nRXZR!=>?1;SuS2OlVrHsL_B;+G
++bFaq`pPss~KwY$=Uuu0B{d`hMZa;kh6gED$PSmb02*JYH at bC;=+z-U>!g#qt^g3L9<_zhUgVzK}^Ei
+IfmmNRXo%-G>nKAD|IIoPtp}{wkXZXS|7kB5$xO;2L7TI2)Y&;Bk}Zf9!Bw`k2+Z!i(GMW3h4{l>ch?
+NoZd~E`I5NBlYEr)L754VE8GEK3agLu(Cdn)pFpL+dFSd!>PyuY)@$=&Mg6pcRn!j^y#_dvK4-)=C_E
+AgY=<@}(n&A99iu%bOFaES8`M}2z>n%UVAXUg2u8q0esy+<)LSC;l$^fb>>LOJIY3p@^{SvvetIcX#E
+S2n6d61g*aPKz>G|`lU&591wN)$Byhh at 9;V>jLy2gl^)voyZ&sB@!>BFKTP!#d>)vsnl>mz+yK|Tz*d
+>I!s2Tf2PPz&$X3YIYP3=K$jtzaGkBr_ya73tJzjnUTFo$GWO%?fgmV=|*fx1QdcY(0r`N+-uxmA2wz
+99GQ3XgM{%U#TpftQE|`N{)pqiyhwJI(TjJ2D56lg4qxa#oFb~#g2874GLAw&Pd=L*3_}k)Yk3A?Z{5
+099Lh at a*BFR9&!fy8Qf<>Kt`3Te2_TD at 1;#HB-ngKES^Qm<^ou7Kzr8<iEC&-j7;2GoPQj%Jqy{O%&+
+vs0DVtSEM<xRrYH96iEHVf^u#4B at qRtg6!`O4Hy5ugUWs#;R!|Lf0dOJanC<oZ{V<4rO$4O00tckQXM
+P~SO8736KmZCD3t|g*VfR9#igYOGFE8S)>EDHVxxn2lSd1;-&Wh<fhloJ5Lucp1Fd)mI-${i#>gHbD1
+3<Mf$m+~+6%TSk*vB<OZ%>nx)5VEF-b+v9V7G!$vIE$V_8udHx1EvD021^|td8wa2as#M+{rh}H%zaW
+E_Fs4<@wVC+zB@)?1*@25Fnh9`bH%~?ljlSakBwXjR21Tz>N$|bqrSdeWOY-2Y`ir8Gw-VDe>5qQV=1
+lR&?p|t=KYJz9HWiSfPE5^4#g7HCUwDg45-QwSJkG9<ZdE5D)c0uXY1TsKw!RX1%(z+22r|vKJwB;c)
+;(ln=yg!7Nrm1%{`Kyt0=9jG7w{;X4SCGBuM&FyQQJRO}1Gp+5NbcItAHa at b8t=sFFW43x6t1jgQS7F
+r(u5!U1!s3&i^lIsgP#<ZNx740o&v&GB>u0u_yR5SS^)#uN!Y=xMuzBU}{KaW*pa3zC2e~=F(&Lf?bG
+KO_VoX1_KG0!oUr}qqwLZi|qVW#@}@Lqg3mOq9saRRg*`{T1Lqd$1)kH+$;(x+^&W(2Gs7^C^CGmN;+
+tJOTr at Iop>wq+3e&lQs>%W`R8PAbdySr#2$`3CrK=p=TPPk9XA)DH+Lp<e9CNcm&<4g@|hNM-67Jr)5
+2J5sSc#1fVR=B{wH8Kj;i-spN;8Yqb#Ns>OoD)?H05;}o=#zye#xegIVFkvqw6hcDiI3yfAlC&JMgfX
+8#EMCL==u<F<rUy3A{Q>s%rX)-;jEFQwCfeSU?8(|<{Sc;hpPvreP!5&)>ANtRhiNgi`mie(iCQwBjw
+Q-Kx(DrnK7gj$c%TnWY3_AKNCWTs2x at Z0rF^;r;^Q1VIQm@#iKq_%gk)zE4$N;K!bp_Q*T0Wa|2Uk;c
+*vPcZ)Z6RA*b2}^KWChODdwCbaBDqu&2)(KxAlBA)DaUoiHCbe6`f?z_3H{^u|3n3u`os3G`n27-Ws%
+T-znUAjgQt<`sztp)roq0w{L;Dy5WehcD8p76)25oXi}cl+dwkPPQu<Kp9qOM<(5mP#jD$tQeRt8cCg
+9<r`hEiDTsm at G9RJ>XP~z%N-&J6ay^qQWQ0++w^IpAn*(Xy}B9&VH at D4bsM0F=OL)I9wT+>806`)iHJ
+FT+&4jQf{zwV!D-e<-v#r)M?K^4`6B!NEqnfQB0k$DVy_gg8fi7OLI7#vAbFuK(X1VjJFPCs-gGk6B)
+Q_m)CC+TP6*(eu9yK8B403kFsh#Jm<~!>0NN1n!h`NabWxVw=JN-BJ`Z9X0I<Ir(he+vM?FcpI at b#%6
+N)iw-E!RO8gBYRuIRyfR<9B#1 at Mc0F<r089>kd*x(j2m3xh=g$45}=!}%~&JoR7~$af9lTwZQ-Xuxc3
+ICt-|!)J%b at f#lAa<iQiLXYD}mc0Yzkh0}CNxe&sDGlAB<6=N7>xO8ENGi?mC=Dl+=40|HD}1}oHQh}
+2PvW at pO!1!(n6G^ov(eoUrDSSv>*Zlos)+K26Oygmb4<*`avHi7&oNdiY3Np;j(d97LLam?_ilpM`Y}
+L|gflwA(`!{fiF<lBGk~5J1E6OFpoanI<Xi-ek((Wyba|Y$8jT|8j)qI1JCJH#MimRvMIK at oV{DB62F
+OAmR_IjJGwC0gf@*I_$1*MS(NrvISV4{|dKiNcLI2eVvOM(t8BArR({aE88nXEx0KvmL`GDdjUa6Y^W
+n4D&Pr*t?=2D at LJ}?$(R at c|Ov;;!+N=AzCmf at KCKmkW{fU&_0ghnNPKq at Tv42k3D^^gULkzRu()eI>-
+D12Rd{#uYh^0}Uk_xb#C1=h?-h4e}&BRG|Ayc8&wVfu5X1OWwDNldi>33*2ly#r^cWJr at P3))we+pG{
+N=GIbq0wYZ6DPaE>KsyCl at kjQ;sb9^nrT>Be^xwyzm;$o{2y;b4>@fQW+LFB%Fus-CR?It(cdRV74<5
+t?7IAz>wtUcZ?dxKbOikjodaU%BOs!30{p4Kq at 4V$Bd^s#1sgqWN+92koa=0Of^yP{e!v2F~J70fA8y
+?<bIU|3eIp2~GT3bKnOr}<`huky-&@--8#R<`b13vBWX;u%d4lmSJ#KH at QSL5?Mdk(>qbz|65h+QJ(>
+mm>bV$*k+5J?G$lMXPrpttRyu{ArCnxxV&6w<_ra&tZ>=7aRRg#Of#o&m}n*da_uB2pn(k#_lz<~%w$
+SnkQ+aH)Jw6YaG at u&SC$b%Sj{jE(?o+$;Q{Ie)OqZU<@yYm9s(@}#N|>>f2U?&-(X0hr+0{t6WtKw>4
+SvO<Sf2<=~@{6FV9)&ypst9eNH(Tfn_*RDgIQA*MuUCnWqZ?T%@o0^j)AHmdddGioy?n{IK%GJ={v{G
+*F=fr6*0BLV^9(BFHA&W!@!GMaYnIwiEv66#o&VEdG9ouLoF_&j(;|d_&q>tL5?0QfDu1Xo956DSPTx
+0SiOO9Rc8B&XVbli7Pj6v+Ja`O-;PA4@<&68|5LGy0bfU-UPq2og6G7XKg{KQMhfz6<G<Cy52yx?k9I
+K523z6M_85<f<$rS>8cFNr}9N{&RE9^+6?!lYe_QuHPPl{!W0EteeP)#XyYctyEXC|$`)7oc<>7T&94
+PP_8b1GzR22a?_*u-UYb@;tIH_GRG()bbuP_3}qe#5R2*R#~=6K0OJivw_I~8E<EkZGK7|?8o)T#&Qo
+Y!OYtg+m8YdgX<l_J`YcFZyNx~zt6froq{qWXbO9HFD?+Q(Z!ABQnVcKS7V<M?Ml(Ey%vZTIMH<ua8Y
+y9t$PSQf$kD_K`o#KRbGj*2bz~GUu^}edbKrZs`XLRHLP1exp&2c?dPyveqd-GGD&>NVryb1e349Y3r
+~)fystF$4;-|J^T at l=vo at 0d$m3ux$)8M%ev&azd9AfY98Zq8y4O2MU(5B`l4;RG*Sk$$K^~+BX%dMga
+8_$Oy6F^Ml*TjhBX|rfwwr{u=UDC5&{2uMw5~s~8-oo=A|*?rmV?oAHmE5)`7x{$v at 2p^wU$Dy_p{j*
+7+{XhaX_|G5n0RwQ(F$HSuJz3C5z_a-L7cU>A}TzTn<#-n1gYRcC|s$_uHVm)Vcd{H55i=ql4UHABgf
+IKN!XJ8__}*7qW`6R;!3bg0=+2Pdxn=&(NyXAP|5iy-1VK+mW=O6wnD_=nCkq_VmDfmBR)`orNT_!)D
+C=7`Ot6tNt7Gz2DgleeZqS1^OPTvOg(H4pyRGIF at _2+;a-1O_Ne(m-2k{FF?H}k6pgY!PWcdKcKact-
+dXCKQH$T0gO8SNs~DCNnXr*3Y#fq#;Xdk3v@#E(VP;-`NyupRU_yq;BeuQXn27J(;PH+9X2<fb5V1 at m
+&S- at 7|p$bNDh#N+48VSw8_I}>94H)R-^qsgW0AT3hLK;;XiVWUU=JjK`;2_w=|eg^Xcc==}LbBpE+^0
+a-hmCi*tSSbHLt5lJxy+P=}m*1un;BG17OifqzR=$C9eaXrFqi4Xg^eaWdf5Xy<TBWDR{78~P!XE7$a
+DsQvTIQe at 2)M{2$#TW at YIRP7dXSrLHzXAm9p(cP9*bLl+o!ofzFqP_#g`skOIbOYsz$*37gHacgLuB0
+?iNX`6 at _2bMB$Sn`-LF5)d9bwNeKo4Js3qu3tWrskWlX85%pvk8dtcA$^HMgV8vEiDtXakw4Ubk}|e7
+Ek$7~DgUK6 at dD$))x}h>=dn`$c%?ZFt++RlbLEXb47?nqK<hL{wZrE1FDeu_g4Dd?Ug^7qW=c&>tX8Y
+47Eja6ccMM8gAU2NVQwwe?k0k)J37H8&qxNI#lmK=Jf$grdu at H6pU84<mvmdL=g4)hT9r=^_U67Z}0;
+&#NXe1BBus)e_9EU*`1%uq|}lmtfs`ddj6<DZ@*<zJf09gNJ$*@th<)$x>=gc$d)|*@9M#+(n7!1c1x
+Uy&S^-0pZ_*hcP^$#L~-v5 at WO-P)?va$;PMk<SZDhU9&h4O1Z`OEGWX~l*#xkE5v6-K0F(@7r5CgcMf
+|^aj=)o&R#Ql_PWvvuV4MxHWyyR!|j^Q-qu~E at P^r7*E|d}YdLP)#586Tw-Xb0&4y6iRs_#1D;J5|iV
+c05E#4 at hV~}Mh&py$l)(Tp12-X1*bn7x`Q9arxn{h?!9cI~W!Uf0*1b}$}yB=WzShl`;2}CBs3uZ9~l
+p5O^nTo47`Ky2eGMNNbGhCg`nWS?UrUb2CIu}c*-}OWuTYaAzwEC1XOrz5-NU#MbE?)(6{R>#GYTJp?
+irp+ni%<_d^YE8$Zu4is;Z*=p1Q335Fq*UxYY3+Wa#sFyTJ+NlV$DQ7ga=Xq%}FvV*Fg4#t!G*w!{#?
+vJ0q)Nv~f1awN#*G1&lz;%FwRDx at aa6*@$#u?Q``tO>Z4u2X$|pNZu?t6g^{;qmE^ifJkaxYUjYfu2-
+|=&LUv5Ht3d7*0h|=Zyqm49A3IA2j!T(wOWS<5Rl4|BCnohBnN9b%vIAWScQeHci6S9npP5phO&a at Ww
+Y#h-u6*>Yj`a3On&n?BM(C|_glb0?cJH50~YDgT4*S$07_lIQkPWf`cw<9O3Cw!L|i+PlXr at xa<WOBA
+tyJAm(Xptw6we2hJrtFCk*(DCSU|L*Lhs788WF^FJ_rgR1TT-^*(3U0)M0HpwRX%M2GL+`X}7<3Uvu>
+lOZhZi^$1Z;m1EiGh(Yui-fiToXlvBcx$z|NT!A2l`_p1F9rKR2<<fC{G1d*hXE$;Ng|ocuR9Vkc;|e
+ScnS51m|F<_j>WqZPcyJS1WP>163s&BVK%7@$$uY)Sx|o6oD+xkCt8?An&c!gU2c(juS{<fZ<lGF=&6
+Q&0Hg|JnjwTH0Ki}j_Yx&f&R^BVs9j60*1LwZS5R#9V}A7-7CSSmZYUKq&B!yR^>w5JRoKsz{$rxm*`
+=Cuj-}T}h0qD6BlmGa8`}NBqSgAil+PEFL5nYN0 at o^@ooA>oLI at Y=<<5)|AQ-_4NlIt21$rTekN(YNW
+RY^@&TK#f=6!WRkPq~+<k;wB2PT_2b$T!}U_FS*Po$G4$(?zaY~n`Ii&MkO#?m`2X(F*AVN4F-<|il>
+VGk~H^Iqz^p6w493sFU26lk_e^8#iCSKCRAUD;$+<|><bWz%G(+QAI2pd-+YQ=JcrbRK6*bs(IqOmS}
+*LMx!h#iWW5ehsA`a&*|br at T;HK{(<@b*cI(>~?8Exaz!|bZi_Ot^$_gGMPmzwCzac(&p^(vF(BSdKM
+<uJp*n~ChT4xeTYR at sXxJ0kzVzC!MU^m=Mj?2q?Pr*TrqKJ;Bmny3bN|Vx1A~SEKV8+70_Rvf`W7rH+
+hdbDGi7MLC-pG57eNnw!6-W<6G}$k^@wCWi_u%Q&vxwZ*in1D4K&59jC2kTp(fHlAn=QBS5U|s)oKbS
+YMyDMlI}<22i8Ga?Pxzi_p at OcjF|(1($@`YHtwKrCpce?j=U+(@8i~dR|x6*p#A#dT=>8d;*`39K+{h
+ at 8EN9H$GoJjEmsgA4#%T_#}Hhc8I+~ud>(f2z&kRC3yYn$DzLSIO|%&HC82zOXqP`AI^A6h+^7}LrS<
+8KY&ugh!?4GKn%m>WO|YdawMtGY+;7BSD)K(!7v0Wr_t!8SK;v046Sy)v4Vb-&@?o!Ky5m33CwuDpqc
+(zUoi4rF#8#ckXjjbtyZvHU;VT+XgwF3kZd{08S&yj8rRLj^vF27T-G;mViU(Lkk4G%^hLP(pYoY88}
+ov>%VEH*Z|wLIg|@8{w`ue0U56$`W<=!(-w>mPSxo85*q=NNvoOTPs4W#Wq(>QxT)_6I#?<i36rMha3
+L5F7FTq<WU6oqf!GD2=uXb~5v at +c6BbCJtWo@w|48M||TA!a$%r%}N=bydGT@<V*5TOSBDV}85)3;_9
+=8KV<zBNiNe%7xBz9s)?SeB~7n0gA?atm3{JIkzW8qetTXq+J<!w)#*<gl1amRc=uIqh?44F%Mf+DR3
+!hbu7b;RoE-MqLiW(1+`&QaeOez(husnv?RmVR3c%M&SMxWXZPtaOF0K;^`w`IwnJ1Vm^6~VpUM7DHP
+e{-ny80lH?fFD!tj#tZ`y7$+!@O*FM!z at G%swr+>n*r(bVf43}=$8b5S!Yx(!q|DZ>@T&{RL57(WG0{
+EtXXZ!cKk|U5hP^oU!3NT)N73@?y#LyikrXQ3qw~J!~dZ)Zi4$*(pqe)E?rQ$_c&AAAxVun>8spg at 9S
+3pkOFV)Ix?Lylv8t#d(Vqd2VASp2ci4u1yZ!31dQ0J2+#f5dZdY3H=?71dQ1F7xg%3^+vGSi at nQnH)}
+=-JK*WSw0e9u{3t#vJ+VuxNFCx#6ntoDJcX&pJpBU at Sji<)p&_6SiUzPjCG$$Gw1KjDa-}Q1`6)F`7Q
+O9tWKngJP|N3#=fzxcvwxI-x!u8st1gt3J_ydIE*oI=i;cp{>iO^L1;nfx$pC6!U&ub&S<PF+90k`{8
+8mhlSb?XVC%!@Sv5e^Z9GZXSi+WJn9^9YTA(%XyTF2$QL9EV)GBzp-uy-U68J6pWsTY&mZJ&4fw7_Z;
+1o#xX8Z(ciq<(^S3U;?PR*wSZ_Yab09eU&Vg6FAQR+yUs?One47%se#OC;GM7yYTB#f_Ow9+Py-FS~-
+u$*R;$FQfCKoe6+++HJXtiX at F967Q0OR~*en=C?$y=- at G1srX?WZe1QpuNbxF_5?T=W%aw<j3nYJ&Sa
+SqLdvyxQ9%>7T4xk(N8!oIfLQN-4xmFq~V@;x at 9j7<a*rmruckWT}uXXauKHE+=Jt7JY(qASlS;ISk?
+QsiKv{)gJ^4Y1ZW&+aft93G{X-EVYKLdV|??Ij7In<x`~+)))R%KS-DOX$M8KZe}`@($K5sDD%}!KfM
+o=E?yJ(89>IM)XTNB(hd#th4q%n^I at L#(ixb at Ow%zm2TReeORMRi^*DN<(KaZEF2XHF_a^AN at oY(^Tg
+`+)LE|u0?_RJ{=~S#VFl`QY-NR@{J#JaRjm)!8Kxo&K_;>~%dn^k^Dfc9|{~Z|5a<3J{z!&!n*ewzdG
+TPPIbn>1qyQPL-<%+JiVKUon)5@?6eQLpNqf*4R{wxj<>IKcm*cL&~)|<rw5(}E^OQPa*`0?<AZ)p)7
+G~=!*0K#OKkIR9#0aG176nEl7t<yHHByZCO?4s~Go at A)YNKB at JcrEC-;-%G~$^HBcjt0}@u7^+cg#(D
+wPJF224`4%g;zP|ofKA<rkGQ87dDp8W4raA8A~*M#K>O!VckhuhgBH33D5%`i%dB}^_;N<jh3XtHW<!
+fan|#hHO(M74q13#iEWQKcrTOHRHA+o)eDRv?C@&ypHp!*XonXq7+>`KOVZrj66U`Gy%?apG;$Nv$j^
+Q=W3H1Yt>x)W8YA6egGNx%8*VJltJ at x7Y=uFal43_{zKFHB`P|b_6v<uN1Lp&**GKi;JS-i#>VSD2vM
+6myYQQ!5_g~7;3P%DdAMkx;h+d9QvLmTt#VcUfUoyB0rfES1`5HVU=@mENIPo%ttCTV4d(j}3;G{BP>
+>|7PwiTsad at p!LR)}4mby5(F<(RLOa>3J}0&!G9A%L+(r0CER5 at gnJcI0%zS{=wAVFR*{SYUOh1bGeb
+{P-tw)SGKI{+;#{$cTwlIn}G at z#j662GoXm&(v{eujI%Zbw1PcQKx#1NqkUtiE(B1ThtLnDYAv$tP9C
+ztx3*y|{Suh3e)RCs9e_>@ss%it_+oT#0Wn4=oztZOx~t&MoK}V{BuV-zX6<I(wKR|qtO4Tw at nW_xUL
+P6|ulMPYTG`=I{R3lB7zD#7In11V3ie~)EVXJ%hMMK0$Nr9_I{-C37eT?>xr%LOZ$)Jb>%sM~e?u5df
+o|M{-T3nXNM#F%ZAp}5RmD&V at Bv|fRkQU_vmTnGhwjru^YqZ2ddRJZYV}a19`fj+YCZH_J+!g{hY2Gt
+!wBfEH_sZQLAC^Nw+ou^k}imaRt-l?1gU%GZ=<BHUmvAM&gyY&8sD-O^3L$nUMCEWs{)5h%x~37lkm3
+7H*gXZa_8uQo66x5>`p9~zVnr)Avv?*yXy=aHTbsEdi`7Tk0v(U$jqX1&ZB3_>X?s|p}RrA3jluY-9R
+P2cfE=O_ikV=3mnn|r7XaP^j*0EAvjWoY_SX30Azgy0&-%mTydCv;G$9SPUI|B#7^XfxD7KNz7D97QO
+7Qwg^(e48Jr`uMcMW|=J9IpqB)5U#&p_8(C#wKPRbr;oAx at 4fviq#2C_P98pyIb=rcg%FqGdT6-bYP@
+LVKNmi0ZYdsm99D^v8`eQBDWOE0A7_ZTftLRy|ZbTKWX%U>pakGYVoT5arD)%tWd1Aod#K=%+ppMxRo
+UDD?|Ej)-GoMgD<TzIinPFkC!T6(vOLm$J%)_T{m_0{`1u+HJbOk$RpE7l}<(J6AnrG~rM`0yeJ#Lj2
+2cNnqa)ltpt4bRzcOt7qSi6<4T``$wbH>*#3Zx=(x!=taFz8?!Vn>AQO4;NuMC<I6HGhkpyTd;6Bs9B
+ex7cc5Ok0V27oCeCg>jTiHjIEfVZ`q2O4uCOQ`9Vt7BkVo^7(9l)q4m`$)qVSWK6G;j at ZtYPPm$G3M(
+n2uMgIpVKd7MlW_^{?HIyIWH$ceRtfo&^uS&1{87uoHTucEZ7R<9mTj#O`{Zr1P#*%(@p|Im1IXK$fJ
+DgTbs^?h_3Hui0*ZPEgKg at 6*^@l5Y+})l;n(d_8?mE+y1zNx5eb>3B?1ge<mh0Un%DVl6;`H)@!+{8N
+t8Po~MD5-ypX5gj$Rrq$X=_no>J@(J3-?zrRUHkb+W at aC*~WyP;$<m3q+Czj#ZfwKuv_jirB>)i*_^s
+j#uoaWM_X~bBf?rfN|kd)z99qRjtRWW{^y?8K!Rnv<>dIL&smpR|J?hUdt?O##ouVxNZg6?QQTZ7N$2
+r;<z*{W<2om_tpz|(cW#=;w#PvU%G4vu=jmP;Aa*z?1`<98Tv~^*D}=V|04Ol|Fmz%*STwI30|xffU9
+R+EAD&|gpg-e*Z0iEfSKGL2Y{mk^d-BC|X0`?}EpYO6H&^SU_oVWP_S7Q8lv5f^Q{ROIH()hy!xcVy1
+q8xY&kht+hf3ZIT8^9v^g;n8 at 7H>%JGELTy&O0Jkp~bhpPxQko>~svt?k7oL)@>^aX$$-icCNUkikzU
+&($5=R at LIa#QnIO(XSQEW%`Qiv<PO9CN6MBI_!(vx7+w(^qQQ!SmfOmXsS2S+HeRf at P<Q}=522{N9TV
+RHz$n<;P!~_OTT&*uH#&C4A*g>r{B6>?|QKS0tc_xyM3C`?b7%F_Bfq6jNbbAHHl61pmqgtWfrxsS8+
+eB3%dQ0=q at yfNHooNp)Qc9J<g-c2fuK6?CS*@_<Y3TX^07bsImLV7a(^`RiFe9_iP;J3-Y7=a{!fV<q
+CAo;l#;4`sr7?v2v7n957xPY2zuE)HtBBjJOFS(#~xsi)#JO<3TV~>ce0WH1wQ)y1XGDEViD1rqy;CK
+2i5)i{8x+T<v$A6DPP%O9k|W5wMjyn0gO$0RiFXN^Z1(nW0IO!ya7HihEAtITf%Z6p4BjsYk2hnTKLN
+j9!^5wt2c%)4M5?czW6k)iIFATT5q~P!!_~Wh0(^Rd7bi8+zMU&ew#;A~H3zU30_FDxU*<E+4_?@JWV
+GL#&oGI2eD0j^iG(<S3Wy(pYCC at t*(&A}SL^6zB#Hdh%o{Gjl7TCm;;i>#K3Da~rN8a~IY60#82x!sK
+OUu@~Z!&tm#4RyB9JR8OCRFJ-RkC53(iaEA`qSvg<h5PE{#?9il3=vE`oOe$fXLUnQ|a{r{x3<l(&cQ
+9Pgi-lVBhA>%a%o>Fkc_f|DD at nPE;1K!f!|X(a9rx>>d=P5PWkuptgg!AiqE|!jKIs;7>6dD%Hudkd&
+f`y-#PP~1>yr+l4LgD?<>j7XB~Pis!q7k9kQu%K0w(gO(91}gO|R_*6e2~gKG9AuW8ZF9pOlMUqtlk^
+Jd^38uh+omV3i#`MEpWq3sYZtGCy2xQu4^s!jj~T%2KQA+?FYRbbF)mB`F6JwMITv1hpcG-A`)l@)=E
+>B%c`;$CIesGmRXHp0!1LGAvf+R-)SWFCTDo18!@Pm>)FP)-I!uRC3&mgFtXdO*5g^jvBt5SI2_^;74
+B>tZsR_y7J~BG0W&D6+Ja(B6F`^k at Bv?bprB5XO$f}@OyM|Ka3$Xq<SqhqdEX>AbGA_rp}HfxpRksQL
+EQUne at sMG$Kir)n%J|9umi6>(l8xeF`QlrOFDi1MYQZu(_+(nV}MsnoW2p*=@zd&Q%S}iu-RFc-m)aP
+B at s*8Th3O7<e);a3M`5(qO+dz;>`5FUG6DsKBSKzy{h48?wMIN7hy|!qyvrztfBjr05;Z%Rb=cg~-d<
+jF&Y}Pl}xzm`^(nz&G%^JDtdQ-NAUhQK{TA{4LBrZv^*`=>Np*zrTptHJWC2f+d`y-^lDa{{}q#lM!a
+Wk#<s at aU1AMlrj5ljM*7rU>MI80BEDKWXteqc7NE&^&Ps6GIpN|>^=q0Amr%`e;-XV{8)Ms!yDe&1 at x
+vg()6F7YFgqf;~)Ezve0&lLtYj_pW at pr=IGqQe5T|>=*^=uD%hNhZ^Hd%8_<}Np=~JCHt;^WCX>18+?
+}D*Ke`MGZP+i&FnJL7J*(^wO3Qro`b@)5uhd7c(!YnrV$fYKg+MfE^M&WJ-E=wz!oZmI$dsA&s|}9qa
+9fKXocExVi5uUbXSZ%)?m|)lHseAsBA7i%p0?B~Ja1Z{<f-|nB+ESxIpW9yG0<p5N12g{Y%-~110Nh-
+u6Rx=b-f^cCehi at OL7q)^J!Z40fje%N>_{LE;jS7vKBzLX&N<uio-(bCn-QmKGFGMsSO?Bp=o|}A=6t
+&GNYelbSx>g4n$2-KK=72Ec4Up%xa+ZEb_|6rAkA;>usSe0}2_4nuXALXkU4QT`cRUEG;%ix|8jmVc|
+feI%usICsa#$<lta8%3t|!!%CflG}x7fKJ{PqSZM-Xq1UwFlQbdp{zKE$>&U?)RH<>eqD>aX<3IwBjz
+c at D9<l=~Or^pnDaC?b!ajMUGw!vb;g|A<{%k(v5|qlkS;)?}<;^C7<;{Tw)@l+H|Fz>rTg#bjv5C1=u
+hnWCEzQGRdkzu8i%iDmOJ`-CEnD;wp<_wjOa%5Y;2YX`BDnP&2x`_rXJ$(?8R%sQI+20qr$7PBqJv$Q
+9pu6_bQv_uOER at N8Ct<1ruztOn=H6}LqlCc`w!sLRpStTv<BlcO*Q at D$_(oO*CMpxdLq<p7TVCv1wAO
+c#g#4DT6n8!X(>8K8v4)+FQznr1nYMl6XYWt+ZF0C&6_B+{Q&~=az%T)WzhoY<HS#xHP>J5I<&qpyug
+GWf;n>33`w1qY*m8(SAU>+9DuWjGDl49Lae21ePIc{pm!+r4#^w<RIA1OmS!zme4*2lOENoZwDu(#Hg
+%?}p-;+S36H}#X}WXh!V2bo#-gnNzX%X2_c(+HtAOm(0+Ok>-HnYjtF{gkAWvc?o<1A^XrvJ8Mu7-Dh
+>LAEcjUBnZOT}b*v7O)xA1(IDu6w{bsSXQly|f6e2%;21uxi+oJc#y3D3VK98fSA>XLHlbALyA!jsYJ
+zb<eclB||vs+$M{mDfO%W-e;K?HZe$G;hx87)ONm+wx{El9LuG6}oIu$uV{8;IT)8rd#nSBMmT at 1P7S
+QB at KN?D9+2Zn$!pS^vJm>^ahSdb5fr3^|&S_*PO)7D^R0xnQCh{u3LFdf^-r>gl&TLCuIFiE^&6bVxW
+y%B2bXBWPGXG2{e(@DF63F!FHjbkN5HN86b=Ik%7+Sienm;964r|BW4)+#9l@@{c?2J6<t3S&nwC0*<
+htbtdJVaPCSIuDiBc{=Jq(u29=n at p5(Vu$qGg#btx*D)hIV7v&BCKbC)+N7NnFUQVM>YfsdIav$Hbev
+TXGVq?}A0IK)V27&|zVnR5<3K1(kI at J|uYL?oaIz|&%$bsz%?D9@~BH4;t-gFyk2miQ at J!3 at 8kZI!DN
+X1L#foR*x=e~cT$i6Bm!$sY(IJW4Cyb&^Z09A>L;s6_=GfgW5tc at 1FMHpDQ9>*kMjas4kJj~3U at Bc&e
+S#Ji?2Sv`^Z3^3P7l^^y1)<;PU#B at qTpVobgNv3e1veXKuzSyaIr+XZeB5s&X1*4e$o|G_E_tnzMI>X
+5lySvnC5)D1Omj3ii%DGg%guc>~t~=ht%0bW0)Pj%QSn#>#V_fQK;A`pjy3y_w%<pq^x?Vc1$IxGh+c
+7ff=fk9r-Ys{s<GbVN%>bnz&N}rG^jfD{%_Qb{&~ci^_!yczRVM0oay;!B{~fkJYG<%70_^%cYQmDH*
+DE~vLj7ZK{PNT$KDn*fj(ez~qvH3$l&&o1+al8V*0ZRnH|5C{n{v_6v?aFqKz}D^<g?bMYX;w!KemYW
+k|XVza at -^*Ows^36z$<HQG7Yz^_u)QOEh5?GfqDZ1!wDUpCKGnusQ}$Yib%_;tPA8Gkj2k?qJa>AFaq
+m8xUAFD)C4T0*LVN!#IEKV&2?r26r7?f1Mn$$<^ny#<*MKvXyEJd`#oAJKdK;z}a4XH7R2r=Mi_<d#<
+&UEiAs<^hT|}vApIJp)HSbH+4mYHVb|hGL{{(#10 at N9w+~BvzdHY&WN!2o>!iL7h*^svm48f%VZm-6@
+}Ybj!X~$*BCg-cUZWVJEpbBcQ`p6KX?{p19DfxbPFh1-UOsvN1BexajRa%=HI9pgnc=+(D5xz=wiUuY
+FDDh<tH^m9a*4#h&2OIUdn+k>(=*xD##!ZK8XV-0QFnu=*)nb!SL`5b#U!fR<?B-uCk}Sii9>a4zwy>
+_9U%~HP4Xi+~$Xz$H{3df^{4E4rriOLfsiHORX*H4?C- at t)N=if&<Id?C>JCh$%<D@)~P0Nm<jxg&|F
+x?@#0AWLA_iAEpBdOL41NI2Tyqlm8k{;%vZ2%|@_z26ELR`J6 at A9zbh^jk#8E7*|$wd4hJ at Kw4Y&(fn
+n)o(h^!{s*I^iCW`_IAjd0>75j&c$yET87>CnLYJ3XKfp-^GE8F1pW!5`%akyl94I<(cy~Jj+{YlvxD
+Q52vS&}|vgH>iMoY3C7fZ732G|eNU^M^4|3;G4(qDPMO->CAkCIcDjFdd>#J9>R<wQzO^?K8Cs at 6CqK
+n}HhY;hiMIb)XGPod>5mV@!&C-X~^A#KZSzt^X4o_T3ug?@x0E(wsYEpopg_ngO50-4N|eqCD)8Bujt
+GFFk;Mdl5dCg?L#uU_q=oAph1ksYd-HV9 at msvh}1`r=u<|Dx+wTt+xnKPiIag=3H(D8ez=d_29meIjV
+0m-py9f)}{<$=oQ{zPaKm!ZFu8A2cKM4w|6OqYIU~p_KC-skRS9W%26rI$j#%r8gmF$O=<6=-&zD&Ag
+NkioGa!>D5M(WXbZJfLbZ4*i~wqQzKH(h+E)8tddx22*x69H1j4H2GK%1C+PXVqE~{6{_I1xA!%ZV8b
++U3 at X_xsHH<LtPDYf&CMj#61yu?YsG`GWY4U)(5{!tTncA14dQXznf_ds)aa<-G#AO(-em}v8ra_X>o
+0^Z-)))rQ1vFpZ2~@@bKimD3zHjgb+d5$^P>tPx{{2xbu;+c9wjX(aGz+v{%mRu5c5fPtj(Puo#{!Sm
+T*LxE{C_dFUQ~fj9;x^nNdDj6Pm%l=HD5m$BTfZtbRyWsw5(IpS{v<y`t=A(h5~kTm35SlHsM<5GM}w
+0<V_BXR7~9Y6-Bn6O%MwzF2z?~#dLgSR&ee|@hC?811t%bZ~~KkZo_fj8A&<X$sg-`ze3x!I1MdbN$P
+kK^_M$DP$KQ&7jPNY6>mD#8f9P6^;Z3CHSX6EFCRK8WjZ5?udvl;ZIWHSgGY@%(aR!C`q^MoW3MHv?o
+gKAL8`6t8D0pXjukAfCtFs^Ysz^}j at nz#VELQ>NjS1)O$Df}5h*KPwFbFI-BR&zDvTR=>b(^|NriEI)
+m0TgONH_Hpt`gooC at Pwf;zwA$Eh${9O_jSKTU- at Fg&$luh|HPF`QTN9ELL?jQX>-VNH<Nj at Bz%)_`Pz
+1}?+EsykM&Rg(r|<Ey;l7#?7;(ZQ*>W&5hJfp;MJj+^Vqm{+tBbQ|$1An4+G)1 at qDS4b0fM9CT9`G}Y
+9xJ5sFZK|qL-v-dks*ViMguY at s^fD_LOMYxB9t<kOBPdWIp36lNNBeMIg=kvrqbC5MJ}hRKSoY6?*2R
+AM19lZbeZ5lAhwFZt__|&~t?KmAry)bj{EGVUa+5ecXsV?*;BlpT1vmF@@YQ<h*jrM&Ba1;*u$*q0&q
+;?gRsijY0V~bKPfq?07q=Y-G)>H+t6#BtRZJ_x3h5dKg`aFb>`m?I-1wK&q2*;@`qnxlJ|&ZUN$TuzG
+<@(-o0x^n?cuG;IM9q*=1-S!k<K&p>~vvAqzV^l=V_Us;qe_A?Pidn_KvB-^D%D~_2?_W;y5i6Poj(2
+K!6<?n#bO5s)7ojy0+uuwd|nZQ!VF;L|e<bEa}%!lC^W8#vzA8GljMUpn)SNTIXd+8CB}(rRv{VLbon
+MIY7{(Bk0gf&f|;FC%$Sy%lwt%8N~K7T&<bL&X?N5RbaSJm#m~u%|(AbXa+O_+HfQRw&2(sS>@)H3!y
+<>(ihkk7(ua);m89DH_yuw7l)3E6~cjt7l3EbJ8JYs=5}O2^Yq4PnIkP#b7_SEVu1ums<T%md?1q`du
+FGZ!ydy7jzk_iGsLf2fv_MPHPfgAo6h4tfB6)HwkJ(aZRGLUxRKXB#h!zj(J}M^N0L{{IG_htOw5F~%
+`KEHiZn#(hS1!stqnK#(`<InQ4(mX0+)H$--Ood8EySSl8k<84qF9RwCOr8Z89;(0M}{pawEHC*zdyv
+y3VHxsNU5(j2;ej7zLVY(HAjCq3+WPdU2vT<{WT+$V{7!jpa_!0k(5vd8w2%-hF;j(SweQK3_ at 9cO>c
+d*7|&4glq4i8r~_+_0qqirhw;8JH;z}VEQDzn$!<a+Ix7340;1JM{pvLhHABf6IdruXO{7u-tRZgvEV
++ed{>eYTCM+;rJuN8d=c;agUK>C6ce)syLaK~C-p8Lwp%OcXU<DQPARDs^kI2 at x-SI2PqH`O%b^ueR&
+T%4)937S4N92 at Zh?|jN9eR<C!M)t7IPffM>%~8b7CHRS1H3<*fO^~b2D06#+=}H4xk-3GlILr^&w6AP
+Pxqi!@OY{bZ8Qt)3;Gv{L&+_+eshlA+PBQYPt}n^|Didf5(zgjQp?5id|HeQPSUT(uElmG`rkm7yp-~
+MboNt0QH7HAAu?HxYB^<4y1Q++!}_0meopgkE;Tew&vT&AXA{qC+`tGslybYa{Z>$(8esFjmcX6=2;h
+>nfOKOC<LCDxaYvA^Ad~Iofms&v>nkEuZe$2>s#{4IlylN9!HCh^eGJ|+8c(IhGg7xSa&b&7PFLwcRD
+?qL(PtR-a#?h-k^m&C%p92CHk3=(1#g#Z6p}bA&)~EJLqw6?o19Z$T%TdTWYix;&I45mXg>DkU8=vc(
+jO%s>NB=ViCQ!8y9=!JdG~vPFen6y at i&4;zPEK)UQqg+(0g4u^be8Qg<bHs}`lMpLp_v4s`1LF8r>5-
+xT;cWa^f7m)G?(X?Iec8uy&UWmdHSK5$u9wZjKHYh+OxK)-SP36HnTIQRmt%==%#3B?uN>J(>zOeqEq
+xugOY at WtCI@S;rV%D9KJQf`9}yhu^K89rDA3oAGq0M4o4phqC<LGg0B{jF3B?|UoN!f~vHj6>rd{a|Y
+*d at z48k0b8s!^MbDTpUkwdqB_(9+^>7*w(cv(>SH|q+1- at T7!2lT3c)S at qCe7bJF@0ZYPMAtmeKai^M
+EFomX?7bcmUHz(L1U;)yLy$#BJ_OX-(yGPP8hO8 at dEs*!jJ4}A?j375D-7tf?(h#e8pq`o+tXElk2J%
+>ROodjWo3<C112TEH9A{9L at A~O!T4oM|2WF~QD>s|f08pX0hF39`!jNc{KeVg$)oLc-``6l|pl`_mgJ
+SM=pf+BlTHn&vyKbC>l=8S)n-LcbS*aQR8 at 8}0_V7t-9MSWa1*lV=3!Cs^B2z?#h4Qd3*Al-7$w2 at Q&
+xam{h0mR*9YF}cuek~o6!<FXZmZFySn)5Apov&`M(WI>d(H5cYNi!bGb(qC<L31sXe|euFs$A!!33Mg
+k)H)Y+P|*vC^h- at kXl!-y7>6tE$1wJ at e=z$O+CH&SZay|q8b{)f-ij$7SLya?OgzXoJg%d!ono*MvuD
+7gLH)C!{#TGiUqF*H)a(FL)^lP;T(V`=I8?Cg96*FK;;yJzS%JhQUJiOayrx&+NjDZU>me)0bbc!*P3
+`myo76&>+4tiyM at 9wN5NB4c@Z=2U722M`3&u3S!wnX!5PD2su4aN^MzjL?TK5U8U{d0TuBZ^Y-&nPZ3
+)}9+Ba=z<hCDfG-B2PYZ9- at T9*;cW8Fp&bLfcdbR12ZSCfwfb)rLXgHz&rTH<8)zhpsqP%+`f-4vL5U
+EaJmrW5?VT6WShvUJhEqo?h(7_FkjcgtiTAk=HB+fi8p)UZ2|9+<WT9S2$@owmP9-BghbZgY74pg>Bz
+QPpqU>_>o_~Iua}UVXAha4NYtvgOz&ZjDt{92sQsiCev1WXX0fT6~pk5CIVbfAM(KL*9{S(NXf)%Xjl
+a{Qkvusni1xoX`By&#=^RPKC7iuPf`C5bPHl0w5%YplDIcqS;1PnaJIgFid&&Sf~=OL>!Yn7fT#ev#>
+2eC9%h^c6pnOlD(>K~tr>3lcxx&DZ4kJ(<cKC5k&iQ5{<byywU*}dTstpa%B1-u%!RP&jCw9>3tx1BB
+-z3w$)+^hresObf}#XSXC_J*c7IR-iYkyO={=K~uW8!1)&r8^I=TeNtUj?5Z^XNfyg8~BOoAxZJW%=)
+b!Rn=Ib_l7E-)X0`GIzv(EGcLbr`(rpwPJJOd3a(u9TF&vWu-?*MsZ_8={#vu0ktso-6{x<<HzYth+_
+J#n+VPq0!zhNQ0!4u1p&Ds`QL@>LwsJ<DfIcjIy_jxpzbT<;}g~tn%g_y=U?GH5&+{JtHlq73qZlb`R
+9(b9nSpZM2UKsEy7 at tsi$x+VCVX7)GJv(nR{?q4b*m&G5-K9M~CR=64`|1gdI&xTcTp`+yy_k~igZ(t
+?tYgnd?*oLtb9D<^N?$b;@8?CVp_q)*tFiP1S2ox!3ba@?%dIK;}v(13VDqpMGhsdG`?6!uxX^xrG-J
+anHP&h*lUDj5Ue_7uwo`NeF^X~Ud{gnjV8vn1LAR?R9AOpl~|=eqMFeiju=KyBlE(*0=WK}(spE?ca-
+gdT{eTY6{QXsP-=Fn7Rw`di5t(4xGHTGS0K>K68yzSg2BYZ2ge6!Gd7V+^l at B~f);kQ?!GlG(bZBfaO
+3mw)O0s%S#;SVjR9kC$WSHoD9b4+YBy&FUu*DeTKGiL$FsYkmGY6#fBvH at lmc&aUOShLjKI#plPaWk=
+hphn$CK#vXQl%t5 at fZYAF0TWLPqSK+^Qd<+l8RTewyyusl>-`y9Vg~NMAt-9|jK+VFlaCiz%6R(#y7t
+hwj43}6ud&8CCIU9)mS!GGF9go3neio*YOZ0PamCy3 at M$Y(H&33I2ZNnSYI0)yAtRXDidcPHMkQ`*0o
+!n|KU&c!|*0fmdvKJp80IMd)_#jx<&AhV6s@!9*TjpI}-%!8epq10QWAu-&GcR&JIG#QSpY;PaP{BE~
+I3{Qc0Nc5P7W#3FNm2OvuRnq$(EmYy`_bPB<Q-||Nt7J1bh?H&@UEor;NyTr>lwDQG&!}iG|umnKNaL
+p1lRDY)sii7??R3njI*o2@}mi}{5OkyhHtw3^lq*Akv&1cIsPY1loQq_J803CLt1g@)$hZ&7KbB{{4l
+&L@%;|Oaqv+LzZpk5GTJjcs!Z*RO&wKcD7JmES?;vRaaQ=@bm8F}M_?J0N$x~GLa5)Sp&r&@<W7XajV
+(xRA6>?Oz-tHmw!^Otew*PZ!f!47)?gbdAL>;qf7}ai3U3PUlkh$X?>>0<!Mh*c{qRo0I|=V0cn^iGx
+HiUF`Yg#*Z)n))L-2bCeiUOo{HoPmv4;`E(cgOOjTpf3f*yhHNWq51Ylgy`%ZH3HC>|Mu-1Db*4?(?4
+)?&Sb??X=y-NV|O8j~~nn3Uj{c<*6jg1`^o0pD%#dj at _TRhAh?+80~o&sp!CV!ijrQAHze2F%D<eGZU
+p6xv5YK0FEzfJVmbbBlZmQ5GJ=wU!IZ=HSJ{&jG(e_!Yr#7W_)#w`eUJo5|4Eli^(m??QOz!#f||4tP
+7 at ZHKoV-aNc{cw6CZy>M*wK3WOSHSiPR*S>bt*i=~n>rrFD!WWLi=(r2UZe&AQ94k}4b?yfrp#PMYZu
+tYSX+wG=rwq?a;Z<LL?OpOCR3dR{$%}#gqXW;44n#%*;nm)_hex^C`am)Qyf0=Ei;*TjFoa8bi>#?|%
+%Ror5)|+bz}v7$h#hffLp1Q3I#lBkwU^i#k^f6*f!xPS&qr-|ZNsfl=W##S1ou at e2MbdSkZp(>M64<=
+lx`>6_UoZbAT-WP$Ne7Y>UqpXk1b?JN47n80l=5PO9L!r0NV5HXwP3q;@|omI}p1qqGzmxjBc{+RR~=
+<jEK_T0|42Es>UlQGC at 71zhqI}Mkve*!~FEY-?533Y{Q0D9KvpyRQ?OZ39-3tJ{XA4V-l at rwT8E(J8`
+StiDO76Adv$|042>qpz_s2;#jiSIubnvqvbg3)3}f3Veo=6Mt#Snlja;BDRm8sv;4|j8bmiwJQ?DnpW
+_t}^SOFSXdPxpzA}AuJ?`I-_$s!w#Eum|i3;VeS3tr0_z-T5>}2k;RqMp*@|LxnIGMhN(d*W-<8npx?
+q}F>Ir{u7xSC_9Gha;|8!SVAT)A_tkJhs*T1OqwVM`VV0D5W+b4$IkE1v)%231h2c!^ANMSHbqaYkbM
+ at y`C({;}+dH;2UbkFm0aI+*nP*aVGN?@#u7>7Ea9p9fSK5>>WXl`Xuo#UB0GkrNGXaXkI>(=Xs5IhZg
+3xa7 at OFk?r)somkeMH&omn}RF49E;;2ZmBewI;_)ra<c7$qa*%sh~lQGw!x|ua8WnMmS}KGe~2ypx3{
+rd_}#8}Q-4S3a{%oOVMI||L at W(Ib_ybd=MM?bTU>`WjxUM2z2P0Xm>w*;mHzVsHm7$iGJyu!7Lncsb!
+-FvZ31*|++g)W-3aPsx1xT&2-&6<;vp7B)}K!HL#A4~b0KOcl?K4jXn+8_G7f<@GoWJZx9uLR23;KTT
+9#x?add3AVX^8M+- at zvs3MGlg4(xdV27!h?Z09l*w$CnTlH>?hkBuyU*n;juFKgsc?6%~wmeL>bcb&*
+lFv=pnBB4 at Z;B(ltVqq3&raBA$6!%-Sx-Ay{hb`Q!1Y#BXX=iRbGzBu5PRSd(q`t%KtY~PT&K`!bMZQ
+Hio6wQ^AfT#V31|^Q#x5rdl|_xmp&9touAwoP^4a08S at 9f4j5yiZ`4uBVf`qjkNzI>??fPFaey#r$mY
+B7AS_!fdkDxED!45&Y8BH_3nPPe#|=j`O_@@N7oiUiOH<=E{A6oa1w7Es+=e01W0(QzJbC!MG<GzI6+
+qPE^6-!}7Vn90TSpSrS21rUZUo%1?mX!nSzj-@;HDTm+rp-6^pj2lN;B^omhwo9{)ycrp1}K=pkZKe?
+028XyNq!+4HtJKr4_hN*Ys(tM$h9JClU2WEy2D6>>jANS1Yhbb$=Eg-W27bKzocSFzUN_C<+-ZylAq|
+OC9JdaC9MhN<3gy*4xYLsIU!rrlt9FDDrLi3QMOt^4hwDHXr~_c)kiar7Q6icR?{-f5p>dy->_OU8Rc
+D6aFu+J~nCz%+$bSmkZC&7oLx(&}BUxE%P9euXIg;(oBn8$qk?3ACc%Z<2GJ544mfakvn<0xyK46G$l
+wJaEmWOrwfjLACFRJD2wdjMUJpi2?gEWNUmvAO3}`Vm~WE4Ag9?G%*1m*4J}J7Q><=Rbi)7^zeVGOP$
+_hJc+u1sa7Jn2dH0Rd8JHgF7{~&pDz&_7QP%T@%+f{G11PH0|0plRaTY?i4KqKr^dYG)f5R9dKR}TYh
+F^fxnjVeLjp67j%_k^cnnP9xV9e<c at g^S+?^<LP+Wa^aMZolQ;-|<L$3n-2wkn8x0k5F~mLTU&@0Mq<
+zk5KRJFiRY9$ZczVkYPbb_U$wk};$zP@(gQmu~wlZXc`))RKxl?6~JZ)jG2f`V6uS*pNF-LI_kOJW!r
+<AjN`<th;7G`^X}G*KGE-?<&Q+%_1;G$VpqXqme9G<Y-jvp2-mHRw+xVKq6?)?O0McxxKygoEs7ndIE
+ApGYG6glrZh>bB8eP6OD0g8trk6o70HDu^SPef^oIldlyVhrGRYcC1huHChndTwVu;+)zY71E_&_$v<
+IVAzN-gULFn at km)@!#8$3^aIJ3rW$I_d^DKnbK!xX3XrOo-D?lYVbFSxea5oOnWm}v%9nYzyz?d2%Dz
+`3}?BuA0nm+BGHDRwbS_=)0CFJk%=yPLUN?$ewH<*4;3b~Q643x*))wQap(F|d~gh9Gj8CYseZ!V5I4
+r6d{)FBndLolk!a8DEC9DISqF_}5E-YKX_~^TVjnFAwN$sB*;|T-H!LRB8_FIfg^>E4C|%MCd>hyMmn
+!f8rP$3KSjepanaA4Ju<`2PW*oLbUfV+`__h)8RENJTDdARhh&7?203>L at yEJ+z_`DAEbur$E00RadC
+Mr!iqO|@vt<0k|bWO4w}^L&~b4VA|p-+*PK`uw1YHX7BqRaxAC0cfG25^vRZ2#_~)ur=T5}M<)Px`>?
+FB3UF%jnCo%8Nc}9w$r|`JvfQeceYY)ab*pf>xE-PXpYGP at IH~m__-74jaG;*Y-fIhP~wYcZqt8d|eG
+Kj|x(Icf%$xuHa?>5TUb7F>k(0q&353TyN<Or_VDAsI{VYqN(xkdUM|4M^&5Hir)_l~%!{-<v0)Ztaz
+`9A%8&r!)yUdPV&FwGP9(RF0T(P?R9V$ZRa#t$F|!^5n0kHX5VzC#Ym=QOF1e2J at 8h)kY=%y$48bvpT
+?<V#_nJ)=?Kaeo?5QQjh2ZkAMZe#8?zXv~D}XQzU(AP1?j2fd9-<xRuO6FAR7CG_Fv(k)2 at HRJkE_U9
+6eLZz=tJp7Slb;GxG?k&%y+H?BZbm!tBPsxT|`w at A!q#OU*0^WA1W0~&Ccd#pk5d_qiMvk9unkt_$Z?
+Vf~EK>eXyezgM#$HOU9-!|%o0bdz`m7-r1{T=eFo^f_!1daV)=fENOuJb#;Us4l4n&rDsTeoTa!Hn~j
+F^^T984ToWOw^WA3<LPF;{*7BoAl|c2kBrU;YmJBL!PZp;J0It;SAXr#sNq)5FX2H7QTN;R;D0ukX2m
+ZqeA?-`v)}-~|yj;u%shQ^)dJPqvsZx|+_e|CI+YNN^=L9DZihwQ{}eZ<svEo_*|jh&?HL9%j!c*b^_
+Aqh>HPXy+d>{3{59W>-S@{W0A?x5H=4%ljb(?amNRTc``6OVFJ;>;#otTIHijP{Hc|gomMU<9ZT$)Q%
+^I<d3J3zUZ(m`f-NEzL%Y0G?Ui`78Gxleu;1s5H3HpUe8WCh7G8L1McD$A at oC}zya5XLfhT&)iF-l%W
+l)#%Wl)#`x1LT4$t;SPQkP7sL=MuY>r!`Jcc*tl`~*ryMng>FYKAOe4`*7I4C^dQuIFH*&{F^5XM68i
+DU`SxAAU>5AsoJU8RID+SMtvokFuAv)&aIepCeIXvLvdeuUl at au_=ldTslt9z8UwkNeVnocJ^gx2z7z
+v`DO$sYRSq(kT{KSBv=&5JFv$nza|f69?c^4&$da at yGPHDe+tQZe`zSCntWMPBJG5e7BsvLYghdt at _}
+TtwYMohzYQ;vUa4zL3X)d;&zB34AXle*}{R>!j*itj(Oq+1m2D9;u21y+{-R3mm1~fvvOG%BzRULy{J
+SCC;rJ}DL0CBEoTE_Wy{&MVqweKjY8-ze5yg{R-WiYFxOgX{30U~WWGLziKqEg100E8r at xC5KZEZM%e
+?EPsVxtf=17HL%o%xG(s}O#n0ZbHajg!q8zJx>SOcO4A=U_O9(;daXsf{YeL`Cqz9pgUN_=k;+GgT=x
+zIKRG1!f?0WTa|E*wJU^9s)&^wKK}n14h^2#K*?oKC{Xl3_-M^p~KKc32G3Y=imt5mX~bL)?#Q?u(f^
+tt8h7Ki-EHKwF&|w-{@MAEP6MxJ0H4L<bNL5)fZqErgx~ouuVpQJhgCbJt+Zkf?=xgNzJI0c#<If9`T
+rpZ}N}oh)UKBoQ{Q@)=FCvA>J}6rck- at Cd*NE#UQ*Lfbhj{(%N5XXhOBlVW#X684NU;%Ar4c3JW6TIj
+#YphW at RTT7xs+q1ZL3;3f;1!1LrLq%e#uy65 at ZcH10bSfM|?)TD9%Z%H~#c6TIf6QbX*Rgo0J)~ccdC
+Z8^GwQe{?#Jpf(^L)F=aFhF%q?Yl-Pi-dE1VKWXfgj${KHG5nlcBQq7Qvy7XGcn(sZ-EG>TUhByjOWP
+OcMve4QD`Z#o;lyM*odhY#iC-NHl9vQ6Xfi<{)+z2X&e@;)K-cSsvx^|$DKq02aNtuZW6hI)q_!W1iE
+FS2fkZWyDlirj>Y3M_Y#Xm2DTBqy9fdHqw#80nzId|SG^S<!C2pR!RKWD$c=WFevL16)ZMCX18AKa|K
+aUzAH`qJRstKjOviw^klw_nn4*0ncW8oCyG2fK!9gn3l75OW)I@*eLnS+4q(VT~4&J!f^j+O9k1>Vmc
+d4cq`Id?*rE`dahSOkL%;*Fm6`ei#3sBYPMc5W+$1t-YLg<CDek+i-(j at 8}gXWr`lfR5 at 0ZmRio1Y#Q
+uVTV2)a^R_6YS-AU9<UdFb{uTF0L6a}w1#b~vZZxmOnl`Sz~>+4%yMm+D93h`#S5rFCu0N0h$7-K+9Y
+?{J$)FxhKtzr0tapG35km-7%O#}e}4AQm&4OE;d4wzDd5N8uS9)dE6Mju4{OR6Be0KS6(SeJE%@XFcJ
+_RwEgE}WXs{7Q@&W&`a&!EnhiW4(cBkyxmA$UqcyA>oz9L#h?o?@@Ie^dm-E9)(Hs=m^lH(9x}zY_^6
+X>&FZplaF$Pe;sL_!A=hY&S%Ln$?VjO-b)b&qlAevlgWenADOs-Do89RE at fQGkPb_y^(jVU!YLHlnt{
+pUm4r3?(ObR#T586>4;C#|9 at 7bfoR!a%Z^^K*K5fris=gfdoG$6CG7v+O4e5#mWA*PbZ}T@>%1g!N8s
+mP#o}H#rx9YyJQJxFdDd?e~*M3>TDDX&9oyA07=|!SX&AhP%plxoZ1MAevs*+zuK7>BU?Mj{9up7%@D
+DVtQmOflpsuOXE&<K^Nc3d4Cqlb$0L1dm|Y}PJe1(z6F$1hlkc4;O_s#8YKE_;e at p@m-|1{l&rYe?Jr
+k+v6ek(W{PBabm)Rtd;hHX}{^DkWF=`g-vy{nHACzl`;$6ZE1%gDt&<zSw_Z;eVH3W>QigAW;fMw)~L
+n)w|+h<iULzS{OgP!Hlq{AF6D}fZS=Oxuu3=m#!;kvEo(Q-u8<zWqBBy>si%U7FS;{{Z^eJvrCsXb)u
+dD_`8R-jX`_ZABoUW<u+eyG)lbOXw=tw?Qf?q>NWXg6hvUpYfSf~pMp*=?`CoJgiY at qmUgBCwBgmZj9
+Hum9o>mFtpAzz0G0y#$P_~1{%=&Vb<v$RQdd5VMr!y*Zt+$(SJ~|5Ho)&F{HAVkb63D`9sGW?)ve#5v
+1}Qx5P*@Oc#>dI`F&tF(7)g*%D1$7S6muH-~MgtAPI?+_tcx15693l=5@@Dkg-2DD~(GX*cG$9^v}2s
+rM~s;XUCwjI>48$p7DQkb2I`u(EkwsXj%`u`+r!POoPAGkH_3Hf<uhFo!H6tz&7zNn{kY0p#k at uG#q_
+xHw at 7c=I|1p$BYHiXB?ve<$lRER{3L-*y*LWPQ2(C&EyOJfRXNYp?FRxbv^0?`sdy08gR`Dog^8`7ap
+)VLF#(wwSWx!qbm<hOncVs?}cv~yK=OdW(<Je3G_baA2`*_WzSN0mNz at tiI(4I;JFuR8eP5{uic>Ycc
+%@nkDt(QY9JY at gG<A;;mP{JA&dS;9XgiGEjD*`pHUtwhBDj3H^8&yj9Ij`oH0q?AvKP{BX~Gq3O)OT-
+j5$WkuLs0_)JWJvIi>XT8l&h|6mYagLi<<cMcz&pSu73QJncL1C^Q97NKoBE^l7-d!S4AT4z^zHB56w
+P^+*b>LnI!PA2(6D=3WO)lhim^bUY_eIeTCGSq}NFYbsG<U=}njCBdi?2IU(+1M!_hp=si4W+XCA2@?
+yCQy_^cjKN>4%u7GfLqRFqnmGN@;}ho%MzD2fut?y at Xl$k>u<05O1@(*hbPbbz3R=vfvA^uXX)n?t|w
+uvv*dM4jl&snyABE4b~8u8aH#ShIPKHhvPOL3ehNC=B8?%UP70c8bs#S-9R-88OyEJ2pe<a}zbt49hY
+ at BONE>XHky|V1iRkx{f^~t{Qh+v!t at Zj4M-swD5e~Xezp4v+JR3DsmYIZ+S}ai|gtSw>7c&am2T+fE8
+QTw&Jvtz!%S3n4kwQB?{kazu{9i01LYjo_dmx~NuzZb`p1`f^c_z_1&n#Uk>~lK1<YDOPDEe73WX#H5
+Y at ZUwnhn5PH5NxVT>+ik=wh8Dgl@!oSfOSEPx10#?sBif(&^0?08eIk%w>2WHXyFbS$)ETXU?N_i8o*
+5b&S(t+HVu)kUXVQn436d#=pOWq&XK!b0-8_UPhV$-CZyGN#t5aY2`IQTj!CIUw00aFhU52s^RIXajd
+_rW89(z%40ZaEoZZ(9378NF4tYv?r>MN4r}8$uIVqNPtQ`)hy6WEA43-N&BM3|t7C8`hPta$*zUr(SP
+2sdF1(pwEgH}>)2N$;&>I&bU5(bmZtM at hUB?_r7OP!_$S)H1jkA1c`TyE`6M!hIuYdfqDXw5yqFGLgO
+W`uWFf+`s3<4?$ilU;qAj+U9n=s?jR|Nw~8a4g4X=$2E*>2 at hsR{0yxulh;m73NdmXsSMdH?5gpXV6{
+1hc-q at B4fIZx5Wg_qppi=bpQs``mj_!oQI4Z|AZB_)lsvGOfhNCY;@NyKF!b(r;Rcx7+SHTVcHk%0Bq
+Bl%>1eN?D3a9m at KGvi>5ZRM)#JBw5AS2d^?=PGtQmlV!9$D};U1T`ofE-424ZmJ(47lCzc?wA|9bYr}
+?39NL2Bee)|Ts6x)4k7WJI#8fW9R+cbKK6XRY%;Q*HdS0$Yf_5Tfcf$OlAVjW at 0hZ=&8xYX=P5vhp^3
+~*$Xp_q*n;_IrCR(qsqZ!5{;e-of;?x(u0U@|X?@0C at iKm5YqJ$8OxV6(S6nzM at W)yA}VJtl+d5j4bR
+nXen&XzkmG0){Vt)e1auAa at 8qvQ5hXhCCcqLGQfu|VHWe6{3jFMSE|+avzom!!|C_Ywj&fry`|6eA^V
+ at fiE3PY5NM_rz}K=D&K$=^NR3FUjA3zjWKr#LaTBSVu7XkIU}t8(HgJ4Sgn_Rps=Vc;zxj%2mr6{7ih
+ at OUgI1Tkop5wou%=B2GKB$6<4zE#9*v0^2 at X6vj07+!G;=a;j)WFYfarT9X$!VPa*A at GMMmXC*Gq_Z{
+7|dfCT2kiqUwr(w=r_I@>ZRxBkBd~@p#W}@DOs5gzS{ehR`pv~r3h)wb;){05<B<R&PE32_RhuKGL5u
+X&@v~(P1k0-nHnO33nUUQ~Zg{y7HlO|u^{18{KB0EEB?YGF^BT+)$P6 at f!N$ASv`V(^TDq1cQI=Z<gp
+*@>x6571Ec0zC5lF&7idx2%N*e88uk_Qe-O|aWLDa${N#Wj)@qXTJNRXJPD2e?na%SNN4&?|F2Z7t=a
+wptPkL$3@=u)p<=awOZ{zQ$RVGY_ZXyj)dbANQNnTi9Ace^KI6*vPe_1 at 54v2yJ}D{wHN1ezXXZFMVI
+P*M$Z_9{r$3ex}S;R<kn!MS{b)EcXPD_O^KIAHe1UPvZ`Yq+AIs#g{<xw&{X(V%v1^@YdD`q(F_lHny
+Zt&YKT#81W}!3-rcD33lwE6327Q!j^@(_(GxZSC`qHsd=5L3j8d1w5Qjz+XoZB1`V6kgy*<RCkz#rQf
+R1hyp1ACu1Y_~#d4pm056o8S5cZcHCF7DD92Tu_P1V8jzMxp2KCt}bVDMiQk-!_Nl$XAotsy&0gc{A@
+- at UYqwmk9(RYn7lRG#u^&RZniT1R`SK3N&h7<1o?2OeYZ02_C<=(f$k)o$KUKUsW)tt9G4BMNVm0G*m
+;>0Z;%>zHX{<G~kb~KY&Y1?r<mE8B*cEfZ#Qqh;}qsRrv#88+c<ws5)xp3rovwhYp*Du>DDO76;5#{T
+B{d>0~xh;(pZklJVmyyCwZ8E@*JnkFf+dA+h**wYC{Q8OO#|uv|+kV?o+gHeE%yw^SR(8!KbWGDdnWd
+dL7pj*yboxVa3#zfq>QUGd8tO))|4_9Qsi>BMNMgJ;LAONRmi;-Xk)l0a3&Z#bs~6Nu-jl+~eYQBo0s
+5uG_34+UyVub#wU+fuQ2fnmK7amt?55ao48P0H;kWor at mnQ+kBi?c;`fyJT_=7I;|7V9Z_!WMVxeEUA
+?uft7CYu4zdeu1Z|Mzr^1J0mjehCJrntq{c++yoYg3z&4R(RUMe(~+{I13Cv#04d&G>~^(dwoc&5v;V
+wPfpx8yGDkhS$95lJ+O9unPL0O?CA at A}vY(qjuK+z#00Vf#SQK#$HdfkhDK<yew&dKrYr>oajC7#DOX
+Y2g*-F`?INz_Q$VG*8Xf1+8+cj-z0P at u)3GO;jp`uFBjS$*oF3IA!3Nv@?x^475?_H)sN<cJKUAR0U}
+iWO44c)yuJ*M<wJz3=J*XsRkKM})d;U(q5J_^th|SkZs%I*UXjynDbf`jD0dYpUa6BJ-phaRlnAeiu?
+#A#nrJZ<R%KXx3ah4h6(8_aND{h;t)9p)Jj2?`?N`~Ey4UhoJQe)C%U^KVRpkpr!i@{7wAQw1h54=;>
+s^I=+~tVGqw-7yt_qZV10>%y at P+E9e4y}6^(yKkEV9}M%kV`SVX=A@`3cK(ucD5^GTf`Etx)|yEQnrI
+g~9WMgzXWfEH*Q>L3J*#Y%G(V>h+Yr&;V>xG&s2057+rcSiDI99+B=P at hUz;liosTa2CrcNm6YSES88
+i&EHymLs at 9wS}BSHb)k5lSIGib><C0yEVq|`BlJFqB<X$ju^P^8WzK%q#<II at tH_B)ksjNG#%G87H4#
+cB6}@d_b;&Yh>Q(eB)IBF1Yo2f{Tys%yWdmM{xz~bL9yrqgI<CeZ7=@$x at Y)C+db8ie)$HOB3N8o;-i
+qIuhs#eXI-+k0f9Qvv1>W|?UPV`KV)X7+{E<5t3xN#0)<?l_!(pdZY4r`9&osAq?+wiFkS&ehVeBs62
+Ne0bH-$O~{t5Go!O;YJUomFHt+!q!8&H!g8mE;AKPiMnq}243YcV&ksS{#dL1>QxCAK=WM~Gv&i>4ek
+@=^XX=EZ9ciz at bmn?rY0DbOfB3E?^HChLyQ3*FzRF0$_EV?}rL0~Tni(k)rg9r+5~(Mq8^6756D1_+L
+2oLm>6H5%qXmP*kcC9Y2JDw-}dMuLSxV+2V~D{+IyNHnx=dqkrq(7x`j2#{${G1719kRnM_v;>->Z)}
+lOw#4f4&v7K{UDSF^uqH`TDc1S>8~4uklo|%x-Z{StU5{@5yONftd>eMKBIyw&#cOXUTAmud+p3`DL1
+dxjag((?J1E74 at Q$o5DSoD=(D??`B%$TG;t&sVy(oepMv}9ZXBkL=mghS~%OjdWC~-t`NzPiHw8E`G6
+l$K6&LN!CJmEskBltt)^_A*tQhD2(Am at r`GthrF248%Is^?$TLd1)fDyp7?VwW#MNlG43x)S##CC^Ok
+OHdCdNj(4th at gd~gXsO>4RPxrq%{dzo?@jv^(w}DP2IM%mn<fUKhXF at 3XM->^^%G<vLCTl(fWu`vU9z
+fABAE$%UYTr!BJ>_91_v4P&CPk<_GT3{0Iq=H9sI?{)QVuuOhme`BE2Dqx=CwB;}9CHQes1E?GA3MlI
+zJ7$Yfvijk1e|0tD1YC}sz!(|yG^gp``^lD2Y7xmXBBv5Lnb~ANFh-mmUj!G-}*HrL|CIf|*sF7P)F}
+Gg!6W&Lvq+ANOqC!z2tQBh_Kw+)P;`f?R{J2l*QPFa(3z>cujn=waT2E4qNGq9tKqP-kPTsZ^9krimF
+#WcQafT4Zwau-*6%R<A(j=ACD-E<iDU=Pc^ASRC at eSXAIJT`AhuM}L6LsN$)Dj|?{fVne at j~0vOR~CK
+yVyi7740UerL=832HLyVP5o@)R?)CoC)<{Zj_Ks=6q^wIS`D$%0<RWzu)lr(FVaGM at jOwmvwiu7)q=A
+EJ&~Qg^a|&0TM=MH at yYyk6+H{*i;OEeOEp at eh>KEG=n at e(%9<X$u$h4}L6(PQf^K11(v`X_E8L3KNT_
+;Xu~$Ee?oPOku!&)&P1Fh+jRamRDVD~fyGe`=mruEhF(}3h(DlG<>{aY?wcg>b)aW{<m^o8rT~F^NCf
+56T6SEK;BDim{iFGB&BuHH%>w0i(ds1=f^byj6Lf#<h^Xy7-va_Tj at hbbiQDI0+ZVi&Jc)%Vq>jQ;$X
+7R=@66 at WGlde>FCQiCq;g&e*8o#GK*616Tv~LtxI<n$k`z!MtD->_fQ&xr?N2l20J;eb&#!qIBG`0{p
+B-(H{v+d_Pr%Ow#HQK at uHMgjh+a~V!`^4fMWATh>0E@!rjcBG>agSY9gGIM_;*1UF1I6W)79V?a2}Aq
+OHmCKcT1zhN>~@<J=2J%)dk$GEKEL(T_G?j|g!891cTe%<PCu-7l~Y)J`-uZ7#nF^Cr&7uny#<~O9^+
+{Zn$*-jW1)2R3*Ot_av-GDtz`5$-p5l}l~OYtrG3tFzeroTyt`QXrd!`!z6lrWR<GOeDfmf3gEBEb<$
+T*;y<fmLcieS7$!Fq3P|*oYh(9MjYCkopnZ3nR@~wbkcOP^k&Fq_>l1>{enRUF7o4n>5(RgXLB3WoOa
+E?QX^|Z}hxOj;3M=QMwpF^M3$KAy`vT!y{TJ?lsE)ohn8A+TFZui~F3XhV}rz+fVV5hm7iWmhq>lCxL
+nLnm^qC_{+wA_~{5mLC at R8eS~b=+n>P3Z?O00%^b?{`x$no9dgc$VF4M9e(x;Z|8<Jy(d!J7)AP?~YR
+%aMJ1fn;aYQEh+Pxix?#?@~Nk`R&%xsnzrY)*==%Xg`Rx3$)hQbXDci<QKX8m%YN`EnRQN*ghPdAI+U
+GJ%4;_SC&>;SJ-F)by!fab&vU*6U(PhM|7$+5PxHD|Iw%o$KX_4ueB1WIv-xHA#ulBt(>%>9--RH;8$
+T-isPSXMPXd0%;wNW*35GHKtcQy~v*>KwX+CT5s&J#`1o7v`c=xkjD?ICEX>Z#ec(Uw*tHraV?fe+`S
+Zh_`X*Wxwxoso*S$`Wje24A$^^=7=y#0;_mJYTZEj$Z9mxx&FZ)FvTLn*oUw^lt;J`}8M%I{H8ZC!;=
+o&!s<FuYLcf9E<DhVQnIo$I_H{BrFD;k)b+4sZLpC#Wu-XmBC8kyr>mm}t*XuFsQ>k#@28C)zKepCF;
+~6<^3$o5}0v(dY0P!8s=GGHh%A;R*4DONpm_{}Z=6Q88++vO2uH+WFfftVPCG+IKD$D^|^I at mHQ4+PY
+|n%l*`<;!NVZYOP^)iuRTdVRZ{EHPySA<t~=9CNcX9+<9@#HWZD!(;o2qo>2BoZ+l$q0S}aROuNr at tv
+GA@#jo;7&$-PTnTo_->B|(Q)oxd2KmT~mPU+p!`Ia>wN;Jb!5KArM+gdDK7GJ|1C!TgMi at 1ZbB0i}?E
+w1YsR_o)5Ze{WfbYp@&a9NMVG|X;XAf0h~f8ov3Q$HDI_rtq=!s9g;03mDpFrZ$k9NW?8akMdwD$d%&
+YPtVZEZl8-D)u|>NFIipL0l5?4NZwSwcFnOTYQ3J7l*o(484ej-4VDQ1r$_%gV{!>{Wvb-S8j>GSNpT
+P{VMPK&1)_`f6DhXUiK2-#%{&{IdPIFzeimrZnGXMgr*vou-acOcHA?tv=|B$agftQOn#8dJuc!n!)W
+5g%%=J7#>=_xwjC9&w%xeF4FQgSE3^_oO}hlSPj8felsJ0GX07DbDg-$qR&*&mE?1IK7=>fkPKxvE?Y
+d&zwc%lHW^Y%l9AQ*=ke67mRBScg$e%Kkvdx>EShL1@^=r<Rt6{u~a8Wi~KdX`|M|a9Wx}dG!l9K4kP
+TNa{Uct`xhwPh+l;rI at ifT%Oiosgh$$F*mCZ&eMcoW6JPIe^vWUZ{e66c|p!;n5emba^mO$_r}OSQSF
++-DwqGQ!ujG|6k at 40o@OOQl_QN2=!Bz&S;h1Tx9N(wj`2O4J3WE3-TR)16sE3u4?0Y)$9K`TIWEs^IL
+Lg8eRYTUB(e?fO{3e%A_nL5h2RMT;7rf(HwVF?O&v7RQ*4-T`KGW~Ge!FcWjSm{c5U{%WCPy)w2C)eo
+1Dw;0=udJ0c*R)^RFf>qqYi>=dwqdlcNh7yN~b?uAxmlor4%Zs)FtpiUQKe66J>CW%BEv at j^w$t3xr1
+L^5`hS3lz$6z$&wBuD{mLTh60{H_EZuDj at SU{RMt7GA)%>B=gD1JnAL=<cVUYczxJBDX3TUC(TXeO4b
+QRi{D`;OJsY$loqD%2AE<>|+r0`6B*@eayb48>1FG~GNb|ZoT)URX at qkbiO4EmME1Ow64B%!NGCa3H)
+>T0sHsH at 4IN?lF%>>To#fbJ(7-On_1KlwTHH=-2hi%+^^t*eUnSz>HQ$}Zsi^)}A=<u{%`)q8%vcdYe
+N;TbQBFAW*XT`eta_m;GoKh=GHzI%-IGQJ^jvoyg`4t at H@Sg#KslRSFIN0<To9roKl$hKVxaPQnUB0!
+nFRucWJmq(OC_3CsV-=O(%zMg&*&&#dszJ1NgMwB;g%9z8ovEq6KE1NZEIeQh2$4-T*?)K|h_)^%@eo
+2_k?LP?9+y1RETid at BrjPv)Os##dcvaa;h3RYmK$zX^>x9|ezE+rO`wC%d?2Coj-o8+ndiz{qhS&?T(
+2AJ&RFmB*oTBWR!t7@^3p36>T9^s;p~4(uj~C`}d$ce|*+Ydn)*d9xRC^C$PPBIxW`_NKVdmKH5vIl7
+LYUL-9>Sby|2<PeL6orlQYOC6FA^QLu;M#M`&Yt>`-trag>|85ON13lVEYHcx)|2Cgmo#bD}{9htj`P
+UYFOt9EB0~N=VUq#7MPmpI2K^CutFbZA1kcra_vKf^?<0b3d%TBz#bwzaMXd_Us!RJm%WRyo`Us0VLc
+72x3J=jVY`R0+J(XbJ2p066!Z(LICS8guvQBCh4qS{Us$UI{lY4))%!qLQQPfr2`i2|wXYObd=zVcK0
+`(sw;S0 at ga<z1v(FaR*0AOYs}HObg%wN7_R+$sf_1R4`oh{*Si8X*BCNQ9&h9U)YFN7ns|MElgjEl#x
+3Gr5>LIKqSbv)gYZR=PgtZ^6=O)W2$KmY@;gJCAC&G#=w(X_DIvmyw!a54p*M)T~tjk3rK4WSfp>7#r
+Yh?5gM^-dWu+N+<uI_a=dW at 1?CP^+dwHqtD43}KgMvu9&OCRAfRbvdAcT at WETmzTd8F>}qds<tc=0=Z
+HIbKUCC2yn0MA at Z!l5lBl^vIB1E=VpuMvolX<+$Y1-soYGU3N<@Dx=4A*=4=t;%oGnDZ8wcT=Yhdg|f
+>+$tA?- at r>*;TXHcOJr>I at 8Ints(POFX@`&Wp&*-s2cIhWvrp6hAR?F0DCpl4HYcGLqsE;(2KRUaEEx
+NUBe~jM8;%TBz>ssMHZrkox*3Y<omJ3aNd`d=F1&{W%HWR0X;}*AQUt5q`oJ1Qux*Nt{K3>n3LdWgC3
+o~LG4Egde at C9|H at rKy_IGCJgM@m;kUN5Y2&DG713ik}fnVi$^w&N5w+fL&SOZz?SzyWNwNU&c|C&bCA
+$sUF?VG2t<OQNsfOwTL9qpw)rOcEze;(Rk4b>=HwIE=b%3)0YlCoxe9Acja^V1Mfl>4IW$3}|t at x8)&
+Qv<i+`qY93$@_K5Ogm`=Bh~l~%+pH?%joH1Okk<lvW7)KO?JxdHm{%KbSSIdi49pAncviGaup4ecUOJ
+qf0*2Elkg}+B$^~DzCME`tR$1K>6Dt~Vt4iGDR+W?p%EZ<sq9DnB=mT-c<rO<Fg0V$cjhJsfhl9W3s{
+=o^cTIJC*;+Ga at m`3rV7K|vl}JfWx8_i|1p9fh2h_K|Y098MPI_Vpijac#&Qj36MhaArg4RL`ylbSOJ
+*0p{0Gp2TXNSz;mAF()<6QP5s%|a&8xw9}-|^y;mXGGUhbK&8iS~P55QA*+2b4ep+6y+eBI*(n#espT
+64w&#OExLYy69lmZ{zA=)^`iQEMLK_I&7*CyBONn$EKPsAW1aeFkZH{GTxZlLfYKnTH-^5|4VvtEA-^
+zD#HA!ciT-fl&Rgh>0)X}<3}GLF=m0XL&U2Xy=fX%%@1+wNSd*1s at 8bf;zh|fOG+GO_g*5HV81$D*|%
+Z8fVAZ88}eCr7!y*gF2)<vRQCPTF*QW4S!6 at FVtJc~xQ}*jBY97XbR4YMCKAG>)3FgooWBs?d{AQ2Fd
+CA^w;q&OGP=3g1aexO&S+^JJi578vG_hX-qZMrWowB`#fQ?QqOj^wuVP$bOtY|}JT5K=ejNP)NQqu7N
+GTu5<%vX{`$3-;>~F2?l_(4?rPl4H)x+K$nl-#&LL==B+P4FjtyN=>ZoKCp+~y({2P|i?_h(<N+nS~E
+p}XH+nj9VOwAZ$?Gb8yl?#*p#D;x2Qjg`3j?&yKZVlk^IcfOkR>T{TfDp!-XwdYQAzM52^Q6B0dUrsu
+7n&WcPGizNeZE$}Gt|r9^TXn7`#if8a!+Vlz;ps~wo9%F1d)VFn at 9diUNgvOybw6qTSJJ8zwf26n*4$
+58$Q<{Ry2|&H`h8L|z`d9&7nF86E^nf%t{5O+xfm*n?@wG%dQT$ulMk|AK2$R|wDdr}qdn6~d at An89_
+?ymXS*SsMpxV4{!+;oH<dPXu&tu8ZHG7<)%mK@*2Sf>n<d~XoLm=a>Wu1{;E)e~k47BsAkOO>Cf^4 at k
+8NmkoJZ!`wA9k1aJ!4w8}7apKhpq!x;Jt!EOU9Xk?`8>;<d`%H}5ARbf;>Jvy9k=_`2I at vT%L7I1(bn
+=4x=U_M}K%3 at I+w&P~r*?k}@@8zNk-ZOO5fA;rz=U0CK`xZS<!IqPROnjG&~cwgy}(}krjJFagRCo=j
+x=}NdzGCvRk6zSCU?bu9cS)FFXX^-S_kX&~o{auv)*1|H^in$6tcSfI$3&NT!g#A3f50 at wtTiD&`e<E
+dRny5N~!y|CC>MB&C9ZFTAs8u&<JRu#+s at x179Nm2CT~x8t3WJ%YiHQ(1MmNv>*?B*fI4?2L7Vq6`pC
+ulc%xb<V;{8W9s(@#grstk)Z0Smvbt23P_qZ5-$Zcf!Zkns>_l7-W+d;P7hSSz&xP$9R;6B4?OA~DQ;
+<>KZzp|B$#CdVGtM37EbY+~cceA}X{n6S4S8-iGv)!8|UOyvm155R7?IzjIxE&oyUcB=&MAZL{M@>_j
+FoFbvNd(ggo+NmQU_HTMf{O&M=Na=M&=ABDj3LM(m`$*dU<JVk1p5hY65RDYV;u>45*P^L2*wat2p%V
+RfnX!SF#<aQ`+?FYFcBmWj3TfQ6cH>Wc!}Umf{g?R3BDn?LeQM%VLk+12m%PA2nG|R5<E)q48iLJI|;
+ra_=&*1oUsQ8x)5jxOa!q6!w4o4SO{<x$8!X)5Ns#-g5Vs%6 at o@IH at NqL#J}&)-^$apt|s=Q(Zoupn%
+Iz6Ol-_Blf$pqM<&*$o9Wg_PS5k-v>FN%wSEji&Nl=H8H>!$jh>!vNyyC}Z_dkOER*H2 at hqF=GBf at 4W
+T`BJ{uonn6Pr#jp8hBp8_I^TKCB1RJK6o2mc_AXk>5}@fW@##HjqULm;UrSnB1Z%L?8>Gl%vQNC&Kp0
+$m^49Hp5IbTZW}%ScSc>lRY9MBYQl;<}xeGViuN8n3|c2Aea7tuS%rVf;AQ95K4O>OQb*NFp_T~VK#v
+Et;dJTnqtMX2oa(_e>{VUPBl>xC|r9`xCp|?LZLHR4w))~Z2Gklr+{O;$T5y=;B2aJOB3m4im(%jnmn
+?l&~KhdWgPK*2DzkC8oA_~#U{{O7KH%iQ$-3jX~92T_ at q$0boQtmE}Pt&5+{`O5iXT}#|wY6oTrL%vx
+ at ZLucCajMXvD6p}!1A3 at OE)<P#&Plv2$k*F5o#kdrB033t#1>~cj;R&qs{Y@%Ex(#sIxCCXAn&I+G;2
+-?8QbP8i8oK>tF>qV{^l-fgrdys<h4xF6%nNlyOvILHhp7Ek|as at 8AwPHpIoZ=~Nx}Z}jbEUik9Oa!w
+F)TtpvIMs#5Unc8A&26Qm&;d5J%db%TBW2UpG+r?*3HNN59I3B at -{p1JCf2FB9}|9!$;z9w%{7-^?!w
+2)TKl1phLk);ahzaq}GWaKy8Z>-zrLUoXo}BaREF4ez(@w0H*tk<u^@Gc>8)*Uw+!ZkRPNp^)KcZ<j5
+~aloZmPO5t-UmQ|!tU(HeKVoi!ldYZq0f3ir`%%%&>d&v?dy`kikQoI#^e-?b(^3JB*%reGOea at Es(F
+#r#(pZ1GwdDxdAf at pFvs5RUxqW-@?<7C<r;{nSa_OSR<%(2O9c{qmKTQ9x$V=^<QU$+L<kXdPYw96*n
+l0p^n`lQTiarN5-R$74Bn`LLN3~P=+&O*-A;}=hEK|H&YT>7LDxW(~H-&yDPzWW(yj$c~?bKeUi87FC
+kJRJj(0jUwsS>?Yj&R8p?+O-DoYY#pP{vRN`%U69_-<rk3VwK>Nrae7CbUOtGF!oYuZiKZ%DH6T4R<n
+eD^BSi6Kjic7 at 6&mD4F+>v2eFZd?05c^8vV%*?|oGE|VDH9NuYS50ZI$JB`Q4+(PCIGFOoKD49iMLJ2
+UFOf2AxA~Rmpja<=BqyGhM!$jM!v<i{TkN#A|x!R+vII at kSnBevdL3>k~4?V>nV<E&hq&z`{%9Q(FDK
+^rYEVwz1e#7LlshvZ#qeeU^(oU$AnnBR~fBjM2^4HDrcdOs6fBi at zZ}(SJ&tL5jbDaKM?(ok!{$oymu
+6OvS#8v%Iv;Y5r=hiZv_}?u7E;WC5`qYvDmzqD<JN&DWfdBOGkLbr=Yx;A3bN0Jql4ZJUzuzgnHFVc?
+5qF8Qf;o>B78O7K#N3i6ZS&?YcxvIIe?R at qv(G)hc*zSdE?xH0@)a+yT(x at 5E3dA7?e#a_eCzFZ*1h}
+Q`|CGs-1NbRA8p>U_2X@&W!rb`+_ihp-hKN&Iq>PhLx+!icJ$ciUwnD|s}m<ref`b1r_Y at I?%etBf3T
+NdsJQs!PnRlx{^jzOtJkhq{rcOD>fdj2=Hlw+?$M~RXOpJQnzv}_<=yJ8yIbFLZyTSs?e1%T{{tOV4|
+eS2+qp~EZVx@|*S$y2UTXh<KuwTVrw=w5LqfyCO)2BXr<&6yOiZ6NIU_SGJ7-F6p2a$K+VmNZjvO_5O
+!C-<{r@#{*6jTMY5M=C^Z$?eAJIE9D!NbKelfBA<KhPlOc*pcamdhNNyA4xBJsar|NkfW??J<+W^#*o
+KiS=7`*TiqT$$`C+ZQ<5pK`J<bh0mUvj5x3{<M=F*C;FY4Ni8f&Nq?L6MOgY^rJrmja)Ex$rCGOj7E>
+rUw4Kz4(U(jaG4?hG2z}zxc8D>7>$SGg&856QDVj+tr1~1foA}Xn5Nco8z`@HC at zU)=E!Raid%#jVOz
+zV6Hly|zszvhF~^be&Jn9n83IR)1;;Zi<@X`~abiuSW_%bcRvKztBzzSd6}%LD6daVim3*aqW;pUz@>
+TLw@<BQ&Vs at J=<~|Y*eFU~O?^x+Th&(5^Br&Sb6004G>kta%{2njnEH!Zw1#ZsoDS{R$KP4X}Z6!S=9
+VI at _q%>q^8uEm2q|(z}6;F=}mKpT0`1oF_sl8^1OcJQrBM73*<IS1l%%X4yWKVV22adO7!<uN$u_%ra
+)(O@;3--okh%{oYS)w2#a&pr}8K&fp7v*OjmupSQmBOTC2`lA;^pP&oL|RA(X;8cwNCWW^7jal(ip83
+nnj+HZlbbGVLnc~t^JKRqb841Zei>qwZ1LGy!XeQrn<*B=MLdK at ID~;e>uXllrjydMQnRNeT2d_O*}{
+Ejo;i2mxJl;mmYA%x?A%P at kwp2BUtCI_C1SiKeX2PjJI9(M+ at yCY85U0|rc5yR&YqschEmC3b-M1lbT
+=W%m<>N9y=Pf7GRWEp|I{OUGq*;pk*l|Rbab=_o**^VR|Hh)6NWeTWIDAvDWNe9-&CT>@EkjFEIo`(&
+zVk-Cxu{*nWrZip7hsPX;&H*6g*xqr+_kWd%WQB#|m0|cu)?-#l_SBs?`Mv1#>BMx32nxqymahnIt4&
+W1Om6!Q29h#VDJJ6DN9lHlCi7Gc70Qmh}ItyOBTW#)Vd300Hy{`0T(+1sNF7Gc|*Rv!+~zq-UD5t(FL
+qs}xI0hAKKYH#=9Ao~4RQv1W~*XvVy8oK)Xa(lgAdDoeI1JI9=*GEX;;w^~xhWkBeMX2Al#G%9#iN|q
+`mhXSQic+>(Ch at MVia?L5Js<hnfObRWcvrZ36Jd4d9M|nHMOf|)7&Yh8-H9?goGQY(?&up<cd9yrADx
+scg&B;g~FNIKigdY)FzbE;bb93wWtHFCbA#O3Na-^D~vgRS{uATF`I`L+L*+Q&Ix2VQvr<zsSX-a6!<
+*}9}we``{bErZ|F(i&r_{_`{vJuyiERoT*C-Jx|Y<UyS<5I{mBR$L9Qx-3$G|ah~=~*d)5kw*(+hd9~
+n-C>FITcew2 at P?IF2$RcZkY&H<ylg4ot*C=xf(tQs$~Cq=v8o*WX(C9T47Vof{o7pGTVm^>C;1hYr0)
+KbycOvn1lPZQmzM&t`Bx4x-v4dr-`!cbPK!diPJC->M7UU3D!(=mL*Ts%{-NAO?sNjoS9>p at zCw_8D~
+~0LYD%a9K=o$5W$2 at b7nU6BOO_1>Pb7&_@=X1VXXZwJ^k2Uf3QjH at HZwg1{<6hmH29pO|hov6LC*#Rz
+2Eg&6%^9Fhv?hp^wNLHH->$#whAX&{^b-%1h78$uK8p$nD6e!R8EeN}hRC-=Q&y!b at pkdgi2}g<05(v
+3358RZgfM7ktkH^O$TZ?_c?tYWbJe@!xiz>9+C5sBZ7SujB3g4|Te||2w|5{pULQ-_^y$x^$`Sf4ENk
+tKDy({&#`3{f|5OhignMQgeI$bk{Z<ALdz|$zlK5$zC_y>fjo`bx!uW_znqaIKLaACe||S_WXz*aC`q
+B2iNvLP{)795XoPpHN at 0lI;V%;KA&Gk-#(u*^X<#+r|jGNZ^*rU`cF)~y?<26?eTBD==S*^SXJA9Zyo
+<dYijuT>FS3081Slz+0QzHvg6oyQA)$Nb2V<ikejKD)%*Oj&*ksg=hD{2c?-%DE;Lq;l)98S>QR!|6!
+%24^BAATTGF_mjdQ`qk+}46xtP1GWszbWq)Zs7FhyF{++6DDl=OdfPfAI*^vTXmq>eSiET=SqLS~tBD
+RyLbR$g|7Int7w5ltN<&7<yR5qWv(6SCwKhGf?uz`jKeKtGa(1CCuZtzF4AK0DQ#VeUiYjsYo|L<U>q
+HVC7}dMTOU7H`e4r1zd-F%QX3N>4RMPNZ4Zvob}Fa5NfDMcRp$)PBStj8R=(<@t^nAXCfXD$kiBQd4s
+UHX&|t*(s?qmnelE;HMLrQcAhZ&Z6XDrddvWFpJE{&Qsp{M-Ltl9jA=cqg at g$x%3}HlqL3yONvN{5gt
+A at v`g{Ge?R7xU{H2?77ei2A=iH9lpL|?hkYXK(gvS&iMCuSnISWB5cBam(h$Lpitx21g0b;ZOd4ESbK
+sH0O5K(5V@<gnbsw5FQ6QBXJ$*b)nJF$65Kv-kz?Fu*-D2{h%;T&RCYW;*h^-KepI9`giOfy65YsXes
+eA-3!ESNpl&R)h+`n^;$s(tejPytAdPZcWCg!APMP^$m-3yeiGq-%)2U{|RX3;<}l^r2YW|%FvBp&Wu
+#>BT>?n4~AruM+@*iE$;Z;pLdyYVIp;u2v;xlxSC=G2%hno?v6>CXdSoaAelQ=J+z5i_P3nv7I9$ELz
+oVt4jPB1}asV4sSTlO&qzrrThOD?C^>@{puOVgb91T;K^gU}^Bjo5B)y_pLRIBs)d42hmwm({r=4fPf
+ at R)D*PxP%71sY)4IFCq(V7Cpddms;dd+Tp?sx<0Zr>>!*?Pko57BWlYO%ZDWWbGlV?O$g`L;F_DeP6S
+R<xz2}~oVK(Qmr{uZ~k0h2WQb~a5vWc)qL?$q%Ln;HK<6&<~5=dp1o+?@znj^DgQcWOfqCP>YCsLiJ&
+~G}u6PqZ+6X2m!yWvjh$@pgH_Az4}$E-+pl1rZqYu-el*4vtvMq_BkJ`=eOHcLX4h}5F9QU|6<B^c{k
+vr>a_)XKQUMaC0)f~CY!Ur7>VoRaGAQvZ4WfAC;`#DMQjo8N7_Eeh|YEhCs>N}4SB at vc9v%dO6}{9XS
+pME`mIPdtz(d|R)`j+<;kXN0{txN;Nc5#Vq`=yPyv8uU4yve`s7o63I8oc!*U<HGck)Ag3!u>a>S8Q}
+h)>>eb)N67Dy at _T|DXRz#^D4R)g`Xl7LGi3Kn#>DOj=uxm|C|Aa{ksQ82#(9oxJ|_DY%Kk-iI=CztE8
+H*1?=Q>vtd{e8Rd(Mb<9AT@|5En%X)N(V;hDm7XOsO&_lErcZ1{%!|0f?VKdq*j*qy-t_UDiGOSsl~+
+~h}zpYW-P4L)QNd at E>ryPWRqQF%Pw*7?0|e-bI1{f?Vh6oH8#gg{TAAy5-^BTy0e5Hu%X1XW*}*hK<6
+!8wA{1g8j&6C5KrOmKi;FTqZNQi3f6>j~BptRPq{hhIoAm!N>aLXbf)mS6}$0zn*siJ&`yilB*mjg0%
+yyElO+0VAmT!o(^G>;%UN_7Z$Ru$o{YK><MqK`Oy0f*}NP1W^Pb1R8?w1il3A30f00C#e3M(j+)VaQJ
+g6{7y1IAXrQA3_%e=4#6mbAp~&*dIE2P>SHEJKK}C}t at kOtX8K#-UD&O-;@kk`ft(&cVq(LO5|1gay2
+`}<>mTn1AIV?U;Pc;r+<(K<u(nb1Z&+LTKa2O@`TSp(0r~k~E(*Aw-o at 43b2asRV;`IGn5=qcuY4<+F
+RzizIm=IDi#IdPE)eEg3SYMB#41$->CU++nI_rXaEIX|WOE~hKeY1P%69DhO8d%@4W~c*Wnmjc1L{F1
+#+*>G<P(!l1l$__=<#n(|H_#EY$@h(>O1!yuUV%bLVdmS(^G~7YHJgkMf at S;%g+!BKZM>J0;TPCk<(Y
+&b_EZ|)8C^}1FZVzxy>W($#WC)t!^|OY01P~r2uoTxzhB+DO_X0{}tqp at z@7sBHm##;cq7s^E3)nfWq
+)06LT at OOWkx_#7>5O^|&MbvGus)neNoFJG;+qz<qH8?rR%x|DXZ)y$!e at Z@}GNk2}VGRpjp3(S_NGdF
+SNKkd?kJ42Lo)?>=2z*jmq;_tKs&Y@$cadp8aFcdmIqJc8c6Yu=|%qVVoD at 29g|#6Cdfy<fHqd&DU}9
+I&b)FbOP`9h&t&J$v?Kef#!hNl8g8Jw2UStyZa^3JU1IfGu9Un7#VytL(!MKV+q)rR>WuzhpOW-ehuB
+Ef9g}1t(<DMD(cx1<je)o at vt#iPuB?QguP|>S at zv&P0Gq{6O^~e&9NJ at 1b{3dbvb#>3!NXyxR{QIB-C
+`W6Hri>E{x!P80sqW>$J$q{w`?{66iFXBFb7rBzGs`3QgDP+HodJ at R|C<c~A1s_{<gSCc;;3X?CTFTH
+167vT>aIJ8 at GxGvKF7Wqr>lt1UTLr|*14fs_b`t at 6Sy9R%O|6|op9;iNW4Qb&0=HO8=6rehT(x-QiE&
+EzOwDiCsA|Va@@jU+4oVzbcb5fio=J|VZK&!X|hbY86u*<XhwHN&LQULK at _35G29p5}4!UD+sVnhh9q
+Ud4`fbc)KYRG}A>O%#kBK#rFe;>N7s#<s>Jn^@DX%!dVg8xXuE_oxoIA`Iw<So({xXGJrJ?F}g<jtx(
+l;)pyD+nhM=->oy1TF<kYG at h&7df1ByzmAfpMV!I7Xmke#sppj9XRCNTbA`dl5>ql!{X!PSz=-$d-Ty
+qYsvV+g$vp1ufNXLuU{`@{EIKXVCT=DcgT4TmRr_Q8 at g^&W0b_da{k3Prfp;S+b(TOo1D$^sfg0Hah|
+`eBAFy%a{f<OlQ)tj|E2RIIlqxMYv1{yLx*lli_^S8X7c3NDFZp*kj!V7blo;`Xfn&^tF~<ziu68Qfb
+{b@|MB|ubxcU{zZjd{p#%4B+<`MU8Q5(=3DZ~xFNsg!kxB5$vtcID)46kJ=I7_f)M_;g4Gm=x5fLmVC
+PwgX(4awV*sx)2#E21W^ytxSc4{9sVZsD9Y0 at N?nVHFQb8|)eF>BT=_Odmcz42%$dw;f(6;6m|^Cm~K
+XR;&Mi at 7GYd5(d-RS?5om@|%TTAagnKh>WdUNxC@`<S!t+d1>!%~|+P&Vu%H7IKiYQJ-=ad5p9ECpa7
+QEoXTIL(g(H@(0ewpXO}bMb75TnZrs-O4y=Bi`eteKhKsdS;CesUCLIhSi#n;StH7K-MV#b!-fr_E!(
+nX3p=`F9eeC&&NftXwrkfewr}4)_UWgevLi>1uw%!Lu at fgwu&=-Vnq4}7oE`mzvomMT2)QUPFK1USU0
+~n+%2{P)CA)t8x{wt-uDz&#NMNiH361AM#+s7cG^5Jik}9x at -^D_?KO4yhu^D^{Tg(@+4g6hpj2}_jQ
+`VZ|ccl1giXTex<0$?Jia&wkPv@=JlN5g`#ebXPms0%CDE>L8_+2QziQ+#(@hud80mXlf;%}$;M=1Vr
+ivJD8|Bm99Q~XO5|C&?$UR`Ls7eTU4!_9>j#?~#MG3aa5r|qCh_*pB)kNY$J^&rO2O=0}PBE~D<W&D~
+`{MHn|BgI!!{4k0iPw^?O%5;i9gW^9)@t0BjcPM at t#s7 at rpLdE+gO3EN$~iRHz<o&Tno at jfe=2DZ!&P
+ at N9!Bv;QT#_K{__-nBgH at F6rZ(Z39Jp(*$3G|=10|5%MOv`SF#w!TRp<Ke-7h=9%p>YQpOj($N0N at 89
+(x^Q+yT0*HZjAia(CxPp9|`DE?}S|31b4nBwoD_>||OQxyL^#jkY4?@lT7rxemDg(oP5HI%|mO5qHpP
+}z#JU;H_{GKjNlQ#iZ6h_hec<?O~0?udUM#qUA!!zun?ia(y>Po?;CDgF|Q{|d!lPw}@?{6iG~6veM_
+itj0N;2w&9AH{!=;&-9=-6?(;#UD=br%?QP6#o^9zm4LbaEf31NtPaGr^v|O5xpaXeu>3B+^w^3$Bte
+4I(#E~$Hv4&Ma4#jhet#u_vqHOYiHlSeLE>BM8%Ld{l}0cDk|CUAq42#S0($$#z#iShEwv<krCm&Ba*
+u#K<CaKAC&!L;!P2;5s^`m6d!o??C$3mmRy5mY<#Tp^tsQcO>)nkQVPBuA5?Yfi};j&Y-~(;Z1VkgxA
+h@^3eZgs&?TAThesfCWNh+%ci-Js@)tPzc2p6PF^=?;?`eJa-TgyF06!7nK^5XhM!`1%{;lu6zrT!H+
+{4I$;wOhk#1Dv#jgC!jhXmUCv}tp1^XARl#~}y!$BT#3Z&xcoGS~qB$msZ(*x2~!_ztxKkbl>QMf$zt
+qhh1uqvHEK(C!{N0Q?{7)+3Hd=|_qz6s{$QAb`w2k-on%o>&|o9UCu*5IHFPC;XG6{7pb1meOd~r_bG
+Y-%SA={>j=#$);Y>l)(V<f1pnvfkJzSf25a(m%gPsIyNevxZJ0MAmaW$vUr3WA|e9Zygbz5$??hYG0`
+%X at rrcCL~43R_HuV=IzaXSuVSJi9RA6{y}X+=a&c+Zk1zy^@v-3~NHzWux*&C66F1MhV#qVHH_5U_6B
+$|KpPbw~VxX~QV-GD^Ba at MOOjJ$&$&m;$(AdJYu?hZ>;UuoHti~VwAptWrYt?dKa%6nCkz|cA=k%qgp
+LeU^_z2=-jFUIgj}qSGt_zGb#?<zf<cHFaB0-Fa4l>m7c1oXE6BA*m<IQ4gKk;?EIWNtx at +t^FO#_M2
+zh^v`Uk}tfmMdW4b;fhIAEzkexxs at 6i}A>8b6>~U<JIY5Y;JlqTbvuo);|`_*1a&B>Gsl?g4(%$Uvf6
+=tTbkrPUdsZJ;z>r at kO?5*)sO>%P+Ilt5=J$!u#*PFUEr(ee{tSD|}x1DtnQ}8|!GSuyf~5cJSaqF*Z
+1N_FH!L>{)j1+&NZJQNb==yvTm}`H~nLT)ldg{r>y!Y|(Yj-lg{=H=NqpUJp`7r=yOJ>gB at m)X~kLj_
+xVy=w4y1_<H8gKW2mYUN(gvWsCSJ_AWn9{dc8PeCiMrXhxqyo$bQz6kkj6O%y+t;*X^GQz-ru6n`1Te
+~;qtqxd!b+&|-#f5s{QTgNHw<TjvPyLMu!wyn at Aw)5%St5+|ajM`4suANW22OsX>-LmBaBxh|qcI(`^
+Yv*3AyuBW3LGSGz?9{a at g>B{Cp_gATKi0nE!`*t_-?UdN3ed7eiwD|2*tuJ;W=*?2AUmj3-5&1c>Djy
++#d+wimMz-(w0XE!Gf&T^O*}lBKjh`r&b?8)hwpFZ*%S`FygS^}*rjpDUU=?r;(_$<^>MwM-kNo4+N6
+me)vpIT-{;nzd at 0KP^iKKvwQt?ElV7i1ez+8l at _*RR&)3iIK|euXdwQTVc<@1KWjf!Bu at Ef6xyjIwBG
+1Js48mihL<ebo2-gvf6+u+DZD;S`QMPn6asm%I*Z+>^uc$GBFSbzJ)1gBLFcpAL;<_|x(u7(TaeymvN
+*oPCErr;Ip>X`~dfeo6oBvTj`2k<iJwp6d%a<=tqJC%drAwE-|LLcnexSbR?2kYGc%IB}uUxruiRPu}
+PMtdS?w&n+Y%VS?ejy<ty=0nv<aDql1$_83{6krzW4^0PmoA;i1g~1&VO*b)BS(g7=^^`lUw--JQ#6m
+}+qP}vKm70mr~Z_G at x>QdpyJ<t`z@#WH-|sbz^R}8+HSX(6Rl at H`|Puq%F4>}d-v`g$fR<@7MwOr+9C
+s7P_9j7fL+-VgsnICBWz}7W?)rS)o%>V;GN^&miT>$>YxT`=ybX+z>n|}`0wAppMUt_hn(=^AAInE!2
+A69^ZfhozvqV!ALd7n91-CVhsFqSKSyzvzx(dHvo>woG>e98(S?PD19Nh6q82PzkU-;V;D+r%er?*c2
+`nioc_bhp0KD^wii+xnbpI^=moH!DG?rP^sZ*yQ;^Be|7cTJ9(ozSX4;?zhzxwJcfhU!Zz#aC}r%&^f
+Cr^rZ(4+v3d4x$acjf1wf370AyFqE%fBWq>{>v}FT>kv?&p-U`yYIfGynaPEqVs90Z$X5^0>u5Z_|td
+_c{u?1D*zf4K$$22{1rMBy8?A-QGjrE0F}7|oZSI`1^*p8cFd!4>_{?E1RAz)-!AZne4IFOLX^RoGiS
+s*a73M;IxNhiM~@0X-9UN3M7g2vAkHVBd?N5i8B+b{D2JOjZ*u2{-fxh5HT<a#2mBfQuU)&wsT&gVuh
+;9lK#l>x|I<%D<(oHe=2YgK#>}D)ga0Uxef#za0PcJD?iF?A`0?Yy4jRw~K;BSKP)5LQ<4>HMPjDW7k
+aNvG&U@{`J*u4dEaiOge$HP%&-vAB*N#$MY5!;N|M=sN7y0`72GJOP0kxMX4?zR)1<%1((1Wr7?y#fm
+zxn1H0kDJT;5YDv9Do+!4gRByS6<{i>I=?IpK)$H#JTPO=Ye~PhMk;0Of+=a%6Z3+IA3sz^XlsArGEy
+0YU>>U{1s5jLV>?hPf!maFG=5U-uF1?k)IR)K?9Y6_7lznh=!~$IlorTdD;=q)gL=l6L*CF_3PIm%ku
+&Q13Qu|6oCdRhg)a?E|4SOSRWnWJ9v&Vg4{s<(eBcmO&~Oo at b7<8qM`RO&cg^-1JMvfa+7mh!aw~e=e
+}E{I&r7?Q=h?=_8;<3{SgP$EfYn~!B><8<O;H((1AJ*IfLAzUMME&1)jt+oDU!xVoCn{d at 0codYJRzP
+bC`ER2RB$=e*mtKaW4P#fv(3?i at trumJT8ZA*Q0K-L?QFYq7!=ob(V?Tqs?>>Slm(C{_qF+ at W&(Xj4E
+ekae*1TQp%|F6IP%Bi2J1)xCzg^v2lq&_-s+_=Gye7KCSnHkGpm=eyP%Qgul9{Ha0q2F;n=rrf?py4a
+IK9kIZDD`=tRG-l%b@^DT&pozCb(&h-0}bI%<vdTL(R8Htya at P1PU_MDxrbcWr9+_wvJN@=_P~1n>a-
+BP${NaF$_o=T;2B-c`3RYYgl{>IBb at qu<y4<RgIu3`qD`VUwKKIz4-yR>K9Jg0dgj!Jf5(m;9r90oJo
+@=t$^-Qm{ee;zs1JBoXaN4y?(x#+Q~4V+Lij7wLitLfVHweYCxzP2QAERV!ehu;i3X)Ug9fEOqfPSPL
+ww)C`9q+A_^<kq>i=Gm%)$Ebr}kdRKh?Db7!RS&DRd~bfClsj4apYpM?1M;P6U7ZUq=2q(XfVSc-bQ1
+pLdD#u at yvvo%5vgQhi376nnC!K7$6OK7$6OKBG<Qwpk=|y)OQ!XXsyOoaF$}pg>(Z>Z>CPEqFHN2lMx
+48u;6f8u at F}iH516{A%R|{^f5H4ar2q$RCIXr}`W#*XM|%Qk$gzRO+9VHmNJo&}nnM?UKNs#`p7rf`U
+5I7^MjKqg{jvnE?$L^C+~y4SlULE`uNXTZ|d-d{hw3H_i^`?-C7f5e;jJhAm67`ISrMchuOF6P=k<CV
+Hhl%VUhLAJ>mR+6zVg4F*FOl!XGQufQ9)0e6KKwEbxBF|R?piM|Sb8=j9J)AJ9Bh7Gd~eBDeVf0JmaT
+c4k$Hfd321fMs#H=mmx$qOe$^8C~&ZnHkZzxnd8puu^J(Ni8{G=x93_d@;&p9R1hc)<itz#H`ecq?Us
+Hr{!BjQ$riLjHHm4dYvhh7X8_^|Ocustc&kpkbv<!xEW>g`i<lZ~nwYq9HAc&rXdNG~hv-WN;c|1nsI
+{{?TTj55qVDuy*ZQ{>B?`aEyx-a4wVE)sx?U|D7LxDTS96>iCv9L<7}@_lbsg<ob*@>1AseUzQuj7w3
+fYXR=KEsf-A2BN`qj8XhAWW)Tf|>W(qS9Ie0o0sbTlLjFmvi$Kfck3Y`eeDh5~&z;br(1N)3Bk%L=ML
+J$eG;AgsM13Y2&?YJMc?GpeOLN2d^EoE|G|{ktXn2xnC?+|YV-~lEiZ&_2X^ioHMg8qR at K@yDXf$>K4
+#02j+_?@K>e6vLT7Lh%nx83qf$y3Z$+s2i`DVF3zvon+SIacKDAVw7lA{HaBX~)=L<1f%#-RQ=j$qjj
+qW}Gb-TJgenN$C}XwaZRu~}JJ`++O!BkI8H*|P-=&hqs~Wdaj*s_q=CzURxGZ#%{qsL%7|`dsI^?f3`
+yqwM?j>xXjSuf6t~7<*wXQ&LjGr%s*fpy76O+^$UUpiNpo`wr?e(NIr2)6mlvd|J40VHvfZyldC4JUK
+a;uUWH(qhHR;%i|V{h0mKePt at zLzy4aZI~WVqM+@*q-+;CXV<C)3F(1H#`h4gWE3f{I<{PV~I_k4B##
+kcP=Y>=k{s{jqTef)7SZ9cWe~%tLv}tK+S*fY171WN3a#*=?B_B9&AWuw8<n!mx=g&R&9DnASX9PZ&-
+veLJfW83zghB`AFrWeLDdZ4+A at bO1i{hWX3jD9}{i~<ej4`H4V+_=1v`H^aj|cjHIR6R>2`Pz>kDmki
+Az5EU^ZuX>8#cU2b(oVMpFVv$r#iv$-oJl;F-F+6YnPA*;0|0-Mv7c1<pKI2dzj~7T!*qieL$TS^_j}
+Sxjw&Er#>Ipv>fBW7w<%Pf`fyfS+Zn_SO-Dga$V*H1qFQAuwlGYr%wE#haTcIwidVm57Z5301XP%r3C
+<)Qqo4-`suQ9d`q#3`e$j3f&Tf8S&@9x(-Zi~Pd4&vSFawW^1kEshsBE*^P-}n%ZnB*;*UM{*wsfKd4
+y+VWC*^~yi&*#Xh6LHoxlxr)TIS$5a@>?_voWhSFj#|c_iF0Mnc(vmU<o{|JQH8qd&X;gUD2OSLEd6e
+EY9|{p%+1OiD@;fI6+v at bJSA^J&wjiE==np{(sFbO2xAudMlEZU7VY0d)lRp>BOgpY1&N!2Fs0$@MqX
+EyzE~(#vz^%sGa78XFtSXU?1{$^kS0|K7cO^WnpX3wM+OXixw&DDz&-#W22x+yhUTkRj0KEL#{;Aw0D
+u|MvCu)vjN^{wd5M{tEt(O#oyG>&<WjURZOsTCJk~Mn*<*lgY$;_UtLj0se?nmyY^mOQ{=*2{}T00J%
+bYjIvYKHwY)F+wN3<A at C=<=V`Utj>N+v)aR{Rw+b4-AFLZv{SY*yq@?h;xHutOt5>fU_=DHrIqbk2^#
+JV;+%YzV{9vq&dVo5BI)QZ21{3Z#DV-u8A0HEy`^ud=ak`Gs`82*${E at Ho_($O at 0P{uQLuJcpY=K?Hq
+CQZ0bCNe91L&i`V<nEVo``l7JVpEe-h1!yx8HtS^nvfZ^NxrIUK5|})V7VLK5{1EzMb4~6FKxAcdEY;
+<2Q_d(Ed|>T!44fH<-W$<&8Q^aw^6WnVFfQZKb*{`Zu&SkZ(l}Q4dfrQ6`WRlmXgg=kXBiNEc;<@<4x
+1^x}&ew3{Axh`R%SXIXWYVQ1L}ZlDV?gu3v=6HjnzvqV4b`~Wuv5C`oH+9EuVAIymWz#VigU%nh`j4N
+DSUH>fZ4*ZqzKk>T=G$`$2eRP1|XoINl7V`wi6#CkF*7ODbC>v!A0lg079<l_UqYf>`X8u3V_geTn%R
+kzPx_xY2T3}+0eblH?{Q2jf7xL}QcLfj*vIJSjJNf|NuINW-T)XT)z+K?)JpZM>X946AeGuqS*89<Zp
+shoH<V**6yK&=2{=y3{2zgfOFaUHbYx5X4;T<xg=ntsPeAUg(?LWcYfxmOV=sbpT9^2fmOaLoZtPt@*
+7s7)!;0xJ8+X-3}+-ZFJ%3qZCTkr=iRKJA$Q~zD0%)f3&i?Zga=<iTAa6>sLIysaX+9K!@po0P}z at 75
+=EA7l}@poSTQRY&&D-(?GG5*0j^l|{m7R=qdcZ+rxJV1SgyaRvK1Cqzpe<SV!f9Lg2Y9}1)KcE49C&n
+*m{~!nGkI;95$Cz`1_b3NteHZ0`ceMFvYtfF;oI>a|h~~c=cY!}-_jYpLki0v$MetYFEx>2c2w5jNx=
+CXMJCzms)pma~?s#w<$-V!@fIP78;cq#rhZj)ivTfS5YSx(F44*dbG-KhFl1a9|*>sal7ujTglj%|?e
+W!d2WV7_|z&~F$xn#P?rkiXwmQ63&>>!)rvY9WNTryo?*8Xls#s0#B{XLCk at L;zYD`LHmU?0J?I`c)m
+L!(l6J+Pq%dHK-TS519>tl4ZHMC1J^YV)xT8{5t>=DvqH$tlwQx{C9uXF2cpg`{J{S}=490XsM!b&&H
+fei69b4hPWM-owK~M{~O=RHv)Zp3#`|Dz&%e)Gl45cIgC-&sWmeb`p(&@ePANK}Q;IT$*rB(vx8=6nZ
+|Ryq0_HGUtbW<~)3-$p5F?<bOZ4;j1XmDrbGVve!geKbOb+Hwi9Nn|qYn&5w{Ubf(ZZLeB;L3f9E27W
+?@X&JX``N4nk)Xr~{0?6H(*o_S^%aKP9J^9S^gXxGsfp{>SP7ULB7!H#F7y+&UM9S`)KSks1n2W#@sv
+Hem0m;=xpG>hg7la%>A=DElh<7n_ine$-W<orNi_Q(&Cz7M*x^_BH4UDSFm)sY90zw_RQx_chL6ZBs{
+o<G4~EgUA+F&D^dfa8ATJo$p8H%&Y%>3x;`1J3dY{SfqwA!L4DTP8c8Poep13XOAzIq$<j`C|+WT+sh
+)UXm%+z_1>SHF+g}z?ch?-V^#ZA&<u;T^n>fkVojKpzDO5aKtAf>Ru&(^y4(&&zd!B)+A?rw=$lEiLv
+$Dvm?b?BGz-Uj_8~}bg$4KC)JThldPkGt`9mU$fMs at seMrL$N0xtS6Wy94qWi8ll2p;rb_FvS1w)PbA
+GOk1LSd79eE6wb*6!`Jl4_EiTr7vl(J;Wl3~txAaBSyOgzxHVNDhK1*{2gd_Lz7b%qyy<2;ve2|Xg|+
+E6E;?{v-|<BAzGW at P2(=TCChy#fcUn}8R1u)Ypm(_6B>4|*o7he95qV}fp at P}VQa952ChkEIJ7gghRu
+(S6s=zpgI0t_~RGU-m?}(04&sgf&g9jVtnqb#drdpqmgnE;;{MseMFVeVybn^g!+M$C#|7q$FkO(xt;
+t7ct+*_#AWt7w`b)XRFeM-VpjKtgF5uuWc`v^$VyI(2qb at SYVEF@Boi<8x7s9v;3oOJ^JXQS=9bdQuG
+6u7hrA&o}ldkFRs|X;`^UY5PAZvPp^~L*H=5$3Fw(@vYsqo#sQCzN6L2;!Kv%D>%THTLp{Wp-&xP%th
+)oB{zzwZbo)C(#{ykl5#caf)-^gkx3quA-)6I=y!6sb!=M|&cpP{r^J-<^An*V$&>q1L5A?ThKUz~K>
+XSz&S*y4G#~6F&%$ZqFJn=*(`0&(IPl<L9?JoL0wEvI=@B^}lyq$GUKb<|se?0pI)rmUtm=WR7mEA6X
+^eI^9z?v?2jQJJSMaNotU0s+`HYkf-ixPO{xnum&cVE=Vqoqb3Uz|Mx+1K0uQ~It-{=<e1I};urF4kS
+4n@&$p=TAQQq?q3UC#5Y=+DeoUcyrl)f**W&GXJnJLhJ=l<Z<PUKK#9Bb9lwMQ=B(2{s{{U3pANbGeF
+1e*|W39jT^T|tyc5NlP8OH-~|g7h_wr4?gO5~1pk%2jo?S!J{b?vq;Q{+Y~6PJ*P};|p;Yh1JP>_7^f
+J&b(Kw5b963_Z-OyTd-Lg^oab<5MC69g2xBtMO_>a74{BZ%gM64Uf#Keg8SKu&Z$`rwOv<HfgM3Dhy4
+Ox)~>L;o*GBPHREa%Y}2_JT2&i_Yqst({4 at qXdNi4%82$AdNcp+kpqlm+x_)Gs^q1>n0Phsqui#iYLK
+H{$2ND6Qo*KmU<QpKScm(?MC|M;aL0f!|omg$!aX9eNGa4`)3B$^h*G;sF=%0_`^1OyId~+qS3Jo#`k
+<{hv2)UdqcazdTHtbEBMr!-NSFxSyXNA248mz)e~AQ}ja!2f0z&3+zjL at 4feMB<4MLkhjPmd7}L(EG(
+Ra^spw6J|ArkbPJ<Lj}|&+)C+{g10E=AycjP-r-E at i(XjMS<n746?i!Z!ngsfz+}vEzHej!+vaX2o0<
+S?g+T^20kG}FJ^A`CdA8Knv`(Ga(${6_Fci-j9mMs%&#b_I`=A`Hp|6<-Ef8?X|zmO%+tBk=>_Y}P(a
+Da?K$AR^yO`A3;`vm`L-VXZjWDOMU4B9 at F^SX8GAb&p+FG`rSe)3lzd~4$U7XkI_kJ`5epXv?;;ip|{
+eR~V|qi=Sdzuk4jV-nOof8|enx2tLpPwEdlG~`F}7`c4;^7SiMuDnKV)K6>HtoipVue?&L-FfrPH!o2
+d*{{F;x^Sm3?yFX<idnH@#m8^G^_D14r4K_nQ=R_8IX?7hWo2bpXT3pboF at 6Zf_jL#G351anu8>sl=e
+Y|)A;(uvm&WYN_>QcOk)hEjAxWOg|;lYT$(dseEJy;YczXmjgJ}nVC03mrp$?)$AT$8N^{^%zueLdUn
+SUxwh8qJxGLXw9Nw~;FUpq2hU4YA6XuVYzhbU{xr&<RN=pbY=vpx+2kwx6<onv}7%|4VOmnaouSjWNE
+{?eu=6;y>Vcw~yc_+p&7*hdnv|D&EhrxL9{b#3$G at PG`8`7E%))6pg1OHG?=!29!sGA>;7UM09_b}GO
+SQBGi%s1X#S|ZZGoTDG%f$|$MVua9hqYVQePVan~Z!8EE^GS@|F>c4a0duEW=Ds42#BVuYOMH3p#TUh
+R5PL+RS3_AsUh0m;50|YI<NjIW9b;|~y8-;8enGTb(8*!{fYO)Zd3Sagzi|4f;3wu##pxpdD at yr8_R!
+WtPEnSF2M-oJMLUhM{AT+~{@!DK#s1G_)BE%NAH9nB8<hATfBdl+t10_&&~9VQh4Mgq>WmBQ=*ykuAK
+{hqSN0?!E%cMfAN>*L2}m35GWGrW&hgPs18<}QUO-m_n$TxsJqd9!&qm+9bLY-laq-M<{APqV0dtdq-
+3F8}jb-qHy9;Z~R4Q+A+7nJ(bHNFm;tl7mxiXxqiIW3x+L{}~DV%u2S!?c0t(ICRoV4a4hg6Ak)*8tn
+RpOMj#w;WyFVCDgE at OsjdS*seUT8;aZk8c${6uqRN?wo5^zpgbdD&@}9^<n!4Jmn<J*WD2RAr`QrKg$
+mEW^yXdFk0%p&k8usyl|YXsS|$SaPj-;?9&iOf67~M=|rv<E^>rmKpLpx#XIsSSc5CYC>-M)btGV1aq
+Fl)7d*(Tu4WV#F?j>GgKM)4egkc7n3zLd$KvVqsp2dF&<Y&gmz3z$;dNz3=8SiK;)Xtdo`SUNUvJBhV
+*g}P46MS6n=&!L?lE+Ma2y0JAAlo`RD!bdq*dHn(CQ{x|#Yebq949wV&FgPEe0muT*bWf3B`pH}ZeL{
+}=zk0h0rs4R}3ZW5A(+QvtsOcm;L|3=JF`XbyZLaB1L&fnNlk54;@crSZ}9)C6h5HT^Y at Xp%KkH2In$
+%?{03jayJ;(4e5{L9Ye97xZD!!JrF4Osmt5)K1o}(|)Jzsf*Hmsryamqwl6)qfZJR9h?@N8T?eRyP>(
+EgW+LAFGGZ(zahbpVVG)|XL#Q5u3?K|r{S34grUOVYwT$pVjO9-8fO|`H4X?F5|S3OH{^QA?;*`YzYf
+RH0#}5+q28e$?SI67O2F8_7)_bxd(BnN at 0zAT_Xc$g>K0 at O>Kzmx^i0r_pjAOvg3`1Z+Fb2)?QCt4)~
+5Zpc8PX{_EqiM+6~&R+FjaDwO?t^YJbrFsJ*Ubx at NjIy7s#6I)9x`7phCtJ)%p|P0-EJEz~X3y{7w6S
+E at UtJE^nln(H6Xch^Vg`|GFZSL@%`Z_%IDdj&rbeA3Xu*xlIQ__pzg at v`xzQ4<msk`<C4GB4!mkX0cY
+LOu#<8rnXzI<!&P-C={mhKHHMCWoyJ+Zpyl*l%I};RC`~hBKid8B1;1Om&fZsd|&TrGJorgnwMXjDUi
+GCj*uSydO{&uqWU`z|R3q10M+V4eSwU3QP at L9at6Uqv@y_LFJUH$<<8L%+$=$EYg%}c54o5?g?raG$d
+$5(AXezP)5*{p!}fILFGZ0f~IL7*FLLVsa>nxqdllSp*^j=sQpEIL+hezs=Jps;j4RCr`3h%Vu%+bbm
+Mi!x)+ECOy5Ya)@$`4`oa21`i1(Y!99X?!P&vnf=h#U2cHT)6I>pADfn7&b+DVEiJ_Ij$8f))v!SQKU
+<fxv8Db3s3_}bf49SL6L!P0;@DxeFQp0M)Ya|C74O<Nd3`Y!K8crLSv61lsV}!AvF~L}B++{py{MyJu
+JVKg=JQ!jPc{Jq3kQE`jLOuyO5;8q>R_IfqZ-thH?g<SJiwheQwkB+A*q*SnVHd(G!)}HJgolR at 2`?t
+@{sjJ-a6dF-?bXrhLF(t#%ha!`TL**&tPk8A7^dl?8L3IrxM&~NYIX6t?{uy8OM(Xywk?e9jZYg_7_C
+&A9YRM_ew#wQ!)Jsq4__00C>$3^tfw?vtM8+!{xtO*^_%LQ>a$eawEq44r}{7PU+#a}|40880bK(|1k
+4F|Bk*A0SAo at m{WU8!-)hP=E<q0mjS4CXO4gdSAL~BR9n-bZchQg0Pt?DrU$6gIe at K5q|AOHS!~2F04
+IfioQ5&_!!Ny08yN#b2zc)4sxi_R^$ipE4Az>jCLb8cBFOamo6Y_n?rH~sTn$XbDn9y;dg`x98-w!Pf
+-4%K?bUFAiR>HZ1`bpx!7WF~(8TDm#pnsx&H%+XjQ1iNGzvh^xLgO72NYcV|r*skec>ON at w|cw2UGSv
+frNQfiHwW(s-Wz-%_;B#A!5s{tRJ#2Paa6O17={~08O9o3H>@+PH+(?#yQ8rOmE=IG+ry2cjI*e2e`P
+#vJZH2UFB&V2SBzE0YGa>}xR3;@@xw#*huj-#rV at 3by75ccr0}BfXTuKy=N!h?k}*oXM7>U}3h<|PY<
+j?B0Sg0`1gr}9GT>~$#Q={$ufUFheFA3%z8APFFi104^CGnj4+Xsx^m@?NphMJF{Sx$BP%A3oKH7oWq
+1rLp at zg#n(Qels)p}41u%6nkvsA~cbieCb>hIOJr;_L{q`i-Rp#BkkGL=fMewO|N{b%}%`kxF}4L1y%
+jE{s&4|yrXHMCu*DU^vx748%nt{&)rI-pbFz`&fq#Gq}u9lAYKx`%W}DUXx7PE?Cx^b_=}^q=U*1aA!
+<YbY?}7?&7-F^&y2gf$H}h7St=clf)Ydm&>XWDHOjsMo5y_&@3Ymj51qyMNPwL~0TG1P%(k8aQ6lM(e
+6;rwh~dHQ0>1Lz;vJg(iiX!f~+gbhMfN at A$v(zsY~I|2F>}6#JzAPyXEBHy}A6m)e!r1AY(a92ge(2=
+xH#1GfeK7<ePlT@$4lrunyKlV+#pqUM31E<ve5!?mNe6SRx8?^2ujv$nUspMHqmMig`i?h?E*_%&+d{
+SEnsen!f09nnw5di8GgarFi2dpi1S{QLM1_n+iH(|>{g3jg=~clv)pRQ%?DcfhECs{y+L!!_eHH#8He
+RXVOcuXWcA)sG at +>p-o?!v;0=8uudIQtAHMA(YZ6|FQn5{yF{@|6~5g{m&UL8m<_s4erL~#@19{eW at +
+h7(<Lv#yFC at QN~nbhS5U(N|A9M(m5>6S5w0#hIxi}3-1>`F???L+VGv>d&BME`Dsb-?y2 at wcT@LMPgG
+mf3#mo^Kz)qpsZ#s+>;0oB{{o_<lxjB%Pz9I*#!@RiFJLWpRaa7bfV;}oKI(2k-GkIYnjn2pNRTNgDy
+UyjTu_2`h<2~`fcCKV7*TtQ+TL?oJGH-++AG>BZ8h~q?mAChbDg)Ywa$myVimQ<-KcL;>oht&waF&xW
+&7#kbP2j4y5YJ}y0N-c-9%l6E=O0OE7Hx?&7)rH8Qo&tQr!yOYTa7ho4R!*+aKt*Pz%0Ow^w&ScbM9l
+<5aIt>&}t9U({9Vu8`DMQ~U0&_tZDnd+S^4eMtUQdSB|v=js>h*OJulC8 at 8{SL<1 at d$4D)K2#m12{Tb
+&HY#jv7<icxmJ?<Pn;teZY;M at Ru!UjIge?wR8nz;AHT86L=L7#d|2+RZ|2+RZ|2+RZ|M~O(0Z>Z=1QY
+-O00;mH1*=HZ#|qCCwEzGBZ~*`t0001RX>c!Jc4cm4Z*nhWX>)XJX<{#THZ(3}cxB|hdwf$x_5gm<By
+IZQhDRVgDiMOBRjFGat)ZGr6S$F7Q9!GLqSeZ-sBC*9s35Jk(S|X*?5?`5tGnxCck!*eD=nzlw9p67Q
+c;R1R6(3 at K?-OeJbHiU%p_ at fxcmM6{{8Wxxp!vHyw03CbIzGFbBk_YAs7WgFu|X$3qq~H|G9<#{jUf9
+28~@aNcd0c=JRU}{>|sln*Ymk$HKCQ?=QRiK}X5m4?Xm-;<)ENM_J$@$1fjpcy65Oc<|wS at 4GBBGtC(
+*<GjmXw%tDC*wpx6%Xtq>y#t=o=HjUy_PlNCRqXlT)S2*{IdR_9yBO at zsYVt*HwOR9*z+Owy!n?U^Rc
+|2Yx at kZAl&;@vhe)w!L#FWox(UFJt<8P>LKtZkITCVeykiN1|jyIBnW2w5&EA(hk+q+#C`+BxGUqC;*
+Yb#r at abthC!H&FAELA>oedv&mine9RSd35blL4ta}Av%>N#m{(l{U at IunhCts%Aw^)Jab#<`@Vc$)s!
+#JQdmzCXnw{kbseI+kbxC;InPlt2E|I0X-P at RVvp~1u8dGai{y2}=FK-Nd-tB{8E8_q7Tth}rQ-Wg5+
+H^R;E9Ca?Z`xZP5fR`XKxAL(N7Muk)<>xW+|IdHH7BPrJ?k8XQLNl#Jp+b96Xu4zOt#ai-8E_~Q^EaY
+FkaO3`p(<yN2_ZMELG1d%g?2gYcjkD)Q}kS24tbmoI{RwK63+bMAaE1g#8%AT4n_RqN+=>&7q~<Y?oz
+Io!?yJYF=?Z2JGm8JLgru$Ae}`ngGg<>KWtuwVBuNL9BH*xFbKIVO&;gO+H^rE4J~mx^w!llz`E^ffZ
+x=xNe<0%TI7)8wB9PK2OY$`V;q!9j?3go?k+!R at rS3J6xX);NDKXZ5O$;)s#LOw`8@`=MRFN at qGzX1k
+NC0y*pq)!Yn6%O%#%rjOy)RqWObe6E?$on>#@t&jM>sGX|{BWbgN7bLcMN3i9*wdvZmW!`UMmnF3R!d
+?(>K4%b^D?f*_Gi!8%Cm(F8$!HbNKo>AFk+ChT!0<+jn+haqx`a_Db|@)v(erxad$62OAGB+4hfxpia
+*T{;Z=fZ3Kf4HDTQ)tUeuKC+pP7|fnBX{D5v-Hsg{3+?E at I)-6F2}~BbME7N%l8q;#PXZo4f(d9M8>u
+0a*9uhvPdpKX{GI)^ro?LXkOm*w0a&ANSP^~;7Wx>}2EBv6O at _WfrBJo_T!cP<3R(fR%j7eu7C8dlcM
+q!`^JVuz3usD)AY?D?#EP?*9;`f!ed(|DcSCut at jmXrZsu4SE}^!r0|RTD2({f1o|CN?xxOwNCDxdaL
+2{{-Z&cEXviCq_`BBYSMD{WqPs09$=Q!Oyvd%~D$n%kMczs;<k-gGg(w)*=Y0lh+O=r-STP9!1q*u3n
+w+Sj%#|uE0Iml(#8rWQdmNfgxMw#q at 923=hoerSVi#7`aX$K<D&~2w6pW2fwdUhj$6?6KU0rcfY`ce;
+047LP at kjzq`o?we&$!*hZ%OOiG77tJp8)7uL#A%-`hZi_2V7gWq*mV6xMr^uz7eW(r+j3iU+Y_6xlim
+(#^$LN{Ng#t6Yf at QYBb&Oq%?Ch0CW9-NIA<VOAcajYEh)DJQ2bF8Ms3RpU9T+a6mkX at 7cWM)eY%m+{Q
+Ce(n&~S5oZE&hVj-}I`ScZ7I#ze-x(>)%IG;`2A6SOjh%WjfQfk=t2cG#}$h`U|0M>0S9H<$A0vzZ!9
+Oya(`jG*>&VgDHXa)xgaiCErFqHXEh+KpHY4W}etOP3m-9|q0#eTr0j2Kzyg{}fJ+%gPVo`AnO0{l!A
+fC^zS8UJx`p0jrY>#HY<<J|=H{Oh=`dtemj%Vd_b81Uf<W&I<^0HEy%O8m}wy6w`9{Iyu!0F8bxmQaj
+5Zia5F;bq!+!|#RyArazlh4 at WCg9Jvk7^rYQjQm1iK8qck^}ygSG_t|JGA+TY=NYk?PRRP{IB0Qcex7
+0u-`J<6h&5Yfwaz5gY(r$d2dq4|%M&iOApcGEhc9jUo^#*%N!n0}Y!_>q>HZ8x8iRc5`XouL at d~8?yV
+oDS@{>yq!Y4Q-b6b4m3lCYZ+m5$jWd*N63TX|b1JH}`Dys*Q<nS}j8A&)5Ls#6=XwJ(r2s7w=*vl=@>
+nYKJbNJp~95vO%Xu1!H)YV=-q9Q+25i9c3lr&k7$gbwHA2cHnIph!Gh>w6GF!P0w*<F1#4yil)gr77(
+H&#ba34(`g4J~j^j1l}iXerskSaBv+Uebe^5A^7IX-HY(#(Cu~%~zam1(-+?u$t}k>vV>QG#L<4nja7
+X`%BfO!g$t!Udq||8&H5I#xVCb&ya~3;)vUadCq5fev0J at 49v6mTzLR^;`fM*&AM$X4C+VY7^mq#&i;
+$i{Dl_flG6NQi*kWjBU{#3kjLh*astC3>!JO)VEdgG-S&IPtTmD?ML{fc-+qp=AG>wkr>?V<=Fb%Z<A
+GU at ak2(xe9s%W9nx{!oB))>dY=Hv|DG4|0f1;jc-0 at K#R+B|5=@4(6d2k*9H&E&<7&!tEbGRx=M9+|i
++cd#a_f9*iw^6wkDLt8NGd)0o=i^3-P`<O31cDbV_{iu at f#!Yn7%V&Am|Ivv7`X;(5RWstjlPO#(Lc1
+bASVS3iy#9NFvV<j5^03&h${kDzM|vWU|#Cx)+IM0SGpA$%y-{v<k>|6V658(e#0nJaE>((o%736_c-
+ISLQ3p1|cw5jzp}b-4R_6BpqvzBQ4hGW)Ws}zbtVp&SfYzM}}G*UKm*>xp;FANo2hYa at uosFqk9gZ$<
++T6NV#}N5gAwT@;iJfx)yf809MnlzQ?n=AkY0^%0!s1J%#KNuEisXJy!tyMGFhmj%Yrs}sfIs0*AiIq
+1g_y<$afoi-N4B`+`_zUKd$i6}jY+T%<}X~G4p7#Fj7us-GBvI#5MrcLgdD2n+=9f*xG*$Mp!*yzSlK
+)+a3$WCvCchaCarP>NsDHG53BL@!|k+w}xcMAOzLgC8ixT9f{mRjnnR|d;!1g3`pXUAcP2$*CNX~?Z>
+h}8*|g)`?iBNO~|JsWmqBy`QyjI}iDwkKneAoA#~v643>^3obuRd7w)wT|)L)kxOS^Rh6&--nFBcMeY
+r9IRBpGVL16Rzv#K2>#q13vY=%@5$neF4h>m5(|`F8_F+b0tS;?*|_hN3G03mwynV;yY`eFI#UMa;J7
+le3{c7lz{OCRqyw5E=eBsx=)jzt2IQ61g0jiLV#!VgWcked;ho+-flXZtcK#NO2s#-}yxPb_`*L{DCj
+dE6)$I_T1gZ4P at tBr1je!)%@X!XGs{?95I#!3GXl4?YeaOiw6JdSLZINKE>$U?f5cKQL>MN7IJV3&Hq
+A+<I1TmN=<Vz3fWn)60Kx$PBt{Pzw3}Tf5s%kQi!vG|Dswa$q*WfNOxSdg2=6n~f&Tlqgpc7|D4m4P-
+dX1+}VX4nFa6-ow!%w=f6%+l0VmMD$4_lZ9AiMg?7SjCl05m@(kfiO$h`VGW>NY>i-%iJ1VkkuiwvyR
+-4VL_ihM0Dg+0Me_AnbP?3z+>bs(kDx$FSQIW&X at b)ER4w_96_)r1fk_tni>UOvJWb!lSY<>UD@(;SK
+InM2?+#BLxA1feV_<gNJjZ at Puh2k%4Tb4JT22->Td8N02OG2o~auUW{^STo{J&z`<&Zmi8g at gLfD<L$
+tULg}vMskn{}E=`3jz6Sp9W)JO9%CNZ~~fW%-X%mb={{Ht~3Ur-1g%JU)hUd>?rBm($(e>_kGNWhkQw
+w{fkWH>{eZd(;$l2R^&fm at tDhe2+0gM0@f06jK=qZ%@g&W8xaM&;pr_NUWp;SE at wJ7hsMFJ8tOx+Kmo
+wYOu at l24fg9&C|CZ!a{>HXilXmVkpE14>?f9%3^DD>Lg8eGf%X7;jK7K}N(b6h%0(p)Q<n-UA8BAY=+
+Hqxq7ry+z-(AtOc(OkYd9%A`>nLSF+Y`kO>#e3md3H8#16pp=Zf!HNY0B%j_K_|ezhE|0F0$444AfsT
+*5J at h9Jl=q3gP+_M}EujJxFJW3mUQEw%%)Vvd9CM&TOOD7PKgzZnib!t}E>1_~&@AUdtZ!5i44ADb*c
+G^tb`DFdPN<*qCL#ej5(ISTTv%Q|b~1J!)RjS?BdE=~ulq;8tND?OWVKIMtbWp%+lD&cf{VCv34pH+0
+PI=xoR56v6W`m at J<XoMghWkA_K+K$TC%hn4Ot#&?mQW0dsQ(c$DpJ&z_^wvclt{fS-in6WrkRd;=IrG
+gGZe5lb3AqyIRDj4=~9J<c4jy2F|A^L2>b1w8$cnMnB+szMM^ELkgxX^q^SpH+IU|&Cyp_Hc0o9h|fj
+K=6eAx4(NvKz$57rsrQnjQuh%pRVM2_<R at QurziWUmWHpc17303Q7B$^MHW4bV#eK2r8ia`2-ZmBS0I
+ImRVY at dJ-YG$D4E$b`iPDsww1n=&7+H1vv3AoC{;6r$ogiV-Uxyb!wAYb^KmEv=1_DGuCs{n%ml(uTn
+IyV at lYH^lrW=L0*HE}-63ax4fqG8zx&7NL>_0=4){n at bQI3ogl@7Bq?yHbe`ubAOEW%lqzHHyIqoOlA
+hFCtVz~pU0!Jq>PF9cWN}8Y4=eE&hSoga_5)|ZuS8Wo`k5eE|u3)t32Z0e}9kc*!qBkJZ<6=m8Iuk=c
+TV*8Y##tfD1aw(Hxfdi8CX_JU8e~0?Y>H4rua`j&qi)0 at C;v^QkY-{0qZZBKV$GMOuI2y=A>LZ#m=G$
+rf}-`Y*#L<xVvR}GE?|1HAH-`nGgf&>M7KTg3GzPZuvx5u1hFO})@&Rfi8Gj=*X3f|2AGPSzB)L8i%I
+Yb)E~Va>Y`I}A at I0G@RxKfHK`>QV2={nguIs)UJdN5Gg!B{jm)%n*INKQkd|F;A&t?oxYE1)Ve^H+cg
+W%F2drK7MrAS}(g&@H^qAFe#`=h<PJW=JxXWX)R46u?6k4^kioCQylD=Nn>tvU)><CQs(PVwJ6`EDmw
+)hA=X^posdOM)9s~*<g_XOU;KuYeR=&KOOe%x9_4i=FgjgMP=kv_Aeem8bHF?AL_aHv at 7@|dBvCGlP)
+(WO at jf~zqw9_uGtWn*)^5lyTSk+LJ*g?2PdYlUba`U3J%-&JgeRDS{VSc_(P;1Ywo3hfpp9f3j5B|VC
+fJnodk<_YH;gzKSpR<j9&l&0+Nu;)r4Mmh_SbQF-5fqse^^J1(k#viRXf8w&*PN28AaBibV#KeF-A+i
+C}Mp3r~i5F-z1zN_bbv;CJnK{O}W9!X=xH7<2O35yf9$>U&=SnqTrOze`$8vwAb{x(<6apBv#}G)RZ^
+B$4r+^hf@#kHIy6zozZ`H0x(<F88Nl)kwyEaPdYA`6n;MbxIlEgK8)5=ns3Y~~5%ycLRGc_ at 8bLtAlP
+C!dqANK08Wo7}29|~GW_*yg24jM;@MB1^zy{BPi*PsMe<`3enzcjc at NmEZ46tj9FDeyHNlL9#MkOuMv
+a<d;0QSFScrJ#Di5p`zWyhe4a9-A-2Xjy+ndZr+xH)&J5B)h6yLo=>qog_VUN*?cS-y|kGJbX1$&7)>
+0Mg!4#`b6ZNX>@Tn@`RF!f?8saja1GV{T at IAka<9dhtUI>iFPc?#F5r6fOfc*Wc6;lpmoyAl4BHcr5>
+k<e?ye^#Q=(k)q{rkzcH=M at 66F{&egDreN=Qi6SS{u2c_JTpLI1nK~dVJT`rfHOCcZ|n=12giz{$obv
+jyH@@0EqPwp<Y7MG7fkEG_mfSY&Xa}A-FobO{Z7ms1G)i||aFf5dYfSHbinANz|L~BRJ1)AMQb)AkJ9
+tYi@&Oy6DE?JG6M>L!O{WpSs2|CaU>Y2n)oVI#2CUl`y&o--;+5I<90wtijfW3#HG+H$|2FnD~4FF4j
+oga%rJ0q=uD8_H;mB&yCQBq(KUq!ghFtA-7=K_OR1A>XP8h4aDqIZLz)ZxmtmCBunY?Pj1;lXUVm~AT
+jXroAv`Z2?V5U at bX1c=;3UGTdC2md7}?u*Km>u at Bv4u$%ELjkwOMsH?<D<cUQu4*=1nZHg)vHq<ZW|*
+6UR#~XJ7%hpgNX%n)KYHRdLEw713M-YMNOBVh`OI(tlB>*>5|m-_Z6YwPG3mS<SO@*Mw0ThJhT?Kt=o
+?U$Hclp0PS${snIddB7F6qiy_f?SMa)}RDdy|YS_tqfIJ_HTo6N%@GSwv1HJPnxTuFcoU;o702?C&bX
+Y73;$lt3#@HSTf93PU>0$lWT+w-d!2D)oe`>uq5T5x+BTZuT_wFQ{4@<TKpLsd*4zj+nIFg6wt%=V-1
+u=qj`*nOdL2kuRsruP+*M=eF<aw3_0<k7sM?Cv7+jh`HlNpxkY7(4`p_)2~)`$E&3i$aC1AU?aU7S&1
+=6peuYIZYX)u*dJ}6rWrPprr65zN;^>Mav|JRlmnKmq8f`N-R!1ANky8Y|>kCeF;I at 6H4V$p``r5j=)
+4vYWprhrS?4N at lWtZ?Zdh8YYj)<X5F?MqRDiV#O(L1tgZC-Y4{35OJ<t<B}ELS6ER|<&$z=+*5d{aw^
+J?zJkdV at IEZm-gB5#HgNtpxj;69GQf(2D9Jz<Qxrd6fn^rm$S8iMWh)1rJ!#7%p1bwS3OCbh$Jd&Y<$
+P=-;MwHvN??C)9))9Y`6?kVdS<sZB89gM5c$3L)*VW~-WxYX;>@~^8J){tX?#{A&j<xd3y}?6 at +2hJq
+F2@(w11FV<s!IrrL|R-No@)5OAVJ$@4`8;)*d*z#@uru3Sj&Yaw&QXKAoc-xmJi%+;qxnOt~>^m5Yrj
+W&t at Bhk8tM*I8O>&-8HkTLG(AsCC$v_7&8AFK<EM&BW3SszMtp}&j7V<V<>ADCf>*sC&m&}YDb|3>=C
+xVG4vRw4Kv7UJuvzR=uaCJ5Y^2mMi~TcKby6-bb#@OWup&d$FS`iy8#BUu3vDfN5RQYh8cV))2733pJ
+FZwwgr-#l7K<zJ`i1?bf4Z5_yo#hk|5(F<6-5kC|I0~RAi<fx|sdp$x#N*Tn=?6bZ40vwdNm1yW-BWY
+XM0IaWcBv7ySY)mbGua$^Km|XK$0c56F?@Mo`$~Nc6g}f3TI#0}>L~JYW}NRfnguCG8GbpJ4kpDE#p{
+zEpdMEgcGELN7Zr$MuOEd;i7vB*M0xN3aPS%7EO=b6Inm7hNQ-`8DLq-Y}p|-O)1|6y0h;#uUkc;$DK
+{u-Z&<O_^PUx}*QXM66Jsuq;+rTt>2^(BT-!4|2$r?+!Bv-rO!9iF(6NaQo?(pt*ul=Otfw$!=IEuL-
+096(+%(OX(78jC?+-J$EZPYEPLmUhP?=jG&h$Cl>EDW at cb51akY-U<6vplt`bH-l<tWO@*xLmLx1sBC
+SwZDQag85F2b0tA51QwWe9^ow at 8$<yTVnR<UXuRuxTGrs*xpwQAI^T&PCVl#yz$De#OJ@&x}Wpw8E-Z
+nZ}Lj at j27PKhE%a(6Yk#UOGWb*nqNoI$l~OCUNa at QC_-pSu5~x;05$^FxZZ5DE(11BFQGx>lk_XDK(T
+(Lu^&sPba0dxYAXECxpbEp|5vb-<6Wf?5V?`Jkx=vc05PT+=m3%f?U^3;i%i%Zfo}0Hmmi;+pR>%FPn
+_LNh@`26jKz_n--i^`gSP7H5^IAJagxr(gu7S|j6!pV2*qOi~a2j;Wsw$pe8)Rab!+T*Oln1=!ZH0?d
+4;ktVYO*l4CfGlpn40LTXn#1aG9J0$^P1(3m7Hh}ztfuzJh>Zb5!r18oI0hsl)rg-vm#o$3^So5P=zX
+`-+;NG|ih?}i6SK<Zi1Q6YP6X;sNzUPMm_K<gsCls*wLjkC0Jv^-NH<2s7AVw#wYB{I#ywhw>Ik~&S(
++%`36cuxIG&8yiesck6o#BJn{*rEBPInGR9x=I7P)cRcX1d&VH88u|Z5JwF#QfoDr_>(nB5U|YD_vsd
+=7aZH-)$2xBN=uSq at v`Ly6z`gLx&?bGabV+lnj})LK5z8Xl5CyO>c at m3Y}bCjML)jE4j5B_wUVL+EA9
+r=s~%8HqPcXe-m+aZ+n*wz<I#RY7m5E^wMz$SzZ5xuupZK5Hu$g at F$+ygL!ouc^9oHSyc!^#+*R$8=X
+e7Doa?eP}v2!+{$*{xqv=>OiUoGVE!r%1Jr-OFtZ<LegeF;p<iE_4ZK4RzwNZ5fv)mkr<n;kJ?OH5o2
+S7J6B<N8^#akpR|lRPMt$gB=RziiE1;*=K8rPO8P1oog>u+ymBU3=zLksuoo at T!9qh^9Q3FSb50*K!m
+Qu@$-12yJY?B#QOgEM~55>nEd at DxJ6bMYj5{uAK;CDJez-#^!%&Rdn30kndp&&0g9$LvpmW7~;3xQx1
+IpnR-ZG+!Ip^WtCHvMg`N65PE;M;6;tU*1Hp`Oq|irz?9=3)t9?7W=2iAvwWV1-|DB6eV at 2HB)M2bbw
+NcX2z)M9x0fi~tEv3d;ui5-xJKwzpz&NFlI(0smg~_UZh)U&jTlG71E8p4kBS-swYC=%{WR at iuCr8~r
+GHgG#g+(RIEb#aw at A7W)01siw1WmSOVE<8DZI>P#M259Z0t`NEsq!i?5{#6|ta9)CFV>mQK8`^Yv=*l
+ls8DcO3R&)BN=Tv~QCEFDsN1}{pk%|wZ`GU9=ZwM_Z$1?72aU4#6BL_84_#|6DGg$-*U6;{E+hdBeRv
+vOYzOivk*{#iVI7)wvs#rG!n!@QS(3EAm}WTZ3O9}ma2to-2_Rv0iBG)W32C5+bR+JCG(*bd`alv`JX
+z72p3KgyZ3`j1T7#<W;Y$l^glLLCOMY{$J8tFI~IF#lnsW{JV9=m+NIpU$_KLkdhSG#ZB|bRu%Qa(DU
+2Np+dU5V$}tY2?hIQ4VKRKqoIVqK1+I)Gq3_SKee|^93Mus!dk)gmXy?_jl<xa+4+80wB!+xvv4FSKu
+P+U;wpU=dz!C>STIU)_iCO0d|=!gRnYUecWO|!xo6;*S*Q)b4tEPnm~TiV3qYPf$fmV^#i6&XKXDURD
+nRUZW9rn!E6oeJ-1OrE&*ZE+;s>QjTYc)%|QNjZy;Vz$I)yiYL)C<%RPDuHZt{S1bsV05W+WPQBPW2k
+^a?Qv~ix0jW8K6eHjY&sY_0QplBkE+M}x{B1re7#QugzAA-dwzCWN9GcA~w3f$hnvj#4WvFJ%}@C_AQ
+44>W)y6`Xh^LA;OzR;Xgf|g7dKoaE6tUH96jsm06)N>8W+|%qb&^b9=a1eQ_aThF7dxXGX`cog<IJAW
+2!Sv8~*s+W~{k9dr)iWy*9WY<+V9dO_m2bBwCViVG&|4;Rg`3YgkSn$^=bwjHGP&MrG{jP|9hs>Z3}v
+SAM>>CGz=Nfe%-$r3(I>q5Ph?JK?87I-%AIWKotN81wy6h_#H#hk01hN6_ux+v{uHYRjLJ;)fJwPbJ&
+>#n*Ec9v(&!09B$FW at fmh89)1eaUBbkrEBl--}fhIh`qZYwKTLR%y9=;313+VQw#AcBNO}}MqpJN5H2
+9XW^67xr&2txjCCS at q<bW9cL0A;Nn9b at Qe!E!T#CFQpG!*_$)e2G)T`AH3|wr}9UwzaUMy6we(;Ic)1
+>M27Y1%zL8-Yp6q3ZzNlA|uV%2b?viD;8j-Rv63`>IsW7SUr)hz%pV|Qv5&-6SYhHWG${oekc+Y<bUA
+10FZ&99<mBWkfx{b7qOt3J?J!miTNb+>yKfoZo~DCm_LViW3y}9(u?Ji4Qw_&#k#KE+iVf^dRz%e=Gy
+?IeMUb)y*gxaLd#O1WsiX1 at +nG!u04TF@;uf>wo3Zvnwe~bhii{A2%DS=O%{W89eqGpdtH0PU at 8PXA=
+b+1Dds)Ne7aysJyT!<a at s5~x#IL^zph3yKNipkH1+SCaa++%t`&_|wK3Pam>ReVn6p0NpMU4;B+xd=J
+gVVRqbr%Ztp?)N%npdqnMNp{;QOR!x(tNPU$4QLP>Fa_ at 3sm}(irCQR at n@{_|{mdz at xCSvKt?e;iV%i
+1Ddy1XR<w)lWel97}Kf8A}>HkJGLb`h9!qSs$=s~4-5jiNoHlJEQ%0((0rJvD|n6r$94VZ{10^7kFUY
+dWF~89oY!q at Ur#VH86=7|%`gM#pR(hTN-oLVb%1$^0G%?}jSxFLw~cl(+2b!5r%t!%A)}T;|MQKm=kC
+J&>?dANNQSXy#QZjXt;gMCktbQ{ZQo!xwhfF1-KvWWoO$=}0~22!awIdI#ek>FJT#Suig_rHhvxIp#X
+Pi-hsN;GVjddALZl+b=*;v~2aDiFUvv6urcp!ucM$(+CL?9~+;KKagqbCo+z466bn2<V%){m;loJTXL
+dInJb_bd<x6*mN at lm{mXOEAfl8xrk!Dx4I6+8x+l~GX2U|a!RJup?S6F?*Zh(EXzqdE-z^I+MS(ZNSI
+ZnTc!^}DZNHQCqA47BrrPk+FMC*?J?(~OMrtxA~<FBjcEyeKiomy^tH8XMzPuQHL~Jhb0#q#3AY+19+
+87-K$(Qs~B$Xb3xF|DRcf!q?mBZ5IhK-yGfMeU+^g4~=B@&%5vu+!Zi~3+-AmN&tyc&XQ^3dvktrgdX
+0-7sLxk;^hA2E8G!}WQr_&+bgUuKG!<&$v?9>(c{ZL=?_0_0iJ3RpM09x05{Q{9>(5%uJz@!*Wi}5?5
+dZ=DXp at xRd%(O4Mv#rq3yZ5kUU2Lv)CnvZ*j=3FUowFX1<6smC15MH_G8LJ<N<+@(SzWGt4-(MYqjlV
+Mqsz*{1Tu`&r^{ERjyy#VP*uJ=4?oyl_3%kQH{fkFM)(*PCN&a6kVEXZ<<Cwj`d7{G9Jk|J*w*UpddW
+;QwvDz54~>(=>+Oblvvg-*_)E7YJwC=?rJUKbb^U<L*gmzC|(Sf)HOKPnM0%xpkHKY`-L94c{-h$u2%
+ycdTKPzeJi0+Jm38`Hc}ttZ@(XiZ#W_*N6Rr-3xl at dE}-HzpJe*jYt+_y&uL+l=KL!#}mD-jb-0r4J0
+z44TwuWiGb?y<XRn_8R at T>FO at Q`C_Ccg-fz{&l+Y`RxSbI?w!2mBFvOM$CfoSK<`3WGdP^(lEQ6R?(W
+>?gFFS(uy?}Bt at zh!3yw-Y#%?xyc8BDY=C+`;G?!s<}A-(i(XjAUuQ&Ft?!GO}Jkq)1RQ`R6>1!58AX
+-sm=R14O8EugQ}97w3tQC1MEYMEYo>9$@_qCXyHL`lc|<6BJBMjzU_Q~A!g7#wE6v`fE4K<3zA8oKiH
+6U;)c+y3=3dIc?Ueh>9r3?)1XC2+t0F;f{=u=Q(otZ#Jw5m*)xU=NHW?h~s$lOLIe5nH^h5m!SI(rRX
+f3j4hu!^rru*UQ^_<ZPHbJ7~M-+~r!aT*!X#O>EkB)EFi((17H}QxGg>D31ZgX<Pgz_Q&clFy-Q?1cC
+$_^v*1HHQII0jC_4yB#-(XM#bFRKY5Aq6QmB%Ab^S9NWNe`PRrA!YD;N;t}<A!XLja>q{`zz0!quiLy
+h0<uKtfR7gy7d+}u?mhuI|1$rS`etVg#kd>IRWhLHjq0NkH*0{{{WHvl}4<0IvHXaq>utbm>wM(I%xq
+Y-5U5ANmo$WjYl*aZ|47`7UTgDwCb&h?smPBBG1Cd)&A84qMG_UtHyZtHo8ajOqbaXxpEZrcqplatFw
+0k8e at DS>%+<w&dXs24g{)xI?Fgv3BO!-t#6$8n9!!V?KoI^^ynva6|Fr0&iE+R|KEe6N?65Y%PS(}Qz
+P?^tAq`m&+E at C=KeH0idd|IGFDOVxtW5G^Ppadk9zG2Lb(nydcRWW+MHH!+aR1840a4_IH=86tjuXh!
+a?BGTbUyU0;FT-5Ff7fwXioL)IJx0TK at ak<MzpE{gSF^0k`ZmK_06x^qn<zSccjh__Be&ThnMu#WA>l
+=x=?uyeQP-JV9mrh}VL!blxT0`D;5Q>qix|G~t-Qx50qV~lWnRr{P?V1%&Re(tSX9HigO{7U1ls~t9O
+7)xzbn)eeaA6->z-9n}0Gi8zNFL9L5y;%1^K;>TK~W#*HtZZt5eixdnVwM>u;EtzNOWcn?qtIf{f>)9
+VpR)!X%nkZZt=NVA1R_0KOl`xHGquqT_G?CJ6eI}`}yA4L~aryJGfP-8r_z9`T`5+^^i-=8z%;FEvAz
+p6tZhi(A*!`QIVGlaY5hgA&yvK4d*D#1%)+w#_9r=I0~Jp0(N at z5Gyy3OX(rhA{^R9!MaB$Hl{GBEZT
+Mm#|-_dv~;@uP+|aYKEwv_XS`2x(A<Hxthj+|BDZSMzxE|;Ssc%R<N1K&g^rLMR}3})is=wg_sMj-T+
+-PUc``79UeBt={d9G at -GRF06)?PA5x0^_FY9mPx4C*(#Gs4}J#OiWSjDOkqvArV`b{4!wxQ{EQfP-Xw
+d1hboD?dwzkxn>fl2hbeb}x#5I at _MLG*GSng^jkI at v<AZe^SS_vPp(w+KRap&c!mVpSMrTM$KOTC*Pj
+vYTRnN=TtoZw?h&f`^_M=^^VO`<t^-SI}-%TO81W=ygEg=)pE#?dwy{W9QHs at mvnfOZA(vxH*Tra<Va
+_UQ2<o&FFxBN*0GQBDalfVZKJTBIFo7x>$9Xse99{%Ym&_8?@n{FjjyrT>whf(@Csq*C{c$9w5b4xH-
+=~Qx^1FoE-!F-a%bxl+b|P7Fb3@$Iz+05Oly5OzsX1l}R-h;HQJEV>9dnPBNTSpsp4)7e>()f&O?o7i
+@@m916wxg%)KrbBd~FV3}hOER{yCK(Im!CUvnAk^;k229wlSXg6pnqBZH5xXdun$Mu}{LRb^k9!uFwa
+aEgdwITM;C%(50qTOZZ$=y5EZ&H+Ge|AI;SwV6tBF#Rv<2qj?njFaIffNWBmBFQ at r7J*HL_d8C?s@)*
+?tf|3gJYhlT at B(`w}3$K-&fg-$C}G?5I%Gh at Qa(Qkk1XzcKGXn{P3Xg*9m_;fp+cLn7vYL7z}@q1Acf
+GcxlHUmI<B|e>(A}C(znik>M1gv$%cu|054>M=}ZGd`~)%n8Lq}vMC(>Cu3tVHoW@`PV1`#O+~-%k<=
+z{J2GZ1r7&!A0{@M(Yvj(rViN3l4zOb%vg4tg9pf)bHX(1THY~=O4JVPU>B{+-h_I#sY<u4co``H)1h
+!o|B{ZkB at BhHJ&#<S)52tu at 51qxikDSf9cXQ5tAkMkB#5wo+80Vfr8)<@be^eaj+=~Zt?u7|vdvlC)F
+QhAIjB}&yh(1Y?b4M$fosBZ){c!O>=Dm0z^X at MXx8qAap#^vK4dmWe at UjC}(2FVO-WLP+z6by(arQlw
+4q)HOG%@yn_&&kDXCN;)$2pj@{K<RyQJA{#6QvZvYji03XiD~#s#t|gaiv=fqTyy`l9H}AJ3^8 at ir7}
+04e-j at Z3<m{6KcUSkzlM0D2a?u#r>0MPMO?lCC#)a1=Q|omiXBQ#_C>#m#%5{Cj)n3hNBj~xKGBwcP!
+ASOu|4r?!uF;a`?)l-MH)6E=Nw7X}tw2XqVKzV~ZZxRqQv8*{!Ac!&&cs36k&fLW}ds$xjB%;+lu;nU
+%|!gJEDa)Mim^(5mif%o&q;X^Wmn2-_*@H(JD120Yal618EdXQ~}mwa%J4&92^W5n|Xq-PawrDXh3(F
+?;3!hjliAi{+AtMB1CY9cXw6&E1CsIFgp_2kk}=<x$`M_yQPRpA4j`1Cdt04sR}VGW1haUts6GI{l;v
+RJ9%NgQ^zM&FcQK)5$Zvj;SEoKhRaY+;h2QCFnj20Jic3&gVx)P!URo3g~z7agE-UjL7;PcgC+x#-S9
+0SFw$rHf5V<`GU*yK=(oQAnB0QdP)-4ZuV3^I8Sd;h5^q^Ck@@LD-Fs at b#I at a9M$H<!Y^#oBv-p6PHB
+flv}Xj8JhKyzrVoD?7ieh}du4}}I?O;;MRIN%^ARRY9m*8m$KBZW>7<Hv$sd}N<BkV><O``5)$1-#4)
+E40G-NFI=cG#4G>cWg!KDYf^AtR#>Ot{5lDa{cj9>b~w-~(PdEK6BPfn`0>X33z8~_T)hXRzFKqxM%P
+D|u7ektqqkfjH+<VzK&41voA<hcg(WI>*h{dstXUdW1hu89weKV0;c2dx<ym$Q>Oy6vMCeB-+s1?Q64
+UjY-UUSeWSrLI=->0g_eX86;)FyW2gLg_tN40gIgthy4nfh$fWiB-=ep<joRDOFsX7D%b^=U7adx#Hd
+&%L!k}Iv?3xM1JrY8-XoT=14Xg&l-G;wmNCKSC~9XtU^vGU9(QftTxJegHK-{-NaT~FO~IXzl)ZS at P)
+kw^l?tcL$=xzenO)-TcKw?@ty%sFUGFL{K)k6u|DqjE%$ZMZGZm_dn?Uf`jv7w^eYScHLz2%GOA)}ah
+fvLQ$0Rj@^Wu+wde9w&E<3L4y0ppz}#p|)3SkJq?kUnL8rHXRE&vGYSTNqu826}%^$-nlm&hAyB?(Cl
+Nm4#w6O!LbaQ+qX{m?{)_o7z>&@O at v2>n63~ozehmyo9GzQB0#x7$8h=zJY^aH4vdC+O1dfc>Z1hlSf
+2mt8y;ws~mypM&>3k`y at Ph6EgMO<5Dz!08(qYr(HRDUrtx{Z1?0Hx}6u6ii5q+T|*YjaOWhYPBz2D(;
+{CoLJg+!)6R#(FN#SC1P5XT at HFC1tm3LjgbCU&b(0(nha at m7aL_`N at Mbr0m_>sE2GUB8|BC<hHTX$9T
+{bMhiE8Jfs5`Ox^b5Gt3LQ_ZwJ2pt&2MFjoVa+aZU|cfYOc*T)*`7N2YK8ux{k<jB!~Fdw5eI60NfQY
+nA<e<jFyj3DppCrEapSnUCtybLWal53q}EoG*&B&573KTYF><*Tj_33C(>W>RUsHINF)rsz8Y+a8L3e
+Ku{jbJ|4Z9ZQN4=QUwQl7n=c<r(fS^E?0mfpUQ#XlU_UXA-H4^{zC3cDv$+<#+sYZ+pBhB-Q2KodbgT
+ at x0Zua<0+*NX6Df{(!kOG*r79hDvU#$F%?$pph<j18t at 8+K;~pvH;dJT+4{Z?SGTW2jdYbK-crcCsE+
+n#+{R{GdM~)3OQ-R03sO_xqebCKG0b%Zh_%F(I<(XuSkP-n{GR`9M at Pg@as?a#8)D^oxP%uQ&c*I0?&
+g16WODE2=uWNlA at QKLNm8EioUgntua;oSqJao5{SC4xc{8h9difXRl at w$2OjH^aCti*m-MPSu8p_s!Q
+GOOonD$KHj18Hxw~*}d>P(c1qTk}+W0$00^j>dHy-5hhYNN<w509>SzurBbYkj;3F&uO)Nc&RFG+(`*
+ at H`?_&j%wKfD`7Hrl*9zCLQVqRerJAgo|nyF3nyK^g2JjXv@@q>SjnqX3$XKEFHB+qYO5Fkc{j<{Wl@
+coa*Af*<Y&JNb1&EK5jajsY8ZY!8`9Vb>&DLz{Re%}As%1MNutvYQVbRY3kd4#F=x8FULT<R{1(Kh<0
+b at 6f8rsPYVvU7wX@vP0!x(1Tgf<Bj~d(~6_0M|3IcW!H)F4EiDFXTs%L=4W!2z%x)L at 86TCJh*}zG;y
++-K}BDKK3d^lHIvQsPAi%nyJXUu*hGFHi5b<LxVd8%(gAs!LzzR^R!?iWS61s&W%c at Qy|ihHE~I%vWk
+z_LB&0P?xg0~&Jk at 1|pp1Tp4i0L4u^hg>n-_zd&g)5LGbEIH@)hSjV$~Illc3W$F2EO{vA4wW5eg*!@
+O)E|@w<Gx=(oEzis7eO4+{QxDAszko4zV?v)_DTE63Wx)vTIOit+Q1?QV>5Mam^PJcBp5;+{zrr!_h!
+Z9s!l&TecAv5jWEXtKCITT-nhldSYZ==RkY-1Wo~pE}v8EA#Qur`#=dc?E-VJ3cIdK|Ye<)NN(e%v$V
+~OAdqDvHc)49la`KvR?fzW_LJLEE_M0_=w2~jF^c6=+RZ}wdl70Jk7<DUm{QPX6Q|@n&bTot`keDykt
+LcaG4Y=L+1%~vP;Lq?vq`8N?L{AWvPe;k&lNxPQB6NvQ&1r*W#@zqg&L-Pq>nLnswWAPhm?aGZ7ad7G
+<_Mw3gMXxWrYULSEuhdy<fexh!riP3<uT%=m5rQgT^i9wM2sX4d1 at o5z)*WioKN$%OVV^qMS|^mTIO3
+1-20M#keTnd at +)+IIcZr~;z>cm><=LN)V&gqk_<Jk>zGsAMPiyW2?byp@|}0#^FxFB9e}n3*?w$X0gf
+i*@PPQ)rVxIKb*Zf_zgQ`j`q_^EJq)ZNkI$F!{o^9K4f=duz)vZ|#bEEtXU9<2|SA7IV065!WnY9MeO
+-jd4snbwcr~1Nh9&1jGC-O2#dV%UuPZg2Y$;fK2xI$zfmQ6tKxF--jsBm}JnHfYto~Ow!Jnq!-xOzFR
+m0{GrQZkMTc=Y=?wh>?o8roIby^pa1P-6>|o7^R0{lj;7D?So&Z;;PLhW95At^ch{X~-<2iVkxlG$8Y
+d?OuIrYVMNYYj<Yzx>4eC!^N?X}3{!FWf-F0&Th&ryOfJh4MRdtVwYR9Qip<PR1#>6emgob{aq>-aEl
+z#elT)%$=@Xa)S5yBPN-23 at fm>EaefoJw$nMPNwjr1nGC8n7^56l5|!+yt!bM4bI&m9km=62=k;TsHe
+K5p0M?vm84I-VePWlcK)#2QAcfxl!gaI+CW7}u+lI|OC^^<-E_*A%;|+zGX6t!$sy+zkVFJ;~@`XUTF
+U^o$uouR`ZLSCcYcZ-nZd+Gua^P+&NKBq>%pk|)A~uQL}IV*58MW7xM)>@f6NYKSh><0qM#V8pOg(bL
+CiaR$2;3hlr1VooPGTNrROt>1PPn=-vX1v#_$Y*B85_D-XqUZWVM>V`n7yQ&tgjDa*)Zy>A7J<p(wpo
+Uqoop-#O;K!NB5gU~Apd30=;MZfQPsVkMo1Vmbt8lXz(#OoiwSNzq1R}j=GyuTF+QBZS$=HClfGLfhk
+rvPnl?>?VxE*{kO*-vD2W-1NKDT1C9;73fQEgvv5`OcG#Eh!sGwME9)`L(>`CN2`BgbSWcucqxqSWtU
+M(M at CWq*VjmB(h()lm2Ep`|M at w#$<TGb$aTn%MbEZ4kXaQ9jTFBn+Cx4(W}iH^mxoQ38Oj`h0+Khxs1
+j{NXf=1OarcjDr`8GDapoE4}tpU9T*$cb{NB2_O}Q3ax0FjrkRz%s~v5dF=2|wz}AE3QQnwM*+H7Dz<
+|2 at iC}i96nMC1oxi|fn=(|G~U#|{~Pmt`+)5TW>*SAEa_Z6kTUSnUb_4%SY&cr;@i5<oaRWDpRZWu at R
+Q6YtwyZ4HXe+JUCretNH_XO3$x?hjEgvtEJaw17mv=P6r1S}`7Bb{eUfb>`0zX`lQk}2^}NMAlSBW;h
+x(|=A_luqwaa0(tE>@fz11J`C-umc$FbTa-&f{?B3nm3LNBa<*rei96=EBymHDuu)WxHbK%&24(Z9p!
+3?7Z<Z0)hi{67qc!*x?Dt;`P(h{K!jw3{pQe>)%!?Hby(mHEFP5Qpb3w2LeAKTPV6L;Xb?UYY+Nh$Bs
+Fuo0rCKE%?<AMlqQW0dsP5bKGShKM3Q6U4|NhL`B}K1L_!awZ*c$BUj{P!CuOnCau=5N%n{b}{duPo6
+^|X_qW|+ACa+MX41oLCFp3%0(5fae-7=2zBw<I?@A5GJSUzTl-P}hW}dYWB`Yk<;JSIz_BxKI6Swnwp
+vhtBL|J>I-fOS$2K&bp$E-q9Pa->;^YE6OpPr2W^8D9j?uts_&z+%z&vu~l4jau=DXM-^XzS0$O8mqh
+2S0AKLc|Q8;5~{@Ir%fnOyQi{3soLhB>>ZV4iX&Qh$z at nC+j*nALO?=H!w_(DR|7Kn)an#Wv<8Mpu4>
+(#izqHb!n23Qgu)e&Q~1iTeW1 at FqXgaXf7syXGMC)mC5%xAEehL-*9Ez?{hb%Xxl3ls&JA9PyDJNxct
+e(6_)fq$UI3YHm|f{GlY2{&ElDxDAGJJLFz94u%c}h)^wG(!I=2D`mN{Iz`r-#8tVNvW4!vnGNdDGXW
+sgUDc(Gh9&78cSWB=NrvClz$*xo+Bi)YG at yfxxm|!Jv1+e?xOOP!3Rh~tjKpz-#cve&R))nFnvC~;St
+LC<cBhMmV0xs&HAm^fCSO&xA&>>C%pf^jXsE~=7htDG(h+sRE+oOuZBcEo-h%ZfH>S*iCSsFe{nwB at l
+pBLx0n22EGHr6IQV0mST3p*qPu|46(?;WA%H>G7tZ$ex)=e!PeJLRU;}{NLUA>LD&#-!g7<hCT#Iao&
+pXzi1Wb*$y=+D+D?lQwkf66gV`X|m~s>&5#$9-0it?p<vUw~U4x^2M{HZy+0BYL5N=eMxwiI^1vMi2(
+ssa|$d1b6U=UA{;^L1%~(ocXw6kN?KXt|R4h<Ptw_D)#E-H_72)M`YKwGHCDyYEDY{f#mtarq2Fy*#%
+v(Qtv;-uOxIsQ+91eMzk at v&J)Vo2=AJ)f5$@M+st?Um;HLTZhPZ#R3`WFYQ?HIxby(Zo<kWHJ2W*u(3
+N;Qh_|QZ$=U7r%#pX9VCS$s;pv9l77t#mhVh`XUjH~U1qwa62`6|qTQks at tw^i{mL0RPD|B*O23+7LK
+F+3nI^IauRD<qRKg#ItdH69bqftv|p>H0GPx67AGce%u*}X<{xI7YDEzQU9U^=__QU3H7ukN{&d7pxq
+mmzlp&o+Nmizh~7hw*D3i)rb)?e)jlj)*UJmu|BUc&~bl>*jg!hzB0S`9BBxmAgx><zo#o<J;xh+*oy
+f*B(DGbblzT6l(Kze+F;&)(Wx9DL98#C)|bv*YI=W<sb!r+6DbSB$FeOx(P2 at r4wrs&aM+-emL<6#K}
+itsVaB~Kt17?sSzHoJrdC*aoR!2buiF8U`+yy$phC3uD|_U{je_JMG#S}oZX&@2YKi(ze+UW;(T-Wmx
+A!fI2 at zEqu7AI@&;t>!EGdR0vd5ra-9s+{f|ccd>gu$V|0`wU<Wq9aYNkEG%yL71hnGUycJu3ZWd!J{
+t|1&ZLAf?pcOw#t{($y{}(FGI=`ofZ!}PC3+NExyNq1(*!+VaEWJ-Ifd$w6%5EWccn|0 at qmwBYR{GaZ
+_=at=-UOP1Q#~<k$>jj7>}Dc%CqE?j)FOeM6X20Y=!XBWb9FcFM(N9WOaK=CTdrCx*bE|X(^*I2xPFU
+Af%x4WvrpeZt2~IxQLZk1SRs)kGWoK}OYycqPxyXAXlc8<dTFs7TH5KY+N at YYOM9dmtCr#k-Phw;j at S
+IQ)2<u2rT3x~yip#?3U&sp-Hn1f1z2dlw_P!M(@v2s+!qg(lR9a9i-a!~${l)(BEerCUAF<voNBsGU)
+<1dTDxEan%3}62J~)_E7xID2VO4aA)VStcUPlDu|SmqRC!23L#A6ZdPyfKn&$}x>ZDJYeiXGTm*UTO{
+27TqqT1^YRC!&UWQX`{y*5}P+q4Xce6FQ{KCUH^9i(x!fE%i_*Nu-z>`owMs^qFu@(XaEQ at OYR@6%V#
+E5JQY<&pxl=PDBmgk*ROaz&J^s1q$d<U4Js^fB6cwRGuY-2cPYeX|-n6Dryy1v{1D%gyIO7rR==dFQX
+J2uqcsrx}u<XKrP<xF$ME64(4-RX3QRDG-mn64&g{C{LEsV{owS1KemW4c at Iv3cQbj1S(I%>(bC<az3
+5c636jXEvWL~DAR0sB|`KC<__a^dx&?POp0bSF?or2H=(MXgBu(Ea1oWr7aq>ZYXi9Gc{`XhO^~4Y%Z
+8RTj*qw^fkL)Z;;!mc@}Z1)q0ou0vF9uhJEYr61{4~&MlQh%W$)j~990JR_kf<)h_;+Q-S%oZ+fn&vv
+#!&7;D_Wz|7?mWwQH4_oXCoC{I_E6V8wuTd}lMeox4M~EiA`v&%hfry%|x3yD8dBl52e+S*qCT)>6 at g
+W`b9XOlEhGbm}g|l?`iJ)gG at Ywp|4EdDD8ZI;_ at Hy~F}?Yx+4GlUE at vZ*t1j-c~V)Dv-BI7ejvsQj at B
+FQUWC1OV;D|+`kXPKzf at IOC#y>CeT6i5LzjMhHO2o>rr%WBI$B?_IBQe($LcFbae;wSsYQSF5NyVV3k
+W|HzT}{y92C)(osyIw;be5>EApnYr;5a!Wx{>tI<poJQ~O(-uChJ0aN-BEh)Vd2E880y|4hKY~`W?{C
+t8kt^hxtfYZSZkMj%gntrC{nuI`>r`lVrjaZH6>|+#@=Ba+LSTiBJ;WJsRdK)*gx|)C{m)3=rHjBZ(V
+gzYolr}z6fD|THWkO^D<0cDT5i$6<A-2beC#bxx?;f#A>Pgchm%^`E49-Q<<=UcR5BXjP71stqcm}89
+?UCMQy$>Y(LFko%m<C+jZ~<3YHpP)sa6#OE?00b#H}kXZ^!7arZ(<dmX9r4AMk9^fUAeUR at JF8tflN=
+>-G|+d?m^YD#@k%b2f{#L6pX>>AAo*eU7z54<V18k_6pk*7|ZGgu0%gR5Uat~ha0gE7Bf{i-n75)RIL
+DSfm{qd7oQq}mMQ4H_;ep at E$`H$6IiFjs$)Eo<-T`9%mRCD6mORVWMHeMPmHVvU&%ViD~D&9o4wiV=+
+Mhzo+Zzq&}r=Ox(+V;QZwN=#kWY)J<IPaj!lD#eap_GbB_gn<&vQ?saL;^O at lT_&S)e6FgR~ngj(x5Q
+Y at aqdG5TWtpNvP@}tf at ar_pGBgTH3keI~abGS}abwUf7<cc%;FAp<*7Ux9?HUvzmdo1!IJnE0#mB<d=
+*1j-?k1KWC<cArTk=DV&TQb^58ki{z8h|!1Y`~O?d+nA!7{~+H0RffaL38Zc2G+CQc+a-TAyXP at ieB2
+w3^WN>@FgI<|EV4o&bST0&16y(q?X{_eLBBt%1)Ox^e>I+4Y)KiBeW_GxRFZPsV;FY7C=qxjx1xhqan
+FHiz%Ptt$-8ptgpjEHn96PcQEOeeu<Yew?o1ekU0mIGCYJWmxzFChUl=Z<1_AKiT;(uRL>YE5oyHDy+
+g{-GgH)~ztZ)D^~`-2KTnb;kqEmx(MwwWAYK5 at 8I9n{KM#R1Yx9B9uAk}OdJeq=G!h at XUl0XdvW^+1H
+ZZliB`}KKU7y(4`ym1y$DPRNTQRNs8 at 6fYBirZ=U!eR15}G%^WLV%jIlEh|8FOu^dO|8ogWua1nM&0L
+hgg$Rs`jv`9u`&SkkzInS>LR<OF_$XmAcxMM(ql*W)M1!I_TJGIIBe#5Nq10I1LG?F)5xa4Re_>*Cw&
+1S*&Tuj(GAw<-z+GU<lM#P{KL&Uo;nP3(T#<<0)ikzPWEJFo#9B>G)Wz|B?Rw*TwqJZH3r>fA*J!Vok
+=-Qni=$s+aXD;*i9eA*JeZ7I&P*)jND at eUeXa#x}QLn>Q%y#F~1srX{<XL|BnPzjStA%&8y!0qwbU4g
+7*;Wk{(jDUgXbHp{%6z<x*(YtphKaa*bvJpjM-lNOjsJyMro@{?^qvBYgDDw$#GZuc9v$tBJH@!NbQ4
+cC)lR^|mOTV&&OOP6F6l?-u}WK=sk<rn<MW`FJmG+DB(g-2h<c?5VWA`-~&8*sowc$j~{Q2~C&>H7wL
+ at Fs0F!x)8Nm-+Jlz?!8Di(PhLgY`uU%SrS-kkk1|hu)QE-2&e4PYc5$XKxdq{0ldXTFUP3iliu4p<8w
+Oa#I>$q8h#4x*|!6SV|y5rAehB17fNxVp1}Bl!?Wd(7iSiH3x3uFGkS2AzfyP%*D17y>Aiq7T`$CzZU
+9X6(GuwVPq-)7jNGH|67M3luy9|{bW{}1&VaYA*sWUZnwmf)`_t_%nw)U^rH{%cBpJ at 6i-kNEN_Kec^
+p0a%08 at hAeXV5(nPx_%`I0(P_~6;fO-){h*~$pPX at 2gFE*t5(UI3r{ApH<vO~~k#W*|0IWTS_diY{|2
+gXy3=MB at FF}BmsynNsERZ^_MSJ}gy3{`9-_xxSm$C`Ua|KV?i&)9tC0Lgkwe2mxt$!audz#y>!f;dxR
+km3V0qkn+Zs0DG#5NGHgpcFnp!hkCNkK^M>>%ks_CK$y5vis3h8e#!)!+154#UC0R_?!(-xqe1}+4yw
+o`XW9)FcuX9hl!6*WWf0NWA!0^dl0{!7)LP<2f;@%t^?!RF|HNb#YPB+?<On8vzGAz!eJi#-^OPRj8C
+U-kVz$e3<@Wsu~UcDy3%oa(0+O_XJ9Za6-%|r*txK6$@}OvKcf={lUR}I0R-@%#XSNt*%_Aps5%GE5m
+;y{@xtIvy#l{V#m at l$5hVb%Mep<&QU|om1Yyg7rp3edGr~Eig$K57_j|F{WyD&CAZfgLnepbu;&}Tu#
+M|dFRL^6kvPi>OzQvUjS;|hV^iesSIf9)bjwlbxM2$E8ZZ%H`%#jJ<t#46=tND0C!?M at e>0>N`p1^Z-
+gxF7qm^%RCK at Ne1QtyEHeD<!!dp->-1KK5d21asy$Tw{qUWTYokp|`Lt<=EdW*B(z=xZ#9#nAoyy_g*
+?H2>#awmYSaQdc7yuw6&otStyYS0ixv@#3`{(dGbx=TGZYhR8%@H+*7W%=C8%r!E6 at gKT!AWkAXzmeS
+<F`#{z*7lPAV1fsXT#<+gs&NLh;3G+|(lfiyhn=%QHGLQ}QvQub!Zd1nkAn?v9l)kUQ??Hsk at 4t_>zE
+;IduVI>Y!+`q$V&|x5N0_}Ve%j-*8qnzMvRYe*b6FWguVm>jU{K5EC$k^>7&ooM>>R#KY;S#l=e_wcc
+MibzE<lg9gr_^`{8tAYct7{Pk3$aMHby4VwFX928$EbcH2rKdO02u&@KUQ3o}LUMLxU$YH^U#AYbrhV
+mK-ja@&S(FspY1z)qKxsOW>Fs4rduqZG at lYrhK+C$@&J|e>&IxSNu#9m-lAN;gyT|g-sRw!lr3>dnUW
+EX(7|_j}V_J_9>k!?!ymS8MyZfescgX at bfztRvYv>sMOU^_S15Y^Oi=Bb0PF^iSriiB5~EN29LO^&f}
+_IG+fGVl}O$7VZRAKUS#-}gMPb-5k%7Rl&ZSGXJl#yyS at pJATGpPI>}VfbvE)_I)e+7V!o^VdqNIcDY
+N^d+ya1+TQb;9{$cMzyxCvob`N%$ctdUr+6n3HQ_le&#LwTIo<m|cA;vOIn2Mx6d!e60%GqD|!!Kh?<
+nRqy{_IAn%V<ziD^jh?J!yNjK at dz*tQDyaX}QO;x4IIMrKL1h at +&_<Vo)1ENZlA{)~>@dlQ(1m9{wtY
+-43;9<RS|c6Q1JGG9(NQf>Od$I?gCVuSZ0GR at Nkw@WR-gQiopTM at lRBol<rmDF*@k at rgdNcWy)fH4Aj
+^T6VE_obImz84PbZiP1eU;TKSc(H8LQDV|=<{51Z`4^ttATv^Bd1%Oj<^JR3Wo*o#E^9`9m{8|JveeS
+PVhk3)lFw at g4FEM}2LNK0eU4f!_4HIey%$Y0xnm96_ at E2n9)s1&>;9Xs9^dx$GPRLq^s at RFXz=S6Apm
+lt|QMawUM-VEO0P!d at 2g>=HS3PkmFr>-6uOSZk2taDv)e|QJ!_bk=(PVCpr4hGD`-m5kfk`>)-&i4RD
+!aK~j6G)6<sU3FkNjI~wy at 7g9Hl;;U60X&=eTiu0M8LchbOTk+3P>RFEq$R^O5z^$5>&09(UoBjGKJM
+gLt}6?KPK0D|LDb&+Zx7`R^!u?`Fn~t-7u0Za)9^GbW7pwLs*HvB>o-@`f>ZnHq8yT8XB}CrqI`Gd%h
+Cg2MC^)6-#oU641&d4Y0iUa>)$D6YyASIGuf?;>0FRw(o8END<gn#pI}?#td3_z4=8lxGioCWoh<w;G
+q33X8>OT*uPL4W`QI>u8<55QH{mv>MG+M7>2Zq5o*D2}o2MS~~<E8MP)0UQJUw7($_`8J<w7MKgx(gw
+^{AD{#8ixU2x1V|JVTtgGvx!@=4<egf?CGds4j8Hs+ at gMiqqdx7WsBHx-mL6h%|Vb8@@A8D5I?8 at bNw
+;7a6#8rbqjWM`d7mb7o{);SWxluB1mn;U1Ei!I$wLWqXb%VT-fvrBZ&QfIj%9njG at Dbpx@-TJ{TdIs#
+51W(`>fuZ!UEdlQ^%3vdN4#qv at veP@UGryu0qBOtTBnDXT>RsjWHxdpF{Xj|vbP61ku=JVb0-BqP!7!
+E3;&1{0A?{)pxklG`@nCMo%tOA(krQ(by~FsvvyMJNqqhVXC2u}*Pg_U$_`hdiC;0W+JQ&a9qfXrcJw
+d+dbx+KKF{-c+AP&Fke81F&A9Nhf at Bl5u<cIDu5 at I;zd>MsctXvaDA1+CqRXRvu1z at q|BUA`|H3c2F?
+K!04oix`<M8M*H at t_}8nBCm*RnfTw$SrG#A{RvO(F9gb$Dm6C1k#Zy<~*UH{r_;f7tx?5 at --mx_aEa)
+Fzi~5NkZst))_^O0F(6087-qB|9*^@;H*l(xCvd+%s~_l<F!&-6RI^4H|zcb)4l(hsz~fmsgF%H4`CP
+ at pE!b+HRQ4!`{VKTd+%+mUrV_s(%r?l-2zX>k_p2!GG(zmW?*63jh!Ay at 7yVDeUO&^8ibw4-#(J=3GG
+DVf>ENfBAd@)05SLEAb0DfnlrBE0m at J-8Y%XZcn&V#P7Ug#{uc?_Y)?F2j0gew3%B7__tlQ<7X1uV)q
+38buRzb5^l{zxBRJJtv>C1s@%O(egp6D1dVyca;vP at RkbO1txN&^saEe}|DN!{+Ry$~f?!>Q7ZKK3{K
+gG(cbhMFn{WJQ3h1;mdLZ9TRb9$7IdZ at X@A>dPDfWIoypQ0oX;oc;)xd`gAjH6LANxJUeowOB6YTdm`
+|V}FJq_-evj=#N&VUhn at x=uDl_diD(@{T(QqwAA!g7Ar(6wwwUkq~gk(vGoE&zYOBfc9hR{eoVzP4`z
+vCWLg?J=9}V}@AF{dX{k_Zh?%Ib>e at 2^R9g?XmP}JbiH@{U0oSaXkG(o}QOT{|!qoj;E*GfeK+eey{Z
+tF4&I)@FNNX*KIj*xIOq1G8Y4oh9Aqg at e_Wzi+SoN>~ha(pYT2Pd;G3F%3PMk$?|4i`U&f=ZX0%c?CW
+-2%4Bw1rv3#!E at rk#i3zeOdgU>Tp%lL9C*%qGc60~n@;KdwK(e^zkWB+R&WwDFwQW_d&~0mP6Jl3Mv?
+e}^N-|f*0EX(emtz1Hc2O7qJkz5eBNEhDiq%6l7qP<$41~KjqLT*jMe+B{`ZXi57kNkQo+)o`o1b~mD
+T7c?NJR at kR;ed6nAW}1Z@%@v!*({AC|>Hx9}IF18q7dGK7uF6lS{p!!P;hDb~6auLg|!{$pA}05}Mb{
+2oyyiD+1A9y%Rr5urjw!dnci%;IZabJhm`M=09x#2LMdMmW{xc4Z%cnX=tQIv5jNkjb;sK;u~-GH_=a
+a`boV{?bQQgin70iMkSRNhD<}zQizS3g!*b!o9NHpRtSsADByxd6e=+dEgp&)O;-EZDGEp%ji%e+LwH
+X%7MWfensZYh$eS~?71)YDz8&jQG at vs_tcX}+m0ADW0zb;x5xmDmZ|?Um{&}4H-|p{F`&<1T`oCb-8g
+GVH4~T1ueXDh`L+wp^B2(=(28I)JD=atK`NZ4|&roJPhKAA|Zzb5^y>G=2>%{N=?3!YC`$#*8a_VDN&
+^{$y&?e~DTNZ<0mQ-z#^(1jsM6-x%Tj<cWY)dC#N;PUpdg7y3!L}#-=hEGLq}N9}$(QcsQGT7Od--O4
+BMqW${yJST1$Qm`{%1b#@pEUu9a5Lu?q-)6L+Kte-bW~7W=e)nUCf$q7_42Zju)U&S4hi?1XlCs`W8B
+f-GaUzY7PuhT^9!i^OO&+qd(%skX_5R;Vtq;Jb87NPoCqnv()y19t+{OojH9>F>K}c8eR5WTrq6ssvi
+jE?3+ih^v;*VMHN1n2Ba5Q at x350;Aa`wcOh^a1brgrz~3yI516KoH&M-PlSAIWq5OXd72iyZ<4bQa71
+)zE_XRXBc~`__a1;V}rJ%`Zi{4decl*Pc&ndbt2LH|$u#HsR$iCH9fj1nv8kLE7+Iqadqz(WVDCox2E
+U6uAo2cl4y5b^ZRSO<E)9@=v0OA7>7=pZIfr~Krd6;{oT+({RwwdwS2s^4aC9gucgciS%X!dt2&)sZ^
+G)A2%=;PIfmlDs%S<~cMK29P>J%Bei{>WZvLTL8;-l~0K)joDcdTy=s5&MJ;=zECXV3%0^Q8GWE(lNP
+s(GZ`wcHI<l)iV~yN!%|IHKRl}$R!auoKfd1sgsS(Q^i$PscuM>BGiO~Fb~v9i&!-k_bN%V7Z<sb6t*
+o}^^Ao-uZTU5#o~9zo-f6oRmprC*NIJm7N|Y<ioY#q_l!K0gj<!8Se3`_v?&y;aLrYFyj;Ukd!~t1S?
+pz|qNqK^V$~NcbUVn at J$LinWwob7ta=;SQ8s=Houv5C^%S|DOhEhvwete;Q>b{&cj at Ir{?r8Ygu+pF{
+kEQH7ZcNGIcG%=vXAy=$$#f$;pheh>~n~dy4UAe(AyC5A4>O;v68EgG_k9EL{9{30tl-G`;y8mY`fwW
+$f769z>AB1E1XqQe@^8>uUK<q5BvBs-UwYp8mQwMHu(6VOek*-KYJ at JpVk8*w9*OHUI3n37tMn<Lfm4
+ElPX|ls+--IAdzE1T at 0O<#F9OzO+ at D~WZx$~V>IH+{ZF*1J-_7Vq1B#;_=V(Z&%@lvs`e~YO4Ocmu_^
+ at _R8Jsw;cCxfG1veF)n15gnxQwd<q`KNl7Ops%Gn#`ZM~X<dqQXRyv7iqrRmL{yus)n8Ud)I*&Bfc$k
+E5~GJpJ74WdM3m%$?+kk|)oyj6!DonyMG(c_$v15(A&YLD|K?M8{Yabud>o33dtAGr=uN&h`0hA^?}&
+-m%YuJsND7SF4-q|nuI3`X(G%!nZVK^mA?e&!M73DQ6c(nm&lY7r+N?J_n%SjsT?bt@@F;-}Mkv=J~=
+ at UXJD<f0OIH+jjl9v04ob?s4$ue%+)W5H6>SgB=3FR2UakEXDzUA1&c{jOVbosh&EPXI%`7q5p6zl>>
+ksb9<Z4S*XzsOMXQEz8WffjAcLJAwJxB6lD0le+Mf9JMF^i6mnqTJtt)+u2GH4q^$Quz0f3sT at UHZ%`
+AfMli#hl3L-)5v!Okrf<|CvC)_lJ%Or&RjN37f1nVlgf%Ze)-)`tQpa=ePh3#hgq|6o0nrgVP_6O4FE
+ejn(oVWH3uZ+)AAYDW)BH!=UIXNbYfs80T>xCG+gfi#aki+!L$<OzGC at pR>?e)5;SH}I&>B&A1c+L_R
+U)S<zejymIWM;^AIc64hhiI_N71jEl{34734E;Kqk=k1{|if>KQO(*b!ouD#sZC=FsrXW1`>vX4!>>e
+lPLMKoO8tB?aYtm|6%V-;G(S7|Ie_<$l`!X;y&&usVHbDE{x3BK#;hll?KQn6avAFV!5C|i6f?EWxJJ
+?-MU>XbE~VkYnfY{x0On3h!)xqmpuRHd(L@>0l}<a_qTlh_Z?oIv!CaA&U5zjK8MP02ue#|=mU`(NX1
+mQPiG5+B}~)Fn@|%(t{yfK#8~5`Nm+tfOv<2?)*O~jiH3bmLHzA)#S!2H@$J~lM(5XO!~w2#>S{W1Vb
+Fd}2THekA+dT}2>thJ95vkeB6j~5^tK9SOtH-_<BQU)j-Sn9Z~OjAF%?PNAU87jQEX~EKOd%QgMF}L>
+IUjOLPg$CyrK}O5b;Fr>&}RNmH7B#O{mFHXQmNG3~nz{*h)mTgUkgoG}u^HSJVRt+d4O-EU7(P=VCM^
+BZS3(j|2Yh5RuVs5k+Rvx0#_zOZHpTqn^p(oH{ymYGuQ45(6Vt>VkZz)gdmKqo#_UGI5n!sl$hD6&P7
+y(BJ7Uxfp_TBGx5)F#>TvjY#qmXB$obvuuOte-3m=T$pEHB^u<K^5T&>_5kWSVfC+`Cl2Sl9ax<!4aV
+vWGA#EHP1UI3_V&eh=pt#{P9tpLRE-{TRD^IJ>T>_pP(29l>C~SAQgho4kQ&*m0I5~QKx|Zzp|lksb#
+OQfggz++a%?heJ}f#Y=dA{40w->Sfou6f)1YbjVR2`c<m2+5TE8!b1Rcaw)IDhDUtOhAy#%MAiZ2YX8
+%?qWMRiAyfkP=K$3+N%xw?QX75+QXX;&<;9z&SwTSS0!z{*@bQA?(?Nj97qz)>Sy9(7T0&Fjp`8Ut>|
+s_-usshBAhvQ~%4h(?=<{`aD)S9~GN)|37Zw6&xE;fAt0u|M;+zWO_9 at Txu~4Z7-&U?8UZR3Dd49 at Ph
+blUyspzZv*99sd$6j&C$-WJmu51$4gmglh;ki;OW*_O;b_*14bYQJ=qpol(?s%;=)d8wEKZdP4gi4eK
+X0(}=}UVDTulZJ0lQd!6XUq7WSO*m&6hllVVQQELvlK7tL~$eR5K7K_MHmwp4(+&8cZZr{KfpO7ES)j
+#g~Vh?v`(UfRz^yt_B!B}B#qi<ke{73WOz(UthRp&<Ez_t}S0JLvl at jXcg=W16r&SxJNIa}pdunFLmV
+^2*N=Su1B%xnny^J8k=srm0<jZNkf$4+y;H5_;CUXQD<!>VXT@$oWkMq%uPlhGETJfR2LleB+Xu%Qn{
+g;K4Ly}PqDW!@vo`Nd<dBF}qFt`6_QRSu5x363wV72c0y<!;vnZ&S(F-SL4bzI8}Syp2ycEw>q>pglb
+$#-lFg*u|LQiyq<|9-X~4jnjn=podL$W`o{n3!sMaEuqQoRa^o2mh%lCxx)UY*!%Gw at e;l~^{S%aKG1
+6ODi%&JtQYG}6(qM-$FfSfOKNxt`sCXKlQ at UJ!LViz5AGZ<6I%!kI3L+s$CTC?O0lcNgX`lMBMwZDb9
+{nHlZ8h9rHLLm;#+4ZE5#O{Uqof`Szp7NN=&RMgO~m;K7y?>l`QCx#BA7l>X5K3p?9j(8nR4`{L{%xT
+#;83hY9Z>KOxGIan$OD?TPc;XN4x(m46pq5E_3G71s)F@>NF=UlAh?5(ahh(D9B4Deh2{2Q?8uUcVxa
+)zNTZ26h@!WV0oX&PSZUsWfrp5Z|LdIC<QvRJRyPuh+ at Vq$K&F7!h|Ix2rh(528z&E(ib<EsniB_$sS
+pVo#hSJ#Py8&65NNyByOEE4(qApe~(Zp*2bEi)d*sq%^79PYDpx(I{a_8xP)otxS7A6X{IX8CJXk4;s
+Vp12uO*W`yK;*t;3Fcv>P(WtP<YW|o6a!<xN9X9-DN0`%|`a0@<CTwLqyHVC)gQgHk1k^>$%NZLbbl5
+rf)MAR7P`GHyx$`Tn1QXG3sVf$!?TG+Sx8xqXrp49sM{RP7801 at +rX_?uOKw|lY>44cMNo;A&=$%k~R
+!G*T7JPDC{jG;`t&x(P_k#QmTL?Z$@<nWZew64qEhG+~s|gwGN<DGK<N&ki?JHh0Lc!M|lVh(!r=MxL
+SMNB!ca*Q)Z`oBQd at Q$L>_hKb)(XZYXL&ou3XWKN%)scd%qaAC?Kg*2qK!<lRs?)4?hWzZWk%nG8xKT
+*pm?k_I6`<H+-tlnmci7+dg5~tnUFQC)|!T!9i#UfR`_GA;Mluea8n>>Sc)FK`e)(?%D_-|QX|TWEoB
+63iL9X}!xk at mrsshIwi`0buQK7Bp*U~2OT3xot%P;S*^8iXPs<c~Ujc<Ci=;5|V#^c`&|OL)Zmp>f(k
+Z&IRc#V??1=q&Tmh_6G`KNE{v>TW?Fb=WwM%7Pa&80VTd?1~Mx!?8haD8#^QgyDaSiJ(p@!+9u-y?Sj
+ at O$V2Q`dk<=$lm7wW}q4)woIGDB9yv?JDvH30~1aU389o!TH7By_S$zBv5#=CJ)dxW7~*?dNHufqC at B
+#anCiJlG$~X-~o$Y;s(X1XDXe6MMr_Ph3C&9 at 9{$3|Uh<JEP>hxBWWjlMgn0hyI|@b-4Ac&;vbAe3O3
+&rDCNv*eFo2h;?Zm{G7aBt at PCkY7qZX&3ft=)=&!7MM81EEamQk2(MkDXNa-+nTi*(PKMH<6h!Rt9bn
+ at A*HI6O9<_QjxrdQFV9l-q-5`d)o$r*x-({V}@E6@?qnqBZU<~o`1G2~7^guIuH0C{bi5`ut=UUdI at o
+2kC^k~R2M7w&WN8@@|F3z+E-1KPpwpV&I5*0dq8Uns at e@l8a<oYf5o`T&S$G?P9L+9*+O4BQeK|slMA
+$r`h9EfFLvUpi5VvXb=dM%+2HdbiM5bEn)Is!`0UbF`|pSoW|p=KPhV^DNJ*0aQpzT%dl;FM=slkZnB
+qBHC;>-8m7F*R+SX|Cwb+BNEmgizPFtvS7oN&y2-2b^E*+MWu>a<tWP&amZ2Ls^;V=iYQ4-HbKMfrpo
+g9o5s%$S*{OVcfQ9v(V0o`QB0IbDPD5^qQu~wVSag>(UgN=-K7t8qWmBC#L1GQN0(B@{p@(h?u)seq$
+n%Om$CkO5-Fgmrqh>DBaFvlATqOLtts6lI#tOu5pq-y+*>}gx;RpzMCHBdG*J27W6OW>fAzaajJvnzD
+ML0gwDFYLN6B062&d?)d)C(+R{a1tQ9%Ed-DnUqN}V91N7bLtPUT;X1!3_>QmFkup^N{*L=dWP-uetU
+H*x)QTw7P_JRY3E&FR?tZ5UlvURb1f}YB}FQt=NKBOktns%)oI at yFK&mx-H`ec^VSl!11k^G?Cd&?2$
++kLeoE>ty(=gEWj`B+CUl1IkHnAZ^yut at II9@1Gy1XMmLz6RLS%-+4G4_BPBuT|H~(A2&imWbMzqk7u
+=h})T{Y3?Dvu}#6MM3(qU0iyt9n?%h(MPe1sU7vmyP2J2Yan8P%P>yccOoVuvqcZBnYILnyjh1(N{N1
+qGKvU8xXBCr8+JmBK6RXUQaww`Zm7LWr3O7anxF8H_6^MYcj|}%$CO8gkZ!H)0Ld6K52N#Z(5oxI2)|
+$3NXt|57E$C~Gnys at L9l`-f7)pnW!*YqWYO-IAIkYq6UQMguC75DV?;%#I_sWr@#KBa7v&;vi@>xrjK
+*M46;=$FU<j0Y?XsG5{nrB%e4pkRZC)(%?k#qYqvY{rq+x!uY(PMB3fI7q*`(XLdb at a#WI{|U<=kTRx
+k at Ej!N-ghAUFF=08-XDEnbEuK-X(tAZ8Pfk_M!}1)LxWf3-+S!|F`c&#mc>?5j37~+l=Zewi@?&U^gl
+lyHV}8jm5UI at E6~nl+`Uhd<7d)&Fx1SFNpmpahIaQ`|&%p+2b)!xBaLhYx&e-sv4`rcGQmv<dlSqwP}
+js+LN-XJ*gb*PdT4?nq+asJ=&hsR=Fp2=RK}zrv4snb7zAP(sgb^I>Q&#S&C72-?A9Cgqj>DERJ&)$D
+3Fi!xm4brR+OHX%AnquTxoagjZaDqq*Xi9 at q^{D7O?td1`%Yp+s_DrYUR>75=<n8c5Vlm2QU33Hqu_w
+s>|~Jr81jG!^%;Z}!)jc2#@fv!g7ky?R6G4 at l5)$bysB at oHBmv9*Nt%KnUks}!^-*iY{ElqD&owxtuX
+(Yp-ywDrL5$S_Z}({otc>6xfgJ3ZUAot~HFPLH8<m)L2TZYaIeL+<uW5W78(YP&s{yqQS=%sU6785l9
+8caEWKCbpOA_Quda-&<@coYEUg>b&rI<$~TbTuZps!Q#MUtGJT=`h;@G50$|PZL26;q=?9Vg;yDNGIK
+ at VyAPR3*v;55qA_XBYO`Tyl*RFlSOCNAdtKW(<fc*0$8vSkQD2>mM(E65vEk!s@%wTF^>uNMZd>KPQN
+1f~OX-(}(#dk;h{_*ZCi|8nHSFH3gz74D)K!MkKn at -EZK(NO<xD*<murRonEi6jWRB(w-mm`VV&hDy6
+a<wfp*$b+%oIV1ma{FAX8GyZb~G=W(mNv|tr#tD0#yR^wCPZQ?kqg3a+~jmxH&amndO#a){2?OERNr*
+7vj8;Wtm9c;#sq8Hp4gMm`ar##x~S3M=jPAvGHWuiS=nrVyxAVX&X^kB@~gOcP%=wEn5nV*rgB~QaG}
+?El;^Vr8cEf#irB?h-p_|P=LCvNLtE%rNk>t|ERGNOC{yt>b!Dfo`W^#JvILPXr_5YAa<=PJ<2$Ct at c
+<&=~ll$(_?K*>RY)bCAXu{80-LPmWphnrS#PN1(_w46QQ}h_Y7=LfxWlX+@|eMoti&Ugf{zqRg)0s7~
+?8&XX|>!QA24lu>{x7TPkicqCC7aX<Xt_?nASr9I;`w%2TpZZdi!~P5%sUymwV)Yn>>ixn>09*1w<@7
+Nplv<cK;U_OHg**L0z_hCr}zYn7NbUhH3uuWtzGzKQj%o{|@vSf`q9VzoAvoH|1 at rU@5uXJEeE!#djX
+9+t7$JuFX?wu$vlf at sPs%8triEUVbXq7pHeeMRzrL1?3EZH@{vlzO5)=WmhZo0o-E|4P-t9+YX0uC|X
+g3EZk5q%w at IH|@lplwm?WQZq&KMg1Cfu_nIZ+Ql-IX8k4)_MgFY-df{nc5rGQXk-?>06ST#+)RcYzsc
+>aN*=5mCN^DG$-S(^WoE}wbxAOdclKKy at 0f+c-D5PrR9jh{Eoz_Y;+>eVS4N6`s#Rj2O4I;Bfwq}-Tm
+*W=J&<UZVxpqOj at Gx@j#kl0AxvnOyk%R6R<Rlv{ZVP^Y=*62s_M_EJ|`VLZ0*G7M#8b8=yS2H)fzil!
+r3g<-Pw8<S;Eek!_H6)Z8OVpQ0z&)?|fEnW^HwCX3cQh%=+Yv$VPALO#i*?!6MMMaM7KM*jd;?D*Mh(
+Jse+ at YIU49;YL`?D%tQP&>UViL^O`3p}|kT$VL at vX%_XthDH$<!{qXy^Hd!T96WzReX3i$U7%evP=Jy
+*ariT)rk4v*k$uBP)-bh^MS;pr6eR;$+l>-gV*|3U*I|^5_A=sx>2;&5dNFEKi<)k6$mO8(-F!K{SDR
+bZT_c!`P(2J=TS!CNYjAnlzLNSlTT)4VmMwN$j%c}TA>u~wlKOduvLFxH0Qpt>;0iR;2)*#Lw?Xd at 5C
+7`##gO}OVD)J%-}rr5eNv|ytxQu%)NuP%1d2Q&MHDaLUcFg|v`V5Pl;=>F=P!ophsbj)x@^jgy6fezX
+1lETY=3K>%Zk<sDkfNk^-JlJtV647l$J?4iL{{<XBEuiqz?*CF6q)xQ`>BI_Wo5ALiG`R3ur3&ZGfFd
+LZY!01dE!7`iou!msUA0l8aSbydd_aw(L{;Qr7B|VjWcMOIfSm5~w1*t4*?TbW2ZdQQ^o4anS3`NwFg
+ZwaTuYDoR(|sVZi2JY$O9V;fUa-^(_1TbL}cUfTvrLwh0K(Ys_JO`}BhH4~9^&3O8+tBC>seW-aZIqX
+prVJ at G#3|Qv4?^1msDU*YWK!_5_5I)P!!Z1-JjA5b}6_(Y5Yc$tuMWZ$!`)G62R58L#T&Hb{?zTEAFu
+cXo(>q(P3Wa-%RUvVoy4$Ld^H8a4#Ck(%^CMQr{+gFs_#VmeAx(^DM+e+|KVyZ-*0i(Mih+}H<jZje+
+8}pb^oB-An)3V#1v at _69$hlJZ60nR>x0kO_#vAgKV<JH?o_Ms-}Wnj_qIBrPcZ@)?ueM>U3?-cX{yt;
+)U}E-v{Wt_xo)Gl%sfS)N_gHL9q{TJ!ZTZ3h&=FxHAw%w&=$bGv4%yt{l?^Sm4(m^;Z)+I({h1sKR0w
+cH-j#2JzE+s5dMuw_4nig<J(GH7#Ei`gR!RLR;@DyJ8zPqoI_m^YZ3|dA<+T#_Yvy-t!c+;lwW%va&k
+XphQ-4=b0A?(U6)s2O&4dNO3As at g@S#l+o|v7z7M!TZG9#<zQkr&LdCGV?sHq=i~LITuq6v3{FyznVn
+S=@gJrmQSlByJ;~k-CD^4CH)We?Wb&i`O{N>fxw^5Omahu^fhyPa;wqqa<4jlw-pG|JC#$tt4uI-6(6
+ck^)w>gR_nZQ6R at 8cZEF1goRTjPw8Rp~2B#CH|9Ko#ow5}|3u$FW~DiR5y;6l!TX&5RzrR}4RTm+%-v
+g#*Lkv@`LJF11)l5Vz}ykDB5gUbUL~>XU{NT!vN`tJfLIpwFP>PGZI=NpcYq77jhE71wFZ88=WWOEXt
+w=`er{t?}fsib>;3Wbc at c@I2UOpiG+P{KC$!CV{YmA_N+{pS-N)5eXIEpRQ)?x-dd?>(h=w+nrB223g
+P4BsjjHV)TlmlHTPUo8VdHIIyeA+w55-wEEOQSKM@@h5b*8U)^1(mj2362EFq9Ks9a}l{(Dh4>})x6@
+w;Rv;~ci)--%$k+oV}_I#|w`$jSu;~f6S at X4}Z%&x*t`(v<}8oocKwQos^KUIs$=^}-i_ji5mjUf^Z#
+*`8ZrM)7~;Z?cctk>%tN1ZqShH^5PX^8nX0&nvJgZeBL>pM*rxWtm0R2bNdPFu0M9q9aYv1?WPF|n#`
+SOz_$(W4(*MOAAdlmgOFMC!9$xymK?N}sJ<*@lYz-MD#K>a#^t5k^kY;v<@aJov7wHD$f)2WZNAX<ix
+ZT(Vdw#lOjggIw$G_M1>o-_B`rc{q<OYEI8><8O;&aOu-=v94rtoHaRWo$c?FYfGV6TQZd{@a$^uURD
+RC%{1I`Uu){MUn%DH7At$rtvb0YBZQ(5$8mYLBebF%sxA<EkJb0K)Gh{K9a1k&shgMSobwhn9P0L5<b
+F#1P-56Y({dKO%u5%?D@)ax?(eWs-)32mbIc;`ME5>wJl|~YuBH#wbxpol2>)U>HNUqawvTfX%rmSd=
+c?w#(g at nep<O^JRk8|=g$Xo}4*qU{_8o^kZ-n>PG~1SHPLGRL!4_sMIbSvRpK#epF3!I#Y`B%Oscv#-
+#X>Q4;K5r%g$|lwWH0xudCzInJf4sqU4#b|A->+c{uHGvn<)Gyf<rgswK~U-&N-i8^eJ`6Cy|>6Zpw2
+``vk2xIgPeDKCy<KMBB6yOC~(nH~=$kY;aUe(~~?}a7SiZC at 6M<;vvot7q~7ZI=TS5#adLqDK%Yh$1I
+aF{Zz~is?3f(anV#w-m at 4I50LY<pUQQ8f9qO_$)e6RA35(|fa|-w?S9VN7HImptR+V|^r#<k-X~DC_s
+6JsA0dgZb4x!e^{Mk`3jKud;XAjFC6R_w+z<!-s`aXdMfOM6V(rYWXFjvyz#B~f`#3#Z896&FP|WYy5
+8BlbKpwNQ;GSM29_&i|jL`X84IpGK0V`!)SFd0!Q6Bw{Q%Aq!9sX~PTW;1xjW=wbq0 at U*nwETtp`qEZ
+<Cy9Axh3a>hV<zK$<+qU4p6og3h2RXMnErSw~i}L(CLe*|9ER$aXO1yLUtCVs|j!7zErq-)P#^tr(aw
+XsQLTDUl&zuDf`IoBUS)v45l+5cCPHhDjD+z5-3o;8dIREbZ~xkhiiyeNJep`MUAh+`;KzrkIsEBDlk
+*1AXHloTji?qK||@^n3(WZIsdT|yq#H9a%X#H?`PODHLzmb&P;rHEL77JFRW)`D5@>l8 at BAO$v13C3=
+|)lXGXtS*hhSg?d+B%I^kA^EtbHV(FkF6lwi7G*zBdRx!Q4EduxToC|B`?Vx)u$OQ4*&c^bs3Jw>#6(
+f>;`1qZU^ZpY!KkK6ZaCEo at nl(+AlfO1ca_$Z-bO7D<_uw#jaaqna#IJ)$~vQJ|4JB2h`TJi;}O{{nX
++B!`8J>hDvO>j_L at S1W81i!IrdWuHfE}i<0IK6ZGEP0Wo^JQrWac+<Xqw@)A2z5Rn4dKoTVeoU7NrxE
+c0%@>13#B2+d8;%`ccw~1igUU&WH~2DLzHv8G~_!+OGA+}a+d36duOOLFN3*@G~-$bXP`8%h1qMC>*9
+N7eX1}+MYi)>X~s!$XO%SLqfO_#(p(AiL1{)wINy+F=w^0qlxED+oa?2z3g)%a?1XuRG}nspvNYGjY?
+EflkTXk~aV>&#hBOPM7fI3#6&X&mG((|=Gb*(~8OGJA4O%RW(u^+;ob9C<U8GZ=>QaW`ypZBjg5j){W
+}K36o|0x9yLX<H=3<x+OEXqPot4tO3g%7HyjFaJEX`RkKPt@|U|uE78(}V$X7pgrB5B5fU1yFo<G`yk
+MVgPnJVlz<!EBXgtOqzpNpls<;nM7cxwkae!W<&a^)UNOGZq at 1Oq%sD|B@{E46{?3Lty?`n#Bje$D}z
+F=DpI4+oPRZr8x at b7o{23T07TCGfvYu*GMz2w{|X*=IJmmkmeMa^QAcp=5%Ss;Wy`WX)b~}L7IzUj*;
+eNFh@%BDwsp1c`eLcq<J08fzrGIW-n>p2y^`{vMgZ!_7?G3q4>@VBcIHMy58Cv9WbJh+J0~6eh~vV$p
+#FTE}NuFAi4CBE>B69>Ev>=bXg@`QpjbZbXnxeO|&hLez&$IgaTF-h=5aNR3o{(FI{4#ODMS<mM%l2O
+E|ggmM-0;OBA_ml`a9&C5BvHk}l_G$_9vB)=QUa>5 at e*uSk~<q)R at zY>+Pdq)QRGJT6^co#|?T$Z at rF
+e0-*>B_hXC=~zC~)g+PQJn3kg*}(Uhscu(iC1IC8##%m;Uc1#=z7XH{ZodUfAN#E37QJI;N(4`I{Ah9
+1mrrFhJQ-kiyc6fxW#VtfL_xb7ue8wku@)C5;*{KOelU7Z#dO^Q564NfBcsT1#!`05?qhZ6%#IYVGmn
+WbU)(0w`Gm=F7&nTPe4&^3tL^5&YrA2_=v0SL>!`ruw$@6`(uT6iMYqT+&*RSgN}~^tf(h4EBn%9+E;
+$PYwetp8D at +EOHqG<IYI;dkt at 9=v5DKe;Qj{2INPh8v&*8)36GrC at Fi9vK_dUQq`2 at Y$fk1>=Cb1KpE
+Fox?I=aR6Z|A$pjr#<#duC at nY~)4%XaaG>;&_{e$U?W`sqR=LuhkAonzjNvOIf|`8b at M2<PeLq(LWmQ
+ at e+%)mMrwnuJ|T=tt<|4J=z_&U1FY9xoEa_*L$5Hd^*irh6lz)ADlN#Bih&MVw9l$mU=}yMyHs3<Epv
+?o*Ml(iy<E9Z==z_ClGTjY~tm*V^eN(9X#;uj&phxXOzQ|k6l}#4E%_=n3g6#n39WSe0+;i6QGU at WC?
+PJl{|O=l`hR3Dz2+tG6H$py`3N3M2J*OXmEIw9IyqDsJBME?OZlh43}tpO~UCQ;jG9A)K=fz?)Fvln|
+!G07IV6!I0ufOJ7dZywbI^Oh15OTyOPPXc}Zr97lT9Q<cZE$Ov}l<L9ASh74A^7t`qSNINlfIrad%Ar
+O95Fn(U>h(Gu<+&X05492n;)42g4mncTFF#h{LbH>qPc+^p3x=CEhs6n1qY?qoVwR%dTT)y0wTb!KKh
+v7c&4=MzE#siL5c*gB(*RH- at w1(Azpy9$4CLUh%<=~ORzyXwV|mP91F&Ltw at DE60K;&JFkmv|W5#6zh
+4r+~{69eahw|3uG9=lxjp6d#g{I^#GZG~z3XIoL at YAPi1`u4<~4&~9;*2Y2j at o30uO!inipyLTc(xv!
+f1N6J0LRqin++-O(t#GC~Mj`E~(T&v1G2IU?u1+!FK=0&wV0R=2a#+Hksgr}<#PI4O$=ZjqtYC}`Ba}
+xSYjH_|tUJmzDC}W{09><F8@>mi2IFBAdR8GsqT>6mBv!peTllKVD4R)@`ZJ6qZ<cgJybgN@(jF>BwE
+R`pWOqeVf%5W5#hU-z=I1^`8=Eg&%KwC6g0b+U%^(H=;a}UqePWU*($cXX1qv;6WrSc?2oNc6(!f_FJ
+f9KgboL40GB!upsgHJma)*DJQnw%q|TFIBS5@((cc#1U;%EC|@EP}aC6IFZTI7~(;wWHU0(QG7C>gy4
+QT4^>Cr5#Qe*Gl1j3LdPN^3twkVJJ}?A+Epp$o6EpXU$_g_`VQq at 7!T1>nz+aq1})8<s3Ojt$`2$`*S
+4mhSK#H8)LRcDEIs}N*;-I4%D=>is_s1a0JY_4g5KK(eCejNSu8Mh?g#$W{#NI)%20k)mdU}SgC{T)g
+1*H|1xYbiv{(lM(gPz+QORI at wwIUrq%JGa}-Sr9g{<-+o;>U)ZWo)%W<u8T^C}MC-X4SuG<}B3vk|$<
+GQ at NDuUPT*4a9i->I+L9cU;OVuoXwUtF}7dzMcQam0p at UrE&uB?mpqW7S35gPpU}Kyf9FW=`7LIB%3T
+8akb{`w=HC?~BQ$P_A<NJ<iX>id)pAzF|igZchulEs%O756Z+5+q=X`Y3s|rTh!6)*hle?zbkI1npX0
+rkx-}}1v$9LZM{k^UbJ<CJ`QT(D}rxZAeHWFCq6y>ch~q>D*_^tiBOZ?XzPIG8u2;EsKeTV!?&U&V*@
+jBsd*Qn`W~#OL at 8@=h~Mg*B(jhG%}}-jM>-5!_PQ2nT3indk4xJX=Q!y&M`N9`LyP=y(IoWt;tT?|k+
+1=mLOq>X_HfVu^?})O5XwS+?!efk*AiShUk*E-;CK@%IXf at cja%Nn^~l}!8?1a+X{BwN^~^3Dm9T%cs
+zKdLd`0`#nM=OlhRh}B>J9VWqD~>+(Vm9MyX`yUwrlEP5<E{>OKQ1Ln;Nk at u56F(K#jrLnFc^7`JRYM
+DB)aHdcxMPw9eK`DTL_^g)qu&AhVw|dX?7M9TY>0+zkFgt7uP<&^~k3a@|NTU;EWkBP+StzgMb4?cLG
+#8Kl3z(%AZ=m6GmUiG){CAP?I$M2|I^LfmY1m}sbP_SM at H#Le$y4786XV+f2P_CZkK3I!W)Ll3B?kMt
+2OerHW(?Dx<}T2lh6>vi}CSq%rRhC|c=%G_IA&j8YPSx60q09w1t;vzz*#HK;r$MsZZ at miUE-lU+8yA
+{+vfm?}F-%wz4gHT>nY^u0+)%aW8xPIkjwG7duzF(_sROufzwnAS!RU`j!tT!LR3E~*D98!MX9vd*;O
+EX2wZ`JN_3%ET~Hf%T<dG?~M6%U@!j%f;og?jc%p;9H&JVGbN{NiJU=-mb1|Geig at 3WKw^FF2G|H^hk
+ at e$5$PE`xC&`0ikJOzsFsPa+w?eZ!4CpsbOn#8Fe=kn|(VZvqX6fswaPq=$*@(Fj2Z!TSkhU2(H at 7%P
+yS>J%lX=tW at YRlNAI4w+JHhsh)=Y_0h;z}KQpSyWArd8^t+|^uE=RFCHV!2}*acD`DH)EBCHM<<Ugc9
+mTQNh4rr<x-rEzyV#AV+Yw`DldNzv*0(+yu8q=!vz%p3R}>NQ`kF|FSufMV#+vH&Zqx3&WW$f(9)4B?
+}`NbgKKR?Wlwb?-g at hI@Pf&C3UL%I_G at ZOi@a<EpM7f1IP24^%6UNQ(E>KF}uZb5_ at 4C-Tc{qp8wmA(
+V!D>kb*G^-lSlbf_EsmQo;2KRx0?hf<Gy!50tRCf+H2YUcp-w%vG>h!Bq-wP;k3~-z(@5Bw<?xyD2z8
+!BGlcuV9LTHU(EH_>zLV6?|X8S_Qq at s(ch2px`(KZ&mOP1 at BexDFrtwxI@8%3Z7K(dj-!a*s7g`T@)O
+kV3dMp1#eI=UBS5uu2Aq<1>aEceFbY3WbGxqO2KdiqZAyk;3NfSD43<-9SYv1-~$S7P;je)hZX!#!EY
+42prC)S!bd&t2R631^sKuY7s)X8?idNfOC{WtEMe0p@@?r}Jg|BH=AH*W4VnswVe%|`i*!0x^tJSh%`
+31JW!sVp^3pO23mKck3RxP<V+AaOeuG##%V9WL7apk-`5jX*jeZoIO=VNqcs7tlsk}7%5H_48FpCR^s
+qA_d$70z8W)`jm%+7L|jb&4g8O%s;0sWA#QG^d*z5-66R3@;=^m7lR`7&~kqm-|0!I$KWVka__2-RGe
+NrY!Oi=ZD|22vOkVP&I`b67q>BfWX_-%iv5&qR at 90-3<2bm5jM(wrm0W)Ve&WJ;y~g(8(%#J~CEl1^z
+9kZ&%VO}1PL0qW<96dKZkf41;RrFhxw4izqs+<l1~TKWi=PXE({e}>A_NV(ZX`tUbWzIh^7_~p|t#}z
+}SIEZ}W1eG$?IpkU>><D=qr7Lj<UBIqD<YXsTgvleyjUv4q5nfW3DstBNG*Hk6US?C648qySLfK$)&7
+su#3+_P@(p)&X^E0(sPUQ+5Awg-PbP5D61&v~w1x|?+H(Suzw7iG9$~%{0*o1843U19NT8)%LKE+K_<
+ttOqAt<TUN=o|7apS1F?78PR<agxj(sIvm<9jTnGewn8fy+m7I!|y9b at ksNA5Hld?xI7(N#kF06r{Jn
+kD=6FXzAER3C~hoy&N~d3*hOVrk36{f3iI12}&<t at 0!bR_ at BrRQk(uK^Bd;MFJF`x(w$4;3n-Rdq|sb
+W(&}bIiduS+e**txk!l7j5||HGk|k{@Ijs~g#eWDJaoO_DqueqS#<G6rDSxzzbA?o9Tp~;E={J at qV1*
+RZ1cvEuveQyO(KNklekZ*-suj!@HL*aXp6+TRZfh|gE&V?uKaF!r7yM6cLWP!oLp=qr^Mss)iuN{3^i
+609GF&{DQqppL4R<TQE5{chq>Q3W=Loy4S$xCY%J0h4Po at 8}DTJ1CVKXJFrQgurXNoeCwN3U|`DD))D
+HuiXmM>figk8f%#!0_~M;;0Wek;dgdS%~OBkiq~JxSSJF_k?~S=W6d?Lo>OqwH;!y|!A~+bR1hWe-ty
+qq28Y_G3<I at 1*Q0%HCN^?`vuAqUEpb-IRU0vUk_=`%2o4T7JsjL)pVmNqdpT4`rXP<@cqu-=X2B>=%^
+%pt5si-=OS?qV5-naS6s7D2p3JAE&i?u`G;!Mk?vXBgzCa&7zo)5{ZScTe%GqKbl`rStIq?BIF!3-jF
+FEz1xHY%%lHfM7*ZCSX{Ndhe$uEQEDSy{QA!$ALAvzP}lELze|5ssxg=Ql{WKh9Ab&vPj`hs_xMZQej
+Zo&)8ZQcr`i9%;JLI+v;Mm!K-ciQ(x;IG=o)?=SNLm?fdA_6_vpv3J^kEm?tWKHvZA}O{YvR=pu4FH?
+ulr4ikB=cDJ{F}?q%i69V;qU-m_};z4xuT|A7bBKJ at S-k3RPJ6YHLQ>gn~*Jp0^+=l}M?i+_LV9~)nO
+<<(8EZQinV+xFMr_~(wDmAiKD*}HH5frE$MeCzPrM~)sle&U^X-+TXqlmGhgqmMuN^s}nZzxeXh>94+
+aR)16T?RVe*Q2XOgKmYP;-I at Bc=gwdF?ILG74^J=eRzCXHzJC4zZ47}yZQHdEzN$k=$4;HQbnVvN*rR
+8!-hKM^3++E3?CODo28RzB8WA~c_%%@@Mn;bsJ!Wi7>a4W%jLg|t*|*-7GbcAM|Mr4Hn|<!QqWO2+JY
+(i9$tf-S-??DnqQ(Ey^#4!i|6k_6X<V$?GX7d?T>NzjiPuj^nmB3ll&LpNn||X>lK(CH|F7Ub_Iv!?>
+O)tud%4*kXkxD*yWY*dvWfkkCiYcL?5msD?`>kguZew=M`QbIP3+ia#2B}dUVk at tEB!{&2nb`KLa|aP
+pLF%RnqiGd{){e{`Rd1n`(WWdSh>&`n%wZ16vSf|vog8Ph8dUkTu-C0xy`swP-{k->turYYCXn1q)E&
+?>|)N2Ctl3==DX5~SMx&V3ZE}l_i~gyQH(p&sBe?ccnUj9tXVaTM`b!##c6Pr^l12N_-c4+cxm`(c*y
++byYSHR*Yef!K{}~o#h^gU9~<x(FR*WL!%7lD6*dVsP0WCD#fp-<&lC#n?v^O#d<`Kc3q0NJse&$<ua
+=*dzLuVrjuxNf$~tn+oRNhtfl8<6YGWcjMi}PPBl({=I6Zx^v?P(Zn3TwvGtx5V%*t>H#PxY|8`&qM+
+45kWoRM$SJWTf4_Ci87-ku}Ui?`>Bf;Z(CWTOlcQw!2u<(x6Az at A#*Vpx1?uCP+R$P4KsZKR3xkQT+C
+kF<~u;v){5oNBWdq^F8>#usEO6Y(X>UQp<=5x+9hb2Ho=rr4z|F)vp*PPQwUYC}4Rk2na2Fz^@guFcT
+)0H$T<rsvI at Y)iFelRvpnEzBsGFzeQgG+SJ5W?sP@;W16+NB#+^g*H=~EqiW8QeM72-{mgdWO6K#Qcj
+(nF)pu2#+*teYN6Q_R$>Q{)F;pnPpGI3SdHi}?YZ`xoc=EHW3BL~!@SwE6>H at Y=w-23yzvYRr}hC6j8
+RF`ee~>_ at bGC#J~Z4kisnk6l9fUaO;GcT=+RRM=EL-QJ*Mn>=A*S~t%{59Dqd1d8F=1ReAm+A_TJu<L
+s?lFHPqqZ#Yx4>D0FDQsHADd6rVClO2Wx&V`%ZRVv5Bmo2;xXz22uNKYw0+{w3-EySuyJ8E%LjnCt1q
+K22}J$4-SCF?3LRj%v6X%4tgWoQyoX&7|Zy)s~uLv=kKN6&SN~jR~pt+_bC=%zbAm|LmNMbfYcLn3tc
+CYs at IhNVD5gXXR)u<kVbP;GanXVNA_6rsh+?bc%!8LxM7>Nw|WH)O2HJLEapSA(QE)EjFND<;@~IT;g
+cF-JVe}KRb7}F;gINiGN{+&F1FK3T^2`M!G#eCp%4s(0t at W{zQDs0mwh2prB>{20GG+5L<>ZU)C<8y%
+1>h>r>dT3EyUC*obY}He*^|dWJDCQ;Q+f8zj~s8~PhdQ9e~j8B=nU;?0?pN+#kevLN#M4We at B2UB5I#
+;jCw%*oDGjJ_nDjDk7Yxv7FlL^>fq at OFD1Ax=DWE6&R%M$Z(tWMuq#*|sdOve1 at V;O2aV$u{suP^rQ+
+L%)W<lu!4xF5y>thG4OK7*#A&r;HyM)jWUu_3CF#RaBsKn&fb4_#XX;#+;nId7`{~T~Z7!lw-?0X`$Q
+;X4~gv<k||2p&4_j=4EFZGv?&m=J)^o{AOhsH6cwUMAIOqnh*)5%*mLOr at FG9tPl0>J!y>AN30$<wlg
++qvU&2~9z66_-i|Hf at 10#zlRK$LFHH1eN6tY1Q8?oUDxCQ<sE<KMQaGb9drp2%Mskj7M`jcakDM_nBP
+S!ZFk{BGQ{yHJZ>^OXl%GC}UD+enP}}KQyL5lnF4B*+n`Af^Q0bSyc7R-~_2|S{A9`24EyE8W^B6a~&
+fvuik*%0vs9%0i7hl#T-N3p;wqacgLTaz7YJaS4WuQn4`MlGGvCnD1{x>bIuLtuT+A3V<r(=GEu&%u?
+YaeM~?S}@|wyE+z=3A-H_ep7$q-*8DT21mu3hL;~I_~vj9c={DTeFUlde(7L at G&j at 7ke_ckKQ9H{UCv
+xkHAd}lii2fB6^)#nD(t$`*c0!>w|n<;VSwv_GsURa5`Tv=1X)EzWL3idnYwdW&Ik$w+`@T0g)Y8fUZ
+4jMSZ*$4xdHqsekr3BB9RTgZb-%n9k_WjOjtlI3<u7iGRj|F14MiLXKTk**;&_#b5Gu3h_0P%##{;8)
+P8f6E6(J3&W%ae4ZV`*#4n3K07M$={Tr0>zclob&cG^y6SeYHkJPQeo6Sqk+CXo at Sb>(PW+$Jns`CxN
+r7TyqVw@!KDtLlnyxok&w_3Aru(p9;z{t(pvs_2-CX5Ta}8ttshKbyQM~ceF|TnAJb9k{{vIXGfI%I6
+S%>sCtV3h~>oBQZZBSK%Od^bFBx6VE9i!3<aw{86Zm$|e`O!N=g&77jy$iHB?Yv0deOSAp23MRnMl)7
+Dx*^VaG7lZ&76<a at E_*|RtJ)n4s?_ir3H6aNj6K)_o%3jH at Hcul9+9x)KtI+weIn~TC5d&8oWMHk;+Z
+T}SuXfsQ77^wnWwVpIK?INl{%!2I at 3W<ylTxlOd&}0bQsz$U#r);&c3X(Es*jsQ2K3H=X*u!NxBeU7D
+DwsWQrdPi6rwRnX9f#Yu4qd;M#UoLB|Z00r~zZe&N0(BSA=q!gr?jq4UrVwUTOst2|cRz}OCYPbj)|U
+Hn)VTL{T(2a?yTSQlMeCgV_AkP}LW<U^IJZ;GqV-OSj|o88huy&tOTz0IF^Kzty4iT+xR?<lvPGa1XI
+w?@UQp265+vUgUp9~9Jz1yQ`9p^fwV>=v4jCo?u&h0}HQXI+WcU5VFSiPv3;*IkEptm<%#_$}(0AJsE
+oQO{(1pcgVH%ZSQ`+L4Y^d<e%@kd4Zg>SiWQ;6BW5sGGXpzN~j-N7nnNPPHLbR~>6#*)~5YB``_KwJ-
+B6XyuBlqX|}TdT-U at io63TZ{p7s#h(JgSMn}gwC~ESrSZX?jD1J%t6JMIxHao$dyREV-^98_zRJ4kHn
+Kp~HspJ2^~=XqzmUe8ix}&%nA%z`jqZ9D7#YX{3mV#O#E;VI&1Kr{@Dj#8E@?<hli!Zrh;R4$Rkc3mQ
+|X=WmExJ?5soyi at DI_G4AV>e4k3Pr3~is^G2D-Jk4$IXbvLobJ&2^`pvUFqZ}kJze>~72e;tSWu|AQv
+d-l;~dN!AyvGe8Ad+%|YGd<y!UJpHMJH^1-QeA9YAX?xQq!X^y)xA_tZB$Rw1E{X~qrS?%uYk%?)LD8
+-E<=caM6al`lICZL=0}^Q`Iwj1w$n?zYEQgEKPTjw?5 at 6Blo6E;wc#DpT{2vy(X#y&#y+CATB}n+?%G
+gTl0CweWUk7+PX6mv`nQQOuVXTNG1+^(MzVYC@^$hb6z1pG-0GyLLk)PgP)BP;9rgBL-jO<{YwJZk4q
+$EX^-B`%WLrw7jR$Kp)Hl52zyM2kTU+9B5Ve<qtX*uIdwpy5RjrPBReC6%SzY-CQNDr9aKbO2;tlJr+
+R_eGe(fUK6f}(&?uuuicx{;B6~Z@|`a()0_?0&K0V)1Ty4E_ at 8tryl$bv87NpPr?1znT&LaPT&p`dB0
+mX~Ui3JAxcUd*T~XC3oHL_G<ovhUc3`UG1f;T*v_=)#%S=R=`@uDd_$ZVO`F(*sF{46J*@m at TQ}&;Vw
+%*=bB-qcI7MU?U4C?OY~XLzza3r^1E$xMltg+Y|?Jma~enKtqGu7v#3=3)bTEpL56({^uOBg#TO4A$Q
+lgANQ@$U7KNxl~cY1n(<9zi at YXhxUciY=gpF9e=JKkz91tbA$wK<)-yM-Sh235EgI73T%=_$D4 at xxmc
+HJ5T57g!d|tt1ngr)$sFdbV$lQzqiXEGmTbP%V5o;^RvC!m|>flw(R9KijJ6EMJC9eSi_7!pf`mr>9c
+b!=7<Uy{9dFl3?jPcny8P})IAu`x=o)fVm)GQ_0o{9DxTlTp5wu~ux)3VbuVzW{U*!_wkS2!Bc-iEX%
++tRJXAFM&?J=A)qSO{Y*!9%T^n$pt?1U6$l6Y^5i6_+T5Xz<gGOqo&v`<9v2(ou#=d=iVz$t%=s*I6c
+AZ%NQr<}A9&wgUQ#n+D|-3DZnTal)fp1MM;%`M-s=W-ur(JJ&`zec)luNX<vt(Tr7?O_=Pnd`VjYmCT
+g+`G~oqi8Pqltujn%fz6%|R!(C_ytEabh7$O~Yie$m$Ufatl$MbXZc|YpbM`9eZ_(SsGp^8_G0Q%Cc1
+A%GF%Tlq*K3k3=Z0*`GBsyv?!4^Wbdp-QCFJGZX3rmQ&rL%LmRuW_CPLs7o0 at O47eJb98AUeM2W~Q|r
+HK8+EZ{?ILAH(9oijN at M5mJROvp%`n{kPIjYnKAIi==g-_g|5l$$;|KRY)z&rW!LPwBez`2_JjC&PA0
+f+lx~ATHme8=q51Y`q~h$DYA%hHbKDyAd`~RK?(%o20$vR=cKTVQn;y_%a>gWpT1d?`f2?r~~XHQO=E
+PGR at IYnm1$=6bjpWB8-%I#`btlqBKQhwg7ocd6J~EbI2W at kQ8QvKWrN5tmCD1kYs<hXfZ6gbF&Nba<N
+7wrHvX3qqkP=rsTQmBKus_?`DFt=Vfh9$|w-z<fci)DC>uj^OWqg+Z3h;E^UQ~QN==z=NH;C=3rUdR4
+8a66RY%^oRg7}&+bvRA0E?Kkw_&8++(>gn__94F$Sqjuq49lPm)VzmYpuzqSV<L>|@Duk{ZU=$(kf<J
+%xV7%}#8h5Np6gx0Yolm888e3)zpeXJ%3%Q5!E(oRlF8I2AE0x#<%!WhqVcXxOtsIK~EhCd4KZ3W9CK
+wFoH at D&J}B|A$9Ak2&<I&jvme#@O34jVChS<=U}A7Gss)uQatcI+YU0e)mB>y59}eIK0R2hWgL*pXWc
+%<sQ^Is7lf5lc$0>BZIThxXudS3gey(oJ+yS`8b!NSFp8$zRJ(f&F?A|7to;64ODJ8m)%yqaPOhqhbg
+;B*<+PGNyV9 at +$SqIO{IUM$~#B7&tW(j$;25CoXIXwxVBQ^ixtjG6kMwOOO$`9N(VZJv0eVSvOlTtS+
+DYYPPuPU_#ILHA1MD2AIS at iXYPD&S`L?c{_605H2%Lk{XZK2|JMhKrrhmo)c37_75u;c{NDLnk0y_&d
+bIfKevo{4>PPkcgnEiE{j}-7^k`$3*e34b=ViWED;TO^Zv~ACc2O`y!9WG|3Ni(2&q-LN;JXSQRB*3?
+l?uM0;8q1UDY#L=7Zu!~;CcnuDfp;@YZY9jV6lQW1#_CDpRV8x1*a%zRWL at ua0QJDhA7xxLA`>tXBFK
+Fw)Se=rkqsn#}quMV5Ndv72K%c1_jqDxJ<z!1ydBXDj21pQNa)e0~ORO$P}!vS9mMvRIp0HlL{VF at Su
+W~3T{+zt%A!GEUIsuewKpM6|^cCuAosty at t;j2~R2bv4RH`T&LhN1^>I+kd*$7=N<ps{C}4h5zWWf+M
+n=WRJr~tVZO>Q{OZf+``12!Ek4rU*y8iwhT^~VY5DY@^l$m};QuV%f93Q4y9_jW{*Q~qx`Aqa#=}cYN
+7mEGCuQmUr9G7Yv!6-$<TDa3d7?^uQW~?USilVwe%I3<K5c9v{UsMAj8X8lD-3T^a5IHJ`qZhXI<eDF
+IiI?@<@6UlDNGY-f;#cTTRt?h<PUHCaOkDs-#PgyjRDw at MKb0wH7=@D at S++|uUF%}LF(1o=h~qXz8m}
+3z{TqMMWuT(_Rm2L*QR~JMKxY!*Lk;Uf#rYfp<4bHy@&mD>@dLyn&htY)v-u|ecLg1f!sq0-be2nWL`
+sXE4?xPIsyL{Ok)^wf05v at jx-J;_b7tnI?6C91Q+8YYY!bOCOESbV_sxVA^0l2Cw+A6U4j9fr8$sbUu
+BLVSfb3O1h;g?nJCJa;E(i%dg|CO1fT9A&Fcw9Ko>TJ$su at eHyL*g!Q=EUAoq6(26vb4Aq0<fm-K#1u
+#J(iQVJ7D at Y<e?tst|N;1Be^Nak9C0lkQRZwf<jZZDZ;5y3%y81ttz!wD{<_hWJg9NCw~R;_hx6v55(
+GQx8!!J+*m&XEKkrZ<wzj}jc#pT=%vjv^S}U-B at 4-~$6_j7{!1CvpGPln0sDT`lw)30eT38z{qXAm}$
+py89Cxt;{bHEFXe4LC01Q{F16uC7Hh^cugdYNs%wX>`0kT4#AJ;)qCmK#{|zsO4`lCXgohmh5;;9X23
+Ux$-JrvdJU)EgW?7f48=?4aDqeVy_(E11Wm(nPJz-Sc#z&mG6PPyM)EC-;Pp{7jwSabf@`8A-vGDJYa
+{oq1mBC2IOs<Z&!e$lpkq at A-W{!EfZ(=h8RiXww~wN^5rwf4tRE%Q1ne?eh6kK5hWwB(!Q*3;tP<=nR
+>=>+o-srV at uWAw=op#)D1x>anI_<i$_)60GUuBZdzs!D6t{}tXfw$YnPUi+m=!+>eyGeJ6P#<2af=Av
+GM;3N!lw}2a4pF&nF04-E6eC0!KranzGR+G at NAr_U-49q^qwU53k0u9km-aF%t&PH7cyrN+<v{R7jF>
+!Y%0liE5eiD`5S1iO6Cg$drp(M^(OejG#UOyf{UmtoI+uW30`%xbPpkThTeQ~uP1o>4C!toSUE%D2Ke
+Gkl1~b=m7whw#Y2MEB$GUldlbREWEno6;LFJphfM?zD>LAusZxFbgJ;QfLS{k7yp(6a4jHn}h7fF%Nn
+yYrf?l%;Co%(Wp*IS+5ge1nm>KO7!9B{nmtb7BG$#<Oqjv_G>j|#Ao$3ae0SgKUCo<azK3gEm2=^B3D
+3p0s5}a;R<xcQxo1_uvY`pDCwh3C5IfdYwB5Heq!+esTJ0(A32tIhHjJuX#zyjg}=py*&0>u-8D;5!*
+dYypd7gL#%*-G#vz3V6pVB%8BkKB_84l1QOPv&rf(@P}|fUA{xBizeqeoA2gQ|_kx$P9S;Zbb{hEz49
+rA~?2Owetjv%Vj!%`<44af*qF=uPB`^1Yf3i1L3xbV9EVd-sE0Nu;T-=e7g|j^wvV{@`HrK<5Zt1JmA
+<TD19==5WMdR)g}=9`3aftFEBsJSPq5pe~QKxPg5I9<`o2wKP`FkF2T<0rMU~i$?Ii0QwTn at UgEid;J
+9Zbo at RoNZ=~`i^E!fwFH8O>5j;n4J(({M%zs7V02ur#$tTK at p!GG9Ju(A!-%N9TG8+j#vRU at U8wmz&k
+vOy``1KYk15Sd)+h}e{X29#W6R*geL~!wT#b<(3U#D>kx#ttyL2nhAD+#`|lllTOZzR~IQuc9xeRoOs
+P=Y`0AwHA&7lO<8Qom35tRVQ!J}L_`e at pPz{fs4%Ifr2QK`IY21DX%2euUs-^yZU0RE!UPlW0U3f)(_
+xfIGpYw}>t>rx5ISn0QO(7=pjjyOGTG1S8&NY!jIy3EuFwq!HgJ;9G-7soelPqRfCer at x-)0>oK-xC0
+uM8E}j;1I|!pz<J7ybKwsvGvMEq8RxrCC^KM<G6S|dD$O{XJY1OpCnz)Et;!6DGrGVN at Q88;tX5_~oU
+w!%u)8wjoaI<$zLH0NGwmt%heAnw+Ay)VQj9&KWpX>kEu4=Sm#!mstaEO~(1ajmR}6nALF_A0AY3-iL
+I`5-C|uVx9i8|>%i4^)SaWN}9Z!)PN$&2;T5w<6g8POR+_$#iey|1ilP$PAn{mfFB`!VE7m(}`^G>Oc
+)oX23uXGLekh#>B=o{>ni>P1rZm@@zl7F8D`?2TA9 at t<n+D_rU8thd&bmH4;&2HVPV>h|wM`g~8Onkm
+TSh{~ff9W%5&>(j0wb!y~)26ZP>}+PY+hsu&7t>!cTf25Gd+xdC*tTukSY>4;`{08Q*u{$%nVO0fi@;
+>Tg<H&@-E+9upBWC!n|D-LkMbWb6#HM8H*diL1o(j;zHpQuK11FI$gU^L4-}W|^X9?sJbL)>VPO~3B0
+c^4fnUfJ{__^p>c6GPe7~~KJF2fo{LIV?(!Lns4<F6UJbFOcFG&9!a=!pOrGJ6^@lcq>GJR>!IU~X!K
+74e)bT}i@{|xy{JLS*0<LF_aMsC3G!qKyzk*yB?0{^8KmLI-wxDIK+esR)_I0|qfhtemz_Zx at W_kZ;8
+Q6eD|{L!EM`;vA)$T=V`DbxQ}HZ&;V at KFk}0_ at UXc>dubQ8IwA*S~#qea{yUi?Ddf{ae#0UQf}*o+aU
+b<moAg>n|KFt`y;qa{k-Yo%I)lH^LKts~@fB!dvhkNjRl9!V4YIC#APYU*M*c8|as*M|!gh-76PYc@~
+c)5$NvrdeW;aX0oAa;nk^d?(xR9 at Ghp87c(8bp7i?AYoNC~hnxp0S^qsbkBp3DiHV79^5n_vjyvvXB;
+%`Atzv)s+uzuxO`C*_zyJRG?DXl=E;-M~_AvGN`5U+Rpd{|hzmspy+{qU2{9$M2ZFy`l6;b9+&KK{jN
+hV3SZSnWNCT}Lg;>S<l%=!7ug@;a0ojP at AW<ul(1e0%zzkLGduO;(E<^6WvJT;ju=1=c at Z7R~+wi4+t
+=KQ-eXErh+#We0))V(_o^y$u-r+V3CUM-A|dJU3K;8Bd=lfGpp(bK0-9~KrC#=^tH+33-unaN~gadB~
+icM~U0WH;P!1H19Y8`;d6Gufi_ at oe_&+3eO^Z)J1l%%O2{foMM#E?mf-w2x&k+%cNHx+t2J%(k!<x5c
+tGc_#KqK at 59+$w>D1;yCv3l38ra+I+VEp6l4Lr*C7SJ2<;~H)likb2fG_XT#p)Y}66XX1vW=?7N&@_a
+SE!KjW;B-l<=3cJtSqrB!h@>s!v2ELp<J%gfp7)vMWq4?f5qdgvkc=%bIab?er#XP$XRl<&rk8`*2Gy
+(ZeSH{N)Iy|ZT{Tlynsuhnw4Z{I$4=+Ghd_S<i><HwJ)ci(-NefZ&r?2}JEVLzNc$=>;iv(G>OT*yUr
+bv66thi}-IXF02_tz~D<oDs5u$73+{4 at pdXC#YY=m at mnVA651?RDq4WEgQ{;u$%crHlN?l*7DWtHU2V
+tmmk;KQ`Vm1_oVpY6n`|uPoVfWQvBHzzlaC1<rM!>ivJSDucY`VDE=w8_<bpU48^~R;@c?xN{atH#ot
+Zwk5l}U6#r9-|0Tt*ruaWl{5rSzgZt7LjpnfVG_PAl^OcP&89Vws^=ULV<R^j{KRJZ)PbM;c>UPGzS<
+QIu%Z%5##cxmXds6&xicj<FjWqu}N@>;79E#7U_{%B&V-)`%6n_`RKSA+NyTzx$N0JxjmK47=#=R7u+
+Mik)#BgI<#>Y_n85I8xivJ+R-%Rn}b&Jp1uq4)j>TD0TiiJ_N9nOxD<kzw|#)EERd`Ldy6YpaD_D30C
+{R-nRA7uRaXKwM06n{9yPoVg-D1H&eUrF)TQ~Xyc{tk+NfZ|i0t3Rgrrzw7|EB at 7#!gZ8FHl=VkrSJ@
+;u$NN!oKmO_;_Rm(oc%J9v%1?kJF}XzvoCXY{y2BV?@aLrQv9(Le-gz{qxf?v{xXXH5XFC%;%}n(yD9
+!rivKaiuW^g7R~!hY_?;<!4~pNH;$Kbi$58y~6#sULzk=dFOYwJ7{14sYH-3`k<L(q2JI*xDWESRx0i
+k_*_w3pCT9>bBTzp)d*&H7`cC5*qJTSChzdpUMy|$N at f;o=7=`W59W^-~_e+0PpTBGuhPmHz1kEP at -v
+8J)(OvzUxK%YK6dno_7#28b&Db^fI at qyQ%tHZ*^BsU-#pBS$_<2#3RNFFpurqH`*4`Z)u5uehJkB=K0
+pWL-w#}M+T0HG>C-(-qE)`ZBh at yVUrwd*MT1&+OY8VSibSNh4p?c24xZnOvxCIa*@B7UqHz9#s$Z`bu
+Yg<8S@<UsM0$C?takB_&+CwD>u9YZ>FxXRz(ze at sgfPbQRDE&^20wjYC at Q<}5#>K}cS`xcA3PAq-28i
+^>C7R<ciRQ%d-8u!U0Pyc0IxvCB^kYR98rPCXA%NnaNPkFlBC$Bp5}zoD5IJc4C;XGmLt=nJJf+cT{P
+=e5+ED<PfAa8F$uWa1l)?4n-);POfkGFTf2_gV5Y;B!5^qi<E|2dni0C?AiO1NHCeu()gLnAY<izB}I
+E%v4rST{(Hga6-U at x8T^~wXhiZh#B{>dW-2exjd(*;=xL!g)#Kb8ck!QXVvu<(f1p8B?N<QY4TWH~Z2
+Hnzb(IeDCELUbD+ at 8M*OO-AZ*=7#)}V-aLRbbyCX4E$rqlDNjR27mB}1T4lcsLh1r*u=5XBx{Vhr!OC
+CV9<y}6Y(+5%^T^Pg*Ulh6A>F7*VtRi52bG=L5#Bu8`;F$Eq!85oM~heZx-M9No?ZHdFA4IL-E)u8c0
+<BHRHL(&AiQy<%-$ZCgZuwk5jbq+ at wj9#CT*;#<i}o$8$wv*s^R3TU!vzHZ8TVjSnwk*BqoV1+{b54>
+-Hw3pr*eBKW`q53olbd4xUo*kkO;C!b{N*RL02g;!sFRg4F>Z{IG)3hz}u#~z{a#zq<|?A^PU9XWDDj
+15kG at frK#i!a!zQ>R!>O%40 at +i%%VKmH)b2EYFLEBo!Y-`MIioV`r;<LBMl*}*-iqq~MWI;xke(x{`G
+PaWMo)X_c5g7_vjgzsPz`9XF&e}}E+AG4SFY3jdg-QrV+m_#%BeCljhT}|<aQ~Vf;A5Zabrues0{JSa
+sV-)`tihqdWH}rG=8K?YbobrEloTBM<?$oK1*b46`6hC(g=`(onVBGoG$=In=NT(hHx(Bvt(~ab;W6#
+h&efsqo9298iA3*j_J$m))M`42kyAKW<9LBoz91uFVtMA|-3eYAXpj($7eL at HO`G$5=4n||>fWdmbe<
+;Q2-?mLar;rW<2K(vtzOB8z{rejXoxECg8qn2G?+b^)f!%|BbUr-?<LTPk8|hya;?a(5e!YBKw+^HF)
+uT^m&o1OkQM!_y@(=6MzF)7f!Gpt~8Hw^A5Ej-uEUZVEpsx!(IHS>{huryJY+!5 at 7U4YA+tRY2&MgeW
+<6w7pxjuyNn^Qy(<7L~~D|oac=&jsdZ<XtR$Ma{7SOH%g`3~;hy*rqS7b?N}wr<@TJG;1A66(L9GMri
+paco at U_+RySs&xH-FQ9tBS9FgMf8!HRJTZ;>o!5W(;fJrj|Ni^0sqgvXyYId`P4Kf{e);7GnwOsX_~V
+aXK5*cGL#NY)jT$v-u%anMrGq2%;KLu`AIcgXbKAas`}QITUbVTxxFI*+eDm1h^pLsp2OoTJ56z?b&Y
+e5?*I$3lsXyiKzyCfKsQ71}ea312&EZcpaO!72aXOvVMC<1#PMmmr*REZQ$Bi2o!DKn%lYtIQ9_a at zC
+|6(g!mNG5fKLUwBJ7+wb0X^N>(4PXgIA7!N8<NUs)Lb8<C<%(=?nY_FM<D?Z@$U5ZQI5PKfZPAR)P2F
+)2I1YUwy at o9XrO4A3rX_Ar6fZ;C_nYJn{0&FE8A(Wy?YuvRO(>N+#sz=bKlqT$x1UYT$;?8Nxbr=nzp
+}UVhWip+mvD5VP4Figf=d{y+cxGpDi4>R!Ei4I>_|{N|f)cx7d!i_b at o9_9b~*S`dwR6YWCn5(L)_(v
+aoB<!F`duhxgAj#Y>KmPb*J;~j9O4E7n+&TW!Pe1+q-h1zD`|`^#Kcl?PA{^0qAJw;Egu_b2{iFEPcn
+W#BUf{32ph0_4CfW=9H99o2_BN$OdkJUPOJ(kQ-QDs28T|L`*|UPmu_wtyDQMWed$+(J^6}w^ABr;g{
+PWL+9XO&+P#qTVop;_5FX{%$0}$ngx`Q}xz4eyBA7x1OpQ9WuUerz*$%pLc$^8QSsSXeQBly?V)p6>E
+g#1TEMfHUo;|2b2zx_6U{q@&5l{u#|v#7)1Kg#3Kp+n*Y?gtMZ6m{j~$&<ni8qfwn-cV0aM!;?J_nc>
+Z$obeKoJStweDFTb!*+2#sFL$ZZ*u;()13cWSN9Ipl`g-Fxf}jFcI;T)yLazlG=^VE?Ip at X&;WeFbMO
+`Ppe%qp%qaU$KmAm^FoWmdH}HiVfEM5l{-cba`j&I^`<%y|;5_;$=hqzOJmMhHu$S`zL_^<ya^7=0=P
+N(v{KAC`kNy$-sjYXtz+Zc{ve4c?Q%_J2ATQHC<^0-{oX5UL{09wG2E*Utd??Y7`vK>57dX#6&UyF_*
+Ve=p;eY1L8OZXAh=_=uBnzdWfy&_$T7V1W2sk!J2lx)2ql_RokbkthG-neCO(6WQ`$*C-?p at Bu5UwMM
+hG8T(`6ng*+3#@P`weye?h5gzK7(uRKjfeKBaXLenP_qjzM?E3SC9>j4%BhT8RQ=ILW8ImcqV_&`SnC
+YJjws~4<rqvk8wWYZAn8o)rG5fa~`_$kK<2m@#;Q(`V6CTSc!Uuwxu~bAnPs37x)i<^b3fGcE<g=;S|
++T(C`W8aYTcKXxR82zmn%idLM2H|FdV$a_VOqy`VvRH9DFrlji6+fBrl_zU?vo%z}9S at a<#y19>q5iJ
+QLSeCn5+PpslR5j6Zu)n}5KQCfXIB<nNUq`o_3eIEFRtkcxuHg}n-z at N%_MPy`TPioIgfj{J=DIJh|$
+aPaXG+H3*kfYBIZ{p9*8^xctkLHgTjuABAnOV*Gjf#e(&p1yYoUH$HtIwc8)#pKIlc-JYLv2zIqM`d%
+*|yTNq&fV1_U!4Bf9m7W&tFm=sK4kBw6Z{bfL)^j_*1*bD<4efFU%jspPe_FKSeY=Ml|3_rS@|M(J-C
+xnDT|BL95T8L95SblZG51zVG3 at KWHHS8@EyYKPZwp(j5NO-V6Dsy0#MIA=EjI4viMjfc~H**#iD(Ctq
+7);xFA9&HqL;JVP`*X_NRD{=j)k4bkA_eA;PQpV218f7DQ)L4#JGL4#JG(I$nyE|NLZ6o1q+^e;5da=
+oBIdz;eHTpiJ9!Lw!Y2>!}~k^H4QqWSYhM8n+C{MXuV_y^}C4ar2q&0iA at ZuL1{)o0T?vQ3J5TlUXdo
+79hJ==FND?UKNs#`i0R4I9>z#wex0AMGL_WCk=~%%jl)H}tjIxD0;iZ!u=Tv%Po(- at Ir9f0=0bJJGO#
+Xn5nHJpRiM)mPNmR1=+Zs7#`?`mDwn{dP2uKiUgT{zr}+*%xJ at y{NCi8 at K^?jTW^1XzwwvLA!~*3Vj=
+%9ZRG5HlpFRMI-sf1=0LPqM>PhzMtBp)pJaI#ckvGvg}x1GCP(pPB(Lh{U-kD2gd{r?qiHWYK+km{?y
+(J`6ql<0&n022%La7>I3lB$^>n^`}i3BFKC4P?^!m6|C4CgN;GU*NHkDgKz#-cPbnH6QZ%dr4Y!WtcV
+`g|nP$Ey-6CkfgEncT+ZbcmzUJj0Z3g-<j3e-F*sy`W at WKlm<09>KFO$pFliz;(jURhFmG3IKhQG0dX
+rQ|AD$(!{RiDu&J!v1qA1fHc*XEDqYjR`wJvk=sAR6u>8kQ0b3yB6iO~)9wywiO91N=!Ag#43Smx7kN
+?z)S=_~MI#o-3h4qXluD$6w{UORwRTM8oSugQ(9$1KK35KCh!T>Cu9*{K5Pfejm}Wl4w{?G?bAXEy*w
+oMA0Uh+{PHM)->P#1Ak5aqobqy0teu?Y}qmw4Nd8|94){7c7cDs>tVicMJ(T062)Iv_4yUI`n+Dz at Q9
++}UXr7gx0!f(wxj`%7-LZXoIvkmUyJ_tEq3YC5oJ#O at 9K#YC&uUI=DrDBQ6EtU7A;yNXmFRW-zyV9)T
+yR(tmd8%_P*pAW1v1)sQTRGx$O7{_ at nHtRx8SZKmYvmV(f*nOnG at ZpF4N1i-yb5ak(<VgEnc?qARG+L
+_;&}OiNEk at M+bmRlBI|<o){f<H^a%{F!H-;pmqO3k$i;X5%YXtPu73lTSVo?GDC5&Cvq9(Kn#2!dM97
+QOpPMpgtdc*3K`Sqxr_ub6xdW8)H1A>hmh93%`f|8*jW}ps~&r4gY}y2M*87%*;(sPp_eNRFuP0Pd&v
+aOqjqYPoB&xDk}H`4?MuvtXU)Q!TcWhf(G;j=qEHfFoyvRXip)B=nIj at UWb{Vcn<j2 at i*7cZ5U(Bm17
+LlXS7KV7bODy-<^Mr8a1jsF)?uo<cDN^HO>2nz4qE`FH#-m<j0GOia6B?4*PZ2T_?r}`}XY<@&Md{E6
+PZdE3G_0A7l^n9E|Hw7N`%X)1p38Ik?y7=bO~$!&{!fIPj4x5uOnvMyz at 0p@+me2=Z2SnHLuq^BZosf
+%odwi}&x}pVQb{-~v2QH{4&)puJ6L!3&wv(nj0*_G7d78)Y%nKg%%&`sWuG#_}!q&E_AywVBub`s+JX
+-dDW-uy*ZQURqlE^Xk>B`O>9Jf4%9Zn|Mx6j^I1ZD}^k92Gk4C3EV(OQ(CYFfqocrk3Jf81?v%*N5Tz
+bB$OR!Y33pF&wdIX{n7OwM5emCE<Zp2vpes+^CIw^Hf@@CQKvN;1`HU$=gpfZ$^m_bwzi|u0epeKw&s
+hu0U+uF>ImvX)B27++kNhV`7`^2>u;!Akbjb;CzmW)@-FIWe0)4#uwa2G2hafg$Bi4ur%#_Q+))OgL3
+=@iHt)q;4C8CaJ at 5pC41qRx*}|9#;i)aTw|DQ}!#8c(bPwhbe+GZZCSJ%A)|=r5ys+kMx7$Vijg5`vF
+)=ZG(4ax09N>>QP3dS(wzRsTLC6u>1IQKHW0ak?zCk!)yX{K%F9iNX_ln`ehxa5NmZCoY^Pm3|G=M)?
+H>CO at Xh=;><p~K1LblegUoY?nufcPefj8;_+8?-MYzq0oSR3^KbpUk&>7orL+%Hl(r6D09F;wnP?cKZ
+A$>g4o&z0hjeBH-C8ej2Zz6gA%Y&nfBaH?3;2P$t)@+M>eeH3`C#nILi(T;+rX#Zb%<rV(YOD~B&@E`
+y9hlmGW6Q7*aw#}qIaslDKo80bZa^K at h_ix1b4dWlQ|5P7W!jAd|2wYI!sIw%eVk|Ld&K%LUQe7AQ8`
+>Jkw<d?E2dI}Q6UYh50By4ScnD^si!wrapg$*i at x?OQP46qj-G#rqth&pvyKDnD&;=PnUAX)1yE(O4q
+MvqufSdLr4%!*CMR*`Tm=oaz?x5?5C!W9><2nxyk3WjL3x93=Py8+g4O+X{939{{+92w?#XJErg}%0#
+HGP3U%0?SQU|$Dv4_N}wQHR#zF#jLtdn5ea<sWTC(>}H-Er3{KpD|+wfAGNvg?zj7U3(D at vIJR&9en_
+B*Y-zfT>IF60e6AF`}~*so|TYG^g*CQTkl8vfwm6)kvkpW?dHv!`NI!CEaX|M!+1frwl<G(6YP)~ZU2
+DU%;!8kJ^w4XyYP4K7v0A&?qi$Fl?mQ;>(+_*pbOza8}Nl}q3r}M8tybcefCev`z81T7ph-E{;B^i)#
+hK9qeWZu)b{UCHgH2ZXnS%fGqgq6OTZo!XaVk&$De6uE{nhW`j0l3x?GuHe2?)D?AVvX3)uqPzkk1Ic
+fkYHSI9f?M?D~UT>ls1F7S6>|D<-pwf+Md(05||g7yz`fc^-5CwPoGCwPx?(AIZR4zQ!mM_Y?_jOG+#
+UxR4=t8o|jLv}AG=Pk**ds_s5ZQTNV291z)lB0_>MsQMDp<nIv7vqix>JzW}H^0aO=N|qNb*sFXI+va
+E=3QVu{NmVo^QssdTPq=%{$l8<piV*d7eQT<^xg6;R<QD~z<;rVTtc0Ko(lRXXi%`bf at 2k2tRR<A2iW
++#9V7b_56<`asQ3T1cdoHfTvr?)l2A~ks{T^RA6j|kPe_QcluAXZp9%?fTOk+3)|8O2IE%f;&t0%=ij
+9lgVjcpgB`wH2?47`RXLjjA5^$21M at kzvtx^{g<kGZtDODY(1_zwfN}^8h at 6KF%yumi0O8vr>#=GmCx
+#!He=bqR9&fVGCG_fM}K5_g;93Q6Si+l!ANv#J?)u5FwVqdTD`CktN0^btx{!(G{S%%HBGh*&9Xf8da
+?>~=OR^2trD!5`}Y}A6m6u$gR%X;c9%erz)@-iI{-0K%-&z}8Nk=xaZIX#9w6EWup!rs0s?9#u4UAij
+b^N5IT%S8;#GYpHwktyPho2A!noQzs1IN#TtTJGiBmi7DhEi3n;q<>=?`d<<@To*LQ+<3ZLYohAsPR#
+!waoiR*w@=v3SLqnc6uc3f3w(u|IJMZfM=h)O)?Hz}8QAIV+qe7o at 89o(2Vy7k2mB*;9bbg4CYB{m;X
+B^b)(lSIg<w43oz%3!cc{sOvCTxE96;otRU%&~SNT18E_8{bk%`KAh at 0FEyzD#wwDCT$vX at 5gRJxedZ
+l>sir0-t)kh<mpnc%;M|8dodw)kWnbFWhaTt94C&kWhP>B?(1?yJ at hxb+cy2%IrXyuLkICo}LVB7gOZ
+IM?T1hr#$01H%jc=e2{CvIa&yn3}wz&++t-jeCN(Nqy|Mu{JOs^bw2-tP`AY^>5{+J&HblT;%&zjg5`
+vZoFH?v%C^ppJ;kq))J}bQb%;t2YUrS{&tE!<~bM*SRWV@`Z)g=wtZ0aiGSQ!X)68>FSMkCPv~`aJ$C
+fwkoCRyC-Z<l`cm{U*TGB|JNlS{(@FXwPx2o;c+ltO1KQ|0uQc#BYO3H1)Pzs}v}Q)kaOfk;3JG4a|6
+pTn%n9&LH+|xYhK7c!ZQHh$yRlbzpl*UJXw=uini3A)2hK!26nz9^0^4YD at TILK_VJVLLCJ&E$KDC-J
+C%Ma7MzL!GyWHL<Vw5?tcaQ>wQ;47)WyM9z$PTd<<M_ at _DM-=nM)tDe>ZvjiOF{E-044b=#Y=ONWM>e
+&V9oRGT`-+9+bEtcolV3)2VGAb?^n|1o#M8VRK;VxD04+8x3~r)_>;KmMvSVg#9m9_yBnUxg9dW_8^P
+V!9QAW{<uiu1k|UKPJR6a*PH-n+U?+E+Z-NfQXd7~r^NBjzbDUsm7g&WiTT|)iyON`PBURfeXsvaVk}
+^F-xoYIIas5seaikpfA{X){v$_ at _`rsU$KgZe)oR@!d>{+#5#Q0kZ%=HQm=kx>N0+YM(f$)-Z{51JYR
+8TpmB?Y=zJ1c}VR!L;*ne~Zd7z8Xc4JOAu3ff<uU!#yB1Io7^2f2V>FDEAsB=)$MaJY;VlIx?(o?Z8H
+8zaJubwNiMy_ABZvOqsgg$PX(8u<s)sVlV{}=r~r0Dy6zQ5(>=E}M&*mN)$w07;<CG$IYQno<ZO2!A-
++#bAYz16wVdZi^_t_4u~7- at LYI`w>w_1^V&ENhDRCnqOoab8|t1NYI?)KtBG{rWe&Uaz%r<3?Er-n)0
+NtX-(w2buGV{MFh<<dN!=Y4j=1yCigL+W2q5f(5I at yq9?(z8+i#Y)Qmf)|xeI<b6+7Yfc>-<;T_9O3^
+**o~M7npY2ivZ4rMAfhAHmE-WmR^;dYPt*w=E#~vt*MCpL4AuD|le&Umgii%R9%V7~C at nAPO|4cbm2C
+@>eZ!0S+`!yI3HTqSnR#}V%_?qy`<9GpbS9++{h^SZLt3DF){I2NhsL0QUHT#i`nOcUb at zV#f9rC7 at i
+w;st2iIVJxN!u=0K33- at PaI`+t^I_Ja_KgKJD%>3OWDx?Ahb*?CkWZoSSimhtkqgYySNC*7D`cC2y+k
+r|==pLvNJ5U|r&=Q>QvLJ6E`yChZ^gr=_K(oc^fE<MXjOU<+&4u9X-w^MZ3}$UxP2iI>4th}*?I9J&Y
+E<MdN&Sniqx{wNd*N!!3$RaIAHypT2bjZN<B>pOmrv?YD$2wNlV|DE_yG4RQgC#}PW56fCHwvn2X!W8
+e5wxkao<$uv7?pMX&%squm!UH-6#zFn*%$YN4o#6e_9>4#)sexi=uziekGMPmGhJ`G4YIgnPejCr4q}
+}Ji{F=$WP1!!lXwDs&HR;(~j+vg>bw9g1ew}6?sr#?o!*jcyDftxsFk`Ckgg!og^ytx-B9X|4!baUVc
+I?=Xjvqfh$?nAC at tdNLYQr$(|HV0v=(=9m(a~`>kx0n#R6dMx7IXTF`+D%S3l}a>XZ=|8F(CABlzB*Q
+jJ}=_ImpUC+3TQkMSR_UO?GugUC+7bG%=itXVjd+mOb;Xoih=iUJ_x=SKgQuA8YtvXffARPUMaS{lj(
++eCF1t-0%nDIE`&$9>J at 6zN7c&FIdl2+p%GZlRJ?=lE0EGkgIq_u5?iF1=dPV4)5qcbYo40GRC<ra<K
+MMyAN`4axZc}@;>s;B_i)6h9RbcZ|oM09EN!D#pi2fAMW<v$97GJIs!Qx@?)IvL23=^Yd?HK##_XD#C
+pV<#Jc1g at k2XhALJYbf)B=T_3G6U=f;L1hk=Wo*6HSKnNJeC6StE$kUKR7mPr~b|7uxXLN4v??J^!@j
+R?3JV~M_`#^Svfk}~dZEE$ivx!ISIpYRLPZh^_Men9zB+R3IIYiOWP%99-G2SG`HRE<Bnhpk6X8Os$b
+R!Es*ry0w?ydJSmZC at tWe;%&?hV|yFQLcYkU4QoMSsAOT^*GpVVlKu5d+O$e_xN(R{&T(>f3+rwzVMU
+K#~+a=&^LBj`2KC~>#@`DO+Uy2tcZKUXH!q&TJmgs_r;4BCtXWxniJ1Y6NmP&b7<2X>YO>w at p=9~OPi
+y4JZW;bCw5$$#g6Cl6Z@?_q_K}VI|s1a+QS;Vp7V*l)*jKkUfVjc)7ot3Opn}W?K94q9=Xff94*Tq4h
+JgNS2TF)D=VtP*_oR|RgZ;B$^w=C at Pf)<NvJwpy<yXWlIqIG{Nc(+>lS5tD*aW#4S}%wg~9C1MUQ$jb
+3XT3k0)zWXmeQp7U5m?w%EQ-Tp13OYz_rCH8`Kee?o!U&4Nnc*`iReE?5yL4TQ(PbbtLsy||PgKKy2&
+E>PjA;BR)OKU`Q<SG_S1%Jggw=9lo}dD)p8{1xFqW=__^DK4HMzHn;lSqmrenzeBJrp4#1g-V_|MfpY
+fOP3ZdUshb~ym|2XfA^W+X{M;1jC4oNM|vUyk-<o at zD}=?x5f{|yW-vPo_K$JFg_Nan at CU0ODstgB#I
+MdiTXrq;y|J+(Vgf?Xr5W@`KWn1yd53Uu4ppa9X%iIiS|bOqXW^w=t$RCS52%w)*Ne%wZ#s^I$~Y1WU
+M=OKGqZKjrGR{VuP`f*jP+6<{D{6y5TYA8D3+Fk!KVbMMkl)&L}f#jC!NlXf at i514f6@Wh9Mm<Gj&t3
+>bsPh%shp=3Fz)OgBB|Jkx6~G4sp<v&bwq*O_HzjahFto2_P>dBE&2yUe87ZJsxK%wDtK954sX5p&Gc
+;&bC^@$|SSK2O|tx47rAc)GaL8gZx1;$GVln%uyW-?Q)S?2YsbIgLd$eXgFSr|TYlp6=C`=y`g9j`Yg
+(8ogd`)?4*9eX8i?L3_~t|Lwm}O9KQH0000800{-FNMF>TsSPCn0Lz#F02}}S0B~t=FJE?LZe(wAFJx
+(RbZlv2FL!8VWo#~RdF?&@ciT3Szw57H>&+t-OUy at ey?uV`?m3Cm`ZlrsY^U8_$7Lu9vKdPxA4yqJcK
+3h3`2awG1SQ#R_x9c`UmHslFc=Jg!F*w`;|(7Vy>T{4((65MQB8-x$2Yy5-j4Sw%U4BmeN%bCtG at UA>
+9cQ!@Xxp2k4YM at yz}@|l7~?2Z88>VDJEW(dDV^ZPFK}UmU`#ev|7f6 at ZMyLbP`tyyn_#- at M35$t%_u{
+s51C=T?jE3X@#)Ph49`Uy*fNTKMbqSl^3TI at 72li#o5uz_ZKH;=lBxJ^`=EO_o8UJs1}8YA}^WeSy2J
+}1iB)kSyG82o|V0x{9zQA;@cPM8<rWD>KouDs$?$o_oS>ARWd6>{Fj>&^EjEQR_3BC<7*M&FVQra>6$
+ljc{58!>MQ(FA3v2 at sy@%M>uaF4`kHA(@~lig=W%tTUKAQ~c|*9UZ!2A=67$?d;Y-3_8SPM^97T7cC}
+9YqXyCnu4g#8opT{D{VUcCW*&G`8>Na4Mrpfid`)iWF0hj}CS_0jGb^~bka}`yq9A73gAhv`7w2YC~3
+d&JhR`F~mCfFv8c-`JyR56xUW#7r~1Ml78#lh=?i-YLR(c8o0gLj9r2GT&44iKf29EKSt(Ew)@^stJM
+d;{;*`HyEJhPg%`e=2Y~z{hxeBL+RM{fzOKNt72E0IXI6?^;w5y^OFo0~m>T5{b{)aycNPPm-c9(UPQ
+9m>p-uJf0<A#N<c*Vc at +_%SDbq>UW1lkrllj&IMQz`)X2z(C}M&7erAS&tY!&dp*Jg3LR&uKy-J!F(3
+rMyycBZy;O*an7~}0;tY(dst9282A-d<@|7O=B%Nk{e~-F<^zJk|Jv)4J^k;zT=ege#GpG%<!h9B2Q|
+Lhm0|%X5Ce=;ge~Ry7cim4bM_q3pei_da-&G at _)=J^}Z4AHlemp#j&fmY`S9%(TG$iyfx{HgzH at cQ)l
+dSUlNPsk}yc)nB5i2j^>v_Bfzri$tI at GY$ivOs5RQlc{>V-+L%f07Uz0<!yVItJZ_jZk%J;0uSGP+?E
+=pCHB`T>5oc?$JK5i972g at 7+(5%@zNMlJG<H=%q3kX|0GrN{XRlwcxYQRJNP*BZugPON#ThLS;IDczn
+fGN94u8$&e_Q!j!wmE4Ia9wmVUf=`ZZ0H{l>GcX8nrHk+s>A?MT6}>)u`Tl#~fT`hzah{8G68IB9XDe
+_&9bNnoo&M$B!P~bduhzqyZwnJpe1ClO>g4rdbbj>LL%)xc{KY!Z3j=f^V53Ss-w!`!Ng7bWzA*+CT_
+v?==G$IR at xtir5GoXc_%-mrpzwXa7yR+`59$27%b$l=yZzn}zuu+aeVFXxo5%fLK(9u|tNtIkSibu1!
+*Um12OmQI(0?o;j1v4weu)eG!iBKJhj4i_`&|zjNA?&VeSds%cKGVx{LuS5eup{m^5pywCN3cjU(b(D
+j(<Jmw`uwOhr^c#$KSUa9TonE^6}1Bmp^|fKBQNVVW3pe*Rb^*y>-?2IiNbh*OxzkeYN}b-#?u1_WK{
+o-5`A2|D6Hh^e-1boE$^-k-zg5uO`3o<4 at MFOP^SGR)(d>iFH1ajI+ujk_m8si07k8>}7jiW-Li}0lk
+_T<NyHzHG1P&T$bKD5XWFU46 at NDF|PW?+6Io7R8bU^Vm37v4So$_Z$n87_8Vv&n)};7?B7A2kgqkocr
+qbS0}nT4+{^|Zhz%es0(ULfHgKtGTmj6wPP at r)k)!w)7;tL at 3NZ(E- at w6Wx2}YYwS`2OXL+Ej=~}?Ez
+1x9z=Ow8D!Da+7oVWP9#&fSFb>RBeKVRNn)o4$XbP~<8$zrB(pDt!IrXQlSk79t)4QNaiSkq=9%Ehdb
+9j!^Ar&6mNw$kKZ{9}#kEQ>o(U4tKNv0SAS!@9(!s(G~rWwQa?|JM_~h!c=ck4RP{DGWGu8jofI^%ta
+lJ*qU;EEwp1xlx9R6B02dD=3wWgL=s7LDqe70STiB0f+*$nZ_XDqjp#YBP_}sv>X-?p7opbm<hGXc;9
+)?97IrU=JEIzbs21wDqKFj>KgUvCd+Q2oZ=ugPx%QKjLlKL{`zbB`-%zxX-A7>HX*SjVWq$$>6xmc5+
+O=2I6XY|UOfNLeyBmv2U?Fx+5-fFXS&a*az(c|YQQ(koA~*EeCyZq(_(3)st6<=tsoeg<T~Ad18O3C2
+H?qb#ovs%t9pUY5r9fSu!q?br`(BjEWAYtay#g>!5#cI>FY*9ClHzq*f0(<{Av7flPzYGh>?L3{J}0m
+bi5;_0k%%-r+mflFG*s(vVR02f+VyQ`tCP>E5<kUW1Oy<zk#AdD{CKjD3FTA%Sm9#Osd0PQWDd!XB)w
+g0Q|{fK41Cm-|M0EpN7vI1tQ&u<kaf>8n!S;CT7bX;XJO!H-W0$S~m0cN<l3E0L{beB7 at B)8N-_M`>k
+STH%W2u)44%O_3U_Of at V%7$W}7T#_`Nk-G|LOCVkcozNQklaF_a5wd5Y5$Uf{s&6qV at d6YWP+mhC9dg
+CJ}OTE;1+TgYoGQ)Dy9v>VpL&#k_Rx~oK?K#E_A7=ASQ%B$*rL;~xLJruw at 2uVN_zIgn?@>Y9!aD3EG
+2HmI*A@{e9+mhvkiT?{ra45;(IE_e)tTEl1Ap;+Q(TM7fsTC@>b<Q4UFKyHaI#GWW^i01F6<gq<-e5i
+$B at IAuuXZ`WalsSrY85wxSsj6z2PDU{V~ZFrH9G{@W&K%L?<xRKTX=%6UXHHL$pI!W!LaQ_lBXU4isR
+Wv>uC^hD>L>2)r{2FkKrZ;ALH8$CE6|8+vGl at FFiRflixPUp?2%sn at oZv~=u8<q*v|L-il(skl}HJ<|
+sY_&^iKX%=)pM56)HX5evGJ0_6$4BV$|P9I#}#)7ZOrg^8ubX)yX6_XN+kb=^QK^0%O+DDm|2Vcp_^v
+#|#SO^DS6 at kxfHb#YT0_alk#m((jiGX#|q?|;%VSUxuD+95Mf(^F0Jr&8QDyKe8kLJ`cXPY7C0OyDRH
+dhPLo;M_mD%4gWb>U@!HXtm^o(2?~3bIFou7NHVW7g7=kQVl!R+Rn1 at 8df8GPMcHqOdld%f*4lD*Kn<
+%hYCt%R4A+m$~#w_#R4=w8<1(It3Eakie@&4(MJcX%!@Wng}#kmUmYznaZm92PwNdCKE}2%JOgT%5GV
+MYP4MiW|68`wd<+wo13V1z3 at y@qYZLQ+TKxU$i7TNn67Eif=0tOn!4A)a*CtC(<2y7+pzJ`TBY)ckPr
+mg)&8<kLy%nK{Yk7ylkHM=e~f1fA$46P|Ikzb{wK!q0*X8;QGDM*81m;yi5d?{KWU3QH7x{=naR4?7j
+s4bGZy8&hTZ?^hr`3S&1HJOF{iQaWB{$vmtIAb*qZ*uz#Ml;Xp-k-$^HgLiv9Xkndm*4mSua|#H>0d5
+_D<|y^YEnF^bb`Ig7Bi(J53RYNM~zAgGKfWHmGfLB at l5h(>#RNMu{wOcYNmQK<IOr-LkX4{BX;flK(f
+XUn)d-YN7$6nAJcSizomy+BVlh(8F6gu?_)DLHgn*jgXpIr5c(n08ohIGklmw7s;~x-1ZJC4&;u=)46
+>-2kGcUbn2~lH?N3Hu^Qtq$G2=hcc~HR?47%Ied1t1;)C%?;1Ira(0(?sfJZnZKSfwu4A;<NY~>+PK6
+L{hr!7IP&AZ~*|b?A^;?tyFn{o#qCyIvzJogLt^z)D>MGRVf-<Op;;bAOdjN9Rdwzw!1;h{PyLYF$g`
+(L;cRP)WzKgaE-^eakU`n?b8@{vl547<a>wQog{T!z7+92pON166Q;zs&~F4htnun6r<fDC!pWt at kBN
+Ijl%OFpPL+(9 at t<}TBO5hXy7y?Az=6~Joe%G}^+PxDsBlDQo)@M}?4fuk5l!i0-rR>o5ijlO*$Qrx5h
+F3}GQ4AjVBn(q4mhvGc~KQ6~f($=*!K7$s&USiNiR6zYgxq<jgsXoY94MfNoLRknsT0o#ce(eJ*oyWI
+=Vu$h-Nt`86Dlyh(j&iAVhy`j-E5wZKDeWfv%_f!OHb9RVDwn>a3^p1xHbNa at VzxpXArZl$S{2z6S-J
+$;UQ=8z<UiRmfdBh$(w368xWx~EWFrz^P`N_KF(OhriF;WyR}`DLx*<>DM_r<O0oY5(c9O+F#~iz9Vb
+hS2kbWdnA<>Hw%MT9bCmG2!L@}zdP4i at DA#h*DaVSB9c!w<k;8P}FOvwjI;+r6EdS>j2fj#2J1_Yrm2
+Sv?3OOUF`>Yp9HIyrl7EFVJ8S|NIE<Z2WRBa3rpHziiph;5wFbhkQ at _l@a9CXnb0tof$5wrd)7iGNF2
+H8KD#{Oi#vhy`!n9$Xy0b_#{tP7!=KObWQsXmK6*KNVR;8cUUt-jcF1;}h}XyscDyk;D$<?{?RXZewg
+$d|gWakmYu2ZZ!@oAXi|!A3L;AY|F(snI^!}Wdmp|T$C&j)<0siHGMIvYl0%-JW0{Jgn}X)tf%yu8tO
+D6A}sgrN59lwdLnHyx)m$MZaJ7QFoFrN4-)ghNAEaPK<0?yOZc(h at 0%_|^gT+5`*op)zqX7J5H8p$`r
+8^JgP6v!lSJB?#X(kA&O*|ub at 1}2<9F%U!Z570F60`es#t8osNr67Ak_4-xp0!sHk&D^HgKenEn%D+y
+a9?^STtA(w_4YM??w&FVr!bijSBF>tWlda<s9K%fhNKw53qsx1J!quvkmnfzB)Dct<-!s*W;Z||F+}3
+NebfL)nW=8=}m&x%Th-T0FM|-k9fTrDc}PpG!zJYLK3F`4QcZwek{izFI8nT&J1Hfpq2#P!PqbmI!PC
+{^F~^Tnb<_>2He^N3{+tYu-iIYWLbq<R#6UWjs&%r@$9y%o~k=VA2-)>7a~+~PnJ=^_RhpjPt(5J#)V
+H|?wLwZ%b62**IKh1stGkf%7d7huW5Y!=GawB4l43CHSEODag=kkAjn9|P<$563DJDEmVKJfI$5ZrEc
+2Fz38gI-tw(XWJ&J0><tB{vcbqL-tFO8823}U(ka;9dal13BE1`-()H|SDGR&x2l5I1Z=^;x4Mjor+(
+BrRd66}D^N1Jn%<=#x(fh3TnGnj^Dd?#vDux;2CMcc=}Lo=zoO+X^5s9c&Yoy$4_#A$VkbTP*Wc!B=n
+vSYqYQge|`90qOKze#G&;F`^@na2i&9jm{qEvgChL8LE}wp&;|BbeZ~ZIe$~3VBRJ%GWin2vUrztXP2
+}4#E|v(gRwYQ#^#?_bgx=x!exAY|&unWsAy7#plW^7fD5tVl#om3j6g~Pal^FM$;WQVNG2iFI2?M1O5
+VmJ1Fej9q?%>8=Bj;iWY0tV#RIS_1yfiFqH=;5v*uE7NK`gmM|shEYL`JQ<&+XR)!)(bWy^@Z5)=oNV
+CQDO}&1Zg!@J*tv}gHW#@Pyty8tz21*+O3LhPxUmU!Bdw7Ol&VM*KJEYgrz~3f(_m)=AIOn#um73<Rx
+mi)er{(**v>@5uygl#HBz!a>Nz9I)L(>WApXS at X?Ev?`7bzdD*`vV)#wr6L&67lSl{1)w!=rL|%1XkX
+tRO|}y6}}XpiQ5!b|#~6y3Y5h<LocuYiw&+OP(zceNFOpYP!?sQ}2Gx%};G~Xq07uHkSSSs__zuduj3
+b$gMT5V0S?Ymlr^2{C-LTF_0JbR!~3be*(>trZ>dZbA#$8>PKX5D`6<o(g<a287|5oXxoqaU6!aOwkW
+`?>flh^J-@*AM<>|yi2V{rRUIQk297S%M$@jT%GH(v8MA8J3Xnw5$H$Lvm*`dKj2q=}S7jfN$0Qqufz
+Uew*%IM+A3wq$SbiTr!s4mBqRJ0YJm5%C<gu|g2Iv^TJdh&QGJ)3Mmoc5Z<7r$iYjYks?{Owfl5t!q`
+vN1UnFJadfKiv~6er3ix|jx~kG_$hMgun>69mn%1mk>QdW;K^$LV;bipg3=7}N!}H3o5SgaNg at e<ZM#
+u$ctO0ceuJhmGg>Rw&E40mq;r%)kf*FruP&0b2cl1Tw-v8Zw?p1BKjwpr3})DNimAbl0WM2a}COe|AU
+E&$R%e*|P}@w<TOPl}N*$(P^P3+#P!8nO=JoQoZ-ld35rl5qF#d%Jua4_%V~jaCMw)WH>j*csR3iH2m
+=+ipU>7+E%4nlrC0Lu|P?ZCVeQs*SwNuEd0z%fvpPs(%`5HwMIGh8un!l!0!DztN&lhE}?@4HpL#aLR
+yR+$=X{sLTc at 3(m%1Wo;Fz5EpHLhw9!7?71LzKRyexI(G^RF+G&T=G^1mf>f1$C5VX6x*gq#WDzK`4w
+eJ$lh`;bkau9&t2kmMD3#)#w*|P3tLu&KMOUy=4haKKF1ZsQmHlF%cU1=M>vT>_jRK^iA>Z&<QjEUSC
+Z>4;5d=fk;alX#?M^mc6bGO_2r9E`r#qdFq4vLx<@a7{sbeUgqS-ZP5$@A&w_HwL^S<R?zTBy!C#u9G
+S;Vo-pOUkIl04xaF0h@|ty$gYkpiMQ>Hw&Tz?Gb)CXaGQuC<vAdI{uJUtwod}In8tZf!t>H<=^(Y%kq
+#33^j49<A%x%8$x-a$Y!%qJievV0`i=^31c*dinu-Fp|c6-+Yw8*qg6#3Aj5l|E%1O?Dy~6Zx)UI*z0
+K~#Z1t55ECWs`71_%xs)$pGnJMl6=&o+iggn_qb)p`Wc%mXvq`l7capSYhid$YuD)~b=zn$RchAj~2A
+S$ndeO92k#ASEdK{`pRKOWeOX7M5&!-$fsCC^5|u$fjkt|zm6yp`n*ft2JooFK4vtV%37l-Z&f3%PH~
+zBr08+On8sy~D>D*omb4LP8j<T;LS=k-S<R<`vKZ<W5Mn+~-`>1M?>-)wB;}RU;9`8Y9^vs#}tuoMpS
+?YdWCl at Qh|qvH9$foQY at 6Voa7os|M(v`V|fqP>ScLI{=<-k}yZS3Dp=cibA9nNO1gplA$QhS|jn>#;P
+``r|~z8j8CMN`f1s6pO{al9Sk4j)ccyt>Q>wgnXI_W%jZ{YYpsf)9{Pw}`nU^ok#2mt0(dB at V4jo|1V
+_{HUZ;!j at mWaK-RLydB9712;K)%qEZ*<S(n^NeZ_6;|W9_sGk9ASa>XBxt(MHciG^m3%+MyZ)&kiPW^
+j_A6v7#QXN2_bNB#>V=VED*E(?ixZW?KEB7y!K<j1(P#+S><OGUzf6<73A~DDZpaM96VXKEkbh!(_r|
+?FviENbXSkUf at K#mM+%&lju?YG8aQ&zgag0ovmw1brUM0XpRCi`JjwpfZ-MK1jzKf8+W;}H<eJ9WC`$
+<oq{On^gXU;@*rf1IA!mT<r53nt%iDQK-;%NgBqBc-v+nj+NrRH7|P;jk)fV?os5i3_G*T8qxN8?B&9
+?Yt|Ha}g3)xKda-fLwaIm31uZ6mJOlzK8d)TVQBgZ=0kX}T9TZXa7CKtEfz at mB5N#x$hD&)9h49&$b*
+l$f6et3}fQy?Q)_}g+mo(dqF+SUJ_6Kow_4pv>l2Y*S4MKzBjbh_e!r=cgjlC>tvdDb3DYC#R9XB8JT
+<)vYf$C1AlHF`XPd&{g0wC8{lEKk>q&8!TiwXtJYxGkra-t02I%HfqtKc+FX65DsoIBoVLD~1vevY&S
+CG#fEOERL+0tL;b?Urvoa?h1E>A-*KLPt#edz>ic2Z%#C$M#W=eaPlP2jUb@#u#Thy=?L0_1qXA)W}>
+0SE;GFoy at xOugs(sG93Z|J`*%`nH}dHed8Q<Xql6?2j9dG5h=9+9RCg0(L#0!RPYFdn(?AS7Y!!M5jv
++qxy9~7$!I2Kl~x@?vUF3qOH5=R0LqD|V0Y+`Xx4VA;P`aU#~n|4kcIM=xQ7t5(}FyJXrsti*jR|kG7
+S?>DMam3GQBD`9CQg`xCX53k^yr2<X9tL7V!x$5aD&G&OLU(f(<+NX5u;?uh`~}9?cB1yvSuwtYl(xC
+bxj55$YfyJ`M9RC!(T61q~B)mjq=4*!TQr;nR*2KHR<cuxZNPS#kc&2h)+QF)@l1Hkv4hw^fOWSvw{W
+J{xx=i*ty)+vMNIQHm~RicYsLz<i8>Y1o;Yj}`t2%(TpA0_~&Mi)7P2jL$85haw#=_z0nGBNb5wG49@
+W(va%YrH?L==#gp+4bPL!9W^_ASGRq6dlizBU3S^gTu;f}-jhDJyD%@rGy%2tE-V*Q__T$hC?6ojT{x
+Y!!a+8punRcIC=>}{YXFnWyHF*d>#lV_d8R2jyw_>RaPF!VDOK(J<)xYH+_}IvfoY-&p%~yjLFsVj2S
+_0ITjpCj`C2eGI{liDvDk5Mp-gS){bTQQoy2bq15*zk)s)cgw<yVT${$r+KN`?O^>R(yzv?Xe at AH#m&
+zdgxn;y-{wSKy6MJ~xy6^m?9inv+LdH?p0Zc+hLUJnMj_IeP6vW*ZhL<8`8@=H^g;p*hpZO_^|2+{&z
+2l>}vw_w8UtPej@&Iid_C|DYscz`bJ>oBAZy>Q6abssiwxH7?JV<bY*!slD<L)u^on-Kgfw;=?(d5w1
+n`wVis>YD}sO;cd&35Smi{lPt+<dQx1g>K&OO<Ef*Zck@?ehIA!iFNcIsLpK<>w&~?g@!7NrVeXdryn
+`PwSv5(tsRd}40{}p>_$hPU!p`G9HuC%N>|)XoL*z>X373mD(J>g%+?2NxC-j%j85DxeHky(Ja%D~^f
+>vs3>qzOK!KY?nEQ(cHIR{%PXE4oU^V33GqGia+CXx4Id%@EL{x|WQK(R<><Q&S6Nuzl|LWdmp3bi7#
+4e>hjIHgzGpD`zNHIXvMp4-%(@5pYm#3mCWZ;Cu6inMo&#sdKWQXj>_f~|(yefoHHYDQ!ZbZAo3QZD}
+yr!9@=6aTm;u+u1pkLw+O*bMq&$zOBn^K?#dUz?mHS^-TESYdjDQxJe_dNW(N2UcC$guPL>9ZG4Z7rT
+|vS=^``(}usKOir%Pkk8D4}O31oG|VgxZL}u5g4Yfd!YL&0!mh(f0vVl31XA6mSg|VB}}U$8 at jCxhkw
+2}JjOh(=VplhJu<E76c|SCgL_6QI`x}-8$Gv50%j#Ax3m_wp-IjeP7m5#Rqi^>!jN`YNNVU&MFe*wK5
+sP_xz-26;#*S~;#$w2E#=l=*N7fa1?2-gJZ4sK+t%<DopgZGi6=X2`(`<3!tSkh7v;q;w$qo}Sbu)h?
+6u4giH&TKwE*WL9#=BTty@)GtDX}@&{&Aq9dWNP6*0FDAEP<lgS2gRb#YRtKVWPvegLTRJkVt~=sSFV
+ at C*45DOH)G<9bs9xw*Sg2_92i4}RSOg_^ns)bHxft{YETcRkgibF!T3+`!v3ckz*V+SREap2{>__e=z
+cVq$X>X{PK+%82iPN=CD_S#Mv<)D&cwSI1fsPH at Y$<)ITiXRt`gU=BMTtTlJe3W<-SeG9oc=ADlph#Q
+|81xXngvj*giR$c-MzCKg74n0z-cGSUKZ&)Aon7{{gEnK{OT_a45$n!!xey!~Cj(u6>f8KhZwldpMAS
+?L~EK)Xj%e=(IXzX3U1S(joJ#;`b7L7vOvh|55Yj(Qb?*P9Ot9lGKAO+3O<KmVFjPiV|n!gwyO?G)3M
+f*Ir?Jxsu;u#-RlbIZR<315x(RncikGw-LUa0|>T8neL?a0!n>ViZMb2 at nH!iK81E;wllimej~T{oJ@
+pZN+1l`aGC=@1xu<vb9tP}N0LUkON?=h5pBZ;h!1G3UK5i?m)_zvXJu0FC}`F;|R?A6w27J)rW&8uw^
+6W-gP<y0NA`23%+pSj2cMaC!zjWb`E#a`g3R@*Nld3M$LL&wc&-+}A(h+}DnGaq{{^ADyN7pRhgb|Mg
+L*`yAic`sl_3k8NyoWTRWxddN`?K-3RI%Ji$NyP<alJti`<H-%*&oclTUXaTB3qejSh3&?{Hl>8cpNg
+jTXq%*F0>jNae{P4(cbZ}(zp^*&-Mjm)r<U!$nTSXc_{D8=P4u|}v2Sc2PLP&h&D+^gOoM#jCrWUN#<
+2EdlPi{ym at t%N?hK&=Ol8R at B!i%Rd$w!}zy=A-#Y0av}<Y7Gx%*rAm69sVkBu?NkMzX|3oxpsLwB}o}
+vU4WLq#8r!K+?5CH at -n>jv?Z_Bcn2#Eh=UmY#89urodA)ddFXYW0ZN8PUy}xnZ5*@ON7oJL8+do!?g^
+iI*w6*g`j8%=|5{yP^GabJqm22R1^a|8d*!1VyT<tn}1NQRj=?$1(+|Q4z3J2y9J0gH`#=ebJVJUv^!
+y=P(LZ!xagcAF&+2J3LFRJKO4}fX>gS>#yV|9O4&v!=>@wA1B!jl$`Z8wm7I;nVlsvsTIIlZKJ?33M=
+_l8<3}}HImv{Pn}kx8ilsS{Y=BXxA2^P4IOHU6%LJ{cSSc%#Yjh*kHPEl+&YIDf$d-i$cl=6qt0v)qv
+)Ygerjd6<jtm3giB{s~&HT_Lsw&f!Bts at Fm!chsz|kC2^=KEe&5UZ{Q6{i!1&MNQR^TO1q!zQ4zJO0V
+|0JT)W`=bOr+ at l>cy#>cgt9itW?UfGf|DIl1={&5?SAVkPO!p0S$&ma){uocU5UzWfF*6h^N4HOTO}K
+0SCeDggT;4LvT>_>(9$0 at nY?|4D5v~)UdxB`6m$M}h>#jZ7 at 6H?6vF5r3qIX)sJ at mPb&`^G63PIjT#t
+#j>pj~uFGK6{_v6i=!)I3*Qu%BPgjLw5a&ad2 at sroLiGhe^s#1KTsnhap<j$Al(_sj=%{8w$nvIc%wU
+W|Fj#+|d at bEU$;fohf`<wQDUrpynn5Wk{EfO_99j3tf#Jvt21&s^%B)E3}IEs{$8nBZ|Ny!@+hHOG+%
+2sF$B*cCG)2?C at R1#lL2TF$hsGwBc26Z;f2E8f$uiAs|<-)$ViA7apb31J9=m6zg12{~=VJz9+wxVc;
+JlGxj{qJlE9f%uM_swB_V19z_6?=Ss8|5CKP6gjp*zi|=;oN>YcE?p*Zu;&6WA{1`tmTGU50}zJGjYn
+9n2Y&H-lC+oTdRzcDC?X^c+2$$0j<%>8&U-%Ed;0)uP~LLDHGal%C~f*lq_JhqLsSl=Af#%a?qY<D4?
+Rk!z#-JGc^jCV^!WfP>bg+0Mg15Spv~L=^(LefFcbeXugC+(<FSyYTxk=CKC*<mfNp=BPjF^ZA^F(Hu
+t;Z417cGb9T4gn;q{ps4Np<XquXa-gV|`3 at r;%>v2b(sb at N&v(b{yMv|VAlJxNTmwlh^CB1j}AU+&dv
+(GDf$OITZ3=|q1)-G*W)8koIieTz6xODSiXLyey-x}`U#s7{0SX^g!R%}c|bONjg!A|)qD|N~X>S<mj
+K-;5QD=K!VU9BrAw&sXy78zG-r&Mi~bYx<+7<FfgQwu<y8dcJ2W3{bUfeih`BfaEx(G9fSkW#r*Ot9B
+OeXfp3i0B$yIcby;?2PNQbN#CHrt2aaEJ!LFDJn`o9-c+#@87&R`ZFs+^Y~MS@?ZU4`8QB}nkQ*S*XS
+0=p8_MOlMZrUg1$8Lo(<$b=B=kX1FA}5EH$1>YLH_}33~rZWkZ1;8W%T_Do2cDfX31Yu}J1Q*-81meO
+?dmmZsNc;uIe*4r$uUu^ok$s#3eap7)_weT|TL9~Lxm at bU=Fu6+AR4VFsQ!3t2yfS at Rl)<=-dNKGyX1
+IuaE>Wf^kN9Z at 7#T5`^P6uBnaj{Iy+wJCL*_XEx`oV|gZa)e>OpJfw&F`RJ2-kA{H?AsV`Bjb%jm$t@
+eqG;LXiEY#Iq)W}N)Dy{Gor+OLO88EK2$Dj5dFUS{kL at EPCj<|HY6ZT$7$R=h}#Jb{(S!Zx6!vRwuJl
+5I=}!B0NocP7Tk>N_8`$@JG%!+_{3Fel5j`1Xls!sxQ^pyd&?X2i1GM;x9_s>5c43{0^lUUc5qR7d|3
+TQnyYIv5|mDzro?55b9~PuKb#C_B3o?dUd*db^8$ypfVwzDlMwy3<GstuN?C))!1uC6p#to+K!!{LB}
+cjeTv0<_HjW&jCWLvxI3r^dsSzEim}qeH?ld|*I|Od64Gtyn?S9|R2`_PG2{6qFu_xT%L?B3!j#mRZ>
+R&@Ne$vP%12YkJeJO`(+q!{oYm^aP=8Eta?~1aclM>{3PajMWNsnd&k|sb6vkp>5jm2-%e?MROzeUe2
+xE+1w`Xo-2qEZ)O_IkZnC+|)VE{<NlJ&Z06zCY&^rM6IlvdXOay2lcX9fT>p5c+;ONfey{OIu51L5f2
+$FWn>6WS`%2p*{~*Om}X0N#&!v&a%tsos|3 at szLV!aq at DwMyK^4x36iiZ)iv;luO^nCvP&Nh0bf6U*i
+|G`i-~n%{8E|c=!5N7(0&ne*jQR0|XQR000O82?eW2BkyPY!vFvP5&-}JDF6TfaA|NaUv_0~WN&gWWN
+CABY-wUIUt(cnYjAIJbT40DX>MtBUtcb8c_oj*P6IIvMDO{EQO*zqz3~S<An^w%n|Qm1tW(7f)&4y$z
+0Hg~qvsgoN3XMyqVy|M#X9<q&%?GZI6*B-&7-36GV);3C#-#d#b`)wm`do<jugUKD*tkwo|cwXebdWW
+rxfEZ?gn{zdd7nKmcEu;ey)93+F45i&b}&@YM7cY1Xfr_Znu0Wc)wr5HkOOR3+m!QdrGelVOuur|Np$
+Zp|DJD_RR94R{aC?<(rBrZrmCcy3;$%`k+c7#u)wpP)h>@6aWAK2mlEMt4ObkFJ;aF007Ga001Qb003
+}la4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mZE163E^v8$Q^9WAFbuuxD~JSzoh>o8o`wQBtU(3 at 7}
+B9hPs1R{GM#8sBtxRN`0pp#QR}AIbP-MRJv~0jQ&_xPfV7n|hdXGgUVMrfHf2*-*`{;qa3siAGr0Zm@
+fP++gl`=kt%04b>5p&-Uu<hCLCTsUfOd%Rb+cM;ck6=A1j1CXdf4tCH}_BbhsRw^hCVi#OzwsJ)mTR!
+YU at CmO8r(<D>O(gyhq<->(<D~?Tdh5Or0VEtWS~eJY$>-tvQD!e9xqiN947$C+=<QBxZ96Nv%bx`?&U
+K!oZmQV2qLL?ihp>0T4Lh!uy7X;aOrsu<7e-=d2r$71nRN^QPmq(l`(0vOO$0?|05;11K&G_AG~bKWZ
+j32u5T!dv0+^tut^TgZB|LR-NVwJSj{%x8j5&mHm9uYK?=PY0g!Gjb<4#xh;Q=)Lx`0uZ$;QWM7{@<7
+cnTyjUD$Szn~Dr0g at 1Q)NqdWn${f<E$pgADyo1 at yV%S4rNE^M|~rusp-XU{Vx_z?*AOcMOk=l#Q`a%L
+r8e)^WopgXS2~c9<SJh@(BB`8Ai at 0cy7Wy4C>>Z2LW?1mf*%u;N}(fdQo6`aj4)t?%`drzfem91QY-O
+00;mH1*=FjsnN<v8~^|^WB>ps0001RX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFLP*hbZKlZaCy}
+{Yi}FLk>B+zIur~JH}u5T9Ts<9=njt8MvNqD!;kD<1c4foO=_ay3^NbQ^xppWt7kuEhLY9^aELzGB&W
+N&s=D4?J*VdJH;>J#TIc2Vnd#ci<Nv^4PEJow&5LS(sPpZ0Ymyf;bN1xvnfY*S&D%qJU6tm2wP|m&+L
+~8YSFW=*ugVlAy|>o<>Gg}3KfHgLwx3&*m230j%?}^mz5e~j4{zSR#~)$b$z(G5*ycsv9?YgIS2(>fo
+2mv}_6I<QCT8{OI{$><HhEzi`fZ)pcGXt(!L+rtO?q<j(@#GUVjj-51-#Z(Ic*7?Y2j&Yo2si<78kiO
+uuuiR)@Enh46x4(ko4zl1>gX)laqY6uj<xRjecql{$rc9C!4z3!Q*tFwbw=-WXlG>>bOn0%i5Lux~hu
+8GJ^V(t?RO4P^kiGvl at v#Ice*|vl9b<@?iPpjJ_^@|JSp{`;TwmzIpfI<@e^?e5gBnVn46!zBR9D?8~
+~Y>SyDlUu8uTLZ{XDw`*NyYuo*8neC23)BynNhpHTa+SdC3)V96{6b*2o7K^MX77O@(F~OZfPE^akP3
+FdZ)z7<X?LOm<=x6=^Y%- at c<d1$siNWW)>J$B6 at AMZ!3O~Hx+f|+wuV5wlErRm$vt7BdyX?j;SVjp5k
+fUE0AZ4)oO>cT_w|Udrx;G3bcjeKC5eQtQEBD#z#;*|ojvn=<221pY;WPRnpeEmzRc#j_(J-NGCYL8C
+t0HR}L-Z#v%TIY-l{;JVj?Q>X_b@^S_IY`14rtuFEN|@E++N!f^qLGnTY(Cj%-rOl_0`5yds~y4F^Ns
+LsTztIOv+cFgAKtdD^SpGkAep9U~py{MuTjK%*_l)9X#LXdpjeA7t(ZlABbuOSnPIamR40)tZDV7H5R
+~huzmpfoz2$23UVpd&ze<M3fvliL@;qT>w~~0B?JB(Lsd8b5U}z#2lIvI(V1GBixja$;7;ho98B;g%Z
+r9^@Ou9v>`-;v5E`oMKLCFNO%I1SZC~4s3A8-fH1%q3HtVLHo5Ggc_WJzkx8FQ{a`x|@B(mpZu*urs)
+W=1BV+{ZR>uL}Niq7x>fJM9!4oD1$!qaC?JC at xBu)?`1@;KquXYP5v;jQg9&q9qdOBj9Qe!(Tu+d6M;
+0wZTk;GzLeAT|k62SbFIQ}j1^*;dW<+<Ywa&*_OQb)7Y!baf)`Wp1VlV><KeJND~eZQHIc)hVUJb=_#
+$qc`t^9qK_5H^GQLFA8y&`yy-6Xf)5v>e{Yu$YtY72G>NTVk!iRl8}Na*{!n1x*x<>B672tIX{nZxOW
+y(Gn>T{)aNg3_KR3pL^J|H$nV%6A_Emj4Bq7GQFBF_!5<*RK*b^A$uXHn#>1E~?~py4(&VMN&_|bdY+
+=)a7y_~A(2`C0upK)!XkpE+g4rnX1<+i9s-nc&&!D-{Xfn_aENpTg7=}|nUS}B2R9!3k9@^06zk$wbb
+z|EG2(q8 at 6@+1FI*Z@{XOW2X{o?ieSFc~aNkBE4c7a}d7O&{}Jn$FH^1O-cHS!r*!<vlt3(Q%`oS)Xq
+>C9vesj^?jk0RSLz130hHAZIK90ihw1RRqzd}fw;+uR{;Ubg{{)iq2BbvoLAR1NopV4pjl{`t-KFGH5
+PaWI*nGNt^?A+KP^kcYsFpo6S#Dw8-`<_0{)&H^m{Z&PI3W_FCiaRMHKe4jTRE*J6!pwe$lnamg51Q>
+pqje{GodW=!y6NzFJ7*KtEL}CO>%CkFEn%1FVyb`0zTs)%QD4Ms|Jve|@f*P$DQ0 at RoynOTahc_QE!U
+q(=|Mpc20Hrk6{N|h!j?_;%rixx<?zF1N5ij(~WVI)eKzW#@te}{ft!>lhB?lb4?0}I>=JPli80d&v`
+ at DfcNo<kVDq%F at Z&fZjt-mb6U7)RC$8r+tbk7kEwb at gBb}!jIbwSb}|Ep0Sn**l47xgFK=qJyJSCVIg
+`vdwRIz^H?3^YM*HO)$90ty^X4Hy9oA@!{QWV_zjzjwBTv>YP*ZBZ>BH|?RIXo3dO3|a^MEiD2D2h^q
+L*6em0WgP`uee^kgLY6cE8+p`vLBC_NdFf*~P(PWCURwe6bTOQt+Rv>m*NLS2DIf(?5_&dQ05h-a5*j
+tOO(Hn6FmUP<;zg5~tD6Sq<ghF9@}@bbfNd_QonwGKr|}Cdi=2~S&trv`W!71_1u)x13@*qdAfc%n$V
+MQzpb$Lk6=IGEydSjdKz7l9Wd(-V2M$d*T710`3kXvZa4yvfR-0oE#P$#*rIu6%J$VLU4gdp*0Z2_%H
+nKQ?!HBFPI1sETG32ulNLzQ7ShlQ+d}a7yj)H92dvS#b>A`wYSD<>2kB_Lt3EzS4vI at 7j)P}bMN3N<8
+1OyCZ#rSb8YY)oXvN$gfZViIK>!82`t8=?fl`_g;b>foiT0$g+eC3p5Jz_2K&#@Ia2Nnx$&w34$g$U)
+NMK(Jo=cOcp!hR0~^bn_6&d8ZK5QcqSK at 6zd@IO^YRskeD-j8F##`^<|!2LlJc&Iv#?y|DQ-y5JCZA5
+zwoORfwkVdvS{Y-elGjNU|W5#YanDSLjhs#-bAlC(@MnJI&qY+4O4`bMhZHM_fo2(Vs{%l!T+LkToL<
+wrgjECp=R0S2OzXDyo@<wp($`vd{svk6cX))dYlsCC-u(zgj&OFFcT*WYC6A1#ZrV=+ti_8{<;Q_Tc8
+XXJhwlf7v5!)5EM&|K<#deN|zt3?aLM!h`uDy*A!56S9dndXURc5#pYitIT1hxdXC~v&vw?Y7LUX+7H
+mTh-!VRNxag3{x--2>NLV{yinhn7ySMs_?hnMXFBp{hcmQ(`w&u{IDzsH%j$4(rQ>*cz%I<JPJT3hfF
+%Y#bU*YJPt}N0)(VnoFcYTYyN+&9cLSJIm50^3o#ijZaw{*xU>lYfVCB5(@Sp6%YJ*FE&wc83>V!@N<
+nE5E*1LI-uhYm%oSN#&#=8NBfh|V at lcwC}8mwP at t$<X0s7<?i{5H=c2JA7y;;wdlIeEPX<faiq87<tX
+|QyUI^yM at J=3(8XHM2J03Ym7@`mm4O1e^js)xY7{rcNL9ZGOAB at JFTukl|l(1C>Bn)}3gbaZVO9%RQs
+-mEV-ub9p+?cpyvCkuDq68 at u$eA^Q5NBb>9LYF7_&3<f7-1 at M++q!)5T`|&OmRrVrRFo%WUf at 8XQgWA
+_*#Jp(cL)0Nm~pe{^PqHhJO)E9|mdw*o*!8i;ivGsrfM=a8QgPb?QoATc=>8J?w2Wis(Z)a0=E2LS|y
+PEP`bPKCTmI;;06TDTbFy;vo>(T&eR=!HR;cetzw;YuLP)0c<-ol!tFA*xcsg$>ktN at 0agKlXU@??e_
+?7Y`-9bhgmbp3nC*hl9~nUAFC0797RR;zz(y{G<gY7!R_M0^Js8S*7)dGk6lf+!r;zeaiyUQ7S90iXh
+lH$n(|`I=P-|n8Io&EI$n$AXOgn=DW0TyVj6gWCPlyl{7zZXcuupnp!oJ!R`Yrj!$szTH=3)<!BAcN$
+amhB%*m9O-caZ)&JZLZ0P}qf`%`c=nFdRiqfXx>s7jo;F_9n&3#>cf*%uyl<8v~o&NI*1Bj7>joDRF;
++YWyJ&Oy=W(S<mzsMn^K-c!<@({tST?@*dlAPEZ&j at oWt*eKX+4!F at gCYhx}HY!snS0W)5ZsCud!A2>
+JO9O{RlL&55FR^Y1l5bF>dy?*?mF;l6`oqC+&1|5^Lr;#M2g>HsAS|Vd_~B6-N);I0Weyn|q!<mDz-6
+~Jr%%8A_CJTqt6 at kcFZjF=<x6x!&OyUGb~0vEg6gPH8{<D0`HOcpw&&b*AqLq(aujHRxvr`kjpus>kt
+oEJ2rlC0Ncc(Y4C#Pp_9!7vHI5T;N65J8iefCJ^A)B$Vmc{+BNBYHBfw at _1Mhp8At3>nC!vJ7Q<m>vz
+e`4rSHwE%iaiVIY-8Z(21a{84l!2kizg<w^mh@`+Zi=f9?7xIiO^7k_A6z8<{Xm%Ik0s_)IeKL&2!^^
+pP5ftonvi+^Y9I%A=nmF=X<uPEodYMzD0(oyRc3B+QMw9cb!7c*)<r*WW{ZEXs{86Q~9hx?b+=C<+9Z
+pix_>>B^1!WMns3LgCa0}s|hcs$c^3W!6|Ltu+AO2MH~W_gTjDd<pY|ktmH_ms8-zl1w`eI_F**nE-$
+iL^Kv}jHj~|_i8f5cCA%=`C2!(a!cfO05V)*=HV+bM^(BZgR<N3UZQ}|{Iw($(8|>F5eF5z_ictx(p|
+o4Vtq41Cnq2Vbob?lg1$Ev+<O9GkFhmKdO4cM1ti}R!+I-dA$se55)du#dMlqpS7eYq6BaW2Dfs at Jri
+^&@wnBX~uE3)VwMHF&H0znZ+8NzeeY at n&4$|Ux?EUC at TQo~)EraS^nJl5;Y?o+zL+RH6&C{C0b6|R*x
+O=lY}+T}Zl954jorME at ZH1G`h)pPW~^<u$iAZt0+zURQ?z5{;N#viTOQKREhTqQOgpb%M*BPuTiEbh(
+S+Zv0DlC+SA$jSp~bs7!yn>=jC at H*^EasjEs3c_OKoTtYO$(j|+Siquv4d3 at wV*03=_GBCn-5soPYaC
+D)k31G*jAgz(JaPM2EaBO){TmP at 0gxCkZ%T+R?6?8VY;3WiAJTr`MhG at Oa8a^?Qy1*L>}}*uC*0*ygG
+0ucSpi48Qp-8oN_3PJsL$sn?5W{eBFRtKG^090ZF2Q01uN8Gwh{S<pdSI?{?<z%JPZL~yVE at Y5Q7l_;
+<46r7 at pNFg9s?aF2`-YPJ&7ZxhAOu8+bP7+B<%!t8PyrSQ?}RuDMjgdE;Wcet0j~P*d7KwB;P=+`&tH
+tRs^BM|<drwwvT&<{NjSG*%!L6nMzR+2u(eFVB|lI9p27g?s_iUyrec+jswYY$166pKPH<T#%zBq&x}
+Q#sx=_^pOHSjHv)hb3WOA$@i1F0q3%;8hic()Tllz>aK*31G55pcniU!9H)|;$>*ZlZf(D!@B(z1stC
+y*d|1Au!%|+ at u4mZV&7l-kxiCHR$AMkBwp=BcD%Ml+ep7`p<zNMz6jNamcH49uFq at mn5`I0KP{NOh>3
+pJLN<Mu`G)$vYdrUjQK~kNF>E#Xw(JKr&^>9L4QuUOE53H75UbJ)?hC8^gt4|Pot>p|zViXUTpc1t31
+SLF+>DqnQdT!}3ZULLR{hgZM0 at qU*2P8X&?~6{m27sVFV6%r<y|r#9(9Kc(i9RKhbo+%_Hc6LX&Rpw;
+Dpl(-LTr4Cqv{l_zX)NUo1dq+J=15v?Jv_gi?o?ef1%+zbOAU-V*w8sqFNF6?Faou at oE=S+VklpfP#-
+_Q#UYNCmNN~Fv&xx4 at vG_coKkV+d6}2l8&-0M`xIg(BYdqN%rSsinRh6R3F^~{1uYx5W9Yf?=M-=X#?
+OgTSKx1-w8*r3AAA$%G}9L;3p$$EPoSUzJ6wYe)7vC<#~yM(!Nb?!IzBR$sCB>6eSL2FQg#_Gw6WKVY
+6ou7|`Y*kb`d&D}{^9+|G}jeFR|Q*p{u(xb4J0ex6c-J6WN1LVbONR|Z0uAxLuUY!L^IZ0^i0nk=H^z
+*7dy#`xp`c!oGmUpOG3{j$nbmH^)dOmsewEDEE(^-nNpAPXatxCNW1&_e)BrPGLy2;e9aWk$-Yz`x^9
+MO3_b6WHBDU^8vq5!js;o{;3ebCf}m{0ue_*?F#ai&AQZ4W$ozV*eMT<3|Gnqn|JDC~v`>G+VC|?{B#
+Y>OADUpAWtUWMc%z3Q|9-XS_mQh^DxEtZbsvSx}>50hTRT7``pkPJ1se=K$*I!{#P#c*f!?@b1>So|7
+AE_gsGFb-132iLNqQfO|4vZSEt$GUeoP&4wrr{`+J8&Vwi-Sc9^6ZC*$LtI>N at -|O%0ddk=w2=Z at Bok
+CxRQ5*f7Tue9y^0 at T*ru at A0Jd^*U2ycj(UyAvP$qhJV?!X{qLAkrUxdsQ)-dYG#CsawmsxgSgI+*SlK
+Sc+rb)yNn6C{96BkX$O^K3~1-5s6@=nb`NRBW8Ap=lUXVCMI%=P4#~hsWkr*V6lVV9gK%x_*Hb*bb(b
+7%s$<5qqpuwSZq%px?vAI=<sLnSo}7EDi%#0X`nMj>f6?M4yhzV{zs%#th;vH~X%*Ym%Y}rN(^3QjKs
+-qr{0&G|{`F!nFjHCi?`thP#5z%7oWzFkXLs{g!4;lwkx1$J3!D9hBj|Z}6_Esk8%+0$<Qwv=LOgkW(
+hz!nUdkEl9eB=PW0|Wv?`j_Q=>u>DBXuRSvCZ6#a#p+6xqzM-PYt+ at yc~AOM&zo3ER$g;CFbut;o(_?
+mA|(KVXTGV#EMiC)Swp*b4dFO>}<boA1hP^do-vff|sU7Ti)HZgte{%{cvZOVG>zEkOHGM1-0Vn?j_?
+Bqdvi;91)j7k5R at 3HqIi9t?o?^xac1p&ml1Ni#w;`^7c{`4I3nE)gFlT!^o=Mb%E<}Tl&o?DQ-+pM^8
+n=w)Z3{UUe-0_|us&jfx#EWKBBa3UTiW2GOumwsO>Wi3U#z)S0dt8<~f(+ZAUmXE|pZN6uB5?|YXEL@
+HVlx(X#lC9s{N0N`y#C9}#j7{({`~yId(2z8w6Ohx$<Q;CL^YVXxk$oXjdR at D<(vx_Q!F}U^<(l8v$<
+3~9tMdMSpvl$$6zrea}O-?o|km@*;i>?*}(zh^xOdxaRy*G6&+VN8WQ*;$$OuN7eX=S<PW9!Ud<ch35
+OaZchi%x!m75{27O*UnzYNmkb!RqyYCW4yzJEr_)tVzLflo4pkE}Bz9`$Q>U{58)zrP};^)8<9$L$#=
+Zmw;nbUaxvo@~>e|^rUpnN-^{xV!4ZGhS&x`QE4q{(Rfa=sv?Ju}#v)7IGndqkvA7?5^8orWxDfK7PS
+n}G^5wJO_>No0_3)R8fx?a7=uOPNoiU|Fr9lASNtdDI72b2uCmuZQKB8Sh^cw?bn(4POKD%}a8)=$hs
+wD|bxMQl#R+<w$(Iv;n!?|E>$EOc5}-2r(+*j!ALUhV5k$wXs<Zp1EEW at ti>$o!|7})gI{!A#`wy_`_
+i at RjnyT+m9N(nJ$)HIfO}g+_yPg+9NnO3GKw3G<SB_ssUA{wQJfMx{Rh9J at rj6s>691FeC1t?qS3e`s
+iSg4_-tc&&+Sm&&G}-$I+Bo+zJJ*0e)PBLa3FYfo;V>WLU=(vuAEdy^p?qBRpzZ+v3Pl(ohk+4<yXyR
+D$cOYB6*X%b<~reD#^$(98#^-&Y+-1Qv#0g0W30+`|+stF`1Erg&p^Cl7P!x!L7qht}&L1U{xq;v2cd
+<Vx({nJGVaKx1q7%+M*+#z<9S!Ug>axkpx4%(f}gm?);o%4xq{B(g{3ekzQ2eLKmff0*%|$!&_2pZ2i
+NS5&T8U1Op~C&j@^OS_ at YhoH_G!b!uUo5B4a>C}W}=)g04wGkxg+?I)W1Rz2xFdd at 8yxruVkqFG{-Aj
+>JI)m0hx!x6E=E<OAAiv78f=F0WX->AP=-?*kpE;T(hr)Hop_9A9NiQUEe9XdPZ*;>&omX?$QBrK#n+
+#NUb-U)^9()3PPMjH4E*!a~^59%;ZI|5^lC|rs+#(4qDja0%8a~kWMFF32=%IX&`}d6NvHY8aGx4h^Z
+MvmHcjlhZ^1w#;%+qde#mW6VmE|DRl}`|OGPUp%e~{CuC>v)T=04!_p>^cPmtmGZax6SJ_UX!-61KT#
+DVW3P9_g#TVgs9>&qG8mp7;wuKp%Mv$_axZPlMNRFc&W1AM_b8*zr`>{mr?g0sSc=<(Grnygp~izjWs
+UBMkJ#Bcx=!3i!=83{V_&zkYtNWIs^4?~w3iwxaes5pq?tLDLFLr+*v;)GncPDM|b$tFOpN+*^viG6M
+-CTj#R+A%fs^BqI@#lMnwEr6t at SKTJtJ{_ytsi$DHD8OefPz at r?LLVgm`Fc$m-u>nrUOC%Y+sjYD-jz
+sXK at D_wYX+M=#R}6GuKWZ$5%Y7RiOHKM75H}CdtzE%OOaY$+EIhhsgnn^q8*%R#yCN%uE6{yD-i_Y1l
+i_+7 at DcTr1u_64jRASkB@joxy)gsGy`Jr6i>L07IH{7Rx*mrnkDAFen#CqDe!&+)dSv_#Kco<M7xnz{
+au!#e|7i(MNTX(|+P~uO(oVJQdi>RNBbs?U*S?D%4@$#%={O6gE7w<d<>6NzJ9$}=yH at WW5U5oJ0Zg;
+6xbs)ytavdc?&{%5y&&zA`VWJv*AT&3bfY at PPjl~I$lEC%4(WNBTuJhY19daIv{5e!y0_W|4xW;21?#
+H|SAMsy{$=Y6eRuWGD=&PdHRrjpd34$DeX}DkH^_sBdKhXAHrF<CJHe?;czsjeHJJL>vlQcqiZ=sHyP
+CosPB+3jI>2~IkM&g#^j4WDJ3)23!YNnUv8?Ozal**4o3DoV4&0=XoQK7)jPke6<*8sV%+jM=e_%q~U
+bVrA1-|)~RTeYwD;;`;f_W7TzlucaA2|Y3XQFSQoPH_tW&EbhxxQsmtO at ySP06OQhtLC^ycy6t at Ckm=
+$s^Yl=1-_8nAf?y$oMIgA2eVFI#3N1 at HhiMqXABOhcF@q)KKFi(Qw46yc<L|0UM{QqHFmAPD9ryOAva
+xotdVRWbgVxHgyOFUCq<q(TlmvG)<>^uWamYw_H$<o&XfQ8q~W35C{pR2E5+B$Xi-!@EShkIKz49szY
+7m`J<p|dDjJw7>r#lcXAs3(aW at GulcQ;(bf#l#PAiJ)Vaji$b0+-!$xnb(R?{~!(~UHk2NLvsd`8 at _7
+qJU0v%7zq9eA at SV%Y41C0fY{vGy6ZNJce%P(hNXFFhWwftMZ87$_y7!w`wA*=7PC=pvCO%G1iC|eslX
+^V`&5rk8r4m-R<HjVRK<~X+Z9M8!4<ps5Mrqr+tAK`yU=z2RPXMRVIFx{~u13M1kfd`HN20sU2jvYSI
+#5>L&dww at Odc5F<;3K%+n_?V4aa>?WR4<C?`H8R3^n3y~n(txhMw_*rZF1Ab?hkQ-O+F#`?(Z1H at 5dh
+3S*gS`t-VUTXt58dUBvHncqGN>jSV$?Y`D0K;0hvFodZzp$Q#Yq*Y~vT-&Qrf0@}w}?n<GcPsCpRs?v
+T?&Npvr_r at YFB*dvPC0GLt<IUix9guPrc~?{Ol7i8_G<gP<4Rf1~lq)iQi<(T<bf)Bcfh7`!uPwl4G{
+_r*%4PV90@?T|Ay~EJ725D&T)6I4B1cPi1CQ4$%J#HBtjY4?N9wYq2!q<}N2$$5$+DUL{N$IZYp0h2Z
+P4a3Ql))*89g1>DXe|2^Ob_+nP-=?v0kfFJYK;Z72ToULv7<ygzkJ3)DwGYy5}G=?=CAAR)zcq4eP3d
+Soq_S`gY7jU1rF}BU>7>)Rp#$d&ef61#R7TZ-N$}{|``00|XQR000O82?eW2Zx#Tp_5lC at ISK#(D*yl
+haA|NaUv_0~WN&gWWNCABY-wUIUt(cnYjAIJbT4yxb7OCAW@%?GV`gXVRm+Z>KoGpoSB#WvVx-)2$|+
+I~kv2J578;;|*5YY2J#36D=iAdf)*v2h*khE7<>~I~nkpCgSQ6tUEFGkHIjIl&E7=sY${CMjb%G9JPY
+!_(T0hYlG^N_-z at X#i#NHXqa<8fKeM^?a{SxWN4offCpE=apNF^nw at mv;g2J6vg4MdZCIQ?QAny3K&s
+4aQzNmfOmD~6=MNl|OG`sjeEaxsJj#qCA;bWjbcOzAH=03WNwc+(#%b^+%?t_qAsH90Bv#zS8deqsE@
+a+Ozxy92dqxC$Bj6CB#F!8JjVk5Sd!;9$)eZc6qgvR1~fkzu$s96?$8ob0u%!xwNY!y)J7{7sdG at dKb
+aZ2^g|n<)ZD51&dCKbs7=CEUd}!K00fDuIE!FRbFPCc?BZ8Fykw_<?`Nj^;<blPh)X(wj>XPj5Is at p;
+}}cXaI7toOi;sp7?%?g8PUAEBMew0<t{yM%X1S6iP7lHz(2)<$Mm|JD_jb-gxcf}Xm<Oce3we^b>gkM
+aU at yWa*|L4zsV5bKV;3qNvfz(0DT$94{=aq{ogHvM69Tz2%wjKWevZ at 9S*SaNc0dW(x2v5O9_Viy8Ap
+r)Z5yV$)d*Nyxi&38nT_!6d0{`r5Cd){R31}h&Kx6h^>rtH!F7f?$B1QY-O00;mH1*=FAKS&_x9smGN
+X#fB!0001RX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFLQZwV{dL|X=g5QdEGtzciT3Szx%JiO35R
+YNOa=3zMNaP&#|4>*Ch6{+%$W(SD`4#VoZ@*g7nAsdVl-P3;+@!LEG7O?}ycUZ6p#H41oEb0o-S!XCo
+G6vpBunW at RxSy~ZbN{k1;Z%T{-Je7Pu?zc*kTFJ5l2(*<Y8cf}%0**KdQH(}1%+pJ7yVG(C(0G-C1vv
+-Gk2Oq`<L2+BKFrBfzqYtMihi`s4JvtfVLuj|w>-Bb{hzr4rOo8+SAd=4G%Q7c$EKcWHzLcP${n}c*T
+xEHI=<-PDUs?4n=lYwt6KnH4Tf)m=6&4Gop0C1u7Ux4~87BCAt;p}T*BE>%(1-vu6Fgtzw-H|z?2uj^
+<aw4`ZTG0{F|}o(u=}p9O(tQIOeSoHol!6Ek{1)%X0n*f<AkT-l6%9}%j+<AKNaTVWq8FAh!Yadt@(R
+`jYRXQ{U8YoTypCf?akzx=K}V at d?TU-Uve8P&Ayr?JiUOGnDIHAh;Ys)dfk2e-$1TrwFUUec~Rymv)j
+>IwHZfaV<U_nw3|R7bKLuY-}0y|!fC=~!^!c<(SIH6olf5Djt^i*6j=m742Ztpz|ICS7_9L`C`kPVd=
+`Z%n{vjNtKyEq at L_&=efHvlEr24XoTn^Wgy|)p5hp0#iG_kyrUV060H%@0{2IOkiy<Oxm1mcExMYZ+a
+}o`tVNS3s(ap>UgmEF at 0rq7(JFJ%$Jwl+jil$|p%zD6FHo&vd>+Opm$!>V=58SKP9*`FCOBScT)pn>D
+4G`(G<GuBd<NpX=cA|8CzKYJzuU#m;eDSB_)WmJ~{r=YGy|~eWou7xx+192L$<2Qyl9GL5p&5~|(E|a
+qvN;M$=J&?H2rHmyQS^pP{YtVZOnQTwTjV at x^jM(exEGn;`)pPwTmZm%IxxT(jCY!sl04P#w;}KfNWb
+I1p8j<7Ve;me!*~0z1g!}`lW2a4i!y`PsuxKLo{BQ()muH+%OsluTU5{2)O^ycs2|oSlK2mToQtf?LD
+6WbJ&)5F$Y<Sb8b(+69E4$X6<%`OEfQ&yNsx<G5*NM~ctiGb08Cx=nn)<nSbp)FU<P$lKn)if0n5e#{
+^NTfN2Ht#poLd=2nFbmqUtwfc1sY1u*Jfw+TX;W-*oFB6cbUvN-X^W>Lg+B*<`%;)4}_Lae!+zU- at ES
+Qiio>c1I*MDesBcyj3RR+sP^i6?6-$qkb<kP(uwev4$1A at Ff`N6Q at y9&Nz1eP2>@f`|s<A>e=9tFi>N
+ea6o8&;ZZRS1^<0L05H}*Xlf&x1p-tc;fblcgOl*a)a^j4laIS6laqtvchEHFL6j|5$UC`r{+oaHx8E
++F{V+KH9Y>P{e7geSF_8o-d<k2Nh8A^eI#ye}z#W7sfU@;H1;SiY^{B!*hzq_HMpLORD}`nE0ighRt7
+TEc7_jscg%$0(e1zMs-&*2CzX!2d;b2n$z=l0iQbL2xR at iIEuEV4xno@o3uJ*FXKE4`ps9-qgtu>;0D
+5qF7At)^5oK>@&FSBdz*oifzy3_22$&CinnUSCcFnNp$T`-`7I0dB-6GMfLe2eTU`?}V)wE^|4YN$JG
+7Dt6|ZM^C+Fi4$<Fz3J<5l}A}(9t5Berc?e)OAe14KDMnT=_2t&Gn~tfMA71d%2b5uUed8pNlm|lg4N
+-45Xbz;hbrUx;nSDV%tEJQ@>ggz27i;zsamxCLm^g_V)18`vW!uyBEES<c`5+q5Y?<VYc8oNTIk8OnN
+Gy=D==1Rg-{xN(<@7%y<#T3Bt?fY){&NLsklI!kVDB!;mQ8*@EAy$EZjr9}iB(hesb^yNnKj)J~+Aj7
+F33Pe&)GcGI)%SB^H54 at Z;zBW!BCLeurR^<V?Lo*ckZ7>08S)2&QpsRlqw9(+33d!Q{^&XcMGc!qBef
+5dG<A^agr`P$@{@xh5Uoal*mAj+vI$PFT|U?_Qx9w?FkAMsG~8>m3!%Fo#FGrD`U at nC0Pf%s)fe8t&s
+0+dxyETG-*QinoEB>{4<8djO)Y)Ok`O(5iDxMH8{kv|8Lf)D5T7QA5~fHZS~0DO6<?0dokjDO`C1RDF
+bM{)0ioNI7xjj7Xkt6w*GmL~=f*hrpU$9a}Ifz+=XKsuS;c-hIK((|h{YQcd?N%|GwVS)FF-+|L{)#<
+zTCgs~Jen;xAZX4huL$AS4L(tT4l(4aFW at t>JyaxV&iZcd2gXR~23yrmAn+QbB+L$pYIVWNN+wa;oz*
+k6G$PbocFq&D5gs+CI5kBy>l4#GrvaXb<C6rozgC+=N|DnZ|7EOas!mQa}PPIfs%22avmU?kovchC{#
+Xqz at 7V!W8wV+b`PN=2Te*4eosZMTk at X;S)0kvF;WQd;lJS-C(deKB`JFjYQY7F}%b5vJt#Ulw&LnJHH
+ns1_RoBAf+YD at z^++;MpHDVwZCiq)!uo4m&rSN;w)j(N~q8=PfByB~W2oBv*qM2vFNy6BvdhjN7S)Q!
+yR#|H|3sBDCG%E|{WnzObiForE94q0m9~{ewF at Sp1j#=y;AMfv;?)C<#xO at NGGs#6y-bpI at r6F)TT2>
+2z&A}y?=0i`-OvSr&;EoWVh51dK8pzLcnA1&`U%?D)k)ZeC?aA)@gI|wMe(qTmUv+F*<?hMdH$nF#T@
+!_Mgn7P;r+Jv)Vdz0)0Z*UKf~T_{d)flh{4_1Av+a$Gdd=GCyU at 1Lb)%_6ESd{s08|HOeI1;Y(rAZ>y
+fRkEy<{PKuUd~pahGs%6qH%9O9ns80ak*POc<wVQ6R{5DQH(=EOmp#53C8YM#7W;NJ|)869W!1JO&xa
+I|+p}m^eV6Veqm<yA^F(9i=Q~OHrWj3<hk-QhsB=v#pmtJK>jL<bfH)`3!oJpn-`Z+IphQ$KaZXmvIu
+J!3*<(9zz9y%(E<+spX(Z7A=Yx$gw8c)0pJ9wnN_Y&%)6^c1Qnxq5gd_`p?P5^TD}zwgdn9!Lxy)aEi
+qMoR=*adGGwmx$mDrZ-8;3{v|-q2ItNG8_xc}b#(vT;M>RObnrZQ{VUCi`T;#5yH%z`f^5Z8gWh;5vp
+PE-WpzN at aSWV`ot`M+%Vk(_E~0S7dlV>|*C-_5xgrj8iW1Q;-!L5T0hyNg!m<$XNg%-VDFh<sdwq`tq
+k5jlD}O*5>Y)I^5`7Y5lLOM9KEko&)3V{x0+*o@*V=o?Hf(nm-(G7>tT%o3`N<QH+&4hC;5o3&XMBLV
+`^uJL#d0M9DNXHr&=s_a8EsMs_MT9{7<;tkp4!f{l&r%?2udqc(wtYEg4Nd!o2j(PN0b$f%!xgJ;BX8
+(8k2W6G%#+?|A`}N=blIdkXF*OtcoGvba=kX66rysYekLBSV$6!!dHu^tousef2`UOi-gPrkJe+-iqT
+OSEu{m at Yl0+3i3Pry0x`t~Gmy{M;Jgz~2nsET0*wg;s#pN6T`pK1qgCC<D;~wLkWr|-LMaZ5jL8U~gi
+_6y>==qEpr!-conP}*fr`nwG at 5`&mSUTX6^&M?a0-->hA(FmbH#jb at 9n$YAIG>`@Aj*&d&kG}yIQ`R1
+<Gg;B!1O-z`kcM42uG|TARZ%q*%9fdjl1*w?acp9T`{BI1oI{f!n3^i}J&iwf5U4zb&QzT{MKM{-maK
+XcOxkGub*k+<b`+08V%2giI~Kb;7tyk^73cUHqWos0Ha_N3hdS2g7EE3|%4q_Y(9n%MnFq7md8kq;!w
+l<;>SZ0~^ML)WXOi+iV^t2_;G-^-^cF67E|CGbnJeb`L%+I_+58IrFihrC*Sz2bieqGzYQE*{kgf=SY
+soabp%(bl`eT=u46E{1MxUAA5f~pmqsM1Eq?*s^KpNuJwIb?%p#;wEYoZH;8avQ0|L(@N5YijY+x-XI
+stxvhDU#?w>!vC?g^8T!QP`bfrP5P50VZ(xr;ExLV%7#+ at 3rIUUlrZ4qRR^f=9{KW+S-hRWmT;s)B;y
+y6O#`XFv|P?rAulMIQUhnVug&ZtimjC<Sapbct-dqubTaje-RY%{PIvddD`3LR827%gc8&JGVQ1J;wu
+dFRPG_+;xV<;8#N0Q9941)JsB3dJz^O#tGC>P$R%%)_MB<q^Al-|qG)T)tvrRpxO9a}X=A>O>tWM6+5
+gpEEid3v>@dK-9k;BCv*FCH$@~EaO{`99AVSqD%^*O*573uf0rd{fVGl&A at jd8EA#k at TKy?o%K<E?Rc
+Na9ykzHhh@^h((Y-Xo!Rc3cq0nsE}l@}dR2;d5sI(?`3=S*m|fvCo+sg at mEBdLnOU4q6rp?a(demoDm
+?a-`K>(8kb)f=nk)a?3AGu|t0$xD!+cK^-~&#*!LSJirl6<jRq>BFjiDok4E<(iCN97pj{hO|dr6fg=
+y`^#70^16XCb4K$4BGCPdFu{w4jbFBw0A4u0(7}0>-o+UJjynTt&GY1VGI!8Q+Z8=r1aIEZ0(%0UnVQ
+N0g1FU5ZQ8p>Ya)7uN+|5=C-ewv8$;^wHT<(Sv=|Bbkh(=>y|@SjB<k^%~412gLtBXFcXW6$6Au%7WV
+0BpSxx(<rQc=rHJB$km-rv&+GB0iPW(T->{q<Y-Y4LN{*)7Vu*i2>SDX{X*-p{{I*HC}q2cpN1+kh<@
+M=*u$43bExhWHzA4BD~`oAAQx--_uizAJ{yhjso<(Bg33A0`kHGvYC&YR(~wQUA-q}ewBBR|ilTjLFm
+g at 7xJoJg1=2R>QIYA8Ubpn4L<e|~<DYg<4)#5%cJR at g`k5sV(k%UBLgB+{EeHg-M$=Hlk)B(Hc&xOR!
+te0S{=xW^&})k`qv4yw5AL=YR(G^N{IK`#m;Hm|zc!l3R`HT-J3gXDUa-2GdB*dDPY3D+zvbo&CEDp_
+SIXYTegE*pGjnK<Eo!AA?^QWXU?q2t4+Z>|d)DO9)xFVcEjj)jqSucN%TjeuJNn$0FBnCCt<dlD0mI<
+)d8&*7 at U8f~4PgE3*#+y<OE(aBzkXh2e`KHr!xeV)7K68|DthbNS<I}UHny;vLgTAi)?%fRp5vbte0B
+O(9g)jN_)bU!jYtz_U+q|G+g8V^>BV=>%ssnmfI57HBfYrC0CgzM`wY-p1wX?4yf0Nr at 6!m)G(#vjE!
+5*ZBj49vs~U>c(P3cLEp6dxOGKBQsd{25XSD#8HQ796&|bk%h96DoA{88V5+rGA8&Zug1C}Do3qJFWv
+Qk}nH!z2<Pfk2~aH*s1q5JIi_7>z6$E^cz?j}qzU at NdfETTxZiD8A56o8^pZ`;IA*K6!JYXl78JyaEo
+J18<7(^-Pr#aS2=3M&gjEvl03pFhi=pFg9pG^|NoU_h|}l;tRJK$&01Gd?59d=n>$wIA;41ge`X^Blv
+TI=^j8>+V`wIn9>4)?IevplQ{I%4yu?G0lDOrC0PPZ3YPjyO2zodjG^mSnH-{)+8T^n?`G(LiH_yMvG
+ at wWdPV;(e_WXN&}0b9wan%H|k$N%sS<zZ5frM0JD}~BXe|<0QCUd`j<4mMdKQ#z2spkFl7RRR1p}X2D
+dt3*7hC0)!=@O(^+;S=-kKqFk(kzAXX0(g3B^mFtNmbShHIw6ll_}86!L6T*<@{GSMUB8?uft$+9cl&
+T=KmE{tk8RmHG%60V+8hvA|RM;HZ_l?pM7EL(<6qXbhKI8tPNz at jQN&Sy-OQV7yiGV_J&WK?sKGqHe&
+cSxp- at S1;XfPz`gLoC>nZcLbSRi_CZ!rXvQ_S!NNwBdAYBdrQEB`7 at MQWkL{Hk7{*I45)FDQPJUX(~$
+XXlTqrwl?ZmyI|i{C*m50`hy)NVgahhZQnoKIn8EStFyCc*9{7bTOP3_$Zd7gN32JE?m|Ov7!3GnnSe
+HsDj;^D%9r(n+D4If;V$^@F?hHx+pur-1eJD28faR}1I(#`6w(4k1dm0@^Xf=&vmi1pFq4{zjb=Gy(*
+ZW&4_x3}C44oY`+(r-+oC|p;^|5}Drumiktt8I8!1|F_EMEt915y=UZ(Oy0wwxL;*?am(>$LF&5gcN>
+%_%K_Ycg8nFaIT!{j!Ct>)CMHLq|dLbA#Vt at Zchp&?I)_f07G!B^e7$+T?=cLT6}Y<D{YZ9G+-USpw!
+e2LCahDKI66<GolE!92-)e8)QaP&J<jt8YHnJ?i;;hfw_U$+$wqEmK8M2E4TvKv&8LpCe1INsboE|6-
+5q;vUgh^H5ZXr(Uc^f$0hUZ&C-gtbmbX50|<ssW1h8|wTyWj~5$Oi68>eL4^|iRsP|jW;|RRe<T<F#I
+^(%jjk%eIR`@*5zfkjuhLy=?sGTm@;2kVH~7{&Fk8FXEKZ?^OqeQz>$OQSF~YlE3VOvRGf<3Nq^#!RZ
+HxEqyi*$+$UhWLV%@VJi>7lJfa#0m}&^Z14GvuM at _dutCwofa6x4iYZsq1VRZ6c`)molvjs%6GS-uou
+?^vK#q*RWTER-#rS#W9jpFQorWV>pVgBo2Gk9eqy9~c%xd8)X8aCjdI!uZucG{(4HiYlkYZqaFnW{|F
+Pr#NiFV0 at R2sVcd4EX2@!HlpvhIVNb!~F9sYnN&Cb>LT417V4css^HtGDC>;uvDc-ci5r5!+my&#&=!
+ZL;+`_AruyL9zj`+XchyeuT);g0ZQtbkd<kSivY%~6k!w^K`GN7UmatR3fQP;LfN1Tom!oYMPO;UoPt
+RYL(F&%!_JI6sa+EWt9=io6~>XEUAaPryWvUFMpl1}5-hOS>K}FJyrV2d+A}*gPvG&1dt1Z4;i&?T=;
+B;FKfif?E^s^s|1%PX5BAs8#LoW4&Wnp at kATs_6yuVXJ%^vJeEM#p4Hne at l+*#j$m5xG9dJJ2jYkF6(
+n)NIgk02~npI2H9=izo!_n!%wj^s=TNk2iEOKx(BG};R9ot>4s5}vv at Dq~sH%<xPN3I}W2D%8;yJ4cz
+E_7TpOfSpu5)X>TLfNu2%Ah$Qk^cxRkFGID&o<g<3+<ll{UmAWF-2Y^B&;GW13(8s{o68IXYa4$IJ3t
+;%XKCU`R{Y=gGEvRsIyBqqdCaw5Cf1NFimFAFji at YSk;9JpyoNusOgGW8;VL<&~evF&}$){vhn`Ul5S
+N!CV1DvRWaB{EX**^G6c590(0s*1%F2JJ_5lLvl6zOOUP}Rhp~eo`cCD=rPf8j5t?K&<|I`bE`X at Ck_
+;dPS?-cA(^zJvlv$iJV`;ax)jCu!v3S>sztrU=&QIoVsUxnWTEyD!2BD%Niw;Pnh3~Sm3Iu+_69SJ}6
+J-zB6i+9e3`TNPc`p^o%hKFhR{-Vv=i}!C=qCHOyFOgBiytw&y1#T+filf<c~6E9UGJ&${6kVruHv62
++7!62k#G3<V=|5w;j87G*{fwCpu8Ky#*6=XGI*rS!_NakOkS;IR0m(n8!gUiEX}HPyRB{?pi7<3{1$y
+vIh=ViRb})N(VZEvf~~GFxrFLU`pM)srK3^6B)pFBN{K@`kved$v*W<{1g&{7m_P7TQ2OBSWem_!lmf
+N2n$?r-$_R8dH&PwSrE(?2)WLfx@@9ZVJdf2`g^ob}X)SNjvy9V(0?23=0i-e(i>k*+;F*ef95tdFF{
+vSGgt^-mwVj3jNC3m$t>Q?=Ph^f#A_-<zb>9}MLhX-fwP;zLK3=d>f;|{Zk?hr;qc at OZBTVpY#^pkJ;
+bBymx7z8kVJaNyQfO^>H2#+H%YZ2Q at I*yjTjR$9OF~y+Uc^zEggH)zE;+*diI4pN9z4uT>4J at aJS0Gi
+FrVSoeFLdxaFBO#THewKSGKd;9z$}Y9!Ha%j2cmXpdwb8|ETyT!7)bhH?OzsCt<Q$gv|e;Vn30=K(QE
+Y1Y09frkkaH5$Eyk=$qh``Fm?~v=waVjEqd-V1}{EHmAsF6%ye8kLV^Z=5K9I!OGBmV6Jo(80_j*$Zl
+V6O}4<VK1>Uq;Fp8<Tbrjt#*1iRf{H^Yq(fMmxLle|Uu^(nK#NMP1RF6;ph$#6J62)T!>B;PTf7~Gin
+K5QCrc!&0QOMx7VI?@56jMiZjP#;daY6yGvb^U)`@YE#&bJzi&SD#U#*l>{%42v7%qcvoPuuLSV9+H>
+B~Q=MssYp!$vQi=bz0fRPVpI0QUyHA&YCkm}YC-gAzZ-Q%wqk?Jw1}Z6-3Z8!QQtiRVPhtH{W6c8%r!
+-_schr|#>TYjc<WQbk75T1QJqS21Q-O-zEvj2-mZr%#{EgYQlG at dNvCiljy~jxcwT5r+l<ody-`{nqO
+%Y;t_OM@$erj5-+Dc}tX|n!^%vQ0&)PnUlQ0JTCRfgiN3>GEoe*yF1jPXju6MW{6IYrNiom5XZ4;e<K
+2;!dl+ChgUM at Ac_I5>g{6?J_4U+nPG7`do$i&KN^F4B)Ol5sX*^Y6~;3kd7*cVpmB*XgfAAVl19#fP^
+84WBCz_b<ho%)*Ar6T>Sky(d6S3R5x9{zFvx|DMr?m`L9uiau|1P2b_=|TM$p+Z68q~!002e-_jDn_D
+$g+S0Fxb!3;^+~*INxDXwjM^B{n|ZJ&^?SLz7 at w@2MEc3SD1syh1=%W3*=j+8`6gY~r~l6HI}A4=ujw
+Z5tfdXX7#ja`*;&kEL2+8x~Vm8`e{5r`O<F0*~+U?g5D}MtAFR2O!K}RrGqcv3+5t<mm96J|zldR;9e
+<z$4Xdr1uzhR{F|yb%eDNn{p*k^;uJ8(km~)E}C-rervP$m*%oNR$XD>SoK$OtkBBFSb%~Ctcq8=fo@
+5l(cPteOGUjA>Xk8KGRb-4l)ZO$J_|0M8{Vk&Lb0hT?6YuC<g#pvWWBxGx$MTcb+1O>*k)4DWzJS*4n
+mp>%%6F%^P$YPkU>lt8;XBd<`w443 at BA?gU43TVudwn*OZ_k-g>{gcQpPq**`dbcl6iy2Omx+r at JRV9
+*`6lyf6S2Ss*QI%+)CSJHt##JdKmMxC1hzYz}GcCFT)CNJ-)-#3+lM8m?k8f?Z~+4oU3;2}mqqM_*ND
+EpPN$ZP~dC=UR9~^Gj7;+wwo^y$z#lI&-KR%b-LTY|qXE*#)u^t=;4%yc3uUN3*ujhma&SsPjNN>#62
+HY=Edwbk8{Gk|izCT%FZYF3KEsjlx6dqe!(K*v>crH;9m?*%;?X?joIlo$ydrh2cK0sOX69FPLQ!l at j
+q;0}#wuIfX7#^szdT{7%(hx+wFki4V5<kz;5HC^AgLOP)WX(szzJ5l at GB>th;tUET1qz6azt=J|CD%0
+|8WsOCts@|;;)b>702IrvqFH$$|M@#GqDE}LezL;EnZQF`c#>+wZ+4dzPT4#2dkkH7N920LPwd*5C0y
+YG)F%~1Rzc>XaK at igIT9ll$~*XQDy`%VV?1Hhyg{=FYO`(g0iy84Atm_U|EI*z^rje;N2k$DQDBoo|m
+67_M>JB!4<z>}HaI+|yuM(LWKCV;+N-p;+Ncgo^>#7c71c9Z3#FsTu<`nmet%cHgGf|r at N?X|MIzHcn
+Tb6kW0)xu!JH}IS(B$+&*bdEbNW5s0k!AfU60Y<u;c~$a}+d at i)1SpQ0Iv}ZId1mst-O7c5as at d09&B
+ at jqNst9z~Vq4GpZfbGIvzmt=bXOKDs-qvuB>}@L(!l(2jQ21~j#3y^nM-^Zu1~9EZj|Qc+NJLV-Z*td
+EX;M;*~m-PbBe$BRtq#bDqV4xLPpp|Sy5B`-T!PEDAans-<051BX$1-u#r&3d}Zc@=e~pdVVsE|4;s@
+(8GS>r3)@xQOc4fCr>sJq#V70<^D$YkKpKMEmQ<sfpe(R at Yqs@_1r>l*aGUA-#RN=k^M3Hr9ix+fP;O
+N9;V!$=s(O!zO{!d at FQuJ8{Atbu5 at 4lb7(w_Q>dFoST(0ln)k-G}TO-w1)I*V}vFwh0pQi7haoFUzk&
+sI5py?4nWvpYtsbgVm=IWEW=xYCl*0|Z#;YUYU9CeQ~P_*Vo~~u0t&}_l*qxalPb30B8@&fjzJNI(r~
+A>(k1i9$9o;2y1Fy|off%2ENWiU_ebU`iTW$Z)9$Ml$?`Ef{8b}dVB{vOzgD6%6gpwkD!0~`_JM&^sM
+}@Z0*fDKVG$aCV*&5&2iwuFFHIfbp79h6<s5G#P{JF#=_?XURg9hyf<Uf#VXp&??R!tfHlySHgn(h8s
+rTo_Q$axp(W7PtCe_({%$^uYnf(~-D$uiNG?__<>Z&SvF?Cv>Qc`0bt2o|vHJqLH8CZ?wxns5BjV_Jd
+usZIke2{sBTb)^{p*RoGm|)axe8vuX$MVnG80T9a>QUVm=DF|8#Xk?C|0)Ctwh68EWTJ$dTKTpA15ir
+?1QY-O00;mH1*=G*LpWPwSpWdjX#oHz0001RX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFLYsYW@&
+6?E^v9>y?uMzHnKSSzdr?6J~@^WS!+2jO?~U$<0MY%r;eS+b~fpzxhf^mGB+}*LsD_v-Tm%&-T>l_l$
+^BZ-t*ILV~GR?17I+i84PANx4-?fu^ClyahcAO!Qysf^N)e}JYU=v>FlbCy3c#j?#|9`bQ~9D^lDjFa
+WYQk(GPR@{a-WndoWFYgn9?_c|`Tfs7T7B_?%1!8=LUrO;TK^Wtrw#6s2VpT_r^_zKv!@oK?xRA4Qi%
+l0;E{8BMO at VwS*@DvzQ#yNwn}QRW%I$j4QjW@$Ey;wYK`hFCnRt^i({UsgA9kzkE!6qjW_Nn-#UP4mg
+}I?1ZIN(lyz6ExqguApq^T&i_?(q1%8;yGZLAzUbNuHi;EX?2w^D}Vt#tBQ1j5c^nmGG9&+D^(<#r`I
+XBC}3nru!Uur^Z^E<-;b{IX?lr&6YBC}Ii9EGRX>`h*ur>O!NU?CPLd4jVdwsu7g3qa=L{po&hRK0*!
+FoCu(<_}dlktbmfXvmtNa>k0F1hWI4hUSA_D|q+^F0X{ws5U1~~j9nN<9gn!3#A^ZW*SO?YI}6nk6l(
+Oh3Zfq0yMPN<hmMp2em&<n;3XN)mpija5ZRSe`4jS(*%RX_x$0-s7>vGdC@&|FrfFj0%VpmuQx5G~ak
+rn!rs4x{tamly92&JLra^XSdl>EDiC9KMJ;2j>wy==7s^M;AYxzP*T`$l1Zk#V^t6%jn?bmni!A=;Q^
+?)8YF!XNTwK(dk)q^!m;5(cz1Jbae9k`0b0MlUGsn4C<boUPQ-7ua7PO^2KRH%?iAu!*hTEFr(LpXU~
+6vCkM}tj*l*WfiZn~ba8@^;Tr&t4x;GI!P&*p^S8$b at H2Yz_Uz5+`60YGc>yp^PEU?bUY<dthp!J$E(
+U=ANd!-$=<sjwJ39aA;P{x^jt<^Jr_KN}z<qxD=9jahS3g|<jGs=AUmW7|XNQ3B!L#E-Zksy%{P^JLb
+w7G>@cQ7 at A=f<xXn+b9WuyVdyPppEDKvio7#uvmI66I{E<Qg!xj2L0eHewaiyFeaqw_=P at 4?y8IiL?P
+UY?yoOE~OM4F~oF>z*7kD4Y^|>YxbzetV8zaXblw7l#MO0Ph^Do5gYNFAE^>(dcqnEsJC{iqdPOlxR_
+;Sp`osTDuz?olfU0iKh`2N6Ne@(kekB2aXCPUR=jj6c>}L^m9 at Uu=vKtX!IGD5>yAU`%&jV&XUh5{`?
+PkCvPJBz`LEn_k*1d)QFeB7Ye9=Pc<L?b-A;XJVIXD^>}Fyt4)D}VI`{eA1~n79<bu!aC>KWd-riP{B
+G~j?%vKYdawfwI_kbG(tZTbUnXNJ){FiFp-euP>6E}Al%wgMv0X$@pFV#2!~*)5f&M+ZhK_H;pulRHC
+)eX;F%x)20;|2`?$dtoIgd`#<T|-ciavguJN at fNXDM>^X>^g_03XYy0~oALbH6#F2`bHpGH2y&slMj=
+8#G#}?@3W)x%yG1*GXNdSWa{?WJT(Gk!);K#qHh(j;%bK6$@a%H`9&e%OqJ;g3)17<OP?50?=b90so%
+l8GwKtsT`EI*Yh;{6v4E=OS5TyQzDrGp8_g+GT4cVI4yy3o#Yijgn>+Ozay|4Qgy^FBH`>u-GfRvKb7
+f+D)wsRH&vtbBI*tw4j=Vk9|Dd!PPlDgq0Ag7z(<n;m^z>X95=ek=Tq7R7|?n0yhwn?&Tp^BIqW#cfZ
+CfP{S1^cOR!J;jY|8NKLFHCRQf$NkSFnVVhrN~HfJ0<T602)Y7Xw>TA9y at v_5n$;^HN|1TKwVkFv`gz
+oz9#YRL<N-TAn&0o?>*8K~u%LWK`IAEO_lht@=oM&o5VuTosVaT&>vas$XVu?p%p8>4)Y;N++$1Nu#a
+2K!VJZQ<`N+(89rDzNbl!Wav6xU<q;SAGkqlefo+d*|1kP89lV5_M!t++|^v#*->3Hl7`yKL7dr=<kP
+6_3>~wP-&iIv+4?W-bIm564=Q>1RBrt$)|GT?C|;N*$b&&gSro##;aW<lf0Og8?R2 at j$rROdQQk9Un!
+!<z<Com(kz`svusIYgAx*mAFxRty>~1A`eg?`9kbdZFVin(#f{^`lUEl%jZO|;BbLLR9j}Ym at t5>^d2
+JvYlK`0kNvrCx2mO49>bPvo>L6XbJbI4+9zR}L9p`CLB$v>UOJK9p4H)QG7r(qYq at IVS7lqZ?a*n$h;
+JtBRmJiT_Q~dbkXI*+2gifrl3rixMCTcbJHqL)}t?TUu>y^S}2*AekpU!mohr#liFr#vjOi=Wj!oE96
+fKF=^9|fxtNxIcu9Mvs84py6{K$ult+-|%)dU>h~Kk*BrQgNBPEub`{Yke201&g~%XUlw9@@V4<z#60
+D)00<1mE+EF$EX4&h=k{PHX|xBs|Y2IJ3lv7p}|&F&OzKf=Qhqe7GkPOxd5>w5#-+g^g?&%OK`+!B at T
+w$AdC#7<VywnJZwH!AYcJMdH?EISD&q}KAY!b7)z;qetL}3<H*F}eaEbPo&(VW|8<+)czb?va5e%d_w
+~UA)N>c9(eCj3r%$6Uv5%g}e#Db>-C+o8HC9sL&B6P+g3mSGZgv;(7v0#4!<Pqdk1y)_b?e{0mC!c(h
+ioSxzay;bb^&rkbp;Z#0$(l{B*pD*oWFhZ26TYK7bBdnbChd@^Yo(w{Y}_Qf5RWANLUCcB)n4lky?hq
+;%c?^BjF|eNH{~VxVzH&k-LyutMSt5Z3M<biCz`SQfP_*rf)LU0rG6r@!E#QZ at li{8c3i%4{NtldxlM
+<10rkP`klujhyd(HrRY)6^cPuwj7|<BS%Diw9El(o#Y)N@@RB(?JbppgbQW=Sg_0feD)qfge<x}08pZ
+pLJ35_ZI>om${<B2JNWbaJ8u;OG#g~`B?qR~lx6#$K!2PC7D#i{+rA84Rcf)A9Et^fF86((mw!9vL#M
+&n-M-H=9 at ZJt<l-?VJ#DYsHNWFdi?C`8c>z_0#otTDbFS?xPam6FmnFO9)2cF?L?g6Ii_sscC(?Ab4{
+{4*{=^1E{XbL0y4wC3~K25me{pfQ%UnVqU`J{^HgKuf-e022knD)h;e7K8JVa<wdAp}dp`s0#2c1cSr
+!h*nDsNl{MyC4f2A_8DRU|(GDkzKGBFR&CaEiUC?Sc^RdNZ^B9cxV?!DP&{g;{5H=izuQJk9JI{bQ4K
+8!ndHWC0~-slB^&X=dW~y-9Uv`euckXyq5|?r-Cy20v>PA4i8>vJR-YPObac)$zYGZc>C_`=;BZzV3l
+Npj8XLP{o!-nv{jT5O#WIXXt6Qsys8m_SqLIBEAr(6O4f+%>^2~xiq?q0Jgh)O>YN&g>^usO2r>XDX&
+|z*8%9JGH4xbuu0VwAeB07ZvlMNw>F;7v|9V)Uu;=9fc_ps(ZYQgdc}{?HvL1eT^8A#{toy*5s>|)C9
+YaYsUZU1NODZz$-<B1cN+vm4<h#9Z?CW_BxB;8GT+Sn9HvA^xX=9pP0w2%1!0=hG>qiRPKAN)fqLkiu
+I-Tcv23sfW6T<q at rWBK=zFnd9Jd1h9s?ah{7W#pz%4QlIoB_d4x?VF>q)4h|kwxW)Jx1qa^dRbr#<`6
+scFSH56!(+2$BaBkkBIy_NVg%%UEyxoNG}NK%QTyINk?TofmRmLU-qNz;hx_9se2#x79Xvi45mp#e+B
+=v+kh=@#JmSFc8lBU3Qs5Kg^eT~a-i6NJM>MC)`c=1gA}G(Em7EVp!R{EDr;K`G|&S<ah~4{R0m5mS3
+w^qS4EdtVXyA1w)m+J+M{46?#g_0;&PIvBrMU{RHuh$C7m63^0cQbib?KoxWO7WIrSlXVRV$i2AocRB
+0+^pbvr3P6X`|fq+W~)p&k7Td!OR6F5+yKbeWKVqJ}-U8$bN8A3b%RJ=h2Ar`_^H3gkHaXpw5h^N0hO
+;YryHM2Y>UeGzW=Z7nJ^(blx8B~{OoJJF=Dp?&9}QWA^gzn8Fmmr8a+7-N}wCGyLH%`XKCNiu at 19G<b
+TDa!=cMxRf{VtiRDDQLL>@B*a!^#1)W!`L47dfUT+7VV`{2_glyt1z39^hn}nCO}B?1Zv9?G}^_*?I1
+dUg&xxpChx$A49wj$ox~OC6o3`#6X^t{Ac0e_FO=W(d0?dQljTmrbu><A+n|`I8jB)XpsXMVvjbR8;h
+sm`-N#SdUaJMO69Mf21w~Jz`}ZR$;}BU%TE)Gc`*|n2XO`(lS+A#<qb#2ukQ;J3pSqznIS=}ashHy;%
+c37a*MIz^8Hajp)hn;tLA40P?;BhtCIO<#Vl<2W+p%G7M(^LhkKTdQoL+<YDm1WF0u^4xpVNF<&`~r@
+ at eGFdbFE}JP-tQ&`4Si&qjxGO5rzYg-|&gbV3{rA$)|4T7?_JZ;s^5%4Jxp)4Qu?765^tWZ at axF2GKZ
+f<si*KrmVU<06Y3mpwNfkeb;kP`|(GUhnQ8Ek6If9^N&e9pNu9~pUUNR*&Q!04Nd`XfX?wC5Km36k_i
+?Petw<cNWxHy9tSHJUS1>N1HA$PD=f6=UMjAO02m^}qmAa~Dh1IDroqtj(n|#-t)iQl%!6}yMRQuhP$
+wm<*$JA>MJO<p{1T=gO6a*RQHH7T(6M{I%;=c&Bzb?)qY>bK3Pub+on_D#qOU<PlFGC(O+i;KVCl-il
+5B&dGAnfs1{BH=L<IyNU!^mUL!nowTZ42J-6RGYxRI*ihAnNG2`+%L?hHM#S+puAvl;PXe1P-PbtrcD
+=;<?{QNZrQ9(@0Z>)k2x at bME>Wcc{W-s9o!#~#zqU0NBhZe<*9MX1#2RNro0NH|~IqR<NxRktiAuo;$
+>5-a!dh|=8s7Psmkf%!7oLZo&CwULa}Pk^Hr|IwwYmzH$y*=N at qoKB#Dv>>x$1z+u1Np-#beUpE2|C}
+NMx-JD22g1}vu}o}k00V}6sF(~;W9kl{+#l}jKC;;X^2{8M?=J1SR3EB+vYujJNv9$v;G#*tpS^u4M_
+EH)@)5R3&-t*c4`r`o*e!wH_hE5-zRsszCEH6?hKmefT(dl`Zm>J2b5`AYya-R&6XbPJf;*Kh2DV(Z0
+g`nVV8Y^>c4~M|*VUZV-T8|(a}IjCSQCP}z#oUAIWt%Ttwy6NM!_3)d3xRLipi(X5MWd42_x%@iATNJ
+w%<HE)^*1An- at oC>dn-C^ZY0MW at 5iNdU>keEIK`SCD^fDL|#Q5kfr-l58sjAuj<{{?@-bI7nyfZ%CB3
+KM+)M(@rLT?w!T<+ylTPYRSO=k1dmrf9<Q44c-4Z(X$u~wEqI&?9)G)d4|r529`r~-yfEIJdU$MzTBx
+Y0i~oeQ1}p&EKG`V^-Bp>`Q8-joyItIT;s0wc`nF_gU-<{j)3Op_Nb9|zD5KxQN6jmkuz_FLq+Ty4Vk
+jx_eB66!>$TtG2i7Fv{GYV%0xyO?K3~Mf2k~M7tFeo~dR_^ebK1hO3jtS_xtVo3gMZ{{*2OX~-jjJ;l
+B)!>fJ5a(QV;vH7+8dME*a<{Lf;XtefXt9 at rofRP&I&8NtP6#aMcbfI93T)5`#bpEV_d=!928JEi>eT
+I6<U-DJQW2%;)(v>N at C@vM%WObDYj;_9t~^kUc?hod(-DNAdA`UGQ>H2PB!pl*HmfnITC7l<j%?DN&R
+fY|S(c_^sKKM@@>b+&u1w*Nf`b1Z#Y6>PLcg1auH6hz}WRu+uvNu2j7?;D at I#?~1Rn)3pE&m|xZaZX0
+OAG_o9*$$u|FQoAE;a??ex>ujpqaSqy at 23t*}WJ3nUD1-IM6vw|WL9uDC$o&`{=Qqd6=VXrb*=2KLjX
+J#Cp5t2{XfcaI=lN`!EbXc at C|PLxBYci3ltkrNs;tl^Pfk1L at sF}!;=nNW=u9L4;tASRYC)L3;Px^aq
+1k*i>Xym;5)|3^Iw9}x#1Q|8O{;@E^??m>53S^<qq7&MC&$0oDm-k7^7h>szK#CHzn;UMdZB(?oV`7H
+Uf28g2W;r0DYRY1B_7Cjb2KELj-DNz9Gv~qaTIYv?_c{2lZ(_EH}q<7iJp-;JI8hF9-<EZ<jIp>Js6X
+DUM4gWMiWr6eh#pV at +5BZz~K>O&s8R{t}X*rrC1GsB}jo_w^_g9ih6q*F-!I6>p8t8BN`obm1OS&y?P
+oi(9$+es+%Oq6#q1p*VtmPiZaPv-hTo7cz&yDW=S$7GvihKIU$0C-jaov@$bprz)Q3gI!tuSq-xxN+&
+v&s1gU!Vd%8dXWB9vkZ8K=>6LYp+83!Q@*>W^aWN(epO?8h>W6BEFSZ#seC;1X26&M3RC82Lsyh!9=G
+fJw-KpTx@>=6^>48&*H#!71wM at F-d`R!enTc3K0t`dEv?UEMm&=pI5tg{263Lo=~MYU-yff2Apr9|(O
+`f4sS^~Te7 at l#i``J2HiY`d7>-pd%IGRt<TI*W4O*8MHlig=iji~&MXhQ3~C(lH5PnpDZ8-W9JBr at F_
+y8~Vee_om3d+;-)$-Ip3oRSnPc)YGnE52aqyi6MUWX=dr5!<h(TR$K(X+Aodf)K`a-3GOvM_In|ih+K
+l{tM@*V*2gYpu(Z^>9S1FBe^Ywn%%pet<4kR5_It;d>AhOIHv2dKK2OKq`zG&q_rqGeC)#!pC=U4&H5
+c|X*TQVa*D9#vRA)bo506YSk at xuZ;cgd3)rX}t9UPD%FdiBlGY90MquK9WACRxy1gaC`<@&8tGyZ+|E
+9M4j{ozvsFz+xkYmerX?LsD at du1lqc&ZBs44(ac_eG+Z3}AKV(YHW74*}wF@)its*kzi2JLdWqfh53p
+WvMzW9zQhr=0-G4=CThN`->rS at eb8th@Bqo;2Kqay4Qd}*AQ_WqIBAWjp|6bZSZz2qA%P0Nft0Tf6ET
+X!>^a^Ku_iPAKmZ!#)}t+FOLr{4qpTvDH}iAHGtO#??>;R9bKH?4T6Qi==I_2(edHm4v+5!WT&2U^ph
+*An7eHrcKv|IUw8tKB?kCUx7X|0qcs|d at v`&l&cpA1-5oysb!WJP|8=4V2IvRmj=!_}>%;H9>sa<wz2
+OZ&3 at UN9x}5>Ad-s$~?~D8O_YZs94{JGpGdg?ueE9w2-KdOjOFVhGUX~R~RMFA->Gsp7kH6m@>O-oR<
+bZA*h<kl9G2=7Tw9Ewz`XLm_VjiP251*;7A&vvFy(8}?F|C#AXp04nFjcBCYTplyZN#8m+Dpp5e(TI0
+Zq*O=#R;al!M{L*RqXP}QZ)rDMz0bRjy;&>QXYNf03m8IUhV}BpCvae^_xhgtp47LFpbTCbltMrk+s7
+Jl=>;3%g~6(`(E^;B at _k5U9nSxZs=^xtoAX$W#zy at mA6{?xI&#IO%0yY at Hp~2NZ+;LD=M!<jWH3Jf_#
+n^u at pAROAv2w;$m8^Aiw~xHcyevvU+E|=@7$Ti=fO2QG|6lUzS(h-kL3VM`A70(>NdQM!((y#1G#L&)
+6k_gg#u6DXGu;u=nBaHX5o?shHt?(($qi0K!>)!+tzB1zMd8l$_ at 2B&|R<oWy0N?k13_o<Tnk0K#iA1
+H3uk$LWq$^W*$W%`>j!+o&_o^H18L!t+5V&rDhyv>cHUV@(42<dFthL&EE51ZfZ&CP4ago`Nc0e4^uf
+Ais>A$_l=@AN|IA(QhKrk^7UQfibL<#=vTm(89C){7X{$?T3iM+xYb0{AaZD<x)Pq1_6I9V90G1u$S=
+ZIc_j3#kZj77F4lBZgYeur4X!?owNzj7MuXEYJGkAX_}Z4R7m`Bb__$@Hn#RE{*+`)9f;H575qcyC-&
+(;8j9zYvh{o1Vnm(q?)H%P)WV9hhFP(wk4QSCL+~Kbg<OA=6u?6b7$lz%P+wayPbvIE5YtEMavskjaT
+v7P^!8eM{=}v$s{NnQBO9wPbGq;wfC<tJ`Fgdsr`x1A2&@-q^Qqltlg|SIQ$(X13n^^0Mkq!GGGP$9!
+g`c_lvm?3eDeP at gmwc9T$5_Oe5+(W53JfVHV)VF(H38{1U^V6E8&Mt>W*?36W&xeS0>3P5zgTG{*K-1
+c~Z4BS&^$SNFd5H4}lp62-JV_9UiCCX_IV*&d at nJ%W1~><G$-7*y5aG*X>*4n>~$=lb+|XV$Do#f)B!
+~%LF_}e5IfHf_bjlk+F)#uyc?=rtKK)PHXU=#>sQe5==KKpKLPNYN(j<&&)4P at 2QY#5|PIg)e+>N)il
+EpM}iaWyzB{oX at D>xu;=UH>C0w`QyTE?$W`q_pgwKu*pRVDD<)8yZuG4paGrk^;iMb`Jh_saSN;K28$
+tM(S{S+-TfmzOK^U8U^RZG*1vJhprhKI~>dW#bd5+B9=u)VuYBg(Wb%v*N68#YQ`j$CJtLF1=esV#Jr
+O_N}BegK&&$O~$o;Fx6J>f!~G#ld8G_K-KfU8VJEyDRVUrvI=U?4qZJrwoNpp;b?5~WjP8zQK$q9~yz
+<Qn=^T)b!TK0A_;rEJhmu{h(KqI}(OEy}bA>TBpp$+mweRhdfdooBCU@?5(?<J4_N)>*G}^vefU?)mT
+eH8Su8zLVOdXC`!%RyLibsn)$CwdmYAM2pA+E!rynb$_e3`e;*~r|sE8P at ldv9bg5gRflR>>-1gk=pk
+6at=L*G<`JK7A6MlE7?7c2%cpHdb#0)^*=+W^&yPJo&;EY({jdoFp4qtg6Bl1$bP8&qipUJ2(uDTx at 4
+H_`W$1lFoWk%(QCNuDL<H6;_OLHx0qWfFcO<V;F5Hl-K()kEbX7f$Zt~(&T;xlr!*?ExaE2fX*2hR7+
+(HLX%~X{cRlY9JU1sDgVCkbhJof+wVPaXgZ2H&4#f$<sI!k~>P~@SeH};Cv;knwZvqr=n$3H$6Gdqy4
+KEN61hB^`hfaFTM9%5!5+0bv7 at crXIE!da`#-5okY%TnKmpi!n<jo>o(r|XxvH<#WTCip7pl%J;@@2(
+t^(DAl74c2WZlx$ExL-llwQdW51fusA>Z2+20FZ`3gPjbk+BOEYzu_B0^!w%=?#`mHt<l<i7~%Y&K?b
+H;$l7{Fqi(C2EA;h7h0Qz*p at G_K>?e<7fEZ+^^gP)G113tE$aY>IFtj%kqqMJ#_1+K$8rPzU+9FzfDl
+tqcdp46`VQdM_RRlWn<fAO;NO^$Q18eiT><BSNf=Ej`J2u%hZcnOXux))#r|21{qtM{pK3Y5MEQfbXp
+~zBpFjdjL!@iQO=a-iy`jX)S==0uyVgFpMejRqtpwQ+=U+kB%;rO0D%7jGB*`y7POIS;<UxT)e_Y{dS
+eKbwFrUTk_ykJW%k0H#%?@5u%X6T&HLfH{oSHAcjMhM2T4ge8U?$!cpch1j at anWy4A}~jtBm&hL&*wr
+0^+(lEgXIYDQWk<Pxjyw(g?fr<N&{=htcxa&x`s6VK&V6d<-kzAec;TlJvtUBbDC9=A8I-Yu*kOl>3X
+`07F$MnFTi>zey8C<VhA9rmMh%yrD6MY04Yg!Xj6=nks*$3dAOKd+7uQD%R5<QC(D9#B(aX(!4R8r>|
+S$_>b)y9?vV(bb0{G39Moc!OR5}>E7YXBw*6+;u_MN8v8eU)<_23$dW!pKPPFX|hAJ2k#<=Qrnsu4R8
+i9BMh$-c<&_&gLbPdgI)<x_--Vujg0RQ9*y(;(h%J^V&t&biM92<mym;LRD`GH{G#S*!~xvb`$zz>GO
+a(dsd*{mU|!qb3xyrB(~>*7b<mo=vg`sdG-gAb1K3Qsm#C7O$M?P1*J at eQ2bn(hXcM9ru=7QW!v3J45
+BdtZ9!Q|R`7 at Rfz-1Fwu}$?@cwjSYQM41b=IXyFMt_{#EWx6XGnb+1dV{nr;oN@?7_)hGAMaHP6D`#Q
+9xx3;OQ5=@c4;GWtn#+bsJ3hAx3fkqNEKGJ~f at FQBQcd17ddZ!8$Pt*~-MVnS-D5|MdK=g3XaP8;%ET
+5gFt#>leCZ>)jfF-zDZ^Za&9I-2YAKHt}UDDE7S_&K9-EG_ax|{8qTTxs^*Lhh5k2HvOoP#TKW+he&p
+5$@}0JcKU=e)r!vnrkAd6jsW;U(^`aF+5Sq#XVA)Ns^-|I3_<vq8&-W!U{L-3#cgdu<KQs2}F77NMAL
+n;D at 6)z$37z|9J#=iADjH1h6Mhit)0A~Gm*g6ml0aOrlF152V8z%7qX--&v;EGf_s#Q>NN^@S#;B6<d
+6L3U+}?&oQin6$q=3{XD$@=2%)EZ;)*Lg(g?us?RTtz5tAb6n+xNs5_TU8WvPqeI&`TSU?OYn-tDi?)
+b)QZYvVlWWCL?U<@`sI`n-b%$pARM>MZ*hB+vmfY}QqFKOpB3tvkd2JJ&rZQO+fwLmPS5BVjUK at 6Zw9
+}@u>h(v$X(c==cNrlc4b#|pnFQ|N)8LUz>n(pLEM5(?mLqEe9KrEf5ft!kj6MfK9o{!IuD|rnbz3%Th
+<N5uR<g1%r4)IL;9{eSO?qOvoICChO{7Q at vtJu4iH`&g!}w+|piOXVO0CCIUaz^xpQIK4Io#ncx;C=4
+B%37rc{w;gJp6fdet7Zis`sDMFM!I(;=(oX4H#<-$q?7ib^N7Eo!#jf+OxTb24O#cd*(?UY$yt_4X<5
+j(^*@Q;IM|E5$Z({+WNgYJbAHVqyS^x4lyOK4Ga4we=lop#Q{W}1a at 4ZBPf9RYH!HQvEID_GlD>nSZz
+hbaVj3ARZ{qOzbHCMMN$Ac<f1|Kb5iIAx5_pq_XjaFe_!?(+%3hY!_rE-HZ|$saRePih|ezFlTU)da_
+ayv7z^Ih$?+jZT7=n(=hl%jW-MYUahg<dIxjKJ+!Du9VQ%Z|(G0$49Ay)uw5XVUC}!y4RUzpa4GvftQ
+toF-#ZbGwzERhHS9bXZpYcMJP<a8+Rpn(#2k+5DBL6ksXdjKrc`g~Zy6S+rgL*MVowuUjw};9{s2o8K
+%b at 3lieayyIx*}+0H(?3>-Zmefu-<!n&J0AK{hO4F~h`wKNs<rk;DxloXIW_1Yx9l8ga1^ABs at L5hbC
+jFkhtR4h`4;_d6YDl^e$^HVF*)R(Z;lmM?@5Ez3j{Deq0kGUT%dF>vTh>k;MlVft*ecI at O&9zD{fSsc
+*$5=*-Z5J2Q)HrYgds)*95U2+yGNx{jzqGCa at Bb#3;E3ktz(wbd(lT%w_09o81C at q^+M at LcIG3v<rR5
+2j!8ggS_WiYbF(Z9m4XqvoB6 at 1E8<d6B%DOeAnUv?HM%R}fFRx8Em=B5gG!7tda*sq0aDp-qNNG-dXH
+msW?iWF*aK6Zhk<g1~|BXMuosVmElL@&(R4z+NmAWn>@+LnhhMQP2|9sQwZ1_0on|E9V|rVO*9m=BIJ
+qW~{cW{d3Tr1_b|Sf%KsnEY-k^*MV-U6_6jYW4x_1Ru2-<n&}yh0>_N{Khrg8eD*0U~xQHDo}c at Zo8_
+ at z6NIUGkB@+Y(q*X7c&vFD)w~(G8aK(!B}8abr)Inyl*vPF=34H?8`sOpYDfyWpuAV!^yqPFF#UnW<q
+2%qAh<kf^Ue$Xw=su*iYF~V4ji!E|lx9U9%Dv52UP9&v4|PXv&#<F%WiGA>mVcCoB`u*PcDUPHZOHpp
+7CDhHoeT4n9s<PQ6l>h2KtznNwosm5}r-x`c0^*I8d8lXE*|L_XMyEKcndBGJKUiz4dSMf57%vkA=Yc
+|DRfGj{v#l$iy}XsKk+=DmSpB(Ut+%vP8Bx1}^v5=rjuM^uPZ-Z&Mdf!`B)AB`LOe{~Pv&2nfcffAn5
+jb#jDK at RGT@^=Y^wy$$A?5kWDD%HV$r(D998HklhIf)lZr at _i%Yz=nQddm4oVc=aKlfcs8IZ?~dxn9R
+X(_!e$Ol-}!Ay^n5Q5rVc7P<&Fka5CRTI+`D=<F+-nPtnbY@|-~wz83WgL4|Wn>wuSLog1exEmTXCY*
+*&H8Dx$dW)pM2{?lqlScy|I+SA*mq=vf<Fp6?O at mxkGlq{CJHSYzxoQOT7KNgDp3~iJ$H-H+;<bPQEk
+cWu6KZxo_U%QgZqZQQP|!W*pitl|8+_PuHj){!X5FO!5TUu#Y0&03PbS8OH>Wb<K#-Fr8=NzzIyLKxB
+ey%xv3cAyGWv}(YmS}?Fp!_FX*9ovDAq?QgbpXrYeA<rh@&@IBeB#xY#mZDI82CCzIMISoumpx=Zwx(
+EbUk4 at 4(P}c$MHLzU|}r8Jfc-)twU~R1=*EhwrB^7n0%Hl=kn=Z&VpurEs;30miR4x2etOA}K4i`CUq
+`K+v-!5eZ+t_%cbTuac%tr{yhVfDCY$dfOPEG>Z<-pC29R38{OAt#E|DEB>Pb;%5 at h-2BwGAIUgq5OJ
+>`buB}Vk(kg}em&pF(yeVi>dV7j0ylGPLHHbK$u%losSIAm82biB4*p^2b$AhkGNq^0t$#X3$#Jt~Vz
+&lB3W{FCA&1nZH*(e~d5~>T!CQ+&LWuN7C;f|&J;|yhcNgDgDV9E at It|wtjWPH at 1A{bLH at Id$O{PWlk
+YzDx+`UPc&dppi>(Dvg{)u!c0~(bl=P8aSgvp0Eg9&Ao3{knHc|r2-iskYt)0**JY?wo)La}7xPgkhE
+jQ#-9iw-E%ips|0lVUxTp2uGE48mYFPrO*-DSZ(Z3?wkZ0Z+ at 6^7T%VE|lu?s0Q2%O#)DO0v%(ezzuG
+ at H^y{6r_H2+cUuXg%+0lN<jt$d#y&N}$n5Dv?N>(iekA#w*OQO~aZuLWTy06LUi&&?8AJRpvO};RN@&
+OB9MuZ+WDXrLdb8H1iz98Nx?W2>lWszb>yIp_-|kZ)#iy37+!JtvMl3wd#Uhxm4A&frLy}hvbEE0(KY
+ZFtBDFbNbo9YB at k&UzUy|CMtz;keWZQakcKGt>J>`MZCHWLg$|G$4`eA!W3G_g_cHAKpWGS}?1#7Y~Y
+;zxw?Q)@>;pos_UzW2Jf`vPm0NAa9rmx=wbQ@>Nxe1;eA<`0WW=<R`4U#<zR%>byu_Fqqt1PCyjD<Jz
+0uPNwEy1ZaInv-bAx|thH at UAesOhBS4MagU=l$q|HF%gplUzGzNmYwQ9oR5{7z16j#h%ovEeB~kz1lb
+z>3o8%HF*O=$AI<9&+b at WHbSg0++C}N+ALeEjP=<Cl-x8joZ)`&X~+y%&I;x9#Q|u~hAD-vJtK7wNV4
+yna(!!SOS7qmyDM9=YtQaj+a7J>By{~rt&dDwE7^F8kwT5=<Hv2Ls*kRkZbe+XH!acFuCMy{aSxUJEV
+$N;YXJI?&P|s0VOv+<`$+lz>;~!H>h{AYk0_mN=ibhf{MQ|9m0^U^E)vv-kH2dPveC}#7V#~}N7JtSZ
+Honk`hpa*a_jM>I&_UTr-GyL=y*W2Wi&6QO((zYslhak{m6*8pvlEd!R1}IQFuStkLqv at ATriLl_XoQ
+Gm28LMYL(Mc93Ml;yVY<UvmR-?IO4{x~7|;O+cv&;h{Bl>&Dc^lE%|DRR8neju}DQ`Z|NZ4*vRI$I$C
+z;9jn^LD~Q9b7p==Jo=+}aMGrK7c<(X2$Y_@{eb)FTHgbr-(8H10QOg3fwAOBUPRoH)wB|jJ6%E8rJ4
+q6A$~s?Ztw2wJgr9qD8ZJGL-ay=D5_zw07~UM3S!2m<n{*EXrDD#z$q;#@I~UPvhYz73Uh}BSp;+>+$
+-s3Yc0u$BCQe7XD?<BP!v)rSLXQE07pSP%jjxako=rf`<z&XGDU-EUgQ%T;%<-g at PK+9Hjs@|lE>V;F
+j&bM1Y1`gq*VeO-O(w7MiZ*8`8H`0e}K6}Bkl!Kr?<AhbCF=m)6%y)GZfcJ{mqgi at ztZN`~mp+IGLqc
+X5?_=L9q=0s!jAc at 9Yl!srofD6wt36aH#?vlW+Dodv1K8{&JtiJXR!Ri(!4UNTHuG2c2{BE at RJsBRsc
+4acEDHWI9hu3Nu}zeV0S(Ue#&NdEEdxPOgm2)rZAnv2RmR&7S=8N}Hg9ey%~7mVT=~b79Xiy2u9cCso
+8B52?3X at V^Jq);|6FYqn*9pj*J6{ip4w1J;;JOK6Q*1nyT-dgpzBe3v_{h(^{(q$s^ed)l@^@>M6onD
+dI%@WDPl;8A?Q_a)4Y=^bU;K}9ewrkvTFcgZ*L7fu at 15mNwK0O|B#np^fkBZn3dVwNxgaYl7S`uZBr%
+nf_edi!*Z!PjooGGfhpb?_Kd+sF)C;sY7|Z``T_R;aZ%Yu%aV{Ti=4p+5m_&hTZG5ZCM-$+xFsLk#9v
+mMvb=W?ESP-VED8yaa$9GrgZ3Sy%)6%YH3ChkynX0CwE;el~E76gJ71S=Gg)1&D8J6HXeyj-TYuWJX$
+{%Bqy~sNtihd&9?1K3XV9DfTaEN>py65l9-?8OKwt+nY%6?O~t<!#^CI<&|Jvv5L2|2a5a0Ha!z7iNC
+7u&kk05`q3`L9;$U2==1Q2Q)XtD89vz??mlwLh*PRAwEJjp_|OHUyis+jhfg>Qw^gcEZLcg>Q+y|$re
+jIYJ$(G#N9(=eDyIeu%IxhzxmClpbn5LsdAzs#{pxx%x8C>P?LFN6eq}ww167R&RNH&_ at Vk$GL2)|O1
+s_5ij~*KZYXhyI0k8KSH&BVeHBUk4`rCKpZ6pRkErzf~5jYsgE4OSEmu!osn5-k2#~5HSom27)U~^a2
+QA9m=`_X~&6Gp*XQFoh%mND_-<YgV4;r<1^Kt~GkYn7hllgV<C0tciZ>$24?v!#)Jk9}b$iMsqG_f{w
+uE7=wvDVWT2mxX!zV>3F(q<`eedzD;MwRueOt3f?TI5j6gW^I81sptcNfl(Ux`J02YbBCqzt-*&+pE#
+B%a=4GYxWZ0!=tqI0sm454+FMys8{RCWKs?cK_oFW<;Rg>cX|u6vQ4OhTaSZhlb)>em-$mGx&g<|!D!
+7osB_PyEI3Y<AuRg$~l~N0=CC}%C|D&gFXHi^t_}rtX5BDB@|JW at Elj_`w!22QcwQn at o*FddRd6rz~p
+HU;2F0*NzRlK59SOB#sQ<D~jmeLa5x=M_(h3NHGpgypm)n>OmG2{#OJVA?-ZS=vz#rlLt)39udXiPyu
+K5xWADnG#EAoy3kaRoGt1lBG%$t4sPp5#Y+%<z!Nq!NPK(K_*?f_H>1iDXc9;(K_}T8-}W-ab$g9|?P
+^dd;Qvlfb5-*QVPlU104++qFm(7|a1PBDpK2hD%)cTeAD!@x$<lF<<5w|DBvbibQ3}W>uqh{fF7a6-?
+?r&lFJ;=Jyp)a+8NZ!p;QS5k>9CQ!lGaJ-LlGi8DIW`V3=8!TOOb6|izSmbk5X6i-1A11bk1U_keEe1
+mcj9e59;*Pt5+9L#FNo>7(AQ+Zpb at 7|Lq!$E`@2)s)jV!_r|HgC`t#aHR at H7hS{66p&lUV>z_!ZBblI
+H-(;u!YTNmzz|?BGl8|AgvG{%dJwWQ8(#)UbjnlDEJQt(OK<Wi6%i6{+b<Po!eWrjnbSnE4YrM>s;mP
+!Y8oFtIFJ0WkO8au`Q26M#!O%&Z4wg2dZx|q5F&PHR#&L!@-HgD;2vo%a+JB>oul|lCQFHX{vqK_W_F
+#u?jABL%VEf4}<g5<AbxK^O3w+*$cF923qnQqP>daWje1gYk<XK>X}#XTc-XE&opd8QdpQm!6~UeW%-
+Rfq9t!4ganJrzmnUVrs%pVvYdU}D$HeTj%)=?Gpc&Dm6p&xr-iO3Nw&-Lw{PB at o?RTi2yL1mVtz^&Hi
+t3!f^E-JVZ at Yk50$BJejBM1ZH}NrYZ{Wk8*MpswoLX51;KYJ2LMJT|6-V%q7bCD`7Iqz(3J#*h<z%ta
+!+(OH-zmHnOcKu5E+U7%x8&>;%#Q}%~ryXInFuDM097d?UHGWfDoP^OB8#Vs0kpptS*C)OAVuKax_nz
+r%EcGiy<oc3z~&+!$1)-W1KI?e85v#mJGW0ip;l&(5O-BQUMc73r*>`KW0~v(2UCXTFpk7!m#onv?#;
+8-eA6p)%!!}*k0};ur>2~wT}dv^DP)(vmOwXyB=igSc~Tx%Ct<zV!ou{_JwjkYCMR0hY8I%ndJmn7EC
+X23R1y6RT|l!l7<bvxK&Zoo{P4Er7KU9dANXq;&a9;fDjR)d*bV|T0UE-kqdc0uB#T{$BpxgA4h}V9s
+ZxF!q;(#>DHcL&=3Xm&sFyy at 0h)_uTFaubazp~+i*P)4_58j=H-927}nVb7ZS2&)uPW@&h|lsnkMC>N
+XK+(!W>W2JD`arP^`E59Jk at 5{F`>m1M}pEj#x|M@(T3CXp<IKlA at yG>@T&9MTX6;8WED*P>HY$m`7?|
+9x>azXK{a#!(FE#^FmBO9BL7~SJn;Or_pW_mF;+MIBB at 2@{*ARDY}f7r88vuyg64e@#cAb2c7NexW0M
+kW}ghq^jlyi6(fZb!7H`b1{w(7UcB6XDpyLTm~b`%X=9SuE-95|k=ANCYu^M$ve40CxjKEnMxw?{0OI
+H%?j<lZP6sJ(&|IQr<bu*A#<;1cnvdBr4C0_nFw#wTTy%b&J}{jUx*z_ZU$c)7dcS5JI_R?wmKcEKrS
+l_3n)e7gHB34WrK$r8bkQC5DCtG$v>gOW$!kQXFyn*-iJJryDsSOcG8`v~*>j8e1z<)=l_y8?4!cxzO
+yf6M-n02_q*eZ<93w+NBwiZ4Rf9ji6+Z-^g}4AVVp38E6P+KOMZ=vZkDf#@tvfu>6ep13-_SuiJ*}}Y
+Xm#K6<{;lpW2CInHf!zczS%>r>3ZLjzgm{0QHy857JqR+2?x+XYm*#TV at BXoZtuWo?wP}MZyMbz_wSV
+$LGfNB!Jhk$XG?FOFRQU`V{H|iYNhHxm(nh*tof3VCsCUruwPDEk%0$h&RHB1NpYaP7jU67B_KhKVd|
+Vk?74A)W=s*cVeKGBsH4E*>B8#iMX+Y}Vae<p)8`6HO^zP*k_7Mr`o+>T1za>s$|V6R(iDEndhCq4y#
+`AswwDeao at P}rIJa_^K`DgcpnS7SaW41x0fl$LRJ{)rxb4Wi=D_ozIV!H|38hZ|2l at b^uLu((vOJ4tQ
+=Ap?6my`dqA1fvzyhXo$@z`Y$4Q09TsUl)-&ibk<);BM83$1EB}O_UD;ga%{;(en2fGiEIK_;k*fOp%
++$75Sa;pPOG2^6W#lprF|L!hvQB|<*z=p*aA&99tfIM$8S(CkiQ}7+4Rbc$sLNPELu9}b4S{aTe?W|~
+tr66cGi39DDa*W2X1&gU0gBfj=_Ka9#ZsSvv9Lq$^?a7`(E48aRfp!Gszd at P0Npr<ds=YLk1!GVJRFF
+q6j}DJtocqf}QE>xW^x8a&_H^1Hf~$~hcRy>#Wt{;Ewcofg%W!>Ej&GihSI5a;W#;+cX4erN!Y~^IMS
+P&C4wMni3iB;=TCa$15=5<**vI>yp*YH9JA<LUMr=F0SOIp1T^u?4B4FJIvelTlkx$wmf!xkI$nE&Zi
+HvAt=t(%%XySbr@{8&WIfPbgak}Zk#of&BYjth7R at a8XuGt3zLK+Rn7wxAOs|?k&hq*Uq@$!yudUI{l
+ceF`+ at Pd{|m&bNi6B>8(=rY(B at ky-ZJeJsecD9N8c9yUf1QK67pDcMJMKPXHwNC;AAgo|@zAtfYcdGk
+8^0Mnm&#8=YFhalAJ{WPDd?0O#k$}F3!<DZ*`e-qsS}RsA<A&F5i(M5(Aa`kT-F}#Dn6?x~*75kE8wj
+jGVrXj$mW~l at l@e;Kdal1u(zRAZ9X}0jLK)gnY_(NP!_sCL4ZjW_1)vopRcJkwXzG>e4lkT^e at _=;E-
+Wp3Ve{+`n`ZahCwACy`lvAefW7;|*Gj%PeBpz;dwv|y?eK1=-|2l^H3a<R!`|NR$G)`pVTixlhGN)4=
+xZDztTQIVCSn&u5XY_zjFfw~ab24`!|m5MB4rfG(Y_xI-IAib at eeoODP1Dq^f}QFs>1zf*9(ZjX%B?A
+g_Ce|fTOz{9dN{ub-Gdyow<y-zPo(xWZM2FYIC++CN+!5R$XbN?N5!n6SK%Q`?7!hqDVfc`O>;%W(C%
+8&EE~w`E at sn4800PFOwHiC`FGdN+X+b9bkwJJ&rQe44WfRu7WMM+L16A{`w7Iw#Glc5z#!Gl+J*T`u6
+p+!?VT;_-Q;f!;exOJy=@1>jp+%<G$WunAwmYwZ<7^n(r_i`<j*M(dm}7r@*lmx(S1<Q-!9}1X{hGYR
+&LHWgo2`X!IC`9tBqQ3xbPLFQM#Qg*#Hq7nUkpEW_*4n_m&=c$CCEZeDP6FG|{%BpH{G{u}_iMn{d|s
+}HpL5nXI?cpIhlT`tfE3a|4}5j3OMm&;MfQ!z>_OXg1ovw>>i>BC2$=lw|8?e2Ujo?2ab8{RnrXI~mC
+Q=<wQz_0Ebj;eY<SQ%)EqO6p|v%^<!K`CUtz^G1!ke2$QZ5TDsTY6Q4b#PguVtISLPQ~+IUON@%*{5|
+X9-sW|RGeI`h3fO4TvW&NwOV|3?6!EB`mvisHD4aRJavbsb~b6Ktn5Vfk(W6w$>(+Gpevp2E9CncmpV
+_kSOqrf+!n#4+81m<AV+Y at kYOat&Nu_aB}y9TJsTG)oki)T#2zp4 at W+beFQ3imHK!S)lT~D9J5e{wqw
+8{3_7LvFsEg)d`mMkf$tC<pNniL1xd9GM0+d&o+?aDfF{9h{c=#%rcEs7YaT}_ERpK1kC!;DK0Rfx=B
+a+UtyhuhEhNE;bF%T&~rHeA+`+?}dB7t#b(VNFd&4{R|ZKdJuD_9T<ohP3Yyf!>^D*_ff$Zt{XV`j_8
+lPK=Shz!rp8Yo<2G_ at IE(8V0CG^Ibnoc1X0=8xD4!(Rgwo`Nkf-^x_^U6a#0xm55*gQwKeKNZ9{vg1h
+$D0Zl)5&#NMbub+ehpDiWqN?Gl4<l6^Y6G)F^%e!$r`uyZa#2wc>QlOU+?68cb at 9+VuHd^<ymjJKijp
+UQB;yK36%bpU3Fv~-$6UskD@?uDuKLhlHA<|9powqa%6#Jiv0ersHDx5>OqzIsa=(MofTTrvE-}C9he
+ZL>J1J(YU3p?IB6*|(h5OK&0)|`qk!}lURDslsB#>|P6f{31l<t!992N;uX3ykk(Qh~eTZ8B~?Ee-rX
+m*u}wu&tnJ`+dEHOgWcdJlo>$5%ZFP(Rv=x9E}ushg3y>|hi%VR1$$Xyt|~O;pIkEV+?)KuVatRY+Yo
+m*ep>BWuDF8lV{m%q?Rjtm5BfPN{>GjHr)?jwyP$BvUKdFnm?*Vjm><t_e@>n at p1mGr?r&u2_$raSH`
+xH{EVY^kt!C;e@*)=da>yZhCV<=L&k>dZinIW01RHMBz!M+N#<q;u}Yw at Z;T41r>M&Mvv!`XQ$)1q{%
+&F{A0fu$(w(6Fs6T}7~^4EOkW?+_Z$3vGw%HR1D5o|_Q`N~`m at pOK0?$n|MPNy>e7H{qwG3?64gh?3d
+n$Tu%ycCNB*cnt={B#9R~En??<}8*e+2gh#t?YY?Ln~E>Yj8=NN40dGe*ItJ-m7`~y%OdX+QJ(%4+ZC
+8>WZ2el;02#k%m9xGFi>-kR3GafJs(-#0{jfMhg(Mdxet&lT1iAS`rCpaFLlsJV$IjSy`;9}bflew9f
+TfUh`mq!^!&eVxVtg}klY#Y6 at 7`ocC`HNX!?RM<|>OE1unIKF7upNvoDjL5`aF!U?4$qPJ%%3JiEn~D
+pGei;3i;4><5kn*^vklWCVKhUeZOuV*@`rZIM$2*vRQ#u%h=k?CRg=SNfh~aI at YNFSiUBl5-};9~%D6
+*??y7Uzi<ZRfk|mGq>Kdeq*QH*@rE|#YBs?2o)RVde268!%XV_QLZ3NI2UYs8%NyeF at Eg<%}X at k|d>9
+eUbwYrH-m3(7GMP*XY@@b+|TnQK>nCc{+Tq(CWDVzIAj(tq*l!v9h76Iy7GOcIMGgx_BToJUY(%=-O<
+TrGWNm|M=M+J`C?Rn?X?%o>OK40VIbkSxcs){kdp`+(<a;bt|u`?B`h)(hn^=XUUWOT_*B+7IXCXrU7
+Z_R;ChHQD)kTIeWfVqIw>54#UH5A(+YMK%JiVou^eCfhy-)Nll(Pj)-L_|M+mJl(FmF0ntAB%iY)bu1
+x-I<zE)TvoRpjw?GsE>6lb2V>`fxumeV$co`pf%<w|0j0-Y_DwXiQwhh=Hd3`w7l}9pT>pGh;U}yfRJ
+dXx;0<Z)cskP{GTQB{DzDiWZJ01G^oU|u>@3~QwCMCVoQ7p-0ltQ)TUN&2nt{JClOg+zE^oa$>%()ea
++FUg>^Q8v{;Vk=>#>o|4WoQN<>&L7fI3CHZWk9O-xqHrZN~xiU6MpARv?fULw{|cWl>04Kbz|*y)6B7
+At)kx143E_KRy^2X#~c(v?r&9G;9`A71<<*XULE at sb6!Kr54+=1cBnUWY7DL!`V~VbWDY&^-FRs-215
+v#G}>+URBu(5#+7vqdsPJ&1Bdpz;&r>C5Lho#Vg=yfJNDB<krH0 at 6EN>_)GsLNI0r&8Lo9yTZ-_O9;;
+j_s<TWpPs$ofXMgnf4Yf_SsAiwSXK-}f$wYe9j9y|@d8xn0&}gzr2ZB8qDXPlZGyCz6yj_xRWy#Eeq8
+L`-=c0>CIogxL*Hc}7!*znVzHs at ZRsB#6ksEBpsdg6*KFEv90;@Dx0)aj9<$%mMGFGs-*>m#s*j=iZe
+x8h6U5jLU0)A+zqVHDEZ%1R3JcVYSR5=+YAV$VXu{(rGz at 0t_F=dQ4TDwP9|n6I|8-x_WX|MSVnBjxl
+9pn1sq_w%@h^umC=NnR1Yz*T>^ab!;fd|>Xn^OyaK<Qh24x)}H*0pw7=Ne!x*chTuy!{>AUbB66WP at D
+mA6JKRv^Vh&X=x$vmzEw_B<t0b%{@QfXlcBm(A#9in2If(4d|7zHFYjy%|gm`+#rEHE4_ASOWX5PT4S
+Kk>>8cd~ylX1#-tsTnvc2TU9<NV1ety>7}-cHR`|WLop{teE(;KR at f-+%PAt_ET%Ve<1zLZueONHT`d
+Fmqv!Qfr6;`>A^I*IrBSt{ebw`@_^I<8Sv_?m_6{*yz81tu<A at B9xR(=Tzn9DT{I=uy#P5-FvbWz6g7
+~yw(+V4bl}qBD?|-K1$OO_?Ahu3n+er<8`YRR#7Sh>pi2j@<Hp*Kf1do$Tihn#oFA-i;PBpUlo4nRu0
+vPJ^e_#cKudndTxx|I}H2AudDQFUg_X<kjAZ^%9_yk{1T!8AG$^X~aPX53C2PR*Zlzq4n(l}S2Z`4N{
+wr0g_e?J<X(>HGf6^6!GiqvZNJ;;wLjtA!f<yM<`QAn4paSbYndJJrwS`QYej>OJ$sG?cDHv%iebQ$L
+xtLe?3qa{d;<pi|G6qPeRV`xz=RD(uNj3&jRMTxLP4^yAuyX(PI!T;~i;p%Z;YrKQwH~W3v;Zq~TXUy
+NXj;AY&-FZmibD*>bwR6gi@~<8DyAOMSJ@`i3>jkRc*kS8AJ{Y`$e_on)XC+M>Q7w at t4%9IeOA{e1{a
+t}Z7!Y30^$C&I+^yZ*T<ZZ*q`7BxHLEWMsbM5fJkhl%Lz9ie3MC5Wnhe4ju%pv}sZ^wHqlYMauO)7^+
+0|^3EnMGctDf9NGr|i2!Fi6R|08{|@pM^#{ljG`RSU-ewdv1b8J_a>znW(Z)?pejk{+SgjA1=K05H~J
+1MBD^HDQdN{eAaMk$<_ZPy1~r1z&<SoE(1N9YB4DSGdGr{c0PlZ(|%?;T(NDbP4g-m8-{J(@d$(qHY(
+f>}9nX9n9xiZ&8MGw5A&dS-g|UWUKWFJgTe-871RA`a_0;J^^+GnY#GwcPNd2bZOLw{C&Ev0TYQ0$a?
+Q^jnFcsD*yg70}6{}-#%kdc3S1IyJw_fr`dE|i7~S5Tm_bu%7f at ABTkZRGf7o9IZSPqmSmOT{Bz>QT3
+8&PjhnT9r}n`#nlqQ5aa<FUp8YG)&GL5OjOyg=adh9zKX*Uc?FG(@>eDKxtfMGjVldU^LZ9{OY<%0kF
+%P3)QP`TCyjr8}@$L>WYn6e<2HtY%z(5f*TPpj%w?DUJ<7*$E8m5(?ujiTa+Rx`&&*lQ>a<#ObR95(7
+Kc}xwzvhO@#J!16@|CA1x--&Oaztd~j)~?aT_myHAo|hI$t|D!;`t9UxG6!36?9CWP?VI~%mhZ^pz^H
+FnV<n;f@}~IIPpTEeU?CQSYGq;7$>eX`gM*0Y8Km7zCA_jq;?lJMxth|_Bs8i9z-X*pXGYx?{Cb`RsY
+#CMuNpX4rxQ<g(ejntm56`rRC3M8DKO<{CVXDV!KOlcw*&f<9OH5DX57%mAjJIJSE~xsV-Ht9 at T_BH7
+)UuN0f%9+Y6IDAJXsP^G$qnlSDU|jsR`cV+<EpW9}~tstwzkd^S!09|}>#o*?82<k;szpUtR5>c(!}T
+;=mX=gb=-(vCGr6j|uorwCr8oCOo6=ZI#*ULT=}p~{RPhe9)mrWc+c>COk`)}TdSP218}6Vykm$5PUF
+ZHJB-zf4)(*(Q}2c7O?qSGYdM6Bd-$kIZ3_inWV#m(R%aa&U>sV=*2QG7tjAu_hN42x)`pmwbtQ&E^`
+@^zzoq>mmqlm4-8?ayz;O2zW&%t at vQx+P$Y!a`5519pVW7n~cv^R4$T9dYSSiAmzkhDIyL-<0H*GE<f
+Dat$;f3(Ba#V(*-XH_8|#Kt#p;zs~j)lIyqX`k at -W8zXtqg%XF?o!%<lociAkOdJHw=35w)Xox_9 at Kh
+VXHigyJVMYDhz5b|JL=JRF6Q6;&mEFlVFGUvIVmsWRW{=)2Ez2r=_`qi}f+&A7SS7S10PYY<LD=%wiS
+(lb?1DT;N)Gm`nKeBG)`o-trEG#GaO`j#NhOjn9S at VLsQ0qhyrgOL#_H(nN)Do)^uQw at ZV)hm`PV5`4
+*aE-K at q6FS;Q?b%Ay!63iH%m?UgNE at GAgfPj?xd>Lq7j(YUZo#E`|?!4m(MQFzEF3fvf8d9kP|jRY4w
+~ssoM$fuHc<j8!#IGvGmN)*xP|lxdP2v)uGRGs1tH=gMVuO)=jX6tp|C+~{#&;nm=LbaZ}p_^OM=-LL
+~0AH8%981Srb!ki|bgOL$E|8jD?uIptK2_Nky_`=VOShugXEb*en;%ZU+W#4 at Df&P392126ffSml28s
+<Ai;#?c3AWVs^X#clYKn|PC3%BOSm=PbpH3)|FR_T7pzQ63khW_}l<Ixq#P>xrO*Lss?4|m0fEuP=Rw
+`H{Bmz6F^Vm0qIHiYee*a-|Me*BKrJj$SKlgwTmorTEE$<r3Di+6NeDqGiy{n{{5EtSm+*Xm<TAuK^8
+6MW(=T(gnqKectwykqUxeRkZ2pn1)j>o(+5A)~y(L0`7)2Pj)N><JhP6qW}_gWg6kuy-TxwVc*sU%Yp
+mIMQGO at W3lHa|_LkLa3$51#%%=XS at W63i@9|vBKH<<L6Y|@%trtC{1>XkNka*r_4%OtKJzzrM{Y7Tii
+I-o$wK`8cmfL?PiMN{Ne^ivug}>50<XYYuKu(bXXrU-Z?h$nH7sW;G>dSLM_B+R?G~1W?zkuH}|1C{C
+>O~YqwWn4$XUQ{DK1-Hh0R%xCv~4zM8vX;cb6zWy!*cmGNtH<t9r31xJz?DM>NT%VZzTLT&&pOl^kVt
+a$F7U#gq^oa_4*o15m#ip at R(hHi|KrMXXgi>r`wP+d!8XK8wYjfv%lcbN;0D3C?J&C6(ezO{`OJxh~Y
+R*NMST@?9rIcYjnvF!``aX^FhCR}<IprV2Uaj~mJ*JM;Zyi7ga--@;Zi6E$2=U(~OdnLuqw%1*a5w5l
+7NU$DJ%-rg at G+OYe4O0V-=g~7ObEJ*{0h?VI?r;w}_on at O(@ul5<$jDVt5wkVNW0gDdRVxzF(aFq$$i
+(DlIixnon8JX!hiPkKh1r+M<MJ7^LzptIehC{jJ@|^@5x7_<qf}CYyW!?q5fsh4JFa!`=p&tuL)QirC
+Q)HSWNr8ZvWWndt1x8l!PH=+QEyQynY*8&j?loa;srRaxF+jg0^B1viF&Nkf-|8urF0f5il<uOsAgx$
+T>w(kFPm&N}S#5?2xXBsjIUUW0RQ39mai}<9QMG7O<)&gRq^)1hbaOr`^s2pBHtKR!%`da=#uY5dX)w
+Dn@}M*pMg!@#j3HY!?<6FO!OV&wtY(XsC$i!yw6k(>@T_9*}fHro2L at PZOBzPdHa>%8MsgI{3O6>IEW
+f4ZrdHIk4?5CPtTq1)8jVV_{s(mXs&6j#kA+(a9C&HnK3YtM*w((v?p5)=xkLCR>6DNTFY+7W-Oj+#S
+tHh8TXxIFNmc?ZqZg!LZpRC(Z#kae>a-_DP$1IKVI6&azaOD{-dk5l^$S0(GY$y7>!C^*tdq;T^;4y9
+a<Zo=wpdB*^-B*4^#XAvDs_p6dHloKt=C3Vz%ZPsw(O%2a-xjPofhc3MHG;)^ZboXUZpY)8$LbxAxNH
+ei3ht`a!b^ZSIzEn2$dcBck2loLKH6Hk+ET at h@n at y@XBTMXGI+}2|-3%$CRZ!-*_nX`4ab}wGtT}&>7
+3mRn_Mcn>kb?tmeuZ>Hf?lhMS->O~J(UvLwN-|~lBF?507iMloGo`P`ajadNLeV)sD1p!*7&j$wey`3
+g1Rm^oj<>Zwj<&57j*Jta2nTZD%w0C1fCn1hi=>P_<p6aZY@&f}n9X(7`us<ps%~F`)MY&u`ldInGOx
+x at iy>M9;Xl at p1mit;Ltu(Q`aZZ8rrJ)>l!)Uj^53MYFYh?9iA>}~YO(Aa9DbW!hEy=7l($+IIhtq at K6
+0|AVl6pm&vJ>?U^I4al+!GFmu6GErmF1ypoZ7Dv)G}mmi2WLvRAoLV77`e$BIJXCrXPV<@{Zel1fWl*
+ylU%;58S)3*UU}+n!qd=or#$`pGdVr4e1EZwE3_Kb_$Jt8R at q-4r)?%aLUE-YPXS;jD9g6`Lsam}vXi
+9(Gs?)qZ>?rZ!Ej?WJR at dJPe(zr{<Z_Dr&!bX*9bc%y;QZi+psi#COD(953^piZiIKG&hDtE>Ia02C{
+!8(;y4T*-=m;!34DIG_YCxyg%9&Plb_ZY1ta73DV>#{Q<$@N^;>>QcFSxWG_k<RDr)snMsVYH|q-5l>
+%Bkn^!K){!?9y`(drs&3tq`*SrS at D+owaql?n8To+4bG}e6ez7rUl2LvXCakaUkT5$!;o!|xp<Q7 at 5<
+wm8#y;S5j8js~vrn~dqWD4CpU1_-kuCL68DAz1 at x_eNE8~c?a<zuS%A~)Of45^tp5BaJ<Z{?ojnJrCn
+#lCgj|IJdP|=#^lHzJvkOv5C0hzz-gfMCWh0{T5 at cW!R%o<3G51u9H3<fM8l^}CqLi0bsQkeW|e;!|t
+r*RbTMe)EE=gi^-1GjTyo+o(yy1-I;ZRzz?-&xDT*f_Lfl(FdpUf at s|E(Rpu at bH+HsWq;Uv5VmqAX|^
+Kzz+ohhr&zKV7998<jP?44TV)G8=mgASTagQGeTMY7!4cl>3a7nsI5jLWP>il=HA5T;KIInfh#uNG0D
+?6%xgZboL<&s;x+HI1XmWX$meM}7nhyrNV!0nM|f$e(8l;2CEjaY7L?x3ga<DcIWYY3JkhMUwwu-F9g
+17x=wu-$E8Yig!@GcB&s)YIBKK><@v6(q#{@?!Nv;o&yo%evGMi(rkl*yM*9RGENO^^0rb$b*cf{Ew>
+8gn>E7#B8*Q3RUl>fAOa at 1A1tepZaS*S2LY;BE;St9Pb at u!4NoO=zbV8DQ at UXHNhNPxAn3}w-6yF;P9
+nUR=A(s8}MSMj4YPDbkWqrZ7qF%GlOX_04WplV_lK~@nE9ep+tW)Wz{8t4_!Xe6kIsELyd at R}{%9{D4
+flUN<PHQ2s^XU`wGb|$+ngI#yj?#fgR%~%%G9r-8u*%JFxe97Ts7Qb7;(om6BwaIc_Br^)sgw^_XLQs
+6P%~uy#Kc|>TEQ<yp at o_?2S2JPN5Ok0w(+rJuLAB!*?ZL*7w2n754bV78dj=UaP1MYC7osEk{fMXA90
+(oN0u|KWN_TECYQ9^uM-{uhek2YviTS<69~7H{PvV_89RCYg_9|PP=}j)mX`<x at -+Evf*VfKrw`tzEK
+&l|8h%%B;4=N;eMFtw)`<?nGQ4jvG4#<{dpH2r(G3^<&O$rh-A*dZ4MCCR4e=b1=m|>b;5S8MB?y0B~
+wn<z{h&Mb8ppzdIrUTFnH8hU8fM$<&V9iaoP0M<WYit`ySI0K9p at l*g`I?$!Po=VQjf4{xYg8;m45sE
+-bDO*d4{88gR(&K0lp2|X*zW>(8dTu2>A?sy^O+KcRv_Eflx3pIa<)>%WtmS>qEelAQ`o$DE<3qGPno
+_0Z#@5mPx*khZ#uxK6D*vLxVfjE%N#}acjO$$X3ITxwbEv>KVZdG+yxDn(c<d1OegW&-B&o_!_;UmEZ
+Ul>fCJYp at G(cNv0TmAvwDo~`BVg0dzEIaH>h(*b#cIC^qa2RJ$6Fbacf8N5~bQ0V>MbQQPL5%m#SWc5
+>Pdk6+d|>OmZi*6FeNF%ZCdzGK5radIfJvLo$Y+*ynEDn02|SuF?=RUKjA<YY9%KMTgiEiv0)(V?nw%
+hb(7(2BVTw7zR3<n8`WqQ-U}c*fi{1>+xw at k^{kW`^U&}g<?YSl!;c)b`z>?xmbIfWxFeM*FMb(&EA^
+lS2A{Yf<>8*nlXcycY(H^XIG7E^7&5S?=a<B^IRYP+OmsoK!lZ5Z3L;OedbLn(kwav#j${e+7~Fc(Xq
+iVD`fj>f~m_phBdDne|GHM+DJp2j!5xzf%KN|T=6#aIgO>hyFd0g&xo>+QRG0bBv8abNq9HiC|0m^gj
+(1|(rZb-8RcXjRvts~Jgshx%sXnKHtx&zKKvSrlQBw}pw`@1JtGL;VlwRTdVe(p75qt8>8|DC2Ih#ip
+<woGy7}e}q|eVk2}jZr2U+01(lkOj$3gJ=3uOYx^1<QZ`=j%VCPm*G at X+b?iV?qy5L4#MVxsTLxItz3
+EypxetI)_b>xvDQH-tHOm{}!s-8+y}&T+87J8KeFfR4}8%&8l6A4g4{kZy{&Zl17mC)KEOJ8gWht#0^
+O*2Ji_L{-4j11jx$Z!G5!MH`Bde+7AnYIPC1nvyAX*1kvqpSW60Q0vPFjs8sBIN>P{P4K?SySQVS+Aa
+0kbZ_QJi_X&0SFP6{J4|u5-qP|eLVUv7?u7?pHcDbyV;5#U)-)_)JcLU*3)GHa<6FFXP$kzLr_(A^<N
+AHBlg#C!UIVbt>11slBipz$7+F5;kW}QqV>I273iX`y9$@;6P`PRl at FORx<^gM1_zj4FRQF%|`s&!rX
+U9Lc%#~OC`A=sxA~f?E%Pg8xQY;&v(3Of&OP;Ow0_-U#f%0y1-c_F1Jw6=qXId_xhz$j#40cK~orAkt
+J)Ni5;vdwbND{Ecqu_BZ1O^OM>0$cL>eO`?w+suM=`uuY0qFtnWilOz0w@$xyPNafB+#wtuCo_fcBKG
+{3Nc at l*3(n_>o-ZFO@^fNB&lUO-#`TTI2v&1=&8YjkNo@$EX^wIGV`j_l7Q`|#ay+<$&~s8*&<6{GUg
++lm$Sw3qhaQ-e&}>RV4b+rxmu09bJl0R4UegTl3Trn*EG8u{5ez8NY$$@7KYgPGE)gXB)R}|9a!?|RN
+H3Eos1R8HF?^(a=j88u`+O(;imOaH|=1Ho2h?=5g;YYbSk$Sfo9}Emz>piTt at URQPFcqEz5I?%rnhF&
+K|6u%$a$=6R4rS-$|79VfT(VJZA=hnfH7f5m=fRUQGm+Ux&cbKw!BJ0{(*br({l~5xQ22ALM`9_ at Fo4
+Wj~tTh2v3N3}6sydjq|$lb5^6^_M^}YoqCPT3%nV#7}53)gj|2;@*$6Z?7H|vu(}QL!!9lp!oF*$(*e
+%!eq-mJ`Bx04d1mREtx{xpFWIcL~9&HHXz+$6n($XZx}{bYThDr+ at UP&lsVqW!l-IHm>yO8dZsbTbX)
+UlY#{57uRT1SKgkk at lSkR~T0 at Ir2_0H55MJ!Ux%q~+IJ46ib^2d%q&LFgs$@oTW+umTYzOfo`02Q?>$
+q6OwxLDLI(0U|MpMgmZ3NP#tpXmXKmtQK*Sog;LgQ&YqD~4y%a^=4Q(mRr0<0#R5)Zb;O1N9rz+mFP7
+5<WD>eW>aMtHet=gYnK%1g(Nq?xqkx~u)<Yxnq2;b68A6}32{Xg2?6^^N*BR~W18q at FycK250-1H*NQ
+*&|vrKz?<r9nP at n1SdAyz7X5s9VY9K?D{$01NiSHF!|N(uLG8IT?Q;KEAr~D%G%j<>e-OLG8Fmak3ac
+2POAzS)m1XbqjBZ1Wq3Y>!prK7S8nBJ=wCd?1bgIfYj0eXOA7D5TPbYO0>-!C(cC-Es|uak(Enj!DI7
+=E=*zV=c4b<YY*?i*nH6SF1o>nEDst826>*rA%R)SX!YPD#F6#RB?G7tGrn!+EqZP??R4EheF5g7Kkj
+DY3X&t(%o0o4N_7s)j1*R{W$lQ$gG9NZHCmbP`s_!t{H&^OdjB>qUDjssKFGF){HU6WfhWT~ihC*1uv
+7s52y;vGtWZ$e2-~}QP7~XtD at f2(}B!H2yP~^+mmBg^F(!x##O-kQ9&p&C2%JmFW(-)-BMxnu$4<z5R
+(`SR2!Y;{n4&O%JLu0@)n>gU+5`M!8=!!+KVMClOE4<Z%LS<itX{<Q+YC*#DR_R^Wq+2rOBG0CD;w!+
+U;8#RGCk8JO`Y}!q9X(S)+~~R2BRXInjo=%S#%N>-rs|m1PY!P;a_}=*IZcnzBCI;jiwdi=pSA{PXl=
+gX%XYBzxvE?m$Melv9f+0j5l=95WJ4>sswKj&h%w)4r^KuSbSGE%oxdz>>yaHkui1==Sz!L!fqxs#j0
+_FAt|NGdoD9!v?9^&C(ulJQ_BffuOFGQg=62`KGywVsUOtTLqX0W#q#YizvFB^`$=deuW2am<wq?tlP
+n$BqFn4A0M6^g;Yh0^CnrqD6kmkPSxQU~V(h9inD8N+Tun##7B9=k-K+h{PwDeUx at sNs#fV!qc)_Q0u
+ at oPY3R@KZUiOK at 6LP<n)UC!(tyu(|@P<XtY%_wFq$26-0tR+R!k}3voR{XH9;-Uf&8$Ax51dVcFfc+Y
+#iRB2^TxfvpxM at z8>+7ll<4alzh<?PG=ssgonm*=~oh0LU^2q?L!|pYP195X0gcjyO7U>fb73+UGKx;
+Hz^Cc4u3TgsNEm8+ciudEtWFv=nbnzR5QElg!+j_xE#tpo<z{#h*!?ZsyiTY+_CEecG&_9XlnBrx0fk
+ckfQh08si+1jX3bgKEFtGV at xr6~wA#HS4Sy_siIn8Wca5i>z*F;Q7biUrQCY8-X;ylYY`!z|cI)dg3r
+f^oT<CP4dftXQ5YJ;tfKG4Xu+(4{F4;HXQ8?wlRqN#^f2iyY4{aXt}pqq?bg~D;uPQTEkp1+JXhr^wn
+N4wvnmkGu<D9F(+Ehfurz7tW(p|(-|id0S3XH3<kcDIYB%YyHQiXdW!MCX(@bP=2PJ~i9Oyg(5H?vq@
+{FkZ?0*3w(_LXo)+vt!??MP<X%tKm)Au;iS!)Y5Xxs at oL#;z;$mg$1o?j-!T^3RV+z at Kost-?W}EhLJ
+PYi4}b!WCtM9-Pd%^F8I-#TcFo0+8un^*a%t*fDa{K!~;dSQkD%xaUG at QNZB8a*gN$qqNs05-6GAK<7
+?4%mpaN8Q0I-FD2iYwN2*uAjqw5<MMso=8aH;;TCpaHuCA(>MrN)omlYe4={Ah%0UCEE$830GL%Rt|I
+~(#{7WIIh{l8F40|XQR000O82?eW2PMBxiuK at r63j+WEAOHXWaA|NaUv_0~WN&gWXmo9CHEd~OFJE72
+ZfSI1UoLQYWs*;8+%OQu at A?#jdP%@B?O~x5a!8<U4lU%cu!mBFWRLA3vSjpUoz183$oB3w#1~uRH}ig
+al9W<B?SKD*Nry<T2TLaCZ~~(vw%{G40palUus{3+S(G~|;)D%#)aXRs)v#wpX~zH*p~XnO<KE=KAT)
+lQSZ6H4OlbgorI^@gb?tn1Ezs&RlWjql^*C7^(WMA8T6@=GM`a?0-~$9~{1F*34LS*Sv^w-?PamvC-(
+qkD=q34yM;S1|&&(NXA-=!rVgotq9={2}ramMX(r9-ag6QBL{DkgCjwjXnCKsT({Fb*O1w{UT7T3%6Z
+ at OC{IZx3AKY~(SPC1}bu#MIxdYcofbzMPAM~WO_1=&%<w8~P#pl#e{EOxtdw(FFV+w)SX*3`GxkD&X4
+xOEmnlQ~h|?YXtbwCD2UTK-QsYy0w1cUY>MjQvPkdb@&LDnclwt>um0!ykF&lNHDX?ecMEEQR+lvJ!B
+8<U4|*zL?3sLVV(*=W`!)+%B0;%LOW at Z1IS;VmO4s&-_k#s;ASMQCu1sm+wyrenFOB>d)q at 6#oEFO9K
+QH0000800{-FNRO6skjzN{09jK303iSX0B~t=FJE?LZe(wAFKBdaY&C3YVlQKFZgX^DZgg`laCyzWYn
+vN4k}mjNzk;LLSxIM9Ht$86(|uN!N|$b3Ji54TcYD3b%p{qvB$JhytSV{F{PzRo1 at 9XGk}P%iKD+(&V
+-+I;KmZ5?A_4*AD$lmP-+o&i%0nLi_FFI6?z6n?1<N8!4`uvY{rhn*O0JV4$##!>hg}k8QT$t)lyM%U
+#l3q?nWD^--TL0Wi+9g^f9So<cCq?f{q<k>dg_1ocZW1R3pYU?gsR~E?<#18d8;rzgXtwZ_5b~$sxS_
+=k9&E%PlGUydN)bA>3#b5=g*%%`{w at Ry4qxS9i&Ngrg_?D$*$y at U)9K-LF&ruYN>)S%kwxa)6ZvhJ7=
+ozNpvW<rVll!_wd_CJu1;_I8)V@!P>3!EX>b#@lBfS;<I>HCgo?zUPIP<`o7nY^=dM^*RP+W at -&UtL3
+(zR?4s<ZI2#NnLr>)w6{L44+A5lIz1?BERKxs`%d6H_aUSo&_>pNR40ekDY<C^!<(VoJ=Sk>k=WUH?_
+*O%GNTc0 at vbT(TO<~1Anb8E_N8yK<nNR=zZx1!ilj7B`eAJ)aK5}|&h|gA8es`ACNak^&eiXf6XNJL4
+_8l|iaABB`&7J8X%?{;R5pUIcNVDA$2BM at Ik$Bh4#Dm2HQ*C^^R|24f&Z>W@>RxB%S)8qo)ZCW-ruQP
+N8^~6 at Rg%U^B8xH(qEqeMq3)hyrMFYdxwpy=JJh%fwyL^24Tq-uy1}5jJ8P1i*BqLPf>J3X#dlnsB|B
+A5bf%W4Tpf{Kv06mSK#i4BYo@;_+}8J?h||?sm}Z62aA&JDSf6F4+6Q;6mh0&0I^1rnqE*+;?B~gPQ=
+To=!nurvX1i!>)vf6w^&mX><Ad&*cWS>n#6_u;`q?(fFYi+O|3vM*hc7?AdEJY$xX{x{OQ<;PtNmb~X
+JK4az14;CL#W#-zIoKi*d16XvTa;$be(Zp7%6vZY^O at seD|?zCr7JtXE=MW*1JsaaJ>ir@$DZyGV5#8
+TD|_3K0!uk1>da!t*gGO1*qW%|MoBn%HUD)z*^XfX}xNEv*Ks9+Ws~%rpjU6EGa2~*6?%;MDM~`nN>5
+cq}Png#_q<xtl70L+EF`Rzp*#in2}YtHAjbinuLL>#NfH6XL+{YD>e-oRg+0$!wj<4M`{F|W&X9J{D)
+qaw<vEz7y#AX!#`s>t9tI<(CMXYSKXx at AH-J&WyI=fJ?yRynWxnU{x1DN&uv=<?X~qn at k`<P%2tFVb+
++b_(_mHo_by8TZB&K2)`GW3b~9C9zPcT2`t4<0PkxjgmT7!e4Z+tg>Z*p`!@u2sbgC7tH2=X?9-M4sm
+(>jve^(2>8BtDGGZ&5X(rEBIDsR0>n6>lAJIwf<TCpem+aqn6mZG58D6>r&_)!*?pZ9*N;KAA11FfbW
+JbU-_<Ig`_JorX=oTasq5&z3TZJaghjU4HAH2Yz;-Nw>wq%QnR!}{5o=DnqL>o4}oSNnS!s0toygnUW
+2B6yGu(w4mAjay=HypC#r(VhCL%6bpa9(l&A8l1mlxE`o!uLrA=fNH+)z&f?@wcMXMtC`26p7){*?y4
+>BFvgXv{sUE7%l7o3icO~Nx#jG|j*vTx^KB-ixd{+8aUoi%?vk(Tx})nujQ<g=lTK+G>M%vUjeV`<;%
+}m!N^an86L^Q(zN#X()Ah_LohnAPqy7u2o3xfy{!VQ{8K1!;Y>oYSCys4SJu-W|9wD<%zw5C}cDp#=l
+-rc+`01ygdKIGbU)8?p(@sa5Zd<E8!k89`a;0^1XL*(hk=4MSUP6VAge~LBTUsS~p at W=(@|C at 2b}LAy
+h4kW>kkS}m?y?*Il;?T2i?c(~EkZUodIGxa7d;TQ at R(^Tjxg5QMm0D`3=A`Py@&tyP_Ldx#iPHc9Z!J
+B64|@AQCHPy$z-eCH`Smm5Jzio^rx1QhfM{Kdb);QoW^qVknyrRL?BLTHcw~U*2<ggY@>Xq;w;Fu4Xg
+A>T<Ttyn_zdQ<mcop>C$?=#<xjP>P=yT$V%+B+rEBgj#OsE=}d<zm5$hct~&G;(xql4P{vlU)2mqZr0
+&3*?D|BDUn9V6J=>&;p83Y$O^rG>TUP1fNb$l~-aBr!I2I?SMf9rr at wOQ~3KKR}aTnB|Z|}l|KESD5=
+q~*u7|7I~m+XSHt-ANIF5U}@p6YgdQzJ~1kv=X6gC;O}vW0f!zUe*7bR_hk!;<B{93RG7M!%wNTdGZ^
+S#`1$i8UXnwYiaJZ2m=~h|Q?nKPp{qX?uR!rpqili-SD1j-VXXR>ZM#0kf=E5tH7jIBr|)uD;fEU)M9
+AZo6}Td~<b&e%bRCMA^OywFm2X7k)k)d^0#v<8_jyN(c)j4)MM>c+3;DSDWfO5B8hhpbFBdouX}^S2x
+fL(zO!&a<e_c!tkHM!tftqVf0U7Vf6R2F#cxzRV<7<SQy`(1$TQpt<gwyzgC~^GM~EsxJioEp5WeYR4
+u#AS%}1QYtyv6S0NzfU3YNako)W$b8MhW_x7q~Z)mHly|ZN&ef|d<)m3!2TzewTmRGlVon=v$eTCVp+
+arOgo7KmI at vXKas^j^((%v?UyliZeD2lZ=vp<w4N4v_Ls18=Oh1;vk)^Rs#+1Jb}%eSYh*EDyk%rzPA
+Fn(Tx>mMIKBRF^G#4k7hARl3zrgxIwrgBB at 9}>2rzCxOH^Bzs0{d#KA({*a^W}`z5d3<$9a*R{aQyxL
+Du{e)T!5w=46>IjGvEQjS^6cgx)EcUW?qU9l_U_)!QLjd6 at vu@1^<Q0!t3r}MHBB|}svRNW*i{;mV|z
+lYn~t*3rga_R;DjzY)kjlxnO!QiX9m{W6!-SD3wpBg?%9;B9%-r;m}Xb at _4|~5uH~lP*1Pm6 at nm#)=j
+cnGoWb}yj!urzX at 06rxsI+JQ6gPiab=-Z;g#dc5 at Ua|sZODLMDq1DZOahS9W>=Xsogg4y2 at 2GMQ7069
+niKwE8$Ox;x5sc(`|m$7~AX|S#T{Wv)~UKcMp48&bKd1R(cOj;Mp7Dpv84!JicP)zhX3KX`N{Q*zzJC
+YN`7Q4(w%jXR)}0 at P7pxas}RTF8<$SK`-1p%O%!&BX6pRn{=noNV>Af?jFiNny|)A{5_FS8ppq<$*+w
+ae?@a`hFtf)=Z~(F+u)u7pR_LA`kGy{qry7~u3M#%(Jn5-JlU7{>+ATfigfa;7K7R_&eC8P-61uGnXX
+H=74w1Ib(TcNe9?~aS(yh(szc+RJpYdkuGip{{Fl8TO|u&vqud!orWG2WyRJ_F+XksuEpHrcvT75p>B
+OI2d!*R9nnyInGS)4f-9bT+^;H+@=|W~Ue){RBv%@ZmSIJISpXZsS92!)wLiHY&I+Ro#!b_cBujY88u
+K?)tkyUaVM_Tjz_q}_%!Ag%5xDrycs{bwb-+lY-&CSg>H=}Q|eEscUKA(SkTjAT|jG){cp`LyFMiEs1
+dGoq0Q(Uk81%~~8|67f12yfMtUmoM6!ned-Z2a`*b<K+DD;3!lM_8%w-`>~bRD{`H$zLNGdazb`_9fn
+_75VV5Rc#M3lz**<@Yly`tKIKYwbCCwK0*@)Rb=uwQT4}Bifxcz9pd;nQMUYDE3>0Cwf;O#5}m+ry!b
+|1DsGdL6xm4%|CljFagw51z9)!+ozeh76`#KCm<BDjnzT_X at 4CmirHtYtJW5a|WjznSKDu{LhxmfB{J
+UiE_*^Ydpp*3p at y((W(h_fv<5x<F9;fgNi$U+QWqzE(F9$$xm3luxQs&9!iH<6oY<FU~$`f5Z+<#O}c
+%gQOBuKx0wxcMIixd65i&_fu_=Myr(=Z87sfwUTPRYkoS>2~8PD{yhUFht%6GUkiUe<ZU$LX|#f1Kik
+%qfGnJf+s}r29i90P%^&!t8|nDuQ*M9rmZFw%g#;5Jso)ajDF;6CxNTCwdem*Cz;0^f)>pF7b95pXkX
+diPNY!wNh5e`jDRxr&X4noI|bSPf%zt;0`1wS>6mz;D;yhqZ9b?3H;;)etH70^Mg)OoEq at WDf~&JD-k
+pDuR7a3u9K0HZLp4e$^>sRceSH(C{0{dX?GpNzh7DDNp)E-*fo{3-i%3V(jLNLU)?a$Wy>JEe5_odUQ
+(Kye%d&Q^T+p(@v1pG(Vgvy-K#n)I6+b*$`!diPL!V5(JRaT1Vxpr_D`^h)mR at +QIsdP!d-AeS?#hrs
+GD6 at uijHsjf?*eTl%N=j1!xMPO~_nu=Z(?>^e<skeyPWcj<8vho|?_CYp1?jQf1j0lI^ablQSA=|-u6
+J8g!QdT;r={4v6x)ThQ9IYM$mogPkz+s!G9>UQgw$PVYLvZHn3S4sredF8<Upx+j_t5NN^fdAikfK at +
+gUOp;`_$Tz{|7YHJ)xjY8{ZN$8>(P5+F8d=cRfT)L3&QeH-NETSYyw1jb{gR09ye5 at e|_{=l+VLFOYQ
+Ov at DAlSdAyQ^E65#6y3O9T&0?dI6}V&txkJfXf<)08beFQ#Z3IzNLyni+rr%ZWTvblT2^;s$Dy8S2%c
+Q|>&1I_JC(6{ZJStQJj+d$eeh>9CIFH-kP5}jzMZRkzkq=D~Gbp~YI%0U(bqjQqgldI8e7Gwf_mn#tq
+>mo=u5?9 at bjZB^^KtK?+7(yHZ9}43s*dF=wvPX=qv3CoGTs&sAJx$X#W5WSyQ<^<-%M2dZ#(nXq2KR6
+ZGZI)IKN*l;c8cWr7FqGH(3-PQB2JS+LW)i%JxUKowYwU^o~T?G!qnIlDy7t;yl#Hw_JODtL>YL;<vO
+Vc~lqqwBMg9a%f4KBCo5f6vdG?YJx}iqGX+vUcwsl=-wv2ebz~&kS!fCJFI#MiOKTlVW@<q`uCfve-9
+r$dekiwTAae>c_mLT^=STU at 1+{!`t6QpzVw}_=1P=mDbC~Q-lnFZDScQ^it;3z=}|so``5_)H8y`u%w
+N;{_f)(31n8KA)M}&tyA4Y;KjZ5v5hpw32<G!yKxMDDt>x`sOY at g@bK0sZtGxM98??=j%J4Gnn-h=P1
+8ROq7D|18uNKiz-^cU!?m?x1A3W|oXwAC^x<r1YNLBrV$}D~GxcN~T#O*I-7`1=a9%=ilaXav{b};a}
+si$IknW_CK at b0}z_Ypt$lRQ_#avkhSXv*4ZmUQ~qL=CT@(F1SQRBVGi2!cbDWEM$qC^O|pe7;}Br*@^
+<HAz8VCsF)$CE5d0Q6$nYZB?c~@p%`5xQ%5=YSpV9(Wr at A=SgG{Z4YUg?5n- at ev}ki;n7gEA}!0*iNT
+_T?!zVyFY7-QpMk0u^(gt4Rj4`L1W^o%%D;67s5mUQ2~}ibUDm)5A4*oEY?ppUp*pGlE=7#*#e<-V*F
+njzX|su|b{EmTTV>&a=Dc3DcVn|nqm@<3X|Tk$%@Md${i04IBp8!Jc}HG#k^j~Tyn1;niHpC~Z^u<n$
+LSjbwF>{O(c!;U=fLK^>n6C4tC!bwwC0=Mt5Q{@Z~N3o&tcHK78ihzZ|?aTYIlO!XgYq})A6hR?X2HZ
+{~h+9Jni)^KD~d}`|#?;+lp#BnT$q{8>#^|s!wm9T|9sF_TpJx*Kja1bq(vf22Xmbnzt`rU-VwT`^(w
+9_n)8MeSGrq)w{R7H&5RGxhgmA4|TD++(?(}59X@;Yeo0A_u<Wx*ROl8FFt;}c;9>8`^&43FMBWFz58
+?1<Zx)395+o~^m@<Uefs`ble6KdZ^}*Ta>Hp)Rs8<dFYn%deDb<?@%r_vA3nVL(6)nNnl|)mxSl<E@#
+5lrOENJe=MBlgutJpQgFgB at tNJ^9sw#c+?%Av7uT(Fa&OUwh{^_ST&tG5s)O+&u>BZZRO*><-KCjyuD
+OP?^CEmPxt(r2^Hk#1DKB)(G+HVK;>60H`>5ew7eW-`_>67>G-nI?RO+()|4b3r~7tcSQ{qXM9TUFPK
+-jfRE8R^kz1|FW)JWPfT53gQ4`S|JmMep5(D{#-c1a34Npze#h?(=6I{rko4pJ?NGR~t+<?;jEUX**W
+)K_iE1YV{zs1LhUO!MQ2ct{64M?_a%mdA!`v$iRHmlzZAV*9e at y*uWHPSIe`uxufOKyLPoGcEA6m#I2
+Re0jh2m$Ut#+ at m5LxhnFplS*-JBg$xuM7jHmwK7z>3o3-&w^{mzcA78zGRtv~%JVRaeDi~;%KE8kQ?4
+shFm%#{iw##7P)i0h!Fu_Q-ivT*U8o4{If;m`dSHZ|);m8`8A6Wx5VC@>X at OI8w0i*M2&y;=Ml$~{~p
+P%c}&t5&bcz>bwqOv`e>wM8{E|$5RmJ4kxuj_w;?Y{nZpB2>~`Y3l%S<o at cH&*MDi!`ZnjsA8UPFpLz
+0xlfrn;$gj|D at jw2?)aKF}SMOKtdM|c$q67r3N4RgTC>Mo`gvrHq;WhaG{^u3dV!Jfv)lz`bl}>gJ{w
+>4%U-(u6FdMmcE289B{hd1a0-BIT+stVGh1Qzl$2^Fqjzc?n$=JcAy3;*?uLs9L)@BzfV6uKkTYdeOq
+OJ3I?>B+HgA&z=Z=XLNONOc?eXItWEX92{<d0G-?NFB%uoje5iBE6l~0}g$?{(`F%wi6dTjxU<zD*ZH
+6vBC-6;d#&pyNJx{wCmha>0GMlM?Gyx{xWrs9PiWWH-hCr4y%SN=mw}l9`IWspmC>H5qWM=exGYzuo!
+*(BE8HUHkOMd#2dN?!#^7P#gKiA_L%o(<DfVAYa)J=ido93b+L6b5_pCzm6DdjRze;ank6ObwI^)rp3
+2?{(7gPf&21R{=-RzS`rbm4-{8rPM~0MB;GuEfNeCHFMSN)#}mh^M;xw3*f0B`T_tM4q)}ZkK3!mHWE
+2NsMF!pjBL^v8hEdG at nb{n`Cz=fSpS04=E!j68SON#)L(qIwj{ODdMNfSI-W4bHI^eP=-XR$PRh>`C0
+XL*njFo9-~GEkxOS$pf~zCWVCQD;HE%uJ_cg9&JQuo6|~k<If=s+A-p{rVmX)<r=|xRg#zbUbO=!?_J
+F6^LC^K+VKbWSX`U5k<O5>QQK8`LK&xp)P+n$ZGvLpBi|UyYq&(OdH8+Psd-f;N0_gU$4-7^{zcARa|
+14OqV<X(kM*<>;%m)N6Hl&Qr)IPJ8cnkz7W01!f<Ni58S=oZxR<<aSsLfWHEMbs7Av0n*_7Gr6D&0Hx
+66p2tgmvREiadlbj6v}Kc(5O_6Y2^=BH3mz0)`<m>D8=8F+6j&lqFEDwhCqhBlXiK4zlt>zY2?8y$_V
+`d*@nPNjiV4HRfjbB+s)O(+x;|P4PNjl@>+crFgHObF;|CF4 at O8_6cK+SK7vD?0hxzQ at IVEuL76UM>d
+yaKGugG65 at Sm596o3Rl&f<dj@(UX?~3JN*<M+goz{?yZn6Q;Hc<);G%6VSE6=d?TkooDV!PcALFph&<
+G1;O{GT3ripDDNibMOegf{zWXd${eAq3m93rc!aL_>^+B#<<G3{duBgZok1%s|-<?KLUTc=ZB8m)}|@
+8azX105SNzxepFUe#EU3bb%w?8nU|bm4&I#xOu*<i|<i!iAE#YbN)Ctvh%N7xrdhmevKkcNTQvfa_x<
+>{7r82X8P0d|!V4pwr+#C?%VlS)Qzxf<&!LFIfOG;S>(gva=5u)qb%r5?Etu^E69QX#C(@!g;S!w#bl
+>Nt!J4<gkUTqcQeZU~XR&$rcS6`Mlsg-AMEWJi{f!77kE9sRx_4k9u$S%FL`b%?oUrrh(@yG-jPWx23
+}f>T~`5l*l`Op`_`YKqIivor#Ko%AcfU{Pcl1<cU(*Ic(XH(Js%$h#T+=VFH?wdGS%h{)nFo`8(KdX-
+Y-{9vKAeh8HpxGcXGH1$k-;F&qNHzS;mau{DT>c_k0ch`g}p%8c)eH4JMrfiIjv2cOlGAGtJsrV}6fb
+qq6q7%eT5=Z7 at 4YB{$^nt#kf2!<AcXyM#0{vi!^rL|`5e#ljemG;8k38-!IxlE^CK6%gP`Ou8-%OH%+
+wlRbY{xYbm`M(W7%rlnROLCau?!QdZrIPRuI&%hSup|7q2;e;VqCY#6zE0p)POx%b^5UTC<mNXtJH*S
+wwlbgeztDX#qvafr&4&7lx1xa&pjUq~0a4WweC=27czv2>`-(TvNJ1A5nD)t702eNlm@~V^D_&jD)~{
+%aV4S_;Ju;Ngg#+IDY7pBaWJ<yH>u&kyS5VgAv3|kIV=%wspg>4a%R^Z*DsK{*;cHQS`g?DcuLCVO>`
+zAyfrz#Ar>H^f&Im)ivh~jxW1aCHXf)O<7F-x-uS)hH2Sbd~;gaQP3b@%zR}5R&z(0xQIvN8`f at 9eGl
+dXS^O#aE~s+s;jIXY+pRGc&areA-O{W5I*S;RR_J%1Lvo{@<^2m3vZvJt#L%S~!D1%i4Fa=X`Ng8%IF
++Q`J8onD((UJGu`;J&W*=>Ndah5Ri;w1^?U4z|mPy14{mXLiMN<XycEs;}*_Spk#vH3xYRxOy#Zb{H?
+Ot)WEYJd}WH?^}O$<oo(rcCa at SB+?D-J2-Nt2JrF?+T(EJR7z7ljjN{*TI{GVny<ZOhsCL+soXQmKSc
+DhrLo<^k)J?#hjXTRo at OXNg2mGj6Pb@40*goNYgW8u7>q28<$R7UwCx-V-ah6 at pl90Dz8w0{+;ONSrj
+R at DQZP|RJ#0P(lEgDjeMw=53syd~m?9xBcJa_fio#+bf{w_S##Ns%2s&b3+G?!E#<DMmQNSb~19i%Hy
+Y#uhvS}Iw14jAm(ufHxqZGZi^(lrMOyVr;b?S~1dbmx5F at vi7vA&6o_l57ynaD>lWdesiiYT^tcOog4
+sEK?8Py^03gN3Tol|3qRE(m;j0z3+v1G9va*TE7}DNShX@~_FAFg<&NV~sfu9^UZQVAjeTwUHdQ!V~B
+t-1a6;mBJRTuo;6lmOR03s?OEK at flpqH_o7%mGwsW)+lknCTrM!D>ie}^S5%h#)Q3<J1L?QZ{<#k1E0
+4%TxNm2jn_e$T*tm)gU8cSecUAB<sFE2r)YGf<2YSW#*yFgB|oz!vlR?U&fE9~zMZ)$@z$PcBYtnQ?^
+R=$h9hYBx7n^jsqLPaz72?goJ at FdZ*gD}#34aFXO=@o%hSARM7Sei_$iS&k;XYAr7rK=C_8|s#TBU{n
+#u~FjS1(>*vdsp2F?dAg)b)Ju+b?aU6e9PGIt5Qfs(G;tj&q1y(1dn)Z_~bI7D7k2*$WYA+4dKmC2Tc
+gvvD)TNrEp`WD);2WA$5wPHO?cGw19N^2fi7?0_aAaDiSuT+%P;!ysO$4c8$-o&i$!AkxEcRE@^x3|N
+XD|{bc>i~qata;Ar11CpNmR%$)DN)~HP0(7bu|}!`)*lYb0-nxr=603otm=jyvc2vv<-52HN=mEB5ff
+Ux4YhiYh7N_SVkX);grUyR2X^4W%IRKuSZ)Y?)9tI!5^c|*+T%1Ec{=ACp&6?`OXCl0l%=D_Hr`d&WR
+)~DRvX;BcRNEPP8<YfDQ^(R*>5>-kicYo83BHG!BJNDRqrUAieu4t98M)L!l`hs-cdM}p=62~z4|U%r
+U8OzII(_bn=4?Df~t`PT{vJ7KOKjFE2GSe3dZ%_HVJb+`7 at jNJICfVX2-jIyz9;Z3mr0xz=-ubsAyz}
+zH@{i04lA%R9SU-CZP)l%n~z^(1iy~;o1P%XzxsLG at 3GO;Q*D|CaLb at _^86<WCD*O2S>4^5uz3v`$M2
+pdp2=_{8Bnw`$0beMrl7oWODt$@@HoC2V2aHX#c?Zh^AXV5YWh~_L3+K at pfreo_-HOIW6&CsXaQR0l&
+h2Hd6Ql1Yx-Z(As#<0~=-Ux;EaUea}Oi$WpyA at Jc2ypBN}BFR)L|X8SA`M+cB3Ac-6JXg at e&kAWy?5{
+!K7s|gkKK0_83$ewN^TmLC$!i?;HI&7HndjCDed*^VR-(S3F+ at zR53kN2>TrBwaBJ{ijm{SP*3@%f!V
+I=jvbe0iydoP{k36-Gp0W<))g(~Z^%9b{PFZ01B`n30u&EY=1=d(4iu*o0=X2I3b8gG<*E@@;$XXqkD
+oP6Tq-N+Gg5GyJtP%b&>h?JjOM7~h at Byx!CSoyGnLIhJ~udHbKQXoaFduXGqVE5F<+x%N~JK^q;7ccF
+0FNqcKmL2p)ym1`e(0JGlEfPCu9eeR&sHJGwv(@)tMR7SGK}SC1d!fW2B>ELf>ri+O=k>iWRE`-EAx;
+8Qh!e~2kjBsAH293GB=eQ&`iGbDuEiV(1{+QF;ob9(j4;#i!P1>ZU4LjzNwsl;T53XseLh&4Fb0B8b|
++L5abr6D!QNDi_<z`_9qw3eXhm at B)UF~ps<0{wJ9iWps6HfXN>9QmRh4p8UxUEzi;;JXT at 3M6PImwZE
+VH);65-7wpmFfK(mu3Y;q!q_<G9a$0;`&#r24cId_sa9a{w|^k`IRyQ^mA_LT6b$wGo!XN|jm8`1#UC
+*`BzK_nCl^O=NrDgx`GJ1ilUb1GerVLdzfc(gs6q-`z%8BXCZ5F>t2Nk1yZ7f7>`Au>dX{sJ=*RmI~7
+BJ_<F2u6-2C-b}{Fpqbec5IEX6 at cn41A3_NAgGjhgdVtz$#th2G_LT&f*<-?Sw#*E0=Tu{|(*MOdjOV
+PvXlyAV$ei^BO-2IgiI_|TffX(R$Bs_I4CVUC3UN&XIA_VOfD#9CINSZiF_1t)7cQ97K2{9Q)II`3!w
+lZ1rO4cg3C@|JQ!}ccD9o}Hz=aDX*)b#kNrqXl_kXg5$_)1>4ztW9bm4$Sm<2~s`Xdm=koiqQWe8y9A
+VmydBGBF-Km-zztTqyGaiTfH(2F!QoVR~+gbtI^x#u<*ao=NTAziBg7m0oMQRam8x=ZNFUfAjr0k;fw
+LR$78btZDJOHjGJ_Y8e12z&<2IVi}VkA at 899DL#xx39IZq2u;S$L{w at CIL<%<%nm63|rX1AD{7cY6K&
+GTw<03c<VoMw8`}8$4FE%7jW#_$d>w%W)in!evET!wLc(o*k%^ki87CDtT{9OUpD4LtREsHhvgj6gqF
+tA+I_<N4!w<r_|aBC7!+senHBz{Gt(HGYdOZIp}z>59*1RriK8_QvSIu$He;yCVa$l&UmV8F-2Y_PXJ
+q9kh(EFhe{vcz8uBNn5i^%R^CJzoXZSPcGULAI&tkJMP5;chUnHRm2P}tm3OH45y85#{2xfi#Z1)#O0
+Y5waHIw(VS*p5mBb2|eA%}JFi*y at t4*rWY(O?ksHDB0Uzi`?VOz>agJo`%$m7A^vk6(l-2DbP<Jo>=C
+JkErEaR$Ta#en7whiU=O8-cACL5v6)GeN0{7{CjHR)=v^0Jm_FLl(ef!6|1zCJRFi+nCwFdjUD1`9Si
+05SwRJpgJqy!hxDGr8hnTTPo3SGJ<d{9k3BZ;51$ppAqQ9n-~hS-+1Bt>IsxsAYVOUcxvK_0S)$6zgU
+O2VS*<40sy)xjVCS?G~jnsCWIhxNZ=yP_P8XBZ9t)Lksa|E3S|!wQdUq?#~hB5i~$PrZ9)7GBq9h<*U
+UmKftp*W5U9XHA$Em*zCjV+p at muj6<Me?P_c#D0JS0%$5<r%8u5f>Y+=CooLML!d_(w?8qr=n4{7SxU
+&x^u;e05NkL#d>qq)%p<p5!7_C}Wka72QAK+aNt=zp*$vjQ`<PaqL+1glq=H247^`#ih#vY`?DA`B|W
+n?DHr2lVC-K^=7rRnv^_{{Z0g);k~?&WvF0=*$+09RZ)&64;os$m$PZ$`bI#e&Ypo+z>oK9A_yq`V4<
+d<)x{*u*TsXX;f^P at W}nu*u6YYoG^~=z79u`g`uGe3721!vAkr2c-Uwn5zs`8TIMDll6+4ME(Ho5>KX
+>#urQp_)gd!o$9A)<UR6TRClcX%ZfP0oThK=L&f)VcV|J`)?5hWwU|N7zHcw!<DlqL`R84sk$MCZety
+tRIsaea*WF3-Dz#)}Jz>XYFVo`*Gi16kWB8x~Waf4A~_T=UV*g!Q(rZ)7MhvJIb3UDP%qbR&PB}qxvW
+pnhT-DJ}Nl0Q(O?#Yt-agf}O33cst02Sh<!);k!2IOYXam!2xfG$)0j2&&ha9AsJ(RBs8!j{%C-2`@-
+z{`P%y)-(p-_Vd8FimwVg^FfGv@>gvf?Uh=axgUX^C82>fDZ^hA~@BPg{J-qvf-AEfBXl%Xt4z- at YNx
+?#zGj_cu468X#z`U+XMsj+!ewe3R-4cFXE<5NEX0wcKhtL=?EUq(D3(wj~Si<K4o|gIPrP=65u|AO$N
+?n%GJF51o)ic5#Y?u%LCxd{wL~I#Bl0Xz;NnT$Z+Zw^YbIX0|ukJQ?BMmuruY+`4Q|)d3b)@0KQ~6*u
+-goh7+4Bf-hm&%tPisqVbt9oW_S6h|n-g=xv0C``lsh-)Hg-O*=Qcp=oF7#7kV0p{O3yK4Nj$%D3KlD
+E8u^x0o<O-wy-k_dvtM^KhVHVtx-aOahK!8Zf`t7$zR=YZ4=t(rXeU7Q1U=hkJI7X&CYFU4zY`V29WQ
+eWxAP at xJ0Rzh3I^z-yxtnI1KC;eZ|c7|Xbbw~1*N;jLwd at mCO=Z1@#f)7`%@2%aB&8x7wSIFLOjRe8W
+OB7OKs8jNEIf$+X|puzBN0s$vCW+mWP9z<w8DtQhB+C>6|g0d%%JY|Jg=4{lAxeQenz=_fbF2QZH#f2
+cRLKMW+-wvy|Psp5x5GmFo=0?wAgj`zyXDGBD#UljXy^PN#bm4-<yO$UZ)n#fm6z~Es at nD+^#e0|-Ju
+m~4g?VA9WxEf7(O-bCmXd%ie84!5Jg;nqmKBb8O1L4Xgl1QNO~5P-B*IqkZIJtM at Gxiw;mA*r?Wdq-Y
+0P2A^L$X=ga*^fm~iD`8dv90Y(x&0frmnvkb~t?lC--aWo0&q55~NNifB-+TVL%nc7^Q34CfX{kvN$^
+ghpXwe at 9n4;g0tSwMG0RfVZR&1)n*?vJTV3(#ZD|R!RjwB&82!UL^fafQZ?#L|l0>?aLsK1*mTE{~{O
+^8yq$bUct%4uB#Dt_US+(Z|MmX?7z}cpD>t}8}1%j!4jO4gpLJIoz}0Vg6%#bJ~uKqXV}6AEGY2~Vv%
+#c0fG}DKdE|7^v({9F{HgPzyksrj2JIYf)yOQ0#cSVn8-2EC5`8hWb_cJ9w22I*LrFUq!+eGc!>9ONk
+1ldfdv;)8>twjsYKvrHS7zHGT at yZ1y%beZ<EBW+&`y`;Qf;;;~|-G+c;beNGK1yuLjn>dXSQEE)hr#f
+NdD++b8kWK9581U{=`T5c-EyVMRDX7PJBqTrQ7yjd+hGbm0MC`*i!%C9qUG^}dTq3Ij5KPBat}d?Vmk
+2%poiY`0KFZ{{(2LKA{pQqfDw1c74|S+526fk;KnZ3YCV8lisLSNelKgAtZM>Stufh*rQ*mJq$x8(F3
+o3UGMS%pwkt=-J)K?(Tpv)Ga(z8L7omU{49~x?2=C;dw+m6=>nY_yuG{t0LR(0xPSefK<(q`54*O6pC
+yDC^LGaM#Fvi_)!wTy}^xvsPjGJ1|v7=DPs#S+}zfO_#|ubSRqZY{z$fIdqvDPqjZahJrpcy4<&492X
+VHOPI$=pY<KHJ{7#~USVfeES#CHTA#|<~d1jRE2;M=IrD?PL{tv+Hog0hN`>wTuvT at TFaMtMv7b&O=S
+I{!fN)fI=%s at -Lh`|m6s!-n-aZfEU<xZX!sR)HLc$h`B*c4Jp>^{qOLiL6t4~5jdB-^>AT1Xk?a^hBm
+5EExMtH?22=7b{Qz}%TofWCHsak1X*#fS<EWkvAZ1STeU&`5(<fJ5{SywdSZPITC?-bXz*B8)yqv?Th
+%{X&5+$(r~2^OZrx&nWAaG^F at s0)#T=6p^`vE?jWIuLdB|F1B7FUIGE%V~F^1Ot~O|04`jp_zVK(HfE
+m{AKnzN7NhsLvj+b*UWqXo0&b~xV32D8UoPg9keP%oTrgq^Ncd4ub~TWcjd%P5yh0S~$9v)&nXU+C#0
+Xjq;FQNHH98 at vXcU#m7no6v-XzU<;mE6ka}vIVy7nT9{a|GFejIUCh%peN1i)a5GCvWqig!$m`I9d{V
+?-VGkEz*HjwI4tHMoFo!J&IBj_&ZFi#U5-P8iH5;u3Rh;7}s*m53=2r&paz<%%Pycvext_2rLsnfqk2
+MyCAw2MLc(*sl?PAXrSX5U4BrI84CtU5)_xdhyk at HNa>&7poQn&kAu)124Y*1D*=8OZNfy4;9;uSSe+
+5*?!e0(87Ts5o5`)g$vA)1%P~__%^I*{{@hQMw(W`?LH36fG<_io3t^W^!Dk)RiK{*TT3IG^x}#&u34
+}vr7lq26fxk{D#3#it0kCRtpuD3qym8^Y=w-fWD{o6SHHLL)$azD24pWs0E;Tn+qB#n$)CU at SnaZQ&+
+pT%yOpCtFs at l1c;6&f2opmc;$aL8M(!MJ&edK&W<c>j*tDxW2nWMjoR$`J;RPGrJHQgE5aWhCl+cA2J
+V7lJftUg at 7l;`UOGXTdp|L<v8&gJ%T25mLU3kG%%eg=hL!xhEDluckg!&c;1XU#l`<xKW74%!5)>BT|
+5+m3iE64gZ<F`gGE)K=l7qA^>re|w;jD&4PI)cbXSzE8xM?fH=g$s#m>n(euZ`b0O1y_;R956tu;>mi
+m_9&i&sL7f>c7$tBYf at oMdv)a-t7fyqP80)G_ at Ri21qjlv#kLaQC9E2e0W-8PG+ARpao1$DPa}ypTuE
+Kq+7cMVxsheCUi)7AUn}<<rX(KeSPL&4^F^0OL5mMZ1W=UgG{C at NV$$CM1;aa%Z1A>Y(F+*Nsht9acr
+?;?)^t8$fv>#HvS|RDd+lg`RONojYAs&V2ZvlYJ~^=FGwuMl(=?o10|-TRNcczmTv)$ZYR?HwnYMUEW
+-Z*|i0IQF$dQFrxGseW7$8?z*_ih1Oc}?f+l&xh4CL`u>i?8Pg%e0te`TKfzYn1>9aC@}=cOeQ)=In<
+Vk(gv5dk)my$O<>U6cTbbmi>Wn_!!yh_B#mc at yLuaUD}N92g!mSX at D!F^28|qG`HVMsePa{4#}+fK9A
+y6be6D2obU*oU*|%7`RcriSv*=8pL}xwvIzxmqjchP6Bl!QD`U=5gT+f+m;Ay4e=uTCd)3}r<Ab~XuR
+hY4J1%*9IZiR<!wH6z%c<ZP2%gWJW<wXI*h<?K8q9=T*}^j-fxh`OUDNZ$BH5eT{vK)Xz1e)3B`S40b
+ICHvI~rqCLHy_X<(u~q`C%#M-$^V3Fr!!sIVLpTb_($BplrdC3N9{O_Y#6zLBW^vC&S{;usl2m+V#uz
+Rx2nfDc_LU)Bgr^1Jvx3Wi&LD`ZJ<SW*=J)bNx(0z)6o&?xPG_)D3ysXl!@DcKrFNiE%TfcNIutxw0*
+bliXs2-J_IL9B_IhG>YWe+8%H*EtN<WS6m3NsRI=ED0L&%RvDl;x&ce=q_Frm+LH*2KmPLdjW!z3dP9
+*0gh*rjIAv&EI*O50^HUqXr4cj0zH~^HC*lE%{H`>(1inb)Dotn at K37(W6Q+b>>4g2 at Ds*h+r|q*6&$
+gp)rb+-zNV3RhK$<8`Xme(5}!_i|Cu17vtro72L3KT2{Qql^q6VxcUuh^8Tp+T89kc!yEElRfPZ(U1z
+gEb#lT?wUG~=u^QHLs3#7V&Q<T!^i%aWMCg(s<$5D^nal_H&I>)7wJ{^5uilj9&u$RI?F#>(*j1y4yI
+N|O@`h?8_yzr3<qmIbSAVJI$#~`VA84&M#q+~Zv0mLc83{{Af0VBDo^&uOu7}#gpW1!UTh4|orDia^S
+L4Y9 at FA&ZcOg9V%3`a;%6d=cK0_fEtYxe1-04`i8o3(ugo5UshhD`-u;fXVZBQ%B)5hI|b$)eMUbPt5
+!X;0Zpq6GOAbNCdgc%yL;&<wy(;1;A at Q44rBHV7gH)05qi^hnaB5XKO2y2*Bq7f;fqd6?zD1gs|hE5R
+<Y?~>#yc#%R*@QPQBIRJwmSf5D3im~)cNC*rOeS#<ro0K;2&Kd|@Mj@^Z<5F8HFXn{;PBuCijPgjF@}
+3jsP%vstjq~Gq7<meJL8cwAgVsTdV|iimQuyY?p6_JQCw++m8Ef<r9*sAxP};yb6L=h-`PffDRZJa<h
+7qD!IyA-AAz52amgr5nQ5%SrZ9>&h at C&+=V~4~z#{h_1J9bFT7k(&5VP*v9*dbDlQag4yurP?-;N3KZ
+;;vaLKp{DH$fXK9PBUSoh{sGB6JOCeq8Ln#V<hit3dzOJMU^5T10l9jvLKtQj<0*Awsipoy7o1_rnn`
+>TE|*^D at MT&zLlckP};cHlWvwN-6n*53Cjg6(uY4#hu8>d^;OwW$kCvDs8n=djsS3)a&`;8q?F39LE&
+I8-DU>_`9 at 0%5rmuAhvXm`gkHpQ=M0uoNGJ-3o)h${1AOIeR>X2K^_j4ALV|OA2$P at jp2_uiKV>zs at x
+Curoiouk*cVv(=c|yBzS6`(ws#X}$*5 at YGIuMW7AW;$PHMn0rD- at s_QQ}6*8B00`s{`;Pz<Q|H%t4Sx
+HS7>1QnTT)*WVv!6O_vW>4FWJ!A+1taDO`BBh%4sN7y?P}eza^1Nl`asgs+keb~m-yo-DIfU<)76F?i
+WNtcs40M<G^J8g;ewAkq5yQzdA%?D&mL*sSqiH7KWHe!(tPi1qmnsJFANaYje)CQ`B`}|7V1&w!?W?j
+8eCB~=H&9KifakP#*e4)VS1t}ss0gWFWLIi1Jzp_qIFb&LYMCDLNSc=cp=9PE+I9~&W|pZS4mT|1mXi
+&Ka6Wb1v4Y;>4I9KF1&~umh6Kg~=tzUt;24iy2n=~<Q-YH6bP&P>#%WlMlv;Bvkz^X<2vgsPgF=|#3f
+VT~Zy^V;KDO+M7`?ld+52cZ4vIq_N7k!IW|41gD+klD!5|={RDIZ_o)AP~E8xO~(rZg2f;vyyC>XCj1
+cVeqExxAWa|vCzV9t|9fTDuqxg*^7t`PL<*i0f07<>#$8q(#ZCBV4iPA5^@-QNG@!)+E(dgYMB$k`?#
+5PM%mj`~Koi?V&jsOlXm!t=r~Jhum}w&+$c?sshue)#SM=K%aod|GKIzHR?E at ku3xyB0`M(ET7QE@|&
+NzQ~H}IXm(FQoCyYK&HjhYv#%NqT0^$T0U<6?5sCE2_fH*1e3uM=?p_$%HCODtQ-R&9ze5L=jXBJ1m*
+X!tPWZ4UO8AJH;N0cQa*x3m=bRnOsBDc<6y(Zz)8n><!)K*8;##**un)K`#RvxzASH{#ihFufyK8$iC
+%sibP9yH33 at Kz@+zp!0pIS!bh3Jf<V*Dqeks_4fr&+=87#$omNdr+ltxg5R21;Pw!4dEBCORlD|Z*2i
+}g7>IG_?TgVwH3X0DDU!uKW3oxQIaUA+^DZ&pK;D~4p?9jAp!@YS)Zob)h<qBw#Sb~aYWnv~dzpt%n$
+@<>QaibM}mOdE3E0^Hx)!KFYJ$u6OzwUD6DEC>tiNF1mN5xfAgI4L3ZFHSzJ at sdG)s*87K3?msscs+3
+E36ll_>C4WDiQ>v%tB3*GjJu&ghoU%&^nGb`C;c?6i?sAov)dR40*;YFXk#agJJjx&FObF7jzg@#yl5
+q1eE2&Ta6bLDhC!p{A+U$wI_RpIp2I{arN-da1i~Z=!)qcGaBjuIP%E*-P%DskzC{A7QiFpur36-qL;
+7d1ivA`Z5!-P#hFTBS811uEycB_XrEBv at PgT(HK+?eoI$^SRUU6?+)E3iQ9d5Z?XaxwC2)5uYjS7zES
+w|zgI+43Jx7U^LID+aH>qWw8L@<@~z5pWe3MvMW5g0)GJE%Ly=7%{@=+F3ctj!8{Om at T;JYX={QDXtW
+@*=tz=#b~)il2(0&)HTOGU8(DD18uTHfAu)-q6+oqM4b1AN#;<gQw0qWl6*PnhpK4ufLOXb!49DEeS+
+YHJJKnZzp2F5CGTkW8b-L at Z3kctmvcNY{|*oC`m8R;$rNMU!G+!AFNQ-p2r?}k77LWPn(tZDM((nf`I
+G50w$-Kfc1j;R|3Sij5WZU at e09-yVzo`rSpiYuV0D-cZm2k`+Jc!i`HigFa+1)7KB}@P5HLrR!$-ItZ
+O#W=6xz6j-T!N+EA<umtjjApNrN;gpdWDj)_O$LJNB%+$7A^jdYVnjG&!H6!3qxWOuU@{*IaV%=a`@M
+yayMNy|7 at mciZ^r1)Dw^mJ5)99pEoWt2n9P;x-cjAtFMPG#1Ymj^(=<PV at I__5s~ZYO8@(mjqj5SPkg
+ at qKA@f5jQ;IOxc1zYjH0`XgojXOyZ7k0;|)T?XU02L~k?r at PM)0L?b7 at bR~yGygMCnS5#pGna~v61{k
+;X^y<BjI(j+i^&<CRUum~lb^Q6#EMT_;}9dWK5b1yPuu<+Z|!8(bDKce&H^GB;t&xL-fSP!qf1Cg&E&
+J4m;f?2Ac69|BMcjk*#aC+Dk#G91DrrsaHJ|r%&PHf0){O-z-<j%3fRI0CTq@$#t7z=#W5kU^?d~lU{
+0S`K+pMh5p{&V3%;63=)wi#GTIPN5oBxtOeA#S0rSBbqD?g-pp#(q)#TK!1Z?2|uW6Bv5Lpv8>4cy`G
+YwOQEqp*}Pjel#{RB|mwvR?|cFqi#6|z}vYAJ+`BKbFhB~51bHw4=vt*eiF-Mp6Q8E6GAV?2!AN5=c!
+R;^&1-*21}6iL2#1Yy51&-PXFhGE&zqkvPKY453WaG#XnrsFE~p4$aGX|Th~lyuppM$k2wm@&9iEs8Y
+y=HD42K0N`mL8IvSDQ37RF=R|+%t(6Jr$W%V)PxaO at aLkYZS!mzZll-Gg%8XUJDf76yg at P<44M7btw!
+%~B8~ty9hFa|4!fvPks|?II8aLc3IK#tv?Njr^J62CfeR#q$+!hULvM?5XeAtR3vt-Igy(NZhB_EwXE
+9-)tFY{b!PclyB0XuwC=m>V1j;v?hXPJ#GsM8|!rM3}WHG;;EYY);w5-&Q8l<GAhcTnrt{Dx6j4BTK3
+MiWXj807>2A7!^(KS$qoOC?0VfIce27^LRx4_2VA9f*of(CJAYgg0wmH#5xm9v)2h+N5u#r}Wguxpn1
+)gdV3Tz}h=o;!^gE0#2sYcp5=rvUL|AS+;+DDZuTEF>tG_a~NsGk6HF%yTybl*{`QhKXEUiZHsBKO{O
+F)#1PaA;qV{CqP8Fv`8Pa&YhbSBcM22aL!=57cpcwz4A3-INz6`ip<RjShqRdj9 at 4`v_l4CLC?=8jG!
+wM5>7WGkYi&9VHwU>DPl(ORf>QSe3c?(1YM;V3$DafiZNsODurN+gTjDIAtSEJ1eyePX$9Yj6K<4|cP
+Y?_yh{P5aF^o01*|6im0*0AB4oI at OA$*9?o!}VKrRo$ky)HuU%Nji1mC5g0!^qEyz?C_v?%UUpxP*vS
+0hldyk!vyc<x1TMk9tdMvB6K)Q19#YpqMh$ZM^l5KTFnjzfHdCLnP00x1p=bMpcz!K~zUl(&-C!J at sJ
+K>LY|bObSSk&zBVJGU~@(N&WlruH|gCZn5u0DDeThAvXxKp6=F-xZW_;3J_#JL-of at LfU~I~48>l2Fi
+iFQUu^iRXd|DHBcMyJ14j;DI{26_M-vsm at bd7$%wDkB+4xw-~LYltK&vu at dzM5+M`yf!v9w<RQ8;H$E
+ab=f)Gg$c={@ka^`(f?HP5h)^Q0oZ7JR%CTd#jXYuq1^sX%Dc{?trI2Tt{td~nlCUwaj#-9&v&zC~x7
+pLb5`>lET)=Z5!b)F;R9Hd at F2#GMa|Uw=p5gS)>5So=ZZJn)ic&N(<rsyGJ2Zf)P*_Hp(SF5J42J0e9
+l|2Tx(Lao83W25&5XdjEy8`3C%Mqj@*tO>ViR2f!8gArR1G^`Qvx%a)KTep&4I9`b_A60eTXI6t<hhO
+<HPCEV8l8CL5_hyDtRGO)iBOhs at jARWU`6^LfaB1Y%@>J8MbhN&4+{*fatehzy*dewq9i(Oc}NF!f%n
+C4m+{1HfqG at imo@^biTfs^eM8vijDjv%bXAd#=tna0waMs651>_?dK;V0xcX^vZm+Zkfu<<S3nE};@X
+Sgb3B5I49kEJl(H~l at Rc7<Z}i3trq3|-2~N*wMGU4pfGdJinkF(w6<lsmW5USCtuPK9ciD at rnyO<`xe
+ba9GzI*yVrxH23obfjW1GP395I}3p$7z|kXp!Kx@;cG8zM!vDp_PvtT|-(mH_mLt}%l-+K;(#%mtL$2
+N8Ih;xMX4h)1Xx=Q}<quJ{96xENN!>4als^_xE&I)trJ!Kv8TE+(>JRss&m!>!Z`A+kYMHj37XEJyqa
+1}N(UmVJfbhO9DHLsSl*?xRh_`mU%%z}6t?yE=Hm9dVDsvBRJ&JN0_!deGl`#i<=4ZSoti0=xnovQ*|
+lm6l?E2HBzDW0;7stt&%!sD#7}3CihH1ZF*p1Q?l6HDxdtAkBYR>YFCO3<yIe4sO$FIJFTFTxicFcTH
+-~Ibmd;mqc*#)6_;?`Nu`!_=8n~zZ!St?-U=jz}(je`kGQCn&R&!(TIj#tM(8&hZ8eKI)@VxV?|mTBb
+>vDKw!n;#8jX<3{r*ausaWc4oFPkPEKjVKkNs!h%e_1TX=x&i^oHTEj++c0~;}H;Q?a$8Olj|1QshPW
+`vk|nk-J}J7=(1V`IW>=rsO3oC^#$!nMh}sU%2yxng;Qc*TYcCyu!$v0_6KEGsurB6xkB+o&u5DBJ6D
+>EN#Xtc!KYlOP6eED*FV!Gp{$!yH)IWm87brX&go&xSBN;htbMd`Xigu!t{jRltP}Rh!NlLqEd4RtCs
+;glx(0)&p$0#S<Weql at 5-u<wjW at m1?SPJYTbr6br8&XY^qdop^W+{Afoz6dcyR!fCgW%O+vf#V17W&&
+P(MmAS85U6V}A_*_;8*?*(^*c2RCB8#32jY at bKdG+HnzFn(`$vGS0xldVKV>(><B?S?sF9g-0bF>Y<o
+ov}f-V-(ENK)yB}iqwk6e~nj57kHbd_|<i(A(UN}oU<!RJ;8aou=82+KQ|Fp9EG0t98ttRS8+Th`$^*
+vf+lrwVZE+Z<$LuOgJzqB!<VUlj5sNYk4D9r at 9;dK&_YDTg*rq)t=xuPbv}Fi)#`5_8qDzeVB228fd?
+l-NN=%tk?uU_|heAEv<5U1h$Hza+3RM!0rRI&Q$6P^7mYQ6j{GKx8SOsKB#c<xPTc&=7|z<xRGUgUE9
+aEw)H}H_^=UIf%W-$oD~<d>a8daNcnsp$iwxyA-Nkink$Sg7ee<c)#R88OcilT)0pgb8s!c_csAtWF+
+Ih=0Tn#f<^0ejS$xEVkG3iNyBpqT{vLzX+JF6gSdqWQ}7_4dcveyAFT@|f}fRPl=v(f8kg at k8C7}^>A
+-mJ$)s5ZL~0&N224CMizDoVqgl<`IqWS-$As-Y-=f1j?|mPdqv37w)+atO&LV4gMsUvDnK0NqraD6Y$
+-(l=xkS at 9Iwr(OSzoe?B!Xv?QDQd1G9MTY5E4F!GaC{~N5f%#%dgo%`s8c3IEFunW1$Iy>G;QNHV2_V
+XgrX}8!~L+0PXMI8KrtHw4UMQ`g^iHkb|bd$cBbTYTd{Iy=pe6lfV#&ygN3dkn$N^jHp8GGHvbQ)>EI
+$`NKIHLGUTVyVBaOh0f-x_z)j<(6!E77NPqgqdZX$8IWWm4u5#4Tt}^&h&?ukO4{xb_r-gGY&rB$$O~
+fd at vk`r8wKTME5PYo6-KIpk`X*a5|%=+=@kIZA2=A|O#M1GPyPQdf|VA;-o4Npaod{)Lf)#hZb4ql`-
+s;4!D~msV_9}&VP4C(%D|qZoG?^&l+Y3bJ6PzTWyHdRj=LrCOS1kFn6)~`<*FNTXp3yQn>b>(2dBL9B
+iBf#uHYmJb08AR)*s+;v>SVpjh?-6CIp4NH9<6ylXa8FctKnsoH;V;@RpB0pg3;%1B4U2b$-i79&lQ2
+<=0b<(A?S`HluyZk6oO at V7+BCiylh6r7tU*rFEN%N at jqIO3)}hjYRJ(-ipUDjQHO2?Y97;b?eO4oKWo
+X;A3^SnQ&}yUF0?wT|iCp+plKhxOJuygDnoE0-ROc9wb*|AjGs`I>p!2(FyBw?`A|kvr7_5=)wag2f;
+|zXSpoT0VirRH=oVd<tGGMI51oO%$R)UkB=ZN^0PCyMlwG;BX8vJv+#KcY>cE8!xlF1i%gBdrG+mtQU
+_;;zZs0|%P;(xEAB6RiQ^K7RRe5tUqk at SjLjE&)X)Gs&KOMVQ^f;(kmHLpo at NTaIOB=&xG`S}>m%Xz%
+gv6!x_AG5 at 18Q|l>ZoS<6Zewsg5AjU(N0Pq4!@^nf`6RqJRGU`Lm`P1&Znp^!tF#`c1u0o&q*#=*%Mk
+9k5|jcJKtSQ8NqXxKhE!E!_oRlLlrY%L+DaVST{PTNt%FtJ at eprLyyeZbW6Dv|a$gzHjN~fIV&KCdBi
+zw!bu17p;U5?0HM~+`#7j1~x~#^FccXGr-LFftUHHg<(GCX8h3Z+>9T1p10#?vZWNP9Y1qBOTpUldq!
+={+eJe4neoHe&&~K@&gW+QsNHt_=ESoZKghxSc?+A>avkr&EK<$}Wch(w=nuZ at JqY*ukGkN4*`!~?^d
+AN`Y+*ydCM|3N*m(;>ebctSDe9XJTG#-vwv8#;n2uW52(Y%@DcYS*Ti6t^c?+AjuwYjtx1;f3KAmY?P
+=rb1;AT at 7mj}xv)ZnDZX0yrs%rsNeIR%PscHW<PODvOh)r0C^f^9B~uxJtWj|LkmA2BXsjax4-4Rqgc
+r>~Fc3-<%H@@sJQ7vPhz2Jg%IPXixK&mI1iL=4A`Xbg$gCotiD(r>0%|6!o#=gmavKMZs>sHWvczt(h
+9oDGJMs9NM~*{g-lmcCl-Z27AN&z8Vi^lTZdh0m74TKsG|tOd}PMEzsjLdOhsCA1bzTSjZ)w52rM&qq
+^dve&tXFe%&~6n>Em3!mVHMSKV^o2uvIxq$C4qt&+jJ=h1W_$lCTzwbe`Uh0c at Hm}7-d3 at VoSIPfof7
+bjk=w!L|impa<NUuhDMN%WY@~07A8L1H-F{uzfNvRPYVW|-w$*2(?;iwTF`KS>d5vdU#DJhg@(YutIk
+6O*>A7XY4!BA5CHgsre5ok%&FD97G>Uo~^otakHRNo97bS`Q`(lSwLLl1t$_>qerGk)yiCl(7Hk||d)
+=(_|*6g`N-&v}xjl5FCV=}%ByGR?V5vx%2^e8WVvOfIuzR!xik<BX<6?G2M at f1tLibI-!vhf3itgS4z
+Ul=@d;m2Ryb`_*4<KLn|(a5c?zXz?fYp(at*M7$5yv3E~U1b)3;wEK@|D=LajvMPVCm0I=pZ~BKpA9j
+gubTBxStEx@)FOBNaX=#u_kpw$W+wn4tk}%vaV at H#;s4#FemO*VgOKoCDXSJwZ+F9YD=tSL=E-KsxgT
+dG<wl!|%mBTpA%K5MZcL;06B2~VBw}@}cco)TynxNZSEW*n;T4nh*DAj+vcaZgRFjJ02tybzk4aT#xb
+f_Wyrv>R;dlkmt<s*yn=!UlW0%kW~T4={6*SW<hgwGP|*!MKpv+g=JLk0F(V|r)lHpi-M(zVAbu)DB3
+cH54<wqvL5*k>!SYn63uz8za{$Hv>S?RIRsC$`+v8}5niRzarYX_8+L=JSCo3l+B34K_l{Yv(51;`{#
+n&!APS!{a3Fo^z}fv5^l(Hd^SZ!Pr47CT7P;CIUUN(Q=ocI_P1)KR8O_w^UkWI|N+>emkZ`s?xJ#1b!
+>0McSop0x>f7z)bAYHh~y8dr+o!zik46Jhzc{X`4VWHnWj7=Qe?@#O!gIs|t?MgmG&wd8IDN2enr15P
+OXubjgH9&by{uA?2#HnjKEN22CS7=R+Y!odc$j<8hZ9Xyok3NNN1sF#u}BMDQb&hr-V1N5*$J>|V7=K
+ABnjdj)mlG#wVR{&g_m1HgG)8-t=Rjdk4x_gdY+xnq-ds^!#D$fnb&UjwCn)sp&kM%w8Rr5%1y+M#!k
+dw4art0&!_-w~(ph`)E-)jQ_pRk&k4l=5j7#kO$6G27xY*!`Y({gi#_cW=5KpWJU(9x*wOI!a|ys6DQ
++UCvD_$Gs<yRdMKuB&l-s9;++BR9E2If2t8@>IdUe#-)s#wFuL}W^&csHXW({a*zXq9Jt7#K at MHy$RI
+~9a%_-e7dbJ=iHn>X<kUr;8|1l*oEfA&2(I|up52~_Xx at L{yH{qH@$Td2eT?}2{byNND#-osdi}cOeV
+k}1;GhA1Q2tshFvAv826_20(02(&4d`MQ)qrse(C-}8ph??Gw$;aH3NmdVKLmLZU*vhFzwmXgk0Z)p{
+gGK-<@$qsMO;4oE4uPmaPaHn9>W_pey!{8_ at 5}yvia+;kM7;Ox6k8Ma$B{m+-lY6!|TVr%SS!suJ$e;
+_pW=%uD1)eaiPbi_$DdiZSnAtD%uwO>-|kx?!Wu?+nbx4Z*E54Wcm7AZMuH at CMY-6f8M;l|EsG0zWxa
+Nebr=`21U_(7L>v3tSJ5x<hx|Ie)y?~^XBhI-&LL2D>6g=zPg?pU)+ZAUcV^x(EP>J{~J(C0|XQR000
+O82?eW21#TRy|3m-)W6A*lBLDyZaA|NaUv_0~WN&gWXmo9CHEd~OFKBdaY&CFUa&u*JE^vA6eQS5yII
+`gP{0fe8W+UIRlt=fxvhCh=UOhQCuakHlyS_PDT7+bdDN;>RR at 8m^zi(9mAn_zYS$3Sht&<Z=Bv1efg
++f)KsxU8$W%TLOd|j_g_UTiUE>}faNAX!zWb2xJ;=d20B)v?lw8#&mb)L?Ogni1=nw4=@-I*hZRl1sf
+x at 37$l+!BxEa7a@`ux+9)$uHgtLn}j at wncu82qA|Q&~36SL?c}OBOGUH+6Br^7JQGnpL1MJ6oq&!b;J
+PsrqR8=`608Ec`kyFKiI&I+bH+p3RE9s^h$t&zs+}K(&fz?CE)2#xp=dbr{9fEKUEuTCwuct6~GKcq_
+758fVWlwqzaf&sm(L`J%7bEQ#w_7CMYd?YFNIA at c+$;4pg6R&iOe=bvY6RnzR|@siQ#{C%sJ*~`3Ui!
+#P4?}{|9+deGg`h1z4u+O!xj1O*{{Ci#1FN%_-i~P8*%k&HgumaTjUcHW2K48!9+_{smc|^k-C&lbgr
+In)*!(XGrh~+ at bfa#+*Ma~ZIM9rtc!{1I`zmi=)Iw{xe;4u{&jYjVfcoauKvj8G0%4nWuY?7rHEGo|a
+&1Oi`bpa))wb6(w)@RX?M!3 at jt54wf6aIUwygQ&8E2x0op!VSX*`cR<&Zitk$zXx!(Q2w-q#3;Ya-d@
+EMHw#;051y|uH!UE+yN^X4Mk@#T5kh(d?RnZb)XJ--FcCGO4zIb+AqqM`Hko6e1 at w*jFcWm&v-$WjFB
+gbSNK6-pFZVm^XbzVVI1-bIEcdt*;*x at JWFS_QV&0KAjMcNlQ&eO`3WT1)|&zkUshwII)2i51pJ;>)r
+^gs+J~HVPhW_!oamiaKW&RgksNvp2=HZAXnJ+3_5CB%Zysos#H?YDrs1ekC%nNv%pRW)g_8IZZkId0;
+!C5PMn5p1gP8aekt;HR^$a)Bh*%PF1=z`=VjhiGMOCF|*|zEZGR|O*mMl4-29Y(~X(v6+(;9|Sv24!Q
+8DCEAHh9#0n_~47`OC55kT=chqZhDIGvC6%<p(=FEUN`CsLZJ3S}m+-5|wd^j4zLv+&H4mIm=<tgr10
+%B~V~m(K1=XK2RctB^W~2MBq&<Ww9D?g_T8?Av>+l8BHx>kgC+ at F$xq}7M-<pz$cO=(+C*^GF**&L^J
+5+8T54qJ6gpO08$p~#d%X7ce6ic>Djc8=MbeUgOE6<k?`JA2UlfrnI=RREd@|%C{XZGwM|VMfG6jGuV
+uW&-j-~Y!6YTLklA!GMPM;d1vR)iPiN<ds!LYFj#m{+02wb3eA_+PfVDYne%y`T+p`D%uw(PItZFfP>
+eMv^02DbDRB$B7p at p1^d4h2uz3N<n-gI+zv5Oq&%_$Yf9UQzZFDK>`pOhm-dejQiF!BBA$2<C))j9GE
+c$2{R#;0S>NM>0jmSoefg9DnO<~>lKlNHJj4EP<v9 at AnwknH#4fwKJh1}$153OWS1z- at 5Qav_`BvDvJ
+?5%XpF8d#%P>+6c7*M!yL!GHY6#U?Hn6|8(67fs8rLFNaPG{5y?O at E+B^W8HsNIH(08q2|2d#g*3==!
+vyZN3c!p&+RJx>G;OBR-W4hIOoztYY<8VJxt^GZx{jm<woY at 3RDA3CMm`6sz%p_5KVndZ9h#Yu*z4J)
+pJTA$9Tx_)gg)n)T3>*WM6U`B2AYeG)HV@`;4~Yf*cV6$^Tbe5=T_Elx~AS|#7Fq9u@}!rMkauG8|O8
+b$Y`QI;-YeI=3dC@<tMlYEz}xE3U?mQtCUy&iO|>F*_#H>&~00*c|-5PU4SB%i5zoM&oU5ddT~60(fP
+TpRp=FLesYoNbo-X*Ay8))Ut1(NS~{HagIepvt{nn`|Js8m*WO_HM)>#Tl%QWQ+S14xK-Bl at 98L8`=0
+-q2<FG7i}^U4Bv51M`sN76ZSWdNk$(%RRDj$RB9|ECd*j&?ZSOYC1G_VttzE#v{<C8uhH&Kqqv&J*kf
+bu#ueZ0paO0~#%n&-_fMYz;yQ}WOWgEX{q{fMJ+ejq{(pm<wSv)Y8`cEM+8WXET<jVqmjWs11Y{iCtV
+tw;?=xw^Y4)5}fFfZtt~kR1!3{OKgi$pzRLQ-$sR4q(V^A3$|34hW|08J#VE}dIMGe)VnI-UnB-*lid
+PnV+%4D!CAOjU1Ap_iNXzZS$X$d8UkY+ryXcqfA#qmn?oId#2vh}pWc{eRKq63VRnbJ7)b1a at t37@c%
+M{y2)r^=JhK))bhCe~6=E0G|FHCvO@>4=+;MjzcH1rbs7euOMbLW>n+k)u(y;kM{$3+p3nUU6P!uz1J
+bE#9>79r%R3 at d%mGeN-$)hk%yVDobaCm;0ab;U5q?2VJXCj at H7~p at u;0L8moNo!{4hSkM$5b~*1X59v
+mL*{|tLBd-_>w6&*_LMtVAGF6_A+P4a8{Gi)mUG<D2YGomkIBSV_O7Z7;;wjAEC`F$ZOB}Ov82pt|_*
+pSSHP=;Gyiy92Y2rCbORn<mTa_83ibADuqKGl%MY)VK;0y^tu?#?HN~u-&+FLH6wq*o|vvofF%+_TI<
+9)+Lt5#A3=ABE at IGsHF*a$+_TUsDGlXC!n({dE`vBGJf0kt#1P#pmMuq<F?!8mHMbvhC=>aw`;!bj#T
+yX|Xy4{l11l_pRY8GSr#TSZlSOph<20<fi at e>t$V1#{}1*m28LVgTce<zx3W9^k+pz%J?Ku<qGZi3Ye
+wyw2+OZ3i^ojZVg=G<e|MIXJMfoEn{JbXF2ZqSFzQ%;+O65?F!rviJ$s983socZ+PhI>&7S*W)5z#^n
+WUeg|Cx6Ep>o#s=p*bn?T4Zg68C+Fjdn_kgX16DSpU at P*Z@%f+a>`(m1%@=N#xHz?KS_t4yvycl+`2>
+jS0vqwPjEh{$=lDox;*i%q3`JUoimy&voj{6%_*#K8NK;A|ZY73!dIBrft8eg+)9BA92bpy<>E~qoRO
+WUIUphgv;VTUGp?LiHyqQ@@N%c~D+QWao!Xi`*Hn=~yXe(oz-1}==JSy7QV at 9YB>Mh<LOIG$bP#U^9P
+f+d#bfgf|H9p%8yE{imo2swCy2B`@s5h<QrOsXPFlXYcVWv$Q8oYy_pIo~e_s=5B3c(Q_OX9hBJGzV?
+FItNWBt?yOQ^S3V)aa|x(>dEp&W6oBLYg~qFs_0|p6{euMusj*JJV&PmwLQf=AxZb`3&Spv&VB9C^i*
+i8P^}DNyX2i|wFgUfHM9s at +HKTez13~Xvc!;w3FKI%!q$mEx5y7Ou<K?B={G>O7HPJSt^ymDWfOilNQ
+WMZIfNf4;dvAK8K`asFlOO|Ak2;O0F9aexMz%aQ8|V~V at N^9-#BZAgQb85(Im25S2Z1-NzmM!kte9lv
+eu%7&B*H0D0(^PPA>D5C5OCD16&;5kxk`LA>0LEDnm*t=CDq;(UZ5YaY(3;muPs&V!o at xZoi(Lqen=J
+hmCmFtEkaje{~vGXqM&4itkJ%@Z7<5y5K%9I8cVDSY=R>1$q3LnE0_tX^s1VPH~n8Mz6Dl-di!saLSy
+Ee)uS}DbUhXdki$u3~gd^0K~nL0UGLB5@>65)C_v~A&n3jcEs11kpA((J;1=d-&V#otqjh>Lj7L4XuK
+h1lg9Z*DlAX<9gV9;qksMDUz2qXrO;41p%*~tQg1y1t+gfByAhP8xk?ijqZI;Xa~WT-79jl06ZFE_PW
+1uv^Cr2&josGL6-Wo<v~r;IvF(kbKug;NKM^;Kd34&|YV_mhrwy==(eGPujxCOFN5T(;HYIJf5)J=R6
+4k7!M-<U|8_;GbmWbvGkj|yt!EF*KVY!W9#!;kdWst|@+QZYwk0%d5Dq at Uu)gfb2Gf?i=$2IiUt<N)H
+;S|AbLPsDv5t+~ot;-B#DCNQ5- at h9DqKO0-htVY+b16{V-cNv)3vwe-2V at H@`gkutN>f?$=)#sm6PDS
+93~YS(#}9*1p*1vWY}`V&9BJ-UhE&?VBpOglBNdpX(VJ>svLDy5{<l~fAG~NDI7$OsN1iOpz7s!<lCw
+CQ;ZZIY!|!-vWtGX&)e2~34Rc&kL3r>E9{imin5DT=T+PaKRm-u7hac#nYkaa+z0H_e37@&@B<Xw(d|
+UdU5+(9SPvs+{2C5ozwD{dMTJ{-Oe2!<7Rk1EXXhtNbC8#Km+n4X<%lGo70R?akB>@K3;y<8{yHtZ${
+?mz7vR9RCj>YKvd-!gaDdQvsgwdf2$_rFjJUnS0dTKSjkPn>wxPalaY#9Toe#XN5_iO&!Sr*}DEML^;
+ZFvO!ia)dJY*%PPs(9h;JO0BiRjokfW3t!>@yjk(r^}|)34J%p at V;>#faUn_WB%JLi=GXz`2xwYIA8G
+9B_9IOv158@)LN4N`#DP&=hOoK{Wt#GS+<!A{?j=V{M9B+IAZzFf6`B at WOX6dk^;E85aufn^y)$@>@1
+b9m&FXWQI28w^;Y~c$|3h?X#jt at XCL0+`Z7B!9(VOu6wyduJo8e%cyBi2hEH at D*F^OE$8r5HU#YEH>i
+_sk{iK%qzg8)9B`7ahoPj1zCB=hddf+RKLP<@ssaA&`zo*AmO`_jR*5W}vabg0P5Fr8nTH}XjTk*~sH
+SC=%uF1EN7r~!T>8G<~vM$?l&)|nuigR9M$vH;IRJ=HU`n-MWsW%6(Yr&x9vlsH2Q3tWN29aOgYUDHD
+UL)VL&nsXIdY$L;nN<fpW4J3jFOR=p^WSD!6cUU198@(bia+1-pH|5vVV5aMr at UzLtodz~P3zft4U$5
+|i{j4{`e~M2mvcO%0I7l4p!ofPew$^t6-ay;u*`M5;HBxwEBVAIU&m(|yNt6n?*;w*2mfi6EJ5A*%uC
+@{izfNwZCk>kOmrJ)xfA|!bEnIcZO#g63%@=otQ`*@^G0N$6aLF6_jz_6gZ`a?lnKkSAVUBAlt23*pB
+Z(wjyl_(IzJT!YGSLH<{f_>=gB+x)fCf(^`cA{DTp_8iUgu~mR5#>F~zNSY at WM-=x$b3MP-L&_i`bQc
+-3;JDiB+W*CluX!j}KLf!L~mUf$3Otk|b8&7dQ2suSTZTwf8 at bKZ%oqFVuTZ746fb1Z4!Z%C*1V7omS
+D7n$va+TFx at C;M+-AH#x!vFx{v1rU#7FC^XBX|f4Dg|yfjm9t0<{xKO!M)N_Iu}sDNlO5+)M;y<Ku<i
+&sV`?6?36=+<VzcuYMS#UZLz9^zkSNG%zAg;@vh|W-WMC|)mf2j`P&oZvrq7+1sb-YzB2QosC&xH;+5
+Qlpr7K0r3q$>vRJP~p(0x^^B?GeYm-nKG~c&<c6Fs4wd<{Pe&i)y$X{j)=xT=gHTNFH_B at O=N26Gp`}
+}aoYGb$pwO%l}bbrwcu+68H>b|MIB!|Yt at Z!*#eBdyxsAoZTyn*}(qSlVO9KG&<ayNQ<&Sn>c84#(GR
+M^eXGFzP&>n!0u=jUW66wA#K0l{I-%%goVc*!2ea$OxN#C0g><50|^<Mh#u4ZEe9V}ze`YMxKO>++#-
+xNL!bljdvYXrmpC<Q{f)l^|4q1zF=%g868(Xh*yPo;2gY!W)un$p_wG-vUAd&9GE+2j%zNuU*{-xP=@
+|8hQ-mXf&eWz;qTt-Q$zv`|pqcdGh>UCu9UhV}G12fTh>x%chP3DVm6CXy+F-RoKmUK^JOOqB2njNs0
+p+9T-C<I^b^P(uLeSct-~}1u(keNVpEq@!i4#JZ|WN0vq&!$^HDD?Q`Rvbd7AVhv-8?alB at z*5igMvS
+ML|@`|Z>RV)^)<ou(=$kL<|!Fs$sarg~eE{owIjYyqQG&p{uWh;&9V^Tg2Bapy&s2O}YjObx^tXUHfK
+Wz>A(%h{~Gmd9dB6~{&Y5xbtC~5IvDp(*3IdqJ;g|2 at 3G$oa<LKlefNDOgA?p6_c0}_<z`{;qkgpN`w
+6hU`%>%A-FiMo-`3pxT2CfXKpr(D3hhfnT({P>GioyR}9!O~HU^`<!`5kM(Gr$w)DMj;IQd)qp-NnrT
+<p2K5Hl_`PL^fM~)+*l&bRD=hpS&}QjpeQ_;&mEy%1%O3V;Z+g44qsMr;M4 at 3yQ$mQYFsXO0|ANRVo|
+kw3GkEGO(p=4-rKwYhf(wO6SktqS!hL_VFDc)2MoX+oL32@=Y8hEv%~_&dJ>nhHWcEHhsYE)FGyf(Pm
+twtFvz*iS+)Y^D30a%iTQHX_;|++mjqQva1k{gM?1K5gvoPS=Hc=Oj$MVnN8dC0;@EcDIAgsb#i7a2-
+w1JZy!)o8U&_I-gwA=LK%{$}Tb;zu-3YXGQvRgh76oP(SypUNc1STuzJ%SSo}y=1$+#mJIZN5m at f>1t
+$;vWK5|&Th;}*hz?41yA{LcCZ&cR7XKL6k}uA}(Vt#kGn4Z|#%BqHR&-Gt)$+0%+LEcE@>tw(O)rgP~
+vv>;tb{h(DZib at p!8|<YSD^E2i!H<^Ah7C1UK$+-hMJNpFeCScSifg6fjm;I!&MnJylf){M5>@g8gDT
+N`;|*g8rcWR>jHtOT0374db21?T4GL2n2#J9$(;5SN)5-uzCKMj<FrA{mja(b(?R5#yeO*1!7lzEA(u
+!J!MXW1r3RaZPi(aKy2}J9N?&zsWc~VfMpk8`cnmhj5$>X at caTs+nDjYzYd=GfZqeS_RLjN1dZU(PHi
+mTm?%La2k>7BVN$K%nF`cl#du|CVv*~_FYB%hcOz;sff7L-qnf?|7U%ZUeOcmVoUQ}=!+S2k*#O at EZA
+E?@jb(<QYma*pN&f{xFMb^SPFi+Hx3 at IZT)nZv&~pm%oe+8D$r)GoV&&=e%AVuXtl<dk|m(HlrOG6yS
+ET9RLt;8H7w)G;GP-OQl$WNvtHGgDT(%FL<ym~-03qd(lgU!~bHF4OG({iIGPiWG at Dx_nSRd>B3a>tF
+x;;NgRZ_wW0B*hiE5_v7R;u8MgbWp$!}`DXecimMGvKpy!+)E<lW0IRMHB4zbl0rCidWbBe<QO`KM^&
+SnbCvxNL+N at T6*Vczt8(97!8&u(&fem~!eS|R%aW=Hpu=0aS^Z6Jyj$KG#mwD%PhK)xfvth%!0)bzFx
+V5UgjCDwr?y{f;m+4wCEAb;D_m-T8IrdTRGM$wLvP}*GQ<s!EtAWd{vZ4eP6<2a_*Mp($0Sp~<_3+?c
+K;P_jbl>b}bl(Jy4k}f%c*S6cUM{D&Pp_t-gyXL(sJkCTaj#^c;BQIB0^zrqr5JB8gq`<;pxrhB?dst
+kVU;Y4KZn4?S^9Au15)72CN7zPR at 7*J;xfvgrVk!J1`*}25B~Jv;p4}xc!0_ywfk*oGY;tA3g~|Z`RB
+oo&{x|9>O98wEV0p3`A4H#)4Om<s9NU{CwdaZD~(c%`rq+o96)X%P=aZ9^UX}%e^JEz<K)3NlSkhUst
+3|RQpWQhzF}7i5Gkxm1B+L~dj^yg$s_)u^+>BoLv|d!E?U~k6m?o4DVT*nJ^1s(K||F5fS&N}qaHb+s
+lNFph)@cxbiV|-VP`d)oy$GB_z9R&9LNv-b)lZ)SV7Z}effV}qYw*)2E+2sP9eVhQ_W0Im9{GPAh at D#
+=pwd<yHe>xlS~i%c^Fh{f;01o7)w)5wKT}&dcsUuuO35hHk)aBw#4Lq_t9>LJ-dJT at Zo)UNST-(PSoB
+_;dP&3LeCRurV_*t`74Zf#5eT{H_4&+ZYx^&cGMn15LY3ID-(swz%*!vj1-U#(~o)v+BgI#&&;HJni(
++8xAi&Y>8~v3zV42>NayPP8GK6Ou(z2fF_W`(Jy{g>1e3>ABS)@54GU(D05j~*=xV@;$l#6=Nl)r{;i
+pUW<ITaa*Mat$)&~z0WXW4MNcS1(@Szp+-3YDC56KT5o-|9veeQ5q9!v8>^hz6)ooLfHHpPDYz9{N39
+&D$q$^0 at N$z*^{MD2lNc;QPQJqDGfe>W=XbLC7sa7OwPiCQ={VBgp=%RY{Tf>~l9R<6X-+Q92!hpXmE
+p5^<xpAq!(Dy#qExO3b%vyxl0bZW)l<*+lKhBXK-H{p~&;qXE at 9)5zjp4;sw2$ODXYODwF;Xm>W_hES
+_e6;-K9kPw#KL7+nmmN)cAlI|B0)b=(jAMLijjCZ;Iv{v<U}L|TcD*n>)6w<O!SswiO7~>R|K#hp#Nh
+1e+9C9y0d~{sp$Z;dd$wW2(fVT!hQBn163DDotUC4=F%;ka(#Ohgl*8_2C=Tuw==-AjFc{mbbR4%*zI
+D3V;4s4XK*QtOT@;Z(A?M0%2`)#horH)qHw6fFI7FUbY6^|@_GP;fgb9~eE4Hk74%0Ug-Qqq_SCiG1-
+Q{Ke-(+X0F>8Za`UD at kilfgN&-j58pBLOlf!`^kN5j`8pf?3i1 at flgu~n4g!`Y7ps#c%ZcJ~CcozQlI
+DN~A^dUUp^igljw5TGT-#NyX1%`Zj{AbMNqPx}f=KIIjiy~Kk8vybSjd%HI6X!l)P>$CuaU3Skvscq}
+X+VzbcsSY{*lkz%t_PgZ5Sh6^aNNpXu<quJJ4Y1*x at lNXgE#7Gz{J7o}6C|5z5`zW-stPC*m|<g5pU3
+&6$Sr4M&x+gkCa-Sh)0K69PhX-^?K%vz>$vD|dw=nxT-{&<bDIjMI=fb?Htk}Ihg_eoxktt&b12mSZ$
+$P?R?|%qLEg9>jpqy2Tsxv(F(KRdXzPvqpg<;<GJ4UGteQ?YCYUJXGQ5)7C#C*J?bt+gWy0Mo-H5mw$
+#G)1L0m<DKY20v3wPa4 at y@&Rcy at u;;S%4=w$X;kP+IF6oE9eX$@mP=2|O$MJHKC8<W at YSV;;<6fT1v2
+yt at uVWaYsm2mJm<eyLqtA4V{6sEmE)y^S%L0t4wYx&g-9D at qPYi4IvJoE%_;#~+@)d^xGsD~3}WZHn@
+unmR$ytwKlYy~b0Cy(e4D;h>R<OyWJ|EsjU)dOrD!`vgbcEoMNsa4^O$xB*}rvnC!!Tnp<iI)wTOtcR
+bH*fxZL>#?`OYUqe+RU2`Nbe#b=6okNU_(_58Hs=iYaeUGQC=rEn5fBqRCuxP=LWv#o9XbRNOY0c}AH
+g2^w>xgo&<~Zj)c!N)jaF(6cf75#)9<98$~asXW`cCGon)F;nCx=rSFSOUSPR%1MW}WYme1|ILOp#hO
+r3P;ceE(#==aqq`n at OJLMReR`E=>|rsR8#$lO(dw#~nIV at YqS^xzX&Wvbmq0~sRCgOpy*aTjZOK`fas
+h6(Zb?uIqcWpa``Z19#G;w=K2%1 at vm54`2?L<v>9mz>Pj at _DIaImQ1C%mBhht1HCt%vrd}nqpLt`BQe
+%*GWmoi(0sfts57Falo;A3c~{w;+BkFHUC9fEPX2NO{wfw?NEh%Ja${tL(E>Dk6T^8QQP}(in!4nRte
+<m+Vzc|TP24JGTr8Fk^RNlb;$$vFI;u^sma~s?H6D6SKBTd*Oy7Lt|!HOvfNHM&$yD|*^M1d=us~VF^
+ at 2MaHbqd_^42=zgr$F{D>4rh6pw!{&rfjWpT;I2*#}|87YSLV7_uqZ?HUcV{-F<XL-`WD=fKEZi`p-0
+CMKG at -kf0AL=F5_WDA#ezTkNxZW&4!CTzNq=FSXN>5;oSNFx8Y7?}3+`qfxDXk`Wr{^Tiag+}Gceb7A
+e=b?Mjb>&1(^kL0`+8;8yU~9#wgUORWOIHyLdtWKP~OBii_TGYKq<bMqhMdln<Mk+yH&})ci`N4eEz1
+$-<9nII?H at XX?pP4R3r8}1>EMmZK$aGj$?*vJ6}rdkCUXtj8%A5Z&{}^K7zPP6ON&*m|gt1E^7KU!~8
+CEs+0geU~=3jX<p(@0K7Qe*fUB<B%b5VQ at o?_eIc_^@?Y!H%pfU%VqQz$Hf~$uTa!f)7a*Ufd`;>}Ob
+r&)pqaB$&K#S`hO0Hqcu5>;o%PQg8u-~e7ecXb#4q`V>Cjd1(irDVtV+fyu0l=PI;({x^@_i8&pu^VH
+)bB5x!cN8nhqlIq_*0^hF;dpS$Wi4IBz!hPQGwfvkqpDJ!_N5E?w}2$f=Mmi8{nerM`2;a~WqDUwUPF
+;UOG&SL6h)rs`{JxQM5?_M$c~=p at xRIX^4iOLkq?L{s{rrKg at 1xLRd=F#rkvxMnnBo+rxc=`odk&C9)
+|GR|InUarh8{A;;#dl>Mft%ipIKJ;`K_AsH?(#)JOqM~$3D869Z1*0Xk at o2tUJO3!sq#OG{Z+P((O)}
+l}K@$nP$c4Q^u;2$O<Qyp-6__J^i4Wbz25Zv)=AQC&Nx9PvxcJar93+N>eYPsVMgWi9a|DY@;9Z|4@!
+Z`GZ3tE~v>o`IN1EwW%{z at xiHUGw)^|IM$YiftjSuwH-FiukymU0Pdhe-HG&=`;<9mTw`K`}C1 at H8=O
+5<Hj?&5S4uQ{4a56LQ9+Kg{OYQ|eRFC(vNDzZTzQl{xcnbi4^l1m at TJkainr9CE)oG{t=ZT3dhBpnXM
+E9a=9UaNiWLAq&JcO&QY3O8|9EN)WFk-|Z*#Nz|sA at gX+N5u5X8N94d${4Nma!z?^+zKHyJfk07f{0t
+xY7aNO8w%gP!o&=*_iN&YN5~)nq)Xgr(bcuxg@^+jQm8P{N-tt^&24Od)?~VGeufr<c9?4P&>>l%9`Z
+krTv_?x?Np}aqC)(aFnT at I(|WfBJh{AuNyRq2^1RwCA9JX!C&B^3l`kHtF9tz(#Z<Jg9wH)(vSx|Zew
+(G(U;U9@{ZUYLnbZ%EkAEJaTK`kJQk*cv8_|Zx14d-{dx&TvIPPMd=y9GJ$XGPp{*)v>Lb{^qT3*T8>
+0YkYSPIIPCG;DmC5mm+Y&=6RENd8jW?DQ-eNDHCxiM_#is!?UzG7WVF{hh6<;AFO_~vk>iJRMgwJPF#
+A6Jc8>md5>DEh`+=I)Y5P|_2L)QL!Gl{O*rRILMHiBUF}#yZS-K$&r-k!klK8u?qX<P&QNXI>URu^i7
+~tPPOcD-01Z<oH5-Ji;Q0hSCjq5Imk%;aUzMMBJQ-pnfMrXBh2_yIt~lId3Sf{MhT~ZuFrpR*|sjh6D
+;dD~r_|w!upeJ6)_k6iY at oAVy=J%(a+vlj>pgoe=51=bnDwNmcLrh=fyE78^64 at g~mc7U%?8howZ44&
+L8DcQ0yXg$JJBv9!ZN+ikz)HePdGlfRvo5dXjOkvqGApX+kcpm0jVBz73Jny`CP`RyNd7xeSE5`Kc#{
+aFgi at XzVP$Ceu|KJVgDCBFx?T+ixb4~ubl8JhbRB~<3Vi!Le*I#q9jROLm*N73lN)(_z0IP>FoF*Po5
+(rGo$Hu1KijKfjB&N6f=O at V_I8$0<6-_<?*b~s*~I5Cn;n<Kz`qr~OpXK_MY3M2|tS>k+VQ>*9P$VIM
+kz8#;Uw``Nz*f`HHE6|5-*1<|<2IY?~((CaX2;fISqS5tCh1NUg3CFGu8r?_Z&UOblXbd at O=9{PC5P*
+b~iEGMjmP1m_Lnn3M!JC^+Ngjy#Zh6>F_q9l3DDIn?I^w&-d{pqWdq!}9qJXU65Bsx%H$CsEZDa;_(n
+zQ$%r11&9L4QGD>p|Mt}OTsDL8UFn*j`N%98qrv-{8td>xeXy{RR{{HNz>mUu9DY6|@L*+2!>D{uVHp
+Mt{QIft*aUbt5cZHn*3i;AC1b_)e<=Y+WZGXF4xL2-NCWn88pULHwfsBfDRCOzBHW99Vh2)J at f-#6r0
+=T|ir-=u~(0q!D%E9!@b$HC4Xib0f;gu~iSnMypI5Y5Fw8AtXpojXkFz-iTsD>w@@B&o9_joZ7slImq
+ad8KO&U&kxD9V|;>22SzM$8LomjSpCo+aQvpzkFhp|Ha)CM2gZY<CYAsMWJMu7+mJ#^6q;_TB`zz7_!
+v>Qv!KW>8XFbqc`cPX%qulsID(y&26sZR~`r$C+k(ld(Zu`8bhN$uracYDcYfzIFLfB at 3JCZ4__UMV8
+>$B(0cW4MLMYbDt497Xtu^*$G9 at m^v%6>yRBc6RINnDG2s68t}ZWdecF0N!d*!9xMM2fIXiytIKF6R#
+jDnjOuHFsW-YX<;ZCG_sfJ}{#Lv$o0`f-440JvVK-%9v?3*X5Hc`bceyoq$uafTK8m|Bz*0AqHqOTKu
+ry|}CUD+b!Je=zyYGtCX(NHzGTj<MoO&#jwn&exsTUx;VFFNVypsYK3<Xd|Ber~NhJ~q3qa_?Qus#@G
+OUYDu3I#{{uaj#bP-6(^*ZSJ}&28u^FHN&lYlQPHR;f}K`N7$1VQhm{3j@;t`$^eT?pQXLS_4bC$?Lp
+aT`VO?YE5RTeg%b_`TCQ%Flz3%K4>8hQHM0fzRR`eDPMZF^Hf#Dd+fI7c{EZsLLX4t>Q=dgtcQC(A3w
+BTGqz0hZi6HWS at 4$-&$K8P42M_ig_ at E?ElyS*AQ}UWUv{I+M_Q$SkCV8+c-2m;P{JT7f5Z(TL#EV5q!
+K(aT9r5%&k!P at -NLT8(tr2aw!fj7grkM)5WaY2GdUC549|nnZCub@|1nG3 at xV$`6gv3-;_#}1*>{*|m
+M>4gMloMr)%P41?_SwP|9JRv=c~Wo9p@<b~Vu5$akI|m>9%<}g2T;l^AK4Q>`gq{k%SFJ>4(G=STfrt
+nGh&{X$lxIR;5hK4#^Hs7<v$_9&>sKuFDBqo%tHb!25bXwA)U%vA5H(V_RS8IA)*WRMH+2?o#Ezvy`c
+!Oo{;rE7+HMAI`6*V8u6=Q7H8>CbcJSQu63LwXlS{rLneurw5LTt(5J<%jx``g<WohN4J#Ixup6Gy5e
+1OwG<r_wUi^7<!M2;COe&yZFP0QXC9BDw`93bpt|#yvXsoROD?8#Nc`SNotPp=DO^~8jTiY(9l6{xoN
+y0KMf25PTjTssO&p9n>0eMG8%N%xLxgz#)Un{HqdOaN1H$tCQ!k5`KuX11G#I=0egpASra_J1qS<;cp
+ at QQv1zRm@UK;+Z1$81VQaB8Q0PnPkwJ{pNQS`1mD=-5bx#^Mtm7(2%8xk-V?a!P-909CKSg7CI8F=oJ
+#8R|kJZg%*&tws6*(lyy+1|FJypy=XTqU48>tYPrsmJU3{@3eIU@?1BJry>ybicpGdz07~0z|^ZjqA~
+HTK39VCzSvxKOf1V__X$`QUSkv|!IzCuN`=zzi5mjjXX(Ny`CT>ha((7>CT(jhSk6k=KwfeNz}bPz5+
+A^U(3D9n4vO=+`k6Wg_g^P-5PgmlOxKN#y?%Avh)I2Xg4cqESh~o&t0|5N6oo*-Ve<<}1ydW)?U(~Fr
+WS2;LN6H4{Y;&V7*0e~ri=5M{I&26rhvwr(Iq7(cO3ZKjm{}=cpJEjj!NvuHQozRP^HhyEU#MW(xh9L
+h}cD|0Uo+nvVeWKyjDZ9Mi3wV at xzy)A<TF28v$Jp0W}#px&_auaR8)4auJes1}H-p_>$!qMo3p*%1~Z
+W@;ts|QLKSW()pZ~-01`-56ujidhUNl67$<A#!CzqIgpQTcMnZxq9h=5r8aS8Ycb<ogHoM{NY*ATjfu
+D2?WAJ#U0z^rp*$or<Mqg$T7RU~yi*L&<0G$Pq&LD2-2R(B#X4|u92qMCZns02uPbg3-9C>5kLZIZ5x
+Yu1t6`$gPWVuB^@nmb9xBti6nFJC1iphfdqVSi>C+eY6eKm`$6+9ElP2`c8#V4Ui}yvtKYHxgahd at eF
+5KPO0b1rc-14SzVV-YGX5HEinwxv?25K+q3R-v~Z-GCO5Kq^D)Yi2BaWgjwBt;2ax+Zy}kx~@-#S70v
+f}NdjvlkROlZ(5_UJ&QBz4svC=LSgQ)g>kcV2DQzjX5}l{MaE1p}HyEw&6-U-sb1(Jmvf+Ce~Q7n9GX
+j7}y{lhk{@tzzeSp5)j=q!S`yCU&1xrPWGX2D0c$mK1Vkfzr!pJor8Zz*E2<D@$7<5cQDHcNythH-X=
+4zmM&O~RufUkzK3}ed at OQL$sRaD-Tvns*IKu%;}-$o$~K2E&aL$&+#ge}$GRvcEH1NcXna7|0Qa;p_Y
+5htB?rm&L=9R{mGfwi<f_NX0XbPTEHfVAJD%*TLkOT0L_2xa?%+c^Jd$zWRx_FDY+za(lXhF}X2^Ehj
+R1YP{;L8UR2C5Z=;Un})oArWXe`kYPZl!@n5DLgn;tvpPwP~xE{VTaq|7h|vm at oP&$Dcuu%iy%ED&&Y
+rrI%ZF9EtZuD5V-q}HwHxc%XGC=Owcji89PE(r*Mbb0>{<6HQ##m3vSC*L>@3I0G*!w)AntgUH+z1_T
+OyN>%>tf0D1BPFJdTCQj3lQ~QV-V>T|1v83)h-TX;&K5<P*5^ypFxT9-QC;TheH$Bg#xL3^@V2;`O;L
+}#E5ROfs3p5hD{SS at fBDm&4Y24=^@MIXj#|2jmLS$bm#PSWml$3ROm}MDkMW^qD<fM^u?9e|iemM&SP
+S{(fwS5p?IE8}tMYfzUmoAFCPF~?#(H7Z{{toy^40&=3Hp_=z|WfrZE|0pag%!%gT5u7rFLR3p7{{>R
+WvyBKobWzZhUsRS5Hu~J7e{RF|OaBJ_n#0u$Z>3=}Coa%mHOd5iC+g!g_}kP?>KJBcUud$@OFj2N=?*
+H)+KVoet*MTRd+daJUjt at 1!Lu9 at 09nFT9<bcHDuXxz5$uzfF&kQP^#JtQ2Frq}OES&pOa48(A$7KRfW
+*VeaDflC``)IWM9LcuB<blfq+QBWFcP1YF_tvX$?)VkDt7hZ1puB#N_ at FgzeYmmNVfBcK&N{~jR1&M<
+;6b-4wS&5DitZezt>z>WW&NHhEhi=%_o-nO)uDrg`a!~zR=do!Kt2o=czMr;;h1<Wq!TnMJJS(yTt(#
+jP(U?>Kz{~2-Foi9~EC-bscDhtoObgap;kw>;xn+!WsgAG%B<W at 1^JJ96e^wE&8{sweVbhR~->mUKn9
+y>`O&Z?r11~?@(Q|f?1OOQ_lE at qQ#bRyyEq-VDf-fVPhcpy>i!d9+E8Q)I79ZDHN6Ir+S!8>+cIhzg`
+%_dywb4kptYUX7sm}WNw#3$La`Hf`_Q`IKZ1p<);P2{+>(((KuPdABI`hq0KudA109WYu4j19c2fpo+
+unwV}s0l3sz{5ZMA at 4AvL^`s6A;uzlqD;0daB!B&}TmD*?xCUyT*H_A3b+K9&RoxsPxo6eAqB&21xy0
+<rrA9H%RT<04FiG-I5?Gw~%YpK;IE-Hb8rV)Tb1abil5EyUbTG6cXZ9q=b4C#}em#ZU+e3J&L?&6+T_
+zkVRFukad=w*l)p0<_6qe&l(&VQ)v#&n(D?g5uOdR_}WPfrJnIS~!wAQe37XAI06687{%+nIegQAGpx
+T!3XWYzBbXGLAZS0P;csLbAV8UQLEiq<Ri-Em71X^uuJq)#8Y(s)`S#Wft8?`jfEtH}gauJ{s}V at O=K
+4cXF=Z)p=RjN5KHk$v3Ra==>7Xe}Q<X<nh(a1n{^CKwU5|JizhcQY3GaXtgY79Cml8fG(z%!?cp_<!+
+b!aggC3sg9{EVfz|758VuJ1X$BE={17biS3IYZ#`<{d1i1Ij$s1ONaJ_KTh$$lbp1m9?QiEH1P5bYru
+#~bh7H<#I%sk7|b`{OT3!-6c4(YSjBu?4v at 1LUBWI|)6u_9ZS*&IISQcwFF*Iq$6u`%XcBnCt*XMfsx
+2#f-C?rZPJ0b66|fJvZ#fp0I<uMYTz6MEJM;%%LTL0y;HO}%frchm3I`fz^)yB#?`xscJbg-)Kf2+H6
+FN&x8<w>SKOx6OzPhsl7G1u!c{WEMC!y(|I)`vHh(o&5Hfqh;i$pZnlCD9t9nI~qya;8{AG|~*y7?F9
+>sf{eu6%7x=?C`M!}IS(?- at C+a!iskKy`N9A?%Cb!t1JoM{nDZerVJ_lt6>q6N}7WpqUbz+ws@$xn$G
+O4 at oX~?E+7PT}iuVAK`VT+s2PkP|L6_-?>SF=!K^i3Mt+U`QZcSdxOh+_XkJyyU`0!pt!Lgd1eC&5Mc
+-l9 at 7`yfC at q-y7<5!bYUYAGfuc+xx{@r7Y^-nYRqjw!{((K`;F<SgP+j337Z!eczwi8l1$a3P+s_|`0
+lkn*RAuN&tl8FbSV7DpYR<@WmgMUQ}om8w926uEWzHsE2<P#Y!7D<<5Xcb1J#?d>-%j71~S~_>LoRsp
+GszF8>3Xt=>_=6dZX<MFv}bbPlbE`n4oq5v=5AQfa-wzV0~-7*{cyWh at s;wkL4D481;4ej~%VJWQ#%F
+G<ZLCZNT;-MPGG3Xp^>w)t<QyOEK4VLaiSh{feCI_J)BSRbNfp9^x6YV|#7kSq8}Ih#7Iv)05tqlpvp
+^J){rfxkZ)SL1&F=&Y41J&#^MLH*bH=hXL+8ec?ZQx-IW0+~sNyK47Bx{rG`39owrDocwg%@WN-U+l3
+N8*6lX(<GW|G<G`XfqyLvcQacuUJp&1-iZD6JJ9Oe7)Bg(HB6WZIl;&yu>60LB-Yp<;z_CH$RD0T0-d
+<qFW#b+9g<tuqa;x?gZYmc+huV$GAL!Y^{_as8a?zj3^m=b+>%OhjyG={_Ln`xMwi&oV2*T~*F5aynB
+;$TZ+=|?uh-|f*&Z~)sgnEkmw<yyGY%wQg%JoKpbm5|ePDQ^blkoee&yG)y?~AN26yGt5elJ$^Jw(Di
+XG{$zxgl=)Jvb8`*S4FHE5den<Z{z`$tvNah1WIGk|WJL%K$m+`J9`=i#*##=cK^^p5_Leq?oNq0>gu
+57Hx|1qS|F=z9x!NIIKto;%2gq59DUEQGFnByQt6;a>899`N`P?hk5^QnomfDzm=@o!7wQf at 6Z4Q&zy
+JFx1r`*d6BcmU8Rjh*XxMqzDkbruA*bFo#em(@V?mm;A?O!10>I-dBv!VLfZBOTXObS8f~;XL|N|Es(
+Q<fJYof#&3(Z4V%u`HC-cSWeZ+^(;v#RORvM*sotCb=kMDIO*HFsgbRbmHKzA+#LF>JjcXwUVeV}#eC
+3#u(<8ip0ahDD=St)pMrSTKeHb3AY|4Bhup*xdBsx&KvaYV%xhb0PT!~=eAT&05>sI6}#VHYzt*IG4p
+OCH$kI=Kyyo`ovd=(duZI;QEaBB%_MRGMiC*<0>L|CIh2nvVo*ir?W_zmL-T9y#YUH+hm<mO7O}yr2+
+K$8>g!e1XyLp6fBa0%I|6u^SS-6nu5*@Qd0zL;!8)cEvXjk^_viW+;n06XB{U_RJpm1t`0&XSlB9AVY
+MDUj<Tn at S$i+engOK)rL_XBbg}&o!!JO;~=O4=R<imM^2Sbl$h<AY~BF)jOQ%kjByz+(%J7i^|=>iu_
+V0pWgTzP%tP`0cnEE-BX6gW$ogb!?>@5kdrXF>X6z=_CQYJe{9 at PNI|BAO1T{yacNl#mutscIQ&kDbX
+H)g(NifCd+l)~qSEVnbzZBy`(b^2#LTe*L?vB&G`(^?JrYl}VWn4nl2yx0CRQ#FqCV>H&XoZ|%9bB1L
+oHrtcFL!<yJ{7g81FHg#n}jgdx8==ETI#OEm3?=#+=fe30w{@Bo{(zklMEYBVJjCuJmM3C$AY3dxmyw
+{q`OPx9ntl=9k6TGdeUeFAPfiLLzM4E2*024K(xA{ciwV62;VzdS9ju9gucmTQ6xnXdTR0o#59u?gf`
+|7(iCgPt|@^fqi%8m3L?D8B*DDNtEN4n^NOKKPuk2`BcFMo>tkl*8g4xZGmZpdX}GUJXkmf>60?53lz
+By8+YY2|etOrmXP5<o4FYC|v;=^TmBEc_dvT5k&J{Y~KqAa5<11rtLT=lgxoPJqU-IDEG)-8+XIxE at S
+~tn3m|^YI&>800x;i(^F-G at LJj0|$qv^k410J7ZnvX`bQ}da)nzWOy#rc-QXdL;CG;k_NY{lg{#gp(I
+4Y{!g|NPRuV$CZKtix=Rqrh+wY`>gCAh4)oD*Go%+E9um2}?aI*PPNoJ+t>b+M$vJoZ??sZ|u|YA-2U
+ftCyf-R4o2${Qy3WUCfcL)ira{Jk(+M3^xg*Ii1z at mgffDFqwKgXO|!Xmn@#0+i52Qdc|RjkLoDk?yr
+;wZy(KZR{rJtCAS1&tK07(yEy5)zKz9i6T0?u_HoZSW>->nhoI>^ztn6{PLJ!`bslWE9&kuqjt4s)AP
+1fr?}+v5J~gJ36N3I+MUZO`66>`)pLdIOQ`6kpY0W2qLe(oAiFF$F`VL(D##w2F8LSexZjt<(h$&9ip
+c-I;hA1mQvX5kp@;t at FTkBe+njtqdOb6n)^g*3tNf54izoOMvPQTl3t2VfcxwcQ+8Zf7whFWGVh5qdJ
+PGq{2<l__WDmN280Y9$M<*iDWX@))*g=+0VxqT#WpSnRyjhx1TwwkNwJ~uv^;ih3Nx7KtMfVS&1-ULO
+JIBSL<l?B~^_T}tAJ06c6{CYU$ZMTOF;Ly5(N!JhBgYZ4;2n1Lk*sn!L at cGEzW)a?S1s3~qpd)Zo`bO
+kt)qkXe=sR|hBk7YjL{bjCA=cyTH;5BEZ`yHf0KFVk;;Qr3rvU#H$Ne2a{8O2fE84zx8|jrsxhGjVz*
+A^|x6NKpg}*|qGMfo>AJV$V^TmWIwNT$(1OrbK!^BEAHg^zV^1>y$(7v#n$nq6Yqjsc*($qDCDLv3o_
+-lz%qT9)IGiTWo_v5sS;+4}^GtinbN%rPtw at M^@iv_v<m at 7qp>k7NN-XNc((>QxuBYAM0cSQ3Hjmj}5
+YLKnPM47Z_e~Ad6;dY+j9qt-sZiNPF5nFp at v$;Hh at 3otUpQv`K at kV?5j%69rcBtjP*M+BZ)!l%jIxt0
+_i+Z!~T+QAy0|?F9nuOoe8RVa2?5qxN at 6H4+fsXNgk{mx&IX;Pw^DSn4jjO20qw`{eR`=>WmKTST$FZ
+`x{4aC$kNxLgl7E_~U#=@WI-m&783LsTlGtxeNIu8U0fgSvacti1+*;<e_i)j^>p9gIx5pH{m%}QPhx
+VUV>FDoQKnGle*W)X^3&~ucBH2$A;l}S>_#u9VSj+>wx_ at IgTAkn6jVy63Cq8=>0(P*s4B?9%XGB06`
+?Y?Q#pc&&`nYL}MxS#1RT(xEyOH2ZPOH&Cv&Ei_B|F<cyhf*+Hhe^56xi1}Ud+%+=Hy2rA|3Sd2igL)
+_7*_a9t|aBmu2G$b`4}SJBS*4ws&ZlRPE40SKh at pkWl7#3;fOGag!#GP^&@LD!PfB2hc at Va*;vFC3ZI
+%^d0`3n1^TDUf{HI7-A+jN}v%U7QqP^q`)%-Wt({0xO2)2!E_PRvQ2z(Kg%6d*UlO6_*f$5LzN0I$?D
+{^e|=P>mQW$wHqD_||Ga?}@Se$ZnrhN4@@5u}&857{HQL0LLgUG;T}xluDl=pTtdXcM1{qOqPB{&hl5
+U}HiksS=9Tx%OuTwj{;lQTbu5milb%oRTmGuFtp!1m9t*8cGJ);A}luFmBJsL`2QMGdJpo|$Vi)c5qZ
+DeYj=O!l4rHJP)lk7fQKgZUuL(%#gLb7^g{B8^To($uz`Sc60l4!q5lk}Gf*9y^S_b+C3g<ok9ca6o;
+fDDVrGEeshC3=&e9d7PGpK5nc at iR1$y at 9f!_ov9u(0f0ItA*DbfW=)v`a2&kOb?9h`EpT3Br at Fanf4w
+za8)c>oi6Fl;7(pVM5(%&NUINk&Dl+5=J|qp#;9=KQ}EWGEdVMwuPJydo;xd5gif;xN3vVQmWlgE7i<
+gL3`x}NGgM@;edmBTpTB;|P17#FFW~knJI1UC!VjO5rb6h9 at Csr+u17`LNxkR293ZV<YYKRQvn%I--&
+s-EPs*VocP!})q0`6kpY7$csEBQ&@9uLl{vP}NUGu%NZU~qTokART;R`tr7GQeLZG3nLjdZ&9{)acjn
+ZpgEigS}ICP5__-nD1(F53hk>+P75IG~SB9$;q|JB=L;6K<q438T~E(LYwR@<7oooO|h8>J8?S-fxE8
+X7cuLSr5piax?5=A5Nh|u%uy1_TP)7KCXI~Zzojjd+y;lOKaF=NMos*{iVag)r(wjl5ro5M=mzoX))=
+&Lg!^2#aUG}!)gcprFj3{=*b%Q>G~XR<v}XCU1Y at v=q9Y*J!o(2c^B&rw;HvE9h6K(3vS!YE{&)&@zo
+_b-e;QOee!tSOwf5Z;w`rpXa|jf=UPENlltX;w^!G`HUy~duGgSa?|O2 at N%m&WuFSTEoL*gR)pK77!O
+&fjo)S(wAe2w#N`d0{HG7?zC=NX^+9!G~7CRWZ*X0H at Xr{VnYY*0EYw7vz&o7FSrHh=r_i~RNnof3#w
+N%D2>-W4Yeqyk{*W=UC88WD|bU}ZzVs`Q4x~Pe{N#1rAo|SMkV|Z^0_nSxvN<thkNiXRSxl|<KGTeya
+MXT`t8RMby59$9$^#3>EV9vj#8h at n!|3v at G;Ct$AO8+gx5C29PRmsu{Pq6SSAa~9G)-nFgiy?^P&L-q
+#vMLF2<@$`!U(tWdILpGJ!A?dSRaKV-?;U(gFZdO?>ofjm6%Mc6 at Mx2xajvPyu+A)N;PuEc2suvvy{_
+sH|M&qG1SYKP-f~u1JZotF=TV&1i)_0(M}+{s|3KfnQP9+Z#?@-iSl`v}O-;OCK&|=`fA`hR(`8(<S&
+<bb)#bmR((kak%YqvMng_3ofb5{MFkOsAw;Z<sPMT*uFlJf00!fPSjNjkI9(OaP&YS^(<q1}qvnTYmw
++5jHdRC^Nc|F3<YyKdh_HtF^KpcFmtduas;}iKf3{nO2tU#cj0X6f>BD-YzAo#P;aU|({zJ^thF3yP)
+5s+v6;Vbzt07})YmSwz>P}+yD<34u5q13SHQePSn_=GyrUw at tzg`j~K^tHdnI-kX&27EmZt8v!WcoJ4
+)(bo7OtVY?^c;8=R5wEKX1eUXGEh_#Xo;<-Pz4c**E(HC(q_4d-maLRDUenjG8faTkYQ3RdzPDykuFh
+d`F1Dg-`@6SpF`t8=!t1@|-+Sw<@cK4|3h6qxKpMoe#&s5#`hxl(o`$ceYE`IR_y9ixdjLAAK=Dc1dl
+eU!UzcZVV3{*ntNq<qmy3_Z*}ut{)I500AN16w?XBb+BYl70zbj^G&f;=W#z_iH1#9vrKgcIN^|4r-s
+rC7j(E8{cAonKxPJ7cYx}~5!KIO^;MnkB=gsn>G#gDYor`k);bvye%)isJ@$rmqPJkztJlauXO)k5Ya
+N>!|W`=1^wH{Pj)*S>UJsYLJ1t2w>ioOa9d9xS!!JI__uD!z8TS4JE%zv(iYS~or-<}5Oyx|YJ_ at P;+
+2;#AH-iSwK-pr)oFb9%wH)%f5b`X3S3;<%^?^7uTSaVbCj3B4-&u<lXZ(ea_t+d)egd|@)<isl|teV7
+Hgk-P60hF>-QyCYxoZFONAd(%|%9oj^ZeP?ck7U`ETRA4l8(+=(*9eq0(1|3AZ^VhG?sbWYQj+xYl9A
+M>l+b!_pNmV>o7l$$hK(Nh^>U0DG?D;Yaalqvo9LK;h$lmGMx at OLs+Ig=+dr)02I-9pOM^BUP4nxKM-
+rCiKeWt&vvOH)+#Iv0P?>M0gy6CpuMzG at 33{;i88+AjxkZsV%vx~ggWGq>*ghu5}DgC_fo-LF;U*-w>
+3{Wy}!kU9<5<Rr)4PxxtSzC`2b@<s*kXJ8$y4=Lo-u2yI9pL`WLqaKeL|WzdY8m;7QgC#JSLYz}V#_M
+Z8O~8$Zk=$XWmb39?hO7#{@3M|ZdL8MVy&~T%Wb^l?lpZTx>f;F2u_H99O|j31;kk^XPZwncdpwu<;U
+%?-!75K5v&5|d;d~sYTK7vt8^!K;g0RrjSdta(tK?X$RB5*;=-Q6-pf|~*pewZBz)Ddemn>I at +XMC<!
+7~i&u*>k7d&3oyC`a52XE at k^KSH^E><)PutjOFRzLtd-idlQI^m3zJX~24ov~TG2IfQe+M-8m0gob{e
+S^EeBCq`pk at 0;b#BBp2-DL)2CovK#pjR~A%ZXQHarq$IM!1TnHtH0qK=z*ceduEV4@^`35Ct`0Cq&I~
+665OP+0%ASd*VnO(SLx76m|pQcGu#1sNihRX=nG3?{+<l(Np$7w?mcb26QDCu@*@a0?5O)1Js;QL{J0
+G=HR}TVUNB at U&Ev~C(*)uv){Z8(kS%xZ at sSI8aX<%g2bi2lCy at hcwX>U%o=aR^IIbm1mK5*YOvGW^Xr
+ftt~GL~8Ss~j9SYsV_1-!+Ksiyn-=pLQ`=#z?lFR06l_S(?+j|g0z=U7zZirqF;{aU9;j5_FMO+9By&
+7BQ-)00u!w6LV(yl!hmR`=I4ZBx1={Vaqm#F`vIzef}i~u{*T%bnm0NJ)E6_scl=i4PFzd=Ai at S7A^`
+LugZ`h+V<Lf0-^?Rg<6c7tn>ga|d?{5pl8uUSCxSTVkcV6u}*WB+P>pHOhs4fIRL02-s*`ySe3q!_NL
+-WW&SKV}rB`kO^|5OeEi7gsQI2AdX>Vz$ON*P2_}kf`^ZTH33yHPjE9+u6FFEQ*@g;BO|)P;50k_4XR
+K42tPJpdK{-LFvZ6oN4da+DU$8EO?ku`r=xJ(%<;@7v$Twfx}7y`wGP4Yh~(R3;VsJ%*f9Tq!F^UG|r
+&HOa6`cUE9>?jG;^A-^k1rJ!yV;is7U-#o&ioOw2pB=6KD0d_<u)g-CWL3%@CNQWg^?iSq*NvHWf~Of
+-(L8sS`djULwU5<PwFnmix)<46sQw+ozb5HH(bcEP72G8>DD?~X!6wqE8x at H7`#u>I|6x*3{&U$|Bfv
+rax%uG7++#LGDzs|n4u*B?X<2R)CVqsU7ISK1T1f*ue`H5 at Ub<}{0u>PnUlSE_Z7&9goemQvD|8qC7S
+X6xQAI278)KH0=1eX1+|*G?3FxpU_ZUEpIx{^Ifm7PDQkqY>viAPB^b6Xy{+Wx4qVvLNC3ctlR at f<>i
+sr9RqO5k$+qly^tb&%bC~WrY2Ztmg#2SEu;oBZioAro_9;UBe$Mu=Fl!{+^H3o+28!u=lRzn$JJa7*8
+e0yEz(-=mpx7iMb|`loQ|;6(QN={{v7<0|XQR000O82?eW2I?pK#1rz`P#XtZ6AOHXWaA|NaUv_0~WN
+&gWXmo9CHEd~OFKK9DbY*yLY%Xwl?OSbg+%}T_u3y0&Z^|>VB$LBe=+?K(*Q%{bvU_={O`W9ZKoYdZH
+=5B6DO-0*{`&z>6TrMlc9Of at FRLo|0FCZO_k#w|9FDuq`p&tz=^loMjkvjS7I*jS&EW95UoRg9aYOx6
+r(L{X^o#ZC)OlDfnsqB~mWx4b__9Aa8Fe;7w?6RAYO#7NhdO2cyjidMfv<*Mn=kmlzgYME-$?M}q~^W
+IZ~4Y~<4h)#lgk&6t{Zq~>LX0Aou3?VBI3lBle^#)k>L~xIF;g%ooeJ%TE=ss<@uiB_yKWB!=c%|Akl
+WbAO$D3G6~tqeZ$EMa4OeuDzaRK#!dx0b1&91^AL9CX<|5822KtSWy?>ZQQc1vj-RAvC?B=_q{L8a;_
+_1;oV?Vt`vvCm2{E)%-N<#L92=#p?UZw9Rlc?pxWFfHb3Iq!V)h^~I0qrggjOabnZz at 882kzHz{un=a
+T3ePh-2+g6hWC8J0)2L&Ll(Y9#l+oLLdHwp^iNa*{B{;YK4hOq>!cvOOtG2MVxA`Inf+ik)LWeB1)Sm
+Fj`SeoXjkDl%>Qmi4;*9M|PPanmsD~(bcF3wQw0?s5GuJ7aZoZQJDF~XorOWfkh at ISVF={ZaEb=%p@&
+iNE?=#<Yy^-W|^y}$mUu&i)hH;%!(YGqA=<OO;K7m2uxNPPD)XvZfZHuN<CNGNj*50&P{Hlb2ygz#`)
+Br6UVn4vh15PA at vjD7@yOSfkU~9R;h<#G8hL&oiI$3ObaK47A7!LX5%6-QwwHFV5XV%Iio2u>vKj^WO
+_~0tQZ?=SHez4h-G#UW`tPg8Os?VmRZCyLM-zQsu>}cS;R6wB95Lt^L2n(h{er9v$$DEliD212%juTE
+eG2(vpJSAnv|J?F=LE4`ee&kZiGj5bGBr3vSq1Rlq^k%V<$~XD>G+8mc_&|>z)&aIWRmS4zzNMVeY}z
+++vs$hPg#7ryR?H7}<%C;kkt+Cs=a3^>TtGx3J^{OK!6zr)<e>Zse33xyg;Z(7BqIG-+uL*n$EqY?2f
+dU||C+D8Rx7SWtk44X2=R3L8#IS3o&0M>k4e-xnoiROy at hq70y324*eFgw&I{R!;&m6w^>*hU6u6f`-
+n+lHp=4nK at TW%Ae9ENtx0VsXj%^G#u at uv5`qhCbL=vaZFs9iHr7WiM4>8%=klRcxf-PibAe}*mB at u6=
+_sGdB&Zok6gpzxdm~m at sjdnwK5KQu9{tbXjEl0Bu;FEnGw!tNUytWmf(1EE$rurLN>~g6S%sO>xLc*j
+T>PAJ7K8p=xbEADhx%Q9*TV32z4XY4dZH5kXC8piYe0A*LGs9&a^*iq8pjElTv_bW$a+T%a26c$x<zx
+<rvBh8f7*%Dh)!V<0?@xdL`3I;+3>;rKv8Y7C4n>ma_5^;^?E&tL7vVSebxig2He at k_q*iRtjEfWVBv
+YSQuddUd2{DA at wXU99+=yBi9DAQu~tw=PI|tISHFu%d03MtHQS&k|{D1S4lFZ)vCyHWi3~vRgG at Uz4=
+(v%9h%L@*^`t<AFA(8e4woqRXe}0^eo&<oDf_IF&y6ecBhkH`o58Iaa5L<x!v>FisY&Sijxy``blB&m
+2-Hpk-!NI%c*npEdNXbDCq$NWWR%)eH6PqMllKBOisf9$kET!0_#1=hNxw+tV{haDfF|6(^$_G&N^;N
+S9n_ud9$A48p9?C2Usdp`6rpLd#ZQs#0i0p&p82eWFEJOZj20ho~rsqj!-kHK`aa&CwQ>F>w;hp`y0b
+i72a5_`_U%Rx)2-=gh|q!~$Jxu|OZAjGh at -Xy#(koJv at 8moU0HSfY=0mgTxp>V}4e(YefWQz$Tcz+m<
+PgV6&9%QdR3(ANW_Cm&Yoxl(sd;iUdJX*!;svY{tU>F7 at b^Qe#pF>!1aNQ;u1oi8g)(u!^ENRg%{(o{
+uC>KQOh&CMa3G(~QUT8b;p%@i3eN at f-%GmDbZqGW-s0?Fqru(c!koCRCOA61H>x#Y5h3cJMGAy>29pp
+oUIl^Zm&oT^f at 1esZaoP5sRtzwJHrogOe9z?{kB^o`h=N8^Pq_QbAJ1!?z^Tec9POj$m7SGAm+-6Hou
+I3iiydcYkdB7-Ks;I2b1^HZ9cnk8mus#>$b3yQ`Rv7Ej$}^=E)jhr`b4yyLGO+cEr>m}vgzW)R(g9Lt
+X1|wtLWPS7hwd%;!A3VKpKf2-h;@VMMyVS*`73(jtrD|3RT2@$)L0cg_E&5?X=N)mLsTTCCdaCb3}&$
+w&c at PVPSuk9(3gr^dgjDV>BO!m3VCC&@l<Ci&hU2eb}?*!<K)w~N%pBQqGLOXEQg+3Bm1oai|F|`GUp
+{LiBp<FG$oldvK*30txQHTnYEMADVtfDoMduqCnr0(l_^N3uy#uNeyI#?7SPuVWnnl}naGdveiM&_Sh
+eO>Q?O*?+RqDDH#}$j3ThmR#`;kvV>CAMNMEHWy|FSr-KD-hy5x!!bf=ewQ{{B0m*me<4C5Uu1t#b3)
+{E8jQh#fB>TF%-*Rzw87tY at n!|nQEaE4oPvf_7QPm|24uQg=~oJ#gYk~2kaBssj?Pfwh~KaG)`QB6 at T
+HvRC#JkqT4Yoov9+=z2I$^Bv}rklx&$LZx&`%`*WUH=%I20zaxvr+PEzIrS6#jh?86wVGfSJ%>rOmWd
+UjWqPlu#w?>yZ&O)4^zeHXBP;m(X;e&n#;u??#_EDdq15y-Fo9FhO<~ftUvGXmy2PF_-5Bo- at I39)ZU
+jTvlj-rZvC)ozvM%6D|ITq?8Vm5M#lJ7Jl-qi>1JHjEf8iGJ1cNEnjxigbf;?a*^bzv8zmRLvsw?%SL
+>CyI9STf`*VJOFPCz9c`F{jUH^GCkgc7NVCekqX8myAPiNP&12b~6rC3cj?=R21>zVWBjpH58Me`{M<
+vle%cjgCjJ79ggc at PH@^+xdjG+a5k3ec+UPR;vXYzFv8kty#^c0{&NSZ`VqgKsmt(yR66jxQIq>yS&E
+_v5e_9yTi}H74DmWHUCl5>Iud)qcGhL~8|(W|JDRF^%ykflG<tzrLZSdzh6A*>utRa4YwZ?Ee8U?75@
+<-Z=`CLp-$T<zj2qwY67LZO@{^SFK}}l*qMo&G~~~apm%>{p_$qZw{2b>mAW|&Z})t7pnVie;MQ%D4c
+e^da2&b at a6Kqo&Mn-Z(kaHs`U=9*YAZoB%SQbzd9GwlRN%+Grr-Gek|lpm{jsl9*SP150tw_-^<g4_V
++%JJJ@$N5*h#R<Vsu|!S~WV-Ii0LXO4Hhl?SIL6~yY{PHgxf?5bR-?RM0zP7jIo=`N<;-Ynamj;kQO-
+2&sN{e2b8v!!%>d~e8YF?_rJ8b_Brn4d%N`CTBr9 at Ad!=P}y-tkT|!zTx+RW|dQJrlaa?W|LaTL;08M
+%edv;>AX66*h!;D6+JWY2+!p5v;KPGd?xD+x;)j<LV%f5SvGFu^`wC!#f2T%&eEM}d)$AcUVkr|1z+Z
+N8 at zF*R08~<$nO>TT#;9b{85n~75RB`v<{%Z$)ysxR^%r|ri#p{uCS at B7Evwcfe#jT@>QLSXq<1v{gO
+A7 at Y34Vm4q60W+&S)khI$OvhKN;r4Qb{s;!MpezIDxzQ0?3B?}d~)d`l}%Hrkam8|m4PG4V~{psrJ^6
+cvBhyS>``tj`Qv5w at wL^Zmr$2Put?Bc5j*YoFR`0znHbOINYDH?Z*HUS2jM$yhgr-MotQAY{S<uix+2
+$as8GjwXMXoG3y4Mtk(bgJVAFyM#iL>Tdt5VQtu73Fh9q3*Xagjxm)p%y|dhJ~kS2af~S1y#dAh<1o}
+G6#jFAW?cj6Qa{Zpo}^kw51NjM1zii8HzptltIT;C-l`cVF=S<n1Iqqgb|uFWauES5EzBEP_zNR at j>B
+Ih>1f{qa)DieAS8ON;vW{68UN*3TXs*MiC~CB6Mo3PE<2cuwXfA14RY+LO=+!L=+JNh|E<|%qNzwU}p
+h at 8GvPBNF9X*ivT~1)Ize at MJIt+0y9ZVEEO_iNGQe>7K|%5SnYu#7FNSbO*7Y+xmNHq!iQnW7%dsYlC
+g$7YcbL$)PZJ;DFyi_V7Wuqan}R&sS|+K)KNOzgPYt_Zt}TullxHdA?wGW at R9=`?kg{OKo)}tlu?I+!
+b^@M;Yds#VheHr$796D0UQT#JZV7T5CG!<i~}%ULxzyzK#Bt#4pcay!m&@dpl|>I at 32HQR=P&)wc8R)
+O;uCuHDa$3dyUv at A3)ZA2+FCWCawb-LD)5gT_fz8!mdN;gb8(^6Jjzt1!`bWQ}WaaW&;LwQWHx7Rx=D
+RY{Z%+ps>X-%t;;ltmYwgVo<WeAy&gn0<K1K)eV-dZs0|OkO{vUSyfY3)dC&DuK|7y at N01BG@f#=0b&
+jEq#=+R<VF*Opcp1tnh;WSel*y|4FS>skcI$h07wHs8X(aCi3aJ=AQ2jhr$Iao0%;IPLxD8d_zj(>4b
+IR8xzPxk5V_G%Y%R7&i`ZJk)*`kRv9%Oci>O*!`WC^p2(G2z+Aso5sH5g;DYzEFwG^BHj$*FH1)XjJr
+<=glBIrC7*cT%4K|^9ipbV50v13Gn`2~Y8(nN5m^8gfj9DWHvC^+;uCd2_PYO;Z&QvgoU#Go{Q(^Rx@
+uJdBhv7<)1IdzZ*ogaZFpyPl7uM5DUle>$Rj~(vAF2T*y;kN1+)DcL>F at 0A<wgw9;@5!T0(I!HtL8pt
++QJ1ghsWp`}08KzSXsf8Fc7UWcC|Ew!0uKWL1_BHO7zk+~^g$!)z%G_deh5XQIVh%$B2WlLBosBE9Xc
+^wj3FD7MTQv}jjPQpDWeX&=M8lrR=eobm`2 at wlEUwXq7zUNq#_VSM^SX}33s5^0x!WJCIG9T5rL7;gK
+JoINd<K<63|G1k$^^kRtIFdkb^d$3Z5<|p%_By@{_a$MaW&_fnor)iTr?U8=%u-q;05!5kX=dG&_uUi
+Zw at 8%-xnc!Ua`3a_-GT(3m<5w4qK5+M%P|l$D=C(|1)WNg9DBV5u6#cYUG}SOGdLL`UVYq&0OK&<-6A
+v91OM3#sbM`DG`-ny`*5o4i(?Hs%U}PX1lLl$EtDm+`&c^ELB+z5I_WlXd+YU;V#V!5IFB)W4rt)B at x
+vpbk#MkJYg)e2N4WwU}(Lc5Oh%+Lg*x0P&k^)13;FOd>K<Vg9zF@<^Q+Lsr*`zqmq#Xnj}}{`L~E0UZ
+my!`kleQpkN;A+}RueNsJjSSfw1EZVMgc8ePiG}tb2qQ7@>10QPg0V%Ox=}>iox?`(4`Dc0Y&+_79<;
+AZnA`Z(3l+JsFgDww#MPcy5`DSr<zZ4s1xW#{Rkd?w;AL>PmcU4DfgvsR(SC7(_N4JpwQhxS7>Dj-#X
+YA_i>g9Cy>h%2e#hX9=%kMsa at u%P4d`7SBnkDah=g+Hd-HV}GEC;cfuIqQAG2ao>cY=3fH5{9AGx_fF
+s>R#D at HG5+GJaF2z81Z?S*#Yr&CRqI%kESgQoi?Z)a$V$-*C2@^}VcxR{a<2hNC2UgV%S at iKfG_`Ko_
+X?tUZQOW%w2L%kFQ?{D+<oeJjT8d5eLM(J|ZJ}Ey2R;@R8l at P7{qV<h>oA&es-^evxihp}p4+5)76G+
+(Y_p=hX^FvJJ3LG+ at P$G1;HHfn}$&)Ba%_ql>o7jVG%fQ~qo(oUHh=hA$?06Xa$XXxvM~?fD^X68e{N
+v9yo13-RG(v&5s2>I~CbfDSPqe?6ipcBP&TEsW)=<5<Q+nt9z&AtxVKLlJCyz?zVzT!NTK^}fbJdtmj
+1Rrj at RfQOTZ^}gm7`2JurN8@|9?-r?~upu at s+b%FJz>%)1%2FUEND!6R>(4G`Ssy`-|7FKYaLb{=q+A
+Z{EJ1yRQ2huDt#g!Kk+u>TQBFU}ySuF&(^Q8sA{3Fo*T{*fmv?%=VYMT;kCCw1xf!cE=4c+HGY_M-t}
+AJ+}uYUJXyq&L#>oW$W;F0DFL&jXlEMtXBh<%DjCi<5~^UN`EUpnnH+43aFDsewbHB$`|z_%F(Z)w$M
+?62WXhB{5&8}o&dW6<1MDbVxwLePvKg#eo!x$<&Bt6X0wk1^sRUt_QCn?l}zaTW0)Mp1Jg=GoGm<FID
+e7(y>aAyex{P#z9#<^$Z&8SM at x18Lht0rkDcGW=r at 9gWyE>6Shak)obK5>nm^J9_0~{1|NWO=IQPob$
+9JcxBGl_fwW4o at EGP`uEa;TpH}2!Q6BTv#URQ2SF?(u19b63R6yCC^V3<x`PG;(N9`3U^kp5nt^sw*z
+mzv;HvgNs`q#LKtBc&WYy2;3r%^Q0n*~4sWmA8LVrrP?)Eqd&0VTZg6J9dZP=^X#^YW$&;F}<@ScfTy
+dl#!32X(lp|J`3FuzYZ^pLz{+kasbedjACppj4gcO*DyWuhTLpHt-rOj+naaW+W$R_ziFR73B{-H*D;
+Crk$<&k%BJ>H-ch2%$DPZ>{3>F<+}p1c4sh5O#_w^ipGln~`t&Oi<>4N5`bRrf#fGPTS at G=N-Tv8*%B
+*cy?K9g>a_!%N<BwKRjOry)Cdbp~VYTHseyewMxvbAy;zw6u7n{j<pSj`p>eo2xw}89IJb}A?AOKjOg
+5ypQ)+_bXslzG`zZ_c8?+BHII`r^+pV`U(0#Hi>1QY-O00;mH1*=G%YKRHb9smHbdjJ3<0001RX>c!J
+c4cm4Z*nhabZu-kY-wUIX>M?JbaQlaWnpbDaCz-LYjfMkk>B+zV5qi4#w3 at L-zv)~>y^09YrFio<Vx1
+5KypZ71p-(A)MJzV at 7LY)K+gjd?cLN})rFOK#lcKZPfx$62b@>MGP<~!ubNdQE-s>USr%0jC6l_yR*k
+rj-v`kwy-w at 2$Oq9XPp8F9Tx4k at swAto<_Mxp%hAQP$Y(`0s?%EyrxCZ!MRQk*V6V}#xE8hUd)YMQ#W
+YJr-fV5DHk at f%>u;6Vl5j at TBCneyZ_MD6_osuXE|aM^x=gBM3b at sSD5<Au`c^dT+n2Hw)ikL^7bKCxq
+-nl at 0Ut$~RJAy{or<!7#j7E@=c-9z`LZ!BbnB<4g3)i at Z*4Wz-TqbtAE(FRT_bAfAP8>shFVXms;Fdl
+^*lP*1lDRk7nPX3d4Gs&>H;~<lDc*}_ln8SV%qd&5B!wSX=`gcdROE_waw8rkPen!N5wp9X*DmZXjO|
+S&7<a0L}ew0M5=1b*#lY&tOU^hRphm3dS}2l%Mnpo^kUkRxK9A_0YY>@ocFi*K7J2GK3;<}jPTt64Fm
+v5IM=W9MJ5gb?<>(D$RIKP$!D6xui`;8iC at M51lT^mPO@}%p at l3jF6tF*<05GUz>CkmuEyi>?vVcToc
+=wee^01s_Z0tqc1mAfz?akG<M9yxbAn$^PfzII)309;3Vqjq$+kVywrAQNnYKr!?XhWlY}%ffwkM|Ts
+cCy^+Mb!VXQu7BX?t$kUYNEQrtP(9du`edP1~VqJ2GuYrtR3Y9h<fj({^IoPEFgXZrdH}Hu~%IJcg~B
+O9e2hS0zeYeUTNpXt%4Da<v_O0Xcyu5val{iRwm_C`)NRODhmRkgX`mXVJ70xX11A=q7D06$oU9%W4F
+I30kKHl>kzg))tJLVwKIHrKyV9YAOI`lxCS&BpHK&0<H8mpcIu^(g0U4>nI1nY8?o at UQI6}T#g#sVl|
+=`mrW~V&PsqXU6yGkdTZJEq0u+%J^~>0cH*yJSI5uCz{BugAbh;j?{A5$7W=;&4-mJ!$S)?#@<MmRK4
+p>SQg%^1$G0RUgGl~yihu0smOb4<5;E9eS+XmQd90y4)-6wT3yIHW;GXI+Pc at Why5*T}dA>Pz&-IuW8
+p;dZ@>;jN-W<C_J?2nDInpghy5)Ft?2h%A6Ak4=x18#h)6KDyLOsxbouUFJy?#-y@@cb5P_8_dQY!d`
+RKdsi at 7|cc?2+<)^qRgr9^=1H4(ZEN`tnSEd3JIh_tDB8B~vh+XjP_QA?hzVXp>%ltNrp(EKY7=_J8~
+amch2*;24NxX<P6(j^$&NU<6xJry6uc(nPa at g#0qO7SY6X14RV(JFTMPCf_0`pD*?EC?%gL6HD;O#0+
+d+lz{fA8*&9MSNT<qN(Ajcptf3)i$s$Vpr1jIaEfJ;-ytgKQh`p(vS<QoE-P*#P-LK}(gr7b-^>5>r@
+g*jh{R<k=HQzGnC9Z5SBq>uP-|j73pS5rD+(?BVLw!>If%~A?FVI1r-U;+8twukoTILzl|}h#IT6(Wm
+O2MT(4y0bEF)C7+f<;w7 at O~MOA!h>Gc5{d`_{B)<MZ=<i&GKM!-FUjd5^~Tx11;T_}z9rl>q-e$8IgE
+wGdZ|YS7N`h20Y1IwH)M3g*Q`F&4Qfy>?=`epnuY){UvP+?z{~3qqQ&H9hY~FV%2+l?vqWAT-A6nc|v
+vyEiS>`*Yr|8uovtRz1PBuyupQCOg;8Xd|YGC<%gal$1$0rmM&RP|w}U=)hY~9}T;sirgIx3<F*~@At
+nGHEkI?2cAOwAk~B(+=`mb1P+&LNULS<3^7Jm*zw!jHJo#>4Bzm^%#tRF4!9_fXd9i?G5DhdeD8eL!;
+$?kgW#TYvk#G;C~t#MtHefU1&navRa9b`kjm2m1$Ag2U)w53F62!<6St8o*<-icdo6~Y8bC at R2l_I|k
+1m=IK$LBkQR>0z_lik;i<g)kv%ORN%aBllsXyu51^ZHN0*BU*hSsY09TAEoVLuliVOPjFbBJDNPirvr
+1~z#ga>(ZvBww<8MDAP2H=^c&JNM^j+imeWeyVFNB^=6`McOsX?>l<L+P2{V at 4FS?48yVG_Nll1`yB{
+-dd?o!?{B#RJBi~FdK|s#8slh`+P{AO>Ft}mTs2zv6su|~1}4FC at D2hTu#K3v_(?R$!RKlP-_ie?iH5
+!@=?1)0a8 at w)F%<?5%U6y5`uX#RkD at LMi0YY2*pB{IR98__6)TXu4|mNa?DJ%`h_?4I{N0z<YTS>eSy
+79ce5q-X=Q5 at nF*rEc{*OPx*m_hFoKaCNeoVpf5(KLyGB}Si(mRMw6JXmd$-l6O%cM at 4rZOvtar&5BN
+H*46 at kk*%XtR3#Enha)!m!4+v{fT4Q?0iNy+btHxLXdtBq at Z}p8*zSx_a?Zl4DPCTW0ArZL&KI;xH06
+urQ_uFILCG(k+dBc0%4!Nck)jS~VMYnC3}!w~q4|(;0s28y~-8Zr9iUP!-qdOw{&r&<!T{T<4skrXaR
+LsGo}~k*B|c`P9BX&{j^`Bv$}xnn1Y2hqshdrUT~0u%Uv#%Pg6~7Zr$4iwaW_q!xy?_+<qn5jhwJOjt
+yvMt53dtEJ3&WN9v<2GeB#N8x0g{|k`eWR*2X=m~!Utbw0)$9s>*-LZk(opw_I)*I-MLU6C8%TWrWcI
+Ug)#hE4nIJCo8z=qWl;Qa~#ks>!`WMywF1i<|0<PIcvnLWwU37blG25RRR3kl#!pmY+=!GaIvHiPyrr
+b$Lkd9oBp at kFsJ1BAg^L2(!KHCqMD1w(N6mMe(XU<y4{hJu(jnkL*<B4zaOQ53y_;Gq=Lbe at XYK#pM&
+BqKOj-E6?ve*s*aiJJ1n81Wsx{|S-K62xOBfXgZhsKIl_<Wf>o8Z`nu6Xw2BtjWaD$O)Lzw?%P9giWH
+CIP8_~k1Df~=7DLA95Y)q<rZfM%Nn7!*d&RkKiknKM83_N5j7~LPBK)FcOW`qdIiiu0XTGa#<yuOfjX
+;3t_3urT)-F*)mb4^djy6yn~x{E2$BbwnyfPEK6E$V>3p5rJF}9|AH at O`q}!kD19}{Bo8^rA7 at h3yZ;
+k>zoZ8J_jy^s97PMHdMdbj`oFw2mWdU2vUC-=$P~7`Y6g`(r;oP&3J_MwDe||u1M{FVefA;?T@`2a2?
+{}mnGk at T%%ER1%>JY#^H>6BK`li!WWrsZQ at GU(92Xo9Eazlv|Ei(sEFJ3kC;qw at LgDC_7AXKpvUSVYP
+$)sDbr2v=Bv5)qUN?<Ov&tr6KaN<ja4yH{GKu`ni$_R`DkC?Y<JrsJ|&(1mZWOfJX*Tap>Kw0(`0YNL
+3mAFoeRjra-P5=oH->sIKqT?V`Y2#{rJO&oFk;YEu+ngDK6C4#;ZF|q#(XjwEPcF>S$LQ at T*-&<1P=n
+h8OmQuA`e}l0XHuoYS%V4m4R338V77>FYNv7iAkP|VWxFD2ySPEz%;-hmWb|Uj9NW=rrFShzT*tdk?+
+*6gaq=r|0 at 1eP0p+55>a$s&>2;<=<|12fMMrvyqB3>G5Yf!vvbA}XYks3<&_1iY>Fs>YcLveeK;qd#n
+g|D(oB`+ChYFw>fgFl0ABuL8Y7UM<_ata9_^5+uxa*}e35_G^@g4a5{ZQvuyXox#(dome$ESZ7?RrU^
+9;d^=fyC62wJ$b at e<VmX%tatTuKQYsLC;p`e3<xM3A;*QaV|B3H4SW5;3~{t1nCV}o}9hK8Z~zS<A{<
+Gc;47L at g$HfZYWpapRWY&VRD_MSu)AQD3Xh{sDJYQ6irM{e}G#8!@)C|jXH#p=1#~QNoF=Pr|4Ph`O)
+(dpf_rWlQ=(l`ux>_qyBB);0axnY6=y4eLqj5XbFqhvZc+=tFb25Evc;MXRMcVpkRaK-(ded{eY0|yt
+Tw%Y6r7qN>kWb?A98>miTcoH<ps!+)&Cf&|EhRLRP4gX%U!f?*9NA9?T54o`=jtgb=vbMoub>fum$v6
+}4yJH4FOo(Izm*Dqu?=%JeZGagW*6-N*|^mPP<>=<zopBMpcamIXL{*ax%FVhI0tPrewR$s~}aw{_Y(
+dgZ$Js8cafT~so;PKOb$(5X(aQ at 7(|)F$Iw^j|5NOOIaSBXnhbQS7FKp3WPh$W71pv4gi^L1%x{pg^4
+fIMn_qy?<R|z%nXM$9Dw;b6*~g;e+Bh1O96y11f{i=&Va84|PNu5R^_J9s^R%XW)@LXfmp30MNPmnxp
+gnmHX`-Jx#x`_*y*d32=LI;;J>wo7z^&2?mvdqtWdi(LoZDtV;5Q=+Oz2SKTo}mn6wDIkkI8#yozVNR
+AbZp(*W%`|FU~3nK?{f3Xy3RLhj2d)(KXs(_eD1%fIK!$$m9v5GLO+tTnVEv=laUiLC+ro=5B3&w(-o
+`aF*et_xA80JILd}U_?3<Z>Q)2yRKRjkTh-xhIspe;MpO;R<zzQgn%V6&S$RICDN0sq#QRDgu8Jz$*V
+Ip%^WJzYoG!NpvrUDEoK*3BQ1RIc(2rr)On?`ZElV9Z-hn6Pw83Bw=wlz<(+0HVTjbe at Mz_qjOIL<!9
+70ZZpCJlL)7>LDLz{A|je-Z;rOBv-s$o<q0W`szUIVX7xH?NS+^o}LDdqs?wJi3ZntH$e99K|g$I78H
+bUoyHPkRXn3Tr?vpND9LFN2Q-=IDNE<xWJm49x$8BrN=(pAz>Nh9-I}0$nyplZ{EqqDz#uy<upP9L;C
+_zmMwOp6z!IIx1OSwF)oDq>V<*jbFkyOG%xH_LkdHzSiuu!~HBId#wyVzc6P6{yd{l%~p#O;`hmH$S=
+g@?e_+^!Xl at 1v{Q;^K3l)<A_zjW3M?FT!{R3*#*A?{ecvY{>}`DbFXT3lTCj6{VtNa=Qpu;|Gn?H;PV
+DVC+|?mc&pHy3mauTK%r;;&zCe;DuG#?cRv8Wxz%ca6|_(~AtnA!?fc{-H+5^!@ix(XCDUp+0|T0CU@
+X?c~5 at xd7@E*UdcDyPtu16TqKj2k2a(67$qXcd1bwQ7;x53_Q=?qt!ATzDP9Q5G^ld1zCeZ=Rh%ibd%
+Ki4$93m!84W{fj&c2tlGjfzW{I>mxMW)q73PEFA90EKJwI`3226^4OAYeF|?>7RA;`1*Q=Fo#buER6+
+WAlE8j|hoZk^q0x+b0qV!^dS1+jQFP$N&2u^6-h}VWobx!AHEbP*4AD#y+Cw>Bfo(S5b5LJmnEp=o$z
+)U7vDH&st%Na at +6`BbAMs<prNCwZvZR2EMH(zL2^zTnaP?7|(q-;cZ<*nE<m4t;2rd_fFOCPL2RvTsj
+E$8)pp4~YqA&@+vM{y%ho$x#_UldJ)p)rUN)@2TnW at w-opb3>H)T<?ygDzkTpk<D+DB8aHs-m3k6bTJ
+L2_-vikyPEM`5`Gh at QRbvjv{CTg>wNeV5S<>0+q<_=tM1TcF?Xb3NV!^gk<t)EdYrk=^HH4ATJiH5nv
+aSYf5TQQhCOLk5w=?ujpvI$?gKc6gIR@^1+M}9|d}UDhAQd=m3CTMRp_jW*geA0*|2J8OPAXNV5)?O~
+-SD)x%J7+3!w4o>x%R;mx_5Hgw0~M-`Q=ktiyKlsPe02;mn~gv%rT|I|fv7CwAWWs`#Z?<$FZS4ngou
+zgH!B6Z+9lsl%RO71}|>lJ9h^2QwLemq5%xmUprNJw+A18BTrP=Z91RSFcbvrkoWv-!DmSV at drxv}8-
+i7 at +UobIB&1D@$=^7XA_a<)t}><y!D`}mzXD5fGxA{aWd=%Hq?fBFK4+<3Er=0cc+65K><1^H at 8^^(L
+I2ho$=y$z9&cg#RnU?C#s7x_RblJI0l@*!1gjYBk16OqRh6(rSc1zO(ccy?{ipiVK^p2RmGrNvD>+}(
+S!7u&}Gh&!XvoTk&Ifl&<VHLvLkZ3bR-7F+d(7<OkM*4%sPc}#&7<|={-Wg;E^QA<FybZakI2G}m*2t
+6slMO0*r9C_Hhs=}(-kXNcl;6S0Ds;b%Db at h9;Y;1C)>YmSzN<HuN?~_utkbf5>Y+jI{u8sT3&`Z^*B
+Wig;Nd8Utns`+eWo5c%vTvc)uKMgKfN+>!ZsUed3g#s$tfFbn8`w_v__MJ><W^CTS7O}_T5UA5K=~3m
+i#gCDD4o!m#pqx)=ir}VM0C(<dp5BQOe-NH8=6WN^BH8h8kZM)&D;!9NRK;((5P$3tQxY}TNGZACOP(
+Z(hv6XAn<5l{%gS(_?HzrEQGY$oPjDF$WkmExEEJ7YX93N4svd1BYsHC$wi-u5qK&1>VhPbB*4=p`No
+7V`oXb!;3sQ3UZT)BA58Ik=97n^wS7HEe+;+-A5tKdB=dT7gseJ^X2A?wJFz*1)XIKj?$EhLJ)GH5u^
+lV+mw@#Zso)@$FbUnmvrzO>K at QdIJ1*h53 at PRyn4LXMFS?8ope++F(-$-fxFlyg`q_ at ZgAQ>?>yDjsk
+_|Yn<Q at R29rO;+9z^pb&1!P0P}wOr$=5Ie`TP!<^i_=Im2v;&(`r&TX|rnNHD^3c0HuMhta-^wi-2x|
+L3rmmPU~X${P~j?!`*n_arA!M3ax2`=`4^544D|PP6f&OoVhU0J!971-Ds&~9YW;`;h45u+~^kn_O0)
+A?Ve*Q);BQ>jCS8B3gO^6J$Qd0g)HgaeTv8Z@~`1UurHa29pA&AP*ntX&Jbdx%C01nWi1@)L16vk^ZT
+9XptBk*R_-bbUn_@}V|_0!Y(+s7h!S*1$$gPfFE(%_=gg!r`GLYPc{bFsRKDwd*SA8~#V-kb-85oZHU
+wMt!z3>{DoLXbIPt(hrP7r{2nwcUS$2a;xyuNrTBf<iTzgqcS}46v9y0;;JuZs-Zjd%=1TqnKq$kDlI
+Gth``42}&QTPILU3~d``g}jyA^zMMtm(D;^y2M_>PZ~GGw^#HvK|w$7T%-17T%-15IpE{$a(-g1MWAj
+A^%dy^!p;sb9DkuQG+?B00DmNTqIUWs<735+;<fXzk^33jala2b9KkUeZ847+L!48ej3h=3R9?R%SLn
+(LA}oQAD#E3b{e3}@HvZ31tz8+S*oRIje~nK`A*-FkvxpR9_{H92>iDDv`g3fsJUo8a&LeTZuZTUwfJ
+p7j6EdAb_i8A<(_3hMWasQF`Utr#%^4Lj`mGb%bdxel`RGc6Z2`KlimS=??|>uHECtL2~RBg^CLdva&
+*Le6o7=PtmVt%SbkL{Lt(=wcl3aVP{GK1b7vN at SSKbO-m84U8BCy8^MM*XfAStX!+1nOL>4igLqF)+e
+4iZ`z7g-<Fm>jl5s|Ne;IB9UTFWaB!z{frsTFyl7GH=~7gJ2yGB!nKxlSs&=ptW!C5u<2DpLo#ZTWmn
+$J^0 at UW7&UFF8{<Sf8|jx#$=l4U)E{Fp%JprJZSxkf$VIEKRZ(JWng5;O{&2 at U~rFFvr$W0Hk&q`<=%
+#?#y;Ib%Ylutg*0qH8$}24QSo6R(RX^olCD~+i!TtPU$c=g7stig%R%CN63l!)D-0#U2<gmc4hR^J*a
+gqXNT5tR_>RG277x8F2}`SJNj_9M|GA-69O|bRN!|y)D5fqDf7QU1aEIj`u~t^$$C10I{#qbCepy{n*
+z>6-?us+TTMEH&%(jyUw}mrj!SRO72XDSz8$B%`o<So6(uN$yB=HHfD^uNE&oU!&ZFL3Bf9d`ThC&@4
+~lK^v<2p1!lq&KV?`w^{-_T^FP^k*?k6n5Bu9e3)JqTGhSi9SLDc at p0vnAaMfzmPk>iK at 9<zZa6I3O8
+JB`BwQ#D=7_53N8k&qLn>hJ;ue?Gf<UGxnc>p>ZKT~HW|$2NKo+%nWUq<K8P{3A&6e~uhfi`BkJ%70x
+Fuoye5)|C<Md88Ygnu8bZIoMGVR%np_%kLq`GK<+Yns?jVP>wLdh?2SVH(GyLmcB>t-5`~!h-Ha}zyf
+p&WRf`{Z1;|{%O7e_>197eA@)+YYkg~jh)|=i<-QXOU#W8)$aAzx<$%F<x2(EuH|*!tviw|Zuvw;b&f
+harDw;%#^cw3eRTn#*pl>{=h-K{#(cNj<CKayGSWaf}$UfL!j-zGI=@vzRa(v_~@A~R?^!LC2eP13d!
+T(kZtS!Ux?>CqP*}?T=%}Ab3fqQO}J6Sq?OZ5;VS3+I!@o&opg>3Ba>;>Q29$y0IA}Zn!**fbQLBJvg
+EU+6JsJO>{A<a+V^y(l9`J~M!1j?o;onRe{tt)VHF26um6%-6*#v8>6s85A at KnO}Uw}E6MU#Aqi7ZQ~
+e+96NijdCoGvUMB}+#IznBc0<E3^B4g?36|3-XwncU^t9b4GM%hvrHTnODgOccwLcDc3+BN{f<A{y?{
+09bdrgaeD*n61o}U)`;)>8bo=vW-NKW9Lgj_iw`9c)BAM224fO9jUI|emqe;4ZmtPRVl>mWM_aOj~O>
+$qjv=ov?W#$RM1nPA0(|OY9BPb^i92)6Q_d%9A{IO(i(`mzZXu9WA87u}Q at KQUc2ATQPetyT|+(2rF+
+)VjO3faeUEjeu37G;Dc at o@NxU-D_0zAL<-;oNUlPGZOtcJ(~KxKUTiNYrTTyioPg6RhPRFj!ek6}w2k
+Xi>Oz_#qX`Z>!0hq;^dgX6|xI%+(^PKvj at G)PQ;eQ^Wk5%cTBLC5vU^?K&QR0wyPpmeP;AZ+c+TmtXf
+Gqi&{d-6HQ*2NoP0pdB4hh_Chdo>w4GJv*;_gouZqaMiH_r(V1|iShk-LporL!?MHaM<aLDNGywl#SQ
+VDba8N~tl3ecsrbU7cxO#J|G1{a0n$0ny2b52q{M?o2#Nwk(?JDurpvfRQ6t!&PBpAkM-M{h at xC1UU9
+_R0e;7sN26s?IJ^i4QyGQanva#}WZ2v$}s~=u=h`!bgBXW>B>_j>b0N99t- at Q+2+Hcq^HNr^5`kwgtw
+%ygAwY$teVFlrSd at U)_a7>Krw5-YHIBpJhmbXm1U`j8{g=kWqqu`r}J7%KtxUPxxEO;Y;9KUup_k|kV
+j&_+)@7GscL!tt5vLDi|lZ=$8u at ILu<o(MU%XE<!bZ<O$-=#1|jzUX=ukN9xsQAB0 at Z=e2iw945u0p3
+-$#hy&s;1b1#2i)E3`v^!97D at DdE>x6Y{voab;noc!PG?XZFb22r5GzHol33sGIpt~kJe>eJg0I<`ZW
+=CH3_{eED4I6n}Qz1QIai+3W&b+K$TU2FW}Lqy)S9stX^H@@WoBP_Xle)ea8hq8~O;+Rncxjw<_8IT<
+~QSeDl`Gwe5*oeyBBD=pd7zBvkt_pmQI3F at c>oX<aPql~DuE1$d;JwkNukS0B+S$lDM}08{KnJ-TNv(
+~x0?>}~S<L_fyd*r`*qsVVTp+bj5c1 at c{yE*5(>XX7!Z{Kca{(L7HhI$+uo0i+$;H at jF8TmO@&Z8fXW
+j~T^rWA1g0TPZw<WeQQv+7&GE7IHwQn}r?>$)|yrS6F-HE2MRE_i*FzhoxS*r^5JgUz)Ag*T)fY2gty
+$W`#u)A?dQrX?r{xf_hId;Jwl`Z0o&A-Pe^6g`ZfBNL(_#w$)XApV at r-K=Oh;^E!L6A%WFwZAnZwMlU
+)<*z34E4$0gOGQ&>nUNhK+?j!rQ<}a(FA+ALiDWINxaWR1Qf-D?ZlQrs**R18wpb~cP)&R!O`aNjdNO
+5%F_SkFwMtQ)GndBa!Fta`h%-ZGS`oNuEDp8v3RUFi|_i^YqEO(P-u9N$a%=_zJw_Ys)Ekk#)>>9qbw
+72c2eXAl}%VXc6ST|v!KVGxC)YiuVexz)j2;85>_bYJpEA9NBePQn~V?`bmOFM3um$coEj_?qgqU%fL
+UQ%r;y=I%TB~E|0IMsR_a1nLRB~UXgjRZTf+3n~Pu<`tz5?*X}5Hd*;edk6JIEfH($(*HiyA%lF|6EE
+JfBf#%Y_qG$te$uxnj0bV_UMq5K76gNYL^;eN|1pA(}p6q6Y_Ql;!gmO`^y|eIMlmmvG^&nnRE1Lj|y
+2fkADn$9j6d(XmZA8-S_A86M5an<J*+McJw7DWM{IZ?e~+T^MJ+XBo;WkH7)-lifw!(v#s7D=DnN-Sv
+gFldolFhjkN|3tM-C^_9k#m-5k*}T;-3*sKg(sLwZvM{)CObrOm}uMW9NF5<GPTJ1Ydej;S3^W7T1Yx
+mcrPSNpeg+FLbl#ev5fftx!cz at 7g@uS+*|xA>TP1+G=O?9VE0+m6#DF91%GsjxHj6Or;wopJjHj=na|
+Zi2yFe4 at f|3$_Z1X+-eHWeCsz0Z>Z=1QY-O00;mH1*=HMPk2IT6aWB>MF0RH0001RX>c!Jc4cm4Z*nh
+abZu-kY-wUIb75|2bZL5JaxQRrrCfV=+cuW}-=Bh`G%G2Vl%&(0IqSs9NmEa!XOku;cH5bi94$mb5^B
+Cekh0YAe)qi(fCMFxRCaX|5g>tkfs6b2;S%yPOCoPRUlw_h$@$z<QJQ4ACl)#hi(JmRKJo&!QCcPO$S
+Y#yCxM)YDwmlE_1T%}lgYCsQrkx1M2ju{FLD)XOH*oJq!I~miCb&6okYn-md%PR4Ao+uicCvSXslEDj
+N4E0<W9!w51H8xf4_PE?#A9Ujr=6mxrp<UD)qYAr4q(_22XPt=kpxu^K7;CE at AM{CrVW)2U)-0Kl9o@
+pSv17^4^QwUwgtc%sgb~y%cF0DqrLv%2!Wc;=Na0qz11)zH~?YYC0C<Ki-W0>)H4}Cb#EL>($}OBa3&
+QzZRMBVI4g!VbSBjlQAr=idWr(x`2N#kN|YOgt9XX7zI9r{|lkzU%nd-Uw016^B(s5v@$q><RkBm)<q
+<}d at W&tb?zzc1tJ$+9Y>QVT}{5}Y5+<!>SzNx_v_WC?>}5$4N)mWp*1P<wTM-Y%KTn!RXj)*ze_(KUJ
+$ijujgrgPD<n at OYa}p=^R#d4VUX*f24(k`zj7qEIpm?La?Mf&(s1;T2Fw+84(k{FVkEsLOGYAj3nC2r
+8n)1{>bZ##Ui7tpC$1wqGAw$7&R3$DcUCpO>*Ujl3HsOaG?lPf`tWrsTEzq#J~GeBsn!<t}xO(i90y>
+BHjoZ4)_z41{Gl%l4$sfDWbdLYiKU3EGg11;z<;NAh8GP%qml5IaE5QGT)IQUvdH7j*82!kq1hI2~9p
+w8DBPZVNyh0lFa1><}=nwk at +-<rIKL)7SX|AsaB3mpa$-pN=ag*vjmsI*Nhmgr3m=R`gsTO^|#dQ&-D
+Ereg8Xs|AoGZh@!8E=BVPd$hn|9NZ-lbO469`79`zJELgswga>?!Xw#r0k<vxR1z%}$tsJ5v1ifTchy
+_VKmfM_Hmv1LUZU&sBxzQCWt4@`qmMP0R&61V1moNB5B`qRqq`|1o@@TL=ziUNxBtjY;=mN{3QVN|4p
+VtmbOcJd9PMT5 at ueyjAWRRL?N-lv4izL`lff(i>CpLU2tB9MRMs-ln*VGa<j0!Z;oCHkER?xgQg6?m?
+RV4je_D~TxwJ5B6r%057!^gbtS(Z at mXbAz03aWWf{fLx6`<Y5}T9k;%CH%c%Sw<;1JQ;9t4QL{X+GxV
+6yA(5$3l;9^N{hs$FBv}~*UTkcfM(k8*sM)tujL{|yf_iA4i|Xzpe1d_U>exT#z`!#)b(a{EFi=R<Sm
+`z+azSEoBI2t#X at YOn@q&oIvqb$=|{7OzRFCv2;`FeC<v5%ARxk2%O=9;$;L|~+_Ex`MYMNEXGD&C(k
+k4g#CClrv&J!F02SGfnFy3*cZqjc^|CvoCgAunDzMgR4d`iXs2?W^dc`v?uSvLDu|{LjvOumPbeU((Z
+lX^y0nI&O_p+gB>U#xX&l)cqZf=a*`ierAEAJqJ3NWw=lyCrBRHd;&X!efQ;KIA0Prou at 2&OAjU>Zf9
+AQBIyQ8lP96Te{8u~i)b1ZXdWe}_(+o#aA<B4*WCtbD7mixoKMR02YgM0k;8t;S+WQ?rUnRSiHL_HMz
+%);Zq;EJMyjbva_h9iZ)HTdtz#uvIpdHN*lLucWDD_L?l0-3->$iaVH<^Vib9V^>$ACd8v$kcI)zyNi
+6nAPBEU!Eil=&y08 at BLh|XFT9nNoj`uwOKi;zugkE+WvN(64ZzvfjlDxr+HeJ~MHFF2!14&x35t9rKG
+Qf}W|fK6%8owR#fA-Rop5``#h{Zz<**DKV~+^&i$}V`CC+vRLahJ~8+1lEty at NGY4vXn5w$cSs00kK*
+6^IJnOxc{*b1>*n_$(!18@|PV(>&TFEU_TX at kwc9aynASZ<k at O5MT34#|S<5YUVb3}M2~4zE5~d~PeJ
+EC9CCfM-mndvh_X8HugAprKiq0S?)?{B_dJAyN!05NxEZE;cB|i4}XC=(PyU&HGFktSLK?rpJIZDk2j
+}atdQmG at c?&6mA at hIi!g;`jdX)$C(Th(LD$7lM(xSj6+F at h5-f!NgVFD9P%ZVA|D&c*_!H}2s90iHDv
+Njp)$6!OcFZJP>&rK2zW}{D>;}h>P5&-Ui%5_A>(ak0>U>pjigEh&3a%oq=N?tm!qx)bh?1uW47aBn%
+ZpuI6VcZYs=+q)wPd9 at GK!18r)UI?j&_$gtf0C=9yXF1c9B5u!BRvinA$0F_a3)g-lsun<Ok)cQ+-H-
+DFYNN&a31Y(7 at Gw^4XOR$T}A`+$QWf}L79HXnx(AFnnK<ajp(TDq#bVb<P=IcTJL6Pjc45FXMpU{JBt
+1W;%Z8hT~j>hMy=?QWLPYe@?$_oZJiLq+B4aYp%C`FF8VxUkca(<Z8pnea{ta<D>rz~1$sx at E&@V*uN
+JV_XSr0yAU0<zlpy%?h;;XD{IT2D4~csinLt3+0C06x&G0RvucVA`>~w0QS%lU^K07rOvjng;CyJSbx
+qny~cpjLZ6#i^#+q*?V!R1J#=?t2eyG(u5q>QaHD`QW4CAE8FIBTh67vI1>hgQaX5XL=tB8p3qgeT&3
+>a~`?Jxs^2QAfyon&Da6bYVRjjs)MM55LAy*s`7bHm^?Bc!6&55*}P7_rJk*aiTH&3OaQem7)+|`z5O
+lXse+ZMuXxb#H><)jCq4Aa}S?}E6QTog>P*#pwkaf0fZ?`-Qa#v^OYurG}i2T`iF+LCF)x>$8_ox|8M
+O{%-zq9uLNU(&pnG?LYG`lciwZDh->^vdi-e~A at mIo9CD+d!O)LX%AWF&4pQysfJ61^xMs0g-_OkRj5
+wqVRjyOd5dYN5nWZ5U5<Ir9X$-4FG=jfCfMEhJD<I3~if81x}9=BXa%k<&3y)WYJFYH|s0VeL_$Ma}=
+TRpLAinuyTeCT3d>@@2C_=(C8 at 3l1dwyp)AIL`c$i at tD4rL2Ds2f%kgtASILTZB@|AL<eTUs;*r@#zR
+ at W-+fVqef}Aqry5&F2^`Cr2r1+NcdlNx!^h04NFiO1If_dX>N$uYK8#F93Y3{WHIEWaz at tPUKR>o|hg
+^B>b*0!+WLXwW#x5C`UStQQJ=4*(stF^N#`%j!jXeON{Rbux}jspP at Hp|3r at 1E76@+K~`-vS5ScE2Yo
+cDhFRt~XS0ac-9L>!4T0NxefMz5{zK1g9=61m^72Sj7ICeR-ZVlg-@(VhMdoR}1o4l-E2_|Esn&128Y
+So#Gg{uI!Cmk5lv|Ee at 41G|>VJ(`L0dO5T6Zu at GOUFH~q0qz)<=2{hB*I+1@%6W at MYK@R}Vg;8m9BlE
+K)Y>6w!01Wr2!<iDb*lmalVj779+DANK(9MPQ$5<{Q+EM%i)fVmA(ZqK&@jsFzdJ_j90r}ZPCIFQ=ti
+fFAd66kXO?HB2XJ->#RW8y^EmRxkIyNrzN{xB-DkD^76RJ(QrMf3`E2KTlM^g|X5}HF(n#Lje8K)K2@
+{3HHj8YpksfG*9%#fUv_R+|<7Z*>+u~7Weca_tq%@3zF4-<%l^R=Cv2=gCpX1?)-Lo3t$mk|vw9x5@(
+pCaRqtSH*)AHEZCvM+}@d-QB}wQ^eScJjt)A5Y5rTF<M at HB0Od6%|ar($tOs<?`c<^_Y{?<GtKA)<co
+9^;WmOjx=Wb4hU0L=isgrTg$}r35=>P<+27Ut6s1=@EtaP8&SR&4--*h<&!uygZ8h2<0o)(HuVzKYwT
+=uDPUC%5X3D_1~U~!<D0TN18O-IOPd#@>Oz8raK_NSIHE!o{xapSTOo?e1JIvf^T)!tI%B}~xQOr!S#
+={VVv1g!FWM{mk_MMsNMsXjgePn!fog&DldN2Nx`ny86BpjXfQ1T_iRuL6D<+#n`O?u1n=m_p`28AU(
+YTC;j0TQdKWuI8 at f``<evuQb7GDa=OD{t309;6Hp*Ud(V1E1-1-!u8T<L8$9>+=U_s`WhJ^_)YJS7eU
+K#?=9%fer4&ZDmkY+YrN-%0$5kLwweQFzpbBPqC$6PSeNEe}Mf#GDY2f#MW7z2F|vnU5XUvxrsCNxO%
+XHR<F-yB}jVMP^d_HfwFIQUf(kF{{wLWX~mYq<6HPTnOl<A~S)cgsP+>YlB{P62s^bWx)`;7b+MLw5B
+CavAO*nNCoisHX28^6erU!$9Fh0m=(Sw4tY{C_?9$%nG?r#UR}u(s5Y?193ugNpA0FMoR?iCsYz7EG1
+JRs7;|L4mkZjwx6|B4DfNS<hW1jjf|zu>P^6Zb-o>Qix#)Tq*4LWFY^Iv!ny$i}mcW;yN1TRpbd)8g5
+br!qIh1ha_f$Hym0DI6m~L9t7Ex-w=Tiu&ss!ARJY6g(LkC<UvGW4C#M6g4gsIE}AL5yPkjA5la92yO
+Jf+KHMn#r^d-CMi0mbu!LqX at Y11mLJwY=%^!wu(0-anl0C0%PY4=`9GK0D~<IPV6xUh8sT!j0x#>*m_
+WF|(-;Yfn9zG{>&8J)BC1YR}hs6rPXxXg6RJr0SLH5+}K*V(-nncOQPc`eA<c?&|&3&o|d2JfCWH1|*
+zP&!oty_ao<|>OO at xH#eVt`u>-jtLuq(jX29tae9Ea^ys*FKx{lg2Y&&xK=8ps&Ld=+N?$D%+*s at k1<
+T>>_4WMYrw<>mKHdCubxjo9NB?>C&)+_L`T?f^e2fS^lf9W7jt0jLW1j!|=H2|K>-jIAexi;btvI$L#
+FwZZKGFUf1gERv8G4QYU}!fV-hOy@?eaH#O>55{50-OWoI(F3zy5gT1<5=X08i&SFP6)}(0lpRJn9e2
+&feuK at 881wMPny?X!|v?6drEqE_=U=jo`Ky;2wO~H4cU^davF>RKN4U!AcL%ruWVBXU|?f75l?@DViE
+mGw?4JUpn4D&@x<(_^AKz;;i(gk5H+TC`#}kh{u~e?Lh?f*B)SA?m$}Z1!}pJ7;wW~+1+`3$(3mjYrW
+gDiCVg?V8QUP!l3%i!34}(4~FIpcQavXJgx5Eo;9;@$WMFMxKqCotKRL%rPRBM1HRi5SZeK~G~ZE=y|
+G&M(;nuid$%|O6!&D`YhN62%47~9uil#1i at rzByy{2#WvFF4IXsnfDn%LAMR-}0dG9SK2#mjXTj!WUK
+yyg!56BFL2%VK`Ss#<5m9>#wxNF<P=-or9Qj0nl^eE_?18`%5=>S(?<ZVPaB&#T^(7S7yr_ASedT}v+
+e%sO-hJ<tvmbr3nxAn!sk>JCsM?C{~xRAhtIv6KUlRRvN9}Gk)F66;OByWFC6!5Qj0EG;C)Bm15d-iN
+Rd-mP4+4H~tbv*kP3i|fE2himd49Xu%c|b#(;`i-vI6*;xA3LD(2-xG<Vb2_AL3OHrVWU0zWl}ZT>Ph
+FcYW0aBKj_WCBQFD(Q?GY8nmpSb7ba&z?XRjPwlJtMIix4Ihzq=5F|B=tr>)zl{|tMrqmKg_dX6-Y=>
+$^1xCqw?hs5KYxT$Gkm8hnxCEz(u;FR$kG6J{3NV}P61QOW)iP<E=A6*TQ5GDhgf4hW+2Xl#<$)7rI{
+E*X&CUk0R(02#bA0Cxi4fB277~0)ILq at yVEwsA?hjC^18SJgXnSL at Gz}NKiBQW{t=i%-7>)G&htA~A-
+_cg7Ldx`zvIXE6YkLJNGJg$w&d0$Y9hU^6AE=2~))&E>hd-CLKrr>;d5-zvfeb|DZYVB)H_h)U+!?mo
+XA;Rr&DOoHQ*TL3kP;XL~Y%Qqa=5|^}!`p-4$f%6SO;j!;L}b;FkB9ODgmF?dZ-yBbkR3sS&NO;2pFY
+;FdfwwY=sJRBY^URZq2Hfi+GQ~9dyn;H at 3HPd!5iF}9UD0PA!7)*vnj!crP(3t-pj|@jIyrXBj)cyuY
+KHfj8 at Bh?QAD2nGbrn1aHFxe`wJ=2B{sod!Pp}5A5xGPha&8fwcwoUkBgIUNDEZWkm0FPrd9`1ECcK$
+Dg9H9hb{-ovm39>nj<LGyX at VVj~i$5D5QPwDxo8x=)>H@~2QA!dHJteit34Vd3t&R-%B7l+0aGW6S~K
+91VND-si#eV)WwC<H<~yzwZ6h?ZfPTJiCABPiJ~|e|z44=$TUQVK$h~f)Rqb*>L#e8z6BwJ4ZCmPq`1
+cqq`hT$4D1S7t_xdFK(X<UO at Tb8=~Dsxx9^Us$z6M)zY9<VSa|3PeDK$I4 at NkfY=8;!xx2kLBk;C!v>
+aS=tSwzhaQE;&;{9Bw0aomYniGeL~%+Jk>XMM0X77~>0dx>JU0`9>WlvVhRt%-X{ho+f7~BVpWV7+nC
+|~P$Ncbya`vm!GQ at kIzC8(jdpHa7ZJb&|?lf{UxFb=`$jx at B;iHDPFc^VntwY|^xxu3;sJIv}Z_gjH)
+dI{aIDh<lGz*@<_iMV$hOZxH!M~o3zWtxs<h3ac{OCc#zwLvHAEM|X^&iswA>BSaei%K>@aOQTuV!2g
+bHmRflj80W-5=d*<LCdU2Tj^n&tCrDwQt`Of+ymLM+6#vRzIly#fZ_7-`pGdp);M&6+D^GOGgUwi$>+
+&Nw~zV&WKZv?`1A7Z?Xda#)X#X%LAG7jYH9rWPG9J6(>&cgze?u1gyiTdiDn5sQZA}WW=-P%-`ZUOzB
+}4j}#3vs^+Io8vlsKz2rP2|FXGa;9<fJ{}jZ%*g5oW)=GQy7eMe&3<QbPaX*I at l#!<bDZ<HQQns!MbJ
+8I$M^dhkI*tCAw2sKBln`HrXYMjWST*BvWQPud!Y8We!BmcR!4G%YN2^W_>R<zKB&~y=9sZo(1n~a_P
+)h>@6aWAK2mlEMt4LBObL<Np004n30RSNY003}la4%nWWo~3|axZ9fZEQ7cX<{#QZ);_4X?kUHE^vA6
+U3+ueHn#sip8}<4YH4e!PItGDv`#09?P+G4G~2j$v)A?b(j+9Yrbv|_?Wk?O`#lFBNRR|YQleflIh{t
+9fCJz>e&^r-1V({BCD+%ZD2xJneNCL{%nw3h-Z0;dLV7L!J|ebr=P<|jj!5J=mT%K**9mE0y6n-TFql
+7iMBuR|0Xg9X;KKnKx#lhX`U&y;-_1w#y+vmsd2LSVSrGVvs4+7c5Ex-6EZ=ph6+#<K_QIyWM>PI<Xu
+%Jm>4nL!Y-U>Y#l#Fu3wpxJicv3gLWh?AZZgYpexxDNI1+#TGMmxhiy!@a8kE(tov{-_`3Zf08h<?d>
+Ab9T=-*QBVm_l#EHuX#$)9Bv0y=YHbW`ZOGQzmD<ISRwg#k6EviuJhuYP=qU%%yF%aUQ>P+8;xK0kUS
+xq*Lytni<n{I37#(Id+RiEwhflg=MB==nFlfnfSVVuoRmi;2UCC>er?;j<Y~;*Z2Qoj)9J%t;I%@hX2
+KjJl(t6$Jq_#p&|z3HiZyZJ;rsq9%MYLxQwLQFl&mC=#0mzC{_Mc9tUWETkDyCU9;<p{|7_Iprx0C%%
+n;-2gAVJ7~xr4u|C3yLUNaoO6QO8{a``K&2dKiD1T1@<NcX=?IL- at tpAbx`)(`h#+?a>Ic>WV>o&3d-
+MntK4A0}4b78_AcDUm##Pv+q4*+hUwK?qL(63J%;oxk78F-betH&$f$}|XB;YNA)Dn`)FhTUWf%WnoR
+{E-Tv!5j=ngVj-L)zE at c|(JdAAn&)2f at 0%J5XV??(ee{bmIehy01$r%F(N}<acU^-qJ9dah*U(Ii at T1
+6$YTHQcRyR%bd}3*Bk at kb3nR$`z8y|{U|`jFeq|)mFF~&gzxzuwi%jl%i2ijE1kW7ZpLO18;39j3#1f
+MJ4;42Eg*)1PYXl<X1$C>AMslKVWP7Aj2Z*h#A+Pde8%qKzxxT8m at qDL>{w)C0$_S<nD+lal-NE2=78
+ozrVEA~n=lR`oCJO}o^S%3Nnp30jZ{5yPl4JU1w#%MoFHh40f;Z)CFTxwZ3Q;&C*W~F13^of+E4_*=J
+IkLeIMp1!Z-r-FDyh at QHGgiEwA+Nh(;(S?vQ$ySAA8hLKDz6ZFNZgg98C?Aeu0(3AI&?xOZGv4koKs2
+cVeH9n(fEMN{T{!T!6xKNA%}I8(<1I%%I__%2mi=qX|={EkLGr09X!lLFWX#{Ox9;G2vmircz0-k^PR
+&uv^C5d-xZN)(9>Xa1~r-2YJ4gOs0T&F6|CL6?p~RY}obMpODan%>ah4Bgi}hFypKK;LK8mTT=O at _1|
+!GoBIZ0AB<0%V+23=cmLEIGZi$Ysn2 at 2#5h)QYs&tTFw+;14 at J6H|3w;tOLrx{!DCPNM1rv;W8g$1hD
+P^ypr*)L7WkZOQnK)IfB?Il;0Ny&aKMsRf^+7A2m(7wu~w#e}D}FG}@@cJX}eB2u#~~4_`k%PAy|3*q
+9YiN+F4PGQTH;zD!$1eu8~iw*np&MSmeAh*YzjXCer|fWiT3nckSj>N7QO(Wn^&ssI8CE!+1FLo#uo7
+Pq^U1(t;0SVggwUO#6z7B(bDhX!XMJ5ew|E6amqJW at 7RKl{7Bz3jNb4~7E!Xo!Zc3_aFs9<9Jw993Dc
+*faJL^yCD8=o!ZFH;7VtNuT;hLI&CPpfMB1r!+FANqh;Q3uZukGzF&0KWz+!pbJKejDdb>OI{|#t}=C
+&Rrdsaim{UBF#t5_*mMUtX_;YIH-M;Q-~pQh#~Se1cW!9nE*&jw_YS%Oz5CNhh6R5mpFey^HG;ap$zJ
+dH{pr`o$K<;cg{$xfd=1dk2QbOC-Aju-g;I}?&#_!z%W&h at 2=U8!XpCh!?*VRj;z#H_W)!rVhj}=Um{
+7nT=1=Lwzb8F91n)fc?`UFvXlF#uzOuF)%kKF2__0QI at b%Xk*@5)<Z)e&nk9FdXt9*5?t at 2H2mGje6o
+l>2jp6RP(Od6(#e?Y`W!`>zD at AD(9dVYQu|9g)AKIUK45+FXJ0<ZanB=v>-=I>2u{ax1lhoton`OQC@
+()y>Y`K6 at wrTpfrrnJ72HNTd$zLwv7)0EaXvgR{M>zVxKc~e@?Wz83o)(iQ~X;WIKvgVnjbtb<#Z%XS
+t(WYZbOd#4-9 at 6kx8oFxts0qaJ@-4z#(tdrY!zanFsSnH$gZbxiR?P#@!{CLHUtYW&d_msK!wJN$H<9
+Do>`-Lnz+d<tOvLW};Ff8~VI<)2c$YkX^=7EW4}x$Lqz)?E&$u)HW4e)=<5QnIq5{@{D+4@>8jIcMU!
+-?Oo<4;*wcjV7$zNW`Up^I((a!`wry>C7WBOK&z{yV-@!UHMlO+)#Vh900cnT5kli&Gt4?@Ar%nZY8k
+>=oo!@?rzk at 5;7C-TV&2K-O9;gYjjIY5#6Q8-|9>R7((dqz&P)L1owNIS%UHk}%XIV#GcF!jnzy5is&
+L%ul8h3Q93!8kWjNKg1ISF!d3@=_#VKmamL2ei$|g at 8B;Q6gYtA|c at UB7-}}pnPhEIGaug#f5?4pBg2
+zj$$}|rHU&JpD&NE&@<+;$~f1{7wN&g00i@$afI#m3!;H4J%uH5Hi4Ys^9%L2lambjJSJ)cq?S&{%wx
+?=M}e|&VC2K3pE0|TWJJ>WE=Yk<%BOzeA;T#i4kMo7W at z9~`FvQ0>r%OkoG%1eX@>`o1#6A>$klg-#y
+5zDF)gBni^{fhoXED#MEH0kLc at _0usFwGhzYS9e3qE+donHVlV7#wih6;HP)b2e%{4<mAkRYLQWH9bO
+2o^7iA0`#1ktUuN#6DQi4SvHk7q{o?zKdnpbr{VmIfx$jGD9y3?}CV3c<M;!D~MrpXm7ZTt6}B`xynT
+xAR{7Ly-XsIL0$w{RKP&Z~#wLoTsZ+Tb#%|3&q at p#~LK|$Z>j+Or7y06d6*_#6*GU`H-B+Rjw>COrx;
+S51?dBY3%wprb{3Kam*Xg6hp557+IHpkfS6MHcBFa>##qaVIu;?1)Q6NMK{1R%+}zd(1hk_#ej|@V6t
+D}3qmDfn^FJ=0G?|M7$wl3W&0^|IK7-LCHWhTF*zdZrmlnyCnmeTrE_+TF7q0~gpu=JlVQ<N!{-Ln<F
+*x0$_hVChR3|%sWFBLXC^W?IJH$olB33pPtCdD9A=aR=X1p%kVLVKoFv%{>}H`9lStF^_IU<c5JQ2R5
+D?+gUydHg{8Qkt!=1Rp=hha at N=+NmiuU4_oQ!zl9+e8_@(H3>(G&&6AE`G6UY!7fdcCv}ZSeXpIxh)b
+Gri+0EP2<Ulu%s0RsqwZTwiq|qkJ|KI?Bi3uu?mKjEB?Hj)wz8CKAlV)as*%Qk5C^is}NrF0sL%1@&X
+E)3heWPbWs1$uHp- at Tv9<`5Jn6nxQ34<uaAR)fzhe*-5d#8J<14suKxpPM;M&uPF8Ay*wC5#tJkczPf
+;WDaLt)mUIcm1bi2bEeIQ+iMT_>DNK=J35&7&Z?mP18Y0ZpFRR)>&dEn*Wl;?0gR<xs$3P<PeCZ|ZEK
+Wi->wobska&TD#Zw>%i_k}j7)Yhba~OQR-dM0UoSh4+vtZ?Oelm;`7-dv|tl<kq`kHljbpQ_TaT!w&!
+&V3mJllo92*-eQLJ=cS++)Pjbx1~)rMhI%9X+^UHq3e~Ts!CS!XYm2^M7PgX at v8`cs(APWKdjLM(6F8
+t)PeThJ>>HKRo2IZMpl$SF$f+zYbp!Rwn%DYeHcpT#Y!uXLeNe3x-j;%cMlHFS!o{(kI!!hhboP%*6%
+v{4TM=#5UW<lamapoq6_!IX14ekwK_JK+6$9vq(VBmQ1O-Y~XkRqV at n7UJ?kzy~iHDaDChku_J at P<_4
+DN(qQD8<AJXoOG&r*H at Q+J`+Iny1M-}L%JKOZ>NHNb{D|c at 95J4a#f=70ywZ!1kkHCw0sgRfMcWz0g}
+7hR=8}|73)nj?Y)#_Hq=e3Qm2`lIKLMK-5&1R3Ja1cB(R$fXDSOAeGhN3{Gx*vxXw7~o?yhM+VjkpIh
+&hh{*9*H1U}h%Nh3_kYFwf4-eYKm26q*&G04B%-2$0-)4DyK&k!U~nBf?-30P{VbACD25k0?iq31=y0
+urTcuGuV7Km2d0d`%z8&m6My3;uJFWDj=B|)D5XSA1*Die1Ow1lH{!XtYCEP7tB at kasxc#`N at 7xzj*S
+CM;pMvXlA47WOonZhPopH;AE)@NKTwjx^v`2R=|bM*mLfViC}<eAxoNXt;2acuXGb++^-;KdUNvKCxZ
+cIC<lY5Fjnxv&=saARXz^1;$4p=eCYxF$Q*gB_x+ZPZW-zEo+(m^Er%zQ(@-o6hk5kXgnacp!oo%aYh
+!Sq<cWTkd!%1_KU*1FZi at V(_dh~degVPgTW7q;3A7Gyonw)Xg>M4VJC at D~bWWgi0=1n$IY_SP4-}xU@
+CfF8NZ*GoxP%(`E!wIH;2qdjfNh&juCcA{m6<UsaAsj?tkt%jr_FV$UcVoms+T=YRDI@}Ai`D<y^EkX
+sOfpF+^A-isD7gKRZ6F(<W>XMPb$H6Y6iE_?37wAhUuV(Rms55tEZ~2&*;VCv|?^)xMEceDC;K%xSN8
+f<7=plSP6K-+fSFOE^Ad)bK*~gK{l-R%)0gbdzac{YD*FyDi{fRfJ+^Vr17+{N$}mfcjP7Cmg5I=+#G
+Ak&2hNj1h)x~;Sc86_~s_68sEw at B+sKTN6Gea6AP#qz5<F{MZRwbWtwe^P1b>-t9&hZa1(`tu^$cs+)
+p*Q0b9ML?O{)fE8jgW*>bxuQIwU>_YYV;{QX=&lmTK)_3mYCw2Iv~{y1VU{3)&i=Gk7{jfbZM>;gyDp
+_}dSv*xU}fauG6rFMW{uEHK=QN0Evr?9U@^)*29rnOEkl%n?4hsxThrd#aVg&|UZv<^G_d^v7u!ALOB
+GVwSFa(#F`94?;|T^AeCY?pfRGv*lnlYa-QZLBW~niI=h37!^a+%?^#BR`<Y7NMokp|Fpr?ke-9G{zs
+{_K}7DtWj80J&91TSw{K$o$<-;5{!2#eWrN}ykzoPR$sG{(>vvdD&VfLbov>uP$b*M;=qz=)^6 at 7M5b
+)Q57_c- at lw&qWbvy;xHsCyBM#;wSRI+3HLsY_mMk@{Ho4U*QAlxd$_(buqtS>TZe(b-HfoalBBapGSz
+FH~v=+YAUzX4fah*Y2UJN=#T`UP5kgh`#We$E5q9}D(Fp$8X1&*3kQNv<1%TiPj`z3pQG!mUK<nOJxN
+AXf*+TB$H`uces-Ox5L18C^)KQ|s6hZ?%>rw at Wd3qm|S7Z=XKR>t2Jv9wvR1b8bm<hed>7=}w0&vzsw
+5xv{Xm_*qDQA-57AC;*6+_$h~Icao($zC{>E->i=lT|s?1tyybOlkx1g6&Sb5uBtQERRnrHzBO(9zUt
+hK`Pzk2Q_n(-=8=tx5=)q&g^_NmGA1F1yn1Er3<U}!X<WLRToyR%Aqc-+DKTnEF9+|g4F`6LHhyDV9E
+IA)MS%d-gFC`PWtvSaNEYw>?pVGkBiHToJo_nM`DuQOC<IC(ex#fdTwpGS4IZ=^xjChB7Zby*_q~!nP
+yEUFJNp-_Pn}M;y<g7tiE0DiEVDoyjI!4Tr!XvuTqqSJe}$1`_Y+xE2h8u>2=Z1>MVPW{J at GSZHRly1
+XCPhqb%^LAKkcg&r|d(XyFzU_D%EkYKQkWZNIXpx+MNyBw)KFewV~wl|x+;f5S=qWx!b<K&<3P^M`_w
+zm!Y&dH at ecXaRlgg+FZvzw!{|5`Vz0Q7}W3#;O~5<v6Zawxxu(u^_c>cv{n_wy4A(L;5~5o~1H{>xuB
+IJKN<T>-S at +<$;a8t||naero4U?$(j22{P<Src%${1!L+E;=v$9BUU#~Sa#sjEPc9w+f8w4Pq67D0G4
+ijCi8Tl*MZ(PKyM at KM=M#iK6$><nv}|cGq0elZO^6K5tZy{mlUevcZ=zuTA21=l0r=txopK^?MGYHyB
+}dGQR*&AltR74KS6NDRTWRo^&hp>`Vm$9cJxC)h(qJ>2(KpPH!G}w6f5}hBubJpMSq?!wfumu4NGtL1
+IdL9kwIX4OxcBl7qe<odG_LRq2SsTO$)fi^39>vrRE)=0p9ufHtq{=BpEP(k6aDSp6ae@{z)bB<eWo#
+;c08I%<r!~P7atOpZ!|q`}6)nZ7lCBN_e#BfcugIu19$EF|v~%YsYWgNw2!(mlRpPcSnOzT&QCb+p+T
+JC&w3LgR8}3?5qj3 at HR(&+s=fFi|r8r;CH+YGKf6J8$}DsQId!1NjnwI at ssjQ;yNtbvZ at 7H^{9RElSb
+X~{-*{T99nd4`-|3!mKTm;#HWF-<~)3R&b<jQHXi`waAIlhwdvcMX-}Nms4 at QbyxCG*Q+-9gP#z<nWw
+DSS*%|o2K)^S=-VOK-qZ!j7xxlO5CY-k{!Mz+ch5*1%4COpWX(iXY`Q#40597xgvk<Q-!=voY5yeaC;
+ycZ9^bnAf4jvKs2Z0rjv&TE-;MaiS1#=vMXDC?#y8OCmXG*h&CKoP=#<A;fh^~~!3F&E-r>f$j+oiLL
+gtvX8f*lFAaiA|H{sgEOM<EBia3CkV6+IwqCTNt8VMjC9v4A(Jjp;6+#^(ltiCc}kKX=}9&Y3s<9W5N
+|?~GEHS|aoXvp#(=sQ0G3JNa%uZd~!O>Rn3)bP><m=cnt6fL4uexH0cohGQ2d^FVw6!B3q_6!vK%UkY
+-&jo!Z+l?Y{K#w0Sz|Bn1{;gVsEyQQ;qfAMrQ^TX8Tz_aZhHf;AT0B at b~Z2Nwd6i9do*Wiwo+PUZb^e
+sI2d|W=8UQY3H4(24el=%O)<Y4IU5zNPM&KP;W^A6`#Vi}GV=7B47YX>|`nW?Pb&9u+i#Ytm5BCoa~p
+pHk#%u_1kd95p$1-?ZY6SrW$^b%@4h~pj(K<$R%<a1HNY;3Mq0}eKuwVMWc{~qe=5fQh>7msPFVLpWb
+U^Vlp5r3 at HdZ7KzdR81-E7rrfTJ5~`9Ij?O8K<?w_n$R1qNk-sv{G)WCvp^==i84cBQL#@PhFE)TYTB
+U(e~iT^92;KO=D3R^b|&;?rQv0>}r%ry at J80a7F&gV at IPb`vwy=%fr_$?J3)yYAb*RT__}2%R#Dz3yN
+3UKi)P<uW{&=nyKFaU7|p%#nM`}&!UdfuyK{&*^<=R{7t7#{Lu>9&wOxW5sR-$eMri`j*%~?`-K~W^G
+bg}UYWO)n8c&^#1aMLJq at _+YwX-n;)KLx@#?(kx?&qx;!YG&5x-Rxe;zpj3&~UB2dKBCr(C+qca<@|c
+#S`qQRq+2(6NBBa%buRZ=P>wbHZVjjmCaE6C1}x at t<KpXD;}_p7hK|Nr04=FHxI}SoHhs1=lp2?3K}+
+nPHZ1#C8JE9^4W#;@8N+k6c=b6z(UEHQ_r;9QZLHra}%+o59t84|zDujzN!Ib!<tiLQ^xijb^9Ra-rv
+;<9nqCb770{gLMlnTo$`>rQ&E(7K1YFTaHNyDTyM*!W$sfR1;RzIf+LjS;P3Cr<Y-^l~`Q<@HQQ*<#!
+zJvqRt$GaKT}!_&juObm<$Ov%>y6|^l0PMk#V&_^0S9rllao`s)Zh|eK at zJSk*L9cf>$AbSAm1g+)jr
+dIQ^Vwnk9iOEnsFfn_)Pga{@#xVxWkz;Co%$5F(l{eoaRntg^)3EwO~0C)*<{qbQ=S;J=*D%dmo`*-?
+Ryl at YMQf<PSbB{60-aNF$Zd)%G6P0TMVwD4)=<7c*#%4dZcNOZ)Xb-=TOo(oW&)Fpg(lzgF>CT6s?Rk
+EsvcV@|(VKVnjYUDHaFdGb1;AEekDgdw?S7Zuqv6XZXL1<kO|0*~`|B(ZHCtVlY`0<Q at h(0ZyY at gQ^^
+Hi}72!9A}$sLfOC%2C=3as at nz+?9!C8Rj<FLqMP|MRZN;_E+3aI_Q3^zvW5c%N*!3$NhJH3EUU<pZE;
+(L<Ha~Vh^0{To&Ca4S2~(+>si7r48C?IvF0MWwUmLc^VASs_cZUUe<bET=<K_*?`7>93 at AS0dkt2;N#
+lNy{(JkcPwl#X$4g)h*5gaA8(O65s`_>AtZjF;kPkbL{Cu}PPQZ57MAqj5RzH5HK>*Wg;IQvD)Q%CYd
+Wm;C>rOYOH;$K_;ti2#PF2pQ1T>$U-om%LRyl>Ro#FDqH6CuQ`P(kSqcX;ABIH5g?b7Wmur4cSF!?p2
+cw#mCiR4<NUckvuYU1X{J?#KKe1xGG_a?miI~<UK2DWX?>KfPP_u0kEhr9k}Y|Ny3hg at aFCs!S>w2Ms
+}*RAz4&7;6Dt_(@ElB_Lh2C>vepi;G2 at B(nY&ia&nW-_Kx<Xw1IRjbI=FRJc}O7F7=71z3v+V8^J9W-
+v!?Iz-?;cZJrwaDXc>JXWdVU_;2=<K2jK5)FR;nHjFAa1*_9VnHtxc(dZJB~^su2(Us9UR(A#jKBV`G
+ipU+d2CbMYU?(rCQxsm+Hj4n>Lkg&UrJ(dCYK??M?o at OMDjWI>e{A>(_{o)-MKb)HQDK^K<dp#m_$)R
+l9!i=@||dekm$i`1ysQ+wF at _weIVNU2BJLmI39P7V#-=T#TD5-Mom;VsHM2Z^Hc-o!|R`<{%*X==Q|o
+lRLA8As^qiBjh>K`md0Wq>G<JvD>tskSP{E6BVcU`PD-d@>{;Ix{;7G1rErw!uv5$+O*>txcEt+2RTH
+(9Flu+KxmH6r8)TH+2DTx)0mI7=7&&wYz8;xm>-duzAh5u7k^&{PaG|fvK?lbflcjiiSM~{UKRZ^3zf
+G~rZ at w}b4m}N9>#C&<j5d>%xo|`juZ-V^bT_;neGz2%lVne#P~sWmajs8O!*EPt4aOO%$q)~1X#uW!K
+dox`}&bd5vjJ8)qE4bxd4oCMh*>1Lks1g#GN>Bpeis}Eo)bsExR(0*uPZ9It5gnV%65)%0xkbVpdjk$
+@@h-H&=81n;&A`vlq2z5Urs<JAQVef;aJ at qx)cL9WXWF)^5C*-a5A`0u@<yQRcT2JT`MoU_*DjkLgVX
+OLz8#rw$7rC>AbK)#_|)UB|zXGZQ-~>7b;8l8ta{4Ny{P!kf*Yg!hzsneIIE?6>im53*mZg;`D8tG|c
+F;kM1bdB~d_rqN`&nU}^&)8B`{pgQyM4*$Ao<x<niMv(bn7VJv_dDrl7OK=1I>ENb=o91w{c*%Hct8E
+1v=vLbrv89VXwzJx{SU}aQZQA-fyV~}U-R%yfh1TLsy1dX1aH|VcN?&cPLXV9ux7GE>`<NqFz_iPecU
+ZVvShz at 4YcID|dj3r=w{=j`K}n%j2PL}>C6y-pU{bW53VuA1{YncM`QrO`oRChH`PotA?A6PQ<#I+F(
+x(h4=ns72WR#=qOXPEzUUDK1k4G}u#;|1B+5Yk#n=2!C$bX$mPxF=V$Lbfg;=2R1t0DLl-?J(*5Fg+n
+4Z?&Lbf-`xRuz5^-{6ZU;%11es}g&ZMdK3)c&#UcFRrwO^>2gedn$=bhGLhMQ~zU88piN92-R|`c|cC
+7>5_XVoDeT^T{58oC4tFr=m{sLCtuDIw at D=Ru<Q#z^1^sDLks^%E+opBaa#5%InH(;U;lHkiNFNA=_M
+sKuj;Kgw8f`>cpI~n54_G at OtGRYkNT<mZyKxPKT7ZG0E&tj{|``00|XQR000O82?eW29v<BwV+8;J!w
+dib9RL6TaA|NaUv_0~WN&gWXmo9CHEd~OFLiWjY;!Jfd5u<KZ`(Ey{qA3JP*GIM6gSC=VGEW4TUui+(
+5*mI>_Zv|v~;%F$fQ70iQS_AeeWpQmYt=mQB;xc?(z8U-jOqBmsAw9Hnfh5g7mVnE|8jfTepFW?meeU
+-)XO{$*DEEv=tY%4(wFzN28fwgmuGy6aLm#ZOvEs)LR?fjEg%qm33pUR~x^;t5AgK7To%LMELcl)v_L
+QaLnWKRn1E_;R-LLJXJhXZ5 at he9r3E<CeZ5`^~yQx9)bBL%4k#+s;)u61zjh5wj`(IEr*4zUTWW{P%h
+ZXH|^iISZ=NYzf&5Y;<EiO at k85{y#!;8)h0;fGO{yKWw37DKOTfPlD;o$Yq;2g`Q!$vKB0HD3N!1Lo{
+SCDJ8Ls1ai^U-r61duKcAc&<1v{`GV%-C))h?|Af;;Oi$K#gg$3hNZSPSKAI9|B(437_7bflLz7Ha0*
+3|TC1EKY@=7+1v@##;(sScjlpgZKVoo!l$d~o>Ub7WR7;E2#SYcOiYbS3!sH)W*bc>@L{u4mDpJXd5*
+Oj106D=@&=?K4Mam3TOo7-MP4<w6<l(U_KItrHuuFIB^v at b1lzcdb{fP=3Bsb^0v%*fEzp%er=&MXI3
+z<AX9Kr^PDY^>22*E#DLRhsiKkJ$E`Rs7;dX4w3&Ngy#JD^JzQx<4+wC*3F-5?^`}Q`SF)6)*zwwFeC
+XX at 7aALt6m*la*y>CmY6`tkP`m;U)L+wid at PXYtx}F(n^=1=ORgxmw4+4I3wS1snJl4vkh|A?9WHh?{
+7oe=%7`I<K>pu9?U7sAQZFKK1km%I?Fl=ZBru)v6R-_0Y_-I5oZa-YM46&Z%LIU``Dq<wjvBrFI|Me1
+?A|jrL5C)ZB!jGWVz#7-{SN16C-)Yn2W|o&!y~9;7||YATC;gk_Rk&Nt2niBK4_qNp_CM=j3bFM_fna
+4P9JNG;~P6ZzfU)PxlKAt(3}$?y!HP;4B0iQ`xwx0A)=vr^g%0J22QW)P>ffNJU9`x9N*C+w0U1k)A@
+T_R0WCCOA5YRV7?i+JS?5Ep4XfMqDALjWE^Jwqbx3?sXX_>rBZEc~>)(OO?eQ9M4)*o}J7MY124o1aH
+dtgknOgsKR^zhnj`RwupMXQ^YV=%<7x11wdrflJlNG)Hm+=d^lJ|$D)i>JTvi0rRI6pSvldb`pgD&$D
+YgfV>hb^tb_{2LyyBO$Es;?@TIAQ^~q(~Uf51}{|hqM;Q&ND#|H%;hVMMZHr}+)1^oqC3|nT-LDJlUK
+uZG>IyH2w!E@)6 at 8M?gjCyaE7}!DMp0LIQHl^s>O9xdL192+cvv!q%NTF!kVuF9Te1ArFUY;)i(ZtzE
+(^l6N?irHe!Ks^8DyTlgKD)GL(|s0&oyp0tN3C^LG+&?GWc1qwovdW4#sg%}^lLQzF_}D$aJogfJVZF
+%BFMQr>XLu#QZU>Fq~HqF7sW|WR;MTU(GQgFrFPsWozW5gdLbSUx+mRB<+x9>@0p&e&012f?#f2}b!7
+WYjm^7*OndVz&>MB9a(Yd-#@=TL`%{iwnF_%+o!^v2wH5TFOC|Fe_bRfO)p2s+_E1939UuR75lUy>v!
+|nTxm1{|VC2i!U9;{5r*ci`wvf}2a&p-?I=a1=zXlDgXT!5{cT0tKL|8?UchezBvIFgl83`oCQ(yEMC
+iIkc%WfgIVGmW^gG|2%Wtek}!@wDku at BtWb6~%gn453p0$(}0wiI*|alg-}pJc|)zJuaJXzW9#L{W^}
+22IGRU_J2KPZmqz+avoLjrQMnr62tZP)h>@6aWAK2mlEMt4II<0006200000001Ze003}la4%nWWo~3
+|axZ9fZEQ7cX<{#CX>4?5a&s?VUukY>bYEXCaCrj&P)h>@6aWAK2mlEMt4Jb%`^1$10015V001Qb003
+}la4%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?VVqtS-E^v8ejzJ2;Fbo9meua(+gg&6qYri2JM-D2ERV
+=yhuR}~RbZ^?#jueX=fEcUQLWsb}TZ(~SRZ=y=YhGaE4=YPvpk at xT5hgY&KB;pqB(DljPR*HQeNnLa?
+x1O-*yx<u5GSP+7f`7sP|r`D_U&@v(PKBZ8 at 0EGR-yKBhBKT7!aO#2GH+IXr?WrkAJMl)N?&zfP)h>@
+6aWAK2mlEMt4MzikWL^0003|T001 at s003}la4%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?XY;b5{Vr6t
+`V_|GzbaZlQVs&(7b1rasb&pMJ!!Qhn at BS4crvyUSxzO7>*lCCER)SGtWtci~kd at N>``Jl5+O^fmAMY
+bQ>e%<7bvMbxq&3)n^eli)@NN>)>%9bHPc~RTlrRmp^@g;wLX0jb)ukTQ71a#}Qc8H<D2TQEw%$2vB{
+m4x+!q^SGVit(Mdy}AfzRb<$L#rr^=r_?;4 at aK)?o<nVO<o;m+{qlDb_BAy0~J})jAL4y36}A!83?I(
+g1dVTef;dq_W)#9Wt3m%IXB?*<O(48-KDAvRyyQoX-EqR4Bp$wzpg4#X~BY4cJo&Cv+2~5h3nQCclg}
+D45k%wCqD(ln)JF*OBI}!@e;H=M9_>Z}k()Khs09sH5-V at sPW-iK&ITOU;&?S##<aP)h>@6aWAK2mlE
+Mt4I}hc{;cP006oQ001)p003}la4%nWWo~3|axZ9fZEQ7cX<{#CX>4?5a&s?fZfa#?bYE>{bYWj(Xkl
+`5WpplZd8JlOZ=5g?z4I$9s%SwXwCAmIOpd)Yw`gTKFa#^cCbmhsit^v<F<ut3EFsC9_?UU~@ty}Ntr
+|jU)!9x1rGz)F(w4A$qeN$c_V*bn`7<|M$&7T87pep*xCPCGiJ}TI@<S-SX9l7uDg-lz+;HLC68|voZ
+_;f<oRv_y#9VSqX<|TB88NEU1!M%I%fRJB at I)H}<g;Pv;EPZ50|vPo;G%I}hZ6usS&U^CTtwWuVbs9N
+czD%-WwcVAEZzHLnt~hhN6AqIEy$4jZWj$tE2W85k01$`Ck at TkgJ$<FmgEEPV!VrY69--eA6NHZ%e1{
+^5AhV^;MQYE);Nq at s29gf>f?N`r!kY6a2ZB2aRV{Vf8Dfp|AqWG-81=r5Dl$h1(2d<+JGf5+}4B at wqx
+SR?ObTh46UtgDLi%jnHEY~kd}st-Z=5XY#b7mV3nq2s7Jg^GxE$t2gqIMqhzk=UGAuBOp?x5A37hvP%
+Bbdub1-?Xjm<m-F$^;e)0%Bp5!JBX|oJI>EQ09*PR>BMB<BJlcRB~7fMFE*T5b>Zpt@<<Xw95HiS8N&
+%m_Zp3_U@^n;$4)o`|Ma4K2kb_o}YPLS)2#NkDpo=E6ZT)js_t~M6_*`Kv-#P7o?xw<eLa`7z|Pu%;n
+zPv<y%c$@p-nnzlr2*YLx@)Tl;PxO0GaIqzAWHJu at 4)S7*|~A}a<-v{Y^l+HklX24-&Q3Yw%aJ7-(0H
+_z7Ev&48`eoO3&NMDr7m=^nCETvpMXVrPbc2{mO^MYa)CTSBn87NrKw|3NVK0ed=*4(V2Sq!aj9yrl)
+>v!7p!BoBT>=9WliUy&f^YD+sjjisGf_0+wg`sUfV>$?^Y489Vnk;AR<oMn4Rv<sAxQEnX#FKIuE{&2
+8Pj9q%6f2T)4`1QY-O00;mH1*=F9naaSR0{{SU5C8xq0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76W
+pZ;bY-w(EE^v9>SM6%sFckgor?~SdIFRK50%MdegF#oy+Ks{}Mz!Tut0Ngn>Bq+2efLVT6DM+-bQ>G<
+pG1~)bk6<Kb*0rD^1NEuh30t<V%{iifn6C at FD%dfcnqbu6GkXGhJ_S`DtTTD%QdS_l2n8-X}9KA%<%A
+TQYdLGlh(AeMae9i)qKwJ<rwtZ_)dwk9VLSxreOs?x?!3X$iXCQV|Wc|I{B)E%+_W`Ns<&bGX{=@v@@
+-h&Snn<Z!Ah1O%uSU!Rc<<J5l4l%xRkVL0DGu3hhQV$n(tbx(e^<Q4N<l4>FL=m&<MnwOD-n0WDa+tJ
+yViJw1ARcz&36YbvF|s#`8WNLW33GISt4_OaoJ<~DvwX_Q{}7KqBPLC`EcvrOA_cAbtPoy{BjNdMOm>
+5*){f=Z(`)PTI9>%~&oCMrFe3By<X&`|=ZERpoPTV$9MG*pN^g at eqp>yb&}0KTXAH=R17KSnWX4$cS{
+Lj})h;TVk75w%fXjuM$c7>C7ZvydGPy*mw>-SJfC6tLm!Gz#fmj)v~M2~3uOtn4Mzj;DUcEf69XG^cF
+iB`^b>b6h0s;{jf;GVNk*$uzk88Ej9Ke04X(xIJkL<6cz9y|!uMIJaKPPgsM)(uLY4Dy6p%!aG(koTm
+a2s)gxg{DA!fIcl;)i?Mr!m3=Uz9qAC$&N73ZU7<A`*ijZfxLJ=&B*f#ooz;Fpc(D4WayQXRcLUV!eg
+`r-<XP_yi&Kh~{k5v!J}zHcX#Gs=k57VAOgA+{1Mvqt5Y*Aj>iF>e$@%Q!JWY}f<Yk)6GM+2D-Y5TW(
+f$+F*_(U++H9z(<-sTY64t0Di}GLDgLnKs#_=SxgA8lq$c&&=+&gE^Y;m)^VsM2!1lM>CxISpWZpBUE
+aLFSgY+IYPC2Wt>oYY6+_V=_n0sqMk2P0>IrEA`n4K1~AXZ;>G*2Pf~S!SKTW_HLrTDVu%J?nO%Q--s
+TW_LUt;~q^kGNF0C7xo6Y%Sfl#rvvrHQ)kPkF8npK#z_Rr($9ocHk+Ruv2A$Ju&}5&>UA766fJg!IaH
+|y_E8uWYjjs?0sZOf9SxQ?-;xS%RpD**H$MpiiJiU(Tx6MD`j&s>dU**K7Z+2wzhM at QiPg|YY%fXS&D
+KJ2%CzB*k}CvU3s#G7;Y~z~|F-P|nn?ZL(ECZ=N_8I^RY$-nb?FvMtRCW{;C1P at CO-jCO9KQH000080
+0{-FNYRsT2+0Nj00b!j04x9i0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!djbZKvHVQh3^XLBxa
+dF@$CkJ~m7zVEMKorBhZ;9 at tALy#0Gg5=msatM$H1})NSA+qR_^ltp`J2R9lilS`Ek8KVWAX$&$a30?
+bhvTJIYc`)Rw|1-Le9rRqMrq6V!l+_v<=j1|OyrNb$yJ%MZJB3E$a#@lsd-^;ZkEVnRu7#oxREzEH(9
+}rVW08>$ZqN7%sous-Y__XTryMS0=^nqEUUM8Y_xpL)z;jx_xt;Mxc^I)a!<5WnpyQjmMkwBGME{))t
+PMA;E^vqZn<Hlvc#rMg~u+Jg=nTrn{la|r!~SCYfl)ZKqcDa56wg>?#(lwqmAeD&_JkrJ*bi{Wu^RS8
+(TQTPTP9g-A2~pe4F6Y<a=l?NAsRdK3lHs7ydBm+6u^SD<*<lKKag+?hw at nnw(_H&0K9PV2BrUgUo9l
+C0~OesizX^GM#oOZp_zpi7b5SKbE3b_NYX%6rnsM#aJOsFSZ=@-nm_KpiJOS{(u5>%+au|+(-`RrJ$S
+Io#2UfoS;!0M+8T*vg;ygOZbBQSu%VN(#y3hZDJS+gag@{@7O{zwa%@Tg4nGjTjtup_f=j#1ibRn0Q8
+8+=UE3IXJ*4Q$+8vKJOgy2z?@}jja0K1Gc6%0l}=q83-aGiJ~+xr3J66`A8JNsGTo1MSg6znI3z2{MO
+STxuP?5(#}l>YW&Jb at 27Ued^(}jn43em#sc3v7L^W&3P_8$27Y$o7&^~U#LLZS7?;|j-touc8<tcGg4
+R_dc5kmt|+DX477E0_Qj=<NKc7)G!82r+Jnf#f_jg3rtXd0Lz)A_~*ykH(<cZJ-OV&vlZ5*AZfJJ(X=
++{$8yai75h%u=%t#quX>q2p<#49tL>!FDTdz;>`gR at R&KgXU0F_4 at u30QV4f4y+&z_=O_J6iWSI+(kf
+R0QrbsVGtfbS;CVhT_Ws4PqaV;Lgn~osft290gM*Ay_;f7*9-jWJ8L!w{&kK at 9Ooou32{lL1J;OGICi
+2ZQ^kW;+f5{b>Q9%BqL8mc9lWhyq=e*(W%Vv(=Yp>Taw#fbz}FS{wlf#uIYj?>bPr95qfrTVvKW6gIw
+KtSc|GEwT9v02ma$}7&qfhuEdcizZN@%J$%4{m7=STof!$;{T-zz2gIC*=?(H at 5z3paVs}G?RXaa7BQ
+R-$$kp&kiW^}t$Fd`26Q*!aqthq-M$>7!yUj~!3K?P(WxRw!CzMk#G*fQimIC&c_lB$0AmY`w at VJmUP
+L_!3A_ih-Pp@<_GN;%a*2~sL)PB*A{(o>-KE>Ygc5c`SM$*It9y^PlQxWNc2{L9t#x2~{Ht4cSm3a#n
+!O239nJn($t<4HYOU!S|sCp#25Y7bU-3uQ`P?b?AA`Cub7q}`0stA3T8y|JLbW2j{;^RTtjxJs0kCMw
+;c1F>7$co{<8tQ8%sOg*5#raY!nIAvHhxAi<xGcR=?RjDBz?;n4KxU_=?X7!$IRH1r!LJIe6v_Me}WZ
+J2t8#IE7RUu-5BJ5yCG^FDl;f<w4Aw)kmgcvT8I71{6h-9w^`7^K*crdad^C~hCwn0t-&`~HJDGOu!m
+*E*~bBae97eY&8pbpeF&k9(5IaZFLCl`gve*Cjl76`Dn`Ji)w-EUr~2mIC43WrOPLRBgYVPpplSeHm3
+Tq?az+3F6?dpKXh`3lb0aK1 at t<Bn7-I6<3j$fe{kje==5)Cz?ChRiH=;4NRE{NSA}d~T<&fXO8wc}iE
+Q3((5`h|<afbc;Sn(hi%xBWe6Yc&|J}_vE87yuh1o;3NG|`BeLq?#Yj1IHJd?2)m=}JzZbY^%Y%T)Ah
+|5o(?B8j;@Fm`~`earBjSyMg<X|iFy+bPgEiyqVQ&0jA>S!w&Gw0a8+ at v5$(Q=DQAHEtYXHSE}qvrJM
+%ENyu&}l{;2DscfZqPT&A$fI2 at R99+zD?Dp&YL^VK0h6Ke`Gy@~Ep^zf=fpHy|=FpyPmu2=s#MTReI`
+m~kp`ih(jvBuNSkz2+!Ne{cE9?+j)#_oXwPCYx~U!*xt|4dO66#sGttaUZThG^7EElYK~NYwHh)|ULu
+cj_ft>8_!)?<4iJN~#{);9aOs-R+eeYqy2n#K?{~Xqp}o$EQADoXeM&q>?|yag`2qTL-ArzXAum#%of
+?OY;|%>oW(fSTAIH6MZG^pny3qFMsoTs?<vT9!VERn)x34XWKnGVI$%CKbZa_Fg56Smcr4xw7rVv>=6
+n3l-3ZALP=LwEgL=l1J<2iQ;l<r#>UH6097l~{0mS^0|XQR000O82?eW2IIrZPu>b%7U;zLCDF6TfaA
+|NaUv_0~WN&gWXmo9CHEd~OFJ at _MbY*gLFLPmTX>@6NWpXZXd38=p3c at fD-RBguY@zf3f?IK6SGph4W
+&(q0BKe4VdYh&d3;GrV^L{+--3W*}#pDSQc)U3uLH5C!6bZ}UfZ{s`cD8|Jd2ou*a3n8H5JKmUc8y{$
+11($|q~*vj@~e8hbf@!5cKl!~gcytr0S;`Y#%j*D<!OHS>z#lJiuANQZ$PX98NKis+IfiXN*36{cVGK
+2kx>$R$kJyx&TKW`dSho at 65EoDCzDY{6mL*V0|XQR000O82?eW2W3^fp&;bAdb_4(bDgXcgaA|NaUv_
+0~WN&gWXmo9CHEd~OFJ at _MbY*gLFL!8ZbY*jJVPj=3aCwzfO>5jR5WVYH3<@DO>zejj$RPx`*U-(Ouw
+8`K9w$m<$w+e2^w)Rfk7VUd3z>spzTSH?mfSkqfe`Hw28Tj`>U!$}$b+|f2q-4MfJQwjudFFxFsil<3
+atV<sXb$Jk3+`V2v;sB;vhZFv9h+t2Wf&|vaW7qkd?*`DO!N<WsTSO(#e{TJzM#337nS?R+(&-$r;<;
+TwPaN at uT`){iH&NMA!97W5##qe!t;xzQ(66R%_`!d{deN*{HUhoct?eKsNT=IP~bAaFI#`G}9k69z(X
+{y+d9A5BNJshm!AM16uizr32>q1leFq3y;eaBJ-$Q;)2=wnTZ%azXn_DAlOGVpbQ*~EdK=)Exhy*W^C
+N?=<$70pxU{H_PQnI;a1*p_?6TwCQSp`tGGqajvLt#Y}6GMl<#h9r7Ib8a|vHql16>3t1``~D)KK)|A
+G7TKAf at PttLXf&7EF}iD;fJemlNDWjljg^Z~3%3+c&Nf)942Qzkgu3^h(S$iwqJI?9gcb3CZ(1UdyIe
+ZW67&e0^Ny4T>f)mru*#iTGx at _EYpqEOF^p;r at c@JTn_{`pHgq<@Kl<0o1A;gDUxMFC?S`wLJ at 0|XQR
+000O82?eW20x`qn5CH%H>Hz=%D*ylhaA|NaUv_0~WN&gWXmo9CHEd~OFLPybX<=+>dS!AiUtei%X>?y
+-E^v8eQ9*8lFc7@^6)Spy2=M?U)KjG%+Fla1+$;x{u!^zK+HTaoz6Lj>QGKz-J3BMG9 at tJG<q&*eloD
+u~EqhQ$XLax>6E2~rPjX~U3Bgcjdz6|yveHh7VbQ3nYp-X-i_&N0tv32eJ7iLtzLBrQ=fmsEetQ){^f
+<sq%gM|kIxlifhRc<eFj$_HZ?Z)(LNqZ8nN#y-4VD7#&Te<}ly>&6s8_}Vv~63%ezZaNa6#x)HzN3v+
+~Z0}>7n^MN_9eii11^D`BEuXG7Z0>plKlGs<$96irkNx|4+5DF)rxV$BG=nyV3!lm at Vg-|C$k|;5-}=
+R+rSr7=O-ys~Alm<x||WyyCW?Li_+wO9KQH0000800{-FNcZuLOLh$a05>uK05Jdn0B~t=FJE?LZe(w
+AFKBdaY&C3YVlQ)La%o{~X?kUHFKBdaY;$FDX<=+>dS!AhaCyxeYjfK+^1FToN>5^{k>xaZ{cyJBnOv
+;)GM6-&$eByW$*>R!S*ZCc0m at P@_up?907Z}lDJSjBoia@%aNoPw2f(h1EFnR#DrH%)ARs)+vqBQO6j
+ at wK7U<s-67dZeJWD5}OnI0^EQq;e1&zgMg(PyGPlF9hqpX+;zOCp;wv~b0<!m&P#qMlG;G^JIWg5yXi
+$w)lu&4~#h;2ibOY%}J&Wj=|G*V857-?41X_%!#(p2t|HyMxSF-sV%O~?}HGMYY at vfxWl0+vKhL-t}#
+3mSsdqL)w+MpV+86#UI4M+(~{o|_*Pc7;?*UYP-)rh;zqKebwcFcDHTLQ4)ZBc3<?HRGw at dNOVs3~e4
+-*1F{a-~xswQqqNhTd-BZ@)#)T2cp-Wl^0p6|54B=jsT;D(i^c at umhlLnZ(LKJHyl)DTE48Jqi+<1Mt
+89qaJY)l%e=5EC8nOeSH7)>32_mfR8sOvl;nL>zftiZbCMMrz8e7{mKhd2)RV~<FOVDKSxB|@th=OEc
+r=TnQ!m6Jse*V-><mSG*bLGV{%Ep8<VWq!&M(Y%_MQcKeO562ZBiQv}87~4fzHP^w?`c!UIDFbbWT#V
+Y&gksIZxe60CenC3{PGah<&Yd*%=&5^x(>wU^p-vLb2&E4h?jsl!KT^eGo{cFzib+$DNMatJT5?c-RU
+lWc?EUR|Fn;|QMcm=^I)`R*}I^79FKd at JE^Cc|lmR)_n|<`c+#r{gDLE7FNA6L&rYv?Uy<1Zhca;*jC
+93Gv_Sc%3UAbG<*z+I2xw5rbLPa@&yw!?3>j)bg$|z2lh*y&3rdvLI_bKr8SG3ALrm1QMlG;!U&VuPl
+@|_!WdM<Qaa0wE4+laZnC9bRP`zt_5#}<(_OBu`Qr-@`UW=a52}R$i>1AMq3L-=`4Zlbz{_+80t^Rvr
+l7}P7RYD4)+c-i~NvTt_z3a?#<Gc2scjHC0 at tDl;%08>hD*^9p8sJdcH>Ka%I4&vkRuTO!{HoWe(2hk
+sM;Sk_Xa_+a?wab3*`q%nJ-%DDJsj``)?N<GnW5a|hRcOE=^_+CCEJ9(hFkHQS=%H_y&KjmND`37ttw
+{Hjg at f$@ZxaH~PP91UV$WmJho=bL6R^_}%@(wmXSRnm%Eghr!L7(?4a{&D^K)q)kA#{754tva5;x(e@
+z(5g=%zm*wm*;|t35?U=?yl{;L2or2*T&fgRZ+iU{6@=wu?^qXX!Ga|dGH5(iTf(rE^p=QSD(SYtD@(
+Wx^a70o0220Af_)BY{&%3Q`>S9tcmoW%%YyP4Gzp-K<Wbp_S#>%fAZ!#Tq%ElGo7yJP%~TM}fNLR|^v
+z at 4$~B%q>}2uA>^RQa%n~j_7RNMY83<x?q;bBcOD1^;c4??x6Xz+qHAtAG%H)Dc+bq~u<-z?LS{P-3r
+b%cD0{vbuYIkS}VA1zFVc<=OSNj)#Io$3|+MCep`WSHseCwd$axqdF^sIwU*O5r2;XhnxyUjtV$3ckg
+ at QZ^$+dWDh;}vgQ_ay;{3I+^(!Q$0~eEaR)JuPm9l`B2Zdx>~zx3~8GbhHQiC)?daso6W(2kI2MSaQo
+ at j3O&u2$(F=m_Y&&IScuUvuF%a7RF`7&T2vq{bm?-pWCg$zt&8yp=;yV01Adv9ziU~ood`6GD8)4$_T
+)bx|zmE&Q`c+QH!#$M69~G>xAgA7{E<oSozN+IJu at 0=%>dx=loXkVxJi;GC7by<9-jLVIeR at 6eSp|Ee
+>iiD<Ly}F1=&V!hbKAF}0SWRu>C+CnrzImGKV;0W*sbYz7dvT*k~$GEQr$rTQ at nh6k(L;C3iN&j1k^u
+1QFNC at NJ!0Tx&RSVibN$!Jt7+TBGnW%JLiCde|pMj;o-v2FeiVZ9L_N;9m7Tjj@;fz0rD$qYn9u)zSv
+X;vgOwuqTH6cvEU;QM7!f at vuHD|a!g#cZdCgJEY7NJ<lsraLrh!Ldt$!U=LT17Boi0qI*7j7`ZkY?Ke
+LU*Tw^w at y@3QF9UwL3$t}kI|F(BhSRSMNoM*rK=TeW58eTfFT4K>^c>Ad&qW*I_QytB`~G|p at gO?Gs1
+k9Kyp`c1rb`4niBsScv at t_ECHQ_z{rbZ3ls^{DmL|sIb$$h1GH(~mkksax1Sd4tdI=0i9sM%xdqm^Wy
+!B4<VMU<t=P5q67FKQ1;c}w7d*{NNGV)U*mu#)tG;=c5SO4T&~Cw8)^>MQJGbp$>g0 at DJd88JPE?--J
+s^aw78rU~lS+viyHqCz3wVI#+6g{Oa=Ej1#u~^fDu at VC0%|UK6tQ$XCG#nysf%@SY6(ABlHDG7i_I<S
+puNiz*d-ihGl(8dN0$ds5VNjU5Az6$)X0nY7*-8aVwl!)5)hQU(-~ek&1~smYO&k!3)~tiP|H-%6~n`
+fGQCT)dz```VHRZw)>8**St-HM_L;<jG4czx_ut2SiE<SC>PE3R{}SwhyWNx9hHn5)d-&8itI8^1z6!
+sVp{IRuEBlT?- at uC2#(?~aPOu0O1!lDz(<uoC)I5U`N9Jdzr#SXZZ?g<`_!KtBX?|K^o!;|1ehQ_txU
+w<r-p4+gIj(E)F-oU<rRJE1ebm%Fu{4cZm1QKPkWA;)CMOZdv}gErV%VzTS})vofX3F;sfh1SIjtif^
++2DGHXC(p4E3~VNFq>rYc+*1213K-TW3`oWKy4yTN2>Gj}iiD0+e&G)dZ#%-#z at qeP;WBX;~9(Yqd~1
+|G(%~9Z`RUI-=^tjV at Tk?`eF;iV3M0%znyJW~tZUUY*+5y(n~D-BHsSNVXC76xI1DLOL4xrc&nGVZ~!
+?uUzoe^}r7bq=8(kigK#wzDxbusz=aER8?Oi5V6k6IKo_`T2WID-k5xLO>bL_kJPSB=$0pCLfC4>Lk>
+v;Dv2tBP`_f>eb{q1 at v0zcw>*RPuzHlQHA6Q{tGYADxdJNwM8 at 4pGblm@sVdDMm*R*#w=0QNY7*?dAO
+N83%L#VlnQAwU92S94g$j)#8ykb2s!+lnLKUcv<~_x5P<<Q6V)yliXp|k9-NBrQlfWLLDGla0prhb!J
+pAP~Zwf#+4KpJiluiZFJs^$r6TDly_~z=(i|e1?&dDQzC!~fnjx3&)NNoBVB8SnEhc6 at VlluU+;_+lg
+j>+5ie}DDz1 at VB#am}PA;W*f>If)$%qRE3ed1UeP;(Gqt8xZ^uITs}OKaG5t?#JYEMxOQ`Sob4)$KD}
+i{ODv*l at E1&<a-N6i|`0%KD-*+&-hE&71fZ0G2b{Ks7K_U1AF{5I-%y#Mg8eNXYY`x4u{*HhL;`*{G(
+3fYvf7SbQ6pAxEqZ&&C9OjJI><Bs;gChVbEFxb;uz(j at JP76*(T!Et<FHt~(2R>$SmgPN>RvZ`AGUJ3
+7*sLLE(35p;2SFoc}p^FC$UTo3&hr>NbFtLN9xdt#zvG`}Irm)ya0N$HcB7R6ydEO5AiijQ8H<B*Eq9
+p=Z3Ri{RizYa=dBEq}S(THfyTQNm_e^gYxx1l_R7h0O4eT>!P<+_FIxjD4rpyxjJfQQ312NkQMR%m~y
+c6YVpa66VBHL(P!rs{0;w4#2G&3Apeh{dT9n&wprx3EX#`pwmwGx8j&^PV;lWv<F4)N}Wh@*UV`&)*5
+LsUVb84~stI>tk~4NF_rUcY~Li3V!I$3atCFcf<O3)teHXw~5psi57swSmrVF$NgDcMdATco>vnZxO4
+5 at BeQ`jQuS2bTSU+vrP>Uay&A7?YgC`%Qq-ZPU-$B3nk*wqwiB{DBU=>8-=U>8<IWY$!B6|$swYr<K6
+=M9Ft3`+`mKafyP2A6UA#w!oTkofA7I(;>HDx1TD&e4uUH;nRom_%HZ~>S@;t5#B39}+PGW{R8f55Dl
+;2dqL$6VV{DJs#%H7wh*dLXVk<XqfO7I7m_O)1+jyAkPILxNy?PKNbqrd!Z$lY4KL%XR<9jt-W)h)vT
+ at _o6)?&`h>zx}G&pULpBEgmF})h*bsi`M5at^?@arcjsrp~LmB$mHa-$8W<X=%wc(*R>V2=)J8T#`!#
+ru($il)~>fnJJ^Z2Uv2x}v|{}Y>ggkKS+}SIW_*z)inwF!*ZMa4H<umpi5WRgP6kH~rv;1v^^l50zCh
+D&PEH<)laov9IHH<82BQaGnflu3xnnzkQJ_%H&z<K72(y2yRo}gSfmO78F!?GP1q-v=6rM(dV~3*Dd7
+DV}dbKdt8{<6(B--y4{te)|PF(u7zCrgMo0sUEO?mIE4agn8xj4Cu=JGxsuNN$hSn&mC>()8A^Zb5Uz
+4fPF18<7rKD{14;8x&aM91T?<KjRYKx?R8i|{^t_(10G-o1H8Ue6bc=ReNLPxJZJ{K{**rH)YevH*`5
+)vu6{gx)dj!~`OT%B<K~_nr0KLG`|*c9~^5>prTbC*^{XMMLJ%XoQM17yY at qy60JHg!Md6J<ykI1~gK
+>tnT*I|B3NmP)h>@6aWAK2mlEMt4II<0006200000001oj003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E
+*<WMOc0WpZ;bUtei%X>?y-E^v7R08mQ<1QY-O00;mH1*=HpTwf3x0ssJg1^@sk0001RX>c!Jc4cm4Z*
+nhabZu-kY-wUIbaG{7VPs)&bY*gLFLPmdE^v9ZR84Q&FbuuxR}ebcfaf1jpob!BfgKhU$Oa530z<LsR
+E;bdlH8^k_TNYOE4GthJ#;$QmPkH6KG7_#sUXYB#y1wT3}jUs>p|?CQH{r}+b2-SSLvkD2{c;froc=|
+k5(whSQ#*ml}epBru4Qb3bX^%o%dGm2+OTE->O>m{%M*U?Yz+5jY*4_#`y<hQSS9AETp_*Vyw1U%41f
+Ex|VtmxA6N9D~*NjJOO2Lq1K|p1T;NeEph~@ujNW#g=)}6 at eKo7vh0CCI?%?$+Gy-dVa=02b=xhG7*j
+FE3M|2!jI at c~ggT&2;92NGq3x4!&R0Sy*xdd4qT~UAgz>2T;08P4umGdMTf`0nx)+7E5WQzgdRqV0<V
+{8KQQX?5YRn{<vrp+dtFiDi(8t#Kd*>US;l*ss<;?+g!0#xY at ces?q)lso;$g?Pqmh*E?6<(FfYy2n4
+J)W3b%Wy}sv(GyMSK%z{t$bf0Kczl{~o^MIfkH%cEn-XlTlBq5MJ<YGK;you6AWSi=WAOuP|KAdJ_#P
+M+qq}OwRZ={t%B@$cG|Y5#}7H>W|vpoPiCcpe{bYkVPr+g?n!4>EfK+e<b!#Qf>3Co`n at T4MZ2(Zxga
+jj^fK~^U-78f7eQ1nJSdFsJ#}>O#&P)THZON+4?|}nr0yXsSnz`>HaTme>3(uV}i85G$dlSaGH##zfe
+m91QY-O00;mH1*=G)Oo!#-1ONa{4FCWw0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJ
+E72ZfSI1UoLQYomNe6<2Dez^H&VKSkzuP0{U?>;6s`X+69^v*md_(6b3DgZ8ntXawt1#(f{5VQj%pka
+f9R%+ZsMTzV~LR(P(rHxw97YU|a=m4W%n;iv(-uVO1Mjm}&!sS+CJ!72v^C1xa1-h_LpqR6j57eu2W}
+b;$*kDYbBrd(;6z$Fc~6K0<1!@Brayhb_nyo?OkpVgbQ1jxy!WqF at 2x9=)~@woHO%N_{(lYyLIJ+T3c
+QhUi{<<7$eyksT%kn!(40*i=5r^QpRVW%}hdRb{Z)A|aGD1vu^=wg{#Q=+`<IwraW3gjw%Il-;`mVXS
+S~x_Yx^DI+pe{4>E;??r-6JVj<x=}>!&q#56MUQ$u;bsn6b^3f1Z at KL^H4dIDe;A5y+5MC5ypHe at 8w&
+Y-iN8&7`CeW4R4Sb{$b(w;bZ+vV`iY52S!fu(43Gnz=Z9IyN--+0L|J>?N&Iycj&4DRk!H<4y9<82))
+1F}%WWq<&L79s8H-TbGPLGw8>;Z at cMie9Xq2<8G2*I0G9gw|m19l^}!&P)AMnF<iQzt2`TnMa}qhy1m
+L3i;~O)xH^#6UOMAk}z!aYa)@!cw%pSlrZ*`V^9Ra%xxM@!TbHo{E{;U})pZV4snrQ&9x<&K-{zcX8q
+)w_JPDD7aGJPvFx!cG$ttR%rOTiYw~Ma1m0V)PXVmkx$#aN}hgU54AOav&o4TQ-v-*Z8Q#BlW#%iIqu
+kSov7)mP`)9pfm1G{M53!rB_HpbB9M^eTSnq8;T~u<ECkPa89<783ul(E)IpTwMaN^rQ>f8sq*Tn>a=
+EUh&6Z1vxAT0i6*<d6TBh$)ZpytO&gxVEawf90Cdja%1|!SrU at Wx&1+H~%!xEFM;TYW;oimL&{PV9;i
+pzjq>m_?ErHj~qr>!=>XV0hb;lsm0`wdNI3iyu?@e|KCebQYiLeCDm*uw`CwsBa8D^`W-olsU0uid=~
+W2MV3GI42~#9i>XwFw!6up$%89w!-mNpM(1yx!kl+nPyek25uVHY!{>;ytffjfxG;p??W{{Pk`i24}E
+QSb`DU5U>5y at L1Z6!LyPx#Q#AiNijgn&gewjUMBR+BqYGcog<;6tC#3NJ0`@fD{CHlH^wVZ1o1>^&gV
+TeFg&;R+E~4^sg+&<Fj&vi{#**n<w=RS<|+x;SHpIIQ=Uy#VWk6K+T5Dbw2E=CWbHR}=0{vUxN5Fod{
+cY57%ksoyPY){=cHt_HB6>M%2JnB;!Iw at KqtMt95;&6pF|zA&6y+ at Wn?{`Hz<qqMizEGHt#-W)*ZO_C
++XblV+mUlC)Z$p%sNi};`uxses;n*ji+uf at f%qG={w-J1s;pLG!=O6YQ9>UD8hK>ah)|cG7Ce2-Ca#i
+5SYQhDZZIySk2Cai#Sb3wuG9-JgXgG&YvxO2luyMZ$CpGhbq56a0KPE7|AROxh9*zFI!T*N|v91q&r6
+nvUr1*cd=%C%AhxT`)?v06562^v2!kY5ks<+vXi2r*}u1_f3OP2HLqlmI^%z7yw%b(n@(@OH<}d}U$!
+fC7#nsgI=s;`8l1>$!*5+*<)*sz-uW>%?QfOG+-)i&bFcprGkQ-Wxq#t)r+Dg&hT+ghAv-=+{s&M?0|
+XQR000O82?eW2y9}waLk<7{k2L at QDgXcgaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWny({Y-D9}b1z?FV
+RL0JaCzMu{cjt$^>_ajtb(8tCST$f`-m}ZXx(HpumnMEYz17;piY#;=5$n!yeMv$|9$U0ejIs6$#T;l
+h6$)6-I4E$@0+j7Ms3*L-Lf at pBkt~)+-y~27 at uoZwMN|8-&3}bAEcJ5p0c)<rCNx)N*dAdN}ntd#8z&
+LyAPsXsHV{JqlaU}M{{THx8lSuD~eLp+VI+FzeJa6E9=$EN^Ar?o-)JdmAI_6Xv}Ls)V-+rM(8asg+4
+iX!mihX_6oM)%{$R(#v8#T?Gp>OTZ@{(KG6VhrshA1(lFs+!G75Fz7 at hFWTmJo_`&Oif55i}ICjqvc&
+h=hQEb}?VAZgtYBt;$KmhQFzfmRlJNP{ULSP{Q0swvV1kn>voV+Fm*o?hVHAt$G+IX&C^DR98<%Gcp-
+=4EEAo^JVn`Yb--DJvM!GVa$l$MX?tud+|9ooYF!|>_NxRdS8Xl*vt=yn<aOl~KA&`9EE09Mt=K|21E
+htyU%@<{F}eS0XOFNbK!Z?gyha}TkGBQDKRnAO&-8r5zOOJeU{X%A+~uA5d&PClKSoRk&U8nk2~##Z4
+b=LC5nmSEztmgeqm3=}S{DY>^q_h^LMSR+8SHJl&X46hlO_y#nY8L&0e2vLL`2!NfE5gNX-KLNWcB`5
+2XW=*?l02?-K!HB?Y>^Ap9EooiZHuMwMv$1MO+0nr0?Lw99#=o8fcprGxdMfPqEHu8|R#IrRT=YluRH
+F$7K&9G{)`kaQ)r|!8hjpingZBgLU8`z=azS3F4&Rnba6Cw6w8IgRuwJfZwRl5_5g^(RuA|3}pbYH=u
+qHLzwAutnvM#F@*y2?c90~)(umS!PpeUL*vbtvqpfy$m=z%-t?v at o_AsycYIyO?H|Kqh#E$~C{&6*o<
+f;F29v}LC1AzPq0;X7(pL5eUV8Kp1WaXTNEyt1Oqy@`YhPViIuG7{;G-Q1=x9gp-PG6HQHX9JP;cUZ0
+rdf^cp6+bCik8eg#_3TIZ^W$j5o?2UUCqFsDd!bsy$|CC{Hud-}&;<1uEWJ~JWlHgR0<{qk$!j+H^Ha
+^9>c0@(;bf-i&JLykAGQ}x56C1ID0+;cM334GW(oPi1)ie!N@(4QSF&k<Rbmb{>kKAiDp{3mxYPpl%3
+N-?)>OpeWz(ppqrxT(*Wec%5eshk)II)Iz!{1eDrS~0T#Iy(TXB9eCThyIN=x+B;1lNr4A*q3YIsBTM
+-0X|8G1fN06|ExOZn2GD?X25izSl#6b^0q<}(gp>KSx!oIC=sjLR$7_eig1|3v#BI#Ig=08Kuv!x>=p
+aX(T7jo7FU;;`m at PirjWl-dza+yYpCO9ccABG-7~V0((h?kzn}$$E`Mq3eH$9Mqlwqf-`&Cn#7U7NC<
+_SvQZt-Ff_ls=tJ++>oxKUUTgN6bU3g(nReQ;D#u<<M&xfJYhfl at B_pgy;dz8rlGhd%vzygKrRdvZxH
+25)L2&hHEcvLY83!5^&EfdvO0ES*Fvj1PnQiH;V{YyOqDXIo<}2%Ag9KG1vmh;1D3b<S<%Y^A~(0+Ln
+fr-kZAKIEGxPQhcTR1*D54OO>8c|R>Rg at UnqE9oBdpw1_M;*WpGoZUk#o0lr1sYwVA~Z at IICzm!f`C8
+u>xI3e}S at 8ph}&qNLRxW8Or?`<7Q1s->Lbc^n*x{4ZwAR#mBrpfb6n$*a at N`T6PDZMw`s at +)U~VE!|2
+py<o(w^0v|?j=$?cJKzg#Gi<--_6)rmaK^N8T&d9hj3d*=kexqmXvxtfnq54PMIQhy7y=HpRXdG=pd{
+;oKfVzZb2K6U|QKd%BCGuRGs93#Yv%u);&80oO_CuQ_#t4 at POa8pzoqdt0z$HZ at ISh&)hD+)`b-*$Jl
+OV<4TkZf_7 at 10(}QZ-0H5DnJXx&Hyfp$vj7Le!)^lQj_V+#zhA%p2lIAAyIc)(a92|208Xq64sLL3w3
+mdH;S=_qFUV*|MgYE-VV7TLi2=p4g=QB&6V at LCBjGF&#bcl(>?ZO_p}cDNs>lA)JsK|GQ+`uXkH;9=H
+>vUDmZZu}CJxYfTbVb0Io2<0W47ndp6zzKV)u2Sn$@$j7cX8s`$+wR13CXbfWyKJy98!DiL)4L0;S=F
+mMZWip(`{j)cBrQ0896ViAiV5KCOT#g&`G`SX1h=7JTv2yIbtjxgRNVT=f<zJ=1mHlJ~f=_dZ=<lj&E
+GA6`?>aMpJ<R;1oqX6bLzl~{^S{V(e)Y-~DZff`{Y3>J}%<hAkDNF;*GCEH;yLTjIOKy2G#R%OaHWpx
+FrRJR7oU~F1;5bR1`-zP~6WP?c|FFwL)QEEQJ`~aQq*i$zO4t*3IPu$AHqUr+{6EoK9aNao9Zo7?CJ3
+CIW+uCSh15%<-y%-8Sj;U>8yAU%cI!d%KesuIhGQu(+!kF$0douAljwA7NQ6VLc+kZzi*%$~c#R8b at h
+ul*pI6Q<%Pw~|LC44$vqljP^r}Ku?dW%{cn<w?%o3=E2t*U3d03Nh}vU`BXtCectx2=OzgHaG7mo{Rn
+0fR0f{E9`t=6k~QR+MrnOA3^}qI=&;BSKP41 at sW;08~j0u}kB5)<!}dv``%&s3zLgx`<8V3ShCbbF62
+!w6J4 at ZU``w#gZDxT4MwN*RfDV;)sFZgPtmvaSTZKij)aCgM<w&(U$(9Isi`)?gt8XrI<uvot{Ocpxw
+Cga4#(raD`pY2v3 at O?{xNUxskUqyKaxqcro?2k9_qN+uu>F{~<isK|LWHxR9V*E2C#9>W9$)krD}fJ~
+W#rw!Yn=V$6jNN_eEt;TKeF!(<wSb2`kihY7u8r~PEyargUkI2Gd<0G!yi7QCq>rir#Rrkpx;5XT-&P
+ju*M&T~}!u}3YH4!MPY`gL@~o2W*HO|-e_D&`3ydCg^A-J{IOfnrUb)X80<o+a-^&yR{YY}#P!$Qu7L
+!t88x&PG>gO4ocfdd!s)#VgoN^xNj>V|P<}lz^ZokAj08!~mib&ZkLMJZI07rw<()9+FFYve3@@b`=%
+8hhb+cW@|Q4F9q!2*l2T<CKg+ at 9Zz~TaX5?YoXeh$z+(^(^R$EP<*wN-)}nkzE&Mu2TYLlup}~2Wov<
+M(?)h4p;>5_|>TZAN&e{hNdmCP0QYf*ThxgAeosf{HVb<R-gsH0&syl}zT>c%_giQD33A0=x5a;8UvH
+{ZOqU2a}p$9i#Vj}8ZJ3_JXxaQd4?7_3`GH)G4Uu}uf15KKtKc@^0w}n&@|J|F1;mW?yqTH-&tADSQz
+eh0Yov33CPn{XnoPM}rY!~k at oP0}W(8)>aiKOotmi9>e&X%=%sC4&t^!Ud5$j<w3+j%9+%SE at qKZzFU
+d&qJ&@go0Z6vZ=FTt^jAsI}cSn+H7&5Rc*70UB_9VOs(**HhPJ?O*SJX1MmN)OO|~QHyYqIXEQriYMu
+^qJPO%#J!2J6A%S~+et)psvY^GLT^ILVqbzyWZS{Fe4}YWS+~P9H*V4%Jm)&9{b at x3!F(LWylK8wFxj
+W<aa+e7Z at qU@dh45rsBeQwbfZ2C5PF%`<a_QW?JaSyevbg at JRpDln;gRxr17QA<Ckq+QmNx-h1 at YjN9
+1plI&q^{ttfMJSAH9*YoT$F!j2;0D|GU64sMmNAjcY9y!TlF(GjJwTGN9}%O^>!ve}lEPIpk*&e6kQ-
+Vmo&%0qg$4OmlS?#G!^oaRnsVC4y#U*q9ig)OzDDYa5KZ4Gm5lPMc{4xid;)(ynrJ$KSA`QNvqtOv^n
+k-b~?My7oxI at GJj_&2nI&a>GeJ2#vZo5W*+t-q)l2!b at l)ueld60^4r`}Dq#cxXm(OK0wH(Ai~eEo2i
+-1PNYiY$NP=ZEVw`2Z$Ok;8iw!CCeZWkVDh(dKGv7 at MEJ@I`-g&2U<(`Uwfy7)!th-*Dy{mm1H_!kdL
+4p!o#|jmr=Ak8D$8UYw^>`&`bRW$~%}A$tM!s_yk>)<I*Bl($7mYVld;-r0RQBNWsV17xDPpgP;BOaX
+gH}hSYC at CMQhtM)Cb$+fJV4zCH(4JPdkx(f>DWg<*!GG+t*o?Fv>y?MVqKw{3ztA8SW?0vJD-IkC-Cy
+U1SQ^;4GqSdP7V%OXehrv at -&IZ)F>CIv|{4n%~3DTddj5vWF#un%V(K_>%BZ>`-rdpBg<%nKY~Rbe9&
+7Or at -5bI{2gd~?hmfW}5(Z$|z_x9nK!6w_x%vH?Pdg*FWKfgRMu9#5R at IavpP{W44tyszIg2g!5lvKF
+eks!K82>ywerllo=+MK3EL?ikf1>A1-bI49ly!{Qsc5N#1u>OdM(L*&nm8>Hh1`Js*#K&>KO#SxT177
+Jtyw3+kO}r(w{@D0&O3DZvv5{i&vR+*CmG3%<k2E3N4 at WNXJ;Ik;^)OI+o3(8&HT3^K&@`Uc13N*MMj
+^xiI^WH{k4K9I<hi4T!M~Lpb;IlN2t0hJKaKrsMw8*J3SHtMf-h#C!%3zHNlq*67j~?LDL6%)d)WwJX
+lJ!v^zN)Qzt=?<TYAv&l204C!ZZ~UQW{|^D+Q$77enIq9Ghn+aqfP^V&KaC#1^_!Swonj<TqR2hOv?u
+upeG{7_gsdh`qS0kX%jy?BIMt=lJ|!gwwNRDq?(~i~u_*29uC}_aHCxFFL-U%rRG at fv7Ei7R}zN&alK
+DbUR1cMFY4lLSmN_aJ_FqGa#F|#~RNNj&2B#cARztb5z#b at CEVHUhip#4*!p!qbB733s6e~1QY-O00;
+mH1*=G5Dlr_F2LJ#SApig<0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJy0RE^v9B8f
+kCaHuSrH1*;;6yedN1kHJzPP13E{k`%2wY)AuvvFMbo4o{?W4EynWq)3XSNZE;iCK35AzJu>jS6y49q
+F8PCrXxjxXuWPbj_?g at s|_bb|DK_e-cd%|CPSNsF58k673HME6`RdwD?#L;uJRIoD+)DjD7<Fq0)S^~
+ at t)ux9a$-iT*DSOm=U#R7ME?qIBq!88)iX6G`J>gjhDoLY&fmVcHNenioC~5-gb}b7YJLD6}lz-w5{K
+5XjPIfg+D*k>x$H*;h4iA=Z7-{53HjjG}@iX&1HodL&uzVe^AEL_U1cTa)l@!!KNrc3A`v$MygeYNKe
+E95|7x+)fTW*f6aVCpln6R!|w=~u0fTM!lspDkd5Ae5m^q{HB0C7+z^`k3>e`8$_Oizo1r^gZODYcIi
+MYDKB<l4)2~P~Ek9|}ozCD<?w8|quTlYV_4+!KpjSU%&(W&w<O`yWgQB0E<hXX__(2}0#F!*0as7i8#
+cjYOVd at UyTi+xj!VpOu(}qn^rl49zWyCGDW%&l;z=M-gV9E#tIyZqr%CoL(I|q_fj0A84C-{b0 at C1F#
+i3>%CuDm&NvGSbI8?f^*eBQv`g%rTX+ZM9sVuH<e*RDy&AJYogHzk(1hX_t6?C*F)h7yDL<<o~`9`sG
+~;HGr7W+Nl;@Qb$bO^?@W(v&CPKzZ8ouIi-pLLY0~^@kH+@$k0^N<6J-FGw2(I#`eguGp5C<4i5TBM^
+_|NQ&!9!T~{vU^uq-4e3tX<wm|OJAye8goPDTL3TcJV~fk!{~Y2rXezk7G7hJ+DTMtxswP1;s2;_3uu
+BHPvAP%=C@!*X0)rivI$&i-rjFF at 9ogb4pk14#q9>T5BiC+Q6l8O2c9dB-j4yM)De1r;T5xjzQLcN^-
+vbyK-8>Rm909K6vD8bk>-*%2cC2T*`za-%aflmPgT50$k_?tcW)SVl%S?7Ym`YKmma%2_Je7 at TWoSrb
+WA7OD#;O!q*s2&H3i>P=$hBi+MStfMW#I at ws0RQS9EwXfio=WNpAD|)ijq=f0#I<ODZE0-VFEwpI}{d
+CD&Z?)iiaW@#fcVS7oU6a-ax_Q5Y493N#s$*+|v&guM#Kaa7swMICzAeP#wR{T-Ws6c3FXuWrm2mzg<
+>1!Vk#rq1_>VohGgfsHXsOg80-WGm2JWt%dO85J9@?i48RdWf31%yoWaFD*49iD!I-E5>Kqq3 at w|4Q}
+;;0Ju{gDId$BkBVHY6t$5{JsS^H)zznHHN>l2FP1L}rm*;NZmd;hVpsR;es4YXo&w0pns%OpNKo5^S>
+rnOvqWp2K(>HH_kjAg8`pA}BSF+Sg-1uH^ZYsL`P!2$P#RFuI3@%0+P_HD`-7n>9Yv_inNv(JY@)&@i
+P(7V3#2Nb_)xu>)o<L^OhI7)G9cqf<d{nl{?)ym35yoz*5Z!`MXJ)`~jih34 at E_gb8jlVYpekE9aW)j
+*Ko at T+>D^l*v5^&#5l!jztd~i3I5vDZ5GSdqdtU{o*Y=4gaLvhz&bukw+SijTs&~6G2dPeaI(<d%@mO
+{Eb~2c^lh^isuSku$=bbtoLv+VB1`-SZOgai#^<O1ZthH1}@G!z;<upoNNn29L$gcs{=pc?ex?b}UUO
+wt#CmOfD%nn72*cX=v{PH77749#34<5VsSjb84yF|=O^xN^t?}rFiReRsJlZ~vBG3zUNAcR^l>^EXkj
+D#3bqARy&m!r-7LJ}ziMj<XEwjVE5Wh=Hg`)g5LT%MlE(vuEW%}1oRlvY6;(EKoH3PQwd)Hsd`kJLTE
+m{KsDyufu^bt at 34la+#VR}HEX>CpcLVsjjo!$_yAC6JZ*y1PK%#56U1Pn*V?Hl=X?*W+wq&y5x`j~?}
+gKfOHpa(;HPC>DQzJd^qx+t<d2BSt;RblbXKfJVwx+A0;ty~nCDLWGhe?jb|j;j`O<+1+U$N|NNiJ@(
+5B(1*|j+G8l$V~PCn7B<n|4sA-hkM_||$_$yKv|w5Coc_fU*%SCJ2stG}fL)wbj7@;a+`sX5^0%<7S!
+`eGi!XT={r8`ae|;jO16=?-iQ~!T`EGoq9uE$LYaJX+8Vkt&DLc)l$YCzPZ9;ra#J^|p4|xm7l<E`|n
+;47QbYch*m=jw=kVxuMw=En7i9m(Zm=AH#6Ok2tfW|UJ`+C=j!}PE{t`SQ*pTsu*2uE=wdM$6Tzf1(@
+gW_?<6<6UIj{F2A3V;qbw<Hx`zs4ViVuLTu#5%Y)G)rkb(JPe+jJUq^(~ss9w0w!vWrnKd1(TDwi6Y0
+6blUYAcHPe)^Qv9qD(pb|**=JSl6EYuEAMi?fqEU7egcC})^?nfX>^ooKZ7gpgDdZ`Bau7z2X9V$cSf
+(!o4NZP*Xywr*b#c;tPAn_F*gWihG1r36`JIGg^~o;WzxVjUQoTZG^JXW<ZF}U-&@+G-JROipHhXH<=
+kxc5-p%|$4kD!6{-ma7v!zzi4azw|6k1dZ~f=;4GbIlUjeD}{{iN+{{c`-0|XQR000O82?eW2V9$Fe1
+PTBEO)&rfDgXcgaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWny({Y-D9}b1!9da%E*MaCz+;+iu&)^<7^v
+%fJYgrP*vAgO!1eFNJ}wV`Lp5h2j!pX(Y3yNP!$VcDMQWp1F~8Iix6W(w8og*b;f}w>fi$Ue(oxWZ7!
+RcQwm0l5e(E%?Z70s$$1kroJa+nLp%BUX=;imHDDtvaHBCt7*|pR)WMf-=^6EE0<NBHu<BW!`UOx_|u
+k6Ci+edA0<X=V6r>fFnzDRncq{u-4y=)MO8MOmb at _!+8YL<q#M?3>4LQ&JDwNq<4v{P73_j8cvU~?Uy
+})^>#SyL_P8Z85D}<uwt2zg==XU3kFU3{reEXq)ijz;CX*#wku~GzH#KALc6qU6b$nj14J*00b-CH9F
+O*Ajt#(Br?$0j3R&4rqLg2FCfnP7S4|`f|<VUcli<asqaYUPCG)+OBi9}u$v}p`vEG?a0f%mi=;u88~
+SzhKm%i at L=t3;YG=?po$s!AI}Tmmr71PDkXe)T++1T={JjKDD^o~M!#TEQ5L-_Ug|#dGL9?`mb5P919
+bs(VE8h6wfF2K=O40`6u9KC at M9=FvUh6wz&B8N$J55DFtGdS>h;CvR_Qt&AwdMXbEIhgcQ9ZvbX~i$J
+Ujy4DZf=&+5CMu-<2;|$0+kjx-du?WH~WTQmCA2nZ(nur{c*fNp$=(@9JP}|B5*Hf-x{0eX^#hwxBI)
+qatS{Sk&jl}orG&FWAk0*)N#EOFUu at -MzS6f!|r`V85S_OSR`nHt8QXcc?v(ot++M<(jpFxyNj#Z4vf
+oXKWIEFw3_=WR2zk{`~*(-t3oJy3?-X5uh(DsH$_60cuVw at 57m^VBx*A^&Q<#oe7 at K2vUkz>N|S<T3X
+K9M^{DE#2CMw2h_omXU8!SlRH)6~ITRW<n+dm?#B3g8uEs-ytW#M5b*kxN#f%FhAg7UPqU2U_fyVArX
+XLNBoa1|fYYCD3=sB_2XR;&V|Q5m4iBuQmYA{0)?1@%yLSX;@RxN at EcNM7&hDDuZj)qNH at Qg2?ik7lB
+<YBwlPFF?ib6?!7VCmH9CKJTgXHms;S_`CDwU7+Ow*tIeVgewJK%mOF4Qm_!N|YZOa=hlyjpPL;${%`
+ at LUZBDC_n@+-0Hj1JT%6hyOLAeqsL`t9|5EXw|RtYF1T3G<cEPq#3g_k!1T3{8dbe~K;`RH~FU9&QPu
+EK7AhM7E7Sg`~hD8Uw3Cx8PlAGNK6z;?w`{&~m1rOc8q0o7Mmp`dxWWRE~7tR&M^K8rP8k2tRQig_#%
+72juSQL|0;z(yI_ at Kz|}O((l9#B?_h2%6`Ta+)|6#X4)zJXJhK0tc;*0PC;2z!5KKNQgqMjP_JF3HRe
+nitqJkxf>w;z1|CQDdA*#NrI4F at -xi~QmM3qy$V+;XR602h3CgV-KK)h2&G%t5sG)PxboPt5$buTEF-
+=*TeiqoIa|um32 at tDgQibt3Y}^OP3M>Gk0I=pCU8Pt<90($t#FRXpv6N=dT6-u_oHEc==VjR5(5bmh%
+k^OJ+MYbrxYv-$O=*Rur;XL{)$0~f{5F_VA5?1b%$!>ij~&tJj7}%!N;^#Zo?*E=YrHN2qKB0n<$-^U
+UgMf at Ki^lDY5L!wY-lMIP)m&*0fMS3`!=YwZ%|T5&B_7uIkw6xQqyp9$-8|fB_O9P$LCfyiN}B*stf9
+(CubG>0ZCtGbA%%(qoz70g}joU`O+@(PeN4ZJZ)1hj;Z(4B^BM1^PHbi^6nzIkbIMDR4YWUux0V)aWW
+PG*U7;Nb&yH6O=PxI(i2wT^sc8EeX7HN8PVdxg!N6{9gJ at _9cda<Mp#@u`?sbajsX at XuG>B^2Oy6s at G
+Ek1?Y0=$*O6k9(MHe4`=UBZ~lILei99JhFZCvNtk9X^wb|iAS0LP7xl-`XV)5iwBG<HjttWX^ofwMi$
+fK6C6o?b(1)r;xC^y;`+HH_EVlcvTVL72A-mAuw4DyKhOus+H5{tn*cujZ-x`+x9cvhI5=S^RDaItk$
+gqc?|M=_q)lK%{{rj5;<#tii_4nd>@!^-hiVudfAPD^c|Bcl-E%JY}y4{?2l<Nni(lrLdjPEsGBHPW9
+&tBu(9oTJ)KBNPWI9*5Bo~JAAR+!Zl&<LjZ&Lnc?6c at A|z_WNtx^adV(mhisE7Jx at _VtuqVD>N_K&~I
+mo<E8 at b;(gfA~6mVKThBYIqGeH)fL-?7A at z84ALyAY?)5ve9qzIk(E14--~Xpgd8nyFP1uaB6J6ISYK
+w*{m)VJITHV+1~17=@`}VNz{!u~%`|aHBertXf*y81bDBf at B$naxx~}RtGG##xs}{5r`1kZdZK-j6!z
+5F^KZF!5mvUC+ZVGzh`v76O%|*1|wfIrzpohT|KmTxiEF%2)_{4ID^2VSe at PLJyD>m at f)Y+0U=}xr4$
+)8c{MCXsN(dV$u*GJ_ES%W!_nuO?)wA|-eRPA_yZ{bF$*-*Z?7dyoEoH~`a94Zsc=LWZTG$R?PNw-Dp
+fb1 at t#1PQT(sf<!woM#rBCc)CR=J#9n4|kt-4Ywn=5|Ox$T?#}g at T>;iOY)+Q)}GNkf^xT`ZEQ$fivf
+y<2oRFb?=m=cdOo+x;GGTJ6I}NfiPTZI%bFY)m+c<uepRFGT0J|6R!i at ZLa<x#Tf+q2Om_=P;@NC7Pj
+dqk at yi8HkheuC<<}!nV)@i@%s|u_o$hPmHTDiVq>2@?Oo`;@8V|QX5>vUs8XZdF6^-u-s>JEis>B(`a
+5hCIZ~x#S0x~2snp-jzP22%H$TzmGD`nh<z-wy*o}0hA_i%pp%rUeY*>QZ-d3!}IoIb;a#3x>e1sB3$
+v%cMU3hEgybx!;v-S<D^s-!4u$8%x58~;#em(5c!v!(H-q#VI5A53iY}@<W_Un)D{&so#f7HGIfwtT!
+OMkZ9vgHnljVr|B!i%v-@*B1BqK7|fOb0(4RQS2u%{@32{z3Z=c3FyYc_(XXRWI|B)=&G+6kRv$PX&_
+!s^F&LUDHpSLcY4?wDt$(nqV#(AEFnMIpqAzTDp1 at ACW?~O6}mQ7jbM?io7}#nk1|XV$UQ9{qe at cP4D
+j=*uHLm!8G%`zXN&_r{S>1l6~uO*lqZ|h8h>zuO+Lq9_x-hGt~9tRASBAF{2G2_No4Jk;*NM7S6z&dl
+|M+*>4`}V$iiJdZOvGFq6&}Fn8XH9(-fkX>Pm`rkZ-<4URTy&(PB)D~?Re2pE~RLJ*jjzL5a1=H$i&?
+a+Eep)+TSAP3zQ-HVGOma`$w=?c2x{^}y%r<3nALk6Jy4{9j(OQK$&4(;9!!TXOOf}l?Wyw2bg3$dsc
+v=E!y$;7;_`m6k70SGwkuLff8uK=c#{{m1;0|XQR000O82?eW2lb<E~B at F-o&o%%6F8}}laA|NaUv_0
+~WN&gWXmo9CHEd~OFLZKcWny({Y-D9}b1!9da%E*-Y<O*KE^v9h8*6XdM)JFU#g>5~DwSC$Uk>O+0TS
+D}7)a6}aj#dnK4L|#EXEY6<C1oCz5Mr^*$271TvD=;I|6NJa^5>LJ2PAbLGZpzo1BqVSrOiBw`Eml#S
+N*~jO1T8dBp09!ELszXtj&TB|OhkM#-90aK}kql7=%vIoUMHdQz?gYC-Glu0_MQ+miEanX@^$&+2vA)
+PRPJRu#R;fd85%w;T{|8A%#mmm9)zwqZp*Dd>g)pEa$?vSRd>ELnZeSV1a)pqz0jRa)K`97H2R1duFK
+NcTXI7DZVD!nR@@Y0^AzB_gOH|105JmSn3efp<Hh#H!5m@*ahxpzCb`3{c&KqQcv%1l$e(c`~_VUuy#
+9OUexj%u!vW449lKgH$E(*BYIb$!-fep(RLB64Y=q`E3n4(PF1ifCs1{NF+&9%~21w$!bE$8LjC%kp4
+GX6#y{_f?zUPRbaC?UNv=7u{b8#2G^3%B`@=)X0iNxPSWfy<5^kENmFD=nX)*~YF5#lPbLcIUee|I?~
+3U=zT=8hq#49ZSOfJeO3H%Q6m6j1x}qvL{knyBh)S;mJBpil*<^XjD(<3Zu)Ykuw3Xa&S&cjaftx(P#
+Agd~Sv71@)0?<rH|*;co>UB^-fY1K!{E>G>Yv}PpU%F8(bHKln at rS_#x<-LzzTxVseBj)l&8Tg0&2h`
+$tmXqR<^-+mjEA@%P%acXFpE}Tq#?@>SRS$$8pG6zM6|=pOb9^o|0Uob2M(vHW#VFzzYE*gahWnORN_
+f6<+FF8$eS80DapNb&r^?FtKuCWzP>~;RqEcYgnug;8+~qUtLdHx^%l`MS6;_l?4>7F&@zk7#)HqoJB
+NE3kbDPy=}o}9g7&CPh0-30u_VUD0*T_bW3cA?k%h8U1$>oP7`EPGhTmYRYvpd->eF4HL5$QH{P$Zg6
+1MW7^cdKRmoZXCd(o2;Dz?$=)!yv8ftOP>s)fu9OpnQg?|?(hL+iiV6t0NPV2hrKm%~pz<^V*eK=)t7
+Z$H4<PF4<$e54^IqLybcadD?FnE$G4}(B*!GNz`MSwzsL|Fk!gSE~s&-#1~y+RjJx_+Fckb}L5`f?Fv
+NW at K*do<NoTBk9uahZY_Kb-w?dindub8^IA2IQzm5UmzlVQRDI>>xgY#fbz*JP`kT32%UF_#h=)ndT2
+dYmNFaG{dA`Ji|TybHq_G&}T}f<S7ZIE0Z6|^VwXRW7a2wDL_X)req~Sn<jb)_iL;#Of&?BO5iRl8y?
+QEP(a7R`1G%j!*ZC^0lfEf>jk at st|MNU=`q5J3~FPt96}3f0<je*tjh$r09e at g-Ys{K1icwTq`M4C8B
+yDbg2x4d{fFW9J;D<_DY}C#A1aktxYmY#fyavlc|MkOz^ncU at IS+|q{X`3#?{^zmXPR_ at Q3HQW38_z;
+bD1gyFsDl`EFhy)=@7tBzrWLS-{wgY@@yS;rJMn&GGTeVar9ZO}Xat?jSYI@?ZwVY--4p<$X;bwsL~V
+%v9K2x)H~cwOf3yYX%do;2T;eYhB^B^=8ynijjZ_4fFQwps9>Tc!A}Gf{bpeve|~u`tBlD&jItqJ7k_
+!_LVHUIy#b%7{4m`^&WG-fb~{8nPYEBWIXlTmsQh5Sf>ADlYfA1Cqzpf6mmV`JdzzM(Xcq?0?t&4)nf
+U48UM_dzG6tef!>OD1)q6|m=`tv9nBkNgnT4XBWS!fux$+NI;~Uoyb!7Sv;U!P*fEiPi0f^>&8)?d at W
+VD977wq7I<3CYW>^zoL%zU*h^YEOc`F%aJ6?L(gdd|;=Ly<{LxZSVf7jda^0)|xK9;3nM{>YDx^S6_Q
+fh%E;&iB<GMIS0-pub0PSQ4`v8_VExm!3IL3CfEn__Q66exNp{6B6=THj+^-)?If?$%C}=|R4(GxWyk
+9vPm`I|6z=Rd*ZwQ3TPKGAqLBuI*P#>4{FK3jIXe#e!Y5F2Y1v&DEk5q9?9PDCi^=95+cBM;hI|z3by
+U)(3Tt9(ee-Uk>T3>%#`ndRW8B<@@xGoh#_3$O0L%Z`TnS@&4!%5$nSvuB$^c$mceF*A~zZs9`MBW>6
+-l=t)cAZe^8%*HpW9F6yjX(Tz;ihB+FmZN*^dH$SNIK;pPaL<P<jgxkW1IWu|guRspo_OJWIY;}lFBO
+z_S2tPE1TlsnN-SV(Q%GBehfpsy%|B>0+qZX#&$!HpWOb&iP`n8g;9JS&c^R;X#LNP9nj3;{Vs+!1Cf
+w5 at Ev-%}Qr~B?wrz54Ae&0?SRcQB~>qgbfEZb})Ia)*Wt$QM4#@e4^^DRx-+spUwl&PVp)HC<R8wxRJ
+ByrVS^?NPISLcW!KS+h*twBfMbe`|dQN>*M;NfcL&uYZpQ$o$$d(S)1mCO68E!Dy_OKNAs@|djka*-e
+we}40nc-A1i+l_i~$T4#04`eEg?_0JrYfWLXu_nZx3<>PI0sk18n5y<5`16Q=Qx!VkT|K{^JGFIEvMO
+P%^#s(jYtP6JukjMz+md+b`)OOY?rvnZzCzm9KwMaD;#phZh&F7^-`Ut>CAD57IKC3*A#3pc?LTb$$J
+_l;Hka|H^SR0#ksj&njXSw3w=wOp--tf#9M0PXI<mMC>2O|jG7K2Tnk^U!MtsroI3Y+Yden~HU`~0oj
+`ott5tV$VQ}-pk at qeA@IM0oHWr4mnH-<JIJ=9h^+^Kgg9O_DU>+{|RA(gh^fH>|F3<~8gpMR|!a&t1;
+?(cUAi-672LbDX_Xv`g<JVt>01Bh7gD26Gm>0CX2&0ud~3#>1EDGwkA9PV^YE1JOHuyq2|{<u0o43F^
+rFVC`Q?aS)&8^UyRl0Fll at zvk^bCOW|VK!5&#to*R+(aaiygrFXHU39JIhjL_2 at upDY^@~w!px-Tkdm
+TW{(dH0MXPF9K at f9l=yRvu5-?6Z?by17eIlXVDqDl=YWt1*d92qP__mQ=Icl5}z|&2&Yq>sE1I*S>hL
+KXItEi2K7a$IFRW6!%7`F$YtZ}#iQ5{TgI^>+B7&;cBR(;^yMMn--S)Xfh%z*u#Y9X8^((owVg;_^XM
+y4BkagFcNrjUB+T_Ls0*cR-%0Ko`cy3mV%b#mSEGgTcP2WS at lfj|!mo+4D9 at vecMc{%mE^FdCcM|Vuv
+ek*RxB>nD8I*#&;y1ZqDVK23xi^o?1{uOj)Gmb|o0R6-OGLA?oApIn`wnh{<A3z4Sj{2xvgg0S;=g)e
+l4GG(9>z!`mgSmSs&YkD=!)4e3W%f-!NIUd9;Jt+%XlBy*Vc}8oU`30vIK~$vs at hq)Rnyd3<jc^I%6m
+v|%xHR4>-dtL!>j^gODlNeRxsY|)=p!)O{B--J<W;(=!5Y?`348ERu;j at mwzAKlV`4upI!S#yPm!Dpf
+#oG7uay{9E8s9OSUVEw0EqPk9jt4U>^>RO-S|uGkbRlO=I<J`w8{)=Yb#yPAf)hCZuX at D2}nIuN8PbA
++MP{zN?Pq-qRf(QU=AJll!u|g-ST90iW?=T7!gaqsG<UVd2uCM#Yc`1FqW0X_+{{tYi?*NLL7gPsE|Q
+HAVZe0(ImpjSOO!c%&K&SUl-lFgYo2xFm<QLw%enyh at xymI{{*N|2eG@)IIwXOj2*I!o5-6f~@6J5N=
+otqYXB!v(oNt7B-Uo0<XUJ#t|JM7{4Ait3Nfmk=CIj3Z)%SP*SeH%7KY2mdU at Hqjf1z8bfcG@O!;zrK
+EVaVk&XP07*V_zA9XF!z3JmRUNWL|K8I-Qy7+lef|j92VN~EOoMIi!wCV6G+i2!}<0!n30zYaw6vK#*
+1k%l`n=zZ%z`?iz~V7bdr<>?D|kB0c6eum$Ym!p8nO8P}S|*6urs{F(Faqke^V6Ihp=?a&q$gFVn%Z5
+k8$q&SbW}Fx4N|1%XElD2)J^9`R`~NNVJ3qCsLB429Rrz>S|?fZ-- at RZNfE8FY#hKVzUI%~mTW_A<c)
+GL*YRjIFYnAuiuue2zcA{pHtpXYq&gzn_1KUw!;|{_0aK<MG|^KN(sI2Ks0|4uRCCZb{H6IG&JKV&fK
+KsZG7z)Ql3m`z1##tkez4okGBA1walwqTZecwSO#Nk-Q3UqYJKQmUzYvCX_Nu0g<@z&AD;>9!#7$9cq
+i?loPV1n)!j<L;XS(RZyT3p(W<u at RvRA(#i+f&APUKr!ZQex9zNkK&D~PJ`U8d5J~{r<YGMM3{9~vZ;
+3!+?;m!OADPs7I#aTKpqZfN^t|QZ9x)PjlJG6A<!@=fO44zm4=u=f(ofja$)N?fZ<F9}c(}zUcA7wQT
+oJm1Z7-(zH3^>&`9k+Y2wmx#R2&yFdr?2QVUJHZchCk<i>hin9dgj47YSBU4;@Tk#Xb2iP)h>@6aWAK
+2mlEMt4N<VeKm##004#-001li003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgz<a&s?VUukY>bYEX
+CaCyyGTW{Mo6n at vQI8_l;>TF at yV=xye(rnnn+G6#(4yj=<5^b}gMUAAAdPV>H&LMS|>^j at a1SFQpbLV
+$1bQp#&AyrcH)C!e at +Q43ArQ`-SN`tUmGb{2f*qv78b_bc*Y`EsRg*%aF1{ngYIiJCn=MAm8<GBHmA(
+=>-#0BJ6hC`uIc*--lJ>UxWl;Ur$1Ftm+f~A5~b7na(Aj$B+<Q><}90oam0DCAn8S3>OREeu75|v~s5
+c@*%J=xc1SGS+gMTpQGiNs6X`or&_DXGfu$ySxeXcn`r6oX=(8LkDBXy!B6b94lCu{(0KQo#%uCGk^l
+ORqZ50?loyb4Qg|aYPSBQA&a^41-{!)gIRCO^Hl=y#_QuX%uvef=kQS{`(BWe=iK$IfF76sml0TI@!_
+$!Fr9pA at 2fi!Y#M0i{T8yqR=9@^p>eTeQ+|JUeF}769&IBw;@08WwjYV`-DX)CGoC;pt8;!Ol5hJ)D~
+kXjb#|PdZV;LntC_m8&*oYcJc#<9B<+kOA!tW`0_Of0;GbT0}&A}@z`h3oD8GmTD(>{E<S&L_kh7S at u
+jmEBl<HZ0CY|{mCSfd-!m;#X&j79jU#vvb_chmkajL|Fl9mZ22Nb99Oe$QIoo^q5q^o);ZgIyN}&;1h
+%m!ZhQY83EADxmz&kIFXWf9(bI)XnMlj7UgW;Y(DO9>dMR+C&eogiw7x)RU-uyZU#hAT5uz`qb88|^6
+{JD>rJpz#RrN^vDyNT%h?&~+eKNre)z>nm$5BEGIVJ^iTipdec8<uj2?sD~zQzAboedmtkgrI9LXz8j
+z+WAK52ZZ9pIT0sg?`W5tdsA4k$HdOM&b6##MxQLi%HU`BUPsW;_CtbH(N(FbTFL{kqL2a)+Z99JM7V
+{J%H;vU^0KPHM_g}I_^RB+AWyalG{z_0kSKjbTsLruD at C;0Kz`A at CQ?0MCdS^+O-qt1i)RRfT)u4db!
+m|<stZsJ&-k)unoF+*gcl~cFd<w(v|iKNdOd68#66C6RUOyshzR?e7)z9fl`5(F+6~dHdNc#mZ)!Cw<
+V3EdEh7yZmtD6Oiv}5eXM7E;t6#U$o^3#v={!puxKG*9RQR)vXgJQZz(f0#31jsrV~{<<0G0R45poA~
+i$PoIl0JnGA3j{d>+AQ|zd`Dn%nrwwnR}-ULM0h0aR|muCjra<?L-dxj_yek>`&Jei(egG)HkWqk%j@
+QgbadB;-VJaz6D|{O>qv&@$YKKG)u8gF5S=&`Pre$oPy^Wy3)`XngBe)U9Bcs=bvM0!)dDor{$ZFzJ;
+q^);1a2il)SUS75R3EDaKPWKM#W57(kfQN}C_S8)eEW^l%+dn9Cxf`i~PgD>9jOBfjGwBTx(d{QEhM)
+KmXBY`L4*w^VCsq5egOaHTl9tVDOi+qP_N1V3^C3^t3*=@_7&QL8UN>$pTw5=;RwNu|;!1rT>oIqSp`
+{U5_&N6M6Y)ejG?+bgN_W@|0;z+%9wSS0&N&#&d0$#Xs{e5Ej$)cS;lV-!*ggc7`aWzp#CZ+p0RALIv
+H{vs&fFC_ML1avPGnTp<@sDBOlR6eLqHQ}RRGl(6vo2#d%Z{t8#Ps-jL>@tP7Nfc!FU$+4FN6 at DSBRQ
+9L2+MW1-9=N at WbG^8BT!W7Oyr2BI9Ob2So}dHalWcI>WIu-}WUEUnf4knDiSBiiw)I%|I%=^EumQe%_
+`N_9`PMEx{Yq-b8UciI7Ip^kH==9s?a0`6KXY1dh*~p5w at Agf<eU0X7MoHcpShsu$Jpj)+F!xiE{5`0
++73f}rY<20(fWhRe-7mF|WysuA_z(Ug~oqx4Xm6BGxdOT(RKW8O3PuGF4d|A29vHc#er3^>f^Q`yt+j
+`1;FuT<*W$%#67y4DrttrY1m*%Z};-J!Gm)tjs3pKq_p{E#q1|6YW2h9_=l_0#wC42HflkKt&Ydkhy|
+53mFfS0_%LMZ!O}+;}Q8rWpQZVE?~iZC#s;!LjNvkpiv16G?E6Mc?!*KBwuOux!Gv<LTHL>AsQuM~mK
+>i9ejW`|6l69IsVBG4vM4tmA_mn4KzdD&4Vr4qLpsYmw2fSxicBDynNj*tKIALCpjv#CxjK*IFwbg}>
++ZZ#OhbTK7|(?=9BfXdIir`-C6!YUcGpii3XuP)h>@6aWAK2mlEMt4PhmG_L{%003qi001cf003}la4
+%nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgz<a&s?VVqtS-E^vA6SW9mkHxRz>uOK#;RjUf^Rj7Nh6(DFM2
+aVD+FoFfWOWBN9T!BkDaRUGM&hWM5zT_x5<WOF;BxgQ;GaQbF+{$`K at _c(x2g&lB at ZG+aiqPw(t`3Uj
+ravbozvm6F#he at jFY1!z6<18ss!6s8vFH0me$PZ%%SFRKIUL14sa!qm*_<>=a&e<OO_Jm}ttwdWj9jG
+`m*;O at uGX7$PVjs4?$ruEH>-d3(CV+1n?1jL=|17-#pWG;y;=XczI?k*=Lu<Bx{-{%rPUpiD6_7`->f
+*uhTpSb=6zz=f7(@x5`Hb~HQ1LVjuvplfrabm>&uH(Vu|)9anML0e>aWaX4G2aCT!QtS at YbS?OHu;uU
+FGOGh^+Csr2_}w)5<d)S9+f6t!p+6{>OO-PgQaRcyy#4EAMD3wC}>B`sh>o21i6*mUus<|6CN%#tK2*
+_Nm}$8F94>$;-iF6Y}^)PkLD<blnWdRNjkeJkmH&m^I;K8TV)kSu(300se?_e?uq=sw%+)q{;1P}eYg
+OTdao%PjqN!)UbdG7JPF8HBbV76BWpnqe7)O^gI!LcD9o6%0-DTxYGSRcn$ys-5y$nRgd&w7c?JYO<N
+JaMVvBi{J#!NG+WwoOc`@E#@YTTn8gQjmWI1Xw#7PXk_*E2UaLc3wh@`7hL6e*05>|{s7Uy6*#!SF^C
+uZNkTn{7ONLJkMf2AMfGC0H^Iotm6Ww?RT*~edb{SP at A)q&8jvnY`kF~jEB={j2t4v7RTO4G?=e8cpx
+V$I3o7W2>8LiJb3&Dpu-Uh?IltvqDVaEX4mmEg6#Rr?>QzS^9Y9CE2G3zQ_~}^}xPvjS-qVDPnq{Z*n
+h`3>=uo)RHOc1*TKBX%bk&Abwm>xN><HMa)d?47Zx#?tyC$2>5)bjfSycw1u(ErML4X)A=2Da~!0hO}
+%OUk^cQnjC_2q4ZX<m<EHVVQg&NGIpJ}V}+(|;frL+a4+k9wrAis`J4T5zOP$D;QC5dCpOw4bi*j;6h
++YGc;_b(mF#1-~L*eZZEyP+6AsRQ$<^&}IWjadXnviw0!Sf2Vpf%;2INJqbVJ5wPmxp|H{hO$EYJlGo
+|c at Z~Y^t|{cSZ*jWs(7<jK7`9uhwkBg2%K}Tv%(}@PFUtz61{_{g2)FN7nohc6TV-XhmK75QjQm3I+d
+$3Uhp8A9hH`Ll6yvpm(gAfJyH=P*M(E2U^d-N!_51_M%ZRfXoMt^p*eFJSMS8_k9iWwi=qTzP{!e}P0
+O_5HbF)xDrOk#~Hy~Bkg(<LoMwpZR;kx3*i}DPQJWzOOAd&cPQA-K6ZFoP442bJ<o0-P{)4B?7ai`?_
+#}pk+r|A0=p1LsBKQVm_r2$7T5N$2!i#t+*c+0ylZhaj{+mSe at E3O`b9h?lSV<pE_s>OA}x-kBa4JaM
+Nov1$w#|iG-o8h}(P|LkBI$By2f+fk%t+Kyn4ZlWY?PqZ9x?u`${1;47UNr%que(YC%ySOuN!O*{g0c
+pez2*=f;^tdmUQwuVwPh!xj9o0ju?`zjt-qN1`H$cN7D+*EAZpclRWQqFuREB|UIY+vwPPN<T4non_3
+L{-di7h7^RWeY2GG#|@<}8B$y`5`oShN-_O$FBx8Q!^(&A5c!C8!^UpO2dzE1VQutZb!9q{2c&h`2Af
+PIaYg4UZ@(LQ_iAqMX@{Q96+d at XOi+Jk^)P!(B+FI~fQ`$qaFf+;FTD&k%Xn2-3a>$@W;K1RAS{l~2s
+UEAm{loK{i1&n=}oD4u$EVRKtg=ii$Cjsrh#MAKHdu$&ub|TgQU6>&U20Ywf!zhud7XWNqpNNCR5 at hG
+myfREJg40i!T{eNlXsW{&XU<mZ2_(KEsk(Mza&_&LBpdkTXeM&)J7lC_S)G~CFHg!&u0^My95}ecF2d
+(>|1Jyr5%_d`y*LQ`llV}(mW<vF&Wg552=_Or9gglVIx9dq8cu!gf%*w1j3?6mO3uKbs)_9T4^T at 31Q
+Y-O00;mH1*=G%uL<M%0RRAv1poji0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bWN&RQa
+Cwzf+iu%141M=k=+OoQf53n|1dcldTkRrs+6}`XC^p>+l`oLwph2;JpQI>q9JlGF2Vcm;!y}SXExHB~
+QV(hnKnP+ at -wB22PIi1yK#u<yRcy~B>spM4mX%!vgfj(#av21*;dpI$T<NzX$TY-x;**W+sMN-w<Wx#
+j2!Kb*UqFP`5ocYyfpQR%?O}9AUjn381vPpCWoTERDC07ez-x?JZE+a0SZyt_c@&2p&|+b=#H&2n-lk
+bWil28W$?{b?2AL&5SD-y=G++b6j*B+nKKo(ES-Gy<uRKTv&AJLa74Vq?)}qi#DAFH=&5VzdlGU<UlK
+V6%)_G<f(G^W58jsWuln-z<?`h}h_tb8DzGteGkZ6J4{!GkuC#=gT=S-^5@)`@<>6wu63mjw^U5GsqY
+CenC-CCYPjE>MaqgjZSZ5+19vZp0%H|sgESNkiRq4AM`cO~VSwnx9U1Z&#c8eQ at LmvA+M9z?*Ss%w0%
+LvDgyrO(D@)aZL-B;t?LJLEH!$ur}Xshp|xKXp3EZ$IetWRe{0zlO;Vu|G#=gY0cLo8?#Ue1Dijf5L1
+Cp6u+hF%#L_>|2&UW_YSBIKLiln2^fW?fu)q at mYe}V<!|DysCSqPkH<FIY&E!CnR at NKx;3n&pCRJ4gL
+a9O9KQH0000800{-FNM=bUne7As0QC_704V?f0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1
+!9da%E*MaCzNWQE%He5PsLMVAU6?Q-!A8Q&tb?5~nDzBt_<78;s0gq_a(g76p=WV+{T8yCWr8wxz@=F
+kqWrER%QNefRN>q&?Sa#b&d4Wh)J{8565gY0LPXQL?fy^WPJei?uL96$z^fk*OSJQdrPjnjo-xa~d#w
+<^+~0DIv3HYZ|m`or8w_Tx2$YhYU)~KDn8()=GQd7NiAI-YZA1J|MCi0;8v6%SMb)f}n=c5CkqnDav%
+Vh9XxwHR7QOW8uNh?51qY(q>|I#|_kDX=R0MQ(URMl5oK at tMsP+KxO!1reOgOB~s9kW@=Rm2~qf0H2w
+4I?W_1}l)j3?I0%9q=4=6WJkbC at RYD^9Xe?m`g{2`((SPBjZ0ytQ%p?Aw^}g+yTDezDaMvxZXQGgsJd
+9JMA2{bsa$^{o{Kn-yGIK(tSE{&ytkOoTVLKUb*B}hTk2qH_y98EpZADf|u6KxQC^eXdYl5c2soF^(X
+#uTbe62*zDkF*o`nu at krU5G$OD-(1I8Dg7VYWgL!@dZ+bOh#Dnd%GrwQ!j#ECx9Z+L4o#P0$o!HBK<_
+EVlD+{k$l0cwlPoaBCx^Ad&7Gh^4TG65jEBm$DDcSf1UJCoeKESSF3T*&2RNhI7dmETmEl6a3^thS(A
+eHTMAuENO0$iYL)9rt}#q$Xhg$4N=_84-8NZ(9Xq;A|zoqx$Gs*qLaA0n(cdCu2+b84g_E#19G0YD4h
+zR2N~ktQDEknazqA+Uz_-pv6t)<c8^#rExQ9pK`UjO3faMN9WQY+x`$0tt7{T3)W`)sFvrktS`;kW)p
+Czx^Y}9Ijh;@%zfTfMlUu7J7n;!G9##hW@!WEZh<32ANug}C<i=rpQIOdpjC+{XDD;sc9a1QYdjN6TH
+rbwEpZ$6{zM9N#uCFJQb~|u!^Wh`C^l4D%UpIK;lI#To*$p=uvGDy1w4MC%dHiE|1SlCMH2^M3(koq)
+IAt7#WpyV-_6fJ8q%&$Z#=?q5pJLd*{|$2WRL`z2UHV(9`%(JV9rsGWBVn)RiAaL&uW<u%hl{~X=(C+
+YtgDx}+0bri2(wy2PMwc!!V5YbMZxu^-J<q=SKMYxESl{Zl)9lu!l7i&WT2G!3QWl}>R#7z&Nf|WRh1
+ at sR#P-c2txZ=uaRxL+MPoOB4gVaH0T`jJsjq^y-~D;t+}jd-)2%6>op(<ahKvfW`+C*HiTgr5%w at 3J&
+()SlAlH$0db#Ax`IY;<M<ZCI at -NB!}4|_kh+Oe;1RUl_8k8_u4{g0y at z|$g-V!&!pR!bk<#`{r!DIv<
+3ea-&z5+@`KA-2r_5aaAA2hF%l0%#!n~H#TmN>j`yPMJ)OsIOem^yYuGu+3A3e4P((sIWl16M=w%To=
+18SI*mnGhmTjL{mOy8hbZ#qPJn|-*DyFwk at JTRqS1fB`S;$Kupy^L!n9%)psM(;xZR~F-Gk8ah{^^zC
+47vROHZj5g$Wb*7UWVB at Oor1Ob^!3SY%wDsTM<aENrv&jGJGpgX>Fu8>-Omn_uFn6T%EilU6Zx2heZG
+<dNgi2_-X7Ix`lnQ7&voG$iPS&to}GvHOZ+vYTdAr0O<51c`zZz;2&pnI>Bbc_e;8c4e;?>d*7G++wD
+-3{9Q+MXO9KQH0000800{-FNG%w!*TDh+0Okk)05AXm0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y
+-?q5b1!FQZgXg9b98cLVQnsOd6iX7Z`&{oz2{eO-C at pP1lzSh4q1}JfF<o#1M5%}hHBHPU|BLO*<CU0
+zfbf>tkm|J>S9YGAK#-$DJfJ2VVIPrEHDg#XSpg2um`O~X)tW&KE%A at nk(r;DS4z~3<Wn>FrjC&gfI>
+$^&?+Is=yB9`<`VuxqB0=egr;j_ZuH>ci+POYPY?)Uahx2Y_8V9uWS1gY;S}A1BCmV8l(O;E9=cFST&
+37 at AX$7)>pgTb|18C7ad6Wz%+J?7G7$@q|x1WrFgs*n4w+sL0UaJXAxS_vq&(lAt(@kGLd58)liFmVS
+YISJ7P?1f+<;H=xG#5yH4Xhd?}Lz3owreSWy(v3Z4)mCLyN)T-KY35<)$3c>pEx=${u at aaC$q!rom^R
+MEhZJH=cWORJAdgD1T^*C3UtF;0y-Fr!kGJs8cj*SY&mtohKD#xq9|HvlL54)@x9=454~<Of564`>?s
+Tr$zvy*t{SrQi(q<TOIwC4M}~)|r4>*|se3w<|v7GPVuF4D%sZy*`IFnZR<{6zpka!wx<$V+#I2t^{+
+kPc>-Qt=U4ThzXhx4C*3nt&Z~(D_iLm76#+6kM-y8Aakh?6(z1U8Yan#vG+pVH4%E&yl(o5QWyli^U|
+K54{0xHes2j?0~8c`q(UdK>0B*n3-z-2ojfg_&c3^NG?}=#2WF3`PPUcrUIXVe2xhr?4%oqS#L=%mr0
+I{UnHW^!RBd1*()aGuJ-l1eRreN@&iQlgY-{9=ojZOAjdd;GRzqRVlRxjz1%=ZYR?_8I-BUlDQTVmlc
+;&Z8U+41Gqjf}~j7KC*@o%4-Q$z<XQW=Hxi0Bjsy?(D=X7(T(kTWi at L4@|9on#rS$UNuheVn9ed3aN=
+_uzq^DAMU?`-Lca5M2^4%g|w7%2cW+=@H5K>>p4|0|XQR000O82?eW2GalF-DFy%lXcqtgEdT%jaA|N
+aUv_0~WN&gWXmo9CHEd~OFLZKcWp`n0Yh`kCFKl>iY-MzEWo0gKdF5E$Z`(EyfA?QOxacZjics%q=$5
+_Y11PYjMdzU at 0z;rB+U81qfTYp{!~XZ(k at _Gd+Ub_3VSY$t-QDkw_f79)U6L%@wYrro%Lp%<T53YKsu
+rzgnf;!Sg5Pt+>nb5_#q+vgnc$j9D%4_!5DjnA?4DIcEmOrGdK}FjbfzC0wy<pCp%guhX~~#<ou>G_Z
+Mi6zRH>m15OkkOwr3AbhmrP_Y)e%SoDOgKfr8djEEbD`?Fg$Bo=j;Osrb!;z=!XMB3zN1x?=VXek21I
+ROY35#{}@fnJcAfm9t1C<7wiVnCfKI98skOLytwvR`1S!Tqa}**6>^}W3Vw7R4MYYu60yz|6sZ9u+jD
+`;}zFg7AYon2{_Eri?329Sjj4F+;t9gpPC=QpORHTy4wsSI2F at rQRlqc)hVwaiWL=?>&p>)hLF;xf!I
+cub&kik_IT_kKTZrB)e_E}RkURBv!R-HD|nvq;`vbOQE66YtrT$_kD&xxjfc}cBqs)Iq*V}GpyAua at b
+W8oju{e4G?Lx(x>Zq(c~=3JpL-6>TqJ;b93>bw6p2qMt01vKk)J-8?Z7h>#7LlA^aLkY0f(dO`gHxm9
+s_ma+II&mn-QWn1bOC?Q+0w>ovJzSYACEeW1p%mn~dO&gkVZ0WJsxmbSVMZH7UPAs0+V&_E``N9S#3{
+!hjFd;n`;y^a9K9{H!3I_OO4ZF-oh=;LdAF_t<evzrsJqJ=%*;o#u9>9`2LGOqH%=Om?-jkAznP+9r7
+Xe|uufJ2_i#%u^||>-aNtSwevQRDO8eJ{w2^1N?P+^nog>wRH({B;*wy_Ej9H_s$FMsOzK*X)JwzKAl
+XWBPM{4!zNhg2TcId(<U74DQLprb2BbxVeGgZLk-`PS)e%7UA0$z2F-JSbVu=kT%7=n&4N8xIM-vy^)
+rFa6!n}jIU_6oynVHG9Cs-6Jy~r|xadd={PvCuPMI{@EZf$#INCvxIQY}|WJAF*-`b_s5WIk8PRL?cs
+9!PvvEZqhV4^Y#bw$61)#(!zU!dO2I+?-&KC--(ir=%5c)SbX?&T<R$_6R0>vapma#A(j&Sn~^!EnOw
+FP;`haHYc#UQhO+P8}%?9mH=;J1$^51Qq>GoxX(?NiltG2$7!`HxRN*hJ~#9YQ??7^Nn*XJ8X5^2;d>
+)1zBSk at +K&LEF0u*x2||Zh#-TNAE_`Sq9rym+^^AyWeg7krXrBFW`QR#R*()2yl$(4yi`l_5+OnrXC1
+h{x?Lx3Z|fV*U|j4hPt*8WCTCbqbaaV#`TpYfcUL#-<VmP*rwOACVC&Bxu51WWyV00OXRR^c1A9eS>0
+~;_go5vI2kq0{vVrUO(^L=m(&)yC=W8{u0fC&K+v{O^QJ1Lo1mMN{cgAgQd at PO`eNQR4s-TBHp1=p}x
+9iVG;O|y%&Q=@DUcAyZ<h!3-h0`_;Iey^g>IsS4maHJUCR+xsgrqEZMdc&uu5_MUNp*gJ{2#Bvsd*L6
+Y at ++vU-aS3hSfI&KbRD%p*a>II>hp&ds(-Qd+P`v#Y33x4*kdChK%&97}5u4 at SlHquW|pgnR`z~%do<
++30e at 8;oB6)9~c{ljhiSpJHeFCVtb6{)tvKa6vDvAJwKfJE^>Sxt)OAK-+zeX4X88L%rL?cagZ?}-5w
+N1 at w?B}uUEE;oV0LeK#D)I+?L`7s1XJ*e9tzz6EkW}?<c>I*Vu2T_1H~}Yc7?(z*Q?eFuL}RUFOK(@L
+T+W-sAmvxGXFeQ>f80*D654;f1Zt7k6SgFo%11-~Dg^omzG~eq_IU?caTGK=wDg6#n<;C)jFqo_9W(=
+jsb`dwctad}So36^6J~&<V-XY at RkocElJ@p;k=kCCO{>fNXP^JWS3D;{`O-oFY~)S at Qis6NVK4TMV|`
+YYK5O?$ln)gUz=)&5$|as++`hN<Ln$)1MtZ2|Nz^dM4?p3;ljG%}Nu_F^lo8h4?}FE*n3XEg#F`|B#H
+1KPMC0#$iW=*wXw9X3w&!Wl6=7G_uZ_0w?Teo*#b2vv;L<@i$OQ0|XQR000O82?eW2bvZ{+yaE6K{s;
+g7D*ylhaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWp`n0Yh`kCFK~5iY-De3E^v9ZRo`pdFc5zCUm@~jgE
+8#2(1$EFYoJX>nr#nVF=~A7L}V#Qa at sKVzfULIv7D&OI+z|3bf^37yPvL<tVvN+jcF7V1!478Dnsa#m
+b@`gwD**hY{xW{A|;JrYgt0UnE^$)j-m=NUTdC}vd*>*=k~t`x?fF~t0KS2Z}Y_}CHdlNxO|U at J+r&p
+_B#KxxLZy?-sHu%>-j3b|2&=LDVbeQm($rQU*30)vL3p4q8fT(ww6L0Dva*cJITtNLk(6IMbVm5t;tF
+Oe4~5=Dt6}CAV at A8of0aW4~(rSVhz0N<apS#kTy$=FpQH+vXBA}x~+m8lZ`%>S5gt!SrUW^f_Ry+E(c
+79TMgz+6CsVmAXJoHl8#S2qGD~_d+VyldHC>%V*gokaRTKz4j7!iKbHhQXd^cuhM at 7L<KA1^<|IG~&z
+=D<TYxZys#QKr%zg`#M{;>dCV9Oz`xSkjgfRouz0gM{UMU^Rq5c*5hrEyZ{6%UIGmx23R)7aM_5Cx3P
+?TvPUny at OS4ygQGUwc~si7oSceh=WYTKQ(zHrlH(cSov7iNCQ#`x1aNutBJbOB&6U0qWm;MK1#*2xO(
+-UuZXwOGT^vKX@$v_?}z$na-j?<WuRmad0az2M7oK6*)wQCQobzfKB+Dy$1<+Qbe8CG5#=LY-}3uj3?
+87-!XaeFih_O%_%VqcRDa=m)195lx*Y<8n<ohM3siZbdsR-0{|MS+RWmU3bdwwB?|imH6O0eRF662d&
+;^;KF^M3){okLpWRb-_4a1+qAxOaRArw)<C(0*iVNt<Ak(Pw$!_3Z=t+~^#<a<wQFBy4E=1Wy^uhZfq
+>qMr27hw5k0iEtkGqBh{!FHAeto^pZk_4XP2U_`LVM<uSAc at ak0HP8nF@bMa0N7iGBl6O9KQH000080
+0{-FNU2rbsD=Ol0Mq~g03`qb0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZX=N{8UukY>bYEXCaCu#gF%H5o
+3`O^x!Uw2001^Wd3~UVSQD_{=QrbkegUIbmlEQ!|KYc&{z-a+%L(#%$Ezpt^E4ZhmSQPEx2|T?>D6JE
+emFDEpMp9%K#hB239CH224<-aBaIbAMrt|5C%JpdAGsE*vTmI)>&ixqQGiHTb53kILhnk&;!6-OzZ`h
+>`P)h>@6aWAK2mlEMt4Q=>g_C^&005r at 001HY003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%p8RUt(c%Wi
+D`eg_1E(!!QtqcmIl0SrQQ{m4TsB2L at OWh@o3mS#El1EF3%XIne%l>^PxGn+k8XzjycE*@ZO~a9%X7v
+B){dsy5bv*pX3<Lmu}T?B%y4X><mSmbuv at SJI&siWn<Gjoc`Ox$_A1MczeSOMPIB<w_92+Dc5i!*t2O
+ui0$&yd!5t?qDYfA(Dl$;5<$Kp0(f}3;4nlC4{QTpte}Z<Lbj`>?(y709XMvHQFSdw|vU}u4U2bKoSJ
+$Ss9i^KLZVfE(ywk at D4stt~44R=TA$}CNMs5<*Svb!&rz-RM{NcAikZB*1Un^oSd+Zexxgt=qBB!=Zv
+Kw9#|d#9)VHjLEKQ>v!Q$-y1e61vK`w*(=j%1zP1gr%Q&z8q4Dfe8GS%<|M(lsJ35 at 4cSP7Il?)0ie3
+N96fkNH8hI?3CCybYy<%8T#x4LTAvV)XD`oH&vrx$CD?VH`o%l*%<ZiQA|<W+o=i%IpBFH9w!Dr-fXZ
+s-5SFHlPZ1QY-O00;mH1*=FTRh_A(0RRA+1ONad0001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaH8BFJxhK
+a%p8QaCx0l%Z}SH47~d*h at 51=@CPighxBpiWlwu63PG{yM6E0tBAw0t{fbr+JMkh#%M&Hej5rj#7<$m
+U8+nYVHQ0U#k-_XJxRFuka|NwETC%}cFnZgB7PYgC(KsrKPBdD>(c*>wD!C!}wv{X+20PUHh`tT6CVR
+R-8BeVFeZaF&t#^i2LfbE2C#9ljoFSU-)%mh~Dj-FRU2<Z*WvvyV>ndr=oU0Pe!9;>*AY at fuZ@UoT55
+9x-6TVJ4sRc{IcHjd;8i6M^zCo2x)!h3XTp}8qY`mu8_ZUM|o2_&54naQ>!w!Mc#QdH%<qcQbkw&GT1
+YZkJE^5=ZO0u%J0>pEz#Y6I#C$Bb}`ggE?f>OCMUBS_~5wG6UpY|*Bv+mDC`IW>cQn8qN6Fi$Vo9pBg
+aG?@0t(U({dDdG>IP_=snwV;8W|d2tY~d%oY4|UJfAoXH9zA25zu|_wM;6DAyS}qO^QT40#35p5PtPy
+G<0FB*TN%7)<X}ikMZZ}-=v=-LeyI5=d-aA3evicetbWJ)i>`b}|G(mye0kvmP)h>@6aWAK2mlEMt4K
+>vZq6M7008d>0018V003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%p8RaCt6pdA(K3Zrd;ryz46#K2fM3wA
+TPSq(yt|$+sXNXlWHMN|ORfCC=Y>sfR_$PWnJmo-EGpaArA#TW3!oW!s0|p_D+U&bk2V;H~Zh%JI8^h
+MvijH3jsBYTKaH6woQ{vo=z6)RpoXO=Df@={)lUJO>$GJIuzi19_~&jE-MYV;d&Cln3Q;#`lg8l!yDz
+U*gX!%WAE>ANIwxncro=tHG9Skf9)@@Tgmstb&@*xTpnV*_qaYofsdKsZpGZMPm-Fb->!q&|Ch%S1<B
+}A}*&`H0-(jt8><g-M!WjE8*08wuIn=BlF~Ud3I at xf=U at lp&Gb1$k1PbXVch-^zcn#t?DE40bIP>-NH
+IcCPXgru>g%`Aj>By<B)1=g5m*O2E|7uCLMAVOx%ovSd^y}Ogwd8H^xJkuGPsgF>m%o at U6xt3=E&%SG
+ at E-F#fpo52G9#JBKZutMAs}IvOJY<RN0fIhb~;IO+Hu!?WDhCKR)RAeNHk{x1iV96J~M3x%Ut-{>Z0+
+7 at u6n2GJ(uF3{Fu8Nh(Yf4nio{NccNfc_2cYn#2c$>4!-t*M(L{=q%7^ZS_auHc5Uyh_P8TJD`rh}U#
+tchY>shUQt+VWKm!G{VyZJ%ZGrbg!X-_;<b07^!1Wg at 2TsQjQpM$K|$UZwDM0Mi`b9M#_S_#cw>ZxZ!
+KNn$VbyMg(}|2%kg1HXz)_7hM`0|XQR000O82?eW2^O+-nf(iftn<M}LAOHXWaA|NaUv_0~WN&gWY;R
++0W@&6?FJE72ZfSI1UoLQY#aeBT+c*yX?q4CKn2R%)xZTAbuo!HL?Ot18fZd|k7wm^_VJNmTQOCAYNu
+Esp{gISp%XyphI)^oinXyDsB=wLY={{kz%NZ+FDVv)s*4pLlXB<hA(P)%Zs<>UsN at VLTo3XbQw@an#n
+QTh27Vx97jF)%PD7|G!$8dqklH{HE+Da`9d%LwO)vzD4f3dcygfVQZTE^GwY72uuWu;s$liy(#Y|o@&
+rD_C&1)Qygp4pWaykrY*U`jT|;+tCf*|k;$a-?b4^rPW7;wnj=KYvbwusK7{uR*YMY*Z~!#PNjYt=?W
+GS(Y(;kT~N7iJVSoSlkz4ZP|+o1=u1RQT7YgT7v35&nX*&fE7_O?$%`Em=OuWf%Y_)f;WHtHMVRaJh#
+B5GGcGxjj}{FPQqWLnwuq^q{$r{(CUM3MQ55!i%M{V+MZ>uBRpSokc$X5(ynN}lky=kPO>~ps3+{&B4
+*Sr-!iKlz1_${u%%Wtvn#<2uLW~30=bTedH?`^gAXg!-mF-oz(d-`3XS{S!hueiQ3Pc;F*q;4Hf~<Gm
+6dDo11oD`0-MvCz9N7~)fj*-3iC>9rNP|*)`Ark2ZV#yF$L;q4=1E1T71wxN7nGFqJ7c14y?pyfN<dO
+qH!B}*8?WO%{;EzN>!yH;}YazW<AP*6TYyedqZLH^t=|p$f%}U`jM=6LI-EwhqZ8wXm>;m+i(MCXM-;
+dmb_8+4^lfO_RANorFDxf=~=W|W2|#FdFl;95i%j9<@vI;trmICWW81z!s5cHs<k3_?@8jvmu*v6r79
+B!RQH#`y={1Ndx6SfV8e9-uO>;Jus at Z)bvS<e>g~^rHzkPM%;@D#XoL2_IN32_wJKYP<B437Vk>UAwL
+0wxrflT3%-z^%az*CqD6-)^IOg8e2O2oKN9N{Xs~chS20U|r6GxH-g268R+#8rmk~{}&fXV0V)0n`65
+w!D$@bUp%QMDFd2Us6ZV>pa^=pto=NPGpXghlk?fV0a%HWa7a6dV6>TS^@dy#LSd(u#g$Z~xx_`AFzc
+IR2a at iSq*zB<&)Fw;JLPfB$wmP-HHwbhjS9xWK2mgq6g+8};{9w^vNRhAjp=(?AfivwTWFPYWr?*}0Y
+m(Me7OU=j7&8Vuz=7I#tRAsxEC_w>NQZ_~j8Chd6kn!Ll!O14>v#@#jr01B-{an6uSN=#l_1Nlh_msJ
+DgkgG^Vc?(_(=cwXE*j1*J=zN6+kUyl-`#vfU!yEG%4W17k1Lc7a$UfNZ5v1>(@{s86g2B)|IEG`_%{
+hj5n>~W$Q2;sH9n5im at afvw{t#{dogUGJzBJ-_*duroWJc`Nyc8(9PmN%*4Y%_-Q0n&Gl|K^Wo3wB-`
++K!;ctdPqp at M07ms~ukkCWh0^vU0^xE3X%C{>FuqOe{Wh&hmr$VS>cPmQRSQ&?zMeik1b%y10uP5hN~
+>p}wTmRT2r=5IjJXn7C^pBIOtG(MN?dKp+yj$TVJYROUnJ8_&sLL)7LU)*8r(OU{MA&Xy$=yr_ovd8;
+5dp5<@hi(mWExY0tj<MN-=7nlX1J=D>M%+7UAE(9rno3v9szTsH6^xZWofeS8(5XgTqOg5T)L-T(>w!
+oKNn<Ta$*q8 at ST5sTqa8y2y_?L&C(>c<x`r~OhMWu>cO=6L)X>bd3&PN7(w}^&2Jz&Nob|iI5eT2_fy
+7b5J>B)?M- at 8Hky3k{9})ZC3TW;L0Q?4UX4*Ao(}x8i*XYZ at PCfy-eM7T@-R~nOyM))`(PW6K^L{@q)
+(4dJ!i|2pFjwqCKOeCRMl at NTlgaWN{=!^3&!@ffPX>1^#gQnc^pSDro?3?%kXegDE at k1<AS8f-Hz;x>
+3Qc{AA<8+n0nUmsJB<L6G;Rc(M;Gl(W%uN;?OO-|X;|*8HOV?foZSWog*)a1{5e!|WZ4W#Km6^;*+1E
+csCG_xrHu6jj;s5ytO<kZ&Ms?NI{rWde at D}D*(uhW4<CD|KJ%qpv>qSqa=2QbE)s0C^=-SKC=3d&D+$
+Ogm9OmXz|*n)x5EhQJ&dnVpF;kkRZAh1+hOHRD?vWc#ubQA5z^RbibdlpwUeQQWQ1U@(d^=$K<?Q5gF
+U-n`lnyz`eny?^rrzenjZ}3=SR}v0Z;mP_XM&5`Lz{{7GjbB=LV6RFEGl-4FjJ_PpP3$x5h?10EXCAY
+AgqP<086~XET?xZX^QGZs1ZYzwkmdA*MzgP%MKimX$0lT&;}{!eCg_g<zK(!`+GlGn$7Z-B$)@rX+|<
+nvvTBjACuzq!nD`8!c_97{Y}Gfzk{Y(moAt5wW1nLXJ3v7*YvZwNSoa*9kumd0>!+SC#A8KtysT3%NC
+(O}hqAyWom$G4wLWG~YqP7bTn2Lt;>|pL|9a=E7w7qmReIyU*vc^Yjq at J{Ax{{$~c{pZzT|*@;vk)tQ
+IT-d|vS>+{5Q{XsyA1!=fLpr&XO=NA8m+(+iT&V8YKIsu}K7B4Orb}_4^h<UhDenb%$;77M4<7okF at I
+WY0C_Q8BqY=xtLRonv9z}XzCU<qsBj;sjWhxlz&dXOK$2<$SgCvI}T2}c=RCu`;6-47&L43L7`Ud{Ky
+u96%#)}zxtQr21j;?*r7OU|K<9n#_cc}1v3}Sb23%MOCgUk;|`4Vg*3hGk)>2?9_EG(;_{;B3aI!D60
+SW at eSvxTH~@$J at KAJUEia1Dev>WXhxh%)e)6?U#&%mYJ#y9i^AX9oEk-Ves=w!rF(KuaxXY?f>!R6`I
+G88 at yxU(khJV<J-02M%ciqr$c>wDMbF2u6T3G9bC=M&YfGl3<%$!9U|7E}aE2 at m*nTaDd)TAyQob>Dg
+zrgN|_W1R0^^s0rDL-zgbtF%4lI7IxIg1i}sR`r+zx*s2l@@t?5yoc-WC<d)%C_dDU+r%_0tMxTKXeV
+&TY3V2C}Nb#78yS?clEP*Gz2D8zp(O_}N2kszkaSf^k96sQz#4Ef8xXOjBq}}?$>ZMDyT7!UNjo9EfT
+0HP;2fu0f(tv`5Ph{P9FJckUnN>j2K{b2{h`pVbWr1T%9@`>vqnIR%C4f}!;I^Y<o_o-^gVy=qYF(1#
+0rS>K^9}YL&>u1IfF>JA5u12G_H8yEevSBBjqF5uWGkDmAc}av%tNAVC`fGRA>p at K+NV9f0^ToqLH?J
+bP at 03KA^DNTiiw6VFuBL2uJSG&1sdKTg}3qxebeG~9OBxH3W+OMPT<N;hcF+Kv{ca-9$rnZm~UOVyM;
+O+Az=@V9{;~9I#qx5YK@=Xas5=c&C_~|SM<2o at mW;Hp&=YWnq}E!Se#+cb8wVMO&X`DZAATR_W?EAXu
+dXXK8bh1aXj1TEa)Z}Zs~gk9sY-><9|=~mK<mg;nTHz<Hy4dCEOEcK<w+5eGar^-wfJe>=linO*RAA!
+3`Kbzbb<`hEN<nwjK}mm<Z%m<(i|NJI-lr5apA;zCID!h+Tbv9gGb_T9Slwi2lDv@?TI(0|XQR000O8
+2?eW2E8g-aA_D*bTnYdHBme*aaA|NaUv_0~WN&gWY;R+0W@&6?FKlUUYiw_0Yi4O|WiD`el~&7c+b|H
+k>nj#2f=H;VCOHPMixy~r0C^l5phtnWRyGkzbV#a>|GrC7lC77W=wh1U4rga)N##lwkfwQMDurnZyx2
+-*fGxEYmBG~i4}yB$@B*8$)IpHj at T7@~9^~rv7t=TcJGx_BU^as%Y3$#6__()!{E8QXla-kT(0zUig)
+H0qs5l6Mm0()K12114FyXd)#kVdx3`08uY_&pKY9uhoX&qFWmup}~7JLO;CAX-|9%K%J(4w0-30(YQu
+>fHK=G|>BwJgvAUB(|=Hv_Y=^f8;?F+l_yetx42b0YaxafOjak<Xl{q{943mQ6PHF=~I?5r(LjE+nZ+
+{#IdHvVx=zcgrwNRzhlw;x+)^SGYBB|NL7isk%Ulag9eMio)FeTGduW-5^}(5H6s<SsWbLdD0|9GvfJ
+SsG*bwY(jt}fd{JJ9w?SsYUgSU_x>n at 2|QM2?fe3+x|y|*Ut3-W%DavA!;7l08}x<d_71mBp23Ex%o)
+T=!cEdyKPZeVj!vARhV^kX)-tKJN8IJ>tMvS5q)MKeHJRtdWeL7c3BV)UFA;Wl`41tJ)l%R$;kxC=0H
+d_LG>J?UwP9vJF{bI%ts2Bq4Vv&d+zk2E@@){L;%i<q;Z at s;ih9saQ^oFUT{8zl<p1KO!U?Rkl+K51n
+T)PbNGDY}cx7ESMemu2sGYUEW#pQ-FX(9G83WdSB@;HT8z*2NlD;ZO{Si;b9Bn`F`9PJnqw6Cz3hM#v
+7&rC=v?roJcEXcT!zc8b<x=@$;gjJm<1I6r=~Sny*E~MK&b<(Y7uptv`AP8p|2)653|+CcK-@;>4y5m
+JeMPMRSIKp+(ML1vx3{k7_QK3{xNDM=?NGNud#flENEf2B*wH;=dziSoB)Lw#Oi?^`CA2qnqpb~Wbsf
+_QMGa35w{H at B=i2C@%_p|=Ujxl{qW(-+l9U#7xrYKLcK%39_0}96!mVfrMS8M%bw~3W#YtJ=kf_%tpr
+U>WtaZjNl9NJC1)VwC-PwD at cS)XmbxcP5ayseWSIMNt{{c`-0|XQR000O82?eW2Att<ja{~YX7z_XaB
+>(^baA|NaUv_0~WN&gWY;R+0W@&6?FKugNX>x3DV{2w<Y-KKRd8Jn0Yuhjoe)nH-xP;m)c<pN;g>AGj
+Shqp at Fc`xqvAk%prBssF=D**aWGiuOXA9FyB<JqCU*DZnYE?s?myK;S&vOv<R%r`tX;jr%p8NA03h`S
+Qp=1=b5?0i_+bh%U%r0!X)>1`LNd~eGH~FMioA=D{IneH&iHa9<_^d1)+wH at S4qoC3&8WuCBj~SpmFB
+G2d95^xqE*F=frm{Yv_nSVU at X0H>Tw*?7bx*RSngnj5LU>az%V?`S61m=hC)ub;3eioNMZ9lF}y10uw
+`~V2fHTAyjVQx2E(x4!Nq4KJ3Fndu)n>%g^CO>j{Lhcs^;X)WqOYAfe-hr!th3|cEM*SqX+@)K`vmQC
+1FVkgz4o7;A_QJ96>lVQam@@OG{RxinQtgOV})&2rKgnxszQWbuw}&`=x|*4rUa5PH=;oPp)`ovYDBg
+7-rx>*2-A2 at b4JC<uLvmU at M9gsYz#I6I(qun8LOU6TE3ZV`jRYDEC_fQduAs;8^(9PycU#;Ihc+TZ`f
+TPxj at Vz+<uq-*4gSrWbdBd=vbNCIAVnul&LU#dDQi?_EUaM}=zknp}nCz+1S!O81st*2FUEyS}p3yPH
+9skXbb~&=ITBeqgUFzP0e>@lI={hafn_&?}s38A at Uwl`2WUU;h}$VGd9<b2ASX3qSm_ySr~6AD at P(v@
+W_4=DM91*{Brab{)cBg|Q|%?xA!Xe#`{TJmkZqyykcb$SFTgk*4Js5~pLzv{wgE1D*{$Vggxya1SJLy
+K#h}*=<$VSn-*y8v8k0Dh+OQoT=_x94nJfDh_FWye{Aor+Vn;H8XCgl4H|#qUAHwy9E;*gKkpyihh1z
+e+|u5+*F)z6RN^cXgcl-_ at J7qkeAlqzC48M>OfZ<DEy?6jLfKUGVWR7-w#P#x?kc#i|X%!lbt{6quO#
+gXt6oOFUvU1R+Tb`lQj6_`z8!}%`0@?5Bh`lMB-E9ICNohU!LTse|>D>J=E2d6hl47>cguR{=9J!%=t
+H0XRc}=V at qr_0(FC9!ZI3cWF_QgXzNf$*JHCd<ZPdiqpbPlj)pagle5|(;cS?IN{%Z)V{GjDIGM)-n@
+i-}#-WXr{Iui!YETQbZz$5MP-7%%qgP#9f>X~aX#GCY952itP)h>@6aWAK2mlEMt4JU`axEGN007Dt0
+01KZ003}la4%nWWo~3|axZLeV{2w<Y-KNSX=H3~V{2w<Y-KKRd8JtEZsWKW{%`al2nU1MT}R1gx5YMX
+f at ZQw8z7qu61Ter3dpoX#l%RWm!#r&(I4{;{o6i3U!#vQPttP^NnLC?ndt}tB2zpc&;7zZcJS*1mZ(&
+gk0-3M*}-?XG8pW!rA%{`yw7AVqUCz92TK=fxz_S=VcCEG!;X)RzWey$pYZQ@?5!x-l`KoKW`CHA@~h
+?AE>!tPc+F at vl4-=NGXj||q+#%vX(5<VnO$)$PS{#itl(?lWx1ZP0yxUxKQGfmrCBPC)pA~0!7P%mlz
+tCTRhbG6E3hhbVVKJ3$2&TmJ$P((rC=ks64q{HB1$7B>`7>Y3&%`pK*~8FFmBkgn&;9iM9SvtSHL2my
+HyNUH81U&iRYyj#sDdBEQ at 6>MH;aOAqWTc$ZoDLE^i+$qjwKi2gfW!$%N%HH_>1)91huyS2&xC1%HyN
+azLUGr3Kt4$=P2@`OMy3e@}ow$KV0d!64JBU~!yPw$dVwkx*&N_}r)*6c at YSgMnWcT9+#PP$s-tSqP6
+61&9%{^_HXB&T}nzy2b^OPKe(t;2+;_l?}`A`UCBm5PPi$7pHK9s_b|$_|+iExiKgXApuZ**7zid)@Y
+ at z3$WFOGC+q&F$HC#<2sE?+*T at G@Z2qwyl9NeZE&mElH0}1sq>uZ_f3rqPFaGPO2je{DX@~uQjouiXF
+Cbs;S&KM^irz?ynzA42yn*1Im5bLa4=5tb0szKV?EPehO at IXC&Ot+H~U5v0vXyLf6g{?4}3{Q1|9- at +
+BhB=k!KTzVo%_BG^<EYuXv7Tw$4PSx2g<=z=x6o3t7RiRF(UdnQG}=$Ad7n6q+Jr0`bjwzT#_x&Yp-C
+5}kxrr0 at --Tt7zjrr-)uFV9_8$2Ar1iK<fmT!|Qs4a%V<q-xZF=fxlmLAFFhfBTcLF7(m-7zwuRQc=g
+JQMch;3kbckhK`XIUyy24^Du6hkS5M4Wcs+63S*hfn!~}BlS*rF|9s6BB2T at uglF2?h at S&-?ZudHD1F
+i{@eE1TY+&?=qYSYfx&8fe#JnI$AOJp96ynf_p%*K}MvJF=;=!=lY^p0Un+22&3XHOX+hifgpK9{5D&
+~;aja3+Avh3(18oVGiiP_j^jFkvg at hB{M&6u5fx2hefr4Jw0-d%SD6DsE1ZQKlhd at cakI&pSbaDsJ4b
+7^1~FEOEG-N|Z%THA at LK-Z<RP*&=c)0Ms<a?C=|gg4Z9cr}EAf-r&MOB(QBYY0)MF|K(G`aWvna|a&k
+H>{trqmzzX){tM-d^Ieu7N{EZk1mnb>+S+=))HzVMyFMMvDrEGIT1_C?j9~lwUDb|Wg8L%g7t_BD!K)
+|M3<L8T|Z2>cjL3y#A<?O#zrKgG8!@V17CxgOfJL{%FSHbs29Vl(Q6k}7If5q<o~Pr&4>K0UB*X4{{o
+GWw2%OpRl&)IFG6iUL!V_q*>B8{z4=V?9cFAl=(V3BV5iR+4c}15%H1M!IpOp9dzC{nC|Q2=nxPKa*G
+CxtN72{YSi7Zc%;(y+(a`xF8jW00IL+_kv>(~!%yx0j1=Q`nQgH7+^<_MK?nR-VHnSe^rZ>pCxv$Hj&
+x5^nB2~gEbfNOCuB*joJ6qxQ&2rGyfzxW;00)0T!rE8*G}-}g*U(+~uB#6Cxo@|jfpyt^%?h#OC{2ou
+sffb~FSaFfaD?~7OP>Yb;#Vp-9_y3s2;xdxN0I9%z>u&<uTVfVP6q{qTEGD>_9(B5HE8#H-KNa{k7;K
+!aNNV at nsqG_rPHQ;a0A4~(BWhTDvVLzLeS=_5LzZ(AZ&VJZ0G>iC^ay<-e}(vUiuo2!cYVRFNg61y<9
+fx!=0Qx at mvzGlfcw$hN)yWYw;cQiM{<PWg0icw9BVg6nux~zU=62!uGWvG<?ClzN3QKqJ|;QZRn(rJ?
+MW>CBA5&Bv*faV8_un;K2!1Mfj^{UDVg%6W52jDqA2eIM)LcqeTTRC+Nk1V{DFIG6iMHOhRWU%MSVZ!
+^QRWfhZG&c1lGeVQ!p2LCSNra$_S*lVU~FU$WquCsyca2Q%-qdepq|vmP3)C5%~6SB9k?rnMFB$a3)G
+c`iC2AT)gh0pRci75sZ9BN0v9lE;ycFyum4_G~rp&_j0wZRC<CFe^b0C1w92G=$m&?*>3t5%dG3G7mF
+sp!d>}yYV!YXcm~Iam{RZ)HNw-=rs5Zb;-Ci8b^4OvuyQ)TWy;2Ls{ApQZyUAcm0*;mDq5wj+3?gHA-
+ at 2L}<- at 2*5X=6ndM%9Xa7g+*?cgS}q79WQhOvZNSG5{{o7SAO2n632aoU8U>RH at rZfTM~FL;e4MU8+7
+}T$L5<-WXE}c~pwkfyFn96A{pI<T{e#hu%bzZ8!uyZ+cegix8#i<XgaMEpso#G4?VzRBI715oO;0jt4
+xBU~<2JP;&C(8W1_^C{weKzU#hGDm at P!%S3$g*bQo6<v&m1qUCYY)dt<a!&%jnPb^Xc(#CN=+uv at 1d<
+twWe1+}|<LT}kUWbHeOO0ax-#(0ys($UB3Jrq<-zHbq3<h5f|eOKcoqx%<72A74cKtL at G*iraev#diW
+*HxNXCHs`J850f8u26)xf=^fazvW8V53)Lv8Fm$J8EVQ$91+@|(Kl*Cv(pV^;bWZ3DTj>VQ=!vLKz5=
+~ErF3=Bu7<nD#~owi?cL?=^o7i}-GNhgIQSn>O9KQH0000800{-FNV|pby$J;X0D=_&044wc0B~t=FJ
+E?LZe(wAFKlmPYi4O|WiNAaY-x05Y;R+0W@&6?E^vA6SW9o*HW0q+R}cyeORcKf%`NEK=qsnhMVkOYQ
+4|7Kn)MQ<#5GBIz5l*Lijt_uz8oKVC;=l}ah at ON8<JT`QIafM)w-6DWrUR*AvK{(C3vkNYknuBU{6dj
+Q3ZjM(5!@ZE>sX`xqBB79CgKVQ9uCCIczk!qb2+%rI3SFvLH&!AXpjqY3uca$RB>D3KDWBwD|#roqpV
+zABkQ6jDAIp5&gs^&|=q!1woK=sucP3#|Ngte0<M1M6JcR at gDvPrKr#|)nG)wTjE+lI7+eVJ`Dpar9t
+Upi6P#J3Yt#^tPmwuF`Z?R0=`PfhU#@f^x8xL#p1K9F>c*Nw=kN{r}Z0#-Tda}#yUj%qhK$UC}D-O%l
+Is5FN*h+W3sb;TPV_ld2}iCMvPc$V#tg)48-kWG+Y=dpwMFtS%up_R`HhNpwnWjQHH782d3;s^k`aXS
+A|e+jPt=-wlZn7o7jq^<%2TwC>{t4mF8S1h)`>?QdgW+4^d-lxLN>j9nFL=pUJ{S<t5#up&mJkza1i&
+i>iWLBk2rV8j1E}H0!`aGdDUzD`{R!C8U>s$JtIRg=ff-_feQ*Js?RmUE-dbO;+JRv>#!#cLo3Y!g-=
+HUsD;q{UJ^cY50}n>FiaB!#*R|bXv52-vCk_bEn+vLG9RJ!{{}UIK$-$e4;Fw9+gkqFEu<fJy>Zzr4s
+HL)}4&Ha!Tf_Bkns5%^zzf!4Y&%PjR13QMnm1sGBNM32k{}Gi#D at t9{N at k(qDKhF$ma+hdPbMfd%NTn
+$0%On%$N73?uMCH0mvlh0Lp?QM&v^y6aeuGKiOjZUPs at jbb|@@QfyafmCO=yq+2*tGdkCt6u(tO2GnZ
+qK7Aem5!CH|8iK&3a1E(vE1+G<U3%iFgx1Pe at iNz)EA4Q`*bNZXlVWj(&;HtG#6Mb)P7&;WRI|3Av5K
+<e2E_#7HJ5MI28|>}BB$zQ3#i!9;u%fZ3NV7OTV_wgw_9zH6{v3toUcjyF0+m*g8_?<glDzFh;l9G-r
++r$XbYB{Nt^u~lf!MY;lwy^-^1Du}srs3IdDBS){N#n=FLCpLhk_z7<kU8lImBGo1dT=)~OOHT-1EiC
+|3(B^={lM(RbI0Lq?gU*bT;4|Z-rf$Zxk+kCt`K#U_IA7or!z~avEM$SWVQFC#oz;<m_v>odDQ6x0U&
+P%Q6!BuQzlxiUFaX)+Do@^yU})zf-7Uf3t=6LEMRRgcvSg-fSNCJQj~tKgG)4NgXW}$|&&1>;?c=%=q
+!gH;iN`!s=2M~!$?Lt4qR>rRJyTQeW^ocDi75qJZ7Vz?FH}e_PE at mHVBQty(Q43!)>L&{YB6;@zzY}N
+=%CW+Ashye!zjE^W{YU^(H+5<jvwf#7QO)I2 at wx;*D#%Pa?h|89;^tv?TQ0zB7?biqm#%(e0y1fcvpj
+y?hZ{x-HW)*rs^&eqfBOvXSB at RGk353=9%5v=kEQz#0oNYmOFxdAi{qxRD7%!rk$XPBipV;<}$URcn#
+wCU2G`%k`w3r-gdC39lo5{|1=mSJSu>f=j=MWpT{}*`|tUq+4na#FZZU04*EEfH;Vth`lnC7FY4D${G
+=o8HPbzIY&kp(Rm`7}_i*s}_g{kIfH<*j_e`RkcDWy6H3hW;Ziy}X!6Ns1u)UyNe0}}wZ596lP)h>@6
+aWAK2mlEMt4NU}3E4dZ001}&001Wd003}la4%nWWo~3|axZLeV{2w<Y-KNVd2MWIZfk6BV{2w<Y-KKR
+d6iaMZ__Xoe$THsWEv!*gpJ2Z1%bo_5-=nt at qkd|q$jIYH!ikA$-l?PPTc0wPP3}kan9vC-?_Mzl3U3
+0sxghiJO{qrNo9Z)T8hSC?w_NmJD0lO8NS6Rsz^QSwURHg+<agf7w}CQdcc+2er at St0rY)u6=h=<5e(
+ORp^&Xwua!noR0^gw{Ajm=*Bd&%<pP6?^u`&8<Cso>l_gqfBY{C><)G2LegN&YlQ(H*B_pS@!pcU>Yi
+{y9(I~0~?3h_Ez^n-Yu9o+zu^|`_boouzy*FAHpqm}4WCSeDyv-!bvNQ<yXtT2pgRk`1%T90u_EWHO^
+DMj|{j90^p9b at qZ4s6>DH++zoJKMhNPk`bJ_OFnKMhyd!8jS>C%MC_5u$~ru92u^s)b6bp3&?`*r at hc
+mzGtpCrB0$?~6FiN+C5S$FbtS5_bkZ-+fd{s<AP}xJF0iEwfColDKlel<m?oXb>)S43`sb4lcStEm{4
+JSBI^JS{fh{0EKns>~wE~39MH+opm<c`=cOE*kko7oWF&un?cnFlP?3VC<yG=RK`?_L!}FQ);hag?2K
+|!NWn{>%n&QwWCNW+hWcg8rf-jFrre3Jl;_k<=@7Qh*4>X$whjot5Do{A%Nl&PGJvnFEfDtj;xEEVHi
+f`f!nOOmi49AqgTQmP%}L01bCOPd9sK!vAfA07K!IfNUC9!y_gPJacI?%YS5yS2T-}*9sy!8?-2fq*1
+UjqvNPTqWWNV}^ig^GdQ<IXKL>PLfo4ZNeZD7y1p&3at(@%x?tf}dWef%^QTmwE)-6fbNS9((MbSC=c
+0~}l)Nqnh^WabaS*VxnXJ&MpJP7B0c(kJ9KTwk4?Emzs~sGDX(9QTlJN-AU5MnCa|LU at qURs4gT7F<`
+?Vd^UsXm26c=SNLsaS}M+Xgc>ijl0Yf9Paa;Tv80g&Jl%TVE#-W2M_*lLhnIz{~roVBiSih*y0Iic9u
+2uVU!&WuE4<|z!3|ctZ<8R{fM38Najr?kJuWgi-v$zp=zCzhvjnSY72l0tG988X7YO;$&J5!xi%V}KX
+=#10NiO>{{v7<0|XQR000O82?eW2?#{Gvi2(or&;kGeA^-pYaA|NaUv_0~WN&gWaA9L>VP|P>XD?r0V
+PbD}bYEXCaCvo7O>5*Z487-9h?L&aOk0)~78bT&hlR2%OzEX8#*-)$v5sYIxsZRqwv)7TX%2CotS3Fa
+=nP&)3NVmCNM|3l0Ye?yfIURpqX!ug1pO3%hXU at L?$YtRq&4u0J`mgL46fVD2DI%<+Wr1<%V}YcSc1>
+L9-e;hpVo%9#5}VswUYvmjspq%In^83L&uXdC<r}@CKK9f at H~N1LzL)IDWJ)*7tn{mCJL$rH_+2NWnm
+3CPgWAac9MlwN at -&f^9Q_Dke*s8Au*{~-DD8rG-*F?FnZcP-<Mf8sH2SRGurClltgaVtCJh-*v+1fqZ
+Gp5tYdAPl+?-9fBH!FSXU<s^34N#geYW42t#q@&zu at tSU4CmrKrs5qlgRNce^9W7!PeSaOY;HcP9<1l
+Swk=>ZZLd(QTj{d}OOl4||EjAmz7`&7PJe>DY>=Lrj0FbYJJryuR>$hQe!!OW_YIaz<W_G{hH+l-DSi
+Jh5wWVTEvgdG+lgy>8$<)Nl@;vaA14O9KQH0000800{-FNP%{i$`}Cv009C303iSX0B~t=FJE?LZe(w
+AFK}UFYhh<;Zf7rFUukY>bYEXCaCuFTKWoG=48?bU3URlz5JKtRp?_{D99^z-DaE*n(im(j$nwE``#M
+oBtrzP(OFut*5AUPTF!+E__rACQ!FQN4_E1uf3^F1Ja?C)(A|5B#)$OQl4SXPHPs!}zzP)R}rG9C9I=
+x(bS~wvt=JECU at OC<^7pBEyB2jitz&KI%LVT&bffzc9Q$RuJQJfFCH3L%wYlk9*(OU3vA{KDpnL-h?s
+vGG2+0VfmnAj(&1F4fas1jOh-8U8aBitCMtJ+0IVr!dPcQjqt|BRv%W6hxD`b{cwiP7;zg?I_Gzv2pe
+_0RfI)|y*m>NTN~-~m3DzTGyrYi6+#RW1-MH;l?_+Ff(ytReMyi>dP8d+NZK`2|o*0|XQR000O82?eW
+2=4ndf%K-oYTmt|AAOHXWaA|NaUv_0~WN&gWaA9L>VP|P>XD?r4Z*6d4bS`jtby7`h8!-^Q>sJi+A$A
+c<a4yB*L!0DK2&LdsD5Z$W?rbfhl{V6>)1~ykcO*F`DXlJ&X5M at AxrEOLo1nLjK<;ir2hO(S6Lm28jw
+0}ZfGG|MLSH`bMr`G}t1t~;C?*@cTEeEe)PTM#u=o3$XG{ZoqGG)JaDDr6e|rk(i!Fx0Ra-KMG=^k3#
+98$E5TOmj=!gkAVze$bs*hm+WBQ4wNXCF2#t<3sJ_R>1nflkz*`v*gX&9sRECk<jPE?&3X--P1PhU5%
+%kSn`3o+LB;oIeR*zI5=?yLX1uT;*`;RC(hf)9@<+C2zmt3Xa-3H-zGJW|Rc9JL~s=%3zuOjJ!;vg)X
+ZC(8#jNZGB!lveqr;Z4D<tHfflDED<FlonwTfdVgVv7GtME5@=8KGNf4qr?}gEmNSMqeG9mQQI;ek+d
+z?jxcWs2N<MW!FSUz%qOjLkTSC12^<~CWxZ;)J~4W>MOS2z^Q0ZN654ViSF1hA<*?XtUdF%DuWGM*a_
+U7sxogIFdNO9!x}?G5ARC%D%ap#!R=j}c6G_&{7s*vcpMmOyKToN7mOjVVaKV(93FB;v<wC=1t>M at 2w
+fX~4O9KQH0000800{-FNc#Px5_16n0Eh(u03-ka0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rFb98cbV{~<L
+WpgfYdEJveZ-X!phIjvpQ?r0XQPr_hhkm3|q$o?Gu9gD_xH2}ik4X9VH4vHvl%jO#P%p;5d(JQC*E84
+@(m^H_f}hh`C{Qv%?J$K}r)Yr+1VURnFj>2Jszl<aWtSGgJ6b1=W;3{t?;;R7ZPT9DuYFDoYs7YQxp<
+kc*7L)Gy4|zJP*>Y4uvi%<$=JQGml+F*DJzA9kRl1GT+A|SO5i-JskX>D$g(n)Kx~~+H6icT5u|b_8(
+|StR%-HqPN)&eSfYe;u+W**lJ<eweqci317qMvikUC(g;>r5hbr>{I1G#aPz^UddUJ{t!W9>hCKxnDy
+LfmCDmq{h7~c^)rr(5ec!uEB2!2i>zFpdp&<O@@Mg&cI%z4`{&d)^aNd?;9>s2N5$v$jsefCfJq=+G*
+F~4|6E6fGS9rm}&SpNl&N4JFE1{&u7!brD&?WAEprj0Zt{)3N3k7L?MBjhJ19UV0Eh<DP+HX-{0P)h>
+ at 6aWAK2mlEMt4LT&Rn6Q9008kG001BW003}la4%nWWo~3|axZXUV{2h&X>MmPZDDe2WpZ;aaCxO!TW{
+Mq7Jm1yVATgpTaA!*c7TCV7jV0tMKI1~lTNT$!w?jSj at 8PdhNO}PY4*48IlM at utfbl9Jj4=t?mRsF4)
+vOR-j#xE%Zd{CE!wOiRhiRT(1NseK{=5-N+jibLD*KkESfBbpOq$y$ra_IWcB1Vd6yi;B&!QW_VMy>m
+L?&Wl&Zni at u%hK<<cmu)fi_?YS~}`rwtROWc(iFZ5byy+cy=JloV8EWhIiyma{!c(`_qTPScc>`-X8z
+vTMPrR?<|z$D}B4OEfGd4KHg640SHi(23z-4dofA>fVKYYN||v^1Xc*_hO>;Hf58fx3n%8Pn!EC1J~;
+tYeG07 at OKV_boni(ja1sz`vnzkB}Ghx1Y>S4Wril|mt|eVljsHV|3x`F<0p(m)c?*|+r;EI#_uv-#N;
+0>leD;00$(6%Rl=IWVrPP^2zgCv_Ge~XOj3+_CM~HpGL`oY6^24IG%vR$EW9PUv?DP&u5YudEV_}&WR
+j*?Rl!ot$y$XdFf=C_|4Mlfli&}?wQX6`;uGrTrC_x;ysU3a&gwm_<!QF3L9FHU0)Q at q2&c3s1fmTn&
+#O!b;%N-8vZ|#^&KZwpT2c_G-$e~+sVK=_k&-(I(U!qph)FBZW3gjxRY0b0ad$9szC0(t9Q~Sfa;(Y`
+pI)R`=OyHh(w#|3_YJHqfq{(Nq5#+{us#K&qMpJ6wT)VXQa)qDAb`&pLTZ>Fs0KH$Df(aZsv&12q2Ed
+Ynrl%O)D#FM#aV_!qfS{tLw5az<`R^vX|NLZbXk`&O+!JeZLB>t#^E21CffbEo^)9uOAV*P!YR~<8Z$
+WTxg(bi>dn)9!TX1!$ME6pEB+XL2okIanbeZfRJoF- at PzS7)3{R;MV+Ttu<Y4&MMHGiC}?29Apna;X0
+H|($BU1vCAg}q$|?*>tb`a*l^n3ORox9D^4(I{x|KHfat9<nhf6t-g)Vr4H2=1RZTp-aPAi%TIy(0p-
+yV(-$jZ?<D7KJxBi4)v1lrUxy5me7xWq(ahp^zmuKnrfzy9I~N?buBBz8J+?0AmM@$osbCzooB={Z^`
+Q7mt97<Q?E3~nT2l^_+p$?|(Ef_{@c3nDmg7OUgM<?<3T>_JUVO at yX1d{pt9>M}cZql43K*e%U4JV-a
+pg#%g>BahaO4QWT6_c+HXtepRmee&3C#ss3OPV<EV5 at D6?uZxVpsb0lI&idVMLYv%B8Ort124>-ZgoW
+X1d2xAscA9=VId}K=d_H%R)qnfoy}kF|UU_f-_W3+Ewdj+R#l`Q-i}Vb&yS98s8m#E0PAIGq at YFF}Em
+nVEHF9xA7)%wdH#QBXk;nAos9_1z0h&xco}I0fabN&INoxz^o-G$>y)BX7iL0)oI{v&o0Wt-YLWlDW>
+0|JwXT6AA#vd6CyQ}JrUY##4mZ#e2Fo+U7kvSD2j3yV(ROC-teanBIqdx}9g`FLX&u8d>>&|!Mj#1c|
+uSC2dT3O@?e*d1h^4>ToGBm;V#B_FnY6q+y=<2X5oL1^A%^Br6O%Z5PI2aJ`hWbaCv#s1hlL1&kW_3>
+OoDYx>58?Hw;4)I(L5WR-5wy|3qZ0H$hM};Q>VrJh058-(G4v!{$oXg9fetu{DZ;AWWJ?-WfO=w`1hE
+H at BZDqplS{UzvfKksx}#*5-BJK=K-uQlwm_5hm6G*3Ns`Tm-0jMIhy52&fFx{<-~=S7#0b0FQLZ~Emj
+F0QiHHM!rqG|=)ruzpu&ZHO4reo}zsqWXiC at dch*NDB6 at A-fdm|#4<^-mKA-IGRM%0;6Q`QO+MhHVK%
+6m;%D-rr7c74N<XrWD!>I*Aco6(5O=j1I8c59_147pYDbi)lr^k8{M7ZkVVWF+l8t9nsoT?3qliaZo%
+6XUlGGD~OO9<$E)(F at pW!kOogMUo^)zOb?mm71Q(&sLWq3}BB9*l;8YOq!2-rDJpup(y}a^6>VN1P|{
+XgQ<nGe{r1{-8q^7TR7V-iw-d00Wl+{GFCg-$$Tef_ at s6v3}`ZQsysoeXC3nQKxvgFm9(RCZ<w0lxi?
+JzG{djF;o4Gv at P==?VQ&;PKH5q_p<@8gLuE2+l-VY_lHWVM2{gM9m#*gx1G8{z!-U6#3bMKvIOvgkNe
+cfzxg4k`$r)f1Sb4O{q&Qj+`ujyv(1SIR-2jT9#MY~JrDi1*h_OD^%gMeCCl5!^3}FdSU6I<<5AWb9>
+DnW7*sgG&=*CXt23iyLM37x=r(sTXXNU)+UIcIj+xpPyDPz^7nw79Uq1$t!`$!U#UUXj$GzWyEpL{YX
+!^YW<jE=`aJ4`TfTHVCEW_3|g=06b~)7$nL2!g1oN5brM2%RI>1mXs<0q)QBdb80YRk_j^8C}g1y|4e
+z5ocog<I>ujw*KkuCdrzH)<yV~XTD=@seD<*!#{VsLO5&@b4h$*iowG7fiNR5wP`k<k3eCs7lzE-Vdj
+?1qdGhWhDxhZzM=GS(|B*%OV-5HJ1w*eqkfH^JGx9V_35@&2tFo=-Z#VO8!~_aIDP27w$56%-uQbYtM
+9|CszSs;1_~-fR2x29Jj`M4USz;wx at ER>=phIloRH9seqm6`@Tsi3r<}9L?!;8QiuG$*W3j at 4#9V_^^
+p;k(#;EyMAQ-AhR!w^ct<E=dMFTiRqiH1@`VL6KD)Q=qxnS2Gja+nwJ-*&$B9nLzbq@(W9kjA8+__Z;
+##nf;+4mW3OYeZ4!|Nk#7Y;dbX5=_C>ZeE3ABdbzy=8ys$VYFmW at A#~Cwc5e&P>_k(An!FfCc(a#F;y
+|!<v!dbw(JC(c8N+hu#d0)0=xRhg^@0Q}@0MFJgT9k&8Wt#lLAA*ED_!btuFq7_;I92CQd4ZyZMNzHd
+g{dnrxz*xjs}oBkhOGaCrp=cWhj at K0a(no|m^>{vspo8v@{nVS$J*(sSC{P`b<@Dt3SkW$X^J{wfo4<
+*LRnZ{o+QEHG53LkW93XFBw;-Hk;qtY}+G^toVQ~#mz{JQZ^EDeAB&n3p7=%p9#gC5EY;D2-dZqzHM-
+5Yr4qTR}}Xu_<jQyu4sc^&CN5G)NbG~C*%q(2!iv~p~buNi~=Srhfq%Obk^M$O$o$*_QmWH*S%W!D$0
+MRZ`F`=a`MguuA?_yvyNs7qV?#=;=)Ietljqm3}`GzDDR&#wi=udxa$dmmXk;?F=d(C6?dUr<ioa*os
+IYR8d=vz!W%xMAv^4Xu0TKyr?rL at qQOSb+f9??0Z9owQAXOX&i^$w7`C;72db;xWO|<UdeL0|XQR000
+O82?eW2t`VQ}cLo3e=MVq at B>(^baA|NaUv_0~WN&gWaA9L>VP|P>XD at PPadl~OWo>0{baO6nd6idLbK
+5o$e&?@1>4%UbhU0e9nT%4`VPq!NL{~{UM;(^~i;#_!A{YSj(Io%93xK3RiOHmXut at Cgw<mU&M`(FN1
+zOXBAo$I<xIhJ6ky4NxZOfc+ByR|kgl`05YyA>ccm+Qb!xo at 7gbT__=Lr209tQ}Qxn_Hjo;5rnN(s at 2
+lkq5?rE#sW)MuPAX|TZpPAVp-Wc&f}){LVS+f)US1m#3xT8PkDbGAWQw%*DuCs~H*rea(od?i at 1l_WF
+o0m|tuRfYwq;<S_?P_Cph)Tt$eg!Aj>jT6T}SF{SVTT<qXht)%c!MpOh(c(D>{)}WQvC?B+;xZ2q<Mf
+)AxLA^V`I7MfEkK&Y_bXCq&HfK)_=|8h=TpWZv~L*))VUVMMSv1=P3{9UVw)>kk{<w at P)Hr*6bm##=m
+?eU6Fw9Z^gi6MTOz_OFA93qNGmX+WZ_sp*AWUgnEwM=Z}_HB@;Xkk_}wB2&{WfEMp2O!T~mv9Lay=ZA
+#KhB)c2SY={U}+z(SyLd5a60C*;$Xa<U<%^xoiNOJdF$_lG(kuIuXGsDz@@?2yiuAKifqYqnJx+6rZh
+xMABu at vK#WGqi{o=-1<?VGHIs(PZ&QG&`T76P*RmWI4oQMQH{FDHYD3PJWm}-lgyzXYwM6Mz7-~h)q2
+A!u3P3ttw80 at O&rf5HGvL$s$VPnIU<5au&(&l1B6CG%}Q+OG)GDcr>5PYq at 7#YE&EXynE~{&S#_Ld9)
+mBIqkXoI163h8K1?o<@n`TC3<!S#5O`-khd#Z&qDAaKn<4-0K#<%do9SoDtxc2%Llt=(KH6J9l>);yd
+hv${BD^<9g^dmCu2C#x5eX+F8)TBgGavSLK%a=c`^Z_2N4(`U<7atk!F)|s-j{5JNB3;4-BbRnJSPr-
+Gla)dKQ`rK$CRP4_$#{0VX(a;v|ItWl(reo*cKfwih7GxH`z7yaFiG5cprrp>KXsFXLCUc at mGJH1=Dd
+N&G4ry>Ef`ZrKmRwRrQH3iqCwf1|FtmU|k_-djnvL3-n8G5CSLbUl9`87)(Ny-uLEVX)*MF^m&=@)8$
+<KsYmw?=sb4Afj0VnJ(fHn9^p$^XiMW)2gk7#OQM$f?yN;J*-d=sk?Zjhlf|-%~g((2oUsRIYcsS&4B
+ig9zC*xSlhBU6}%2U_|Y~=*LVJx>WiN*L7UZmdz4vJ&j)3ub%Q30u&+pGWM7-<>z=p(j~gXWP%r|A_6
+bZBFsg-5<3*fA%egYG?MO8djt;m6_AuE+GMb%btxzYt*2Oan`hs at _)Q#`q(@o_pOX5Gz$4NYe_5r*fw
+DY>%9NcMjoxMHuUG?k^0lEun?F#^LsCKYhBHFoU4?K4Dk*wry*e%RpwufBkXktUTrZC$(L(ph|`3Un4
+W|bQ55|S&ns~a`qRX2sVb{K0k at YO7IrgMcT!BmjGnT%KoTCZ?kJUoWAZ9_T}*jk#b8LJ+S&~kn at AEFU
+1(Vbc}1&r$(0(&7xf^FbI8!ccDEMfmE0r!ro!>;$IHJJGuuR#{wusf79g$n=W4VI_qOuv={P#_9g8NL
+Qo_*I)|rh<^cF4{rU3$Qi=!gNOpy-lgZTeJ9{qPGAJ`zPBPn0h-p?Q^h%*g)w1HS4g_w~McSJvDL3$r
+^TCT2h&1o*>0Ku-(l}EbD^MM)HSYr;!4;ng+Wf3-tzP8miZW)k+h+uI{a_%4f2tLDfRvdUnvz-SOd47
+S!7%QEME6_<e9cAOFO^esJAT6%g*hsr}ls{DOo9TMhMpxJgeh)xOZMtI&ly%qL1zKej}=)@QI5bUo9S
+<r$oVRI~er&4X9V_#GL*D&afE+sTFkK9lPFTBjwEV5qN#MZbp%rXOXGQX>ryP`;U&HW8{L>K5U4z0lz
+ at e%D^^$^wS&@LS9?R+4VaO~+8Zk4PP{x`kjdp+b6o6a1P_p`(jSzYEf~BQ-s&j{^<Z68D76^{YLoUut
+Fbn^vYxw(c4fQ+?H}i0UQ at P#0|-T{?F8SgszFkOXI|3g#hv2Yf#MdfC=BY%`%+Zae`WL?rht5Z||pw^
+7h~`W+o$zSm{$L+UGa%g*Nr3~lXfB>I3%B)^CC>=4Tc*>Ie|M|=t6zyw4i_;yw}se01Vi2Y_4w{9Q)?
+>m)sL_ptvP)h>@6aWAK2mlEMt4MrBgN%<D004Py001KZ003}la4%nWWo~3|axZXUV{2h&X>MmPb8uy2
+X=Z6<a&s<ldF?%Ga~n63-}NiT)K;04={ecAU(RRBaT4#As&Y;$P9=3ED_U>}k+T}ka0f$CjOG0H>ux-
+zfx%Fe;#_vKVU;a$252-I{X#d;I!wM><SMz$3z@*r*;*7yk!P}0a+a*inXHp$A(KYdOO;fY^yT$RWbo
+rF-E5qEFKd-o<-uX{JUt#KqMT8)&)<D%+oZ`mDe2)?r(e8z`|gbyu%u^oRW%wmU{K3drShh#w*c?5s*
+|i*t_s=6WF{Mt7b-ottgB^madEkB*0sF2Nb=>Xs+&YiRaLATd7;0LlUaV9BVyxZRp(^`9m=dhL=Rk#%
+>GL6s;W at -K@L;)9 at O$ckDOj0N}{pjss^CXFPiO2s&TT(o5jTvP|XUVl<9G;DP(&Xf{l}}<XmK1_jM&|
+1*05L*W|Rk7DYaLw~|?Ynag_ky(rf5O<h;@=*2+-pTS^2KVJi6-8fOUb+Qq#tQ9QbI9V$gAyJEJUCdw
+}m$;}^^39uXl0X0XICY at xz@G~x+fn at q4S{Cq>(9UVA9yfMs_EZl){Foh0`eKYgk at -Iku}g|QO)T2OkT
+oz!Q+dIp_0X=L7z_nKi^7N&{7dkKx1TuS}IvK0$0s(h(iq+^-3BXQsQF=%FJ~tJs{W8vTzF{ZxEx at Lu
+il5EQDI at Hye>)+vFM-j~IH#B<_oa{D;8-mI9_#--*f;I9iIbr3!FvvRO#%oB(bmNFvGmrV3DWz%;4=t
+d@!V2k47?V_nMM7He$27v`(FT7eeWI^1FSS^_Fcs(qF|KoNRBwcQhe6Wc6cVuX_ at ifRKYce*A1Xc^f~
+Cx$CSCsncmjn#|kSTkS`!tZ4B>tnlvC$b9UGcPTwpnI2NK84BKs_eu4ONquQF9FM33-=rZy(A!L(hO|
+C7Bv}}9C-RrOu=r!a4nv-m=<zxT)z`nNX*jpM16#aDzcgyI4QtoqAK_aR;DV8t!cAa<k`Xj!-cqGa^7
+O)IBYOoqwz0JOEi{f{aeNFnE|WfFHj-`m}iwtk`Esbm{{j!-Z;TV6efegPRcArlPv%YDd3A*&gBiTv8
+c1f5WA0DLs(bjNNV49$4 at PCCA*e#a2lG!7s=xf#~&XLQqaHvM-MPMXgQZ~z^8!F&>Mq>P3LvBUJVC!`
+h!u5c7HV-jr$uLvma~AhCWQ*0YKSRXr7rc7ENTCTs54k!4%jVm<eykmI at VV*Lp$Y&g6p?{BZoJ{@4-`
+M`W)@URPMPE=n*boE&n3*H{*?j!aS*eQMIC$>1d{;PAsUK;XmkkE0WZg$GBEctLD^aRI-TVhQHPUnE!
+!J$L^x;MrNA9j=ST3()%TtR>1(%Ss-MxW{0C;LBl8#~nr<NDLlssTxsca!7B-o<BPB#igmY{sa6_Hz$
+UcbQ+q!qVk5AFBG>fNHeRqRdb5Y`w~pHoVixAFajOH-NPZkJ`Ob`C70xho}B*5X}ZG&`GclAY5J&-rg
+Pai<6ud<>T)_X6HQ}V4D?<Kws9auzFui9%~`cNA90b$Dp_ap!l+m4-{^1tN(L0UwmYq1u=6s%i~{P|e
+cMED&20ZsI4Seoxn+Ud=#iyMl9sw>$LD=8_+)p2c-9MIhxh7%=@^Y)=4i(361Cw1X+1zEmgw>HAn3eB
+YSTiwuNQgP`i{se97FV*V2eC$y(evzQ_ft0T|?+T`}lJXttIyW-Xh}{`A<^2tuVB(Jc%O*+)AziA*Nt
+&kF6KtS~73~-G#cz)(!1A|Ms`R^YnOt9w76PPA1O>%*VoUt-=ZfjL|tlw~b`mZM9xuhyyoh9(h8~lmX
+L}9UD-yiiFm{@qmCkTw;?9e$f1qEU&Y5-Y{TAHP17>5rE-b+y%EUoQXYc53@^i#W<9lakB at qU7~99FQ
+QPA6Xtc+fDa80`>dj^h}Leo0vuqKW}Iw<U}uxUU~!MW^#emb^dz^VgH!u$G}Pii51ktO1>2f!E{hq+#
+l#T7KBtgVAnj-8Esd@=xN#V;27?zqt8 at g*I*i&${H|Whj~>lIA1%Rz0)Ywh26k1~xc4avS_9HG$_5+V
+&I{KV#uDWgHen1LZNA8jAL~idlax)cZuzR+$pw;+=3;iy+K;GQ`Rl+~(pPgnuyJy9bhR0E9fZT=6im&
+!?&EqLnFaaTND~ABRZgk~HAw^<TL#oQ5{2(E5LMB3CD*#80D9Lzhz#WhfC9_TBd}=ch^i#W at f|p$Krr
+dJe0Dn8&yaHvAlccdM98PtHelXVtX8s|bq#+zvo|^UdRm+{v-(tr at mm#%iW>B!EF+Ng-Y!&~6hTJLoy
+s|EvCDavUP#>dgjy*@vFUH(doUWEx79{RAYj$6rIoFj7A^_ at ZE3N`zFO0b&A8koft+bc99z)?st`GdW
+STYUJ2vGMAby)A>y<C1WD7PqFytI~cp=4%pg5WBRrolbB at BgK!d3Ta83_Cxts^8gK^ASqTLT;my0|b4
+MMH4k>FvmC9!wg(`sSro?<d2_<o40z_T}XE1pdE08MUnXULART3|=Q5+GjtG|NFffogZO10;E|wh8D@
+7Aj}7?$hJuyJINSl;X3J!6PaxA4*tGYn02YvxZsw3HbyZpp6Uf>c1yS<n+0&BT8Ru58%X#vf0|WARnp
+6)sIM?+qP>W5FFcWCMWsmOz~uuoN>ewJQWkAlVk-)v^+G};p~)i9>Mw<Xl{b%(hL(Ypgn at 9yT8?a2%C
+7E+GXXF_EmL$P@<MV}_z at O%kUZhM@&q2k(?1Qy*ysB<-+un}yEn-#emVW?+poWU^Tq3TZ$`05UW>zI0
+tR_N@$o at RxWOZO45D+<dG(TB6%w|W=%RHSoKS;#Ezwr=w0Y^l at Op=x&C8FUbVum9*uC38uhkIaNOq9j
+dqRVx-s;la4UVu$L#e{tln$D9_dKi#Ml_<HL>M%(L%H>O*l>^TIb6U44;%F5JqPXb)x*X;dFW&xIL(L
+8@`3Z)Ip6_}Rs;R=+P$=+4==4qeC876>82Jdg>M|P_+%w#d!W}9M6Y#R482WP at bI#qC<m;W!O+>{U&|
+W*Jh=@FGJKyfCDCh$hp%Fu{dc%?nPKL$*(R;xCeNJ=9vCXAGO<Dz3T>%&+`u`C0E4|LHop;>J-lEHut
+|<vb+ at h7075NjXNBuj6kXr*P#+*6KMa=?%%yhSF*#_C7+CKP%qcc;{$k7r2Hy{Cxqz8w$x;e*c(n_hn
+;gHJKAl&|RR&ugF=xJJ3v3F01{mRDjh-G74_vk_<uZM0b!Rnv^>Ts>hETr71e_+2PTxnCq62_CUG{SZ
+78 at KaLhT3R427Q0IPT)~?sUk<B1dDRQ?ryVgkH3dKp?onu+SD|f3E(9=5|j`9F`!Pq-p!u5!hh{%Ux>
++yQne|V?^g?=}?<>FK3whw3`76n_S}N0tl}t#~*>z;$R#sTxjSjOWNzBH1sVpNa at H27A!bTRJoXt{(7
++2ieJBq4Eo~i`00P0KY28I#RrwEisg3gM>mB&?^FHj=!jaIy+;gs_$V=3`QAP>&eMzc>3J7hf+=pNx7
+lr--HKwhfG at HUw*V0TUFUMs-4x#ik*3n6)+kD?_<SnW?3 at sEd}=6mizL_B46)xWpnY49%p;9UcMgC|g
+wOsLRHD&hYm7q#j4pszuW`dq9N)V+g55$j*U4VsbV?TMuoH&-0LU!?TZ${GA6F|p03{;YHzuRzxtSjz
+<j=I_x<kVD4l2HXaweYsWZ6)Ia!*DG?yyI`@pBt}`aXSsL`u*RPi at Oa+@JwU at 8pYz=`4L_FQ+pX)_ at p
+q2V}cRkO&Q(Ae!a#ys`1Z2s9gnQgV*zvbbLP*;gt_k0FU*^_yvyC*JIm;SV+(1KUb8{}^C_1rkX_TK+
+xsPWbtM(nArLcMJCp>At at Jy$0t_r?gu`OOA%N_##p3DMgckKQ`!j#wDlEZ<tl7^~5vEo<R4l%>?yDr#
+%(hbs<WSFr9?4SelUFWquQZMq)|F3aw63QNezs-FhzG<jj$z(CC0vrUSQH#(Nl}`|-ROa)37A2IIuY5
+~y`e=3u)wxLH*`wjL&|olO65TK-TTpH6xFlf^B6rXXW$P<aUPUnZt$uqD`{p5{$0>a8E|{H!lX(~TLm
+#MmPwbC`V5IwLOkViGdA>&dT00sap9EYrMnXYx-b<gHF7xIGs<7oRH~hWL5%JbjMe7!c5EC-`_gf&Y)
+p&YmA>;Bf58B$JaU{p%>&FuB}>V$Mno2rBu!!9*$0<XWnf+(W%>))qh}r34FtJI~4_=YdJr8J}Bh;FM
+?2elY60-P%()0{a!{Y3j^>$pbE9YSHR_j{UsEoGWPzq&AaI<<h#wS~SR3*4jOFDO1J4VN#;nxO7Csnb
+npOL~M`_(!W=E>7TPKauuAs#E-i)lQv+oHVaSkz3yT;or&b;1^NU{a+9h?)Q!UZ&v1aV9E|Qv@|us|7
+YH*Ljp7L(CopOS4u}qXc3b*dbaeLO>9cdD^B5Ih&t}Z2KwPy at H2Um^EXiNSjJ%Grg|vNw#622xPTLJ5
+hdEH+jD}tLMJjcs5bHnb^w(I}gLU^%EBnUSNeD=ktYf54=g at hja#lFXS?A03#3K;UB?S_ibp<*F(cr`
+6R7($?Jg6>1U|b}O_-L0gx^MH6EH?hk>6Nb5(<0AC0S at nwmGq4zJROOd%_+LBjY)F at QjMfssg}u_uGt
+B?3I^cvCV)4?s5mAan~jtuc-Fyg(}WqgWJl*?PO?W>9vJ%hIR!SqmCNc{U&{kKlNU%d*naoUkkiP<i1
+(Oq0MDQP11226+haLHDl|1;+0m#oWjtIa%ic-ry#_71SOQzga*lBu<@g{(v9bp#D5D%41C#8&hCQ-_j
+I7OD04ll$!I7{o0ob>*7l5wTedpo4zd at t9Cfi7n5S7oQ(m|=8B!F-ep<UG!?4OQ?I#LAiG-0}oIS$un
+C1zee%4^VyT=$#{IxQvi)HoB<n~X+Y@<Ws{+4#PjacjYzhAT6xq(0nZVj`X{amS-Nrdvb9Op9>$lVWQ
+q3RT6&*oWOsI*oKDb?R>7_g8SCISTX7?%4M|OvVH9(E5OyPFQlg6G`yh7n at I&rjBsXJ+SzMdFx+>$bA
+yo5rOj#E8BeT*kz^g#Gtjqo2tGded76|`gWl`>E~YU7E?fEA+sxls-)Z{TA)*LhWhw$M?<?TREjcBjx
+lmx?3gi`BFftFOf)p#@aeRX(piOyNZx>PP1YqkLU>OPNYFWr7Mu%!U-vt1{GB^UX`)UzS#mOrrXIt<X
+7Zkyp-aym)|4ex&Hy>@!tG701+!r}cM+{)msw)Z#<}fU&<3n3^=(8Sr=d*eY4Y+v(`V+aB!lN}|0VD`
+1t0%d at 0HA<O8e at VUX42BCB4`^LCTe%_x44oTx05T3JtAnjZiUiM)lwJUgqg6=&3zGIj<V>Kq^{JJd;h
+?aI>TCVRN*|3|N=zUE?E||53~B{*s%0wP(-|`4LD9u5${V4w?QEJ@~uTKxUHvDoW_&pFjy!s at YQuF&M
+F4_fbO(lvYS5twQqD&~b`G#r4p0{ceXMg4eq=QTzJ0Q$=q|lX36~ZW2CT_9Z+x<jCtSu21N(zRgZSLW
+vu8o%!K%GS;~d?|=^74rynu(O`E(ekZCssxI!My%{Xpqux(@d-~bMq4#%B!yR^tcj)RN(V8w_V=w#g0
+oN7n{>(*F<c$d at c=rZm;|i{L7g$hzGFY(fDQCcYc%s8UDRkEr_NapFxkRbQ`l_m~@VEh9PO`zlHgc^)
+yMA<FOUJrMH>%vb<>wM1?nXu1JnT9{E5HcFRi?wVowx-(W at n$<JEojI?P<I+Im0O9m~tayN}-G?Ei=|
+Bjq`Bpj&XOhq0|-ujh!(9z|<@zHP-j^^agnoh8e7FuXQ|YDlaKkE^5`eEyEFpp%GuAoi)F^0*?4;sbP
+MjXj(UpQY-04_RRw2P1nOVGS14VXecdROkRXnWa&)Hzo5L!pJlAtN<4eWG~2Is@%P|D2f1RY!g}!I&}
+2P_!&fhCB6nn-{b}G%EBj$RUuD-)t&2uqKE&^+2yD*9uD0$sNcl?Jq9h)Iwk(Oh2+OD*D at j5Fr{Hnn#
+W7Y7L=8u~LRqGtxp3BwWL8DLwln7evqD~ii&f|IMPufHPc%`?bNz*gF?P2x50k%29oP*+u9bI>Pz5k8
+ij)G1WqjJ?&JFM(9j6+O#spzxNWidqC^$V~8@%O{QG3q-o}6Jgw0(7Ud_H<{-istXqAu*E?PCx*EtTD
+!z%tEjUV{yvQ;Rk;_N>i9oeho$=gAQ;*3Ix3Y1SDjd75-lHhHWr-uD~I2WmzN#&<(;?raALmN8q1yc{
+02fO&E*-j<EW1`7}DzmrY8LQzjKB5h&sDoJG19iZaL`<#Lwc9lqhj%qo}XZbaTyV)M5q+7=(o2su^^N
+gIn0Jky_%+-ElrvL+Fj{k6Wu08JUZ$XW70Me^$At8OT8+92=KO1#69*oFwv2D+}|M87Jo9||%Z#;N6`
+}B2cIzFD)sy%>&dryy0&OG5AO0ZFs;}&{HEW+!KEVHapK!*YZ**&HiF~YK$?NM+=15H8RhV7jW2VwNU
+nkx)yczct>=9^)Z1}*wDOYc|$(dDwPe!`oEQg7vzxHhMJ-EC^N`p)IT<<~utY8rT?h7^s=46d#^s85r
+jcZDu4tfRiP9aJP>!0;|Xr_fX<&-A-5IOQoD!sNp<UU{mmBZWBcUomQIPE;sNGtM*^F4FC)du4C#RYF
+R6J%Q6cS-~S)+sLC%P}yilIU?Tee#MAd?GOw;>Nbf<4VR`{Ud2eU#qVPxDnNk(Yx?cABV_3KV$ucTlW
+r#;??B at oD0H`}cVIAyq5TO4>o~$x)2}Ud+dV-v_(EU7&?nKP#|$Q4jXN8nlMauv$p4 at V4l5eenCnjcm
+tCFE#tE5leZm55d&^cAYR?76JE5cY(IfoI;@c at zrGf%&p2hft725vIi2A6XsNl}`+7CJw(qlf*NAK;J
++sZ+H&-(}T?3F((k7A0r#zT9_vYHuhwT<fWh?Y>w9#nyy_uL+TXAJa-!+NKtb`>7DcQs5}-_Moa;Vsb
+MXW$}|k2Yq&f=Fe{0-);LT~7_^s;oAym=r59<A?X2_PTI3FVU`E5BHT`tov)^uMMhcQxQn#zjQ4nR)d
+#^HanRbUR}uRyu at UK2F&7AMi0=aq|`g{Yk)9R+&zrDRKN3 at c06x`+W}i*tiPa~OPO}~f at vx}@}6}QO)
+)tglf0{X+~b<+qGuGL=2GqzhI?#kR+*Lz9Eydjs}4gpdA2S at ZEBh&m{;<m|F{RjOG<b$J4lsqJxr&;u
+avon?Um+j%Q;2L)csl|0)L1c9 at J!+Q;OFX^6~|Kx=o6zy3!4JSfV4b^v52Gtv()))uzqdbUA8DOqWRN
+Rz?{(T at Hv9v<pMr`gEL^M9f{)CzuyU%}aL^AN%SXOH(!Sg-$%P)Y>zB0OVP+aoO4_FOiLUpu&3IKL6+
+smEk{`7#L!jC5vi9ECNVuY<WWfVcSfh&G_Wl96AXl$15g at vHwny!Tpl!KcLD7!@tE+2P<9Lp$gYa+kH
+xh1-He5t9XY-FSEpBr-Hc2O!-CcJd&?<mJu2bM|xDY2xzgFt7dDj1GXlhLvpGaA&QOIDqqpN(o at X(gL
+j_Kk^QsWKcr!mKVakUMSPv=Yt7ymLd;@>F at lE`O#DOdaXRm>_n2cCI#t1;TdMA2ZJsXj7+m5$w8YU>{
+dIW<421%IhV3*{X68r`U04uB^7`$UiC9+U+)Er&*LKg_^)DkHl?`(SJl2gpx;f|!X=*qw&TIG=GI-I$
+AmGV7b?h5)T-mYX9wOU2QO0 at Ieziu5M-J&w2NBVb+7x^9%o0BlR7>+mIiN!+xEtTLCOZ*@96B<|T$V6
+NRw|(zV9?zu1bucMEY9xYrFH>rA~9b4Q)3^TpFzu$fE}hoSr%WN({MseMxx6Izswi2pH4|q?wy5=`zu
+Ozz#xEFsf at q)%TFY8M}ACnoMg<KMr`)HN>oq^byw9k`$031mpswkBB`V1UHp9arLA*n*p?3ZM8JunmS
+VQme1tnZ<Y<0R!xZU>R{D%heV;0*{Z)z?ATl9_ at 8gZ|(_8=azFcC5^80&D*@-DluCg+YC#!(uD-CAM=
+AA1Rt^nxToW0<E!#n{eN4y58z09=RjN!*tAPXTJ#8j{y^x*#hP)h>@6aWAK2mlEMt4PJ_Cl3(;005-{
+0015U003}la4%nWWo~3|axZXUV{2h&X>MmPb#!TLb1rasZBR=~#4r%P=U04mFJ0`0Me!nd at UaJBk%bj
+6A|cyM-C&xON$Ts at o2GgY3`2&Qd at r)V!_h``))8_yqjqq%B_GLP^oAJeNJzweMCi(JHRv|C?F?)1NE~
+hOVu4e+ZlJv>u<QNpFGgZdRF>Pjo6Y at x^JD1CjzdVZc22-FglJRX&#c!4MjQIUQ6d;h+PWx3$DxN(-I
+zuurC|FZaDqO>;KoF1o*NkZW~X2c2DUzBf^X9lRQxcQgb=FLK6u+|XTL}>z0e0P^OKy6bIO{lr<Ib=C
+)F~e4R!cK at VcjZx|SCL`7GuS&6V^kd6clb%?{`5Gg%N!Ik(3 at zA}!7x>{8YilB7iow#0#Z%|7E1QY-O
+00;mH1*=F7 at 5Z5F4FCWnEdT%@0001RX>c!Jc4cm4Z*nhiVPk7yXK8L{FLq^eb7^mGE^v9}T5WUNHWL1
+>UxCs$6S0<AIqluGo;YdJ`Z}J;xSlwZez1KiMM5%bieN#?FRA<A at 7V=F5v1hEZN8l*6HCNmv2R#ByWo
+y^f0b2YmgQ35Z at P?gk!Oi4Dw&F9kxDJ<D=BKJ7nM*m{_(nu6a0B=$VTFW)K#X6!H#$yjYlFbQYL$I_M
+ at YT#F>=*@a^#rM<-`TcEN(5X{Bnz8xm+)sw%6Mz6ZaV(jrldGMBX!sjTBHucE<BtA&_MX3Ki1<zynVM
+X7Wx;%TMwWi2P>_eiAKO-6!^M5(i)#)KlNNzj3vk*GYE{HSt|GH6;Wl{XKx9GC^8Nmc7*LTgrT$>U;{
+6<K{h7z`$pIL{%>p*SB1e1bC8l?+BAu;!t!Z{<8r?pqIzi<>yl($<p?NAJ##e?FO<zJCAy=-o*$xFqJ
+50Nh(LM at 77lX}yGbhGxx4!-#*M2QX%GMQpXqWo+b0<qiEQHUEOOYx<k3B+i4&(ICWnshkOxe|TdUh6i
+SWAmG2JG{(N0XE(ACmP)`vSuy7b&=Qs^gv>ytMJx`IJg%yPU#*0{3N`%=dN4cHCh%<J$l&}^7AY~uGT
+Cg++F8ZCV!;*_r$?van{UR=Ft3p_Z}%+nbgK2eQIbAZdMia^1s<1oi7d(YZP)dtdTOi~3<j)bXZG+zo
+G;~()=GCQ{ThlH(ngcp82eRWZ;r&W!ZT4_sbx+UpV4krPW6>~Zqdmbgn(Pp7#7Ph8F_p%xr(c+$z)i`
+d=~aJqCp;tCfD*lY|qPUJ8L8q`MW>a%%i;=YdK`1k;vo4G>t`tSqGvLFNE^B%Fn{}u)|jV{yEqlcG=E
+9i?lC$Y(I->Uv{__pGDX&I>I{Y7UPjv$ofj9tp%`q3nYA`=Ax?OB5Am{!?Q)-66!?N$8;JjWKqj>(3R
+ONwTe+IgNs+Y3;dngS+r#%%IuAmZhB&wRc at NZjNIqvi4_r+2f@T-pGmSP at nGo9_nZSx8#kdht33(l=H
+^+!3t#C!#(#z{g9yj#BCdxtbx7j#<j~6UeW_K6!|=XYq+Ct`4Yn7o&tVE%JDR`4hYza_3{F%bH_gkc3
+64E`7H*jTpE$1`Wq<>7D-HwaaH|Y&4+sY&q9x)%%ZQ$2?)28d at FLw658^!D`*=xTE}{pq7vgjVDR9A?
+pU;l?eC{%a1M at iHT`^h2C3yc~F$m810}&+lyuZohZS#ANz5%|(`5ps=q!}TAfbZV}Mf_>Oz=Y92vmk!
+e)v&Uv6H22egy$a9IjYJ$tD9-`;c17xSsjI<xvYmoI^qf8pqopWjgtbIIfw#3e<Z4?vtlW|nM8eluzy
+K%2jl(cUw`w at fBpO0?>bX=K$o(P#d0BamI#yPvI_CpCcMuiPGMpieFVJChu^O9fJ8(btf3CR48$(aF_
+P^Fz-1sz;F}nTHZQN at ucpAgUnRg)SsDWdBf*NPggjEP_Xcfl{3LKr^AnDr!gj<j5=XjD6P1D~kQzZng
+5i7n0!b5?{dEsSK?>ln{2mi;Fv-lZ?B-fRJSrDrMqBcCswDtN#*wKpZebH4XEQ>tHxf+BWo>GLc5WJ3
+cDGj<!~wvmm<Ia937FA|kwR*$kj+V1 at X1z3f|%YTg8&jUhIhOGn5 at M>-&LwIILWAg2<@FGSm+9s&Voy
+$I=%+l<Wiu#o+CsnwbY5MB5!N7R;Q{%5g at btvieyi;#8G2<57cQQA%CMbHcTGHr27dH`4G1qgvv!zr)
+sTMTcl}bu0BS^iNw3Nf-`<w}9hA1YOvTaV-}LE=5*oOeI#S63WlL36?7$n~OQ0A${P%Tv|=2BH(Z5d)
+RNZL%+1Cr$4XJKPpu at Y;AT=(psY!B)ff-T2;m`5_KsYpfky}s at t#3%;WO7Xk+_XBimZJ%)_{(3T0>#R
+NIH9K;vI_lB<m<<VIFJRJ%V)#DLV;MF?t2YXC=Aa79YHh=PTE$O2;}7eS`x8WGI`A&M{qD>yB~UZlAB
+S{wcD1 at Cl_X^Cw$=oFfCAi1LB<`w at LzFHXo--oYGU$Dq8&&PY;UG9cogs;~5uJP0=I~We9FKjqj2H<%
+SSzcd;>o~aZtK^*ax5o?7`SOwFd%QruXZd+<J>Q#LM3=9;XO{mYe>sdFrVq)3P98WJKTtA$z|ey|PQ!
+3(W`(ocYPj{4sQ at ju*9j_tUaZpzmfdp<C&j*7*q8O8JEa%x>$GXh3j5HX2bkhPhfkkgJnx%?KH(+<0h
+v6>=b&F}pG|H8J#@nV+j*79H+wa7o9JSfh#9lKBy8t`->_|-U=K7KYR5oacSa4`Rs3U>3y!6^yjue<>
+7#@HUQ`S?x_f^YV;K5}?He(1133Xi@#FZXlb_!m{qUL~sL^iwQfWtgpbiG17s^=fsI-~4qMU`34VkIT
+Bu><39*Pq_lTA&)szsHIb#m3Ov at 8<jDV^Fe&agzM;o>@PPM8Dn3`NnirY3UyTWNkroYhK8du(fJkSZV
+;BeToK&S7p+w at P#!x}hf`XUapEV94 at EbFG%;(01>_kd#|Dz_3z`N4~ly-Ve>OLp-yP4}y%)gU7}-1w)
+I>0h`0n=Z3^}Xc0#)Yv8-4eCus%k2Pn{pu=n}RnevDN`Or9*F at k9^=TPQj)XN~qctPXKOrBIz+V!NbI
+m8E;}r7=2{=_WGSH7k1do?#@wPqeMfXp#VDJItM-2-Dz!|hpB>{0$1XW6-lA3n{+;%u at rQu2E?SRN&o
+<|65Og=_}sCjf4ZhLGTCVgy}t<*EoR!x?tv{xQ!^|Zi$%RNUPnnFfcV_53Qjs5KBfztqzebETEhJl~&
+-fe(iKF=tKep6Y&D&Cn?b4RIWtzZ2GPS;?vo at Q`2)nAm|skif(dRs{XejO<gFk6U0U~5Y`m>9O+U}_p
+Y- at o*w_)(%LRwWs_hgo{U5U|-+7SL`M1%o|F-nOAf&-p!B3{u%nnqIOCcH6RT8B4rk2hE1PZm^4ncIE
+Zdrl#Aq?tt74Mq)oaA7B2J4(I>NzJ8MZ*S2z9bHm;z9<ChGHWa);^7zDS?+tvCjx+Z+I&+(L at l>h2zo
+!UG^s~<2>ME~Uh$e-8hqePj%+C?ELZ;0v4 at _sCw-Nd;lA5GdW^ep8cM7K58KnMNmH?xV$=q?flD1c|o
+S|FHxOrjvFGvk2T2zw7)SjdM6VQI-!FHC75=cLJ*fB)^z?Ze4P|vfEB;dVOr?P#LObhOViG(DiP0`FX
+gy3hsxPIASgCQ!lkm6S9v~t$SF{>buRFyKP{u3jAzGkw7sA^i=_!S2QF-Vq5+=5+<1P^X24Y-Tbu)~m
+AYBKUnYAxH$9Fb=}r_!MaxJA+FS~VI6anKCN+ at DBYjg9lB>*qnU^X6uueZg?KiIGko;iS!533~H%ep8
+{BWn6?)p<|=m1vy2bold2u8STV8Vsp9RFupadb at Ng|Y^g_LiW1Kb5kEI<__lb#iG_KC1^<>6r7iMnvv
+=CP8d2RBb$lm=GMYzXKN|1thy4(Jg2Hqq)W-djN|uD>m9G3=fDX<tqRHN6&`ld&)nLw7|3!rN at ipQ%c
+CUEk*)@zZO``p%zLh!M2GDCi5U^^h`C$M8%CYdPAws3;G0klLUymNF!mSrv+=n~bcJH?DfTFBQvpI6R
+Ese=WtA?!m`1e&C>}C%MV~Tb)V9aJK9oxcnMGNiP5xaUsb>T>~Es1!e7`c`90*MMO7Z7&+Q9D66Dwvb
+gCf!|_E`w#)X at Q%@cp8Z_1vbw>jiQa$Anqp3<Qa>G1Blttqe9(Ueh?*Hv0D~(mRo80FrZ|J00%(<SV%
+-88}-z7<`=nSRa;(sM3{9U|1?gnO-vA3qL9}Ty0A;_*0hal2+PjqXUnS5lkUREX_Oaj{YfRNi6v*k!)
+~D1_0u6K?Z;2^mRCfk;M;&cG_@}~+#LY+AW4q<m3p&+13{fKeHAugyJuz&FlqYw0rpdJ9hgJF>K5m7r
+Qz}g5zs9eQUsxjvAdhW at 7TWIL(It6sWRDTdXH_n%0E;*S(w-4vI$+`O`15fGcC8)fo_j+V!>}uaSF4{
+B5}+qlP?0XYfWS-6J|x at ICoGts_A7e?N#6vyqrrTHJ{WrE^_Nwx??hOP+BnELR*714>s08C10`cH81E
+Hfoy?Z at rI)2oeyS)_SLSKIl at 2j6gw((FIZLlmf_6h{T-_?Z%!<3?-6rf?yg9yR|YqW)Uva;w)OtHWog
+ltaaya=)3zlxubZ|i&~?kR>YG-#p70l^hh3H1Ip3#VE0m#qqBVH?^2BZo_!se=6?@B>O-kv<J+X~nY@
+6oR*#`lgNXHR#dUV>njc3UA#A`xo%>|`pUU_<T2e+P|%eyR5a~+pgSwa`&-prG=b1bJG_1P6h;dFOb?
+n#)dV%{FRH4uoC&Mdo=ZIN9wU*5&E!+Ty at bI1=f;D&(D_tv{&86zKiz7HGc;%Wbo=Z-h8&~4}WH?WT%
+--G`FP)h>@6aWAK2mlEMt4LNUI;4<m006Ix0RSZc003}la4%nWWo~3|axZXeXJ2w<b8mHWV`XzMUtei
+%X>?y-E^v9xy=!|L$B`)foxfs2t`7hS97%Sv$tnvciljI?u_PWzwv(lKfFUp>Cj>C?3_uFb`u**1UAw
+D$8X)B)=UF^{ECSP0eXFjndmSDg9-I`@>*BJ^nzF4o&9uy(oxD0YPJ9jyp7};qn-$r-zO1IjJiDmoWj
+3vs>!Mngv+TB7UsX$ZzGBeBtZsbkgLZR1tD17UuA6PPzABrtzR0ue!&Rv-1Y^m{k1J^0`X86YqHGV=b
+#_(Uln9|};LY_F{I7v_Z3+JtYZ*v3nLL_IhS`H<y?&70UcrN#vcb1tKsX$FQ{I7bRxOO>MV&$OY}1xm
+-R9JyUX{?Gs+VmBJuix7wc5-9m>bps4J$h at tK}t(q-|jU)e_obS1^zK;9%zzVKrxETV3Mn!5g=AbIpT
+a*3Ci|xZSqva-r|H!-KrMyyPdttXR&n%@Ush1pff0@@kz;3)qZ#D{yIN=GCI26)LvW(Lw%Wwc>XO7Ii
++|wCj42oxD8BzIgmOELSlr8<;+<Vb*R|tGZd!<R+8Lay_0E>!LrHOb!<1`l_Dg2Zw-M2Nw-M7>_SD>r
+GRR$62+Y*NXGDo^RIWn7<z!$nP*o{j+v|Rki-Lt`?>K-MGKj+g0fr!#r>r=BsoeKin405_ZV7Z`Xx;c
+ClFkR at QU(aCLpTSyyv6B*KBZagPB3E?|fB`?Q|V0aX!6e3PnO&#QC&UM`Ai4j9$6r2_-o8jN{eeq7%+
+#fleC#-J;QOU-`*fP;0jeR`0=N1o!NgYx6FT&=TL^wZ0xsT*!{l$~s0YnIs;`R6d!1>kjcUd^lZ)`Eb
+4vZ7^3GJ<NAk8jH543CGbTJ^E>EQcTSMSTM(B&{~h9Hu^m)3O>Oa?y~F03TO~4Tw8%zyRORw|HK%7BK
+I;{s_Cnuxk&9Hr`D(db+p<dNKrrz!Nxxb1<)#*VOR4cdtIY9KZkO<mBzU57{XD&}_;*%d><d(!jY;>>
+g&Tramvu=UV^@xSxIX>}3+}AK`eF2l1!@U6#0%bvwpC^)b^EUG0{}-U6PiyW7eCz#8U at VhS|11d3U-{
+^zm#S!Pg7rzNapv0gXTIh-$CUBFNz*s_u|k6Ae{wn(330n6zX5VUsD=BD=mem)-K>W;@dmoM=WtjwEw
+S?)$7CT6(dV?pZixZkrl<yz!GwOcq at y}>=&ws2!q7Ztp5ujWnp!v=1oMY&wx?}bItTr+T>To+mYi(&S
+7ko_l;FCFK&T3*!f6F&Q5z)Q4fFJVdg^f!JE-wPFmE%Imc at iCsys{-#5K%iMuuU6$O&;Cd>G!yu3cIe
+^UR&%%{fU;zGo#y;xK>t^Im*XFO7{LIK;H;d^3jo&Ei!!^M1Cq~$uoI~B5?Wl)WsY|oT$eSx)B?R|FS
+dMl!qo-?$q!`hbgS`-f$qj_xpupM0DS>c!aefKUq1eh$J2keS>mCVud+aRW#GTx;N^LH1+ypqfVhn%{
+J-6ld^Hui49Hrz-KI+$3EO;&moQyy2o7&B=sI_O=#a+m%k^eOB>!86_qqc5)349}26P+-MQ^}Tz!e4?
+as?RCmh%f4Eq)pR&@7Q)ludsJI5^(;Qtn_3EZq58paPqOvo*j0wW_vS!WFfgmVJ6U%%F#PX&RYP&?6o
+pU>>!1%}St9$(QaqbQ&fPFc^LLuNnR5pFR9CIsEd6f64Gi|Loz at IJ?8Y{MW4hm;dbHU#3_8@?V4cU;e
+X4pGN)Vzh?1&@y}lT<&MQK*TCv5+#IgUZI`Z at ft^BwGYbITZn^{!$uCg-<$6q)0^COU3vjpnrq};|_A
+vYJ?6f%k at eKd?KL79Rc+f-EE&ulAyFa{r|8ihP0POV?Vf;Oqd~em1y{B1k+8cI$zp2XG<g;V^6)v=5e
+jGn)rpY&E<qiJ+d-MBGIjq@%`%0 at oocvhtd=fzWZM4aFyW<lSz3lSj#PxNW<A<7$bPf9Wbx1!BI!yuB
+ at Y<s{v?HKDy}Z{2%Nqn2?-Kan1R#9*^y!l`9BJ?Ilh42S<*)wz*T4CX9gvQo{fuU}+$_qbnzB&QRBgR
+XzOb#z`HVWre*|%0-v3Q^I$dlJ-|ju=JwylxL7StjT(&Gz01s2lS69WO^KxB00 at -&~%}`E9cIUi=(Uu
+t@!a)i)J?VveT+e6WHg|T6^$w%#^laz8rx7Ke*SBzl2MG+2-N=E4KvQI8`Y`oGL!LfxuON9LqU$6J5M
+F?HnwJF%S;b}YMd<~&1)Y1k1N_`xp_+&1iaG-N>+~3~1<~z+oUYyPyOqjU^{U_9`CuaJ2Dn*d;(ja}k
+f=z2C_%0Os at 7B>Vb&K8=?G>L+Wrwgmd~Cc?;9>ZD}Xm&&idV>84yrvJMd_Alp)_s2tqoh3&308aY_GB
+nZpw@?*aV7zt$U8fFT_wbyuy5t)^@@^EHA!4BuH at UyfDr)aC(7=Gg}v0_*k4%VN3(L<0B~j1krmR=#R
+uaMcosNn5pRpl8gNWADrI)^X>|W`nHI)U(Z$G-9xWdSAuxev?1WvscS(QMahIYEiQVJt#1cWeZ+V9Lr
+|8EK%4kKse3*2&0UEd0K=Ep;8lEi>kJg+cML8y3JTEIR|*JI!m|J<t~<Vm(s at J7&DfD5LXc at jSpxwpF
+7fw7BQ^z&81&1vmC3YM!5rZfm4v*86?oNWeM`%VR%7>@>BQ><}<yXmpA2n^u#|g_-83og1oI8zSSdY<
+H@%ZpgO$AZg!+2$>;K1dO;OX0`Av at i+4faOLVeC-vQWg1W5D41-X$1PCbJkIpEzDxM4yddXjF}ua-B(
+yqZb#JpjY0-=MN#jOt1l7z_^?qn~)RV-e^1X&;`VN_3b#cyN6yLl+spKgc&Lybk;DgdP}(`e;^7*Ev#
+L;P_f-ILrj%U?BY=^T_XkFv}g#R~{4f2Y<Rg4;1IF0TkVarc-1>+rB|HdUkq!h7eAB;}$iZy at xkv{Y&
+_fVJQQQEp<q(9}@km6W==!YS|qE_1jXvW~k8pSs&iSalrdKhe9L9MTDK03sh+aKL9_x+V*uNsTXPsiw
+%Or`7pDiug~)-P?AQ54qs)DxRLFUbr$I^!ws`t%UioTPb at 1UA@;WfHWt>F!N`|+u{fU<*@L3FY at e$32
+Rp+TM5$T=xe>j&F8Sf%;XAo5 at eb0*y*67EAFIV?;k4Crr~k at D6oK0Z)#HG?@PA~`4RkS|%(uu$*T at AR
+!Ch2Kf+>J_su$VoVw$~upZ!JDVD$!Q-MLbCw#z&Kn*RU}Hr#itf?MgecD{{9lVyL{tjXMz-Ij2V;{}Q
+Otm#!bMFm-?f5-a_;9oE6TO1<6atf}_(3qEf(7+7{kRG7z3~t6b at RD#Tp>3(YaAqQUMd%So8`Ek{tHC
+<E0`F?L$`V}-v75!FU9;sV7}<2wG<f5i*Kl3mzL!0DCF~4b-Lq;<EvE2JODC^bZdtx{+Z=23;8<3|(7
+7gXB_SU)4Edz2z0z%>O_{+?6w_(l%%Cw`<AF{QVIeI53_0IabBl$noP~#rVp=O5e@|WJi();!>SJ4O1
+|0JOw+m%1L~vp(QSa-<3cTgvtY~hl<)No2!PQ}g)1xjw9)H%tf4%IptPg@){<pe<yN(~xEz}>JKK=Y`
+Fw7SDWm9if{VxWd-ISZ=+hV>cjY3{OM>JO5*hp|`TT3f&P;kD-fK1~t3N!}{;15L$jJ7jbs+9p|ju=m
+-23WC2fE3L(TfyMh_+W|*DIbiUpd85hJ;2*B@;9qBexnoH)Hl_vY~VZpV4;ct-b3 at _n0gpf5Bf6yv?x
+~L52$|ES4mT0UTyV(&S=c|MWZu6mBk|X3As76f^=R-BOfr2LF4ix{MZIRk+BC}mQ{VZys4UciDrjlPI
+7ruvsl{G3!QAraF%J|jBXvj7PHy7fOBv|W@#Ejxx__e5Fn4uf`z29AhCwC(iC)n#%PMdpYf7eZdP76P
+$;w;<wXJV#CQtwSLug;(o_pzzR{L5C)){)gIWHP(W+;rh~0e0GkDJvcqg5`E|x&5+`wN1n~%+$bq2q_
+#C<$r3~(z+CxGm(1Og$?2>_i3d`(XE^Llv!WRM`)j^5PkKh~S&Ob7AJ5=q|jB`y{9>efskYS-VXJ(*q
+$Y#e5(fO|lquY`-w4kH~JH{lMbbjg_Y3`|l({Z(yXxRJ#Lqlf$A9{QbgHz{thyF%U11ev&cz at BBv2!c
+8(K(VQy3<IMMN?nX~ZH at vQFJ@@RY!$;_O88-eOoRTU3t=1?qG_}KX6!se5DZ`6)sLm%sY0<E2SP2pQO
+-(`;12N+p)j{r^!w_o at rzgQKOnF_yn6HO-Cy0;_iw*>_xz>%`utBXpa1#oHy_*&FJ6B8^6R%J@?CpAJ
+P}fLn2`bO0*)r!O5qU at e~hNQ#BtJ3kLGoKy;-5NhYao2>vCP7&%}u*e!W+EB<zoWgf-K~x*sR79{x9&
+=;dYbb+KA+EsPR>Fm#royxGj>wiQ6JUtjRKw?F+?wK|D_ at HBzIBEczz2Fg#4e2uSQMdr~{b|@L6WZ{X
+{N1#IfHDzOzwyWoZ!G#j{AN3!P&Y|&b(aa*=s$S0Z5`vp&QB-t(p4}AHynxg2A|#OqXDWk6M5OPCjOS
+XPowr05vU3vlYqYGRJ_wL;OV=g8pOpxpRZfKE6<|pd>T?w*;8$S2X&~dVGrm8>m*|xoS?qz6mm})dkH
+#LESD&Fj5ZrFF?J+4o=5t`2oXSREv|dGl#Hei7zL79`?;ZOEEcLpgqdN1idDy{$#j_DWC0K^a8#^ujF
+-HHGIZKy^f2Yagwe}NoVZI9hp7BF~OV5;Z7cjpE>|d3QIJ at 8;Ae4RUk4t>|_-xnf0RPUnpBRe?%OHC<
+TxXgibuQNZ2M@?c4cI?py214wBewwbSZp^s)$zHt;pleb=hcO6#0>26n8?CV$52>~9s#qwfhs`<=Q;P
+gDdrK%<;iZvIAOX at Te6@t_d6~eY_(g&>|xe70EUBj?RJi-{~$aiyBkK|<MR at qFEKMrkszSL6r_@dG-G
+f|*JSHs#h!>p!eaXyo!|GO<<7&h=P1PM at 1H%)dLWSc)1WK&Q*RF{Yoj|+`tvilo+$=uH|cq1=!oS at K{
+{q}>H^<S&b5Dtu9H1~zI%HhMA}xyNhCUkCUn-PX_4Xo>2UCmoc6u6f_u3)#n=O5>=d+5<AWAXDS6g<h
+;79Rl>x+>^y0DL?Z^^n2yO7sCuL)t%Kl4Gy7GtEa^|~{Ex2)Jb=fX^Yt`Rphs4Qd7iEDSRfnp;xU6o<
+C3zPk5;|^a3``zyq-b?wmFvl0$FHCL at 3-%eNO^~^)2CmY9Vo*IkG?oC94CDL{J^lB at cqd_z;nVcj}I)
+<2|pY^VeMIpW9pl~$xqRab!!!C{BAah+f3Mz`MPv(vxa73AWwL&f}coPg_aKZf);1q7Fff=xe8Avi+Z
+-1m*{xIZ;mGuX7TVKCWb<GC#Tmz@;Fo{>LPo<&>m#0tsEMa1v!RICLP9kGNHK;ot3c!Bt5aar)H9<e2
+xd{HJSRP&ye3Xz`S%+nJ})-sANp+!akFM;ToFDK}Q(+keHr^mRIVY8lxr1ktGiXY5F2Fk9{^k`h|c3U
+6qWHQJufEr{=XYQ7)1S>d)miQa~ABO54{bg6ExK?H&5I3M?R09>IWYp*}9q%9Bho2C-<hMo*dUo(~1|
+Kp?7a+^XJK?=d<(leHF7%Rl>>D(^IMT1#}=MG$?rviJcZ818wLRR|ki7t at p48nCMi4{DV4da>FNPBZE
+aAH63r`q9_bc~dmoN6+h~d|x&<6$qsAOgMy`-suHkpc8RK&RI{@r$%W%gsY;ZMOR;TlHrQk34z_=kw9
+&kOI at yMP59m1y(v8=--b?mC!||n%OrZJ77l>!w%XgBFfW|OAkVx(ls8kY`6}hGe at -v&4MMD<#&p|TWG
+R~IRbPCcLley3dnf4Uaq=8JidL&B-mvt`7<M0HMA|ETLOw<c1wH2(oTojp?)okZiYS at L;w!%%i^J?RV
+4_-HjlcZmFWGZe at XxmlP3V0KGz-1YCzHKK7Yw#RVXR`a1KO at z_A|Z$oaZa%>uS0ANLPWXr9<i*P#_n!
+ at Ol1gq+ef-zQ{j!PsuX`hzE+T)uoM+aM2mqY?s%%0};+C3Fm+j+nEs}0|FrJE;|5CmAtgzVc^mu>VJE
+TI;H}T&!I^mXe5{djo at H!@O}ZZ^UJebUC0iz!(nzfK1_P49I6#!mVY)o{;WMjLj)kEo&>=4!7#HwJb@
+oN2QYaOKEY0bD+q{!Ru$yc*}jEVDiBo>QFt{oRv?NkNL=6N^9a`Zs;M`ZSD6H0i4Hr`)P<xqX$<L_gd
+(p-T|0Dc9DJYCKga$2!2p(;2fX)fZW6p50Xd>G87a38ECMFYT4H%kseSu$5zf5kz|)cE1?qrirQ=nUT
+boV1Jr4FJBR&ltD+vGicL$=<VGeEGY)ahQvI^~f719#Cvyo&-XKsvS;{?dXJokj at 4H1)2y+;<+n5>A4
+&a(Qr1 at cn1A$dWsH<=R-g3NfHF$#XucB7F#wS=iG+ATQ&#Y`9l8i|I|S#OE#qNS%$`v}0qr+W;KZhv&
+({E8n04)6{bI)}gkjfgsN-T1cXS$`MHlL9?HsCq3ZQpS72{zYPeMzmauS7HRm_&z<(|2 at y1!C8*pD=s
+Mhgl;u5EaHKWz at RIZdY<uVlyJ(z>rm`^y<j>r$`a?Zvu5^XK^%U+%Ye*0rAAumn~Kr)$)L;b(0KiOho
+7~%&|ltZ_v$bUe)v2A3x+o{yyLIwC<GmR2|YY{oPTkMxc&W34$4CL%}yx4JWTUo_6&p at g@LIRiQ=+NF
+bZ)t<gG|uP7++_p%ffDxb<AgqWD|w-56xNbRD8F7httuv|Cp6w~tmjy*A;CUvyvmVvy9gbcQeNl%qC4
+8+iQe+Jmc0lu#)YP at -T4idq3KWM9(nF^b%0L<y3Gv^FND-e?#SGIheZtSR{HpxY7aFr3xDkF3 at hVGJ|
+=g{&L?2Ku^2drqj~o4A)IY+T!rmq<1-5GDdn$^5bvxe~pfE>JfMo10&Z#T|^>Ao`4;>1j`mEWI;%J8-
+=UTi`43r&a9wX`#56oB5g{4gn4Y;H7O<2Wp{0F2Mot%)ea{>aVMHaNaq=^0DHC9dNArfWqg9?xocZ2x
+N%SzB#ud<%o5EpRqV<tv6(<=F#nhnATtjut3EUz`-l21Iw!VtU9Eq;9B?q<7M;R;Y-RRP^#TM7zFVj7
+7#GYzGp#a{DJo(_C=AA(6Jk4AvVj#Oc+D0i%flyP3RTYRS}9$h!LTo8(Bp+M+TBcg}gH=J06cj&SA!m
+dPKUDt}s~!BZilFs61 at PwOwrB;^v0X<bI<Khe7~5gG48ud#o)E!MlZ6WS4<H<khF~D$Dt)qolEfD=Hf
+4jw#>7jb0V)cp;DbX7DnB7j?<Efp9&&HaxeIRKw~F1=#PLp+uK#Pd6VruN!AB<N-YmNP=YdkObhrl1u
+m=(4?-yU=0xA&gaGQn*IW!N7RSFx|`_hvY3&;hX!Je|G2%X*6a*`7blJrqoGYe$ea`<_zpu8V3PaeXf
+nZJ5Rz66jKvRRdR3t99<DZIDC$MEUZb16T?03N^4v<y|5cmV8dy)~#`3!?>(8reOp>7rH-<HsOa|$`#
+F;G7+t;#~t|Lx4BKYBxs+b-XSf{(4_mlcwgk8V<SWYRQfSWD9rJbX5 at 4PB!{{0NSngNH4W@|&PJ38 at x
+=lB?tp}V<AkuR4*s}6`D+sElt+71qPy!ZMG_BR{4m&V<tcGoEhuR;D5z$+px!P^thPfY~=g#BmF%g96
+_?ruzh(nDq6!%rJ1Dpt{-g$8>}7+?wEzjm}3(f>)K6}6<$Hw~T<O)XiI{>dXoLaY$`dqx;j<OB)Uw?h
+&fdU@{aA|M)`SpFQM5qqHS>sF~pm`CZ;sD~V4 at 5kv=CFqegS#ZcGh#smTGvA`>h*YI`miok#w$-AV7Y
+*GP;S|SXbS`pX%6J)9Wo!8r>G?UF0H9D}|04Gbx+U}qqTb~7tS<_|k&a_v-B!r*tWATsPWNOx#^@Ly@
+Zuhx)04!5shE8Pq7~`1D^Wa!Qkx%#jx`MAV!jKuQ5uGCvuD9f7{fmOU!5FiGdW$8UvAbSE($an_owqV
+Tx9q6NrNe~_(I^ucIDIFK({!F>D;QWJIZcJ7==QRPZu>-f7o_Bj at 8LYl|FusD5V%lQ*d!yg8WC003<{
+ZPGBg4^~y=f%D1f*-CdAz8N5gg1gzukS>3kkN71))>FUNqr=Fzv4hxveF5zMYuEG)YSjN}c?A!S+Oz4
+o5Pb}P~(cusHE}Y}e=_~9?k>(%=!Hd!?wGN at v=yH at 1VsmI|y;-Xgzg6!=OGnIG=i7`-ESdub?+5a9%Y
+udu8&A)yOW6<jbJq#G?-n2sSFtf|Zd=c9 at M8G^*2;Lj_l=s4{6i7(DwZYN4vxS%6 at k~PyJj;&)kW2k6
+S>j at wS0xs4=92 at 4LcHovt@A_u_8~B4nL>_ at sJIon5KHQC4~kuWSs%&52sJhc&((bUAT#;=)3epKk{sR
+hO5Ff9mDsq>&Zl6qd@^p|13>xySGne@&`;N-B1ah>X4LTaQRWZamztq*f=trDx_)M03xhv?pQ2O?%LT
+7)%A5t1Oq0CX`QkOJ;Xj7pkjVoz~#c`Xzn(gT#24as90h5OgRoK=-v6x;-{}M-RI at BKrQ)XqT2zJnii
+peNvc%z+y`P-b1nt1kgb=~(oG;3jk-?-usw&M`azzPCwOSu3Es&ENh%QCxH(W3p#!=}_WatLTg~}`w)
+TYRF}!2v(^sizB%~oJIRl?IS<}|>EJjl&v-=<>G12*mN;ttQ(P&Z8DY4;pWvrVVa~<S7fUoD6%>}jht
+h3Uwkw1`g84ic^N5tzQ?3`>Nh|89SqruOx;}q at ZlXUHxL+D2?vtb)<G@%x;8dV21o?iO4C`$?6R2_eO
+sbKyu7luiv8b`@tm_uCY`;Jj#@X2A+-{{0Sa1K!%jI(@B>_~=y&(RIew1X6Svpl(G%lcE-Of^`ZgKTB
+#Y#$a=M6nuU3cw~rv8*Vcj3~a5ew5n+UW)lFG#B74MN|XzWFgx^+RWJFn$J*UeZc}XtD<Ztc2DrvXyO
+vG0PCd!Wh==ka%-yE)#3Lfk}+X}L}4o|`H-_8Ag!HSxFkP0EiN%U#ylC`J3?j+izJz&ZgGJyOa*N{ts
+9jCb6%q^OFAJ3N*){DA~Y<(j=nGzUgh7QDkY5%mIUH*?h-hNlq40kwmmB5@#;uQFWOzXG9pS&w at eUnZ
+$F%9qFjZen!A2>h&tv~ete3}&(b<C8#mFW3{kRXDPxo<RQO$QkJ at L8!q0u|QPggyO^Treb}9a8mu(6^
+){9&H3EI1DRJv%p5`DQ-79u&NgQ}OuvkiNgJBpgZe}CXmRO7uPyww{~zAPmL4FyVIvW8wL&EJ;BwSf3
+4<-YEeNn6aZ83^lq;{r=5ha=4#6Y~X)gepc{N*6JYXedQP5eh{{E`*%XveVRM=n4g6Oj}WI6P=ynK+c
+k`oA`noVVQ7Q&?TVkZlfoAj-$CeqEv9m5_v{P7^4wWO<;q{W<5fFXQ=7SM$9sG*m+ at wBmuS~kszto)5
+;|DW_~#&){ckHHcQ7343T$mLZe^=Fq#;NfY{2sD|hR$<1LVvkClk8<ah#`wk9is=_bIk60PJH7U2wjt
+$S_AFZY>ozb(iUB4XYLxsgm9cSx7RF2rVB>`8tF$HBPF542Ab0-?QeC`3rsR1CmH-z?{-VV~%h;Ra3u
+28Md1Aq`2!^6D)OSFo{w!02zzDXUS5+QiK09`K`CXQvbbwKJBCu_?r2x}*5PxR#g|S!>6m>n!BoK}Y$
+v-K~1t>OH7f<64LU at J<26$|u<3^ZhRcodqwuXgbb}sGM1D$pW9yj%VfN5_z+$3ieC*ggT|~Ixu+akGp
+nqCQA|Xi at 6~)UFt{k6H&~`CU=4OybI&=-9R|xh>&r-EN`t2MYZIpoe3^|(&`|F+;~z&5qJ%Mk5-44e5
+}E-aPm at Aj8yE%A%=G%`atu^h5HvXp#Zl(2l<R7iHRMLHFE^Nds_!g79;|Y#))=Kj1vQrGv;zxt8g<J+
+GSP~-O!{>A<KzTSE0Bf-W6Cozz1bgaG3)Tk=5>u3yrRJ#UPemG~-hxEND!9?1c at paGNq226O08j%s;R
+Un|8S!>|<*$$U61mN<=b($%7t(5N at M@z8c~zr`8Ls<~j<$;3L0;Ntt7ttz4!V*X7?Q3F&W>N;de3C;0
+wxM``O=dcET$dUS*!~u?g6xUqhk!b2#DT7s10Fii17`azj<JvbUa=V0p*;^G(XzdYK{C1EvUX8w$%Ny
+<yPWA)Pqds>kCha~-9b~r(shXrUG0-CJ&8Q&p0^F?l=EA&pR+a15W<)CgzWr@*`t<4Xld}j^O)i3HUM
+AyQ!aCp|2W;aJF<Zx9h7|I=B+1*fTi2SkrHl+gs9~naL>%rI4mQO&w*5fk`WlEJo{#z>MDSWiA0EUo(
+70Ov)_~fy<;7-BTmwg0B3w#aU!0 at 5-DLvE<29ui@{z4~kqbSbRAw*|GiJ`hX_qp-on%FQ@&x4R&+$O6
+ua3!WBO=B>kQcoNNGUoWccfBm$krd;uoPGRif_j0b_!EvFYp;0Axzk1hjULR-N(DjPHL%uF-8~kL#5k
+(P@=Oz1WGGwq(4>Iq($$ejP!bVItUd5l1oQzM#opUN|5k7AnvO?+A$_v(|)8tlKdzgLbyX8aI0)q at +q
+-!H at lbM-fLw)2yqk`ax7z+j#{JlcBU`Z&k<HP at FuC!cfpl+`2NGgj5q5|UCr(Qhxfq6rXeTYMDh-^ym
+tVyxbcaLW4YAShj!3-4eV-fkp5H<44F>oFvs7<E+}FMAPvj5GmP+lJMLoKJzYT(r+987OOvmYhBKKBf
+!;PD^zp0aHn8k%`jqd|z~bj9dt0ws&OC95Yjv2lb#_s7aH23dYPx4#9-(*758-0qew=k)xJ$X42iZyj
+ at PmW+8rZZxgK%(r*IGv_yy5W!ZO73~Px65(x`<9OEsigIv-5n5a1z0O46-v&7gL`ctZ at 71#GQ3iI1zB
+%&$z$t=GtwDTAz_c3MVOYKkG14AmmEwK;V6rMGEKYu1?y0t)OIh2;qj+$3`SeB3&^Lrx~$5#)pQf at oK
+)ggcB`d8h;zZ(I1k3@%Vm{ng&;oA_JbYZ~>bt{gZssQPEF)$3_}^`LV#rK~Avw^lA61b})vL?Fo(DQ7
+FEfVP|(NEtURfRnrZS9z>Xkx3>U&IIqszqy-*7sJgeqfftA2xMR at p5bo!#%qGGL^e*o`CwYk6Y3gFu(
+}@p4t*%|q`$?W6t%()Y0V5q)g1arq=wyv|y*4}KUcFn}p%u^cS2RWNAQi(RF>~*L9XK5-A=gxcr;oi5
+9E>_=jiu{RtZiPI;X0Q<*eN--0qSnnHC%vLL=jd()RU-M^A{_uVqj5aH5&n8skUAYMVC$j+j_eaaEr3
+wyc_6S&}@xApkW3A6TeE{Ey~s9%o&yZM2#{d6dck26PO*0e{m0-0ugP#<ZN-ib;*;sbJgQ`1)}brygJ
+D)<^{?yGcrB2m~)r-qT5n-(o4^4%uqv2mVm`f=sp>)WHb>pVgoXz%Wc;|=3v@?r&thBv)rBmn6T`F%U
+P0reoTqtpJx3 at ux1lfGUG9#c!S9Rcgq?#qSlhHU#Ktpafa3yR0qUVO at T=|;ijYmjF>tE6t2D7l&0$4a
+q9S{Gm@=a$~6_`v;q{Vr2NEq;NC?X3DnB6sGFsZDRW0T7(`7xv{#HM at d%RV`-P*vdFYglxIy2WZ`utZ
+zmFs*4O^($QC=?A at FXn#sya*SDr5_sJxp{GerG%hKB80QRQb+Rmnxf_munJLXQoI{1UqjfX;LtKu1Ob
+YBf>@H{6_i=kY0(@F7^2Rg(PhIaAa<EKeUd>#Bg2T5A9o?OkNeU`c?|fh4~T#@dEiuR?60!#(UZ>4FK
+1c_5-g<|BP=+E{6~mP%!)!XD11^;Az)<rzUqlol^_sEP4e$%!acDo;=tc+twePb(?n_PdywunCwRECu
+jT?NfjQ5R2 at L#q#7mNLVA6Z?iFhW0yW^X*KrJSU>$DKJdw at 3Nj5};6iUBamSe9`rq&<VAyF6Y9<KP#_
+jlGuqM_~;?~f>j7-}PHO~j%;JJ)5o$}a1DLO3eCt`m#Cv&)^>>NYzOBaWZ&mQGfEupoAA?S`UohUmeB
+Hv#F8us|vLs at AqrrPjCExAf8MW4c6h-NCPh(}^jc at hXaWbiz4nCX&QhB!4^zM8Gf@%G8<)2kIS)LhB9
+rdy3REyN`{B!(+&v+h5gfTb%<#xg<xhfwKTv<vmu>9*Qg6R^w?Rqs(&V_e4cXuDl(u7JGp*r)JDeU6`
+&u4e!4(0J!Or)9hw`LHuUqIsaQC%vh!BrdY;{Sv1z1Fr9D6)~v3t<VQ=)i`uk(kChz1JH0<-<Rf*GVQ
+QH6{`SZaT?9(j8Q315(JodB2jx)E8_5|7l_!n at h{(2*O{SjhMNH{f;rhI4<TQ?1z6hlNi3X8b-ErP(M
+0U3PQ~-j%frF;1zH&oOu2I+9OxwpsTVu{mdeI`(`wo0(AGR(^ItgXJyPfJ?_VjGnvEy at bmtmkSm*2X8
++-L!mdm5(442K8UKfWHHk8Ko&^L4=fhZ*-d%xtugymXM71!-4xKHU~B%*o6yY~|veg4yms5;PjwNxMS
+4-r6<m=HGo?tP&<&alK)K8Pno&QINlU73Ywq09$K`+2I83^*xfoUf&Wc*$-K9iIV=B$HRF<Lq{7s2KV
+bblMq9NNrZMq(bwDu(Pu2;Y at FnI6l9Gx##ocFBTd$5Tw{E at 4GK;(UjHCQsa(_a_y6AG-2PAb&7VTHf!
+sG~rh3erUc5gTV0va!!wn1y`_7omu}w_+&A1Fq-;B}+(_3jGjxBs&VrDUt3EO3{0*O9h at vJGllv<Jjd
+|xmjH>2tTqFU4}C!<{zi^5~PqRez7%?KMJ(|aA`F5ifFs2*RQb%Iu$VSi!<J at J7g-WAQQpT~{x9i!8V
+oJov!hukb#Rh3pwg{@g-V>LdyWD{|^uSrfX=E~bdtO`j{!eRuO`|!ij-}}=SI_}BTib6F;=*M!Gcc5l
+ZaXCD3CbY>i53i1l<^vOOY**Qmx!p(|lEScG=9f7vUGIzhi{4~1 at aFhEV+oV);|FU$E>Jh?YdWDEY}U
+LF#N-jWDa+so97DujDM*2~^~Qk%s&d82fLGZAAkPnCZW+(--*9;WR at +(OK+mFC`&^bcU)tWy!<>=uo}
+f at 197Q*J*5tbDpa(bLPDXMj!-uF%>6=4fE?Iao4n0^q(b|F0T%0mF`8x;P*OH*joW0+LO7JkM23L|Kg
+#g>RL}{>8hK?EolaF_yl45b!lnq^U#+31d(=a(iyDL~k86Uf<#+Fa2h}Blh&FG_mEOwiXMh4s<O0R_z
+Pv$9PAo6t>B0}Kbhc#n&?%+EvDJvW2^yX&Cb|Rv8eaxkkh=UZwN?j(=Wq|s;kPdeg=4f3)gsQrmdiT}
+vKkOzzKkAOX22IhhbsQaOrB`<d9)$-0*SJFC0 at k6>8Y5h1%7;)Uu^6p5eyVBxrERb)y52_uxVBNi`u=
+c2d_UpVl9CJ4b=d>6ZaSF;n<b9d^)YI at +I47-4MH;}7M!tfeuIvOn9mJ8AhEn5MWltTO?hwf%HPmN7A
+)2~NZtk)<F=Xwd<(ktxx%j~3T*Tg700F$yPUzNq5ueU4aOmE+L;I>cJNwhJEn5MX?Nk177)jmx((WQR
+hS?KK)+iw&FSqzLBtwWNNhjesj9g+#~>6!=H0kVViW_Tp1u1wrZ&-1wGpb}bLXS(rWre%yII;-Bc~IB
+lt_7rKkxQj at l8lA2OW*DsztG`n;dhB!-8X)i5^VhYPwkUD9a_zg(D8kx*PW&C%X-;g*|o)NZ9^^TbSJ
+80(~7vatRH_o8Ca5*!x_}sjZk_DXJDlNoSUHA<-5B`)HE*R~RZ<b^Q=*OgG1d<{Hb5Tp#(|c#57fM3J
+{H at VW{;^0!sHlJ6%}+c|@}XElPU<O8}6iuCXet3e?r1X0p8M}|;iR82U88y$z|Zn&g_3kZ%q;L+A8p}
+%xtxgjPg1+D;HpB&o0!@qgRc at EaLw7LU_n4pZm87Bq(u;(+2%HFWz(Ij at 7zE>1)r@%uHM4JfVO=b}Zy
+p&@No%6lx#Jp*%qz_sOw3uV+Y*ycrN%xT~M3NGx7tB)udEN=+*njxnvIF|A;C8EppNNQdQx$H+Mr|8H
+ss$MlP}v6BsRR_n$PlfmYFz9ELu!y=5O~J2mz)`M at ZFrPdYTgOYxq`(&+0uT9w0&D>NlEoT~Lq~6evR
+;dN7bl;Hs{##R~wd4&y;Nw`D)^gLk>OSg;QPWwfYu3pufSM36B<G+FrY>ACgv)7U*TpQ5?k5O3R!5fg
+`!yN*D5`92}?6^FE0R=_t$mU<zxI~;)GNNgLv<?d**!VNm-k4|UzWa5XzG~rn=15Bl&tR!tjY)UwmV6
+vIkYQBg!hBC?|Wu-8+D}mpcj}<?T>*bMn`aVxWG6!SOWxCxZw&aPW<Ia^}Q4=+{Csr>QUdYIFEwG*3v
+d;^;>45+HtU+Y8>xH?zc|wCE`)Rl9j at _c9H_PBUjKiqJFDAWT=&PD=mN05h(SovCGxU1q%tAMcs>9T(
+V+Rk(U%R6ME^iMG(zOgU`Ej}=XXs(#^~7O8-u}DIa$POTxaOSH-gG`cnHE1L`lG4vcneTbb5SEjqo->
+gL&<?v{w$LMK~dEkx1B4JcyUOU!axn=Qt!z_3D2SIAQ2P>LSf?Lz?&1{(8b|B^w>5bpnY{`22nTFWwk
+8kV_Jv+Ou~Cg0_Dj6&O;&-F3ew-^}yChH8~gEy7TwcpjgW#IsO$lql(n9<)l(dtL at E^5UB{(Xh!Khtp
+`((9#M)MiA2r4kLzX}un_mj3K=DBB)GpzXwQNi*69uh`JSAVJM&8Z>?!QXI=S?wVV{5U=T0aZYjo+Fp
+}8liiMm9sKYOlsXK(d_je_~Pb57@&?Oc1qPgnp+|N4(le}7Kcf6*Gq=>O3bz?8E8=n8aa7^l1bXUrBy
+`VY-k)2#mN=~CQzoIp2m+PydYKYGA*$e(t^4V|akD8X5ORdJ0 at zP5px#()du_W+d_t-Zn#ulub}7>l2
+JJ_C9`6^$<Z#i`o|rzZ5r->WVcLv#f}hm;bY^<-S~&AOGX7ppnEi(yT-4e;wTEJ45S+l9psGll|Ohf5
+sd<t2|Ibgv6}kcfBTNLrAmCB0w*EN;4(+n|R4wA3q%IN!g^a{bgDhleBSYCOk*8ZcKRj$;+Oko_V at z)
+#BNs#vvXgKW@{R&UVvOLMbQtU4tKHF>^?IkE|o(F8gz!Z^k0Rk6I3IQMA4=QPZ<Dr!#t`r%J+-;A+b>
++@&N|MW62wOEihMN<(4#a!c*NQ at b59$Ce*opcfw8Ujoh<a0_`Z`97PqsY)k%qt>OqEK$|TCO}}6bg%v
+0(4IBjMygR1F=pVZ at i}iB-FsuFwM6IC-e#JAaF=+zW7mpkiLP=$x|5P3pkw#3J<(BWQ?$&OlGq-(6(Y
+81F2}@LQ*b_GLEdxICYmqM&e~S%?{#~7l4e?o%kNK?}wxCHnFvG+Ip+oa^AG8%jvx4oUCw0`m9w!4Xs
+3j#C{FF{g2fOf&Rj{lXzb}O!s)01IWXSA`&GVgDlO^mM;qelnh(!O?k93G>8>e9n20lOCa!vJf6$TUT
+b-C-KHJkE7BJQV!32J9Ox()jISi at 97C<8PclIe)7j~iRj>q{0wqb4LSCK~UTOg#d3`APA at R#K^S77f6
+736GiGXj8T8=6vPFrqP85X8)_P9<>*FWcOP!Q{)q05vZXa;wxsBNK#C+T7D7^pyRm_49z at 5zuoKHs7X
++nAG4kKL*0n||ZO(g`(8=Povv8*2zaL|=|K%eJ^E$I%i56Nz860@<k<)EQO1cH~CFLH%>dO^ptZ)ih2
+{y>Boyh_oNyD{)$u@{b1X)GS=z!1OsU65^i*-jhs>$$I>8_lVkV;GhHQJ%TMGH==q~qKR|Gj!x(_wpn
+T+JiIN|7`Ke_er at KjS)6oK7(-X7PYu~`iVZA6Q~ik9KZ`ADk at M`kLMq;XjPAvGwD at FH7~PHA5Z#V<*8
+9 at LtC!i)7r*`$jg|cNXXP5b5O><u0i!uZ;VA1Z*F9g{6w%xiH?1+(GhM5vy<3dQYkFsq9`6XVt$hd2Y
+7FOJl?^4i7Uyp{%NU>q1O~>+rYWE|vYinq&Q4q|RyMwq1Jz)3$WhQuey&k%xPX}Yv5w*J0ppZ7u-aG^
+FrhzoKP|9YCLMG{UB<>7t(EY*T{mj?zcBQ1oxdNy`tI$AKV`J$;m=>aI|&zQ(PGum{^4ho%Gu6?l5sw
+w*@%1pW{yiH3=5-O7ILJtq2xG}_?`4Vgnvn~HqV~J-cTj;f^kJqEdk15AEtw0m}q#853iPxN<i4hq&d
+cHkfVY%q<Q#}jcarKqYq0sL?4IdJO0_oByc&bCCptI97G{zZgk!uaRK&K{I#|Tr$hr!^7Kp;U~ELLT8
+{3d5}a2h)i`flZhUvK&+29Q+qeoJ{@U{=fb;n+x9cnCTUpHc_7p&~I`BvCT-efV%KjYw(trEr>%U4BP
+Ko%zz&w-9%PLe+q1$NgB<_L(Ot$Rx_U7#e?g44$(zP*WBaJOpE=>&4UWa3SOx?n2zEE|U?BkOf3!@JL
+4h+GFsaN+lNTcjHHlNW72FX%1hPP}*xFGwIDNQPdy6AFicLah)G!!tV`q+yJ<LlyDD@{0MBi3LFY}xn
+`^3(4t0n$}*L}-xxclNmc)vtav06O!y{xy682=L<c3L5r3=F at A&&8>TIowg#rd*4fXY+{|6F()K<o9$
+NC-+Swt*jf&UF+2Q<9902#iG+LHRKuv)4DlrT;lVcI+R^no41JSuG_jj)5b{LMZwcmZf(`}!?~uc{_=
+0nE>DDHbm|{&PNt!iea)@8+jY%xlp(Psai0*fIWwW_}=Z+3m^>pKES-bn&!P9$u&^`B3UfHZa+Hmc)>
+0<V9$#|NZmG$jdvb>5tW7OkP4~MD5qy at cb@ziIT7%YU07nDEudS1Ph$7STn^8#^z=m%lIWFmaLyP#U~
+uQJTltelrptt at 1&TK1VmlFEe1C1JnZ6ioqwMj6I)?CQ)#i_2Zh?xCC>JnYe+bN@}fE}!yrL`*a~i<mj
+(bgsO(&Qj%0y=VilE`vE*bPtd_nHz=k2EcB)2;S8CU+kFSj&cm%7tJ&IDdVWG^4`sMBIZ(=dNl2!?2{
+MMWga1i5DOh$6OtDx$j!SmN2Xt}$mxv4?(Y|jOX1EsqAY_Y?=p9KG(?9l#kuu|F&9zr*47EUl>0<8t6
++W&bL$G483!R^BrY~fUcgX^MrnBgLFiJPVv1ovzp02Ywa;nkfO&>HlJRfV|0y9r75?!0^XFy-^5=Ym2
+~X*~XUG%HOU*0PbuO_U#$mn_9?5SbT2QTR5CqvlB{vfnktl5P5|H{oR_J5n){6rnTmXdBcTzP0xkBul
+9I?wTJW4VlCXt8?-=>gnc)K{e=?lO#^p7qBsg*TmF8}a>+jr|m_X)QTondhbH(_P95ydL!Zv;zl$eQ5
+emzS6Ap}i=!RwH)!Y{e<xabaH+>*CO;Mk%c}C1D^omRULK2b1;ue~%<G;JCyteDEIr8z?~JvbLgSJZ;
+I9FUbo2TyCS<U?|)18hSqL7bBEpQ{9kI3n&I>73IZ#FC1%6=ny+Ltkp&HoVROUy1V=r)T~&o##Ffz*u
+HqVdalJ)z2LfY27Sm~m1B;q(ocISF8tNd at AsaaoV<AU;aP7uklb}c`}CXlFW;TKd;7;%U%#XlI;ybMp
+WeQH`QqKHZ=ntSee&$XpL%;+Q;YooQzJUc{^M7V{^K`~Uca=hzkBuO#jAHIaFX{zT&GZiCyb>0D7t!2
+?P-;Q3ca5D(YRf86IM&!{K}$P%JW&_1{yy3d1z4-{k5WOD9NM_oC9HZ8_G<DQ~mVO at O$APA|wxA=$SL
+$<M+Y=@ilMVZo-TH at C2x6TMECo)8rD6CQmP=6f~*($e<n;etym|1EgDP&Z{+XjuME+_l)M33Y??JE=e
+#jil*6cZVD_{L5X#iz)d&R^il3>12dy6y1JQWP?TG&ciam}m8 at t}=CI!V-s%5+cKlz(@sE#>|06$p*c
+;*tzIe2opZf00zfth>{imu<-u!Sk4LyPx1M5Doe&lPW8*IkL^R?Q6Q30mGd*4Qb9av)9ZT at Nra#b~xx
+BM7%tRoi{C~MsBWk7H8UdL5#|Dx(}?7GsW%$n+-gE<lteNUvhFUpL2OvJR3nmCk`CqB8zx~P}gC*sx^
+Gw{)5U9bx;#=7=?DLamlbEd3)t{kE#>zd3_`u=g*PKy;YJqy1mum$n_y?HoX2^eN_UZh at hH~?D;4Rrz
+)Bhi?{$NOk=j}FPV_#DIa at frJgoV+~Ae)ae_0Sm+ceye at j1Y*h%NM9~)(pPBO!<A?teK10MFy3!LO8@
+B6B^feW=FYk}3Ii$291EH+>-cvWd}&vYLp*u4QiBo9u)gs+5tr#;-;(j%onO&;T_cOEiT2d0F5&%((%
+mRV0Yf*3U6M+(GvGOp9moxzTVd`^uj$yd;*Hl^Z8291^xs2`)n>kLlca}{p;D6EA%7ijn_1d8SHcd0r
+=W!3y_S>?!Cp7<#QUXBeDDV3J5`vt9s0nr6K?)S(nkW~3c-`Az>zcD$1fg#PFek6OiuR*4C^??H2h7{
+!nxo0z5QO8Ls{_H8`HfDVh*~{_PH6-r!hYpBcTdii|I{n7 at JLnA?YW;;lUwbz20CDIxXz-CA_mnc at P$
+OA?0Mu$l^D5bQ^f^-M7=K&i}Aom+h;!ea*6Q-y-XK#^L?wK5g<C3wiHlF#QKktqD)KUH!p(Kf6CY2h!
+i3ZXCL^tvB7VHWEk!CoQ5wnOu(y<v&MR|BIpNOLt)Zhy)xJRk0oJ45^B|%I?^x&iLt|2i*Jr$Z_Vga$
+3*I{^4eQar~RZ2&r|bW4spIy<1J8Fs5A|Of|-!q=)sraMr)@saWeKWBdFxyiIkU#@s#5ruUkredT9QH
+0(F(PPNKu1iQyzk|=N9J>6FZGAw?GYS<N42{ShvH9!>t|J6R~Jv1-bX}Gfz(j{sfoh*@{!)%)U!#B0|
+$9Bih8nkfR0+rFY#>DiFvM#1ex1O*5zWIKM7bg6FClvq9zPIZw!@cg>5gCPh)2;BSzr at dc&kE75s#nB
+u97otPjxuA-{D{1AI&E__EA&H6$dpZ}XuT#^S^_YP2Q);Hu$=ZHRSx{rM*s$OEEet2=TIaOQYonhiHc
+^?_J+g5UrwXZoOLpL;b-n=Ox)}+dpr!bv|Y`sb)UAfGr<5_I7?|6FO&z|U9FvqWnk at EGtYDC?cA|6^X
+Yk0uU{#1T+UKzD7H1N#Akyf5>7#&Hq*`06f6|>b-i7M$|yIUFbd~?!ieJNf&U3(y3iPHv>flgWvYwtQ
+IhNj`bmcOAb3l0`cbb-_p!Yhm+~N;b*hMwBniWaF>vC^T7%m8n0T8zi5utIv>$pS{nNHU#5vNVV0|t(
+w*H_OY=iEU3S78Pl1y(H$eAYX-sPqK*biDbQB;5NJ`Y6(g8h0^%#C->zHECPfzfu9ryGYNBIZ2Utj4R
+Ryr at 3*Ey4v4qNtK1OvOU^YRZfZ{+tDV(|Gw=Y&M)=7d<FpNND(ixn7rRYsRaAr9r22ECzxGpx+X-9{L
+qvI$BC|V<lM$qsRAh@%MGmtdFsI$33s-vsn4VAt2c57bAGwVby^?jW<hFOO&%Qj4$?$4VKgB1N4yL=9
+0YJ^{5M86O}=5HklLbz5ME{<5zF~__nv_^`@@ZYNC%Dg;o&14xPr_AGsO%kuWU~w`9ic7i>m#_-$~#g
+Wj!)IgubJqjTvvqlM_c`>u-3iNwW3iRkuTEg=AI8Na{(B5)A2S at ilpuD@V*>%KAqU`lh|8{CIDlj4}5
+3yR^3s9WP<rU^4WQf7}@{GQMub}Uz7*`LmBnr|VUQ_7&K$|vT~=GFOlQDE+n61|jq?`c+l1f=+yUh0K
+8LW%m4zRTWD2 at 37I9A;C>i5g*U?gwiqH<ppRFYT6ckZjloQH8ukHF-2f`T+s-`a;G?EJk at nH7V!C;(S
+(Qevh7-+=94$={90_Rs2jhI%TVUs06%U6gV67shpmRV8kG+U}5}%{a3YmT`a2$oN6lD at Q>9BQJxxP=b
+LJ-bvE3(BoT>P_G$C>#3TFxTZNTR+G<hFi$>iMp?eVoocDx#n*;&OUeDTRbGJ}688n5j(H|0~_zDTMm
+IDs*yirw~j at L3Scw4Rt%FUILFKM|NNN!8<<3v-rgGBkaZT<#6rmO90YdlHP-Z0eiITwWk{sD%Ir-vyL
+p6efx!bW!+`imq*p6)OB3GGRbdSsBtDGig&sYm4CC{~mSRHtG0LeoGcycrk-exqUq`wDltL`l;%B?#1
+-Sx5melQtrW!`Ij4qQ(%A0B`M=I9s-~*B~>8%x!2K(Vx*pI4b5!iU&fee$O^TC4f5`3pD&&0*<5K=@s
+n$MjA;uuLVrOfg|j at CH5tkR?N2&Z$P4vJMv>imIE|$`|u#wiiVvG*T4sXlQzfB)h;a-j*$}ZP&8A{kb
+W^@kWtKr4qOYT5_RY at RUVvU1kHN)^~;d^=oS#L!;!WQak>XgFd~=l5#qeZbZ2a4k_McNioJtZtejw&&
+i(Ylr}zCl|M!qgGR;PLCy_*HM*<vl&~q{X-ikwZ%pOvVUm4XxU{BO}-IjqcfJFlU2+`sPMRSS&Jiv at I
+m+cOu#ITlivzekPT;~om>#QJ|mRE4eteVQ!HjF%ERg{d at o2*tm!yV#e^g=%#eP{VLAR+cU!({#;HwzJ
+5fBQLM7aO8`j(ZFPW0NB}=sANT;y`O<lrc0MJAwmGlGJN(e;LsX at m?Y#_77s9o+c5^Me=&ccYx^~Z(E
+ at FV`C${Xd~)%<b7}giI)g}AN_Kr(t1rl4=`R8JxP at Qwwv=nb~(}<ldeW@;?6f=(kQ8Nm}C}9kXR9^jp
+Od at I;7Ez-#MKtzwR3Q3<<2Yc-FQsZ>O6M6&4(iMj_QYM`T4lYboUw_c081#g+*0dq9E7viQ_+_wq+eD
+l1Jn3XYo+xEgdcrY8uLJg;*DXw{aRS$%xbhQcHdRZ&L9`cQ{*kHuDzR`Bb7i>@yX9zJ<`CUUF1|1a7F
+*JHd5zekD&U2NT^$hp`<we#?(=kE58&fGuCG9TL^6Z*pYDcWe&y2BW-&%3MnKt~UI;`H~37I6fEM=Vn
+UYhF*UBcJdgdVc{y74;B>sFJeVK~P+CRunhBb&cyBXNS`F907JF)-nBLLpkgU0wc`28g9=g&z(7>Tmr
+J2Zco|V)N}kWM2!n~9sq7%<vEQ`CY3hT-37=EcW=D7=tj#iTw3E6ZXlW_wzd2Nx<HOHeL}8S)Yxq8b}
+_qJv=47*1<3ka`v1(tb5I|`QaU*P$A?+}G1*{_pICf(@*lr>45#!0onw`?omo8}z6_uiSPB9E&KKACP
+v1fAESq~{NYgU(wX>Abi8D0U;)=sbmzxqqy7FV3l+xlx(CkzJB(g06C*sRCcE*>K(A;nXoul at lZng1S
+aaChotROHfjKN9K?${d%$8VDXg=-(2#}EnihM{VQZh-~|F`4`B-K!5T$M3&6IeGi;LyFA3ddsA(cL-z
+S5Y<Cs(D3_aIj@%2hc5Qr6SZD)ZTZu4RSQKuU^KYoNf)h5F;|);dy_}`V$w81iMNu3hzLbAHdF#!INy
+h{IGFa`IFigmw2!WF2)Ev>QQV;5S5$W`u2H$W>L2F+CRlQa`QDpRj0X;0RA~{~Q5bihAt$Xwp6tf2vP
+6TghL1Kx0(h9itZ%T+{TTt%jj=)Q`o14~xERSAqKsj8zAK6;jC}}$Zp;pPB{t=)@}Sa5S%3bX>*vTv+
+?|(GBvl$F&ew7!B~z|Sw3=kad3{r+wL}aJW9Miwts<hkU=hNlVYz^-Sve;=hYJh at 07mm?Ka?$30+&Wn
+;8OfyN?;aw&wzLB at XwwiC#v_%%0A>k(o7OiL3ufjFPf at c&gN2oK8e)(GT5ZgyO>!V9*MwLITJ+!o2+R
+6&KF+ODsJv&lM~HX1nS5T7TQ04YbYeSG at _H`hL)B`!m>cfw-~LMf7f<G%uTzdLH%MxgGQB@{7NdSUyR
+(e?$PTJpE|Zn1PKf&sd~U4yGNrt=&5_l+l|Z?JL6GQhmx9 at J}zQMA+Mq_%|_vSp*5?+i$~Iw^Lk at 0K3
+!v5IsDVJaJYu;>i3o;`Htt+d7H04u2D}L^-Vt~h at _4oa92w>RfXfpDKXis>s%>Lml0=A2xewF5->^DU
+mlqQOZ;TCcAZ-)D(KSCTQTi<rb(S&b}0~62np(r=`sgQu$;o~;&6JkQD&^ru{5tAHR3m^iYfvN$;e1-
+7HVFH_NPyepPZ#hGAXR-y^10;c3%qc at RXaLY3UXQz7sZnx^{W}?5~P#dP6j(o`4})VF7d7F5Ee23jd~
+d7=QN2;cf06y<JDB4wQY;JaxQN8=kQeG%XSBFyePc6su1<quB>JH1F?%O}3{1MD880Q(aOKPuou*qJM
+&ya7UFI`hue3X^)?9N8|C&>3P4Ca?%X%l(D({3&l>OH}}ePRJOlXsu>uZy*^!^XIF5a&&6iKQHFCYx^
+ePn_LpI|5?+ySFzfA8BXK!TrBT at D;Uk>dqjmjA!KmB(2dTKu=J2K at OE4FSMmRzEkXrtgOp;Yc;4vr6x
+h*kkizL^?$R<e~&Iy$?AxbI at F*CKSG?Ds4l)lm=oRr1dX&8vGoi<kvcgWw}J03*XXPqbKv5QzJ*UgSt
+gq_~(G4PN)5 at S-;x%Zf11TB}-8dHFddK3YX<Wp!3QzBY~CLR7oKeET)EGzWDeL*1?J~Hv+G!6NPs$0;
+Cs|^qnX4ovv$@e5r@*z^Tzq_ga)J^v$L&H(G^%AQ{*sQqtCY6v(-%nvlEc!*F_hdm1f|f2T1bN%LMU$
+0r2eLB7djI9oC_+(AV0GN-j{JWTG{qfo(l}pU+AK6XNXb$5qP!{R^@=RLXwNebjc=bJE$j&Q23;!9(t
+-{A2BHJrnEiTU^@u_nr07^MQw1{2y6<2Jf9$773>F|^zvH;*-XEMkJ_}&L>$b88^+{dYLV+XK+t3Ymq
+<;+TDt;qwmhrMjt0_b(xthl}AnC5Q`2TV}rIf#Su9U)z6rt{C<9|8WH~k!=54`!qgH6m at ux>ALHai!Q
+>CmSu5Qk%bQvK8VCA*p18~BcsfH3(!-8XE#+(T*qIo)vRqS6J80UJeT_<|s>Uu1yRHnH_NXzt==wY9x
+P90Yc3j>25JYa3uh-2E^Hw=Xm$0X&8m&ZFa+J)V`Yg-uBok+R=IXD5(LgYu|jtY60h;opCflpl^K<7a
+LfWA+9~yl!0=B>B at M(QLv7`lt>hIrVDkSN1aF4V?rXy9|@~1!Vz7Ps$Lb;ns(*6e+TP0FmGc_cxIAlg
+R;6HZ9C+#aZR9iuI7Z8<F4g2Zu`1YW at fvr7Phx<ogE858C5Sr4hAekrtB|hD=?s5U^w#oJ>~NmqvR)m
+2D-r+GL`6jmwV(np#~6w&doX1`CNYV4{`eE=Uy6#U8N`+hRxt+8|Y%tHc)Ws7cO`75F9&#6$<`R*ign
+$NJTG#%F`ah86)D7*K;1wn|RZkP~`Wt^OevGp#i98JLOVT?`b8#Gjon#0x<GQh8H+og5LX71O at oYUcB
+;k6Dlq2W%U<16pz;Cp<5gGxl=m<+oRJt3EoylyE>c5+)|`YQeO0ytV!v%129yYdJxk<Fu62iYP%Xuns
+KonwT;k#~blg^wr#w_NoZCqVi#=p`Oe0=VoeLM{mznX*OiXU5Wa6*ebhRJZpw6d%!g$lhYy*adWQ4r`
+_l~QM?%R6bK%j01yEa$4H8&NFszorl#+8)L}ufYm2f;!MQIz4TjohLb14YhuFyEa&mTv<8kly9EoH5J
+<pKVyB~DA){rR+)b^v9aPNIq?;utbQ{`@sPO%;b90`(3;lu{lnI&Bg2Rq>++(0E=?mD2bZT at cj_Rn{q
+l!p{<<((%dp)~CtrGVSrp&qpZPGRr9Af#Q6*<B{+C~K$1(leB}Y)$~;qS&#Az8(?~tr|@sX9I3h%Z4A
+y*n|u)zSk*MZZ?A+S;DO2=?yZ95sV%qvdQzbV2}QbcaQ=a)J~;yh-C_HuRYeSp-J{jrDX9orgTCbxjp
+{u5|7NV-B5mp(t4M^Z9mLi2SC+aX>`U<yxK!^B?3=9#p+Via`fWmw=chbdoq6U>ivf#tc1E}uGT?xZ$
+lLBoM+zO^kQfQ`2=USA6?QbWG|2%CFR4#42ntbo>THzpy_)T+I!pJ9n&DK82&l#2BidJqBf-E(Q{01k
+Q$DaKf9L%pObT)2eQYY!gI$~xzv~1-55W}L{-a8T0w`OJI+7#)JRvm4MclTWxpc<u7I*ScOV6R7%`k+
+mHM!)D!$J_q=E6wbCA<sg^YyU<ZyKw at BMVNACiMV61<*cAW{-*@LulU>h!ovP<H7M#v(elBNUSFZm!i
+;sd*$+cYwz7b*Di}y6!Y0*;)qXLAW}v|4$_9#GpcXn(AMoU}CkQxH`KRML0So$)pc?Q%He?Fi-(M&cC
+oQ at 8Qy*+b;#oU19iNxGZnna_K&kP(`Fo(r=5eiIZBTh$lv6iuWi%DlQvxLPmkU!bBoV0V$a#=jBbYG_
+w9swFp~V+RHM<-lbfIz|+pgguLUiPdKh#tSYcc;%zJ*c~i{E*@_|MAgu=41A{NJ0O&Bs#Hy=?n3v;a>
+vnh&%CLzu)73t7+VByPZ)2iXPD5*0dVdgJa++{1aYi|MG*q06xRq__i|-ltzAJL!YgXP<7h&Y{uBV7>
+S2u&76X}WQ at b209IoR^Xosb0qxVR>NY01Kz0xFF=KvO_Y4FKFG+^#l%O%Jisdba})DR=l7_{pG7a?Gv
+=(Y9(zG`UKZ;!ASDo`SQ?L#O8Z8w$A)pid87;Z_e{4Za=yQ5Q{P?U9$ycaS7LzX7J&cqmR4t$t}Z$8Z
+M(c(i=MV|5KtvE4ls$1D72Cq~ioHzkEVVk2LuZO@=xP#ecf$+_%6!Ah3n0F>HmEKOFL at Qz>aU<&2>=g
+g&8atNzC0JYYNVRbXZOg98!S~oy}R`qfwNrHh8R*e_bscq0FJW{RsX+l!xu<Di7JfArm1y%!EbArLK!
+r52h?w$8&hk;;)Pqn(!2wb)nOyjGtZO=)dv_|*vXmS<;ZRxior?RenOy!(CG<E+h)Uo<BSvY4g?a@`p
+*`cMopdBwM=g{I%C2!&I^sme9D7C%=L)sjMoIX9fd;eSqXM(QEow*|(oDGMXFN9YT<vZUVJ=3(u%u9!
+tGRYYhtGt*}ab^@SuSL8Fd;`cQ%)!I~C-}saAKgKK3PbOarf4$^^U`2!QQpH2On)I at 2Lc-EUU|E+<Zu
+FPNw~PB78QYot-J%A#BAR=S6WB8amV8%(4?z{obB-TVt=|0DaFq{ybo#V?{UTO2#sR-1J*vxZVeuZQe
+NjyB at VfQ%d))n+#fe9W>`ix*3l#DcwT0k75X82FTBKpVog7(QzGj(JUttDx5CuDa2FJRJ)GLm81=;*t
+E`A$Vg_7zGp-b-rGtBIJng2uz-$MU?1^2LkTV}fz?kXXV#xPA)bZWTElQCJB*@khK*ttYaddc)V=Efv
+kDFCuX{;d5vx%~JTW)mKls8yYY`#5~Gc!wwW6Gxb(K-hDK17B0K^flUb}~aq*btP4#*b%hx{DYrpnb{
+nGu>mebLHd>$0iIuc}oIm<Nhp|+neY0Vub}(;W#bZV_h^|0WR?6vq_1MDS69v91QNZ*z6#uj+(lQY?d
+ at 21bm)V$wc>JXdCE&p}iZ8d}rZ?c`xEn0gIJjsaSyHW>oB?5<ynP#Dx5vboh>G+ at tE)q5lasd9V+_PF
+qw2;vdo??b1f<Qz*s#6Z$SU^Z7r3zE<+vw<u~Qi at I~8a0o)2Y?QMV(EE)mM#5*|5&DvmyO&Eb)Kusax
+Y{(pys=A<8KBMgf^{>TLKlO7!an6(caheoc;#PEb at sGN`J_i~bLuj&GCJ?7Hx;*r!zUFIMmrZL?vY=R
+(eFv|r%U7Ohyf;Y1wlGacr6zVWpp_&xyH12VoTQL at FojdQ?X1%ns%|W>GJLtyLpt6xDXL6rd90jXMzP
+(tc}7ZQd}iU0IoqRx!V%V8f!a;JGBss!hr+lx at lvBF4lsf^ka|kFThyxtYlLF=`*Fi45bhHVS|<&>vh
+qpV-5kwV6cxlzd<@Ho3n=e0!Vs;mb_+ST8Qpg<WAK%5HU6Fb+yXQ=f(1xhxkYa+y?FN!gZCsTbuEsca
+*ZJuu{HFP<9%#8+12#oE`;B-0p#Y at cQkGZ@zv>hbY%P#LeONw-5W@=kWi*gMT|5<QzSQwWi)YdmS}q?
+A8tF|L){J5evRN{lCX&4+jR{kMYq>*>s=K)72KAlk;Y}g at b|N)L-TgBfInO4x&Hh9~jtB4q*Q6%Xfcx
+`~GG2-}vR#S8v|Fd-?p?`<KH5ouPA+L`CxnVE<aku}9IjtSfFxEX-Ukxlr>G_<l^OQlWBy?*&qk^UM2
+uCatDL)Gm0u+EITXMP~R<wBuMtRd5QiiFdGXU?dZxn+l?bQdLD2hZOA|j3UYcB;+Fq=eI76^4xq2o6(
+d|2}wE7=v&kSPZgTHD~VgC at -|qErtJ3*Kc0Tpo?-qKEM>*+xzv0x7|4quFmcai2N=Kba9+BJv#?K0`Z
+CfKFK)ua&J at GoO*gTaRy+ji`Lvfk^fc7B?SkM5q+nz??Vg>sd7+!<!%h{^b7zvULyz9F#Gf?-N{TP(n
+$t<>8s3=^hU?xp5t!_z7nNKnuOGvZixQ(%Vt#|+<LPvCg6%Sjj4Je8w)iiPAPNZy>eY7$$>B-Sz=l$J
+ElM(jN%R^l5sKacD5U3E_8g_&T*pPpAi98Z9gt*uEa%(&up93FLI79w@;e?{w+&nh)9X0~6O29&p9WY
+X9VQ%%<;mS?&bTqn%f`g%PZ8RL8_KIe89&Gzx57PSS8mja3Q57$B7{$Grn6WWby0lUh6EJ7eMVT>0Dr
+>D2E&Y(=y8-y!>)!pi(*~cx}IZ3kJ)DGsvZr^;qB%<OKO*r!90>WgeJh06;BW}3oC{2rtl#ump4Slhw
+MI#h3^w&-I7GdG$>_Djp3W+^|HQQzN8X;lKNab9=HtWMc^xU$je}{;|CWFjtv!`+BDtK6r#6vbB)Xu*
+1%N^LQphWGf!jjz at W-SvFh7bi`i_*Fm?5SLxuyoOt2d?+TQo=gP!^7SdaYS?*`GcQKBvH`<JKR-{!z=
+#0{Rp57-KkMB5C0mjJ`d^5yrZ`GfDzsKvkalzqp4lG$yU>{3R>wwb1{cT6;l&3v`P&Vds~cmgmcUa|M
+mG;66k8jxLd2V(~T3;}x at WuK7?ysa at c60OTq`Wt7TozfJa2tV at qnSb?zqXGngf*?IhA(}zLp_wZ`pG_
+uD>Eul&_=1BqnQ%Yt89ZQ-hAc-^POzA#$p|J|os)cun8I9KA6BE2%OT2Yy=X7--uIUf*T6m}4P1``mt
++~3b<v^qG7g|SOq at Z(U;%jASbMhcs4Vi!rrxY5QLQC7!u#M<#)KN2#HqzRWv5&?v+WrrzVcJ_7{Bz+j
+Kn8(AoK~z4_P<!0`$i4ak at xX=?hOAzY2Ne-Wf&rX8sNaPN>a)k1;E9mu)o<lf*k1 at DEAOu=f$UEZa+T
+Pv-bzY><gJE1 at 0uLD|YXPVktvlP61mvU68^*MVLJN15JCusXun)8l)y^we58dVba4lgM}lIT at _8oRt~
+r|52ai%AGb`d~BjvVVl9=%T=zqG{`@w!|8N~|6;?{y8|M3=vGxAMz$n?eJW4RMkW%>X+5jEcMz{3+CO
+#<y at L=#Yg9pWcCU at L&nO`j?li7fCH}A!h(PzAB?%pGT4_zE9PUfbEZz4p68M49CHB`MCb<N{J5S>+W3
+)-8OpzAqBe}zyaHmsbcdyO;)H=G0JOP`JWI at Bd=JAdA-=rqSPhv?6 at o8AM@7U<lp3?7U_7n&K=$`!!Q
+9%IS1!Ga)0P4+tHNI$yOQdLh^=TF)(FK=ZJ2IRU0iZ#k{bAG0=hZn6Du*v}Mir>S<o0O82vkrol2NZK
+D8 at ihyNO^03L2I%BV(^O90VRG+O5u4YdpH>g at C^3(fNw>s#pdW?s8V2TnN at mpr{K at y`ZGbCcua4ZsW$
+PvxZd2hL%9ohBS57*9=i&L?qu;iMVRrc!@H)@(TFvDLe0~+Sab2y!2Ewt`-J+ at y^j#DS|FI!>>qpON_
+(DHRuO022_}p8jgqfAJ2EhBSMCW{4n}G9f1maK}~dgM~}}ym%{12f_Uy&^YvW=#1B<nQ%c#4R?8aGQd
+IE8IqxuKynUqZ_PVMkfBtGrp=qPcM~Us!iYWq#sN`Z<_-hbfPCo at lRpzRVw>tUJ$zR8>pZ)K*?}jcTW
+8!TS9f0~yj11`H$uRvRNyY`{NH+Tb)~6?8SufyAv><rWk<4{6_9fkuRqdl8ZB2XsC2AzI#wPM-*g%&Z
+kxGwnG;>`XgyFt~jcm~n7x#fNJV8Z~Jr{Er<3X3Re&hN?Q91$MXw-JtDkf$xTs?b>4jv28EeT<qJ@}=
+2-FL%f96N~;v_Y`7SP at WY1DW!zxQ$tq!+qvrIGskP2Fh6|rjdMuv6-TYPmDrFLM;=XHlMUA1cXJFbf^
+uB4nUZ0N~&l{>U;VFfOK=CCPk2-mEUI at uVapTasneAe0Y-m$xqF1q<=8#xK{_5Et;G$^~i;3m4ZiiRb
+l960>3KStLb93<IR4T5b$L?PEIj8l!=Ge<u?2^$$SK-e~{|K(-)*`y;Kv$o2WrhoB(IPQ!kAV`<guu7
+b$pk?ym>Bxp!o*l2^0;<W~AUfK+}Oq|t6rm!CGMFZV$Dv_XBjXHex2J3$FsX~Yw1p}B*{M2^SfP8`N7
+=QI-V2;>UKE?pA04l=sY)tJ$Ti7Hc58ts|V^3K&!6{!QmuOFd~s-+ZJcn;AYnL_2+Vm~i_-0~EPHKvm
+{vGmR=u-pnDcb9E|=b1m+EazC*j@)UOC7N#~7$MKHewCN`kQ8cRfU*KBwlrkq55xglxduIGs<p*opq5
+YBrkzCw;H-aIT1R-nD5383sdO*F)xiJnutUjETj>*f+cENx#wGH4+Nc6XgTrz7(qU|}*JRkH4SPVeWz
+bRXII1LeMj#AQqGbta$z?I!?i%^m-#WJp*g@?n|C(O<HsaAhG+<~LXJVWf5~COb<c^Bdy}#c9`6&DDi
+jyKUM`roabveCSR#QS{5O{br`rImOk9?5~Ry$#c*)M<j*s~OTF6MB!FlX|0Imf^)^S(PWQ#>N9&4#~F
+Fhe!6)?%x0UfBYxuql+QVr|E<CI})UQq~+Y`Jnm|=O-}+D^cLMLNn29$b%ExR%>-(rD`YH`&w+4L?L?
+fd3K5V0#c=kk<q}xWn=-=tSXQYt_&!F5twSWHdansibJKyy;~?r;E)f!1)(gT;q|}nTOAaBdVjY^^QW
+x;cY*%XfZXBFOB|G_5YW;jJ04!{OPGZ0Zc@(5v%l6GqGyy0sGiLLFp$uSqS9s=Mhb9DN0{CF)snRQ)p
+Uc^`Y>s at WISv+?+FZu2rR7pGJBjq&fyXYx!e{OhMjF at Tq|TzT{g5iwZlg(sW&fEV{gMD!2%9cI5x%Fs
+l<EMGXx^EF5AR<4<6jWdNLgVi5-RkqY#VlPQtx|dh93Ov50pM0`AFRLM7vqWe3?9bCui&9T~%*cv@?y
+$qHXrEn2X$-nXhF$*xL at j{^jG1bFgUO9!)SUhk;v2;^s3FtXT=X_hLW+TDd8&&m~PfIn&F^{r1?`q{#
+z&DGaYQ%mcXot|~GB&!0wr$$&!L=A7Fw;+8 at IB#pEoFSWY(M>E=87KCcojKEbU6yK_BK=fapt}o(+wX
+74OGRT_6wNg!=)mu4yLt-qdotMjKI+!l(lKTjeg5Z;kbV3dWq<k0U+C!G*%X&<6lDnS%tWIdOH`_1e)
+&%w&|SUI+Nl1AzOdhu*W0Dunk{Vf2d_7VkVuMgW`G)ROKZtkKS&;**`njept(7nZ(3+5`5IlX>I-YEY
+lSQJzCWC)3HNfsU?wC#Y~UWUcbGXd at ri@)Q4)9jMdt`hfDsd{7ov2`+DeXxL)OSjkc>_WA)ki3F^EE|
+cDgOQmF at a#B)1WL(l8)>iNzwPSAq-|WwFNSl+POHt43R~FD;MmWx0y;>ED at lSLL(4sqC!{v6GM0Ca~Y
+-g^Er5$gl*(4W?r7xiAw3If>G-q7~jl*7tJBnd&B4Uk<}awbX;iTBmWn-CN8=rUk*BG*94B;Wio9T1Q
+(r26B)aq~I%<X#IA^+XPyf&YG{TFMWRVU^{z>5Tf1n3KWj_+D?<MMAYE*rBTsnA)<u)m;}|{a#;$c0J
+3krR?>GjGoNUbu0P45a9-N|a!<)`^BDeHZN+snJj-=h6EBccfi>$qS2^%b^_SWaVilLHXP^y>w_3)I?
+w!Zzybv^wkE}Mo+p|-<?b-_sI3y|k&)R_ at 9Xn90Yku}+;A0Qb9e%YPQtFvcE&t9#P{Ub|Lts08c%J#&
+1uwV?{m*8{4o^2saP`Nt!+5Q6ajXY$QqepJHFh)&r<lSoA=<wvQJ`9L_~d4Z(#qwM0>)OG^LaI;SBPU
+IFVwt~AvdB^*gUW~cI)19fy;mqC4cMAbznEan`~qjcNu5g!6D;}kM`MblJQFaeQCUQM-vTvema+)+B|
+a>g8*Ep+c(!tYnh<kG^@xa6T{3*Caek|(+F-`OwBM2%XB^8?sf=CY4sCIB9WD1wbrVfGUXeMcB5;ei@
+n*24bV at 88t-n`ON$+|+`^OngcEa-3y7Q^aiNG91-}pEIfzduf%grtniG0;LKV+rhg`c0<iF$?6dnN;W
+wl+~Ju7!O#B|+$txF5=W+WC+Qeaxjpo3wzLT9<+YOhgBd>)}nr?Nr`R>&-nT^W=xkxh{0A- at N5|J+D!
+jx9C`3TVY7+sUa+BtBj0O#(psWfXuwv+OV(DbB_qj_@>$m%+=yE;`Sqw6Wdo0gi#h2Hq`9_LXdt+9X%
+o_kMV6+)gF+l-a0<jODanlL-!ZGO at d4RS_YYu-g*NfpOW5)N`tysV1Yk5NhRIZGKf5_A7cd@(++?0l=
+AEpk}rr84q~FcC7(~LAF%~4*;-l0mtqckaow!@oB#fbjh%~w*~y}ckVo0NMRW?T9S;Bo%UCp&oPyu1o
+>@~r$kbeC<OX_=pww!<z`W$CbGXw<nE*xY|J`4qDgd_?QUf#(lzKyG$+!m#x5D`7=SJ-U7$xU_Pbb09
+cBz<Ma8QDQDc&5+|G0=RvG?&c}71pJgP_Mw2jkxc`*;2pY<adX%N}^E5glgn`P8!nQRp<U-!1V*97iA
+c=9x+<CAc=Fynokm{dAxs?8SFd8KR4S!w3Kb_ECL7NhymmMKZ;8#(-39q6|i+8fygAe*W8qYt0sQfer
+`-a|36L{hGMf~kaXKY+MAe3I0O>|*5clS28_(qLIn>hW~BI%7J9e<iT}s`y2BVQIWE%i_u8j{V*tYmo
+^Q<T!70iuAE?<Sv(W!@*M3vb?ESGhvKW2<TWlYP0NVfA3~5+ZDw%PS?ai!w8c4+ at 12jO*%I1#>?-J29
+dfg>X~Y!Qys4B)tJJvQhEkhu)e-8sf3KOAq%0y6qD2>Y?V-#B$OLTpJdLXr-1ssAR{6w*v)?8Hz2zy#
+YqzOMIhdqFnH+^P_{QF>1jOf$h$JQ3$nCk{WzDwGH^FVx{yVMT!Vqw#^Ju+d!gEPQ;x;dl?b8aT!Lu3
+x%G)NHPOn9?XjP=9QX5C>kW>SA}J9`i6XEPWa67;(Llgl#+r&aJklLuR94>CoMyE?_tiRti*oqQ60_k
+^*(W+ChuK344HpAoiqlLw!XU*pbO;OCF{>7d(3Asbwe5<XR1TnBSL+Q~yeVVo76 at 9gyo9{~LUCI+Gm4
+nCyd<3>bjb}oS5<Lhv|i4+%dvo-Y3K!nf+EH$E(a$m72<3P*SFR}!2y|}PKbY_<KfpZe66R%r{@ZvyK
+;ij;)cFWeOl687C{MLN;{~X&PtZ4 at Lxv>)tpyhwz}1st+n(D<buGb+I|^4y|-VX-Ln&)b&3NkXW99dZ
+~>F?v{}E*FY^pIP(TypvZvK*Yt9Q-9^AAgF at jhk+qxGI#boaf4Y?*M8UWOD44KA!X0T&eI{Fd^fZ5R8
+D?m(cnBkxTL9CyVaSgL4`I9I4<9t@$Jbw837oYz}S(Mf>#5^9$<3TPyTw$RHau>ks<lLVo at nzs$H7Uk
+s^(`zG5U2&NmE8oMZ?FP(_Qf?j%8>D;U6(8&NETvT0qg3)t3!m(uAg at t<4ja*a#K?W7gN%a9H^3ezOX
+J#|CsF_uRjNEzu&oUmpV~F(7;`YE))7$Aq2zBS6zTT*v`vTP{He$AD+E<_Td>*qnH2Z<^PFun)FY<?+
+?!~(6|5nEPp^T!u`|X_k**+;ZAy>j#tPfI4M6J(>KdVT+HIo2SS6r4h0JQQ&cOaqC&^$7HxiFleI^*z
+%Pnw&T5z at r@3Hc3w=jze^`lU|L}LM;r}x)i;jZ@|1jmWabtF!fIF+|R1ZjZ?Wd3gky08<!=#zZzMSu{
+bf>*T%mMr%GJGFpublH5-T9bUS2WQW^VB-8Q~coVh2gYS<ld-zNO%OdO1~$H-1ZocGFL-6J&X72hjzb
+T!N4ep#fhLD!x#d0hORkTMu at F<#v)>ruDFr#8}cnze~kX$IdZ!9l<D_R3C0&cY=i~?eyHeGMkEkO?2j
+eL&+C3P@`yK?EjWTiSAzjW$u{{GxqIcMDr0+0?g8ng-{l+PV!MLYFg$vCM&V-Zy1#Q?yd#6`IO|No_=
+FsEf>sb+sU;^cdm6fl`zKsG=V^*L(pJ92&eP=G!tH*N;KGn0=gcRDX(pi*2FD4LG3fttUY`RCp31~|#
+4e0{A2;oqGqL~@AXm&~0NU&UAm4)wtNg-NnpY{uqLn2j6~fRKEWk#w*C^{;@cP3WoI2~%um}0YSVoH-
+UxpaKGkd60+atGN$wT at Qx-FV?GXg7n66E#qRdkI}hi(YAdicI%vG<sRHEcBtG9poO8s5hQ{Yd48i;Z!
+tKj*wcC0xH`%c?Fauc)3N7|D*of4i7t%_K*<_9E+RdB0<>C^zttsFWkKz6c{lkFu%OHbvHOMJ?%-b=`
+25;L=u&`2JYr?7~L^Xm}{adv+4zY1UigVH1U5A7wA#y3I7_Ty}h%6%<HglD=@ZTJ+H6{1!#_&AYDy_v
+2o6)KlOQmPrUK{B!!0B2Dp#^zns3a0gxR8gZI!ddp6Bn9XpQ)tUtiR&LU1z-U(vVYLIIAAC~8 at 4t^#F
+u}NvKR-)`gj1u35>aacZSliY-yjn;NTPh-8)q$k=B7z-0D at 3f^TwF5E%Fg~o4tAaA$$Jp>#ws9e|q&k
+`{vDyx6i+M{qoI+moGBlYX9{1#czpzbS<lcU+m>E+YRtxee;?)%I0o}iNVF}){ePLx(NfEG9;x8rD at _
+pnUc&kMFe59biuUB5CzHPc1GU1rg2<s*MQBDE8&B^AuRM3B@#i#E0`eJwz2HI9(nw#rg6^3h^BSD@`W
+~)%~=TCC4k}lc*H8Zdwpoz#0!Qe{W-=?r6LDAv47zp!e^c%u-!%PtG|f2xH?t1 at L`l_CJd>L#>)|aRE
+ERG`aO?g{q{t#B?Be9 at oe^N2C*L9rL$pY at Piq;8PU%UK;ze?j8E%pWruYOLk|&7C7ckUZF4LxjJW)Zk
+=yNrx2e at Rh9J1`C4mXN<neQqJ)`o0AU{YVZ&dK!7TcDKG@$D~##>N0GBG}qDBXvC)E5RC2}A5ilw;rr
+`ys43&pO)S)X^_%0hQJq7$8ZjG?c at Dqi~>NI^9UVy`;j=;d!o$FY9V1C9axgqxJ@<8Wi5?lIQ%%y5u^
+YW%2h|c&wTx6NI(F7=9SK0Je}%N at Xz8+#949XlnG-^1Ren<r>v6 at Vg{U4~m9WQ~uW^)s2Ei$?Xf at G2`
+QF6C=9msb-Jx+@~2ICAz|4jmM`?o-#G;K9U&(wSG8pHs<`U&uu9+_SM2Xtkf>MD9C!vjurL!gv}8Xec
+gFf5K~STC0!`hMAzqJtP!nokLL@&4hG at 5U9+UhaFhBBeR#UoswPw{ryM&Ydz5q9mLTv|7rafLyq?&%x
+%`L){&Y6t-;nTl at Tusv)MHR)RGOKY!Sh9NUBZLbJyo1K-{Pi@@0i7VIK$`l$761d>IvtOnOK2Agl*rw
+d-dVv`29C0CvV>wcLwpjddo~i?+}N14NwlFs at XNCe{zNkO at u8|8Co}DHc|vDqzg%8$b<~aK}avz&UJC
+?r!8s7eK(fJ^{;>RD_z|<T*oXZJ_*ua$MOlFB9P_2ygVcpoNmBX0sF}G<|Rr=lZmvMNL4>#pI5MOW{=
+3HfSYN&R{!u+emRo_O}Ho}gOuJB<Xl2Q9B7txfUgv7l}VcIu4oZtj;UN9J<2mLTu_CT<(4BN_(gF+GB
+P`lkD&3WDZ%WvN685BKysR?LfYG<z;h)oSD~n<%V3<1Wwu@!w=0)g8`2A at GwO`9ho^Dqa!39-Jd2x1G
+aXjl=y3L_xMH;EH1)G2x$4PN&J)!YtdjHBPug>1cg8x4Vt^KhoD*rEzp8ZYd}LT~!zV`>2E=BYRR&}m
+ae?w%9PC*Grf7?6EEuxt>W^yJMl5T~Bo+Tksg3a6x+$6pkd}!6$R<SntfEH%5U8;OMT;Z8fdGbT+$M&
+ at C>GaRInt7oSk8f}RGx#pmg-UF0Yv5~dyf=t%7-S1P$f$u8(4=fF9J&HAb&Qkq(?xr*A at 1(h5i6q14F
+16F!R5$T4h?Gv`Sea at Q<+KWcD2 at zyNK4P8lsgvzeCwN?*Q}MrF~=frDdnWqlz at v{a2nwd2r27dx;~;y
+(<=F7pGY^9tYXAF^)_U>kZsT>_aN1xqoM;VFv<@Q8)@ThSELI(MmsvnTl%j6)bUKQ7v8R`xG;<;T8A=
+VsP;59sFi29DIH09m~vPmuoQ$Z0S2T6hn;0qD-ZXS&d6nJq4nV9&~VbzU-~%y%T#xjk-+8!VbhFtqK6
+vODAJulW}_^_Qo;v9#%(QCcAS+YvqWrNKK*o^`V~kZ8R(cH#0=>v<>(CcxA+d;j9V5UHYy$tm3TcPIU
+O(qN8m#(Qq9$&1k^i__N@*QI2sb@`Jg6MFmE$*ZimDJrUdn=`%nfIJ4_0#PtZ5{*uEa6HP33(`#1Ebh
+n#(dsj0xrmR(E7C7lNS7p_o%D4#^))dxu&a{!fc?p2;;iVT>$*~%vy2WXth#H!VI`r|6s>Br&C)YWIQ
+g00ZOnI8AjRDR`&zZv;caM^7<TJB{sxGckEOIEt*u~BTws|61K_6(l#%&cD7mIpkMm2 at ugs?5Zd-rws
+BPytPi+Rm1cw+_lv)plx+LVc at 1ir!6ohZ?so5;Y_;t08hvOc|?Ss_!76aKd??44C+tvYDU at 6~G)_Luj
+#5_`<Q0V5MepU6-)Cwe~%L at qtCGql15Q*##2Gy%T24|O%b4_%EXN=NH+aoYwhYKYB8lg!!8g9$^Jm0s
+neMz54smtmAxeM_Wb(URHsT!(r(MO_W at I^s)B at frC(k{qTh?f$~oU89qPD~=82me1%O9KQH0000800{
+-FNcviFjFJQZ0M82m03ZMW0B~t=FJE?LZe(wAFK}{iXL4n8b1z?CX>MtBUtcb8d97AkbD~HTe)m_Lnm
+mYE;+Q;cZKj4ODpd$sz)Z~(MW8jk0h;Y at jsE*R-5{cg*`2EOA;P(Q=Q~$(1!Gq2IbFX<Fwz0sjc)H?M
+j2l-0Z#-K$txA`$F_d_zAh4)4^vir>s|G(;F0ix3PD*3lEFq06H>%8p<o$Z;dfGIkWnEyecng{@&&;J
+TgkVC6Id~h27AP*HoRhjz#Ek>fKv6%HWF5Z0D8O-PM-I$=1D0 at W<tf;mS!YFyhP$30?9Mm5(G-yY)U3
++N;Cl-wK`HgsH%!29B2tio-0pE#89Ud&20$%Y4pPiY;Zz&4E!f&Vo%_U72^9Bu)K*jvX;@@4`AYiW7l
+#PAy}>p=oMIA<k%rX{cxf=1oq4d(8EV3ggZieV|O`myqWfM7LTrjL5}|5PZ45a2je*ktOv(+qMthW)Q
+LPh42K8-o)7ku?L`pI6-<ZMgAJ}@J-9YZ{Q!|H?<a(h_Smsp6G;d5I5H98 at Pr;?-wW+OmxzWoFtHZaO
+wkCmYxAnInp;umW7Gh13zu%Ba+n7G0$e{-v|$<A7{ZDy<&5=1!l8+NHqr|eYs*uF#*yQD${qtpfu&e@
+_RMu=wl}twtFP at NKS0A}*f^MA1x~19`pc*;lCMD##j|TnU3gUsWTH9P0Ty9lY24{)BZj at +in9XZc(su
+mPU0A7Q86xYcDGc`Ok<F;JSV9{foLtr-y2eEvqTa}3vy7Y=Zxessntb-!`-M-Li1WG_AQi<8R5JZpX2
+m;y*S1#RAi9eJ at jvfcYTzmc_IWj<%*V65`#Veg#-t`_W(aDniDi_aFs+9N&H63jJ=`!cGT0tjI1zq<s
+Zj}Ao<FK>x8cbeqF!5siy`{BcOhW2xNx{qf at bv374@Hs8O7a!Ku2|oLHV2WD*T at MU5ia<)pl?ty|VdM
+0Gq~37(j3lB*rAi4L&_g)lmNYjBxJ$(!5`UW0D-YwR4lwgo_=4hUT-LCspI<7D*X{#g)CaCA!WSV?+k
+vi1A;%B&&q9nTqFC%JFwB-^#N?L=sh#HKI~r5eCjz!G)dk!D**lH)xcU5Y^Rq!J{%5QUb~s2d13r~SG
+}xdDvjCCqjiP at l3g6Lo7FzfLbUmD;0olnST(Xrt+TZld-<ynJp`lAUatQr_R5_Pc~{FgopUski2AvNe
+_(TSKXD+DTX4DbJ>`Zp~2r at RXT>9s5A9cLbq&A8%ae<+l#L7B`ja)DlPfFm+UR@>9#RQ(HsjX^MMF@(
+gzGdFfJ}?Q>J&L3 at QBIa_lggmE}WO~_w6FdLjK;{avqP=jIXe(rcm39kkgsksHXc19m1eG^aJ=<?|5n
+Y^?I>QdJ$hFb~Obr??Y|DckV>%nKJzrGAIxrm2vDJkC#{oyVs_o}HGvc!BZ0v($4F;YQG<JRoX+1IwT
+7s<8txCEN)jJ7{F9dHvygMV4;3!}Yek{w1{A$7O6OgT<L&AuD$6jP71vi%PWBl-UPC#9V>b%SYVm&q<
+Am4s+t5u0<yPaTgJNPYh2Mf?X)O9KQH0000800{-FNDsqC12hBx0DTGo02=@R0B~t=FJE?LZe(wAFK}
+{iXL4n8b1!0HaxQRrwN=}0+eQ$5=T{737?uP|b=;RCXoAwzN+Lj!E=k!40>hxirL-+YGE367fP8?{E7
+}4H`r3X#|EXWn+2xYD#7R>W5nzvYcFvizvoos$==b_C&mxvCo<LQ`{V#+^(+<GQ at -=6RWeJ^m7fy~Jp
+TL-9e32D!PH`jrmKE^jP5t$&#VTaUV4kg>X$J^CqkP4Rf at LX`8B_(;F-gAGVTGw;v|$=S#EO!$>#C$s
+E|ILr;_^1+6yl6yz#4h-isxBD;g*$4K(DY_RYFWDAYw^5y<WqDhiOS89de%Cu!u&;7nb;sLU^6sP$Zh
+Sr%AJt&8ZY1v*sJA%~qb%kONC0OcH@)v>3=^1rq|kI|?ogkAUUFndhEcLo$R%hL7t<U^qh=WXytz>%q
+|SP1~@hJ{YzQi1G|4u!xUT7gjI<kBkiu5iWv|ZbR*u_H1Z5V~Mk-XSRh&Hh6GHNHHazIYEbUYS~usTq
+Yk`fkS+MfE3`kK+cI1fIks5Te?mO*p_i>6BxN3G8xWu at Xv^88Mcn1Jz at qrGBn>1VY-e_zMdf)#=y{+8
+e<{DlTfu3r<xdn?_yRD&*snUK%8OZxl^!RU&w};PcVfM7y^v-L&3g|ID+y#q1teSATzLBN5o^|z%zsj
+hm37&OdOL4s4L?G*TcY>uK+q2p5=?2?kuQ_<VsRxaY)T63omMcN~8wjVG*W=<Q?r^#6Z(xo~>X2Y?Wu
+cgfpHkI4uh0UeW~Hr)YLBI4fzAPT3txHBFl*VNt+o$UEB`dP~xMq5*zxS%l5~6h1$Z%N6c~3yO}TBk3
+rrIA(WZeb`}XMDM!MXNR3th_(*64*6BisS1Ku8}A1C3TiK1<>mS+X4u#wwstnlgL=8d5xSaJyug8b3I
+VUECjAkOp~|DMq at 98$v69~q(C8|m=|UcbrKJoR)Mx8~T;$EUTU at QCg>6ClyPR4J*_1~{H_Jo0Y at _h-O
+ at usLZ;x(AKohxDo8FGJHoUE;j906@)Co)L%Nu-?v9$9-Db#Ds=B{)hQm^xDZPuiEOSk{2_b)d!tczAR
+SVtu9wykF_L%zV5U9=$nsSDfgC+yxiP0Ma{c=%v1J=97Mby9Wo_x<lX&4ive_eZUi5qeRH|FXgdz7T@
+8#3^C>jBoyUhw;yM7){3K$;UFj{cE4`?duJrmCiX`VL8HNw_^D+ENFp%PKBq}rIMeO{Ylv$mHk24 at 0I
+;d+1JY6A9eq2n$k8OwqHF*wP$N^?sEJA+aI|G*n^K5zE3~24MNJo(0$c?=<JH<HD~YskAbflUi2SdzI
+W{LapQQ;dkASRfyGMjGdKpC;1~4}fB3<`2f1^s?^dTTZ%}3Hc0c7iqLMTZ%KP7sy@%#MJt+P%jMic{c
+1Ps{WAcl#zbgCN))@Q)P)h>@6aWAK2mlEMt4Jz;@h}eq007<v0018V003}la4%nWWo~3|axZXlZ)b94
+b8|0aZ*^{TWpXZXd975<j at vd6zUwIl*@NvsYcx3(K@*fK(>4KFa!Gj?K~WT1i?WH>qCir+*<;$IEzm<
+zAV2SyC+Se8*I6Lwp{NcXaX8=4j47VM`Qvj~>q<47XVAI&{9B)iqBBTzduP;U>tMJZ!P9S^JcXIkW}_
+`!O57-4DGT4-9A3ZQ>`S#9ul4>#bcW!iG<#*O(hWEbos}_)w0AM=QL4sRHWgILI-{;TC&6uz%<9_RmP
+SIY4Hn!XPurPRTM4(yZ2_}B>drweB_Luejl8~tjVT)^s~B3NZ&W2K<SQNiNGPxMjYOjLeK(DEYAt&My
+=r^1dfaMTSsG9cl)IfrDrv`kTg9A$$fv~>;S`vFCC at L}gihcQ5x9N?B%Aa_WL3;_4ihGll(2;WlBR$t
+PO^egfmBzlm;<LX!V!@p2<cALS(2_MESvQ>wpgYNMNW9gr%17&JegyHT(FcCFMIJRD>5p?7%3pjfnL(
+A05SJ8U--J9kTP<SQkdo(nMn2$#F8eAq%oT2G$~?aIKCkw$umKJSRotMz=SNw%-i5SG%S5rb5e*LRXO
+%1R%zjTnDTr9X)e5NSP6;}q#z!Q^FzZTMjS<Z+`A^3H<T1C&wM=!7o2z(8J(qUMze%^Xx`TsImg142!
+I#}XToddtKu-EyeCDLj2<}q!TVXDlima6ID`f1d8ZHmh;bCvM(<$^YTs((fHk#hl*8k^G<svCwV_}uc
+X*KOvF^%X(L%jeO%z4zU1=?TPaPgoGdyj at _jIFY5#X~&zH%esISdAUVvC3Q=XGZ+9{uM~m`+B0zLGU`
+ZB;rsv~pJmxPSa|eCs8K_;K~SW7Smh^=S0aNu_U_2VRa11+xD~+DN<?8oXS-kQc68zxp at nc3WC$QFYi
+2U=Tw$`26urh`)sRYlv?{d>7(xA^slXAA`|<Y^S-mv6IcAn?q)FU!rhxubSbp^c<eVcx|{)9lC<YN3P
+N6tHU}`|EPXC&1tFRu%Fde#`5{opN9rNy$|v45I=<Y7dHM6P)h>@6aWAK2mlEMt4Pl54^I07001Tn00
+18V003}la4%nWWo~3|axZXlZ)b94b8|0fWo&R|a&s<ldA(LqZ{kJ}e)q2!kq02PP%ctmPNnSz7O-mU)
+N2x*dJ-~b4SQ#7<XwmG?>oCTVD7k-s8#&{ws*d7zWH{>_6-d3?Y<DJwSrFEh5Ne?_b?WDvC1Vpaa at SL
+3JJfwRHwhMHjzksalZN0y0LEHkrx{wrN}c-Ih2yy5F?)rn|vt}{ExCFEQM5sSd at x`S|gdv6Sa#94oO~
+Mz#e(FWwFgAhn-Msz`OcCFBK%510vSE;EO%1iYQZjX~VY2U&N9xkuOsC!y#JaFC2;DV>MZ>M9hr<lXZ
+KNdRW?Sc~pSNAWBn>6kPU9S>c2N^GD$`2`D%W9s~c$8PXxN2*c|Z5N~LL$Sj=r0Sp~BaEUWzKwK9P6%
+a3UC_}1eC!9b)$0R_6k07KwQF{Y-HgvqP!8y}M*TEzwJoqD|n9^V{!5iekah>p!Nj`Eyk22On3h;cOP
+t*&6O*BnI*8>IDArCHvkslxv at jd~2qyvYzHi{1DAheO;aE6G1?=kx44B0RShGa^{T1H@?^`)+ALPF+a
+)&Of`GdI*Vi~@fOuFte=m@$eeNJumo{X at abMjS<XfmTgCEocxrzNh0caTpM-!lPr?8B=dSHPkopp&wx
+2jMV at eNZ>G?)1QTvNxmUP7LQh(#(3=oDlr;pfF?|d;T at fCM9;F4BHzG#o|LLA_<Rmxv&{>IohCAcce7
+Yw=UA3C!9JJ|W&uOWKD0l-epvkV+x^dJ+hP;{`NGP&ji at +{q=e@}C_WXhBJ1RfFFaP=j~3vu#$KMsWg
+)Ti`!I at 9$t|<6<OymLnNah2NAfhm!QxUzE8h3=42SLZ_A5@(O4daBkR^6{=ak9 at 4ea)gJV(q4f&snxP
+AqZw`fzu=FOoyL6a6v1UO_;8W;JmpBoQg^2^lH1?{v>84k3-w&ja*f%<nWDw}EHNe!FdhrtTk;bgl1U
+O_A5(PMVXnl<Q9Sv<W+HXT1YWv#+RhVVYslhTEpkXCX0$$X@!Tl(p<C=2BG)_zB{7lyltGP4wF2wjt$
+NM|Q7vAi?gzJEoWZp?>qseS3GSVj2_k<C4yXC(ZuH at u`ztF+l(6pj>U=RfBOfB2MvTmu6S(;H7Ns&xL
+uU{n5T6*{<@hHa!&?e_u+oeo%aA4m9Pzp6Yk>^d(2$%KDDy+m%ybUQkl3vM4>goT at 7um@{^~u#VWv!!
+myr>Nq}3tei|;n4VUv74Q{)qVYmPbjYyACQNxzePG4-eI#qQ0KcEAd<gvEnBD66cw at dAYQ7(@Z?Gq*k
+=CiQ+x7DeZ|XO6t+%nc->e)S-pEmI(BC53G<&kP+VsOIqjs=!*R}ozP)h>@6aWAK2mlEMt4MbUQhVqE
+001Hd0018V003}la4%nWWo~3|axZXlZ)b94b8|0qaA|ICWpXZXd5u%ej at vd6zUwIlSrlFeTIc5!1W8e
+ at Oxpxx$sy at o1W8b6Ey^ZhivlU_W`RCK&?JYvNRk3g`!ao!4r#4-+f#Jlh%@v3%ve5xllv#IGNrE9PoZ
+n8lP5kCMMsdB=GyA at riJ6x5FS5#^cbev*tKzRrm#@F)efFr?q7dd?+U#gt<3J{=m^0JWp~;+ZE9!@bW
+X)6(p<-|L#Ya5QI}9^*IIqiwF=q|k~vegSA|tj8H)|q$kTMTF;2miZa08gA5GUnr4%4yqpZ5PhP5r~R
++TX{)?DgRmB?4Lcqk|?%%wu2)nS_2w0fn2fuP#lTD>VXjVdhY8j9`KBeim)FqWKA5cx!&6Hb8%Sn&Le
+jp-Qf5rOx6K(cXYB1<{TIgFV|Qo`l}NSXqoILRcV0;$fKoB^j(!V!@p2<dLAvm{-PSvCzgHeaL+MQ-t
+sPmp3xc{0NUIb|u6FN64m$&3myLJG)opl39bAZDKCj;~V+DI=#Tg-OnliDWN9ENH?=8l!1W6B#4J%^M
+<;JQMWA64|f^#$-;W-UbiQ{_3Zi5h-$1<v5#Irqa(a;rSfWTzK2C6ci<hBp!_WL&G9Q97TKFyC#`8lt
+`9mz8{4pC*DOyrzxA#ETJBnhkluJY+Q;S5Ch>%c+Gq%_e;tHDY9gA&lwi)cY#iV2g-2?a}szb|NS9GQ
+B+y8gAwRmV{8kou5_(i)u%UVi=U6Xsh(Rb&GkE7M^Uue7S4fabX_ZZd|QeSB*Ui>;ImWC6>A00VK4}Z
+W>Yxj at P0fv8N@Jn{o0?u`QyQ07+N;?mH)cxti%7rbC9-EQOK97g03lxRvkOFt$GFjXzcT;k*-Vi4t|2
+Iszc9cFE>1NhUAs^d$;~dzZo8;T4;4MSRZ?(gY{S4;GfTbpk*Jw_3>*TzYN|SsOHAhKf?8)$A0YN?|u
+Aqhbz_fkNA53=N|k1dmsPm<KO?ge at E_r0Z>Z=1QY-O00;mH1*=F#LS!lz1ONc12mk;e0001RX>c!Jc4
+cm4Z*nhkWpQ<7b98erUtei%X>?y-E^v8uRoiakHV}R1R}7p7ORY>_3bcjM1lXq8ZqRHRBrf`>rKPdNE
++wiY6~`^M-`=4_$xgB{1dE*OnXArV_RS13oy)pdL+f_4A3cS!GXO|a|C*<1Oy}-_{y&9u?q9^7Lqw-&
+2GP8GX5giXo5r1u at S8I>nM~L{{@tQ=7Cvk?ccA3f2y<ZneeK7N!qS4MpQ$9UH_|z*LDq10aHXyj*l7c
+0TaoA%DICk;XJKUqzg}%vYej);#t6#A#RbT!(Z+!Z9tN_3^O432bkVeQuCeR+e81oGrt`zKDW>tL!L1
+XnwJD_#J#n>I47_O%tb-4Y(S;FJMZiFbx at ZZ{)T1{%(=|onyxPXJ$Qb7wD3-h5A2vtGjW{SRazdEP%t
+fE^usokW3f1CrngCr_;kr6OcN$NlZ3u|s at vp7yf|+{;naG6`=fTTpp)s;{k>L)XTu1zub at e2O{b52`u
+O{n(P6Q8y2$LSnBspa)N5*o})4wFo41Qs3QzB?rqUkGMAtf=V6dDBEHok6{!wf7Ud>Vrjjr_#neXA7Y
+I%_M+r*Kl&%qQQ$Pa*8SgtJkN!oT2*tux&mj4VpGhA4}vh|BL`dw}1tuE{;zqjdjpwpKF3+Tt4CH6kO
+JE51lNAUD^SSGNyWT?<y4kml%wRF?N`&(hRMr!Y;aAk)G7l*o^0EWzv<E52Otg(q)Ysq&7vcv`HM3u>
+w~6)k}`z34M!UL!#3xkq at OH3ru+FNbR%<_k+SwC`xJs>XrSfVJ2vgw`k;yzizK9&WFPDkLCxK)quni7
+;ml>#mYJqbuM9;4^i&<w3P;awE6H<TVG~5MHY~o$<zH{TF5~rKZzqP>o`SPZ<)R>rVH|7;SoAjj)!nU
+~(@^?Z at 7Sa0L7dlI0xh?C at vcgDrKda#|8#r6LaIoV|g%cT5Gc1MpY&*x;925>dF5%Atv-vZ$#MXs%vq
+#4NZQY_^VCCD1C`BWm;(R$xL0+Yky&;Lcz}vycZ?P^12TvD6Zv1(raGB2Rpo=-ddGmGo-qOkU8DIo*d
+B%viMcG}>@a;GsVZV#l2~iguU4f1S3dt5?8$HLw%d$O^T`^T+*-=SqsK-v}G6KZ^Qrk2%pYXOnInbj4
+5LQd84r-b7F6G~QD+KN5<N=22?&aZkAj7Z&?Ac|b>r*ojs-P`W7maxO)kD_TC({o+x}945DVB<^%u=a
+aG3_|SVnxtjujv+zlx0sP_H<4_D9g3c{1s}H^1Hyb=t)ZwR+Q82>8Jzfv%)dvDtNf%jEyM)>x(<VRR9
+|vZzK at D<4N3xoxwWw%$#9ZY0;Of+E9DjArUZmVYp+WCxE%*eMI3$<9H6(#gQ}U{KqVZ#M?!SmJ`yWtC
+0|XQR000O82?eW2BviL){}KQI_(%W%AOHXWaA|NaUv_0~WN&gWa%FLKWpi|MFJWY1aCBvIb1ras<y`G
+=8 at bW{uD^n{KWKH8x4t`|Ere45$MHR9G_h0LX at RD}hSE|N>(#EFeX-&@T>tjY3}2Sq<tlRehPDDOXK9
+DS;c(_RFQjzLPQE%}%OaKe{fssB>g2ch$!K(RbTlf(|2LwltC**JTZ^(9{k8iVjqcX6Vw)muG68(@n#
+;Um^;)pH<axC%%9@$s at G-C1jpoXlO29`2OT|j&V#M>5ZD2HVKu)<>*0RW}m}D8r4e=_fc+2axd0Q3B2
+T_kktFqXz7{m}+#q_fq0n_J|&=0qK`M~c*6*py;$;G$vwkWa<&*8Ju40#J5y-^=c*|sb`Jta6efgwX&
+N<E8V at x$HS+t1D1)G{;lcXA_&29#8pKW}-n+&dKJtjni%neaxFFN+Om$2@^CTV7UT$`%}SU6-)Qnh at D
+oMMbYJzCU~S`Yt&?OJ2UadiDAud3$#E!<5~NIuW_D4yA~-;3 at 3nbi@L$Z7H at QPm^l778{YsRgw#lic~
+S;O})0-oT6~B at g={<&%^vGk%0{)v=39TlqBc1d=!aV$wV&&-Zjg*fqgLRIfvC=g8K7HBK<45tcTPoJ}
+t$T%*+nXib|wt2p45pl+PHbOjd8=GY6y9&=9nP#J)S6!5jXG4B?r>uEg%#y4o|xzQuiMg>K(Ii$z^5p
+RMW}u);6X^X={HR$}w!ITI_#c84vC;z72?Cq4o2fz|4d6ENGqa6{YY7<JS??by-OUF_7#A9fgewfit-
+tw~JTW&X%Bnckvva^pPcd`6T6P(m)1pMq13Mlg0p^9<+*;l7lM7(uwz at b&rcZb=3Wq$9Oxc1h1k7{wL
+bzfT=~#moC@%D(#QVTXTBW_G0|mjJWgGNPk5vZ??KfEhv$fE8}V3O1NHv#QzRtntxgG%_gn_WJtu%h&
+Lj&Dr-n1DJN7++P0a0v>#QYCpZXxVyQ$xP=c-J<8<n^3BEdyE}MrRX_k6jg}d&D)tiK=S+pXs95|3_E
+Ikb;@BMoMtsihY;@G56y%Irl0 at dRPLc>9aOJ1~mIF+k38suFVmn~cG64Wgy9|^LuZkLWBLk4mYmq8rw
+!@YPfX^7GSB;ouR_zGrFMZL-tUiJGj?`x5v|YxglpJ6Yk1~aw<PbV?QS$6$iCTl~K$I)K6g0+W5)j-f
+aw^CsC<j?8L}idu5I=l#i*r<LL4i}P0SyOJmELBw6UB at Y9JR)s%rfHFR1MFvC$@l`rxYBNfqaqGj3{R
+xZ<R>wJN?ItkD5mVR$3w{F<KUn5Ki@~XArIVhGAZkI0?{<q3ZHxvw(rc%Baf8k!XloJqN#td)zksQzd
+^CiW9t%n`Yy1bS6V46 at Nrk(|T~Y#}7s)n16tu4YAXYnE+uN-mMj{izZ7MuWPZ{)-jqD<R~@jnQyll4l
+Q!fE{L+?G6Utly1Hc<0BW-ZXwW&I;pPgDIi#bOTEQla$;BgTy<jG%WxKT~1xtC&*_v0D+XnI*CTk?c<
+yWGFfiZjegucO>i~w1)NDGiOFKVXpF(qqAu9#h}*i+Fk%!k-LSX-0vl1#NMGFCh)i@*<3sa8T}VtMV>
+5>&YpdM0j`F?CWsw25)WK7J(7|7h$DRkDRYEH6sJAxW<xuJkQsk%4w+?2l^!0$HhCJ2Tryl;nqAvQ8Y
+|Re<HQ*+ at _N;>8OisL{Xkqyhl7rG|DFz_FHqy9B0~h+V*OjB at _1JG6qDpvmiKysqo*>{q`UPZ^&WM56
+yE3D{v-B?(OOe(W#;(lM-TCGYXCr0bRKhuXQuftai*NLAwx1Nc7edHlQ^kOHjTsr&S<o6b9dY={|2Iq
+yYDCkn`w%a_gPtiyWdvBt&4-T;-5M5j~OPoB;x`cCW^sNKY29Ac^?0HocWZyC`rwRbS$r=R@?s;)DYA
+3g5`SjV)60<7iMGYsI^{U|g-Z=IpmZ$p&I(dN!3bwnV^oN6}e&Oi0$m at 3zuxBMoqWkRi1)ezG9*$3#k
+DRY)WJrzahHB{K)AKH%9XP694CWH+50btEgbq6an-sg!>`69p`;5$c>W2o`+aSh0wr<uUm%Tp{;+1T6
+MF-0?P9thb>-c-V2rHsO922f*yvy5*RDQBxDCoN7j3d;&--pb`eCio)L(RQD84VtBWVstfSklZ#Dd}+
+zCgb-Opldf0vl}_Wjw%Id`u*FUTcDbj(pqDbCu9Z5w7 at T{`ylFcI*@GS|1BiLA76A0Vgb5^+0zcAbnW
+V_+;KZ#qRFeuqT9KOYg>f6xH^}24CR2q2`;NgZ1%WVXN|lDR at bqbmtpSy;LNW>&1Z-2Ypg5~jNlR?<K
+nF_LcYA}_i;s at LIwb%7S)jx0ACUw)>~yB^lF*5Ckwd;#3gKsDkYw>k$c%hfaZ?VpxifZwl{0$~PrIUo
+?6ACVFh{38VTuw-yWu1h?liMo?HGpZ+PDZHhTS3uQKcdIF80DaX9)rM!5Dr3e20+RMV+~8yAkXQ4X@@
+QkC`9nr5$&re-TYffbjWU*@&)(wf^hjSORJ at xr*w>!7w5SdFG9Z6V at f2@}BgMyLT at i!D5KVe}SLUI+S
+D4pQ_RzE$~4-^u58+=;z%*1(K%J-aym#++n7q0CrwWCgd$r?>PmZUL^A)P;0Y&%J=l{gOk-6&T&@kz_
+ceZ#I~}ocCubaV`?6aI}r|dIOiMKU at Too0rP$nIU=r;=Sl|8`faD4BPl!YeQYF~TM_#swa9bxN1vqi?
+tzHh8(|#(kVqYl&3!uGhrP%9l5#ajp9J`d)*pWP#`tG02k(kE``ml?pP_swbJMt?Rpa#KL|G?~qLiyA
+Czqmw6iEN*^C=PeVEhMq0x)!Y`<fohm0V(K`3$gidKw+j{dXlr3Tp#7kZQOxn5I}tYRn<bs6GZPzK6N
+MLh;gKz<_r*uX|)lzinS+Cu|pMS*u>4BC#_WHTR^4XKKdIh9IUZ9^q_8QqC8|P;71hhSJ7pNk^W+k?n
+vT+E%su at R*%tz?J;+q}qxl2n1 at tF$~6V)NAaG08#X6rD}j-DlzMsxHGFFA9cClSVOgUeE5X&nfz1}`@
+)>TL`Ub==vNX{$H8!AjfpDl&H0(PJ&OiwO*%>Ngaq4*X-=>pgv0Uq#SJz at e*f<B=Hk^jD5E~bj%Ag~G
+BOfR0xBTxJV6plNHwWP*oWxu&;+IljqZ;eSkBe;)x|hK*h)rr^_ls7+mi~@W+4U13OkfMUkcKWdxAZv
+C7fp^Gocsy{`5nb5K=0S?&}W+YqK*&3(k13ktXIYfW~LgApTQreMEkVv{<tmI5ek<4i=h^UVJo&Mqq4
+{Nhew;LJjB7O_~jUd!2}X3Xb<+9OxAe8g6e(0Z&A#`|Iqx&Ih0ill!Vep<1QBRt5bTs;wU=>}3t5)G*
+LmqPacqb-RAYcxad{I23gt37Rw-Ek*?~Ml__(O;aUG*Qn3k8brk&e<^t7VyTtf8KM$h>hIv=DI2SYW8
+GMD1$o0C1T%>k9*~{L_S!>Wnl@((T#<-6(`sUv_otsH-n6%(X69N*U>5U8r|iKCBvDtUNuN*2chvZ=w
+t;7)N&VPR>rXv|aexF2E~aE@@l=bd10$9XP^jYu{3}ic?nyMJn^EI^S#g+wtG2Tg98>I=xiCO(=^QdS
+1#IXFL8~(TxeGAvJpU(E)5BUXtBQ at foCTZ%8>T&1N!@?!WLGMA at 8zn7w8cZ*_;#GeLsC9wy?7`=#vEu
+HxXnCgX1{NMDOv#V+C24O;QLo5t~S>M at pT1{%Y#3ItpGY<jS9+Dcs5~Y_T=%Ts-GYTVIv-&l~35e(?b
++S;^8N%N6Q!nI#uq^y?a)XyGawzl~j|XUkXy$7QXov>248asN+e0Y_hK`q^?t-ltjJRT2a$FR@#=2 at Z
+Ua{J!aQv2})>ttSK0!*o3FPz<8Gq8xiJSozEX%%J&sve2?~=MM2rS-M?Y+yS|2mpSi37d;CgPXx<eX2
+G5_=eFm^1eXP)OJ#WfV<aPF>58#PmWgD!fU4@>5d;pdZUEJ15TiUAg5zPUqae*TB&xb>X*w;oT0PtGP
+QP+03ITfqsZugu-HJuDEt26Brq+*+>snc|0_nt1V7jz}HR(S+EuEmQDe=v7Qpn?GPT7R<)E-5#FI=jL
+%afF|Rz%dYe!SmN;(cG^A^60vXx#@`Pnk*xnSaWR0TXtZc=- at HC#*AYp at pflhj1sb;bkwzn3WMRHJJr
+QX461GYcI%g>j0QQK?f<7Es2=d_ys=gJFw&lN at KnJ9thuy*q88Q#Ui|<gQ1%E49Wd%3x*GfNQP%o_LL
+vuY9C|4E>9K>!Riap=3F2$g#&Lz3B(LWAi#aoG0z1CJT}r3{n;2=;g*ZFIFzP3LVHH$sF- at bQ)7S0K=
+yD5nhTHYp%!*Wk=1mu~9btzwf{H)`@6A68z_)iZ+1r607~2dFafPR;O>aB661dF>rh*9}!lX&dRm?Ou
+$y(Hm*%<-(<2UiCLTS8tWI4gY)@a at f=Z?~%!5W%nVpWr$;uWJ(rkV^LTi?bv{%X0om)O40S^sBX1yBG
+s-R at r?k28lk$hd!$V=DkukGiXnr_p2pPjHv4vHAUW=V)#yr}n`OCvC;1Rp9@?7>&yySUN^w;*^T1YKv
+ht50&b#nv8wJ at 8uF%L1n3qrZ`49 at q`D#P8%7Lj%AIx7ezsJ*G at -2sO#0uGoE9#=d5nP5y*UuY;x7+FV
+|OB7w30vT&3vvA8d;@9_hY?*)0W^?HYAO^tl|rE%}{`D9<}y^E%Laq`g*%gMARyGrk{Fl6Z0kEQ?b9N
+NwaXp7C_<nMcDXY0r8YY5FLwB?{b(b|4xg5qzVrq)pAuQL0kS>54uu$Ht%je7Kgqg&8W=g%I6!V#X_P
+y6vccLB6Bb=@pjtvS*>6>b9C<Pkn;`BdsEj(+|ZCsweb|g6+7hZP~6`90uaNjixKO3jvf=-IIN9r}za
+8&Q at 8$VQ=tu6dq--W*;M4H0!TKbeb?cHBTn&J9GaRp}N_6_fP7lt!S4(^WZc@)?KMN{0XZ}pM-QybE<
+)ZAGe;*RU|&ys at v{q=tO9NU!-gBT<V}6fw_TzjQ|Jn5!<(0b*0+bTOTqUcy4RdP9rCrzxsuodr+y4D7
+{hMQDrB$qw#Ki)~n3?soa!HlRDBY*G>LF6+0rom3>j9bZ|wjTiEmQxw7z+*CM~K*JF%2hSqi`2YQOe3
+YFn>>QDRq8TX}?scyi6XqrQhPJa#*?$-j1`OiHzbNt88wDp&6{(yzC{l-(^T;o{9kPUy*$77tSV-|GX
+4X^1t5&{{-y|M5y)*46pD>+u=pH6>{*;~4N&LU6H2|F4B`6Dx$G^u?aV{9h0dlGomdpIl#Jn7XwZ*TB
+pw4(mNQLL6^Hf=KLaZ)O1l@`Gg_jQmyvq{!EXp_vetu6Ho#2jHN!wsBZLcq}1($JZTt;qX#B=Dt<_2<
+Tn)!T4 at 1wM0h%-}=xmAUIUVKQ^`qT at DUVu(}{(?1<+gEU|~h$6Uo30B<uXt$*R`$!WVsP>VncK#uh=I
+(s=26~v<qzgmN+&MGGBNWJ=f=G<7 at DU^!$C_7kM5AC;Uv|dES@!~!d1)vogK4QpJz6N%6PGqIxNn?g9
+{T3nq|YdbdF~AHwyE`^qeILy^cpnR(5rfo+k`I>4((YKrE&r3 at r5aivR~&mcE_;8_p*nUs|H0L(}BtD
+Ft863*!IXNUD?n*4-klw-?jJ at WdI&>GI{^a?1MV9YtOm*$QWj`82`Eab3Q(lT>eA&c1cf>R?`Ou97Ce
+L6y{XS9`AO}-@=YPWX_83_pk?VpTKx?_D%eoUt(@ksf)VUgk3bNm7rJ(H5`_GdpH at XszDlzwRY*?p7y
+eVokm-AXs}KP?jY-RzJWWuDD^`Eav?KWKdBPmuJhM+nN$VhN%- at H9@r`!;M^ZkP~Y{zc3vhI;b=!AhY
+<lGj}oR~k~YPi8*%sWJ3QdvD-?8s#Qm*P+ZNueV?0{e3AUECI&3M6MFyzE at FoJJ*O}lsR8rku;s7rw9
+4Jv&8BkTI&dm<HCAs;U4RTV~-I)C%dzhcya&<lxwn>_*H3My;k at uSb=G&ezrJxf^V#|*8Dv>+iqsPq6
+79R6{ZJ=lKel{VHBKz6Cxp&b0l0J<N1Org(^{eX{z|W>2^npwp0Q=kcG(MdH><D)J&2PW{Iuz+Um!R6
+2`@h&Q5QRLoXh9>fPbd2p?EUgVU`91ttIIE+$@w9P!FgJe&(AYp9tRjl=chmd=JDmcomCF<bywNv5ZT
+|am^!~0GWom_PupL<7*wz!2(HB?r`!EL_wKKA?6DS0c)&cNl(+*Sy5C1Rd*?=;Z6v7cGJgY5O9KQH00
+00800{-FNUYP5 at WBND0HYQF02=@R0B~t=FJE?LZe(wAFLGsZb!BsOb1z|VX)bVi?N{4w<2Dd|*H;X7A
+8ZGXy-oX22uXlk+$L?11ZxL<=oS$zjcslu(Iu(4Zqa^wXGltkoLjfp0^P;>K^7#=h3A|Zj$Xs|);6Rn
+ljS^y%FedG<tI_}>eZ`A<F6GOYX)K|qrdL`qG+;^1`3r`If5*fITl!219pM%Hdw*I<>?@b;#4iyTFw_
+XhHlz}oi|_Yz;q2iVp*bH&~j;iA4G93Q!EX}aIh5V0(bgg5aI0fXmmav!Axlirx7x=Lgr at RGmK_h6)@
+lwl(uAHj8vtGqA0@|g#5b&#Zg%wDxLRXYwKnu^xX8~2<S&%j>y95Dy5V~nURw+qdSPxTo at B4VLz}NZu
+S!j&ZhBFXi<Ro9*2LIDZ^0WYSTpmYWf~iJGgI7NyTvW_UwZV-PI7NYH4ZHBJaVmOx>+s138<nEfOUPr
+pTMJAWIj3T+#yCGI8ES-Hg}@l?f}J2-Nps`W$d3bKK754Tf|%HltYwo~n!zo4p+Gy-{T=9zSqd{A-sB
+6dCHL;hMq8WO4~7epwS{B}t+$I!~3lk@(O#gL35F{UG!vDF4hgWBOdyNzy4rft~mc{cRt}Bng>mTJc9
+~iLIzy|4fpeFRCiHl0sR)(zgMi_ex|w3;rd^ogMj1Maha1u;U-m`)-F<xFCHOgfi$QNguv`c1a&PsVX
+f=^V+VL*ddc9D5WOgn-4PYLs}WDitE6&%V4!Y%?|3N+iodsLvoG#B4~nA(~u=Yz_bJdV1rs>b9sxUi|
+<-RlC&d|TLBsI)2ae?B)ngdWzzFl3$lq#vY at w3J#vhe5JY7cEgc+GtRIID*%CHWx;qp`ro&@7Cm{`wT
+ykF6yt?Jj$^unoTP{!33UbB!SFjS&HrW`|x2PNGawRs2PjSYLnV|9F>4RWsXCxxq_dLcLXK~UcAWByO
+K6IZNw8-uN at K1ZN8}7`0;`bNwc0 at F3JOAw7EomW@=W2DWF_W6hptZw8rE(PI0LJJlaiS|az-DlHF`f)
+BuO`Fe(b;G+g4&u8U~jxL77X8Gc0Zp7!KM_U)uy%j?XlhvO1KcqC3~l3R;4QEq!@8N5rXL0!@9*CaUo
+~xmP^t(t at Uh;$7hftmGnyHIoGONFDY?2fTM%!!>jY-vk at I2Bp|M4ksEhNP at r3x@v>u_32F?k4<-qNl(
+gFt6%LA`m4W1D^d0#^t~<^{qgm3~dRIzyKC&nXFkvxYL#9?G_nQXR&{8S?P4{D0t$m+3YtiJ8=8`?T?
+Yg?`4whK-25>rq2`i%y-44H{_RzV(b*D$>QioU?ZKdg`xog28<K6mhzdn0|0h1m>Ga1#({6uhN#2n)|
+3Yy;E->)Z=+Th+BdIWoSp6X$x^ZjVTxh||-#={~1O=USydOn<^?ev0&CPDal=gpg6_UmEB$9 at fmYp6`
+!$~t`3bci&9yl_O2aH(cZMHgS+Zg66ar at 1niF@cq#b-|suRWbuA9arQ=r8h|GP)q8DtA$Lxj)<Q59J$
+~rIaTQte-hgDJvyz8Dr#q`Fg!7E2hHhp1lKGD4Nx at UtvSdI8z|PZ at kF_^vYze+V}H}_ai<AS<ED>zPV
+47`_7J#tZx-BZ&x2uTB#^uAg`cnX&Q*zzO^xF)CK6pWiS4=YQyA>tZM_Q{i{T<fBW291dYq>gn<Qa-b
+h=q_gXW{xPD{Ezoq<7{`6kruZ1h;F4(>?45(3*z^>B at ZNk0(i{~i+U(KX#Cz6xr7FD at si7w6-T%<<<3
+e1NmF`I!~a=5gmGs82=*$6s)EIJ<N7aiAH=r%+xh6S^0VXrXuU$J2{#j0d2PjQwZu)%ZV@&!!xh@>&j
+#biM at A`SOTJs)rhRMi^J0x-LEi6065Jd_bJA>Ec7EJD41ud?D{YCy!~V>3fd940E*j(ka+{fqv%a;3k
+Y7orfpe-%v{f1QY-O00;mH1*=GOhnbQ=2><|#9{>Ox0001RX>c!Jc4cm4Z*nhkWpQ<7b98erVRdw9E^
+v9}8EbFbIP$xH1(6_-)V0+n=mte_#v+$yw?VgQkz|1$dW9fcw9Q7ARFaC5J>35Gof(o6CBL#C4tK!mL
+#v20!+F1a$VM+lY+7cbn4hs)&qi<X%V2PDa4?Ykd(D+raa!xe;1B;94DJ>}v1OUnIS2egr=n0yFE~SB
+UT85*wI~a=NQ*4zQn6Vn*^Q$}^ao;Dl~S`(xi`t(n-<IFeUYj~E+);<Lh=+D9t>u(T(U{3_~~nAPba6
+Zc>w}(dm2y6WtD1oT+6&lrQ$=Tv}_>Cd%=|h;g4FTQ=Qn)i7u0Gse`Sx$Qwwalw<;c7r+viLk7SF2>!
+qmppQHnG^JBrs|5LKu<4J%;Ns);-R1RNa`%r<m&wl`Z$2cy-TZoaeev<_<y$spL0VP0Rp!gb(Q36Cfh
+LzD5X8ut1zi#!e*5+AD*1GNbBEZ=I at bdD)GrAuOLZCy27`>xSOSU@(**5>%!ak%vPhSpnkrRlRmv<n8
+!&jlRySPN5)7QOzatVm2P9 at BjLDP;hm_zOUTdHN_QRS&LITC7u~ZlaN9ycI1?-4z;v$MIT#y5$;y8dW
+NURDYA{LqJCGqIE03oM2P#{);9UhjGZ+xm-neZbsFnR$VlIA%fqkVF|1Ro})D+Y!I{ux at bk(CsfOaUi
+JLdEmhkV#9Lcu55izb^Haqs6mJDN7j!q`C$87KBf&z+r(2Ad^mV9tTmw_Pe{gPozbJ51kM#_vc!t(*-
+wxo>jci(<KGu9GEX$=rN-OGFmH#D1>h0*y;!PAV};Wz|!uu3*Zm|z`gov<KLUhO5m`gIBUc_55F`YH(
+Wesa}M?aw<QWg7Pzxu2zoDgG+ak-*;+?;XAZr={u=qL7knS<MXBjFyo5lW=P<F!AnFS_NGZkdWW?Yr=
+&&ED9bF8&vPFG<WXGjG$@1}uT&m+>+x&{aH~3Zh9Itwguyn!bKPvKDF$Wf(6-Ea1e>;vGz#)6jdBw1@
+a3%^?aXB)jk>w?*9!^S`&U+LS1Ckh!aa&Ad`VxB1PQn0Hhe9`zY at Qs4?6Od`<c<$TXd=zU?>uAQFu|3
+ at lzZGYsA5L30@a-Yah*MgN+cF|*KL*~MlcZOPS$)MD7b}A3gQXsRIm at 6Afay81zzxKANX`ZTK(6*_W@
+R=0yxYxdpW3=$?I3g6ip3IW28wf@(fxK^jq76Sod3Uh^cId9S<nb3z0Nm0+}t$e+dX6_}U;iU2R1m01
+x4NS#1Z8A at 7C(fCO#SruiI#UoUpBWzZTx54o&T2*`by2FgRjo-%=c_f1Em)-79xz at PE7>wt;RaPZ;nk
+F6K+T<rpG-s8H0hzKJuj`DOl$x>*sl&T>m7?au#8@@t_nZ6OiD%F&bG$=af4?OpI_wTdZG3dP4KaXxN
+Z*PMxv*=OF>_<{e_}Gg(dx22U>FX419zIeRy#WlLN09fi>D*|v at bvE<o3U++AH(HvFO-KzBY)V%@U7<
+f^mM;2{_VT-4I-*V`ri`~E<b**jE>RPJKy6>U|fZ%A<NEM`0#+b=mYGc at hFNqPTkVo=+u_WZY&(K&!0
+b2mKJRv%bvJym0oC&qMypDghnH*TW;VAF%Pwb&!C`TtF4%wGGU+*XdF=h8kDn}pD)<S>G3IBEyNUNjY
+V1K8L<KlGhbHvsl5#;jhjnj`Wt-y;N^j at faV<TlTTgg3FQZHn4fTF=|Z;ZI6uaKCoQ{irPr5G^4!{<o
+S!uKgzQo at -tHOe9o^H~_53*U&Q7{#CtWMsY`rlZwxw at xLG{ZXsO5M^g4<g(TjXN;kmi)EgQHh(9#IFo
+vD at ASgJENn;Dbk7V^N_L1i2do*ADR%{|)yLD^*;}w8+Y3_{KBA)RoJy6Yr`M?_bW2PrpXK*`Al4`;O6
+dMK~QA8HbjQsP7vZi*rBjRb?Xh{aZuAOCy#VI9(KZE&#Ns$m4bbT4gFQ_6;Hzj$&2i0?O{N- at 6gP2{m
+g6j`_3pzO~$G8L*Dy<Qm%Bh_f}EXpel3hiHdWo5W{!SF{uui9*Nw6Xw2#lm74LSDV|gq~oRrnrB=673
+Dg!<$-En{?zVHaCb3ohu$%0^T4Jb`%YKccgU^wEnxrbD=a`2m4!0EJF=S9J!Y$+(`(0zO_$ZxByozFb
+!d;9Tg;yu`>w4d8i<BU^Tj7*s?t^}M!O9O1MTClMTv(DXX68O3Dog)e59OLw(9G-Yvgy|<TQaDG;QP}
+b#L%8ZkI@&2?;Z%8=!~m#f$q at D(A`zD%#B{u32|XpmfM3%wEiqQO&Gsg_N;S%_aMDdT$IlUgH-|_py4
+H-gD&*)6Vl4P+(f(64uyegbE%~(&8Mvzg;p~=C_Pg&`)5NTW at a;VQ^oG!bI6jKvV;`pz$8Q;-n8bten
+yDq|Bah=wB_k<UJ~ox>nGn!zu92Ej`=9^zuXOJ|n$Yaelw4d;uF?Wub)!Xt&vrnDGU-zTRFPcU(cxP4
+0nF9A#ib1}6Fy&KRWJy%zl&JMpH(XE{NqF~A4+?7%yxojd3_l$I-un^~UD)ff)1e!2d5b9r%odl~J!&
+yLe;d-f1+id8)c10Zaq9U7k>ANxhm*z5va3`Z*bnF2IO`j9;57}IDz$RBf2z)b*9KrDb$^eEuQD+hJ5
+vX<bHD`#=z2eqZ6aFqj|*Y^W^Z~tpvLRZ{XK_z)b)_1NmEvu&<%;ujbLPU+-$6-r?Uene3Ju&_RW2M9
+CQs^m>&US1l$#$D|5o^_%C^d~Q{?Qo>@JS@;ptVMfkw*M^iKT}UF9a^Up5hcHYk-z(0M2G(y0$By&C7
+}0S<2UQU=RO!yWT@~)$GXpwH>X{yrkD<W%D}D-ymGg*os3oet>)m&iKGHSF+W;sK`Zu`#o87+mNtxLA
+}-dvN5&n+FAD}u&p~XY4WG$dG1NeAE&(1>|8_DnADonk1PF at e^rpsQw(&-?cHTC^j4ynoAAv{0dl#&o
+b}@$TQkWYL|HcjE7gINYRM=U_uOuThgev!M at OU{nQq;&)uy3KV!Cyz(1BuD*LB$=a=n&ep0{4a0GLCJ
+fCu5PPhr#c1$JI-%Xsvckz5-Q{k8Df89)DLzY_fkP)h>@6aWAK2mlEMt4NtDKxvW70sx3Y1ppra003}
+la4%nWWo~3|axZdaadl;LbaO9bVPj=-bS`jZZS1{Sv!h6tu6fU|2s`Jdj;X7}Jjkprn1uvLAm*DkW{F
+7>gFyWHcC?3#h}@C!W!5>?W!9aR8M(t99EXkkS?^lQm!SXoP3gKJZ8zTz|0&*wOBPPw4)*7dr!*eg^c
+$bH{Uy7^VV{0uhyHwRFZ~nxpWjYHRHSkL&rVjuD6KZ%{>RUUv;SimIc+Z?=w)DxhH(TzK$|8I-=s^Er
+|qr1G~lWvwTYt*lWbymgJ2sJ-_YTPMmJ2fiO>x~ZIE=6AR8pwr12)fmtnUo^5Yl at y1~#5%xuDBgJPQm
++aUPz1Bz at Ye3RlEIN4CyauE_;F2Yb7n%t1s1`FTDLkaT75n+0RG8-z~;P3{gHc7Mz!8OPY4R2y<gCR=
+`nJzz2<c7dDak!!A4Nh-TWD}*EC;>xn;AjJb1HiPX4NPq^W`o9?47AYDzc2rAqO9oOc+s>JN#R*be6>
+QFq6mt>^X#?G*-_!xToLtzg6EmlxxBoe%Ztp6Fvl9U#0uO&GrEyCe8DjcSsZr`WY40ZvAE14w#c8gt?
+5Zf=mzIh5POa9-r6Uv{A}krD{yrruI=1FohOvYRUNweIgvqw=fI)NJVVbUG!FL!tHd=Se`<w@>Vk-9&
+K0zYKeR!hakL6i)!6cNHSVnOj-ySYz#h0<cR2QHaj-KbZdLnUKB*SlzO{GOPIM;dy(70#r%1eA1)e|^
+H|8y<tHSq8 at OKGG<ntr0D>$`yuKDTNK&&B3EVx)<uw(9*eC~_v=%AA;$BI9Yd3}L1UPetxzWDr^TA{i
+55OMRO#78sJ$PD6A9%nP|pdaST<z|b)ex5=^&$#HQ1~|Vq^8I1m!yKQ^XO=UM>*He-bVL}cuEot23&p
+$AaR|+&jg=R+86WamJc~%6?I&|v439k%4L<BpQ&MHNt`;^+lb1ufmX26HQ6&$tqsX%1foF|!%yUuFw(
+RmSlkI5UG&vrFkSngTTzWH?{QM3quK at I4c?XtP0Q&MBFyN6NUsn>u(G=`*oHXwGnwiKNmd44PFe{^G<
+s)<ul&5C-ux8nlTd?Z#JKh?!$gvu at Eq~lD1DSBaarr1+S^IPduB+4I)ZIMKWby)1IPRzs7o%Z}acjH|
+K5(2bN at 7um$Fhany at SA+uROt}=YwDF*0#ouZ?hQ<2|NRhV>5b`bAPwL2Fm#nFdQth91Ct^>LjPo22Iu
+kHjh}1g=PM9mrqKB35LjVhRs6Y8FH*t9QJ8TGYpB$`JRv{SAwIaz;~XuvqYWUho`7np=EtY?VV at V^|}
+-jqBy&x4^j7G?RJIbM7uh6vUKFP?eTPP6u9I#CE(NbJY=Ne+O5+BjLxESSG%fmO=fhEw#gYn9 at l$tNp
+m5)H!(8b<D+aVt|NNumZqN7^&alGY03~3yy`eC#@`kfQ5XKav_OBLg4h33uC7s7oi2Iv&AeWFuxbMae
+An1K{=Ewq7`*p>4~u_x`UfuleCqeSz-bKJ42DuPPB0Wqkt74d1PbF{@dHaYII$tXx=t(vAdn4%zE)vs
+Lx5G7+A!HBLN+wDEa-IjB|kua6mJ-?yhi{rn+$(P1sZNbdcy!7A)D;&3dnM)5Z at rl3sUhf_>sN_Lg0l
+TfIm^R0rLdpz|l?2Y*K6)alur&jJpgMF7Su|l;{odno0_|2zmipz>(R8T;R9Cz$u`Y`7J*Z3-F^tKlq
+_??CT#+vioo(j8QN?J`S<IER`HsCY||h!G=CoY@@U%*<!tq6<ZXOE<$(bNYZZsisw<|_c1Ddx2ks*hw
+L6ugc-R3i<3OF!CQxBiRF(c+con at cup`ZHkC%0I0!7E3F4#`><DQB7lOtoXao)Ut8r=5q<G?IcK0@@Z
+?WZ0(#&#{-WH_2IC0xZW-gHLPFCn9gCY~C>gi|AWJe)?9i)n5a*9v}229~Jvm0gOeKnhQualQ^q1VaM
+?(u#r%L07)d3^u?W?5X}gppnP_v{rsY(ofzAq=1*CJP*1?X$;Yy5L$Bu5QY9E#5n|c0}XE(DKp5>!hB
+iIhm(k*{?|b;*(+ftl1!Z+ at R?RpPpnFTU&N}wcx#`!A at bXaV$A$HfP5aV9mr+*!obN=$pjgGUn(OfAC
+6urpxUOLfp3Kt|jRdB_54FeUYnZUt-b?IpLAgXkd||pM%F-GW&Gg?eMCP;zTAbQ{I{d_zCJ7`*0re;L
+<yNq&v8Db1!5JxOaFwcbtBVkrM#FP0G}m>Z+ at 9{*y at XVL~T5FT-vJ*(hnuO@}3FHJXHYv0cqgLvm_Mv
+F5cr*fWxRFAF!|TQ8rjwaT|##8tv6PbGrUX^6Q<S8CNh?HjW$3E{}*U^Qpu!YIHi^+vZu7)5S98shS*
+a|L^RF~)qY`Xa<xtiT%EwZ_432j_;%ab}*PerOt~_q<kyioxP+ov!Qk%$)vgN7#!U0ca(%NONp5kwIY
+vT~q4)@+d56FYJ-*ICTv_whyCDZHj5V`_(+DQN`~MGxRKwvz6#FA8D(R6bc`)Bf4!Lt<{_js>H7=|8c
+qa6h(4|^JrxL0poLQsIes56_JY&M(bIn+s at N8xkfXS#5EitV;t at 9l#4a3Q_m;i!x4Ia%-KV381=kUf?
+b<e8DCS+`UtU+==8>z+%n>(%4L~y<b0c^$sefwbC-4!g6_x1d3&z$`y}~Om2l0)x7(HbtUWtSAYp&!i
+Ctx49*?1j&-kf%$DP?_9yo)QTa6=$!fqMMUK=eLXH5S{c at OtahFL^;q>0d0v$LDRJ*1Pc!}6!XpD{P6
+yvtfFcKcIs!`c7*&woO#A8-Re^97Oq{hNvYnp^++0KX>J>xf_Ci=<JSCP;!tP~t0mG5DfYC~8Bc3nB=
+x<O8x~8w_4V1P;Ii6i2quAb~;Sm-wQHO$u+qXyFG?H#D(90K2FK6)>O~AWF7Ll1&1xK)+~2EiwxQmr8
+$uFCb?Csgl<OfPz}i2lJs9UPa6Xeo3K4%P^Y+P%GO|$U at 8zS>_Cs+JZHJDSSg_8zS1^3$hlff>S^*ll
+~T8Ljmx0-~S0;0`AvD4u6R+OAx{8fWP4jn6{pYP7lA9IvcH;=)!%j`3eu`cA-q-%$gr)<G-U51n~4-r
+}jf9=o`1^Sl0v}PzlH%AqQk)M|Wu}#8(^i*;sIzc4Eiv2YIIClQ2I4CRb0~37ib<XYu_O&f5NmTX^qW
+`T!Mw>I2W~q<lUX=>5R}6P6VKnvU$ECygr)e&*PHblkDzO0DT at Z9Dw5?^cR)ig-p}pSJ=jwnr6u;7K+
+$D;cJg(bFTQ%_Istc(}jwcjZ|?VCk5yuznTem(ISPsnb2$pTZ!$?^De^%QTc;)%J0nZyot`cSh=+Zsn
+bOuHbExt}potVVg0k+CmzvYxmIo(~$N-mZ}DK4KlB+?oe-4=|!-*$2Qma-9?P{g?^$=d1g$6mGQV5cj
+ssCbS{RSuY4_Dv&O2#M%~GKQ&Hyx;u$ZPkIj8IUfY=1%8fa6PwjEV_X4aEylQ2`sGlFG?A;{*&!=x56
+mPfA%kgGb_$`Fy`>I8<^v;L3{E^Io$1u;k%UWK}a!<P at kEC_yM(xaAN&cB1`5LGBchSZ*0?$FU^=23W
+$@9X|hwKsFWRJCwiDPYGJ^+NxZ1Q$2E=sv!*DGZUIcOYjJMPZ)M9}Z9J;sc|`GSvn{u&_TczRs4Gr0e
+Jhx=8yHQ`veK2%hHMm*6#?{C|@ylrYtR0+>Km(PLfDNnTq2MIvqE>}HiqAaj(4n8J$o_N7DrlWk7A*`
+z5`hsN`SIcVgg#+T9jkPaX=V`iDcxX}wZa;{IddKAs+QDmgjPlsPF0-&}fyN!_s1_s3?ruy#OWRY#4T
+oA_<(<^uOQodhn+A7&-KqE)KOZ2JK_;DRIY+<A$CY61?|tv^Dsre*U6EJh-fuiC*bXrAyd3XRWMp1Ox
+Tc_{jdKVeC+OO*unPke9#_U@%=X2hz}3)%owAX*$T><0F__z&IFskqu+|BACsT~PO2&-Wbbm at 9HhTzB
+)I3ZXA<RNr at elHrciS~Z_Jg9C#?x6PR?v9`J6CL60~6ym+v|H}tLCsX))ZuM1-y3Dps4GK<isO(E&SD
+l>=?35tC-GHZI_FER~gE5UvCNiAabSnNYgx(Ej9leY;*vEUTos4u<O2I-;P66UE*)Y_EH1O@;f))<=X
+t=$O8zIF#yAl)Bmq;N)!Lb0>sY&t#;`8Z+hB;4^z4RxA=d3Ll}nn_R|^v{!O~J-@><X=QQ~?bm_NiQ$
+2q|@PFrdevp1SrTd3-{N5ZuVUnbAk|9xw!6_6&V3fd7ilQkPp<#w3K^u;IX&l7Kq6Y!hLuwI^F}_H`H
+`)XJi37L-MF}YT(!4P9rE#$MRFlO4x~ODqgGU>ZSsb8X><A#9*u>Zd1CkWo5X9olB;m#N3N&a;{#x4t
+vjP|;z*qsw8Aw#1kh5?(8O=6mv^1jdB5Z+-jiXISEPn+u7MKoHvh)%_R1+JLc$pOO(hf`qD%wyexSih
+_2co>dZd7>D;G--LcGsD>42d_C;(6MqjQ5orM^m=@#YYDH<RtSn&i?R`9h};EhR%!eog!9)|HP;5`?9
+=fTd4{vD6Xq_cAL+{(}6_+R at H6ti0f`T6fFL6uy#5Z`x84ItddZqp!zruQh9C{)!ML_A!f}y75USZNd
+~R~7GJ$mWM+uA<z!l%@L`1<-v at b<rlQ{Yo<1vrmfKtB63JDeNZd1Yk#pRXpDw&N4_@^E_79hM<~720H
+z?Vbi at CAY=6C6BiNIVDUna}D@}BjA#Wc%*YO_t~Ruz6cz~%Wt|CI;$$1VKB2e>>x=)dv+U%!R_$^%@U
+AN2MBe>A)P((2L%vXN9e<>+u*(-EX&2WF*JZN(|0wPsOs?HQ%fA`*S6{8)4i5u+}(Y!IHGkESSRU=@n
+)5hB|1VRb=!XkSagO^$0z2gH|lQOvWVt4riFG;a?@^MXArU8vb`HBv8*UQ3I+9Z#U%4vnADAP-PE*>S
+9nxpks_?6y}(`6)S*7?K`U?9P&XEnU~~k9$pNu9$u)fRV=@F@^}7cqN^<8shntQ&OwD`CMJiTQ-V=x*
+GFqYo`H9w29oW6#dpcuOmDKj^EUzq{rLCJ)vdA<;iRZdE-1{-431aYb<=Iq!ES}ZL)TRcPn6mxaf>41
+p$5_Dy>YoKHZu-%cbLv!1di>atG*AUkHbY-^?!S*XD_6p4>4UPW&-mt91Qb4`$e)Rtlj{>3F`Ca8d*w
+mavXWyL~p<nU3z}V{bJcje9K9A*;(HYHN1qO+;3pB*o9z-92k5B*@&Ok9kCSDg!q@)VpV?Ce<Zll2#!
+-KHySiP6^svV#XT!E9+h^>%3p%!&ysgCFG&CkB`N(k~<D(^yG^BXWu{FvAVCM4!biKa at -o*i?vFx^hr
+MNuEVjfYtyhz=Q#jjd4nWeY~3Q;d6yQRhW*)-PSLG0*m*5XW1RXLcct`m6kSp3z7Emn*tZY1jIB#2Ox
+-N^kTuO`i+DbS at tH7KuA@f-ajrtxqp(*HaGJZ;dEGhEa7Ws~xRF-LsOJNr(%^}S#y>Yt at c&NO{|ocvz
+tuc{VV?Z0Ieu at RU<giN2t%P1f-o?HBN&BaFhu~%1jZPQq8W at Jz7E|c(I%!B&ZE at gO#om|!wnfOj&>AV
+yzg1MA;`t8fnl2@`_eoC1EleWju!_#Fk*mh0xSk#q=eDSDq%KsvbaWop+i!Ose#~&=|BOSBl(qif^BG
+KaZmu82hLuhTQD~;0bt?4i|GMI$En4^f*~6`-Js}Vwt$NP3kA$JgcoZCTn2Q3YXcJoCKd~eVqX4#@^6
+?YLU-M#YScJ)HeQRFHa;qe`u~`DV*LN+$$!l}`TGy>pP46nOud=XZK~>)_E!ib8;m=5Ph|TP%I4x%rx
+iB`eidLnFAzuj*hfQ8d-GMv=8|ORArtM3?1iVEJ79{`?VwdH5BKAKiP!V{K1zckI at O~J-*>w_+fBD#q
+04R0%l5;6HlpNjFMDRTol9k$2Uw00$R<^d=7iYU9#n2G$=a;P63i1#iCHv7IQi-_U3?<Uc6V2~vDAh4
+o^W+g*nCveqgq4yl&G5MZwZC#Z~etphrC;H at _b;C`gVKVpC>&+aq2=(hl5;|{XJJlYJb`W{mdQLo(~O
+~)#Y7uItF$^#N6?$HNh1&u3X)EW;l-_+CHpmjf=jL9%Ky;D#1S9^m$bXLU6~{Q29hXYSeyfo)qhA6~a
+tJ?9Iataa-l=1V`<TKzwiRQSy;o9mbkM&O5~F!F&#@Lw9x`v>NOtmh23h9=Gu{%&o<FeP5r)u}}oHB(
+yt}lbvMyV2R?SCR`sB-%c`?I6Cf#<#cj7YlSOyMH_X>zJ=p%{}5N2OFJqnblLv8uc536C2Wh+!N?<o(
+4X*q0dC$SrWzYt6F!`y^j0^T?N-ClI2A0C=Dih~=^VBJ6;m;U>NahhVQ(~diD?zW;drFaCsHuW%M*EW
+Sy_Zf0xOTTL<ZzhFmCDtu_^dISM}JU#2Sj!$7!4Mqmp8{;qLh%xjZMem+hlAO+L-tw^qw|d4moa7L>=
+ixoRtLH-hf+=KOcOCt}ktc>a$j?SF~Se?wuM{$ES3)OQC1!jI$lAL$=WYyNopzn4S5U7GmX-u~lT^!(
+PQ*?)Zdw+h&-efO=pgwcQeuRlzH at 5fV@L(=3YtK`4o^gh$SzUw`<X?+>$Z?ECs^TB|z at kraB)535PCK
+(imzp^dTbTK2aS707P7ZZR9Hz~PE=}kmzGHMC*NB9QAU$KX;<08ZoF#*V4@&b@#ae6GlePXc(0PeF_;
+#vAKJE&y&mn0Tf2^bPXeqmdX$>M|oSESIF6DD4!7r{#ighUtH0 at xhD_#m>ypAylVFkYseyn-;mW})FF
+Gy=y<VnD<!#uG*@b_wz_o+#?Kw#9z2EvC=7h<K2X=}P!2EsW=SL9{ha`JkT)nJxjxjWZ`aF$A7583Ma
+{r<tu|36?yGDr(-S_wFkeY)Q|wf`tz}cLP+ at A92GDio7F~?XC(gc)pjXTjW-7{N%dOl`iU~oOTvld|-
+0R|A9$BHD^e+J0!-8A*vm~*0+-Z7AHXa=>vuP^5^5;vcI7B^sgIOwtq-UQuzF-2?oBmK23(FRv42$+o
+NttZ at B~(i$Sl(C2P&v0h>XFHPaZy{5^SK?4=*>UyxW$cu%34jO7VokXrvZH5Jwk8=+rUS7cyQpv*Jo@
+!SWHj%%k at FYFb-y9cwJ74WPe-&KaaB~}`*eI#MUds(|Ff(WKv=0E+Ga_jBnDiFjOSV3>GA$HR4KOguz
+lVC3>qb}sP<wfF at Ke_V7cNo#^($DAn7noWbQSatn?uL7zu(2c6#vR(j5A!khd&{T#d>d8)mEeZP%|>^
+=j(TtH86+LHp|1xARlXs#IA0H2WWcuFy4rC at 3U$7GD?Ahj;!|bUA}{FA_GYssyJg^NFDE=-&lmQAoUt
+@<Vyql7$_wjLdp1vU<qRIARovqkU&tVzi?xd4r&vNSb{VW={`&CiB6zOlhMFeX<#9DFyJx_mK{MF+9S
+EG-u^`Wy-9}Z9d*eu`q-k`$sm!_kbo`d-YEu)2lh0vZlrbxUmz?};vA31iD>u28@!4KO+iQ at d&DD9NG
++UhQi^Iii$%od1C3fLXUa!Q=Y66EJ4MN9Ix}IsxSKM7~V1kRp>=wceMPLn<yTZz72!B6L1bqaGob<%O
+rp!M2%Wg0(g_hOl9b3AC$9@$j6<*e!Fho#+gpqbgtlFE%G)(l0i39MOQQUdG*RV<U at s%4~EYje*^Nw!
+oxH&$pH9plD242?b3fXkX=I4XIYQr9_V1|x~fjQe|r6?Lztekd|TY-rm*qIgzB<{9dP1Wa{Sf!nBk$w
+iv9^#4oD&p8GJgd%taxjS}VG6qw;WcF}X<h+~PwRl%G?mcI;~rI&*$Tbc2oHydpkYlH6q*OmX>aY2QB
+YkPyv!sj-{;hQWaj;zH at 62t<grQAmhKJb{di9~KH44kPEW0%$Tw78=~qSCdNse5=~YapCnjxlNt1l+O
+z{df?`{H5WO2UZ^$ty=2+kGBiH?u8*g}~^hRIL`rRLE2Y at 2~2{_6$@7gqhHzAg#V&nRu*oCB}4g2Q)x
+0N;Of|6~*Vvk^Y9{mZj|a1a3fkCO=X6{P{+B611zhs1`7muzi7#RMSrl_tl$LID7~0Kp+Z_b-yS at g*|
+>Xzm1FA_^qA<PH$n;yggYMY7ZMk~l!oi<C#{W#Bkm(ikZG7nDZ8<zBIo5Kx|6;u6s-Jpw^r(G6e#gs<
+2|xLi1UrTInJ20=Cmvq{J$qOx$CSVAOtv|+I2!Wp(4NrDSUzfZnfbXT?dq%@ne?C_QKzht!in7F%xOi
+Mgz9Q%Rool#32Sk8N}j8~eejiT|9#dZ@?cUQ&L8?iJX^c40@{en+t#ry6A1G)HkW%OdzCGd9k8!z5cA
+>NX?7fEd|Sqr!>_ at gFWJxH(=<gHPeb*o$&NB5^>?vrg#V!;}p`4jf;9Bl!ZUFHb|)*qP)0B`#rt}cid
+u(*9>F$CY=9>6@|1C0(jZ-9Nv5fuK8h}Fd5xo at FbKs=HUo^|UG2;W at r^y1{IJmSc3*gxwq&{t<KMZuG
+Idi0qObG^U#4-&rU*AqDxEu;h(Yn(dHZU!Y`w78&Ca_}!mm^V$l%1vXRnX`7g6ep}I#-X<L{nggAEBS
+ESouBTZ`sT-XH^q<R>@e%<BtF-?%s69w<c}k#?zwIV at uUF@?F~a7MK@&9)f9J%$f)diKMjyq3#<O_OK
+a6iIHcqesq}04h}_&`Ua}M8MT(q04iY&$Y?dU_vp{6)$?L;t26ja7gp!!S>=K)w0ox50RspqZ9Vfc1c
+`4?I^7e>*k~$>Axwy3zW)>QSTxDT9rV4^S*3T3wD)@fBCwi%mja-!PsSRLZ6ty37u at 7$IT0Czeh1MRg
+iX((_Is@^_iP-pVfhOWxmY$-q{(?C0E7RT*GEMmShBpAgT$I1}jzJ&pu_eipHF!yo&;ubeW+*DsRYxi
+78CPfaz%Z!As7XBHq+v*_N4P)LXlgMi#GFe at p>l(NRQ^pj&#?-NzI#1g&Y8ovnDh`h8W~D$=cBSAuDf
+}!uMV1ziT1k3+<bzHaz1sV1XC at 6czL484KuE%AU<mxagK6n?X6aUDHj6G^8N9A(&th{!g5N_m-UrzVM
+x3+*cAq5$ULP?fTn$XNi&{OZaV_l)TSC`$QZd@=u=2ZoLAWV5T4DGq+}|4+RAx`%1*uDQ>fR4!ryV+$
+I{XeQ(~ougVE0TSZ!NFo6#mP*2r2RQ@>-jCO>js)Fr*8o*<J^aJ3g!c``o3Gg!!r*;yY_ZVMo~6V<yv
+*SCL}SZtEKQR2<(j4b(Y at 3{HwVz~u4pMSNi<A=lhCwTpr2m9dIXSaGC|J at 0z;Z1Q~;<Wn{&c5_y0|AD
+k%aXsOwqY+vbhIcmAmn0r**cVj3mGDG0YVmk?a7W8#=z;~LB`|70}dn0NhGs`wv&%sbO05=p)^`j at KS
+7H=Py0kbiC+HAYM^wk&$2~i at Tay*aZ-myiE*S()pI00Q!}jjxX|<d2Lj}$>jn_wh$9s9(@b%zqVMV%b
+uj)d$O0Mb>u%d#(n9*61eIohFJh%HuSypG+eX%Sknz#nYI=ieL7u5sSG}Rt&(ZmJa-5 at 6N3N|TJ0ph?
+Gbq~?aT$T`N1$DlBGF*vePT2?=6w;Ju{C5nok=c&0^<+piOV7d2fxMZN=Bq{y{MRlWBiHYv^B{_OFu5
+p+9Gr^KR7}=aVa3!qu7M#yOo1LM%Ry`e=FE6%!mp<JNc&TXxZ*f_R~i_NGq~c>2`YNP4ht#bQtX`7Di
+gkd-{b+@?RSR43x3m at 0NR*ip|w16=8m)5!+v<paE?<hU)KkAw=`DRSHEP~8p%e9*A+dBk|WyjADOheu
+vvrXv|B&eY($WKx6bSwV at i^4qQ;M%KR&<TPWXJ**Hl?o6jrj#nh8n-qJ_Q`C+l`W#EKf3&*gTuZHEyI
+p*Sj-GK=P#fM;J?@4_7x#RkzMH$^I>9YUmi7G@)L at PCcEd&1CPcwcD{{5dHB3Ip4}phPTAW<(uuwf`e
+13W|)8?fXNre~e*8ZBUo{lzbDMtTDE(go}n8)-d<DeJhcJ9<4dAo11E!vAFf09>Y$n4f8M`>*Lo{9du
+EObRaeq`I_emv&>iT$gAuWnriGgm>sdsTn;rb54aRe$%ULT|6?X>khtT2=B>A8=hZ8(1<JTe7M(SS!!
+lIwU=a%8;jY4`vf-VUodaOcGIMJl-z0nLJ>hIHtw$5E1))#*^rvc{})cz5qFX2NtDOmNSH7J9>XPgb#
+sQ at A<aBuIX5zZh|vbjb-;2?t<ZK^qKe^<!{BF=`HbrCLHZ$MH=Fo52ZrlsjGbE&@9__NxQ!}XnSS6>s
+o;A_H?ty;)siDE3FRdI_hGlh at R_qj}l%;A*Wph-RAWQcEg^hrndH@#}UJ3Sy1;W9Tj)fl&dVS!=!R at t
+m~>gTf3)8ywXuchE05R4=m(fq*RF+%Q^C7gg4QBe|Kj5QN;0>%1=(@HID2{ftd~lf}60r)p>f4Q*NA;
+|GKFBgrPX~Y1 at R=zkt=xL;nR>|JR586ShB(``2I%P)aPMgYhNT9SB1p at 33qk`0{VEcw>Q_qyT_J(EcT
+?0q3)D5p^lLh*cb0#v|!PAA<3gXfv~nlo5;2B%-BjNvj73(7$pG(+iG6d~r-;^b%DD17+DJgBL$9(7^
+!2bh2D2c?0n)Kc7q&qauoz$a#b>+51_vp}{fC;*AD~CzB;QouR*lwf=GqlfQ%Y<8Q-ySFq)$H`o4-dZ
+L3Tvh$39f`k6NuDq$ycQN|?x+0}pvx;kAJ}<k!PH$oq`c925ZqCJ1IUl5DYq9ck+ZfG1icuT3CrA?5)
+2AARzn`YWYbSr)u^&13$d|K$z;tX!Vsoo at -~?r!;rx?Q{qDJ#-WdjpcJSTtmAt<QRp at UiRW-xp;#ku;
+E2>tLTh*h7w$#)KG>WV)2XyYqNVE>#jjyyUIAjm|PM0fKkcY!@UOBxjwQlvSZTHHLC$Ejvo5w(dc3<m
+r-fs)iG(u!_x@@%O^;NqO at Uy!Z&Y_XLk-?kb#vWO+^TS&zDXa8MN_ShIJ*Y0p2NxacI5@>|q#HilZbb
+sdIo#*(hx!_xe81fHS|`%QeZC#fdXdey^*MA`6auRr6v9?Hk=PK~QWjUYi5Jp2b=}epd0St{tU6+R*{
+C5boS*1)x|*?>>>Cv8^+=@dvkr;y345L%i7~R(s+Nh+z4^){W4HNmbQ&jMV)%x at A;w?&s_%6^n%w8Ge
+Nfb at N^Hi4!5SNXCgEcO&!N_jdG&3C`e|{3caMym_`s&d1B3IH>TuWBzGi4qq<^SU`g`>%ee5RAgV);!
+422U{T0B==+0TKYKaYGr$D}!FGX3M`#R_QYAL9?NHxqh)H94aYYmGNP{3yw<-atn(jqlSGAf;gQk64Q
+Qi;wId_UE6W4*fuNm5*@6uEyRk at O<TRw|!y+ml*X;B2UWHos6wA2US4{enJhM;Z9q~S9G&G0`oA<Xy)
+Qu6VAG~hzZw9c1*YRP6^tJ#m4({;nH+Zn3KMDduCc$12L}6k$}i?<ZaXFixzfqZJU{m*X;IK$B29Q9O
+$Dcr(|RJ$mv{Id#u%Ldw)*rqe-;Gc{)9KNN;gVNJGZQ2qGoponZ5eoBDX^jwo{-LnC)gMD&n`OfHI>J
+Bp~$b(+wRljYw7(Su?<Upwb+I&c>_Hdf&r=ZEHs5AsUZYUQYI=j~*Qv&?PvT~f2hX?<ZNoNLvg0V;zC
+p}HxL3VR)pfGBon!YOZ-pP!R3Wq5kRnZr3Z{sGnB)4cw-=<a_w)}Q$OKF;6M+%dAmOtExP$}zF*re3n
+T;tdQ~%q%(^jTW6sQ5zim`8CED&n>w)g>iaO#S3v?uG%o!FzG903tprz5c5g4>_G!^8hzVcP5i3x$IE
+#ghfBc at a9sdr@B^4z7%oyfrWWsZlq at k^Fk;NSE=(`>2#qiIvZT~g%awp30fc*;F2E0?W&1X{==k4aTv
+|46KhWP{y!=0 at xj#3o0dyzd!_r9HT^G9AC-V~F6>nWqvydf#3u%He>DJrk?T^NfHcd8uyZ%AnU2R$a5
+{>(;RbhXBOFyr93Yf_&EVit9()awAIK;1~oB#a7+W4yoDD-m(lr*nnfgcnJXf{-MM#a>xSnNchbz_-#
+4=*}J69dk?otWAYIR_&9E<07x&^+~l5gPRxRS&wM2+xmeKfvSFLG5nWEw03NIdh_RWV$+T+ASNzTWQ^
+Rkj#%`W)S4IR??|_uxk&wB#bU at FBy7-d$FTp9JR{K*B!HLG@)m?8@|?TYoJVwZH`bfo3gD6xR|M{!?w
+Y=xmnr4-s6!@@#d4vhNx1l`g(RKbInW)eYL`&NqbCTm5EHZ5K_5W1;o*llgeR;gS|zY9d<F!Ja+=i`y
+<tPf$1Hk)WN%=t=N?-tkU$P&^^qOgegHJ>e`{rlcVm!gL-2)PQH?}C{;J};PUdJVYqz#5dp=4P*%2w@
+Aqf}&3)pIMdp_+n<WGj_xpan4;iY<>|^ysC6S*)rO;cf6reeOFEOIXGSJ^b{#OIvrRz=h$3PHO=w}P_
+FAYo+9_8`Fz%+lr_|Hb=Ym at 4`QR#jEN`L10y^|UGt=?vjm}Iy3PQMn;Ikb`<M)ztx$W$TF?umpH?u=K
+bvT;V2&iED{9LYhiF^}c6E6rQ{-joAx9;lX5a at ka?a$Tt_|9CZZ_i3EmHFViJkM$(br^+(CwLnsHFlT
+0mnz4V5BEuO(>exun>gZhAB9Drr+&$CvKBLu$!Pe{*lEq at 2+Sz!_C${Q#`_4rV6TwN?g=t#R7Oz+vJA
+t}0(a4vt^Og#xLp`vkfpYGaVx1xUr0D07E7#YF at r$au4GiC3*-ETM?#>%l%(CXLT9djXNGENS%~jr at T
+VD52tG?Ps4S5%}D?4m$+-{=cBJq at J;I5dhIAjM8!ANv}pR^|yB#+(UP-xno()yD1{{fkeA*?RhB~AYK
+!1<pK_a{DoH`E_>y#7T at qtue1jWJ8kbet@Xa3Wm7tBY_B7nk#rHH9ppRy^KB(U+LUUuC(dSE at IlD?=>
+fMZ^Yvxv(i>+3*gqk44K!NV=E<;1oLA#M!T0<F7a_I2xvx{OshFGrpvX5sMvw<BLs@(92$Wps-_fnR)
+sGF_FEtp at j>h7neWK_34tSmEoHtehF at PgZw_pd;3cA4u6N~=Kmz7wNd%3Typy!(`MpI0Mo&3NjLrq)z
+CYZ;V)1Pzo9z*OH at N2TIC<1dS=hir#vaYzefr2-DxTERR#QC;~M%^#uCAi;kqAp?lmnNI9-X(>TwpV$
+S)=$RkNF>dY!<HcWC0GHGY^T5^oXFrFv^bP57+%s$DujnUu=;xD{P%t(^Da;1jVr7RT7V&%r1Kw1dbH
+O>y`w^AAST7TNUB;3JRikMNzmk#nb(;{Ac46Lp#f{+_RpVv<Ad5%bRKSXcXOq%RP9SoJ(7hx?#8-%C@
+f&%5+^Lwfr$H&+3<s%uV-x1)8~qqKDLCZr?VYsXH=WtHJa+J at ZhDV9vV&BVzTS3?G$U~|Rg<e|qaG|M
+dGfR@}@6%Q-f933B_IV%n<e;3_{lA~h;f at 4L{<{(N=L2o?7QwZyi6DHfM!bm7nAD&lkUGq#gxSmh`fo
+mJ!+FWoA{ZUiJAS%DVT#$K(C_L%1EAKejia|g9+x%->LqDcA at my(q;(7;gE$4qVFe$arO)kga3y09Zi
+fibD*T2AZq4A$J7s4NK?K$V at txB3x{*{{k0oh#LCTWXbQ0H8k2QoCQ2XyYP)>TXI7HUMtsX*^M+&Mli
+^|Np{>T5Fcj;V&}T2PNYHJ;azFv;?8^$mtW=OdWG`8Iap(Ys0OeCnn`M9MRxz|(c~NQyPh$COk9)^?&
+%w>VQx43V_tdDZE<vuofT=|M^ET1Ud$vT1O0tn*rw<=~m>*{!>-@>*B!gQA=S@=mvV$-js2jj0)(n6C
+W^akGfWpd-mo924CvW=>5{9JPjy)Vv`c$o@=qd-j+Iv06FoXg-iwbVp3WNT%6^39~EanDL>D!SVjg5Q
+l^lJ7qT*W^=_-fxAepxou=?`!vSnV5fH-r+0I*&Pfu8_4TN!+x3ZPuF!P<8;Mu%`O5DlTz-*D{h37l$
+3Ctv(x|^(y7wgNYYV8Fyk}CUZQ8`?D}Ne=Ve;D#Lw%jt{r}=@e#+zi%bEOOF(4#Pk}!>anZuosOI}!v
+ZPH}f4Yq{9(}np!`D4lZhA$*rQnRt_SJ`0^_MRObQLkER*dnEY)`rnnOg?^PP~-2udhi4JlI;Y#$(Uc
+54%Dlp8bvP39M6`5G%>mO<ilh!0*F@#pL*3_Teh{)8!BG>_UX%MkC4l`OBy=4Y!O4k#Yus_vcRciu_W
+;Lx28k6D17XX(w?T<8_q9sxI5v;g$-JYXi5cZf2?eR{h5yZxut1IbpG6>wEZ!!8~P)$TgyWa{O1w{Fe
+gUv-#L-NLiUl{T|3VJ^aYlfy$iDi>@M_{tGqbn{qJ&>$NU5iR*OH1OR`IG$<O}J>N^$mT^Y|m<#E490
+Z`2npZZcnve00ydPM;~+aTR~HI8}2{$!*$mS*~+#D4e_kU#Rd-*>fXRtX09P--)WC0INJKW0)t41}{3
+xtc%oxxws~qNBhjxuhrV2?g%5Rm%aL_KzFLF0W+w#hgOF%XR<!&3u$OeK{$1e;n{x3@`9@@M5_6s09A
+c3_q1Q{R}TazmG43PG9Q$stfvk%_taQY6mBls7 at zDTe?E}fOYHJl`BXQ-ydg86oXnV;Z$zL(CQ)+7*I
+;5HEYf9W|kSS9P3t!Vy0BIbNBlUhj6uGV=I%MaD1qqx9iC79sle_Cet7=|5)ecW7k?#YUzWKOYEBW?;
+?8`N4|jlIeReBzN$lousv0D(=AE}sS9h~u2`M+nWVr;>^+cym`IqZ&l2p1f=llAMYJvUzOdSPvI4acN
+f+dFs><PR`&cQ?VnB+7-Y`Sgp{?@}Dm#vEWZJ9@%!89$uekv!>+!r at 5x3(7VsN1hvJTcq{FZMyy`3+z
+dLz~jxk at FHYPVW<Rh$*N)r;nu8<$mb3{kE73@<<(_=vWDuf|XNmKeZ_JAu7GIZMA at mLK2u`&$9k!k;u
+t!L(wr&5fs9{9LNXyh7!{Y;OC&%C%Gu?$*S>y|BVhO!QOKBiw;oB~P`D3)^!YmUNb=#(EH;hYK%>4nN
+jL<=9a;cZyTQ-~)4o)q)k+{AB#1KI$ti#X<yrL`E&&_X6RsE~dcR`Q4#|XVX8e{xqQs at 2(Itlux6^AJ
+gYUaj%WX^w0s>&-?z-Aj(Pe*Z%SO^tsaEI!2;x{HDVrcStqiX5f^WPv$%-<w=k2w0m;xjtqtnVrAA^W
+8BJ{B>iL#v*hfkr(=Z=0(Dw+2+<vNqf=8TQpGfd`?{r2!D#f;g}hU at XLE!Y*NFKNGavhV*F0NejWKJq
+!R}oOkGohF(ZV{p*hO%LXRLQxji0w at 0GCO5AGFo#v4+xtluq}=$d7#EiFaGAXsNcQlaUH~FCUMreIOg
+<7#Ao@(a0U{x5I$ugK^k;kK9CR2!149EQIr84J14!R%fTP)@Nevwg&yL88wIhG*9f?cB{o&09=1nUj4
+r9wIR#Fek}R at H_rMn68_x%_+dvmf}sqBGbo9W7*606viyO;1cMPIiV!FcqYO at dWiU|GvVjU=UKM1JMZ
+E)SVNvPv%W{Ypa{^cqOI>Xg(Dv()z^h0r124nG*%A*(m__U_d$p(~j=$u=;jgXTufld1ykvMY1h~#G4
+2CdUToJ&qAkn2x4X^~zSA3sFmVMzNv)DF7yp+#j(#0)8l8fa)zZ at G&Fd$t5`e05pv&?@9Z@^0;dGv})
+{N7*?{AJ-UKMe+hU)FbnW!Yw2isJ2GrSZNh%_XoT^iy at zlfAeD-im6!b_Ffi{>gj!!!fVj*zY^Q-1i;
+XOBUTzD-^JFX at pkjFBgJd{Me=m*H`ga=(BpPw6lPsf3GqPcy at Xr`A3h(pN?Ul&}(az<j;R+-%^h=PMq
+vn%<FGZ8fK#`vCpHtYZ$O7aST?=>qCkrJI;}ZzQLX=ImRgS-g6;``())QDk0&QQ$g*XRSvD0)v*vByH
+hYAx1Duh)9b2tbt-#CjGSPs5}_h|LXKvqA22<~4pw(<=^+6kt!<xj1&t@|GN^gvo)23GKbkZzG^9uuM
+$57{58aVzb&iRXAD=>6b=#bQv5}7a`$3R7;nbWVR+CHto=z*)4DSu{gsIDR-}Z&bYWI$mj)HSb%{FF)
+hXYf)I$K$AnfsR-b2*#b*(h|3{as1i3-QXbPEZCWg&8+*7KTTcF>Cv{+CPatGq9S|eC+B({rKb$c=D*
+M%GdPU00H253a|zE@!bu8Y9p|@en at ot%yavqG%LjYiC at NcM8xs7Z*OLZBfDd}-tprMt8!8ZKjMp{bra
+I|r#or8gMPBe_0#AyhMyXL{I%AW=+(IihC#4ttMFrJ+tmJJjXC03BJ7+RG{2 at XZw-t;-%--bo^=fU at a
+XL!2?|7&?^TIjj1sf$X{Cxfv4(<($i-(eUH0aT<7NSerh_}YMVz}snsCiSjFiVrd%%vXryF;}h7?vA(
+#aC`be!Q8l)>;?k_$w11ZT`n#?8nR%@x+ZG8PVdf2{A)FeMVXug~~AkvxCl;Vp?(=V*5ix6T1-Pc~L5
+?&=Y4ZL*EE)BH?GPGM<j)d{KG#j-v#7(+C(QW=dQ<@{y+h{dw1a;G!nGer88ijJugtPQ92*p&*S(t+M
+%=$iCH{;<P6<A^;h=?u(#nVwaSF4^0@@y5&U7%&M2Q9LX83H~?gwWilMFZ5gK)b}#sAB|tg;eY9b&w8
+wXI`{_^;W$oxsZFz2(sURtyNm%Nh*v3)C6oG<UY%u&R~dWNEd{DBBfj3blrAIyqA|pmGXNMOX35qHUj
+c2f&?m_9GyeJlh>Tg{&gkpAEs$TK28==zuM#S+d~KkN<7C<Ylwb>02=b*+;nzkcYVlnIz=2x`UmKZ#I
+;NNfl}nI2S at PBrbaApL(NYWr%m532iyCK<5XJKYH3D0h?w9pSMCDJ?3;IcWZ3CD2aH_p&ub*mdf7ky}
+wELA!^`6D8jJl;P9_jDutNzqhaQycUcIdt6hpTbMhl5==QRngDvU}I4k;auD8uj#jKlD*k^;H`DZ{P;
+)M&F+W24c9lkgH(jGBh0tMHxp4UM45{nw+)O{w(zQ at n)UGEw2=z%QN-iR5P4+Q5&nca#3=JvPLe6&dh
+JE at W>CR-JV^gyCmxK^`XDrw%b~(cv-ORCPaPnrVJL{PG|VYNjJw+9pM38PAHpJX-^MC7BUK3M5Vpr3`
+b8I*1YRf++EBET{(LiGpd=4ceSNqG%3j5c5e-l4I$oelVilex}t+C9Jg0aY~f?SuGm6<Of}IBhZ|56t
+eQG(QJefotqwe8ZVfkNO0dX9BfZ^*bho`S`5{$Fz0#~hVy3&xBRYn;{jk(lX0 at xGn-dXs^D!0iVT{qU
+ypPlL>O$Jl%trokjonAN`tUj<+Gzg at H$N2jwpb{=ov(%8Q1{U(1x{iBF{?pqHS13Zve>VVh29VTWxWn
+P)o$TnKRoAj*gL%45M?MGPREqLU8=p(KmkD+^8}c at YPjxh9Wh%B0g0p2ir7bpbLyU_vp%+Mu=VfiWuD
+hokCf_~jFVz}w6YV_8?NKGb&Xw1MsGSifiGUW_w(XO)=y*RyIUo(T6Pc}@uCcTMYg_kVylv at h+}e$CF
+t0tdpn;aDFSLRcvMp>+2Ot^!hlEXyL}wga;<F9;ncc#b1;(r{-~?H$4&U5N7r@(okv`ZbZ?D?TtfNDs
+eg6=Q8;m{Z!np(B0){M&XG4yglCUXb}D|ZJumg92|-1&aUdcSUEUNCB%Gt&RvOja8NBkP*X!HDKJ{sm
+77naWM_ at An+cIRY@uSwpzf%eP&!9m6K3l#z<=1rihW<8U3cuE3u;4D=*^s^r{#QwFKm#~?t;@(FKL8N
+G0pZtGJHuD)D~ev?n+U!*ISG0JL5411S`^Y-YH+j&Ch+GgYPqN$>Q|eI;ulnwOeT2w at +0c?l|%qm^ec
+sGafiNgl`-O_bmC?E?OQ!^3|;<&Uy2N%CCL_V?W^ACG6R52CIZm<En0#lVp{$-KUw_Zn{2>}@Yf6aXX
+p_u==S&hAL}{viq8O~yrBi)V`gDZu>U~Ivd{JVw&KT`{HtjB<xGA+%QBO{@r4qPqlmE3(G;=+0!(W+T
+U9da9IviI`=wrL`BfoGiR8PyiKE#UBY%ukrx3OQ_+Sw`MPBQcN<%){MBVAuQWwdm^Wv6j{o}bFT^kT#
+I?_zckkj#=@tGTOj7OYyTzf&>)PxnqK(Mn4S<jw7L|~n=`Ml!<>mZ)x%U;xm`8x0Gy}ugyL`14}H22T
+ at K-K~t5uCfd2N<pCM5sbUUApG9<#$LabYzf^7m0Nq_k6-&Qd}K7hfZhYP9_&$z}PhIn48}MOM+1Kh9#
+7Mf=>9T#n=6QHDx+0kEA$1$Fq{CQggj^<vQ9XhDxJ8_DBlUq55>Uz2iq^AXYael&_~0Lbs>m{oJp;hq
+W?K%K2l at k3VzgUnTo~zt<I#wj!=S6kc=m?H(n`zz%OB=lBY1?=+5n&k8ntjSJbYj)guC{z4<2{{lJeI
+z{$mpFrYqqPljMw!7|-RXXlk1kW7_<VvDlZc`q6?bC_J6uXJGDz~O{YwyGMLoRRHtXtv(TI+dY>R6t8
+tAz9)=U^vY__<Vy{RB5o6QosjswSC`n*L!X2N$&@hAsSKBlH7!-a5p>fkcu5oWW;t%Fpbq<58^Iw>G+
+~huN$Wv!4_b?j-g;RyP+%hV~g`-EAn>_cG97D2$@#dL at Q1JDbVXQ!f{nsSv!2CO6m(DZ0<-3#FC(g!t
+ at i1B(NlD0?(Q{9f$tXGMY(T0Ia{C$d10nxtAzeED!;$GbS&;dtmz{E^=3CYkB(ZF{OhA9n827M~HNUA
+6P|I79eFxwQ={82bwu{jG1G_#lGaTpnrL{VhTBn{)m|o$rtTEq0botHcWvuP>`Z!q>Ocy|QZGzEmiBm
+1&^fQd{XSv6GT7zZ<q-0LK<R0cgX7ud31X%T<;vzyR2w at Wlm&5K9;@1)Aem(Y9qXEU_Sh$(FsR5xVFa
+f?1+<S-5}^k6#$U79M6VB4x<pk;BnfO3-V6Pxji)6TL!(NVIHhjbGbyk>75Mk-|mMAiv$iD*Y4eq#8G
+VEcVX#{f<lAlBJMAjJ|7$x40I-i#F;@uFX=)@NIVs at l)GqT7Sg+ppP%k`!VL1R1xx#&G25vuwdhllp5
+)~en^p=A at qVOZuGYeH;Xgz@~cfM%3BaAUxG;BS?zrXazehC1~w~p at Y&Wg?s4g(K0Kw at q<Xq4%*ya{?Z
+>6PwO#&B`$?|*fFpc-xHJ9kc%h-#kW=pA(B4FGLgnpq;udIoJb2EWQl;=k$1(VHyFG(~?5kMFrCi8Gj
+&3!B at +!%)Afq_sItQnw7bO;b_4U<LlDuocA7^JG=8?XagSf9xM1lCnuyjLVd?Y8)&z@)OmP%(xqSBho
+^0ZF+IeHlT>qY9Q{(c85U)`<)GQ`zzxG0KltdGV+L{@b>WS6d*g{w)(=mUzW9l8xMqifEMd^d=#B&q=
+t3Tx|}2r-q=YS&ihb(+q*)7nI--U!d#MM`f;=!Dz#2-N`<n?}AO7-c6|u8sNJ!6q`VH!4w)4Obd9-jX
+yu)G6oQ?DP^vd9d2Xk9Y;s$do|N_IBfg$VI0uS9tEV*J$FY;q-$yX`)v5c!V%F3h at HtQLZmb5x~;G_&
+hXQnA;}22lc7!A7~Z}z^|t|;3}Tk*Ea9n2PUh^v*L<tB%P2Qg>L0`i(j2vF$iv-_^h*)EpZz_8FS_WY
+=7D7OrDc<`rJNf8`Ga|=341FL4}UO2xks>#D=f;ThzNZo0yJ!XZ7@=%uFHf!blgSu$3u15nM3rWj)Yz
+#$bb~xS010ol-k*SZsWr(z?uCx4Rwga=nYsD>Ksj71W%EewvsWJ55K~^_Yy%S&^qs^Z}-u3w}M;Wv$T
+;^(&@Bzk<4?-zoKe9|iTI>?#TNWLSV{!7s4Z{hsO23+jJ$@Nbw7{Q&h`WHqm-C(6r)oyk7Et#}u_&OB
+rMIn#i37mob;dFYDzXi9DyC}s?WVPn)qPOk<#(^E&pagM0uOF7V|4CrWhwmA8M7;P1L4`yBk=Oc^|9X
+(C`bbpYU2PtFm|1kGnO>Uz9w(vclV(zKE$?0EpF33Rw2}BUOBa0*?K%`Iq0&RP2PkYkYyUsi1p0*{Dy
+5U*tm)5%15+!)q9eoAC5YHgy9}&^2+o6J(rHbSeshugvmN80-EYa~o{VWE#@ZjuaegLd-RiH!PXS_B(
+%_X~<=93+UW1}fnYJ@^s3GTzqLDMeU_tl}LxDIFMC3uk#I1s!5 at 5T3P+&N1z_C5v^T2hZ2>m!@E9mUw
+WOvl|}YEiM74G!yXScqSpyEU2kfw1!SWdP?#n7^auL04c(p~OuvL;o-(CH$D$H$ppdnV;oyd310T73C
+xyX5oD?pa*8wC;3nWfT^Mv?Jn8=)rd(7drTtyG*G2&g|ffRxQ7f5o8jJlQJD34!^$4+YicwkU#?L>I(
+R_YSjqEsLY at NNqS4~ZaPp!{JFuZrAkVBbFVK=PlsUR~(SzB+fYGBWm4eRI_oJROfM`K!+f|1t)gQMyk
+Xt#oAm&j!(|FF2>3K7odggF=L=Y=slIMdB?naNf`RziZiP-~!gli$2U(<umq}mxelcMvaLFAeYAv!H$
++=J>nL?rI!gzYfNK{*eX)A`h9&?S8jH4tjkIrE<6?J!g4{`#0P|2+lkZSKydKo9B}YHR&18!`%(L__)
+DrBd^bSfG6Tza>k5J4XM at z5bLi{f$T+!#Ay|klwwu$SqUKBwM(>vXKbgV(s-6dJowd{67)(DP_WTZ4P
+7?`M{AaeY^6Vm9}ivN^+wxB(oE$Xp_he(yfge|Cmqy6Uv0{tx4FfuT7v^3)0Hm$gSqNt7Riwv(n0))<
+e^K`Eh%97oUuFrAuW0Q0tkfbdxjL#3$)p&LsQ~{Fm}oQn*v5%U at 9@<=;@IABG?PlrsHkv|junT30?(f
+Bvgz{nM)fzQ3IBuV$r0zlzxTkBD8}BKB>9h+kak$jvr2qwzdB>jQmAl4*pUhKN&(imuXylwYyZUt74T
+A)`R9ulOy;JuHYc0(gshWRr79Vo%ISUN7&xb-zg0>dc!BW_gupj_gE4cK(*M$AwR_32kI%6Cdgu&XEC
+00#~+zPz7?o8^-wJ&*gg@<ytMx$Yv9ssD=|PK55R-Z_%8Nujd^)zL*n<M{CR+zkq8PHXiJen0~r*9^(
+}aZE7!98)xcj`caOHpgh++LcXM8WaX=<)C?<(m+;cLT`(PiF2Vh`LwcAoq0sUM7lanZ^GK0LLY5&YFm
+>(1KvZ!W;#a&}O|-$<>;3-HqbPY7V+b6KTkGn<%VU!K$aS~npz_SKzYTWW-dnfN+SVt#${P+P>YZUwP
+S3r-2hVaTaC=1^K+Qt40 at rP$n~SSrdr)-}94tz8MRurEeCd!n2?{uK!yHz1%|fKmk=rv0XTjB`Fkpsm
+6 at xBQm1g{D(Y&mvNRNVt+<HSzXg3fB8ihd%w8x#iHG&{X9TNGsP-oJD-mD(Dv+U#cTE<9ZHS>AsZ9+G
+Ev$8ZJzaZw@@xz1Cy)mdRuF&1J50qmGE!WXf-K&?ZiB_P>(z09c1@;QjUAEqMm)9$rZ`E at gyc5UZAxU
+w}lyZs|>9#FU65ZnhQkML&hLafwjy-Z~`}%HBjAO*pqL-k~aqCC#sugGN(JZ;<?B&es*r2 at m$HFe~=c
+#rJrIG6$e3>W+@#$68Cdyu5Yst*R@{wr=zUx-{vyK1QLgo8^=ydy1*<Dv8Ipn7Nyr2pD4lAfxNOJ6W*
+Em2K<!L>u32`u!op(vW1&FWZ(p;E6;v%?AiAUN%T at AWP_NrWEh9X1~6>%UtslYoUx)qQyn&gNUub!h9
+LotDs9la;c3b1!}!);1l4(5}XN%58WW1`%gXwH4lE;5!yav0Va^#;Dr_De_7Cni`~3rHD}8gGR at w9cs
+M(7M}1d0Y$D;gc6z*<zHb!Mmbq=jAnD$@hD17{R(mhUTHNa%q4dgOvVk+SADjDYLyiwOBvA;UVM>+Bp
+>;(c$@G5%vCn`R0ZQGmSJU#?S at RPq_UKe85H=(gDu{JzUZWTYT?8Kh<Y~<44pwwj8=Ky#=J7*7^LrU!
+R!|TCt9oSJakYXdf<sEV%Q6N9_^Si at Su1g}_`JwV>;p*l2ZqLsal;9mx~o<kOSSp0wq`c;Y2knxCIFT
+?5Ei(x>}q39nmcKuK?@QFqW&KUNP5EHej}>X5 at F$#O8eKk>LUDojVYpqnW5VQQKSocP>uJSvvt*bWsb
+(i+Q%-4~kHocD6j9wfS?f^-9o4_8-7gR^zOaE=;yHt0a#QvfnJMlFW>VsmEPd(0hs=b1gw8zU%a6g<v
+HR(w27k9f73YUl0nAdHK1b7<#rI=SU|1x%gQ4yVg8DDO53E{5w~r)emjO+M+*UaYSeIe6s~C}cP*`~<
+d{>cLfL9+B9#!2I&}ZBp_s_$}d^x=z|C`8xaMsuy<m64~BWAG>18)|tJMoiBsezp-7{MEU;e&yFVlGl
+%?UKJv%I{a|@UFa(OwFh!9lP0$z#<1~!oG_(E>Az*?a35xmD&3mO|2(mM>z4XCgyMp&etz%CSQOTyAM
+(mo|F#5S2D!d7iZdD0#GZtC*-s<zguKl^|lA`Ed!bo>#5_D_CO5ok)<5y+*jlu;Rw^}zPh^=1$4z^iv
+I^Kjz!|*>zvL)D3Wa}em_R2i7Tc!rV-eLf62{{7UHOu2|GYZ?zy_vcq>(%^a?WEaiC(Y|y2bhTah;6|
+THyk<8b0p-(M*gQAU|jpNcGSj;j4z5+8!r;wva(HE9CZF$mv`;f)#7jcSr2Qo6d^tYrMK#Zv?+0K4a!
+btUX3M0jpvs}?nx2Y;G5ewa(hOonB5#>074I`qS~l_RB2O3qfpWH`*ad?^jm$uP*+;VPDUZlE3Iokb4
+B?_m%nSf{NG&ucJ;vbm;d)GH~io-gs0Tx9YAY-s`&IMF`aV8dC8{psP6?hgrRdC7k8A_)T{97PWD+*(
+AQBb;MPc8wYw=CTjC;6Jte9W&SPg;C(#2D^FW7I;2tQ9MBDQrQ;-Z2%UgC<(L1hSXLrFDW#|<;XxwUy
+UEucekmH5&GpU}RBZ^t?@$N%3@**96nOoRCuMg$Titi%Y&^3QXN4z>~%o0VQgTd_!KpAE}smoHe*d$T
+Q<z4iW*98xz^RM|R#}HRHhelt?>QjYE9BdAqEGLys<E+hra1RU%eK<=_cDjrmD_3ykylC}!cqWPC=Qp
+{*xXGZX9yG>2hKjn%rGw7OOD8K6H>AOFh4O^-HB=-Zy#LV({PW7q&jO>suIcgvg)!Zes-MsE2t|UPEK
+Ue=_?Y2FD)h at AA1L5!HRcLQTzZ`%{#drS;ax1~`M4e&dmQz9J@<O<glEseH0b5BeSJ2ttJqXtWC06*>
+0sFEq5$Vqxf7a(_WQXc)5P(7$-vJ#KS=%=D-d<jjw_WT(svG}p?tXaQFz9HBbS;n?>-rbXwTXOw4I(S
+L at JLMp(uH6F==d}z~{1*-l03(GzgxU$5mD*#g9v=iveoDbOxjt|KLr@{Wif?Xr`P>hjM*INg_Snp5t+
+JXxZ__`of~H%)NaxprrDkN9Sk+Ku`#8FP&vWtUekq>q>HR4kNFJ05h2B%FrW#8n&ScR;V>9h3-6-ymR
+$Y-MNXJk3FzbljWg9MH{SyL8WRNkq7B{%&uo&5&lU7z&4 at uu0M(?Yv{iuee>Jp`QN`Szcv5e{G3+!%Z
+<N++m{W$*n5AEYvhVt^ru78(UvFJN*v at Kf74qjK18+<93}UnNwT96x&hKJO8%RH1iDQ$;qX=nL3UNLU
+^l0VlPxi^zKG%5kzjJGj%;9pY`FmBSCV8ahOWStCfj%tvfF)b-dKB6HG^-x2p{ef)Nb>Q?L$-yvjG#e
+`-HB4k9U_&a`(>I1i0}Hm$!Zd@;~Tb8g&Z7mPkl1zju?F>qGllH<^I{)J?|ez<1qZ2XWHeaI;UkTEn`
+8kH?%NRhfQ=Gya_lwQlpy?h}E87ft|7`%ANOvCmg*U1O-eR3FXC%a5=9Z(YGZv4<q5 at j}@)wisH3`{x
+o8fkFn^m6 at s@qTn at ijNT&`b%8*~=J}nayh`Q9g-m=`$I<R+KBRak+mp|0gccvmgVzAb`M#LgyYxfB_w
+?l+$~W+F*0pQp7I(vIDCjgD3$E#ClSU8IySP<BDdI3D1VMqzD&QRBzA9CXW)e3W5$-~9uK+4&0VDDUn
+u^rrmWsT8=0#|HN>Q^kAWk_~G<@ULHF&;(Q%IHN8cACuH<Qq-_DJa9EKn|Vf#=?(Hv?An>k|4Y;o6k>
+lJev8d<a~=kVq6#oeW?P&xR+(;BLy%B;Jaw$x*dc-q7nQdspggTo$+QpD_bxizHo8lBtHJLsjI}h3M0
+#0LA?(U9E4b<i8rs`DNi9c&pfn0wd?$LGMnyT*9MCoL>hqe4)5{O)rR&@ORM9Oka89LuU2p*^-t7l&^
+lNux0?*r;d5m at o<c71FD at V(w*>`sfTyXQK4J#b@>4OMLh<fPL7AUJyAjfkCjz$yf77Z227VBliOP+ at o
+}d=5`8#obFD+hB7nrqTfAi4uF%P^O|py$pEsAxa1H{6otZOkC&&xni<d1D9VPL)?Gqye`_UswT-`}@u
+JzqmF5VMz)y=1Io(GvI8TaXxhe8p`2^MBz0!~n>TF^?Art2)aq at X+}+Idk7+c%e&R6S(lO-BYAcHX1U
+bW$_L`%5UUhlA(4>dou`Qf6N@?jFpu(dN0`ad*Fq{>fU;vh4Tj6~Bv3o&L`nhct1st?Zv0C;h`+zu~~
+gd)waM_Gtf(WX7gf#cb-7A-n}EG_|FNgJ?s8%`0dRan{v)jZmm{LH*pjXblWDjc9C(UDow?4QOI=Zz5
+y10y>HB32J2fL+;@Yxi8Jh)@}SNG@!Pgv;f}Qop)13l-gPZ*4HUy>o&vby$5=4TH639-o|6#kI|dm)D
+hqF$mpJx-oh7n_j_b^Z2D{4W_=f^eEn5gnffVSQOrUNfv+9A>yv!3Fs<6gF{7L_e2*vs*<ChOJKbVG7
+ at ujbTt2paZ>mE~D|M?G0r^W~vcO3~h$6#Hrgv$K at 9cH%Uuu0KJC6Q(G2B<%p>0|f*v|NS_~0(Tm-NML
+9%lTmq>t;ix@=#DT_Pv98I$EFJs}HLCwXCSAFz?>Vj0gjPl9h(HM2eG?W6Z9!q$&ih~}4~q6l!~s5q$
+9-D+lDFE`M+?Bi#Wjh2ZreTc5uwB at S5b5&C9k38IpFFGJ^8MMofQ>M3V+UBaEfwz9NzwiqLew;8R*hg
+x;@#Kl#r^&FK%V{V>H5-F?ytJUqfhU4Jk~G=Jj at o#-`3?ZC7o?Rl8<z{>`1Fj1^<CzX^J|93ay(A6{c
+a~IpkP;PE_`Q at U14N+|I*x4&%N_G0WcjJGCar&%{o8OVy-n#zVoRPw@|SNPM0INa+5uN6!Y<=DTIGxP
+*viaGK%Xy>2bi%43AcuKm?nqnaHe8VVoKKhhE(W4szS~xpNLAh`qYS^ATn#j7F-141ej}H4$zW(4Ojq
+Q8KcK=rii9s|Gu_M}j`FF*Q7hN~14W+A5YI6FFkh*Xj@}M9CG3|D3^$j%pxT$b%N8EOx_c!^=!nL(ix
+|T}J#82`<$f>GIoz=_v5r at Y5(K&~V~GT}Y2M(++>pPYOR&DZ`G>qxlO<g&(6M;A?o4d>~=UDdrdzEZz
+t~W~lxgC>9(E&2U7GIpm4r<9T5U|FZoZ9)RuP_|b04{rx7Ii6W}U(Ri_NBOGL1zQeJ?lE<0ZUf%|)dt
+kd&zf7X91W@|%j&y&2$d2`T1)t2ue~ZI-DWutf56LrFg8hw}$_u-!)M-k6*3;*@Z%60iWn%m;YO2CIH
+e)iRLCp18pldr*3ZmsJss-s-vbX`lXt6C68)@O(W2F at 3G0tfhW>ENnz7Vk*pvNoHF2->ItR5bwH}@K8
+9cJf=sd^+BGxEVd9~|euTY-m`tI(c9A$ECx4ewyC^G*=mzxpc7Y!p~O42?^TJ3Xlz?N+MJOBIVQ9eI%
+!N?RktgvHu`b!8PI-`Vl>oad*==^b)%RPEK}K!pl;DG at MoI0O!b%`a~yM>WMG=sYzem<(Xw5J)(;!?8
+Fl8Oi%H65!YCkYoLMdSO6UpL51jyR5fftSFhZT?-H5`ZS(_AN~{L#4j#?{}P`6`QASv^mitMe;=gdU1
+T|oH#fjFa9iP-q&91Wt at cZAU1n=AmLOZzG}t!#T-PetRho%yEN6wwWVaCx>Fv)N|E=%hyK3Z$&1;y3V
+cWP)L~S#q at vjU9*Xvm~jgqbQi>KSsnQiN>n{U0m&G|6eI`~#5k?!Z)n(5H(YEx!QHm>-M?3LbRGhE&(
+&TCk=qCO382TbU{1nKhz0dw+KAPxRM1L;!d)vq8Oei>4&e)b3a*FX)VKlvQ}Q=s16`Th-1Z*l-%r6F_
+~F)AN(=i9#kYvA+flACn=aDWw|jqrpw4JRh_K at -Y@3C1}54rEeH&FY?>bs(y-IU(Y<8`CMCFV=PT&dk
+GP2vy)gVKnHK_LD=ZI=wW9Af&!v84q*(dU(1|LB}qD^0cVq&5U1<>$M|_V|$!R2j=O5oI9iIqc$93Tr
+;nfAw}>J8lLNCDs^vc&s}IT3<>ZOioMSoE6?5IQ3<DO?eV!fB`}QZ$-7a@&_`c+&x2sgH_M|!XCH6<?
+m*qEVw%Phz(xZ{-{EU?qJSTJnU7%}GN|Jnfv&o2G)+K7`b#E<fe>G4jy|o(g+k1Il1V^_<^qs at eu7Sj
+MH0qjzhI7lFQ?ax9badhyEw%PZ<rDo`2{NAZ(uzwJU0nHx$~Wk+|KnQn`IB3y_Iq~3(v=c)qMDm>B;Z
+G8u)|cw7<(x#mZ=rx{{42k|i1;kqz&U_`2O-fRBp%KaO8-Cg*oHyFDY$2H at -8Z&&^8V_K&Rb!Lz(a$h
+M=tXLy(%IRTyV+G+M^q4Z7KjcxqK6QV^0DxZ(=Bg1FUi3Jvx@#IqcfAA81avx7QdQ#`-n=Br?jaKfh*
+v{&&&Zp6ZO~u#vp6LKlt4Urtd6hO87BIdal0tgyAfI~&n0=liNYX4j=jL{xh{YkL2zJJT^80=UwR3tr
+kO0|y at k|kGd|u!N~Jm|(IjMFWg!8tm^im$BDM3PSmC)>f$T6u4<W%-%Q^~Ik)c$5347_S-@~rfBQHnl
++BkHQJEJy3HulV at Hr__>6OFVE7imBskcd{L at BYoBSXe$YrD6*5JU;onl%k8o at Tn6}P<1_775lh3{Yl4
+exoyjyqB?h>0`esZ-ob-VLg-cBw0kws+!9Es5Khy;k{v%Gie+IOr7RtE`3F7`d&ks|l92xdwg1KLKf(
+6bBm6VmUh!~+J1pIW9e0`MV6VTy)b1FVZo%v}_=;`f4Cv=QTPv=wkiTLioNV3lG``mclMN=<pd8s%C@
+Azl0lm%fhQW3!1m6ap!e32St=9u at s?ytx?h4>Bz76}P>(0AX(|YI?y0N_~xc))+uCkQeYM9%}=nbnkh
+l#yke+$Ez?W3(hI=XullgwY at wz=c>`>${t`hSMo-~4V at +>Soluy#SE9p8Y at 0q!GzYY3YzrTBr{!iQev
+Nf2j!*}fdYu&V&jm7lcr%b5Qzf2#_drbM;7ty8lqBKNR1n%mXbaC{O4_Vh)iBGNg;*s`QURGX7ru>O~
+(dtG$CE`qx*r5<?5bJNSxFV3ib^?DMx>0_c<-W36VSZ;ryB>zOv62qjysP48msHiI??4+2gdV>9QZep
+VF0wwpl$I0`6^r2lE&gD_$5#N+1fRA?yvrBi7Ty;9ZBztNmF>L4PY6dr|IP3J>=mA*ZObiW+-UGJW(3
+Cm|Wv|)sY{3sUen;n-;gKGFSI`VG5q5!}S#nNCuzQaE>3Lh1;nRf&pChFnf%G2FQa0Bs0SZq#r1@<GH
+QK4V!^+%a92+w^C at D+v(mAqtS4Gf^=ei3ojM|YBYk2^2+Dw5d1O(O2J0g&cb}fUlrN`SR?M=g_-MTog
+nBBmNY#)dHLS9<AyX3>8<U*DLN~emtcW;wJo?3YL9*8SDvOx-0eIi-|JdGxDh&A_mvU_s;CTOYYsv`d
++XlY9ck~37?R6%^iJS%9r<;W&;95R1m*9-hHwajzbw?KOwlY*ri;gy|KAN?%Q2ELE9zdb18Ut#xpzyp
+ik3#$P(@ctEc|D6K@`w>5>(|kxh32KRpR32W2w`yK&6}!+zKfbF(mTc2}Ul<5bR$7*O{5|h9Opv%kJ@
+Q9X9bhv#ni>8)D4Z#G2czMx>!W>$?Ruo1mlx*;UUX`o7z#Wu6E`fQ9Dvqskztd*-3En$)^+SqK41r&j
+e<1Fo9GB2UlC$@FgjoK#}^@cf;*`fpx`2?5<>7A3M{8Y_WNwQh)v^*W|D5quaU1uvJ#Zt?=_e3bTcZH
+y@=|82?(<>L=c!>(nJYhrm9nYYHGOXZNGEi$^!8r*K-6nU1>bxP81U)<P%itz-sk!E)m4`a}hm&m{T9
+N{zfbCaci at C?-dn`nXVFh&p-`Ng{(6tW+tvZaUZW;AtpyI|J&GYz8g1)^X{)CBfo9;1%!8Xr$5={Cyf
+7JJk3`w at Y5-ND7P{+0iz_zFu%~Hj+3nrxuX7xnjy87HDPQoZthBsDZJq;8EuJp^cU8{$?h8k?|nVH4%
+8a0GaqgZ at CMLvu;s(yUHS<|wqw)GHY*+dvUeNbhNa^@eh<U#8klICm|GbKu`6>VAC8jfhW9bKopPJi+
+l5BRbW0^{*GzpepkQ`lvWZylDj*d0m%ZEY8uW3;{F}JsslA!`XT_~QaseK&ZSkga(bv`*)495XTTA7p
+6ZsjGZ`SqSD;EO4mM#?EI{$4}uKNDKfAav}gs0Ycz1%v67Jc~;p89w#+Ft{<7yrlwG~*{3EGzaH&-bi
+nH2(<Yfci}bYx*Wx`KOAN7koT^HM*Kz3;6EHfA0W4aRK1ZbVdeLMk at D2y3j(>b#y%4+f?+qvI=c$&=G
+Qh{3lT5c<G94c{)eIJ)Zn^6)H9OaD_Ec$h-4q<`uFB*HRv=7 at v+DBD`9Jgeh*yq+&n?pglcn)XKs at Z4
+q~R`S0P{#|1*8G3f+Ff0Ss&EhwZq2`?8G5Z5TFG;yQpaHo9Fb2Y%@c|U#iY5IhoNQreBc6m<d;!}Bbx
+L+DsI#&+SpM%>92>udX5Ju?6bu-hs6jb!i011?)TZG5ALc!upyv+(Mc*nrKSZFQgVKZeDil2;n2A}aW
+58p&IrGu9|*h_S3x~Bt7p+r^|GAU*A%(L|eQC_(xS0&*R8Y6iadx(fmC+#wv at 1h9?=KC8LP<f}|d4Mh
+P at of6)Ve~ibQ`VopxZY`dn;E}JoNhVrh2`$Kv`5R)vcdQof at ADET5oS4-tTW?xYf61`(58YApIBR=as
+!%&Bve_ds+W3j=&lz8~g8mi=wxyU}ex_S#G5&)cWOcS=Msd7F9<)Tkza8y|_uzs!*;rdRqaiygo#V)v
+To2`ir}=+GSs5>787-(O;j$_4^%&FarracUj*kR at yqo@|N&&vJmyN^~tREgL`=9U%7EJuJAprTTixZ+
+udYo23CH*nN;=bS=UQ4GaqHvH>&;dUSAt-Ifq23)2Z?wpOHw>?kf|qKI#Dc#{u at UN)i$xxBG2VX#E4p
+=7#M`lJ%)nGhYS1{rWP|lj?7ol3n(7`!#+1mR1r~!#|D$s{JucFdI08r7R~SaS9$|g<G!~gi>9V-`{L
+J1Aokd6Z>_CpSK6L9U5O2pQ_CLo0SRpKFatvD--Z_Y5J!tQ<j-zU-4Vz@{ePU+ at DAl<h|+iDFxTh!$X
+cQ<r<l&e!)~tDyb#r#lz{^imwW1 at G2keEAQWBrIA77DYMiGgk!T2DTwCHbO?_p=91C?#WVKnVNmRXz~
+S5X9`AQ`>@JX-$L0Y&kVDx;XUUCB3oeI7%`604*EfQc>LN`Y!~!DaepPHefy~40!7c`$x#x*`pPtH<y
+wvEFskr90btKmUc#V{6(vMbR2;Mc4F(iOzpf+_f?<PlE(I>lhwpz)gRnPY~L6Mw1Y1-p*h9Bp45%`>V
+KW}Q2;uYkaprqBym+1kMr21s8oVrx0 at 2XP0U$uNVYl2t7mq#!rXi!vq{d%M%uN)$1&K=C5^lMH$TGPl
++2jKEBQPBJcRhgfu)jmS^GgbR@#`nv8ensDY8oER2Pr2KsD)ZG9JEgY_%Qn at 9?zYs?#<kX0;Apq_g#U
+wn?kTb|BrMo^8KQL4L&Nt8K0MsKKSFd%x}fmJnKmD6dOI7!Y-Edy{*zL_@)RMq?uhl0sCa9N*t)iNeV
+Y$4xb-@*c)KKYZ|Gh*X0*SB?{c8&-k(8HdrKa+vBZ^@2E>*Tits(P^p~C at Qoo@90e<CfJZF}lX&e3^5
+U|xK%o3h}O=|OZrOoeG$lq%WzZWueTdcm@=EH30!z)BDzNB3WancKOrBy2SCGE28Eps2Q?et3*op0+I
+ at Q<k0k5X{^Ho#A7(?6QIV@*B)Wc_)pSeQKqv~cj-QNR_oEyvs4g4GAvJuUUR9C5kV at 1$w9U~$j=Kp6;
+7;WF~7O)Kq~8!}c`YN;T1ms5^ZFl0o3$kV}X!zsu3tm~nq1gWu=yGeLrx+Y7|J%$21fCyqGKF_7rLBF
+hq2zpmtt0)aJ_O}Q0>T5^s`-9B36ccA7o!Em4qh)G9pwU?(eTiZ$<bbw~_ at I%<m*WX|cCFuT$W=mez9
+>?mzQ^mznB2S^(t^GP{M#FGgh_%)ZiRC#k+A&)K-OC5_XE6Yxz1cqLqJ*J5?j%_DC?(0o~xVFn at xH}!
+joxIaVJ7bf~BDdswD(puLw|fCkydkDy#_|CSyq+X;pL!j)Hk+9!DmWUh at S7TQIrKJxM~C)D7WsaazKH
+sQL-zfD?_RGfpazk<1)gC|4b8(K<;{z1~JARy6W1lg(ojAELDHD(^OMh!#(e(IoD^nlHe)mmBDC4wO)
+^x{Kjpu!V*R!lAl6tL at EJ3>s15`5w>BMDQ3wB-e002 at v56R~|iO0JNO$0 at ZYqb$wOT`O>r=NH?>m++S
+zKn at itLi2Fld);+yPZZO%)(zE1nhr{RNN;nG8%#lUieKVmZ=~B)!XB^gF+m#U{<>bhXs;9MuX7l+bt#
+odA9aVvO7hc4i`VdUrw+hTIMJ=)t<%@yAusIuMm2;Zvtsg$o;FLPeN&%j_*!xC1<#A;d{V%IO{0D3N-
+I(;pCidViALxrXE}CgOR4<?aOPe>Vmz`kYzHyb!N<8~y<8RxNlJ*p%eSrafUSa;}0t5WK!hBm`nqMw$
+AH#hDevnEu1-R<nv=1phj?QocecSTSqOsm=Bk$`%=qfh}!+YhZSuaPB`Pj{`cP4(nJVRx#s<AwP49X3
+NO>negjANb5_cM00&J*USN}V2UO)&e}f$k_b#+*g?ItcQ-_B7n$jOWUF-vX%wJ+$_W=}+Ew3=@moD_Z
+6f&JZpE4q2}?aqSiy_AFvtM^w{0;E?ZAbI>Y-tPlsl^UjAN&^#oFhC%YvWqEM;&>dc!)2+OO^yyny!6
+psYkZ`$22T&6(E~(y}!09Vk2>=cTpN{b|i<>3mHZ at jfc>OUI$O*i&cxb)ddy_3P;};41wtUDVZ#qO!V
+uvlQr#4Fj+>c!zG6GKMK0%rn^{k&r5^>4U=Wp8C?bvj{D~fkKaA4M}m|`?D49_gu<K1n{vjy0Wdc)3l
+#B+lJ4DMQz=7Z3dR-?>V at P=Xd=+}Oc1^02m$us<h2 at c{2 at ukE!@Tz(OP=_qe3()gAln4jfnqL#wl#I<
+PO~_dr>f)txQ+%rjth&?77~x^fUnMjf!H0i2!Z)C~i;nD(^Znj8=Q6|OCdaO~Tk_D;K|@s)e~P!Oah%
+i`B_;U4SD4H>i~M{*H^y(78Nh>+twi%ds~YWO2q$DjS*f+~r~OiF6+Jv-SFRwn6OT3R@<*0+xu;1`aQ
+9|<@U#Q~ot!3$0j&ZtU;KRKwEIJJ?yPi+JzhMuydJ^te^1M>e?iNBvCl7Q*^dJ4IQ8ii1GdW-U^@e2@
+U7>6Q*7EBOVW7bH2AJyK&D&kXY{!vE0S*2D+J#e5xq6IGP{m#yf at mw=$8EolkIreS3yFG*t%iqUpcZO
+^xo(iZDIy1 at gjE080<$(!tKRvc#qotNl?4V+dkJo1Y729bCHX;afZ#^J>0W`$i~dJ?%G|15&KKwLiu6
+yJg0iU)3V6_e?iNZpJ>@m#f%?mna!exVEwPtGW{RWGC>DiSoK_OscYkG+X)3yQIeWVb-0D+Mrtw`9g$
+mkwa;aniRJ<3FN at p`DryBrmI?QU1MvHkvhQ(>H!ti=l);kp_ZO{I&pU|q6p9tl!bB>4Y~%!F1MRk8N-
+fM43Q>}mI8F;F1VOr|yg1ly^JJy7K$>p at q{9I`oyEg_ej)cOfn4NSe=Hu;bZCX1!eTDYeM at EUYYfoUN
+&;+S$cyj<bH)jxn1di#`m at vTgUgC;@}AxVMp+h7N-^QG{>aDe_1M at 9AB5uo4BlOksz5sw@x4sZx-BVo
+o~)`8;$xYG17`^8LoGrcdvh%%GKbEpPLCX=`kC$GqYc!zk)-NA2&j|Muf*=5A68`O2C0>kK<MO<B$x+
+OB$PfrpG010jy_P3lxlBTwbOe7gnfFGWc;S1_2YzJw34=L*E-#u>zxIUh1RT*?7PzVjKCerbT3|2c~2
+sxA2xkB#6<+ygm at CEC8+{C&50UpwQk8zAd&_2%8fO9K8FhRjGRt)=|noJv`)NZloy}x@)hSo4|uG2)w
+T0eZiXyE&$r-ta4rrBx6VtN4tlPiM~(8bJR$>Ckes`xU+<?U{lcR5UY>*-5RrYC9gBuXFLtBNx}1Uwo
+Go2>36#7&<@l99AKA8AJfv}wAvljNlrJm$M5Y$17#6_uquL*>(q;lObu#cJmpVed<tVC_w?I>mi+e-|
+hW))VsB+ad#B&pWUEISz(ncAlDmPtKy!FfGvU1DKiEK#tEW180kuzpDT?W3T4o8*W?Cs=67EF&IRK;C
+xmpvl}2cIRj<dyk6HtEExg{+V2uXA$JFId<7$5Oi)qSMpI%Ir9QVm%~rv+o)3R*F|81KzG8^xQWP^Z0
+oDJ~Nt$p6dN7wPrjvX>Z^AXiPey#t1~8_yPWqd)r3wS1M*M6h-CCLx1|n)p+CcdRkrn=&_5{(R%2z$N
+t&IjZ>G_@&|3dzg_6~K_~qCZGf*u3-iJ*>slvGzsiPXB5RXqb`%$KJZl4k-rU!$!vOV;o at i%;eaj1IE
+SM|dq-d0XoDd{)<|MBnUsdz=F_7F$+{Q8}<f&Ae2a20keo1N|Mj9NU!0tXQ at 2h{Jxh}L~v^$3vbGTs7
+?l~sj{62{f5>@jFZKVbYZ})Wx7%s=mIK}{Y)X)(cagl6vtkj+dlv>WGH>)uN at +?i`fjnK$99+TG)M<T
+O=p1CHq?sMTxl}W?uF5GisrcPGY0!MDZYVJ_Rz<oOK}0m?=Ah>g%rE0;Dt>UY5A71&Wt%v)XwAHuYY-
+biPvCs}(An8&3KlE~@?ODy#yj(@X2bLH at IsFdTJn}$Ur)MhN at s{+D14rXR~EB1IRS#tiDN+7>Jq1K+@
+%kM`X&{!%GVz=9 at 39+M&j4wtw32DU!eKKT*5MZaC}&tJN-sbKuIg*?3KYe;#xb`dg|5tb`+XsB(`KpU
++xIiTJgPOZW#}gg75l`Tw8VCD5<4uWCtwD^_ at Z9=ogQ3D5be=94vk$kOTJ)1_%yJNIAq%M-`}y2bat<
+Gb at SsCQ{@4jE8UmcryZ<+VSR3r4cd6bC5M<IC1cSI<{#@a58met<JlvU7y;W*pxl)zkBC(ICfS(B`Yp
+yRaQx3u^`Q(Lh$1n-r2^4Q-K|}uN!e!wlRxljZPjWn2cqKW)f!6CbifXy-u$O0Kd3*oziYHsJ)RTzV;
+dV6#M3HrWsHF=OXea{iBy_Ga=kczu(M(Hi3xu<7 at eM<Dxu^{OCXQZ+8F6a{pw*pDM|pTR<RNad)M-WU
+%qWl}3id)^U{*yInA~HC=B5RlA2U9(=C;Mebfj;YNB>X6xW$k}Y|NM|;y(v^9Of>E<v<?BiRTR#&toD
+1VuSOm+i`tx_Csy<+Qb at GknbUPFj)=}dSRLk;k)bRA(E6Gryz=E`_6X7?r9Yt<CJG4GYb<Ga`K%Dl;~
+u>F at qyWXzTefYhT>{Dw(&irXnJvf562_*Vo7uB-^yMhhF*%!^NcUZfyeu+lS{94B#zV`y!8pnDd_K5E
+gXoD|HFzv6F5c+ts^-&khdHo_jBqM%&4e*N3FYWJM8Stx1`_+~GtOf!6i5$ezK?DS&=tNC7+9e%5yat
+CO{DyAlUZ<LNr00qTm=t;+-old%pW%%^1a(b!r~LMGOz)=ki>t`bX?i{x<%z|qyvT(dKQ0A at M<ILD$W
+jA at L*NeZTNlnxw-yGU<PY}?CgMpjU(32)@+<XP0~)#JF5aEd?nXQH8WJQfNU at _7GJxKJCF)bW$|T0?e
+D<|<M?zt7=IE2X22<616B<&cFK#v4yguGX$!AIuROGvNdqD<Zx|rI*@XK|AR$-b1FIfhq5$1h6un!@P
+1?^To;&EN5FGmbj66t1Lq<~|bt~$PWMFXZ*>1X=n`i6L>5B&%l(9yn99WuOHG(;fxe5lCl3U2WY)%g4
+JRSn|2u*^?=T$e0@>sw&Vl80W4dd>!y02!Scm5cDVjfsC<><UEw`8p1zjUYrfdWb|BnFtOtP*zw5$Ho
+g9-e8TQ&@{Tex1ytR<}tLfe6~K57cLxZ(m68l%cl!4kx4`e(DR8G(-v?F27eqFqa6y at roo`*8`HF_%V
+c1;dZdPOl;2%W9Rg7;&3YcYr2&`Z5nOcBoxukIa3gqe#QK2Q^7TqTo(9=ap66XF;iz>44W4SvpPah)G
+h%w$hu4t~w74`_aWWp~Kyv`i5{|Up&S=_(7dN1u1NkuRtAMNb`|KAAw)m#{yx+){JAjDqMJU<XX_Pk(
+*elnj2dqn4>AIBAePhqF%R4uBy^W?$jV9Q9BQ~_0j>X8V80QZQ8NTN$n at dNG8S3%K{*&q8OY=zD;5WV
+sx(@x&c=&kf=UJma+3p*xe7DVS=x1<(ep=NEuw4n8*cN;=*=>8$O*aUqxAhoLHs3lT+WtvyzI4A*lT4
+|t-6tWpqy`mjgG5^sGO|tFGT4Smn-ebb9|Yd;AVqg|%HUh4^B?VQnXSQi-4w>Qw9MwcOK&^FyXn!U20
+?9dl`F7NyIWowZTXe$tzhq^BDTRL3fW3vVX*DH!U#fawXkgznfgmSQFlS<ZyiaT@@Z!>OZ>EG%NJWb1
+KYy-W!09Qt$E<8-M>p at 2;#)qAxczHEoLS<-6Kq&zth{EHt)F6C|FD{O8Cpr&-Bx4D}MYm^HY|Sus`v8
+`lPYBY7M?>clN&v8`hA({CY*}89V=KEPDP$U;DeU9N<qyA2jxQDZF?dSflD<5xn~tB<9R;1=*wRP`C#
++z>TaScAAVrre}+Bx!_>hoGv1Q_7Y8Kij)-8IxxG+I%-{^w}yi+$gU7to<lpnK6-#??7{`T{t(&lDK8
+$+>svHd7=T;?9Rj_t<CAIUdXrlBf_6<xdm^Yu#C$h^Z(5`}0JCe?Znkhc)=a&S*idu4+K<oaLXh@&cr
+-E|omnmi&B9d{wH<O($#^g7EoVW+0vJv$^)L at E90o*WKcBonpZk-<Pk4cxiM)AIO at u4bL?QQU=5pj!?
+qMq<*Sn$+ir4)O&<}qO^F$aQ=LO at 6rq|A|*s)qpX0ymmlt+338;vc_epBLcb4O|YtLDS9^^OC-5Ph(|
+4%YISsa{_E%TsOpT8w|Fw*bHHhvkB$NeStpx-Q(s=xum3xj#~x at xU0rhl|U=EO`Yiug-f1-H-~`V{5S
+IUL0FU6@~zxt?P0_8Rosn)8oY)RSWW@$vV=_x}wJeWeB7OLI5U+Y83Ku5&N*U9L%Y9N`~YPDQhjoQVk
+M5&3%X*XQjmx{45+qGUAix<4kD}jvE9(GFqH~%d(8wI2fMyQ^K^wEFoN$`eJL|RfXdtUkT1ygAT7-D0
+t7VzJpc*JqQXukbqs1$+CuPm9gBc+muk^%9uzBzDAcx?3crd%-#>n3b?C>QAS+gZG-gd54KE-;Bi|};
+MO{R%f4!t_hFq;!!foXxp<v;vYEqvpzYa9QTwP=)pKkOM*sWEe;)+>Z*kK8W+dzXtKbnQ-vWVcjsNWZ
+pP}Jj9^)Hq{Mr6Lq~GD~KjhPxgoL+gly%u(*?g32`onOvO_N07HpZFkZ3SBro!q8UqtB%y*2Nu(H{ik
+chSGJRkM?F%Cfov?^$hDFw|Ifrf`}DQQhe8=TbFzMSJDytc<UNhY>f=j)?7g_+dt7 at 3wpLVB-y(*(hW
+T}SG?U#DBATT=y1c3t(zm=&}#EUg}0g2&0&Jv-U|M*t5tY!G0E#&Od_&c?&Y8B-MK&E$O*88-;Ekp9C
+01Yy8Bl%yX~VOM74bn_l`C9tzZ06``XPpA$BZFcOd4ua-a9C-SxZH`5sYjZExR_K;MLh#96na6;IT~5
+O$%V$*{#4&~1MM8AM<1fi5{ewSW=2ZsDWy)i`f*_p^R~QsBF at PFlg1U#kU*YrwuI!K%Cu?3`}irgt~p
+!`iCC{P&bS at K3z#YU6-7mPBTO at 6?La58d(r#A)!fksv#?@s;E4?)C1S522*w&dLp>Vw!0sfjcCI>wrf
+-QB8TkFays0^vX{og#b+Nq7ICni{t3WMIt?t;&6%5i%n!UAE=<(<Wb6mvnYFOd_nt&l at _3WW$-7OQ;2
+>7?$;z2KykD{oFx{6vE(S=5v9pVK5?{rV at PUxtYMC>If*Wm_GL at WA?!)>M#=IObbwwG2^Irq>=n&5Wh
+q4s!j~6SwUiQdTz?<5YR29dt;d at B8aK<u?Jp0OLh=_TyalWQxVq($OLGjBw>Y at IG~>6bd{5$m;!p2*8
+u=C8+HfjzVU0`B7F3}ZO^5}2oBNk&v3KBNeyjFdx+<S^cKjmD at Oz=(9=~Lh#cZ?+PUJGnRW2;63*!i!
+vLDl~$DcbI<^CCBn>YQv3cM|_9fwF}y1+A at x2rw?(SFM!<Cnzm=M$(uv=&^NG<nlLX~809vH+!p*=90
+uJTe{lS!Uo%RK)og#l4!SAITIP+p-j7cCUdY0JXzg3eADb#wY#CFHc!CphF+=Qg4ZKZ;bi#KA$tqJC8
+lvsziFL>MUg5SIw1Fd8s!uUkl~NC#0*HhA1k1onk|dpLa_fr%bpY(AiFp;i$V&BR1MX+WPRUJeVhB$0
+8OIcw<jqf9LNs$JF64Is;RlQFoxnv?8lSV$x?wN1?#mdXZYTtt}ZgKV(ydg+Vw(-V9JTRvbg|Sw_wn(
+(*GZ&N@`Vo-~hEki;O=c>-^MG{&psG3TD at QhC0dnE6bgr?j(xTuagPh#cQM>)l4rz>9&43ec(SRJn$A
+f at -I`ghP-Z`|fzLX#Ft?iv7NOqBEEOBr0-j<G26%O<--7Z`$W?7nxsi%)TeTIhS=u%emMqR`p}kmRsK
+K-uKV{K+rgj|NZWgw%>DdQB(hflmBA}{R*7h0e?8$XQLnpM&T%f6F5rKI7u@!K_DbWP!zc-%Oac9Ec|
+Iy7Ghf;-X>~CZQe%Yo`A!HtqvXS)~_o>Zt{2WK662Sil_v=Nj5R*mWo661l#6%6l^mi=^h8I|HO$ctX
+pAk)5(iA_>IXGxqsbjxSkqKcX@|+J1Dx>thYds*bMnFa+8)_54X~R74Y%>aGMSJE-;bo;U!7$rhU6s;
+D<xt7NlXDxzk_Gi(WTGg at bR3vepsTbA)Bp(6r$B*>JDA4?d05cn&C+9|NY%py+o@%QiPyN4KI;`ha0Y
+9EojSbcLen9-vMJnCLze@&hcpd-2M(Emw1#%C%j7#j~r0g_zdr7jaa+wLjl~A90J<W$*ZKm#uj9VI{j
+a+5c2hcO5%tdsVbJSCoYHfFqzvhGKq{)QPQZ{?XOwtTCaq<My}Lw(koUtjo3inIGV{p99ZrKL>M?7S{
+bTOKJ<1aSs(UTbI9flXBR*vcF(G at CEFhKz1_MH6*99F6(z^qa?8s4^iEHr{2`rvi##(55(8KM7Y~L?P
+GrSj|D5&wN5GzXO<{Areh4zgUuW`7QS);;O~$D3?zK<ptfOk6^oXBTiN4*v)TEW_aq<^W;mn)nyEy^-
+E>xI=K;^alWf8l3!J+)IFrYRfMYd9xuxnpaw4MUbE1Z&6z9<m5Mam~i5VWA=FNu=wP?1j1Lx5&sL#_B
+Hu8(ppWOqNrK%YfVRlA=y;eN`bZ>((R0jYTFLEOyC!~zu7pFbmn53Rqk0|aG44ol^Si<bVx?NZ3xfJs
+-u8-I8cx0I~KA-3E1yt9;r(f|&KrFg3QMMaPVN96_bIIV`&hJ4?4#A6<<~ukY+Iwnd&XE%R5x%O&`CW
+NHm|j<=lY at Tvnx6qK+Q+$R<<hMvY#^zNJ}g%p(a+X_C8E=l8D&AwV)~M|UrNltN(S2X?rOeh8ppzy2K
+%Y_J7%|*4d}hREEq)MXF0q2?y2k#iDjX%y|B#30cg=EHvN-BrXSe%J)fHIM?`^79-v{nd5+HS56pJsd
+=X=MeY6ugqPnp6Z3qSUGKI2Uo`3i<slpp$Be0{d`RYw&{SY at ZllxT+4Xi(ihjEM8yy==D@;AwrCv-Yu
+$gOb9W1r0}*skchhSZD+mP*t<eUi_0Fn1qXGp0QtFG&w6Gq|oC0ai2zm(4sYI@~%xH43 at N0`vTwMAGk
+yw=T8%sbOc|(cbp!%4#z|7eK+#JaOWt(;&ktcF10tl43*#N)n&xmw-8(szB#&2zc!?Ma7oIW$Vy1A9W
+A8g5xT{!RtEW5#C;xiqU&aGm4pMi|Zub at c2!zkXXj2qK`oV)fUB7>k~KnmlPgjtrdxjIsmB78`MoAR~
+$S?4<<%?ILu+UB^cyck%i=z<5 at TdY4Q{?=9%!gflNWlpl6gbR{ntjb^4H9$ktrD!r%Es%t4?YAXEJ(Y
+~jB)443k@>;Fp$+IS4w<bQ at S{LdZud)Dynpuc at P=wEUN3dUg+MM(<A7!*Yi8YeIWVW>}q9HXuNwz7kS
+*d!s=7#iJFls2ZYC3|<FUwCgu!`A@%b6H;)-v$EKZ82=C!>#0Fg?4y{>XkL1dz~+gwwm7>4#V(Paoqa
+jnE%AT%IK2&WC6Zsf!A1iJpoDXy7(XFi1Zeplh{TX){6|NEok2gnBgW#!R*=Tt?7>0hFjNgosPG}K)k
+C at pc{|)OYRWw{y_5|xPx|Fxx?bWpxQY=zv2$n|L?hjvV2JR>{g09cR*YRb}v?4%@Jnyz(tnkn-brn+S
+%)pC%YVtg(Y-5+j7hES3lveubpgl_6nZ+`q6=Z``N#Kbl~59_OBlu__v?^>qiH+&;Ac|@F#}W at iVmsl
+Qd0amGl5$8BO7V at o6wg58!Cz?&bEj^P4oJnR>0%vF-0MckmQ at dPTiMi*iJs61Wv<q$UYR19Z~rDoSal
+_rk^3I<hL#crn}y3d@&kMW%byZ?x8;bSTCBEABy%n<Vs|=jV>aAUpu{YoyniM0WPEIE<olk}2WouCbW
+tg$W{Xv(2AT&}oz22*Jf*m6zbwTteq~D&(;d1C2_~uUCr}b**yUmCP^7!fVL$n3YRCmxh&r`XZKaCs)
+>xmh$4|{jHqo^J}^f=1T>Hu1L=bL3839^A*vSarmA<xG93(xZ~9V%VY_2xR+1%JuXclMNb`}BicjvF3
+h2ufyTLqUn`$kSdLlf|CG5_{-FN&y#XTdt>x+<&DYrv587R*Tv#y}PpY2C5$+607tJriQzoMe-FOOEt
+Pwm}NAEE3z4Fu_2<e4!T at mkhc3a+_(PMqxxv$TSh51*l+V}*p5{l_7p*R$5^W9YI#wUJHcZ|;ObGM@|
+f87q)Hst=KK5I?o8GG1reM<)D05{i%cOqxxL6rn`U?LrWpfH&cFX!Kq?#iC+%kNZt&i%E~I}&-l$CKG
+JELSLD!G`DK`4aX<iLP;f*5qAT<p3{I(5z=p*JR!`i8z8gxP;@t9o|1T1JAq9AkK|oPDMsaVs at E^_v1
+9Z48hk}4$MS=*Z6xLbvMU=4hk#NifP`Gi9 at Spc$b=Rm{>fOY678_^NL+es64|0S1c at 6-iM~fdjPwJ-p
+S^9`tXjNL48dmqg@}A5}Z6fi|#KCDjzxDx}L<l3dB;1lu)T<5`O*;=G)~09A0`ZoIy={AgMa{3NktI%
+X=k`3BQ~h$$_!?{}K0JO^#yk_8@%Er|8RfLT?=5O-IZHP6A;hjBs~&kU)SyAoS^nO`6WC&iYmNIsY@$
+(UqYjF?%D}k6X`Lly_sT?8(kIj-+l`QFs4FHkmKNI!f>TA5Heh&nh%5{|6r~Te9+Ahksb?AH2N#gQZa
+l$55L3$sLH_PgLf&|7z~}&m8~%dzbknulnm8zr5OSp+^x6BK>rwl}Z=@Sx1>wH2??f5_G!qIy1m!K*K
+-j at 5w6`n~sGaS$yUrsUL$PF^vNhe++~A0fnwKkO&acArZhx5&epMaybP`fVwY&u8M*ycIb^{GDBBcY3
+e<-k;Y)~AxJd<-w1d}E8SHbgOvaB8H+&8_>F{%gaN`T{%x9H96{}rbbkju`kA<5F at E9=()ja-O-zlmw
+iwIZu$Z?x^bUh>aW)`6w$6TT*!ir#jF)!FG0oB@`5le~iO;tA!8fS&#&?l&Ims(@lZOh}9AAsc<JpfG
+J223qh}^@n>}fd!Ah;{NqwCB7lDpOig!kG2 at C9D0tj$Xo-eCLs58KS|NURnQ;V;CLB0dSum^r~;^>mg
+6wMGhg2Y4j)gIRJM1bQ`fL7R_4{Ctbf-g5^(<%#{zVe4&x;*Z5wxM`L=LGowqqY}dXZt#Hw;#;Hs3W8
+eh#U-%b3JYr<LHH$!75tV*VBhix!z*xz&`I`!kfTj?zGg4^iKw`W2mwXykQjBO%p4-<ar1UtWiKC2%}
+B+KY+b7JbGIXhq|M1oPUn%T($N at PEp2PDyD15;JEeoOI6EC20Zt&UZrRga(~6Xc_t=g1dkfba9PtcMl
+P6Qs!!GhgG7m18ddR!jP$bw3%55AzDt4cD5asKnK+5MKG0Gn2rxW`O&+c__x$;B>bxMa+S)~zbk{4HC
+H<P=&L=);`xAtK=f`&nGYsBI8a+ouvLc6mjZ{v&5PP5|>&zo%Q&OtM5)8MFF%n<8aR!3va;df5LG|KY
+jdC<KP;z|e<Mxc)R@;IM2R&QUL9i=}WaXaB9!xBgQs+?}wvM?|23Ax<xGY}@)Eyi7b13$gnds$<BVDF
+c2VOpm0&O-%sGnXf?;WxSJ`}d!DsG!g99<6RsNsMtFk6#{|8GQfm>3|=&sd2(a`ZLx-C at HoslB%}n?~
+{kLEQ-x9iVfnPclo`=?)MuJ_=;=xgM}88etXMah~n~;rMdaMe2xlR;dkt}k1-#=cTncW;u(>gwEychU
+dtaMcll;|lgqvrUUuSSzc`Q{>)$Z^{$5h^24tu=nlOFwLS$}t;lAWjxYyS;1NvMvfPW-u-`v0gj@;=N
+jgaE<GA*uAMayB)vt at SJQrD9f!p8AQJx_$}(Be(MA6g&2MTbzjMg(_dck^`<r<t=w%Q#4&7G at 8p@Od!
+LUaU6o6sq#!F^+;t&m_;#+XNf-ncY|inRG9&X~)-FtK#z{GG46O<Rye8my=|kBwD<9$mHH$bRyj at J*{
+gcYct0Av7PkuDI@#MllRD562%udi5Y70<hnP+81ncRlU_-fjn6xWy4_AnvqSw$%fSKndN5ob5<Z3>ml
+*!;CC}}R73L(usjHS>6WhySC>0F4I`lPlW}eTYB1elYt=)ZNVX!c45`XOd*}fTRsH07|d%R8$qRf(-C
+D|5P?DPW~_HHN#Lf#F$KMExhzh-r#{~HnGs)>N0 at LwLm|AOQ4zjl#t+?HQl>$grzOaRMHMWD_PlOXkg
+XCU#BCV=CBTDh?4m68EK#J<mlU~l|d5paA681QW`zb-xuwU$0;3b-ru>Jz0fD38P#AoB#u7QbTL0;Jn
+9z_%gPn$AeU at W>1xpO at 2-D-L_{N#d1qB1r+i*5cb_DPZMhkTr*bfC|gv-cSjsq<{uR6!>HG;^ZX1by}
+XQ(}MoaX<`09by|KBI)09Rz3Lh_(AS-R)aQE#R@?ql7estbYP{kfw_P~qXL-SOUjJrV(0B9tH`9W?o7
+Z>KTGrIR$xnfN1+*qCj5T2)zb7opSW%4|tUTOjCZQ5`+Q}!{rt4yO9>;P>(^GCJ*Jj9_v4bJ4+{kvg%
+lVUq at n<r(Eard=r|cFa;f+|<!Q- at blNx*NL$%(?4R5H~)7mVHYUd@?wug)ZT*ci3IlUBrL#5bOQbfXb
+rH$i}&67SxGu~isoug;jc#b7vYN}yi+h{ym<!RqKP|CJgmt4BNtzhbwh)+w9*$0<??hrCOdzUI_9Oe-
+XN!nJVaB#11c<6Xn35 at 6wQVaocjPM-D?VyUN^`QC2Ba>TZ*z?XPru#v4m(PpGHE2WLtDEQj at RVVp^N5
+(P_`BG-1 at wXoqfNKg%r*Ar&TV^NjuW&wdCa6%{&qAlsy2;lwOD-t^wpg~7V$hyV*Uf*I-eGsyErb(Hz
+KgxkNU+?U{Ou5a;;;hq9mH1C@$Bp8~WklSZwYOR{pj=18-!RKUPqLn-FIG0iPf{j*cD)8{OtCv{~2ge
+!=r88ei)gBKPLZu+s86zj1hphH=sOJtv_*K8gRy|4{O`e2m5M%X{F9*^k~0vAPV#{=4^pi{3IQtOz**
+XK6cj&(FX~F}U21AN(>zO%$io^dou%Byc|SH<GqS1<=p_6zJHCe{nMxw{iGcodf!sdpQZibj_}!!>1;
+mV#BsBw!VW^hU=WPQS`aM>?9q}V!hv_FPYcXvj#=VUda>>zHGN=RDnIjf<@S7{QRhJu3v7ZqrSh+_U5
+X>b#q|{@(|a~%RM9q-)9Q1gzmEuIJwOC_vW-a-uGo4am5l!l at w`>?R at 35<ZwDrjpB6&WJ``)^n$czYK
+-A>FBNwWIa75rhtb{jhdrHI?fK-M;6Qd at gx)-J?r^LLzaJ#?Fu~O<sLR7F>6tCRti{o?bu5O`*qCmc$
+MLaq5d<&dr`udlk!o{>Za(vDd~xQS2*@MuabJ<2N+V?zZw)(BO#1;%wh-$#JGVV<npoOyj`1-dP08|t
+BnjA%vBDGmZ*nhsI;c&2{X=P9mo%SWP5H<F?+x6}{$GFC;qB3v!x-M?YZ)fZ;&FWJFNIa}3WunC4b80
+&^YRZR8~zJ;96uj){mGm8f9HxHuFc2MdNYLg`OB5QktP1luc65m)}E|27-nq<ivbY=5rh26vOS4GVkV
+-1%aeW2C>{b|0YDrVABeyJDg-5f&#^c)%SOOTzV-oN5lDpqQiKd-MkxBvnEVxPf2FmG*OO8y7~A5Kz$
+svzN>+S6waPOtqeA1At7;`12i*rWpru+yPDB974;luT6)F+}gg?N%kbjcDt at 12!0nc;pU$h6Tq5T}Gh
+=BGW4}VTt6b|%-EnF6-L{41d=6eT1GvD?1*6K#VC$3q<fMHzt(P at C}+JWu;vh2*9?7Pn~t#`0rS7fqh
+9x=MRg%+m<H{${5$KTn<7pGx&_FV#5mM9p|FFsOtXnofl!<V>N597lD8or!djj*;0+=NJLrj_|Zi1xc
+zJaZhRSls8?zMkx at wctu<f;{Vh2g^2K9RZyMBC(1Y+i%;TW#hLu=bzpi=vO!ApWYkjS2yRM-W%vwH|L
+l4=3jA{N|q*2gT at GP+8Hj79-|_Xgf3N`2W%Ij5S9Y;sxS)~T<)2eDuF!CF&{-o0_p6%ip80JMQV{crN
+gUvWx;FHY1hlBGgB4^H_Kzha|vOY8RIH5&=gT=8^bx?w^4oIoTFwBZRK2eio>~+eTjN;dl{c*%5AJ$b
+K<u{J#}$SLvAi?yRh_=(}=19?i>vi<#ui(w0UmakIzGhZ0edx&J<wbdfoApPWEK^+QJd)ld2CL+kzUp
+dAFt5%ErtK at zkW&=uTXgvB93%v~$W<19euLAb+Au9DLKM-6l0psG*@^UqU+nh_vw_OT?z&8<WI)WvE{
+05s4+j>2!mPLwM7cCDnShk{>nf3zzBb1-MMx{+r|ry9c?V?^8v_4?Yg`)yY}DLf&V8aDa4f*>*NVp1m
+S_>zoAU`MI+#F*m&y;E-YHhlj=DiWTG}F77(o=N1~kYRPetWEKF29bsC2#@aF3Ck5D+EDs&DJk$HYeZ
+m1?A=o?Z;)*=v{j*vk3RvDdeOT{i-_sWp&ViFm%kRtIhbqQeB$AeQK^Db4+ylauX9Y$Qcv>FROrN at oU
+*nkoZ~fh<R{GMw9cl<1810!?j5;^fJ+$e~9Knf}s}`~pRKfoG02c}N)h+bER4PEy(EDz+j7-bH3F-(<
+ieQ<~azBb?sP$h{I_JLE<je2l$CQ?70uPJ~JiP_KLvM4`^2l{=$=+F~0&ZMda?1(YBCdC at _j^(R@$$F
+*zzCkrGQ|;+_hSC_{RWGKELIO7iU4|G<$W<m^>bNt+G6?I3VDT`aj%ak3|b}I_UjE=n`TwiTwHK1_t9
+zqi1_8}y)9qweYt7Ps+7Cmkzc2>xac|y4vf|jtd#V5u)N^QO#&paEg+a!rgX3!?sTq9&aR9?-mMh2En
+uSs4-!Z~|3wD-GjGQJXWoouo1`Ot-Bvzk<WRDw-wyopT^k5zFGEGaDBd}2!SnDJukSMVWF4*9LlLUq-
+=*uW%je~a%>2fldmbWp*GBw$@ZwSbZK at 9teL_DVpxDnYBKaUj*rN)@O`kU`%pHlvpe!Eg{k+6^7_)uF
+He64fafF_ALdj&V#SF|n=tzk!G2tYhblLg2Q09s-$X%;)hjZ`a+?L$%d9A_0<unh?Sqpb32)^8C;VJe
+8eM&mwBsn%AWn3Pz`s<Z4mpMZYy?ioM53MZbNa1~1<>W>`XqKoW_p<>R>4D?jSGjLn*TQ0+>G-HFQ;F
+Q2+c;L1z}dm~577w(%n*h$Puk7nnXnIX at K4U;d4)2hi*~!kmBw)UtR;8l5i}>2i5s?ARuqCHQ-z&2x0
+V@^UJNLMu=1ON7_(7We3AwVMDs(PxJRuSd-2q0$NCjb`=e3I+EJtVT)Nwn7c?cZjlzEpfbz_+Za>pwz
+ht|A+wGHl;8VUvzQw>*1$nsVec7dd-{TuZ)c@|4J{;p8ufqP#A4XsbfoTS&X&563gn${6K^YoGP#ncD
+3MXI$XNYf+Q6U2QitsnNyb$!0E>0;71E3L;0Ekht@*XfKkdFOOyZgy!j at G`|#ruBKx&=h}<ce%U0H!I
+<K*f^4|I9GJra-I||3F~pKlse?DhZUVO|yW{p8>;2LePi%)<c`1tBMZ=;L>sQXNrP;SUO&@*fE$z46k
+&rE2}J={E4ApOj!)P=n(zA#4X5aJU at F~jq}0mDelrC!Ba<qY)t%3e*YCRD!=?486{oV_ at juo^VU at eUz
+Yh{SzK04FMue1$NpZS4`sZ?M_d-7LlJpw{;t*4Cek(kqVbVi%Q~uA at T7b+($1z2oxz!TPI_nT$$u31s
+>a18aEWI&%Tf+b_?{;;o|?UQj&}Tnbb*E65{2h!-6))2`b#7L`strc5Bg8@`zO<b{?q*a$@HMF^ZOS7
+C;z~a%r3G>2%}T2wNmuR4lPXu$Bv&KvWdi|P8XhsUy>7%W_ME=$Z(KIDqn0_StDZ*VCLQP`4glB=zh=
+Cu at DqPQm~DCG^<`>lv=7YT+^Oe!`=t~wYX!wSqy^OG(PGpwxh|10d*+ at 5}wPGNF<q!?n3%#6W4ION%n
+&#wJjXZFq|C^vTx2u8r_Mn{U*1%`rM0HNRU at Jy~#M#iIR3Y7-p7^a@)*U(T|Gu8iSLasvE4?6y at s{Gq
+K{3&ujg>-5Hh^dAaM^XB-44GlUM7qU-!TGj*PbHD;Fuenxxi)IQ`(kvOCfAsv3aE$>E38O3nxN^dZIt
+=MYPA=8}_I*s at FX<_y at F{@92Q$SC7Fiqn0$%oJDPlI3Ls+40nffdD1 at Dudrt?vIL`sow=qy?wu0`Gm?
+INUU%Bv`A5F3yaQksoP-|ABr2-2an8vTehs`@>JNd#MDTNbdDP8v>>85<ae&2!{2hh$pgNhkoYX5{lx
+t6+q~%L0nt{4vpKR8D$kOg0H!#Nm{)^RpPMIZU}z3+AaH-;A^B1_js!mc<}O`QpTFl7$q|P6i^|dw{T
+yhUFBXawc$~Q2-Lz^;wae7&Y7og+RXNROTYISLhd<E^z&wZ4p0~1Ty~+`SI*nm7CT&T$3y8_DKU>%=^
+*y-{dUY^V$_10P24F<YK4h6O~T`kcRNu-NH!V0_UZ(W>D%qeN0OZDz1&_6dyfnCY#bCT@}&LgaUV7kH
+%4K at p5*A&qGX5}Cu at dEvVIcBO}HOeCJb(mjxR5`J-=vGHg6h38^<UiV4Z1(oE*Yhr!UsB)EWkEL=5j6
+26Ws|qJ6Ua1NP*nn at Q(QbC at GTI7I)n0{Dhf-Zy^;VUo;$?C;H^{r>|Cyym4ow|}rj`~zW~|6^zTu=9U
+E<oD!9pzkOJWjvGs0(!|x at wu2gphp+4NM{0kUg1X|UG$v+M=1a)2JG!5XaYu7d%oCI&}l^iEHa=|r@*
+fiyq4Hj0?#!4GyPRtRJ>xB08=Nr0+v_Gi^abnanK*NxB(ymMuPrmBn4n2V(o^;*S_O0UQ2}(pn^vj&|
+eJH{Z_h9!2TJ6tNzY_ujCAm@^{6&%TGlw&<RvPAM){wf$~>Wu9%FnXf6StNi3h|2y-Tt=MGV=Jv3XK)
+DL9tTu9N(iGXSIy3!4;X%=?=t-`~nvaLTKZ4raOhc}iB?Q`S%w#oknc>Py at QDg6yFbi5DpLHnjBaz~o
+L1KPd&8Z5QM|t`~`KK{aIyd*bYp~efckYcG0u&g3V-oy9$Oq74u)mU+*WV at P^EY}7olKBT>+Qw5a5tm
+p!R4O3Q^|H?kHPb`1i<CX!S=a#ODQTC4y4Dk(8=+Ae=0_FR5e&&wrpjT4k!41Bb_Jd%vjh~N@#79Dt*
+XO=RBO5PNAe-DN*9%Nlws|6uSeu>2&0R6?5dFJcf2=ib<G^+MVy6P}jc>eHT?|xos{v&k$R}Um~7#RF
+8vKLSiS|YEmBW2yLB0R_2Tn^%SQ%vgWQf$&0_|;OBW?#kCyy{W*&eIyCM$e|FvF&DMM<9G^H#R(ggD!
+loO-t+HcVtqFD`InPHXjVJ7pP-w{9YJXHkDIjG>NYLEX0x_MM4dj<a_PC1D8M&N9562VD!?%>vUgeFL
+96N7Mf+WxJlE;e^6aA!oqN^g*>xzkplNm>PF~87aJD^QC*cWYyuRoPf{PUFi3JVVSd4K5RfW}R)f&Kj
+p^Pk=q=%2hW|LJ{!zE?C6+3%XJe{Fw-gGy7Xa%v at 7?8Ab?=VL;$FRn1-D~J2cRMsb>2{wMpiZ0O-2jA
+09G<<dS89E**O<EimDKMH=kkGU@&r3jBX-+OQ{p;utkF)6=krDO|2i0@(Tp47nYA;cV+A(#4Y^{08n>
+;R+E-B&NW7l7E!mrbpJ%;fq+0>Sw?{-Gjp~S05!$=NbC6eW1ce?PxsWBj_o?Qx$^(V^|C5b)q`QdD2(
+kdjGAZMY=H>mImk_WH8?sgfX at nYEFZJ=$-;EC6w2_ at ov>pVM2z#Lia88bA~oGlJTwYbTKDjW8Z67L)*
+w4IysgX{QhqrdQyf7-G}@Q(~KQ(wQ$W!y*C&aKixpEjf9ZKE-u|2f0p5Z<#gt&%_NG%jvU)#PQ`|79`
+%`uo2!!v7~v`-KDK=VN|vim|o57hgF#VtTDVF)LX|x>kxpVDUhYZ~{7nexYO+CZI@!#6XKAf`PqEGhl
+DYRTFQqh>PI`>`xe|VWk*|f8kY>mJWYKyN!cdRu-<D+Zce;Eb%%;f-NBlV8kH<x{2r%z;~8-JH=O`!<
+D8RDA8vi%#P7 at Mii(^p$G`Gi41f%6Tk0J7JwScnEuWbH{Yx*74)f4S7<Td`v7R!z<pljomu&4 at rcmp7
+@$=Z&!4t!)&%y$wzbd?2ffof$%6b(L*fb2FEX*j#IMB!qi-QGAf5WM?ehK5KSmDycZdFQ4D at e@{xdx0
+M<T-?;W3!jUpAz-uQ}Nr1a5c5XhNsxT-eL;wh2e-q=XqnYsUf|Y(FXo`+DlHtw4(Ofoi<Xt2)3oqA31
+0WvE;k1^JF><E?LYY at nqV)Q^vVA$GGYZSiDO!DGO(O%gn>U2rhXGdV{RjnM&ObJK;~OlEoC-qXINk~H
+gbOKKRKD8n-hdCVYOeHmR$Hr+=hk&kG6yx_(xj3ZY&b=vm9Uck1oBhngAWa9<FV(O4^^-GYEFoYERTw
+ja%#@<iY(}a$^RPztPXUO(t>(P-8<2&*?V9nOG^c~K=qKZ(w;C7Ij6uy~v7D8Oy)-657h#@<rTbIEip
+1hD$%EGZxCwET2;K<O9<@O*p?Ed}+kCAqoEb%`R8E!o)GhYLo6{8tB;VVX-0xxv6OuTsR`c~k%aPnSR
+%(Rrh?+<- at 0J-bieKUo^-<`sP&0ap7LTRVNizPiQ4~^3YJa=Bg+a{`+K0*_~DAI%Sfj{F<?ZQqUnH&Y
+M()@Ld0R2;c_E+Zl*Fy5Fo1E}6f#YlFg!?|sPA at m<BG!*X8%f*7yB?Hb#2}TD)0dW{%gQYj<ldv;D{{
+KUd&4Qp5hwfy+ulx_`Gr}#TB57-=B8?=^OHs8{g at D>0Hyaw`P`o29Zmt&S$NA&oozbX7Cj_t>DesX=l
+cR_HfD-5DylBgdVrl_w|u6;tR5=pIU{5ncJvt!2FyvX^O)y`F*NkarV^EKJ+CF0?3xs*HdGOX!~rL~W
+H_sHR#~3E7ILhE&+?}Ze;x$I86;juHN$NyuDeun*mA?+TvSoTz_xW4nQ$2OS9!8;`e+kKtcX738mEJN
+w at x?RNtGe3hQUyxti%j%x33F^5Nc&B5Lu7&bhaamf5E-D7`=gS>i>|){@g_!lK=YT_)Y&1%DfzYNP(w
++SY>`&4AI}&x&C)9^3`<zrwja6m>xw}xruDWzyg^u5P~iSaIxyd@)-w4l8OM%6b1TZ-@{{5&|$nBy2Q
+VLuW{|!&9D`UN&=K^LIYKLA_0UZXabVqI0a%`IQvyZO at Z#<#a4r+ViZt`!4&Wl0O%zIZ9%|RGizK<|A
+}A#`kEkrGBofUma8r{9GLM8g!Kpl(7uZofRP}h4l{qI;qT12Gy at n(wEvwj{m<~&gDr^e5>Xo;W?WzG+
+RYRq6wYnQye at X{uJP9oyH~!af|n>_Szth2)}27J at K>96&d&h7R#%VUCAROK0s!@pe?9rvW1wH#_?6NN
+)9fp(U$l1<|I at Z_;IZqx{>`+Y at 8<PyrUiXBukY>u_nIEiH=-U~srQF*|J-L%nN{8c(FkFVYt@}>e>sh
+rz8)1uUp1x4gDcc(^HCpjoG4FIRHM(6j?4{yj+;bV?6Y=<=gqi%bd%v!x1l%onbD<*?78WAW_9eIK}V
+oRk!A264un=$c15BJai$~w#UfR?-Ac{&LD{w;#;N;qWae=>x!4&?`PZOW#FmE+<(3>wKaMXBHea3z(c
+g<h(}(&kh}mR-cf7ZuA~!GDZIWuuAWf;KvEmTlZlpQ*Hl%bV(RL5PGO>z&Y!iarANOo`@)6A~T%{F?E
+BR8Ly6q45gw3wXW`~~c=76385%=^Gl3t at YcAV{$PJcFTSl5lph($~kjIUer*q+>w7ItBGCknZ;TNNV{
+|Eyo}B&;Ixs%a2AZUS;s^tQ)EitEN$*d{N9=CpLuNJi1gV;85J;K9sEEpV-jpahS<wyA6r6mB3Bv_X$
+ux1T~sHRFSKU#4HHyDp?u3HQ9*(cL|6Nrv<g3s!$#4%_`{OEagt9<@@VU+WFDzZPvtE3R!eR$pJe$><
+DZYzg^VZXdUy-AID8xiuK7=Q?}~PR at 2?44b0~57;=>JO%}?d$R4inAR;d!{qX{80?CQ at H^h+qH+l~&&
+z(eJMsB4ABN)E#gnKA)A1$N!km^H4nj%&v7P;?+PW&{SKiRUOi$AHXOy7q$X7`D2#dn#;xW2t_%q?py
+^T>1E#Y*_nq&d`D)9>xeucNDANva>=#PxhA^t;h1lozXN<F))v3pcIw3aljfkW|R7$G%l`;SIxGtqYa
+q$+IJ at a6vSSNGiofRthNwmL}gs)+FhR(=IH{o-55T1!|#%KRf&LiSda&d+Qu|KMO*=Dbf?5}9*AQq2K
+x at J{>M*M#WHoLP{PvwM(T`BBs33q1JisG%=c{veWj#Cx;Wg!7NhQDybl(81!v6F?exUKUl*9RAi-7P`
+bc#>Q*`U_-re*Wki)F#B~h@|4Hgba?t7OPcYe)3Pceo^8G?q^&GI;ef}d)##WVSHYiZOF-YFfc(1Z*V
+-b_&4IhSzRM(o>djlql5e%ZO_mdXh$HRZMT?tNX$5+dT6w!6U?jhDZT}J`=8B}=wZJDX-%vkB{-ynHI
+f?Oz-=+e}M{gKx?Bif!3ifaKbLcw&x+dg5bkhljabLa#KqxsUKs(Rk_Hpfik=u~X|1MSgYfY0~JqHl8
+_ci_G8HGbI{NojhBEAGJRMwW~okfWAl;#v|V~NRD5eL_b5)U<dPoMP|S2cU3p-V9qm>o(A{GdWzBZ3Q
+>ANp)Q24Zp!AAE{Y&a1j#@m%-feeLn5Ds>fK!SHEcU(YVIyX1;jWvJgLB%6En$dL%$QgCP0!bX+PIEp
+s~YztTJo*tDeeHV2-5WOR2m92L=yr6Wl@!h7p_nG$a_U0pgiKKWh>HaBQGk>$hI}LU5Z?GNcb^4kFDm
+jKyaDN4kfHXRXK)1zo(Z`NAhzlMD^C68*;c^XT95qm}+hPY3$IF1jvR=Q3_nR=orh1o3qugYY$`L9go
+^4s*$+wr$CO6#U%4O#1NpZxTHe)_71~)Gl+`QSK;$v*A=BV+3*o2i-C)c~-KOmK?red*s0yZCl%sm>2
+aqJkh%7yyuFZO&6f at LMrEXHKyl!D`|eqgsifaS~Mu{lj0G>;vB?u79U56*Qnazn<JB{{)%>6e_cmsH7
+7hK<9BOo|Kp<)IkVgNpmsh1U*~`QV`=rXL!#^$NnSklSTfpO=^x#`0vwiXf=wa9JJA=~fHV&OMy^Y at 7
+(9bMnU{HV&*uI?$trS?)s4<h3!5$;D8%?v|3=Z8fPo-t1*;cgFBWqIBF8{8CT|Bv6C&zKJyPdY!ET(v
+SUaOEl%Z9hlR0SDlTn*7n_tk at GlbF*<JUO^)FIIODi)#`J!x)7$XQC-hJ9iU0hdkC4L-%PGA5u{VEA6
+5=R~VlV~MFtz-kP#hr`hCvV<CJ2&1DVQW_>ibM01#s&)4ia`Ct4ILk`QqAVFbE<T0*KzBt0M8@$m8j^
+AxMUU5M}Z8qYP9C!!-}d;H&a644V4Wl at V$A6S at A0rdRnB_|NE99eUKtYlJeOT9;-Z&LGy(-ZHiXBs5o
++0&=ZIh9DdX)0JL$WuRZKnydvy{EY^A?af<$0>;Bt!!P<Rt-vk@#vbWDQ907`{J29rPI(}<J}ZZ*o-*
+IE3A5Xu{r9u;5+{v+Yo_D#>1Lt~x~!rPfLu)YzYD8>TZecr+|8OTPr5C>w2SuARt&lJ^R@{({am=)#Z
+OIOAMZID?EoiZQUe4hQbmhl{GcWNSlgjr*5OL|7j-!Kjio*ZEcJk%?a)+@<4bF9Zj)}aql?ta5=!jFy
+f{;b*G#|>TAp;8486=2W3=UZPLk-<!8?7TJrk1CQ+N;<S=l}^wcDSGd5W*he!HLc(wVp&+wEDAy#U*i
+HTJw6&o&%kqIktNT at hFg(m}bAxO8(TxIw^T{;(`T3HPuSywCXOL`>WGgxHwB at 6f%DGecoV-M$YS;~H1
+i{y8W!G#Aq`^(A*$R#=`DANG|#BIbVV!fjRGxA99(hQq@?IHXEd<4wbD#=h*ITGkFW&kjAb+YYx`Q-(
+f9+2N4I$>JgH(yBv9yGX_CSPUMeWhYXLaJVZkR4h)36{n+mK!%_TQRw2Do5A9`oBiO1hGE%#qLzM$zx
+Li{=bTzjlU(nKh{)882cq3)p{OSzaxMxlw(Ri<RXu*HNuh7BHW`O=mz>oqWyop(p at cH`S7pKn#%XjbA
+hA<S(OYC!GkeOwibu5F at sP9ce40gvYExO><K~1nH4Vo&@;MuBQwxpVw39aX(vEk$aUyPu6N0O7yp4nT
+L0FOkEiUH3k)@dN*yC(@PoLn^ZMyTy{WzATKJ;nGoJh<(1- at GNm>$k4HB4?qsSmR=8VM2?b8VNrL7!+
+{dK|bTqqE0Hs(VRW6Ra|Eh~j%JdDMs(-?kp*nAO9U$%i#<n8_}5$ZIyD<VO0_<=tU-2syt#R$k{%fk;
+=@aTZ3C7_^F>&Q0-w8wx?D{k`Q6ddsBR+UvO06qmmqsl7E^UZhqlr#pXkjxSbwXI=b at aZ$ML7r&|FCR
+T(rn*}(aB?xB0y0BYry1*6<SS%zicWz3qu`CFiiE)yP)3&m56lUgh5>!gFI|Vws=U+=7i#%(MO+Cj%s
+_Dq7Se6&}<UV>_d!>p=CR`jq_M at _f=$7+0v+U}Nk}8~5H+V14loJ;6b!5y2#_tAtn6rVSHSAJsoY#fE
+q=%E2&l%LcMr(_?-b~t;V7hFHn01G9&SmM1;72+l+_oLDyy!ILCX at BP!vdFNag8ZXiBg9O6o|{qTa?n
+3wKAhpFq<AXCcH!Sbh~9GA2n?ydS1hwm&(_kqb}AV^c^@oJ6>}#qMZmGPA6_#wD%FeFjE+XSCmWha~H
+^mryLYD!b;Uypz>aYA9Uv+kuPnug7lW9P3y)Xr=a4 at I@^Lo1ADu(n07OG4WfkFBW;UZ?oM!KB}X;w;6
+!+}0%^R2Cu@$J#vzaM5vDc>Bz9_HS||3!77ss44;_BG95|}>jO- at O?B<1LGC at vLWF>02Csd`HcwVrhj
+TBvj<!OO#!lu;vgYxu6Uo$zkYwS at q?%M~)VDNoYxe8YjdZJ!ES1*0u&uUCP!$f-DhI56x9`s0Bhr3^|
+)R66u9I-4mGF7EJ|9(=lLU*#-qIJg^>!aR3PMF$SvZp at gt9^OmxD(x8P~RI<ZRtlZJIIYGYZ#{(e88Q
+rhDMtk&zW5>AK-zZ#B7P~`prF{jAU`(NeVIVv5-QlCJ5n3jTrm5ZLU$~>yNmtDkHJ<HYSeqCYyK|&gw
+YE4fcWGF0#G7i)UR#W<h(f71a8EpPdZrpJ$4vvhU-j{!~>!K-%_W<MI4|f19d(M?L?X5dI&Y>of2BxA
+Xjv=|xctrzwV at u*DyvF@~loj3gHq4MuSar5J`LDIEP)UXBKBg;Wf at mp3gSbd^pZX+X#nqadY9tT3mD{
+xkcYE`i8EmNtt4iW-nV<Dhwu2K{>=p-kc6tW*lpyCDjIP8kF0v((}@{fgrWMS!~ns=+A8<C5 at -^-6(r
+h0yQ%${_;aRVlTmnpawfWvJ0AK}QgvXdJFr1qyQvsP8V<CdpL}DE+N7h62Zf{>%p(9{bpN?09p}Qs&U
+pHY3nR|6bbR`m-~32?f!7M|gr{s(i*0&?d4{8U9tq>TT&gcM5%<JpF`4|HK=uW1*+NK)T~YNflb9RNw
+U;bbDD80q5fda7A-~(`kO+Hh*l>_QnqlfDl{j&6iF;MVtydL917ct|;fv`Y->~V)LVw=x1*(usD0!fC
+6pSC1m|kr}VFTkbjXWeS*HNU(-J4Yi}OE_U0||J*?JK$G(Eci!L_Y=xD at oiTTfY63GlyqugNjrKY*GH
+*LEx+C{@jb4`an=^YUqu6z?%Px2BuSwdSwsYuSw>+Y_*ZPY_j7SL|I#!sHAE33V|bheEy^G+9v!iq%p
+#`t9HFnSad*(1DNOONT!<6Wt at YTRXYQlH~3WS3PoD536oy;_^%;-^zLlzCjX&*e at AY|5H6(o2i4LvZ6
+0h}Wb9nRaO>?2 at tFV>?KEJ*Fkz9<*YHy*gDL{rM_3p1s4K^;tS32-o^kayy~&m5<2eFbF{cD|X7wGnz
+zk16`BQ8_Nq)b5!Tf(eiZgUd(ils}<ctO(Kq_=LT at EMCYygqJ*n)+iPd+cB39rB!%1qlKd%5UQWC#@c
+a2m!zHupx2MC6!|upE#oW4k6#aQDUP6*>y{&GCBrXw8VPmzvbJlmzc!>0vrRX`;>&KPUkGQ1nT$6ePc
+H`N)Rd|b+i<2c+?94emsf~+2`Mse{gG at 7a)IbQs9#dY+ukrP&)aTZnRZNaa!Rzc7b{*|dX7-6Q3%rZB
+A#F~VlbawjJ8t2~QeGDxQn7P<@~E&)>C~5<)>xi`&Hl8Jt{PE<A?m}T(PLUV>L+r(!HfT^+>nI7lzAg
+p^}&UriyfhcLTHkA;dJ$Op_NHIv&vm}o@}kCT0|w!Qunp<K~O!Lc(!C+=G%6A-w4E2_n?D%AI*!^Ay1
+h*9^rS%rz2N at euLLH<PH9((s03X{sip=*5dLcFFb=gPb~NK^RK%j<2O=O6TU#p5!0?=&+L32v3j$tb#
+1Kb)4g$PBw#EJ-u{HHW3 at _Uh%wJa(&Jw-q>#IIaI^D8KQX`H#|FM8B5Gsb=7ug9TYb_W_wJ;~)%41s>
+&)nx$hn$#zqc%tzr6cv?6un^*EX#VTNH+;3G36Rmo!V#!_=%jOzT`<F?L%~@)dFl!ku0&Q?loi`((r5
+C`tK6AhZrm&;09_vYw$uyRep9#BRAbEQ}7{9i+S#YH8>=sL%Q{kKCU(MsXe&%Gfi$BZbG!5)wrM%^d=
+ at f1J5Wg-aX9Ok8pX7H<yDBuk-&FmMWCE%SWxr!jx(aWfl^ZB^`Pe;2!?#M-M>37MVWyf`%^w%+RZK!2
+D7p`N$nVW`G?Z!V$HHhPvham+7A6B%r`cY|$(wphw&h!$3NL#;1tY)LgO!0sk*wpu%ys&rPADZ|Sas=
+YMqW4=0CM4at!rK$>@j&@hvxfhHhRQYC8J?2g(@K>~Tk+gc&O;!g;h)LZ at NfH#10(|N0Uf=Da3-1fDv
+cnKVw48}W(D{@KP1DpF`V{w!x_#w?FXH{}INXL1IZ)R=gYL?f5&|v^YHsqvyPoRCmFf$wIV_8N`|NJx
+OdK@#wet^~u_GO2^LS4B{ldDe>eY1*6}zAqZ=$ya3C}IHFJQ0TUX*;F!*+Wxoj5$ZC3RQIh at YR^`GoE
+)<cccEt7n4E3-+N`c~^DQ<-LqK%hm8aj}L6lh`gRSE;#X>@|aQMdODVF$j$O2J35ANNHkaXNfF*{Nl4
+ at FNL{~Rp*j)AYBZ&PLs9{}HQ=fJ!7khGY4V3Ge9_+e{Ogy_w`AECFWbIpulpaL?87<y4=4J;OQaA2rx
+1$4a0G=3nxaV*At{Q%83czZ1V;&&{uVSqQ!7hE1dst}2rzj#v$B9AptesT00)Szju?aeNul2}j1vGe7
+_G=bH~~Uj$*Lvt1}6+7;LI&v=He;>*KKv$q7|!vW4~|`fz;&MKDQhI7%Wl%YXG{HF&Nw838o=v^Fu!T
+L;&pzS9wSRT$pCSJ{bZoNiu*!ec25NtdJlpN&H at ecmUYHcJt{Z3dbxb%*;1O@<g}-z2CCa at p~Xa^|O-
+*P<4*Rec}PN)vG$Mm6o?QvA^^rRq at GT5Man$ySUxAatv?)HOrXf{DT~G5JNX<S4WcPIMA3J*UnWID-k
+$~5bzWiNAUwF at C4XpO<>o5Z$JU@$88s``c7QrUk&@~sG<MPus=o(y59aKcle98w?QbpBOxAHPu)v2mE
+;>wwAzr0p~DiecB6e{ES6AqMJ}95c3DuJ%03h))qN_mrIf>*@%b$5u<mqKW`)2i+Y|PpGWsW|7GyN(U
+nyqKP4i&7%`DC5TFP#-;7J?hiDtMT=(6P^Tf*gXWE3;Ku_GeHw&z~RH_&8`!bLa*C{O#_GC%cXDj at x0
+J2bA)1K-_NbzEY>fNb}rHNp4oG|XsA<giQ{dK}=8<HvauZ>z|-%a%7iYeDbjM=im^A#CoAofpz at G}EN
+E+qp?2vej?S?zKbijl;+tzJ=IxxM#|Om{lnxcCq)A at L0I>@U;uvo<iqpgLdtf$DU!nt<1>Sl6#k&ifk
+_>Cy>2 at K>EsmafQa>@7f@%E3)c?6#qaUWN}Z-9Z4!9b5Pa%A`WN&ack#&LZg^0yxy8W0G59*ux|d%zR
+;JQf61`j<Rp!4)PX+gbG#VrO5I{{9r at bB1SBTPqu7iylH5|~e#~APepb}0UZGqpUY|apYfKJTJNFPHq
+1iR&rgfjU`YsN|E%)sV%BCw_9Yg$3PWfn~FGap#-j*)$HWj5!RZ)1BWAyH3MS4O~@<Dm at HRY9?%%<-&
+71xmNB3WtdQOkK`tl>u83$CVkMl)J{MtHQ})Mi8C;!qt2e%N-JG$17%5k^2I{g|Dekc9S{p2u$XO6bl
+RhIAAyv*rb4j>Yjh9xH0G+;iKA$%ZAS=@r~*TQJQBjnSF^WK(F<z|p})`U~k|zOjG8omMv{_q>HzIc;
+x3?d&mSise^H)n`??ZSr=flIld~{~ZJR-tYZCH=h5U6aCF_{&<ofyU!VXF`5j)&<ugXIE+y^Lm)JUG9
+<Q`PMp9ooczvcQVc+whs>&tl>pjCECfKg#q7l^DP at YT1+ExaBJ}$*7qEkGK)SaC$NGPaulP3#)TPJ-6
+t&)<_h<&1$C((Eqp)8!pW`bVb_fHNP8<hU2lP%6XoUl9Y6MW)0G4$9YqUc7mZ2`g2FjTU*ezMR?x+mx
+gW-VJdpT!J0TWCjzcrfo)o6YK<_%sLbEoBa^S&<<_kM5#NwU7rtQ7xSMw6YSPwSI>wLYIs*dHkh=tD(
+Q2W at 6H`)(Z9tjcRKmOpIM_TrDUN|j?nnt2Aj!S7j>=hv%&4x;DYX1$MukSMLa^jEOYJ2d42fvgdr8vY
+c(fY+?intGANq>s=8NX2}rYW^#>Bm6QJqNk>vV%rUpc1!4S;<412L#3h$^;lIs2l1AmvBB|XUwG`iO@
+!zE$~pvAUMw{!rhsK-@$l;LD5tjB%O0NQLv at 2b-u0M&+cgXY-3rplQWCQiO-6 at sO!JB0YG-Rza5i!o-
+ci&;(GxhsTD*4ZUAQNfW#^!dFvWsE6v8onn>=}t$483<tWun>brrJLJ+rwJ5?&@9b7)>0 at hbcBc=jlR
+EYwZWU0W@)LC+Gx^hrhL)+;q{!&DMAcHD8 at G3>|9E7HyZmr3qir`mlxQ{&y{VfEZm38xK>h8(vzlqW8
+Aaq{h8j*VrNWvn+(PRFpmh-RB at j~sa!tP7G3-sW=Ej^p8j?FiMT<w-a~-v#}@kbnMxyP9PPLw6z*vel
+ucl~cKYj=~ZlGq7|14ER6e{r8=}+xORSb?p)BBtR$0%4R^so5)!G$<FS%jilaHUSeN=EB1G2G5EtH at u
+cl&a}sh<AA2-TZ}zR`7sD8NmssJ8*Ljxf;HX_aq3k9)9@}HPMNbaFCOHI?$L-DO4|L)lapVMF>Jxb)v
+uM~ynO{dP>=N81lNVdoVph9Z_LA>z%(3zY9u)bogHE^Vd at VzNarxv<$VOTZ2%n46`!PShT(UPgP#e63
+`1!n1?pO3o)8v_rF!gZ}9k}Wt-x7Vqu!dBa`eVc0+s$L#nRbiHH|}8<J>Ks6a%8R#FRq-I!0u=3f+w#
+QgA;m)j4K4lK`9<(c#7GL2v2m`>0Yy<b&pH=+2*i^!^%mES|o6tDEX(@j<5DjD)ZtkunTW-`iJQJAF!
+GK!*l-4eE#x$Uo9y{5Eu at _Fh$}Byab{Q!cZtqVK9Z^7)1lUY5H3hm*lO6kOF`@5d(r`VE(X`iiH5ORW
+Si9>S7<4sPv;#?C&KCK+LlCl4ICf)L?)m3lq>tzF0wK?GInhy2Ox32xt%ERYn3OeuWpoS8N9XgsEc;F
+to(0I2ORqQ@~~};qr2pbY+KGY&5;{DuNma3<6Cci4}n!HPF^h{YkH+G|S}|3yv%XIs2_4T^XIbPex~h
+?Vj<WZdBv&SeESDe82it@|`~{aQ*+5A?+u{_+T<Qd^K(I^0|@4-7ChN8L(r49`2p<Mf~|4Y=W*v^gZH
+yZxVn0v~7w6QH6eP2-?}K{m~F4h+l1D_3&R}pmFg>$-;Q230rr1Lyf+%w|rvS*{4?ia1X%e&uDb_0Ky
+rN>G)sNwL!=DuaGL at 8&bt+-WtZWNF%&c4Q&{UA}n~&x+o)jaXZIwWktbL=}%52n73vL?D`$kwpaf7RM
+Yvw at P4aQoNM20>|ndlNgv>&Vk$2YuJSQaT1T^vN9whNo6oC9T!!vZd-U;IoQjiQ?Kd0E>(N(f;Zs!c2
+T_Bbe8D-{sJhM7$!=1kM~oilS7y94_<1*An)%RsI=-4gcf0RlcDHN9fog0L5tVu|8IXJ>D&J2z!{O`H
+nGaY|DGqaf5EUGs=jW!@;E*fAYbc$J<%ZavvU|cvOFPMs21gNtiWlc{$Fn)`%d$D{h@)SYY_X#c=n{6
+Q2~PKo(h23AuWf!rgQW6puCdN(fxzLJ?Q=-%pWFk*)w5mV7Tv#R*Y(TdeSJeG_;;=q=v%TCRoqPIRoJ
+ME#3q)1C>oi4FqeQIh4+T=M4k*^<3bktk30WDOmguB;(Z=^n4ZSa?KR6m?#s?BMe;erl{)RlXFexa)^
+O;(LSy$pblsz#b?H`gk=syd+WCQB(?U>X@&%<D72$|Z#7R`ifx)4bE7hfWWtz5r>13?aXrrsUww_P&?
+Ut7c#tAs$NSZ4K6mr=?g~c4TQ<!U}f0>V28JPZSrs!}_vdl(n)AF at feYQNP#<cf#3ido*m0A}akD#sb
+HldLJDj8ETw*>Fs`QGwE18Xlwl@)g>K1;rJb-dZy-~5qpcz0q%glC`V)*@p*NUnQ6g+{UWcxwaCPeKT
+_t8}0x%R6PA9950jPV`OPq+6MbYxJa3V%i<7<kkq;i<J+Iqo*yjIbI(ksbeI^DF0mW>AnB?bT4bb%DY
+-XVA9&^@pCEvcl&;77`$)#<L?Ljn2lZjgHf1<ae`S4BMt<jagwG;7^j!;k|G!aUUQ#+Psh at rNKe1fjj
+e at kEC$fYi~`wI7z2sVFkKa-(Z$MqYY?e7pd=1Zk`xMT=@LOQD9}t=0 at uZ|ErB130kW|rAdFD}bYxaAK
+otE-mnj3e*kvU2D#rv`u|rUUCrBW1fZ!l)oDjg!CJ4}WL?RGhE;}sa1dZAu_!B{cY;LkjEi86=ITf~Q
+HN??x4dN95C~uztN|Tjc#@e2I^r5#*YkSK=Seg9a=z)RXJ3%M=NBE*y$xqRK%UuDB!oPtfr$};Mn%Ph
+L4?Fifti%q`+Bv%8=Fmlo_;&rwtiH=GVwxR;QvCEqb`jMsOE6)d3HQSOtp#g;zWj(9SS_i<^~uiwfa_
+cHGz7Y*&(fid+}#ZLCjOO4(w_!Y4Xm{hJd2kKa;Of|*4;i{)YY631jEx;o8^{{^v^Mdb<bC(7k{;T7N
+O&uw at e}|O~@$}p4qT>Mt?kfi#&)ja*x#R#ojST?;Tm6PbIx;u=7Rp#D{A7BDzsw(ZsjDcQ9rZy2fl&d
+yl}$(UBSy+C;KTdafv4zTOV9o%YKpT#?$?0~3zd{cvY5yFE*daCLe_IuGP at MEjD=tUsnsceZ5fwmbSe
+H$`VHNF84i1m?mc^Mv1t%`ThI8d7ja$rf>cqhfQ|LlWhxM=B9q_c0xmV7SVo7(d!XBT8&$h&0`7&a~N
+Y=KfktvFo#4S2ERr)mvv%Rc9EI_DMUPc03NJ{g%(;pgMmRd at lmemG);sROCTJ{9>BeTvR at Um7x!1W$y
+BmXc49j7~LNg_LXAM at jBmX{Bj=~O}_q$23Oo`Lj1uC2Jpb&HT%3vZGApmkGIYlShsARxvWjmFZr!s=a
+;sOzd71QHo2RMG3FLxb;i|D1z`}8yB<g3#O!7Bc)fb*_O?^ud>|T{JrTo=c^H_U!Tu1c at eaEYhADS$K
+|^!4<7xD{eR?e|IeYmr$V>E^Bv^@<_Mq9p{&rO#Cz~MpLmftW6^zIIkZi}x>v+CvCbWyi(~gFP2QgK<
+s4J7^MsuU+!v|dzZZkiS9?VqR4Rz-0o4*+S=oU-O*+t81RFoPE&C%nK)g)VT__$LI;h^MmG#x{8o~9A
+-*upX&b7N=dCCM53#F3V}-6FC!-3v@{Ip}&Abj(}kM5(%`6<w8;71Lm%=jHNv>-Wg at cG}y4A<wu>wD`
+_G$39|4ZJ&gwsJj$YQJeB|H_!h(VzlhfFwVo?BRK#q16{=70D6pVpiuk=-~89lf#JV9^fUhZ;jkaYj8
+TT6mWYocFpOcA9~iO3dnidVBtgR%wZwY_ at vWFK0u0z<*p}F9u_%j4BVb at Ekd@5?&~v50u8<k%8;FT-Z
+Cero0{J(}En-b!W@|4ngM<1cv8G8W4CFGgRVA4WR|2s3PvlpnMtHSh%K^*SKsPc48UmKj2?H98GXx|~
+m++DK!pI3w|H&#HgaNY7_zijngN!X`TZlpSb_o<=3P>{l&bC>=wq2CJ#Eg~Al<VQ;Ky?RAsQ2nvu;I7
+C9%v5utGuRsl-B^`vb<X*JBmbd<|Q0Eze((JLNw#g-HUZTEDR)EO(59&8LP>={PiBMEiu{k1qkIeTYe
+rL5U(wt*KH!a{Cn!oTXVn<#F$?oV>S>7 at jY`1tIoM29gr9l_)z-sMPgWh#EB5ki17s~#`)UopWC-(N!
+pBLkQltIdxQ2YgDf=i$4grL&AX<x5vAXREKb<T%+KXUXf!N1C=YEbpKJRr;z#KIBIFtM9$Q^21k|&X;
+W}UNSH)oIB;FoK74wINtVwEFLDPKNYt6CDn&zx&u-P2N4mzq8!CxfitfFj?Y_PL?6y~EM`)RBCzSN)V
+2hltZ>b@*9OF5>3-W)C$+*1oGk##15o at J+WGs(mXw&R~ob(PHd=?z`?vRzHSZ3#EGQ^ZhbJ$z8RF1{8
+x6R1b+Ic&D`c{f267tDwi^~c?rFc^W}nni4!_8!T&VU5GdV`!>J9Qhb6I_#ypqc!zBl@#K!Wqi^@0SZ
+&YsGrwvC at T-&oSB-~PHgo7XwrFYF<igMVXh!2=x2$VANeh<TOXQ~DoG@|*{N5_+derbFa96q-ek#9wA
+&V(^As_xGSxYvZ+^2H&^H1kK!9LIFFFY!2 at ub6t<Eddnb++8_q~b_caMyS^vH-j|1GO)mKhm|1Ny)bY
+wf+)UOT9*59EP9fu2e(U$HcD$<3yoJ2}Ai{YIE(MjywvXdEuZnI^PNbt4=}1}f`kk#gI;sP2-KyQX<p
+L|Ae^I+Rh^d&ee|na-nA96e7PV!(>y1I1Y3h9qJ;(9cs3v4di>*L(OPEb>%WqRbJ2?9mz9^rLW)Cy)X
+2gGi5`t<41SZqqldL3W`}Q)M at WGi1~Ee%9L2gsTINggTSZ2SHI^XF48j{c%iML|~jyZ5!?KK+1mGrf7
+1iVj<Fei8BaD6J+UnD|o-+6g)*Njv9GBWLXlmt3bQ^gIa0gGj{S&);CA^Rrx+lo?erO#kVOAuFyWFz0
+jUj=92kQaWm6#Snly%tcpC|#lep1P~JSc*55)NmKU8B2gtvG51 at B`-}e&)`Y)W~TO|79 at E^l01i>)|p
+-_q<QH-Y0<qu}TB8-F?3MVO={1l1MH3kCZITZAcG3%>-iAk1lD_bYSE${XvHUidCpk3@!B*NG1U%KKI
+k^uWjd=0wZ2C*#owuD>23p!rsq#)~1mKdZEk at V+nY70;?tAd4Ed)&~qfVjj_Bn=j`92~95%jN6 at 0mLw
+Q3Yy?Z7?kanPs&y!?Bzgmb>oUjkU~Xr5KrRpFAcAF5LFC+D5C|B4EaZtKCtSJvLKNkc<AS%m-w@^<JX
+yQ3oe{~feRD#M at V)*g5 at o!#96R+{1z-eu)=ap$$h<Hg;~9o?VwfEQh}Z}kuZ;EP`8`RAGR6N{ZDnfk0
+K%T2BPU-gXp({@5xYY$#hjw5^T?ypl^}&9az^(cn4PW$9mn5<vQrwdfoGgA-d7JnBwmm52;Ai#?m$-{
+7_2l2kIQUEg=+p_~6UV;27=0KRluOvCEKZR)vtuLsgz`Y+)YFihxJ=>h>0=CBCPy)8=sI#WdM+awt{v
+ro7fcNm$5^f(l*o%HTe29z2%z1a~;{QOB!|gdMKRQ$P0njq&H=j5wW+ARdFyoj0WEBO0|+v<Vd`XDhY
+n`>ewg=IW!kA;tWC+;OKDhTz?Gl=%`59|xTc!-2eZl9$HCC1)<XDdD>skD%x*>Up111X1~w5)R{Wh+W
+Ox5GlV`<_sU=UcR79$SNFOMm4tf_IlA+UCYl%T#D)uiYkxJkEc#=BRlC1o>9hPdhm`{%1qlK&|Y7slP
+Id8D$-B0hJQ{mD)L8$P_)(zAtxzZA34YXhApJ)qiokug1u+W<u?JZ%G$9Z)uT5CyET^cT at b=??2*$9G
+5KMj>*ET2H+k at Vpna%(9co{F+ch7aj3JSkd*qvh4zEw*1B!g24o}6$fVA(TP5z|H$MabbHYa~J%v(82
+RHkmO1yy_{T+p8?hr2^iJ)##%;}S9J%f&8?VB?{L6!aIZwMe!YW0PSH8PyDwTSJy=Yj`SN`{mobZ;Y`
+#C`gJD_G?&RFQV(y^endd?tV7<{FZY$$CD4Kr_asAbBFA(h0Zwq!n9*!<6Rb=4_c$S4E&^2Q#)CO={$
+_0WIbUn22VR8h(_PrdYfbYA-WuQo5H$57jcTX+o at A`h!hq~N2lnP%#2sL?Tax8&7>NisAl4P+2g3GUJ
+iDvosf<ytHBV=&W8GXqBF1OXpX1*ASD%ERZfdmvv=O9M_8kuf+9ZBp?>iqOuB__W)wLQ+Gz at Dm@sk_V
+n$p)YST4S9+Q#ez4GKPR=&rsyWAvB*V$})vMukwUpYMf_y1<^j<&l%qS$2hqrYCt8sH)5FRG(2N;$XL
+<BJph^FNyC_0RuI{`sHxfBq-%d;a4<u560(%Rm3`CVQ0s<3Gyw%aDO>Z-1Bn`~Nd!m!|yZf0XYhYZkE
+m!v6dJ_`m-B%m0 at A?_YM&a>Dit3d6(?F#o^W+P?O<yB}x&tPktUp}!7gn)PqdF8WK8Eue)Z)`A`mVof
+lv9$yop6aZtOG+h&%`PvW#!=KNcz=2M6Il&T0E&(GDvL>K`3E(>gDxC`niLrI$TM9I_)H?W{1_LO5X0
+n9?hwEgGi5K8UF%Tlh42VL(WC;djfGK3v-bUbb3w1zNZ%$y1z2=pdeR2Y90aI+T)x|RhLH0r~GV+(y;
+Q#`%m-7pgEuI at Hacc<hTOn>7QP0>XkXt`ocLCxBE~QxZ`sF=3#BI|r`1{et-Ukk+MyKup=JmL!B3{tx
+oF&c_(9Q%U%O5|s$-9+!0I|iI^&Lmq@`*k;X=lTONB>=<BS^M85|aZti0ybDKys~%<+M``XIxeSM~R<
+DK3t>=QL%ty%lrS^^qx*z?-|RNWhHe1IdVhBKA5%Ry&{L>^t+$wC3_8Cb>X1WJn7Oy71Sl9cHc$0F3=
+NUKvQJSE(X2jj$L5ig??-VLn}VJVV~VE=<nRH&+ZrWcW&5c_Y3+vH|(?f1^w)X{q7VDXbBlR^Fj%=YZ
+~L!2E0)zzVbLo*H<&wHK$<4zE|91H{3Fv7cx{^h}T2v;4-Ifmn?@gL~Zc<BSp<paJiHzd!Ijy&i-MZM
+kh+^$AmvmFFtV<@6c~##IlcYtL at Zjb812{JwrBjVMa-r#_)2%4C1ySHwb$a68k(4<@4oH%)IR<HX#Wt
+xbM2#*)B|pt~bM0j$yXdAZtJit9R1Ule}F*$BF(Dy&cAh(<Wee0u9thdLV9(SMl0*NElaGwnUl)u|$<
+yd<pm=P3i9KlpNxWIkuYE6YOT=pK2x3pQk2w at +h@~^LXoU`i1&jn`@;!O;T&#YY7>5NC(Z`$npmj-Ok
+i_wdknlj!f6GhmUS{Yv#D`2iP7%lQQ>Qj)gNpJCJlE(bC!W+VQ3;!h1^mBRgOj0yhTi&!%Dk{sDceTv
+D{6>2nP;i|$nJr4zNA^;1lhW^&qI9uGUN(6j%_)nU9rBCp?XeLXU_M}SndWrTId>Zlgh3YD6qJ=%qSp
+}g~pfXQL-ug%UVJs&?g`PSLxA`WQ{HgwUI+?*tecyxi1n($aC<e_bX6N%}Oj=OsIxQ}|ATtR={)R&rh
+jm!;q=~HQjiV<z(Gx8KWZF81YR-#Z^v(G2`k##ZBs)OKQ`qjfPVVp>YaW9))+*~IotWa6HJ{0IFiCVS
+qm^nDVmf&l?=j_hj(+9??v68p;x_mG8H=Pu7jWxqbjAVoA1#<|f@&4TE4)nr8CJ(AWNeW5vNxIoJZKb
+5sw7uDzlCdw(nsEF0!innNFxmvI${=k2B42^UH2dY>zR2iD+w=MZR{pF_`ZtdGt{wVM`+tYa7|x&|$x
+I?NOfn3D(w~~qEJ6GNZz;3F-a2I+i$R+RsIjhv&pZe7NtYlU428!&&o|RRf`rkaTnVN&y(O&UcLG4I$
+|9TqGyq#O0n92fLMfn^{T!-6cT5TdLKy=PdI4QH0x57T1M;C|J=rRSf(fu%Fk~VE;;1FEUm|{BWlgWH
++BirRfWITaRCC$B5Q+uJ8RD1y&rgtVCcoyJm(c0KD&he-)tm9NGLRv<Uqfc-ZG@<){vdUIYam9}q0LK
+#kxa_Fv~g9jzPB+0k4PvkIVDC{UuaI{7hssxKe|)|6)}WjHUtBCx3m0yTg6E~<{1P>_+H-h-hI607?!
+|XG3<Bw$6C=1kI=VEwNYj at 2(}#dp^C}tqec0zI+UT07Uh0(eCF4CEu6LI&0`- at ZBccnC9nRRo;8gZUp
+G4RGTsu1lV%`R`EqX$bW1}NsaqpQ^O|@)Hdne5H^J3s`O2mfxx=k$M?IOQd~ChsrH@{c3$4}&49s}fZ
+bom!28!bwrziwp at hpP6rg=WxL=;i)^oU>5 at zD>HI3$-c*B`}(I2V{-cCSs^m9 at 6>Ugu2$k+DJV=wW8<
+{no#4xrfyiLy97;Zy%pK-oK;UQoCe!wdYEaU7{6sQzM}|yD7P;;+qI%ElWp_XTICa8CHnfxW*b+jrGT
+F`>;hpdNnr#eW-oDtDeIxZur}E-=(zV_Nh0$v=lPh+o at TY4oY9*>=;t#W4D{Uowjj~m&++zmcw|;&YL
+1<u-WqXy1!yKVy>c>ojCrUJ|IKLtliVeB*Dz2^Kw at 2iM(b<s|PvNuA4K*9Oe7vY at y?5 at YtwVqH=m>m$
+XtV><XhV$hgme#PsHaCfZASWKP3|X=c1jvvkv;TF}2-xN{Zd5Ray7Tm^QdRsX#466{<KB=dqKx!!k~D
++rfzua#$>W)nRqSu30yd2_3UnYHk&jR#fTBbC_sRVT7rl}L&Qsa}mk2}Lr&R2fZU{s}%slTE!Gw!d|L
+gKmlbghjz|6QuL2spBB2_&5q9Rf`j)^!9t=RZj*~s0@~&e55=!C|wts(06-JMgx2=m-0=+Tw^N+gnqZ
+DcKOAH{d^a{7OZ<P@$Gi}e7^kesFnSN%|Ok~Zrl at z@ACtj$zetc{e|A+e^M)hoj=<b0z2EqyHTV-kB1
+{maYeKCK>L=s4yV#9_RbXr at QhseK*F<j at YS&p(lM<`WM+;|_VUcv&*bg<|2~`^q)R at ZuCcn^@Jnce6E
+;mp6pNknmPjj)@tm>PI at IjpQU-7G)Q^V4{_N+&^vZ-nK%GY^k36y2H^rRHd&mtIPAN!F-0e0p&vbqqF
+rg~;IKCH&a;H=mte}cr7{o=!=tW<0%X4I?Q$3fy5k&;FM~v<Ga*kf}=<4Szjqx34_lLVgwm4>_G#l)5
+qs~aTRAJ?)k-QgOa^6L6M?^>OJP*a=jS}yr;=B at jW8;sBFaRgYwf5nl4!NW4qin0NcZ;*_kdm$ZB%gZ
+zP}3>jJU6cak`M09%~|5CWnL`f@%S3VROSdRW_KF1%})=Nm|<@rA47hBjoFlh>8o+ct2TA*bsIqxwHp
+uGMu|DK4^OPO1QU^FFoWTkmV!@*>U9uOQK}Tlze*;&!6nI>w_<Ea!M^U7OE{;c at OmxZULM7@)N`+WA(
+J=M>3F9Yg9vfX=56^sJ$WSZJY(3mkH_t?i(V)!s^>DrAO^iH5yz<S4eFG7?5n=(`EF)Q$6Q|h$D%n!$
+L<tv<wiMKb`FmXyg$^t`)<O+IS{)J(o?d@%tS`pTjtCJwlCSES||%4FS7vUdeepV<;8nGB>WLq=<1I6
+k7W5S+QY?>o|_R04UxM%FT1OJ3xxYN2oCDt#0&j=inwXV at Jl8R3@-VkeyfIZKlB4Kup5@&&m6irKOT^
+k(A+(1 at s}SjFQ|Cl-)xw!>)NN=5tedpQxPN{=GuROt~q5hWc}YIY`;3{&y?-^BfceV1O>wwjll$lAQZ
+tc1o^4{ErWrK8&o+M&{mba&5KV!;XQ#tdW9m^Mk^XLEg_$CHYNs&vy1>_Y&jy!Kznc!gI*@kl$-&!#$
+Z4-5K%yRfWv?rA}LU!ea_jIW5@(FEJv%G`a;{{2&l~C)f=5zhm$O145NT54<}dAI1DHpP|f9QqgW0yG
+VnS?B}>5~7W%kw%7wqBzvgTMsLYW52WL}{)8OieL+SASQ_Y+Gjbk4KG;bDMe6OOG{@`T5hTHyT8WKAh
+!M7|50(FpB37e$+hADm3bhB at kGqVbt&8q4CaoY&lKNtx9-PJ(fk-E=T^9$YveQPZ<9b_eEOx(y5{FPT
+i>+b1ko6+Vb-6wIUSEM&9-t=sDxZsgEZo<X at Ni&?k4B{#p65gL{VK)h+uCxO4EQv^OJi4&OZoUv(*3p
+$gE{{%51g9tY*!ZPL#XS at pDJwRWcC+m=%0}VKjYWJ?c3xX<dFzo9U$`6MQR{fUp)k$Gwo4#yRBj2|G<
+hsD3A)6r*9dwPScr1;Ilk{Sg;dSRm8!11K8aJLBv{z&lsUXS;i at jE03+do>__HOO^E`L>~Tk-*Xhh0*
+~iej$?0(k^%AY!j?Yl{X~<WD3592q#jiQg?`S0Ls6+H}HlB3O!UvRThNyQhK0Zd>BuKS_M*{!qVbkjH
+mv=f?F{hA6K5t{<d}AZ=>72>aT!k`O<9F5ELJ6%1d$_n21$}O*%D4$9;mkdS`%G>+&Fk3XO=FcpM3W2
+L+HLP$h`7W9LJH+t<VOuMu3T{^4(zTE0-iuNm3w)KVz=F-o~%!;b6u#Mc6(8kFt<WKDI7D+ZZ3@>Ppg
+~QRv_ib-R=FgGjZRE<cKcjYLm_N6Gntl**>yBkGgKSUaVY>Wkr86fekzN<}yjn(~*xkRGHHA&S7T`r&
+XnElO$^lba%q+NzGGJvM<+o9&c)8v5y&rpDlqIa%IQ`nMh$T#w0|PTYSdk#BNby;(T+j)Pn6+!z5uRe
+orcUXSam*@WB at kSQ0g=K43TGOn>EV5Fl><3U7lXQZUEN<{niS at 9BqhiQ#1ID)QVEf8uSQ?F)VE{1?1U
+_$%H9tya_j0&jy@<scUsdx1;%fNSoEcO91_?EQo=We~M;)YgHZ*c#HHB3Vn0EHgpxalR_|^5C31$k&v
+lwngN2yru(pYXXf56pWE-{}Sf?15fUvEWG-Cg?kJ8connt#P?3)p9O7y?(YmV at qLI)%!?Wb`|4=i{Uq
+|ibmQ;xu0J)2qcB??JNe69M2K1)V_XtitWq|u@)%E~Z$an|!`VI at U{px0g}hBi^s&F(a{1gT^{JkpS3
+NP>T4-84cedQLeVUi##!mzC(uu<@gw%T`KJBNuL=;=fITbVNQ;aW)6a#1XrsLG+cD^9+os<SGj%q_t%
+3ENBel<#wAeS^0+0F6<GMi at fw^LTvu1C3u`#4f*UHMfYgwcUxNrW>FrYz&W)uTRw#7ZqS4?MNe(-H(C
+;mx at nGKLb)cx|<AGiOG at 44#OjeDBdGqLW`YYEQw<Q|qF`Njukaq)^4|A5+VQQucA%7I$I0Gd&N#Y at GY
+^=}(FDI_yk!mX3Q<eMHrUe+IA`4QXbb?B_U18;%^iKohsn-snyui!uhkRk|$XuIBB at 1zB|6*-Z?x18P
+e?%{?({`<-#PnMBz2k|pg!vX6o$*g$9Y+`@MY&7))^9$qSLIxJ!F%xy6D+|4ATp(&H6p&d8RSSZAb4m
+VV8&PmM4CoR at r&_gy{xCm|`{t}pkx^YYyMQ7?xus3Q~&pq$6#C-2clqa6Q&D-Sc`lg8a+FtO}kuzU+1
+w-S0Aaei0X}%72{moN+*9?eK42_~BK_Cl}Vn_ at _aSXv|n8Y!Xp^@c>%YQ#3e+xrGSMu~``2y1*-v&q(
+1}Ibtzca#ROGf at 9&OaYuvvy1%2++$Q>m-|)UI)IRpf;AReGUi=m{>{zO2(|8u&_YpXKnS%k5ghjh6K4
+l1YLVDVn9H_R9FOPM6<PL0}Pu-0O4D9%V}VzlQCc&3l#;8i7}vt2m=<BW@`gJywJ*D3Pf{ITWi18)+~
+AVLZSib9%q*f(AR(ty?FgxmJ at s?%lU5li;a52hcxrY8LJERx<cRX at NEmiFO2)YcG5#em3-GqZ&sk}6}
+*huCCp<J8B+0QNsb+i68n~3gv1e1LZA82u>LrVQvky_zxlbftl$xxG~&Yq8~W+=+F!_VKGZl6kmC$};
+bq&cn=8nr56n8F&%FD>a^`BOs;u}6IlEm%%kDP}x(&U}+=}B9TNuu`V<6U#chuQ8V^SP1I(j~bq`MzX
+zhv2IW~yh at 1w5L;LUni`ahBhnlIwGJ6ft`)y9X5ug{qfGE~-vcM∈>n)eLB$?*yd1_}A0)FI=p+q>
+N)QoE7ol3Qz8tWz?)Ho%h2t!oH$VtZa?5#kO_IYa2xOhzyabk*yTd>p~_4eWmrP(DMM&n5R*la>NeWX
+ZDRRrckHRrp7sKTNl5}R1O94?e!UQW{ew(((7&)SU>3>WN72J++4ZfRtsB3y7r!R|0(W2jKOXM#=l5+
+8FkjE~J79xRKyaFc1h%W+_Jw1l5n%CPwR9J+7(XMXIW(9Pv(2otZ|@&~h(VrO{tXn4^KLj8-nlGKg)Y
+fc}tePDvnzB$pxp~@S55=~52l<WQqE0+!vMhk&RK0Cx3zpd?{wku+HyyLy}aCP^L(F&TCZ0$}*nwmGo
+{*r~rF?w90VD9n4%#Up*HxM3Eu6L3H^LX3To7=N at cduIB7F%92P2ZSH_u{uOwVReugtr6?z2`&g at 4}R
+dJhdTr&~-P!Po)fARS~vH^SWFr(;;7j9C5Q)V)R(cWDzQn)Lf^>wuO^`bsVjEB}f;#v{XUv@`!cx#o1
+fhxOwuE)dt<Id)U;GbJeq*qtQJbGsmS56|&prx7Xz?BYkOaqrluvR~KTBBuk6CqOsB}PB6nEZK;ax4y
+hk9|LGU`zBs67BqF`~_v=cJb2L7(uORbB$NJk3{uqh+J^XwXaR}v5-j^*~AOk^RnEdkHf&cbJy7ph9H
+?W$s^vm;}eYswm*AIaC|Kl<~0Qd7Hd<(B6L!b<@z$k;l82FbUNfbEPU=&SJ2+H6v1Ahvy3qmE)+I+E2
+fJ-t^d;&9G(Y2ot0hKFc6^W$u0&}0|R*<#bVa=*w8OUI~4UDC6fO0qu%4!U=&RR%7u7*rNiUUlY`&m7
+VPQe1u9PGECe1d=>a0v`lvq%cC6(d2~g;@=8VicT_S!-qt1$KznY3<A6mru>{wN8eEN*x`qa@$`v+lw
+lI*YWGbb;}ef&wB|Tl}#GMZ}%p1 at 8h4yS)kkT&*Lk<%WNq2H8`bk=zN`(dNugqLq3{ApUg!2!&vvliP
+0(S5_H*KiMSzrJ#g5`MhEl}VB&hQ;O;ra?B-)s^;%eKnU^Ym#bgpp9!gJUqsq*4A at N@;bkJI&yL>G38
+~FUjk?k8FIqZ8MxnP9MS^TEm5d^1y at 18(E-ju(4PoN)f%HO>w(2qCeckaozsubuKE_L_oL7)oh;$Dob
+o(c5qpA1bDT|;oDXLOM6kPn})j#pz__CCvrhUN5V>7ffN`?x<^?L{$n_$y3Mw$C(#w{z|;7`EoPm8F&
+O<`F at dEt@;7OU at c=Wd+Klaxg?yS>O-PwfFawBWUH>Zl7e1?D^LPIb0V;najx%fF=30ts!!!1c~pOS45
+(yes<KBHJ{!y#i*Wky}RBM<%@Kvj at zHhGlTapGu@BwR4Whca7IcJa_a3aViTZ(-AxY{SS-`YNlm7NyO
+6Wayh1H$%$qc7&#jBWJ)b+qB^2`p?VJ~bYmj-fF;safu6XngE#5`>op78W<0GHVVD>?7ipx2<Y=Ruw5
+SQ0UN&WPzDy8CB=%=cZKM8q7`FjbAP5JQY0QEGbX9GOd=kE3xOqoPd)%|Sj^Skj}W-F{i?d``fkEEZw
+kl+*2(44L{qwm>y`#?*7RJ>eQst&!1^W9bAYpAG3x4TSFb?}kv62#AXV=X62nRbQ(4eMp*WXH8F-lBk
+`B(GFX8Gcd;)j7SAJ(Ae{4w+3HA2R7>MPeQXve0hXgi%ZO1Wkv;CzE543>P)Q=3FXi?{=h^sLar7_K2
+Qckt3ODhU_gB>GSzHxP+o+<Wol|^|D2w?QLSS%)g5=%~aEaNUwuvQpQ<UkBwOfeemMLXLi{bqeEHAa@
+&VST()IJLhvvXY$08Vj{z}-Sg>hvi!Ah7!Sv2kW@=`P?E&RcX_I$iU${B1&BC*rxYWd%WbX_$ci<?f@
+**SpJJzk<0*!0=;jJwn`*L{3OWgj;xcA?_$i#x~ABX>e?_W>&7W|soW4!kDAF%$z5x>hX{#Rb-2Lbt4
+*7#i(0E01##BqeA2$F^gnxSBX1a^D)vVkHI7{Q58Wjjd>G^p9?!2`w&WFTY*t(X~5+7Q&*b%_B6kS}~
+C`Mf!2ZGHh>12oXnGBHrt0(oo>YzUAHm;(_cAU{|Ne!6 at PjsszD_A^f)CIZJVVLz3vrg$q!qTw}$UoG
+~QXrEcFj232;t^RuCTK}P$_o4R-_sUm0-DuVCfVNT`P_Binq`#&qFldRSo_}Nk%-+6~Aw%kqo$6KQEZ
+?cm&Gi<V@~S?8<gd*t3nVvTvtZm>U-<ycZ-g^CBu=5fKyde7q4|il_u<LLVod9e<8|D#?<PXCxXL)eL
+~gU>*5jbJ1K&wd392^Xkd)l{WBzLfd|(xCUeI=k+leq-ceFkN{CV=BZ$4dkALl)*5{Crs)CI3UNButr
+{m|Dzh^y+z{f5)9_>Y|CM at j?k-=AHH{>BXi_YeA4Zs5Ck>c4&izxgfv*KQ!Vf6%u#@ONdo3;!9k<&oW
+;t_XB#S>yIh^*u}_xjxdi{i1doVY9Pz!W+vfR9#Qoo~Ax2rqY8;lE2-$dN)_wlJMeef*$a5-d>pvhva
+t(KEz?GdO^YzLUatUp(;jHRS%wZB;m`>_Z&%kx_vc0b8_pS>qMO)Cp`<nLOC2}cOVtcKBlr3odzX2L^
+H-|Fp51=2Z at hOPkSjTkIYVO=o_8XZ4wZ<B}3ePV?8sAB}|xn*q1Ha_wZp)73JoRm795a%grxlV40plk
+ostZiaoI}%&KKaKBD$<1ND68O!(I0#7kZIrcw%1SAYpd6x`?aR%#-Ae at TzFMRS*AW4OFRH3x#3pMtTQ
+5qJxkYUY<u;z;tY_d$S)SRIRq{>vuak8%<8Q7?+EZ)TiYqZk~y{OX~FKXaiWC8K8t8gM-cQFjQ at rZxB
+_7MNKD;tIDH3WJvm%dIx2qkN6-RY3G3y<ww=t;+mF$qqhhc2NB>Ty$DaLO;Q%xaC1w6?ki#l#YdSEHj
+t*MO-5Pht^?bdkmwT$Fdhi3#>-N2C*r21L*df|H8H6sEOC{gz5*By9N4;-7u|w45u9JPIbB8&mz>394
+_9FQmDN#G)|WW4IVAqY);FQGV|w#F60}}bqY3Ih+NYmUakuvtv9ic(}GV05K%<7#g)XySST>_;BHUeS
+B;AqaxPvZtxMf@;?BAsW1NZw6K>eYvo5Dbglmc9{ALIFB2&CBBp(%b{#LrDeSC`ZO(urU%`1CU#u}27
+uEs+&=4>04{H}$s$_VSz{&bPcAcXMTvg3(IntTRh_g*MXrmlxy9~~*d$S`y#M6#6K{xK5EZ!4yZ*;A9
+aOf`HELytD0^Ce1brAHfYMo&joHAvfioQrKF%`dCINqfl=PK<KZ54*dVMpw!=Z@;fT$&zQEy_-vbEXs
+Equ6=jyR}%4~{N(o!`>H?r?vNjR at fn7q@P&RLD1lNGMbj9GQp7?=aFirz5{0o(hbN^8aC%sfJEB110b
+Q9#vdTObF2bZB(}1S$gO5_=Qx-z6O*_e3Nn`E#!B!WEbWLY4DEJG(0ER=QfPbW`>u#R^1Nm99WFZg<v
+YO(r0+(o&lq^I9#()JAkjjw2e*&~Gqk!6^7@#&W at xFc_S;2w87+DPr^8^$qatc&Hi1Z)SFDF?FPmnCR
+ at qe@kANc)=E&MJ*_<Sq$+H?-#&jKcaQ-9ea{4r?$532~~l`N?9jzT~5*EVJoVBRbA-r6I7Fd769PJoW
+!{c1F*62 at _P_pfch0*e6W3P<=eC;G#D_j;6&KYhReB^Pc;+P8|w4~@yk&|mHBzj|$aX3_-x)TL?ntc%
+R|=KO?8D#ah^-o-Da=W7#(TWDzU)@dJ#GZa4C4Ib==pm}L<KGr at e&p0RAmOZBNz~j$tm36pGc6B9RCX
+^YjWVfIp-t6H{emHvwE{v4jFb}~`5|2sbKIv5^$M-!NG!E<dJc3rwb1d-U*0zVjJsouQRLEhRqw1_iS
+7`L<$!aI(&{jG<)eFskDzX%@+Wlx at 1~*^~S&W_NUuDa7V24(Q__ApaS$Lb!PLV5!5+XNJI;_)`i%@R3
+?72gdYdl=rr%tom7)I*t^RlCD-brw5KQknA(qXl|L=F5bI0vHZ!E~`n;pa#a+Nk5T#5bj!3x|xwH^}H
+2*%9aQtK_xHv%i1UPF#*W*H-KiOrUz7K(1mEt1iEPTx3OqwT?ebU;l}7FZ83R!m4(tG+f1PPNWXj3)?
+(3EDnh*k{->s5$`$2!{csdyXz7wLt5}HFq*HJC+7DD2!4Bj2rxiva1mRu90CkhUoK*KkN{e<G7p)P%e
+}!k`xBkSas`6$IKute7dj_to=A5y8+jK|?(u;^WQg5hf=O`EYqAmB`5SF?^_|Pv&eKUU)3OpLA?%I78
+|Q62S~<#E{zXSxmb_DXvxTrzH=I%<VGbL0!8875dDBbJ?%K0>KGf;9#gyc!D|s7FwCY(sA(iD5NxHrx
+yX#c9kU-Q=UKfU~e>t at FRjac7<?<Rdv$82oH}Rw9o;o&Yl|HQ9D$D~p4=;u*rR;DCUk3-`4=<IBNIl<
+(BO|1nZ4$iD63y&|%Ex<L!5%8SHTA7^2z5pdWv+2rx>9$+D;OhUupvx+D9@)%Aii#0Zvq^S9=`L9C?1
+dg#t4loahpuaF$w3aD<OU#`}1|!!#q`qf1_z;MW+uR`oE2Yzj@&ISop_5-&r?Nz}=n%gJCcPCJ=(aQ4
+B?vkeptEagw2Eg89^@cfqV22VE at yZEzr9T;OpDZxIqi*9$xXsEI(wDCmp%-0vQX0K`$N26KTfU^)n|)
+1mQoo*=Ro$1{MCOagrHmry-lyK0c1sWO2BBD^-x;9$QcBwz4tfx$Qi)&2!iQ5Z~l2HqPmP!fO^S70}|
+jv7pW$P at r635xg2r7h69tSnuzI9jgm*UnAD3Wk3a=9gHi?DmygUK^9)4k~@9Zr$gF`Q5(`hJU!pFQ_K
+HW0muVul at IVdr)()VWU#<HO8%KP?!hyyEOtP1^N}Y`@1WGeq7S;tmyA#%?Hz=f?l4y$O<RIHm}P|;eZ
+<B+1^%DAe0(ZT8D1Py3B424U=ZXe^!|7TzPVq&d95tj|QdW>=nz44QX`MSqZbDqVwc+EPa}}N6=PM9+
+44S at y(_+Q+`_a(syO!i601L+m)9STtA!4APm&mD>pl at P3>~f^>ACugcl_mR9#d_xelqV`n>hvw2?y!+
+7wT^cIuhiiK}l1X}l$Bz#;|5 at qQNKzPXRO$8c at z<3)v(_C(ZM|3-Uy(gK@;AczFPoj1z|b8O%#g3MCn
+HHc_!;j;aHb2JJh_nD|N9))$Jpu04?m))T}aaeV8HRN;|+;l?|p5ANxxroKC(RBQ*FY#sxpAMG_>x8d
+CV+fB>5ne$r*H>sUCyQS`IpbJPU`27{-vIFN_gr>&jK~=pm)E6$!Z^V`=lfad+xgzshG2a-7d{OBK0>
+>Qy<B-;R?)B4g#hrL$@>%cW~}k%si7mLvOGv{u7zN^&Rt$umBkfR;w}FL$$j?cfgxAP#hJ|`J99?_Lz
+UYTL{yM#2Ld&n>DPWgL``{=WZu4Ck4Y(#n|*L4=}p9!9?Y54zSnk^Cv+;}*PVE(iPPqC+CvIl?Zd&ME
+k1Hud5o#jmIW at G-P<YdLfM|@{1|VN3omqg*`~=3IVTd$5C?pyJH}`sm4I6TId at wz-P|9%SrYs0&Siw?
+WTPQG95{S#*&##l*cKk{{UK>v0^<X7AVVc(;{Ym6k=z}5aek;oA*=DtNKZ~Y-8 at gaNbYT8T6v9}{J_N
+OQ8Mq{#h;}pnG`QlM~0pfD5rIy<);34j#v`w at X+;3mb(oLU-m-5R-f9Apkv$G<=R1=wo$wrb9=9(Dt5
+MgI`MzsnRjpOh5cWs(LQ!yzvyLKKC<*jyWaoG3BG#x{^h~n&xgS=Vu4AF#Ay^~7N}(KC7h%Qm|p&%F&
+rmxg8H<Lfk;3td;!UPZ3&=O^Id`j8DesEdq@)C$FM|%H2e?hbE`v=1R3xJQx^=&SKE1J&1x at EUP=Iac
+{o|^64#c71>}I#Ed}<x)K6`E6W}P7k^rvrH)Hzz9}xz!)C;6%Yh;TcAfF9l#TaPVs5OC|uNM3Wm=X+*
+q7wkwFag3&WG%IWl=iP(A`}o2jbGastm9Q&?!MOG?0unBIKtL(bNE at Qz4+0_7goP9%Uyn2r?1clemH7
+z^ns82xk)g)Nh;C$&<}~+WGF5w-NTl7g at PCvT=9W#wgofh5w;I&YpOVPvERU<Z%x|FHeV~{N^KsFE+Z
+aazb%1#8N%D7HRxRe_u3zqjkEZN1WuK?AJA8^sz0Xc@|@w=nASiG(t^GR6WHuW@)9M;-pjDrw*seSDd
+LzO1Al5`Osft1I?C*aHKZgQVdMbWA`M`;ILggqd9yUjJ-8UW`yuzszPSf~okjm$?Hs6*!XmGim|oTPf
+I)5|#vbbgFxhU$EZUupPh~?r)w#ebeWvAR;LDxIhyCMDUA=5fC25*7gs)wM+ujzyMCF^D!Vcy8(aDua
+7~!YUHnx#Tczkpm$4QZAcVN%QNC}=*Ln|6tX&Uw_rYN|bLmIM(yXRBc)6|p=BCD+|M$ut2aGPAVyv_5
+T6{wD4>KL`Lhl^2_n9~)_Y0*&|4C_xFv_aE{m9_LfhF_?!@^ma;4?d1v_UeE?_N8_m<fr5b<zB1~x09
+m@&CMq7EV7g5n{(Pg!f|s^;{LeY3%xUM_x+ynT;7sGH#(Xk{iq^LMtCuVuhfq7rHR8#g$S;p*u&y6A@
+<N^=c&DZZ<()FR`Py%i1hD^+LrF`eSNA&&m?X3cH}!XCKR*jeCWrF at Lx9&aN3(Fj}}3h-4MtEI_y~TT
+%E5UPE`PoSJ}SL)G=zF-<_(~r_L6cKYdrAZ-to4&ae0{%It@(%-U at blW9Ucu=1&#)BtkQy+Vllh3jp#
++u&ax8RO-=<b?Uf6Ef+}2&7SCds{Db at mQo&O!J4mEUGt-<oG)~Kq}90C7~pa=+kr(XU|L68+5_y3;G}
+T*yWOJ)aF3XqZD5?HE5q^f$vTF7BR3h8_5>3r_{LKRk<lHKDx!X2QlO at q$<6FruVd%)blCaOS?ODukL
+!q?Hj>|HIC6U`4Z8EibJ#JIrWxXxOSVUaxPLst9z&d*O!nv;Ew6V`IU%fkIvoDyM at t)V3VFW^n^XTA(
+5ub8;RWT_`a3!Jz;RWVmcZg7uV*7PNejC2%IZMn_N~+rFb1GPBLst$#fzJj^%y7MD0*${f#pFdwKbbb
+8VggHSga!Dt(K;f8JC7cm3b_9|h|FQ%?AS>%V!j?*JYlm!OwHmPi<7!0 at -_p9S+Nf*>)Pq!ARSsb#~b
+>EX2oy at 2o%0w*x2L@%g`q-%y10f}LT1pR_bG`axlPbR=oI6&A1e-jMAc1EqHPpi%xkAZU|(55FqVNT+
+!$0G~^=QRIElKlkW5duK<LJF3+cscJ9#sVv<^)K}5cL`I#?-GGmo!{#Iv`_|Wom$6GAjXH+4~tQ-GJ;
+uMFH*1+fcL+asuRFl;!b`Ac#po%F|8%iGgPE=Ue$th#XnCEm!Cz%U%LPod=8GS2d7KO8NIk;j84cZ4Z
+9e{ktYnjHl7ghP0~N6y}i<}wN+JG-bISHzIT!zaC?bQxsMVmlq&TfA#=q}-<5 at zka>-mzm|o$^2ZfJe
+|O10t{D2eO9m_c8zHq&4+`lRGA5%c-t*K#pq}idc~IFVzdG<d&QL-bqE1aywfFN!sTGHYN$29SEs8O2
+8_AN(NW)U^e6lZzSkMptrU at rIw@ghf$jjjX?fFsGiiS*voOA^pAG^abiqvYZ<!Rm at J!OvVvg+|lK9rK
+wbd-f1b9A^q*+X+g`vz)dvvXK~qYw1_c(y0szu at 82K5JC=ZSHhTdUiX=9YcxdZI$f%+ePeMwBg*@LGJ
+oRg1Dj=@8SuuJmgur9(6e0+iKySM5^0)tlG%o5g6qzDvV3AwdO8IaG{}bisc+d!&n@;1;q3IO3_wQ3N
+ACwx2gBej!N%hKa%b~dpkH(H1h`?4)|*?8tPLx{t;3qAf&dwkA``1eB}!RfXM*8X1Cpgzv#Wh8c}L|H
+d+<pel}ZGQr|;oTQ|gdv_XYX+{>2#edG+qAdieP_XIQV?^yix``|9y)0NZ_^Y>ay at 4N59uO<UfeLY+r
+NZ#k<_3>CZ%GvKZV&|sBKA|Bpx5Mz1A=$z-E5}7~<#y7miuF)lXxT`(Pz{>3goW!jRX<G9%#~vsdbaQ
+!)2CW(p)<lJ#R8nTuww_3)or>GjBFEz^Nu}E$vLy8?qm{~xx at K~6W?5u*~+qef8|<*N3{ZNFVm!;_gR
+y#8J8#0!uD_C0%xaI(fhJG=Jy>Oc4B*)$EPN3b)Vh#yZvhr!+6G&#{iAHOr;wWyQ5sz-|#D1x%YUsCH
+NJevF8*YUuiF0UW~m^r=s6$nVne45h1VVaL-tZ33c++L_0}Kn at M=3C2h9py$c-#F<!(%SrD&OGSoQq8
+~RxX;%oFGzF6+q>$f4<&zk1`p7MPcYQ0Iue}bdy{$Hf1FRov{J$CPY_aiR4)L%^Y2e|(K{KGz={BM2G
+FC7~fP+agYB35ZS3b2`4$Ad5NE|r6HFiEYB&FI=&Mt%y_0Gn}8TxHUA@>>G1nOw)rQQ3!YBMj7BU|bK
+r)^mY#^gptnLG^L~vL*(=G at oc?0qX(FmSt7TKY$D5!0CDUOS(>@!%>i42Oqp({5n)FBUgcZ23#GN4<=
+~PXO^sU)qfR>|6nQbQ^&^hCu(l!n>wkn#Jo+syxLVUJSS~BsM6d2f24~IdmQCAjMD|qJca&rhZanegO
+hfNUmU*#v%M-3oN)}^YGn%;3Ouszm>^%%$X4oW_sBQaK>-jbu>KV&zQK61z_mE9^Lb_$euHrpY=a?y>
++8nq^K1OoB|^Wt#$R0`^s8(9)g?l|FTfI>G378>wma~=ob6eg)3Qwu`O|c)Z`0%Q!1#$Lq=q$+atW at z
+%^|P!@{(Q`{!3OO`f4hnldk6VcB-!36tT5J>?;=%>Mf3x52NE^f`a!!MeQ^9!940?d)Vs;R>EdQQrU4
+UaE8Ll$H)1woKVb%*Xf)J$sJN|c6N{}+ at WamY2#1xS$4!O#|8Syr>7Co9o-*$TBoTa9c$iMY4Q`Nimw
+9E2;yp1&`jlefZuJrM>297nN;Y#cDi#HTfK9tLtD(dCwKC_A#gnO)g>*CKLx$ycCga!r6`A- at NrLv+w
+PPnToy?57?>=V6Vuijx3fqTyhSwj#13r2N(X$4-(h9&Yi;9aTc;VP2Koy8g$RSJhw-x>HlhB=dcVNKr
+{CE7m0u{^PW~b5Ek8Q_^7h1qt at Hw#sW+KaIwy)&1 at GnH4^=z#y+8GL8GyF2YYWZFb3-UwjJt#n%i6#f
+V;3!t{r&9(6~w9X%~0h_ at mB}jWUeF~uKeVk0R7Gv=C8gl(C>U<{_6Vz{rU^ju3l0<E0sg6UVC at fu@_p
+W?qCGNw`G*Q5_3N7sMZp8xg3P95qs?(?T68f2p4OV`}vTBnT%vc3T;C{J18FJVI8wEDHt(NSd)cte1_
+@%varcf6*y;_oR_=dHfGii-tx<BRk<qjne3Jo;La%`3_QDEN1MCXws5crQ%QD01uu^lVmeKAQ(omGg7
+I#TKDJ2|Dcj8{*;3Sf_AgM4120yQC2o@~-K~q!%yGipni|RWhZaV(;v6DbDk4}=1e@$GqPY;q(r901u
+Q`hhRQgPM+bMlz_0c%NbG$p;7UmtbCq_R6roB63I~@;<>jk%TXK<y?)j9I|lr&9yyqW<*Wq8W-6MeN=
+<xJy)pN<>f{2K<>@5y<Q=l}Kcz~4W~4<&-XIKj8114jsoMrn*DDVQcnFnxjsjqfP3iry&(qhaP#r8}^
+2TwN$B91sg^9TGugKx2kS at 9Oo18z32|0-!%JJ6ey%Ge8!W&>l}g_ at Au<mauhz1Ocz@?<A<K)7hGuSTh
+bk)tDix!hT^&R0L8H2o5^x7;2qFk%F#4(5siPO0~6dK3+TXz~?O=i~%MS(_kIw%9D_FFvYT_g%5$lsb
+4V at z68vq*nCYQC~!91T9r*C&ONen)}s4xSFt;;C>FL-?GK>nH^04=pns)8 at aC5EU#JiORnOOnO6ngK0
+?C4n;*)N+Pnb$E8enSRTb1BLh`ww*iukue^dH~6pIsvKt84t#B|^Wt#$R0`^y4+A6>D)t^8V{mIUpY{
+EQ?hOvt$?Kva$P+CM_=oCo0Vx8<HMQA9NSw(5O0hCpcEwoN((}A2^uf_BaDyVXYbGBF&EE2FrH4!4(4
+Wj+RqUNjF%7lHA at g{MmXONL7*XZOqdH?=^Af-F1Vwl;eyp7=FD|lz!x%?b<)~Ep|d2XCq0JEEv+#mk_
+&IZk{i=rKZH?nEi(R4)l%q`uj(9G_S0{HEboa)M&=p?S*A*_j=$}zNI`_V(Z=JCbUp)Rq_(KGV<;`4^
+F%b*jGAtZ9XI8!Pv_iNl<QV#k!1U&`y-hS;xsXWmdVpkB at yiK(dgr?v_f`J&UweY)_+15RW;fw{)rtS
+Knh=XP*YY|8`boehXAc2V?8Vg1HXt;T=c);r;s;yM4T2*ImASiJ~}xz$i`O6!obb7fwJ-l%}BE38Y97
+Fkwq*&`uMtLZ2lJi`IAyj1i|kFQ~$x_PM;qmKSEchJ&C(XKi9$-d+g;a-`InDNR=ww<W#<X1`z}>(6}
+Q7*Kl!-u&d+kxc#r&A<zgT<zqd7`!%tQ%DLn0^^Yc<X)H8d%U{a5pSa0bz(Re1%QIc6f{7uV}CI8mq8
+p0@~zLWb5W(eElHwged-BU1nze}8xUKEj$y4XOMqXg;uy;B1F$EdTD}eIj>(bpxP`<u^EZXYoj9fzba
+a at b4cmLe!bjnwcV+ZM3o(z*QQRBs_)%DtoaJk!!{VgQ?D-?igg~6hTcR(?&1E5MY=WkBToPmK5SJM9P
+`wR5jOJco2%Rx6JgBN)2C`~;N09LaBYxgCHrGF0<F76e`qef5>Jp(}UE{AV5n8YDZxmDS=dBIPx at 61)
+%c+qH-I*CL4>^OuhdjHYk>kzi at zxuP-k!-<rqOlW?cr`hY;><D+qRD$m20FfkK)cNWKn2(6a(7Hx5)5
+b+jFwJpVLhiyRT9ac8S6J&XuaY1Wq-=+0GaBMoBY~yoAk=C(qK)aOerAvpD3o>DMG(+=zZ)WUG$Kfs`
+eAXt%_H(aw2RC2H_eBs32WS=UFW?aYYq=7hwMM8^qI;Ma)OQ#yC&NJI8pHKon7?q6}?YK at 2&gvVPbqz
+ZY-cd)JnTw<nqFJJABognW{jJqy+8TuI`E*ExiYHAzW*inaz*%cd{rxckQp4}4p!VUTm+uN>%bLy2Mv
+bC2}=&*3@$A=LKmW=7~XGSFV_hju`qSmh76zP!Sup)S(4E8GX{Ef>Bi2z#f at 8dD2;v6~%B!MrjKHa^f
+!xks at H(|L1vtsl06CFd81=cVAVrTP{K0oNASjweiiyk^ma_#GuXWIScSe!De+m3-E;`Z)FGmk6B*v;X
+ry)X-v^wGo8rv~W^dbmmm&DeT>A#l7CbK_3L;n0oEZ8SH=xbX at LW27gq4plzJ5@s3U{k22jQyA_8DA1
+>8MakC#M}^8^-)Xf at gdD~bgpM*C5#7$s65(vG*C8#ghsdPW3lcvUbhKpe72FGm at 4INLUGE1S6CQMvX1
+psMkic!nIoiyfy6w{LbiZ2XA>B8Hr5>}_I5b$Y$BDz3qtS8`o#-gp8)-Dv#wtKl^>DV%o0E%)mvo@|J
+Nbg+Jzk(=dhbnwPS0a|qDFDl_ooM9Loh?5MI^=<&rJ8N6duJO*zKMY+;YBO{BEsu|9?8-5<|Rq<vOqX
+BWv$p`2D~CANo;P8+X^_CJ03MYui3AAMu6gt%**aMZSg9|2e1oP9XeO`+f_{pZn^sNmL*}LO>VH0-2x
+}cZ~(eRpo?Zzyu47mLdO<ejc{u8Hf at R95mSgnG^%|1wFPINQh!<QwsxwI3rKNFd85cCRW?~pH0t;)>Q
+#P)Y{<7tX(bS8t`B%+EOS$dT{n=ZTVfBaDW5<+fne^IJ4Gk^W_q#)mMM at o6TduD1K?v1;Up0n}q7;b<
+X04qT$XJ#0E0>uMYN!3wy#5hQCfsb+HBreIB3=czoga<pCG<O1v3- at nM;9hTbzPfNcY*@FPBX&u=0Q$
+t&MxyjlxBy+bNy2*GHs!|_0C%$s at ZcN+nu20ygPI1M{#N4ENClTjp7T7w2vdhe5wOaeq4 at o5PRVEU<x
+lWX(%w1jNekNJM8_m;w0+et;B8d;*z_#3T}?FDZ+P|(%$o5RkbwdFydwv?2`+FsaP^p4M>RxO7ciyvH
+N=N at iVafQt*oNR6xvOiVZ20LN;#<@kKBSN-uYw@<+Z#~ZnicOtZ)SjD*hjsO={`m4^eDJOXb-?OYJEU
+Q)S5>35FT}%d83h-6Xg+nFbWO!aDAZhsKChN@@|DY=iZ?#O$8y+=xv*))B*P}*>EJSVFuW>E;qaQd{+
+(Fv0f&}?rPI{GzH8Vn$h2BXB$=bm6=vge81MJI=Q)SiXSQSB_rB!G{Hu$?^X^s)5 at bwvld=L)r{uuGm
+1IfBM8F*@;svSh;zWPCydCxI2|40%)@d_>+#PZ|w0F%v836)$wRSV4Eq~j_<>9!QU$%TO-1&5Y>+goa
+eplWUydC4B!-2_oXuo^)iSM4$;FWseq5Z7B`P1?y3(L??s*Tt4=5pVN+~t%UxbU8`4w2L6X>a-W<8U>
+)yri<rW2^Yk!*{T<-{Ug9zy>+BrKs%5!(5{isdi8J;&OL>37zFE$Hg<opDg8IkA`%T!>;R`EQD?ZQl1
+Z?Jvy_dPN!g}XT4_c5&J32>_E4b;i&Z)@weyZLN}+n*qQxh_rP#ZngmCPAyMn&;S>@amW8_=8l4`u=?
+GhQGa#Gho- at Uk3#QA(Z<W`z%1QZ9B!2yrC}P6y1{Q80t0Z>kytPZe6qozgw8U+L&$;C79{zq>p2)~DH
+liN4kx(S<hB{@Ue?*L3cxd*F&g>yiNAOs!ZUZqMHA5StNZSf at LHAar-L*4&ef5`8Jv`DSmj3PdZ?7(#
+_sjoF-kWT>s%=?<eZJ!M6)!|xydISRAwZOp7~Y|-Q2`Rgx5UW!h4fCgyyqVOm2AxH6n5>rb6<EwWFzm
+mc1%Ll!uDKq?YZVUDR!bJ(?^NPIx{D+Z}ll3p8=1o>uq`zS>FHgZbw0E-?rafpKbgOI&FM?bbm_V{qH
+=^2Mqq^7(ap_O;QL=Qxr`h2!<g912Zs8!vsMv2tuP6fzufBrAlZ)6o81x+FO<a#g?ETlLUrY1ip5PLj
+lD^5s+^CMF$#!0cKqR0vIAFoq1~(L#)P=3r5la-4;^3 at YUu25C%my%PwKyI{vG=nbln#T}3 at WJ&domU
+?ec20Ja#bFqlTbY~likz_pxOc`Uh>&a6%0K+2K^SPeu<B$%NDe3b&N*3;j*nF}-+(EH|Fg3ol2Y1~>5
+8Q%$MD%<MLNt<6;Srp};y~IV~Egu8$h(qH20)_|wT>X$4>m0GtUy)o-P;iQ`G0%Q?Sa8Hb<Jk`=^&Pl
+&JkbSaQApTW-w<?p{fb(>hJ4|>UDZPS(vJ<i<+tzlb at D^W%lov1Y}%k6^u1B74&=X%2*UVT7pyl|%=z
+0gLU(pR68yO!2ei8Ru4G;!1^L?%ogcKqqh>Dwz>qA#fRE;|!sn%GvtY^zS%$4aVc$C4F0fo5ZBKVCo0
+AqM`t+p_6*G9vOcCl;nw<^%4}H?ee5`+lmKU{+dJA~RU5M^MSKs#*@-eqo;{G$8ZYOxNaQ2STdyIhH`
+W}qjUf#?Xl{!cpLFH7}@SOdE{FCTeF;!07XhEL$d{&zb+fMz1jGg<dc*OUe_(0H5xOij6b|o^md&*eW
+cN$k|I<yM%mSe+yzV#^z4GgBgRQu5Tb^c_f;>uV$!n#ZqV0h2wqpvapZH<rg6$&u{R}uEA1ZB=qC(N5
+mw}Tq<)mx6ZpE`v_xAAn{2lx7tnq`-um$RnFO`u`i6TXmYni86$9i at EFy!`Dndc|JKAY7#7j?Yg^EEU
+$UZ4 at z<?NF*!pPQp$UdLQHTujc|AKDv7sObhr9c}RH(Vm9<hV%@CbC`9wO5wodSB64Q5;+c?b#Zy7&z
+?50b$DmAh&VX&pG#Yzzv36(E!6K(26QL47PdE=K9 at F1xWDB$bAWy<N&QO|sp2!=4o^9J9Erg-M#w&D*
+MWndlUZ|{o5{+mUESgOSkCYgQX#KbI91F`X*8`eryNx_nCZ(4&b~sfbJGfi(*A`wf<l at u6I%54%1<ad
+a!nj-o;;TQT_6V+oo6^ArW+U2EGAp{=9M9rUB!!IPD8I_uXjAxn^d1^@~zd7dDp};esF3#+CH`WEvnD
+*!RI;h;goZkIa11!AvGNFTd_L_P_BC>ONB+Q8jXIxT1F=4lK47VQZXOX+KCl=wr)GA&Uh?aP7hBs6Yr
+k|F%?JF_X}uO;w(N+wSE;Z*J`xmj<v2R)hu_ZJUwvKrQJ<@*+_w1UtH=GJ<&~i*4zuF!!O(~_t5r0rF
+;he^+c{#M2~BiM1LfIv*#jfuRnNQe*5gu$1Az~whsSU5cHqe%?Awsau+`(hba_6QG&ri#VQS>1df3jT
+7)4GdI4gbz|aNvzZCzh#?D}h3SC{95g1IXkrbE-Td)hXZ9{?ThDZR`C0`ff0HmbXvKtH(?L-ks8Z&QI
+G$~+~SOm}=_-U at yHOpSX#252-_*YyNTPN3+?HAGu9H7>^(*Oo at YRTG;p2oq{8 at hIa3z5GEYbU#f%r0C
+tSSR2X90rqa2w=M)B!~bk6YHhLzwPuc-xtcn-M-m4SgbbT1jQJt^<b|3*xan46UHxR%Lgd>guwRB9lt
+kkj~rgyBMX=e{z3+SG;$UPL|-WB1clhb{w7X~CG)9S<{)MtiPgS7csdD8ltR$m{Rd=b0WzQJGHRF^@=
+sdk+lZ4ibsIMHH?_<M!s-qSziD_C{2gFNeg3`-0t+=+`IIZpJ<Sr|CUMqUnw*bMRvt-f*Y}@Xv!Rbu0
+cYaK*1`luSL2iq1U~$Dc7Sp(SeSjxo=GlpgD%+q1<D&0$?aY22Kvmue&sItm9_`^LEO_%tl(wmmu|3}
+JnK(!uy?nEY?}fv`!1gL$4VDna`V_Ie0Y=#9Z}FH^fb1P7*8D0(Nuk%PvLl$VvNiW8!oLLmlnZ-Kz22
+n?Az|J!3i3 at wKo3b=jnj^-gyHZwC<I<Ie9#viTj;xpBT`TERRl0Gz+EFulHDA&TyOEr``AzkCmACHG3
+PQn|7aqkcD35cyeUJ-fwr0K0PyAf!$s92Z<#74eQH%5Q>R>?j0*EBh%XM3rs$FoKqHvg&!#jhAw3vGQ
+qJ!{5_1f=0FW{h{yJ$@w<DlEtp$ANeaAADX~qO>$0xA;DqMwkN4B2yx&HML}!w*9#!x{sMPaV3dx^D-
++C|JehkS5`>yRVF)-hv&0PCKM+?w#_N}wK%6>Oe(pX87S4|H$gVLC&0p&1mAH9FghbBi3C{sq*@--gJ
+A2(Db<-3p<i?QgrJV^8VgY;a!j at L(01eDCg0(*qMq|r-o6%FsrIhNM}m?k=1mWOIraM|!~eIZ>Xc5Rv
+qp0=F{(n&uxqR+?cPkrb=U&8X&>>}6K8p<iz4 at Od%0v=yiUY<^oT|xq$Wn-4hSqW!188@>A4Bn%xA+l
+k{5fE5`G`WeDP1ZNLj+J2Wn`DiOjRxVyO4-}{xAkW5`)$1o8xC9xv69I8tdO(IEyPXk%1ShwWNZeOE9
+`Pt<SSTl*&qU+ci=!vWCgQFZT%ej<qFFwMgw;PM|6kf43-^UvgJV1z$WI~dvIy%B}D5AE*oXb2Fta^E
+I5Pi{Zt2Vq#FDVzz$>uT>Fg`u3-5U0!Li-G=K$%fqk)Z#Kr at Mu{^%)fbGGhCF_nOu;B|V4_FRic^aHq
+0I at rbJ!R}mQ)K0%S}Tj#Aq(N<=bmL at vi#V;e88Zup0H2}xUw0m%X!_P1H<~Co&#7njz11*dq)|582 at U
+meB%aS`7*S14&pMOJ{L at TJVIbEKkj55Sc_3Ry59liAZpA4INQt5x^>$>`!DFDxXh92WytP};6&t6TYc
+^Ssz|4|`y?*-gAdu|$w8u2KmCSbfBvgGRq at O%<VhQpce@{fyRA_6j%43Z3mPcx2Q>NtG=@R{cFmnJD`
+M`P%AY|6U<&jBDmLoF3#eG{#r8n6p_r|=d=p$9VdkHaOOd+wi6~9X0&~a$X?Y})%s#uP%f$&b_bI|J5
+i|F~%jswAdJd{s;HFO`Q-M6^*GJuztozOK at P}_p5l7hP at o^`xHuS-`dGrTp1Dx=keZG;&`pX-*z`hN=
+5y^!+<{~>E%Jv20H|d2Im=x49KOC1}<0pnPlH5MF{5;pY(Z(GcqMewn4938Y(XW|^t~ssbmnWN2&oZl
+R6@&Id87{N9gZv^j2B*vJ)<jvgHBj|KyUOW35Y3j{DmUz$+>rEDB5EX#`xDM at cH(lsWpidnvyp3v>f3
+s+yCJsOsS<flM`Vj9xqKH1jh(KyOP5f+P at ynFX6U}1GozC|4?m1?7&3*o4IrA#@OE}3Uc-wzq;w>mHY
+bK40%j!dC$D)u#QIck`?NPYt3fnIQ01OyMO+&3PEIW-cm2aHSFt$B)yeZagis%C>g^4Ee{?sxS8;OK>
+_f>;l?}6}L;RR181EI0>s%s=-a^_@)AX5ghoWF3O5}P13F_SBY_hUiyS^WKF3uw1*cF^G4#!M~iJ0$4
+U*X+<LhlFUby*uMgh9xQX1ex8_gT&N^(x=AdhZ|qR0cqUl6 at FuC>(_uj6{*O#Qsm at AXp3C0}|A_1I0c
+HT+={<76ME^f&3Q<=AMW(?oPk%Hv_8u5 at 1<RV!)o3CPA=Hu3eykSv~yT7m#@CIgNu-gk@(8P}Kc`93&
+XvE5KDQ1iOw`W`Way6D)!M!W*KMwSX)h1#)(v>JSGqJ$$vi$Kh2%l7cBXWNkFPTvti}TiO6rCjK@(2g
+m{YogD1hBNgF;c%0mF`(=Y@!Tj7H+P5`J0e)3$;4iTC^4C%K$%%o3v-Sg7&@}#|&>SUlFfRqYPfURtc
+|>!xLHAaz$LD2({%Kyys+CbJSrhuuAoH$u4NeFVV%9C1zmI9`ungmG=&_9Ne~z at Fe;}h*f}^}g`e4>&
+x5;v<>kriZY={kI?c_@$6)ETAkjcx{Wlsc?bj-(tbgEwTB|KFnZubSlV1-_6ERL#`d7!!^ymZ8D9U?Y
+cg78U}#&&`-Gddc3)`v%VlRumZ_V7f$g?c8<hA~S{|57tpZ9K6>>!uqYlVY8U(zp?m;<;luKr@$i9<s
+e%v-^dQsq##WFH9`U-0Zy5Js?|hRPdphn5{WsH4eY>5kI^8aL(|egi#YhFnE#<+TkGGw`EDY;-$)jHg
+bChb$KPl_7>%J4a-szeOGz!sh0TVGDh`rCPak`QE1;~^&|7t-iXV?(a?6azBwN|OUg>lYSdJDl;dzkZ
+rJfkp4c$`Zeuzu;Y#(_Qd80s+n7#c_Ppi4GI?@)Z^zVE0^`I1^4a%Rb~|`D;p{(HS;`I7M1OpYzw4v^
+Cm!Q0tJrNnmrG>5-P^}s+0Tm-f8r&3AqyK3JY4I{7`sHb`cL|(AM4<AQ%kB=M$P*+zoJq?ZjY?6Rcl1
+Qdqf{>0^!1>4W2s6;{}^^4uu|ByUo!MU*${fZ!dBNR%r)$n!AnCyn>5OY!O*uFh|JcYFq;9;fO4cV>W
+YCvuh(LjRHd8YwhY71&Kzae{r1pdFbQH8%oN3V6Un~s``24Y-GIAh+GTiaAEF|X!4it`Gn+C&fUn{nc
+Nw7j!`70cb5p_X|b5wg|doV{L^yQPeMpi1VbDhdxjSztCSi&)`LwBP!F5Uz=!Muafh~id3tg6xuX at yu
+kG=0NVo72l}%3eMBAWjjm__Yc|D}Cw>fZzx-|#rG|9B+FR at Q0zY+pH$LZ!=NBrr;Z|_eyJU=&%fB4JN
+js=i}<k@#op8Vk?by8iMZ%HrEA@@%ovJyysIe!E1?Id~^aqvmoCy!4^_rG+<ANcs|o&Mz3PJgLSU+cl
+~;O`6qvQY3U*dW%4ADjYpW+ at CLnaHYJhv~09PzeBtU{e?vyCJLHDG`H7v1L!7q1)PtZ2?dW2FOT9AQ!
+eE=0|_GKZ`EcCTa`5607 at qw07U6)<j&eTD>oO4Bq<E1YqinT61P019D?b0zh-YM4(cK*PPxuy+*CRsu
+T?5D!;?W7C5nAlW#(g{g+c!OX&P_WWDT4j3AA>egyoEC3#3J>t!IhnJ0Ojf9hYMy|%wi-*saknRN1a#
+Pv^O4KyC#Wfseb6Sk|cyIh8!k0e>}i=EmZK{W&#qyWvi;Z%b at v&1T_blxTBAInzB`LeA1^JPHbI{q`4
+v1(QRGnWCa+H^trXB@~MJgFhL(%p6k(S`DWrbWXf!r6=MI|W*z>$Tg$A!?UW!!<XxW|gbsBkH+M_L>o
+}QvY<3$ml5NspdRn>f7U$x-X;1-ImB9YWl09PHwwdVBXrw899w)vvnP|=Qg at L^KCh>r{IO4*^FrA at PH
+mWAwargk`a!2XD46FaK+yFVeondxR+m8w@#x<q<7|pD{HjBKMJSU(1aw at YfvCIr0X3?AtU0(kC2{af@
+-CU)>-b(HMNc3dsKj>5?f?fJW%a~aJUQYJNh{}$xR41*9bE2uN at Mk$AI0O2xFHwvY$`;9gTq5h}+K0H
+&V<$gT7{zcr0(sM9l#^J6>6L9CNzLP(KD}SlzZiwqW^Gel`wR6+T~{gN$iboUi>39n@}m#@hTnbtUow
+D*<d=aB=qwwaAy&Fl%4FTC)6yQ&+^)KEy2%40z{wbSCbP930bJhNCG(UYaJOHm9r|pNOV06hX4#qq{-
+<J|{b;cgeXrTNoac*^8Fvov)epH0SAj(BeX`&xO(#doQ#vwtA~J{Uy at -TugSi08-}Lx!!uDCT^ZBdei
+LbX<XT3d3^FWMBh{J!?@zDLO*<Jo9)`Ffln|~K8M+<{6;v`5LxW<$}mUeg2P=Jy>$1!6ZJ=1lu`bw>k
+>bzyF%DG$j)^0Ge<ByF2z%f9L5b^yxI*khL4N>v<1qD>z-oD(@U2gxa8`L#g+P{L~`oLoU+i8jN<gTx
+4PHl#F^bS173PW<3fCclEz89=C{KvDb8iX$Vble7l8jKFp;0ag@>&O^rMu*_~C=K2gzq{_t!W3#`nJ5
+<fnQp8Y3teLn#_37?MV5io$6eBfl=eLO~af1>$H56fcns;7|1GjFJRvl{g0K4bl`~UGlZfH<1FxV?qF
+o4Aa#$jRrWjP(9%EMge&R0MP*G34wSr1an9jzP$Zavyru&AWngg%fc%YW>t)=VnpEK#sDqk0=&yQ3$T
+JIp8#Om0<U2VW{H6Ea>ecC5*9{?V!)+!A-fm@=A44xL);Z8G_Kzi8i(cY8~n!!`00LdvoGg`j9I*B+~
+u1(;b>xY0m?Do?2O+!SNzZuLl8$_NKShYH@`!{o0b6j5EFd2^HxUvqf5t|o%i@@*|(#wHC+Fhql1I58
+K{3ol)upm`ej+BpC7lht`iW&AE$nN$mR7simlN|!PP{GX*nY+h-bn|y%5EC14RrZJsm{MiM_qhP)Kl1
+Pw;iNp*<ZI+c`)Z>6D2uC8>=aB0g)+qbV`Mt3>!>L$VZphY6*YP@{H4^K78SA;dhRK_^H)^w}W#2R8N
+gkCu>%o`cIk)Yy)CZjI#ll=_Co7?C|N&E7H}m<2R_$?3TK<pfl5gnF#gZch2Ysx(AAnAj>sOEb|uKFZ
+hAU7=cp2R_a_J=&YTe~vEr;e~|@mGH-6I_WdC>)D$CH#hsp&-X{%jX^XRE*C#Kr#RcbLu+`X40(QEwt
+r?;VH!hf$Q&kS{&<_&3v{;K_GW%_IIA^9D*hQYA at oUnkMeS-C*9O3;v{+HKAFk>ncK+V&FuCgXKo0f4
+A0KAJ3BymLHslaq7}sOUUJ<3WJ<a^cr#@Te&lr)Z#7SW-pznwWiXe=Ghlazi;@foIjckFDE>*SspB0b
+cZV}~{wlWuy}Op4sNq^(ca~B6>3*ZM!9sxC>%i6wM>}^aDRVEs4JF^B+(|to$NhZS1sho_q0 at aq!Su)
+|WoN)<D5A5kMT2b+AzKjIc|P3FzOpfJr at Cf06zBJQy0}O&RgB2QNA3unjhbk2PCf=`&JU4$bki-1R)N
+6wB7ti44ckmpn4`G?mrM)G_l0}G%w~RV8ny4xD|Bt5hufbpKV=C=GP3I2IBv$c*u|h)MmjD)IS=$}s~
+IEB9m<QvZJaYE?v+RUJU*95g at wsjD!6=uix{<|Xudi<kWF;<Vm>1qKD at ocvfOpIA@j4{9`0*+x>e&Tz
+C<Q>hRYLlIv^*_+8bh&<@iCfs?#~_)j%;c!uzX=em;M;Sv~|SkBSx^#b5vHfB7zMII7BLkCLAXhJV)c
+|L1r10f)a`_a_|%%@8C^(+en47=h3XNf0mw6U%5vEDKPIgmLOi18`(bMZ#+nE0hG<1mH~;1HE9Htm#e
+yBszh*G5mY at wUBYasRg#+wWlYQ00qYKFA;*A>w>upNnCK2Sgp^16Uy4YVu9lYGE?{$Fu735fCQTXH*y
+T5OhF2C?GX-oeW##IkX$ixd9i at y0``DguBNNlDx*jV0PVyo$4J(!@3PKvbqn;yzZEj>I*=(PzPAqDMF
+r!#arB^yCBmXAu2<>yYXk7)v)!5N&EFXipACVD=1ADY*BBMw84z%B;)HO*J22k@`9F*5HRa@)He7w_9
+rBeuDYQx at 1aSf?$Tw at V_)UxWX_>aeKXvG~&R{kSdY=wc1 at 0yUviJ1S9J|=u%JRUl2&DaoV)#%<e6Ls-
+hTQkK17v?EroZet_3k#xe}%<wMNioZ#{3G#naJX{d!(*dSO_}e(`YYaFzGaC3{SL6qdGhdVjh&~J>Ri
+1WKVv`yLzYi#C_6TfjM!vlAZ_UX{N+BzAL4K9k}y^A8|IQj at ukPOTG2rZt&PEEt^9{DNi+K?|DmU<UO
+ULmRi)#9FV7E%d1?4Gd|zL=U2UTP$o_gJ9qh$j9yM+pS?8f3<>_#(U7BcNox{`W4t4-Gc)kgoFjTI6t
+BB6;_jJO&m1qfwv34m4Cggf+ZuY#E(!uUT-*7n{}|0vPF0bEJhXgIm?qy>l|kJ%7N<*^usI*~@{FL5r
+!kkM%GhV&QH2Yf?V)sz?wfOr&xq5X;2^%@tWmi~4ypTecetmwD_mJH=f5xo?@GVZw;Lb!VB=)oA3>V3
+P?uS|q&C^dgK(I~xy93rzRt3JPx0JsoZYQShuDmynzK1Cy0io<9e4EZ9>vMV-acLEBqJNqF-G$h7a>=
+k=AphGTc%@j at _4zU^@Zv7w~;Q)N=!ncQICB}9AS=3LcV7GgAKI~tn32UWNmcT+TdE7=$zah6gP6Xc-r
+PAosh!h1~LDr<$caIF`eg|!sD8&+MzcYikmZPberQPkNjk~UT5oJXCt1E)3klPm^?Vdtwi;>bHNOMbF
+PL9i79AUv_7}+yy6Dw#Zz5k9imNUt$4`z{!&M$$K_RWOrO|x>o%p33+KYWBBfAxI$|{w(N@@PQe#gL7
+c%=+TyfW=?C0VN4qq6n-_lRX-e>i0*tx_37}r(z;=TGb7Jsy1H_VIZPgj{`%~9j&;b5-CNc-<SyIfXd
+BZ)gjON_Hb^_;cqw1W)swNF!Zj|=-VA?=RbEuSyquWVVDKQulx1Q)5e<IUSYQ;CC~uNqZ&1KFb-j7WE
+1-w_?VJNoTbZ93bOE$Mn6?<XVS4p)n*FVd*p&utU7!}acyml`?_{>^KTLeVTS$<%NjW=hj-zN<!t`_t
+t?$0y{7o}7)~$K at 5(O`eyf<nh|mEYl0s5!#>ot1DYx%Z`5PT^Z9iYd0%1YZ^SwYQ5JGd*h?Cdq0KGxU
+qY-GKZcfPCQ>!{=sjd?3Q9=iIJP<(BJLCHIOidYY}vjVR-JO#fSpeeGoo$EiN1JsGpzVqpWW{y3b6WM
+WK at 1Qu-6`dGQ)Q51a4|nm}03EF#0pMxrupu+l)iw)qD02cM6q5G#X)wO^RcL(&@(BA&HM*1Rg9k|RHr
+UP_dq7EborBvFo}{Y+uxYPUNaDlE>EgU#29x+5O6^jKKf)8(Kms$q&disQbw8cQ at HVvtJ2eBP!!v4lq
+U3K)A`Jh3)J&7P)cAk>{M$p?WdLc7v!Xj__O8kRRT9?^T04I9oHGwqV-RSqlFE?Q!!t0YSY^HPfhMqE
+y0ftS|tc0*^u+MqKe-H_sOMHhZxCzw~61Bu0Wg_T--mMNp0x+7`J`9+mpvrlicw(pva99o^f=eCUDh|
+r0Nut%jBSYQSrHYuLwp2Fvj40sAR9<+WFroDj`t<x9+$BT-OV^dbO=4p$Lv$+wVTsJq0a>ncuezZsU&
+S$kwUS(YLhrgcGaQ^+jasTmuJFNPLE2^ychx+gTPX%Hr5N1`uA967_N&kl({KtQ<gXus1HTsW#?f&Cm
+|M=S<_P_tz<KO?S`2$-bJ!g4c6;tvDSJXw*CG{UKkczL`Yke(?>JRo2{Ez?M|Hr>Rn&1!h`FJ+ZWe49
+6yhMX;{p^DJ53x?F{&8)WZI(T#kK)#^yZC7jV%zma|L_0S{rkTyyIIeAs|L$HznyhAEy1CdJgQ_aJ|$
+!Re{i`UQM2<eV}$+7$VC4#;^@DOJpL~u2mf&8%cA9Dj{Nfa-_~b#%UxJ at v%CzEe;G;a<8}A(0^FMS9r
+2Hk7t3w>xj)@k(RLDp+5IIprC0l&hyW=gCIZcK5)w at 0lM&DfN9f-Jpi%fT+Fl}de9icf$SPx?Kx9thU
+ at B*clb2YXjDfTOMnUchT`h}|RWQK(Dk+uVAeV*VV4`N(G9cFWISi0H$7==*qt=Yn>ik2lo`k??kpa^?
+@#<&1oPPj=h#oXDScTNsDq;W^82mQc-hp|S?KfW_PW;-jkZ0}gbGT|lnw1T^cb9yDWn}-fCw&{VQSDz
+#fLw=CHCi*b`%n)YYe#s=`$urDYen4Opirv&2=zKe_G at Kl)d5PpLW#Ktr)~*V_xb2E at Oaow;YrMF%$p
+XZLO`cfPctI3vj at l%cL&YQ2J6H3OkliF_GVBfWGw-6fLT+B61QODP~YYbOPD^y64Qm~?Y4yO6Lg7AX{
+^~})F3%1(upwZ7Hb9_(FVO9$@LDV>%QAhym11l>htjIW-jVY(3 at Va&m(NDXwnyg at bJ&Ko912z`@>{S+
+_?iW^5cPXO}G2lX=c*~3IQAA4^|N at w8WNbGCX;p<ToGpOm{iAVs|=<-Ff)|H+OejZsI|BNpPmkAB<yW
+ajjfJleO45{t#y`%fxTXKyFQ)KbbP_lo0~X2=6*`O at QP2(%x!t?KaAkmy_28&Q8`u_k%=jJaB)S{+68
+F%xvlo3QoxEFLyj{)_J8z*u350<<hvQk#{ZTET_Nk7aDVj&wB*iyu(6iKJE#$+?3H4IO*dK9}%yM&pO
+B(?!sk<Yx<|DAM0}>_6vRC;1C^OK~t^I3H0NGVx5S2`Bvb88s~u;z>z%5?K#W&feQ{pV57S}w%=|(^m
+g}mbFy+eq+YJCPMT`8OHTRFBbc5ewBkYRb{1z(?>k*CX`uWEw0vD3Z0oUHrxKiRy?-{BheQ at zbj*{;9
+xwFrpe;Y(=DN!R7Ig+4+UyLz8R)O3MT-VGY)4)(x+9w2oGV#yRixrMl!Z8%%yURvh at B!WNl$yN4tVn=
+=7t!&sGd6M$yK|Syf2|5>6uELxAZ9qFOuw`lL{G>)sWrDZVlre9u5aK?xq)Wc;wM07re7 at n)7pX$dR#
+at(_qB5|W3(hDPYSm^<CsfYN=PhKB}MZn}A+5iOGLn;`SHA~8JV=VN2hxOh8lx at sb5mDnVSWmu$fPo^
+?Q%0?Za+Sl$xyuF=o at l)9`X)fPH!>U>NaP!n{H*{C|l^e&1+Gn_78arOCU3PG9wALJp&Gi7~jq8i?@y
+6T7B-m at h<Xj@<w1h`eI5v)OL8zl3rv-Po7fhD*&GvdY;0YUKoz7;aB0y_e6jlaP_*oV6x)kzs*`hc0d
+bmGdyX{RZ+n`sAQu#@W0)5k>d}`?QK_q at Do#YUDQ#D6OHyUhzQ%+6h!36v=L#OVBWe}Sm+4$0&^u<4L
+oe(b=>nQ%ddPow=vPipsyz&byP(3tEMjAMiWN=eLG1oTHB~iyDbs0X086$RFf9cWXD_RJ{=@A{Ai8+{
+Nsx^9b59`yQLDchXnN!>hml8`JS{54j<*(%>D at L|lmBn#>TO2pmW1}v#CrZRI-+DGK+FgFh51g?)iHC
+h6h*zgAgv+JkAC+;d>|)airf4Vb>3YB;KhVk|kD{S#&x9dtreSZu!A21*jcB2(zS$#pREzJLGZ0p;qA
+x$xM42xXIX_Liy%^kH<>rtmHlG%z)}|<@Z?yVuz^HR`J81GJ6MarMvz+=qQ~r8*$}JlOUH1oHgMU$==
+|Gkc>|-%&|BazBgv2nE`V{H?b6b7{O<!&GTl3|R2I;pY6i8vvEogy!P at EjE>Wm0XT2UmBB~q)m$1f}n
+mzZH$1-NOgij6b^Qb;NUhK2~b+A-6s1SAGM17i$Ku`LT at aI{}FLP}T1#0X5Hp=-)<iGzR}7YwYHsdWY
+r=s95!$^av029#BU89N5ZM$i;wCaG0Rg23Q}mIJ at dwGqkRG5WXjYc2?7%I9y)m$}2I9HHUNVhm|q_kn
+M&*?L5 at Hgo4VcY>G4QycYCo3%0;Wrqzv at L(tIk>t!R(652MedGE<D}eBx9ly`BvA|+$&`NhOR at tTadD
+&pkpG+2=ivHn9*Po7LdRlKd*{nI2S(_D1v*1A*-s+D9fwTDdTo0GCJ}aW$t-l3jZBO(&%Ma+M*11YYb
+MX1X^xI~n?_}v7cNUHgr%uFCLKS6|b`X|%>D470c}k1UEDT*s$I&P1f;l(rKno8w$s_o2x>b%XD|Ne>
+^;g>jo6``KvZ<r>?lL|nc{;Q7t5J at JGgKq=c(rK^eo)WXz3K1blqe@(Fvx<Yho&@i&);h at Z(+e$>?Yo
+zy2mYZ&Lx{1=h)*QIpv>EzUu1TKGXLmg+5sv_Tl-MpW$jg>{$JdsHclzwAoSd_9^>3*~xTvsvLjqe3X
+NTJ!+7~W<Tea=5cV8S$jQFi;c*-=QQ71&t2?M5lXq8I>>FwJC1*ykV`Xo2kvzaG3cawQ<^hk{OH)if=
+{g{A{31A-jjLY%0LOp&z2vbC7IAyn#?1P2B*u5POxWmC2719+P;#P$EC~uB!q<C(C1eT23SvOai at 5+S
+B}&V`&pgLy*w%LuF6BA4En<n$|A)>&bN)gH=RD>Q7Zd(9p903GII4C*OQ~hcb+)iQ4XE+04~oAKIkXk
+z3AI>-)ta3%}vTa$dBb&jbE>x$_d#&hS(lMB9&!!qc;}kdk|E<gt=q%#8f0}eZMk7qzw-06XK#?ClEU
+I at X%BC!*zqwj&VGrqJKbBzfR;~zTRQ8QqOz#==k;nA1{@B<S0q(l0fdDoN~8lh53rf4%kfygkB45wc6
+xn=N9-xn?7-824Wb5GiC()*zY;&<ZrIls0RDVsG!3IZ!<#4u5sk0Tk$Cw6l}}%E8R-DbU5WaVP}_uom
+vh<5o5D;l>GXaK}O`HAG!E%(*ef11z`XG<G&Zpcj{j+AOV>C+h*%K_P_p*|Lb!{p#KAh`+&3GAL_3X{
+U1S)AW(uL5rzTgATWv$)YleT5%8=;*M0&~2*ix|+O&sWNp(m8r;i{33?D{*WoJo8YiV-;QUL(RLSWRf
+{EvgK1AwGsDDWCt&@;t=PY4i(L}0H3{j0KMV*PmCT}%T at ujMUJo<v}lY&jA^g4w!&UeSEPV**UREnrN
+d?@&l504syFQ4z|#pVM+_!Ls>p?JRc$fJOQn!&e-YnazAMV)jo^@NQ|zj$pq2qdT8=fIZ%tJ`u6M$aW
+w=ch*(`AG2CKu`{b^<&D9 at y@M0{6J=ZuG6nWZ*4Lea<~`lQ&=$5XK1UyaexBiT%a5Lb3)@`|qzTHX3H
+2KTUY0?cV=fD|b)lw6tmb5co_)BVGwa!WN)`OX$Dw~n$Q^Ov*59b{({lGR$ZUjCyKB+92T2X+dsbsyc
+xAQH<d2=cUoUs)PRXJC6FDEUOevsW$T9ghIi>>Sm^|o5a8;}v7H)SxXD3t;@svzjB1LluPoL+Q%E$Vd
+Idv5X4i!#kY<~)KJ-eBbh1aj$>_use>ehCm8I-EF_j`p9SZgvdTS0vx-^s~vw?(tv;Eg3ncEGvU$IQ-
+8+CjstX)5Pf1mPws(3~gF#DSLhNWH5!aZ}(O)E|4P$uc3s)JI`h_o!=Y-(sF>wu!q<MiK1zO#0h-8>f
+%t(kBWVI&s!_?Cn(6Pv-!|wQQ+-G?!kZc&#ukX at jfapxYfx7sXCs9*?lAcAR=5Hl7(gRDs&7+bi!ocU
+{^AFC2>C{e5VBv@@^GE=HZ|Ifr+Tag|!Nq8;pzRoR7^-k~wlZH<KwZZ}Ofsv#XL#F2Iz$PuLJLezQmj
+PCxvwVy_f;O(^B?rU)G^b<Pr!BNrezI~p0a*|`RAm}DK)S at vzW@3gmm4bHmdB>Mxqa%L%ylaOv4zVIa
++G`k*a^oMFJLm0qPdf;jeyb$yWtwA<a}$4q4d~DY%=x8T#pQWDBHsLBI&v(`U47dt_v)#u*|GKr(PX6
+Sb$24<7`Gz#Y^PGvHgcn#AS2PNU7}y4%4Q~d`NQfHk?ZM!5t723_5_ at B9Y(zxag^!yVyYtc8Vp9Dufy
+Y9B=-}PUJ)g?i0aJr?)5%<Nwy~fMpbDk4g9mB?_{AOF9crBdpO;t6VivUeyzd{Uv~x7qEO99)!}~M at M
+FtcNj;o_6lst7S5zA=zw`(FE>D7f&?o&AA`vttIosjn6Cr8eHF+ at Yc0wNsT1A6AyjQJo*#PaX>_1%jY
+l6Ovo%`pdsnHEYPgxmve#c<j#@th^-cO!jq5Up$QB-#cYO5qlP0rcFil6WhOgBZx;HZ)xT7}*u1tKr{
+fceKW8Qy1X^n+thWz+HHY)`{&!+FwG%9?qv+mEZlRfM3%^i8*uZE@<W`^ymw$T_H7Ukb*_-3BKMxhHp
+P*C|SqU3`>DU6VbO&u(b14j%CwiC5<%mp<6*Fe^9qDr+J%q|g2S7zFZe!j9~%)iYPoLgR(9yQ})- at Dg
+*9=T53hX~>Sjf$A7 at zdgVBOuaiH-&`OiD5%}bxQR6b_m|{C-`ob9omWvCR<VPFTGh5Gf4~vEAaB>{bQ
+cg?m(-Ny2-kD>Ei_h$R8pO5Ij~yifg!5Wxrxt?rkpkGVNE?XsmsG~3yxS6nak-4^?mb1>xYoNHWqF|L
+gtTB&S~4$+iXYTY`6y%*@)iN^SzVxvX(H}LPbir*{@f1*s|1ud?y?`MaASeSLP0>@n(0_H62%#i`b3c
+0Zy<R(ec|#MhkK5(R;;NxL)m1#mxGPogla%&-QKd<;?>@dMGavOd)TGq+K(DVvh)38Mh`XE?awHfSqJ
+h{RN5Tb5B*~g(>#-!@gsdUot0hb5Ug+qLT7diF7b_r%a8FRtZYvR4$JM+!Ts`Q)^Gj>Q)W>?uEfuUr2
+d%Q@<L94RRSvTnaLeHKG#T!)k1)v?#dTc5=)JcRNs`(o@`9c6a`&6f0UnHCvHZWASgVEyHj=In?}i&5
+uy<^G82b#t`Td$DtI8GYIje$s4k|utlr6_!9hJ0Z0g>YoZ`s^}3*WbGTO0;D1NHj^)w-1brZEBS9)-2
+ at FAFh;Vf at g@Jl0C4saU#(=yjS#8RfU83pVnP2sKP6AL30|GM~bf?7E29-+~wgijGYCVTAU<zmn`G7__
+1`ap$+O&#TJ6kTB&;gij0_CUp8b>l9XF|fDoHPu7o8mA4LodEnkxB}C+3i}E|GI*-`&4>Y?~gxtv8dv
+Zmmtt_;aYY|(bu@>qpZYSod9<F-h%PWt(c?7a{~0u38n<qq~@s4$`V<<S*>Z#&&xg^9UL6`&m7%!cpm
+yIj-_vgrP2I6Q_9}G8~ri}tK9SM5yBOM?StbV9!|9>-G}1mrgY0ZG<S0mrGwh!xpbR0#P$BDVY!4Kf+
+}xco9RU+sVqNI)`Z;2HVZV|-<9I=K<*`LG at EA?K2MlV9k_(gJfb+LBJYO=Guj=Sb`H(X`dLV at V$%^ZW
+W^VJc1~#5$!4qU)cez(SZ|0+WaEzqsYmfFCkb|8p2DoDx<K4`{!zQvW&8;dvN9oqr8Xrzh7BCv&Ga<z
+vLnDsHuvp(j`eMn>pMYcUE*qctZLlwX~4Tf*~F#NKX>`?g7#O%#GiUyvsZE0QP|mg;i7RcpY83iVQ`F
+P+2AylC43v_W2wrGD(_u;d&cg=+`;rWQO%d>i}&ospF253mu~_bXjR}Cytc&rwH+SER0&UArOG_RJ+6
+9N{e$eq2F|BFbSTgCMn1<x%hbiunjEd_ka=&=4D2Uv!jxqnRs&<&w&?_;DMe3u50g at k!@M{p(FM|4le
+Q)N*upQD87Zg2{mR?NWmF5E7i~#pukqL0OHc^i*wr3-l{q4e;9REZ*C8By2*<N=v#Ww^`4Vf=hsPz}K
+GEa3eC&~})$x4X`yr+}K^l!_94N+NBX<w at l%&m_IFJgokCA*oX;JTpGA9JEbmN(;Y>i7i+P^rb6!73l
+2i;~Q+5N2Q3Y-X`ZzOgfZC+8O4^Xjfg<Ke%drR645<AuQHVik>(9$OK5$sl%d2*)o*|}z(&yY!+bA at s
+syukMaR;YD|d6L7aBKFqKx}0HE`0I5kx~}kV!@BYI=5qzgS1Ww0HTm}8PkC+>rD1Ae_g{Jnpa`fM0W3
+KLRTs<H2}&E+$@p+B{aDB}xu&w$YRIpd{W?<P5h!Lv)+);d0T>hjNgRNjH@(&~BH`*LfUo2p21g)&RW
+q5Ot5qikN<)Bbmj+%10SPAPQxs(A;k8f&*azTiZ6pO!?hyu7K%*6#La;5m+GT^Di2;BMhFRMe{@xth0
+}0&{{XhfJb~N_uq&NH7kwk!&G51?92|m|$CQKN%tBvB!S|6rbd<6;`YeCuVj}Bsf^#23;Rulp+3`cx#
+0Qk1>+p_Y{NBn$1=&u~{9~C1)pL_%yJ&m>zmh|MVpLg`Z3O9)NlBheWT13~(!gaIFTS}yC<%~4-kV8t
+&cH`w>pid(R%QVlYIeIR9>v_#RY>VE}ksirR9<jON2J6V!J0%}?=M?RW*^>hjiVqT&#wkl4eSdT@<rO
+TfM}MRz(X6$+x{nyKDepMm2^?i%%b=3714?UQTr^a0_6^9}R-vz|j`xUP&4~*6%#OswU}d^5YmQa#$*
+#&unJD?RzuhX9X?aIF7P-E}irD$VLz3L0N#i0jAv|7=;k1bHh~`(*%w~2NvDe)~O6ktC=%Bqe_9e)BR
+ezGr#x3u%4`({`qU;RigN=ePvyRaXaZ|)Awmm9pg3<Fsorw1EQH&VP-1xc19{Qok{!_07tENk-S6?ZH
+dFqMpB7QKb*R6Lc at du^{{i9Y8+fOXdPnGduKQM+t>^ghMY$qBJMTVa7wXxp2KW2we-CR8$TOquoY3=l
+fBhn=p65Xy#fDIXjN=UCwLNxe<S>%%}PZ;AHmeb#OJkrjWoiM at P&^#|HMmAX0Do)E{)%ihWOs&6U=$Q
+%a^FVVRy~CD2RL$5*u*??2)|0Ypj0VefqD_Nh<2(^~boO`Kg%CNgcNHc|&RzvH?b+>JxoF#Cb2wkm2M
+6g7mwYFWu19k=!*xDx2G-NBpPZMZy^-G<yw>lMA>EzpCOtsm^PG~!&MW+pNza=LWAc0IX)FLgo%+a=$
+STZo?}SQpWh0%e&lh24Gm)O8_F%br388z(q!iaMVBGRkn=jQ1^C<A5W?SWKT<Oe%PikhIceT4m@!LYp
+h^86EzudfGAKZdA>5 at OB>nnM*P15#&K(M!4{a#-2nP>dPEk1DNr{#bA?T;@u|EZvn`Lc2`SquBtd~NV
+1$HG_ZNd_d6VG49PLJ+_JmLWR+S|moLYln9jR7}J$sL7`(Ftjh>{=xwkE&?V>DKJ?}zg6aAfG{ldhQf
+aVGz(!_Ho!438=D{iK9-%Lt8?{&Tgy%(0-zVM>b at 2<3D#nah3_OO(4R$XFA3tU=`925Iu_alrdwe!X}
+rMYZz~r;Xnp-wlEG<T&#VexbYb|pINxq|!{tQO5$a|Z%AgAYc!nqM`I8mosOjdJ8$#)=Yyk>U;=2ju>
+gc>yDK0dFd)GPryi60d&z>VU^M~e`syOQE<;>+_<IO(smB#!!YKY!H5kGos9>f9RBAEmFruUu?)$dK1
+f0XLnP%Mi at Qie*>m9VBLP(1K$)YPMtRXP7 at +@G>`==XPn-jV%2&dbYvGv4kI_pl{5F)^XF at U-5jP)gV
+p0!PZ$;{xw#T_1ctU**>=9ShqO>Ap=*PfN^aJqr?_A1IwahG#ykqH}XZB!YmHN8=39Lm#}bFQmu$DpW
+bQi at NLUL|gFgcrMMN4&78eA&LFc_2 at xxUct*-qc$xj8las)MCI;8o-U}o<&R0luwr?{USWutN!QdybD
+K2UR|V5OtHm<j2I&QP at f${1#=0W!A at d}baa#&c=~U6k{kgE4JDS87?BQ?Pi}!4&s~QrtpgR0n<xsk(8
+CP`)OG~S^FR}*O-uER at Em5{$T&&?+1!JNqQuuRGqUD~tt~p||R*RQ~=p63>T$)g|CHVLkUFJ at 2+{EH`
+%HXP&p^3vMJGh(qqux;!*lkmj=cZNXx}mV9K5XmfZTMLz_%!(I(-7*7A>5bOP?s3O%P{zUS#Vo^I(T`
+Y{t2PbTQ?4&zFV at 78N#ExqOl}wn*(<*so=(rb4zt-FYQzL at i=4?(>RB=<DJv6-6GvJ+e1r;Q+kF}-X4
+m=)BNtPm3Ax3sO&S at R>)>?BPAHyr)ch*>bZMGd-2$WS6Ek2FV?&bl&E!cUYLz?j(JfXn|+BTRq$eVDf
+gmIV=5lYdH1>q#dXt)xu{KBc$-90v^^c3*X1jP1YLZb$7qAk<aXe at 4e!4;h3aqmy>j02hMR at R^G2Vv;
+n`VM{KCzsImOGJJ!6#}Z0r)^kn4_`;{7~HX;BUPND6NIPJD<iKEoMBBh73J<-Q7zo1Q!8DLbN9oZ!2?
+!5&RDK0uFackS_mDzRzPBRx#ote;X!Sa{}N7Ya$q_01gS_$Zp-G5xYD>fip5fQb9s`brzE1&QyC73e>
+H{^W0e?5>YLg161*B>v;MK-jgdr%xQ~|BK^)K<z(u?4N5TX&7)kiewm+CP*AZFowoqnm}QOp$M8L2<A
+&*4hfK<13GCE=!KBAB?Cc&d07euIX86mo{n+Q0SW%vavH{fMmmYtRl>g~)ani$0of7p)@&gJ6UZ?NP!
+dBy(s7}SAW!%!%jqRJplGnW1%}bLGR)Pd;B9($*%I`phyZLO1W+*r0SFzI7t6IQIE|2?Br}S^YkX~RN
+UsX67y+a)#(xXU+qG3;@V!<t7 at sxQOo`ibOpz?ZQFfH)&tTQPHGOD=KR0Oq*^4r+L*%27zkXgOd^8*u
+`>>*fwC`OIa7Fyn%0PH4g_x3Ez7-wbYM<v2fc^`pcTfVfP=fj4Pt#kd_xjeLN#5VW({4)aUl(0MYt`i
+{IFIIc!4<yja99g1zZn~7*b*KLp!bsQR0t4UWq!7f?$G!2r00CH)t3De<GvXkaQm>)o~w_~@E#h>Z at n
+%ca3q80{<JcX_*xA!Dblz4P|`n{*>ZnsMPi<zT!HCn82Vtohad0uj+=rL0&G@)*XcHcmb)x#^Iz-c^y
+bky7w2YwksbYPfF at O&=j)K;Q;Ud?n7fvDU%|&lb at 7TLFAHBO)h#EzM0+X%nN`_wAMujcqRtX;Yc|`s4
+U~65U8Dku;C2?N%u%{UTds1vDd{Is#wyJ&DOr*mm5s%SP>LXkghHC)3!U5OEo&iS$hAly;mJC1<0%o&
+&T(c(xeI#E!F!3+8{W+heSSg5aEDQ;xi^#hfboi*55;kNg7(eWU0AbrYHyP!n{6$YNk3w7q`<rL!eN^
+2fv27iYk|@JQf9H2g*z6GEro08WMmJJ(5TP2K5frfvN={2=g#P5Z|dlNca3}fxhLDU?jIU;q;8rj?zY
+^0yqBG9GMO8vOT-1`U^du|{-Lz%m$}g;{(yd}PSh-7x{|q*X|b%24|LvzwSaFmneIPlL-^r68?uB${b
+(JJ-j$=0wqRNk at 0uiiq5Z}^XZ7v2iJyToF-v48-%au?K5~^lIgSz2wXQoHG`l26v$Qz!_N?zi>2|*k7
+ at Fr1lM?0iw5J9lsqI`<i{vOO_%l_)CB&ryL5^#oGIgkWVN5q(&`mDt@?|hMyuPbmh(#|a-uWY at pZxQE
+3DZ%9;!N#)7Dqpb78)LyvY0$10b)-%Q at T=Kb0xR;W|}^d0(*^V!NiV-ERXDp)sN4KyCjzir5~A4z;ag
+-CrrT*^Ww^oz3()h?)OIw>-sHrC{M{=y1)A8NR}+<<vQK at v#^UnZNGpAVXW7?4P&w0`F;<0RD!x&Rp6
+2M7>OCDk<B&B4-d%_`@b9(^m#D!$v0s9 at P%7|5cti#efnQMV=(o{Papi%5a56Ju|DAb9~|dLaHo(3z%
+djiDU?PD9D(8GHHnZY0`PqSdkV#2@)wqPOboQX3nNAGb#g5Rg5w31v1F}idb1f|R-pXaGIoJh&=Ngby
+?`*#<1ku{_JBPr_4hFRJ4OQqR*Hk<@3JNkP$wV at jG({jeTaifss+;t7-WtS8sv7DsDnaQp9TuxJ8-5=
+!T<Cs+*-&s$o6937@#yO1x*uyzKaHV1cCwECU3#OUufA52JP%yde_v`p*ib~=+G6jFOhRYQfKe0mhHk
+PHSr4U4(ogacG<dK&N1xUZw@|(Qe05;^1;4es-)dkM>|c3vIV^I7_;ibKLKoefi1oPn}mHFjax$by1$
+(F#1BmwvK7C|Z}fiD1b29E*}n4o*$|f4z{w_Ub_v~CMO@;iOoQjnqNj1++C6IEtf3!I`v=w6L7eFCjj
+ASYiA{D`EV<q1xCQ!E;IhOmmBuR{aZC7dkAB2$U>E_dj^%Ih$)qhqqR3ukfX{OYgHeB{;-bj%ig3wT@
+!FrFtbKZIy0a4{-4uDSg}5Y4ufzT*n5o3>q-8kV+Xq{%%(4}?*X at 0Zqzxis+ZMYg_+v*mceKs3dd?ZS
+ZJs&_-GbY5L*3^{<Jv-15JWYCE=Bv{NspU*LD1Vy8E>++nHulC?&T*94)m1>=T{n>rq5W771{vX>?DI
+c^c|@}!ZEY(aQV7GH-oop7eRCunC#$Z%E;;%j_+dmM5Ybj84Ppb)p~Yy39o2R at i9o%?%;BgKDprCk*g
+zR+_JU9zqZ at U)uH@(Sazb>dVQQDmpMf3IXlUtJ1dB8<H&V{&OW9-9<ZajroKm>R{|{}@fBZ=6EU%MQk
+JCX{!?b9za9{=F9zP9$<Z=ezKSU6{t${+(Jf21--y`%Vi5R0b1uIJiJxn8QEG`3fr6JHNg6>JX6^a6f
+CGtA3-?=a1E;7jDc~})A|Y@&UB*{B0B+w4bHeeppDYPx+?M5d2r{J$v%|i2l}iyYQUkUZgPno2?wc_<
+FvNN9vP&$-p}-iuFv2JR=~XgZcK at rsf8i=1S;;88_WE1+Xu5VFOd~MO7bL3@>N>}l;Om at X1l(|zf8UI
+9mc!F;l4Ak at 696&_tQ;?w6aBVZy$UGcsD49<3oD&_IB3a-4L7}iIBXMh^D7GY_^denJyLw@(zhT*3Vp
+#&fOr;N-q+E at iNV>wMd-5p3y1*-vkdat|1`vWD3t#i#LRCHv!DsAt=RUKErz}|3Iql{-y!C+(D+M;0c
+Q<;gP8Aq{SM;D{F$|`nrZOfn-$Tz#Z5hf<<PINY2lT>#HJsi3HqPGrXQebhW?qPcK4v$!|@fOyH}jZU
+D&p917%USdCAk0CNFJM+GQZ at MnljG;;4^)+l=?qsk~iYUWu~(5k6 at 5rke)-csPi1Oz2x0y7+SuQA$x;
+J3-oQ#Xe`wA$#4O`2Ux=H(7ENi?#*ld_ at lHne08$H)(bU^dNyGdclkyflxyae^H-MA5f#3)%05ZS8?R
+w9-T*KWZtT0FU%t3A)&*OTw<-g_u6Y~>Y*CRY=1TvJRC0jL}ZHt9G~^Qajp0b*E%7rWl)4{$PnLOZti
+fi8aQRoT4Z7N{fIH!%%sJR4<lSN!$yo5H!9C9A6R=<oD4bgQOjZ==F<2SFYV5|0Zses*0tTub;Zz%&~
+G!br^x5Tj=L?tQH9evGeb-#;Nt0TBDS;V2DPB2sN}f!^|MesrqT8Wc{zI92n%;hyfa<(vR59@?Bd^!!
+h+c1-8ZE+Ai~2jxM^eMRM7F=mhTfB{v8;G-f_6`=I2%BV=A?`n-bqAd{?sD6!oH?(#qP`{?i8wp*#25
+u(frGeS+bH>(d}=2SIRbxK~v)+)PQyroxB$o_Vf6Klfw0XR$^g7kaNrst4WqPUtPqIAQ!lpWV(}ao{*
+-r)R4_jAF=+ at WSeg85#a%8_wOenaiOa&cd^fjwurLP)C<qKr6c&clTG)CRoO4@>#-IoJgXvgkUJ&#f3
+7O*6+!k9k<CGz^LU|XsLv9LB-JCkxjLn9uKPJ=_ZJG<8jBZ(X-x|bKV~dK2{zqce78OIfm3 at dORO~Gg
+uVq%_xOuI#g4`_Lv5qpXmDsZN|3DQQSGM(`M^)h}!x?GWtwK3^E;$w_BWC>S1Y}Hek*4A_VK#IWbweR
+^dZQBWy^vKFR+7lU7FmBCSjPPe?2Oe|7$UlUDvN@}yzlNK3A<Cx+1oOcE50A}fo4X^KE71}6~)#j(#g
+#Tp<IDQL?94tojk+`|%3N?oHy>@^A)LH|r)par5<8W4UiEJ^@hpm8t+ag7RBz5u^fYU39bNMFN$BT$`
+XLLlx*$=AfhH7Na+1s~W_^cqTngPb(bJ;5(=5cQ=o7d$xyN+^l}8lvpgn~S{M+SiAe2q<Ndmr?Hex`@
+|6VlWQ*HTQ%h|2Fb$0H-Lu4^FXOr(uh|v-m(YJ7MMF0wsjY&yi>SY2^72QpzBs41Gx{WB(?l3^K~le<
+h_1GRjc;9<sfqlrh~F$G7V8M at o5RGvbPHKc|$x4s7|CDP at 5C&>EKh>y+{bE&8`9Wk8o8z2wjpdSq^X%
+9f5ZpsSR#dX8h+3yZ2O$9WTZf(6MrU7KUC946^PF?-=~-7%&cYmjwEC|797=t{e6%NdWBzG at h@x3p4m
+WIf(rL^a#pQIs7vuoX$3AdY+fyqsOM?6vR;bvvz#_&FmPM7V at 1ZNV2)Sy$Y3ThHf7M*W*KEA&~O^?MU
+IH#@kA>1OS<eZoSRjocbjZ$$U(>g-*Hc>e9RuTK_OG-h?#;C0#ZyfC`+390qNBfO~Ps1S;6KFisvM&9
+3c?RhC9t&(l%X;Aeo87D>C=Z`6m(^OFoxjG)N;ZWbqmKk~h7fv=WZHk+|i*9h_b!~5Q_3^^>D=}N4^`
+4uWF;k6E<vn_Pgins$?0*|i-1QP^UGm!>&h0X!P5bT!{;Nyt@#7g^gT{|F-mcDvv>WeD^)*)f;TgXRH
+UEok?Hz^w;kLfRAyCF7D4fD at n8pbjVOA6(F^WJ*9EUN4LP`2_D_8(I$;<i)0RbSMfLZZtv`ELVbmePK
+J%R%b638-sE^x(O%F{Js#R#A^TET)sLC5O4*!pisfYjuAC-yeSo&shM5%tP%{!({@0lZrA19>G;*Cp0
+S7C2L-U}Ndao`HO&NRtc*idK{Y<xm1>o7M=IdKp5{uK{2T3|cLsm!@_FFyNx~_pxmc1g at m~b*4Snhyg
+FJ!I~%t%}|L&BPl;=k-o&XgZ)WtyRhyD7F~hr=W2rqc^@I%S1)r75~sieou>|Zy{(tX_iOPnIGfmdsc
+dxnJ|5qtLW}rq*!FrJ^!CIrk at E#WN-)G1u6V!JrnOtC%1eVZMD;{`+nFlPj0b&lb~mc8KrZ!iw)#hAv
+_A&Czle94PvYG(q;t-Dz<YFScMjddBS7)@aCB0>7!?5UmcDsI-zSkksz_WDC0V!BPREkPKak$~rgkj-
+{F`_OJLs>_?!8U<1$M}{XLtMXy#D`o_-cIr8+N###=y{LLGXl%*trq8!=bw%lNW7~A}o2mL~8z6C8<%
+X2a>qv!BJf#i0R#`h}NJg8 at eI7g^L5Tot}3wc~-)+>?%t|x0RvXj`?v at A^V9}vb`st^vkZuTTg)$l+-
+hc_Ebp{;WKw~H%+M=PkNdXKFU&j3w!p+FSojgn{;Hcv=W!}C@%P*8}e<VK$=FOOqTF??`;cozdMhdhS
+BGQP+U>3L{hm)eHgb|;`k~YH`bmw8_TvQ47saHDLFt}PB&BE?#@>mJ?v<e&2(dD_-CtYCguF7L!!uor
+yWp?+UJ8ZQseDu>XjSzst}bY8)|lp%jy}*%TK3wxABU4Qy~k4H^*jo8a=w{yztIm%dgh-^ZKbA-qlgi
+Px7eG=6}iXH`8`Som)T1XHrV;QaeJP&7F10 at p$jr`Cf9>(Bu)6Y at u`X$c?_VA8~;#?xLh_ukiGg8x=i
+<^y!q#jbm|n3#C)l>%8Ns=*O_vHbRp at yS+Yn%j at G?13zg7jnQccP`VG$YyGZGgWetUlkMYSiD~9cnmh
+J)MZft99K?$J*`@5ulrn25aj0cawI(MNu`@BBo_hOqWrQ4yXRSi|^>g8G at 71QBg;GqDBYIlu;fm at H&u
+q^r-Rzzls7;MYjYID02BFX>Jfg|97cP at e_qfd=K_#wNRnEUF$g>wuJ?99y9_h<;icg5YIW7=BE4!U=d
+u&a&HU}dT6Yda`2gV#Kh6;<!@9gQcE%QW*8+nIvoo?LGhjo6Og{I-q4a7~#h$KTo_{)gc`!U}HXZ*g|
+4o~?xEO62#22OVAcorU~u-u$RIamYe=7ENW$Eb=4T}|Vd#i)BY+^iDgmi*kuS%dn1Qb+}HF{ZSab=^m
+Xt*{*tPtD<B-~v^Svprt#ju=GgDDP(?PE?z7%|F7 at _y?K)4|4G4*M$9X>Z9u={+);w{}%*?`Y&^<{{{
+E?6Vdt?d;FGlkr;wwU>FTfBLqgkBuNq&f-p2ez{twNNF0WVPkpqo5V+K@)GB=?+(Gmoz6RE0udIIt*b
+njwrcp2&^i$TgK9amV?pF##XTb6bLjYl;6VO at 2B!FYZFGV<-06VUj0W(BNP}BYe>mr$#Rmf{r4xml1d
+8+Yi#2bQv`bYelo(f79F*rB=QnQgSYZ8nBX$&w>4u2`i36Oa}U*iSVO at MiBf3Nl~K;3zKey}bL7d9$B
+9 at U&tgGs$te%iL5ME`U7S at i!87#AR1(7$0^Yqb2q)S!RFxEyCR#xIO(nZBiMoDjV%z}RICoe{sD9{&7
+Ib>T0_1O(W`i at z)%EmL3^9P-A%z6^z1@=>=%{B0<lLwM!e8wlP%=)dv?e)|&s)f))jKj^>m27dW1{QE
+Z$ynoR98<>==!R7InPnyaB!}Z)SST#RfSk}6^w+HQXkE$N=?tCcHW~VaST&W at 1xib=b&^9%DQxCOp at o
+uE6hoLMH?!LBDZU_%n*>|EaT~7hOlD}K7%kt7(VeWwqDU at k@P!%s&HSEzlL&0j@*(MUyl{^h%%3?d>G
+H&ZKkJK>_>0df|eX9403}4-kK4@)KSYs4 at o6GJlntKZu=u$koroRKeszrc0!;3}m;<&PH<*VVm;gp-R
+E#Jeo^oeGqH*DCMs?1N6Y~kb1^h+pIOgI+qgZ71vB!I%7Uljgr#10lLk<8qpnYe}C57`k-_n<1n`bSM
+woki?QJi%Ae)e at 16fb_`s*^!*pWrx>gzYw^*_N6<XA^{KK`;0!^O|!DtHmMNd6dOswpN!@Z&<7(rE?&
+)4EEYv#!7B#&G=L&tH!_y6{=VHjgd}qpgb!*!+<I1AwXM&}VVZB5JU at yQQ%r0)v4jDW*7M#yn2Wsc;9
+g|^0i>@`rrqP0i}r2)<9~YtBl&(!{@WkY|MS0h;q5>F at Ag0c&u;k7|KkR75buZYv+f0q_IC$VmoWLy|
+EpS;`Lxjf-+qAU|Jmn$hu(j3-tQCb1dgL%@*6 at TpGvu60_4tD%*!&6GEZJ}NRu~*YZPdxR+wCY35!9#
+gZ_NFDNF)&){2tE3oDV=k}&>Cf-|p4;1MuRfHBZswH~~ljiG>PHiP^MQsb9-WeA#Y!`Hl;3<fw&z+kN
+u2CDJ|eL-pp3 at Q-@$P0i58vzA at l>n at mo4gzw);%#OXaie87AHZHpZQyBN>KudjNwDdC0mZz5-e+cCgx
+nDp4+#v_!{}_RM-AGYnubJwr_6bpSf#{8Q&J{*O-0{x5a7j(Kffx0M<$ogFXzZ#<6#0sUNAwGLi_Kw8
+tX4U7OI8s*yT0DqnnBw1(cR)_X82T+rVqez$h*!nVwmZ$8gbpIYqw-3QY|nKt07+-yA)N`5+P^#vL8>
+CK|r8IOWGz4a1<`+#xgm-|*^gdRWmR$G$u&8X;jy*TcWK$gbfe1LV+8O8CvOJ at S$r$Z6CzCN+5*BBTW
+V<Yb^I@;ANqV`C}^s!5nNVt0h5u(>3(2q+vgO~G`D~CQ;I8>nPY<V{X)xLT6fi3m=GV}cx7fwhOlOd9
+ghbl%=b^iIRe^-NtzRN%GW*Sq37MZqi&+PI_a6OpHt&~e2FxLv_p6iA8KF;@3sp?9}2#pP0B|6Nct{W
+EaRPY&ko0#38hXMZ(W?}1Y4cx$dMAp)$J8qSSzxZTC#RoZ3&GDQx3&aL&xfSv8d8UdTdb&}bLEp7<r=
+zEh^boeKRx${=@`;@(@Koe_VVJrdTPYYvG)zlCE{j}~q;ieG;2MN#nL9RZNu=6d_z*#sX8ZIrUbe~$7
+PyUxQ+t{1i}`$iKIv?#O&L<PWXzT&wGO at KP%)8gj1X^QuTa9XH*YA}^rVekOH5GTo|y_i$Qpg*CpyA?
+##JU1;&xrLakzvPY(;xqkz4AiEcrNW*pp at 4B31^CW&4YEhgV{=u-3OVcra2G`Z7~h{2e{qa(djVEsyp
+G{yK8h;%reJa+r;P5dN<V@%wH|6{GhIM%pp>eB?xx3)6t8Y3?GK1r!Z3A at 7lWlaZXkA02JmAsJ8KEmW
+;?U)2~-nG~7CeY<S(>~Xo<UFdg5Cy4EWs8Jr;@bop-)MD34vtw>_O+Sj2eh5pdIWha>`bc{p&RVIh0z
+|S7&j@!*T@^+oz_Y!%@KCgF)^kzATl%|T3#S1?w#y(VIfd=a8qXiYwQ!<)p<(^zVY=l#vD{)Sr+s$Z(
+F-a;y;ep;;}QGp79Q4Xo)s8EA=<YA)~5yYv|XaWkJ?76A#Av`WysLc4z(68Y>*x9Jqn#m8Q%|G%G{L9
+<im72`iCkq`XumJ$9rh{J{<k0Y}3KuFRfW7HWQfC?{+J%$ZU0C*!_{D%^K>i|6apelHPulSbuuZ4-o%
+fTIe0G|9+A0G<Gof^U^i{EVYh78XtZQR3)O<IEmzCSp>gaDsj+Lyhgw{3UHGCyx_e;AW%G`pxnS9K)e
+=HK;H}osZzklB7T`Ftx+og$Ou4p@`{6zUroUP<%;-arh&gEi<6*ALA at r=tpE#Jo^e1KR>TG_nB=SZ8h
+*{cNI~y&guTRkFC&gMT&8GXxdg_mlb~QhW`FCEIfH^X^&z4Y+1<q}e;U#R3JYBLqkS}F3u3Bs<GTl>>
+tJT#pN%|_-5I36!R;Cf_3Le~TkW_v-pwa>_6m#zPzhJTS<P2CU2k`-?-5nt;Xlf>=C2)2`h0kyW<DK|
+`xz2IdlR_R2J&fr0<&AaAEbSDHBL&&#vhi_?g92a307ru1^CMvBYNf<Tuwz)o7bom8=bG-f&TJWF9`_
+kpzp=pz at +L|%}DB7Gg1zkk=8d`cLM at ldE2ujw43JP%?{Uy(=C{vT~bmGA*$NBL6rQs5m`%aPG~R6#v}
+*N!nlf0_(HN=XVBII>W at x#ak|^!Nh-C)EL`SQBC33!FNI|8yH-e_2ZpFT>mj=vQ|q%F%MK1o-~!hTCk
+G0M-XnGDJmn7?mb=|`IF|hAV%90X5@){EIV0bthi&3ESL;+9(@|Hr)06l8q^E^JgdTckFlS@)Sfg0}w
+2yX)hBmBGpRNw+UoO{_QpaYSV`C?iNLez>k=f}&8tg8T3XG^A!i;X%j&rebdq3)EaG0gjIdd)%+DKv%
+<Pvh8123!}3lAEUamDw=Lc52%bCKS{?Fucj;E8x*QJ$Vfp397d<0pDkWVP`q70s851H;4DJ#DQqt70~
+jjV0~=q4GA|udn(5$@Mwd<Cn0GMn8LO`^*dIQ-eCasvMUfA5&c#0*2q5H{6{{s7o7Ht#`gy&yH?<`7}
+d>OA<KUkQu_ur>6?bD;Eg)+*FQs(Yxcur0(-+Ds>OH5gP5_N!h`8derXXlPNuafXL^1;kpR+McoxNr(
+U{dF_6%18^ls~mO(#Ibc!$4_H<3_4DnVv7Rl>Abwip=Qx*46dLZ`8)!Qn`Ip~mRpp|ILV>QxH81?jO(
+|jcNoHI}*I&Ay7_76`d-`sb(Umh#!5Rwo_CjAuC&SQP`RcZTqcBT~<eV#cAy~8lopJL+O5G4=dF%OLI
+LVxJ127!B{4;Cw03%Aq7Smq=rQCW68EiA+3dBf$Pu{-8j)1Tghbx6Y!ESZUM<)OnXVwc at Vz!QDMGh>8
+KD;2-4)RUP(RZBZ_18_=6Ed+E?9KYxQ|3dVzlkWOGb`}42=`y)JTynTHI at -UN&3iZk{m@*tF2dgp=W*
+LV_FR7DdOXSecBv?OR9)WXOln4%ozkmCIS`#TTM!?F1k>`3in4O*kEVT9tkh?h4S}dbKXEHT%Cah9m7
+`1Y`ty0gyiU?>o|Jt$&sXdtE-CL#Wi6mo;0Wa2DDubDnBG?MjXUd{2V*R=tz}ce7&;M^n2x-yEDKif<
+#DDN3Q~hQy9P9Ito%4S-3}=+8;f;$Oyt$=$?0;CRYZha=Xmvm-Ved>3z=c#tE-QmJMH#Rek<4Dr#j~s
+zdKuOmWI>@QCLrUcmgUo#1`2li8*?cd2kmv(-Y6Ntd1JneOB=gUxPLz#^V=HY&)zP&O{LHhLJv$w|Q8
+J=TdAg5v6aI>g?Ohj4n?Tl^sqt(azbMXZ|*6(6F1Pcz#HZSxbvbF(#S7S9ARkhRji-q{prW{y<4IIp~
+cDa7iNUeS6*HmU%fGj#UjsVxB(hi^ZifA0y8QW0Q!N5oTo%2Q|6T63;)!>YSZ6G2331Y8-N at KUZNX*v
+suYRL}wG8mpsQ7k{u`8Isu9U0HC#$LntrlknocKkmmJABTsBK~#=mVi(k2FP(F&W7tOGA)n&bh|K9y{
+2349`5Cy*!Yq|BS@}~v-=j-wR2!Ri=iS{^Pp<1fqAm&!#&EQr=^hK9d3;<8GN{Mc;_g^XdK|7%_oH?*
+Da(1<y5eodT1Fi`I^(g?#C<j~dM(r>x!JS-q_VT}DB;px@|BIf-G=|8{n1GMSI2x<n|*owZwGi_8L$d
+tNRY2jQILk9DNrt0$xD_3wITdUk)SW-Vfwkv3>v<Y60ZzDC=jGTV1Z_ at sq`6;1cLlO32G9=OFKfoL>N
+@~QONj-g)t~t0v!DsY`-$EI0QT^LjJ at sP`-$9z{P;4&C9r)diko86j&F>fzjr=Z7>Hd1*T{~j)(&yw(
+e<tdi=L6OcX#D^N{}C0FV6-49vC`(T0F8)r;#)`rf$hK&-y36b1Ed(SCo7FZ8`BgGz0j`xdci<=3nV#
+7?>jD9o1wzT_wTQD0P`l~|6p{^oUN|8QUVwj=1rE&bCSK|gNk#~uBZ85;0HgT9)f at fK4mT;`Wdy)p|_
+8RqzWp7c0c5-%bhtB{Lbf*-W0-D;EM`FSmijR+m4O<`3QgJYt|IK~+-x3nb{!+A%LeDp96vswm~UbMn
+g-G|~S8TcB$D}}qiCEVk7hU#*1E=whx#;vrpQIlgT|Kym7o-sTz%E+&l`=+G`0=;Kl-6DC at T*@i5GGq
+M)i at pGzW1$Npnp~r|oK&fxcbt1MmTjls-Qlh!onvWQh{}RoTq57~=;!G8OC!TU-5!*}gDiT3Hugrpbg
+ at XJ2i!h+@^kP`n-Xc`Q19kCYeJ>#b+Xd)%NiWZ_rl<uT;PK!r}qy?D$eXq-6i`eTn|2>3CoWdd=f>O^
+8)lBePDk^k9ju!-T;p>+U>#}GV{DgjC_VTyMt$m!L;#zRx-Q|@OW#MNkqdKbROkI^iV_?w=#4Ij<6jY
+ynQD680}@L{tzUr%pvZfuMf6^kBVdPc7}|T=<#f`-JS3Az3<;X$^&nNqk5GFW at 3TDnJNACBNW#o8043
+|FX&^S!Fta3PxfA1f_tKv<MBd+ll0%76k6{Xz`@$O?K5hE9-y06ALdA4!*@;ueE+~lU9fsidB`@A-`V
+vKNP3OXFTLC(7+!-Wy;%l-OE8@$`0>f;Il)vLv*6in8q+(5BcXX;quI?Eby6qSs~bEjSHgH4x-BI>Bz
+51Y{y0e6YP-8^5igF0oDH$MsveY1Y+`$QLZYa!Om__1+Z0y8!Zy;N+Af9R?rCda8GWm|TXe{loRM=}p
+|2Qq at p<AtALVhppH5qd=T at vkxP7{i<>|sdFrM*pw&@I)ALq<op+~PxmOVxUE)V?PbJkz)B(Zz5?kjCh
+IY_+3_Icuqq$Sryvgf#53zqQwW1qAa-ch&8^)C1c;|~}3yd5MIh{m*WYaoN8<kA5;$;XYl+31V=FnYO
+gHpVm1Cy~ViiZ^d5&$yLb@{(SRw*wL8zYmtXzHk1!wO?_Nwcdw(bZxpqUVUk+w5|H~2k890XS at UHm!r
+SMQHEg<8o^-tGdvB$m;YG;TEsK@)!rR~hP;RZb$Ik8h9qAGq8RZf at wqz;4ufhv9)UFw3LqP>aG^jFfq
+4!2j3a=?KnZ}qhHWLF<Pgz+(#)^?L1R#FNEz_&x;jXYU_iGI8VX)APlk8_HUg?6^eZJpzxw~^SN;P`+
+`_@}*$e667tSICKvm#~{kMgDkpO`>O at 3rGjyR!hKN~$QaLE^ItB>y-#2OVR<yR1du<KX44?O1wLo8R)
+Ep=4i<?YjzbG{j!0VT at e3d+Hew_X=ecL_0f(M|U4atF%AW3o at q?yR{7?Mr53(uI6kaTV4}eT4M)X<0%
+J(jBim*ZbBhnCR=A|1Ave*7#``%iY6J4vkj3*B=2{GVK*RdG;N21H;u{^E+QU__MhLo(uHx>xHVju78
+nu5e?`|ju!y2V%=OMz91{I|Gw1<#H!MCDDj13qEc63JG;fR*$yW;+U2?vo{Pcq&8N)=&iMqx9E~IQ%a
+h}9ou1V;IdYIS1Q!YGGTXTKu)fjM4RK;Ck|IZHKbS>Hs%%`QVqDr-zD2r>tnKR>0c`6tt at C-cKrHvLA
+G1;%#lg#`zH3mM-<T6w%7JQoekQZc<<ztphkAAqRbi{$#LWns%y9NL=Ab|t-(#|*Y;a{jpW<bRgzltm
+wm9s>>F%11jtMW<VLNy>7TSsE9`x*angTT?#5foA6LgAl>D0-~HOBlo-|_~UMICX<)w|jcgL~hrM`E<
+QM>-3k{g^sDY7Qm#Xj`_rAb6`m=(M=rC5VJrcoLpq+_pG^E%X<wl_SrF<4TR>`>%}D04?&~L1+E>@G7
+K$ik#ud`~}Db4Q?su7x3hnKjsPhjf_y`*DsSIC}8&cx at KT-SC(hlcwBE4l}$k7ob0oq!8NQbvcAE=;P
+GhWdT^WMLItt%$c8yru!;_zu-+PMVsI5WU_H6b at -SFn0snV?UKobJ6JKXuA6W0`Sh)f_SkLIZ-74Ug&
+A|>LZ~_ at -HL$SQvcQ at ZdL5XrTU(zP<Y46%Z1uI15bR`qd_AxMk4O2s_4PLSvJlwWYk_d&7BE5en>UA(
+3ipEstSkc4Zg1bf75T?_rpNsoJ<1 at CH%7H&^E*f8it2|ykdGytiECgn&(}2pU8w?3f0wv`BzBDntF$E
+4dXQUsZ|r0Lgl-4&jBa%9?RT$^#(HfC+0TxJJ`Vn*bVK}9d2>Frmnkj!SLt|x_%%}A)oJJ)ZGp4s=5W
+54wld#Ea}B-4YtZN=R(Nh~HZ8R>alWCEQx}iuzMqn9zsaF0uF(o*=v=bfX)H#;r>MLipT1H&4rOFc!M
+sAC%g#IVnrwGx)$^(4?y_BZDCLGBAZ3_hCDD^=>NP<^r6H(By~uZ!t39&4Om0!js{3VgNJ(8IDOy#d)
+>^+(si0zyyJA7NkO{>i+Sl$tM<{%pLN+bh+JvRq&#z1=sE_c;T--;yXqPVB24a7l at 6WkCR)zi`pU`vN
+(_zIH)$Z at dt2&>upgG{a>=mAmomev%a9Gu1fe}R`vuiO8g4w4+kL}&258(i^qd_(gEjrK7xcn!s3(Eb
+LSL@$DPWQI^D1Lw$o8LY11M&F%XT6h;Up(W-3d^TFga*t2=m?otC&ZhrTLS75I0}AP2?P-WM;mmFh(E
+8c0KG)`nn4Z&^0IP_1O>2<C%_vgdQpazima4jjk6>4MRP!@=GPO*vRBU`m4GmOWkG9z55LUMV;B^CVi
+G7bVDzO=BtfNS4dGJ?lvA>mlOTXftsy`8a;^c|MjE6kA{;a^#=kRxOwa)&79aMpJiEz1ojhj#SmYPm3
+HrW$uo$8`X(E)ksS-B;^@A#~>3a`=1poAS4t-Nac^}HTatsF)?h)PAr^BnEPkp}+KG^CE8v5RM1AV)l
+f3q9t+wFX}o8RoZhrmUsInj96Uu(9ymG{Ojs?(J%u^WLm2(iug40W+A#nMppz7m;?I-kayg9S3eJ{AK
+i-KKEkgHbfqV-3nmG!&-L(C_OBB=v%LkEL_2u7B}N`i at O>e)7=Ep~1_$CiPt;-k{TRwfXefgna?G?e2
+P3$!(?|@IpsZX;=`gqVs)z$&&3!Qd%o?YCp9ksubDqq&~_53Vb{|TZj5cU9S37QH$rZcm~8adD#4;o-
+rd6+?n-pqBC at S&?#F+j8eCR9WC00R58%)=E7Z<^XKwuq%FrEZdw~wSWM9di%q)kB6OYVrN`f{*sx894
+hxAj>JcRbHpqHgKu^Lk&nQgak?D{l!`x2wK37|<c(;<B{c$J!T=D->@E4%ZU}O3V*bu77J?*JW!Ccea
+Z+WN|MYR-X8tsODH}yP$J|v0 at H5>PGn%a$n`}F$u(MKsEUr_3{zmQ%#RSQX3*;7+7h<aS^SIY0ZI=&(
+MV7E2rm2ZcsaoNUdJ%{#o7fN<L#Yx;aY0)XWl0~fszWX~0iLV at Vzvx^d6z*l*5L%sHRMx=I$Ed+mT;S
+^FoZ9A4h&jK0XCtCC#Ty}wjLM~jc;ffTu7$+Hu6!SD#T}m(5>L^)U@(Kto~9qIy}g^q!g0;^bWrd^q&
+cERx!lb#bw&+)=kk0Up-h*j4VihJ6%SXk>v0adz~<O0uzlHTq<Ie(3b|bE7!NatDFoq)c|N|I6rY3VA
+-X_pJp|rAfekB-`zCz}&B3*tXA$JxT>OvEm2z(y_8;r`|9+W|D*n$){QanB3P{vJ$cF;m*?QTfVUS(T
+P!Lb1IKUEM7lQ(|IQn^}c#S1v{7)tWO7S(u%rKzL3*TmCq(CqJrUi&zvnfadRP)!1Jc9fgVZZV{&47d
+;O at Ty?Nr7s9MIj^v*=PVZ%&UF<WuOB9?`2({yn57O8bsCj3rO$`AmtjgQz%f?fwo5!SfV0-k0=pf?^o
+~dGR6KUhU5+OUf5p4z{{H<IsREo^fxN65A&NCn3+RgLPC3uAIs#tyM9qyzq-r}7}VvzSk2g=^DZ9`f`
+cA}1a#ib;6CWvJ9R1l$!Pi;mB3z{cW-9pm#_VP&}Wu1Uj^YGPUnKSB3j at bkhpfgG{yl_921Ok5`P<hz
+_o09PM;5RUL%S at vv=(RU68wDhW4%EA`?S0OEvjQ+G1IA at UzFpj<QqMVpJ}m57Xbe$egL;_B=|rg!4Rn
+RB5PS`hFhe<2W4Z>F!DltI5a4y|m9QdDAu((OIm%D;FUO?UKAXs1VKVY2MG5xsdFm3+c%ktZcR3f7G(
+SY_?dSKXbA`dsELknm8JF at 1*u|FAsZ{k5s91%ws}|`4HY_JAW{cv&Rt5KqMOurmdB4oNX(jJa!IDWG`
+=<(~)AQx^(+B6qn(VH|d9=2F^SkSf5Srw+lq;vEaq)tLrZ}y*bsj$jeg<-^BZ%r!<L)_H^;r`22L~*y
+v%gyoaJK%3#srsLp8xgo1W9m+wtqzRMbW+u~qT`)kn|Bs at rE{p2@%7Mwc<f2C2NpBmu)ftUDOf at 04XM
+=q$fXW}Wd9CO1xp`z+C*?EnM#EIG;wrN7hYA7oSPAmNGIX`r75SG2qV^a<7qcF-W*Rq^rWAk_u-5z5z
+`A2-*wHsKg<sGtyDJxwNhJ at HCu$H&+L7G}mY^YK#4CqWa at vuP~wQ;X4?vb~AgEy&5%J{=L7APY`6Xi;
+*);s&b4Ou at Ak!zi9HpFh;PO8^HMznJxX1p#bg5!5wFOBOC^A40(*B*P3?}NJw$TN)0bYac64Y%#C4ZM
+v_$~tG8V at 5!a(__BkrY(eLLoW(5xmHfZZW~J4u%+S(IenDs6QkcQ at PSZLp@K=|ny1>HJ4Pi}A0Wd at cE
+*uPiOWGeCUc>7A<1sl--jrc7X_6+>Tkiu at jt%&@96x;X|Mi(Lw|Sd$2g2{kNeK16Gj=F!59jR-=h$O!
+9N9_^;%57$*oY}BeF&V1o84MNx={6l^p~$uNo$b{;EWo!T_+==mLF3Dj5m1XCw_$sz7Om0n?NflMotA
+(j#6fZ2AQj^shS7fra-=zP7H*gkT9Ido at PAlxPeN;wt7PG7lM$XI(*YJw32X3BjvagBvD#^-sN;?Wq(
+bd-2!UWndl`{;g1~1HeOk2)R|?$CRRMxjc714{5#`Yyq+3crcuUWQte8hT*qZKoE7%Oz}mZEjVJg(~Z
+|R_KScyct3uEe#pPt-&kHxM=*Y=G-mz!3TIyT>C4A`ubn{eTlu#;f!??B(@s>C|0R~>FD&8TLYaI86J
+qbKlvhp~qn)Kfod=Y4`8EES?QJD{k*K)Th&GYGB0F7N<nBC$M@^|b?M6W`lXo`?o(~k=N*=oDGNXWtq
+lp at 6#~NpkrVwnoGJI|{MA#n%cAq!e)v<kC*_+cuL1!*Fr$sOLtU;dYv#=OSial*l(4I%Et3;|uJoV9^
+{4H{j@*YdERNq)00()p6UWgMUH)T!cmerK7*}D>d^3zfGy&-j<@wQKn=g013Z0F|qM6co{sQXma5u!X
+I(&c(}*ge$2Rw80XGd|CaT6n&AxM-7MWs1+_gyBauy&=+&WmdMnHA<%06r+$X{9&mVcG&n4bf%bFuNn
+bjo`;m~jYBD2=4j-faFEqoJPdaRd<ytulSP$cT({Oe$4?Y-+uD}Lm?#bDime at wlpE~_XL~Z(ZselER=
+uP=J<$CzxET)nEY^+S5))zQv#8NdI@|WN-%ZcKaG)%W=bqcpNG2Tzk3O^I?JPW8{@BLssjq5(Ql2~`?
+YGk<X}g5dmL|9k!(Dmodl5OS5Nc&8CgxGg+gy<zuv_q~=y5a^15-QB?mK^X<|8`y6naoECqLFZBGRuK
+{j8qzX;z>;6Nk<zzmYs6;LDRirDWR1WbIrB0&}pA$b#XLqEtmpsCqt+RW&}Cc at wi1wQ<BSg#vbT+A)c
+yc(+6+Q8|lFB?(@iZ>6X0U&&2#@-;6S5BCh&Bl>%~nR}Kz_gL5y^r=1Dk9o*_xZqaXSW$G2N%?s_IUI
+o<uJ(R1J`E^~A0*_D=2YzGZr63mau1&lV<@*6b at fJKN62Jf>Cv1MR<gOU1ecp2$<6A5IBMfJ4Q9FcZP
+$9S(#2|JwgVJdK+Ab8BNVyCHG{-FvHlDXfy|V at 7{Uk!jUP3(vm8&Yq0AU>Ilh&c?wN;5cdD+`^P%Xo=
+pMwjvb9?}o>FJOi2Fzp0!-_M`}TNSo&#Rk^0Hu1KHQ~)eJT!NaUPEuQ#$mvT6U*Y_Jw3jd@?wzSxFhG
+!RvI<nL5$a*JDMdC}C;#K7~}$ls0QjEK<BCYf7?oPV#_vTQ{O8kLncUG**jY_1D~Sk>_&MPp3UkdnA6
+*^2ZatK*Y)|5>DFMCk9vSb4cVWOisDwpJSOfgOV&R-TfYCbepogaYgKczn2Rt_lje#tndO|9sy-l=La
+R-q at nHwqF3&X=8VdKOB^l`xTPN)m0mdn-JUl&)jhFO9yvup-_`v^zpViY+bkQ@@yK~jJ5AZ|<vmYy2k
+SC*g-!3`a=PK&E#|1ES;=3>dMB at vx|4+ZOg6RwbSDm_D5=leWO&|DiyxU)NcZ+w`8_v3x?s~4O=Tok*
+JUh)q{$7j1|Fds-DLQvX%Pu6&-t1OyL|u)@d_Lzmc*ipM&nlU*vGb83ATy^=x#i^#4v51h9MfN(p+Yw
+8+tE{50I=>D?v5<^YyepNJ?iKO<lGre^{yeQ9eF&emslo$LWT6ig>MzF=uX}spxh=Y^=w#gBqB>C*kB
+(iiO{I^ELI>FSFUGp>cln!(C{xrNY<W@$$g#UF9F58*x6?sWY~1c2kl)6u`uzsE+pW)T1c85vs(@v#Q
+<fmt1j!B7OXmo<RK)H}^J;|49G4wXE^_{UZ&G!Z5S4u8#w>F8MK2 at Q<JTPTBtYiQlCPa2Q#+8%j|m!V
+naV<J712c57gdGr*h{6rN*HxJF;b<iI?R2F-NTYxW5FY8H<^Z*X6!Uh<N10VliHWK1x>EChK75bI;W^
+Ns>0LLhC;yqt>QmwO(a{({6|F%Xcg>~dWZ*b;@HijKywYIpX^K8HYj7G|Kvp3;EFQ54uAO at gF&NC911
+`ZC)?$X9<J26Ev^^h#~~eK#Ht>f*zP+JCpknHys?kLE%Lzv#&0-!lo&msG-EcjSG|66=D4JbY|7tQYN
+46(<-9czoI|?Df5AOsT#(Kz2F at dprV^7``>Iec1}xVg{^4pdaeqM(7cB1anvId>}!PAI-!)`I>@2b=#
+kGTOZdi+babDtt-v?!hYQO?d$uUmk0gT>-(LT2mRIS`<<5uCH6lUcyheq<@QiE$x}x6S#Au&391sZ-V
+K-F;T^^%==- at mu$hN?(NjE{N2(AB)G at C6a5#HX!q0c1K<%!$VCDMrvh89hj&31!qVCy!TWJ$IKNU|ww
+X`7Y;Z!>h8CLZmi}^w<W;b#g7}e9OZR>quU)ki0uM|pUty&Tk!%Ok|3jFRqXzgN~-wa$K<C at er*=CfS
+yT<O>$8<w(-Q+ss at tlr{x+PX7e8BJ3B;9m}<I3{+e8>$i%J+ykQ~l(~WCa_Ij+~{<x>}T-Tsyk#vUwh
+AM46JNi+E_NmMdo{0p(`&XdQ^{sZn?8(WNQ(=@^QUFwsMNDujGLQF+l5?Jk3p++Pg1&bMQaK%2(-phd
+aBZGM at 4_{^&Ze3ZYAY_m0ijxwV<>8H3yEdE%?w`aX?S~wJboGbeESm=|3qc>hAiju%uxye1EIv9-glN
+W#aVrg}O{7UH#cDI8KBGtOH-eTis-j2+6gzwit7iVo7F6SCI2w{9^)Ij%i0oB^#AQCJyJ;74~*WUNf$
+2`cxWo0@%c6grpdv7Rs)?CdZP1~Lqva`B9>Ng5c+ElKfB<XYfYB+6lkN2VBGsT{~7lwl`A~K7 at w%f2$
+a?LnJy3HGHTTzyKIji=V-SDiXC<5wc(OlMd+P(2Nai^y8VsXk7jpbGsPe+*d6F=pKLw3Ap^L{Hy#l~T
+pgQB>&#e^gkL+GhS<rUre1x9B_oAoXs{WP-B1v}0A+pcDo$P?{zv|NS^EA2Z8hsnCz(GKWxB05OX4~Y
+515iX3-vj7*=H5zAMy=do$^TY%pvv$|~#(Tf-f_uG3;q{d%KYsTg=iC2%?SC_|A8l;^%>o}jw4WdG-S
+kizBPbX{SLh`eiePY*1QX0&PI{m9#3wKBJN#wO2NN$J7XswZS2zZliC1GfmV%+7=;uB0$xDUyX2l26_
+%KLktf;uIjT4~O93!AqjFR9~MD!<3yx^VuGyK);vN(Dbli#u<6e#qfFZ+5j1o*w~a7Ej7p>;WsIC+(O
+(G(y(O#S)R0SKm?g?~~nPC%hAO&kO6T=#@Uf1ATU10hxQq4w4|_VtHT-NNSgKV8~Ef9z-rD^_s$TMC|
+^^s|XhgI`PSw<&m4JaE80#3{d>Eq%B7DrqBhS47eQAQ1k;;OVaqu8)0De^;Zvh`4Tl<J(fc-3NW#S#r
+8=v7_?g{GKS0%v^kL`X=T6(H&>$UzFj{hy457mr#C{hOhYi!(-n=9`u)(r;pd<!4cdozevNG&8bkFFP
+C&{xTqL=-9^!8$jo=bMD6!C!_0Pi+glqc&#S0#o~@oc$rv4w3Qh+^+v}&ig!Mg1o)OAlBNvY7m)3 at IC
+Dr+(w1ex%MVpv(^9b%3Ufr(tCF8nyGskW18OVY)f=XKcF`v#dh4dPnoB3STHMBnkkK;DdX8vLl0lN3y
+7;6;6!4x|`_Qb5sWV~T`YS=mqdt5<dbK&<SVL!^d7voC;83vvoTONLp%A>6|hF0!!(#^Equ&hunuSY(
+}lW3nM+l?t5H at zy}=*D4P>mc&FCkD{Dxtv!LjdiFMrp+2onWv#fHA?W7+?6ZuX`I5SuZ0Se(5bGay!d
+{`7xXE%{Q?KS>%&sFqlInmkXAWWQz6EtK86>Dx?pBc|7yq=YjB!z7+7cDY-V;D7$R^W)2XRz&hCtGUO
+$+jyl3NOu7^6&YLeyA{=qgjlPQycKesWO>~lI1Q>@GzlxU+-e?Voa6J~ro6590~?HgKrM6E;n9l at JzA
+DHEaSwG5h;+^hCd|8}gq_6jFONHb0_*{1U9wIX?G4HdBoge<5yAMi29atgZ$_*k$Nn-DJ$%aN_Q7O*n
+%OhNa8A9KYrY>WLB^it}RL5$T=2WQ}myR#ScDu}tYv8Bqyk1!8!`X_cLc1WeuMUFYindB%M`qbIS605
+)Y1~5kM3cw)Y!#JoJkGP6>eoV>ERyOvH)1v-l{-5-g72uJ9bt551SZu~k5tf;dg<ba0(k<H{eHf_ at 9x
+bd36npP^lR}q2E||L($wLjxo0VurxITO;8p1lmPAPmhe`U!T>gJyosT^Kzg^=y3pE(0PzpyG3I$_WFq
+;0<rIx~8lelouMYINJQS at hsfeJuK{u!g77!9Ub(ytUdydv7?bGlv~+gSvhUDjjQXfb+?>RRJD{M9xN;
+3Wjf{WbD~;TJT$MA+G{{L)|?beMyI*ECoQ$-ob5ESbDS)$2m*4+#zG0L*KAC@@k-!APzZO;;3N_kl&A
+K?;Mx&p>011E(}FXa at c>{oA%BSpwJH?fg*_a5f`F4gG9MpBCOm=Nn^M2ndTzSD%cMW8XujqXR5YnK|^
+#A^^SN-}{x9Z&t6tBd(DGik00E)b4AN2=InA;H#{PAn)%l2Z2S8!bc>CyuvI&Ujfa1*}wt|SZD>Lk2`
+fq{5iGnsH4GtX;~Mpz$qM<u~xnZ`oW$2yBRP(`l_AF;d$4s;o=;j!Syx&Wd*Snmv`oc;|`^Y>WeWR%6
+!ao^#c8(r-=tWP3r-mr3qvm_t&~Vl0!++p^D%NqochbI9<X(T_LFKm0XOu5pDE2&&8DNcMn`N9}mw>h
+tA at 7LTyh(w?;Ji(bBe#Nyyq+zlk_%7&;V(E#sW=6UQ(m=Pr+dFo)5q`BAe&Cla`m)^`W^5zm999df*S
+Qd^-=GUh1>aGPc_q%mse`3T8Zq!+p>|13kFIxVE6>iS{Y?y54`BDmNQu|?nl4sYuWKGl&4Z%uYVhzoR
+JnUO2;T$Y+6gQ?NZo9%?N>^pXxgy&Nc`9pA?SxI)XE?mJ>Y#+(?;5Y3<rB!`fKxdN9hbM<-SahYhr|j
+GMhQNCGM6##yxhKMULlpBG33;>nxC%^I>lzd2o;=m3wnrnVrfY*SL>-$dMp$rMrK_PF7n2?E$W4MHti
+p5yZz_6A4*O1*Zs$t9$7`4rS at FE%XDHYjzVy(^t(f`n`Qqv3hTM-+b`I*!$FJdz=TP*pWu7outIub0?
+)}^4hTQkz>2_(#5E7&ItOa!<&Zf-J=L@>q95XsSB{CAWeK9lP((gFF(^fdz&S+ at fBxR_ytRIz#QMNX;
+SLw-f2YWX5bth^2=#fzd?WntYvuCt{xy_fSkhl^(>7<gBY^pL`u#D+dw)%7&B#1mz+(oFuD;`uv;!wp
+n^_zSv4^Hk3%k_Zl2(G(tJjFYD6;rz_y_&)uj&WtrUL3c8j at C($VXKr<C*JJTvHzG;t_- at Wv^uAL%M4
+VV^#L;g8jD|4^uHf$eqGYOIhZ(mx>0VTvvH>!6rp%j+QM^>FAL=BN#3TStFr%56Hw)o&ePv(w=ak9wc
+B;@fWTGdhl|RaR~!&@FI at ax+j_|vN`<oy`=)IV3~qpch&^E6RPrw^IuN<%+`!5>kev6dOtVS;cK?B8u
+`iDoK-=z*-1ViFf63=%kp<22E4^iPmYrB3{)LiZz3_4gb3fHE7N6H&BZ+7`%`4dFkUaci-{y>K&E2^a
+hO3 at nn@P|n0_m!2>Cf_UzUsH^jKdZ>a^f at BDh3K`g07ikx7APHeG^ps^J3z5p5~WfyF<NUGx_es6H{^
+YknQ$anG{m#&4BKF>#~D21X4AD7bn(SzdmkX?Tvl66Y;>W$wgAd0e+%wB`=tfKApiW=8{Nl%Q{^Mkvx
+Sb8>bQIG<(Z2nacfxYgB0~I>qjIoyTXhL(f=M&UZA5#%?cM!=Qc;_*K|cnodYp{@MtrYgiB#ZUsBXv)
+vUxVA}CO9Xu{RP}ch8kZ5!|GS0MH*}A!9RBh(~(_>kjs{N3&_6b&q3bImr#z?JgorT>O*sar~>%FyTI
+w;}ija7Wg!qKwRHx+x)rPh25tR%EP&%&3cc=Qs4B|}0!cWAC07$z9SN%Rf`RmB&AdLr1_j2k6Q9Q$V6
+u#1a!47RK3lds>&J8ze<t3yF7jd_&gTT!3d!50o<Iya~G!nJLRnTeuEOx-7Xc<=6J8(OqV->TuBZTrA
+NHxisfR%d1eh1^s0JWD2J9iLT4CPlN`&u33GmBy`n+LEs8`*J+U{M|Sy%V}>5d;X|zFYy8yFrQ1y(vW
+38#?P?qoriWV0+rGB^sLU-6rfq7sOTVA>_P4y7eZruF6$^Iuo=tXpi<K>q}b7J944Em?)0c9MKy5}Z}
+|SSL*3t|oa&O^9_jyx at AV(Y|4;+*a1#Hp{s;SG?cpyDdnb%v5BaXW4xtDVgGmBsV2ox^93dEjz(|rN8
+3w`Ol^1?06IrQW1cN+1O#lj(grG(Mq#QWlh8P3*6q*5^MN)rKpHss1af$|ce3SrUM=)rW0u=_5c<Jbo
+SDxb4S<b{D+kp^3IG8dYgAjfmTtEOe7ssG0ka<zR^*JyKaxDq-GWLxCPXwu#=w%%E%EX|rAK+JSKK at d
+<GcT1Q_G-slDQ$wkDNg=YCPIVsG*f?A=&~A*dF$uqOl^yK>uJbztFuoB7qB?=Ln>Z!7SZ{F8^B*kv)q
+SdUpYyY^fk==E{&n{)s=(-j~D~%RmuJ8KU<0m$oC%w6 at T-e{c;~@u3J>ZD_Q)<8pl6A^ZSV*aArX5ev
+{elV652-6WKoS=q}an6KZ2MGVR at TO>P at e8uVt9UQ<IpUE<T8zPb~GrJIDXm-uP4=HZf7kJdRpmD_H|?
+)htYgr+2~uSX at Yj$(J}?)$hy%i27LdAL^?rR#UMbm#3cj~wUOI6s!C#-j9AaHMfj#T%(WTJ4)YIyswV
+PU4oQwPDM5417p>okX at N9BSl+NsnCAN^*pt2VBHtSMqjpsZV?(ouNKF?rZ(j9v54>I?^M%o%s_lNPhG
+%O_I&4-La^|VX<%PwaK+Y*l=ni;t|_~m!UNTXy#pdJPXlrYwR at FxLNygz+<aDwWU^7lYO+~k~-+zCS`
+Y~h#Uf4C<OPZsLkBT<Y@!#8pox{j4rs_gWAh#xANgaJuR0+g1P5S=b4DdE~(`3(O#m;U3yPEjk|M7J#
+R!3HlRjxD#pH;_axBJL8jo2P`XT}^DGF$6$qS7eURdAKa<zNJUWpPZ;RrY?P2+u4dQ%&xbhI*@8 at eJc
+)5QaJ$n$!`*0WJ#%SZ{;A<-&@Jt&Dn;}(AT24k^X!YArXA9dqv<4NIasxNFC(b;tBb+?MUWitZ2re6h
+iVrc5^r#~9dCT#po@`9 at QZ(|BXdHoV$RtrY$dI0gG}>qjJe;0I#9dRXv(@`XA{3|fv}@jbEVnm=?2c~
+H+vXw=$w at fqhYgdN#Cf-Y6urQ<NFNGR+H+2HrNi8##I%yWGCOo-cFW4I#`nrY9<Gs1=y3vi?V+G%STL
+q4x^dUnc!1F2Dx2rZQc`r$dH-^4e)w{MWT9X={u*C_#@I#2)`)J at +}#=n>`Lt#Jl;Y?u`^L=No4ntUN
+{HXOdl*xUSq7>S at OwPIPS|N=1M<S5*o-NaPeA$F$5?-;B~Rt_lRpWa}rq4Un9G~6LZ}*)*Z0py5I!qJ
+m-aPVPBy+NfBe_H9X&cd%!*P^W-Hs4h-^6UtFr&DJMdcC!#^zL>{Hja$nG!@Pxx3`RG{>M!yIRJCEd5
+x}jO`6q&5j2Y<cbE#|dp_JhkjB<BC6?oGBFMY^rQIZu&u)^|nUd~4kSeItPcq7lsK8zCgo2+$kVbJU9
+!CU=k4BO~Lx_pe$t$nbOoh6$H!?{n;&y}NcrbK2Nvnjb?=WVM=`3deTV_76|acZN|nGSTU-gZD9;$3=
+9OmhM~}RNB?}XR!(T{9c_$xrif at f}-hipR0C^q^31A?wr+<zxM{1v8NIDC%wzHc?$IX7(d8I$J|S2!&
+zH{^7A=7KBp_Bn<FBh{80=lYS$jPhgYejyIUxf9 at UzwE=i9giB-mHnDDqD7qWbwtxCvjTIdV3nV_9`^
+1Ek%3<g5O;`U0zCQ;?1X&;|ayDMRfpG)#dRp)BnF+EOQcEN44IV>4<&UbggfxP9BmDYiboP5`|<(-cm
+**H}?t=`)*Q^@T3%pN64mIjq492rivJD!E>jAgc*os~1REBCR<k(Ug)bfKPGc5jmHNw)$jTBC%BJt}y
+x56p=YPZOUi_s9MaFWl~)A20#y^%!z%f4qqIVXS>eqmuk+BB*_<7D=hkH%AqO_4}v<lC^j|y4l|%xhH
+HCrXQ|W3_;FpAgeXxMml(PJ?}Z^8s2PHaoXHEWj?P}in>`3lxF30X?V4eYQf;)sqZs8M~~;>%E3?@8H
+}Uu)}{4WpvFY#4DInZsydqOtz{@75hLePKk}whYd=m5>?YyN0S*0bA1+GML)H at Trf(Kra2EINDHzXP=
+p8mAeiegVDiNqh3<6oQhs!hG2+{hX_!AMLGP=ZB*Z+0R{}Qg3OV%aX+aA=v-u$fg|IG=13DNpO4w8GH
+QNaInj4vWazq$UqIu!I}y@(ME!5}MRq*3BiRcJDMwXI~J;Fpa4jbwn^Aupfhm6hdhwZ#nRNyLFi;ioK
+drHIrk`53))jiUHHPq%Wy_4rEnR at S)^y7eXz11fugkWvI>k?`bKi9-t9ZY7%e%V}{Xdua|_m+{w>kXI
+serL_bGxF$h?*`^F=z5xw48OSCQ8Q2zE+3I?5y(Q?;NkKw%{WU>;#}ZZNDG0oieXT>;9 at bTgI`<JBeO
+7(<tt;^tj^;VCXh>g_hA79E&mcXg3FR~N-6FufCAoNGD)42f*h_d?>7F7Zkfy%+uIs=@o8<DAO?<bn`
+Eugck&eIw at HMz?=#~T6qV+WD0*4H{pOlX-m09Plg%`ga?1Lq49j^V at X453|x}H-3Co4!(*voq05x*`n
+n~$xs-McT;*Yf6<SHfb{XY{N6BCsv~dT_;C;>XmbXSl{>z0FXSo;Ne_?G-VtVhf}xj(iQJEBdXZ6<Ht
+1IaKuq2v-B0%eQ2RS;oG%gqLQCed#?1^5wjnVQUj4y(LCvX=?bDTH~f at Ec=yiD^D)`*mso9vbes at ZwD
+*fh2(d&bX%b{`Pl6%EUa8lT1Rh<BF2LCcXj|51(^HZH_8p#%gL+w!mgp;(`(_u8N*~QBj=y5RIFBR9+
+?}Z++b$vvk=DgrmbqQ-fb<nyVd)p3}VWE#^Le8u;^KoPZ&Gqi&ky9(<oPS7u<+I?wM}W<c at xaye+pVU
+JI+l<8<%^r99dXVtoSXlPH?nEhE~{uoE|ihfF#*2Vd+2tGae|NgxVBV-_Ti+wf|Sia6XOq3d^n$0_bZ
+$#OjImuX|E1%9|V9IG0(EXh at m4u>lWpYF3IsVN)U5LuX;74{m(FVQi(FzuNLliXd7<U9oYc?UB~nx at M
+}@3F%fFUag<X1YahPx}FvihKu!lB_1Tedij7PB?{U)6~cT4{X6gF*`Zlx*ENAw8w@=*j;H|e^Qr6K5j
+9^Y^@7IM$j>ZZ(;E;4hGOj&Jr~{?CWL^^C?+~*rQQ~enY at gxg1-b$$GVwwU~2l`=Is>$~X<=Hg>98`B
+tt3qRVWaZm-(r);tO-vbm1$&BnWvIF2 at Bye-n`#DqtY%CM>T`(tENJp`lJZ4T?(AP+&-5$yGBQ32Yz!
+g9(K1ZGJ~$)2fpLqq1IShvSxS}bI0axB|#&15Da|BQqtxy5Hg8M=*4>iT`*ta0wp#b*d^fzgS*9F*dK
+blKw$ySt(BE at e6fI$FoOvWAw3;!k{m61qS?>iJ+UTQVOXhqg`1Ta6G!K4 at 4iv0Herv#EeSPITcK*0G9
+>`ckema~*7qVTLf~5|h68fN6XTHdy>(l8SHXX0g(3kVMsZQT)OG8a^I-k=~-P+H&wk&=kfA9c!D(^LZ
+*V<Gn)r$YW1|$29KC`Owc7T*@Loo{L!eM+*$};|lYq3k>w*3iGE64D{m)^QQ|8^tQrOf?x?XcGltBP8
+qTKa~G3?^-+KxOs2>!AlVGPvdzME+H&7lpsUK43iLM_Q~bQXXL(q$;PTopdQVyWLi=mQNS!-&i-t~jg
+Jc9cqvF#oQ)lf_v#cHJ8I|5=C7*ogpu>odMOifF;^<)-#jP}OF%Ed;Qm1}C+!6)dMbjB+3KhTa4pCqi
+23%O8y}xO!AVXw8(zhGICZ)L;8~>gsVXaOzvMJ<^ZZO?Wwsd^dx;We^dzbO4dWN%e?ArcKx$g%QDw?R
+hQ#=###*@7v6QeNg{%F<Po5-GpGs at f!xw$<l?52Ly99tdRWkfcf3u_p5X(APpuNq}gL!=coUUc1kH?C
+oMcSP;TkoRnx?9Lvyhr1+)3z}lpULOkdCW`X at KA+mo#Gu=er(v7i^1jC3suB(K>?ryK>^P|?hMKoRa`
+p6- at G6|6gA8wt+Kde&(|1S~h?F5h^CO-+lUW$^!Yku3dE^l%A4Ge%yU1)>)qPSmTIMFw`Xv`TJl{s`!
+<5Y!f$h6QSPC at MnlQ`TQ5$wiU&(?p+&D&Pb(*^xr~S?v`&mPt$@a->+p4{+A0~4Xxevq?c(#8!cc?xO
+XV#(Felc6wLZtD)4U^T_hn?QbxzK2ACZ>C*+4b%ErA>wT{!rRZwESn)Tu?EC^0EpB*QMF^f>4Jf%BDz
+!Sz(8D5A|VJouDvGp$yz%K8NGQ-;(PZe=-dWg;~z6>;l>=iDYEUfgyGZ-ZdWc?B}!BC4*IX-6?2<0;P
+A?yb`y8@(=<mcCwT<QKD8CZqCIJN|D<7!>YHxJ_z`i`m=w|{r|HOzOQ at x)z#nEpOXYiq9{${==v|i5b
+URwZ|sZr=db)Of&zI^ECZElIQ42f&t6;^0ma)0=u7`xmn{P4X4%VXg#=Y*I0;BU!vY!j<kcS^p&&s_#
+vp~8Q^0a2TBD3#@qQEsRch-f1P+)wNLACIT5g>xN`aQgH3q;4(CJ8Hpq5}|`N+%4jgG<1u$LzrlY?o2
+S_lSQwazcjK>U&Xwuw+ZI)L{p-_)PCCIYu!emv}d!TbCFAM*Zhs=yufqr6VwMJQ5Mj&fP2_ifRhfV@?
+Kf0Qc#{x3?iQ5&=Q?pnJZ!;PmjLmvmfeK3FWT%gY$%%40L=(7j&C(i}??7{r~bNOCWANqS$eKGfj!+C
+!jFgvy!Y_s8q^0G4#DQG-hrRFS!wn4Qw{Yfz at QVkxa&hJ(f6{9&x7S=DCCz at Vl`vBYCa>`G2v`<VqNn
+9hv((Z9GcQmBX2sI?*aAjucHesV?yPNTJi_h&TxbYfM*_Z7=h)1H<AKq=T(Q9D|w26eejs%AT20iEU5
+bU%XF%tTDk$0D1BZwx?^|v|^qjG<x&)e=I6rJlG1NwG(_;mrtM0D2_T0P4Il%@xMQ}AA|r7k68mT9Ag
+L1Cwjo{SgmxY-$(`oSu}`XwBKO})KnWgwI7U|aiBUM~uyUMu7A*xIGWHl|r{j*6{+#x&ZVu3JU0rt33
+9v-_FPkFgJ1)ZWikR(bBxt<#_Oh=M^{io27z{=G;hw@^_Z>ABBtSwQ!gp>D>+ji_C+L)sQsxrmzCvl3
+rX6rsde^rkEBL5q&1laE`-j<w1Cfta2J)(yblBYKpQnVw0_h>ASh&sd-hQ9n7S_)2lj2H&D-iDyupo%
+^twkEO}W=blK&%zdiqq`K&_zF#%^QYR1G#ENj=Uho(jH_A~~ouyr at I4ciq2T@8N9SpzfksV!4XZSRg#
+~Is6DCf-&#y*pWsx06FmTu!!9W2Z_vNL-{uIzPxlUTikrcj}e>$+7Vig84qab)i{u6|53%?uM5Wv=;d
+-lRBwOij^W`AEQA*+b@{Uen&h{#rm!Vc4CQ^WlrKZXw at +_(WL$QjN#>wk`tV`6DSL_e32YPAuNKZbV(
+i8y&uO$5Sov#2Zbmc})!sP4$Z(&WFCc;I8of{m6G~aL|e0D^l5>`%0<5+fF(AGg_`}{RV{scTF&_(G(
+L+TD^%|t5{=!b>;D%$-<ZGV)K&b{e<s6z<JQyiRW2**&Tw>T}N<%KV*U!PmM62Qf%;FgiDT=3+VjU!J
+y#CJG-+q8pmYPtq=JR^1T*$`iA?z3Y>pPC{zL at Sfc(+4>$CL)XzWQ`yX^4`cL`(k4xHDzOM;dj*Hp3s
+zW}sl?}<C?z!~9=c^fQZj4yYx~`sEOp5OD(u5F at ik8MMJ>-7uqV|LEh3d{-NP0hnxe=gDIt5fNw`2rU
+cE;&=f0IN;JBe*(+o$UjI-#(?Q>xwMW`~R3v(x^$V^d!^Uo8}g32ZNii{TCGF1ns>ifL2RmG4fQJ`Gn
+IXm4gHpSSav+2<U~eQoKGQEbx7z9?_7!X8{LO7+{+VP)^isQ%n+XtBXBJ1IXE&MoA2-V=&2qhM=U7R2
++ORe9J_`RKs%opo=J!?Ad97Zgoyu3o!kJ at -NFkz40fpZGdIZ`ox at p`d(X-RYU$YAG8!Rn4#N1-{$&VL
+f7)>f`*(mat-3KF`|$8G}YVahP+xO(C|pqLD(!dlTLIvq-}@LQ>^eb at r*;kLLp`j`#ar^|8bC4C~$9J
+Q7J;b_$G;q`XG6)Llhgb`Nm}I*e`%V_3|UD`fVvuiAdApWC)2jt9-VC(p|wIo%qLg-kolhx$2Rwz;hE
++J@}<D`X(Mn{C~gINvJSaU&OH!wNye^o@;GTRNNagF*OoY^0IX-7W>atYeau?mw at iL=+kHV1#2MS~0O
+?cr}v`>#=DmCyQMk8Lp4BK=(u7i?{iq)b+hr9;#5}*I}wd2j;0e6#|ig={XywGoSQwx3otACk(;FF)7
+?-K91FUgvv3_&JND)LeZYLE=Pqa?X25||L1i7`j;4`>GIxW@<l@```+sq_(Lhz*O{Pb<5O{}|KU(y0)
+T%w%(tPyr#gr$lg1;^af)Gp?q?Jz_+?(=8$j6jRowxKGF}E$$me~h1PvH<6oaM`?5!u10XqjP-v-qpF
+GB;6d4H8_B-qRGI0d(2;$QH7P&z_ at ZHM*N>*!ew!ia=<IY<$pr6zsJKI1QW=A3?23}df-fDD8vWCX&7
+?4`!F1_Nu55G6on1Z6>)N%~vfFV3JU<c at t+t@_kqO5lqhbP$0JFeHg at OY(Z9!z1z%oo<i#B7IYXkvKw
+Q)-i4)31*kE;?7FV1s_QwNOIGM{Ypcf-*VX>dQr|xEZ_|=mQsxuUILJm9lx~GyqtQWcdOn;lR$ZL33h
+{#?0ah}^3^i)-Wl_rs>cl=uDJdOna&vn%8Er`e4j~cJm(u_Xib_ at ejS{OF|sslW0Kx8Y>+hFoOS9es+
+i}%pBuxzPRbYkX<3aC8&GxfjkbSL?V3T|<A=w?)yA0O{W*M5WBk_jGCcD9huv|yp7X`h>Ztvcn)<x=X
+2;G!QO|I5M%ekGE87EJNKHT;w<07_v8+i3zbBlTyn1 at O<ahRJ#m-$oFkA at cr^fe|3-bs)vWMGYhn^>G
+T`?3d?1(F;LYtMVr2$8}r$+-jK9)+<tqwGY+y$GvwHM+07OqO~p0mVmqJvQ8PFt$qUwPf4?RHuqF*mr
+dT4}f64CZyRm0j-i<y;J6O>x)f9$`_1XNm1$9Maq<8JOlempUGUOJnPnS3=79$k)Phv&f*vsfjAW>wc
+TK$vtaQwTrU0=C=EUo-0kHk0@>!<01!VqcJ(%*C)k>2633SH9PiMl~kO}wyZ;9s5t~Ww%P5|;7*sh{d
+n$Yz84Q%+Z`P_iQMQ(NN>G2&`0ylKdnFbvHSp%#d}m*i4`stMsFgPcjZwt6c;Nt*{^$Vgb+hf63s6s$
+oCU5$Yppx1#^1DN=+jVVUQs#6(tX|zU^2s_DA}VYV&gtO93l98s>C#JYY?qW+TK7c_uM~BdOHZ9+VT@
+CF6Ehy7P`}i$i;D(e7rFa7UVK-xKbsb?{J^Sn}+g{L|!gP@(O+OQ8*eEh3mMs=R7)^hs;3+e=RCR2T8
+v&|{*5RA2Sm4wW`m;F*jPlj63fo%#x4iu2s5guCH(_m;soJXV~rWozvPl&VwNW&E~2JrCQgMrmO at Y;%
++$$!vWKy at x5{VGr#N+{4-8c%S8ahpMFua&!6K+vKUMiLjPzTH>_6r;HsezdswgDB;)*8<9(3H%oihAY
+#;|NAtv~@`?V5F=Llk>qqS$VBObqoh&KaYjZ8CU&%ZE?+yEnY2!Z|^0#oBzKntx6lnDVHON=qjADT#L
+jE%8p(r5Ei;zGElKotZYXvqm0dC23@@hPdUminm+K(iFSu6!;m%nr#*1M$y5CKN=6>@)7WchMtOk#kj
+`Ael3=s}=hN1uHeH?Q!Gp+IhUopXW%1+X-ISp>x(x3<oPVqP*1=xd`L2dE2FB;r at k5BXa-#Q~i5{%_&
+5{@;RA-QnslaH`5C5`aj?_xe!a-Ox9$@rCVUEWL#%qt~Qn3>E at d8BZU{o~`%wnl)tn9$)_yUZEfH^((
+wG{|H{8AMy1kcs;t4HhsYB49qIQW>pg_R^cgL4Mht10QT|g`}rzA3A`w|4?59&chQe<3;hmne+ReF8{
+Xo>WE~jxx?zAzi%+r|7NR6^-{Kr5`^p;j3`4#>IPO at v2mI<^V*GlIHnvef?atQIr*`um7)fi-RD0YOT
+u93XrZNBO^l^D1tK%~%<%gFZhVI1p`pxE#l^c5Ou0$bqA8ttbI372pmo$l><i#oR+D@$sHC>_lxFh at F
+a6I=1^K9am<FucZQ at bf+&oqMj#)Q;qsK at 6$g*P+F>1CN3%%wQ<HACx5RG!UC(z#-LGR)1ms}ea}C$Kr
+uW*#~saidccN}FqzHUu*5E8n|aw*7|R+zgDxMQzS?^+3ps4J+gQ=soRA=-AiMto^CM1~04#cR(ODj9q
+=OG+u743rFn9fo3Ln%FhSsyI$8{!7cPVyp`3-FiN<^9DXya==F+iuh)d?c(iYSDq{GGx18<g*T$L5N2
+8zVO9>05)4FNlyQfjQo-wpKS*>v0)-KemF2OkVz0Hn!bqy|V7W7CG4Drn^jyH{`chxq;`<b{TW39WQU
+Xfz!UT3zTP;ocn5K*Tat-Es9iKN}f(2dWBgy4<s^q9peiK-+8W4Bk6JK?gwPY3eqPBM8t&%9XhhrEE8
+cH`cQZex`QPKQnt%IBk|CIs at -;JqfJO?#js4W1W<$mi at ywJLqcJ9Xw4Y-K&0Ep*#$tY-4IkNq{+a$D=
++*@SSEXM~kmH9h<NwkZ!Ox8;N#Gvkk);M=nB9JnG+*<9SA(8ag~b&K5T8y_Z^Lz=Cf>5+<tg*)cYvv)
+ssw5yH#(r=Of0B%2IjsH*K?*HESKLhYT9s9RPjM8A=2o#~^U^j?DU)q at Q3pQC`*|&y=E4mUdZKMeM6p
+2 at qT|-GGe_0bHz!d-?fX2}Z;$#k_6{rYonE_=6<`r==pfLiN3go{)Vv+)5t%P7 at 0MV-jm!U!28WF%6d
+Bx)ugINSngd_+5#_O+d9To_<8Hxj9u_7_X0>EDp9g9F94Qlb$DE{|IOam#0A^R;7U&Q|}k@!s^?+uC9
+XyiL2{zmNi&ruoryQudIDu=}{Q5pKXsP~_sGW0Dhe~!xiwExHoKlSfX8S at q>UEk;Wu>LqA{%2|wrfck
+b>khkg#l}R~pzywu_p|!k?4Bf3NEmX1_I+{4ohKgQ0THlgEZA1 at shPN9r#<}B1}it`#v<Z2vWMg4CYD
+Kd2zC~_k2kS)OfMM3%s0QQMl9u>?z!nN#C)gJFc_nH2pX+Xy$91=b#rowLsY7kJ7HPID+PrUB<Gjt7I
+J!4JUfrp8v-sdh9lh$Y*%;fLsUsSkA=Ws9N*Hq!T<(IFp1yzCbo8movvJNW1c~!UFx|K?yt|=aF0);D
+NvMX?FoZrRf?9o`gjU248<d^rx>?zDp^7h&y85dVV}^$8KN#S-x;mznXtNJlB%y_qeUAx(l^Ybx;|#v
+O;VRHWWp6Z=d#Nu_XjnK|1ct!^*QHE_zrPtGHsugcJ0dHczZ5VsEB{3Mq%C~DaG1!KVR~2F*GQi$a2X
+s370p4c~wn}ANXC!7I>0G(F#fNH7+aRa9Cqm at d;~4KOIwbX}!m$%og*+LywF)#!nq#Zi=v at F~Mr@!?s
+I`+{KuzagS4Zx<B&t-W<t3)i(!q=Pa|O)Md&qhdcU&?$a2j);!p8wr{ozkb*7{jq&V>t|{%1)*Jj`Su
+*|<vRiO<pG=)-G_D at fDb5!DoI;f(9&$HGH#4mg3BA$ShXP+w&$*uk5=m^krjbpI(%WN1-+j3<mkQe*J
+518T^Kuee2)SeU_QaD^{fvUe&o_RB8~b^Jaeq5tXc5v{w(Qy)wk;prb!bHwxp=r5X@@6&Yy=bPj}`UL
+)hKdM&Ea%oKYSEyuK)&$J-)v1qwvH(yX1?;#HXi!3ziIpFgQuFG|f^33iKmBtpjJ?ObjAWs*%0q{g?<
+KTlA9gBVX<T4DnvV5r19>zMitivhmBch9CiCvdPO;F9A*iKv)p at cbb5bZ7Ku!n$RHf1a3U^uSKQb3(8
++IhRNGBkQba2;Nlh3kvA>u>{aId!hZ6lN`X at VpQ9J{v#%UC5LQH9N=P}FO+^0|J{_=B*2gab5-FZ2EB
+C+kr|DA_BwPGJKmy>X{BB(WH2DNXzP#!HJ$p${CSus{+A~1Hfe-octs=oqTJH&g)jq~huq{_dzTCf|n
+lu4%h`l2rzysHOiAn>tKmclAj=g3A{fOv)Iuqz)DnHHSPyBJ%ayW!j(p~Kn%2&IcIw=c*n=*g4_1$jJ
+b=&cu{T{zB^I<-(k*S<h(mjpEaeIK&nNpM}yAMZ<JWbeky2G-0IxoApPl7sMdT-bslFm%L&CTj4mon-
+MKI&R%#Lb-vIw+11nK^Wxz`zli^VUu4X`6CuAHPwsXl%wk95%2~Olfef64-_5My4~9lV{aU58V0?Gp*
+Av_t=rMu at g9WJbM(M at 7W7>_PQ3`Ysx_~PXWbGJKfyistwau<`ksKd|Ddnh(e2cBQbZo#=LB@>4}R&nU
+})xANKC%s^v5p7e6KI#W^+nJ_9|B3T-Hl2Z_|#s0;TF at +PC&a;To3V0>%d&<8=+I7gDk-xw6M;X!eUA
+zSXu25M*GK!z9ZAvjp0F at Kbu1s`+hhtK)D-)q&goV9- at oVl4g7TsO_({f=mtO|XpJq|pAJ13 at H*J}kj
+xd)}J2soj&OYXwXJ&vXA?cQl&;`S+JAk?VKp#R%+X8BGBH~H!2sIsT+g6~7Kh92>g2m&Em!}q<_iq-v
+uDEbL$uQ~akcSfe0D~6+P#ECsRh>s9Ok!cf1PL;1jt9lGj$Q<{JyI)R9?^V{82_EyF>D=eN(;vumuiX
+6s+r!0Z8 at o8HtDAv_8sj6eK_F%=vIS(4xU*bP7&z#(xQ<oxm?sbPXu7h at -GYa@+eQg;E_=68Z8t+`?2
+1T9V_y0>9N0jB+UB+oW8dw{N4||YpNSc+EfPw`jwru#>lLH6jWeF|J at W?!1>XRGnGMsmJFg4qKZcmUx
+#Tm5`Fi?y5W|u*&R`5iW1vl)rpZq=ir#Dqk_bS;x at fa6DIwyuQO6{}YZZv_rLS)8HIU0cZ%Ajsx{ke4
+nM at 1{{y=sW`*%))APvadt+5#jFls%%23Bu-kib;!R}mT#f%Gkas0bk78hz0($vxl#kGxutaDW|T3c8r
+q;nv%%AP3}>NDwI|FS`O91p(eVAtVF6Nb4o}%U}Whz1ZH55R*%cw6~w`<%s;sx8Q#lV)o(5#@7I%i+r
+;E8Dfg%&4%q;h<P3R--np*XYwZyGiZ)s%*hy$b{}E#@wy-DCw_6Az3&!!yYqZo3Inzc*VURpC;XTPj|
+*{>)CymqKu0F0U!*eA`sYk#n>y+YJV9-<K%4T)nqx_cL+#m=e2;=hxY_ko*ESKFJAM+65p)*J?$Tvis
+wIZnz+_wD)EzZCd^cc+o4Kx|m7(6XS~cx^cid7JOB!SUw0l(c#XH(N$dZn;!sg|4J#l!+Z4Mbmtn_)-
+&_nXT{8P-fq@^lm9%CMAQ1DeIT8*XI+rVAKg1bS~b5<A;EgnzSLWb#Lc}gaW>m%KolSdVC2_pmCKE|5
+s>boE5N;2?pic021JrHfGtQdu3tiI*V2OgUTdC4D!A$J%e{|&_O^X5pB&uF?(6=dy>Q`T^nt2)xML;g
+n)^VL#ZYfgO`Qg>s=qQfP=JRPCkS&J-T?akcuk9!8g(jh)O`5qcXZFFTfGF=k0aH*h46L(5)+Ff&Tve
+5xIMpS35l`zOh_j!|$_MpvtFNfZ(I^UinWCh5K!3jb&=MuGK3dN2 at D7NO3VGr8v#p5<BE|$XKieH;|v
+hm&WP at ErHn9C<M^FnA>TsN^<+id3QgEFt7SXam{rlvlI`+6ARK7Qo3B62}0czR~%v5t#e%j9Ohde?y%
+p=&d;-CUDrSu_*5C3I{Jz?iJypEnjc&S}h_sj&0dO(;K#PJspe5X(|NU+Y}8LxO>3JbQ%O%E33`tswM
+*Ij=Fx9*sEpD64#cor^hv at 6qsJ`~M7L4qbMs#>+p(mtUR#8MwTk`<){W!{Ri+6okeJoWxdC|5V160P8
+dIl1^Wlf0TgQa2$D+hrfzlKnCzt49=`^$mhXJ%DiG790VpA0_5)2C?Q5co9P<#P&kkqq2DxEDS%_xE6
+iE%gZ(Oap<n%{cn(@&ar)m>45AO@<u|&{6Mzc|ie=V&pajspTTu_Vw`H$__Y7#Htbn*e&x&mr2~Y`SG
+hZFAIH=C~t<;GP5<$xslW{E$CfDwii!c&DB8vf##rjeG?)U5YS3fh6H-ADFE4g?>bn=FuP{rY%Z-I;T
+6;<AjeVGOH&r#*`SwQco@^u#f&<O_^;mrIlhwk16wo*K0LwHMUqMmSO;?g|>MrEn1XxwoPDSV0;VmNa
+!C!C^7eW)9yF1?}Ux10s(3Y%`V9p9jNa1_qYFe>ob#q-jd9Yw!p`c^;G8=)$#$Bq at 64RW^wx(dxDx?e
+N03n93!Gh0qPGOvuqY&4=ke0 at f;Mcd1IoKg42<DZ;S9T&{5S4gWO_A<lmW(%L0&g_m*&m77~UvyZ#a^
+65AUg-5OeLLg+c85=3O&qGH5JeYyya!j)7`Tu!jN<ly5yc5J5>gFo-m+f)kd32EE}^$HmlTsq!%9Zoy
+`;)vH!{mG*E^ruTdAIIo{!yaYw-ax?C_L^Xk@=JSCqsK&GWWA7evm-twdZ-1Z+jz`7s{qgdfl2r6%ng
+D^)XhZ}(E!_nUT;N23CH at SZ}i9+A>Fkvf+fcBo(tL$U`eVX<5$Oh%m*&x%;<a7 at Rztak|0v!-?gp6n`
+ogzjpnw36N&?p8KgiRhn$Vbt^I!1{}KR3GCo8=RigvhKD9y}4RQsvt!b$`_8lwDb`oM}(lpiC61c^Um
+k>4=~}JPHAG#KM9|`P$ykAM8YDiUR=VPz$s6;QOR=Fx;!Ve2olg%@*N%T>A8r!fZW8Ek}Xd^6yxyW)<
+em&@a?!gY`aomwJnaydn=QOL3v<&j5sG~KgmdQ-WA+l8zZ=r>2}+X^aiHx_bY5ZvA(@*hs*c+x8Il5=
+=l1V4Ge8KUs%`gZY%MSRu*JObNx at W;i0bry5DCUMef6UMtFJ%Vg+Y{BDc@`$S)70I%qx8L~b}^&{jjq
+dy^_MdqUkugxmW<vv*8Tn%b@~a9MgFoM(AuiKxkNJZ1;O36{e!wG~S=S7VL829go6vr}z7)Vvkit&j8
+0pljcZ at WVh+4BR7@Sye^u5r<{t-STI69qf$fh*Ou7JjCq%C3)PWqBaFeKm!(yjG%@os}mAYp5fiay_{
+rojrnyVzpvcrh?ygg?XUfD+W4Xc8QV34<m~F6ID?szR0AXXy-Xc<q&eN9OA=ElE6pf87p2yFWJ{rvrf
+2O%_lM&)R1yfOo2MY>*~N+wpF}KvR0VEZ5vp_*gmPUBU3Ci+6RMpsVSm`(JY5RSaPP+cm73$71&zc-I
+m1=FSPXT;@5D9d3H#A8=CWz3tMkM+goH)%^(ruDqPTec;Css`ottrB*qb3kBaA+&BW|Zodm<Mn#w0Sg
+2slG{i+rHobkv)dY$ScY2OJqpD#j^v+1Hz^Txj!6g at UW!Joz(HDDbo6ySm-*^l^)OT-vn5y;;uibqG6
+u8TS@@*zF$c>VBuDY;%A5>nA^AAY~h&cbP&8Z0;ggbXxW~Pgv89nLG%&Gv6B?6WSY_m09V9p>S~|9rr
+oAw%jQnqdjB~N-CS3D#MoCT%VG at bK~c1sr^|bt|ZBq-6SE(=r6*ZGY{B?o}wD}YPoa}xZY41w9N!;<e
+IBuPl5F(8X%t$8%YrUm<)Y(&EF6raQ=7UHi4iRMz9FYQ0V#tqdp}?z_SGb5^5y*asx*J!C+Ysx~>5 at i
+i5Q3%6L}dl&xWS`gv&*18n<N=JJZ5K^7KpC<<t;tr0wsj!S^-eMA6)1FT<Sus;eaihfn;3p(>qP!62G
+%+%L#8#v|Wpk#QB+o_j;ar)AmTch%I{ww98Ss;F&GcU=x420D{;Wz at xW%8w4!Z3h7p}=DBcch5l08$k
+AUo*OT(o}u2$r@`Cia-OT=vgD{`e{tI^ZlkM^jj+ORc(HyBI$R82rv=ogNkU9CtA-}KizDI+-%h6*#z
+w#wGH~|5I~ebKi$VMLvmkRl+gEkl-670{mTMy`2KG1a{TX>f+x!l-<nZ8RYzZL=c?YseuKtGUbYZpN?
++YA$x4js{lU_BzHqz3vN)|UD~_{FLndN5L_`SL%A^@5)Iry&rF4_0zk9YqnD9@$@ecPI?WZI4u-p?|?
+Uks1?9TP2<4ZByJ}r~kvryk7J$cS6Wen?4M8+LnOAh-$M9RK8vbRK}n>uAFG^g4ypNmc0hGx55YM{gX
+gEh%9>XwF at cnLL+p>1%Y7(GZ1jcETMa)(b{;5g!afNz}L_?p}DMe+XLSDc&7mJ|6iS92#J->a3(M;)_
+1ppI2f8?T3=Yh27iijZRIpp&;zo=!bi at N+57j7j1rk}ee{$4a7=Rw&lP5;?eT3RB2*Ui_ZYpu9=gR%V
+50<Ep#(G!?f4>HF{)9&P~{^cjKe;UQ4Xc-k77^(Qh#SvRaJ#%uk^(vN%{@X6T!x7$|FY`A_`nel2g2H
+qR*7k=-T{iOusM<JvCV|V!?b at Zz{e7g{0G)ohob~mppUG^%=BoL6NLz(xQOo9U89m4_(>~+OKa?p)Tf
+9~tCMrvyuxW;(vzt~Ide7$sy=1>+ag=-MF#(vSu9~+Or!RW0fllnLNtFla>zsZ0(FmF3*Bnb0}*P=!f
+uR2l;)N01Bge8iAP!_C-FFP$F0;?p0gWIGp1y5j5LW4rhHTqrOCX at X()i{D;ko*2)?Gt&);XdtZR)5g
+bXm|rMj at qPsspxOK_|j0}$$qSHW)ooL7-RDz#2Qeh at ng5!PMS#(0(A?ik9=n6{cR1yyoPASM=^-vzG^
++dD)k=EDc)I=$R<_OM{?<bcgMSsX0a}$+5&1E&8LCC8-l!=ls}F^e$B%_G$mV(C{>2QeRS`Io=@Jgi-
+*L^Pvt5F^sd~|8p69c;Jki2!P`;6lKx#;$}Pr-!a8|K1hfE8HVK{|q<xfM&W-r-Jl<Ahy9vKZfC8hG&
+k~@}uUx>1&A?vqEj2wvUDk3mn&ds<lN?Xq1|3B=EZPq}+NqH1!QD;VUV<RQ;sREXnp*?U`V at ItsfbM)
+U2JkL<ggQ``B;|>QaH!sQeQQhp?PX&K+fq9GZcB4(b)6vnP27I^N!W7MuefxFuG1JecWzERpb{O7Ah*
+;m8t56kK;YdX3vFq{&BLNm%%&MGEv at X))3EKUFrriV`a#YcDg;c4{d!_CGx#B<Qu;~!M)$o(tyOB0i9
+hPcZ8FE7Rv{=5e=9ivIafFsL$`o!oAXNLrTa<9nJm$pLWhZ>0p&DkmTVb)_NC+OAb9=N`s6d`6!F_sl
+2pNN~p$CZ(aRF-cV=fX`y9DEqVMt0eW~-v-!ze^jj%#OG|rv$8VT3+n-E29<9fIE15`$vhN8{=(7yyr
+wPz)bnTA2J?CJT>xQimsY)x9T%cYpC4!xjZfaQ#sj0`YlSa>#23x4>W1b0wUL$)t6UCIYyuRu?A+o&X
+lI%qnQS%+7u>cBZe+SDq(Za)f$CQO9hWy>XZb%nLwjE4#2lR48<x=Y!t7uOtr#)Dr4KCS*fppeZ>-cK
+g<%~b)<5}HZ&PH-fwyGtX2j;09qlU6jWO!1ixs9(n8P(x{m)%3>edZoO-qn02`=g=^+HA$w$D=|VzYQ
+PGSndmp*!YuCUHL5>HidocdvV at b_icswGR%?QZq^_K588GO@%VeJ(_(wPvtxcK`j)HRTki at UxoNMh>}
+$#zKMhX@&3l5p3}=GzRNPsnKLgdOy<V#RuYdjZ=ISy0-~ZQNc9c|YwnE-Fudf(~APDvsf#WR8u*i?@S
+O3GIzJ<qM4)dKH$fsr at IY^Gu4A^!<a9|X<Qul-fxl*vN#e#qU%>Xn4 at xSQvjkpXD?)2q0g1ua?^4CQx
+qT$SIWAD`=xCR6m1-A6ou~Qu2*N6GYPv{7IE^{z}mCgffra+?~_UcI_Uqu{Xd+nu42!aL_;2#aZ7GNX
+-v<ZP?2snWRGK0t~hYEs`l?1F|%WrEv<Q8ni5y!8kl0T_HyYk8k>mLwAaaZ~ZeON;Q+o*SdTM-exB~R
+&O at L$kk|Efc*IK+4w<lZSrLo{Z+=FT6g6NdVRc()aI)=0qs6 at 4GR9>_$2zBu4ALN;F&_}0kb3ACx}0#
+q};JB+^_d_Oh?KlEAHjrN28mf1kx+;x_pocH!(?}#-hpIqYr(Rl8iGqHELr*RA>{lj^LM_*V5t<!p}A
+;l92V*uoP0lKljX|fL7N5;_kUMS;7oebzZp$r|9TOxJ{YNPg-VKiVN8xRfgLYypOvc?1x6K|>e3>!mv
+NaRe^0VJcG(O%SOl1L99(`Zz0`;<sbGOj!LMy~inOV6c5X7Yf_Mo?`zhdd|yPRGr=Sdk{gEW}mC#oRl
+xdpb$ycxsm2h<nB at w-~R)5no`OhK?^+2eUC*-flwc*0T5Hm};fyXHa(_Z}*U-PPN;>-LXA79^Tv&%!g
+GIU(5-UQR8M+A`=DYJ-@%w0(`ytxq7QG1(<R`oBa}tt%GclvyhQIS|65hZ%HJ2zUyR2V)rNIZ^hzLv6
+xvKBF5R|<K{@my^48LtBw$TI*z0mRTh5o7)ywW(K$UOO+4ZyMV>Hv+!CXv9~@Fq^CXk8kW4niu)YQKc
+GgBufG`H;Ir0#&d&45s9mc6b&loZ#u7S?;Y2WPFcSydC-7={8^<C6%eb#;WneEt$wQ>q-j*ifDyX$p1
+2q){nOzfe_jRw`&9AV>UMw%P5*ui$CVy#45<XA1#BbB at 7Vc%@`s06hwdc0z=zbhM9J(%%4NBa at u*%S*
+^Pt!Qb=X;}9u6zE`#kayiM}lB;As5FDYy>I~A=S~_p(YhYyGbNMxo#?9i%b<NQw5157agf{-Hps+RWj
+v`CNJ|X9DRSorx<262n&$~uN4hZu(KlIeHXNFfZI!uQFx69iOGj at Ay|1E5vEGOS<Sk2g|R`Kf9PaD{*
+w>?)N}J224O<=E-bP0kw9#looJFho$Kk at -|oH0o!&e*ISJHf8{DJ_)t%1@*<V*J?qyf<`F`s9r4lSS;
+6hl<80s)Q?%ljZJ5JiMhL2+Id1hsluY<GUJlGz(KJX1u#M(aG%>KPiwWjdyTIcjxun2)B#%8h+jGP$b
+D;LMDzmc`&6xo}bsJJ5?8qi*4u7-Hpw2SEsD-DuW4oF at CO++MbsMf3ba!U+icfhbpsMoMPfCK4HSvL*
+|3H%OGC at Xtnf9kZydA_&@dJv40ACS*_+hV+Mnp6U5b=YM#k)kq8oKTpX1?e?0jOXnnwh(5zM5C~EmW>
+;sAT*M3A0o0XwzJJ`7Pa6Lw<QA0mgvqeOO#(%=(<V|x&T+(vAx&O6*q7*;903Fo+-i+)8UpG=5878`x
+(7&y at pU?cSLW_VI?K<A@<~6j6FN=<NBfR&<E7csyJhgATDK9`eCND<1)bTXeQ^-pejOV`==MPSK{Ppw
+j9&X)YL{K)A#rJ#s;DSk&<ogP)E9-53=FN!6S_2_0jd0)}Nic#+wc7%a85J$!d(5RdU~A+r2_a3#>Y}
+?cbqWDy6N5)|B8}%+je!3W@#PlP;UbDaEIJ{Ww+EBNttJH`*Sol7op6OB9ak+OQbH7)txyZojT7+(D?
+tQ5oX1h+~w1AW}5S>H6tDBPg6|JEqLBPKiBzryme|2`7a{^L5RJ){u#GPKl1v&VgUUN+vEiZ#bXiGT3
+g3IIkxuR7RgJE{Dyd7%;gZa1)M$RL`o5>yiJMr+rw0Dp{L#QBw`k at Rt`gS({W*8v%udU%cS{_hG9k9`
+^%T``;MvgR%YnSl{`5umpiq1o>&1F34Uapu~vGKt`7&0LfZ;5BjE$K!GZzGzOF?S^3lFT`tke{czA!0
+ at M{!AhkxJK)j8iKs6Tjau@|wQ6$J#kTlqcW|LQvnEC~E1La%UOQIP8!vPmm9CXRBFMdX6pnWAGK&{kD
+#emN$0<s`0xm-yen!H5X-jcl(*c at M}<$C%0Kfv-72VJhep>9eA<eE=k5*yMUIW^Hwoh~o>cKuP6404}
+u?$+=0&9^acT=`5HD-8k!LA{IIhdv4FUdO<Z4j^OlPUn<0;L;%*4f!9meZIP#N@){cye07GTMDGi<Zv
+C>8&^J5#+SF;1!RcQw9++T2fi4!^`5+V9h(iueLGhFJoS&6L;va2KV}a7CsSYJ)9NR)=69WA{!Qmt0y
+ at V4;*{-uI7v?O(5~H<!>x1~k>Og5jDhN$e$HUXzg#YRT*GAKdBy39-r;d+Ng)ziTgxpfWJ6WPl!<EP1
+=ij<JffYQpV-@=QHp-5wl#Dt;z{4|r!lW at POalY&GO;l(1jU^ZJOgfw~?ZI98RgBZBH9l+sc~ul)V%w
+HY=S|8fc`H=M*}ox967BQEcV1UGVl)JrP*PLd6mhDIVn8Hl at +FfCYy{saD))JhHKmoxEQlj!7l`F_2`
+^BZ16W+5CtjHdXH^%S6U)Y+Xr|_GEWC4VfO*!X0)v23-<@ruT+BpCPrOxa-3g^Wy0**V(H(x_F$=sz@
+1U>vRj$z`6VUPFvT^fhG at G!xi&aWiEq$CHdA5&GL;A*!uLXiy>H(R(#cfGB`z%FJCmE9szDnyO!^u=t
+#EdMOr^Z#xFH}Ik1CLTW?am+;OG!J&?2p1$zRdP3xKt?!qY>&jS5s>&d0Do}ga8w<lYVr`K#f?yp3KO
+D!G&?qg6=@HbAefF0TSTe~uAT7Rk<mvZ3sfQu}?1}<d5wEn(+uvbheI9cPMz!C>ey>c424xqT;Xa8nb
+#;f4>xOf|Ay}^3?3<fMY)dH{k;5;Y>cLauLVC3~c{4zu%IML#^oHVT$u6L3w;HXvuKeTnA<=dG+uc;{
+D1TZCzOA4{%6ytsB2Dsq)cW({)^u4LChxEGO?HMI+Hvn&m13v at s`Uq|S2KexF8^C)E!3*nqjHhpAro6
+uu^)+DgZW8x84|<*O&7b8@|0>Y;Q#Za&wOCJ3-7j}a-reS2zklOO2Zdn7b>z3FY^)=TPw<x3KNAiH3S
+JMn0Cz^fTUZzW2PZIGI<2p(2?y;8e&UpVy^tHh!%E-(jN$9)GvMJ)>&(Ea{hc<N;=g?_p!JLK5{65Z;
+kLV^Sa2kpWMS)Mz3BTE>K;W9 at u;dr7>+C=33YNf!wZyg4r8n|;Ek>u>-Pznir~)u>H={7)nCrh`%({m
+w$}g2QV)H$*8j;;552ARiolD5O!~#I^OS;JIu9RRBu&_MW|Bs at 94B21H6q+Zy01;1!%51ek}4)RES_~
+&=PlI-I+ok$d={e)71BfG`Xh$SbDutia}8_iZh&Iuc`Y!>w{Po5&K=nLb~_5k4HnPO^Yx at 2YT*{i_+G
+RT<X}E}$#EN-C>=diR2t=-0%COvH#KIfci8E4u*v=TIw{FAIFt}noi#U0S0xw<XS<rHwC2zsw{|E!P}
+d|x3_i(FIwnrodT^Ncd`s at tO2<jNNg2l%9v9VcG|DQ at fl49kk~*rm-Lc_Ay-X}+tL#0$tZU*m3JqM2s
+Ioa7Le;z{LLC>0bL-myR;s$~%_u1@>ef`Hgt4EB%vz}(%q^W?bHn(9`h<VI_RId&T4U7w3&BB=!P}vg
+cJ}}ESN>mr9jm0wx-zSVzF+zwyJUY=m%p+mI}hD|{Ut_2);_ZCoR!^Q$|Y6-mHlzl9}67*- at 56S3W*<
+H`i?u}82agkAi)AE8D$`wm=mu`2of~5r3|3U7y-y{%mAJXOpZU7J5GUh2pA^Ez<wWSJfJ}*Hc%;kH3-
+n;yM)=wV}aap{<=@}g@^xKA^OT|#;+a)lKpqgzI4)X(0UhRAi<fVV1ti(Nhh-m*wBn#dDrAs+p+R=;G
+;r=jA=xJtI+6Ob_TRW{J!_#2{r_~FWuoH=TAS0EWOJdn?I0G9`Zz4Go;|dC2M0HzZ5#CD}NX at B^Wi?y
+aia<B$u*@PWCgw8?c2pgh&1c#YetbSD7wVwNaDoa(!V;*HtLOylYbNYV7NpVV@`Yt)+S=@;twLue8|t
+qz$FM-0wg(^6N?Bk0*UO=Ph4~f{jA+sV(2=v`F6_d^wf`$Pb1BvTL}-WPem!i0tbo5V#9iJd=ee!ip$
+dtf?bqeG7_rOI7okt*?hZ+Gt8MtVpn~&;ydJ=h^EbyROz4*c9zTzg*TqhTvSxiu0D<;kn+BBx!gr*BI
+hPMgxBuK)(3vIfeoK;-v4``QMRqh_i&@u!07+*;{*t=LO=(J+tY4CDCrgXu-NVxNAG*bz2N>WZKL?)Q
+o6L8`9~XoLfVUE08>1HF_RwAFi)Z=7pWO<Gyt5lE&e7$va+87I~)_8{X%iN9$AsE033?M*`b&2t8YQW
+9j4eUOBmd>?#b6nB%Z*M191qC!H3oagn&)fvOJD(WM&%z97}MH at eIAh$_AcVSaaFH9sdsqtc^Ovxs|Y
+Vp1NLH%in`oOnT&`z}(=g0E7t&(x>0JBu?>sg_LPEef4+xmj+w8qLLU at a8?qo`}O!W@{qvg-Uy9a0`z
+(t`i5Rr|_rL8^#cHezfA;9F27kVHxfv;{tn=y5~JV#|OEn`1K?7&d$x6Lw=PGl&m*z;62Y>rS)riZ~W
+BDZ215-=sqb``8lfP_HSJ<UTV9D*J!8R-YKK|CRjG-!XS|A)2<GWIG`_?W~|?lczU?}X4t3J#@P)APG
+)ii+U_T1{j;9Mf@)4NZ1m;cPtvFREC^G$6id8oc*DMQy_M2VSUabkXfxYXxb99;ec!+k<7^NbVHHk|J
+MQsV0|}jL`b^t*RW6;{XQBAlhrMw!O(|S=!iQ~`>L<|-`{oKC2^*4?diL}}>xAeivXtJg7~SLN4!N5o
+x?gskmO7E78?GlKYT38D at qnsJgE$%XU}5D5T>|y`s5 at 0gMQmVV=0XeGh>bLkR1SQbP^Gm?FQzAE;zlu
+ezrSFQokwT78}t;le#Rit9A{VHw#xZVMdh8P`G+<K$LRSdB{(ZD;C at sy`L4`mMM#I!e9rtAD420S(o8
+?#>i=Mv52XC<5Wn3i1X}$JXmeZfCuc!#H4p&9K<a4)95e%s)j<C9WduO8pTcI6zwE_mAg8iIC at 2w3UT
+Gc*Y~)2aNL;P|(h+Fm2HoE5tGEWFk$zP}m;>BiXO*F#Oa^^553az7zdQ}l7}N^J*}q8&D8e8aC<Oxcv
+M4BbTrqZ?Do{SlKrcG^Qh6a`Fh5YpxDG}97B({go0t9Xb_(+!Ak+1p(h>R)?_VKP_as^O5P83IP5v7l
+u${=IU%0t(eEGG!ftw(^kcX^<{oRl2H?=e$r7<sWSwl<~u!je|napzUwJ|QbcU;o1KcDVrvxWX-x}VJ
+!`qgy*1hl5S-4Zu$?~?aC6P(IEmNHjTDdYQ=o6)W<nK=AlPuz&cRe3xi=1Dui^1-q)S%SD^i>QV%TV<
+%0j!~tZwvDGvqkH_J3?leJ7Nevj*`t)?vhb~0ZmnD`tX|`j0ajILi=TG64v#~sq}nsBZ|p2wE9}VggE
+gH-;!r+xuQ={@=r-=6#-|c>v;GXqr+^iCc7p7D3cY9F#qb&@=#9K7 at fp^$y5bRBm6rpd2F;}riL2~vY
+ at Nq6R$JzN-|^jsf$7Z?`hS>vk0r;^e at kqSr|6{=&|Jcse}oqB9w0o(9XvpSBnU&8XHjTgL3gj++<7kn
+%*yJj>Z&$#H6cZJXJ>*iADB#>^K<8P5#pXoHPJEye&AMYBTgA5I$^vhlGSL_mO6X}k1yo_cMIqr>$Nn
+=vZD?qc)D-DegF+;_gvicGQn!hnNJM)bR_I5e}dM#;qvDg^mp1|oTnxBw at XIo;Y&T{jmt~U<-+mdZTt
+daz>g at lgV@mw&|}sWb at G&Xrt;&OwXYp9*&c$cH<#z?!^1YXNaJ!2FoaIM9_S}doR|V at xZ7}Y at Zf0a)V
+d&LBpgQ7p82O#q-$JMjB4QutTonh82gURnjVPq#3pI;d2X>lQv!le6sBW|I~O*gJ(v&Qslh;f9vnd;+
+ypDfTa%Jqg{~>y%LKv$O;yo+=lj;ln>Fh?JaC+p at 9h#ktThi0ui?1b+%q_NP*Q*hjE99LD2+Dq)Jhio
+>kh<yE1y!608MNA at PL@2c$L}M;SBM)g|#bc9wg3R3)1WkuxN6R^uC-bs4mwfnv3fhIMsQ7cJ&BaR|!8
+6i%-q!+D+5p-dhIFlVqm&SBH|jzuoF?{qL^8S;j~A<!|mgWb1$9tbhC8bdP`cak_arzA<Rm92xJQz_M
+cv#~|M#+5ZdY`YIasr#t?oKp2s}8_2W060v~-{t<E^drN0V><F?C;vxH#cb5MP`*{e67yIlTmF^h0fy
+~~ciN0IZsl6>deM_CdZ{6t>-HR;ycptq-Xe9Qlo>2I$yPdv!+TUl)-i4AJ-`n7+x6k?()n&zA&`IAqo
+dmSQ-v<_>#Fvgy1m4RoSiIjI`S$VL5U?Qr63en3%Np=61j5+t2XN4QUT6S=Gd>ei>Bc;H5Bh9pv`ha>
+sFyA*?=4vGiH`7N?<C+O!EVI%)~<S6o<+g<4LH0}#fF4$R5ty^dPi~0x;MK3yr=xQaf*Iu+jkr0J6SS
+WG({VtO-1~S;6xMOJ1~>TC~b%ubz$}$?pvFj-jf@%*$ry;R?aWZm~e7yF2HB6=Ubj at 2f)86kolp$#RP
+yAXtUp0#2nnXS%ls0((>mMtIr25e3?Dc(DCi8ERX2LU$|;TQ9Pwxf<&Txss>-`fHi5rtOY^P!w^$r$f
+-EZ!Unw86^=?H!t3*0!{gxz>rrf<8GFi-(0<&x*TKewHZXvIiBNNN#1ifObC#sMfI8?MGoI^95EG0Dp
+6570&#nJ#h%vo%aocA8zzp22hsE-01C_}>m&-$9_)NxSJn~jhCy*SgwN89BX0Sctgd(|3m2;JHj!aHY
+M^r_iU1Rw!4xt4+F889*t4UtULw%T;=w|Up#du0>)2%dqjxR4NnUhF9z?xtUR#}~hj!O;yAPunVPCz`
+F_T)m8IKYC*rE#_eZoe9a6Pc&@jIxG3SCp;D7>}ntU>yaG<kw#XUB4J6_?@Z%Kge$x*3%R^y%GB~_lm
+yMxvO5Btw%~WP0#61H9|VgZNof&Q1YC$B9K1RnZI=IDuMSw6E5T7biGr3ba*VcwbxyQTFiqiQ_ON_6A
+ at ZB_(#s(s3voT<i{ul9 at nyvJkYv=uNkb0arMay%c=o9Mpv}xK{i at zIUuE$Tp|xC2|B-y+|@!lI7?5ri
+UNiMa;YC~*-09xO*h#*vQH)%6D>Gxtbsw-#q24ccn)_*5^jq_Uc7)*pAHVW;FT8_0QRpOUFr?Z9=gK3
+g+Y8jkV=Q&{Ni8+5AIoddfkk2>fW4J>_T~o(6?6*DH9_rPI>^`%iUr9tKO0)w2Xu7qCM8=Av_8#qgAk
+Hx(9^*?LbV<n<n32;x}gdJmk0SoA{pn=Hz`IcWL#Ta_@(F7<UZmzktYZ2n53$Wc`yP_t5I!emN=e|J5
+2kG4p@$`hN+g8 at BDzDqFae>^QdtP$a#_Sw*~uTD$UQv5S1A$({mDe;ybX`JVSA at I8p!j)vZ+p{d<6j(
+~Se+prPI_n0h;_f`am-XRV_z7DJXF)&Pb0L6-b!T64YRPq+eruRTEe!E4- at 6OTejmjIO62;yvx-9}B-
+xd~cFN-byM6#V5;Mf)nz9-S*U3r^?{|Zb6WAAXBZ+`-&{#$Lc`2nFESeXHbXSq*^vY at I-q`BD<MiIoz
+DRlN}t&1Xw<E~D9jy5#fwYYW>$-4<{s00IV(7YQTVHWqp^nuSz$MREUGE>gsyqAmG)3QAgcVp8KZh`H
+GD!J`q(7}2R#pQ&QyHUdi;|-L(VGdtEVmXJm-%ilN{AINNJ!Aox7hyH|D{Op-lD#(?-q&qYdG>$Et7f
+j at +mrnzuL=n3 at YALJt(6JyCRTg=P7u at +8H2|@eO6Id3i`dW6^GmVv=NQ-#!&X}Pa%HYZf!dO5>)BUeC
+*Ps8z<P9$@V6O^!TYhy0MYn^=*Fts(%9Wz)x{rYdpp>#`YCk;Eg}&XCDN)=@|&5Ii8%V5v${6MRZ&^u
+0VFWnSSo^Car0;0ON9(x~Okr?&Im=L#Dtsc(v+AFq2ZIZ)Fyw5at)0q4JX0VMi4x@&@fdD9&*x0uw8<
+MCRBwEq*<5FOwi{&?=LIds6S-9FwptYBU%|dB4b|9;d>+2a<ACZkODo4+3%$`kSt3IV4|J-li|DC`?#
+!?bKP35$j1yl6LCF4PO#+q!!k(n<o#DxJATHG at n|exOq43kz|nmc=@wEkotjFxZy$P_A|cDOQXr^diA
+ZirA4zkx%e}3kANufGHMdN9XkEM-V)|!4yxoH9bIXN9?vpnz8KA7R^X?~rp4AC$5y`#O_}}+tbc{{@3
+d^%R^$$jS-G{9bDG@(cvgBWcN}fkpPUaZo1EPaJw6%AU_y>r at Oye;#IiKTbL3C#_KDGN!8P+3sVwagN
+Ko~@?Z|%J(f-^~_<cv)9zXW`W6cHlqO at I*XtVu|4dap2jOvnc?iEYTnJ~}Y2KZ at n6iTX^7%QskV2CoK
+*5ayvl*ld$1WDV+nwY7Tzg?Web0W9ca;?D8OII5KUyHYYJi4hw6}H8#ODH_rTSw!?xhATT0=y^d-4lh
+lTVr!qg>bkc9L7wdt2I5HuGoUZ>TqPZwty!FL^LH1M*%yl(`v4-jp+cH(npSaHpEuq54Vh7efV-dbSp
+D!VZKqbJ}idI1qAO9#nFkO>Ic)PXzID(0mY<C519Ao;c+(!8auGV`B{m&b~JFxBo{qB-$&u)`w at GAsH
+JOAQ#oivPaO=8ywsM(xNf8X4H;&)wlRBt#oUrh&L&b={>xG69Q*rq)pUrPx_<*~ejmOKJU?b0KX-8dt
+^GIV-wx2m(J35(XoCE)So)tj)7J{<pPuDg>?RNrrZ9{o5e(VBLO4YIG&H97F$pN!p%Z%NWZ`6wV2h6=
+>RSdoc~5#5#J}R7yI2(OfOiXrcY*77A0k4%hqL2%u#CPZ81wh^WU@!Gd)YGI3$F36%wV?&oksR(mwHc
+p)5Jb#NxZRp*AM;Fk=srRCHu$+ at qV>P_GKq;b<sF}CzsztAlupYSiRT>MRsxRzYLAV_qZhSHO;F8)5B
+>XUBIZHi+{%J5BfQ7U~i0`F}`SJ8>|nv$%f#DYfQ=)J5ru)*%P{JXE*C^Lz;3ptJl;77^?wWTV!kSSH
+xU at kDHlk$~WYK_Fjz*l-~K%-N*dLuo-w~V?WWEzb?jZw{+P6`BO3U`)%JX|2^&gpIQFCdf-2^{C)MnK
+T+&ysYGbq+f}y?jbwzAubD5v_r`*2I(5317}qQ5gRKtNB$P*=IiL>wkf)l5w>YHMc<chl$K-tFt}PS7
+0i`6$Jp!<Jp%g=#F~xN1+isM!g~H2$ab)7ckFK)@mk~X_WceD%sGH*)BNc5eWV9~~I<(S&rlDp1gz7;
+&H<!oRzu+dXWf<<<>x;oz#9FYl02fS at X?zS-#;lD+DYl8#p=!G*2cYEAHJk{vF6WG0Q)NL`H@~K}!$;
+z3OygyMo at A2I=MpYXflvp|>*9>Z%Q0i%Q`;p#H+xD*$VTnFw%=+(J=DG^<4l$(uY0UFmu<l_L>@fiO5
+1n#4mOW8KS~kun9J>5JJ|rfF^(tSBB}tgN*Z1GNyo0ZBP;p~gc;I{^?NqUPoW%5FOcuq#>HH!%oDwfs
+pE)<K$269P-u~KRVx~LMualX0#gv at leBD+|B+tTgLHgJRPfZpT;V!-bRhxrJ-89+a?Sxw1Sf*0#gzhI
+H{?K8riq4a at aj}oxQ_%i3D2Y39x;cLYr_vJU%+g{GT=g(&Vz}Gz>6 at XJ5|GLZWr*JN__MTGSN3<w%a(
+uP at h$Jz|^pua9a*0$j3WK1j)L<2T;fQ<PH=Y#q_C=F-7JP9vRn{g~-smTP|4?t!u+=8JEK-;1`h~xP|
+l4`^b;S!zFkisE}Vt;BwUFDL}H884QiSEz&WB at 6gvI#l?_>?~@dweyaISxueyMJl$6yU#qDxt{iho>|
+d3V<>`x?DqBwCgYo^LR;<1*aw!>rx-dyg=KRH0ICEfrK8EshJ at JjmGCGi>nmkF|&Gi>0v`$%lO#QP^-
+w?6X_$%d^83oIkH?S93DLwoNXAmh}^zq6=4pfs6aOus9UYoaG%E5$87-4P7=Tm{yvkChHalglqRbh>r
+hTD70UbFI0$66SIG!Mo|!LLC0NUQY3nhVHaw-qG8k(s;{lpw^nCFkNalQwIp%Ej7JzI;4Js`?P)H47b
+)_|;$m;2Mx4CU-^)7Kl(T=<yPd1ESONP0v%gv}K`6kZ!qJdV41WAB>u!fEknV6zK|G=?l<K4aYei#b|
+e~l+B~wvkc;hq-(VV)AJs&l&soR(3G+pheo`nfbb&epV%Shuw{vW2-?{5*&`11azW%%JPOES319+Nuy
+T^GH|%w!pBWbuGIw;NF2oZ^<A;8rFyugh))gqym)u1119_U%oa$JnDuRT?eaoqyt;hZ0IwR|0^o^c@@
+961}jG>)8xtsdbFkL4dK*J)sMJ~!%3SA%0kepO&lNaMar47Zf2BWLsP>#BMJTktDHDk^w=;eGnta$?^
+gAbg!RaMDAzuxiYKpO*=G}cQ7ueK}Mc9h?&jcVRUtAM2Qi_Mp3b|((;9G3(c$p=;S0e$Hmb at 9<$n4P%
+e*Hx at C@hCoBHabjYj`Sz!cxh(a=?wZcNhgm~&w-GFro3G%h&@2RAD`#C!d3_JUj%p57Xs5C<RU7aK_m
+eMB1^_=QPq at xzvS^QP;8`1uW$7(Ibr!<H;G60x1SX0|G_a|EAoGQ^;^1z5)h6O7=)5IO4AUEp%AuFH=
+3eo62}RYgdzOhoc0F>hrV^q^LI_2NOp at 57~4zj1iqIz;I}6k0_{4r1o<nmA2iwf+feG=#D>24-_G`SU
+oeW;Q!4vJ2l}t<ojNJ-J at vC2pFtZt`~`#CXjk%<Hl*pd+7Q04VXxc2yYZkmA;jO3zy!5d|37R^HtM*$
+qNICU8-(oJcSBF&O)vAeJInhhGW*No#(8IO*RRD5TbjXPsCis94J1AkGId(Y at aM&Q5%{6vA=?+>WU!~
+tg2(ZTZo|%Ej5vhbU7F$>EkYd-X7i&VZs$hA+4g at oF!@5vnB9kD7y4NY&;BCiu6&69Y@}_YfG7AZwEJ
+Va2vTN=-(t%z*&-hP=y%)ag*~Ym;>c;vypRG0`}nN2c;75n^2OinMC at NAGWI+M@P|Z(5!gA7k!Hphv$
+C3(_BA{x2DuduM?6!oRE%T$%+3{cvmM_A0mgbtx%=Q>9)#Xb&20cfEqKJ<U8?k$ag8f(aK{Vpn(L!Jo
+vvx+<Mf3NU-=p#MP122?a3*BZ>}<acSEuR3xqp#`Rjh<%QmhL&D9=)1314z(;t=$H_mtI$eXEvl*LW1
+E*IeCUb*M-kz&D!mqf+7`V^-p^nM!sp&wsGVH}bt+-XK38p_KMg+tDPk%{v<8M*Vy0FdKTS4g}<c?>F
+ZS~E(M%gESt5^;C2b$FoqtwT&x$0Aqc!&tu(2653&TR2=@?S=)c&a1G4PEf{GdtBx0nH&6!m4P*{zSM
+fr9dXXW4f>=4-nNGC<a2><^mB{PX7c^_U$QO%-i0PV4Uz5oRaFi%L8 at 2&(O2j7_XG#9XE?@JJFC%64<
+MmYPA5Ih$K}irx)P?pZtIru)8PQYz(xmCNdWVn8>!1<@(;^WBG)XLK#<jAN+j-%5*`fDD+ at VE!}Us0w
+HYkP5%urUbPIts=E2vMF(OtCK-J=w`rby{FFL?_%zR~{be$gS8D~ce4n4)a+D47_n%~6{BgFj?17KEJ
+K%3<IY+5S8?h|T|c(A?MHhrXmx at k+u<PkY<&v;gZVRdAS`%?@olHg at BJqthqd+-C~j+8tH%7bc$hjhV
+0*wWdNIfKifsFZQK$-xF`Jn5n=(m<{D at DH67ja5mBz~#&qC`c5vei-FqJmE5EYnX!x4BorJ at g)XB<6P
+UUBRkT%E7 at 9{nwlk|m6KA<7EIur58H>@jGAsx)|2q}JIZ#qtbu#{Qa9;~@78-4eaL>Vs^`D)by*K_^P
+RDlTbK9kDg6_>um33*`PTF6&o1yS5MuaGWq#kvxBH|bw%6;6^j+*G_TmA8?u}|V`L?fw-Zl82rzv7|Z
+>rwl4Sj1(V94Hnofi8nWCrh3j2ph7^uC>@c3CCjqb9$5jQj%Ra(FNQ({BqBh~ASY#fR(Iy8uCdDBH*T
+gywD*O72zr_&xc!8(q_Trh>%x^>64(B71@&eGho<)r##d{<7#GSNrf|_<IFk{{x`CEBN#ec&2*15N-%
+ze*&86Z*hEjclZQ>N>6sK`bFpr?)r%!^_OCOqX<rW-u^sJ;Zy?OccA%u2lPF;HRE{|T7yeJ6Yu4>C;#
+>s;MZ+yr^)gJ)bOs*79M>JMXuj%L&6J7|A^D?`}!xh1^n#3{>g0tKfAA=x3?)jZExFCz1&BCo3i(}ZE
+(x8wb`pLX_gAPE}CeB4V+)nn;uTyX*-RRuVaH!S3`T0=PS?}i)Fq_46lz<azo~$2`>-KPal~<54_Pq3
+-~&W&&dv&`_S7`VL$UsiNf4p7!&OZz_J53EH=sxo%z<(HbSoRX<@>ri at QNYdypT8k@P%UNb_(F6neZI
+Lv&;C+&XA3e&7JLJ`jU*O4Cb#E|)pO`>s+SeQe&(DU%J5$VDKTgk{YfvfOwK@{~sgBMj;NPB_EK1GHz
+2x6hGx9kijwLxwYwB{9$A2{yti)LOo}6008E+FtE4rnqXLh#Wg-K#peti_993*O%~mvR+UJy>H*q=ku
+k#(1cFTul1gdhhrF1ycj<_yiyvk)lnil`Q{bN;wB-kh5;}y at JxVJ??r5~g`FuHx7n&utdUO!L2D*qJ<
+}XKkMxq=c(zqw1n02zkSiWeVm3ShAYwhA(i8`}ld4g--TqA%pE0S+SQM3k8A_Nd+wv$>j5%M_gLFJl^
+szIOR(_b*8wg0(s;wz4^qhy=->%VQKW+Hc;>xu?jQ61hWnKpF4-_#=6S|*|yFT>*S`IXzuj$62z<KSm
+!}FO^rmGjIQm=hnG-QHx*s~P0%Nd+6($EE|e_7O_x<1oM(D=z(g&V)*HOK-8VUCC8G&P4%M^8;OJR!O
+#sBTU&gn4ldT#s>8+0XQqTnuc^IKTH$ax^m5blpkefwxxH_Hh>8S}xN+HUbB}CO`yCC+FwY7RN?JZn9
+xKpjbHCc1$h?`;q at pCVQjgG4t)dz#n#26gK?Gb(HM(y}uJ)AKL!dM3pW3eI!+2P7-WxD`U3T0LCjPz5
+ISEQ2BjY_G2jU<Ds&q$TXf1deBk!l}ODccku~0OQ*?XzCVE`{ly88X51o(B?*Ho5Qn?9A3p6TDpN}0x
+L(@h5_VEJLy@`d2^1<H-ipwdW~3&)neG1M(zflu{=(i*rMaw;N%m;G-(evx&*!hPiXzP00cyKX5a#Z7
+om)_yITnhy$K75Ay?i{vn5QQN_x;RYLW}B4o%yLq^i7eS$Ju4yu7%mY5|{lH1Nv|%+-s-bJ2bL(f^1h
+tujMH^S8+I3r`y~p``F<(?-B4<@ACfM2pexbDQAT_C78YO)sHk5BO81v0bIyQE+a{xplnf&-HCPc?J}
+k9ew*!0^t>ND6+c%D{9Z%;3820+&;oOL9PX&<;KflA3!GLH<fTQ$XdFsU1g21T3SZM+qJ=h$c{6x$#;
+51q=h#4vXe6&}lbCGFwoV|T)E&Fz{4)w~CVG?){>uft7>aD8l3thL;1?@Dl>Uqwh^Sogc{r$Z)G_hgJ
+-r&OUH1`TIRo;C8XWXvac%W}03a(ht*!*u*BPUqxU3q_i|HlSOvUoe?0OKqEo+ at 8wP6U4;-rUR{aUi#
+<{=b0OJ)kRj{3TGn%5Y)B2I)i-0`}`*~1eeii2gsqCh>3flm0GhjZL8pM-p at K&fGc=y7DV2G~BS6O?2
+gg)sj32)39_q+~Rx#D$4+WFl?1NwIj2p%gK0;84oWy{Ex&LS79nX at LkFp@t7=JyT7;e;g3!;^r`(_de
+UUM!ra-^@OIq?u!^=r_1y?5)r45m^uJQEru!$fNiQJjWaWGpyEj-E20IYvd!^TbX8w7l}kf0!Zq}>yX
+1j2Rl$kv<(EG#nqlLKegm}1o+r#7E^0kjO?#|^>oBGTDjT&{P+Z3P-Oawz^#g(0mIcKp{c6gz9<&Q=M
+8PNk>RlG90H3#azmbsjbjpkv6TM{Zo~_aOHGMZ(E<i95hAbYx+3>Z9lj%X6>e4 at B`Wc`yjtS2%-N@>M
+$7a;)f=B&Qd%CtQJ)EaGIyz|O+3EH<g3z9$M+<|QW{hzhuK4>6D3-9Ht{X+vY!<ov1AD2zj0(QG{(cP
+%{%KtC(=+_tpy3B+V4VJGvl6xEsy0?m=X-^aLcXZcCDh)*M7*n$d*u+>Sv-OLJUIsMaYK>q0l~)93H0
+qfmG51-TTHSA6ZD6UcDyICaP(hfy8pX3 at BYdjWOqM|_XHjBj#}uqwCmpfv_&u<y0rA3%_HARcU#=B1t
+uRaZF{C~x!5gM*e|);Ozlxc`p)|m at 7^W)FRg*a)1DlI#;<XMwf;12 at cu{QhTh;FpB(w}GwT1V5s=bZl
+ at I#AoA!F!;rwnJ!ptA^|BImOWiKvnFK+z*r_1|0s{{UQd4IOLPZkgSWJ=`+7SAEIcTQL`EzJ($MsVX1
+j1}Zh%6h<&3aIBsn=>}FPr2>6V%f5;Y*8rPUkK<tnNKnojxNPHRm6&zpyg<Ny}*oMK3EnX&7KEdh1Ke
+`EMd$+zds&6*VQ!LoNFo#mf at l_NTRQ=FcNup9^vyAPAENNJ1&<%OsQ at M0Q|wvi={vtT|kdXAzzE4X7Z
+J8lzX*Gq-PE%O^R+Kyt>@Epeef>5!4=Urbg?hBYpsE=qlCN%#UKSAQ81aDT`+d)d3R)Fj0?<jYm)M<Y
+t@#-I69up7iQknKH{EUw6hF0*>p!vgmf?BgvYJCW69zB-8*I$|y5y^Zq(g0oFfA{F(F?INb!#Q7%QyX
+!GO3jH3p~e2ZxJArz~5(K_piZO?K>rGy)(zU0a|g+$QTa7j&MYgx^TV&_wL94Yy=fm)Q#CUBq73e}z@
+7Gg1}9ID|un|Y*W;_B;iR<I8J3{{J_(`OY&$Y~JF>7`ZHsJ<{wX72_7 at tA%$N>zU~Npo-IyVVfX6xf*
+>toO^d7Ch&oF+N&$nQsx-hM9_Yn7EWCiKlNIwgA+>M56 at 0Kmi90ymm!NA+qpz%nw~&UdDD@@Aa%hJ;R
+WSNK76HLCs~T*DD9MNZrtY9Mh21Dfh_`^5Z?ch|k+Auhr~68}UlyB>`FzHymlajRSZ&DkhBzh4w%?wT
+y*ME&*?>XX_A!$w8Rl>5q!HKa)}awo4lLSx=Qqg^(?cgREPPECr);iPdWI4Ziz>;H?gPm8g@==(wyw<
+EfxYkKuLf&(R(Ca7gZj<Sdh9l#`K@&V^*TIZq|+)mzV?1|U5|a6?Ii<@FG)o~=(u_gq2o>%7<|RT`Ia
+3-p9Q(#9CfhiCPSomObIsqhltQHlug3!y#HXLxmztBPGS&`=ilh$gp;J4Ubrt=hcdv{)ndq?uUZJmyT
+f3`!&yNp#4D1|SZ|13pHfM>t8AUqtA}Ey&b>>S-XyMsx2M at -atwb+lM5MTTm{lGHvN4oZPtBG=IXIx`
+0zQ3N)~Ipns*q)ULi3+_v&m!b2}L}Y?=0L#Vc2-rZ+=#vq%rk7bbAx1UjRX{Eus-n~t-{02+Lb!lo%9
+hrSIN$i<LYQ(_CgVKPw<|^pyqDgU$|DJ74&mx}4Rr;W+Go5vL1t<9 at bxOa;Y_)4q1vbCN{VX%kzEC!5
+yl2F(*}JP&dxI<k~(;Znk;Fm6A-OD#c0IKpajdiEksMiRk7-cWpQ&_rJ9DzeS9<alD3~4GbEQ079R*B
+zMpU{#v4GHwSeQ4w4v~X9Wevzw!c-#_2{9*9NVwR+#Q~?hA at P~=`|{F-h)3QH{mvl=c}?k(yA=TGF^7
+~n%&|GtLY`{Mn=O%sDr at Jyzw@8H|$ZoZpL*fE1^}oiQz6{uG<IZGBzF1Kd6x%F3vSAB;n;42aky+N{%
+h at b$RC9?UA%Ni5^cwV at 7(B*jSb+f16LS<I=``{~OorUy*M*zdm1K-2XyTC`_Oz@?-bdKR)=AMg8Ky at 3
+i!Ps+vK(<>rxpeY9$C3~HlEc)T}T?HmJocWzTV1KGYoe%|Gcy>*32e3!V--gCg)j~MyxEu(e at RS<it7
+V*{!-q;kB>{D3Sc5eC?#EFjgPPA<g1m6?A8_mL#y(tXO{zYRu1^O_oPT$gYdt*7ZUoRnc&AENvE8Xjt
+`>^kO6fB1JVX5NXGrrv*M*Ssm3ikv8B>mpy{f7>vH*vClU?!Hg3fV at S`p<z{- at XTUDv9gf2jwpiZt=!
+!UX0bar1SO+&Ob#SL`a46h^<o8*b}bv`x~SFv6?9CglRD^3}&q5WWb;PYTs>}0PpgBHPO3Lv+Oa+r>T
+i3{C+h%Fb2yjSHnB4#;TyZ!3pq<!wHu~&2);)z4^L-|DRXBuPpvV at AvarfBa7G*DU1dRj at 4Wpde&a^w
+ERk+#8KjP9E5)z{RUMju~9SdIu2IT#0^7%66e$G-5*4I3s$qygp)1ldUu;lY@(R6VE+RH;I~cnkn)nY
+9ne)=i(RuI%Xloc)ZhRqB|Y$9(6|COzEz&8uuZ_w?kpi6=6CDBLg2HX!&U2H<TC{xB^NX4Fj--NNzd?
+9c)X9SxN#1CkIftNx_{_^(UJ~H`@`}hpIZos2dLDHtZ=j*<~>hIF)C>Xc*hOAE2r|_LXT_FJU}HjA*e
+dnu^NP=bqj(J at mStmmWJ`2>vB>P+$jzw^lT1p8 at -p)zQ5uA5GK`L(_`1PjrwsxP6%8^5b4u0SptJuI5
+D%PhG-8i03`)a*g_tYOX90cd0pUAF|@nW72xLaZP?c=2%5&N0?`mtOh6O(oRpAVFD3 at A0@3$_qkM7M|
+{BP_Mr58RB#@LbSRFe05x*rY~!qc at X*U8AH-uHJ4;>k?h$8)sVlS^EMBO1b8hjOR{dD70nw at M?6p0>;
+R1V!v0{?kMG4v77;1rMSU+-j%mkXl6?#ED&=Y%QFV9N89(n`4SB?uD4_>_<)#^%bfj{z!{3mgUwSln-
+HZlVfqr at Y2@)h}PBvFD7hQ+{_PSRfHW31EZVFI+fJM^_CaaVXZd&$uZ*C(o=(X-qeAPFalGaAw*U(D0
+3mxDYfZCO$4D!XWy7tTlE`&sE<bY*?p)@9t73}ox;Lx-JqU4ikH852!l4+6sfp5Vvt$tNGCDu7O&lhr
+7=u4+ at l@G41RB{?Na(~@l~JBPeVsNoPI;Or+yV!TbVnhCl%lihs82&4xX1R7J9c+HkIJV?k8;v70a&n
+2HXrblFvo#;&WvimSQ%Yt%Ql|X0>qb;i^Ej?#+0IX)58WR^VNKhWV+{;-)dt?$iG~;trcU!uE%ut+_V
+S=B@*s#v=bi`xU4(al0=??%b`Z~=Tx?f at GMY=+VGbxX4%;R}@krhsKrK;6c+GQ`I50vXw7pTL~X?O3j
+Jg(=01hn)_MjV1KNQ?|bl?aU_4t4{c?$va7HqVoO%J}=$IHcWERoG?1(*t$SJ9|;I85|LSS6oh4*v>v
+Zl*t;Km<G>6KWcD5Y;UPts%43|MnqVw03Vi+*9(<+(H(tx5zPYmJs?xA;uAQ^54Sk$LrZ6o%Q!^6 at g$
+k&b48(O`;gJLj9o9N@*t*GrJw7ASo#|eJr>;t6mayzd)uNmc(BF1kKx8fV(W~BBzUn!TwRO+ZM7`l-s
+*77beCsi$vSCC9v?ANBLRG%sic;;DJ*d>aZjOiu2<n{NBtI0P41jK0dz|juygrby)h{PpPlx3eBzpMX
+b*G+phq$G!f8>U<Jf7Jk-R=!&YQC|)xf;yxC$vV?f|E8I!Tb)(t&z?F5WekVp`X(#}zoia2#673!BmF
+GfQl4;PMxpvs at vo^Kvq`Xd?`s%->HweNS7^{|s6B8wdZKETMm!EN!d<O?ImxI^XBHKbTTZ?E`QW_3l#
+7-#)bDKE|D=KbIJb_X)a!+`kgUm&SL9*mFNHwvVPK at 5cG<1iKU%z88;U`hBTiWtsA9Kix*H_Fa*EG#r
+Wd9xp80zmmy5y^g)zhBofCT{1^@VY9t!3)?eUyC5*V|G1}~-a;uf`u0S6Qz`5(Td at BBLYDr}di4!i+D
+#I~AIQ?jw*Tp5$@m{6OIj3jtsnZ96;KV4Wfws*?$3mBSY%|lcnB0^bsf1^sS|M4mzaKaL7vt2={nUqj
+bX<uDWBFg)y)AD@|zWlLXh^wYGB3nAwqg&u at SpGCOSn0z(muB=hP0~9RmLa&w9jwIF$(Xc$_rm1!Zkr
+)mRqvmxp)IQ&3%VOBt<)w{)+Q-qXOa-g&+h<y-I$<an^jE3&v{uS%5FruS~zkcp4yWX^MR_oG9to{$&
+$(pYqORmd>{AYOgK4czlbX-zKoI$nj*vYESRV%TI&=kw#_5-Plim3j61yfx>QE-(C0v1LYUcnTa)#$&
+8;rahBz>2m-wq3I&GiB61%*-ZW{imMm)I_23iGN(99PmdgV!S{nPPCgX at TE(xc(LIO*+&vc}zAp%ul%
+DUGlBau!bdX631!+!>&mBo#%lVbl4=oQ4adE3%?*y#M1SOVo(dnxz)e;_@#TSQ*xMVMbt(1CdsRUG#r
+&y at TvNCW%ytD}SkmpKILi6PU7VO*3<OgR&1*I*fbuN_3H}(>BlzF;8?j*)P5W3OX=7ENFWOJ;F!V;zW
+YDzCG$^$4ii-wp;5aM>{*O7_Z?MY5~uL+&IdTsH7G}U!Q>-r3qhA at ibdGS^Gb}YiNb;9xpXf!_~)w(?
+=FPa;w!(y_R(*Tz|Tt6>_M6q#jd-PP2b((P2MZ*eo#?ZUzBJ^CZ$LK#NOG1vV#i2<+66?q51$ZTis|j
+Zvr5FEC$r8gc7r^#>;cBSN>BhgXOJKk&*kc#h9yRfmy&j?XbQE)0+pD23$78A8>6*opAwg=t- at rEjQr
+BMSzSOC1euApi_hrFF_#s)1T6=c*GXX_aFs2#CIC7*er$>oj1MpeXsn!}!<N}J+^#@L2H3O7Jg~^}k<
+h0(ph at C0li`6YTSy*URP6er29>$sD=7DNp^sYR7fwmDqR`m(DPbjJ-x2w9X9-cc1iX|ITi(@IsKI~-Y
+2u16=RoxmVmY0SXxq_=~5U%Au1}xk~<&e7%=k>0IO%%4HmtT!ZnvT(_ubB4PQD at 81U|jT=xGZalNF&J
+I$Q8$$*8Bn>6pdZ+&<!d_>G3t?h$)3*^|3p1z^`S#EFkG#1k-(-QUX*E%}rorxCqoes8*C1f$U~#`IT
++1Sb at n8&Zx#vf*+K15RLw1mEp;G*2k+!u3l3HQU_Cy>x~I(-qn<qFs=e{O%%su1&|n6UUDe at iZjLm7U
+<yMu*oRv51s6m at MtFKdIkCT8LQiqBtW86u+5>wU;woQBTB~7KYMynC7s}cm+LiBJXt=!jN937GD(N|<
+I4+Lnumh5j2oSyK>8sOjsD_+k))g4)TF$iRcn6o{E^RdYgMQ#Y)AvaX~l&Nhi)Lp(>)ri4V0kNkE_QM
+ at -C1vJOS)bk|RBvFybwKLf)RwAtpR|WV?BN&1TKD2YEcF|3G%`zj%3*yLtMX)I5^7`JgRdIE=Nu{HeV
+o+=n+i=<}V=yy`UXzsj!uzSoCd50~#d|ENs&KlMsqTjl at cDu1b4m&Wg04zy>guzatT(a2jLHQVz}RK7
+bnrr3Mzf8%Jy&$WK=chfnt)1WljtAiUCOS8Q%9zpkP7WwWoq_Z!hh%o$?ZiWAq!M}32%Jv at i>|J|=-w
+Y8e_NwAWuQukG7kj7uc7fd%m)Prm(7SywqxYm4p6_k)WWKlXZx`NpT!Fs(=r>Y^>?4)QU$?_gZ~w>fP
+ju`0w>&}l1L<)De+IObX+K$y(%8c{`aWWEcbfFhE^%b;Efw4Mdn-k-eyW<vE0Y1AvZmtq2Y+hD^7|Cv
+Ia0on>M;yiw1;5VO%2RumnV=DiLOuK{7L3MY1B6!ko#ypvsj*we3T50F9y5slHo3N_w)PvJGTe?+5P>
+U+XMdW{{HOtK85jqR&)HpYk{M)^Km-W>PywgGQY=tk)UVQ46)&`ngAu}C4tsT&=AS3u`|zJG<rB5)1%
+`KS?#fwDOGoob?eup)pNkmXJrBz+_KOm;->@P=!<s at rOxXi^Yvm%6)r7DrUdDcH!yzk&6c;_?U9!ieH
+^3K3>rksx$EN75ibfZ22{@osh1u{p2ixOcOtDiRH^*5R>iJBl4e4lOwW0HrB1Am(78ZES)RdJn%Y$rM
+;tikOdl9k2_dKG2+Bslo9oq9i1tpC+2vNtc#K#Y0WYcv$!7u|tf0KRbO_~q7d3+c2zSOv1iO6B@`+~e
+2-ME52^PfAE3*Z4zNp at YdG6pSI1nsZQM_{q%bED9<_i27f%$89Cl>~oLxxz0#Ko2Nl*D7lERz2^kk;}
+m0<){TUeMPT`_stXT7Xa|#;b;$RJ;J0M4J4P!@S&1l*mqso*$#z^{K{m3Rh?h-R~-er!A($GFm!k{ve
+(KSaL-dzr9r3&KEy!8=BzyYMAc$igc(jqfsxm?&^(cE7N_q&|^M~etCGYF*=1P1Q6xzMIJ2}pTfMY2+
+fD(@QTSsrXG<od)`z#fbyUPZJyxV<>VL=Ssfu+b|wafi^v0L*ak~)qY~jW?m@~v=1G^(vZ7oIeKjc7I
+O}K0GU``(&7}(-_oLJCqC*tEX^qOQ0dhL8kLOrgkIK#D;ODhPVrgI|tbr|7XN!7a!Hg2<=A=7L`yh{U
+jU|L^^PyYkEY<>Ed*oZu_QQW-0xt+Z^rGy@)#cyL at Vh%W?RyM;zM<5u?yq@&9s3_}^gnl|Pn`UVvwR1
+YFoGf&g-`@ZAP|JmFh#;NLSQINQ4~gR|KJqyQ{N#BeS57_yLJwl?TU2R8;y#0Gd_~<Ae1NjIR3T+ at pC
+{;=^c)f_n6uSt`xMNa<2iQ?}iz2uQeg~ewz60Ay2-&AJYv1f0f)o-}diG{5BnWckfX6+f9gk7o6UD?e
+vFTGrd=W(zl%LMhJEfX8hgT{{~<h-!HSBXQK%FkXy2UL;j^gfWYj4I(`LIJ5YH1As>h1#2U-ve!@`s=
+Kf5vnP=f2`_ at Ir`^Jg5oX&P&l>TQwO608PFj)59%@i4$?LQbuSK(oBr_Zta!r7wHpER(%kte<R-=rEo
+2HCy^6P0mJ>h5%5%VwwFg2v#K6Td27dT at -d{|~G3Xk3_eA5sGhFI|k)$4#$^4f#iHpFsT9Gn!``)?Zl
+fv(++_H%Q-pXm`uVcmvZI4OYV~C-rN_gccq5XT6zbvmx?wc3Btrn$&U1Ni4rjom^S5Y^E4#m=x*9bLj
+t6T^9I-VUeO3e2*D{{+u$bDNKQU^*Vo~q03Do`%r%>blp8de*yAwv_uFD5vC=tv3g02-0(OYe-T&lAT
+?=of@^R?H8M4wBI7*#wswZ_s$Md3 at Y|OKB=@1AF7-TV%0eRA5?gHLQv%WyhrZDtNY_qjyDCRKTA=wxL
+x-q85!xJ)_NjEY-w+UrFM5qHw?{EgFNJVZdW>3hs=5ox(ta%`Tu$GY04jrUqR|LB#?CdS&qtiXna)0B
+fH7E9U8&y9xT)aGWL`v?MMa0aD^68$D$DtRj1?tZz!t6fNH~D4^*9aY5it_SFa-eS0%YlO6P|JHeDlo
+62-6ajIZml#QXnprho!pN^l~ifUk!^+yUu?4ZV(6lNr(8?>;S7T;e~t#)p7t<JMO7MXqGKbgIV`%2ye
+NGY=bw@;HPgos15ELA0nRl;{F1>`?M$H+Z}~(cjUh9=bo;A7?}fppP73hxWSmus*wi>jvfbM7)kNDp<
+RxE&SgFkl`qC#)0Nov_g|m8*%Kux0A4gNYwZa?qR^wCSw;yvp(9y0n=e%}RAH1KGqb_67H0j2;XiThX
+*5cEynE3hd)g8p;L`T|hZu*a0|-+nX$X>+cs7(8mu&2DwK;SZx{^%U=e6msaffBBbbFk5`+S^Nd;~_f
+F?s){3a4}l!L!a9muqC5p%iyAu`Ru(AW4K21>9?=j?X&0GuE`es6CvQbg6_u&7Ab%dDa!~;-eQt at 4Qs
+>Q4dV|g|g>tj$U_hWuNUSC(*22*YxEqT}m&^<s>`Q;RQ$mr=E<pRaO5u^?gR&Xyj at XMwUw9e1`r(H2m
+NG4 at dJH-}QbI-aaFbdwu-`(`)>jT(7r$_|1*~<G(iX@*n at 6{>Q)f|MBm8^!odOY~7UgZ~yUsHTh8g_y
+1boetYHnwvX?n|Mq{s at _SSN$A7KAoUGYU_BZC={`>#=Z@>L7>Hqp0)5Xny{QLE{4QPKXP5l3EabII@|
+MT?Ujq-iQ?#J%&s<XWN;1>I_e;J5xf$0{lBG9fQL=k)IZ4B)-l9c)|TG at L&5bC|p7T5mVuW$os@~zdE
+5PS5Sr8}l?q#;K4(`+woA^jFkZ at W=%J@}oa(7VPD`YWqxn%p&f_nnBhIMIjne6kaeINsR+1nsYG>|tX
+zTYyi#Men!Jd~X>c-oAwIoi`3ty!D9oXrB0DQ at w?Gf5jV)d$NBC|3W~XV_&OqFnH(_;gP_wQoz3szTX
+61z-^J~+df5oZJ}KE5tusddHeq4vPvAa!#T1y4j~J7WUlhmollfI1L^kVN3D1N^1C}AJ57=u;@v4yD<
+i<B=o7)kz at PBh1zgy1gTV9^VV at q!TE%duZ6#2ghD97gWwwzG`_}ZIKRc8~Ww&5Vr2Dp#YYDj07JY^Rl
+<Zb1F3akDnCmt3I4#%G-c79xcaE1`V30w-Ov<DCq`c_~*!IYofe)i=;l0tgd~DpMf6IiLk1Ioe#@A-!
+ at pn<x15pip*e;!LZer9~Hr{}@@i%NFMuhTnRofd`%__YG-*=%8k3t`9|NSt64+Nqz^Y4!7FXBj7af}g
+hIeB7kh|?DqHwXK#?3>>h7l-pbc6kBlrMbzZyLd;ML6OhR$D8@(XQAL<+qUF3x7$iuMX1{R25<Y%O?u
+njBbO9`dySQvWNa^PR}I%~sr{}@IGO9;6CegYlnF=lSU!zK3r=DlYvhvBZs$GJ>}VR4QljjAta;izz4
+%N(^W!PLK8MU(Mo&Ben%BRM$TLk)6H#*vQWSn9x?-A{&eX8jUvjhTeaG#aM?0ueRMIutR`yHtZ#6af5
+&)9UcD&f%Zt({4hPsUHashh=-Z&);pCV^YCt4>CM at oHk>zSG2JM at f;hamMz{mLak9+p_Ee2IP at C)(m=
+(R7 at G0wDxJUJibWZfG_mS~lNZ+n`(fP<evuk=^J$G;H*UBcQBVzG~VtE7DUk-M#La`5Nz$Sk90q87W`
+)n_BgCp%+)pr5yV)7If|;a$feQmBI~xMA48%z!MdN^AvSa>4n&{$|21769HoGE?%|1>1O!~oD%SIz^d
+w+pR7Z>u>Vwm82C{*@QZGsy#X|4jnf0#{#eUSaCK26Y}ZFT_0S(@P`HPIA8BO>Fjt;Pss~zG^m0F)wB
+QVfnl|5blOclEfY>D*IGsB#45fzYGrO^C6C7*YiRfp8fC>-`u*TLWv}P1*=#wyQ?^cW!@#!L6g9;oY3
+`UU#Me5_m$Ik>@7R)kQmIA5k8b3K4xXsSl^v=iiU|CTEMV%7{h>0w)6O4>NtS&|0n!U7|_#$#MqZ$m?
+=kQ|mYOx)&kAcXkuVjY_A$||ifDX=~Q^T>Au;NWxBo)Qcg>%9OEs}@+9{EQ1G+*Ihyl#8~QAhs_JZCX
+mwB({S)zdET{OhdT&KJdu>?+8Ppm8%9t$jF8$ZP1oO+xtp@&TsbCCGP$-5opW4bS;cqqJKh|G*Lc>9L
+;>{^!SiuMLP2&`-r=cKP{tcO^mpi^}%q$@pynOwqfc$`)ns4GM1)6*Sv|>z`-OslE3hPIjL%^sOF)z6
+ax}_t9H~4JUi<8lm at Ocv0-v!HXSti(k#zWADU4jJ+r0H at JuP+&zK3J4)Y(jbm>ieEh8uNbKDb`FjeV&
+i6y|w=Z!<><Eui`wgOR#bTV?h5ysPA?~|BSLd(6KF^(w>(BJE4B<!fFh>Lo$Df4h3yw0g at M%%@nL++t
+YThv9UDM<XV135yK=N*VVAi)?Bd@%l^p?lu;sos@@mp-}PZn>$rdP$=w&lldz|WTTPgVu|Y*{~F)jv_
+jHLb<%X~F?%__iDgt3HIj5UQrvNiqEbk%@ggEru7I?W5{5b>aE#qv6BVrzQVHq-F3t<bHJNwF|nsLS-
+Mzu5g-AR}qvK1jxJwDvu~d8Tl9j46dw2Ys0W2ofQ3Ynd`B&S at LW?ywE*bu6%JMh4a`}lq|REUOrE^k<
+%QU^e8hY+5r~#_(-1w^b${MG3&alOE2xrXiE?oJZ(YJ2+L;BYUFudSx&Z}9b^ck&n)%1pQYXa8u1x4W
+^3PG@}YHyn-P1erSXOAfEeeJYYSF)|2YOS$V$hdzD`sd&z{5(LLJ|6rv(nxJws%ZD${3(KFFb874dws
+A$&~eVCLWmjSo7xJ^j<K%D5ckJoem1xTmavzbv{R(O5Lx!Z5LF!%)sDmhQBeDt45F9h-nZf)mF=A5-2
+1tH`>c$cmvz%tI#1LOBzO<WwpDc<G4Krnle%WD>pPE`HUcFE)KQyvaD4_b%}M34Bva)l;UA51GFhUkV
+}nHe>OZ?W1h6?;q-2UsBnXEPHQ-zkYo8*Bk_{U2f)&z9Sxyugv(ek%|V`mVqS5mkim)u~O8YY=UJUJS
+ZK*?+3Nd91MNbaPV=X)2|b%_JEGqL-rx4RHXYdMf&poTY#xG+D;s;YVrPCaPdoe`=eawH`xL(LRMZu2
+{$cVktk)}5?QsaSvNQdHrwfXYY1TC8|n>_3DeMn$;j_D5U0hOntdsr5}PkLuwz8HGH~z?A%_8B$ouiA
+$+?=xW_`Jzi^i6C*Q{j_(p^lXTL^fd2OlN56Z4#3G1B*{>nx8j8r7g{@QZ$@2C#FBZoNv^3o?0U9G*`
+HDe at bVG!7i50W0S}P20mxst{xz%pMk_kkYCrFx6wV<mz#%c{we_+6*fxIleEU&RvYiI5m(7TPWbDgtv
+Hl-1waHZW1>Z{ps3ZZ582?b#4{4S`)Lz`{DRHJFv+6p<C1CK{qsc at Twbn0@Oz}!Qj(bJpx~P&Q6+6it
+bJW!z=gzmA{`Y_%&z>!G8*?e|h*{!}XU#|A5#(wKv@`EhY9WIFjy3btHQis<GXFW(#8R4^4b{S5w3GF
+#4y6O%uC>+y={g*%{x9(pxOOi{QKi<m_!avuo7Qd%V3x*SpmJF0=D5>Q`a*J|2tzYqwr~>-ujY_lCC=
+u|xEB<hC}5-UICX-D3#7J=?a+Y=oge_w(*<H`t!V-v#Kf9qsoCTy!T4*zSe;mxyieh`oG=*w9ZATV(z
+ at Vrv)X at rjL!|2GiZ2~NL2ZGSTP^AD))Pr$zMXG{CLD+7MDv|q36d*lZG)VoH#&lT at XV-2E)##ygu5>^
+tgU+SGM+rrJu_6{_cQl%@_YFu at _oi<=`(K}mA=XBA~OItE8exf@~>_PgBtNu7p#(YH{{||BRvHhsBcL
+~mUif^t}Exb8v)c}tqJP4y1-Wv%J=4JY2`oS8M=49r{tb6ZQy{ZS9(jNsufI<=b=l0G{w=mP$SOEdV)
+**kC^37~}BF}YOC?+%~TuvAqcg*lfG5iNZlnQZ!3NO|;`TVHG!LDJ_>dyEM><wEHk|hhcaAc(kp~90*
+xc-u%n;6-aWasJgg-&K^F0K)vg$khvnIjL-0#zBVO`s>RrtdoZ_Ch4_CFO$7p0pgsHfUOcHx3SWKkME
+ at q9NS7!g8vVG?yH_ckZ#{%?e3C%8ZkA<9v=Btqi`BL^s;?gY6w$e)@*zpY8~MJ@?ZqL3X28LIV7Uo!c
+_z!%olst#mn6yBF0`@N4&whxHwGJ*AFG07&Z6{@$!)8N~R$b36OaZS6a^)Lle=|HtGlH9SON2DE~FKg
+4={xGESTS4?icZGXlTHV!C*s;2)v(Q2jql5Tr!#77D)5Ftu^M2$WNK>m2Yes*cc|GZZ?8k2dFGTCn$!
+pFA%na+c;@9cnSQ{|6=p#6OvH&ppWeF+<aef}$akeN4z%`2vhC38MT9q)ViF<RiK;lk<~veb6~;vpYR
+i`4&Q3#+LD?HxPh>cI}|Z6ACw0mr`o2YTGY+y)764D_3IFEldXy}Kk6`bpQj<Zgwp{OtDtGI0x}_!XP
+9%m&@Vk>eg){yH(W*a(3!62w)0uXK04?@*<DAgY#E2y|QcDBh9*#DI3VjitorWZl1B6iM2(`yM*87A_
+4IlfzR93B7|6Jp_xpQa#=nA}ZZ2;6*!<$V?Rg)|$lF+fom%Jz5<n`1V*Y)o4JH>pSBK5p{|)Aa+VBlO
+Uzqgg}MrDUAWo+|?%909g7&1TQj&@z?SE;)(~4YS$^IRW^XwOY5<sT54<zNu~Y_pJm))wI1^@Q}~RGJ
+f0qKbLRKE6PU^0&Ug!DOi!rLhS>5`ao)GGxlYb|rdE_*rDwZ at i!4~szfaRYjoqt=gZRJV<ZlOd^r6NN
+ifuny{}(@uLEQb9leEd!)j``G+!Mu-h!*^p`e_@~|2&<q_pSc$(nrCE_HOEvV~0!HIBBCII8ONDBrm$
+*e|h#Vz(KcI{nbT#>;KL$4tIQ##NF$smhnCW-PDd}^#jiM`$|721pE$6B={kSzHikKd<67^<k*1YPud
+)b9jGEoJ`w>RF}gn#G7#XwxxX9r1bQF|_ at iA81|N$&J}MUo>>%RbyQk8_oqu=<;sdDsQ78|I4#L0ve+
+WJ3_|i{x#8I|MeA4cs1N}rFHjI6=Aox)UAU?VQ$VV9VBMWe_?nQ^d(0=V5Djlv2_;BZk|I%lF%}bVLV
+Ent!p8YLd#=bwA=%SZ2`4t=3>it6{M6H2q9{ftx<L8)m`H5)@*F5mL>>)bCg+C}`g(_Sb_u*o7(oh57
+yV&~|pS^3^yzzBe=b1&3jKlrxs(G~W4~6-{QO7chVT$#3tbcthlG)y9K1iHGj)xWQJ59!Thrgt(`4*$
+?og9m59{w;|;HTm8hm^Sr?xxR2u1~ouv+-qQGQah9>@juJd<d<k{gx&lu5;ibnm;7Z)$eHi!?XCcbL&
+1|X8#KO6x+`q`Mx6W53Q#o#M%5$-ot%*z*Hf(kNWQ-kISm<x2o>%zskK|<}aay%cj~D^obh8{BkYn>c
+_8>HF#Hm)pyvM`-RN6Au&hP;28ebP2{+WK^|b~xNnJ{A6y_FQcdK-b6>*O`$VxB5ZcXNVSf(%0{jgc2
+m9hMYluARhiks0;vdhV3K1o{3s>C$9n1OpZ2|x8*Y&3d`r%#q%|x=5ed>Q at M7iAsmAgyV_vfK<Ki8%F
+f(d^u;&l<~rri}>5TA~dTL#?ah?-OuG|z?~)M`fo1mm!C>MF0M^GN?Wo-eF}cPii2Bkn|)-s7G#y|T1
+pQ~E9_r!s75?v*)+`WQ~veSKh9FU>Bbk;f1vBNL4{5&d9wG#r{!eLv at MvSn$FJ6kBd-)+yrN;QC|ArO
+n3JR+nB6v=&u8ZtdmirhFSBfX%bj6_>ib-DR0diJ(0RL-;T<L<T{_^v0PMLdrc*gk-UngXto%$#q1n<
+w({9tBd at pKr(|&Ua9{Q}zWNl54u?jmB%F_%v?U^GQ*{KFtse2`@1R0(zGBp<3QCE<`gTSk>+n5nG1{E
+qv~p*3+PI1#hRP4lPZE&$mk>!r+sAtb%2GK>-6`2*qrTA@%Jt&X=3^RyyuhT2pkE?xV3%?<NTy?VX>V
+Oh9n?NgpJo8)9DZyr+J;O91$s^6O)tHj|ZkcI0a=Pb&~4LNv#ZN=K5xt<>KNeuk at AuDF=$PtkQ~Top%
+JEx4TlylF$nx;gjtc^~7`D3k>gyJ5Mkb68>Pv%Kjy*quoMh9g8;Y?P&2V+%2U;z>`28sLpz`^#3Kjmt
+i``eAGRauP1<%rxgEZv*3XhTrF&6HAOb7ucn2waAIPvr}M(9W^Zh-1hlhXy>LEh^AZOr^}~ubSLjDL|
+o`BYr5gxzu at U6MyV_aA%w<H2u{~?w3WdrN!~#CG!Qh4+V3eTnc^LJ()>nSKZaXajuww_3%#2?3Kx9=;
+ at OVO6&7bXM1`U+4yIae;<sO5 at FO@X#GEXz_q%@57RNA_b at xYe1rMmZn|t)87U15&&x*+mw^Zn}ug^v{
+RnVIF&h6saEMz*zkIbRJk{((teUA?QLJr6nYn;|gyiA-$2PGBPj8&arf4;*Lh>N=c5mcYNr^|(rO8%1
+z^Yv#A9r|#GOjW;Q{OYqh^FR2>K8wmBYbx}~u{ybPW_pKii}}6?M`+T)!vorf4f(T$T0evz#KHG<G3J
+g)^1d2vidoIV7t8g+FARU6cHp4c+xNP?5wq`5!l2k6_Qa2Q%de1qG<vvDe&MnF*f+vP7=9cr at Z)fg0P
+ntBuSa~>hxx_W80Oo8tJV8Abwr$xL~|G0ZwcGiM?M1{AA;9?t=l`=7tHNX&*In4zhrX%pkw{nG#a6dj
+)zt;+iqNZtd at s`wIO_&;(e~~_VYh-gn>_zF#lyP at cV|X at D|Ip`~L9DhSM>3k#Skk+ZWr8o)xxcY-2qp
+(mtyc?v{zOFZh>7LT9(#YMhOGRg3by8<lO}K(_m)Zpx@`4E$w!lYF=_<6$=ezcrlN-%M?b8hqsP{_IM
+8En0V#F?n(X?v-$L3&^&3e$zOUyH^WuI+y8VH?dlF3FtJ>p^rg%Tws5wJ6fsnZx;c6x{6IBKV)C+&&W
+79d*|!?cNUgHi=qgBch<gl3r(GWJ7oLI9FQ!U*N);&&KH^Hc!<hTj{0E(JJP;@uN0d*xWN9M=TJqW@{
+?y5_^Jf;g~*5<ANYEEOsMs=Dco2_QH(4tv1ZLQ5tf***No7(I|d^nc!Jsti7fz1<vPZXghloK9vgz~2
+a|v$aOtb9N!>TiHEKqjnz!woWMN)Zks9E$TG5Z<S+ffRAf_v>&CuI<NL%UVW#EoLAdy%0m1IJFZ-Iw*
+QLy7;OnStj&uJN#l4z<<NBrHOegkeu);Fx|eN1`#48cF&IYRm4AfKR<{Bm at IMy9tABN)}d5O;E}TbDt
+JJ3ZkUYDqB%B&Ut?i!|9rT3B+BSlGTHg;I{I*h!x6Nuc5931ez)C at 1{I`|7e36>eopvMk|MYJgs9u5N
+C%f<O!Q&7hr)9_G-=>v29wo%Po4vW~^{Fjy9efE-77RB64C++MC#-g_G`Xz67<3HJLTH{`s!Q}XVxUL
+JdtzY6r5ti6|BQa)&JzJ&;csY;$`cJ#Y8EM-AM9(c0B^~sTs1{H~WVBYfQAoIp)c{QpXTICb5Raaxy_
+2qLmgxsj6Ss(r>qbE>+nJ^B4#w>0#ky)M)>Q1&$xF+jFxPa#QJ%LNCT`I~wL)<1$KGt`#8%3{Vq+C3p
+%dv?z3g~)yx7>>OWIU_B#Pn*-p1wOv*Ni*YHPz*>0^Nq*L2uKddnX^-6wNIWKT%}fXU`JgznQ#>cO;?
+*i4%`>M&B)kMB}P|n?b0b-)GTc8y?ar<dnZH5 at q^jfN#yeZEUl7(FXr at If}O0Wc)8R8Rza*?FZ8C)%=
+}^p1cl6_7B-)Uu0%?bNAow;1`?u|LBFkna}@w7yZfPh9MFmD1sn<XL=u^^zla<1^kO5j%t5AINqcmmd
+GId%43NqM;i$HJ>k;Fpg!{0J^}YbZ4WwF2Vnd#eD{yO2=N_xbKns<Pd}<I`(>fz52iO1eRTHlBbXkCN
+8$f&O7F%v41e<YKiAkzZv_6R1*V6`|6u43KD_$K at hK4=mjB_|Pe062=@FFQZT6##jrf;!Yt-S#AHOr)
+^VXH5|CBOU{8HNm7$CYF&h2l-UAMd1?Fb-01YSRc%lp>4LyJ0=;&;>xhpcR~gQD at 9uKU4o|7ob~n9DT
+2=B9JlZtU%LfpzHbn!B-kgfJQH;hD&O^6TjQ(NJsX3Ww$VJ!!q(4L!jreoktCcwcD%xKCi<s8>Vx{d!
+inL!8eEfc at b1>p|rr-hQ#;IJ at Kzc=@e at pf}*%%4l|gV|_~Nu1EYbv-kUrVQLN5edx_&zh~&DN`a$9&D
+<E_TWmwG)DHMh9 at w|%wVR#p&lt_y at Bb?i!+}TtsO)Eal>L~GvY)}z4T5a|@dAnD)>j57L3j0ZCkuQn?
+@!IFZR=vn7tOx1%+zqugR+RkY3Xge&;I(@m(zZx&u4&(8=enuC>V_)!Vp-%2^IQy<FPh&lf^m|>Feb^
+8Qd(4{oq{?YLN;n9IfRH)sV9Q+g%fed*o8qVrNpQgELdT at 9bkY9DSIyQYcqb!`I}K0ZUcwgCWxy?2<Z
+ezIyJ(Ac36eChy9FVP2={68DSiy at OQ}A&17_u!u1}@(wox9~$!R6QrwQQ-6EI$Zg9TX1EW)ZW^>w<+i
+0^HpV;9Z>Q7cA~w3x&G(4vUU at H+m;SZ()LSe3>E%VyeRhU9$WP0Np%ai9JWE6;*K73fsrl&mjp`9r<{
+i2JA}(W+Q8i!-$%X#Y(Hp$;0rh$-)=pzx``_b*{FN5+qePQRS6Pcv8isGRjZIIHv#f4-a#{V)wEFLHa
+`we7pn?D;1&_UaQHXKAhd$Z$*ZjK9>;44w at d7`fH1h0=8)KlS3!|YS?rl~a_AENNqAPJH0vLQJB$tF?
+GK)_sOf$o?)Lq|wULi$j5xTwy&^@sWiAtYL1(oF^P>55s?UNqI(TxF;C|BbaNvM~IWC@#{0s%GiC~*3
+6woCXWX~>|(vt;RUdCr1qewtBG4{M=#l7hMe at TjiRTxV62NVPsWkbJ>7s0PV|!MobO^mkP<h1csnhZq
+irw!bl$Vom}w*y8JLy)MAkQB&tYXBxSK*bTm#j+wllXxE3sIg#2|L?|~dg->f5yDvRJ2<sGHtX9(Gz*
+%T}1?Cl at 1omk(VI^(X|AY>DE`}lMn(sAgAMWOF2eteE{H+ws*ZlEciJ|{D`}$51{f~ZrQj!62iUhHb`
+Yi<_6iUG)i9i?(fiMDtC<x;)_1l;_79O&<ICc1tgMFJr4tBv~+a-_GZxTOZ)yao78b4%hfA0n-j_kR8
+M?PqxKh44P at IdbearD?Kzm%_q<k5h_jy;nM4#Ak at PolW#hjj7CnvaeWap;rb7JLrIpBVXmvAvgln~$-
+hxGqGG;T<$SA4Wv-a|-xLyo)|r`Otn}(9z%^1^SmUbpbwN#N>BAA4BTV4(H1iOU_)%cZr+l?f83+pX%
+3=w=&>(^J`@D at M>P}NZdz=T81$ALz(noOJ9{)fZt2Ae6ig3ZFCVg`ti;2&etjuc<Oct2YgYjH}=i^i+
+uZ+eb%O7r8JHdIaIOD;Iqwsj@|cd_RBFvG=B1K0Cb~viuqNb>+n#_xgEpx79GCg{hA7^d{dT*OtEf1z
+V;s!27u3wZ+$Y);r$lsXyZeLslIt-tRJ4i-xYfny?)ce1^yi|-1>gi at +)LwqjJTiYjA<vFp*eIc=Ioy
+oI!5ubw$qTOM(wusoTAw`JR27l8KM*N*k at nZjd2)E_+Cjp16uQ^Y|5(HsNtPy#Vl4fgU{IBy7OjaGSS
+9?be}`al$Kf3(b*JH$WPPMc0RNhI_w}BM)On3-eHkW}p;+C;zltTS(w%Sa%n)t1HO0U3Y%IF6``HXD(
+m`mOsD7DL;qHTM}7uthKupRxfjKbbw~3a~Hm4{lrPmvUs at q=uZk?-Fx`r#0Z<O7<i%R``PLx_cb+b3g
+0nRy!FmWJkk(=6+fRXt0XfGQj+*aU<&u96U;D-47won>uCmHDdGYi`sTJt at qP6}WQ77NyVB=<k^tjWE
+n=2+n9FezX&GhC6h3dL1pPcYX1>Tb4;)^z<G;xWCD0hoF>lzG)8=2|Dp6$sUl&W2+1uH?YW0hIMbatJ
+(zr2R;_D^IL0mCjvOXzXM7bfG=-e-2PD$CAV1uSkL15B5+Y<|0Ym%y_=&%VBQK`lZR){x9FX#F}y>sv
++6&;qc()x7IOYnY*W(zr#{i0<ch}OBj6>WZ&ZL8)Y54p`kdrwxv at csTd_gnL94m<w>H{sQH&{Mdcbdm
+F$m2i?e2P#~ls8H|<kSvGmyROCVji6gvJACioc=?u?k>eD|Q(qrM;ixu^Zy>npxt8_Z88iTgz6q<|)-
+(Fnv6=jq_Q2!^NyG0-0R8VJfH}kXGazt>r#8-V&tUEc*7)JQ!d!k#nYbvle{{4%%IJIA1n`As2y8Cw?
+P^iF)6>s9q=<s=B!RT&>7Pn7Keq*bYW!#Q+?9RZDv=zicX#!QuzsfJ9Y9*B38Z26(Ax%i-ttw2gHW8{
+f!_x04a;+ at o{|I?Y>UR2WazSfiNdih2jePj#uGGVXnO-^n0cfmEOh8VS<GD1<<h3<eZ?(u#yq%A%F-Z
+V|M|#qRYA2|h%D1n=%MCS?w{rtz~qz8)_cV=`rDjekS9+oGg;=K5UKTcbC&Iy)|Bd<=y!s7@{T^<=P}
+M7L#xNO)i1#C>aSEZL{REr>$Ta=ilD at r2EMHd5e%b~MochUZg>$r%5~jy%NPt%m{fG5ApqZRAP_UzIB
+CP|UakZl#t&D_Ua09<SHY4Lzpkv8F<Y0?cbd0pih^YDm3ler!<qD=g0_LVW1kmmSu}$%N@!z1O4KgxR
+kRt{eO1&lB)o8YJRX!hC9#d at oE@qDI5efG^%sh20j6BY-4FncNoYpi=aC_B8=8_WsjHOMHCuc`0<C&Z
+j#F<nl!I$L!(4i5iRRt0m<x=!THh0pcrMo27I+R9PB-T9o{9#K2!iTPLm99qm0e at n6R!LEI<fC+jdI5
+dpvV3JK&Ge0pk0A+wi~n5(Y}FnwveCar}sAFJ_B*A_8*X)AvXJZU!yq>$Ew76y;ZY9USNP?H+?sbD3H
+h#@WETW)*j4lHA;D7W1UX1FUVKD7R=th-Ymgx*@y7V6%W%=HPJ2 at Fk6GwK7&Lgy at ngB1vdTzT7;ib*x
+?2F{}3Ghx4Qd1KK$C%PpZ2xOc4l7VF*D$Folr&8x#l09Xg`KeiYjwB24|37J&#4Scjm8M<b3u%+}$N?
+TCCtZ4v0Gk$}m=xe_FQN|iW at 8lWQ;;Y%&V0o&lC$Z-d0;0HKT at Ns;Hc84Br{1M_!4h9B1`~yaesiT%+
+KLPnDBqqtx-F_MLpi(&CAb}n38$ABdAK(X+JVZp&<9Y`}L-Z+l{M=Uv9iEzf{2_dxNpQcTf6e)b9?>e
+Y_=XWpT9@&Mb_IP(Q_tpZ4KftG*4aO at qIY9&1|Hkb4jdoO7XGWbd5GPz!r!p&Yihukyn|)o12^u0BZl
+--^u{xPBJEL3be6uvmpFcL{zh-s7uN*v)p2p8Mt+qd;b*lxba^Xq-^0)^yh5L2kiunOj+IRN4c!9&U3
+mKq-2#7tw^B(*-{7s_{1e_DiJS+*1(fplY?8kX+AB69S(Jy@@jxL=>=Voa+_O3}*=*~OUSr=cA8%IqZ
+u)@}VE5}_E2a at M_QGK4eri&oXN|`<S_z!Beyg+f<N#=mQpG?^;T6^EvVxOOuU`I)tFzSUB0cmF=Iutg
+>AmK`$tD!mPIC4#$Vs_WPezx3j^$wy>Ajm(wDOBut`BZAFKU0k*%fMzh4?V8-C5_}+8KN&TgYRG-rlq
+8y-8_xtxQ0Azb!sU1W__Ej6Vs2Hd^ZGwwQ6LaCi0m%5^JPhjUNL#Z!b}7u3 at C%Zi6J5VeIm16V3|k0N
+ugF(cPo(P9dD1?`Yy2_n!y(=S6}X|wvJzm@$CCuy0Mq}2oI5rEq*GTuNDH`q#6T$_$VEr=e^Od`8<p?
+>z+w0++fN2qRB1OoAu%ly)gW%JQS(#yBiz>Fms&|+E)YBiIBGkk&@G8kuOBM_{l8p<Vk+(U_g1E;>hz
+~@aI0=AvW=X#MbFB+pXU;)(^r;{`>*z`KRbR%dGGr})qMb&U at 4#oiH=<DJ>xhoty*3&Lm?&dvuW`!sH
+{$Q~bKyl$oHQXKBJarw+u8iYlRh3FXv?bK*Cu)_UNBR^lV-8kEAz|4MZfSH6R(w}r8Q|_ZZ?dOOL1wo
+qYc5m!kX;6SyiF%FgKo#{G}D?~v22+XWqm!%0dck3K<IIK-=cGXNSwt%HAt7l6a`P`G{>116urNBB>X
+w^mEZ6#i67pjPrb^;Fb+|mna_O5zc?W6>|pZ8_vIfW{@kxYdSN%)n6QK|wht{}6*6IUPe{_D+kbk{K5
+c<NH2x!1WzF>)(^HnUF%hKW3*fOH2BFxS^5d#Kf%o#2 at nw<ACEgQd*?_Q9!U at hp>{E=3cU)r0L}|W!N
+0Dv}DbfaX`E^R`z-Q0uy(J;uZcq}nQRhATO`F(rC5QL9M`t-dzZc}i-<9;4P`$AtU9-+C2)NG)s+JR7
+_y%A5u$s<|{idw$shMRM*A*sby_*&1yC(7+<PhGR72?^Y8WX)!1F?6&u<S5*lo;)Y@#)#b<*I~8t%+g
+e(w;=PN+4%XFTEu8jkw*=vowgB1C2!^Vbm%EVvB>Y(%MBH52;o2 at 9z1eJQSCkY^jL)3HPrIK2=k{|9T
+{PpO{&RwYrdB`@$ZPu>pvykRT3!h7m=78K%$1AW!ehi9V_ at g8PQl(G;%0)kEdC1(PMT!gzFUul8__^B
+J{(_C at NeaW|0mSq}EL>bU#7BF(6HV0upHM-X}OWK-l81>juLN!s8Rgiv{0KXn{)RN&1B)5TjJD%KjzY
+r~iZT!p9i2!b+4xRsU~#zfTkeldxg-^TiBEc9U=aL&uu)y)~et>WAK)L-Hl-JaXLI#G7xA6pu$;k+9?
+ at hUg^Xote<oE4MO#UvHLqH#)n*LmWteF4(TnX at 6N&hqnv^V=ZyWP&&g(qqxKRplQA8#PT|W9dRvGDi`
+_TS{zya%)m|bYu>J%L%TA1$3iIl`op`NC&xlS;4t`{|8i+I{@Q~p~$`<G7~z=V?KWe|JU%VeB8fk`#n
+PUOS_+9ZYYSsFpA;(N=tw^w7>q=;}?EvQ6T7uhf%>N=tdp96yXOqMbP0f!-=B|Hj4g&gWsY#^20?zpn
+s+0K@|ai5>XTEaO<V$UpRD>%^U?U;o$?s at B<+3P;N(j5&kESA9ZkFz{qiagd8}IiVpG&A~<NQj=GxoU
+>Z+9mAN2(2x14|2fk4UZ{<M_9v>k<;!}#V<G7==hCEVyQSh%Q`Il%eI6QvPcaPtdRurz8FryOD?pKTV
+s6SVP%XgO<@FgQil@(Jt)H=Ur1oitg6Tlt442J~h51-xk&yK91{;@K-+$t0BL(0&O)(%$~^R2-bmc;#
+PUz0sog^L!=rZI){A+`Q6dauAQ2j}}Q0m3^tEc`~BUx^%Swz{rIC at X@OJZ|^}`1`{hd{)N?b$b!{DO%
+A*v}y0Vzwv;K{MXOF0<!&LNBzd{WuJee7x$cz5<#v-*+YF2FU5)&W(9DtPBoZ+%~Wq+^t_^FgS$2rj|
+g33gi6!wtfDr^<tcS*!O6SvnBEf61M#*1s&D5G&@M#SoE&l at R~1K`4Yh0)dq$&Z5kA!QFF_kFe)jT_{
+mIyoQl<j614L!z$8F?p2o0phsZJ{S;kMl4ji(-MZg7K7+6X?y<VGh>DNY1>xn;bBh-5Q8w at U-D%Zu=!
+7p7ek;F9&iiW-X at Y$uo!r0HE}_0}wpC{0dSTd~D$k?%-tv5)?Fx;@GBo2-gz#Y5#}n`8 at g5v)ySN?dK
+?8opHo&OnQ*5oy|d19EJaJaL5ymJO2If$!Yj*Ov`N_wyB^E+PW!H{iTVooj>{tGc|fFJ{L6JeGjHHsZ
+J~O{qO%oJwa884?0^a3QNBPr-WyfA`JQ%(oJFMU^{7MC|o7n&usrzGRvSY&v_orHSDRUa#<5Ohc^bRW
+P%o4#xzFSml;kTWGv<0793toQF4$r#D<oIeAJNQ|nCAoS}yWCZ@~pzp2aAKfuj%J=936X~m4Qge!_-n
+LI#5aq at Cle5u6nrPJOc;!w|}!jA4hT_ZfaE7C at 9-gaT*HF2%t@%f at Oq?}>y4W$(etSp>nIMoJ5&?=7S
+Y~c7ls)-h;7`(*~vG`Wvn-of$vfD-6+B-V5o_NY`vJqzF7<j(r#(s=fEV_4H_?+D#$VTJe*NX%G6c{|
+>f`#z}wW|_f&-c_|ynjmXq+WUki2gJESoof1#oc78hi+?#-Z6h2G^NAY*a){S*pTFXpNitdKQTe3P4L
+C2Ca^e}|EORV9=)g{=@tz!vW0F5UxzUCSbIuxqf;4K<+9p at ke-<N^ny$o;czVX>VO8U)FTz$4ef<u<Y
+nbSw3X1YW8(?DZt%uT%*shjh}Q~4bxP)gLlK8>mkMHY)NQW=q~}%l)kwOf>)PQ~9Oka&<h8=SxIR at c5
+Bq)<2^pcNIu4OXe(HHdi876I1>{|AJp&|-_Ds2FM+IvI#&98r{_}h#nR2=qLuB8ueHJ>_{h^<cPHpiG
+O+ at Ck@NNOIp3gKaKr774_B0eU6-l3-uyWtOlfEC(TmZ3$HI%;P=&bl&;$B)+67w5bb|G4ZP=RJ1YX}h
+G6D}5%4>3Q}61YmOHnbF+MO1?=O^{cdmt>up!FObD6eKotHx*5%wu^7OfpuB{Zj1e1zgm$Sow-YnW|#
+eEBHz=h(M~<`yg9`jJa0iXI`HOGw0*frugcww(u3c~{H_3jXvDTGmYQDtQe&KFIhNt$dG+PIy7jWCp3
+Rd1YDjcCoQ)@sqtZ25T1p%feNCSN5FpRE?Haf*ibsX!G_?`xJ<xCXL}BJCLg!L07E(1s0;gl0t>*2u+
+NU~2mg+|C_zy7fdFf at n#m}=3WnxdRPhHK3*C>nR2yWMaIOQbOf<z+E=n1OY5`5S7RnG)X{_jF1_&<P3
+|7iOMsPvOB3<5C%Mlf*4+6aXp2nqkbMhM0aUr-u;ih at 7Poe*(gCKNkpI1uu~5Q-daknk at M`7Klmu>%h
+!;o+$YKH_i*dW0zt7aDbRaERez2SEq=kvutynTdm!i}(}4b^;$&L};*I@$haDAM&w;`d}mM at MWR!fyf
+Bz(6kFb^15;QR~R0?ukeG#cI1SA>V<+&B$kSg3g+}fR<_^8e+-qbH?&Zvxfq1<_l3v*hoRE?52$3{w=
+ZQeKSHH12men)rOST=m5PouXf_T6&w at rl57`;f5<rcvi{s(U2_MC~#xW^hqu6uATy6`_$Q-p);n8h&3
+P7I6?;`cil)+5>_d~T_UZ6^V?ph)47Qr&ip-wzcLpOkQf%}fxlBIZhdQ`7$706uz-3Lp{cKT4Z>6sSF
+B^3wc0xa;_ykcePiLJvDp at Bx3pb3+CM3wQ%P{AhyI%ul-9LrOsk?NJ&Eptx?QOgTLCQJas&Op3-lVFn
+Zg2<1ChYt%9Ybzw&PY`a2%)q-%DXx)?kBgQya%A3!)ZO6>+2*MUtgCm*E3}epUrBg4q0L)!!z1S5Vx*
+tLe6F6Kvp7M$^>i{)wRvONBx735o->W|r2&SBJFoOC);DOXQA<nRQ&M!aYPrycwv#0d`ZlNfOU|4(Y`
+%3B@%dFY1B^-9m4aYEqUc9FWdjrHJ7To`dR+1x;{}X2E($3HlabfZ4PVs^c}-=3bDA5r)1*E|__0yJ6
+);ktuez?kxzJ0?w>I`bHZq89))H!6+PHPub#5Nn_~LnDXq)`i1dodCutgfP`;N7W^P_c>l3{X at +V=pO
+uBh6O^2mg^OLOwm%zIbnEf4d at t3c|Pvz#m36dy9iUGJ%84nQj_nr<e=P#PB0;_H)d2+->~L&ggsKc^T
+MrM#yT72Veceo<3B6KUtZr6H|Ox(xxZr^7nP4D<d%c!R;U{<53>{~tl6 at zJ6$g1u9Tl0n&X+$zlNS!^
+;U at E=g=hm3Sz^jfZc*!m at Fh)2srxQO)4kV$aDjlEZ#pJ$N3Zi?pL8bJX@*072lyY5RJ(#qZqd#%Y8#S
+}3r`nUI at q0QGq-&w<FDRvD4pIWs{iDgQRENcB{3W!~A_hUi8w&M(@Bs>jmbIJ+JuS(&y1ViOlt2lMTg
+V;`LwLz0|HV3e=G)n2Yz6yc*9p at AG=5NFU4P~PY&m093*CaMik2)v at YJBC3Ef6P45C`f;J_xgL<nBtr
++Faqc05~PJC3j=SKi?$fGA^+&Q9&AkF|M2o8`?^^BvhT5lv}3KRL2wYekm#!*}++W!k`9hVO-WETi#Q
+KGF6d_ll%n7{YT+s!5O8sto53atfY`8-si1c8cE_ugw%wXu7eOPfYy4CO!^Q_d>dz-yK5(TAo at pGF{&
+ojK8_RIyM9gXWf5_*(!^M_oR!TXWC5XRydXff<+jH8#EvcdlRIdjKJYkCArO3LlFR-RFVWn83uhnUmG
+wdKFrKwt>z=}nKS3n-0z at p+BVh)I?xoC^yN~bt=5UUK&PdMB`^_R at x~Naaeg8YO+mJ3>gz8yOGEc}^L
+bL(c6s^Wx@>cd^J=d%-23mGsWX190oJ7Tm=O6j|Zse14p<;zPT{#bz=tyfeuvjN at 0c3O?_!sit!6A8b
+lXS>c{ZZKbeQA5Cs2t+-7zc?QA7^9>nGrIddTr%t->cET50z+^bxiv5I9x=>`%j7V?Q*>R1t|TmTYiH
+{-&_4e!9v0$2JW~BB~TKla1sQ62ajU#KoW=kTXLjW at 7MyQj`T4YI%0i9{89aYkBA=${{{Y at _LM@7Q;A
+R555hkDF6oiDz5fZPhZ~844p$ELg+TQaw!@Ia-2?rJE`7&mcyc(gAo#BY`bhhJAWoPZ*b1T!QMesy?Y
+QS~cY#N)H}v6r*>T<ufS}K?k1<0ZQkUfLDuL*i#Ie7ie+iEyaAR2}{LaU6 at dgd)EA`xK^zRZsXQSk;e
+R2HY4}hNMt8rI3r at k_l(=9*Ln8_R+8x~kI2B^A<0nY4qb`<mLv0(;&<XXRP-&4S#58sNdAj%ehNde<_
+c(n1~k170R;Y->8zGXzScY!l at i`}@_f$~EQHapMKogcr9vgB2T{;pofAIAXaSKSfkQ1<w at 5l;v_gX!$
+wpWbUdd5^vaJ&JqOZ$w8Yvmq8TH8-6#Z+hB{Xgcl|yx=XpY6|b^&_8cFACSgEhs}WG`3&}SrW`OP at K^
+(ZaNS+!dYMw5i8^ae<5A5NgaqO9^`t&wu9Gd(cRN6Yi%w5U&=gmyi)5K5a7E7*I#;QirEujXdv&;-v?
+9MQtO1rzOY(MHc{x+mtJ>2*E$Oc<!#thV7_A3yofC6Guy~=@7>VXWBlq^-{Hoq=V%y;fPFH9RTF;3HQ
+10@|U%-VX=bK<T>4}@RtZ&*_pk)^=UKkk6#{B^{XPWHKXhJBg at g9w*369lFmQONdI7~hR;O*j2j&hC6
+?QEJFj}?#Pq_G!?ev!f}=%P75Nm1kJCnvhojy+Uremynrn!MZvOC+GeQ?cl}t%hlY=WtJN&|ZjxoTJ2
+x%-qrte^yH+zl=aG>$`5#zB87ufgo1}Ud|{1pf|o|z~Z&~HF%y2J(JIL-FO=@Epi~kaiJ*70CEeioMB
+C#B1{#|kmmRevf+ at fXh4IwCMNfmoYyBX^;9=+$terr6Ljk=tm2Wh#Ky~LbRbp~DJxy|Cua<zbQ<sD&F
+TXn^7<+m_f1+<)O|s_Qa+egmueNx`DPHM<@TEB$6+2DuV>;u;DV<Xd^Tz*>w~1%Yhbz$o<X0M at zp{|b
+&gP38?<G&J}&0Xfbqvgq5H^q(T{J4XP?gNQN}Sub87e(;5(PP!Sj*LycPZjlJ<@M4T+0T`iMV0Jmvjp
+>H&DTLKV98B!j~0!+9S!)F%H(^mdfhuhgf;(0A1`F8QMt5j--w{;u}hXeQ6q?^g<8b&J at e&Qyiv#@T)
+j{n=Jd*d?+>Z3THS;7m^jvqPn1(DVCG3Gu(?kEu6l)bvzc6B}^Shl_Votq!Xql_%;bdWgO->1E9RJ~*
+QIu76be7EERy1&p7<2$%ctG>O39Wc3&J_&{KAmNseHFc^rI3_6^dl@=@dvEL;v8uW!`Dq6fBuiWtpL>
+U8q8e~jQiwf-<JJQ_$CTC`%S(?6Q`-vJzCmEd`9XyQVb>7?UuRKo!#=Q3=_<N6ZcN}=kOiha@?axPt{
+Et_>AFuw=u}IP(&Ae$bq5;C#udrV!`ShslSJ;QV4?QrL<`~I-LVk=aFu3jLc<)F!M({XBy0_bJ;mZfX
+XXrdF(_cEW3`YFif<c2c=hF&JFEq!~szJjvf2VH-{kg^C77SWYj-KnUSLlwOW15+1uA}9de$!G!$1{V
+_Ec*2sDRi9e9ef_*c2pOAFIL^Z0lx|)6a0`K?o&5j|DI4Xywnf4-a_#UH-iW7hWp-lRD>^r1=4J4`)^
+^kp3J4=1JM+JrX&1J<pQhssoexeJ+f<#K;WWp!@HJ&Si>Qrd?9Z5nnUss_us`Ari{-h6o;xF-q*U^Ki
+C at Hm#NJ22a!c)ET0n%@%u0EPwEHzwtkHkx<9w)yV_d&u7|OWMBL}@F|xWE_o^Spw;F^Y7~?X=LbauB4
+YH4WfFnTOq?!{<+<UlxKVHw~0mTZbTy<!_ukK6-s;S#Ip?64yT8aYCkQ1BwtObSyncacw%JvW5KFi|+
+dNzyd?~~EGt9PGz6`R~Q*q!2&`uzwx{$;4n`DF0B6}erAdts*BsR3x^%-=j^Hv(``wDFk8o0~|vGvT9
+D%f4tX&Zx(vkX(p3wXhZFGlIm~psA7y%B1Ijw{yBmLCXv~3`Z-FX2;j{3cXt%V<JqyZ(Z$-h(=#+>$F
+_!p^Xjtx`<cgX5?vGHv=%X_}D_me93f1YK7|ju28o3eZ;ujU#u=O`JD6;ta35h8c8w2xr+>}9^dfNh6
+`5$h$MGR9=`0b;FMo`^rc6dQ&k#NDmB!ZhSAI!pMy^*#7VMcnO<VDcjiJ3hVrJ2<-i5s`rfh>-e>Rb^
+Hxmv)|%tZ>`&mrTWcZ);e<L~K5H+X^X*C?k|Mo%iDTVGV%TUPhZY(hR!4`tOpOvWmvPXGAUvCemFUvO
+Ti|K*J at Go8oB8qTrR*xT>+=x!3%AoE05Nj%uUNNw)~n1lLTE()T^IEJD=N7wmCUD<c%%_xv?wVHLT<L
+}NuIZCM5aQAI#>dF-Eoa2c*wd{IWGg8L>^hAtDiAbR^t-s`bf{Gp~-=xqw at Z<Kz-uhmz8i?`l}w{4>C
+<QeQ{~^e;n`c|MTnNUnL*@lM}zoG5qtSpYs;+-wIKu)ZzamlB4`G!H at hsBsypmzi2-nL1N-?u%_t|g{
+J;M1{oc0QItGPiWEQGv-|%sa#$NjMj`nr_WYE8;^0w2l42iig!C^Q`-Aa;QAcF@%hglj&|bp6BshL(p
+Ge{`YL2>4?8ty5u)}!5K9!{?b{I_Lhx+k|$A^d482osL at y}Uc@)s2TOW*8AV0mr686PYsqrXi+y#K=V
+?+DQX9QgmcW79Er10-hb0y?CW{)YdHBK;t-6e&#it*B$)>V^35$9@&~n}5(^`f7-jN8L$u<P at UHrv7M
+%EUJCSfRDtI!2d$EVeaeIW#+%JWz6+`H%dI?j*bS%|3E`D*Z>24 at v|NuNE{t}_r*e{cjOG3 at bdN#Y7O
+CgyPu2`;9poLGZVirIJ)s+*X0C?sjbA{B<MO5F3h&qQ~)4w(ad`*8~hF8OLGvTE7)^Fnj1HdIOw%&-D
+)qZHWE1ouWu)K-?YbIPq&$us?pj2ke1WC{%~HfudOFW@>%kwlofO at yDmHDgfRI2B+9P2y5{z#AAALm{
+ at Js2#7S={n*$0nKf7zu2q7|^%?c*9n`xkDd>wt`3f2liAq?p|b3?wKPod||A}of8-m9S7 at 9Vw<Y?mC8
+UgN;LPhqg39wCa)$lF9IkP$1XoYCIg&XpiOjf8MPC_W_i`H`}>a9{R|Fal8g)>Uqo&b=TM!d5qOzVzn
+(v3d){N6Q at Z<k&2*Y3c_DKX;nY$8**Dh=s~%sYV!BZ$kllir%MYKzG&I#?T_0 at FEtJr|u|iU_wJ#UWN
+xvH$Ke6_EQzdjiQDX9>ND(0Cga18}($dIReE;*iWqZym@$|$+&jAclo2O(t*?<)=d*=G$iw_JmJYNRG
+5>q(AR;EKKJX at Ilm#-WW1NIn;sof=yeBA9JCqX#<Mjk7vY0){mP!&Tq>OF(+pTWd&TmO*cfh0C&ton_
+0*T{(pIGs&vI%JSNZbJnzPJSLO5Sv?Q|mF>yvaz#wbByj{Ib`!-xl-zEvvE(?m3bR}i=5+-!MuSuf9P
+eA$LvUC)ZRLHj*cw?)b^L`Lxp>n|Gfo`uVJX#ms~%+!`6?pyuqs>~Pr_mWfG7eM}#JQZ;M9r at eW>^*O
+ at n0Pw5QtZ`ZT(LfCxO0GKks!7dxJYW0$pExwRN+aFXQ?uHZiFGbV=r-GMGsE{XUL54RDk1)Pp`3DhFr
+JL^Qm_$zA>Iw{~TIC&U-ZrPdp^i$?Kk;&i7}moVaz0Oo3(j8{E`=gk02jX`kxLG|meOLHLa$PIq*{T>
++5rx2|gQ`KF@^=_H~()DE?5clhQ|OxwSqm^2Vn&@QgKj1%uA4 at Y1IEZx*aEL^n%%nNK&qB(aQ9N%b<(
+>xaS+aWtAc8D8AK3!3Yjbi<@ZfJ!(7^Idn)Jd(@(8w4gPC#4K2}KH~&zuuDn^xI#5d$o2?EJu%&Wtmm
+&T4%@n+r)+kTe=sT0&s6yegv>8Ey_hm=P45yj)tNcs<<)X0E+0vL!vCFG4lTDjSn`LBRp8!PnQS(^Pg
+NchlT_ftWwJE`V=l$?tQiPQ{Tpouf?1FZg{z at x~qSbfw48yO?P+%#ZV9O8TO>5IlLGIR1$=1!}uMJIJ
+qWDbnCIgjbQ?B4rzPxV?F5jit$HH<gL&g;XjccdfyOO?wT*xBJ+xjQ;FzSP9GlMCG(X@=_s+NLwztzB
+1Q)_9`@XkrkX4Z)dFZE7VEwWx<U&c2XU4@*Bw$TjFj&AWDW=1pURi_Hr^z%V|Wmr;m?@ve`&zV$gD at 9
+Yjua`^w2 at o$pXjw$!fHlGpj!th*r|8jSLvNNXi^5m;TDyn^pg=6$$QfB4{6^z-kX@*Vg5w)szCYKj6;
+h{ACKg+K~~K!U>2{SZtNFhmd}PJ$4Ik-tMn2yu8T(GSx#L>?)4RB&)(d_gb~{LzH^q8*L>h5o)|14Rz
+Z6CUX4aEb1Kg~X2v+z2|vB at fCD_`plir at 8|96cO(LhlKw^{^XjC<D(IRAIussbVQs}@TkJrdxVk0XS@
+#vhCYA7N9x{=puVtggv1f8-tk`WVfX;?BYE*q-hhud`ccq<{6$j#5*=xWOJQaIF4?%cC*jE<auqJg*0
+9n0DQ^$|w{BWM-T3?0YP-YPDIbc)fh*V{yxXY_|ARcTq6oEFhhm-IVQRM|ulWHtfUkHXi%b5il5 at 1|=
+m%8}vPSMcf2p{*{CupW5ykwZbbl%?ZX7+{AMVooj`|K8XZ3A9{p!Ct#IxLAM)gB+Edv9J{ht&}+)ntK
+&X+*n0_)+VJt6>(8JM1qye}bTXHqwUy{Pz`G!v{n&$wqr?QDdpfs7}wNu~B#$}U^r*kydqG$J|>K(M{
+)k)lLdOnpPe&fM_p1-s8e&zx}~k}NHHyk3;>Ab3Qa{pWcku$KgLCkWrWIeEZ?z~r)nDh7&B$E`rM1Z_
+*BbaYf3>1pfYD^Ao>zmIf4iL^w;sA<r=2bBWSU5MoboJ%h!9ENz>tSZLJwQTa%3rVtGa(i0qVu|`B8Y
+HP6?NAO_P=YIt&|bw|=M`ON2Y`f>kz_WAaA!>OG+G#PYqw8Tlp`X<UZhSQpkliD!DTvOA+-{tjQ0s>5
+$WoSx2gf+aqg^z&LmYm3vDzK?un+rhS<Mt!gEUrQgTQrPgl2lBLbM-ZC$bouR7T_>_0^*0koX3P6EoI
+igcAOn_b=!yS9T(Js6#_VH0$Eyf&kqUK&Lit`ot5InA}#&Mk}kMVWwM-)hM%$X at KZ3So)88x^K^qdkR
+V3y+IEd5?$MLmXyt*}kG?xpg&1GTJ5zbY$E_fj*0g?C!(NC5#i>lWJ=whMVH4iL*(B8M(<hz;mWfke8
+8Sr)^|AL_=7)fhO!mqysS2yj4R=?~eA&=UimZH-hgkZ+|q-!CfV}I3!)^&J<V37piwM?J(7x#VgaiV2
+`*NK=4x7KD%Asges-Q>j9;GmvD~ytzhENNBa|<IQvzMQ~$kkwLO<mh0?MPmDtneRPS|ar>AhrZ2pImf
+8aYG&sRkBp3G?9!YXQCUCw9D=ESn9z^c$eqYa61L^`$Eo~6R28`NZB4aAFO;uypv*xsY&ozJYqcqvy&
+P=drklY8@}Ia8 at bfka}TOGM&BI@!CI*$YH6%>sbp*vc~7q5EyAn+NB at 5}`Q7COY1(24vtF%*XGCNua8
+|w68N)Kdy2|;ZU|USI8~_+vu~Xk=4pb-99{D8uvXeOxrxc!$0S|mE<~EQFe|yx}jIUN4XHD3dTm4cvh
+Jt27EY6g44#?et_~D{r2v at x<6M(#QO*Ls-x0)Twb0fd1Oi|yG6;LWa(ny3Cf@<8ZiW5psum_y}vZ~TO
+y?EQYbndSD8hj`U$%UvDHTr3XREb?5q<eyt0Q(?|c5>)COEWFMzhzoLS at E4YIX6d{V6`aZfL5;i{XQ>
+R{KY%w^pnW_DkRuGQ at 8P`)_TZwh%gR+JL~yq)(e_K=>v;G(iFSUlH#@3-WDuttsqI=J2lW5B6s9<pok
+GMWvVrNSIGKZc)X;sPT{s?~ea#9QNAv6!42hK~vn6BC4`Y-!Q%#ie3R$YFwUd)sJWnw6GL<s|pBp+qe
+p$!FfFb=-$NgIs1!cssAW&Q(#hE6&I3)|pI1@~iu9somc1$B3;EG=&D7WRGHT7Qni}2tMYILbZ(d5^Q
+kN46ZBOS7yc6LAs$~mDv{(uh6FMl=TdrA5bs3Zs_>`fg<?-u%~Q?DnH9`)6<xDuVP$xm~*uFfBx^i3D
+1ast905))pm7P79VlWck)lEPVN4^^Y7}Q!@75_B(EyjieClA|Nk7wcRlj|^&oykam0b&Py#-xG7uO;5
+e)lnSq6Ckpd+OZIVi-!_ at fmH9l3pEaMVWZSPTgcI7U!Au=~9n*@wR at AwK%w)B%(5<ZviaAB_<#I>Pl}
+d?XF-c<B%o`!JVbJ7S~$fY^?aqzCkaKN at H8Co^#$+uq}T9E*=&dh}693qC;Y5EG4#<VZL@*x1PZGT5i
+6mpTeHAm{*~haUQekPV6c6=D;uBbd%<--GEvlbu>Y3|HtM?)i^jD+~XTYiL?O5?FKeg9)24KM>o#_ at B
+NJrm5h4bR>^&ksYn^4r{Iq3j{mRS{_s%TFef*#wmoCchJ<sA?W=@&GMg$m2L6=^7banj-qR{*qo<0bK
++jnH#Gy%_aIu$XhkCsLWpi;hu^{@k34mRXZL*^H|)1CC at bq!Wo1@#&OJ9`SJvK$=0`~1x4v#I>}Q(o&
+kA0;<Q- at ByAK-srDU<M0R7OB8T-kGYuNYSs)B320|VF3a(*-B`-Ofi^r85mTMr%l=WfUC5H2 at 9U5^c9
+ejx$hfRC#A_RGfKyg`5E{Q>^y4f-qZ5Aa8C&|i6ffIoVJ{>u9Ud?l6nE1WXe<ei$?cch13`2tRyPhJG
+DnE5WAG)2=FH75Mp-dg-}D!8S+DAv_}`!ahm-A1}VQ&!p;Qc~+l!+m{|kj_dL3E=Q at 2IW<dx{KMgP+}
+Y6l}koAc~yOk4@}94)7n_tZmuC>hq>`ACa{gGXSGk7?jis-Z8F1Clmmj;h&!nXeUCbNRnm9ov5kavU*
+ALkF=tM+!&wX5EteJ^NlZ at aCg{pPfF}&z_`5u(OKaBPj(7--dqcxal$8H8vHPYvBFMfflGII`e7qE`7
+Bpe=B&*D>8p;6;j6M2|>Zl0Ip|!W!*zl2b>P+8aT7}SkQPq at zLyHKea6QhijpE;$qI=yd<2t1hP at J(n
+CSg*G9yvu1PGytfFSJQ%cz}3td4b%i3LMZU8yS4Z$U}el${k9;%O+aE>pcP)pBBVbMA7xe%TLbZV6 at 7
+;(=(9+af+*Ud%MI8irX+^l$VnlkIrm?*=FdAURUZmFjmCfwHiF-uG9VXcyqktFX=#pwpyd~wW)>Y#@N
+q(w0lW7ou<ZPp7m1@&036bN1}jD8x?<t&hLyZ+m^m3X2Pu-4qpnw>Ooamf+Fm^$aQN0G1tr1mBPJzjw
+f<KJy6>^U=aFr+<k8-gr=X^RqBt)`NUbM%9dC2*~7?9jfmpLx!`S}%_r26lNWQXcNzVr^g_U+-sts)x
+2{#=nYY^bqRb2QRZ7RGb&>x at gq5rjQc)mf at pf!Z0LnUm8&6&c9`}AIxAP?#ShMVH79NbJy{+Wcbap4~
+U#8G{bm~Ov?x;Q7yZxPs<Q-4{m?B2l<LCi$lT5%GA68@#$zbgv88^E@!i~B&V$Wf at nlBlYorl6?)P^r
+H(jy`U??6>NJAmXe*;_QIry0RxF}P8fwD2v{*0zmb4~NKbLlE{yp%~|gU$oPkVBRMW*UM9FhUzl{#5u
+e%{8il}-Mfyx_Rs{vAo_H--W>?ST^2=-1>G+JkMOSb0GT);T!-{vn^xlY2B!c?8fS-sNZ--L7t<xDz(
+UN&O>F}j#8NErke=Vsm~)oiQ~;~h$&OHyXUiIT25*Hy0Z>e&TwxgDLTH1}!`_ at fVx)S59!9ZiVw at R&-
+nizJ4aglr(w2$h)}xi1i7s3L2P!ZrUOZoJxXaQU)Jsr$Z`HS-P!@T~knWsj_or^d+`F#X)y+<)OHqi=
+ptvUSeCBhR0E8;&0;bjy*kC*UhB?S>gR(-ZX$O)smt(IiaiWNz(s*C>q54U)w}+$bvA-Q|u6763JzlU
+0l-3^PGJqP?T91pga?z}&dYJ|`&ArBZ6)&2GA6e`LdJGDJ-dt|MlrBIlfKjM3@{$M%?TK^hsQBadyyK
+u!ogg%XDPpV3YuUV~)P6&VrOYl)tvqPXJzU(8vFCslvmvUgd7?!j^?hPvG>Ji!AWL_<c$8vHom4uRM9
+WBO at MuVGh~LRQ^4_1Ab1tY1FtigW<0%T&9bwt~N0xLGlQ4$_p0lyrjUXmNq<u{l=5J8Mxc|k?@A)N9f
+39i%O7rfRRdN5zWjz#dUjN_^Cfyxoy?&)Vf9U2NF!Y~$ebLkVE=TZx_Da8`DgWRqze!epcYr225{C3=
+=7mgtBGM243iK0+9Fs3;dSFMA{EVs;KM~)bHOA==lVA3!k5V7zzmH-)0Uy=h7(ak4iX4+UJJd`+QaKr
+Qw4vrd0<|>!Q;r-+l>9PQOdT44`A6$MiH|>zGIDk_kM2Nr2j5hF at Z6-?G3bNgM at cqG5B)$G`(!1tPm=
+Yc&x;(iHh;?WJ0C4#&tE!3+26DLenfWI+qa#Ryte at A#`Iq?nS8fL5B;K%lCG at q;oj}o9rYN$A%pp<nR
+lcpfv>nr`0c?zE0X<_9`~QzExIlV_IP9#ufA~yqV;Qqclk1L^Rsg4FHADr?O^vk+D;*z<DoBkP5sNZT
+89DC_3)tn{{8)x+XMdS{{G7C0e^IVe{_2vk%@2R$bT*svtLTZ{81`qk16Mnek37SZcQG>p>?V7rnpl`
+=|_y00nGEVwQ#pdkLP5lD8;4P^}=@VI65h^HJ8s at dL<J!9mG%yLFimaBc(Z0 at E%%bE~_&jJY3>BF!FM
+@>s#&`Z?8Gg4gEHt+rwl|!t~A_sRiM82)!(L<#_7AJDOe>?p-2$r2^nmb;BWD?u{&fXxvFp3!bN~&tL
+xQ844Eh8nH<{PYX@%F6a#wwRuna3rBG-A;;4bs5|v$5pJ#v(^NL_^X`wFquy-6+3t*A2(2ZxY*jhWiW
+5dyZ#~ak&x_~>ro?b)as_4?rf!9?rV2it%BP9=6ub<|WJoJ`;deAxcOjy{Sl5H1bu)4?8u`Z<N?&t)f
+L-qo?*|~}ySU^xdA`dD2rdl5NbL>;l%Y1lHOf>>)8FUI_qaVjq|H2|+h!HnuOc(c6);}c5%iE8tkee<
+3Bg7oWCuQn#%ZvD=qbTNxAAEjeQ`1A=F<1zt-Qw&$m~$QvY0dQo|aMuqpjUoBHpf5PC&ejIng!O5)~U
+d#n;j3ZWNR8V56$7`YK!S`cV}xVUn)?49NWBNF+Z`OTggC5awf<WZ^92)m<u@^FwzGbn_T;6a*=+Fb9
+KD2kqe&k|*C669Txw;j_@?zH+8MAuSWT1^jxUz+CpL<aICRu&guTLmi{HZa4J$9FO5WuALx7Sla;T?j
+iY9THR)Ew3OFfsiEja+_^%p<tK8nxTksQ*mtHIQw*`q`&l0hk>(EKTw`$V7QkL|lP84teES=ImKh&E`
+>Z_s_#^~^Kcf!&_HQR4{&?44Mj^hp+i%7q2n?l25~E29Mp2l+pzn4j#rZLHdFax9s#9@#u+Sfb_r&4x
+c6Yb?rX)GKl*oe|<GW7pNVj~FCFmzv0;R`X!ZD-?e+Y1iqasFps4?~{96Jz)?CpLj<VRDZ1$tBgll)U
+N!;a(Q&uD1!Va3NkvU2oiCW0b<CePp99rcmfML+FIN4btZl1GQH{_uVj*x|-w?9j9OGpCmwPVWx>b1Z
+_hw5VE&*Y>-5)F+c;aeS_`^Dko&z8xN|&OaM+(Qm#~whmQIe))DBA`|KD*EGBUKP&s9ei?^AkJ_8Td6
+>SjzwScX|MT!q6B0N7nukmW1W$kttup_M9`^nEa|4lHACB&uF^FTO-w?b3yL0=+ef$OQ;g{|^Ox6df)
+sxjvdJh=;ms3<{@Huvv8#AET<oKiv1+ at obR#QCkJ~=Bg2GeSzpJa_rQelm%oF>|7z_CFGe2%a^9b{l7
+Bnd4z!>lWeyVX|wB6;~7@)Fr52>X7UO*EMiaINtvleFivW}Ydcg23e}l)G~Txtso^k;e^XWS{dfKc2S
+w_7dUc3ODCqt%K`LQm8b!S7Vt;!plBMs1Y?bfGOn5k9kynsuIh1F9$^+NxN5S5IxqRD4SEz+!^!w4$s
+1vUuEI}+b5&TH<6OK5z>IPM|SfbNq3iea1$zI9__;2B_7ZAyS}N;h9*M0;C`kon4CznR`6O!Y5u*u6_
+j9CK>nD2aUX at tlHYiQuDADyMU9lmB%M2WpNC;4#b8V1pF7`yKW%+i^E*56ul{zwk)s$A;rTsruWMqwN
+}av^Ow`5L2W8&zxz|1;0*p9ow$AUL{qHk;{pvFVd?U%)W}BPb`ASq9G1E9qY($Q))mihkTk#Gjm)*Js
+ta0*H!zOv9YGAq+TMTa#Il)Xnf at MSSYWdtI*<f)dfiZgNB4x*I`>NV^8N~BiqzF%0+aAE4 at WukTUKlb
+bDdl2|lvgH=L}CS!vJ}Hmx>sK^sdh?Y5t{Q=p$FSCwXnJx^L-<dguwe0Xk$q at 8zha7gAd<(fzvPOJa`
+^S+Rkal{ILjOgo<ebes+`)RZn-h`+DR*HAL)Q2nXETl1L*_!R)CdN<N91T92>ft82vE;p8 at dtJ1mSX#
+#ZO-q4aIMMbn_Pw&F897US|bx0%YnO+flq+f2v+QXTMSadzz8s}x5rJTsKzwC<a_rs5~>h((-2mB8a-
+Tlii+qK<s?@r|#xAZp-`|6^;d&qAm_ecmkx<m+sAP5 at 4Ard7J5{6KcfCwDN2n2&jibNm?-A%=JD-pXr
+Kc?)GgSoxPk2L;46BQprcLnr`oZ=(aL9-(Uij(j9uRS8#T}K`tyaqIJjME+Q-lqtVf0*E*_`}j3e_}2
+4s2kAe5eE`K>K!@aFyg3#WS^lza`$EU5diKN*snw*2O-rS08+>ivF+|N{{(giEdp}<9IT at F(G!DyeBY
+t5jvXb8^h0y?=l)BGj@}697rIX`7s^6=LNC#qYGY1egVi77HSw<3-&ZD%!GZb0{njJc4fHFzfQQQq0-
+V6t at +#i<fM)5F;0|2_`{RbbPUX3R|Erz;*~5C%FRY|*zjWE|E=gYYkOeik592!oe7jNSZ{J9+E5@&=6
+;ys<oh+b(C~*4S>*_!p!2RKNzabX=^-f>IC06G6o3rVEtF!ht-5I-ncWc6*Ay!$1w=1dW8EyEu;VpLb
+fjQ516ALw?ZcSxI=$a|9RtBE&1{@tMdy&GZ%--O?vD2$0meZ|&iX;bdtuM1s9pu1Z46{ewTg$k-n41*
+ucT7GRMH~n_#ZKiGNHI#^2%Ag7d80N0Os_hgn!EXZ8p8f{0SGEA-ZPQTG9qEv4J(6!uwMCqv1ZCTRkY
+z2{JN^p>1??h9r6m)-MV^B&gyOgFOL$ytQmjat+)txUw*s0lK=^<4wjb(sAUh?cog+zSsXOL8HB~e#J
+VMfcgO1`j+oOk>;bPFFXL6l)0?hD1G4*$>$@MJ`+PH6w9t9T<0|*@7HRQxzY$DV3K%~Zfjzkly_nzwh
+?5y>iA!@Ig$ijqhPlS?m2w=zeCW at KD(n62x!kuVx;{JT-8^#{b}aYdlTYPZKkq4kzCye??@pWd7xXG#
+6X{u4E)o?2iA?47 at eqjjd9|qE20rC38rPV&rQCI$vuRh#Nd(k)64KY_7O>c)%Z)6;mukG;YLY2YN%6C
+2#~jslDIU$!Y2Q@&Y?|P#R&;c^Eo*ogfwD-hOCoAe?%8?+7uCuT7T**)=3lvN($1mJ?EyC#qXJDCC*G
+A%@v)NfJ?ylUP))#Xpaz7=hSl&@B%)69?r|FqVaPPM5e2=scUm}S$tzw?_ at wBX?42i;^F*;(Y#DO|ws
+Sr8Ua@)eUuQb__3#n!Ez`jRF9HfCD&7<a=SoomVpHTzm^*#`9ysQJPlpy;69F1hRyRl?T1e}7vO-F~E
+IgaRocer=LkK&b at AS92&tp4Ss;g_7qy03`fbPcfmUraBT!M at IViyczH~6)&{r*flJ99yl9fua;0!fch
+GSs?UznAk<M#`b|GXzLE-95bptFH`Hv>tJ7R`fOPEbHVd0=*3jxiRb+8=Z>ouP;5RPvpxQE%mO^$hq<
+i;2FNolG at oOOlh;s6IS4s6OoSY02_;O>z7K7AU$}cH}z~058|;$z4uMZ&Z5O-&IJde^KA@}`X)T@?X5
+B#Iv-tx6O$Zl(axKOicKughp?(?<{Cs7V(Fl4c`PCicfL4JK!SugvY{_IUvk>IXlu*feM4BTmW%gKlh
+wCqON(=p3$!^zdWqJKQs?D$P|!8IKM;T_EocB4WkL97VimV8CdjgRJd%}sk5XqeoW;G+grE!d)!CvA_
+JmFM%ep~DJTIpPFfOc1-Q67ri(G%xD#hK;@5*D?nYMR_&x?-H7f`~*$j;zcu{U1YA(G2YS)v3_qXw=w
+m6>dhFrhpp8K!luK=u;wA){2pl8i=1ul5nRZsZL^sGRZ_L3a$P7ia)yaZvWa6UGQqTJ{JdB}<RUg`|Z
+9 at 5J51K7y(HiwIVnTJLo@*e~h~(WKwsG4-C<x+1rcFaljkiE2GxM)_s6gxpYSY{1=cyO7uB-kN@?E9&
+OVZ$(bG$PBrE9aSO!8mjv7VLwDw$Tz48r6Cw6Ad<##ipF<TMPeB7NdeG1%-Xl_a0@~R3c*MO{{dM-Tp
+Uq6^=ZjSzT~j8BQdaJs6EDqkz+n6iH~0nVD<g107M@{PQ+(Oh)Ry1EIl&SIDW+BBz}+-K*#}fAm~V6B
+lwX*NU5LDAJJ}7#Yf#IIq=vX+ at tZ)&~dbgkOwcqzP9|Mgol1$U`igD?)}>PdG`w+grV8drVHgqV+r<|
+jQS$Rv*R+D+VAmiqbf&8Aw_tz)%68aF9K7yG3nQ2&Mv<vQvaWTs;b|kszc0F-<02?s;?XW!>CIB+o-A
+>s$gZDI`y&J$$3xs0BVDbN>w`w<+TzD;Q6FFFZbW#l6YDO+b_XDr|?EZrqb-;AyxKMAU=rkv`~IQ2fk
+El8eU#_R+kE6&;y{uhI-B3(GI2}eMukAw03L3T}Hz<&Y_}!g(_i07Z<TW$D~Xs at qP4~%L~--H%PB7km
+8~p#Stf*xfRFqx>AwxA#bPt_PTpj*a<huU&$MMv)9@@aV1tPahMWJ8lc!Eeu02VJ~0?$Sda*ZfV70LW
+uAI`o(%AIGkfr%SM&Z9n+(DUGfWn}HAz8iOOh1KmT+tsc+e-~rtGfMdZn}_o-RX8z|pc?UTHBDINJ^;
+7Zxh-zrni?S*98z`V$ULi!~-p2GxKZAJgGG*c2Zw=~y*iy%|(2+IylIQl-4rsbpbGQw1hBs=Iet+75o
+p*M|lh`O8qBfSigEUUT&o4y6_$USeGOedCGHStk&1yzl7I;R}XzseYt6mrrx|#0Ucts#qP#{svIFZND
+zT8@{R}Pw_g&b at 8}c at iBhwL9|?&m=5EcROFTLesi*1IMCWSzPh6y3q$h~m<-Pm(H&3D_06^?j#&1)Rq
+ZPhtHS`wop+B0=J9w5XBVF!`8=(OygW{~q%LW1MehK4t+soxL)cRT(*`In0RuNLmWrLFygP|a(3m!C7
+|-+mJrEddfa*0!qJXMrqhT}=NY5BMxU&!ck3v;so=w^Pd5X+M38?s<k>e_KVzO}1AD}8lDsCLjokM(?
+r($?vm4*4 at I&m-zUdn9M)@zH7+4H@>_x6Ain&x&i-02}f08Bhcd$>Y2hAoGha*KOzUiW7aO|3>2<69k
+P(RJsZ!<wMFm->Y{JxWn}T9VpkpmPR>M^)Q!i5E{&?S0*Ny6`+*m}?X}FVk8${VlQ1>4cFM at 5r?pbh?
+HFNE_rUquY=e1HtKf6{9-$qZ{hkBNj4``~hk7f+I3Vacj=Vjjxzf73K2kJsBw<?4-s^t&T~<#ya3W!L
+7lK<qqW*;l4=h-BB2+kNAO6Ni3va$!*Jmrz^4A?*H*g3Qvl(T3RWJh4fH(0QA8zx_eD~S0mDwx<^Qa<
+~y3CMT$L)d6idUFdQzC at APx=iO at UAD|2h+2VCz at Me>346)%N&C+CxgIO$R*cU-^gem=Z!X83rYXbQcN
+ at eY+Y>+Q2O$dTk!Je<J>jkz_(49F7M2<%)CE;<fRQt`Y*7Tna*i-;=P)zP5emxaCwk at cq&9eG#TP at r4
+i$=S;?0^<g#XRUr+18$3g7QIjwj%1f)cui%v!I#eJ7MEnE3%`T66E)6;!rUiW$&<?GYB-N_9guu;J%T
+2-t|iT?v6rM8O75fHWOEW<wVnXVGRMBDhr&HKBrMGxaIX^U&Q#StVhji_1LADZwK}7ZG8c1F_T+dFUW
+VReB!3%Bv>vaoi<t*4hjyU;ucIpTUqe+tKJ1663jGFE?SKiQA(DV$658R^k(we<ddF8d0^=l#kO+prC
+<#$Cg3>tk-3EgL_GCx7CC-jwJ at KV70UvOPqL17VgdWPm82Y7q_4{*9)PcIbG_ at XDGSsJb^J$;W$wT>u
+$PV^TnmFn%F?RGA9OFs(e&rvbD(a`aIPzOrelT(FyY5#%0MSR(W?xJ}9oaMzIeK!BBw2A>9xjf-tn5S
+Ed2nK(A3jd{DEnm8kuxLckFX-~w^5Zg1qoAC9fA%gI5vB7fVhWFUE=chhVXv^s#<@Cs#cwok#AAeFB|
+{Es7n9asA^kh%)VmeQ&93wuO6yjUr#Z=NiT#V<mKW3r{#X?)8~sE45SN(zFOWxyh#ao8(mjD3BA+fmf
+Y(nVk?vkH<3tQ&ybt1<69q8;|&N8o$Omj(;povlo3|EM-Cee=<-skbEm7Q*KR(o&gVyvrS6tLsEN at ho
+i#5kCvKqwc%-?IufUBX859QZ;XI|Bcr*&>nHcNEYB~AGWJr?Ce93Da{mkUYS~B=KeYnO8Oo1VWnM`U1
+rlz3N>2Zrg)FoR9eh*fs8w at IA*ERCI{vzBT37WUsLj+j}o(78K9mjM4L1M&u0Si#h`j<^kGuB)Q at R3H
+vLL~B#!Z%&(s+izM)bqJ^P at eimbODQ0sKG&dbj;AwBwW)Z#yNrM&+hdmmoIOJFnF)tw7XxEL8Vb#pd&
+?Gye{3yI6MIrBz~`OdfsLrU*F6A0qAFltu%L(<7}=iz8>=Vjz0r5esbq%!`PL<sy2Y)ciP>lGozQ+m_
+RXSy#ueyv(huXWvznA%yK~we#LYRlv35os~?KbamehEw;cXqNn<&Js&$1<camH5NM?J$-)=eMzYRaHC
+6wayY}KJl=u>ombBGnqNsoUEjCU?T4wTIoj4$F#e&L~&k%}%tHo#z^K^34b3?cif2{{qjQ^SKkeTv4x
+=5cm*i7aC23A)>4eo_``P6><!5i+q+#{z*hGgFvU!{^^%<@`fbwUmWDsr8d-tW})jYj}Cvveq3bi$6e
+BoKqrx4D*ld(4wjhR}kNXEv3U!M1l6`i<f5Xz;zrfLcPK#W(t}$J~U1G1yIG-N<rb$7=u66!+k`rPyf
+M`D2%p*`^<5dL>_G?ski4W@<l33EbTpYFbFsH{pw^u at Yr(gv>;Wt%Xnf^T#kB5C#P7n?D29|g+PppM;
+wiMch06sf7eW~sYbbUwu=YT1U#1T$(%5^Lfi(TqzfUt<R#;6H at vq5G0?OOEmFsLL$>AD#n>&1Urt(aZ
+Nh93BjE<TPi(YX$@F~6E&1+sGyh@}_kHCuJ8Kc6(`fF^rF}aoj at 3WW@nqulAf%`3CA40T*a9G?KE0*L
+OGfgpfa{QJzWYw16LIEn=vjgLD{6_YJay`phgc<YNwCWPwPO`wnVF~nP?dAve%xXBZ7eV|L$P`2IMvj
+9cV^tVQhS=4E0SxuMlz*|3UBOr|3s`x*K(zm+yP1#9R9^<(#@_p;c|D+w6b`EGq(7R3nnVY-hv`t(8?
+wT#mf>)r@>2tN`yU#$drKqSEe!qRUssa7mA^9tKMyrgho`QzTZd(>Exxo2%*Cr8ESJy&MVTDZfKnRPV
+Q*Q0Id6?H?)Q>bz-?@&b7G;L3WYY3 at 7pYE!?`y99g!83UkaGjCL=T+=Dw<vKmAjgz*Hd`^Pm1xF`?<z
+xG^*MrlylA;<9GU=~^tt6vshY52<tj=*aT{bf{ji1Zz!K>uL&Z9|^@L*~A~9`Or5`OmM)U3&Cf&hz|V
+vwd5-Z~L$5qx}YJ{o5z|iopKhM8E0W#1An*jDkOEfIH-(QHsD&2t^5G2VWQs;n+v{`FH5+08G?@z79N
+t9;qM-If`({2+)q4&;u|P`2mEe;wL)$F8bQR8usDf*@4fFj1DT%_{b<>&_Sbv6$d2Cp%3nY4l+<0Js8
+aK>?gGN0s7hj;SQgU#1-+GMn at 0E9V$KAZuTRO3(&^^`@X}zwjw^Nj`(N#9LA2SVS*f`L5%+V;Kv|SoE
+#u?|0UgT1pm`cm-|6z*Ac&nN1t&$HOC0Qf_sQTp11)Ypv(8DH8}SEt$4KWZM?6u`d4*5{iC+*9j%Y{?
+GoViuW*pI;~*3`=+mypPQhoV_ZJ1hgKq094jMlSf**nDGs~u^0jI6s$o!rEWlY`KzKR0sv-xS|JjT(P
+pGVYh^FgTd%eI=mf7@&Gx0n6vRRjOZvcInSXt4qQT8|BP#n;>9)fAF8t=w$x28xed_b&|45wK?`zJ%i
+O16DysOB!`UL%NE6TCs*&zRkm=c;R_7Pof92Y|k*0y%@ZONn at U-KvF5b9t7c(=^<3&6-7_aL^$gfX6y
+GCh_17BTU(?Q_&KREbYwL4QmCMlXgtQ#QV;OAnqf31RrjblLm8wcNHdR$^wx3hIdo<}Xr~8K6%&mhd1
+9?y$n<`38BVxgQq-LRk_C09-rPg0+w+Yhr}W+jsrx#?mgSr$>_HON8 at aX<Lz`Bl6>IYp4{9Vu+Bjn-q
+BjuL=5A9J)Ded6W<RJNvfp`fJF(i5KIEbl3EHV&=u5K(?9`&O*{!=Da=N=Kex|U2qsQj&b!dve>CgmN
+)-`A7iMM{ZzK!uV5qEIfLBxHFJNOSeG}ou^*QO-{c7XQ^k->aUQDuFdpdJ--?v};ZxN6$wZHjAB*sfQ
+_!Tu4?)%7CjPh>NyWsTv1mI0_%+Bq5+YNZI0+M|0#6rnxJXXtUu5Lz{TYecI=8bf4KA#D#ZwE9xL&I`
+<HnAlaoy`4=*jBG~+M>e0ZJYHK7yrG5yyK5jmA9r=SbWBjbWMb8LH|3IO14-yyyM6#|G{E9(^&T5Gy>
+FYFN*OosDVI9+^h6=SdMl)=uw1k0tB~y<dW?I%AiaLH*EZN at i#tz%Y0%T8nxJ}Nx+m(M_*KEsKD+o1!
+HvFsV?g3P^K^jLg+8O;lRf7ogyvW at zQRJ8AAnpMTcT4f9X)z{{u>>dKXyOp|466!7f<%*P7(dBQ^fFt
+eVnFX2%>NtB~h40D3roze8-(Qh7jZr)N()lp1T)B;ZMcqOEMxmiaTij6HOl-G{-1z_8HFoe)~*;9|Hw
+Pr)Kfd8=;Q5-t^;V_l*#Akf0o5yy+()KphS@{)qHaKbm<Uzf^EOMI$Ud2(WiA2z at z>I0{H`@^eS$A%l
+C=ZjMaKe)gj#MSR#^@S|dtz at PaI__#;x!`+P at X^TH|if89=iYf9>r$`7fSfa&4^A$%u8H&ojNRCn2+i
+m|&@890t<}=$D&jS2A4)O3Tz`x at V56=P|8G?V+As(v+{vC&StQz>&9HKsFA5y>c34D215A}F&xY;%%-
+;9c3>?=;LFGmc=ZMW@#^)_C9-aBVV5DINNpC~(1KsdT91#s=K0?+2e2^($GukN`=jL_EhSggyL`+(dp
+53_blwQ4$X(j(4fvck`L at Enj;0h2c1To@||BOBghN9v5`#-zMdxBbgb0{EVn*qww1X-JP<Z-N&KhC!%
+Yo)U(18JhB&4-~-6Mz_PPhN+o*FAD<GzAhKkhg|AbV<@*~p_UhNH*dJGMpr!N73Jy=Ew?OOXPWm2Q0g
+lU=QdQ<%~_Xb#5*xF9w at chch&gR$#!!IX?)mCC*+M|c4+Lpo7cR;lUH6}=>!n{wT at d~XnKzw|IS?5FL
+vwKRGI%)c=4~C=yz81w<r0v1;r2=C9&O7LJ&sK<ZeMfQ3grl5Q;zug6}VVH>aCphb5xoqi~I5M^ihF9
+GXTL at u^a0N8a?v*?wB+G3>hrH2cI22Za><Auu40?t7B>9JHSsI<l)f`iF?4oiI%g`@EZ4>frtSfdSo3
+=YGch-=p&$I*facAAt#s9>L9ieD;ykJQOVHBk#Lg*y0Pl!YAXKe!>gvlkP>xqltevsd#+Y)BT)y at uyK
+m{fR2#UkoU-4GaEEoo9R|Rq?V&c1Pgf9VBDR|5Q}L%+fE`DEqZF`j!DyI&!*S622RQeLD7QW;d2!n(x
+0DRPUE<y7(;vsP6*0<IVingzvok`f5tj>c2`)zg%AW at KHC%J|C9oGhPFS9=Xgh`7h~d=%Yu at T|)(u`R
+tV-N|~I$CWh1Xpc<EdPx$jQZGiou4PZaC0XyV;Z-rqP3mH at G8Y}1V(uF5yc$DW`Wzf#uTZ^|0ASd%p)
+la2y7Xp92M6sQ$;fy}QThlmNU$q?>Jcts+1P7Lx;N at v~8ZG at xH?~+>+690YGCyU-ZN)E~L69#AGE6jl
+y`TYl_m at -iOsdfwFV|j+?!<K*m^})LEZUO2CZdtt2A&8ncJgU`zgvj7%4<x9n-7+mNFlluzkOEm6>9U
+w``b{G3`Vijs9ea)%eV8s#)AzQ&nD at Lus~UH|LVPYv|!zj=I(M&y+T&AEi^CCa^0=&s(XfLNw*dh2&t
+9RfxdyB4NS6mKfjz#wXU1M+O*RpT)A8n*>#LzrUg#DDv#tzcKQy<F}*LpNm~McHE&sdleTm##go~}2k
+^J?#&0JA9GVMhM`67+-_2X at fg;O at Y^N&D#5Lt18JQ7n8UedEq%A$rF5Ri0#@8Uw;2fd`s at Ae=MnY#l?
+3!x)&d67JI#t$7<aI;6yk&mfo%VzQMlK*o2DbJvNe)wq#dd`hVTcn3@&Y%Ysiw=u@}#_GSW;``s*z**
+CPPm)#cK!~A|Pbrqdjq(Zg`-ct467ibu|w0y~bdk at C(Yi&z{6ewj+e1M=~{miHqX7!b&B|?!W+Q5Y09
+gCY}`7v>;^lRa*R+_2HB5IeB<<EcaRB-rCG0=s^jgDd?$MRs2FXiW9pz&})0lWI##bt3`dkbCoPMU6u
+F=fo5D9p+yeu at 7Z+EcF;`LtFZ`h5D?n++7g at L7I#1&{s#BZ_r1-(6Gi+hC;DUG_nYY9Q?$ge-S0stwE
+IDXhDl<NBhW)^kit*`gR$=h4+lL?b|ky-4>Mztd}MF(V^C|y;!t+ at Dw;U5Yxo`ze1Bk?{LCcpE{LKJC
+$k3~yYC~iPfr+eP&DqI3jJv7Wb`3ic<@|jM_)Xh|G at X{&MyAUukCKP_)JS5jr7#f5Vrq&5DewVno;B<
+g at _)-)1zZ7K5Cx(f}xKF&=Kv>Kaq!~^byMB#nEK8pE>)}F0r$9%#NkOFTRiU{a~_`yyrZ4CTt6iM<K0
+$7d({zso>$S`@N&i3H&>L?{Is-zvK4~w+H+Uzqjd9bZ~7;hdtbC=%5D{02SkT<}7p3jp5O_xW2I`c0R
+qdVwEnGMu6!_-$Lg}8Rn2L{hNZ65TW$VK9hYJz=8-AJvMeAVMg;Dl1w(!DadQhd56`vlN~_hkeQ7jG)
+S&MoDE_&k1Q+tB;=kDhS9T3;7ZT+Y1Y#RD1(2uhIRM?;MdOJMUQfCwdImkZ=;cPJ}~;IYN-nq&F5Pr|
+9tQK at myktnXk6I0E~)IR6C#eW^gpO<IcA>Oivftc&xHQPHiQ_b{S_ic*Rz<ja}{}=`Xvr&|n?Fc02(O
+MxM>!n#}FRcq_QQdkp^)YvV$1&LyNmCaLA}L7RuZ&{KK#)hl!u4aIy at jd6dZfY+Laf8S{SJkt8Jox=V
+NtNAaT>33%Ho3s4JZelo$LlBNrG)bZ)M3N+p?soG~A%kFofH4I9e$s{d%=x5;qUpiaUmWTB1Ur)a$JE
+gmVh8low1NMKJuS-)dwb}{XGiXTH%<GYdz^4&Tt0*lN2Y`Nxkq;Y^O)ZKQfl~7%z%H&2jr(sxA;hr#l
+>MOiS)3<<i}hdd6eR4K#7xs at Aimopu@0I`6ph9kDieI at _U%_b7#mWE~4q5DC$r9K$@cu1g-vQH?Ob6#
+|cw*waT<}x<@lO<i3p=<|AgP{!=jn|Ak)YV>`=VTeDvVdw-R5vHwoerTR}LUH<x#j}`x&Mv at cWvs=7F
+d0c>1i(@KXY&KF?yB&4!kQiNoYAmnwoA3J#j-F^7Z!u1am~AZFZuFLSW3tKMzv3`)km1#J>sm?|TsQ@
++yIeR}E`X)S{5~YWj<|=y{qCnv`q7}=`8D)#8}ysryAIFqZ@>tisX6EI&L)#ksx*5}$cpoU^}=M)+Kk
+(K$=z4wf at h&@H+NvuYfcKUcrqttqmY-uv&AdyTe2(Ui(0lmoEN at OnE-cwqb`xoh at ZUIZp<(ORa}_78+
+p2{^wSN;)vPft9(yse6&9b-S{et5AA?6^GP(`aS?w8w{boZ%rXv~T6=8nD!P$1T5Sg7#Z3%}7=h8JU)
+KI>-%!je-*busRiFN3F0?tMjUt;%+Kik`tMjC}&OLuEw-oJ(P>ZHztZfHvAD=Ch$8oq{}f|OVr#$hj0
+=D7m+a%|hqRng{^<1=0l at 5Cc<^<wrIjWS&0Tmoh6dtSVZ;H+FAs1-(Hv#v`<Yb?X*K;f+ZjGa(9QCB|
+6$>OB>wZy#a;QV|AdgLfxoV5x_Kh84<mQ7z<PGuM6loYK^*b(qnuPBrA)}5J4DN#IizhYu~rgs;lOvB
+niyRun^6N3O67S&P^#5??by7K}z=xL||X&F`LjHX=4J4N7JhLnBtf^mAqZ?S?-XSnf;?!r+IhZJTR+<
+gzGDt!mzVl%ZYGy-(i_OBAXi~nkS?za&cX%zKsRF*Jsbacf#3(SdD#ZnHUz75Fqe>Re6V~K=FpJ-UPD
+10&#V#Ua4eHCw(|Dw^M<M7k9SKFjha$z?O!l}VayZ3J|1i1JxAA#qwQ=;fvzG}{eaUy^R`0ip*y|FfQ
+eoH<Fd(&#0<U4AE`>;@A_Y|u}q1OxmFZo-S1DtL%!>o^yrKa*AcUT38Ti>vqcW@=!PiB>j7K#}m5>Ag
+kxpV_jqlp`&Kp{L;_$gy;VPMtCF`#O9 at Hh8eE2DG^Wn*UTmE72?_9Sm<p#- at 23=>?jlWT0m(lZ8Lb>!
+u at WL30A;e9SVYa&*KPhLiZvziC>7Rxs~E1XVruS6A>)#8RO+pZojES5_fKzcSsjvvxnrs;Zr;W_)J+?
+U0gO?;3gdxqW&Zm?%Tc0BfMmcBmX%Oz_b0?ZotfExf51}{h-NINOHJ|5h8_IY=mkrvbltO+m~HePH?c
+Ya8Vqc at +Ds*LkXa_QBwy3=wFU~gEh$T>NAnaX8!ckPHZfF#=lUC2Dy`xEM>`ED~_d{)(0XXg6m6OWV^
+HOm~JRtAQXd1;e)!&}~h9v*|kOpLQ{zjNC1eO;H9<QeIGvN?!8Cwik!CeDF%zw~KoC{GUtPSHJ^WWSP
+J?eaK}9(nD<IhzPxr>-M5sv<_QW0m_JSRqvaCzDuv`&UBqVkH2Ja|_&5E|3P3;%3^-F71;j4HP#B{dN
+&Yc3~wxMkLEFoGjTa3b}%R8MOU~)b>&QBY0e at TeoAbpMN<sKj_u{SI_YksC{|uH^ndn$My)8L=YMyag
+4$-3`YqBq451T6oHW)`4Bky-LWV51I*}ST6;$?J9HuApGfQ|F%_Tk(ZOg!9>Yo$_7nB}7LkNL(!ca)U
+i;wgijRzI@}WN2VbmUt(x2I+V~XjMkHzWZ)g3*h$q#_pek6h%oF*~xQ=A_-kNzZ#vk$xOjv?`nf-FIO
+WM9dj==9h*PY)PL!k<Za^0+VL!+x6)M+Yx~9&Nfu%kiHBv+PLb!vAa$3EMj0L(z+1HekehvtFIh{4Sa
+69l*^07MO8v&Bq6|#Lp<l at e$hHLCX8n-TJHMT(xE%KeN*AsLA_d(o|Wb+kKsrhupj5OYU|y-6Mv*&4B
+J6fsybfi2Zrv*KNAsebcOKn7Z?r#jo;Bix2_{Z0s>8_Gt%p#rwEl at qXp_r+&VDRg)_1U&;IJ|3A23*(
+`J(399r!CN;MNiEdx-_3u!;PU+JC2CZ at gKMr$bO!JqP$8=l1blsLu&+d`zrm=W{NF4Ra6497AVecK?A
+Y1!jq^I`aVGk%$xyr58JSWwo%nJQ}&9uy@@?v5boFSB<X&w&yuv=HQl&Exj2HCh}fA+T*mtNA{6 at XF#
+O>h_Mwh-D6GYq*9QS#d)7;M{%2CZPowd+CuCE6hvFY%c{dU<ZN^CF$$I|5wmGdzvtSf8p4B44a-CMz|
+QH%(C)3JY;nenS44h{+;DPOSeB-lLkBuQ&fVdD{uofd!tkGl~iNfafo!dD>&BxczwxY=q1^(m2A|Q94
+DE*f`)NwemThd|8ijP|AF%cYs*L(UTsZyryrRr?_61C;5PA^r7L|>9hoA$XGL+Q at g2K&B8ODh5LlTeB
+*bdY1e59Y#ckU$LtriL~dk~MefDDn;YYEUhgwQL at 3`#J%%pU9{zC!gH43&w2ZSu?UTpF1Mrrf%{@?_$
+-t>`CB$)IZQy=i<~7`UglKP3TUNS9rs=cx-URnPA-C-0HVK%W5d>C&HhMr8Z4OcM!ko{0gukOQYqmiG
+r*3%`V{Gd*Of7}a6uy9%BgA&YsN>>Slr1{V!~mBPQi82{oZ@!aZXB*PrKY^2*;V~$9UT7FoVv!rwnHQ
+1v`EzMcU1}Hdo;XSO%+Ul6p1Leg8Dosy0+%^<!zg7(o<676$SCQI at g3ganM(a*R#$u->ZrqtgAnubNw
+|RtSPknQXDEVv~iAZf<;IGKZeL at dV$}zO|kY at +Sc=9MHS}NC2Y}6)DXC}-c7otT{CC2U_djKIZSVFgt
+^kK!E17SR)UMoc11g#Lr9e|8G?(2O8XXn(3wY@{Uv2cfzBcla~}$zzoXK;n)GW4pDr>$bo4rD=xPLKQ
+o!8ycFg5nb|hd+1EV5hf2F!j(b_HXy;o2oIiQ4^c_xtO0{hjOB*}<0O6P3WE6B&(l*ep?=J44t<?A&u
+{V|j-baoanB`;{|PWlFLBQOJg$90}F8>F-WQ=dC)I$a)+etdUCqOs3Nw_z89*`7rsEqGYcE(wRBNKk#
+STO_$GgWNo=_lNuLRHzmpqy*b`ac6g;N!vLm?>#tpr`8a5N&do9p9$Vcm`JbJ495xJP>{Awk7PVc;fT
+Z-efH)Go{e|jcdyAAhcPI-<`i{c(=o#irN`L9PNU5C^ofso8?c(iG5dIi9BWzVTRYT)+N4h3WfZFhj*
+}pDESR%wUvs<8&g;$6thq)`O;8IrG0lNRWL!V<_s}h)-o0l<UPG*1K&|%EwUE^0C;5TZJLVSB0G&%pO
+a+izKtZ}akU|(iKp_`m0=a}X`pcAIx-T(H<C*@dZL>8(N>Q`>pYVx^?d=M|50}JzlH?Gk6f1Gj?|?aO
+=b(`4kdMjhI-i~QBfqFg8_+F02|Eh!ljQk|Q2CjF+nI$PE7EK2q|LJI$VuP=d5-htK!(!W&cVOath6J
+c|NejfZ~x!_^1uK0|Kq>?zyH_&`v3g5|MRaPt-pHEZ=uyc&SllbzX4bfK_f6tpcqPGJIbOd8ifgB-wL
+BJ1Y`7$w`k(KY&{2uDSEK=;K-4?I#3UG6u!~q*uKAd$RzFX<-_hqqu*!iAwFDn<Wa_^=mV`G at R8@DKf
+Oj2eqftJISM;cSQ&a`tFVtOLH47$@*NTt(1&X$JAhmKDU74VQ3}|>+76`R&m!?peFOcZ*>dby!GXO#V
+ at _YXr%3W>N!sDw(L;qE0s at C1)St8Ue8i)nUzDC~Phy8HySXQJG|kOep;D0R?^nyke;Htj8*}{%uynrJ
+Uo_+O2DVK5j&JY0nr`_8 at 4o?4-@{VB04$x4{uE4o4@&_%m`ZfE`6>%_IbOsEl_R2aj6csfp at J-~we62
+^6YxFY1o2HNRUuVU{BwS8N%n|D_g&Z-=cZ)f!6$(WDh_NY=`;WwOye5XE~jLv11@*lt;R<9-GgJfEaZ
+i{DY=pG)8ZN4Q;nYwF?<GiADEemgy(w(12hvRiT%Rgws3k*Nr1Fl%jW0C^)(8iS!i5DJ;z|{gyq~YQ3
+A6Vp~n?qtz0iWzZAfPJ4>9kfpuHB-O|jnLg5)tiTm at b;d_L~Ore($ZD+W#Af7G1b|^qZ?F+$26U({=@
+R~r^O1o%+*HsE`y(T0)R${J?xO0 at 7IG=$t=I1w&K*K%Qosji4S~UBpZ##&bK at BkcTf#3Jgw{cMzM}y#
+QkR6{$k@)rbX-~bX4eA98d)x^3CTPNd at 8ZXEIX*r25L<J at Fw5JvaB+kCm*zbAF_pNq%?JSvAH~^;T~!
+|eY-cPdK){`!3bTf&ViYd1edrt;sei>wMLRdOL%P`rj43<mSUS{X)03RRPCkRQDy at XjZL*SMM$K|LKt
+ddlW5^uTnH6d!#%K9wgJ!ly7b`f+BVMVbu(#QlCI6&E#CGuK1qFkZ|fu^1p$n@<xM3Ba-uj75&<T$&2
+ax#`N4TIMUPmUoEXlV?v&u_^wEg|q5ZMq=p*QdqJqajSX5ZXySF99uotU<a%vpvbw8gPGDjCWUDS(MF
+46Xg(@<1B182g!O3A~SQ2j>h=!jd)$|bwb#ESRKpMf6%r at xAufG@y_H70sZY#(w7(Vcs+ at q1Hb=j5^c
+nC_l^Rvm)@L6XGPQp-~{xMSJ**XmA$DV%7io+=Gd7Xdho>)q(z?VXRz&J4|o=Pwt$@-r8a2w-Jm&~2v
+aH0jIfb){0KX9Ht+wB9>d!-{I9`K;!Uax){<e8^|@ttlE+2I3`o=j>bqry_T+9@$ZN6%7=cAy=HKIR0
+TiU+*({esO1)$g4P_7Nz7ZClgK?h;>!yo2pKnTLP$AW}Px<i?>QF>W1cS#@fR$UPFNz#CReH*y4=-wN
+5ENq at hJgPf29NtRu-ib1x9!KDxmPeDuiH3Gef&iVxIWcNDHikq|RPE*KEgXnpV4b&~XFwtS{f);+Z)*
+J0!79s(h>e{}qZ%?YF*pC~vyR65$V&f?DUWXmlqr=>B~u<V5<44Qm0SfVNG+m_A}@<uv9cqs8y`!AWt
+switIFC2`#mD0;1;ioo*wiV;At&sY7TGy5-icnpsPq3SdQ&iU&2fXRq^JP6eB~hFhyK?0PljJ34YHuS
+)Q71RufJo<EOA`j~=8uw`J({*j?q2ZI07E;xfu$BkudHbZ8ned?y+b(Z=+I9*-4;U!F|kEdslA;eD1{
+1|O`Dr|QXX%7<?xo!a-hnQx5c#6de8U6 at 3U>%lS?V{4dO!OybSo<6c8OsdvpaMGe$~Gs_lM>m!qV=84
+e5}>a;Me#=b(_k5bBo*La5UO;e*6cDcRGMn;H-{daJashgbn59h-Cfgsb*JN+0({i`SWimU$o1iwXFF
+b&ZVwSy`Wr;t5hMUOcr7$r~~!KkCt8-?NTrnBJW04B+&1A2!*=!eqx;DINO%+w*R`Qd~wvIFD5)b}Tz
+ilcQf`_S;l)KS at kKM5`rIywfAY*X=JS)>lAlq5$vl8lc5rsRipM&!fH2p?D9Pkr#!e>fMBkN)SEZpDL
+Yh&*~I_mw9fS at MHDpE`O<b`-Y1gpeN*PxPphV#xsr6YRii=%1r4<Um{0Khc(}4){8bbpkR44UthWn_~
+Anv^9T7?t$_fDRKvre?e0F*<8NK)@vXfob)$05Z)0|-VX-ewEm(>4tx$gWXTcXb#3W&$3DM-Yc at n1?j
+98VE+6(Y)%=%ySYueONAvE=Uc4PF{ZaNQlbWCFlFU(q#DSv#`AuOGJDBdj65apVEdqabkAHTHz at OdYp
+WPzxy?gw1CG$@TnGQe*mkV_3gI7Eoih&9n<aC+R490GYWt3skWN}f-CDc;2E+}RD15%`tibml{xy)1u
+^cz~g7^fsB%DGboRMwaZ)_4kDt=5o+s~}EYr<uY-R*39LFO5;WPBuz(;zpq4`3%sk1A+<3_Z4jw`292
+%OJ}1h%`rPH&BsAAtg*&#si2M^o*VCzQ9W=)Zji<pqM`JGQ$DbhxFXd_H|y)rw8+x8MTuQFR)Ax)<lI
+Gwta-iP`EC*mZmkF;277U#(%VDh3*egJ@>zQ}?z3BOP=uD|^w{=qi;ZMvT0N6cgLQGO)bOm3qq;xk{7
+})fxU+XP6PNh^nR}CEN6{^7aL!Z2u*y`KqHn^i2K1dkqDRc=1p*`lqI;II%2%kI*X+Oldlle*Ji<NPB
+RuZSzbxI{{hWg&x+Cqq_P6(1D*z5p$A_D7aY3FeU8!e at Ab!nLDfW~<a|aT45x&MLp-$D(D=hHcR^BD1
+hIXJ7??jA1dpUw{6?y8%H~zjDr}NM}3{Xysq~Pc2GQrVsD?Ao0*_-!bjHIDoO`HxFt_P_$2ycLOT0<d
+zfH+IhMn+@^;Yv{bxj?Ho(&a|sJU#jjH;?i at Rb;?(C!Yc7cY6vZ=NY;(yC%sjbHt}>z7F|gzTL9*Z8P
+F(dt$}bB+*Ah2SV~Xup*m+P>6#w#MR-^)NTzw;$f7nX*$Z`3q>Q at U>J|v at v&(5sTxzm6qzfDUSqF&5o
+)ORix8jdr-W)c<|Wr$Y>#vJELtFbO}^DDrzYx*<B8FX)bAx5N>v4pm(yW!lD07q9{-Jc<Coqfur(*&I
+CY>)1b+ at Zd6V&;D2pqh-)F7=k>$~EAQJeB!0??;=HAGpU(<?j`5wp2H$2a_!#lL1YmGKkz$n<4#|q@>
+p`kie)+vj<UKp)^31QLc!GRA>&(o_-SG+WL5g3 at _bkjpM?3t?-x~&GFNql%Rug7V;fUlZQc&2Nga*t0
+LDm>q7O6tl()8ZF(Ei3A*yvAd7HEX<XF1D{wXBU9Wl#6eR9Us`j#O~Z#KwQhe)2g{hgwo|JvbcwCf_7
+y?o*!1;2NPLF<ogcGO}{iDAWX%3utz1l9Qb-!Tqy526iQR!l9 at Pol!t3v_C%l<NG<rM*Xy3YZ`1qsX!
++6W%r*en_su>j>j at h7Yhp}QD-9=^h{LfcgmD^<AlnxNZW3%DUITQ6+%fcE>SrmhRp1)9R3Lgt;w at 93P
+Znt?)w%P0%FP`DmVR~Zj4;BcM+*la17Rjb7`i$ST!gE4<}$cm9p6)+yx*z!!BJKSeX#<WS^*@zXj3q~
+uQ*}K at 6evQDw3%71`!z=9;6(d&0!#Tl!7vFJ^>aOl*gO~4T)n$qP`(vFrvA&7}4^~6{!uB2}doNYu8;
+yBUah)EUo)mqL#yw(2D@$e6zbEO{`Z#C$p#@(QHOuvqnr=)`RyGm?>|K?n3U4!GtN1R9bmm10N?CRPX
+3q0iedhQiS66(<&es>sV4%v&$nVN&Ak)px$b4^ZpXZTRKC+nhUtcsaaw|K81mq%@VVguxEj}Ka&QB32
+}u at KMf2WYkhpT6#8>mXW!Ca_UD?8W&fh5{rGs at zrlz9>b^c;;!o}8Yl$KhTj3#rqXY?o7)g)>MnNP2t
+=qSbC%Jz6Bb=C}n_$n1?p9zJ5gW!skj;0KfOpuH?fyd8hSwtOM;;JlwgI?LT>2HLtza;Oe@(y*590C0
+X3vO?E1&KbNlExw2#NgB9B)c&^!b?D04$ts?aDCR8m8&4o{j8_Yvk_Bv_65{aVfs9BogS>0wt+^q!`^
+uE9(|K+2CZ1Y-E-=S^@1};zVR?dy>E7uw+oLUFLGG#D_>scdm4}(~ods at r@>t>uM9f(B=n-V((a$%#0
+fN$`bhZN#HiilI^kBX2Iu1E7z;kVz}Ki^EYK6m7iQE6rJ34b-}4jYyIlT{JJwK8REK|P9@!a!HJ6N+N
+P^~*a`hDtoTXT=r6G1pIs*KGuQcNmkIpLb^h690)KX$KZ6&6&w!EUYsc4ff`i9m0oBRp{HR~7%(hj?$
+YH5y3r1%x=*}j~xd at KhC2TsXJ2C)rk?bxB2z|~?70kkO9Fpf-4f=RUWdU4XK^0C0^?9D(=HaXi;Cb|9
+g;p-_(<9ODSD;rU=UUrQhHD~u&9C8;E-t6#z#myjkOmlI4rl0Wn$t~a%=~7~=+$vo at TDEGL!>N6KzM@
+J!4=PX7&bw7n**x51uw~|k(^uKtT?VMBXXKk`+^TlaD^l&3H#&me6V5Ubc$fW)e#w+WZVuht#~DI{jw
+05L)2`R!B>M4p?GD?bIjQHz^)fPr!ec_EU6KLmqqJz8z886du+^e7$>h%WNoCgB~Cxyw3g8BOK+x%+Y
+|?satBlc#rs7ZkBedjFAYYJ=$_%gx~D43 at hW)n&x}*~E95B?jWBn}7)A5kfe45^4}Eg3N66QE2AWP`>
+)cNWRnSFV+ragKLqSJYg$DEQ6MuYi_X}*ODLyG$<u6M(dQblra?9z~pzqvn;wj2|UF!}|bfk#&(}<7d
+c?RiWaovQj6qv8BVso(ccVOOgVo at 3}w#}5B(}`1h_Gq{i-8v>uDNW;|X$m+D<-2NrIQnLJA_OBan%d*
+#w=q4n{z6wK)Zh$*+t3OStcqp29zUd~j0`6KHoGYgNI6wP at 2YtBLFQUS>ucA?`qr$@QGQnOX10|$W)@
+O+2EQlf!}=Ef8ZUk|QSKo1(Q6+stD~I!EM04oO~{wb1zq<;ya;@k at cJXXC@fA!BNu8EC?lvUPPzzy^E
+{po+96;XGJ@}#+hFJ#Fj7yr2-by7rHU<kX?ZX at uE0k@H%8ftrn*1BALGs5q|jYYHA(pH!lzkANvma#$
+k3jvlWRRhS%ln_y$3`^jy~Vrd3P<<l;_(o9xr13T{g%O0cg8$1jSwPO+#GO<}In6RjO?0x9K&ks=ioA
+`9PMY8Io7QvkX3`7Io|D7UuaVlpR1`OyO9l3qBvtU|$JW!)Ge^@JJf<QlKOJB1oNyv8hbMI-02N*$Bm
+yltzxo8tKI*P#AN}gVU_*2NLq7tZk$OjjFEXM$7m7aByR*UrW5>!B1`PYC3C0`Ff9jzv9jNbx8p$BNE
+*g3&BbqNuzG)91;<(H;N at BSPv%bj6KBV&AtvZ7ofgV3j)|hb&$)=F+=hI at TE$<vbbfan5NH<ZjO^;rm
+=)tf at prP?`=Z_5%VE6QcPbcE{4*Pf-Ws_A!h-qsUy%@NcJ|?4_A<ez3qo1oQ^lJeX0stmID<l at Nnz+<
+H8(J`qZ1jjqEKW at LP({e4;iP!1ZU{GgKGx)MR`$Z?Cw4H`R-JjFUJz%c$!ePPmh&YU0?@L*DQUC+QK1
+!Zl=qAp at Lnm2D}#G$oENGqTr+wl9%46wAf?a%(OITV9V^VZ0$YkO$Yos#1{9d@>HWEG3x;l;y;QH at Fd
+XjJlZ7bR8P?u9nn4ffsp}{V&6d|J=U*h!_84KVJ{ZAs~d1Fhal}L{TUStvC_Gsr5$`MJS5E2pB at p?=r
+u_ZQN|r)ZS<1h-^c0S+b!uXcGkA+Mn=Fr-E0w1%02vu#<`7aMy6y=i4 at uv24SkD~Q91jkvJl%?#X_$J
+<`xP1S)|j|2W_P%hj0uQ<5v3ypRVi0?o%+fFsxb)F!2<3XdlwfraJ6=Z)D-8t1!vVqL?RqJ!`aAQIw@
+Mb+0ZmXJq$^0re=GW~v=9e$OgUM~3DN!c3C-maVY04j%U!PDE at UNi74MhR}3R>Jy6z~m<5)4rL`IW^L
+EdJ%n;$MMc;9o(D+hqd(1X}#+GJzjm=Z7%G4|FNQmtcl%Ry_dukl>JI4h|WFE7*8Vy$6G7u*4yeH2PJ
+$W=Qmq at 7$Yq974#>L<JtvLR^+1bBd<Pfd{G|PC;f|V|%KTvATQbSGH`akt-&gUz*GLc&aA5a}P^qE61
+X=%hdm at OTmDj^7JRI2?IxsT7)z*7 at q;0 at D+@lX=tkTvM%ZKCqO`c8il8|jXF1S<CO!}>~DX{{?3Yn*M
+z@(^Oha;$0q+pmoyyUyvORxy&4%ta_|G{X$-I|@7A~p_lE*IXG1nqcOs<hd4H#<XS~kGqLY>ByxcnnW
+Hp0(s<j}Mf}&a=dW|oU2bg;Brmkl^atlh)E6+N=hDlY#{CaE8_sDF6UY|WF1YO7vZ~4zRfIg96KaUmv
+{s-sxKW*{zLkIZZelgK+0`@<>laEOKC(rsSKBEXuKqv`QC<Vh5j-n(;ViX9&&~Ds75d=vQDDmA04TD?
+cgo!OqC!frR!C$FlFTnAg)f#SND%ht&IsI;gUL*1P7sGcQU~m(n$o4^)5Zbhcp?wY+LboyFY}dlW$c-
+1a#?9zQqs-AhzKl}aY)lMq at f_QyfRf#A84P!KNNNw;#Kys06Ty1gAhru)#9I#vj<-e=zV~~wUEhL0cI
+9IDS2F&q2+g4O8lkW0M}#)jvbamiRb_OH?TVse4>?%V@;9_fd2~4b4rr|WsfRIXkqK}5V?wu292cL0$
+Y&ZYXION<9vRe3ZRCv)GVD_VJ{$FZngRapL2i5StH&7B=WKpn<L5 at j-D9dIJbZw&wVjuHw&_K)jZudl
+`>FlxnE^jKwVypRKojnpu*L8BwjVcYEjMD$$Z7tq1sI4 at onqkGsk{dgeZH at 6fa+|-3LtdPa>b+KL4Nw
+9o1Kl}xjeF at G6pgo4R($i?R+HT8)g>wwy&lOUOMj>*QC!g5x_q)6tT}l2-cY5kN~{T3Y{H0H5%Rrjl7
+c&)OI!cA+l^MS{h32u at KB@jdxht;Np8L<~$x<Xo9OJR`h}U<>9z9$PwrD0|^sqD^BpBp3?Uy=L%j3%H
+l<C7nbBbvw9ef=$!W3I<193N)J!F1JZFo8`St;9Ja9kim-+KRM^74@}GeT5+f)Wq}D$m1`;rg<0ObvB
+nWNBG!#l~T4m^W!xpt8$@OCo?M!?q-In+^RWD*&#6!q!p>GocgLhZ+ at 3*WsJ}tU6l at V}jM~CRf>`${z
++<XmZ*?xo->m|uXgh26~`X6l%h2amv7PPmyqrG{)o)402%bH-ex5d*f93toz{8qTTX}4$F;9-XC_!HV
+>dN!L{WK&3hkY6)=qxo+Ac5oM5qt<i%OJFH&OOc`VC2U=VN<rD{`wjUR+oWooRVplw-?G8~sjvn8_YG
+TrIJKV-Ti=lh_`OPi2|DL$=qW!sKF<k%J1FF-?_ENA%D5%mV}KOp=@c`#dO^b{G%tNO`xxju-sNQ`Fv
+LANRtjuGm5^70FXQrvy~Ga9!3Z2QBkw72I}c`audN$qNgUS-Rvl)ITibS!+?Yq8eqN{fTd3?Sg5o8;J
+}qTv8S-&6`A3b^L<&AGMg!gV_XY4hnE?9iKKZVC!{l{(=M{qn8G1OvA=-e}oI+%vUrvnWo!q|80Sv+t
+JAZSH(8Fp-D at q}>*IXXsM1 at LdY0n2?eN%dmB#?<&SSagE>Ithp*t7DUoaPKn<4itb;YnsOfm*NA!5Ws
+}Nh3cU2dzE~`(KjuwU)o@|5ex|Y4f{4w2PyB_etNx!hdN;AMx<7ck=Zd4+tV4_+1e(FxukKTJnOslNG
+c#JXU-~#+#cp2JSU2v^iX at 01WxQF+@Ucfd!8?wG#~5rlB!vD`PikMr>ozAh at x_*4VWv4e#SRo3Kf`*2
+O;(Qi=DH7~C2)*zSWGA=_S%U2}LFxgj?X3k=!fXbNq;qFr-%3yxW`4N9*#ZVii at lw-CH9j#$_TPfIu8
+{wbeoo$0U(EJhgcv>ln^Y_P~!*8ab&w%|qM{YJBT?a95SKr73(Ve%-aQhmG!h8Mt)~s$+KZg#ERqR9*
+ZonFN?)!vG?XF*y?&@Lpz(c<dmzx5~r>M7VQBU7BQ*uzN_NXVLpF*L$d=7=9SAJaq+xOo)cRw`2)xoP
+LfU;;-KwL2Az%#43o^DZXR#C~nH1^Awbn$1G^hF$bo25SOeyi)vEdJnL&U{|6z0lju&L8Y2+A=ynD&q
+pgm#*`L<`rqy-AM~UeO)xGwC7GZE?gJK7gtLQ`u2cDl6u8zy2why%&8PgJl-Il2gvuU(4FCag5Igx<M
+EMuiB*_E0vunlnNnDKikCyA>1PN%K<tEw-At;dLtid;LTG(pTF5k}^YNiCLI*<wC at V7`4p#2ng8Y^us
+iNeEZb>hw{VMHzxzo>CK0cs at 4JIuSW<XU=fj8 at Y@N#<wJiVUf<$Ui4nyRNV)ezM#VF+{8h>TDItIWI;
+uPGaL(y_7>-Z_~7HCy;q%ES7SDSQTcqwR#Q<PQdQsa|*Dj3EOz-LaeFykGU*Jv~f{8JwFf_`;n<!v(-
+B{IIk}G+H(Pc=;!m)nQ|n at 6r_Wkch|AFdbF+8WQrWf;vj4JWc5*2ZNe-haYqjz#W22oRdtrh0D<a`*<
+!0Cb0{GD1%ofbdeOoQ_m)r!Z<N8RgayuqO8*awItHK5`dmBPmr+Hh^ZJSuWwSsv;%q?Vu8PD{U{`l<w
+U{uorc(<RD`A_{h6rBEAk=`Y>_TNq}_=)mfYgxR)fYpgejKzmm7m^m){Ay&L8 at ycfS5W;l4P`<>;Ix?
+0zZq6Yds^-vi9jge?Q%%@U^ki`D{DH3W|flsm(tP>?@O&I!wfGLrG^-BXyrl3U^&gJYM at QeyXj@6=1{
+y-vZyupxKO5uJK(>YlOh%PxEvI3$TatkS=y&<Xrl$C>{|q0 at 9;*-N at t>3c4{_;foF*y))7vOYWR_k_@
+Q?g3A0N}VwFN%nJ;sA(QATDxJ634S=IAp)%+#=+wD5<f^2%ipN!5 at c{%u1RYsW>Ad^<@g55ouM9C-@$
+yJ!&iT?lQVo_$GKp}=lBFpMN`b0#*pQuRogWb7$p*TnYbiJyD#3&5HBXzFxi{Em at _7v*}<06w;x=Wh=
+KGY3CPb3xe7?DTGX|BLD%65d-lYvpQ;;iaYgB2PoUhLNCr93$Ql%n^^1u)cEqpP6D_7EkOzkH?vaBXv
+s|f|E2g^UFKo={A%|S&KA62tlPc at cIk`-}v^0fIRi}(P_nMNA*Bfy3XzEp-Xz-2e&w*=tSs~eO#RYy%
+A1;_iEgmmkAJbuc1rTzGNL39(QWLB<#9SF;1i<iN8Z}|dqs+5pP$3CqB~;6Vg!(w-Jo*lzR;{O|LTjg
+aEjL&9?_pC8)(d>qB}4;R7tu+gybo|b66g8UWR;=^kMN||OJz5%^gJPJty-N94i(u?*`~`FV{=PAVU+
+GJEr2q?fuH&oS_r=x#y*KojG#N4%61fu-63U39VySc at JeJ1J%_nL5u>B)YjW|={L=&=w=N3bwi^OXEh
+-bED3ukF%I~4Y-rU|ZqQx-PzU2wRJP8HDm- at 9UlM-PrP{n{pzz`(JJ~}uNmjX`8sbq$3+9e005$)*Sx
+&6Xr?OGb#oT8JwS9126JL*^H(4oR68vsx!L&#p-ti}A#*P!1=JG}b^@cb*t>!)_}=eX;)U3`nWR?vlf
+w}}yNor-YRJW9z;y(oh=-r1(aL~gYmv1>D}plL1Uq94fD;oCe4k#5Lmt0|+c-dn$4U$o*JVjGv)man3
+8170w-?>pI^_QNGIbayGGpbf{N at iv%4VS6_O->Sw<lXZtsE23Jl*9y7PeF|o+EaBaf0^YnUwk^~?coX
+l_E}Kf<PX5RKvWX$YJL)QakGi}ckk79FBI>%2%J_l0m_J8drhEMjdD)-US-G{=<nn2oYSzkXBc;uNR(
+{zyYUM4|gm3M*FzxrP1CDX`BYzwi_~yuyYSYc<)`2DqzrnLVptH4TbqmG<KD at gA4$B`UlS7f+ at 7D6Nf
+VEhLPGZv`bbUu5 at u65f_NH?RRYd$I`{FIMRjj+e9o$wFhM-(8n0#vyu42yjRKo&JaYYN&_Rb(%j~#ei
+g2L_~!|{~Bg<S4%YvKD9q2k*yJYz*_1ygFR$+JWBpia(60tCk+bG<^PJszSp$Bt{be1SL8cw8DGn}TO
+<=n`RKkJ49fb|lx+>)H7*;=L$w;!*qwyfQrv*PJbK7^BX at k$Ch8Glq#l8c((uNVUYpd6~KM&?sE;+D3
+%Ql;@Y^Egnx0QUOopW^jz3pqDnzmfHh7sdd_BrWQemqRJbCIO7^7*-tEYedSeyBL%_P#MDZBXbV3AN=
+$xtQm6Sxp=|98s}c8Uvw5u~FPFS2qv`r3g6OG!bZ(Kto^|)7fb-=AlI$T>Cl*kJTm5u`KBiATf2mIHW
+lC=MR$7pwYKEify`0>+f<wWl{yF9@?~Y+<hYc*2KZST^0mmS6!3Yx at r^#77%;h_Zf*Mb1r)ezb30ibc
+C<UIltc7^M2DdC~xZp}U4J#S#0Qx|jpD#o3*02h*n^&C>s7j#GQp9&5k^|c|?bHDiQaQUwBjar-#m~N
+_Tk&>n+2Jlr05r&G-dw^PG*lP;oUZqhXa<Apj?I*rI!F%(;*t6|E#2d19WaG3<t~1Gv$2IAgVzOkP82
+;7gXZN=*IGI>sYLXOzWIuYYIo4SX8Dghu=;9^0yr+;U(xt#VfKQ*XobBtg-y2c7#2g<yiep9wK?$zbC
+loMYTPB6r?>mU&K(i1QObIm<Xs1wNV+}AgrU}|<J8GOs!~rd?-iuH2rm_33tFL=R}9gekk8SP#}zw;^
+z)OS-SAlB#j61YL_(J6!W^Ct<PE?{cJ`R;(OUI81`7$p1~n?`TOg1De at x%ZjXOGV7}>5<+1NSYX~9l1
+-d?)2HXO+U2DGR$&?jG~qUvo;%R8H3jzNoA9`BElI$p0BpY+$okBO6}XdHxx=#hP0YCdvUn+3*;J&74
+ at s!>>pv>HLMuEp{sJw~1LPgP>Jv>qL)pnMTYgPb^T9<ovx&X_TYk)qB3+v=Lj%U8jauS4=8-;Mb`k|O
+*N?Q82&?(0d#VH0|=q&K%?uV>Km4&&#-U*2k)!6`7<SJZN9iK0=5JlE2jJ2W=(49li*?gxtq1(kn^%a
+g=zqwCA_!M0v1SVN1&6d3o!fdD?gs($KU&#XHt6zo3ochFH$-_`d{kA?S}Z%){mP>Qy=6LdtP_(5{m@
+@<Eg%R>$UvBG7%;!rPDIkUK*P|%Fgz=Okp4F&PwzaG*hJRgGkg+tguI36w!+nfSz5kc8Frzap4DI>p|
+#s$8LMcZ>XAyB!Q?r%8(f&E~mkLPI#{f9jWsZuzMXPxt`Kfzfc_|Tk^fZ!(DlaClw*3z}i*Cmh?#q at -
+=7X!~*aZVi_gIZ`vi`1ZTyH(`)2uDbOXG-Sq_ZT4Fi+{@h23t*DVa=z34)#&k=_ at Wi^m|vB1g${n%M-
+rASbyt<AE at fjU-T8GLSTv{VF*M}3dIo=Mko-2x8*HzlfcADghJu(3SUOZ#y2DOp52O#(!D8}Ait)_2B
+A=DBXq6*Z<0vSukjDoxw75RBi#ly&|MW6-J6OSwuv%P)V5XzC%Z>ix_gzzJGnpn6~=x<NK3XZ<a%5x+
+IaoRJ|RLz8^qe0q`P*&rVvbSaBGEe7`XjKqU`|0-cwi)w!UzMUh7G01U7J6yi2id1SU-Xt^umS<^r43
+>mSD{XWoLgZ|Uzj2yu-1J>g4ht#m)gR*JPkl&CW2#MeR1T2uMQ68VHF8wvwlNrB>Rp$J|J7|)%raP>Q
+d-OX~8|2*YkYy%yzX0PC?l$TFK9>zxh|J}xtQUC540pFg|&z#ZU(XDJ8rb#c at oq{-BBt6Q!Ue&pE4wn
+F}lAB)H0Ah at fHO`Mm9Cr;w4Gxi;Wb%tK-u&c9wwW6cxdh#<1uw-*h0<G1EbR4>d8JA{-fssuq_>!TFU
+ML}hd4Te4o01Chl4eokj`G at vEV!3uQJ{tPcZ#Vb=Z?%!)#>N2a=6M{sb(rLNAJ*7wn0wlLtI&Y5}p6L
+yIvKHRmH;mE%)Ks!o;bw0q at x>jc8!Q~lxazJMGAMDBw>#wa)!cAT(U<lF1-r9ybx@?lK}SwA at DkdspV
+xr-iAuUJWudE;p*-p2iYHVeQ8kIW10&Iyw~Kwp)^=D}F;44O?N3WOBa3 at Ulq6OylPg#?VZ4DZ*|W0Of
+iFz3adfZ>{9<=mBQp~L56yrA)&CgBFN at KbKTro(-ydFGh#u|ymg=v8&$Vv5=_>#3_)MyUdBcc%^`dCj
+gJF`5_Fz8)2OL=oIP+_?IcT?^u*8-bZxi>%lsc(}it!kuIAt?B1$paO}sxZX8mFCeP<!U?=&iIoph`@
+k2<vW-x^=uE*qY~o#}N9>;X#Os7J#Qb)deB>k>h!6fSv|O)^{R-^pd=it6q;oE<JURn|bJb>`R1!C;&
+lS|x?<#!pwF=J;F|)}Q3_wN9c0JTF|76hg!Ae4s%-ir+A{Ep7Excpe!fkv-gPKkp7io+akgC{rVnP1=
+xL`U^i0&)3&)_$<@;__~eGhScty}3B!KhzG<}tjV()(b%<J#4Vv))|)!~m6s-*@f=Kkq$hO4s0OqK&F
+Sse2}?;jGE`%l!%A*n>Tb4lR_!slW~nq-uRNN&x;S at cP;tm7cP>PTg38wO_{ik?079EK?^vF<Emu7co
+&>m_S39D|qNmB{6D;iF}Vea54vtP}{J>pLu at k`ZIavFK((<H#|<Fa)nS(&dO&4L@|eSpn4P_kOtY3c(
+{l0Mj=2$M~^X#ufD6gMBF4wfc1yA=^x7j1ci!#-;hBr-jPT<$F?Quda*<Dn#Sn8ET+yufWvq-4viZGr
+68%v6RvN|GjEBZepM!g=4D;i?zLPh_e#SMWU$Ahh^^?&k>TUjyqYTD!TwMfOCqRoK2JrZM23Dar18<8
+Kw7(jWy`mgj8*V-;nBkJv-EwqL7guPrg;aSHb9R<=f{tQ at J^H&$Ad>r*N056;Pd4lZ<_ObuWuaw$tJq
+ZB~Z02S4tcz2PKZL$K5`)Kn3Nz+ at t77&SVtdmvjA4L;H}==jU9aQ+X at SRAkRy^YnAencK(f-ip`==YH
+9bhnonXMG%;hlfu5II5BA46zF!<`s5JAg?+`Z*jqnR)th*Ah-y8Am!A)dlM0}Es16FA1wido=Y#6e at a
+$Y9Q7?+_z65Yb^72J|CHP}8!*iL at l8%TO*$$+U`Al&bX&nL;%)x1ZIJT3|<>J%qRWupVlfA_4bTGu;R
+hu(m#^Rz8gXtfb0>6p4^iKe*%R8!ycttjG|9JgPZ1r=m{Uf~k!R!7SVL=qJf?J$K5eh+Yiu at kJLWq4$
+3)|Xu**;!C?PhM<Tx_)U6QOY9M8(NABm09jt at Y{KS`xHDnH8&1<Zi%#?w!PJ6O!E2j<5{?!Re-NxlyZ
+<&3!cck;VK9h&C9tw-GmoxP6KO#<z(K3ffux*e-DiZ7Xf-MhM*2%}9J-!3wwDA{_7PP}#N^wh1hudkd
+1>#xmf)v?CINZGHm8zl*RIFd+W~Vd;MpVLe9m!^3?RzD8J%<Q9=wm9n5$SHv9R;?Gc43~7rtZzv1cVA
+fX~OGf`YX9axkw0`!iHl+0<kJ4|E7A!w)^2rwi&L=N+t>croJzvlV0i^dwr&+C5M(lH3gjXvi at Qn@Om
+n^WHQNCQaAkv{A10R_mB7AE3?0IdjDW9V2iHS2{G7*UP94-}93X}a}gg8l`7*z$?`E}+Ai<J8&wQluc
+49_=WWKS0ZV-1MG4sowl77!(!G(QfIcVsydJW8j~mtXPQl~rR>h2-kJEnURgSCfMpnLn2E8lTx`{3an
+Cc{`>69Iy6CFW9v*gu at 7iWJ{D(Tc>O=q^yCrvUa9kIdU43D;F~5iooJBypn;wgj21>hzTGiF7aG+dxs
+`Yz>Lv#gZiwZT*nVDozXBQ&9UHZUDNhq)yfnEkL%%;iQ^itMGhH8fOk6N!JB<bz8|F|fl%a`dbf;1e0
+?Dm?{`6>IUGDyZbdRa*vpAS52MgLDvWqm%M4KSX}Z&}4dYMV at ggnruN)4y54FsL3c2bb`n(;Y1tyw^i
+rFDi?FD6TSY+JhlUq<OAWrk`^ztR)9ieSGTWcnS=~#qrPgvo`4y^?Hf%kKIu{_e5qaF%7tnFOd7OYqI
+vI79lN<Z$qco1PKaF0X5Ic-oJ-_%R5Nbam>%8dz~>&2L+=i&K=Kv8Iy_<4ez*)Z2V0bVFbE_;9H^DUE
+BklZ4&Pt)PqOy?6?YE(u&0&~T)ad*k&E}GrmPJGOr2 at lFBFy{d8hzM%S!SQ_Nd8T8qzlpSf9}VE3h?F
+;d(HMOb#ewjul*?<xFQ%YsUm-2vH_xUu8u1y9812XhJo<8=ggQ9q3NnKHUP!Jyw}H}Jy#bf$*u6f3dX
+gcd1bX<9$U;`pp27%}rof1QiYm)UGBj*ZULAYHr^d$c5ZT2TR0&IPA!jkfZtmgbN-n^eT%S27x;zkco
+tLhW1Tj|#&*;J2xSLPEwWDB}inW|je9?{fnf6mX1G9)I=upWizz#Xp5Pd5~7O0@^YGog<ms#({o^KVV
+32u?*6Ugn|x}_;o7l}VWv*J at p=j$UVks?ryHLqToo0L7%BXaH@=d<!=rb&pSRP#v-ISYM_9~)eupp>6
+qX88`67b%DWqzm at w0rjmi7^R)-nyLy&$u2_9tE^84H9uwRhd7DuVJk~sd`p+f&?em!&{RF;xXo%A%4L
+A3ljOTdJ at i3?QF^|Du+hBu+d-9*cq-hRk`)3c`uN1j!!yVQ?2?~?>FP}n71eGH1{|UaLzttEuODBo2O
+}8t at 98^c(Wjdn#b$KYvbFMEjD;{4EAzNgt3bmDIrdE~gG2 at B*MjoRadKFeT=XPv`V_T{r)b`!NJN-|9
+dz?1uvxN6d9b!Hks^ZH_l$rZ{(Ew7G$4jX@;p{2W69!BcwUynzy^|?_KY7;g6W6_8ADhyxe9xREjDrH
+{@9|&0xwz8;j#fBofOLav188Dqlrw#WH>OscX4peNUVMvh*wcz2GVZpA+J-|_vGV1r-%5bkrv<dpBU^
+r%J~7c>EAvXI(~lc|FOBV{QEYQYNhEfn?+0d>4AT5(*9Vbd072hpT6qu_`k*f`!6sEQonrt%76PMTX9
+wRY4=N-{POP7Umi_0e}m-yyPewyQvB)j`kKpy;+qa927eC~ZrbDUE*uVRhFmzdjh?Om3QTuIhHTSf+n
+jy4wHqV&yQq-dUjY-lr{(U(i-a3u!||Q(mFz9lbfZ|UC at qS%y{?dsSW(@NgrHDlXCUm8y(?VZRtB@}#
+oII)y79BtU951G*jZW`wC!{SoZEyOye%NECxoUO_}o;_p$#)`#$e$-e7m`N{S_+YFB>YHzYzR+t2%4y
+9}H%?ozOpgGq?q8+$Eu;ozIh7Hs`qS<P)UoWWIV|XLMS3R)4r%NswLz)@Roi4+DWu^dsyY_{I>4?i%L
+DKH1u%zP1g at A|Ef**juSu^sI3-CiA}?1o(WEZMv(D5IMho5k!Ah0n0!!?Bo%Qb?G*e%h4ZF<xg`x`gZ
+WG*ZP6<{#;$11$Vdl9iMXdQD10eg`zW{+Yb0?8Iay=!M2UizODS at 4g22x0{+eo``-Nm{>}~i-u(jp&J
+FwC{Q~~%hUGc`BZ&d#6LRKviGg(^i{DPc3}dJk9 at GH0Y37MUt@bKh!+a at lEu1~+bU6+on?}@fHLmK@%
+B~%Bv;osW<G2sb+Mvuuenj%AF~SE+)4Y>*TGrGr(sJiGe!%&_K2j>IyR%>WizH<(Bzv35h6r}csVVT2
+yIBQyQE8bZai5)rKjT??fK19Ih!Gcw_2 at FrLVn>Wxu at Oq_=Ma%V2o9#J1QZ at reQPN{`6jqdiGe9T-b^
+Cg;GgyrtVrkI6T=Jlh5!mf*3w9hV;S^M+k7BLwp$w|8x$XFCLw3Q9<xm_Q0YJ9GLp_dQK)rB!}KTPuh
+H{qL>;l%nL`KebYZKAW(+haJ^4DDimF?jb<JTxD3ovQO)V=v9Lc{y)fmEj5 at y_3v1&dz(Ix>vNR?_S8
+^g5&hCs-w+pQU-yI8E50D0AQgtDm+GJ5)Gy67b{8fCu>H-T2Uo&6)#iY#35h(5ZYrLqGjj&p49b17kP
+Od^YA{Jh?Wq!OowV<W&<$2Ycxj~2NRPkj{4190i;PDXv<~>{RV^WR|Ef}hA^+yY;%kbD<Z*W1IF2la#
+8$yQqG96B#6T-Ts_+3lAIH-d~cmSYGhu6}GD7d_6yxFchgBnmd3hYD8L2!FKd$SO?&?^qfOTzN_`60$
+HMnBsMIxMIOH1zx41dkheWFvNAP?(hB8+bVk;yIi<pOv&mDl?Mct6aujSBj7xojts{szbGlSW9cAe7?
+t|Y9ArqcrmU+Cnd>5qVn)p=#D)Vh?>qR`jjKI7pT9}O8d#2%CpcvpX?#{e=QLC|L^4fCK6ds?DtRvgD
+`aG_mB{UfH+D)5DGy!glvme-|Y(GyJ={$Q at zPwV{GpP#-DY;*QCCte~R2mJjt(7{C)W$a1#hxfd~q2p
+n_VV0=6wCLGbp?#_-v#STbU3E|TFkD!(xo*FzCMKqnx)9S+>^(7tYlZcK6%+hohJcxxEq#0IB`ok@<P
++su8k+qz)8ns~H(<Uu=^iA;A9PH<}p;^}sN8TOZ)pTkB~e0-6q)M+(5rPh64s&aJJJlKCEk`K$Lqzn9
+6*8Q2J3;bEu{qv;D&s);{Hnsl at N?Fzye<a-&__M70!=&qI(+3L)&}?}+b3CM#&Z1Y3b)$xSY+F&vwr$
+KK@;fG`*HNH1#?8($f`q8~w2XH8WMcZ(tbA1R4<kOx4m>AMR-AIGzueq+RIlLT1W#1}3*E`z#>AjSvs
+du+;o!H>kL!HTca^1r`NKiB%K<j^OnEJN6Y)00b%h6>k*`mxWRZGD(tTrDO&_#&_5S7PzY(W4+tknto
+>y2{zfy0R|FSbM-3bgXr`Zg=tsFA*C;sC$5zSa{W=)y}K*KW4$c8;9EFL)mf!2$GLv9x2a;RL)sPHNY
+B}z8Sq?zu#>~RSq=-P?mHMlqv(*w+GG>?!&Atw&5&P2^mt-%{ZBjAI_W>`r`Orp0?li-BX_>*gLZE=P
+8j7s$aQY#5y7DAKNe^n6sl$6-?O3L&uKP!)Wo|)F+g^G6+<s0rNN5e6#i3Y2Q0tTO57BDF?epTl{Ac8
+ at XklQec4rrX^B(?M+wA2KQ(#Vqrdhm%pIcmo{aXhw7{T$`d!x|sB*|FIBoqSBYrT|;#kV^OyMQiqaBk
+%RCkEz?BwBwC_6+u4-j5oXat7l~Kjfy|7Z7i_#J_LI{+nWIK=Gw4Dw6NJHIerknztuMWXLs^N+xT}o_
+<d49K?1`tnEbvUD!MK4uW4WnxbVK{PwY(s1l*+LHb;hNs{+^BlZ4id-%SANPDk4M7SZQXkZ@;1Z3zY5
+hG92?RlJ!?Y<eHNjRTqOHeSe&#zNv<E^aqBMfd!KrCS2P(Czd<^s_(p=2(qxE)-iyO>JzbwIqe&UHc^
+6bdkZGgSDR1Hj9hx<@3gm`pc$8xg`MPi<$^8 at -Gegev`uc)&v5uOMcW?^kWdWG2q)Xs`=ck*Kq7%D_$
+15KZ~fqCy5Pb<Ub~K>4`Hpmk8eVWI?&u(1+cryxE<i8mDcA;k4I-<$VIQa*f3w8_PeQ;$NL1 at K>k!S7
+!)pr}*=#z?|=UgU)kg#<-2kI3NOa2GP~*`z)9Ueg`{0FNA3gCBEaCqtGdC=)h;egR@~Aqw&p_0d>`08
+d<zr3US%z39#j-?KCfrD2TK}_-ah6<dUwX9)3a8a#7?7YTIeO at T0U4>Kd*z(p?aFki4^xD-8x5gY(^$
+8O`ZUtDP|g!8rXb91a%>zs+|rhgkn{V=KESL|Hl>arnt*Y<uqw`!JDa{sf3y5S%zu5!+mZ at InT2eNM|
+$f!8-ZDrPV62i417Guk6>ja`U^54%acyds2z)x}%@{%IZ&a;%#{n0=S2yeswW&?MFBBPYr&R9z2aT4t
+$tcZg|;ZUmf}=j7~rh+c?J-UGL36c31XU4g(t(!M1UV*ViFDAvz%7*!!umf*D?s{$#Ghx6_578a#)sO
+-5`!?HMBfRI8UF0<IRo|%IJHPlP!d(GPu9wZ}LP!}~M=F!1DA4M)Fb^YFh^YlpX`r+;^?V|@ml~i-j!
+DCH~UJlf|+M_)=Z$Tu^G}bTz=k=+cF~>7e#29Ukg(+8e>Y>(_l83dP19o#2YaXX^985g<QQeZ06qsmV
+c2U-M(JezCylgtp<U$`Bg-tk?n2Hh$+Z88BUFHH8_0m_Qmg<)WdNA at cN-~LxUQD-sDSdl$oOvz$>zK+
+L3Is31t<T;3?Q>C?4;T;K1|as<H|>qZMu%4jM9zXmK#$l}D2>m}3s at Uh^pfpmtflcHM|(MAm&XF3RGm
+HnebmB_&N?#fV=c!o#A*3?FI47RLvr+puD^`ZU<nWJ+Y>*GVar at +`!N4O5$;Q)1E5)7eAmP4Mh<CS*4
+`y!_$U14<MEO<R)2XH%yE#4dBM_A#Fhm@?r+K|U~uUC;vCsPS{{36x)^9dwQ1bZ@?6$Zxx%4q&5uoR(
+Yde>$jjL<LV3!vH_Wssl=nyHa<JR=R|b^lrFUv}e$r8EzXvd!8VWx;A<8;!-7k`1N60K0!i}rlb8<bM
+aiclpYusT7lvyDWz+3r)J{|`LzS2+U0Sa|M9*z3`dSZ=OQw$4tB9CnnWW3O`2fgsFi|PkXeUnh-*v`N
+Olkz18BXXg`S40-RIoQMO2zDx3Vsi+ZW#aGT%Q5(>%jL{xxEH5YGQ?F8`b;1SnB-39P0F4pd|u(mBY|
+Eyqzy8I6VSQ9&pMGAw9|8{pK9kIz2wykby81xFl7@;R06OCK|H|td<m~*+Fh9mJ<9%z>T at AH6orLrhc
+-iP*=z>MvQZ8eL3TJRsOd=6!rx9hfYozyl5g{cV;Sbj7kE|o at a_JVJ5^tSzJ!V)8P9qqduEyQCG_CN>
+m{&di{}&L^h|-{fO+Rok{1Y1Mb8v@{o&uESjg4+R0j%$;ioGzcCd0t<kVx;k&12qa+?jEQfKlI05tue
+*-3QaDiCNiR~tApAithk8KNTtVbeQ at uchbR#7-xNs0lB|F2{s+ol&|Xhamv4CK^EYOq}rw>nMj+V_11
+$*Nav9jeS4SNeoKM;o9Ly_x@@4W&e-=%Tzx}v+-4W?_ZCmxNq=h15Eeu7pYk4wEx8l|M4GHIRE26<A3
+~T_mBVlMZz{^x8GjN6jfgQ@{j+gO8eq}{zp;&GNjwKPv49G<NqDfrYipNAI0bWRV%#uh5q;d`G5cWH$
+d*c!RdTJ!hiZyzUpsaIJ~VNP!Iv5<abH*Yk9r`s}-zmx<~N73V>{IGTRMLsciQG!?ra7Y?JNyE{cqIt
+&sH<=q?w$`PgSW<vrOQCw9Zu&Ga7GMByNKmoeIDUfB=nT+~M4hoTLFBIt%{KXK$&c$mc7O2Q_0w^P10
+KUQqp62ZTM<mS^FlH0PwdPtDip0-{B8g5sIBfI$03MBuMM9(W5?|VFaph$_9QU6#NdH!8W7t3_NbAJH
+#B?Lj9xSjX9>#%9eU3iDEFkfv!*ZA%;ew%n#JIBtwcbv6^c3FlEy{Q30i(8*ERf*UL4P5oI6jbXuJ)@
+7G`HUOZZBacvCxv>-{Oy_6(E9vot(fmQU|59E6zH at q-hQyK&aTZhf^u>N#dRPfH@&F}5p#}U>>19C{Z
+aIWFrNdKSmBZ9g0i6B)+2ORzu`OY!gv1q&thc#gG{#2;3itKVp-&~!`ZxTTXAguWuqpG(>FNQaZ3KOA
+<TWrWgJDr!(LZkxoHkKTI1(s1dd;UDmGab^r20+-Gk&QYt|TvE1r$LEcC!Ush!-YtM21xlRT3^QoHZ<
+hVc!2&p$3_ebF3R40Gzd^i&F4b^M_VfPM3u5P<c`uS8OYsIFeyn9pZK{kpE#ANtQe at QvJorS$;QEsd?
+|N?KFA{*(DNxyWno{vnOc*lBFcPGeia!jp9Z)bmmt%x at 0=kTFvlz1O1#j;J0iccVQWiQ7`s+))O(XNn
+v{yucUE5F6+YQSY&PV+c{Y$`i%LHHTi7Cw&s0$GZuLbp=J8mK2nDErYZ4L`0vnB&p6SYlVBI?|LN8kc
+ at Sz^5b1msji at 39aN`JOepFb0-*QXqrp!hnMw?=9A6i<W}XLrW_2rPB2hb_u(wtP2PL8GTOkw2i$#%Rb
+x01gh>zp~V2*yF1QUv^I#?4`Xi&$Kuf1f<E~l*QpvE|YliS{wi<alCZM%ojeK$^3A8vPx&_LjJCi(Xz
+QX=)iUS5HVmNMcWr}e^)I`kwY`9$ecJ0264j0szfGx1J`fmF)V&Bj-p2Yk=|VS{7t^DasKx#Ps at -qVv
+|QW$qSq4{{}{+{>h_p#erFe#XjG at TDv+-W|`-E&BB&${D`coIx==5$cBCa!A&I=L%LR|JTdS3G6LWP5
+oq7i?zZ_|)FO3UGbgtE&`wcaE9fn)->L)XgBEgM~g%hYX8^+;btiqDu6AX<vPUh;93<Ju`3L<$G)a#|
+%fmL)u_8VvpmXtK3r07o=lB2p)M=p}hf)wVQD^#vbybVAj<|d&QCHAt&wFWWY1Mx;HKx$3dy8r)nfew
+x<;C$@`^$M;rQLym2+NA9VoD<r_{;2i(d+X*xnMuEDGTTnAL5TakC~;i1agkf-9CeM(3Mqt14DFq2Ey
+G^V5>X*kV|pz~9VDV_6_t+%autp^<1o<W^AtQ!MePtMObG5*;^ivRb582^Q*^RGe-{Oh4x5<)fy1&V-
+i=)2Rk+1{N<(@j4Sk2Y5KHjbKX={h5}M#Gw))7^9(Nmu;v{W*$o7hQ~Z_R|VSkZm0a+=URMa03A=R at l
+Z{@z2%=>8^qcXTPRDlD*w#FNj at h2iw=t_Bje-w}L0ZO*DwwWyh$U+O%~f at a^!MV|=<D{?pt=7;Q^hQM
+4^`MLW0%@l9P31pgXhY;zRjm+4w@{kY6QI;-E~Zho6VfuBjCf0jXkpGl#AmO+7^Nuht1L4m(Wq3~}CL
+0j{I#x%~DHeEE%miKLdUVhm)ZXTRpcO*<pGxpfL-3N)I1175bTU_&#Z8N9OP74ps6uw49+dT-@>zz(a
+7x?CL3aDpfF>qk**zDtHX(T2X2s~`PVQZlKf(Xp at MaqiD`1cf`Z_QcL&gTJQj;p@;O}O2<gC2})>K%I
+BdLKSCgZtYTK*uunbv-~N3fOcK%Jtteo%r11uKSq8k0y-2%t?G6lSn$T^zaktRINs{&(}n0nRa)e2}q
+?Bqh`JqeBBhDhGLF>p&i{vUHV6a?*^?)M<P{O%sYngyX~etx+n(3<XOa=S(O3~kyt%n8Z&T|A<P4edw
+~ma=VdKEIaw-f*9=C{KGj8%+}Cnjb}k4E@;o;-7IMr&8d#t~XmQ)COf|x=*w*sP6H<H5o1$KumAe{6Y
+tjUVNYAN$xF%d_zrhB6x(1n37w`$ZF(Hy9L^R4<Zxpv4q9tOv7QW@<D2ZOsKFEh|j!%|=c^HV78lm%0
+>(8QM_Y#9Yfy$i<YsmEg5}&VGau1xEq|qbv4-W4-pluGvc|mMRto44JNT2Vtl;^OVJ!$)x1n^}};;Yd
+IJ8{j}rrPCUv64y<-T)f(Oa!>r+g}gN0)NI$I{rvKXGM+?l<O6EZULb(4g=m~_q%hv8E?YvHO=W3c|d
+~3e}`>{XTv+3L7p-6L_(=(MgCdBhHdDpBG<8i!J=&=&`xp0{H#i1-l$Ic-L<F%?t}}(Bk0?gDVrNp!f
+`PFaN=JF&S%><+6||;n}G*<nqB>PC40oTq|@7KwP)4o{8Ho4{gJ at W(*WM<<-EcpC3xWa%M77u>XfTJl
+(M?wv|Psftm0|AOTF9BbG4LEs+L}0_W8z8bErW6Ni#uer?QP#4Sj`U+`PQ6N7}YENv#3u5i2eZ!Ot61
+)&t at P@eR%A9y;T0^roRCBhd0y1#TsjgM^Bj`a0>@voD)lL1JDf0zLh{TJtS^p||V&w~WQNl-WG$qT6I
+WzbLZ&Zu8msKS2<Le?bvsGyVpVZ#zi;)E>UHkG}KjuX6Nv?TgTTaxvL5 at mey&<kr_m$lcIrZ^skqulQ
+~kv}L>OyIGmqyE1F~1EDP|Z|33PwiK{=c&A%(-}FeKEi)qUh5^=6e#^P!dcYrK<rN}O)UF&8Z+qEh9E
+o3%css_LgYmt_C((^+ytx_eR+wAYDB2Ci$!*vGg13bWFx{G9 at UGcM?&_kOz~5i1=iRrgjI<wFnW2A9I
+Zs at Zu?=Vp|G^|tKWn4EBN%$d3-4=;^P$>#-gWJYt#a0|vz at P5Oq(Q|j)0G at wD7rs6V+57`r0-I at P%FS
+TVAB+^&h6$@pRtvqP76vZ2W_Ao>|Gi(~f`G?ER|)O at Oe_?#FZjS8k%0a;|gQa<=d2E<|dAqd0yrk4^5
+=ssT1cUbXDa_uu4Z{)Td%ZfmUZ=q}g^2C~UYS!@o&8$@g38b5pTEagGeK&*gwu-<}tgS<FAd$3;fFwy
+(H^w6bwFaKYAU$*3^l4bkOSLEYu)9n)TaLn!lNQ at FlAO^u3Gl)SW0`c|Nod`unMn;^>Q(aYEZPsQrWF
+T-H$Ju-BY3<GmJT0q{b(#9~X>&}d+lt+AXucqTewtx;obs)#wv~VAcgHp%)I%d}TbF;#=XKI??X17f3
+e!crz*!Ad!iH8!oqAx1wc%-Gllx5~rFq8)&PBuYV|HbBb+efpE9tlfFZmM1r^AW3FC_$6ESFn)6v$)W
+1qxS1bNrwMoAqO*ZgxJ3vcml8iB4y%&Z4s>+G};RyEVVP9E#++sv?AHx0-iWf}mQQ&ko)g{OVRH^h0G
+8W_1l(Zn?v+ntRq!Zm`zgtyikC+$`oyxXGpUE=Cp+zasI)Y_=_$QpX~8A4}xg9iywnStY&MJ<?{hoz*
+;bjVwH#kB?UInp~ted#|Fc66vq|h7;%VEMUWfuW7P>S$U35(>(g<GfNkH;~t&;d9~lJAFXj0%f*_xE*
+7alt=CsgL;8WZNq4{E7ICzf;(?I%-B|z|Wi^&oJnUWagt<eT-`q0T+5WIy>Oy1%t1-&YIk}UOW?tuL!
+QCozYx}Fn-3FH=p?J;+ci9qSFsHIkUA&+Po#O~%42IQ1Ru3yS#XE~3E+iu1Wlz?I>o4&8_PSc)My0Lh
+00|nMQc{XurB`vj579cfG!pMem~Dc0e3&P~U>8A~Bc7|R{1jK)=BAZSFjJ*VK%tj9?3i6(Ny}%7q(6d
+B>yro&0&^sPog!)9D`x~kLhtDX3zVQSsOQ}-R0<Tqe-2K4c{2Wqq(YuFd)WbV at KOT;DW7dHv+XVy{jt
+%*ushCX*81YsEa&J<PFH!OT{+5aX-m<nIfAZaOIh?=n<`z;1z*!*?UxcB8}pF~bcsBuUFh at e8Ox5vo)
+gd at P0S%;yUx6>FOk<H67BB}hE=AUlNWaV3aysQEr2%L3U_W4w*oJe)6fo|SN3LBRHNMBm3dQ=Q9r2I5
+bTf~WwCm#@7z66lhyh{X%Bl53%b{*mjOquqr~s)#pZZ3&$}g~(Y?oCH+mnQ>ie9{#{+UM*qB(CdG*Lr
+e`d_pfTgK`p-I6wCu!&H<rNT%RO>LIHWO6sfpa^rHy%a3a2LkTKnl`#70Rjbm342fbkzp88+y at j;Rp<
+z{2<YN8yZ(N@=$r^?=FXU6OyNUiF?-_r)Jq4IoGoyQhX}7MQ2;u7yNP)iBxfTcyp8A at tT3H+oj0P#%R
+R$l;55n{Gv|zj^-0Vuviy~ZedReZNBVRHor(7gMYVNflGE*gRcq7J+-5t_W=7_n5N3rS`IczROcm!^1
+7Ax2gIN26xwpQ6K3dRr3_2OFI6<yt#(9tL`B7I8XwIa?Jh$(pcn^I$|VQqiC|e~v1KCcv1g*{q6}Tgu
+f~UP7i3;4_!gTljV;mY@#C`0>Wzgp49R6%1(hV at P<6F8^8;zTdq{4!v3eW3!=)7u*tQ6m>)5HeYhCBJ
+(B97z6O&n%8pzna6qPD>j`(K)?6W*on8XPSgu6=$q0c?N{7GM+_tyYy^)VN8vE6+u+xU1n{q0-y_;yL
+NzkT~ZHEc?L{Z^M@^tb<*QbaM1dn;C%hWfnu`M>1^Kjf=^Hn|^AB!@FJg%Zr?VWg?VnMGlVNgTtvlaz
++=5&W6O5YLe~Y+(s7AOn3kpQA|*dQTvo3_Z~brVzZr!j-A#5R1c*61W<6HYeez#6)O=QLt*|b2JI?BA
+699b at X7T^iy)`S(LC45i$vM*pL$?AVEXF4#2 at L{vLd)rvdmfnfhUd+(bnmLoPw^Q<g#h67_2z4{Vwae
+tt_vGSJJ;{K=kkrVvs;epV~<*2)K9HT1_sN!`Bo8}peLsr^*)fxzrjV5-|HfT2FlJ>mtK`)!rSjoYkC
+9!RemfIe$f<>BOeYPYh*T3_f-m>MH1SwE>u5n$9Rw|-1(&Fz<q>tHF;`Z9lJpbplD89=|rA=zv7ivuW
+t41mi&O|X0kErFZz7@{AX0s46i0J&kj2_AeorccLoRat&g)9vWO3r9Wzp!oX3)Q8Q;Q*Rl#00$-ys(w
+o(ZKyg~a7#zh^AP4!MTFL`OQB46!XxnfPF)n&(8ErNqUT@%3%?{!`p)UqXNKy~zhtP|6}8#HFwzer3;
+J}i>{hyc>^INq@==mLoM#7~fyIpj5H++U8ps6si>xkHPCoMoApn}J;SMYMm5`fDW2Ne-D|8y$&+Y~#4
+s)6ve7!l+Yt;-lct%k=&YGvHLo-Ye;yI$Ci81WrAm91AtEfh~AOeLt?po$C#>s{UC|wEKPB(UkU1wf0
+%{a$cEl~OX6ry8BAboZ5SAp6DhEg?hPxI;pGqhVh+YkqFJLfvF_KDRp%@6e at k3>)QWXfGfjS0USdb2?
+IB<}NEv7v>v at D}opm*trVeOnXM;sqG5wWg0JQTiSD_vHW5!Tv~(suCgKfBciGxZuF<&o<0g`vv*k4fE
+B0L4J3`e6?SY-`y}@?HA;y4P&DH;%UqE*3zl^L0>evM)P%18plMj`c28+pIO?-d+D=Ajh(&VrUhCz#v
+ at wtmlv$di`tSebDjlXYXxju=V3q=hGm5!x^xznquNg?-L{J9w%>1T6PT&|`qd%!o$T<%7j_VYyqAu=!
+wN}>h?v7&=j at 7??~J4F_UsHRQQ`Q38Ij-nh2d_a?R=37ml?JY>-qNP-}n&G`TjMC_dS3oznQ23K(Hb&
+ at O=;7n&=+P4xF<PH2%$uMPBV#X|iK|k*|!t=kKQ~(O2!_?6NAb?<D%bSUoe>_76ksFASxX7(<TaVDSd
+RQL7mnZ(S^K&%*k89ZMe%;(QpotlQ3ved1fRm~yf`98i=hnX?){x^|6kH!9b1ae at Hwotxy~FUys;##e
+{6FrzQ#{(c at cvY-Vg9vW=V?<wa%-PVq?=K8ZucL1A4>hHU>irek<$9xV^$33je7{HXj#m8n2fQbwKhO
+p&(G0pSHw?!RZuix-*+atK- at eLkN{ycU1pLw4r!1?Ji_t)Mrpz-mEZ4bbaD1 at aoF9?B{I&dWs#1$z6%
+Xq=B?B|?&5TArF=mooZXAr{>1Pl}bG!$YmOPWllylVy)0Y?l(B>*=8U=z|`C0Da>ER2D8hKpgqD~VxV
+OBlhvJkeC998MuH4uyH!u$9l`EMuo$I%x>+6i*a20BivimC!KE1rumEfV6&DT|+ at JTl3KO{L!%kKZrh
+$t^@q|pWO##EGU4?oAf=RO4A?JQ+L at wiX;G*gzvp$g}!kc=^8pvc73n5F>HQ(6Txfg`=~(3UH!c=s!K
+I at WDba0gZg-*AG5P};)`gR99YGVLav=IJivj0OuI)rc2Jjm`h;r;#A^#v^hB at jf`;Q0I8|?&DnwYf7v
+CHddj7+J-ZQ(xjLA1APREdU2mf at jzFI5fcNgocwL*S(vA$X><aZbAtF=Pj7E6`0&*N9J0pUt%PH<(jX
+_XZf-c>KqT#UZ^NWwD|b8B(eNrJ$MH-fv5X)4FJ(qQisy&uQJ_3p?TvvU`Vopo8%^q3jgZtaW>W&|AK
+)y*kLEKPi%m2C}X#O#H_HJN#<R46tqX8tm-tmDcXD?FI%b9diITgJ))MMp`-gyghIH8YO8`53o-WGuT
+G$3!J{;$B%%K0cQ4@>l}Dyv at PF-w{XK1v^hAHv+ewt at i5noG$XrzYMd3G<G>Hs_V7PFE)0BA3bGOq~-
+$aW{q({m0&sA9isYTa9nEIYHN#!I&z)EmU9eu)_DDr(rbOL->zpo9CxLxQ<0<V2hzM=hwCwUgpJrQ5O
+2QSbOBw*Ikmct!16AF<7~~`67j)$oLegBHu-IBVWhY9F|NLe!|9R&mG<rbyolPxe|)pUw!4<Md)PjzG
+E9y at us_dM!umLdx2PO%$MzcL<+oLKn*{yGi#|60{a4)YsXad2>)owjq~%A}{7;*+0RuCQCdockGscsd
+4B5L9SY`t=ET^Ca5koUGCO at y!naCz63|gOP2su`>i6I}F-85uWMd>Mhfr4#=QVeoc0AUX_3;9)sB|7C
+S05cXSA(n*2I4A+fh1n1&ydD<$kkEF9<wYShzrpBiG{t6M(>F-+4~s;nluvBBHhk%JnZa<;uL3PLP$k
+0pjlNX~f1;2uC$qTuU>5HrXFx>z#j!edxD_=lkflEOk*aki4%8;tTY7{W7ga2Ptm0 at O<jQb=LID(}M&
+C<Ls(5RX1v$tE-hYZr(Y1;Qz<(eCao?k;5U-0s<}MS-*h>N95)mJ_ccZ&xtY~#i7&L(U%Se{S_#rG;J
+HY`1U@=~!K>Bs5cLR2|b%$C4c~KK8#K!2vyzf5MgbK?+pU3(<xPD;bFI?Rcdt~_{m=&=v7KvvSu?#Gh
+rP%6=H|>x at wPDNLA$$m`?+y2~kx;*>=|tu_B*vvS+zIOd$Yb3)0$ltwNTg4v4O9=9mHM>wFUY&mrBng
+t4p1#=$sbL8C}Kj-O<>iyveW at 11(?e~TeS5h^rR{p7ef1U_5YL{DI6e- at T&#H*7WSrN3y(9AKu+xEDt
+~!vsHhO_CDSpBZEga$Mt5u-{<L4T^99Ot^?)f%+HCr9UIyp0*^Q@?=CTJ`f=&(o9N<tIi2uJamB8>!d
+f7>t2W|pt)S&n&(FK?oY7>y50mhc?Tpr$U438U8tRr+G?8|XF7|C)Sn8@~uP at 1}_YklHDpS*wj7DF1-
+8T#V!~)}U6}{S&&xAo$2YU?I8vs3-ZyAQj_o7T*{!{C=;eYsTX#y*^7Cj`-HN&cE#dE;EaL at wmMjG~h
+NPbxPD))E7yB#}i``q*f6agEfh#GEGC4-Lep#^`V;6o{5yvnV{y#nJC4Pdgcr@?j&*TAbEz}~DQ`BcP
+>G=h)mn!`b2Z~&Ze0sDYXz#za31}jiN>-8GInSdRt%E3KS>LT*MPTZT*tdNh>no6ZT_Y#1+gFD~BhgA
+m;Z2EK~0uCgNK1|B-tP{KmqRPO`1=|(O;sm}t at U2THI5idCx#7Sg!N-w0- at E3)yGK%GiH7HZM|eKdP=
+mF2qz(A~ci*2;m9aV?ta^Hs9YjgT91L)V`BvbDFq5Z#0BBXbo(N}f4P^<9z-*?L+Tw8c!8+~m0IrJ$j
+Q2WzG2D-^kQ?AK;p~Ig2A*reS at C$huZhXm(80VSxIVAGh6?-}%*Z%_HR at FGdIO@$kr0^uA$Tr$$F%(M
+QB0YF$>DGYlku*~&JDbQQ?w8cp@)IjO6JJU!Au*|9MhqIX)R2x!9(y#CmvWh+{s~U4^^>_!R}dq?t?c
+~zy+T`AoBF+ffL|CaG`b%JOc$6-Cr+!w*w8+0W$>x<^<NNj9?#fxFJHtLSsdz*AH&;Xu|16laP5Srw5
+Yw00xJIi_phXuRW{?Js>i`wTMp$KRxUErz~u95;VEVo0t83zg({P#jTXted8mykZ{IG#|JG?dv`RNTP
+3YevzfEGqgnxkV`4SZyiEID#<3|;rD&H&Ywyz3Nq_3_964>!j>`!4o>7L;=lXrK@$$zS+gY#>uR~p3<
+}<C{D9J)+Zi_1wtm(v!X2FWL4@^lS(g`aBFXbP`(m$E;!q9T at VCy2r|AmB<CuVU*m>>FtEW$q-js5fP
+_7RH-;EeVi7!y7NW7MZiuN<VJ0O$o^7&?SWApk95<dpT2{lTS^)f`O(T=5^#7rCfYUt7oymcC*zj-5I
+-Mv#&pHl3uQrJpj8;{uYvrtky?`y<T0VtSqK&P1^7I6hTv1FQU{&>CC@>~t2JN?%f#tV2(v9T^T&Y+?
+!y4JO1S5Ep{y0 at ghk0hsgHG!y`J82(Ezwwu7%?mHO!DVF>S#_WF|FsAl8{|3hD at 1sjDJtem8-T{&FD<
+JX`YCtwHZ3c!FmazSi_6#*VAkD<{7%*3Z51wPywM7e-1-vka47zHzF0iBp00qrK8~OSfyHTolDgda4h
+&UCAtew)<x<{>1ATZ~2(hUbO)P?*RgRwrHHhzV~Vf`D2g+tZIb98rqni5yv0nx>mK=hpjj(lx`F9tfd
+uj-0F^hcKT^|@kQwyr#97+~0^g3-qrIjoR8ICLk&UX?{ksqJjJXkEQwg%d8D)NzLIj&m&9D`wb>*=p0
+&cyqawmXNXbYU|D~<sK<lGnFT+?6g(I?KM{xvxvGrz(y%d%_{6wu=UpY+AYsUalu;IUPqhx!nJ(Hj4o
+&89wR0r7vZzEmsA%m#7(DbFXr#lDs!-K5Rj>Yu>33!llNgqWX)FtmG>jk1Sh`&GzI#=eEx^u3;`T-tZ
+>0s7+6Fn2`p!j?46if`xC at V=npHu`xFickupJs4vD~ab%@hFl9K`+gir?n5gC9D6uefT)!mcd0JRUad
+kB3x0FZ=@1hK~*;P3(gqx9eaIN=6%;R%Zrvr|Pe59NA-Ja8t#UI#FUyQZFWgGdj6khfVO at 1_M#)NX-y
+Yv6_8lO1E+ZP(t*wuJ*th(`(PK(3~n1ajR%FB^0W0fZu5{RtN75Gyqio`6pmAUBUHz*L*>j|8yA3!b`
+%lcNwk6L`)pA~YJ}#_!Ll=K%7wPxJ;C?gi;QLE5w?1+Z+y*Aw9kh9h{!yDE$MJA-AidZ5E>!kQB#D(+
+G90%8&H+5nO(&_of&?-7s>xB|ECK6qO`Uf(9X-AFBXy#W1cM~G<ePjLC}QTPvNCJ%Pl4Xn}iiRK_Qv|
+V9~IJG6%wOOdrgquzP0%MTh0sI?)brS-wT2<T;{Cy9=n+m4||B+!2z*}%o0T(u>+9%*e?8}AkcHm2ZS
+i<2fd{4W=8$eKs{2mB}OgkF&4o||153vG_vk%YO{p1wmU!7vS9bJz7{xZ)u)l%AwHmUV8N+Z{8KH6fU
+lZ2;=8c_Gk+^u5&RA2i7oWP#;_7+!H^(HoI64m<du`)@5h>U$y9M}60X$hgLhGW06&>nv<hitvFt~Zf
+bWoHU2lGsA$2gN>ITFzzaFh911y8`drT=k3nakJVXMtM72q+AF`{p6_Ok~JmuUlKwg{zV~_U)|>kysR
+Dnk<TpsK)(NJ6a{~6bsaGfEJ2pB2v++5m;=yJ7DAAcaFB$QgqZ77v;~k^l>G6+qY7glQ#0*sf;a#GVG
+M*yaX9r53MaDt7{VapPl}797{+$8iP4O}rtD%4Ha`O3EsCbZl5iq;&0yUzjZN$~91H=$<dKP2AO4!c<
+dF=6BcxLkB!+;w&fG71MgChyQS^VuD9S+{b?jpl<>laiYZT?zi}i04ML9H*>?xardo at ELtg|H;z_ZWn
+EIr-FQ37W4+QBo!*&WxpWe8}q+ALZu8MF3A-x8Q!D{0M^&{sP)P4eoLT at hS7#CKL)sJdUBz$)s}36CN
+vW;r5l3jwIzgW^#)A&Sp^r;;vnM#mM)DS|X$v3d3pP0LRwv<^-QLEccK^s}u^-UN61t0;;TGJIW%NYL
+k3VwguMT8&&{v~9LS7sX<H#LksGY3F#Kw`{vunm2tm(zU~F6~8J%9X0Lsj=pP1i+bHwJ)f?MIPT+v<Z
+`q7dFhQA*(h|H*VUz%7yEOEUHa6(@^ip8*7!IJ+m4Vo$(%>FMH9<$Z`-~m-25>mmsk!y?ya?_F2{CuI
+0*aSC&T!!2y*OSq%eMUpD$wW*zd&LX$o4=kpGc_jdv*q8spfMl@~IwIt8c#Ad91y1ia|;K*?l}Gvp-I
+X(*6m5(;NvB}3xu7!D7sNLi>Y*ops|n~1a7^b2i~P23aY)G7}PU)d}|;tvY;+M6abX`vVXY;w98I3L^
+woB;F$u*y>yhJg{97>7Or4uu+woGN2b at _)3p5dYn at g{=acT}L-R#N59h{BPA3zh10=8*SlxzDAc(>2+
+uS4rb;f>vQ5Le9&>5v$0$ELoH-Ii_+}%l4DgH_UOv1`6TA~K`mwTK+Xs8(6FS!Mchd)qZwj%t(8&e)f
+BKGl<8(Bm3?cSx9B(@2%(bmFyD~NOY)EmX<<gql2|Th)uLH;nkSg7kJwqC=Qn9|_d6qLSGf|PNpGO@*
+!-2Y5RO}?MUl18%e66ceP!mQLpHMs`4;GhB;nR~&)pxlvvMQsjs=@%yIYv-=BLMS>$E5t5}pQTFQT&7
+V{WgPyi)m$RPD>SmBWG>9vMy~D`2sCt+ZQR1JdzUns*JD&SS*8JLl-oaN=!`wEG=#w(0zo&G4P6+jzO
+wnZ3MNQSEkf$*}c){rl#Hc<#z99G)rL>6=e<!T;w(dHmz=P at aFxO8>h?cuO1q`syDogHMCv^aSS93}S
+e4%I1z~=<%d*NZXU3FxJgXK2TWOmwevSG=vrfFd^6oatgydZDK0?2Pz|lQFV at i!uh4QI}BShkeY~vUf
+(ZdJ&b?TP`i-yRLqD$egLQ<5@@Ep1jVC?$^bUn3gINtcxtRLwGIQy2Urzk2B!rq2`~vrFOWjop^OHP^
+GjKu!|KDdd-KBzp9aMR`;!dT7}15}Q$*R;Ucy2zDAIR%p*xQ{tPf(NFU)5QH+g>^@;otcH0ZGEU_2LA
+9Iow`E?XOzwRunneQEZvgz<&6l7BmfOa~92Pw#hThy2;}{%m%6 at Iu3a{8VY^qmVp7<BvcP=;U3F`u&Z
+_(u%G#FGu(GXogGefU37Tz;x?~SoZ~L#Gb at ImhuJlYSon_Grf8q&?M1JGyTS<=B^x{OFQ5+e7QQtD>c
+z~o27L<m_mnm=Vf4aWT*yv%Bcp|yE at yA$jP&YAlHYzr|icId0+I2zf{lG=6XLK?wf|b>>o$c&sRMnw)
+feA_TQ?@f`d?f9T@((zzlh*Fni&uQG3(Zg^-uT6RFp#g<};^2TaymCT_|nB at -XT2g3dpk}kEKnA`&C5
+TpbvIz}a&En?7*pG5_xNSc6oKwa>I($H?8BV*Q_Y at Iin`&JLUw$b*H?nRmB>UuH;%~eitv`F^(HXBNH
+m5Mv8sM&N))jM&{CDsh_1WG9|bLOpN?3U$chEUqOzQwOjEt9u24`;5Io{nv!46<L??IRmHe$c3VnI}7
+SWgv4Qo2^d%<>sxL(*fr)N()B!c+M{>k(z&n0{=%TC)dX)tp5SR_OA`}h0OhAkY9pqC}R`Ypb+3uoSD
+!u3&Aoq#hjSQF_TR3BnV_br;TUQi6|w6q7jQ>Y7jk9vq2vU27My1w;{mBQ~FRmb(;n-7)U|#%VyFUWL
+%+fn6(52ECHQHut_5I2R>ypLH>9ax_tns2R~69bO!-MkF#)SNbnXx;f|88lLs>cqBwiO*~~8mZw0H7v
+*u6AzRl0dzW<Woz3GeVQ?gZ`3SJ8z?mmEQs_ZUc&?jo#DUrzBp~HKatJ^#})sVl?p+Ld=!@-}*zF{em
+vgE^OI7&p_A at S<Q-{(_(4l)(!yh7Qv{gTNKLra?Y<B2clCD#boU~}o(grPZ)0ss?+*--F|_DgQhuTp!
+uF5XwXR$pz)-HPo3agu#@;zZ)WDQ&(t1gBX<Z7A-ww!96Da at 0=d<Cc))!9L#c`6^87)7Y$xn9jOYJlt
+Z0VmI?#9*uKmdn<NH%!20Z)2qSi)h)KMtWBY^k$MVU)#`Cpkt&^gSaEms;-#Te=o~px(WS8ULRpgOwh
+_AIG_*y$S9 at H1P3<unT{gcA4k2H1s(+|txSz{BQ8Y6|cf at 12^=I^9e#Mdt63YFLl?-e8cvP&1Bj3auT
+OIIicbqfEKE#XbXWn$=CC7AG@~(UyW~U6lv}RzkJ$7KirDbW+Nw&4Y92nLn*3O<}^mKl#L_=kEyO~w-
+NWh at Ng(dPh8^RH{MN$iWbY<{lF0YtJtgxOVl$CiC8W(e}3mL3TvB!tY5`T0H>v2cev+5hVg`E^VW_==
+NXo9*DAzEGLac%MG{d!k7*je<2+N)Q!`};IrMcCicZ`(`SlwI?^LJ`tpz5KK|w%4w{0kQHej-l(~$J$
+DGMH#2pZ_DytUcr%%#9aT38 at y3%eKGhi#Wj%9Tm~H<%#^r5)06uEhjdr$#D^8)u#x~$U1om}pLeDOVw
+K5Y<^T}dK;#2yN)s^uKf$4-1V2HZcM?_&z&>Wg)CVku-gz$kLR>>;c@$Pe5K~)^mmGy~YJeN#6Lb8eW
+k?L-axiTog8z$$kWB=qpyLB0pnoT!psE0q2ap at Ocw(4T%KS24VL8!ro)*6l*9&3%AP2ol91zLo?HBo$
++e;~_V*;jP0V^Dr`oR9)4^|j-Z929SoQO!eC-uckhl{~-LRlgb*#Q at FT};5NGJr}S!oeTKqrUK;G5pM
+YV|FqM at c(xhUW9a;_~gcT2x7PoP5{#0qk~wyA~&ccd{-`t1k6sAU at aMTN<4I`?m}M6yM))C8t;5Ul^_
+*$A2;qT+`G5+{<Y?^f)T=Lwv!tGdDSMkzRY`|IQsY6M1LXJ8V$R`HZTJ<CO>d%odo0^g}f^E!yYDlfJ
+f at UtcqB6fc4LtZ%HA}bS!sejsTCC=)(0SV*)5l=j|Cq17<>CkpkIB;@rpeAA78zpH#EGl)6EGh at M+=j
+fYTa;^d&d at +LqPCQH`Q-zP9D&3vv4tVKnh#i*wJ^19whQ;oO$0H*XtUX4XNY=mzM{FhH&XA7M#Nc5Y!
+4n6pIc)aiXx=Zn+B=|>`WU5L;+$1uYp^s`SP?(`m4g0j?7Pqr-WSRBs<dO6Y;D2(@Q8ZXwXJM!F^&(U
+YCn+OT&P=4s at tsguBc^TF_2bC5(y&>sM_O{%EL&L}UP!AbFSGT7ILyK$U9=nAsty04R?^+qEu>TQ`8i
+JwPSgwvT_nmfe${n4thM|lAr<l=qpsO4dath!G%W<^a&<oMF>}t|GA)&bbl;GK|Ii4dr5_S&qFv^wNR
+f>iZy)A%#5|-*TT;v|wC;CdD8!6)&izV^w4SvVSv1mTtnRQVu}VQXoKz<WNliyie7^%?wYnVULyy*Va
+~!3|lB{pkF6b!r5t~_G)XdFUq|Gw)53}gLKIO4v{*_Kxuk!n!rgi=)+UEDQ3 at po^O2xvdeG at eq0%-h4
+%t9ay{$#PK|9Lc(pMCC)!3pU9;7Ir%3WF4nu=F1LgJfY68n6YRu%C+S!^wZ1Q80~-g?j9(I4udUN2kb
+YibGa_bZTr)P7R~LZ1D^_h(Z!76gGVAZH^^VFRU0Uu#km{jhfn+U{kdN3XKp*0g(Q()8$fxTBd#cQp*
+g>|7lt#(1rM^Wz6qd=6iuYkckZfJux4I;y!*YE?!R_cxyD3r*x$b5stq4iG0ZYJWT$ecaEZAYHo7Sv5
+oCeu-oNl3-^BAkiTc)-me?-_blA|bwmE1g?qnl$nP%P(}nfXgN6Ly!ZJ3MBQxq83og`^OK#m!4;5EAo
+-YghXx8)90ktqCEFvdQw4JQv9ELp7O7$~Gj%=ZmtZG5KYu>-zj3!{pFdxK?PR#C|Q7!gMX?~F|tH{6a
+;+(-2v8Y*#J+hvqW)$;B^VIHbahvvYr-<BLwvP>;jF%Pec710&(3E5G&2 at zZrMkn8;1OOuSO{bs`%U&
+_ at mW_b%ujmgj!Yd7GQu3arM(mT!}SuJWlod3D0EUIkL8ExTXG>^3w2x9%gmX%+fZKL`dis3C#<~Ts$J
+13VjA6XTxw|NvBuDCMvK1(Wity`K^Mr2oIz8AUumasYj_y-;G>c~S7(wqIZ0dEiy=VH$(g#gPQ+E~2g
+7C$dE03B)plN%dKZiFZ)%dw|8s#D-j#X#J;3^wh|@)N83PlcY{JXqcREk~Lq>ZG*n*+1V5o0 at ZG<0G3
+(2u0!QmW9P%OsM9L|y~N}>c!F&NEK7=z*@O?*m5h{6!SOHo`#L*71MfuIRAMS#5!rI3vUSU_<C`v=mW
+ms>MHAxxw&+ at vdjRgsdgLqHl$B7drP#-oYrH=4)@Cw at cNMGOBz0l@-q7Dfah(O?E+&yWxp=%94!{yec
+6gXvLI#x^;z0fW;>e5$FApxy~5*BA_1Q&4--6B7-X7MTKt`%ACX7J8*ZXCW#Jni5bG-&N at Ca9E}NR_`
+u9eLD*n4&Hy-%<zrX?`SV;AgP+#4!xv%>&<7!z44 at yc~Dd0Fc5wG2rLiGZ-$fqfZ(~l`FoA}B at fA~ZG
+ph9hMOOa3-ZO__-<V6$4?p_zs?r<E7SdKw#aWy_fJBi$h(-RwwIceExHwN?NHHRMbo$+T$(#u&SG2e{
+Tj8m0d6T<Cf9uBu_spNLPUh{a^(k(%qZIKf+K$}4Gud$q+?@91EIF#*3yU89neF2x6yT<B<!lv!;LD>
+{N=p7A}Yr9D?6+ne$-xrWB$N4b&<y0y~V?MX-PUa;8KcikF8YMz`V=7LOQ)mph13kuKYD7y1waRdEc%
+VK5q}EO at t9M=Z{vQj^j!g+N$K(+jUP9^W_n#qdqy{{q-y<dd!toFKv7K<~P0K3oa?|_N6kQkus+^zVL
+MHB+U#_(fYtzHrn2J#0bxG-oac2Ot>;FXRNwmQEfB+!S~EC-VeuzE9+FV%Ba(v&!Xhf>J`3ey39Tw<^
+hjY|0`Sn_{O3X%1{i>;5bX;Buh~k1>3~p97m!whY=`;lb^N;gstJjDN&Jt(h2+nNKwdGjzK?CnobQ_N
+SL9*(O;DxhZs!UgkB>8dUWUvX1t_R*B6SKFf|HY?-&JBV$g|kD?(xXlm03P6M*)JhR!CAgTuu*6!qwI
+1X9w{(Bg;^cuQac5L5mq5U1cyaXd*{;^}LOp_3n22QZm*>P`!c4fNN2V&6pT@?q)mHREo4v^<?jRNT$
+Q3;AiL&Hn_^diY<_`rjj3-_lJ4;o+PsNfN3DP~83CU00(*ZdI!_C^?JwbQMw8%Q2?V62Y~i1M6K>vCC
+dXmyfDla)=f~-CD)k#7|bTs;cthHLbUg4xBxAyucUm;|d+A{W;bUTyc7g(`tW-wOCcSiC4|5%vBd?a#
+EXSQC}GCu`K0Xd%VU&t%eSD$z*T7oDcnYEX{wFX#Mt|-(>trNXUNsFx-EBlRodNJ%66~&7N9n8|ke-U
+aEhrp#F!??Y}7Yr}_MVt7!&jDS`#)87D9fvf5J^Mv)}LvM3ASHOpc&`l;{-_!IVmji5gSAYF!qzLbQ7
+iIo7{#u${kYyzPv6+ at TEr{#_lsRRaTiJ*rEh+!aQfk*}@7 at vGQBr|p2NMYVQkkBa$`?taf^H=4LECDY
+j;;GL#2QfCxrI|W<kt~GzK=^YL?Khf1eZx^O)Qe3yJzy$8=2IyQJ%EE~I at tvbboD^CNboqnq%m6ZFwL
+g9g3pr(=6SX~3p61rbvvU|&CvbN(=6kc4im_aO|Ro#dX_l$ln0wXIC$MgW&e!&vikD)bTy2yAaM$n>O
+hPpo^}mAJ$DrC6nWAk-Ti_Xaq2uBKi(6;t;JFN&K|cAex5-IFA89}bdl_>V?<~tByHU4Sv(Xq1EpK9j
+h`p>hv3~Hg7ex;9M)G7;Nr`ZyaK2j2lnOoQ*{4aw2y0s{MAMKxMs*-U9^vDhWyn<`?zMvUs|+J6e03S
+-le|3iPqj7PUz}xciu^FEG}r4i;Z-2a;w3VEw__Y)h?oFOTt=nowefaX5O^3-G1N4Gtr-Gtk2F$YrdA
+fakB|TUJP}a?>sZM_L+jq3|8+d*4gAJf)ROkUY~9zCA$aI-S1mQnz83f*xb+cm^ivTV|WKF9!tb7b*n
+;8A)5h>ONWbt{<XK(*LjzcF-BDUpz@#<ya#XB<hnw)0U`8F?3><cS0N6HInl1WFI|i;aofgbOzJkkrl
+2EHv4q07=~rzWk1MmGM9)IUwL7-Mpq`_l;8UiA^wK(s^6I8%S{k*+)#);X!TKIs_Hq*r!-*2LXl4z<W
+kY*z+@$6bpYeF9kNgo^oqXh|;Yk=M+;4{hWLx~Uctq*tMeM)k;7r9)o0lJtm(%g`BGiF0`f&d4Sa<NJ
+>;L^MOXwdy_)`~sJ at 5~yn)v78fe?!3gn*J7*bhMD18tF at u&D!p-4Xj*aSjAOur!j-6Z5&L4LOk2)KtC
+>)Cn**V9;S|;{c98Y(F`9U<-2$igzZ3E`5gl%7mccc{nv?fF>|c2t#2I8jK6m?eQr+pMiO$P;E?YEP&
+O5P87c|Q!|2b>nwx+plRq=N~ozhIR-O|2>O>Mga@@qtS|Unu0PAh&=uzs;g|PP{`BtmoZ^a;gZdEz$o
+vYS-xZEuZKX;a3&^<C)9Sc>A^cP&7<^RRN!Z1YH>r8h7vj at 79a@+r0envRjr(w4cssx67fBizfG}UZ^
+{`W;I0897nG}<={&{S2)=x>D*vHf-#2H0j7yM`H)Asd__qY{+=zS5z?>GQ}kfdH7m#9l1EFI)kO4<=V
+V3Xs$)!*{z)sZjWBDkNeftWznmMIHqYK`%Gne7XANiT3#TEw(+QIJw65~(M<t7e<>h;F!(&6g)z5w4|
+Kvn3e_Cpv3-)|rXKN-^?`S?!%Z&766C^E7*hTuAIz$|+BE_ at j=whaR76MOo2%e%%J*x}Am96+0Y_i;6
+AIr73LEFy8jE<o1|fpnDQQN$*_YRa5K*HD9tjDNd-Hz)I`!RyJQ{wm%DJW#WR!eS6y9Y758X(htq^Rx
+AjT7TD8`8jpp!ENp@~_hdi#x~G$(z0fGe5Sh%>3lw8&4k5M{?(Xr($4sBjmS+}w47h(=D3_M69h#oq_
+GPwpkA5`UFub?lV_lEY8_Cek>eQoKqz<<C2W9(hF-!KUdmHF;XAf+7i*ff7oq-+JTo%M>{wEUl{{v7<
+0|XQR000O82?eW2tuZf-W&r>IWdZ;I9RL6TaA|NaUv_0~WN&gWa%FLKWpi|MFJonLbaO6nd2NtCZ`?2
+p#dm%R_HMYl;Lf)e0WuUth5(&{?1IjsY_>M#Qc at Bx`RtMZ1t?H%qWH+)d;4$K9QAr*xstr%Fs3#L?D2
+AU!8$mW<{oqMm+w;tV7J>rO`2jgjPS7*z)Q;!``~g%sFbow#MBZFN}g27p(Af|m+<Egob>Fuwu$hT#d
+TBxJb4^LMyo|+>p!+Bm+_hYW{N4Ek*cOTqYsJ}f3f6ubR3iNEhi3wbHBG at 8*)&5um<T#(s^E5Tfw at u(
+$EZ5P*`};d3<Y0>3G5vR`Rkb(qOgVbt5b=#XteyV5bncAA%+fB?y~ZfTZI+U at 5Pm-z?%fHQxYwuW3m5
+H1{4=gD#4~vr#OKsmhJ#1?S%!{}bMXv&r`OO5(yax%?taWJh07eod}sR|D1Wz;fIkj#X?=M`Jv9WX$P
+|huTi3tAYB%34lEsGtC%-4-a at SrnfA{92N(IvZUi`>I9!qO9KQH0000800{-FNL1d%+%N(F0KEkO03H
+AU0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZE#_9E^v9BRKbqgFc7`_D at JfwwhB=NmkJ5>(Dty0YAd0hsw
+y&$6U-XhYmZy<_nkNifnBJ&&BZh0H!qWU52i4GHwR%$W$G0~tmYru3S*PWgt-QH)(CrW98-Z+-X0)#T
+s-kw22clQJ%ZSAUrJ=G&qEU!o5H+%DEgL&!dZ>NO=FNBA;g;doE5*MhjrVUQxudng))^T;HqzjMSlFq
+R481tAmps=`0 at THtk<x(KgTUkxaAAnl5pso6$5&PVd>OzAE=QBXip}OLOO)mLqdG<-ukQ`HzoHS!SuY
+hw6qUni7&dudm3hufkMEYx4#4MbDo}MD+P~1f~_Fl<#~Pw-;E+kBxr at wa~<;YfzycND${~DP6|~i5ia
+UXRnYCL8#t*Kz1C_wkUd9>GJ|OPARUF%F`SA+=Cw5KR2kF~owr9NsoVxlv27d=;o>EZd-|sSHA9|gq8
+a18RVD?&(Z{B!l$Gc8%YhdIRq8Evh_28o;Q3~RwNFYCcx?WZN(11lrCvSWZqSqOA0CJMAs-PZujkzu%
+dud|^In!ksRRxLk6rCEl~^L#Mx{}iB4BbicA9S+B)5!tcN;s^I|L6hq-p44Owyf+2kDh4uyKiHrVMRP
+TT^FHY0HsZPFv`;U%t{l|8Hpq1H8#K*Y(W3e2(;0H)Q=6leOSW>G#~XKjJGsXt8-$54YT)>}?+itF;t
+Je at o$wT3=T_ov)RiQIvI;_kYp4SNRW6O9KQH0000800{-FNMK?_I4ctX0Gvbs03QGV0B~t=FJE?LZe(
+wAFLGsZb!BsOb1!3WZ)<5~b1ras-CXT&<Hphd?!RK|gF)&lGi{$Q&!fU<leB5B%_YIr*C4naB#K<iJX
+0jQOIjxs{okK?*;kU1eQgR9HIPIicV}m2=jAuEtGp1`FRw+>mQ}M`iJ`x{{$G4 at adCNhdGTet@AAIdR
+&~`MagY>!E4EVP+nPQOT8d54whxu8t8MlrefndrHsVnA_d?0P4N~_yySQ*4hrX({sP<i}dM)l$yBGIT
+$)(UlxyY5g8)}|!MrFjz1%CrJx}*KvS9|H6=e2CgT={WzEsMTt8+}2`WCe*M+<U|JQVgo at a-}7G8XEK
+YbqoKgFD`m at TwMtGvy0v<nWMhw;R~@-YAL$oU7bHjy at J;j$W?umT3jkw%DbwmkPFe?iJ<|Fl_GH at l1n
+1uNy?9f?0WHvmioO?t%}wzhyDJzcEd%kgSi(MMV)I6j291YSl?;8{Qyc>FcDDW4=V4p$i>EOh#9%T{o
+Ggks=&9P2hhx~+)LO&Byf8#*$k at Y#J<aq9jvEW3suugb(a at 3zE!1ExJc0|1!L+Xk=*A^zLRD*MAz0;Q
+AxcNRVK5gC?!zXSB(^hd)b4b0CQ$&kvC{CTJ}q^s~%+oYf2(nw)?zlG%6e(St}HIQ_^>yA4t at yYF9OR
+?MAZF1W16Yy>6TOn6d12B^&cXcVJl+I>KG6oV6LNz;zmV0MpJvYAqfsQ0h+hYk0Ue57Whlcp@!zO5$X
+kxEFcXskT#9-b-Bh$95p1 at Nf&BcNB*lm>_a2i=ntdeSx`wg>7Zs9x}V>EGoPc>or>AdYyu0-z}}c#ys
+#3pJ!_&ZtT0!n}B~9^Y?$mulr*s;j#6n)KJUd!6MTI$R<56$Ujb?Q2`5}i9t1<U_9f#1*@K)F~4jh`?
+ at V+BD~{k5b+#6BIDLv#3Ud{)oWN_Jokn84$Q at pVEZFek%<;>-+Ut~wn_*DO5EpVlk{lA^z7?4(Dw^tJ
+njKZY}(%LP-b=k8B7zLnFL&nrC?<Qv|kYyM^RQKEnoF$4ZW)5BX}!23wSB;-K(Ks_Sm<<y4b-SHB=Am
+`iQZ2%+z}~jP|BHWgY=<Z$|5))*#RwEC;~f%+{N at oxY2dz>6B&TN0~F`w)`Beegx)d+ol0?W^N*j?|s
+XcYBBe?%n&qGAg|unn$Usy9#sU3B$ToLtxeSxi&6kyt2vnaykj0VjLZ*8KT$dRp6o{*BLKD at gg7U{^r
+}ZnOSnq)Og-xrQn^Rxd_yfmu0;AgFG(9V_pYqLY#6L1$6?(E^4`h+_{H1NKgX<EhUyc<bt;RHPS_6-R
+8vuy2r5{AoGIdf;1V%Jtt3I!Srw29`b4}arb0N$u+&?+~oqbzHf)RB#cv*V6B8hko}>7WL_z904vMla
+wOy2pitc)@gOJBHc;a`9QPi4ghs~O7p9Ig0c*Pdzr}1KReyBko?)XzYi!PoQv^RTppJ*1r28q+IYK`i
+a!<pb`@ZiGx_o_m`~7RFHDHiA1eC$9R?S at t-z)~ovg~l5_rDQe<hlaTS%W1*Tx!9<Fj$!=hjg7$5&Xo
+L5c5HsE+aUoaLA7Vo(fP at 3sZ>h{^?|HR*PNgHGonOCsYc#QMekcf;h*>hkq-IhL++A2+ZgUBM*SLy4|
+&dM&PcF2Eo{gAtNK3_ZVUls!-o&4SX)Rg^n?apwYA}7)|5Aa*&Ap*sHv-kV>!ncKsn&Dg5Jb($ejmx2
+WIqv;bKK`)!9K#%n=~4k#O48$H7sD=`D7MT!Z(kp(JTRRAk;VGy}?gBBqr!{|zY#ftXOh%wAJ*fyTSO
+s)jm{QuA<J8KCh*ljdOB!wuQ_q|Fjg{4T=7EG at l>{%d~7$FmWl}$%a_S_U%sLknUi1reqb*0&hz_~l{
+z0g)iVsJ(WrGVjuWs(KLX0;B$9jMTtvcTji9RwCmIH?;Dl3)VHH+vwvGRtVUjEP5QB+vGG$LoVRWFu?
+DiDZV>S|{K?GE{G#->bG9pa6qnDX1z$l=TE)E%Mx!3o0lsNKRWLLR|r_{%x34)j9nk|CkM9{*0j-Pgd
+Ea8e$~NoF!IHCHL*4w4}DjHM(rdUrAzvIS7#wj6n$3--n0>n0^Zi?zJx-w?{J(J{Y_rS`5t)&t3gUdk
+eI*@m5YA-iM1?LV#E-(f+<mn?)8m3BARviAL~_VK7&U!~s}~lfv6Pc$O(o3Df=ThS-d8J%D2<6$cqkV
+wRB+bWD_;xHpf1jG at X8o~DOlPpHvDPYb_3LCNbNL)UD|G>sTphP0NU=oUSq#_U)gWWlbd?U`^IHG4Ci
+>2U(@<Ckr7S62nMTGBT|gDoZc;*IAP8&o2PfBHk~f_x7k0D!0|-3nDf6%SRuhRh9cNtQMqnEghkh~Qf
+YMri7!(oCBVRa4YMDeaCqb?0iQqwdKTBMh)&)+xv(txS{Tkj`Y4W!M_aUJpGg at ipuZ!~ie!sP~8De~l
+KA&m}7GBZz^Ff^bM#nT+8&K(5__Z6OZVKFu9ae-h(T;EuTSHhYmifV4)IN%N-BL)9~B;wZ at XH7F94)9
+!7v28sm$SEg`uvDR*)%}j>2dyc?s=(yzuvIvBwIV+3>v6==RB)iFA03eMIJ74grL6`{Y>k}<L44Q=FA
+Q5SqqAo;!nqZqv*l)|k=XLG1K`l5_sT^AMK%_8TnU2 at C{TR~%<N&e%u`0<db)SQhs6V#Z_}(3ad716l
+NH?2re)v9kMH{f$d{xylcxrU<wy7&ZnM&@48ul}=3o6&xIN?KA6%XK;U~djg1NK!7HlJ6dIZ$z~j)A_
+}&(QgrR_#fY at 6ul`Xjj1(rg7I~$CG956UoAm`W^6cO=2Ofh2f&s&MrWG9dTQq@>xgD`7W4WTR%!<3iB
+<xVZ|m*h;h*P6r-(=8I+YAr9B8yK?Q45Q~=o{O*-}2)U+fMMa4yRv1 at JHzX)ezDZOsmbvXc>D!@H;8f
+IJ8op0Qj*7cv{G3Z;52%C-Y&|Qyqit65_c=__-fNDIoDf&NoQ$h{DaB(DXXJ&k0OkzV0gg)?+YS&<U0
+(~>*%u5=H5CT2HoyGTKHP6AN$Q9W5S-lLo_))Sj&Je!B2gzbFvy~SiN1!khRZ_Eoe0VbINEU#E_Vfa)
+D`t`>1Xfh*G2Ve$oF43yc~gnYJ?#K;TKHGS41;zsrtJrLoU~LTb8~}?%`q8FAM`5kAy>hUAzu_$&7L}
+9t{_AdApR_wA_;&r2>>8`=;a=PaA-g=WW-TpPVw(Zbx?qxyns&%H!GL`C+O#7a<VvLPNuOu6IqP*ku>
+*yy<Qjbju=u;?TK6Q+^+DT=WmPA$4|T|qlVry1Uw;}+nI at 6XSODm>3JJt*B@;S&wpxX%qma1%QXkH9#
+YJwZj9ycr*N0$iEVn8urq>2?i0!QyiIblA at FMt+GLMwdj^kvM at L|@LFAN9J3|JyQLzCeo2ssJ(H;AH0
+0s<eDLj~FvnAK%mC{d}hY>um4t&2hNpMDIZ+k|$+`LCANJ&_66K*zDw<()YD<Kc|wX3C{zuUg3HlP5p
+5d6oGj0Xp6*_t()Jjo?y at JJ2RH~4fV(6m!3;FtfB0tgBj at rm42c<y+_qQ^kb2u=gN*cJwzv4A(mJ at EX
+?oP(OedW at k$6*vlZ`d0w?q-b&Wq0;i-W+vnQ$LQ at D0}9Xi{%ONvF}e4t2=C!V1cIWT1yE3YN<^W60pD
+}#oLjuKf~Tw4AXK}7z$bh at jic#c*oL{T4iAD`2&&)5;U$QF6j#D at 6?ISo>HjuViVo at GC=`^3(anQr?{
+4b%mG;!lvs-#|W5nekoZ2oJj-KrCQ-7X1kpbG|MKjUH$@MPCNO%Ys<)o2y_*vnB5O(0u!rY<I=p^K1!
+8bs~IL#n@(7VVY!rVr)1WeU8(@mRQC_egLufb$7k(}Z;O10tWh1vE=`y}d`+}<llo+DnVERKQ?_S3)^
+o3P9yV#rM<UNvm0MXsg45 at 7p1G+Tbe61nP4x4=YqEQ;cTwNI+j$6J23Dqn<J)iYY1o<5J1>n8m~s>Nn
+ujR%WI-*=}56{ylSaUI4pI`*C1oUY@|>R8X|I8vCc0K-Z#Qcx-Dr_4^)vX{Y;0pBspjZN at bz-IOm+$Q
+mQ*=*)Za=>OIh;_bjUqmevTiNn^{sNUSmcg^VlZtMc&{<s=Q<frus$KOOx0lc9qL`EUw`p=YHvqDje?
+2}7 at Z(0YEK?E^M<LVXuYbKvfQw|3{GJF%VRe5(datmdE5S{SvIsVeFd4l!cNVd|!`2=aRe3}6f}S;=O
+IYU#H!|*q&@8({k(G?J6(=#8Hq8{1#zxy6GyIoP!s1*T<q3@%C9!$}SHW;I*FZXpDqMGb&{nU`U0p{S
+urF37Mry8jAg&ld;>c0sj^YJc-zi*@IdquErY2t9`RwOHeqj<7cl>Chmn<v1-d4Th<M!gdr4tQ2`ot2
+=QJRUu_5u=J&V*dzBVv!CGR`?Z&P^HlC+gYJvEj|!v7s6FYz#D=Z777O=mg4{pNoIC0XM0(=_Os$vJK
+=kK_PCgl(RYfNEUac5^*Kwy3u3P9c9W-HRLZ^JO|$p@>p}maEBrA2tF5Fy5XJgp&>}N;&YxxhD~C+_l
+-_@;M~}_6C`i)Pn&vF3Z6E3&dpAd-aKqcbJq?5F<fj0zn!SiV)UN(1;eC>nq?haXzZua at k7fJKzfKE_
+J5nvqav-SK~cHF;_f+0#uBN^wdO-*d(?ckB4JmWJL67nPcP>{?@|OVHtPR}f58q$`5pv2Ach9t05 at p*
+fo#EDimu4q>z04P(AYzD7Y(Ds1-r&<Jz-z|yJ84BKIHOV8mKrz4))}e&nBOB at EP5OL(1;zG}Z3wHD~n
+jLNtRzzBb-?QsT`wZSfFZ&~h}huI<vq-DRs`+ziITk)yI9ly%7?eqxa$Q7ts1b;3;_ at osxo(d-evp;z
+H7P^|lLOh&p2FY%L>PxYuMq;^NHSE`wd6_HGMjj8wm%T4cJEJlN}0E|vHgol`$Pithr76j%dqG1*EgD
+`b+0%*ukEVTnI?x)LA3DOLK`U~-cOdt}JGOrPW at O9_LT@pYAOoSS*NB3>K&Cb&Vtk*!)Dgp>?7rC(NL
+7{GhN3|d9?MCy`-ngP?agvB`QQ6^7L*+p6)JY at FKj*N~-IFmFYz-%TWZd9|Hg^w*Zdu~*nCx-=7w(eF
+(lmW5IuF_4QU+bndK-?Q{3|DO``tDFl7xuy%@{l}ZZOoUqx%(8+MCNZcpC<<HE9AXz)>zPsTyFWFGm+
+Bl+<|t=7#E<)F~Bc<FWY7FMJDxVk_y#k3zn0SX&;gw94GQ81-pyk|Y>~Q91c6c%o%7D0xGTQ2$hZ>?+
+`KOt8{LuF4y1F!`rNyT?Z2XsmgPKi?U>0lNLo-;=NVzQdpKBr9^Je*^>WieLTm7yoB?GT~&KmjvBzs5
+N0ML|oH1*5<;xqZ#ULRVuXkB(}MQ*x`+$#{J^vK^_mSDqV|Kuf&y3MoI7X*zwi16p3E(d5u}nCN*ZqM
+xpTJoZq}laI at CVdK2tJZrip_!}rPicn<I8xmo6p!Tdb>g=Ai@%eJSP<4I8;B1=a6g4vwq7q2k9cj5=-
+hp)%emoM!;aR`{)QrL(08R&W({w|`YtM&NC{bn${=q*gw)Lx56?D+86BRRZpSQ&c`L2zX`c$e(+kJtH
+5ChyNQaXkfCK1Em0 at Lym?Kc^=XT8l~l_AltMb8Xv^Wmy_%e}Eq$%xw9N+fEXmnl8mM)`3Wd-AE*0cMa
+uLS2G|=u5y5&<@MF}`szn<_4VrN_3G-+;t#KHlW`otjA4HIOH%LlX(R!uL-(p9l}vb8#%p`UL<u5x&q
+;W(RLyswIvZ=qE+=Cb(;zmAcqUldnbs|)A<_JI6rp)uhQGOrgRLdVE^;<rPXnW!jJNIaU at CckGE9yGd
+ZY(_7O8=gh+%t_OKcjl)6IAAdq|HaH(4)s*MZlVm-%SS04n^v^aD&60Pl4ju)Lx);=SD$+8(`dUl1en
+XI%666Pfte9l?q#@jHL){+YSJ0RaP$5C#(p9v)&&iO>&4Qd?aw#OMAwlEI(Dg}+1T+lYpfE~4 at 3j!zn
+w3^ovGoA&JFzKm_>`^LSg807(Dn~rfr6>Pv1tNK^-usJ5N=3BKv?Hrl7<_%_Q;VIgw8~5?qu)9(o?9{
+l`;FO1UMxfBvBryXs2YhbT2$0Tz%wT=~A>d*zZF!)&mue^7Pej~XODI68pO<A|6 at l{O<6I(Gp8A<mV1
+q#)ob%q()@L5G3)pMEYL=4y_2tB#NaMb{K9TrThn=&S&v9w;V>{6QL4c0bN$ipLCEf%lE9xaV`(oaj=
+b}zz6OM=vKY=7Z29a9^`E!ns^Kws+f;UBj0Ij8r at xbR$GgjN7pTh*+rvSN;(>dRnxeGCG{o(XeM*ja$
+O9KQH0000800{-FNTf4CqRImR0N4ru03rYY0B~t=FJE?LZe(wAFLGsZb!BsOb1!9hV`Xr3X>V?GE^v9
+3R!wu;HW0n at SL`?kOCFh*UNWBPA$6RoXW}MfE9udKh^2^{1Xz4nRuB2@*#!wolvJtJg(S3i at 9ih>4z9
+1Rp)gYE)eQt+Uccv+EW5b4$SnRH(0P~RTY;@tM!W3C;V;YPm2%J+8EPaf?S;|~e1+i9gDK&$2fBnUQr
+>Zt)-;f}qIeN2ba}9Kt(L#+FoJ4YV?F#npMSlx)>se at eiIIdg)Ga8S~!<z?$X}L{g-Gky~%)nL^rR{B
+CH8PXb{a(t%3<|tBOPmQd|_lT9mM^6nRt$Eo+JoY)r5bsSixf4#WkCB|JYXt^D)z#9>{|;7Zt)qsP_D
+n%{a2y^i7ip0+4atAFr7J*<_lV9|3eNU`KE*HTb$0cQCZ7L=Q#u*nR5g^oUNO*^?v%a=3w!)Tli_AEK
+y*_2-Q4Wg6-(71YlsY;j(kW?Sq_-GLw;g1m}Ee<==uM$ppZwHha3}n-tcplL=@+Yltoe3 at 4$$q?Nao0
+2-^0=SDq0WZNJHXgh+6NuY0AtCfis~w+hq*OcQwnL at S+E`3Q;1)!dE0bgd*HiREnA&}d3ySM4n(ujDU
+7*l&;)<NDeA at 4NZ`p at 0@>$XKivvnRNQi&Crd}OR&@;p{{c(mt7vyaoqMzRab!^Cz4l(mVkoc^TOLu!!
+9J4q?R6w;$-li2&64A1{Om`Ix0~pt;jzg${OaR|#(18e_7!a(lr%-VAw^k~p&+!K5D6M?PL#+f776 at N
+{*I56qf$FckSaAPb*s=DkirX4I;s<OZM-LL(U_p)h-c461 at P_hGYeK!7$+<Hm8PF$Yn~Cd- at y(v;)R&
+Tvo;l%F%P8a5hWSZ5Ij|7hLK3WO~xan2jv`P;Hjvv5l2SCcTopCJVc^i7dOEK^HmO&_bpHg`01wXOVd
+G*=<aoN_kYnnA at cbmLQUG+4V1*v1+5d{jxmtF{|FDs9V)0-CHd5&<I$N0E3>AAN4R|40#(p2DDQN4Z#
+Xx-cB={rf%98*5P&@fEJLg{J_r(NXS6>uJsEw(Q_QpR^<XRHlc1i9wIvw<x5s4B;f{u&w<sDSbb)&I-
+<al`_E>rJcrjP8KL at 6G_oxY4ZrCb<kNcC__FP17gY$H4;ucrvpf)R2KpDO3u-?I+!fJ|;+rJ#S{*Ouj
++=6n at NM2lx!qbjC-7H$d8Sp+4+XDqL;qBqi;3KxwZ-SK{aK+~bD0v2QL`;jCGQ;Bq-#lL>>9FUL7-pV
+CkG4_KiawW03%h|D^~zWI2sWzx2~bM|1QY-O00;mH1*=G20^_`T0RRC10ssIV0001RX>c!Jc4cm4Z*n
+hkWpQ<7b98erXm4+8b1rasZBfB$gFq0y?^g`TK at ExLBIHoWp-`yM<`#n4=%`D~uH9Wza_P5scGZ})9n
+jS`zBg~4b671_kgGz-DuK?Ht0#vrHk-|u#?KCoHF2%f$*}K-Vr*Lr17}rq4MMBcMHFbj)(AOo`B5~&3
+Ia-{J@`I|ffoaFH5Sh?W6u{Z8h#`V-$)oc95k9%NrQ(&!hmW^{1Jl+C2DT5fKsb7 at KHJLO~0h+>j$i1
+7mSQx&sc#a(8asPW`0f>_0k$`rzI33w_%7Ely(WbedKNXR}d1sX2jSWw&^BKCNH92Sjpx}H)O*gVOnn
+U+D{5kcwP3p^+#54%a^cNoW8iO%;1BpZw4BL#{HMxl~9svr%qrc$Pu&xbDBwWNGNtYJAppd^>C7Vzf$
+zK7guPVslFx3F?SfsA>43lbvU>VvMlFKlVw3PeRi+A^AG!5&xPj~pzMCByUK1c44%UOa(SSTsXG?ME|
+rBhiu_S|G&PD(oco_Wfj>}70|XQR000O82?eW2?1`XwSs?%bT5|vZ9smFUaA|NaUv_0~WN&gWa%FLKW
+pi|MFKusRWo&aUaCyx={d3zkmcRS2z}b@{mCB6cbh|mV$~Mi%*1K(zNu2A<Wit{jLN;rP)Dol}Z>RgW
+-}?YS03>DmX6NoS(?%kJ2jJm-zX$k096mf0t18RO^O<Oy_2E-|vbVRtzrR<@zqe8~D%n(-EY#jV{m<U
+s=|!#tyle{zFv=#)OC_2MDYkXKN$VR?o&73T4L(a7v8}FUE#4cTG{j!M*;aJ}y^8``=2fZ8qbzM?lW*
+kS-ny<fBCmvg at xx6c)ydnb_*klTi;raXb}Q=?yL02 at qN*;H>5$2F+7``%9_j|FsoPc4*3!0mkt%soDp
+{($$*<(geAVcoleBFvOtT+PPv8BJs(kev9_sfi0GxM__~)-_y};Lt3?NO#xoj5vVsRnUOx9BYzqdE$A
+vD*}w(06JJ(ntJ>!Qfdo+RsB7MX>v5%?M(j`t|!wo;AhBTLv~x!3>}@@-l-i*;3R0Kw at PfVRmC(-}G_
+xqvrgjpdh>+|u5eF7cj#&r6A;zN+gA7W*C+eG1!IwT*uAuCAI2HeUbysanwvzQf_@*+dUG1|PRVcm6q
+73P||F>OyYPsW>UG(jw13zW-?|UR<>0rOaNHOy%5x`o92 at m1RTIv~Tcf$)u<sd}wN!Zs4(MHvq?-8KN
+ne)H!U9THpqh=|=LtBmFQf0LrEU`KoFVr8!ST(Flu- at U;M%+`?e+zRdB#R5aD%Qr;|JO^YH|Kuo+POh
+ at pjyi^P*Z{W8o@|9FmJ(FKmRW5+BrvjJ-Tg#FFmMK#C0)~dAPb?vCwrS%pi0KnHdMaS{ZAoL(ceO3 at h
+Q2X<O>rSpafbX!XamT=r#v&Y*xnpZ#p)uhGYP%U+8l_nTyPiQy<IcGMTk at hd|Jpa_|x)n+O%qc!#n&3
+Klb(xX5tiNk&=z5)<i6VTXO>zN_h$F36e&nFhJW>8$in{Es7iLzO5_3q)N{~zST0zYoLo{@BOQnC+}a
+qI9+@=eSUf(<`z!?6h!5f%%;No9Ec}JkDWH_sx61w96N0)5To@#n<q}2M&f!w&MwU4rqt$-P8-<rO<D
+q#2W_72P4 at O)zIy%q<4>mxyP}^?em*&c6+JoHd-3+o>8m%Vix)qBeDl}Ehm-$$1<xNJiHGpN<FEHlPG
+7zE-~Hk7@!sCvsz{YGGRpAW&-s_Uj9D2>W;DC+0k<%>=7xTOga(=hCIMQCl`Ph}6 at EZX`~b9)v0{Nn0
+ at xZTShPweq(e+g=nV7t^tpSoh2Mry2`<X4iSr)8&BZpsFZOA^7G>4Y%WfJ@^XO6J4Vt9ett_(`Upv47
+1)u^EI(>7&(*qy211I`ZG#PtGJ)J>n2}-OKQIz~z0gk)neUG%BuQsx|s4|P>h1LYX#OX%Gr~-Uc)0QE
+g;k^WD0!#&rA-1_(Nn|7Jk#xiVk{1OCmKCzex&^k;s>TIyeIZNut(44=hf{$HQB*a2Lum$3Ex6;urUe
+F9iFgZAq6Vpf3k0(Qy5>AMKC>Nd2M{NXNb9q_L4I&i?Mx)CB?>_x26rZjyZk-3YYr*}uvo4nA!;h(PQ
+Fbh{`Tp8Af0NSfzVuwi&UjeQ)>tj2>LAgANE}=NWL%n{S_#7CVlrgD0y)?6<4%}fes0`et6ke%9G8wX
+~-F7Uif-+R^|i4!_2PK=iXbK-xbd7N)2~~$z0)n<Ct%%QVzH3P+*v3v>ATl%Y<n(j>z7PCc&aFNsmon
+3zP)>?F1&SZUJ`X0=t?_hBn?R(3qDo6<MX^-{+ at wD<=*`C^=3yci?%nNmNY#pNc-`cS828%5G?LQeiE
+|M`$q~5(8?t;4V^t2D^^{xF`Gn3z;8H1r2VK-iR~V$(FdY=I|TnvB^|C8Gkz^X9#re&DPmJSnt<&>jU
+3g1*V8L at YKXXHOeSwfibcMVL6luX$}PUpJ~yuEgkQ_roGqzWLzAm->W>6S+YOzWlm4%IsAXy5HE3qXa
+t-VjFJlOiKE!QrMzBfm&OxW_SulALiGLi`^0ICtLeAp=elv%8XgdMkcMf2B8La_7Zh-ATI?2n_<pDK!
+=X_0rA1#Zv)oIIK?!^Zp?4r&R%HaXZi=i2(}DSwteR-LYK8;6yLkdWfxtHB6>?%-!DfufS{%_AU99TH
+#qJfX4+p<;aP5A&t-e(>$J8!iA81UP>OJIXu}tMh<3jr00@@=QR0dZQCKw<r9}@>c#~-Mv`~tFNl`}g
+cZ~J?W`Wd&=e|j<Wv^T++#Kx4wUTApe4lpF_f|$?6@$h!7!R=e4J$%)BO?=-0c(Mz?lvgqYBveoRj#F
+N+-+8#>x`c+lFOAbfi>BX}m$d_jIDG6nr}$4=*Xhj=I at cs{<^cCD6Sa*KwC&=66Y4d*b3-;UE at ghn8h
+E~D8Ecj}M_g&CKVM%2*1|g3q?b+<C)O%sfl6b(Zv5tb-mBNn<WR|5r9%*4qN8!5xP#VrKKh_SNAO3Cy
+bXAPXr9#a9LO4ED2C_ANt+6J1&{y}@WeM#-jUY`28QVcDh696q3uo(SfZ7JJU@#5-J-!FC#0xBsI6S(
+uyPPP*EzU<8Zc~@*ngn*Bk at 4Q^vo3<KK0?qQ#Zt!ya0)eQH6l`x_N#gke|)Y5h8|t0|q{-hx#Dpmxe%
++(7HhM;OlV8BlFd3#C-!Az0c0Ql+KoIYk8Gdt#URJ5KbFu`@AROQUa}DoE=)GG*kHnJHURtPElsF;u`
+Vdn$XSe<D- at svk6e_P&ba>p`JpK4#^B!<TSC62jU(tXavE8pJOniK3stWLCTv^$JtW%5Z~!9&z3r(t_
+{MEXi+y6qH~M(ZEAbI<0qMg5IlIc1aiK}R~Kk$D5Pir(@?amzLK?uKO_5Dus<>55E}n5 at fWulxG^&mn
+*orS_fiYB8Cl&xQ<NQ8o5zD)SmOpAelwzSW-Mnw$M4!41SnQ?2~e3;>O(|HHtSp*Xbvot0uuD%jb|fH
+*4jVN0|Szb!8{e at 2}vE=0-*rLRReNaY>RZ|V+7-rGY(!Nv)wwdh=G``1#8?L6k=8iO}qg(j1%Gr_rUR
+da5NGlW;A&3LBa6!Okh3(q)M3;z at ljSAW2TiZ=0}Z<aN?H4}a`hyr9Q_No$;l$%_Q*CAUudkS>XkfDY
+Dz_U&1^y5zTnd=Oc%t`dyvR;B0C@&bIH%?#^5d-lwPgH0OCc>|9?+u8h<;n3*MuTCQnrWZ}KojrPl|D
+5GzQq|{=&ShhRavDOS*)BHELnafS0N&?kdxpz9k9?7rd9zq(naM0QM>~+B>H3?o1Naw_1%J09hfD~5&
+6J>j;D+k2dJ7ClM56wVWJzBqvrb-uTfxaPAvfFRhBiYH(#dD%Q4((g<ixq|Il^Rf+KXrzkBuAiFRwK{
+vdxWTn1d&W9n5d9i+<?Db8&vQkN)X(;b+}2lqj@=aN5utf|7=|eWyR5lb2YG9p}{Z9LO)FCJE^14Ky6
+m(Y`Vz-Go*m{+he)6*bmEcrKh!kA2BuaLm{FleP#Au|}`W_V~L%uk<c^yGbudvdxK-{1<i~0&LSu%BI
+eVNc|T^T+9vC?l~L-tW|4{anNVN-``o5d!Rl)Bcseglw-9Rp6w?YFu_MjVRbJ(%96cKOSQoqB<86=($
+?B|$(zKD*r1~lKyb)rYbA<D9$Gv&>+#)Plo)2?{WnH}xcl$7V5!m(fd7`{izNa79f=Q11^zoNj2u$%-
+;;c at wBWxp0?Va{U{xf<I!5f?PC~laS|cpP`cQ^y+ILqv6Aj~o9NXNq4P^xHK_hIY at I-Z?1lkU$jOCXU
+1S`3voRK7h;!KWPWq+0>7CV6HM=4O5W2(@h*-@(z_46hzTTE~MA8AeQe?QI1U6niZ2T80JyRcQF$jP-
+Z-|IZO_;h at 9<f`FeJ?uz>18wU9&d-c#8g7MY>&s&=mSey;HnC^zHB|tHC3gtJH;4$L=H;M!C*ge%6x&
+`}%WR33JFSQP4Vn|b)qp!1Y$|fhz&&%orEB!!^d2s3 at rxp3O$OR%(Mk1iVFnMzCcYKT)bKV0-Nj<`(K
+e#Z2X)5(2W!m$q<9ETjjOIeVB~d2UKFmt=jZtqC18w4;0H at sO6$$!#l=Q#4z|G at J=L-BDn?pqe8eV)G
+2BWoIM)A;w8DLlyGWU0bc{4cbjGAtgrDp`0Ky?^$67R}vCWBq_#}x7{w2zHe1|CIvLvCfw#YG!F!~D~
+O{&COa-E>#byZ(t7(UgSLXVOSq|A^hfn$FD_~BHXR{=}m$O$=Qdi<)!qLsGDM4Dwf<TZkJB3}Cc<R0c
+zPyXIwMq%Yz2<$fF#tKOXr1P4EpOJ&ki%zV$QZAt>P&D5Yeop3u4R}vlY+ZR2*5AdRz;dUq1&<X%?(D
+Sm=tRkY5n|95u$e1RcJMXxuM>UoY|5Pufx(V`KbltZfrRB at E)gW{b}Q?6(wC36c!wCziibO`3qum_qC
+l!YUs0&dD<Qo|ucS^X3Z!U>MpDW#O1JMXG6F%^G9LqDo)vkS0Yg%@OqbO?0yw~@rLH=4dZ&tm6r=_7a
+#ge$E6FasX6nY!(L0NravkUn0$_Uss4B&i<cl{gG>sIPNarA#+cT_jdvqzw67X7s759%v#=d#91 at ZCd
+`1r|FcO#wfEa7)3IcI%8H<9)<+EqoMyD(CyfQSdfdOhYK%<zSxl(UZ+NUrjR15UKFEGpNODlHGW=8ok
+ixWSiTg>2HiXsYGZ0kuTQz7(=qSs9wvSRyB!!cQ`FmoSS3)gPMhr2~dTS4zBp{X#tXkEh?jKA at TFATX
+Lm=#S%q(MLm0Kui at _mmE*9l(23TYR#Bz*}+hH-?_#QbGnP44^C!K;})<5t1l^cplAkIFy;_$KUhtuV+
+#Sz0V at 3js8i}W<uWqRiFJCuL2qH+)#~zw*<I(bb-%<GX+5kep`=JxK^s4mNm`#PKfOUgNt&MDTN2c{i
+1#%FB97mV{;mFf26Bh{q_z?x5$|Muk#3c^sag<TDXc>K5x*V%{-^!PAaMFO!8mN%#64j}%%SN%%*N5$
+ykg;4azSsnIK=iXi1C*Apr-X<H at muhP@o~>yalQh*D3pUDYUy0CokVTH+C=f_mamwqM#Ax^p8z#=UJI
+XlQ4N6ZvRK7!=b!IxU>kDbb)0uC9n*yvPjQlkwo5VUVt!XTc?JxbpVAH0#c1wxzIFcJHZQhrUO9el17
+n-dwT6pPj~rhE~4+F5YShQ3l|3R$S4F50$-6x!&cs6e!v_GGbz;zp at g#=tdfvI?p7aaW$CV36T|3OiO
+^3m^INnr=u248umdhHdkn7K3I1{qxGa8#p_-an_~#xFwI~|~X)0;y-+KTxf^iJ4BRI|19`q3ntixKnN
+<wWAv?rmA<J2)|xmwufY=!!Tx}mFu8E)IBM_B{q#V#772kPG+D6;M~+B;Z*z#S}kFmSqFVGXu(!XfSs
+4aA=eog2DjI${quP-dSefq&O&-k#xUd`&h!jmLQ>!_#;ZVf}!~SN1J{&K(&zF%<XJ5lZt3)t$9+!ln@
+w{?P+Uzw0TO<iHMF?G6(du*=DPX593g=-Xln4yworqWW(SS)c?i<m%ESbui$9r(P&ViN|NKE&;zemN4
+d5L4r<2-Ig#47<=az at Bq|#Va{A6f#2TbWrUVBm<b)Ap?FYG(c--;WO?4$lB-ajQ<?+KGD>TVx=O(S5$
+bRqBY1>8Bd at idqH}O1$=c0U#T>!t=AagQ3J4WrQN*8ooj+Cx?nlOh0zO@|-qkR21=&>Sax#pYIpp@)n
+NH8 at u&A at Ah`540v at zmSK#M*&^&F<0pS6woJ#=1gGBQkWhb)3-L-_4#pq(xQC42Z`V+UyJ1os4GjXu>C
+M|{*vW(YRdMmi_P&@|Yz4aLrJtwpPVGdycZkIG9J(Bcm7ev0(jv%{aLb at Un5;GBqx8OU9Pu at CkX6H#k
+fADYAlL5@~@1}@qmS`Ng|SUPb?wG+5zT|l9dJEAr2mw`<}ZPqVAzrzZ3YI(T0(2dLt9c~%ybW52t8l`
+tQw&8wuNuAqQI0D5JEng0=udffO_QakS$ReNmg3u}hV^X5s35fMTJkK&S=phY?m}$U0QE2;`idKqb>T
+>ar7`!PXyTp+TF!D?AdYajrd5<|zmJk8^wS`_MO#l>?>uJ6K2do1L6Ejz~n9XJij+B&_(S%kLylG at ng
+k-R4>w2-Rl%7O_ZQ at B!NF at k0KAMW-fac5WmfrUg9GmnD4q~7l+UZTkreqpS#ZgdVNT?mvgN3IIn7jhw
+7^rT)pA-xx<i;TlVcGQKkFTD;1c#rA(2EqG%O(zonwTn&!FtIZ^NWt6KAlm{fvL-89_CSWH at k}b;32z
+;tR$|>g2 at hWBkc2+rpEj+mYrjSOqX|ojILGVd90}h)89x8s_B}H-eG0u(4^Z%H at 7_zet8p{-xDYD9?o
+Hx8_c*P>xB0aDT at IP7q%a8VO&}qu0VXF49`~`QhUwyw7nzz at k1J*CmD;Py5<g8RfzR{d86?7a*0RZ{p
+g7fW^h6zg!FNXHyIFNA*foev8<MMiog$oWPL_g2P_szOCaLfKIskeUZRBwrk3zY_Ri|T%F+S<!6fOJz
+)gDOPPEO9!&9S_`ZA$+E*WOSO1lkcZ;7SOSTC0*D{Uy;!r_5TLZ`)`UUytQ5ieT`{@W*!f at P`v91p->
+m|V97M$vwKZmE{%w#b52Vp^aHaKpvNYD%F>F5z&N(m5e%N#SRN#Yu7axstXD6oeU_rgax{?{bnvJTGr
+R1fMB<QSw=!E|CE%UoL|!1YFWGDUSlO1w;oRUdZ*D4u-cS7-qbO`;7c9Bcu0#YB%YSJFE?sBQfmW^PU
+}^HYGgH#@I at PA=$g=SAm)LBmQu&hj;Tvms)mQMCTd~E%m%-ej;!xn6I7n`4Dzz)f{DlowPmU^dE?4P!
+d;1GbojN8?$kFp_f6^#f(Ubc;3$*zog8ljy9XZajjBQQ-6`WX>OhO6Q@*YPRAeEr$_n+N~m=JN97xgX
+19tiQ{ehh^fw()Ziyuo$scy9RFg>Me}Pflqk(w7ibvLKy;}vPMxQSApExD?TpHw`M$uJXT^*IKAF`E1
+T_u+;p0}6YaA71DtwhKox+})`wJ7vTo-M;H7HD6p#R4m1?V2JZp3$&zuDGBwE2by>3i_6w<XES36LrC
+W$dso??7LuC0={X2#;>wSw?Gj5o+if5;pf|{qsZus4Nf$7B(`-}t7?`43*>VVgKzO)x?jaM>&Rv%PN2
+=X#Om^l<R;@6EFebh2f`3oL&<p}zCQXIspt6UD5&#s at YoA5z!(@zJIuRint17z6<KQdF|56UzOU*0U%
+H{N%5rI0-nc?`J3bo;tZM^Y1psh3CRnXW{aNeN`ts1(QWlRfS^>5rG-&1wUicv;Wp#C+pHT1641>jV8
+a%r~iJoy0)x<-<M at 7?KF6;D~X8HFvuT4eca><b!I?xVp&-A4%rFZDU5fi88hycK#_<V+kS5d}t!i<ut
+c=Sh?brn=T*4- at Si-q)hXuDtMSPzD_vdK`nyF6Z)=fW@>gQIiqjf<}6z<Wx^;i*yqyt*$<0MZ^H8G!r
+T9&o>dEaKd_+ntOXmI>O(Ft}lp!Q2F6_g9xXfYa!LX}47Pmr(g2O$g5l@!2@*Y*a<YrHu4zgSklnjeF
+MHSEf)sFaMqvys8IKgtiDvtJ|1-{|yksYb+AjM`quD``7(&+ZoOvcD+L?FU%noTXo2#w^&0Mz}#(Ucq
+h*F<wNNP=EzqS<QptVBB=`;&|FJdQpKYw1lIU+A*8xsG_C6#50mT7?AVg-F+j+fESl73Nn#>%%Z at ofL
+{}T3 at v2&5K+weS08<%GE2JrMDk<01&4g`Kj+2(Ty1><7vd65-_~7EiTUkzH*JMFroemkGh?pC}ilD=a
+UaQd}Y(WnSO>A#u4Tzabd2?OWVAa&;Ev5DX2Gn~ow>Qlt7L)N&e=F~8pHnppnF+o at HRC%h>S0l1Q0fv
+cYhy4|QH9BYdS#(+CqpBtzG-k5zI6l;BF5k^H9>iDYW;G?T6#?}|9^(`U^4t^)=Pp9EAavAOgHHr9wy
+fDn#VXrx;TwOZ#t|(&nRHyhayNb!Al!tv=)_Z<`qIJAB$7E6U>bQ4P at x3iOJ7}YjbDm^z$kUw)yIkoI
+owHvr1nj0cHj&sJ&ruQ4g_Tulcva1RVfYq|tP*!!xE*-Y@%fEG7@!SydH%aA4D#GrNsGvpd7N&6W<FB
+@%!1_OFrWtmv80pw*>2R9Th(kahLHG#aPX28N<=5Em)&$ybMgg)WmZdCsw+2)N$R`0?>mb5U3CCNzDR
++L^)dF=k3+;Sv1>FFEdI<LnKIJB}#_59zq`$i#AGZ;>0oQFl-~?>sD)b=R^eD0g9$xivw^K;+V9<OU0
+m<c`h-qu=UY%_m||6Ek#6XG?t&1jMGQiYsa7r<RU39N3XKGG<>CrYA_7^*jb><X`+Zx_wyg)4O%=&iF
+#_T<bCm1rMSqDuX1mh#~%q78N`97IyP4D3dpQf#76x<zSs-*;KPI#_iCm(Vo%mglRXmA#Jn(NC)vfkz
+jY8;iXOki`6X>_|M?iD4EHp&H;8DT8{yBFcTA_3zh#v&L2;;4R7w<oD+Zevp;Ece3IfGo`FI!P9c6l+
+u!kb_<+6fcAQ0!nxFFSr&m>;Dblcgea)dm at O3IM+%{-D11DKP1(-M8EWpqrV};fwa9!He5 at owNlVtGn
+S+g8;_XYBuGo>_hhe>pxR)@DrNq1q^dBHoRQ}qB);>m8*j=>gjyeZSyt5PJ&Jt%KmpR5DS<B*6un at zR
+{lDJ)_W4%<9?b^)gRhrX96_&CnubXwgW at vMHkxL{J6Zj1k{ek$vsRlu*26935{kL8_C!J{APm19nK at 4
+S(d!pTZa0K2)!^!|EVL)+5x0Y%(s`%Ep at f`CFUgE-ldu_DV at Gj;Zs1P<EE~FT`UpJQh#JdLWTnc<U=z
+$A*cYqGB7`_X9_p09z^l-BN06oz%1K~rJ5N-&if3p_Y|3HkmCByUJ4W4)VOLqu$yE|IHfE-E9#&`M*V
+D<MHKQ0aQ&5EIrTxS*N at kd&smT~J^-By at +uZqD-<OZ%-c8r+=3 at x_>X3>m<R2w|WK`T&3T^bL=f|hvB
+aiJT{-OG`~iMa^xOl!WC+4k=wgOf at yFa5#B5o8WjbdWu?`f at NRG%#cBzAl=n$7U`1YO@>ED#ao%yZm0
+K5`#;AdkT`{{@^j^8w4{@OL&XEoRYbNqobbVP=?l_!8Q!&(pz<Cw at bTqX-|iCNJ|prG&$4Z6#p1i4K^
+yC{0B{%uE%uBR)=`PKvZA6d*+F=3j?y=Y=HmMy~sn;lNo*IeS$^^nZ{oYi3TE0z0rLTL_io9!;T5xw`
+`l=MXC+}V4 at r-u%o6_9)RCI9X|d{zjztmb9y(|Q1Qn=xw_pS>XmG(ZG4vrkL at ddh^COJ>GqFus9KIiF
+uwHo|JMEDe!AJ19q!t=y-O}QisnZWr#Mrx3wx<tKZj%TcA;&As at E05K{>;qkuxeJcd6|6ZHYpHRm7<3
+i%uO2nv?Fila;$hk6kD9ZDeKO3QIFXFLN{(N5c~gvt5Hlfa3*#VRzb&c*6I3_XR}%e)b6!F6wUnVzhz
+e7vzo<XN4=+8+_X{4os^9k<rn>Qt}-GwJanW%$hi~z4a|Q{*jI^^3gr={j^Q(>3$U1*LYLLMcU%cZv=
+}=N=!31&SIuG#vPc9xhHFA0qgrLHdkbQ4P9O}75?pD;J46Cmd0<fK$c7G#4eX!b&TV_gdu;25z+CjH*
+`5NJ2|Q<BsgakC!8%jbMXr>0!FbADxQ%%{^s#FCT~;724K;>XBgtLo*Je6n)F<{cQo6RotI^G4cm4uZ
+HZKhDFi&pPU}T|+c=Av67az5M18(o))tA&C58uJ&*~fu2P&bVB!L^vb`l#STK52m@`geL2%oZ5Zdq#2
+G6=ZUNzQr6y8aPJC+aX5W5Y7W$Uigp+FVe9#Q|+o9dZN%jYB<5(i6ZTi3Nu)gX#9-F#ZK!B*%=aO}OD
+AlK${Lx!vJQ83)%I(cL!FkxDg>YDuns|0H7kQ&nBITYWCT9vSGl+|Py6kZO-m31sFv$d1iY)|d2`HEe
+B$OJ)qO`)eNpZ)@605H`qUHF_91n1T2hDc at IL2fb<8DVzG5Zern9?S%B9Ldgbbwnx<an{X at Md)V&T{H
+{Pm5r~IRw7LKA;pH_Q?;Q at U1D3Jzp)NS@(r{}h0zTCRppFpJcl!P9;omg;nRrV_xzoZX<ZO8W9gCsE2
+EhG at el^0 at F4tK+n?g}90w|t^_ZZ_bqHc3QEF|JDAKtzpS@`ug$A5%JT#xvK^F0c8hJ_W at -oncO+{e?`
+hfk;C5X30Z!QqqR1b7QMSreeHvjV^HTNJFMwCFw68q@(a8zx()d4a+j9b6+Omb5lhTuZ!{k)mljK&nM
+=04=4s7>nUaGA1nizYydjFtoZ|vL1IOMx$Al61#IywBh46oI4wHve`^x($Vc;|IrYUJ_79op at ye>Ab!
+EC(s7R|4!#mbNPi0(%EhW at a+OjQ3feJ<5+aBZaQG(*RJ8#`O1E`AJv__#4;8JPFe``>q{gefDkzFSe6
+9I`tqaiQ3R#|^#dXG at QKd_~<^uolLaGN54?#pe907-si{VS*v1+g{Ou{X+#OX+rG2 at H=Sk<mv9{rJ at T
+G6djR9#6u2COocIG%X06`lR^e}v+zVXWw(BTu?E%DgG)Hpqd)puzEnoP#m_KgFf5JemypgqPYU3 at aG%
+b184w4ZY+!gXtWRP2WAjioZT_7oVW(XWh3a{hb4|y^P_&Mqm?VZvHYw4>pmwB+OHiYK139WKjHzmp3d
+(BP})xWlZFsh5!2KNPIW%yH($bKO6;qRUgy?C0-Ocsvl-u at j#hCJboWcTu<F{ps6kAat~kQ(UL!m&g+
+{y&FcfR;=giUNO;~*Ly=RvF|prvYFTCO!~rQdP*iH@{>%65sHwnHvpR at 4v#N?jyhVqsapGa7P^2 at fx#
+k_afI)^Awxi}S)q%P^#`{AdE0gFwPxI2TBOc<NT{H24^)Th3=$tUfU*lnRHTK;RndG6nv_bpfmav2CQ
+DR`8(bl)EoX9=l55eKZg#QgtO9KQH0000800{-FNF&pF+DjV%06}2 at 03ZMW0B~t=FJE?LZe(wAFLGsZ
+b!BsOb1!pcb8~5LZgVbhdF?!ZbK^F4e^;LZmz^C+TbcGInY&c8+8M{|WZmv&x3>4%tIs1*BxEtBNQEH
+nRWj*k>1XLD>-zzK07!YA<gT6RohOr}NZ<i at zu&_Ho`{2I2O=rcthkwqrd}O<g>MFf&p!KXP{|(}scI
+D|sZ>@LgZ~Wv27}9Wro^U9n_P-*Ro-Q(R3a7^+(DGf?`2Ypx)htZh;O8bi&Si7r7~3uCF>f7h4x8RDr
+JWgqogcvGpQybZtC>}0e^&_<A|q~ZMJ1qi&70%Rk?x5=Q#`l!zrOZy^Xh9fXv_1xR!Ock>;cMJ>bs~j
+$yvdm$Ax{Ilh{!y3#F at a<h$V(}pLPXUmCrSEaI&>8mWMC!(qH at 5`*9hizObX?xRRO!v`1z#qT-KCb52
+Xr2-T`LV9zq at L>@^SYcvi-|bbh&iG6|BSCTvbvF`;aHCZbdb3nNcWnE_mzbC$ke`gb^6Wmhc}n=^V3&
+n=cgx^^EYR2&n`8PHNdnmQn`woyq?p`iAXaAh)CA-TeolOtQ`|(d at FbJyEvcc84hIu$QV!sAfQDN*V&
+y!{8}1C@?#>m9t{~!mu2}jE_UZK%_<-=05~fEdX`=!Yq^Oh;$+<vw=z8~n1 at fRss!|$ltnFz`jvFv8Z
+2$&<Q7;_ML;K@;uq1phl9>#0{!#d2PIPk7H5St>;MyQlDer{nx4c;o)t<KD#N8AKUnTc<82KqH%(t(U
+cNu(cY{6*^0HAB%398wDw~KKS<hv0msMpk*P_5L3t3mptP`QuWs|4#<!&1*Wt$N&Y)TwWtOlzdj0bip
+aos3DK-w;behdar#Hy at -&GH=*5tg5dH8A at G<|aRGOQnBfE3pKW-p5rcSW>cOmS^>@pDPW|U0fbto(%@
+}_sQ|e>(lwg*?*jhnRtG5bTk+YU|`MZT33v;jxfJr-K=Ta7br^eBnK?a9Pu1a2^FY5 at ZVPw@V|jYf%4
+e`vbI$QTES=}T2m};fRu%(jMUWeEq==i&}MOxluZHrzLo?JFp_6UW_6kX-B+(cXV~7T_ at K3IkQMqTO+
+ON6D-jbY+W_?_E(Siw)oy~#cj7+FbFq|+6 at XX*ae)k?QP^kEE`DLxOApy9#1szjU0Fy*3^N at twOz1jX
+Zr{5_x2CQ;r>s=*Tk6!s3>c1X<{U!n at HTrDqHQwW;kp$vasnTtPvQtNaUzPb*=Hoi06HsI=o{#QHSy4
+5W$GINSHbNHVU*~ILq<42SU_r(I9pD27^OijmLAjDet6!#)?@CR68;a8d;=ABu?3kaFbP5Df$-Qm02p
+{92g%L!@!UQ9YUl{MU;g$F}{naSpiVz1Z*a*Zb>*sw-a$UMkWqc16?<2G)4m684kH7DA)~vU>^&xMLD
+R50Mr#UxE>4~didWx^+5K?;!ImBgMMqg9-$cCgDxPQM{t!`mf##%#{`8~Llp!y;t7%$1pgIaHIzb3E@
+cuoN{ah+t3r4pVm1>$4Z(P9!Q9B<R9s#EJh6&|h84?7#?bP at 9ZG;b0vnj`B5%TuU~9|GNEd)^??VKdV
+$_a1#(7*_?`3-G(~<qo5Z;GJ4&hC!OW}^L{}eevGzRow5N5oEx7o+67_kqk>5MD`6D)IZKq})@fS~3p
+G;C^%|NjBTs(}KV**9^nz~Z5|ST^+x7d`Q`i~q+OY<5{S&?%9X?qU2_{p;B??Gwz=X5J`A at c>cL at c_G
+n%Kuy=GJ+>W55BvR1<EF1zFgS`DzbW>=mm0mWPh#E)kZpixZg^-6{s9;u{(Y#t6kgiew~3Ek7$T8Wzj
+SBR=m~D<Xlq+K*JL_x!c`nJn&WT3a0W>98EhYdm=uN)-zKe!SW|(i4%2tW2XpIw=B{TPIlaBQONtbUN
+<RIeD1cQg_;@6Y$tyab+zlxpL!<jW8!MSLsSh!7^+NeK at +PIRH#Ve0xdO&tOWPaw at U2piqYe}SBL_@;
+Q&TtUv|%&s`x$v&P_)t_Qe2!ATcBNl4mB6`J+wzv6Y7&;Bf}ZEOf?4!&6v?Ou-R(svL?9#nT?BEMUm5
+Gp3q13K}*-6xk%0cflSx`IhW-;fHNm<~~O-Epl*3L;eF#m$(zD%;Cq?FfS9bY{Tnt_}9RL#Qi*79Qr=
+1!K(&(Vyqzrs0le0=ii)&=U*Lt1<Hn7eK`)%3In5OUDXO9jE0AY!ybZBj0keX(=<UNaWsY|U4G?;!>4
+NcR3VB-4upv3NWo_ZvzO>-@)|fyK)%e&d+-|*z<3n-7-g{ToI2Ctsc=Ko`tUo%{uA*{oM0S)at=a3L7
+!*|AZ$n&gJR2ZIxw#t;r9=pfAKsDps|xUJcRgSeOQ-=sKuKqkwbwF9>7AaF<jU6c6xZ2mK%uJqB>8z?
+Z*M&6Np*zECxwNYT@`_{L@#zpNM;jnF<U8!Stdu5d$KwLwcjDs&N4!8LY5NY)fQJ5m*{e+(3`8>`xBj
+Cb<t**mLlpnvS?r7=3ps3;2kERm at s}p^99h-(I%@j_zbulZ1z;FvbHgw}}hDot1ym at n|Y=Ccm5Y&ak^
+y8pME at Cpfh$4dhz%1Mv}|0W6ygqT>w&OJzC=d$DHf at GtU`0%p1awrG}^1v<QypqJ`(CA0d+L*o`6W=g
+ at s;q#-fzU;+^6J-;xfD1gLC_4gg8KPov7%iG69Dhe$1oo&97+|Q4#lag{+|+B7hAvjLsC5D0AG+TAdR
+&Fz1GU-9YRfW3dy3wU-&zChqnrNpY150dbtZ at Tui<r{ZT%OyBU9O at c$EriZDJ-cZ^9((6pDVyak?>GL
+favmzYE~#upWE~;~GceYZD8|A!xu&gBlUERRh|$+-C4-uo1wr+}UWWSc2w8znj87P*3alP8P#j>?rzc
+KsM4SKt*3dvBUq-+$LPf`!%k__+gb|dYKTGM9rooAMC1M7zq1k)Z-<PC{t#bv&rCGV^oRRDko at dhbG@
+!%zRCtU-zg2lWg9vMR4fH>X3I36I7YD9c7i>WJR1?)(9M#A9^HX5VTQSvlNB?Z;u=JLpMax;SB%N{cP
+eJ{cpE{4s7_J?q>>h at PFM;CiL+VlI|Z_{?<v<Ay=na7&Lhe0<7=hdY3&X9Xz{S?<;Zfk2CSyd$r4Co>
+KdP6I43P!SQ7O5U54`kk3B<8zu{u5>qe+A)p;V&^Pf;+ at psA+6N8yme?N?0_;o)%Cwps0{)rk%qD)ox
+2E)E0+6vIpgH2a1sg?lv1OiTH<b2<{+MNI(agphg038eDH#2p62aRNg70N6+cDd*z}r+#B<C*r7Z?TY
+bv|hG(Ig(j^gz~r)Q%?T<X!{#1e30SUGQIBeB<;<fv-!X*}Zj|8S at wrfR*qe{r7(bDA5D at 5^m&w-u18
+zXGG4T#)0T-Cuom*9(o?5V6+IAQ^XJh{B9Nkv)_7r4A0>Dn01_iCnBQV2(ig-)-_osu_=KoNKa$#uTf
+}A(drr8w#dQIn;Oo7eGOU~=eR(4>#9+-6+(_NI~dN2Efmbeft%%Lr}1yE9ip*Je+QSGm+DHnF(3N`-5
+8O6Id{dbk_YlG&KoeGiX&XIXAl6dvYUp}uoxD>3k7zB^0Tg>>y4oe`YLyEmBk=|D$<;dso{{bKb*e-V
+0W1R1h^K?ckkx!&)@y~pP1o^)A!6K67O)!;XcFE*gfZ-H{b%BtTH1SyKw><XkX)kao`ciVxoh5P-&<(
+Xsj*Aeleo*E-M at 5P(XXX(V!Q9pvOvRw9Vs0Bk(<rec*AbW?)uS4%g{y?O#(dnI<~^4y0Cx?VcdC9*cg
+`$u(qg^UdLKmW7{w_EcaXE~ve+eeWhAO~jXzV7F0=W$?B)>O`{7!v2&O=9PB!6!qz<9S0NO>C}23d1T
+TY!3bCU{(9^if*w}bZw@>~*Vofgcb(7#T=WVR=!Bw+`?5+k(!7n=k+Z6H$`<Pn1une<a6;J+v at rjq+p
+>SGoBQA%UMPSLDj`PQ at jGhLrCC>H>e&02xkiujh>~?&+^~nOl|s4FK^wc!2H+C&uxN$QSB-%W)K(@6w
+=tGgc at GPOp}=xwW!0|{H1r-x=P#}~)QPCNEWy#rWW9>Y>gI4=Z}P)xm0*JFiQ)v}!SAClqc2_hS!cja
+9L#1qGoYlLm$d1N<kfQmn?8Jfdi-kWliALA`0eTC(4F6_60~7VJJ at FRN~9%LY^ZI9d*L;JkE>L<>A@%
+B8{AKv2%`5FN1rQB%>s1C*ZJfUR%HWI|1HzMkYJP22 at VyD_wOz)Q6=)ADO);9=EX3_=X$nTt at rM6w(g
+S1oGgL)D=<fz1Heszm$<DTQ|SXR%Nb^Q#PdHKefbMkie9w0Qus2&`95-`dpHdm8kY07zD9jpVC^2~v8
+^Stl?Oc5dsDl`0g|cFl0|}BSvDJgfcbaYJI5vYZUF=O8r6pQpyC at jotkyLeEHJUf0(41^F`@wCY73*b
+&TBxys at Z73jbMV1<4b<xB1)`W;;w=eSUOw{gMZNS5bah&`!w5TGydf{@jRHx>LZO)<|GG{QH%Y(FEX8
+=kvI(D>a|v#+;?~P%Gu(L=1JDijSy*@n5Z3 at sYMb>0MmK8+zi{eAq_LLsW9yPp)L05DZg|gwLD}z$fb
+{xZS<I8~x$BRqOM4R%G>jP6~ZIb!2lYj>*S6$l8i1x5xl at 9<^%)(zuj1&nDw!?Sh#SXHOTJWf7<J at N&
+UjbkLirzD{QE{DppaxoD-9yrb5=3u at HdjSK+zioc3uKftS-ZB9GjZHXh$6jlIFk6T1AA07Yr#vI3QF}
+LA*6?B>EGAVN$-aey1VpL@^l<012J4h~;3zPR!ej+9wPQ`FlmeDe<re8e&{43%w&D<EIq0x8Se0lWz^
+Wo3qV3|P1MjKZo<Kvgzx|psD3lLB5Fzvj?T{&E{F1PSW$n_L{m10OfkMUp*)sDA5unsi#$o2~uFrqy*
+hp91ygH at ngf_rNjYFLPTTxg)l!B!v(!QdO1Z$_O`o|GU_#<H|<l`P|31YMB)wwY<OAFZ(wKw)VID3oC
+H0bRTie?;|Rc)K40YZ!ol^$i^WsBIX6+|wUh^fCC`_+z$dHlk=YOIdk)|7Ks1;#tR|BUf3bsw4e*w#l
+&A&XO+NvR(*VX-Xag?rW#PL_N(1Gu~4!>yCSg8q|x$ZE^F8g*1$!ZE36vCP*Stxe=@=kE>vcZD`j+j$
+>g9g^4M^gF%)9T#BRtABPfrWmA)fM>#>e;i30Ce5BeM#jkf}(&S7jU9s3NEp4^3cwtSe*)iy}dAXQ~W
+#b`3%M$L$u)Dih*wX9Bc3doM(JAU<QpO?U>E+G(s;);r{XF*kV!c480>K!~P+^<O-kDnmJ{kwigmt3q
+F5q4wXji8Kcr at PMy0@`2(RT$<5o=c at Rm=LjvzSIfF66S%4EU}<pME1ZSn%Tw>2I#WVtPxTM?H1AW7iv
+iF0yLf0W*Xx`N~&b>yOrVn22XV6%-TAt?0l`CRL|-$<}PqFF$I;avZABR*ohJs^G<o;01UUuEMUXxKN
+bV(t=p&8mz2l<-Z5+LabwDrQZo1sb1IQ=^yfKOuecu83r_HJ8ppmKF-2PjZMi~7_ at YR(t*xgf>USr*O
+PiC13 at 3QtLcx5Tk$e6ig^Q?&$C(L>#_u`Q^ng>LwT_jZH~7EyLPjtNA81+)x$F0-AsHU-cqF{E!~uK>
+Sh7a<}GaR)P=wI=6~wwx6ydwDWkDj6jd*_v$~L;83E)|9wxL58ds+595sP-)SmVw4L$JZBeH{bOO;ZE
+#wYdh+ at GcQHZ9uN6&eQ8;b_OLNxp}8#ISbehr3a;-J$~Y_XT0JnKQEgah2s#+0XRLZ-DNf{f<BU&)=)
+Eu%GdV|5?Whv)+o;$d)#_k%m`++;d_iSRK24dj{Z-6W2iux+7hJ&ibH;A#Bh=v*XNX`e4=QV9$C=t|M
+EcYus`NdP{R{4ZLkrSDQ1nsfexZt`XrE-xBrwSB511TeB?xEpvzejxgrG>M#5ax2&n&*U8v8#lG$22y
+^~By({m()LZSrB5W<OeMS6<uO4Cgx<<xkV5zW+%i4>SjGKjKijG?-I?%AW4KP;5;R+29Q*vtZTD%Fwb
+uk^26gq7h1lEI56#HvBGt)q%TavFI=VLDtti*Ch8*Xg^LRaokFy`Aq4j0WV!WndiM%LUj at Pvn*-~^Bb
+5Ay6*IvE5cf;YCF6jfB|VE&WiBWHNy;|l}52ckFNC!w3IlYN+7k;^Jxw;3K9R=XI#a4;>roxu=)ZFu4
+1?^g~*8sULeEfzy;qO&2Ecn3VVS}c6)0~4eWAAsxfQRJa!o0oCg8Jo<kJ2d8++6+?y3MbZu6)*vK^2V
+Z!>*1^H2G(_W0!AHNOrilo>5QdSnm63*@?PX6ZY-DLJ_dzgcwNZ~^ieNoQubsiR~UcXWOuweuH_XgSY
+=I24mzlktLb8-!zs~QVuTgz=F3>T&`%1~3*o?7L%rL|b_p~N4nxg4SoPJkx8e&vFNK;L_nkWl3m&KgV
+Of at WN7Jyr-^V(i%Gm|>RhMY&$>DXV$tJ`b`+m(Q0<lJSvw^wCwZt==<$Zz7=T$QX4glqkA`=3W at GcgV
+FIsd3h7DE!&@hC_3E2~i)IJL<6pzKp@%-x#- at STsDzH+UPEF9B{?Z;OPs1r8*?MM#!+G-oSNDRH_k>|
+1AFEs>d4>v~W`}|-M$uMo#{R_4R^k%5Y9dB9lYT3A!!dx$oTz15A*)Q=-2-DB2mjy(Nl(NHP^#u#%JZ
+=Nk4yiIkKE%A+x?!so-kJy^g5~V$+)0h7a2b8agH&uivLg)*L9BJbJs1lxk~-e(^p3j<cvNT!u9!{xD
+ at g<dz?%3XiRNnm at I&Q-M}QQum~eno4hlpW60xm;xgk?2SFeX%XR(soVKpH)Z)U&!ko!_p<j`@NlrK2R
+HVA at 5!1llkVCBv!6^0W)?uK;pk45$ZU1xMh;4N*uh{kGgJM)%KAvxLdUuNi{IW@^3?bj2(Dv+E-<h}z
+@=a;qwymn(=brBONq>_=`R8YU)^nSRcUr>;_}L&k=##jMg`VAFfv3e~kT9`7G-92ymJXFBWScsXlg`*
+NQ`1&)h`1KDtOwQO(fjWG<=MOMF8+>U2gMpE51<)U>*H~ZMGk*E2-e3AAH*<~ee6f?wp5;mXaoN?1pX
+A#sXpZY3hBQw9Q<Di0Y44#FUdN+Y(O<JE{!QA$22BCqnA0FeZ27rhWPNe#Sedd>V4=VULVEq`k-G&v*
+XK?*MFzlUzBQyQbV^-5H6Lu)MvaNW$0d=zB#=-{eNNVdU40=d%$p!N9=7<K7=xR-B7S$68S+S<}Fei3
+!C~)4vjE!#;c^VA9bckHI**3kMsL at r|49M1B}lxR&+SGtv<oNSgKN{O(J#bfot-+fk}@OV5`cUs*~|U
+9ZcbxTV(QJ2OW*unvw?_w?%VqwUHNho#8H9dw2<v+E6ttA7zP?B*Rlo;N9$4mSYpCcbM;q__o1ou;QB
+-H!&F)78zq at j9A54jwGQo_qGpS!_c{-$lm!DY;*EG41dJBA*vA{4gXX&MESBX(+fCAMZ<Bp!`N)wvmz
+i?bc4f+ZgUB4Mxm_%bL$)3Yqer-+qW44 at t~%{w%mT&=eAWzx)YUFY8Gl+nb6<cY;xCh&hsX1krlQSLQ
+qKq7YW}1@^QT$;==@=pO09}<W{Cwx6g?HclQ$i%ylVt2NK8bsj285Zg4?Iahm!Ys9|d?tLF?)4{$=+g
+WdJXC_O)S=>GHIboo%{i at VI30qD};Tgl4Ey-!V-$e>DToNS|ctrtYcBy^2Su&3*DE?%iYSq?FxQ9foH
+N^Xw#75vjB9Gu6ZD<7k#PKxq=^kCkl)%%#H;(2j?qpQbVIF}{p2qE)$i-nLhO at CV9tlNPi)2nBy;((V
+C at H=nCZQ>%^Hn~3J<Oya)cau5yH99vlO>`DbRD0I)USH7}RzzUEySXyQsrltjx<*f1BTjdk>vgbt0nc
+slnGGsxG5Nl_EImM45p7A5+rdJHeAFplKGXZa3ExLTF#v+zNC~ZKSaqU`v{y8>ss>)Q(i>hrRrNUtec
+G*6vPN~e+4S}zqbtImi$)m#x<}vf(XlJ<80W>hS*^$p^3|*r9o5K)w3P%)smJm3XfKg~A%NE^)(U(Lo
+jsE}wlbkz7-n&|yBQ}VAfqF|Qg~B|Q90le+Jglk5~;thfr4Owp-~Es)jBsobuPrxWj1=3CFrO3OS%cp
+)(3nbZ|peI59W%4?S0hVv}U)~l#iESIa8)Du~Fs5UNxx#AM)FnHfa(nShfXe;4BiUk%JxB9+~~Rp^)0
+$(j{|#&ua)x9&xTvXXM?E{=I_^7<1`h&rKiQ1B3)1)Ld^s(zU?o(=jf3{j<1;?4@*yP6Jqk{{%dd&fP
+e=fI3sW?+C-SZ at Ood@z0iAk4hEkDY1`qe)_K;PA at Jm=63sRh&byt==>K#IDsj;y?ct|uwoc_Lpx{odr
+LmQz^G+p&(}8Hth49$GF;yqFjx%ueT;<k#tgd9-0wlxQ at BAxD7HVDNMvf|&qfc^Rz{6?Iu-kF)8GJQO
+4In++v%`gjurm!?mv!^LpQ2hi)>?J4jPf$Tp=e>!E-;^$BF4Ow%)0&XSQ+^aw=YOMfZb^#_mOC46*m_
+IYMD<?lo>1>AR8)320?-Lx5$b2Zt@<DVXu at a~^&6UD;Q9%}2%g*dQ)$_*4x)6HlGn&Je|1GaOVPqt?X
+tbeNz8h+>R|x=pfnFX9ccc-O at mAN2^;&0V)*nTxsYfme?h0o`x#tX-wgsfDzrGm8ws$&wt~mEa-zva0
+!%Vk%W4S&f%im5${Nc<pLV_c!?$MSAPH;t{S}r?-u(<&Hcfx_H*!0ejm)4YCf5GrAp%7xbVR#&Iy5TV
+P$NJ}&)v;XSa%d$L48Lk=Ij5_FI-JcB8_Rp|6u-_<)B;n_R7KpP)4efS;K(~bH1XLw;3XwU17eUMi}K
+NzEv(=<p=q}JUBK at jc&l)r!pxA3azgIaxRz at c_9lZn8C4KCVwiNw9MFzVWCI#my9sNXo?o!@eHz at 1uq
+`59KN6u~<8O|tK1IR1G}SKa9wf|WVWX-~nn*Qth;^fViNRP=z4ijo&(#YU5^J*E0TP)h>@6aWAK2mlE
+Mt4Q_KPdEDn008q0001Na003}la4%nWWo~3|axZdaadl;LbaO9rbYXOLb6;a`WMy+MaCv=K&2A$%48H
+p*1nj|fkz^D9WU~SG)b>!Ir?$rcf-*zfLT02{Nt47a`V>9%(x=-eDMe}|*-4vAM&u`o;?GC<gSh<eQZ
+%;JW`8fnu)DmAlG$wMY%i{SaAOlj2VUrYur7$7t$iAYA9NFDGl~09^F{nIn+g2;Abv7C>v|QmHLANJ;
+m!5+y;#f}Yl1c-%rBM~Nq!UM{zZr8fTzpB*<c&n`3ka%5L7haJz^@&nv5Qxc^a%Xp=egLXLMQyYh`ES
+E-`oTbp#*ei9Bstv4{340_~GJ#{a78Bun_KNcYyZ@%!PyevJRW{qt9`M0aW&r~qyDX~p+YO#{QJoNi&
+Pk!lPF>vX`-J%iL3#%TI|O$u;1bi-C;j4 at QPSY2<U2D1mDC<P13_FD?FazU%Eh9yw}eu}_;?1Gja{TY
+2k(R%3MTtsXA2BC|&I|@pN!D^4vK`gI2I4kl?_j2?}oQmuhXtjeT#(+y~%?ZrsGzY7(VzQ|<r=_>g(8
+>WYeg?1DQASCa(s?=08z^BrJDRq#LfP^F(uM;#suudlfRu<Jdu*tkhI%ul0<RM5{PkEVZc7`y(NV+$#
+MV<T28nMTk1o=Dg)Ax_QH=AID+8qGzgQ1rA8V_zJ;pCUDiRb%Uohmq9k67?N(3t&K{%izg*IY+bv>o!
+`%dE#;z#GK<GgG*FORB~ssEy3Tu%ONI5DG1MgDsgu}x}zb?n*muOqtNa$%CJSXpzn+ at o$=FqMg%kd#U
+>zbskaa87!_vs)Qa*xvSq&#0Ffe><7uR#uN4REK>^Wc7NarbQ2RL!El+d<LAZ3cQ?m$L-716?6}F<lL
+vv4E&rZcGu~q^#A6D;=i}1a`T2l-htVNL*-ajC&~r1)@t&8r*t>@Uc~wEn|1AFyhb=O$11n458l+cOv
+Gm(ZWH6jf%!o8Sh7ln<3LsUMngSZAlc4sbr at ouGJBvLdyKK)Y0jNEhmh!9Y_?2khSvexNS(wdBkmG$p
+--R&o7#2y(o$8bY14`+N_%cls9GjNc(R!^52IHp+#H!oUd&Q*I@>(e9<C at A?6+)T0E2DQkeO<g(J3d^
+wScvPBckh=e)-%aFL;XmIP9Hj;iUGHtRU~+6x(U5yi;x~s`Xep$Z5wZN;G#SVaBd0s0SP{;3V>K*ZR8
+X#QcqH+PRr#D$?L!jfXUjE5v86uz(DV<bB{`3Wa<(TV_8FzI==@)7lp=aj;_E(y(>(;-P7KCd_swl6=
+O5QPz>_WCwc$<M8z8UNmqjm^OcAY9MZwO=taCWhL_d72Gqpn!LA6-uSixhmSew2_YdO;&JEekM`k#pF
+ at 97hi{qQV<+i2SR!dxWw>RAkK<vF at 1+-YtW;^%x at Vl^vbsB$Tv_G~l(1x{aAj6g4Ie at nBzo;*rBQ=VW
+D?ER+G3ZA`B^!wOq>YbN&|a~52H}MFt$wo8rf;L(+vgN2b{$fw{4lFAC+lebc^KM>0TpYzBT|YdysYc
+cxLeED!hi+m{s_g$qj at T>z at 8^<kXP!_37C8b2gja^yQ(yFsg?ybAI3Pn}5E<UkKL49}aLKkb=7S3&9B
+1UTJ)Z_{H*`{ERq4L;yqY^Xmg2qACQppnb{G1({uDjNS<h0PFA<3BF3>Yw57SC)<2kO#PR+E6g#t#d0
+$HFHlPZ1QY-O00;mH1*=H;me7ZS1ONcZ3jhEj0001RX>c!Jc4cm4Z*nhkWpQ<7b98erb98cbV{~<LWp
+gfYd6ib*Z{s!$e)nHNv^dx)5)XSDigiHIyI}|1-G-sV9(qNr*i53UV!4vsEEu-GeWc_ca?;$kJT#3(e
+k4DBq<jgBs|A$0lJ({qTDM+&$4`>v;^HDP_}rp(Hn+~SrE3k^<nPl at lDrj8z-R<+D;zX>j|P72F#=>F
+ca1iVA}WQYle)G^vNn1Ld8u~|xpf9Vn+gq9Z)NF{Bq^1!7Vd<__qD~^N+(~C&$0+8|JXXQQut9c4V5#
+yPJlifmA`MHB=?0J{h=r-f+&iGl1~VF^@V^aPqu!)YZUIVb{2$EutT at i75!gVpc^#82L!$L#zk>Hi=q
+HwVUGkt-yAQs-k~`ZMGm*hYLC$v{UR&mGsVO$rNf;ilaS9X`9I--GB61EM?=A|0;gexOgsg$Ioxk?>;
+f3df44%z?LZI01W?ZW8;DTHh&=|nxv#D$D6q+hCMW6=XGJmZYUJ=4{|+|0_=gz}N07nD1MDT0Q0m$VS
+%+4PjbQH_exkZx(9D4pV-8f3$Ld_H2XQ1NK9DvP6Ls_YIxyu6l@;8)DwkPo^N`+_B{nX7B<qy=rDW+l
+`^^`t>vU==?(W|Ga?hr(*#ca`y=igqQPPq)Wi?~_C{S<b4S&>znkiUoOym{?iQYb>Tr+8JfpwV7^pRx
+b2{cH(t%r`j2-W(Q3UW{HI=6Sd8+p+<Hl#{~06wP&8(}JiHZV%QTfO&^2o_L_9m1Z(s*T*pn&f{VRcR
+W=el~)FD9Io;Z8-V7Z7SiACBRiZw?avG06*165=SB2I6SQ64fUlC!uC63D at YCAml6FSuz>7*sCb2BBP
+jw&psg!h%X&zxA9Z>P%cZQPTP`z;YCQ)^P27CaHSv6P^|TjeW4rypAGXPtzDQC+w0a`F$h8OIxQsJ8`
+-psU1AqQCg$$Hrd>X|~q9keVcua;oiHdpXYLwn3{6-D*Q_GC7 at +&{PYvMs^{nR$Z(5iKzPu^0{5)dka
+V0)o7EecvQ-o%H=UnAjxjC=NZHnJ$KIQz|M_EFlMR?p!+eES$<Rj9s#MW<(hVievx9mHuSnP;viuKzK
+I9gQ<qVV2}1;oLu at B{nHrVSP3Ron;X~<QJ{=V_y>P2fl)$tr_~cmu~AXprP?$SN2Mei<<~C^A5f``a@
+L^+p~!UQ*dH6H96v<%WN>2aDvZ6=QN4SMAgycNZVg1nLnMw<i?y_*!{;Fo>}7|#9)rf9t~ti$|voHn;
+ffX8t(jBnp`02a7-!R)}fhk?`D3bS3?>{hk+E1&>VPK at Jp05U2x`#ul_UQd9BocRinY?yyR&^XJZ+Cj
+<f!a>Vsb%J`P)ruT1=idLzuCTQL3Wk$;IBgHM($-yD9)9<Nq^rQG=Q at t~!vAR7~yd(&AyVE*?a)9<?+
+Kc{c(=k$jZ-as}4{vR9b5`IS>H at Xnl^tEtXqub4vZbm~Fht**PTE-Hsa{TVZ<t8Vr`<^YC(&aLzm|=l
+>YQ}8%d9?LA&|?C>4%s=)l79eDO9KQH0000800{-FNUZ|gF#H?<0Mu3h0384T0B~t=FJE?LZe(wAFLG
+sZb!BsOb1!vtX>4;YaCy}{{de28wZHqXz~p755}CH;G%r=6bZO$O-qNH?>~8Nl8AFkfgqR{Vg7imv+P
+{7G10X?)a?<s^cg}K7YYGG|E-o(aH at GYI?(T^=PgJ&;h^n0LJ;ausoxxzRQ^<c-QkOcYN|oxJUt0fmc
+21W{i&dUfsTAuXzf_6T0=ug6M$D@$E>)gsQ7)rWM1>TUmWjAh<x*whjRCz=zl~CzW0!fAig{iLd0omP
+i&8)?)75H?zyii=N3GU*QHpq>>c>2hv2K2)spRQxlgjN=Ubhv}KIuHZkY)X=EULKvbrlsEP)G0V%!_;
+_0%6+2 at KP2U<_N>in^+dGGH#3W)f!f4-mIfS%Wzqi>o8Rs7Oq9eZTK@>$|#XV?@0fjRbI-GsEU*ZjKu
+7wlzN27j>PK%#>wQlic9E{nZ8Pg>znatNA&%hRVpo27Si~IEMW()6#~SEn{alsj<lxvs*Gpc0w>b2kp
+)m_SR<Za03?gK-Rfu5{O1U!;~pQQBE%740%)7DO!}&5hCc)NCz+O+R;9X>&zrvTI+knZG1K=XyNptmo
+V|HD5-(ILzXz`P8*ksvPPnY}5(qL+qYD5(75*k>!=0U1$ER<eg)dHC9>2vtUXaPMh`o{ULVkii&yQa`
+J$rc?K6 at H|d-m%2%j58er>EaRciQ>jY6+X+L%*Fw&IPV6Eb~y~Y*{S*WH=#G0xQ3fuvWl7%7n at czuSH
+^5LOozH=<f6Q7HprejKXiVj1bEEDJvY%v32?+B0DBUjn!!0W~8Y*i_I|A~9I$YAuT}m6 at NLab;dcDYh
+)iB at 92H#<(g9nU&!>NAl+xz38HlBXMwK7`jMw0P<WsSf-uf at bZ?Sc>s at FMgr@?rdQG(zAI#~2*kH|LQ
+Y--zr7^}J$W72hg*>hEKGm64c|F%SC+R>E^a2R6T)2xdwztSu<w|4K_~@hAl%l-yfS$WI}#z0+i>t4H
+Um>F+poK%(!pGpQR(xXLpV{PR-fcfYtXLvF1iFluuP at _07xVfcyOgM2|`=a0t5pdi7P2G34P1F0|><P
+Too%8^ChYT8g~VvEnmwFhE!`{ZZT8D$)GP}&;kLJ^=6*P@)En{0rr?|$Qmn!1AOrPURgA-2O77kSxiE
+!0X$3K<UK<vR566 at pdXaceLx^269O;`Kw^q~UQ=iymid(gRWPEaE#QbIh}BHW%n}BcTY{P+nh0M7G9d
+MsS0#Z$s%!(7MhhAa-Ej0U5Uh=(8`!Z3w~1v+oWuEz%WZJlL<vBE*5X<m1qUNxm=o|yQ@|ah$SS`C)V
+JXURK=z0*4l!>uwQv}WpwxbuvgTSGEHwic|Afa4{+4x3G`pTJuZqIHt*y$Jq#xu{wBJ{K+I*dhHb-z>
+3jtYE>)2LH<T5fS=7W;yhM!-;y<g|qXP|KMWElJG`$g#&}$hh5c$L%U_Hf!T9-h=R9#3=>|m79mLQ*Y
+;bd at TK}pcTO!CYt#YL81!Q2ruk709#c;%o|;Be6q|0D}!jiduFm1qu`osXAQc7gqI7T~7fbJTTZP)pm
+aqH7<xs3oKJHXv9{31XLZY#3GL(g)LHB#KCZbtG|X^z;Q7iE>kW;(BYgEvq#U69Lc}kHiA3h79c(L1q
+I@&}h;Y^E4f-ML|DC;uZe+0j(fnl17*^x?rcF?0uDIj+~{lfb8N}6dlpsWnBE1<}r(L1PV6J8a4~0bm
+4oy?EiG|vljr|70UPFur<~&^k3u+p|}Znw+ARO_B>K4Gwtucd;R?}@@SR8evs(wvI;{&d-1AL360f(c
+q>7=fmJ)%-=9?=q}Mkf#<CzU7W+!;N{$Z>AKVvz=z)ZzGz?pS;Hze6^zL8C49L1Hq$)q{Tc%_<djIg@
+{RbOhnA>)`YNc5(7}wed$__Wl(%M1jve98y$mpVhy(^y1kTYadz!_Gg2*7<&8qXjwKyz5&odX=Giu}<
+=po at 5+010d2;{h1D6Ql967R;B`Y6jj%&9Q*EQ2{KMKB##R1Ykyjbp7x_Bq%F{BSm(N<_8}Af%Xc-{TP
+JFQh^Lha!ISP!oSKC!U3 at a8WoOUvqZgyHn7<N>zOz4+@&jRWfUJ|=+&XVGuS=`;KjjAz8C3ODX-!1We
+&P{3iJugVrhhL#|_U9-ZzxmI9DuHU_AZxn_U?OC at 4S{sW<|`t9_hj*yST0-glx{0+H4R-dVt5-zR(RD
+layV4Rr`{hy8;FEMQJnoj4qB;cMZWo(91CksUgIzp2nVqH4QhJF%>brdmX<DVjPYY6VHoHQG;FvxkMp
+4-kqHYY(B)8g*b^Ne}FVj}>f|z5rfjx|1-jGB67?pb1+Rs}l8}z955=Wjs%;H*7;!0c>soz2%*UgSlQ
+GXA3l6mr;BHf3*Q;X>&qC-O%MJ*b{12m9k47GPsRK0+FLbGNq%H^z+%rM*Ex==;Q+W)Tt&3cC_{(s~#
+8yCK#z497-LgC_>qynSBJC1{=Z0L<uppHjhs|K>)jF3EM`l(@h<)6&dMwQ{g at KHiS04-aF*?Ph8u{aF
+~^p2$xoh|FdeDeDn)>6JDYc2T|&ibL3D09BMQ-d7*?*iMDfzhKD3!P?Dx019A<{J)AhyEx>mKqw#bDa
+mIXNMxa-)ISMVUk;OgA2u3Reg6`jl*<vzj1jCajPkL5!?tAbXJ$z{LhR&ICVBXTJAF9Xu<H)cdk!q}*
+*_T at 71$tVr%tJvWMT%jxCBFC!@Sg~m3FGqfuR+*yA#4gyxuKT~SsP=fEzD`uNca>tGBK!Go`Zx}Svho
+Bi%xa3Xy1bk#r<ThWVpqN58}J=9@%f&Yey~Ibusf9-YoO~Kh8XHdN<rBD3FH-o)Ev4_qy0_=c(?STfu
+DOhF=Bbc7FX8TNnH%@>%cPP8d1(9=tykx6Qn~tSSHPjkP%(3GBKnUZAnI0)wSms*8O8N){KNWVH}}9T
+|62?l2$*--r%(S)5coO{E1zJ<yAs0le9bc=O_!7#}=%2=+NGLyQAP5S&T?3|3E-Vmy{6f#t4N(Vmv at E
+5bv-Fe#Wx+DxW$1;;}Jv$N~8<asITpt3lvfZ7y#PWG6Yz%vj}+f6V_m9loi;6tSF2+_>cH_Nj<?l0W_
+pwKT3Y;EEm1Y)I<B$Y7oulx$P*M=y->d3)S0?Uq^?K#-4*2u9`C{dA`4q&ofX!g7(n7o*LVA6x at Y$*S
+M4IAPk+HOVx7LSpEs1U0vEfsp7rCK2}AZ=n$sKN%XF)sqgfW%AzC>k_Qm(p at feN-ZWte8Y#%1`1H43f
+zQB=rX)Q1Ae6a)wvt;5&`Pz)+B&4a|u?=eH;g+}ED5n@@8QgLPMexD*VIeGA;=76u|(z^0ARf2g;?5G
+<)y>zY<J0b~|AL9SZyoD*6e?JhCBk)b at 2#m9sRGHK7<k}N<)pf?=Aa~5pq%iy*ke{3dITF1toc<6mT0
+kdd2<>$S_3H|T}Ufa|pxKo>1F(5;Z5!1-S37A(yN46nu0Y!`w>M?W$1Hb-_GJ*06pO*=snLy5u3~Q|;
+ReXt at s7**Xq?fXwm=aPJ<BEd4d(w>#KVr^d6Ekm~=hFdk^jzuX0BzS|I>0cQOjFC8q>ygbm>WUvr-Tr
+3Wl_nxgQh6CU*|OpU;7?FM7B0Cy&-4~oEF>aiBbLWp>I5PkT!-a94P`ip at z4y&JU=XHcwn at b*Ms3%r-
+P>2<rY*&zlM9x}U%Nyx~m$H|Gr at -+ta`?*8-k)6f6rdGn at qm>&mrLm>$M9ACV*u{8HRY73QBO(T0kRt
+w`e6BK}HMy at w)O%Qw3`N!6?ZXxy_b{^Y%+RqW8_tqfzUp(&H5up^Xbvj$o(E at huEHetT<}fx at 1ZF-lc
+O9iD9Sk#V&hcRw82yAtGMAb*&+s9J0#bt-G8Q<}9DJS?`IW}d6eaadtefC)Dh1ib4C-Z7gzcisJ`rKJ
+#j->_%lmTB+TYFX-Q|>z;+1T!VnoZBt80#NKtG+^#FliRpuEIvi!{Q*91YBJRSV7A$oX98fe{aI^oo{
+OzKd!0Su_K~gR%)Z$|Q$&EXrW3PL54AM6^Q7q8-8mz#Na^oD0o6cs6+l!tWgj#h|<{2MEiuNWbmM?Cb
+^_DXPhYikhGXc~47BOrYtArr8oUE-n$_G|w-{cygdb;_THkfpG;&jb&^;nKOZa7z>;7VrGRUpV^d~0}
+Gt9G>T=D9G}TFzY=-o%tHA!GF0bt^!CUnYbTa=O>Ts#mgLn8XsSWtEv;_Dx$8Ew;>;Nj$L%^)vWW=|>
+u at PrkisO~Qt%fkD!zOFtB387Fbcrt)MBK~NT)H!XWqd-uP;n&j;|qw&mBiNz#F=)18lUK)g9^<Bv4GD
+uEX%-k3B^Rs1Wyglbl)vQd5zrizeEqIQ}?kURl2zC at Zf^<P~9yLl8=Ho{g!2uSmbLmZ{YYzrphb;A_e
+_{m=P1up-#}G^=*#;EXZUh>|3<B^oY0MsD9e;xwx?6zQYZZNvepfX69|hA7B`L2E#R!bD*7!<chCk9I
+&1`#O8lrtHUYO_WyEjqk3}bPc%J1V}J$u~7WcNz;*UjUJw5B+4WE=I<uC>i$eD4vd=K#y07Yir-Dx^=
+IS7VWT#@wqn>;D&U=DO^%bY+uK*tO?U_51 at K{$;P5DRr!r2)!Cr$C4Pu3yJ=Twj(s4y<9HkV8&v(b;2
+M+?_qegXLS&W5VlCzs<Y3)<yAnbyn=OoadW1K3cNlo6|L>*8Zqqkb1WG^HYkb#u(3-2*#swlYojp;Ex
+AH4J4-}Qrg-wg5b$$O9(SW=*;FzkePeO*M0RdgFLrj!Bps0MyJ*y~l=1M?q`-+cpb0IJ=N9vs`j6~9?
+-FjwFzr)kZ8;$BO9)=T+ZM at DX=*RY52nOoRU(Z2cng?#_r>FE#RJGOD~P`5eXz?!%+w}<olB`6^rqAL
+X?HjuEK$@grj2flNnUZ{@TVYkHR+-?*zidI-g7cW#`>KfVdcl$LHd1k*n6yrR2V=it!ue-j-dO)@I2j
+08EzyXDoB?RYI%)OJhulF84{OaqyL(f*dm0<9J=%XwnY_(qJAU;Er;PffKSz>aiXtwe#jS)Ns1;6dpD
+#t5=dSf;sovx>32e%dcjgoNgu}^0a44>yNNQPsbEAFVuz<<PeT$GyEeuKl%Hx(0}u?vhfK+2S>JNi&5
+F0pQqq1jX{b#FOS#bqDz#pTX65Hk-2fy$zEiVl69;Bo=gKzO4Nw@{}lmfC0OKN9rQRFO2>b3&^CI|@7
++?m{sS>+#lUw{@=Ts>Z7&7TjRVW2*QwskAOO+<XrGCfN603xg(_PVc6zmyW<Nyv6dua-3iESFsrN1g@
+afL$fHR%`#xxqN13HHwL0(YQd~^%HD!uVPRq_N+u?%aTr*w!Scx!64YTFh<SvX5Ya$$*c#&4SWi;>0X
+x4z5%&`6KT!{tNZ`h<;0PtX*#+X?e1_t+7 at 6LpZ;HTboLT_cj<?js8Mz2-4FJr<qk7;*DZv?UNKZLYX
+N5M-*+4R at ePLP0R2aJm-Hyyi^b0V9+9^=0gO`o9SXdNp!O(h@*?7A+dvoGCtv>qkM_)gDFx)wN_2&5P
+ at tYrypNDUcPl5J8?oSdJuw=F!JpK0B^WztP`tIb<e|h=+tJgpL_08MUvmgKV_y7K%Xcog+Uo6$fi*%L
+c>wgxytS+yvZ$9xUxF-e&hvTFBUp at G*hhOgn;V%PgPuRdtgP~s)s*wz5*`CyKv_{wa2IE38a*AoPo-p
+M at B3fE=)1n4g8-~1OQzHZ?<PudGhc2k&NWejpizwxKf;`)M`u5q$37g+0m6o*aY|J2Os#j7r@^;73GY
+SzaqHH1k!x4#D8sMhxmK-uJ^|^X~egF=zt7dS-a)>b;ibjiNpmdaG)yf}sxv{5=4y%3QW#NNg<S$3!@
+IimMoRj0+0KtjH=1ze>FwfhzVj{dd+8c;FV(HXvndQVtjy9WZPHBmO$OGflv>8v{x3S+S1MiH6op8qQ
+Y#(>~7;8y+!N*+L4K&<~5}dfVP;It-BRPfVl)wOY*2ylc5I3=EDz%Zi-4T8jd9}dki#;Lx3@^TkF}ao
+-IjJiypP<rKf=Y?LjFhKV8l?a<aJH+>x;mOmiq3~-D`EMA-|hbX&L2E~c=z6DfAVPh%^%O-|I+D>!Tk
+1!{sAqP+!ZDg%L=7z%Opp6HUmyET;`0iXVVp4NlwN)_o|Pv8y?J>!;MPwjyLQ|OB(ENkwYU|_jH3+El
+J!Q4|l<TlbpB3u$Y0~-ejsuPQk?2NGlr<hK-~UY&%{DyNpTJnY5r1T#L;E6K~;!=6VA3#o}q^4S56lq
+aAdGMbu2e;azzn3 at zgbquX3*N at s<V- at z8D6{<@ihdqW(c&We|GL>P?9)<{gwH{$%TytQ04hD$k{7Q?P
+yuu~LONmzC94(lWA1L;Th6M#I4OCe13?2#8F$aq$2478SG)j1`fol)H9tVdH9tMZOA<KGMwptJN$M at T
+!#e$&(!<WK2IA|c%A^SCw1M5BMnpeQJPQEvN>5a at Cyg&h*5Zsas=rp9dP8<o1I25=;k<NkNR_E*+wuY
+uvq%Xb{dXksG0ihX1dIDh&hpkD8v|k9(;7H at eA1pqtn1vxg{gTw1Z|7;6ZKSr1BfV;K%`;BV;>{0OI$
+4za*Vls0VPuf&>+8VzugxE at l{5}GZ+yRDKD*!Juf7WGe+R8;%`O~V&&@ya58)q*$B)I)SnLU2+MYOc7
+w^(5EAz-VL}ijbIq`UN>u8IDL$kiTADR<noHS?~_E?h}o6+=krIqO>dre1TZx>_AKG(>QoC{->6c)JI
+w`NOzlypIeGBtc=O(7_bvYVo?sxhQnmf|uhR5VMalhbO$25Yv;n8}e<4sWsU4f7)-cVILJ<@|87VtAV
+g)S`-On9)R!#UUycdVT`C{v~5KP~Ns{J%}G{BHq85y&KxLd%j at 5*#k7UU_)~^mJ0IQ=g&ItpeQJVcO|
+X!$U}u0inIa^)3!p;zhgd_iZoiyl1N-kuohQlm#WA!3f#d#!g}mZV^D$1Rn+$r!PQdWb{M9!$kc3x`C
+GovVXGMNUJ!S-=}pk1FAc0K30f1eW1URNEu(B}keKS{)znSXW<kDZTN~lb7h77F8%#036O80R9aF+;_
+V((o&@3q9r63*c_A{lOwnN*R0K+k{$C9VVy25g4N+YtQbq5dY#T)(aEVX?Dk*+78(?bu=32*Xp0<&`7
+(DL*M4m93tgZ?!n$7vu9+q&xDO}tt$8FF<cWGx!)Kg5WybE~zB)u!v9x+2aF>$x#w`fsspJ~Oa;+-%#
+XXVOQ`Uc?QVU|%(E9pB-g1J^^pPPcv}IdA|6g3BJ5%`i`o-!53V2$3CIU%|VIvT_SRwAI#YWB%7df$#
+R=OhNCsmSAE)T)!mrjmC&Fv!mvtiY9S_H(8`}8y8n$MUpg9$@&Sq25)9n8=^7 at +HU|fb^%rdVAMHLSh
+p~%7K<BP!t1x<??@BA5oJD#pba!QY372_ICwzRBGZ;}!^%sf4BjFO#B20)Vxl#z5HCm0Rcrt`xBWprT
+~dHA!@>ge6(<fn1ZH-Lt17Od8@|C=$V(Ze1|B$6s#Gf^7M5b9a%C!)TUyGHVA`UH&y3ZwEc`koRa=IO
+NXgFCk{X<&8G(bjc|$=p+uqivPBMyALce}`V++(1lQ%ZKF=t>oFmMfz&!{{H4^siwt5us%Nz`9J&=Sk
+2jb@<BV5WzYWT7rtTSyGex3i_7&M0fvcxwnPrFH-u-cLBlS74Ob))zUUbho#ebt0a+xiz4S2F<c!C2b
+!m;*`^c(%c{gCrP&hVCEQ4T`g~D!+Ord$K3mThT8UhfRj)m$VS at 8s+zhKu1#<I+HNJ<1vOM&#yxMczw
+h1Kn5)L3HV^t|z6ErvG=TbBpGD52DlJ32UK&OVtO}s&v;kL*?%BZqpoddUp1;0{VXvAQn1ZgX63m)$Z
+G`HM-oK+gaYvXNQqI>|h8 at go5Z#u_F@&D)jQBs*6!Fer>b<8pwKwToqmvl$p2jE=_Kr;~8*gTS?&lDi
+?=3#5HU0)5DM%l0xH%L at +}*$HIWNG`%eXifUtUPL-UDTQDNUcB?IPVwYzT7jLU)UUH{=2h!E*oX!lsP
+toi`#1KTYrw-cQ71zUCVQ!9IAKun`~Ea`EI5P%)iS!y_u>oen^>F62JG9gNH%8inZqcM$%5v at xVfB+&
+yc#7U$Wt16^a3WhGlJ8$4M1w*i8iayKQ+!A*md!}0SwoeDJbh4>!=xzZ#YS)y0#&_BPgSKB|-4Us$;w
+KOK!FIy`O`_X-{Df9A{JDLPoaI-YIB$^pl2Eu){yk*?O`+_s4vKefL)+Dy!z5-6t-Tr61+l$v+a#$IN
+%*6Cl?Gl at O6OIDIVH?WJi_{IYx5V<lv9Jez-%a*BVb5a3xh9me$*fjs&c*)W(Wm~?XC|FJabRFzI9CI
+hE2o4V9tcNccmEs7F98%yJE~uM^4jG>k_G*+fSl0GTXK*{`~g!E3k;jM4`G$Q^g7Pw3)UE`I7a7Up1+
+%vB+9kGSYaTR#3FSN=-zA6`8FpR|Vd1k2u0eaq`L-th=3Wzu4sm;%QpX3Nqu{*WZs=agcy!i%D~B>Qv
+y;&L{WZ*CvH2TE%J|E?j`|;o0enqjC81cqE!eX!!Pc)6nqni)2S*PcV+q(Oxu4+H;&wj;P$XJ<Y>@fD
+iYyT6kT6Bk}!P*n=BD*vF)CUKJpYl3{nE@%x?y9X{wR$TV(U)Zv4zi^6 at Qox#8(O=_Y*#8@>xPPeHz*
+s at Zux3?3maTbOvn;P~VPYAa|&6g&RiiEGu!K=PVi&@g%OnN<#4>v&Xig8BYmJs*R>HY%9sRMaeJXZ+?
+><wRz1?S~}=FnHrG2WxpV>i9hrNmJ$C5{?wk0x8OIvQ_X at 0X6hbybnGs-toLs$3b#m0D~CfS3hA8nUe
+xs(FZVlJYt!CLgZMo5m{m6J=&1au>;Y#FPsK_-+U%x_}oM^LS(@aFROwh6TcNds(2a7O?`ubTdM3iGs
+TRcpzW91tf|^wQ_AdJE;xVa7j6<!jS-TvH%4)$09$@%ee-3Yqi#gwjFGNd#2(GOfW^d91&NNuTPiw;5
+^fJ4Q-gL{?tcgV42946^P=g)_}duOM2S4C0L%c7e^Jy-b$NEfC!+XObm>nVLN{=WZq!OI3&*J8c6X`a
+H9#Gm8Pj-IG0|e`jKpI$jvZL^Nl~>|5dbZRYu}h9=J*c;I&;*%UtNCahR?7>IUi}ECdBc$V$9EZR#A|
+3upXIA9L*#jc&5>?T0o3ryv0h+1 at Xxv@9d~AjMSJ#HY^#0}FXre?!r}u~QA(K7acY5~HRpWw<$)$ML@
+w;qhH_kv)sh at d()os;l1Wf>>*vv;)wVw8nMfDlojAzKDv1zNCP$PO8|nX`QHXu$cT54UO0kFmP<Rmr$
+~e45qe>kXNa~k1m!GZ-R>gQ&QbK0;8N}L<d3}bH;oIq|C9t3K{xJ>CKBh&RuLv2j_d04s|h3J2m+A_{
+bdAT;Fuk6YeN${PmPUZG<FS<4kd5r|8LkP@}T<3xEaT4;&c#O{*;%h-ZU~-1t)>R-D;eH=QGczIY4HZ
+xNEUV8qC|x%|9EgM9c+0;f&`80l3QN92#>U7gq0kp5l41P5%m^Dj_K0|XQR000O82?eW2o;WAPxdH$H
+XaxWODF6TfaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1z?CX>MtBUtcb8d4*J6Yui8&e7|3 at 1cF;
+|WJm}FLmvulA#a5i`cR5>l2+C=r(5NAFOK``yQdGkNn2`ctdn+UXLiP3tybneR?Y^np#hQ(BQ%aBx+;
+mIz;Ka5l|tk30wO*nWZ at M&VrVF00}T#(iJ^AL>x^L{9-<Qj>pi%BpePJNkQhPHVehH3UI8MH at YF(Crs
+%z^Zpw0GQI>UQV}nwbh54dAL!`=M4+kfmf;a|!OJ at ZF2~hCI6E$$c=-cz;ju_2zmZ~hH#O7+SQI1ekg
+Fs2x<?nW+IqrZ|X-z>dyh@<Ln7g2pY at IigMQJ6U=qd8K6ME}{=tp&G%iwK|jVa58XEE6N-tLiA^C-(|
+$KKVtnhTaxK~GJ}J0E49)u0lJ5o<A10T+-rqy@?Vb>d{&0VBerjYk*u-~v1(>zzu?>&?b=wgE;p0nNg
+`fR7XbpKOLwD}j%_ci|ph>Fw-CKD?gz<jZGlX1Z)tG{LA=$Lb!MR3o1 at q?_0)QYJ;!kKCs#52DQ0z%F
+Rhk&>Ev(1DL=<Uk8>7E$t%i}_qGVL)KpBfR@`HyPWwwpCf-1g(~Dx5j|J{#br72QTL-M`=D9^EHFd8P
+z;q7q`WAS+379W6|hn{^jg+jvmk<K=x1d(6}oz<>874tX=DBs5C%%I2<VX1}aq0yrmIKQ{aN at Q@;jvC
+*=61{Ur0ykw at d06E1YmzsJ@lFL_6~vUQPVGNFLah^7-6c)Qu`RaL5rn)=N>hJeyVbn<hv;B1EE{pR}S
+%`LQQ`pI7&D2%4%=Vq=h%u4?}OdF|(-L6fNBJOr`RKZqEJ_+uovzc$JgT_caZbv`H-ePH4mXA+04gz=
+M-48KRoT^`x<y*f6;@j%-WakPll~T}L>~`Pb?b+6UOrHO4{x^9k``hIC*~`gG%P&w%0|XQR000O82?e
+W2acoNbjRF7w4+Q`KF#rGnaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT40DX>MtBUt
+cb8d6iSaZks?5z4H~L_z)veYA5QYZYp61C#a5X8M~2B)&fJ>cD-xuE_V6*4j7VDNu+j8Ff;G*=FQOSy
+&W(P at 1i-(qDeT9Lm1B%lW*`&Z_nw$y5I%`Pc+jN&||I<!KmDxn8p!Qs)UqD(3o*!HBU;5z%4MDeN>w8
+dzJCLs#B%RP=hTHEb6 at hl{YVU^9{_<7^>Z&M9l;&%S7;$z%!nrGziSVq0X5CGf1iiH?4)ltq_<hqGy&
+XIRfNVufKgnZ72g*{;>O6%jkj9&}X*RuR$GZpi81F5RBAyNZ)zOg6Byy;Ig4D)Pcq-h>!+7aUmc<C=K
+SN at Q8tW;W1j at FE(ok=396SR;ysX-j1l(7K*BP#4{7$9|R|2no2WiD-uow58-NZPl#X~&7$?TRzHo_^D
+vHKx>!K~%V4#RCYxEXg5_qlT*RRd5F>UL*Ji$D@{`3mQSKEvnW1G|nDgjcTCX92B7=e*k=C3dKaxBKs
+XA2uwL_ugk7iziJR3R!o`Y1 at gOlcTJ665kF0nlC*Mmr=z6YO%)Wqa3K`V#}KIJ)4PlZz2gRwHUZhZ&{
+JGdGS2OoylgCW2srp$W*;r#X=|BRmF>~`&y>~?Si7gzqZKe%vmt at dClQ!i3!+g;L*%Un5*lVM&vjH&I
+jahbcH9iSi!`u&%k at CEwU9t`T6q$4w28p~vg4alQkiKi+<*QG;f2)g*2<m=5#7BcxYQ&L$puG{LULo-
+g>`p!g&q1H<GFT>vl(%US(X$O`3q=eTnvQA8!y>y+1s`0_^T%ev>858H(Th%4`_NwA<y3B2x>AUA{U!
+y_$^p+!LXA|2*DwM&ttkITQo-w7c&L2=q0|XQR000O82?eW2ah$&~caZ=9qCx=xF#rGnaA|NaUv_0~W
+N&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT49QXEkPWWpOTWd6d0fuVuH9VEKN3#Q}`LxPY{L_9ht-
+yKAZe*=1J?<FXA|Mx*AXke1TrM9Z1#RH_X3ub)_pJEsO{H!$Oe^wqtG+}va^K2`*Ie)OZi{lCZ0e(_I
+V{QB{$FMj at uU;pkGkDvYOH$VSBAODNb{^;dLkFWmp=JA^kZ~yJ>yVu`7e*XTOH;=d9KmPgs|9JcDx3B
+xZ|NQ44-o5?$^~d)g9$$a^_RYJGkFWbPpS^r)`o+7qAK!M%e|+=rZ at zv1-J1`O_kVnR{2P7t=YRd?<M
+&^`{_f5HtJ}Bl-+kZz`Qf|wAN-H*`0?BKANKFR{_y7Y$2Z?R{_t0O{GT87`U8D^_t$>ZpFTc*{PVwi9
+M at Id#ozq+XOGXn{r2%CpZ)&v<(u!{eE9b_-|RQ}`TKVtKfL|J5B-`y{{HX&Q~&1i_~+Lj{@dfXZ@>Mw
+4{!hc_{pP3`0?@a{o}WP{rIQ%@9y{SsrvTqA3nVP at K<K-k00K=d3^u=k01Zi1N-~OU*G at m`1<v`$A>r
+Hy#0Q6-xKli@%r62KYjn9+yD9fH*f#=SAO-wyKnk+81=_DAO8IPr#bwmU;qB`t2f{GNFV?7=G~hQ{Wi
+b-;Sb-w{kj|f>h0HW-hKb(@%sD6cl_ at AKmEr{{gQ$F?jFeFm+!lKXZP<PZ{GIbdG^1*`S5-J=5c;@e0
+tj5<Euxn^^aeFWc<CF-_h{zdeDD;eA}z>;Zw`c{^k_?$D4lhc>B(7|I~BeKXixvqJL?zdi>$d<A?9x{
+PBlxUv&@t*~fqV;;aAio8N!+`25%Z^7yZxfBEI-zy9i9{=PrkGu?mf_1itY{quJ%g5Ny)tv<Yd_wlbi
+ at b2KBfAQtd|4X;{{AXYM>Wi=bh0*`=i?4qDi{Jh3 at yp+Q`S|?t+t0uJ>WiQM{#T!W`S|Vczx?fQe)o&
+d9*^I>dGl$Cnasa6$^Xw3|FOIL^ZTC3Z{B=-{r21M_pAR)FYos~z;C~K{OR?-zv*TE`pw&xsK at KxBH#
+V>|JNFR`~Ka(`M%xcKPL3=A8-Hoc=!I}tH)nHylvTO>HD8nw|n`I^?lVs|Mh3D9_#22y?*!KzU?LWT{
+r*b+dp>Kzx?+7`wy=kKYRcEM?U(`pLg5mc^uE59OHRB9>4!x|K at -7zsE0r{g3}2mCBD^y5pa{{kO%2`
+0qcwdG~co<?BCu%UD}Lzk2=lFR$PI at 2zBdBfS35L;UTB_kVuR_<JAz at b2rk-}VRpk3W6<_}zc{=}-Ui
+m%n`W=9?cr`}mjtRL4*M+)Y0G^glcQ$61fZPk!>BAJ5O`dB)MdI#+!9)yi7 at Y8~gNU*+7tI-cjee^uA
+0NyF!?`&U=48b08QZ{DCjK1np=`;uvX{KKcte){9%C-;wk_xOkNGj-3GJ;wKc{u}Myb;BOcPk+4T^Y}
+^s^mqU8{OowHy^;R<UF*ZY`MB4AU>BV0e?z49px(dhZTkI3Hq)Pf`1((eKebX*fwa2$@*lr^dHLBF|F
+r(~tAF|J7eD{}SO5BtU;OT?FTeQN at 4x!uH^2VZFF)`9+pn;Cp??0S*B=n97OMaLn-6Lsmuh$L`Okj!i
++}yy7ys8U82ZTQj(c5c^VR$RXz>q^AHTH1JYF63?0?oXUiEO-t7DGiRjcHB)qlPEpE~&|UajY|e|Kc|
+=bq=Q5!KCl at m`&E(&Bi&dZ2=jco}ufZZyWLac2M23*G;j{e;JyuUdNf>(MQ*+5a4sua1Mi#=2gOEBWv
+luf|-*t25Tv{f_hHU|9Wue)?F?SCer(W<U5mkM-&?_|J9qI7UD4xPr$#it+N(s#o3PlNY)AujAbP&gy
+xH(ZBX at M?ZZWJ)&@w+5MhpfAr|F^#jMNbMn_&ez- at ndeX-8I{4gVGVXq3zVsY9d4tz|GV;+a_xoM1&h
+*8{>P8VgqS+&_{>Y=ZHZ#|Yah!wUoILBEhkCyBYxK-K7q9zdJ@|=d^{0B!$2_|?X5=`T{iidXtjJ`%J
++*sAn4sV%`n}?%oA+QA@^JM!_dl#SLUHkaF&F>zU*m~99IjD6dJH;G7GwW`|Ew(!{R%HVz5O5OC?32J
+whN)?7rI6-#q&B@=N?D)*pAur(7&5>-XED0DU6=4tLLlN_t^cOy>3VLub)?oj<b3&{AW+-QPcN(vg}V
+<@*@5AJ*s{}b#IUC|LhO at 4oupo@y_}3xUR)ZCU4)J_b%!__|NE$`u&PU>5-3qn at 2K;gSlBf`{zhr?o!
+y8o0c2<jps{GE%MM3dS*}FF?vQG5sF6-|6**<t9x6#crRQF+vL3vqtya?(5#>D at VA`x#(6n<mm{3ByX
+=m7{gEGbbc;rh2!Va_A_qb=`U#Iw$jD+ at T3UJv`g4=Ly3TvN*ZI;i=+vSWT7Fub*(Tk2cf=C2?}L7;r
+TaLqo~7~ZL60qG$%h&K>FAdIp3h#lWNgzBF@)%0^=$FZy^P1v^V=(vG~y%E4aUq>_ffsRy=hS#z1%I~
+vHLyeOTRe%o;|C1_B)^b`2(5mWoOXz7VfCt$NkrX0k-V*k3DD>YVewMxaqf?o%8w9 at 6w{nPVLVR=B*d
+%=r!sAD(Zt3=XX7|Jyf<Z;|;c7%Q(%Dy?)kFXjb}N at zTm-&~FbbFGM%`!ECkObG?>}eY||}lgG?~rs$
+uFp&o1<=dfDNC$eY1+52s>ArtL%v8G2Lm%TjwEQI*t{aR24lid3UIq%=~Clvc)@%lwp_uFfJ_gnSSAH
+YhukI+C at x&741-BGVQf^yIjCBbeSY^w+s6pa!{yu0Q+_dJYeuUqs0`wduF-ftexG at pu-CtS<}lRS9wr
++py0Pc%h86%&mp at HTn(dp=vAoott$yc7E}Sgn4c9+ryPE^8tq{g at VZ*Rpz-^|G`8`d-Cyquh_Z-^PfS
+9+skuSwK6 at e!pH=4TSriokwq&wtjvw(->6s<fET|U6_wkbGP@~SZ9xS at M{ck at 6uKSr_-YHQFl6xsKbS
+FpLCgiq<>n|eW8VE;d$QsxZjugb;WxDDtpRSKcPjT2Ys~8Xw|zIIsGE02ljRKjI=_+X!Q#Ae-8ffS$D
+tfgE7nfIEGcH$_ItVgJ+=&0?UjMPt-*g&tk8%C^I7$W?XgE1Iya|&gZlBy84<C&7Res5&exo|M5{we6
+dixQVS5`e>!uH65&Au^_2Fzo?EX^{F3Nl^$Y3XplgxjOh4~Gy>3?z|0q`QbZL>eep&vC7S&N;E%Vy at V
+zyt>T`~_?@^;GEsfb6iWXX~RQpkc1RStH(4Mx96zhRI3KtJg)VNK8|^ow6IdR7NEr+4LnS<t#a(VYmJ
+4$HL5e*OrxBi08~jOd>3pT!EQDd at NTl9pwR7i$`Y7C|S5YJe5T_Tm>IUFdb>aiSkkIVUsM4 at 80X=lZ9
+69@;Ny0cC86&SJF~R!_l&#$xv}gl&pT)u7=)E1(nSKx)e_7k}9Mc(z~C#um}RmSwTQP};-kX2}-L0lL
+2Z3`Cp_v(O$%=SQG*dl0RVH1=E07JkWz2e!~%2P>Xo=lyEYcBpkNny?qId&64yLJcM3>UC>35TTfuHj
+Ve#{@H53WH5w@#%QZI*a*1FJ?P1f?#Ezk^&fB+v!`k at -tG;js|EI84to&p{Cm6;J?U<kjuKA^hjTK?2
+*n5-i(myuKlMPc+o|k9&u|}OuXF&OuKwL``y~esXK!JAXiNnf{=o6>B}PRR<~-awSP5*eW}iX#l3|{w
+{tGYs+;(%}m*6@)F4YDWtRIhShC6}jelCngF`>A8Ji1>5|2v%#Uz4G-VOth=zwMWt_Qngf5b;7o)xg{
+LQ2Pmi8uG=vCAO^J5Odd4)owNN at bq`=n%l1q{E~hxTzf{jTwPoOKCk0n1SKaT-b=%aqaRLZ4)vCrah$
+Z%`P%Z^KETUlxA#I352*nRUNmx;mdSWe)aGa*>H*>yKNU7~97Yajs=Z;}aP4`B_Dfn;m at Qm~Tq at T^BU
+J-#E}P?ERj)(qcd?0>+TkFG7y4Pf578rQ at 8e$BwnNLY`B9|{{fl36FhC-ngS|BrQ(~&t5rrktYd}U>+
+JpC+<DQ51OHQ at e<>yNU&6a1PE*vbB%EKkYi#_quPqhBja_x6GoH>m0Z8uvxwtheg5>G#IWaD)EsR?mu
+hYl~!BIcY8(*wl%@%#(5$#5QcEsyh#WAll9yI26`*QjZw6LleMJ;3QsRg0lY2~YavjEYgEC-cD0Gd_;
+F{fBJ7<bjSkv3O^?XB9S{j`;WXTf_z!$}r?+8rc_>Dj!}Bs}=}lJnw$-OV|Vbc_n`mjqz5-PX`Vx4&>
+mKh?#pq(J|U4+ at ICWdbtPhfTkK-9#X#~_%)GN8w at _L9b%W^2t5cWil;_<R6VII2Iixls8=ij3LhUGi?
+sJ!>)KwoUc`Z0JkX&F|99wUt*5$+xbS4L87lVTB<xxk)CZnrYu1w`!ybQ{hxSX3y>WU7Jr8OpHsr<zJ
+i$mgSglLJo~Um^rgAr6;+go?HT<;Ytnf>gMy7>$8XnBcJ;3`NsuC2P;pdYlXgp6HGJ=f67bHy0iHkAz
+K5m23 at o`JRp|_<Um8m$fP_8{nP>Y+F;$iHA2Gq=8LkQ1WA at xY&_WNqEZa4ynZvVtvB_S_L*l3#|xt%N
+{BcfMAv5U9KrAOD#hxxQ4gL_chf2j6Lx)J)JmHUYWZLNpN-0$o*Q7(z;2D=wwza}BpQ^6v{QY*27?HK
+KT+b_Y$p>T2NPZb`j0rxWY-trxiwTBEbEf>==CPK;H9 at Fi|TgTqV)qcsi$9u6_-BG!ZdAeE;EYqLsS$
+*mnPDjq#tE@}<qxI7vz2~9*l6e~7vD*u;Y)!fxICc7 at +x8Z#rQYG46Q4L(<cVO1Pd%BX9Uu4Rduc(M_
++5&EHb<~@A*%uhEHhLGyL~+ELko(5BD6Si7{=h&pL at I)yaZoth$<d9-c0u?0Kx<8cVwsov_urvo$wA=
+OJSG6KlXJQ at 5a^-7rZ34KEYm~V<yYE4due0D`vltLj0{%9Wy{S;t=1UI8IbZtETNgT=*pj?7-}vOkOv
+~C75=}^6;i76MrpKgU->Vg<+IKxq+~hR(;D^hp?<$f;*(0s8mCFAOMDM8cFE^PNK{fZ~ltQH(d;M01+
+3m6nETm!AoZF(SeN`>@qbbn*#!R;2d<9$kfF~n9PWDKu1~`B`m?3wTGcTV+XcB+2bAfZijju|F>1nMP
+!Xp7USTUMml_C6>B|*dR at w=P%<OebNAbRNe_lSd!d*vwvZt#jh at QLqnDkC;8YC_u?XUUws{cgv_5ss4
+Q<x$xBZfCge4u!Dj^x6#i3t<j_H36`W1ztZ2$v9bccu?PeX;|C!D$C9`7Q4>rr+viRp%Z;JD0Fj^~Wv
+4$C^wlie?`iw;M<4KW8X&k-7d%}ZLuPR0u&y?nY4F8;yw#qey`7g)ff9}I8^oC`&cTlYZk^kkr<=C%8
+6zodn(7Zx&p0At!EApU1>jp0la2k^Q<cry72zCyR~AO6z_RcNx at 7ewqYJyhOws&^zZNV1cR0-O3rm$u
+CL0-9)rSxd0NncJO##m>EMtx#SL%;O0a?7fIVL)Ws~2M?SYo`vd#k1k;10q7irB?tQV#7`Y51Kf7LKh
+*Z^K`g8SD at kw&=LjbG=<_M(@(Iiht^?u8f%n#KocIR9GT8oW?~4xX+s>c(iJ0!hv&<b(u#dGq#9o*Df
+nXA)+G~Vgg2E-39 at qArF$}ro>}bDaF6ZI!B^{R9)Tn|jaS#Qy=nlfa2O;Une=dT^9*(jH4mq_o_dK*;
+(vA2{Z?J{^ZtczPA%*gMiUV)}2vj<FVg}L9m at yIsC*<*Ang$<X-2M*XLEBBlWSqV;j=+9X;2iD*vBZN
+^%Yc$EjS<kg^~MuLgRm2g-qTXMU;L6oZlpbAjuMBHxa?tGB8(`}=4ps0ZXcQ;p1_7#EHa+^!@!w-2l)
+V^*9hT_;7~NkhzKnLhmcw7j at Z5I^5;{bWLCFZg^1%K*Uksv?ZF==k5fCbZj;r*Q#(<;&VIti3Hcvr=k
+w5+n^I?Vr%w1GmcQq>{gUnjntP~gc^87M!HycPc&aR6UpPr{%pL@@iYtj$8b-PBg!3Ht{I*|mOn+_2!
+h;hmf+8Qp`0FsdCbIW;%Z0+k at 4#w*1P>c_aGZC)?U$Ua+XUgQV{bafp;^MEE-~451=!$dAUx(t>^{&B
+htaE9yvV(7qy3UY!;aJ*_^`{M8Wq*LOPq$qM-7SK>q%ydzmid!AjEYj`+GQB|Mt{$9E$;juTL1`f`~6
+r^||wq2hkF)dV(vFt^s#FPCdW_jSZ|NGjJX|FVfw!ZmL=3SLX604#1g#mz;)`q|y$v1&4bZoJPFc0b9
+_ezK6g$cfWyso4f%|+PbtQ3;_>?m08Sc50&&CDpDJ%jw2X3K^iBa{1V{aJe3p<{i3Q*-7vyGq!vASTn
+>7<5%AOmt%4tv_2D*A(cwq!__+4I82BZS*q#TxGJGcB%`rBUC3HK5wG4l`^KiXGuqMencq+?cI&SkFs
+Bh~@JRsfe$E5~9BnhhV#m;n9%_$Q<0`w<zVC(@-|EfNdL~lDZ<s~p8*kyO*r-*Y9`gqbuIvGYLIL67G
+qwP!$;b)wB7y7f{6Z>ty<it;09jPFaL`_3~&dzbLP~@z5zph(Yvp{%H at N@+8i^17O;MNZlUUKk$!(@t
+qqng-^q$!3|Nn%ws_E^i<yAkSvh!36iOB}NIML+muF!u|O=5V{>pAAgrfn&Pd<>wA2>2j(f5yil+B-(
+tZlX=5+&jY+<xrNO0hEiY*Xeh)6TfQ!dWs)f*HrgR`?VVNQbAkpuTRa*1?cXpDYLUQnyHFE{0R#=<I6
+ at nudh<n)ZiBrLc;L99Xv>V~+;X<a;~cKIfC5 at ihT;H(on}xUhdCIOgmR9jWQLju=EQ~!H_=lwdi$vzn
+zp|~Xo{vEPbU=n5_;~$Ln)>sw7^vKU(shN`&Sff>%ucZx87<0r2T5WI6^m6YVT^^9-154bo3;k>Hwb%
+i2q<;4!7`A+X(g5C}T+MxBZe~hPK!jPjjj+R66Gb)kdDF{NgE at lVfTPkEW7=*%t|dsO`7dZwqTl>|<>
+Nsn{O9VI{+Nhu|>+E_<jtT|96)X!ex)sVpSf{l=4ZD<==gtv(}24XCRQH&DK{7(%>5Xi^-*$bl#UpHa
+10Zq94ZZ;;2CN<kS|0ZU8Yh7~XUW!}#;Ji5r7XYm9ai-XMJ!FbzdXzA{L+b@}vfXt_<O~C-_E!p>>gr
+c3v$DW6P9E$|nAL?XW$$k-XH3W>$<L(z;A{i&CwFF^Az`gAF;rM5!juC)$NIOwwC;lw;Eyr~lf{0WEk
+$b<jB(?ubkeXY5(UZU!(oo9;+JKFiEnURe4|8YBO~ez1>P=IH`KY^J>q}4wq<4n9_tGmvmGSw9=oOHC
+n&1%!1aUu%YHSWaG)A~HvHgc=zvLjb+3^}CYbVQaL<-AMvPHrIf=OJ-HjH>`u!G(Nd;|_pFfvRE-}WN
+S;~-eh17XKxM3a6WX!8SvH at 5LgX2})wG3?pXEDv-7Wj)T at 9w&YYxw+#sh`UUQATXwU_5c?xlYdy+%Rd
+kZy32)Pg;1DFjjhkpJdT8nr}L608uKK at FxUf=cb at l%@Xu0AhR<(thk{~#3HmH{-l^aI`O=%j>ICdJ0<
+fetcyYsY=M<_sp=b&n3w%;aY!-%coqB4QyWs9O;gg3S(BHtDg_xd3>`!*cMO?^>gQX`GIs-mBtzAe~g
+l*a{hef*Xe%miuyz{bd<<gwXWKlGDBZHXvKqo(_GCGjGNtifPn>ZHh+&(5OY1fJM#_l*^Ff)fbUt-D&
+39M$1XjxSfroTgqpxY?-Jb7`vUR<*aP5j(-ApNO{y+BrBaBIIQ at aR%^5q6>aO0;vS9r4A&q&vPVUhKp
+xOxJhUfwaORkFz6H3N(ZZr&*+8&`k1l?R_*colI6&9X}45LKy|mvc=wSg<nF!!%6+aG%d)AuTzBpg(4
+v|8Q{ZNo#H?EuS6ax=--ji*$aBlFZCsa@~7s8XD)IkC=N!%7M44b2C~S6{K?$VJpBkH7&jZzKkxiSE3
+Eb>&-B-WRlpcg?PR9B#K-t&81{jtSP0+*Gd~7J5LTT9D at gjg|Jmcc$m0xa=^%x9IbQp<5BkMj0)w6m`
+oRW2Vwc!pf-uSxR{;IHKIw<6{gM;=(wjpYb;09(0^Z(~@M2_e0}-)7;&Z at j7Te?`&wCo9nM;V<zFqJV
+;;ix1^Vmge2Tw=6puiN5X~m%gpB&y(go)E-%@#U#v1Idk`wthq1am&roN9_gXB8$3x?0fe!(`b7HDei
+1 at oMe?;v=MjjcfR69;h!tbb8Mi2qw$JLLo_0W{D3pOlp;u(axO*2*6X;f$T4L<Cfox`jUiiTNiZb=`)
+zeUM<Iqv8Bia?eQQ$7^by{X+A9eX&ounjM}CLMZ at iv%%=;$<IoC2Jr#1&%VDwhgsV6rhdH at votVz@fz
+iTLKq96jn10(YnJ9||B3-9mPHA?L8cL%`KpbR+mS}&O_cB+kK25ZZIm}(VaQAE7>uGf?N+R^Y7^N1JN
+VUpM%7&p!9QmOxx-4_sqRYfnZ8mpYNbz*X7vg3Rztz0rP5iz=E#E_E at sQx4+;hK(sdncE>x18kh>z!|
+d4QJyIl2-4JwcR`WD)_VW0Ea6m(C2v>(KTig=CbbrE-a*paU>A2dA{8`xS;5FtOFh-H&Nn at M$FvYCg@
+}xqmF{^nobLr`r!_8D4VEdmivhT<5SpiZID6Av%1LFqv%d9tT4`&|)aMUB8JtOgK5nE)0_g=RLpFy`I
+PRmt7w8j`auhtNZ at k;txMN^=Q}^Q$cZWqe at ZW!<@>lYok_?de355xLnLb5g}6Zcc3h%mCKBG2&kbM=S
+~<0mcTMQM}kwiHm5zQdmSZVkgb`?AU~tO?9MY~Nho$4N*6+G=|#cq(M5~E{XDEdsJmb4UU6$4$*Wl%z
+)qc1<IK~%yDMlR5@~9oxo=;(2htbp3WW}B7O&lJ`z0gQHc$7bouk7wEjz$O6O-t|Nt&)NJokL+W|I}d
+16+p2h>`tLUqa=1f1V{HS8?ioT=IBxFl;||BTRTK<9U<>4$d;>usrA7W`D06b+7X at Lu(-$P6X8KWYC8
+ at m6+q85^NEQ^~jYLz!s%A5{{vQvFQGmGwNO^{@KB{BAi1Ip;lx=Ql|&EoZRbyQX7DbWrBrhWl|`(PV3
+3=nk3BhOWiAF95dvvLs3Tw;;x0|z`}ccQXuyPpRCge+(apGaN at pO{(tj_le$;3aA+1b6W*+(2bb$`wM
+5WtE0WFp6^4Raqd~<Et<#l$Y7 at 4cQTIAdqhg|kIMrB83qg at N4V;<BE)kYOvHirs*thvqZHMEvV&Pslc
+*zu_Uou?E9CT&~|0KaWp;i%KP!AOIz^$1W*@c63n)t-R%-H7x&{!`6$7Ku?UfUZ0_^JlNWj7B=MV{Jj
+Scrs*)^%|w at mK3W=DPbmv2R0-#k-(Nmijtvj^pOGhE5<4Q`YfRJExyxes^2Mb8}iM?RvjqUrZQNBYhB
+nOo}cim6S{804Hg{wR`yNf#o}!4bhn*NpE~HwmqiqwLK*lz(#h-`=Rj8{X1fmr4aiVUR))NK`YI;+78
+)^^X|9(lBF^pWb;sEleEJF6*Z|4I^1AW5`daDj-9fZ!-#+!G5Kp%*}3yWr**HyPbXS$QVY7!Vgvu|6e
+L@~m1cZB)BwgeQEPNZLCXNC41)i4ZXQLdnejqh5!lC}WLPMzoka;Mx|A(A7)l>bY6*uY6;6+6ER?khv
+~u^`e#t?y=&%ytFxTc`5W?kIR#>=3-~f~`ym4CFxp#C)+O0>2SnT-Xr0%uDN~>V-wiNYCs-oY=8eN`J
+VKWiBiM{Hu)`GGH00N%kW4YhvJrC`dOz{ED5BV9ga$1OqA9G?xAAsS5`C6wj9pL-vmaux&LGTe=Nc(N
+SWKx^)m=@Uc;>k0Mtk9*7QBN{dk}jvwXj!Lb#=|-_643bT=kt~a>Runi+^b0hY!pQvgJmCR$1#*-7X@
+N~3OT`K=OGh5t^M(@I0d&~GR@;)hkz`Tmd8G=vTKF#iLqrM_(@A#84M3w=kgzYFjb_`anCPxujlXx3W
+CUD_o9GkjpXoE*bQs!vO`arm{=wt*Q)7p?0PQi3GRNWd-d!9d~%JgB8`e!g<@+C|6uBZ^G>B-A|b>d7
+;a(6BkPNsWWVwfroaj)osOr;X(9q^@N3VT3ssB~T*%lQG$ONxnM<PmYx6S at 6LLmfrsa%ClIn#`x6I5w
+MU$6hPy{c#b7E|>8z-(IIjg`2T08%CQulg>b$Hfh;Hf#6l&e0d5u8>jn|QQZ9ATeik`JqlcBRQFZ^V7
+S<$=1_gMj$NMLdB*4}D{Zf4hi?!c(L{A(CgdhLxXo?t%gb-D>IR_B>GcdKlwUOnOqPG14IvUcCs0g?c
+I at X?Yc&8_t(o0`JX|Z8z53`+~aH)A&u4`P}6+EIa!RZ);J9JUtPzbU6X)hkf7;ne3H)5z~#4_jvJ3hH
+HBGrp66}|3t&8Tp1CyLMPU59F_ns9YW$aLrvl9<@4`;7krXsw at S@qiejq$hMSMHMo<GGb0>RaJq*#xL
+A-F{VXq<AxYv!k*R=zc%TXd?L{g-V#}JmPKoNi5fmAE`G|$PwHKqZ=U|@Q0TmMq`dX$B^hsp|70(&xq
+e40bV6f?FpJSQPn!NG!hEGl*fMU;bBbv|$Zfx6epMmPnic;5%xWDsOfokmNn-?Vekvo)?%3RqS6ASpq
+LY&?C}&CkfY_dce8%Su>^eufJAxu1?-O<ZP4JW}wWy5~Hs at F4ZaxzGt_?!W`8w7KVL-77TtL2l)dmT-
+EUk}xr;yp*6{=Jl2@!X9M9AaTRvOt=T9N9y91U+P|uVfOFxASPbq>G_t$yfLe%Z^~0Wk2xK_|M)EM2{
+K)7|6T9NLbV-|ac=#G1F5?oR!G|10s1>^FSXIi)KmSiv)o4Igv&Q4pzd`d<qJpaw4BhExKJ}Zk at EBy0
+uqX`A7*)=sDo{aEgxGvhuUEKebl|4PxCX%uR47A6G10?g+ZS~9W(3=fIxnTxO<TnUFPY^3eDR;EBz9D
+fK9h#O3P}0jJ;_RfD&1rQ=&(Juq>QH;?AWGV6`mze|{P-c^uUDf-yeK-x|PA59px_hHNoVjNyV3)hzu
+ITI^&8YfjiVZh4^Y^$}aSYIyLO2(MXyiQhHVu(eAvl at a!v9yXhf30<<5G}znx?4<5>jV;#5gP7rDk|$
+4KS9*4r!yrpFOZDoB4S8r^JvDmC>WnWo2M4#boyT8C(JWNiVvVNmFf~?lc;t)pi>lOuGiqGdPIQU1m(
+z`i at 4Wv>-Rl579CAF*VGq}N5$|EOFUu!%wan4t7<>GPnzWOW*T;0KJp8cFQBic>_L%)?E&ipLdh|m1A
+=)N%8`c?;)}Ed=3)$YOz*^uBLiEt~?N?j(N|pUFEx0v7Xo&#+4kr*6xMz9@?&*#~d$6=?$k!1gi&w_B
+HG3aZ_qv8#lVAsN8hFBw<-y7=Vz`n-a%qg at W@eY~QuJ~&D?IGbb at xksiDyx*B*(}cqQOHDM=h-920en
+p;fe#&bHZd#@|DM7JtPsIRUh~HmXo^ILoP>VX;9sGoT>{ek4XNQS0f=bjy-54g9!?!TZRtqVK~?G9`E
+J4;R)($r1feN8E6qPD`^KnCM9?l6{r)fg;lLs$bpe{2~s(OC$>IIHUfy&Os71^LY0l|5l*(`5+B1B7X
+ihAS2oH+aQnju#m*NF>s~Fv;F#usl^qzFgDULfR*bBhXZ68IR`5MSBY;y$6oh#8s(3E-x%<U0!Dm at u;
+U)He;4_7geb;_lKZ*Mhj@;0k$kUZ}PoXv~Tf4dEu<o at iJy0YKbV+r~4m=)7pnrzD;gC}Ziu at eU(mfa^
+9Fh24&o!ufJ&A%Q`r#qO5-AV>9USi+sWvAoWMv}o^FgiTf&P6ME0)=q(m>Vj7r%skvGCZ|KBa+EC*d_
+|h-x at J3}`NM+fw55u`|>Re>;`*vN<ADyXB0SRWrh=fa!S#4E9mhP#9i&Qq at Cn?DEusoE}hNZOVVZyIY
+?P>R$Uz5o<Qx!}{@4 at yBP{4|KI`$<_fgd-x%oFB8B9*w%PG at A1M*2y{<S>bZ;&Tx at C#s3#c9phVrNUj
+$Yh9ty%x*A8KcO$-q3b))X}+?fY`P4mZ8lQGF_=m8QD?2zActV6hQF~7JN<S?HW<d*Zb*Uh?DUg*R;4
+Jh&0RX*|(Wm*RSFaU{N<dl1Uk#lY7c9DU2=AHI^3WK`WMST4542Ko7J2Jr$n4&Xv21e2HcQDSW@}UNQ
+K0S_Sjkx6)`@V`n-Roes9#qJjhaq|ibUYD=AvvY`?ClFHY~hlJ3<(R?_Kw-_mo#PT2kKr=Y3?@ch8CC
+M3HUD+Q<hz-FY}?JV^`!c$r44*e|WCLv=aStPS^@tPbNaV&cn*Ua%@gA(Z^{cVkD1yPwTT-)$&9ag&9
+zRvGcKmy4M51wyX)WJWmj36n*Y(%}i at U@bTbQCoaZR6mZB6&sxJV*WCHoLEY<#ayu-&H8c%R6 at rhE@<
+lo2Vg;u)#6)+K+Lv=zojr~7^p)7Fb<Z#7aiAZADy}s>BIXf(N{tMN`TPTjHgTj+Ho^ejFJ^>75+Yv-6
+58v`-7n{H%t42z;jJz5(CIYV#kaBmQV6i^CaE_=Sj^qisxvDi$>1K_ZsK^qoQG*H*3Dfuy+Fom1vEiB
+QtsWm&($Fw9AjBj^bgV=Gqz+hzn}VTzvLA5&%@FZb~JgEsfs-O$u2QQ9=T1QPe4AET6Y=wSX{X0=GDW
+xS5E*u_k}wS#+)uu69MD)3Xz{_slVsGsA=>-qcF(YU2NDK=iM*oajt!A7A=AcQ(KYpgwxJ_Q%uld-qi
+A1*e%dxA5I0cOhtU3Cxb)7qcBg0%VQxV5d`@p(mD(J-Ys1MJyC>>D2&X+k<KBmA<X}{&q***y)TS$DQ
+<Y0+%pw06?$i|MVHuT;NcFIeG>buX=Y%0F3KB*2$c4DkwM+-Fo;>EKeSdl!NVo?{XB{0JWzSR93ZI(T
+uun{nyPek{oLofhjp*R(=wL7E89?Y4)L6X7KiGa(%<0?N|Xo>ue>R#Qd!~Vbp`lJ_dHnlYSCqx3Pnuz
+ickL&{~j9xvpk4^&!?thA1To+vIIJ?66SrM0{02Lj8nJ9i=d{WPS|sKc at oCJLJFZO``DUm&-)X~A2{K
+|v%`2pYmR$<&EpWQSjc9HuKJgnleLqa(qvTA+T}6Ms(znR;I!BQW<T!vE%uuiB^hm#TjuP*INV?)b10
+P<<xx}jG1}3}PgKa_1n!!~Z>p;ucVi=4?^vAfsi@(Z8j5wpQ_{*5Rh~v4lqgtnZkQ<H_NEw4pPXrA|G
+fL9z6AH`ap at QmZ+cj4njt1U+EpTW!W<x*7U&68!}!8tVcbPUhJ>p94%f}Wz_*`vWK4xOfOVfb`ECT$e
+8iSZE_WJ*u?{%F9v!{*{V;>N*GbqsJl;y3!qR=FiuU2eUmJ!{ZU+ye6!CHCL#v;xZSp7?7AbFkox0aG
+O|*L~<1m at xkxblYlj)cDDd6Z?u{AyTjafpESk&bWRm-Sm$H$Z%b{y-`LUs>;Vx&9OdLQelQV)exp<2}
+IL_&+?J3t+tR=B~#?ta7jOE{nPRJt%Sxls_3eEKX-?x7@>7S|0%?$?AorKyA1dU`T)ZGMLBeL1W_U*0
+hw-ZZj4TsP-|ok#H%&|+@>fnW0Qq`<C{_6 at Nx`#k!v?iB(#@E<56gu0?YtSa$Buw7YTRVwC2WetS3GK
+Pp`5>QQ}girRuy4R2iP^uOREGLnto&=H9+|%gqoPB>{roA|ZXvu4zrm__GJdnr1L0;3k*V9AGo>Sl?+
+G%MjONME)B+08i9#koNOrNOyAiJ>kWW<&;>Ry+4oFl at Ee-4T^j>Do>(vrd(uE03bECk{GcC)=;#S;Yp
+1YOy6$8XfVKD>6$TY at g(9EF%<!VU&FLW>a2pwfaq!{O$*)`<stEdS9Q-2GDbx;U8dFtjL(0)Y?&8NEi
+jxvn!JmbUb#;4#?k!#LIwb1nYXlhnN~%Yw0yhbNy135S&sR-p{ngXoTA<TOp;wP7CYoE8SdgpC#R*1y
+!fo>Qe_N%62HX4lGs)7^_lMTU=D{KRM-USVKyrqgE%AN6(|Hz(M2ub%%!b8g~Kd`uj0ramT4=+leF3}
+%OUd~0Eg$FST$M|kyo?z+rD-Rp^=THZBAG<d>J5AV_1R0qC-H!`W9K2+bb>1hPD-_^y?Te#<e`Vz|qr
+l;(;9df)Zd#SYbj_LPsmfVB>C;Lqw3_*SF1jv>L>RumKag`krSx<vm5qN692?o6KX2)4*1^r}fnV0Q3
+H-~y}*BcG%UiWPSo at nys6L$}4s4R9-ekmwq$=396YAK573~i&5Nn{k`9&h_46DoNcoQaRUWQY|%D8)X
+fj>xo@&+G;y7&$jfSo`K8d}4X^r+)EEKy4>!tD*X&HtzH=9v;m+43zde;ALU2kb*PzMJ()h&mNimy!|
+NZUWaE1A<~25y)`WZz*n$J7&rSImJ#A1xS7o^59|BzAMhEM#kcE at v#5K0l!d0J6D95@&`qm408oaXKo
+hbzQ;d%kjKd2x%p8_oQYJLEUrpWXNlJK>JZN9yhc~jkt_9I0nL~`futU?kxXfDY5-~F0)DJD9+<DyNr
+SA2yjm(l)YdLflSuLVAYM2)x-lSG&4ok+D at 8v~JR3e{#r1)p=3+i6a^n8mKJ^<$|ZkYS&K9E2gC&D7t
+Wo;)GiJLR#kT8?ZSe7H-ekygZ)05ex7${rd1Kv7 at b0X`N4<bL8SAm=i3!jN)JS_FMf(DDftVX3@>R$1
+o&(o9PQyE01pH8xh1|w%3lVBE4X;^jfv<k+N1phcy_qvhC8EVe$krN7`F35aODlcbB`Mg1tuwZ(>(Q?
+p;QEH5kOnkQc+zbb3d%U<cyvs>#(I6FiT>E|&ug){is{ml`_KO?OlMbZX;IOj6GXtA at Qls7Rkh3cI(2
+SAaWaq8r!C93RI?>w`mGclThad5kP)LWlu-yGpU&4b2$CnT5ye)!Q`<670V4HmM1{j!6sm0&~+_JSe6
++1lBM7h+w>+q&^uTS&XM!OOY)Q|^S at G|CMu;o=Y9DO53Iyrat5Yqv}*V1t`OZmL#mpsn$#5e4eg1(ca
+z#-x~U7k}N&b0zhufgTfJICZuA%x}35x4ApF|B)5!+L9zM^+fjDZ27Lv1=a#@PMiHo}5lrh at rlkaSqg
++I!t#R2+k#TQ_0h>W(qVn5;DN$PQ4Kk;CURLB4+jnQ#+}gTlyZuU~kvMOzK`oI={?=wGkE`do;>2ol@
+_R*1 at VRHuJEcC9HPc)8}<;_$9aeTK7ssH-~4jw7sXN(@5`Q=e=}=619V>tT}Y%%!boZnDRp60n;-#Kb
+zFOo|JR1rGlQy6#LT&^+s2A4b1X5_GA38lBx1xRlT;yJpQ&9le*W%<qFGtKFFpm3#d#)<K;}ryu}Ja3
+my4m|Kmd8gBjx!i000lPVakNo=KxXf}mvXW5(&T+AH%SpN9z{^r`v3<wc8lR7<CT&bQH6_xxI4;!zl*
+1$K}3&Z550wEh=Aio%*nM&+FQq9z<6d{S#+t>&Om@|-(A&yAQJXL(7$>Dau1mW=D=@Ua(%?}x&Nwvu0
+6-oT*0ZY2gF=LoYP$KCJAJ-u4orGo>o^2)kY3J`2m^<#JG6aYwE2lL{d7^YIzwDa2asoWXxa^RPcDdM
+A~q=!}ZnteJ_F{-;Lb at Fb^eR|a;pq}^Kmv>;OciheS$=2(8Z1A(8lw)|<Z)BSu)}mfoW@?KpH-R86Fv
+o<(EyB-b$rnih`=!3b+AYhQtZA_<BTbGR{- at K37M)@}LI7e3t81=(2{DH3P^z|^QTKYz{VAeBcZlMj>
+TqVzc_8Tw4Lqkd(o3NTB3X>ZY1G9*)S0*5vF;Vk^1xaxPI*pg4a9a5Odgk0s|JE7;!!P6LND(N@=9ZG
+V8Di5`<x}%oj6N!p<qq=HDQ3jf&;Lnr{z_G!^<$jTa~EWUOQf3B;F#i^DV#|?iE(+Vr(tPJuUbm|3+Z
+9m3DdA9ooZlzrtmLUQg+*E$le*$2||^aXfe6t>A~E!+})KrdSXQ at EF@@s4PtlIaE)Jd-IjYPg9+|?FD
+tOC)w+18UEOFPtbW;>}cl2CBvmAh|+!b0KCN5&>}pVkox-DZc_KUq(GDlodlTYX|RLF@=hmH*i$DI4X
+|&Ikqa_F)CH%4c{G-5*JV!YUO^f&ExI(+G&7psyzRx1{*}jYY{6T$$dwSI^=oQ}_Eo-I8FK3f>RuPqe
+(F|GWpo(e?fXEyQUdQ-9`F6Q;NwZYa(Sskdiy3`w;*!ud%q at iuji(c)_Fq*rV311#fiX>OcR=Ecn^dK
+Ge4>jwZeW3xt(3NGO2q#DMNb1zLmufV27kH at K^CFM}bcG-P-34PN$`%mS&GIHAIp#c7AhG_j-^Vo)*^
+d`9*R1Nu~9&bUeKm5Sv3<a9Q7tLq^RkzvDC%wgzYF%;R1+&Iup7a?-<TZI5+CUcb$@-j|9w7=Xv7od_
+1#0IRk<&G$5avd>>k>Rt!+b;AodxTod;SzQ)6TW?7gcHX~pylq!P*M;krEjsdrL9Q!qd7$ofkXxDX$<
+rIMvDJ&T!$_~9L%N=pmO$6iL;*1<#&Ag<z32v_xnkdE!!@O?*ZtA~vH*mO=jqL)Qc2Y2_NF<Na4#N#>
+rfOK1WqN8@<Eh4$L;S>_lncQ*vPx5XXs3(bHk3Mzn1WuVbi_y)-&R)5Fl{MbnNHruWvb9p2xWq1y7lJ
+89h?t8Bh-8fJj&9_$$*Sd&4W`*@$=Am#MW5`qMnXOOViIzh3)6(q)jm9NwiQnFofS7NwkKxixLx8H0~
+2bNA-VyN;hT#4n4OYKag5hYQL#O$s2Z%ffQs-cuqN%G2X;@Z6am<}$ItaE_fX<lNrN^!o;KrvQ;3FS0
+Bz7z7|-AoOs<vShc8$`Up2ow)>^r?=Oxo$uzXLywnu$mmfa@?NU7e{!*TKf^gJC^CIM-6pt(q7u*75X
+(?+wflvanBv7ToIur+q~RdfcY0;Lr^*THPobvjjSygZPmlhu7ryPI&vWZ_>Runh2u8H<)RrX`oUWOks
+kh8+X+gb)KtMvO5}#sl2g~sGq055UeV&YL`^&?^8r2qeKpi-|%UW&;8JX|XDjbg}A9^ii;hk4#;UVqs
++CZ7y{-kxUmmA$<agY<iC~9`;;CP)L+GBd*&*f#H`yi^}nRbP;UBbTm{xi_)%kW}GPc#vp%=9if{E}&
+o-+MT5PFx;J#)seGQJxgI920pFZ;9LdfiQ`6b1>cygD>W>!0 at XX93U=<AjKO$j9J+i$9^xD(ONLvnOm
+Px_j+(rX?f;@kY##hhhead{2GXT%$PStV;;v={XUSDRs$|iAKv5TzE|&lK8)Y245#)mWR`wS!08|8Xd
+juxx?9u$c_h8IC}|s>nVq-4L*45M$r{5NCr+7$ipI^cpMch1nrv6xn}f_A`I>lYc8<35RvP*(?!!|Z5
+ftq!>w$A5iRLu6W%C1B9 at J5d%L~4-Lzl(3z*jc-@>>XCBJ at k$>+mR~H=MD(r}u+T&5hsGaCmVn2-EZB
+9BUF)d)NE6Z!QoCg}csXQun%Wx5wO9!}8$NU+$+{KyVpei!jq|f=(RX_ey at 1*jA^@@`C&Rok`v6vF$A
+Giq}_q3GeWRKJt*bI)gHnd3d9sMfbv>aO8yH67FH=+g_Bs1n2Tn at 2JQvs+AoOav$Dvx-VbE8xcU6Ava
+w={qhpX)c!h-ZQrbWjs5oQ0TV*bR$58!l~5jxbIF+V^snqoLZJ|l6Okav<NUO4+^a?<!V0~NX%!$KL-
+Xtd%daHBHS>Et$l3etIiW(*cU6Hi at tOBL@clT{Fs#_0r|N589*U|yRV8fj;VBhF(R1T|Uq^aSQu!rDb
+2r}hg1Xmp7fkAF63LOIAD8x!d_bBM at RmcbL>WF14McL<M7ZY at yka%>eRz|)*CE#Pu<(?pUb at e|vtMYU
+jNsrnUx0dR7rc^iZMNxsFWy6c_X{t1>b-bLt;hXb9uoi(TQfRZ&|Q;@|6-8~&XmD`;D==MIc~j9-Rof
+99-1ug5pbi6O)dWkJt_}_Oy_~%UwL#3`~4=QJ;-LRxb*{duY=^k;WrOh95g*rM{bf>Vwjb(0 at lJiFI8
+YxSE?)tqcF15;4q)}c)3?iPoF?xc{APVeJlGrb5Qf)K4Pm2myuP$C8}xdi?GVJ{-b_a*1hJI?TcR{0A
+xrwAUC~VZr}0^IZ=r4L6%p;l(!s0MZK2(u!7}Nzwi<YXix8Y*k29<(Gw|qGk<6gy~fkmr95zZZ`dI>3
+>0jl*H>=6&bL{-oJyC(2S;}KEk%A+$K{<ovT@(W3kHNM!vnc&$@2O56qh$J+~b9pq}Tahet_-jfpzz>
+C%eKC`7Cw_`F4p#N_IVT%48hdZr<Z1kAo^ZfMe4$C!YVcgveqH>KBjuD}vPjSXC2P)7~)DLTDA&xX0U
+m$r3)UJ#T<f4=9H-h~&H2)=+o_lJ|HK5_)mV)CXcWdVAv7->bnTxGx8G;NkUj7VBCpV6m7-NIhUGx%S
+&Jyb_Sua>3M=D9n5QF26qMy8Go`HID!q%#vJNxwFC055soPGIAgQ6m{Yc9B{T}K`Kt#vS4U=so1A}y}
+!g+HD>i*GtX*zV2J#i>OugO`^(RG^zcp|{NKy3Um(cw?vZ_u_uBWpx=FP|7HEJJmi!ff;CYSmq9#ctY
+5?@H(%DyxG;JQV*nSjO*7bN5PO5y;d-l=(>0*2C0QF*!?2YB#`tI?>%a`-ikmrd_oot at UO=Ru&VGN*F
+6S+JM|Ae~+R^E?jnVHlMnHroQU3kpX+p{FQyApZxKCWrv9H3wL<9<Vk#SvcPA=|tB2XQh05=*;`mLE-
+ at iU!1FUt6DXCr-zk%cnDC(=S|OiHUa8#ddFV4*S?o=s}moq1HsG70mT{x_;*axCn)FYN|s%wNs1U_T@
+=gE6k8pA5A=_wKg-$$)IKMMASCIn at RGX2hQU-zqP+Q3&^8_*8hF_O&^Y&7bngluv)3=wGITEun%KH*K
+*&x$jt(6H<`RrcNpLi3e~RGwm0u#!+4gx at zk&n+*_8myr`7wp1b~m1M4rd{0-g!)OS+eHT{wVj}%k8H
+4oikn3i6S4vrVTm*pdxC1S<goR&kwy^ozn#Z+UIPM%*%r4)E!3ah%mFAqbqlsG;Nijpx{pPHM)aES5c
+arqrs9)OW6cu%Ct-Akc8edvq(4KdR%)^b{aV#CSs=6av7$2&YHOa_tj>(k3PmBz~xc`CK?34YO}o%=R
+SJpMy at dknF-y5+h32aZd%ed9Me*L1$NDj~4)8Vww*r4NM5cY1ioFB=R6TMg)z6q4 at qn;fEfIZv;^v~r
+EG(lRV7k03I0?pbohO$%zWonOc6P<bVF@@?Nn#^dp$Z(o1^(XS%<(J%h}&4<5!{L|Za|MvL9n{VI$g)
+ioP&o{|F-oE?z=EIx*9A9bs&6|&JzV>@Yzx(0CckjP{!<XS8$XIa`Yv~bgV{Qva$h5OdC-!FfWuFoR?
+<}RlXqIsSp2eNa<QM^8R_OFn#DLoM at Qrefj+#)_Wtp%yB_YboVnXC at xm>K&^7U&w{S<J&EFQOZbDTHg
+ at kJoHi24@p)>2};3Z1LSmS4$%Jzrd;wYVZ`aoT>>E;ge=xckMdP*=IET~vvivm_y~jEcApaB+>zqT*t
+4gW2M0o5jrx%j;WERjY2}OY!XDr0eqDE)H2O?<Dao4rR29I@?8g<FZhef|x}_ybM}ZZGM*!G54z5n0a
+Zeh4dbl*8-vu7C3A{u at +2WvF8^Rtjn*g;1JZ}2*Tn_((*(LA?>Q2te`lo`$YvH^^1cm%X^nN>ajR|u)
+M3s8zQLQUKV77yq0A{6xA$t(Sp{lJNZg&QuoUS!MrXs?o!<dJ&5WT@%SS8UPKBDFLYsBmRB373fUcto
+awr5r_ at Vh$$~A?Udv>cM~wZd4?K}2IfNc9FM9S~ZGg$LVjUE*4EKrZ*L`Spd1)+R^dj6{9wxM`!$8u=
+icn(_7c9MCU0l4|r9+8>xX^wJ&uv}%5Gd*H?iX1>_bru-_ZWMtqFacn+64()6o)J>o>`RMFYg}qYF!J
+$tyH=8m$H$B?S7FJZZcb5zh(uksW6=Ag;iW!=de7}#wp6hdB4Tsg+&?dqJ(={vUcqv!DaC*`K5)kyL8
+?#xl5uWHPJ8kdTFgaHfX7ZDePUijEf49C33s!UN at 3KdWIS#zHDM~55V#}6uiybuL$r~d=C6CPGc`hd;
+`!FT<Z}O&jxiN@!W at c$YHz$mn{S*@q<guf{Vq1OL2mFw}8$C5Ft1)7o>E8nw0=V2Z%TDj)HJIo*Tje>
+$~5RmM1MwTAs8#X?fD}q~%G=la_;L4O$FZ3|b6Y3|j0WD>!fWJ7_s*IcPa)IcYg*IcYg*IcYh0)}+Ox
+#iYfe#iGUSJW at OxoQV(WzJsEy;LLb%5IZ=S6dXJV$}9sS8I(8#a53<Ng5vX_G(4zMjpv3>5U%bwXqmK
+3S|%-%mPyN`WzsTfnLI0LQM4#p6fKGtb+22oZbi$YWzn)|S+u-pdC~Hs<weVjXI-?oXmQcvq6IQ?Jnw
+aD=O(Ck3%F$fgo2u~pdKtJnF at +^f)bXXrXoPhL8KD+*@6EY)E5NB0CDVO1<`N!i>#1i4Kk$xunmB9kk
+ty3R{_HdAV%Q22VQ7^x&ss(AejK7#C_>J at l^MVtblF<f*BCO0N(}FEx>F6HVd#>z^4NI5=84kkRJs3L
+C_jEq$fz|evuV|yCC!mqMaZ<3B3Hkbq~DNz=I5YzQD-~JgmTD2^@gHTE}rayA;m`XX1mbZ&2JBoc#@s
+WCX=tL5euYgakookO&Nt)j^SMP^ub~ss;oq?k`csAMJjT6-r2gbbr8cf=D6oz5+BAV5oo;1>h!#;DZo
+62uFjkF>p5GxbAhkST|&a3vh#Ln1Xw2gIrQ@{xUdc9ONznG!>M{2X18Gz6Ax5L77uf>=5^ty5h6E1QB
+6yfnIP*H8?vNToM{wml4#z2PI>HuO8f66PAhsZ-Z+b0#q54`Nz4FO!zF_F9Ji^L6GhblIB4MDM;!D*G
+~j at Is}{{III~Q(+;q6a1=PG91RZG#JMj!!)NJ!5g4NCpae9?;0KA}Ai)^m&Y)&HD2@*5FM~S5Ad4Fmn
++4ThL0MLu`%)ZymhKmUAq5}g`+|f{kQfOv76G^qU~51vf><w3rvO3WqK4prcW at a&oOh5y at oZ4gAC$HR
+MWaD6Xiy9qRNe)t?;vp+P_*Fq{w&u4X`yO403bnef1JDc5TB*{MQSK>gst-veIPniJOp?@z?cCK2t4`
+VKAzyHVZet1)Dy6p82iu(KFdpRZ$WVIDyS?EDsF?i*`Pvg`W2setU=~H$Y=)HoPbCMm?k*R9K>C-_GJ
+(FEZr}XM5;VEQ5c-Y3r^z&r`v+VFTpvMpd3Dc^g#(<5NZTyK7i8!H;u6mP2sb2zX%cO)gZ$%%O at a7qz
+D3J8j!dE6a-Of5S;~~LQwD&lqv=F)-mQi-u6p^ymnBb7F1dVbv;3{BB;L!=wpBsgLo>aTn&ozg3^?rb
+R(#k49W^)#67?5mjv~BK|x-Syb5Z{f&!@^fg6+*1?50N{ZCN96I9j&WhDXA4(dpPN{Sf!GDLiq?iWd-
+)FLQ^2+AIUl7XN+AV}>8>D?e{AEf1joO_Te50c<P!aGQF$Jm!p;j?tV$PX#vAPpO2V1s;WkjxBHjX|0
+)NcIKEzJR?3`Jynd!wIq=a}#sx9ekFTAT1N5TY}_Dz)}PJ9YE)R9|t%$V6*{y4QOdVL<7(^iD3hL8S}
+iyi(djp3|LzL%L4Qjps#?M1VAc4P60g%P(TpK20?4=E*&q at GPmBrXX$>C8jg$w_2j`BvEV#daNH{>xC
+{y_g3`pGz%MMuDu<8Aa11Co1{C*~{Nl58zlaX`zJO&0)v7 at SU{Hn<q_l$sQIJvz at +3hnAb`k092*>s3
+CMfQowUJc>3$I%&b@@kS}wmH&GDxH&<8@~g;(A*vtJxB;t)wt2_L|bIp at 7@_$8bR2 at ZG!3F?5b1y#{O
+U2ss>8I*qnl@~$cG(3G!t{@5t#ud<lSli#hXL$*Z2Lu`UprAh}&<_gqgF5`6u0CL%LFIf<>mJmz2Nml
+<ZFf+q9n_h{+WrncOZSURLG}ZR6)>iNqXYmU-~>U!E~xGe3LS&`wV(hks4feNv4YHbtnKgMvvj|R6Dj
+y0OC2P|f*e(l<O#AgL7F8<mIMerAeRA$446^CRD$GLtnKgMvvj|R6SO~IZ9$=GfT4l{(V##yOjH4%!Y
+{}z-vKp5*=A6u8PsXU{Us0hEZr|MMU`eyR~eL41|^k26=keVk7$lyQT!Nwl}b4`NEandK|MsQyyq9cg
+dBE|J_&$$kTDK&0RaFGzmuSxTE|=d1m*V1=l!2_fGn;3WeoT%-7hjl<y}xF7nHgMg>6BNOOUP%Xn#;G
+78HdArC>n;SinJpBCnuQCSuz++?AK0_A02V3d*R0GOD1ADyX0eE2tnX0a^;Gq=FKt33v&rpMs=ZkWh;
+_?(yQ6P%0GE1_hNsLAgkPn!{5gxSkRAYez^I^*lipPf%VH<m-d#nTT!Qa92pS@%iBpXoQ?WvVwY+pl~
+H9TnVaDBCG|pc!BArRwSqp2`WUwgFf_&UlR6<LfB=K2!+S-%V8mVUMpV?5CNn{At*%%^6Eh*JV+%+ta
+~2tOUPaZIl!<Kp?o!DFPs7&gX}?210oub%g~?n<_mrDQ1<TqX7MZ_A;_Eune!lD9&-P3%8){G<Kfqk=
++eV&12P+=xre?p>7$4pzu}Gac#%Pp+d*<WNJ0l0+aMPj<duUIaggW at a<@T3Hb}mP=TG5m5q7?luXrOb
+L1s0`tOohiAb}dBOM_f!kOmDhpg{&S$ae+_&LE>1q$z_8WsrW1JBf!Q()}WXWEq3BVvqw2GJiojFGxo
+O$+jRz7Ual+d{~eV3ld*Jx+_R+#a&E|BhvjMek8BLOGvPNL82<iQ3c7EAgdH)m4c*EkTeSNMUj3OIWv
+bd=RLppC1hU$)E#74f(%QLq6m^JL2 at NXt^_%hARQ8<LxTKAkkklL89^!|avz4p5$S$0l%zC*97d3x2y
+zlZP9n%j1WAY>?+_#vf}}!_R0vWDK`J3gAw=%Wt?)s*UxbK^L69N{)4>LZqzGa&e&3l5rUC=p2jD(n_
+5rRBAbsR at kC(&7#+G3C0J#UqJwWaOBo82Y0LcT89iZm`S_f=8fY1Si4$yPdJ~V~<@e<JIfIbKGIiSx`
+y6P+*2s%K|0eYVLFUA)H4O34Bmp*jqZ+{)nqx(gs^j<XG8X1j&+FTW>PE;$YGt?CBcQ$UgFWnrqi{SA
+$&}V!enSw|ML^>eS0g(=fbU>s7A{`LvC<i^=>NG=^%3kI at Ui=cUbbzG;EFEC!D8KA-|3n`M7Hm3T(*c
+_f*mS_81123X>8Q;K at GZJu1PeADu<3wJ2W&cE(*c_f*mS_A12!G7>3~hgzKO~OMXG9F=8137{UTie>h
+O9T{YfZwK&b;t9Z>3kQU{bepwt1S4k&d%sRKG4cXAuwqWeXrpwt1S4k&d%sRK$KQ0jnE2b4NY at d-RY)
+d8vwP<4Q+<9goX#V-L>2dFwg)d8vwP<4Q+15_QL>Ht*-s5(H^0jdsAb%3e^R2|nYa>bA6evu?l^;90<
+)d8;#cy++51702Q>VQ`VygII({H3kUC=aV$lz_v~{UTEk?0{TPU3KtvfUg659pLM at teBjBn2z@6_)i2
+1TN>BqlQ<0BFX9Bt4p?@;vIB-4FzkR~2Mjx4*a5>17<Rz01BM+i?0{j%wfQ7&LidYIT`mPO1<MW?cEG
+R$h8-~MfMEv=J7CxW!wwjBz_0^`9rxuF_yyfBk_5{RSa!g&1BM+i?0{hh3_D=h0mB~Q^ARIJb^x;DGB
+Lf2?lAw|Z_89dwG*nHQ0;;5nxO3jZ6`=OLD~t at PLOtjv=gMAAngQc=l!Ki82y(7Z6|0uLE8!1PSAFOw
+iC3SAngQcCrCR%+6mH5kamK!6QrHb^B!;eB?;P|=$M3WCwx2M+X>%J_;$j#6Rw?}q(c`aa66wi^FJre
+?zoWR*#vSYkUN3g3FJ;7cRrnrMaxCYMa#tl7cCYo7A+Pn7A<Z+isIP>awm{Gf!qn?P9S#zxf95pK<)%
+`CvZETo@*-pnlwwACC%=*kmA{dbSI=cA>9e-PDpopJfVEQqIvlf&5NhnZ_%u1Ry4c)b&6*b+ at 0X=1a~
+L6JHg!v?oM!bg1Zyko#5^ScPE%T!Q2VvPB3 at gUy6wle@Sq6g1Zyko#5^ScPF?z!QBb&PH=aEyA#}<VD
+1ESPeSvAb?052jOp%v5h9p(!n_maoiOi&c_+*}VcrSzPMCMXyc6b~u<nF)C#*Z~!{=D-?icxic_+*}V
+crSzPMCLkv<uUgfbRr+C*V5)-wF6mfOj4adLOF9R(HS158yii-wF6mz;^<^6Y!mY?*x1&;5z}|3HVN;
+kHo`Ioa;Px(I{rR`$c|mP7*tifbRr+C*V5)-wF6mz;^<^6Y!mY?*x1&z&iondF)FIG0xpDQUmx-z;^<
+^^RQ4$C*LO&eIPd=@C1P;2s}aH2?9?Lcpf*8qIfoO;}e^jAn*i%CkQ-2;0Xdx5O{*X69k?h at C1P;2s}
+aH2?Ec%7z$JTk|6K|fhPz&LEs4jPY`&5z!L<XAn*i%C-gg^-wFLr=yyWB^St#A#j^?hPUv?+zZ3eM(C
+>tPC-gg^-wFLr=yyWD6Z)Od?}UCQ)H}~zw2uMqevumJcS64t`km14gnlRVJE7kR{Z8n2LcbIGozU-ue
+kasB&)cu2cs8Nm3H?s!cS64t`km14gnlRVJE7kR{Z8OfLcbIGozU-udgpoj)fCSr^gE&73H?s!cS64t
+`km14gnlRBI|1Jb_)frg0=^UAodEAV_m}BmXS-iy1?HW8kw7_7C>p?b0=^UQoq+EId?(;L0pAJuPJnj
+;ymRdQJa+aa0pAJuPQZ79yA#}<;O+!>=g@~<{*~rP3z$2>+zIARFn8XU7Gh_+U!(@yo#5^ScPF?z!QB
+b&PH=aEyA#}<;O+!-Czw0I+zH{%y9ge`+WjImknV(ZC!{+e-3jSVJf(zmC!{+e-3j5&;qZ}`eTfCj2<
+Eom_Dj-hg3CUTADDN-yc6b~Fz<wUC(Jux-U;(gn0Lau6V{!u?i_KCxBZfYc_+*}Vct1>F!BTQPMCMXy
+c6b~Fz<wUC(Jux-3jYXSa*(HWQ95Hevu!TcY1F@`Qiu>;5z}|3HVOHcLKf>@ST9~1bipJI|1G~H=o3k
+z9ir~0pAJuPQZ71J_b~g(C>tPC-gg^-wFLrz;^<^6X2Zy at 4OF(U_`rLv<=`p0pAJuPQZ5pz7z1BfbRr
++C*V6_-U;(gSa-s at 6V{z`$MYD`?icxic_+*}VcrSzPMCMXyc6b~Fz*EYCSh$7_a^~-5-TPVV$OY-8~f
+S)B0u=csbN+8VczMX_WLKwA)o%0K9C#0cLKf>;GF>Pyf3%Hes;ge58yii-wF6mz;^<^6Y!mY?*x1&;5
+(-ikK6#hCvjmyy>o6piOKAKjlrA;Bnj}HfbRr+C%8Mo-3jhaaCbtu6T+Pk?u2kBggfVTj~BlL(w&g*g
+mfpQJ0aZ(<W3-W0=W~&oxtq`ZV&e$ggYVJ3E|HB%cn4zFA3>RNOwZI6VjcK?u2wFq&p$q3F%HqcS5)m
+!krNAgm5Q>n?o%2OYv-iyA#}<;O+!>C%8Mo-3jhaaCd^c6WpEP?gVoum^;DT3FgkVFZIVzcE3mxxI4k
+!3GPmCcY?bU+ at 0X=1b651?U5ia3-k_rqWA=O=i2 at bhO+xbk^tWc_)frg0=^UGo#5^ScPF?z!QBb&PB3
+?Zxf9HtVD4OTj~BlL+ at 0cXeSUCvg1ZykosjN?bSI=cA>9e#P6&5GxD&#i5bj*NXcR-){USs_?gVltkU
+K%!3EEE3c7n7Mq at 5t`1ZgKoJ3-nB(oT?e-d~c6q3nJUBG7h%wiC3SpzQ>0CuloC+6mH5kamK!6QrFW?
+F4BjG&^G-Zo*K$Bvd>7Haf^jLbcP2L(3;1Ng(Y6X(vcKLD~t at PLOs&vlE(~vFj1Bk=-vs1l3Ncc0#o$
+SSCT+3EEC*b^@{!kez_+1Y{>5I|11V$j;bt7Ur at 0MUueS3C2$Fb%L)Ge4XJt_!#5{UY+pjgjXlLI^op
+`ug;rSV;;L-<Og1z at ahCrC#X6>)d{LjP<4W;6I7j`>N$M^a-;qSOy_;+F-EcbMScL(37byXbi$?+ES+
+HK1WPAGIw8^tiB3p#LZTBAosj5^o%hEmcE89EL^>hT36V~SbV8)l<3Q?gh;%}v6B3<}=u8jEFfHKdyf
+2l;9=;@4I>FKjmQJvAf~6BIonYw%OXvPV-}EOsLX2S236oBkbmr!Wn8NNCA%aaOY&v1n37byXbi$?+H
+l48PgiR-GI at 6m%94cxEFrB&cBACMN7a at X8Cu}-l(+QhS*mT0C6E>Z&>4Z%uY&yZw364&1bb_NZ_a!Kp
+!k1xK2b)f>&;%wXfI8E`=nd`vq$6YsN}W*Z^lCgqCQx<e&c9&*d%Or1s5(K_393#|b%LrBRGpye1XX7
+`zsOYD8?pqdPEd8`zN8KV*!?0?py~uwCzLv&)Cr(Y0CfVW6F{8+>I6_HfI0!x36oBkbmn!>FMbJZI$_
+fZn at -qt!ln~8ooMb<Q^2MZHl48P335#UbpoanFrD|MPFTE`1W+e{I$_fZn at -qtf~6BIoe=4SNGC)(A<
++qmPDpe at q7xFGwK*ad?`1-G6D*xz=>$tBSUSPd36 at T<bb_T5ES+HK1Su!vF`<VE;>y}}uNb=?FOnn{F
+>E)!&>hyZEYs>f8gbH=sZUjT3XjsVr)Aya#V-LyConpJ(Fu&s@=H~H0`dcqPKb0uq!SXIkm!U&CnP!{
+(OG$q7rz7|oe=4SNGC)(A<_wvPKa~@qZ1gNK<ETQClET}&k27{_;c32tQxD<{USeb=!8Qj96HO}9qb$
+-0!Ak=I)TvX7nJdubHC>0KXkD3WLUMA1WTV-yo60BY&v1n37bx^bb_T5ES=surBex;PMCDUq!T8c_a!
+J;weI)O3H5J$9>D at oCxAKu)Cr)@OHYX<fKn%vI-%4FrB3K{Uc0^oTh{%aew5}27Jxbd)Cr(Y0CfVW6F
+{A?>4Z%uI6A at 6364%kbY8c8qwX~!(g~4Hh;#y at 6BwPq=mbV5Fgk(J34~6yqp}BtP9St%zQ}FgsC!Ldb
+ONIj7 at ffA1V$$?I)Tv%j80&50-+NKoj~XWLMIS9fzWw>nKTxx`$e39(Fu%BU~~eb6Bs=eXNYt{q!S{Y
+qDe?}LZTBAosj6fZu>^vYeJ+GBApQFgh(eaIxoe^w?UFFMW!XGfY1emE+BNlp9}t6&&?6BTQ3ENE;w|
+-p$iUOaOi?V7aY3a&;@@k_;bOZxp<79Xm-%-pxNe#n5^#ir1?p6uJmK$7DT!r(gl$&h;%`u3nE>R=mJ
+6)5W0ZS1%$5q%R#YL-S6;qHQ4kq=wr~wpbt)<qZ$e<U0~?~OBXo0z|jScE^u@`?>K<E*8)oySh~Q{1(
+q(bbb+M{EL~3 at xM;a};G#v)!j}tL_~@M{!!mWhLCc_J&@yNlv`ktiEt8f>%j8)}3+Fd!k+eu!)IGl!>
+sGWZS{5yfmPN~=Wzn)|S+u-()<uhp78flpT3oc)^|TnJ?)ReQMN3cgg_*Ga9ay at +(gl_-uylc?3oKpW
+=mJL<IJ&^mb?nQ5FiI~4mM*Y#fu##9U0~?~OBYzWz|sYgE{ODmrxrN6z|jScE^u at mw|%4TwZPH^mM*Y
+#fu##9U0~?~OBYdY;lC7Ey1>!}jxKO?fujo?UB^D;g$e3 at 5go8}L8Qy`)?QD8r775S!KMo~U9jnbO&4
+ssVA2JXE|_#3w|%4TwP4c)n=aUN!KMo~U9jnbO&4ssVAFMY???I(njt}e=>kmGaoacQUJHC&;NyZ-72
+Z~1g36t`SI`Nyx8i{)r0GZyBPex2r|Y=65p}Nxr7kFSL8%KiU9jnbO&4ssVABPgF4%OzrVBP*FzJFx7
+u2K9eQ5yp<)vWL1)DC|bit+zHeImkf=w4}x?s}<n=aUN!KMo)T`=i_Nf%7oe%mi8*mS|B3pQP_>4Hrc
+Y`S361)DC|bit+zHeImkf=L%lx?s|Ef2km*rTayGVABPgF4%OzrVBP*u<3$L7i_v<(*>I@*mS|93npD
+K={k3Q9 at EnOA~mq-f=w4}x?s}<o37KFQ|yC<0#Fx#x&YJ#pssW4LjDl<c-t>2D0M-p3rby3>Vi at il)9
+kQ1*NWC;%Jx14XC<6)di{^%h7FKjX~*t5h8eX!K({iUGVCHR~Njx;ME1ME_ijps|#K|r-Q!yhi3ac83
+v{MMTmgb1+*@pb-}9(US06&f>#&3y5Q9XuP%6X!K({iUGVBzagVqCk^){A(7J%u1+*@2H-oAa<hmf&1
+-UNBbpfplXk9?-0$LZ)y2g2rxBZd=UKh~1fY#-gJmPv5<hmf&1-UNBbwRERa$S(?f?OBmx**pz#y#Hl
+OA3Nr5bT0n7v#Di*9EyQ$aO)k3vyjhvw~a~<hmf&HGD5*Y3wf{z;1NE$Q01J;ME1ME_ijps|#LT at alq
+BmtXOQ4?XAp9c_^%$aRfR^V at z&4c{4=@;Xa=?gC#I_`1N?1->rub%C!7d|lw{0$&&Sy1>^pHaEgbbia
+rb7`wpO1->rub%C!7a$S(?f?OBmx**pDxh}|cL9PpOU1M`23`F;fBtftXa$S(?f?OBmx**pDv at W1^0j
+&#YT|nze3{jBlf?U`A<vkdPmx5py1iK*D1-UNBbwRERa$S(?^6PGZx&^*2 at O6Q&3w&MR>ze01Ui=a;c
+7d at Aj9uXC0$-naj0M9k7<R$13x-`V?1Etz47*_11;ehpZX1ix{US+f7Fc${vI~Y?FzkY17Yw@~*9Fxn
+07(&Kl%AKCL%lP%UyU*7evu at lX1^r1402tN>w;Vt<hmf&1-UNBbxo%hk%3$n<hthet1$-MFQNmquIVM
+AWh0vV6Y>MJE}(S*tqW*f(^*1pfYt at HuKTiTj6wH{`~a;BXk9?-0$LZ)x`5UNv at W1^0j&#YT|n!CR~N
+jx;MH~WYK*~4!K({iUGVCHR~Njx;ME1ME_ijps|#LT at alqB7reUQ)djDvb?Y7KUJF!Rpy~ou7pS^G)d
+i|9P<4T-3sha8>H<|4sJcMa1*$Gkb*)_&gbC<=5g1T)fvO8sU7+d$RTrqbK-C4RE>LxWs!Ic*Dg{gzV
+7k`MlcD&#Ujzm~T>$C=P#1u at 0MrGbE&z1_sB3u-Li(RHLt3EJ1)Z+7^JM7!?iZ;6P}lPFT+~QpUr_3T
+QWuoEpwtDWE+}<DsS8S7Q0jtC*V=VKX!`CKsew`#l)9kQ1*I-1bwQ~MN?lOuf>IZhx}ekrr7mLjf=*Z
+LJQ+&<rJ&RWr7kFSL8%K$J!=1F at K5qj@ej=r8BleBs%xL=PY>YV<HaulUKh~1fYt at CE_ii;stZ(Ipz1
+*^T=43GR~Njx;ME1ME_ij_yc(6>{US;5>Vj7nyt+Wu1*$Gkb%Cl2R9&Fz6Ysd-)djCEcy+<6>*m#H^X
+?aMf>#&3y5Q9XuP%6X!K({iUGVCHR~Njx;MKM7Een4~vwdC!ZQlKIg#|!o0(1&|UEu2iUsu=&H586A{
+0My at Sm5gdUl-)MVxN~rk$1ny6a>2<*A;e-OhK*-a$S(?3cYEcfM9{I3w&MR>jGbw-^oS4_$6TM0%I2#
+yTI24zAo@}fv*dEUEu2iUl-)MAlC)CF35F3uIs*p3ibU`!0Q597tp$Z)&;aKp!KQ82)QoEbwRERa$P{
+{0$LZ)x`5VoUy_gd?tT#`pmhPQ3us+H>jGLA(7J%u1+*@pbpfplXk9?-f>)Qf03G{$7Mi>JMVx at v1+*
+ at pbpfplXk9?-0$LZ)x`5UNv at W1^0j&#YT|n!~?N_6 at yI&*;US06&0#z5Nx<J(hr7kFSL8%K$T~O*uCk
+T;AeIQo)z6=J<-TfjzQ0jtG7nHi7)CHw3D0M-p3rby3>Vi at il)BR1kQ?Z9-Iu<hxw~I<5|p~2)CHw3D
+0M-p3rb!4>JyuL^@)8TJn-uB(j&lS<*oxkb9cW;641JU)&;aKpmhPQ3us+C-N^GH*QG*2#}wqcfYt at H
+uG)1VXzrH+UKh~1fYt at HE}(S*tqW*9Aa4b^F35F3t_yNqkn4h67v#F?yvK`Q0>Lf_b^)ymXk9?-0$LZ
+)x`5UNv at W1^0j&#YT|nysS{Kl|?z&9$b at z)T0j&#YT|nysS{Kl|fYt at Ho&ethS{Kl|fYt at HE}(S*t*d
+VPM%`-xuM3)6<?A9&P`(1mmDmefRYECfN~tHM2m~r+(15R9H?KxFcfUxIrckSf;xE)&sos=JML{WW+4
+l-Md?W~7J&dwz$MdM=?iX<aS{Kl|fYt at HE}(V6s|#LT at alqB7reTl)CHw3D0M-n>%IgKwfs^5>H<&~f
+Vu$G1)wefbpfagHeImkf=w4}x?s}<lP+*{furl%@jQCC`$cNN(gl_-uyjGB3nE=!Uan^emM*Y#fu#!^
+UEt^fM;AD{?k@#G^}bB!2sT}?>4HrcY`S361)DC|bit+zHeImkf=!?D2f%azrt8}0hfuveUepnQx&YJ
+#pe_J)0jLW=T>$C=P?tv8Z33V!0CfST3ou>R&Xb{ayI<r7KwXy<s{D!O2oaRJpwtDWE+}<DsS8S7Q0j
+tG7j(L=JD#WRwV>1mr7kFSL8%KsU6&K&V^Bke8vyD8P#1u at 0MrGTu4^lwEoaod7L>Z6)CHw3D0Km-3q
+V}}>I*=90jMtk^#!250Mr+N`T|T}fa&Xb>mBM|F97ugpuPaq7l8T#P+tJ*3qXAVs4v*`1)IKL(-&;|f
+=N$c*9Dlqp10ni?)8FAU$E&5HhsaSFWB at 2o4#Pv7i{{1O<%C-3pRbhrZ1TE1&O{O(bx0VJJh{i5a|mT
+eF38{VDtryzJSpeF!};UU%==K2z>#eFCg><guZ~#7ZCb-ZjOjb?S2<67cCbp7cGO9LCc_}7OePO&^&l
+x_ at 6Wjni1pI?UzvZdV!@cu=E9%zQEEKSo#7>UtsAAEPa8cFR=6lmcGEz*VCyjS`;mAd7$p~dOD7xWzn
++!@0#u%*^wpM&9L92xDnTq#|30PpxMZf94VyG{2gultK{&U?%vGe13Ov7$7J at J={3`9rq at ibnO-wJR(
+g%}8tF9}nU>I*Z{F$WUehu<Eu+&iIxVBqGCD1z(=s|Oqth}vEuqsAIxV5o5;`rR(-J!K%{%?vYg$I9W
+pr9br#*DqL#I7-+C!&3blN|s{d3wsr~Px<Kd1e3+CS&}vg%Hxf8#ba?V-~iI_;s;9y;xz(;hl}gKj5;
+w1iGe=(L1ROX#$EPOIm9-v`o(^l#iorxkQsL7z_UX%C(D&}k2y_Rwknoc7Ndj?mn+e@^@7w13WQkJvf
+%Z`?+wJ#<<@rxkQsL8ldTT0y7Pb6P#8)pJ at sXE+mo`H^0&k(uYay{FGxqtkcs>FHqjt!xFIR?uk$omS
+6j^_=0}Fj^zi>N%~R)9N|jmrZu&{2RB?X$75D&}jvoR?uk$omSB4i(*<mpT6*={d3wsr~Px<Kd1e3v_
+9WS^IzISr#*DqL#I7-`Z|#I&}k2y_Rwknoc7OY|D5*E(RM!lk%mY5ZtvfDNm at pyWpr9br)6|nMyF+TT
+1Ka3bXrEIC3IRsrzLb+LZ>BkT0%$b^PMmM#_g2TGCD1z(=s{&F~UFe>J3pF>9mnfo9MKOPMheoiB6m7
+Xy=_yk$>YhKkO9MbA_~#P8;d8kxt)V9KNEp=MQN&oz~K69i7(E5syP-q+RFJDe`aJ#;LV*T1%(3blOO
+t!;dyot)<giI&GxWCOU1R(<VA?qSGci+Rxi}iu at b5aS~q;+i<p)PHXA3mQHKwh!pU!aF?1Xar2v{Hqm
+Jl9p$^dPoKADs*QBoNT-c-+DNC3blOO#jda>brzLb+LZ>BkT0*BKblN}1`}wm at jQ`ReI_;s;9y;xz(;
+hnQq0=5ZYzp5~v$TXxOX#$OPD|*te@^@7ct3C7iScjT#;HAY+C!&3blO9wJ#^Ybr#*DqKd1e3+CQiLb
+J{<r{d3ws$NPEvPK<x!Hc9QFPaD0oj84nww2V&6=(LPZ%jmR(PD|*tgicH7w1iGe=y<;muM^|nxSft#
+MyF+TT0y53bXq~D6?Du2o10e8Y3rP}&S4YUp0>t(tMC0i4u9t*X%C(D&}k2y_RwJqu%6+jWpr9br)6|
+nLZ>BkT0*BKbXr2EC3O6L<MzCyWpr9br)6|nMyF+T%oD|p;Rv0OT0*BKbXr2EC3IRsrzLdG?|XcEUb3
+47Jp5?CxcK7d-(K_^#MxM=k8ca=w3|-5>9m_pJL$BOPCMzGeSPap_&08Y)owcNrgQkXM{ipT>a?3qyX
+mx>PP^%}n at +pwuvubHR?}iS-{-443I2`SbhV&PyXmx>PP^&ThBqy!(}FrJsMCTvEvVCiIxVQvVmd9Rb
+N0Nt^WWdNovd0=rv-J`1DdcM9uXdbMyxG$+ES-2b=p#=Ep-mJx0BTO`RY!6f8#b{?Ud5;CVejvrfTLL
+GTr=Sp91a!Yw&pnJEOF!POIvCpRev*_cw08nm#<mjaaMdw5m?4>a?m(tLn6>POIv)s!prwuoW`DMD45
+d_0^r`{>E*@+E=H2b=p^_eRbMbr+sw}Ph)Rj`|7l>PW$S#uTJ~ww6D(BS9gZ{m-f|ZU!C^VX<wc8)oE
+Xy_SI=$o%YpfU!C^VX<wc8)oEXS!m)Of>dtU~<2Ft$t<%yvEv?hi`h;85OtraAo9nc>PMhnrxlWtww7
+E{3>s-5 at tdrZ{xJ^<U?6kQ~o9nc>PMhnrxlWtww7E{3>$JH}o9nc>PMhnrxz4xgT_?A{aT}sG*lBZ}H
+rHu$oi^8LbDcKVX>*-6*J*Q|HrHusotD;VX`SnPee365)ABkkt<%yvEv?hiI_;~|zB=uz)4n?GtJA(Z
+?W at ziI_;~|zB*rD-C69PU!KXAi(b9?X=$C7)@f;-mey%$otD;VX`PnVX=$C7)@f;-Yd?S13G825UZ<s
+XT3VmJv(LR3rx#Z*?p}~{{_gF?-%;CKr_FWRT<6<#sngcqxLt1_u0C9Jj3%k2by`}drFB|br+szWSEq
+e-+E=H2b=p_w>#I9Y{f*oFw69M4>hSsMa045nmey%$otD;VX`PnVX<wc8)oEXy_SO0N>dsF8PV0-bv`
+$Oww6so3>$J2^OY5|>PD|^wv`$Oww6so3>$J2^`|5msbtk63+uJ0yrA}Mww53j4>a?X!Tk5o>PFw1<r
+A}Mww53j4>hM({oH6&rhH-md(pQAEs!prw+&c~R>JJwkqnV<w4$oGDbu&=sqW0BkU!AY7?sW7wZZp-s
+I_;}Zc#0dWmey%$?LBJK)#f^Ft`#1%My&O9T3_c`7wJs&FRiiD8au7A)A~BCuTMLow8Kt2?6kv9JM6T
++&cnYpU9GRv`a0kDfpjMN8 at It~jh)umX?>m6*J*v7*4Jr$oz~ZBeVx|VX?>m6*J*v7*4O#I52W+Y-?*
+KaT4Sfpb=q8a*N*;Quijv_zE11ww7x#!1~y&ou+t7Z?XdHF=TZIKYuaU}U3S`Kr(Jg1VTV`zcGzi$op
+#u1hn;rVX@?#5kqQq%Q}umGe&?URaht9d+G(MkcG+o%op#u1hn;rVX@{M5*lCBIcGzi$op#u1hn?qpe
+e365(=I#hvePa*?XuGjJMFMf%e=J6PK)fc$WDvww8&12?6kv9>+5{q2hu6$Z`{U-Z|4usVB^&KI<2qM
+`Z}$z)A~BCuhaTEZLZViI&H4QtoVH&NavV;X at i|M*lBZ}HrHu$oi^8LbDcKVX>*;H)@f;-mey%$otD;
+VX`OdHwsXwixD8QD>$J2^OY5|>PD|^wv`$Oww6so3>$J2^OY5|>PD|^ww9fZE4V_v3#%+FDTBoITT3V
+;2by`}drFB|br=@k;SEqe-+E=H2b=p^_eRaORx--k)xQ$Nx>a?#;`|7l>PW$S#uTJ~ww69M4>a?#;`|
+7l>PW$Q;9-HsHx}SSZ%j>kXPD|^wv`$Oww6so3>$J2^OY5|>PD|^wv`$Oww2)0}&3rv#Cy>8!o0>LMq
+0*pI;B7naWBVTT91hr*Hr{md&WN-Bp3=K12xqq6=c_wy{0paMoUU*p!s{C^W4t!;%E8pn+{rx2l*g>Z
+?>oQN;ni%NtkcHdxXlmI?PGM>T&F*f{lA7NTSN9(orYRur$u(!VW%B-+F>W(>svqfns(V~mz{RmX_uY
+W*J*v7*4Jr$oz~ZBeVx|VX?>m6*J*v7*4N2?4^iidzj2!+zU*UfTjSLFI<2qM`Z}$z)A~BCuhaTEY)e
+K<(+)fBu#@lgt)F`hZx7mKr(Jg1Wv3l>+F^$dyN^TKVW%B-!oDXDKho<qP%X0aeSdYQhQD$7fd;FEc3
+Nnsh4wl7cfI9JSKI8g%}(3ww9QU<%(>A`Rle7^e(p7GwbNERZMD- at J8iYoB0DXz(;_=9veP0vEwa-hd
+wy-QdpTT+%Y9AmXJ7lL!{1$8vj2JadHA*2?j>We0XW;u{n~2x(p+-g;kv_hhwBd4-8Ds>DS8|+M)MVR
+zHZNb*y8N>`z{$xj3!1CqlwYj)2?NAFS#Y`l=^L}(0QXrF=Ma^-Osz5J7btJ%ov9;4r3g~I2`|Q-NSV
+c*F9Xf`w at O$*xnhWhdB&%G0??87Xw`kbTJScOSTK|B?DdDh>PpqT=(X>?61>GyqDi`x_jWSy?8Gf<7S
+MTF>c0q7~^4#hcVdlxSe<}x$eVt*&w&QcrUr`0&nM)9_M9 at moZ+(co~C@(Atmpk|gh6Fwo0D>`ULKyq
+63R1_%RW=gWSswtr%vFwp)l0}<3As6$YPptd^iC0iX5&>^5~d;c2(It29lICrO+?m5%#q1g!bH>8!#X
+?`>NHw;8thqMl9ZJ*vf-?$OtMi5i>hW!oM{65{?38#l4qeDiAjPAaRLq>;;&hF-G#vq$)7WmuU_l9f^
+*&MRjlHENY;4ptDNvBQo3BMFWWasP#!3;@c=j^{SBz0FOown2cGlP at YA+PLN`J3;JWj~PHKk?ZIew6T
+jyP^`_A-r?#zcLWvWe>gVgFu3Z1kY|wNpjoE|Hpqa3H2x>cu4S&;32_7g4x9MHzfFb@}AwAl_QYgA;C
+j}ThRBC>+<nTCL#75Vhj>IyOkda{vMINn}l}=?-1UW_SQx&d&vM{0Ft}kYQoIZ!w}vfylwE$d3IOq;Z
+j_(1$n=+>pc5&7ne7e50`r-{*`&QO+H6CodVc8>c_62KapUOV3A;vV3A;vV3A;vV3A;vV3A-EB=Mx}c
+YibG^f)9~B$(a4e<Hym!6L!!_zycT{zQyLjOG0s1|Y^_iWPa)`JS8ZclZ;zW#_t|$gRk&m}*5@*?0IS
+(kjv_W>+!0ihzoMihzoMikEmMnI4CrvcLOJ%(5b*BBQ%~s>rCAT}3uUHbpi?Hbpi?Hn;O<;$&v|*S!n
+-fb5SmB#{-76_M43VxN5?D<Uf<TfMtSJ=Z0wBC2}#x#{PE`zOXAvLdn~vSPj!X%%S|X%%TL4D^!gl2S
+9pnt+;snsWgrl7Icv;qNXk*&mdQnv9x^nv9xr0h3LWO_NQNO_NQNO_NP?F2Kyu<B(C4QIk=VQIk=VQI
+k;<HZ}nLna9~=(`3_R(`3_R)8CWxGy^81-i=PlsL80wsL80wXcggP$0VR8peCRupeCRup!==kOc^~4K
+{Y`&K{Y`&K`kkGUogF20?cSc*4O?uH;0AD at BS}C-TQmfj~Mq)3`uU;knCr2YjSIHYjSIHYjSIHYvxoF
+&>F+ZK5nGc&n8Wr4Vtu?w3 at V<w3 at V<w3 at V<w0iFi6RY=5?p+|ICZ$D(6K~MO$)Jg>iEI(##QVRyCoQ9
+qTa(*EZV$OV<n}PJ9`bs~>mje__uU)L1`oMC<o1x;LvGoR_VBbG!polAze9M>?B73JG5{0nA++p2`8)
+ca8_otR5+}RyF$q4}|7Rc)%x<N>LxKwvC#3Qaxx>@J7IDAB195gR at 2jUc7d#~Rkl;gt*%It`NbupTph
+|JFKS+WP3I6UXrv~r-G@~%jo@;++%$eXJ#)lXmV$2?nzr%ccm~Ri^J%slV-ore5$n9aCJ>>O}*F#><c
+P?N~1rNDB<o1x;Lv9bbJ>>R~+e2>m#B<LY4- at OY+V0EhA*$bf`_2W-x!@tPhsYixdx-2IvWLhXB72DJ
+A+m>w^^np-N)Hq3A)tqVp6u(5IT<_z^&+SjLA?m-MNlt-deI&71YV@|Vs^cL`!@{0o^d?-7g4?DyEk_
+;aFN!Fv|gl at UC9q~(=~g^XhilRvKNtM^R?f_JbRJSi<DlZ^!m;P%<14oS})RiG2dPU^&+SjLA?m-Zui
+aB^S_JSU3>os=tV#;0(ucpwu1amexv`L^X^|UaqrJF8fm at uJ`vQ5pkB<g7XkeqA_965(2Iax1hgo^Q8
+*pE2<k;pFM at gz)Qg~A1oa}Q7eT$4Sj!~l+p0H07g4>4>P1wqXV23PXM<G}@9)(`ZZC3sk=u*hUgY+A_
+GcJ~++O7N+DBs#MqV%SdcFI5b2uHm$n8aLFLHa4+l$;@<n|)B7rDL2?L}@ca(gkcUgY&AuQz$Uf19+!
+>EKOnZ*t3K-M^d2-bD5$viEPdnP&{rdUHZ>lhT`%-lX(qPQ3{z8yo*8zq36KLA?p;O;B%wdK1)}pxy-
+aCaBewv%k(aDZO{Eds2Fn()E?Iv)bWo at Fuc1k-drRO=NE(dlT842;M~YCbBn?y*VMcnNDv4dK1u_fZk
+{CO+SF$KQRVDy$R|~P}!#bcN5f`pt4>ddl;ruHWL4pUi3XTMD- at B_jfLEaXNSt*_+6+SLu%pNB8~s&B
+S_>)|<4lY5VVHV!fGIZvuJ~(3^nX1oZyS1uo78Z-ROgRJJJ3J|3j?e)s<wXrB(!dNaG;r1U1G_ued0d
+Xv&S- at V~vknOmCH)*{|>rGnuruLn(Zz6m1uslST{jYxyQ|v=jt1~BO|Cf){eD{S@!H4iZg!du558-_X
+FMCq|N;cg!od0E<+5f+|WB?NUFvUJ3_tEC;;#BY<!ECPldr0s at g4y`^_mJR+6M~0#4rl+Gfk^N}f*<D
+DhtNKR_ThU5_{HmC2=7C9AHw?(-iPo$r0U_xdiDX?JGDn6ybs}hn64f|`w-ga+Bxm!Z15qx58-_X??Z
+Um{r2~e+lSmf%&rfSedq=DFif!zd40(1LtdZnT;S$xu+nqd?w;%oy7!VH3GYLAAHvHXv%iP%K7^M|Wq
+%K|>qBTCLi>Dg)oxA(A9DMU+lSn;Y4`6TVtZQtklTmcKIHZxx9rdQdzf7x^7 at chHlF@H`R)y8gAcPTd
+l~;8BKs0qHZ=XcMD``JFSF~*?D`T=w%Gl#A at 1)bpf3S^3F!Ns3*4L!zGU<zqc0hK$>>W)Uo!fV(U;lv
+C7UnVWaIE38;}29viXwDmu&84rTj|uIK=ZMo-gryz59VP2Jw8EQ(t2F63drZzQpn+mM^h<iRDWyck at z
+yhk6|1`I4KLc)q0JC7v(we3?^UV)+uwmsq~U at +Fopv3!Z;ODuOYQ+{oF9A?ya_cSM&FUfpK=F5x!%Ou
+K1#=n;wzU1&Fhc7vN$>B>5UvjvcoAPVZ<B-Ri(%Dnamr%aE<iCXRC5$g&d<kQH>16NmUWr7$B=RMZZ@
+zoO8R1JZUy}KfO!gK3y(IHxCVffdOCnzq84?*184?*184?*1ncsJBI3*0p49N`149N`146pkkks*;Gk
+s*;Gks*<#rn4vCA(qk3I4>39(!i=fi04+HTQhF;6khkYbqTTDckbbJ|JuJ`0J6Dn%<{dLdO0QBw at 7;`
+zNelcqx*uquXFoavabg_QSY1<vbi%=pQ*ENBEAEE^XJPsVF+pnY6xlwY6xlwYOcL at w?JX8$-S4{5>gs
+c8d4fkns5GmIVTKh4QUN&4QUN&4QUN&4QUN&Wk>U0NNJcgLqJ17LqPMrmwGuT3_%S+4YOv*X!hychk=
+Y{?+Muq*$mkX*$mkX*$mmt_g?DdoDjGg;A()Y0j}D+a(TGCxa__}_x|9+<;x`l41YfiFbpvJ?xUY}@1
+GcG7^p!V^ol*}d&wAL3^9fnL)-{)U2$D;U2$D;U2Q+qPruJ#R)bmf-ET9x|I0vTATy8|$P8o#GB at Hdz
+~Nel8*#YqH-GlS at ck2G9LCtU`g>&tI{g2|K>ZLt(VX9R$!Hh1<YJVIQ7&%D*Q at rU@h9JpGTJ`wH#h5M
+pqqca8R%x9n}Kcyy16Ac*L}F|!!6;*pG{gnDBnLZ(6j%-Ko0{w4D>M2!$2<sz1)bG8}V}8m+QV<_vN}
+T*L}Zx^ALf3h{70Qj4(zRBa9Ko2xEjX!tqHdYBi|UpjLxg^%39W^t^D;t3j^@y&Cjt(5wE3OU59mfYk
+t2Q?T;8KTb+ft3j=1wpVTLdl=G+UJZIR=+&TCGo%%@8q{h~t3j;>wHnlFP^&?$X6RM<m_4!YVMr^4H4
+xT7SOa0rkXEc}u&TkT2CEvZYOt!QRrQkV642Q$s)_G$_&pgiIs^}#8gOdBsR5 at 3oEmUyz^PfB+8-gC;
+M9OqGxv9QdSW<p?@uuh83m^XoEmUyz^MVJ2AmpjYQU)hrv{uFaB7D4OIt%U+dT{!9Wshg4MH^t)hzSv
+-5{ti)ldizFAM`y%@9z8Y7nZKeD~%h0|a#lDnc~~)l{g=Te?B02B8{+YQ&rhPEB#@?6DB4L8xX|oDl4
+PjaYAyh%7=i2-P4|gHR1ZH3-!pRD)0rLNy50AXI};4MH{2-kW}czkgy3(uz<GLNy50AXI};4MH_yIt8
+Z&oEmUyz^MVJ2Amr4jatOG$04ZT)PPe1P7OFU;M9Oq15OP%HQJeU|AGNXDMB>})rgJLNpTNDTE)|>y&
+h>rs0N`LglZ6~L8u0y8iZ;PszIm*p&Ep0wDV^J+~W{bNNOOdfushK8f^*)DkL?K)Id at LNev`5kkmj at B
+VwtYKbzeihj>C#qm2ylgro+N8c1p&sez;hk{U>AAgO_*29g?+NbmgF*#7IEF8=Q3^5OF3k}(J)BsGxK
+KvGkZGX2HiQiDqkE;Vd-yB}XCsyzzv1g8d^8gOdBsR5 at 3oEmUyz^MVJ2AmpjYQU)hrv{vw-Ts!S_Bg~
+7ml|AZaH+wi2A3LKYD_F4sez;hk{U>ASlY5 at Ke*I<F4d&=Fk}>$8eD2{sllbj#M8`>Xw;xlgGP;aRAO
+mj2|x`1HU8$$t|sW87=w5MQ3FH`5H&#508s-(4G=XZmKfBS?M|7o_lN}4&v$QLB0x~ls6nF!jT$s+(5
+OM928|jtYS5 at bqXvx{6HowZ0I2ade~Pn03~FjnXTBe0Akqp%4G=Xz)BsTfL=6x%K-3&k3P242HD at +!=
+A^I?bvV7BGkeKE%%4Ei08s-(4G=Xz)BsTfM9m?fhk#;FbH4f0oD^bEgFy`jH5k+!f(kzk{50^>z)u4|
+%^{$$)4)yxI}PkK=bJyfGNFHB41$V04e~U|)8G?BIX<A%9I^>E4cIhb(|}C_HVxP`=X((~Cx)QYfKCH
+C4d^syA4xI_It}PFhirmP12#>u>12P9fL5H&?h`;Bdlb?NKMnje2R7Y-i7W;+7}Q`;gFy`jHOR&Q2SZ
+ss6q$3j%WnvK7=p^%$Jvv03~Df_Ik4&83(^Wi4G=Xz)BsU)2q*wG0MuN+y*G!mLLh2 at r~#tpBB&VDU{
+HfW4F)wA(<%Hk7ukfJ26h_QX)dyP%|17W(?aBFkf%YO26-CfX^^Kuo(6du<Y_Lli8#&0;w_#^*lA#=*
+-d;2UJpZ1;irM027Vg&Y2c at Up9X#!_-Wv$xd`Y*K*6Q~n+9x}-PD)h^*96-bQ;iUK&Jtn26P(GX+WpB
+m_)&*0h<PF8n9`uy;tP!y7$$fiy}_X<j$VR!A}D}%|&EErvaS?befCl^dg`*)8I^lGY!r(IMZCucW*c
+?#G3|h8oX)nroo#AZyLO5E+$c&X>g{&nFeQ?I at 4+WaQI-<T-)V0SUn0sz4qRG|ITOx6?qzTW00pop5`
+W?h|^S at yl=>0r-7a3Ue|A~{`F5Uf5$-m_B$Go!Jr0%8VqVMsKKBHgBlEKZla1k4fZtH)7<**4JU;d)L
+>A9K at A2qH<5*(27Vg&Y2c^1nNAU>L7WD08pLT3r at 6h)&Ba+E at -)cPAWwrl4e~U|(;!cSJPq<RH`6KNG
+>Fq6PJ=iN;xzZQNxL{JM4sj*t)SC at PIHr1ylL>Jxk)R|G&s}XOmmaXdmnAG2{Fz6>}%V_Ss~OkP}4w7
+Q))WdD-cw?X>NkLZ%Xz&?IxfQ(?CoEF%85t_q(rcHz$Qq(?CrFH4W4>_ojzQ^yVd;B|z`Sg>2$XgEP%
+dHX){gm}VCNk(ht|)9`oV(p(-cFD`E`A1+ at m8G}g_Sel1KVoHN44W=~D?5n}eSs}JGwI%Nq12D})Jb|
+SFmIhcFU}=D*0hR_>nul0oO7rkZlY392ZcYjTrU94+U>bmF9x at 6n4X`x8(f~`tVj(^hG3e5uOM@;Ax-
+`3Dh`97H1Qlf(lxa|=L7C<usBG3iQ#sGxVdhkbX&|P7m<D1Rh-r2K5kcu;NGr-TDAS-!gEGxSS|8GiD
+GjDH&mNPMVoHN44W=}h((HmFGScG^RBUOmrFjS{rZkw+U`m524W=}h(qKx1DGjDH53AJn at ZWjI!%5+@
+k1&%cz%&5UJOs6{bh5XXw4zIcE)BXg=+dA|gDwraG`rl0aQy3^9{%p-k};S>c at Utcd5J8<G!WB3Oan0
+u#554oKuiNM&8zR;a83v{4b(JH(?CrFH4W4>FKLCC24WhBX&|P7n5M+!P7DUaX7?s03Oz~}aMNoK at -)
+cPAWwrl4e~U|(;!dt5?RD)5T`+$25}n1Y2L4kdN?ISo(6du<Y|znL7oPA8suq^r$L_PWllw$25}n1X%
+MGDoaVj1=Z14a<Y|znL7oPA8suq^r+N2 at +WSmeU#3&UX<kwaHVxP`VAH(Y<@b5-aY$>?>Fn9%OJqT(0
+i6bP8qjH8=2Wn0z@~ZkTBH<g8n9{J{fzXmx at 1770i6bP8qjG#rvaS?bQ;iU!gLBY4cIhb(|}C_HVxP`
+yK at 9j@xT6wF{WqfJR-=`AWwrlO$aLJG+{agn+9weuxY at i0h<PFnqBC`Gu*=vRM2Tar{SZNgEtM{G<eh
+S`M$xK24@<aX>g{&nFePXoN0F96VGsuLo)HE!J7te8oUX(8N6wh61L3WZhq@@oN2cI#F=Kh#ocFu=eC
+C-p8KAAPrLVx(Z12y_a0#q-4m>R1&5esC+?lac2e5;V}BKQ-wB at E9%pYc at r0TNY8t3%pr#3vD8w`n(?
+CoEF-?i-Y_*9q4bC+A`Wu#)4Bj++-`966G735k=rq|Ovj56J&8EO6flUIN1U3n5((X#ZllrfJy7{|@%
+a=>W7{(aJ7{(aJ7{=)QDV#|-lW->COv0J;`{qy9mk4hX-Xy$9c$4rZ;Z4Gu#M&s~Ov0JO+9*Lxf|vv`
+31ZUE`#ahNCjAp*m at y7x9L6||aTwz;#$k-Z7>DB at u6wxd#dR;PdvV=se at 9tlB7jK%lK>_GOk!D-FePD
+1`cVZv{PoR1H#g#DfSUns2Dll3FEijt>|t&OdKl>8#ypJiFvi0e4`V!x at i4|7?cusF*L}I}%XMF_%a<
+GQB=$HjW4w&<GRDgoFJpu;!WdzUFh)3jxNf*^xNf*EVVphx6w6G6EeTr^wj@?W2~!fLBuq(|k}xG<O2
+U+cDG5^&rX&_YY4-e6EHn|UBv?r-h7z14I7x7lhEF;_`;QDnA~7XlN~$Rx_(8yu#^1f^iJ<@{0Zamz#
+Ih)1O2U+cDG5^&rX);Bn36ChVM at Z3gehsxcW-)TC~QgClCUMQ`bn6QFePD1swo|2A^}SRmIN#bSQ4<L
+!qPeUGSKrvRhfFpXk at g&<aZx-f{HE)T at t#a;mhku0K}x(28y2}s>8P?@Wk~XL>6ySy~*!BpX3&F((F^
+RcY at sFOv0IjGYMxBE1?82X|~H3i%bMH32GAjBl=H4O`@UD?5*CLy3aAWg_tBJQFKY at lF%h-yL_?8L at 1
+M30wsV+0Fzh(C16Rwl7J-vOMI_oFS#z0D6k}8Nx+h{pT!f4OeB_?@?fA$LYagziFHsymxL|}T at tz^bV
+=xv&?TWuLYJgH|Lk+|@9?rEs7X+hpe8|0f||rSC_zkum;^D2?>yrbPdJlsCgDuloj7<BdK7-11hXPac
+$4rZ;Z4Gu#EK~4Ov0IjGYMznJC=LNb;+x?i|TXG!!Se_KvOLWc at pv@<VnbrkS8HeVr`TVCm~KkoP;<D
+agw%+5{pcPJPCP{_6gcYaUY7kuX|HSYvt+W`(JJZQH7lZI|+8u?lR58-op at C_(|m_oxP2F&&VwXB at 9X
+!lrSh^P+~chuqR<p!k)C7PV-p*>z^2d++t9|poBq*Wl at 5k1V0IW63e1gaWdyzf}I3A33k%%LCpi)!;o
+9}N$`{4C&5pGp9DV%ev<j53BTtUluUTBCt***o at 9Ubrl*9$poBpQgAxWM3`!W3FeqVAVp){nCz*K`b`
+tC)*h#RHc8h8r)gFhm!cT&q1V5?#WX?Z at K?#Er1|{z!_5CXY5K!z%*pqh0Y97xX<}awu{wQe$q69<<h
+!PMbAW9~!@RL{sCD=)@lVB&oPV#pyz$z2LPlBK1eas0e{3Q5E at RQ&t!B2vpWC991iKS0MoP;>(eCGnJ
+G7<75<VnbrkS8HeLY{;?sq%C<RTlgt)<22$PePo8I0<pm?r+Uw*uxN1<VnbrkS8HeLY{;?33(FoBvw5
+MaT4Mr#7T&g5GU>TvGMTrILxiclaMDNPePuAJgM?z+IGQDf}g~yC&5mFodi1xcGCII1rBF~@RQ&t!B2
+vp1V0IW68xmI$03{WlUVB{*h#RHU?;&&I{UeNvCu^Dlgdwrw<p4&gh2^|5(Xs}JPCdh3!d1Wb-oD-aS
+{uj1UBjHXW7L{6M;?wopkt|3Hd^vgggm(67nSENqhuVh?CC7f^Cn8+SviNixLY>MB6920U=M?Q<gnX*
+_Vg^f9>89<Vh at j65=GpNr;mWCm~L{e&4;}gb;ZW at +9O*$diyKAx}b{gggm(5^J4=I0<nQ;v~dLh?A~w
+{$!zvkS8HeLY{;?33(E0odh}wbP{Ww1U3n564)fLNnn$}CSBechovS0odh}wbQ0(!&`F?^KqrAtVuh2
+yCV@@5_*4nA1>z*?U|rw*$x0I;PePuAJPCOc at +9O*$diyKAx~nNlW->COv0IjGYMzXwOzhgYa+Z!c$4
+rZ;Z4Gugf|IqQoYIh{t|2w*d(w?V3UeX&K~!hKUr!b<VnbrkS8HeLY{;?>DotxSmI2=nS?V5XA;iD)}
+*tmXmo$`Cu>cFHwkYN-XvBy32GA5Bvv>HViLq8RyYY=61pUGN$8T$CEee9DVCcEWfICHlu0O)P$sd$N
+$8T$C80|~mxL|}T at tz^bV=xv?zK>{-b5&qP$r>FLYagziFHjvmxL|}T at tz^bV=xv&?Qxu&i*!+n0gr2
+n+R$W)Fh}$P?Ml0K}}+DlOQHROoEsMF$rQ4#3YDG5R>kEe at 9twBB)7Flb|L+O at f*PHHp<sf|vv`31Sk
+fnS?G0T at tz^bV>JqmP9N#5y~W#Nhp(0CZSAXA(PN0p-V!Sgf0nP61pUGNi1Lzu%vrGOCpw>2w)Pxqyp
+2)cZCkbLMEY0LYIUt30)GpBy>sWlF%igOM3RRBx1#hP$r>FLYagz31t#1mxL~fl}iGa1S|<y60js-Nx
++hTB^8!94(EmdlK>_GOk&ZJFePD1!jyz52~!fLBuq(|k}xH)SV?e_p8bvpvEoFql3*pVXi0FA;3UCGf
+|CR%@x`;f<oJXUNfMGIBuPk;p8YJdSaBjmNi13tk|ZQaNRp5wAxT1#gd_<`5|Sh&Nl22ABq2$9o}JxT
+aUw)XtWpw^q)O6hJNdn>$CQLA2~!fLBuq(|k}xH{KH%(Y?X%wzA(op6U=qM27A=WIOTv_dDG5^&rX);
+BELIYnBsfWMlHer4NqYA?BE*6d!AgRa#G)m^NrICECkdy~wjf(pAW1@!gd_<`5|Sh&N$-A^Su8jaq9h
+hA2}u%?BqT{lk}6534TR~Zg((SB5~d_fNtlu_CB6Ga1Y*63SiU5dFNx(#0+9qF2}BZzBoIj;l0YPZNC
+J at rA_+tih@|&>|IUIFv3yA&l0YPZNCJ at rA_+tih$Ik6Ad)~N6_L*NEJ%`&B)#AJcNUzm&s8rOXde>Ni
+X;h15|Sh&Nl22ABq2#cl7u7)NfMHzch}O16(>TJ#PTH}Nn-huKqP at kDk7adA4HObBne3pk|ZQaNRp5w
+z2E%Ff)gQ1V)>GgBq2#cl7u7)NfMGIBuPk;kR%~VLXw0e2}x4+J9fl^6NQzZ+yK at v2~HAgn1mz=NfMG
+IBuPk;kR%~VLXw0e2}x4E`I7}FLX^bvB_T;dl7u7)NfMGIBuPk;kR%~VLXw0e2}u%?q<r%y3r>V6iIq
+!y$!RYcgLooIVvU(VB!Nf*kpv<ML=uQ35NRj3?*r{(!HEzh@$qLNNkWo at BxzfXeJ8(f!1u&&e^ZepAx
+T1#gd{0 at oUi{3Cx?iVU_Bv8LU*)4ux<4Ax7+q at CAYoW7H8XQZG*Ix$i6eqyT79>I?=w3+7s`6p~jE&1
+%p`=KT`eZ?3<h-(%E-9NRp8xBS}V*{QKt5E;%{89rEwHytur%e7JnMWT0W7VW454X47zz;UvRJhLil;
+b at gJ!iD4zfN at n?z;UvRJhLa2 at 8BQ{sWH`y?B=bhun36FiV at lrd+vBG8FlHb#kQvAfWCk*09L6||aTw!
+pBM#R+T=#I@!*vhW-TBijIWe|mY{}S?S+rzK$(WKcC1Xm)l#D4EQ!?w63?~^*GMwb!ewNuRIWeqcSjn
+tcGMr>M$#9b4B*RIDlME*rPBNTiILUC5;UxdqS&m!T<GhUVGRDgoFJrun at iNBC7%yXlF~ae~b;EVTb;
+EVTb=Tj`q7%bPhLy}xCBsRElME*rPBNTiILUC5;UvRJhLa2 at 8BX%dmxG=f8dfr_WL7B|PI5WP{Ia{Ib
+oebYuw-D#z>-;~WK7AJk})OEelJOHV}Ez{9~e#CEaHhN8B;Q*<XyBBPL&vjfTBxAmy9mCx^(hAVyrkZ
+)MTj1P?Mo1LrsR7%<?5eOoo^YF&Sbq#AJxc5R+N9<lSqXo6+NtR+PyoldDVzls0Raj4l~nGP-1zFBw=
+euw-D#vyU)Q-L2QT0X+<ng_X?mCBsSPywl~Rv-1|5WH`xilHnx7NrsaQCmBxi?!?Zadl+&HE18u`hLa
+2 at 8BQ{sWH`xil4sLEZs8=)-hFNnoaEh^oumF6HjSJ8mOis+$#9a(N!RbY!o%guB?A#&Ov#v%F(qS4#+
+0mm|8CZs7+W&7WNgVSS~8243?~^*GMr>M$#9a(NvF5{+7|&}$-t7e7HZa;7+^BMWPr&4lUcrGOv#v%F
+(qS4t|^&UP6JB at mJBSpu;hFRV6}-^$Yg-Y0FwbGvyjP{k})M?O2(9oDH&5TresXXn36Fi>;8_ at b3$WF
+#+HmNnKevi4U>^1BT23#`RsxBelWYjNrsaQCmBw%_Om2rwTa70*S at e~OJ+5bF(qS4#*~aH8B;Q*WK7A
+Jl3C4UILUC5mG9oXB!I}mN at g{a;UvRJW;K(MBqK>il8hu7NpdC0yzeobWH`zGefOrPgoc$2E14xthLa
+2 at 8BQ{sWba5s7EUspWH`xil3BoHB+1^-l9=TtMwHA#CL>8kl8hu7NpdCWTzgYUE1YCF$*g8Fl4K;wNR
+qwl>dkT!BT8m9laVANNv<SazkL))E1YCF$#9b4B*RH;o-*t*(zQ|yaDDftXM~283 at e${Ooo#TCmBvMo
+Mcur8A&pdWF*N*l941MNk)>q`^R&Qf7hO+!AfRHlUdSaB*{pUkt8EYMv{yq8A&pdWF*N*l943ucJlme
+?+zJdA(N3LBS}V*j3gOJGLmE@$w-osBqK>il8hu7N%C$l&(HQaWRx{bMv{yq8A&pdWF*N*l942{hRGn
+3K_r7n29XRR`LInCKl`tLVhrL5A{j(7h-47SAd*2OgGdIE3?dmsGKgdl$sm%?H-EC=#4KNO5$RleBZ(
+)H<Vw=f-b-duILRzzGLmE@$w-osBqK>a=eswY5+X|bZGrnmYx^x<-wE<gV at Q&bBqK>il8hu7NpdCW+E
+acw$-6f_|J=inQCP{WW-^>)Rx=q%GLmE@$w-osBv+Eowa*aQgp&*>`8?mf;e-%YGOT3QFd0rVoMhH88
+A&pdWF*N*l941MNk)>4B$>5K{?<~O^(JNwlR+edNCuG%A{j(7h-47S)Xt{ZGNplee`VfUdEYhd`QL60
+#NYkv<-^~-Trvh31(6IQ8ALLOWDv<9l0hVcNCuG%A{j*TZf(!s^*Ce{L^6nE5Xm5tK_r7n29XRR8ALL
+OWDv<9l0hVcNZzgP`MVy6WP(TrkqjakL^6nE5Xm5tK_r7n29XRRnH5WHzcss at z@HzPH7CZ8j2{_4GJa
+(I$oP@*BjZQLkBlD~KQew~{K)u`@gskJWY(M*KQew~{K)u`@gw6$#*fVR;u$(JbY$qr(2-fEWY#GeE%
+NuhcxKIsQ6r;9MvaUb88tF$WYoy0kx?U~Mn;W{8W}Y*tCNft`TJfxv*^UAkx?U~Mn;W{8W}Y*YGl;Ns
+F6`4qee!Jj2f9WNk)tOeJ`F_bz;=WsF6`4qee!Jj2am=GHPVh$f%J~Bcnz}jm(-PqeZ at VEwWj4V${f}
+kx?U~Mn;W{8W}Zm)#%!?0y;8uWa!8&Ofn0Tj28L+-oLZ##Hf+0M%OkS(2=1dLq~>=3>_IdGIV6<$k36
+YBSS}Kb&~J<yEmL1LPv&<3>_IdGIV6<$k36YBlcY!cB&h;2pYcearpAM*>6kO1>~$h;5eKeLPv&<3>_
+IdGIV6<$k36YBSS}qjtm_cIx=)*=*X-|^1a_BX4ah;Ix=gMj2am=GHPVh$f%J~Bcnz}jf@%@H8N^s)+
+8A%^0VJ1W)_|pH8N^s)X1ojQ6r;9MvaUb88tF$WYoy0kx?VF9LZ>rpZ)y2S$SgA$f%J~Bcnz}jf@%@H
+8N^s)X1ojQ6r;9MvcrOB%?)szSnG)o)|SUYGl;NsF6`4qee!Jj2am=GHPVh$f%J~BeVX<Xpz75M`rPf
+Q6r;9MvaUb88tF$WYoy0kx?U~Mn;WHv1-)FRip2n&-1<KVeyHfBSS}K5t0ET14agn3>X<OGGJuD$Sgu
+Ki;#>F86z at A<Zu0vS$txw$XJoFB4b6yii{N*D>7DOtjJiAu_Ckd$QTjZzYTlb%(taM|JxW~MY|wx*Yx
+ZsX7_`w-+Lyk$XJoFB4b6yip;7bV?@S?j1l?W&wQBGC&r456`55>Mu?0M86h%4WQ52Fky&+QWXQ;nks
+%{PMuz<EXFkm86C*@Mh>Q>!Au>W_gvbby5h5c*W|@(ZAtOUZhKvju8S?veMl3%uLS%%<2$2yYBSdDIk
+-;H at LuQ$gK_P=e289d?85A-o<afWz)+|3UIAn0h;E=%~gF^;~3=SC_GRuq%3K<kKC}dE`ppZc!?|$C>
+FF7EOxR7xn<3h%Tj0+hTGAoRX2N at 4C9%MYoc#!cR<3Y}L?q>aoaUtVE#)XUv85c4xWL(IsFfuEQ3<Vh
+qG8AMe$WV}>AZN|eEI=_NWJt)6kRc&MLWYFQ;vz#qhJp+Q845BKWGKi`kf9)FKXYtWpcoP|BxFd)kdP
+rELqcY8k)a?%L56}11sMu56l5sKP>{dxuQMx93<(($G9+Y3$dHg(SHx!E!;Y)7-^9ijdCV^3-_N%0=Q
+;OdnEUY`yq4o|lDGx&c3NnV(V)Le{TF`f at xOon`5*t|fBm=r`QP9F`XB%M|NP(o_V51zP)h>@6aWAK2
+mlEMt4RKU83Y>x005K*001)p003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OVrgeJ
+aB^>AWpXZXd6iU6Z`(K!z57=T>Wc%o+PI4X+YNe<6+1Q7vJJ^bk&{77Bbz8i8YGoK{q=qHSF()*?CN9
+==RMAQGoEhu`bWdj!(>L&Niv${BN|TU$v^Z?Znx8=<&J4?<yLB;C^03Ibd;K(QYnFRT{l`5!W&D4lB_
+)y$cZ{<=tN5|fxPD at R%XwZOhx_*C-P_PT_N`TidGu!aI|}44+jv_!q{WHuq-^6v}q5FZ=Vu2aP3<>we
+!?VZfNl3%U__lnjTTC6lEdTQO1t#6PHINiP7H5O#_)dck?$QM5(YpXd%_s%9=hBD)i(HEn2 at b`lKILD
+Y>!2w!yW^GLtive at 0<<)S8A0p~-S7-H{$fcoMq&!&u;JQ_89hp+=XG6RP%XYj^hWVYZ?vJ5)*!tl2`%
+qS+`}06diiYsVxU?L*A%UYr_-Lh at 4~G&Z0=xO+z|aUb4(V(Sp0PtoA~+KI7G=ygx{P(Ql455OA~-I78
+#>=_wdwctf*Nm3tZckmuRKnS7F7%SQ^HIA!B^}&E#`aW5Ho3EA>&mQS}oMrKB`FMw1IE`EM at 5m(UJw~
+u3sIo%)7KMW#9c9TkAmZU<I$1u3>c^AiY?S9To at W%(BF>hRWHpU5TCB3gJRe0wIrG`#VCFTGFBVsztP
+Pwj*$b)MQTij=>rkL7X(yf-Z7x`1qDbH`vTy%a50%l|gI+*h480>+kv6_h&sJh~Fnw>j3znDu_A&HD)
+Thq_BnkaPp#?eMV_AWEtc<aJ8XD(AY8nH3`)M$^{W$pZc0jbs5qa;U(d_;|E|qSlQ(03}RBwu%u#WxS
+nho@$f8kG*Hp<Ik>p8(~&VF&YJz=n2q~1D at QL9C<lbX-4<ZzRRoAh{dhJfZWcVVVafT7%ezJC>uv5i`
+XO?0Wwx%zc-o~GDUs?+HdN;r3j9gFK-uNj*HivnX&(RwYhZ`SLcV^y8v;kyou{+)iw4yR~cpQNVr^@{
+4=t5V+}-{}1b- at m?VMejEPi>>GpyvW+JU!R(|)}rR$<yrQP)$}1e at S*byP)h>@6aWAK2mlEMt4MjWS6
+MRz0077d001)p003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OV`yP=WMy<^V{|TXd
+6ib%j at vd6eb-k^9R##nTYCZWB0vvCw`l?dL6B}9g3UrpOCy_Di4;i6j<MK(?+hvV(!HSdgDr7}hcjnp
+4*lkrv)<XWrP61pH_+|;+UR65nIwOgR&^e>YgMkn%X at TSG=j0v8jDb?2BDLF?Lg`ZEOy3vb^*UeWuZc
+krN=5kU7AYil}nO8f6BINFw2qz=<^oJwY1R at oM|y&@`E7^%WuJNG-a?=x-wh0xVU_GNiTj4rO~yj=nR
+DO^xfWl50HU$rBY9vFVgcQ`B;NCV-l28XU&G})f|)`QdX3c(p~SNwx$K=DU~z{1SMgmDC*w#7K;K@%N
+&4QI at 9zXi}*e#SfxF=>C!8s=g at 0Klwi>)k5)EB%(&C8I%yq_?{4SfA<B&4rb9iPJdih9ieiJ-(E&wqV
+o&Kfw#X(jO$8iwd>ai{gCR+h3TrBz3$<q~Q%@VE(ak~27IP5 at 5VI^W%`EWmS0n~BNTP>QT at 3(Bexy1u
+txLJ2(vGbFrY7f5Z90?@8s$8%MgW(_2FZvG*+K{)gKL5ckKhfgC~?L<f=uHczw2<^@{tMVlL>mc^XQI
+YIiU<b(>I%kXsAb;21B8EHQ*fK#yu3}N&Y?LPsyClf~_V at Mxibmq6*7lTUsMlf#2xcr)6Ut4m&NnzVQ
+Uzr|~hYs(LWoh%t9 at d%(1 at 6yo9hF@uMT$0v>daQP at w3aXWU%Gu1Hft&B){?}&&I-DkMV=CA<d?7{}z_
+{-us at c$rtyFqSW3kCUllTm6Cxi&UA4qr_YKPLaEo)GqnVkC;wU4qyZ9?s`=ANReNlSus+FOjB!Kb19_
+M7J<8%(w9uvE3eY7n;ZtOcKyKBb8ig#(?#-5m{Y%IG&2+3npOC<nbG9HpH{SsgcPjNxbmPO^Lhe^IYL
+pJQ+cl3}S&M)^p8AM9U(Wx5aZXt49i^?#N0Q$2?t&o{?j<|l{li3Oz at EXqbYmp=*c3TsKFcOS6n-jB|
+Q{oF{6Dt)mImA1K{Rx!;6#q22aR900nQZf}mt;NeNyr#2q at t$+tu4&p160)Tg(>F}=J+jDf&bH-Bzk<
+glJY>eW*R(Pfb}448ns()K@#`x9RU{$5;f at LVdizRxi^U-Gf_gOQR4(=_FP<@Y<l^m=)Oa;>K*P76xT
+C9M7LVqrsiTGn!Vkyb!Ys~`y|UFTYivjZ?S~ns*{M_IsGz&)EIWxST!+)ichiSU*Y;X7`$zu;$WFRV$
+!)ONrSOHS?qCAHJ(J$#kL$0W7FXc6io{LEOCd~pykwS*)c0{}sGv@*v}}UU3vft{PaAipxAERjd8X+V
+wo?1hJaZ2DINTSY77O<Np(pb&S@}?2w05?4k6irg!mVjT8dQ*FkeDnAexrXFc at Cl|SQLvwL{@`B&XRu
+sP)h>@6aWAK2mlEMt4R2e!T=5l000Uk0021v003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`y
+P=WMy<OV`yP=WNCABa%p09bZKvHE^vA6SZ!|_NfQ3fuc(W4I=ICc9OpK6){y{Xhs4GfFN%Dt2n{n0bT
+Ukno+gC-_4`y0FEh;8m}I5(Nrx=M^i)?>S3ULC2M5_7sx_{fExK;j8?8=*YS*{*5A*=-LGFOMV?noCj
+%48YR9BuL8PbjVL;Ajh=gDLiNY^n+lj}<n7;-^V%B{9G18F37UWjkPS5u)$4asEi1bs`G&~>IF##X8z
+#G{@nZ6Cmx?v#$!T`e3VJQ^%4$FwL%Gq33aqQ-{u^#WB+PhW#YCV7dfzE5qY4XG_cp}z?)I!RpxM$5q
+r$IOR?GprEZIQk3SNq?l}gboQB8ZwIR7G|u1<@sSMUk<dR7i_hm7J@=GG;=8Sh8Ai at t`m?Jo(v=QFoY
+o|@Q#$m{)zJBaKTHnz{7D^Ya{d|T-ord)uU?>LQ}dDfzUY3-E81X7n`r8D}qpv6VjB|!tusZm#j!<sR
+&&vu(#HILqg&`%l;;Gh!r|6RaVlL9E${B=N-fP!<$pySb)+C^5G4=+F8mp!RDkM$-uH5!}j<AhB)XPu
+%dyWSty1xzX%SXrH{?-yW3uus;ztaSZ%kft?vCB(8AJq3;#u&<YWp6dW2JHCol^r4hA=kcKsc8RBO%a
+X7`@8zif6}jZTLyZ`)L*yK1}JtoN>~ZMy5V?`}Jd5>ZEpm5JGySw>!)cnFpg1xtFuIMNTJqu;~5Ar$m
+I8av+v-0TVoM3I9KnJ)J7p|66GJukLw4El!TkOF0jG}jW?0s2zj1(%I~ivYb_D$=V8h at 9Yy4;OT>{Zb
+CW`qEcQ7pbN~!=yJ=>@6QxD&@n<%W{RN*TKp|A8NENo|se)a=D>a6Do<BYvu at wuk1MvpM0ZN?|!V09o
+<zp#n)R6*cZvJ_Tj+mM!(biZ=;x_2R=*6`@3endfmThcDn6mt=Dbdw)*WVz6u-3U-Y)*5A7_;AKFiq%
+#=GNj|RstE5`}ZS2bQr$&QwvBz#S~Q~W at VUL}Oru#gg6YhJy2ir|QDr_j$bOvrrS?4(3u?FkYs)lPY?
+noK#JMB?V!nf8_Ta=Aw9ws-Zee^KpL``vf#M(5q_^#z?%rF?vn>-5@<{(Yl^=W^-vG<t5`+Q)JwchhV
+&Z+bWB%`bDgoa;Lw$`sCYvC40VwkoRIB9!5oJ&Y%Y)bC3aoqj(b3V&EQTOSfh%9&0jV%#_b-v;tX7_J
+vzXCiQsE7(Y6Pv=6)@;M(7sY#5{l`z(#`9fj6%F;^x$(GHbdrJjko2ttibmSjm`JS2DN8~GKppeL{jx
+muo$K#LlS`Zp!Ui#+vGePsQbjSFur3fSCeJ2>roRK}@>US~53TfZg1=sQ28OjNp1Wbq0gBe7WmSf~&W
+2R?ENAvl-G>JNrlG3B2saBtbYr-QL82_jjNG?f^&*u+?xex{~xk8Q2#E)^~G(MbZE`ZBSUP>8fF-2G6
+$GzO<%$jLSjTXY>3%RxXqlGQszj*P&uA_o7TsRh7U%<y)QDIFZKoQfjIgDz+(04{`b>0eVcJ&OE*;}2
+>)>`%+nhCa`>(6XCA3I@;*Fd0hP8=@<f(zbyPM3}!rU9bN(v}<>7680rf$6yD078PZP;>B8cnO>c3TB
+f*)C0!I=VQfHbPMfV=TH~9H3(3#j<@w-Ag|Tf7<nj!XKh?0r#9pNOmr=Rq|KR(5xdeNs;*xGH4h**7@
+2Y0?5MLVHgtYY$7hNBbU<^2N8m4jTXX at 45_BcUhl7Oy?l%&EYwno57<iUWmtlgRT85`RC}O;C7xH|ZO
+;8KC<}7pDVI{72wE7k{N>Zo2`3o}P*16W6KtM|`@p8 at jw^ZghOJ#2m!-MqpfmHOn<@71NFVo#t&$YkV
+KARMg8C_<kgIF4&fx~GA))(L53(hfUkDO$fL1Q at 8lV0#IvufRJNT&SBNe_&p`Gn9`B~#i`d>}?3usp&
+!I_#Kb(w_K at 0}I(Gb#%PQE<{PwEoClCSnhFQ|2R*{+2RIF<x{F0Q9hq$c9`N-NIUi4yV7Z)unjea*{V
+XPVX{20&c*B=C_MpaQMh8B&$CYzyL8TF3V9Q=Mx|W-CxtUDHd5mTgv1!yl<A8=%|_!sV<uh5n})*$O*
+uU7B7O1P12Jm^VZ7muyyj_V9?Q+87?(>Pr=xPU$>}HzLZd7pYfL!3au&6`BxhXKX<Praf8J7N6O;_6D
+BWywXySk$*@E_f$jcs at l~^KQ2NsVZYBk_<HSjpf*vr8v9vnQ}!2+nyCaP*%v}`74Su~1-!YsHo at L34!
+7&n>iLhw$_Lz>KdBd5 at 9#m-L5PNMw?$DFIV&aDeijGOIoO565CW?eOVcGAe|_VN$4frZ_D;6qzW$ql<
+3yR13tu|{uu!rG(n*)?+Q0WEI8Fqs{8Kdv2D<SfjNlD3@)O`@Y98cH1+A}+O2>OG_KclU%25Ai(|3EE
+HqYTg#DQ^}wWR8;Vylpdf}0OA;ZC5+4H$j~#nV+rV>or>BlzQ0&AuuAo9qkg^~KWzE_z5J;V&&DxIuF
+&7>Cz*--^aMFGA0s}rv<3QQi+$x&!M>|*3VFIu$OQ9;_HzbvYBb*g=ETsxADADV;(q|lAKE_$=0W*?7
+0k8r)4^OT|7Bo~?n0g|nlo>E9)ol09%v6d at 4Oe<6VMUArviEpJpT=FE-r;Wi0xt;k8!x?(|9k~aXTO9
+Yu{8Wg?&RI&f^DyfUotQZ3txCIX)HuTep#Wz<<a6<euQ?yVIY`<<1_B$;mQKeic-F_OY-X3e~MX#txp
+Tpm=bQtGxO(BQUBb*@1z@|GZ4FN=L{KGCwKr6?L8W&Caupy7aC4V?md^kKZHa9>1dBGvvb0v6=9PLhk
+i4Zcc|bjKm(@)FuLpwC1FqX#}RK(d){x8pU4lz0&v7%dKLxx;L!6ew`5*;1i31EJ=;>1Ckp1Notf4fi
+EkMU2$$gZkuKF{b&SlCn0w2<<2YArAYfGJ}|w%`+ubWg^|vq()+ugEU$m_sPvQ}DOUd;8;@e;?cu at 5d
+0J2SCs0cR1QY-O00;mH1*=FoiKU-(1ONcf4gdf<0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?
+FJow7a%5$6FJow7a&u*LXL4_KaBy;OVr6nJaCyyE-*4JT5Ps*c7zsrImH42ilP*p302ESGAP9)6sCPn
+(Jr1jyU2Aup$oJRZtZgu0yMcQ;KjGP#Z@>BGhpE at gALtDpMpGD%`h)3W0KM^J{~J{J)@yZGZV(<7f8l
+}!(3c(p*D#U)@E~CHzTHNGyUa)hZop9(aLLD^z$|toxZxD~1z$0cAu5nQm=aL(pQ6z&3-JJ#OQGpig;
+FIi7I`LBYIhYfgC4Bo1hIG(Qx+?X>8g!^M!yN2+uJ`0qSW1iZV<rS`f8Y?M)itbmP%g=qxd?aL>s#Ki
+7WsUrhdYV2QP|m;RcAJ0V81+n~fB;R6G(Z;A_QHY<2S$B53KGH)3`Nv5dfF0u*{&r|_hN0VcfPq at wt(
+^tc~eQzSgf$I>>awt6Sx!}JNpsEH~(pg=|G%%XL`T?!s^7llS(8bWK+n_Q})C9=qfz)%u=BJUj_r*nJ
+vD=JME_~>+Yw`GVeplUamvHYo=p$%*j=@<ekhuTH%o8VZ3JXH_4NN_i#KK&p>%Jhvo3)TpcMn4K#gh0
+OVeYE`g__T!X^clW)=kxA#`FuydBsHB<1ydxx4XFz~ptKYdCMM<tFd5AIUn!#78;wWHXG?!LT22Rx1q
+>hO(1lrdz8v+R#@#v0p60X1#lQhrAnr7_YL=<I*Vre>tt2TuG>iv2%l(-OtchXZ!G^se71~8kO$Cg`B
+#bYrVj#s!k}!qjirxYDK}gerH^r%YsQ(J}C6v6vE$VyMX~7>Ia$@3VKs8uU_>lVqJq)B&E$B&Ytm~vp
+vF(qYPWz_wd%FYhv>;2>1B2<8GZ#y}R`ZqIf at 3RY=f<UZHdHZP%M3c!nTxw&N}~ytT$4cAai5F}G_%B
+5tJU0qX}z;PC>e$6QRB#w2AAfRisZv;#cBRmtA at tF&+PU&@^_BC_D=TAS#7(np=wT}E!;!<^e{!xboA
+rz)3Y9G^AJ(RQz!D7N`bXKIYrCI{F>Q;%XzeHi|#ZOCnWPr>_Z)uIv$(t6CPgPtU6{10lIyuA}lx+Sb
+n&N&ZP>ypjl;&u at Y>Hr(&g3QGs at xSK^c4N#S!3g^MStT>xeug(gxWC0wt_zL?)}MSisNrpfTiBb|a0&
+0HlP(MyzR0qaGF`drivHu<WKAkhpLCuKg0$=cz}P;E$yEHI&;5HBr<IiHP1z0a47gULc1l^|5sC*@RC
+?0pl_1?IGWFesxim1a_+%IORZS)k7tqMO4ZI?Vjk at iQ%j;;jdm3!4EHsg}mPmwwgx at gV1ecQVFFH&lY
+3UD%98+qu2n+s`h_KDeC=yr%Y`zl6Tsuuft1S1hlc*Z*Pm$Sco!<>5Mdsc4E=JKE5nPvs>4FdAXy+9?
+Y!JRjgX;g=HoOI#P at O4D-vd@sDWtl!V9kk$2-h8&Wvy3)iAuHH|oT96izZWhSxTjw(!7nvP&mh1oL?R
+3ExD{t at 9q1{o*KVnF$=+p5x?Sk)Fz2w?oebf#s{4Y>T0|XQR000O82?eW2_!;PfTLS<9ZU+DWHUIzsa
+A|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4CQVRCb2bZ~NSVr6nJaCx0n?{6A85dF?y
+F;YGRbg&0GRVOv-2OyB5BY;>?m0nLP at 9r#EH8!%nNw<IfJ at X?}2}rqH2?>v9-n at C^nX9YwAN2<JqX~^
+i{lO$2P;Wf#|3w#kuWDDcSTjwnTuChy^-azs9X*(zQYk at 8EuYvr++=HE9ec{zbLNeu46ae_h%nO9OSs
++f6DzZ2OQs-y1{(eo_AV1!hH0}YwakQ<Mmrqs*4W(vz%(;<Z_g|X&pD;l4)JX&VFT8-LaMc=dcQ$8?R
+EzcXWb*}Dn;|)>uAo7?GxwwO8Q27E7KD7)m`HwEJP2&ey5pKD=RnDA~5vi4b3XQHhSj~uPgk7GU495)
+VovYAP^)~GPS~1LEXYKlQV^X2J>60Oi7v0WI2~^pC3wj5<36gSj2BkE{iIdN}Z$LP?l%AaYvEwCrcW$
+Ln(C6nk~}L%2de=!DE at Rc1*(2HrU+yB;_y=i4R0*XaK*H|CU(dKI9JVhlOsU&N15ov58u#E_~pRc5g#
+q1EecbXqP=kMrS2BRhpC3JJ>avgFgU7q0e}Jlroi$i&8a#0AKntT6~@^7u20R(wFXh-kmHSZ{dqp;1&
+(uBgxHHNdTiNE3~gb8~_i4dH*vay1mhOw0I2choi-05XUr}&Z$eY?tC%oFUQ?E&6e}oG#*4~F7r|1Am
+%xdUnDL7xiL@@Ln5Sd`_doLUI&6Ir?q%uv^ir;RZapgWLy2G9x9_(yLu6F67-g2LE88xJzI&lgXj6Cy
+FfYhw~499q9%Rlz)9%u3N45cK9mKZhsqe+q at Hm;xIT0d+rH^^+O5tX?GDj0hUL;ngUQ`Hm(NwLR#*&8
+6dD%BD#NsUG|bfw2GFk6G9?_A1NKkMer8R|_G1lW2bBv-5{davlDcD6H1_uJZ4py@@v at k5|Jo%Sqhu3
+%yjJ>jN*?juZpTTzIw7psCx;c7XtCkfV3vJpHBF4>Q&7R2?;M*XdgWz$0o(-|7f^p?`ihd#h0IxJmqO
+c7`xib^VK9?5R$r1rHKSE^o?kdZ6U&h+(|USc|NGmIcDwcM$DhN08oymPDZQraL)7b(!T2WUVMY_ytF
+VF+#U5t&-t67hSJC?U|5Lv&FV at ubZh98<Ur<W}1QY-O00;mH1*=HF*$_0~0{{RH2><{)0001RX>c!Jc
+4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJo_HX>Mn8bYXO5ZDC_*X>MgMaCwzg+m0GJ5Pjz>
+O5$N)L)anFN}Czw0SHV`xQUA*6pfJSt_CY^8`)-9_Ure!ySZeBNwR*T>vDYRRFx^0uODi49(qIS_u8G
+|v_q}_sQrari7l7PG}|zZtXxYi6tzvvBps#ZU#XO+8 at r|mwtDFp+SAfYM1JBYR%XkVOhWz&2I7b8T_m
+;)Q=0CyjD(j)JAB%$vDpWJX>4q6k1Pw%F|7_6;>)Xq4OrU)uG)C2w5!zk at ZoPjTn(>NQz at E+SVt3fY@
+ayJD`^|;tz7NAu at zUngN0}y>~|VVwYD;)w*-csyrJ>IZ;USLhcrsAtgwfmQev6OnZ)lw?4Ay0N0HEEI
+hHPmhY+5Gj{h_k`KgIzatNlKj!{lv?b)X8sNutKPJMP at N)N2rqMGq;rDTNUzKmEqCgErsY;JQ_svC$*
+3nJ7tfX~#uCzkMsyPw!PSm<57alEZStdX%)5kBxoH at 6|N3epEs=!QLJ)~`x%t~4g8GuREZ#}5Fa&^^Y
+8R!lp`$xhXPfLQw4n|&V5XVe at n=xcK_X%1(Ld&EL%c+tNcNv2yR0gS4w(Eb4802p*8?a#<)wtD^EY!T
+RZd$VC at I;HMtLQNVsC$nCA-fvE5JfDn5(@vde%6ybKh<Q!qlf(%iQv)Sq_ChL`m%c!I9SEwJHsXoV=7
+=RGiUd|<d-z{HR7S6}dXaJ#^qyow+V~pnt;FnL`d)MwDChpxF!WKqMt?OBB=mQM7EF=el?kA`${1Utm
+T^9W4w}fleb;E*zHPj}Z4k|;u)KDtGyL?Mk4U*xN~}q#9$|?+8s$Rg!us&k3+qqbbQ^{uckQj%E{%;#
+rBbAX3y(r9^%@DD2O`=?&37eiC3=w1aw)Og%Vou}N^0cNYVHdsnCi=PfLBM+NBEw5+B<7m`_{qp*f at m
+Tz7o;i2;0Z#y@;@QJA9>DI`PR3!S|9#0hSd4s6v8Ms^)+E(gkNxOmqQJ&PI<>J~kWad!{vqJ;K`<M7j
+vXq+q?mBP6Z!S$HkP3*}6flmRH#YrnZj8!z5}xg*iqB_UVjQCMLXDReayWoC_C#u#A~i;xpS_-L!3;-
+&82ZZdi^u~K~V`0d!+N>qJ3WrFZkg^m)PRrtN${j7h_xaIaEyP|~0OVz`G2K!ARba=BV>r$3gyX-{hV
+D391L?Dni6_;18mHEdty}Ba8AJEO?4>g_7o1 at y*U(DE#&}Z5x_RQ?@7klyMBQ;JTmi^A^YuBA88G0<E
++_MZ4W7eLp#8sH0P0xU`?a!Gm(|rGbj#gBwMT$C0{{c`-0|XQR000O82?eW2Ap6}pQ33z}g#-WqF8}}
+laA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4CXZE#_9E^v93Q%!H$KoGtAS3HReNDh
+TWy_EJ~s7b66K(<lDDO%g(dR4P)?Jh+A_Z{;QDkZ7fz1TZ5 at 9mqfUhn;bX?Pzkv502jG6^wVtY$y(L2
+S?KVWyQcGTS?C`gZVzEkGm`+f5;Cu5p7#8waPcZe697*P+r%TGTQ#!nEMu(h$Mw(!B^n6SR7doJkB7(
+w^uE(m|-=lQxXs=|YxmXWFZR3|vKUWOf$1JYMdX8!X6L_T7^rBWkSoSuJx0FJw;25`;z5*=$7xvi69Z
+cS4f05X?2x3n#UjfF%37w-012TW~uZUtT*i`p^b_;X3^Wy6J!e7Tuy2tnPvwzFUH8rUj%r(pI|Rv??a
+#L|<fGBO~lBmHXOf29Cv3ls>FBDT3t|PeB|9%XB;8SgtgC=|CqYxoc|4#GI88%C#(<2_D0E_P~f>8ZD
+x9+o_*N=`u_b%vUi2tb;g>W}8J2W4(#jt0Wu(3DKp*T`}J)@@t7prrc?+WI;~I+MZJ1a(gWctP51)K-
+}h><bmZ0<hp79tB18#Kacq`<XX at PWC^96j~63(c6j>UbeCDK{q+&4eCXrzn1h7+RdWjxhR<cm)bm<v<
+729=>p~v`#*S{s<I&CdZZrlq30poo2$$dgai4mg$DQid#kSVtOWFMl&vWxERjKh6{W~8cUNzn{WWv%j
+4-USe&mW)nLFT%kfk(Baw=r4k$ok;hfcXn5xj>?M=4I`RGv(hN?KY5yRVwR*%Be5>SN1cyJBHleD4a-
+-)~lF5{KESUP)h>@6aWAK2mlEMt4RD+z|Xb<001`y001%o003}la4%nWWo~3|axZdaadl;LbaO9oVPk
+7yXJvCQV`yP=WMy<OV{dMAbYX6Eb1rasl~loQ;xG`s^A#g;X(h at 6s~&dI9#R_GXd$2^sNz(aWB{wiMz
+(2{{rY_l&>l*q-AIw*@tZd@@7Za$FF$k_KO`wll2M%IG2KmOqu=xew%uw|v1OWBxsh5Z8kveoI+~h4Q
+Yk?TEnnF>?37z!9eb+SbLowx63}kz%#dj5C1Cgb%F687l3A0#Kn;A#-j!m{2<>(UElc60(GE+yH?~=T
+nC8YF<E3TcxuR9wFn%s2Y~b40D7E!;HM*ujuh$2~MR=DYr6>znM;SY|uUs7`85!-ZTpcjqmAn3l2+>s
+77n)18v2sT at gbqD<L-X2ijcyS6w#F-z3H#=K-bSI5K#)|)l at +!Q>aHy_IkWa}=zK`EIZ!DyS+1lz)`w
+D_gs#3Bi~OCb<hl-_gRU at d7|XNWxwFU*>4GNgFbX}eW{dLk!%E2#$rD+!c1*(2KE&MiL&|YzBtJDmV*
+~m|{vol%eyAPnM}!95{<+$Tv4dIZO8C$}?B0jOYcySxf?f8U8LYgZ!N;f-N!{>n;SN5)h)LgY{%FN?a
+J)XK4j6!?r=)nCEeeX#B|Sx17Nx~<2rRt7E*w5G$=zN_5MwMWw6D=Q2&Qp1dPGKamrRmk8QLEwMH=Th
+jb|A}G>@_(87(GJM)O5BpXG5E?lPY>4r*Rf`Ca2RD0c=@;+6=h+-deD40h;HRkRha45LfNy{bsyjO^?
+Ga#0z*X$D5hhoVE0YtqJd=*>!;9vsk5{(|Mh;STOa+3nD6A0VM$6g<e0K9*}xkCidDLwCmc0G&q2?G5
+_<-cA2|uTQkd5&7z&IKBVJ-%q>MdaihN*w8QPwOV}N{9L3yuDNM9 at mTa*oEkr6d=7xiy|Dg>iLHg`4I
+=UGjL08nSut7^&&6XFV==i8=<bi()?ZLd0|XQR000O82?eW2s|F^<OalM__67g|GynhqaA|NaUv_0~W
+N&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4CYIW#$Na&KZ~axQRrl~mhq+c*$?_g4(+7YA_ExVsB%
+8uUR{?9_;FkZcrrGH7XJ6QxLlq!OrKzekoYY2pA|K1p*qJac9^?e^tE{lUX%O5;&9m?i`2k7v;%eGuD
+jwP~?snpwG#S}2N4#v~mT=9g4T1jcSCg)L|uLq}SAiO73?W at UD4$>iiOU?6_V-lby4Fcn3qWh%Th+Tq
+vkjNShLnC8Yd_SCZQoYA`4Bfh^%*cxkB;i|2tPIN`R+uMHuaWOogP$`P*SVu8Cw$Ge3l|)8+E7zqrw&
+Sk8!a_6=_9xAy+E`i8HG!cgZ)jfmt<i`2A&ru2D{NJ(lv`$UCigEOc1M*dDHWP5XVNwB5W<tt*=J*sU
+zkkhRc$JDhH`4wo^9cd8a_;yG-d~;^uU at es+pH-B~v7iWy;zy2}iry=C)_0hBcAoK!k<{@OyRdh$Z~>
+-Op?tEc7Ml9dA1zcF9=k2w(F at H+Oa76-Za4&<%Uc3@%D=t~4X5_pn=Nj}HK%&=-smt(i*4d8xWUKrH<
+jExyl|3ks)C^dpSpaJqQ9LoAer7yWCHWU*5cz^KX!?JE!mz+ at 0d-;ojaN8{1rsb)VMEvADcq2Vm1kmg
+~$7)8r*7}I<i&u7UXAWE2z64zp068R)?4#>hl$&9^_$~C1wp}h_SRYqI!%xH7U5)(xNPh?m9Q4f{Tn|
+-}VISYD6GAC_(mtL&I>|pxdbr&e-{&q3+Y0#yAdI%Ewr$P%7qz`2d=%F&kcByZiuR|vxa&Nx$dN<d-z
+ixU&%LJB>4h^RF|8t47Tdmxhf`Ve5ZiRL1ch;;?Kl)ccqDiT|>{p&6coX*Xz4wrV?IQKYd5l^i(yi2d
+OpErOr1nf2&oKosr at 5<V`j9YKMvw9RD at TZRR5`4o6FujO6a4)4 at 7rWD!M0MZRx4G)xyIP=>s+RdWr1C
+R$;fH7l2|#bRmZW)5BB<8P7HnzKSkGn!Kye^JE3nE3h%rodrrlMoh=4m8`kw}6y!=QK6Id-M(A<<7<a
+Lu_G9#$WQRds^DD6CVEz!A=WJQ~;4RH}^8P}fzkMuy=S`s&YuLkh5^=+Rb(or!76rc*)3PtErce7CKe
+he?P)h>@6aWAK2mlEMt4O9T(m8Pi0046g001%o003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV
+`yP=WMy<OWpiV2a&KZ~axQRrl~!GE>NpU6=U0r>7m#QcdbQGRyM3S(TDA}np}Oj>R>&k1ux?^UwrMZ>
+>vx<l2!w8%Co(>BJagtFTwK&Ya6fn)xiB8}2d+1O`|-5 at 3}>(xjSE<85T=T+xnL3WWq`mn#PVMrMa+?
+E4L;eNMgbiOZa5(y at C_rGpaL0!so@~Ji$?n_K{CbhR&bvgE`_F7l}MGo5HZZ8%Iv;EW-x%&E at eEuiYd
+#L?C7eEfo8u2-RtY`L{STOpch3jw^$8x)TrJt$TI0mVH96&jZ{tDx*-d|gsGn}<I!627%qV#G+-pmc4
+i|*o<B(w at s(m~XH^OnB4`<!cM9wlc5(|o6QD5QI- at 5c3@{P=CKdU|GT`CPnzkaKbZpcHRjdmQAKe!iq
+ozpV5d|vBX0}~L+$ZNT_fcpBrXjI5z1b@@w1IeeATX3fpQ?Kc$m!hP{f0`D1+JWKaa+#V2C1OQjE$eF
+nOMgb1-*las-X%`r&fY}rU7t~(r!q5`ay)0=sUF$tPr*u!)??i2ExLR(c)?PvVflZ3O{=DdCy(E-V&C
+Src<h4#>C?!;zUeYDJIO00w;pWVBUWskKX-gJX*Zk=!c_)JMcUhPUp~rS#Q1=^<T!lIm}+>v#B?506f
+G(Vk>5y$fd*~QO1&#4A3wh=`8hEDzByhqX0JS4XMmNa_T5xG$P6FOErw7Sf}}t%U;l1;2{WU+VHM8^$
+vC4Np*>3U*9%0z3;T)_b!2$_!&_NJaQlMkf?`|l&TH)QX31M^vJh!)$MjJyWcupfESM}=N=fi51(8j7
+mY@!WDJfin4KD*hS^ZTbZ$rO>$o^<KK<oQCbT0Wir$-Eb*`@Z?y=?1Sz&2F&6A^^=Q*mCU*vC?(r6MT
+S0sOaVV{g1nptWrfHa9>O+gxrnZMxzOLThT*^^0jQo6*6?dc5mu2`~^Drhtse#Eqff%YpGH7jqlVr<+
+2hOk_6T2#wrQ)3k7cKcNDP8C&x?3=TU^B^a12Y*)tI*ooWcdPw>(BpD^+M_Jjr#%izSAhSiW~pdln`W
+y~3YQr^RP6v#BJ42xg<dotM-tvt0?y{I#NV8BAGNmOVvCKcF at rnIH?$F`DhqWEQlxcM(O&AARy0D<JP
+Psz{(uI3+PVF#;mOOD)TyObYc$Jz7?y&?cr2SjvsK~@+YyZvArDaaCnO|RJwa8r{H~63eO=ly(s%~d>
+Fn<h5rg#BHn98c;oWIfZ8@#I%0z!CUcWuxq$l<h#po+Z%hY~Dc5V7xTR*Z2@}^a3%bg)ABwy;9T#S!9
+C+mWm?y2$48|jNA{(jo1AxbWRzsxdSb<JXHHT_nrE`|!j-F}ZdI8aKebMYK^|Bz96Yq7`Oet8GoTHwC
+7O6(tZ(5a8$fO(&N8M-UYq&^z^98Q95_e`i$buju+pOMj%Gxa(jS^6O#nUB0q2fdU#8&3O at 1-;C_WX+
+bH0YU%5lJB+D=TffS4u^pM08mQ<1QY-O00;mH1*=HbNd3&o1pok_9smF?0001RX>c!Jc4cm4Z*nhkWp
+Q<7b98eraA9L>VP|D?FJow7a%5$6FJ*IMb8RkgdF_~OZ{kJ}$KUfQMwb_tNSI=q$BX)caFCEA1Od at 0_
+oiCxb+FFZbZv5?Rlj>@`~a8?1lntRssf1|cIG!byX%>M%-I?Lf~(GTZvg#XyE7Pf;HrP${sen`&kAQS
+nMt@;?vv{a588n(!3|*^{N{R|C<W>XEF3EpGS{B(MlO1Ol+V%&7E(drK*YpA|ACA`ODrS~&F4$swM66
+weuy8{B2e)M3=G3SCF7QoB9b;tS8>FbQwc?}7Au@;7QuP at 0`z9HfgxD;60|%IM&uj9NQP29OFLOfJMb
+grPM1-j&clljI0A4d)K?g~-jj0YpaEtWK@`An70m)aT|aJ(=T4PSE7~PTNeN-#MBgy6OIQU<u!Ijv+H
+RPH$Bl?U`1VhMLVh0DuCt<{rElYMDC<b7d6 at 0t_22>eGQ>>bTKZDqYKF_H=UNE&T}%3*1QEi5#=_ZVr
+ at EBLI86k)0fvuv_Y$OwcAEQHst`xODCya3X~ZG~3eH7D`QvFW2)w|gSK#4ksEjPJTd-NF4Xz)Do#Ec&
+9~cl9`VDU*m`YfN(ph>%jDWuIxi`7Ff0#gP at Cct<qfu)xdAvkl+-bDp`6ZFu`NDHCFs at 1oKU!hp7~rl
+mYTqEyy6W|NlSj(F+nWqJ<1uvaN6>;{Yc%P#ANs8k3?D|r`*EiPFqSggV%kh at lh<49V90rZJ88>ExL%
+kn{Sl8h!~{JXX5v}mF<a8bI|>Ar$YOQU8G3>L6t5SN&4ylr>wq6bMfj#%ym#>KdvUrLWplnoyy>k{5v
+n>m3ID5yM=(ab>pB>^>ji--!c`DP<a*aawruEnS<}t34)8F>k$o at d3_c#&M9vBYM+I{zSy;po9#lvtN
+97~Okx-bA>?lR4$X*oQ$wJ}g%P*D}!q0GC(2M2V8vv6mWBrxug)(Prkj-IjI&pf&>3JJ*I?oxz8T@<(
+aR$$s#F;#25 at +&Ug}4gORfwzbT$Q*g&sB-5@?4F$8qd{;tMOc&xO&D_ at V8ntG8=Jq2hT76CR>BJMxD1
+2*WkG(aZR3U64&H8L7d<@L7d>ZDREPtn-VwWIg2=p=PcqZp0kOwdCn%z<~d26<T**4<T-~phvyvP9H(
+#*S7R8(#hBJ>R<86ii`iiQlDMQ7Dp?H+Hb1&^iEE#~P+4nO)H}vJpPN6<t+JV)np(XOk5+T}*K(h#xy
+v at +(6Bk=N7GOFOWwBTjk0Fc*L<2kyK&rw+KgtThtZx1)tCN6Og%}bg7udBiJiuGcld9XhxXs!Tb>BR*
+!}$nNLp(#NhNzFE?r^a|2ybY+cjg?j^tK^FnSSSE2-FLJIh^XU(Ctr-OU&6`bslQ-FWv$q0k%O8)d_2
+57xck_ at R2g`49E}%KxDE at 7U7bZxr+I?cUGY(%#S6vfj_y(%#S6vfj_y(%#S6vfj_y(%#S6vfj_y(%#S
+6vfj_y(%#S6vfj_y(%#S6vfj_yHobpSlz9ordOz2D_q4E70yup*;<A>2qeWv^LJ|q!eYhEU2{@=-2lL
+;Ofa;F+9JT&L0{;5^W?3^|kzh7jc7A3<GxPVvYf7{&No#1YGUfXJj%4sU)!gHildJ7Jcwf}Kc(Lo-gJ
+x2Oj7E^w9&BmZ?eJtR%WCj at X<41oGLwn<ceSjRDp`ZovL-$mylL5+mi-7?hDG_Ewd_<$+oNSCJPsYwv
+eyM}N6S)4Izj|@v}`|7+nqS~>9Cf)z8i<N>?kdawd`aOT%UiXtYKf<zNe1X!kir54qubQL_&^|L%n>0
+9>!I0k{;&Qc&r}Y4!891)962cwllYEn`gVqi<sZ%*{+(iy*=B#>EVy3hgg)S>*2ru_1-}}O7-x-{D(y
+DsAs#wU(dyQxV@)Gd`q|XeN6+Bwt18W?0$83NCM)6KS=`e%Q{v9K8;8M at YeIhSK0Uge(<X({0UG?0|X
+QR000O82?eW2tbDvh3k3iGUJd{NGynhqaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT
+4IfV`^}4a&KZ~axQRrrB-ck+DH)o&aW6XA8K^e2dyey6XhgANJ9$*@uDi~MQE|duvdE*?XHu!zy4<Z!
+i#O%^tzv5UY?nGW_H$RXY~iJ`X2{l7!G><@vIM5!@J&RIAMF%ID`2H;ZE^27c7LH^bxp*NPg#G$Xuz`
+;E~L26s7~g4JXTMe8f<0QGpD=)L at YP7>)MW7D*IEvEUvvTnbHp)mEzX4*|nOs!Z-FWCnd$B`IPx6jK&
+!n^35Y0jJl5&W8_w5k#%I3*9h;skPNGMUCna{j8Fn6h`q?Y@~8@^PD6ABc{H=gokUzBX|Rpp#dXdl9-
+JYdHqC9$XAM~#Ih79M9?xYPn6gNBr*n%2~g;Boxu|k2AJ^wl#2W#>GL45qFDG;j?LPjigdx@$MFJ&s3
+}wUhyoQ=Gl^Fr_sDt3Jro*&Y1mqs-t3vWv5Cy`MBqjee9G<xASb<z{fJ7F1m3!xB3h2v0;#}Z#^z7m+
+*-#bC7nP>-B5+6TT8*dQXjZTVK>A*{UAUp^ohm at RtT}iAP!rEK(_E at Fu%Q9%%MBJhcDgfv^$>PUyv;^
+O<L+-hQy<7$O)LLQcReH5+{IBf7-hxkM7lAIGEqt>~9A1aep?0o4YA=VbYz>2ff9xJB7(&I=P$mU4R*
+4L9r#Xj^rK10YOHRnDo&w9_p<0dup$y1VbM->=CKW9&(x}V01;c$uIRVlwzIMOD=mtFMtOiq-nvE;xs
+!neU<JK%D%rX8hX!d!TSywG4U;=7R<=~h6e<F6H2LCa3!^|rlT(Tw%>L-?Khow?GC_VMv_wp`s3>tE|
+IfFgF0oei%xVSP%;7+a*0Rx+EDKbd9?C2OldS*C09gIZZ?WT!><y9J<`t5Oj2#`LkozDHNhB+n782q3
+%6dXnOV&!(-bZQvl~r2_PIlU(fc&HK2UUNV<nmw>HWL)gn2%)wyOf4P05hz&^kIYoQ+1b`NBq{;e|}=
+Oqdno)YnIghxQIlSpdr=r}ed5IvT?um)leC=pLKztnEK{8RfK$;If7x=P=odYlWNd)TGPPyg4<&_k0~
+VmuM{eDO%5lggZhq!OPe<u>DCk)i`T3%X}o4f<;&ksnEnqz$+@^&8Nw$y<>prr^YQ{SMi|>8`A!|gb;
+<3YIX{{SGZl1bXV8tv|Fj^fu}w69^SwEe4c{Z4a;cB(=M<pFlo_ilPbRQhg3&{E$F_}&dBYKpuBzaDW
+B4CxPo|Drnkz;A)80uw2O`aF87z&#lBKf9Vfo?DU6mruHtpoC~Z%oU2W(QRBpQKQYPI>Gn%!|mGcL at h
+J2xH=+Qx&9MA)lGWVL)G`J3bIoLnqb=5fMub}gQjIlH$tk|#UYv$XL6vH2KIxu>KRk}{cO&@}R`TfWw
+Q>Gf(wj!J5^6aFIij_i<HO$U>l`)FRZKU>z8OT6~OdETjzjhudQaXz5haWkV at AU2_9)Puq<m;RMgKhV
+#a2V>Eru{74?8eb&X6KyK#C0BiH{mMa%ci}2c3G4+>8?%fU7ONHM-d<P#?<oNP0n^pvovehXwWk>M(5
+>i<D4LDEzJ^zjMtkbefBWNew_N{>JAo&6an{9csBOm2cc)Tchh-qF<;Jar+xY}ylyuC&vh%m4dsGMkI
+O!t($hj3^K5#-;r%LAUMgqjnt$6I`qqxdNq{`{h&?++8m&EQv+*BLO9KQH0000800{-FNGjwmk*`w#0
+GhJ^05Sjo0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPbz^ICW^!e5E^v92-EFUI
+Np&FT at Ap@v#1~sC(`QGlm&mbtB#d!)sWG4e)beN~t0*q!s*AeJt-@~R*Ux at df<2Pm(hQQ*bxvl)-aBH
+&+Y at o}e(!t#@&6uw^P~Ur`A;4{{``kO`pM6K^!S?}|MZ9d?eV|(?DyV%@9~S at zJL7m(}#ch at XeQBKYs
+Y}*Y6)6zJ2`t$N&4o*I$2m|NOh({o$JrUw!%A$4`&1zW(t3o9`Z9-JkjXyFVxW{F at KoeYjKp?fZXz|M
+kb;zyI|3_?yRf|3RMj=YR74yKlex^7rrmU)g^6_|3QXkDq at 3@zeZpXZ-lt$4{@{fA#78m*2hr_2XB6o
+E-oCrM~<muiyXizSM8Od;G-@|MGD?pXbivKm7RjA3yl|>&F*9`|ab4_usz%^v~~q{d$rge*EUUPal5u
+hx;-A;@iLc-|pW$9)JJkr~mQz*@v(H>C=bbJ^t!(-{E(U?>;_$_Q&sj`|+DUJ^x))Uw`=3r!PPKQK|j
+r)BE?2Z$JL#yMMWF?5`hx{P>5*S6_bf`1JnQAHIEMe;34ek1xOZ^?&;K=}!N<kH7x#n?L&1AHMnZ{W$
+LWyZ4`d_wAp{@W1 at zmyaL6|MtGq$A5YM&HGRH)BNlYzxw*aS9jtcfB5SCH{ZU0eEIF;_kQ>7Z~v{N{?
+3j3{7*OX_`8pH_EWll{doW3e&4nK`TeJF at 83Mu_pd)+?N2#=_PFc%FTVWF{ol3udkO#YzUe<czP at YY)
+1OnSssEr1{_RnJ{rK?B<onyZ at bCY)bG)DQU+%bi{ObMV58uB3%^$x0?9So-?Bl<G{)_+m(_jAL at q?fI
+!{fjI;EOMQ at RMKs!(ZQ at y^H#O_pZQKP9J{v`#T1I{kR|N)0f|T_s9Fr?+pI_M_>H#zuqZ+ at He0T`14=
+<gWLbR&wufgAN~C2kH7or7mpu2e)fYee)0JafBEAdeDV0%FTeQNPk;WS?>`<tfB*i^Wvn#+qf-9YGXB
+k-<?lY;MfvOZ-+lSv>u>+`?Ei3A at VECJe*NpmZ@>KK_jg5q_5Q;hQ;#q2M)LbV{{O1QuRnhCPxHWcl7
+B1FzkYo9&EuPo-+lJ at mroz==(*$X-_`G(%fHp|XLs0t_5IHtdEFoS@|*wh^<4))zmxynhu_>;|J~OgK
+Yse`@i!m8{mw`K{s(v3w{=}_e|7D*>+$&I&+p&-um1P=(NF&N|6{lEy?1xUKmSr~-B0zKPal8x`0`h3
+a=rci9pV4;yT|W@(%m}0y at TYdum5oO5MSTVclQB*xJ&tNAa?=&?)QHXZr{EC>bKu~{QBcR{ZXdZI*-R
++{nh{ec>8`o at 1IxJpMQR?`{%sYzy5qmg0~fa{>AedA<bKyfBV(*Ic at p#U%&tI at wa~tUM=Gb1^W2Uubg
+r}{?p?xuD|-z4}W?8zW4W+?7p~f_kO^CpZ1&kL+<BJxOTq%)&1XpIr*)A{<-!1@%MKx`1OBu;m5moKl
+<el|JxV;_=|t|+2=p}!H at s(Z$JO}FTVKvZ+`iU&wu)pfBfPH_y4;ytM9-4>*s#(H$VQ-KmPpl|KmsZ@
+9zsP<@Lkge)&n%+!6DC{q)mxGGG4c>-Ue(9<Nm1|Ha3Dd-p#-{^Id}zI!~b{n`D0Z}-c3`|R4!`s at +s
+`t0iKdB5Dhd+c>Sd(_+Wv&XuY-(8<Q`mOKJz1{Dw=X`E`_IRBB?A at J1`&q7Uafj!w&#vpbf4APYH{$-
+Ux)aw)|8-}bZ^s+yrMyfA$IYC{a4z8GzRmmPzWf#UOSzFP$y?qT?vl;EZ)Eb1b7%cnlVZElWDuXddpz
+U5lzYE_&igZQfBO06zIuM=9`^ma?)xEDOs>b%-X*XVS09D+x})cv;dR|VKkui1ocrxNYd3f94?fy6Du
+&B7JLDe<Hxy*}h_uHo)Rf9yknir&b<qeflTQ9suIxc4!@0b4ch%fEtf|2}!)o_GcO5>GZ+97Xx+S&Hx
+m?9(QhlV0q>JR8f4zP;pOZt%q1<)3>$=mP`*ZIedv30Ly5_&+;0_<>si^MD#dR0jd2{P;=^15MvYv{%
+>*KD8Qa(A4>{2S=y1d<&vUkx|RP9PVbu_=bGt8;cmj6UZ%ep7+(<2|DJN0-!{2d|_4kFphn&&=3si*q
+yY*hdKVE28UrxY#MBe1VmhIi at i*DpgPc;q{X?+l+V5^DbbbWWiOk=k+<_Ulc7tGvG6+<H%j_l-P-;JM
+~*q<g;kv=1uH)C}6)^mBP*epD7uDV}cODeI>UV_MjAKJ(P{w&#AjuerJV)7M>l_kSrgH+SwQx!&%Qx{
+kKImDG8gmpcyc*X=*Ui`#s?Q(oH3QCm;{^_2BI-d!}&b2%TmriTy+Pc7wW^yj*>(c3&+<xY3}PH1_?X
++l#V at us%i|G6fao at BX&YqHikoVmPKe&!wh(0={yuC09Pfi$6W_d5^S+|NCI(R^gyP|Q8eRxQ6R_n-?}
+*W~Kvw6&x2Ion0Hk8JsCGt>7?fn3tQ)qL*0Tur4M75r4X`6?h6)yKp{f-WI0J!(!_=w;`wpK}ZM8&4s
+wCLWr{UCY;8UJ>Y)9$WMYhtN0eDNVoIn$UBe at xI6-Qs+>vB<@l-s+)dy--94nf<=QkTINH{9lh+nE9D
+Ue2(fv0Hp`Vfo(A`(eS{7pJXqXybU(7*?daV?L)}XAZOt7jfjep+uX?;M{Lni;CUSKc_wVM0#aK*V_c
+k4 at XB0L@pu53&c>T$0-Tg$G&hF&grcPzb;<yi8UrtCU;kV<Fk2Z92UPO1gP5rM(zK0Gyv5w|Ur&#kj7
+tx74{Vo*l){eY!Kk|gBs=vIvX;(*|dCEOZ4mH0^Au?}xM*ZQ at A1d|h=>N{0^}D;L((ybeIHmKT`8E%r
+fCTKi=8X_uvgvulEiGMIPo-%6Yr at 88x#m*y&cu1okFGqur3QV(z}-^{5xGtop1GX-=fRF1`&v_(9_1+
+UX+xsuD87dlu=O!IpGU>KA at G!3rRFHk#peBn&f)RUCA{*Q5zajbpk;)6zD;lG4yTXw#x$X=Uzi?S|8d
+VcWO&!_T`5|{42loIa at F)Z6YL&E9G2*N>ep6JHuG}d|8-5jJU<>6nOfGZmRzSnKLv|9#r at oxtU8)%jV
+0 at +f;2$nT=Ui3h2`tH?^?d*%1_n$)B at g&%QF=*WL`$4YwFg+Uvs&~p0+$?sC}Qgx%-iyms);mB%x2!_
+1<-6NEYl*y~b1Dx_WvRxoXA}(+2vxkj#esc%7LpXnHemdaC-Tye=K!Tg@<Mj90C1Z!-az3ky8moWi|B
+)&0M&<TmdrbBFpS&E;tbsN-$1sqeo3OM{*pUh@*}%jaCv)Zi{xEyI}m+^;c3Yn?7mo4GU>-QGPhGAc<
+ov&k^-Kc}eH#F+l$noh(W8L+j#`;qlh(=S|iyM3J3jm&MT1%ts;E$HO$|5D5HdhVGW&AUoPn}3>cUdH
+&#czYRq?#^_AG4xy-#B<)A93<8to-uu$`xmOuP%3Ad$C<XQSsRd+p)XX*Q&l{5<ukvXsns)7wRD%BF|
+YZsV%8p>y3FUy51$79r~dJ&Q+(zGtg4>sF+YrXsJTea%wbX}dQtQ=?7ZpW-byX6HE*jfPxkgU1B*5 at y
+{u*ydWh#t7oQVPVpFb{KJuv`b%J+VQ;{`Y(1eH%_NgsDYkt(ebu`-qZLJCCnYk-#Px4gO(=*mo)ZC%@
+^quQ;G<qqYiRV<S at oCSe-Pc4~Os6i2yc_yDPjbIl8JN!9Ek|c0hou>$uzZD9Pc6GI4?0O!Or at BA&h&j
+|ou2lZ*qjcwgu|OL^3qFPlB{X(lf>L0YkCcrt63J!4bRP~Tf at n-r$2Xxmr2B$72cj%x^!<dQB at Vs`Lr
+UP$D4Mfm#v8>-Q$cY&nd&1V?WItpE`>*(d_}^^<Q#$O)l>%U7q{Q<Xa2QYZ`zm6I9o<t$E}#?QtGp`i
+_Y{#V$^+*B$EVpJs~Br_MB{&?M7>XQ?#vkLPom-g8z8Qz;W)h9*^U_sse^{keLZhgx%`S8Telap0jd*
+m}mLr96yq4_)Z}$ohQqk+r6m^}93usBUPY!<E+b@%PBFULB<&;LPNES&gP{W1GoYU|eqk=sGj>O-0S!
+OyHT)PgUR9tZ7l&_ru`1G?M$}9`)|m at Sihonk>!4ex~L3r|&mRDPI4j at hZcf4rxs`ipI<*M4Q#;9fx}
+Cy36K%TbRxVFZXaw%*jhJJZ3BnpS#DI`$gYvBwx!NUDG9-+gwJ**N`v+>Yf~|<JIF}#L8Kfd8ljNom^
+dbx$xb)EHm|G+Im0oT;T30*V_zzli`{d>E?!qI5fwZG35--Ib(x6yu;@Hh+OaLxHH at yV9yZXMrv}fn4
+gH*GZ8kgpFZ+Aot7)@$;O4J%3_}Lm7#P?uHgZ^v-EhEhPs~fJFRD8M-bPHj?>6{28~HOouIH8p1G`8^
+^}jPE>U~OlVYD0s=gvL(QC|P))wOg!m`>k&D7r=K4vBLHnSHIdd*b9FnT>_wL87|^fr at DSx=!&^~d!7
+^IzW8Qtns9nJP(l{BZf_Xwx;nGb`NlUwTw8*K0j61u|)8QEu6CgiTBv5*RT-mh)l?R*LWSG7BaVKRvs
+p%+h^bbETRW>y1n25Fu=8UIv1uBlBeXrdiJ}A!5ROcOo-=a5*uMXD(+7JaKowdq484GF_#;{c1?w?x|
+bl)#_0QK0I=cQoTxj#*2xk$>24NPLkmtBhajBdfryptpuhX=WYz1=1$A1Y+30n3z22X at HnqZIWjyFPl
+KMm<JIMOW89;rXO!XG$Ydx6E{o>Z*tVu)DH-ZuXBiU{1p1TdqOaHTQzt)hKJh#2nWJu>ZsF+`o>OKf(
+P2!9`##q->t#LhrQ~!amy!K`Ly_h at sA`>ckchnW71vnHB%4`zuHil{MYRIS`^C(3uIIjHf*|_tH}pWy
+`LFgemy at -=?z&szx~45_8uyF5E}y=8u650vaq`zyjf$+9plN#a<i5x(h9(%L(2-dN-x=!3tW%cN$z#y
+9XH8;EnXxXWKb(d1Ttv*7DlCKNx~6ER7`8#`p?)m3*R=foChHkzj&##ctDamlE1Y-rbrY67qmZU2t)<
+vqhBfyv-Nt-+o at cH%EyWnT=W_GnZnk%4+Vpy4{o$;SP1+a0U8XDdiww2=ht6*IERH;*LHANU%dJ05Xr
+m_C^zl$>SV9 at zpBZshB7>r0dS?7Fi<Oyz)x?vfe$Iv6W(<@W{P#=+T at E`hGv;d&v(G!RlACpxmU0cF>
+g=xR+<I0Xo<zUqK_4-}F;nN-lcAZN>EnKzcNCRA?3#kqeO>c-uN$7<$x#1v&DG0=r^~q?@y^hYql;U{
+fptx9V;Wnp-+9KlrItg>p{ESzzZB9K*$lU4U-vH!$?mWxmS*y*p-yjLQMj&|k?;9Y)@Pi{eN1GTg6)a
+TGk5r!t;*|+QW;{v)=UQWRDe01e)BF at xf+*|&3&7mRu6PN$H{eHGZvLz(2D#1(HQJDwbn;WWzG~#FQo
++Tkx-X5i!|$?p81Fw>z;*=;r?z0Qz>eBrr<qSo&|v6Q3rlaF+3-TRlo#Z&CT6Ux6H`Q^WNRBT8f$hzY
+lZNWd~rb*NjXbGo!YdyY{iz at M2hNmV-5mC?mAFxC~uD7qrGr2XBlsAsbk<px7c_3kfYyv#k8Dc)crYy
+^;mxouQ7$`fOQFE%V|vGc=?9nh{4Qe<vo+dw!HyNa)g*eqm{oOQX9p+!D|1XbNMJn2NlLW%f>l+ZK#V
+zc8zx*~nqA4|Km^|NSzLYyy%@AkNHIU0#=9C|_$j0=*O*yoXUAR`WWa2L-#E<Mc|CZ1$vP)aYrM6Vqz
+pn%RYU_Y_|U)w$*@qQ+ZaZOz(f*5eih+Q>af_1uU^dzpiIYfSZ+<;;WXKekb6={0oa%WPt;xnV8VCdB
+=s=`Dl9!<5+g_jtv`Oh9HqX$Y9!a^<X_X5BbI=yCLi;|cb&?vKncI!%3A`NMoyx3rb(><_$6MNM}+b)
+<)T%(PD at V!U|hrys9Ss;Lz7rXIkZho3Oj>FyyLgWxiYIuji;fr`0E%g}>Pqfq|+TG0!PYqmdPdV}F!N
+qQ_t5`z?^yccO&&x;b~!Q?gV+pN<h@!i9WU>UF03kP+kYZg&*7(<Dv>VfMC+E+HNsdI4uYdVLFY0IWj
+;9;$~n=@~#sA+n`$<xBjrz{?q<-wXNd#qVt2w#gP^MiW^JB`NNR*l|W?Fim%4XEI^Sx#9p&g4~xu~C@
+r_gdrpCMu?Qk5>mf^QN~~gP1E%L8?*R*JE^G=9SZKCj?c$0q8NicSG27;WN^HrXPKJS|Or^t?3#0<Py
+&JGEebM+0P2^k=~d=P%qx|<1873&5U)fa=)~f<3;!7x$j$a58lwjZIi4$YsrU}sF)wKM>~tOrTdy4*z
+%w{#k>7k^{e2AF=e*qQsLSKyc5f-$MXyo#?n~}Yb47S-n{_#c>B!d-KG$KprnC~8QzONjE>LNc#Lz13
+(KOlU%L}3;lBEPhdNkY$<j3L7a!EY8X51;C=k8uo<YhS<&m?GtLC}Z+r+>$^4am3?((rG!}+wbnPEC6
+e~+SqC!R_luwUEYI=plxlkY9!jqVU*J~MYb4ONeX1E!Ia#5Fsodwv{Z9L<`|Lr7w_{g`gLjC%Jk=N=S
+>{(VAl>(KYy;bf>EwI#A>%F<~qZGO!(z_zQS6Cz%JI6ILz?tambW==FPr)QawY9?{}wW}p)XUc5}XRd
+kQmu}m at wbNQ}W-ohYV>6#NF7GKD^RU at 9o0%w?zQfBKHOt89m8K7yIf_oCEqwMoN=-AKwlEN6FqmAG+>
+DWXW at NLp9D$rJfr-bgLB`2nm101e(+BaoymzjV#QAYv+^apDc+P*#^43KRCpP at no|WdzV2!sA*m(!1C
+(|?TX`UuHyJv7S6`62;4s+hOgqN<jX_LCg+40`9xuB)2S4)}FR2Z`Z{tCfq5NC35OB3gF>&oysWg&KQ
+dXh73nR{&g;hyd7d6cOcJ&;IPd&=Uq4jN~k6z)s^<P^tp+ThMrEl&qx7k=4MT(+LpEV;PE!-0rp^Lq_
+_+W)(YW@<h><0SK=0!habmQCR`+e~Yg>(>k?rkORPsyD8A<nkg;W_Ef_^$*O<KA0saOuG=#H78z-3zy
+F5B1YHXydG)U4!&}pWNu02&5o;y={@ww|2bzx#t&!3Jx5{YxnDEunIKqqSrO+e8y9}%)n1O5;b{f(T6
+3CX+bCSN2iMCwXMae{P4{Ttea+l|Ho3-EOQ&wrY1sf;mR-vh#beF#)<(s$N3mx78_9zIOCPof=Nh at 1*
+}UHJ;T+Io77w!*H<~>CvY>r;w<d*_GyPRPGsDcu+K)OP^tR087R_2y3%0w~aLh=|a4596m$wRS`Y=m~
+yOib`eOkE1YX^DwQje<J)^3+;-mO#qLdl5m(7mhWS#Qq7XewYj>zUoVa!%Hh!~E#Ura-2w4UD7Eqp|%
+q5HwF=(6Y8%Gq<rgUDlS5!H7TYV9c_ at GHj+`HCG=$GCQ62VEf}Svk+^nYiQ48V_Di<IptjQqbc!>n*%
+N}i6>~?hrzj~R(ooBw&LZr=g^qDng4RI=o<2$U3dfIm2=i?V$59G)O^jHI$q~_dNNc$x}cfc%zU9Hru
+8fa;>UAhdg9eoZHDBS8NjSdrv_gic4o;TnPnim(Bw7ZWi(r_nm5?w+|m at yOwe?zQ>1Uxf at k+&ipJ)`V
+|K7+T^F;Oo4j798)oxZ4o0sz7BmM<N-sN8NPXCY4m{=*QqQJ;&dm;znM3CETvI at rK~7?kY$5lUja4xI
+c)l=V%3?k|m0)Q$WSX-~(g8k)g)Ie~LR&NQDP!rJESNb;j`3czX)`B+<^a`1ygPh6=Z<Hi`}p)EnH<V
+Xdzm+8L8fP%&F@)z*}a>!wk`FQv%fs#F`eD?Qqw_ce-8)5mWFdDk at Yn%ZbbJu$dI#M>dDoGXL&2M*2K
+hA=9Gwgc-UcDIq4?DNusN=!?*IaqW3s^g5Bq4FTgRXdje|0`I^?sdQV%EjdkxRx08;`nTf at d?iac0i*
+m|(V1Eul^_+`*o7L!SR?hlH(=)ppczDcYX(T*mnQElX$!pf7W3H|lCY*D^X{MApOF{FIdYyIh at G)R9p
+LSmcK?B#tWUkl4&kA*RSZBRFU|(-Tj`Oy}DKD`zo8N|j$DB&3*|{NovlW!)Sl3vv)~_SJdmG&<(q4{C
+EhnMwm(jV|w41D5N#{0OnUC2Mo^7kyo*k*2N1WBDjn9=+UD_ksTTa!jeChT4PKH{rBPVN4XE-i+O;r~
+iaPI4|Um1$fJ=+I!ife{iQ<0pzHb&ZqStN0d&e;LD<`|U){u<WiN6UzCXE-yVnHtVk$IK56^m_tt?(j
+_A>OV$)V$PjRHlktnM&D*{I_G$d;bo37K4xj-MvRfT`T?mQXRu(7iL9ASPP?7YscJ*abSwtryHaK~H&
+e1v$=Pmk<;k!{2PRmavp~{q?>Xp-QFH2+`OMLpl%Xx-W%0FUQsNZXnj?5I2Uv5Kt$<ZDtU0SSWig63C
+x$1PUYz~kW%!)8=NWaTbIQi7$_c<V{h`^)Wjk%nMyIoR%bMgaqnR<y2G*QamZ8&Yj~PbG{Lms{*~nWq
+GuA}BmDEEJubI|3_q-g1xtp!$R#7Ie%hueTp-u}(t~mw)#MU&uKb;SpGfRSM99x`dE^ChB=4{u+{OC$
+^%Jglnrw?<ydDZlpv!Hp-km-Yp>N$6~CdMYk{5Wf2ccfe$biMCT3$|mqYHnoBa>UfCrjfhhDYV%Ym>%
+1r;LMo`ZEFq(l+8&yl=tjw4(UE8!+F~S==N$r$FNYd+xgl$8=aFlCu`57Q>@p2iNNpuX%{`~-S>X<&+
+k9|@w?ypV}f73|N7&<_(PMA{xIV4;hXQ?e|rDzck?G2zkdJS`>*B*{qO(q>GvPMeSbfvPQ=V`Ij^v4%
+2kKtVb at T-o&Hr*33 at b#otKkntEMpZO#0!aZ at 4p@Fwr47HMtx>T8;uPLc3~;Mz`bK_NsYoJ&xj84iB!H
+nlOBG<U2z>iR0PJ(aGg3%9>r+k#BpP%ldLTI=*J|;*9*7{RYRR*6hL81mDw4-3hbhIMlL at zZ^_kWMs|
+y)$!9cHgDE(%>d+>-!jc#_LmljTNV_{nDlO$Yc6rVobO+bp)Uusms88j0n9a6I_pVCeV5~`i+wCKxU8
+m at t?6YG>&{RNJ0QCpHC^`F*PQe>jxE#tHC=!MT5C2P$ofLV%aC;$;FcqzYtHVk5l)NbrE^<OE-X97%S
+v|5tY%PThLoPfqQS9{W!Gexg|Ar%&dK=YaQJfeb~!Y(`W2;;<h)2HCXCX{F}XFn&Gv-WYye=iH4_KJ@
+|~eM^|b0a>^?^=ET7g)XdK~PCVOkzsdMeip2QkdH9W1+aH6&5Ap7d6Gtpt*wVV=Jm}^;jF9*%98Q2{!
+U(WWfIY~ZSmyYZ%XEc|iN6UbAXDCjb!d;Hau9+57;bnhjalqxI_i{RWIe5HgW78()a{7BY?7T?fa$NS
+^a at 24+kF?Bruh9U<xR+zx%c<+-B;}f3+Yz7Tu)%U{dpS3_9Q|9)*{wMfv+N2i6XxY8>vD2v&9M_3ert
+qzI(nV#atv=dw6&b7S#$Wq?%*<iTF#f=843)?f|lbqYxWnZ^O`ZrN#o at _@p2Ap*(qQ4pcdj?m|!^$xE
+SJ^zkj&$^+D+bhGTzgj{oK)79Df)Hzyk*qC;KNp*kYEY?-f_Lp%9<-=V;m-5isurQcjms$AE&z&y7Qa
+g1#_kg&M;ng#H*Y6tR`BV_B${KHAz<)rR%q;@$axttzcb6&_yVL3Fr9GYFu%Pz-dmxG(j`MhQ6y=JC9
+XZM#QugiheHRo~$gq>Ag&Z;hFRhP4>%URXstm<;uaycTi9D-R6f2>)ATW{YPiV3Tj<t)&0wqn7?MKhL
+Z*fJ|vhOFg8=W?82*#%!CdowvT8@<TqouR-OXqt(y!E8BuxtzUR&R#C(ESGbZ%aOiiUuW4FSaW=GCb|
+%8IYW78C^{UnT63()NrE*3WkI~2^J&pxbYC+fI~%zii(C#rE at yL=qZ`Zm`_530Ve4<9=xg?a2;FiTaX
+C at A91mP`;K(_aWuJc830$+QG*c|6^44<{(uus~@Y=Esx@;yaZoQ!10w>F&Z_VPz%xyVSx16b4&eSbu>
+Xri=%Q=HPLy>^m7TQ at HVp)$bXW5oxY}+xm?fltx>TEj|w4F-WcKWydnT-!OzIeAyXtv{G+i|h&u+e2L
+u^ndFPIhd&!P|b^ew%qw&hIQ at xBM>|EE(XW?cCRP?rS^twH^D~j(u$>zP1xz+Zm;8mwMaz-EWi4mSRh
+>rPxy3A#rE8CE1dMBq2#i5|V@@AxTIQE)r6N6gh3)yD6CyC)@Jr%3+W6>3N>lXXNnuog7jQ<(egNxn{
+X$Nl{YVadBrjBgrJGd6BNAYw23Lmae61>1Lrb`M1lpWbMa0LhcNYbVs^b^-X;oiI2p`Z64{4bVs_U%R
+MD~O7 at iEDFv_J4vcJD``gy_w!gS-EpB^D+w6U#$W5R&Y}!^f+e%|!W3D+Lk&Fv$>!9tt&7PBJ7KR&hZ
+D($_GdFwws_;*rJ6<FfCr;IDhibM%HQS+%J412e$jo+RX4`k!j?8RFX0~%O+roJ}9ka>Bwl}#QaM^a2
+w{3-OS9II9zcUmkHf6VsgUygP<K6geTMKW?;B5`Ht(Ue{(tbUt0(VqoBcN@|;LcEB*tOnHgzRe`Szy@
+e-6(I{<=tR++XvYWgKRVI?HI_mTeR)qZbu*P48?@gAKN-;&*_gnk0&N<T5tQ++y3IVL9)sBwzS_CYTG
+(`bFw|#jhk at o7aPodi3uk*u07=?Ff8G=V;URhZkn+zz_!B^8-Q%b0`{Di*p{H%L5a;)HcQ*~zPIxb+j
+)p>IlFE3Z98JyS%(c(H+SDQsJG4M?U=)zp-8}E+cAd?ptoI_?U=)M%wgL++KxGF#~il94cpe at wn@4jZ
+rC<%_8e~5YgR-xKT9VZEaSJ$=#BWd?YV8|Y1_cqsCHwz4Usm$*;r*;Dc>0i2aDfrIk*i0d)lAV0NXCZ
+w$HZh{%`oc?Nx4 at _1o^?UUM^|!3N)*p>VL_zU{Sd+w9vm`?in1ZJ}>|v~7}a+v6KKY`al=w!(Ar5)HP
+(?+k^5ZSZXad~=~~M|#@;-}G{0f^Elp+wtCZyf;za_O-VS>TPR!ujw3YMsK^%+wSwWv%KvrZ#&D|w#B
+xAyloqA8^+s)@wV-@?YeGzZ`&T!rf=`It(tA4W!pd5c1^b3iEWc$1MSVIH-Fy1d9&utL^nj(_;3 at mO=
+Ip11%Y|%Hq+Xs6MF`qX)Y7pc22iF(`{>X+w9!-b+*mUZO3KX?A$gx?+n$yjm~YObKB_LHafSB&TXS}+
+v40dF}F?3jb%4&-ymj#*KJ#J+mXC8RR4Tx^QvusaWnSobze0v(uo0Egxl`mCfM7?;I=WiZ3%80fp><2
+z~0Zcsj}_$ZF_y&2H(a#+XmmZt+#FKZ996~j^4JTcfHC&49sTUwwbqi_qLh0?c;6xc-ubSwvV^%<8AW
+2?cQy>ciZmWCgj_e-L_ at 7ZP~rs$Y$HA+jwl-ircp0HUZxD#<sn&ZEx(FO0oI1ZFFsWT-zSko_%4pb!R
+9XfYE+YbWPKiL}1w2+BUT|aoo0fwymsfD{I at t+Vh7t(@yPV-5H7wy8zcjg8i&*KWoR_jS#UVb>YcvUu
+xsfZC`5Jm)iEFHb&cs?9Nb}*pu2eqPFd)ZTo54YT9<0cDy7>lGlr at 1q&M7Z0iD{mwx%qaMmPt?{Mh0Z
+?x?j?b)%QquajGjwyz at O#u{>qUXbs&F6YD6h?FUDqsI4u~4#ev+dbzdp6si&9-N=?bK}hGu!^mwm-A&
+%Iw*dxu*HpmD%=Uw!N5bFJ{|t*t1#xHdQ8`?7M7REE~RW+ai0mJ4o)f+abgI)Al^J{f%vFW82l($bH+
+a*fuM+&5CWaV%x0Pwj*}V-h%2uQrm9CyG^0Dors;Y-(*#$m2cY-+a|=Goh?$lXJ-o+Z+j5i9>lf>vF$
+- at +Yfh!Yu=Vvd?EM^r8iC9%y`4!4Qw}?-Qace!p#CV^4pkh&q1Y~bH{T_0*YU31hMJErUTo8bz7WnOV
+Vwnvu7GUv+bF|nz3#();mM7G}FhKc+F@(gW!x68qS`EGl4DKwiw$JV-r*pI};&l=FU)@yb5T_Mx3DZj
+nemv(&u-AWlmwf-W4$<eFO6i%y-UIgnVzTy@~c_)Ehl-^t`F_=E at r+Z;re<@@B at H6mLkpdGKbS?=}m*
+=5B!S2ErQ%Zw$OK at W#NK`)=&JvG2ydoA_?9yTR_pxp#&}Ad<UD?k2e#-EL~Tf$avio7HYsyHV|>EH<y
+*y!M&`sp)M9?WVCCyl(Ki!RrREo4IbZy3y)JtDA{#Cc2sEW}=&k?wY9x6x~pCL(vUIHx%7abVJcyvx+
+(MhIHZrjBYTx!RQ8~8;sr=3Jfy3$>=7dn~ZKUy2<D!qnnIwGP=p=2BRB{ZZNvR=&qTH)D*@P!Q6vzAf
+ua%ZZf*b=q96^jBYZz!RQ8~8;ou+x@)E)WOS3!O-45v-8}S~$tx7yP;^7l-Sed&S_K&0V044gJ>SnU+
+dS7y(-`Syq??g$M!Fg4W~7^u?l~Vekqk;VDBYlRgVN1OHz$3!LFopi8<cKFx*6$aq??g$M!Fg4W~3XB
+Zali_=%%Baj_#gO507p<y7B17qZ^NIJi6x#M)vE!q!S&CbTiV;NH-$gh;$>;J44ZdNB3)M|IB|$CpsA
+EW~7^uZbrHp>1L#xk?t3fsysw`XDCGQ=*FWPk8V7=@#w~*8;@>0y7B0q at A;VN6(ik<bR*J at Nbd~ANl#
+(V&CR962_D^ebd%9dMt4umixV)q=SwyAY^F~N8&R8)Ueo1((hW*CDBYlRgVGI3Hz?hpbkEmh%(Rb|Zd
+$r&={~c(o$tVy?hBc2TDocJrlp&fZd$r&>87QdmhSm0>*?^2>7GAL*7X_nd{EfH(+y8IJl*hg!_z(AU
+@?6pLEZB;7Smf|)QwR$M%@_ozC#hjQ8!239Cc&VjZrs7-Di$X#k?z>06O!?b2IaX0Ai_kh9U^2ZkW1Z
+>V~Nsqi&3PO}EWbH%r|Zbz{^`P&Yx{1a+TL5rn!C>Ygu8nC>2<Zj8Dy>YndOm?40rZi2cA>L#e0pl*V
+?&!`AO-3WCf)J;$~LEZDE1T%<W)QwU1naZ205JhLobxLy{LT_`;kaOnplXzw-He+T4!m8IS1<>j>>jA
+#H=L-R5WdK<>WZlo15>wVqSvO_flyy_qO<6Z(-IR4x)=gPAWZjT;L)HyhH)P$<!8FRcDeHdDpT20psC
+A>(jaoNq-Kce=)(u&&S>=<~YlczWy611*H*ej%b at SHETQ_grymj-|&0F_)>kPlVb at SGZTQ_dq^Y`hma
+T&Vq=akYE&=iX(g0367Zs at w9>weDt3n1vaq3dR at o4M}ite1J~Ra2%0Dd at VP>xQlyx^C#Yq3edO8 at g`j
+x}ocyzk;4M8+g4l6hY*5lh;jNH+kLUb(7akUN?E&<aLwRO<wo>soX66 at av|pcZSdTSvs+UUpIc;_%-l
+r;Mc&ffnNi^27V3v8u&HvYtYwsfnNi^27V3l8ss&|YmnC<uK`_yw+3$w^X|Z{G2aejaT?6^&T!3tO1G
+q2(k<z>bX&SD-FBtzN?VF8#g<}Av88}%SIxbLbRk_x7t+PNAzerp(uH*CN-0H3ky4}-{-7dIYoOLZt$
+|u&zM7||fJ(ZOuB5XPtSPi|xtfp6kJ8qZVY^;S*V46g?RqT<Tf<(#TZ6Y=H5Je<e55_n9%;=Sg0}{54
+c;2_O$(-(0bK*S26PSR8qhVMYrM at xo{~K!d%B$Sz5!hWx(0L&=o-*9pld+afUW^uW6+f>1#}JQ8Z0%K
+YcSV$!CQm325$}C8mKi;YoOLZt$|ttwZ{DY9QX^|8n`v)&->@gL;|`7bPebl&^4fIK-Yk-0bK*S#x;j
+!a{fy)!9rdGyasr^GZZItdbj4 at 1q*%+{2KT*@N3}Lz^{Q{1HT4-4g4C{T*SgB at M~OCEG3CJ!LNZ|1HT
+4-4g4DTHSlZT*TAoVUjx4eeZ4ajBKS4%YmnC<uR&geyass<@*3nd$ZL?-Ag at 7Q1H1-!y)zUO7WZMw8h
+YZGz<U+DnBc9!TZ6X-Zw=lWxHWKV;MSOLUJKqDyft`h at Ydk1!CQm325$}C8oV`lYw*^<tufzIQu8^R{
+sCPBx(0L&=o-*9pli(EmeH*suUAdhLIS at AehvH@_%-P3ouQZ at uR&geyass<@*3nd$ZM<_Q|2~fUL+F@
+_%-lr(APUd;ecNQzXpB{tP at -%%=lx?9g2o&B=|M(Yv9+wuYq5KzTO!M2mBiNHSlY!*Et!}z{y5nfY<=
+B0b&Eh28az18w at taV1vO1gAE273^o{SFxX(QF-Ns(>O*vZ*Z{EsVgtkmhz$^XXDB*AY=GDRu>oQO#0H
+2B5E~#iKx}~60I>mL1H=Z1jrn7MAh7{r1H=Z14G<e3Hb88E*Z{EsVgtkmhz$@MAT~g3fY>`jBMFEN5E
+~#iKx}~60I>mLubTXY1c40j7kn=mT;QZYKzD{>0 at Q@{O;|33iG7%shY53-yoM=Qn0<vgR~XsDkQ_7MO
+%JrEbC`O>v9V_)nP(IeNH&mcAlaBd-KcqZae-t5$p(@QBpXQf&QLfo*<iAPWCO_tk_{vqNH&mcAlX2&
+fn)>829gaV8%XxfP$b~kps_(?gT at Ap4H_FXHfU_n*r2gNV}r&9jSU(bH1=KK*ub$tV}r&9jSU(bG&X2
+#(Ac1{L1P2N#{9(r1qm7(H1^JLeijZOHb89P*TAoVU#}T~7;G at uV6eepW4`gICat&_gAE273^wp<;Mc
+&ffnNi^26+wg8sznwzk8gv%wU7T27`?;*kG{1V1vO1gAE273^o{SFxbGa*F*z at 4F($wHe!CK!@#X~hN
+6SF25OC%=$MBW9lSMoYoOLZt$|vDv<7Jn$QqC}=1-4;vIb=h${Lh4C~HvGpsYbzgR%x?4Za$DHTddfi
+WHDF=2Ul3)&Q&lSOc&IU=6?;fHl}^P}QKSK~;mQ22~BJ8dNo?>bt<IfmH*m238HC8bmdKY5>&$s)12s
+{y>0{1xpQ#8U*!1W_O13jyU0{!BGRF21X5x8W=S&YGBmBsDV)fqsE-m)@*~N-WduJm>MuOU~0hBV5u?
+3tj+iXs0L6Cpc+6mfNB8M0IC60?+ir;Q4OLRL^X(N5Y+&x0aPRB9z-8d4WJr8HGpaW)tIjb4Wb%EHHc
+~u)vM;=1qN0Psv0 at BY5rMLDuM%^2Fwhc7!dK!P;^kMn6t?>#V15iOwf)%9DyYQG6Y%(Vi24lEYD-Uu8
+djU843~0;;_&SE8DQL4U59CxC?8zu-J;3;m_oICfYMOp6RZsVa#dTm`TLU2xb&FxLss4rq7 at LcDmK+R
+Hh at Cb~IrlPGZVuilJsqai8(ZL3Ci%z^Xx11E>a24WJr8HGpaW)c~piR0F6+&4iPv22l;78bmdSY7o@`
+s at IGNR5hq-P}QKSK~;mQ233ukF@>lGQ4OLRMD?2Cq+T!5i4Lk7R5hq-P}QKSK~;mQ235T?6c|`Fuxen
+{z^Z{&1FHsA4XPSc^?DVJxIn9cRs*d@%@;bq3Qb at D)&Q(g^9?WaP@;pf#(Xd0HI=9TAgw`KgR}-|jrj
+w!psYbzgR%x?4Zs?JH2`Y>)}X3ERb#&Tb7r+ at HPC9H)j+FvhN1(j238HM8dx>3YGBo%szFtQss>dJsv
+1-^sA^EvpsII<q64c2Rt>CrP1wwzXV&XoiNy(D4Za$DHTY`q)tE1E7GrmYf(5V!U=6?;^YzR#o20BkS
+%b0$WsNzAI#UYL8l*KKYe3dJLlHw+gR(|XHuGu0LRo{d24Ic(>%EC{$QqC}AZtL@=vk*w)}X9GS%b31
+DC;y0${Lh4C~HvGfUE&o1F{BW4agdh_0G^hGffJ$25Jq|8mKi;YoOKutkF}q;smV*S`D-sXf at 7EMc8V
+v)fiiyhRRlht;T!>@w8jO8hka-YM|9XtASPntp-}XGn^qu?E%&RtN~bqtp-~Spc+6mfNB8M0IC601E>
+Z|jWbh`GhdOY<X~#R)PSjR=3eLK=5m6Cr3On4mKrQIFlu1bz^HeI;)J6HM-7e|7&S0zVAQ~<fl&ja21
+X5n8U!^6Y7o>QsCR~<1EB^&4T2g3H3(|J(}1S|PXnF?Hw|tY+%(QSou1^(It82tHw|tY^F^`KXTsB%u
+X~=}lb{AX4R{*xG~j8#(}1Tj-`N`UH0Wt?)8MATO at o#OC=Es$j5P3Q;L*UNK}Um*1|5y(*cTp+`JOgC
+cremnr16|%0}2F`1}F_s8lW^lX at JrIrNK$#Ia3i(8jLg;X)w}Yq`^pok;WM53>Azt at Mz%Cprb)YgN_C
+ry)zUOcr@^6Jm)qiv6vvEK}Lg&1{n<|8cZ~pXfV-WqQOM(48;T#4JaB=G at xie(SV`>MFWb)b4ox+;Ly
+OKfkOj_1`fS56cao&cxdp at nAs5z4IUaOG)QR7mqN}Ei9-X21`dt+K1jpnouM9M{*Y)!P%;{1G{|U>(I
+BG%MFWZk6AdOBOf;BiFwtP5?-Gh86iq0aP&A=v&bLn)p>w`C#4w$BH1TNS(WIkEM{^FRvb#IOOAePD?
+&wHHnv66VX)@Aeq{&E=ktQQeJeqVg>1fi?q@(XHi^622$w-rtCL>Konv66VX)@Aeq{&Eg{_xbiB0*^)
+(wx7;Nk*ECG~Z?qucV84k$4_-(xr4MUAkOKmXcY()a%`nVM>?MrF7+;lCGpH=}NkJlDS+-QBsr?Ek#S
+wbB8TSOVX0GB=EfEZd$sQ?nrn1?zqyC>_~PbJCd1-BpFRInq)M|Xp+$+qe(`Sj3yaPGMZ#G!Dxcf1fv
+N?6O6t~GMZ#G$!L<%B%=vMbB^Adza<$>>(VsANidpVG{I<s(Y&r#Ezf^SEIROL;?cyTiAR%+CK*jKno
+Kn3Uvn@?OfZ^YG{NY7hkJf0o#-H=Nk$WjCKOF5nou;MXfn}cqKQKjhb9h99C~N?nxjgb^LRd(GwYPsJ
+nh`b>kT=i90Ug)O*)!%H0kJ_q3FP)iANKUCLYae%3`iGS&I%lns_wvXwuQ7qe(}Tj@}v0=I-m$(uod6
+nv66VX)@Aeq{&E=ktQQeMw*B;5osdQJ44aINRyE!lS{M7oG<jMc}5`uN)wdke2bS^deYLQrAbQ at mfp4
+8^BIuoQMhSx)8wW(-_u2P5}xLK0|4Jif|>+132GA5B&hEap(Z^|c$)Au;c3Ftgr^Bl6P_kFO=OzLG?8
+f{(?q5 at WSYn{k!d2+M5c*M6PYG5O=OzLG-+wl(xjzHOE0UFM5Z}pn#eSf>1D-o0nmh}2~QKACOpmgju
+?=YYjO}V1U0EkQkR_Xlgd{PA_k!*K}~|11T_h264YE%)>F(=q*IWSzlh<cxu(Ykr^!u|n<h8S`J3jN%
+ZnIzn(#E?X>!x#rpZl{n<h6+ZhB`ZVz_B?)8wYfO_Q4 at H@&Rc5}qbJO?aB{G~sE&(}br9Pv0dyO?sN}
+G~sE&(}br9PZORdJWY6- at HF9R&etZe!6c|Tf8L)6H4$ne)Fh}$P?Ml0K}~|11T|mZwe0>eY7*2Ws7X+
+BPDmy~O at x{VH3 at 3&QT3W1r4uI at H8E;p)WoQXQ4^ykMoo-*XDBc at YI4-%sEJV%oaLV4o2+#rmOE)imNQ
+t+h&CPSbXWSPJ3}!s?QfdiG_z at 36LYTu5)<$=;c3Ftgr^Bl6P_kKO?Y}|C>-c%!qbGO2~QKACOl1en(
+#E?X~NTlrwLE5iD8181od4a)I_L>P?Ml0K}~|11T_h264WH9Nl<hCSr3c;#Hfi;6QkZ4j-%H6QeuIDQ
+4^ykMoo;G7&S3!V$>w4Nl=rZCP7VtdS at sm=xM^!gr^Bl6P_kK&H2h{@Q?&G32GA5B&f+vlba?ty)zUJ
++%&mqa?|9d$xV}+CO1uPn%p#zX(H1^rin}wndXpb#+1W6^4x=PpruJmla?keO<J0?G-+wl(xjzHOOuv
+n%$O4M4SjQYF at a1InI<w#WSYn{V^%D4IdQ>Flba?tO=Oxwrin}wnI<w#WSYn{k!d2+M5c*M6PYG5O=O
+zLG?8f{(;PBQWSYn{k!d2+M5c*M6PYG5O=OzLG?8i2(xjzHOOumkPUiqh6O<+>O;DPkG(l;C(gdXmN)
+wbOC{0kBj5HBxBGN>pcZPz1ktQQeMw)mu at o3`F#G{EvuW5vgG#P0!(nO?*NE4CX8Hxl(nv66VX)@Aeq
+{&E=ktQQeMw*N?8EG=oM5KvGGv|xaW?lwLlaVGPO-7oGG#P2;+?UP)k0u^XJeqVg>1fi?%;_A+Xp+$+
+qe(`Sj3yaPGI~u%gGUpOCLT>NnqV}+XoAtK=^V&tlF=liNk)^5CK*jKnq)M|Xp+$+qX|Y6jAqTMwdY-
+TNJf*4CK*jKnq)M|Xp+$+qe(`Sj3yaPFq&XA>0dIwBwTlf!hu?4&B69F??@*ms7qp&1Se^!pBDIOah;
+aDY3Y}id1-BTXDB9S-Sy(p`9fBeK1+{T3d|gProS^Cof%oZJ|eBSm_gid`|hHkIRnykm(w#&S2gYSPw
+z at M?DhID(`&&(OOuu+ElpT at -=PqprAbSZmS(*=jQO1_PceuSWSX=zX=&2Zq at _tqlat;ViW5+ppfnk2G
+SXzEiANKUCLYb2NoY-q`-PDvB27e^J?j)knmtR|p0~?OdpTaDo5hMJqooN-6O?98#GLsty{HsgnzS@&
+Y0}c9rAbSZmL at ID`D6VlDrB1TZ}Ta%Ysw6sCOo|}6hZVf;c3Ftgr^Bl^W~;J|K-90h?^!iO>UapG`VS
+V)4P^c1vgD at n%p$GX>!v<raAwx+l=SjG`VSV(?q6;OcR;rkZB^*M5c*M6PYG5O=OzLG?8f{(|nO>&wo
+iar9Oo_Wg%=XA(B1iFi-aS>Z<vjbgy?M7CYQDdum~BSnP1qYrp<$Dn$g*(}btVO_Q4 at H%)Gu+%&mqa?
+|9d*>g>?b7oH3^IzIBJ<a(?+$>hFS*&8z#Hfi;lb|L+O at f;6G~sE&(}br9PxDM~b0!C|15cBiCO1uPn
+%p$GX>!x#rpZl{n<h6+ZkpUQ&-6CnG`VRa(?q6;OcR+VGEHQf$TX2 at BGW{siA)ojCNj+-(?q6;OcR+V
+GEHQf$TX2 at o^g*e?@A{`xM_0J<fh3@^UOL0oaX%7UDN#GX~NT-FTJ1MfS at KpO@f*PH3 at 1G)Fh}$P?Mn
+E8Hx^sn)5GjO;>Wp%tXSOi%hPsH|D|;zg}Eem|)bLe>W>RYI4-%sL4?iqb5d8jG7oVF=}Ge#Hfi;6Qd
+?ZO^ljz$}~A@&c8b~9UDwdn3^m#S!!a`#Hfi;lb|L+O at f*PH3 at 1G)H_4bflw2nCP7VtnglfoY7*2Ws7
+X+hpe8&`c$)Au=burUJ*h;fiBJ=vCP7VtnglfoY7*2Ws7X+hpe8|0f|>+132GA5J40W<tMk65 at 1B1JX
+-t5qCQwbFnm{#yY68^+sySb+H@!VoO{#ils8hkJiB%J;CRR<XnpicdYEspts!3IoswP!Us+v?a=ik~%
+teQmivTn)w(#~1Cu+?O%`Fy=Gzmr&qJm+!d=0pfk%{gV7L^X+O64fNCIo%ggEudOJwSZ~?)dH#oREwn
++MlFn5bIP<hYH`%!s6|kVpcX+bf?5Q%2x<}3BB(`Bi=Y-kErMDE_0DifGXEB1$ze%1QudT&OT6d5B;F
+EliMJ1LX}8O5$@bh~ND`8SBq2#i5|V@@AxTIQ?l7fDDN>4*BBjW=!;~Z?Nl8+YlB6UlNlKEEWFDfVC@
+D&clA@(>BB;P=ans_a#Z8Nw7B?+qTFA7JX(7`>riDyv{?S2mjpC-oP45hkbVs@)-BY?LzWLx&x~D5WC
+3(8iQ;Me)0)d+rH!W`ZuE1$=)8eMZO^cfrH!W^j+_aEsA=5&pWolkVp)v{;GOZ!gqNPPki<TBGEm~T%
+v}kG3(xRnBON*8kD6RSD=*+B&mKH3%GZX~0w62+UJm*J=MFKJ{WLoou?IvTzO^cfrH!W^j+_bpqouP2
+xriDz4mKG>2P+C@%Wu{o5v_NTr(gLLgN(+=0CoN8TXDA#%X at SxLr3Fe0lolv0P+Fk0Kxu)}0;L5?3zQ
+ZoEkt@}C>$7RG16kB#YpR#^{i?Ir3Fe0lolv0P+Fk0Kxti5kd6!1HN`UNgabAz{b4cEVx+}L3y&5aEj
+(Iyw7_UF(PE;-MBfz at Ego7tv`}cF&_bbwLJNh~>oBQn;?TmOg+mL677nd7odXXo9$GxKcxds^;-SSui
+-#5uEgV`nv~XzQ(88gGLkoxA843a(T0FFPXz|eEp at l*Vg%$}d5?cJT=3j9#hc5_P5VRoZouNnopann+
+fEEBP09yR>dX=VVm>v#-76dH_S`f4#Xw4VlKfdQ*QN8mO6)?15Xu;5ep#?(=h87Dg7FsN{SZJ}(!k~p
+g3xgI0y)zUL9JDxSanRzR#X$>$76vU0T5IZNo>x3z&?2C<$IR`<6$dR2diCq=^ip2h%kd(yj)H|23oR
+B}EVNi?vCx`-c(Y(=!O()C1w)I276&a1S{Sr2XkpO8poKvTgBAuY3|f2o2n1RPv=C?^&_bX!U)9|6JV
+FD576vU0TJz6d!@|O#g+XgiAHhM3gBAxZ4q6<vIA~$e!k~pg3xgI0Eeu*1v at mF4(Av{SaM0qQ#X*aM7
+6&a3S{Sr2XkpO8poKvTgBAuY0#kIN_Vf`}@@4g17K3HoR2Cm)K2fF;^?EYVfI$m`76vU0S{Sr2Xw7%D
+7Y8j4S{$?xXd%!dphZB7fEEEQ0$K#L2xt+|BA`V;i-5i>1X}d->PajT5NHw5f}aIH3w{>-EcjXT$NW8
+4TJs{=^brWO5NILLLZF2}i+~mZEdp8uv<PSs&?2BU0@`!yItl`MXDA#HXd%!-poKt-fEEEQ0$K#L2xt
++|BA`V;i+~mZt(ZOnfffQS1X>8R5NHw5BA`V;i+~mZEdp8uv<PSs&?2BkK<^Ai0s<`rS_rfdXc5qYp9
+Mb)eir;J_*w9?;Ae5q;-1Al?+ir(_$=^Q+_Si6anItO#XXCA7WXXfS=_U at XK~M(uNBt4y({`z^t0$^(
+a(aP1wRXZ7W^#uS at 5&qXTi^cp9Mb)e%5^BZ_&@9pG7~5eir;J_*w9?;Ag?lf}aIH3w{>-EcjXQv*72Q
+p&+22ML&yv7W^#uS at 5&qXTi^cp9Mb)eir;J?pfTk=4|LSa?|s)A_0LG0xbes1hfcf5zr!_ML>&y76B~
++S_HHR=zWJG0f80*Ed*K!wBTpK&w`%?KMQ^q{4Drc at U!4&!Oxnrp+!H7eir>K`dRR^;Ag?lf}aIH3w{
+>-Ebdv{v$$t*&*GkUh9Uuc7WgdgS=_U at XK~Nsp2a<jdlvUB?pfTkxMy+C;-2pcd=~R8<XOnGkY^#!LY
+{>@3wajuEaX|pvyf*Y&qAJsJnswz0rM>6S;(`HXVK20omKNENFE+}7V<3QS;(`HXCcq35v!i35Dwt8x
+My+C;+{o2i*^?6EZSMLvuJ10&Z3<~JBxPScPI!zXMxU|e}}xMltcpUEZSL&v+!nN#6pBc0t?&~uB-V5
+(re~z7_R7A at vWj*#f%Dx6yzwXQDCB&MDd400cG`FH3f3!4u!+4#%A3yGx3>k&$N2xoimr4`H{In&4gg
+a*XiS at +n!!_zURKCkxW6(gObf6n*}usY8KQis98L-cxK_u!kL9L3uo5+yKu!bi)R+ktnthl+<0d3%%Y
+e at F$-cA#4Lze5VIg=LCk`f?=FMl^|~)T1j;OwStzqmW}(dMb=RVUXBNpUl6lR5iZcsm-ghWEcxLg;LY
+aj!3uP9{ER<O&^O}K}XBN&ZoLM-taAx()9C&8&%;K5FGmB>y$}E&wD6>#zq0EAq1u+X^7QZZhS at R8~)
+${KUO?8P5idhu1C}vU20+_`wi(ghx2 at 8&%r=7bN96hTGfLQ>u0A>Nq0+<Cbi(MAFEOc4GvVdg)%L0}K
+ENhN at _RJixWns(0mW3?~TNbt~YFX5>sAW;hqLxK1i&_ at 7ENWS2W)9f0uw`M(!j^?C3tJYoENWTQvZ!T
+I%WI}c=(5mdq05?YAT4%T?6TNpvCCqY#V(6o7P>5SS?IFRWuePLmxV41UDkX9X<^I4mW3?~TNbt~Y+2
+N at sAU1m0+t0Vi&Yk at ELK^pvd+vLU}eF|f|Ug;i&Yk at ELK^VvIu1n$|96SC<{&&oGdt5^RJW_oh&$6aI
+)ZJohcwa1e`25S#Yx8WWmXTlLaSh{tkZHJfVD7h_Vo65y~Qz1t$wm*8J1%(>V~zdQQ66kCF)lLRo~eo
+<k3avJhnv$|96SD2q at Qp)5jKgt7=_5y~QzMJS6<7NM;9>-R#G1t$wm7Mv_NS#Yx8WWmXTlLaRWP8OUj
+I9YJA;AG7|%wBY|;AA1mqLD=-i$)fWEE-ufvS?({$O4fCB8x*7hpgw!zCdJw$O4fCA`3(oh%69U^Dlo
+-2TLQ1Miz}M8d)^5U}QaK<^Up#K^B8723ZWU7-Y>q-aTsu5LqCyKxBc)0+IEccSQq-yfYLIAhJMYgUC
+xy-!!smWYfr|kxe6;MmCLX8rd|mVPwO|cTFRkMmCM?x5?|0<dWo)<dS4bvRq_Iv7}g1EGd>0{_dscpQ
+-N2VM({8+tO|6wsc#%E#3CH?MmB~wiF>nNZ}}FgUAMv4I&#vHi&Ex*&wn(WP`{CkqsgnL^g<Q4%r;CI
+pm#TN>Y-PBqd2nQj(M;B}qwAE>cpo6fH$d(NdT>G>B{v*&wn(WP`{CkqsgnL^g<Q5ZMf}8Dt~KMv#pl
+8$sR~J|%fd@|5H$$y1W2Bu`16l86BY*$lE7WFyE%kc}W4LB4AS*$lE7WHZQSkj)^QK{kVI2H6a<8Dul
+aMv#pl8$mXLyfak)46+$yGstF;%^;gWHiK*i+4!;XW7Ef`k4+yNJT`c|GgS5DvB_gY$A*p#9UD3}bZq
+F@%(0ncGsk9*%^aIKHgmi)RQ1rYp<_eGhK>y#8#*?0Z0Oj`v6*8t$7YVr9Gf}z{6ljM9UD3}bZqF@(6
+OOoL&t`W4IP^~Hgjy|*vzq+V>8FbjdzBso;NmcY~I+sv3X<j#^#NU8yhz^ZfxAxxUm6Qo3^(3$Ghf@%
+^RCHHgD|LLCoj;c)Uob`k7-h$DT8oCW#Fm8$336yfb|LQaV8Z9UD3}bZqF@(6OOoGsk9*%^aIKHgjy|
+*v#?HP!K at JhK>y#8#*?0Z0Oj~v7uu#$7YVr9Gf{db8P0=^M#=e9UD3}bZqF@(6M=A^Ty_ljT;*`Hg0U
+(*toHAW8=o2FAQze*w*5W8XGk>YHZZlsId`aBgRIIjTjp-HezhV*od(a<DH=(V2sTen=v+HY{uA(u at P
+e<#zu^d7#lG*Vr<0NYijU0l_CfjV>8BPjLjIEF*aRny4YZ`!D55O28#_A8!R?h?D<zHd%x=6+v*=LHe
+PJJ*!%T{bgG{&HeGDG*mSY!V$;Q*FAQzG*m$w=V&lcei;WkXE;e0ky4ZBF>0;Bx28#_A8!YyGVQ7=Zh
+Kdap8!9$aY^K;uv6*5s#b%1l6q_kFQ*5T#OtI$+LmMhKRBWi&P_da}GsR|#%@ms{HdAb-*i5mRVl%~N
+ip>=74AnnWY^c~!v6*5s#b%1l6q_kFQ*5T#OtGz at +p?=IpV|`W&QSfEF}DdqPYY&>%@ms{HdAb-*i5m
+RVl%~Nip><8DK=Al*HE#cVnfA-ip><8DK<`QoY*+Aabn}d#)*v+8z(kSY?63qsOnK-lf)*8O%j_VHc4
+!f*d(z at Vw1!siA at rlBsNKGh<InH>LFr7#D<6s5gQ^lL~MxI5V0X*L&S!N4G|k6HbiWQcxR~UA!0+shK
+LOj8zMGDY>3zpu_0nZ#D<6s5gQ^lMC|!~&!&hC5gQ^lL~MxI5V0X*L&S!N4G|k6HbiWQ*buQHVnf6`L
+sbtE8zMGDY>3zpu_0nZ#D<6s5gQ^lL~MxI5V0X*L&SH at 51Su0KWu*3{IL09^TXzc%@3O&Ha~2B*!-~h
+Ve`WtKWu*3{IL09^TXzc%@3O&Ha~2B*!-~hVe`Z0hs_V0ANKfR^TXzc%@3O&Ha~2B*!-~hVe`Z0hs_V
+0A2vU1e%So5#}AttHZ^Q&*wnD8VN=7VhD{Bd8a6d-YS`4UsbN#YhK4<VTi(>LsbN#YriM)on;JGXY--
+rlu&H5F!={E!4VxM^H0=2r#HNN#4VxM^HEe3w)Uc^xQ^Tf)O%0nGHZ^Q&*wnD0VMD`rO%0nGHZ^Q&*w
+nD8VN=7VhD{Bd8a6d-YS`4UsbNFIo`aH24VxM^HEe3w)Uc^xQ^Tf)O%0nGHZ^Q&*wnD8VMD{7gOW`Rn
+;JGXY--rlu&H4K!v=;83>z3WFl=Dhz_3waqrygocZRB-6*enuR at khtSz)unW`)fPn-w-IY*yH)uu);7
+!k(|=Y)sggurXm{!p4M+2^$kOCTvXDn6NQn1HuM`4G0?$_Iw>@6T&8hO$eJ1HX&?6*o3eNVH3h8gbfH
+A5H=ueK-hq==j%9|5H=xfLfC|`31Jh$CWK80n-Df3Y(Ut6umNF%xJGR~5Y)7wAwXNe_N*Icr8bklnE?
+>OCWK808xS at iY(Ut6u-Rbu4D at iY;b6nThJy_U8xA%cY&h6(u!&$3!6t%D1e*vp5$v9Uo(47zY#P`gut
+8vRz~+F>0h<Fh2W$@59I!cHbHGM`-80ZLz-EBW0Gk0e0&E1>2(S at gBfv(0jQ|?~HUew}*a)zD26_hA4
+6qqsGr&fGP5+wyHT`S)*YvOHU(>&)e@*|I{&mklkN+C~HU4Y**YvOHU(>&)e@*|I{x$t;`q%WY>0i^o
+J~Pnczs7$J{u=x>_-pXj;IF}7gTDrU4gMPZHTY}r*Wj<u4D{r$$zOxN27e9y8vHf*Yw*|Lufbn~zXpE
+|{+jtU^XoGMJ at jkl*UYb(Uo*dEe$D)v`8D%v=GV-xnO`%%W`525`piHN{hIkT^K0hU%&(bWGrwkj&HS
+4AHS=rc*UYb(Uo*cxGtfi7W`525n)x;JYv$L?ubE#nzh-{T{F?bS^K0hU%&*T3^w6)FUo*dEe$D)v`8
+D%v=GV-xnO`%%W`525n)x;J>*2n}eU1AX_ciWo+}F6TabJ_ZCVfr%n)Eg4Ytq-GuSs7&XP_s2P5PSjH
+R)^8*QBpWUz5HjeNFnB^fl>g($}P~Nnbx_peKDz`kM4L>1)#0q_0U|lfEW>P5PSjHR)^8*QBpWU(Yeb
+CVfr%n)Eg4Ytq-GuSs8%z9xN5`kM4L>1)#0q_0U|KWCsPeNFnB^fl>g($}P~Nnb<0hI|eA8uB&dYslA
+-uNhxIXP}3C4fz`KHRNl^*L<(}Uh}=?d(HQn?=|0RzSnrK at m|kgZXdpP(B46N2kjlSchKHJdk5_uw0F
+?nL3;=79kO at G-XVL3?A;k&l3bEpl3bE3NtPr_k|oKKWVy(aVo9;2SW;{$4D^TU9jbSz-l2Mj>K&?gsN
+SJ^hw2 at wcc|WhdI#zqsCS^=fqHj_AxTJ*lB6UlNlKEEq$DXxx=2cqQj`=WMM+_xKUD8fy+id5)jL%0P
+`yL-4%ItU?@+x%^$yfKQ13v!1N9EnyE8nJ97&EON0KASk>p5nBsr2C7kNtYl;SDHQ;Me)&#9EBBu`16
+lH65)sNSJ^hw2 at wcc|W>dWY&AsCS^=fqDn(9jN#2P`yL-4%ItU?@+x%^$yiLRPRu|L-h{TJ5cXHy#w_
+Q)H_h`&QR4;y+id5)jL%0P`yL-4%ItU?@+x%^$yfKQ13v!1N9EnyE9bvRPRu|L-h{TJ5=vby+id5)jL
+%0P`v~74%9nP??Al+_3jK+J=Hr@?@+x%^$yiLRPRu|L-h{TJ5=vLy#w_Q)H_h`K)pLdRZsN})jL%0P`
+yL-4%ItU?@+x%^$yiLQ13v!1N9EnJM*ti9IAJy-l2Mj>K&?gsNSJ^hw2 at wcc|W>dI#zqsCS^=fqDn(y
+*ohf0KEhB4$wP5?*P5S@(#;8EbpMagYpi_J1Fm<yo2%%%DXdE^(^nOyu<Pi%R4OZu)M?a4$C_z at 1VSc
+@(#*7DDR-WgYxbSRXxi)Ebp+q!}1QxJ1p<8yu<Pi$~!3UpuB_f4$3<y at 1VRpLsif64$C_%@36eX@(#;
+8Ebp+qgYpi_J1Fm<yo2%%$~!3U&QR5}yu<Pi%R4OZu)M?a4$C_%@1VSc@(#*7DDR-WgYwQC7d$NQu)M
+?a4$C_%@36eX@(#;8EbpMagYpi_J1Fm<yo2%%%6oTM-eGx%<sFuHSl(fIhvglXcUay*d57X1igzg9p?
+HVl9g25nsOmA^!FUJb9gKG{-obbW;~k23DBhuXhvFTIcPQSWc!%QM8LE1WcQD?;cn9MhjCU~J!FY$_9
+g24--l2Gh;vI^2DBhuXcZRAS;~k85Fy6s<2jd-#cQD?ec!%O0igzg9p?HVl9g24--kqVU$9M<h9gKG{
+-obbW;~k85DBhuXhvFTIcPQSWc!%O0ig#zI>M`EIcn9MhjCU~J!FUJb9g24--l2Gh;vI^2DBhuXXU{;
+7 at eam281G=bgYgc=I~ea^yhHI0#XA)5P`pF&4#hhZ at 66vtAB=Y}-obbW;~k85Fy6s<2jd-zcPQSWc!%
+O0igzg9p?GKhLF|L^4#qne?_j)x at eam281G=bL-7v9I~4CwyhHI0#XA)5#0>Np?_j)x at eam281G=bgY
+gc=I~4CwyhHI0#XA)5P`pF&PRu}$@eam281G=bgYgc=I~ea^yhHI0#XA)5P`pF&4#hhZ at 5BuB81G=bg
+Ygc=I~ea^yo2!$#yb at 6P`pF&4#hhZ?@+u$@lMP at kMR!1I~ea^yo2!$#yc4AV7x=|4#hhZ?@+u$@eaj1
+6z}8=^ce48yo2!$#yc4AV7!Cz4#qna?@+u$@eaj16z@>HL-9_|K#%bb#yc4AV7!Cz4#qne?_j(`@eaj
+16z@>HL-7v9I~4Ea4D=Z9V7!Cz4#qne?_j)x at eam26z@>HL-7v9I~4CwyhHI$&Ondx4#qne?_j)x at ea
+m281G=bL-7v9I~4CwyhHI0#XA)5<P7u}?_j)x at eam281G=bgYgc=I~4CwyhHI0#XA)5P`pF&&irc=2j
+d-#cQD?;cn9MhjCU~J!FY$_9g24--l2Gh;vI^2DBh_V=rP{Gcn9MhjCU~J!FUJb9gKG<-l2Gh;vI^2D
+BhuXhvJ?2!q9{94#qne?_j)x at eam281G=bL-7v9I~4CwyhHI0#XA)5)C}|(?_j)x at eam281G=bgYgc=
+I~4CwyhHI0#XA)5P`pF&PR&4%@eam281G=bgYgc=I~ea^yhHI0#XA)5P`pF&4#hhZ at 6-(R81G=bgYgc
+=I~ea^yo2!$#yb at 6P`pF&4#hhZ?@+u$@y`5}-NASV<NZG!+p!75KmY{6{HqWsa_C5dx=~;!78341vG<
+c}VPW9Jcw#&;o)}MzC&rWFN%5q3QamZ16i<q0-k8OBVmvXP7*C8R#uMX- at uYZCJSm<OPl_kSlj7NC=w
+m!Fo)}MzC&m-wiSfjEQamZ16i<pL#gpPm at oY2nF`gJtj3>qu<NfFP7-L=D=ka;jm+Sr>;|EYn0|XQR0
+00O82?eW21+&KF83O<Siv|DyGynhqaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4If
+V{3A7a&KZ~axQRrl~he{+d2 at u`&TULivu`n+=mCWFX%y5?9_<AAlWE#GH7XK6QxLlq!K8<zC(YdZ5-f
+LCuzAmoS9v1yM6hg{@{KzrST{kOtS&?$Ft;t-pOsZ+O*g*&8*x=EfgiDV3Lk1^CFcJk+B=f5sO-<)RC
+56BJ+-)SeYGLG9~#77|5Tpce&UxLRD33nF}wCcKEbAWA`5brn#|)cy3vEE@<8C5#L at VY{1$zxN7UElU
+z~n%a_l9xR at SMtQ4go*HOxj?GqOVC5h4A%609H?YOJ|5Fwff`-A3EZLF;5n!wPLH#Bej*65>tSfk|H3
+flyiO3O^nl>QmSZmBUf<wBF?Lb?MyjPN9M at zGe+SEi6<6GF8vASbZ)Y%6#2 at P4|aF*`7&d)92BW?rwA
+%uzg+Icvux9PL8PZC{-l1|r#!2n`M3_wL>jOPq(hpV&G?=u^}?-F8ImlCjhgKJZ63ccJhKq#IJ`hCNk
+A7cF>IT9DLx*e$%r3jiVX8Dm6irrL2?t1b|bOW#L}Z?ols;^`xOkJB`sE*@`@3#W04{vD8HwNnznP-T
+Vo4Tu9^GDwqesEGTc at o4cF*bhgG=^)E!I7=y}d7Lgr$#NX0G+(CkSvH7>GUk)T!OTl0pDiu{Ss6H4uo
+qIfgY-wV*MXoaXe*u=ZO&O at qDbHu*)@OFLuK at 4uNNh+hTf7aNgLm#XDcx~n7%jN1<GrGyBPXB>e9bGB
+nkaPp#>Srhq46pP#I&p)HlwD)Jcrmn at _#o&2{gen;y|JL*%`O2GhI$xkTEnR%uN|QMJyu!aDXlYu3<@
+{)L}tQY$a}jpqcX8T<ME^jL%KBK5|3j9Mk~t<-!fOZF#OIGG$yP9=aj&s~`5W5HmVJfwHO9K={hjl(K
+B({rx+Ejyb`u&q?9)ykD{?hrii>s+RdWr1CR$tY>Hl2|#bRmZU^kMZzaE{uLpKWB%pXjL86PU!0e;hk
+T}zA1ep`32s8ecz7G9|#t!(Ia>kwqd_Ic5<af#eWL4>}#v(18%r}NI$fG0#Hi>1QY-O00;mH1*=FUPo
+osyKmY(ZhyVaG0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*OOba!TQWpOTWd
+6k`SuO-Ei=HK5>QIfS<TWaIVKUEoJuSdcd&!Dw20<4kujn%-#w5I81ZZ}5kr{DPfqI$g2c%)rk9QvMf
+Dl029GUACRp3L);pZw$hw%>gC&mVof{r;m5KK%Hz54Yd^{*NF0&+WhX?oS?mvVH!|<Mzj=7k_>6>iNs
+<gV$d at ZZF<!e|Y`BU%Y(zJpcao+wWh!`11MN*H7D*FJC;qdb at p@-+Axh-K8JBdhzx}UisU{zdgQu{oU
+i!_WJAX?LTNUzyI;$+c#f6|L*bsYWBtJS8wvqr|(`r`A0Uqee(LL-v9FH@%h`wueL9Kw8j5?tLIO&_1
+%wot8d<JKmFimTf45vCjQ~q-`n1Q`EvV|@4neSeSGuy^tZ>a>PbF${p#)0i!Z*<$NcG=pZzl5*|tACf
+BLuWlNT at l`t;)4?dMze at a^{Y_4dh+Z at +o{>VEzls+TXmczXWyBct~9)8pgz=JnTaf5?vgYWwl^_uH4x
+Uu{p1U%hx!&F4V8-JZYt>KCt{^7?OIfA!+)A9?HhS6}7h(CfF4Pv5?IH-`WG at t?NeKfcMHZvXuF>hUR
+`=9BNgc=_VXy!iJozI=T3=5c%eX8Vr!-hA`-k at _7S`Rwk<_Pf{FyrcW8?eRr^&b|Nk`1B^<+4_6!-QD
+gMpKUqUKYjj|{^x9d$Av%3PXD;Q%-MK)cjbHka0veXq+e|>UfJw7IrjOFY%m}6hcv70i^uKzH;-R`|M
+FS3kl)?@^`p=K<&S^*e0%@nKX3o~{->Y5|MBO4{#AZAM>;>v`Ky**eEVIR;8$Bd)zkA=Z-2~=X9Iuu@
+Y4_eC9in at Hy{1}qtE|L?|=8v=O2Ig*=O7D{`l$k{`SfHpML()2Y>qg`=4%~{OQwA{`lF4?`_*>kB{$$
+n8Ex<gZv*u{B<_@?du%LuO8n%fAR87J^G(>df#LRUw*ZH^Zaj*In7 at _zDSGOp63$z?#KVHIehv0)n9$
+yyyWi#`m625*W0VtZ=Y>HJiSQUN$dMhvzx8_eSV*%(SP~gv+Zd4rRT5y?PX5EXL<SWUVNQR|L*1M*H6
+#3- at JbFmaqQd{k(SXt?fT=V{hB`r_b`8|LVW(!;gRa|L9bH@{kRG_@@s(|5sMTzkmPu>dQ3C=U=>htd
+*7qgn4}Z^!nTFix+=AwjW+U{Tr6><M#RU7e73I_21J0<sy0hl->U%zxA4D%PYTs_2r9~`NjY7&D*!%{
+qiS2{P4qjk6(TN-rFC38SNL}<`qxB_$Th&dTiUzfBsL~{@(2UZ249{&UbGeD-PZ|T7UP}n)O!O`@G+Z
+YsBQjea8LPwT>80{YPItKHq-(&eZALr;Pvh>vwJa;-~HB_dkEO{kp%WQ~ES}n2-FQuX~jjW^aD+(_`-
+K=lQRn{d#||?MJP!AHPdS`SKs#?)euikAD0&Y>hs>++M%R_50>6tL)qFzx-zVCcT}WCH>H+zy0*#!Fl
+=1=YRg>qYvKy{a=3j(Py83`q6Lx^!Z1B{P-`QzMucAXE+$f559T+gw3VB{rexEbWlv<_Uv6F at BilaAO
+7XDkN($(c~Rup-K}%o=db^M)vvdoKBPZw&syyJvv%y~v+VTotj*D$rN at qE`RSD}(fQZ;Y>l?(2W#c`_
+Wo>~Ex(*I_^ijCUv7MwGqYxY7;7AP(HPH0pV?Z at cK*5Y4%?j1(zr+dtL2qf-mABm&syWt^SGXkIJtE{
+pN+Zam(Mw>-6I|v-O4ZIw??)x_cQM~^Ts{fe7243)^=R^UUu$TyH0Mi1^u1*uOpt#e)%AL%45>*nmG>
+n)qK12k{6A(p0%@a(aHzuJ=<;Bx4dEYcjounjGZsfXXD7>8#|rueKHtVwR`Ok*$tj~^KtWAv2vv6Vle
+vkj9ce}=TP-HIz7rOW964~<uh{mUh8(pjvcle`}vTMv7Yt)$cB!c`N+$+GyGQGuyN%@_gnTTpWcyX8i
+)OD&+-B3)0v;1j1BGf{;+uPKCkT7mGhA=iwDnnz8KYW9=zn>ox8&r%u&8K#$u at Q4zoVcZpt2F#6u2m{
+?SKp<B73d7)5r0XKwq|ndj`sN^@#+?z}f?JfCJxTFW`lxx1L(nzuM|-rCBy_ba>LsJ0xVzUM=xN%?#`
+)1KyWElf8*$X?|gG_jR`=9dp{!(+bd at 7f=>E1S%R^y#w;M?POq- at _nBK3~Vg@*#7c^45z^G`fG}nD?<
+5^GjpP+l-^^A>w?<p=Dj<SoW2Tw~-^Voti23d(pT3%GM4>IwvkCV=$qt!6Rp|t;YEFM)$kzUb({C$l1
+!l$}ec!Gq22%wv8MS>?a);4QbtZhiwEl!q8%8IRugSI`e^#Uj4mVJfsZ{h8C|d7fXI|cUD7V#_7jNyX
+j}r7hshA;)dBq+8OqU{kCrJY8_uA=WRK$_UOQ{Sj?SnZ8?ptrD5gFco9aNgOLkNo61KDe9MdzKaw+ at y
+{>kT{UINmc004%b9~cC^1)d+__$nx_!w8zKKQiJK^#(kxsN07HF(U$nD<_GcAe)#K1;eXJY0UC)xeTy
+haQMQj=_xQ<mEcau4-%-OOoZ6HqK>?QjT1U93|V0{?Hk>Y?tX|+<e?C4LsKz%Y=1&&``P)eCNPZ<h=r
+$YAhYcFw)NF*vo!_+WF1={>o`jm&3X^vCC{I??tz;LOf;y4E)H&Jmh=%<&N10lc%RRnDe0B{OWuddZ+
+F>%FA=Y8<#Jx%sb at dV<?R)PaG(wfEAu66N*PUv3OTa?{~W+=k3f6<`ZOBwZWNJ=8)mp(x&qc!8mwp9(
+=bAJPMI(&oD!v#uRv(wW{5Dra$X0SJvlZ2D1zKK>6p%gV<zDY$R`!mcVS~0&gpABn{B#a=N)!>(%brA
+F^ATE(?JrH1qj#Vgq|Pc at U;d-x(|zy!p;BZu-gXVB}aF8G`Z-XSKT``#XFahcIvhIXx3wP3JS|zRyQP
+X at Gfa{<R!AoX>P!3?fV#&tB_zq$6c~o$-b1%Q-r at F}@&8+7Nrtb5}I$E&Dc%E7xw&TKuU|T-?hz#A?X
+6iBHmZU=IyPvoYM+4_8z^sgtspvK8D5 at 0g~{h#1Bv?kYRBqU<4^Mf!FAXheybD=J4MzkjAvOaJFr36x
+9}kCdaW`QsSz=7-BPm+&BD<|OUaF1Y0EjyR38TnQC9PZ-;9qVj_aBMy8<cWSY?^p<=|s1hh-fXW3stK
+GyU*(8=vB*zWp<6$0oo3tsHHFwB$(ecyyug+xTgRdIUg at 0mL@N5JI+Xa{4owC!e%0^f)x&wL&jnJ)Wk
+FvFK>K$?EgyJjj-}{lHe=I$G*+WZQlC~Utf6zDvgHJqhOieH&LMiLQuY;6`Tmy&OoBoVd({l*&UuD1f
+ln-f~t_Gr2Fuv1eg^R*%0T#E*sSRC2P9Es3odn8B+}^_`{h(F5iA$KhG#&g2vz0 at ZkH)g<ETQcH9CYI
+MIWTdM<-vMe`Sh(37Mb$~8XNOo#~oaf(LODNWd(Fdgc>xSb9v&~5 at KLZ47|Y}<5|OXaRCDz2N(SXk{Q
+)*;*$K9GXpqDCy@&w2Llv2#n3A!Dlccsh@~s=8I53+jwXQ{wnV4TCG4p6mTM^2v8y3*-!!IAf)~Di(E
+UNU>EPc13~a*7E3IYF)e$*B)7az_j<f8cCoX9K&RoK*UP475Ov*uwB%np$(v2qJ%fM%ViwK5$5T3jE1
+!rAxC}$^e3D9A?bnYOJ*-1CBRXlt`5&%PRC6JF>=YwRs!Wrg#x`YQ`Nn5OT6PI)s^+i7hi<#A)u3^W$
+9NYm+%4{*n=_ at Z_HsLOZn*@cNCwNc5RP#2#CH(~I1id_P2zYp2TGt6T6B?FDI?H@;jJ-Q@`jHc_07&c
+F&E0O|lF5q7iP9lp8A1m`0H9+|@dl_YjVL<^Fy1w`i(8YP9Yg{Q`<(YUBrZvi!E^#0*3`MCfv at R2=j4
+f$GDXYQuzVa+XAR6Djyv#5hgWEOce_CzaM(+{6CfY7m(~U7p at YZ72_G&}JS+pxFgAS500bw3+QGy`q)
+~o-T+G|WvPu`3^QQM_7y;u~-Y};J8zEO at HRSR;c%;SCV9A&`fIt5vD6eWar#Srs2yB7$7Y-MkI>8&Hq
+abGiFCGgwFed{~hS)$^m}h><_qcVhJT~1b at eSl5q&+49P+W3~!%YOW7Mv^N8^kx at UBm0<z_V8Iu~=N@
+P33oTvLABcFwfb+d|AvX!(CXnvHXaoq5#Im)EHQ`i50Hhhg+m>OvZJ$3ocoeqHFo!sKNzAu$o5P=EX#
+TJI at XvJBdiAaZ}5<cm~|y9XF at A<RpazGYw-7SfOFHe2}AL;@W5ue~SGs!bgzg7zuFri7q-3>7KWXdBX
+~@_tDI!PkI at qwM;RC0sd at aVp5hq%DS9T%#M-n`ue at bA+7Ntn_w20ve`5&7v#d?T!YNaGA}f~Vt}UHX+
+eXPl%L{q4!?J|3obc$3_|e~hRw at 0fO~1W5<HeZZf8ZY2D|Y!+vsGz%j9rPAjYV;nIJ#&<8;~yARUYY&
+#jxqx}19;$)2N>)(_V)XbnGkm7U{;rVfb-y>Z`hFmL$Z<6w$K9s<a&a|grYiTBIQ$nW7)Ph9CCqQgbw
+Cs#->-2F{l(nz`25Mc1x!lq91y`={T>~b&|8S{1~ityOU5GN^NKBiEB1oyhzO<a<;%31^~9Nn*y4-xE
+7?iEHq;ye+d1LV_27<ktYZX1-<q(hFg?DtGuGRoJwQuWu42;pPrUK)0gQPR~kY<tcVibk08hPUG at +q?
+cIDoej^WWojmRCeS`MhaICi>YHC9f}KkoVY`nh+G5Nb5=+?AMjydP*HZ48PY?pR2)Bm2)vVh!5!jboZ
+Y2i!Rj<EgT=WI5sGdI?>tOn!1Yma=!7rnOi%05B4n9Uz(5GXOb-TGD6pH~EXRS=W;yT<nkyPGcNYFV;
+Y&{a$pD9wYzdkLWO&%T$myXC?0o5t=^(~42vxZN%xxK^8~2^y5*&Zp3Z&G;KU^T6;lG$r%&s%=mncg(
+nlJq_WDf1-!gTf1H4f<~m^XkES)2UIWjqFx?gvX4P$>c&@- at aB%){Ka$Tkw1<HUCtZ<G!r=WUj~vnok
+XPPnS-CE;dWHpwtvpjeZ=`jdEkF-jNHND_D6ekWmM;>oFF1oAQL2N?l2l9{z(%={E`Lv%budp;bQoZm
+Ckfblw`#y6woL-)orM=M_%FLoae1Jtl>elQp+rp%-W#+C>QBY;1(UC{iyaY$UU3_J<Wv$adhz$Z4=1+
+0$Amc-$9iBnH}rwgI;flRbt0nOieOFE&<-*A0oO-=SAxcknif<If6%Q+3Ln16-Vi-rgSxL)FMIzN!aJ
+9|i6vH&jWoN~z%85cIVW&vK(<&(vapIptn)Oe)>mGB at eVi|-?_$}K_Oqlo=2Lk$TkTF}6#vyo;Oip=E
+rhPljANfjjZ|!BKbHoctlcVM>5|?z?*=_(1vE#tNK^}noZC1$aEFEZOL4i?t7nPBa=Vb#F-J}g at H*rZ
+bW50@#CPM^eu-fzKaZxPNBbRH37+!#$2FIC$nomeX?0}8 at 6T0b+^8qf|$c2~D^{^fwIVX3^%Z at L~g*#
+z=H at x{qh;N{`%r|)v*AHUCjVCjs%Q#=?8+1AZ!6p>=bu5`d&Zhxo(Igb at kUJ%fnPl<#TxJ9pe!A=-5|
+>Pq^~)t;h=mSbP<Tx75>r42=Q08F=Thsy(KSU+P1_r|WAeA+f75mC4>ZmfFiFN9(qcjfWPh=d-2r0F5
+;VZynUG+1VcaIF?ed7AmK#4@;u6e+z&fD=5-a$mw2NQI9cGF}^4l>i)`}~H(nUM%xzr?a2r9vL!6i-J
+$an||OM2bu+h$$j3>P><V2Xz+ZV)fwcwN!}Oaai0 at MXIP^?-t&k~d5l_H(kL513U5j~oZh?xb)2i?KW
+zG&u>vk~NK}dO&)z`Opb=c{>?i%?UHL2EsgF%hf<K+oeH?%sbf<FrO594zs%^EnoikN?ej{fcu)hRyG
+3z7jKY~h2^acp9n%AOUO<*(sq9lG=Lb;puPM<I^7fhU~8l-tcyhmf at sWPaZ-Z0gd!%#CTUn;!HnQAGJ
+u{*rcN5ZX4SLOh4+WvYCimeV at YSq9b=)C2M&y=l}*vNvT4GMP=Lh4wDv51GQ&Www<$h at ++F%rc)4ZKu
+t}#$d=tdG=pR3Vu~BlGqpq;449i&6ZsL-3Ry>-(>0p5kz6zLX2H>Vk*R!zHf)VL(|G*z|+ht^?deqyy
+aahb-uC3`5<32mlb<}9VrFR at N{7$o4&|KS~|5=4DQsYDHp+VjK4dUDMo?sz)vG7lZ+lM at id8P%pfx{&
+st3xKqx~#dhfY<a7lS*yAW0Vkv!69R{JuJuBZZ3qvHc~aPYozzRxlAz16&6FeqT+Fevcx5$ZpUK2ME^
+!yY6McLmOoCOUOM1#9>mZt;l^F at g@-w1jc-Ej^pgj}C{u|0hRtXUa`waTgF%SLBw%w?*j<2jyW_1{d1
+)y5{CB(5ak`}}@Z6-f(RLvh>l5TY1yd~b3 at -fHu`_)POg{}3l*MOUx1BX{3E`i@)P at bh)zLVt&Y`V3z
+IX~MA1wM&OBhm&2;PAyi)qZ4S{IEv4p6S&3_8xz{NL(AcR=lyE(dOL_()LTq-TYR0g04<$TO>5amgt^
+X;JCqg|#JIgQ;ZPGAIHxSt|iI4N{w<X3!$h;(K_d%ea}&f07TGdl<Y-|H!ilwim?Zgd~J2*|6G8-!-k
+RFWm+C0{tB>(^d1<6PJw3x|$#q0_dR0!xc?NOD_j?i9ycV<<}1wH-YJDx=2_L_^7!?wM!jmTID!>n*h
+P8EP|v-IO87<M^##cDFY#0AzsHd89_tJ^=>zDNqSu-Thz(Wic at 98@7Bm5>QmBBptl%)Nk?P*^n5cRpB
+3NI+cR%G-(@WZRF7DolX7>87 at Hmw=470eP(a{zlDKZ!nRzp}ZRU?<za72=dvAb_NpWP&TADavOMq0dE
+|&=-(utNAevb)V5LHb!5WqBVy#|c*!=wZ`EI%KDRWnLBS?V~m8Ig)0VH~<Qq=eLouYuWxWqtoVs@=pT
+{gjt;qG%2H-mu0TODvzdlO^c at Zyg3|lStOv71r at xrsA`*-~308FKD&|1R<<(Fz{zko}{ZAYrA3o8)@Z
+c5rv{*gK27{r0uBjs_`AvapW4*VO->PfYp9FTiPn_xQSH&*Ord2P#u9E!RrF#2jziw-TrKVONiguK~)
+EYF(BVkKXZwpot}#}^yd05+Aw&YvV24ia&|N%wo4snmHlGxq$d?!O**H=J(5%lQkKoE8xVrJss|?Y)D
+vI8;oF~O`t`6;*%?qUU1px_d}D=dmqQEtvRmh6QfQ-F>NzE$!LCq7-K2NF<MHhJNuH0 at Zr*^_U`i$qG
+Xk=e<6yl3t`8FZX<Rua3kG9OnrL=8YaAxHWS!0jXj=cr7(uW#N;89iy5T|=Rjf|kw1WaN51|tSw{k&{
+YZU$NFSw+ezkz5 at Vj1<f*~A-m-}HJof=(U;W0w=a6hiBUTVx#0+n?oH%yprL0y1w0Bz1xR$t*192(}7
+ro(@-rjQnPr;_ZCkSE#`duljk91ANJKFa&bmE=T~}u+ll at Qzw^u8~!}SHoiA_VWbH&S5uQwxa0trs04
+s)8ofAjXMx0uD100y#11^J>|zNMK31CU#FY*I1v$9PU}!gS$--k~r!me`V>62;qnxCxJP44eVS5vXVJ
+Izuqgsb$=dK71Ph9+2VkFm_N*cIyX92H^l`oY?pvas>2m~1evS-t-3+ at RrK7khvu>9m8X_q>Vm8ipdG
+q<}gnLnski at 2^M%yd~rtHL9+cz$JBCLwq?3gOd=1MOPJaUHXScERl>CMCpoml}myDvd*qia}edxQ0>@
+vJY6h?r`^e9H`@1yfj{rnGDjzC3eJ!7QTL($sMY#6yp((0qyx^orEUN;<)a1(U(LwjbJr&o7CRvIUc@
+u$Nb;}*h>xDKmr=Fgai+?s^U;}|HO2OCk-eP^;dH~uuJl32D!`F;?IU0;34+}fW_j6f;R&CY&CLazbA
+DZ?Y&jmKI1VnxLD{*Fb=T5pE80LOh`@(J;56l<3&`xyrR}|TIfUXrCws5wHm9tbdVBnTUIr}N0=$h7%
+x1bk%RSv&S&Y1&U<`M_!3rS-WXY2SF~mac{Cp!<J8S}8GM!>Dwv5qOfv__jfDdrSLp^5Nv5CN<uwSD9
+RSyqT7t+ytP5}6ES6nVKJd;NDgcQJy$o_g>qhK&`-c;K3HWF`tFVg`9L7z0S!F@%Syplhk2p}BJFd4Q
+2<SqWrgE=We;4|aWqQjKG>dD+pJ6p5j4I+zfF=pWhR|RPpWZT`r6F~sLz4e)H*v`TS#{iD>tb$Tg36T
+hvTumiPVWGSnAZ9b35b}Ru_?G0POWqxQ{C&;ur8u7Yo_6bGWPl>P6C#X3jE^ohV6}3kxtPDF2@=sP;w
+Q2HcR)~RmVbZOjneByI4o~9Y&Sf!$3PQC at 18oGL6D<pe%&*pjtfU%|D=f&5Nv=FpRJn(wmy83!&S68J
+sCt#VDpK9PTe>yPR&!`KmaC?scJD%Zs3PtlCO at QE5Enk|+QZLA%M01wRW5<U`{sb)&*y8?Sjo_qr%pj
+4pO;YA^>6r0mAJ2%vqa^>zJFP&F*kOUUIkT at 0`j3Fh5y;*wT^2lY_^Ju}rq?qIm?oow}!E-(fIsRm at l
+XyqqK&-ik?^G$TG9d+11EH-%Xg=gt_|Lg*(rfz_ByyWV3jK^rQT-!jR-Ao5@=ACDudu<r_9L1fIMW3u
+ZOpMfj5 at aYG<m1AXAqVbN9!TdiP2i^p^e}ke<B+%{zfT^Z#L)y(#RAYwSrPneB1xK59me8NdI6uhsE{
+xC-wx=R5cIZ-?lqKTPKhOq2$Qtfpie$5?1tWhk}c(d!n%|cj}l?vq>6^EcG0~KShE3&>vG;liC4TFpJ
+*sn)5uDtlF^hf?ScYq9~ZI?MHn}JK=<0=cP2%Q#qg{{SB8TQ(Erqu$w85$4UDpp$#ueFe&E^$*PHYnc
+f0T<t(F at 6nN>HHN;D4Z&?rOYGh--ZJaEVzN^q1=92Q~dJ5RIyvNLqAlVVDv2-m=U1MO^=j9#TL5hub&
+AxCJ&UXtlbfVzJYJ^=DSS=&YTiUyL5fNz29;D6yu8i-~bircs=!qM4;k}!|A at B<kFe8M4%e3XAc_quH
+WrwzK9B1V3Jh)X>*4#h68_2Amjrg+lO^;R<CZJ<)o#KpMVy{MaBPOO~<G&7(l;SLFBpDNUq2%8pMu4B
+0LL%-v_m_bdvaLIx06&8XlkKB^HxAFjLa+GH~+adaCnb<@{6(XHzdQ3&Kmgbj>^KKWu1ow at yi$Dcmat
+I~82xsM<2z3hB-Vj@<q(r|%A!fm_3|3yBr3*UHy$(c-V>tFI0QA?ymrkJz9(q9D3>NsL_|?Fj3nkowI
+$MWO9opjPce|(SO;?65Q2B#{Ryo0LiX~IX+8z+NgZf*OVpHTNuBSNOfLh}!{rZ9KwV^;7m)L?z(Irl0
+K>|O90(<Dy94c?a(}eSeTAO^n>+LY8yMBD2dtK@^hJF>1ofS4DnNwU6#f`vZ?aCyzTFZQ<saAX)2arV
+N-G{o at CXH?^G1v#$;2|?a at dv_eNm8=>maNXH^bNnqrV+^PK~A}-kl1b~zFoRQ76;!_$Jxm!W$zS`%Ox
+2C0X=;gs_-%WQjO1QbbzWZa-e%{h+|qe*zzxoGjSAhh^cPRIU<a?=foupYj>D3S-<Y;(SsYF)h=}$5H
+U*{@8~^=2qErc+|;zIl_!6bAq(jqrc9UuQMI}JTgBr8-Rl%>b(6SV4ng)qRf(9C!QfteWgTKRcf=r0a
+;P>t!B^I}=Z*b16a#Vbn643t6)j7wTnRsESrF2=%l$*Q46Lh(dM{8*S2bVy$phUh)hCdvI{*xxkUaQn
+3L9g%2MQ|TP~t<lJ1oWOPo?_s`sePg%RhAMIEU{*E*y>nXm(oC1KTv|RX at c5SjQ~ag+gha64}J#5RMn
+FKG3~(^T^fo04`>FL;>KG42LRVUr?j*Z7HgCy}>9dkc-lD$&Z#jsCzZ+!U-(ddbUV3*qX)?p2X+{JBw
+P43I+LjvklF|vEj>8O;P!s(!G)zOGRB(YKF`sBVbrIs)R%C0P1<1Qj^vTmk!CNVG+42?6}7_amiE-M7
+gFBXBVoD1^>Dfv|J)Uctlv5h94P}1t(jga&5AhJ1z%q at hE=sK=;~Dx0|TV0I4-Yyo`ZQ+9l_Reo~VJ%
+1gpdCKwZ|^6*sOQtKGqYhH6={?KHnc at B_d2@!dZwPM_~jH(jhlG!CPQ@$j<q)+y)>=)f at V=GyQ3GHlf
+8f;1G(|Q0)2;oV_THyX^LZLaGG${!JdQ)aRbrQAS(7kpN$7Yz`WwPktCHhBe;kF;kvu2*a@?IPq5QDu
+YO#)0|@F at M{f$nvXE3LD{z2apouE|_LnTtzc{Dt1lvcoVl!W~<7b^#a@?sb9gwZUoSq!1M0<4a8jGgU
+iB6ew4wL6kBTV;wII0E;6cEj6|`Z-1bBU8hX`w9}Xv-jPy3K8R!P?g3XG$Op!B!;iQNhumvpN6G{Nj&
+|Dvy4Mzxuv#PDv6)`G3#N<IT(gWcG}2`bINdfuCrCes&~VpA${x_Y&Q{eMq$Pa+w9Xp}i91(PdV?84J
+vyvVGnSjG!hB at DqVe#+_xPfFZCKZ={aK3tO?GGqeAbwXbsD8ENfTV83Xe+QU2010S?Z<tJk-6CgKekv
+88N>_MjQy}zr*S`0`;I8GM1fyFoUQcNW0no$TT8qxa}9+Ya8yIU<j1%V4*1d88=pxzSgIaXRG&^S|QP
+4+GR16?v!5RK=(R8`h)UE7x(q*7Wkgx9u8p&pV50ZiY`Ot-UV1?Giz at a!i^4<za8ja2mJ3+B<1$Cx)M
+(ekGJ7+TDQ|08&Meiuue0%i&3R+tCr at f`p|*ywYzx`#mho=ve1DnS=376*cHqATok>RWj^GIL**%%(N
+g{FCX8|0!yzsK%-r+g1`*Y71bd1NC~+G)t=>&sL4_0>#^tUSl0$cmO1JOD(;nzvCwo4Y+f^+*9%|L62
+ at q>Gv^bV9 at lBzO5flLoOfN}>JN(p^-s8Z2oU@#(fd}6;+{Iw`aU6gd@{z`lpFxlt7lk=fb5i~#uf1?@
+SM94i(7i52{g?Bm;=9{@+XZw?=_$q>KEV>?>FzjS$E8%dOE?o`EAKwgy>@E+qZ^OGbEL}?c(;ltt<8&
+|J at uY?b7Y#Q3S1W_E{FQXwyK_WpnDzWxVv7=5;~-&Nz_zBtlph|ObfO6f3*&vq0SoI+;SWKtN616-Rl
+$<tHHT6Q}@kiZ0azerB#QK`%KwO<(HT44Iu~1q=h?hs}6andvzVTjxQ^c>IACOctRkQ3X;o&SdAdSU%
+Ug)Mfdm<3|9LK4|K2VwC=>DSPr`d9r{`_BjN=L-=Wk=X|-g<VL&@vCKxt2W7a<R1KsO#Pw=62>93b$B
+6zYX>O!UiRG+3(OLvUJ#b7P3?fPkf{2k}fy*7|@C&3#gq^!5)-oT~bQRQzj$BKg#(DDP4S-0k5zqKi{
+>Np3w*Eucx8AeW3CCs=rE^<~=9NjFb`PPfqAg5Cpb}2DOx^p;QwJy}X0;CuH7)znvWoLK~s!vkBqUtg
+tFqcL5K$=jryo`QshN*q-hq_nw_LLt+Z4Lsazz;UdOI?P}z52D at h-wh}Ds!T|qq!G=yLit7-Roc%?>d
+Fg?!IQWFtKeb?KgCf66{IF#b8kE=)#|!l+;b9T?D%B at kRGaO`(Ubm$(TwUg-7))v-m<xu5DwRQ>=U-R
+MBEV+e%UlGF)R>((nD%l$a)32Ul4s5f_q*6mLUy6aD#f!MH{G94<;si%Qj(0Gj at 3wN(Kb+7IpI`uoDR
+1UpS$WNkmv#@}}wV-(ly}@G5JWHO-{iD+cYQ3R*oss~{(m4E%`;Q5>jcxsd%w#%cDy2vcJHm*rrZJqB
+uw#Cu>;c^?B6jEibxgVvfD<-lS)0w{bLv20F5HjK2Ht+UelAx&b;#Y_u(giSy$%XDov7U at rnH*uoyc)
+`5%vJfNbzUZT;d}6v(^3&DNhrGb+^07-%c!Fpar$Q3p%ttQz4N1Y1-aY2Xj}+Ha<YIJ*b8Z=+*fj<AC
+mUDn+#Te*)+ge7VYu<eD7?H1{Dcp|9G<(+&cWS$=4-#&!Eibg#?cajL;_ApqB)nUVkH4KXK!B4W~pVz
+#??f%^}XwJp?$tGBQHkO#Wgp-PQN+SNjp-(lgnW7yrDsy0zBPvmHuuD7X$1pwe0h8s?<n}0y}+CgBQ?
+THhW+LAu8zeRMCywKk<mFP0&ZU!V0%t{rkNSgFkeg3%IC(PVKh79~eZ}N_;K_qQ+np=`Es%TPqzl;6_
+EP at lay&J|?`E_)!4Y-{>@&&H7?!esFvK9!*PO$%307>H7T>h+g_gaG#*Sh^Wy4MZ|*LJB2nLkM^cmj4
+QFLre=_b?-nTg&CA#E~0PBk0q;wN7L4>nFO`!JrI+!2&rq3vN}5!ca)SHb}H-<{3gb5FHY{#&B<nfN@
+Ck*72X{UgxybV(?rdJMGtO7i`79<iX*0npI=B8xnKI?vWuXBc0Il>*sDANB2T%jKpzK|7!5&y>dmh3#
+^OffiN`~jHO$4<i4y?EWfg<-NYpwD7WMcPfH>=T)_!E%z|N9q|n2yuJRf~It?GEtQ3*d&<S7Ve@}I<C
+Zu~ExI>d9Hs(H_`hfC&bOl3)*_C+9dr^P|zZh<j1kF}Dg>zS5Qrl)N*s>>rVVTYhNfF9r^euR2qN at 7X
+CY!<XTiPCTj&NYs{+1KnYexjoJ&8uq8ew#x&Rqy|7fOi1j@=>0S!U-EBUafpdonJ0#CxB_iSD(LZ4YW
+kIXy%xl2pi$si0b!BsJPmf_a%VPHfQOp6>7i#M~P=Y8=qLj;^+ybpiVCC1eYynBjI`@pR9so0IGypb~
+zPb7$5v8+A|7ez!{<#{|B%o3N}<(kxCR=^QE1hWqN6Y@{ulwRrcCK$T1dlkN}OhINssc29J8p3&j at 1R
+F=8bQZ1^R~)lvnk;p!E-OgVS?-wm9WG%2ckK&3(Y+4JjT?@sd5VncH<X_ZhGPIVnh6_fgAUc$mGg+Lq
+#t#3t%l|9FLj*m>LHn2W(4{j(94pMaYf<J4!6(gN35(3mp_Y{T-A-#QTX>n_u4IEny6sqBNR3g?k+by
+dEAAP?WQ?7KsL^lP5Na1rn at R0@$BLfu$VimlsO!g5hyES385A|>%bjyq*Iv#j+sGLSi`F6OOH}|#1q|
+XFAOU%6dP*~=4GynsoTO0ussLc+b-dnX^D~w_rRL;mOk}F_c}ZZ<gyxl`Dmyc<yR;JEsF at lf59)&H;O
+LJZOiT<QFv&~yKeu0?sY0i1@|=-B<|rj-6>_DcGvUe5a1Xklsu0FEy-m$n-atDq>nmh<V5$nmi7G0O&
+AtaJdlfI%RGxUAd+zN?e3{Yh>+czUC8pX&fqN7_ at a9q*5;;B5GxQJ!iaRJsBX!}J?#=^9!`ai=~0oxV
+jWa9=TAiO1n2Pl5>Z)!MHd2q7gW?0(fA;WZH%~ZhVXZ7xf%%GySbE|E<NIj?zPFZDD87gkf#z*o}Gwr
+hh*)k`0DbRJxYgt1S-oe3!hFN5vJ;IC%V^(e0R7vZkh6W`o(gha5+QTpJ#wk4Asx5xL{U0;>?Na7YQO
+ySo1c-CD at PjEd|ZBgbr3v$pN*Nih0=TsdbZRmwc`c7m~F0gS*{}^`@7Wd}IQy+NVGfu2O%e%!h<Q@(?
+z?nAESQ7eGxe{m$(l(7i785=`tu3DFMs1(^%8z+mQ^vgGAiC6ZDeL!&ZLlqE2C)8HN7(7kS+Nuv_sa=
++6w#lmAv#|A6Vhr3&nsv9N$Wp(*<&w^yQk)!g$6W!~AMV&Iz>W$oQ at A%?RMyS0Z#FG%OCHycz2|3MMm
+gx at peAP|QS-6DZQ9bXmR`Q<MWfvxd2Zi`AW(x+XPN^XJPzPPBHq&DJSK%{sug#U>mI at Polwec#xvS8D
+K`%CL_XIF|X--A8izlo-yKd at zH@==<V*c- at IoVwPY}F5vUl9u7S=ZoRa)8B#3cX#*1&kN&NUU=^PIRv
+W%DhXey7L|&(%sQtiXxn=vbb3<Mo`%SgiB)4<+a9|nm2T>RHyM6@?wxTqztI?*K+PD8bUsfVi_+-i4v
+W}u%kp#4c4yh#nYbXUbmwT0>rvpAv*VZ217iQr;2m8aU0z&mU;9U0c~2kR_auGxf9*%Mtp0Y`6k;~$D
+dr at L4=@jVh at +nRG*ooOp0Q;iHVFv*T3%Z^;|XVS1$&RnO!J%2_o2#b?GGhfLz!ThcZn!z9_GCn{(HKD
+juVI<?uSD$8*0x87iXHe#5MWbym9XISr=4-A!#)!0Plj7rl70{DZnz;~~2RH`0z_6^op%FYN)_Q+DG4
+6}ZT4mB%Ei$%0L9IC-h at MfbYGZJnx3t=V{z9^+<2AVnWxnHcE3OZ(%CILK$XrLPW)3>&ZbhVHegVUUW
+qm@<mf(wsCRoE3Qs;Ccx;A<^0{4X}HjnBC#i+s;n)CAb_Tje-)@7mD;1!pp+|rWPn`63b>K9v%SVQE>
+(r7Dv>1Oeeb671C;_l2<bVU_#jg`=y;IFq<2h(Qa)Bt;W#Xb#G&)!?fIZUEM37m7Pz_u0%3(@98b15z
+B3`>cNLBHK4Zp%r0R({OQwpS=kx7*Hx1;JqJTQf!>roUZgmZUCRRz4y8lbbhry0d`5)v90TTN#U1C-y
+-qA?_BzDL6B7umpr^~CGlT5j-OCER`U`nXXgApxZG`GokK$oYbgzxPr6CULhr4jV1<Rr=WK)x%G3+{2
+aMRsq=GGz~1p6IIdEDo%oakP=@B^-4)#f0&uf!ZR?+VqcIx9#Mi|OoU9wg~gY(?Fctp<d}@(<`<yIar
+HI7J<T=0S at f>^dq9Am1G-x21SAB3`UIZM#4Lb{`)5-7fkP3#$~p8v(7k%O4=!VcI)n*HpIP*$s!r9v0
+o%szQ2X90VfwdE;MnubYBJ<rY$}ZZCi=ZK6}OP>Z_hJgVn7B*j-%Xac2oWmODXohNppd)-)?3yOciJ}
+=LX0X1~<-rAWXI(4&zN<SERw|$b{_o060RP9jq5Y}-3F5Tlfcfqyp0ucfppeZ#9Zw&`Gd^r7S at C>Y8C
+GILW?mQOV>tJS at OCH{_?QT@@M9xcRNt1d)iiXN=%0|j7>8>avxUsX&c{<g-Qrw!|Z5b{|73ZEmcG%EC
+x2!2UM-0Z{aVGM_zDMw0uAjTzCC|mEP9F%PXS6)`YkHz96XjkksPd&K5uNY|i3!M8b&E#7dGinGUOCg
+6&$tM()_vobXN2sIIljoF at L>67IZF<d^BgUb7wW-7smM|1V4R-!diX%9ektUs!5ju7UEd+`W5oB|4xY
+=iRovkx!`+1#eo*6ZsV~taDP^G(8_H9L`-+FhCV0pvXpiq%!}DNBIYYA7;n6Uq at aT8D@Fj=BiyA0;<V
+HFf22Wn$!GXv_T2X>AJZTxg!rXL}IZe(q>U_Bq-RpK4Y<<$=`7M_1w8mJP`=AYRpRjvN-HL-=dUT69?
+gNMVIF7qr_TyN(-8JyqpK5W~h|e>eeqckGg6C1g^pm434|(>q(C{3u(q*3LUZ+d#a3irt^;o(<lj}J|
+ at O^`eraN=kRWoYQk(yh$4-IhnY2gQSugltoWjXxLw6e7-f at 12blvSWk&t1eQjlHn5l#U5!tbDGhJZqt
+Q?QX0LH^2Jez9`<q^1GjgeS`ZFM7Z%!7FCN6U+}*bH<!9s8Qw$3PvQvXUXXLMcJyli1S5)^>@4O_zbs
+2*X^4qG9IsLBdafEFvozY&r7MgHNorJ0!#yC5;Aufq9ucq{B7CRT6>_#}_v9Qy&q;9iHBiG-u{=OwXk
+7+z_ec)=YXF8KfKBnt4 at ckX%I$X+y4Q|9G)hU$nu6zMa6VUuh?~2TOvcv at OP-qt_q04@PB}fy*x0SS7
+r(yHz4p`NWz4QnzI&XAgs-PbUM}I`u`28oAYO6E$EY)+6=S2L+SOJSu3qR~m$h2AJBP7>Z$YEaI#8p|
+2SCVHNBl8p1u<A5?%bx7R at +aDw_oaBLqsDzM2gOgZ_1CP9)L at Wa}TB)r>GWml}A<_IKz0k+g3OewZCP
+ddtGkkw+P2Bu7*8KPvY$Y&0UZrIFXUTk}0yH#vE#TE*%{Pc<pz);1b0-aI!<zfz)`p at w#el!|`PyLW@
+)WZl`IC!P8ynVUxPeyIuAP_d3?kQ(63ihlCS1YZ_6r?H;)>`4penH4pDEx5+cG`Rms2EOf68q2BCuoL
+=KI_#NB87kLso66gV&z2F-+N*5haId*r#u>-+F5^f#HLiaj7!?#4sQ*95kb$R?YVa)S|mbZcOr0CvEl
+n}+RyK;G`<E|0cc`FOu>+tAm0 at d(T04UFOxr2o*HY7Wfn)$k%`{ut`<rIvqWLz~Y7yr831(&#Q<`A~w
+(uvi}Q0R_+KxIc;IvL-->R$LKvPM=-^Pn4d3}2;VTIgP<XWV*piB%zFeBBL&P+|+tXR at 7V0)%>ZD=#*
+pW(fvq9 at QNX%B=N<?se|&8}w*evjva5l}%6)?Qw}7E^(-)@Bkeb2M~@y_NYU%gju}j>h8y>^Yc8b)Wh
+g`=1Lh at h{It7 at FHvKj*{E|@uC#&yVRM#-mq63TIybxtH)jbhexj?R`6`h`hYYM`$bB-LHsmA at dW0#T4
+gmXe)(>feZp5=&SVd7%w!|XrDn7)Pej(l+#0qdNl7S%v!%CjtBUKV)*HIlDQo88)atalX<7*K<qoV(d
+Q=hAs0Ql+on_q~ajla8R+X-TGkmkZ;95^Pag(9-1GxXrKEQdu at F3*kY~)*|+FV}Y2QDlS;JbED=go;?
+Fb at 0c31`e36B<fDRM*s at ZI;z_IiO8Kwx=?7S9#&orS8?E#61 at U#&n at 0TJA=Ik(q8SRNGI^F^}>it{P^
+9NVhy+baz)m+3&E9qwLW0rpRtcMViOxlcG=0b=W=LKq3RI;_)EMBQ+0?snXa<aBDvfXQSo1AS`(90cl
+THJ1Zv)&$ZyWx)mVs?<990;ZeG^8x>{vuD}Y+R{QlhNh$LHH at qn^uevm?o#Fx;5*T}|0H(m7Vm4*YVP
+yckb9rceyW0hqH2DY0``zPkPTd>%Ub$X!3Al8nPW96ahXc<%oHi+(@I0uyUCu8d>1v3a*CkGcia-3Bf
+I7j5u<P+{?$xCJ=E0E7ut>hE#OJC8?snlz;CB{P@#e`OFopdx3QOP;^9;6Xo}sgvXJsSFA4_Lx_+s)#
+)ulPeA>$@{;N409fjMfY6zr068aH2|a~W>)fFYa4Z7tbDJL|yK-Nvh3bgvy0*=wMdvw+KS`AIPPJ13x
+)!@Ub?U);23SyUM=g?P_!yGmEVChPPM?!)%SEvOtSmtxo3L{hOlV##gi9x~@C#U6fuq`9Fu at 9eH$6iC
+;te_(5D`UlUl5EHuOg#^sFf^`#77 at 6)-{2U83{gnfwrL3KTSdXt5rPpBFVaEA75r`$M_{oztJ)uty?$
+pkRLv>yp<&35&_ at 2W;7}w3$ekXRAJ&fI-C&6vG1M8B_^{_~PrGw(IiY;T#;XZ7Zt0%g+o5O{LDz@$I9
+tU)<RFs#sSMupTT~_|o%%Pb=_YeZZ(CQq)6CdIMT$!6rA?!vkeKq?_9$Eo`OZ(Be8+P%v#zTR$KW^bs
+j&)a?q}t_vbP<)PwDLma@(%&28St3_7da^O3=amw?+k;+eFm(*=YzzYDB+3t<b at sZIow*a=G|ZPCCl<
+}9TM)zq=P%Ka1Zb0vZAYiG>;dzQshQDq!%HlCfB{6ce{y8f)sYBeIZeqZb-Gte3;|A8<eE4&J0g$39_
+p(>L*D29_ifW&k2-&K=;~B&OCC!Q-ZoG!2DL!dBLimEn=KXjc`)LQb;tAIipJP>GI)fy`g*U?h&+B3<
+jC<%Gh*wk2t$1V)qyg1+-8PQ=v*@S{kj%4xfxj at rY=*avV&h31}XE;BT5tPij%N>n5!<q5#aq?zxubA
+8c122M{vTsr|gDc4*fwcqN0Un15OQgV3q&d!-|y29!~vU;)_`(x4O)WAAr=2lFOl2{(e+JPHPaB9R$S
+M2X?ildZl2=*ig%AW1WO4N1y6CG>9BI?nF7d?2vHHXLs6Kz#EItf@#9eqCAyE>!(I)KYi~6rOnY;^nB
+qW`8{+gHSO%4${VlFO2zVKFw`B&Qx**zcZaEVYUZ>dz#RlZ=!ph>dZY>#S$wlQ1=J{H%Onx&4a=7gc5
+uwg}K<>u_o20lX9cv?I+Q_4o^3|ToQrRNDYRjLs_t{^e2MMccsdmX*`NrA(I at 5>8cM=Z(tmldoy;Asz
+hm5OrehP<X+S41DjS(E_1GD^)yX`i#38ehZB;S`lfqS)b+YW!Shyd64NGSeZ8xX%M1qgIQ<H?RA*(m-
+SKXBGH+A6M3J1aBzCvuHR}w}dXh2W2X0i9G+`S3)r-kUdt{SD%DZ+wzeJyO_{``nJ<OGR!B<bD!m;bw
+$R%*@Apu6|Z7S*tH9GD)DE;K}yjPgx at Qh}~y|v>J#+2g3R4X5zMJ`i$@$_1)i{o&ReQ^`#-7e><LF)y
+{Z<y_drfZUFSaK}Oh at k`Yx>YHXowXL`50Cg`I^`eGz0R%@K+t}<nTcs{x*VUB5j@@O$nv}VVKxSX-S}
+>C_gs0!SMU58y4NO$QRnPC7$yq!yCt?u+=2$(9a?$fdInM<R|sGgwRn%(e at x1fxY|jnZn44WWZX`!v|
+Ec$i6LZ0^Qad$?U_k3XiIYzMc?g$O9YFOZYHx+rIf{Y&-HbBG^{$83fFMiI5Vgh>;7^RHN?`{fCTxSE
+0q0;ZN$}!$u17XbA9bEv+Dc?&)|CZ+;I;r>i&kEAKc^1K4Eazgt?eyp at 2H;EpWHt>EWK8zVzmrbMOov
+SknA5KEwD{c?+R9{n=t at fe8fmc}PbPFVrpo!RPLw9E}Gz`q+kgaLR|5)2LzBdLx45I)*re+Y3}aL1}&
+hRvVllN32o>U>q(pBcBULQw?R46jV7|gnzYam*2-B+vWskR2}dNZXC_<7?uZQu3-_vGc-NX#beXavW!
+{hgPWHwzH;}MeZpt?81lWt!(=_E6S#yMB99CYt?YHBFE-A!gg?kLc at Ml(`~w#Hu!Z^=gFWG<)!7vOq?
+<p1L|2<9%NPRfr3ZrhfiHs>ApN|@0bGJ?YwLwK>@@JFd5k^&?DB>bCsd+&^0xSe8R1O7s6hk2wBo`2W
+zL^`__xQWAK!lS;?-ZbFCJgM{(&Fsea)}SZZBTFeSCU+^VXla{p#`U<Cp%#=y%^gefRp!V`i%A;4Bk_
+{r2ZnoD_fkh}(5N00T;XO67a*5=A)6I at X(|exDdd&-jHxcwp-XgAweEho__g?{Hw at QI&woU{hqUDJG!
+NgTtwU-K)X2pJ>I*2Z~u<c!$deeH&akxDwQfkSwS>1&n`yS%L~?u-77x>j!G$fTxI7J5>Y4EHC*EZmT
+(o2Umh<AfSQ at S5U=@<~SVO>*NYTaXkZAyJ;;|`3MxVyzmZJYLYlXeKW2v at DD*y4v5i!ybpB$fp{;Fy#
+!!9sGvrx6ZZqfEHAvnmBE!RIeZ7j_dr7&h=7AUGANNn4LmEA5F1UKVwJbrAs;AadEuSB5+zo^tp%E)K
+wT5iH~~rz#313a!kmK$8ic~2S{szDqF1B|6tleW4p(AR$N_?ieNb`_%HV<T3W}{kbu}mu23cEB-3V#~
+0bv%sPVNa5v%KUx*a{p`z_|ouNWcjMkSjn%K`aSkN#OVc4m;p~gA^}7>CtQFMxdDGg?G3TTY>)!n9YF
+247kgHZ4B7MfbR?Fw17zqc(H(#3MixKRRIbVv%K&QS7IyV|3R`IWa2?49;DYn+8iW1L9!KOFhSlBqyP
+aTk6xKnpqS-_ceoN;5srdH12`BU!4NKicLMYhpqBtx1ehW~4FLd%e%<qSF>lz4{s#qLpsx!gQh`b%C@
+Tjg%K#t;ST_Kx0l5%R3PD;Mq*yU3LkkqMVXB2!54=rq0$1?6H^IrsL8&>|bQ*>mgaJWOAQ0vT(!M~G5
+XceY-U%EiW_jTquEbW at hZi{4fQ$$Vu)%R_!N#6IWF4G56%<E;gKmNo5Q5FRF>cR|VwM-);Yw@;kwsA5
+4eGK%!8oWT2IPIf=7yOOu_0h&f(;j8c6I+kR-l;Wg?G3TTcHjY)Tsg$Z6J9K08XF+4Ag7^ITz at d0=ZJ
+aQU at in7^R2{6tleW4p(9;RF;COMZnAlWN^Us1|(s??FFP;z_JB|QozFm>`RQe=j~$Nuod$9Fi$5t4^v
+*U(jaRKQzsIeAR`D-5kWkRn*_>0h#9k#Yk^{x7v5RC1TS2PjgSon>f>PhL_p66XUqi0zyu1N;5?8(FB
+cql5wjFffnt^y-r-7Y#e at RkXppuC;)0+!9aIg1a$Hc+2>@Zhp#&*buq`|8ljZ}(EHAvnmDmcqeuMqD!
+T#G|A8WATEl|k?J2ZnmhrzDGKuZ$Ti~`j~sFkE$m=;p9puiibhXR#NP|pc!XaRv4WM}~u6!JT87-0rX
+JPuUHfxI<lDUt)lEHC*Ewt|i_pcDc*W1u|@6m)_7Cy?ZXX$(c at 0AU9u;h at eM)EwhJnK at 9*^1?e at iLIC
+(kl2Kz3=k%O0wK9U-W#MWVe$ab3xH4{LW|=@j3{P#;hn+D<mKSy<Yn;^yl^Ep0>cnOY5}jH4qy}Fm!l
+Z;Krzb;?{FoyLPa|$ItNwbfM^VgtwD`6sD}mx!k`2g6#N3RKPa=sapMvcv%K&QS7IwL{sCDTu;l at n7j
+R_(5f)@z0q_q<;DG21xX6HpjN`^7C}w%dcd!)*qX0gKTn=naz^VkSO2BXgY(~HsgcJc;e2}pR*>fB>E
+<rKN3-53xwnC~Gq<TR%7Gz^#)<p6Wq%1)y5+)v`8$r4e<OXrvxCF&)h$6v+fmSCF-2|eAppX`Dq9LU~
+u{Ws92Gyyco)naZf^tSsD2U_6B`9Wj;hnq^);{2&gXAorUIQjHAov2BETqIBc>-!DNEm~pFHADd8<(J
+%<%M^+5?hfPgw_jo9tC>OpfnzwauOU^66}!-G^>F)GsxJ3^e^sTObZmVyyQFB3I&5e!yDAZg35D1Py|
+3aP?H5Ri=h4%@Q6X`AMAGuWc_j8xCF&4FTBH**b1eYV9#Gru at 4gvPF)DjQwVk_1&1F5l8S%~5B3 at dJ7
+wd%aS4i9UU-Kqu@!_2fi at zj0SEP@pvDuVZb5PuBvC<?FxaFTh^hkGAkG_?pqS-_ceoN;K~o-R7(&_!e
+kIty6YQ=D_S6KMX99*dq)pi|5o~3Mdj~+EnB|3cxDs2T0uxYvflMb*WCRL>pd=lXF at qXcz}5#8ULX+*
+O180XT!LbjmwX3XK|2u01_GuzARK}kbWp7f3Y9^9F{s=HmAjC+fL{-&^;kD9K{3k<?{Foy0worZSOEb
+Pq?JLc7iLQ+27(%RK-mPfwx9+R at ay@~erCIgOCEl*ef{$Jzdgn;Guiw1=MVn}P)h>@6aWAK2mlEMt4J
+-PI8+$}004{z001-q003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OWp!h8cW`oVVr
+6nJaCwzfU2ob-5Pj!YjLHj<h#Oj6scqB;<3NfoU&5d$PiV2nu<Cl(+FcU4zrJU|khURG>nD45=Il9V#
+?x+JeyBgVA5CdIN(R$(K>hJ7`Jdj%ZMWLA+%e6p+)6DJB_?N*j!N at GDkUOgx0E3kwN9xcExknM9Y3)$
+6<aa|`3o4xpR#wEs2HKL+-sQ$FO7Eiw3V at k4*=8L*ke4iEIjA5sSk*+uM#$3RW+{KdFmur)cgGT6Cf_
+8M-(eXi;(MR!H(?{=SL-p(ca3<-W%I-S6>hznh5)y=2C5~Ea{rS(33Ybul>&GMn9}ka$|+9gG+^FCT9
+x&3}Uxbn>}ShljU5xBRq`oBy|4XSk#v$mqi^yd!0j0VC~tK?&RV9bVXx!U`qF_*+R{Hzfm$n at mOZ89g
+}cWg_zsDI5iAJ(uN2P4d4&%-V#fkhr6HHIz;G0)H~hQAa==E>IfhBqnlMIyaMT(6uMzgm7!A?Jb00sl
+hg;?9n8lI5TW!Lb3_}az2jo9x<EiKJ&cy$W~(K|(?@!U7mIkhe7r?2ti~xCctnzAr6hnM%L?slFbBY7
+ut>h4BJPjIqvd0uKO8NmgEXb#Y(X*2<Hd56tj6(z=BvegmJTAKl=<XwaPyMOXO9a&mIhYl?1faW(f)`
+AJ1|r^?ZgwK(HTq36bbw!RsBz0R7P(Pf>H9~=q<^DwDDbfwi45W`Fqu0puBXri?Pq5F8$X-lF;83dXS
+=gC<{Ojl`*zUedBycoy4fU`Oxd#T=zcS^oUj|B5yr3nBM*68fmv$g*7Eb<tEz+>)2P;Y at i<v48PH2ue
+|Kno)es=?B|EmrUv^(>aFt_wo+s}srgiv98S`3GC7`{N&s^nyfD>G!C;jvAMSoRh_R4rhh=o8=Un+)b
+~>40U#V6rQ^L7p>`1S3nKiZrmIWrGp!Hf}=d9Nq$Es-J;kjHG{hof#4qwr_Y{X9J>jmANU%9?2eWmyZ
+tpED98=XH8EOw(u at GNZ0e%&;3twqUy3bgF^R?|D&aJ_tZ*ZK)iO9KQH0000800{-FNI8x44eLSx0IQ4
+u05bpp0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoRVlp!^GG=mRaV~Iqm7QIW9mk
+QT at 6WF&Kv=*A+Hz%PL{`-pvw$Sa9%5ukpkxfZHwHzvtj17mO_Q>r`Slymlhk^F at c_HJpvXSw)X9(dc;
+k&Xvp at LYAOE*~{ORwXeZGD6?2}JF|LW82<IleM<X^Y{=Di=>KG?qg?tc5?>ESOAZ(h9KK6!j~zdgL&{
+_yyp53gUpsDFR|{f}=RUcPwu__V!z{c!*0-S)EH^Wp91k3M_z at a~~L`P=)y-oJkQ;r?lR{C0cy51v`?
+|NQ>l+m|nXxc|Q%`|$YYZT<7<hsP)XQ4ij}e0*9zfBAI(;@$nL?VF!`;(z_B7f(Fvho9=JzI(U*;*(!
+)?Yho-#6NudhucT5UvJNO at 7wM9{oDJezuv!EGx_B4&AX?EZ+@(4{^IQ~|EYemZGU+2^zYl353m37^zi
+-mtF1=(ZhQB*efiV7?;hX0pMNdY>xXZiUOfH8s(t%(f4{wb{Px}7YGA+FetP_Id->wc_H_U1;q7{SEy
+TO+#hX{ZetfFWfB*RE;oG11(T{Il)pQv3yZfi_-~POYzyJJ?+h_N0Yoy!n at 88@%)oi}}@tfBVFYCjfJ
+-obs^Y(sw at pk)xpS}I=?<@5?2J+SWfo#8ftjD{$zuE2|>UF;RulG-H>nB_Pu>JgP at 1J<L)n5PN#XH7d
+yZHkj{ACULr|os^#?#NA{O}(x!QW^4YI}I&W527lufNm-YodQEv)aD7-+p|1|Lu>j at 9GKl-tFI>ef=+
+A{PFAUqtE}e{o6;+pMUiE*MIs=y|-4nUakFGPkQ+NhcdxeTg~d}#hZ6O)xhfkfB5wIC;w8P_~_$jpFR
+8fPmKO|&%XZr)33hTe)q-m?W66>kDh=1?2|u!_R;h0%RfH<@{6xN{czj9y1)N<iCN5lw8;NwiNCE!e*
+ai2`Re}Ni-*^5*VO-1+xxZ#`1;lM-HX58*EYYre<+LEUX+Xc at YDa-9=?8j^B3n^ANl)&{$_jlc6;;q?
+r!_r(?i)#S>J!z-FnL3_xG-h{^f^vTef=Bi#PxNy0+k}`uOi2zO6_9?)Bs2)7|#*<J)(<^$#D_XZPOP
+{;M|jwrzj>s($j{{kMJk`EUOpgUScDdhqW*?xXcuwzu!_i~snsLdWZ$*!Nf4%kN%1y?BW&y?gP^>-*(
+_^)n_|llzY^o?iX at +ICl;e*Av>?my=-2M^AA>h`N&{m*Ux at VNM!f2kMR-sAlXSAYLP8}&lp<NW!B^Zg
+6^tQYE$>xK5=zW at 9}cR0^p-4i-~wq`u#IZM3#vtQRn{`wc~SMUG&%lhe9gLq!fUBmsaAAD2qVd%f!el
+d>B3MlojU;4O~$MU70eyEW655M)rH#kDi|AAGlu|2*iPks9ifBOE%m)~vQRa`TMl%qZW?ep7h?ZBVE{
+?nJwKKbagKmYdGS6 at GW_VFLTe)h%Ze}4W^{m(DI{{F^~KK|^}KY#V?e|^eyj=BH*3S0B_<KH*tpSNG!
++C19bcEokpBF0 at GGw#OK>yL9k>YrohpY5(4d;KhCy=7kY&uspYWur&G8?AoU`<{2VdO|(0*Asf?dAG$
+;k3Q<%+f^SPZT9+E?02!x{jOd0k$%ltf5dS&^4#nB{Ozizj5B&Yu(thfJLh#5y at s@12k$w~yPVz6)i+
+%^Yy9<1Q6_ at h)L8RkaOZi~YS?%E>@}0vue;mUgE#WZQLnV~s7dYhrR_L^kJQZ0Htx0>&Rwhb at T?l^UQ
+caV<BF5->`~93HJDn%F>7Y6W_F%6+kVa(X4Vt3#??o!`8eBNj~Oj$Ehf)zXV#F8`r<KbVrSN?4D(j&R
+m&3nWHEX at VXqM$qt<z^5BHilFPt^5TDfsCiBWUfM$KvLSAA?}k4AlG&7n4BYuWGGJnO4+)EkdcGs~>M
+ZOMS^(f#W6owcy_IhKY+s=3!=X02=O(Ov^iHod;{R+G(oV?8xG286{#y@@d-yFBkAc>ZY2yOydmy=|-
+Y8uizjPQPk!gT*~Gn;Q1${1Nrx#`o1|YKeQR<-;b*1_Fzz(d=h^UF@|MM{Qp13{Nc!N#<D#Iqq&_ufd
+klH@=?1G4>Oiz{FczHN7l5EXSxPv@*Og(-pvgu+p^&&CP4IhFOo<23uX>rao66X$LE?*92<6YkD2~t*
+^R^+DJB-eXC_C6X<+)ut?=rwf30J$zwF#dUV at sXM!Qs_Dl?~zL{<9?;W$=+%&w7VY4)~O7+?LrZVi>l
+-dP$Z`9W})@xoY#(@Xmt+SS8T=lmxds)M%7s{h*5+}=W)$)~X*4MR;Q?z<uXMbvyFyf1;Ob1sJh^y9O
+!-#`#a)S^4R{PKUlE>7u5`WmsfVSxfG06%EHHL%5J}>^Mf8)24O*zUs$|5l(JiW7nd#|D6tQ7%j1$G>
+tpOx8QtGI0CzxtN5oUq|x0}rV2Pofkr?0gQNWT{%Ray#FCocMfwd(@)UrkwS18394XU8n`xMr}aUWAA
+du#96*UaHzOh<C>EpVCMv++zB*UepD8R9kz at 8C|fF{V&zV}sRp-g#K at hcnq?DhFYhd0!Y6Aq6;rS_0_
+=uGUii#j)>giZgV%=O^amrXKLW2#OluHK+u_dFG7Ljz!-{-9f$SvOu);kJU(r}ycJ!*rmxY%HkJFf6e
+_Ul>We&`d0psb7NMA9GC!B6d#gCnB)R!y24K{$O3 at oi4SRRH$FwvtHvJA$@G-71%b$CC|KQM$NeKf-?
+w<<d%EF}|7{4vY4+Eu$ymexp8^|NS34dWHdTuW7pR8MVe`eY$5a~5`3?!g!?ERDf2?@kgNeDlza8+q(
+xtr>9BjU%y0+!2p0Cmd{JJ#Y~7%WMn|7k<lBb|Tk-C-Tj)*9zp&oa?D<PhfcEiG(?3axwXH5FBbuWi}
+cC6VONJX#gzy+S!yCxY<qsXK5zcYp^sY`*G9`#*UZG6JKuZ&)jQ8Mr~$AsX^YvCa~Ye3&$WPmkSMo`q
+1Wj<(>*fja4t(2|l}L7`|#Mt}YR&Y28<S{YH+j_w0B8(T22h)kn65?VO1*vJ6b8Qd=hu1Oc|bFU~TpK
+``p1{C?=S1WMny*Orwz)ml%&+~Aw)huFy^@AEz~W&?_hgAh8C4Pej6F6G7KeIgPoTz<ur*-YHOLK=~T
+b=`qF7vP0(RZ#<926k-3$L%Q3Y3 at G&s*_Ge$01Jlo3PsW68x_-r?|>W8`-6q0;W^$<`0}C7#Cr+0yw$
+*a=q$}&a4x$NrIInl9*3~BXeA3*iFy_jHwYO=&O-xE88^oyLN#mFeJ9HCQ9nS7`JW5^@J?s*G2%Z&{R
+f5kSdeAl{K0T43Z=VJa`a2C);zKqBeGcNfE`%^G;%ZeG at xh{z1qgu91vymHG?`<Y2t at BCk!o8WTSaiY
+MrZg~TCh<p_9$%raAa1_Uq(#P#Z}A~9J5L+9mAoDN`9!8FYBBI^+$%4uq%WerWssvN_r)X&Hb6()?!-
+K<CIAR2&WJ0 at Qy0aOS#6T at En*f2|s at f6z-bnA=Tg=KY8QN<>FnP5kxtoLAA-FQ_~xlF$`kVXtErxV&@
+UPg%KmI3?9<jTa at w;KO#W3~+stC%8EF_96-7)`reL+r%3W<1=*Z-6mB7DkOpVyp+28STU-b{SkY2r37
+ecapF>k!2hBWXHN$m8k>Z4*<u}fupC!h+!8hWaBEn2PR%A%~-LM#mS5Ws9w*ifJ%f&-`sh^AhqJQjkP
+|(JN0VWA-0rd3AG&u1qTygqNKi|(-ZspFgjzURexaTe5`&}3(4PVPPL1e4O_UeRFx4Jp&7!e;}Ehk;0
+vHVnS7aBeU^z%Z46jR`p`u|owuQv6FWBM-I{2X%>>#u7No{c2o*))veypm!#F5`S`b+3J!Oa1DM?^U;
+&dktt?j`bcf3giFl(1L9 at xziQ#1^u2-meXJ-TqA7W~%uv+_Q6f11)jFIG*Abz)x?1PBCV4b0{+K^TxQ
+Ut)I+i>Kntoe<h72sYkWSc$aVbWcL9lVTUN?n$CIot%@<L<+m8)OOMbW>R?>!vn&UBOMraZSXlTXHvP
+5{t}xV7LSaTB$dg$LAvJe-C}4r+EASi7FM*~*nq3TSLHtv<xYgCtthZZdDy8a(oz7gt4~y322rM=gNS
+XooMDYfJ_js|+AcO~cLVqXbFQ7C0<KTQWR4ARf3l>c{6UPY at YT$9)SE<+296n)eiwxazD5C4PFVjmsO
+S~Kj2$~X4j=8;H3}b=op9f&0y-br4x#RjIRi&mI>AbJYjjq)5&`uSCc!YbDVVGg21u@=MhC}GpB)5n6
+1|wK{t9N<K^zQjcdG~K5YQklo?<`payRQ;l&um28u3C2xEV3IpdvViluTu-om=yCY7kP`ARiTCW#<7)
+gGDP3#smpfF-@>ygT}gwObkO*tsN6dcV0BX`jh%D)&g`_ at sNspkh#VRdr4t}{hpYXU<21a at ikC-2QZh
+JLtU^c*iKcS9pm7E)Rx;taG15XWf#;%R9CPAHBl^?5PguLfkTb;=~R%7gqnPDX9sJFjZLYw8OG6JDGN
+gDIPV7R02fy_#He__IP$=VPu at HZB0B-^<jn!ivUQyvJ|;y+ixmMWo+caC5UU+7^CdDF&_u*|92$sJ^Q
+4vxYCSe7Nbe&g9zr at p4u$AU<f;v4Tlr!NzU?yQJ24g)%c7VIvUXwY8q!7$TE(?^lmcHYXpuuo+d-HI$
+Oq6<#)v0&TtRk&dVEseQ14f8fI%Sk)rRsOmL)Bk>vID%*)Z`<>gBA#1-YmZL7UJsuow!@azFC&WPh@|
+kkoL77xGgB;sg1{ZaN{|1|@vWhtg>WtxW21+%d53lkhbg*_f0-vTm$E**!x7EXC;t!$S~!v_2Ac=VMJ
+=)IgmFG3>zgDm_wm15)5)DiU|<BBo5XKSfoIFrmc{t$~z0S=`G)gz at 7AfU4VenbNvzNH%W5X3P{+rIq
+ex1Smjwz~M4epG6}lLUV1Wl_suN!AORXVe%2?T at RJtBajX2aY{?9VTd}3Ye~MiE-PoMVrtyuB#nYr2Q
+1Pi4(o)M!^q{zQR at Lu<0O<{12=}2V$mvJ5Pb9u;e&}DL@;pU(M9gN?hm<1I38Lg`6Fd;h*xd5nkGXBO
+rl|E!Hn{hxFpWBKJZ~M+et1G$X}3MJ2rg~r)S0KGN1|2hF6(#Odu0NS|lmpYPzQ&2oI3hBHDDTnpGq4
+PoKcj;N+VYa}H5Cae)v3fd}B+De16wt=2_b`%OHA6t(2VUAmO-3OOwO!MgUv at nS&alzs at en92Y{9EL)
+exIrEOP1ep!Vi0ZkrZYvSwXPTLE+oR=HY$%YY|6Yrd5CLl*nMBb9PHnIN=CT?2SJNufLG+ex0t-f*aY
+7MhYm at -kw3;EhLoxTVh}5;^bTO48HWWK764WrqrMJcH?7nlY>$8yIdFA|rwv}BK1a=d34$nr!}1(BCk
+qx#ba89edILkiUPITTqQ{nk61!7 at ZLskTsM{&Pb94)9m|gw$5)hokL%s>x12jM6yD34-mkHKQD1zPZ1
+nbiQQ_Us0=zv%zNd=sB13y=IKZ!dsS7vDQ0KtK0bzKqayMf=@V$VdwP^R!)1uiU8`R7Uo;1N&`WJEbW
+-rqzHau8FTZ>3I|gs(}pQchL1D4r at q0J5~cz=gnz{0&9A%G(3pMy9Mm-WWUNtl?YB<_=tnP$g+hc)X<
+GQ=*I{i*HfK)k2D*re;ItCH|&$3Z~2RTNhn)sW+ZVfMrt#P_4EaOE!ivgri<f0cVGU-v}ig6xt<I7tI
+1xpgmEE(rS^0!{xVQMT7v-VQmUuLfoNvxYb^}ALX*}`5jBHU0|uG6f7Bm_ycIwL_VaZ5k?I%8UcJGkp
+zZ(t6(J9$H<7-bJ0d1W+RK80``$zZe+q3?l(jLacyIz+E|=MMeI(*8}QooEkH1WofPn83b@$sL%xTls
+--E5AW#z7FGzM^emw=>4XFE#bq36KIKa+|S9ULNT_(5#rGZ=fu-er?fm^cBw5?9LE>m4#*tU3Nk%&7r
+dDAqJp5!xmBc|G6KnkGQV#Dyv(5H+Ce?Xi}>lARzfX`1nC4hzlj;2isD&lA}QL^8ignE$tj|)GN#IWw
+Q_f~@eaLRL0Osp7#e~_f0dip6#4Duba7M&uHCEY|J01o)1W<P7Ob23fTVl_Qn56&GXal>r3X^5sgNRr
+KA8N3{hn9{7hi8c~!P*ofJVdVi_${<X!GPE=z3mJ54vN}_On17NWE|@Wh*bOYZ*@@t1Ro)WwFHtUOlv
+YgzJ2Q|Z0O66K`#$arN*OsIa?fr-2ByQIX(*O2+Z&~zF`J!+90C*@)u)DGtdO1|UtBsg*yaMu(zGeq1
+fUrrSh-b3h?%z2^vhT;{QD$M2VjguIly!QU>@)sL-5)$>`|l6W^kYy?PQ29DKok_oWP0aCl5RzPAKNb
+u20H98Rl%&&`!evIuYX5F`f=8X%t_T*JzeZNor<`DJ9%F)pbQn>Np at IwQ9vSNfH3<uq35HL#}8vAS!i
+0y|Mqt)JGwL{2A_I?}tp%+G=2uZo9OEjgVS6(n8hC65|IB2Rvo5TbG}l*0T_?i|qxx;t-TAsVR+B;1d
+ at x`;Zk$$iYq*O`?WQa3?vJF-p at jd4dnIXy_zFn@-PQ+X#w);|j!tOrlNOEhccYX=bF2#VZY7vmBaKj#
+n73%s7zv5n3rk@?pc05VO{>+395KgJs#Mv(sL$bYI8m?OLzy+CluViDp`mKLlennmcVx*%3<R8=YZ)0
+cTUTcg1P^gVZ-c98Hw4Taek0mCu98Cod22;VM!2h%_DqYsER3 at Oo<C3svw at L0)z~3<UVHq;!{YwD+Sg
+!+?;;dKY2JWOUo$*fi6lJ}a9BqXK_%(aH+Q7vLgSBjmKx!2@>;Rt$VCN(h`U4`s2^HD_|9_*04>q-#$
+Yl4syn116?ye^mj=KuFG)IbJih6t_o6CM03gtq2hZJj$?%-Ay($4$=nGpiW`sDlyhq;R|Kv1aL(d^s?
+w4HKO2PH7hg$E+-8W_9I9TfSv~LJHVf}E*RLIPZQ<RhaqUuJnr2PDt%ne8+i4=XdAB4D4hlj^M;P19F
+sK!nshrKyFv|KCI-~*2{VyB;3PoLfWrz<!XN;40Br$GaswlB$^jizX at Z%tRKa3U$9LP?W5`$0BtJ|sN
+&@hLgZM#EJSnz_E}KM9^JRJ<O#nh|S)rW>1UsOPLZlUB9H_}2ixao}wD`3~ATI06W4HZbi9!fH7@@=;
+3D3 at ESpSn9p`Bx~u`p2RI~qWuM!?_pl>#vAL-41x0Ixgc81Y+`F}(Y*ldVQ3><8fmrar1&*Nn;><Ur#
+P1iKpP(~?LqLo#q5300)l4d~X-Q*#!`vwYGlv|%WQ3M|Rc at AjG?>{l$uZ`pZDtTt>1Gc!_0$ezG!hU{
+g)6|ElaOnGe84Wvv1r%p+wLtT{gK`ZzGMJVQX30zs|scYjiJkZvAC0I7aHnLR!h~HhN?i%c9`L{f9E$
+$(MBb!OL5VC7vhYbQU3^BBNsZ(~^0MJIRoa!975ZOlS*$FaP=FIjJh?^}vaYbJ+A0C3vV`H$bDL#TZ3
+0-#eQ|!Xy&?<rsxhb5mTP<KVR>|1iu}k)MWeFr7ko!``FthWNs-kwK=D`!2gayo4l{=<GqCYLLUE-29
+$-bgZC}%)BpngH-N|AwWcZgUjsSUQYLtJ;T(`G?Q`?2ac3SFCYC-Lxry0UfJ2#VXO70HU=DP1uItR9#
+Y?Z5_Q(=Qnu5T(PUd<xRjErt!*jeKqh1*0})BG42;^^Vy$yJiqgU64z46~KoA6FWte8K=u10`#bHr<6
+P!N46}8r{V!t2V=K+f&F$}50Y=lZQGDR5z?mkFx4vH(A3N2nS4$<;}i_AM|P~5#;9V0x|Ay8;Ab$e6;
+RbafWD9$G?qAc%pe#Ic%hn}$QS(9t&ObcNijo}n`%325R(#xx-u<PR*f2W91F<<5_hRFqXrZ?yc0rzh
+WaiMRCT~{-|c6alrDv1Y4}ntg>P3bO}neKNH*G=quDA2wWWm#{D^^)O0eLGvn#WK-Wz25!iSp3vRXFN
+Bt?aXb$5V#qZQk1_z at gBE6`}2b?C%I?-us2>0nfny2Ku+HNYb>?dLAXPjHZ8wh4 at 3sPCX27~PJH#hk&
+KoC4<uOU&n>_D<@jw3&oZZTcm6-D#*DmU(u0ZS}Kn5^)3r5PmzC7|)8>N(#z9rCQY{h{L;-hk>8HCFg
+dfNQQ08yu- at Iv_l&%q*XCp6%Ukjeah#m-vf*-rjHE>(Dq5dP!vJ8Vq=%v<#N$n=qewFg#&Y>>hE-4Qc
+qND)a+VA*#NQ{u{DN4s at r+Qk9HeaT@e&XOGo7+#uGA0KbHtm;6iMI3bU_g&nRS$i8d4~8#GQwq<IUQi
+6r8BKCGB}5=aw}Z`c9_fNT;-P?H;+U&f-x<TcfYS(mP|f`PaT7M*quEYi_LDULjC&0W^nm?eNvcTuW$
+*#kKQJ+wb)F*GXH07H(@9L!XgA|I8s_P6Xw5ne7;jan8Fd+i$`nbK_7>K8V{Mr>1ck)jwZK|)WgJe7u
+lJrMphyLUD;<ee at xQ75i<+WWJkf2b1>aZnV{Z40Y+n1I0WQW=WvQ&Ay|nq(kawq_b_fY&l~+qIHPuqh
+<sVX1lA<yWtXE~MTZ_9fN-8lR9jG*^Wjf;<NFqJYj^YKl>lGc`ss6`@=WoTTvvZ%PxQ9joKRTI+xEHW
+*JJ{)#T`rKow(&!#Oyn&^m!JJr=jk79#VXl}|by~HFGab0$AC2DkoB_>_6ARq=PM<EEQH4Zg!DkL{WP
+?R#eEVpc&><Naw5T+dsvdwCXE;h*2!3z|f5CfalJH3;xi313mK*FX?!ohY+8+>Sxxx!{8e;e>GoU;K`
+Lq<@K51DXD7|3$T4oIYNNjqO^MQCVUHoAA|4be8)n0cRS5<|82g~NgUsEFdSw|msjRM2!QbDRF6Ld!R
+BS*qnASEtcHPhqR=Eg5Zu88&DD2_5pR4Ga7!wwX57M4<pGN^?q$Dlja$%y4W9xH6<eU15YQ7ER`1YTA
+PDq|r;Ok{u at w<w9*@H5xC6Eh;7MK<OptGI`pTX5~WJt*P6lzZz%OaA=X}PRJjfc)LmUgvBq-1?usR{$
+)&CnXF3MgS1<3gXUTxlvbl2M!#V5>oHgo_=e7CSlg$4Ljqn0Yp{c3DCWgh;2Ce53MvZ+d*R5&8_k%$+
+iURAvWCoL$qOg~sbV&W(oJ8^X)_wo9!si%nF`aIG8Fp}qzR0;918;_AyMUrMGZ-Cld&@@0W0yDs#COy
+?i&F!t~~)m(6bI70FkKrHrZtQy<1mi#-=w(B}g9eVUtlEih(w|)-r@$*#mh;sH0lnUIzX_7OG`HG}NU
+f2qM$8IaKO8N1zGjyzf$6^5i&#+920L(}n8pHXR{TY}Dh4od(SY{=9X|D+LStDgX?ySnVmdgUdEsb8?
+nA01Iw)c+}6biSXG~ig(ThDBzOq at c4o)b){&^Kj>mQ{#{zaMuLcpvO-;1w~NK*p{nX2z<znK0k1Y~V>
+=y!b-NVyN%f at 4R(c4AFV#g$LCRaG7)h;_q)Z)3Fv-}L@=z%uTXih9G7GAVjXq3g%i5`;kcleFwb<H~x
+>>OTr8n?Zr`sK{PhFMUYF36!2|6Rgi#6e4Wlq<6w+6AdO98HlsF{#ZfP#ucvFGZ*k<t#i7CWvM<%TBF
+9r+3Ghf&!;&A09b+s(V|VnhGnvYjb+xXu7vY}cw?h--Z3#W3lv#nJ>fRsBsRhKC&p_r%t2PFb2)(;N|
+7o}5ew)fOn(n_>;hwE-$@rzsNdt5GVa#4IswgQ;#dZ4Nuz*rAX at K357bkW(_-k%}*k&}@Q7avJJ at 0&G
++Ty9^uVfQcUp$WO^~Mx!($ZS|{%(a>0Hi3b_S6SE1KjkLE2dD<-;RP(AAQ}!nr2n~YXW;!H>j)ZVq?G
+<Ln*`|7+9qRP_g=7I}d-dL_h!2+CmIZkLey5*$0U=?7Hs at GNs70apy$$90D7A;G3!-i#vo})HMmx3Hv
+4k9oX}eCH9I;jEmh>^~tFBEkqC&+COnyTHurb0xvvRESJP^c|VQQT))pm%xNf0EnZi{MR>@XCr(=u47
+T9L!HD}i%2Is=hBWTVCKoqg%ItP{zO;M6AiLZq~*O^F2`SVNDr5aKYAcCLmQHb=fN|0$Lee0$zv*?{;
+^h3}<nplZeB+t4d$?BG2^Wwta3AMT*S*p<tB=t4aK#WgNe<?T`$cs>b4V~djDV8KLVs!~I6yvGzqa#k
+d!64>)XA>&W$@(?VMUI5h_?T?<T{`csGaww9U;P239bO_auwj>Gs{E;5<Y7~#LWFs;<k^p?^Iw2wek@
+%C&2b5SS(542Xbh-|OM{o*!SA00cNkHNa7`0vU%)`TRl0J$~J<Y<G91_U{5tSZ8eU-$Iu$6e&7rwIc#
+FAI at m?5!-YTyvcY;e}ygM(^4Q}D8y9so>5%u9bLFoGDeDUX>pM7o8G3GyDOQWk5iM0bZwJCx)s?m!4k
+`-7q!QWqQmZyF|8LWu_%bjL0aJR}sbG!hpC)rRhJ<1pmd)sV^6su-tb)h<<<@=!!d(nMG3<Ka6#*Oj0
+%ovllI$YU=lE2<Pw6kIbpSPV)*-6|neyIbUtQ-~Ex{OHXLsP3+RyM`78=$KMmOqEe)vzoMUu!ITvxPu
+(oy7B7N>;-?MQN>J3{76j at Y|R1&oo%P9acfQcHM3KWY>HLEJ7DFGP`fML^VCaUQUcb{0_n1mN}FL9R-
+#!Ni>rVx>u!oIT#Ga)a=%10>E?NAU|Q<|>Fr`sa1)g_XvdneA|fKT6dHE8Vb0Cg+>*FsMG9pcA!xXrN
+=A3j*jb2rzy(<X*4LqkHi+3xT?=ro?+R<Roy&=O0!%x>ikj*!V9as_(TXRz>`>#Q((O|wpG~n}jw&hA
+V-FI`a*CeZ+dYT~XQ`T6l^z|RMhmIQE?W#wQKt=u6|BuEGEypzKxBt{Y4~(NG=x+?JVuCit}R8W0-M#
+3XE88-NdTt|t{+Isf}(trUTO<T8^Dc!a4V8&v3o?36NSt|MUcqX_NHazx!PUUdf3y_2`d95oDd97&lZ
+NN`=zQ<#2|ZZqIXgfDazVNzjCm4#qC6~uAV}|d<U#Z1Bcx at wfLqM(9<86ygYa}JqZP%^%ykSv4ecJTu
+OG26_WSWa8hBj!ZkueoV2r=K5K^6?!ppe+C8|kl$*eeLwU9yMO?FC388cByGaUoda9P9j_}Z_C0Cb}u
+?GqGv-O_R#{^INItpq!n%eFpE{{TZ97A=0Mga9j1cId+EKtwYLkD=-lJszktv|SrZdcLsd8a}$k4YZN
+Qiu?OGa)NPN{Tavex%G=yaPRo<DUjHLq1RtoLA^;fe1w_yfRd70$I%@(?eXgWsIZbYS<GQE^569+c%e
+)5H$-Q-lPuMq)vBu44-8m*JE<Zl&M5uj)z4KEy?ztgkiw;Q>5+>S?TVXc^PiPws=9U{UP??l<6U4k%0
+C%nq)cXi-z2}kd>Mxg&>DgV9H_)_EL}5tWXKecFrl9ksHUZQq0p=stvGQ1tVxxIkL@)9E!O;<0WrHK8
+Ls2*O5C5UD6@@Ha+m7E;2kX0t>d<X-z01$4Ce at v3T-(wZTnI5(wBihi7(`By0dgP(MAiw?Mlm1V~bxm
+fDC5y{WFXbuF7>$*7nHP{LCOCee>|bXmhDG<o(<g#guPv(XL4>umJ~li!;vg_IffWDMV_!!;Q-g^7&N
+<Hn$nwE}vIR}P$>uwK_3kcRA>Pl+0!Z7L_C9F!W73BNoQ<Pj6Huif)`D4b{znQ#yUC_4ba<lvtjBC8p
+9=-h3m$Lb~60At(q#EC2dR;pqg(MsdM`lhszX6Ue%^msO=yLl?}5<qQu0SV8G7}OouE<Y6e$$bHOhh*
+wh!7<hS8GmWPpk#m>ZgZXgWxqXYzZ+$t=oYW#SqH+G!Xi#ZG>D+Knyub&u=pM_p=WPx?)jJ|Vc}f?lF
+KNi(^E&DLgGt77kzQVfUyNY4z;UHuX&J+P<R>uk#-F0AbKF+NXae4=jF?W=*!byw&JA`)b!D#w=z6DT
+qf_RP*fp{%b-piR4zp>!+BZDuwEefO|<RlW80RV4n7^+^Z<v$gwwZHm0KeL;eQ>OPNe{wL_(9LG!UwL
+%?0_-_8m<$JEF0~c-Bv<+%Q!-Y3k|Vl**UISDSS_-*VaN0P(MW2RP#p(3-GS?ty4n^;0@@w-;*rhT?I
+o+SvH+=_T5{9#=84tm`V|ra)01jIqev&0{JO=<v{LnjQ^H&(u<UwbhhRrD;1y6^vb22!uoFuP47jwYw
+e*>Qu6=rgAEeQO=3f7<zxBG1+WM+kFYodJdtKfEEm7jP!)~I_zb`0myAHAQa65Qq)CyOxZ#Xsm<6Gl_
+(|XMj)zW!YZXxYo0+h9}y^FfH~Ggyds{&%3<nTJ<4OV1T<{%XaHYS8(i)5M2Ktcbr>FB at Yaq?=ORBHD
+oU+qacFBj%R>*UVUZM%gT%F&eJMO6*U?YL&#|V>n7o=};fZnLm6Mw4`>lgXx}o~q0~Vffm0W4`MF?L>
+Nv-(AN}5*M);v5sm1(g8=r%mHJZwUV8HLw;F_Aac!7=TX(h|5>aE_!-?_?tmZA7=t2Il2y1G$ziKsWZ
+0jXg=w?Ke`00(`9&@M;dc at R(*rjDV;6Zp#JxHTV_lrSNK#cMMBv`~hqU$1s{IJ#U;KJ8xZ)!OHB4h*(
+3~ymtN%^-q$gP14GfLmn7saMEL^g6Q2NidKs#$c3Jg6DpL~2~|$&5;auH12a1*xm`>9Ks(#JW#I1MG^
+he>XrY;~C#7n{J01vWRF&g>3?qO$3F6^WJPd&lvs<}=vSMBGV2_OnNP9KaYHknGMzl`jSZ7r!6xBcB<
+hwu{7hRIh%g*D9Cw7p%Lqr9mO$jfrVLoPF at F9G6=eTsY8QNV#&v$d$N=<uHIwT3cy0^?0VNQ5z%Tt-B
+H+h`m5l?_wDq-TD{jwcsw_=zAR6uy`1X~Xsu&HL*D7F_*PBUiRmE%cDV*IY4L+W-Z%sd*j4x-8x(vG}
+jsaR(@j;26bf}0c8Dh09gzV2-D5)XFSTUx^N4|L5=m9z>W3AG_5zmE3P=TQr9mH=Tc%~HK at qK=y6x=9
+;m5|^h<j_rf(^^3RfXu;n;`1G&$Pd~l;?%~Z}wr}oVKmLt7<{r5eZF_k0?*8eX+r=KAxR~w!rT1n1 at Z
+-}Dk8kg9NhqJ7^05FEnwZO`nMI8!&xVrMgDX}}6d?%H%HO87DXTo~VWV#4frjLIH|~;9S{X};hHiV27
+P2!O=PCD2r0`P)4N-1 at sS^~F?B^|6i%Dpjz?ks#4e2AP?Gh$5C~BtEDh4x1_KB+nd{IKTCS1Yn9!=k^
+y>{jU2pQ`=$ykFb?Bw}Q>fmR-;9Ka^SJIy7OOxU-NPo9r=YvEt``Rc!%)XWPOp5$Knx4D&BrtD;f- at B
+APOeg@!2~HKXwux0*25%c1&J{@JdyO?l4PG$vY}p<8Yj{4C56XetU=Q+XbKEAC1~>AQtqD=oE+1b`1~
+XZrrJVikASI4 at NB{oW-Og3^1y>BmxZLK-oc=^pnW=}P{_jxuazFDg-Z)MJYi1)$;5yh2*{>@Kn=9RGn
+8S`+J$br1#mhz-xjbB39mIVhap3N^W-`Q#}fb?p`#ON^Rz>Z6%lEtx03`dq)B&hf+G|BnW#}GM;e0Q7
+O(~x>eV^20&oaW(_{@N5jmOs(1C*jV3K<#U4aR}3?TL-YQ%ItwJHH=kxBqKt2n8dCz)cvJq7?d)05<|
+2m!N at mu7>~ik at AP0Vd3PQ1(u+-=uUIHouS!CvYTH1*z+UlDSPnZ6dEr1Yx0i42+T#^aBnnU|Iw2JZzY
+dcoW4;K-MJsrl}Ii0xvwP0~<H#d!|Rby_1XfQ*!n>y8ex0+5v?>n(1m at EZ?cXQ{m9%2!q*oEQW(h+&=
+<c9K^M7=+Kjqj=?qb348)3FVj;YU1J0XQ)i_W7yMMfA5B=oNna{G220eQK(0L36M|PUFU|uY(wo$PL4
+&94a4K~5J*<7R%;x+6w)0+a<d<Ms-mftHy5yfYA$9>sk0rup!~ts?t|1lnpa2^X`)LoD5_jS_$qo*Cr
+ig!%0z2Rek}gbwnr;c^&0TcIl+ld_lZw>Mm>y?_l1 at k9tx0hexy&9<NnHU>N#Q1OXhJU~h&9u%w~gCf
+_FyagI$WE$mhvIZDeL`&95 at 9J0|X~#lG1gW+bDh~X<?cXSlp!WOmv)6jWJ|qT<Z)PgJHKo0iz53jmcD
+b;e}y3J$y^Ta7|S&o+DfFoSnxpgW7rmTPJhMupbUw2#Sut-zRSzDDQ&~`y_v-e-Nb-#2p;vPScJT0^0
+haJ3Bdtm?#u0IB-4Q;gLAz?HK5_CIwioxX_$!#|}wmp7OkmYc2?j<dSmt$JA<tz#NlH%EqM4lb1lzz7
++q2#0?N$(rKJf))SmPL8FOOBv{hhB#kE4J)0 at hs{*GPfh<mg?_6tt@?jDlHn%%5^a-w%LCU6b0zH#%Y
+Qj%tm^ahj5}5>vFm5)?S^mr`9?YA3NlwoaHa7uJnd^aI4|bHp89|Ad3RY>R&y{B`6Bj9S#X9z_YvN)_
+-Rf}41k>S~dioz%*Kz1AaZq=n)*Y93d6}BZ#-{Y->175aROviAI#qQeP>7W`u}EC%vNz3sqkW!6REq0
+71yzEVa;r&_ouK5T>yt<(3fr8h`gymB5?UqM`Dotmv1ZGVw4LUc*vF%8lh46B=~oXstZBv;RYA4QT#*
+tV#lxn7|H4jiauJzeiDr7ln$zS}!!Nt6)i#A6gj(vL2_KfEiNKN*tUo{)iO?!pi at ChBx#<{kHz<;%5c
+p1nW5JFl9qBwA&2Enqi`RP?19G%U;XG)NB?vQzDMsH#$Ue*!R11TyVtBZZY at A$glPI2p5_%4uOK=J13
+L`epqTfCt(G#k+M(7s|p8#x1rvk}J!p43RI65xp$lBxNL1QS<@J(of>E)aB2r4*W6VzUbFlHk4?qW^!
+jFVzFff%Vfs$4%^Brd~*K}!&8yl)#~HtI9!XNK_l5-NmK!N2)th_VD>Os~K2YKWC=2niexPH5~2mvWm
+z;>*iL_&yhsj$YE+3tF$!E*uqUG*4}?0Ym4dG7y at dYu=}82uwRYvCn)?pD_4?%t$#7&zq_}5T^#YE}=
+puO_bSu6$b+i)fy(7)LAcD#NJzRt#>nvZf!vb4IFN;d_gGeekZm+yf23V2cB}8^+Kz)3xG{`e>PdUMx
+yuK2ah4#J5jJ-dL36XTQ9q9rT{lQeIp^rTTNs%*-^w3gGUEER>Fzp;elQU7yR=g&w#_IJInPh<Ajis%
+x+-TlDP=;5OC6+K=U0+=3!pKriPWPgdHc=CYrR0HY6nIl0+bsoP<d3xS1k3&}y(i3H_O9ToYO)k>({t
+$wbPZbft6Ml9OhePGBA^Rbqkw950 at _42nE|x7Z at ++N4qIXKNHTE(ku;yFX$@N+ty?58Nzw!}ikZ=z6}
+J<i`5Yy-N^ZOry<ZXkz=x%W2Ki4aX~3yWhGx9}%8VJq-0{aE~E~#?Fm(&{av}Hzcp)FinV{VD2Hxf}?
+X`QLuXQnEhd_5a$_h6>|~=X{#qqlbAlxb_bCqfs`SAi2gIvYLqZUzD=Yk6FwmTrb&N4rpV!PFIi2_Kc
+u}x<S at CL=)qi^e;A0p5^6Pww+ToLXtbm>OQQdjgW0_`QL*Uo{*=S$21Yfv4r4i)$`i at nO^lsD76hpxH
+F31{VQo)CDbZ>Kd{M2T=xcaAnoW2&-8tf6JPTBt1dN=5N&FVTF;!rB?!(iXXt=5xB^q${c at FCv?Mu;K
+u!UYTNYFaW!9;&3niw7pvO7O){jgDNN)ke+#&5IRE6q5rkkYh-y<l(w9S|s=!b8OpBBn!hK8b`OJuI5
+gv;pash at WTEz793njFlCzK;ET`NnBQ~cKHyPB at EqMg@|B at gfWC*^kc*H&KwiSorizxUU3WtX6+HFPY-
+n~I)o{nYSGE$w_(4RPWd27C2UZF&C{k67o<)~nbfP%V@{7MlPq&sz*txj#nDpKE=yP(c<ZDBllA0h)4
+)uKCUPYpcXEZ@^o}%m>s+ at LYCCIJDIS4*>9OS1?hhyGj<O3YQ(;Qe!I6L(uO1$sq)Y|hB8Ql;+P6f38
+Hf0at><)1QoT<kifQdl`z+|GOqvM;>SZ?T0Z;X^^i&H0 at la;NKvt3p3mR{X;vfcjhW<t(;z|<|_1|3N
+6G0ueI+TcZ-?FYQ@~rj6hfU?w5q$k5<s=1Jn$p<i+}#h$)O4bVeJ(Qx&;vW1<h9Ht=q8?cmjZ5Ztr!M
+=vz{fat}2Gy&{p`O5Mk)9rU%RtY38J5G+CvvLqg#m<h5j%W7;IOn4qB~YL+l0r-WkBbj{FAPkcL151v
+Bayw{JI3`j@^_|pId>88|TNWZP*sZoi at yg!PHp2z03yvb7oKrruku<ruFMkX0_$ugw_r07U<A at 0_8?C
+Odf-cJQ{SkJ<M?6IW(1U6A9Oua{dj^oENMhujqoYSDmnTrYz(hooY=~ro;5KH;D!+PIk_c4AQ!IUkd1
+3ISH^Kdw7Nmvd~N~0^fR1*P3><8iBi3DqU8qwp27LVfYzOL`2PYAk$>mLe4(r|Aa>MMDAy3)%f<zpbp
+h>YeUfMY-g22{laS0pGfy-C`ed8Zjv)HCGRErx*|G`0sV=t2AlaK?mu&$JZxssmsE`lE><j}(e{(Waa
+-XK5yEY<N!s1;7a7iE31!r&o=Nfx8~dTfEr at 2pkZqWrxNgDH~g!mi64E%3+ouq$RcF^awSozobhtcR3
+T$_MzU|+jJn)F3UG>p%-RqX-j(|OamtS7EEL}46SHG?53iFG)|&k&<ugZ at OTnY*Na?<5MJ^u;_rgL(8
++;KfY)Ok at ->Bd1{7zKRi%=eo{{gCNlM8*#&oEw2K2Zo#KTL at lA2Ain#4H8Z*rI+Op$a&Iljf2G%x?R(
+83&KuYomzwq?TdObZj}pP)~e^u~gN7t>8|Yq_ZCVR>R2j;EKl82CxQWFR=2xm(tIL6wlzXX&h#mMnt|
+Drfd8N#Q9e-lYQDB~m<>-$Z~|Eq-MMM)f|SP|{E+Z7wsWARV}V;}?SPrNj=#B{~Ap3{<$`rH!X-(BYk
+O#uzZlx~2_iKpMr}6B?%;D6}G|OgS0?e_Di4z>xQ6szm_Aakausd0#xyT$iE_kK!qqLw^=j0YRf84~b
+tQ1VwuC)IhV6h~p-O!gRJCa~6+Gui4o}qSG}bkx7jKk)W%Cke1d##L-wL!ltV~;<BSbAPWQn$x)Z|l9
+tnh-vq$4n~H{ZLhIz^ohP>O!`cEv;KMek#f<W+Q#!-i9)<`#X+><$#}fUA`HwDvmp*w`u}PdwzX`BJN
+PrFv`aIJsL{4FbWj4C=keo=b$mrTMeG-fX=4yH(ZZ5>3F=B!Ux?$qdE1M4KF=NV<W+B{@FeYms3O>=Z
+29?g79<E*Z6R6+~*SiG<jWr2+;Liey=4C+qbkF?t3MSM;l)$?!chYnJ9vQR*@_MW;Xw!TNNF+guxdKa
+Rbfy%L^=49VYkAt9uv(PmwthNHX81CU7bmx-!I^Su;w}}jsq5H}Nhf~NDNmS^Ny(VpixJ)1Nd3(tL`F
+J;lhl;Z^3!v{GJBl0tX-BaL)5YO$|)@OR3U*zH)aj7^NF5na*jG<y#NCR2u0!?Dc#p(mYU(rJF|T^OF
+Zo4;1HJ>*xz`=^11U<*YIj}a|jXCHk|R at -ILgYqlw`YgzDsq!y9Y7w5lt`^z5 at y5byE0AvN^-UlKslv
+J1F-5eh4?FG^F&)P;0$CFcSA!}vjNSgS&R&Tk+7q6PllL_OX}b=cq_GM>hK95uvdzR%qvyflAH3Jy)3
+Nd69hZ>^!U)Je=Ylu(17CK1Y!DKiHB8ZtPiZ4#AL(0$%>>}|#;=}@!js`QqtvxV}Lr}zz6fG^7g&^Vg
+AkyksEc9vAKVv!RCeNEdf$WW3BFTAOMS0+h)3OJ1rsIJqik#{o=bL9A3s+Xj(Hm7Hd&-HtPR499S0_c
+Sh+P&bA;tthA?$&iABnvleU}|F|h_nXrDz`+75X9EW*`@)y4|uvc<;gw5=Pj&oYwI397&RKtNfRn at y#
+zEQ^}ub&D)@U`=$t34LV67{;=6II`;qJx5(vDFlpPHDb%2)`rAe8AzLFz@!(U^8&rFVOPx at kcd77)a6
+&fDc##)bVi`R}@=(7ED8sRwgmto!ve<+ivoiL<J^g>V}xlOr9iMhj+N%0_oP8ke7PpD#CPx6lPGxbNa
+IQTPcq-#ZZ9XmtcGk05tn1sCs0kgpe$E-9eVQkn2pG=8<;mV<%>l*xV+6e}0QV(=XAlVZJ=gDZ|4pjg
+f+<l-f1<=E4hdKwr_wF|lzPuA}F~UB9TF?4eY}Sc3-Q;7{FIBRFsrgUtz+abSsB)MdX(wl4Hm4SeiPH
+(5^eJwGwHYWK13ol{MrO5TYVBSH<GpNzJ&7i37cr^5GW;9jH5n0xjj>3f8LzyS)1C`a#5M-C>)4IF_#
+a*U7!nlSdi=yQF5XPmyVly^?|_X<nA!XiR*tYu4`B`|y3=A?cciPuGJEy)YO$daOcOs{p^({~#tuQX4
+LPsGAj*2Z4HV;~I*ITWJyVQ*1UM`hwTd>wZ-GeZVmd5xx at Wk*AP&cYBTE|HaoVgh&|4*gvF%A*3Mbf<
+X<mT58`hhr at DXZZH<0nbDbUuBh(I=uWUj{Y9tLCk!yAK7SIJ*iVpj_e)0LAx?&cJl1QZH$%G+?`(R=Z
+uizN49OI<-kXl~we$R6PzFv4k9%T@|aj{#7bkXv)8<)EyW<{XPZ3OhdRUMQGjdZ9u2+ij>8!xd(5r?0
+X-_J8r2!)3S}E87TY4}TXKXF{jk6ueNvWQ=B!jvbobSK*@#P&xs1CRFj1Sy;ak$cp~(`c|xcu?m!o-m
+FOFJgLf3ba&Yo34cA3v-O|{j}c7r?U#fkmvDvhT*U4Pk_+U_2 at V*${S-wKnAgIQY`<7}+Bmqp#LrK_5
+)YG`$`#5Ayn0Zy%@t3?g1af%@)J+*zRKo-BTtE5Rs{%Lo3gG#!%oZ)6jrpPvy1L5%Bd*)I&a&c0t<JG
+(<+ImXAVi}3n;Q^LP8a(X->~Tfe2{i#T2Vaaj=HuwIscdrgB;HTE8dDyF at 8(!(~YeA>3zpPl=_nhK=Z
+k!e^!OG~`e++GAmHX+}>u9}-FVa{3FYoRo;1nq+OT1GWXD+}r7S(XA&yc<L$R;b(yXA!w)eHX7*Va9?
+RX0Q)rUCNTa8k*>d at N$6=0Wa&UiEKCQ+qeeLORz_p1KTIOX?aW04sBW!?y`})lMrZ0NPFc&PO+qC#?V
+*RfJPZg<IC0Og)U+Jo_Ur_kr)x1?9|<D}9ZosSFfwu|W#V;VrS7;m${$+HLX%=Ax7voBjpyBH#++7p!
+%>7w0n%`nC(m+$7=w2TtkEb%W5D1yNTu2R5@|@P41Z6WO<&^^-N at VAZSkr3;n9e7@{+W&Evh-o+Fu51
+`-YBH1M*{97I=pP71>tX0qV-e4t#63TmZ-~ii?mI_Jmd6c at Yg^RE2<yW?!&LJ3Mp<QlZJy+i9A05qy}
+OgDD0$XPreJn7d72&sPXSL9CJ(bFK|=smL~qI#hlGtDwA6Dl8ll!NKS+X0&Coz>y^hl1tm?r-?@RD>q
+DNr+=1c;3f^yfFhXw_R+Lk=y@%#l*hbQPs-mtX8&|5{vxx7SBNkMr0~hzG80B{bgxl!-!LV+;+WF#NE
+Z^wfR&<!gx5hVA7%~3wtAgW99HC1G}e59P`kbu0idEG@(d?trpO^QHwxdpgt0^^D33&-kY1$g9iCde{
+U9?f$Gj$u&dKH0lPhk6f*9V$aS^$gs6(<y<1pL|c_BMd!el5dt3Lb0bFIH?2Ge6jPkNtfGf&g|B|2i$
+d4a@|cuG<Q%v~PBga at 4{An1zY)T~I1Pj$mWe9HW3`OH459$jLZ?&Y+2Fy;lP5vuKUOeA=r#?HHgbNGv
+Btg*<4UA-gzH~sZq62$)6TV8O}_0!O``K-i-nk6i-(kO`5R)^~h*O^^t2y~-Dnh-S;eO2Pisi=VJWDu
+hBGOHdINTgBJkm-C>gWCvGe2Lg>0x3h at ADA4cu4mz9yVic}=~$J;$}DMQPN2IB#7w?~M#c0ufrxyxH1
+VhT387kon8F&JzEM)(GeX at TB(G*$5Tq$7OtlexI8g&JphOjq<09lp#xHryX>edU0UKf4eesUomKLrdx
+ei~r6x(+9gGVbLGTW<R*XNN7=DvD07#Za05{_cx{N9ZT%9&o?q%4RL&ai%!B4C4eugsG5Tx*zKIzx;h
+p?cHM@>ZjPH`*(Z^>?U9OX2Qa36qOtNG3UZ$|VfFhcr6YVPh4YPELC+cC54$QXg?A5eZK3ae?=p{uZ3
+e+XF$cGdvPEB`w_reTZ_$=9q0ocx-RwBwEhy<uP(oz!(L~u!NJ#5-K?0YmyioZHwV;DBwO8ZAy6{TA5
+G~Qyb$<L?}^YRi-Af6pOiZuzr{&R)O37Qj9?6cz04#zJ@&zvhf^iBgO<Q+pw0DoePV5TbV3DYEafLOS
+Cc_mt;H}9IAemtWmuIBsh?eMC0k53n{Wzt$~~<iMk<Ku(UgD>uEy5E0m6eC;|VoZkNK8G51$AO>@QW&
+1GsQ!`Wi6B%5<B9|I=JUbX>-?FfHi8+O6=pZ;b;yA`2BgfzDoJ7Oo2_&ik|`eE5}xdHB5?bcz_NfBjA
+o4bP;_7aoYW at 6ZfEl>~78*=1eu_xpt6OqT<rG<BwRCI at pvFaW$n|3*twp7qa3^QlZe4B at j3Sed`=ob|
+ltO+lt5s1McjUK$E>Scxc7+(0Y7U{v8-7j^OR115d40xnDJ?7*Q07)y+iqt)rD2Rfyo95D{3U&f2TuN
+hto0P047la~x$>l8>NN}tFzyrf>y8gbR6u55<gp_IdoGM*$US=!ZXY<}RU$c=z9khEs1>iD|CE~+46(
+|_pyb%ZG4Vh%pMw|}rROH`O>ESLSIXkBcc$%KV*#TuQ>ZLD>0`<R|NEbBN+r>$w_L#(FTwZT+{h>?`Y
+u9Oejm`A*M>rbx!vID7?=eUZN_Yx$*cC7jC?y~`A2Lhp%uo9J2>h0VR}>cc0-?k3MZICubYH({0XKFp
+?ZDXs<_KH at 8qy)5i%l~2R29LY;@M5I{(8$x$Khm{`$j<-CI~rqX*-n|9zj3?G){lRm03e_LhYQT4a3|
+$@sP#^e={y^pYCV<cHQIhfqsi!es<a9VD$F_USc1sITRWYTeHih@<8u8lX*Lg8g{_#Z+hYD6sw8Q6hY
+b6-(6BhLxdpWg~uMI`NHE>_K3tqG#BDhL$5i29EqOuF#S$V%K=jYnPU8fC719=qv9>*3mH!2(|M>aQ+
+I3JA#2bZolxJ?hQM$~oufyc+<79XbqeV`3CZ(NiE-#=E856I(H^uU#p at Ik+9|RjFg<C*f~Yt3z@;#Tp
+84!vU6cw;4}bZ$w*`50i-GXQb;J2OcuL-cO|j|k{nTl!00kQ1xPGnT;qZqnmA<SFcHI`srU=FvoI<!M
+mX(h4My<<V??j)<V=bmp8}P`A2Z1x2YW>qyBAra9%mRf6knH2)_ at Wh4FvWucMu?xvDbxG)NDk{|auHz
+suo~t0&<%4jP^qzd(8uc!6#4+UjggYNr+9$^Tz);}>b)BWN8MFj$hVqtNFq~IIIRiUJa-U>_LiI^Pfv
+sai4rQ#Rqf(%k`d^6M1?^5DUsFJ*+QVmnk}UaKAGyi0N$P58*p+dMbvHepZ-ow3q|v*PbIv_ge$U|uB
+Ja at xs(`n<%xWF$x1C8F8{#r)O~>~sEDRlNMK4qb1%Ir4z4BDpuRU7t%@{fVCLxOR4#9;#u^Svb{>n7B
+HNor{jHLEETH7D^{^B{G;-H3OILW{Q8fKqBy_l%gfvpVIvseMDGpN;<!8yD;jb~6yQP7rsysMhayT4_
+mh9j><wU?RQ;8w)VEe?E!dm&46fCX#^{78s*xldsJ9J}}l^PzCKzxY@&rmI at a%?>s<YwjJ8J|n|XnTG
+|H#lX)WuYF%t8!0e>3+l`WP~A7z-}qSo4t__EL%`y8G)~`d-6hum<z);#rUfRSw62(TNIr)BzipB8<i
+E|E8y{dkkb}Be>CM?IEg2R4kahnE-Gnd5~oK92}mrdo at kq|HsP1I+XvgXuV4K8{rOMZo5%lnar at s;O9
+KQH0000800{-FNFTM^_8J2K0Fed&05t#r0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>W
+ppoRVlp!^GH`NlVr6nJaCwzfO>f&c5WV|X4C;#mxY{_y0^1FGkQF;M)?bip6ge5RG_r|Oq(M>%)L*}k
+w(M*gcd at IJG@N;S at 6Bks-RlnxM~{;^O()4{o{eZYT_k_eFLJw`F0J-V3oCb03q^@3n53i1{E$kC$k-j
+_h((=q>O at N~k@>*StjvKenUee!4CK$*yIdR?p{lC2%!QXmJAB%MvBwVp)6&>eJhv=77qo4Ti0`iwHee
+kZT($SqOKxcJ`STxuxSAeOtQ4go*HOxj?K2lAC5h4A%5Ck9?YWyj5h0oh`<<3j?X0ZmBY~kOZ)n;0z0
+s|HSfk|D3flyiO3O^nl>P<8?x`^~<wBF?Lb?+?jPN9M at td)zuS_A!CWLBTKu%!o*;elC;p2QwQ+8lVk
+F423&9dGqnWK0rbJmVYI68!w+rK(B4n(q+2#pQkkM7<ROPq(hpV>M@=q?(ZZ)*|zWGwZB5B$;1Lnyof
+>4p@#Vb7JJQ&&8Am0FP0N8CNk#|sdl^aXQ7Tc+A^S*tz}kW1ettFMdoisJbbeT&mHp0A$nkqfJFiUyv
+LWOYyyz>sBy_6?W=U^YsVuc(NJlj&sj6zGp9tNAF)XuL=%re&P2Cdqmlr?gzB%SASdh%)B0$HC2OE?+
+z at 0a+PXS+EyUxmNoV8tlMO6|@)6j7H}yF;gV)lN_4=)kS6W?kE@~ua4f6EJ+*Rrxz<RJ($0D{RPTvhx
+-`&JnGZ$10)IkU7-gV%Ez(<^jH~V`!qDphtye&+S|Lq;P&I-)9rw0ogwn8heq><|F}lFola>@MNzfQ_
+rf~%2Wz&_j|PU{XjUsPhmGe1ry2X@@wBbMevx|TJcg|j`Ce*1mnFxOES$_vC+8BtTm~;pbzAT_y!$k`
+d-%smjE&SdY at -W5=c>2q*=&Z5r8=El3Fq42iDB<LaV!k%3k*j|n~lWU*=%}_RoTYFbG<Nnn|{d-U(u#
+&_0H(a73sY<Y~R(s6a54BfB6?jdOtx}EJ%;wMcR)2rtRiNi;91iXxZ0R(}&X)A3A>nP)h>@6aWAK2ml
+EMt4QOLttM*{001vE001=r003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OXk}t at Wp
+{9LZ(?O~E^v9hTWxdO#u5ImUvZT`h at 6tF<kW5I)Xh+`WOE|Q8cD9l<9akl;7Fpv3xfkhv%kL2?%n|hl
+5*^HrkY720e5@*zR&I<&z|l7QK#o`CRgfma&~@od#+9|-<|!Uo>=?r;F-Ex8uhMB7D=vCbymbiC00#~
+|0HRu)%!eoG^NFxXsJtUDixc`L{(9$2unu?p28$gsszhkn at 5utD^sdsuBttxvA+4aU2gD?PKyjruZyx
+uirlKGG`cdenr)cCE at fRBP+M(4d0DC6SzkRrK7IibdzX*YI8D_Jt+ndLSW`ZlSQtMm@~TW`HN@%J{!3
+<Us>=s;ourF0$<$D-z?G^Bb-k&UMef9fg3 at GG>T*N6nwQ2XTg<C982d?WidscFSEY#)E94<}rF0(usV
+K2OE8=9np+|KdLmc9|GG%7H%HCYPSC__uQ}xE=ri3)t^(;*yY`#n)lUt*-RV#XCm#wBQh>=^zh`K01U
+Xx0HQYOKBI-87%C+hj=#GmFU4is$K(-rX#<E?08A53pl3Tu>p=V-4AT1jJ-<V<!6-QyP!grI9UlbRV-
+TQjfI0VrUt`Y^eB`|kan8ee@>AI3K~<Ey)mKVdC2jkmC$P)f2 at nt(8*Ds^6Mz&Hp@&u`A&V#oM&ayhy
+CNZemc?yk;nZ`H-S8#Pwf<D0w5+55}!jk<n+bN%l2d<2g(#;cf=xlhTBisvAi70 at JHUMHy)(Lchx77V
+7bTIxpwGe-t75-W{}SZ%(`hG~&6SYB*t75bA(<|;3$fm)Xdd<WjQV_i^b?K^<eN27syae_rUe at J11TW
+r5b<{*8M7DYKwr-iL(>2!>}$Inkrj)x~d9G at ul{uWQ3`cdasufH*sJUcj;mqn&VE>o<^Vg~79Jqn>SJ
+iIm4H9zzV5$zQ$YW*T}Ra8 at WqIu0pCdn7g%4|iRB+J&NUfmaEeBeFN9TgYG=0}LMsH%0EZpb#pB2WGU
+Rl|$(MXeWx97X$V29v5uMINlx(xjAJ94#_FX&oNxP5Rc%O0%Z$HK|)>4 at h;5g_GE5yS3csO~(t_OL5{
+A6T-zb%;i>DWxgPkD28M^<)p*O?YrTRKfd_e at W(@Bq<<zB(z*BadY$BPv9`mL=PzE+g3Dr&M4c5af#G
+ETiZ8=VN5dumO)Gx>d211#Fw3U}T#5)Dwmg%L$omneup9IaJ>(T{Cdr`>suf7332Y6oMk<1yc3DS;+~
+$N5S+y>ZVCHk|$}3VlnaS4pH=oYg015{a!7(Eh(nbi+lia|}am*%g1r448Dn4Z)b`}&_$6tOt9v*-B+
+XZD=TVzIMiH(qNb8;-UV1_DT>Gj$mv-xGBs-az(D4BDp$BB**#7SgXy5RVuj|u*;%OiySLRU2eh4yyX
+0W%RX6aR&LHB?R`lTETD)n!MvRuP<OImhT$i&Ta5YJ~ukq&7wsBMQW&LRKp&P at Lf_^TiR!i%=c}4FWh
+aWp3gDa#@O)sj0>^enG}-U4coIhLpn<wPUQQ(K)!0g5hG1nQS5fC#;rwW~%lql7Tg4HI)CT(;C_UWqS
+YouYRA?Dya36JWA`B&Y3eLaj*I<jERd3Z{TKLRgpp6s at 6to5&4*x4)Wtkg0z#Al&nbcNwpy}9ZHNIZo
+N_&q_iTV6#XxpdyvX-R7~nmBzNFodQ=KtLM>35YdS(ntJBHriCaOU=yXxQB+G2X5;R+_F}6Jh-be0O>
+b0eU%xN_>bG8KIDA_G6Ro0|)iqpK|EhiV{qzZ-+zC>-NqX)1R!+vA987Yi7>?A0)klcuks6!7_<Q at nu
+abo+FY9zZg&Y*qsq{Lq+UU<JkSP`)CCwx|)*2^L_^4c at iyaq7}uYKEu>NlMMDxaV|T1P9exx=4D2FF`
+ at H5!eSsiGrwNN30FR67Y`pz=DSGQr%P=L^DXqGPE2QS{`zfb87pSf{p7hmX#SX!9O}vC|&9H2tKn?Yh
+}va}G#H5gv2o6%Ii2GV&2;=#i_C;+J-XqMghVKBL(3)`}8 at U8Q>CXz|g^x?puIAQ{MC*ozzAr2|k#Vp
+ at Uyh&tytAoM+Ib*YnncR`KcIHPt_C&iLZv%(6du#hNapoP2uTj#Ems3^IC+l!Jrlr;q|1h25xJW^%@p
+A#f90)w=3Kx#wWW!58K>*d%o52!(6XFJDffufeFdd2z6saDU5M*yM#PZ01Rdu0ZhC{Jvr9&(g9T8TuD
+S{Y<u3bJlA4!6-n<Ncz)q54qJ9~@1{+$16=a%tPz)$3)_iAEB~`4#j<?cpBWv#Lud+qfQ(gz6Hgb3u5
+NfP0f1H7P>6mvWFWN=!`#t{m#64nassi0&anseK#C40j<@UX+<m2SEh-U}-&R3q>(zwDrs(oDSL`?Rh
+Yo8}aIyQ=tb3l1sTd&J%7(x3LeMKzX2D#DF6>h~mh*eYn at _7cPjDRZ$V;W1)jx5L1*}Ro#U!bzBHd$2
+GwlY%Owt1M2bu^n`9`&4tLSUr~Wu(xVog!)^dkNCD1|2&<J85Fk}s-i;~;VAz4zZ2C~Jk$PP>4H0=qA
+ZaJSD-L at Kb0`o^m62xZ$%7KIRpU$CkRitBb80upngE+~@)3&oWg;Fy$e(Ja^fc<3NA>iqAq#C%rifb<
+0W^Di+G&RzHgx_e&!|Usc>tjnEm;<v4`7Bg<3=Qi4NyiCsF8W{U+aWX1Ua7}B<=?TAcYfe-;_nY66&t
+l?_<Sz+h!N0Bou6<bn%9VL`tP_J!ql~CX<{ahX~S&;e9-KkTk_2fm)ICv`LChrU3}uC?iw_JwtPWtk)
+p7p&&P9;YFNIToY~F6Q4f!N=PN9EaEz%u0_~Gsa!)Vjrq3JC8f}nzEmayH1J>q?TV(Ga<Q^VD|gdNDu
+Q}}a^*`@8#GM`8vquqhvVC`$)ppT;ZnOoLG&0WCrC at UpX)LVUUP=dH^|orKXOpQDs>bd$Ea9QoTWy{j
+hv(ow#_9;8I5h;ccluFD%65>5jgdV+7*|1Kxm1`78yL*y^8O3TIW6z2e)?~z&9N_FQeM^A;~GtP3dn>
+SrFV7ZNd(MP~-^7=LDogHH900ZEvF_JzzxDObWvMIzTmsEhGTB1PS>ycdxTLNgZr<&~TePp{62b&1U*
+RL|y5m92Rru!5~Ah7|M0(?kXXK*qlqTYDG3pU}p0Lzd%Oxe>KhM*h4(3><lX;!xH&UnM%8LF>`8mitd
+CURd;kDK2>kF_>>td!k83Fi%BR76UrE2z&5bS){6zz3dfhvF*2y!<_zH`Vu9RSUkDQWZ)zTm!^W-goq
+r8HVy)9^YbfKUP|tV*XC$>s1DYBORd+<!=~{0n{s9eusE<d-$K+Np_*`TG9jGPZA#V;$QnnS_wxcG>V
+$xV4aC2J$Sqq2U0t<MST)nOMm9`EU at 5sph?I%}<R}@9E?~uaf!_rMq--O}o29~rDU<@_!(KHN4l6+X9
+WaU*;i)estffoE+ET^-aQoV!$no$#Z<<3N6Dha<3q-iAVh%(p_j*fE3l+K`HxL-wKbakr at X?n-(14pA
+NNxt-iy--VR=%+HSvd~C^5S6R6G!K)Reqa?@DyczAi&PNupmst|fWoUVP-lzZ1BDKJWNblKSR(}VqXV
+vmL5%-NwXZv4Asohjhafz-m|Tr7?|&Izs8{Ovi_r&H?{22ylbKsGJ)g>h*e_|G7`No={gphJ`z8L#{M
+aqIK9|3L at GJa-Kf48Yw_`Mi{OE;W6FmD1NjU`^$j~pj{^qgiraH47F-0)V;fb&4JQ(r7Ix~Yp%t?NLE
+Jnz^q*10VQu>c;33o~JjE|<+M0z^8x)%w~-i~kXUr%oD##d(~+>5WXEbjBa@(R4hkTDNpX+M+GcdySc
+L;jG}P7V(KIk|lg=HH&5-kg89zZy^JRp?&_m+#(8&UTk{obuq{AWD(5I#Ji_RL1_x1A^MInXCJIXr;Q
+p?@?-W&*`VLe$-vnEaG%}pE)(UeDF$LA**k%5v6}+2_nH%z5YSNnLOBH%Tc=^M<5p6(YI_m=<&&ga{l
+hR7BBIzDeSALU2wT#RibhhwRL!H5Nyw`@s4v*c50AQjQmZrSGfuWs^RLvxQ_@*qfAd6atNqt>80U1Nt
+Te8yCz^}fNvRqyNpF$$F{J1 at +)<uj<(+foOR!`_|~)qji#LIyuH*6q35VI4oq{;9)9n3vY`eZIrvon7
++8JRiraqE+58(06jE;4O6)!72**tnoGIzQxxDH{eX_-;Cif0hlVkm_$ejMy>+{y;Py7VA^K*xzyvU#A
+O59KIvbwW6PCVArYEcw11<LRuOnb3(;A@@}(KI)pb(ETDSyZMvQau{+qlN7I5riN|r2#ssvRF}RoLBz
+(n+_I;8~S3qR4yCb>_M6t at 68uL;imi`x5lp1x^y%DmR6)&5ZsEy=Q6$3%4l|Wu;^yME);mm)Dog&7Oo
+p`ni70sjStpNGdS8(wTBbehGX^@J?HrZ(zlzt;9UGEUqG0pM%eRIoer8Ax)Ke8b+3s=ZivUD_M_`!bu
+>^%=%sYFI^si*ru7VI<{=D20(R&qXv79G3+|ps5$@`!J>#0MP{B8Fa<L}7D~PHkH8Z)HCzZ<-wv`!Zb
+(>cJk-AzNG?3P%l?+`)Kun;u&=H at b6!B|KH{+zZ(QgG<i)99?1uf0*9Aga*2?A$sOzZ+ipVsqE%ya at m
+<M)kC1RJ{)GIVWNgG7VPm##Nzo1tdZ(tJ$d+VZD5qJUb{8~M&?%ircjn#z2RTvW6dElu=b;!vWKz8Z_
+a(?<y$mWYHCC*y!zA at Lt8=nf9 at ooN_t_|a6mV&75h43kow#AN!;ZA4 at 1E~yUcDvdPu9I)1xC$KkCe>@
+3IAkZgN$Mf%!aW|?ad6zGjHT?igyfY+%AQ`Bs$>3mhK5&u4Np{es<US~&7;j>(o2lAnf$kt2L+4*2!y
+oEw>7M%+>Nx7ucegn$qn?E>6eund3*t<>*KbS+t92=TlL><%g)@Qc*1Iw?5^W#- at Eg_uUM;I9eU3Tr9
+?&#utuouRzJp;TyZ`?r4;*nTLS6U@`ls~VabUTtilSPe8miy2qzc5hJ)KDL_q at D=wS_owp|11-B^daU
+CwwvhhZDRpmBZOIJAfku<gN<Y%tKd5*10nGr7lb2IOWb&yq^Z%G*aP6?o>^>i{KjR&_yRba5j`gw=+i
+GuA%|e5710q6`8Kweaf7%0Goz7p}!7iNe5E*N+Y+6I4YCtjh32>S^IQjz at sv9%^81WRc_p8kHjmUKUn
+t}O1c at TPt)<WD;w-La{-JC093ee1+A)AuiU3iZN`-&`D>c3*@31x(NTjevJqK=KA0g-EEr8Cc^&u@{k
+YmEr?kva;R04=hD0~_G^@RbTJDQH-SoJ!wd=_aQO&MFZ at TP4GJ5xl0etsWV-9LE`2y7gw4sMl|E?`3H
+xuvd^eXGL34eIv7&$73PYkPK*z`;^lXb9F4u%!OuEe|D6ZCxAVP5yH at l19QzN6mX&!&)OukWG0ei}Z1
+NjxxrpFa&xUWOs{`4g1;Qr<mD?W^7AA781Hy*ts%waj;$fo~V!`91-*YvkuoU!kLZhk#+%yd$4Ut=Z>
+?SHvSZBB%Ps7x(#HueYZ`WzXyLCo at m+*?Za-c%$l3sE7~upU|$?><^;Zuen95^}Uq7OKbZ&@__$+Yuz
+evauDRp3+$(9ckDmbL?1xk`8qsC8N5cWN|8i&vYh0rfS6=1)dL2IQ;$>HL66UG?T4WaPNzic2B!BkM%
+|v+JX2FY9rkGarMq<8sWm?byWHe$?=(?nX;SUn2V*9usyvWM98Hyjn#DA1J!>_+KZ1u}vt(Fd8iN0Lr
+Jfi%zT8(I_KffLlKuNDHT)jByMx2fQ6|2e?I^24W#!wqcElQtEeU1tMM<kkek+>n?Hl57*=?_8di}le
+GTb-Q+1c6;Rnr{&54Af${XM#F2>xAE{S6equH{<}zP#X>z<{Bt`=TkB-8j!3s7!BWbYpddJ(j*>?_$Y
+VZ$|q)gGR-_gS%eqvg)|~1i8=u*MZEi={qL*#)`fpEBX}Ox=!iOPWSA-nfeBGcXEV)v7O{_WB4Oex>J
+4R|E+>Q%J=ui^L=-249IDDM at 3Kj;|>gz67jE4i at m2ja(DAy?K|YR{j|-O{{>J>0|XQR000O82?eW2m#
+>-*zE%JL)3^WtFaQ7maA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4XYb7pd7aV~Iqm
+AzfBCAXEPd4GOI0Kxz^Dy`o9T8r#LHz2FzYSs7)l8lD?rjVA7%85#4sxniq*8KY6^Ds0Xpxi*WE<$<s
+-efSymy2t?>m}o(kN)<5*DpW&$IpLz{rdAyKl|;MpIyKF_3u9YzpwwrZ$Ena==$o<&)4tXz516|Z(hE
+>K7ISm^Y!Ze^_#c<&#Tw3U+%xZ`|gJ~ufBfy;qANY>({TI-+Z{f-oN?y>8GNfzj^iH)h_uD&wqJ-{r3
+Ckch}o*uMdBt&i(t}K7V-s^~>*{|9{oKdi&=6{`1}UZ{PXHuK4=>+jr;luirht{P6tE^`{@L at ju?`<v
+Z&7{>Oc*KYzG>_UX^Bvew*H{LP<#e0}oz_4Nh6eSdxN{QmjfU!K1?Px9&8Hy_@;`qK~lF at N^{=l^+sa
+$Uc9`R-q at -@khOFYjJ`cm3kpE&OnOczgZ+#}9vg`{sWB-Bqt&{psDycR$i=- at bc(zTUt6_QSvLhW-8Z
+<J%vuuV22o-aUWw>iwyHcf^P5<(qH*)7y8u{C97^dG+m&eDuScZ}#KR>JQKFzI*>uAO7QS|8V{K`TcI
+`^^ebQp5N`K`TY-ndj0C_UHI3pzJ7l5{`q?O{`#KJ-v9ZpJ at qRZ^5xx->sN1g_4e-HU(c`h_uTt0&+p
+#vPp<lL`RQ(VjW4b})<1jsf%fmw{GNh8-;Mt9dc8;E-A^Sy{+nI!*C+kvdiBO?|GfKt|6^CUAN1chtg
+b&jUq8Hm{`QC0FLn+4x7UCF{Hy==yFYw&ee&BsUjO}*FTVKXw_pA7 at Aq$aPw#K{_??<wefRx_;5XNPs
+&_BneE4xUd{^+B&%XHdzwHvA{POc(fBw}UY5lK0|LV7&efj0}tKWTbeRBQ&lP|vd{L?@D`jaoN-~Zu@
+-~aB*&py7cFQ1=(>S8+cZ*}tj*TvuND!+TXd-9v-4=-Q6et#bQk9&CE?*_j9=KAx?zdY|@{`&dVM%49
+kPm%9`{68AQ*Kgnai_g1@{Ix^>{(AN8_2%t|7uUbPd$qB%(f1!lch~aQ at qMvD|MkZ&u2J at nUcUL)*Lw
+)Q+{J(O>f2rQuU@}>`|ic{%eU`8 at YCOXvdcbdDUV;2_9)l&hcEXh|EvG5&wl$4|C>hTqo-Z*moFKt{Z
+!w+d;8t>@=pw8ef(zQ`+t78z5_^mZoc0b`TF$_+djPB&$lhW54)51^w=Hv-S<BLwhzx=|M|_^*KhyjN
+BjJrUVi`b%`-#t?)l$-cz*Ns#{0`Zz22C8`TfDh?xR1w-4FZaFaGKCFRkmdKYaR&fBO9~S3hbp-tVb=
+ at cH)Lo_8P9-csjv{o)t@^?H1q`B;5_R7d>u(HvPG`=e3nPamxsZBX!0`%fR`?nnwg`uypm)myRYpMUd
+=G5TqKF!#P-(60aTQ)SnGx_(xEasTo2{duV$53Jc2`!RMW{>QR!_K#@NE?8HLzl-{Jv;EzSU+fQmZpC
+GtyMOiL_uJh5t^2>&&-s4=*3bXpi>IgEY5)AyAAkS(r=R@#pa0?WFTeWY^I!hqtIvP;+kgJzll{M4W&
+8L+cYXTjm+$E7jm3Za-8+pJ<8Zw=HGJ~RUw`(`Uw-~SKHDXFi)qD_`ReUoOZ=DXXHVDFA1}7CEnMQoR
+c76n!Da3*>KZR<sk#3($BV1Y@}lusZ;$?>Jz~D- at rW0##CXw0*(I>tC7$*l<;AY7zNooN?qB7LQdWCW
+YmFD<kq<tb`!-o#)V1P8seRvO-<Ho7KiO at XV}B7*PQ9%@l^T`rb_1iV{nOpHwuhLz*WI at E*mqs)Mac)
+vZ~J$(&RzNHTqY0Fx$Kra`dx3IPy3JhqCEDU_GK5^pK)1SI+y+Qy)`boqQ~yEVsTo2<xHMoKVcpA%{c
+W&f2!qSAMF;!zHy0N?{0qM(zy&S_DFJ>FZO8pueFQq4jqp at 4sG$6Yd?tf&d1aK*r5oXo`+nI-L<=?OQ
+%DNb?mXMV;8Tp?l0P7KXakw*>-dKexw>}*V6KC?~145Cv`u|evIIfv|~SM-=Nq(-Qxj9>Yi#eb%KJ$?
+|81sb4{LW@?0~lx0FhIZIQoXbQh1d at 3k)s=%VDJ<f7!FM;0X(CH8=Ba6PybF7?z~=hOb9 at k!@0xCEEv
+GPzKaZY+h88zbF%OQBeySfN;<Sjkgw at 4MbY@j~%R at k;Rx=Y64MrDUZfa0Z3 at LWxR=Mu|p=MhS33y|Kr
+wG)gu~HcB>1HcB>1c1m_ic1m{c)hW>_(J9d>0gMXpq~45O at 1W$M<Q}L!WE3A19~2)H9~2)H9~2+lFen
+xjV`7z{MD$bd+T+H|-WN&+C4-Vd$)sdbGARkB3z#k`3ilWd=36kM=kCMZj|XS<F`sr9fx+F%GIwJNIN
+Q})5%*#?l;mF60&LN~aIcNMLf;hdxW{78DeiB*wLfj(4`#Md#|&&>?e5)xUAuwT+Cx_RgDD(LSEumqf
+;|jO;YQ0BpY4I)Lw at kE3+#G>dND73Lu~(Q?K!aT&_!qg`32+`kiUP;g=g4^-|JZ6cWc|pUFCk5)4%(3
+?9O5yIfWKhtYPr1jo$~xb at yPycI{!?#i^}fi$>X#sDaTvb^{A^>_g4^w12Mw*|jBg1ok0!v-W4Sl9^Z
+R?qx-N_ZMdN+Hh`k#x at 5PlY<4U$FA2opBnaIo5O7tn2^^sxD+k-p6%D}!CeKm(?w&C!~U^L%HXrkzp$
+s&OMg-CUQ3>^!uw+ at Fa8T7yzzUrWxWlfO=B)DjT-{fplw&B*q%Rog>WG|IBWIsgq5I5J|6yy7G2cl>e
+FcI<q~L>`(LB74uTA(Q^CAlU~fOsU2ofVa at f>8>=$!<<9)Cg?UJprZrN{zXSR6QRraNw!M%2m6wLh9%
+E50N_36T5?SI;XG__Jkv6K12*|4m)upToT=+)g6iZM;FokbgW<AL>m|FKI}Y-q)X)@?)grE%$81{ZqT
+PId`Q>fIA;&k}lsR$`<s?qI!hk6UG#))HL|C+qx$>ANy$Ww%Otnz0P}Yk#vlh|00%`vGaWJu(l@`h#&
+}Rcj0}rgvL6>ezj`;p0HDk^?pj<HouRH9fL>x;?<&m2_Hg!*<sB{TTQ=j6FkvC$Yz$A5eS%F($$;M5F
+h-*iW?or5Pv(kMx7RM59L>JnRK{_k->dmZ%k<N)Y+<d`9yxyNX%EQnBl$znB*+P`f#Pi#_XiKWx8b--
+#9t0d8$R{q_cMp)RaV#lmje727_Y*)T!v{<AUZAH#u9E(Z^N`z8AiK4xXCtc;cQqOvH`tbG9wMRVc5D
+9(ylSrIEMVr50FtcbOq^{wNVR942y%BZ7PSsC%b_Jxulw6Zedn(YfWWJP2w_a(4^{z<WRw|Dy``wxn<
+JYux>h2kuabuW(<hh?L=&|bWj{anq}q;7aLT*>_}D#uvsXnsVe)~EgZ#BJ1pqzQXr?clOAjGeA+6Bmw
+2+KaOWtB>2!8LeF<4P*7K<KS%Im(;;eS%51GFpl8>6#K%Xu>e;`h6R|hA9}VG(_e!UEWDM4x5nLG{1S
+}ozEF|{xcX=;z?B8KvH)YJ_Jxuxqm^Z}VmQF)zEEOPVxDmu_$9c-0|#<nD9Pegao4cA1NU-YC~2><Xy
+8&0f`Ne>Iv9dc?ca6$l7U~+FgXpA)95^$&_VDp at RA2U=3wm~I*=@ZgTWj0{-DqIg%W_Gl{4Q4eo4b)Y
+v8hh%LXnRxMT^~7fRx(HSpNLV*`&3JT~yyz+(fC?Y0j)9 at +JR%LXnRxNP9E;i)ws+3?gFP;5Z40mTLs
+8&GU`Y7I}V;i<J7XR-Z~{RbsGCBaI=Q)^(PfsqDA8W?F{q=AtJMj9BwsO<|Sz(|WTZn6E6fr;D~N`jS
+!lh(jU10xNLG%(V at NCP7cjNtPRy!pXmzb}-?Gj1^$H?TsycX_+$Msj<W&HdB;FE85%VjLQixiT1y at Mt
+eEn6llbZBB6_+OcPWU$U5LtNAgFnL4X9b)&I|BM1~5P;5Z40mTLs8&Jfk?F)~z&bqmyklkJ&*??pNl6
+VdKLP;Rmn4}#jcA(gSVh4)&g8MSK1efG;>`rdKWdA`)AlZQ=9_zkP5=eGz2Fv5VP!cG1o~H949Vm97*
+nwiN$KT2Am+U_%2_!p^>_D;u$qpomXa|Aa(9xq;_k|Kbu>-{p6gyDt_j-}rFWG-k5=eF+*?}aX-o8+h
+;GqM>4ir03>_8E3dS5636gyDt<E-<!{gV9$C4poIk{w8PAlZRr$82?=*nwgPiXA9+pxA+82Z{uzqu>5
+|;+J$F*?}Z3)V@#>NOmCEF<TudcFb1CY;}C?4n{f{>0qRTkv{Knn~WP+>0kwieqSgFMmiYjV5EbQ4n{
+f{!KEJqj0`X`z{mh2<M!9*_Dl93gHM7>a+zEx2}WQ&228}jksq#Qt}6qK3@|dl$N(eb_N(XiOZFd>1S
+<oq49wO5Be<jcLP;<(z{mh21B?tXg6py`lmH{6opGDnFWG-k608icGB8^Mj0`X`z{mh21B?tXf`hd$l
+mH_Gj0`X`#u>M{{gV9$CBe!7D+9ANz{mh21B?tXLbS3k+zX5hFoNT>FO&cyBhI)@{E`7y23Q$jWni`j
+7#Uz>fRO=41{fJ&WPlN9j(wp77#Uz>-0{W4FBxEEfE9wMeW4^68DIo&eqSgFMg|xeU}S)i0Y-EkT<qg
+<j~jkTfRz9%0agNg5?};gY~T(Lc&-5jG$eFjQ-<+5;n^@A)62qjq22{wf?qOlKZe#(!x&&Bz(|0R03$
+?x`@+4zNPv+5BLPMNj6^%*w(v^=tOQsIuoBpl03!iL0*nM02{3}y-xo at NkpLqBMgok$WmzwNNr06AD*
+;vldlFzIzzA;czEBd31Q-c05?};^Z(k?@M&jll7Jf;9l>jRNRswqxU?jjufRO+r0Y(Ch1Q-c05 at 002N
+Pv;J<BNq~5 at 0333PH($oZA;lf)P15*sVcmK8T(Nk?+u{3@{R4B)~}A at zBCA39u4iCBO<a<h~Rxl}qE&
+xePABCAmy4lmH_MM)JgkJ7U=52H&<Xlmsh at JxMT<U?jmvf{_Fx2}Tl(Bp69Bl3*mkNFE*$;(XT&RuZf
+vSV`<jf{_Fx2}Tl(Bp69B0(-b8BPGB{f{_Fx+54#%za+s*f|Ud-i9LZY*)y1uU?jmvf{_Fx2}Tl(Bp6
+9Bl3*m`aq7h{NwAV&CBaH!PY5*!G{?SB5{x7mNidRNB*936kpv?NMl$2nyZw^=2PMHuf|bOcBp69Bl3
+*mk2yFI%NEvuT14n4!2yH7w2{4lD9yk0F2&jFbBv?u8NrI6CBMC+(7 at 1&Xf{_VE;E48Ra0xES<&0awF
+PUIvf|UtYCiY~4kqJg77 at 1&Xf{_VECK!Q;+ZRfJkqJiT at k@4qzsC)#cwZ<9RwniYHe*{<N`jFIMkW}U
+U}S=k2}ULunP6msk$L=*Qt(SASeamDf|ZFqnP7w%dtWFCMkW}UU}S=k2}ULunP6msk$L=*Qt(SASb;*
+^7fNDJCK#DuWP*_iM&R%Eg?oXK2}ULunP6msk$L=*Qt(SASb?P&FpB#^Nic%{yDyXkBNL2FFfzf&1S1
+oSOfWLR$ej1M;g?LXGQr9OD-(M%!N>$76O2qSGQr3MBcwC-BK6=>xKu8U%Ne(dU$Vf;0xJuwEbPewBM
+XcyFtWhN0wW8IEHJXb$O0n^jKF*DW$=t!#V=W4Wr39iRu=XI7Ij}J2}a0E44A@!r$6xU2Oj>=!(U(oW
+_7INmz0WMvcSp$D+{bF?8yQngbe#aNied&$O0n^j4Uv+z{mn43yiGemz0WMvcSp$D+{bF?8yQn3ydr<
+0^z$almsISj4Uv+z{mn43yiGemz0WMvcSp$D+{bF><N_ezEBd3EHJXb$O0n^j4Uv+z{mn43yiFJj~jl
+;0xJuwEU>b$Cku=$FtWhN0wW8IEHJXb2zjSL%4xv*4hXRAmfYjE{gVAh;giaxap_zJm*A3ICKpO>j09
+2JzEGl2qEMnx;`k+HhvU26LdinOLdi<WO36yeO36yeO3BK-DkUl<DkT~v8YPZjQg%4L>ur>5lx&o2lx
+&o2lx&pjl<bu3+^bWfQ=(I%Q=(Ji_$6hB<GbEY$wA3M$wA3M$wA3M$wA3M$-%t_C4v$`iJ(MK;`k-oo
+IQ5ELCK(GP%<bPluSw{C6kg#$>d&1iKIkQA}NuSIDSdl;rOn1QgTvqQgTvqQgTvqQgTvqQgU&xMTtd;
+MTtd;MTvEf+hW`nB^M>Z3N&QEa|N7MKxYMXR**#tIL;u87G%)^PC6hdgDhH<+b`L1@>7sV3leFSp{Vp
+*$4|XZJ`{?U5U&(-53t{umj>Ywq~3zm+XeMd%DukrIQgkV`&698iVxDTB0=_~vG85Etqu0 at A~q=Ctl^
+b4g5=7SY!FWsKB||KcPcwhe!5sjD#oW0vtG~!mAIi2z+c2j#Jew;ocq=rH<j at 7GH+^z#Aq9Ltq`hM at A
+gYB{M1S?S#Wv^Tv;KKYtBkiYJ~vdVx=oGPDEyfUb+ZjFCxjpGgMdv>)n1y!Q at m})Qg3uK)qfNY=wDrV
+U;d??TSYQ)3jT;>uoS@)eQMXY98*bGEJ;^`y~ZGs<31>@|y+A-Ee6ek?MsXUT~%^7T}8|zTxX$Fpn2s
+RD6UA6;|$icNyeySiB0!$P4GI5Yq$+tc#er4BJ715JOW5gD-rsN-SKlq7`DTvM_W=KkMCoNyC6t=0Jg
+AE-VlgrZUKXHKtmJAFNQs1unE;Pn#({;?j$><V7TRVREgvsZ#(7yN*f(Uf^;XcIqNvyl6*ZK`U6yg7q
+jYZG})F%0V)@JE`)+gYVnb-486z!<--W!YEc~{|dwkxz|GUTrq+TKkg#tsF=a(!tSaT=28#;yYV)k8U
+#>KWrYVX%<+OdTES%@o-eG?7Yk3pA*`_P7p`n2cqzCp7a>4dH_o=tMPAP*pwXT0hVyuktpse79PJ=Ch
+>8H7qOd$)4Cu8?dyrp+^{6<G)Ene+2)V1-RXDrCVpLct3!!O{QLpeu<ze=STjQ2 at BHC&auK6?pZf?7?
+G4)i*5Lc{efiAp=LMjR40=renMi+avns9rVgK_qnr(>=%lL$I%KY6m<BJw!oKFO1nuGRq-^I^7Wx1$b
+oM&~wxCW21JJ`l`ac>mXs(X6JEkA2ur1 at 8&`3-~4V1!+=E2@^0DmeB&eS%wK%29F at 85X2RESMnzp^kX
+geyx4K_whx#&n9w$yWlk%NO2xcXXH)@&pmva57A?nIVLkXUJov?|vEJ>MTr{Dg3ApgF;F16lCWm39FW
+bY6Iu((MXijG0^NQW8nCMcqZ0*dqKwkpGdf8NB_Y2poLI+fO^)l4~K~l+JHhl#I7Z-V%YGMJ`tPnTVc
+E<rbPR6b?WTb0gM+^RXA>UH^5x at W}ycV*h0RRf|CVhw?z{xD^CJgr(w>?Ros+nA~{U{NxIN-!S&~lOp
+wYvK4rT8Mx(8y<zW80lp=%t5?Aq06p_}y{xQ-#mO6J~mo17=#0)VknK3r<8W67Niy6zq$HRC8GZVtf8
+n2!V at ahxKm1qyof(H(LmUFK$y2ArzLo$~ad-rUr>s at fsSwScR(YacF!DEw+31yC1e+QlY;(<WX at gA*o
+du>;kz_A-NlmTZu!OMvZZ+cx4 at Tq7beZR+tX^WWC!jDWR>yY(Z5N*yoFQ<RU_=<RJ at b-%5aR!9W%=zJ
+-{%sO%zyE%^FZyZzLOz67VLsz__DbPtxS{q!BTrb0V4vKxg=O at W>-D0BMpcQ9a(q=j@`apqAk`Vy2kb
+=Vj+Vb}*^;ffh(-Sy&34uD1OmoU8Haa^e!Lq*8R0-tf4=u3tIf`z%?^Q}Tbm*Z_=zFDX*5;uj^Y9;Ym
+;lVpemy480VdZG#1KQ*06!z-QxY4UDEf=}OOFaxrMIBBitQdsH1@&-2X<t)=MCJ#=xuQcUWc at BkDeJ{
+AA(So<O9fp}3B97D*O>G#wthHqaqqgzxq=I=-S#tFuMP_HtQR{@-gceNhJ@%%d!l5IL@>)U_udF)?9o
+tE#|@^kK)Dtd5;)d^w_C^2_wDiM=mxP5M4)g=m3(Z0Dyhd;c{p(y&<C!-9`@E;!4ccIC=)zY=<5q6&3
+d<AQV1|B*}oRY*R)p`v%x8`zreRCaXdBVPwH&!drc>&BB|z_y6Z(>qJ{xJs(_>mO0HlmFLDaSX^o}0b
+RyJhLNGQR7O3Y!pjH at +C^vq$NAXm!>&?Dg$4jS0h+^QpFS0^~)JcJVE=9;N%gIy`_+SgMop_2+-`2bR
+lEQl2;K2*Ruudwrk`KLDMlZ5m4WM*b=T=UYe5;=t7DI}Npyk#v?T+cpW3uhcW3oaGTX2ys3Pg4VhU0>
+xuP{?(YCw4q9O?2<zoY!~p<=@R-6OfzH~Od&fLw5*751*2K*i6x<Aw*u$_NoxNVRmb%awTdYT9W=WFD
+Qu_D_fdP<a{;p;GJE=K64L()sf8z_RhU0<i1PCeEj^L5e-xj`cY8qI)H&)9@&oQAJaPh7*CX2T2kwVo
+}st1<9m8D)G$)WpuIn)iCTk`EFFwPt`f=+MwD=(VPpgUMF00AvNDvH;c+Hz+Om!wt9RT8r?Oj?bM6zl
+~}Z4v at 66w;hu$@Q6=)MFg>NK-R&$I2>M9ZSMqwHq6!E0f|9E(?*83=NxgrMp%G#{Ga+OlX1?J03$#<?
+4i$&2!G&JBvdAeb6vf4QRqNyK-|d&QX`n(x2^n4tc5pB%dX1txYD@*ySV@=^e7wR8y)^F7e-#3*f<5X
+*_u8Of3S at Lq4oeQYz$O%Z1*8uZzPJ~C1uS7d76kxkouM>Xo60ymEn&p=cfc93ej{;Sm=e_}6Z+yJ0xs
+k)D$2Er+@!#bT-HmhS}>&-8iQ+|^`fGCZOq=wh|V>VdscLYr75*^_JY-+`R<r929E^gwY;!yr|PMB*B
+jW$RO-n*o~|?xx{;|_ at Yhd}frSNKaUvsJDCX>i<N!rVp=_yVy{PD3FSy=fm;_%^@<cZsCkgYy1sOmQQ
+)JyL3XcoQ6+r?%7;7V|iK;N_-F``J%By%>;|tUuwHoo*jRa at yFaZnHviblgR`-Icu#yVCbQJRN%2nMf
+DW}R}R8j5JA!&kNFb&-vdUk;kBp4t(L50)9`{NWKTPTXvbfu|x`z45NfD;{R=jmJ{Cr3zemGd<C#1Df
+3WMdmGtvJE3n25hfJ<{g~zvy1u at js0tu_9r}g6 at fbU9NBaSY6f-jgK7<3SgoOZp!6ait@;Mw_nmBkqR
+qmK`B*1@&%hvS at tW&y~ZJ9urb&t<4y8N*Kp4O9zJQ@%Hm?Z+b^kFEK&yri9&VV!jFLk!^~>7+|NMY$R
+$k&8KobD878`tUaR%^lMDd<8AH}xFK9UiPi5dbu7e<k3WIQ%$IB{s;*cgo50p?0tDm>sLHAl&M2m7`2
+tmXa%voj>Q-YLqA-bwKSe*$|(RT-9*_63Wc`Hl<*+lEbFVP9aZEGZd3f)-4Fj%qf!lcs~I8JRC=qsdC
+ at FpGd(0A1bIygi3dI6`pq`#!(nyi^S8{B_k7_7y at 5h08~v2a1lcP#v6Fd{t1y>1 at eD^E`{vccd~4MNr
+Fz_LAza+##?>sK1G;6z~h>%#yHdKZ0asb{|k>jpYqED_NaK6E9Q*-*w at C>E~JLC1^4Sqxb|mlRZQg$}
+K_I at dhD{+Y+<UMusWYDn8r;zBVoT`{R8o%b|G7Ay_#(RSkRw8PvGUAcw;XX-`wT3r+&0Seis=E?{MR}
+2}@1r;(n1!c+=k`>D}gyDuBLoiex;_>)V$akMA3ckYnR&bX(v~6dC)vl<PDp`9QOKU*9RHwC^EQ#n20
+4pl83)kOzw_nl>{|Kd9brENNk`^o^ZlH*H8rdIzA}ympnmBK%-ggC;yt>=F{gQ$f>B1{(51(}DRCX={
+Zx2O3f_Zlqko9Y1H8C#qK5mM!UzZ*`^9|i=MTT_o(}L?;Nuk$t-WzA7y$=bX^<bsLudeVwm5#5FwS|o
+DWfQ4azQm|vxfr=*;YzX|Ba$j^Q&JdApnVziLT{Fb^M~3*GCHP<RJ-*q);C-Y{rjS>SR+V=1oyI5V_P
+mwsz$m+2S+kU(hvFnJS^C0?>Kx3F5*L1u2To$lv5KD3*x;TvQ*Xscl2<aLbnPJoGDi3$B6?fy4O<Guh
+XIEY--U<c83xH7(8uN3XbtXI>L~_<#+j#MQz?jm+1IA=w2&Y^$VSDQD#6^9wi6QN0&`mGu<!)VyQkls
+KCxvV|+V}S-b9fgE+t`(Q$4uc- at U*MXFfOokate57Amtt=-SQGwaoX#RqdW`>DO#FDZBwjqd5FO$&@y
+A^mbqZH7TARv#y+42vJ$h$+bvLNr_`7OsBsrWM_5nXYe|K6T!1IICDagz%X8=FTp*S(N2wwZ={mO&;E
+{!Ss^pIeFfS?)7R0>-c>r5lF7Hc=A)01;U;(Rf8_$<ALJ_P&C^>%;g!mY%Mn)(7hJaf(7=ubmLQ7i8E
+tFK;rRY;klM%Of_)TI!j-(c)L$c1A2Hwmcl1QF)$){<TOiqwYwGOgxtijxDMEzYCZs~RGE3DIq7xM9?
+q51zvx~I9o5?j`rv<w^(BCih&A|<;>5MRI9<gV$}GExf(kb4VwGx!)zrKFk_(|qohRwyP6!<rq7@#kp
+A8q-f+fUYhaZx2fPHDrof3lh;0)bsT|%tMQn;ZHA9|W)!M&teC`v1rlID at L)5{@Cyb<?O;-uYvHM-ZU
+O2?jF<ymx>iXI~^!ahv5wh&nld0Gs<8z at MGROIXzad)Y=okaIqApsiXc_Wp785O%LY8kUOJCq1wxIYU
+qf79<|onP+Wa#WeMw_lC!wYlp|t1#S@!zfhg7I#KEpyas9;n#6VcGos$O-X%RVi~MmK at noT+b^lZfXP
+4*qdkqWB{iY-iU7c)>Ly|WdQ&(X6g^}(Knr)c`M#R^CGaqk5H6Gi$rnn|izT*T;V($d+RxAuoOZntmI
+KxyY1lkF?Cx>feo3%B at WS=HPW}Lg6JDVqMQlhBi|HlAInCAQV$oP8@(2~^)k5 at B`^gtpbgxB*0gK$yG
+^V_q=KBF1A!%Y{f&n$f(e?Y-`bP4rObyb2<hgkbbgxyq14Udnz=R|$%FfYY6m%;U4y8PtjnceQY-a%m
+D7v?hQtigWbf2*6#V}RJqrvDEC)fcSPa_LOV~Dfh-B>8`p3dq6#0BNq*HO{EUfrF`^h|T6vP;jD)0Dv
+pryq+9L%`H2Mn+ZBO9?kdJF&=IT5qub?Zl$^C3yd`hYttJXgf5K(x%urR_l98xLV2>$Z!)q-|-u|*A|
+92$N3 at zfJ>Qf##V3NC4BLeFi2;hj577LX)5Bn0{2!PH*bXQwW<5Zkd|tcxuje4fv`L7p`*`9k#&~^7|
+`Num`V;H(huiz$Fb;MNk(F)92tIkXeYL7fjC`0G4e3xaFZC3PMT75 at x~p;5xeTyk6zKe7PCm^GTFaVF
+s{{*1y>o)iiHO{mMXQdWTUTXC`J%x_U1Sn<JezxuSG8dx1v;YQV*MeCqdWB8?mYuwo6qa0v;18isvG3
+;nr2D@~v~M=w3_8S``z)q&jrv3<Pl?O>H89F3=(s-F8=wTWyZ{%3;)~?|jA$-RosmMib at Ovqly3-DjF
+O>@0Ffc`qYiOh~yC{rJhSmoQk at IQgN9?)5 at fR$PzyS4CkKl8GmurJ0A6V)J0Z6Ru%EeDc at WUsfddL-r
+HLHgvBw+|FJMh4f?i0aVa55rX^(2EU?aW5*m5!2pvmhD?g=Po8awk5eyv33=1v2Ib~nRPcj3tP-u1IQ
+8N{CJxq#wpp!#7`tbiDFc!XRjWk3 at Fm2I#UVahdF_Xx905~pHpFBg69LD+;f6Jwv@)eb?CD`Fb+?y14
+nn<aoE(G?MAs@~d6<xriC~q0{RtED(|j7vr*Re!?6YRM>%}i2h0@?{plw+w85z_2?CuHGHFme#7 at G<f
+vzlO9;vHwhtwUqp^}?4dv#|7KJrWz>jAMw7|8fq(i}iBSjc6iF$YWWT$uDO#rpeg$BLX_(0M<7%@VG{
+1)a57fK`vA+RXr7g7L<E%b)Maz4umPp%rjGuK*W04CtUR~3D_`O<!m~|G&B<h*skW&xKL|KX)1il<u-
+EjPAp{2O~}+s9tWdcki!-hG-4#yEx3l^QV}4DDIA(NQXG0-%9I#Ygi{6np*tn17rrFVi4-jH!)!lvi^
+GE<*Vb!tT%b-yy+{sn3B3#a7dh;sM<grr)FnDy6wSYxL3N?(W{u$otBg$3MJ1yn+4fNB!ZV~9YQoQTw
+->&IgzZIIu(JKKt69Q_Z<;s67zKOMJnn)Ozu_wsD{qowM$c2(!s%ahuSFl4lMRAPg+r)CMjX`KSs~J$
+)xgS0WW5+a)<JZ)t(tl1cfICuLM{+)LI$$QbgSBd_nf->EO$Hu+0tsxMt*5ZnxB4PtvPWayW}<=w3Ei
+^#}C)w>Is{xmTobb<3 at 27K9BJTX9#P*BRJ*sPXD5Nt>LtSdXSV?vzd+zvABgK0;_nGSBANMxP0Jj^dl
+gvI1zVy at k`hvc<Bov?W^Q;3(s8GXi$p2f?KM)o<1ISdhUWFh>IEuR2=Dc>fL at xn7?HeY-s5&My3j9jW
+%p+V^3OT8Lduhe6docV7h(IB1=!#<5zPU3URmGgq+f%kRz_G)f2 at CA7)c=8-l{4k#X^+<IiUVJ|_+!x
+ZiR2G{>(~>FfdO)#aQG#4=8j_rt`aA~d`wmmqLPXB0y*6*tt2zJ#3{wVB=@L|0~V at l!dYqvH5?*IslT
+y-5ON8esbC5`gNRobN|Z+t9r>vXxcdQ9qH8tYMCWdYecZdI-dp<}ct8iy=SBhHI%W!Gx3(2Q+lA7Ylo
+}<ZvsxiD-bRY2Xeu6hL-6gOCslPrB;rCkI3diPLMwITwXPWoWNVvumFmjh-5&ntp)i at 8!@#u(+Yx%T<
+^XF1PB*hSuQj2lx^a;+N?&!oRCqsF;4y1-B##fU2|VV#xU7_h}2)$ys at b$?;3jy<W_>f?l|w8R{%v^>
+L_pGb&76Ge86x&7jv at lx`K#E2+%_U)}2QqZ+!`Ldk*$){J;mv3jV1Iym})eV+SCnO4M)mwXt`bsNX{k
+n)!j9P`wR?$tDL>I8QQApV7YF!CEFxZyRLygim;x}Dwwn24062qgXT_Dj&cws|}X0B+>DB&czE7$ZWb
+G7P7x#3A$r>+8euH6MU!K-yjNp2z53FY|BgyDdwn$A}%Qg7 at YTL`WGfRA;5TCEvUZ>y<5GS3)VK9d5g
+h?zNgcM3_(&%bKNQ_uZvR*nZ<Igrc;NodV5V)Whf%t02)}p0}SktEqcEENWsTR8 at zQ)YCoW`*idaDKV
+|NIA=WyWGVD&($}{4^aHxr-efFO8TA6XSY3Hf^2adq6~eiag$P*c&ck)w{D6F|*!AX$IL~=Zz~reGPo
+qjl9LI%vLnld09sB}LOggF6wv>E9Y<cz*TwV1Ps<_uTbg$(s>`811g99DW(Cn8y&KI7rCta{!DAb1L2
+t`C at -Q*;Yrnbk43mdxELayLas*G;>Qc at f`9TV=r#9VjLaFtLKVa9j&(v+SG=PCip?Wdx9EpTO5YS%Gf
+N)(u+Eu9Tm*slC%3St6sl=o`VWO1t!U14|QLEWpwx30Z3q`VDkw&sx?vcBwms>6eM!v5lsj{M2sUuKo
+0>^<Mmy%x5G)M<ce_Qot>XmGLhM_{k=5+7c9f#>85lY2_8m;lw3_+2k~oaIDM`v~Yr05y~Uj2qB_JZe
+~lW^f9p)s{3j+c7-IjU9ny-18XSYgsDzG%q^51~x8t7+hBC4xQF;FE2RR!a7*bILQ8JyH$Tb?*83=Nt
+?&@b+nkXE^V$ale3Acqy?5RRn)^K1NQX9sji*&NGdtugEMunRSHiZj}ukEdsRM+bf&9`Q0^z|;qDB=+
+TNttoa*uf3Iy-<7~ShNoX0p$I_QW6>NtvM7j_8`O%rpaSsQ#`mBPgIn;W(J?)XC8>ypO7Y{4E at gDAvA
+WD9_Td3OnFB$;f&5YyzKJ2)@Oc1`H6lYeXKUb|-i4s8L*kWimS70d>FAjO>Jr10I4K#*+0TDgF?F?~7
+D`iAbcz{Iwt9z_tT>;mfe)eS1M)6^@~zEm~%#6BU|2oU6OsB#>=QA787O~qwM8a&U7Ai2WPSNNR at 4|6
+ReBW1Aqf<rUJpHkW~Q|y~5M-S7`y%y5d?HDElc<4%nDmds}9Z1)d+JlljCspVPKTZ=DPx7EAuh-DMUe
+hs^%0#*0iDl$c+hI%r_SF5*%~i(7)*&d&0v_9Nt{}8+M{m^By~>TKAkm9+kBo=lAfdlJ?#MWjU1aT{K
++pa<vw?+V*!!+mr at d2siQ)A_rcmm^4KS=6^av|hHQLsnC3LH(aN0Z~9;Tn>7?1AWr`D$XakOHr19{F_
+vibNsDndeINw$E{obzewEz*J+t2**ZFF?yZ-_X5Y%D!(&5VYy>*PXcfm~IV#$e5n01efHrZZ;Zog)HP
+Dztiu2NcEGlF92Y=zSw+R2YZ^Qf!-|2<R1q&xB}BelVOaq1;^pc<0)S<mD1|y(bQ#HTd)y(VIS~VtE?
+RXd_CHMrB!fB5~%5kA6-R5_gWvSX!*{((@BMz)13-pF+RgVagBD5fu1k`FyFF_TRZ{s%;TkBqHC{)O%
+1%Ky%75l4Ah6?7J8e8HnNvEZY&>=8%+hS=Ut7HcVdeKJPeVzp+AYgu4GU-O*Pj?)aE7#^XSc^;!Kl3#
+-K&;peBVGl5NzhUvicwC^>$mY&H)GthfyJNAn#H8IA>j9i}Iky(oD~$~N5g4BacyERUvsM<-aBg~D8;
+ZMR6sd#XajARQW%AQ_b@)31f8;B~hbzXZOoz|1$-A)`mRJwq0^BI*S+*P$YRr=nF4ltc^)EM`|oD1C(
+VkbP7bLG?yzFvFnU6cwzb={uAK7o=3dIVtXS(^+07Vyd}RnaXzR#V?_bYQ|G-1dc#EEGm5ys^rXku<$
+5{z*00K)E at RZo&@pcHP&74_Diap$eY$&rH5;}QhV1tQJ|*}bHWCvS|yi-or*joGb*@sHeKB-SZ$sycv
+#<uD+fn}5t5OQEk|mkH*Z49Y0^z2xLr#<I`BCDPDl4z?0Y1n4eeid%a_6n68F_DZDvrF*H$yL)(c5mO
+!g8Vqeg1&@B|&*YeAAzh^az#nAvMc<IBA_RqjhJ{~_}6TBfeAG>2L&A*P$XPQ43WSvH}Xl~JFniq<WQ
+`cc^WrRvNFv4M=Lz&37DEzbP8^JGZ-w*6I at Aa&*j5lPsiYG!#fk>?uXmcB5J%9@^%z-j?-U0{*N(Z$o
+3>~C?W6pONcDr+ySS(WZqo4k%|rswWagW}9QI+F<Y5K^Jt`^kDSk8_egSb*xn?(vm^6OyodLzV@#=dj
+sb-k#*`P!(Xk1z+&Q-TmlZ8E2>3JaZPqAErk!60V?f?r!-qHVD;I#22B;6QFwV=sEwa7xg8|rd;QV2H
+UZJ?oPlKuzN~f`n4P_jT-*9QLa)38dhW~``upn5>NO&f`fEnl_JGERT~nzjdC*(fvQJgXK_QzP$+X41
+6Y@%f9U95n`tY~>nX0nrX}4u2N&86Mc|>UO%)GnwB25zU+*l_MXqtzyZw?XX;D=#84Jr-<Fu2FZbMU+
++AbMhLZPBc4&%Pui0X;cjQPpGb#$-QV4VbLSKp_<gW|9mV!8i8rSs!(z3!{?#B1Fj$DIDs%UXB6_$BP
+~sf3#KY>Y at H4FUlCFh(iu#p-ubCoGgCBU^Ewk;zE+Q5{`;_q<mu{Y3!ZmG`TiMbT8)(^FY}Y8sL%%Y(
+cp(ce_y>is*D%Axa)-SNCvBqPnOQ8LogFh(l=#OWj+P0wn(LPZltgUetU6v;U?=jy2!-D^>MXpRz-Q;
+s{q)9Z4nRrgd+rKxy!MFk^7T$O4hS}6dk-RIe`=VZq%EP$q~>xrM#LP-bU*(va>4kHN`vpm&KBlti1d
+5M1q{@~2>UeRO~$kM6;mcX^?4d|kpo at M_~!HbO|T^QaFXXE514dM*Q?|wjE!kXIPayZ_RWx?gf=mzDH
+>!usJxitc^qHo2P)TZnwl+Vegx4Yh$*Y(lsm+wD##N|hy{pI=Hk01Wb%K-lL{QB*`^PY&eyx8D+_2$F
+#yXXBo-mvh^^M~iJJ(vFbAKrcc_WkoyRmcvn*3ylGWE}_`imFS`UMSiZjv#<22wb(mi-=+<wTM~N1Fw
+6K6sd3o0iHnMvIRH|1RH?`3-aZiH7E#3f{b5~atL}OATfe9KA1&OZzF?vHb|%kQCBedfj&FP&;^80m@
+LNW4>ATpARFxJ4Md}X3^Ak;*j5<#roWDOHdv>F)M&u52aZnw_+ZEbF-NdcH4q*M?1Dg`u{%FlM1l-qK
+#7M(B2({nZUTb4<Cz8_S}1oScN=6=;+#e5y*R|8s-y_+iaV_t9m=}Z^5$J{CyB?N|78y%7AHOkobK>^
+dRV`}V+ddqRTYg(sBCH22!BV0 at El&#5zqF+V~4fDxHg+l;Eh{$b~SJs2C~$K&a5>zO#xO2kU$g`)e6p
+G8XfU$a|6UW6synd-FaqC*{IT(F6!W{8tG3v!=HF-oDflUk~SUjY#UOc<WR7#K}M!COQLG;;kc%VLoH
+xhbGU7ZBmo;%I{NUan(QOO?B~$f>F?=5pMF{g?MS<Ya6t-`Qv!%BqIz6E$BR^}v;vErO)?$vY=aN&?$
+0*Kj?oVfIe@}xLyS!8 at HXfnWV?hI3h5%wFka=5$Q|))pvegqlh%Y2^Aj;rkiqXw04|LTJqX$0@!<%n8
+uUcqNeBC%qCM_<gCLN8L-G>74}!&^;mt&I3X`;fTL}_tK^CmlBa`+sOgCAo;kMj+ULc+gi1UshC7 at UX
+9x$4Us68cuC?oKsJMw^*CvHzZ8(eT8rr6^)M;zA?&qi~1L-%7UH~0WkP-?Bq at X=MefNbLmSxV24IpT9
+h#GPB~1g*TpV%Ll9fG!Ew7W}~=EbgADfo~Rga2*|1Cm$EhUc#6-BFzPs`L^z04e at L=Cjuk01ePs#BjB
+_)I>QHV{)<)u1vtdcZ0OQ_hA?+h0U7_U7m+K`Z#1h!U62l=Ehj+_9Tx7}h3x3*TRwb{ZoS-fSoz)F!M
+I81rr%Y*!}E4qHPDsRBE8Vb(zN3ELIpgmhz)QscF|4*boVdL4H@)a6ob0pD<>P;7=&#nOCvX_GM8si2
+<?Lpp5`2j025d5dU0;B1@(mZr&npTFSfu8>C8iQSIj_z0_`w?frH;5sXDrs=1CUqkR$Zl?gvf}!f$N&
+#ewG(coU)d#yWQsBV+)&9s^c4G_Q)Iv7Le0?0F99=!$1)R$%oS7B)0s&BsmubfL!hOj~Xs%fC!RINY$
+|kixCq_6+fCSBp1o0!DDUrAdC%Q*a(0>_e1{!=Y0!Rjy*dbpLVu0{r$o<a9?o+ws|37g&NKog6#^#{I
+5b57}^Ah@(1!>NfdmuEn>`w08FcA{7;19Kg_;1eT~_jC>;k>q|>#1LQb at f=;m56?7S-3^_q;R#|s@@k
+^Qy#QSPU9EPDuI`1*sP=C=hYL2RH)9SLc694toG+_1b!-+fM**1M&!ti5CYX6ph(&x)n)jzG=Z+GPwq
+!7doo*miGp>G}WY*+W<=@n?^0wHCn2Q&RgZYa81VSGdd<oNqRtQ&+&fwvspp!Hsd5YKk9l0mo`XyZGv
+e<%ZYS1-YEc+`ed4b^=Z48!#WJY5jGML&Ih<^|%}K&}y8f14RX2;9ip1-qUC?LnaDiEfgB?uK~m>9=l
+?$Iy|Fi{9>j&@Yi8o_<H8napTI1J^mafbABda&O2&iFUJvwGq}VAG6=}B2qyC-4HN_`V?kw2L+9dtbs
+J8tD7}3(N4XrFvH3*7e10dzR3~Av-QkM8Z$&KP0;!BMIfdGF}NCXT<_?LLu|hK2 at pi2-5z(nh-Yh&a#
+!?>7DY%FeKD9>l^@8kJ3LZb=U)5^5T`w at yS6;I<M>gCXFDnT-V{m!Q^moEh#M?cL(vi4&g1Ab2~Ftl)
+-_;_wT7jb*rt`A>Sa^U5(O9<w>0TlVzI*6K*wXBxM0JZwRs0dmCDOGz6DU;BoX4-U>8kv1z7rcEOID6
+`T-jrHp%<&AOS+~AQ%tA#?a9;c!4JG+3)_{eo1%Eo&#lU!n8^xQ-mjMPOhlEd$IW#3HP%juZfd9!vRR
+4cn8CXXQK;Um3np*F%?RRfP9ZGJREWFzcjs8<Y%-5!vSRw{T#kO5YL9Yte0mmbfK^x5;`u}+}TO71v_
+8 at _OrXu9DXQRqeI>R0y;REEKF5VFMbKCz(6_?NXG)=F(6`sNH@@A1~U6#*HetM4q at EsG%`&AZyV%^dm
+i#>AfD~+N}<O)HnIDD9i?MUSu=)1_K_`aJ+<rl8F0Ct?B{lMGiW95dhtufDM<r4<tODP(e{xl at 8t4>$
+h at Hk3nZFdUyvktkaz7Qx5Hg7<A~sS1sR9p at VFQnv`pcSSk*)jF at YQ>Ncsi2x`0>?Na1j=sj3+EYlV@~
+ICh6uWbO7cl6sNDLFu;0LeyawU}MOpclT9woitn>R|(SRF?`@7PUaO^dmif{;9CrD?Bik;Apcv~UZ(K
+yEh at Nct`{DHGSt|Z{=|gb>kx0p+U>=`@z4}DRrY at T2gvkch_(34if9p&V>q`5s698t^RXZ9aYH=Y(GH
+R}-oNstM~;W1<-eHGu6c*b!i$Al4?Ma~7Pq34hc9JD$EjDp#P$+wK@|p^T(Fm`GRrFDPdoj4zU5FU0g
+yfjV at U?$p`7E8^t>2r_k*4aYsv5p2TOD8?+IR(PDfA&&!D2vU0v+qQUk(j-N+jDeh%B=rBc)j-ME~`R
+K)%@W6+_mlGaB55)HZu$<-aTSfHHhuJcMw))4{mDxh62yEaG+qut>LFs|;}NdL4Dy+pW?j+=;I`q~aM
+h;!!O{eXD3b at v)+v^6;dD(5Ub{-u&a?}AiZJBJYB?}SKZ at XiT?u&?*#yrFm&Bi{)4(f;Da;cdB-4HpV
+7spF;uo3q<VG*tg&@dRD&Igl}k$6c?7vteW0M9hAg%8rLX6%tBb+;!iz+@~blj`6=Cn;X<a6?>_TJBJ
++b4wt9qG*o<j0u at jTc^ObPfo`gi#EY;q7<SgHe(vw<G!#fJNAS!G#Is$OOHBbZYBPu<h1idz9%q%@TS
+c4^Fz*3t9Z<0yPpy-*4=B*~_^DnFjScN2_tbWT*3nHhip{#U;mS_4r*x3UlEcG10_<Ua3G%2Mf0B2&&
+<{Kx{*LFDO}mk(2`8=NCx&hqt6x{s+m)Gm7-IFuR*4UG*3IFev7vLo>=kU%ZyqWlf9s(`aEncDk**4l
+QDC!Bgef)*E!%)14*xI|&+ at B4tI%)`ngS($PYRVUoQQOgEH}*T^z}fbrOr7B55HweiM!tIm$ZIvEZF=
+314}1+S}&=sAgm2Vbi*Ix6%r|TM8Odbi at kaL9p2$WlGL9H7$?G at N}dV}>jA)VTvU%a;R`&k5X8D)kXL
+AI;y!$TcxWtX^dLJMWWgdFx3Do>lvof9gmUe}(9y}M0d*};?oXr7=Dgvdu_64 at S!q*6mlbhCAKb^aS;
+W{{T}Z!>$&;7E0=9b3W5lyfs#rEI^pB<}@H2p7cuz=}=O=z)y-ZwOoj4cQn&a;vo(=QL2mY>aLK24zL
+MJ42U}-`|<`6Hqe6TN}s0aGG8ph<~?gzxPP#Pie;>Hor9+NVcb1 at Vm4hW}Oy3xm at 70yri7Do)`q~_sE
+c)7|`Kz9U0MjQ at fieLYvUYH94tANdDdI69SaME1--Q>a@&L(kQuCnWeCc`TWBKz)EeGaD#bFm73!qu7
+}nFuWih$D5nNXTNJ;`GBw+VFA}>ZMBDD|4Z#&`=2p)V47lkx86b!f3 at YnwH=;=O=W_NrDW;vj&2YSRp
+OK>e at Z}+AxA(pnC{5E at z|;8IBNZZ#So*OQM^dM+DEyRd#zFw==!{7o-%k_w<ebVjkn22Ht7te45%fa=
+`EF9=)C8Zm)jH^7;I!Mg?!y{>4ec8wwnuZdj`mgVzwO_`&krFiqi_dncL3IW%_qK>psQ(l-1k!y|nrH
+ww at 5Ex&W1n5L<lbQ&gj?s1#0Z#XV+$VS#0eoueV!eX&HspLo<92@}LOE?ieql6<k9m_K>5YGlPwQ`6~
+FkOS`+6j3(+Uo9U<!6F1t&QhFVfO at cuor+W07~THcX+wVuGcQ$S=@qpdYUQhGkEs-X}*odl+n~C<%zJ
+P8PnN_`z4;dTxI*!)IpWqqtp3m at PqDTo|<DOqQ|LAoxupT>hT4@^90jarTZlhyj<le at SH;*R=(mmM5^
+ftk033YnGEg_ZW->r;ns5#(z3MV-1^`F at oY?0(cupWCczIIVmfUL6m@|bqd#;p06Pi4;MkN-Q~Sej&u
+90z!Iw-o6NVpCCGNyS=b-y1?gU-yMwF at R0ANX)$2pvH+0*>wj<XQY2HL?Ohun}7wuhp-;ja)568@=Lg
+OLu at dwuGp5g^cg%{Q=iALQ_!yj+EP?M5EF_)~AAh=G;ak!k*m27<Gx7vO29%n*3mu92EY1kcM=cD<Ml
+ScgtecQsFXr)E0c%;!n at uG^A>a72wTs<DS44k(1(?f)X4?Tk^tJ$2}$KHWyZ%!6 at i1YiOC6H{>$vmCl
+7+;Sr$uUbJ`zW>x-@;LZMy`PdnD=p-`u*59X91<6}>Y)Y%c!W-{4(#;S1|DaV7cW=AkD?Bo2<&7(APP
+U@`2=A4G~CeHa6Y3-;s6jA-v8co&C6AG|6*uBUauk_Ys1k!F at 1qH;c_+38h%SR+TDaPQ;y6M*qz56A0
+wXa`VVYqZH6b)+3u{I4x{zbK<o~Q=tfQ>P$f1q83eek+P}B|i+Hw%UF$pZa2;T^o5j-xvY_E%cNo3Uc
+V+4X!C`0yQ40rRl3wq)5b<nG%?lO_iB4yN1$!1_i8$cAG*-;F<$)3D3?2Mw|4#nZx!moAFL5Wan^D8p
+6Em$4iBurjh~2}T_=fGiN&p>qAeV{dU9mfE16t*-cl#yX_dzUA4j7IgdhX#s5&sXr<*vhu=x(zyxWfP
+?5H5CS{{51Y;i0iCN`aUolvAXy4Pf1J=g0EEOm5?rCXER>kd8&^DqZ8Grs$<}m>e%x+4HR#h0t5JylS
+)?qs4=Fe@{*$ygwc94Y>_8X!xQ-klFh=l#G|FJXOy*)0bx-R`_y*<!zdBC;G-5S92IK-x^C?bqrWn<F
+J$*-255h+3p)#VNtu54O7+?K`c8+aWd9JStwG~F58McEjY0xIQ^?@=+ at 0gA)f7?3P*mtOUxo|isf-64
+!Z`l`^@wbwoCn*s9l0bbLAb*<~&}mLcIdOw at T6kCeyN8m={ZAU at kl*JVlpdj~Q}rR#g at y#P9eG at oc~V
+HaBw07A^aYB?xjOmUasI*r;4C33YEnSKqP8ExnC4>-g27coy?QCWDI$pp~mlb-BUN*uUaeP#{c52N^@
+B1ZDZGCm!PED!aYu4`?7}mXv$fkdtK&Qo=!YEJ*u?IZ{%UO|Q at lqnS83;noko!^>6h`zVh055wHxQev
+IYs1hd$?muAb0}e3Y?_xP__%ucukSl#2yUxp1c6(XGr6o9_J&B6*VVtwaD2Y6iptB>kNy5K0#FMb&6p
+<uyXs~v9Z}JKcjfD~EzM%u=E%D9M4WAAVac>LfF<Xi7Hk+imb{$PmmmtEf_xt5Cyj*3EoB7-GG7%!x<
+rr}X6VZDt^Pz7Qj-Yf8ou(yLv9LQi at elJ+?ta*QNqX?0>0B2 at _{qe_OFS_4rSLCr!$kC;^7AJ*tbD6;
+l=R5)qj<T>whsWH+dY*VS9-8guVg{<GtixOGM(lt=9~Yr7(I86ms+P@^d&54ot^vnFa|tqE<Yvga{H)
+6D{EfTgPl!1d0t9^3Wp_#^PVZ&PrdLZNMX8!pjkq)7QOlghllsFHjms_V&iT63BZ!~WGrPsXWaF|mw0
+Fv<XBA)f5rtran2CVOhn~(r%D=V at 1I7~(}aD)oc2B65YIMMJCHHy;b;%tKoQp&6n(r#w{-fl)7_nC=v
+3Y*29Ywn!?C}p-!>jZ(x8sPm=1~$ic6U%RSxQq8wppsML*a|zo5z?TF$s3o=wj5&4+Mec;fsEo=Hf;*
+y^D?&Vi18OM8PVgZ2jX2KSG<-tCv<L%<3@!Im`Dbu(<B{Yy#PW`EgBnn4wa!-WA&=4~Gk&nD-2Bqup^
+H?86>C0j+)U6lBE`EW*wvq|OWCsgkF`1bzfcSk&nUTxRQgk+3baf_zY6}!riaV`-pqC=bSkm2Eo=c~<
+Gf|!wpyuWpWD8Zh3cN=Taz(tD|En2i_(V|6TwzW%Kon*O5mWpaZlMp&VW}=So^~5cqcoykFItSRGl*Q
+1=q%)J0vo({0PCKh#3*k>V2jZGz&PiX%$rpLQbP1u=w(CC2q`0vM<Hp%s$@y^U$z*BllYW+5z!WnY-#
+LA0jv0?z2Z9!A`#TIVTL^pgZ30GlhA~VSS3lzP?yCn}?uc1CQphZFLq?-hap*YpayVP{urrojZ8PRLk
+(DMog(Pd8Cik#U329wn43cdk9Y?yeswI0V`aFk~ATZkX%AkW9HYy}4@>cBv9X+Q+_fPJHx999Fwzv6(
+e^SBWH4xoAB{5Z!sZR2yNzx_BAM|P=d&Cx5xmD@|*^*AnF$Bdx?eNt|OSb=OsOPwejA3s<(IUWEXD#z
+vyk2H6(vto-wfQIa!bp^}$pDSWZm(DgLGOcuspZ}M0(p7Ut~)vGU%%kFgx#V!1TT*xf=BqV>vbEIW4i
+n)Ywxlj at Pr*pCJc$)EUM$NHY8MA_X{V7%l^3Q-F``uhfH&c#RGG2<;+XCGC$lc2Cy`s?yuE~7NILfQz
+DxIJ#itz3+kowbi<g!?h~Sun;WS-41hJA6JGe1XBLVc-5$;mAkOl2$A!odcD>{~@RU-Cdbjfg0JIacF
+^l77cl$d#blG$KPR_}*UT*u_&Ev>vVP1;4K^uK8_B0dh{ORiF(V5n}Te-AFSS9F%tmn{8)Bzi3z{Jc4
+BD5sDPl9?>v6L)aDxWd8uyKUTN%&h4QTBC8c$?F|=w6e^wtF4}9&QrCCN5voU1Kq7WJ~+9w&L)x$YFH
+}C-cNIzV7E9H+8STuPT2eT4 at BS={$Cz_$&!Q($iegIwX#CCnRkij|1JG?&s_$&r3f2sS~8u at MSd2qh)
+(NpMxpyVGG2pi3^qZFNxQJmWB)L+7#^G^^6<3*Tiw*_(FbfV;BXN8?1j~W)lON7{*Q*+)-k5q!+0PVG
+bsfsK)KDqkB!^w|sD8H5~8ZKy`~#<=Id`ak!^(=8vubE$RM*r at 8Gfy4SwW@4Z+hd{FpP3(<VMmb0rNZ
+7)A&`Z>#VTTzf_z2^nG*H+KG08Yi0%WGi8K)x^fW8rH+tP`JS6`8}@C{euws5&oCBPsdR6j~9EceE$n
+r4W at TTXU$5MhoolHZ;o<;yv!1srE29#KXRI<|O`h|6)=RCM1dLBoUnCZ~IWGih1#{_37hkw(zUr1p1J
+#!T3nI)}sp|5BJoO!n7&|g|6yCr{<~BLahC?cZja)XGo2pS+t_MDfJvqLB4E{TcsVCStK?I)DuXyu;q
+A9Rc1;kfU^Stw|mjQ!^vFj>4RT%ul?X>YQyo|1<dsK-jH at +#ZZzr5`Kw-JW-H$+^X&}a}E){@qq5NFF
+}unf^=>lLQ>X>g%U44tC%iU>9_PglNm`+hY86hd384Ll7HIm1t!SP6Zv^Iw|3E6O_vKyL!YFwb2yYla
+h at p76P<asGrs(J4!;X^ujq&pb$OyLPlV;&^JUO?q!M!!Ma}$$(**0-ka?sBVA6-#JOS$HUP<{pWpg$(
+zoQU9L}H%J2l1{%ZNBCZS|*zi!vdkzOtj>Qmb^bs{+Ptgt`|e2k{t3T5s{}mEMRc5+2<CA7FYb0ZYw0
+9f#0dbkA*~6-iIlZTiNvz`T63yb5=WRnI;m|ZK|<F6_uVp<vtXMqHNyP+Hj7bjItfxh{VaRmti-1ZnU
+ege4Wp%ji<rxG_~BUbnUFxM7eICVr_zB&7al_bgwCUh_Om&y*x*D0Vm at TeH-F{mU{X=4M7o$VITIPh6
+DBWIESE+VtA?#yWMa~T#9ltHPDI(c2d){Y(B;W-FBkePSx7J`DwVm-u at 1{*JdJG4h&sT`i23fT89nmn
+Az at rWPLnT-F>-UoyUZl1W?E!vYk!LknOu4(sxx at 2YsLZz<&`WpNh!+65=)8{b>VnaBRLWW^|Cxz5_UN
+>ZOmI19IfpS|rdNA}*W#fbl^zoT{Xk*2dZElu#AB{N1rT>Rz#bsbm at oFVUwa3e;>`7IpkO9o`V<XgIA
+gA<C3gnhYoSz0RY1?a+FuWYE3#Qafs?mk)_0_P`aDV2G(YY(^rf%OjtIJR+WN>l{u2ulv-HSEce&GLn
+hrt-{MC3b#bcmEBbenjt;*mn?w7XG2Xif9XpQ?n4&gRjC)Mf`!#h;^+a>6BL&%Vx`ePBN3gX^cv~TMy
+yypbYB0Alvmz)9OzIE1IK-a2f;QcNsNT_OKF*N5=r{FozECDSB`E={EVfT#iiG~AMi`;c2 at qRqmt*#Q
+%ChPr)%;ryggrF1u2G%F%e5NPpm#CyxhDIy4OVEkczzxY|tbmB7~-^(~UtjjNNYyPY}(e-=gk0J<VJ_
+JT08zw(IU^007lQyARa-7w~7{^PQ=_DazC_E=jlh-26onImxp3o2P|?1HU|Tv)^nv7c6mi1hIr&OX!&
+>Vx-GGQOwTpK{{P^c%$^tSZKghFpgldE!k1l<7G)qq{n!r5 at CFbeiTBq(kLkXi9a5vUigx3HqYHE_#p
+i}q{Xe=Z?ThvN5iv_^jLkD8x9L9$d2cg_u(H9MY~=<VUl*0<jjGpr(}zmjoq$d`YGdfa|iTwc7bwU?#
+OZ*cmHm`B;j9E7S(h5!dQaE7A~}&?w0bzMB}tKeU+n<BR|#kcbu!|5T8`{T5SxEyUrw~S$G3ba#hj$F
+vm0;Ex)B+d1aqLA52g9%wt%R-CplxjG#T4PB4U4 at Mob=oE)uh-%a<VLHa4l9PWHNmBUjUyAC7qRHqhe
+S|yR6?>c13@;%3>>AFX(sREbZha>84gAbFDEJj1@=iOfT62uT)uh)El;SpvlyNCS_kGwNlvN&kr^cf|
+gMVY1pZ!mrMsPxd-B~}3^G<J7Cfja;YT-0fIW9z#D)3h&X1Pg>QFrIrF>fZ4iA@}ZImVdSF>--d60c)
+d-gfvCs<+N~k3=psd9*JSF=TZ!N+1EKlm|%J1f%VY93PaOnHr2qB??}TVqQP$FLw6tEvrf}h7(c@!74
+mrwK_ODzb|<Wt&I>CS3QjNzsYF18%TJP^Aq at tqOo+#3>pNqyN4e{TFTu4>eEA&byX1n6t3Ig at 3C_CpZ
+txtJ8fu4JP2yaqUi7GUz3?SNCv at 3m+(BE5-*w(nCO6K+C1IR;miULMFNhyC%>3X&<*kb+-g+7jwGMLn
+juDHI-pe>PJSYj0nI^?fW1SzG=xJ at f>(OGzPNI9wp(ly~VcksEO;)gE1xr^j)|^4|DLoXO%xtnY<gjl
+r+t}E=4=W)k+4ZufGrf~pnM|-`_6&1ZOoSA$z;2MrN)_@*hf-+?X~sNbe*AR;ie0ZS{g4>Nr9Ej913`
+ at 1P~j%_PLKF6?sZ<CMk^0^SiJA~hVC^<S>_PL#-dnVazQy9#<UBl$jbK(hpDu2e&=wLRKs1n5ADWp-}
+UZh4H9m7f&p)%d2>*vzvr28`ON02yoV}Dwdd}o9CpyzH;&`I@!(v<R0ID+cAkjM8$zpo8tn|(Xc-UZg
+;Aru<dnn^_zL1W?|#^R$uJ{_usqR}4{~!2J~I)P53+NqrhJ`$`2_+P7CCx}-Nsy!FOGdc_nL^q69IT4
+08bU)O!+}_uiK5GmJs`Y^xYm-;>l8O2_;A;ZP&-qk>Uhyzt1X}@&=f`s>atJp*0&M4Kr*iQ$5a~mhgr
+=CaP{X0 at RZi!42E(#XmEng3f!Gb42W&NW2qOccSG^#oKODkYqx<-H7osoXp;)-SxtkKpH3fSsKrquE9
+e{-{Pvbhd?gTVW$%8VUO%NJCuk4o?+}4?d}J3ukuldtlM;;^y<wd_zX;IWz_nPZc at OmXPm=FcsM9{Pi
+PxwpCul`ZZFCzoon4^lxrC$eq#<)KLc^oI+zGP5(WXyNuo6AzErT@>pZ&GB)K&-{P_2&|6n2-Ob=gYJ
+iQ^7g52a#Fn?BpW#u%V#WRi$gyn|Afh<ldu^k?A=nG`A8NA<z&)9rheOHm~<<=Sw&*8GGaQNfISs4DO
+W-bWUwL#o<PyS))9*@%xn3wd1Hr2LqVZI;nwj>%3$gSJPHt+S#{M)3C=HSsI>4h8OIO%AHGs<bAwNbc
+_8^~yN&scaIeJZAx!*=+oQ^J)TGTh7ZwA^YPR5?L+6Td92N-E^7mYg)Vp2z;Gd!@@V9O8*hY!;`zKAJ
+l at H3;V?Hi8lk8U72=cB1~y`=zcJ!R?=EQk at 9P3;R$^o8j3#tO&D(C_E8`50mcUELXp?7>s5u$4;Vq9p
+rBl)p(*BPqgA}jN<~qNH3jt6@@>+Si0MQ4suftY-=}fnzua*{Sq<{2;YY1OiDSz9VF`V?s*XpTf_>QW
++|8Vr{!p5gtI!<vF`Swd#xt=O$d3=0Z>3)*tN-sgN6w=q&o>uG01?8hdUr1enAP)n&ocq_DhBdFU0AI
+E<I7BCu;P5%skT-U3#KN&(!1%|7A-wO;mvK%X-%fUxE-lJ<({LlG;Cu<Kr>TX-Pa9Q!T^>iI0~o8i~$
+)JhTRfj{>#3UhE&r^F(K!>ESOP?89_LXP$6yDf5<Eu~U)XGAtOAaLoJNUi^~ugkT377e at Ck?Hj{H3{v
+{w_%Fy{6NN>(ztNX-$P=Ke%Ufs8DC~N1W>62MJM3i85q=EPH64mJ5ojcejB(@$c#-ZbBafblFf#R8?z
+k{Lzoh!H#r-{Zz^IUo&J=NC1al$Xo-#7ae|c+W2#);Yyrhrr+3igSipGQ$QLiV!I9G5J+}y!pp9C~bu
+fb_8bK<%C(sX(9Ej;+PlR at 7H0C0!112Fv+)azo5&QEBdFKcnr3X3N(bEeZo+}!p7-D~Rg>K*!48>U~^
+{Ybl(-DYv3HsneVrUdaLUO-MEPE%PMbDsSo+~lc;@5$0C5a2a~7oJp0j45kO#AK%C)L{u{jc<l~@EM!
+<t0m4nM)#Vir4ylaqJvI!(21%!Q8lNU8na#IMTlsVP$-E$lBFtff07j`=Xpsr|KIh3hw1Hz8&I1jqR&
+K^nW!-nHD)5jOvILn>@krzCJM$x!I-EObDn+U{D0TWWI|4u$o>*(U!vtp#CwTkFHz|wD!oLJm*y*_?x
+5Y0KtGL3?|tL^f7i?Ujs7c9eI=r<L|K)Js!%E=`lLj3lxSp9c??pRRMmnQB~f$atvBNTyIw#q3naOq&
+(9i?NGcK`MIxF=)DfvVLM4PUEL04s+CX{1y!~o)uSq^XrvnQRP12M9O7lq)>ZYHi(Iv=b77Q(<8g-L2
+5_g`L|39VFl}TK)wooexS&#<Rrc8-PQpaECT7Ocv&Qu}mcCtq2t<&ZIyI!zj&QIIrK_q6vG#vN8C=O7
+_SfwH!vP~(YX at bePWu5#*qI*qKKIU7<sH7PcGbH9k$b6&;3o{fZAmIKJYCq-j;q4R3KGz)=qI>1SCzJ
+#*@bL+up7P*u-YJm{bDfgb&?hM!4HKR6&vMP{_IJ>|rVK02UqU%1j7aK`K^&%}pEMl|UBbqt#2O at 8N}
+@@M$#bpS-$D1vg-<96U?6W&nGoDeDqw(?N$D0T6*&|Fij?|*@JJbhb at JU4-7A+Dlc0VQwok(ANoYKYg
+(rdQB;K4vnUnZ&67fwUxk-#RiOeSP*nFIIexiHj!Y7n0lq{62l&qAjl&qAjl&svVQle6#Qle6#QR46q
+6WuEpKA~izWTRxGWTRxGWTRxKWanO;5}gvA5}gvA5{Flw=w7+-2_*+52PFq32PFq32PFq32lpD37?cP
+~1SNtJhbNfmUb*lIC4-Vd$)IFVGAWsqOiCvAN=hUpk`hUYq(t81HW{}`$w|pc$w|pc$w|pc$w|pc$;r
+JIB^D(XB^D(XCDuJ|i*Z|&T$Egt+*p}t<0jg;i8gMch?}T;Cc2f0V><CWCkdWOCS#HmnC0wenCM=)@C
+hZs3hV4-jhtxMCK|Sha&00}n+VP(Dzb at +Y@#BYsK_P)vRTeKPZQlM7e1jRSV0{&(S%JjVG}vnL=HBQg
+H7aM6FJyK1~!p_O=Msb8Q8qfDVykCx$p at k!3rX<iT-P%|C;E(CPJ@?25BNcn&?m_X}(FuW5VoC*w%TU
+lQYr1a at n7N6*#a7r7`hUCW5Sq3~M5}nn<oDYO9IRY9h3nXsagLs)=xF-iO&wbgx|agpyzdrPM?uHPJ#
+%v``Z*)I{$zkvdIOP7{^WMBp?LI86jj^FB9eqI>1SCzJ#$NSG!PripNAB3GIyl_pB1iBf4IPMYYFCc3
+1F5NV=8n)T?xC%RWId_qaEg4AfDGMc0gCSszAOlTq#n#hDEDwv4`WupF=WaTHx+gT6qInljx;S)-N71
+)7EbTx^jCQ6=(l4qjinJ9TCN}h>yXCmF1NOvY`ommgBG10wp*`I(F6d4mS#zb5((LYQi4HL1#L}M_~6
+HJonlT7v`3p`2oPI9^P*4a#SuUz<ql3<0L%_J)`NxDo at D3g@PB+oHPSWNN}lYGF0?w`;n6Iy&<%FnHL
+`z22wUEjWb`LECOKVNU&{@cr^{})h80|XQR000O82?eW28-?V^OA`P9luG~rF8}}laA|NaUv_0~WN&g
+Wa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4XfV{UYKE^v9(Ty1mPIFkOZUxAx^ID3!r5`4Lxm(5l=j-7
+bcv0b)PbE#CyMN5#yjYMimDjwgjKY+l4Zjf{~+1ahSiDFp-@!I|L(~TzKXV0epiI>N(PtV2K>Cy4|^|
+5$)c5(Dq at kHHcvuEOFrNl*3-j`Le7Dx3$iLw=M>;Em+>q39uY<5*SFS@!B^L44JPRw<kgBhBhR%KV}m
+ao)jwXV0S5%p4Z6MgFX=c;Sx#a6Ly%erdy*JfKc{TJP_xU3snK5tafsfD<E?0Xy!RWzor?V}!Q)rq~M
+eIbAN;d|Z1Wc34axL%7ZQ at 0gYs#VQrwXiEWs;jOk?{<2bd+q*@x<rV#Me|8qmh1bb+=%Bw&#)6+EiNC
+sRb9FDYf-JsyQXL!jntNnQlhPw-GiRkPvWuOiFr|pMlH(LcCQ7|iK1Hkv2JwxO}!|WkEUo>E%b8CtUJ
+|gTFCJA`8#o at T0K+oT2-pitGV3Wt;@M?d{)j?)hbc6Vr$CU6-nyEOyt^4M4Z&R`(C;~303OrX6(<ZX?
+2N64kSi%Jw`(7davlr{Ixc>rs2Mx^rKj7Z8T_kFew6B=|YrM-|b4vUVqRX>V-aNScy9&cCA|O){*W(*
+A>5<-n_YZcOwqZ--}-kudWWyZ{Gi;>uO2st6G1yr*gB^5L^hos-~#AM?G=f!Q11jqc^(6;mgyr)0_8Z
+_9v$|=f~IA;^g8=9E!`stDDoKcV~xJ;_}_q<;C^!fe_b9LBvLwQ$qG4Ug|D4wU*>Ubw#;u?b6?C^|pF
+~>xEbqpOsegT$LJ8qR=L?ef%aJuIuW)U$1UL0{uypOHtKbBp#YlV at IQJq+Q($={M4#pC3dbm%36>eOh
+Z3T<hj1<x+QjvaahU5-;nvGgaRn>b7wrW&B*Gu at vInwJv$;pEy2$^_8UZY&Kgq^+p`b>&@1vebd{{Ls
+M*T>t->Voxgi~dvS7mba-?8`r_)ncp?6K_UhvN=Jv1W7r*Fl&*kj+{Nml~H at 8>EXSX+Ru8yzYT%5hqS
+7aQ|-X8wXRJp!zdVcy=cm3+{<}kRL&45(>e^oZceNh!6c|KnijcC>1cdD9e=@xfu4SplxYPY%5`qI)<
+#e5~^N`tmh+eULnrMaW*dRy<?J!%v0)P3DN&i=Mdj&zTPOVqEO9(QlH7f0rmMDf4mC4XbP>GpCzn(ZY
+~razjW)c?-<m${Pm-%|bAezL#Q{+e{xWt8`y at RRpFrG07Af0F%s>fdEwlChG^3CpyyFFPySGBXqXEpq
+s+a{Ss?Vkc_mp1U8rj=Yzsl}+AD4Dy21AUo8{y)5u8bH8OTf2*h1$=JNxUX#8)N!0e3_dmAOynBiMzk
+k_ at 5;pNUcTyWmj%1p-SI#7zJ6YsCeshLG>9LsklH84uN8Cn8XBMN9WAwMa{@oaj38N&<*h?tsk(Bgnl
+3v1gz0%17D>v`Z1IgVYP4?)s?}_^y_x0 at v7+-pcLKg|x;a`u at f0Jwpqhxu~bEtH`!KZ0N$d!y!Z424I
+GRLy9Yh~@->Pz}%Ko3dZN66!ZdRt-^-(ytziqwD`4HQboglkv;2tV<}LL_7ROWdMj51Yg<%EH4cI%Wo
+m+4PXI66G8^v^=brTRTZKbJuexe at rm-*Wkn8&r&y?bTk5IoXla=dL{{srVP-a<}6Te7W}}aO4q3zkXP
+<qs_i9l?}?KxoN68o0Y#LTdC(+eOi4smCmn`tkOB)$yi71GY&3C9mwGutr5GkOGame8u5Sws8UvzWQ3
+BCZNKqMEB}tUjNvb8Krw&`G!xvnsboCS0f96ZRr23qx-V=VpCTUllI0hptr61|nNm5RulwC`m5x~wvx
+uy~6E%jr^ekAUhQa7K}hIuH0qB*Hcr&<{p7^abXESn+oh_eC^7khXR?E^TpL{9h!X8 at FpOO#|3dwv8)
+Ak8EqYLTvs#N!Op1#3v(pJW*2E&<%jrAiPZ59To{BMSAb1Tt^$_MO{j=Fmn6!xSY8 at MM$*whN_aZUSU
+<p+r+AQ<Um&Phm9m-NsIBKo4v_jZ#)GiQt(tPehm?Svtv*s0xgc_<G<LB214_E=`gs$E0Kyk5B{B0D%
+L=VAYUEDP*Q?$<XSt6|p)YKzNCg?C^ugiJMu%KF7W$Py}gZ{u|nJiw;8#_<G5%$%y<CTqyJP(j$U%8L
+*joS&<ac3bGuA*WBvKQG^>k;t1#<4?cm|vLTO>UGkkKx(8k$MN&E9Q9Gb?rP56hI^gmJ?SS at aN5P{2#
+G@&9q1 at Le-g^1aKoy0}NrbHi{mvZ1tzO`hh=!!ccj%cYdP1}i`_hzx5}K&=19Oi<ERaUzZ^*7QhjEJW
+$!&nArN_UeeJnPlC+R^WUA?|$$fGn_3d+JsL0KSUqIiorNGc1Y1*M0?A4e2=lQGeTk%!y^9*x;VL+d8
+Yk at Z3?xK6%1b3B>&!KXJEiHAdIA2JG=SHhUEqC7%S$8jiom0DQmtP_fffYoqgoH(45XQItr>OZHxHup
+ at 4xB8e%G>nai%DH(-Z@*Z3!c>X)D2!O40lwi&g3p|`s3+nP051(wI-Eyy&!fbr3F88IDdGqCEV`aMZ=
+d>iEQN>(7EW44iVRjGiARTlGl(~Flau~8%EApq;=*TyFBpXQ6cJX;<VPF5Aw6N4KzBOCC}0c;0X?+ag
+y)9=Axt6u<hv>g_jpQ2MsOTxoibX($Pk?!eGrdQ6h8FRi7yQ?M;Ii@#U5KSdJ3IXEAgV?Er;`w#G^xo
+i=9Ub-9fmsk`4}-vfXwM4URJ@?G2=p?euGOg%S`v2{24R at a!7j@^R&oA;GV34=z0w at jMnn9&Sv0OO6?
+3L(fF(A&F7|E2A;dU{A%vGy({@O)e*b6tOAS0l8I1gUFP~0YzB(AcGlCNSAM&iF6<hPF--sBu@%y@(7
+VZn5D^mzgA>vn9><WFg(8Dsd7v!4kij}$(Rk(M3Ky)1P1{poG5J|$=44EpXc!NKzjLLqM4U6Cn8E7<P
+Pb?uN<MYbqN_W33`R`_D&!q{5*=iVt7;^JJOFMQXY?}!oZnQhIy1lgx at g2CwG}fwBL*)awnO`ujA2hb
+2oOO^ph|tLl)R36ZPkAfl0)3_+&an`{;{L6xzhn9Sadg`A#sry+zYXnChjM9i+!G3d%x0fWjOQJdg0v
+BR-RB at Sct6X&hxk2|TPtq#sAfP=UhXyD%VPDcXyHwm1L~frjZM>R}K)(MDK$WKcMP at QwmFa-11k4o{X
+75;H#>f at H}ifQ@;`qiD~<!BF+Nx4hhY4ciFO)G#d$G!fe9K2z#JK%of_^JFx|qdBXAFfSkSC{YB*Cq*
+?JgWy>nFTs)0BKac7l}f)Xv<?X$dtVq+G8K<XXBs>i$y4NX-y=*Ka#V5?qP-J;r~FD1j1;pab7Et6?!
+pZiJajTB8wP|xELkewnEZ3k0Hj{C45ct8vOJK-Fwy}{(cL@{J<qG~h>0kP?`nCp3B_`*#kK`zm~dkXH
+&??%F7Y1Td0LY8-vkPtP2pC~f9yoLkCSX<vU}J2Q at 0o?G98x>ztb=@iKj#2FR46c5*}RRJj#=dq3SsV
+C~+$T8Nx7#@L_^6>p6shZ5t*xDN-Y23J9N at PM9C1j57i@$|iBEmyz_q;DOyxzM-#5f at ScDa=u_zAI9(
+FT@=2{QJL*(oc{i{7auzv^)fIf%H@;UBn%j&X2K`3OyLb4eghIFNr9qdZ8+rM>#Y|=)|yFFvWixzHd2
+zF(eQ9V<{Q(k1&YLxsvuvVM5O4k?6Qb64NoU!UL1C$G*mrT<#1>Hw59&zTHp2>XAk0Gm`ACVjL8Jjq?
+n2niHL}-*9IgpD<ym93q(|fJ9=c$WQt at t17jkrVpWuIAS9(hZIoj&NP}Y$G{v#J;pL!1uV~LEXwN3fD
+FTomB6n=3Lz0Hnr)cTx;eo!`)Wba!#f9NL3VtIDdz!>6n%~CZ4;1iSKlkZzM8+59 at UfG}?R0D!C$f1&
+Pl(;a`<^`1pk0q-OBrsW$&pC**;)X$h6Jd at x8zIAh7%>4=WIxuj3h!r7D(ov3G$HaGn{D{ijZ8%EJ0P
+FF1)K9-(n1h7>0Y4HI1FBQ-3XqXj_s;l%JkTjpMP*@r_JMbkGhf<xlB^dnO)ikk8>yJ=$TYoSx;u;~T
+gQ4!00KB|;mLsjUdafqnhpxhL+%crq*WHJ}tIZhV)6(hjuqBrZsqr097lFb+?<6R{2UOxTXV9KxJENf
+v8Q{6Zi*+R_0kaKOa1Bv;x*67;ZPM3gWJoQFBmrz53lJ`I`kDewL*uK?L$0)lRs5Jo6!luYHYVgzK^Z
+-z?)9VJYPaEs)-(kPr->UF}LO6ZyL(GaLk2nttA55W+^;t2WqFYQ8kI5U)ZGOEEMe0V0{1cXC at o0YH(
+<d0k2c?4e%R8v%I`=i_7qzRZ9F=p)9B8!M`<uH*;MinM%xC at 1g<K&OWGBHHXe&?PurV~4SO1QIU+geT
+8 at _d{r0pSyu@)RU^6xkDgS0st(h9i#vh=vd_LfZ6<Gwu_TXuuSXZ^sg~9V7b=I^s_?aw(I<kh;xTDIW
+Xhdw<-Ug1h98x2F-$&Bjse>p8+F#Nj88c>V~SNkIqLmghzA$QxyhbD!5EUr%@RW49ds<O*OHW}I^#l!
+SMfGrwA%yC5Uui67ed5rtdh$s&FP1O6RxJl)U<y&})QCQh!u#{&a=yDXVXrE`wqJ>=Z2odOiT#U_)Z)
+Hxg}ZBXI}PeDR<2- at uklz@=``0 at 78&(NJ;iY at VM1b3vg1^ja2k;lNqqnYoQjXgcl>8#1rwKN!rHoA}=
+4CpB_qytgJtQY=D#?ccu33`rme2bBu&j;nl0W+i#X9*b*{|=vJ9^MNLdDJeH at o2bb;`9{WZ=z|C3&7n
+CP!qTiY)s4%CeVg~Gj1{RnAZZ#sD6Joo3D$u6+ai-qEfAL=iCmfV*S{b?T<5||1H!~+}@T|+1=jmwQ9
+ZGx8>%a`Fdc^&~<ydGt{;PQ&n#_H+5I6uhd$+5U~)?L}$L!i9MXS^v$06!+2s|@AUMVHnK<fO7rDjHM
+YE^KFX>;&gT#D4Q8MRzb-c0wbE1g5PuYZ5QD>uZ0vF=w17Hs_t^FQ&UZ~?4ou(emP>P*ur+5n`}2iVt
+zMerqN}1Q=6Zq=>+L~_N~wi8^!cf(AH+)kY|JTK)2=ne?Wb~U#;MF{Lp#WD`sccboBCQ;G$#|!cN-(g
+VWl%Y8*}-hF^7=N at k=wlIow_MC3=qAMtv^pUE5EUP4aYU53DZN#l2aeR;8KQO|w&xIW4Q^=2&WfFu1O
+iIr*#=P|er7{_OFpXjxx(N>zG=3pJeIE7SCaI4RbxBHS$X(t6lLqIkJ8?`NuF5YpOU?Wx at SYgD&usu>
+&Htk&sC3;tf~Nzd78s4=JB)gtO=&y=O-`Y2j$3q}Y1@!)Qyzv#jEqWV7D197VHP_&BFZx&TIqI;-4U@
+R;+S~#+61H(?s^`S?;)=h|s9xfIzsB4d1`x&#|%vyT<==tbbSxl`|qYi}lMfJzl=c~GI`$NZWv~E at Vs
+)6Pn%=y?}Iz1QIMUtHA-p+c7(jv^U at 3u5o3cg6+s6Qxf>}6AYQev~yHoPc}WQ^5D=Ae6Pj)On;tJs#+
+J?o{1<e)28+Z<_M*Z1YTpRX=!>d#7SRkN%cEy=k$AOLC1J!M9|(!;9M+)#=?_wWl*)>}{1PeflsZ}+O
+Z?XT<^*nTK~EX99`<l}zORF}O#!|=jVU;E3%V9Z{ojJ_1l`$kW-8FN5TQ)$y1kEbWIXDQ-8OpE<qrhA
+h;+6v<?*c3e3>!r)die%Eh?q9^{IQaA+Y#_%chNPaXde^Ap)0bxJ9m9w4*!PF2<$wIpi|OOX>9swfgT
+4(Bo+hPRRn@!u)$O9_ilNK2oHik#siX9)R}Du^$;)zK3~Sga9h?8#&T-a*W<5hO#d^Loe-J`YYt3?<c
+&M9Ct)+zi?<R1In$+Lqsr at Ow_R#XJpO3W>f7};;91i0<8{^n@?f?8hC>d+0<YmV4el8=eQ5PCr|9pBq
+2#fZf2$%N1GF~zypuOsCRcs7szq@{OdUA8C$N6rcLssug(BSpHdad@)Q1qpf(z8M!&@4+$1m;h7AOtd
+_{-<-OYgOHMD_?tAHm#k$ULO8NgyqJVv7+Icz4+JfrTFs;-bR0mfBoTPzyG5p at vq16)b*32{Q>t7DJM
+gI-QzPdt-t>hdOtaQqW34bc&NOi%OBF at yDy-TrX_iF;>2tMRm-==4RrjkS#UXN0r&FT*VZM&{#)(ItH
+rdm<<JL>M3Kaa<9H)-vv}U0mBkdvd;C%5=e^dvbDT|?mA__<>-gQ#&zIkBUB3@#k1%%(%pFc5{^a;80
+Ik-#>ru}qPc=+`x4_g=$~-cyz{bc-zaE)~@+*<~%<OzVsqcT(Ao_bT`#(@i0|XQR000O82?eW2NKy%m
+3=04N at G$@YI{*LxaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSZf9b3Y-eF|X<=?
+{Z)9a`E^vA6T3b`wNEUwAujrc8)+AL5qi)&8Cc6)Wfef_-C?GYJr!8SOpo)+ at lAMIu+W)@ak=*Ljx)>
+AK+Lys4Y`4zkJKwo<L+RD4{vYxF at Wb(`I5|EzJiR;=?@!JS{wW4zUwN;@)twe+d3+nEQ6dhqg%)ukK4
+yQ$NfP1v{rxJ9=TVvEVxGi0EyWx%JDyQJPUA9$=CAszPO_!WMRp^~9-ELq)nze{mYSK3v$Vk1e3|9d7
+Z?`jSzfQta~+j>A+8 at Pi(OYyPPUd0aCKLT*9UKeoXw^%(JQ_q_LD?hkZd6?bfNRFdQnGmkfmiFU#}46
+>*CEGR)qK%<zK{koZRN|y?85tuoPt`&L7IVEM3PBs*?CRkMaj%?Izb+6xmJr4Zz-shioP0Q7Ur1h>O}
+hh$uyrE`G^!=-+3H_~wC at R_Oxa5b9Fr_l4o`!|5k+q6;7uA9Sj7M038nPU1O~PvW^w3oW8TENQK{vrH
+Wkkjpg?ag at P)#qK+yW85d-Uv*w!MW`KVysa(z0=a%2m4qMJT$17&fPN4OvXL9jon8uTqze(JmDxLRj}
+I`2K)<1^#I+WyLf@<s9~K}hem}nY?d;Q)*gyR&e&4^i*gw7c{0_2U8h4Su+ERSKL<uegqROMRd;oA5_
+;`46 at EbJt-yfeGUwtO@N5 at yEhnJV)=<Gu5i}U at 9tK)-DC;J!T{L{tx+2!Gm5SLmTiiylVk{gO|VDdf#
+lM7u&aZ=Qwe at 1!>08AF*F8ZpG=DChhQ6fT%EFYef!z4>@t9YSe34JHx8<A$EFTUk5Y6sQV$u6we{Q4;
+R`HnBf5<*e>B|!=<p?(zK!1Pg)Ww|fjXGKY(ANQdfC at F)tG7O{;pDwX7^dk;Wf8BDZyz*dJjmLX+TV;
+uu-$i*eNAVPOA*_m3lq3&gk?Dd06#6^rh6;wttkmDj%EAa1km at +P)xTWma+Rmma=0gohx=>TeZ5?z^K
+uo{C0dzoOkV4XRB-k!%NLcR+7kgfc}DmS3?%gVav4MND!NYeUNt<Bf|9;bMORHqRd*dBQ|Op)aVphVz
+F#G`5wN9X=_)(R(ZMj~V*tQLmLj}#b$<;9f1ixVP_aS<eT|ZM;dv*3oR0rBU_<;vy!Jq#zuh(J{VW8s
+8$7{G|3zjbnF;;pTx3R(8Rc(x4VwvTG-7wx7qbA@%$EV)cNO00^DZul at Ay1L08@$Y3g0J?9pSsG%!~p
+Lr4Nw_ZclNGR7Sp(Gl)QJhII+mDa^_7Ae!+S%><q%P~8QR2|P_`Z3<OFh0im*!@CT~G@*hFOp9GvnVA
+q8c&u*Wnvn{54zWh-_&kF-1gjA25Sm?>Aulk~s|H>axKKc(fJ6ldESTWh#Wlq>tISLh6u7}`zy)!jP!
+i(A15hdnaS3s7r4-~8<P_u-<P_voT{pA9BleYoih_!Qih at cA+R1Z>dm+?9sD)4qX$`!L=pFLmv@#RH3
+`7M)1w_OMvEsHEfl8{-5q$>jV}OS#F at gzFtxS<#P?@<VGZ0a9i&SxIgwG?a5q)DaLF+I#A!Jye00o(z
+(7j1zW)3p~s*=EwIoy(zM3_MQLQ?ENil7C!L-XK*SwZS}mvyEVWCorDnSlzGouUh$6{*7{I1`Fgs7|m
+>jX?p8$ZU;9!_0)1=>m-vC!l#mHAL^AendggXHY+;+L2YYn?55mH-Y!Y^EOYmzoyb(Q|X7NQhUm@$BU
+#fvSGxSsYGqD3tlEf8L7#t&ZXR~M at nl7wMS1gm8R7c;uA<x*G(x?6K5JVlc<_Xvw9w^r_wIsn<8715R
+9tk<egY`A-c2f$ZjV#Q|bA`ZT`gJM)zsBp{n_CTfEG0(?2-e2q_zG^;E(MAAdn6?0lA$I7AovkCjg6y
+4VAX;BQ#JiE|tx$5Qcov&qgZoGE)BT{mI^;Z87-Q at WjN+~unD6YQv2t)1#y9NKWs=MuqA5GXirM&?PB
+-qvtwS_Xdj$V+Wp at g7q*ub@#@>)*2a4Fht(Pg}LSio*60LiZ)BOZMF9N^TK?>cvM0$b}d5c#>-jf!}w
+xgFvl`8G6Y<1VN3UpM%GIo0n&-4`cY>BN%30t!u;-kgDiaO`-=8s4dre>cDueW0xI%)Ea>r;y^wZf$X
+4hzt<AAcl9(5`g79L3vO>ppEIKx^U8lRf-O1V{jV4fGe#uK!n%<9VpA+?+4$PJ4#IW*+g)0JGYI4+4#
+FOvTX4{>0sGGJY}E^W at orrQ28~>EFMTr+6br3`Ksug&uoCT-QAcV}gliOP9ldmh?o0N9jWldLOLkW^s
+BA9`>`c$<#&$Los|mLkUak&;HRta1GxbM`CM&Axl1H+z$!GiJ*=+Z}f;9r(8R{_(`a5p`fnvUR{E{&f
+G~H3x3J>pP>R{6eK{oy9&V`Lrc{~2sA+)CupTCm%w}&qG{h5{6K~V3yX74pSQH`MM{RKE+-Dsm$?6;W
+$b`scW^k^?Up$-g!(6{xc8ecpsJtS_Q at qsMx^AGQH<IPNjp)j6_py9xtha`)b_vFw<{}R1mvfZ~2D+h
+_$nfM0y{4BKVAZYev<=bPYJB4_lFMB>PyN*321-{vtZ6z99HB+AQ%|YH$We at dM$$htEI`hExo{d^E<2
+INdm<JnAY4-1fa9#O|`D<r^<5Fg8v%|z5Bluya+s@{j7qZH-Rj7PRZs50Pl47nr>z9+|3fW=C|L9tiX
+!|hm1Lo0^XXi7gSgqZ7ih1KrY;bT!+{#df1A7WJCo|RY#aE<nbHlQrn9sgEv`1=_1($=66{+DsF-&e@
+tvTTSc<Ol3_WeJhsRKKc&FRP8rA%sFlMRAyCA#9~?<dI=I~<s4(AO@?5x4Li4%(wrH3HpC$QB~!lx7(
+Sm>92v&_TxPKy5(4eY?hc5V%CS^I)J3-1;{N0^hB__DF5jf$0Tz+Ht612Z7l^SRL at GY`1!z1&*M1BH4
+LlOoq%`d#u#&9zRAYCg#ovp48S at w+m)JRvl&jU9mNWKsl;GOUT90gMcTH4^!^d{%^}Q@)D;s!#wXX>q
+9nSxm{^$*5mQHRo}NeyOpp;z^lGZXa8{RsRNfTH+}qDPZqjWzTL~1 at i<*P=dS3MS?E)+l=dNLP31Z<c
+D%QV>vp58Cz5Ru+m%*$I4}o6J7to2*|;-t$bs{_&A0pN?9O)Amo1;|N^E68b`W&yefW?k?SHbmFE{E(
+5QHt>+Z?!O7S06gMmJjNyTJ at 1a3@fE_PKM|E%`ME-5TK8=uX5Q4(gj>>vkXHzP0E7)yB`nF5?__e<cQ
+W9oVz4OI5e-H`D=dU%st!RQ;@Yfj?Xa-PH{osFp(i=RpMBZ1)Ye0R$GVTRd)V+}5 at RTb0<y!xnWQ9bf
+GzALXD=Vf$+Q;hm{5 at H}<ajl=&2?GL8Og1i6NTkTRBGUxH(**{u&k1EGOl?7gbZJ&Kf-ALk7Qs|ryc=
+>W6zU2;ei8svtmT7#RI;(@>7vE&M8{hN)oA<^%Y1%xWV4h9*w<pBUbLaW4pZCP($5MULS<++93wr+HV
+^rqxcW8AVeyAkxuO621JW9^9BBlo?F6c2`hzC2f2|bcg34PIed6?eP<Lf87EOicnqbMn~ZvYm$JdN%(
+)_*#_JbOExj%RPjKY9Q0yx&`ot8I?$k;iub-?0JSBKuanC5%;c^uS6IebLiBk!F8H-hTm5O9KQH0000
+800{-FNSvOxWBm&N06j$j06G8w0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoWVQy
+z*d2(rNY-wX{Z)9a`E^vA6TWwF=Iu`z(UtwLeYAdCz?T~qCwI3)KdQo}PKvnhAD$E3kIwW(G&|Y at 6|9
+zj6#Ic=t2Byqas|q4R;v65Jm*+fohRN2J`-i>Te}8zwjt=+sPtNz*yQ9;+4{V9-mbb+&Zen(tC)Y_D&
+DmZyi&;{z<Lp1ld>-NY_VzAKrcs&YY&uWkv}9ArY<p_xVVaZ)M*bdujpx}S&RKTFN{3F!pTuP`jTW(?
+Hp$Wgm-!;gs|zS*XIWnNPxCk`;~BfWuQc|jigMDmxW`mCC40H|iiz=f1Qky4ZMHj~vkA!-Y!Vl7{xzP
+}p6q35nJ1TbaPwvH>J54rJC5=%>@1mI=gBR5&0t~4%8Z at emp573_>WM{lgm8H?<s0mc^tDMyDGoIu(#
+|!yJOQRWqCYHidsDaQL-qV{WHrk{x+K>SNGI)m(Ji0SzX5YZJ}cL{^TP&iVIlE-p6U2!<)0a%Xu=z;G
+<+3r$x-7f-R`8xY3b1AVba at L)bwE^;LA=vN*wgn)_><7wBPfTd3I at jXp!JUq&U_k8Cbz;42t?&*sQRu
+10P<L!dpKu_Ue3-XQikfkHU?4X|RDF}o|`tGl at m4UlD@4ln*V{dmE4Pd>9xyOYW8$;IclkVT|%7x}9-
+CASMeaK_+O9;M|y42Oc_{mI at R7_s~A at aXX3Gg*IdcyY3Se$Ea~Cv2CU?M^NZ_dXu&PT1MU$=T`o{x)O
+hajZg2!E^<=4e=FJ-e!p8EH0yDUevCCMtTbvIG?eb=xdBLPvZoLVi8JYalcj$=UIAP`HLYspl?}n#nP
+<w*|$6ac7VQKcA-V**9YjQ+dc~ggrfAz94R=*@Pp(Est at K_miz2oR+J=qyo<413c+8CfD6Vxo}*{k58
+FTa{gI at y<w5a>)5Fp02_TbR-$mCkVLhHxrQJk%G$kAzM~g)Qw=bg0dHlws0h52z?ThR*M>*g=`xkrZ$
+uRUE*LIxejKNL5h8lMxHG<Rx{!<#Mk)%fYk88`-1hq9{N21Z+9kdW_fHp)Mp^beJax{S^eKv#)4Ie at d
+F(NfP+!G;PVpxb_A%=w*Ho&j}h7F*80QCb59fV7*32STE5JQHTX#jOYTw{p9tZYcv2qUSf&WGru2KB=
+c`p1=;0r%JdRt#}T-B2M$uw*1~4y#5GA5kCFjFww7gi~W!GKTmV;$w)9VaXUXkD-1HC&y!7a*ig at 5Ne
+L$9Jt|7%LkR35uD;fT#nEnE+8%-E+8%-E+8%-E(U0j6Oa>-laP~;ld at 7Xh8hWR32{j=fSAM(i6N5CF(
+kl{07C+(4j>yqHh}5?a>1}t6G2S?@c`mG5Z{3~k}r{biR4QpUn2Pu$(KmJMDit)FOhtOB~o*V5KGdCO
+Bl&u0TXl!#zHmLQ1p at i$QrC>aF{WYA!n!%M5Sg5HSnDY5~bvkN}LNChK5)%#DpOxKs*{`1Nuwqp{jx3
+3~B&3Mn1v`2KX^J#^3-WgW(XP^4lRyVL0N!c1Rxg5ib_hYGSAfNQ{QiOb|zm7=a$hW&uGF;sd(I-;kz
+51F`{KV2f93uDJKg^S&jiK-8Yu=$Vav7B+e^4_OSfF8dJecn|STMQba#$7^dmXzIGH^Fdvdt7;t9c>T
+%_YH}dbpehcVil%C&N~emaDkp;3Aqy1eRpd0*yhnsZB(;k31X<8!x}YITB2i*BVmV?sf-^B6F<`}d!-
+^@1U9gQ#((svFp2_8zTv~E@=7ySJYZCpQ&0ScL%WX8>yU+2IolKt@=9ytO#V|j<JbwX>``!mP;)IGIe
+kesLhB<t9JPMz;FVE!iw{2et at 9UJeNA<l<c~>iL*uWfwQx_Id92FPQ9MwbEd at e#%M at 2?-NA*I6Q}I#7
+Hay{(M4@=1Dy#~RI~6~6d84Y-0k8POTSg#NDOV(-iNwVtURCeJyj1hVzEt<bz^q|m^1nki)h8wtlO5W
+D(MKo555&~O5yaNS6U5lW6=6d(MEOKOv=mS<2clvuk0`4m4We&iBU%@TP{M{pXhtFzqWS6*p#JuS$Yn
+5iCYNV&`E_<KPhPcufvwL^@ocokj_JQp>OW3ftjx-2&WiZYyEvW3#T#UZ{{#J3NnVryhcxevhuebz7y
+7>7a>o>q+d(iI)BQZgZSz+3!?y+ELHE=6Ix3T|u`R;4Ip-KZxhsk!N{^!Sy0(|-kNd#`2QXrs*MDWxf
+Wn7{n+LCkse|K?N`Z6^kj*fcm9-66WVvr1(&uX)tpzR{mRlg3h-}6J9noc>Tb3!*uiFB#ehik)u$Bel
+DOoVJ))^7Li9D4j-rle0Uo#7?*m!-P%^9WPZ4F;xfO%~sy6!%*n4}d0ZPTMI5RbD!Azb!iptGRPM0IS
+g8oSZ&=S4-`yxJrm^lLymdTJbKR5)U=x(?UCfo!;#H_;YNkE#XHShJ=D55_=YOwFRBVb+3ZuGT{0npt
+pFqsqHF3*1Qjt}JNecaJ&>B<4cqrdFmt3)NLGd~Rf+c2ASO#>FOZz?(VyeyZH_HclEB%C1dVAX^J$gM
+Nib-p*rJqiC)+#YmzP1G6H7HU`p)5O1U7tvjQ`f<6xP`d0^5bAoyO_wYeC65Q7;q4FXcE1VXrJ|4L;>
+FQS*4_Y45d{E=Tu;4M?J1wyN7M6CkKT=cZIy4k)APcfx1(g57U_FgQ(bk2zPHbwYYDPe at eqcmjuL~ND
+n?j<^iK^0T)T!T!2Sq#kQVYIwWwH^dqM<TwV_#+AyJE0pr>Y~}#eu3l-p0k;r#hclp2P>D^;ToER;qV
+}Y7%|*bWT*53)&Rw*sD5NsbB*Z==>@q*fqg at -o`*0=k=Lq#$8zEb~ED6kWmYLLA6r$Rdp;-RHZsKb&K
+8^H+~Dh<wT7w**S!Da6 at 68FHdwtx<k4Hxo_HKJ-usN6dE-m_0H6+%#H<p&+UNO5inw)I?Y|OwC3b3Hk
+55 at xHK)`h9#y&vL|6?!V?Dm>R}oYYHw`gK=>veJe#o0_?jVe;joQ?{X}5SXshTWvCV?CW_01rR$?u#L
+EB{_!Tz{OWkE$rwu*XLa6xzZRh0$(T+*#|UHyS03RVo<#nR2Yj*h9u>#xlw&blDC!@Sui7L!h-F+&}L
+Zt`@<8yuKb-bLmz?;9iv1BtvvgPjFaLE!6X7+J8fW)6`Z1zo1_6x-NrsH>k_b}9U67d<xzYTxbcL?0c
+VUHvXtao-i<)`D)myC7pmr~B6vEh}qpwXX^peKKjYU at ug57P{8B)EJCpCs9R3?@rCR^^^t at b;+2Sv2o
+Dl25z&mih)A<@{ec at 3%WkLuiR>QZGpPoU!BdcDj8w)8aS{S&z*CZ6V2LauaD-_fzF3nS_<UV+PJ(Hx~
+ny}uG(7Yu1BW9vZp|Ek-G2cS-P8hlasm;F>s*QM4N5Y49gSPxM2EbCafFnz8ax$pjSkt%7(U$e}@Hq%
+()TSAKb)1KZ$lZ(R9GvJ(-E_?Gw%UZT{=__HdxkuB-o{EVOH5*UPo4QO~q|7FYBw1y4Dw7;xWS8&@0O
+GLnmx-R3^Z0+a9TKGPn(b~v&itU0^ZEww<+XmgG$2R6O57IaCYE54GIrEjl)57TM~2dgbuo(th~^TD&
+bz;%htML50x_PJ288cJUOiDaF_cy at N9z#S2@$6J4M+q1yjJ}Dbqb<q!KWx at CRZ&<*4R&b-Q8v{GRUVr
+s-hi}=@!+|^QZu2VzuRQNVmW*=sjfDStjJ=pzU(<T=hPhtir7wTHSkT+iGy1B-aa88XUy$v7&7qRJy|
+`Z_(`bH{6$yPqVnXjVLzr)mhxF}>O6W@*FZR=GdguKpF3UKFz(F)GVqY0m#N|nJ8>9cX`bFg5y#IOLr
+~0)%_5JwOuDIU;{K3w^s9E-{cukg7E*(|x5<Si%=X*y#*rCJo)7PU>IDQ>g?i}m47gqbS{56Lk?2zFB
+JbLSShnKgb!C<vF&Tl>b=*(0$Raqey!th}idfy8F30w$kU~RFhdGsY7y<utgXXO1KP)h>@6aWAK2mlE
+Mt4I+cLmg!a002}m001`t003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OY+-I^XL4
+m_Yi)02Wo#~RdF@(lZ`(K${;pp!*kG{@pk_tNj_nlpA<ZV;VACXUQWX7kP;5F8sz_c*Zt6SSf4_&4DU
+y0|okoj$K_f7d$>B3I&kTpOp}oEKKYDxm?);K2&QDG+Z%*m$#ns6l)FHd)?9uImpsO^z591)BlVmO^%
+;<gck1&b?e13df#o;W-layvrDB_%EkU4PF)blvZL(Ke5d=XKy6e%SO%3ClYe<|{87A%DU8zymvkLfZ=
+iw^*%>m)7vXQ>EsF{itAf!I_Pq!MenhN_30UY+a{n at q-lXca%8<0zu3l+9==GLe1}^U{-(B+k?DZUr}
+AW&20yA$lLApXoY`?$hv*UK1?LDNpEnoj)Y;#(z*1g?DL?t|e=WR0ztFMg9cC-q1Q((JY8574tAF;Xy
+=BK|KF8NiqL1nTLzD>{`WhxFfC3Mf#X24&PmVpbL?~QhFz1k;0qn)m;?MF!>^!i8vD!WVDoh*@I^4Od
+4{tF@(+%z!&VkArWF+>i#0q3_ZjTn9{aEbP2J3739)>L~|)8?!)LcMTkbKW*)Rspgo;a7#FY);2sYEg
+riSLE4mZ3%EV$7xj=v{eLTPY{p!Ol9bbN;kH^#L@#XEOH;@I>7)AU_r0{Wx6r2;hN`p9G!*Bq+Kb at ZZ
+jv2>q&o9nzKS}G)&TlVIZ*J)9YD&j+eLTHAKlyNRJf-Uo)9b67(*vR#Ar!@u%r=rMiWh)<Ou*z^<Utr
+^rR$#%-V6ptb9xBA2!weiLSz&LSR%{yvtk$}@qOVhrf5RnP`IEt$z6I%L*x#!uMu6K==i!w`q_a?Lk6
+KB{v06$H<*4FE&zQNB}wYi+a$}S==)>L^*CeRYvy~5=)(<qy8h_&^0ys}%ANyYJ{%sE%PNUz_7J4O49
+Sy~iLlC6K at _cNo`_63Na8E<Mkb6*vs`@53xoj>5b7|v7r#zLzDnbw+drag{dfo5SIbpA%U3~}q6KsXc
+_#`|!P!%i&Wnlsh&-(1iL~!TnS^z|T!xUm4elaw<XiwP9{pX8-zHZn)+Ge!Z}iH6OYUxM(E3aSzP)F_
+v^NREB#iIAq)8YqVYs_n>xS`5YiP_}=6PrXmnO1}@yuMt4spjA!}EBA`v_wk@)&1wUg^}pb7(X{mz;*
+KF at _GM_yBE!Dd?ME+(X0EE^CGxYevv8@&F?n0~GF)Lo}%oaEDOCWgn~=p^Y(ii2e=5hte8pAU+<-hT-
+8DqS6`JBn+(cq=oJLNSIMS0U!4RGuh;g5921@?zu7=SWX2k={FdmfuBQA?SrcU+6d31&9q?&!8}QO33
+KN;s6G&9vSeWjx(9N)%pLg|V at N#$G!4)vVSK0<$S9%tlLBUjNcr$@Aag>(L0mdGK;KYCO(uYxJ}LsvI
+G|+;BF~5eo|W9pVGV~EVVDD1=7tm{sa1;M&ZQ_ClMsNG))Vf&yblT(0c%Ja26QI7po!#kG%htt%j7f0
+4$(#uPO1Y8A5|1DJZIl=p2C=+=SMaAQH}o3s}agZ-_=No{HR7fRU at 3W@m(%bCnbE%N^%@$Gx6t2#50i
+{!2<7R^e at 5`$GIWn=GbI>z{f+T$FT|rh5$Pld0sJ`3XGal<)3%p`NN4Ej>SFBXgG135*TKK at z2gX9F9
+L<1o3 at os;rcr`?9Ma03;qRzjm?B-K$2uP2<J?vd8f^NZdf>JL#@0&^o>9Kd(KNYP1c0rNnuTwl>=wuh
+7xPfoDANT93A?vfu?Aa0|0}NeNcdt^ON%&_fiwn%-ugIi^@CIAA+lz_wXXqN)L<iFH_10klQoIaebS>
+!0~1M?5P|yt1N?)#zKuW=@(MG&6<UdC-dme8Yl at f~nJURrEb8TK!ny)%0jBddzcmJ>c~y)bs1RD-w4-
+%kyTn;;y+8`{TewwyTh;R;Fgf0 at tgtem#=|JN9Ot`_>q at dibXGQITFu;`6n(L}6P^)clxP$y5~l7StD
+IqPbVwW6U+{G2bkJzRm~rn%9;GTEF_-c|K_4<vXI#o{8FmEo<SK7L>KOenK#7lF5N`mKU at 7S&ep0G;2
+>=Zkkoucl)l&CV{5U^{Du+Zvwp7f_g==t>MPl){12A4d1;Q%}AS>XJ;S(%Q&d-#mX91Y3IiN%{Pwrn+
+Im)_bdH>eIDqO_qNr at H^)(KaL{>1`p&(PS4^nN?^|HLYaWVOarJ#lW3IU_?DL9_Lg_uz06kdHRu9yA^
+DCXa;)EN_^vQu8JX4?EHC1CKz>6)=mv8v2>w;#ayjWF at HkqhDsua<QTEBaSOl5)kE^c$cEY9_0-?i=O
+D-RUYyylQ?fgPdp$x)=J4*e~Txn5&x{Tt at S1tqNbHzThzlvf}MhL;x9qtImE<iEUIQPBIb9d`|&oMaV
+P2L~n_CJbv>(2<GX8O9d_aDxF&qVL)jQ8`r45yxcTELK{m3DdB^Jpb8yU)w^m!5l5zp0sUR8zkyex^|
+>F)efjpm2GO6Wwz#}%MB}x&7WB66Iy?SsjmfZV}}`yZWbKHJg?OnGmNJ1t@}b-J?Lh?B at eijiAra4A8
+MA9zSe?yGHho5w&|?S0jua at u9+KV2pb&e-vjI at sC)aWR8NhH#A}+GF4)P`LZbbZ>stpdr|xfEugXc at n
+&`De@~cH-uR(n`&oBM`md2|LYnJsU8?4sXQWI?`oeA9d+!BR4MfG!lX@|*B%kIoJaQdWTgE#VEoA*t#
+w{XzrVRt=HBaSA|^t~ITUNsu4vAJy6E*y04KJ9yi#es>rjq%R4&|L3zZB46c7PLpfu0vgy!9hL3>VNl
+^TeG0PWz<V-JC)Y&2fP8YJqs#;mt38@^S8)r0PHrQnQX>d`1Uf=%2 at T})HSpPb7u~=N1)wNr#-&r>fo
+J|cO-GU8_&!Gy*{jp^ervhMr-w;UVXlO^_R-qG_%^1>2$+_u2kyUIsPlY^8C*O>^qy6N{e?B)O!j4bc
+lYLS?_iIazw3fpSn_XDc>)i%hw&=2YDKPg|PjuLm~BeyIzK~Ai7SnP`)EEmG8zv)H|4r<=Yp9&}Si*r
+}4dfXZ%9sxkw>!7DSnFl}(w*FM~&c{-4fou3nGF!^!K>PtLy_=VSRs+77O?zq|Gy^#vx)lc(&pw5#xD
+j}}qzS&WY;PW}v>e*;iU0|XQR000O82?eW2AEJ8-o(TW|HY at -DH~;_uaA|NaUv_0~WN&gWa%FLKWpi|
+MFK}UFYhh<)b1!3PVRB?;bT4dSZf9s^Vsd47ZEs{{Y%Xwl)mmFm<4O{K_pc}&bTlA&IPP{55=N^P!+{
+yJ+!R2gd0LsI0c(t%V>`oSSNq at hD?3iNZ at H0uSXv$1-PKiJUAv9Ex7YkfpU=KrT+`*n>Dl$&8GXLIIs
+FH<(C%4#bpN90Cib8G&<p4^8Y}V>x{Chg2Z2Wqq5o6G31&twUYw|u#wt~#G>T~i(nG7 at a1r{c53)biP
+ZdNH6;t#?X#;D}FaGZQ*C>RnF!i3Nn7EDN)Q`f1MzQizHKxZ|#-q;Mixn77W?=r3(*EfINyq7eMI-qk
+odf|5nKq%JN>uz)jdSd$5FY!FQ)slG92{rpuDtjM-TJ|E?7z}SngA805#7$xmnh6A?p|i-UJ&tow9qi
+K$($fcUc4~$Ug$iEA5~JPqy4`h%*_Xb2mWL1#WS}3Q>+vv(Np>cEkDsLn$pM%DOO`Y$+5zYDS6 at ek0{
+3a*J$iN&3I at Uj$s=%L8{`{q;SEP>j%123Dl-9DpWBb+)f_ at e}u)C{z!$1A}^r{k0meK?B@*RZVm)`fW
+625`9#XcJj>?bzzE4hQAnF}w4pEUdnw~bFid#i0YJ|vfNSGo<zb@<w5DV7!;I|<9Elq+graW<PI^={P
+1Msgu)zVe^zGvQ>&?SGom_vXZzsdy$@TsBPoRa{FpFTwIr*=Xzz1V!6?<Vi18^|7IvbvT#fp>97nc|J
+-x>Y+#r^f!-5s6Z4C#b!Plopwrw^AWL%Mw!-rn4u9m3B_6((k5HW_(g;wP|tjbKTnkmm<UuKIVlHvzz
+4OfTL~1vifra&Al>qGU4L$cI4`K4<!3i8kmb@}DS-Qk&jlAF+c_u6Y++w0~`6(CE;nt^ko2{s`cLJ1j
+r<pTPP&h@#l0&ry;x>D39=I#LMdqi`KT^l*ofwm&+%{&UUJv}b{_>~@dy9F6i4<c$zKNgfE(Wa<UMjK
+&f23ks6 at g}C8>;V?_puQcP(0SCC+_ny at sLzPbBFdKG{DVe=Kg75xh8jjMbmxpM^dcpEhWk!X~-lBM%E
+tJRPAe{${@0%ZvqqpRv08j*W_&kLa&PWw-aVY?!q)aA0_}qJsfjYL{{E%1tlL_vln;2;e3i=!ETNt+2
+>z&4XBDllZfK78}HiFr>_Io<Bk<3Qg>-BavZjOd}1DgiIrXyVY4(=tcJa&YR=U(3yLZI_F`VrO)pin<
+os^eI61QH1r{T`-q?H$>|k?3I2?_epq<Ko(FMbn+5=|bXB2P{}JSanz;v*l-ugGM-zJYZUk_iztyQD=
+~`=>biz2T2a68-_vFVRpFoSxHu^k82lf`mJb=97{;V0F;mbE*-vyqz<#iGN*@rgwFQ^TS6Q%79I2g^i
+bH6f{ny5p+X08JFEuoUGxDM3dYIAY%OL2W&&3UX0WD3E}IULBut4(;qU|&NFK)`5DOqf<YSCG1oT-!W
+^!a(0x$(H&K5yyjzx({*TF)-b-D9A7`tpK(6}&U7pg%x5U{=&=&*Bn5=1T}xR8X!1ZL!dDLVC_7KBKb
+g#tC`Ea~zh^bQk2G7KoeOv0 at az7c>a;UCHKu#fEUGnl}g5}{xbv0uRe5DB&*Vh6D#I2BeVs7J&|fPf8
+7JdS4qE!4J%!xn}jSen>Cf|)@Dj#n6w2%V#aI5tI=HG*w5=w;Dh9dKE?;sR6 at 8yt$F6#GS@{+g<Aq>^
+JWaDK=5lOLmAc7-(O2K~d1<8<^qQlnE^eApfI1<%I{)8<t6=NvlyBc2Y`GioaKv=RlT9nt;W`l=pd^>
+&GxnWN?6=h$vTlZ~VKIJ8Gce4xYruFWj+2a!$lH7Ai-6Z0k)S7$!QlvcB()lJTuCFYPcXJ^sG0;oAse
+%cy=TSnk!+L;K%8VH>25aev-T(DJGSC*_>w?Q3=*v1C3<N??8LLph$%QW7?3v%%*7r$DhtlB`>vPEVc
+&DL?CgFHjv7z1sRb{>gr3&%uYdO;de>X9hdMbK6c@;PDn;~jC(8i{fZ6v8fyU$cQ33GLaa(XQzQS&2q
+n;4EiR^F-zxEm5wBi3I|&v^k|;r}Uc at l&Wp3HE~tjDi_Q)&jnqPHfby4Kp54)^hUAmh~{iu76)bPtUw
+^<Uav+$p>9hyRuR-?u0+tB6LNtkN9WrAJ1>+yZdza0V_g-O*2Fb)VVVBIut9-I?+GO at h!qH`Nz{lyR^
+*k(nleF{URbpgu7RMM15FhvpVQ$tw}D2m$?h!M5SUoph1CmO=0+gPHF24|@(D_}#yD_Fao`##^iiNzk
+?JRdw%A({2h|)X_CeRcpbx!<7es>>*1 at xKUnuVobw#Xd-CKTEt~aY{0a>zn at hleF%Q>1-9GDfUDIQjM
+K`#>(7Ry=XBCX{zRyV8I((C)M`P_c!-wlGY71|E9Eetk8(D=quue93Z=4)U1^{;r}%w9ZoSeQ~)TO*4
+D9dXN=iO75b6?GeI+N@;~>#h7!W_V$F2CP8fw#sWqm*=A}<6vt9%@wIo%glym5gU1-iG}4D6{qZh>JF
+fz!Ng=W at BACtp!!davW&LMT(UuZPcltr8ntc_t4Y_Uc+~$YDSN~+xou?wVYfxTDN|>lK9J=Wd4D82l`
+}{aigGn7D$=eH=p$y`mCKhd_QrRg)|bg^I~A0S_`YUU>wa~ouF7uAg|cZJyP7!FP1iA=76(o9)l1su;
+m?eLdP?oW2CIpdMMUkCW}cXI9Vo)u{D0$oYuh}0*6>1E+Oosut`JmhAnkH630vn%4MDXIJI1|9T=zt7
+*rji6YpGzqY}NO`dU0Rrh5FJJ2<p4f7CTd2dUa>2rn!EybcJ6h`!}$`+FsaxQ)@v`4Jos%=nOS%&{X@
+{-wrlFAWKU%0$mSE2zG3PayFWq?2<Ux_PE;;iRGQLzSU at J?cN4;1jW{(ZBvZa;$UZ9D91rrdV?1<#HO
+^>Y at 3m`WaIiO?S5x!-WPP;uI0kc5&VBJkYxs9F<3qYJ9ag7$|LiG=DSs>*Tl`TW6fNsD`lJyHj&q=LL
+Gr-YaWIhDw26pHM6p9Z(eJ6ewPXxGiVyDo|u}?iTNFWJn=36G%No)q4+Z4-xkq_QR!o?569H}6&HU5@
+?pZC at s0VLhbu3Q{a>K2eD9Evz246z{>Te%qr~SgC5HSB8fcxvL7zXu$cTO at H8~5P`P<A(m8L2N!MPVC
+$}UhPD!ukz6~=#iGd at WB&H4|24Du9sKUDvi!ssv0`Y%vR0|XQR000O82?eW2P`8?X#|i)d_%HwfI{*L
+xaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSZf9t9Zf9X~X<=?{Z)9a`E^vA6TJL
+Y$I1>G?zhbb#Vq3t?l9Xf1Degm>P21qoBuG*$`stw9Od?c~ypr71cewxk9xYKMCE9VeJ}eHn8mjeUID
+GTw&5#bXx99&y?@m6Pp3~Xs at yYr13B5bJIQ~1WvE2*y=;lGvMUmVmS)9^wK9iJ`^eO*mlBO}PA0HQ4G
+L5UeplO=OtfDDw_5(fiG)t-kBY%_MWSY-qLHQk39-pv3msL59=hAYU<XMT!VxAYP3pl3Byr}O_3mI2(
+Mz_nA$Np4tp?uAknChXTSI4i3PbLvuc+L0eC{5`~*_L!AOIduAvpSOFJgbW2c7ZTom9GzRhv-vWe5K1
+Iy)TkSdP6{1QI*r>vU<p~CVo(rCbvagEEQ{ag_Kn0chwVsy`^QoplO^@A!kWhy9W^!#o6rFyukR!e3s
+lT)vZM~LpTa`C5y*WbNJ!>Go8s2Na=&jWPxZd7q at 9L#o)7KDzj2jT+&?KD<2F~?-h{i1_-^+;eN&LTa
+pQ$tGU0)qQo5%`&`e~cpMON{VJ{$eq?j52EGR9C8fwlp-1j}DKL at FD9KiCAHY3M;1Gd6K~{7tX;I3%M
+LK{7*wXK(Hy<xP-_X(d7yA9^>gwqH=F3~yf at wTO{%TLj;~Wy45uz&MtXcv%9DF*tI{t_eNAFJ0PH(;_
+^zTn^&QGqd>HWnO9ns~{)y?Vg=d+_Ly8L`~d2xNRPjoG%rdW~bBe|vc4lW;aFgcS|oTOzP`WK|P1i*A
+g5AipNG*4v$MNy0rnJ-_I!!*zCSMg$qA at nUJca-JTfS!s3+JX9d*@YLA-vLBF-5<~ahf$n;O_73Y41b
+^8!S(wz&x--Q%gaicemcTfCOBtrc*r=>=WE<q_m57_f7`OD>;-Tv4h|0MvdUAMKEy>lg?P$Z2#azNr|
+FVrxhz$HB)>y9N-#=hmHb|<JPhFhsZQd1`RkRe7DcwY9UfA-e7uF<SMx<Strl at D(Ut4g<*i(i3eKMLV
+zwG64vC?XCko%OhJ-qw&l6bQ#J8zD49?&!6aV<Q$nIlIohiec{GvdC!jk?*uL8t2*zOp5&xt at hdx0DO
+q1<rgCLH|8q1*`NMhvz)*1HL7G$f({4H<Me#5aJ30_V6MPH>KAA-<JeIKn-SZ`g&f8;%D74RLdfn?q%
+wjxmgJ3^8y7!x6q!^lPxx2naKB7z#M!7))>|@Xc{w00{wsz&WXB%0`WWbBcgK;9{hVm7(HUg#-s2gGR
+U>Dd%bs_aop3lK~$w92|$h5#ku)IKVN&F~$+$fZZ5&2$zpxH-_DK2nS;rj$t^4;TVQv7)CIRU>LzLf?
+))Q5$qz^MX-xt7r}1A;9vs72 at EGNoWO7b!wC#02unGiz<4ql2*z+A3<fe8;4`R{9e{(edN{%{#u4GbH
+TV!JW{@aAnBXwx&?2}HAX$KL0geO+4um4?00$ro#WcbYAXW$r5*Va1GgRjoDAY4WE^I?g5^^|zXaw>v
+lsFDxpacT)2;>R~M?e=si3vp0NDWrDcn0AKh$^5+r3r(<s2C~)FpShgq!Vll%uaw$k-7#iky0USKs<r
+iKtQ?zY7~$qx(6P>P&rZ|K#c-&7E0Ek3KfHdy5?<_1h0eODakl&{@+dh(rzODr at P6Y>>|2}1l=y8N>O
+zZRW&>4CZjF7iE0A7=_X;_O;jEK*Sd*n6#Z^8Y`V!o(@hi_(R7p0>L#jDV0I8$cN5iF#=dScd~r9yW*
+0xEQoU8d at 0`5CezKH*EMzv7<sn4Ie#ZT~q`-dafD8NCWVk;LN0E8XnHX9I2m4|qLiM<icxn$-|JZ&MO
+@``mChxIH!j{*zVEc@*$<IOC>dxZqzJ{y192<liKm3{Jf$yg9+!2jCzB;cz>O3$HeS^7mZCt2twmO3Z
+*x=891dbH~z6Jqz5QG*2u^R-uM&Re(%*~zqno`!F^&$wLiQE1-2!!+9&rO{#(Qr^-dl7VJ>Bha51D_s
+vGo!Fnp*aZGaj-3d9tU0F_K}%0)*uVCU)%GhENq1!Y*bdy$u0i%Id3>vqr~nk&meFkw$;y_I?<VUQ7v
+r3vZfZg-GO(W>1)>1%ZsaVqZ0j^@YTmN)woHCViN*;HoF at LCj((4yU<qR_6VL)q7Oq~C3Q85AMXbi0u
+yC7-*w!4V0w|Rg$)Qc>Ce*>`GEJL?AL;+M`qOm`>}Ol3j{jfrU%tw at HWt0Am~@3XtPpRot=TOS=M)%1
+z-HaSp$qN?OJfU^5$7Kp$p91CT_bcYbA0EmqxJLTBudWt at +Klu%3(Nn>A;<SQpGZW>#jcOuGMu*1WZ=
+wOM%a%G9p~(K5qZ74oJNaSOvPcWFikhUvN%O#a2dRie7uRTf;uhl8#r?ERVD6L+D5`i9AZzS7-?wROm
+vKHzSMcGDAmI~1dNb7e=rlihlo1-%k=XV>4R8|a*9Mz%u0J!cjIVP)H_5T+WrHE+Ey;cZu5%fSnkXyP
+%|7PdKOR_tCKn4zL|!`g+zG#c&3U}zRs?OE3WYn88!ZEU=c;D>c!YQc0n^SemT7dkVGogy%u-_%^#u0
+OgzYmI0GX6e}#0+UFs1H*x6EnG~N4$R*JT$#E9`@>gKw%NB8&)T8P8f4sPw}EgVy0dZXS=f1^9R@~!t
+W|`b)nKc+u(4PO`ZF@?f9?dc1p+(AymRHMv02(gXZCgMn+$aj=-t1my|9he&5vCNreAtFaFf+%#O5Rr
+ZJb8u_H3qo2n&HX3$_m2Zsg~qLBOq5Q2!P%Ixq;_a9BHCV1u+7w!?Bo)XReLCmiqHYIJ*|erk1P!$W_
+reqrhJfIHn!?|_Xe4F{n!)X74>TwNU)epu&uQwv=LHt(CV;Hd?dgMK at 6F*I4w!qGcHdq-||V=i?D%a3
+<u;Y8i#z+}P9Zfc^*Lcb at PIQ<;h(h7`UQw8=)%$%Vnsci^0`=$znGoRa1dK`of2O4mHkh?qC(3O45hr
+!d+fxY|a)<Wpbg1fv0z8YBHq3yuhS};(%jg0l?>~pil>g;~p1halm>?+aDPq)c+s*$&;vejm^;AX+%K
+n&b|z^!X;Vd$=n7Kz(`JZmHGArKA%SEJosLQ_nAmff=PtB at H7`k`9`E{?U;Xcj3uPGJpn`*t_2fv^m_
+D(iCK>cC24SM%#S(#C3Jo>_&1K=(pnU3qlCI{$aunrCg)(d)mF_^Zw>AtUU-Wx2l}bP>3yoGiFpchkj
+tPuu;0uNJo3A9RYz-G|ux_rcp|yZF`CC(Xss&xDO8 at a+M+ihHIO{8DkX>2CWR1im$)yP*0Jv>|j;<Nn
+>)ov*Kzz!xiX&ib-mi@=`2_h(Vxy`T%<Mqs;Mi=ZD>UyB=s<gPS+4mKiK_fvv7XLdH+`@8xJhOd1v at 7
+2aEbah}j>B`%3 at H%MT>}=mp(C;SvD<Jx1>b#fr%OP!k4RoN!%+(veGxh$%r?@JT?-<p8`C(=Gc(a@*(
+>T4%%S636ai!i^g*n at w4Am<cE2FPc&QG#?^(Ob3tSVW+;HFr}fyP(L>O6jwxc$@V^~IYgI+(l>KL!5|
+g5NuDnQabj^E+vOb!b30%b&_O3gRlbJ-SQduQEEMEdL`8{sT};0|XQR000O82?eW2OFe&G<q7}*3oHN
+tHUIzsaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4dSZfA68VQFn|WMynFaCyaAZEv
+GU68_GwDDCL9iNt#8#<Am!?n5S<%tn_tB_6HjBeB~F8UkLxGvhtof4`@JrmHbdoXlx&5C;0C>ZzxytB
+VZp-u3^Z52qi`uju0Z<n-$9ls;TspZtrqjD6?5qv at lf>pXsl(<q^nY_2FS=ra2&PLc at EPfx2fo<(Jr(
+=3TqTG9+-2A-LEp2lU2nZK#8D#?~Ar))uGk4%ieQe`oVmWqjuv$VitzRdFK0fOl!%j@=8uA)-S>3&^F
++*B3iTGnz6RgWd at o$QmCOb#KUcldyglZ0;d*n)0Vq4KY4UR!dKrDY!9uVCh0v44aXqRS}%LN{^pkjGE
+-3jtwCWkxsa at -a&r`$1I_-{(=j)~qdZrKrdj<u?F(PwQ+&vnZup&EujL4<bs6()q7hj`>g7JYKAI(<+
+_A9F4kE`BPyy{CM?=E>r=e^iicMhc!2=`y`%W@<lvTX`v`8XsO$ZN6XZi26EQ`p|cF)D|X+LiqWrie^
+q&b7Lo&Dv^5fag0J_YQsaj=mwMtpK(8r*H*zy`&`W`}bWU+viG2k3xPd?z`VC=4_lj19TC5Tu5-^tjI
+G_H0{b@?aSD)#R<J;TgtLf+W7z?J+3;)%U;- at 7-a89r)kJ54t;1F<mdVBIaW*mPwzc`<M*67d9r&p(U
+cXW1rOUHC`d^<fq`E+r7OE;fxZ?5l72Sj&D8HzQTeI&OOFCg+M1Cw)AMsZTqrhkTe3jj>!^ca0raPv&
+Xh$xD%M3(DU`7p`Shss_|v4p;-ctL4a`t&W25j%*!4evsV^{<bhpACFE5EvAtUlO?B4%5%#1w@}ES(f
+|sAuCEf^zs;U11UuCiwFZj^yv;Q+y2q%)o(i{m3JNl%Y%cXdRb)&%^ssXnjv_KIuKUHDoT<y%`;VK14
+(^H+~|POVOFZ|WhG$<32=2BJ*Z!ARk_O3syRHOV*PXvxqHi1IxAOE9io-!R^+{^NCju#vV2}mlt&a`B
+~QF2cP+9c$-c!Hm8)Wvl$E0)B}RlH`=D3NbRaMC><L~?;-^?Y77^l5(Vn>6A81i0#yX^o<x-2AM)!$2
+@}}o^BN^!KX?C4sg`=PTNqZj1 at pn6iz4t`$T<{7p{ihZqw3yKUkyDG2T8#8}JGYAoYc%3e`XU(N9ODe
+|tlNe-5AZB}n&^A<AL{-?oD&~$j8jx%hJhyz(R_&JN#GN%G{IB>u>ztd0w?Y#`hK_-%|VTZMnj**5+{
+ZWeGlzIi_-|vekgniR6>lQ1}Fl|86TouR$@khN0SkT;1QZ>3^dx9K%el!L{GzTAd<m$ZpJ_ZJ0<MIqQ
+!~fFos~L1S$zc5{M*FNTJ&>R%%XgFEL(9-;)yZButoS4A6b3pD|HlqQpe02V-IgB_Sq-P!eKH2nFE*1
+cW1i!Nh6+fJ at y0@M9fLxIz%Y$%F|=L(mRILyS8>-@(}TXov=Fk&eG1u7F6 at AWYEY4l$6>uE~^I5&A}2
+Aeh4vfB>xtjY1<q#|RzTc0CZB&`_V~6B>=CTaSa_5w4>U0zd at 99*yYK=18p#=MZh+fI_WJa|2G$CWqh
+wLM713p+=yi3`EgTU!heKq){C}faZj>MqEcY$6BCvt{$TWY7R!43{8}_4HHNDipgUgtNIGT2yF>2B>0
+jLEJ3DOJ>I at fJC~@d5|e6B@?<5pmO}lxQt3<;M=&w?2ig~Lj?{V}B=4KZ!6-Z&*?z?FkPR3QLNOleZe
++%i_*DH*3<5-m?oQPMvM+W&J|Y+d!w|x!NTnB1`cNa)i4WoEhs_b-sIT^yA3 at t@`@Ep-szue$vS}5~U
+Hv4RGpI)BKCA#f<s}4RGqn~bt2-}fr`8yZR#D-Rl}1su2hDH5MhlI=Lf$;2bC{8m^?6~VF=!i&-J;PR
+wz{_>kPLxv(73w!RW^5?og~^Jq9RE&q>A=lbo2+7gV66Hkv%$PW1?uqRstl`C|b at r^MdK at 9v;`{S{Sz
+OwEDSUY7CwQ6}Bjh_ico7-6n2Y6Rf^&BuYlEXvD}yylL}{^|F!L^|@%LZXUvLu!+FLyKpQHc16IM=lp
+N=f{iRAIb^>!B7*kbBJ&LA0YhML7$o5q7B)C=z0H at F@kcivLKBH0(`j605%lY?aeHRT at cd(1_}bt>6*
+3`SAG<b3g{>z0-0^~By7^=`y>4b at bMLuwO*B}bf{ESCNP*1<-K;1Ya$Uch)oG%%U5$LzZSuY?D>sp7q
+`BLN(P9x8V{8JFwHLUyey{hhMYa}9G6{XNp#-hHVMD3GWu8UT>KU#LZIXFK^m^XK<%LX>;h(QXo{hP8
+%y#6-cDhT}wk*_*StlRx%wUr&7jCcZzF-2x at L*S=-7VxZ7 at SD7DW2yj8wo)NOBIPB1LbDr%~;%I#n~I
+BZ}(<vmT|1x7IG7WZ<9ISm7lYGg9FRFCDSq;wv<|$&Ec8BcI&o_=4Jg2iL%w`RtE0gXgp%ob-Z8~N!J
+TI#evO4hENlQHKn}ta7?hdrjPfRdGL7E8Thu`wK2%ib$4gkU#W5qo?nx~APAWUc&*GUCbMtYc+_*8eS
+z0T!Z9q^f~Ij}*xKyw!=h;yt=%?9I3!vl44&QAK_kFTXm%}Fkv7D5wI)m)7;SDH!u{b|AGS}Oy^&{Mq
+c8CJy5w=`tj2Cd at Us6I2gZTCK6QtL&kF3VP+oI*T_ at U#)U8l#iEUF&vpaJH-CD&x`r14 at u|If(Z&!*@
+7Ip<}-+_1Fz<ucoTMfJtF%eNC;3a5VXqv8|rRr4(`0I{+C*!dxTJiNL8;hP<8n)T>%k~(l=Xlm$o{{Y
+Pk=-vgx4dd!aJ8A`WB04RH<yh#aHE~q%A6PJ^cy2~TnnO|uq6(7ooG_4eGRq4yNf=sb>jB7q8H=9Xt9
+~e?t*T at H`;lU^ZK=lcH&M5%t|o6wOZ^8piTNbMw&O*KJAv1=Xvm~T>EZpb at MXZ8pRW@_q>Lky})09ZL
+w#IUbhJ6ucw_i7OVB;sA#q}tJN*Gjn5^UXrt1OU`h3D2MZ)#3GGg2Pb9t)f!SJRkA0>h;iZoB`SvdQ^
+TDPcw!JU3f5DKxt2yYfZ{x80a@<6sY<2Rt^lnD%<-qdZg)G at q{mVVnL0}xoWp`tvKUUf|*IH+{Dzj1V
+a$wp-{pQN0zcwa4(Gz={xwmV%eP)a4ZMBkT|Bh#+@@&9GKU3la&H&MghOQaB#j~}KXtnWL!P;$^4_NO
+Dd*ky(W`)4iAQoWP7k&P51U%QhgBK*@pr5qow>QTNyX{3C0Y6e?ZXkG*0OMP`Bk~yBR`f|Oz;y6R^;I
+Tprc}NX_}@!5%b<|g%6|)qn=#=Ccw;2;!bY-R(eX;)^H6K6v~4 at iZU#7i+1};Y^w^I_;@`d&y0m)RS9
+>3|JsIhTIdK1bWD~55Xv-_l{|Lbw1-y2GEjIpN2)g at tPeKu$!S3Cw5bR=Jv$@*+mlO3S4qi*@3trgaw
+eNNMdIaoy%|}`K(**Nb!oNMDpJ&cjT0b9A-^W|N9=X&X`pxyX4wq4x$KUl>{-HxP=xMrM#<M87$%<Hi
+A91U{QNze!Fp>Jpi)zpprIx4ZgZ_5&LY1Y;G2kpp3gsI_g(|P2Cx!N(faezg`pNr`{`g~&L|@e55vAF
+mk at sIvO9KQH0000800{-FNadQUnR^BR0B{rl05t#r0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpg
+iMXkl_>WppoWVRUJ3F>rEkVr6nJaCwzjTXWhv5PtWs*g3qAmQoB!NSo6KaB#~U0vrtOWHKGbu|?3tSX
+36taDM&Sm9Ja_p24wK`|Y<kDUwU2{TH-5- at AS2b*)a{=|H<Tu>OGqx+S9o<2i$Y<j*{G1F(e8fJbmI{
+^LR5!X)IcOh!23&0QHW1wK>EQ$m7=s#PPk&<(lbsCLI*Ss<27f|!BYV;c4QOhul%WGGrJRw4IX#YGt5
+t6U1HU(hfNg^cB%WUgX9Jgv3GT`E_St>qf2<_gNz1=MRb6HV+ at uR<#bU_`nRj9A3vEA!(>ED<WnpH>)
+OIlB0Y5`cSGzQB+N&yp|T6QG9*lz`z{%|)m+ocS7mZXjq}Wbx_ at B?-cm2K-67a!uKtNyZ=&Gxdg^-@;
+m~z;i>8%;!<ekC{^7hW=+E5x)>VpRGx>3Vn>1!ct5wqBP0h`xEG~2t$GIEMyYthpVT6dkF4vkA)EfH-
+aU}qIsT5n;dZxN5B?nUZ?*S7{_tqrt+f%>QyskODt9}Rw%oQ{Ks-H33!1{uOYy4$rM at Ln}R%2A9$$E&
+apW7fCe$pH*7z6Vz7$XY!y_{0_wuA?)b-GGKN<F0e-bcqgH?XaErQF3LM1($CmhF8E`a=QAsycYjhk9
++;>LS4 at 9)u-ClS6K;GNkalhj at U=K#nf?;bk?pl*xYXrl|XgF{>RV*%JX^JVC`;wfcc!nky0yBw|#N|O
+0hyH-&jnKishq?R8u*@FAS>=O^9kN`XRl`7p&pKX&<O#h6K7&xG3cN{<y at Tz!Q(d%@*SCVR!mC!`%0w
+kMd<n1w4#I6dL(_I3gsebYM2b}JTZpaIO|$mNY}8DEiGz|u7j*h}CoVoE!<b2&G}UBnSxWJQ(PQ;!j#
+(&lm>Ozfs));h!iq+z66*_f&$7|QlDa1zdXw&QDx_~1_Nepk)M|~V{mDIigG<Ah+}Ze011RYkHRB=kj
+luW_3QZCU-TW=bLP4DbZsc)}lXS at y)+Jy{>2U|g8~J#&aD#l*`blJZ)Wh<r4E`$KSb*aL9KYH#p0X4E
+x-cG_PtXpbn>(X1*6N{eNw_zpqXZfD0vG!$GK?N}L1<1X#baTS6cx(`u4RB(sGM>mtF;;~c(vyFxEsR
+RXX8xbGtcKUiO)QruTFgR^ZDw;S3jSxL41w#`5MI6DDYwDzIP+sCGlOxd?!G19PwS+XXCDj?`kjK(fF
+>2?`k7H=e-- at u8HqD<$D*B<B0FtJ{#90zUE%OqwzI~uUUu>*QZJv>EJN#hWKu_`vn)4;*++OKWQBC-N
+bx3)%$(+h4{Yg at MSLQr<jkPG^xfB-<R{}LyP!Y=g)^0 at wLw9YZG7le7-jEwUd6aepZg%ig~e!&uX58O
+K%!Sd{)Xg$jlyqWPaWe-`%@>gKa<Wi0>|)52SPWHb`!S>kwb3c at i$YX&mu&QoccE_5dV{&n7<mUB1D#
+pEmK?wsB$5P6xgMZa&$w8{nIXZ at 7_N<31taFDzK2td6o!$c0vDqzcJ!{I6C2Prb+ee~|rSEz!&%UunU
+kMS;>yIVQKr7p+yR9RF!6nP%h2uS8rYYNAJbHO=H#)N~GN)(d}26y2%p)?h=^++sHi>_3lc7X2JhISs
+w#fw(B~R<gXYvBX0j8N at vxOs5==iqmO1V!<qt)3u>r-PFpI=&dU8FsaH&o0^OTTlTc-bkTDoMW)m3S6
+Z!t3U1*4Sh#7Y)6_S3to?=$P~6NOaIwIeyYkG`G}&iQLwCWpy^>6=WC(w~@z57<(I>NhRsSo8&lvMHq
+ylbxRRq#2dZ%5U at c@0D(g9`4!e=^cPUG!xRMxNzMMou%PJSfLjnU;5lCrx|eN6ZDW$)tm1`bcve=<lu
+0UyhI6aE3RP4dNtnM2pd+_6nwJbT5|c%t~aV=5tc6rPFEyX3&Kt at R|C`(o_D6<XktSboDtJfrN>-0r8
+$TVuP%8bJLJkyGXECK2I``z-W!S_A{#hEmXRNSl!-Otosw%<1Dp2)4><QQi&jqR11g{;dscbw}nNo#3
+jqY>)*JJEB_NL;2YFjSK%Cxk)pvj at FO0#^>0}4ZjPN+W8ZGFF}B(y7<FRK}pQ$Qwnx7L?Zq&qK|j+Hw
+HZRtt1wqU?l%G=Z2u%7Y0koh2&~oHTL>Yc=>=1H5=Qlk}DYh15ir?1QY-O00;mH1*=G<oN;rV1ONcU3
+;+N)0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKuFDXkl`5Wpr?IZ(?O~E^v9J
+R$Fi4MihSMR~#u13tE=KR((m7N`#OE6$s*@Rg^|(u#aIBGlOQvNxi?m-<Uf#Y1&$f6rb~*+jlPb;-dJ
+WoA!ODPu)(d-5<5-ru*3XgU(<tN*6R<Fg+SMmrBIc(jk+y)YCs at 91EH#`NqaV6D)+W>?mZ%fzyTpKx?
+I~hmMj?0(Q%99P1Su(h<1=*TDDL*+8rqqUADCG7wH`W$|iO+GH<qOapD!^1!fg9MUY!Jmy0Q<9)4Cgj
+zT%w<`3#UT?rfA-qP-IHsY;S{kxt^Ty%2l9pD^$XSB=%C>R|2~kg&R~pE8Zsd}_5i)e-G!0U>&?-ZW7
+AgKjti4|E>dhF+00X0Sw9-<!D$)tItbylP&Wtdrr#v#uWOd};QO*^mI-x))G8{^~P73rn5-R*f8`v*(
+D5KPi5*303U#nxYv|Hxy`xEN2MSXP7iVboaB(qosFz(8Lm1Po^R$gWodw%bHBBM<rbf at 7y>&X?dgx<&
+YGXV*GuQj&OHXf at WfXc%8{4oP7Z&*RnDaGia*;*D;u&*>EsWP_<bPWH%AqsuROwx=gu^c6F6&`@4AD!
+{T<77<D{uBLZ4u{SD_~{B*^aomWeeFpuSFwa+RAq#6DH4Z+UVGSjfJO7B)9s9(eD-&palbtp(cR;anl
+xw*$DP)s+Z at thG8{aP+BI~Xc}uY;vxwv!#SvUCHJHTa2pQXT=}%~{MS^ii3-QKibHG@&kOanNmHw+9#
+#+s at dSS9B^onFeN at L{Sjl}F=W^>(zmwkWNvstCz8UP9P8lwdxnBU0=uJ2;4O_gr6bspMl!nXds(WrlG
+{911iO-7KMd#K&N{p3ZuD3#DDzhpMGrO05ZYP69AxCRcr+sZdLX=U^b1Z_Yq2uJJ&nXptU1+lO=Xi4n
+kP3rhaT|Rol!ed#{r--IgiL)`CmMzE8M(&>@eC-&u1Npbwba}g-W^miYMM!@l$!qFs#ivl*Myckb-Wh
+dQSmz@{{amk7{iU=^)Zl)(kFz|0><}1 at lhAwXg1k09itLN3Ec8_b%=!K2g6Hg}o4!w#Sn_G at D|CC0j+
+ny?Q6+Jc9O6V5cj201R^?2yQ}}(A{`_DE=3GX253L;66s(DHxM^^5%9i54+|+ty=KEQ`RF15{-jRdr{
+bbj;ZHzu)aA&gxO+%g~^E at b{Fts)7 at QYw-+2UvA*K)K~3XOBmSNcMm{aWAxvrmq2jb~UTsJ;@KT9%)8
+_NV%i2XFY>(s at 8eU%MXX at H2c6ydFt8{*cp-vpvq!bv|x(6+7<#M~2L}d}QB>^#GpEPS&Wz7*^|s`2o!
+{hM3Yvs-KyG<28D2ydY9Giddx&3<`I2w?hXWtJ at 0lsc~!zsQy%t^|Ih2s&OeXERC1y=jQ74+2wZbu7H
+LuA=w>3#FtX;xcOGBx43fB)!XbN7!A8T-Rts4Mb5RGveL<XF~v`=DEkkiu&~5~rPV5uA*;Y=@%up%ql
+d at gxHTD1#}C6cUb?rH%6}R0orz(W7?msi<n->-IXS$C=I81^si*WeP)h>@6aWAK2mlEMt4Pj_k2_fd0
+06HC001}u003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OZDM0{XL4_KaBy;OVr6nJ
+aCwzgVQ<<<5dF at t7>O at Lq8!kx)LwKSj0=>OfMpv+(dmR1dkxzxUTb%q$oK2-t$`2&mF_G>if7)uoq2D
+(wA;5I8jYv31<hyvcoB_hG++8Z=oi>_t4;Ba(^8AA$eAQxrJRJJ2lbDTlF=#`FI*dBk{#2ATS~d*iB*
+~sKzpqd!z>q80QQx?aH$HeNo8bjPy at f<)+DUp2<`V}E)r&i$_-w1p>+KMVhWT##1qY#<tc5dn(_K5rX
+5#N;i#RZj(<nPet!UpoA4faQc~!!hC*(*e&Ok15?|$3i%p67I_B;VM2H at kex^XktrmOwK<LntRTNZqr
+}7#R?JE2+sa#&Y&08x}0|Kp7Rw$9%F4{>>szGNdHk#?mNuFuW$*9b}Vw`)bR7nZTN%K^gLsO8?63f%y
+lt%qtr6Q|bsLWG{;AXX4 at 6Ad1>0(85ZZIEBdCoO at 3d)TX35w?;;kn_&3>7YBc4vJju94{22u&2|YftW
+p3*_C|ZYL0-VQ+9c?a0`L0MudD^^YAWT;Uy>u1LZ|eX6`I!Fke at L|)VG;28b^AqIWLPSS=`X?Rx3E*O
+BN$65Ssxr)hKJkg^UhTbB6x(62iAPd(IOk!V10b)$0S#B#d4uXeq=zl|nH=507 at ssO*GK&}ED5A+SB#
+#0wjA#C8?u8Vr!eAMVdvKidlf+KUTOz+noPlz$pd`K=CZsux{sems8k8yR*b9fv3CE|F62saQ)&KHPs
+(f3|i;}aT_arjP6;|$53+xVd_R3wboc%rQW|uw<0Al&Ggar}GCn5v&L at K4bG*ZSo=!1va{%|npe;9o1
+4~SL~BENcQy!iSbZ=`msm1%rQz2k+m)v7ECtu~MV7P_y`M<(KS>M}u{IhK?*``m=C;>qU*#QYSd35mY
+Xq6UPQ$<K=u$1DGP&;V^W!;gbu6Ez*V*d^DqzT)~3Hb6=7<@YZaBL)aHKpV0B)WnPsxjf9iUL6)c9zm
+^EBALP6KJue?+I6nw#Lb6W3k#dkdM$8&uGbyIWp<3a=enrZguWr&TW`HTfDHXff4!yLb9Sh6*KK6Z#$
+0CJ*>RbA at 4=0-lk%6TcY0r@&NAQNJBiyl&--_Ca*ZDti}b%xO9KQH0000800{-FNb%)onoJA;0ESEe0
+51Rl0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoXVq<f2Z7y(m?Of4v+DI0C=PSC3
+ha^>ql>mX5R32;(&N#u23vi|KG$ll1Ye$y6lCZ;W?Z5ABwFI}N+d?*(&F&<?q>WCW=5|XuhuhsuyG=j
+X>E!*z6`Nk1O|Iq>b~^oZ_K|7owp(qsxZ~_o?BDvK8?duz#hIV5`{<v35V+kazGWU9>$Zxj7onf}Q1e
+&*$b;yC$1Ga2lxPF$U-2~Y+y at Sa?(a9D at 42ZTg$cZkAEG#W0}Zq5D3-^)n7b)ovE?>vvHDSNEZTb5!b
+jbu?Dg3jW{t-VG(lGHvXdZSGf_8TGoJAHk*{P=&Z01l{pBW&;@8QWU*HI1mu~zAyY_?I*uQ56g9uZWM
+(lc<-bG>Fe;As;U&d~{6{EC{IcG_<PM;vKw`?12nCFHp<|{vu&BH*X%net6i(=s4M=O856^AzA3c4er
+PI-Kv6l3`Q>V{2u0+F)!JmfL-=6bUXd=JP|-{WDznVYZ&aV)vpkJPycWS$4Y&Le0(8{M~z`+$qje&lf
+iM_8|G6`z*3*kMu3Uc0G?AI|23Aija1w=96O5f{uZIRyKju9zQY&ECP-!ynKfbo2=>BevvhlkoK>=s*
+ilmwmoi{PyW)!A`Eeu+Jy6*~!)7%Uh at mBMm5=KiQIh{}A}lF!U;R!*mOQLj#wS+1YQvI61wTUM#+d=+
+7?}SCjdioqw9K6Lx(vTU?yoOiyO)`et_hX+G&PHs`z;VlkN1An%5F4NcxhFp?{tx_*$zu782kn?QiUi
+ru-798R;xeYm2S3%AI__F3mJh{D^fzd+d!=v(HmSs0}q_7wYY?ZDMnIlIux{`_{}qW8KTW?N9n4gUz>
+6wHBs?ysTg^B{`i4m*vKR8+k at 0j}AzEYq<1rp4IJ9FFK7Y;yH$LlJ4WTI)EvXI&3&;uKC)BF>z+efT_
+eV~B at O;#h>jFVf_aw;+zwi}!Y`CI0>03ljE at y>7uR$gGa~WDG(!;chfX0&crO5Ir&TD;$ISAmFz!x{q
+$K;T5(C&y4K|_FCJzC0e&e2sc$+ at GU*RC-}XQ9vA$cp5GVzzMkI~{J!M(I_gv41Hm7R^tj*;^n6?JZ9
+U%>d|S^S3jR>f9}50Z&mRf?h~mrsj|6`t`Gb!76u2Y!&Pb07zN6=l1%IsPj|G2R at cYVB;I81ilHaFr!
+FShMd at 1-#J%1_qOFiEcd{58!1mDy1SAxIN^H+ku((}3Cb3LC6KG*Ztg1 at HtW(EuTdfj at Hi$#*|v?3Rk
+Tw at BUk?j;1RkTghFh@!gd6B78eNi;w7`dj9Q5-JXLWM_JxBOfC?9Pp+JY2ZTfQ$ZtbXnO8?h!MuGrzo
+qFIEA-|9a&GZjxlRU;V-g5$$C0pogq>?t1Vo2kP0?3ZT|0SK3KZq8SvOs8<TON(kM1QSp_i`Rd<7?$5
+5rgK?{s6`A1c6`vGwvqr>8)i!HXTQB3!AV}RV2qoR1ghUGUUWjb;WU^2{K`L|c2{uJQ2X;~{2^F0B1g
+X7}V0MPelMTxUc48|D6`UeSbu9=Z<;nJcI at xnCr;;$z6Y>K){j3tk!e4qIBW1&pf~hei%Auq}K7$}7u
+ at S*U8kmWkyhC!8Yr~!LE;~8$#<FD5lSN+^16kOz7|LQK3r7}X at gWZ}fAphG!m^v5y(831Hrvq)>p&KE
+QAK`aNAx+XMTzPQ3(;owmu$0vG#@TRoAMhd5vMBBWMq__3n at 6<T;oCr#WB88ZO(4oT%*nocULKGTEel
+Ad&#%Gf}=IDoikM2q-<lBNmNmcthk4$rc^7d^n;)jW|q~JZZ^3&Gd^6mT2OwtR`M50`1Aawf)}!lGZc
+!CGn9g<;3z|(_&7r$ag?D at IL=T=9Azka<J0qThC<;uLm_dLp-?!^P)HnQC=`w}6cR at n3T4YUL&2Dpe*
+?xD3dP463W=i(#U|_sXDF0i;S7bsafU+TC_|xeoS~4oQ)9 at b428r|hGKTqXE{S5ag?D at IL=U1)GlQxQ
+V&pyA|HLlJo`Hjt+5)EqtyFpjoYClrR<;TC)dRx(-bO>8dl!VT^o*(%M(+P#+KRcnMQB48{)F_^a`u#
+XSQP&^|WrY6Yhg<GdyHA#W_E0HkHt8%tkuQ-fce4vMzm`9Y~%^cJo)C5TkHxHzbbihQhJkkT|j%3deR
+s;>d0&9NP_vBfFvG3fm2dBfFt+Y&Rs1?8a<tH}r(qpKmur{`U>-MxXuZ`PgnK9NUeGiY&0~H=qdGDY0
+6y)lP{Wp8cZqn&oa&M5Rv-iW+s|EOqXnI1d_#b2dPY#90mcfH;4g?ZtWVIqTBmvyuu>=N4<Ta%Kr_ru
+bN!3#Ni2ZKn8Gn at JpLGlgSqCh;G3v7&dBHV^+4ZSGf66|Bwbbf8tyX3Bf8Hj_BgW^t^a{r7_`R#dbZ1
+cA_IN}`EkaCo_*abAFzD;lqHs9*3=BG6>=h|VR{Jix9`1E{1R&jWB2&zvS>?Ve-w_GgIjDHF|IiJYRS
+T4z{N`wtq{sDWW+S4|_sQlqaitgi;&ct-jpE$jVhuW$8QEm<~Qe*eG7C#ZWCdsaVFBz->dV|f-eeWhF
+Tk$iGZ2zi!%2}sY!o<-r<vq&6y7KLNaB5~wd6plTM#F1xFIQA?ON1jFD*t19+c@~9Z&r;EfXXT1;XpN
+m-8j$zb_ckphUOamx9s`YCG&3z?j!S1@>Sh6CS}$88LZ;Pbi%9IJb3JbpgK>1S9by3wZ__)m11<9#Hq
+7=RLN&SlkM+bRxq;YgdAiBA<@t%&XU0PA at gxyj`O-*i<?~|y-Vep{;F70LJl}?wK1D3?Lr?5IliW?hS
+J^JPb<F><;i0!>Zs-Qv1h6O!wjHtOkv;Kj!{(zK_$xoW1vYoRyKFxxi{0=x+mIJ$I~t#O5Omo*%G*!e
+b+-F0;aRk)=rYiIOw{k@*Qs{X#O~GGUDI0c-kV_6KbzQh*}!+V5Z#>W;njYStir}+b!p=BJAa-2{^4T
+YYR%!_zm$tp_|I)}Iv20b3huxE2)ti$aq3$Vc5w>FE>7ae#oOjrFm1Sv{Xp)}^h1{X9o~abL_!HV*(T
+s5y65b{z2ym8MLdyIFA7sv)Zc(oEVn7|vd<iJ3iKvZ0l6=i3;h%Vbn8Fzu&W)lA8F~UdA_@!4|rL=o6
+R at 8!QUNn5&Ba%=e=aztMT+@*>88d^F+UDcjw6&O;JtjF at -=M+MrimYf`->ALD}?^vW^oH|XtLM4HOY*
+}P|*PFgMT$LT~d6>7Q(n~Iqkf|*T7Ql>)jv8l+TeHBNhLh-Swm>u;3Et?9($EHH!$W$mCn+k~|Q=xEd
+DkP3fg~G9^kT^0G3dg2G;{Q`iO;sGrJBcHCr*JIqB#z{r!m+%QIFfe?$MR0%-)U#VK<sQ#Q^Q;lK;cW
+98*HiSqoTm+(Qe1Xe{*v~c4$Z!`ppe>tb$CnU)kJH*M?@SP=ct8sY6Fkwx4H+2ji$+!t0wxf3!c_+HD
+r5{9{*9>wJ43ArhOzJ1t87x4Q<(##9fi_JAT4K6tY at H>~051liy;x54R88~ka5KW*@*4eo4kI;n2)Q)
+PCfy!(DGXqO6lda~?-8W!<R?}F+GI7*>uU+03A=&5Pgyr{TfqrTL+;8gE|J;ep5^)5L5rY<;rh6_%g>
+4MY31>v0oeOsJ6&3~d>`hl+d!~H~;!hfV4iN)-cGPj8Qk=j82Eq|g*ZICbTda2;ZA1NIBBZ-&%@q4Zy
+7Qdx)&~NInKkkw79!LIY!L4Nxud+{Cy^hr{UW1Nhi at R9>s$B~4(9a6ixE{+tM23XDQar{vZYjp1nvRX
+#w@>|K_qhe$1M}i0_REPc{1F>oPJD3_JDaR?Q?)2{M7rcrW6^hve$5$a62-tY21iCQaEyU=EJk!uYQi
+=R`^YG4$FL7yowZR6O=Eau6hp at tYR6(s7o{dfrZGA)ijiZC8sDjO6pm>)M at Hc|hNBw`DNNO()Wp~{#z
+#gmc8u|}#-bX9YZ~s6QMiubHXaMQiKS^QkBnmJ7)x?28vm%Z?U{ymR1~c3Ifl10H+pHvL@)WPB>Bqz&
+j2j at F}`rAVcv*7amc at WA6huF4y_#JK74THsN5y}%2AdbK%(#;P)h>@6aWAK2mlEMt4R796}Wl^006lX
+001}u003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<Ob7Es?VRCb2bZ~NSVr6nJaCyB
+~{cqbi68&9&#Q;HJd+WM(cC$dYn*z3 at B*yvcB>NV*o*^(Y9TSyBm86sU{`!5C<S)t2wZQEf2oRAok27
+y(o~Vn9(?9CCcfBF?dtG<vyVU8Ay8oavwinI?O_rQSN<4{}MbwpZPD0Z_{#Qg1qiHOjxzgAPmrQAHXw
+D4}jZ_rEwBc+Kda*D9W;gtqM>64x<buozXxI<A(IHDXmR75EEJ9|4j5QurB31eTU>Zx6t%r&;!{_w4N
+fFCOF=erm4USqGs&;F1*=)7|anig&?I<G8+G_H+=IWWxvrM`&HcC9MkzZBUe!~jUfT=Gu7SWRuD|$zW
+(2$Wd-k7C~Qwx8&!5 at pH-Iu$3Q-*SaKxrf%6;m6_?m}@+S}x2BBL7Gmxu%fCr1)Iu?0hg~h{f~wQo(;
+E=VGz3OY3-!d~I5WtCil8d^em at pKGK-cRc0_$B);KkqF`37a at -|C#ET}YkIk-^4138=Yi0z1bj;WN8$
+qe_H0{ztk7knwLL9ItRq*dGGpUMxfAPHL(m(FP%gFgY at DQEpXr=LoWd?q9Q*@7B>IB(qeo6_%@^ya4g
+}cJAHB)_XgZ<x at PYnldtQ4udH4uhlmfdbaE2sSNhAP_tQ3pQ27v=$;CkJAc(gmcesA(%qrdG<hOY0^?
+Z~4xjoaR&*PZs;9*w8oc;vec6qoZY#g@!dB=0C*0CFY4B!+~ENN1@(pu8FZMsr%SXO1$598)zXh7L(K
+KUBj=#!qR!aM=_3k;H;xY3lT%1bPSUS*k8j_Vuk}D#Avcu39i+ at s|iC at Zo+d7J$Buq*Qh4NNud?pbg*
+VWvkVE*ZR5HBAWVGIrk%Xc=Mg&bKy9sl$|HN(au6)ej1dogcy8-+HKc!`AL*~1VOn`7mGeO<8*OrC|8
+MXq0Hh%u_Tac?l^vXFz&m7-}|>q*YxWzj^7E~;b?kyA9!v*nB04=e?RKqV6)Y{{KY}}dz0S3;Bi0lCf
+(`e$fVi$aODi$yY_1)%`3-$7<5Mcpxd4VBk#ubuzq>fbcWMG$Mu5IZQ#5Aw7Xb8I5Jx(8@(fl+V0fMs
+_8gR7%{EM7x7cXI~&7~c&Q#eLDZmFXwU@(fq*myK~?i;QMV$)qdL0N&Mlu`-?GTgc+6HjbG;tQnCJfX
+cZAzGLaXhJ>{BCH4J<gKO%K^^LKeKKYn%6lQ_L|E=-fO2JI#=agbB43h}4<ToL|;S at c=Im8)s}YI5=j
+MiW4S^t-py#SPjZM$&Rc|5sZYw%2g3~xXT~VdoqsA6y74HT61>XW(z45=LkD6If&HuIh1Lhy+Bb{lP<
+B)6weG+ee8}>Q`=Qn#ciK|?PB8LsA2HAIisJ-Jymp?NW&s{>a?{^ZQ3l3HZS%O>P){E4C0NV+4q8GR*
+a!q(3vM*M1(|r-2v{{d*UX at 2R^Wr7l}l}l&Z7ewLitpTE%6nMhSXPK1aX5hLZO1=SuEvF)Oou%nP({K
+1r;zE<_7$E}(qjJaI9vcpdk-0d<wx@!1vxtfXEG5y2wJ-*W-a{DLTT)YbI7oipp>EqF~4j|&@l9CrVF
+nwB33uQ?>f&PZtMY4MI-W!`>eiY78`%>hd)v(H- at u7<VQkw0R}AbzK!R30C6vJ2lrtIxvi_5Li<uKP+
+rIaq1X{s(R`%5;!Uf*%y5pkSv_Q+p6yErs;cVMsN4n=x<}WR)xNam5mQDVg&)<O7C#**DZo%uZsYQ(}
+jHtJ7AQcY<Xf^0wTnc0sRCCM8d2Qq1))ORB7xpHs+Lxp*hEHzT~HP6wkz*Vp?SO at rU0-%t?6--_K^YM
+xJY=AKe+lW?aOsmRHAA=2azCi&nbSbw5dE;*;$&^qq&2<H58{dB%xajR=+18!6!y_Z%iZ#3=WLbPvm-
+M;$MYcZ>w1uFe2FCxYj`9E=m-h97T^%WtngOFO8s5FhdIczEEsE+A{x at SsWJjw|EonE;j{%r(5;<NV!
+*Q+O7{h#@du#B%3WkP&enI&#3%caC8%p3iGX1)IXP_NPX!^Im)GvNEFJ@*nkzLe~Ts&FMy*^R$dQi0=
+PZWi9WR{W~1Mibh1LW2%J2xc{UUqURW{Jx-ptH~x2A&bUR3tN8Ae*aZwwNe;rAHwdn_`dYYE$Wq`PY}
+pPv)rQ at As;>z30BUZP)h>@6aWAK2mlEMt4O5W<-a5Z007$z001}u003}la4%nWWo~3|axZdaadl;Lba
+O9oVPk7yXJvCQV`yP=WMy<Ob7Et2XL4_KaBy;OVr6nJaCxOxZExZ at 5dO}u7^z=CVsnHQz13Cs0a&1Df
+g%E`s?`da#35FVjcljg+^@fJ5=v6S6?&GC$jm&?ygRwMsXovfjK(vVjQfL`H-O&cq5lKU*xuA`U>Q+(
+P;AQt;n0@>1*Tyt|6!aHSPAw*l}3#p5v8etfEwx>slZ25r*>c%3uYLaeWx#!%RN;fLogN8Xg{My`(#g
+1wA;mk`NS|OG(M`mROtf}!(6IN?kh?R4PcX`jHj-MvRwNFT}1}!{RXsKEf*;&%^m1+4hw6mVL>%jFEq
+$9=}Tc0+r*e(T{r$h3BZ)7XP7g-Rcr at e03$SDB+L^NNs(H3QG!3hrPa%~eA5c$1;UbYwoybSwz{FB6t
+oP at D@J|?iHyM~0u&9H&irGg3=k3gAr<0xGGJk1MX?AlUz?VpYNroH9?e!Tp&C<x5fxOS`+2<K%t!Eq`
+BZ2MM8n?7baX7`&<5h=fxu8AeOmrIpbYiaw{1U4pzXK^Z#iQVbA>uFHhygP-U1sKbOIdPr4C4^vINIW
+17IShjj%cR2MICJR~$dsP>3}RW8Optw1vm<^8R79gzoGK9=nT0ceZ at GLtAVGYO%o?6Wi at MLt@NI5n&P
+x90{g_MgJZV-QIXIUOw6AhvVgJ;CV27SU?x%-Nka;Uro9Tn6DP|2XEkDb16NP*cP*@$ZsVMk#Z-olDH
+&<ah;|9gzeQBAP*oSFBIGCQ{1Wm2u{d8xvGa;ifx)NLXHK!0~UgirU|c#;q2geo^%&kj{R-oR`^a6Ix
+ZR!@yxLW9>Rw#MCu`zQZ=C`wXvqtE at E44*KK`qzqVX}m4}jZ2L`k67hXO$wOXifX`K9S*(w?D_eyTC1
+lU5mXnoXp)QqfVo@#Q4-sGUNy~o6s(_Ug|jx2#V5nCT`36538oud2zt3NW~wmWV=S5B?62|pzJrn3Jv
+_~1;iu%h#hU`qV5<U^YAX7}y(Hiz4XPA7e66jIn?U!P0yr_TQzS$Pi468d at +74VywZ;4_=oN{z}2VIH
+BEsG0WQ7q1JweJtQ5?8A%E^y)Qvl7j6?A^9oOBA2Dr5i<GOU4;{=RVaG?K9i*oMcw{aMWr(Ct8Eo>wA
+SstDg=Zz7lMc0vf`4&G5ytUe`6{VJ^4l6y%gm-z at Euv)*M!8vcf#rRg{`%9W$qXkG+8&hv$UilM#``F
+`>*gcZjB3dCVYu1Kn|EEmE~HtMPxmKW$Mm+q&qRV#Rv+t#PB?^d>e`t|lNDl8w4eQ_7-$MxWHi(iKPz
+HI#8F&DT0<GZ%{3<<a2HpL*1LA@{?|DTv(sbc!c$f_eMN*#P3uG33#on3djUQxwnMHc67C5QetR0Q>(
+QHh|6^`oRto&IXn%5D{Yj2j$*e*sWS0|XQR000O82?eW2mtpW${R992v<?6OGXMYpaA|NaUv_0~WN&g
+Wa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4yiX>)LLZ(?O~E^v9JR&8(END%(cuNWyGYE<fjRwrE><s?
+E#!W|HViK?g<p~W7<UhG}8yH4W%`kS>4IJQaC-hP64d1mIB*;${QG#@x0UX7+O9u0<5ZwTk(o5A03#P
++0h0*ej8jpA!ASOfzZAaD(_{LZ6 at xl*mcCz;#YnT`ZEoGdT!5hJ-p1u_KFfI;?CG}>odBvBkEg8R&HD
+K!06TdA@?1Pn8&a=EXN84O^RW{CArOj)dLN})CeoIx9UpFjUW5RK+8^rHyo)>gwDHL6Dp@=69$7{ynK
+k;>8SFC+n&F!ca49<3FR;R8^H28 at JRYBo|7^%FG_Un!<i%TlNiLCerQQDUc%$^?8SKw-dj4o^fFU?TW
+UD)NtIz{Avv5)n{2Hfw__);kWbrnfLgO_{<K3RG0hELla|C+9KuQD_9FVQXc2b71PyCgK%|z@;SkjNM
+Z}PI?>r5tSwhd~|!eXa!;iqymQ-n?H4PYaQE^bP5r5L+w1>MhXs<2EauIyCLrB2LV!{Pc%lbLP#`*Nz
+@?(vW2gs#r4hY0{YWC_}ZV(`_skUDcKU!q^17lNIc#~oPen+#e_*IaRQhO=YwnV=%0_qqs5)g{&KXK4
+m}SpZ|2a4S%1D54Q|K%Im~Y7vm0;d0(gi!iY=K<B=0E>2{M+%WPpb8Nav;BQF}Ed7zMClk4SCyk<&y0
+qbssaf2xO(6zi;Baybxs3OocMO$VM7r`e(Dt96%94*l)W(EDx&e(#YH6Aux!z$5od9uo9rB&F)Wxzxs
+*PWt5A{n+buKlDCzdjPi{Nsb*DPA}fLL{3^Q>Xf}MI at PUE$r#*t<!_kMXtqkOh>F5sl0=4|rv?Y4_0Y
+^RZQ(<UhKsc}G<7laH(cP(ZIEd^tC{4QoeRP2N6?OU;o$u>@-9m9J}stH^IdlTZhc{%%f at yg;IpaNQ5
+9OpWjk*&q4gFO`klt7?PX{}b*t6#Bc^p`n-}La*Gx-?b`DKg2+Jj>)wNtY8l$j~+tcjmzBJ!k+kfsdE
+~uKoSp#cMsf3zmjj!+2x3i;EIt`%@93Fft%vRkL?PWv4JsY{;ZB&$Oe~?T)&Kk|Kn9-$RF;+t=G>H<&
+;A-9_<Pb5)&^o}*lQJe7(`Gw^2!)er_6oakxLu%hi`VFMJDF+8(;olOPXej*+ZB}FGP^t(_BVdte&J2
+4<psdmVQO6*Dkas+XnUWX(K5hQvaTCtq^H`|hTb&gW~(bJzlo$K=h}G>@1WQl8+t>~CI|GMtY`p8^&V
+&%9sYK(f5f}Galzk?&Jr0 at X(m{+U(v_O!wV@!uW~vvdV+Pjj>paR`pEqM$Rtyy9@(}cAHeGDWQ|IcLX
+kJj4rrY*ipg!H?vWYDLB~uRdrQCd?kQ3>irxFy9I97qe|^eeAL)y%$p6cI=WU&@m)<-wuk63ZWID&;F
+wzYz|535|eWgk5m8!J=KmBx}+1Z2Kzmn>kDlano0KF`q-Y-y}oqZP7HN9_ecRwxJlB9_D2V<JN{X)rC
+T)Q&z7iiEoG|gYCOV2sB!KGQEkjZ+pq>m})*iYV|T3u<6NfGh at g>Pg3Sqkl4-^>?-+r at HmJs;Aa at kP7
++E4RM!;VBhddASbhRNgJpm}fHx%h$Z&?JAYCcP+l8%D#=GaTK6PJ!a3&E{)CswcYv;P)h>@6aWAK2ml
+EMt4OV!Hab at a006ie0024w003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<Ob#7^PWp
+Z<2Y-DA0Wn*-2axQRrwOD;`;y4rkpHDHj)rz18atZWStFF2dP|~8K6am#etF}TRF~!;tN4B$F?(MVRI
+3Yk1L%Z#r)k<K`{5<b7=Hx`bpwqkT4`I;n_J)%lbOtxwU*Q1lN#z8lO9D5XKGM()pv!y$RKPX+od$sm
+w;}yTxWE%{>2g6N_(T#<G7cV+nw1QpA5uw??1FqF0gDI+wg9PtM*1O<!gC{nTdP$ZQqPr?g#y3wi1Fk
+L0>g;$bl>B|mBfenIzcR7<#L4;t?{a*1fyGnre)a(p(Qt=9Rx5|v;xLN5dMw$sU}?(N>1l7>Su`B8SV
+gFyZkGRXz<AC3L1bCN{|djYq?}$LNQsc@!t)YI%ivb6ANt&geDE>oV$Fjth?ZZfM5&xgpz-PHH*P>L*
+T at xBE26iCBY5-pBYE~74zw0t+wLOM}3uAlJJ$tjC?t~g#i($3S5$qaJ+sL&jacq^MHCJ6a-uWk=hf>o
+hcn9$Ydi3I1J$v^M3+D at m$@l+>blZH0|uR4PqU21;dp}esp)F7;7l>8Ul0|&p1u333i(LK*I!fiO#_f
+2#AV4VfewEKrF~24(f=2wD4PhdUbO<h4%0Z{MH_i+r#OXPe_Zdz*BT^ibPjYKoJ<V;%+F{C^!OK_r~2
+T<Y;&LgZ}i3lHTc0hrP)JoSQMUVbmT^``z0?dkmx7@#tpKGts$(WF}U|)ERke;srvk7+MmO#HE2qRsV
+wS6)0ff!_xgm(9Isftn$Id2#MA|<imi4kBPp>vNPx>pbH3 at tiuzh7&{oACGR52&cAic3eT*=FE$dn;n
+x6NFhO>QE)d!Y7~^&5Fd-G`bsKrDrfpjdyJgt`w-eksw4gV<cwzB5sZ<smlg3mIQ)%U4wo7!FsBAXGd
+izl&lP5L|7+^HCBhKb%tqs8-*&C&MaDr9}efA_8cJr6!hHW+X#3N^Ml;^zebSIZ;d&j(r14$e6H5yYD
+KG#zLjpZ*BK<JSsWh6nv$ABDxBErjq^n}+%!U>T(l>X$V(X^Y*IuPlZnN85EmFxbne|>vBn_i83ldGG
+-1)PIrHmwR7#hkQ-N2%JW5QNRX*%fky<u8%x9GaC%#S2^^cGdo3Q{>MoSl%$27ciSqtfRA;AxN;OrTc
+2BujXutXdNmuHU#Cw^w=t*0Ws#)yZi4St;YR#$9bsM3aqI9AvWXQYPJ6S`;S_QX;re(ISg4yiexz&fk
+bx?c at mE0UmCT_R?l=przD<WP$0%1RT5$}qF<|L$*py$V&pEUkNX7oEYtcc&+8)<ayo7xN-|EQ%N6XD$
+ECANCNEs+9%Ai>Q7n-^apTV4MY4e_q_PAO&8yYzDb|bw*4$}+#N=DsWpt|gWsw}}J&*^E@;F-`EC}%v
+7u3P+#QToOL{|39V{sy59#*z{?f`qiIRqp$5{!Katdz<5afA(F-V=Ei%*(WP`^rf|IZ~w6xpQ-k#hAd
+?kUgn(hPC>3>g1RaUrBa%)_Q>R^G$s-k#UBUAM+Qbm-QUzbfDva!fJfn-c%wz60h$P*2biN`K}nY_I}
+u^MS`u2ry3bs&Do%*lhbj)>49abzeLm))~$d_iFJ^KKE+YzHBz^lgWkU(bVn<6DlW?HI6I-|^zm&HcU
+~j$yo#l=r^@C1cgs@$Rjrv5Su-<tCymoO&WEvxadKeTWh72GYFb3e!DyY@&DwJcl+M-4Y4!hx>O{8n;
+q*fzxw4^v-_`Y;MZHT at FEB)EfYcaHPiu&c>yoH@)(}nmwDq4DLIMB#hG-UJ_*lv%ach6bk`3Mvy7q at 3
+OtzAs`ZU{1FeNA^*xRH$lwgNDX|B&^4JEzfZg;_hdVPVBJKVeF0Y0lXU(<BTO|Q>gqn4(>XxjLGA3rP
+h3+=FF3gU8aX%t#zLI3=ykWGJOXBx&cLa7&?uZ{B3JeNsU97Fz>w)K|^n+>idpYF{yNenjZvxgVhH^V
+ELcdy+apNRHk&<vu*Eu*IQV|k)V2A{+>X)bMELncXHZhd(`3Vnhcy5y0_+2+TbS?I2aQPUT#y_L_eqr
+h82qxP3xT3vo5p{Ms&7OKa*b!^Do^HupZP<Z*FDT+_H7g%Sv_Mf0e?IFkb!_)Cb&FHnEu~l3j9?`3#L
+9Kj5L at y11txSiCWVYs<xL<cK0xw{K6klb}J_hy(pPS^7WM|WvPv-HXCXCj?6cQ&1ZYIC87}b!aqks03
+&QJGYwRTLDlJc)^2S;36brpH_+3uanwvY4zarF6^MnHFaUGY7x*2?`pDwA1-X=qEOgLrKcDfdSQ3b|T
+nC(K+;ENb*R5bTF at caQtC&Io#u^wugO9%tP$6k~lykxV(dyFNqdm!(4uTOWm6(6 at J-0@TqG^Gr}5&vI
+>sN1J}J#CQCPhIAFL at X?Rh%Owl^QpUd^M(?Z#bM>FZYgvK!0=)eQdM{97c>jEnH{R4C4rEEKR`~}|O9
+KQH0000800{-FNMHLPYaRpu09*<H05bpp0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>W
+ppofbY?hka&KZ~axQRrrB>T+<2Dd|*H;WSFLvvwb{1PCn`Qyqu at j@dL6Wh^lORhYn+Qc3B$d?t`VJ-e
+COeC6t0!x8&dixJLnc>Ommla2o<>s`kNShDKY-qN*8dYez+O355UdeqimjN4IP_(Lz%*p?Z^n7#O0|N
+RVy?4;js!D|kdOF=Ty9W-Ou<~pLHH>e9Y-6aP?qI_#gSoBXnIu}sfrg$40EZ<c&soon80#dWIQhwDVu
+AvrBZ7HjeZk4cXzjx;v(FIF6ZD`tOgG?sy9r^PWn<9#g at 5|s-c at -DFQHw)GN#xUn!QsHIPCBM#6k+)>
+2gclQo<zRiw7orBoq;mZ^CsVfV0=ImD3wg$dJTdNRU5B$D5xB7P<lmTqk*7YVgvRU1^9-g)>mUBDPMD
+TOB#sHmHHzT_+>@|eXaG(x0dV`F-KaB66U_>~YCN=je2dk at IyyRH3(N>c=G+|I6Am9Yg<K_fC&KTUIE
+iA at r{1y0jYJEnWlf<vbXFj1skllSz45>lh at v_`N*$Tg-pZ&3!q!uL_|JX-|NoxZ^LuIF{9!OJ~i$!Yp
+Z^D8s4Y{MBPrmj>Z%$9^xg2}+^KNF+d8;wW7i&Z}y1=E4=!*J$77v^0r81)z9t_SmlH=p?f7r;l{S!~
+U`Wb)qPlu~AroJ`O}jO()X7aFf7fjohA^oBI%7#VF8M07+p+n<^tmts})OO%75_rOvR(zM`RG1?v4zO
+(64mcx8owDhstf-fBcMdFpy2z;UsSxTvgTuRk~p47%dCtc#UZ#td!b?0-t1F-NZ^3el>>Epk=M6MhsR
+WbwD4$PjKm=3d{f$1t9uOp?=Y?NG*D;20uK_AV$2=0J%K*Wl;2D2z$Gl6?_ at x`}aCgqokk}YGcvmI;^
+3~&9(gl-`2IJ4;>q)qX{xi{;<1GL>Qj^o5U(z*bar5h(g=q{kEfCisJ7&5w1!my!{r&ZiOCwTW1wFlW
+ZH_R&86RLjRLE}hmjj8CiGL5FQ7gGj)sN at Lpk&J!b+V^Rm&C*HF=CeK>%C69a)$~FUWms3B(Bw+Mr`)
+91x1SEY6fr5VEr@#gF~gp%*j^PjehAwqJ~%`w>e2=NWx`@L8gcW4M~CKw`fyl47Y9m7bz0}B at m;Ya!c
+>|Gp5d4Dr|I=1iu{LlM at CQZXX+NGdSw28Wr`_tUYR&`ON;5|N}(vH%uzI&@a+L^&gn<ukGJL52k1CXy
+ at pL(j;dJ`_lO2#L*>8LN4O^vI%Nrp*s{MJk^SeH7xWiF7(9CedKo|d7k}%!TNhkg{)3p>>gR&9S1hiT
+ySp<7PF?x~em|9JPXV*1fNt#-HrlNVtmb)l`<m5{U*P19JHc1&b=)@nGgIRC-;wLuZdT|D_YY7 at 0|XQ
+R000O82?eW23d&zkcmx0dCJO)nF#rGnaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR
+9XX>MtBUtcb8d6iaMZ`(E$e%G%!a1hAu90A!d6bKMtS=TKAn!spW^iiOtBby6Fs=UP2e*F$f(UKEq#q
+<z_=klG~$3xF%v&?BB_~sY5fb~uzt1k>|5Go}lR+cLXol=6!EihSw#tUcYP-HW5%^Iy*D9grKr?D)7x
+1G`!*v2T~ESB+{4dOl1l6=kJSBx=yh~zxafWF)HdiCL;Uy*)!kUySMj9{flFR83-ks>8*{9a+_ZOou(
+xWG;sdoYlds<CXHu)Jg1mW|SF%`6-2eWERsY>PU%_!RD=XbCH=zW0Yy=TBog5kjNsC;?3VzM{{AY%p<
+_3$pv>aLlY_Pgw3~KB&#qjDVBL7HzqsVy0@#TU73VvW~~&I9B&b|Jfh1EIWfov`}Nis1qR6cIz3iBMJ
+zr+$vztiq|lEPzPb7oUCVuAs1=tgL6i}R{&?Q>g|qL^>gw5r!csXN{TS}JUAh4BW at OF26sX8QER2I;=
+lznW@<SfK#JkKh<5&?LI7KC=LSWyBo<dn*Au<}I)clxvSg0((?sTL$Zuq=v4<6PMLolug=5i$<8Nli{
+!#lvqFv<VCwPT4!svK^xAwAU8kT2dkX;s+zZREyh#^FfMXu+s$(}Dq&Esj+gm(wggnd(lM6V<ZQ%;A0
+66wh5x-^zprc2+?5$MDPORAb1wh>sS*(dp%w<#GU#-{U><VkjXiAYMfI!&7VKZPXcWhq%p&0iE$KqAD
+H91C*GJP%$KI2ZVg;yPje@$vUBe+}I5OD=336kVXWhHs8nPonoQVJX6+rLEcCj#tC(5F&B`Uko-*c*i
+XAaN}Z>ESzZ&PD>M9(mi60^?xHgx5ZH+XSAfbffk9QHAuwT_>ddgCX!G{RhC?GTb4!Fdku9cpr`)Op4
+3EtJD^eJ5_kjY5g-7P)JkIwdrp9o*1jSDP4}aEB4WjSVtvHm|CmHDOjV7RNBx=~SrrEDpF|O6?c_R-l
+KgzmOyyVF!oYc)n-3OFEgD1lElj>xOmdv^VF+`irjVaJPDDFWg=x+6o4TfMFo>i%wG5;E6`T`k;kbSs
+CY+4 at Vl9dSJ_uwITvrey#nHC&7B at nqH45}VQRN2Swa(age$cGzXhM{clY&ZyUb$Q&1)`<WLxtM1zy%f
+t-xHqMDJN=~TXMgGFwH$TxFmMve%`eHcTCrT-p=@FR1^IJt$!Kgz9yI!D=LGVHs}q#oU%e6qb<UFQ8~
+?R|1~B~z)b8}Z(yrHH4SX~^qdsg;f*k~?*+yh=XrFX7LLz!@d9=^lz+X}4i`SG+x$&*z7h6;x;_SvHK
+*XpXX<Zocpl#fKcx2}{we%dS=`Zbr95#ZnDsku%%fJm at 6U{Syg|E1x^Bb6ZkAva>=B+2I~v6g+jBC%H
+zF^Op0 at FO*}aFmdv5#>y20;t<A_tfd;c%1SGX at a7B}(BXJcM5i(94p>j{*9zXp&WFXf0B_A=d}wA99*
+Bvbb{>fu{S+mFgg$t<#e0Z>Z=1QY-O00;mH1*=F0Xc0Bo3;+N*DF6U90001RX>c!Jc4cm4Z*nhkWpQ<
+7b98eraA9L>VP|D?FLiQkY-wUMFJEJCY;0v?bZKvHb1rasrCM8W<F*oh&#xd76p~v<*t8D|1n}bQ*>+
+DCZMTc<_Mu1vhnDDsjV!4m9osF=e?Q+0DT%to$@cgqvPBN(KHm(puFH*BF4tSTt<`cV^rk9nE9A<Q`P
+QnX`+l;fWoen`Dz&;SOtbDMSyj5Yor|BgR<3g8zn|FpaCsu|;f?mLRx-oy&9;v}mg)V8+NY|r;vN6?U
+0s*;r4VQ0LoV&QtT*STQmJ0+^isSpJq;t|gVZ at 4#pKgm8so^h^XQYQHAGT{RrPWi8<nqT-AnpZ*mN>n
+zSq{To(picw1-N$rw5sD at n~zAs+COdC#kW>%>KdNm4)~^dHGeRfeF?9TxY6Q*|$2iQ<~`ZCKb+<x5^}
+?+p^5CXNt^VxzYP(m4+_v)xpg9i3P&*hu^*d<IAPYbC`Z1uA+}Bh2HYRuSR8W%EC%rs5+X9==)EfK70
+=YsG3fSu4&)<ZJuLSx%va5#WVcm%`rtJ?t6&W;pyoq|NT&x4?0sYuQ&9$k!vML(DPj1D=5&@5xYB`-i
+Zyq&<{pzD`86}a&xnhd!zqSH#dTWrKPzdg5{2!PwwOa-;~IeH1 at pqY@Tnyr`xbnhqB0q#1iK#mzAvLM
+);pQANWb`^=7*f#dfm-f8|;@%0lI8gTDs+;V0s at Pbt%;Dvd($6=_HAy9ZT+O}$Y<7G$oC&_<{Sr~+*I
+cnTCUZ+G6 at gcM`8@(jAb_7o;oSt7(6Jdh82HSRP_c&n^m(AtC_THC$J4eT6x+DR8Ux(EWtD`#=>V%`&
+P at xCln5I3|sS^CwW?VtMZLjqV6emxmb>fB at DehGPpYxY*>$QD?~S%ciRlLeX}g}36sDFUX?;MwPJIfZ
+~C6VOtK49}&^X35O-vnn!j0)8Z`A?QU8R+5&`PTRYVm3}s1gD-|+B~@9)#7%GQV9^y8Tw^bh=&ghEZE
+NRCp|oZ!?OZso>3H&v=aL|ZbJRae5~RY?7`@65j)>F9UK>mLa`d352**afjl&~{x`35p=9PJQmP(k^$
+$-6gYq6solNFKmEF$9i9L{OUM&I69aVH-X*|-&EK#sGDXtIjntisl8V|Jx(bx{y)?;o8^eIHnZSP>6o
+nTc2Zxaq5#K1){1Q~HB15nnNqwOzcGxlyxDH8^`5d=f6*r;40Xl-60`a%_QKBI at nz#apKGBk^|3xsJ%
+@;^e46PjNiv6!sWniDL}<n47X=FMCdclv-+|fO;$tfh!^^V^|PJ at 328~PAO3+;6;?(x$NR$TTrot^TA
+D5s=-XCq)8N<n!;1-&ynQ}rJy>9s?>z3xSpY0hz3T$lMC#x6#MkXL%@->sD|W-t+<0ABh?%Y=EO1nS+
+)g`^uD4C&&D`xo^}922mi$SjkxXpzOW5q>Z7aUP|1UbJ6;|L^O_TUO&ck_thLIsb0>Nwb!`%0bmS+BT
+F-*mY;&vOU~aJ}<VKlJJhEz9Zg3nDSt^aIeTC6hKfuTOSmu5w>)Vi<EYswrG9Pn7{!_8X7W7E4CAG=6
+%B1bk)@%Pe at XG)Il1Ys%Ys#afIN>yB{KmJPECQ_aQV2jP?1(hP3%$;@EK<d`WojSaz7a3K{^ms at y1=U
+%uuAT}hCtR4Y{`+kz%!sf;#JAi(Hfr0+VEWeYDk=$o1iK~a&v&tdye#7jbDvZCY>y8BaTpiZe>1sf|H
+Be2GVo`np at RIP*J55 at fK_blpU>*I{JpfSm;@#NGTT3R1|6lI(^Rt%cN(NKD<g~mfhSiEgUIDUY3=Y7L
+~W}dtRdUyeUcOCAkgk=a80X6O7f{6jp|ybZp~Db6;~&w>92ydPFS4hnzQ<a-$poUO7^EX{=}P)vH%cg
+duAU!gDrULXyVOFUp?3Da(7Us9{={<zgl4=#j;+ at _E`WUdg`}e{T2t@#?FH93KVX9F^qO-bI9FqL<Nl
+-7nvLYA9aw+lGa?XvvRvz46q4^wix>PrvO1CXl|Tz`%YkzWmZ9fDqzuD|CH*)y+9y&XSha0Gao2e9&(
+M>yYvr!*~or91Jk at 8t=$qDVAfud_FMa?2$SE9;(BVFk7>;Uz8N^(j!~d9=goN+rZB-KMwbJ^*slkkJ_
+jn+C?$iLGLs2lepc|Aq!WSj%|E?Lj=lW2-c at HIG3C~`2#qDD(uz8<@IO4LA-r7-+qO8gp}td*i9*FKs
+=<U{%k3g$SQR}3&tfc3>=PE%$wQRjFSy5xsyg(TQ~2i at iEbC5;!m_fBFcTQ8`#LAj9urn{I*IGIE5N3
+PBv-H+q1(%(!aZ<Ed2&0gH{QZ&eo0W at 51zx&KpC`0zfNp5+VmsD3 at 8qyT3iXACdSNuZw(zkSo2z;*ib
+2n-78L#w2D(_7l2)rrOKojZ1kMhv^_-VCghX|iSbzuJN`@pFMf=<x at aH^3nDltAMLE}26R=i#rJaPP!
+J at PX$X7(UUSs~15?QC}6LA^ap!z!!}Q0wPfqee2q=t9f=k6X&nQ!yIyNfMSFn>AHCv2ZmRO>xS!E0fZ
+M>+kS_A at jHg$P1awRsODgVzB?M!Zm-2Hz(V1 at Xh&Vt59+|J6ECE`Doa9M1LZmlMx68wFQ_G8<d<o*_t
+f04rG`?ot!jooRjnTg7ddq#BdWk)FjIZtNFnuzUAcv#)t;ITH%_AFiU702Gh65)r1MJ&udxwHtBVJkF
+VZHUbd`6 at +PQo43HxLohIE4+H*;>(GpeB8#H2PKcTTo(?PIM at Wid~pJ91Pyo1ETfEg%sLZpaPMq@}XX
+CX at O|_G#ir<?e0<=rlrVkJes*BQ!ZQv5qO`n#mc1diZ6j42_jq=+4&io#>jTg)*n+{1EVkX0d5v=yMc
+<61Iyvd^uR}Fy`B`^x$%O)fFMcsMAc;fW;^jvVDdQmYm<gO;9=8_h<-~oNE at Xx&rt8L8;0|`DTMqqHH
+DPJ^F~!P01?wJ9)K4lS6|v{H@&lu=6cXewfLCl)S6OEtB(>pB at ftne=Ido`=JZcFj(@MQ-M+kZvS5eP
+~4Jl_Z|gTWpO01U-U4iP)Tn0TZB;=aAkRAQ}7xDS$L$#BJ~FopK{c$&^NP=#T^ni_l~b^09MGg4Q#qP
+;<wrXho#$w&E)j%Aq<@2_!?hgLuwJri5|o2}19cYs+Aihh{$RX_d?`m!kEyW?;gg*C3-l3c&+_=j=&%
+_R5!~xvNhX?jfjB9!$HK{gM#%WNQMi{*MB6oi_JlZH6Z<WpQBOL}L^eD(()-75OgNzRqMtcQO#z at IY=
+oL=3JK?e*aP{(ucUF-k(<wyk!#ZZdD%3QPv39~ZNb;+41<AWEJkeu6x1f_UncG!s_d(~QK54H{o at LE+
+ZSY)(gp2|uSeYU{4H;=f<~*VWwFX+pQQ(#9<_!8or0r1U#1IN*7K)5%4}V7NC%yhnRDMw~wN^ie0Pdk
+A$}f1_+UZk5oCOmWbk$_<WgPkrhnUc`lIaNwXxI3;v?`ov)gj~AbmZu-n&VhEM!#-`5_D4dv1lW}2~O
+q$|xS`^mkLV1!pRrL`F9~mkbpBO1 at Xgb~2Tf at B2SE|#Q8#pDR-PI)_wW;jE5z+2~hP2$2axTzG7<f}?
+Yob0)cf?0=h(|wH*GCLBRbx2iPB=nC&*#lP)S5019RM at bs5@(%iGRzK3<==F1464;8cq9wb$n-SmFpF
++gv~ne;tklmfO(K7(mRCF^cqc9(%nx%V^phZ>b}JBdisTlzc8~?@r8)H&KLQU48L5?U7I at YXv5a4oBm
+9<qsIf?O+;K!HeNfrwjCMn2sZe(B-bm3)s at U_M$6sleCP-PJTWSA7o}e at Xls>0x)`cD%?S+jCJVFv%V
+eO#(aeEYb*FUsd2kd$%?;g^yX&H;cK*Wm>GaPmMVfE9Tg;#lo$^w==|yQ^F*@L%M{GmPSC=L-#%AmF(
+DS}d1IK%|xR8{#jOBz+aGcejCGh9S+ls=H92?(FnlQWvYvayW0KfNNd<C|F7-iNHBj;KAbP}gIE5I0e
+i`+Ij;o&L($ke10zH*oCx+XI<R2nE3YVAx^y!z|pC8vBw{=PjYq+eFB$?FgA+?~#zU?UlX?=k$b0WGy
+&>s0f90wm%SUDCD?vsUNsU)gH8bB^5ohk)lVAmli8H}HG<7c}ecox*cHcXTJ$Z0z#t)pfrp(~0C7{-|
+Vhkw_ncXY?;C$WgU51W)5QV)OrQqv5cTK0&EpwEgAz#r0 at m@GhKCW8YUGUjJT1c;K^ZV{2W-gF9jRkl
+*TJ_zxXD7997mxs9Vs at O{yz()P)&Ukcbrno|QT)8;MH&G!EXP)h>@6aWAK2mlEMt4IM}4GfwN003bv0
+01)p003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kV{dM5Wn*+{Z*DGddBqz2Z`(HZ
+cmEZ<7K7zZQPQMaJ7d8im$+N8EXg(QilHkMTB2<&vZ#qv9N%I8`@P2xiIkK!y$_sGG!n)4!T0 at 0E-St
+valEW$U9mVO*{0-`By=HoUP~71_mLS+sbn(SF#DeK)ha7i_LU3!BzEm1Pi~nUEs>CZwnSJ}@rqDEuGR
+1iUqgcUc`e)VxgN0iwzMjMrqCFpk|wuw#e_vFvis3UR=X)7Ps!Czu6aR at Mg)Fp{#wd1O7e^q4I4ks=U
+1n^C|Dvhm<)7df9SK&v-^aV3K(b>{0}-Mbx{kJlB^(doe8qxX`QnXQxnM>1*+CN^^xb<;@@Pe1Nmr{8
+d;t4O_}8|VVlV{xxPOCt0G{<DsuJuH!2u>Q at oR79FFX(U0vWTFC-^YR at nkfNxe_BT5>9vyxQ!Ek|o(P
+OQz(4Bgsh70HlEWf)~IYz9%^q!lNAEOS8m at 79##im^td}Ur%@nIKi$!9DBSB$(D^PMrfLXHEEGZ4u2U
+b=!OZfD+cyTGD#9zkOec6V5w%Z)q|BqXT*x*0<dXSI~*NOot1R}gHJ3>+dQ)q8mkY~#0$3V;0j${jUz
+c9uIt6`@Zltv$mM(OS?1GDNVY+cW_Z$Zxd;>$Z>UVx at tO;XVzd1CqaitEl|)5TV+VF6wajvb#$QOqAp
+G31I03M at Vt<Ix8%BUTRtZ>TXe}n*R<w+DfYE~>F$7-%@2o1TtdO__m$D_Av_56N#tF}JJtSPW`jOF;R
+cBcuM<WP+pmh at hqZO0q@W`qlj&aR#473m~UhHC#tQiRBnEX?5Hb#dXPsyu;uzeRW at Z!Z$IQnxmdOJIv
+UCiUNllcsQY}AeLAvipE{vssL;U6wWThLj(+3Z@?2VAMun9q|ZPu`*9gLS7&!Z^6Vk}6kkK~8hK&Ism
+ at 9Fx-&{LmA0LQzP%6q{g?5- at iYprTGpgRnr#ir-}^#BXpib}uW6+7Pm;6A5O5SQcPz5cE^Amq3W3GFx
+PMCU+#KJ63^X$}M9B;W;P<kffwwTX at orCL$d|PQc5NB+bb!+iiK3!tyFmlLRv&6yiW_L<H2A*{a6KU?
+Z0xe5nFMYbQDeoFwRn%)^xxNnWRHIx?=iM{aIlIbbn2H&b%Wn8K9uq~1Ulp-K+$Z>q#Ry{W4l1a%a(q
+)N{7j^M6f=*Gp*>ndR}gfj3Dq3K9PM}Hya3xS}k7gARh<}i0bO{j??h>(&^r(}*n5&x|UUcoXE+y=1d
++lai8_>~v=j?fYmY^EGWFO?#WqI*vY$~R-KBbVjUrT}8bQ5eW#U4TCG9mZx22;`Q?n1x_zh!cy3 at 02Z
+RolC9GoP(pLIz8Up_~MJq%(%-D*{-u>ZB-~pnhCndvB0r3F6b&}V<3^Qcm;WKLju8o<oxt1zPLP_ouB
+-QM)Z6F{O2ff-)vA^3%1TcI20}ae&@*jHHePg(@mK}z|59p$7{&NVvPt{0gNytLw;hcBqw=x$1s&sW7
+sx#Ss{cCT12zSR%@vodOB?h;_p$CAzzaZ9u)opqn7K-^Z5Gm^rzW8B+XF#(`<Hia{lI*8OEv51OC`@a
+9L^g=nl#{utyA0O6JU43|Z_H^JokhCN?Fye<mPZuxJ&9py3Z6Z*C at 06MaUGLBuM09}_<qf6zhLF!OXu
+&J5wcih;U871_x^(60Z@)z#a}`DF~cX$0Vy1Fj!<^BC$#_n3SUvWDaLYX(xPbnW688Kg$^4{dyygJCs
+En}GEqG7+13DKPMw=7Kd+gN7h0G8xBU-1#yj&uFz0 at aNg>)+tHAM4{M at u6{l0*V^`XyNya-24fuo$Dy
+j~CanPgSjF}P#sM#ep=l?OJ)lS<YYL`LZG<;u^6ZwWAk?5jR-+D<V`Km_Gce$N7&|QBGIk;|^#m+@$;
+tO5I1I_liC3~k-+D`X+O5Yia<y~8b at Lo@SAGkLM61YV9*|~;xvzr`W1G%hh8Gc$_e at ovLLxFqQCN;{A
+?T5$Vvsw~A39hZI{;Sd)f(*x#Rz&p=x1~ZdFojsSONc~_<@QJrU8LQ!^-t#+gCDX5 at wq}YxO4ar|4cP
+;6t@$Vtg|PBDssjf?(~gq~Qb!3)3@*j;pmyyB~mQHGSAaJ%hcjOIGQk2%Lr!75|5fFLTV{<<~7=9kYo
+(;cSjaf at Q?0TQ$q^LWp)`CM4!5NEOsd*)ao5#pq!LPZ`uq_>7jLGHoWE1T?LftgB**eMBEm<dSTjRmm
+3LZn3ug)AOmmM5dngSjZ1u`}v4{WgmJpfZbKn!`MAVJJ{Xv7CZKi9x4<806CIS&d1_*BpAq!NCShfu`
+J9!6Z34gI8e!!PshYe-{@_AVEfN}wkn!|2Mn}!eP*;_J#j)6B-*cp+G>INyoTB;FpII<FUMbr$rJL`=
+htQCPaayp%x>}wvfuAmALRbEZdtGxa?Bmv!qLnWRs~!WH~MI!R+AieDk}y>J8NAkR5KjMYK+9_-U$I1
+c4Aor)m-(sZL0ufjKG>q at 3WL`t$aj+yNo(Gu=<$p at 2^*po)z(GwV&wc{fgb~A1uFlxi~tY&%ZfbPB4b
++ZvxQ;2YZJTXd)bZm_1ZL2j(`B>no7|kUz7^vCFuP)xK(;lKJJ?<&?b6?unjkHbPR)L@|cHtYn31>{=
+m#PHbu6NzjlBCLIz#)9SWYxq$F+9TlrpE!M|IYstZ789L-at4 at QW8yk)1YCf6(I`LKPn}RZe7IDS?sK
+MOgWL+1xEHyHOR&UKA3qi96iJYgqW0Yb@)@pY^9Cu{u#><l&vTp&Y8#TpEd$8HS+6}1&x$Z>-2wD|#4
+F;sA_vj2$&>SQ@)wOY|<VP{KGqT7*F at szfMnN|Irbb{tfY~&US|_+B!k|ioIPXaCHY;PQ+Tgfh<Cu)~
+(4HL{qc<3YzVyplnuQ0RREH2B4-K}wVC$)AgyfFqHFJnYnPeLgbPU~cpeF?$@WgeYF$C#CELr8O2!+x
+T_$1=-+=9<6I5?tF-?(Fspm2jT at T*j%ct;x at k`RH46$Hgt?n;KL#o}C#nxU^Ddc)WvD`>S-W1;VrKqP
+}E3tYKKSb+4xF5Zp=8-qM1dcKbkRic)OlEUwO=u9{DYF7U%{=g-nUa8qbpbpClOGrAa9N<~uRg4|$zm
+ZZb3&yovz8X(@068mS5Cu$Mv-<$vG_A?x!{PMfV9JWnbpr$EqTd7jeF81WV*Fe6TQR^xJ4Mre3=Stlo
+M7RvA`S=+3RozhLySQ*-_o5hZ5DjsxD$rT8V%t+K*ScgvpIO}><;<`t`Ywux^ZFK at qr#xmmCOXf-Q7Y
+ at e)b`^P1?rUi;qHxNbqsY+L1+7CZjo{PJ%n=keL>^~t;Qc|3pf^X&57ylHtGY at aUOTOLD8PX8HTr}MK
+6Ii;aj6e<<iC1V?79{mZ85YVjcvuguyA=YNNl?Sa9v at vq0T=WOdR{(QTmNRg5i1W{*@1g^ffjI6lY_V
+8N&}4*zP3hexE_Hme;>1*|_zlWR-0*xO1O(%!N8fzgPrY37gyV6KF at XPFPWO#j*L8S&<(wO+nV~Q1up
+`;l>VGlYCqveM-827B?uk3o)uuS|B+Le`YQr$!>tmVgb7wE7Y0E73=D@@rps7Ks4pN53;xwz=VdrGU9
+qu2ccn5T-F6b&1M&k-!>YWYa7QpcQ(0s#@Jz+9XeLf$g*RJ1|Yi_O$8ku1RYv)c>jnzsS(s4f(yGj_J
+&fd=Bx3j;$d-Ha7HvaE8bbpGW);#-DI>Lg9osq%mzP9^=9X47cYaUTnTtp?6>xkW#@QRx}jcg}_7>r4
+}Z=c4a^zzxb at f6R1+-*>^O{%@<v*E>QC)F8b8oP4uomU3FY9 at Vf-_r(8HZ=-oz+uACWYdrThb^Di&w5
+>~bK-N<0mAS;{lZq(KYw_z%hm)=X`Y+iwHPA|a)<dfn5b>dX7S*NL%WyWq82RY+y6(0+M>J!RaRNbnw
+@#w$l)8dSNcYR$*0&!rBqUNhUK%}RlmDTCya?0tBIH|m)%3;Nb;2Kf(iMaI7iK{1v$XJrP%8?5k3U{-
+I}q!IG_p|43AJ-667FQFeo*kdp!7a66upgwL=aizyc(>BjY}*9Qq)vDlqA}-l}g7iSZ=DTO?El&LSrL
+VBfpS;LY%A<oA$xZO*OLd6P%C(N at K=XHh{e^LB=+8fc|4e%C?np}Hgf!n))0B_#gZG}@0-kHlaTuNT$
+72v#N4Zb*L|1_<jQ at HVYCH%J}_-3H6!p+Gz7?;-cons4s???IzTJXtCkt5n%z`b{**<9SuH0Xyuib&!
+4=hFG30hw{x|bm6Khi;K&P8TqY8O7Hm(q<*u1pw9dHRg1ef?yau3Pf!^9H>YdfJt9ak!DOK6{#@w5-`
+Ke+q<RyG7top_*W|`0a}$y!qz80Tydt75Z>$+SAQ&BpCkp?K-fmL})XV~sf{sT^M)4M;KBPyq72EJTe
+L}UNzr)-`#kWG;7y<b{Kp<t%d?5P@?(OSSa`@``E7J<8CI at om3Ia*Jh=7-Uv8Mmv+kJEKV?V=YN$kJ)
+?&U)Skm(c>e3px7GPWVmYIyR1;SFB(>do}^+_~Hppu)ppyTZLU%R#5e^-r3Ep#sV=Xj>{1bNlC^-$Rw
+Evq6Tfn%YSiT!w}PJ{rEY#d_yIkAzh7&9O)Ks$1vmBj>A#^$$8cyH7K{kE^Hy-VziC!n5S?lq2d`hYO
+G2#{+EYHmm`gIC;y~#_D*bxjKqgUNL=A1J#zf_=+1@>Qp)_ at G6dU(;seUBN}~1jqK~om8`|8?zX^4bL
+FFrchI*(z==&H@|aajfIcy9i`?Gl{F&aWJu6=7jSQ*lCS5JPEAECnbhGX4jHvnjSr2shBi01ZK1}B--
+soRYO9KQH0000800{-FNRKJ8je;Wp0Lgy<05<>t0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgie
+a%^mAVlyveZ*Fd7V{~b6Zg6jJY%Xwl<vsmx+sKu_`>){H2qdKnosV9(FitJf#Jg)W*`%@4#bI|L(c(z
+rg(9^a(vEt#``hn*%_k|_+3ghtDl9e at IrC=b&71fAMysaYCiD5KYr96x=Si{M)lHjZ*SapdR?YeQkvv
+vSQ`P26S+CbcwKiY%UYkE}v!;SK`siqd;B~$Hq}s&6sGB6y$t68L$FI|*Ew-xeTKD{lA6V%0 at aU**_G
+d|QlDyxyo4QI~93}9fQGV`Jr_3O4idFp=d at xPUx4U*fO}_5R@<@GNs$H90P$L at o%mMhz0{~#-6Vp;lW
+0fZ>SduPsm8jK9EnA(y+}>U$-xpP0-)ib6fVnR$bKX^*R{4Be=Uu7h{2YK+_0QQ^!Y_{mgDFqEs4FvO
+GA5v}${L!zuj`WWNDtpPbz3ikN3 at 2h*|#doRr5Y;H0+iCyw>fjO;)W{?mc}|FEgCLU$e4P-t)KF=MM^
+YB^>{=|NR3DB-`mdy}W$mee1u!sI*!FQGQUcv%3ABX^P){r*2=>RRx%a8A+dsplX*bKV at sBQ?1MSHfx
+ug`36>0Wm~(suT;|(s{$6pD~WoVX1e$+Z<cnj5dHY){CYpv%Z=J9p4;ngyWP9l2~MxB-h0pJ`=$Tjud
+0C=sXTsRd!HK$m?nS9v~t)p>uwlNW`csYw+hZlu5BB=0~)f3K)@g5nIW~VEy{rf7kcg<&hw_;?SMYLE
+-~y(Ye4gSLsT~3F`0!OfNb1!;fw#)Fa&vT*n!ugYfAHWty<dTY4Wit;m~|;kbILFZehBuZ-5&3(a{lb
+EqE at xD}|14;7`?z=X0cx`FwJ8G=HsDSy#5uuD<>+Sn(Jh9s$pR^CM66(XxaECT^$j<(OYin5i5eAJf0
+MT?scwHj$NO;-Pm3{q!`^-EspcqYh`(_-v7eRD&ZdlB~+Z2A5Hb)DBL6FloY4zN;%mPl(gJDm6T_T#n
+o3Y6Y^OsET$zA8S>vrU_#ekvu~HvNYmnD_~VEHE<8{(_{rKxX&-f$KTb|JkdL~Bx+BOCr7sLNwR6%U0
+GZwd98Fc0tr)m0&)U*vQbrX3x8J2vI8c2-DD^Y;GhC|?rwgUWO)wcr<L}AUGgAHz&CJjnC%dNYZN)9u
+9F>ZPrFgHRQ#hFnAft&{#KNGm|u5Y0-xx1)J6Z?WsL_Eb`>8ZA5ED2Qx6#MwH6*uaXys-+0oX?HiLy~
+V0QfQMm0R4#R8GOSfIQxlk;JHTi;^iDG}B+3=fhw2kP4H0Qc8LS+x74QJF@$0g#s&Vl`W~9U{ep^Oz6
+oV;Cg!20#)>X~$-?aj9;bVmBWB at Y84#HX^LeXnsB^L3^Pjk8t4JcTJUy9_cXxojq!Vz#cV|QSvAmxBH
+#qPN_MS(}2S6{MboP-P9)jq*T?a!_&g2LF>=nX#g=i$Jy~;H(4o<u01$3=o01fc;cb>1B3q>s7>LPH|
+hx=l&spr@>`fyk(G%P^zp=~r<<9K;KnuV20x at 05T`-*qH>SnXyPDwp)(+1A*#Ae2f-i>66d?xpt1ur2
+y|MpwuEQm?DTZAPIsh=rFFADUGm?jtD;n=UuD^K_SN%e>U#O~^i6Sn$~qjhKPjL8`}3pubqNoE3(rZd
+M1G`IJN|*brROidd3o{OG?8!Lzx(*+^`G9nd-dm^kQp;O?eoWR_;nhI!H6?oZQyX^Pjt3YF-xWs1!s@
+xp3!~=LM+=x9FI;p>T1-ZMMUAWJjsxZRk}`-V_0ogV&~(@lu!$OimI(GD8tr;-9+qv5zYe1+RfrUp1*
+r$fvf~K5in8!=>owa9sd5QosDDdFsm<{4KjwMH=kD-Oh$v~%P-rk?ev?XBC5YuEFN-X$izG8HE{aMuq
+SAO%7Ql?V18KwGcIyk)akSIX#%T!mOk^l{~Da)CrweFsk1<sy{mxT-`341k~Ly<JWu&R(9#t!6EX$XR
+o&3&);0-IBnpiK&vuTrd<x_}K!rK02`U4H0L+KtrpSR^d-N%z1GX$Ez*&~8$~tQiF at ONIMyYVSDFBE@
+nS{7DBQc36rVvpZ9fL&`1;i>ysjOP6q+VGZg2DwTe8Jk6C}ay6WL<!gmF(*-*#a6YuoY~~lQnF4#Z0J
+eP=!MIX4F-glunbED?}wu3>pGKb;}m!vdOf!OyE9D98)H8_%ADOvprJCf%&mc7VgD1`>cz<DYqBjb=z
+wg92V<yN+4LB-6)cZh;Jfag~u#S-oi5RMU_0mS-`_pS9&KX*@6aHw8UXx?YaP=OHk9~Vg-Vom>)=X=&
+Kc-L}KvM5P$w`ZVTY&FoPw4M4J<J7r at q@U!X1qFLAy(Fs>!>_WkHah1jFX2e_b#I84CgWIk67TEA6IG
+vcK#7J at mL_|Vjd17)o{xwO4$@;xeW0BO}I70M!joZVzaiPC7wn~!3P0piRotPTWZ2 at pL-4Ya|lYE%hY
+4sMH)RGI9EZ<QnAd$J8|z-3ov&B2{Qy%Xk#Y!fw7Lh)_JY!je|J4N^r>;y~P0bP*}1-*6+sA~WKj%uB
+w{SgWl(iOEQTlfL?G at 9!zOq2w>oF6b9x(akr&^iHmje$Xk#WU%6g!&8&a9OnFJ{%RzutIsGk|~BuSQY
+E8Ayk+ZU++=(Alry0VkUv~PUn$z2_O7?hu#2BQql2E=xOrt!yC}jHg#9#hJcBL@}dFsk=|~!Wvx_?sh
+b1u&`sl$|KV*`fi2%Gjt6El?_v5S3`qd8X3tCG2};AeC+VGfH`!k?$sZp-#>Vqcx84NvyrB7&PVDe5(
+_CPGm at VKD)0;a6k0s#r0a%Ug%!L&X`jE9bLV-JCAC>LLMrSyIhgzOf(J^MsCj0h)2$GpF{`B?v*DpW5
+xtd>Hygh&S at oH)g=j_>(Im<yvvgtCcoDcriZ_E at WZA0=p)WvSEr at e=IYkCkD6YrS%nr*KKPr);<$u40
+WqNYuMxVK`>7uxLXSnxSDu9rz@<r`&UX5Oc07R*TrF?}Zid_g2~XGBcoG?14wW<O^4qUpOq<*)Fy10s
+J#-AS>Z@!!S^G8VFk3|gWPXv;Dv0z<4}Cc8cG&JciYV;_J*^WXpDyF9)|L5E_G-PheN(KYKEc?|*rJz
+L`mdKAzNVud1dCy*<i4UanA9N94Yx$LS!EL$w3yRIdJAn?CjZ4{b~4T?4moQ*X_ATpc at nT_hYBga{?>
+zW<dm^yM6RNZ#&3%^<NwBNu=jow>17w|&<3JAy{I9%09a$b=&`(3s!)d*F>b=?3H-_ioG2hhS4nPhfT
+gB7tOM-8ybY`q0>Od>9gKz>j52%d>gRefvB6=1fclA^~6MSuuHiEz|xxleHqZ*BiZ?aGYxv1p94&~4h
+^AX$3~dYB9_9`Ois8DTU{e)!3EYE<f$@E$ugd~04j5LqN5dKS at 8-@(oO%`AClTa@)WEvi*LJ_d`gA&P
+-Xv5n!WY~x4y<Scolj|ceT&>&Oi&+$kV8<>L}h!^%Kc`hK5AJz}_5I2&MBR<11vT$yg;sfA_xboQU6g
+a=X!H(sKiwB>3n~Gj-yQwxr7W-lSZTbd?Fbhn@?+eluW#@a|Af#(?3s^PWvxzTIDjZhW*%^(z=xo6pl
+kAzrf+Xu=K?*&L>$ntAo<F>n$yuueKZh)4{9KBS42StPD^MF-)vW6x$pQbwIiZgMqYZw?SiNzcwls{6
+EzDsjae)pKe2s8JcmwN3lWB3_2no$vH$2f=6R|R%u!&D2|7UH*i6uu0eK{);&X+Av92kh~d8de}lYk<
+C2b}g%I8g}i_`UQZpJV8>m+=UL;Zh94j_k{Dz!391-osqIJgElVBtX$1?uu=<P00E}3NU8t at dKgtXuK
+ at zTVAW*j=b`K%y%1L at MVck{1L`;Soh9|<$2^yaRg7mUaXwk0u4hA0s!qn*JYZ(dO*Mf_JFw8AU^U!%W
+L05$BqhG>R at DUjE^Ge?^yH)kn=6^Xld at vfVs2Jc6}JwuIJsB83C<kKzB6sG#O=GTZ6z-6-cXRlVk?cz
+E1`xp2g0BIu8*DnvgZ~w_VGgkNp4~<KdgP9ds{2YeM9R47QG&WDJa9$x$V==mr468t}xEyK?X1La294
+dd>Y)J;csY<0Di$5$(%uP{Vu{A8ne?KHhgBYo~Azdup8%Kjxs=JjA)@5N5}i^#(4xra at XHUj?F0qPUh
+p$7nwTBXk1{(5`HOi?vUU^jd`S#AmEoi9Q!lGdny=;`#GL1M?dbuvlhI?j3<^wL~W~Dq6^dRL*PwIRL
+rX;uCElpcDcHv<ggj5>&>0BgXzU1q>VZEFD|~Pf|o(v<B<48(7G&l;}x>P-W+%<(aP`MGE1eMtq~1J@
+6Vh;xNY?M&3`sq^MMSkEn=L)SlExd;Bm4h>0>W7&_#}heGkqO$L0Y3Z(?{2o#|`t|bXY<KFQ*_UPHnl
+Br4Xj0lK%TMx>Rih1H66`nG3W7vd&lQ-oZ2CkCEEV?h>E&FtAfPx#q+8)RYUV(H1a%zh8#wtLW^{4|1
+wqR{elgv8QO$L at W&f~k{eRftmuw3Beun9Xns}rCJrZT`rUK2BkRDRDyjNl`O5Dg|&al>UN->Py)3&~p
+J?Po$qp>cO`!e1R~btcxL6O-i8b3>RQu+#lZAp3FX%Xqk-L?Fh%%xeW_I6f>NwZ#8nk2}rLnD&%BE6%
+~~NBngd@}EZVY~%tnVe+H|0%(Tjc&{Uec8wIbXx~)ROcU4vyMsv4U1X(PuppKEKS at H65CL@gqu44O6!
+(+HP^=(2te3IB2{eHqaWLKn0vl(d$@FRF$M}*alP8FUWZakssA at mbljG!3v_79*Tq+KyXV-vb+z at mv;
+5S$R2eX6NU~=K&i73N1nHQ=#q0p0;zyf>NVmy!~bGvEk+aRPzNcC|8Iuq$)gqRTp(MPNi!QUx;$LYi|
+_<uCgUeU64wbljNlYVE-%d99R^zscak)vm*(fQsKByr8IT8o()xMNXeWs060lV_9HtbZHbp<el{Oi~)
+IyS4U{8VapD_3Y{Mub%q|9@#~YD0IuXo*=D`@`57;cq&T;h5=z^5;XL)Sf8iA`-kD3&M at X188@8A*r&
+;syvgBNo*7n&wn<lgQu#s8Iei{K7FFDg5PG@;rB*e-$F`pEs?kkBfvbc$y01=&#_DCE)SVa6d!Py&Xw
+eL%qBu7I>t*IW&?#|eC?CmD*5_jP6tfS29E#tQ5=k*xl;oJkYQ~{`4WgR(@dUoCMwo_u+)$9J7wEs!T
+ at uLE>0s19i1x>7kBj{85zjX4f495Qx{Ary=(J=ZY#<2ZEeW&<E4BtYq#FH`#$@(HG3jQ#2m^JA+<$@3
+9QX`u7Nv2i&ut at _DjYVw^;wTw>ada at X@R6^#k%!4ka1xu at B}$!PnmeXf6n|wGwY*dnjnK1n!GSg3bOc
+gK+Xdm>PQIyel}CYG-iDzVCLg>(&uwNGO4NIOA|^3(AKbjY~D<b01$QsH0;4J1Zz*+g`{{gG-Q34o`x
+KAc{4G|nv$CqXz$GI1{8S1*QCWb;F^Q%?+$%0Sn~rQc}pcX&R}W}u5BDG&T~&>`Fxnr{a5}-FL%4-yj
+mBM3W0fAsIUMjA#8M+1lmXB3Bop`X%acE8M0G at UL-a_ka-^KJfb_1TbK1zN at Sy)U|=N?I80sOrdjT6G
+}`c8jf}N%`7?VWEl|k|(A0#bMc^c&Z;nS6Wwcoza%$3gDTN5<9lM`TSot*_Xp+ESyDi1mV6_Jzv-1L%
+6N3{DYCMLNTb}$)HMOM%F%5y_$wKqQQ0%%3Nn+4bcR(o_R06(OQ}M^|`4xl70Sh}2;qOnGjusMCO72d
+vSeVGxHn?V9Ou~Wbq_TyJ>OsRfh>>&R;3(mOf-}2R#f_5Pkdg_~Lg=Kb=EgJ5dV(S<e|nyNHRZ&dZna
+Vk?lRDy<n=LZ-J7ptDl$4pTM;AX(b&S9p+6=<42z<x{mzRnI8Bx)yDsy{#(e0=UnKITei7M_{QGigb(
+j)+(h8X3Fi*Te&pw`U;DPR_;p*q+)hy<bbAGKWOqvH~Iigh8KYEGw=m?_#{P_6C<3~E7|9(8?e~%;G-
+5+d7QIEGG<xJXX|3#^)b-VFsxJQ(Ol|JJhpsil_Hn(4chMTzA at yUB%W-ZzWPmC#i7S{dwm^tVo9DSV?
+CF@|6I%-qo#z+Ccf6ys7I^YzX+d at caj2$LZoE at kAV=P6^N9_8K7w_3#0Yqk$y9^NAt3>#S?<t>3g2-H
+CmfREKCTKGPi6v5T#lRg20)MBffs^F5w9A%D%uMtgrM3|;h&g*sdzm@>IE<+DXbyxm41mZVX8TyXB|~
+^I)B%?{eg<8&KD5wfi=V at BPZJ`1P0n(Q{X);tcB3*iXUQMh2@?ZEys<UBKue7Cg)=znCSBRugdDbEB|
+k7}JZpA%zhD>u&1R9t+{f|gbTsV6B<H+u{JeYp?hJDiCG{l(L$%vc;D{<>t*FJ>UGJ#|le87eeKl}=!
+e(-2_Q<$GEcs)8)XL_v+5{XsBsoHxLZk7;NynVs5az<#WFiW2RqU+^D=KI!T~(8- at +5NNKYg`c66iv(
+4B##Zg98pm6UTitQBZXpFo%1pp8%N{kre_AB*t}}n>5BRNq}q==fTc6U0h^=C3Sh+b0ziQAblFSYX_#
+RZZe1E(LD~R$BzxeJ?wLeb7Y+IMNEjc&A6qiphm(u-+kvJ<_W;jE7grEIe8uFP;_qV*rJ>;Fjp{Jz_<
+ihs_l{EI!1?TVRj3f)q>d4gY_x?vZ)LKoy~Pc>C!ExzwIzJr718aK at zuV!Ege=(pg%w8Cu;GdFZMEqs
+Ug5h8d;{Tcm1Yyt1_6A{rm)!r#dS8+SNgFi==y(s-gN!vT(F&~pb}YtYEhg9KI at Z~Vd!{+f(@H0&SJ6
+)|ks28~~!KT6kNpk#aam%_HNVlTNA at dA1w?dXA+OW*OxNDj}pPfcbQ#s;h3oL^0o_wO$8|Cq0=+GRTF
+fyHAQ0)3se8IhB!a!$mzb{@3`MTbivh(Dt78{4Khs8>*c+3Wq%I$$NbMWv<ZaNIHtTKbywk<m-Ir-{3
+id$gK6-PX3HS&$<-jEX&ZxkghxfO4^Vg1q6$TeP|vYZxP7enCgtuZiH|9e8huKLplN2CV5|{P*SFCUJ
+7LW?fp9)HLp|xmQ?$pI1^=!AewR%Z^OyGUlja>XEVCC6g_36`LdazXQo^!G#P9&qZ+*?s-sOOa-avJK
+-uD^yoHXsAkrbOu5rNQ*pKZDa~WyCz=e^g9YHoL!1|AeNurU7 at 69`PugDthey$2ZqR8L<1u-T9&rqLi
+<^j|Mu(e^1yxlog*0|#6L+G)*u7FqLIAJwC?dyR{-fDj$wEQZm~%ncXKXw|m<vg at k)i)%3ycX_dAU!M
+m!+<4O$?#MkVkkA2Ri<YVAeefx38Q7!X&B;C1WBcEHOV|zo({>%>)?Qp|im=IE!&7T0{q|0QeNgJ~x1
+?(#;wyH!1sE);XZ{#nWd~_}}wzoiCogz^7l~|9(G7lXI-6v<qL>K<MHO=edi~g2*(*13oxHkg<OZ7)&
+Xz`-_Wppxz=)qUe;ty6S%-PuwBW=4&s}$W>Z}^TJX|Ng_mt6$4~fU3`y=l;O$d;1TyrNb!Rb)s9F$N|
+sn$@W5_WmMh4cigiWv9AJHeK{Bi?G#5Wi>7X}7u5=)fLqB$bcPT`9s-9PWo9+F|*Rcz`O at 2*qtG^syH
+|?)Ux%iq%L6QneHabNE=JYU3&SANaI~B4YN`b<aFBblYz at AMs(d0JAiL+e3(+exOOgfjcjk=8}2?!r`
+-J%{yzV=nN-kODmY|5LM6<+No7d{Y(C at C&nb1#*OYge7n;S_NaMW8Doi)IoR*rB>8f-B?Qz$+D4Gr{w
+r&3Uqrjb?G{-}Zr at p6W=)b>j4YQK$gxsM5n2WIuAJSh at 0t9BDI~kgxwIOq<arrol3ch-0y6Qh!Uv6Cj
+Ja3Ks;8tSqObqc1_cr!^HEW9OsELFVWH!AQ=~B71fe;cPS|UOrh2oTtIanq~fSC{5g3juvUM9SJ+>p0
+rI?=~d)s1_hK$Ym;{<$8QV$5Rh^eL6w7MA0H!J%@g*5;_2Lis9<iTZPj*vi9ZIWXt>hDwVaal)rLn|%
+q<t#6m`tMy@`{y#O=5^<mWMp?O+L>D_UbG0)M@$L{J3flxz0-E~B8Lk0uBd=XzP!fs>~q2WEabUtC4#
+4#A;PLa)Uvc_^U<X-VXNL*eER9m{p=IilGH4!+Q}N3$A~$$m~xf4PIn<tNEo)vT3EO1BmW-&SFAoC+4
++l>bClHnNp^w~sQX%&ueov#VQ6 at J<v=JEOUB at gdp73A*x>JjX;TpWU6n8djy)@u)uR(ffva2{FFiK8U
+Y-ek=52amDZ<k~C{XC{g8sdDZPOd1Blz!wk0eEtr|fC#7~#JoXwiLSnrcObm}@i>$9HNND1H9H?FOq7
+Nr*BZ57nCDrd^MUe3NE0)b(!gbRO?B<_oE_ino3Mi08WPac_02$+k;tfP9_omC50!t$gkg8CJq>G;NS
+}H^tNVmi7SYbL`>Foi%qYI8;THf_S_~|*^PfWq_0p}UjuZHH?7iZ~sH1ArIv@?!DUoV;*^*VlO`VLW|
+rUC}0n4tcO4p+hVK2Q+YocBA at 8$!^lKJ<Q&ftMO4TXXVHv;l9?PVl`uBLD66WO1fkxE%x0R~|aZ2JGh
+n4n{@p{zUa at xCy@m47sH7f6gUsE at b!x(2Va`{_Uan0<VZeWo}(dLi?}+i)U%EkkfQ#to#UApqH8Ou+i
+?QqL|r52-;IxB6z0!n=+Zux8Y4svVyr3O+wIoMcor=5&_#P9eGl$kdy<!(skvl@%)O|V93G*dwdh45Z
+Oq33Os6==wroX-rEN2J{lp=!8ynk5rdjdFRJ_t2myJ>><cOl{g2zKS%9)%04j`C#OU<ucW%*KSfk(e-
+$I7xv+po6cQ`tELfJEvii5uX0j_<xFf+jm9LYvISP?u_8#)d%HsZ at yhtn2079F1sIHFl(*-BX-#rrTN
+70*vh at 3-XV@djq69+#X|>T_#3D(9U+Ly+j`_09SxF{{`?*aMdy-W?XMeJmTSj8z|P=3Q_9kP_@$tE}K
+{4JeC!WXqL9lvEV+Cr~&P8i8Lv>;47 at m-oiE)dtr*2Uimh at BC{n+=`j5WHxF)HIBSM;<}8WkS~*5_IZ
++bjj{1)vz=PODW><LpfA*2;mOn_D9H- at R})XT?&8qx6@*9_%H5hg9=+nKRg=C=+X!z{&@$p=tn!}u1i
+LYr930zi3k>hj4pIs)xR#L*7<k4xPt}rG_7di?(&?Dd^*CS7dgrjP<tHN7ncnNvB;JfCKRo}bSN%xS&
+?TtU;~q;56>V3F<Z@<Fu1X$JNE58NdxT)5e at q#)YnFh9%AL^~D_V*-CZCFmy!gtU7WQ at LXmQj=6|f~N
+1K`MkV`^T!<C5KGdvi0GyZH;6%OzHAoen at 7;<{5?dtl8W7?d4FNY~bTJpd0(k)0?xq(F<;$vOM%l`N%
+%SBthkFJC92n(jk2=u8BG^&iSb*`>q2O`i7qo?^x`mkTVF4I=hRmIr_V_KSw?H}4i7B^dNdJl3jpJd5
+vn8vxh4LPNNlWomu=iGg8C%_G~wP;CzvC~Edew$6%Bx%IQ{j>)%!<BuO9Kc|XQZ*qsPUpT&QYAoXcC1
+mud8Of~!);DA-3J2?(X+b8HrI*Aqb+@(|aQAW>=YfiyJoopFjGbwi%Hn@{$UMB17yrxjpuTvLd>h8c{
+&?h|@soKemvIxXmJk?+b415R;_0>aP8S`T=yi|zMY*Kt)OqprMgM?F0A!YozB#`dg{QOUci?qAP|}zg
+SmoT8IfGfuLD;lEvb(k{<s{;|nh(b=-FAE!wi<0n%gv3iqF|#F&fo!fO!UkgEeqoNE-{qdg-)FiZ?Yj
+_<Y2gMPt_I7<ADp)Sk1 at 3PlQo|lYFF;Cx776EPE2s&HYFE0L2WzickC@(wW`ibnf-(<*?n)6MhX3_(f
+;lW{BR}>nd1(@h<k2%?}T;oF6?0dIUi;r(X6H at yVTIV0{)H=lK4=fBu8Y^Zr*nrUQFowPOFBJHcNQH8
+2gG+0*+gj_QCo{ueo%J)Y^^Rv-OX$GD$n7hO?*i7C^Va(TyZf=nrMiNH%Bk`g^6SW$2u8`VINR*3|Ew
+ypECh1TUF;ol$foS1f~1HVbLkO+8gwAaVWta^+^FPO}_bZ!yZaW7rz&<~f`+vM*Zny!_XdhNwR_8zRU
+wQ6>t2e%8k(AK^)zx}h|pH5jU at B!x0OEyN`<eV~Q<{w{Na<Li&23;i!qLRLa=va8)j?4YO+F)G%liJU
+*2ob%-i^Y;B9ei!n&sx4_b9|!RQsl`T&IC5$b>Pn%Nr4ZpjV`J#_k0~Na6 at m0#ViT0?ZXZ$xh+4AFjG
+1V!bflIoU`~Tub|tl8#v1ZF5;W!iWvl#Rdi#6UsHSFhG2d8iePWsAACn}pJfJ at 27k#N!F^EvrNRI2cL
+W=PF?sKXV*Kw&GKcybA~JU;J7PK1BO-C>*gs+SjEF=kef at imZTo@5;)9!N?tHczXE*3!{v)|9v1bm-9
+>ja`FraQ#femdC&K?T0J;NCa?ll~PSLYwD<{!@g^6}!s`D at P_A~9>o02-P<!v>Zx&_QDU9%v$?*}tPE
+X7V$;j==`FxvmX<3!8alhS5d$Eo>H%8Z?cb3^w;@(Dm>h4%}Szu<Nwmb8F&gz-*ngS&%mP5awuM(G5G
+GcwU!<W>L%65h97$fHMCGgFh9Yl00uND;fucVWg0A88SM7054<9KLRqki^3g?2?^`oKE#GXO1ra<;Y<
+PLJ)j41mY5pv>KAjgA=-ODf1mdqpvQqbGNYpqosPk~BERhFHJ^gd9mO%V`I+xogOx${$|K`dHlbPzgz
+m${U(}Pk#mVoB2}@_fL2Vpjq?3#HXW@^Lg%zN#KK(cL>A<Zgtz6b=3c=kI+wky(wuh^O<NK8Q1I at jW{
+IiD<2H7HtG9>>oOUBQq$?vAgZzo~CSNKa3VGVrx+XGebZrJf~rJh}O at 1Br*x=sgX6{V7yJec6>!C!H6
+xc{3<p)x-N<X2rGe);#mL)<Ue4E0ZQWo!5p_;&Quo<j+KHllm{ihj+?3*qrPK7M#(&mxKkRFv<$r1+Q
+(G?R!l9BSw5^yczgeRjF=d#NwAL=%wyV9rxi>E9oQ1CzmEhX$mU?k58A<L6ri=;n*uz41iN_u&4sUFI
+IM^f0e04!!&{-TSFKVEE$!{{)|$$?(-w9=j*+k)?H#IIfbdqdaK?A<pTD&*NQJ2ZfhzYzYnY8>E=?lq
+~2HmPN3eLu}6*j9wRdej^%IbjN`Fj5S5O#sfD?e5_1IIo#e>P-ZM`NSciLT`>n7Q`x;FlGup=bXHeuy
+dpEdDJbH2snppJFtVi2PETEic$Nd2^LnZ2218Yy;-#OuJ*A&i#&Xq7yDdkPKIsqt>N5W1B3&V2_iavD
+S#l``o&{TPZ3ycdy0##*xy>X&D(B*foLIpx&J|#act5=8t_ar~IQUB`5R$EzWIevz!{pS3#qy>WpP)(
+bA1hhq44I<X2hA`1c`Jb8{YaBs?LkZ)*#u>sV8tOO9h;x<a??xscN at _QCD$i}z<)%v`ahke=@P2J@&T
+#jSb9I5Ckyq;!7Zpmt4y)X*3=41eLAlK4+8xluhZvZo7@@NScJ<fIscqt4Xs}g{)a#O!4K)j^fZ!dIM
+;Q(1}V3!x2N7EIM}%{TAayQr8pum3)9e$-~%p}z-Hbx4|LV+q01Vk_+yzz!akzJb?s%Y3$YLRdp$|UN
+*f&<>KST$9*l>9_&-of0|XQR000O82?eW26r)PD76$+T-xUA=GXMYpaA|NaUv_0~WN&gWa%FLKWpi|M
+FK}UFYhh<)b1!vrY;0*_GcRR$V`Xr3X>V?GE^v9hSZ!}2HxT~Ludp~pAreQc-j at npPP%fWjg%u1B<;t
+I*&V>muD!LrA*gD9duMF#8!QR=Ql#U;+MbtZW}X at EN~?@T(W<b8hA3hp%ayi_FO5nI3z7fb`@nwT2H5
+l^hTIAzO|RFBQ*I3V?f(95s<qOCYVl&+WBBR2BTznNg at J@Ecg${tVVO#b6h?iwGe<!!fq!r<g<KE9|1
+E)A|Ljz8cS at z+zRJ=g_N|m=K<kFZ+)3XG6fPNOISL8F6IdZ$LJAv20|V)5=vId;17r9af^hoK>WCKEr
+Q1_2RF;hPB=yhCn4OtEJ7a^k)Qet2yN0BQA)IO`{J^fzhg`%@DIt^>I#&kFsM??b!z{gFQRD!Mq9Gg1
+l!PIp?~4k!Is8?Cu^zh$#aFPa_85!_w`{|ofuST73vLn3hxv_p3&cVnM-tZ%Nc^rIR~q+mY-9I7Kvx>
+L58`5Rb0qoZT(}h5fTUe425rSk#0V8zagiEEnI~PYELg0hgqWc2%yF$=b|>hu8)!&kR#9rxS+B86^f!
+oA0w>7kg;g21B1WL`2!Xidw2F!*N?MTi<NYp&<EqdLtKy^8+Eiv#22`5J0uo+w^aocqJkLQQ7l`De_R
+0H$29qOO?J>iLF=n^q86H9mT6)>CK=w<8Go7+}$>S%aoCHZhWjQ*y6sfSgQEyTK=?`AE1(6zd1ANsYP
+4DS<{xS!vL&%ziRyx~1h+D>AL{?->7TFRsQ!C0yEdcYxxI%;kl95mKan3c*TosJjeLLtC5sfWH!|xe8
+yT*_IVhX2X`Ds)iaMVY^sQsm~du%E)Xb8nZ2Xz5`s`*f at VPi!YW>leqySY))pDbhoI^B^p at F)g2dMEI
+P7j)?=aF09u62{2?(W_PiN8m~yqf%j70_s|TckIlt!GxDx=S*KXmaYWRr(wlKt)dy<ZlY?jUfl?lv6B
+s#Ye<eKN~;7V+AWNA1V(LV4c1_Zhj6%b=JX9>E!hUek50tZfpYn&focP{dt7vdq;fK%rJ#i$0oJ7N_X
+4vQQ6H(x(!2_{dy#=E?7||I9^sOHpEZFaS|HF6Kp~&8`V&lPB4Wpo*2{BQctBb~*=c$>5?A~Lwi4-bo
+T)f2v<bC4;Wl>6=H?o|VJp%UXA)dsONDrjF+InRbKpr+y>aJ1??3+Xh<+vEOeo^kG4{FR>6gb*ReA?b
+ at 2eOze+=21dAbjS2LKmEO5_oPcqRlAZZVr^K*bZFpFy`-92o;4YGauw%n7N=>4Sz2#;xV?2DK9o66 at M
+fV1?X(7S=03hDCYQu<GF~INJeE%is5VSduFRS#|s7RnK6%*JTDB)(qLfbk?+G>sv0V!l3YFD$E9zO4v
+513ie<Mo~AoCo!ri5^Xb*YV*0JCOHZ at h?&_iXRn>lQX1c(x>`+)WR2m-+g|oZHNYTGERa<Og9a<+TPG
+iZ*YD>n$p#!uj?cgi?<(jGcx#5N_0r$sFc$eB6g;j^P{?5}Pa7q2=ki9i*p--5g^{}$lioS^wIa`Zo+
+(r2*WM0_U)ZcM!g8D;?x^yG)M~;56B8<pH%5 at kjF$;2%=3r<lKh_7*ps<_!uTZEbe<!tM`SQ@)H=g#4
+Ua@;A0CiNdYWDFn-4V`xAQU(S9dpfcAu;Bz^T|LFVHPk&o~P8g+zqcal7(3OI-O1D*OO>EpWn{Wl5?v
+tTe;j-g1jN-+-+anO()k^o%{c$c2by#X6b(pPgl1EK$gJavb_E_uEM2v^s{PPpjRrR#4_O^bJrW!%6y
+G=B-Nr={)rX%HMKLGfJ;?-s=L(f(^lQzdF%F)iO@~i;_Iv{t*@oC7eb$ShY1;f3VpheNSUY+SNshrlz
+f-I#SUlDj41ORs*F422;3EMVZt>7eP4nv<yU;WOS#3Y%ie=8Vu<PLZ-Yv%#JbSF2!wBG{28ka2^{E7g
+`5^tbh<pd{_ewYVlI`)w$XIqCFVwXwfgRRA`X8E$oRG74YNd3FNPA^GhkC8FEgIFp{slg72fOkEGzR$
+xoZPY17iifqP(mhnOJ<W%@mH*g?xf!(7LS+SqGtpGxf-TagY6JA`PVzYA1>a1s_-<9k+b!cKfnh;24s
+ at gM5-|D+gbVp|T0By~_l5=sTClkd4uXn2X>c3a?nqIMH4)PDZ!iZU^?`&++DB%obMV<+wutx{0T)ocw
+wIY4qdhXdm$MySu=wHVQ5AZxsCg&=35Nn&JzjuE8N9{yoY?-6Ia~L<lu#>WApa>n{rMlE$5n(Z(H$a(
+`;*uJ~Iwh9QSoik#!KRINwl%SAW-XE;6_e_ at 4>kPr-BQl#sBNksE%CqU<CjcsnM#YU;m>HZj`P at _H%D
+4g$$+{5h<gX6gU2T)4`1QY-O00;mH1*=HcuK4LG2LJ#o7XSb+0001RX>c!Jc4cm4Z*nhkWpQ<7b98er
+aA9L>VP|D?FLiQkY-wUMFJ at _FY-DpTaCxm*ZExE)5dQ98L3juxZ;rYq{ZP0Nu%J!10BcwD<-?E!GA&U
+K8(CCEDvdX6zkPQkC6SVxbi?$;7Rh^fFAwjI%4 at MBNs>3JsacW`zN<v72;E3gG>RqWeP)N*j`AXE6fa
+~uwBtLb_7#(}S&mpyMblflWwM2m{C+l at Wh^J#hDn*EqExI at 2?~WdFIY);Y)N1NZ3-0!w5kf8QpH92M5
+KzTW2tIJcfn#cBk;`UbN%}>q7ik&$o!>&JpKrfb0Ts=2?9qmy>M00n(j!ul|jMhBgnR+L<ytc0mMe~a
+!Xb_k*(I9$?M47z*^AbU*x0|L#&jRWW&r}EbHvX{nz%tg>4Px`GoE at gMgL2_aoz6cAFqk1+bw2}
+Tsvd}lZ$#sRdT~<#_B{{6Pl>p(V}4k$N$2Liq#}<$`pfyni~K@%Zz+!gklf?^jE=%!6X`!DOTH<yrZ?
+^X;aX;*n at 9b-V_KjS}w`g8=l^Po!c8lkUEr?8le>B@!5x$7Z*lHxg-U at HSr{<yNn>dTmouQh_8~ofBl
+l2oSZ&g5-K%-Y_`Bs#WJ$lo7vOn&&da7jCvM5^XW6Dj;0Mz0}0b9yhPJgjbvf>6 at URgI0zzcloe&M_g
+JH~_ks1$1aei2JDvd`m9R at w@>FEZ?lz)KDKH-U5S+(L3yB^!@4@`)>Z-mf+e2ljA(4nN365kuKa%r+9
+1)KP-BMNWd%0dVVkN2+22`e;2mN|>pR!7k at RQN`TrWGXYXMf-u~)1cTlm-&m9j at FBpYt68ErIht%t-D
+z5D%CvyuZHrJ`lZLT$=Y&nk9r^3Y;M$am!3Ufn?GPkMagw%Gi3)- at _Wer~O6S2&r`u1o4XMZ&ckPKtr
+6zmJdPw5P3QdIU~tT7V<Sd-es`u3mFiWTDu628s>N=NZYUqU~Y9lL}$4jTqU8Z0{VeZ|681r4}Q{z5U
+b&8~TDc^2At)TY9U<+3c(&qQY}Wi#{XU18{g(lPu&kOvY1ntW$z<62e&lJdnKPiqpbmAMGKft3kI%>r
+Kp$NrKChB$TYkm&6t<uyEOF8^0AL4B8#^n?qxiixO>Bti=a2oy~Cv=&#TbjrE at XL~Bw^{`{+(;rZA%6
+B6j6(7rAV5q{Dn18&@itTP|$dZL=DU@}Y#xioGX7YNsFhKMT-w_5+*)J4HJr;(PFkxSw=$!V%Yz1RB?
+QDji?_mIW)j$^Lk^P#D*w~$D3$bSvwY^=`Twj1oy0d?p|k6X64lr=e3lC!t3^e6^Js}q4y-3w$D(uc$
+CWi&P3T)a6aI=fg?zTU8!X`Xdc2+>kD>Y!c&9oaqIfzWC-^FkQpLIf)kY-k-U2Q&1Rp$;$|;xgR=se2
+Vb?y*gmL^JJFuo%cglT~!`fbYnQij`r%U=hLJEL;o`(4x$N_(MZ%c-cYNu?_)L<2&dUpM0*^cBB#1c<
+`qM^la#73>m=}z4vgy^Z+{dw{ekV*I))@ZRw0ASqq0}TrG3}2XzS+0<c-JAaP7i{ds(boN$}pwyt<W<
+N7v+nH0olfc`+g?Ud%xhE6iVG&Xx+hta&Jp3_<A186!+n1&=0Iyq#JNyj>R^3e`>p6sC5b9h&wt5WQ~
+EL;U_kKo|U`t)A2(l)-zOYsjSx8LqqUGt1?bd!6qBYvb0#%Hql;`2W=nGXJ-(QG&P at 6G1WBi6}}T_&d
+eF0JExF(nUp{y*G59B+T>FB{$xy!asmWaw1D%@r<Z=oP~=%=L=x;7)NKZKFO*1?}DL6_+5wQJ;X=vNM
+XXYnva4GbqhKO-MMnXLt*~T3~&Eii;OG+Lbme*=u)AYr6*rAzR-*jpuhy=P$_Z3H&*MKT#B|rz58|f^
+&I!-Dg1{f#!DXseK?zx=WV2uNdaaX}CyxHFQoY#>HU^-c?%JQTCl+bZ1ROD=0WwX!<MnfV*5Ar-<MM3
+8K$}m!Y9x&sK|J*`k3D5cIuXX}%=1<T4%RbQ3+4FQ99;;pm$^Xm=85MfCV2?Up?o at k@jI{;M$GQ-W*H
+&n+f8xx*iM*=-u5ErSecmoCX`3dLhFj(|3xjR0J6R>WR$dQlhkvK_u&447cKVnSwLI$n5+St5<JcM$Z
+Y at UW@AzyWSOXx%|=U9)^?a|a)hP!Ag#>h%r{2i4DH&9>}iJs<3a#H)^aXwoLqm-fPvWq5~i8Ttm4kQ0
+0c_d-UZq|<Lmcjt}>vgV#agej$fIG-T)d^!At25G+6YRK`qd&_h0j}Mey*Gc0F=^v}%wY0z8P5`#Pd;
+qjNo72FP?)MJQWHPwME^AB*EG7XKjAQJ%f`0}0L+m8SOTSSM?1A<x`iN;^7~tXPR_iWriMJKo@^v#^5
+4i9^`nT)FBg*Swxo*JVJ|ffSNk^`Y;p`t!O9KQH0000800{-FNS*nxAx{GU01ycP05Jdn0B~t=FJE?L
+Ze(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvhX>4V1Z*z1maCwzgO>g5i5WVYH3{nJ^3Y$f-MNzo
+OWzj9*!*+qTw{9U((kNy_kt#ou_|o6rAw|iS?PRk83`^vjnKv_!!_Md)%Chs$8!Sr@{h*BlURy1_!*c
+x2(sH9)Y;2Zw!ODBlPWbTt!?-N;wD|tu(C$7ZI2(BL!0*vc+g3cE?J!!JcI&j)36$+@^E>|Q(Yjy5Vw
+OD_;n2Wc;>D!a4}Qp3-gTRwR>fcM{?4+j#SWUi))vcJd)0Dt$ct?T^xWLs#Q#s;0QNOE+*+aT<zZtfo
+<uM>NZw$N%0Z_M^rA<nwY2QaBU|`0NYzwhQSyTA at j3Abbjz4gsq25RaW)_GJ0r9s9Crx%k<uFxEQ>pT
+_#qU+f)v()?jV0y!(#!?6JHBlwa^OkyN<5`WC;~bw~eIyw$*>$NGa-fskH30rd0|v5fQ|hN at 5*X4JNM
+Z7$Gr^AnE{hj)m;#*Uw2s1WJobY{1QsxD#p{7eFWwC+N%Y>xBkRScK;geMH>6zKnlFow{K`YvowO{M%
+?>T(s<kUNHtO4h9=)Si9ZA_w2{)3r+lUkHFhjIH6VO;hQ=GJ%6AMyS=c`dDR5t=uL;SiVhj<s8YzOMB
+XB7187 at aO0HVN(_S?DBvbo#aX|9$m0Dz9FR65b^5ik-BfJH9Tvb}q(JN-N-eOl#g^^MAUOF*w<4S_|E
+q8n-G at b0b-?YNBmVb!Wz$0sF1HnT2RW%w{6*Yk72=xkK4)I+Gu?aEY<L={!K(6O5m2yi6-Y1gBGW at de
+pGF}ibu2g@)^F=wv5YjOcZ{{`KxvxF12%#jkcx=Dq9hG9QXehgNk|Db!ab at e@OI30c9ewo;;gKedZ=}
+KprMd1i at cabGRGsmhaMc6&O3LPgZ<h(`NGhhNU(UF<aNH<Y;Nsm^I5In7V^n=F^McZ<IR%?vm)6=pUj
+|YDcqipAsU+(#cUEge>c)%;Ujxt%!R!*5qD?9Ejh5xL`VVf4ZNqD^NAZ$MWg$HJ5dWM+~IZC;RHE+cB
+MNEcoyVJVlmh&<MgC<BlK!jSFxaJ^RnEV&C3OEv~qL<N4lv1t1HLq=i`~ZwZYTuXfYgO?0a;NTzbrl^
+}>DjKTt~p1QY-O00;mH1*=H#rldt}3jhF)B>(_40001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?
+FLiQkY-wUMFK};fY;9p~VP|D>E^v9R8f$OcIP$xH1(BkVT{vo+6n6^)F3`)R+v55{lHTEvD`Z-xZEj>
+qD at sXx#s2r38ImF?$?3LNe at G;fGo1I!URTAACCR#}n at S`Jle at C0YQ~qU$eLOt`h8 at UvtqN6`DQe#tNo
+0zN9 at zS-WEAK9WnT<5m!@XnOw#tuavOZVC}a;<|A>Rin3;JY4yCSifR at B4g!s6H%`(b%S2ksB3Jgvg-
+AtSXZz1etj>zO<}w$RIiD7Ju8)^Rky(g0S683T+MQ3ZGo`i5aPdJL_$OKJ6P0eoPMD*bHJ`Y5MapsEp
+FC>>F*{}N`Td0e*_qc*RdK(+Bs8D%o4mNo4Yo at B-UwAYKI!$n0Aa6`In&fKi$O>&Stz^&7X1ARZ*yqi
+Wi%Qk3C}Xn^_*Qt$nATc^NpyYDT|0A at 4dwL1Q8<U=nFuD4FIIEgm@$Bckn2xagyYG2PQNbjV>?WCI2}
+8_rE?~{QVNnj-wj^NMt4uWhy{?!3%J!=!GZv4$ov2{wGo at OKwG_K%m~yWF at NzE=2VtX~vZj%Bcpf{z{
+mlZC#hqY)JcVUzr1!-4lNR(}bIO!WxG<nP@{kIy$2Nud=MTQ*2#Sj8{upR~)opl&aX>7Px1ym at 7~kSu
+nd1q6B&3YI?(pHK74Agi;9WERi9v8uh+t;t?I30Uo|%d9zDsd)5l at L$h0o3J~^D)CEg92#PHQU=wU5R
+m!UsQ30!&;Hqx%RL0d<1HMKG!mGD}uRuNS;x~E$Z;^SLH7mjHWW8lzdaWd;tjROrkQH!YWpRMW1l!14
+k+;aieVNHr!u{c`|9SGnu|=#WH+PPPSF4r89iA~dFKUaPxIh6^g4Y59kWkweY)0CiEp#Y5?Sz3iw2uX
+_r)r*qrVMT8_k34oVm2GK7+=18$#&Xsz$kq)YE?ErnFPo2paHSrU>yB=eudVL<~n=&bW;?YOaOVir_u
+idyyG(aegu2IEsCMbGm(!iEV1UcPe!eq&;x}RxavcZ3%#-uYe+{jmvxeimB`jpXVvrP&!*N$<_I!nL;
+9aM0|=co?jSa(9C^4L_Ynet{lySSd(?b5BRM7a1KR^1 at W--%kiKs6be{3ua>ZFWV`ZFXusohjoP9l_Y
+?Fa|Dp8a7Qo=G3k*UIXm}hwkoIhs;#MDZHZ^HI2?(;MlREIZw{ecWbW#sIs1F}(5<%B&reeWp+5@}NJ
+OQD}`d1jWD9v-bH2vF5{;>qAbqkqjas3O3*D{)+L3C}#=1JN~5B_R~JRNW<vAU(=*aYuSHq-j3EZVFX
+TsSNOFvY{V8XF95I2;g^ZH0g$oCC3;9(b%B_LRaRN*eUmFD;3+32{U-Ip^K+=Ln=2h47J{i at ms)%w=^
+!2FZXPQ*k%jQsBMN{5DDPaCC?Gd&Ug-cTjSjl^oj^uWI)GKSSwnIobpoIsJht6|5EuA4@$_G5W36*ws
+x)meQCjN?s&CnfgW&5xn|Z}=QjNZzV|ImuvG3n>%tH62GKy~%r9_eJ)hRNfv0kOb2p{n=J~3zH7kL!Q
+$L0?4Lfm0sLj0NNWLh~cV)c?4Oa}L4yg at Nz1BTy66z!1i at cjMFQz<<9$oXgldzc=V1es30?7P$oypC%
+_Dl-W^|B#cdv|^*JjRa6Hu)NypKK at -hb_Q`&DN70&mF@=5!smCO3P#bt>(Gb at c|M23PF*7+Y!-&d~FP
+R<J&b`EO37TnP25mtxJ_DleLx#_yc4WSX=472C*&{8V|rU3L7YkZE>i`2%C(>A{3%;=comwI<!L_`1(
+D__~=7H$C)ZcD%Vo1;v>&G+aPZqz~r at PJ=cXmHP`=OHzXAMfw7H~zdW0S4i9YrwgUrk)Db{MqGudgk=
+}%?JwhFzR6{(57Pcw`sb$CObPK^=sv1k$qV(!XjV3T{+&2+BG>|xeqP#ly2}F)9cVWDc+7tT$!V3YT4
+o&a*4JHmMNIQg}XCvDyp}?yl2SAoQNSl|t2BhsnIaaPM8(&P49}HTD-4smOcqu#`aK%fxlNqlt5Y4c#
+Iap;6Ca0yB$E==9?94F3^TBE#E&`$bXl)PMs;-(8BC8hz4)+x`s4sVZZ*Pme!fVl at 36Kv7t3f^3wtkF
+49V(@IqM~rw#9pXuVja;;uxw)e;Dua3jviq2r_(;^aSB)IEHb~U8liL4A?1Q77+1EwI3VMG7ap727hx
+38bp+Hmg;K{9vn(k%evl~z=pv`8H(x1|xM^07n at R=|3yT@!KNNE at qIxONG@N$Nsg>=32#o1=A_hWiAg
+<I~j^!HTCG;?5C7}ZQVH*Q9a6t+jngUAJ-)#?g$3QjnL-v55o4e}>t1$@f3dcGK9ARA0HL`!qDrI0BB
+4A{?tcVg7)J}ebZc*4XUn~n|AxLyOP*KMS6$@g+3V at 8jGJw_I5vHr7PBs+KO65wJPR`ofIIwdvY&UWM
+KE4x)?UX?~(xUSmR!b?#Oil(gtvMqP7Ck1Eq<7jYMNQ7{9qCd_0m5SSd&SG9q)b_f3;=Hh`+V_EPn0Z
+9oa{YFxf#xmg8<PU2s+b?*JtdnC#TP+?9#L*e~DkjFMM`d)>X~xMxho at pPh#Mm<9-{c^pFonW>TjD|s
+l|F&9T>CF)5`Dm$tfn=?~A6P@%#XHe2^Oil!?kArGMqJ8i<#?klzbml3RIrMBhXh+ALK&!<tw+~ZBDS
+VFR=2 at nmq6f3&@J14;zKZI=1R{Z at bf6l+BY)0zw7YBZesK&P4hQzdp at 7H@{I84g(S<WM_E at pwm+<$fl
+XE<i>JUfKpzDG?u+|Oj1lOBykG-Vancx0RZ22vy>^BVlnY?kC+)w1XAJVzUA8SH#sETHz2a394Tgx2B
+rg-~Qw*a(p_VL4q^Rp{!+~|Tdf+mj)N1b{S4-7j6V%ma(Hm~W>s5^3O#D?H|W7=2HB9d2{DKoeS5@$!
+Tl;&((1Dw{Tp3>-I_BMy~<yjAqf(+;;5euTFKy(C2IbCo_o<>kpGYOY at P@<6po?6i$dWVh>QOYmCjbo
+^gn`~tnCixLzEiT>wXkN?I%p!sTZ7{X8qez>y152?pPc*BHnyu64C%^QjuFo+)lVHAoVteu}Sp2t?d0
+bSRp^2-8?aW)Bhj*Mlc!zrUlIq1bp=(ev)J%tl!h<B9c1FSj1K`&5ADjjEN2`I!KRht at Q-zl%yqo(~Y
+bR^8XE8 at TMsdKO$1-A%nZpy?Zp^JvS at x&r!VWI%<gEF+@~}PG%Y#-ARVNvEoqeaH*APQ}eQ-COf=p9p
+9EFFKW~aNyme|8(Yr?TE+NQdAQ%Bu|Ov8-+x1|AH{t&}eit|oDa9h?e?2+~zg2>lD9J0Q>Tt^8(xN<e
+T<1j?hD|CZpkAtSf1m(q`DV?9V?=S)hxo;S(Qyeh$pF3m=#;itngJtMpeg?_txr0BJ>#6%E+~IU#+9Y
+qm-0Bv3&2yrlWDhjy<{)8|I at CA|s2Z&O<wD at hez_;Rgz{=;XLa-y&y at 1-tCWgBY#iPc-uJWyNz6X#zS
+zgBUH?`Z?1%=^=7HIRfx=%2e2w&N(Tqh;o<4~@=g373IkDH4#(F&nJhT!ThrQ!EdSly51L#BcY8D?fZ
+psz(-s9ePdB!O0xt}rVu;UF(1>?)f at C;+x&JenjgZRNl-skvR?d&7=+Eh9cRH-XQ_nkTdKnbIjk4knw
+Bd~EML}o_cw&Dsayw|2Cg<?%aPzO>iD{GPMJ6O<c5f;CJ)cRyxe;0Wx;A;9gK|G{GuXVHGaT-hk!fZ1
+*FBtGZ-}k;JSPaevdJUgzEYPOHpUI5fI6>>p+!>UVZF-)2!-xL?P)h>@6aWAK2mlEMt4Mt_bgq~O003
+kc001xm003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=ka%FLKWpi{caCya8OK;mq62
+9wK6ubvY9)>yWO at Od49Piq|I5s94>>&uGCfT%lOtQJnre#gw`R!ZPFOs61NswSh2qL*zUGMs;iiMIDY
+&J!wJH<B}5LF|U29~z6>@?rlzh_z<mNURlLG+y}OOYlGQ!V#5 at Ql})%=wHzXS~sHW6rOXl4^2wdTC~!
+CWR<@BU|kW?9)xvm0F-Uy(y%sa;DjAHrs4iS)$4-_!#}d|JU(W-*UZ^c^iGg$63kR7RC?eGX0HbdSMk
+hJ3BMqm$H81wLn=MD)B68Kq+AE^A`3yN!paW;x#%3mKE|^Zc%mF at OlfCVI4!;Wjn);wXigom)k$Ax&K
+TuS=T67$hwiTOs?1K`^#{2k4IZzb#AUt?$V8l)$D<*gh+4g?`<+O^!G|Wi5wM8`Hnpa)SR at h*rTW)Ad
+^)kYtV-V31k5z7?kyi)4UCmbDkMS`<=*k<_=x))P>+>ZUaJ`wS=zaPKOT-UM)n10Xf9>$hj$T*EcSbX
+w()&YjkXRZCE)H<7!MOBM7xp+%U2ibHK3Z9fx0k`5ETqYx47duGTSJUtPS5;oa5GSL>@q@<r*X%n#ou
+{+w8xlV9jB at 0+eAMj=Z9x$pP;H<YYzLXKM}2i-}9`@0Wl!2PfE-^Kd!`W5wq$}Xy`J^=p62jPi9XxNL
+ggi^{!=o-?`reo76*(kv@@1sYWF-?)DD1xlHH;JY4iG$wDkRBLmlxvv{jCQKt)ItkZir={cw4LECuG*
+!u!<@j5v)mkl`&`=tVlC>d>~fB}Yjg|h at 52#8SC<@1SfWtnc~D&7L14WGX8gG+MJ9B4NJ3egAA_9Rcw
+<%=c0K<X*>s6wh%krfi?WEm at 9x((cke$$pB6J$6b0g=Kr1(!dCSWp_NuJjquUm}QS>nJYOaF97`D$ZJ
+uinFj+F-wJdJ@;%P<{_h=YV+ at ewMn)~drxJxZpst8=CfuiQUBf7~yY0RMoCwAG4bI*=$PFdyDaed8gI
+=kv2mhlTuEyP_H6DvGw4?NIV;B69RO!-xt6a$mzX0I5gP<ZR%1mkg)8W$W~mztBF%bVGIqT|C~?=N2;
+>!F*i6$Ixza(iFw18j?lew%uB7(1?_^h!)bK#dd2|#&ayQ+?5P{);la|{KpWY2i?a|<5jFpQcWmyIx#
+9aLoHc_an)3**bh2Z_9akYLF)u=G-RyCPGH0lW>wToTcJBfod$~v!M)_rYJv*t7X;-FDd-~`qNBph(P
+GFcMg#y7%dT}OACO_c<27It!z#sOvn>#zEiiNbJkbK;SDqPw?h_Vkhof_>3*??6RpLQ;9I51FjGZ at EK
+C!x{;cC9<gCGh|gPt<wdjc|+qg+-T2PH>5wQGJVL+#hJ3cv92>FmD0>Fy}``wS^t{?(RH6n>N`-(|~@
+F~_hl^!zs=#FupV;ova<hklp{yodttBmohya*M7s?f!UBD+S7(%ser0ot>@#OmN?ZkTaP+&VjyL4Vzb
+AAc*&hp&yXobL5^zOMmTULWd=W!#ST%g65R5ju`8JwD8jkqJKs3Q@;?*E$QI;FkgKW9fkY++^g|=rkK
+qBVX5-njrecQJMzZYC*JX}>hdmd{4aHb?e?TkP=`5&gW=&KCfW6IlknS)-vE<WSHG=OHmAnq*2ke$4L
+g*Q<)^zhc3Vvo3T-zD+|g*c$BE~(Hc3dwUZ&?7ZbZl)=TFmL-#))NG51GfslCT;!@>}T3NuLg{%!gzI
+m3+X=oswZG_ngFwHPDT%9^F+p`Som!QEm;>i{-2J3DJp(HtRV0 at v6@pSUvXLd6b{BAZ7a at 1Bu(s8MF<
+=+^4Hi%#zb>VLq7iem>YkZx{Z<uL2QIzSW4BR{--Vr56OheF;hT)cl5SkY55P<J>&CU61a4?85y>F*l
+3#Xu<#!|l!Om2u|+EE)Prjq at Oo5DTwg0{^C=;+fH`x?IjiCFxc_1iMM4Mun7!d{N3&G_B*Pz{(^Qkz`
+J!^gGednl=g-e6xSMN73R04~#?^c%YmC4+C~R!2%mL%jb(zT*%;jz~*<uCKYvH<IVz?KkLYmsMrI4`&
++{wPU>At3XBsuvbKL>U3=uYmm}=JIAYzJ1=qwshQ_?x=ue0p%qh5qP*^CV3>y}u$%(}<@Q`*iQ_~9(T
+wyGDqz2<eC9=o<?Fn*9mE5=30S38_8xgm2IkvIw*0l&sa at t4Rjv#>N2H7CGv at UqF#!y7Ao0#1^aKi$}
+EnDrC&`61YX3W)W&M`)qgKmMy4`?z at +zQKHR^Z!-tD(TpzOfm=BAVII%M6e5M=vZ0^!YK<zWNPwze)7
+#HLcFW_A+gA!=nF7Cz8)EFMm2{;BiF0hzJ<_Ub~!RwB3Ozdgkrr{A7Kc`5yToH5g#CuV_+)T*Lz-KQd
+ at -g~rC8vL-j0J?cPjUBa?EQ1ZC(O%)`Dv2Q9H197X at UzNI1Dh`2OO#`<W$(Sw+uS%T^Z1LAL#IemjrX
+Q`RJ|SEB at d}L(`X`eDqgq>zw0oIm&EU2lRo%g2Li@#8_M3*${{v7<0|XQR000O82?eW2^g16<5)=RcZ
+b$$CF#rGnaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR&wb8v5Nb7d}YdCffUbK|zL
+-~Csh@^mEK$&AnLOZ(iq>BZ-3+-Y(*w%<!TX-0xXP(n?SDhXOq|N6JP07w9Ycurs12|rj82`qLOi~UV
+!Rk>yJdDf_=67xBe+g({H#+P-OH%iR)?~@FNt;#})A5<=vc9^-d<pp1h>crgrCycP)WvS=Z<?2Z&J5R
+~2C>vO&W)Jk>QQwG-6;)MM-N;+~d7=j<^HrJWVx?qR)OP$=kB=X}5<C^vJGn9t6Y;}J?7U%<69(7Es#
+GNaA*eI<POQpQm>>55#NgH5sdoTEd{e5MO;bFH^kixl*zwg9 at Ssj=`GZ}eR+TK)b9LB>8VOkPTIhQ-w
+v+|04)kosKK}JG0w&p(&!WY5qttG`%B3iXZTJ(}tf#>~6q*e#7j7-lGxjAc{qXQ-%{)D)Q8G^|Ly?^(
+>v at LDl(k4__{$EMt8%^phMb(7ta4u0z^W|gN@$K%lXCfYKwx at xLTpV%20|qZspj)ZE%FQ=FmvJ0WS+^
+YR&!My*fo2s8WB8Bx#IA|;nHLp41pD41j<^H0utLDpjyLC80g at z7K$rX88l|B;9KD!Qwfm!f|*g17P1
+-GLF$$;fDl6mkjz+7D!SX<bXLFzC*kOT714<;N)DA1TKpu&v)9*pDf{SO0Bc9;Gov|7htLPq-^cenuS
+I0c(VaS at dtbl(%lz9f?;anf-rOGMA@;$RXa at K&GLWA<kHGPy?3=O>tz7@{pK|xF3iVM!-+azqvyj-It
+CYT6Qcg|?eZXs;8kTM0uUQZl!(Z(BnvK`M)p3s?m)C|0^CZwN({_7MuUR!bk!5oC0acq>aWopyCk|?r
+H5n-`3sEI{i7!FN?s=8gXGjiLa+wRJN~==G{vvD%c1mpoYgOf9u`JWWVgc%r;N>M4o0Rb)Wts~qD~q#
+KZ1K*1BMO?nSRl_})~+gdqEZK#&iHBt+!SfT*yF~4({$p)ye^r8;$Er^f%<q*8_ at K%f(3vM21r++CIR
+s)VEENSmJ5OeKbjoO3*xcj1p`!8Ko1aG31DuDc7y|6Jmm;qOFNSqUt`)?nZZx42w+x$xb4g8$#C-a2U
+T&l<9J(%s%9Bj>ZRE5XIVBCi5iLvnk;~7_?x)gHAm};VBlb6=A70pR3|TY85xP0w-G=uZUpcp&ygxK8
+|X?KG_ptnnA?WzV&W~N_i11qIA>zJQ#Hzk9?a^USjkMTn3;73+$>XAXRIwd?mF9$<59N&C%JqQM*L|X
+#;KO<@wCOeev-SL5ul3i=@7OL8vxuLU!VsT at M$S4xkfeDn(B_6Z?*8rK%(~*hXpH?v9*A6L9#$j0gvx
+e3s8#)I0g!c20lECf*cayk}Otv18l+_vM7-}q+;2u*{-Q};8fHJyMwtMKp0-_B_P!lNNUoaWBPLQ;hV
+?XZyx9GZf`!kyS;w^?fRW&=B(r7_cZkW_TAn6?akx-;qmR`|2*8%*vs=bGj at 4?fqyRX&#&>%Z at xdG&}
+Sr2*JFTgHu4&6!wip_YU=Cr8GDACAWrxd4o(f<XhhGzkn^`vI4+RtYb{~E2<n at CD80=!2<^%;H(xv7k
+8W6NWi+s?QD`_E{D~oH7I?_hh*>v7frX(!i`*5k$OIp_T{LjsG(Taq{^CD0EQY7%oBvp|9iHkhAz<V>
+0md)>L!ad^$iLC^r?m004ub!XG*9$Nwu|5IZ6yrr-Rr at cFAqwf8_rW0f9~xq;ecAh*<`#oW0NDH#x%C
+smKOX7d4O^TkMJXS;)ER6jtqJTZg@=&i$-dUM2w>t5YPPePubfFR26DK)a7K7bj)>Ds{@)VFiaIM>I}
+BXs^TwvB+Z1LYuY`W=OR<#et{zf08xk>(N4h2nT+j<o$?2|#?vG(_vEH@*uN`_F`B&<7(zsTCt#n!>I
+2#<G`~m`2h&|E+Cqh at I+gVb3_3oNo$T7B at Vrdm2MPIZG9~Sbh@!<Nl#?1%x0;M*qv_P$hmm2#2#2=dA
+{)^$jAAl}9I%X)_(uamg at K__X+#)qTjH)3=sO~>i*|7MfDqavo=yS<>Hl<mUi3aIk;)1LaGsYdj$#=4
+=hidC>tRzid5WTCr!nKHRp<wP(UE<nz0vv#*`YRvZh~FM#P~=yz*_^Ayc-lKH at wJ`z}234F4GoF0`4J
+-AUc&<2*5DVgX2yl+14|Q7y`6t5 at iKUarLn@-hR)P9uFbC(_yh1JF%%5tPfzjX&@q?y=gmpd*ubkq=3
+rGxzp*I7*;U_27epXE#-m;lM0?z({Uj_{DXDcyGRS1v=H%A_8$FT3@^$qywHBT;8iX`Q#Dl%-qj^LPk
+u%FYVIe!Er}cyFCg=^Wjia|9iKzTYQ<L at -|cYDk`j47baXx}F_NNVUo_h#&;#m>EEG6+d5%6X*lc>f2
+N7ftz+}8i*w_33$}K}xjecgQX<;DWmQ6u%hE*6EX8^W5Ktv<d=4!EU-BBV$3p}meg5$6xsW<J6w`fd6
+vYs&;yoz)hKMfv#J=5#>i{viaXm?1<2zA!%2#3~_Kw~H&o)jeG0%Jd3#c??W=~LpW7i^&7Xn?U=he3d
+_f at 5?B=3f-GRPq^pLs;ql{SEu|#pSsJ at 4?9RWpdHpHPGiR^q9 at -#XE76*NUK}7QzcWK|1^l7qY4*^zd
+V*p>xE%R6_{U&8X-xP7)+^xMwWOn|fn`9oa;kf1pjIsBFhkd=PmgYF8p8i5VshO%K!%<J;OxYRN1>j3
+9e-_p?_fZ{>~pWFBvF_ravGyNuoxQviWK|5M5YUKPji&dID#di0F$;Vgjcrd^VSlxDcf75gQGFPM-S^
+<iXOq5|pycBzsP`(=-w852`aae9K_q;dM`ftL5LE%Uv(lfK#O(!L~?{_p|q at g4_)R&@o+Ixb}a@<u10
+G_K6tQ97%n8WhSF+EU;?cJXz%T6lDQikD3`By3CA_?XGTX|IE6M1O=$0K*vCprX`rj>L5i?gdz{LC)R
+a5b%%oXSsM5Ios)ESyup>*)$3)eulzHywPU4h4RcR$qNO8!GvM{%Yo?BlF;CwX9CX5lhzBc6)ljBTyM
+-AzLQBu^#{a9s+o0zY{JdD9_T`#AXD6c4osBN70fN>2&fHkj_a9dHvJ$)o}PHOjk55na{Y<m>D>M0>)
+R`KmkLsUdojj5<dX<fLBLp>Q4H&8c#tEI75U*H#s{H*xtdJ22M+>3gYp3 at 3P)S#t0=c+L?-FM(wZk+c
+G5Y9Gp180V;n<8NjP1NN?iZdVTxNsizrT?F|{Ft!|78B4yK_%yFp|(6eeTUUO?n$!PZ~&K*Hgq$eE!B
+s)LRe(=kb(q%dS6rdJeriVS^$=LmKhL(DWA2LeOX4JHE%(yD)NYJ!G71#T&zzm+u|5ZD5duEi0MIAI2
+-0Mml}xrE53-h*6}dz=ci=^}33-=cP#PX6t?Hwj9jPB}Sd1|41*d9K-Afm#p96!(;djic<<lqcgG=Ui
+9ilPJK7Rbwzr!nZ_v!8;6oIu(QGKy9jW4+!sDw@<T}4hAW&T>zvhtaB;zgO8 at CG`zxVv{pt4!NRE|Sp
+hlT!Y~kAf|DNzt3qhIONcU#f?hUN0H;%LK0+qi>+p(igHwOm0(_i;CXfo%B)eK%@&3A`gi(nG&&{KB;
+COM^mO4Bk2&hjAKpp15(P=OZfGR)G%Ce4tG8#M`(Af^9M>2u&lX_%uLMTtB{S$M_Zs3v4mi72$-2$pP
+G+8EBHg``DBjCVvRbW2JX#!s9B*%t7qgLCL=!#?^lQciuijfabmE{0ijs^BUKO8xVGQvtM;pY`2Dz~D
+iD;QdQVC$XJ6+kl{%8M=Z at J>74eSc$Rtr40``wTDvypuJVy4e&6>~*Zex60H7g8Z2&7I at J=ISt3+SGk
+oruaHO+gU2dEIuzGFxvo#{OUBbwBA0lVGwy1HS6B)4P=iPwxw2Sz$SoF*!(>WbK%CE+ui(&b8}Ro!K~
+zSj5wQei!PM<AZHWs|@LAiUoA2m~71uh0rKPA*;cdaMV;EbLV?zicEg1B*i*fCyXHA}a;M#rd(J>TXv
+?WNY0Gc|a6V=$1Ygco0T~56E!I`Pz^bzqmK7>b&hhA$HlbfM9s7Btmy0V5XMyi`!h03y<227Dk*bT$P
+WBa2i0LlD-JCw<`Af0rjaeKl3!9D at Q@uVHf27IeRnJRk{mf3ONfIwL^;M0`V6M*-C at eI8)tXadlFrN<
+76d=&1x_C at JfIh5bnu5Co3ojNRk6jypy=tM7Y4k|xbMGaPy!1(s2r&7RAp8t#Sdq$BG%Xkh7bZ>pSU9
+Ykc>OZ=CLMddiXWs+dzlX4R~!wzz(shVWcuBQ_V`gmVO8328YJ79o$Cz?Y4W at ty!tgwyu7m!?QS}X17
+O at o!_fbWYj)n2M5qx5N&lF0m6g@@%yt=Eu`iqT`d~|-HJ%aO_YrrZwe9aklGJ_z4ke)ptheVd4r3 at _p
+vfs5QLgpt9#6e737_F-Vww}@+KkSR0OL8b=m1-skp4y=W9E@*BKFR+62O^bk;gl5bSV-2=D%j_;{448
+n;<e*pMAD$)^(y`C1th#3<8-(y!rg%zkf4@#gBl~Ei0%wz)xDmIEuMHP>2}u)To+tuzD06D3)rAlUn8
+>V1PgkD!4#=KU;yaPEKr4RI)vd(rfgJ)s<ggL+Dn7O@(+x5{;9WWK&PVlRsc+I;>0y&~KHDCemu`VA?
+t^&&8`(Z$6LuJV)G{x3={KLV4Q{gY{Hx<4}(<^m<D0A>Pt{nU0(sqDC-ON_Mv1+5ue$A at _KRF+K6tq$
+xZRf at KJTXSuyV!+54Yg$IP8lS3*JVOWaQ3I7}rAf4#OOrkRR2JPNq7-44S5L+g#S|ERD)qu0;q#W@=?
+Txu1)Iqw6-<4o!nWR$yh&y^Z2U}4^Og(4?4#e2S>ad at YUlo%uYkN&i-Nyz+4OD<=>mayUb2Aj}M^Bc6
+`uCA!9szA1^$pv8gANTPjhs&JiPZ`bu&xTQ#_jqA2=>F%s6O(s?@sw2s0~sd!S>kWVVWD8GqEAaO<vC
+!NYJZSZLj*%{>Z8SqkI-vyJ1%ZJ|5F7nC+&4qg^c)Gb{GoIjoglj0z+cm`NhHP4xj(<3 at Ijxffe5DTC
+v*P-05il$lI?>GkflJ&jn%;d$vev*d^^7X6m73S+4lJG!o|D%sZSUVr+JZXSbqAOCu(JsNGrFMGTFsa
+CNB^v<@POns9_qU^xEcro0>lbW_4t(|}BGg$8u^+H$@z+KRZQc8T-9<#QX+xhpl`OG$I!xoM8&GC$#c
+Ld?iz%WOGsYU9#igW<>2)wpiF*MdRELNtoV{oi(X{>DL-QZ}`^;nrcyiZ_3J&^iiaAZVi2gmz|J#-fE
+ncm>jNVm7lC72nlT6D|u(Vkb+Ut~BQmYpJfFem+KPD?-P%#1^L9C{|lI%>R0Q%jNwL&4b~@1pI3Z`am
+7<3L-DR{L?!u%A}@WQJ}yGuLmPajcGy;7fv4KYkOr(`RU>!?Dv#gx!Wghlk<ACxO|-+<1Ci1%;ryWZr
+-|b}8zt9GK{${PEnO;)5yjPez_n1DY at vp=^e&qM3C_hDOs*@nED!k3PXrgZm)OKAw*z%W_7szIg|s-?
+I+CwVR$sYX99e;#CP at mParglvO2nU@=Ed&QzD8hnbA$rEOt}$OXapl#F>bZ=0>f7cTnkW8_h5#iZlye
+>Aef-h9we_*RE`ql0;xED5!UFHN|bEL3S5+<(di(TDbYLkuIAe(x#X!f{i459mC~s`CM9S$=obLiirm
+!Y?rx?I5SyqS=8zDdx7(w^*y*hM%(c_yQZI|Hlv(WO9wwAAB`ckH at fz>&D}@P1l*MXW`p#Cf;f*)A}9
+Oep{c at b?gXOG%06)Qk>wVm`s)lZ#xIgjKUAo2D}{q7Tk_E)9=o|?{+L~1L(IxgRo2x3QYaH*F^Nc*nM
+`}e;M$U-4(i})wU4tOck_EgM+)eEUTbQ-&vz**N`>Le&LnSb2oYeTa%lO?vesM`zlO?74~}%WhU)}mi
+zOXXJXz~TpZrTx?r3o=`(I|9hetWI+tawiwZaQe}2zQdR-J<!3|->IC-?Eozyx~`MYqWPp at t-jMLjoY
+xdU+ at 0{V9!+fC?`*>dWfc<|F{SR^aMMRol1_}Lr2yhtEj~2xLB<-#L?IP{lqBhC#f_mkPOOt~oNeK6c
+Dw45+<j*{{G+0P#TafO>zQR(Qa*RCMFsf-v^Z at m%rkY8%O-W}L8uSA4axGV$3F`ugSW?S&?1cX$A=>c
+S`E}I(p+_dM#!el|v;Mm`S9aPM!I(~^WaP#6`Zb&-y=Q2Ap>?+*WZl2Ief!S7+!E=-kJs=c{~BR(WPJ
+3Er{irM9!G=n+)Hb1I?abdc`Vl+^Npf4tKNz4d2#ky0(+l&Pkg=QS?Xw+%)UY$R2^u>CvuL183Xt7iW
+Q~{B1XHxWiVr at hx7^_L;3=*Q)~jgF_9z+)W^fegWKb!)7`eUs%<Zi0BZY#+hjU`{F8<Z at Lp}@dZS)hP
+}s>60Rp~NjXGMl4(3>&BOOs3_WaN<QH8q{_CXIY^GLb#PXoox0al+fQZjAb1I(AvXn(8zR$SRv>aZF7
+#V6!t4!1)ZwE)XlQCp+<P;OygC6<S5GZvazLUW9Gj^lL4PZS1KgyA(?>e)l*G2qs>y1eDIcKz0=b5fK
+)dTBG$G2L=pxBVYbO9KQH0000800{-FNB{r;00IC2000000672v0B~t=FJE?LZe(wAFLGsZb!BsOb1!
+gVV{2h&Wpgiea%^mAVlyveZ*FvQX<{#5UukY>bYEXCaCrj&P)h>@6aWAK2mlEMt4K9^R+~-<0006X00
+24w003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kV{dMBa%o~OVQ_F|Zf9w3WiD`et
+yx=d+qe>b_pjh_v9MgYa<|341n@()b$S9c7bI@`uqXstqHS#?QAebbcn{8h-x*#cQIy;)di)Su)NuIC
+eTLapJSS1Kt7ToWC?aWI@=6lA6+EjYi}drvEN6VbPm8^M<ih at XqE!Je#ALEVhGEE_V^+$P7s9d(CImk
+J-fV8yRmH1C^Y~5g)eBej`Hsoz*rB<txa2X<I!l{0XS|l3mHYe8>S;1>Ae1zIpnE1lkv>}xzaJ$Nmp7
+KAV*ja`koN7Je!ODxz!T9Di4x>smI^W7nKesO%QOq6MrG*?NQb0C+1lgaVKRX~XG#V|xaWMIv5=M}D?
+r!yE43TyD%&v`A0}G6<Wemwxitq%Kvv|M7i=<_fW_d!*e%>M`5At)Du|+j=3sD8*CfuU5ahfp*XqREj
+LIFaa$}dEW23n~rUd%&eF{&|82aR%D_T&5<7(b)nNFwb`vWfu7NawfT+<UchkR0+LS95OBZ3ymmOm3v
+UY5pGxnDTZ9&<=Vv%3~d5P4wa%iZS-r7yv%$24XnNh>%h0}~ZOGMW&+18R^Q$rU4(*B~cL$U#atWxF7
+7C;{f8-u?-DiR3NYEX`A?aS$p<!bDu9TiBcyiWy?);7 at p5=d92>$bnVtOrysSo+r+h%Q)k85*jy&dA@
+91WeNMmvOIzgi)G_0iorFPbc<p^sHRy)Dw={r(_+MWB;B1g2fuFR0Wk{>+2N6<8SrCahv;%gj=UyRN|
+u*O4WMR_5cYsDpU&5h??|BSosh3rV!l9?>}o(Gc>KU*!;63}OXcveckC=mZ19ToFNTykukbt&>esg<X
+M4KEU?13K!r9;V{+-?@kKR5Mt=1~53j+`2uo!aXxPTj!1XA7HZZ2=G?~U*M&W;>>1So((Ou_jUJwp_r
+c$#7Of=9h43~gW#U=XMu3EM%UPK#7VQ6N~hTY!hqgjHgNvA!UfTT*799%+^);HXi|Dw*yu9N218)ok8
+cHr*+6T30#iSb!L0Bhl?pDwv}_0=}-jfEABv#S3)sa5|rKQKTX&E1pD+D at XZbE`s^bA at UR(-g2Iql+%
+syema`^%)o^^zN=hU=Y_u9kg1pu6tjFm1{j at Gg)O5Y{%}Q_TIWc;lQFzTbD<T}g)#-Hb<~NFY;>ra=f
+ND<NtCS5$|feO<O=pcV#8z<@@l_i#S$~7kjt1C;G)~`AoDDoE*v&v<)@<^w at 8G;!7y*gaXB0c11N|?%
+M*8}2`3=7zaTHFk{y0rUz~sWyy?azSdvu+OUG?tYh4wJp+o)L0S?7HlE;$iUx3UkZ99Bk;mOG9f at YXi
+IdFbsllYO8Tmpa;JiYC^`WV#C76e#}L$DbPI)5#2bwRc~IhriuWEjtx-HcN)?KvvTEQslbR;CTIN{cp
+^SL>TE8=u?j*ETgr4^Q(><!ddW3==^Y6PdNZe7C1}{H1BET1F=IubP|}s=t2rKt*_qB|T=GCM#5s|5o
+d8WmM_CwyHGW=uQ9qpHD`!j6X%PstfeVWTnjJlkK>ovr>zdFM^g>zsDwJgh1&pYzY6gB5!|4Euo#r=0
+2(fWXm9iSFNF%Ny7L;V7>=-50<RaD0cU^VQ+fl#=sv9rZudygeAJcf&9&es!MmWu<_Y(sXp_|LP3M{I
+K~#L+e~s!GFt7~42y!0Rls_stp)JX@`j(b=-NJ{Icd=?50K0KN~9Q=PDWS;P+LmOF2BCbw+butNRX*f
+2R>A1Fbhtp=_7wCFmg^QX#>!6OlFNwzd&2gxM=L9au^gL!Hd;T;<jTRVEc?(J?%UHyjN-x(x~06fd)D
+WyV=_8{X5TQqk_S>{Gkn{(_-1t`lO~zAn4ls|5j7NnQpG^T%dF88Tmy_$uCXu>f*zuB<kdQoscZt=1n
+Ad<dC{B?CPRdoZ53<kq-wJKd6DU$)T3C+u{b!F`=$unm)?79#(_-VCHRdG^#J+MbypeZQ&cz^=N!dr5
+A3~0kHu16Lf|LUS|o>mlrs*;&9(c8Ft0ASfQf_mBcJjmHHT18wnV0YZ1jfVJlZ7`b}SoeiIg^MO-m#o
+PCFJni$L1J!L_n5 at rBZRov8&@jdX~@nCwPaBFFmiz$xtAzY!z7%Kzso$dKT+hv`^>b+DAm})ZmUBh?}
+<~2eq`@`R3TQl=L?%hTdM}?g}_66b8xLixvKkn at GDA=C at Ut#`EYJDH{>3mIKa!)dbw<|lGGhny^@4^9
+z){^HCSTXcepvrA6RVL|i!@L3>#UGh+?Pj;uc<4~$00XWUHAE{{w9uFd!#kK6>Nl2p*3qny)@QgPGb6
+~%FM0{fh7bJ1KkR$A5vGOM!F=*E+?Koxyw%q?1{w!tQGIt~Ejbfbm_>(JKv`pQhF5P7kVoo at VLnNCF+
+-*6OXRu&CwXM*hAckR#RCK%G<(#^D+3~crVM#cQ<enNhPN*iWtPfdx|q&~H-*|6f`++EH==%DXW!xU*
+<u#{$<rcexckA?y-p5#zIj=|n2?zJ&V(7sq1Hd~>S2MZ%xmcSO27h&SN>~^0Ltv~0(+$ydy}PL2(GRw
+UEfwo$J~zxu9SvnuVuHXX;33Bsm|>^%1$Y8sh#xDyqR|r&){I8Q;i)joLjEuW?qnyanvh2Xqw+pZ@&r
+LhN^|5X`RW28ydy-D50Cf at alvXF$<a$yYX<j*un_!P3$dFvl#2UZ$A~BxGJ)r6AjcJ+_i>=vynwGDUs
+b`Y*MJ$BQ}iM{nY%|fP?}$etR>ZR=ZDe>4$@P*)z5s_qC1vq2IgH?3kdTR-MpjgQ2f>@P9B-I at Dd9D6
+rNuR^5vu_lDCp491>BwTpK2#yhs|vu5i8{eiuw!()T7l$8?u#l{x~M~ay53%nOMIMpBpZHn97VjEb}i
+b4~EMPurB7%#ZZGxj#nCX)#o8>+uo_zhtI at 32wMx)cD+jVHf*_#uh8Yn~54h|Dc&4~mOYX;u5&Fz1%B
+hu at WOc7A)izW#K1y^ij_Tw`WZBQO`CxiI#|gV{$2OK35%Azt=~|Crsc at 4l|@qWhbR&A0Qr_3V2G%5an
+Q6G*%(=ojGexSUesD0t_e1xAAQSl!b=qZoa?nl1D-=v;LVvZ~o^@;6XR0|XQR000O82?eW2*b<+%s|5
+f6vk?FQIRF3vaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcRLrZgg^KVlQrVY;ACFZ)
+`4bdCgbbZrer>edkwf9T+52hL)P<MF3F<uId=Iogh|_2iYJfawIXPxXkX-j9c{IJF`oQq$oRuQxw&Uc
+$uBcIWuRMM at L82)%@a;MWxz6uF^PCX})F!=b6W1o-2_qO9csAJ}?mJT?`2bsYH}p*141=uovTz$0Wdn
+ZImh|Cnqsaz+ZE|&cKiP_M|u|MV6(@*C#10kS7VKD9wIJlVCiujxd9j;9C}kt5TH$!jPrgf(yl>rQ{g
+~56!)0De*9|82<DE3g^dJifK11-p=RmuTOcNL#$GsTkti8La}rGb|wTDd+RZ+$JT0_jIY;(M{TnPb%9
+Snn76sgw#_TLw#?(Y+(#V0M`$g}LeDH{9Xer{M_Vl3#dmQQNy&(p{xau)E7w#+Fw#Gkn!y$!ku1vDfL
+fljd*qM)`HC!>T;rWn&Hc`&zL4<-ePX&cVJ2<!G=UY8mgcDnLq|fk@>nTBc&w;A9Ta_g>}4d at 68~P_R
+diLS+fA8%wK+>MZHCR2AdDYBTrf-rlgIWFm^NNUicAW at 6((!Cl4|sKjwk~%p;ez!^i#<uE5Vo1GJ9aD
+@%ih!%jx;m%?-UJ=-G;kZKPUPMb$VekdBIrgiQ1UTH_xqM3x1TIi!w8BwM-u4zPV(S`TRFH+TdMGX2*
+gs&t`&&ZJj-SVRKJH*b829j+Yv=EnBecrONG93d7#XW3$O>z4&puxHzeR$Gp5`xb~+fRJ at sBZn%aw$i
+=P;r#`B4}!op;OZXTAmwrs-GSj)LX1ja-nX6UvpMwwkMBTrylqRV*b>+sjXEzNXVoUnfC>15YD0q{kU
+|p at 62G5zUT(uSf at D7iY`n9;8TAubmTSkpR#-JDflgP?VRvS7?z7{>NT5UwJeJ4O_I8fi-=UzUH~bBk%
+IneZT00LLh)8%5<3In}f4H#QUbAm$On(O`UQM&~9_*bl!V#JUWHH4ET%><!P3RiQqGMH6)vJztfZZlU
+`J>66A~{q<&?$!$(A?8ir=S<?8uEnYu;wZ?%CrS3qcsf5Ycr?foF1yS<^#cI$6A8 at SO6v((&O-IcJ^+
+5KAq3P%h~ny^lavIr^j^<5&gk*O%r at VzP;wo?UnD>9p>0)v$@@;&SO_RhXV_#tpl?h#h>uT4gjZTut^
+C0B#o7WcVt()aURRrcwtgSs?<4~v}v_ at X08z%$@8au^b0rHJiQ``RHS1reBZydccBtzJQ}$@&OgAG--
+DiO0V@!Y$9Tt$$m_vI7<n!9ip3F)mY(i7<5CNL$D46eXTg`Bu?Lw`0jnZB5}?;R9D|N)Ee<`P{Z)ZL6
+I1=h)Vqz`@G?v4012y7wZY9P-b7gj`5Ff8O3c at N8s0})sfjlDEjn{`+laEqZ1?fSO<s)wZ9S6qu3?x-
+Zz9qalZ(k49F?G+4tp{XqC?^2;?1NLb#yZ{!u^nv>iZK>itx|$QHvzN{+Pqp!tBr36r$f)6Emy_q_O=
+u9k{$h5V}Jl**oRzlVdnNZOFs%tc3 at D%c3<gb<;~pYYFajvX+w5x6_M at +0|JqB?EN!$lOXg;0-is`f>
+htb~Qgg?aI=Ac2A=7<ZriIf3FX7I{02McoclThdxE_H}-|@PS6nWzZCfYMz{~}9?unWcQHXNzjeFv(B
+{Z~2-r`f(Ljef7AQtPkH$kG8i+?Nz5+fQ1*s{Ruu5<|e%aq_Cwq6GN5yPT?j5B)81<8OE}Pf}kA{wap
+jL;->S$Ddt2sbHdxBzEEPke>as%D01>m=FuG^|TVq+W9mR5g!ZINi6cuY6vk|z&AuS4rQbR<%c!Rz5*
+3P at 6cSp;)Yq9sBHLWPn(OZBmi9(T_1NN{s1J-9FY8%I`M^tZmL8W;uuJX?F}EO%%<+ff7QvmNY{;97q
+JP)h>@6aWAK2mlEMt4Jf{zYK8>0006m0024w003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#i
+QMX<{=kV{dMBa%o~OaCvWVWo~nGY%Xwl?HX%y+s5%be#Lb>8GtecOLCG)*|0OROpVz{BrDQ(9oGYaz>
+&NN#34996zfTUdw1^+z~Mnz$@oh<<w!#U*xUE+?e4+0?fLwQ>{zxT^U2sd7I~8JG$SjXlG#4n at R*#r<
+dR1b-;r!X1tlyNS(*nK<FO!YMfN-=JDx|O6|p-?GEVMk%2s=Vm;;(-Y{ddUqW~NmI43-#eMCt at y7KcV
+BN1Dse#!ta<knHlvm^LnVj#hW26rr8|3wmwDGiYv0Qq6akRd+;R?<7kgdedG7FjhGU|lL`v~n$Lv0*~
+u5R!|Plo61V#1HQLwd7Z1eiYGgU|B~b*-sN1qficD%7C_1+lhPnvImdjaDBYVvP1+CqjA;*dg-3^Bob
+f5r!5Tb_dUz{05S!BT#!YswhE%oU%<CpKSrhqd=i$FE0R427KMmf+$g#rH0TOUcQ3Wsq1irg5JlEtmB
++#0_TPCLfmL3*0gtnkE!~oU%i>>Xka;Z5xTm3R$tvYrsp7)U0S~FQq~J|dnrune-~?MANs%{;#f+r%*
+Bo>qTq5m(@-M+9c#Muld~$m$SVn_fWPHp1MQ?AdEf4buTn9YV&xjxI2?zb8Bx74jDq8R~Ng|XE{6Y~H
+Bo|2d_O{^owy&KQXb-ePvvfa at Kk&o0G8_)-p#=P0nsRz_9eoIBl992bF-lXOR)iB at 2+Nv4)a|uf<Pdu
+U5Pnc{Pkf;Qfu~!r+FpfWA9NBDmVxVlOB4YO(QWNEG?u=EN at pqfpVFlueo8BEhuAn*K7z_Z)o3{4M}m
+`$uL36FU>SB#iC`fmbhQF0315+r34a;kQizooi>tW>4x6M at 2sDI|1BfFiCASwh<LeQaGJ~+Y^?E>ktd
+oiljth|tDqXR4p3+9P5R#l05QGU>f_ at -!a2U}q^kxZ~$%UoWJ8blNbb0>vYT*IL-o<$KW_06SjpvKoT
+Sy}*192#@b*+@}PTvvMapPlI0{|xnkPX1YX$RX{OLg{voa+)##B4xh91mW+ps~AScPybH^Ie{<U*Oe?
+IZYwodJ}(3y>T3BhnK5^6hlI3_Dg7_6+Ey=kf$u$d-NfRILja{*|u%T!1laVo`D%WuLui&DR`7;)Kk}
+%RmP5707=L-l8_6U_7V!r$_=6jO^s{*_SN6Kb5Psl92l9uoz12<i$`$f%U?V{%Dfl^FLA(4 at WS&bLv>
+(yyz&LD-?enq&G&KUKgg&<K&tpoeFkA>M5IGO1sc81|1SJ1ji{{ZVwMZs5R9h*;gaJe;Ds+wU)I)S`=
+n$$kJ)`6-5fSnAM%6(6g;>C*VQnX-FTk$2`xCD%jc3wrFcS~ky+$tkO8;HBB255cu<C0rOP^IZ^a_Yr
+HZVMjPy9xmlCUif(&72k7-4$2)bfdb(io1(F+&$0g5XNPKqa9 at u1W^X4>K>jgZsgial6LUEuKg9w;)V
+vOZ}($ukyNmIr<lffEnON4q0A+kIlw2e1U($Mxm?PnPuz^C;ml<l3W at V$MC11&1tzc2wqRxF5=dBkJA
+=L2s5KuJz`8?jgG20pAB|*M3sdBBsMxS%+X=g&2Zd1lvUlG%}hVL*0`jc2DOv3^pNawITT|&4LMUb~9
+Z}FQ!+Rr0&mN4ou&6)jjWew0JXp-EXgfY;}KHUm|anD}DpRt#G4&+><)67F1ea?VZ{^xla{91~LHFFd
+CuVQ^DC1>0_HM at AMN0+Gef5^<~b^p1|4JAK~n*o3pc$vod?O(7AbnwXE~GWxEd36_)$0SH$yqhWi~PY
+NN<d1%^opYj)E|E=D)tk<-bjPU79 at W_<ZUKIqqBr?bU)Iyt}UgrAK at Hx2lk(cj;WZ$_`Hs^`Eu^1SQG
+<@xx^8(#t^639cG()SK*z#tqZ0J#m7JHC28cWI0{+Od5RFlP5K_=+%-b(D<x9c+!1oPPh4tUP5-wvfp
+CoAF}gy}FuS{4^i`JOV<e- at p9fTg&1pTYE^<tAbtfpf43bm9RYIZI}9qr*rhs$YyTip=DW643W<IQmN
+Fw=J6ffA48T1Hf0WxEk&6{jxp=1GNkDKTw7Jbhe-opO=e^fY={ORg^=Z=@!Xqzn9fEMRO^r|(wu4`x)
+N?F#oHKKysaS$7MIIC(OpVcEAk`}zM%Xrky-{lDBL9!%P8G5+35~cdjo$y5fNK&GH|D5zCK>D2T;C_b
+6FVTUQv`hW)J6DK?E_|C~};3g;S`_w$JAi_Y^n3h;9Lcs<*JUuWwDFs7A5WlWU)0t%^MXbjTcP)-98j
+_y*dMEp}Y<^GUt6_iNqc*55<=yr+GQjNnRok4>7<baM#<)yS4=63|`jsEu6<#m)}ek|oP<CIHIXfYM5
+I65LhU1iHdGlqDEhP)E6QY$)S^PFHUE=sEdknPRFk%YBDi<s5)6%6rafpPZhYecSuGmO~d`)6A<?t&X
+gPQE%E}P+d?z4Y1!&dA{CYR6usd4M08*W1-4js9ZkDJFu6<{6OtoW!02I*&dh6m5J9hrl}vvJ6Ibu+)
+8z*=qn6+w$zW;2E#52Q*s9}l!NMey^16}1Dpro9o91e3z^`jgcBRA0pp4bEolk*ry*I|br-fP(%Q(-y
+yjX|rQ51*Qu+{;dI at Z<K8mRVM(qV5O24f!3Sb7GxX9p8Rr#R?GU|R;eLEUMzsBjKAM6y+frm9?^(v{*
+KB at tVP5O0ZXeVJpcK8q)4le1F&aBa?Me`<-1fNd#m0LtKmMD9jIH2^7aRfD#oTBC~ihHm2GdV;6myjr
+Xt>wUbi2;`?-$W0v!^ynE@{jV4pCSreKLK|L9SD4<Mxx{n99pZo6+k)_zfTcKs5&u6H9$u8osEx+5}i
+fRRFj>APtED7_DNfii*h46me^fITjij#CGt|b5`E%@DNh_#sKTvWpjL2-gSl0?uIxe9kV2vB(tBZqtr
+I+fWR>iby<2dqC}EQFU>jwbhl7A<)i<`!zU~_Pa<9N?j+grDHTWClD>1~a+_1hJu~v&~WlSBYswb*Fw
+|dw?3PC$=*B92+1xrpE&x42yP*b^07xLqpm`mw<tpsW?>}tSXv0q;B1d9_n)s=fd(IC6ufoOReP&EuK
+6%FAEyy;SdanYm+p5G<PU&%?`;k$s2p#W_oQZjd}mJbS1khzow_u2!F{B#Zec64;N!(Rr2wK=I=iAi+
+Ww7n~lHPIMpRdy(~9%e5tptWv}W}5PJItRuBgf@^M!y$2wVLONNkv>2YMazt)mv%>z()L|KB$&4;xJC
+!C91$7Q7nwpJ`8_7n&ot#XlFFCFGBl?)!#oT5E{5<P*1N}>(Zy)|ZuHulzj?cOJ$*m<8ge}*!+Sr at Zm
+1tNCe?Cn*e5&qmm#GlG_Lw`T68`dVf3jFm5ll~g9`-L^Dd{?YibGivNSwomtvj0kaKQ7B+%ies`ABWa
+Ghs%?<x8)g8mCW+*)637!VQlsFGdE?+-1LmqutQjQ<t!b at D$MT~C(k|FP9nT^U;koVW}fQ8BGzM_)a@
+M;ogOc%#x0Q2lw(w?HqC$Bh~>hOB{gx54=|RyTDaS`pf0!5lnbnJMwsHPh_{?{UV|;Rg8ez!UHQ3F^O
+=FGyRr%>VRWgODe>34XMzNM^e0 at 4CmdG1NOWW#c%6wA5{fjAzjP2-QcNG|Xc>{E=WY(paoylS@@4)HF
+T9f2^<!41~`~$AIrsT^<vBC at C3I6&a>c-aR9i<9}R_&}X38-<h*~<rs2g53O(>g?O?crzdy>j1!bYb+
+%jOvx);%-94?k{E?hK!Ot5dv>fBL?B5*=MX70mb_Bu!|5r#K*>?{X!=*OBuW>4YLkaC^OBVa--os{pD
+7yheO%LCl{JEo~#jT^9ZRnwwW3=TuJaBdAK8_D+&;}2k3kux?=|0K08|K at jM!Th{#)8Z7)oAfyHuBEr
+lhbxmKz<DNHPO#CxMJX94 at jGw<JkCC3Xf$+-j at j7V&H|@spnoydi`FVbmOu$(jgz)gzVRoIS`PiT<xr
+aZLfTU!- at 95P0494_*7o~W^4_rp>Bjsmv23<`Ic(R|6rumI<eyB at 9}Uv*fI`cpL86ITo<@>IBcOyg`m
+h+I6WO6pFTwc1%P%OgNrVteU*~b%)pW&KIM?PJS`q}9Te9_F|GkyfygPWKIroBH77*l1o4CNS9!GV#a
+w-dkdiiiEs=+<yH<pjQNd!>c%m^kP7fUX>XSRVN9sd76z|I+dE*k)_^VLY-GeM&M!E(88_3r^He6)r(
+vK`O&JPQ63Y8bKRNm1N1=&O6VDbVsXZnyioyVHRh28|&s+6ko6fHHNEq*~@7GP-XYk4BIq#OU9;k#OV
+CC63jO(v2kyW@*&>ZQPai5Zx6Avn$KC*92{u$NqE%7fO at B$e;K!E?1z1J=ZmR>3i2{UEf43(8CFO-|z
+&^<#+ws<5WVRdlpvrEV(IJkkat)rk9HfimLi9U9>jxN1gzv}ZchDXGE@#Re$Vf!Rwa^$Q9E@=a=!Z%9
+Q^Yp$NF3I*xcwF-`*#@UE!YW7;bD+UENzW-#rC6;lrWf@!JVUqcN7;%^oklmlXEE4&2hUdQ*)9cyIXg
+(iLCs-dooSneOGWp=DqH<dBB`<S&_@%Pqr7RPpdg9>{=fH`x#tkW^9bmeaZ~&c}t(Jaa4C))v-pBV{T
+ntSQ-yiBdDR0VLP{$)nn%bT6{5#K9$3N&E4)~UmW?)$$iLh!PZ7i-s>pIB;5wc=0>uRIg-VF#s?rr=y
+6dTCe&ZGYOg^t<l?2%B<W?u}KU!@^d_zyP0t;2|~5RavrihwlAp(QluceSI7`bmY{^OVp12T)4`1QY-
+O00;mH1*=H<CRq)=1^@sh761S?0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJo
+_RbaH88FLQ5WYjZAed97G&Z`(Ey{;pp^Bq(eLj<R9xFc`>(B2BSkTN^BCyP_x*S~|x>B~l|PyGGId_8
+s5!t}H304~aw`AKo4Bj?ej+oSvMLRAh|btw^Oer at xqy=;-Jux_)!<+ci;DSqiDiMo3c0JZI~lqJO5ID
+7x7)g?L;`wkCzhsvPVmWn7U`iXBr-aGG~;-A*|Bg at Ga)DGIV at ddqm^cZ`X}^>}`%a_gRwxhf%L8<x^M
+KM=hIKk=OGsAQDu1))51_B=x<L4eaW0x`tcR6NyIC8iHc0=O?og4$|CBUguOk$zT0G()JDio7O9OS|F
+ituk`Aw*<auN#iK`jf*`ezq5jAYVg%6icZNzB_(i;Y6j#?pvhe5+9B3ks1m;;5(=Sl7g#H%QEbO3K{Y
+|rJR;=P)$V6PvrK|gpknfz9}pzn8Uzm3C_=S{qSUA;YQCW?j~}Ll#cpsE(V}szJ*k7;5Y>3VmL{6)sV
+2#$(v^fHA*`?)(X|qJr6F<OQKaQzg{UM5SieT_B?ZKMWydb16tW|<r;?+?lpV7>#j#srmG at FFpah-)P
+Y>^%d}QUr;@G^*=XT6Ivu*+~9^xO*<?o82+pSA{T-ZY<Vnamf!imfpq%7==@x3DLa9xHohzWU#QC0|P
+ATcWni?}2TpbfRvx>T#Pvyd4QXohNJB2}@FcW1!QP!~}8%x7V|)kS`6-FWI#tbtoB>(`-otbqM1DN_)
++Gc-t`gHOSn1)-RWcGw=xl4w?dsB|-a;|4rL9Jk`d13AC{dUJDiQO_;y_jNN6ErtN45cz!|S2#ZaGJ_
+4+FjTyxSKC|l8ukr>9SZ<Phk|l?XG(`dFgyI=hJsY3F&XgOf=EfFf&>RfqF&{bF^_ZPoV*qsPb5lns(
+c}AbenfQuyE^47MlOhNtt6gKGj&NtY6yMtG85#Z&z?=C+Ry#8Ei168D~04<_hx7lAKU^r|{p&=e>FJT
+U)hpK2B^LCc=CBoH#LbU^$<4CufUhX;p%p_l#Ux#6?^y(BC?0bmXv4j8Rs}mQKMC^IT#YuXCohXfevS
+onqY3uYRK#w)iKX_h{JHZ}lkKIOCP5WD1Ed*^L(Ml^<taso5vQ8d)8UpqoSs-kU~mOSRG4;|+QpnBg&
+QF^g=?O0oK2?QUE(@5q|Rx;)+rrQLzWCYoDiCp^}xi9VEYJ`yQTah2>q8vZc*GzDPXGY;V9jUv;ljc)
+g?HuKY~D+Q9%V#0thd(ZBe%6lQR2 at U-0*m_ at Y-9rB{lsY*HanPAsM6LL>C8txfO%aD~4A|>ntVRxx-&
+KX9i&ljZ<cYExX9U;9WbVVKw&ICe9FZsg9Z6n(F*LwM=aup5Ww at YvHXJ)j$qe75cMQoK%4{LWyJC$-G
+i@&3!V;e~*z6Y^8PlE~%#gbfyLfoOn<{rVqJfeScO)=TA><hftp*0VyY##xH4s7+q|k<Q at D%3YZl=zG
+Er!UCJhaZ?P0s!=hZ>&A!yR2Q9EDuLeRdD;?(a7HC30Fc6HSK6D`SQ3Ky%%ZKEQ-=^&hADwAznTc>pn
+0AX=$q;{OF~fGf7cuh3Vht*G*hq*P;%;F>2;y|j3^k-nBZ%9xh!60r5)RtSmHF?kQz_wbp<r4BBu${b
+m_cIo~OB$9N<&ffB!e<c}H*qFJHH>3_xJP$u>_KwSg&3>#KDaE2-(R%#Tbw at Ne>>Z`)&PW4Cyi{OwmY
+U{FA<H&Kx{kE1l4(a<TA5~ntPhU6xz5xz%m`Ni<*Fes<7!k|m~O-M&%WAuJ&3uH<2KFgK at 4eGPr#QWb
+A5IB>X4?-heLjKGkB33+SuE42z)()eEo3fe&5l-xA%(Y_VX6cAMk9?R!moDTpHTP_Ih_{5-T03PQ&dv
+XW+1m<3UdnanpY!Rzpz9`jDt}3k4V!+HD+Xt0~tnyMn4Mc|9ijtwpc9Er2IO5^vI)5t(jfNos;)KZm7
+?S4Cn>QRhGYu*4jq89LCfJvnK-V}+2$v~D`vOJ!(r-BitMJr*6Z>?GshqI2S?<+EA0{&x6gO?a>VeDl
+|b<mSWGW#WELYARzsjs5hyu%EWD`?rHDn(t^{!9=k<dh34UGIb3!$O0qC2T<79wxzC4*1nozhK{-iDd
+XpQMI+Pe?Y?%vdJKNm^+Goq+GKqdylTn8n3!edwV3(piPhA5RYznWD3I$_9i)v!)5#4(@MFJg{S?k~*
+h{tA*memRG_oDl>YS((Vmud`pLF_%HdPx2icE+`{{m1;0|XQR000O82?eW2k6oaAPyhe`Z2$lOIsgCw
+aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcRyqV{2h&WpgiIUukY>bYEXCaCv2nK?;B
+{3<U3aMQ&9Pf8bk|DlHXKBTf2$74hV8m|=3$%0TYkTLO5mr#9!fno9SCmx=Pz&7U?C)aYA5QS&3#L<B
+^U`>^m3{yt1R(gjdU0|XQR000O82?eW2M!}|M at CpC`=OO?AJ^%m!aA|NaUv_0~WN&gWa%FLKWpi|MFK
+}UFYhh<)b1!vrY;0*_GcRyqV{2h&WpgiYa%5$4Wn^DuX=8LQaCx;_ZExE+68 at fFK{P0AFBB)~-L}}^y
+tv(MiVJqPDcW9f2O}_OiMDx`L at g=V^)2?l-^`GdsJFCP;PN4n$l-9__{<EIbM_;T_l43WQyX@#6QM=&
+TE^vc#^RJ4!^#~mnXYofRL<U=${qZ9G5>1>zrMv^FY(ta#`A;~r{Xj}J7 at 1;oiL6VCMUo}n39=FmVzi
+{9xDyIau{bkO<@<oQchG=k>CR|`biZhEw{Upy|}vij=krnOu_1Zh_aOVR_KUnkqT}^!m1oZCpN#{ePq
+ALSmZ_^k6l?7H<y>OO2nMUr98kMz<(aA>{5$Z7Q$S9`|9P(@BVUmR_fEu8H1mVRv9qUf`hCXnP)4?l}
+tolGH%$aemfJNV^Ngsj;L<6RytsjR9SXfeI29D?km2I6<Eft`dOUJCn=5*`^3{qxaYf4Wb`;HMghJ!J
+3F(!4E>wHubHKp;DA&)*C*$0k%??Av;jvMp>d8WTstB9bM`|HGdrQdp9w=wEaQb?dk~V9iXBMAxg-7v
+PU%n=S{*=Z&>sx|<JoEz!AmM~`w*+V<ghuuVZZ=Y$PNUAS%?9a2?(+Tf=CN1;srm#vnT#hZZGaJe2KV
+}8SJ at Hnqn?oih*NzCeSB1uf?`Xxh84JG7|M^DO3ub^OPBpZsw~M=-&{Z+U7`QzDH9s&JtCv(-Vz=EmC
+P(YQ<8=cH15qgQ(S|A!CRfq&~`W2Mi5_j?6{M;2>o19J1 at qv0NPBkbo@>OJEG$F)eq}FauGR$_*$<mf
+-1Dfwy+q%(J`Y at s7k{NL?z3A~Y4ZvH^5}=e8gahPt?6Z29i}?Wc&nz5Un6i2Z!~?+0hRL~Ovj;JR|Pn
+xg3<_6^rt1Ao5R9~0vulA>}lxdS at MQ~6&+4eMSPLDtN3#y-ex&dUm1C{5RkHLD?SMr>V`=%OR=g&5dY
+Xd)X8xxzC52mwQhNNPT75%bDWv`F1O8z=zRYguZP>@3uyewJjYDQY}p-?QsRTN0B?VE*w`2s*&iiTGT
+I7`+5%GE-pa>qgLsZ9&TC$%H*`c+P5mHJJDx7pGdOvL1J!@k3c^3Dyt+ZVW7A3+DbTAK1{(c at uFtz-?
+PMSh>7;z{U6&G5h<i%EiObhIpP9?Ds#;I^#AwOxr;d#+LDT;=&6&99ck$$p4;TfiLrbJ`6pTgfmkavD
+1wGZL#>Csbnc17N^Fg=j?+`M{pQ&ab&oJ#Q^w}+GvQ*&2cB;2yGRPmK3QFTX=FP_0d5Oc;d0L$XE8z(
+?JY`n>9vau>c8iH&FPJ^abpfdLG6eOi^qD6rpi$dL9Ck55)=oKmzd*u)KQcO)ak<n%Ra8xN!-)lHZZc
+`yIz>9-&)$UTZlQP^<4;TJC1NS8KwaR~r`Ir7(hSJw1d at eU11?Ud`c{fH&}&d|P2{6GSNh{6;!Q1)i2
+B;0AL!CM|UUZ>>+(ag>qVB1#YVQUJn<SQvvz3b>joc5is3%)D(hr%Ypw1^|%j3b-92`<RQ**6uCm%nM
+aahu2w;)@$1YIAR at L)3*Q~lB07{&jD`E86V%KDw#F5e<Tj$N^2iw*G>F@!Bb%;;ZP8G14TQ!Pg0}_(J
+WuIqt`K|DPS6Cp)p-TaXF?*Fz>YSBY#SxtN({aSAj+`)XI8D6+1Cw7vB>gLt1 at Lu}WnU2AHumDUdc=^
+)k%H1*wM at 7h&jOTM$lX?FCjYn=BwVJOz#ZL^|<WJ|+86^<0aJ&=T0NF)SRS;20v#Ek0_1u2wMv#`AP!
+>FFL2ZiX!klrK3QcI~XrrUCwSVEi4t*(${@6xdC%U+&)A`!Zx>u^Q_k5CTToo7U`xr`Q^e6(|^O1KEL
+U6X-%*Y0^$aA}h+%WcD=?@5F0!C)^xKE*@VT){M?K8K at sA9i*xw01PoM$o0TRh<jd;>wd(JVP<Q+m8K
+=Ag=OLzoMk*4ojh94*$lt1L5UzfkOEv}HL>Iyn2QU_H5=$J)iLa%5=HJ$L_x(#?y3*p>OefjRBK;cG{
+KKu&Jd{3I7Pbe5vU)6U{%SaD<hJ0Pn83W0oEQ)LgsdCg#8kk*g^zR3eD|6Du71<x}ojtL~FO+0Uh1hQ
+r7#=9v485S+kxaF`y{H0S=8AQwMkP at rZdT%XZ8g;PS|R&ZJ}e4O^Vl8?G>I#<Hg9sQsAj?c}H!Emv65
+r;3D7?8FKTG}vl%A>9$(BEg$5gZ`5yKn`~k1n2aUgkM8uza_YT6M*pD1_rT%v==1MTb4YJv1fsf;U<u
+{R_68wtJXbY$t~Km#c4;)xj%#Ucz1a<oE+T<!+XjaRyyYZ)Iqru)37Cm;EIlP4c^{CEe)*-I4<S}bfd
+cmX&ewyX?)X&<~Y6a=P%^=HQn`#FLc+=bu(7-z3s}V$9 at 6n+(=4pDVwxdbbltzwZZgx!nX1t@)<Vd(^
+`%w=*gj2x9JsUo-7<*bcQzoY<lH)Y_`BC1_R*+VWK=|zXBV)cH3&`CSX;1Vn+dE&}A4?LHY)LVVkw8O
+7={lkDk at 5=@qyJwNuN~i$&Mgeg(-9<Vjd2jgRdqQQ7`&)-NR;MiNoKZfpR3VM*HQkxUJTfJ1TT_nBan
+Prk5|KMGIZuv<zv&JLQsQWcw~$5|i-)#ssC=(f4gw7)TdQTKqi3j#0W*K{ci!G%z&B^2(C0<RM=4%Qk
+X1j_?|W9M0BT<^)hYW*L9-wIl#aH}^L8(yX5!mk-BiKqKzlspi29wJ`@n?l5RA(@bOY;jDf3?V;O8p6
+0xd4kfBw(}7G$f34x+Ndf=<iq!-VBXl16IquW!_t-r at iZpmC329yJI7cU(AHJH?EtX`N=Ig#a&~>Vl`
+|k+yZTZP4f$wwK2!xdMvbS8DBakQ!!V0=QgN`L at feJ61q?(9v at +0GDCBE_dO?QX`x~b)BR_6KlDBWCF
+v7hyUs4jA^g`G7MfS~o4p{vD$3RP8=&+qHI+qhMbi^xLt;@vLD^c(fr;U&`G3eRac~IfWd>(YyE&8SB
+gsNYUci^MlTe!`0fDX!0E}jSlRx5bQc_vn?Xf`MvEPJjWUuYxLp;N<UBO#Nf9Z~TpjOf_*UQ)$k-~#5
+oixT{n2lfS|%sAb}BW4yd-a|9B4FZnp!UbC{n^NzgT^I&g3KG<c$}ogd?dsBbtcp|M;CeBUv_747pt<
+H}(av5|v?8UZ7>taL!6P=cg%^Zgy|8!Q$JPYbL8#BrZ4l{6^)@p*j-?sVV#PPmTeLR{yNtinm at Pi*U9
+lRb92=)lI{IqTrMMpKOeXiQ=k<~gOQ5s3^Hv-OJ_y;HaB768>i$r3!VKaX7V%pJl^uSjWK(-r>tKUE)
+{z7w(4XL~T57sMU{APLr4#4Fncd at 680+G<8mA~N^>U>nX+A|P7WfJ5CzTakOM~sY0!3}{b^jW3hW#XJ
+M2;2hq1oSEFt%6L-^nsw6m;M18Q`Zb$6`Dy_A9&KP|OA+8*4}kn8gAgt=jh9JAe`_Fl}+>26|?+m;OB
+ihStr+sC69|51sXPU%W1%kIp%i(v`8-aP|L3ylP#M9Hcl7HTKW&F2m3H6DP`xR6?<CYb*Du+<sp|TD+
+BkQ)s^~KkMq?|4pEGmjYwM&Ayi*yi>uCtzX#PlK1v+{yAYtg267|3lQA0Ji!XIswYPMe-TcK{{c`-0|
+XQR000O82?eW2(^wv{Tn+#LY%Kr)H2?qraA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_G
+cRyqV{2h&WpgicX?QMhd9502Z{xV}yMG0%ps0MObvMc33LG{?oy6I=m)NQ8z1{6~A<!~yb0dqcNXPLN
+{qLO_QcufHx~&mJB<DRGj)tT>&--9xER7VJ%~i^_DYTOXi_}aov*d=Qn?y5}u!o&l!sCqbWX8 at t&ug_
+#uGD&$%Ei(!KWekHx2JF4z`s*=DUz>zC4op7k!qCy?t at 5IQfmo3q-INzis_CmQl1zw3)nmrf~h%+mON
+dEfEfjHc5F at 5Oic}!3F^f`v-J)zTPJ1-e6*UIEl&k$#kE$E<iL>4RJ2)%#BhTG=Q0NSe6tkH8#@ZGO;
+Top$4n;3POuEdwi1lpfbl|`R7S`o0IVq9%utIA9Ltq-B9NS1p at D1bWTU|dR5f5LHIs9E3bJgynZ{Bt1
+2&V$d%7_&sBth72~vS2e}tLPB94&*&Wts;(2tN%`!zb%I5(kWwq2?ftJnfwns3qsWD260Dezj*Isutq
+MPzUY@#iXz)z;2^GLvYO{t4!70x&*RPlC*`vz;gd+FB)W7S_ewI*?v+P=6|%(?Bvr0}QoJGLup?S{s;
+u2{W)(DM`c_C~MzA4Q_jEJiM8F?2dY at KV}c3;V=E`-Zk^OW9WMU``Dk{4nIs7V2rwh$!9jaVco%J_H%
+!59kAY~hf!}lX2VhIq<{Z#*YCk#e{gm8;krL~&n|&*Fr2Wv{(XM}Tqi?@5*@F8Z;agTd!wsc=yosrcm
+2udfZg;b17O-ZxfzaFmpybxlm69*yY7fRd>B0p$30Ns8u$+SgPReE>D~7RlMaZ5G1mJ9I&6H~y}Kh>-
+4CGu$ZB{seE2--zrUTZ+u_}H4 at NJ0pj-FyuE$6g*mZT+?cWFNx_jS!kNS<+5ZH_e&FS~?wueJt at c>9z
+_iEA~4$zXT;b1a?ZUBakCOPfL{<s&g?x;UTpWKXwz#m--6oAqnpkjkT&$2;(v&ysp4)#BcdxbXFz3v?
+_8>7)>WSCRA!U<;z0*4!wW_`WWS<~#+LbqCB$TzUo(lBHf%-hQ=?A_E2{bf!0siV at xpFJRZ0yqSer91
+7Mb>4c6ov at L3k`$*uoJN28VJ_xp5SuLsGB!y!5Uq2zg}8=Q18I*EPLcV}JFSP$=fDoM>}2d^GFQL8{l
+YFT*g2RrXMplki@^^Ucd`h{4kR*ZK;se;-a at 1~0QwdX#gM=9VSL(gBc2TnTP`#<l?hLG+30j<&{qh!?
+|vHh|K4+2uK2T-zloNJwP at 68%C)dV&C2<x9g9`6XgBESlah9-I#&pqK(oE4^(K+{K55V#?XiOAr0_cC
+23|v}4kU)uXw0*|_mw|!uWj|m-wFGxoe>^y`A##)wVIuu0c)c>Iac8bu)+6F*}He_{It#9uv4pH;S|f
+XZ~g$8OhFo(#sahAl0(u%|Eal8E?~dA$odbvP-8PR?Ls7Zhkf!DCDxM0_?wA23&U7INcxc5=QS|?Qeh
+xbGpA|}HtDX43rze^e!HCyiswkI4I4sK&LN5S(p05Yk`r*y8*or%@I at ExyUFtU@rPIO`tiKR%laW^pJ
+2t2Klp4G!mHY!Z;~j$m$vf?lo#Du{Vk3)0Ygmeb+7_KR2=Ap$c5HAJTvAtlZ5d8-NeFA_(~Mq`!>s1S
+l~R5>m6S{c9iisBpDijc{RY<<U+%Yd1(2zO4CORk2vUG5%>l4v5^tp@!xjWLPu#4BCR4epu#aOI09Bu
+7k at a|!7(rqA7#3QD9C^>EXZ|<5=xj&Y;dh1ix9dheiDAW#2Wl-NTr~V6F9<lX at yMiT@Qa8mm1qFVyJ4
+MeqqqzPfE^oo;9f|;0q|)iq!!VPjbw<B&J=`le}l8<}SO3!ee%CXRvVJ3w{GP#86WvVtX-ANyUvDc;o
+mbrdE}9C+AXCs+`bEW55~xfXw$-F#_Erm50e>hzo>??UChGLIg8PhGtV&%O1{gwQ$e4w5zV{8dr1vm)
+=CS<Wbwe5u8l&uN}|3&F;<xf3wF?@=>pc&b!Awk62CIQUAm20V%WjFjA%mVKpeyJl_qJnW%j;GS&|F)
+nU|R^~(n37>B%C*Z0L>b*c5 at aJXieF02<WJFQB~mBeCTXL*$(tZ&3h`?eUdi<_#EJmq7&Ln*^)2M61X
+6%sL<h&AnJTOo~+DHN+%<os&us_NqLqA^uX{UPi=svW8De?HO<8tGw23NIJJho at 00*4UYDU|c5DmIaP
+$9pELC^~NAt7&`hetTRjbHq7yC;{dl6UmsV?A>iWxi&UVS-PATH22)Qu5!zuUvrW`QO%(uXc7U=x8?~
+7^K=GXNWYHw6Y<PiW8wYs(CSUNML%;{HD0sNHTm`wTPFY at t3tRQMT&#JjZJ=CH|H1Z~31AN|78JG646
+)sWw=`xQMoK+O at s+0*9Xqj{Vh6#U0{j98ZB at f&jaVNbUBw}keRM2kDONG{caU51kxq_skV)a0+sXaiL
+*66u^<g(z<zopFGL0*iTSyb-CG4nfCzFS<NS~~%{So4!ZMTWX)%$*xU~k|h4r5qiaZPH|*h_q(2N^xu
+HC$@0ZL5jkpBu3uoWD_{2_+Tl)HxHIjW}9GkHY9ecj}K1D{3Bb>q at v2*F1t2&Loc&t%B>k<zO8LJ4TM
+ at i3N)r=<Ty9;T&TH^_PkP6Zgwxsq0T%KVw(HJIauzxzNr|`@Vh^ykiWFd?vTrM at EjL$EYAP(czx9Q&Q
+<>Jc_}ibCt|257)@&DVe>XL9Ehfsgzsu=J5(guCkH6YNw=EiSoFJ)d~+w3*TPRNapQhB1)7;z5iGZHu
+LyDh1*;uF05|ymSdm}WVDQQCA8)XF;y-O?rr~4RpO$Ab=<6aoSMgKq#pL&i;=rYV at NPzs;0^mZ-83YB
+6Z56O}w@;aqr8}H392O3-3y7?F>7wde!KT+Fa#Ys!ju<ar<jq#Nu&?EuE2z&JOO}`9T;WZWyxfnb#o%
+?+X^srGnS9!)<r!fhQ_B;^V*SX$ntZr!H1_j-utWWtX35G-`_|PFrH<WTXOnR!sF+Wke7wW}d25gP_W
+3R(2*(ky>mB-MLm?UDXb at _729-nO0f|DL#VTr8|Mi5FEpw#jfFuEag&*nlRr>z+0PWNqhtL`_yB<XJm
+EIMt_v|tFT1OGQ|2651m75LE%<{;qJx4u!S%SBuu(<BOtbNLV|(Y`6f2n!n0n%0L#rsu_HJ>y<+%@#~
+TVP&$db+oF{@%!z-N=S51*CYBpH{AZ#`ol6MYSQW<D6C2KdDQ}hm)lsdCotvpir?1?9lAXL10puP07X
+}Q1{z`T|s!!D>Qg)hzi;fpjKWaGD6_yDGLs#>HVV?4IoBvZ9XW?^=!>AQh_2 at YU=)GxHR``2RQ9q~Bk
+Q^;HZ*yqBNosaPaNDw=iydH4}oi7)<1EwK_;a-~f0DP6IFl?71<eN?CxM;FE+Z}vnQ0-halS963I5c;
+RNzd$5330O{b|=EQ1iY0sTlvXzlL at 7F4`i+P!q^K^2W5Eks~|A4%Yt2IS&jl!m>ZBcE*4d=#u;;$UUZ
+59C}6r at EVp)<$}O_P6xK?l$OL4IuaPESkTsgpnmkOGA!ToYY;F3pa{hN=#_|OQY11B})0!r~&FqajPj
+~rSAzw!zE<5s>1w}Gw<8?<a)~@>33U(ReTSQyZs&Gmwua)hC@`2T$&DLC|-=+u2v})|-k*Tlu*P4dSF
+;2Aa!3$O<Z%(~-POxbtpaFLcSGnCh{leZ|u+yI^D-tTPGrV^6W%H7xD at os%LA&{~Ex$^b;%Yj3W^=CX
+Z40;GQc#Uo-2K=u5a<^6?EB)d*lAIYTf1~{p at Sbiqe4;z3b<1|h>;8D2zSja74@=XBD}s*ovcToOC--
+Au2V~c%`<S^-|kM-*I0_$b|`ej*CJD}uq|4qWt}VPl{7Cj%?1lg at _aW9Fk}&x#T2eFC9531Avo?nEAV
+RAIYqLQDp#wC2ruBW(9M9r4?)Bu^GGVF)}pH*S{nf~)B5EB2qYNfbd&N(OnLMOZzu?wL_tQLHWhD{0I
+!V;8sAJyr^*GI(`OAHG6xhVSiW-N!r)o}knKLsVZau#nre41601np%>sA!038ZU`;irX7eghlUW3AUH
+gFywZp{bu^VD7k;)2CHK<fLo+g3||VUauY5c at pV6&w(QiXOfOAZWn at x^))l90C`Wc6^krV at c|js&f(f
+-~fE)&LI@*N*9TFv?1=R!pY8h1>7nzLmoB^{O@?W0BPTS_qfGYb>8q(s6=evXtRTAf++UyqiJf^V4LO
+8S*tZ2_v5J;PL(z at NO_eDFF<c}l1&wryo=xG34g{7ujO65#e!uawWKqZ$RY)$FFYDPI6xHp6^3P5jjw
+g5BrOMRd4d&_baloJghDavTGTCv5ip$QqHHoEx|O_dH^57F0BVq>%LW^2`rv0g6&wo0nrnz9Sl#pu28
+9aV9J&1;YP#BJgCDb at s`%v^ci+)?rOzaiS<P}m$5nflBjPJ92h{(!<;3!pmZPSxupER~vzrofiJeSf@
+yQw1fm at Z%7?9A%9rW2EEhfKRWsAC(jjZKAR3}|f0^O6o?@Yis=FHbPH2Y0c!5_<t9##_4MJ$ujM^L`^
+kHo7kG)nws4CWpC{H9=utQt81hla(rA8vNJ5>-Qp?&I4acM25Q4kkhd*<6SOW)(^?^0?m5QnDeCDb0W
+~RlnF_;8IFHGz4lu>ds3Rm;M7=i`%$^D$;K0U24uYEmRsniO6Z+>0`_0$cxHHTR?FIlML@@PEfZ^MQR
+wy>Fc#S0(@^Ews_|Qi{D4updGM({kz at z4^T at 31QY-O00;mH1*=F9uxRDo0002Y0RR9^0001RX>c!Jc4
+cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFK}UFYhh<)b1!pqY+r3*bYo~=Xm4|LZeeX at FJE72Z
+fSI1UoLQYjgG-e#4r$s?|q6N_E5#rgWd!$${xI^ZxFJ{)CQAGNGH4Y?d_&2R1h}D$;|hClIQyd%iG~?
+mXRaw`rDg288Qb<lZOk5v*3xcxWO4Mw9lDyhoHrbYUD|x4%E=6p(J>&>vd&C%a3FAJZke%fjmG)!cd|
+Sx0tI?BhASnuq~c`uj<#~`*7-)Dz%kg9C at bw7rOSnmW(4s%b6?;r+Hh^t3~B0P!wIWFEuwiys#h=S+X
+4tMPS*KGswkvoJK7;5mM%(v(z_AY44T71FqV?@U}y{#kbeZ7f?$B1QY-O00;mH1*=G{)SMdx1^@uU4g
+dgD0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFK}UFYhh<)b1!pqY+r3*bYo~=X
+m4|LZeeX at FJEbGaBO95Wo~p~bZKvHE^v9RSN(4jM-ctpf5pgA<U8YB2x%#`luA*67KtVi28s&QTHo!(
+Th6<u-F1xn*Z0ltoqdi2RBeMqoc)-OH*emK`~Cjwxuk{g`FuJz&TFxdNlN8X=Uy32r8Nt>Ui&#dpJw<
+sBI%seUWtlUbE#?Rl)j<K<Ym_H_j|nqx-?#n>GfPWDpe&3zn8j at mOMONPo7hya;cpp;lfgG3jS{)UG&
+Clb?^vd&KH%MWkfXhz8)VR7bbUE+|G=>IX*pZ%w==GsCqrMsEzexWv at 4#-b(9`#dJz%G&s$^%N}Nr2E
+ATh3FqiSTCYl#3ooBpYi#mXRLl4=9rxgoY8>nJdW9@$T4=}EOaoL&p-0rhH3EE}rz=$zxv+&hJ85nMj
+$ipO!z1$C*n&TKL$97+(BqRw-;c=2i1K5EcG?TKnl!yJmCKa$Wyq3qJGN!c*AALnNAXtUstMRTr2772
+_)C?fji*A#c=*RkzqFd3i^|F9?|`m>mn<Uo5!llsx7J>K9ycc{S^5RC9nsLrg;1fIXE2<(x>7!|gKUs
+C0oV}1JzK32?1oeCAI2!V7URar_+yN1gDJM!>sfA=+9!iyV-`tnkNvb;if!Hp^uoENq=S<methz9Oyb
+t4f(ofYV at IY$CG0JDM6)#lDkG;C1}xfI at N=QbXu0u6HG(d!xLKedK+$t at OM5HVY)?8bW|eYtS#(U)24
+r26SeV!{1h!U^uM4iIBR4lI)IxdY$qX&hxoo9yM#Cz)Wo{5`wk at kr=%+nGZ}tO6Kq<hZ*B!i+rhI#eo
+?cFf89k;xJ%GR3g6L`562;XLu`O$ER%AfAfYa5n*&6K9?w%?%>;pL}q-miuXJ?x>YS&tCU+5D2xtu94
+7j%*}Ct1PrN&!Wh{Brf?<x{%6dQHOPP#u5_JxhXWD_Oc2;DRNrR45=YSj|;F at 3mF#6gZy?D{_xhNV&E
+E*}+UDX0jrKlQxoq?=U})0>8s{)<UtRJtSy2=u+}GmQSp)LW&KMn1aeXS(PK^L5MxL)o6LnXibIj6;!
+xmYQw_K8cRVY>RRd|8NB}^`}m+~7+H0q%0N at J+)DX*GWe{Ijs__iyRFIob~k}<mgqF=oc>Q`>e#`nW9
+66X1SsWVCW`{MIc!uH1v)=!YSy*$rd=%gh=N0_LmP at p{e|m=VPOglaX+k9X42)NmPrd|+CuDP7pE(x$
+_nfmg>r97syC&?J7*y|cwDoaj8?1F at Sl3j(598hC6xBVZ~zBfYl!2fk3>-fu%gbguC-)wAlQwD$kC1}
+gnOll(#GwvQRwkEg5nFUW1N6$V~;xrV*tl at K44iHe8>jbpGN6~t)y}3cZ80^FMhtfdiCt$eDW;qbrb^
+!v-t3~%uJhi`Of6RYPNluw-51KX;r!AZuK<eLqkfCSs{7&C^%af;(;VO#L{dX?n0y|CjTUTb|XFX&+_
+FYO*chkXos!CAzlG)ibqdQo&eNh(;+dLWyMto-leHn?TQi2mY!Z*bCE31RdJi;6BC21eT=Q^AfkI$>Y
+4Z95h#d<HleB|(4;GkR)iskQgfi~Sl7YUu{WMkvYkny5pmA8qu=3~*^Ws`Kk5<uYtwy6`muV=%+wi49
+6IeRoMb$c0fgdDNXL2QFL4kYNSYSntUt;1h;G>%vk+Ieksv(m22I7I)lt=E^Uk;yjO_8E`xC*~S#G0m
+c^-_UU3A(L<2x$XWW_}>x>`e?Bq&tGdD#c~Qj9wlmlMvL(2RE7F~aHYAhX$HT(H%?+&d^n_;z!<2gl`
+XKm7xG_wL>Pl*&Ag%n45z27sI^Oc!wg*okawYO%yw3@=O2G27eklrGK at q4N77{o6`@rK0W6*DG5|owO
+%XjFcyL8(?qF>bK$0p{4%r)KwVi^q_giNvbe4;K at 03y9W;`*?ys59gh;Z5Ou<X*k}`Unx;Dsc{f;q`h
+P}yXulF;>lJhSz0cm4yo2_D-5QKjJacY2z%p_toZTkC*GXAnYF)`7q4-h>o%tJ3O9KQH0000800{-FN
+E^6k at pb_K0DJ=g05$*s0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvwbZKlaUtei%
+X>?y-E^v8mQp;}JKn%S5D;DU%4PfLCdI*XJF;JvIlpJy*))EyjEQwo^a+1IAZnTu;xH^e5d<=)%GW8C
+i9d%>`aG{UH>ikZq8x>)SSKr(%vD^9j at aDM@S5qIohF$1_er#N1I)(;IwK&~-b)#V8l-v&89vQD!ZJu
+>q(=cGIfd(5E1Wq6{Ofh0pvKjx5C~B#_KOpSUH^?$)NTfk<(XEY8cO-KYk#64X`^u%Ss($~ZLGfKTpY
+h#I1=am_3bqwIy!?6ib)T{(#ET#+v|)HfjvR(kmS$6TM5r^Hq{=y*=N^;NwAMsq;EjC*q56QS$yHIPp
++_3^Tx2~m<Dihqss3q7%XRbi${$wtn1e!$+?{uOMTI>{Q64=DLP{#aVmf5nkBxuMOqv4VyDq(pAEnE>
+IJKVA)=RGpJDF?9r!Wi35*DUO_IqiwF-t29`|q<^kn<}r%p9<I_P~JU>oV-(#9xWUk&RloIYZ}{UuSd
+w0Z>Z=1QY-O00;mH1*=Hd&kLbA1pojv4FCW*0001RX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLi
+QkY-wUMFLiWjY%gPPZf<2`bZKvHE^v8`R#8vmI1qmCuNc8Yld2n`y@!)3 at xbksJ9I3dr7N9;P~s*|>%
++Ap+kx%B-x=FUno?F*3EITtZ)U!k`Rv;09pri4y4LVK2eE6kalqDA%hvHcJWt|ltIHSeCeG{^6TnYRy
+DgWzbluKIOF4&!``g=_y9xhM^2Wi9Us at WY%>v*Y3Nk97(%h=41O7u;2U@}X<G;XE1=?-7fkrY{YqPW7
+6>Wh_xMtFF|Dq4#gFwQQxA-WGU~(dmtEO41jZi%6Jw)&>g2|-fH3*xRS}9x*TIH3|O~b2%UZvi{Lrme
+5ZFnhaQF^$uvortwjU(yG!pgK9L=BiV3~&ez5z&)kx4M-TtkFhl%d2eSK^6@&Z0Gk4bSz5AtX&ja=Nc
+*2+25<x!<Qbp0KNVXe at 28m?f3$&^#S7`#S0%;m}6)d&6~gyF!{#z7L1P_io(-T6yUT6lic|{Iw;s;>~
+fTs;pM)RLT#{wOj(SdD<}7W=Fr+~L=iO{a=zh?IcGexbC}ZG={!^-^>)afH^nIZ+tchXhLn1$Vj at Fd9
+YEb_6_5t*Fn_~YwU0%B#J1%Yn1%HoBHL+p3{C}}bl^&dAsMO_Uxp6*|B=6ozF!%Q#(`PzkUUX-&vST+
+e;3(B`gHN!?}+0PhCSncUQWRcX`RE08swE58#{N+ox>T%hoPz5mLY1}`0*4j(9~dgiH;-`vdIkJ;1qI
+`kpE6e!XkA at QY$?N{+fb7?96Ya1V(hC4P0LO46<5Cu5^-)Q#gmE at G4U=$9%wTU2{VfU9&2k1G at Tf9<z
+_xm_#b-R`t6|-3SB at 8Wl)w_7pxjc-XrwntjfG2kUTFn5hs0+sH7p2gfZ at CLGV;s;UshX{64A6&uA!v&
+n&0I6g&y&UHh6ZIO9}DzRHp#)mW#R#k>ui!&{DT(|BrhLrzxd;iDPZT{!-`s(}bDqr1vUEY6R%}2QoA
+FEqa@;stl(x}W~9D;utdB=f{Lqr+O;<lMrwn!kc5dg;eg!^8(5?qzMr!@mO370VV{K>TqDo#-(TW#Gu
+o*u at fMUnp6AHW03rdK9h3t2Gf0cMe{8F;<r)ZAVVZ4|t?P91*$EEE;B3`4u-*uWf6$@mVj$&KzB41M2
+_3>-MZ!qTuv>>U!|fU%K!%_LxHSu0)d6{GNgAvJ6hl%oZawJ1<KqjfYcf)ZI2TWn?TcQ&qO at J-=6*tO
+V!c<3+)wCWlHuYuEkE)SB%tkwc~Mpb07Paq<99PHRjNAu8{VXUqc5I#AYPH7CiTwLHNNNN3!`$uwt(f
+g;E+;DFAA47<!FVT6Yz_gZOU5vADC<4j!X?maz-uY!`WJH7O&(n}7Y9TIBTlaY*FpY8?B08whnNYPpU
+<oC*n~m)8{>wl4<LcY;>g$11RtE#OZ*YtnqaBJ|$rN&f&4z0X{i3VkIuZ`XJ{0=All^EEJ%_L4gsXIN
+q>b1TxbP|}YCUR%SXs$mxr~F+*Rm_1+GIyCUI|4gn%5}gMtD_hjYNt2jrsuj!)m%i(H!IC7(hN&mUuR
+dUmj&a7pgcN2<;EpUkcsgozVH?!%vonN#b{U>}EVXAK=hLBxB3;U9qyrWnx)+>Wm?qA<GlzG|e0zM-Y
+0JzYjXxafldy&p92ozvd+A$;Gb!y161xClL)3IIOrFOvB at 0*vZ+!;KXE6JQR>n?(sCV?ktUW?vLA{>w
+`rXP}iv4Rqp6sHtB~L4QYs@{bDp_)B*I3i^&ZCrIVjfO9KQH0000800{-FNX)^!KH35R08j`305t#r0
+B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvwbZKlaa%FLKWpi{caCxOxT~FIE6n)RH
+xav!&mIS6DG(`ewbZA1F*d%z{rqoGps7GRFwgVKzf5&!G=YtletuJltbI(2ZGc5$KAW4cwH3E|aXjOB
+efTWU_jl!gT_6h?_iNvGB4J17}M3(U!z4kVWYLeZMYm||s_YUQGpB9U=?^ns$#p2uN^NTNV4F2^4t%D
+qkk|^{&&(lAlA~%?<kmM-j-VI`%kdofw at dalX0Le0}Rbo9-cHNye5=Ek2GSwb<F#TxFG)qXMR-H*L`2
+9M0ahy|0(h`%5WUJQaJhp7J+01 at lu5>tAqa+kufOd(3D6Iqp{%KGu=%h!Ug~v4!q=G(<*l9a2V7a^!4
+K9~Dt~{6EXPhz26y+?oCZRR)JI*oXBojUFf-p!C2&9~sNLT<Rl_~%&S1O^Qk%MmhgA#;EQw0f%PwLXc
+ziJ-1qh+b%R`8oshB>5b$aqze9(HNHv_LIH7bgcIO~!9&j`=u at zI5@FKwvFU>KpT*R+dSG77J_Mz#U;
+aEZJl$P4A3n^;)es3mZ|EH2tuD5FO1%9{ZXPa>h$-BGDj}mTNpQQlU1H@{WtVOPwvcZ)~}s52US>CDe
+T%`Hs&ZwpMN0cK<5D@`V2(WYp-dH>E*@x;2&HWekjm_GHqPXZNJ4ON?XBah;r;?3`xfVl=n2Q=%%u_T
+NVbv$>;q9E^k?gFhIG0Q|lm%w135Kke2qT_8rt&|iBWZte~7Xd0eI+n{6ByX>*OpvCUN)OS=;CKX{BP
+K5-fyz_XpxlHBV0hVvrn<<|VOfY8U27Y7)cWOQ#_>uS)%Vd>1beE1FFS7Vc8%=1uO}@5m07o<^vEk^k
+&V1Wyb>@TaG3LYmaRl3ju at 7W8VJ*k0oiZQZ!Ou~e+>3B8-Rn8$^C(Aq>NlzgKl*d$c=s-F?zfEj-;0>
+?zanMFHt6#>+ySiuw+C7hf%=~V+gNzdP)h>@6aWAK2mlEMt4M9<0UVtJ004Ce001 at s003}la4%nWWo~
+3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLGsbaBpsNWiD`el~qk|<2Dq$`&T?92U~z6ER
+dUkpa`}uvWIPhA}xATXz9t~h9<QnWydJ`-#a8FTei~$>WfT~^FHRyP>nTPD$Az#z2&kbx$TVgB-YNT-
+gBAOvnCwN^G;N6V#6+X@;%?09lH_Gdf%0mlB at xCajE2bHUjy*;?7H>kANo at HQQ%loz$C^wZ_h7vzi-{
+u53am<G5a!^|!2;5q>u}H}Uzo<?7ARzGdICB|#gxV at -`ze5d3a6Chl9grO88pG92J2`jc?H^mFTmzJ-
+A-cS{C<j1t}kGF>t at HUk}J1GcdkZBrONuf^B?uKZ4ambG_%V1fDM0u($?j&yL(R(Y`;5?FX%GC+yeo%
+sJQU%AZ1yx3SAvM@(3>eZTGIiZ(EBqwfhP^|DiUkTIqfu8YdKZR93(hw=J-xg<|IV(%6gm5_tELMT{A
+x7+zs{_Xj_FUK`gCS-^M at 8|#bFpVd$wD&bDVj~GEDa-8+3zUY<<~AU6oxD)*>z4g at _*G*@=pjqTwX9V
+#l;*Xv+0f#m+UoQU?kFgO~z*_3o{xfM;EqUZXxR#-VUWQSf0RmR+wrq(MV1V}?PHziC9>8w)Xm;pc;I
+ at wh)%>wqW*x46K^j;(A4Q5F8s@#)m-V7oj_>MKfzS6|17kz+ at _RXA}!ab$jN#nX(woXQ^>6c(mI*Y$-
+#Zeb^kWiP>HBcvh+!D){sA<;d at X_M5Eo4qv%_$GBd at FTWi%J~?`&{jaGHLv^4Cgv7ShB?(W^bB30%S!
+sGQIP~fhcKjeUg(O)(J$!(R<cuvNqa9KGD&Za=&%PSI^qV*k~T>2_osjIc at AT3g<l+lM0+B{QEyq6Sb
+;J*DCHseOTY-HvgX6yd>I{+#q&4??H-g7^@o_r{t*{}y-o@(YvBc;M-zgW38)DCJ}cov2X_vgN?cvVM
+1NyDmjNe17DG;i9{a;Za|XEN_gZ6%0s1gJm*)W<&Q{s!<6wsysPrb9eKEfH at rNQ=@_WxNdQ#8`gW+BB
+yP&7l<Ii`)sl>#S(6xeX0{nX~qgxw#?7EePF!|iBxOjCjF=kv-Q7K5jI5X#XjlQ0hd`rK4`RnVdpwAF
+FEK?igg{Pd^a%=YR7KYU00~_z9;ET at 6o$x$Ll}h-iHT6$1T>6jEjjiUx_BgzWS<=Q52KCv0X#`z!?E3
+QR9}_*${p{*>-UDVAS=gQjg6Fe;0Z>Z=1QY-O00;mH1*=GN->>h!3;+ObC;$L60001RX>c!Jc4cm4Z*
+nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFLiWjY%g+UbaHtvaCx;_dvDvw5&z$xVv*n=(v=xG>7lJ~Y
+U()3#b^=-jt*DgaHUq{N at 7ECRX!rCM*7)1GyC8!N#&ZuonXi$cXxK?H_shvUCJGc<8 at OvrHEse?e?;)
+8DCX0Z)y>%`!oHx&UV6F=W?^jip|;C8c9TvxKG5s&SX&;BEcDh&$TQHk<<%VDw}#<ma-hvz*~NQC+hO
+(JbGWsS|&1g9^DC^_SfEtY7aXJ{U|g{?0NE$Z-ix`%I?q3&VW at mGYm%?QNMvpQ3i2b at Eu4U!ki at MRmF
+&*K(77;9EVfd>d~V|>M=`XvCcM4$x+Jaj7H}?*|L&`d0mU$zGjCk&skCmUJJ%qAr5-Eq6)+HmNoknhE
+w*5=Z&bwtdc~n-U`@;7i=Y1#n&P~0_~;}soo6<WgwlNl8SX!02N-rMsUNMyk=`z!rflVd^%OD at KfrQG
+c97Gv at -j43`0DfJ;ncNR?@T3F5A}i9 at e}EYHxYL5j0I{rvHb|7D^{DAD2a?_&3N_2cz%ji_w^k at Zt2y
+6LHUX`&>kc+&vkEio at HI?L~Q^SFqr)%>Y*UNt9)l0 at r|xCm-IUgrP6u*Y7_zz|0gZmy<9YhB~YGDhI4
+rN45t`0YhTT<tv_7V!8b7xFCX>1G4Q(nG<kuDEWR53}gkHlCe&g|82 at V&sNVI--|r2TC%3dMOB at -Ccw
+*9oH3G9XeS()Mqm@(ka(7;WufF*Ym3u8FZmAELs*bC&!-lG1>Ulv*{wv$<l1grOUCnD9wN5jAK`uv)+
+SO>B!X1UB<x;-mo-IQMJ=Kq1nvN6zmo-kjn}2v!3y9utI#W}8aM+!c#*O-M_wTeFkqZ0T0)vKyQxR$F
+dHcW%~WutSm7o}4zJ}7+)or$w#tte+ibH{ehOoj7Eg#8Sz}X(`#m at gC`Y6lK}c4_4F4oE)EKyF2GKyp
+iCoJ4pnMZ0+?r=OGLO1gXC?Rpts7dQ?GJCXMrm6Jeh at j9OVU>?i`crhUeH&ejt8w0U&{mA@#1Jkzz)D
+abBbC*StcohB3t1wx7Z3WBs4NTO<4`t4`8J%%=kIL4KR}|>hVt2h<pjwFt!Ahc^-gfRW+cQErh#5!m2
+XEC=R4?v08<s_N7d~=G~pX9&NN+We>-_=);9Ea{w#Mj~*^GQ3KJ#NaKT0X^i-~7NrN#f%_O~aKJ|K)`
+>c5`i>s~A8?Hd4EsW?*PyvyVQarAy)vf(1k4bj05KhOzKhtKY?rnE)$<Cq#1iW|$d#Rf7Q at -=#o~P%X
+DOd at R@J<2FdC$SJ)2yP;p-`WJ;Sd*G1-QJXOlnwHi-Nlt_b?4wL4L7Wg3I+*CNj<2Ws3Am}wvxlo)AJ
+g@;<ez&KWD`n*PuskXAo(;+W?aWn~aj1y%+rG_?IMXS=DhxUm<7A%UKO at b?1I$4oI(F1M^W)bXwTn1U
+qm}8}sLv{;=79$x2h*&WJ*qA{}j3%KXMHqpcf=!{ODyK_IXwl30tE(U0EaJEG#p~Ob at sF=>7V|eZ9~P
+$|R2C6~1tuK`uPEFDh=iPDIX&cPF<93xAV`)0f3`{>(M-nj`CI1_w!jP}*XwxAlUkN8YkGvK5%QNk+R
+#eW2O$bmW<nm**<YpSDi>mp{JO;meja>+pV>JJp0a<k;GxaXl)z1%{>(1er743*Edtb^V&YtrE`8on?
+n!isAOLsMbyFnMWkl>O9o8&0%$PsH0;qZ?(Np^VBYa0u^s|*wbAqW_kthTPcPK$}S!|q?4(cj=D|vBs
+{rB5fuj02?|5%>TmI1_7SWqcPo`k-(R#0WKp7T!Gk6VGY1=LRp6Svwi5iqOl_TqjERaK1z7iI^f2Ug{
+ufSA%Y$ljC%*_;>Q`V}U{x=e+tXZQC&7O?pe`^wU%>;r`3oR{F|yueD20$5K-sB4`ZOyasRMafXKWg-
+dC<G#(~fRuJMtkEjue7Wp8DMU~bgMz0i95JI=GAlF?i)UocXiDr;F#@V_I3fNAYC2H|KUrF%*Ym5FSe
+5JI{QVE~@8$f>d@;wX+xLr`+jk%Ea&dQcJs<t7{o?TywU_Ohoi!&+{)!#P24UmNrxUdX3=odmnDpWp>
+ at 8o9mE+AWCu37)%`jx>Gnu*634?Au*QQT5Q_N0bFz!XfQzU%{p8<FM^tC7(G47g{dfF!#%M}$aX{>6V
+*(990 at g-kJDg@0GBL0wu1_t$&KTIXoj37I6jm<3 at DA_6p!)?rysmH2aFk=&cpesGhp!H{6PV8{6sG$j
+61;E7KBVZDZH1t<?wG1n}kNgFlAU*3SwZr&;fW2oYmS~@zb#1|)-n9Uj-+RO!v&HSp+bL^6R}rLC;PV
+J!0{on(&s!fV#6i2y`T55~*ea1?9+FP8qz*h4Do1NA%{Nlxe6G1^C$uK!c%r9lpHj~o2es#~>AB^gt@
+vv?E;^v{@s~|_Hmvv)tF(I$Y2IJa^YlUOw`;<V@*>q43qY at K?+SAYR^FudFgQO~vvn~38}&mJ$ks}*B
+M8B^4wAgG4Hid<DuC&tfFhw|N!avz0dO98nN}Bx-0gXtt+G6;kG26N^EN}_F^AU?<{?8OYa1UBZjgRA
++L(@<>1 at FYd#R4NxQYo3T_A)hfW07>Rp=kQNJL;oq?#h^?S>fYIc~ekIy}}2fw>PU0ptF5D!5(TG7Ss
+`eNgRk=P<X4Qn6|_!J}(gKoy4#1Ve_}DpU4N$u9m1-;W$UIlJ{N!5M3#!ba4w at c>N4%2a%nz5+EhIVT
+mOQk$B}A8dLxWr=4PO`!#7TB6-eRoU(m^Xi(x5ceJA{y{BFTJnZt)nJ+p#%?Ou&(B#fyp5{XJ6r6sLQ
+QvSk+Hv9*kVT&`Ve3r=v3jB<+jgVG1Vrd5)eu~KriFD+2Z6uNpuf5czhsZqeGNF#!}I*L}_u}?ZCPqI
+ONA at P!Wc(MzLoQp{p`88I&{`Qc`=wz_LyOq}MpW#aR`%4Kk$>otxmg1Ey){;yLLcMsTcN^Q?rUUDZ%y
+jMr`_E6q}h0oWwXsM*<T_fQ)st4&F+UmDo{(=bZfK%Bq<oQ{WH({$v-B>4YHNTSFDd}^Shh3z}4;bHf
+ZPDCJtJy*01R at Ln5qOuYjFgV@fL-Wh(uM#upy-)IAI)#qVna;i`1)HOmT3M(qrtuKgLE)xyZTX4YnIb
+}X;(X467u3A5?UpC10by$dC+rPHn_fYPE~Fkt)Ef#yG9Nf)4bC47Or4 at uKOHVzaX$wGyHR(dho?Qa4F
+#Jk at B-{bHMR5B;CWZ8<uO)`eDL$YDd?DAyg7B7SFVMpXd$n`I?KUc19S3fCxl+`P=48teg&8qm_5SmJ
+La4Zvmz<Q4q~ZiZTcwKl({_=s?)W;C9gbnnqx7(D$_HuXiGlUB~Qdq&2wjt at 58SxEqB5+6-fx;HMe!^
+!LT@`{;h6VC}PwpQ2glji68TZ&}=&jt-nt(H9H&i-iz5K*yuCwjF(+b=k`Sx;Rp=tD<%ppAIO_Fr70F
+{_;t=v_ at Q!5OVoC6Al~U14i3{K7`WC=p1Ut}rb<YJ3V~m$Ue<D{@fwbBCKC8ZTJlRJhsWDv_R at Lh2L~
+j4Jx!V7LbY;`X<8Tg at Y7(G-2<3(9Z(%kGed28o>@7KLvyBY*>st=e49$wXIKqiKn>Lr95_V|)<kwe+d
+6QggX5FbI<T=~s4VuPM at yJD^p1Db6dwzDC`MjYuB?Y5B(XPCB`5^DO44aqdDnAq5a=3lhWi)4QeEzHh
+}hmP!>VzSB?Y+yJsthQQz7jzfR9sM3?qYy`vfec#@`ncv&CsZXvVKX!-fjg^VA^=%U5G|aV``3)k!b_
+i?-BL(6mjkFY&Ht_4v1TUQ5||!#8rp=;HpE-I!c~QFA2}A;|081bbx!dG--o;onXs5SBV525SyZk!l0
+s)KpF=n{I>mn_;JwFeIk;yQ1j(`Mdeu&2>D#ySu&XBRixu-D2;%%isnd-p{XZUYQ*t)kO$;i}B->TC>
+h>PQ*1Q<D&^&*ee at ogngk0=C{8(ov-0GQLpLKeGq!l(J~o%6=AnyL0;><A_=IHp*l#rEfx|UqyYi#zP
+)l95I0WwqKX at A1O!-CjlQWy;Z*e?h`ePo?3HkK$ZhMFVqfaEz9WcU5sV(Nfn$De_Bl{mcxV&j=k^W2g
+PW at 0`KV_PBT~(SO<SKG4Lx}I>T@^>zi3v#)~s!;salzOcKDmP$Jj8TlQQ+enBNBrpbE-9 at m&8pVGotW
+r_1OsAiej#*8b$|S$Ot8P)h>@6aWAK2mlEMt4LLt2lt5&003w$001%o003}la4%nWWo~3|axZdaadl;
+LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLQHjUoLQY&01 at 7A~~}C&acqe5esaW%iU%kd%5el;ic(qN3<
+Vn+%Yj<E(j1t>!OM+6{eZT{`NhYlB!ftv}a at QhubkRrV1&QN at bornPQP=D={7~HpM1a<FU}Ib(R-GPE
+D3<3N^ORE%#dGd7Al$t;|!MJ{kYKT*+ChwIG30ok}y)+KXGNFNt34BC$!`M>}pQ%`(wbKWsJsE)r%b-
+|_!1zWd&Zi(~a=rq+edQsc*tMxTaxp5>9aPK}yD`};%|i!5LLX!VN3==S<X8-vg8Rjbv)v_X~@>PsOm
+#ch_V*2k;S7$focK_*7EX1S8s_*^aICMm|V`snM?`2MH6`{6AFl~Y=$;zq8GD3(ejDt#)JB3lS4=K4v
+QLKGQ3uQO;eO%(50EH>$kwj<VgHs8#k8zyVxW{^%FKYYF&jBl>)vC1zkfq%V=K3j+%zJ1%bmg1-HzwJ
+AVMXlekODHc$b3^*C))Gf+C6A|a_DuHc$Vg1PeV%=Ca>9QHcBm+}nN!5jKGZ)pGV%M;sbIM>#lG}P#V
+wxth at JZ>s}1%%RW!BOt(7oEem>n5%EUbMLBZ8<j*t093B6#Wl~ZLgTSh{rb8A_V;oE$xjf!iU=E~q~U
+>W#n2by(cSDcZGooTnrBj5-ki9}8c|E$*?Qb6Xp++iqoUOr*GH9{cv*GrLz{}s7giqtJvycBO?-$vU)
+ohMbuqR2ZG3Xy2nzi&t7LdX7n{mi;pxyW~YAx_03El8UrKU~0L5deneyZA6Bv4)@k!h?Um&E<M*ve~m
+LA~6^~JdSVgZikV$f4F<R8{B;wL*UCruW_yq6|DbJ8j7#~Y1zmW*F1tF(%N$^jdA)m%DTJ9!gjGJc<A
+|u!QIXM!*DdZzPmlT#xWT<iML<gz2$!qK3>?5!JI%k59SdR$5+CFiE!~B<J~CR<TGX1+^Y=V>6CCras
+cDM$4?_M(`$ID>9<ZX;Y=)xVr}~8=Ue@(<5l*vP7)bs`P2D`r0Zgb5BZDA$0I#gV+g3v+HPZ*DuH*$@
+P%`L#NXAdFy~X8`q?^{zz!&MuG6{t5-*EYQk%ZqrRq6esdJfQT!Mj1na>p=;Mop)Ioqn~nc?-#8P+*-
+%Ad3H6v|I3RXKuQ1N#u at n)ZbS?sK(Jx!bES8;zhw{K^8cPG785zJQ)&C?tnDnKD<io#?#(I6NN?@c(Y
+ag4R|LzY-br5cGlUJ5@#DB$0{JnX1i@=}ue?M`wQ>+}L^k#o#Z4Bl8(ej5E6xwgIyA-Va9tPP~vwLIE
+bWOFaX=8Seno4T31iwsy)~8%gMW`}xx+Avb`f6t-m-h{VnN at 5Ig3!0=M<M<dq6FA3<724Nky-VZ-qeg
+5<~9$epl96pTTcpY}hHre3~c7a{>t55zdP`zJ$@^9Z={K>twuRdP?^<%$n<@rbcf;QUse;-CyUcCFre
+|a>0;6dL=+NBrvjpC<ou*r6-`;~|eQY!%BCYvkZCSD%L2oF^|W3$LC0cZqrI at y%`zRQT`)BBlOtC?Qt
+Szp}miY4OjLi|DW;&&ywn$4Qznz2#9QtR7f><&=khpzbZC9N2f_v7@&6wKn!qSK4IBFkTeXp9pVjY7J
+uax&*%ywt^b+%YOyM3m@@Y?dWsHzi0rtTP71ehie|A6^@LDn6SMp~Q<!HiS-e9Fn{(2~2pn$ZV-*&*N
+ogid3#t$zcx0VPWvJ at e1dNK{)5Q%oYto<#?uGa!->E24s%CQT{xfjj0QrsH3x=)$Xg`SBK2s*Ully<e
+Zfo&z4fB?l}CCk#Mq`&LhyvfBc$m?o-3^&X!4L5yN;TB#pl$o#|mMizPoa>QY(QPHWZ1fJj*ZgkWh_u
+p#;f-keKtsggT)P6k&%Hehs-<yzT^E_&3Qs8g08id~$UlRXa)!pm=npT?XS_BH_pSvu{dDL{|u`UnbX
+m2C{o_D at J?!UYLYPKOEetiBymwji3_ZWbfO473#y6ehPApabw$VzYkACE@@~-pM~A<|6(f0u}*ih<{2
+-Mc6o!u1FOu${gQwf0-aV#D{{qU-R$K!u8V#h at CqP&+=@lFGJq>n|o_OKrR^q_72RKcQJi9G=BR^6vW
+^I)VFBu9Z<eVolwq<K`HPK8T<uF(=?c_y~z`lfjx_1;J^$0gxrbKB6cg+0K;{zVa;U6DRw1y at OH}L4Y
+DXo5a&D<qEa=p$b++6K%-c|V=y}n4^`rLwm7Q>afhyj at hFa86rW}+J~XgGvTmbto}#%8$3W{jxWqi08
+K#FSJtwa*#kr>sOz#>booZM1u3cVq=M^`U8AmGQ+PJ#cJww`)DNE1V$`0n*{TluquG;pP=|`5B+c4Cj
+TRGG{ACWrF)j!IyL859Hj>P42sGs0-Yt!f|D0p=FR3H1>KC~T&wO6Q1{KK0=;Ik!XEudW}JE at l;Dn#O
+sf3)XSKSPC>es%fp|DDyVb!>|PY>f_M0bf!%A~Y>JbUKj;-t6}nh<z9`*^>qwgd=VBuWTEIY?)|4CJ7
+{+5f!f2&_``7SNuhVSc7U9v3l+|I6#WSS;2bM<PU)om~0Bh9z^_7eL)Sb;fIVEQ^gfg4m;)sx=jH?S;
+E}j at 6j^jK;C8e6mz)FRHxl<N21;C#wajU-mwSg%6->qx#WIEXh|MK?IX${_&)3s#ZNe=ngBc8rCmQO=
+ylYYK+O%>p+R5<oq}WPx$6P-#V>DvYsVJsY6?1ja4LROHs7gqhN$dxVMqWZRYmJv at 8ZA3Hp}4z)c)FC
+Fru$}y?EbrV|$2~RnstBEcUY9q6`aVBgXHS{jnR{_Z>IX*`%@A(h1~5huU<H8ZfjO_3`Gs2D@}DhF=h
+QM5#_-x|2ve;j5Eh-u-sckpA7j2Kz?7j~Xi3?fPiU6{n?f36LH5EEJI?7xO{*U`N_WLqKm<ROQ<|h|j
+s6l}*0L)y2;JsjEXgCSy4?J-~^Q*_^Kw;AL*pIY%?9MBwu#aech^wshg7+=qg)KdBWM6FcnMqlEM^sh
+M6t38+bGkWRD!mok}cCYJq4kN`Z}=*Q~3#>DAC{0wm|<a7#N!b#h%*%@Wb*J#5QFLz?{F#Ox+>xbd{3
+1pfAIh)p+u)5_}rOLW!g8?Z`txGW>vNeG(<kcp&%I&~!Cm|ZJvm3GYw=V5BQXPRM>!3m5S%ha$?~`&>
+;Cz5qsuu+g>8rBN&(TKn$^fczdPLgSd!<3c6PArcFqW&Ba;#?OJXGL_oHlFJ7H=wv-F>C0+Zpy}%aMD
+*5TyU3;gINObr?PWz9IKpsQ+KgS?cwlnbcj3IO^&zMmm9oeI at HnXrI5<QgLkoKhd$9pa#YPTqQ{fQU=
+KWVng0g$gh+nCQDg+Lg76QLSZs-gyAnc-z$mg6_~9OC2I7-g9l5c^u&Elp3Z{f=4+wJ#L9pyN2z-8w{
+K!`4R*nk&%}G%Ipn?;^{HK#o3b9I9$3BX at 0^K|B21#A090_s0GA})EEV+ at YI&?7q}pn;Bot67cPO2Fk
+74ty->(WqMr2=nYzmzO*9GHpRCVV?uj3;J-`yWyHhKPVDgMbbgPy$A;ipoo%G#CcfjvaWY^J8r#fGc)
+$t395PbTFR&t$^FCld$usJW5<6P*HLr`e0@);VL~t5w+W-IX#x)_K`>D?18M4t1t0VYeEt=-X~C2hzX
+2z;}4fqf>=kPo*nsx71HdA}HlD+&rIV#j=#eX0eA&E<*i!PC7D4+=atJ+^tng<*h3?Y6Q0ozG{O%E*0
+k@>;+$JbZ(Uin6=;<%Js9|X6IFoE+tK>G+pMsNo{%O0 at dOpS96p~yAiaC3c8q3&Poq1btaQ&Z|T6H at M
+Y~~%|YrW+3zs at X!B|P8UySn0UHkwfGT~JR3(H3#z4 at 3GIYM-Ks{`PY(W7WhoDNvZQO~XtI_^`qt>UJD
+gc9Kc;LLmUTEigj#u*Uk!yDG-KsM%QSgX>67+)_C=8@&7H~5{F?Zk3N_bBS+rR$UIU|+>Tq@#{vwB at 7
+K#vOt8LO!)d}@J`1}kYaah*JSCK8Bnz)NC9D99;Vmoi^1HVJ<-m&B8^jX4nh>t%RRxVKJ^N(G$q3*UD
+kE`dWU<JU^z55H4zFA(e?zlLY<CD#EHgNN&zp+JI`R0<P}`Pg_DzkL(P>1fbIB~E*9|Eqg^_3)-N^qx
+2v>3z?ih$jecC`dw6^8z(0-O|5${}OZ&{Mun}*mp0n(Y-6MZe8K}l|!A0H7Z at d%V;~IRBM5MUG-iZIt
+0pABql=KY at 60FF#-n9lFgigY7rKC<R~&JRGwnoiwcB!t$=i+th_(eHV_Z&^_5#0PsbciSTeT9b+|=S-
+em+lZ13?kTITz1^&WA(bKE$wfdvL+F5>Uq4qjg#rER`P0{L&93A$TFd)Hdiv$mY0T9sr*zOsJZr;&KK
+BQMx40XZA`@sQ|q=Y&&DNH6!OMO}qj_D$)h5`4An?^YsSTluy?dG5Z1ty1$oeQ~?0<X;i4oUN#n-RBF
+`{-jD86W;?PvX~M?b0<D~0fIsadO<X$6o#_Wvb}kI at 68nOl{9-5bkaNqY?b4yw97=hzJn(+mU-ClEyY
+w9QWeVv<ha8M^Vh+pkKW@(l at o+o`Wvtv$C%XY3WKZg6b$jp71F3)CqxfO9%vIqm!YKEpzL(#VZCj{+2
+D#V=N5^4A{^xH+xxnp|5A~r@&M!J`@?R%&aV^pS->bLO}j4-vTrr(_0leYkJo?3RK>Hy0Qa}*zm>O{u
+tnpkl)p0AQ}&2G%KL&)T9q^X4-oFSS4W=nJ38Z$@V9yO3cKF-3+iad+x2>OfDs?y8 at E~UA={*LyR0n>
+P}gvnV#wWyzX$|aPE0?-BR3|p{vs1{j!g<r<M823Vc~;*jY&Kr*V9d*_IK-~|DN6U;vS>qRPC~KUfV7
+XOT~7j%S*dtJiNUd-afv1yR5p0hO0clC8q;-jQ20>53lOI4EKAqW1I7=ig~y#G3SKD`;8C3 at L@jP&wq
+Q*&YzFml(w%@@$vETe#BK5m3>4trwZwS&^qE at 7|}UWa_EdUwrIGeG*ESg+t=ybagZ(!wos{Olk}^z{i
+{|&NbYd>OTjo4#o$`qoz at E-BC6zQD9%B3vYa51*9ZgzfEf0LtvJ3Suq7(pv(oPo8}C{JdH&k<|KyJKK
+fhaTpPE#!>@S8JZc`6`PE2pR4IJ&jle(>c0Z>Z=1QY-O00;mH1*=GJwrSW<3jhFoB>(_50001RX>c!J
+c4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFLiWjY%g?aZDntDbS`jt)mm+n+qMz at u3v$<8_!8
+I3hx@%P0Qvwac#%Vj1zn6bNW$&NJv6W5efjFtbXWk at 9yG-fJmLsX*<*27fT|rSnNLg><hitYR49fb!R
+&*77HeKd!;SoE2EmuiiP_=xny at +!D_MQU1OP1)kk5Ol{=w2J7=8{HCr9o*4lj|SIjCV+geuK3TC(5vQ
+~w~?7$63Gka0VwRGDohz1dQvPNaRaIeVX^_#bUe*R|h^40gxKfJkH-2L$5tG6HSCjK!>ow$8PAwE at NZ
+>4HY*nQ^?eQ!aNS6VAQfwP}8BU&q4(Xe~obmDXBjw=gWKvt(4xbV}-;-xpuEmNz%i^@)ClgR|^#i~wg
+IBtOgr?Yax;P2w%g8u!huv&_HK|=jPI=KLIOT*S(Tj6~eeBPm1YKA(=mUXR!mBPR^Hbo{=3-Dy?q_{I
+dk*eXw1Zzy4hP^J~0jpHImYYs<JhYh5bN|e+innY<7y#4N4D7-qAl6F5x4lwLS-Nfb7i at SNPlf|pIQs
+VM;${w-^7{6h;${{%Abw!=JCO4uZ}~>(sh4r<|LxamVfNr at 0qb#Fp~Wv9*kgM2`qkaloL%9M<@L4r#C
+Q8f6qVXtU(K9uZ#CNs{gvOrriZPpwoKg%tz|6?c_Y0Ue#g7b(#!pt^XI`Nx4|I4xtYz**jXCBY8>W_u
+;^&Uo5m at _HQxy<v_b4Hmp`diESITvty-M7J}&p>$B+M(P5UeLM<U`-TuFL at ik3HJJcN)9TUP)hXKSw)
+<84h^1(6WOE!+=O{3ESPpG9#82}S{X86+e{>u?Ec#M+`u8IePFjJ0C7w*~v5#owbO2t*7&B!HE&TL5&
+}5lo2+a(5rbwdjdq&L{v-!2$Xo*o0b{Ef5u`841VVhwp((MP2kh^%O%sN5A<;r9JM2H!>PbK-kRLx>4
+McTDUaxhrd<o5y5u+liYPX#&@a%E2y=zA{=$#G6cBaiHziphzmH_UW29kn=59zsuG|*d%KekyBTiXEk
+lf@&Ix9)suzb=IvO}H?3lB?Rx1dPBU|FrO#|N&d0qzaq)R5n{urfw>p{HTz^`@-Jg4;Lx^kbd*Rm1Uz
+q@(5`fdH}4^O{&_WSEMa&;Z0TsF_1KKs*hQABZQU3VJ<AcU?23I%c&Q42KP&~PU6UU12y{D&y}BIm7y
+JqXd_DMnPCmG>eEd59?mbjV%eTzepUB8b7`T-^IJ^Uec)O=C91r*meM at PFvk%z5OGhdoymz{pml3=Ik
+H$kx2FN;}Ty>oo<yRs^!hy@{Uj<pvtk<@qQM1pMXh?p^d;!W-YiMo-yu_Kr+)W!TG~-s57`AV<~;s2D
+Va;zb-IhoZS7TSalIbxw5VV{hS$ju#>JOm9Os37MAeA=|3y>K=hxx!JN8?>;cF8*n0hH3z<T^az;P5a
+_$Mr4$JMfRzV$AeEN(2t<D`nt89DW{Ol=i7mf}H6}3yFg~wqiBO;S at I;1oipIpFT7cnBa069wpHqAwo
+eiGMG%@Hs`BgyYtxE at eK=pc~^&j-TQ`Z|Z_ at 77_J!{jD_7EV??-Z=}`^-G^E#zU%CDrbt;!xBkiuLZ{
+4jINJN6<xTkhnTpbfw!7>*J($m2Mkv4*X~`wy3y)gf7=HaWG at Sk~_4YaDu_58lpq4E%FwSmTGHIo)5A
+=80hPpu)u{Z8B)s)1taEkI8=22s?>nA((;eJ)eN2qmfy)1`W{NM!LliU*6gS{%{B^_O1G**Kf!Gvo`Z
+P4Ml$4%KB6lRSie;bpd%|1=0wa;d1{7;MUeX&v5Nz at 6@d8yly^*;oW~5rLE?2fx^D*P!)2MaJFf7DrF
+*~#{kX}B-2e<~i)jBz+XaQ;xrS`wsT`U~q{_u&YDBZ1J3RZ6GZdhqTk=I{_&O^SZ#3&-5sHFa{~h#_H
+FRmA&<qtVl&1dE)$BwBS?%n8d<vWKpVOT#4$tnS$FP<D9h_<`*EUhV&jijw0C;bp<jy{#ub!A#sXx))
+MEJp3@`;{Zu_tUAw-JmW4>@tgV$nh_UM%Lh4d;nH=E)6x_wgNdh>*j#s_yk1+Pi@$By`Lf9+PN~edLR
++s6M(J!29~wLNu;Aqzl7HViHfjq#=<d)iN0d5${2X(>-{;+k&5nDwFN~sfmb4O_}j%dVw`7(by4LP2j
+8m_}>_4LQP*7l+H))*dWy<5MVX at 2qa>#%=7AOBoYwaC6$7#YuL~DGmRxmBo<O13yMIUZ73>SchMIXz@
+5@&caYePx7|)?S$WenpgsDcW&aRb6{(}*XAtBT!~PJ3WhU5z5*%NQM*OK1DxE;Z_`}G~(Gwi!^u(x-`
+7*lwlvef8<|aODdIx4BL(UVU&Q8ujqbHB27k3%do){YTJOPBSFgaSb>oCy?bi_p_YVda<k>Rydvbezb
+L{R!z2`&EUy`u5HWjE#El%dkkUH{-A3;6}~PU`ERK7#2pN|WMYE7WX=xxSI+DU2Q^388i~cKNWxdn-D
+tg#6?SQug$J&{sobj?yIdNDBu~;>R!rIpIcNUSK1LQgMg_H)^k-o)sHj9dqhSNODMvCj(b#V$f}Fnqr
+U*!*Z36ID9gg&gOpDQr%Byp<WF|qG!p96h>Yt>DJ}aYrX8NFIP_x;m7lFlzK1gE-j~h<F{P;UzW?H#=
+yTl9N-{r)4}I3Q+NT6fyeC at ceuew*l^mQ#i}S&Kkhbt=N9Ee(ho+Zg~@X~s620`lyN<#?ver|%r^V_s
+Gp++j6v1diqnE2gH@#f1Sd(*E7}9e{|-$RG%Z%5cX1*Gts590XQDXfq>vK4+QxFW6{1EUtf6e&4x|MX
+C?;C!muN5M0qh+lc2fr^;;|&UhNJdz%$!ZPqLm-K%CEBdCHot89qpCHz#;KPEySMA>02M}+XCJg<<al
+M_2lqN>c`F$!gJ=v$#J}ZXBsyykC02ITbJNp8ybIlvEcDooWo2&$w_ at jP)drtb1dk}$Uy~&D9g&$F|@
+tM1({!{o$+sg>Q1}vCDKfocBO81wU3`<B=2mB!ONNwlOwcSQA&Odr>?IwwR0dMZbdyKKEu+iL1P at xmO
+o?ly05>G1jb5;fu4PKa+;tL{@hHN;^K3CLjJPo6aXW8df#nC{BcqHS2$xXd>we21`DF$dvu+VZRKA>(
+Mtx!O3ZTQGCOTK7O$_o2<rU at 0ZL^1U-3R%n1ze_v1JYfjQ7m^Ux<M(@c#=UmrXzP$u)C&J)($Wu8y+(
+)MbdAP?2X)VPBm`$9JCYk9{`rI0<dtI7|o*u?<6xJZxzi<6lOlQ|){%ihoo?#FrUtuZ+aOvjYS*F(Du
+K$7E at D+TuheR#TLh(_w{wB``cWBJ)N5PGJa6P$8BBC3cK4k({<H%RyBzh9NgI7>7<8!kK$A5T3vfPaQ
+m<A0E?E^*Rk|+MRUda5^8zWAf-JXH2u)Be+6&~5J=w8w8EW~FIoxtftCDxafmalUX!ABw|67E)A
+tR0k5|wV0<}5jQ at q??fa&>gJ3OexUbHoiKK*PrPV=%69*q*)@ZSSY-enb`xj(r_4DwYvQ-*qruNrB#_
+<|5>Z=lF>`On7?<}!p^?`)dxj)lh0X;_at>OUDQU&i}juF>q1VLTY`C_Kw!;==zR(YhAG)of=uf0_dz
+<ogU*;cvKfECkPQbwkKUosumbJLP1kafz=qaG*Z=5_Mps1YAWX=S#96AuFY`?6r6DbjLqUZ{|JMI1~C
+zHCnIC&Q`4hBc*eNW<bEHr61|PQ3~}}c&z%VPUfKuKqmVaP)h>@6aWAK2mlEMt4L>=Yc>xE008$E001
+!n003}la4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFLiQkE^v9JSZ$BnHWL2sUq
+P%9NJboa(*Q-z=w>%flU{+K*vlp8hsDB6OO#E75>=Agjqlgr%#e~Ozr-ynVAm2g at 0@vNsM6?)tyX30S
+|e5~CaXpp$N1W6)jF~A&yy0#a;=oeoz%7M=xSbx!nKVO6Hk+6;#)475z$ATb6mLP#)|jGXfv5iTBBCn
+Ib+!syGv}o6_rTlEa9!&;_p^lhrcL+ez{-&vlV8CH>Kg5O4Kg72Wh$D*0L`~rGrIj0?$C%YnsiL69(7
+C#RdKT!X3BHv^o0DN^O`CjS&`v%6h|i&HnxQ^DX=G>0`#eSWz%;83!65uh}D4EisX(W!cvG@}WTwSD^
+4A8)>piJ9IRiP3XB0B?P?|Ppeg$D?4Z2|Eu41E#?eE5N<IF;T8kY-SUorq{SD7Cy;d!qQ~GnUa}+!;9
+$XO?dT!1jvHs6q}!&+B8jN+BJwK+FW7T>=--BD*tQWSg?P^y_%q9nIOqNHE_rXfBZoemxX87^s}RbY#
+%R#(c70$`0cJsJg(@RQU^70z9<O=+^@*FpzQ}b22FSHk((M?!j=4g6n6W=Z0!dNJTrefS3g))lW!-+p
+o`aGMRh}}(2r%3_$O?JHqPL;Ye28V8tG2-8b6epZW{{z<Fj5VoU^hrJv4K~xHIsOQ>7^GSE$uQU!FX3
+u%yZb)Yuwd=VY2Tc(4BIw7EbB>h+n at 8_oU5Nrb6vUu3@k!_b>-yw>q<NeQaqkBzb0+&x(XSV`(4u`M@
+*#+j|4seZ=<u{++HLfu7`m15QKv1IrMg&szvCmOi;?x4KmYt287IY>5&8Nk+GI at dCE6@d*}yB8!j$q=
+-Gs0c+qDtN4z#ZY`Mj#&f53lou9~8?gxQkxbT2>m2Yn-OD-DGiU48G3h!pQRtto1RR56Vrwt@(}#B~7
+1<^u*tESkvYoTF;`LYBH&{`MZTX{MOE9|9kD{1mLuB56;}u}=k}a2$(N?~B^M-wa?ClLpldW^ja<SNG
+y-^~As$5iDDgdEF#tg$BubyN+<n2^p^JuLwh!M*M`UWIw(X||u0Qavi$FP)T8I;)R9yB{?*ny^-PR;W
+5B}u#{anoMb(NsKxq5I$%;2}Z`h4>v|#1s&YfpP32!iNj?B-j%Nez%2Eg%s1U$4w(@p8=w3T!%=OrI6
+&8Y+QL*!({6BU`HYB1hVHWfhZ-h0QB)JI}ri%&4`t-<s2&^Lc~P*e2ytu5=uIg9ysiw`wai6YXZ|*Y*
+qs{dsvQ``)xkUKSlnI{0OqEcpw4qpl9y^VvMCkKS5&KK+{~6(pZ;5i!X$dmED`KewB}qI6UMFK|ah>(
+h0-Y3LvudY`B0^0!m~6qliN!7^W)#&tP95%-APy544xS(%|4i(vh>`4ic+~IJ}3yl at uuwIY-J^5sJWA
+(n_lWq;{>>3+NCn!ZU=GI1ovx^<vG<^_u?=;o*956 at eJN#^s122Dx+6UjFcEUt0Vc{%Fqg=KVJZT(>Z
+~)PfrorklF0*246Gw;6DN--Y0c#$UzFMjTR&Hno!VN*3P$O;B6EM5OT|$}1p_K}a-x60^-pSr=(BDkO
+aM6T2K|a;|Y4Z^dZ5>8yY~Lyg#OJ#%<57BSci{}0}DrWanrap~RC$h at vJhUj|{-TK`!u-!v?-*qCMvz
+JR)=v9Y`8X6+}ov5T12kao7dyaxF>F@)+9y;7ZbRx^x&oFns5M}A{jU>VR1CJFA3tj+DW*Rfw(KG=`@
+j(hzcwm8v=@Igy at a-N(26QqM1RUpZA~~F=p|<_3Q|V&)(2dj&->;*;H4k7f4 at ai1rPE0%8F-Sz6H^l8
+%(0!%PH7)RK!ZN6Gdi0c(Fn6cbVB>Ct_9RE)UP?K=J*ki_><85uMk&a-!OUT23q}ADm=nKLg%^=(9<o
+0iOnb;#!~AFCD)1V4?uIA6oI^I^KB4f;W)2kDIpuMxOHn_{1=6XUK)0JUF#horssHD6cQ(6uGDVs)uR
+l7y@>ly1ce5avXET6XykxA(~XlAS3wYTg?G0*x7Bsl7b&JESUXhXl)cCCWWPEwpaB%a$Pu9wO%c&E%@
+5HtjRx^EAJa$kR=?&u`&EPoQ-EXC+?h at j4`SoU{%*wcvl{%*s2ik2J!daxov;rw^g4ug2{q2%f*ac4D
+fY8404&^v?-Em%hH7$JLv2gp%1oQhV(TikFlGMgU$1|hTK`q&#jETGpE`sy=<6!9c0}x`HPQRKWI;_1
+|4ozoS-&&H5%0?<0RSbcHRYffk3u1$UW@;@u<9H|xB8gf97b%)K63CLUljuK0a8goXml7Mv8(sAesCU
+QYeH~uMxp)f_VLF~Bhq4O!|&bYJ-dQw>Mj|S`x*RTv+ljTn2H9m`=rxxtAkmT35Q;-hUtDU4<b{eB0%
+zSzYAHs8jik!{P1Kw#ldKU?Zs=vinny)g!8W0z+{$<=z~rq&7>{l1`ON#ScI415<1J_hd=6VBkJHLXx
+kgCg|cGb)}Q<HCx8u{vU5mk02Zw?mL5sw?A1|SLt#SF4KeICd%VSd3r47eIeIVz47mN54{1X|ck_9d6
+;sNJu^ulX0v!L@&Zow7l*Rw)&kHE*`lPT9sbWdjk)(g*8VxlY;V27_%rw8?w^qmxQP9`bBVR1QZ0iIs
+#sg?G`gqXiQ?Rwk0?6Yxu`n7mS@%g0 at 9BH?{{c`-0|XQR000O82?eW2`JN`VlL7z$VF&;K7ytkOaA|N
+aV{dJ3VQyq|FJE72ZfSI1UoLQYeU(j*+At7?@A(xLy%33_?R6zibXTp^L#2MHLMZaa6R_5?k?ja*)&J
+h{SH80xz#g8Nc;0s~tJNy|O3PPz0#YhzDVJQH2o-`{_yt3CO(iqg3b{(FniNIV*hWK95ME!DwuHVIB^
+nDw*k^&m>}|?+i;Doul}t(dHnI=UOcqmDDHLTX=VRP2XH**C4<!EC at 0RH^HRr^B!u1;@h)YZ2dYKg5*
+hGH8^)hLI>au<QH@|y>KC5fX;(D3n(pYC-gg=MvGT+Ei#*Y+O&bgieTK<>YBsR+uR4`szvLk;pg0G3+
+TS;qpoW?gEA6OUBK`dZB*CN!5M5MDTAzdUO1MMR;h()ZEJwaV0AVaYuH4FxDtZ_ug;Q){3KC+`|Kzkz
+>v0fw~eY+yl4{fr4eG`>tpwY#{On<Ydo9}PN)yaV;D$lqxZDBG9oB4U0Ov5HSVxtTyaspeJ27{V|S^J
+KG?Y`><@<*SAm)~y=f*E3P;DM2K)Q33zHtCimp~yWaw!w#+t-CaR0bY?<HWYNPvS!>uZBX38l`WFy>s
+EaC3u>!JFLGZ1gn`*ogWRo;uJdq+O6lQwi&9Wy2$yYvuH at bIOV%^|Hg(xokJnsK-L>HII`Q^BwFqsjd
+S5E70T1XD@@I2b4C7TL_)EH1T;WnE14T`3c?J{O at I`k1V=L4Zbm}j#=?I8S3Jlwc8ok0DCCXc)hGjZM
+G~nN!9DRLwIL`PH(PxU$sM6Ttngw%%ry<pGc$!MC at jdU#S$*#|z4|^E?|TL}mvQ)T%v%g at C0s1|Nks!
+sS}Q%Q at QySxP9zDVgMTm$I*um<f;QW^2R_`YD(Dmg;pdRLN#nM0UF>`(dG;SrO9KQH0000800{-FNSG
+vFLGc0r0IvrC02%-Q0B~t=FJo_QZDDR?b1!3WZE$R5bZKvHE^v9RRZ(x+Fc5zCuQ)L(Cmo5_SEM{J#-
+wW9K+tKb+A0c(L$fAvWIL;%;=lK72ST8&v}t*O`0l&&-FKgzRPX}AFs)TBSQtW9R9q;CmXhbSVxe6V(
+%9u%l2nIOS>-Py$zom<QJL)G#&$`_=h0#kj;G&eSCi|@=?@5?*XxlFIu6bp`M~nrm4MMz&Q!)rkSY=i
+J+a6t<;r)E4D;(`q)i_##`DYB^#ZqfCV&sc+8*f8Y#L&wu#I<IVlg^=KABzJ1P=5avkZSt=U)~<um9Y
+xZqM(xJ-E9wF-MO<jWsOjx9 at L&XP2{Z^z(YUqh%6YK>q?<aLJZ5^)c``BrJ{UT!Hr$j%wGW=-vlFH~a
+q5x{QtU7_8gOc^u{N#6^M}>OZsz7A4?~Vr$+T;_?7d<?B~yF#$-(DIbSSIF3!^VRP;Y@>Lpa;*0wOHe
+!{7_w6kPwuF#4kEGO+YkZCPoaWyhnvD at W0#s4O1nktRI4l{|k|mJx*4%F6YhrbD85ImwMOzm&c3ESHS
+Zmiw_IL79Vxn=vc<8b+Q(@>xmZt+akHkvi-}&QHQ at Gs*6FVm at 4nPOF{yxWHG}%YTMH2E#Nvu-i{oVQ$
+;YW#i(dVNxF6w#aD52uKB^`8pk&#_MrQ&#Z#JrU12w`l2J&avX!nDJj?jw&TGoX_qQ-_B><_R;Lnq2N
+*HLz*w-~4O+oBvn-##G<VSC6HNgk-|cO8iw#6X8nmx^g}Z_8q#dbVOY?s<B|4yq^DoZcx56k(D at l^}t
+RF;i)mNvOf$jUfsk_?xrSf(3&~DU;Rh6mX6znHWllLTV$KUM{76z+P4h1!OsIr?0qiX`+bTm-8JF2SO
+Xe%c(osf*Q;7F<#dwZv=20*pGvdg9DkM0;F;RQc$eB247Fn&cI(=<`B*O5QE_WTse}pPKZ#7St^|z?C
+-eDqK7<=yLs3fwmA<>q<XuUz3JORS^?&oMbUK`Nn{desP)h>@6aWAK2mlEMt4LptfSYLr006`i000;O
+003}la4%zTZEaz0WOFZMZ+C8NZ((FEaCx0qTd&(T41UkA5Hb|8i^SV=QTJi(!wM8bu at -wdC=A7>6ZP1
+VtINr<Uq4co at 6I{R^pK1Bks?1*6kTdnvn(r}bsDmaiMmnRGJZ6wau%}o|7H`OSL$>U^3?rRX0s{DLL-
+_)!;en=FZkhvh8m>(0(O8Lxq)2OHJ8N-^nEMo;T<He3)NVmq!}zZD=O0gKpOJC5PHv~(lxKdzmPTDo@
+WZl(TS?x`gi*C0XNUB($_h(6cw1Ou~7GZoFRYoW;1n>pf{Th at d28p9WluX>?i*$$}-7oq%=lYUU6gC2
+h^$*FG8HrGW7V(hT+<7xBk0RU=7b7`3VdoAKz at e@W4J_KYwHqajEPXy%4g1f561d8FYo|!8|h!<f0Uy
+O%jy<e*c9vT7AdhnbTGO{FBOg)k})Nj({0JX|!J}3(P2|b6{NOXYoWZkE8VQ$|z=BL*yA&gkZ=uPxW@
+>AVx-XZ};qS7WtX>e-Z_FQ(Q9O=E^So%B%{ZTp35GssNM!B(#z~OcWoX-wBFjLMP<|Q?={lyVg}_kXn
+4+!5Djm+n?A&D7tU#?JAY;*h9$6!83p8 at kx^0uyoK9V{O>~$I!z8(66W5jFb58MTKgTT`J}0bl!%flI
+>r6F!AISjKiYUSE6)LsYxKWfD+q_kiuqJWS}bd>^0XXgI}*7FQMLBV+|gf*%8?@Qi+q^!dQ3H>tch*&
+}oC75I*VtFA)hZ{11#T8rn*d<A>E;U`C=i{#h+3gyqKy?ob)${th+Ywy3||p(9mRKy%M7r%D}p6$JMv
+;#Nl?u at vsmQL?(;uVr+82fESs<OZY2E8z0}bY^F6&fpn)R<jq<+8v7B9zPES7(4tzMhJVrWUoGKFRR^
+tVv8_o-`6s)I|0;S`4iWOS%~n2a#z_@;W2QU?$C+&3{{gx+vQb+heffsh<}%C<3VRcfp2Er!5pzx^G6
+7jWGAg$GbLt{5=ljjL30a5)*AFGQz!kYZ at 4y~S3McY6Cv at _PWS(9KXNv{N3Bb9JhVIQWaxAuj6I{SHR
+^R;c;bZ93eH&Ae0Wtsfi!*94i-49ddew^F-g>i6P(ZJJDMTlh3dE_P=7idMQf-LZNpsk67nMKxuq*>d
+zArWsN{oQ%(!9U*_+KIcO@~eyVf1lLzQK%FzSg6CgO>O&>f)yOZRvrm1WWVRMW(=Xs7YikSKdd&T-oF
+q|tmu7U$Dnw1AE>+^u##OfFnYoO_~$oYwa18Tvu%%66~Jj+_;EY_Rrd<QRm)cwfkYf^FB$9dS%Ti+Gs
+5vctOdL6Dy`d|l1}I6Gs{!eI&IEi;8Mbh#Bt8 at acMS9C3W28=i9iD0TkA-A^;1 at 9B~v1B-*<~U%ZA2c
+Gib>j-PXIJG|&1uY&H%$?8XV~EnR#yC!Z1=0MMPin)c=2SJ_>}#rButCd`#XJah!$0~?$vm;wVI9#*P
+oEy#O#dF8jTKkx-7akeal)euHIt$f_tHZq_d8)4jy-bbgeb4tIhjeO5N^RC^mn<4j^-U0ZC_Vb1b_NQ
+`;@l at O@(^eAA`dWiTHeWVI at 8csITG)Ae!SCyK7UU{vF1!)%t}^@Pqq>;CyE`MI;PE^NE)vs~U1VjT2(
+wJ!GOX#Ox>mN at ob>Ta_T6Qpy at jajx?S{kg=^2KvQLm{=*%)f9(ZOALW3@?%Ne#3UjcO_)>a4RQ1dRF?
+^;vYCnEVeZ+&ym8?RXFz!#uxU!Evp1+85Guo5BH3arCKi=TDvbJAI1UVjk9OZ_(W at kqF>m1f3v#gRwn
+0{@U6^Esq#?Qgba-~Zc{wRZ~g;NO9KQH0000800{-FNSxqpoWcVD0M-fs02TlM0B~t=FJo_QZDDR?b1
+!CcWo3G0E^v9JR^N}KHV}T#UtvW$LAHeJ^GZDJb*rjXuWEJe!}Vl2cpz?!?b>Fu+rPeJ8v-P(s=Xp5;
+Q8U<`(`{tV|7O;ZF=8Zpp=NtXzK|(I4ye*G_5zALGE7M<=F_cX at WaGl(p^*^P{`-T#5rVr`Am-2j&3H
+I;Qw&_mGy8jW%GJ7h1Wpu>k+TXqi@%;rR$4N97-3 at xbaMY&M$@-~CR1`SJVTNJa7tO|ybz4t#IC*3yL
+)7tUL8KzLylcgl9?Sxe>|d5n>UH_M0n?tVk?+HSY;{;~I_N3_a$CM9rUSbbtGI1~{JfA_*d2g*CrXxl
+MgZlc at 8idi5M-vT|+fsq=i+2d}Yobciah(lPY)Ru!S7oipF0HI}xkSxl2hr6P1v?1i3vAQLnwTWDQ85
+OQaH1;L<zZpUbC3Q=YJz$*+1aINl- at kv4Wl>_z!P;#>Ze_a!pF at MCCY11$<_=_2kUM5uhqt at ad7wDGC
+YC|INJK$`!>+ve&pkJjCmNM?$0;IrCFAh{DabDt;mY<lWPZP&;mnGK2?yt^>~%e>!?soCytZ)T+pu2x
+>SwKBsp-J8CuXax5%SvW2+~yBPY#GbLdtwdMOd_064yz=4M;pmxY#Z>iq|%rv}lR-tw;+h9xT-o9TQ(
+-Qr=2hlSpfX;(IC7$*po0)O1ZfQpSt{#b4p<^Osi``}FHiYlH=Ps8ABZ26$r`7YJO`M{*WYk^^$ZITp
+Fsk<jdxux#KZdpj>O at gjB2<SHd=nneLoZ~ND(=#fbWYsi0SQuBBc*7r<;dO~d2gOALSR_X(j7^DV=RB
+%m{_CxAd(I*G_vcGKzUqi{hcVJh!SW*0cDn2UtGNPOHu at MQ<6vFPYxx!bW!EM%SJ+>%%tNu?&>AgRsy
+ttDvp)T?4&%1E!0}<5yTFS^fhd&aEul!33m5-Becij*Tvk1Qo1IGFRBW<njP5y1MWMS5-ZLfwdJ&cip
+gq}O=(`ho$S}Sk0#CZ at VGoC|uE+3=nA!%?MpYK8>yiN4S$xG`nx6yYR;`tD-j4H~7Ev`b%QW&VK;?A>
+=j!7??RQYE9Q4tb$zhE?MQ}%{44-<_Oi-X(g90<U0T-1J9B(vsRjlpKJW%8#Md9j^DOVijosK)xfm`2
+gkDpdE<C`gJMh}1$0&ljUXG>w&{U-}9B5=2_~#cLGMPV=kNILl}?d%k^<D*Vj}#tx3?A(VY0JHNYIu)
+e!WSo*ra<58Y19_u`Me?ziA6&~<^0Z>Z=1QY-O00;mH1*=H-iR`4k0ssI#1^@sQ0001RX>c!NZ*6U1Z
+e(*WXkl|`E^v8$RNHRUFc5vuS6G!+Nvf>H^NJu<s8A$CrESFvAj_Lf64S&szEJx2jGfzNE6BrcJU(+W
+bLP?*H4w%c at 4NxVh#0goj_{LJy?4OIbCOK<j at zymr}@~cwiU9SkM_kTNfQ{g(DcMDRB9NwtY_Ny<8j4
+U$DOyVQZ?8abbCDBA6JNXqF?R|@S0VfmrwQrK|^RO$%mV-_s36<x9slb;jSPLkH`BjALHTnAxV-DI2c
+mS8PFEo=V;3qlYBraa)ebqx0c)?^AveD{pW{-;B$3#75~wyQ7yuwKtwh8)~ky5MDyy2w|HZ!PW%R%ME
+oO03Z&waoPc->HF*}UBl~@H7ZTkK{PM!U0Mc2~h#rVjq*iFxz#TvJ5SfHT342UG*#s0)!0gh%mqv at XA
+q+I_v{5bjrnD1E+8^X?Ab&?Fr6bUK%+S09=$zIhEv9vmjzyp7R6~PZB&2YRWfuCTAlKZq7XPlFo+q_N
+c8waJDO!*K&*|cQ?zg%jhE_w(Fl<YC9bYj1Y(a!4-Sf1--#zbJWl+%}Ej9q`GFPVmx~)1TDzN3IS+)>
+fg|C*Wb;`gi@`n4~mD|?aKsxAknPT<FK3M_ at wZ%3#5G5hVyt66UZ9K>PFgf~D37Ks|%rA7(+*mLaTLX
+-ngkr5xUT1HLt(5s%KI7$7xv4b at 5-M?4JJArST(llG!JU6q8zCKw-In1#zzMIxn0$jbfZIk+gTCCXYL
+s&bbg?a{Mj7lvH%`f`NXEIw)EkwhJA3#p$C)be9Yrl(YdSrFvRFeX2n%jZH7txrc5$7D<q&)Rzo=zN9
+LI#+T=-hF*ootw2%dDF+qedl203x1=9K1y+j-#DY$H!OFJvm=Ia@!xQ7f*?AlKRQ%qG5kD_>xvUf0|~
+7J(zvRIhm3!JjeuEKmLdP)h>@6aWAK2mlEMt4JOe(4DFQ007nl000yK003}la4%zTZEaz0WOFZQWo&R
+RaCvP~ON-ku5WeeI3@$+qq-M{h=_M>|&!MNV2*n=T>RJyZnXLc)%ChA|VRbR`d at s#RYqbQ%+R={|83Q
+4WwjTJ^>0$K9mOCNsj5ESiSMIRZQgYQK at M*ao;Qa4&dOe at -VEnAnc%hYh!oFIoEg_^HxO4D^gINpZ`r
+ZE`5Kd7P=U(5S4+v<rh1J at HLIfx-5spA-0F8e}$GiDgLICWH)gAm^see+zjp1&mnf<*-MM(rU*n%BZ>
+2PQdpqB?7fZNWkG3T>AI?>aU)15V<_6O+DGbf}NxMitCHWhEDyX1U+01cus9EF?kJt!TmK{)6GdB6s)
+Q*>rbDB&5a47UzL&~l$?)v{r0!)Arc%loYFdrTSOhM+JAre19HWs>k$HTW5am#4HC_D5|Cu+>C+H&xn
+$P<cCYm2Ska4aaX=R3 at E0$vDz=fpMXu`cV3|$wRSo1%=&a|DLfzu4tC~uX+_X2E!^+$)_vAq(_j*mES
+ZY^(lwt!eO at FC54|rtN&W4GN|q!2r1+- at 5W^d`!Ki_vCPy~#tP-xJfHGG at Tvb_P)h>@6aWAK2mlEMt4
+K^reL&O=004VB000*N003}la4%zTZEaz0WOFZRZgX^DY-}!YdF30~j^j4+-Csd?Fpxd5HQCojJiuJoZ
+6F95>6x8}-hn_%w5_x(DkSA at zvSDuiibo=l#fn!vA_yJ#x|=;b+In8H-hg;l5A>K3zj4#-&b5HLf4WP
+wPK0+KAG6x3%=dv<<@=W6%$l((R`QglVba7lNZc=m%Cc!h5PnIMG0i&M2X|gguvq#c8nDh_MEaxkz4)
+SXCb&SKzfy|$S=HPlgS2IuktDu?01L%EBn391>3Vy-80pKtf^!v-|uOe1wcQVl@`3<DOEWyr2{_XLe;
+cj<sm6~vMu<U77LQ)QlVHfk?9U7wFHa=K82Z<;I@>C7KJ9R1zQmNa{KL0utUyk`Jv8>>{Bkx&y#sW+R
+;n*88>fe->P|W0IZZ~(kvG}fOw6x9hiF&OTmuEK4``&SkdgZdfW2@%WliNy!zXZ-;5>ucxZZgl;8yoz
+dM#bCKXk?gg=$cW6D_7f_=j;A1OdD%xBFXfKMjqdrW}&trNyurheAH&61>~dvM=5fTabM(ka?1cQ!Qk
++_=<qI`s`hDw;mhEt3S<yP4><CAmA^-I5tP4_7<jAulub%;cQZ5*Q((rA}nU(tMLMA!CdD&yV+{68ty
+NFsVh+{QfgIS<$Ry)&x200dN8I_gpa|c`Z^#s7QDD0l_pJ`UEW`C$g?kh2Q{27UWDTdFt^8f}v at q3)o
+C~y2IBW@{DOpv?PqmBkay2QQS&$Bosh-!N8$l7w}R`3CnBdUc|Dvqf4{}m?^T$k>RtJpjY_WK at svAUc
+My{){VcDpMrXPM;@$EmRjx020o7C5lTzZA!dYr389B21HKNa^ey=AEJD#SEjs-voS&>kk at njL81<wPW
+DO20j;PVTm&R7N8QVY*&&ymT$xO0hvmkG%*h={4&Eu1Gbwdjx_N==(76dWoaYMjIoiwNra1vly0v`w;
+yYEAYm}dF|NH=T4RGh;9l%P4-V>X{(ip8>A(RIPDK=Cbq1)2_v7%vg$BvP}8Pqb9g0{*{Lpf(1dJF6L
+!Y89C!q}^NIGer+ntfJu(*p$|VT4A#5uIyM*tp>gTyAgKfPeABhOrj2g;q$}M(Ije at OY)QhcF7flm#U
+x;SlBb<GaWTBM7-T_47^A;NY1|Lt7K%ktgEe{8N;|Rpyn}X*b9<-%GHjP?1>!Uo!TBP)OF^_j5#t$GX
+<x;Z%eJ{{x2r^1x at F`{!-)3rk^a?kok06Ww6FKek_N~vtN+uP<I&Mw^U?cG>JG*JE|fHNkIUSqZg&8^
+Tnk)_4b7n>9srJt5LD_ilAP at Ycxf2t4M-9SfWJT2Qa?>)w&z{ze^OJDnXH;Ec7OL6#*ON1%{BI-&uEy
+$rs!c5SdfdB76j=s9_1ha$mbl*8m}66oji7B$qNhA`NE(2^Ew?9$)O#%MFLzzZA?R)sRj#Ofm*@p>Cn
+-Dv7ZUc-?|D<VYvlumgbQ8&ouu2qLUpCx2Zn6<=mlu{gR;?pxzY`L+b6myIh2#Wz677|@0C-)bt_ff`
+D!*t13*xFzjIou8G;+fL9wfRo6xTgpSRZ?r4d<TTT%_=s0IT`k!#vgzF`S%Qm+%+<^G at YLlmyIJp!Y6
+ndQ5_NiSYT_dS&n8DGe?#GK3i(C>z#jJSvC5(HDvsojx4MZd-Y&3!e*OOL?$i4(?_dARz6SmaQThgjA
+%BuFncXwyvz76*#(KhZLdXpY9)G?6{A=>z{r%@4H3Zw#C<i18?26{oEA`K|+o1ZXOomHW>b-Gk3Y&S0
+1s~P|(FT+Wd#=bInQkp$GwiiSLlR~jYETn7jRY9<kPKb(TKUQA4R#`L^o!yksoA&pzy5Oj%inLv2WU9
+K4NQ?@$wJ2|1oSBqd5Wav%Do^&54*%XU65h#L-x?$Ad_phqY&Ov{%1%c3c~Z%780C?OFmrC?e1SzG&G
+ij&?~?#P3MWTgab3XNM{_yL<xbGAOm5exm^`sD{Lj$CVvi!YnJ{q0-H@|-hk;BqH~e27i0|uW!sZ0UM
+&kyO);_;O)-m^O4p~^Rl-k~%ardcaGz;#(@on=Hw~y~8b)^Ve*v_R{2vV#sgBlj!OGP!onBnU^<^meM
+Ph7dA+M3caQlhtU6uY>roHrqX-1ESu1I;1Utfp@{sevY6*#;sj at M&>BVWf?S}<B(-~T2%DtD}#^!4Dw
+wecRxo<1^5DcK5MS6$cX)FMbh!*rcM4+SbJAb|%>?X6=$!-VR- at W+M6-TWFfr;d3$3=wr{=OC8v1;L?
+)Hwo$JOY-7iT_&;qW6f$|<{>;Y(sad{86TK}t3_)yzj3U at 0L`Bg_N*gyansSFn~cZ!VKxY4u!lAF(qR
+)YG9)sn#oeeDs#Oe%y1QR9Jv%(WZ+WQVnPQ1!X8$qyRO>X7?r3SdbzFsZo<psJMHn<kil at 8)Ln+wmA$
+kQbaYl<w(eg;xW&^1v?u83{f>Y!!*eT_q!vCBC;s4hwF(9#3)60|?pa**WZz-`Zp^(t6^UGA&;{V?%(
+4Pujr#yXxV+*-<2z6G00YSZ;?JMw37wu0*deXeWoqnku4XRD<cwJ=pDu{lW>ug`FH2+(ZI(q#%q#&$(
+f(mYiu{S|d%`(v7kW!)SjOkk9zq0|1XF_kLbq3o)w376ia6}Ea=h$#Qd=ClL>6*KOc~D*{eKSzLpgFW
+g{+Z#>$Fw~^($bY<kjhxo&1<h}YkBN`^av;4SK%g)=#~MtkicV^+%L(SW6~koyf0no1a&qa6L4@&dPd
+5M37i0c!#8qTPW6P^wCl^J<sA_dn**eF$YqZ6LcOz~scLzT&q~_$g_u at 251cu!E(JE$S@~lnJW)^Dg9
+LXB?y1<3X at SC<XKWw(u*0{x6a9GqnBnJHc$0T<#x_?AH1Ly|!_nslGK8XC80-`@qC?Lmp5z3uM}6*sP
+4z{S(Fc0wd;@|u&N=MRqa9c++S8R0UrTwZ^0H=s!lQP4&sGunp>HhDX}a at 2FJ|=?Ovq}`^kIyyylq)4
+nZzl1Q`chHu)p0*I_z$+h!^gV(4yOomzYIIW#LG41-5aU6-?oI at eGyN7}B*v$nh}HcL|w#KE=xfK&QP
+~&=Av0h}g6VF-8%p610xs#lSlUn9dgm_Zx;U2{@j)(h%F4Va(}({dN)>y_OLQpM&o~TZA#WU9^sf41{
+VeO>TYE<w9BujjRW*C<O9}BPFdh*%l<DDM8|yN){W*HBE at Z`&?U8n!yYz0?$lFiVjQ2jiboz26h!oYj
+bP}b&T=DI^zqR{_4Tq6D>zcA!H=U@*iYV&~2!8!DndwGdnPd)LcXIp)|kU8#TjnB+Qln7~fy{8$s{5k
+)jA6Z_EjsRRMS1t59LzY6z~*aA&KbRj)b<1N+5sgW>-eMzbe^4Tk+51~wD$2G)EHgZ9(iYAg?)L~joE
+awhu}{IxKV-pSm`3pf7nBZ~3M##OMG3?sHFVbx0!BUU!ycxC?$164;m;cGat-$&FZd4b(bt26sUvgc#
+Q^#b?G`y2-DPP>}dbbk(Q at xf1K)WoYA`Ad2`D!hSuKxWG14V_HFYZ9HgY7^rHsk4$_!ZBndbAhA7MGP
+|g?8{-eFuX&<SPqFccQONSn}xPBrXys-T;wxfPR6)PQloob;aS}>gP>AIkm|UeFBj~Y=mQXG4yttY!f
+S}*R7_f1=)7cTft>mto4yTcv)&UPe%lL)@&q*$w|Dz3^z;n_Wj*HXL=VPi#yN($1|MLCol;7N>owcpk
++ti1M$w+ut`4%dD#K1a!u{#IWj*~Qj7c)q`m2ZUr=hzg>Phgh4)J+Kyz_j)WL>BmDAYGJ$HvE4+Rj)`
+&}dsFeW4O*Nxb~~7H<aPbsIdAJEeD%{b#gR-1(|L^$F~0eC)nHKW*}#zOz}TPusZHU0h?4)3A8_*al;
+F7<wAVcD;c?$V*HQ`p}mZxqxhQm8ZwDPVpKL9^N0%)d%i*WXF}e4<A#dFx4v9Vi89BXg<y-r0+d4>dl
+P$&qiMY{v8JrDAl+RIC?-10Cl1{2|F6=I|Mh_4WLLfAi8KS_CgM~x2K{L0lY^E*&5(qhTRDF!-_;pY<
+z>nPSUb}TJYK3&p-d>ipud!;8<$fa{O|_)ZWM?B2oMs&r6LWPvC4?wA0+$ZZa=7d=}k%F6_M*y2nNP^
+(DE-1*5JI59jvRd0*^0`S^Zp85kw^{iHfu0+;LatebQd?kP!Y`~sfw8M1BtHTY*CVeSW$lE8G&J$mpp
+Sb<cIH-5t8Uy+ZRYF%BDxf~OhXDtn0SGGh7pT3L at INLvY2~HY2utmPMZG8W)cxDk8OwZQ(bG3)40{Va
+%eeVsu^gssx*rmh)WC0YB3Hy#faI{1br#C9qyJ^V%f`lUrYNb0c?U5dd%so5VUVGe3mrSbM6WK9oJC}
+OhUWGMW#^m1qbxGjbs86bMwOn`0?t(dbOdOrg$vs`Xponl|+A$@z<K`kSA1_osK7X-7bzhUqbLyl7*)
+)fQ&4e1O(mhr7=A^s7e})p$fp!X7F)H2puF3C>buQp1V-jS_{+H~C8~1WEn!js|#a;=<26!(>uN+4gs
+LUa;;lRSYTtkO*fge<CG_sN8<iu!H(Orpp!uL-h9GDq2^dtS`-%v{f1QY-O00;mH1*=HJ33Ztw2LJ%{
+8~^|m0001RX>c!NZ*6U1Ze(*WY-w|JE^v9>Sxs-_HW0o0R}d}&Nn2akUIVy?Zo5E$1$NO(4~sycCEDS
+JCIym8;(y;6ij+iAPLus8it3O=<Zw9iW;pYx9JD%-sycMG)2ylpKeb9*Lia|A&a$e1U#<MOP{$*e$ME
+_{wS-r*S{+bN%iD5K4Xf4ZL}e3{z3X2`8TM4O)^a7yOym!(l^*4|Y}iu}`9$k`dSvf$a3a%LE(SIEio
+kPZw&K!QDg<k)h8wH-zH|F+2)<U_RIK5a?gcAms>+77n$;A=gW5mYNj<RUMt<V$FK_?qogUZKr$)u at o
+ajBP`myS$Ro8Ba^QC`TtyYL5(_|L_Ey3mwZY-}VNly at p0>o-TjUgYvWDij8e;3!z)Af4oexn2#TqbP~
+mBC$W(KWCE3I3XL<(7Cj4WXJ50qbEMmxPiU0=NZTOd4+a10x1Jf=Q(T_cGcR4Fw-ET%Ng+&VWuB3KE1
+|wOSp?XAjVAm at pmqq0hMbg7Ib68``h~Bq*2MR#k48IBdups*m8 at n>Y859*ACL3-C?A+7J{k%3<|%-D+
+3|;lo%Num$DI at SaMPv}t@;^I;O7Y^$;j{M at R}HWbjxHqkt-am_9>R>3K=x??i|aFTYy?%q>jSUh#dM7
+!%j3fc#Zvf?#1cD;>VYZa>bF*XM6Uuh%jZ4BA^V{8oC3FPJ%R)ayWGg9<M3RP3_y)DeMn?rvPAGo$16
+-+)5dq*v~qlO%X+EW3$)XZQpQ$#B3jxWg~UEb7QUYxf}=c^dEAKj0Rz%v+ZJHvG1o3XoWVdC54_ECy6
+=6~DS!GlTB0KjnDEtD*V!F)|Lw@~lDdlc6<uJU4vv8`r;K~*K#6C3uxglbPrTJpfO!Kzr2-_AkhhO8F
+?xrRPN6k>3IMq-HR^LJ3Nj$%3d**6_u+>)l0PkK^cE6bK at fN`Q>GFoC&&^A`_b~D+ec+Ij9nPO7r_Z=
+5a<>Ol&T&wpr-#3u3U8jXXn+^IuX#!*8A>^HAScqsy7}6^ww1souYL1gu!QtYjKSG|jl#ALl1BxVL8W
+N`xs;>l>_h#p<EytlaNk%7j6My0y6hb{#@Uwyx@)<NLhOt;2k`#M*b*GFS#iG%80bqbdqyoOfzyw*JX
+SQDwh}HNI?ELQ}4Kc2|lk+HIC!U0jAHr1G`^}y#(~^qoXtTgKOZ+2G&dGYab*r~wwX2zX#v}=>4r&FS
+!bdIyOh8Z_v%~t49=o- at gPd{9xFo-KE?Me3D*Mtya8|QcLCsOXWB at L!Y9$~;EmY+teL_iOeP|SwXTlB
+#Xg=k7lSnQS&RA at E%IDx=(tI0$@bmQ`E_m!=`Z^F7^Z~B_7KojM>dFtCHD3qexc+|)-~xUFO+_EWVBm
+!@n3{6vi__cR0-_)N<!YqYPV>lQ;m#tF2LY5&!uMRV20G$mY=egDSrLPF1y!mF)47)){bORHW!afQOP
+F5LVlFMh4g~m)Yo_IMG%Tv4lL~rJ+TCq8M1UOJaXmNK5PNPhQTl6K3a>N3^{K$Cs#t>=OiEMao}G7sp
+7sqi*=y2%etTPbPVH{7B^(6kl0^~w3`oXXkYAncJ!5FX=ykGPe{BXvaZsrv_+(d*Cgg)teof%z^Od>H
+Qo9GodrBEx&(Vrv5yDi*Btp-_cPV6J=LdEcZph^@dP{yD5)Nvyrq#G$DYd2Q1!CBykYzVVsWg5KaDvP
+rM0l6kWaSsdWj=0D6mi5NQ*XzkH75uCbeIiEiTU@;SD7 at H?rK#b;T`CR8%m>qv_BTakyLK@{t*igpMj
+DLbqNVYvN|zK;q1{on>$<DCz};%nkI7CO69`YbHca}f)n<^HOySv?P4C{^T_R8pVyvBdsa4_U;;(okH
+uztYP^e9&xrW56nsIOyK~LG$matS^BwX-iVWAh-G4lHF1195#N-5|uBEAi#d=4wPTouPDAPMVQak8&4
+aaVP(0Hg_1&SwKF)N`$7l{@~Z|s+o%S37kK0kR5Kqgm^MZv_Z&%>L8V0^<*8<Fs$zVz`X59>-_UQ2E!
+7o^+OC12xBm))(EgcjVfWO9%7eDneD(ocD;ak<AN4>n96vT<>Ry}4S96jDPF2z_!lGbNy~<n>Gv&w%x
+SJ>D at UmND=N=p at qgOZm%eooR+|!PDo=nP at yeiCuEdHRd{j30>}+-%=u8Rvunb8eUu$X5U3(&M~-~x;0
+ at KGoI2z<Jd}ciJt#=BcF-j<3D5|Rm!iRf?t^;BUdCXq&+2@(780nok)n}@@&YvOI0#Wso22YxYU+t?~
+6#yl4$|sf5 at vP+MEi;&P`Y`8hM=}8Hn*xj=ZL2OxfK<K0CWg47Za@=WDoDEpoXHNp2P|zd<asteEzb-
+Hu$m0R-Dh+9HkU9emO83M-4%-%v{f1QY-O00;mH1*=F5N?^T^1^@ui5&!@e0001RX>c!NZ*6U1Ze(*W
+b7f(2V`wgLd97G&Z`(Ey{_bBvv at j&4wvb}mmtZc?r5RQrO at rCN26%?RNVLsH5>=9l?G^p+yQ4_z&FlJ
+M4iHP^-SJ+ZJ9;ZcL6T%!>sqoTA-t%B)Pz1Nk=L3f&HH3x*K at Jk@p9*0)k(QW&5rsYX*HQ_QDnud_>n
+4>ilU%p=Hy;CuQRfIxW2wwE?eSE9Lii!PkGO)KZ{&e=}OX486`YzAu^ULPkFk3-|p3#w_7`=6U}77OP
+VK&|IG$;v9-t1^D<+lPGGeqWXF_Mnu}5mjJT0f$d*oNs%w>`pqr<>`<Q%qySo1EW|{o@@!{@WOPxHkG
+857fR!_S`G9_x6GBu)#6+eQ}&#mC2aZQru9Q2(`CTItfWZ?o7gXOnoEliS<77*G9$kLoDMV5 at pbZ@N)
+?RRuFA at F(e;zhGfwxAulmQ*x-qB}VIuosFElty4r)xalDBo(Em9K7 at M=bFjWn;1kGQHF3q0%ha{X028
+r2^Jj<A=65V9a)RU#TzHZ5x7%8j at 8TPgvvR+;$UJ(Gq#0H<|Wrj5-OH&XXJv)or156r-QYxky(LXdR~
+|jWQbzV-{ou>fhJCiECFp*Of&NUYKNWzKf!#Cd2|eBy=6!Xy$H_j6im}+Di^`S at 3$kSEv<9CK%?X8RP
+m&id7os@@@f(M0<}hfpNK7ZNbf~S?i>G*_jn`;ttc|J4^a?J`j%BxDkfuyC6n5kmh7actMGExH$G}zF
+6+{I+s1H4(03hw^DQZbHmg at X)g|Sib+??t-~(3*D^jx0HJ2<ywz_~UCt;IF#3V=*2W?!;3Zw|0;1`Xz
+_FOC2FuFJFp&|Clwn8kaM!13WDhzMvrF5L-5#_)$y$7B<QL?VJ0E++znW%Nl71jC_Mt#Fa5=KB3M(fK
+>dt at a!;1VDN1Wtvh&uk!M(SMD)`gkJ-?q>k{rHA6d@(8<p#H}Nnpby;Hi8`horYo3dcVn~WDGnTLH=#
+)$Yo2F`Vi0>MCnt<hMeN$Zf37Eh>~W(A{n0bW9`)GKAHdlI(Rj(^Gn4mH98X;V{;0kPn=L5GCDxY!5i
+huME(t7lxs|W5BxDesivfxQd`9mM642zH$7b`r+B1 at KrAgB#&={^j63z1yq0JV+09d1p*U2A at 94J(f-
+!o!bT*o+QC$z&!lonWmyv%vYVmKJi0lbHOupT&!oS`bE76b}{92iMy36Rg?p8EdW1^M#TtRR|$oxn=^
+S!!DdEUp{pZaN_D8iUz&zHSMu5stvVb|s`>oZC)JjR=`BsI*;&3d`9Lg6UZ2{X}#!E+;*-L$wj|z#!k
+Hp4dqZalmb^kz<1n>22f3B^7?n#=C8f*{3r!E}THLw$Gb$qR<u;gx~%Bul^0 at F7_=O*6nGVm{t|cFQH
+xOASixbqNg-w6gRm9aoFvlN4mhxAfv0Crp$*L=SZVmPY&O<p<Xy4iCqf+UAsXj&Y9wq3R_6?{NFsri-
+yCfI%#ZW6groLaad+#53oi_U2=d0mn#Q=DuE?);Cb$9%(x}vscwpjT3M#x6hIP`=Hsd3601vM2o{#49
+Zq~IKGVErkc at 4RAvqU0EgmyUj#uR9&1fkkL)WpzO4c?x8X&U();-z+*}0x&M$r_m7DZ{>7S`0Lm*Jv~
+j~yQRxX>Kx_lH8qwK^tQkb)k=buXSdE5i=fMC6rQ!g)GulV?WO!5j$I^Vgd`o)4hR?-^k~HrW6JmIkb
+5S<->Rbrr)T{E4O7%<IjBYXGEsHHZ&FJ^?^MtJItS9XoNX4}$Xu`V9|sp>HtRKp-%BW8l;<tHI3UVli
+Nwp9$EU{4}ilo{%@>_2syvUlP2O8t7;)ciwm?s4dt2<Pm4<BzLuq at n7h0ws(5;4fZhjs|+Ce0sLK%aB
+SHt@<SBGp9C+R at D5aB=f&I4bbg`02U8W0=@}toJnw&ksUqQ2MV@=+!W+$qKh;M^p8BqA?w2sXZAFM0M
+Z-{-Y=aye=k_=zSp!e~#70-*hUAa6xl^IUv0Kfo(q7Yt4b|&QH8Y0{`$2aWz$S2(8|*<<;!a;_1fD-^
+=%C>J-E#Hz_V(u86+yQ*yb;t)SL*qr$NlyDPWdk3BN4Z6S2xSm6|Nf*R at 1iIo8LajL&@=HjhoW^$9vj
+v1W;~z9s1k3+Q!LtixMg-<WPETbF$6K(a%gv>ZgdgpC+C0pzTPF%271=2T)4`1QY-O00;mH1*=Gq$y8
+wN1^@uJ761Sg0001RX>c!NZ*6U1Ze(*Wb7*gOE^v9xSW9o?HW0r1R}fw-BrR-V&qm!g$YUEcn*>SPi(
+zOPiMF+tC6$!o21WmSXZR8+$=TgoeTXD-W;oA}GuiO!K$2wBHZ5mKLh?gh at rKZ6Q59{&67 at ZqY><u}X
+kNrM<$`fTdBs?EFIOgdrKq;syxf}4N@(snuj6MbSXvzpw9JfvbM at KLh=w+;NYW}}!Vo?FaejXJ_&6h%
+4-a<_9c}W$%B-@=)cbA1nW$QxGB|dEs(`9Xqf at +P&5c|Olcb~vus8y;w4g$e$6a;Q%7pqEEhYqh)9Dm
+9NnUO$exOZWmEfVO1>;Ia;P^wu8SH}QMZq#s({xX_OvJz_1>jMjMIb;*AXi!e1h8Z%2zg)gYD-pCjpD
+_c{G_G)OybxI5-sS(Us2WxjYhNxCXzQ}8;EpX=1r1>f)$$?`9S$rz~jUIs7+Oe)Zie;9W#RDQEa(gzK
+#uO;`ERuV1kHgCSO3Y&{E(pm~Vm^{GD&|f{9?}Z9>GGWiYlwQxvrfL<6o)8s4%2>xQ;Pv%I2(VE)#Q7
+4=g2tJyKKX^Vmsxq#?x9Cyi63AmFmn(mDE;vky%7OM1*fsye>o0x2Q)z;z1neT+Cb3AWL?Q<RA89^U9
+Ue7nAtQxtx at YGjH93Lq!A%(+0mcWAC7YvGtK-RqE86(tatdb4Pz^6d{U16L-p_jUh%;H}ylR1TFch*8
+7fkOqX3r2amOH4u~n029Kiu&r;JTIF>vxfR<jgF<0qs6yX(u=z8p+?b(Z|GqQRX#sa2s8)BHvm`=RD_
+Ez(iy~_=g+NDiQJ>g-lBA!%Aps=1+2^<3aKnJh#O*;pEfbM?&T3 at f3-Q7PpA|FSVgw1WSllY5?FRs1#
+$Ct6M#&ao}P9jh}m{KM?)2EWFRz!8hDL8gFAheK$13H&8@;Zh8+0{ToUo(qB=r#M>A4KGTUoB*aOb^S
+n)liS|V7pRuPs?mi(9xD_4*dB6AMpNV>IT!DX}smseK56`ZtI=kB+bLraDn(yNw!-Q|kO?<M)iM-*fZ
+7V<F9R38Nb9ZExKBI^^GFdHfxcAw0I7syr_^F6FAXVR}yh9M54btmRu`-UlyNIY7STewi{#sShdqYdq
+^gPU?8JyfPF#3N?C0A9e_HRQ~NlS{p-dq*BF&+i^C1c6JbEi&>9SVFl3#TaGEq_a8*j~O(OmhGrW3`H
+0yfkE#e{1tgA6Gt+^9c-Brxzn)@IBTe6nQ}!e>LPE#U=~EHk1B-<bg`7MKFwH(7~kWsRbGaEO#Ko-hM
+^ocI#w2k8wH+WJ at d0<DDFGl_WAPZ?BeX{Y|L>^3JiSba#}_Pw_iWdcL;{Z94?C%FO0kn1YRmq*A8C3C
+&FX6HKMig{mF2T%K4EHg4PoK|0f~5|NYba`u6JX$3xh0P9|@k!O8}JvIZA4qmFm?-}3!XjweQ=?8>7H
+)*#VcaFo at d<Rd6GV#W3C<I~yA&E-R1eOb?-p+(Ix-A{7s1CcC7$g9H<g1)*g^(gT(XLR4ce^xeoxpa&
+D>U{E!{MuAmwZM at Ap>+t(w$s?r7p8jz#rXy8Mg~mpFPJ^MD*L6oEMVM9^aQqahA+ngha|@L(0H*UG4d
+1a6+n*5k`|R<t~dzHp1opR!oY}{o68hhc|DW#`f>9McGZE+Yj7OW(iY6&-P>G_l=xlbDT9`}A6Vmb&;
+Xt7DUK-;!baqJ{u&3+Y7YpP at 0sHulG0Lks2QULIp)m{dbFC!er(5R2KHDfavsb#IjkXMtUX_tBsH#3_
+mWD`p7OdU#=T)S`pKn~Keq=j$c=IcSuDui<25;}vC{`-;rsLTliBW{r*j%Ea)CC6fh%&XY8+c*TGud6
+hbUuJuyVk>j)ukH at XK;=zCA><AUqylJ at laj0h2srt!3yAea%^6=UP1z_ydR6JkR8mmq2kQ?%ZK|X4Us
+&%k50jZx0KQ0BxE1t+zfpk&4I$T#lfF9 at rDqIbq2D1jDV}*2ABibf)w9d>V~!eKv*prz*?^c`v3ji=-
+o!8=a7J3oWd}y;AM<`ULgxxRq_RPw_k|z!<1#faH{BzZoPMaCR7TiuX*y&45wk(c4 at Kq)zZ^1dF^$So
+y)dCvqX70B^|A>0X^@rbzDj(~)yRPYnhG6)mWq;?qr!cbpx8PM!9k=NZj~=-stut8O-0pE|aK6|tE5H
+%$j0re=B&^M?0`(x)T$V&Y at L8)B~H{xs at CtA;3}*APnkEsO=V at m6F^cef?+6&N=5L$}gWUN;y&=iiZC
+k3IDq;&*uCW_j{2k$$e|`~Df)?)Q)1Q2nI&`u{*Zl$`trP)h>@6aWAK2mlEMt4OPf89&ei002Y_000>
+P003}la4%zTZEaz0WOFZdZfS0FbYX04E^v93R&9&pHW2>qUoiw0$A{PS^K!l~+ZIZplwM0I$Dt_pI2J
+2QK1tqO{(VRCdz|cYf<)G6ULTESR2kg>V^!xmgN%V_T5TNgqt&u=$oh2 at 4fIyDQRPMGBRkiKa+LVjFP
+?c(<IG_2+qnIkvW`pn7k=x6!3LE}VX^p(v~Ibv$jnT&v#KMvSm>tVsvK25_sf|FzZcj#p_RR|%02NHW
+3-8)sF2)R_(zF;Z_u(I=Hw{?8oS*t%o7_qSG at 2O+AIniWDkTToFszN&`o at ewho2`ma`cAuJl>K!bfiK
+saN(0e-ipo3hO#2q at AP|iq68-a5%IVS8D|pUDsyqWn?%UQaIP5sDnNLiToAeh_xWRl!gW!FS+C1*Ag9
+?Mkpi+?w}Hq44si2n5<=kTb~OfS_fyt+ZN5zo#W+(GbO&F)a~Jrtw2<~LC7JVK#BvovlJrHM>c?m*60
+&_(LF$4;p2eAC&;qw4$q^3kIR$^@dSZUukGk$&Bc3g<2d8~2uiHz8VDsEV|$CTO5p=HCri_Zm-CPny*
+5H(f1N%lc$p-dR4j#OS>nlxrex&3&3G9;D2)BY;Ya*v;*|a$7h%Qeils#B@^~5c6$3B4-aPi_rpk?U#
+XITpFJISmpCqr`<gthFN~T8H<_rA%&(%0*s-)zlybvmoPvR97tj;A~>FXo)hBAP^Yr0B36i{$Qc}vMb
+${O-gwEl*P#vj$}(vM?$=`p?FHB>#8Tlxs0b($)pGu=%{c0X$sQ at yk=P-z2&R+TVKC^(?2MO`RSVo2F
++mqcstL)|kOaiVd9`|M<N*Y1Bx*8wJTwwg{2i8|bc6nxGtQZ<x}AkL1RkR`Kdt%qh1NXTs%XiuxqC=`
+l;Q8dnINjJxrS1Kj=J^M9mJ at -50fZHeDN1BqAiqITb;Tr<U&)s1(o`o$|3X@)$TkBcm5c%&&*Sc-&H)
+++!N{aJ8w8C_=Z%y&WZb?;IYW|i2LA{YvvgczcBY`!#yk)S5I3MOM!vd>(@x5kDu1~11t90S~u|I8;U
+I7=b#)7uR&5v!H&U|}ilG?>>2|v6e=?}y5PV_hVlMQtXi!Ul8G@~oaO0<Q_ONF<Jy730NANFYIerSXF
+5s~|h at 21E&?tqnSgYx6O9H8$texjn+g4 at W|+_JYJG+bERzPE0J7yqX_D(>`9 at _hp65kl`3TG4G=n)Z*
+ChrLHQu|TB;Z}kwbZs%WPz8p{NyCjAOdQcTE5b{t3!`3?qbRGFr!1ug!nho`RN^xo%N%TKZO9KQH000
+0800{-FNbF(YhS~=J0B9Wm02KfL0B~t=FJo_QZDDR?b1!#jWo2wGaCzlfPp{iH62JRX5H1Sasil{_6%
+TO^Z5klJVo_`h^biCBEsbsV(V|LH_IuxcXGlt-EZTWafxXlRTPA0QoZtK<^&QLJWUN$`sP~VowY%&`8
+kz01I<lhJwYJqz6igf&r7h!IqhxEL at c(DCFfP at 8j}p4S%5+a>u4|kyGcU0bO}^y at N_9N)y6VLK7yfF6
+h9lJWXFoHL!*dCZ6{<EJbs+ggYo*uhR}CkjTJuvYWc5L4H$1Rw_$#r>Z(s+K)(Y7R_dkWwh33M*1y#P
+KRXW;kNhqz-FPEehG&sX)>%$I?>IBuN`d88X>+K&Nn}P3q0FWK+AN1#EULIiWpWSLOsMZmd$4YsCX0s
+U?0yNun7RmQu|Lw+>MN#u3+H!?trR2thB|MtTsSQ?-Glrk}eC~eT`ksezT^_^<4BIKqUR0}@9 at q^d)1
+vxNS5TJ%Og?iGJg>lcMmXB6;pG$G14%h at yLNnPw*zgMJpkj?iPx40)Q;84Iw6{zrx6mB^D7&*v*>2Ps
+#en=oIt-YQ5(yp%-KiW;Ze~vSdMmCGXp^4oiq=5rAqV24%Rl04-ak#{f1XaL^HY4`v<5WB)4E}&?SNk
+Sq<2>u}Vqve)Bf}(QD!bdGZAr%ndA9YryNbt%R|K- at +h)!Lx<hklQ#@6Q!eZf;z~oV!;>dN}NR1a_Ol
+$u*q!hfvk=WvGA+Aq1KRyO>bJpzHhYJv(LeizOZ+ZJ(+2s6gvU>J<Id_3P+|#Oz0Xy!Yzi+8Q?mn(lD
+I(6Jv<AT7I2DsuET0SQ>5*w|L$KPbJw8J#mkXY0=ZsTM!=a-X1~^{KT*Gh3BeZhq+PI!WPBSfZVOw8?
+N{0T5sMwokQ4o at eKxE9A@Nwa<|HR_Ly<jGh$2^sDr_c5q;kMpHk$!au2BPvY&Jwmz@`D{LY+8StayhJ
+tC;knK#}mis|eTqvgc)W|3mt at mAW6GI`l*oF7jgKsKA at e1xZ{(O=&o>H9SeX%~Q<Aj$~zcRmv1KXY6`
+lMkMiexm5Ex^$b*SHrrio45=aGRN5S0k>Senx|I9H?nO-jox(!kE-R%E4eO=ow;m~`N^cE9YNqW*Q}k
+M<|U187QCUHzDU at 6{>!t~9P7fq_0doH2`B&>DWIai3zy>Z<|WR13pC?v!71?z7eQY#cR&i2uzV}w4wg
+9P?_e{!yw5$bMBXFc8xRA4c<%Czy;NH+Z#jpjxZ)i*&HokGiM_)w!UAE!MJNmOUNTMxbIke@>31q5k4
+5Z7EHsqlO?M%KE!q`j4JH{VtZpv}y7c#vO9RQ&_o*&rTLBg+$TUd6hBvfCCy=UfH5Ho_<E+Yldg(;2(
+<zWz2TBZBQR~Vu<J@@=FwTQ_xL=7otM3ns;=s)T%*Y9GWANNntcc~vpCCvo_FA>g*Z>iwm*8l|n7aDc
+aBV;*^^E3G2!7k~f^XN+?pF7(b#SbPs*l}x`BVfTsv<OF#x(&^-M=_QTzH-D3uE^kYdkvNjDsL<Bf~C
+y?F`*r*B<8VcZKfqjB^6J3*FX_m+|CI5WY$F66X=R-Ba_lM{Nx at LM4!CZ!0#U{+mig{qXw@!=Bn5H3+
+jz)H~(U25u$4&?=#KtZ0_C&0g~gBKax3g*$IB^mJ~mUXB#Qrs at N3;}h<Jezn-PF0DrPr;h_ at r1o+W+~
+219G)c at mG+wQKN=5<^k4o?UC@}Q9A#B%F at lD+Ex^DGKl#DXXkX4M5r_f#%q1Os6P at qZj`9*?eg|Cgiz
+zl4$Jv%<6R_B7wSi0tNY_smRBBzIhxw6c0XB{^=2-YO1S$EjSI_8dk!WApDsXOqa0aA!l;QAYuoPB8B
+nXWwW8lfTvn$^%KBdFb_6OUD;l9<jcI%i6rR5cy`X;Zv at VSp#;5+h_ip-kRGtW#D`f=7V=Jpl3heh?E
+H2bjJM#DqM=_5TH8TVn;MQ+4%i5DxtR5CB~f$74Lzq0i&C0Y|^EA9{d+y3Jx>NErbWjUyO?@2}5tO0&
+zwr+uy5jglh-^T at t8bfjJ{@;{ZRm%{>44>jHDm!uQ)&HQ)+lWCNI=WM#U$obaL?{Y#Dp>!7Z;FEAji3
+SX{iG5CFoC=H^8?Q{wrMo$dxkKtM{N%FF`a!~2?XVwgcr9HnEvbSoFZ)e~rEIFeSdcFTCEb0ZoZ%w07
+v`pju`fiqzd|hVjA*rz7xD;{@n!84#HoK?e!OOzSWO4#6;skDI!U4>ENU~pgr3HC1f<ZLuj~#_oQ^Cy
+fnF!B)VY?5d%^!vHKfS|c|8>I^=&UdF?Ul)sLoJre#djv6;dq!l(B|I!a#9U)fJxLew*-{CW^dh6FuJ
+|9zoRYr at tXfbB<3%8<jjPO*o^F9h9OIiE3KXzPRw5w4+=Q`ED#~&V1PR;p#6RbGi`zDrB$Oap;mSc9E
+mX@%GI$Ed1WF<kVB4R==bfz6%%L{z@^u|818q!po90Y<~GMbXN%jhF9lD*J_(_TIp^&Fz0>#a$Usu@}
+-wC9=;`Hm5wZLp7Yl4X1Pk^>d<(_VI}^|KXM`cosBmNrW4k^Xz>P0U1eO`t$)XtewCNr^rWn87^RrBr
+ at 0q-m!oJ`OifpOEkJj<$_)T7V!)BNO+ha~=-~4|P)h>@6aWAK2mlEMt4KBt(}?N at 002D_000&M003}l
+a4%zTZE#_9FJE72ZfSI1UoLQYwOH*>+c+5ip1;Bhnv!fGg|Y$1iIaB6cH)F6f=%3MLYW&otwkC~w$oD
+Sw7>nH$4=U$Eo}R6e1O<~UVqPvALIM}ovHJjm?<@ci9F{@6HzvwyfoxyX{NFyb2t#P)P$CdR0TD;R5O
+nWZIl?-29FZo_q|-n8A;Q;HnrkuO2n*^$`Cr%vZxJD-8u#ZbAbXquc45-{nAVAIXRW6l61~XCRL)vQ!
+C8yCzG0G#XZlc<(Ws|$I=&aG7;q@$z+*}NlVT|X8v$HRJSzgde`Gm8LtevwB#R at lBy#UZOG)Tq9#F>p
+A@}eU?z)#XBMqi#7Hp!nq2_T4;vyK59-+^X05b26cuGmajl=#u;S>cYp~xIgH+Fn+R}^A^jR%QyOW42
+Z9d6)XZ!Nz{Yxw*Hw&pAH(0LSuD6W=WL4J01a}$F$%LC!8&-&M7_DswfTw85m(>pbtk at IeLYmNbynYm
+aml6wRoBCn(r8tyJNi;WME(*g{IF_=Aoh?!Ha$;Z+LIoE3|8dpUe~O&iK=D(>aB==g)%<18Uto-F3rT
+gwGm(pIQ`nCK<9TUHivk)=>xI8vg?>!@Rg&PM)?9;q8O^2~*I+fYC!QJ!ASvG&;+NEjId?n6Z-bfEg5
+lbsnO2VzEAsyG`eJl{XHV#igR#7o(<x2ZdH|b6j#wp4PfbOcOY++}36Em(wh2$yMDPs(T1VW)8Pq2j_
+crX7HbsI|%UWgJ<Avt^Mlh>(NuN?pjZq;S$0XR26GTo%-s4-R(G~+1<qW#jmO-{}tc-e&_ga?xMU)zh
+FtPig3w0;Edp)h2ObO$eWIROaDVBw-O`0aWgk8v-XvNf&-RDvu{e|V)=ybc}2DQo4Q$THH<vNu at 9Rod
+Nf5y*0Qh=gkFgOf%Vu{s~aU>is4exsNoU;AX0OHn&4Ny+=ZNVl1UecKfqOG#>Iw|rUG}kOY=hPm#ZEO
++HpeCh+QXu>Lq;{YZBgyAaANNlo6UxAloQmRkKvp;ZbD-E5u0Yx4u!p7_X=ssZK(J&wG^`N^`r1-33@
+W)t=5K>xSkjji?a1&sEg+|XbS5$-8%pwqfQn?jf(4^XO<t4XTljT!d~guK-@^m)`ZYP;RE#nQt3&5gw
+?T#Y(b$Vq8UDR>tauV=0z`=m<%Q&$loFta;Y2Q==4OQ`ANAUUsWFv48w at 7GOzSZYA%kjJ(E*GIgQ_ly
+!7oSe_TU!EYHcf3y*oNMIXF0S@^3Ks3?@v7e_oe%`oR&?%`$}5HV4{)GXrDb{Qc$MIB8k|f7y#9b~CD
+;%DP~L!(?J===@7Ek%TVjvhn6jQ2|YgjP6{alKUxlPGkPj);j`IjZ3&O2T&=1(Z#Bh2olmR7^T;vkE5
+%r(S6X#f}BBMrA}nUON)4nt5JG;F}l9`hy3eSE$2EJ at p8Z@Iqn?N8*VoiCEDQbiVV)O0ulz#)_H{$)u
+7WL(<!z4_qW%V*MFW7BW9dPDCjBA9?85eO0MWwm?boo8lBdLEI2|ym?VpVB(0g<;=`-}E6}w>XvD3XS
+ZlSifE#Z8L;$_cGLVfBPwAYKudS<Jd(3?-EEHD7CK&yia%yd;+ekzDDu}ZJAISm|wGTc#K;)eFdq$T#
+>>b%uc%^$8^DDU*MPVUniV&?vrES6Z<dsddo+uZ&hNE at 1saXD0K@{OmRlDl-gFPkRY^1*-m2J;P)$Re
+&B>ZKW6*c2%DNepr$+~oQVc9~}j_V18(8dEE4wHe<y5@&(PmWJ}>YOpW34{&#rhRQ`*h2`FG8&N%gKv
+W%vSzkIdZ&Xyw`e+g+RrbCXAfPN+I at g&50qt(bi(bc)WEdj<}TL^W_0P2%ia+MjFi}0X53Il4RxvBGz
+^T}n1ejTP}qTt1PvQ!K|)-E0u69M8Ijr6l37;h5RAj<ITIx?jj4v;P<4BD at J<SuIkjQ69G;wg-5&qpT
+KEz;vxA4PG5WL|9-s9I-Df(dN{7MK<?k0C?mh)k<b23ERjWrgG=C);Pw5h*&FCX{)`Nl2MKipXW1=Ns
+qu9P1YP`<83ebmv%Ltqs7J4ES&*8RwZsHoo<fI8<SIirfL)8STPV*p+Y`hi%o{S4^A+w1Z1B at t<WKN|
+`6rp74mR>VCqfw~5b+em7J_z+A=-J)U>QR&Pa~NC;5m at Pvz$FafcC&=JCu$0=oy_qq!4G3wkHdA at -6%
+PS)Bq8L;#<QFIJTDBl4vF19d++K9k~CH40qlgiMtkpmM_>IA~r?$joUF$AoXFVOkt#&WssGvx`d9keR
+f(wQPg7`{wU)x+M1pk#ph0t_a9J80|XQR000O82?eW2f}*9DO%(tDI9dPz7ytkOaA|NaV{dJ6VRSEKX
+=8L_Z*FF3XD)Dg?L2F9+sKjM^(!V)Tm)?zv3(!*qKYoXl_;AjnbMK8y<0NF0)Zik6$o$vP!jJd|NXjq
+9vA=vlCr&fyGc+kiv(tRdivcx4W6*^GRzqK^O&Ekw=9{ne976(HeV(&i;~46j2Et-#Pe|B2BDvek8G6
+$n}~OgPFTv<DSYvHz#hVU$<{nwg;^FRvCH~7f`;e!VF1sUJmqYjq-^H-cMo0~WH8 at PR%<U0XJHiPTY4
+%Nzvn4J!TBNF%@g*<{mwl)fjQ at ZY8oz<IeYW!)t_I!dG-1gn{C<0F!r`=<oy(`UDk~vHpDR*8}f{&_d
+F1jZ#04kbCdB7ZM}ng3g__Givt#fS)PWoP0oQHu!k&}=YTP%hhdJ02Z_H~@i+(M0Td$c#ap)Cr0XOT<
+B%T7CTDZbkq)?hz;cm#an1vzou*8_^l~D+H%sn0;Uo4JCwb_@?e&^_DGOuf!M5OW$TM03Cjy{Z0+c5p
+^{F%p*--4e3Kbw^oAo+LbKrJ)V;#K=;TL-=jzVIP8YTlgHseUkfN%_ecX^m0Fd)l%GmAnWxeF-dUKrz
+jAibtBECWEK=xItT>Sb&0hx5?yu!l6va~?~9Fa!-|f9wysKeAExZ~Yr~(I1^(b^Gr}tb29EK6Qt~?qJ
+;Sjo7FD_#GSe-gbu<Y<$he at A@M)y1pF4kY0!N2j^EGF8YJF01hYi-``yIdlx2v>r3{&H#~m_U%TJ;ul
+nO3S$A;3F8kv_Z!`jdAF#nS>wWAE#%%NsfK)L1zQ?Zm-S4k@?DBdDQ{nzi at 4Vl=!qqSO!`}Ir!GrVb!
+KnA&9{>tGVi(=_-M6^-5D|kp>c*#c-SOxeRvW^mMjx)mfIGV!UcYBo*CRsq!wB|u(H(aY>do*P5FK at 3
+UT^%ahtL4uF8n(m_pb*y9u^)C;cJHtdT+1#Z+nCD9!|Z+ at j$X64E!*X6FRIr?2mBG>knf92J>MkfCMO
+mo`6XdhslTu;m{kx&fj+l?q!(+?$JC=R%|+*Z}Lsbr&AWLP$oesvLpgkoQm&9NAkWhPfHNd2&{#=pK|
+pn+v=P7cFnURvBVk-#PpuW0f><r89pAt9_EpE$N%#bB>HFX=%{~zEV%5$-p>H4i?%9^xYPRkt at rYOrW
+5 at C)yqFmC(r-b>fnHW`{?K>;B$8GMPV=n-Hvl7Yo8u5xK;q9fatEg++V^&dKS(}iB at 7HUa1#?8Tsf%8
+{SLPBz0N?7~l!W%0|)xpd36sWzW(Ud&VTZlmiK4HcmJEh^!vj`S~XH$y&i at z%q=5zDhc>B#yTDJ>@=t
+EetSdrdSUk<>^-7NQ6`~B at w6olKXd8{GLZg{L$y at ob~Am?Lf>!>KNmk2>)*v`vyv&<;Zd`_PKc40i<$
+c2yO5ls7X)tZ63i~FewrwJCg&-6JZS9C3+W|cc*lB0QM~_Pp~uNLwpw}53yW95??HA!Lz=`Eq$CA$Y;
+E=Lt1kTVk?)t(r9}zQiLyfiuToGts27S)e<6u#x`Cwpep4hy+0yZ;oxFpGUD;#haY}me&l5tx*W92Df
+*2Rza*O&;ez^sGgmSR5ds={7=bQMcn`j1<bu)c`vNj~%WM<o-YnuM)f<2h{6HU|LAZzu1qrc~Mm0TyA
+OgsPAxYL at 5x5fR5I5@x0Kqx{C`=``0l?rtZ$elGBpW6?pfmO|Nt6t}hyIe0N>V7Kmjk~JcWL8tWda63
+(**pGm-A>V;)<RJb0u+D2CgfDh{uCH6Fdl-HmR2*yK)s-ER!f8Ux<$1&o^Eqwpxr80SW~d1x_y57-ER
+Qqzj;fgT#<(a(sN;RS1($4 at vR8bgNKwVaQRTk<$gw!<?_CQzzrmyu<GJ)=)X(4 at fe?aqWW*S;{t14uk
+QTYwpLD7&!#4m;sJxt{5*!EEhyO70&0tt2pnl45^8<i1{NJ^l-&ZtD$G0h6o(W3Wez00;Ur(=J>p77|
+=&J;!zuA(J2$SV-WlbB(Ael?eHqbk5Mk$7Ry4bxoZ!%C~4L-2yllH at PAEh#cnh=fjtFdI(W;2=VyZ?=
+1n}cPx&`fe>+TFC+nv&)js8Gn0g3H{t0Mav#*GygI=b=zT%^jWmQ}|)UYCee;d}{syrxe777&xk7qAm
+H!-p_?q5*f_NfyAb#eoARiWtFS7{VM`1UIGJLO1a(4iLadkC`64XQZF>?dwUne=xoEKCu%Qfw|Dh{#%
+Gn^;F%QJrYMiIh9aTn&ppoL>(<_J-r>O?N!*4F~1SJ8k{l`RmPJ)+xYy{4dPECokHkfBF;N%r<kp={|
+4&vDFr^K3xwl8UcOIo;#l(UbNwFOYryNx_Q~pZhd at zaMAmrdB&|V<MYH=rvJ9TW1--M#-Ai at s*E?}Tx
+aZmHOE?DtXu4q{;DypLXcYid_j-lZ{_hn1oRX3iL(_I3m-fX8JTT(g==6CTyz+B7p_e4qi`nb74!`fo
+ior!@nt$S(}^$+bFFehHVlz9v<)Cs(il0~Hn^mrO2qZ5AiGI)&*h?-v7QoCyoO?wPW at olLZ~y?J(?b!
+(5mtiq?I~pE3n!^j{4|Ym!K*sVCQD*D9oLf+bVWLMba}GLT=(!@krNJ)HSCBTN)=tat9%_E8|i&PrU^
+i8U$Ro4YcZuGX|)z7c{muq_%n$3oxWe28X_P2uQm&L6&{Gie5(Lr+V$%)sxqkCXAjJg_VXnlz!e}`3z
+~i&0H7 at f;&%~_U-G_Nog3Cam at P9xfe_8Pr~#J3vd}0R-6nJrd>wt9^8=c!49X>4t>c}&*yjwGMxfkLc
+vn|xi3W9P;n{V!Y!3V{6ZL19qgqf7#RM+bTE>5-jFAL61k?ZN~#ezlm<zkr<XTO$d at b+(|0VNp|c`*`
+sPXry=lN@#S|x$-0=!sF{VMb`kBGA;}0>_nv5FMv-B8PR`KwbQk=jM|J<%z9tTdlA|63Ggn&_tG}){(
+kfc|W@=!eX3Bj}m9RgT-2F?-?#M^b1(KIo<l$9hVY3!PZ*ao|Bw3DHRNy-21#AP==^fY(`uqB+D$BJs
+XpoZy8B at P&LH?LGs0LC>h(!76lHCjybieV*SH{pcLhe^zX&~dYxp at xJhh?cWT;QuJR<I&bmyE^W1Gv<
+W7FnhXuydTjWBx&Z{e$60c8cAs at tXGwEcXeA|t!G$UmE~<=!Gwmj&3u>;metuA7{=8)uf at QDVfgkLJ^
+fh*F{+Xc_<ONgCZ>$QZ7f(r&~Biyjyyb2pKWCo+enPO2rO&t<>5WgTsD$H4ArOcPz4W at 6C-rul#E~jz
+Nkf4Yugy#nDuQvB}nY?jnqHmoJNwn9LcrCX?bmwQKwdyO4=%+V8t@)k=8g+ji7U&efVM0)r6l>=V``|
+Dnh>;ej>?31V7iszdkXy<b-vcMcV!4NY~fR!bevG(o;HMZJ(l&!5#Ab>+OHsmDbUoqmtxFyKTYDZhC^
+kRiH3Ab)zXVL^5eD at wrvEOGTt2(W>TKR2CQ0I}~DAy{sPJ5a&`}Do_!hEvQt{QNgZGpu`iqcTk+x!yK
+_r?R-x}S*CR(hQpROS)Qz#(lyY1RRq9>5}7ZFejg8Wi}WS-k3=EZj=AT9_-soto-c621P)W4meX#vtH
+xyMWwc?x!&(?EN6~cJ5*n%=k%YnHb1W>NXOqvV*5bF>AI`)nzpDq78R9E8t1#Cuus}PVRnT->Ri>Y?b
+2PFf+~QQVIDyafDC})oWU>hFICqMow|A2^O})cJO{TwLxmn<@Z7ELq&hzI2Xo+lub2Vd3DFf`NB2_F#
+xmW^&sH!fZnG`g!SjU`QKOU}>L%nQDhNsy*e#m8Cm+Cwa<sf~CEBqjy){+}^D_-VFwmG+1x3b{Nsuuc
+|QdO&3=Bm`U3gK4`528}w8Rx1mF?>^+f!$3!^C1Ps{xRX%3+qZ}xC(w<8Ht*e)GAR`d;^4 at T|h5qAto
+hT(&@KU--8&kFJ&^$je~?|aZB}MZLt+afIKb<r4)6&-UQY1_5RdMHlX1Ng_wy6HD+fufW~sMpK at wdiz
+=#XJOL%X^dJB&ruE+6jDMV7^v}mwPy2_yuiG>{|L0AZ@~gzZb9R(xP(X`y>Z+ysk_z0=owU?#K&-%|Z
+rD#s+mn+NpGB+AT;E2mwLr*2*;J7fo6}f1vSH(m`<>OTVMRm|ovI?Yr*9_MRO7tqu<si3D`kIhQMJ&H
+oNq1$S6gxR&&12tA*Bf-ibmw24$L3a)gqKIjR4`p&&?UxH%bu|&S!NB+#&+IGd%;sR9k^3&KDg~XB9X
+?T<KZO6E<C{y=woi4ZK}&LZTb2-Wj%gNtx!3WXYD~0MqL|Y{6?!>M0Gr;>{C<2(Ok=6ck>yS{K9%Szf
+mh^6nlJVQQP4Vc+*oF)ST@@u>hLF_ut;7<H(h(9V!AV8mez5Ewj#{)f>$O_IDqbiCCl=pfkm{Ojq9P#
+pa4|Am~i?WYh^&|eX>g09^F24RK^Px&JRYZxb$eRK8kv=DYd5UY-q%%bZ at +)FKKUjSyTIvO+e+tW!M>
+<NRoN)$opa7`5BUaHy$20M`Y at l+IZz**v6aLYDDR6xoiRXlitDi at Q!K-!AQLTRgK+kC1=I8V1}I~Mwt
+1^Fp5tWjkLnT8WK;E$l50Z2y}5myfo3V;RC22bm(l`txjA?`j!EX0g2kqI%gQ6T8CQyTSK<|g53XXP$
+l>cCerQ?t>~UMwd_I#@t;vjT|k#RY@}8LyvpSVnIgK*n~*w>Cg1J5iK8U<S!^e32zaTj;YS4X~+uUQY
+GCab{r(RYp0Nqh>aQ^*g1j2wy95B_BBDV6-`)Q_-M2KDXvHRSIaCmN$M~vHgPR at UZB_5L*=>R;5<UfG
+M*UKo4A+E!E=@;rnUgR9O0FxkSAQ>4asFgmNk0`7-5Rkg=5~PZQP&zJ`#hcKelU0iYMbx9E5->4)w8^
+e)>WIM4w_h8tPnI%%?5EXCVs{GqHUFvc<;l4yLZ4qrGB<tKUCA($ArtSgk2$ANA6hozUdGDvIYl%<**
+q8HX+Q=qUCf9rf)^8sIel<zmJQ+^*No2-KTY?C)mN0eonY~6XC^fJIz(GY&EjWHrLEUZyj>aM)lgRQt
+?M|6;5K?{4nsOvT6JRk{}acNE9k9cDcI0k0Y#?kvE3}l>$%lpeP3bdpr*zd5WcLt-aWj3mf9__MEq6{
+t9CY(Zg at sxX6Xt4-ne&?ZhF{Qk8or;P=E`qlNoY+Iv0y)0pd`<9ZecC};uy=BnkVtuq6HB|JmquN;ju
+*|C7RlpnJ;}%SG9O4hH)}04klSQ7c)v;-s_H$47VRhwVP}k at K5&aaI=ibe;+#fzSFsoD*gb9 at J&$-y?
+~uign%N9H-mJ`Y1}CYn&698kA)xUZc at ZVa9rKi-p)P=V-c-3$m*@v^LiU#u22JOJrAs4t8%}OdX}eUu
+)0^F0A}I-&i*2}ZV1nFTm(g2quAM2?3hTUsx8J6C at jESB*pgO}Ka)R84BLe!Ipr;EOBS9Pvtf=jwwXY
+1*SOKTXGiZG#v9rXzM&=}4h~^}&4!_Go^1_Nj(|ICn`~H?Cu^}zkkDxf;H$im1=73Zf#37ABcl~rC1^
+H{9YjAT-)w=lPLmnT-;&dOAZO%d^wwk?=*|i{x~$`Z_6!!;Z>A)Z&sc-syoHbU;%hipE0pxCS?a_9R~
+2d%9S7IrQE$9&mXR)4{6u9io)>xx>{vMy?+ at F?QaeDkkh2$iIU!JxZ7CK7voVB*TZ(>>OBBfn5Wm4P-
+tV at 6C&^q!NEgpiupM5e&cJ9)xn-azBOTN=P-NNS)p7Iew0i7|4FXMPl(N4-^ZXVEPf&DFZLxoy)E23a
+F|{o%w6fX$CW!8gs5YhJRqe4OgJfYa?C4n5pjyW&ipLk#bK7eigba#;Eh&^gzp?gG_=L3dVS@{7yFi-
+GS9wv-u-Vul$H0S5#n7 at -6S_6F7e5N4;&?v^D3aGd@}VH`+OM_Lp*i&W02thhp8(aQt}cp?fPHIHsTE
+7AHBTbupDC&MTCUdX*+^1bN!My%g8JwH3 at L8RHe4g8l<rci6in$5xV=3XwKCp;+9-->U!{s)O<Y;%G3
+kZ3fLN{8K2nLzmZQd|HkBZd#K|Oe#5W8!<oz<Cx`D2!P^nIjSM*Xz9xh*QTA^1l8mqNd%cFq1fahhwL
+s#pCtQ1df=M$>|I>gEBaxR|Uu31!_8v$rp&{SRTFiF!V@;gPX at D4Tu0QYMe1j4Bw9ztbffiiiEBO0Kv
+`ZD<?2#vXTfyV((+{_8|#B#+ at MT92N>__&sa|l6TeGXA0?=Icn+0rNH|4MCr3Z16bKH7T`HSDlQchnt
+Lg=FlK+Q(XzdhH1tVM~-3fs2$s)}drxRCp+Xk}ct-lY%P2!Ytd&Xbp!@>C}GW$bApla=LvdzBbeWTDg
+~kF>T}>UX7uyQVR)VQdJjy#xS|94z)D?KP?L0r#oVyr&irfC90xaufEGh=e>*=y&vD~VZ+J`qh*rqW`
+x2>57rdd-IetrUx at NHyGj;&kOpS}lAj%fvl`osvL4Z-j)bdz_N_W+YtpUb2f4DPq4tnyo+5dO+_|?pA
+d;^~@uF-F>(USGiTI}!!2_%nNjt4knY%Z7|8|l4?x<am?iMMrBIb)5!bVE+G{kSs^l$d(@||_C07ihU
+K9v9nXDHvyx4aUl0qyTLLv(B*oRD)PqEwC3Dv~@T8dWMOLnx7=cbMfARz{<`f<xh`tUDbPj4qp7F|9s
+8mTCaYcSe|JGylt9E*e!9-mu)uS~$8|C9y1=$%e%WImOM6*++XOT7m7aaNY0}#j1LwNIpEw<cf$Q)nG
+70iIe!HQJu={uS-=zv>jcQ`$br?=TH$ACaR%F87+!F8P%s7`qvcAp<0qE6~)`rNuvmf!oHHCWm#DEcQ
+DlR<)Yu&QYh7WsdcNSRplM+>B_M#-`IjvvkGc)Z51qelsv2uLMuxC2a2qjUsYsqPoAYq)+#!HZC at 3KC
+beH(uqfFM^(wzlqpHXzf%Scx>=%>v$-fC+f40$>%Cu&p`Xt&OPS?t5dqLGhC at Q)^t at Jz!^t&qOGCQfh
+y&`{dv>2!=FZv~xL*8F0eq*P+paNFZcVJ8Z2T)4`1QY-O00;mH1*=Hg7uYQz1^@sK5C8xf0001RX>c!
+NZ*6d4bT4mmWMy(?WMpY$bS`jtwO4IV<3<qvo?kHqp>wWodfcb>Bu+JnxmXwM$T3F|LXojIWQ${)-3^
+dd{qLRGb^MZqt5m5LO5%BWX6BjQ+2t69MY$3DVX44M`tb3?hhHI#H>)B~Va$}``2!QZ<K8h$nOJctd6
+5H`uw;VWZ{R`1xnije3&9u^3rLo+cwjcD0^)oFB@?p9(Yv@;G0zbVVn{F~*{UT1$zq{iV!_Zng;>fW;
+V~jYS|sZg%T=r>;(}*PB8;V$431`%&rx3oN?Du%&w+GX6})h at EY=DHlS=S}P;3O?d6KPD%42Jg at fEM4
+5P;@F66{)H9h9pLt0LtK`esxd!j$X#jLW4BDJS^*wL)7-!i44Iht>RC2#_qx2!k_eDsD0)7^)c~l|-$
+o$kMT2mc^=D4^p*QiyVV8?UNQr9bsV9KUktjMh=T2%Ze8&Fu@*js!M*-4WuVRi}=2HX1Xxb_q<S;waJ
+A#QZ|jQRB{<(8TYILF&ttV$a&nVPf#vW;fmnckg^au_-@^UCYiAdv*04Sc0w1t8BD|An>TVtaOBMJ{m
+6!EFB%6|5uior_|Xjn7vT6e at YVB2c7@{pJ`LU341y56%jv{(M>cr=aB?;B{4a2h-hL3l#Jlt&gpL9ow
+gU9rS%reYmu@&5qtH3`CSG)7!-W_5gnWU}4osae@`hIvCxq!$I1OelrZTGB{lNG9ix4Bam#!ZTFawl<
+`wd at UHg+Zx9oD(RdP1G+Fqqzi-j{JyA&i5`$VJt;i at 7@I6W4^rVuusQyR>2CTsmJ|?HeFgsLf2K6~y(
+})e4O5;NLLv0-p*S27VOctBuu%Q4MhI&0HIt(3 at e}6~sjtU?`#-{Q?bz-o9(Fs2$y|p$WZT&FJTrN}a
+^WbtZ^ABZ#)kpoeCQEPiCae8Tnh6!&@yfs6f0GBLt^3VcN?2k7 at Df8}|vmt;5>AP_0eoRs8NiXV1k(*
+M-!QRI{@U_Qq&qvmr9x8A~r_c)Fue!YKuNhR7r_3#B`EVoG8htF`@Xy_3!mkgp!$y^}{VZCFoCGIg?^
+0C5UAQhYfy6ORi=nsX0lk^>&G?@JwPl-(zoDv(%=PXZaF?&r|slZXyEYVR9cqJK&h1Fnd;krz5Vp`ow
+8$yf^S+>e=a)2{1pSO2SIw<%NC4Q0PD8o1XaaZSpLkA1zIm at tvDa{;#^9ZNk2B&HMh&17FRJ*}eafxC
+6`WtqiV|Zj6`01z5aEm`|C<S}AA!o0uNr^f>XqD1#xMYeewyJxsL7wAm&AJVzC^*q*Y>{D?Uqixy-q4
+e*g)l_jp5E<gZa?1D$_4|=rE*AO$|6%kWVfpC7SOIUW!bJ-tH28DkWp>3LvJV9L0Obm$C?aHZDd at F>B
+Uq^2A!R!n5Y7`5_^-`7ONi{PF|LH)*BrjM$|7f==N&ES(X~=KkT;yA*-&mbHh~ecxCB-%kT7m$nUh3A
+97D!t9pj>PMt+!cl}bV{e^30)mOHuMpbGqJF(bMer#2$&AWaZhS0kZv at y<L%aGw`Ky7Y~8kR|R$cuV@
+*h4SiEwg)zOE87knbuP8HY;5xY`;~+k)#cE`)F(2+sC^*J$@dyySm|9t;)^<w-5Cgx68ko at LZ}nv5IK
+Vv5-}@bb;C(#d{#=f@!qbuhDk8Xy~viSAFEo=QdcnWE(HKwc{R#Z}~KgBFl1@%gUK1b$g`ZEJBZXol&
+{<2|H-S+RB_c9SbAUT5NVlh3~z3MaYiIh<fejHcBno>I4<BtJcEW;sAaluB{HnG1BfDEDsE`x3{68^W
+BNG`g9Z6=_LNj;}tGxd#`=uaw5L(WO}S~wEFGCofhHY#&)6FE&ff*Rt*3DNoyp!gz06HWO$1pM&kR7R
+eSS{ZUXJIhGtkMTgzYXK^zFU3%9;qe$wq>Xg2#!vT2)n_Eeu<1^(wCy7Y5NJ0Z>!W@)Y6z8UtrL91Jy
+t{r|j(=WS_JDFU>IOsY`Dh)UF6V(QP^3rPeqDrxD%|0&XP*UutebslvRth=>_SiB<{T@$k5_9$@i51F
+r9mCm~G3osSP)h>@6aWAK2mlEMt4OLEXS_iG002h-000&M003}la4&6dWMyn~FJE72ZfSI1UoLQYODo
+FHRVc_T(96wFNzEzN%gjqjtx(9!Eyyn_QSbzDbQA(A13bC7xZ>jzb8_P26>JrvmB2DeItof4Ii*-G08
+mQ<1QY-O00;mH1*=GCPBLxb0002z0RR9K0001RX>c!XZ)9a`b1!LbWMz0RaCv=DL5{*O47~Rhxiv_u<
+c`DxxbcIiwCUDW8b`4~@O$D-K~#wKDe=sB>=`pIDnT;t>f?af5ZugyS5M}WLx8h_C1GZjx=dbmq-xv!
+{hOxgLr0{Jaqu^d=h^qX+c&Dz;78>gL}2GM`7r*7bOoiPCnoA3z_uMd2ka~IauYJ80IX%u%Gv6uY#Y3
+*Q=bNou?*lzw-s)8TT!|v_$m?bLjcLmgz;aIEi5anqJ9PP&Z?Qn^DUI@`I6(u*)u}aPoGs(!av<l$Fe
+|8znz#9?X4B}auiP(4d!247I*+qO9KQH0000800{-FNB{r;00IC20000002%-Q0B~t=FK=*Va$$67Z*
+FrhUtei%X>?y-E^v7R08mQ<1QY-O00;mH1*=FHKSQEZ1ONcg4*&od0001RX>c!ZaAk5~bZKvHb1!CcW
+o3G0E^v9ZS4)fQHWc3HSBM!dwjuVS%Rsgl3YSZ{Z8seTq1eZXh$49;d6JpZ|K20{B`3C%mez|zmcH|T
+=(yDCL?|t5TWg?{@KdF<C2VJus4dXueYI-$h1&1A+;^`U`jd)RtI{#UMW*4c<MgvMmI?6#-fFJl1kw(
+$+Hzq!;2tdH4HybqaAP&!Awo$rP|$afh0+~Ob=*@8M%6lpTU1uD{K%ZXV at WxaO7ffu{s~mF6B at B{hJh
+yA&cY1U`R4ax>M at ii2rHl@r3UzfctzSr52kIuD+%lVq~x-og3F_64v;xYrAmsAcB3|+!*_G!6<V~1%M
+~jW%xYojdv2~yI7W(DD7IgjFv0%$03c}2@&jB^I3e3ONj9sol4yPKf?j at kU3GYRVm3b@!m(QUZC(cIZ
+bsaDw1zBKr-}=R2W*lVU^+iEYzn9_S|Ia}UJI1lsD?VYL?B#_L!F(KK4O%p0Xs-Wg&aCNFhfsZS-~ue
+qig<|z1S!jsHSwt;9_wj9)Ud2 at pqZp@ppJIb5ch1NpF)wIGYA<kBo?(VZYx-4&e^(sLCq05xbYiBz$l
+X1&Pv<d@&LE;;~IYo9bh}<}eI@{&f?Dg(8iE<Q|sm8y7A;ZD#&6qM?TRRS;g+inhKheAVg`WYCB**D$
+;h<3PKe^`g`J!y&>W=e?lR%yo at dUjuJ_!34cxQ1Q&|fhd#^2geCv#=&Wc#WPNUHo)KlGL2}Z#Zp<1%v
+_wRIKiTxb!~{lf2OT*ip9}$v`7~R1<zy=)W6F~NFEW|3%jkj at QG3#t?@Sv{1h!GOO*c6kT7v(A11BkC
+$H|(lnsrmp412YE(LEWkN_ at et;Jn}w9;@NWOZ$@x2FeX?pum16*fnc4(a-!_9^x|%>wO{B)QEf_cYDJ
+hfTN1GKtHTv|QHhRS`azm)B8`Qt&x8agaj6E!zpWZrS(PO{3l8OK0o<UVhrVW=m!OUa6095?H=tb$ia
+4Xco~nnwH`i(56w{j!R9K>iEtVh+{Gz=Wu=q*7F4YSkW!!q2Z(vtfvWXJuvU%2mIn7|JEn}pNUgR-}P
+eJ-3>D~`=K-AvQ+bSJ^hMJw!#6ZNx>cD4DUX|ZDhQhT;PC(N;AB)EqR*fb5=E$b9;Afa3FY^_d$3;JQ
+~}_Ey9b06$SC5&o6#%hwtblVimCmAiw|k=9cVT at nXRq#BxK<OiOf5G7X%{z_yF at vGHES>veRiF9xiYx
+nN<CyTo1DzDF{YfNozCoT5;93|RBgg26OPb~gI8gV=u at wE2Q;x<9gu$K%e(cdyCv)lh&SOXNfKcyVKo
+M$gaWH_V4p38Bue0)klpBM%w~<`EQR_d%jDDGq_{$J=H&8D{2CCl`Bz-->W0ex!Hy&P0vFf3hY=z at e9
+&b_FAs4Y_zjGE@*hAH$mz)9mKsbL2`-m~`3aMyYWirUMW-{BKZ80|XQR000O82?eW2Txrr7fB*mh6af
+GL6951JaA|Naa%FKZUtei%X>?y-E^v8ejzJ2<APhzKo+7xG-e3+e+s<+*!GQ>Z);5XvABzZ<X7`i#^M
+Bxy0WnmqOo$NkQCPwMq@=2ZT^kcFZecnx?xH at WLB6|O>8z0{)2<UMq=TD)52>5AOpXu}4a?zK2zdq#V
+hd|MU+^{1#@_#0ciYINpAD_+-e*9&Y~~M8O9KQH0000800{-FNQ8jw>1hoB0GKWS022TJ0B~t=FLGsZ
+FLGsZUuJ1+WiD`e<r-^q+_v%i{R)iS%pH>x8z&#qxmMGe#PUR)v8CGTxHGmxLnKbeibpU2sna#dfA8+
+%L4Xg%_H_ECH;GIFyNlh$zOdlQ$;slC__-^U*o(T=Y+F`>HC*YkzFnNa>|(3ro at Lp#Yda;fjFtOFs+R
+E^Evv2-nR#C<?6}nKNeTC)ca?bXFGmj{n--Vya0jkxSXbLco3cr>dr=osrMi4b_wruov{O}8-Z(Z0pK
+;C1aAxSuqdPp1vlVK~D}Z*(1455k$U|L8UO0qX(PpTeESGf)s_G$?_!<At%38O)svN?Fc at 4DNqlkxGG
+;Jws&(A8{h3Bx&6$)~$lvGKN*R^G((?T>#<Q(xG`YVCb6&LkY**yLFjnSjWb5QxdkY?G%BFlg|*v>Qd
+c1cRhRKUUV{bKR at hab;hoM*4j0Y-^5m-`0zTB+qvt6keRzv3VLE9xZKEY}Efkt}|=eDUJ^<@E&C>Zf1
+d>Ex>?>6d?4CP4ikS67#>uFs!kmsi&pmoHx<CkqC at o=d<6B`RJ5N9*C7D9V=KRAMv{$}yU(CG1ln9!3
+*1nt>IKX0|YuRb_oQ!NUV^m(8Psisc~#D4}XTH;wx+3j+Lp6p^mhd^^^KN1vJRVBZfrAto1|pXAknA2
+ksDciBu~-jp?0$I*<etK-}pnDoS$%!Sq&7(BSKsPp5 at KD4UStthgc)a{%-WIL{R0&u~!pD;VgTFGuO;
+At%id<l(bY@=Y-f1k2b>-w2}AF*&-$s0aDjhtD&+MQs_Lg;qM!1BR~**&j1F~dvt?ELjLG9*_?idbwb
+6_c#2*(5wHu_(lrjU9f4eq8gtSTnSDq0U~)8eYJEh0ZXL*a6G4c_Tq4ej0WSpgaxd#b?hk;I0{2RhIL
+7CkQ6l5GBYrS0<iE`(Tn1uM2i8MO92hRz at 38gR!IwqO<`C`JOqUHaK?0+Z_Y-fTJ?G9j}nan5cw}5$D
+2EM>Gt><nZYg&+quHcutTJa<4QXaH+~$*bms9T$QA};p!2t)vsAOuSz!%0a^WSCb at H&D}`L}+5ir?bK
+3#<7h49-16yKqKB&H*H;PxFH=)2XdF}W6apeWuyBV=Zlj$4$`vXF_ou_}xt&@$FnxScI`Zak8rg432O
+j=w;#&<Gd(h1v_nuL1l7%teII3A=b7+1F)f^FDIOlWBtSoY(IF{+GA8IwP_+^`<#+37tgaGw5g?Y+bP
+y9kzm at CIO_?)I<*ghU$wS9THaeij_P9Z at nsxDjeiFX;U}olUrBSqVvmD4W2FU at QEy4!Dj88b6qIbpH$
+Gb79U28u|Ojkn-W8e at uGyg3KTaO6erpL^Ms1fH at cJ9#Nx at JFlCnY}d9dTvM?5mvo9W?@B-gT!VucB?B
+C9rCJPJt0kMlFz##x>>gi7E;H%%fyYOV5g7*lgR2WCP^yuAf>|Y?_m->n>}fK_M42)J*N;!YmAAE2Xx
+n?^N{<5TyRre#yA=-sTwtok_(*yEyx*Kpv&5OSG&ZUzPYn{%F#SxR4|7(Kp$x}h2N+ta!NwxXe`eP^h
++a8I3)NkP>51h^K*e6){*lZRt8?p<eXUB#sVNAIOlE6S3xPhjzOFG6w`5)1_&`7bv9QYO>l=jK at q5gl
+Ol-FzZ;2XLKpu|=lXZeIcp!EpK%L9Rlt-<N*TJeOyQKW!R-C5F_WVed7HEV#@TO~#wu$;=ZN;>pg=Dq
+-EP08Vk@*pMf&WK2r<xDACu$QCc<y1>VaBqK;yRZ1U;<?WmJ&MlidXGUcDGQHbP9yb=_rVjkT at 7&G}B
+#!2RBh9W=HUNiQts%3LG+<X=EIk%tXS6e1AQg?<Z2Z4@^c$RGz6=+Xq3?lI6zPyfM&cpsKPe%-LM6Oh
+5qV=b#sj*@(td%&2xWGez$Jv_GQ(68fzx8EmoUz4!_HVD$jWV$WO3(Mnby*r5as!X_GK3s!VgW4nfjB
+j8tz at nP9Xy4Is^bq0#`fe&9$c5wW=jArcw#ks`SJ4c<~3x(kcPLf;6{=!z at tl4*K_H7c1bfrqEN_4_+
+((lr5*QTpNQ3m~^5WE8Mpv3L!GM9ybECB}yp*@M1t>7(%lNBJWmR-C3)6y^o)8JlNzdNSBLNQjfut_<
+qfDG8E)0-_%o)~9Q;EkBI(LTX9Q18TG1BIo}CRrcSVbSFmn!$ghDR at Yh><iXcSj*FViK+`KRRJ*?#?^
+8re|U~ebzqZt5KP>5xNYoJUus#Av3RAWZYbNM9DwB<g4m#h(WCp>xJ(J#96OQUx&BdRoW&d&SH70Q4M
+_rX0B<qTFLXuTU<4T+V;vHfOAh>u{qkE>Qqk#g?%YV{%$R);%b_4^X_ggb-ewuasc7Ua!o82N2kaOSq
+u?Q;$D2F+rD!vzfQZ)U9dck_>**3Rt^(W^pSg$r=o>H|*Al_=@a*6X53;arT#c+xRK`~N-j at EaS)mWC
+xeh3VqeFZjV1Hltj@?-Qu_SN5ejk->!##<8V{(5&A<ly5^~7dH<UV?jY&Y3Osp*ov-==6 at Dl-_Q)6F0
+V#2B$hpiyB!bWRXLg6<+%!(JAIzq7%1;|@MfKVb7?$YaqEL?1~_4ahjuA%IFnLJDKp5e`N69pqFCuJW
+C4G9 at u@Pq4`2)R>_|m&O1F`&izaB%v7`+3)7W2|NFIJAfpDc9w%oX4%JxWp~`XE4yr<PLKw(>_{R{eN
+v*&kVfhhpHh;-y%eQFVS4>di*<eZ>~h22?2g212d4ZX at Hohh5cF+M{pGi0`GG;*PM0SKQB{BSgnZdH(
+NmdZ+qVfGZv)J^_{iQqCaSuppdDcNo^1vg9W_Gb6eAdRT~8_XVhL!tg~IT_RWa at 7wu9U+Fx_Duc(5IH
+>ub?kZAHfcT5MRyy7l85fLK6xXO`kaygm3kIXxxpQ-_UWLj^3bBWbRY%t6AJ#>!kJp+Zl_<mik+SAi*
+e)(NaN@*S^l at n)^IeU3)zvX$zHhx=B7wjn^bV3JexDharXnBw)(p4QTn at riu$hARfMVSKE)@P_5{v<H
+7bU4s+iS{;3!1}Er&QvW9!>}rVb<+c>X=jpG<|NqjSKe5JYv!_TutLY9WLU=!-<*(x~-%`4tB-(=wiv
+s-h*B9G8oL}223orUslgHa+#EQE`MNY6X_z3C7@(eCd_3sctcu^OtN!&4u{jKdVGe5uh=Zo_Vn#4hNk
+Q~6~;KWR(bSFf^fO3B4y0%(&Di;F^b}m at Lb!s5z<LD`kf^p>#F8ndKC*bRWR!-e at r4cywLR?bm*Bn-D
+n2e!L2ucW7HMn<vqw(Lqibw_o3{zPvG3RT#-WXOSc9pf^Dkgxcx3J=&)KD!<l1#=&K_}uQ{FGVrYDnS
+Ci)Jz4$C&|ym`S_p69YiNvVv>M+)<s|6Pdn;o}@enJV!jdyPl?~MUJ1|n4;DD!AOa#lP^!!jIO{LJSJ
+2c;j2HRM at uEP13%ZF@(u6r5daD!vUz*Kgmzog3EQ3b>ELLttW(C`*tYC}!|4Hl%@;t#rR^-&{_CG4>|
+?B{bj1NAo|;oUHMx8 at m8(0UOx1MQmHCe9^;{~|HJD3oj%KwqYDKp4PEgwe1+cxVC9};gTEoYvzC~h?-
+fqk|wXkr6G7U{dr5X*TboZjM5w}{NE)(XE;t80Ex0-h0k>eX_!<stLi(SuuF(I4P*U^m&2x&YQDZshG
+zxOwZ#tfns?Iu#*D|ho{PX?$7*FO$|muY=RnEoi?HaiXb$SYoeF^a0OmS?Y87Qr at TTb@HMFUdK_w+df
+P_pAJVMMRF)5hAj~YTkE89MY=Sv~7hV*9OKa(f1F&Ke`@;7nu6H5Du|JP<yQjyuk+Z20w8wa!|anWT=
+;iymlbLp=SPbF=NyI3l5bb;guHEcFp$sHn1skSw8<!*$TmfEg}|ux0mQHLNhYs)>fu(5xvd)4W_kgv4
+X*(z#z@?-O at Cu(Yqn)-j}j77iMf_B*bH14f}?%*|p={6=VXj;2IEdZSZnJYx$iZwIW4RkoeTBw6VuH3
+^b~Q_(2ibb%w*cgjyVEst*RAbi;0&1hg#3ZJqtyI}--_PvcT3uJT<NW&;Wz1Ln*G$}fmQkQ}tv6GcPw
+eHJ5pR2CH3YDB;a3IPG!2w#SrIBksAb~7#_^%ol9&z!v{R1Q(d1|dgij6B{7_ZtVtezDP3JrYvwZp}+
+MZ7jjtpldePNs0-vF(%-HM8&OXx|F8byTz=^KS_yp1=9zDV^IMG9MpVJ-104c`2jANS|5JohCdGeuTg
+~1zUsn$Cc(tMX^+MeVmJFFud%xv*uCy<R?DTqN``QOUZZkvyoYlpVHEH?Uo8xj0Knm;G<g<-JdRXO!v
+g-4NG`GJ$993)l9#d-8+$s1SvN_IQ!JA(`9jL5^Z5R>XEEs6+rfTC3o+ZjFGE>-4LKg7&vbjhSnvK at k
+KnuMxB{*C{-)pz#I%H6hg7_M`aX#d%EPZo#vh0L2T)4`1QY-O00;mH1*=FlOF9TVEdT%yvH$=U0001R
+X>c!cWpOWZWpQ6=ZgX^DY-}!YdF6d;cihIY;CKBBEOoiSL^IH16YsfnCXTNqB|2BObtLP0cPR$O%=D1
+B!~h6 at Aw_5N-?tw9?#6KFIA`~q#YyBL&|TeKU0q$TuHN?TE-8xbe%$w>D3WT|wf&fstD&v;qbT_AM~~
+$Dy1l%tnoIR(JE&j1P``$&{aDrduRC326uWL))w<x=mus;q*VpRBZP_;fTvzzH;_{ES*vU;bj0ky14C
+r;+Y^zJ}dyfCALhGxtxfDg;wj&o4yRxeDuIvZVt3t1Z*u0}RvaPP_^5RA`n^u?Ut}lyT4DG&Oi(#G&)
+#sonKwV##h#%d>POPhKCHmn&;e1#2*HA=N`j-AYRG}At-B-QXiDuNb-ZVF5U2Wc*PxHk3;}AFptLw69
+n`#ZPeilVj?!=**H_+{>ZB*U=;6K9}fUSJj-U!nQO<X5&u22j$Zm)!>tyx&NyRIBnwWb`a8&M2nKTj^
+j2tPJ;wVEeCzWMIu_dk9x)i&*IQ at 7<tRjh_$-`Dd5{wc<`0FYPn1pmdq=nIr6`}GxqC!*7!#OJl>Mi`
+dveD)}T=S?$=WnGu}=~dsi(4~(+zW&QcGXtt_*JT9Ks%nbvZl3h}2I;@pHyhCxH&s9G%UU!y^W@!|cg
+4$BZ(sfJs`&Qn_y7LteewFu+gIOx{q3tc)!qXdotB&_<yK&Qbai<r$KLP8UWj>84%hUi5T9ZF0Ab^T+
+;_#M>Io-mK&x8NI|XViWV1sx0vPoM|0<Y1aFvM5%c8CtZi4FqW!1&7Uv+&83kk~fqTCdt_&gHc=gI5x
+TD+!T#SVTJt9?~(xIdy9kW1-)APLA0icKMjah^17zhnC4v2y2z0?}V1nmjz^SLJYJX!FnXmtSThx?b?
+~se<nX()8v{^RDXt^+#r2bLZ{zXY#cVP4ZDqo-pIh2ptRx4r1JQW82mPBSO{q at al(;?|%6H`?nv84}X
+61tzT_lse)}MU|PDWX>6VX90dOlq$csFifa;n2dMiXEWUBG))<1H<~^-g^#zAs&>NafnBE_GK|jI~1I
+JyeEhLA at drR-Kg7{2Pz{Egr`*Li787?j6nSW3}^Fo)%uf^SvL7hh%u}zRCR2@(;>?%Ws^FBKx8rcD)U
+I33B*H>Ae{w2$w%(74C=YRQhaq;BS#q3{FW&|@T&Gn(mcWoo+O|?yS3<)1vDotDHa=ZMpZ}(mHe5T6;
+-(E=A^&k#F!WWO|a}RUgH(rUkgbU+c*X1xM{$ug at tX=)5SdTDpUZsc at SRd6`6xkr^Ev~h{&Vl#t#8BY
+;!8S(w8Lp@$ju;x*R3k3-<?9l<JJ;RS4=!g}wj2sr;Id at 0?>6NqmOu3SShemBIXRF77f9ruCm~fJZ9w
+IXg4Hs^<*y+yCa`t6z7i4u>?c3~Wz~!fVrCGHBhNLKGc!*xv(-S<-mFDNsKI>-2??0+c-M)+0)x-k-<
+<`$fr<dvo(6a`bBgg664|0dXwa#4$Z_gn>36^w5Pnz;pK`M)cEcq!e)0w-v-Wy`*|`=;Nu-k}FI!}4V
+?wMw`RXKqB5G(ZU8b^`q--|8JVE+v?y^=jo at _w~;=lCTo88-^CE%7}B{XPV7rF(1-L?B<C(0&SF5?}u
+mrA?|Ek5R3<o6 at 2lXW%=r>Cq25pLF56#9vrqQsK0&XV+WNIx~F!%1?QFrCO=%-rT&N<$W_maJ2P2?qX
+kUz=qKU(FwWAw}m at Nd4g!GK(6ysQ$xS5ptnJ5%tsSXJIWfC}sWSmP3w!4dL&$uYkFibs=Bkf85f{G~g
+5ea6c+Zc&Ye<*CUiCs%FaqoXw^2d7S)k1w?n%)|(+2q0f%Up1-VcWv}+MgEObZ)iz=sYq~9P at S&_xJh
+ at BC8_*gMM;>1pfT9N2m^Q`g?m&NjmF}R-Tvuxl`EM&2J;><*74#D&0Fj)dK%ND3!*vU)8}?M-{$2KW2
+}>DDQuXkUDx49>LNFf(=*HM411xkwgTAcWRaryVKzM?ecSuI^lMijUYWMZVf_7Ejh-4*1ldNGDV0*}u
+Z(vJXw><)rHC0c6os3uQCii+=Z3Ix`fiB~A#E2JqA;_*k+j3Xic<AJ}0E~ZF;6P+T1Q676JHq at 7`!x!
+>+kKtb+JOsDekrK1*Z>wo+<KB((ryzizIn5sWXQC;b{HxgPT$rwa>|)E3afU|9JZivQzo^ztj21GgWj
+|Yq&(Oo7j3gJ0wf60 at c$0PO#rt at M1GlD;6Pc2=}u5TNQ{2K`kQ{?O`dFqR5abpGNBFL8_6I at 86o{6US
+uqLR2L#Nz>G_(cuOUF&`vCW;&zn$?eA_4EzzLtrhXqw37|`W^2>zV9$59<5*4ON;(>XzBZa4AspTjx@
+kbIAd0l9U5ciZq5qh?+2P5+po_Hu_E2vfO>#+c-e at Y;u=b#W5%4`!*4oGrZ<v?}mvr;+U;ufRJpe8|T
+zLJ*<&`A0o*Z_&xJrIf>yep$QNU+B22#f$21jMo*2jrt!ib~E|>WM?n{%ctrGWcz&34x5`)FTqrpJCs
+?4Zj{T9^ixwZ+^zmt7ZEM8J%T&#3%JMR>GPc^D|aZ6NCB at E2Jo7ddbCV*_34co;|WB%Ab5GjUrZEqyu
+J+%;wdy at lPrl6uxh10S-ONqBZ7E+k+LK2kAT~Cnw*~mI)F}6VViTDV4HUw^!BrD%n++S0iqDr8R2Hm}
+s_eXn2HX(SDJVeFAtPXwkS97$EFDAK$;t?e08i5tC+yW;vpEZ*{R`SfF;aOwuot^uUVp%BFS;);CaXu
+pzfD55-8N_;)^Zbv0(D>O6Tqi?nD-u%u6Ro?-&cBQ?q*p{8S?I6KwU0E2?qSKVc=eO5o5;!>JciYMC7
+h+nA}<!Ye6X*LWbDdW3cbPOoR&8UP!jE6oS7;rZ?O+;)yK9=<mssZRX>t?9qMt7dfQ at aU;K*$n at hUMq
+!Y^F>sUTZj~q0JOpjq9=xQcdwWd8yanX|GtC)momQ;nZ4`NvK+DSXg)4?wd`HdM#P{W934P+MX`Ugbu
+^>tR6Mbx@}gE;zDB1Ox0vbYMzXSxpWpyBP+G}9iYoGkQiPC0yD|}=`<iL3}UZfe3LaLof2P?Ukj7A9y
++E2%HU|ePS{9J=5U}+C~dDX1n6Szaq?%Nc+>$zP0kYnfb4nj*9un72iRYbcPx3>DcOX2SOEg3G3(P$`
+KSCTaC<6^VnR4e_OPOuu*Z5Y)1iiFanC#gd(4|6jVL-8AU-M)c9APC**eWlD3X|wt_|C!TApMPqJpnw
+kqH~%$?33MN;45PkgNR_e at pj-zeZw)E>M>QQzZfhC4!XG%S+fi%S)u^oJP<vWgt<aB>-ANJt6|_wgSa
+zB~bc6c_7_4*s)C-RXN--5o*xvqMEh|v$O#id;J0S%|Ho<`u&4cFCz#CwrrAK at gHMdmj69YK=sAZ2gs
+iDxL_O;Ne at V$whcM$>T)g6b|m^Vc_J&%0*j(An6l9y+LtzeYk5K!l>O1uJJ5PJ_L=$`?4sJt7n16bJO
+Nh0Qr+p00_p3*xy_s++K#drs<KW?Jn at cbp*}k{w at JBPb_{lM?w0NT%mO&tH9HHMGbDEA<Hd3xct!7ZC
+E(*&d_4e1aEU|JbJ9g<tifzf4amY;Cg*d8n2U5uQk_F{z33uDCrhTkKOLl%^9<k`RrIv~1GeGr6KuLG
+NXIIQT=@s*no4JL*N8nc9qHO`kL#H%(9-R-MO~vu7u987Zp2)%t%4oDuHy8HoXo&V%Te0CkQ{MC0Nsc
+LCh~|NtDVbIDD_EM%B;-q+EGF=M7=BTU<}NSiDr`pw(*hsg-}S7qfK|T?Cdt1wXD+Gd}lTLX6ua(E3n
+UP(>Cdt><2c#@)juB7i<nCexN^%fJ|jzm}Pxi-VJ0M9$5~l at 8)cu-BjBx>^;yi*&GbHp$5nStU;-W46
+$KmfhAZ497GR$qa5=d0rc%{vL!?yOwddRa^Knp!q at vA_q<(;+aC8?_BH{Gcfb$1OVC3Mrx>9qXsm$yH
+L0%@IkVXt48tZ%g3+#p0aenZJXSlqO<Rq1cokqc!hkH_2oqqA|0%4wl;kPNGGslD2gc%b+EM4uwA+4*
+#&OFv<G5n{4hGHTj8lG<>7sJoxmud+vTpFdED!A%Qhwiv)&4R|KMrU{uqTj(SmfGs14b_JKXyI(5yv~
+d+_lg#!Fbf3mK*700ul&|6eY3oA;Gl2XJF7ja=E-oO0;2MVI&-&ck#JgkBJoVtkw7$I0by$bttqCz(^
+O;*1cRl&tKr2GMF!&kAINgV2b0^XF?;?+=arIL_h{2Yi7#NP_%y@)q)$4EwXAvRGQ+mTsdxWE6vj75~
+c<IU8XaO>6+bUTIPta64^`FAU`RO{C~VBFaCgH;8A<A>ll+vM!Ucwv*UZ>4j4<#qVg&oKjn{U|FpNXo
+2ryS3$&b!squ`q2{y%SogI+@$@QXR4V0HQxdZ)aXp>tZU55Y^yK5kOfW8NM!T3AvVP>6)_78XsI-E#(
+*Ct1~TbcHb&nO1qKqmZ?5dkOgrm6_pe0ROU-&wk#&$#5es#~Oyc!P+CGn|u$&YhC0LW`&(Ych+~?JaP
+NL*_cailsche)B)ReRY<+8CZFR8Cr=E-DITsAX4SjAqnWNewAcbm$d(_e(o)3jX+)uGMU3HY_k#vIA*
+bRfRDQ^k at XyRCS&!c4awAYDtnQNS)`amzv|6 at wpEi^p^dzw8gV*KM3JrO+ZISPN>AvAk5R}|y(hYQIP
+O)r3)xF^NHTQf##iTTKDj(67v{df;OtvkRf$?`xHVeS94r}HixPpnkU3VtOb!x+2|DmcY;DLCk^%o~o
+BEDoQGskgjby5KqD$neMtGwe9bsfz)&5}_(emrv!&&t!P<%u`I*e4+i<X&M&`uc-E5-n0hfypK13V at U
+q!G6Pya*i!9deegw`^^g-pW1NjGlh2=~8J>44th6UjpY5<$&~$VXVl{kqLpeP&IoI+J`-xg409GNn-O
+A2Sy4 at 7g>zz6R5>f?Z$QioQ}dF-V?C?x!b-yi?jKGz8OeXJO~}ypcs7z(A=5K*?nYS7xv2D6NnQAt{s
+3C4Fj7H>ybPCDpIL at XO19bZa~*iZu!7O=J40qwCaLhnxea-9V4#2IJ-r-_fNU|jb=xDQ5)HY{YtYeZO
+}zGLYm&&OTULUXR-Q`oP5{Hhy-MhB<itA97`H?+mEDG2WE7*J8kOiUyU<b1<_JLTH%50A3YC{r3Pp^i
+_bR=$ONyxV?Lllj!gaB^{2&kfCq)BQk;+)vcFsYGB$Ve4F#`}Z!o|r`}$3^5h<{tm+(Z5T?Pv188tCx
+xeAGu<8@%n>=-2`Aj`o_<jj;~t%14axODtq at 9xH{wt0ca)Ic~c3KgD*Bg7EBrdqcf*G>$I-n;+#g2>-
+d2)Q-Z1nJBP>Vbavj_I)anTrOS$cDQC&n=K;ivrr{J-Q)nkDZpZxw4V!Yz5=E^%StIFiv55gTW_#&xe
+W<h1!HXjc2FBOp9N%NX;%3 at ohSDW!Zq{-lVHv;llWpd#U^l$90t~S5x#!0kP%)PUcg?y01Enw)RfkC{
+Kr;WxLV}*hjJ6VMyLN(v0{l)_c;ZfXEkXv}_UB3!j5I0evBB(Quyt;FHCoX%`swxL9v5Ph41fi{xIIi
+phDZzNHr)EBX-)z-S}xq*EM4;sqlgNghqB<dtmO(b$Yf^hAcbxnvo*Zj=KOEx99TN)63r*;uj5&=A^j
+_h=6EmHfU1#O(rq^#M&)VSt9s?mV0d4 at FV#tr5pk$h|BJ^>T%!G<5NsBWsxrIZ`m}Zn_}I_%`)ha);s
+_stXsGLk>^;#==#!zTGUt(T0ods=dWSnC*U?Ixw_ucROIiMJ;Yby;O(4UcUObkAIpjyb;5CnRdkY4Nu
+T?>-tr38;CnLU2|a28a}QJ#{r^BaNywEYss%?=O^-f>&ZnlHZoD?Un6G4wxdHa%VXpRRn{wPogJ|q#o
+^X{!o+$W?P4&d?|_Y;T*SxIcJcSqhzZMIxTGGlU`^OM4s9npF_xQhEDLF13QjGDlg9%MEwAyKT6{-uh
+SS=lN8?~b(l6MDCqj}^Smc}i8hEDa7T4=rIzvJTIUO(*>@yy->Ziaw#<P2*bFv;V<P$+nlbgSb7wby^
+CS-RL)a*dC>|us?!bk1Zl>s}UVs~7KfXzFcV1TP~C{$0fNHgk*sfpJ65HKnzA>d<WKvhB6R2(%p0xoU
+<ofuDSEJR#O?}T=wAz2rTN2W~sg$_=cr_ at K)wEH)G+|;y7EW{u_ai%LP{v+GH8r;BeYQQ$xf&p?oqGo
+y+HYiVOq0i_)AsGxB80JzqtH at q(Th`ayW;}cn>yjn1!DHMx{G^8Bg=KGLd2DRD96negXY*MWm2&WToV
+*#)r6`h?{Qj`(13PTD$xlCF{hxk9^$h(nI}n*iUmi42FfwBpQKPNVScf2y!4lAl5?LftK<(Q-M#oOT$
+vy~?T#aKloIQPd3EIGZg<iX--Cb8ch53Hk?d$sKZ at +kv$H!w~6gz|ipE at AR4Zfr}434P8T4i%b2c0-t
+#EDZiNgxiugRfQJHqj_P^<XUY!KuT?;}rLnx9iY~(L at O=WmPpKwUQ7Qk&OLkmbCppzlTTFz{eiS2U6D
+1|C6#U0u{RHfMNSNV%!I41)rnV6h4oWuj`?eQ9hEoFqUS23I7#<uF0AdsZILMGD)#$nn;>fFNXA2=%n
+Uq7{w@>O?Dn9p8Ije;LN(i<}bo(4jbK4g)J60?_u1)hntOx?KiCb;*rm at DPUgJj0gh{iRMqglPdL7Ws
+t3ebVInocf`uAjq at JSN=gvAoAcyTs308E_DQU5Pca9a+zR%Q at 7VPQEEmI*C|V1B=1Etrui1sxcBBE~_
+nh5u9yH|Fq8zIF4lM;(XH7=ft at ICL+#4AnVIDCmR+=*9VI&_K#pIy<6%R&^Wxpb0CdTanHIvt6-*@d`
+hj+<o#&{WxzghB!<oSX98H9{JqJ!acE$)_exm#_@<nvkb8Mc%?rsy!IOlHZGXhjnNUypbg1&x?~b^e4
+bGkJC&O~idBt|Qu+=;8d?#bL*F1Y|%b6pVQtH+G_iYm#nRnx2$6UGbKr<@DXZ|7r2&yVu{Rfq;wOqt?
+brjSQEcg2!=x9N1Y!Ty4~?Ab8l7ZmrJErfi~JzJ(EIG(zce at lf35>l#QhlL)jU1&3mQl?prsUUEVkdE
+gjNWSnRDZ@!v+x|nw2gievTzbWoOu|obdL}oOFl(A)a<`ndM^cs~#Y#A69Qu)a;cUitW6ZA%FM1kQ$Q
+IS#)q!H9hfms0mI34($kVFl#57pSD4SK>d9j2?AAeRT5&_A%fmH9Xx#y4G5M?94->YOz{mg3FCMXX=Z
+!NgHv5fNukFbA?(No-fh(CLt}t0!t at Jq#>8jGL2h$_6XTv<<xg&R=od$ViTV>y7rg!+sO-i|w21roC-
+WrW_9w9$A+o9|-o)xmaQ!5BP<mhqwH=yAP;Ottpgeka8ldc$MSgh%Tm2QoXd)v5k3hvMM)t674KG?N2
+68fY=krEgp=3xmlBMj?VJ?Cq?8jT<DE+{uVv0Aj?5%)NGNL$v2q<=Ik8uo7)MfSQs#>y3=?V_e}H}3J
+DghoXZ3Y=?KGw4MluLckVQl5Q3byXY+{mmws#jpdblJ at d}it`nFCGTS-Q|WJa;rL2VEZt*CH?V0&?^l
+pS(em;13TDDPvxiyc_kzjdM$5(1sHChL8VM-4zkWL9>^TC<xx!;1EL2huDkZXi%@Q9vaHg=_>p2l`We
+ww~-8_}560KmBC)_otuKDGCetd$HXQf`WB6q86htU?t3UKMt6DfNUG+2kd&Wtv&;^g@!^$9yG3)^`J6
+>b^)dS+ZsN}$r!z+A;>1lco3;DPeAT&REis8P)IBZ94C=O0c5@&%%id}X<4H4WG`r7JnQSC+R8MNz7v
+&oqeyzp1H4*OfxB1D?L*IEbD{~6Y|vBA2GSdr5#un%JaU+}ognFvQ&EY`ZeGa at KgG|Dkx*(UousnyfK
+!rmVmg|I0;JN at fj6tUrYf5#PKU^jL>&Y*B>u(9$!R}^Ob_i~jPZDW9$Y3d&TeDKptWkOOs+oN{9+uHg
+FKa0 at mVBv0dC5E1C+kPK+gQvK-aH`655inmW(}I2I-!dgbZDxGTnBC%CL&bOYCH;_Y^mA?jS4t?b+Xr
+;X{Thx#)Jiq|i;J>+vFxzNf;=521A=8D+U-6zir at X!i_yP5}c6L>Cm|%bINhZ28gYpmh*|WLVDPr84$
+#f!fM(?767|x_(p9;lLF80RjcO9h~qZvmasOz}0)SK5SYvb6~uBsi}-Q2h9G3>eJxIML&j(Yo{|{%`p
+)Qg|5>svUfH<v)AGAHG7w~7gFXU8IkH>F>c<9p8%44D^hoofPC}iW3{{=1O$ymz6GZzWoC;9t0aB{qD
+O?ggzB!NyxeT2Xi6fGzB&%SR1?&Kw()%YJo+h~@Y%Lj@;zD+Y>EVUj-PMRni+41g<DJ`6l|mRC}a6rC
+R=ihHx54L-Voxp*ZA8QvcoJa`lJUP(J09Pr%%wb>3Id4<h56+UBd#9sSXzl3=68oLN0&>+K>ANPoXY$
+Wdkc|^K`N3#Tu5T+8%vyTU=|Nyd9tZ5h#pol~WTRuSS+LSlA~2^;CU)bZN~N9h#Yh766-0mFhGx;YHM
+AEr7)%`NpG0 at aZ_rVDfvE_I+eJ#61lPCW{zZr;IsfEEh*D2}9^6lHD2WKSI&>l}?@{DF?Csf?DfeR?P
+{D(v<CPelF(JZ3|=pi%3@=ZON*P at 3%7MBm)UzMm8tP))_IIsO;&;0bpKLJRpyS?5<_PcTng<wECz{4B
+TF*v?#PcknXde>agl2wHkp&XMwu1A1mZ2-Zm^N=O;=qGS<*gP>kk&KO{6x?N{!^#imvhwzt3g497Yos
+pk#!9#IZ=%GB$X=O|FlPd2WvK-o0=Ifb97z)$I9A8O1T2Z*~VgL9QtE^;gUeDN&*V*UL2qPu&Me}Mp#
+o5B0sJKvAn+(RXdP-P8K<{Z}E7qTC at b<dw)Ojqwh?xOyX5fmP@>HJW!C&k7VvauW*OYbEU>{90U5v17
+sDW!|?#vV|RCrSA<Bfls96wr2zR|*8O95mgdSUDuyt9VMNq64&zqW2^hl;N`NRgO_clss{!Qr1OXo0$
+u0nRs}Q8M<D9*h})_>0t7BF>#wkp$)$vDnx_t(u|Z#cFWqmaAM*P5aba{-$UvFf<A^KeQ5u;h|<G}ON
+tLtVDN*~U|b^O&`Gu@=vygr*RDp2 at es4cOw9-H{Rix;_xNPcLP6PNuG(8i!=ofPi{u+Lo1IO1V8&_GJ
+*J!@)+WaX3WlZn;agigX;qeDMUV^V*h|ipXo`fGmWLvg$fs+nn766AR)6gKW2UAAAH3d19&4919v}j{
+mAyk6_{1jN^^7wFbzox_3TH4LdHv9|Wcr{cNTOSnV;W93rWR{!Q5-kNq8a-;W>QgI#2l201)-~?Y*zB
+MX=Gc)LDs9Q9meAgCuf*3B%LQS7Y5({#5Wk|YoPKE<yL${FJxH2Z+;`e&LXvGzu0!+qEq(=Wq~$Qu-*
+~D%OO5Z**U01#IAJ1XQ?+8Qw9Rw6mH6TPu2km39z#pj)Eb3 at Q@XQ&k?HzpXrqo0*S01e2yn?&pPOh at Z
+cJnYUtp8cAyuu#16*rO)IDWjDF<1vZ=Nhc=!K6hZanZsKFlS&6Md{MFHCGvxD~zc=fH*lJeGq!u2FZV
+#h6jksMss*IdCoc(_Dv>SEeKm5#c1$|XesymnJ32hK_AG2(%zYWy`v$Pk_J*^auHgW?yAo?H3H#xC;$
+AIML1PwWHdhf(>3eK(6rJ1kF3q^HB;bjW|My3}<UhNqcs^f9jhSTuOfWO1?EJe1AC1{a*e7&_P%1l^G
+1+|3t}FMp6}_9&$y70Q#Wnq4-O7B9P<RTx2$t!8woUjieKiJ2zQ$LSYTOe>6ezQuo5{w`T<t-b<&t4N
+4&FhlOe9QY7<I)H8?fV^O>^d&mn+2xnc4~!w?nyrpgb_(9pr&Xj+8{pS$_Fr1JCLRDA8Az1DrvC=eXi
+0T48Awz?pgv5`-u>nE03wAWC$_8<A$Ci1g9wM at -MM$s2dfZ}ChvF6|5w$Kz!o&=HbZo%>(Gsuuit+C!
+>gBJ?|}=ow*dBw-!22!t2;9Hl&`i&_(`aPqd*>I$yjuW4|%3$ZU>s1!#QE at DTy)naFL8_KX5uneN_Z~
+-&thYNn(h{0uOEK?jYl0iG50~Sl6O#3YfS;+R1ulDVd1$hoU?!7J<A`QN+ZwQA{B_m-*ums9gDr3iSK
+};Afwozj~Sc{`blAFHpC7*8cb3{cfs$e%n{*v+6SjHg`gIZQSbfdG-;5Ns->1=35 at P-*s9ZR*8wC1+1
+fj@#&jBP=L>&`7^2W4^1Fr%_<z9yP3}xbO^Nl-VOsvKa at 8Vl6w!|*J6g>e-<~mQyl0LN*w;B4_prVY=
+`grrp6OKdfStUk<Q>C05+LQ0308gIgM)==9hJS$2lHHkR_r0=VuqOQosQyYo2|)VD7F8oxW&iiP&TVE
+o7GTDcMtBPkm2TNWQl^v+K-qfvPX;0|y0e34mC&?wcDusO*U<H at gf}Q-3edFXnV)YvOJx#vpx+j4*x>
+(~j4kxHO7 at 9PXK#=cPa0X5c}8;`bJqFnMF(<cz&ep#D^Nsj0-ldVI5XwW{iByvy|E$$qfEgAM<BU%y2
+;2Yiz2z_=aM+IQaF8z}WSc|~W($TvslKijPeTBK}0(sic{QXQ`74f?Rg)&fE?Vd^A4X3yYdim!o029u
+)N$%ROpkp<;@*@!w}u#s1$x-}Ag3DtPj4o)nPuGh){BF=w-?h>I+!O}oW94IFSxdbNH*h6W}NUA{%L1
+rc&Fx|IxDWXf8m_~-CLjH}`vMhDW0GmCx6d{k=;}E<;5=4Z|V|i}8E-v{{t@{>PVVM6$gQ2{1RtCaIU
+R4eji6mC#55?35>VTf>5FQE7i_r+PoJqu#{pAqL4Ro^DdwG298adsrxXCbs(Cpq)_v9;@27q%qf%EV%
+;km*9qH<x->Y*`ynvy!i_rOL3Vy{b>4(Hx5pfqd<nbGv#HPsT<N|~JnNt)zl{$Q9~FIAi|>?&I#)LoK
+C0EHzW3;XGxqK4gAeON*UM1VU^T2f#N{k|}<<FUXr(2H*HQZy2<)v<4&8K7}#^+sDfzt=lf#GMjBoLX
+d8qJ(}->B7$A9#=Fm&A4LM^?pMcmC%xY46uoD+MA_|eop at v=6umv^(ZT1dMI{Xd)kYEQpEQeUO0{Zb@
+_KV1NUSyQ_sE0qSWI~MIh)*YbM7fk5bPONu+d99{N)LH(qcS<u#rK&f`z9TdbUf(C<08P#N3w<!K?S3
+rX6O@@ODO3qXo3OtHzwd_0=&fl3w&zNureZ_vadC5BrH=pj)ErG;434?|Mo2WL*-H<Ym%<qJIG%@=kA
+0jpD^b*(IdxF+sP1+vsEV)&GURqUGXxj+Y+b2D7I8m8)+w#lUse4qAp$y)2Hvbhx8KPkbw?tgqt0E|E
+F6#5c(0-`uaMuACFi%er}gbfwLfmJ7cW+wl1G{$?{cHkwsbEd|m_nxf2>P30|00bX>WuM7hO73oxe$b
+$((pdxL!aHzrpW?Fz7)tb{E<RJaYh*C9%8)37jxldK-E4limP}kqk<Tl-i;dhYUmYMz=M&{bMkjU{(f
+iLJOiKvHlF_S7)nhq1IDX^+YYpH(S=yGBxJgP4UCFnTP!*(J)Q6+u at o`9BcX{rtkYi%vktSIuj{1mfa
+Px`4|B31JAd?+ at a!#e$E&bG_+^|L)xpqI<iFja%q39gMggkhsG%l5cTVcN&dm&s6%1-gdnKCKJLK_sM
+^#`v%Z${5M=-t&-CT^a65I+38{}cf1TnJ)i_2*nNTmMRf=pBg_+4txqI9 at ekwR48oy6>zGpC#y|qwME
+&+Q)p6haiO2Z#Nmqp9IJ_6p}pjYh6QGqBv5{BvhxktPS}9O>dZooK3n=@4v2K;$kZ&RXe@$vNu{&=G!
+3s&S(-~Dk}8ENJ5BS$VA8F4EE%STWPm(4+PKUwBFH~A~H>yvrps{A#Y;a+=GqCd9~PD at Ds>c*0E_jzk
+iI%mp<je<-tnwpzg<-GWf~$Hd!W|$LMv7ewP0T7GmXmx3<+8zogrviOVH?yRe@%;%M!}w;X4)`Gk4ca
+XSRMoC=XvGDg&L`cF4?X>)`Nnco%6jBM+}@^8=nuFrT%(`?-0<n_vXjoq>vIXa)VFALq`)yher<0q8!
+X>40pHo8}LoydCY+S#IIC@**P%R at 4M<8u*7>=d8bh&fG?6`Rvw(l??T(n*N^tjxoE$$x1oXD5aKA#GK
+!Og{-g$hKdjRPW^dcG5fWZJ9br4J<5uEZ-%ski+vu7m;MHc2>d2N&f_-$-eFS3RY)*&pkf(T^Hg8w*<
+!D$8^x$9&k2OR~rF)klPuI1_q^F8 at 4yWgH|?opzHI{Z$)}zZnaVOUDB0UfKpgv at _wwiIK%K at Q=x=M>;
+`HRlJ=<%d-M2`CI-jJV_=B3TZO?Wk6%)at~k at Q($nbW{B^GSo5ic-x at M4UH=OaMcV0a}JGQ7n+XvS9i
+V?T=ORMI0?f4q4K1WP{6qd}B{f#6+7YwZ$w6 at A*755AxT)}qUYUgV_{VZ%J6d7Eg8T7a~eW!~Pid}4x
+E#1LIOb2+BecIX_J*}=D)l2N5J}v8Yb;@4!kerS9ocxIE)yhDkjv*q7C~Jy+I&R{?p$1lC{3scxOO6p
+(17B_U^1D-+lJO)Gv!@<+kWLzgxr_0M6G`ehCK1s?<~4BWN3UBocgs%P+ZwsTNL9097-Bx at Io~B~T+$
+R4Fd^p!5JLW9#jw!5^BTHS6p3INt}VCFRl5^hXe at hP)gBn*LyyRG%UE(2?K4`sE+n^<zVhA?N$u;vG*
+T6}nZ66RJisR9MbV^;h1nAAt<}oQ5lgF>&hnm(PEITfU0vZu?kRg|nCC%f$@e)bCRX`Y9hOlbjpfHp9
+#nYFU^+pH7v`!L2*B;Z?EKk<Pu9~obBS(pSUyRZ6~ENobjzsmFV&C9ERkq>!JDL&G<p9;$RL8S6=ZSQ
+wi|T=IBMA at w4oeSFot7}5qQn{daQ0xR6xfu2?PrXV%KiOmkOQ(3(skzU}P=^`}qDXst|Npa#VhkxL>u
+cyvf=LR^UcJ-u~O)?XWR^Et$#K?`e-gce5D%)P(k;z-r`B1tjz=F5xMkigcRYokYcgxEgevE_X3oo4P
+{1MeDFZtTnDb%RAj0tUW9i6s;n5E3w&d_(?Qqg_CAsSwqy`ee5Kao9oyY3!KHW-nAf$bV8_996CD27*
+Oi+a=_F2LT6<Q=QC3jgS#Ro%-O;ESyy;!+>+15XZ==@#%4yDH+g;y!GLU;>^8sS&Ecwi@#42cbx=kFq
+ZnYu33X8?!IYPW?KhVKMuvHb0pYip9EymztS at 2pB|lmx3CO3GeE%L{nmM|p5y|vwCTa-hB{T at S6m*vS
+DDi>f1Aa2ZkYtZxWXn9yXR<A4Is5a*ZaD@^d9OeK?%HmTyq!+{X0!OJz`@Fk<C9nrkG(E(Own%{{{4I
+9$-w4}kc0>cwXZJG)Lb|>&|{`$wY}5Mj_rBo5z|9dUSU<1`+CfDX({NOU(A$GKz|Bsj=XL%3nZZB5yg
+kn22*rE=&-M5sDyAgY-D{PT?iFGSuV*EP|a`V$+P?gkifW>GL)*M%^WBSN}-ewIq9XzmJL3JPAPpkXM
+5JCf1!lF*;i-S#Q$D=+T_2P{R?@T<z48N4Ba&NdMvxxZnv^y3)QpS!Uf*9LN)WtzTJ13%$_Nc1m6`>*
+!~7D=(6!*-`5%DzC2 at ELMBW;D47%n7nzlp^D*V+gzZngc#0P<Zj(+LuDBmslaooe2`DDq=6n0-&-2BL
+3%+=Mge6SpQ2Mf2GhyO8^D1?O$iLFbGJ^2mco!xe!)fQa-Olq1PIeDU$aOja>BWWWuXEMZflMmtho;(
+YIZLI(m)XUjS1=|yt%k%)lj6EI(@547%78+7Q}RUKTFJX5UWuIG6+f^B`I=7;80s&g+~j~jJ8Q|mMw6
+C+s<Xc48 at ygjPz+z4rH!)cM?vDUT)M^0da#9WSS)nZcOXxwtl?k@*ol?42DZ%rhxSL>6s;GO0e-Mws5
+T_0qfcM2QBwze+S{gSbhv4r;O!u1PoJ*p@(Ta|$6nmf^+~VWc2)N0tMccI|7u^Zx|H!v1;5m=@^f?)7
+u2r{%`fN&kpjl(@-8fI?tF_ZlfH8rTpO)S)igxMNd7o^v&D2e7^=c45o{5Pc5$vXmnI(M8Dx5*x6Cef
+%#w&#Fh_ba%RZf-|K-!g#gk7L#Ex__Tx3TEVeq<W+Cuki=kgk-*Xo<3Dp&LL0bw>_)t>8Xc1ngxqdj+
+p<D+q^I#-bX(rczqUYa}O^^M;u4+Y*sli+D5t0fanl*hDvr-u`EoyVYS%Ny%K!UAm3wTmQvVp=9;7^L
+(}WTq9AC~XqebnFn%h%(=|kgI3Fd7Y!I)l=#geQ1JmP at masS?z;TmqOz9ppycqZX~m(k-tanZs82r?S
+z(YcgBOywrTQ&PE}mdeG?~`R!8+RQul}h4o<(kepm|_w^YSIR6=IHuF0Wn+;C%PKON36ve1LzQ8Tj>D
+EmalA$rBF)vX?m`cc!5sla7&Hcb6(cg*7Uu|}=W7?bb>gGB8_;Suy5eZ%|dpyYc|k$jC&Hp~S<(k>~<
+PpuPz;U%QWe|+<SIu=Rzvl1Y<lGl&8Chi3D<gyy!->Xab2kNhW?w`bt)dq}OJ#qobgxSp1+<fLJH_3U
+`*hWlGB{es=qF|z8Cx!v at eZlm;h8`{!sxNrkALTm33AZ~KM0TT8C2x^bxyRMfttYU>a$uFplP+%(lYb
+5uVW4=5T+qthz3*^y6ISTf)C at Z#nknHk%0(i)Ln6+uFv*N!60eP;+5HfYBGc5J54k;%bckux5_ZjgiE
+Mm_dLdn}<H>F$d%WX5_;YDl^QceEc|0Y@?*ELIy5v9q2T)4`1QY-O00;mH1*=Gx)<t`2AOHaTe*gdy0
+001RX>c!cWpOWZWpQ6~WpplZdCfg*ljF9L-}hJGW@=7SPU4<Z_i64X$;OZJR$`wkyNO-3nNm0+Br!vg
+3_*>or1Iad9{>n|0Hv|-s!rv{hy)ryqtWk%wq0`&>-F~7A3M2Ti}KJmT`%${)l|n`uKD|$H(PACX{t(
+Y`m(8&X;{c at eysYU-1OY0>}A(CO=Vkb_IX*q(O;@&w=3(N`PwKAxh>ml{UYn4=}f=&dAIJQYL4ATs${
+E9{_QAL at 50$Mhc at p`1Nmc{*TqrEZfH?7r at CtL!nB!}YP~HhxjuH)Qoxs@?Cjq!8^wRaf7X4o2H5-M8<
+G4R>o(s!W0%D+qWp0qTMu#b_qFQts><={mtEI%OYvJ+$)9AW;K{qHlX-F0jbt%3q7Yw{s_)9DBf|Q&>
+Az}@b+HuRb at HWbj_S9^vMRnPJ04{c(AT-z>&e(Z761Lmx-IMa@=Q9QkfuBTv8%Y3I<~lA=qUcQQNc3@
+MX;0j at 4DnA8$4+Y`~mhEKp$k?4_#or1D(xjUPY<eDnIis;kO<Du5tSnQ07ud7#j#3Hh3xOraR<S`FBa
+J7XjRC4^x#E{5PdiK)GMj!?39)Yty!@3z+8`o(>IxjLd8Jb9jE*OKBJTJ$`xf2EoZrJecE>?PULZdNy
+CL>-+!*b at ArSn@yD~B^=DCdGqvFK>y<Y4I at Kt;cS<6*{|1gC95sGFdKzmv-Pt)D;Vd~WAGf$Gd%ytKL
+<eAGz8K~U>mgqYiRzGS8y;B9X<`Ce1dL|Vhbl4{s7E5z#iRIY?`_UMxyjemdI!hW61c_hvEWJvd0D%2
+E1SLOdUuitre)F_W|8|gg-pb^0oz at G>5+z5j64wA9xsdGQ06)QmD0X-2R<xyYap<-f>T7cj{i;shPMF
+b8I_*UMvOufn7d5KQ0!Gce_m5;>BY)hnYuW|F~2CTp-ZdQp~cyHf25MF$a=FcJ%HESW-^HVxUR{dUJD
+Q-YL->d(rQu;8XCT0PFRNzqByb9F8h7W`!rA++ at 7`kI<oWrbMgA>vO-SGpPCMQzZrT7dgJKs^(-ia3x
+Ms9FD3NPw*C-^$nmD<kq3AB~8bHF7Uh=jLcym=)B4683?wfLta;%#U3O~#XWKU$9C7{1vXQ1kxdM`le
+O&f9v+AaP$rtK=#KTOFAowXghVClO$qEq4}U8AJz`8R5myV#7I{&Wi02%T2BIh50lxH1PtCC^O!s~ML
+c>Y`1MKAq_m;+bI*Xz~Xh4p at hw=^%BFKN3Sz*Sqb3jyAfU6n=*NcS3gNVVF$jp?O6%C>Wx^&(&k2P$f
+g at Nqd+d$f<m%OB1n*kC4KPyq|i2_<q`*O3#W(GtdRoP+d0l`QGcKwJdAnN|udLu3EHsqCR%w8CvAsv*
+RKg}5aE$$7FVGD3VND~Su2ms}(sgW9^TfCSclMVDGB5}pM;6sJ_O`~Y<_I4flQv*AFkbPd{eV&<Pmk<
+ib6#j;qjb2tLB>cC)S^NhBRFt+F;ub|<=Rktt|G?ZN=WSsf at e3k*T1kd8w45g|l at y@Lyg#%RVP6)cj1
+c?`M_LR6Bdb^gw%2wB{>WdF&<6~GTFA#2j$W at 3DtMbp<?i)Qn9LiT$svE1>s+%po=z0G0RF3-^d#J1>
+;)%Tn2v-=gBD&U=yD(dnbv@<f5|5U`bc<2gaYF*)dPY_X=Wt{7N_8-s%<HYH5~M&BY3%Hxj at 9v)F>y`
+H4RPA<(}ojy?6&aum<V`;tW{+Ky&zikf=TuGBeId-n~~JzKCFrn#pPm2<H!IC}Phu(B5g4kx at v~N{ph
+epO%q$24H{&R}q^!9eNZL0&~yq$*?KWkvaEjK2}45wGSJ%SbX~T$1Bgtt@!Hw58r%wzwi52-M at XigWW
+$qp*8ikJ-7K=;O}oi2L?g^_Os7E`=#yI!ulONFrI!Q9*FKAqKkq9%hO(rW-Qbm#T*JA;F`Otd4dik7G
+>e7b=V)(`n6$=^O at zr=QWay%K9Js*}_-#c$yi&TZhg4%`i)#$(k{+At=I$k-YwkkRTA)mD?A?8AzJ7-
+0k4|wwW&`o5JRS-M-eObIAJ*m^ol;lQBAX2;CT at Ka<p>bnEb`D_89ipQEOJko_fFXbB1s*u~5xRkz_k
+jB9|uX-)3oE6^5X#PBV5U_(l?09ojUAmtJ7<{KzOOugO1w at p0($5jYSXIMFGNGJ6e$*F*eOJ?pG?OfA
+Yfzkzg!^4X9jII$-ryo9c$LKV)(r3C8^IW?qNiBd|ZgQX+J(w1zYqp{pqA!&{H)@T)Z(7LU=N=4z{1B
+POJzB~j(G^(V)e1E(&{V;ct^`{P%n*PZcr!h9W#3ECd7DhU-wK>3YE5TSKZlp3v$>-Qng%L{nFsF!8Y
+s8~)EnLQ at V!MX5 at dJ{jOba)7Bw`MxOunPgXT<Diw6!EEH}wQ1SFR(^wKR%yKr~0-YBDmqn)e3GANcLN
+AXc1D at nTl;Q)dfR*2km3+wkFv7-y!6Y&irYPctB%`Q#Q!=={M6)UcdKf#g1Cv&OB<>#8bfo^F{KG$Zg
+?c=$XtgDTP_9oyL3vpl{kNC_`Z-GYnsp$|cyCXKd7dK--Gd+>nO~B55mTUP9h&cPV-$e5vl!5%0BkX?
+o;fH&l&TzlRheLq!-&J`F5D$6Xmm8Lb(Dsm at 9e6+_zz?24Iu(e_lbqo(DA}$75+-wTu*WTp0Yg at 37?-
+sJ%o_1PfPi+el3Fm7K;N9%y`N?NTD>_xcq{W88hiS|@MHgV$b_L?_{i at NuvBOtJQ+#K!32Ep{cWx?@=
+e~-F$Z%sugV;>bYO7R+Vvld0IsPe`D_01&tTOx_AJ)H at S&?NB02^H#GDA4(2g5WFV*%4v|*`-a2F2Xw
+RDjjHiU^P6z7{t<~7*e;}$Fy;RXK at tk)G_xYzD?zv&=Qp`G&uHUVr)LB7 at 1ieHF^{O-Y;G~;+MEX03p
+1tm1Fe+Otc{*ebOHC at gW5m~+{8lT#Sz#lyyw+U3ZD3I~Pz$fW2XWN{<MTu0)Z?^iK2R_{^#<`{rBw4Z
+gmFM4BH`}%II`otJ)awM5=9O>iuh*b)j=i2pdq{9NGRhYGe_4;uZ>HVSzTT}j4J9E)Az;H{!nmSGZvZ
+f?x*pxU4^@76Dsp^yPd)IYW>s^N-Fz`p;%CN9`U$2!*I|x at J52=sxVY at wef27T?)>3E!<=Er!Pk3f5y
+9f;v;VqN+LiI2;;wL=EOWI$2lcOJqs_Pz>{?l`NwZ(CGZXh%ib~cvz9MHfPjKPj4y`nA3=S3yq_;$M4
+p}c+9|)8bR$n!JR}>yG=St+BQy9dfv06szY5<-!Ap8p at L+D*5pHwX+@?La8d8i- at HXHhbo&y{a)w at lO
+QWg$xEe>!}$`*K)78st(($|P2a4L2ITel>3A*bku6vqbLN+(pD;5>r3WgpOBx_a=)jO7)yKpH(teN`6
+h2zSLKa^=jy3wb#Gm2$X~yq>)1Z<}6w>_}ZL4{e3afu4}JuEaf|xULHbBa6_`!@?2+3puEX^;UMM)B!
++8XSLp}!Hw?8TtJuF<TdUChLx4^pMQD;rr`}9Zf>cFr{p-L4Z6F?)Aq at sECk_tZq2!KK at 8nVi39#C{>
+mO=*nP%UR6!<^d2s1C^K=o-@!a=h_k;D{J%iyt58NOemCR0gSA&`}zj=>31}Z!lXVQJdT_-pMK%m6AI
+d&0^+4<ba`lale8drO>9L;tz+U!rACa?%F$>GMwH;%meh|~k}Zu3mIL<c)Cd^T|KB!CHte~mo<-ag$5
+XWnM at nTuO@a at I>3K8(01 at xvPT1IL5sqfTh#B69r2>iuLB(ni?BT_m)SX*5be7 at J76L3hd$van$F6hVi
+g!`K2CkOhbAM%+cA at T|<lM@<}4$z82g7#;O7+Avfe#~Nj{o2N(ys%5l;s~P&LVtA~G^?U2Q#S9WbhA$
+A4d&p038*=5tQny{cqa+8nXVM-pp=W1`@dMzp9NWP6bmOP*&SPqkKY|Jd=bSjVUN+*$m9k at M<ct^bJ9
+#GBx(F7zd`QmoK$IFopN^8(A0GhLqon6H1l_JimnBLo=ySQf{1IA%(&h6}{q*Wl at n6--O}Q;GufqrCz
+5KbSb at oMb)bSfjUOO<`Yt*#F+{jtb*Y4Dki1gvETZ}a@{D2nb=}qpExbGs$f!ucE<=mp6b>}x~G16y0
+;aHEpEQ`R^(SQ?*>HG-;wWQ8iyNYn9el5h8*)Cg(HK+xdSp7O`3OEX}_?L&sX--YnSoEJ<5IFZJ-vgB
+l)Hl at WqbC$U<5Q}!sMPU5x>hG=$e&4#G};O~^K`^>21=ja`3NA;>zZQ?B2TNJq|_sf+Vky=r~DYjT%c
+0;2QGCO<G4i at 5EY|1$lL>EUZvE9kqjj!3 at 32}h2AV8=g at p&&W?+W*u&s!4z&5)d`=2FduuUHaux&nc+
+X~cY8LZPdSFUtShm^;6VM%{6YhFLVYCZi?AT0lxzM2^kpE&V49w>i-Ouc3tecaUN8zkyN%|CN(`I)P&
+~y$2TcM!0yNerBE`CzN;6YG?;(CD~`Xd-!={-}deSzgOkMv)FILE-+B$5#dbRP?z#bOc1uU63u`E&#Y
+{e$d#*3X5Wb>E;ExS3Aj9Ibg7!$4|--_h|rp(5?_BjPOaEg2Y!JIt85+=|chx~b8hjps*Ov6`=~$PjV
+~0$)Dmo99k$BcNFSf0DqU$Fp)xf1g8y;x4rHN1z;|H=#NOAjWtdyU0EbeIBn>0U67Kp9I6;V?RmTHHb
+i-$*>x2O1f{2Xmj=6IV))qk5tH-iH*g at yn8DB2w4icb)sK2$fUr2bcYXQfJP+7PD3vj^A39Y8$ePkyZ
+)TQbSfvd()lIVdG at rZO&lnfwJj(GC}lyUCXGq(+J_v at mjZ7={3enc8~CM%JpB3S^+=0s6iMNXj-HBih
+-k@?-N8>>ebS6_)0Gq-o6iR6iWv(w7$pjm&psO;%-5OG!3dagMS+#bSR~2g0{G6$aF1YS<bic)6E`+w
+Ka=MkNzt4-x5+Zf3hu*gOtORI_9b}2wSdi8eg*ss>|nqqZMHFI=QrOr1_#zT#M8R#PzUl5I$$59K9h^
+adwxV6vZ=RacNpbJT*U}RNWY|5V<LT7A4e|7Y?zxjEB8w%StwR=DEsx$H%QC08Qc?zq4w|ZxC0^&Pev
+wmiU_79+tUH^Z%ETYmj4!YSIR};?2ouN^p>+M{W$fAr(KHM4do;AMEiy7Y6NW;6SVuLT~+c$dX8msKI
+Zt}y)fo~fdwjVp2aP_Uy-(gs@$O|C@%-Ip*1Webcl|Wd5TEb4Qd)X?8<t?Vlm}^yCzK5h2g+?EJ_$;w
+D=#u1O<*z9%B1-qbs7^Ad;E!!c#1QVbBD0Jc6;jk1M$HY_&p<oAGU8i2(XF at i4Dedc>6;k at 2p|dINl?
+7h`|P40C37K&;A%mT<&{)3s3#9`c at X1srkd_eT|jr?uj;_KX?~AsuU)RADpCvzbS9?>7CBQa<$gBbuj
+^vDD*I6(3RNP?wg8ZyH5Jxp$r1L*3e78WJ^P*3lj`ZwhLaC=zs3%IQrW)22OQc$|_RL2p5$fSm3Kh*J
+rkBv61fnb~wq3pfvGPP%dCr(99&hT=}5KetX02ZZ7V(_WaigFFc$Hc6#y at M5TIbI98vL8@1rTS8ohuo
+qXjOoJ|HGNF#nn!L*v<GKPf$+(q<_E_qLn{elUjdzKq9j1~>7E$-EMJ9$w;aSYhyUE!4i8<|@tuclSb
+a0~qTenT at q&u&j2s+W|T0NKTkh2o4c8H6l&&fO-rJFnXbqKn}(3|Z>aV5;3(#B<JqrJ#u>@1chZHs)9
+K=c}BnA=1YX^SCyOe1~f`X=<ZY{+Lvl{7pE$d?=*pn|PaUX(MpcNE;(XlIM5c5qil6Q^`V%KP$a1~93
+{$<pJ1tX-W8r8Gxducmlw*8pc%_M1$+s|P0}`)5hm at B}da%UR%9 at 6Z*xutjW+UB}^ar^HLLgVRDYb5>
+y>)<MJ&R>mWbMVZG=^JDB(mCtgh at WP~MP|#_sd0an6-!;J7YspnR3PaRqQDW(5xjoxz6XOK|HpqL$Ye
+1c0IF&s{@{vt;$lywf`(g*lrihLm_FaRTLa%*pJUfl)w~nYbHCu#mCqH4R+vtHKnUW+##A$!VQBS!tg
+iWF9Z at oyluTJq1F?0;`F%uc6*3cP(0@>jxCVt{KAJ%fa*7jZ~`%_8cfz^qJU9agu%xpt3$6Se(Ez29G
+8pJ(}5~$yfdD)Ysa^fKcF77kD6<@)ENlLNI@<Yke7UCI_h(PE&Dc!B7eRp;p2}!$L#Vu$iO$0{SD_xo
+h{3bsWxQMfhefINcY9x!ru&^fK9FK}Z^U*~VRL|ntpCLDPcOdR#)S_piSboBH at 6*V!UG>eXfO8j*fZ=
+Df=_40IFtJ!MetJf?aL9yP-~;E8s`phxT;*>^G!SA$GC&~d2V4kGu;!v98w<@+C{O4#1pzc&*gf5x(%
+Ff^Y>rd9=lA=w&iH`YQeKJ{%b@*?Lu=;4bsOPRO^QCo<EXpUgIdEA?b>aHW$OTiq at a0`iVEF2UDyV2y
+TuhI_pJCi2UD?N^9ipbm{0JwsR&faKJ_xxnv9nR@#o1|ObnV*EK}`caeL!w8BUsgJ@&=v#sp+g-aHMN
+l(xizrWECH;uEb#g(|7G$vPchdo+HG94*FO6;`Xms^U`F6oESh-Q#Kq(y*v{d2~8`0sT<|@e at g(v?@Z
+i9aQKYt9f-x0h=ehY(dOTo#tX`wV<VO&mf$6)qqloIux`p*TXpBx?8+@;D9=p&3z%8HHZ<8#k>~;2w!
+UYD5A9FCVM6N87A&b^EUbsw{8<yIL at bPcH#i*ry}p5$t5V)RKns%`=_aJZ}#7`863%*jjFXLPS>rk#=
+~}#f-h0wrsQ>aXl#P0#k35;H7H|DeLC3z$mf0ez@>zfY(wYqjNG~=U=!AFj9H;C$l0)t+I&~AG;0FB2
+`6;5?&+-Cotc&^ToIQ@*ojVC6EpllNCwRy;v=H&7tqY6o4D(eDLxYbmXR>COPTQ*IlRi|_3EogmM(UZ
+Zj2~(<0l@=!N6lgNuA0DiB^j%*a!@Bf?kL$I;;XVA5I)`Z-a`Bp3(hJvHsrC{%&BUgdQ)r!-*(kk4h8
+^Bha5)ZX9PD76K^^!<9v0NFl}5qWn#FV8gma#aayBd0jy!A{|~g!nIs<XzNJ$IO<-VlQYAteD}HpOY?
+WGuXH%kq=cu<j2VN#?b0qgo90g`Ud&63LV*N|=XwGjLdo!+o~aW>OAk=VArAD?4;Kl{-Ri`PAb98320
+QbCuMbh>F%a+C3^-wz at 6wnCk@=P5(UPBVRte$=YUP=ZFU7HA*HuhQkSl4`%koJRzy}kpz#0OZ_i4S5S
+|9AYBW1U+Iyga3MsqWl;MkZHyBUDk#K%Sl$UyU*fP@*-SYTXXfTWc<A0a27-j)GqXXoU(k%zX&TZlT0
+dH|3t5~&YKYq-VW_2TAM{N^{fQxs7-E4**aUio9{si_`dEPZYVhEdjBQMBZXSM0q*m}<0PgFe!|*=&x
+TVpc*WJe#g;LCW?RA!W-z^V+yqiK>o=JcFOX3T*xI7}*^5WcoltVW%Em*fs;9P at i=27FNZJ9a<xqFs`
+ha6RSp303hh<KtwSe0PWmZl5$iuoLP~VDTms0YM at OXrc-cY*MjyJ8f;UVEvD(GauRQ?b;FxLw`YmJge
+<^f at -Hz45Tw2&>E5)XqP*k~OEIIUW7eK$DUSk+zUXC<>EUm%ted^$WDc6hsb}e88jC27wB30+q4WkLl
+`DhRkVwV+PAxKyuE0MNV9<FFJjD!%P-#hi1eKltKq#`9fR)jm1u))|#5r|RwMd4h2#X at dn1Ia;aB5Z<
+)8q>kI0sUESAqI#E?L0N6nub%<~uO+vNWiXvK}gR?#(|@C>JHSAFYkT&^{N>Q5#<O5n~G9o2bgZ)D?V
+y(q5OefmY}Z?K*~Hr}YZsk}Oj(x3!X(bsT}TJLX*>iv>- at 9C=L50A;H at v^ia|Mt)u51C!peTi4)=P5U
+E)fJtMKWatSW@=TqAztyjjF^2bB&iOwX=E=NKdyivIXq+AUg~z7XtyB7$o0ME=kLbzkUb;nw<`Xycar
+?$rBkpN<a~wB~Oy%3=WW#41E1`H^ZmuiSnF2jJxX8ElOc`~tJl|;Oh3*R at uBWi_?||6{Xf$;Py3|nUX
+z~~uOsXCbm5Dh9dgPBe>N9p)40(LlZ3G@&Tq*wa`3LdGKl~m#awrW4!M^&+*(|ELUZW`Tp`++Bhok|%
+Ldxqv3;LxPE|k+WnE*1}Xv~>6h(c7{`qHGN43JnHV>mMb%v?%|5a>o|Fn?EYK)1(A$1$vLExaJdoe?f
+Ow7e9$AYm)CvrLx?oAQ_hD9XPA5%y9RF&fv{9`1pjPXxg5liK}={ed4c5}fO&89WF5>^;=ijX81ka$;
+~w*=|NBxarDWS?AUIq8kN25dbiAzAJiS&bPu`DDA7yxq7w^>W*vKi1Fsg>L#F>U?|qew|tq2RT?Ok4+
+0C6=MroMItxUo6YxsD6^SbDJ4L0hUE7t)80dIe5Z5?UR=`wnjW1W92%=5(1-iI@`}Qp|2tp8PT!1$&C
+s&P*gBik~0L3M7Fx7*Ovf)yA3(|9A(sJ+rj?j{OM~F)Y{5-BkklhI_ at hVx_KWHkN)FI-DfY@`I3I47I
+8-2BFn!?N!3C&#g6bpq!1L_P+?aKoPTIq7kZN5Q;LD!wI(4vdEfTJ|e($A;!A>o!Cdsa$y{)rJDxy%2
+DB)sI5nv+SC8R9+ojgw1F&Qg4r?dEwmoX;0y!JLfm2dVxezerj*<<%)aE29frvq_<yu5?L0D&nAn#Al
+D$$=rKwdrySu;}?k9D*OwPQ=4~sDNWd4C-E<iyA8Kt{RJhVO=G4<9NC)y1UwD&LJZu{Wvr=&vF(_+7U
+&iDNv{%b*SrcHypr!3CES66ihvCYPHF$efRLS>4yxY<7agZQucQ?Gq&@AyO1wfwnmR2=J8vyrUjP+c{
+&)Q%(xr=o>XtU;BO5+pSf*<S{i`!0Gfj6j_f)!<b1gMzdPs=_ZI*TV7eKPFKYsjfIu{i`VdYQSu{ad$
+7;j|Y<u|6~gmV&fV^(T01asvMq}#!w;xFUs-Rol-|4U28ov`aB0gL7h{S-m6-^jIri;X6qU5SDJzu^S
+DG7T^M7TMoH8t6-*h7(4fdF`*~tKZXh$wV9z)KV~6GOP*ZCkg!sKR+$N!D|Wn>U3w~<#eULmg1&Dhlw
+HPJAK|M9S;yeLMZ#S^$4rs7ZxH==C_~yNAhyFD{~7X7)fWSrZ;0c)}#A)7hIY`&FiMf3;x+ at a17?vsc
+;Tje`-1$enu&A7kl96C+5vXy1p`Z?!w^L9<WO}bmlXyfLu()FrR2jMvxz!=I8_=nm&C$E!M^hPqz)sj
+Vn^AbTh25SN?BlT%BMLG}D5@=laC#O at 5Hu8oh>2v5^mHxQKABj!*Ev2vx!h_e#tmEa~i4d|&YjMh*6w
+B$`C=kGbsIyU#S<*1g_)bc^V?%a}V_WO=1f;a!dK#rkL(=>+;7qF}?nr;7x`@)TWZh7oI*V91Z69nJw
+9a_Gt}XGNDf2!Q#SSi<3e at Flb>Z^DZfV$+XBnP<9Ka~Alp(YrvuUP2dMpnG#nSux~>`W4-JIm&n=-EW
+-bdR5kyz8K`^BrV*$A1o;X=Pmvoi>uQ-WVW0|!=ZX!*Q(CiF|^i(1zA}7HkUYo%F(9k5ygsL5+6z3nl
+gTZDw1(dff6^G&Ln=#?Tl$8-QkS`lBK-%d+V!q5Z!-<_kW&EFm+ta(o8CW(Xk?Je%t9)NOkch{&fP+S
+0a^JCgPMJYsymd$m|kC9Pspz>6n|Z`$LQOw|j4=ZjDN&=HX|!m^ha3W?i7KQa<%%@~c(dtPF32DPdvm
+o=f<2bY}L!x&1o=X1F<gMkpq=Kl~vf;IHz9awwYPZja_o-!$VG;jQ3b65&fF<zZ~}Ox;|55tllmY$ef
+9Z=iR>xu+l~2F3Sy8Llp(#*FqC$$1LO`=uz4$<3%A{rXv(Wo}y1g^bI{y$>$c#4fkMTLf`ZYx at gsI%C
+JZkHNu9Y?b=1g`w<6SDbfPx8;_(#u{+tXWP*4^yL+BK2K`pos$Y_L1}S3RBP%yG)xHs0S;#@e- at kb27
+l56 at AL!7+dY*%{XiYvI6SZ^{&|CEOuy1qr8aV%yb$7}Q&?J>pZ20PnJX6X$JlZV80Ga&@)Y#Q4j5Z)Y
+5ni^ItN~i(jg*^DY}kv>1Gu;z&t&c67A`7TA6oM$w~;QT&1M?!2#QPj|><d$E$&-M?-Zy@>1t)Aa$UV
+pg2}kloY>JB={XML!&O})Ws_?a8s9*M0&ZypmIa=9Gx4$-|(xQ-kn*{{4t`0n^i;G#dti2tN51%xQhE
+L?q{*XIsHdB_Rz?~v2~B^a6z)J at m}iRyE5M&=8L8HMc(b;%`blOe8RsHx2<SZ3wd*Ae>+oW=74 at VXTQ
+xpe=+6C`X?eNQ6}_gBYB%R?jkyz_Y;D=KMp_gOa6x!>9Uy7R?ZyVQI{e)!R3Ul>RfE!=_{vQ{yR+MG0
+-2cPoUS}hAX}6<ofjToz{Va;&R at 9TJhr?Ae(0A^6(3We0n~waYtW3Q)<A(wL}=W8IO|;QMwQfytH2{I
+Ah6%{@F{n;{%y~tq<yz$YjZp at +}WnkAs at 4FAPPM33I+XI2L#(;*c6?v72&G&eNNJm6I=m__dzTWPXU-
+&rI99W-8hVBOYUXCB0~u*Y|(Ew#Wrqlc<<h^YAnMt3A#SxBd at MO9KQH0000800{-FNCig3a8L*U0Pz|
+C02lxO0B~t=FLGsZFLGsZUv+M2ZgX^DY-}!Yd97L7ZsfQTeebUzJTN3-WjU9Zg##l9_5v&r%r0g&nFr
+56W=m8z*Al6al-r#k|DGyRlqiWko>@dMZi!^ESas at D72PP=k+N(CGbmP;gm=AEhS0s1?O<5x-gmq4dn
+*qIE)M=xYX8fyu5WnDcDn{8_Pj4D+4a<TiGyak?9Uagjw~l1etP@;&mZ3B#J-ofrqps!6`R+ymx}d<O
+QF4te+VwLp>0d?^AAc%HBTQ5Z>O26Gm61JR6pf}>#~&<ZF8cSpdHgW5mI%u<^N_SsCZlnDaKQJVO-Qq
+7?5$;?RGfE6uI}NC=Sg0-F{2U5~Y`A2GgpRYCS9b3+(cqnN;q7W0lG7b_AZQtE;~e&A^NeLE913MH3^
+*o`I^Jd}cLlPRx;!VR3X^L9GnM{xxuz3knt>&wi^}11{x)o3czbYnz<ZT>D+|!H<R8?H)Bqv*l2!SOX
+4=5BBB=1ONH&@+<BDpYhLfK+|Vd)*MatRtmP-$R4uvsyuw!%_r!Y>bNni9?yW2f;0Hj;`5FHd<FSc4U
+F){8tlNInXqfX{{%KBCq}3OBYUx6=t+RH_H8F?-kfvtBW>aI66B~8*R0q at cU5jz53kfJI3Ix47c@UIT
+Ia-2-olZkwvH%t-*OX*z~>DrJz>?J3l}3q6oUwTM$7=H4cJ`)u%tQ at eePN=o&e<g!N6h at NJ9a*Z%#B9
+l{JYJ?U|e?hybAz$^t1M0oQ>84OIYkJ;}4iolo$a<RV=LR*KqY`7{MbE2>$FN at T%7!D+aUpT}MRMmk;
+DZMJ#1&f#bVOJvau_X3^bjO+&)xH>X at 41r)lV8_xk889YBt_B_xL?7je3_YQZ0ftCMQ?mNTPASZbNf3
+*bViXk319>&z7R>MXMu(?cz=OSv2zmJ9CvtyJlA=E+go=8>u93swAvR3wL at fbZLU4P~nq!HI=LGPj&V
+fn&2>5>GZa<QJ)<J&KQc;*W2}Udc at p-ygPMkezjt_nb*dt(DbNm5x=1fO4iZ8b&atHk?WK7~GE84VIn
+IQD_lC{2b69{zygb4tAUr7N$;mE!N?gq0GF?4%C5|F(WGYJu_Vp>xO_Fy4Kt>e*A3J5O9PYt=HxA^@Q
+fij8kAB}`xcmjl{<;T55%A7>xq-DV1jwj&T%-=`ADrjfn8PcL1DC60sk!s{*@Gh=*!38w)#Lo9E6I)O
+q7N|I<4;v8Rle*{tYBKu75xls&MfT#niwB1vV6%C0p)}y7Pp5EWeU{l63%^9A;gKde_FVJ%KV=c<&ch
+Kl8goi8DaeR$Onr>!lyTjHi?`7Axj0|)O06JSPRvrY5nIe!xKuf6K?fsCKw!gFcW<-i66^2m<QbQbk2
+4oPJ`(g88JD}lCLIKD<qY-5$8ZZ+0tAX_K3hO;gvl&>X?9n$6<jnj-T33`J1P<rq`u@@Ck50hBeS0v1
+VtkUQ7<xNah1ne2`iwYR}u?7TM#biEkU$OXBQPsCT_#J^jhCs>$@c1I(WNz at co%74K|)u1u4xsVy<)3
+6>g_sb|Gs;hCJtt9wzkBE1~nYp#U{Z59K{3lH{B$hPT{{Pe>mTKgZ0t46n$}&?2PCFG^MnO2YJfE3&_
+mBqu3ol#@gxS++h at m<6^9gqtUC0hKmj&~2c+D=_gTm4nf|W|rMS7Jtd^lC7c(!rYjBR3gGMubY84ffc
+L+E~MF at fcITq(LL4pJJmx2n%^fkQ(Pq5uz2-x=f6*&1G{;}2A}b|V5f2{Nu6;VUB&?r*r#Uu;gBZpyq
+jzV0$a`{H4wr`xKTNqPNtxJ&%~PA!)I(n?TmcV{KC-#@5ArnnYIHgz2J15F;eta+-HdppXB{eVQtY2E
+u{O&sSp{Kb1pdd>#4^-VP27KyQkHYMfNI-j6=32sg6_}fR_O@&s+`~^z10a(f;gH(<V18VGJ1r8_{Tr
+V0fo+F-M?^#42*F{{l^uwpk~z(*H3hxE?f`84|PyBGsxgCoW(Ti`4j*7mBboc9&)`UH at e<wT`8}rIkx
+n(a`bu_wv_sz8v=!?;bkKG93Di7?@m1g7hU7*3bwH4EDPTf{+fuoI=8>1YY*+p at NZG^F1)%YtTYOY~k
+hZqteCfNK10*u4I}Jxi8sVHO<Y>;<hPrD-`L(R*g8<IDV;RQ<OvUh}_D>BS`pU$ZSgq8WMZ)Cg7;p at Z
+&v(CEsg(MXo39E`*A;$JmB$rrJTjN&JcnZC#fTM|OracjW43-TT`2;L>Bd(OC74Z^+Mre1M8dp7i$q1
+8ZKOM58UEIhj~o1_A%ZMz;pv9+ at r(`Sl3k!rKF>FfG{#@dq?VYCvyYDGpHecejBkhnJw@(A=;as3V@}
+fsHps$RMbVz4g+l3+{2EstyEseL}p9ce(Z+BE(M6S~%l8{Nd9QKi-)3FJvtw4VES!KVs!|n`BXUhMjt
+>DG8i)A;BZDEC6VW=^0S-zP2ouJ$8zI5HwT!1e!}&ySkWo1M{uJ?R5-EKB|u*aWeYzpP!tW$Dw)PPsP
+iUNk>FBn8#^tU(*OztN?8PhHk;0c|Ym^G>YREH1@~%L1$}+*!{2`w+laW6%tMjCVE(&C+Z$8y~-=<e6
+ey~yUU8ZbD3lnWec16vd4jgeB)KjK!r-yEWH{`bMx)hs-SoOW+4B>>|)7lt5{Eijx>&m(*;a`7f%X;&
+AHLp{Pmh=YBE9}|BkvP at vJ))F1~sKwz;;KyY^xnI$W%w!XWsa1&Vi`^qs2P7Pj;C8i8D4*w at 6{m)Uk>
+u+60k-W%-x2T)4`1QY-O00;mH1*=HcA_*X}Apii2YXATh0001RX>c!fbZKmJFJE72ZfSI1UoLQY?LBL
+g+cuKl^((M5=OblnIFBTot=TA!V~=xF=h!Zfy-s3#X^Mm-W++nOV>C+bkH3BZAV5- at scf$5KAg5TBau
+L((daiC at VqQmA`ItE-IOv6MY>uSWi6svRb)*qL;gJ)&9PlvWSNZXw8$&nFp<ACa- at F5MPAF>I!kBzi7
+d;!&_7c1Ei2+ElcPhikzyI$ND+yunXQVX$)w1ml}v<}6^lihFFdhXrtwm2iY7}$wTzNtBkE-e7|gMIQ
+$gc;iNH#^XtJmz0O##c1V%)asOltCKlR(v;9gYv+q$UI+jUeg^@D2J)M;jZ)lqG}H?wtF#IiD-tF8H3
+N98=t%mBZqYx>EgT&L?m-o|q6Q1dbe=vfxw!;7*k%C>P_tN<s`QW_RWhIJ8EbvY3d5Y7{z1$>8T!U}}
+z>qXUeM~XW``6B_JDup#(NAY#Ekktf<S%&y*BFZMufly(SC-CehE$arBEWeqE_IsEY;UX($Q8poHn-a
+k#GL!IU6_wY}6X!e`jay8 at 8<{6Xsqp|b!%|j7Qvw-#tpZqzU{%~mgLj&*n|iRFZt?o(v;O;1*5wxYz$
+`rc9*uy9p!qprPkqutxA=Zr%j)tKGR{?9Lf6YzBbillu(4?|3PV^x5TvR2;FYVol+v3BFG;I)7HvahE
+BrkJk~ixxNlTAOr#@a(UE_ObouVjp-p-4171gjpzZ2B73RA@~Ghl{3G-y!W<S^=j+T&V;B&2y=b(+$M
+VJ4#lSDio!Zy8nYBd1G_*kpi<nwImjlqiN3LRrW<tYx`M^C&a8<3o_0MW<VngPai4V524nA+mlUr<$K
+J61tVZ4xl(%qe at FaK9ZuTu|p}5lft@;Vu=et$jQ7y&DWpZlQ&QQ>+&BL;l)pHFJ4|<zIu6u&9C0Qe*N
+mr+lyz;bEhNDOf3rxe<RBZ<j(sv8jVo-$P!q?(nJ9?e?iavFhr7t;dnIq{+Bar0O;X+0gxh?{eFg61o
+iB9Z#??xm%&E2zjGV?H&cJ%mGgBK0gPWRU-y8(5>T_vGJ_UxpS&3yW}#p$3`}U;ry6!3`gBHmBs!CPB
+swEK63zt2qaor0_#R*v&Ilx(g;ohG5K)Ljkr%&3^mq{LqiF}f5vyx)NkB+DGgMyHAd$0X;d=;N88Wa@
+c>%WcCQ3;_fjliPhvHS9Z3RfQc)hKcMJ~PwzIbG#i3 at ZuJRK_C6HNlX2hUL==L(UqD8n*JE9s-Ih9BG
+w4G-||L|kYy_IA4l!|^aG7hp;rKD^%Gw=s`y=8YdvzD=2f+o1*s2O*EC{jTW{9K^~U-|r5urqYVJkIG
+76b#QP{Q~^E+R?)SDx0TqWuo_J*E-rq$ym}izll}ytlWx!8Y*b%e5t?W?WZMNSjSR>g5`USpUli~V=e
+G9XIVq&Ij`W9!2mm$iv#26%>x1_Zz^rdRoO~LCr36V0!49W+7zXPtO6gJTjXUG<S{yv6#1Way1MvX88
+1PPH+|<Yq_T>C0H7w2yTtk}VL?F at C*Gq5}Zt1%<#ySG$$QsClAv~Dhp?HHPSV&NiTW|uixu_)Ari4VI
+S&O<5U#Lgb=sU94epMH1n9wcy7}0k6#mULZL~J53T=Vo+CeyD at PR2wzw!A(p&_tvQFjO*>h*&j!9)S&
+4__1Rb>~8G*a<sf=gq+?@83Z?6f+v>AQghzGD}UbP at kHR-q3afdxtJF%OTNm*`xLyE4e&8|wgL at ah07
+U$F&9xOftFEnRDk{fZ?6CcS>}4iV_=dLTGxdlI+{F$vYLn}7slm8p|6)^vB?7=-b(@AAvoFf5?susEY
+bfnJry7|qKGsDAizW{i?y6L8N5KpBF!6VBnVg+xMx)v89GF!#o34&xJJZH30^`CT at kuK=%bdi(a&b#g
+0H9<r1(#AzJsgq^3BDQXDyE%;@H4PH8KstIwnul7T0(Q5PYV%2J-&R<=cy~1qIw+B6v}z3v^Zlt`kv<
+;I1W5hu*JcN#3;Siw!MJ(DFOWj&U2i5^np29mVuRie4`cry7ZyC<E%Ectm0WZ*#>#po++|MXwfP2VAy
+7#G6D at 6C#=_g{3eHf&IX6YW;zZTnswI*AF24YcU#YFsK!jJ3|}`T1HH#;>;Fyf=e(G5Z#1T66i7F;cZ
+pRmCWHe;OmdcC4-s8XmN%>P*Vc}=oK|ty{A7;75l*gmvx0~h%<t&KnswJM`ps6T#tKLdw~Z{@W%%TZt
+R}p^G~)4qu7wwul3_ueSph8^*|qAd+kC#PZwZ%1WE+1CMs%C%wY|o2Sn2as6SXPghXl&n(*SnYc0lpl
+;D&FLY~ln&tR-N9_t0o0sm8_r-4GaMDPT at b6mDWnbVV(w`o;Zh%ZdnG`HxHqf>Eees&;2C$P_cKDJ5H
+0j8(}!3=SBsD^}ipn_0j0s=&_s2Y<vn&k|X9H0rIWm*<F(%<)9lXnMp at +y4t^ewnJXvaKI3K+2XW5*y
+`P<VtvTgR<z^a0U6a_uB`Ar91kQeD%MsTMFaL^?RYjYRE?JZLSc7DO1gS_2$e=>_B^I_;YG9wlDB3NK
+&2e)qO##$8v)@7XHvWx=sC*vks at 1;BbT5&nPJP{H2T<G+jF8d)KfbMc_^#Dg9zHCgAmt at wCuz%DePrr
+ux+{WU<JZ|#qRtk{5o9NTm-&CyHUwYF<;8S8;*|6DX>3&DR-j)?#W3XC at jA})`ihgq0&;q`$LIfSnp0
+V87M^J|fUx=@@k-a!@D1~3(f_cSoYZdQoz&oBj{78>Y4KgGA=6x<&1kpA?1YVSdCI{)!|LX+DcQ^Vjy
+eNnDz=D^zxExqo;8U(Qmmx2C)f#8@$GbFXeUi3xBBE4Kk$6mhS{%=dLk$~A}eES*Q99z+%j{^QMB?OV
+#n>9Gb<dPWM2z`k;l(tN(&QKPv<V&(AiJ(FN)f!de3O3N59;vlcEqEN<*Zuor;Cx2CF%3<0ddFYZtE?
+pk{bh=P51~kcjE-$Zv<6qEtjO%J$CIM#&M(n4<pMoTFs?<FBHbLY3K5V3u%l5KFa6T{rcUcje*58{-+
+X%bM&6`kE<PrY&Oty3GxQZZ+~4+ojWQ3yH`@yT@%cB=hkt(i>EYvV$B(a?na-au9P~?r%dytYPD0DaU
+uazw8A$hntCpJ==rGK at F-B(db&t~Xb%4Gj=pf~~cuhS&`kRS{@nsk<oBW!G0!I>rbea~yvy10X-o1Dm
+e*f<I^NTm()#Wc2?Na=l$}EAvO2!}nK-?s%BTgSig#S^NUIW!<zXFSj23+V&T)cW7xP}3_phcLF09GT
+uC7clxM`t1nQ!`iR%%JtPd9o$csF|8$FAHdMzU`W2tgpReu*CZN$B!+4!wXc^)CI!?pI$qU2+kZhkD!
+Qe><0*H41V}P$i*LmrtHD6aI&LEP6EK6h*L{#*|_ZO2<@z%1L{f%xTomXNthD#s;-V|B@(oml1gaCJ0
+bY9LKjhiVR|9=vL~1ZGMI4GTrbJ(r_c~>S=G#1O$W~+3>M=hcpk=2jEmI at y!Uk}Az+5Jd<p%G4 at M&?s
+#w;Q8>8e^HRdjdS)|K++-uO{wQAEWh>I6Y2@!KUcTwjrE*SOlFH^Vm9az|!mY31ZY%48}yA;`t46E%b
+OF;=tu|r4YK2>pO#KZ&zo7NQs*LjhraRllM!>l6%KAD)EHlY+<FmeDYnQQlVENZiB<lxi`YP6jJxzE~
+=Zh)UV?VSkFrcy6v<QA6tfGD72nqQEH)3KLoGZ8b4h$4J7p9{<%1HB48am;B^JcUcGcjN+h0OJ at zTkS
+Z4%balNr&7}G6d4#c{&4i=`6muo%v*e}U!Na+=|p at 68Dk1)bHgt(SixLw`cu^{#ym|<{8ZeLypOnqSU
+ at CTE5R;U8IsG at I>R8jrUZkS6=ew%OW0!AfCK8V1UZ}l6~SsuT at w3<m!=RlBc)3%@r&)_sPGIMS>&>lo
+b+mBC(STB)Xsl&7c$Ut7 at 2lFC%dT-;4GAdLc5lBuC)^iV9L>WNVM17VMxn8G7ckaKhFPx62zo~)_k<n
+>|x%GH$_RgTKk|%W-oO!WtZ$G6Vmmp=P`qa8 at OpgUe5tx7#z5Quhi(SZCL+qPjNtrjqTJ(=Y2b2<6b4
+e7NH>_{@PDM4sxHR6=w*Mf0bWDMoMjo@$SFM^^rZ(G*<~hi)>>>+9%m2+E!+uon-E4Pelo53ZdQ#=Lx
+xU%|q0&xC8#jrt8cTa6 at Rc$sRa>ko2L_xSeGfM6t7~VK>Xwfnm1sd$V))`~Q?FQZEFATA>Pni-5J~De
+Y at QK!ZD5VV2IczUr(@2XVvF15}`Qdl}fCTaSl9iO^<7XVRAywJ@{89Jy+#r}<dptbL>q23iTNBODh}E
+*2pg;-NT at x=m;}5VQj2f;N1?4tW7|Ji?Bi<4AR)L=Am-3uj-X=<Z3|Gp>9RjS#c%<k1XmbGV=CI$ck#
+DwDf=q<Ne*i8PB)-E$<<p3$Qj-QA1WzwI#0;gQII3K)>J+&rMUs#dpu{@haPGi4S?N_>@<21`%-BU<N
+Jr98X=M!nG`L>IrW>d4FttFzCak>oIDR4y9y4JfSvV_>ckITdC>?#~f=WI{0)1r25=h_|x-E)=#D{M(
+g6?JNz^d6G<Ykw6SyQ%V5Kx^$CZs9%>thA_MPnkC!W&7mjK38{$P*eL;0v}vB8XG+_ZYek2j)g0A0rf
+$GJMj>iD_{km-)MNIT-i4+g-wkjWn|t*~6WP~*V}ql+X2S#UyS>8<4Y42VdjNHaX&9t!N{^i7YpwT=(
+M^}T$5anK at P0HIbEi}-*c2shyM>jk9Y|@1QF at uLB)FDa?Yy91_gZw9c4q^ZioIs`be$KUbX9~hD6Q);
+tSohof at pz1jJ@LRT;z6;YziYlY at tQDNl|NH7_X%9E$%CO6>jRs5W|#dp#<V|Jmkq~d~4nw!?Y053w^0
+~SCnOYdqMl-xm(3Z9nZ!LFE5U`K=FQ%T_9g5AX{1eF(?*#EzY{5&l)u=ifins2GBl_64B>C at 556HmJY
+ula1=XWDeMf?ev(i^0S4O8n_AHry%@bf0Q=0?AJU#?K|s^4BzR~EIN%VS{MuBt=6kL?C at bD2nHLa$xD
+Fgns=_MAPbL>}k5C1g4V91j9cd)s0j8<*q~q6F37_tU%6)n%B#ejbLg+zhJ?R0BvK!7m7<XZ6TuriRi
+lr*Y#T at c5xoWrPT#jAua=&xA+qYCNZJ*lp&Rw<fgXFz#MCwRS%`hNux}~n?9YCiX+!-Aha)~#$G1bcx
+9rr8yPwo!p)a8xLiuI9k<p at M8hAbTpC@z2j6iJ;6O!$j-7!<e-TaitaQ(eh*UTj)16CDLub$kvh5ExL
+h#{8;Ry;xqquuYMJzU9|DrL}%P*&K<wSp$y#?L=(H=ud$WlUS>>pqXsa1n{~Yb4mstEM>Y_*6 at VUgt&
+Ye;hr{_R=r=U$Ar#UsATe2lyfQKItzbzfBEw27k_RW+Fpi7RXWb&yv~MR&@e?c^a?nqiCxPZb7?I;54
+cu%U_W at -DO9EpArKJafbm3+8@#=I^^_+v5#H(97hifiw|9vz2W7|P*wvyVnp5GQOvK5susI#nvzYx{n
+xaGC6Wk_oAD#9eof(#+jiGYSn#>bcEwponl~Y8F1T&fN>s9#X*{hc?ejfKJ-(7d71p>;7N;)rwh-T^q
+2XLif{BBvqi_4c6Set$J6{G09eERCeyC11^`)?<1A_dC@;_}1kC+MZVpM26;0~MZy%?isutfDNX*mU?
+t at 6`#FG{3=IJniF<Y!$dIjE)h+{lK%}@?={hDb$e&&10xNaq}Dh<KT-A6n1TqytTF2Dz7<2Nwv&}_9x
+z9Pg7JVeA*)=&+fB^^m(jf)C8+Qa at LlgHTcf~X5&~|xiAsanOJWJLsFs~EBOT1dbQCe>J}yzXZ+U4R8
+>X68~`A2YTF3R<&8|nM%PnOqCVS0Xs_gICRM2}K;8<jRb?nPWS>vOEXtx;Pf#epY0tn>rk%C}stFX2Z
+VzxnJWB!bXb#K{o)w-DLRe~A0f=NR84<M18(p1gjg3k&M=RG<xcIu{(3;#)v91t1_NKY!J1OGI^{cEx
+<<=L(7kGYXjT|$uqdn?LGA{E}pE(MCN!QPjTL=cFqKgeY`|Fp?BW*~m_8h0ZjZEkn;DDGk at yBc{6rY*
+iNE)mQM3aH- at jJJ7MVyjeQ)(LMiMSCGZjlrAyt_?~jH{%u7_HY2Lodd;@77U|{@x{l1|`sk?s!+0aOE
+y0SozjAhF?^O-ED<+uer4~g&W>LE$12TdH3-?6i?d3M(?e~E!`pe{&A-R{D0ghQ_Es7S#LA*`fYk9qw
+O3};jNDgH~<?xhHQ6VHW2-O_ at Vk=#WPrDSfay&rO4vjZ^h|f2m4UDF?B?4bu<V*u!YxF8uJ}x2UH(i9
++NUTCPngiu$?`qE;YV-bMb?ZPg!zQHS<YvdU`rc4jvHq-$)HJ)}*#H%2X!bL1+&sUu(NDt0Gj=N{^9J
+vJ}!zD5j1YdBZ;`zW(}aan!Yy;$J*3Wo>(lPCCe}wKiz_oY#Os>zOdxDgL)i7y$w+_9s~|0vD+rssE!
+E?EiuZQ`P^tL_^#4i{F)2+|ve6n^{^?sRge*hvzCp-#dzXrfU!qp0T?RDEDyM5Tx7t;nXWsFc5TiTa&
+AET$`xGY>OM=cu%98QofP{G>mIk$dFWzM~5!viojUfJ26PLA<=kX9uFB0l)I at u)*N*F5K?Y^KLn4j)$
+&|1%Qw at r;49!5Sz+p{k|19?vW{kSWF)$!@&J$xLat_BTiwG$`QT831&mx4nlk^Uya66vl(mvTzh|fIo
+_~Sq14=4O6*6XR66I6ddH)!l2n*c{YnZ;LfC1vbz<pDp&)odGZV)&RT_>nh5Ojwd)Dn&hW(Pc(?h(9>
+w_-!6wyPlsI~@<CcL;6)W+_63;`1LqW!3j7lx8*s^K at G8HXa6lD6WbX%2HW2YdYAk42S06by*}$EGcQ
+V1A<?zWt`4aDt!Pe1HOT(*&23u_KCUu at h&+PrjY`<RtFM at 86Q-<VSf{4X+rh<yZ28mVQ!g|jM#9WVZ;
+Yna at ZN&<4Cfi3DlaBXTV79TuT4H<yIX;bk8V`|9@@&SJxIlmTY%JA?pm8{b{SSRSE4zRc52hW>;t1A6
+0u67waufsF?lgV?4`UhJu-$F~y;Hw}vQ%bGdc80tnG+P43pb$w-~Y?BAdTO|d$F*kT|W0yb?B!W|mtP
+%j%_c(ObAxJQ`L>dLz#i9acdIQ(N_L+9w_9}OCi$lZ{^Tm~_i1XHI1!kP}HTRR)N at lbKBIYFS^Ro at 0f
+R+$`a9^@GBN$3`-?{@RtYYKYR?K)SJR-yXZqGQ=YEB7}zt}D)l9&THeAVgQu;A^>~eD8y9ZPm^1C&%s
+4Vu&KzVT6gPukFO{PrV*@^)8F(T_ at o>=nf6{g`2ykivghhz%E7euqgQ$PpEkPZFu{b&W;l+Hg<=29$S
+~&kVT0xwqys{u|npSn;QthDsxuGTuNh}m>%sT-vgW;;fYt2ji4#BvEDT4Qo=UfhvNC=Pd{FqtBU5w{T
+Hifk;bA*7Z7%XO{m%?%Iw7ulA@^`4qX at rWA1#=G<jBl`>RTzA5=!Rk8l;x?v4N6IjrZ!Z5$NW`V at pZT
+i3CYcPfv8(1=f4_HJvsD;RU}z`Zm+P-r&w+L3gfdFRF&A9!Hh=<U`uigAe^y<d9%<MWU2A7PqT9KiSB
+;rM{`o)r8GUYai-{|WyYKkl7yEWN8O$i^)+qzV1&J-aC5a|J}H1;&DoZzA9M3K2XAGf^*%3N`mD(E#c
+Y0W}#h-zWnMlnm5Y@*~E4q!V|5=W|KBE$Setu3ak(2nf0KB`PCp7=>MV at bMx3Pw>4QJO~DnhD<ivY6H
+l<T*!}C$pqYwVx#U8;sQoIWIx62x?v}($V0{icbBIgam@}N4bQ89L_tt?BeSV}KhU#_ at 8A6}F%7_u$9
+sk(hdESRVB8MEy)@5dNxu~59CG!CzTd#BSe_~EGq<ia(<=>av8<O9L#PNZ6_|A?Z_=Wv(C;k^@H1$;s
+|5F3T}~09pO8m6c+i(zW<n`qtiLP(7ETM6RzZ`u>r5Tbq{B at rv2<u~#)EP+9>3>&Rs{SJ*EX)Sv2QJw
+>Q7g~1ifVhzKU{CE19lZXs6G(a{fJ|LZ6~36*Ptrhzl%{#v3mdOPoF3rn6!PM&%$WgE&zyqij`xE0*I
+CF1o$W at Gu?-Ky at yBN*yn$%m+2dOkHyaY at W*v*DB~sHX=b6s4R*?0|KK_f%5)4k{%ZG?Bw*XM<-`TXJ-
+lls;boRA~6SubcsTxQ9z{s@$^c8+mu+RQqrh_xJ=k2ZKOtU0aPo~geqxkfprBX9etn4IKm4xQX}Vp7}
+gBo%9HX#LCoZBT5svj5p}ag8DW1$a4yM)xLoiflFwjF1jBt+dsV4sH4yKY5nD`NVVJz;{v*2cqyVvq)
+rRge#p?yBJ1%pCaOFf_KFC+D1g7`*+jd#;4ns{g#e#U`2l2r}#w>i|=m<<(hCHROR5^tITdanJFbQEH
+Ig*9>F$PrW!bIO#BefV^a$&~N5wOFoz_J+5Yv5sb+*8N1{!=u;q+yT`NU at AnjhX^&5VIx&I-<yv6rth
+L2g3ipQ586-78GLau;^l$U9cj3$qxohs%(&}RM@%U3sx{4A6147!Pr at USR{DNqC}@cR<c~kgh{7X(3d
+EbcxOpR*3~ft_f2b`RCnuOr0f2e_wB+3uP<L;XrQ*1?jK_WBLZF^_>67c9Dev*0o6ETlTL}uTzEnqR>
+f;7OW}RY-QNe!&jas3|Lg~Z)Ck=6g9p_CdLH;YP?xCq0BC|oV-Greeg<t_v4%g|CeECvh%F}zO*d|;y
+g&HkJH~Dz4&JC^Rq8o-MF+0IQ=Vvk!$F&_ at W4EP-xgEZrq8OE%Wr~)VtwCfF_5gr7457oWhlDTm?$2c
+S}m{MK6~}<Exk#N;bp$#Kd!w-#{vF7LG-40(1~YwS5|Vb3w^-;4S3CbXq;pG9$_)(<4|{}higQIxnA8
+9=khfANyZ(tn0n~kI?Vt*(rM=cQy-}qD1(Zc7F+q_UWyrq$5(yEb`Q2&1L2>bRJV&b4O+}KUsIPyBw)
+Rv73IO&U68v0e*6n$U+`1EaW8Zvy*jj!f2DOdjgx}olcd0wS$|vKxvLLb-)C#zNogswGn6^f7HM!f?T
+>00;9o^MS|_}4trfey;OI;?bZOn-PNA$CVh&DUwe$~2-yiHP^6m5hyCV<U>z{TFhV`ztH%`e5cF24B*
+59+%-}aZf7w_v2lEbnx0~;D at AgpQ_&H{T+$w#V<0af=fYjMW=HHJl5fBK2Yy9ZSYycLkKcr at JdV}5kc
+PyaR at 7qfeX)S4tTd$eI<9#L+VY`;|DT|$`yuz?U=_qsn2zC*As%TP==wmEQ+buf3|;hej&`Yz(jC>cb
+!zk+w8>-M=5cRmW%!QRwea>w3fMYKHsz#HgzUA#-)ci>y;&O5R0 at V!ya2kVf1r&oK^Tt{+x`GbC5WPo
+R#ds{F+=VttRHwRG|pfYn9o;=hoAL;`WeAI()hiNNNOdn!Gx-*9FZN$^mu*5RawIurLI)diQU=hIbtx
+wOsI-`OU+=o&ZKZ;cZ5lJqqG1sD_MC7Lv_PQ~3RD%D(uIw|(K*6`h`;r7-p32B at Hx9cw;N*2Qp0!XrO
+q&8sB!P?Rssnt+v_|YTM1Z0$P-0{kQ8~jagWCG=P8IyUui#M?f949Fk#hKWYUD4g+ju7G at _5wFhQQ`d
+KtAvZgYe8f_D9gch9*co19DFVv_b~|=&OLBTkr0HcX^8Mi2icm8iL+t8T%;o69Y1=Z^s*JsaOt64fu{
+Mu;VXy*;If{`!#slOsW7>p9g?`ip4|R;t6LB#ITe*Gv5 at G+gCZX?|6xJ+}Uoo8;#-&Fc!}N2Gx=B+1O
+Ts-j~tZI#G)rOQmk0Q5OIZC$yd&$`N8j0G`r;@z+sV(eBuKy>-qLgdv!Eyd=1i*_>0Fm1RruX%H?Xr9
+pY;F2k|8-N=A3gJXw%hY|*NrS*AAynDoq*zwAkEnWhb4{(D8#PkmcT#vD?>SBFat1CtaPYB?BLl$|Ut
+s+nVRtPhgS;eawNU?g)X&qnRTn{~|>vz<MkA;~r(Ca`y9s2okhDZF$bfF$tL&B at TdV|4Q`>Tr>G}dyy
+CkLEMnN&K}riGWc<x`bvXcNKTfpLU6)mwwOQ4D*CW8r8<0AhXD{%aP2`U++k)Lp3(#Oi)|wl+Qk2nQ`
+or2l0Mp&)Q}Yqk}gTk4M~dOYUnlH*fKiL~bjgbLPGj&qB&AzDAQ5O}E4Namj<&;|@7E at v0=MLIjKnl<
+hd9cux at tMJsps;4TQj)$+^;yy(!l?DMNj77M3dB{ZABp9)14!@naJQ&#QWx*d0gy?)_+5TaByT`lnut
+zhQe`iUo!yixijh)Xb_*Pu)rsxrg{5?SG-ym at u8li8l^p-NqiZ<>f)?_nr at mm9-zLEi$I(b}l{VnyOX
+!TE9UoD*-_V(02qtF_I7(5hsuSKqB6P^hDikVnvo>9J=nrdugs(s+2{rE#2K+6r2Yht7|lEWlN!TW(F
+F0H$$18{@Dg6Sh|<~d%FCF?flO5|p&0<&6IbOi8REbDq*ogW`BV3-Dlesw%6>N=C_t@?62%Zl0YNpN}
+^e5D=%Q4e37e*Kjp;x4;|do4Y)6(&VY|5%9TXucWTQ!lJE1hvPv=qAA*dmKCksE2`Nn4oTT58cAk;ak
+;kvl;Kwp^9M<#hA;|Tdm{}(^@nAC*+s&)rH!y4_PN{Yo7C^)l+Pa(@kSQ^@EvAp#RN_PndVpPm!0p7i
+lw~!Rt))jy4 at jbrrBauhri1q4&rOb&QotL86-?<;(W$BmT_d?bTdQX#)edDCBQVTGB0D%-b93Wf>pk=
+0h;FkAlhp at Aa&UBCE9P_8Z=3=3FH3riB))(Fw99qV3~*X;SNit2txFDR`7bz6xHF#iaYci=59w;xTxs
+v+?TI0@^W=5nlP8uGIdDb)i8I$M^j1O4hB-?$g$}Nrx{iYf5`a=Gm04Y_NvoOCNzY2KLjXjIa3wox1Q
+zEbyPG$ajqfR0rl%S9QTFy&1M?38&Bf)n3(Jwr4RIov$?|6wDqJ3G-%vvJODiW+i>PdZjl1(g9ire&g
+KB0<7^=RBKof%cK3RX}ja)?Y9saO;5(7{{c`-0|XQR000O82?eW2O+J*OO9=n~*d71?6aWAKaA|Nab#
+!TLb1z|VaAaw6b1ras?O9uI+c*|}_pjip3)l`EIZdZGqshW>k|vlW&c<oeMO~=0MBALmqE at 78dj~VWe
+a|5!>tgwmV)tQzHS(ZX<ah4hIixMisy$4(B(CrnnNvv=ePRI_M`A{%N`<o1Zcn(H#v|Jmvv${2{0AE-
+s#u$bp~oXhXyB2V at c5WBucic%F;_&y5eefc6p~51W`P(D={Vz9#SwEH!e^m~6rm$2{8%x^{9mgj-wT;
+O$)&8B-60QAi;${x_v6*=S^sg+B5V<Y9<gLmtyc5cnBb%1Qg_N6(6Rx_26V=nof?5pgbLxqJp*mP+}Q
+UCz)lJ1ucl1zK9nJI!77(%7y>Y4EFyRh{sKIoyHs%z*fkA>A1e`K5m<sa_zw}|iscW>5WeuWq)Y&Fm5
+4Y4{D^f{us75t{Q>#Xf#*Nl*L)PwXxZ-JCfWYb4Z~XybGlmoDd3Av^89Dp*5KJP()e=rk${V6?5pN#(
+<2W&F_+1{UT63T6qCabs2^H!Is||-s_5`qfZoFu-cajdjOqs|j<#L|{u0t*GGP)eCp^$!-we)fi6>lX
+yadto5t2xz6b~knOoT>DmVfUJuFkHV>wd3$?R4+%&bklX?<;35ZK4wx|2!5b?Nk#*4HAgpFcNeIz!(M
+MfeAX44a82|Kq8$7%p;>E`L0t3*J0*-Z`uS*l^RT$pn+9ktkS3<pcFGUpR$ONgE;V5bf7h#K&=E?7{0
+Q}09I)nwxF}nXEF=1ZQH{e at h|TCba(-#jm2Vk7l|>4Rl^U-Q{LbCja_%fhJ!d{5ol`O4`13xNlfmpZm
+;^c9pk2P9Jo3b;0qRbl304Vl_q|*vwu)OX10b)D~FHM;>(P9K|V62VMbIkT~Mocy1GuFtZjU<0}){zP
+aDpJDQC_DXDobhT*InRz-l&YIU!xo)BJ+r)CGnN)GL(G67At?ll0#N4;uK?B1y%zQb(AIU_RIf#AAm(
+RZ#RZa&kf}k4B)W^(=!kVrp3B+O at Wu^-L2|%_VzoL?8q#_|dR{7 at S_WcX{qy_HWLuR!MooB)fv~Y^@C
+=8zR;U<_J8k!p160NiCmTP%t#1^XIYoiUIy3WKMFQt1-D10Vw%fEREM8g%q3R(h{IjuF3XViBT45jD+
+wR4O%N^GIj#j1Z2dJBFRG(YcGRUT1LXS1x<2{mztZgB at pfmWF*{+UO)#)f~-)97BDpz(GyCKL%kuz4-
+<-N8As}7rUlM{$w1)(j9dn8-9s_HnD7AjkQEnvz=;C}4#nIl$h2qNjf50qrDqQo9LBQkCl%znZ{NK6<
+=y+n<G_A-)U>G#7pDa@)Dtb2ZY(8I9)yld8RI~*-hvBm+S-BhpRA(0SyB+7Vw_HPwB{m?t$ScwPC;(2
+Sre==FoXxSifx6 at U$K0VE_L;`kf9-oIAmJB$&)X4q!9>}hOmk1K)XK^ZajnjY38{>(u(u_A6v~%C16e
+76MA4+cSEX2UI((T9(w-RSD6*So?5*nmEPHV8d?LZFmW^3y;+=t(|8w<0GK%~GG~z1zAxsw@^O$uTGO
+tQCh1CPV4RfId<!R>lv}J#X=m;3^{xnj<4!WB0Tq(oopx=^+sbynwL9#b5VYiGbFJ^~)v>E27V;?9^6
+J~GyWVUScBU<A^<`B<-YGw8$Mr%W>ucRO7dhz3J9XLCX2GRnKB;cB*lw~uyXS#P<Nfb6S#4v!$Lg+&w
+jmcJjkcggdd&IhMq7#Y|3<s1(Mmn%%i>hHPg^yqSka1+pbsiGRZIFw9`5yTFRngrV`4f^nYgU!9weNw
+$&OJuZ9zZ5la<KZc`eUgIrG=~%h-#@iFJ_Y92Q<A9K-S{7_kYBJggka70VHv)RzrND-w1}#!NAk?zzH
+cNZTO~+a{0OFW<g;b*lNY3|G2Y$|#Z&p94WbErdeh#Y9p7hnlgy97oFk+O^V3#O`9-Z;)+QmRy at D7n^
+-P<<G9}2VeQO+*WNRgCnH5PS`ZkmO)BGqmj9JQ0xL7n)xbk$fju#zAp}g!_~6S5Ive$*tnqF{|gK=9l
+Vs8M0AF`bT}xPa?fMHC8iA>WG$dlA}FJg?ZVX?d7DVO)L_63u_E&ba*d9ByhuwHRYDfED%-LLf9!iH)
+9c^d^l$UGGI=1K?kD8ymh%0!nS$zug6f^!nDuSBT3?q|ybw_^AoxN&Avb_eH>TUdn-pkc6S?6g5L(9~
+Xv3y@<`porgi;J(-omxW7EI1j=b}9M=08|s3pA at F*OuTYmCn|Zg~hGkR{s^fRaWv_{^p1JbGnq;mncz
+_fXRJ-i4Anle19#Nwz+p~Xm{1u`5f11PCq<cO+{%(P46xxyfnjWDNh~zmB0b&2assla3%MAr%2986E+
+vdl#HqGkEr`Z^d!Xp3A6<LdBi|ba#f${@lVDP!%)T&Qzjh*Qz;pDPhuL;Krx21gQjU$MCcA6C^=_l6b
+5<36w`sZo(An?snMICHqb5*Vmu_L;LOxY&Hg9k_pCn@&s`m2B?n5YRbEpnVOZJ|vl*1n#vR3 at 8*DJ=@
+8bGDzGlu&lH`dkLCM4lyAM(Sl`XTgPWs~V*Ykfky-)Y|=eG~er@{Gsra)v3U?iPG%NpLK1L`nIieWDX
+-v;V4Fg>Ki at O%;aB4W{SfS!U$4Lv1|Lrt!)Xt_lkwG3HKxxdFOT7Jf+biQbS-mP_iH}i>_F?@9z&S8*
+nTofYLlhAyT9-p at a@%YW|=)HQqGhWB<Hil>vk3j{asO?6K!e|o*9DfUR;N2M5=H=1xFUIy{8JOw$zO5
+bf>ewD!eq_pc`wq(Yv0=_;IU`%iaqS43+Bm8B7vxOL187;EK4r-%X1wl3I=P|Rrt}Ac);gJvxFRl$Of
+oyhyjUGzM)5 at 2RR1U`@kdELyaC!A^q<)7g#V3uC+}V#y?=jdifl at ygQyNdg7NyGS4*kWMIr+&GX?}rM
+C3KxCOIX?uU{9bu?&XC$ijjV`1C35zJ=8p5Qsb8KMDy}F&Iw_j=C5Ph{XV1iJ`y|;IRP!wjQ^%_m5jd
+Llw<1X at IW_biCSHtCeR5;JuuS3||?QvidI81XkPTDlv_E;j&PXD-CxZMIz^<-Dm~sul*ZPO9KQH0000
+800{-FNX-mQE&u`m03Zbb01^NI0B~t=FLiWjY;!MSb!lv5E^v9JRKafBFbuu>E4cJ92XOrX!?MG$%Pu
+_?=uwbus$nZjf+VNOivIg3*-q at B?O`(lL=wrz$0t(C+a82aLmWH`0n|I|BgiILJwz1az9^=18)_%xe%
+?mxog$4zp%RWGR}YbNm|=V$J+ifEwG07%4y3zZ<gty`pGw<2 at oM|6D1g5X6%!#tQHV02Ruvf8<L=HHt
+k|kCjvEeu>AQj73SN+Z9>LfMk90r-(f}Tvrj{afbGnL;yLX)zaF?*053Gx1O$Bk!o-g=S>%>zInrpYC
+6Pd^Qj6f=r1`3d<=9ClEbaWv<7M*Q7xc37VAHl3+Zr}mIqtxjpV4tdKu$4nV2$qAwDe%1n*vkVZ;^Z%
+!d&hcQp at mbg$vk71N|G!LLtbR70q*zABcka-@@TD5DOZy&^BSu4<YK6pNK(3GG()Y_^d~cc%(yv0^vu
+l%mJXa{<VaG#&nn~s>y<G}vzvRdo~0<~Zmj#~F0D)FQPFX?;l8}hbZ<A??Ny%tZlEi?Rp`Gp(bNH-_0
+1=}lSZeWBuam4!#QYNEJx3y^V8 at pM$99>3<fseU*F*Mi+}sEsg?D;jM=dkB9FEZyh_=Gs4fh)OL)Fz{
+22cnvkEyb9s at kK6&$1<_%(>l0wIUC8l at Rrxkx!5T_t2?7fP&U9p9^RQNUkNO9KQH0000800{-FND<@K
+1qTBF0KW(T02lxO0B~t=FLiWjY;!MUWpHw3V_|e at Z*DGddA(IlYui8&z3W#DDghf@)8<fUs0*RVArO*
+a0zHbAHIg>0cEx^J^}p}zu4G%boVJ&WfTNw6H*e?TDNWPl78+GJfnaN9fj6yaP+9|4DZyn$zkrhE<bc
+fVpkrFnu>qDVXQ9AW<AzzTq**2@;gwo7kY%N_PGgpNM5Qgc8zr2 at EWRg6e=by25#I1Rz$Zzv5zH8P;q
+Bca$Iob<^}q9*1n6nW at eqKr@GdHU!;PKtSYxBMSUgC={yHE|=J`|f=TGm3F9tG`Ja at KM^7_lf?fwPq1
+N<C1^6leyc#P$Q2Whd=A)cJFp{$vyRoB133Z9fiG8b6Fv1QhvF|5J`5Cg1~-YuZyg2tesGnxvNDxR!7
+LOcrp_S|?GtiTOOWkZ^1=#A5SCcXVL={_5|_~)-#$G61 at U>@F3m@!jsjLSpAW(U;wW at UJ&F9^;cFfc7
+{I1^$Ao=Oo$9yN3|-_+1?A)scmpmLE9sFD^DPoR#rY`CR?QfX*;yBzuU*sEc$mKEB^a5hW5^YOl>^W-
+GYYfU|%zt-ti86?Ke1P!PWu6)9VSxfLWYHF at D7FppL3$)fR at fgiV^)v>J=`ZRnoF<gAh`?pJPn{DxU$
+*YF1|5?mPuA-ZYg=R*nDHGlszI6<u)CIOYds9<7bk*!rGRwmtVr2lTtRww|FXXSar^r4{B#3XCZ((P*
+3<e-Hr_<#WR$VrP%t)jbxS=Zi6h~(aD9TcMQwZ+{Dmq7jyMZnm|Z~9QDx|M at od8+yg7o&&+8IdECHU$
+Rd?LbfQO(kTloQu%TRgBOrwau>@*|aP(LbufJ4zKh8jXN393;<PUTy!oblwkIOOLed%s>kulMa2xJ5B
+;!o}qpsoeQ&FNgg<>f(IlJ6__GXw+Ki>DcqQ|06t6fc-j=01PR!$amJ)feIQw!pdnln!&yL2e17s82=
+qdN@@M#6FhUmrWcfJ5f(}ot5 at x?*Mv%_oQdfIB!k9Zl<~2IU;6qS*dAdIK~qMG8S(fHP)h>@6aWAK2m
+lEMt4O_CKd`z1007Ga000#L003}la4&UqX>4;ZWo~0{WNB_^E^v8;k<o9PFc8My`72K819(eO15#8);
+-y_WP0HG6-JS at F3>?8Kv61a4%74EzG-R!U<|nX!ci(s4iG8cIg+i5B7*F(njVgG9=Rb{}=RLgqe1!y3
+59kCv9 at 6FZ&+n)EDfkCl-TQ2M?Rhru-)HktVEeE<Gq*X8W2+0+jA3!qGjTKu403TaE=Snvg7tEl=PjQ
+fU%vf#{=WUSq&zf+h1$2G!65gkUdUa#NV1Lj5~R1AW0-wqKBM?btbiY^+L8jP1SPkeEjroBWb#;J at dh
+07lSKo at YH9<O(sV^;z$)60)>zo)1SMMf09zxV>=nJP&l7K&oKqjd`vrzOw5`SpskS`B0dWQyG~x|GwI
+~AyO2YbNYb9ec(=~JAx!O+$4G_|KdF?&BBPwuHgvN4h%~9AopbB;Y+|g(cT6SRCkXA=z;d=__=B%r^f
+fZT<MHhyfuM*nOq(_=ZND77<=VHBFNAq}a>7Lwm at 1<>orA=(4&(cMdeQ at i@^lmZBAW0ziZ+zgggn#xK
+8sxgD0|$PZV~8OcEeLm79a<Bx^lli?=cW+CXJeUM58?{&|AjK|FHlPZ1QY-O00;mH1*=H%L+!w%0RRA
+l0{{RQ0001RX>c!fbZKmJFJ at _MWpjCRbY*QWaCvP~!EW0y488j+-r7S`ATxFz;M1^S!+`bB0Xqh&Ovl
+=6(V(Qd`TNnb(ll^&Fl6$*NAihooLC|_RPKDMClmXs>V!v3ZmKPh8bQe)DIONUA-T4ys+Ky~p6tIh$g
+?NeE!X?c74+QVM~9ivvcHSy%`?GZHYY at 0d5ArMx{hpgnp9PAr$HAm30n$bzd(FZo9S*C at Hd4B6G9qEl
+iHkC(9&6}b)s4<r#e$y2hU68U}BUVtK5ywKw9Xg^tc?Mn8f3^B&u?75_)!=0vh~cPdPUCZXhhv;Y0I^
+xQJ-2VqZPbiwiNlwc>nk at g)zg=q#m^&f=nZQthV`Y!V?KkpfA5MO@`e^SgUA4L)5<ukw!*S!V{F*|&r
+9M|3O@=2a8UgQeArK0$`i;`Br^oZb<$CXhDRlTfCI<%^J7#_VFxDdOXIbb~q88+Me_w!ds{Ss*p{?LM
+t;Z5Z at oX^MDw{3^oozG8X5Z)OOz0hHvWsv36%B4urL3r#&Yc3H&S-hTQ2b9nf9>2u3Iuf~3T;RdhFyd
+1is-i%bn{SQz}0|XQR000O82?eW2sWj;XeFOjiG7A6z6951JaA|Nab#!TLb1!INb7*CAE^v9JR#9)`H
+Vl6EuONCj!~s$RyX}UdLm!H+Tl=uPL)+aRio#JGIo2Xeo+LNT4)@<jQnqWiDK=~dg2*yOe*8$0ES;?(
+&&xKnPUbnNy0I>RSb3}4AoKX1B;9@`e5KVYNlH4`s3wz-g=~Vd#`kA0QRY|WYY~cS(Z6|RHVe2iJ_xM
+^$zM2U-IJa+C_SifQmpf$YR%R^N#qaGtgXwudhF#?kPd&fU+{7(_ucA2=vMk9N#4M1B~f2t>l%;CHM;
+;pZ!Fjn0)DJ5ehC?zSHf&0ZYdADN*ehf9Sb1lAW<5X(W^ki1<U#$(HQKknISVRZm&eK-3hk_G}oY)E2
+UM~XUWfJpFdt--CpFEXE&E{3Nv4cckjQSF~AR^mY%?L<T5yPtExRNwcR1;)t*fsA2WK(go7|^ST2zoK
+Dk_?uJhJ8bVlzNC~rN1m3-0~v>^g$DLjVPBSNi}M>WSzdW9|;-j2Ys<mUGJ<A+}u at 5K!wzUv_`82q<C
+eAlhsfAem3kA4(dc+b(6KDDbqWD({k3E*>dbaVzgCz^)&L=dZ1>9vQt)j>5{GW-b7nnJQ)MJ0=^C+Ib
+ZjZm04tZZxS&Kz&7T|*z^&IbRlWr^9Wj0$<4da27rr~LE-GSC4UAE4)?5l+;d;0c_;S`~o;G6Vt)$Ed
+N&1WaTI7LdH)qY#H^&_+)sA5jS=Nbm<O60$7sgL?{JzJe-y8Zi9`EJ*EpYLdY@<|XeK>8?oUXndLacu
+wNLboC_1qcI^U5CQmx(XA0HO?lpFqKxlVtwj)7GQ3_3h1kXyo$wn%&2J;ovD+Jql##c?PH7zj%ZXr6X
+1K=bgrbpC^aQt`ZuH9U23_}Pr at K#?k-K#GFrOTZ)eF+kluKNZ7I3?7;&T4dh-1fJl(BU7o8ioi)rIVw
+z*|3qw=gn1 at tQd%k0aSrQ#~y`BQe!ea`6BtlFZr$V<c17_RQ1(VL>GII=OBhQi+ko-3)U$rf at o^Ba?W
+Hcs{_9#9m^a<vJ4=tvw}kw;R*<84~v*#il9I9eC|#luGxCY58w&g<$Dpt+sd(xQPAlq>pq&8V=sxQL{
+ at K>#I&-OQ|}iXgP9fhgAyOf;1_8z{>1avpLmsQaBCK>v)(mMlcFdjt>4Mo$c!Bl*sF-3%ey2Y6n+bp0
+R%K$8|bVoE_j~Wvza8(Z`nQ^Gma1{9|<Up$T>4M%Rnt-=r5=w-p>>x*hR5v>q!lwSCyh88*#2D#484i
+%60JZU5OSCuv at YK(7L~dYqJeoDGW53LTGh<HhI<cQ#IJ%((Gn#JYw_3Y)Oqk!>6<u+xwdMCY=9Xm!)j
+{KQj<Ez53*SuSH7mP?=!WiyG#8~8-T+15cR9;oNZq5dF(4Gu$&W*`Aac<X|Ub?zvG-zo1<{YaCno3Q8
+hxZvqXX$^6f>Lx;Okq3}eH{(~KcVh1&G1*hyXmMUhC$U^`)aTjYcGug#Oy;W-xV!)QU#bil;u3W?(RV
+*Ch4bWZP)h>@6aWAK2mlEMt4L=i*Lbr80093C000yK003}la4&UqX>4;ZY;R|0X>MmOaCwbZTW{Mo6n
+ at vQAe@Ivtw$8y+b|FF5_dD;I)EJ at 7>YokCCcVTkpf92aew^|FOn!*S*sVz<hgw3eCMJ{$r|N()tXk(J
+V&f<q%w#cwB)U!x&NOe;k=N-&{xCRp*!L7cx2*u at fV+nC^=QSJC{01j5`04Ab7%=IVnm?t4v=D+8DHU
+=PRY88VQzdU7zz_91$JqCY24LVGS;1-4N3$J+8NR_mBJGx;2dJ?v at H|11_10aP^}3GZm#&sE?XUMQW1
+Vpp7&d$qJRMs;Hs at ELpf36-0nsO}!CwVtS64D0u4- at 6X!M+C_#SGhir+6?gHk+z*q&!|B|j1=>nMlO)
+L at y}35TP&n&TfVnIPPqXM6Gf at IKVvT|5N6`I!;0}k^nh0{FDk*7&yn?lmind;S$~=bIZ03HK9rY+Ep_
+daYPUwYk4zahI0v>AVN3u0d3+zgCpusFHQRN~(J7ZR=rdop?jcCn`6<|WM5)=#`IesIi4+{h^okUNce
+a?*X(v!&q;XJx}!_rUQQsT03q$ZCp(~t#4p*@7XCB~?9urx>SBJp=~^f3cV1t(ggwYva*K1)@D9#v`A
+9sLQ|cMh!Y${nVf@@ftq3#rO%K;PxVKDQ8<cKHSnq9m#e%3yJh4v>6Di${h)*j8*uPnY=K+Tje8DO9w
+|)pML1PM;~qlNdUOC6w1ySa>RyN!8g5|09`5zxKEGNoQz=-e0qkp$~{NXoXnVR+c>k<b!Ff8_tY9*6D
++4>EQiocn!4nN}&jH*LeAhB2D_<z3V`Py|u>;EmJ0%h at N1o3x_jp(x3{Mzk=|*?`OO>XHM~MwO>8t%g
+rVr3MPX6zKm|I7W+oay at 7tO|MG*iFQw6GS57zR4yw^WDKK85wm}40M79h(D8wKTib^MSBF}V~ac=Hb{
+r at 4v+xyM^ZV#M|xw=6QFzk?^wA6jmBOn}RgqwvYc05ttuLfUKR+7sXILBk=ySP at n-TiJp;-b$V)R|4+
+U6#$Kl^>V8?Rxv?|Ed4I+HCG0V+&92jdD$=VtyJLHHV^PCeK58YsbLCj_9Z$Ci%gWs#(%&LE^*SvTI_
+31p8QB>{S6-AJ!5E=!1M@;^$9kB$5rl^+~q8^f_ at N5#Fw3icoHLg^A-(C`ibuN(rFt<uuq()t?FEHHq
+4V at VpNpeKWjZnrYY$FzN~#M>d~~JsTObbjB8O*Iu1KlzdpqRhX*YxrV+m=4=z-Q|BGRj*4SH5$(1 at 6w
+ at 5dm_0ntGRI?dh5bdEO{U3?stZ8i+@&49FP8i58o_w2zk^6>OvN)(QeYUN>Fi;(`vOQ7Fm9LI{d)GJu
+3=xhD)3nxeD-X|ey at rC{!**;F<KwvR+(HOag?6bxTG&~>K20?HuDax at Jha`$HKv=cZ8jqkm$FCw{R^x
+!1uo4J)0CdKv4fCmuUj=e!~Aj?atguyXD|(fpK~{<h!qFJRuZ+Lgccc;<B at cPu&y>1HO<?7~Tb`Lo*$
+Srq-T4$*z{;k3hhY-#)4@<aJ|H2XdoNANO|zdOQ<dz9aY!qu&{UjHtT2?Ki3`L~udruaU*%KTt~p1QY
+-O00;mH1*=F%RM_f?1^@t06#xJg0001RX>c!fbZKmJFK=~pWMOn=WG--d)mUwB+cpsX?q9*F2qF)*_J
+Uypg62bzq-)Uh1x?nX%L0Ls&M^~-R7uK?QS`s>j(Vl!bOzdfm_8&D$vYmOyL;~Fg;qI><3(vp4ROpwU
+MOuDzcDH+EyUILWKxf(+=3N3G~ahd$>u#%x3 at yxHlNBw1-HxQ(`?LSvY_1xQAF_yWU4f4MU(r5$Y8Vp
+RV4SE)HX|3pp8(Hal_iVxE}0nkf<DYZ-lI}Jc|t^N~UJU-k-fXdHw#PTb-*EGSjSnvw3sY&7p1FqVjh
+7uZz>S@$u2|^V9g`?Cp%{Qc5zSlqu+VCA2Mh26EM at D6QzUgERznD)fxqf{leVXj}$qdkSAJB47|b3wf
+g=SweCj6S}clOVE?a<l^-F8CrDwB0f2~JdK~dykv(g*!wWw%jbLP<=*pyy_W}j7k>x1mK+5d=WCBeXv
+Vo43*%Vw9OGb$%aV*6!``*$xqxhOOgmp#jDk?z+(BZe2NQ-*3JZ)PA%%_O(BQ&)oF4j&49U<*oY}Z{9
+Ujr05;DZ&MTN%shZzg-<a3g7r;I4V0yL-5_Jo})o-(@x1`onm3Js^cU19a6+nk=Yz#UZqGTdUylp?7e
+@&$eC(P%OT1A?bvD=}>);30v+vheKnsn!a;`;KQNxc8~A*VFmw^Q48)@D(^CXRO#1qKSwZOG>Rl+L&^
+$r|bzkvKSWyML1h)feKZLsaNVYPaKNOCD%@Ppaa&ymq2kCq-9=&Bdk7+M(7DJj%@7g2oAiH;MRIUFX1
+?Rr?c(K`naGv52lgC=kZW`sx4EPTk$<?%;BXjx6MPrHMdHe!!Vcyh}1za^;UIh^Jk`Rc=jDrX2?Rp|0
+rdyx_rOhC4FY>1#G@^A~`ov8s+>R7*R9=h81LuDYcdkJfv)NpVFIFOe~mGV?GWWPoV_y=~fU2N6~;4S
+oWRvO063c_E%8Xjnub<2}9=L at XZEi@T)X{c%ev^v0K$s$CrRXz-2l-Ar>FU7>!Z^hH;!sG@!w0)Oo0_
+T)Q1`@-29(X$_)te0hd1Tley at M7J~sx_~!3$b5CwyLjBCPB<ttvn_E3k?f84lZMueq`w)@?#{6TJHM{
+5(9;zcw`kU*>;I(Z9$wpsnz)&$f!q?eWEr;`gmpk*@I2Phg}s=m^7ZldsPeb(=UQfKZD`EH?x(@J at +D
+$v=&Rm42!e{L7T7*>$;yIya`#0oW95)@kqhgXVxi$<2{PF*wWxB;P!1}Y04uNwTm#%k%$Y!3Vh}VW6F
+^7eq>xS<>EVeLNJ1SJjJo%V7m0HA&7d!4=qc2s77Mqg3S6g7)gz){CeZ>(!DVW5y2=T|rWhlBYqK0uy
+I5CY^xRku5A{mPkrOJMdSK%Qqx%F>h&B+8lvdmI(*mVwmrAQwO`Dv4JnXt0>gOzqG?%TYeJO1s)jFK^
+i1h?4=v+vk<72UsKs7?)G12vA>7e$DJ+A9h1$oges0%4o2%iB4EBvhOG;OsQnWu2fvz_cJjaPkpuE&`
+ at X01Wj)&IiddDp$rLv`LWc*>r#KiH4#*Wd8Z??1agV at evh*)!XN>AGL<-uB>cL(y{(=FeSe at L~)@*R8
+pheQ$XdjN-Y9X;YAG6;sfCZj3kGY9k7G;@G&<*%)W)5OABrPr*?_%@}fjz>6Xi)eZP3*H{jE>gmXkNO
+NHzMn-Z`UYgKfGXV5zWX8&|*~*0-az3Qv!_bpqWe?qkWLG%73N&QE5rp9Sk=p}u(%~anJ{FjcM(TF&F
+`igWBVl4>y4ns;{`zYE%e7xFpSU))-{T=8<I!^r174B!xDAM0Yx{+!cG6?ITv^zG;QHFUuFWGC>ehy#
+s4@(geyoOlN_{#s0l8(IU!6d7gQ&HOe>fb7d((sV4Li(qg<(h3WtS*DcR!&7Sn1e%Ayc(>b&s!<NYQX
+pf*HtH%?oO${*<mrR8HXmq9MD~zaDL23Oq at Yr}V>%Z^RC*Ute}8QT<*M5iOuy<75avsM2-prK#<1DQC
+~j*ix+lzk6fkxnQh at ueiwg4ffjqNK$E*s?1V`ENTS08C#88%~RT9CAed at ElT!DeN`~od|rvTV!w}y@*
+E=|3dXtC3xeT|twv^e&vsB&SH at HK4;Oc^){v!eQw{(NF0r!#<XA)96VRoyN;Ntcohid4Gu`iu%C%$zl
+W}8gMHXt%iB2c~0#Hi>1QY-O00;mH1*=FzDh6Y$0002+0000T0001RX>c!fbZKmJFLPydb#QcVZ)|g4
+Vs&Y3WG--dO^v|{!Y~j- at BNBJkt9(11EohnL8*{>D}+#28*H19u2%he6KcV|47)RLb`7#MJ&=XTYX>9
+J!)5LbW_a30ld%I#hT7R6Yr8R#+v<F(%JLwU-0hE008b#y%Jj~9`irKa_l|@4V6N2Fbf{FZ@%d_w;|m
++!*xm($-;gws=L?VmvknKALKMLlUSuBig^OQD*j%R@<gBiJUB^6&B2rk0aEYIo2#iR+P)h>@6aWAK2m
+lEMt4QVIkd<N%002!b000jF003}la4&UqX>4;Zb!jeedCgi|ZyU!Ie&??kP%y-`sg>=tL10ut9mh$8x
+^`eW at IxFdhPy*@qUFqXXI2!0{`h`pE_)%DbZr-H^&pA6GiT2AJD1_I)*F^(%f>df$TB83m98!03!}@%
+ip+nWEXS7>@=hA5)npPLNGocqb!p-Qvon6Pkt at Z^xY2)_vzzN5uV25LvqCI+Q`$@_o2|JjN>N7&R&GT
+6KiA5Ndt1syd{XMwN~+bwA5zIG&Gn|@HXii;`t|p3-rsbu8!Jl_-!65%;Wjh!53#o*4TR&$l_2H{p)9
+u~aJxFY6ROa4C)oYLyR at qHsusqi3*IjLj at NT`t at 2uIh-it=CpNA{S&6#kd-lGDrc3pAc`wy`!v5`_pR
+T`unZ5Ys?aiCFQ2tME-iHs#iL*^5l at cxEH~!;fV(Z;Acl0q`<hs-~-|)#9d!?;mdI^VFE=3K2nW$?Gf
+pV^}ZX-MqyOw6oq{_>tAm!iej1`-gw3NXsK<L_$c2ClYxX(pp*-Q5aR`Kk_W7!pZt(BNe$dus!DmqIF
+W4?0FW?82A1`eG}CKLD|%Zw;RZnG$SmY3X^Syc<LU5jGQmb@$%Jikr+VM68Fv3f-=!mX{l#pzO(V$P;
+<&2;V<!dbKvvMkwFutKYI%Wjq4vh5m<+fpQDFe1V57iPu-p|In;EZOgkL692LAT~TPOM4|kQVT-_O;b
+4|G)jV=Aoa1v2qMCs- at LfKW^l&TZI(->ba(Kx)}LyDa96F!k?$9}BqcFCCYut)N*f~=U^QR!n&*~$6|
+!wPEN!(rcq{GNuZ{W%<XS#@d#~89Ef)uRC6#U}yUU=Q5=uqPr34F^-Bn_iB=eJ7Pj32cpOHuK8foloj
+8e7cMi|ig^|z!o>brVJ5*Na0o#Y*;<h&Np2ALPw<6aXc_$Tx!8X-^%>Rm}h7W3{Tm)<kBy1q4ipYZPB
+9Ra$h$O;Az#Fkv;5`jP`k~;*u``u(@Mph>7ota859olvVY9pS0_7s@@uBDoFvL>k$Ma-f^iH{c_vcGt
+*eCd|BXg=<BZd+-@!HUk2CX?(t*a8>|&p8sqL#&+>08`YvmjGh$TsJ at wII%<3nO^)3Dk03L)2aLWlfz
++Bkx&My&}$n9E)ncXn)NIprz2cLj1){Ob}M!Z&1<MTo{@TAc}G^nGQBm3+N~-zFAR}hh;A)tP~hkWsZ
+Q`a=O%(Mki*Xme9{|tR?1t!*0Ml`VtG>=U~2+GYvio{ab8;dW8_Abyl#yhbOmQ$5b1LROTq6Q2+I}J<
+CNkE`CK$-i-sVGT=Wk12K=%o>C?H_h+o4HAddV}lbA#d2SLLd^UO2#BxTpuDa%l)km67aUvlrBx_5;%
+Ike~LbUeAbfrV0mGDuYlWW=4{`jy*C3KNi)QqNYki=`sp&OwcWiZ7vQMzNy$O83 at mkz~7;`5Kl$jI2Q
+vi^Y8f_rS_RlzfN30+}txQPPJjLJ!)lC8ZgdSw%{Xs<DAK9y$gylnJTeiEOooxqu$P^)5mKexlDfE%U
+M#yx6sxpiBjT5%-)vr>zsae_W<RIU{YB&B%G@>>;mLNWBjq-fro?qzks_`t)-{vXgWgf=R09_6$L1l5
+_zu_V*(xA?Y3l+uVgvlD16kvoq;PP^`t{W37m&_Z8(V7L;z8e~a=Ci*1jFOTA%3641oB+&qsN>Q3s$v
+|??cVS-Aj5OOZCsa)yN`+0{Lg%|{@9(!py3}-b!LfX`aA9+7tl!#nJbXho>YhG2NSHzvUz=9WrWIiW?
+8_M^Q9C-;+0K&ikg<RSt#$bOi;N0HWv`6n9L~;*-<bWhsDn$-}HJ*1wd?>>AY&!SO-=pV>kD5y)KlZo
+a#Md3T#f1=I+*s1<x^uBpb{*>sS|<*e>zrrYW8VgyopM?qYn~RBhn=H1qXkWQJHZGmh+7g?0{OOUSVG
+i83=N?gC<@b(Q`Byh<!%mEe46M%&gVr;%sRcad>9A&YE3!~4nibg0g-4n01#Bs;)q^fP`NP7dke87O#
+=_1B8So;xg62^zMi8wg1)svoVZjN;2LgNig8WLPRFP|P%Ir$W}n~Fh%y^0p)C}?51{*VU}3LT_;h&n1
+|B8*aa0_Lu)#jQ5{Q}Elug+~Hrs1jVWUUvX+ppI8$8p0g;K$Z-L)db{343|0E-n`*FC!xDV=qne2iXZ
+Dsf2jj6J{8vS5FRTDNnB&?TnnA*%2@^juf$ar$_OBZ0Rm_DoMP{DfV$gh(UPOEW#jIr4!;yMY#9pX<m
+CUX8PX7wmzVvIp(D%oh86_46`KP=eD)J7?<ZN$)sHulE!Y(hiT?Nr8~LKSWg2DR!okBOwsI`aLX%GW3
+g`+2@)-4TWmGadA&+%;mb+lu{6*SQVFu^=+tE+4I*o*NplB)1&8VG}k)DwmxMyI`l048l1>wffB&v2a
+b*b7}6sZ*cxU==}UE{gs;6<I^r1d=z}wHOAw9v;HVxg$`pc11XsYNP7 at 0>B^_E(-{tkarSXj~X{SUjs
+9 at S7=i5gQpsgaE<tb~BYk(cun;_8Pt}!%vAhuAtS*=|a0X#rS=}w$_r7Des&_bC?D>rnQl0~L_0T+g7
+uDbDsRi}ZGEZ#T8mAAxX5AXU8_X)+{8GEr7Xi>e~99F6urHF4}MRdDRgRNt&+RlSEx at gcr_iYyR7ux8
+WS4=mxAG$dGNPAQfk?e>9-2SW1W1pi+d#AzQS5If{f at HAIM^5W1&icN^h%F(fIuHNmz08ZsUK$Q;n(b
+4g8nQ3^fQN+n7;lF~L08;+l?$#tdb}tG${5HRn4k$8-z*CLtoMqPTA{i*!slm7y)2tS4*y>W?RYpTbL
+8?^@$enrkA#sz at 5FTXNYxN$ArZoZJ5qmbY at r+Lo_6KJ^uY`<nWIcdiU$uo2$^QNl=uE+R|q7Absv2mc
+aORRnNSuzB5s%*f04*1#2(DV<Cyxi4n9H3UW%rinz`ZMNIBqJI^%|gK3z`z+IpIdKt*^57TT+mG~eZA
+sHpsivGem#Fu1JV-`}g~o2ozqzRy`_?Ln>R%aV4LBNo^6#O&1%QDbgN__Rl*l!}O)pZl5MuLG&W$wM1
+cy$an$u4vkaqG-6raWc9sa51{ezw4g;wm(YPdas!g(-f&^U-&aQV?PQwp3IR;+eY2BH`G7UH2 at 1YDrQ
+2f-^T>*N*!D8!ZdjQ{v{0_&CqY6vJg3^>8`YB+|lzi)K`L<ku>jdbG=%)|7qmuZ&yrSbDPr;o-2o`nx
+dW%Q`R1P(F3CR)-+@~^S2R5k4jK;`o(&g{I$EiOT)h#u3+!lUA_3>WvClwE<-+xGxh&OQ8^F9oSN?>9
+~P8D6SVgtA>ns%<O=OTskL0Z=E%#&+As|O#8gN}p>$QY)@A=Dz*QdSbsWu;7lw|RhdDphvAt0uJSf&W
+j^@S1KN=}Qaynx-0>WEcnP-=mE4*(=$D7M)SMkeAR+rM4MwrX5{`BOVFi;OzH7FwJP=8xScVsW!L=)Z
+gE9iwLW#6_pXxFcQcr&Jy;ha7sLj>5Yck$SP$>2U=NXTzj<kiC^J(`32%b0ZD0{mXdjccO at Bm9v@29A
+_ at xXj!j<_`V85wKP<=+GU`o>&X4JMngp4w$rIDfT_?aNEsq_hFlE1+RQVLBD!HT!_-r6(_B at IHbLwG5
+qpxuRbnKpCj}X`y7o)(dTb)qvD4#G4FrW93eG08(;ZxEP-D}abvEg7au<S^Kv>;9h|Y3n at R$5{c!D at k
+OR%77YSagZ-Esu7l(UKXyWQ|`sC at K4?UqxrE!1~-^*otUwb&<9Irq+vf(}b*?UtHbEWrbtmu3ADGxrN
+ at 1~K(NK5A4dred6F;<MUX4uc4SuY^{*lBF)G}PQ9tV4^*ru#f at WntIDu*f{=Fqs6&rXQQ|G%)JZz(C4
+gllQWwq9$guZLO_{J^o_nt~^b}^WMC2A%Jm&wDX9|J!-U8xb8&XiP|ye at xCk=r8IvB;QGlvX};pJ>&o
+d(Q&HXdVL>YENq=0sVbde#)!f(Eqd+m~G5VUmP!QT+&K4zCx6IJpj7u`;Y^c-q3O#;iQ1}rul|mg^G1
+{aZdUNU_rdPd^qa7QvwZ<JAwe8p7qlXc~CMS0X0iE!@D!U7gBpJPanEPy%9eC)cG2cIaK=4G+eNYE+b
+VB_-7<gAVf+}A2i=i7W<o=@BEZPdo%%MniAv++C_g{w16hg)Bk~tGLPkj|@EM1RQH8w;5W;)L~4RQ&X
+*-R^c>xvrp>&Gl+PXuAO<VoO~pv7}{vCP at 65Y+`Q>15*0xNif|9rdjM^ZZVlix<~^CTBUGl?Z|hy}Ss
+u7dJ#qf$IXP!QFbfwH&L>t-CfwUHpeoX~<as?Jr4Nr&7t+k3S)g90Ba(arF6FA#{sV*tNEznD)Fo>vf
+W!1-&QYJuV5wrc_Hkn?5klXjVQS>Zd*W{|zKM)sf$a;+(D>{tE~Z&u)Fh^#q<YJAYu#>BeDzAoJwoNb
+r#kO{0I!LN_`K)@ggRUf{(3maV8oD`buEDc!fCy5fgH>Hgvr0lE;BB5OQuzZ7QIHI1!ZYK>pT^zrY%c
+p@#qM8E>+MlMK4Xj2%qCb8F(sYrc`>~0gob)hKQ_RHUw$8FU9EQD>pzCcNI2!I30PVq>?dCS}ve71aN
+B0mZXRPL=6w?NZNxoT>MP;KYgsjBPFxT|H4wr792I?|s-uCK<b@@UAB{;k_Lj*Nq?gJ#YNIPB;<fs&D
+?FP`PO at Lv);_-?@gXYnR$nscO<(&1MdH}nOCKDoWGiH?zR*Nx*e#uU@;D^TrY+rI!%O9KQH0000800{
+-FNcZWdpy>?&06j1O022TJ0B~t=FLq;dFJE72ZfSI1UoLQYr5bCG+cxt1{t9A)h2+MOo8*8y1l?RNkM
+;_*Y0*u3AJRZeOSH|dEGeX9uN&mQ-^`GdsF&B98jH0|k;8ev$n*2_|MEP|gl0U;*zd2dShy2P%OYn<k
+yon7W=z**S*Ys#{QPXCiY<%dRbACe#4(dwe8c!s7g=42*!(^_v*SXkyl_9VV!f96+WjoFd(xY_lG&L7
+Udl3xcOp*<6=``JZHt}IQLVB}F5Pw|S6VQxnHi4hx3^y0CZeo>2JKe7<mszoy9H9)S-5F4Axxz%GkyS
+A)n?9?Jh`dMIF)M765vd%>t(5mL})!fW8)vSt&|XR!0U#f#Nt-!O3%*D&f*wh#O#uN2zH4M<}6r?D%L
+8AmH1RkCAK23f{!p2xg-?KwCsvt;!iXd#&OQKz;%R}WL#_Zd!nz5aKd8wr%0;VGr|s_u3>L=063q&(2
+!0xu!$xVwB8U3vcj*;8vif<Quw7;RY~8w9MQp*saS!?WiG2Y4z<Wub`$(OV878$fbq6aqS<9Hs|`xWN
+NQCmw&O|`wPro-@*wF0z}f0%#20Q<YoX&@R9TULcq`BkLM5^r&OA839;yv&@cfcJiT)Y=W6qvNPgz<B
+od*@$@SR`;Y^C at bx!$alD+avgRi#3IYhXraK5*x4kqeIr<H)-C$I%7b0?D>=oHOEZ)G&P35dtuJC<G<
+I8gp70HIk2-*%rbJ&|lcAIyCT5$pJGx0WSkMVGrnzXSLAbY!W6|3 at Ygq%nx?Y$j&3xuwzVG8XR69r#2
+yjG at R`3<Ei<_X7Jc1T`}6_PG%0<f!G|&&3G#!WvzkG0 at smg4>wS-yg(Jyq-5|CbPKr<^pwf?fN0NE4j
+v#3Uhy0kI^g7{FVKqsh^X}nJ_v)LzctP!mLn+HSC<|eI`2NXr5}N<@H~cVDwZ{1>b!wS2}#SpXDzk}#
+#8A!A9Cyx&1=qZ=4H>)kb_9V9q6Yb>ytp}H<LtW7%~LZX!xBF8>V<rwKz$TE!Au(5)SSHgu;wV2UR5!
+*AjwY;IRq=hUF(o+%gOtBF9kYA&i0AJ^yADwb}>+wph_~&kMKKu>xbM;el5MgR_<tv(KD~XdN+#V$lG
+jV1aROQ56e#y#U)tZi>1JW}}!<P)OqHP>#rRLJWYOT at qQ$b?gueM>sLAq^|{Vek*eUtN=PMGzA1ySfi
+*@0lv=&hl<hZ{ygg<{7HTHf!aMPU at Kb!+)_gVyri!vEB0VBv-?`cXsEEpF{){pEwwD3R5>TeO9OhK8O
+;(OVY_G=L!Tpd^1uZf9-e{1!RB5*<RwW)*IyZh=_X2+r9ohbw?U~Hc))%F4x!Q592oqXi!i9a)kZe(*
+()!jX~R%2fVWxH9CHTi>%QS?4Z+}>Z*KPZ<i|7Q155-+ at V}onbSN974t=N|BGTAR20Bm{T2_TRSfp at Z
+!k54YC*L;dK0|ZYOjjH-XiE7C9pPA{McFZ<z099JVL+=k|GXus0zbpTOx_5VJp1F1RgtAajr$CmJ7*P
+_$dG2UGLsd(3JLqZir`>GJ8Il9^pKpPzon&TR^V3xj7aNRum_L7{nt|x^L}$MqTUKfEmOAV7&(CFX`P
+7lnO(W5s!~5&EFi7k)Jt$s+eLXO`2uQ<1wqscgxCn7QaslghpI`e*HB<6&#T*ColN_Cz(m~gZJ7ZJUj
+NDSb%D7ATLK(VH|=~oV7z7LK<_dWi^q at x-=0T<#KpjmfHfIU&~szbAN%n}+>#xg6lLDfT-v==D2yREg
+4$aZ^q2}=$($fHAX|?Ri3qeKJ3z9&&$EK3h8zji>6~;0f(Zs5;62hvtMw>8ic5&8Z;R?j<Q8V(B7LJ&
+p}I~EFarbF^>fH!{M3X=QYZzk!zc0mZ$B|8Dq(0R$q6hERGmV!rzPDO+FdxhpFk{Qa2=Yj(Gi6m=Xib
+vC>%gi5T-y&8E0FbAunvc1q4Oxyu0L`RSA#=toRQ2_x#~^kWyDgQe at 9TU%!J@&*%MR6y>1`e28idv$h
+AsegPwkpAY{j%Lkyem-N&wY%LG`E at bR1co;Mh33i$H$h&CX_(h)!B1jCGb_ihR?D6cw<2Kha4i-Wrm4
+tI<%JxsSK=xqiWgMnglc~%Ag9qP3>|i3rkVXwxEO<d^Bg}4aGP{^X<U*81 at C6~*qoTimotxR=QRIVQH
+t=A?JJ`0XzGw#b$pSSC9UxNH8CcZ at a&@*Wzz=gQ-zx>0J8n}}q?o_D-GF>pP@?ykMOaLcdnMu7Pzqc8
+(cxh563iN2f*pYwP`(9fFz^NaECBFsbBK96?nv<xjD|%yDt#vZ612Jrxf3jU>t=&dp;e>b2Nw>)liJv
+Ioqwu}3N2e!*66pz4uA9f(7*w&E;Aei*RD6wxO-}(>gfkT7o?s(Ut4+%HbjkX$$3owpG;8o%B*44z98
+>|q?y!3rr;H21qvtEz$qdtPiT~9AfeR?G$T)-7CuIT5q6i;h}4W-S}PvBdouHADwYt-U0#XNVTukY`N
+7A5y5 at i;#I}rh40P0G$}1xTCQ?aJ4-6`~0SAMb!i^y3-8zn<R*A`6T)=dN$^@l%#}d^0WaCjWZ!9)0O
+e1oFt}9yE1WpW@*VhQ)`Wj<qSwNbB57*Zqxa;e$#*nxqIvC!K+<RJtjOCdUJUu+3jwUjjkhMXbVjN)T
+0sI at 7k}zUhpWYK;TkO75kiE%np$nnUXgnmni1;2WKhvN^TW&K<+b7Hgs2j{%3d_6nZ&Ku?K1UVB{IK2
+V2|9lT_M=tv#&II5;8O*r(!5dVMUp{ei_VTQsDS_+A|aD^2#tTE*0i26-azPrp0n?H2J}Px5NZ#c7-y
+1O1Thh}ZpI-C*_Jp;Q2Yq&QgkDsu;&?iFuSYAA-JD^f<=Xf^PM;~(ll_&9(y^7i$#RcU<GVTvpSyI2h
+$Hg{- at KUm~25n=7*^X{5OQnDH35B;IdN;Ug3qF9qD5bl4!zIoJSA_G7-+E=lf?PhV<#VNag6uA-nKnd
+!mMI9n(K%^!<<J9VJ9ZyEnmm7cPK<7y8a_&wVJzPnWaD=X!QNJ#n0C%~sa04|z4ZY}lamKc_SC>PD6&
+GSPJ}ZF~S%`KT%$Axcp&L}7aSUZ3=+_V*0HG!angj|$V|B1dI%s_gEg6CLBfhgme9F$_XIqa<O at LOH`
+!4ZLo+pUD!xmoqx3WOp?!0S=uyO8mE{^FF`KAXG=CbBbhw*Djw&u{d4u{S(9%v~q5&E}FoWw0QK*9n!
+l?azh^b{5{51ct621a9jq+(T at LM;{eNXP#=o75VUPFOQHBe`yGN&bw0v~frj-Dgmejx0ecF)1L`pNA0
+|V9Oj`V#*^122_Tk%)cPUnnrBI{K&N at rv%G>*rfgVn3*|h5kOrqR4Zp8M8`#!~#Pc`F7%RTD9hbm{ze
+@&$@Q6u#1vCla<!np?^G_);b%}~psX1 at dGep(vMsnu(d2^%xP42FCgIs2fi5EEI_R5mz{;Bo{(go}4G
+0783FV`8_H9N0^Mf&_xiJKY+kblz-zlEmp=3*BI`5_hXlXNs+}-E05k6pP%`+CQ%{0S*U<OKQjw^R|I
+Q&biZV#ay>_LJb6}2VCnF3IZrgi(%Ks-*cFPPn^$LT^XJbk-^vo!AN^&<N}Q=tR(XKw1ZJ at dtOL1=p9
+ywwsq^lrD~AsK~FBjCbeU4c3>73W-9G at p)T<Jz&BJp^zgayxn(_O3}0S+b`7pC)NlO^P8LtE$gO>O^x
+5Xhu_<j=Qm8LqTcx_n=Dw%Os4$QM(uwgvA>QK);DPH_V#8)o4*wmDoBrQ@(RP;5H16Hu2?_EPTD}%-R
+p)VH?xMLn58D)!V^i#7U8P{;m*@dtc%Pc%!BL+DQa8RKDN=D6(8d$d(C!vzVkfdocdzXAo0so at m^Uv$
+Ajy&K#BHT`Eb^UHMQ%?mHPisPQ2k399gf#%Vt6#6>!sbQdHD{H)ZkA`VAcWV?G-Oep%_<m2cdWI&Yaf
+sG&QF&0JLo|7|3*-YcfvKGP}girUR25ml?JQ$NLo96fX`nN!Ca95XYMLQ^)B&M8m#7NtP!iQXQ$zyOK
+KzfG^H at S86A%w=!+Lu(?agez_tw#!HvID&c{-<r%$s`^%fR at 9=&?0m4o;WJ+|r>Z*g at vLAEPH)8ujrB
+En1F^OA|)TWOssTVgC8h#+ah={hvJi*6dm at pW#Y%hT}H*r=Hb;WAWg$mq})bL8jczI+112IZGGSAK3Q
+$&zAjr7VKeX$}T&y(7#ZFEDyoGLdCVtBKKZi?L%<5A(wo_<Tu0>kF{@?bimiPzHqkq!m7kRDXF+X=~v
+QZj{rLgk5bV at z+k!V62Os6d*&W88{l!*i*(=3qgWB7snpbT{%*?cT;A#Le*oCSM2wzOaK8MN^fc7gX^
+YmTltsH_Y5b>hrf(1*rWux_EHr*2`Y-8Sj)#r5>Y6hl|hdn$_jt-c<K~O*aX`D>7XG&+c?Zy#?Vcnnd
+>0!fu-T12559*gdP_#F%5++{|))dkD+Tsg6CmF?tdVfq>4mkpPXGqKG}n9qWfSiZFQ7W8+B4J$BuaGS
+7(X4zJC`DGq!E<)Q7ST>bvm<3iv{ggN^`R?N2Ne-;Y-jpUgbKzIC-|HZkow?=%fbh%;BK1$dB0Z>Z=1
+QY-O00;mH1*=H=z|6%n1pols4gdfV0001RX>c!gV{<QJVR~U<axQRrl~>!2+cpq=_g4^E7?O8orD+Nj
+SinWwG%W%IO%b$xF%|?@qAYeLQX#3eov-f<sS9PvX{r}fqv2f7TwG{X6H1HLwwhB)MBOND341iEYAvV
+!eYNW7l{y at RJoK;1^e4;frVtfht!~JlAAb38Pk!S-ErlUMT1AXFrL}tICT(?9iN~~I+VGXt=ld0br$9
+UWr``s~L73^t)ZgHzj5n6Nb3AXgR at w{bE&=cIy_M6 at h$d~Vs7%kVYpXd=NG?oMu`@8+a%6qZ21Yn0<Z
+rHxQ1XqER;y~{%hgd<ishr}wxm{3uwb=XVbHiHyFPm9f!p_v7E>x&4RPN9TUIe+$j|IEV>+H{+ISz47
+sN!5pLOI2xzIf=9f+DYiVm!r$*lArOjh!m8z9H-9UmtvaX)vZwM}?7{fjZ>a4be1cbrJNt9lAJ<P78m
+pi4+$DUA)UiUhN=`&~(h`7P522<q+a(-BXdlg`q%f#CR1Bn0nm(m at OenBN_)-jF}ewp5b*up{55->2U
+t<aPR*<cb>^SyHlRPFlkaEi^mSTmpzSkxJ51aLsg9ii}l(w2%BCjD_ at 74S8%W2m)?P_^DAIWvq)UL6o
+<R%fAmrI*1Vkft)jIbsT~c;y5t{0*jFe0)bC>Bc1T4{A9Vz<9!5if7o2Vb?M*b#UWSdmbP7{DwQz{AP
+nqz@#4jBetYtjU-AyL4tYjcrO$-<4`2nx1&=v5R!Apskh~}tTL}eZ15W#{lGaZ-p5tiiEkp=H;ccVQX
+|y?QWy7+kxEHYrGoVb0bqT&hLQTBjU7vAmRL<s}2Ysm76Nd!r!P|_<E?z`fk}0iuW~=i=nr|<ouF=W9
+ at lDLvt)!W%Yvyt at xY}QTNJw_fcfEJXM8NDZr8-h$bJg12udFhB)LuX$s_Mdm&ekz at 11ii>*sSbOfq8U
+QoIt*xscO)&N%77- at d6@ut#bm!1S;AlXO>S?e6{qZttte>_EYpg?!tSEs??)pLI$b=>AhQkJ*Nn&7Mn
+N)Qak|@5H6xOYK6=DXp3zXhz~QaZq#6RCNTgDXaajZS({Bn*7!c$;gGg3>iMGhD74u51Dz^+qCqLf%j
+rx)Q5O~B$5|?5q2d_=qc^Alh8zLdfk$hDwX-(S9IU8wMhw)>KZZlv8NQkFZ2qgFx at owG6?ogbFreVDC
+x#esqi77r4Jnl^#K|>_zdpY2M*%BvVrXn67z!K*e#7ae>HW)>@RjATFxW-xEzG~GPy}LXEYlXNtc)Ws
+KblXGZgseez*XE##+bwMCkOpA&##XI_-Oi4nMNAX5kaZXnvgHac|$B<3|B&OSQnkx6jCiLQcQdaKxEs
+wA8=fYCY~l9MV(Mi967ur5>-Kb^6$w46#Wyyu*8L6V7$=V#k<ox1pKtX=EK^k!Ax`pIQOp}7J2*nq{2
+{)4W_xDr7<3_=m^pm?416_6{8$8GF;{#SC47#`_6P707LIu0Kr86J_1(x{~$5g>UB&IvEM=@C&n6`fx
+(|z0c8hS?EAaG_O at ub%TCzk7sfQ?1-Ct9zHGx|%odo_N*$qsH<QAI+PlBRRA<Iemy^Ws!+|zh{R4YNz
+tE#UDbn#B<vU<STj*)8Hv4ZzbY-nZFw=`+Hl*}wxTCfCacyou#}3*y%p- at UBovs;EDPGDA2HAV|I1el
+bXfg<s*daoo3t@)?H8}^x`A~YxAvOB`Vj7jovjW&@Yf0coTa*3)VsF1S^W!8O9KQH0000800{-FNSv&
+ra^(vE0O}_I01f~E0B~t=FLq;dFK20VE^v93THSBsxDkK%UqK{DC2eeFw`ludAi(Zz at 463%wz%E)P-F
+ugEm1NrlBg9aJ4Vs}y)*ofs1G|?KO{0W91drG^F=yuMMaV%?^M^aBq6+NM5_qhNl|u+CFc8TWyecV6u
+d6nSH-F(=OuIBg^U}j_N!HnY#ZLhsi<JYv6Zx9n!bO}o>SH+E^6s$exTV$QB}0g2CC%1>P)n;<j-*>4
+ot>fTb6w1<}|dGj8I9;aH7AzetOHkbxbOcfgSNS(kWi{GG<&hB|Rm$*)?e^)iQ6nL)sI<<C^@NwGwvt
+QPipx<!ZHpMPNQx<bEV@?8cFxtIv_xH^2w2!CD}(W{C@?e%51QlGLE<B#D45Evb~`Z(N0ANuuqFzy}F
+|M^JDT=z)y4ZY=HxTh at rg4X353nHiVqo>ff3XsEyAN3&Y%f46(38vj|kFH-K^qeqVD2-cbth_0n!IRK
+Q`TqQ{;S(&d<Blmv?3D)EdZ41!wn>SBKe1aYILR^zyMf)TPZADjSgw}*MphH$GR0Y{}g+~gE8A0*3cX
+zZ^JS|yV00vns+TzYUA(Z2T(cmUEDn$L<z5CN&{`~fB)U)F`O1SO64{BPInyFHxYhsWCAZt%+lDD*|P
+%v$5ZQT$aq7et+YM8_TW_jdl9|l at m(Rd|I3)<qeOe9!-uZ at H2J#056t3!N at OQ~Akguz`9MUS)jH9I2J
+$f%e2-!4*(eF>raN92ki(n3UwvtmG6NmCXEU%w(MKtf;I*_`<ZEMzokJtYjM+PC|g86cW7qq$;j(v%%
+)(HbD<bruG<K}2rJyEDrh(ueIZ{}HG?p%yo9C4CrXZ69AD_Ig1p{gCV$2nc}rH9_}@;@+D;nz;)NUdN
+s>hFPBj0Vu|44{cXhS3f?RJg{flsW3=Lu0(qx)QqAsl+ceEfPmMUNzV;f^z1O1BoKQ*c`mQS)l-JgVX
+!g6ARr*bZaf^IcyU)ZG<^yki{Y(mPur;*)k5_Gc+PaU<VlWB2U+`gi=Z5PH_Fg<b&{IQH8<`<0ESJUM
+5i_Y9`=kI*--sA*MB!n3#k#u-8zqRtIEANCQ at a<=Kd#IN`Q2F%<kvg287bGoNV3XDNjkgrL}C}sE0(D
+WNeKNBWrCp{penfA at C9BY6Ala$KXgT9oey5w2Zi&BM>l%vRYEbU<zV{7P99Cnj^cG)+xr6ik<-QEF+@
+jklgMtJ5yq`6!%kpVNkfhQn>!-Paob9k?Uu}2Ik at lX!IPjK<o?NKRda#hodDSjV7S#R)I=#8KMF_e=_
+o*wlEc1>272|Zjh6o1w2Y#56g_Lat$vkp`6HLi|O5whkokA!18ej+pL7eURs4}V3k at Qpcbnj48|`kIb
+BP#F>6zW#1K7ds6pn?zxpV;GSgm%ffEE7ixAvkO#mfISHXNlNX1orWzaX`7A;BY0dopyo2)IEU%+wy{
+1HpmmT4HJU8^ewxu-6S0VHDlqXD{us&j%h)aW4g4q)$?poNaSED0 at -^dw0mc&(j+BLA3t*>iwBqZ-cO
+8*~Z at yMpFXGuWMWCzKU@<4fDIn0!VdflXH`UV)dDCn9S21JCGHgR2#k*HH4ZXPWBm$#cG;mE609gN1R
+5SSqNNO#Ji|`|$SB3oiIN-H(i*6VI|GW}y@!r>JvYV3ahT5*sJLf+Eno9!(fDetL<K4MaNNehV-mdqV
+h3CfTLQK$VH?c9qDwl8r(FZqX3D0%zCcC*FeEa|S8_l+wC at P^UWwlOl5pma`Gz(pEGBw~wXmUjv*NdW
+U2hV at Fym2&R3E4gtP^UO-XpB5Xw^R2`!_*4xD-mkcjl)SM at gStuA|WI<Ku{Cz<KdS at ne?rEF7Y|~ydT
+Wc>e81y^sEp`gr$FsL*Vux)%nZOt-CY<W_l1_EpoxQi6CuSZJf?025G)+A72t8pOjO-m;TqN)%_RQ=R
+bK$a2uYFe0V#?rkF6JN!K0<einczm=NTT-`c<e35^{5Fq2D+3jmcoJVVhwKW0?6jkbN_Runrrop3!JH
+-X3Vb1KQK&Zm<;-QY3zWo;XH?oX2Qj%A3ywc-uIc})|17hz)L~tqM8<|@bh9gJv-C6<TAxrH{h(;ROn
+=jJvX at BlH2y8zv#Nw9WQn at rl=(U`sHU=PUbpl+d_ at iDHN07IxLIFxe{OZU^uHqKcj6nAkd~|1 at t#VhW
+i at FZ@%jMHfaLRGywfJyaoUSPOQN9PPACJo+YnAFA+pwKWG7!Kgp1W0STgqcaPp4wQ7JqHa+=7wS9eXR
+=>6yO1uzxK~q4r(I;Q19K<|kyH{($O6x7TEOp+MrK$BV!Qwxhl^H~&t^r&jGD1_UqF?0^bQtZ>y<jVY
+y^W6#5Vz^n(xx8*+!DYbpBjAm^LiM7OlWTG49xOQ0V61kV}Z9TY<q!Z0K=NR8$0L;mEwwa%Ue&KYnn^
+cvBg*4VdmcIeMz7Dm1TgIxw8<)BcLfqqxJ9RxMwt5<OhcPZf0ogC0<4|i|ha!AGDG=cD9C4cN!4J;R!
+}DnA7?M6+NUw%<BuKxupric`zI+92Z}oC9*oaOoWOVQ$%*h*W~kFw|N<Z7Cpu4>NgV)a`_vPyiNgwDu
+9hvJ6?36lasJ<$@ivBh}WABkRS2$C|(ihE83ttW9NnyaxO{OJF at AyWMmI7&_sKE=s6Dk7|Z_qzmebhZ
+p1z5hhVcHl-X|XPTKL5ds>W~G3`=;(({4G2R!?oy3%%B{ON;)GpP6u{?4&p;_l$|9jvXJO*rd9$<DBD
+gPL35dw6h!kHFiQXy)Gs at 8&_HsoP~7P>lzhufdZ!CMbd6!1T#Gq6 at l}u8EtIJ4Yz&c`0dyP$Mv1n{yJ
+w#S-){VVXT8UF?axYzd_WR~w*xT~2v1sq_Ke(>iL}UiyJi=}v}LzKKl-sU7w20vagCd+i9k)D4?nnqm
+oIe{mc{Q=K^_j}GgSg+tt);JD`{8|{NVbE#x_M$o`55k%9b2HL5MOKGCvy<5Ouw}tcUZIwLCxgRew$M
+-e)l?4Dg)l#hdA)Iwhe{dymldhhH66OT$Uqvv7fyozGp++(B%#=E8=JLrOex|2?y&GVN?7a$lJZNWI4
+g%A%Bv;F<?Dd_S#hHw*mZ3c|`_k>mbi}&;DBfOQcH+5jVtBJR+ at ZtoVyHN`q8)R{faP^_JD|^Tou<1s
+)z at sG7`zX12NN87zQueBl8=uk7SLzi8;Rpm99bKV&inAXc00W?v7Gf)ZlL?YMhpiNMUgbE_#KSrf;);
+B<GA*K$kmw}U1$0YiYLs=YFubBM!m^Wqwo#IzLD>5<Tc21Z_e{WTyO33ThDgk9a4E|!mT^cAB&3iDW?
+1TMs7j0Klmi~s9S$vUZQ at RwY>TSO5Xr3pL_pPU#&pNBUQJ<=2t at P|HMepN!GsK3#o9sTl{vXL4nuyI(
+$G-l>6=7T`-&>f7w&4_ADqfvV)qi!{2C>7;TC at MxhhIk<Xt$nJ-dQOmX}zK_-~2gTb$kqJ1(8QDRoI*
+Q+FCaS`Ly<G$NPG5G=7t0OblM%2+jpy at eba>O4>kWUON(j(KI at d0a7b0lu=dm*A_riZio<jPz>p=y>7
+%E5>MszAfkm3y<F0Z<9rQ$%0fZ)da%#~J1>***?e<J!N5A5!4L<Cx~3LQe00mro?^EOT={tYo>vTHXr
+tBgWUSw{Vo8XHHMk{WF}iHP at sBc_DQpVlB&A_BPTCzWl<uL at yj_#t3X`F1%VdPvDvzpzXl=WBPHI?bT
+LZKV{VLUjJqX{9!M$UN81HC$dj$VOq*_YVoW9R8c&id^s=Sby7b*yG6&c4A?@%K39Ogs^(nQ!THa;M1
+931f!C$Dr&MI at KHx<yS{5wcCF&G2pj`hp&HF*x;vsg%c3lx(rG1%`F^C|QK6J^kuEE>5I%BP__^lbvR
+5<!`<zi*w9ReIEFX^siSDw9>cA&MgTCEPL1RpLqp70|IqSgNaP)h>@6aWAK2mlEMt4MibY8_z&0058;
+000yK003}la4&Xab1!XWa$|LJX<=+GaCx;?TZ`;A41UkAFk6NsoJ?q67Y16EQ~J=J78d%l48|vM5}$S
+K9NU at MrS!j7a&FFK_R?Emz;R^hlk{2AR7SUi(yDj8;gk~5cG at _?K3gq&$La7MMdQBIbuCmqy=ptH9B;
+cyNFGHMYV1Up_fAMVDJ+HUBzvYEb4^A}>kQ|M=&6_mVVRNNxv at g4JFT42a*-?bSxL>xNf@<Jr)h5jA$
+sDf)F!v$DR1?O&#DWpDp7aLSZ<;yLSMKchsmkD=I&>|mr$x$3*ksXtdPuF@(VXbZv>Oc8e4iB5qMA>G
+{sFF`}b0qX)B-h4DU3Zb_=N$ANFn0 at D@-WNP_1x)bgQmt_zlSTwB{rE61ED_FfKPdZWA|{0Uu6ESFUV
+jujxJ)d&)wo12 at DPeaBUPJXIADl42e&x8$|5KQ8<UzXfDp}dY+8EBZbVb&@53fLzC<n3dL>m=R}SP(C
+yWe+H)V~8&ARmY0QWKywwb>?}&JByoM(L%Q^Q)ROHiqAvLOwouFj~Azp8L^E%Q|n6IyTgx6TAq>OTpq
+S2D{xZE3$p`B1Audo?OC{@8H0>5$}ng^Yks1-L*q6GxzGE+J&2RGIkGnYqJ>I^v);dvF+RDb2!b`A4C
+$NSvx?vOjo<u6@=E-MgSp|XOad_JH6hDg5+gv*IB=Hr5>p8Nt>qyE4bdG}p-MP%j#I+ysE#5dZa3)~Z
+Jmv9JP9Nh3;e0zog>Mw_aBYXCR;oIN#FAV!|XqLdvIWFXSm(@nHdFldrO)4PWQ4TO1m+g%M}mr1YCrj
+y at g*q<`@iRD`f#_VAvbXeTe(6WDa>6 at 4v=J@*yP6Ku;t^K(^t)ifq?;cEwoNOF5YemH(Ic^k>I_$_u^
+#(sV0;z1|d5Sgh3)wgSS63S}-X-(nRGKfvp8^L^|oSWZa-iGn?Wr5Uo7#$<=@ujJ;!!mH}z5UckDYIg
+BRgZh|UuLD`AD!ockp(=fipU@$IxumJVpPe0;7-t(nw7A&}jBY=Mz1YJ}Ut%;qS2!{>FQmv`=@ntd0H
+D(2n`-_x)kgZf+}*Hs9p2~{4>7idp`Q5OgvBnOD&27%iWfS_Y&y5jh;GegZ=MQEQ3|;}6_W&u=$Zlp;
+9!hNR)yAZ7|Rq&&4yONm>B<ZM4+M>t`^C6ga?W&oUlWFvHMBL(%}!#@aMk{&*;!4s_S0ShS}y_u6fCS
+?wZmi|37^5u-3j=Q^1$6y)ZEIscBGy8|kk4h~&8_p2;j0k`DVA3g=RvaT)-0%sA|94NjG}ae7((ykeX
+rV}J8Hz0}IOrk&AWpvO-0Dgw-LAKy`XCj|@&dx+$B>BG0jYfvr?`sjRu%JF6fw<Os5JnD;g_WPav2B0
+0FIzrL+<4Cqqoo&1duF_D<Ps3pUj!p|B at DK9Lo-Irswub=WtUMmKq|_>Qq-8KugtPJp*i$Kr;BO8LWH
+p2pvNca0Y4jIRO9KQH0000800{-FNExwS)msVx0Pi6H02KfL0B~t=FLq;dFLQNbc4cyNX>V>WaCy~PZ
+Exea5&rI9K_mzyU2N^9MbWOY*}LmvuUKGvEw<>jfa3~`MccYaqK~9(2SxvTXNICgiHdjop#>@gflLmE
+!{N*`FWM?uu`Js*rcolxSWz9MGK at cJSvE#w_V;Yoj+b(`E9#y5DYbi3Vm8|%uS0Q2v!keUsZw2>(@Gw
+NP8(I0#iQeX;7SX|HM7GR{r1)ubuP}1_)}3o^;3;0O6{gpWt0$emKXX^@@L><_9N1?mDnvo*0srCv?n
+}nI*#x<XFmz03t7LHwNbL1%`$zgvvXBuAa14vyNA=J8(AHSQp6Dq-e1M5e_X9^ldCAP)JhyfN_eRXV?
+ at 4yX;|}+dn=}RtLU$vKP_3D-X<R70)?BP{oGCs7ZmkYlJHX^spvs}<5-R*>Q+vR_7;ZU#pyT6+gJDot
+7bD)wopLXYCYWv^NGgdEUS417KUV-l55TW(mWomrsJW;ljV%TgY>{E0$Cy&$P4Ah(r!?RgUsCUW-m5R
+vN3i_!_P`+n23qVoOs=8y?3vBV-Ehi?r4A<B&A)&mccPd9kCYWb`Gc8a0BwTg5q;^b at f?*57nB*ppH3
+nT21Ecv=^YhM``wq!;3ZwRHI=<w;I$T!1`)wI^L;5x<eejijoxENuLU{r~T7b55W1M<A6`}d!D0`#Ku
+VVyks{zVmBSbjuiBBXbfnDn5m}D&@g$O#{+Jw2u~dKr(Mqn^Lj5&nKn7FyZ?cgS`4Sf*(jcg`dBD1t$
+#+JzW?zL(UL{)qkr{;N%vN9v)O}8o-d?YaJAXTR^Fbp*pi}X#d5HxHNW)4RSg;*9)}e4p4YfE7e=V6s
+09Q6Vsgu1Q|4?3)iw{7`VbR$_dlddri97GW3!8+KUt-lJvVG)rFaw;2=gU-sBu#^J}Ewmtcv|8YXCa@
+-_3%SKw+eYbf;u<i0_ir8qEuO^}yqQp<K7!|A&UjYX=JUCx&Y7kwKg>Zd}BL4 at 3fj3DN=rmM+jk8MmW
+&kw(&MF0?6XV$yN*fx<zH^Iild>n%s`(h=(A0oNk<A&ocE!BbD)Dv}T`vf^UM97%hlQA$!HvFJ|Q at j;
+04B5a%tEeLE&>J;xc73V at 59Zx9CJ=b1*V7U~!jsP5sCxJqcCE;Z<$SxG)H6w<YnS^{gL}ZJ_R;rC)+u
+{si!R!kN_K(2i1gVIuOSq6c7df1Oj((T^Cg5f>jyOCzK9}(npH*b-C0euF!7bgg)j+4~&_4pa^{fzs!
+)D)FA==QqvlO?5r{X})Rb&~wC>F9 at d;2wqoEtIN at 2j`6Yp1pv?;;-!FKTZWkMV!U5x_#>_i_Xe$E?LB
+Ofgst_SYfXjZQGe!tZX4fUCL4A at a8);mMpc&-df$JDmHhl1X?bAD+Nw+yQ;s!f)@&0V(bonti|R7l50
+t=@Mv9SVWh#LGrcu<*SVluhaR9Gm-+;mWzWx5ZXLvB at _?7J%axe+=7dbsfOwlyIr<bd{+UM!KGmlg7y
+Nbm^U#-H;g&{e28ir$Z(6g5#yE7B0`xiFTQ3!eEj<#KP&-f%aY)Wouqog{IX^oLfz(x?*!Wenk|qU1{
+6#bzYRD&39`gRl>RKi!~AVixXi-DFqf>Bi at S9K71Rmx_u(yuM&7f%q#>fXr+Z4_J!H|xTqnpin8jVPd
+c7XUWs21UYjAFPF&uaAHeV+#Rs393P1XA~+6f0GZ=u$KG8OCuezRQxg>9Hn`%JGvEF+f8 at FyUp5>vxI
+2O}jEqpi)85uvC0KxH?+XRl`iYklOJDqIELZ>52og)n;J<<m>?)8UFMn9wfK;(<x1aU5MO*Rb<y{i40
+vqtz1l)=;|R=7=Uuy|E=*31L$=kH~8_W}Yg6O at LwTGPEY(Q3#!F@%%1DAj`C;_g4Z&wB%7T<$t3Lqh~
+#tW3&zhv9&34cEXdXI`o&$ZO4b}f_CY}q6}@ZuVapMiexsH7Dv$;+$DzcAw_1>e7hH5A=HB;x#mYfwy
+PwZ8s<j+*{Y*m2Zq%Df+B${V+%^R#e{bLBg3Gkj=@Zy@?5k!%%N<5Mn4q?Rt&+wvv}~n*!}FanT-A2k
+qmv_=@>Qd9pakprGY$;#K9`hHUk*nLUqE(BHI-Aw)Ilm8Cbr01+$O``tth8Msol#>{C-~oXHFM2VBBP
+-;v!T8tL0!GPNEexMcr2{VD|WjPdDT2D at wa5sEIjVBNML=xStxDR4nJ!ds`c`SG0Yk(aXG=^_^%AA+#
+- at Qfa^C&QDlp?rcw&;=T|KVX6>N+jGuB>+2sHp>ZCeLF%GyDpBi`w(7Fdw{(u-yR@^TZRpsc8e$(=SW
+<ei(3&<KkqhZq34CPA1=9Hb3fc<3UmG at BGjPbXhMLSpu@KMBUf%+h_L=y8&OeN1?kZQD^xL=@mQ(-VJ
+;W#_*}gw at IwXDm35bm;ioU2AZLsbOLGd0SJSKj1TbN8s{nbEt1x54XK?KyNfL|%QQsS!hTZPEFnQ?QC
+Lnv!f4T;-IB!IojJAE^k2UyoS<;FRN=em=<RT7Q&N!U)M*78&78c7s<B?%g;VmJb9TH)SeLDf{+;ET#
+(r^Ge53MMvBOmQ6?|1i52mh7|aI%oS3p<_2WT~?W{!r-nr-^ZR0ENGc5-@{F at dk8nzLM_lb>Q)>C?zN
+`uJ|F=M%la)Qhos$mE~a*&4>Eo{Ce|H1Cyck<)S1)FeCUw1%U}MRpicB;Up7i?w0&|7(Kz{uoztxwTb
+i9n{{ISj1n}I7U2XgGEdk$_J%>W$dC$)B0mSF03T at J?YHNu9LJVH3$X9!yAB{SnardndVnN9FCcIEiI
+<Ha%a5_`ToPKq3Iq6n9GC1yVPzb0pK4p;c&pXE-vm+nMa5O!QmeiS)#rVANeLMt)Z62Q+8dWIMoknW6
+P^&zfI`36N_S7!QjZo3yr_%)9(=ygW5*{1N~_?hPdM(%VI=8$nd9|N&yx~eR{rQ?Q-2G%W593d7Zzkg
+WDT#yr9vpB?TfG01E|5dpas(>nmV~)2$u475MrkDFReCk&R-gccUbNY+7J^F1+9D3v6 at IK=mbCrIT{{
+sEMFf6-B{lk*gxA`T*;py0FSDFtUB8n_r;6~aU7 at oCh3d+u;w1L+PX?Rl)e>^a at iaG-HpBm{`dA<RE*
+~$HO>QRyv~m8hq;e~U+ywO0seh?;?EjCq&1ZdQ0;OJu?t(r1UP=B-pWaCHJi=69zxh4v|Ek4gTwCPDq
+5(B$gS3frZu8%?G-<j`rp9uJGs3AEXmxad#(XkRjdFw8Z9Vihz5B+VAG$UAxW$kzw(;aj&=^Unbs$%a
+{Pvy_QNW56B82G!ocO?iq+lPx6SA~>Q&kKp>gttavnS7jOn{*U`dY4lDOcC2 at ju=97!F|B^l^fw4`3-
+H2T&PuAW@!eTH+l<LIXE`j!l1(OuiTqhC7)j{QXjjwtHIu?+g+*ewBLK5nq<vIFNH6syVX-%v{f1QY-
+O00;mM1*=F2H=~d90RRAx1ONad0001RX>ct#E-@}LE at WwQbS-IaW^XS<MN>mkNl;WtPfjj!b99wd%dX
+Qf5Z(JLMq+`4ZtQ(TL8v^`U4<^|)=j34!LcKIlG49t?6gXY$_28DGUqXKJkDSTv0AN!c<vDP+w=AVL~
+KIeqi?YlZ#$wP)k+Pz`Js*VMh<7{f|ns0g<d&Lm`F8ajOa<d+wTO0;NTb{Sf5Bc$0XPm63i-?q!4dlz
+nSZrESDB1JFv%~r48ADAqR(Q(UKkYF8i>;$Iy)2DZL<ZL9RRP4Z2|dX5{gdZY{o8>c#_Xx$T8&%16mL
+sjQHtF7QoCBf at j!LG#=%F_g{NbRm9A7@^m;#N}+FnVYFGj6;$p1mmzMlrL&Nh-$KtM(xl~*HCc!U!g%
+)EnfJgk<Hh24X<(mIM~k-(T5f#m$Uj(&9r-j5K at BeIj*{f>-4raGIbVRn{wLBv}!5`kR~Glpe7v+(!$
+7)+f^$RCj5&$MLpTH<jg(t$v^gD_6)BYdo|L3G>WKO>aYz>n!z!A$A(g|Iq24)dOu-Iyp5}QpB at kQX!
+C?vbAS+zunxW*8xqz1Bg7}xJ_nC{vj};`C?B!)z%2o5!lj+p2^y9<=!EGB%9a7;jpWXrpy at P;7(&nQ+
+P8PBk{Av6b6^o{fdXG+=fbHN%s+?Udfe}132OJKxD0$coo)xd{xld~g=5vsaK*dx3s6e~1QY-O00;mL
+1*=GJGWobF0000)0000a0001RX>ct#E-@}LE at WwQbS-IaW^XTLZgg^aUvO_}Zgg`lba-@&PR`FO&d*7
+WFHSDXEGQ|C<toT5P_R`1l2*BinRy_tF*;w*6j_7|08mQ<1QY-O00;mM1*=F}ayMUQ0ssK%1pojc000
+1RX>ct#E-@}LE at WwQbS-IaW^XTTWprU=VRT_GYIARHwN%?~6EP6|70XYpM4dLJTq1!e6p2WMMkH^jTD
+iN^jj7i*z9fyJ{5v!D22#YsN{FZ39iQ<zb7p3 at yw)-Vb+5n&K4IVZ6|6v8*MW&_9%W2{O(yJuov at j=O
+{$}^W`qZK8u&BDrzV1FpkbG(QDABybbkk3iI8hmg9-WIW<F(?&Uw4S4E+8)U9kR`kPGWnP4T(Ck8A0H
+9jd|j`=oTk7S`%~Gb(Dm>^fyyb}dbtWSePbo4B-w-o^uA;>A$l%VEItfiN)`_<ShvVi<7RISpj2q?VS
+m*@oX at GCX2a14d~iw%p|$QQNMQrYW(tm#(T2VQ~&JNI87cW70`wNCUo~|1E|J52L#s#S2FRQ7T<1 at b)
+O{n8$L<0kJygW#q|9`Iw{zvwGKhn_LjBwXFt{Nkm3=B#bYXz>tbHPiE2=*<2>P%<~;p-Pk&j9~Gq*2@
+QnWD at O(q`s(BS!`JC-F}?XBe26>?_x3x~u}Z#|{mB;MWsELNMk6E_ZsVj-cJ!oHcy!jsU$v5xRiO+2?
+C7p^(aW;b5kkaC$jxoRfR_=g#+188g;=eZ0Gb`0it%f4dQ6u-z-DcIQ?fyZO{GkTQfoS-oD@~r!2mJ2
+xZg-<TYCI%PNvlTiX$OzJOMiFb0edyR at ji<-LW`5Y#fzOol2(i at FOV?`$?d>2(hn<PzMO!+4><n<AHu
+oyjYIltT#JMU+n1Zn=^5K{8Vs>o}mr5c`8D}srQ at xDB+G=G7q#1<-bRzvwQ1VZxAh9zhq9<54d(g5Cb
+v(QON%jec<XVaVExm_Y+V{0|XQR000O84F#)6#~+u%1^@s61ONa4ApigXaA|NYI4&_RGA?9kb960fZf
+0*UbZ>B9Y-M(3Y%X+obSua#-~s?pO9KQH0000801gGKNUPg|6JG!T0B!&P02u%P0B~t=EjTVQE;24;X
+>)WfX>Mk3FIPxKMNA9NNKMVr4NEO5&dkrVQZUpr;BrsROD#$)$uF`}NJ_~pE{QJ(sZr1{&@-~sGtlG;
+%Fi#+^(@v6C at o6O$xO0RC at CsU<qAnmw^AsmG}6t>&r8)!%&UZn7$Zcu08mQ<1QY-O00;mM1*=F+zWRe
+~0{{Rz2><{b0001RX>ct#E-@}LE at WwQbS-IaW^XS|MN~mVK~zDNR$Fu1L==ACUvXx52r$*ENoiq3T?k
+GAPutYfr0|$*q+ at C6O1s^&lIwrZSxJfPV8Hg1X3zJX`^E1ts6qvm{DGddZ8A8MPsOFGF$1TaczFInp2
+{<E)z-E0n+&cigym*=4jyw`*Vq(TK(N-p%6iZZ1!atGN(P0>HsDnLNtH-a{BCPZ9Dip}h2SVlQ#K^s#
+wn?7D$ZLb_`w1Tpui4|b?nC|O0ZViuzS7cq|-jM%3#y|TzcC&lBKn!LCJoJw>rm$*wnklwRnS at we<yM
+fQmLZqmxi*3T at DafH1T!20?&j36o~AG%9dlbp{_V-(0@`^HR)>BGN03?CQnfB4;7MRZyWN$TD~i2`s%
+W+B|RuQx at DA+~F;nFeL80Ei^VcM%u*`?>2UfBqH8lE#TZaZ#$-DeQfvQ9m=(JI*))Wy9#UNamP`9|E1
+NYU>FCyLu9W at uj)G1 at 2zUema7%<V=ejX>{z^faWv!mBN at +*#mnOv-yO|(ek5a2JA<)6Dt65vTW$msJ6
+#|pufGJZG6+b4m52}cxz(QEFSv^{sBQk~N5F`I*$hrb*vVs@^B7z2Am}Da4nb1xwF^-SU%#52%4gpk!
+kVURV4XhQPZMz+&1N$p;%2ygynMvVhi%fY8s^AhLrCk(6q}Ssn02Lj>piD8eRX>y4q8~^Tew{e@}VX#
+_w6k<K>dWLlP+0>+C)37;lk$aRMx#JM&!KW#^5n6|Ibi^YuYyPn+{cb2g}$~57e at MjLR^M8ltKZz94E
+5u001D<Nhy3sw0+0;zvRcaR*15;UW&)NPWD3hnMsptNK1E*d43Lse~`W!0#Pde3)nORTKax_E(SC*a9
+VsqxMM}X}bs^qy$~ZQ#9QoU6+z7ji#WOZD#7U>kB|#DF7e~%9j|nt`|eLTdk+WW<5YXcX_92%JX>a_S
+$0h08es#Z%F;CA&;sE6&5z90qpHxm<Q_3+^M3(^rvn(?z5qv_6N7G^Msgl0>Q3eZku at DM6&x6;x+5u*
+amsB0&<JR8Rl;Y<5eHsIU&ed)tw at wC(w5pgxHbn*%Qbs6@<68=5N&$JFP;D<~8A1N&nA-$JiLV?hOpf
+;gOHGH?mLE%|782 at Or)84)}g)Fg&rVBp=`@_s-u?O9KQH0000801gGKNVwSO8Ph8O0NGjq02%-Q0B~t
+=EjTVQE;24;X>)WfX>Mk3FH%KAPf|p+yvLH`NY^E}AG3KA^82C1q8A_tLJNWr1UE2ffY6E%Pv2lwWhR
+3Wk(FQf%%UtZGOf;WamBgU-O*&t|F~{eWrOSfr&)G=>Om;>ztr=Aj4tW}=k6k8qgK>kA#4y8VtmNyL-
+Ve+jBsO}i50K|0SrL?-~Xri3#s(7>I0I6iRqqaj?AeUz`#p&29v$Jd2&Id6?FI9KPp7N+qdh=>`>w#9
+N+7spe{?V3SXcQTVv8`kQ0lI5HBq{#DRq6DiA?>Ka@^k5<2Yx{TcP^9SC9w at e8c+x<2Y&u#_Ue&5BIC
+0mA3u03nx3lw7#E-PAh8phQvh at PZ9T{pM^FL@@Mkte_0*X2|NQf5B>E2+8`Dg2^ro1oU`6QAmAsSM*`
+<fWneQYkDcy!>uOoK$O7$8CO_ORZ)AdGpq%;zY#nZ4CED#>g$=DOIL}22vZ1 at bvxT*^irm+6O`{@5Qm
+_ at k)k<>K8=bEk140>>fyf6ZKzA4P7<7JKPv>IEa2ga>Zb2nJ!xF!9ZnL!-%wc<M)M2Gv7c*EpKA%Jnb
+2#`YB1Czz$suCWMjcL0CNbqp;`_)vV(C5{%4(vI`G~HB)8^zAsil>jvij0R^vP&tBmvj7i0jsjQ$*(Z
+f;z!g}Fm9_ at B8oQG-C};3cn6QIYvbkXXZNOayHT1V7hTu*|(knlF3k%5iP}xS-u~+g2PTQ21}Ge(;8|
+cY`{NUeQk2cw{m5j_Zne7R+N668Kqcc at Q)E{jfg(lXh~Ev)tIhwtv{)SW_BB#S6%!lH|qpj at SIYP{FX
+Wk~#r_g~QHCy53hD0qP@(P1ogG?_dZ5|ABEIQ5DwRS3bC`lh8g0(m1wJ+uC|^C~mhhqXM)y6txR^IXM
+BcK^Qi_LofvY2$(fq7<N(rVWL&Sx)w(Dgisv?O9vA$1CH2adFT>cM8Q#0obPxfZh_4t$e&*Q4`j1E-6
+*S)7s%i+2)^!|mGm)80N>Wq<7lq-{uU;&ezHpVe1ueZe=k<xY5M^AHt#Ol|NW;IOf3j+2oM5wD)*sKQ
+pf;M5oP<@H3NrJ|DYxc6&duzM$Qh$;dj8HTRx64hvT at 2QCBX3YrqRmdcci4jQA~0YpHq69e)OuhYg)H
+W=E1Z^bxSnUj2c>(oncrcOD+xB#QhSd05TIq<8$a28wuE&xH(0fw*}64h8^{_y`twLAph at YUt|Xt34l
+AT%CI|J(uP@%ykIbi&dL<Oz?bMi8G0zHSRP9dk8W&c<6WFTc~<<K5f3mw-A!V<7#z1ieBM~0=u4voKY
+j9hjhD4=Q|Mc`L<6m1pEfs3%zFe5KN<NwQXTiD;713dY1Orj9Dg)iJ=?<_WNj$(%6Vi6f^WY1bjDv58
+!|O@&Y{%#opRC9VuQ0(t4bZI(;CQj?<V&`|$HUDuWM-uWmk?ZzlV at VQ=}Q at rKv6Uh0S1gkY5NumE18L
+n}Ojo^P=Dk>3wZeJ)2A5TJe_f^F2l9rWKniw}!J<qK|-<_)ykaflyTQQQkV1IHWzmaNB$(p!nZozBuk
+>_CY8?W)9C5lx-fG#?o5ISsIC-T5}(EF`^Zur|#XZbk)&z8<Jq at mUTdxKab<-4<|uXNqYwc3D4U!E3m
+%2cfh2#lANhY1d|Uv_j){)0G3gqBpA<ymRAJZ5<!a=C(ix_#6B!`DR{`t*=}AxSjWUUm+MsP)63Y?M>
+KoSsX#FwKjazDEHZ*O?e+t(+-0H^f&OI*G6oY(S;4$MUm at q3{wx;b0-LVER0GC$gR?^r=>SCsk~A<<h
+Ne>*Dw8-&T3cYu*eV2aV1moBo}dc9Xz?SmWb%e#loUjhZZ?jTU>!L^4~e0+w8u3z^Olu3G7cMb%yKwe
+vjF8E{@(IhT_S(RA6=xWkbR)3%i8`6#iXI_=l#8!mR(qb6uu(&M%~#(_UN{s^d=gjsc)562oOWkj_-7
+2VcXTDcF(kQ8%cIy7Nl!t7RhR!_pa#oE)26LKW6R`2k|?5wg!$MVdSpELhEMuC-$BAmrVJe*k+`pS`Y
+128`AIEVX*Mf8e!SiJ96iG@*ITK at jnyWVtOViG!g6I|zl4-=GfllvObF0-gxB1B^<3c=v`S523X)&8p
+7jHGc%Bqz{(L9h7;NPaL%)u}_Zm1N^xXPpj`=mpR~COBj3tQdyic>G^Sn?lp at mE?v()FZ#S2C!21`@6
+Z;ANf7 at A`+dmng=T6)bXf`-Ot4CQZxKZ=*gr_2B8h_5_>&r)WR~X6I~2y=o#_R33+?5re#cF`zE3RJA
+{C~IUDn*0hwY|=bI#B)x?W^hGR?YekIoK*-Xrj4Xv3z}zA_8^fTc65D!rf1<3cKQuCdjX8%GOaENRl&
+0&b`L+A$Te6$aqfxSxVLxXlfYi1Yvy(w)GE%Nz`ThVbM{!`49Gh50_6;boqvO*8=*_RV-hZ}6UV!wYh
+E<E9l+g4+$}hAW3$l)%GyV{s0bhgUqb>#gMP;Nh-l#1>I7{F at QK3+&c}34zvmbgPJN`*XR3Ssff1ln4
+>=!L8!`;u=7B=(Qr*K>&$kU&H<-xa;mUd`l^#`I(or#Y3eq&1OesPqEf9^70G3<d>n2T-7<`l(|)207
+AlFBX3367L at zfMHWsdvuSBs)vDg!>@B>~;hjHK`&%9(#Ic<KBbdeeSY=N!fxd^=U&vh^eHe14ca}Xhi
+#6SIQMg<Qg*lUuE9>&q=xPuvtVkdCbPAs3&DaR&8{BB{o*VcAYzpCe<9!-C<PFG?happ?>)NCkXN`AG
+3``qbj)_Xv0<eP#{9Rf7K;HCpJ$Au|>H$yBkeWogKFOU)fayBK1+~CFP}O at u9ZZ&{c$#4Oa>$>h^1HP
+90o at 0iYYnf!H;ZMjjxgB(*6{|KsHqCXj{v1r=uD83Whstwg05D;ZzU=ULEr4(u*HdJj((c4Djc!s=;Q
+=p2xuV;%YYJ0v9BB at YY_8MIs8$87VNC_JAwp=Z}x7$kXO|9csP&bsByFv9!@ewDaroYkX3-%tDBvwOW
+D)LBV^9eGkM_TH|skN*=tR8ygD98Z-HH71O~??%%8DxQnE7xdW%U&bO((yQA!87-k}iip8I~FJ~kuUY
+SGtddA<9TzNSKa=WuyBEr$-iqKds<2E1`_xbRSsw*4b=33d>SgWve_^l at pWuDV`ZaqsxxuwH;-UdqQ=
+%j6<I-)!mtM4XJ?D+ws6d`F<@dwKN}_2bgAzStu5p<KD!H4GY08XHlHs`7lq-Q%@)u7q~f?AkS9c}F4
+;@Xdz3*Q=(6!htxeGTPxjce(5<wCPS*Ith%`%QksagmF+u8p47dOoAZ#O<?!EAaCk!_$tKv?ZpiZmBU
+7x%-AFZ#x-uVdyPGA$lPc*JYV9Q06i3M+Clg?%khh$%=+L};@MHaE1`c<)cK-nV9cH{0-%M;qp=GTAM
+}J7Jja-TEZJ=Cn=Sl>-luQYN0}LcgG8p+0x3dRsb~9cnTCO2XMD*Y-NQHiTfg38huI_shJKg&elaZlr
+o`eb`A-lhKUn(dCeAIXJ7`39uy&=pVlx`Kf2d(*-wp;RG21c{k|1sB2z%E9zax1GQFiEPz~oOvwsK%Z
+F|0!ExvRMdUApoVE4osZnLT1E{Ki3|-<Z%ZlELeqTJ?3S?~9?R%FW+9%(dfA5;Lop(MyJlT5F!FXwW7
+S<|(Jzt;U8h=xrY9P!{MnLLn+8$0$h`-_niBR}>j)0mAdv31 at 8z9hw5-TwiLf+TKb)ocsoOTa+zjRUa
+bk0hJW!C~JGHU>b62R0WBGD=f|cSh;~O-$ypYs3FQ`W=CMeyXgIi{nsBpwHRyiq;_d2vCftS(teDne!
+NcMxP)FpT^`dc0EOAGPUj>$5X9m44$e>bEcJ$HE?;d^Hb5w_u9WE6drC5MGg3et<r-7N;aMa$b<=3;n
+Fx}Y-+|aC`Sc6AYQ~`-y2yLge0>j3_n}aI)v7JlKJ|xnaKffCTiuJ+MF4u^8izh2EyxZAv3E836TSDI
+3V8jnD!sq3%Vj;S^wE6)g5z8|td|^1YE;Z`tj)`gvgn`mfSz_BPP_-npV&j4N7WlPX2wK+H1mg2VHoH
+Khs(h+X(PU_m!4!6+Q_uvj%w81;deMjLf_fSGZ4JmiFUCbV3v?Ib at TQ|6U2 at N68L_SR4gvS?U~QD5*r
+0^J|#OC!oJ(b&1E)m{bebM;78`%+zIY*@%FC4m-ZeN=x97gdS0T6+z9rKh11J;GIzkg!M_RDb<dmRjd
+JcyZ}n|y4R}7<GzQ;w5KND9htXE|7`>XXw^E6~{srADn$+{7Aq%|18-_0P$Kit>iW^<>SInRzbh$D)T
+P|`T5Wp$Q?cUJ$J(t5&RRbm|oi`2l-S+;V%c^@64DM6Xxk37Lu~#8F7sUhQ at v)lIV7VDFEE)X+2Bs9+
+a;$+*rE#0_l~0?|c_x^Dn_IC}KQHJ+B-Fs=dJG%{P}5!s0XiOFEH|(84ITC{P%5X386#4~>^>*nPw0O
+i9C*cBFB_>>X*wjb?#&UNwR03p=jNC;aMp>q!_}meT-g3`bL7n-02KJQ?f=T@<Ogf^?gJV;TT9sVKKG
+M;F*7cnyH?&}lcKHr=n|QZdEUV&^e+rknr&O&c)_ccNxo_ZG_an at 6$fBZxph>hc0g_&R9uy>_pKZVjy
+4QQCbC64<U5X^jiN7G;`8Zx()L;98A{<--iQY1k?lBFB^IsR(->#_!rWw+_O$KDdoB7E$Mf%g{rY-(v
+iB^mEOdO7bpQnKDiA&J{`SZ%u8}%e?WBt%-|!-{`W*;uYVNx*)kV=i4b%VM9RCAH at 4Z%+a2+F$hi5uG
+l?8ZHC6PY~7KEgYdckiAnIwYe+UF?QBKa1`ze^KO27k<o at S9m&SLBKv&?5!vdz4*t4?*rgFHCWPg{HF
+jfN~hgJ>HA3xr34SR^B%>Z(-~j1E-r6SQCG~U<1=fLU>0f(RaqcSLn*8`l at G<LRGSDM?P!zuSvrCHSg
+UY<?yH&eQ4%u!#xg3)`F*IrA&vS*19fKV|I`Abz&KQM<DMVy{{Rf=WnlSX7E*PITwqCV4Ypu$?~#T?O
+C<Eq~?+>w}QqvAccL)w{me4N`EwszewETqefWaLlu{h+z$-nyM^yjQ5J0f^WO6@`EvHqGkCjok%()-4
+nzR>cTAI4<lpRl3GERN)sRqDin9-4vcjjy9U~j8?7?g=93f6Sc6esQ(+<V4?_%%=mba}ZtLtzblF<)s
+ at l=R&YOS`{F#wl6U<0ve+_eXCEUfha>~H}5Rx-R$eB5}+$6#e#32sOp`8Yl<rHM-FV&=>yjySaUG>uB
+oSwT8tTdLpg$q$0}eJ3$2MFZ8*rZXRK_gN?{4GoTJWsBL;Hp at Vs#dA&C`?203DEXa+c%?|9s!y{|>W%
+jgr>;n{JxcDk%>~yI2=UvA&#Qxi1So^z8Ydj{87BK31mWMMtyiX}WxY?xE3v^9xYRv0B?!=)5M7TR%l
+5~~&_r1Cdfd<t(R%8UZQsfFivLTRW-N-28$;SyMlAMVuHIr{%yiw?x#b1Jz<F(RzD?nQ4xkHsjn2qcs
+K2*uUP!X&OWTbCbknow#EZI25FnZG0pC04sR|Mj?3hxUSPl$Xn5%aX_<Qs>o3&YoxUkJ|DrZCmJW&!*
+WbOE~S})@xy#Q50!PtWe_#oH{qVKnRgATptj~DDMW3-nzzv-jlGyCJ1+W0Jo)^QGR%54)VW#z;i<-+U
+yJpTU84sYPi at _LAUEzeSS(_=(lY-LG+5>5%QB>5_pbet6c04jO at mhOpq6X*C_953o1f0l(`t+dfLD+w
+GY(TP*7k5@|-3IZ`C0&l_-gGQRdg;#3s5hLG`@O!oX6M0i;`Hx>-&}m%dU=CqJ5hF(AbWR!~&NV1kk$
+5qU%W{XWm|rAu?FU<d`z~;PqL+D?bzi_oaGUVbJ{oSa)L-^+Jb+|oy99rRF at RHYR&5!0If%VE?ch&G+
+&|%)Ec^m|%sFz*G37MQi&e7dIkP7u6I(boaQWVv$#^AE at 8M{?v%`RQQS%eLZ;MTpeSu#?hMdc~17uUR
+&m{0F>pFkB46>PDkPP<jK@>SkHHcgBf}+58gYTE}o5iON)Ad?D4DLY}=p)no;*v_R#_kigmofwFYD$i
+e`lcF*X9werV3U!#mt<A4S&iq{<43b$NKr>k!6i&m-0NU at 2}bNx=GVcmiW9?}?#xwa_P8`F<_>>vt-e
+BkGD!EKcmZm3>(qCvubz1Sv_}K34O|EEGy^)~o44u!c2Mgb3c}wae>#D%GM556>Kt*tx%bE`Fbv>wE=
+j%3le2%k%&R^Tc43k^wIkloA6|gBxIPBM*nKFjbiQP00SVm6C_KY)rkf*iOcwb^*`tI~1Z$1b(+M=t%
+|SmMTK_`-+<IrJ``u)rOMYGhIL_HE7P_^F^yoR&$>qYg5X!?hTd*r)hm-Fq at E39ywPV&rW%RMtayjCm
+C9wBUGuxr&d<1VN5u0qmIEVY&)xOV-kPxsL9H<=vzsJL0 at O={nS)6?w`-PJAs9RMy79l=A-DvNYkJHV
+QT!w8qMO~4m%8*A|DbETQfY9&I-wS`Z#O%jb+bhb<5M6GtWd(FNdT`m>g-!4*_u`rB4+>~+qyBzPJ~y
+D%iLGWQ?w}-9R%b at Z*5(g+C&HKNfK~fj9D-L*YN|>Gwg`@*?;DvX?$5J`udLhjls%T6h&@9X)`Ld|fi
+UbSVqm0LDT9g~s}5j&lZ8vN6_p at FzAs5vC(p}6Ut!x72;hih9&hy{MAo>rocdmAheQpqVBq}o74I6iA
+qt&(-cfmXogc`)_gZf`iY7#QH#wGgQlV<`n5jSCox|dlvTY=S{5Y$i(j52HR>@<;cf$?pvHEy7C1+ZS
+xZ6xPbpfWiq~+-|?%!2z%E at Fd_GhxT{4+p2(C6i at cLnhiIE{+tqtTtBG at fq8V~ZMe-1~uCJPI=};rRv
+xdfG=1>}oY-WSo#K=Md=oU8*0zeUnwyhY at GAHJE4L6U-B5+$-=VX=h1uBCkdYn)I%e=W;V2nIg7T2=K
+ewefnS24`1%w%{!B~hPh<KEzR~9ZkC0KYI_%FDugW_cgEX~f_nDO^EPDYz2*NC`A4n!njuATuFkbYEG
+Nr{xfBC%O%;LgP(sOw0&#LShRbzd2+Jm*35)=~gKl0A`DHq at 4ANjx>~5s=+QkdlNM}o>ud`>UtHNz{v
+mzcxP(!xT;@yUSfsRA^YHEj5sskcN)Cq(F=}|YFgeJv9D_e6)F7my(rNBPFM)6kV0q-K`Cu-mYQMU#D
+sQdwp&Z~XWyNd?g`fFxmQJE0t*_{v)FASu$=?4s{DxrfivsJ+e{w^qgL2tkxqW%@-z~GV{P>A#IsoOr
+_NVbWz<(QM(A?NJjBGeSG*=X*t_gwW0^*vLiEl!JEz2r(yEUTzdLZ;^2S<q^wAt{2C$Jhwdg03=WOD6
+B-?h9_6XCJcECB2cw>H}?RSO8q5UQEm9YgdiQf$d;OhJh1Pqa)Vk=S at bU*moxU<-OKo8!F20*Ic0$a*
+Z8UNb;ln7zWtO?-Ot~Tcjl#hesxA2jTDM<v+30ZPc%@_e)sb?gzBi1#B)w8McNtck-5~PsTK3Nz0OyX
+W9)_OgsF&#rqSrti$L-1_5yc4>aeHBSMmh=h=%`*|v`dRBR=d7_oD9xOyDUpPVhOktqC~WAt0Bcv}b&
+8#E at lAxS3P(Egmj=cS|}tO)w@^q7VlfFKE!b`ESaI|w1(OUhr+U*C#7)0~W_{$V)?bfC?Zg24lQaB at M
+qGXOG{AzGrx%PrrZHfx5z4HjR at 7(>`w3k9&kw911tK@>@~8E5zRN44H#pa&_AbppKFH}aN3-VeQgV!x
++r at jM-SA!N{_%$Ao>FAo;ihrD(4a-=Io1WZKL(Mdav%`Lt`5b+J}-<kXC%t~8n)GB&#<#Q at S0T|cQIc
+j~X4S{poZ32wc$@~J%kCES^Gx42i|D<>}wZrJk<J0SCh_s{XxG?oKH at 7##;RsB!7WwEOdAJ9Az;@f3W
+e)Q0a|-{S%Fhxs-v0UZq at AdZaNV;qzNs*y_iW)<V(3G5Rf(hFdGxW?6yQ!x`ty!}Q1Xwb_2k-eo&O=j
+U9TiY at AsH3IyQ`z(tgDo;X(}oh><tq#+QeM){ur#NNNXSf4+wQ{EULvC>J9TNt!nn8|@Iz;LcS5HSA7
+zsHaHb#G{Btl}Cv>m79ixJ{`*c3)!>#@;m|gsO|!j($A+3tPSZJ3H0&Y9rfJQaGanX7kN!Dbj1>uL|Z
+7a)&9_TA?i!YJ{pp)9-B{#3KU|FTMP<faUxG3NDfLApIS+s#h7PEI}Y=PH!xBa%^i%B;D1T_iSLFGH6
+&*09fD6vyIJO`T~iJ%!8R=6jwg<RQ9 at 2T<i#d2$#-G(8@@W+H1jhkMWq*{S at ogwL7<(Ja+W-i^N|s(B
+s- at KpjHywVHwmBE`C;RSu{9ct2JTpUmg4x>053@%Mx2UZi- at 1U|3Y0b4 at 5NEn4Jv$!Zujg)=QV9r7lB
+wph^bBGeZ|pO2yUX5|nj&S>~b#>Nr?<kG_Efypl?hBB$_LDp#q9&NBkwvYn<v7ZMGiIAW6?Ib@!X*u9
+=bl0wWZ}@?SOCqSjy7_qYeR(&PO?}5Ju{zHK*gxL4s1H7IwWtxC#mH)5(4IRRzdVR#lUMnjsXb05E+o
+VVH!`imrQdD4^~bBYarLilLOd((jHnRB)kq29bk)quRAjzf)tHXueTzg7Y4-Cq?&=**z~3pE&pcyr|L
+kcf-^3T at PWgBWrvWR6SeTmxpppPULkc$MBSdtea}vj32V?K;x8Jhm-CJNb(B2c#k}sDFi!RAo8~O&Tp
+-~)*dZZ_(gqT8IPPx#Uf3=POJF-txvuix8ZYa}DZgoJoeTjO7oT;-q3TDZ2#YA5`wq at qy?HQTB)y7}3
+4b$7ySeFM5HkpAFpej*hPQ24vxN8EWKk{7Iru#|ZEUztaev`|@`@4*PA^SA7vAIAR#*PL$-qrc)OnY6
+B0t2TI%@}J47g<v at 5%bpY=jYV^I4CFn7HFWixyev+3TwALyNABG3`~%AnvK$(#@rY$pn-8YN)uA&``p
+<~1b9EJ`Zu;ule6sVUh5tKJD7#l!76+6Vs;x1LS%GBL)DsZTAAT>E_i0tKc-6~zl%PvCDDYn8TZyTb|
+vIc31Q?OqUnNh(85<1iV;LK0 at W#%IOng3^~Vl(&-%BOyaf`XqfyRrz6Nb_i1l(yKJ=N`-flOFI;`oG?
+MFRVn|_Dj-|NuNR83F~uV<x8Jd_P^_D+~CsOUxL2_BbBlsX~Zq(N}xNA!7{tqiK$q(~U~V^=G at D)Gl6
+ at w&{b{;CjO=eKA*g_D?ku~H|D?Np`{(GK#lp+u?@TRUK2x`3lQR&OE?|8p_)WDS-sD~c?5CynzUMAb)
+~n9ZK;l%q}Ev?O=>i%uV*x~vC^d9?SUltkv)=YMaQ{hl=Gq9}i7Jah5_gEZ&X1BRRQP>vnVh^;t7_Ed
+XfH$e{VI0q4uroWCo|EtCQ+e+Ul5$aN)k5v at 3DnYny=`2nhbcY6Dqd7NGRdB|ZMQ$9}ZIcB53$gGQ<y
+d{apO@=2nrn)XZg7a?Yucwe7j|ipuYf_g&CRylCTtI)a(bTcqVONbnJ4Rzdf7YSKF7m*3Wuy%B@|l?u
+pN)Jpx|C`4D6ufD6PJyo*Clp^Wp{c=P|qRhO7cV`91^_0;kR#;pt;2IFM3Cmj~M88E}qZcFYUjgt@|5
+{714wq4ztv-_w=;cS at 7&RQi6j`tl+-ScJDwzqDQsL3h09eDjtHsT at U6;#(5%yngk^`?xXoUu)?Lr>}}
+8HOFf#3lc>%Da~0XU?;7g9BE}fp5?k=uP(l9n at E1!4fvArgK*)+Nw_Za2qP7y)c10>W*P%z=`;vpxlj
+3c_D)RY!{cGgw<P+0`tv<g|LtmCTcA*ntxz44IVld=nMV$-amqBm!r(pNp;v`M_o+4Fo1(zqUj_V@@t
+f5oQfc7`onrT1ogQkucEupGtwgU8=*GA!GmHug3bO8Oi5~j%%B0`2#V0b;QOis|uEXH)`Q=!v2Y at gcF
+UcN4V_sKe812knjZE!`tql6M_4J8stg>et-z)wuFh4w4P4^5mW7iA47Rr4I9GeAB5kkk{g$+G^HI)(K
+=q7FCO*L)h>>qF9IK;%K3F1Sj+}KWV at cYd?91#L$Svk)%z?g|svk%yZ&DB(&6<qSgS?6c6vD-3)4}aB
+w2$Sl8gL^3*6$-!a>jy~ThJ>dGb#GC at 0Ap2ISe3{gbn-=u`!`g<^RZ;`-r3W&eZVcoj8KU)J!-}fi5B
+E7-M3Fd#Q>Itk<g91_$Ed?Z^EJfYMMXzwxX;0o9;t at tIVUqNd`XvuwyI?Ne at AlhZDJONVMTg{$9P<l0
+WRJ=hp<jZ9 at Hqt*Pq|PsDqK2;AIC08%&Sv2DiQPTX3(^12a2=mK9POTm_r4$hk&;NLcKKQVsUCtcZld
+ZTr4D`A<6R!|?e>+uYm={4#F$k#=OkL<DcPC~y!QSx6U+7Gfgi;D2WGf`81(9)xt at M}~aT8t{`MA3w4
+;RVTk*q+RJ6m*h`K9F}P`F_plcSJ?h)E^!mDG#YQ_2EEdse48)P?VofFfFh^rCxg&a`-(9ATAXe&}NX
+IUNL`9_1vh^tG2)UPz(X&7)>-=i<dQ8qYOAso^dtse0=mLC at NHFGOu==Q9->Uv2PDzKC%7tFR#sK#=z
+AF1)nbWnK~SFHl-Ii)E+W<9R&&tV=~dxT*!pX*_QDAP0sI_`ew6=57+2sa-T-ZP3?ji?Z at k$2Q|lVN5
+)UBp;fsyA2S#r6Y{#L+|8%|IDY)~$n@(Q{Qno19RHo~`SQ0)KDLQ04Fty8@|A`Ia>w%3Q;3HO8V<+6i
+kW4Q>n;=f<KZy!yDi22 at p}H?tcId|bM9{ckdN|}V*P9;J$%onzGxYgQBwV|M-wC!9aV}6F+}C9Q2%o;
+_(9n$^)}DGf8`YVkV=6>LavYVnySn}uQ%bKkYFptpmgGo%<0yXD1xB;^B&N at HwWHH`#Sh=NK#T<N2m9
+}XNr_P)SSw;DBbG!p$t#i#dYqL(Lr2cD$es09^alAefGcKG~BC#PCItZ?{r?K^p)hgliPBdnbdvUYv<
+hJg*nTlG$)@&+5bIdy`|bN3f(aK&^ETto~9~sYRSD%95DEr;5T&%g_dXB`x?oqrNCMgV0AL>2=d>Xa-
+VoVepkZWck13gbf*iU&0OS_mjbJEk-oRu2_%#>yZJz?-7x(6>^J^Fee{{HFWk}_g49j7pjvt5m-n;+)
+t31Rth+?0DHv_A=CZ2p{up4HdL at r(fgPb<B7GOCcgXwgmH)$0WMxzQbz#JNOVP0i5jl*f623p;<b%v)
+DCQDHB+sBW0W#iNx`cFje7bK5^S?0f=eg0BrUsoE(ghAaHWEX;75 at R!iV<P$xs_yzf>8tV?!v&C2!U<
+S|2Q)KMfar!!L-NmP>3#eK1$rm9F6_R$Z0DE$NDnrDgs-BkMP$xU$+Uu-=3O(&G<RZ+~i|4>Egb;7a|
+VzE6elu)u|-D+OL|nl{bPZ-^J*L8Oigy<A1lFU*sClJcX#iH>A8A8e~qYTfLlbeQ>ihtpf&I_pXYLPV
+OV at pC73BV;}m5Z|Gj{F534^iH_4n-y0{v)ND{q$1!~<dUWFi;^Ced%}7IYRi&-m2jKVTdjG=qwA<JF4
+whDv5*`vWk$_Wm$e at 0*WrU=zBg#XKcoiw0>mjdm^S|8nkF~*HWJ6X)_4vATSxxayGn|$Ki$|v05$>&2
+5j1V?U??z{O+PwTCqw0Q?{{07_^(Zc4|LlvuSYDw6}iRbvkBG8NbiuRg5EC*vbcRUn!08IMq_H6a<76
+NO8j_l_s`e5zK-DD4a|639|vWvRI8EhM7vZVt1-X<?NZvNyNjvbE(7xXP6>j(AwJJ$is;RApaWw%@V%
+arsLXgaF*Uera*Wzc4Pi#2Gqk!t%>{E&nU at OvC*~L5-U?-X-~d5BqzYRIb_cdJL_X9gJFF}u0_t6*;x
+(KvRzmHNpYPIsBF0 at 5efYeISe|Ps-gDj99*%3UKSBG%t5~ao3cps)ZPUa{C-*aaF`xGo-tkhef4#IK(
+*ts6PD at +|5l~o>!mQwokfUcfd+V5s+2Qe+J1gMwX$StiKK=_WDw@}d9O3Mo2`g4}Ddxac6_E%UWJJK#
+xa#7mzP8u8 at ztB5Y|8e>5ztSt?0JM$yxI&Qt33zvg#_1+TWXw#+r*`U50XulcSIyAj7#Q)CBT}w1CgJ
+PaepEf*@rka;+TmVl6pKt2 at 3ZYlR{d|PMxvG$KD_9kvGmlPgfeu>~I8pA73ANUGTbits2wDL{5x?xrK
+GO(9&JyGOaV%gFGYE=1eqiC%h;Dn>HhU+?xD_m)6s(p)A9}=gF(Jr_;tl!J!`yOL7wgb$|9$h#gim_o
+e(m-=1Hz1K-VgtUj;buoA&_MeMLK!)k!_M-!eW4s$Pxd_aLHIq)~z1H&l}o_EQJcUyUX+npICWY$F6S
+iDrYPEJTTHRLDDVM_;y8niw}%lXnwxzz7)^hcck`waBUPj%P|Z~(5d!xv#(W>sZiIBC_4AkE5I%Sib&
+(fk0qMPY8D03$!(J$2Qm7s;XCMTK^>yC6DV){}vPy1`fu#Evp<9+v>+lhhq5<n+j&_xeff1LQxF?M<;
+^`k4+9Z7~>Rct~bVRsE7Yx-L>LhJ_sTqaV0PLSJ&@`4uYgpZNdxjh(M%4d^}Y>J)OEBQ>{;P3R)@c|C
+R)CVe=80vj9 at cx#74+Gd5|2ekK(d^Be4tFHTi%OiQ;LzPPxlXf8*YnhP(n)qpX*aN}JwEm1O|2Xfa_q
+)G8qWAw%P4xo!DOz#Z+{_VpO=_h?W7xck2%akopq^tHy{|Q5n$vm2*}b&sKH$gM$Cg;W8r$PE-5kQT0
+?;<W^+avTAOYpY?Oe)$D?CsDn~bgib85HU{c+Ov#M=II-)@(~k!Mw!Y*P0umqHrNi1cPsG2v0Fzd+_(
+Qr0OZk(2tYS3wdYKB9g0HL434&NR9Me0?m7TiA62SwP?tRA(g3Eo^k6Pp_RoM9&jdlz=}1etdw6CX&{
+M$m8fY1zxV?q&iyCw0wQoGyR<h(%>{+R+<PW;@Q&q(Qf<!_Ejv1Lk_YM`p(dVqC3Y69_u4~6THL0WR|
+^xmg6)Zuc&-b<Q?|&R at Yxwp}xGW8&Z~K7U+H3N_d1L9X<~uY?iQEMpj(txD6gkxqOtzXBzrhnEs8o)z
+)G5;i9K#G&f3#@6LpZ&~O9XyP|}eo6GZg^EaGqZ+28no=^k94kv#2?cZpBJy&}*;l7mgF22y^wY)QxR
+mrCm8V*dO1Q$t<Fae0}H(@{70`t7+3cX^5QPV}id%<wj;XrKH`r(YEmc at 8L`UWJHQ<TRxi7N1+=MmIJ
+N0{Ju5cK07z~6{b_4mz_*LKr+X0y`;W&MbHMAFTuW)d3E4$z$TF#wrfY0yYsSQeaqePQBnw5JvKOFu-
+f-ToV69Y#ln<F<p`B2k%3ia2<zoi-_cL~vxaN>_$uA2sr=zW6Y at ryTfjg|3!!JP2XU7m~HPoR at 36dDt
+M2AsS;Gs(O&)pj*bITa16c>i)11MV%xcXNoWOh$OdZe-4T}ekFjj6*jD$hlb6H1|nsqB?b(DG+n(FBG
+3n;+mveP4bkh)#>%A9652sbJZNm1&<-n$BLG7jO$63npgOW>0IoD at d50oD9?$*_w>j9 at 40T=f?z_PdJ
+X<&W%MB~$&7wJ3y-T`xEL2?^6P|N@*M}SopOO1H`1K{Rzfs56d&P}^%r8_lmN)Dk-U3yC7RsNA?2tqn
+w8l-VRFWWqN&mc``b$kcf-gO+s3H#mSGgs*_5hx1Je?Pazng20+QZ>d)kRIyvW{6fvI8L)A%CIy-s*k
+020u8)6d*oQ$1zcMfC|;bC1a!eCLx76 at Q(-iB8TLjzc|5es|Vp<P)YVdL4lY>XNv85B;`4+)Mb!Q>|>
+-*Z-weiJ=<`c1&<Fm+-3+sKh8d%KxNbg<MT!I3*5|N-7%XuT3-f%=^^;SbBAl;UZ!&m-Sa#=x>#pf8k
+!<I82NEi<B8Uf{^!>ZC2Qb4wT at eY826;C)mK4TE@`E&X(%+ukX6PsT}|zQO at DoN<1e^9 at gML%(0`s+?
+)F&~*Z*^5F0{^T2Cpjr>H6W<Mc#)Ew(5OatME~}jeCq{mbQd=N)ouUHCeFN7}Lu>4xXjiH{dd3P)Ew3
+exPb_$sfU5t9fxYk39z-(IrPxOhXjVKnI|&`}0_U>ZT_*!Gb|wqv{N;>c`#g>wmR5hLL{yH<WL3a<9t
+ at FO+7;2e at crmaV%?r|7<|6!Veaa!ygg&tqNSYs9G9YGk*mv*(4gVg9*BtR3uapR`T!1~Q{%E9;&G3iu
+H5jjwE~4p0UEhJh4i0lR<BQ$Jz<{L0q7udAP)#q!N5d&t=3T2B+9J8T%kuzn;L5ob;m6j8~8(eO(lC0
+m*D&k4sT=%H at hB6@6^_GQfLIF1pLSM?(7%}LX)2 at yx@1-Iz#Dx5n?!`Da|r^o4>?6x%fzX4E70Rj{Q6
+aWAK2mlEMt4LC+=l$pn003+$000jF0000000000005+c00000aA|NaUtei%X>?y-E^v8JO928D0~7!N
+00;mH1*=F)Nu*^n0RR9<0ssIH00000000000001_ffWt_0B~t=FJE76VQFq(UoLQYP)h*<6ay3h000O
+82?eW2Q^EGl2 at L=MfGq$35&!@I0000000000q=9u0003}la4%wEb7f<1ZEaz0WG--dP)h*<6ay3h000
+O82?eW2+AzdDrVIc8;V1wA5dZ)H0000000000q=Bv+003}la4%wEb7gR0a&u*JE^v8JO928D0~7!N00
+;mH1*=F3v=mIc5dZ)NJ^%m_00000000000001_frBXk0B~t=FJo<FZ*X*JZ*FrgaCuNm0Rj{Q6aWAK2
+mlEMt4KNaq-`-H008QH000jF0000000000005+cZ94z}aA|NaWN&wFY;R#?E^v8JO928D0~7!N00;mH
+1*=HrHP`r%3IG5s9{>Om00000000000001_fy-V10B~t=FJ*XRWpH$9Z*FrgaCuNm0Rj{Q6aWAK2mlE
+Mt4LBAI&r2a00485000aC0000000000005+cifI4<aA|NaX>Md?crI{xP)h*<6ay3h000O82?eW2bW!
+e_lL!C+02TlM5C8xG0000000000q=8zI003}la4&3cV_|e at Z*FrgaCuNm0Rj{Q6aWAK2mlEMt4O6$68
+i=a002!c000pH0000000000005+c8=3$BaA|NaaAj~bGBtEzXLBxac~DCM0u%!j0000800{-FNZYJ;_
+I&^V0Gt2-022TJ00000000000HlFXssI3RX>c!dbYXOLb6;a`WMy+MaCuNm0Rj{Q6aWAK2mlEMt4Qc9
+$RUy at 007v1000aC0000000000005+c{;B`~aA|NacW7m0Y%XwlP)h*<6ay3h000O82?eW2nYvru3kCo
+HClUYv7XSbN0000000000q=CB8003}la4%nWWo~3|axY(BX>MtBUtcb8c~DCM0u%!j0000800{-FNbN
+O<|2jJW03bL402lxO00000000000HlHX*8l);X>c!Jc4cm4Z*nhbaA9O*a%FRKE^v8JO928D0~7!N00
+;mH1*=Fi{y~xqjsO6VX#xNk00000000000001_foc;00B~t=FJE?LZe(wAFK~HqVRCb6Zf7oVc~DCM0
+u%!j0000800{-FNMIfZjb;G=00jd802lxO00000000000HlGep#cDJX>c!Jc4cm4Z*nhkWi57PZe(wA
+E^v8JO928D0~7!N00;mH1*=FQd%OzI2><}}CIA2z00000000000001_fk>kP0B~t=FJE?LZe(wAFLGs
+ca(QWPXD)DgP)h*<6ay3h000O82?eW2nOIF)NF4wGl63$85&!@I0000000000q=8JW0RV7ma4%nWWo~
+3|axZgfcrI{xP)h*<6ay3h000O82?eW2P5>@Yt^fc4E&%`lBme*a0000000000q=CfB0RV7ma4%nWWo
+~3|axY_HV`yb#Z*FvQZ)`7LUukY>bYEXCaCuNm0Rj{Q6aWAK2mlEMt4P{ZMx_G+001Zj001BW000000
+0000005+cw95eiaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJEJAWG--dP)h*<6ay3h000O82?eW2 at sM;}
+`2+v}WDo!VBLDyZ0000000000q=EI#0RV7ma4%nWWo~3|axY_HV`yb#Z*FvQZ)`7NWMOc0WpXZXc~DC
+M0u%!j0000800{-FND`{X at GJoU02TuP03iSX00000000000HlF0(*Xc*X>c!Jc4cm4Z*nhVVPj}zV{d
+MBa&K%eV_{=xWiD`eP)h*<6ay3h000O82?eW2c at j(T&Hw-apaB2?A^-pY0000000000q=A~$0RV7ma4
+%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ*6d4bS`jtP)h*<6ay3h000O82?eW2$8HDh0}lWI#4-Q?CIA2c0
+000000000q=Bf_0RV7ma4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ*FvQZ)|L3axQRrP)h*<6ay3h000O8
+2?eW2K>{Q7p#uN_cnAOhCjbBd0000000000q=E0`0RV7ma4%nWWo~3|axY_HV`yb#Z*FvQZ)`7SX>4V
+8a$#_AWpXZXc~DCM0u%!j0000800{-FNDfpU{J{kP04)#z044wc00000000000HlG{=m7w5X>c!Jc4c
+m4Z*nhVVPj}zV{dMBa&K%eXk~SBX>)XGV{<NWc~DCM0u%!j0000800{-FNZXC4 at 8Sml0HGKF03`qb00
+000000000HlH1?g0RBX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eb7gXAVQgu7WiD`eP)h*<6ay3h000O82
+?eW2i+jaFyZ`_I@&Nz<BLDyZ0000000000q=EnT0RV7ma4%nWWo~3|axY_HV`yb#Z*FvQZ)`7ja$#_A
+WpXZXc~DCM0u%!j0000800{-FNS+;5{L26U0C52T04o3h00000000000HlHZ_W=NKX>c!Jc4cm4Z*nh
+VVPj}zV{dMBa&K%eV_{=xWpgiIUukY>bYEXCaCuNm0Rj{Q6aWAK2mlEMt4P782LD?H007Jl001oj000
+0000000005+c5cvTBaA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~LRW@&6?Ut?ioXk{*Nc~DCM0u
+%!j0000800{-FNYjYMRHgv{0L=pc04 at Lk00000000000HlGo{s91RX>c!Jc4cm4Z*nhVVPj}zV{dMBa
+&K%eV_{=xWpgibWn^h{Ut?ioXk{*Nc~DCM0u%!j0000800{-FNLbWqIkNx&0Pp|+03ZMW0000000000
+0HlGa00IDTX>c!Jc4cm4Z*nhVZ)|UJVQpbAUtei%X>?y-E^v8JO928D0~7!N00;mH1*=Ft6{lZ|0{{T
+r2><{b00000000000001_ftdjU0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~5Bb7?Mcc~DCM0u%!j0000800{
+-FNXKKq*>DN~0K_E#03!eZ00000000000HlFl1p)wYX>c!Jc4cm4Z*nhVZ)|UJVQpbAVQzD2bZ>WQZZ
+k42aCuNm0Rj{Q6aWAK2mlEMt4Mv;*e`_w004al001HY0000000000005+c4-f(XaA|NaUv_0~WN&gWV
+{dG4a$#*@FKKRRbZKF1X>(;RaCuNm0Rj{Q6aWAK2mlEMt4IxPqCHFn008wA0012T0000000000005+c
+)Di*!aA|NaUv_0~WN&gWV{dG4a$#*@FL!BfGcqo4c~DCM0u%!j0000800{-FNOyZ at A>su90FoF003QG
+V00000000000HlFi7y<xrX>c!Jc4cm4Z*nhVZ)|UJVQpbAcWG{PWpZsUaCuNm0Rj{Q6aWAK2mlEMt4O
+`NdYWAU002b-0018V0000000000005+cdL9A*aA|NaUv_0~WN&gWWNCABY-wUIUtei%X>?y-E^v8JO9
+28D0~7!N00;mH1*=HHOxVazDgXe~o&W$H00000000000001_ffOJD0B~t=FJE?LZe(wAFJx(RbZlv2F
+Jo_QaA9;VaCuNm0Rj{Q6aWAK2mlEMt4Nh6<)XnZ000NV0018V0000000000005+co=O4$aA|NaUv_0~
+WN&gWWNCABY-wUIWMOn+VqtS-E^v8JO928D0~7!N00;mH1*=Hn2F_dw6#xM6Q2+oO00000000000001
+_ft+~)0B~t=FJE?LZe(wAFJx(RbZlv2FKKRMWq2-dc~DCM0u%!j0000800{-FNKXN9T}Uzj06oP303Q
+GV00000000000HlH6jsgI1X>c!Jc4cm4Z*nhWX>)XJX<{#IZ)0I}Z*p at kaCuNm0Rj{Q6aWAK2mlEMt4
+N^>BzQm%0015}0018V0000000000005+cWWfReaA|NaUv_0~WN&gWWNCABY-wUIZDDR{W at U49E^v8JO
+928D0~7!N00;mH1*=Fs5v~G_2LJ$y7ytks00000000000001_f#J{s0B~t=FJE?LZe(wAFJx(RbZlv2
+FKuCRYh`kCE^v8JO928D0~7!N00;mH1*=FQ0}OVdBLDy{mjD1C00000000000001_fvVU70B~t=FJE?
+LZe(wAFJx(RbZlv2FKuOXVPs)+VJ>iaP)h*<6ay3h000O82?eW2bBd#CehUBqd?^3`AOHXW00000000
+00q=AV10swGna4%nWWo~3|axY|Qb98KJVlQ%Kb8mHWV`XzLaCuNm0Rj{Q6aWAK2mlEMt4LtMF+~Xy00
+4J80015U0000000000005+cL<j=_aA|NaUv_0~WN&gWWNCABY-wUIb7OL8aCCDnaCuNm0Rj{Q6aWAK2
+mlEMt4QMhG~lPI000170RS5S0000000000005+ci5dd{aA|NaUv_0~WN&gWWNCABY-wUIbTcw8Wq4&!
+O928D0~7!N00;mH1*=GGYP}3qxBvhEegOa*00000000000001_foa790B~t=FJE?LZe(wAFJx(RbZlv
+2FLX9EE at gOSP)h*<6ay3h000O82?eW2W|IFWs5t-tK+6CC8vp<R0000000000q=EN+1ORYpa4%nWWo~
+3|axY|Qb98KJVlQ=cX>2ZVc~DCM0u%!j0000800{-FNNyXol&~290H0g{03HAU00000000000HlG~w*
+&xiX>c!Jc4cm4Z*nhWX>)XJX<{#SWpZ<AZ*DGdc~DCM0u%!j0000800{-FNPb0t1w^I*002$_02=@R0
+0000000000HlG$(F6c+X>c!Jc4cm4Z*nhWX>)XJX<{#TGcqn^cx6ya0Rj{Q6aWAK2mlEMt4P$x3eOd_
+0001R0RS5S0000000000005+cL3jlKaA|NaUv_0~WN&gWWNCABY-wUIcQ!OGWq4&!O928D0~7!N00;m
+H1*=G3)S#&iB>(`+m;eAA00000000000001_fsZW)0B~t=FJE?LZe(wAFJx(RbZlv2FL!8VWo#~Rc~D
+CM0u%!j0000800{-FNF(oO{KEhM01^QJ04V?f00000000000HlG|QU(BUX>c!Jc4cm4Z*nhWX>)XJX<
+{#5Vqs%zaBp&SFJE72ZfSI1UoLQYP)h*<6ay3h000O82?eW2uZk~a&H(@b%L4!aB>(^b0000000000q
+=Dd51^{qra4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mZE163E^v8JO928D0~7!N00;mH1*=FjsnN<v
+8~^|^WB>ps00000000000001_f$>!a0B~t=FJE?LZe(wAFJx(RbZlv2FJEF|V{344a&#|qXmxaHY%Xw
+lP)h*<6ay3h000O82?eW2Zx#Tp_5lC at ISK#(D*ylh0000000000q=9~N1^{qra4%nWWo~3|axY|Qb98
+KJVlQ7}VPk7>Z*p`mb9r-PZ*FF3XD(xAXHZK40u%!j0000800{-FND)6sAm|<d08VKD04e|g0000000
+0000HlGvbOr!$X>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFLQZwV{dL|X=g5Qc~DCM0u%!j000080
+0{-FNTEYGTVq)O0Mls!04M+e00000000000HlHKlLi2AX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&S
+FLYsYW@&6?E^v8JO928D0~7!N00;mH1*=F-m}lLu0RR9C0{{RZ00000000000001_ftKwC0B~t=FJE?
+LZe(wAFKBdaY&C3YVlQ7`X>MtBUtcb8c~DCM0u%!j0000800{-FNRO6skjzN{09jK303iSX00000000
+000HlF~?*;&HX>c!Jc4cm4Z*nhabZu-kY-wUIV{dMAbYX6Eb1rasP)h*<6ay3h000O82?eW21#TRy|3
+m-)W6A*lBLDyZ0000000000q=Ak(2LNzsa4%nWWo~3|axZ9fZEQ7cX<{#EbZu-kaA9(DWpXZXc~DCM0
+u%!j0000800{-FNIK6c3<VSb0L4H603ZMW00000000000HlG=eg^<>X>c!Jc4cm4Z*nhabZu-kY-wUI
+X=q_|Wq56DE^v8JO928D0~7!N00;mH1*=G%YKRHb9smHbdjJ3<00000000000001_ff17j0B~t=FJE?
+LZe(wAFKBdaY&C3YVlQcKaCLNZbaG{3Z7y(mP)h*<6ay3h000O82?eW2$4_`dXcPbdj70zdApigX000
+0000000q=6-}2LNzsa4%nWWo~3|axZ9fZEQ7cX<{#PVQy)3X?kUHE^v8JO928D0~7!N00;mH1*=F>Cv
+)rz9RL7<ECB!^00000000000001_fy~AS0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-WYh`X}dS!AhaCuNm0
+Rj{Q6aWAK2mlEMt4JOm-5_HH006 at b0012T0000000000005+c7UTy2aA|NaUv_0~WN&gWXmo9CHEd~O
+FLiWjY;!Jfc~DCM0u%!j0000800{-FNB{r;00IC20000004M+e00000000000HlGm=?4ICX>c!Jc4cm
+4Z*nhabZu-kY-wUIW@&76WpZ;bUtei%X>?y-E^v8JO928D0~7!N00;mH1*=FRfcwOi0000U0RR9c000
+00000000001_f&A$Q0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1z?FVRL0JaCuNm0Rj{Q6aWAK2m
+lEMt4MzikWL^0003|T001 at s0000000000005+c)anNSaA|NaUv_0~WN&gWXmo9CHEd~OFJ at _MbY*gLF
+JWwOXklVybZKK at Y+-bCa%p09bY*icaCuNm0Rj{Q6aWAK2mlEMt4I}hc{;cP006oQ001)p0000000000
+005+cNbCmyaA|NaUv_0~WN&gWXmo9CHEd~OFJ at _MbY*gLFKKRSWn*+-ZDn*}Ut?%ta&u*LE^v8JO928
+D0~7!N00;mH1*=F9naaSR0{{SU5C8xq00000000000001_fl==V0B~t=FJE?LZe(wAFKBdaY&C3YVlQ
+TCY;<LEb1!UZZgehic~DCM0u%!j0000800{-FNYRsT2+0Nj00b!j04x9i00000000000HlF4^9KNMX>
+c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bZ*X*JZ*F01bYW+6E^v8JO928D0~7!N00;mH1*=FnujHYz0
+001B0RR9g00000000000001_fkyfV0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;<LEb1!pYZfSIBdS!Ah
+aCuNm0Rj{Q6aWAK2mlEMt4L$DS{2X%004Fb001fg0000000000005+cKKlm%aA|NaUv_0~WN&gWXmo9
+CHEd~OFJ at _MbY*gLFL!8ZbY*jJVPj=3aCuNm0Rj{Q6aWAK2mlEMt4IPd!{iVF008O%001ih00000000
+00005+cR{aM6aA|NaUv_0~WN&gWXmo9CHEd~OFLPybX<=+>dS!AiUtei%X>?y-E^v8JO928D0~7!N00
+;mH1*=H+ at r_G%4FCW)G5`QE00000000000001_fv^4t0B~t=FJE?LZe(wAFKBdaY&C3YVlQ)La%o{~X
+?kUHFKBdaY;$FDX<=+>dS!AhaCuNm0Rj{Q6aWAK2mlEMt4II<0006200000001oj0000000000005+c
+bPNapaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWnpAtaCBvIb1z?CX>MtBUtcb8c~DCM0u%!j0000800{-
+FNaS2!5E=pi0DT4k04M+e00000000000HlGz3<v;lX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7VPs)&bY*
+gLFLPmdE^v8JO928D0~7!N00;mH1*=G)Oo!#-1ONa{4FCWw00000000000001_fgukF0B~t=FJE?LZe
+(wAFKBdaY&C3YVlQ-ZWo2S at X>4R=a&s?VUukY>bYEXCaCuNm0Rj{Q6aWAK2mlEMt4O;Hsj@>30056Q0
+01fg0000000000005+cP80|LaA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWny({Y-D9}b1z?FVRL0JaCuNm
+0Rj{Q6aWAK2mlEMt4LugF&vi%000#s001Ze0000000000005+c*&+x4aA|NaUv_0~WN&gWXmo9CHEd~
+OFLZKcWny({Y-D9}b1!6XZ7y(mP)h*<6ay3h000O82?eW2V9$Fe1PTBEO)&rfDgXcg0000000000q=B
+|72mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bWpr|7WiD`eP)h*<6ay3h000O82?eW2lb
+<E~B at F-o&o%%6F8}}l0000000000q=5o82mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bW
+pr|7WnXM~ZEP-Zc~DCM0u%!j0000800{-FNS`)+HHHQN0EQL-04x9i00000000000HlF*LI?nGX>c!J
+c4cm4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bUtei%X>?y-E^v8JO928D0~7!N00;mH1*=HS!!)k~1^@t
+N8vp<)00000000000001_fka6N0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1z?FVRL0JaCu
+Nm0Rj{Q6aWAK2mlEMt4N)%3FG+z004~z001Wd0000000000005+cjZX*waA|NaUv_0~WN&gWXmo9CHE
+d~OFLZKcWp`n0Yh`kCFJy0RE^v8JO928D0~7!N00;mH1*=GANhX=?1ONc_5dZ)w00000000000001_f
+y+?{0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!9da%E*MaCuNm0Rj{Q6aWAK2mlEMt4J*v
+u-Cx?008C)001xm0000000000005+c|5gY9aA|NaUv_0~WN&gWXmo9CHEd~OFLZKcWp`n0Yh`kCFK1<
+Lb7*OEbaG{3Z7y(mP)h*<6ay3h000O82?eW2GalF-DFy%lXcqtgEdT%j0000000000q=61v2mo+ta4%
+nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgz<a&s?icx`NDbaG{7E^v8JO928D0~7!N00;mH1*=GPIY&^u0s
+sL12mk;p00000000000001_fr4NN0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!gpY;0t2Z
+7y(mP)h*<6ay3h000O82?eW2sa4&mh5!Hn)BpegB>(^b0000000000q=AQH2mo+ta4%nWWo~3|axZ9f
+ZEQ7cX<{#Qa%p8RUtei%X>?y-E^v8JO928D0~7!N00;mH1*=H(Vuh1^0RRA>0{{Rb00000000000001
+_fly=!0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZX=N{8VqtS-E^v8JO928D0~7!N00;mH1*=FTRh_A(0RR
+A+1ONad00000000000001_femH|0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZX=N{DVRUk7WiD`eP)h*<6a
+y3h000O82?eW2OHXdj9RdIV?*;$>9{>OV0000000000q=EEj2mo+ta4%nWWo~3|axZ9fZEQ7cX<{#Qa
+%p8RaCt6pc~DCM0u%!j0000800{-FNb{K^fPxAD0GlKL03ZMW00000000000HlFVY6t*uX>c!Jc4cm4
+Z*nheZ)0m_X>4ULUtei%X>?y-E^v8JO928D0~7!N00;mH1*=Fa-ts3R0{{SA3IG5k00000000000001
+_fev*D0B~t=FJE?LZe(wAFKlmPYi4O|WiM=LZfk6BV{2w<Y-KKRc~DCM0u%!j0000800{-FNFgS?esc
+o=02mAa03`qb00000000000HlF(cnAP+X>c!Jc4cm4Z*nheZ)0m_X>4ULZEIv{a%^v7Yi4O|WiD`eP)
+h*<6ay3h000O82?eW2AUtv{8VCRY$`=3tBLDyZ0000000000q=6`W2mo+ta4%nWWo~3|axZLeV{2w<Y
+-KNSX=H3~V{2w<Y-KKRc~DCM0u%!j0000800{-FNV|pby$J;X0D=_&044wc00000000000HlF~ga`m|
+X>c!Jc4cm4Z*nheZ)0m_X>4ULb8&2GbY*OBV{2w<Y-KKRc~DCM0u%!j0000800{-FNRcB6**yaQ05}Q
+&04D$d00000000000HlG?i3k92X>c!Jc4cm4Z*nheZ)0m_X>4ULb9rrSX>Mz5Z)0m_X>4UKaCuNm0Rj
+{Q6aWAK2mlEMt4Qw7v~h_6007Ve001HY0000000000005+cQjG`zaA|NaUv_0~WN&gWaA9L>VP|P>XD
+?r0VPbD}bYEXCaCuNm0Rj{Q6aWAK2mlEMt4M)%mdY3b00033001EX0000000000005+c8;=M8aA|NaU
+v_0~WN&gWaA9L>VP|P>XD?r0X>MtBUtcb8c~DCM0u%!j0000800{-FNakru<I4d609*qA03ZMW00000
+000000HlF(kO%;9X>c!Jc4cm4Z*nhiVPk7yXK8L{FJEJCZE#_9E^v8JO928D0~7!N00;mH1*=H<{iG6
+e0RRAq1pojf00000000000001_fqRk&0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rFb98cbV{~<LWpgfYc~D
+CM0u%!j0000800{-FNLWi%&D;q90P!9G03ZMW00000000000HlF1ln4NDX>c!Jc4cm4Z*nhiVPk7yXK
+8L{FKuCRYh`kCE^v8JO928D0~7!N00;mH1*=G|5ufvS1^@u(5C8xr00000000000001_fl8hT0B~t=F
+JE?LZe(wAFK}UFYhh<;Zf7rYWpQ<Ba%F90Zgg`laCuNm0Rj{Q6aWAK2mlEMt4MrBgN%<D004Py001KZ
+0000000000005+c1f>W7aA|NaUv_0~WN&gWaA9L>VP|P>XD at SbWn*b(X=QSAE^v8JO928D0~7!N00;m
+H1*=HK>L(8o0RRA{0RR9V00000000000001_fz-VS0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rbbZKmJE^v
+8JO928D0~7!N00;mH1*=F7 at 5Z5F4FCWnEdT%@00000000000001_fg!&L0B~t=FJE?LZe(wAFK}UFYh
+h<;Zf7rcWpZ<AZ*DGdc~DCM0u%!j0000800{-FNLDF2q>yU>0I!Py03`qb00000000000HlGy%m at H*X
+>c!Jc4cm4Z*nhiYiD0_Wpi(Ja${w4FJE72ZfSI1UoLQYP)h*<6ay3h000O82?eW2`dV>}k^}$%&kFzm
+AOHXW0000000000q=Az-2>@_ua4%nWWo~3|axZXlZ)b94b8|0WUukY>bYEXCaCuNm0Rj{Q6aWAK2mlE
+Mt4I&SMguei004ao000{R0000000000005+cV?7A~aA|NaUv_0~WN&gWaB^>Fa%FRKFJfVGE^v8JO92
+8D0~7!N00;mH1*=FZfAKI60{{Tt1poja00000000000001_fzUw-0B~t=FJE?LZe(wAFK}{iXL4n8b1
+!3Wb#8QJaxQRrP)h*<6ay3h000O82?eW2&g>6P`vU*~CJO)n9{>OV0000000000q=6ho2>@_ua4%nWW
+o~3|axZXlZ)b94b8|0fWo&R|a&s<lc~DCM0u%!j0000800{-FNOuTQd*}iH03rnd03QGV0000000000
+0HlFbNeKXOX>c!Jc4cm4Z*nhia&KpHWpi^cb8u;HZe?;VaCuNm0Rj{Q6aWAK2mlEMt4KydWGWW~005^
+5001BW0000000000005+cc}xiaaA|NaUv_0~WN&gWa%FLKWpi|MFJE72ZfSI1UoLQYP)h*<6ay3h000
+O82?eW2BviL){}KQI_(%W%AOHXW0000000000q=C**2>@_ua4%nWWo~3|axZdaadl;LbaO9ZWMOc0Wp
+Z;aaCuNm0Rj{Q6aWAK2mlEMt4OTVk?_F<005&F000{R0000000000005+c3uFlZaA|NaUv_0~WN&gWa
+%FLKWpi|MFJW+LE^v8JO928D0~7!N00;mH1*=GOhnbQ=2><|#9{>Ox00000000000001_fdy&_0B~t=
+FJE?LZe(wAFLGsZb!BsOb1z|abZ9Pcc~DCM0u%!j0000800{-FNSP`?X_3nU0Ej{b03QGV000000000
+00HlF{a|r-&X>c!Jc4cm4Z*nhkWpQ<7b98erV_{=ua&#_mWo=MP0Rj{Q6aWAK2mlEMt4OUeFOFsb003
+nI0012T0000000000005+cPCpC)aA|NaUv_0~WN&gWa%FLKWpi|MFJonLbaO6nc~DCM0u%!j0000800
+{-FNL1d%+%N(F0KEkO03HAU00000000000HlHMKnwtIX>c!Jc4cm4Z*nhkWpQ<7b98erV{dJ6VRSBVc
+~DCM0u%!j0000800{-FNMK?_I4ctX0Gvbs03QGV00000000000HlFiLks|LX>c!Jc4cm4Z*nhkWpQ<7
+b98erV{dP3X=QURaCuNm0Rj{Q6aWAK2mlEMt4O3XL88h7007tu001HY0000000000005+c!&VFcaA|N
+aUv_0~WN&gWa%FLKWpi|MFJ*XRWpH$9Z*FrgaCuNm0Rj{Q6aWAK2mlEMt4Lk~<GgwS009320012T000
+0000000005+c%~}iqaA|NaUv_0~WN&gWa%FLKWpi|MFKBOXYjZAec~DCM0u%!j0000800{-FNbHHAcv
+&F;09tbZ03HAU00000000000HlF}TnqqkX>c!Jc4cm4Z*nhkWpQ<7b98erZEs{{Y;!Jfc~DCM0u%!j0
+000800{-FNF&pF+DjV%06}2 at 03ZMW00000000000HlEzehdI`X>c!Jc4cm4Z*nhkWpQ<7b98erb7gaL
+X>V?GE^v8JO928D0~7!N00;mH1*=H))K5421ONc at 3;+Nm00000000000001_fuNZT0B~t=FJE?LZe(w
+AFLGsZb!BsOb1!prVRUtKUt at 1%WpgfYc~DCM0u%!j0000800{-FNcon~hk^tE0Lcpg03rYY00000000
+000HlH4o(uqRX>c!Jc4cm4Z*nhkWpQ<7b98erb98cbV{~<LWpgfYc~DCM0u%!j0000800{-FNUZ|gF#
+H?<0Mu3h0384T00000000000HlGRqYMCWX>c!Jc4cm4Z*nhkWpQ<7b98erb#!TLb1rasP)h*<6ay3h0
+00O82?eW2o;WAPxdH$HXaxWODF6Tf0000000000q=DAJ3;=Lxa4%nWWo~3|axZdaadl;LbaO9oVPk7y
+XJvCQUtei%X>?y-E^v8JO928D0~7!N00;mH1*=GLY)br%0ssIH1pojs00000000000001_f!4ze0B~t
+=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoJUukY>bYEXCaCuNm0Rj{Q6aWAK2mlEMt4M
+L2zcF`_005#w0RS-o0000000000005+cvc?PmaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVR
+B?;bT49QXEkPWWpOTWc~DCM0u%!j0000800{-FNdABs1RDbY0F(v*05bpp00000000000HlF<SPcMhX
+>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJftDHE?ooVr6nJaCuNm0Rj{Q6aWAK2mlEM
+t4MjWS6MRz0077d001)p0000000000005+c<Xa5 at aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3
+PVRB?;bT4CQVRB?;bY)|7E^v8JO928D0~7!N00;mH1*=H-kiq~C2><{JBme+800000000000001_foN
+b20B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoNXkl_>X>)XPX<~JBX>V>WaCuNm0R
+j{Q6aWAK2mlEMt4KMCrJr;J007Sp0027x0000000000005+c&1nq)aA|NaUv_0~WN&gWa%FLKWpi|MF
+K}UFYhh<)b1!3PVRB?;bT4CQVRCb2bZ2sJb#QQUZ(?O~E^v8JO928D0~7!N00;mH1*=H-8R&ys0{{SS
+2LJ#z00000000000001_ftqd&0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoNXkl`
+5Wpr?IZ(?O~E^v8JO928D0~7!N00;mH1*=HF*$_0~0{{RH2><{)00000000000001_fk|==0B~t=FJE
+?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoNZ)9n1XLEF6bY*Q}V`yn^WiD`eP)h*<6ay3h00
+0O82?eW2Ap6}pQ33z}g#-WqF8}}l0000000000q=ABV4FGUya4%nWWo~3|axZdaadl;LbaO9oVPk7yX
+JvCQV`yP=WMy<OV{dJ6VRSBVc~DCM0u%!j0000800{-FNc>g6&$a>p05=5y05Sjo00000000000HlE+
+c?|$?X>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJo_Rb97;DbaO6nc~DCM0u%!j0000
+800{-FNUH`W#!LeM0QLp|05kvq00000000000HlE?d<_6_X>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|
+D?FJow7a%5$6FJo{yG&yi`Z(?O~E^v8JO928D0~7!N00;mH1*=G=Ez&u01ONbY3;+N!000000000000
+01_fy93e0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPb7OFFZ(?O~E^v8JO928D0
+~7!N00;mH1*=HbNd3&o1pok_9smF?00000000000001_frW$(0B~t=FJE?LZe(wAFLGsZb!BsOb1!gV
+V{2h&WpgiMXkl_>WppoPb7OODE^v8JO928D0~7!N00;mH1*=G`e7r>q1pokE4gdf&00000000000001
+_ftrd90B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPbz^F9aB^>AWpXZXc~DCM0u%
+!j0000800{-FNGjwmk*`w#0GhJ^05Sjo00000000000HlHUj|~8DX>c!Jc4cm4Z*nhkWpQ<7b98eraA
+9L>VP|D?FJow7a%5$6FJ*OOYjS3CWpOTWc~DCM0u%!j0000800{-FNCmUT<QW410E-3y05kvq000000
+00000HlHT;|&0CX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FJ*OOYjSXMZ(?O~E^v8J
+O928D0~7!N00;mH1*=FUPoosyKmY(ZhyVaG00000000000001_fnnzj0B~t=FJE?LZe(wAFLGsZb!Bs
+Ob1!gVV{2h&WpgiMXkl_>WppoPbz^jQW^!e5E^v8JO928D0~7!N00;mH1*=FcqBv9;0{{Sw1^@sw000
+00000000001_fsiN;0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoPbz^jQaB^>AWp
+XZXc~DCM0u%!j0000800{-FNI8x44eLSx0IQ4u05bpp00000000000HlHYD-Hl~X>c!Jc4cm4Z*nhkW
+pQ<7b98eraA9L>VP|D?FJow7a%5$6FK1#hGcht|a%FKYaCuNm0Rj{Q6aWAK2mlEMt4JTU+x8j*005B&
+001=r0000000000005+cH*XFAaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4OOGBYt
+UaB^>AWpXZXc~DCM0u%!j0000800{-FNaK>NCTkJ^053EE05t#r00000000000HlGWat;7+X>c!Jc4c
+m4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKA_Aa%FdLa&KZ~axQRrP)h*<6ay3h000O82?eW2m#
+>-*zE%JL)3^WtFaQ7m0000000000q=90E4ghdza4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=W
+My<OYH4$3a%FKYaCuNm0Rj{Q6aWAK2mlEMt4JG#<j6}C005Lr001ul0000000000005+cZrlz4aA|Na
+Uv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4XfV{UYKE^v8JO928D0~7!N00;mH1*=F%QVEO
+<3jhG{F#rHN00000000000001_fd=pn0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>Wpp
+oWVQyz)b!=y0a%o|1ZEs{{Y%XwlP)h*<6ay3h000O82?eW2oSwI1{R;p9Jw*TjIsgCw0000000000q=
+9Su4ghdza4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OY+-I^V|j9EY;0*`ZEs{{Y%XwlP
+)h*<6ay3h000O82?eW25g|hzWeETPR51VmHvj+t0000000000q=CQ(4*+m!a4%nWWo~3|axZdaadl;L
+baO9oVPk7yXJvCQV`yP=WMy<OY+-I^XL4m_Yi)02Wo#~Rc~DCM0u%!j0000800{-FNFSnm3Z4l705&W
+D05|{u00000000000HlF>5f1=xX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKl6MXJ}
+<&a%FdIZ)9a`E^v8JO928D0~7!N00;mH1*=F<x0-&(3IG83FaQ8M00000000000001_fo>ZQ0B~t=FJ
+E?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoWVQyz=b#7;2a%o|1ZEs{{Y%XwlP)h*<6ay3h0
+00O82?eW2OFe&G<q7}*3oHNtHUIzs0000000000q=Akm4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7y
+XJvCQV`yP=WMy<OY+-I^bZB8|ZEs{{Y%XwlP)h*<6ay3h000O82?eW2<(jIQdj<dia1;OlH2?qr0000
+000000q=CmV4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WMy<OY+-b1ZZU9jZ(?O~E^v
+8JO928D0~7!N00;mH1*=G<oN;rV1ONcU3;+N)00000000000001_ft5H90B~t=FJE?LZe(wAFLGsZb!
+BsOb1!gVV{2h&WpgiMXkl_>WppoXVq<7wa&u*LaB^>AWpXZXc~DCM0u%!j0000800{-FNY0FpJ6Qt&0
+IvrC05|{u00000000000HlG4Jr4kIX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FKuFD
+b7yjIb#QQUZ(?O~E^v8JO928D0~7!N00;mH1*=H$<!72q3;+OzOaK5c00000000000001_fj2=90B~t
+=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&WpgiMXkl_>WppoXVq<f2Z7y(mP)h*<6ay3h000O82?eW2`Wh
+9udIkUhxe@>XH~;_u0000000000q=C>)4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQV`yP=WM
+y<Ob7Es?VRCb2bZ~NSVr6nJaCuNm0Rj{Q6aWAK2mlEMt4O5W<-a5Z007$z001}u0000000000005+cp
+i~b4aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!3PVRB?;bT4yaV{>P6Z*_2Ra&KZ~axQRrP)h*<
+6ay3h000O82?eW2mtpW${R992v<?6OGXMYp0000000000q=6b)4*+m!a4%nWWo~3|axZdaadl;LbaO9
+oVPk7yXJvCQV`yP=WMy<Ob82aGaB^>AWpXZXc~DCM0u%!j0000800{-FNUfYUI#&k(0Js_e06G8w000
+00000000HlFvUJn3pX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FLiEdc4cyNVQge&bY
+)|7Z*nehc~DCM0u%!j0000800{-FNMHLPYaRpu09*<H05bpp00000000000HlEzW)A>xX>c!Jc4cm4Z
+*nhkWpQ<7b98eraA9L>VP|D?FJow7a%5$6FLiWgIB;@rVr6nJaCuNm0Rj{Q6aWAK2mlEMt4IpUUr%@h
+001Tn001!n0000000000005+chH4K0aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR9
+XX>MtBUtcb8c~DCM0u%!j0000800{-FNC#*UHP{RQ068fD05t#r00000000000HlFUZw~-)X>c!Jc4c
+m4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJEJCY;0v?bZKvHb1rasP)h*<6ay3h000O82?eW20b
+UIZnhpQ}VJ!dvGXMYp0000000000q=9&R4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX
+<{=kV{dM5Wn*+{Z*DGdc~DCM0u%!j0000800{-FNRKJ8je;Wp0Lgy<05<>t00000000000HlFqiw^*B
+X>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJo_RZe?S1X>V?DZ*OcaaCuNm0Rj{Q6aWA
+K2mlEMt4I{1O0^aT007?=001)p0000000000005+cI<F4^aA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh
+<)b1!vrY;0*_GcRR$V`Xr3X>V?GE^v8JO928D0~7!N00;mH1*=HcuK4LG2LJ#o7XSb+000000000000
+01_fuXh!0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvhX=Q9=b1rasP)h*<6ay3h0
+00O82?eW2o%ygKPXhn|5D5SPF#rGn0000000000q=6T{4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7y
+XJvCQb#iQMX<{=kW@&6?aBp*TE^v8JO928D0~7!N00;mH1*=H#rldt}3jhF)B>(_400000000000001
+_fwjR80B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvrZ*OdEVQyh(WpXZXc~DCM0u%
+!j0000800{-FNPRPOu9yb^0Av>c05AXm00000000000HlF*%?|)@X>c!Jc4cm4Z*nhkWpQ<7b98eraA
+9L>VP|D?FLiQkY-wUMFLGsZb!BsOE^v8JO928D0~7!N00;mH1*=H(Iv-FH6aWBjNB{sa00000000000
+001_fm+oM0B~t=FJE?LZe(wAFLGsZb!BsOb1!gVV{2h&Wpgiea%^mAVlyvtWpi+EZgXWWaCuNm0Rj{Q
+6aWAK2mlEMt4II<00062000000021v0000000000005+cyXg-AaA|NaUv_0~WN&gWa%FLKWpi|MFK}U
+FYhh<)b1!vrY;0*_GcRLrZgg^KVlQ7`X>MtBUtcb8c~DCM0u%!j0000800{-FNHuy^n@$M;00JKX06G
+8w00000000000HlEw>JI>LX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJo_RbaH88FJ
+W+SWo~C_Ze=cTc~DCM0u%!j0000800{-FNZ1mewyOmI0J9MQ0672v00000000000HlGs^A7-UX>c!Jc
+4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFJo_RbaH88FK%>fZE$aIY%XwlP)h*<6ay3h000O8
+2?eW2BjmpfaSi|g0xkdmIsgCw0000000000q=CHo4*+m!a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvC
+Qb#iQMX<{=kV{dMBa%o~OaCvWVWo~nGY%XwlP)h*<6ay3h000O82?eW2`X*Toy#@dPB^CexHUIzs000
+0000000q=AJ95CCv#a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kV{dMBa%o~Ob8lm7b1
+rasP)h*<6ay3h000O82?eW2k6oaAPyhe`Z2$lOIsgCw0000000000q=A+X5CCv#a4%nWWo~3|axZdaa
+dl;LbaO9oVPk7yXJvCQb#iQMX<{=kaA9L>VP|D?FJE72ZfSI1UoLQYP)h*<6ay3h000O82?eW2M!}|M
+ at CpC`=OO?AJ^%m!0000000000q=7yV5CCv#a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=
+kaA9L>VP|D?FK=>WWpZU?Uu0=xbS`jtP)h*<6ay3h000O82?eW2(^wv{Tn+#LY%Kr)H2?qr00000000
+00q=AYX5CCv#a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kaA9L>VP|D?FLP;lE^v8JO9
+28D0~7!N00;mH1*=F9uxRDo0002Y0RR9^00000000000001_fjKG=0B~t=FJE?LZe(wAFLGsZb!BsOb
+1!gVV{2h&Wpgiea%^mAVlyvrVPk7yXJvCQb8~E8ZDDj{XkTb=b98QDZDlWCUukY>bYEXCaCuNm0Rj{Q
+6aWAK2mlEMt4OWXoEroN006=c002|~0000000000005+cfh!OIaA|NaUv_0~WN&gWa%FLKWpi|MFK}U
+FYhh<)b1!vrY;0*_GcRyqV{2h&Wpgicb8KI2VRU0?UubW0bZ%j7WiMZ8ZE$R5ZDnqBVRUJ4ZZ2?nP)h
+*<6ay3h000O82?eW28 at Oljb^!nYd;<UgHUIzs0000000000q=EM_5CCv#a4%nWWo~3|axZdaadl;Lba
+O9oVPk7yXJvCQb#iQMX<{=kb#!TLFJE72ZfSI1UoLQYP)h*<6ay3h000O82?eW2*v|{0I0XOzGz|a%H
+~;_u0000000000q=CUR5CCv#a4%nWWo~3|axZdaadl;LbaO9oVPk7yXJvCQb#iQMX<{=kb#!TLFJo_R
+Ze?S1X>V>WaCuNm0Rj{Q6aWAK2mlEMt4Pejygu3j002-3001=r0000000000005+cPdN|(aA|NaUv_0
+~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR>?X>2cYWpQ<7b963nc~DCM0u%!j0000800{-FNNw
+i<9GwFI0Cfle05$*s00000000000HlF at JP-hIX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-
+wUMFLiWjY%g+Ub8v5Nb7d}Yc~DCM0u%!j0000800{-FNORw>@4gHG0B$G%05bpp00000000000HlF!K
+o9_MX>c!Jc4cm4Z*nhkWpQ<7b98eraA9L>VP|D?FLiQkY-wUMFLiWjY%g+UbaHtvaCuNm0Rj{Q6aWAK
+2mlEMt4LLt2lt5&003w$001%o0000000000005+cd`%DlaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<
+)b1!vrY;0*_GcR>?X>2cZb8KHOaCuNm0Rj{Q6aWAK2mlEMt4MFQY1mK;004X?001=r0000000000005
++cRb3DOaA|NaUv_0~WN&gWa%FLKWpi|MFK}UFYhh<)b1!vrY;0*_GcR>?X>2caX>Db1b#yLpc~DCM0u
+%!j0000800{-FNN1UAHV+5 at 0QVLE05Jdn00000000000HlHVXb=E!X>c!Jc4cm4Z*nhkWpQ<7b98era
+A9L>VP|D?FLiQkY-wUMFLiWjY%g_kY%XwlP)h*<6ay3h000O82?eW2`JN`VlL7z$VF&;K7ytkO00000
+00000q=8m(5CCv#a4%zTZEaz0WOFZHUukY>bYEXCaCuNm0Rj{Q6aWAK2mlEMt4Nq6UqSH#006HC000^
+Q0000000000005+cA9N4^aA|NaV{dJ3VQyq|FJo_QaBO9CX>V>WaCuNm0Rj{Q6aWAK2mlEMt4LptfSY
+Lr006`i000;O0000000000005+cNOuqbaA|NaV{dJ3VQyq|FJy0bZftL1WG--dP)h*<6ay3h000O82?
+eW2oZxMo!UF&R)(QXs761SM0000000000q=Dyr5CCv#a4%zTZEaz0WOFZOa%E+DWiD`eP)h*<6ay3h0
+00O82?eW2_=)VKy#fFLJq7>(6aWAK0000000000q=DUl5CCv#a4%zTZEaz0WOFZQVRL9MaCuNm0Rj{Q
+6aWAK2mlEMt4JOe(4DFQ007nl000yK0000000000005+c%!3dBaA|NaV{dJ3VQyq|FKA_Ka4v9pP)h*
+<6ay3h000O82?eW2OiFz~)C~XtdpZCB7XSbN0000000000q=Be~5CCv#a4%zTZEaz0WOFZRZgX^DY-}
+!Yc~DCM0u%!j0000800{-FNW=+snIZ=O0Q4LH02BZK00000000000HlGjlMn!KX>c!NZ*6U1Ze(*WY-
+w|JE^v8JO928D0~7!N00;mH1*=F5N?^T^1^@ui5&!@e00000000000001_fd!io0B~t=FJo_QZDDR?b
+1!pcVRB<=E^v8JO928D0~7!N00;mH1*=Gq$y8wN1^@uJ761Sg00000000000001_fyto|0B~t=FJo_Q
+ZDDR?b1!pfZ+9+mc~DCM0u%!j0000800{-FNUMn%KhOgJ07MG_02u%P00000000000HlHFs1N{fX>c!
+NZ*6U1Ze(*Wb#7^Hb97;BY%XwlP)h*<6ay3h000O82?eW2>|x-B+6MptXdM6m6#xJL0000000000q=E
+0O5CCv#a4%zTZEaz0WOFZfXk}$=E^v8JO928D0~7!N00;mH1*=Fl4bzC~1^@s(5&!@e000000000000
+01_f&8=(0B~t=FJo_QaA9;WUtei%X>?y-E^v8JO928D0~7!N00;mH1*=GcqNSHj6#xJ at S^xkT000000
+00000001_ff~FJ0B~t=FJo_QaA9;WWNBk`V{dL|X=g5Qc~DCM0u%!j0000800{-FNZS|KEg%K}01glU
+02u%P00000000000HlGP(GUP|X>c!NZ*6d4bT4mmWMy(?WMpY$bS`jtP)h*<6ay3h000O82?eW2sv2j
+!K>z>%M*si-761SM0000000000q=EF;5CCv#a4&6dWMyn~FJE72ZfSI1UoLQYP)h*<6ay3h000O82?e
+W2XihS1;Q#;t=K%l!6951J0000000000q=9MJ5CCv#a4&6dWMyn~FKKRMWq2-dc~DCM0u%!j0000800
+{-FNB{r;00IC20000002%-Q00000000000HlF?*$@D5X>c!ZaAk5~bZKvHb1z?CX>MtBUtcb8c~DCM0
+u%!j0000800{-FNEkmuqEiF_0MHKr02lxO00000000000HlGn*$@D5X>c!ZaAk5~bZKvHb1!CcWo3G0
+E^v8JO928D0~7!N00;mH1*=G0Y0?>h0000K0RR9K00000000000001_fj-_40B~t=FLGsZFJE72ZfSI
+1UoLQYP)h*<6ay3h000O82?eW2gn;bnX$=4Xm at WVS6951J0000000000q=E0=5CCv#a4&LYaW8UZabI
+R>Y-KKRc~DCM0u%!j0000800{-FNH$A42s|wS01vVN02TlM00000000000HlG5><|EOX>c!cWpOWZWp
+Q6=ZgX^DY-}!Yc~DCM0u%!j0000800{-FNSD?{dukv60Q`Rd01^NI00000000000HlHW84&<*X>c!cW
+pOWZWpQ6~WpplZc~DCM0u%!j0000800{-FNCig3a8L*U0Pz|C02lxO00000000000HlGFIuQVHX>c!c
+WpOWZWpQ71ZfS0FbYX04E^v8JO928D0~7!N00;mH1*=HcA_*X}Apii2YXATh00000000000001_ff+*
+)0B~t=FLiWjY;!MPUukY>bYEXCaCuNm0Rj{Q6aWAK2mlEMt4K{gl%h)s007t?000yK0000000000005
++c{$vpVaA|Nab#!TLb1z|VaAaw6b1rasP)h*<6ay3h000O82?eW2%?wR000IC2AO!#b5&!@I0000000
+000q=9>G5dd&$a4&UqX>4;ZVs&Y3WG--dP)h*<6ay3h000O82?eW25#!bc2Lk{AzX$*T7ytkO000000
+0000q=Bn&5dd&$a4&UqX>4;ZWMy!2Wn*D<X>V>WaCuNm0Rj{Q6aWAK2mlEMt4O_CKd`z1007Ga000#L
+0000000000005+c=yMSOaA|Nab#!TLb1!9XV{c?>Zf7oVc~DCM0u%!j0000800{-FNb*DNz at z~H0D}V
+n02crN00000000000HlG{brAq?X>c!fbZKmJFJ at _MWpjCRbY*QWaCuNm0Rj{Q6aWAK2mlEMt4OId=>&
+ZQ001%z000vJ0000000000005+cu6GdtaA|Nab#!TLb1!INb7*CAE^v8JO928D0~7!N00;mH1*=GBCf
+9hg1ONd43;+NW00000000000001_fn0nM0B~t=FLiWjY;!McZ)ay|Zf7oVc~DCM0u%!j0000800{-FN
+Jv!J>WKyb08bSF02KfL00000000000HlFIfe`?3X>c!fbZKmJFK=~pWMOn=WG--dP)h*<6ay3h000O8
+2?eW2L at EYjtN;K2 at Bjb+9RL6T0000000000q=Eg15dd&$a4&UqX>4;Zb7gdOaCC2PY;#{?b!lv5E^v8
+JO928D0~7!N00;mH1*=Hq;*gbM4gdg6EdT%y00000000000001_f#ir00B~t=FLiWjY;!MlX)bViP)h
+*<6ay3h000O82?eW2_vxpg=?wq?Jum<O6951J0000000000q=9pn5dd&$a4&Xab1z?CX>MtBUtcb8c~
+DCM0u%!j0000800{-FNc+Id#WMu}0NV}#01*HH00000000000HlG9r4aydX>c!gV{<QJVR~U<axQRrP
+)h*<6ay3h000O82?eW2oUEgA<qH4+>L&mI4gdfE0000000000q=E0M5dd&$a4&Xab1!FUbS`jtP)h*<
+6ay3h000O82?eW2d17iEVFUmGkPQF;6aWAK0000000000q=5jp5dd&$a4&Xab1!XWa$|LJX<=+GaCuN
+m0Rj{Q6aWAK2mlEMt4JBKUe#L)008eH000#L0000000000005+cle-ZBaA|Nac4Kodb9G{NWpZ<AZ*D
+Gdc~DCM0u%!j0000801gGKNC`KikMjWl0FML!03!eZ00000000000HlE-#t{H;X>ct#E-@}LE at WwQbS
+-IaW^XS<MN>mkNl;WtPfjj!b97Kk0Rj{Q6aWAK2mlQQt4MD$`M4?o002Y)001Na0000000000005+cR
+mc$laA|NYI4&_RGA?9kb960fZf0*UWo~qGd0%jEX>N3LE_8TwP)h*<6ay3h000O84h5 at 7T5>mEW&!{J
+=>-4)ApigX0000000000q=CW65dd&$a4k44F)lJLWNCABEop9MZ!c|SbYWy+bYU)Pb8l`?O928D0~7!
+N00;mL1*=HMAD6-g000040000X00000000000001_fo97Q0B~t=EjTVQE;24;X>)WfX>Mk3FLZBkUu<
+P|Wo#~Vcyv%p0Rj{Q6aWAK2mlTRt4OQcf)if=003?P000>P0000000000005+ctIH7paA|NYI4&_RGA
+?9kb960fZf0*US4c%gOi)V!0u%!j0000801gGKNKL-_gKPr;06GZ(02}}S00000000000HlFI%n<-^X
+>ct#E-@}LE at WwQbS-IaW^XS|MN~mVK~zCdO928D0~7!N00;mM1*=H7*ytJ4D*yo5S^xkV0000000000
+0001_f#=T=0B~t=EjTVQE;24;X>)WfX>Mk3FH%KAPf|osO9ci10002?0QLZBPXGY&`w;*D00
+"""
+
+
+if __name__ == "__main__":
+    main()
diff --git a/FALCON-make/makefile b/FALCON-make/makefile
new file mode 100644
index 0000000..708d052
--- /dev/null
+++ b/FALCON-make/makefile
@@ -0,0 +1,68 @@
+-include config.mk
+# Required:
+#   FALCON_PREFIX
+#   FALCON_WORKSPACE
+# Optional:
+#   FALCON_PIP_EDIT
+#   FALCON_PIP_USER
+#   FALCON_INSTALL_RULE (symlink or install)
+#   PYTHONUSERBASE
+FALCON_PIP_EDIT?=--edit
+FALCON_INSTALL_RULE?=symlink
+export CC=gcc
+export CXX=g++
+
+all: checklist
+	${MAKE} show
+	${MAKE} install-pip
+	${MAKE} install
+	${MAKE} check
+checklist:
+	@if [ -z "$${FALCON_PREFIX}" ]; then echo 'Error: FALCON_PREFIX is not set'; exit 1; fi
+	@if [ ! -e "$${FALCON_PREFIX}/bin" ] ; then echo 'Error: directory FALCON_PREFIX/bin (${FALCON_PREFIX}/bin) does not exist'; exit 1; fi
+install: install-DAZZ_DB install-DALIGNER install-DAMASKER install-pypeFLOW install-FALCON install-git-sym
+install-DAZZ_DB:
+	${MAKE} -C ${FALCON_WORKSPACE}/DAZZ_DB all
+	PREFIX=${FALCON_PREFIX} ${MAKE} -C ${FALCON_WORKSPACE}/DAZZ_DB ${FALCON_INSTALL_RULE}
+install-DALIGNER: install-DAZZ_DB
+	${MAKE} -C ${FALCON_WORKSPACE}/DALIGNER all
+	PREFIX=${FALCON_PREFIX} ${MAKE} -C ${FALCON_WORKSPACE}/DALIGNER ${FALCON_INSTALL_RULE}
+install-DAMASKER:
+	${MAKE} -C ${FALCON_WORKSPACE}/DAMASKER all
+	PREFIX=${FALCON_PREFIX} ${MAKE} -C ${FALCON_WORKSPACE}/DAMASKER ${FALCON_INSTALL_RULE}
+install-pypeFLOW:
+	cd ${FALCON_WORKSPACE}/pypeFLOW; pip uninstall -v .; pip install -v ${FALCON_PIP_USER} ${FALCON_PIP_EDIT} .
+install-FALCON: install-pypeFLOW
+	cd ${FALCON_WORKSPACE}/FALCON; pip uninstall -v .; pip install -v ${FALCON_PIP_USER} ${FALCON_PIP_EDIT} .
+install-git-sym:
+	# TODO: copy vs. symlink?
+	ln -sf $(abspath ${FALCON_WORKSPACE}/git-sym/git-sym) ${FALCON_PREFIX}/bin/git-sym
+
+install-pip:
+	python -c 'import pip; print pip' || python get-pip.py ${FALCON_PIP_USER}
+	pip install ${FALCON_PIP_USER} --upgrade pip
+	pip install ${FALCON_PIP_USER} --upgrade setuptools # needed when --edit is used
+show:
+	mkdir -p ${FALCON_PREFIX}/bin
+	which python
+	echo "PYTHONUSERBASE=${PYTHONUSERBASE}"
+	python -c 'import site; print site.USER_BASE'
+	echo "FALCON_PIP_EDIT=${FALCON_PIP_EDIT}"
+	echo "FALCON_PIP_USER=${FALCON_PIP_USER}"
+check:
+	python -c 'import pypeflow.common; print pypeflow.common'
+	python -c 'import falcon_kit; print falcon_kit.falcon'
+extra:
+	pip install ${FALCON_PIP_USER} Cython
+	pip install ${FALCON_PIP_USER} numpy
+	pip install ${FALCON_PIP_USER} h5py
+	cd ${FALCON_WORKSPACE}/pbcommand; pip install ${FALCON_PIP_USER} ${FALCON_PIP_EDIT} .
+	cd ${FALCON_WORKSPACE}/pbsmrtpipe; pip install ${FALCON_PIP_USER} ${FALCON_PIP_EDIT} .
+test: #after 'install'
+	${MAKE} -C ${FALCON_WORKSPACE}/FALCON-examples test
+clean:
+	cd ${FALCON_WORKSPACE}/DAZZ_DB; ${MAKE} clean
+	cd ${FALCON_WORKSPACE}/DALIGNER; ${MAKE} clean
+	cd ${FALCON_WORKSPACE}/DAMASKER; ${MAKE} clean
+	cd ${FALCON_WORKSPACE}/pypeFLOW; python setup.py clean; rm -rf build/ dist/
+	cd ${FALCON_WORKSPACE}/FALCON; python setup.py clean; rm -rf build/ dist/
diff --git a/.travis.yml b/FALCON/.travis.yml
similarity index 100%
copy from .travis.yml
copy to FALCON/.travis.yml
diff --git a/LICENSE b/FALCON/LICENSE
similarity index 100%
rename from LICENSE
rename to FALCON/LICENSE
diff --git a/MANIFEST.in b/FALCON/MANIFEST.in
similarity index 100%
rename from MANIFEST.in
rename to FALCON/MANIFEST.in
diff --git a/README.md b/FALCON/README.md
similarity index 100%
copy from README.md
copy to FALCON/README.md
diff --git a/doc/README b/FALCON/doc/README
similarity index 100%
rename from doc/README
rename to FALCON/doc/README
diff --git a/doc/falcon_icon.svg b/FALCON/doc/falcon_icon.svg
similarity index 100%
rename from doc/falcon_icon.svg
rename to FALCON/doc/falcon_icon.svg
diff --git a/doc/falcon_icon2.png b/FALCON/doc/falcon_icon2.png
similarity index 100%
rename from doc/falcon_icon2.png
rename to FALCON/doc/falcon_icon2.png
diff --git a/examples/build_env.sh b/FALCON/examples/build_env.sh
similarity index 100%
rename from examples/build_env.sh
rename to FALCON/examples/build_env.sh
diff --git a/examples/build_env2.sh b/FALCON/examples/build_env2.sh
similarity index 100%
rename from examples/build_env2.sh
rename to FALCON/examples/build_env2.sh
diff --git a/examples/ecoli_asm_graph_exploration.ipynb b/FALCON/examples/ecoli_asm_graph_exploration.ipynb
similarity index 100%
rename from examples/ecoli_asm_graph_exploration.ipynb
rename to FALCON/examples/ecoli_asm_graph_exploration.ipynb
diff --git a/examples/fc_run_LG.cfg b/FALCON/examples/fc_run_LG.cfg
similarity index 100%
rename from examples/fc_run_LG.cfg
rename to FALCON/examples/fc_run_LG.cfg
diff --git a/examples/fc_run_arab.cfg b/FALCON/examples/fc_run_arab.cfg
similarity index 100%
rename from examples/fc_run_arab.cfg
rename to FALCON/examples/fc_run_arab.cfg
diff --git a/examples/fc_run_dmel.cfg b/FALCON/examples/fc_run_dmel.cfg
similarity index 100%
rename from examples/fc_run_dmel.cfg
rename to FALCON/examples/fc_run_dmel.cfg
diff --git a/examples/fc_run_ecoli.cfg b/FALCON/examples/fc_run_ecoli.cfg
similarity index 100%
rename from examples/fc_run_ecoli.cfg
rename to FALCON/examples/fc_run_ecoli.cfg
diff --git a/examples/fc_run_ecoli_2.cfg b/FALCON/examples/fc_run_ecoli_2.cfg
similarity index 100%
rename from examples/fc_run_ecoli_2.cfg
rename to FALCON/examples/fc_run_ecoli_2.cfg
diff --git a/examples/logging.json b/FALCON/examples/logging.json
similarity index 100%
copy from examples/logging.json
copy to FALCON/examples/logging.json
diff --git a/examples/run_ecoli_test.sh b/FALCON/examples/run_ecoli_test.sh
similarity index 100%
rename from examples/run_ecoli_test.sh
rename to FALCON/examples/run_ecoli_test.sh
diff --git a/falcon_kit/FastaReader.py b/FALCON/falcon_kit/FastaReader.py
similarity index 100%
rename from falcon_kit/FastaReader.py
rename to FALCON/falcon_kit/FastaReader.py
diff --git a/falcon_kit/__init__.py b/FALCON/falcon_kit/__init__.py
similarity index 100%
rename from falcon_kit/__init__.py
rename to FALCON/falcon_kit/__init__.py
diff --git a/falcon_kit/bash.py b/FALCON/falcon_kit/bash.py
similarity index 84%
rename from falcon_kit/bash.py
rename to FALCON/falcon_kit/bash.py
index 1621535..c62a113 100644
--- a/falcon_kit/bash.py
+++ b/FALCON/falcon_kit/bash.py
@@ -1,6 +1,7 @@
 """Most bash-scripting is generated here.
 """
 from . import functional
+import functools
 import getpass
 import md5
 import os
@@ -77,13 +78,12 @@ touch {job_done}
         ofs.write(wrapper)
     return job_done, job_exit
 
-def select_rundir(wdir, script):
-    tmpdir = tempfile.gettempdir()
+def select_rundir(tmpdir, wdir, script):
     user = getpass.getuser()
     digest = md5.md5(script).hexdigest()
     return '{}/{}/falcontmp/{}/{}'.format(tmpdir, user, wdir, digest)
 
-def write_script_and_wrapper_for_tmp(script, wrapper_fn, job_done):
+def write_script_and_wrapper_for_tmp(tmpdir, script, wrapper_fn, job_done):
     wdir = os.path.dirname(os.path.abspath(wrapper_fn))
     root, ext = os.path.splitext(os.path.basename(wrapper_fn))
     sub_script_bfn = root + '.xsub' + ext
@@ -91,7 +91,7 @@ def write_script_and_wrapper_for_tmp(script, wrapper_fn, job_done):
         exe = write_sub_script(ofs, script)
     make_executable(os.path.join(wdir, sub_script_bfn))
 
-    rdir = select_rundir(wdir, script)
+    rdir = select_rundir(tmpdir, wdir, script)
     tmp_wrapper_script = """
 shopt -s dotglob
 rm -rf {rdir}
@@ -99,7 +99,8 @@ mkdir -p {rdir}
 cd {rdir}
 for target in {wdir}/* ; do ln -s $target . ; done
 time {exe} ./{sub_script_bfn}
-for x in ./* ; do if [ -f $x -a ! -L $x ] ; then mv -f $x {wdir} ; fi ; done
+shopt -s dotglob
+for x in ./* ; do if [ -f $x -a ! -f {wdir}/$x ] ; then mv -f $x {wdir} ; fi ; done
 cd {wdir}
 rm -rf {rdir}
 # Presumably, the parent directories might be used by other jobs.
@@ -109,11 +110,17 @@ rm -rf {rdir}
 
 def get_write_script_and_wrapper(config):
     """Return a function.
+    For now, we actually use only config['use_tmpdir'], a boolean.
     """
-    if config['use_tmpdir']:
+    use_tmpdir = config.get('use_tmpdir', None)
+    if use_tmpdir:
+        if use_tmpdir is not True and '/' in use_tmpdir:
+            tmpdir = use_tmpdir
+        else:
+            tmpdir = tempfile.gettempdir()
         # Really, we also want to copy the symlinked db to tmpdir.
         # Tricky. TODO.
-        return write_script_and_wrapper_for_tmp
+        return functools.partial(write_script_and_wrapper_for_tmp, tmpdir)
     else:
         return write_script_and_wrapper_top
 
@@ -155,12 +162,12 @@ def script_build_rdb(config, input_fofn_fn, run_jobs_bfn):
     update_dict_entry(config, 'pa_DBsplit_option', filter_DBsplit_option)
     DBsplit = 'DBsplit {pa_DBsplit_option} raw_reads'.format(**config)
     #if openending == True:
-    #    count = """$(cat raw_reads.db | awk '$1 == "blocks" {print $3-1}')"""
-    count = """$(cat raw_reads.db | awk '$1 == "blocks" {print $3}')"""
+    #    count = """$(cat raw_reads.db | LD_LIBRARY_PATH= awk '$1 == "blocks" {print $3-1}')"""
+    count = """$(cat raw_reads.db | LD_LIBRARY_PATH= awk '$1 == "blocks" {print $3}')"""
     params = dict(config)
     length_cutoff = params.get('length_cutoff')
     if int(length_cutoff) < 0:
-        bash_cutoff = '$(python -m falcon_kit.mains.calc_cutoff --coverage {} {} <(DBstats -b1 {}))'.format(
+        bash_cutoff = '$(python2.7 -m falcon_kit.mains.calc_cutoff --coverage {} {} <(DBstats -b1 {}))'.format(
             params['seed_coverage'], params['genome_size'], 'raw_reads')
     else:
         bash_cutoff = '{}'.format(length_cutoff)
@@ -190,7 +197,7 @@ HPC.daligner {pa_HPCdaligner_option} {mdust} -H$CUTOFF raw_reads {last_block}-$L
 
 def script_build_pdb(config, input_fofn_bfn, run_jobs_bfn):
     last_block = 1
-    count = """$(cat preads.db | awk '$1 == "blocks" {print $3}')"""
+    count = """$(cat preads.db | LD_LIBRARY_PATH= awk '$1 == "blocks" {print $3}')"""
     params = dict(config)
     update_dict_entry(params, 'ovlp_DBsplit_option', filter_DBsplit_option)
     params.update(locals())
@@ -214,14 +221,18 @@ time DB2Falcon -U preads
 """.format(**params)
     return script
 
-def scripts_daligner(run_jobs_fn, db_prefix, rdb_build_done, pread_aln=False):
+def scripts_daligner(run_jobs_fn, db_prefix, rdb_build_done, nblock, pread_aln=False, skip_check=False):
     """Yield job_uid, bash
     """
     scripts = {}
     xform_script = functional.get_script_xformer(pread_aln)
     db_dir = os.path.dirname(run_jobs_fn)
+    get_daligner_job_descriptions = (
+            functional.get_daligner_job_descriptions_sans_LAcheck if skip_check else
+            functional.get_daligner_job_descriptions)
+    single = (nblock == 1)
     try:
-        job_descs = functional.get_daligner_job_descriptions(open(run_jobs_fn), db_prefix)
+        job_descs = get_daligner_job_descriptions(open(run_jobs_fn), db_prefix, single)
     except Exception:
         raise Exception('Could not parse job descriptions from file "{}":\n{}'.format(
             run_jobs_fn, traceback.format_exc()))
@@ -267,7 +278,7 @@ def script_run_consensus(config, db_fn, las_fn, out_file_bfn):
     # to create yet another task in pbsmrtpipe.
     length_cutoff = params.get('length_cutoff')
     if int(length_cutoff) < 0:
-        bash_cutoff = '$(python -m falcon_kit.mains.calc_cutoff --coverage {} {} <(DBstats -b1 {}))'.format(
+        bash_cutoff = '$(python2.7 -m falcon_kit.mains.calc_cutoff --coverage {} {} <(DBstats -b1 {}))'.format(
             params['seed_coverage'], params['genome_size'], db_fn)
     else:
         bash_cutoff = '{}'.format(length_cutoff)
@@ -317,3 +328,10 @@ time fc_dedup_a_tigs
 """
     return script.format(**params)
 
+def script_run_report_pre_assembly(i_raw_reads_db_fn, i_preads_fofn_fn, genome_length, length_cutoff, o_json_fn):
+    params = dict()
+    params.update(locals())
+    script = """\
+python -m falcon_kit.mains.report_pre_assembly --genome-length {genome_length} --length-cutoff {length_cutoff} --db {i_raw_reads_db_fn} --preads-fofn {i_preads_fofn_fn} --out {o_json_fn}
+"""
+    return script.format(**params)
diff --git a/falcon_kit/falcon_kit.py b/FALCON/falcon_kit/falcon_kit.py
similarity index 100%
rename from falcon_kit/falcon_kit.py
rename to FALCON/falcon_kit/falcon_kit.py
diff --git a/falcon_kit/fc_asm_graph.py b/FALCON/falcon_kit/fc_asm_graph.py
similarity index 100%
rename from falcon_kit/fc_asm_graph.py
rename to FALCON/falcon_kit/fc_asm_graph.py
diff --git a/falcon_kit/functional.py b/FALCON/falcon_kit/functional.py
similarity index 59%
rename from falcon_kit/functional.py
rename to FALCON/falcon_kit/functional.py
index 5b37f34..201fdcf 100644
--- a/falcon_kit/functional.py
+++ b/FALCON/falcon_kit/functional.py
@@ -1,7 +1,9 @@
 """Purely functional code.
 """
+from __future__ import division
 import collections
 import re
+import StringIO
 
 def _verify_pairs(pairs1, pairs2):
     if pairs1 != pairs2:
@@ -11,13 +13,34 @@ def _verify_pairs(pairs1, pairs2):
         print('pair2sort:', len(pairs2))
         assert pairs1 == pairs2
 
-def get_daligner_job_descriptions(run_jobs_stream, db_prefix):
+def skip_LAcheck(bash):
+    def lines():
+        for line in StringIO.StringIO(bash):
+            if 'LAcheck' in line:
+                yield 'set +e\n'
+                yield line
+                yield 'set -e\n'
+            else:
+                yield line
+    return ''.join(lines())
+
+def get_daligner_job_descriptions_sans_LAcheck(run_jobs_stream, db_prefix, single=False):
+    """Strip LAcheck (somehow) from each bash script.
+    (For now, we will run it but not fail on error.)
+    """
+    descs = get_daligner_job_descriptions(run_jobs_stream, db_prefix, single)
+    result = {}
+    for k,v in descs.iteritems():
+        result[k] = skip_LAcheck(v)
+    return result
+
+def get_daligner_job_descriptions(run_jobs_stream, db_prefix, single=False):
     """Return a dict of job-desc-tuple -> HPCdaligner bash-job.
 
     Comments and lines starting with LAmerge are ignored.
 
     E.g., each item will look like:
-      ('.2', '.1', '.2', '.3'): 'daligner ...; LAsort ...; LAmerge ...; rm ...'
+      ('.2', '.1', '.2', '.3'): 'daligner ...; LAsort ...; LAmerge ...; LAcheck ...; rm ...'
 
     Rationale
     ---------
@@ -30,11 +53,12 @@ def get_daligner_job_descriptions(run_jobs_stream, db_prefix):
     For each returned job, the result of
       daligner X A B C; LAsort*
     will then be
-      L.1.X.A, L.1.X.B, and L.1.X.C
+      L1.X.A, L1.X.B, and L1.X.C
     where A, B, or C could be X.
     (In the example, X=2 A=1 B=2.)
 
-    Oddly, b/c of a recent change by GM, if there is only 1 block, then the suffix string is empty.
+    Oddly, b/c of a recent change by GM, if there is only 1 block,
+    then the merged file is named differently. To achieve that, use single=True.
     """
     re_block_dali = re.compile(r'%s(\.\d+|)' %db_prefix)
     def blocks_dali(line):
@@ -76,16 +100,26 @@ def get_daligner_job_descriptions(run_jobs_stream, db_prefix):
         pair2sort[pair] = line
     _verify_pairs(sorted(pair2dali.keys()), sorted(pair2sort.keys()))
     dali2pairs = collections.defaultdict(set)
+    total_pairs = 0
     for pair, dali in pair2dali.items():
         dali2pairs[dali].add(pair)
+        total_pairs += 1
+    if single:
+        assert total_pairs == 1, 'In single-mode, but total_pair={}'.format(total_pairs)
+        assert list(pair2dali.keys())[0] == ('.1', '.1'), repr(pair2dali)
     result = {}
     for dali, pairs in dali2pairs.items():
-        sorts = [pair2sort[pair] for pair in sorted(pairs, key=lambda k: (
-            (int(k[0][1:]) if k[0].startswith('.') else 0),
-            (int(k[1][1:]) if k[1].startswith('.') else 0)
-        ))]
+        pairs = list(pairs)
+        pairs.sort( key=lambda k: ( (int(k[0][1:]) if k[0].startswith('.') else 0), (int(k[1][1:]) if k[1].startswith('.') else 0) ) )
+        sorts = [pair2sort[pair] for pair in pairs]
         id = tuple(blocks_dali(dali))
-        script = '\n'.join([dali] + sorts) + '\n'
+        early_checks = [ "LAcheck -v {db_prefix} *.las".format( db_prefix = db_prefix )  ]
+        if single:
+            checks = [ "LAcheck -vS {db_prefix} {db_prefix}.1".format( db_prefix = db_prefix )  ]
+        else:
+            checks = [ "LAcheck -vS {db_prefix} L1{p1}{p2}".format( db_prefix = db_prefix, p1=pair[0], p2=pair[1]) for pair in pairs ]
+
+        script = '\n'.join([dali] + early_checks + sorts + checks) + '\n'
         result[id] = script
     return result
 
@@ -195,3 +229,80 @@ def calc_cutoff(target, DBstats_output):
     """
     rl_counts = get_reverse_sorted_readlength_counts_from_DBstats(DBstats_output)
     return calc_cutoff_from_reverse_sorted_readlength_counts(rl_counts, target)
+
+def parse_2columns_of_ints(data):
+    r"""Given 2 columns of integers,
+    space- and line-delimited,
+    yield tuples.
+
+    >>> tuple(parse_2columns_of_ints("1 2\n3 4"))
+    ((1, 2), (3, 4))
+    """
+    for line in data.splitlines():
+        line = line.strip()
+        if not line: continue
+        yield tuple(int(x) for x in line.split())
+
+def weighted_average(cols):
+    """Given tuples of (weight, value),
+    return weighted average.
+
+    >>> weighted_average(((100, 1), (200, 2), (100, 5)))
+    2.5
+    """
+    return sum(w*v for (w,v) in cols) / sum(w for (w,v) in cols)
+
+def parsed_readlengths_from_dbdump_output(output):
+    """Given output text from the DBump command,
+    yield all read-lengths.
+    """
+    re_length = re.compile('^L\s+\d+\s+(\d+)\s+(\d+)$')
+    for line in output.splitlines():
+        mo = re_length.search(line)
+        if mo:
+            beg, end = mo.group(1, 2)
+            beg = int(beg)
+            end = int(end)
+            yield end - beg
+
+def mapped_readlengths_from_dbdump_output(output):
+    """Given output text from the DBump command,
+    return dict of (id => read-length).
+    """
+    lengths = dict()
+    re_length = re.compile('^L\s+(\d+)\s+(\d+)\s+(\d+)$')
+    for line in output.splitlines():
+        mo = re_length.search(line)
+        if mo:
+            idx, beg, end = mo.group(1, 2, 3)
+            idx = int(idx)
+            beg = int(beg)
+            end = int(end)
+            lengths[idx] = (end - beg)
+    return lengths
+
+def average_difference(dictA, dictB):
+    """Return the average difference of
+    values in dictA minus dictB, only
+    using values in dictA.
+    If a value is missing from dictB, raise Exception.
+    """
+    total_diff = 0.0
+    for k,va in dictA.iteritems():
+        vb = dictB[k]
+        total_diff += (va - vb)
+    return total_diff / len(dictA)
+
+def calc_metric_fragmentation(perl_counts_output):
+    # """perl -e 'while (<>) { if ( m{>[^/]+/(\d+)\d/} ) { $id{$1}++; } }; while (my ($k, $v) = each %%id) { $counts{$v}++; }; while (my ($k, $v) = each %%counts) { print "$v $k\n"; };' %s""" %(fastas)
+    cols = tuple(parse_2columns_of_ints(perl_counts_output))
+    avg = weighted_average(cols)
+    return avg
+
+def calc_metric_truncation(dbdump_output, length_pairs_output):
+    # """perl -e 'while (<>) { if ( m{>[^/]+/0*(\d+)\d/(\d+)_(\d+)} ) { $lengths{$1} += ($3 - $2); } }; while (my ($k, $v) = each %%lengths) { print "$k $v\n"; };' %s""" %(fastas)
+    cols = tuple(parse_2columns_of_ints(length_pairs_output))
+    pread_lengths = dict((k,v) for (k,v) in cols)
+    orig_lengths = mapped_readlengths_from_dbdump_output(dbdump_output)
+    avg = -average_difference(pread_lengths, orig_lengths)
+    return avg
diff --git a/falcon_kit/mains/__init__.py b/FALCON/falcon_kit/mains/__init__.py
similarity index 100%
copy from falcon_kit/mains/__init__.py
copy to FALCON/falcon_kit/mains/__init__.py
diff --git a/falcon_kit/mains/actg_coordinate.py b/FALCON/falcon_kit/mains/actg_coordinate.py
similarity index 100%
rename from falcon_kit/mains/actg_coordinate.py
rename to FALCON/falcon_kit/mains/actg_coordinate.py
diff --git a/falcon_kit/mains/calc_cutoff.py b/FALCON/falcon_kit/mains/calc_cutoff.py
similarity index 100%
rename from falcon_kit/mains/calc_cutoff.py
rename to FALCON/falcon_kit/mains/calc_cutoff.py
diff --git a/falcon_kit/mains/consensus.py b/FALCON/falcon_kit/mains/consensus.py
similarity index 100%
rename from falcon_kit/mains/consensus.py
rename to FALCON/falcon_kit/mains/consensus.py
diff --git a/falcon_kit/mains/contig_annotate.py b/FALCON/falcon_kit/mains/contig_annotate.py
similarity index 100%
rename from falcon_kit/mains/contig_annotate.py
rename to FALCON/falcon_kit/mains/contig_annotate.py
diff --git a/falcon_kit/mains/ctg_link_analysis.py b/FALCON/falcon_kit/mains/ctg_link_analysis.py
similarity index 100%
rename from falcon_kit/mains/ctg_link_analysis.py
rename to FALCON/falcon_kit/mains/ctg_link_analysis.py
diff --git a/falcon_kit/mains/dedup_a_tigs.py b/FALCON/falcon_kit/mains/dedup_a_tigs.py
similarity index 100%
rename from falcon_kit/mains/dedup_a_tigs.py
rename to FALCON/falcon_kit/mains/dedup_a_tigs.py
diff --git a/falcon_kit/mains/fasta2fasta.py b/FALCON/falcon_kit/mains/fasta2fasta.py
similarity index 100%
rename from falcon_kit/mains/fasta2fasta.py
rename to FALCON/falcon_kit/mains/fasta2fasta.py
diff --git a/FALCON/falcon_kit/mains/fetch_reads.py b/FALCON/falcon_kit/mains/fetch_reads.py
new file mode 100644
index 0000000..c4576c9
--- /dev/null
+++ b/FALCON/falcon_kit/mains/fetch_reads.py
@@ -0,0 +1,133 @@
+from falcon_kit.FastaReader import FastaReader
+import argparse
+import os
+import glob
+import sys
+import re
+
+
+
+
+def fetch_ref_and_reads(base_dir, fofn, ctg_id, out_dir, min_ctg_lenth):
+
+
+    read_fofn = fofn
+    if out_dir == None:
+        out_dir = os.path.join( base_dir, "3-unzip/reads")
+
+    ctg_fa = os.path.join( base_dir, "2-asm-falcon/p_ctg.fa")
+    read_map_dir = os.path.join( base_dir, "2-asm-falcon/read_maps" )
+
+    rawread_id_file = os.path.join( read_map_dir, "raw_read_ids" )
+    pread_id_file = os.path.join( read_map_dir, "pread_ids" )
+
+    rid_to_oid = open(rawread_id_file).read().split("\n")  #daligner raw read id to the original ids
+    pid_to_fid = open(pread_id_file).read().split("\n")  #daligner pread id to the fake ids
+
+    def pid_to_oid(pid):
+        fid = pid_to_fid[int(pid)]
+        rid = int(fid.split("/")[1])/10
+        return rid_to_oid[int(rid)]
+
+    ref_fasta = FastaReader(ctg_fa)
+    all_ctg_ids = set()
+    for s in ref_fasta:
+        s_id = s.name.split()[0]
+        if ctg_id != "all" and s_id != ctg_id:
+            continue
+
+        if len(s.sequence) < min_ctg_lenth:
+            continue
+
+        if ctg_id != "all":
+            ref_out = open( os.path.join( out_dir, "%s_ref.fa" % ctg_id), "w" )
+        else:
+            ref_out = open( os.path.join( out_dir, "%s_ref.fa" % s_id), "w" )
+
+        print >>ref_out, ">%s" % s_id
+        print >>ref_out, s.sequence
+        all_ctg_ids.add(s_id)
+        ref_out.close()
+
+
+    read_set = {}
+    ctg_id_hits = {}
+
+    map_fn = os.path.join(read_map_dir,"rawread_to_contigs")
+    with open(map_fn, "r") as f:
+        for row in f:
+            row = row.strip().split()
+            hit_ctg = row[1]
+            hit_ctg = hit_ctg.split("-")[0]
+            if int(row[3]) == 0:
+                o_id = rid_to_oid[int(row[0])]
+                read_set[o_id] = hit_ctg
+                ctg_id_hits[hit_ctg] = ctg_id_hits.get(hit_ctg, 0) + 1
+
+    map_fn = os.path.join(read_map_dir,"pread_to_contigs")
+    with open(map_fn, "r") as f:
+        for row in f:
+            row = row.strip().split()
+            hit_ctg = row[1]
+            hit_ctg = hit_ctg.split("-")[0]
+            if hit_ctg not in read_set and int(row[3]) == 0:
+                o_id = pid_to_oid(row[0])
+                read_set[o_id] = hit_ctg
+                ctg_id_hits[hit_ctg] = ctg_id_hits.get(hit_ctg, 0) + 1
+
+
+    with open(os.path.join( out_dir, "ctg_list"),"w") as f:
+        for ctg_id in sorted(list(all_ctg_ids)):
+            if ctg_id_hits.get(ctg_id, 0) < 5:
+                continue
+            if ctg_id[-1] not in ["F", "R"]: #ignore small circle contigs, they need different approach
+                continue
+            print >>f, ctg_id
+
+    read_out_files = {}
+    with open(read_fofn, "r") as f:
+        for r_fn in f:
+            r_fn = r_fn.strip()
+            read_fa_file = FastaReader(r_fn)
+            for r in read_fa_file:
+                rid = r.name.split()[0]
+                if rid not in read_set:
+                    ctg_id = "unassigned"
+                else:
+                    ctg_id = read_set[rid]
+
+                if ctg_id == "NA" or ctg_id not in all_ctg_ids:
+                    ctg_id = "unassigned"
+
+                if ctg_id not in read_out_files:
+                    read_out = open( os.path.join( out_dir, "%s_reads.fa" % ctg_id), "w" )
+                    read_out_files[ctg_id] = 1
+                else:
+                    read_out = open( os.path.join( out_dir, "%s_reads.fa" % ctg_id), "a" )
+
+                print >>read_out, ">"+rid
+                print >>read_out, r.sequence
+                read_out.close()
+
+def parse_args(argv):
+    parser = argparse.ArgumentParser(description='using the read to contig mapping data to partition the reads grouped by contigs')
+    parser.add_argument('--base_dir', type=str, default="./", help='the base working dir of a falcon assembly')
+    parser.add_argument('--fofn', type=str, default="./input.fofn", help='path to the file of the list of raw read fasta files')
+    parser.add_argument('--ctg_id', type=str, default="all", help='contig identifier in the contig fasta file')
+    parser.add_argument('--out_dir', default=None, type=str, help='the output base_dir, default to `base_dir/3-unzip/reads` directory')
+    parser.add_argument('--min_ctg_lenth', default=20000, type=int, help='the minimum length of the contig for the outputs, default=20000')
+    #parser.add_argument('--ctg_fa', type=str, default="./2-asm-falcon/p_ctg.fa", help='path to the contig fasta file')
+    #parser.add_argument('--read_map_dir', type=str, default="./2-asm-falcon/read_maps", help='path to the read-contig map directory')
+    # we can run this in parallel mode in the furture
+    #parser.add_argument('--n_core', type=int, default=4,
+    #                    help='number of processes used for generating consensus')
+
+    args = parser.parse_args(argv[1:])
+    return args
+
+def main(argv=sys.argv):
+    args = parse_args(argv)
+    fetch_ref_and_reads(**vars(args))
+
+if __name__ == "__main__":
+    main()
diff --git a/FALCON/falcon_kit/mains/get_read_ctg_map.py b/FALCON/falcon_kit/mains/get_read_ctg_map.py
new file mode 100644
index 0000000..7b85f95
--- /dev/null
+++ b/FALCON/falcon_kit/mains/get_read_ctg_map.py
@@ -0,0 +1,129 @@
+from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+from pypeflow.task import PypeTask, PypeThreadTaskBase, PypeTaskBase
+from pypeflow.controller import PypeWorkflow, PypeMPWorkflow, PypeThreadWorkflow
+from falcon_kit.FastaReader import FastaReader
+from falcon_kit.fc_asm_graph import AsmGraph
+import argparse
+import glob
+import sys
+import subprocess as sp
+import shlex
+import os
+
+def make_dirs(d):
+    if not os.path.isdir(d):
+        os.makedirs(d)
+
+
+def get_read_ctg_map(rawread_dir, pread_dir, asm_dir):
+
+    read_map_dir = os.path.abspath(os.path.join(asm_dir, "read_maps"))
+    make_dirs(read_map_dir)
+
+    PypeMPWorkflow.setNumThreadAllowed(12, 12)
+    wf = PypeMPWorkflow()
+
+    rawread_db = makePypeLocalFile( os.path.join( rawread_dir, "raw_reads.db" ) )
+    rawread_id_file = makePypeLocalFile( os.path.join( read_map_dir, "raw_read_ids" ) )
+
+    @PypeTask( inputs = {"rawread_db": rawread_db},
+               outputs =  {"rawread_id_file": rawread_id_file},
+               TaskType = PypeThreadTaskBase,
+               URL = "task://localhost/dump_rawread_ids" )
+    def dump_rawread_ids(self):
+        rawread_db = fn( self.rawread_db )
+        rawread_id_file = fn( self.rawread_id_file )
+        os.system("DBshow -n %s | tr -d '>' | LD_LIBRARY_PATH= awk '{print $1}' > %s" % (rawread_db, rawread_id_file) )
+
+    wf.addTask( dump_rawread_ids )
+
+    pread_db = makePypeLocalFile( os.path.join( pread_dir, "preads.db" ) )
+    pread_id_file = makePypeLocalFile( os.path.join( read_map_dir, "pread_ids" ) )
+
+    @PypeTask( inputs = {"pread_db": pread_db},
+               outputs =  {"pread_id_file": pread_id_file},
+               TaskType = PypeThreadTaskBase,
+               URL = "task://localhost/dump_pread_ids" )
+    def dump_pread_ids(self):
+        pread_db = fn( self.pread_db )
+        pread_id_file = fn( self.pread_id_file )
+        os.system("DBshow -n %s | tr -d '>' | LD_LIBRARY_PATH= awk '{print $1}' > %s" % (pread_db, pread_id_file) )
+
+    wf.addTask( dump_pread_ids )
+
+    wf.refreshTargets() # block
+
+    sg_edges_list = makePypeLocalFile( os.path.join(asm_dir, "sg_edges_list") )
+    utg_data = makePypeLocalFile( os.path.join(asm_dir, "utg_data") )
+    ctg_paths = makePypeLocalFile( os.path.join(asm_dir, "ctg_paths") )
+
+    inputs = { "rawread_id_file": rawread_id_file,
+               "pread_id_file": pread_id_file,
+               "sg_edges_list": sg_edges_list,
+               "utg_data": utg_data,
+               "ctg_paths": ctg_paths }
+
+    read_to_contig_map = makePypeLocalFile( os.path.join(read_map_dir, "read_to_contig_map") )
+
+    @PypeTask( inputs = inputs,
+               outputs = {"read_to_contig_map": read_to_contig_map},
+               TaskType = PypeThreadTaskBase,
+               URL = "task://localhost/get_ctg_read_map" )
+    def generate_read_to_ctg_map(self):
+        rawread_id_file = fn( self.rawread_id_file )
+        pread_id_file = fn( self.pread_id_file )
+        read_to_contig_map = fn( self.read_to_contig_map )
+
+        pread_did_to_rid = open(pread_id_file).read().split("\n")
+        rid_to_oid = open(rawread_id_file).read().split("\n")
+
+        asm_G = AsmGraph(fn(self.sg_edges_list),
+                         fn(self.utg_data),
+                         fn(self.ctg_paths) )
+
+        pread_to_contigs = {}
+
+        with open(read_to_contig_map, "w") as f:
+            for ctg in asm_G.ctg_data:
+                if ctg[-1] == "R":
+                    continue
+                ctg_g = asm_G.get_sg_for_ctg(ctg)
+                for n in ctg_g.nodes():
+                    pid = int(n.split(":")[0])
+
+                    rid = pread_did_to_rid[pid].split("/")[1]
+                    rid = int(int(rid)/10)
+                    oid = rid_to_oid[rid]
+                    k = (pid, rid, oid)
+                    pread_to_contigs.setdefault( k, set() )
+                    pread_to_contigs[ k ].add( ctg )
+
+
+            for k in pread_to_contigs:
+                pid, rid, oid = k
+                for ctg in list(pread_to_contigs[ k ]):
+                    print >>f, "%09d %09d %s %s" % (pid, rid, oid, ctg)
+
+    wf.addTask( generate_read_to_ctg_map )
+
+    wf.refreshTargets() # block
+
+def parse_args(argv):
+    parser = argparse.ArgumentParser(description='generate `2-asm-falcon/read_maps/read_to_contig_map` that contains the \
+information from the chain of mapping: (contig id) -> (internal p-read id) -> (internal raw-read id) -> (original read id)',
+              formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser.add_argument('--basedir', type=str, default="./", help='the base working dir of a FALCON assembly')
+    args = parser.parse_args(argv[1:])
+    return args
+
+def main(argv=sys.argv):
+    args = parse_args(argv)
+    basedir = args.basedir
+    rawread_dir = os.path.abspath( os.path.join( basedir, "0-rawreads" )  )
+    pread_dir = os.path.abspath( os.path.join( basedir, "1-preads_ovl" ) )
+    asm_dir = os.path.abspath( os.path.join( basedir, "2-asm-falcon") )
+
+    get_read_ctg_map(rawread_dir=rawread_dir, pread_dir=pread_dir, asm_dir=asm_dir)
+
+if __name__ == "__main__":
+    main()
diff --git a/falcon_kit/mains/graph_to_contig.py b/FALCON/falcon_kit/mains/graph_to_contig.py
similarity index 100%
rename from falcon_kit/mains/graph_to_contig.py
rename to FALCON/falcon_kit/mains/graph_to_contig.py
diff --git a/falcon_kit/mains/graph_to_utgs.py b/FALCON/falcon_kit/mains/graph_to_utgs.py
similarity index 100%
rename from falcon_kit/mains/graph_to_utgs.py
rename to FALCON/falcon_kit/mains/graph_to_utgs.py
diff --git a/falcon_kit/mains/ovlp_filter.py b/FALCON/falcon_kit/mains/ovlp_filter.py
similarity index 99%
rename from falcon_kit/mains/ovlp_filter.py
rename to FALCON/falcon_kit/mains/ovlp_filter.py
index d6cc601..63d2de7 100644
--- a/falcon_kit/mains/ovlp_filter.py
+++ b/FALCON/falcon_kit/mains/ovlp_filter.py
@@ -227,9 +227,10 @@ def try_run_ovlp_filter(n_core, fofn, max_diff, max_cov, min_cov, min_len, bestn
     try:
         run_ovlp_filter(exe_pool, file_list, max_diff, max_cov, min_cov, min_len, bestn, db_fn)
         io.LOG('finished ovlp_filter')
-    except KeyboardInterrupt:
+    except:
         io.LOG('terminating ovlp_filter workers...')
         exe_pool.terminate()
+        raise
 
 def ovlp_filter(n_core, fofn, max_diff, max_cov, min_cov, min_len, bestn, db_fn, debug, silent, stream):
     if debug:
diff --git a/falcon_kit/mains/ovlp_stats.py b/FALCON/falcon_kit/mains/ovlp_stats.py
similarity index 100%
rename from falcon_kit/mains/ovlp_stats.py
rename to FALCON/falcon_kit/mains/ovlp_stats.py
diff --git a/falcon_kit/mains/ovlp_to_graph.py b/FALCON/falcon_kit/mains/ovlp_to_graph.py
similarity index 100%
rename from falcon_kit/mains/ovlp_to_graph.py
rename to FALCON/falcon_kit/mains/ovlp_to_graph.py
diff --git a/FALCON/falcon_kit/mains/pr_ctg_track.py b/FALCON/falcon_kit/mains/pr_ctg_track.py
new file mode 100644
index 0000000..f516866
--- /dev/null
+++ b/FALCON/falcon_kit/mains/pr_ctg_track.py
@@ -0,0 +1,159 @@
+from __future__ import print_function
+from falcon_kit.multiproc import Pool
+import falcon_kit.util.io as io
+import argparse
+import sys
+import glob
+import os
+from heapq import heappush, heappop, heappushpop
+
+Reader = io.CapturedProcessReaderContext
+
+
+def get_pid_to_ctg(fn):
+    pid_to_ctg = {}
+    with open(fn) as f:
+        for row in f:
+            row = row.strip().split()
+            pid, rid, oid, ctg = row
+            pid_to_ctg.setdefault( pid, set()  )
+            pid_to_ctg[ pid ].add(ctg)
+    return pid_to_ctg
+
+def run_tr_stage1(db_fn, fn, min_len, bestn, pid_to_ctg):
+    cmd = "LA4Falcon -mo %s %s" % (db_fn, fn)
+    reader = Reader(cmd)
+    with reader:
+        return fn, tr_stage1(reader.readlines, min_len, bestn, pid_to_ctg)
+
+def tr_stage1(readlines, min_len, bestn, pid_to_ctg):
+    """
+    for each read in the b-read column inside the LAS files, we
+    keep top `bestn` hits with a priority queue through all overlaps
+    """
+    rtn = {}
+    for l in readlines():
+        l = l.strip().split()
+        q_id, t_id = l[:2]
+        overlap_len = -int(l[2])
+        idt = float(l[3])
+        q_s, q_e, q_l = int(l[5]), int(l[6]), int(l[7])
+        t_s, t_e, t_l = int(l[9]), int(l[10]), int(l[11])
+        if t_l < min_len:
+            continue
+        if q_id not in pid_to_ctg:
+            continue
+        rtn.setdefault(t_id, [])
+        if len(rtn[t_id]) < bestn:
+            heappush(rtn[t_id], (overlap_len, q_id) )
+        else:
+            heappushpop(rtn[t_id], (overlap_len, q_id) )
+
+    return rtn
+
+def run_track_reads(exe_pool, base_dir, file_list, min_len, bestn, db_fn):
+    io.LOG('preparing tr_stage1')
+    io.logstats()
+    asm_dir = os.path.abspath( os.path.join(base_dir, "2-asm-falcon") )
+    pid_to_ctg = get_pid_to_ctg( os.path.join(asm_dir, "read_maps/read_to_contig_map" ) )
+    inputs = []
+    for fn in file_list:
+        inputs.append( (run_tr_stage1, db_fn, fn, min_len, bestn, pid_to_ctg) )
+
+    """
+    Aggregate hits from each individual LAS and keep the best n hit.
+    Note that this does not guarantee that the final results is globally the best n hits espcially
+    when the number of `bestn` is too small.  In those case, if there is more hits from single LAS
+    file, then we will miss some good  hits.
+    """
+
+    bread_to_areads = {}
+    for fn, res in exe_pool.imap(io.run_func, inputs):
+        for k in res:
+            bread_to_areads.setdefault(k, [])
+            for item in res[k]:
+                if len(bread_to_areads[k]) < bestn:
+                    heappush( bread_to_areads[k], item )
+                else:
+                    heappushpop( bread_to_areads[k], item )
+
+
+    with open( os.path.join(asm_dir, "read_maps/pread_to_contigs"), "w") as out_f:
+        for bread in bread_to_areads:
+
+            ctg_score = {}
+            for s, pid in bread_to_areads[bread]:
+                if pid not in pid_to_ctg: continue
+
+                ctgs = pid_to_ctg[pid]
+                for ctg in ctgs:
+                    ctg_score.setdefault(ctg, [0,0])
+                    ctg_score[ctg][0] += -s
+                    ctg_score[ctg][1] += 1
+
+            ctg_score = ctg_score.items()
+            ctg_score.sort( key = lambda k: k[1][0] )
+            rank = 0
+
+            for ctg, score_count in ctg_score:
+                if bread in pid_to_ctg and ctg in pid_to_ctg[bread]:
+                    in_ctg = 1
+                else:
+                    in_ctg = 0
+                score, count = score_count
+                print(bread, ctg, count, rank, score, in_ctg, file=out_f)
+                rank += 1
+
+
+
+def try_run_track_reads(n_core, base_dir, min_len, bestn):
+    io.LOG('starting track_reads')
+    pread_dir = os.path.abspath( os.path.join(base_dir, "1-preads_ovl") )
+    file_list = glob.glob( os.path.join( pread_dir, "m*/preads.*.las") )
+    io.LOG('file list: %r' % file_list)
+    db_fn = os.path.join( pread_dir, "preads.db" )
+    n_core = min(n_core, len(file_list))
+    exe_pool = Pool(n_core)
+    try:
+        run_track_reads(exe_pool, base_dir, file_list, min_len, bestn, db_fn)
+        io.LOG('finished track_reads')
+    except:
+        io.LOG('terminating track_reads workers...')
+        exe_pool.terminate()
+        raise
+
+def track_reads(n_core, base_dir, min_len, bestn, debug, silent, stream):
+    if debug:
+        n_core = 0
+        silent = False
+    if silent:
+        io.LOG = io.write_nothing
+    if stream:
+        global Reader
+        Reader = io.StreamedProcessReaderContext
+    try_run_track_reads(n_core, base_dir, min_len, bestn)
+
+def parse_args(argv):
+    parser = argparse.ArgumentParser(description='scan the pread overlap information to identify the best hit from the preads \
+to the contigs with read_to_contig_map generated by `fc_get_read_ctg_map` in `2-asm-falcon/read_maps/read_to_contig_map`',
+            formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser.add_argument('--n_core', type=int, default=4,
+                        help='number of processes used for for tracking reads; '
+                        '0 for main process only')
+    #parser.add_argument('--fofn', type=str, help='file contains the path of all LAS file to be processed in parallel')
+    #parser.add_argument('--db', type=str, dest='db_fn', help='read db file path')
+    parser.add_argument('--base_dir', type=str, default="./", help='the base working dir of a FALCON assembly')
+    parser.add_argument('--min_len', type=int, default=2500, help="min length of the reads")
+    parser.add_argument('--stream', action='store_true', help='stream from LA4Falcon, instead of slurping all at once; can save memory for large data')
+    parser.add_argument('--debug', '-g', action='store_true', help="single-threaded, plus other aids to debugging")
+    parser.add_argument('--silent', action='store_true', help="suppress cmd reporting on stderr")
+    parser.add_argument('--bestn', type=int, default=40, help="keep best n hits")
+    args = parser.parse_args(argv[1:])
+    return args
+
+def main(argv=sys.argv):
+    args = parse_args(argv)
+    track_reads(**vars(args))
+
+if __name__ == "__main__":
+    main()
diff --git a/FALCON/falcon_kit/mains/report_pre_assembly.py b/FALCON/falcon_kit/mains/report_pre_assembly.py
new file mode 100644
index 0000000..54d1a37
--- /dev/null
+++ b/FALCON/falcon_kit/mains/report_pre_assembly.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python2.7
+from .. import stats_preassembly
+import argparse
+import json
+import logging
+
+log = logging.getLogger()
+
+def do_report(db, preads_fofn, genome_length, length_cutoff, out):
+    kwds = dict(
+        i_preads_fofn_fn=preads_fofn,
+        i_raw_reads_db_fn=db,
+        genome_length=genome_length,
+        length_cutoff=length_cutoff,
+    )
+    report_dict = stats_preassembly.calc_dict(**kwds)
+    content = json.dumps(report_dict, sort_keys=True, indent=4, separators=(',', ': '))
+    open(out, 'w').write(content)
+
+def main():
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--genome-length',
+        type=int,
+        required=True,
+        help='Estimated number of bases in the full genome haplotype.')
+    parser.add_argument('--length-cutoff',
+        type=int,
+        required=True,
+        help='Minimum length of any seed read.')
+    parser.add_argument('--db',
+        required=True,
+        help='Path to raw_reads.db (dazzler DB)')
+    parser.add_argument('--preads-fofn',
+        required=True,
+        help='Path to FOFN of preads fasta files.')
+    parser.add_argument('--out',
+        required=True,
+        help='Path to JSON output file.')
+    ARGS = parser.parse_args()
+    do_report(**vars(ARGS))
+
+
+if __name__ == "__main__":
+    logging.basicConfig()
+    log.setLevel(logging.DEBUG)
+    main()
diff --git a/FALCON/falcon_kit/mains/rr_ctg_track.py b/FALCON/falcon_kit/mains/rr_ctg_track.py
new file mode 100644
index 0000000..ad07f48
--- /dev/null
+++ b/FALCON/falcon_kit/mains/rr_ctg_track.py
@@ -0,0 +1,169 @@
+from __future__ import print_function
+from falcon_kit.multiproc import Pool
+import falcon_kit.util.io as io
+import argparse
+import sys
+import glob
+import os
+from heapq import heappush, heappop, heappushpop
+
+Reader = io.CapturedProcessReaderContext
+
+
+def get_rid_to_ctg(fn):
+    rid_to_ctg = {}
+    with open(fn) as f:
+        for row in f:
+            row = row.strip().split()
+            pid, rid, oid, ctg = row
+            rid_to_ctg.setdefault( rid, set()  )
+            rid_to_ctg[ rid ].add(ctg)
+    return rid_to_ctg
+
+def run_tr_stage1(db_fn, fn, min_len, bestn, rid_to_ctg):
+    cmd = "LA4Falcon -m %s %s" % (db_fn, fn)
+    reader = Reader(cmd)
+    with reader:
+        return fn, tr_stage1(reader.readlines, min_len, bestn, rid_to_ctg)
+
+def tr_stage1(readlines, min_len, bestn, rid_to_ctg):
+    """
+    for each read in the b-read column inside the LAS files, we
+    keep top `bestn` hits with a priority queue through all overlaps
+    """
+    rtn = {}
+    for l in readlines():
+        l = l.strip().split()
+        q_id, t_id = l[:2]
+        overlap_len = -int(l[2])
+        idt = float(l[3])
+        q_s, q_e, q_l = int(l[5]), int(l[6]), int(l[7])
+        t_s, t_e, t_l = int(l[9]), int(l[10]), int(l[11])
+        if t_l < min_len:
+            continue
+        if q_id not in rid_to_ctg:
+            continue
+        rtn.setdefault(t_id, [])
+        if len(rtn[t_id]) < bestn:
+            heappush(rtn[t_id], (overlap_len, q_id) )
+        else:
+            heappushpop(rtn[t_id], (overlap_len, q_id) )
+
+    return rtn
+
+def run_track_reads(exe_pool, base_dir, file_list, min_len, bestn, db_fn):
+    io.LOG('preparing tr_stage1')
+    io.logstats()
+    asm_dir = os.path.abspath( os.path.join(base_dir, "2-asm-falcon") )
+    rid_to_ctg = get_rid_to_ctg( os.path.join(asm_dir, "read_maps/read_to_contig_map" ) )
+    inputs = []
+    for fn in file_list:
+        inputs.append( (run_tr_stage1, db_fn, fn, min_len, bestn, rid_to_ctg) )
+    """
+    Aggregate hits from each individual LAS and keep the best n hit.
+    Note that this does not guarantee that the final results is globally the best n hits espcially
+    when the number of `bestn` is too small.  In those case, if there is more hits from single LAS
+    file, then we will miss some good  hits.
+    """
+    bread_to_areads = {}
+    for fn, res in exe_pool.imap(io.run_func, inputs):
+        for k in res:
+            bread_to_areads.setdefault(k, [])
+            for item in res[k]:
+                if len(bread_to_areads[k]) < bestn:
+                    heappush( bread_to_areads[k], item )
+                else:
+                    heappushpop( bread_to_areads[k], item )
+
+    #rid_to_oid = open(os.path.join( rawread_dir, "raw_read_ids" ) ).read().split("\n")
+
+    """
+    For each b-read, we find the best contig map throgh the b->a->contig map.
+    """
+    with open( os.path.join(asm_dir, "read_maps/rawread_to_contigs"), "w") as out_f:
+        for bread in bread_to_areads:
+
+            ctg_score = {}
+            for s, rid in bread_to_areads[bread]:
+                if rid not in rid_to_ctg: continue
+
+                ctgs = rid_to_ctg[rid]
+                for ctg in ctgs:
+                    ctg_score.setdefault(ctg, [0,0])
+                    ctg_score[ctg][0] += -s
+                    ctg_score[ctg][1] += 1
+
+            #oid = rid_to_oid[int(bread)]
+            ctg_score = ctg_score.items()
+            ctg_score.sort( key = lambda k: k[1][0] )
+            rank = 0
+
+            for ctg, score_count in ctg_score:
+                if bread in rid_to_ctg and ctg in rid_to_ctg[bread]:
+                    in_ctg = 1
+                else:
+                    in_ctg = 0
+                score, count = score_count
+                #print(bread, oid, ctg, count, rank, score, in_ctg, file=out_f)
+                print(bread, ctg, count, rank, score, in_ctg, file=out_f)
+                rank += 1
+
+
+
+def try_run_track_reads(n_core, base_dir, min_len, bestn):
+    io.LOG('starting track_reads')
+
+    rawread_dir = os.path.abspath( os.path.join(base_dir, "0-rawreads") )
+
+    # better logic for finding the las files path or move the logic to extern (taking the --fofn option?)
+    file_list = glob.glob( os.path.join( rawread_dir, "m*/raw_reads.*.las") )
+    io.LOG('file list: %r' % file_list)
+
+    # same, shoud we decide this as a parameter
+    db_fn = os.path.join( rawread_dir, "raw_reads.db" )
+    n_core = min(n_core, len(file_list))
+    exe_pool = Pool(n_core)
+    try:
+        run_track_reads(exe_pool, base_dir, file_list, min_len, bestn, db_fn)
+        io.LOG('finished track_reads')
+    except:
+        io.LOG('terminating track_reads workers...')
+        exe_pool.terminate()
+        raise
+
+def track_reads(n_core, base_dir, min_len, bestn, debug, silent, stream):
+    if debug:
+        n_core = 0
+        silent = False
+    if silent:
+        io.LOG = io.write_nothing
+    if stream:
+        global Reader
+        Reader = io.StreamedProcessReaderContext
+
+    try_run_track_reads(n_core, base_dir, min_len, bestn)
+
+def parse_args(argv):
+    parser = argparse.ArgumentParser(description='scan the raw read overlap information to identify the best hit from the reads \
+to the contigs with read_to_contig_map generated by `fc_get_read_ctg_map` in `2-asm-falcon/read_maps/read_to_contig_map`',
+            formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    parser.add_argument('--n_core', type=int, default=4,
+                        help='number of processes used for for tracking reads; '
+                        '0 for main process only')
+    #parser.add_argument('--fofn', type=str, help='file contains the path of all LAS file to be processed in parallel')
+    #parser.add_argument('--db', type=str, dest='db_fn', help='read db file path')
+    parser.add_argument('--base_dir', type=str, default="./", help='the base working dir of a FALCON assembly')
+    parser.add_argument('--min_len', type=int, default=2500, help="min length of the reads")
+    parser.add_argument('--stream', action='store_true', help='stream from LA4Falcon, instead of slurping all at once; can save memory for large data')
+    parser.add_argument('--debug', '-g', action='store_true', help="single-threaded, plus other aids to debugging")
+    parser.add_argument('--silent', action='store_true', help="suppress cmd reporting on stderr")
+    parser.add_argument('--bestn', type=int, default=40, help="keep best n hits")
+    args = parser.parse_args(argv[1:])
+    return args
+
+def main(argv=sys.argv):
+    args = parse_args(argv)
+    track_reads(**vars(args))
+
+if __name__ == "__main__":
+    main()
diff --git a/falcon_kit/mains/run0.py b/FALCON/falcon_kit/mains/run0.py
similarity index 98%
rename from falcon_kit/mains/run0.py
rename to FALCON/falcon_kit/mains/run0.py
index 0ab4be4..fa4ca0e 100644
--- a/falcon_kit/mains/run0.py
+++ b/FALCON/falcon_kit/mains/run0.py
@@ -232,7 +232,7 @@ def task_build_pdb(self):  #essential the same as build_rdb() but the subtle dif
         job_type=config['job_type'], sge_option=config['sge_option_pda'])
 
 def task_report_pre_assembly(self):
-    # TODO(CD): Bashify this, in case it is slow.
+    # TODO(CD): Bashify this, in case it is slow. (Done in run1, and we do not really care here.)
     i_raw_reads_db_fn = fn(self.raw_reads_db)
     i_preads_fofn_fn = fn(self.preads_fofn)
     i_length_cutoff_fn = fn(self.length_cutoff_fn)
@@ -384,10 +384,10 @@ def task_daligner_gather(self):
     only_these_symlinks(links)
     system("touch %s" %da_done)
 
-def create_daligner_tasks(run_jobs_fn, wd, db_prefix, rdb_build_done, config, pread_aln=False):
+def create_daligner_tasks(run_jobs_fn, wd, db_prefix, rdb_build_done, nblock, config, pread_aln=False):
     tasks = []
     tasks_out = {}
-    for job_uid, script in bash.scripts_daligner(run_jobs_fn, db_prefix, rdb_build_done, pread_aln):
+    for job_uid, script in bash.scripts_daligner(run_jobs_fn, db_prefix, rdb_build_done, nblock, pread_aln):
         run_dir = "job_%s" %job_uid
         cwd = os.path.join(wd, run_dir)
         job_done_fn = os.path.abspath(os.path.join(cwd, "job_%s_done" %job_uid))
@@ -513,7 +513,8 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
 
         raw_reads_nblock = support.get_nblock(fn(raw_reads_db_plf))
         #### run daligner
-        daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), rawread_dir, "raw_reads", rdb_build_done, config)
+        daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), rawread_dir, "raw_reads", rdb_build_done,
+                nblock=raw_reads_nblock, config=config)
 
         wf.addTasks(daligner_tasks)
         r_da_done = makePypeLocalFile( os.path.join( rawread_dir, "da_done") )
@@ -610,7 +611,8 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
     #### run daligner
     config["sge_option_da"] = config["sge_option_pda"]
     config["sge_option_la"] = config["sge_option_pla"]
-    daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), pread_dir, "preads", pdb_build_done, config, pread_aln=True)
+    daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), pread_dir, "preads", pdb_build_done,
+                nblock=preads_nblock, config=config, pread_aln=True)
     wf.addTasks(daligner_tasks)
 
     p_da_done = makePypeLocalFile(os.path.join( pread_dir, "da_done"))
diff --git a/falcon_kit/mains/run1.py b/FALCON/falcon_kit/mains/run1.py
similarity index 83%
rename from falcon_kit/mains/run1.py
rename to FALCON/falcon_kit/mains/run1.py
index 88a4dc7..242b65e 100644
--- a/falcon_kit/mains/run1.py
+++ b/FALCON/falcon_kit/mains/run1.py
@@ -126,7 +126,6 @@ def task_run_falcon_asm(self):
     self.generated_script_fn = script_fn
 
 def task_report_pre_assembly(self):
-    # TODO(CD): Bashify this, in case it is slow.
     i_raw_reads_db_fn = fn(self.raw_reads_db)
     i_preads_fofn_fn = fn(self.preads_fofn)
     i_length_cutoff_fn = fn(self.length_cutoff_fn)
@@ -134,18 +133,25 @@ def task_report_pre_assembly(self):
     cfg = self.parameters
     genome_length = int(cfg.get('genome_size', 0)) # different name in falcon
     length_cutoff = int(cfg['length_cutoff'])
+    # Update length_cutoff if auto-calc (when length_cutoff is negative).
+    # i_length_cutoff_fn was created long ago, so no filesystem issues.
     length_cutoff = support.get_length_cutoff(length_cutoff, i_length_cutoff_fn)
+    cwd = self.parameters['cwd']
+    mkdir(cwd)
+    script_fn = os.path.join(cwd , 'run_report_pre_assembly.sh')
+    job_done = os.path.join(cwd, 'report_pa_done')
     kwds = {
         'i_raw_reads_db_fn': i_raw_reads_db_fn,
         'i_preads_fofn_fn': i_preads_fofn_fn,
         'genome_length': genome_length,
         'length_cutoff': length_cutoff,
+        'o_json_fn': o_json_fn,
+        'job_done': job_done,
+        'script_fn': script_fn,
     }
     fc_run_logger.info('Report inputs: {}'.format(repr(kwds)))
-    report_dict = stats_preassembly.calc_dict(**kwds)
-    content = json.dumps(report_dict, sort_keys=True, indent=4, separators=(',', ': '))
-    fc_run_logger.info('Report stats:\n{}'.format(content))
-    open(o_json_fn, 'w').write(content)
+    support.run_report_pre_assembly(**kwds)
+    self.generated_script_fn = script_fn
 
 def task_run_daligner(self):
     job_done = fn(self.job_done)
@@ -186,22 +192,25 @@ def task_run_las_merge(self):
     self.generated_script_fn = script_fn
 
 def task_run_consensus(self):
+    merge_job_done = fn(self.job_done)
     out_file_fn = fn(self.out_file)
+    out_done = fn(self.out_done)
     job_id = self.parameters["job_id"]
     cwd = self.parameters["cwd"]
     config = self.parameters["config"]
     prefix = self.parameters["prefix"]
     script_dir = os.path.join( cwd )
-    job_done = os.path.join( cwd, "c_%05d_done" % job_id )
     script_fn =  os.path.join( script_dir , "c_%05d.sh" % (job_id))
-    db_fn = os.path.abspath('{cwd}/../{prefix}'.format(**locals()))
-    las_fn = os.path.abspath('{cwd}/../m_{job_id:05d}/{prefix}.{job_id}.las'.format(**locals()))
+    db_fn = os.path.abspath('{cwd}/../../{prefix}'.format(**locals())) # ASSUMING 2-levels deep
+    merge_job_dir = os.path.dirname(merge_job_done)
+    # by convention, we assume the name of the .las file
+    las_fn = os.path.abspath('{merge_job_dir}/{prefix}.{job_id}.las'.format(**locals()))
     args = {
         'db_fn': db_fn,
         'las_fn': las_fn,
         'out_file_fn': out_file_fn,
         'config': config,
-        'job_done': job_done,
+        'job_done': out_done,
         'script_fn': script_fn,
     }
     support.run_consensus(**args)
@@ -234,10 +243,12 @@ def task_daligner_gather(self):
     only_these_symlinks(links)
     system("touch %s" %da_done)
 
-def create_daligner_tasks(run_jobs_fn, wd, db_prefix, rdb_build_done, config, pread_aln=False):
+def create_daligner_tasks(run_jobs_fn, wd, db_prefix, rdb_build_done, nblock, config, pread_aln=False):
     tasks = []
     tasks_out = {}
-    for job_uid, script in bash.scripts_daligner(run_jobs_fn, db_prefix, rdb_build_done, pread_aln):
+    skip_checks = config.get('skip_checks')
+    fc_run_logger.info('Skip LAcheck after daligner? {}'.format(skip_checks))
+    for job_uid, script in bash.scripts_daligner(run_jobs_fn, db_prefix, rdb_build_done, nblock, pread_aln, skip_checks):
         run_dir = "job_%s" %job_uid
         cwd = os.path.join(wd, run_dir)
         job_done_fn = os.path.abspath(os.path.join(cwd, "job_%s_done" %job_uid))
@@ -285,12 +296,14 @@ def create_merge_tasks(run_jobs_fn, wd, db_prefix, input_dep, config):
 def create_consensus_tasks(wd, db_prefix, config, p_ids_merge_job_done):
     consensus_tasks = []
     consensus_out ={}
-    # Unlike the merge tasks, consensus occurs in a single directory.
-    rdir = os.path.join(wd, 'preads')
-    mkdir(rdir)
+    fasta_plfs = []
     for p_id, job_done in p_ids_merge_job_done:
-        out_file = makePypeLocalFile(os.path.abspath("%s/preads/out.%05d.fasta" % (wd, p_id)))
-        out_done = makePypeLocalFile(os.path.abspath("%s/preads/c_%05d_done" % (wd, p_id)))
+        cns_label = 'cns_%05d' %p_id
+        rdir = os.path.join(wd, 'preads', cns_label)
+        mkdir(rdir)
+        out_done = makePypeLocalFile(os.path.abspath("%s/%s_done" % (rdir, cns_label)))
+        out_file = makePypeLocalFile(os.path.abspath("%s/%s.fasta" % (rdir, cns_label)))
+        fasta_plfs.append(out_file)
         parameters =  {"cwd": rdir,
                        "job_id": p_id,
                        "prefix": db_prefix,
@@ -300,12 +313,25 @@ def create_consensus_tasks(wd, db_prefix, config, p_ids_merge_job_done):
                                outputs = {"out_file": out_file, "out_done": out_done},
                                parameters = parameters,
                                TaskType = MyFakePypeThreadTaskBase,
-                               URL = "task://localhost/ct_%05d" % p_id)
+                               URL = "task://localhost/%s" % cns_label)
         c_task = make_c_task(task_run_consensus)
         consensus_tasks.append(c_task)
         consensus_out["cjob_%d" % p_id] = out_done
-    return consensus_tasks, consensus_out
 
+    r_cns_done_plf = makePypeLocalFile(os.path.join(wd, 'preads', "cns_done"))
+    pread_fofn_plf = makePypeLocalFile(os.path.join(wd, 'preads', "input_preads.fofn"))
+
+    @PypeTask( inputs = consensus_out,
+                outputs =  {"cns_done":r_cns_done_plf, "pread_fofn": pread_fofn_plf},
+                TaskType = MyFakePypeThreadTaskBase,
+                URL = "task://localhost/cns_check" )
+    def check_r_cns_task(self):
+        with open(fn(self.pread_fofn),  "w") as f:
+            for fa_fn in sorted(fn(plf) for plf in fasta_plfs):
+                print >>f, fa_fn
+        system("touch %s" % fn(self.cns_done))
+    consensus_tasks.append(check_r_cns_task)
+    return consensus_tasks, pread_fofn_plf
 
 
 def main1(prog_name, input_config_fn, logger_config_fn=None):
@@ -318,6 +344,24 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
     except Exception:
         fc_run_logger.exception('Failed to parse config "{}".'.format(input_config_fn))
         raise
+    input_fofn_plf = makePypeLocalFile(config["input_fofn"])
+    #Workflow = PypeProcWatcherWorkflow
+    wf = PypeProcWatcherWorkflow(job_type=config['job_type'],
+            job_queue=config['job_queue'])
+    run(wf, config,
+            input_fofn_plf=input_fofn_plf,
+            setNumThreadAllowed=PypeProcWatcherWorkflow.setNumThreadAllowed)
+
+
+def run(wf, config,
+        input_fofn_plf,
+        setNumThreadAllowed,
+        ):
+    """
+    Preconditions (for now):
+    * fc_run_logger
+    * run_support.logger
+    """
     rawread_dir = os.path.abspath("./0-rawreads")
     pread_dir = os.path.abspath("./1-preads_ovl")
     falcon_asm_dir  = os.path.abspath("./2-asm-falcon")
@@ -329,11 +373,8 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
 
     exitOnFailure=config['stop_all_jobs_on_failure'] # only matter for parallel jobs
     concurrent_jobs = config["pa_concurrent_jobs"]
-    Workflow = PypeProcWatcherWorkflow
-    PypeProcWatcherWorkflow.setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
-    wf = PypeProcWatcherWorkflow(job_type=config['job_type'])
+    setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
 
-    input_fofn_plf = makePypeLocalFile(config["input_fofn"])
     rawread_fofn_plf = makePypeLocalFile(os.path.join(rawread_dir, os.path.basename(config["input_fofn"])))
     make_fofn_abs_task = PypeTask(inputs = {"i_fofn": input_fofn_plf},
                                   outputs = {"o_fofn": rawread_fofn_plf},
@@ -353,10 +394,12 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
                       "sge_option": config["sge_option_da"],
                       "config": config}
 
+        length_cutoff_plf = makePypeLocalFile(os.path.join(rawread_dir, "length_cutoff"))
         raw_reads_db_plf = makePypeLocalFile(os.path.join(rawread_dir, "%s.db" % "raw_reads"))
         make_build_rdb_task = PypeTask(inputs = {"input_fofn": rawread_fofn_plf},
                                       outputs = {"rdb_build_done": rdb_build_done,
                                                  "raw_reads_db": raw_reads_db_plf,
+                                                 "length_cutoff": length_cutoff_plf,
                                                  "run_jobs": run_jobs,
                                       },
                                       parameters = parameters,
@@ -368,7 +411,8 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
 
         raw_reads_nblock = support.get_nblock(fn(raw_reads_db_plf))
         #### run daligner
-        daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), rawread_dir, "raw_reads", rdb_build_done, config)
+        daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), rawread_dir, "raw_reads", rdb_build_done,
+                nblock=raw_reads_nblock, config=config)
 
         wf.addTasks(daligner_tasks)
         r_da_done = makePypeLocalFile( os.path.join( rawread_dir, "da_done") )
@@ -392,51 +436,38 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
 
         if config["target"] == "overlapping":
             sys.exit(0)
-        consensus_tasks, consensus_out = create_consensus_tasks(rawread_dir, "raw_reads", config, p_ids_merge_job_done)
+        consensus_tasks, pread_fofn_plf = create_consensus_tasks(rawread_dir, "raw_reads", config, p_ids_merge_job_done)
         wf.addTasks( consensus_tasks )
 
-        r_cns_done = makePypeLocalFile( os.path.join( rawread_dir, "cns_done") )
-        pread_fofn = makePypeLocalFile( os.path.join( pread_dir,  "input_preads.fofn" ) )
-
-        @PypeTask( inputs = consensus_out,
-                   outputs =  {"cns_done":r_cns_done, "pread_fofn": pread_fofn},
-                   TaskType = MyFakePypeThreadTaskBase,
-                   URL = "task://localhost/cns_check" )
-        def check_r_cns_task(self):
-            with open(fn(self.pread_fofn),  "w") as f:
-                fn_list =  glob.glob("%s/preads/out*.fasta" % rawread_dir)
-                fn_list.sort()
-                for fa_fn in fn_list:
-                    print >>f, fa_fn
-            system("touch %s" % fn(self.cns_done))
-        wf.addTask(check_r_cns_task)
-
-        length_cutoff_plf = makePypeLocalFile(os.path.join(rawread_dir, "length_cutoff"))
-        pre_assembly_report_plf = makePypeLocalFile(os.path.join(rawread_dir, "pre_assembly_stats.json")) #tho technically it needs pread_fofn
+        rdir = os.path.join(rawread_dir, 'report')
+        pre_assembly_report_plf = makePypeLocalFile(os.path.join(rdir, "pre_assembly_stats.json"))
+        parameters = dict(config)
+        parameters['cwd'] = rdir
         make_task = PypeTask(
                 inputs = {"length_cutoff_fn": length_cutoff_plf,
                           "raw_reads_db": raw_reads_db_plf,
-                          "preads_fofn": pread_fofn, },
+                          "preads_fofn": pread_fofn_plf, },
                 outputs = {"pre_assembly_report": pre_assembly_report_plf, },
-                parameters = config,
+                parameters = parameters,
                 TaskType = MyFakePypeThreadTaskBase,
                 URL = "task://localhost/report_pre_assembly")
         task = make_task(task_report_pre_assembly)
         wf.addTask(task)
 
         concurrent_jobs = config["cns_concurrent_jobs"]
-        PypeProcWatcherWorkflow.setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
+        setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
         wf.refreshTargets(exitOnFailure=exitOnFailure)
 
 
     if config["target"] == "pre-assembly":
+        log.info("Quitting after stage-0 for 'pre-assembly' target.")
         sys.exit(0)
 
     # build pread database
     if config["input_type"] == "preads":
-        pread_fofn = makePypeLocalFile(os.path.join(pread_dir, os.path.basename(config["input_fofn"])))
+        pread_fofn_plf = makePypeLocalFile(os.path.join(pread_dir, os.path.basename(config["input_fofn"])))
         make_fofn_abs_task = PypeTask(inputs = {"i_fofn": rawread_fofn_plf},
-                                     outputs = {"o_fofn": pread_fofn},
+                                     outputs = {"o_fofn": pread_fofn_plf},
                                      parameters = {},
                                      TaskType = MyFakePypeThreadTaskBase)
         fofn_abs_task = make_fofn_abs_task(task_make_fofn_abs_preads)
@@ -450,7 +481,7 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
 
     run_jobs = makePypeLocalFile(os.path.join(pread_dir, 'run_jobs.sh'))
     preads_db = makePypeLocalFile(os.path.join(pread_dir, 'preads.db')) # Also .preads.*, of course.
-    make_build_pdb_task  = PypeTask(inputs = {"pread_fofn": pread_fofn },
+    make_build_pdb_task  = PypeTask(inputs = {"pread_fofn": pread_fofn_plf },
                                     outputs = {"pdb_build_done": pdb_build_done,
                                                "preads_db": preads_db,
                                                "run_jobs": run_jobs,
@@ -467,7 +498,8 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
     preads_nblock = support.get_nblock(fn(preads_db))
     #### run daligner
     config["sge_option_da"] = config["sge_option_pda"]
-    daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), pread_dir, "preads", pdb_build_done, config, pread_aln=True)
+    daligner_tasks, daligner_out = create_daligner_tasks(fn(run_jobs), pread_dir, "preads", pdb_build_done,
+                nblock=preads_nblock, config=config, pread_aln=True)
     wf.addTasks(daligner_tasks)
 
     p_da_done = makePypeLocalFile(os.path.join( pread_dir, "da_done"))
@@ -499,7 +531,7 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
     wf.addTask(check_p_merge_check_task)
 
     concurrent_jobs = config["ovlp_concurrent_jobs"]
-    PypeProcWatcherWorkflow.setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
+    setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
 
     wf.refreshTargets(exitOnFailure=exitOnFailure)
 
@@ -526,10 +558,12 @@ def main1(prog_name, input_config_fn, logger_config_fn=None):
                              "sge_option": config["sge_option_fc"],
                },
                TaskType = MyFakePypeThreadTaskBase,
-               URL = "task://localhost/falcon" )
+               URL = "task://localhost/falcon_asm" )
     wf.addTask(make_run_falcon_asm(task_run_falcon_asm))
     wf.refreshTargets()
 
+    return falcon_asm_done
+
 
 def main(argv=sys.argv):
     parser = argparse.ArgumentParser()
diff --git a/falcon_kit/mains/tasks.py b/FALCON/falcon_kit/mains/tasks.py
similarity index 100%
rename from falcon_kit/mains/tasks.py
rename to FALCON/falcon_kit/mains/tasks.py
diff --git a/falcon_kit/multiproc.py b/FALCON/falcon_kit/multiproc.py
similarity index 100%
rename from falcon_kit/multiproc.py
rename to FALCON/falcon_kit/multiproc.py
diff --git a/falcon_kit/run_support.py b/FALCON/falcon_kit/run_support.py
similarity index 94%
rename from falcon_kit/run_support.py
rename to FALCON/falcon_kit/run_support.py
index 954211e..2c74b7b 100644
--- a/falcon_kit/run_support.py
+++ b/FALCON/falcon_kit/run_support.py
@@ -11,7 +11,6 @@ import tempfile
 import time
 import uuid
 
-job_type = None
 logger = None
 
 def _prepend_env_paths(content, names):
@@ -129,21 +128,29 @@ def parse_config(config_fn):
     return config
 
 def get_dict_from_old_falcon_cfg(config):
-    global job_type  # TODO: Stop using global for wait_for_file().
-    job_type = "SGE"
     section = 'General'
+
+    job_type = "SGE"
     if config.has_option(section, 'job_type'):
         job_type = config.get(section, 'job_type')
 
-    pa_concurrent_jobs = 8
+    job_queue = "default"
+    if config.has_option(section, 'job_queue'):
+        job_queue = config.get(section, 'job_queue')
+
+    default_concurrent_jobs = 8
+    if config.has_option(section, 'default_concurrent_jobs'):
+        default_concurrent_jobs = config.getint(section, 'default_concurrent_jobs')
+
+    pa_concurrent_jobs = default_concurrent_jobs
     if config.has_option(section, 'pa_concurrent_jobs'):
         pa_concurrent_jobs = config.getint(section, 'pa_concurrent_jobs')
 
-    cns_concurrent_jobs = 8
+    cns_concurrent_jobs = default_concurrent_jobs
     if config.has_option(section, 'cns_concurrent_jobs'):
         cns_concurrent_jobs = config.getint(section, 'cns_concurrent_jobs')
 
-    ovlp_concurrent_jobs = 8
+    ovlp_concurrent_jobs = default_concurrent_jobs
     if config.has_option(section, 'ovlp_concurrent_jobs'):
         ovlp_concurrent_jobs = config.getint(section, 'ovlp_concurrent_jobs')
 
@@ -182,6 +189,10 @@ def get_dict_from_old_falcon_cfg(config):
     if config.has_option(section, 'pa_DBsplit_option'):
         pa_DBsplit_option = config.get(section, 'pa_DBsplit_option')
 
+    skip_checks = False
+    if config.has_option(section, 'skip_checks'):
+        skip_checks = config.getboolean(section, 'skip_checks')
+
     dust = False
     if config.has_option(section, 'dust'):
         dust = config.getboolean(section, 'dust')
@@ -279,6 +290,7 @@ def get_dict_from_old_falcon_cfg(config):
                    "input_fofn" : input_fofn_fn,
                    "target" : target,
                    "job_type" : job_type,
+                   "job_queue" : job_queue,
                    "input_type": input_type,
                    #"openending": openending,
                    "pa_concurrent_jobs" : pa_concurrent_jobs,
@@ -298,6 +310,7 @@ def get_dict_from_old_falcon_cfg(config):
                    "pa_HPCdaligner_option": pa_HPCdaligner_option,
                    "ovlp_HPCdaligner_option": ovlp_HPCdaligner_option,
                    "pa_DBsplit_option": pa_DBsplit_option,
+                   "skip_checks": skip_checks,
                    "dust": dust,
                    "pa_DBdust_option": pa_DBdust_option,
                    "dazcon": dazcon,
@@ -461,6 +474,10 @@ def run_falcon_asm(config, las_fofn_fn, preads4falcon_fasta_fn, db_file_fn, job_
     script = bash.script_run_falcon_asm(config, las_fofn_fn, preads4falcon_fasta_fn, db_file_fn)
     bash.get_write_script_and_wrapper(config)(script, script_fn, job_done)
 
+def run_report_pre_assembly(i_raw_reads_db_fn, i_preads_fofn_fn, genome_length, length_cutoff, o_json_fn, job_done, script_fn):
+    script = bash.script_run_report_pre_assembly(i_raw_reads_db_fn, i_preads_fofn_fn, genome_length, length_cutoff, o_json_fn)
+    bash.write_script_and_wrapper_top(script, script_fn, job_done)
+
 def run_daligner(daligner_script, db_prefix, config, job_done, script_fn):
     bash.get_write_script_and_wrapper(config)(daligner_script, script_fn, job_done)
 
diff --git a/falcon_kit/stats_preassembly.py b/FALCON/falcon_kit/stats_preassembly.py
similarity index 75%
rename from falcon_kit/stats_preassembly.py
rename to FALCON/falcon_kit/stats_preassembly.py
index c0ae2ad..25a4e84 100644
--- a/falcon_kit/stats_preassembly.py
+++ b/FALCON/falcon_kit/stats_preassembly.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2.7
 """ PreAssembly Report.
 
 See FALCON-pbsmrtpipe/pbfalcon/report_preassembly.py for XML version.
@@ -9,10 +9,13 @@ from __future__ import absolute_import
 from __future__ import division
 from .FastaReader import FastaReader
 from .util.io import syscall
+from . import functional
 import collections
+import glob
 import itertools
 import logging
 import os
+import pprint
 import re
 
 log = logging.getLogger(__name__)
@@ -39,19 +42,7 @@ def get_db_readlengths(fn):
     If DBsplit was run, then we see the filtered reads only, since we do not provide '-u' to DBdump.
     """
     call = 'DBdump -h {}'.format(fn)
-    return list(parse_readlengths_from_dbdump_output(syscall(call)))
-
-def parse_readlengths_from_dbdump_output(output):
-    """ofs is the output file stream from the DBump command.
-    """
-    re_length = re.compile('^L\s+\d+\s+(\d+)\s+(\d+)$')
-    for line in output.splitlines():
-        mo = re_length.search(line)
-        if mo:
-            beg, end = mo.group(1, 2)
-            beg = int(beg)
-            end = int(end)
-            yield end - beg
+    return list(functional.parsed_readlengths_from_dbdump_output(syscall(call)))
 
 class FastaContainer(object):
 
@@ -115,7 +106,34 @@ def read_lens_from_db(db_fn):
     """
     return list(sorted(get_db_readlengths(db_fn)))
 
-def stats_dict(stats_raw_reads, stats_seed_reads, stats_corrected_reads, genome_length, length_cutoff):
+def abs_filenames(fofn_fn):
+    fofn_dir = os.path.dirname(fofn_fn)
+    def abs_fn(fn):
+        if os.path.isabs(fn):
+            return fn
+        return os.path.join(fofn_dir, fn)
+    fns = [abs_fn(fn.strip()) for fn in open(fofn_fn) if fn.strip()]
+    return fns
+
+def metric_fragmentation(preads_fofn):
+    # https://jira.pacificbiosciences.com/browse/SAT-105
+    #sed -nr 's;>prolog/([0-9]*)[0-9]/.*;\1;p' %s/*.fasta | sort | uniq -c | awk '{print $1}' | sort | uniq -c
+    fastas = abs_filenames(preads_fofn)
+    call = """perl -e 'while (<>) { if ( m{>[^/]+/(\d+)\d/} ) { $id{$1}++; } }; while (my ($k, $v) = each %%id) { $counts{$v}++; }; while (my ($k, $v) = each %%counts) { print "$v $k\n"; };' %s""" %(' '.join(fastas))
+    counts = syscall(call)
+    return functional.calc_metric_fragmentation(counts)
+
+def metric_truncation(db, preads_fofn):
+    # https://jira.pacificbiosciences.com/browse/SAT-105
+    fastas = abs_filenames(preads_fofn)
+    call = """perl -e 'while (<>) { if ( m{>[^/]+/0*(\d+)\d/(\d+)_(\d+)} ) { $lengths{$1} += ($3 - $2); } }; while (my ($k, $v) = each %%lengths) { print "$k $v\n"; };' %s""" %(' '.join(fastas))
+    length_pairs_output = syscall(call)
+    call = 'DBdump -h {}'.format(db)
+    dbdump_output = syscall(call)
+    return functional.calc_metric_truncation(dbdump_output, length_pairs_output)
+
+def stats_dict(stats_raw_reads, stats_seed_reads, stats_corrected_reads, genome_length, length_cutoff,
+        fragmentation, truncation):
     """All inputs are paths to fasta files.
     genome_length and length_cutoff can be None.
     """
@@ -146,6 +164,8 @@ def stats_dict(stats_raw_reads, stats_seed_reads, stats_corrected_reads, genome_
     kwds['preassembled_p95'] = stats_corrected_reads.p95
     kwds['preassembled_coverage'] = stats_corrected_reads.total / genome_length
     kwds['preassembled_yield'] = stats_corrected_reads.total / stats_seed_reads.total
+    kwds['preassembled_seed_fragmentation'] = fragmentation
+    kwds['preassembled_seed_truncation'] = truncation
     def round_if_float(v):
         return v if type(v) is not float else round(v, 3)
     result = {k:round_if_float(v) for k,v in kwds.iteritems()}
@@ -181,6 +201,17 @@ def calc_dict(
         genome_length,
         length_cutoff,
     ):
+    try:
+        frag = metric_fragmentation(i_preads_fofn_fn)
+    except:
+        frag = -1.0
+        log.exception('Using arbitrary fragmentation metric: {}'.format(frag))
+    try:
+        trunc = metric_truncation(i_raw_reads_db_fn, i_preads_fofn_fn)
+    except:
+        trunc = -1.0
+        log.exception('Using arbitrary truncation metric: {}'.format(trunc))
+
     raw_reads = read_lens_from_db(i_raw_reads_db_fn)
     stats_raw_reads = stats_from_sorted_readlengths(raw_reads)
 
@@ -195,5 +226,9 @@ def calc_dict(
             stats_corrected_reads=stats_preads,
             genome_length=genome_length,
             length_cutoff=length_cutoff,
+            fragmentation=frag,
+            truncation=trunc,
     )
+    log.info('Calculated pre-assembly stats:\n{}'.format(
+        pprint.pformat(report_dict)))
     return report_dict
diff --git a/falcon_kit/util/__init__.py b/FALCON/falcon_kit/util/__init__.py
similarity index 100%
rename from falcon_kit/util/__init__.py
rename to FALCON/falcon_kit/util/__init__.py
diff --git a/falcon_kit/util/io.py b/FALCON/falcon_kit/util/io.py
similarity index 94%
rename from falcon_kit/util/io.py
rename to FALCON/falcon_kit/util/io.py
index 6c46cb4..49ee8dc 100644
--- a/falcon_kit/util/io.py
+++ b/FALCON/falcon_kit/util/io.py
@@ -55,6 +55,18 @@ def run_func(args):
         LOG('interrupted %s(%s)' %(func_name, ', '.join(reprarg(a) for a in args)))
         return
 
+def system(call, check=False):
+    LOG('$(%s)' %repr(call))
+    rc = os.system(call)
+    msg = "Call %r returned %d." % (call, rc)
+    if rc:
+        LOG("WARNING: " + msg)
+        if check:
+            raise Exception(msg)
+    else:
+        LOG(msg)
+    return rc
+
 def syscall(cmd):
     """Return stdout, fully captured.
     Wait for subproc to finish.
diff --git a/falcon_kit/util/system.py b/FALCON/falcon_kit/util/system.py
similarity index 100%
rename from falcon_kit/util/system.py
rename to FALCON/falcon_kit/util/system.py
diff --git a/setup.py b/FALCON/setup.py
similarity index 90%
rename from setup.py
rename to FALCON/setup.py
index de3f0b2..5195762 100755
--- a/setup.py
+++ b/FALCON/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2.7
 
 from setuptools import setup, Extension
 import subprocess, sys
@@ -56,6 +56,10 @@ setup(name='falcon_kit',
           'fc_run1=falcon_kit.mains.run1:main',
           'fc_run0=falcon_kit.mains.run0:main',
           'fc_fasta2fasta=falcon_kit.mains.fasta2fasta:main',
+          'fc_fetch_reads=falcon_kit.mains.fetch_reads:main',
+          'fc_get_read_ctg_map=falcon_kit.mains.get_read_ctg_map:main',
+          'fc_pr_ctg_track=falcon_kit.mains.pr_ctg_track:main',
+          'fc_rr_ctg_track=falcon_kit.mains.rr_ctg_track:main',
           ],
       },
       extras_require = {
diff --git a/src/c/DW_banded.c b/FALCON/src/c/DW_banded.c
similarity index 100%
rename from src/c/DW_banded.c
rename to FALCON/src/c/DW_banded.c
diff --git a/src/c/Makefile b/FALCON/src/c/Makefile
similarity index 100%
rename from src/c/Makefile
rename to FALCON/src/c/Makefile
diff --git a/src/c/Makefile.osx b/FALCON/src/c/Makefile.osx
similarity index 100%
rename from src/c/Makefile.osx
rename to FALCON/src/c/Makefile.osx
diff --git a/src/c/common.h b/FALCON/src/c/common.h
similarity index 100%
rename from src/c/common.h
rename to FALCON/src/c/common.h
diff --git a/src/c/ext_falcon.c b/FALCON/src/c/ext_falcon.c
similarity index 100%
rename from src/c/ext_falcon.c
rename to FALCON/src/c/ext_falcon.c
diff --git a/src/c/falcon.c b/FALCON/src/c/falcon.c
similarity index 100%
rename from src/c/falcon.c
rename to FALCON/src/c/falcon.c
diff --git a/src/c/kmer_lookup.c b/FALCON/src/c/kmer_lookup.c
similarity index 99%
rename from src/c/kmer_lookup.c
rename to FALCON/src/c/kmer_lookup.c
index d69ebe7..79ebad7 100755
--- a/src/c/kmer_lookup.c
+++ b/FALCON/src/c/kmer_lookup.c
@@ -131,7 +131,7 @@ seq_coor_t get_kmer_bitvector(seq_array sa, unsigned int K) {
 
     for (i = 0; i < K; i++) {
         kmer_bv <<= 2;
-        kmer_bv |= (unsigned int) sa[i];
+        kmer_bv |= (((unsigned int) sa[i]) & 0x03);
     }
 
     return kmer_bv;
@@ -369,7 +369,7 @@ aln_range* find_best_aln_range(kmer_match * km_ptr,
     if ( max_k_mer_bin != INT_MAX && max_k_mer_count > count_th ) {
         for (i = 0; i <  km_ptr->count; i++ ) {
             d = (long int) (km_ptr->query_pos[i]) - (long int) (km_ptr->target_pos[i]);
-            if ( abs( ( (d - d_min)/ (long int) bin_size ) - max_k_mer_bin ) > 5 ) {
+            if ( labs( ( (d - d_min)/ (long int) bin_size ) - max_k_mer_bin ) > 5 ) {
                 continue;
             }
             if (d_count[ (d - d_min)/ (long int) bin_size ] > count_th) {
diff --git a/src/py_scripts/fc_actg_coordinate.py b/FALCON/src/py_scripts/fc_actg_coordinate.py
similarity index 100%
rename from src/py_scripts/fc_actg_coordinate.py
rename to FALCON/src/py_scripts/fc_actg_coordinate.py
diff --git a/src/py_scripts/fc_consensus.py b/FALCON/src/py_scripts/fc_consensus.py
similarity index 100%
rename from src/py_scripts/fc_consensus.py
rename to FALCON/src/py_scripts/fc_consensus.py
diff --git a/src/py_scripts/fc_contig_annotate.py b/FALCON/src/py_scripts/fc_contig_annotate.py
similarity index 100%
rename from src/py_scripts/fc_contig_annotate.py
rename to FALCON/src/py_scripts/fc_contig_annotate.py
diff --git a/src/py_scripts/fc_ctg_link_analysis.py b/FALCON/src/py_scripts/fc_ctg_link_analysis.py
similarity index 100%
rename from src/py_scripts/fc_ctg_link_analysis.py
rename to FALCON/src/py_scripts/fc_ctg_link_analysis.py
diff --git a/src/py_scripts/fc_dedup_a_tigs.py b/FALCON/src/py_scripts/fc_dedup_a_tigs.py
similarity index 100%
rename from src/py_scripts/fc_dedup_a_tigs.py
rename to FALCON/src/py_scripts/fc_dedup_a_tigs.py
diff --git a/src/py_scripts/fc_graph_to_contig.py b/FALCON/src/py_scripts/fc_graph_to_contig.py
similarity index 100%
rename from src/py_scripts/fc_graph_to_contig.py
rename to FALCON/src/py_scripts/fc_graph_to_contig.py
diff --git a/src/py_scripts/fc_graph_to_utgs.py b/FALCON/src/py_scripts/fc_graph_to_utgs.py
similarity index 100%
rename from src/py_scripts/fc_graph_to_utgs.py
rename to FALCON/src/py_scripts/fc_graph_to_utgs.py
diff --git a/src/py_scripts/fc_ovlp_filter.py b/FALCON/src/py_scripts/fc_ovlp_filter.py
similarity index 100%
rename from src/py_scripts/fc_ovlp_filter.py
rename to FALCON/src/py_scripts/fc_ovlp_filter.py
diff --git a/src/py_scripts/fc_ovlp_stats.py b/FALCON/src/py_scripts/fc_ovlp_stats.py
similarity index 100%
rename from src/py_scripts/fc_ovlp_stats.py
rename to FALCON/src/py_scripts/fc_ovlp_stats.py
diff --git a/src/py_scripts/fc_ovlp_to_graph.py b/FALCON/src/py_scripts/fc_ovlp_to_graph.py
similarity index 100%
rename from src/py_scripts/fc_ovlp_to_graph.py
rename to FALCON/src/py_scripts/fc_ovlp_to_graph.py
diff --git a/src/py_scripts/fc_run.py b/FALCON/src/py_scripts/fc_run.py
similarity index 100%
rename from src/py_scripts/fc_run.py
rename to FALCON/src/py_scripts/fc_run.py
diff --git a/src/py_scripts_v0.1/falcon_asm.py b/FALCON/src/py_scripts_v0.1/falcon_asm.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_asm.py
rename to FALCON/src/py_scripts_v0.1/falcon_asm.py
diff --git a/src/py_scripts_v0.1/falcon_asm_s.py b/FALCON/src/py_scripts_v0.1/falcon_asm_s.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_asm_s.py
rename to FALCON/src/py_scripts_v0.1/falcon_asm_s.py
diff --git a/src/py_scripts_v0.1/falcon_dedup.py b/FALCON/src/py_scripts_v0.1/falcon_dedup.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_dedup.py
rename to FALCON/src/py_scripts_v0.1/falcon_dedup.py
diff --git a/src/py_scripts_v0.1/falcon_fixasm.py b/FALCON/src/py_scripts_v0.1/falcon_fixasm.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_fixasm.py
rename to FALCON/src/py_scripts_v0.1/falcon_fixasm.py
diff --git a/src/py_scripts_v0.1/falcon_overlap.py b/FALCON/src/py_scripts_v0.1/falcon_overlap.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_overlap.py
rename to FALCON/src/py_scripts_v0.1/falcon_overlap.py
diff --git a/src/py_scripts_v0.1/falcon_overlap2.py b/FALCON/src/py_scripts_v0.1/falcon_overlap2.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_overlap2.py
rename to FALCON/src/py_scripts_v0.1/falcon_overlap2.py
diff --git a/src/py_scripts_v0.1/falcon_qrm.py b/FALCON/src/py_scripts_v0.1/falcon_qrm.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_qrm.py
rename to FALCON/src/py_scripts_v0.1/falcon_qrm.py
diff --git a/src/py_scripts_v0.1/falcon_qrm_0.py b/FALCON/src/py_scripts_v0.1/falcon_qrm_0.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_qrm_0.py
rename to FALCON/src/py_scripts_v0.1/falcon_qrm_0.py
diff --git a/src/py_scripts_v0.1/falcon_sense.py b/FALCON/src/py_scripts_v0.1/falcon_sense.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_sense.py
rename to FALCON/src/py_scripts_v0.1/falcon_sense.py
diff --git a/src/py_scripts_v0.1/falcon_ucns_data.py b/FALCON/src/py_scripts_v0.1/falcon_ucns_data.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_ucns_data.py
rename to FALCON/src/py_scripts_v0.1/falcon_ucns_data.py
diff --git a/src/py_scripts_v0.1/falcon_utgcns.py b/FALCON/src/py_scripts_v0.1/falcon_utgcns.py
similarity index 100%
rename from src/py_scripts_v0.1/falcon_utgcns.py
rename to FALCON/src/py_scripts_v0.1/falcon_utgcns.py
diff --git a/src/py_scripts_v0.1/get_ovl.sh b/FALCON/src/py_scripts_v0.1/get_ovl.sh
similarity index 100%
rename from src/py_scripts_v0.1/get_ovl.sh
rename to FALCON/src/py_scripts_v0.1/get_ovl.sh
diff --git a/src/py_scripts_v0.1/get_rdata.py b/FALCON/src/py_scripts_v0.1/get_rdata.py
similarity index 100%
rename from src/py_scripts_v0.1/get_rdata.py
rename to FALCON/src/py_scripts_v0.1/get_rdata.py
diff --git a/src/py_scripts_v0.1/overlapper.py b/FALCON/src/py_scripts_v0.1/overlapper.py
similarity index 100%
rename from src/py_scripts_v0.1/overlapper.py
rename to FALCON/src/py_scripts_v0.1/overlapper.py
diff --git a/src/py_scripts_v0.1/ovlp_filter.sh b/FALCON/src/py_scripts_v0.1/ovlp_filter.sh
similarity index 100%
rename from src/py_scripts_v0.1/ovlp_filter.sh
rename to FALCON/src/py_scripts_v0.1/ovlp_filter.sh
diff --git a/src/py_scripts_v0.1/redis_graph.py b/FALCON/src/py_scripts_v0.1/redis_graph.py
similarity index 100%
rename from src/py_scripts_v0.1/redis_graph.py
rename to FALCON/src/py_scripts_v0.1/redis_graph.py
diff --git a/src/py_scripts_v0.1/remove_dup_ctg.py b/FALCON/src/py_scripts_v0.1/remove_dup_ctg.py
similarity index 100%
rename from src/py_scripts_v0.1/remove_dup_ctg.py
rename to FALCON/src/py_scripts_v0.1/remove_dup_ctg.py
diff --git a/src/utils/fetch_preads.py b/FALCON/src/utils/fetch_preads.py
similarity index 100%
rename from src/utils/fetch_preads.py
rename to FALCON/src/utils/fetch_preads.py
diff --git a/test/HPCdaligner_synth0.sh b/FALCON/test/HPCdaligner_synth0.sh
similarity index 100%
rename from test/HPCdaligner_synth0.sh
rename to FALCON/test/HPCdaligner_synth0.sh
diff --git a/FALCON/test/HPCdaligner_synth0_preads.sh b/FALCON/test/HPCdaligner_synth0_preads.sh
new file mode 100644
index 0000000..1345a41
--- /dev/null
+++ b/FALCON/test/HPCdaligner_synth0_preads.sh
@@ -0,0 +1,9 @@
+# Daligner jobs (1)
+daligner -v -h1 -t50 -H1 -e0.99 -l1 -s1000 preads.1 preads.1
+# Initial sort jobs (1)
+LAsort -v preads.1.preads.1.C0 preads.1.preads.1.N0 preads.1.preads.1.C1 preads.1.preads.1.N1 preads.1.preads.1.C2 preads.1.preads.1.N2 preads.1.preads.1.C3 preads.1.preads.1.N3 && LAmerge -v preads.1 preads.1.preads.1.C0.S preads.1.preads.1.N0.S preads.1.preads.1.C1.S preads.1.preads.1.N1.S preads.1.preads.1.C2.S preads.1.preads.1.N2.S preads.1.preads.1.C3.S preads.1.preads.1.N3.S
+# Check all level 1 .las files (optional but recommended)
+LAcheck -vS preads preads.1
+# Remove initial .las files (optional)
+rm preads.1.preads.1.C0.las preads.1.preads.1.N0.las preads.1.preads.1.C1.las preads.1.preads.1.N1.las preads.1.preads.1.C2.las preads.1.preads.1.N2.las preads.1.preads.1.C3.las preads.1.preads.1.N3.las
+rm preads.1.preads.1.C0.S.las preads.1.preads.1.N0.S.las preads.1.preads.1.C1.S.las preads.1.preads.1.N1.S.las preads.1.preads.1.C2.S.las preads.1.preads.1.N2.S.las preads.1.preads.1.C3.S.las preads.1.preads.1.N3.S.las
diff --git a/test/helpers.py b/FALCON/test/helpers.py
similarity index 100%
rename from test/helpers.py
rename to FALCON/test/helpers.py
diff --git a/test/test_actg_coordinate.py b/FALCON/test/test_actg_coordinate.py
similarity index 100%
rename from test/test_actg_coordinate.py
rename to FALCON/test/test_actg_coordinate.py
diff --git a/test/test_consensus.py b/FALCON/test/test_consensus.py
similarity index 100%
rename from test/test_consensus.py
rename to FALCON/test/test_consensus.py
diff --git a/test/test_contig_annotate.py b/FALCON/test/test_contig_annotate.py
similarity index 100%
rename from test/test_contig_annotate.py
rename to FALCON/test/test_contig_annotate.py
diff --git a/test/test_ctg_link_analysis.py b/FALCON/test/test_ctg_link_analysis.py
similarity index 100%
rename from test/test_ctg_link_analysis.py
rename to FALCON/test/test_ctg_link_analysis.py
diff --git a/test/test_functional.py b/FALCON/test/test_functional.py
similarity index 51%
rename from test/test_functional.py
rename to FALCON/test/test_functional.py
index c68168d..37cfa58 100644
--- a/test/test_functional.py
+++ b/FALCON/test/test_functional.py
@@ -1,3 +1,4 @@
+import helpers
 from nose.tools import assert_equal, assert_raises, eq_
 import falcon_kit.functional as f
 import StringIO
@@ -6,16 +7,26 @@ import os
 
 thisdir = os.path.dirname(os.path.abspath(__file__))
 example_HPCdaligner_fn = os.path.join(thisdir, 'HPCdaligner_synth0.sh')
+example_HPCdaligner_small_fn = os.path.join(thisdir, 'HPCdaligner_synth0_preads.sh')
 
 def test_get_daligner_job_descriptions():
     example_HPCdaligner = open(example_HPCdaligner_fn)
     result = f.get_daligner_job_descriptions(
             example_HPCdaligner, 'raw_reads')
     assert result
-    eq_(result[('.1', '.1')], "daligner -v -h1 -t16 -H1 -e0.7 -l1 -s1000 raw_reads.1 raw_reads.1\nLAsort -v raw_reads.1.raw_reads.1.C0 raw_reads.1.raw_reads.1.N0 && LAmerge -v L1.1.1 raw_reads.1.raw_reads.1.C0.S raw_reads.1.raw_reads.1.N0.S && rm raw_reads.1.raw_reads.1.C0.S.las raw_reads.1.raw_reads.1.N0.S.las\n")
-    eq_(result[('.2', '.1', '.2')], "daligner -v -h1 -t16 -H1 -e0.7 -l1 -s1000 raw_reads.2 raw_reads.1 raw_reads.2\nLAsort -v raw_reads.1.raw_reads.2.C0 raw_reads.1.raw_reads.2.N0 && LAmerge -v L1.1.2 raw_reads.1.raw_reads.2.C0.S raw_reads.1.raw_reads.2.N0.S && rm raw_reads.1.raw_reads.2.C0.S.las raw_reads.1.raw_reads.2.N0.S.las\nLAsort -v raw_reads.2.raw_reads.1.C0 raw_reads.2.raw_reads.1.N0 && LAmerge -v L1.2.1 raw_reads.2.raw_reads.1.C0.S raw_reads.2.raw_reads.1.N0.S && rm raw_reads.2 [...]
+    helpers.equal_multiline(result[('.1', '.1')], "daligner -v -h1 -t16 -H1 -e0.7 -l1 -s1000 raw_reads.1 raw_reads.1\nLAcheck -v raw_reads *.las\nLAsort -v raw_reads.1.raw_reads.1.C0 raw_reads.1.raw_reads.1.N0 && LAmerge -v L1.1.1 raw_reads.1.raw_reads.1.C0.S raw_reads.1.raw_reads.1.N0.S && rm raw_reads.1.raw_reads.1.C0.S.las raw_reads.1.raw_reads.1.N0.S.las\nLAcheck -vS raw_reads L1.1.1\n")
+    helpers.equal_multiline(result[('.2', '.1', '.2')], "daligner -v -h1 -t16 -H1 -e0.7 -l1 -s1000 raw_reads.2 raw_reads.1 raw_reads.2\nLAcheck -v raw_reads *.las\nLAsort -v raw_reads.1.raw_reads.2.C0 raw_reads.1.raw_reads.2.N0 && LAmerge -v L1.1.2 raw_reads.1.raw_reads.2.C0.S raw_reads.1.raw_reads.2.N0.S && rm raw_reads.1.raw_reads.2.C0.S.las raw_reads.1.raw_reads.2.N0.S.las\nLAsort -v raw_reads.2.raw_reads.1.C0 raw_reads.2.raw_reads.1.N0 && LAmerge -v L1.2.1 raw_reads.2.raw_reads.1.C0. [...]
     eq_(len(result), 2)
 
+def test_get_daligner_job_descriptions_small():
+    # when there is only 1 block, a special case
+    example_HPCdaligner = open(example_HPCdaligner_small_fn)
+    result = f.get_daligner_job_descriptions(
+            example_HPCdaligner, 'preads', single=True)
+    assert result
+    helpers.equal_multiline(result[('.1', '.1')], "daligner -v -h1 -t50 -H1 -e0.99 -l1 -s1000 preads.1 preads.1\nLAcheck -v preads *.las\nLAsort -v preads.1.preads.1.C0 preads.1.preads.1.N0 preads.1.preads.1.C1 preads.1.preads.1.N1 preads.1.preads.1.C2 preads.1.preads.1.N2 preads.1.preads.1.C3 preads.1.preads.1.N3 && LAmerge -v preads.1 preads.1.preads.1.C0.S preads.1.preads.1.N0.S preads.1.preads.1.C1.S preads.1.preads.1.N1.S preads.1.preads.1.C2.S preads.1.preads.1.N2.S preads.1.preads [...]
+    eq_(len(result), 1)
+
 def test_get_mjob_data():
     example_HPCdaligner = open(example_HPCdaligner_fn)
     result = f.get_mjob_data(
@@ -24,6 +35,28 @@ def test_get_mjob_data():
     eq_(result[1], ['LAmerge -v raw_reads.1 L1.1.1 L1.1.2 && rm L1.1.1.las L1.1.2.las'])
     eq_(result[2], ['LAmerge -v raw_reads.2 L1.2.1 L1.2.2 ; rm L1.2.1.las L1.2.2.las'])
 
+def test_skip_LAcheck():
+    orig = """set -e
+hello there
+LAcheck foo bar
+middle
+LAcheck -vS foo bar
+goodbye
+"""
+    got = f.skip_LAcheck(orig)
+    expected = """set -e
+hello there
+set +e
+LAcheck foo bar
+set -e
+middle
+set +e
+LAcheck -vS foo bar
+set -e
+goodbye
+"""
+    eq_(got, expected)
+
 def test_first_block_las():
     line = 'LAsort -v -a -q foo.1.foo.1.C0'
     result = f.first_block_las(line)
@@ -111,3 +144,48 @@ def test_calc_cutoff():
     expected = 2
     got = f.calc_cutoff(target, partial_capture)
     eq_(expected, got)
+
+sample_DBdump_output = """+ R 2
++ M 0
++ H 400
+@ H 8
+H 8 m000_000
+L 0 1899 3899
+H 8 m000_000
+L 1 2080 4080
+H 8 m000_000
+L 2 0 2500
+"""
+def test_parsed_readlengths_from_dbdump_output():
+    lengths = list(f.parsed_readlengths_from_dbdump_output(sample_DBdump_output))
+    helpers.equal_list(lengths, [2000, 2000, 2500])
+def test_mapped_readlengths_from_dbdump_output():
+    mapped = f.mapped_readlengths_from_dbdump_output(sample_DBdump_output)
+    helpers.equal_dict(mapped, {0: 2000, 1: 2000, 2: 2500})
+
+def test_average_difference():
+    dictA = {1: 50, 2:60}
+    dictB = {1: 55, 2:65, 3: 70}
+    avg = f.average_difference(dictA, dictB)
+    eq_(avg, -5.0)
+
+    dictB = {1: 55}
+    assert_raises(Exception, f.average_difference, dictA, dictB)
+
+sample_perl_output = """
+0 1900
+1 1950
+"""
+def test_calc_metric_truncation():
+    # and prove that dbdump can have extra reads, ignored.
+    trunc = f.calc_metric_truncation(sample_DBdump_output, sample_perl_output)
+    eq_(trunc, 75.0)
+
+sample_perl_counts_output = """
+100 1
+200 2
+100 5
+"""
+def test_calc_metric_fragmentation():
+    frag = f.calc_metric_fragmentation(sample_perl_counts_output)
+    eq_(frag, 2.5)
diff --git a/test/test_graph_to_contig.py b/FALCON/test/test_graph_to_contig.py
similarity index 100%
rename from test/test_graph_to_contig.py
rename to FALCON/test/test_graph_to_contig.py
diff --git a/test/test_graph_to_utgs.py b/FALCON/test/test_graph_to_utgs.py
similarity index 100%
rename from test/test_graph_to_utgs.py
rename to FALCON/test/test_graph_to_utgs.py
diff --git a/test/test_ovlp_filter.py b/FALCON/test/test_ovlp_filter.py
similarity index 100%
rename from test/test_ovlp_filter.py
rename to FALCON/test/test_ovlp_filter.py
diff --git a/test/test_ovlp_stats.py b/FALCON/test/test_ovlp_stats.py
similarity index 100%
rename from test/test_ovlp_stats.py
rename to FALCON/test/test_ovlp_stats.py
diff --git a/test/test_ovlp_to_graph.py b/FALCON/test/test_ovlp_to_graph.py
similarity index 100%
rename from test/test_ovlp_to_graph.py
rename to FALCON/test/test_ovlp_to_graph.py
diff --git a/test/test_run.py b/FALCON/test/test_run.py
similarity index 100%
rename from test/test_run.py
rename to FALCON/test/test_run.py
diff --git a/test/test_run_LG.py b/FALCON/test/test_run_LG.py
similarity index 100%
rename from test/test_run_LG.py
rename to FALCON/test/test_run_LG.py
diff --git a/test/test_stats_preassembly.py b/FALCON/test/test_stats_preassembly.py
similarity index 70%
rename from test/test_stats_preassembly.py
rename to FALCON/test/test_stats_preassembly.py
index 88b664d..628e479 100644
--- a/test/test_stats_preassembly.py
+++ b/FALCON/test/test_stats_preassembly.py
@@ -9,8 +9,10 @@ def test_stats_dict():
     stats_corrected_reads = M.Stats(10, 100, 5, 9)
     genome_length = 19
     length_cutoff = 10
+    frag = 1.0
+    trunc = 2.5
 
-    result = M.stats_dict(stats_raw_reads, stats_seed_reads, stats_corrected_reads, genome_length, length_cutoff)
+    result = M.stats_dict(stats_raw_reads, stats_seed_reads, stats_corrected_reads, genome_length, length_cutoff, frag, trunc)
     expected = {
  'genome_length': 19,
  'length_cutoff': 10,
@@ -20,6 +22,8 @@ def test_stats_dict():
  'preassembled_n50': 5,
  'preassembled_p95': 9,
  'preassembled_reads': 10,
+ 'preassembled_seed_fragmentation': 1.0,
+ 'preassembled_seed_truncation': 2.5,
  'preassembled_yield': 0.2,
  'raw_bases': 1000,
  'raw_coverage': 52.632,
@@ -34,20 +38,3 @@ def test_stats_dict():
  'seed_p95': 40,
  'seed_reads': 50}
     helpers.equal_dict(result, expected)
-
-sample_DBdump = """\
-+ R 2
-+ M 0
-+ H 17
-@ H 9
-H 9 TestMovie
-L 0 1 1999
-H 8 TestMoov
-L 49 0 2001
-"""
-
-def test_parse_readlengths_from_dbdump():
-    #result = list(M.parse_readlengths_from_dbdump(StringIO(sample_DBdump)))
-    result = list(M.parse_readlengths_from_dbdump_output(sample_DBdump))
-    expected = [1998, 2001]
-    helpers.equal_list(result, expected)
diff --git a/test_data/t1.fa b/FALCON/test_data/t1.fa
similarity index 100%
rename from test_data/t1.fa
rename to FALCON/test_data/t1.fa
diff --git a/test_data/t1.fofn b/FALCON/test_data/t1.fofn
similarity index 100%
rename from test_data/t1.fofn
rename to FALCON/test_data/t1.fofn
diff --git a/test_data/t2.fa b/FALCON/test_data/t2.fa
similarity index 100%
rename from test_data/t2.fa
rename to FALCON/test_data/t2.fa
diff --git a/test_data/t2.fofn b/FALCON/test_data/t2.fofn
similarity index 100%
rename from test_data/t2.fofn
rename to FALCON/test_data/t2.fofn
diff --git a/travis.sh b/FALCON/travis.sh
similarity index 100%
copy from travis.sh
copy to FALCON/travis.sh
diff --git a/README.md b/README.md
index 8f76212..e8bb4d5 100644
--- a/README.md
+++ b/README.md
@@ -1,34 +1,28 @@
-Falcon
-===========
-
-Falcon: a set of tools for fast aligning long reads for consensus and assembly
-
-The Falcon tool kit is a set of simple code collection which I use for studying
-efficient assembly algorithm for haploid and diploid genomes. It has some back-end 
-code implemented in C for speed and some simple front-end written in Python for
-convenience. 
-
-
-DOCUMENTATION
--------------
-
-The default branch is now "master" which contained the latest code.
-
-The current latest intergrated release is v0.3.0. Check [v0.3+ Integration Installation Guide](https://github.com/PacificBiosciences/FALCON-integrate/wiki/Installation) for installation.
-
-For the pre-Jun 2015 v0.2.2 version, please check [v0.2.2 release github repository](https://github.com/PacificBiosciences/FALCON/tree/v0.2.2). We will no longer address issues that are specific to that branch unless they also impact the current master branch.
-
-- [wiki pages](https://github.com/PacificBiosciences/FALCON/wiki)
-- [Developer Installation Guide](https://github.com/PacificBiosciences/FALCON/wiki/Setup:-Installation-and-Environment)
-- [v0.3+ Integration Installation Guide](https://github.com/PacificBiosciences/FALCON-integrate/wiki/Installation)
-- [Documentation is here.](https://github.com/PacificBiosciences/FALCON/wiki/Manual)
-- [FAQs](https://github.com/PacificBiosciences/FALCON/wiki/FAQs)
-- [v0.2.2 release github repository](https://github.com/PacificBiosciences/FALCON/tree/v0.2.2)
-
-ABOUT THE LICENSE
-------------------
-
-Standard PacBio ["Open Source License"](LICENSE).
-
-July 9th, 2015
-
+# FALCON-integrate
+This is a place to coordinate FALCON builds and tests.
+
+The git-submodules here define a consistent set of revisions.
+
+You may use any system you like for building, testing, and integration,
+but we also provide some submodules which can help with that.
+
+## submodules
+In case you are unfamiliar with [**git-submodules**](http://www.git-scm.com/book/en/v2/Git-Tools-Submodules), they are quite easy to use from the command-line:
+```sh
+git submodule update --init
+```
+If that fails, you can update your **git**, or try this:
+```sh
+git submodule init
+git submodule update
+```
+which is *almost* the same thing.
+
+## Set-up
+You have a few choices:
+
+1. PYTHONUSERBASE
+2. virtualenv
+3. Standard Python installation
+
+For more details, see the [wiki](https://github.com/PacificBiosciences/FALCON-integrate/wiki).
diff --git a/default-env.sh b/default-env.sh
new file mode 100644
index 0000000..6c684a7
--- /dev/null
+++ b/default-env.sh
@@ -0,0 +1,11 @@
+FALCON_WORKSPACE=$(pwd)
+PYTHONUSERBASE=$(pwd)/fc_env
+FALCON_PREFIX=${PYTHONUSERBASE}
+PATH=${PYTHONUSERBASE}/bin:${FALCON_PREFIX}/bin:${PATH}
+export PYTHONUSERBASE
+export FALCON_WORKSPACE
+export FALCON_PREFIX
+export PATH
+mkdir -p ${FALCON_PREFIX}/include
+mkdir -p ${FALCON_PREFIX}/bin
+mkdir -p ${FALCON_PREFIX}/lib
diff --git a/env.sh b/env.sh
new file mode 100644
index 0000000..6c684a7
--- /dev/null
+++ b/env.sh
@@ -0,0 +1,11 @@
+FALCON_WORKSPACE=$(pwd)
+PYTHONUSERBASE=$(pwd)/fc_env
+FALCON_PREFIX=${PYTHONUSERBASE}
+PATH=${PYTHONUSERBASE}/bin:${FALCON_PREFIX}/bin:${PATH}
+export PYTHONUSERBASE
+export FALCON_WORKSPACE
+export FALCON_PREFIX
+export PATH
+mkdir -p ${FALCON_PREFIX}/include
+mkdir -p ${FALCON_PREFIX}/bin
+mkdir -p ${FALCON_PREFIX}/lib
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..d80b0a2
--- /dev/null
+++ b/makefile
@@ -0,0 +1,25 @@
+# We suggest that you not add any rules here. Instead, customize `FALCON-make/makefile`.
+
+default:
+	@echo 'make init'
+	@echo 'source env.sh'
+	@echo 'make config-???'
+	@echo 'make all'
+init:
+	git submodule update --init
+	cp -f default-env.sh env.sh
+config-edit:
+	bash ./FALCON-make/config-edit.sh
+config-edit-user:
+	bash ./FALCON-make/config-edit-user.sh
+config-standard:
+	bash ./FALCON-make/config-standard.sh
+
+all:
+	${MAKE} -C ./FALCON-make/ $@
+install:
+	${MAKE} -C ./FALCON-make/ $@
+test:
+	${MAKE} -C ./FALCON-make/ $@
+
+.PHONY: init test
diff --git a/.travis.yml b/pypeFLOW/.travis.yml
similarity index 88%
copy from .travis.yml
copy to pypeFLOW/.travis.yml
index dd67f33..29b55ca 100644
--- a/.travis.yml
+++ b/pypeFLOW/.travis.yml
@@ -9,13 +9,13 @@
 #before_install:
 #  - sudo apt-get update -qq
 #  - sudo apt-get install -qq valgrind
-#sudo: required
+sudo: required
 os:
   - linux
 language: python
-compiler:
-  - clang  # hmm. distutils uses 'gcc' anyway
+#compiler:
 #  - gcc
+#  - clang
 script: ./travis.sh
 #env:
 #  matrix:
@@ -23,4 +23,3 @@ script: ./travis.sh
 #    - SHARED_LIB=OFF STATIC_LIB=ON CMAKE_PKG=OFF BUILD_TYPE=debug   VERBOSE_MAKE=true VERBOSE
 notifications:
   email: false
-sudo: false
diff --git a/pypeFLOW/License.txt b/pypeFLOW/License.txt
new file mode 100644
index 0000000..f074d32
--- /dev/null
+++ b/pypeFLOW/License.txt
@@ -0,0 +1,20 @@
+Copyright (C) 2010 by Jason Chin 
+Copyright (C) 2011 by Jason Chin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/pypeFLOW/README.rst b/pypeFLOW/README.rst
new file mode 100644
index 0000000..b15f254
--- /dev/null
+++ b/pypeFLOW/README.rst
@@ -0,0 +1,71 @@
+What is pypeFLOW
+================
+
+pypeFLOW is light weight and reusable make / flow data process
+library written in Python.
+
+Most of bioinformatics analysis or general data analysis
+includes various steps combining data files, transforming
+files between different formats and calculating statistics
+with a variety of tools. Ian Holmes has a great summary and
+opinions about bioinformatics workflow at
+http://biowiki.org/BioinformaticsWorkflows.  It is
+interesting that such analysis workflow is really similar to
+constructing software without an IDE in general.  Using a
+"makefile" file for managing bioinformatics analysis
+workflow is actually great for generating reproducible and
+reusable analysis procedure.  Combining with a proper
+version control tool, one will be able to manage to work
+with a divergent set of data and tools over a period of time
+for a project especially when there are complicate
+dependence between the data, tools and customized code
+for the analysis tasks.
+
+However, using "make" and "makefile" implies all data
+analysis steps are done by some command line tools. If you
+have some customized analysis tasks, you will have to write
+some scripts and to make them into command line tools.  In
+my personal experience, I find it is convenient to bypass
+such burden and to combine those quick and simple steps in a
+single scripts. The only caveat is that if an analyst does
+not save the results of any intermediate steps, he or she
+has to repeat the computation all over again for every steps
+from the beginning. This will waste a lot of computation
+cycles and personal time.  Well, the solution is simple,
+just like the traditional software building process, one
+have to track the dependencies and analyze them and only
+reprocess those parts that are necessary to get the most
+up-to-date final results.
+
+General Design Principles
+=========================
+
+    - Explicitly modeling data and task dependency
+    - Support declarative programming style within Python while
+      maintaining some thing that imperative programming dose the
+      best
+    - Utilize RDF meta-data framework
+    - Keep it simple if possible
+
+Features
+========
+
+    - Multiple concurrent task scheduling and running
+    - Support task as simple shell script (considering clustering
+      job submission in mind)
+    - reasonable simple interface for declarative programming
+
+General Installation
+====================
+
+pypeFlow uses the standard python setup.py for installation::
+    
+    python setup.py install
+
+Once install, a brief documentation can be generated by::
+
+    cd doc
+    make html
+
+The generate sphinx html document can be viewed by point your web browser 
+to ``_build/html/index.html`` in the ``doc`` directory.
diff --git a/pypeFLOW/doc/Example1.png b/pypeFLOW/doc/Example1.png
new file mode 100644
index 0000000..8bfafc4
Binary files /dev/null and b/pypeFLOW/doc/Example1.png differ
diff --git a/pypeFLOW/doc/Example2.png b/pypeFLOW/doc/Example2.png
new file mode 100644
index 0000000..21f4f00
Binary files /dev/null and b/pypeFLOW/doc/Example2.png differ
diff --git a/pypeFLOW/doc/Makefile b/pypeFLOW/doc/Makefile
new file mode 100644
index 0000000..9df5f34
--- /dev/null
+++ b/pypeFLOW/doc/Makefile
@@ -0,0 +1,153 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  texinfo    to make Texinfo files"
+	@echo "  info       to make Texinfo files and run them through makeinfo"
+	@echo "  gettext    to make PO message catalogs"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PypeFlow.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PypeFlow.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/PypeFlow"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PypeFlow"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	$(MAKE) -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo
+	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+	@echo "Run \`make' in that directory to run these through makeinfo" \
+	      "(use \`make info' here to do that automatically)."
+
+info:
+	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+	@echo "Running Texinfo files through makeinfo..."
+	make -C $(BUILDDIR)/texinfo info
+	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+	@echo
+	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/pypeFLOW/doc/concurrent_execution.rst b/pypeFLOW/doc/concurrent_execution.rst
new file mode 100644
index 0000000..c27bbf5
--- /dev/null
+++ b/pypeFLOW/doc/concurrent_execution.rst
@@ -0,0 +1,15 @@
+Concurrent Execution
+======================
+
+``PypeThreadTaskBase`` provides the base class for task that can
+be run concurrently. If a task is built with ``PypeThreadTaskBase``,
+it has to be used with ``PypeThreadWorkflow``.  And all other tasks
+in the workflow should be ``PypeThreadTaskBase`` objects too. We simply
+use python thread for concurrent tasks. Due to the Python GIL, it is
+not recommand to have python function for intensive computing as task.
+The main purpose for ``PypeThreadTaskBase`` is for building tasks that wrapped
+some shell commands for running locally or through a cluster environment.
+In the furture, it is possible to add multiprocessing based support
+for computation intensive python functions as tasks to avoid the GIL.
+
+
diff --git a/pypeFLOW/doc/conf.py b/pypeFLOW/doc/conf.py
new file mode 100644
index 0000000..13f80fd
--- /dev/null
+++ b/pypeFLOW/doc/conf.py
@@ -0,0 +1,242 @@
+# -*- coding: utf-8 -*-
+#
+# pypeFlow documentation build configuration file, created by
+# sphinx-quickstart on Tue Jan 10 21:13:17 2012.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'pypeFlow'
+copyright = u'2012, Chen-Shan Chin'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.1'
+# The full version, including alpha/beta/rc tags.
+release = '0.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'nature'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'pypeFlowdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'pypeFlow.tex', u'pypeFlow Documentation',
+   u'Chen-Shan Chin', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'pypeflow', u'PypeFlow Documentation',
+     [u'Chen-Shan Chin'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+  ('index', 'pypeFlow', u'pypeFlow Documentation',
+   u'Chen-Shan Chin', 'PypeFlow', 'One line description of project.',
+   'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
diff --git a/pypeFLOW/doc/examples.rst b/pypeFLOW/doc/examples.rst
new file mode 100644
index 0000000..6af9927
--- /dev/null
+++ b/pypeFLOW/doc/examples.rst
@@ -0,0 +1,175 @@
+==================
+Usage and Examples
+==================
+
+pypeFLOW Objects
+================
+
+There are three different kinds of pypeFLOW objects:
+    
+    1. Data Object
+    2. Task Object
+    3. Workflow Object
+
+Data Object
+============
+
+The data objects represent the input and output data that is
+processed by a pypeFLOW task objects.
+
+Currently, only local file objects are implemented. In the
+future, more general data (e.g. a remote file or Amazon S3
+object) can be supported.
+
+Here is how to create an instance of a local file data object::
+
+    f1 = makePypeLocalFile("filename")
+
+The ``makePypeLocalFile`` returns a ``PypeLocalFile``
+object. It does not create the file in the file system.
+
+Task Object
+============
+
+A test object is generally created by the ``@PypeTask`` or
+``@PypeShellTask`` decorator with a task function. You will
+need to specifiy the input files and the output files with
+``@Task`` decorator.  The task function should declared with
+the variable argugment lists ``*argv, **kwargv`` as
+argumnets::
+
+    @PypeTask(inputDataObjs={"fasta":f1, "ref":f2},
+              outputDataObjs={"aln":f3})
+    def testTask(*argv, **kwargv):
+        print("testTask is running")
+        print("fasta input filename is %s" %  testTask.fasta.localFileName)
+        # do something to create the output file(s)
+
+The decorator return a callable object with the same name of
+the function. The above example returns an instance of
+``PypeTaskBase`` object. Within a task function, the input
+and output data objects can be retrieved as an instance
+attribute. For example, within the ``testTask`` function,
+``testTask.fasta`` is the ``f1`` data object.
+``testTaske.fasta.localFileName`` will give the local file
+of the file data object.
+
+Workflow Object
+===============
+
+The workflow object contains task objects and data objects.
+It creates the dependency directed acyclic graph (DAG)
+according to input and output data objects specified for
+each task.  Circular dependency will be detected. Output
+data files should be only dependent on one single task. It
+is generally not a good idea to write to the same "output
+file" from two tasks.
+
+The general pattern to specify a workflow is
+
+    1. Initialize a workflow object
+
+    2. Add data objects and task objects. One can only add
+       task objects, the data objects that a task object is
+       dependent on will be added into the workflow
+       automatically.
+
+    3. Specify the data objects to be "refreshed". Namely,
+       the workflow controller will evaluate the DAG and try to
+       update the specified data objects if necessary. If a
+       workflow has been executed and the initial and
+       intermediate data objects do not change, then no task
+       will be executed.  The tasks will be only executed when
+       the dependency is not satisfied. Currently, we use the
+       data objects' time stamp to determine the dependency. If
+       the output files are newer than the input files for a
+       task, the task will be ignored.
+
+See the following section for an example.
+
+Simple Example
+================
+
+A simple workflow can look like this::
+
+    from pypeflow.common import * 
+    from pypeflow.task import PypeThreadTaskBase, PypeTaskBase
+    from pypeflow.task import PypeTask, PypeShellTask, PypeSGETask, PypeDistributibleTask
+    from pypeflow.controller import PypeWorkflow, PypeThreadWorkflow
+    from pypeflow.data import PypeLocalFile, makePypeLocalFile
+
+    def simpleTest():
+
+        wf = PypeWorkflow() 
+        
+        # f1 and f2 are the mock input files
+        f1 = makePypeLocalFile("test.fa")
+        f2 = makePypeLocalFile("ref.fa")
+        
+        # f3 is the object of the expected output of the "testTask"
+        f3 = makePypeLocalFile("aln.txt", readOnly=False)
+
+        # create the mock files
+        os.system("touch %s" % f1.localFileName)
+        os.system("touch %s" % f2.localFileName)
+       
+        # the testTask will take f1 (as "testTask.fasta") and f2 (as "testTask.ref") and generate f3 (as "testTask.aln")
+        @PypeTask(inputDataObjs={"fasta":f1, "ref":f2},
+                  outputDataObjs={"aln":f3},
+                  parameters={"a":10}, **{"b":12})
+        def testTask(*argv, **kwargv):
+            print("testTask is running")
+            for ft, f in testTask.outputDataObjs.iteritems():
+                #os.system("touch %s" % f.localFileName)
+                runShellCmd(["touch", "%s" % f.localFileName])
+                runShellCmd(["sleep", "5" ])
+
+        # the testTask will take f1 (as "testTask.fasta") and f3 (as "testTask.aln") and generate f4 (as "testTask.aln2")
+        f4 = makePypeLocalFile("aln2.txt", readOnly=False)
+        @PypeTask(inputDataObjs={"fasta":f1, "aln":f3},
+                  outputDataObjs={"aln2":f4},
+                  parameters={"a":10}, **{"b":12})
+        def testTask2(*argv, **kwargv):
+            print("testTask2 is running")
+            for ft, f in testTask2.outputDataObjs.iteritems():
+                #os.system("touch %s" % f.localFileName)
+                runShellCmd(["touch", "%s" % f.localFileName])
+        
+        # one can add objects one by one to the workflow
+        #wf.addObjects([f1,f2,f3,f4]) 
+        #wf.addObjects([testTask, testTask2])
+       
+        # or, one can add the "tasks" into the workflow, the input and output data objects will be added automatically
+        wf.addTasks([testTask, testTask2])
+
+        #print out the RDFXML file that represents the workflow
+        print (wf.RDFXML)
+        #a graphviz dot for rendering the dependency graph if one
+        print (wf.graphvizDot)
+
+        # execute the workflow until f4 is updated
+        wf.refreshTargets([f4])
+
+        # mock the case that f1 is updated
+        print("re-touch f1")
+        os.system("sleep 1;touch %s;" % f1.localFileName)
+        wf.refreshTargets([f4])
+
+        # mock the case that f3 is updated
+        print("re-touch f3")
+        os.system("sleep 1;touch %s;" % f3.localFileName)
+
+The dependecy graph is shown below:
+
+.. image:: Example1.png
+   :width: 400 px
+
+In the ``example/`` directory, you can generate a more complicated mock example and excute it
+by running the ``PypeTest.py`` script with ``python PypeTest.py localshell 1``.
+
+The dependency graph of the mock workflow looks like:
+
+.. image:: Example2.png
+   :width: 600 px
+
+
diff --git a/pypeFLOW/doc/index.rst b/pypeFLOW/doc/index.rst
new file mode 100644
index 0000000..9051864
--- /dev/null
+++ b/pypeFLOW/doc/index.rst
@@ -0,0 +1,28 @@
+.. PypeFlow documentation master file, created by
+   sphinx-quickstart on Tue Jan 10 21:13:17 2012.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+pypeFLOW
+====================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   introduction
+   installation
+   examples
+   concurrent_execution
+   rdf_resprentation
+   modules
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/pypeFLOW/doc/introduction.rst b/pypeFLOW/doc/introduction.rst
new file mode 100644
index 0000000..0a58b3e
--- /dev/null
+++ b/pypeFLOW/doc/introduction.rst
@@ -0,0 +1,62 @@
+============
+Introduction
+============
+
+
+What is pypeFLOW
+================
+
+pypeFLOW is light weight and reusable make / flow data process
+library written in Python.
+
+Most of bioinformatics analysis or general data analysis
+includes various steps combining data files, transforming
+files between different formats and calculating statistics
+with a variety of tools. Ian Holmes has a great summary and
+opinions about bioinformatics workflow at
+http://biowiki.org/BioinformaticsWorkflows.  It is
+interesting that such analysis workflow is really similar to
+constructing software without an IDE in general.  Using a
+"makefile" file for managing bioinformatics analysis
+workflow is actually great for generating reproducible and
+reusable analysis procedure.  Combining with a proper
+version control tool, one will be able to manage to work
+with a divergent set of data and tools over a period of time
+for a project especially when there are complicate
+dependence between the data, tools and customized code
+for the analysis tasks.
+
+However, using "make" and "makefile" implies all data
+analysis steps are done by some command line tools. If you
+have some customized analysis tasks, you will have to write
+some scripts and to make them into command line tools.  In
+my personal experience, I find it is convenient to bypass
+such burden and to combine those quick and simple steps in a
+single scripts. The only caveat is that if an analyst does
+not save the results of any intermediate steps, he or she
+has to repeat the computation all over again for every steps
+from the beginning. This will waste a lot of computation
+cycles and personal time.  Well, the solution is simple,
+just like the traditional software building process, one
+have to track the dependencies and analyze them and only
+reprocess those parts that are necessary to get the most
+up-to-date final results.
+
+General Design Principles
+=========================
+
+    - Explicitly modeling data and task dependency
+    - Support declarative programming style within Python while
+      maintaining something that imperative programming dose the
+      best
+    - Utilize RDF meta-data framework
+    - Keep it simple if possible
+
+Features
+========
+
+    - Multiple concurrent tasks scheduling and running
+    - Support tasks as simple shell script (considering clustering
+      job submission in mind)
+    - reasonable simple interface for declarative programming
+
diff --git a/pypeFLOW/doc/modules.rst b/pypeFLOW/doc/modules.rst
new file mode 100644
index 0000000..7ca1b7f
--- /dev/null
+++ b/pypeFLOW/doc/modules.rst
@@ -0,0 +1,7 @@
+pypeflow
+========
+
+.. toctree::
+   :maxdepth: 4
+
+   pypeflow
diff --git a/pypeFLOW/doc/pypeflow.rst b/pypeFLOW/doc/pypeflow.rst
new file mode 100644
index 0000000..80f337e
--- /dev/null
+++ b/pypeFLOW/doc/pypeflow.rst
@@ -0,0 +1,35 @@
+pypeflow Package
+================
+
+:mod:`common` Module
+--------------------
+
+.. automodule:: pypeflow.common
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+:mod:`controller` Module
+------------------------
+
+.. automodule:: pypeflow.controller
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+:mod:`data` Module
+------------------
+
+.. automodule:: pypeflow.data
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
+:mod:`task` Module
+------------------
+
+.. automodule:: pypeflow.task
+    :members:
+    :undoc-members:
+    :show-inheritance:
+
diff --git a/pypeFLOW/doc/rdf_resprentation.rst b/pypeFLOW/doc/rdf_resprentation.rst
new file mode 100644
index 0000000..8da49ac
--- /dev/null
+++ b/pypeFLOW/doc/rdf_resprentation.rst
@@ -0,0 +1,134 @@
+==================
+RDF representation
+==================
+
+We use a RDF framework to track the relationship between different PypeFLOW objects.
+The relationship between different object in a workflow is described by an RDF triple.
+
+Here are two properties are shared by all PypeFLOW object (defined in ``PypeObject``)::
+
+    @property 
+    def _RDFGraph(self):
+        graph = Graph()
+
+        for k, v in self.__dict__.iteritems():
+            if k == "URL": continue
+            if k[0] == "_": continue
+            if hasattr(v, "URL"):
+                graph.add( ( URIRef(self.URL), pypeNS[k], URIRef(v.URL) ) )
+        return graph
+
+
+    
+    @property
+    def RDFXML(self):
+
+        """ 
+        RDF XML representation of the everything related to the PypeObject 
+        """
+
+        return self._RDFGraph.serialize() 
+
+
+Most relatons used in a workflow are likely be constructed during declaration 
+In ``PypeTask``, the RDF graph is populated as::
+
+    @property
+    def _RDFGraph(self):
+        graph = Graph()
+        for k, v in self.__dict__.iteritems():
+            if k == "URL": continue
+            if k[0] == "_": continue
+            if k in ["inputDataObjs", "outputDataObjs", "mutableDataObjs", "parameters"]:
+                if k == "inputDataObjs":
+                    for ft, f in v.iteritems():
+                        graph.add( (URIRef(self.URL), pypeNS["prereq"], URIRef(f.URL) ) )
+                elif k == "outputDataObjs":
+                    for ft, f in v.iteritems():
+                        graph.add( (URIRef(f.URL), pypeNS["prereq"], URIRef(self.URL) ) )
+                elif k == "mutableDataObjs":
+                    for ft, f in v.iteritems():
+                        graph.add( (URIRef(self.URL), pypeNS["hasMutable"], URIRef(f.URL)   ) )
+                elif k == "parameters":
+                    graph.add( (URIRef(self.URL), pypeNS["hasParameters"], Literal(json.dumps(v)) ) )
+            
+                continue
+
+            if k in self.inputDataObjs:
+                graph.add( ( URIRef(self.URL), pypeNS["inputDataObject"], URIRef(v.URL) ) )
+                continue
+
+            if k in self.outputDataObjs:
+                graph.add( ( URIRef(self.URL), pypeNS["outputDataObject"], URIRef(v.URL) ) )
+                continue
+
+            if k in self.mutableDataObjs:
+                graph.add( ( URIRef(self.URL), pypeNS["mutableDataObject"], URIRef(v.URL) ) )
+                continue
+
+            if hasattr(v, "URL"):
+                graph.add( ( URIRef(self.URL), pypeNS[k], URIRef(v.URL) ) )
+
+            graph.add(  ( URIRef(self.URL), pypeNS["codeMD5digest"], Literal(self._codeMD5digest) ) )
+            graph.add(  ( URIRef(self.URL), pypeNS["parameterMD5digest"], Literal(self._paramMD5digest) ) )
+
+        return graph
+
+Here is the code that put the statement the input data objects are the
+"prerequisite" object of the task::
+
+       if k == "inputDataObjs":
+            for ft, f in v.iteritems():
+                graph.add( (URIRef(self.URL), pypeNS["prereq"], URIRef(f.URL) ) )
+
+Similarly a task is a "prerequisite" object of its output data objects::
+
+        elif k == "outputDataObjs":
+            for ft, f in v.iteritems():
+                graph.add( (URIRef(f.URL), pypeNS["prereq"], URIRef(self.URL) ) )
+
+Typically, an output data object should only has a single prerequisite object. In the case that
+a data object will be modified by multiple tasks or served as input and output at the same
+time, one should specify such data object as ``mutableDataObject``.
+
+When a workflow tracing the execution order, only the ``pre-req`` relation is used. However,
+one can use the RDF statement to store various attributes for an object. For example, in
+the above code, we explicitly specify the input data objects as an attributes::
+
+        if k in self.inputDataObjs:
+            graph.add( ( URIRef(self.URL), pypeNS["inputDataObject"], URIRef(v.URL) ) )
+
+Here is an example of the RDF triples serialized as XML-RDF::
+
+      <rdf:Description rdf:about="task://testTask">
+        <ns1:prereq rdf:resource="file://localhost/Sandbox/ref.fa"/>
+        <ns1:prereq rdf:resource="file://localhost/Sandbox/test.fa"/>
+        <ns1:outputDataObject rdf:resource="file://localhost/Users/Sandbox/aln.txt"/>
+        <ns1:codeMD5digest>122d234ed92c29b77c14a2c8b52c0e4c</ns1:codeMD5digest>
+        <ns1:parameterMD5digest>c1ce51016644b55e38bf089f47875062</ns1:parameterMD5digest>
+        <ns1:inputDataObject rdf:resource="file://localhost/Sandbox/ref.fa"/>
+        <ns1:inputDataObject rdf:resource="file://localhost/Sandbox/test.fa"/>
+      </rdf:Description>
+
+If we would like to group different tasks into a module, we can use such RDF statement::
+
+      <rdf:Description rdf:about="task://testTask">
+        <ns1:in_module rdf:resource="module://workflow/module1"/>
+      </rdf:Description>
+
+This can be generated by inserting the following statement in python code::
+
+    class MyTaskWithModule(PypeTask):
+
+        def assign_module(self, module):
+            self._in_modules.append(module)
+
+        @property
+        def _RDFGraph(self):
+            g = super(MyTaskWithModule, self)._RDFGraph 
+            for m in self._in_modules:
+                g.add( ( URIRef(self.URL), pypeNS["inModule"], URIRef(m.URL) ) )
+            return g
+
+
+
diff --git a/pypeFLOW/example/PypeTest.py b/pypeFLOW/example/PypeTest.py
new file mode 100644
index 0000000..b9df10b
--- /dev/null
+++ b/pypeFLOW/example/PypeTest.py
@@ -0,0 +1,268 @@
+
+# @author Jason Chin
+#
+# Copyright (C) 2010 by Jason Chin 
+# Copyright (C) 2011 by Jason Chin
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+import sys
+import os 
+
+
+from pypeflow.common import * 
+from pypeflow.task import PypeThreadTaskBase, PypeTaskBase
+from pypeflow.task import PypeTask, PypeShellTask, PypeSGETask, PypeDistributibleTask
+from pypeflow.controller import PypeWorkflow, PypeThreadWorkflow, PypeMPWorkflow
+from pypeflow.data import PypeLocalFile, makePypeLocalFile
+import logging
+
+logger = logging.getLogger()
+#logger.setLevel(logging.INFO)
+logger.setLevel(logging.DEBUG)
+formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+ch = logging.StreamHandler()
+ch.setLevel(logging.DEBUG)
+ch.setFormatter(formatter)
+logger.addHandler(ch)
+
+
+def simpleTest():
+
+    wf = PypeWorkflow() 
+    
+    # f1 and f2 are the mock input files
+    f1 = makePypeLocalFile("test.fa")
+    f2 = makePypeLocalFile("ref.fa")
+    
+    # f3 is the object of the expected output of the "testTask"
+    f3 = makePypeLocalFile("aln.txt", readOnly=False)
+
+    # create the mock files
+    os.system("touch %s" % f1.localFileName)
+    os.system("touch %s" % f2.localFileName)
+   
+    # the testTask will take f1 (as "testTask.fasta") and f2 (as "testTask.ref") and generate f3 (as "testTask.aln")
+    @PypeTask(inputDataObjs={"fasta":f1, "ref":f2},
+              outputDataObjs={"aln":f3},
+              parameters={"a":10}, **{"b":12})
+    def testTask(*argv, **kwargv):
+        print("testTask is running")
+        print("fasta input filename is %s" %  testTask.fasta.localFileName)
+        for ft, f in testTask.outputDataObjs.iteritems():
+            #os.system("touch %s" % f.localFileName)
+            runShellCmd(["touch", "%s" % f.localFileName])
+            runShellCmd(["sleep", "5" ])
+
+    # the testTask will take f1 (as "testTask.fasta") and f3 (as "testTask.aln") and generate f4 (as "testTask.aln2")
+    f4 = makePypeLocalFile("aln2.txt", readOnly=False)
+    @PypeTask(inputDataObjs={"fasta":f1, "aln":f3},
+              outputDataObjs={"aln2":f4},
+              parameters={"a":10}, **{"b":12})
+    def testTask2(*argv, **kwargv):
+        print("testTask2 is running")
+        for ft, f in testTask2.outputDataObjs.iteritems():
+            #os.system("touch %s" % f.localFileName)
+            runShellCmd(["touch", "%s" % f.localFileName])
+    
+    # one can add objects one by one to the workflow
+    #wf.addObjects([f1,f2,f3,f4]) 
+    #wf.addObjects([testTask, testTask2])
+   
+    # or, one can add the "tasks" into the workflow, the input and output data objects will be added automatically
+    wf.addTasks([testTask, testTask2])
+
+    #print out the RDFXML file that represents the workflow
+    print (wf.RDFXML)
+    #a graphviz dot for rendering the dependency graph if one
+    print (wf.graphvizDot)
+
+    # execute the workflow until f4 is updated
+    wf.refreshTargets([f4])
+
+    # mock the case that f1 is updated
+    print("re-touch f1")
+    os.system("sleep 1;touch %s;" % f1.localFileName)
+    wf.refreshTargets([f4])
+
+    # mock the case that f3 is updated
+    print("re-touch f3")
+    os.system("sleep 1;touch %s;" % f3.localFileName)
+
+def simpleTest2():
+
+    wf = PypeWorkflow()
+
+    f1 = makePypeLocalFile("test.fa")
+    f2 = makePypeLocalFile("ref.fa")
+    f3 = makePypeLocalFile("aln.txt", readOnly=False)
+    f4 = makePypeLocalFile("aln2.txt", readOnly=False)
+
+    os.system("touch %s" % f1.localFileName)
+    os.system("touch %s" % f2.localFileName)
+    
+    @PypeTask(inputDataObjs={"fasta":f1, "ref":f2},
+              outputDataObjs={"aln":f3},
+              parameters={"a":10}, **{"b":12})
+    def testTask(*argv, **kwargv):
+        print("testTask is running")
+        for ft, f in testTask.outputDataObjs.iteritems():
+            #os.system("touch %s" % f.localFileName)
+            runShellCmd(["touch", "%s" % f.localFileName])
+            runShellCmd(["sleep", "5" ])
+
+    @PypeTask(inputDataObjs={"fasta":f1, "aln":f3},
+              outputDataObjs={"aln2":f4},
+              parameters={"a":10}, **{"b":12})
+    def testTask2(*argv, **kwargv):
+        print("testTask2 is running")
+        for ft, f in testTask2.outputDataObjs.iteritems():
+            #os.system("touch %s" % f.localFileName)
+            runShellCmd(["touch", "%s" % f.localFileName])
+        
+    #wf.addObjects([f1,f2,f3,f4]) wf.addObjects([testTask, testTask2])
+    
+    wf.addTasks([testTask, testTask2])
+
+    print (wf.RDFXML)
+    print (wf.graphvizDot)
+
+    #aGraph = PypeGraph(wf._RDFGraph) print(aGraph.tSort())
+
+    wf.refreshTargets([f4])
+
+    print("re-touch f1")
+    os.system("sleep 1;touch %s;" % f1.localFileName)
+    wf.refreshTargets([f4])
+
+    print("re-touch f3")
+    os.system("sleep 1;touch %s;" % f3.localFileName)
+
+def testDistributed(runmode, cleanup):
+    logger.info("test start")
+    baseDir = "."
+    import random
+    random.seed(1984)
+    #PypeThreadWorkflow.setNumThreadAllowed(20,20)
+    #wf = PypeThreadWorkflow()
+    PypeMPWorkflow.setNumThreadAllowed(20,20)
+    wf = PypeMPWorkflow()
+    allTasks = []
+    for layer in range(5):
+        fN = random.randint(3,7)
+        fin = [None] * fN
+        fout = [None] * fN
+        fmut = [None] * fN
+        for w in range(fN):
+            fin[w] = makePypeLocalFile(baseDir + "/testdata/testfile_l%d_w%d.dat" % (layer, w) )
+            fout[w] = makePypeLocalFile(baseDir + "/testdata/testfile_l%d_w%d.dat" % (layer+1, w) )
+            fmut[w] = makePypeLocalFile(baseDir + "/testdata/m_testfile_l%d_w%d.dat" % (layer+1, w) )
+            #wf.addObjects([fin[w], fout[w], fmut[w]])
+
+        for w in range(fN):
+            inputDataObjs = {}
+            outputDataObjs = {}
+            mutableDataObjs = {}
+            for i in range(5):
+                inputDataObjs["infile%d" % i] = random.choice(fin)
+
+            i = 0
+            for obj in random.sample(fmut,2):
+                #mutableDataObjs["outfile%d" % i] = obj
+                i += 1
+            outputDataObjs["outfile%d" % i] = fout[w]
+
+            shellCmd = "sleep 1\n" + "\n".join([ "echo %d %d ...  >> %s" % (layer, w, of.localFileName) for of in outputDataObjs.values() ]) + "\nsleep 10"
+            shellCmd += "sleep 1\n" + "\n".join([ "echo %d %d ...  >> %s" % (layer, w, of.localFileName) for of in mutableDataObjs.values() ]) + "\nsleep 10"
+            shellFileName = baseDir + "/testdata/task_l%d_w%d.sh" % (layer, w)
+            shfile = open(shellFileName, 'w')
+            print >> shfile, shellCmd
+            shfile.close()
+
+            if runmode == "internal":
+                def t1(self):
+                    runShellCmd(["sleep", "%d" % random.randint(0,20) ])
+
+                    for of in self.outputDataObjs.values():
+                        runShellCmd(["touch", of.localFileName])
+
+                task = PypeTask(inputDataObjs = inputDataObjs,
+                                outputDataObjs = outputDataObjs, 
+                                mutableDataObjs = mutableDataObjs,
+                                URL="task://internal/task_l%d_w%d" % (layer, w), 
+                                TaskType=PypeThreadTaskBase) ( t1 )
+
+            elif runmode == "localshell":
+                task = PypeShellTask(inputDataObjs = inputDataObjs,
+                                     outputDataObjs = outputDataObjs, 
+                                     mutableDataObjs = mutableDataObjs,
+                                     URL="task://localshell/task_l%d_w%d" % (layer, w), 
+                                     TaskType=PypeThreadTaskBase) ( "%s" % shellFileName )
+
+            elif runmode == "sge": 
+                task = PypeSGETask(inputDataObjs = inputDataObjs,
+                                   outputDataObjs = outputDataObjs, 
+                                   mutableDataObjs = mutableDataObjs,
+                                   URL="task://sge/task_l%d_w%d" % (layer, w), 
+                                   TaskType=PypeThreadTaskBase) ( "%s" % shellFileName )
+
+            elif runmode == "mixed":
+                #distributed = random.choice( (False, True) )
+                distributed = True if w % 3 == 0 else False
+                task = PypeDistributibleTask(inputDataObjs = inputDataObjs,
+                                   outputDataObjs = outputDataObjs,
+                                   mutableDataObjs = mutableDataObjs,
+                                   URL="task://sge/task_l%d_w%d" % (layer, w), 
+                                   distributed=distributed,
+                                   TaskType=PypeThreadTaskBase) ( "%s" % shellFileName )
+
+            wf.addTasks([task])
+            allTasks.append(task)
+
+    for URL in wf._pypeObjects:
+        prereqJobURLs = [str(u) for u in wf._RDFGraph.transitive_objects(URIRef(URL), pypeNS["prereq"])
+                                        if isinstance(wf._pypeObjects[str(u)], PypeLocalFile) and str(u) != URL ]
+        if len(prereqJobURLs) == 0:
+            if cleanup == "1":
+                os.system("echo start > %s" % wf._pypeObjects[URL].localFileName)
+            pass
+    wf.refreshTargets(allTasks)
+    dotFile = open("test.dot","w")
+    #print >>dotFile, wf.graphvizShortNameDot
+    print >>dotFile, wf.graphvizDot
+    dotFile.close()
+    dotFile = open("test_short_name.dot","w")
+    print >>dotFile, wf.graphvizShortNameDot
+    dotFile.close()
+    rdfFile = open("test.rdf","w")
+    print >>rdfFile, wf.RDFXML
+    rdfFile.close()
+    if runmode != "internal":
+        mkFile = open("test.mk","w")
+        print >>mkFile, wf.makeFileStr
+        mkFile.close()
+
+if __name__ == "__main__":
+    try:
+        testDistributed(sys.argv[1], sys.argv[2])
+    except IndexError:
+        print "try: python PypeTest.py localshell 1"
+        print "running simpleTest()"
+        simpleTest()
+
diff --git a/pypeFLOW/example/README.txt b/pypeFLOW/example/README.txt
new file mode 100644
index 0000000..5df3c4a
--- /dev/null
+++ b/pypeFLOW/example/README.txt
@@ -0,0 +1,10 @@
+
+
+Try "python PypeTest.py localshell 1" to run some random dependent shell script jobs.
+You can stop the python script and restart using "python PypeTest.py localshell 0".
+
+Other simple examples:
+
+python PypeTest.py internal 1 #the task is done within python functions
+
+python PypeTest.py #other simple test
diff --git a/pypeFLOW/example/test_shutdown.py b/pypeFLOW/example/test_shutdown.py
new file mode 100644
index 0000000..bd95b62
--- /dev/null
+++ b/pypeFLOW/example/test_shutdown.py
@@ -0,0 +1,72 @@
+
+# @author Jason Chin
+#
+# Copyright (C) 2010 by Jason Chin 
+# Copyright (C) 2011 by Jason Chin
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+import sys
+import os 
+
+
+from pypeflow.common import * 
+from pypeflow.task import PypeThreadTaskBase, PypeTaskBase
+from pypeflow.task import PypeTask, PypeShellTask, PypeSGETask, PypeDistributibleTask
+from pypeflow.controller import PypeWorkflow, PypeThreadWorkflow, PypeMPWorkflow
+from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+import logging
+import time
+
+logger = logging.getLogger()
+#logger.setLevel(logging.INFO)
+logger.setLevel(logging.DEBUG)
+formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+ch = logging.StreamHandler()
+ch.setLevel(logging.DEBUG)
+ch.setFormatter(formatter)
+logger.addHandler(ch)
+
+inputs = {"input": makePypeLocalFile("/tmp/test1_input")}
+outputs = {"output": makePypeLocalFile("/tmp/test1_output")}
+os.system("touch /tmp/test1_input")
+
+ at PypeTask(inputs = inputs, outputs = outputs, TaskType = PypeThreadTaskBase)
+def f(self):
+    i = 0
+    while 1:
+        time.sleep(0.1)
+        if self.shutdown_event != None and self.shutdown_event.is_set():
+            break
+        if i > 10:
+            break
+        i += 1
+    if self.shutdown_event == None or not self.shutdown_event.is_set():
+        os.system("touch %s" % fn(self.output))
+
+wf = PypeThreadWorkflow()
+wf.addTasks([f])
+wf.refreshTargets()
+
+
+
+
+
+
+
diff --git a/.gitmodules b/pypeFLOW/example/testdata/.placeholder
similarity index 100%
rename from .gitmodules
rename to pypeFLOW/example/testdata/.placeholder
diff --git a/pypeFLOW/examples-pwatcher/README.md b/pypeFLOW/examples-pwatcher/README.md
new file mode 100644
index 0000000..ecf2612
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/README.md
@@ -0,0 +1,60 @@
+## pwatcher
+Filesystem-based process-watcher.
+
+Sometimes, the filesystem is the only reliable way to communicate between
+processes on different machines.  **pwatcher** will watch for
+sentinels and heartbeats.
+
+Two basic ideas:
+
+1. To store sentinel-files in a single directory, in order to reduce
+   the burden on the filesystem.
+2. To use a background thread to update heartbeat-files periodically,
+   in order to avoid waiting forever on dead jobs.
+
+## API
+**pwatcher** can be used as a separate process or as a Python module.
+If you use it as a module, you should use the contextmanager in order
+to release locks quickly. That way, users can query via the command-line
+even while a large job is ongoing.
+
+There are three commands in the API.
+
+1. `run`
+2. `query`
+3. `delete`
+
+They all can be called from the command-line by supplying the arguments as JSON.
+
+### Examples
+#### Using **pwatcher**
+```
+pip install -e .
+cd examples-pwatcher/ab
+pwatcher-main run < run.json
+pwatcher-main query < query.json
+pwatcher-main delete < delete.json
+ls pwatched/
+```
+#### pypeFLOW example
+To run this example, you must first install **pypeFLOW**.
+```
+mkdir foo
+cd foo
+pypeflow_example
+```
+That should create:
+* directory `mytmp`
+  * for pypeflow outputs
+* directory `watched`
+  * `state.py`
+  * wrappers
+  * sentinel-files, touched on exit
+  * heartbeat-files, usually removed when done
+* some basic taskrunners
+
+### Plans
+The API needs a bit of clean-up, but the basic functionality is there.
+I still have to inject the grid-control commands.
+
+I hope to replace **FALCON**'s `fc_run.py` soon!
diff --git a/pypeFLOW/examples-pwatcher/ab/delete.json b/pypeFLOW/examples-pwatcher/ab/delete.json
new file mode 100644
index 0000000..72d03ae
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/ab/delete.json
@@ -0,0 +1 @@
+{"which":"infer"}
diff --git a/pypeFLOW/examples-pwatcher/ab/jobs/b b/pypeFLOW/examples-pwatcher/ab/jobs/b
new file mode 100644
index 0000000..8216627
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/ab/jobs/b
@@ -0,0 +1,3 @@
+echo 'hi b'
+sleep 5
+echo 'bye b'
diff --git a/pypeFLOW/examples-pwatcher/ab/jobs/c b/pypeFLOW/examples-pwatcher/ab/jobs/c
new file mode 100644
index 0000000..94f2eeb
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/ab/jobs/c
@@ -0,0 +1,3 @@
+echo 'hi c'
+sleep 100
+echo 'bye c'
diff --git a/examples/logging.json b/pypeFLOW/examples-pwatcher/ab/logging-cfg.json
similarity index 70%
rename from examples/logging.json
rename to pypeFLOW/examples-pwatcher/ab/logging-cfg.json
index 50524b0..3ea7486 100644
--- a/examples/logging.json
+++ b/pypeFLOW/examples-pwatcher/ab/logging-cfg.json
@@ -1,35 +1,39 @@
 {
-    "version": 1,
+    "disable_existing_loggers": false,
+    "filters": {},
     "formatters": {
-        "format_full": {
-            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
-        },
         "format_brief": {
             "format": "%(levelname)s: %(message)s"
+        },
+        "format_full": {
+            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
         }
     },
-    "filters": {
-    },
     "handlers": {
         "handler_file_all": {
             "class": "logging.FileHandler",
-            "level": "DEBUG",
+            "filename": "workflow.log",
             "formatter": "format_full",
-            "filename": "all.log",
+            "level": "DEBUG",
             "mode": "w"
         },
         "handler_stream": {
             "class": "logging.StreamHandler",
-            "level": "INFO",
             "formatter": "format_brief",
+            "level": "INFO",
             "stream": "ext://sys.stderr"
         }
     },
     "loggers": {
+        "": {
+            "handlers": [
+                "handler_file_all",
+                "handler_stream"
+            ],
+            "level": "NOTSET"
+        }
     },
     "root": {
-        "handlers": ["handler_stream", "handler_file_all"],
-        "level": "NOTSET"
     },
-    "disable_existing_loggers": false
+    "version": 1
 }
diff --git a/pypeFLOW/examples-pwatcher/ab/makefile b/pypeFLOW/examples-pwatcher/ab/makefile
new file mode 100644
index 0000000..f64997b
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/ab/makefile
@@ -0,0 +1,10 @@
+SHELL:=bash
+run:
+	pwatcher-main run < run.json
+	pstree -pgsu $${USER}
+query:
+	pwatcher-main query < query-ab.json
+delete:
+	pwatcher-main delete <<< $$(echo '{"which":"infer"}')
+clean:
+	rm -rf pwatched *.log
diff --git a/pypeFLOW/examples-pwatcher/ab/query-ab.json b/pypeFLOW/examples-pwatcher/ab/query-ab.json
new file mode 100644
index 0000000..b44ab95
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/ab/query-ab.json
@@ -0,0 +1,5 @@
+{
+    "which": "list",
+    "jobids": ["b", "c"],
+    "~end": {}
+}
diff --git a/pypeFLOW/examples-pwatcher/ab/run.json b/pypeFLOW/examples-pwatcher/ab/run.json
new file mode 100644
index 0000000..ff55f84
--- /dev/null
+++ b/pypeFLOW/examples-pwatcher/ab/run.json
@@ -0,0 +1,12 @@
+{
+    "jobids": {
+        "c": {
+            "cmd": "/bin/bash jobs/c",
+            "rundir": "./jobs"
+        },
+        "b": {
+            "cmd": "/bin/bash jobs/b",
+            "rundir": "./jobs"
+        }
+    }
+}
diff --git a/pypeFLOW/presentation/escher--unbelievable-527581_1024_768.jpg b/pypeFLOW/presentation/escher--unbelievable-527581_1024_768.jpg
new file mode 100644
index 0000000..cb6694b
Binary files /dev/null and b/pypeFLOW/presentation/escher--unbelievable-527581_1024_768.jpg differ
diff --git a/pypeFLOW/presentation/pipelines.png b/pypeFLOW/presentation/pipelines.png
new file mode 100644
index 0000000..1a831b5
Binary files /dev/null and b/pypeFLOW/presentation/pipelines.png differ
diff --git a/pypeFLOW/presentation/pypeFLOW_tutorial.html b/pypeFLOW/presentation/pypeFLOW_tutorial.html
new file mode 100644
index 0000000..fd84ba5
--- /dev/null
+++ b/pypeFLOW/presentation/pypeFLOW_tutorial.html
@@ -0,0 +1,2412 @@
+<!DOCTYPE html>
+<!--
+  Copyright 2010 Google Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  Original slides: Marcin Wichary (mwichary at google.com)
+  Modifications: Ernest Delgado (ernestd at google.com)
+                 Alex Russell (slightlyoff at chromium.org)
+
+  landslide modifications: Adam Zapletal (adamzap at gmail.com)
+                           Nicolas Perriault (nperriault at gmail.com)
+-->
+<html>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="chrome=1">
+    <title>pypeFLOW Tutorial</title>
+    <!-- Styles -->
+    
+    <style type="text/css" media="print">
+      * {
+    margin: 0;
+    padding: 0;
+}
+
+ at page {
+    size: landscape;
+}
+
+body {
+    font: 100% "Lucida Grande", "Trebuchet MS", Verdana, sans-serif;
+    padding: 0;
+    margin: 0;
+}
+
+div.slide {
+    min-width: 800px;
+    min-height: 600px;
+    padding: 1em;
+    overflow: hidden;
+    page-break-after: always;
+    border: 1px solid black;
+    border-radius: 20px;
+}
+
+div.slide div.inner {
+    width: 800px;
+    height: 600px;
+    margin: auto;
+    display: table-cell;
+}
+
+h1 {
+    font-size: 2.4em;
+}
+
+h2 {
+    font-size: 1.4em;
+}
+
+h3 {
+    margin: 1em 0;
+}
+
+ul {
+    margin: 0;
+    padding: 0;
+}
+
+p, li, pre {
+    margin: 1em 0;
+}
+
+li {
+    margin-left: 2em;
+}
+
+a {
+    color: #000000;
+}
+
+pre, code {
+    max-width: 800px;
+    background: #eee;
+    font-family: Monaco, monospace;
+    font-size: 90%;
+}
+
+pre {
+    padding: .2em .5em;
+    overflow: hidden;
+    border-radius: .8em;
+}
+
+code {
+    padding: 0 .2em;
+}
+
+.slide header:only-child h1 {
+  line-height: 180%;
+  text-align: center;
+  display: table-cell;
+  vertical-align: middle;
+  height: 600px;
+  width: 800px;
+  font-size: 48px;
+  margin-top:100px;
+  margin-bottom:100px;
+}
+
+#toc, #help, .slide aside, .slide footer, .slide .notes,
+.presenter_notes, #current_presenter_notes, #presenter_note {
+  display: none;
+}
+
+    </style>
+    <style type="text/css" media="screen, projection">
+      body {
+  font: 14px "Lucida Grande", "Trebuchet MS", Verdana, sans-serif;
+  background: #fff;
+  padding: 0;
+  margin: 0;
+  overflow: hidden;
+}
+
+div.presentation {
+  position: absolute;
+  width: 100%;
+  display: table-cell;
+  vertical-align: middle;
+  height: 100%;
+  background: inherit;
+}
+
+div.slides, body.expose div.slides.nocontext {
+  width: 100%;
+  height: 100%;
+  left: 0;
+  top: 0;
+  position: absolute;
+  display: block;
+  background-color: #fff;
+}
+
+
+div.slides.nocontext {
+  width: 900px;
+  margin: 0 auto;
+  overflow: hidden;
+  position: relative;
+  left: auto;
+  top: auto;
+}
+
+div.slide {
+  display: none;
+  position: absolute;
+  overflow: hidden;
+  width: 900px;
+  height: 700px;
+  left: 50%;
+  top: 50%;
+  margin-top: -350px;
+  background: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#eeeeec));
+  background-color: #eee;
+  background: -moz-linear-gradient(bottom, #fff, #eeeeec);
+  -webkit-transition: margin 0.25s ease-in-out;
+  -moz-transition: margin 0.25s ease-in-out;
+  -o-transition: margin 0.25s ease-in-out;
+  border-top-right-radius: 20px;
+  -moz-border-radius-topright: 20px;
+  -webkit-border-top-right-radius: 20px;
+  border-bottom-left-radius: 0px;
+  -moz-border-radius-bottomleft: 0px;
+  -webkit-border-bottom-left-radius: 0px;
+  border-top-left-radius: 20px;
+  -moz-border-radius-topleft: 20px;
+  -webkit-border-top-left-radius: 20px;
+  border-bottom-right-radius: 0px;
+  -moz-border-radius-bottomright: 0px;
+  -webkit-border-bottom-right-radius: 0px;
+
+}
+
+div.slide p {
+  font-size: 20px;
+}
+
+.slide.far-past {
+  display: block;
+  margin-left: -2400px;
+}
+
+.slide.past {
+  display: block;
+  margin-left: -1400px;
+}
+
+.slide.current {
+  display: block;
+  margin-left: -450px;
+}
+
+.slide.future {
+  display: block;
+  margin-left: 500px;
+}
+
+.slide.far-future {
+  display: block;
+  margin-left: 1500px;
+}
+
+body.three-d div.slides {
+  -webkit-transform: translateX(50px) scale(0.8) rotateY(10deg);
+  -moz-transform: translateX(50px) scale(0.8) rotateY(10deg);
+  -o-transform: translateX(50px) scale(0.8) rotateY(10deg);
+}
+
+
+/* Content */
+
+header:not(:only-child) {
+  font-family: "Lucida Grande", "Trebuchet MS", Verdana, sans-serif;
+  font-weight: normal;
+  font-size: 50px;
+  letter-spacing: -.05em;
+  color: white;
+  color: black;
+  text-shadow: rgba(0, 0, 0, 0.2) 0 2px 5px;
+  position: absolute;
+  left: 30px;
+  top: 25px;
+  margin: 0;
+  padding: 0;
+}
+
+header h1, header h2, header h3, header h4, header h5, header h6 {
+  display: inline;
+  font-size: 100%;
+  font-weight: normal;
+  padding: 0;
+  margin: 0;
+}
+
+header h2:first-child {
+  margin-top: 0;
+}
+
+section, .slide header:only-child h1 {
+  font-family: "Lucida Grande", "Trebuchet MS", Verdana, sans-serif;
+  color: #3f3f3f;
+  text-shadow: rgba(0, 0, 0, 0.2) 0 2px 5px;
+  margin-left: 30px;
+  margin-right: 30px;
+  margin-top: 100px;
+  display: block;
+  overflow: hidden;
+}
+
+section img.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+section img.align-right {
+  display: block;
+  margin-left: auto;
+  margin-right: 0;
+}
+
+section img.align-left {
+  display: block;
+  margin-right: auto;
+  margin-left: 0;
+}
+
+a {
+  color: inherit;
+  display: inline-block;
+  text-decoration: none;
+  line-height: 110%;
+  border-bottom: 2px solid #3f3f3f;
+}
+
+pre {
+  font-size: 16px;
+  font-family: Monaco, Courier, monospace;
+}
+
+li {
+  padding: 10px 0;
+  font-size: 20px;
+}
+
+.slide header:only-child h1 {
+  line-height: 180%;
+  text-align: center;
+  display: table-cell;
+  vertical-align: middle;
+  height: 700px;
+  width: 900px;
+  font-size: 50px;
+  margin-top:100px;
+  margin-bottom:100px;
+}
+
+.sidebar {
+  background: -webkit-gradient(linear, top right, bottom right, from(#dde), to(#fff));
+  -webkit-transition: margin 0.25s ease-in-out;
+  background-color: #eee;
+  background: -moz-linear-gradient(right, #dde, #fff);
+  border-right: 5px solid #ccd;
+  z-index: 9999999;
+  height: 100%;
+  overflow: hidden;
+  top: 0;
+  position: absolute;
+  display: block;
+  margin: 0;
+  margin-left: -400px;
+  padding: 10px 16px;
+  overflow: auto;
+  -webkit-transition: margin 0.2s ease-in-out;
+  -moz-transition: margin 0.2s ease-in-out;
+  -o-transition: margin 0.2s ease-in-out;
+}
+
+.sidebar h2 {
+  text-shadow: rgba(0, 0, 0, 0.2) 0 2px 5px;
+  margin: 0 0 16px;
+  padding: 0;
+}
+
+.sidebar table {
+  width: 100%;
+  margin: 0;
+  padding: 0;
+  border-collapse: collapse;
+}
+
+.sidebar table caption {
+  display: none;
+}
+
+.sidebar tr {
+  margin: 2px 0;
+  border-bottom: 1px solid #ccc;
+}
+
+.sidebar th {
+  text-align: left;
+  font-weight: normal;
+  max-width: 300px;
+  overflow: hidden;
+}
+
+.sidebar tr.sub th {
+  text-indent: 20px;
+}
+
+.sidebar td {
+  text-align: right;
+  min-width: 20px;
+}
+
+.sidebar a {
+  display: block;
+  text-decoration: none;
+  border-bottom: none;
+  padding: 4px 0;
+}
+
+.sidebar tr.active {
+  background: #ff0;
+}
+
+aside {
+  display: none;
+}
+  aside.source {
+    position: absolute;
+    bottom: 6px;
+    left: 10px;
+    text-indent: 10px;
+  }
+  aside.page_number {
+    position: absolute;
+    bottom: 6px;
+    right: 10px;
+    text-indent: 10px;
+  }
+
+.notes {
+  display: none;
+  padding: 10px;
+  background: #ccc;
+  border-radius: 10px;
+  -moz-border-radius: 10px;
+  -webkit-border-radius: 10px;
+}
+  div.slide p.notes {
+    font-size: 90%;
+}
+
+img { display: block; margin: auto; }
+
+/* Expose */
+
+body.expose div.slides {
+  float: left;
+  position: relative;
+  overflow: auto;
+  margin-bottom: 10px;
+}
+
+body.expose div.slide {
+  display: block;
+  float: left;
+  position: relative;
+  left: auto !important;
+  top: auto !important;
+  margin: 10px !important;
+  -webkit-transition: none;
+  -moz-transition: none;
+  -o-transition: none;  
+  -moz-transform: scale(.33, .33);
+  -moz-transform-origin: 0 0;
+  -webkit-transform: scale(.33, .33);
+  -webkit-transform-origin: 0 0;
+  -o-transform: scale(.33, .33);
+  -o-transform-origin: 0 0;
+  -webkit-transition: none;
+  -moz-transition: none;
+  -o-transition: none;
+  cursor: pointer;
+}
+
+body.expose div.slide:hover {
+  background: -webkit-gradient(linear, left bottom, left top, from(#bdd), to(#fff));
+  background-color: #eee;
+  background: -moz-linear-gradient(bottom, #bdd, #fff);
+}
+
+body.expose .slide-wrapper {
+  float: left;
+  position: relative;
+  margin: .5%;
+  width: 300px;
+  height: 233px;
+}
+
+body.expose .slide footer {
+}
+
+body.expose .slide .inner {
+}
+
+body.expose .slide.far-past,
+body.expose .slide.past,
+body.expose .slide.future,
+body.expose .slide.far-future {
+  margin-left: 0;
+}
+
+body.expose .slide.current {
+  background: -webkit-gradient(linear, left bottom, left top, from(#ddb), to(#fff));
+  background-color: #eee;
+  background: -moz-linear-gradient(bottom, #ddb, #fff);
+  border: 16px solid #fff;
+  -moz-transform: scale(.315, .315);
+  -moz-transform-origin: 0 0;
+  -webkit-transform: scale(.315, .315);
+  -webkit-transform-origin: 0 0;
+  -o-transform: scale(.315, .315);
+  -o-transform-origin: 0 0;
+}
+
+/* Pygments default theme */
+.hll { background-color: #ffffcc }
+.c { color: #408080; font-style: italic } /* Comment */
+.err { border: 1px solid #FF0000 } /* Error */
+.k { color: #008000; font-weight: bold } /* Keyword */
+.o { color: #666666 } /* Operator */
+.cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.cp { color: #BC7A00 } /* Comment.Preproc */
+.c1 { color: #408080; font-style: italic } /* Comment.Single */
+.cs { color: #408080; font-style: italic } /* Comment.Special */
+.gd { color: #A00000 } /* Generic.Deleted */
+.ge { font-style: italic } /* Generic.Emph */
+.gr { color: #FF0000 } /* Generic.Error */
+.gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.gi { color: #00A000 } /* Generic.Inserted */
+.go { color: #808080 } /* Generic.Output */
+.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.gs { font-weight: bold } /* Generic.Strong */
+.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.gt { color: #0040D0 } /* Generic.Traceback */
+.kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.kp { color: #008000 } /* Keyword.Pseudo */
+.kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.kt { color: #B00040 } /* Keyword.Type */
+.m { color: #666666 } /* Literal.Number */
+.s { color: #BA2121 } /* Literal.String */
+.na { color: #7D9029 } /* Name.Attribute */
+.nb { color: #008000 } /* Name.Builtin */
+.nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.no { color: #880000 } /* Name.Constant */
+.nd { color: #AA22FF } /* Name.Decorator */
+.ni { color: #999999; font-weight: bold } /* Name.Entity */
+.ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.nf { color: #0000FF } /* Name.Function */
+.nl { color: #A0A000 } /* Name.Label */
+.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.nt { color: #008000; font-weight: bold } /* Name.Tag */
+.nv { color: #19177C } /* Name.Variable */
+.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.w { color: #bbbbbb } /* Text.Whitespace */
+.mf { color: #666666 } /* Literal.Number.Float */
+.mh { color: #666666 } /* Literal.Number.Hex */
+.mi { color: #666666 } /* Literal.Number.Integer */
+.mo { color: #666666 } /* Literal.Number.Oct */
+.sb { color: #BA2121 } /* Literal.String.Backtick */
+.sc { color: #BA2121 } /* Literal.String.Char */
+.sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.s2 { color: #BA2121 } /* Literal.String.Double */
+.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.sh { color: #BA2121 } /* Literal.String.Heredoc */
+.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.sx { color: #008000 } /* Literal.String.Other */
+.sr { color: #BB6688 } /* Literal.String.Regex */
+.s1 { color: #BA2121 } /* Literal.String.Single */
+.ss { color: #19177C } /* Literal.String.Symbol */
+.bp { color: #008000 } /* Name.Builtin.Pseudo */
+.vc { color: #19177C } /* Name.Variable.Class */
+.vg { color: #19177C } /* Name.Variable.Global */
+.vi { color: #19177C } /* Name.Variable.Instance */
+.il { color: #666666 } /* Literal.Number.Integer.Long */
+
+/* Presenter Mode */
+
+body.presenter_view div.slide {
+  display: inline;
+  position: absolute;
+  overflow: hidden;
+  -moz-transform: scale(.5, .5);
+  -moz-transform-origin: 0 0;
+  -webkit-transform: scale(.5, .5);
+  -webkit-transform-origin: 0 0;
+  -o-transform: scale(.5, .5);
+  -o-transform-origin: 0 0;
+  margin-top: -300px;
+}
+
+body.presenter_view .slide.far-past {
+  display: block;
+  margin-left: -1500px;
+}
+
+body.presenter_view .slide.past {
+  display: block;
+  margin-left: -975px;
+}
+
+body.presenter_view .slide.current {
+  display: block;
+  margin-left: -475px;
+  border: 8px solid maroon;
+  z-index: 2;
+}
+
+body.presenter_view .slide.future {
+  display: block;
+  margin-left: 25px;
+  z-index: 1;
+}
+
+body.presenter_view .slide.far-future {
+  display: block;
+  margin-left: 525px;
+}
+
+body.presenter_view div#current_presenter_notes {
+  visibility: visible;
+  display: block;
+  position: absolute;
+  overflow: auto;
+  vertical-align: middle;
+  left: 50%;
+  top: 50%;
+  margin-left: -475px;
+  margin-top: 100px;
+  z-index: 2;
+  width: 950px;
+  border-style: solid;
+  height: 30%;
+  background-color: silver;
+}
+
+body.presenter_view div#current_presenter_notes section {
+  font-family: "Lucida Grande", "Trebuchet MS", Verdana, sans-serif;
+  color: black;
+  text-shadow: rgba(0, 0, 0, 0.2) 0 2px 5px;
+  display: block;
+  overflow: visible;
+  position: relative;
+  background-color: #fffeff;
+  height: 120px;
+  margin-right: 30px;
+  margin-top: 60px;
+  margin-left: 30px;
+  padding-right: 10px;
+  padding-left: 10px;
+  padding-top: 10px;
+}
+
+body.presenter_view div#current_presenter_notes section p {
+  margin: 0;
+}
+
+body.presenter_view div#current_presenter_notes h1 {
+  font-size: 50%;
+  display: block;
+}
+
+div#current_presenter_notes {
+  display: none;
+}
+
+div.slide div.presenter_notes {
+  display: none;
+}
+
+#blank {
+  position: absolute;
+  top: 0;
+  left: 0;
+  background-color: black;
+  width: 100%;
+  height: 100%;
+  z-index: 64;
+  display: none;
+}
+
+    </style>
+    
+    
+    <!-- /Styles -->
+    <!-- Javascripts -->
+    
+    <script>
+      function main() {
+    // Since we don't have the fallback of attachEvent and
+    // other IE only stuff we won't try to run JS for IE.
+    // It will run though when using Google Chrome Frame
+    if (document.all) { return; }
+
+    var currentSlideNo;
+    var notesOn = false;
+    var expanded = false;
+    var hiddenContext = false;
+    var blanked = false;
+    var slides = document.getElementsByClassName('slide');
+    var touchStartX = 0;
+    var spaces = /\s+/, a1 = [''];
+    var tocOpened = false;
+    var helpOpened = false;
+    var overviewActive = false;
+    var modifierKeyDown = false;
+    var scale = 1;
+    var showingPresenterView = false;
+    var presenterViewWin = null;
+    var isPresenterView = false;
+
+    var str2array = function(s) {
+        if (typeof s == 'string' || s instanceof String) {
+            if (s.indexOf(' ') < 0) {
+                a1[0] = s;
+                return a1;
+            } else {
+                return s.split(spaces);
+            }
+        }
+        return s;
+    };
+
+    var trim = function(str) {
+        return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
+    };
+
+    var addClass = function(node, classStr) {
+        classStr = str2array(classStr);
+        var cls = ' ' + node.className + ' ';
+        for (var i = 0, len = classStr.length, c; i < len; ++i) {
+            c = classStr[i];
+            if (c && cls.indexOf(' ' + c + ' ') < 0) {
+                cls += c + ' ';
+            }
+        }
+        node.className = trim(cls);
+    };
+
+    var removeClass = function(node, classStr) {
+        var cls;
+        if (!node) {
+            throw 'no node provided';
+        }
+        if (classStr !== undefined) {
+            classStr = str2array(classStr);
+            cls = ' ' + node.className + ' ';
+            for (var i = 0, len = classStr.length; i < len; ++i) {
+                cls = cls.replace(' ' + classStr[i] + ' ', ' ');
+            }
+            cls = trim(cls);
+        } else {
+            cls = '';
+        }
+        if (node.className != cls) {
+            node.className = cls;
+        }
+    };
+
+    var getSlideEl = function(slideNo) {
+        if (slideNo > 0) {
+            return slides[slideNo - 1];
+        } else {
+            return null;
+        }
+    };
+
+    var getSlideTitle = function(slideNo) {
+        var el = getSlideEl(slideNo);
+        if (el) {
+            var headers = el.getElementsByTagName('header');
+            if (headers.length > 0) {
+                return el.getElementsByTagName('header')[0].innerText;
+            }
+        }
+        return null;
+    };
+
+    var getSlidePresenterNote = function(slideNo) {
+        var el = getSlideEl(slideNo);
+        if (el) {
+            var n = el.getElementsByClassName('presenter_notes');
+            if (n.length > 0) {
+                return n[0];
+            }
+        }
+        return null;
+    };
+
+    var changeSlideElClass = function(slideNo, className) {
+        var el = getSlideEl(slideNo);
+        if (el) {
+            removeClass(el, 'far-past past current future far-future');
+            addClass(el, className);
+        }
+    };
+
+    var updateSlideClasses = function(updateOther) {
+        window.location.hash = (isPresenterView ? "presenter" : "slide") + currentSlideNo;
+
+        for (var i=1; i<currentSlideNo-1; i++) {
+            changeSlideElClass(i, 'far-past');
+        }
+
+        changeSlideElClass(currentSlideNo - 1, 'past');
+        changeSlideElClass(currentSlideNo, 'current');
+        changeSlideElClass(currentSlideNo + 1, 'future');
+
+        for (i=currentSlideNo+2; i<slides.length+1; i++) {
+            changeSlideElClass(i, 'far-future');
+        }
+
+        highlightCurrentTocLink();
+
+        processContext();
+
+        document.getElementsByTagName('title')[0].innerText = getSlideTitle(currentSlideNo);
+
+        updatePresenterNotes();
+
+        if (updateOther) { updateOtherPage(); }
+    };
+
+    var updatePresenterNotes = function() {
+        if (!isPresenterView) { return; }
+
+        var existingNote = document.getElementById('current_presenter_notes');
+        var currentNote = getSlidePresenterNote(currentSlideNo).cloneNode(true);
+        currentNote.setAttribute('id', 'presenter_note');
+
+        existingNote.replaceChild(currentNote, document.getElementById('presenter_note'));
+    };
+
+    var highlightCurrentTocLink = function() {
+        var toc = document.getElementById('toc');
+
+        if (toc) {
+            var tocRows = toc.getElementsByTagName('tr');
+            for (var i=0; i<tocRows.length; i++) {
+                removeClass(tocRows.item(i), 'active');
+            }
+
+            var currentTocRow = document.getElementById('toc-row-' + currentSlideNo);
+            if (currentTocRow) {
+                addClass(currentTocRow, 'active');
+            }
+        }
+    };
+
+    var updateOtherPage = function() {
+        if (!showingPresenterView) { return; }
+
+        var w = isPresenterView ? window.opener : presenterViewWin;
+        w.postMessage('slide#' + currentSlideNo, '*');
+    };
+
+    var nextSlide = function() {
+        if (currentSlideNo < slides.length) {
+            currentSlideNo++;
+        }
+        updateSlideClasses(true);
+    };
+
+    var prevSlide = function() {
+        if (currentSlideNo > 1) {
+            currentSlideNo--;
+        }
+        updateSlideClasses(true);
+    };
+
+    var showNotes = function() {
+        var notes = getSlideEl(currentSlideNo).getElementsByClassName('notes');
+        for (var i = 0, len = notes.length; i < len; i++) {
+            notes.item(i).style.display = (notesOn) ? 'none':'block';
+        }
+        notesOn = !notesOn;
+    };
+
+    var showSlideNumbers = function() {
+        var asides = document.getElementsByClassName('page_number');
+        var hidden = asides[0].style.display != 'block';
+        for (var i = 0; i < asides.length; i++) {
+            asides.item(i).style.display = hidden ? 'block' : 'none';
+        }
+    };
+
+    var showSlideSources = function() {
+        var asides = document.getElementsByClassName('source');
+        var hidden = asides[0].style.display != 'block';
+        for (var i = 0; i < asides.length; i++) {
+            asides.item(i).style.display = hidden ? 'block' : 'none';
+        }
+    };
+
+    var showToc = function() {
+        if (helpOpened) {
+                showHelp();
+        }
+        var toc = document.getElementById('toc');
+        if (toc) {
+            toc.style.marginLeft = tocOpened ? '-' + (toc.clientWidth + 20) + 'px' : '0px';
+            tocOpened = !tocOpened;
+        }
+        updateOverview();
+    };
+
+    var showHelp = function() {
+        if (tocOpened) {
+                showToc();
+        }
+
+        var help = document.getElementById('help');
+
+        if (help) {
+            help.style.marginLeft = helpOpened ? '-' + (help.clientWidth + 20) + 'px' : '0px';
+            helpOpened = !helpOpened;
+        }
+    };
+
+    var showPresenterView = function() {
+        if (isPresenterView) { return; }
+
+        if (showingPresenterView) {
+            presenterViewWin.close();
+            presenterViewWin = null;
+            showingPresenterView = false;
+        } else {
+            presenterViewWin = open(window.location.pathname + "#presenter" + currentSlideNo, 'presenter_notes',
+                                                                    'directories=no,location=no,toolbar=no,menubar=no,copyhistory=no');
+            showingPresenterView = true;
+        }
+    };
+
+    var switch3D = function() {
+        if (document.body.className.indexOf('three-d') == -1) {
+            document.getElementsByClassName('presentation')[0].style.webkitPerspective = '1000px';
+            document.body.className += ' three-d';
+        } else {
+            window.setTimeout('document.getElementsByClassName(\'presentation\')[0].style.webkitPerspective = \'0\';', 2000);
+            document.body.className = document.body.className.replace(/three-d/, '');
+        }
+    };
+
+    var toggleOverview = function() {
+        if (!overviewActive) {
+            addClass(document.body, 'expose');
+            overviewActive = true;
+            setScale(1);
+        } else {
+            removeClass(document.body, 'expose');
+            overviewActive = false;
+            if (expanded) {
+                setScale(scale);    // restore scale
+            }
+        }
+        processContext();
+        updateOverview();
+    };
+
+    var updateOverview = function() {
+        try {
+            var presentation = document.getElementsByClassName('presentation')[0];
+        } catch (e) {
+            return;
+        }
+
+        if (isPresenterView) {
+            var action = overviewActive ? removeClass : addClass;
+            action(document.body, 'presenter_view');
+        }
+
+        var toc = document.getElementById('toc');
+
+        if (!toc) {
+            return;
+        }
+
+        if (!tocOpened || !overviewActive) {
+            presentation.style.marginLeft = '0px';
+            presentation.style.width = '100%';
+        } else {
+            presentation.style.marginLeft = toc.clientWidth + 'px';
+            presentation.style.width = (presentation.clientWidth - toc.clientWidth) + 'px';
+        }
+    };
+
+    var computeScale = function() {
+        var cSlide = document.getElementsByClassName('current')[0];
+        var sx = cSlide.clientWidth / window.innerWidth;
+        var sy = cSlide.clientHeight / window.innerHeight;
+        return 1 / Math.max(sx, sy);
+    };
+
+    var setScale = function(scale) {
+        var presentation = document.getElementsByClassName('slides')[0];
+        var transform = 'scale(' + scale + ')';
+        presentation.style.MozTransform = transform;
+        presentation.style.WebkitTransform = transform;
+        presentation.style.OTransform = transform;
+        presentation.style.msTransform = transform;
+        presentation.style.transform = transform;
+    };
+
+    var expandSlides = function() {
+        if (overviewActive) {
+            return;
+        }
+        if (expanded) {
+            setScale(1);
+            expanded = false;
+        } else {
+            scale = computeScale();
+            setScale(scale);
+            expanded = true;
+        }
+    };
+
+    var showContext = function() {
+        try {
+            var presentation = document.getElementsByClassName('slides')[0];
+            removeClass(presentation, 'nocontext');
+        } catch (e) {}
+    };
+
+    var hideContext = function() {
+        try {
+            var presentation = document.getElementsByClassName('slides')[0];
+            addClass(presentation, 'nocontext');
+        } catch (e) {}
+    };
+
+    var processContext = function() {
+        if (hiddenContext) {
+            hideContext();
+        } else {
+            showContext();
+        }
+    };
+
+    var toggleContext = function() {
+        hiddenContext = !hiddenContext;
+        processContext();
+    };
+
+    var toggleBlank = function() {
+        blank_elem = document.getElementById('blank');
+
+        blank_elem.style.display = blanked ? 'none' : 'block';
+
+        blanked = !blanked;
+    };
+
+    var isModifierKey = function(keyCode) {
+        switch (keyCode) {
+            case 16: // shift
+            case 17: // ctrl
+            case 18: // alt
+            case 91: // command
+                return true;
+                break;
+            default:
+                return false;
+                break;
+        }
+    };
+
+    var checkModifierKeyUp = function(event) {
+        if (isModifierKey(event.keyCode)) {
+            modifierKeyDown = false;
+        }
+    };
+
+    var checkModifierKeyDown = function(event) {
+        if (isModifierKey(event.keyCode)) {
+            modifierKeyDown = true;
+        }
+    };
+
+    var handleBodyKeyDown = function(event) {
+        switch (event.keyCode) {
+            case 13: // Enter
+                if (overviewActive) {
+                    toggleOverview();
+                }
+                break;
+            case 27: // ESC
+                toggleOverview();
+                break;
+            case 37: // left arrow
+            case 33: // page up
+                prevSlide();
+                break;
+            case 39: // right arrow
+            case 32: // space
+            case 34: // page down
+                nextSlide();
+                break;
+            case 50: // 2
+                if (!modifierKeyDown) {
+                        showNotes();
+                }
+                break;
+            case 51: // 3
+                if (!modifierKeyDown && !overviewActive) {
+                    switch3D();
+                }
+                break;
+            case 190: // .
+            case 48: // 0
+            case 66: // b
+                if (!modifierKeyDown && !overviewActive) {
+                    toggleBlank();
+                }
+                break;
+            case 67: // c
+                if (!modifierKeyDown && !overviewActive) {
+                    toggleContext();
+                }
+                break;
+            case 69: // e
+                if (!modifierKeyDown && !overviewActive) {
+                    expandSlides();
+                }
+                break;
+            case 72: // h
+                showHelp();
+                break;
+            case 78: // n
+                if (!modifierKeyDown && !overviewActive) {
+                    showSlideNumbers();
+                }
+                break;
+            case 80: // p
+                if (!modifierKeyDown && !overviewActive) {
+                    showPresenterView();
+                }
+                break;
+            case 83: // s
+                if (!modifierKeyDown && !overviewActive) {
+                    showSlideSources();
+                }
+                break;
+            case 84: // t
+                showToc();
+                break;
+        }
+    };
+
+    var handleWheel = function(event) {
+        if (tocOpened || helpOpened || overviewActive) {
+            return;
+        }
+
+        var delta = 0;
+
+        if (!event) {
+            event = window.event;
+        }
+
+        if (event.wheelDelta) {
+            delta = event.wheelDelta/120;
+            if (window.opera) delta = -delta;
+        } else if (event.detail) {
+            delta = -event.detail/3;
+        }
+
+        if (delta && delta <0) {
+            nextSlide();
+        } else if (delta) {
+            prevSlide();
+        }
+    };
+
+    var addSlideClickListeners = function() {
+        for (var i=0; i < slides.length; i++) {
+            var slide = slides.item(i);
+            slide.num = i + 1;
+            slide.addEventListener('click', function(e) {
+                if (overviewActive) {
+                    currentSlideNo = this.num;
+                    toggleOverview();
+                    updateSlideClasses(true);
+                    e.preventDefault();
+                }
+                return false;
+            }, true);
+        }
+    };
+
+    var addRemoteWindowControls = function() {
+        window.addEventListener("message", function(e) {
+            if (e.data.indexOf("slide#") != -1) {
+                    currentSlideNo = Number(e.data.replace('slide#', ''));
+                    updateSlideClasses(false);
+            }
+        }, false);
+    };
+
+    var addTouchListeners = function() {
+        document.addEventListener('touchstart', function(e) {
+            touchStartX = e.touches[0].pageX;
+        }, false);
+        document.addEventListener('touchend', function(e) {
+            var pixelsMoved = touchStartX - e.changedTouches[0].pageX;
+            var SWIPE_SIZE = 150;
+            if (pixelsMoved > SWIPE_SIZE) {
+                nextSlide();
+            }
+            else if (pixelsMoved < -SWIPE_SIZE) {
+             prevSlide();
+            }
+        }, false);
+    };
+
+    var addTocLinksListeners = function() {
+        var toc = document.getElementById('toc');
+        if (toc) {
+            var tocLinks = toc.getElementsByTagName('a');
+            for (var i=0; i < tocLinks.length; i++) {
+                tocLinks.item(i).addEventListener('click', function(e) {
+                    currentSlideNo = Number(this.attributes['href'].value.replace('#slide', ''));
+                    updateSlideClasses(true);
+                    e.preventDefault();
+                }, true);
+            }
+        }
+    };
+
+    // initialize
+
+    (function() {
+        if (window.location.hash == "") {
+            currentSlideNo = 1;
+        } else if (window.location.hash.indexOf("#presenter") != -1) {
+            currentSlideNo = Number(window.location.hash.replace('#presenter', ''));
+            isPresenterView = true;
+            showingPresenterView = true;
+            presenterViewWin = window;
+            addClass(document.body, 'presenter_view');
+        } else {
+            currentSlideNo = Number(window.location.hash.replace('#slide', ''));
+        }
+
+        document.addEventListener('keyup', checkModifierKeyUp, false);
+        document.addEventListener('keydown', handleBodyKeyDown, false);
+        document.addEventListener('keydown', checkModifierKeyDown, false);
+        document.addEventListener('DOMMouseScroll', handleWheel, false);
+
+        window.onmousewheel = document.onmousewheel = handleWheel;
+        window.onresize = expandSlides;
+
+        for (var i = 0, el; el = slides[i]; i++) {
+            addClass(el, 'slide far-future');
+        }
+        updateSlideClasses(false);
+
+        // add support for finger events (filter it by property detection?)
+        addTouchListeners();
+
+        addTocLinksListeners();
+
+        addSlideClickListeners();
+
+        addRemoteWindowControls();
+    })();
+}
+
+    </script>
+    
+    
+    <!-- /Javascripts -->
+</head>
+<body>
+  <div id="blank"></div>
+  <div class="presentation">
+    <div id="current_presenter_notes">
+      <div id="presenter_note"></div>
+    </div>
+    <div class="slides">
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>pypeFLOW Tutorial</h1></header>
+            
+            
+            <section><img alt="escher--unbelievable-527581_1024_768.jpg" class="align-left" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAMABAADASIAAhEBAxEB/8QAHQABAAICAwEBAAAAAAAAAAAAAAcIBQYDBAkCAf/EAFMQAAEDAwMCBAQDBQUGBAMBEQECAwQFBhEAByESMQgTQVEUImFxMkKBCRUjUpEWM2KhsSRDcoLB0RclU/CSouEYNGNz [...]
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              1/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>What is pypeFLOW?</h1></header>
+            
+            
+            <section><p>What is pypeFLOW?  A toolkit to contruct data processing work flow</p>
+<p>Tracking data processing within the Python language</p>
+<img alt="pipelines.png" class="align-center" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAw4AAAMOCAYAAAC3QlFNAAAD8GlDQ1BJQ0MgUHJvZmlsZQAAKJGNVd1v21QUP4lvXKQWP6Cxjg4Vi69VU1u5GxqtxgZJk6XpQhq5zdgqpMl1bhpT1za2021Vn/YCbwz4A4CyBx6QeEIaDMT2su0BtElTQRXVJKQ9dNpAaJP2gqpwrq9Tu13GuJGvfznndz7v0TVAx1ea45hJGWDe8l01n5GPn5iWO1YhCc9BJ/RAp6Z7TrpcLgIuxoVH1sNfIcHeNwfa6/9zdVappwMknkJsVz19HvFpgJSpO64PIN5G+fAp30Hc8TziHS4miFhheJbjLMMzHB8POFPqKGKWi6TXtSriJcT9MzH5bAzzHIK1I08t6hq6zHpRdu2aYdJYuk9Q/881bzZa8Xr [...]
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              2/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Basic Objects</h1></header>
+            
+            
+            <section><p>data objects (defined in <tt class="docutils literal">pypeflow.data.*</tt>)</p>
+<p>task objects (defined in <tt class="docutils literal">pypeflow.task.*</tt>)</p>
+<p>workflow objects (defined in <tt class="docutils literal">pypeflow.controller.*</tt>)</p>
+<p>Analogous to Makefile</p>
+<pre><span class="nd">@PypeTask</span><span class="p">(</span> <span class="n">inputs</span> <span class="o">=</span> <span class="p">{</span><span class="s">'dep1'</span><span class="p">:</span><span class="n">dep1</span><span class="p">,</span> <span class="s">'dep2'</span><span class="p">:</span><span class="n">dep2</span><span class="p">},</span>
+           <span class="n">outputs</span> <span class="o">=</span> <span class="p">{</span><span class="s">'target'</span><span class="p">:</span><span class="n">target</span><span class="p">}</span> <span class="p">)</span>
+<span class="k">def</span> <span class="nf">do_something_to_get_the_target</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="o">...</span>
+</pre>
+<p>is equivalent to</p>
+<pre><span class="nf">target</span><span class="o">:</span> <span class="m">dep1 dep2</span>
+    do_something_to_get_the_target ...
+</pre>
+<ul class="simple">
+<li>Every PypeObjects is initialized by an URL and uniquely identifiable by it.</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              3/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Data Objects</h1></header>
+            
+            
+            <section><p><tt class="docutils literal">PypeLocalFile</tt> is an object representing a reference to local file</p>
+<pre><span class="n">f</span> <span class="o">=</span> <span class="n">PypeLocalFile</span><span class="p">(</span><span class="s">"file://localhost/home/jchin/test/test.txt"</span><span class="p">)</span>
+</pre>
+<p><tt class="docutils literal">f</tt> is a local file at <tt class="docutils literal">/home/jchin/test/test.txt</tt></p>
+<pre><span class="k">assert</span> <span class="n">f</span><span class="o">.</span><span class="n">URL</span> <span class="o">==</span> <span class="s">"file://localhost/home/jchin/test/test.txt"</span>
+<span class="k">assert</span> <span class="n">f</span><span class="o">.</span><span class="n">localFileName</span> <span class="o">==</span> <span class="s">"/home/jchin/test/test.txt"</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              4/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Basic Task Objects</h1></header>
+            
+            
+            <section><p><cite>PypeTaskBase`</cite> is the base class representing a <cite>task</cite> that converts some
+input files to some output files.</p>
+<p>Such <cite>task</cite> is typically constructed by using a decorator (e.g. <tt class="docutils literal">PypeTask</tt>)
+to wrap a function into a <tt class="docutils literal">PypeTaskBase</tt> objects (or objects of the
+subclasses of <tt class="docutils literal">PypeTaskBase</tt>)</p>
+<p>One needs to specify the input and output data objects within the decorator.
+The data objects can be referred within the task function that gets wrapped.</p>
+<p>Example:</p>
+<pre><span class="n">in_file1</span> <span class="o">=</span> <span class="n">PypeLocalFile</span><span class="p">(</span><span class="s">"file://localhost/home/jchin/test/test.txt"</span><span class="p">)</span>
+
+<span class="nd">@PypeTask</span><span class="p">(</span> <span class="n">inputs</span> <span class="o">=</span> <span class="p">{</span><span class="s">"in_file1"</span><span class="p">:</span> <span class="n">in_file1</span><span class="p">,</span> <span class="s">"in_file2"</span><span class="p">:</span> <span class="n">in_file2</span><span class="p">},</span>
+           <span class="n">outputs</span> <span class="o">=</span> <span class="p">{</span><span class="s">"out_file2"</span><span class="p">:</span> <span class="n">out_file2</span><span class="p">,</span> <span class="s">"out_file2"</span><span class="p">:</span> <span class="n">out_file2</span><span class="p">}</span> <span class="p">)</span>
+<span class="k">def</span> <span class="nf">task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_file1</span><span class="o">.</span><span class="n">localFileName</span> <span class="o">==</span> <span class="s">"/home/jchin/test/test.txt"</span>
+    <span class="c">#do somethings to generate out_file1 and out_file2</span>
+
+<span class="k">assert</span> <span class="n">task</span><span class="o">.</span><span class="n">in_file1</span> <span class="o">==</span> <span class="n">in_file1</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              5/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Task Decorator is Actually a Function</h1></header>
+            
+            
+            <section><p>If you don't like Python's decorator, you can generate tasks by calling the
+decorator function directly. This is useful to generate a number of tasks
+programmatically, e.g., using a loop to generate a number of tasks.</p>
+<pre><span class="n">tasks</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="k">def</span> <span class="nf">task_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="c"># do something</span>
+    <span class="k">pass</span>
+
+<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
+    <span class="c"># task_decorator is a function that takes a function as an input argument</span>
+    <span class="c"># and it returns a PypeTaskBase object</span>
+    <span class="n">task_decorator</span> <span class="o">=</span> <span class="n">PypeTask</span><span class="p">(</span><span class="n">inputs</span><span class="o">=</span><span class="p">{</span><span class="s">"f"</span><span class="p">:</span><span class="n">inputObjs</span><span class="p">[</span><span class="n">i</span><span class="p">]},</span>
+                              <span class="n">outputs</span><span class="o">=</span><span class="p">{</span><span class="s">"g"</span><span class="p">:</span><span class="n">outputObjs</span><span class="p">[</span><span class="n">i</span><span class="p">]},</span>
+                              <span class="n">URL</span><span class="o">=</span><span class="s">"task://localhost/task</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">i</span><span class="p">)</span>
+    <span class="n">t</span> <span class="o">=</span> <span class="n">task_decorator</span><span class="p">(</span><span class="n">task_func</span><span class="p">)</span>
+    <span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              6/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Different Kind of Task Objects</h1></header>
+            
+            
+            <section><p>Different <tt class="docutils literal">*Task</tt> decorators can wrap different kind of function (or
+objects, e.g shell script strings)</p>
+<blockquote>
+<ul class="simple">
+<li><tt class="docutils literal">PypeTask</tt>, wrap Python function, run as a Python function</li>
+<li><tt class="docutils literal">PypeShellTask</tt>, wrap a string as shell script, run as a Python function
+that executes the shell script</li>
+<li>other decorators for different purposes can be written as needed (e.g.
+<tt class="docutils literal">PypeSGETask</tt>)</li>
+</ul>
+</blockquote>
+<p>One can use <tt class="docutils literal">TaskType</tt> keyword argument in the decorator to control the
+output task types</p>
+<blockquote>
+<ul class="simple">
+<li>Simple task type: <tt class="docutils literal">PypeTaskBase</tt></li>
+<li>Task type that can be run concurrently within different threads: <tt class="docutils literal">PypeThreadTaskBase</tt></li>
+</ul>
+</blockquote></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              7/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Some Examples About Tasks I</h1></header>
+            
+            
+            <section><pre><span class="nd">@PypeTask</span><span class="p">(</span> <span class="o">...</span><span class="p">,</span> <span class="n">TaskType</span> <span class="o">=</span> <span class="n">PypeTaskBase</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">simple_py_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="o">...</span>
+
+<span class="nd">@PypeTask</span><span class="p">(</span> <span class="o">...</span><span class="p">,</span> <span class="n">TaskType</span> <span class="o">=</span> <span class="n">PypeThreadTaskBase</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">simple_py_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="o">...</span>
+
+<span class="n">t</span> <span class="o">=</span> <span class="n">PypeShellTask</span><span class="p">(</span> <span class="o">...</span><span class="p">,</span> <span class="n">TaskType</span> <span class="o">=</span> <span class="n">PypeTaskBase</span><span class="p">)(</span><span class="s">"#!/bin/bash; echo I am a task"</span><span class="p">)</span>
+
+<span class="n">t</span> <span class="o">=</span> <span class="n">PypeShellTask</span><span class="p">(</span> <span class="o">...</span><span class="p">,</span> <span class="n">TaskType</span> <span class="o">=</span> <span class="n">PypeThreadTaskBase</span><span class="p">)(</span><span class="s">"#!/bin/bash; echo I am a task"</span><span class="p">)</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              8/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Some Examples About Tasks II</h1></header>
+            
+            
+            <section><p>An instance of the <tt class="docutils literal">PythonTaskBase</tt> class is a "callable" object, namely,
+it implements <tt class="docutils literal">__call__</tt> method.  When it gets called, it will check the
+dependency of the input and output objects and make a decision whether to
+execute the wrapped function.</p>
+<pre><span class="n">task_decorator</span> <span class="o">=</span> <span class="n">PypeTask</span><span class="p">(</span><span class="n">inputs</span><span class="o">=</span><span class="p">{</span><span class="s">"f"</span><span class="p">:</span><span class="n">f</span><span class="p">},</span>
+                          <span class="n">outputs</span><span class="o">=</span><span class="p">{</span><span class="s">"g"</span><span class="p">:</span><span class="n">g</span><span class="p">})</span>
+<span class="k">def</span> <span class="nf">task_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="n">do_something</span><span class="p">()</span>
+
+<span class="c"># calling task_func() will return True and the original task_func is executed</span>
+<span class="c"># if f is newer than g</span>
+
+<span class="c"># assuming g does not exist</span>
+<span class="n">task_func</span><span class="p">()</span> <span class="c"># return True, do_something() is excuted, assuming g is generated</span>
+<span class="c"># run it again</span>
+<span class="n">task_func</span><span class="p">()</span> <span class="c"># return False, the original task_func is not called, since g is newer than f</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              9/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Workflow Objects</h1></header>
+            
+            
+            <section><p>A <tt class="docutils literal">PypeWorkflow</tt> object contains a collection of <tt class="docutils literal">PypeDataObjects</tt> and
+<tt class="docutils literal">PypeTaskBase</tt> objects. It calculates the dependency graph and executes all
+tasks with the correct order.</p>
+<ul class="simple">
+<li><tt class="docutils literal">PypeWorkflow</tt>: vanilla workflow class, one task at a time</li>
+<li><tt class="docutils literal">PypeThreadWorkflow</tt>: workflow class that can run tasks concurrently using
+Python thread library</li>
+<li><tt class="docutils literal">PypeMPWorkflow</tt>: workflow class that can run tasks concurrently using Python
+multiprocessing library</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              10/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Workflow Building Pattern</h1></header>
+            
+            
+            <section><p>Set up a workflow object</p>
+<pre><span class="n">wf</span> <span class="o">=</span> <span class="n">PypeWorkflow</span><span class="p">(</span><span class="o">...</span><span class="p">)</span>
+<span class="n">wf</span> <span class="o">=</span> <span class="n">PypeMPWorkflow</span><span class="p">(</span><span class="o">...</span><span class="p">)</span>
+</pre>
+<p>Set up a task</p>
+<blockquote>
+<ul class="simple">
+<li>Set up data objects</li>
+<li>Define a <tt class="docutils literal">task_func</tt> to be wrapped</li>
+<li>Use <tt class="docutils literal">PypeTask</tt> decorator to create the real <tt class="docutils literal">PypeTaskBase</tt> object</li>
+</ul>
+</blockquote>
+<p>Add the task into the workflow (The inputs and outputs will be added automatically)</p>
+<p>Set up more tasks and add them into the workflow (<tt class="docutils literal"><span class="pre">wf.addTasks([t1,t2,...])</span></tt>)</p>
+<p>Call <tt class="docutils literal">wf.refreshTargets(target_list)</tt> to execute the tasks (only task that does not
+satisfy the dependency constrain will be execute)</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              11/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Put It All Together</h1></header>
+            
+            
+            <section><p>Place holder for code demo</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              12/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Mutable Data Objects & State Objects</h1></header>
+            
+            
+            <section><p>Issue:</p>
+<blockquote>
+<ul class="simple">
+<li>Side effect: If a data object (e.g. various gff, cmp.h5 files) is
+both input and output, we can not use it to calculate dependency.</li>
+<li>Such file usually has some "internal states" that affect
+how tasks should be executed</li>
+</ul>
+</blockquote>
+<p>Solution</p>
+<blockquote>
+<ul class="simple">
+<li>Be explicit.</li>
+<li>introduce "mutableDataObjs" for a task indicating those data objects that a
+task can modified.  If an object is used as "mutableDataObjs", it is not used
+for calculating the task dependency.</li>
+<li>The standard "inputs" and "outputs" should be "immutable" objects within the
+scope of the workflow.</li>
+<li>Special state objects to keep track the states. The state objects are used as
+the input objects and/or output objects to control the task dependency</li>
+</ul>
+</blockquote></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              13/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Output Collision Detection</h1></header>
+            
+            
+            <section><p>The dependency graph as a direct acyclic graph helps to find
+independent tasks that can be run concurrently</p>
+<p>However, in the case that multiple tasks write to the same
+output file, we need to detect "output collision" and do not
+allow tasks that writes to the same to be run concurrently.</p>
+<p>Code snippet finding tasks that can be submitted</p>
+<pre><span class="n">jobsReadyToBeSubmitted</span> <span class="o">=</span> <span class="p">[]</span>
+
+<span class="k">for</span> <span class="n">URL</span><span class="p">,</span> <span class="n">taskObj</span><span class="p">,</span> <span class="n">tStatus</span> <span class="ow">in</span> <span class="n">sortedTaskList</span><span class="p">:</span>
+    <span class="n">prereqJobURLs</span> <span class="o">=</span> <span class="n">prereqJobURLMap</span><span class="p">[</span><span class="n">URL</span><span class="p">]</span>
+    <span class="n">outputCollision</span> <span class="o">=</span> <span class="bp">False</span>
+
+    <span class="k">for</span> <span class="n">dataObj</span> <span class="ow">in</span> <span class="n">taskObj</span><span class="o">.</span><span class="n">outputDataObjs</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="o">+</span> <span class="n">taskObj</span><span class="o">.</span><span class="n">mutableDataObjs</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
+        <span class="k">for</span> <span class="n">fromTaskObjURL</span><span class="p">,</span> <span class="n">activeDataObjURL</span> <span class="ow">in</span> <span class="n">activeDataObjs</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">dataObj</span><span class="o">.</span><span class="n">URL</span> <span class="o">==</span> <span class="n">activeDataObjURL</span> <span class="ow">and</span> <span class="n">taskObj</span><span class="o">.</span><span class="n">URL</span> <span class="o">!=</span> <span class="n">fromTaskObjURL</span><span class="p">:</span>
+                <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span> <span class="s">"output collision detected for data object:"</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">dataObj</span><span class="p">))</span>
+                <span class="n">outputCollision</span> <span class="o">=</span> <span class="bp">True</span>
+                <span class="k">break</span>
+
+    <span class="k">if</span> <span class="n">outputCollision</span><span class="p">:</span> <span class="c">#the task can not be executed</span>
+        <span class="k">continue</span>
+<span class="o">...</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              14/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Scatter-Gather Pattern</h1></header>
+            
+            
+            <section><p>Pattern:</p>
+<blockquote>
+<ul class="simple">
+<li>Start with a file</li>
+<li>Split it into a number of small files of the same type</li>
+<li>process them as processing the original file</li>
+<li>generate some partial results</li>
+<li>put partial results back into a single file</li>
+</ul>
+</blockquote>
+<p>Complexity</p>
+<blockquote>
+<ul class="simple">
+<li>Multiple input files / output files</li>
+<li>Chaining of scattered tasks</li>
+</ul>
+</blockquote></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              15/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Encapsulating Scattered Files</h1></header>
+            
+            
+            <section><p><tt class="docutils literal">PypeSplittableLocalFile</tt>: Represent a PypeData object that has two
+different local file representations:</p>
+<blockquote>
+<ul class="simple">
+<li>the whole file (could be a virtual one)</li>
+<li>the split files</li>
+</ul>
+</blockquote>
+<p>Such data object can have either a scatter task attached or a gather task
+attached.</p>
+<blockquote>
+<ul class="simple">
+<li>If a scatter task is attached, the task will be inserted to generate the
+scattered files.</li>
+<li>If a gather task is attached, the task will be inserted to generate the
+whole file.</li>
+<li>If neither scatter task nor gather task is specified, then the file is
+mostly like intermediate data.  Namely, the whole file representation is
+not used any place else.</li>
+<li>One can not specify scatter task and gather task for the same object since it
+will create a loop.</li>
+</ul>
+</blockquote></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              16/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Generate Scattered Tasks</h1></header>
+            
+            
+            <section><p>Special decorator to generate a set of "scattered tasks":</p>
+<blockquote>
+<ul class="simple">
+<li>Explicitly generating a collection of tasks that work on the split files</li>
+<li>Special task decorators to generate the collection:</li>
+</ul>
+<blockquote>
+<p><tt class="docutils literal">PypeScatteredTasks</tt>: a decorator that takes a function as an input and generate
+a collection of tasks that does the real work (alias as <tt class="docutils literal">getPypeScatteredTasks</tt>
+to be used as a regular function)</p>
+<p><tt class="docutils literal">PypeScatteredTasks/getPypeScatteredTasks</tt> returns a <tt class="docutils literal">PypeTaskCollection</tt> object
+which contains all the sub-tasks / scatter tasks / gather tasks.</p>
+</blockquote>
+</blockquote>
+<p>When a <tt class="docutils literal">PypeTaskCollection</tt> object is added into a workflow, the real sub-tasks are
+added automatically.</p></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              17/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>FOFN Mapper</h1></header>
+            
+            
+            <section><p>A special decorator/function that takes a FOFN (file of file names) as the main
+input and generate the tasks with the inputs are the files specified in
+the FOFN. ( This is different from a "scatter" task which keeps the file
+type the same. )</p>
+<pre><span class="k">def</span> <span class="nf">outTemplate</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span>
+    <span class="k">return</span> <span class="n">fn</span> <span class="o">+</span> <span class="s">".out"</span>
+
+<span class="k">def</span> <span class="nf">task</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargv</span><span class="p">):</span>
+    <span class="n">in_f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_f</span>
+    <span class="n">out_f</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">out_f</span>
+    <span class="c">#do something with in_f, and write something to out_f</span>
+
+<span class="n">tasks</span> <span class="o">=</span> <span class="n">getPypeFOFNMapTasks</span><span class="p">(</span><span class="n">FOFNFileName</span> <span class="o">=</span> <span class="s">"./file.fofn"</span><span class="p">,</span>
+        <span class="n">outTemplateFunc</span> <span class="o">=</span> <span class="n">outTemplate</span><span class="p">,</span>
+        <span class="n">TaskType</span> <span class="o">=</span> <span class="n">PypeThreadTaskBase</span><span class="p">,</span>
+        <span class="n">parameters</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">nSlots</span> <span class="o">=</span> <span class="mi">8</span><span class="p">))(</span> <span class="n">alignTask</span> <span class="p">)</span>
+
+<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">tasks</span><span class="p">:</span><span class="c"># You can run the tasks in sequential</span>
+    <span class="n">t</span><span class="p">()</span>
+
+<span class="n">wf</span> <span class="o">=</span> <span class="n">PypeThreadWorkflow</span><span class="p">()</span> <span class="c"># or run them in parallel using thread or multiprocessing</span>
+<span class="n">wf</span><span class="o">.</span><span class="n">CONCURRENT_THREAD_ALLOWED</span> <span class="o">=</span> <span class="n">nproc</span>
+<span class="n">wf</span><span class="o">.</span><span class="n">MAX_NUMBER_TASK_SLOT</span> <span class="o">=</span> <span class="n">nproc</span>
+<span class="n">wf</span><span class="o">.</span><span class="n">addTasks</span><span class="p">(</span><span class="n">tasks</span><span class="p">)</span>
+<span class="n">wf</span><span class="o">.</span><span class="n">refreshTargets</span><span class="p">(</span><span class="n">exitOnFailure</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              18/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Query Workflow Objects</h1></header>
+            
+            
+            <section><p>Workflows has a canonical RDF representation. One can query the DAG using SPARQ</p>
+<p>For example, give a workflow DAG, what are the workflow inputs and outputs</p>
+<pre><span class="nd">@property</span>
+<span class="k">def</span> <span class="nf">inputDataObjects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+    <span class="n">graph</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_RDFGraph</span>
+    <span class="n">inputObjs</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dataObjects</span><span class="p">:</span>
+        <span class="n">r</span> <span class="o">=</span> <span class="n">graph</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s">'SELECT ?o WHERE {<</span><span class="si">%s</span><span class="s">> pype:prereq ?o .  }'</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">URL</span><span class="p">,</span>
+                                                       <span class="n">initNs</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">pype</span><span class="o">=</span><span class="n">pypeNS</span><span class="p">))</span>
+        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
+            <span class="n">inputObjs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">inputObjs</span>
+
+
+<span class="n">workflow</span><span class="o">.</span><span class="n">inputDataObjects</span> <span class="c"># <- the input data objects of the whole workflow</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              19/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Update Workflow Objects</h1></header>
+            
+            
+            <section><p>We can redirect the inputs and outputs to different underlying files using
+<tt class="docutils literal">workflow.updateURL()</tt></p>
+<pre><span class="k">def</span> <span class="nf">updateURL</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">oldURL</span><span class="p">,</span> <span class="n">newURL</span><span class="p">):</span>
+    <span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pypeObjects</span><span class="p">[</span><span class="n">oldURL</span><span class="p">]</span>
+    <span class="n">obj</span><span class="o">.</span><span class="n">_updateURL</span><span class="p">(</span><span class="n">newURL</span><span class="p">)</span>
+    <span class="bp">self</span><span class="o">.</span><span class="n">_pypeObjects</span><span class="p">[</span><span class="n">newURL</span><span class="p">]</span> <span class="o">=</span> <span class="n">obj</span>
+    <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pypeObjects</span><span class="p">[</span><span class="n">oldURL</span><span class="p">]</span>
+</pre>
+<p>It is possible to build a workflow structure and set up the real inputs
+and outputs later. This is useful to setup the workflow input/output from
+command line options and/or an XML configuration file.</p>
+<pre><span class="k">for</span> <span class="n">o</span> <span class="ow">in</span> <span class="n">workflow</span><span class="o">.</span><span class="n">inputDataObjects</span><span class="p">:</span>
+    <span class="k">if</span> <span class="n">o</span><span class="o">.</span><span class="n">URL</span> <span class="o">==</span> <span class="s">"files://virtual/xyz"</span><span class="p">:</span>
+        <span class="n">realInputFile</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+        <span class="n">o</span><span class="o">.</span><span class="n">updateURL</span><span class="p">(</span><span class="s">"files://localhost</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">realInputFile</span><span class="p">)</span>
+<span class="o">...</span>
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              20/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>Debugging Support</h1></header>
+            
+            
+            <section><p>graphviz dot output</p>
+<p>logging</p>
+<p>test coverage about 70%, 22 tests now</p>
+<p>The whole thing is about 2000 LOC (without counting
+testing code.):</p>
+<pre class="literal-block">
+ $wc src/pypeflow/*.py
+
+   0       0       0 src/pypeflow/__init__.py
+ 148     539    4428 src/pypeflow/common.py
+ 744    2603   28166 src/pypeflow/controller.py
+ 313    1140   11096 src/pypeflow/data.py
+ 814    2645   28005 src/pypeflow/task.py
+2019    6927   71695 total
+</pre></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              21/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+      <!-- slide source: pypeFLOW_tutorial.rst -->
+      <div class="slide-wrapper">
+        <div class="slide">
+          <div class="inner">
+            
+            <header><h1>What's Next?</h1></header>
+            
+            
+            <section><ul class="simple">
+<li>I will use this PypeFLOW for producing better reproducible
+bioinformatics analysis developed with in Python/IPython notebook</li>
+<li>Some new features:<ul>
+<li>Supporting data object in memory? mmap file? numpy array?</li>
+<li>Remote data objects</li>
+<li>HDF5 data sets as native data objects</li>
+<li>direct python function execution (through IPython parallel or Pyro like RPC call)</li>
+</ul>
+</li>
+<li>Similar framework for streaming data processing rather than batch data
+processing</li>
+</ul></section>
+            
+          </div>
+          <div class="presenter_notes">
+            <header><h1>Presenter Notes</h1></header>
+            <section>
+            
+            </section>
+          </div>
+          <footer>
+            
+            <aside class="source">
+              Source: <a href="pypeFLOW_tutorial.rst">pypeFLOW_tutorial.rst</a>
+            </aside>
+            
+            <aside class="page_number">
+              22/22
+            </aside>
+          </footer>
+        </div>
+      </div>
+      
+    </div>
+  </div>
+  
+  <div id="toc" class="sidebar hidden">
+    <h2>Table of Contents</h2>
+    <table>
+      <caption>Table of Contents</caption>
+      
+      <tr id="toc-row-1">
+        <th><a href="#slide1">pypeFLOW Tutorial</a></th>
+        <td><a href="#slide1">1</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-2">
+        <th><a href="#slide2">What is pypeFLOW?</a></th>
+        <td><a href="#slide2">2</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-3">
+        <th><a href="#slide3">Basic Objects</a></th>
+        <td><a href="#slide3">3</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-4">
+        <th><a href="#slide4">Data Objects</a></th>
+        <td><a href="#slide4">4</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-5">
+        <th><a href="#slide5">Basic Task Objects</a></th>
+        <td><a href="#slide5">5</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-6">
+        <th><a href="#slide6">Task Decorator is Actually a Function</a></th>
+        <td><a href="#slide6">6</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-7">
+        <th><a href="#slide7">Different Kind of Task Objects</a></th>
+        <td><a href="#slide7">7</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-8">
+        <th><a href="#slide8">Some Examples About Tasks I</a></th>
+        <td><a href="#slide8">8</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-9">
+        <th><a href="#slide9">Some Examples About Tasks II</a></th>
+        <td><a href="#slide9">9</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-10">
+        <th><a href="#slide10">Workflow Objects</a></th>
+        <td><a href="#slide10">10</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-11">
+        <th><a href="#slide11">Workflow Building Pattern</a></th>
+        <td><a href="#slide11">11</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-12">
+        <th><a href="#slide12">Put It All Together</a></th>
+        <td><a href="#slide12">12</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-13">
+        <th><a href="#slide13">Mutable Data Objects & State Objects</a></th>
+        <td><a href="#slide13">13</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-14">
+        <th><a href="#slide14">Output Collision Detection</a></th>
+        <td><a href="#slide14">14</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-15">
+        <th><a href="#slide15">Scatter-Gather Pattern</a></th>
+        <td><a href="#slide15">15</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-16">
+        <th><a href="#slide16">Encapsulating Scattered Files</a></th>
+        <td><a href="#slide16">16</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-17">
+        <th><a href="#slide17">Generate Scattered Tasks</a></th>
+        <td><a href="#slide17">17</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-18">
+        <th><a href="#slide18">FOFN Mapper</a></th>
+        <td><a href="#slide18">18</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-19">
+        <th><a href="#slide19">Query Workflow Objects</a></th>
+        <td><a href="#slide19">19</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-20">
+        <th><a href="#slide20">Update Workflow Objects</a></th>
+        <td><a href="#slide20">20</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-21">
+        <th><a href="#slide21">Debugging Support</a></th>
+        <td><a href="#slide21">21</a></td>
+      </tr>
+      
+      
+      <tr id="toc-row-22">
+        <th><a href="#slide22">What's Next?</a></th>
+        <td><a href="#slide22">22</a></td>
+      </tr>
+      
+      
+    </table>
+  </div>
+  
+  <div id="help" class="sidebar hidden">
+    <h2>Help</h2>
+    <table>
+      <caption>Help</caption>
+      <tr>
+        <th>Table of Contents</th>
+        <td>t</td>
+      </tr>
+      <tr>
+        <th>Exposé</th>
+        <td>ESC</td>
+      </tr>
+      <tr>
+        <th>Full screen slides</th>
+        <td>e</td>
+      </tr>
+      <tr>
+        <th>Presenter View</th>
+        <td>p</td>
+      </tr>
+      <tr>
+        <th>Source Files</th>
+        <td>s</td>
+      </tr>
+      <tr>
+        <th>Slide Numbers</th>
+        <td>n</td>
+      </tr>
+      <tr>
+        <th>Toggle screen blanking</th>
+        <td>b</td>
+      </tr>
+      <tr>
+        <th>Show/hide slide context</th>
+        <td>c</td>
+      </tr>
+      <tr>
+        <th>Notes</th>
+        <td>2</td>
+      </tr>
+      <tr>
+        <th>Help</th>
+        <td>h</td>
+      </tr>
+    </table>
+  </div>
+  <script>main()</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/pypeFLOW/presentation/pypeFLOW_tutorial.rst b/pypeFLOW/presentation/pypeFLOW_tutorial.rst
new file mode 100644
index 0000000..d01addd
--- /dev/null
+++ b/pypeFLOW/presentation/pypeFLOW_tutorial.rst
@@ -0,0 +1,505 @@
+
+pypeFLOW Tutorial
+=================
+
+.. image:: escher--unbelievable-527581_1024_768.jpg
+   :scale: 40%
+   :align: left
+
+-----------------
+
+What is pypeFLOW?
+-----------------
+
+What is pypeFLOW?  A toolkit to contruct data processing work flow
+
+Tracking data processing within the Python language
+
+.. image:: pipelines.png
+   :scale: 70 %
+   :align: center
+
+-----------------
+
+Basic Objects
+-------------
+
+data objects (defined in ``pypeflow.data.*``)
+
+task objects (defined in ``pypeflow.task.*``)
+
+workflow objects (defined in ``pypeflow.controller.*``)
+
+Analogous to Makefile
+
+.. code-block:: python
+    
+    @PypeTask( inputs = {'dep1':dep1, 'dep2':dep2},
+               outputs = {'target':target} )
+    def do_something_to_get_the_target(self, *argv, **kwargv):
+        ...
+
+is equivalent to
+
+.. code-block:: make
+
+    target: dep1 dep2
+        do_something_to_get_the_target ...
+
+* Every PypeObjects is initialized by an URL and uniquely identifiable by it. 
+
+---------------------
+
+Data Objects
+------------
+
+``PypeLocalFile`` is an object representing a reference to local file
+
+.. code-block:: python
+
+    f = PypeLocalFile("file://localhost/home/jchin/test/test.txt")
+
+``f`` is a local file at ``/home/jchin/test/test.txt``
+
+.. code-block:: python
+
+    assert f.URL == "file://localhost/home/jchin/test/test.txt"
+    assert f.localFileName == "/home/jchin/test/test.txt"
+
+
+------------------------
+
+Basic Task Objects
+------------------
+
+`PypeTaskBase`` is the base class representing a `task` that converts some 
+input files to some output files. 
+
+Such `task` is typically constructed by using a decorator (e.g. ``PypeTask``)
+to wrap a function into a ``PypeTaskBase`` objects (or objects of the 
+subclasses of ``PypeTaskBase``)
+
+One needs to specify the input and output data objects within the decorator.
+The data objects can be referred within the task function that gets wrapped.
+
+Example:
+
+.. code-block:: python
+    
+    in_file1 = PypeLocalFile("file://localhost/home/jchin/test/test.txt")
+
+    @PypeTask( inputs = {"in_file1": in_file1, "in_file2": in_file2},
+               outputs = {"out_file2": out_file2, "out_file2": out_file2} )
+    def task(self, *argv, **kwargv):
+        assert self.in_file1.localFileName == "/home/jchin/test/test.txt"
+        #do somethings to generate out_file1 and out_file2
+        
+    assert task.in_file1 == in_file1
+
+------------------------
+
+Task Decorator is Actually a Function
+-------------------------------------
+
+If you don't like Python's decorator, you can generate tasks by calling the
+decorator function directly. This is useful to generate a number of tasks 
+programmatically, e.g., using a loop to generate a number of tasks. 
+
+.. code-block:: python
+
+    tasks = []
+    def task_func(self, *argv, **kwargv):
+        # do something
+        pass
+
+    for i in range(10):
+        # task_decorator is a function that takes a function as an input argument
+        # and it returns a PypeTaskBase object 
+        task_decorator = PypeTask(inputs={"f":inputObjs[i]},
+                                  outputs={"g":outputObjs[i]},
+                                  URL="task://localhost/task%s" % i) 
+        t = task_decorator(task_func)
+        tasks.append(t)
+
+-----------------------
+
+Different Kind of Task Objects 
+------------------------------
+
+Different ``*Task`` decorators can wrap different kind of function (or
+objects, e.g shell script strings)
+
+    - ``PypeTask``, wrap Python function, run as a Python function
+
+    - ``PypeShellTask``, wrap a string as shell script, run as a Python function
+      that executes the shell script
+
+    - other decorators for different purposes can be written as needed (e.g. 
+      ``PypeSGETask``)
+
+One can use ``TaskType`` keyword argument in the decorator to control the
+output task types
+
+    - Simple task type: ``PypeTaskBase``
+
+    - Task type that can be run concurrently within different threads: ``PypeThreadTaskBase``
+
+    
+-----------------------
+
+Some Examples About Tasks I
+---------------------------
+
+.. code-block:: python
+
+    @PypeTask( ..., TaskType = PypeTaskBase)
+    def simple_py_func(self, *argv, **kwargv):
+        ...
+
+    @PypeTask( ..., TaskType = PypeThreadTaskBase)
+    def simple_py_func(self, *argv, **kwargv):
+        ...
+
+    t = PypeShellTask( ..., TaskType = PypeTaskBase)("#!/bin/bash; echo I am a task")
+
+    t = PypeShellTask( ..., TaskType = PypeThreadTaskBase)("#!/bin/bash; echo I am a task")
+
+-----------------------
+
+Some Examples About Tasks II
+----------------------------
+
+An instance of the ``PythonTaskBase`` class is a "callable" object, namely, 
+it implements ``__call__`` method.  When it gets called, it will check the 
+dependency of the input and output objects and make a decision whether to 
+execute the wrapped function.
+
+.. code-block:: python
+
+    task_decorator = PypeTask(inputs={"f":f},
+                              outputs={"g":g}) 
+    def task_func(self, *argv, **kwargv):
+        do_something()
+
+    # calling task_func() will return True and the original task_func is executed
+    # if f is newer than g
+
+    # assuming g does not exist
+    task_func() # return True, do_something() is excuted, assuming g is generated
+    # run it again
+    task_func() # return False, the original task_func is not called, since g is newer than f
+
+
+    
+-----------------------
+
+Workflow Objects 
+----------------
+
+A ``PypeWorkflow`` object contains a collection of ``PypeDataObjects`` and
+``PypeTaskBase`` objects. It calculates the dependency graph and executes all
+tasks with the correct order.
+
+* ``PypeWorkflow``: vanilla workflow class, one task at a time
+* ``PypeThreadWorkflow``: workflow class that can run tasks concurrently using 
+  Python thread library
+* ``PypeMPWorkflow``: workflow class that can run tasks concurrently using Python
+  multiprocessing library
+
+-----------------------
+
+Workflow Building Pattern  
+-------------------------
+
+Set up a workflow object 
+
+.. code-block:: python
+
+    wf = PypeWorkflow(...)
+    wf = PypeMPWorkflow(...)
+
+Set up a task
+
+    - Set up data objects
+    - Define a ``task_func`` to be wrapped
+    - Use ``PypeTask`` decorator to create the real ``PypeTaskBase`` object
+
+Add the task into the workflow (The inputs and outputs will be added automatically)
+
+Set up more tasks and add them into the workflow (``wf.addTasks([t1,t2,...])``)
+
+Call ``wf.refreshTargets(target_list)`` to execute the tasks (only task that does not
+satisfy the dependency constrain will be execute)
+
+-----------------------
+
+Put It All Together
+-------------------
+
+`Code Demo <http://localhost/place_holder>`_.
+
+`Embarrassing Parallelization Workflow <https://localhost/plact_holder>`_. 
+
+------------------------
+
+Mutable Data Objects & State Objects
+------------------------------------
+
+Issue:
+
+  * Side effect: If a data object (e.g. various gff, cmp.h5 files) is 
+    both input and output, we can not use it to calculate dependency. 
+  * Such file usually has some "internal states" that affect
+    how tasks should be executed
+
+Solution
+
+  * Be explicit.
+  * introduce "mutableDataObjs" for a task indicating those data objects that a 
+    task can modified.  If an object is used as "mutableDataObjs", it is not used
+    for calculating the task dependency.
+  * The standard "inputs" and "outputs" should be "immutable" objects within the
+    scope of the workflow.
+  * Special state objects to keep track the states. The state objects are used as
+    the input objects and/or output objects to control the task dependency (see 
+    `Example <http://localhost/place_holder>`_)
+
+-------------------------
+
+Output Collision Detection
+--------------------------
+
+The dependency graph as a direct acyclic graph helps to find 
+independent tasks that can be run concurrently
+
+However, in the case that multiple tasks write to the same
+output file, we need to detect "output collision" and do not
+allow tasks that writes to the same to be run concurrently.
+
+Code snippet finding tasks that can be submitted
+
+.. code-block:: python
+
+    jobsReadyToBeSubmitted = []
+
+    for URL, taskObj, tStatus in sortedTaskList:
+        prereqJobURLs = prereqJobURLMap[URL]
+        outputCollision = False
+
+        for dataObj in taskObj.outputDataObjs.values() + taskObj.mutableDataObjs.values():
+            for fromTaskObjURL, activeDataObjURL in activeDataObjs:
+                if dataObj.URL == activeDataObjURL and taskObj.URL != fromTaskObjURL:
+                    logger.debug( "output collision detected for data object:"+str(dataObj))
+                    outputCollision = True
+                    break
+        
+        if outputCollision: #the task can not be executed
+            continue
+    ...
+
+
+-------------------------
+
+Scatter-Gather Pattern
+----------------------
+
+Pattern:
+
+    - Start with a file  
+   
+    - Split it into a number of small files of the same type 
+   
+    - process them as processing the original file 
+   
+    - generate some partial results 
+    
+    - put partial results back into a single file 
+
+Complexity
+   
+    - Multiple input files / output files 
+
+    - Chaining of scattered tasks
+
+------------------------------------
+
+Encapsulating Scattered Files 
+-----------------------------
+
+``PypeSplittableLocalFile``: Represent a PypeData object that has two
+different local file representations:
+
+   - the whole file (could be a virtual one)
+   - the split files
+
+Such data object can have either a scatter task attached or a gather task
+attached.
+
+   - If a scatter task is attached, the task will be inserted to generate the
+     scattered files.
+
+   - If a gather task is attached, the task will be inserted to generate the
+     whole file.
+
+   - If neither scatter task nor gather task is specified, then the file is
+     mostly like intermediate data.  Namely, the whole file representation is
+     not used any place else.
+
+   - One can not specify scatter task and gather task for the same object since it
+     will create a loop.
+
+
+
+
+------------------------------------
+
+Generate Scattered Tasks
+------------------------
+    
+Special decorator to generate a set of "scattered tasks":
+    
+    - Explicitly generating a collection of tasks that work on the split files
+
+    - Special task decorators to generate the collection:
+
+     ``PypeScatteredTasks``: a decorator that takes a function as an input and generate
+     a collection of tasks that does the real work (alias as ``getPypeScatteredTasks``
+     to be used as a regular function)
+    
+     ``PypeScatteredTasks/getPypeScatteredTasks`` returns a ``PypeTaskCollection`` object
+     which contains all the sub-tasks / scatter tasks / gather tasks.
+
+When a ``PypeTaskCollection`` object is added into a workflow, the real sub-tasks are 
+added automatically.
+
+`Example / Demo <http://localhost/place_holder>`_
+
+-------------------------
+
+FOFN Mapper
+-----------
+
+A special decorator/function that takes a FOFN (file of file names) as the main
+input and generate the tasks with the inputs are the files specified in
+the FOFN. ( This is different from a "scatter" task which keeps the file 
+type the same. ) 
+
+.. code-block:: python
+
+    def outTemplate(fn):
+        return fn + ".out"
+
+    def task(self, *argv, **kwargv):
+        in_f = self.in_f
+        out_f = self.out_f
+        #do something with in_f, and write something to out_f
+
+    tasks = getPypeFOFNMapTasks(FOFNFileName = "./file.fofn", 
+            outTemplateFunc = outTemplate, 
+            TaskType = PypeThreadTaskBase,
+            parameters = dict(nSlots = 8))( alignTask )
+
+    for t in tasks:# You can run the tasks in sequential 
+        t()
+
+    wf = PypeThreadWorkflow() # or run them in parallel using thread or multiprocessing
+    wf.CONCURRENT_THREAD_ALLOWED = nproc 
+    wf.MAX_NUMBER_TASK_SLOT = nproc
+    wf.addTasks(tasks)
+    wf.refreshTargets(exitOnFailure=False)
+
+
+---------------------------------
+
+Query Workflow Objects
+----------------------
+
+Workflows has a canonical RDF representation. One can query the DAG using SPARQ
+
+For example, give a workflow DAG, what are the workflow inputs and outputs
+
+.. code-block:: python
+
+    @property
+    def inputDataObjects(self):
+        graph = self._RDFGraph
+        inputObjs = []
+        for obj in self.dataObjects:
+            r = graph.query('SELECT ?o WHERE {<%s> pype:prereq ?o .  }' % obj.URL, 
+                                                           initNs=dict(pype=pypeNS))
+            if len(r) == 0:
+                inputObjs.append(obj)
+        return inputObjs
+
+
+    workflow.inputDataObjects # <- the input data objects of the whole workflow
+
+----------------------------
+
+Update Workflow Objects
+-----------------------
+
+We can redirect the inputs and outputs to different underlying files using
+``workflow.updateURL()``
+
+.. code-block:: python
+
+    def updateURL(self, oldURL, newURL):
+        obj = self._pypeObjects[oldURL]
+        obj._updateURL(newURL)
+        self._pypeObjects[newURL] = obj
+        del self._pypeObjects[oldURL]
+
+It is possible to build a workflow structure and set up the real inputs
+and outputs later. This is useful to setup the workflow input/output from
+command line options and/or an XML configuration file.
+
+.. code-block:: python
+
+    for o in workflow.inputDataObjects: 
+        if o.URL == "files://virtual/xyz":
+            realInputFile = os.path.abspath(sys.argv[1])
+            o.updateURL("files://localhost%s" % realInputFile)
+    ...
+
+-------------------------
+
+Debugging Support
+-----------------
+
+graphviz dot output
+
+logging
+
+test coverage about 70%, 22 tests now
+
+The whole thing is about 2000 LOC (without counting
+testing code.)::
+
+    $wc src/pypeflow/*.py
+
+      0       0       0 src/pypeflow/__init__.py
+    148     539    4428 src/pypeflow/common.py
+    744    2603   28166 src/pypeflow/controller.py
+    313    1140   11096 src/pypeflow/data.py
+    814    2645   28005 src/pypeflow/task.py
+   2019    6927   71695 total
+
+----------------------------
+
+What's Next?
+------------
+
+* I will use this PypeFLOW for producing better reproducible 
+  bioinformatics analysis developed with in Python/IPython notebook
+
+* Some new features:
+
+  - Supporting data object in memory? mmap file? numpy array?
+  - Remote data objects
+  - HDF5 data sets as native data objects
+  - direct python function execution (through IPython parallel or Pyro like RPC call)
+
+* Similar framework for streaming data processing rather than batch data
+  processing
+
diff --git a/falcon_kit/mains/__init__.py b/pypeFLOW/pwatcher/__init__.py
similarity index 100%
copy from falcon_kit/mains/__init__.py
copy to pypeFLOW/pwatcher/__init__.py
diff --git a/pypeFLOW/pwatcher/fs_based.py b/pypeFLOW/pwatcher/fs_based.py
new file mode 100755
index 0000000..7359919
--- /dev/null
+++ b/pypeFLOW/pwatcher/fs_based.py
@@ -0,0 +1,797 @@
+#!/usr/bin/env python2.7
+"""Filesytem-based process-watcher.
+
+This is meant to be part of a 2-process system. For now, let's call these processes the Definer and the Watcher.
+* The Definer creates a graph of tasks and starts a resolver loop, like pypeflow. It keeps a Waiting list, a Running list, and a Done list. It then communicates with the Watcher.
+* The Watcher has 3 basic functions in its API.
+  1. Spawn jobs.
+  2. Kill jobs.
+  3. Query jobs.
+1. Spawning jobs
+The job definition includes the script, how to run it (locally, qsub, etc.), and maybe some details (unique-id, run-directory). The Watcher then:
+  * wraps the script without something to update a heartbeat-file periodically,
+  * spawns each job (possibly as a background process locally),
+  * and records info (including PID or qsub-name) in a persistent database.
+2. Kill jobs.
+Since it has a persistent database, it can always kill any job, upon request.
+3. Query jobs.
+Whenever requested, it can poll the filesystem for all or any jobs, returning the subset of completed jobs. (For NFS efficiency, all the job-exit sentinel files can be in the same directory, along with the heartbeats.)
+
+The Definer would call the Watcher to spawn tasks, and then periodically to poll them. Because these are both now single-threaded, the Watcher *could* be a function within the Definer, or a it could be blocking call to a separate process. With proper locking on the database, users could also query the same executable as a separate process.
+
+Caching/timestamp-checking would be done in the Definer, flexibly specific to each Task.
+
+Eventually, the Watcher could be in a different programming language. Maybe perl. (In bash, a background heartbeat gets is own process group, so it can be hard to clean up.)
+"""
+try:
+    from shlex import quote
+except ImportError:
+    from pipes import quote
+import collections
+import contextlib
+import glob
+import json
+import logging
+import os
+import pprint
+import re
+import signal
+import subprocess
+import sys
+import time
+import traceback
+
+log = logging.getLogger(__name__)
+
+HEARTBEAT_RATE_S = 10.0
+ALLOWED_SKEW_S = 120.0
+STATE_FN = 'state.py'
+Job = collections.namedtuple('Job', ['jobid', 'cmd', 'rundir', 'options'])
+MetaJob = collections.namedtuple('MetaJob', ['job', 'lang_exe'])
+lang_python_exe = sys.executable
+lang_bash_exe = '/bin/bash'
+
+ at contextlib.contextmanager
+def cd(newdir):
+    prevdir = os.getcwd()
+    log.debug('CD: %r <- %r' %(newdir, prevdir))
+    os.chdir(os.path.expanduser(newdir))
+    try:
+        yield
+    finally:
+        log.debug('CD: %r -> %r' %(newdir, prevdir))
+        os.chdir(prevdir)
+
+class MetaJobClass(object):
+    ext = {
+        lang_python_exe: '.py',
+        lang_bash_exe: '.bash',
+    }
+    def get_wrapper(self):
+        return 'run-%s%s' %(self.mj.job.jobid, self.ext[self.mj.lang_exe])
+    def get_sentinel(self):
+        return 'exit-%s' %self.mj.job.jobid # in watched dir
+    def get_heartbeat(self):
+        return 'heartbeat-%s' %self.mj.job.jobid # in watched dir
+    def get_pid(self):
+        return self.mj.pid
+    def kill(self, pid, sig):
+        stored_pid = self.get_pid()
+        if not pid:
+            pid = stored_pid
+            log.info('Not passed a pid to kill. Using stored pid:%s' %pid)
+        if pid and stored_pid:
+            if pid != stored_pid:
+                log.error('pid:%s != stored_pid:%s' %(pid, stored_pid))
+        os.kill(pid, sig)
+    def __init__(self, mj):
+        self.mj = mj
+class State(object):
+    def get_state_fn(self):
+        return os.path.join(self.__directory, STATE_FN)
+    def get_directory(self):
+        return self.__directory
+    def get_directory_wrappers(self):
+        return os.path.join(self.__directory, 'wrappers')
+    def get_directory_heartbeats(self):
+        return os.path.join(self.__directory, 'heartbeats')
+    def get_directory_exits(self):
+        return os.path.join(self.__directory, 'exits')
+    def get_directory_jobs(self):
+        # B/c the other directories can get big, we put most per-job data here, under each jobid.
+        return os.path.join(self.__directory, 'jobs')
+    def get_directory_job(self, jobid):
+        return os.path.join(self.get_directory_jobs(), jobid)
+    def submit_background(self, bjob):
+        """Run job in background.
+        Record in state.
+        """
+        self.top['jobs'][bjob.mjob.job.jobid] = bjob
+        jobid = bjob.mjob.job.jobid
+        mji = MetaJobClass(bjob.mjob)
+        script_fn = os.path.join(self.get_directory_wrappers(), mji.get_wrapper())
+        exe = bjob.mjob.lang_exe
+        run_dir = self.get_directory_job(jobid)
+        makedirs(run_dir)
+        with cd(run_dir):
+            bjob.submit(self, exe, script_fn) # Can raise
+        log.info('Submitted backgroundjob=%s'%repr(bjob))
+        self.top['jobids_submitted'].append(jobid)
+    def get_mji(self, jobid):
+        mjob = self.top['jobs'][jobid].mjob
+        return MetaJobClass(mjob)
+    def get_bjob(self, jobid):
+        return self.top['jobs'][jobid]
+    def get_bjobs(self):
+        return self.top['jobs']
+    def get_mjobs(self):
+        return {jobid: bjob.mjob for jobid, bjob in self.top['jobs'].iteritems()}
+    def add_deleted_jobid(self, jobid):
+        self.top['jobids_deleted'].append(jobid)
+    def serialize(state):
+        return pprint.pformat(state.top)
+    @staticmethod
+    def deserialize(directory, content):
+        state = State(directory)
+        state.top = eval(content)
+        state.content_prev = content
+        return state
+    @staticmethod
+    def create(directory):
+        state = State(directory)
+        makedirs(state.get_directory_wrappers())
+        makedirs(state.get_directory_heartbeats())
+        makedirs(state.get_directory_exits())
+        #system('lfs setstripe -c 1 {}'.format(state.get_directory_heartbeats())) # no improvement noticed
+        makedirs(state.get_directory_jobs())
+        return state
+    def __init__(self, directory):
+        self.__directory = os.path.abspath(directory)
+        self.content_prev = ''
+        self.top = dict()
+        self.top['jobs'] = dict()
+        self.top['jobids_deleted'] = list()
+        self.top['jobids_submitted'] = list()
+
+def get_state(directory):
+    state_fn = os.path.join(directory, STATE_FN)
+    if not os.path.exists(state_fn):
+        return State.create(directory)
+    try:
+        return State.deserialize(directory, open(state_fn).read())
+    except Exception:
+        log.exception('Failed to read state "%s". Ignoring (and soon over-writing) current state.'%state_fn)
+        # TODO: Backup previous STATE_FN?
+        return State(directory)
+def State_save(state):
+    # TODO: RW Locks, maybe for runtime of whole program.
+    content = state.serialize()
+    content_prev = state.content_prev
+    if content == content_prev:
+        return
+    fn = state.get_state_fn()
+    open(fn, 'w').write(content)
+    log.debug('saved state to %s' %repr(os.path.abspath(fn)))
+def Job_get_MetaJob(job, lang_exe=lang_bash_exe):
+    return MetaJob(job, lang_exe=lang_exe)
+def MetaJob_wrap(mjob, state):
+    """Write wrapper contents to mjob.wrapper.
+    """
+    wdir = state.get_directory_wrappers()
+    hdir = state.get_directory_heartbeats()
+    edir = state.get_directory_exits()
+    metajob_rundir = mjob.job.rundir
+
+    bash_template = """#!%(lang_exe)s
+printenv
+echo
+set -x
+%(cmd)s
+    """
+    # We do not bother with 'set -e' here because this script is run either
+    # in the background or via qsub.
+    templates = {
+        lang_python_exe: python_template,
+        lang_bash_exe: bash_template,
+    }
+    mji = MetaJobClass(mjob)
+    wrapper_fn = os.path.join(wdir, mji.get_wrapper())
+    exit_sentinel_fn=os.path.join(edir, mji.get_sentinel())
+    heartbeat_fn=os.path.join(hdir, mji.get_heartbeat())
+    rate = HEARTBEAT_RATE_S
+    command = mjob.job.cmd
+
+    prog = 'heartbeat-wrapper' # missing in mobs
+    prog = 'python2.7 -m pwatcher.mains.fs_heartbeat'
+    heartbeat_wrapper_template = "{prog} --directory={metajob_rundir} --heartbeat-file={heartbeat_fn} --exit-file={exit_sentinel_fn} --rate={rate} {command} || echo 99 >| {exit_sentinel_fn}"
+    # We write 99 into exit-sentinel if the wrapper fails.
+    wrapped = heartbeat_wrapper_template.format(**locals())
+    log.debug('Wrapped "%s"' %wrapped)
+
+    wrapped = templates[mjob.lang_exe] %dict(
+        lang_exe=mjob.lang_exe,
+        cmd=wrapped,
+    )
+    log.debug('Writing wrapper "%s"' %wrapper_fn)
+    open(wrapper_fn, 'w').write(wrapped)
+
+def background(script, exe='/bin/bash'):
+    """Start script in background (so it keeps going when we exit).
+    Run in cwd.
+    For now, stdout/stderr are captured.
+    Return pid.
+    """
+    args = [exe, script]
+    sin = open(os.devnull)
+    sout = open('stdout', 'w')
+    serr = open('stderr', 'w')
+    pseudo_call = '{exe} {script} 1>|stdout 2>|stderr & '.format(exe=exe, script=script)
+    log.debug('dir: {!r}\ncall: {!r}'.format(os.getcwd(), pseudo_call))
+    proc = subprocess.Popen([exe, script], stdin=sin, stdout=sout, stderr=serr)
+    pid = proc.pid
+    log.debug('pid=%s pgid=%s sub-pid=%s' %(os.getpid(), os.getpgid(0), proc.pid))
+    #checkcall = 'ls -l /proc/{}/cwd'.format(
+    #        proc.pid)
+    #system(checkcall, checked=True)
+    return pid
+
+class MetaJobLocal(object):
+    def submit(self, state, exe, script_fn):
+        """Can raise.
+        """
+        sge_option = self.mjob.job.options['sge_option']
+        #assert sge_option is None, sge_option # might be set anyway
+        pid = background(script_fn, exe=self.mjob.lang_exe)
+    def kill(self, state, heartbeat):
+        """Can raise.
+        (Actually, we could derive heartbeat from state. But for now, we know it anyway.)
+        """
+        hdir = state.get_directory_heartbeats()
+        heartbeat_fn = os.path.join(hdir, heartbeat)
+        with open(heartbeat_fn) as ifs:
+            line = ifs.readline()
+            pid = line.split()[1]
+            pid = int(pid)
+            pgid = line.split()[2]
+            pgid = int(pgid)
+            sig =signal.SIGKILL
+            log.info('Sending signal(%s) to pgid=-%s (pid=%s) based on heartbeat=%r' %(sig, pgid, pid, heartbeat))
+            try:
+                os.kill(-pgid, sig)
+            except Exception:
+                log.exception('Failed to kill(%s) pgid=-%s for %r. Trying pid=%s' %(sig, pgid, heartbeat_fn, pid))
+                os.kill(pid, sig)
+    def __repr__(self):
+        return 'MetaJobLocal(%s)' %repr(self.mjob)
+    def __init__(self, mjob):
+        self.mjob = mjob # PUBLIC
+class MetaJobSge(object):
+    def submit(self, state, exe, script_fn):
+        """Can raise.
+        """
+        specific = self.specific
+        #cwd = os.getcwd()
+        job_name = self.get_jobname()
+        sge_option = self.mjob.job.options['sge_option']
+        # Add shebang, in case shell_start_mode=unix_behavior.
+        #   https://github.com/PacificBiosciences/FALCON/pull/348
+        with open(script_fn, 'r') as original: data = original.read()
+        with open(script_fn, 'w') as modified: modified.write("#!/bin/bash" + "\n" + data)
+        sge_cmd = 'qsub -N {job_name} {sge_option} {specific} -cwd -o stdout -e stderr -S {exe} {script_fn}'.format(
+                **locals())
+        system(sge_cmd, checked=True) # TODO: Capture q-jobid
+    def kill(self, state, heartbeat):
+        """Can raise.
+        """
+        hdir = state.get_directory_heartbeats()
+        heartbeat_fn = os.path.join(hdir, heartbeat)
+        jobid = self.mjob.job.jobid
+        job_name = self.get_jobname()
+        sge_cmd = 'qdel -k {}'.format(
+                job_name)
+        system(sge_cmd, checked=False)
+    def get_jobname(self):
+        """Some systems are limited to 15 characters, so for now we simply truncate the jobid.
+        TODO: Choose a sequential jobname and record it. Priority: low, since collisions are very unlikely.
+        """
+        return self.mjob.job.jobid[:15]
+    def __repr__(self):
+        return 'MetaJobSge(%s)' %repr(self.mjob)
+    def __init__(self, mjob):
+        self.mjob = mjob
+        self.specific = '-V' # pass enV; '-j y' => combine out/err
+class MetaJobPbs(object):
+    """
+usage: qsub [-a date_time] [-A account_string] [-c interval]
+        [-C directive_prefix] [-e path] [-h ] [-I [-X]] [-j oe|eo] [-J X-Y[:Z]]
+        [-k o|e|oe] [-l resource_list] [-m mail_options] [-M user_list]
+        [-N jobname] [-o path] [-p priority] [-q queue] [-r y|n]
+        [-S path] [-u user_list] [-W otherattributes=value...]
+        [-v variable_list] [-V ] [-z] [script | -- command [arg1 ...]]
+    """
+    def submit(self, state, exe, script_fn):
+        """Can raise.
+        """
+        specific = self.specific
+        #cwd = os.getcwd()
+        job_name = self.get_jobname()
+        sge_option = self.mjob.job.options['sge_option']
+        # Add shebang, in case shell_start_mode=unix_behavior.
+        #   https://github.com/PacificBiosciences/FALCON/pull/348
+        with open(script_fn, 'r') as original: data = original.read()
+        with open(script_fn, 'w') as modified: modified.write("#!/bin/bash" + "\n" + data)
+        sge_cmd = 'qsub -N {job_name} {sge_option} {specific} -o stdout -e stderr -S {exe} {script_fn}'.format(
+                **locals())
+        system(sge_cmd, checked=True) # TODO: Capture q-jobid
+    def kill(self, state, heartbeat):
+        """Can raise.
+        """
+        hdir = state.get_directory_heartbeats()
+        heartbeat_fn = os.path.join(hdir, heartbeat)
+        jobid = self.mjob.job.jobid
+        job_name = self.get_jobname()
+        sge_cmd = 'qdel {}'.format(
+                job_name)
+        system(sge_cmd, checked=False)
+    def get_jobname(self):
+        """Some systems are limited to 15 characters, so for now we simply truncate the jobid.
+        TODO: Choose a sequential jobname and record it. Priority: low, since collisions are very unlikely.
+        """
+        return self.mjob.job.jobid[:15]
+    def __repr__(self):
+        return 'MetaJobPbs(%s)' %repr(self.mjob)
+    def __init__(self, mjob):
+        self.mjob = mjob
+        self.specific = '-V' # pass enV; '-j y' => combine out/err
+class MetaJobTorque(object):
+    # http://docs.adaptivecomputing.com/torque/4-0-2/help.htm#topics/commands/qsub.htm
+    def submit(self, state, exe, script_fn):
+        """Can raise.
+        """
+        specific = self.specific
+        #cwd = os.getcwd()
+        job_name = self.get_jobname()
+        sge_option = self.mjob.job.options['sge_option']
+        cwd = os.getcwd()
+        # Add shebang, in case shell_start_mode=unix_behavior.
+        #   https://github.com/PacificBiosciences/FALCON/pull/348
+        with open(script_fn, 'r') as original: data = original.read()
+        with open(script_fn, 'w') as modified: modified.write("#!/bin/bash" + "\n" + data)
+        sge_cmd = 'qsub -N {job_name} {sge_option} {specific} -d {cwd} -o stdout -e stderr -S {exe} {script_fn}'.format(
+                **locals())
+        system(sge_cmd, checked=True) # TODO: Capture q-jobid
+    def kill(self, state, heartbeat):
+        """Can raise.
+        """
+        hdir = state.get_directory_heartbeats()
+        heartbeat_fn = os.path.join(hdir, heartbeat)
+        jobid = self.mjob.job.jobid
+        job_name = self.get_jobname()
+        sge_cmd = 'qdel {}'.format(
+                job_name)
+        system(sge_cmd, checked=False)
+    def get_jobname(self):
+        """Some systems are limited to 15 characters, so for now we simply truncate the jobid.
+        TODO: Choose a sequential jobname and record it. Priority: low, since collisions are very unlikely.
+        """
+        return self.mjob.job.jobid[:15]
+    def __repr__(self):
+        return 'MetaJobTorque(%s)' %repr(self.mjob)
+    def __init__(self, mjob):
+        super(MetaJobTorque, self).__init__(mjob)
+        self.specific = '-V' # pass enV; '-j oe' => combine out/err
+class MetaJobSlurm(object):
+    def submit(self, state, exe, script_fn):
+        """Can raise.
+        """
+        job_name = self.get_jobname()
+        sge_option = self.mjob.job.options['sge_option']
+        cwd = os.getcwd()
+        sge_cmd = 'sbatch -J {job_name} {sge_option} -D {cwd} -o stdout -e stderr --wrap="{exe} {script_fn}"'.format(
+                **locals())
+        # "By default all environment variables are propagated."
+        #  http://slurm.schedmd.com/sbatch.html
+        system(sge_cmd, checked=True) # TODO: Capture sbatch-jobid
+    def kill(self, state, heartbeat):
+        """Can raise.
+        """
+        hdir = state.get_directory_heartbeats()
+        heartbeat_fn = os.path.join(hdir, heartbeat)
+        jobid = self.mjob.job.jobid
+        job_name = self.get_jobname()
+        sge_cmd = 'scancel -n {}'.format(
+                job_name)
+        system(sge_cmd, checked=False)
+    def get_jobname(self):
+        """Some systems are limited to 15 characters, so for now we simply truncate the jobid.
+        TODO: Choose a sequential jobname and record it. Priority: low, since collisions are very unlikely.
+        """
+        return self.mjob.job.jobid[:15]
+    def __repr__(self):
+        return 'MetaJobSlurm(%s)' %repr(self.mjob)
+    def __init__(self, mjob):
+        self.mjob = mjob
+class MetaJobLsf(object):
+    def submit(self, state, exe, script_fn):
+        """Can raise.
+        """
+        job_name = self.get_jobname()
+        sge_option = self.mjob.job.options['sge_option']
+        sge_cmd = 'bsub -J {job_name} {sge_option} -o stdout -e stderr "{exe} {script_fn}"'.format(
+                **locals())
+        # "Sets the user's execution environment for the job, including the current working directory, file creation mask, and all environment variables, and sets LSF environment variables before starting the job."
+        system(sge_cmd, checked=True) # TODO: Capture q-jobid
+    def kill(self, state, heartbeat):
+        """Can raise.
+        """
+        hdir = state.get_directory_heartbeats()
+        heartbeat_fn = os.path.join(hdir, heartbeat)
+        jobid = self.mjob.job.jobid
+        job_name = self.get_jobname()
+        sge_cmd = 'bkill -J {}'.format(
+                job_name)
+        system(sge_cmd, checked=False)
+    def get_jobname(self):
+        """Some systems are limited to 15 characters, so for now we simply truncate the jobid.
+        TODO: Choose a sequential jobname and record it. Priority: low, since collisions are very unlikely.
+        """
+        return self.mjob.job.jobid[:15]
+    def __repr__(self):
+        return 'MetaJobLsf(%s)' %repr(self.mjob)
+    def __init__(self, mjob):
+        self.mjob = mjob
+
+def link_rundir(state_rundir, user_rundir):
+    if user_rundir:
+        link_fn = os.path.join(user_rundir, 'pwatcher.dir')
+        if os.path.lexists(link_fn):
+            os.unlink(link_fn)
+        os.symlink(os.path.abspath(state_rundir), link_fn)
+
+def cmd_run(state, jobids, job_type, job_queue):
+    """On stdin, each line is a unique job-id, followed by run-dir, followed by command+args.
+    Wrap them and run them locally, in the background.
+    """
+    jobs = dict()
+    submitted = list()
+    result = {'submitted': submitted}
+    for jobid, desc in jobids.iteritems():
+        assert 'cmd' in desc
+        options = {}
+        for k in ('sge_option', 'job_type', 'job_queue'): # extras to be stored
+            if k in desc:
+                options[k] = desc[k]
+        if options.get('sge_option', None) is None:
+            # This way we can always safely include it.
+            options = {'sge_option': ''}
+        jobs[jobid] = Job(jobid, desc['cmd'], desc['rundir'], options)
+    log.debug('jobs:\n%s' %pprint.pformat(jobs))
+    for jobid, job in jobs.iteritems():
+        desc = jobids[jobid]
+        log.info('starting job %s' %pprint.pformat(job))
+        mjob = Job_get_MetaJob(job)
+        MetaJob_wrap(mjob, state)
+        options = job.options
+        my_job_type = desc.get('job_type')
+        if my_job_type is None:
+            my_job_type = job_type
+        my_job_type = my_job_type.upper()
+        if my_job_type == 'LOCAL':
+            bjob = MetaJobLocal(mjob)
+        elif my_job_type == 'SGE':
+            bjob = MetaJobSge(mjob)
+        elif my_job_type == 'PBS':
+            bjob = MetaJobPbs(mjob)
+        elif my_job_type == 'TORQUE':
+            bjob = MetaJobTorque(mjob)
+        elif my_job_type == 'SLURM':
+            bjob = MetaJobSlurm(mjob)
+        elif my_job_type == 'LSF':
+            bjob = MetaJobLsf(mjob)
+        else:
+            raise Exception('Unknown my_job_type=%s' %repr(my_job_type))
+        try:
+            link_rundir(state.get_directory_job(jobid), desc.get('rundir'))
+            state.submit_background(bjob)
+            submitted.append(jobid)
+        except Exception:
+            log.exception('In pwatcher.fs_based.cmd_run(), failed to submit background-job:\n{!r}'.format(
+                bjob))
+    return result
+    # The caller is responsible for deciding what to do about job-submission failures. Re-try, maybe?
+
+re_heartbeat = re.compile(r'heartbeat-(.+)')
+def get_jobid_for_heartbeat(heartbeat):
+    """This cannot fail unless we change the filename format.
+    """
+    mo = re_heartbeat.search(heartbeat)
+    jobid = mo.group(1)
+    return jobid
+def system(call, checked=False):
+    log.info('!{}'.format(call))
+    rc = os.system(call)
+    if checked and rc:
+        raise Exception('{} <- {!r}'.format(rc, call))
+
+_warned = dict()
+def warnonce(hashkey, msg):
+    if hashkey in _warned:
+        return
+    log.warning(msg)
+    _warned[hashkey] = True
+
+def get_status(state, elistdir, reference_s, sentinel, heartbeat):
+    heartbeat_path = os.path.join(state.get_directory_heartbeats(), heartbeat)
+    # We take listdir so we can avoid extra system calls.
+    if sentinel in elistdir:
+        try:
+            os.remove(heartbeat_path)
+        except Exception:
+            log.debug('Unable to remove heartbeat {} when sentinal was found in exit-sentinels listdir.\n{}'.format(
+                repr(heartbeat_path), traceback.format_exc()))
+        sentinel_path = os.path.join(state.get_directory_exits(), sentinel)
+        with open(sentinel_path) as ifs:
+            rc = ifs.read().strip()
+        return 'EXIT {}'.format(rc)
+    ## TODO: Record last stat times, to avoid extra stat if too frequent.
+    #try:
+    #    mtime_s = os.path.getmtime(heartbeat_path)
+    #    if (mtime_s + 3*HEARTBEAT_RATE_S) < reference_s:
+    #        if (ALLOWED_SKEW_S + mtime_s + 3*HEARTBEAT_RATE_S) < reference_s:
+    #            msg = 'DEAD job? {} + 3*{} + {} < {} for {!r}'.format(
+    #                mtime_s, HEARTBEAT_RATE_S, ALLOWED_SKEW_S, reference_s, heartbeat_path)
+    #            log.debug(msg)
+    #            warnonce(heartbeat_path, msg)
+    #            return 'DEAD'
+    #        else:
+    #            log.debug('{} + 3*{} < {} for {!r}. You might have a large clock-skew, or filesystem delays, or just filesystem time-rounding.'.format(
+    #                mtime_s, HEARTBEAT_RATE_S, reference_s, heartbeat_path))
+    #except Exception as exc:
+    #    # Probably, somebody deleted it after our call to os.listdir().
+    #    # TODO: Decide what this really means.
+    #    log.debug('Heartbeat not (yet?) found at %r: %r' %(heartbeat_path, exc))
+    #    return 'UNKNOWN'
+    return 'RUNNING' # but actually it might not have started yet, or it could be dead, since we are not checking the heartbeat
+def cmd_query(state, which, jobids):
+    """Return the state of named jobids.
+    See find_jobids().
+    """
+    found = dict()
+    edir = state.get_directory_exits()
+    for heartbeat in find_heartbeats(state, which, jobids):
+        jobid = get_jobid_for_heartbeat(heartbeat)
+        mji = state.get_mji(jobid)
+        sentinel = mji.get_sentinel()
+        #system('ls -l {}/{} {}/{}'.format(edir, sentinel, hdir, heartbeat), checked=False)
+        found[jobid] = (sentinel, heartbeat)
+    elistdir = os.listdir(edir)
+    current_time_s = time.time()
+    result = dict()
+    jobstats = dict()
+    result['jobids'] = jobstats
+    for jobid, pair in found.iteritems():
+        sentinel, heartbeat = pair
+        status = get_status(state, elistdir, current_time_s, sentinel, heartbeat)
+        log.debug('Status %s for heartbeat:%s' %(status, heartbeat))
+        jobstats[jobid] = status
+    return result
+def get_jobid2pid(pid2mjob):
+    result = dict()
+    for pid, mjob in pid2mjob.iteritems():
+        jobid = mjob.job.jobid
+        result[jobid] = pid
+    return result
+def find_heartbeats(state, which, jobids):
+    """Yield heartbeat filenames.
+    If which=='list', then query jobs listed as jobids.
+    If which=='known', then query all known jobs.
+    If which=='infer', then query all jobs with heartbeats.
+    These are not quite finished, but already useful.
+    """
+    #log.debug('find_heartbeats for which=%s, jobids=%s' %(which, pprint.pformat(jobids)))
+    if which == 'infer':
+        for fn in glob.glob(os.path.join(state.get_directory_heartbeats(), 'heartbeat*')):
+            yield fn
+    elif which == 'known':
+        jobid2mjob = state.get_mjobs()
+        for jobid, mjob in jobid2mjob.iteritems():
+            mji = MetaJobClass(mjob)
+            yield mji.get_heartbeat()
+    elif which == 'list':
+        jobid2mjob = state.get_mjobs()
+        #log.debug('jobid2mjob:\n%s' %pprint.pformat(jobid2mjob))
+        for jobid in jobids:
+            #log.debug('jobid=%s; jobids=%s' %(repr(jobid), repr(jobids)))
+            #if jobid not in jobid2mjob:
+            #    log.info("jobid=%s is not known. Might have been deleted already." %jobid)
+            mjob = jobid2mjob[jobid]
+            mji = MetaJobClass(mjob)
+            yield mji.get_heartbeat()
+    else:
+        raise Exception('which=%s'%repr(which))
+def delete_heartbeat(state, heartbeat, keep=False):
+    """
+    Kill the job with this heartbeat.
+    (If there is no heartbeat, then the job is already gone.)
+    Delete the entry from state and update its jobid.
+    Remove the heartbeat file, unless 'keep'.
+    """
+    hdir = state.get_directory_heartbeats()
+    heartbeat_fn = os.path.join(hdir, heartbeat)
+    jobid = get_jobid_for_heartbeat(heartbeat)
+    try:
+        bjob = state.get_bjob(jobid)
+    except Exception:
+        log.exception('In delete_heartbeat(), unable to find batchjob for % (from %s)' %(jobid, heartbeat))
+        log.warning('Cannot delete. You might be able to delete this yourself if you examine the content of %s.' %heartbeat_fn)
+        # TODO: Maybe provide a default grid type, so we can attempt to delete anyway?
+        return
+    try:
+        bjob.kill(state, heartbeat)
+    except Exception as exc:
+        log.debug('Failed to kill job for heartbeat {!r}: {!r}'.format(
+            heartbeat, exc))
+    state.add_deleted_jobid(jobid)
+    # For now, keep it in the 'jobs' table.
+    try:
+        os.remove(heartbeat_fn)
+        log.debug('Removed heartbeat=%s' %repr(heartbeat))
+    except OSError as exc:
+        log.debug('Cannot remove heartbeat: {!r}'.format(exc))
+    # Note: If sentinel suddenly appeared, that means the job exited. The pwatcher might wrongly think
+    # it was deleted, but its output might be available anyway.
+def cmd_delete(state, which, jobids):
+    """Kill designated jobs, including (hopefully) their
+    entire process groups.
+    If which=='list', then kill all jobs listed as jobids.
+    If which=='known', then kill all known jobs.
+    If which=='infer', then kill all jobs with heartbeats.
+    Remove those heartbeat files.
+    """
+    log.debug('Deleting jobs for jobids from %s (%s)' %(
+        which, repr(jobids)))
+    for heartbeat in find_heartbeats(state, which, jobids):
+        delete_heartbeat(state, heartbeat)
+def makedirs(path):
+    if not os.path.isdir(path):
+        os.makedirs(path)
+def readjson(ifs):
+    """Del keys that start with ~.
+    That lets us have trailing commas on all other lines.
+    """
+    content = ifs.read()
+    log.debug('content:%s' %repr(content))
+    jsonval = json.loads(content)
+    #pprint.pprint(jsonval)
+    def striptildes(subd):
+        if not isinstance(subd, dict):
+            return
+        for k,v in subd.items():
+            if k.startswith('~'):
+                del subd[k]
+            else:
+                striptildes(v)
+    striptildes(jsonval)
+    #pprint.pprint(jsonval)
+    return jsonval
+
+class ProcessWatcher(object):
+    def run(self, jobids, job_type, job_queue):
+        #import traceback; log.debug(''.join(traceback.format_stack()))
+        log.debug('run(jobids={}, job_type={}, job_queue={})'.format(
+            '<%s>'%len(jobids), job_type, job_queue))
+        return cmd_run(self.state, jobids, job_type, job_queue)
+    def query(self, which='list', jobids=[]):
+        log.debug('query(which={!r}, jobids={})'.format(
+            which, '<%s>'%len(jobids)))
+        return cmd_query(self.state, which, jobids)
+    def delete(self, which='list', jobids=[]):
+        log.debug('delete(which={!r}, jobids={})'.format(
+            which, '<%s>'%len(jobids)))
+        return cmd_delete(self.state, which, jobids)
+    def __init__(self, state):
+        self.state = state
+ at contextlib.contextmanager
+def process_watcher(directory):
+    """This will (someday) hold a lock, so that
+    the State can be written safely at the end.
+    """
+    state = get_state(directory)
+    #log.debug('state =\n%s' %pprint.pformat(state.top))
+    yield ProcessWatcher(state)
+    # TODO: Sometimes, maybe we should not save state.
+    # Or maybe we *should* on exception.
+    State_save(state)
+
+def main(prog, cmd, state_dir='mainpwatcher', argsfile=None):
+    logging.basicConfig()
+    logging.getLogger().setLevel(logging.NOTSET)
+    log.warning('logging basically configured')
+    log.debug('debug mode on')
+    assert cmd in ['run', 'query', 'delete']
+    ifs = sys.stdin if not argsfile else open(argsfile)
+    argsdict = readjson(ifs)
+    log.info('argsdict =\n%s' %pprint.pformat(argsdict))
+    with process_watcher(state_dir) as watcher:
+        result = getattr(watcher, cmd)(**argsdict)
+        if result is not None:
+            print pprint.pformat(result)
+
+
+# With bash, we would need to set the session, rather than
+# the process group. That's not ideal, but this is here for reference.
+#  http://stackoverflow.com/questions/6549663/how-to-set-process-group-of-a-shell-script
+#
+bash_template = """#!%(lang_exe)s
+cmd='%(cmd)s'
+"$cmd"
+"""
+
+# perl might be better, for efficiency.
+# But we will use python for now.
+#
+python_template = r"""#!%(lang_exe)s
+import threading, time, os, sys
+
+cmd='%(cmd)s'
+sentinel_fn='%(sentinel_fn)s'
+heartbeat_fn='%(heartbeat_fn)s'
+sleep_s=%(sleep_s)s
+cwd='%(cwd)s'
+
+os.chdir(cwd)
+
+def log(msg):
+    sys.stderr.write(msg)
+    sys.stderr.write('\n')
+    #sys.stdout.flush()
+
+def thread_heartbeat():
+    ofs = open(heartbeat_fn, 'w')
+    pid = os.getpid()
+    pgid = os.getpgid(0)
+    x = 0
+    while True:
+        ofs.write('{} {} {}\n'.format(x, pid, pgid))
+        ofs.flush()
+        time.sleep(sleep_s)
+        x += 1
+def start_heartbeat():
+    hb = threading.Thread(target=thread_heartbeat)
+    log('alive? {}'.format(hb.is_alive()))
+    hb.daemon = True
+    hb.start()
+    return hb
+def main():
+    log('cwd:{!r}'.format(os.getcwd()))
+    if os.path.exists(sentinel_fn):
+        os.remove(sentinel_fn)
+    if os.path.exists(heartbeat_fn):
+        os.remove(heartbeat_fn)
+    os.system('touch {}'.format(heartbeat_fn))
+    log("before: pid={}s pgid={}s".format(os.getpid(), os.getpgid(0)))
+    try:
+        os.setpgid(0, 0)
+    except OSError as e:
+        log('Unable to set pgid. Possibly a grid job? Hopefully there will be no dangling processes when killed: {}'.format(
+            repr(e)))
+    log("after: pid={}s pgid={}s".format(os.getpid(), os.getpgid(0)))
+    hb = start_heartbeat()
+    log('alive? {} pid={} pgid={}'.format(hb.is_alive(), os.getpid(), os.getpgid(0)))
+    rc = os.system(cmd)
+    # Do not delete the heartbeat here. The discoverer of the sentinel will do that,
+    # to avoid a race condition.
+    #if os.path.exists(heartbeat_fn):
+    #    os.remove(heartbeat_fn)
+    with open(sentinel_fn, 'w') as ofs:
+        ofs.write(str(rc))
+    # sys.exit(rc) # No-one would see this anyway.
+    if rc:
+        raise Exception('{} <- {!r}'.format(rc, cmd))
+main()
+"""
+
+if __name__ == "__main__":
+    import pdb
+    pdb.set_trace()
+    main(*sys.argv)
diff --git a/falcon_kit/mains/__init__.py b/pypeFLOW/pwatcher/mains/__init__.py
similarity index 100%
copy from falcon_kit/mains/__init__.py
copy to pypeFLOW/pwatcher/mains/__init__.py
diff --git a/pypeFLOW/pwatcher/mains/fs_heartbeat.py b/pypeFLOW/pwatcher/mains/fs_heartbeat.py
new file mode 100644
index 0000000..b6677cd
--- /dev/null
+++ b/pypeFLOW/pwatcher/mains/fs_heartbeat.py
@@ -0,0 +1,149 @@
+"""Filesystem heartbeat wrapper
+
+Perl might be better for efficiency.
+But we will use python for now.
+
+Non-zero status means *this* failed, not the wrapped command.
+"""
+import argparse
+import os
+import socket
+import sys
+import threading
+import time
+
+DESCRIPTION = """
+We wrap a system call to produce both a heartbeat and an exit-sentinel
+in the filesystem.
+"""
+EPILOG = """
+We share stderr/stdout with the command. We log to stderr (for now).
+"""
+HEARTBEAT_TEMPLATE = '0 {pid} {pgid}\n'
+EXIT_TEMPLATE = '{exit_code}'
+
+class _Formatter(argparse.RawDescriptionHelpFormatter, argparse.ArgumentDefaultsHelpFormatter):
+    pass
+_FORMATTER_CLASS = _Formatter
+
+def parse_args(args):
+    parser = argparse.ArgumentParser(
+        description=DESCRIPTION,
+        epilog=EPILOG,
+        formatter_class=_FORMATTER_CLASS,
+    )
+    parser.add_argument('--rate',
+        help='Heartbeat rate, in seconds',
+        type=float,
+        default=1.0, # TODO: Make this at least 10, maybe 60.
+    )
+    parser.add_argument('--heartbeat-file',
+        help='Path to heartbeat file. The first line will have the format {!r}. The rest are just elapsed time'.format(
+            HEARTBEAT_TEMPLATE),
+        required=True,
+    )
+    parser.add_argument('--exit-file',
+        help='Path to exit sentinel file. At end, it will have the format {!r}'.format(
+            EXIT_TEMPLATE),
+        required=True,
+    )
+    parser.add_argument('--directory',
+        help='Directory in which to run COMMAND.',
+        default='.',
+    )
+    parser.add_argument('command',
+        help='System call (to be joined by " "). We will block on this and return its result.',
+        nargs='+',
+        #required=True,
+    )
+    return parser.parse_args(args)
+
+def log(msg):
+    sys.stderr.write(msg)
+    sys.stderr.write('\n')
+    #sys.stdout.flush() # If we use stdout.
+
+def thread_heartbeat(heartbeat_fn, sleep_s):
+    with open(heartbeat_fn, 'w') as ofs:
+        pid = os.getpid()
+        pgid = os.getpgid(0)
+        ofs.write(HEARTBEAT_TEMPLATE.format(
+            **locals()))
+        elapsed = 0
+        ctime = 0
+        while True:
+            #ctime = time.time()
+            ofs.write('{elapsed} {ctime}\n'.format(
+                **locals()))
+            ofs.flush()
+            time.sleep(sleep_s)
+            elapsed += 1
+
+def start_heartbeat(heartbeat_fn, sleep_s):
+    hb = threading.Thread(target=thread_heartbeat, args=(heartbeat_fn, sleep_s))
+    log('alive? {}'.format(
+        bool(hb.is_alive())))
+    hb.daemon = True
+    hb.start()
+    return hb
+
+def run(args):
+    os.chdir(args.directory)
+    heartbeat_fn = os.path.abspath(args.heartbeat_file)
+    exit_fn = os.path.abspath(args.exit_file)
+    cwd = os.getcwd()
+    hostname = socket.getfqdn()
+    sleep_s = args.rate
+    log("""
+cwd:{cwd!r}
+hostname={hostname}
+heartbeat_fn={heartbeat_fn!r}
+exit_fn={exit_fn!r}
+sleep_s={sleep_s!r}""".format(
+        **locals()))
+    if os.path.exists(exit_fn):
+        os.remove(exit_fn)
+    if os.path.exists(heartbeat_fn):
+        os.remove(heartbeat_fn)
+    #os.system('touch {}'.format(heartbeat_fn)) # This would be over-written anyway.
+    log("before setpgid: pid={} pgid={}".format(os.getpid(), os.getpgid(0)))
+    try:
+        os.setpgid(0, 0) # This allows the entire tree of procs to be killed.
+        log(" after setpgid: pid={} pgid={}".format(
+            os.getpid(), os.getpgid(0)))
+    except OSError as e:
+        log(' Unable to set pgid. Possibly a grid job? Hopefully there will be no dangling processes when killed: {}'.format(
+            repr(e)))
+
+    #thread = start_heartbeat(heartbeat_fn, sleep_s)
+
+    #log('alive? {} pid={} pgid={}'.format(
+    #    bool(thread.is_alive()), os.getpid(), os.getpgid(0)))
+
+    call = ' '.join(args.command)
+    log('In cwd: {}, Blocking call: {!r}'.format(
+        os.getcwd(), call))
+    rc = os.system(call) # Blocking.
+
+    log(' returned: {!r}'.format(
+        rc))
+
+    # Do not delete the heartbeat here. The discoverer of the exit-sentinel will do that,
+    # to avoid a race condition.
+    #if os.path.exists(heartbeat_fn):
+    #    os.remove(heartbeat_fn)
+
+    exit_tmp_fn = exit_fn + '.tmp'
+    with open(exit_tmp_fn, 'w') as ofs:
+        ofs.write(EXIT_TEMPLATE.format(
+            exit_code=rc))
+    os.rename(exit_tmp_fn, exit_fn) # atomic
+    # sys.exit(rc) # No-one would see this anyway.
+
+def main():
+    args = parse_args(sys.argv[1:])
+    log(repr(args))
+    run(args)
+
+if __name__ == "__main__":
+    main()
diff --git a/pypeFLOW/pwatcher/mains/pwatcher.py b/pypeFLOW/pwatcher/mains/pwatcher.py
new file mode 100644
index 0000000..1bfb744
--- /dev/null
+++ b/pypeFLOW/pwatcher/mains/pwatcher.py
@@ -0,0 +1,12 @@
+from .. import fs_based
+import pdb
+import sys
+
+def main():
+    fs_based.main(*sys.argv)
+
+# If run directly, rather than via the 'entry-point',
+# then pdb will be used.
+if __name__ == "__main__":
+    #pdb.set_trace()
+    main()
diff --git a/pypeFLOW/pwatcher/mains/pypeflow_example.py b/pypeFLOW/pwatcher/mains/pypeflow_example.py
new file mode 100644
index 0000000..b71cc03
--- /dev/null
+++ b/pypeFLOW/pwatcher/mains/pypeflow_example.py
@@ -0,0 +1,133 @@
+from pypeflow.pwatcher_bridge import PypeProcWatcherWorkflow, MyFakePypeThreadTaskBase
+from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+from pypeflow.task import PypeTask
+import json
+import logging.config
+import os
+import sys
+
+JOB_TYPE = os.environ.get('JOB_TYPE', 'local')
+SLEEP_S = os.environ.get('SLEEP_S', '1')
+log = logging.getLogger(__name__)
+
+def spawn(args, check=False):
+    cmd = args[0]
+    log.debug('$(%s %s)' %(cmd, repr(args)))
+    rc = os.spawnv(os.P_WAIT, cmd, args) # spawnvp for PATH lookup
+    msg = "Call %r returned %d." % (cmd, rc)
+    if rc:
+        log.warning(msg)
+        if check:
+            raise Exception(msg)
+    else:
+        log.debug(msg)
+    return rc
+def system(call, check=False):
+    log.debug('$(%s)' %repr(call))
+    rc = os.system(call)
+    msg = "Call %r returned %d." % (call, rc)
+    if rc:
+        log.warning(msg)
+        if check:
+            raise Exception(msg)
+    else:
+        log.debug(msg)
+    return rc
+def makedirs(d):
+    if not os.path.isdir(d):
+        os.makedirs(d)
+def taskrun0(self):
+    template = """
+sleep_s=%(sleep_s)s
+ofile=%(ofile)s
+
+set -vex
+echo start0
+sleep ${sleep_s}
+touch ${ofile}
+echo end0
+"""
+    bash = template %dict(
+        #ifile=fn(self.i0),
+        ofile=fn(self.f0),
+        sleep_s=self.parameters['sleep_s'],
+    )
+    log.debug('taskrun0 bash:\n' + bash)
+    script = 'taskrun0.sh'
+    with open(script, 'w') as ofs:
+        ofs.write(bash)
+    #system("bash {}".format(script), check=True)
+    #spawn(['/bin/bash', script], check=True) # Beware! Hard to kill procs.
+    self.generated_script_fn = script
+    return script
+def taskrun1(self):
+    template = """
+sleep_s=%(sleep_s)s
+ifile=%(ifile)s
+ofile=%(ofile)s
+
+set -vex
+echo start1
+sleep ${sleep_s}
+cp -f ${ifile} ${ofile}
+echo end1
+"""
+    bash = template %dict(
+        ifile=fn(self.f0),
+        ofile=fn(self.f1),
+        sleep_s=self.parameters['sleep_s'],
+    )
+    log.debug('taskrun1 bash:\n' + bash)
+    script = 'taskrun1.sh'
+    with open(script, 'w') as ofs:
+        ofs.write(bash)
+    #system("bash {}".format(script), check=True)
+    self.generated_script_fn = script
+    return script
+
+def main():
+    lfn = 'logging-cfg.json'
+    if os.path.exists(lfn):
+        logging.config.dictConfig(json.load(open(lfn)))
+    else:
+        logging.basicConfig()
+        logging.getLogger().setLevel(logging.NOTSET)
+        try:
+            import logging_tree
+            logging_tree.printout()
+        except ImportError:
+            pass
+    log.debug('DEBUG LOGGING ON')
+    log.warning('Available via env: JOB_TYPE={}, SLEEP_S={}'.format(
+        JOB_TYPE, SLEEP_S))
+    exitOnFailure=False
+    concurrent_jobs=2
+    #Workflow = pypeflow.controller.PypeThreadWorkflow
+    Workflow = PypeProcWatcherWorkflow
+    Workflow.setNumThreadAllowed(concurrent_jobs, concurrent_jobs)
+    wf = Workflow(job_type=JOB_TYPE)
+
+    par = dict(sleep_s=SLEEP_S)
+    DIR ='mytmp'
+    makedirs(DIR)
+    f0 = makePypeLocalFile('mytmp/f0')
+    f1 = makePypeLocalFile('mytmp/f1')
+    make_task = PypeTask(
+            #inputs = {'f': f},
+            outputs = {'f0': f0},
+            parameters = par,
+            TaskType = MyFakePypeThreadTaskBase)
+    task = make_task(taskrun0)
+    wf.addTasks([task])
+    make_task = PypeTask(
+            inputs = {'f0': f0},
+            outputs = {'f1': f1},
+            parameters = par,
+            TaskType = MyFakePypeThreadTaskBase)
+    task = make_task(taskrun1)
+    wf.addTasks([task])
+    wf.refreshTargets([task])
+    #wf.refreshTargets(exitOnFailure=exitOnFailure)
+
+if __name__ == "__main__":
+    main()
diff --git a/falcon_kit/mains/__init__.py b/pypeFLOW/pypeflow/__init__.py
similarity index 100%
copy from falcon_kit/mains/__init__.py
copy to pypeFLOW/pypeflow/__init__.py
diff --git a/pypeFLOW/pypeflow/common.py b/pypeFLOW/pypeflow/common.py
new file mode 100644
index 0000000..4c12aef
--- /dev/null
+++ b/pypeFLOW/pypeflow/common.py
@@ -0,0 +1,149 @@
+
+# @author Jason Chin
+#
+# Copyright (C) 2010 by Jason Chin 
+# Copyright (C) 2011 by Jason Chin, Pacific Biosciences
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+"""
+
+PypeCommon: provide the common base classes and general module level utility functions
+            and constants for PypeEngine
+
+"""
+
+from urlparse import urlparse
+
+import rdflib
+try:
+    from rdflib import ConjunctiveGraph as Graph #work for rdflib-3.1.0
+    # need to install rdfextras for rdflib-3.0.0
+    rdflib.plugin.register('sparql', rdflib.query.Processor,
+                           'rdfextras.sparql.processor', 'Processor')
+    rdflib.plugin.register('sparql', rdflib.query.Result,
+                           'rdfextras.sparql.query', 'SPARQLQueryResult')
+except Exception:
+    from rdflib.Graph import ConjunctiveGraph as Graph #work for rdflib-2.4.2
+from rdflib import Namespace
+from rdflib import Literal
+from rdflib import URIRef
+
+from subprocess import Popen, PIPE
+import time
+
+pypeNS = Namespace("pype://v0.1/")
+
+class PypeError(Exception):
+    def __init__(self, msg):
+        Exception.__init__(self, msg)  # to make __repr__() show class name
+        self.msg = msg
+    def __str__(self):
+        return repr(self.msg)
+
+class NotImplementedError(PypeError):
+    pass
+
+class URLSchemeNotSupportYet(PypeError):
+    pass
+
+class PypeObject(object):
+
+    """ 
+
+    Base class for all PypeObjects
+
+    Every PypeObject should have an URL.
+    The instance attributes can be set by using keyword argument in __init__(). 
+
+    """
+
+    def __init__(self, URL, **attributes):
+
+        URLParseResult = urlparse(URL)
+        if URLParseResult.scheme not in self.__class__.supportedURLScheme:
+            raise URLSchemeNotSupportYet("%s is not supported yet" % URLParseResult.scheme )
+        else:
+            self.URL = URL
+            for k,v in attributes.iteritems():
+                if k not in self.__dict__:
+                    self.__dict__[k] = v
+
+    def _updateURL(self, newURL):
+        URLParseResult = urlparse(self.URL)
+        newURLParseResult = urlparse(newURL)
+        if URLParseResult.scheme != newURLParseResult.scheme:
+            raise PypeError, "the URL scheme can not be changed for obj %s" % self.URL
+        self.URL = newURL
+     
+    @property 
+    def _RDFGraph(self):
+        graph = Graph()
+
+        for k, v in self.__dict__.iteritems():
+            if k == "URL": continue
+            if k[0] == "_": continue
+            if hasattr(v, "URL"):
+                graph.add( ( URIRef(self.URL), pypeNS[k], URIRef(v.URL) ) )
+        return graph
+
+
+    
+    @property
+    def RDFXML(self):
+
+        """ 
+        RDF XML representation of the everything related to the PypeObject 
+        """
+
+        return self._RDFGraph.serialize() 
+
+def runShellCmd(args,**kwargs):
+
+    """ 
+    Utility function that runs a shell script command. 
+    It blocks until the command is finished. The return value
+    from the shell command is returned
+    """
+
+    p = Popen(args,**kwargs)
+    pStatus = None
+    while 1:
+        time.sleep(0.2)
+        pStatus = p.poll()
+        if pStatus != None:
+            break
+    return pStatus
+
+def runSgeSyncJob(args):
+
+    """ 
+    Utility function that runs a shell script with SGE. 
+    It blocks until the command is finished. The return value
+    from the shell command is returned
+    """
+
+    p = Popen(args)
+    pStatus = None
+    while 1:
+        time.sleep(0.1)
+        pStatus = p.poll()
+        if pStatus != None:
+            break
+    return pStatus
diff --git a/pypeFLOW/pypeflow/controller.py b/pypeFLOW/pypeflow/controller.py
new file mode 100644
index 0000000..ce39e89
--- /dev/null
+++ b/pypeFLOW/pypeflow/controller.py
@@ -0,0 +1,875 @@
+# @author Jason Chin
+#
+# Copyright (C) 2010 by Jason Chin 
+# Copyright (C) 2011 by Jason Chin, Pacific Biosciences
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+"""
+
+PypeController: This module provides the PypeWorkflow that controlls how a workflow is excuted.
+
+"""
+import sys
+import datetime
+import multiprocessing
+import threading 
+import time 
+import traceback
+import logging
+import Queue
+from cStringIO import StringIO 
+from urlparse import urlparse
+
+# TODO(CD): When we stop using Python 2.5, use relative-imports and remove this dir from PYTHONPATH.
+from common import PypeError, PypeObject, Graph, URIRef, pypeNS
+from data import PypeDataObjectBase, PypeSplittableLocalFile
+from task import PypeTaskBase, PypeTaskCollection, PypeThreadTaskBase, getFOFNMapTasks
+from task import TaskInitialized, TaskDone, TaskFail
+
+logger = logging.getLogger(__name__)
+
+class TaskExecutionError(PypeError):
+    pass
+class TaskTypeError(PypeError):
+    pass
+class TaskFailureError(PypeError):
+    pass
+class LateTaskFailureError(PypeError):
+    pass
+
+class PypeNode(object):
+    """ 
+    Representing a node in the dependence DAG. 
+    """
+
+    def __init__(self, obj):
+        self.obj = obj
+        self._outNodes = set()
+        self._inNodes = set()
+
+    def addAnOutNode(self, obj):
+        self._outNodes.add(obj)
+        
+    def addAnInNode(self, obj):
+        self._inNodes.add(obj)
+
+    def removeAnOutNode(self, obj):
+        self._outNodes.remove(obj)
+
+    def removeAnInNode(self, obj):
+        self._inNodes.remove(obj)
+
+    @property
+    def inDegree(self):
+        return len(self._inNodes)
+
+    @property
+    def outDegree(self):
+        return len(self._outNodes)
+    
+    @property
+    def depth(self):
+        if self.inDegree == 0:
+            return 1
+        return 1 + max([ node.depth for node in self._inNodes ])
+
+class PypeGraph(object):
+    """ 
+    Representing a dependence DAG with PypeObjects. 
+    """
+
+    def __init__(self, RDFGraph, subGraphNodes=None):
+        """
+        Construct an internal DAG with PypeObject given an RDF graph.
+        A sub-graph can be constructed if subGraphNodes is not "None"
+        """
+
+        self._RDFGraph = RDFGraph
+        self._allEdges = set()
+        self._allNodes = set()
+        self.url2Node ={}
+
+        for row in self._RDFGraph.query('SELECT ?s ?o WHERE {?s pype:prereq ?o . }', initNs=dict(pype=pypeNS)):
+            if subGraphNodes != None:
+                if row[0] not in subGraphNodes: continue
+                if row[1] not in subGraphNodes: continue
+            
+            sURL, oURL = str(row[0]), str(row[1])
+            
+            self.url2Node[sURL] = self.url2Node.get( sURL, PypeNode(str(row[0])) )
+            self.url2Node[oURL] = self.url2Node.get( oURL, PypeNode(str(row[1])) )
+
+            n1 = self.url2Node[oURL]
+            n2 = self.url2Node[sURL]
+            
+            n1.addAnOutNode(n2)
+            n2.addAnInNode(n1)
+            
+            anEdge = (n1, n2)
+            self._allNodes.add( n1 )
+            self._allNodes.add( n2 )
+            self._allEdges.add( anEdge )
+            
+    def __getitem__(self, url):
+        """PypeGraph["URL"] ==> PypeNode"""
+        return self.url2Node[url]
+
+    def tSort(self): #return a topoloical sort node list
+        """
+        Output topological sorted list of the graph element. 
+        It raises a TeskExecutionError if a circle is detected.
+        """
+        edges = self._allEdges.copy()
+        
+        S = [x for x in self._allNodes if x.inDegree == 0]
+        L = []
+        while len(S) != 0:
+            n = S.pop()
+            L.append(n)
+            outNodes = n._outNodes.copy()
+            for m in outNodes:
+                edges.remove( (n, m) )
+                n.removeAnOutNode(m)
+                m.removeAnInNode(n)
+                if m.inDegree == 0:
+                    S.append(m)
+        
+        if len(edges) != 0:
+            raise TaskExecutionError(" Circle detectd in the dependency graph ")
+        else:
+            return [x.obj for x in L]
+                    
+class PypeWorkflow(PypeObject):
+    """ 
+    Representing a PypeWorkflow. PypeTask and PypeDataObjects can be added
+    into the workflow and executed through the instanct methods.
+
+    >>> import os, time 
+    >>> from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+    >>> from pypeflow.task import *
+    >>> try:
+    ...     os.makedirs("/tmp/pypetest")
+    ...     _ = os.system("rm -f /tmp/pypetest/*")
+    ... except Exception:
+    ...     pass
+    >>> time.sleep(1)
+    >>> fin = makePypeLocalFile("/tmp/pypetest/testfile_in", readOnly=False)
+    >>> fout = makePypeLocalFile("/tmp/pypetest/testfile_out", readOnly=False)
+    >>> @PypeTask(outputDataObjs={"test_out":fout},
+    ...           inputDataObjs={"test_in":fin},
+    ...           parameters={"a":'I am "a"'}, **{"b":'I am "b"'})
+    ... def test(self):
+    ...     print test.test_in.localFileName
+    ...     print test.test_out.localFileName
+    ...     os.system( "touch %s" % fn(test.test_out) )
+    ...     pass
+    >>> os.system( "touch %s" %  (fn(fin))  )
+    0
+    >>> from pypeflow.controller import PypeWorkflow
+    >>> wf = PypeWorkflow()
+    >>> wf.addTask(test)
+    >>> def finalize(self):
+    ...     def f():
+    ...         print "in finalize:", self._status
+    ...     return f
+    >>> test.finalize = finalize(test)  # For testing only. Please don't do this in your code. The PypeTask.finalized() is intended to be overriden by subclasses. 
+    >>> wf.refreshTargets( objs = [fout] )
+    /tmp/pypetest/testfile_in
+    /tmp/pypetest/testfile_out
+    in finalize: done
+    True
+    """
+
+    supportedURLScheme = ["workflow"]
+
+    def __init__(self, URL = None, **attributes ):
+
+        if URL == None:
+            URL = "workflow://" + __file__+"/%d" % id(self)
+
+        self._pypeObjects = {}
+
+        PypeObject.__init__(self, URL, **attributes)
+
+        self._referenceRDFGraph = None #place holder for a reference RDF
+
+        
+    def addObject(self, obj):
+        self.addObjects([obj])
+
+    def addObjects(self, objs):
+        """
+        Add data objects into the workflow. One can add also task object to the workflow using this method for
+        non-threaded workflow.
+        """
+        for obj in objs:
+            if obj.URL in self._pypeObjects:
+                if id(self._pypeObjects[obj.URL]) != id(obj):
+                    raise PypeError, "Add different objects with the same URL %s" % obj.URL
+                else:
+                    continue
+            self._pypeObjects[obj.URL] = obj
+
+    def addTask(self, taskObj):
+        self.addTasks([taskObj])
+
+
+    def addTasks(self, taskObjs):
+        """
+        Add tasks into the workflow. The dependent input and output data objects are added automatically too. 
+        It sets the message queue used for communicating between the task thread and the main thread. One has
+        to use addTasks() or addTask() to add task objects to a threaded workflow.
+        """
+        for taskObj in taskObjs:
+            if isinstance(taskObj, PypeTaskCollection):
+                for subTaskObj in taskObj.getTasks() + taskObj.getScatterGatherTasks():
+                    self.addObjects(subTaskObj.inputDataObjs.values())
+                    self.addObjects(subTaskObj.outputDataObjs.values())
+                    self.addObjects(subTaskObj.mutableDataObjs.values())
+                    self.addObject(subTaskObj)
+
+            else:
+                for dObj in taskObj.inputDataObjs.values() +\
+                            taskObj.outputDataObjs.values() +\
+                            taskObj.mutableDataObjs.values() :
+                    if isinstance(dObj, PypeSplittableLocalFile):
+                        self.addObjects([dObj._completeFile])
+                    self.addObjects([dObj])
+
+                self.addObject(taskObj)
+
+            
+    def removeTask(self, taskObj):
+        self.removeTasks([taskObj])
+        
+    def removeTasks(self, taskObjs ):
+        """
+        Remove tasks from the workflow.
+        """
+        self.removeObjects(taskObjs)
+            
+    def removeObjects(self, objs):
+        """
+        Remove objects from the workflow. If the object cannot be found, a PypeError is raised.
+        """
+        for obj in objs:
+            if obj.URL in self._pypeObjects:
+                del self._pypeObjects[obj.URL]
+            else:
+                raise PypeError, "Unable to remove %s from the graph. (Object not found)" % obj.URL
+
+    def updateURL(self, oldURL, newURL):
+        obj = self._pypeObjects[oldURL]
+        obj._updateURL(newURL)
+        self._pypeObjects[newURL] = obj
+        del self._pypeObjects[oldURL]
+
+
+            
+    @property
+    def _RDFGraph(self):
+        # expensive to recompute
+        graph = Graph()
+        for URL, obj in self._pypeObjects.iteritems():
+            for s,p,o in obj._RDFGraph:
+                graph.add( (s,p,o) )
+        return graph
+
+    def setReferenceRDFGraph(self, fn):
+        self._referenceRDFGraph = Graph()
+        self._referenceRDFGraph.load(fn)
+        refMD5s = self._referenceRDFGraph.subject_objects(pypeNS["codeMD5digest"])
+        for URL, md5digest in refMD5s:
+            obj = self._pypeObjects[str(URL)]
+            obj.setReferenceMD5(md5digest)
+
+    def _graphvizDot(self, shortName=False):
+        graph = self._RDFGraph
+        dotStr = StringIO()
+        shapeMap = {"file":"box", "state":"box", "task":"component"}
+        colorMap = {"file":"yellow", "state":"cyan", "task":"green"}
+        dotStr.write( 'digraph "%s" {\n rankdir=LR;' % self.URL)
+        for URL in self._pypeObjects.keys():
+            URLParseResult = urlparse(URL)
+            if URLParseResult.scheme not in shapeMap:
+                continue
+            else:
+                shape = shapeMap[URLParseResult.scheme]
+                color = colorMap[URLParseResult.scheme]
+
+                s = URL
+                if shortName == True:
+                    s = URLParseResult.scheme + "://..." + URLParseResult.path.split("/")[-1] 
+                dotStr.write( '"%s" [shape=%s, fillcolor=%s, style=filled];\n' % (s, shape, color))
+
+        for row in graph.query('SELECT ?s ?o WHERE {?s pype:prereq ?o . }', initNs=dict(pype=pypeNS)):
+            s, o = row
+            if shortName == True:
+                    s = urlparse(s).scheme + "://..." + urlparse(s).path.split("/")[-1] 
+                    o = urlparse(o).scheme + "://..." + urlparse(o).path.split("/")[-1] 
+            dotStr.write( '"%s" -> "%s";\n' % (o, s))
+        for row in graph.query('SELECT ?s ?o WHERE {?s pype:hasMutable ?o . }', initNs=dict(pype=pypeNS)):
+            s, o = row
+            if shortName == True:
+                    s = urlparse(s).scheme + "://..." + urlparse(s).path.split("/")[-1] 
+                    o = urlparse(o).scheme + "://..." + urlparse(o).path.split("/")[-1] 
+            dotStr.write( '"%s" -- "%s" [arrowhead=both, style=dashed ];\n' % (s, o))
+        dotStr.write ("}")
+        return dotStr.getvalue()
+
+    @property
+    def graphvizDot(self):
+        return self._graphvizDot()
+
+    @property
+    def graphvizShortNameDot(self):
+        return self._graphvizDot(shortName = True)
+
+    @property
+    def makeFileStr(self):
+        """
+        generate a string that has the information of the execution dependency in
+        a "Makefile" like format. It can be written into a "Makefile" and
+        executed by "make".
+        """
+        for URL in self._pypeObjects.keys():
+            URLParseResult = urlparse(URL)
+            if URLParseResult.scheme != "task": continue
+            taskObj = self._pypeObjects[URL]
+            if not hasattr(taskObj, "script"):
+                raise TaskTypeError("can not convert non shell script based workflow to a makefile") 
+        makeStr = StringIO()
+        for URL in self._pypeObjects.keys():
+            URLParseResult = urlparse(URL)
+            if URLParseResult.scheme != "task": continue
+            taskObj = self._pypeObjects[URL]
+            inputFiles = taskObj.inputDataObjs
+            outputFiles = taskObj.outputDataObjs
+            #for oStr in [o.localFileName for o in outputFiles.values()]:
+            if 1:
+                oStr = " ".join( [o.localFileName for o in outputFiles.values()])
+
+                iStr = " ".join([i.localFileName for i in inputFiles.values()])
+                makeStr.write( "%s:%s\n" % ( oStr, iStr ) )
+                makeStr.write( "\t%s\n\n" % taskObj.script )
+        makeStr.write("all: %s" %  " ".join([o.localFileName for o in outputFiles.values()]) )
+        return makeStr.getvalue()
+
+    @staticmethod
+    def getSortedURLs(rdfGraph, objs):
+        if len(objs) != 0:
+            connectedPypeNodes = set()
+            for obj in objs:
+                if isinstance(obj, PypeSplittableLocalFile):
+                    obj = obj._completeFile
+                for x in rdfGraph.transitive_objects(URIRef(obj.URL), pypeNS["prereq"]):
+                    connectedPypeNodes.add(x)
+            tSortedURLs = PypeGraph(rdfGraph, connectedPypeNodes).tSort( )
+        else:
+            tSortedURLs = PypeGraph(rdfGraph).tSort( )
+        return tSortedURLs
+
+    def refreshTargets(self, objs = [], callback = (None, None, None) ):
+        """
+        Execute the DAG to reach all objects in the "objs" argument.
+        """
+        tSortedURLs = self.getSortedURLs(self._RDFGraph, objs)
+        for URL in tSortedURLs:
+            obj = self._pypeObjects[URL]
+            if not isinstance(obj, PypeTaskBase):
+                continue
+            else:
+                obj()
+                obj.finalize()
+        self._runCallback(callback)
+        return True
+
+    def _runCallback(self, callback = (None, None, None ) ):
+        if callback[0] != None and callable(callback[0]):
+            argv = []
+            kwargv = {}
+            if callback[1] != None and isinstance( callback[1], type(list()) ):
+                argv = callback[1]
+            else:
+                raise TaskExecutionError( "callback argument type error") 
+
+            if callback[2] != None and isinstance( callback[1], type(dict()) ):
+                kwargv = callback[2]
+            else:
+                raise TaskExecutionError( "callback argument type error") 
+
+            callback[0](*argv, **kwargv)
+
+        elif callback[0] != None:
+            raise TaskExecutionError( "callback is not callable") 
+    
+    @property
+    def dataObjects( self ):
+        return [ o for o in self._pypeObjects.values( ) if isinstance( o, PypeDataObjectBase )]
+    
+    @property
+    def tasks( self ):
+        return [ o for o in self._pypeObjects.values( ) if isinstance( o, PypeTaskBase )]
+
+    @property
+    def inputDataObjects(self):
+        graph = self._RDFGraph
+        inputObjs = []
+        for obj in self.dataObjects:
+            r = graph.query('SELECT ?o WHERE {<%s> pype:prereq ?o .  }' % obj.URL, initNs=dict(pype=pypeNS))
+            if len(r) == 0:
+                inputObjs.append(obj)
+        return inputObjs
+     
+    @property
+    def outputDataObjects(self):
+        graph = self._RDFGraph
+        outputObjs = []
+        for obj in self.dataObjects:
+            r = graph.query('SELECT ?s WHERE {?s pype:prereq <%s> .  }' % obj.URL, initNs=dict(pype=pypeNS))
+            if len(r) == 0:
+                outputObjs.append(obj)
+        return outputObjs
+
+def PypeMPWorkflow(URL = None, **attributes):
+    """Factory for the workflow using multiprocessing.
+    """
+    th = _PypeProcsHandler()
+    mq = multiprocessing.Queue()
+    se = multiprocessing.Event()
+    return _PypeConcurrentWorkflow(URL=URL, thread_handler=th, messageQueue=mq, shutdown_event=se,
+            attributes=attributes)
+
+def PypeThreadWorkflow(URL = None, **attributes):
+    """Factory for the workflow using threading.
+    """
+    th = _PypeThreadsHandler()
+    mq = Queue.Queue()
+    se = threading.Event()
+    return _PypeConcurrentWorkflow(URL=URL, thread_handler=th, messageQueue=mq, shutdown_event=se,
+            attributes=attributes)
+
+class _PypeConcurrentWorkflow(PypeWorkflow):
+    """ 
+    Representing a PypeWorkflow that can excute tasks concurrently using threads. It
+    assume all tasks block until they finish. PypeTask and PypeDataObjects can be added
+    into the workflow and executed through the instance methods.
+    """
+
+    CONCURRENT_THREAD_ALLOWED = 16
+    MAX_NUMBER_TASK_SLOT = CONCURRENT_THREAD_ALLOWED
+
+    @classmethod
+    def setNumThreadAllowed(cls, nT, nS):
+        """
+        Override the default number of threads used to run the tasks with this method.
+        """
+        cls.CONCURRENT_THREAD_ALLOWED = nT
+        cls.MAX_NUMBER_TASK_SLOT = nS
+
+    def __init__(self, URL, thread_handler, messageQueue, shutdown_event, attributes):
+        PypeWorkflow.__init__(self, URL, **attributes )
+        self.thread_handler = thread_handler
+        self.messageQueue = messageQueue
+        self.shutdown_event = shutdown_event
+        self.jobStatusMap = dict()
+
+    def addTasks(self, taskObjs):
+        """
+        Add tasks into the workflow. The dependent input and output data objects are added automatically too. 
+        It sets the message queue used for communicating between the task thread and the main thread. One has
+        to use addTasks() or addTask() to add task objects to a threaded workflow.
+        """
+        for taskObj in taskObjs:
+            if isinstance(taskObj, PypeTaskCollection):
+                for subTaskObj in taskObj.getTasks() + taskObj.getScatterGatherTasks():
+                    if not isinstance(subTaskObj, PypeThreadTaskBase):
+                        raise TaskTypeError("Only PypeThreadTask can be added into a PypeThreadWorkflow. The task object %s has type %s " % (subTaskObj.URL, repr(type(subTaskObj))))
+                    subTaskObj.setMessageQueue(self.messageQueue)
+                    subTaskObj.setShutdownEvent(self.shutdown_event)
+            else:
+                if not isinstance(taskObj, PypeThreadTaskBase):
+                    raise TaskTypeError("Only PypeThreadTask can be added into a PypeThreadWorkflow. The task object has type %s " % repr(type(taskObj)))
+                taskObj.setMessageQueue(self.messageQueue)
+                taskObj.setShutdownEvent(self.shutdown_event)
+
+        PypeWorkflow.addTasks(self, taskObjs)
+
+    def refreshTargets(self, objs=None,
+                       callback=(None, None, None),
+                       updateFreq=None,
+                       exitOnFailure=True):
+        if objs is None:
+            objs = []
+        task2thread = {}
+        try:
+            rtn = self._refreshTargets(task2thread, objs = objs, callback = callback, updateFreq = updateFreq, exitOnFailure = exitOnFailure)
+            return rtn
+        except:
+            tb = traceback.format_exc()
+            self.shutdown_event.set()
+            logger.critical("Any exception caught in RefreshTargets() indicates an unrecoverable error. Shutting down...")
+            shutdown_msg = """
+            "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+            "! Please wait for all threads / processes to terminate !"
+            "! Also, maybe use 'ps' or 'qstat' to check all threads,!"
+            "! processes and/or jobs are terminated cleanly.        !"
+            "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+            """
+            import warnings
+            warnings.warn(shutdown_msg)
+            th = self.thread_handler
+            threads = list(task2thread.values())
+            logger.warning("#tasks=%d, #alive=%d" %(len(threads), th.alive(threads)))
+            try:
+                while th.alive(threads):
+                    th.join(threads, 2)
+                    logger.warning("Now, #tasks=%d, #alive=%d" %(len(threads), th.alive(threads)))
+            except (KeyboardInterrupt, SystemExit) as e:
+                logger.debug("Interrupted while joining threads (while handling exception from RefreshTargets()). Trying to terminate any working processes before final exit.")
+                th.notifyTerminate(threads)
+            raise Exception('Caused by:\n' + tb)
+
+
+    def _refreshTargets(self, task2thread, objs,
+                        callback,
+                        updateFreq,
+                        exitOnFailure):
+        thread = self.thread_handler.create
+
+        rdfGraph = self._RDFGraph # expensive to recompute, should not change during execution
+        tSortedURLs = self.getSortedURLs(rdfGraph, objs)
+
+        sortedTaskList = [ (str(u), self._pypeObjects[u], self._pypeObjects[u].getStatus()) for u in tSortedURLs
+                            if isinstance(self._pypeObjects[u], PypeTaskBase) ]
+        self.jobStatusMap = dict( ( (t[0], t[2]) for t in sortedTaskList ) )
+        logger.info("# of tasks in complete graph: %d" %(
+            len(sortedTaskList),
+            ))
+
+        prereqJobURLMap = {}
+
+        for URL, taskObj, tStatus in sortedTaskList:
+            prereqJobURLs = [str(u) for u in rdfGraph.transitive_objects(URIRef(URL), pypeNS["prereq"])
+                                    if isinstance(self._pypeObjects[str(u)], PypeTaskBase) and str(u) != URL ]
+
+            prereqJobURLMap[URL] = prereqJobURLs
+
+            logger.debug("Determined prereqs for %r to be %r" % (URL, ", ".join(prereqJobURLs)))
+
+            if taskObj.nSlots > self.MAX_NUMBER_TASK_SLOT:
+                raise TaskExecutionError("%s requests more %s task slots which is more than %d task slots allowed" %
+                                          (str(URL), taskObj.nSlots, self.MAX_NUMBER_TASK_SLOT) )
+
+        sleep_time = 0
+        nSubmittedJob = 0
+        usedTaskSlots = 0
+        loopN = 0
+        lastUpdate = None
+        activeDataObjs = set() #keep a set of output data object. repeats are illegal.
+        mutableDataObjs = set() #keep a set of mutable data object. a task will be delayed if a running task has the same output.
+        updatedTaskURLs = set() #to avoid extra stat-calls
+        failedJobCount = 0
+        succeededJobCount = 0
+        jobsReadyToBeSubmitted = []
+
+        while 1:
+
+            loopN += 1
+            if not ((loopN - 1) & loopN):
+                # exponential back-off for logging
+                logger.info("tick: %d, #updatedTasks: %d, sleep_time=%f" %(loopN, len(updatedTaskURLs), sleep_time))
+
+            for URL, taskObj, tStatus in sortedTaskList:
+                if self.jobStatusMap[URL] != TaskInitialized:
+                    continue
+                logger.debug(" #outputDataObjs: %d; #mutableDataObjs: %d" %(
+                    len(taskObj.outputDataObjs.values()),
+                    len(taskObj.mutableDataObjs.values()),
+                    ))
+                prereqJobURLs = prereqJobURLMap[URL]
+
+                logger.debug(' preqs of %s:' %URL)
+                for u in prereqJobURLs:
+                    logger.debug('  %s: %s' %(self.jobStatusMap[u], u))
+                if any(self.jobStatusMap[u] != "done" for u in prereqJobURLs):
+                    # Note: If self.jobStatusMap[u] raises, then the sorting was wrong.
+                    #logger.debug('Prereqs not done! %s' %URL)
+                    continue
+                # Check for mutable collisions; delay task if any.
+                outputCollision = False
+                for dataObj in taskObj.mutableDataObjs.values():
+                    for fromTaskObjURL, mutableDataObjURL in mutableDataObjs:
+                        if dataObj.URL == mutableDataObjURL and taskObj.URL != fromTaskObjURL:
+                            logger.debug("mutable output collision detected for data object %r betw %r and %r" %(
+                                dataObj, dataObj.URL, mutableDataObjURL))
+                            outputCollision = True
+                            break
+                if outputCollision:
+                    continue
+                # Check for illegal collisions.
+                if len(activeDataObjs) < 100:
+                    # O(n^2) on active tasks, but pretty fast.
+                    for dataObj in taskObj.outputDataObjs.values():
+                        for fromTaskObjURL, activeDataObjURL in activeDataObjs:
+                            if dataObj.URL == activeDataObjURL and taskObj.URL != fromTaskObjURL:
+                                raise Exception("output collision detected for data object %r betw %r and %r" %(
+                                    dataObj, dataObj.URL, activeDataObjURL))
+                # We use 'updatedTaskURLs' to short-circuit 'isSatisfied()', to avoid many stat-calls.
+                # Note: Sorting should prevent FileNotExistError in isSatisfied().
+                if not (set(prereqJobURLs) & updatedTaskURLs) and taskObj.isSatisfied():
+                    #taskObj.setStatus(pypeflow.task.TaskDone) # Safe b/c thread is not running yet, and all prereqs are done.
+                    logger.info(' Skipping already done task: %s' %(URL,))
+                    logger.debug(' (Status was %s)' %(self.jobStatusMap[URL],))
+                    taskObj.setStatus(TaskDone) # to avoid re-stat on subsequent call to refreshTargets()
+                    self.jobStatusMap[str(URL)] = TaskDone # to avoid re-stat on *this* call
+                    successfullTask = self._pypeObjects[URL]
+                    successfullTask.finalize()
+                    continue
+                self.jobStatusMap[str(URL)] = "ready" # in case not all ready jobs are given threads immediately, to avoid re-stat
+                jobsReadyToBeSubmitted.append( (URL, taskObj) )
+                for dataObj in taskObj.outputDataObjs.values():
+                    logger.debug( "add active data obj: %s" %(dataObj,))
+                    activeDataObjs.add( (taskObj.URL, dataObj.URL) )
+                for dataObj in taskObj.mutableDataObjs.values():
+                    logger.debug( "add mutable data obj: %s" %(dataObj,))
+                    mutableDataObjs.add( (taskObj.URL, dataObj.URL) )
+
+            logger.debug( "#jobsReadyToBeSubmitted: %d" % len(jobsReadyToBeSubmitted) )
+
+            numAliveThreads = self.thread_handler.alive(task2thread.values())
+            logger.debug( "Total # of running threads: %d; alive tasks: %d; sleep=%f, loopN=%d" % (
+                threading.activeCount(), numAliveThreads, sleep_time, loopN) )
+            if numAliveThreads == 0 and len(jobsReadyToBeSubmitted) == 0 and self.messageQueue.empty(): 
+                #TODO: better job status detection. messageQueue should be empty and all return condition should be "done", or "fail"
+                logger.info( "_refreshTargets() finished with no thread running and no new job to submit" )
+                for URL in task2thread:
+                    assert self.jobStatusMap[str(URL)] in ("done", "fail"), "status(%s)==%r" %(
+                            URL, self.jobStatusMap[str(URL)])
+                break # End of loop!
+
+            while jobsReadyToBeSubmitted:
+                URL, taskObj  = jobsReadyToBeSubmitted[0]
+                numberOfEmptySlot = self.MAX_NUMBER_TASK_SLOT - usedTaskSlots 
+                logger.debug( "#empty_slots = %d/%d; #jobs_ready=%d" % (numberOfEmptySlot, self.MAX_NUMBER_TASK_SLOT, len(jobsReadyToBeSubmitted)))
+                if numberOfEmptySlot >= taskObj.nSlots and numAliveThreads < self.CONCURRENT_THREAD_ALLOWED:
+                    t = thread(target = taskObj)
+                    t.start()
+                    task2thread[URL] = t
+                    nSubmittedJob += 1
+                    usedTaskSlots += taskObj.nSlots
+                    numAliveThreads += 1
+                    self.jobStatusMap[URL] = "submitted"
+                    # Note that we re-submit completed tasks whenever refreshTargets() is called.
+                    logger.debug("Submitted %r" %URL)
+                    logger.debug(" Details: %r" %taskObj)
+                    jobsReadyToBeSubmitted.pop(0)
+                else:
+                    break
+
+            time.sleep(sleep_time)
+            if updateFreq != None:
+                elapsedSeconds = updateFreq if lastUpdate==None else (datetime.datetime.now()-lastUpdate).seconds
+                if elapsedSeconds >= updateFreq:
+                    self._update( elapsedSeconds )
+                    lastUpdate = datetime.datetime.now( )
+
+            sleep_time = sleep_time + 0.1 if (sleep_time < 1) else 1
+            while not self.messageQueue.empty():
+                sleep_time = 0 # Wait very briefly while messages are coming in.
+                URL, message = self.messageQueue.get()
+                updatedTaskURLs.add(URL)
+                self.jobStatusMap[str(URL)] = message
+                logger.debug("message for %s: %r" %(URL, message))
+
+                if message in ["done"]:
+                    successfullTask = self._pypeObjects[str(URL)]
+                    nSubmittedJob -= 1
+                    usedTaskSlots -= successfullTask.nSlots
+                    logger.info("Success (%r). Joining %r..." %(message, URL))
+                    task2thread[URL].join(timeout=10)
+                    #del task2thread[URL]
+                    succeededJobCount += 1
+                    successfullTask.finalize()
+                    for o in successfullTask.outputDataObjs.values():
+                        activeDataObjs.remove( (successfullTask.URL, o.URL) )
+                    for o in successfullTask.mutableDataObjs.values():
+                        mutableDataObjs.remove( (successfullTask.URL, o.URL) )
+                elif message in ["fail"]:
+                    failedTask = self._pypeObjects[str(URL)]
+                    nSubmittedJob -= 1
+                    usedTaskSlots -= failedTask.nSlots
+                    logger.info("Failure (%r). Joining %r..." %(message, URL))
+                    task2thread[URL].join(timeout=10)
+                    #del task2thread[URL]
+                    failedJobCount += 1
+                    failedTask.finalize()
+                    for o in failedTask.outputDataObjs.values():
+                        activeDataObjs.remove( (failedTask.URL, o.URL) )
+                    for o in failedTask.mutableDataObjs.values():
+                        mutableDataObjs.remove( (failedTask.URL, o.URL) )
+                elif message in ["started, runflag: 1"]:
+                    logger.info("Queued %s ..." %repr(URL))
+                elif message in ["started, runflag: 0"]:
+                    logger.debug("Queued %s (already completed) ..." %repr(URL))
+                    raise Exception('It should not be possible to start an already completed task.')
+                else:
+                    logger.warning("Got unexpected message %r from URL %r." %(message, URL))
+
+            for u,s in sorted(self.jobStatusMap.items()):
+                logger.debug("task status: %r, %r, used slots: %d" % (str(u),str(s), self._pypeObjects[str(u)].nSlots))
+
+            if failedJobCount != 0 and (exitOnFailure or succeededJobCount == 0):
+                raise TaskFailureError("Counted %d failure(s) with 0 successes so far." %failedJobCount)
+
+
+        for u,s in sorted(self.jobStatusMap.items()):
+            logger.debug("task status: %s, %r" % (u, s))
+
+        self._runCallback(callback)
+        if failedJobCount != 0:
+            # Slightly different exception when !exitOnFailure.
+            raise LateTaskFailureError("Counted a total of %d failure(s) and %d success(es)." %(
+                failedJobCount, succeededJobCount))
+        return True #TODO: There is no reason to return anything anymore.
+    
+    def _update(self, elapsed):
+        """Can be overridden to provide timed updates during execution"""
+        pass
+
+    def _graphvizDot(self, shortName=False):
+
+        graph = self._RDFGraph
+        dotStr = StringIO()
+        shapeMap = {"file":"box", "state":"box", "task":"component"}
+        colorMap = {"file":"yellow", "state":"cyan", "task":"green"}
+        dotStr.write( 'digraph "%s" {\n rankdir=LR;' % self.URL)
+
+
+        for URL in self._pypeObjects.keys():
+            URLParseResult = urlparse(URL)
+            if URLParseResult.scheme not in shapeMap:
+                continue
+            else:
+                shape = shapeMap[URLParseResult.scheme]
+                color = colorMap[URLParseResult.scheme]
+
+                s = URL
+                if shortName == True:
+                    s = URLParseResult.scheme + "://..." + URLParseResult.path.split("/")[-1] 
+
+                if URLParseResult.scheme == "task":
+                    jobStatus = self.jobStatusMap.get(URL, None)
+                    if jobStatus != None:
+                        if jobStatus == "fail":
+                            color = 'red'
+                        elif jobStatus == "done":
+                            color = 'green'
+                    else:
+                        color = 'white'
+                    
+                dotStr.write( '"%s" [shape=%s, fillcolor=%s, style=filled];\n' % (s, shape, color))
+
+        for row in graph.query('SELECT ?s ?o WHERE {?s pype:prereq ?o . }', initNs=dict(pype=pypeNS)):
+            s, o = row
+            if shortName == True:
+                s = urlparse(s).scheme + "://..." + urlparse(s).path.split("/")[-1] 
+                o = urlparse(o).scheme + "://..." + urlparse(o).path.split("/")[-1] 
+            dotStr.write( '"%s" -> "%s";\n' % (o, s))
+        for row in graph.query('SELECT ?s ?o WHERE {?s pype:hasMutable ?o . }', initNs=dict(pype=pypeNS)):
+            s, o = row
+            if shortName == True:
+                    s = urlparse(s).scheme + "://..." + urlparse(s).path.split("/")[-1] 
+                    o = urlparse(o).scheme + "://..." + urlparse(o).path.split("/")[-1] 
+            dotStr.write( '"%s" -- "%s" [arrowhead=both, style=dashed ];\n' % (s, o))
+        dotStr.write ("}")
+        return dotStr.getvalue()
+
+# For a class-method:
+PypeThreadWorkflow.setNumThreadAllowed = _PypeConcurrentWorkflow.setNumThreadAllowed
+PypeMPWorkflow.setNumThreadAllowed = _PypeConcurrentWorkflow.setNumThreadAllowed
+
+class _PypeThreadsHandler(object):
+    """Stateless method delegator, for injection.
+    """
+    def create(self, target):
+        thread = threading.Thread(target=target)
+        thread.daemon = True  # so it will terminate on exit
+        return thread
+    def alive(self, threads):
+        return sum(thread.is_alive() for thread in threads)
+    def join(self, threads, timeout):
+        then = datetime.datetime.now()
+        for thread in threads:
+            assert thread is not threading.current_thread()
+            if thread.is_alive():
+                to = max(0, timeout - (datetime.datetime.now() - then).seconds)
+                thread.join(to)
+    def notifyTerminate(self, threads):
+        """Assume these are daemon threads.
+        We will attempt to join them all quickly, but non-daemon threads may
+        eventually block the program from quitting.
+        """
+        self.join(threads, 1)
+
+class _PypeProcsHandler(object):
+    """Stateless method delegator, for injection.
+    """
+    def create(self, target):
+        proc = multiprocessing.Process(target=target)
+        return proc
+    def alive(self, procs):
+        return sum(proc.is_alive() for proc in procs)
+    def join(self, procs, timeout):
+        then = datetime.datetime.now()
+        for proc in procs:
+            if proc.is_alive():
+                proc.join((datetime.datetime.now() - then).seconds)
+    def notifyTerminate(self, procs):
+        """This can orphan sub-processes.
+        """
+        for proc in procs:
+            if proc.is_alive():
+                proc.terminate()
+
+
+def defaultOutputTemplate(fn):
+    return fn + ".out"
+
+def applyFOFN( task_fun = None, 
+               fofonFileName = None, 
+               outTemplateFunc = defaultOutputTemplate,
+               nproc = 8 ):
+               
+    tasks = getFOFNMapTasks( FOFNFileName = fofonFileName, 
+                             outTemplateFunc = outTemplateFunc, 
+                             TaskType=PypeThreadTaskBase,
+                             parameters = dict(nSlots = 1))( task_fun )
+
+    wf = PypeThreadWorkflow()
+    wf.CONCURRENT_THREAD_ALLOWED = nproc 
+    wf.MAX_NUMBER_TASK_SLOT = nproc
+    wf.addTasks(tasks)
+    wf.refreshTargets(exitOnFailure=False)
+
+
+if __name__ == "__main__":
+    import doctest
+    doctest.testmod()
diff --git a/pypeFLOW/pypeflow/data.py b/pypeFLOW/pypeflow/data.py
new file mode 100644
index 0000000..43a5dc2
--- /dev/null
+++ b/pypeFLOW/pypeflow/data.py
@@ -0,0 +1,315 @@
+
+# @author Jason Chin
+#
+# Copyright (C) 2010 by Jason Chin 
+# Copyright (C) 2011 by Jason Chin, Pacific Biosciences
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+"""
+
+PypeData: This module defines the general interface and class for PypeData Objects. 
+
+"""
+
+
+from urlparse import urlparse, urljoin
+import platform
+import os, shutil
+from common import pypeNS, PypeObject, PypeError, NotImplementedError
+import logging
+    
+logger = logging.getLogger(__name__)
+
+class FileNotExistError(PypeError):
+    pass
+
+class TypeMismatchError(PypeError):
+    pass
+
+def fn(obj):
+    return obj.localFileName
+
+class PypeDataObjectBase(PypeObject):
+    
+    """ 
+    Represent the common interface for a PypeData object.
+    """
+
+    def __init__(self, URL, **attributes):
+        PypeObject.__init__(self, URL, **attributes)
+        self.verification = []
+        self._mutatble = False
+
+    @property
+    def timeStamp(self):
+        raise NotImplementedError, self.__expr__()
+
+    @property
+    def isMutable(self):
+        return self._mutatble
+
+    @property
+    def exists(self):
+        raise NotImplementedError
+
+    def addVerifyFunction( self, verifyFunction ):
+        self.verification.append( verifyFunction )
+
+    def __str__( self ):
+        return self.URL
+
+    def _updateURL(self, newURL):
+        super(PypeDataObjectBase, self)._updateURL(newURL)
+        self._updatePath()
+
+    def _updatePath(self):
+        URLParseResult = urlparse(self.URL)
+        self.localFileName = URLParseResult.path
+        self._path = self.localFileName #for local file, _path is the same as full local file name
+
+class PypeLocalFile(PypeDataObjectBase):
+
+    """ 
+    Represent a PypeData object that can be accessed as a file in a local
+    filesystem.
+
+    >>> f = PypeLocalFile("file://localhost/test.txt")
+    >>> f.localFileName == "/test.txt"
+    True
+    >>> fn(f)
+    '/test.txt'
+    >>> f = PypeLocalFile("file://localhost/test.txt", False, isFasta = True)
+    >>> f.isFasta == True
+    True
+    """
+    def __repr__(self): return "PypeLocalFile(%r, %r)" %(self.URL, self._path)
+    supportedURLScheme = ["file", "state"]
+    def __init__(self, URL, readOnly = False, **attributes):
+        PypeDataObjectBase.__init__(self, URL, **attributes)
+        self._updatePath()
+        self.readOnly = readOnly
+        self._mutable = attributes.get("mutable", False)
+
+    @property
+    def timeStamp(self):
+        if not os.path.exists(self.localFileName):
+            logger.warning('failed: os.path.exists("%s")\n%s'%(
+                self.localFileName,repr(os.listdir(os.path.dirname(self.localFileName)))))
+            raise FileNotExistError("No such file:%r on %r" % (self.localFileName, platform.node()) )
+        return os.stat(self.localFileName).st_mtime 
+
+    @property
+    def exists(self):
+        return os.path.exists(self.localFileName)
+    
+    def verify(self):
+        logger.debug("Verifying contents of %s" % self.URL)
+        # Get around the NFS problem
+        os.listdir(os.path.dirname(self.path)) 
+        
+        errors = [ ]
+        for verifyFn in self.verification:
+            try:
+                errors.extend( verifyFn(self.path) )
+            except Exception, e:
+                errors.append( str(e) )
+        if len(errors) > 0:
+            for e in errors:
+                logger.error(e)
+        return errors
+    
+    @property
+    def path(self):
+        if self._path == None:
+            raise IOError, "Must resolve this file (%s) with a context " + \
+                            "before you can access .path"
+        return self._path
+    
+    def clean(self):
+        if os.path.exists( self.path ):
+            logger.info("Removing %s" % self.path )
+            if os.path.isdir( self.path ):
+                shutil.rmtree( self.path )
+            else:
+                os.remove( self.path )
+
+class PypeHDF5Dataset(PypeDataObjectBase):  #stub for now Mar 17, 2010
+
+    """ 
+    Represent a PypeData object that is an HDF5 dataset.
+    Not implemented yet.
+    """
+
+    supportedURLScheme = ["hdf5ds"]
+    def __init__(self, URL, readOnly = False, **attributes):
+        PypeDataObjectBase.__init__(self, URL, **attributes)
+        URLParseResult = urlparse(URL)
+        self.localFileName = URLParseResult.path
+        #the rest of the URL goes to HDF5 DS
+
+
+class PypeLocalFileCollection(PypeDataObjectBase):  #stub for now Mar 17, 2010
+
+    """ 
+    Represent a PypeData object that is a composition of multiple files.
+    It will provide a container that allows the tasks to choose one or all file to
+    process.
+    """
+
+    supportedURLScheme = ["files"]
+    def __init__(self, URL, readOnly = False, select = 1, **attributes):
+        """
+           currently we only support select = 1, 
+           namely, we only pass the first file add to the collection to the tasks
+        """
+        PypeDataObjectBase.__init__(self, URL, **attributes)
+        URLParseResult = urlparse(URL)
+        self.compositedDataObjName = URLParseResult.path
+        self.localFileName =  None
+        self._path = None
+        self.readOnly = readOnly
+        self.verification = []
+        self.localFiles = [] # a list of all files within the obj
+        self.select = select
+
+    def addLocalFile(self, pLocalFile):
+        if not isinstance(pLocalFile, PypeLocalFile):
+            raise TypeMismatchError, "only PypeLocalFile object can be added into PypeLocalFileColletion"
+        self.localFiles.append(pLocalFile)
+        if self.select == 1:
+            self.localFileName = self.localFiles[0].localFileName
+            self._path = self.localFileName
+
+    @property
+    def timeStamp(self):
+        if self.localFileName == None:
+            raise PypeError, "No PypeLocalFile is added into the PypeLocalFileColletion yet"
+        if not os.path.exists(self.localFileName):
+            raise FileNotExistError("No such file:%s on %s" % (self.localFileName, platform.node()) )
+        return os.stat(self.localFileName).st_mtime 
+
+    @property
+    def exists(self):
+        if self.localFileName == None:
+            raise PypeError, "No PypeLocalFile is added into the PypeLocalFileColletion yet"
+        return os.path.exists(self.localFileName)
+        
+
+class PypeSplittableLocalFile(PypeDataObjectBase):
+    """ 
+    Represent a PypeData object that has two different local file
+      (1) the whole file (could be a virtual one)
+      (2) the split files
+
+    * Such data object can have either a scatter task attached or a gather task attached.
+    * If a scatter task is attached, the task will be inserted to generate the scattered files.
+    * If a gather task is attached, the task will be inserted to generate the whole file.
+    * If neither scatter task nor gather task is specified, then the file is mostly like interme
+      Namely, the whole file representation is not used any place else.
+    * One can not specify scatter task and gather task for the same object since it will create
+    """
+    supportedURLScheme = ["splittablefile"]
+
+    def __init__(self, URL, readOnly = False, nChunk = 1, **attributes):
+        PypeDataObjectBase.__init__(self, URL, **attributes)
+        self._updatePath()
+        self.readOnly = readOnly
+        self.verification = []
+        self._scatterTask = None
+        self._gatherTask = None
+        self._splittedFiles = []
+        self.nChunk = nChunk
+
+        URLParseResult = urlparse(self.URL)
+        cfURL = "file://%s%s" % (URLParseResult.netloc, URLParseResult.path) 
+
+        self._completeFile = PypeLocalFile(cfURL, readOnly, **attributes)
+
+        dirname, basename = os.path.split(self._path)
+
+        for i in range(nChunk):
+            chunkBasename = "%03d_%s" % (i, basename)
+            if dirname != "":
+                chunkURL = "file://%s%s/%s" % (URLParseResult.netloc, dirname, chunkBasename) 
+            else:
+                chunkURL = "file://%s/%s" % (URLParseResult.netloc, chunkBasename) 
+
+            subfile = PypeLocalFile(chunkURL, readOnly, **attributes)
+            self._splittedFiles.append(subfile) 
+
+    def setGatherTask(self, TaskCreator, TaskType, function):
+        assert self._scatterTask == None
+        inputDataObjs = dict( ( ("subfile%03d" % c[0], c[1]) 
+                                for c in enumerate(self._splittedFiles) ) )
+        outputDataObjs = {"completeFile": self._completeFile}
+        gatherTask = TaskCreator( inputDataObjs = inputDataObjs,
+                                  outputDataObjs = outputDataObjs,
+                                  URL = "task://gather/%s" % self._path ,
+                                  TaskType=TaskType) ( function )
+        self._gatherTask = gatherTask
+
+    def setScatterTask(self, TaskCreator, TaskType, function):
+        assert self._gatherTask == None
+        outputDataObjs = dict( ( ("subfile%03d" % c[0], c[1]) 
+                                for c in enumerate(self._splittedFiles) ) )
+        inputDataObjs = {"completeFile": self._completeFile}
+        scatterTask = TaskCreator( inputDataObjs = inputDataObjs,
+                                   outputDataObjs = outputDataObjs,
+                                   URL = "task://scatter/%s" % self._path ,
+                                   TaskType=TaskType) ( function )
+        self._scatterTask = scatterTask
+
+    def getGatherTask(self):
+        return self._gatherTask
+
+    def getScatterTask(self):
+        return self._scatterTask
+
+    def getSplittedFiles(self):
+        return self._splittedFiles
+
+    @property
+    def timeStamp(self):
+        return self._completeFile.timeStamp
+
+def makePypeLocalFile(aLocalFileName, readOnly = False, scheme="file", **attributes):
+    """
+    >>> f = makePypeLocalFile("/tmp/test.txt")
+    >>> f.localFileName == "/tmp/test.txt"
+    True
+    >>> fn(f)
+    '/tmp/test.txt'
+    """
+    aLocalFileName = os.path.abspath(aLocalFileName)
+
+    #if aLocalFileName.startswith("/"):
+    #    aLocalFileName.lstrip("/")
+    
+    return PypeLocalFile("%s://localhost%s" % (scheme, aLocalFileName), readOnly, **attributes)
+
+def makePypeLocalStateFile(stateName, readOnly = False, **attributes):
+    dirname, basename  = os.path.split(stateName)
+    stateFileName = os.path.join(dirname, "."+basename)
+    return makePypeLocalFile( stateFileName, readOnly = readOnly, scheme = "state", **attributes)
+
+if __name__ == "__main__":
+    import doctest
+    doctest.testmod()
+    
diff --git a/pypeFLOW/pypeflow/pwatcher_bridge.py b/pypeFLOW/pypeflow/pwatcher_bridge.py
new file mode 100644
index 0000000..4b37be9
--- /dev/null
+++ b/pypeFLOW/pypeflow/pwatcher_bridge.py
@@ -0,0 +1,370 @@
+"""Bridge pattern to adapt pypeFLOW with pwatcher.
+
+This is a bit messy, but it avoids re-writing the useful bits
+of pypeFLOW.
+
+With PypeProcWatcherWorkflow, the refreshTargets() loop will
+be single-threaded!
+"""
+from pwatcher import fs_based
+from pypeflow.task import PypeTask, PypeThreadTaskBase, PypeTaskBase, TaskFunctionError
+import pypeflow.controller
+import pypeflow.task
+import collections
+import datetime
+import glob
+import hashlib
+import json
+import logging
+import os
+import pprint
+import re
+import sys
+import time
+import traceback
+
+log = logging.getLogger(__name__)
+
+def PypeProcWatcherWorkflow(
+        URL = None,
+        job_type='local',
+        job_queue='UNSPECIFIED_QUEUE',
+        **attributes):
+    """Factory for the workflow using our new
+    filesystem process watcher.
+    """
+    th = MyPypeFakeThreadsHandler('mypwatcher', job_type, job_queue)
+    mq = MyMessageQueue()
+    se = MyFakeShutdownEvent()
+    return pypeflow.controller._PypeConcurrentWorkflow(URL=URL, thread_handler=th, messageQueue=mq, shutdown_event=se,
+            attributes=attributes)
+
+PypeProcWatcherWorkflow.setNumThreadAllowed = pypeflow.controller._PypeConcurrentWorkflow.setNumThreadAllowed
+
+class Fred(object):
+    """Fake thread.
+    """
+    INITIALIZED = 10
+    STARTED = 20
+    RUNNING = 30
+    JOINED = 40
+    def is_alive(self):
+        return self.__status in (Fred.STARTED, Fred.RUNNING)
+    def start(self):
+        self.__status = Fred.STARTED
+        self.__th.enqueue(self)
+    def join(self, timeout=None):
+        # Maybe we should wait until the sentinel is visible in the filesystem?
+        # Also, if we were STARTED but not RUNNING, then we never did anything!
+
+        #assert self.__status is not Fred.JOINED # Nope. Might be called a 2nd time by notifyTerminate().
+        self.__status = Fred.JOINED
+    # And our own special methods.
+    def task(self):
+        return self.__target
+    def generate(self):
+        self.__target()
+    def setTargetStatus(self, status):
+        self.__target.setStatus(status)
+    def endrun(self, status):
+        """By convention for now, status is one of:
+            'DEAD'
+            'UNSUBMITTED' (a pseudo-status defined in the ready-loop of alive())
+            'EXIT rc'
+        """
+        name = status.split()[0]
+        if name == 'DEAD':
+            log.warning(''.join(traceback.format_stack()))
+            log.error('Task {}\n is DEAD, meaning no HEARTBEAT, but this can be a race-condition. If it was not killed, then restarting might suffice. Otherwise, you might have excessive clock-skew.'.format(self.brief()))
+            self.setTargetStatus(pypeflow.task.TaskFail) # for lack of anything better
+        elif name == 'UNSUBMITTED':
+            log.warning(''.join(traceback.format_stack()))
+            log.error('Task {}\n is UNSUBMITTED, meaning job-submission somehow failed. Possibly a re-start would work. Otherwise, you need to investigate.'.format(self.brief()))
+            self.setTargetStatus(pypeflow.task.TaskFail) # for lack of anything better
+        elif name != 'EXIT':
+            raise Exception('Unexpected status {!r}'.format(name))
+        else:
+            code = int(status.split()[1])
+            if 0 == code:
+                self.__target.check_missing()
+                # TODO: If missing, just leave the status as TaskInitialized?
+            else:
+                log.error('Task {} failed with exit-code={}'.format(self.brief(), code))
+                self.setTargetStatus(pypeflow.task.TaskFail) # for lack of anything better
+        self.__target.finish()
+    def brief(self):
+        return 'Fred{}'.format(self.__target.brief())
+    def __repr__(self):
+        return 'FRED with taskObj={!r}'.format(self.__target)
+    def __init__(self, target, th):
+        assert isinstance(target, MyFakePypeThreadTaskBase)
+        self.__target = target # taskObj?
+        self.__th = th # thread handler
+        self.__status = Fred.INITIALIZED
+
+class MyMessageQueue(object):
+    def empty(self):
+        return not self.__msgq
+    def get(self):
+        return self.__msgq.popleft()
+    def put(self, msg):
+        self.__msgq.append(msg)
+    def __init__(self):
+        self.__msgq = collections.deque()
+
+class MyFakeShutdownEvent(object):
+    """I do not see any code which actually uses the
+    shutdown_event, but if needed someday, we can use this.
+    """
+    def set(self):
+        pass
+
+_prev_q = {} # To avoid excessive log output.
+
+class MyPypeFakeThreadsHandler(object):
+    """Stateless method delegator, for injection.
+    """
+    def create(self, target):
+        thread = Fred(target=target, th=self)
+        return thread
+    def alive(self, threads):
+        ready = dict()
+        while self.__jobq:
+            fred = self.__jobq.popleft()
+            taskObj = fred.task()
+            fred.generate() # -> taskObj->generated_script_fn by convention
+            #log.info('param:\n%s' %pprint.pformat(taskObj.parameters)) # I do not think these change.
+            try:
+                script_fn = taskObj.generated_script_fn # BY CONVENTION
+            except AttributeError:
+                log.warning('Missing taskObj.generated_script_fn for task. Maybe we did not need it? Skipping and continuing.')
+                fred.endrun('EXIT 0')
+                continue
+            log.info('script_fn:%s' %repr(script_fn))
+            content = open(script_fn).read()
+            digest = hashlib.sha256(content).hexdigest()
+            jobid = 'J{}'.format(digest)
+            log.info('jobid=%s' %jobid)
+            taskObj.jobid = jobid
+            ready[jobid] = fred
+            self.__known[jobid] = fred
+        if ready:
+            # Start anything in the 'ready' queue.
+            # Note: It is safe to run this block always, but we save a
+            # call to pwatcher with 'if ready'.
+            log.debug('ready dict keys:\n%s' %pprint.pformat(ready.keys()))
+            jobids = dict()
+            #sge_option='-pe smp 8 -q default'
+            for jobid, fred in ready.iteritems():
+                generated_script_fn = fred.task().generated_script_fn
+                rundir, basename = os.path.split(os.path.abspath(generated_script_fn))
+                cmd = '/bin/bash {}'.format(basename)
+                sge_option = fred.task().parameters.get('sge_option', None)
+                job_type = fred.task().parameters.get('job_type', None)
+                job_queue = fred.task().parameters.get('job_queue', None)
+                job_nprocs = fred.task().parameters.get('job_nprocs', None)
+                jobids[jobid] = {
+                    'cmd': cmd,
+                    'rundir': rundir,
+                    # These are optional:
+                    'job_type': job_type,
+                    'job_queue': job_queue,
+                    'job_nprocs': job_nprocs,
+                    'sge_option': sge_option,
+                }
+            # Also send the default type and queue-name.
+            watcher_args = {
+                    'jobids': jobids,
+                    'job_type': self.__job_type,
+                    'job_queue': self.__job_queue,
+            }
+            with fs_based.process_watcher(self.__state_directory) as watcher:
+                result = watcher.run(**watcher_args)
+                #log.debug('Result of watcher.run()={}'.format(repr(result)))
+                submitted = result['submitted']
+                self.__running.update(submitted)
+                for jobid in set(jobids.keys()) - set(submitted):
+                    fred = ready[jobid]
+                    fred.endrun('UNSUBMITTED')
+
+        watcher_args = {
+            'jobids': list(self.__running),
+            'which': 'list',
+        }
+        with fs_based.process_watcher(self.__state_directory) as watcher:
+            q = watcher.query(**watcher_args)
+        #log.debug('In alive(), result of query:%s' %repr(q))
+        global _prev_q
+        if q != _prev_q:
+            log.debug('In alive(), updated result of query:%s' %repr(q))
+            _prev_q = q
+            _prev_q = None
+        for jobid, status in q['jobids'].iteritems():
+            #log.debug('j={}, s={}'.format(jobid, status))
+            if status.startswith('EXIT') or status.startswith('DEAD'):
+                self.__running.remove(jobid)
+                fred = self.__known[jobid]
+                try:
+                    fred.endrun(status)
+                except Exception as e:
+                    msg = 'Failed to clean-up FakeThread: jobid={} status={}'.format(jobid, repr(status))
+                    log.exception(msg)
+                    raise
+        #log.info('len(jobq)==%d' %len(self.__jobq))
+        #log.info(''.join(traceback.format_stack()))
+        return sum(thread.is_alive() for thread in threads)
+    def join(self, threads, timeout):
+        then = datetime.datetime.now()
+        for thread in threads:
+            #assert thread is not threading.current_thread()
+            if thread.is_alive():
+                to = max(0, timeout - (datetime.datetime.now() - then).seconds)
+        # This is called only in the refreshTargets() catch, so
+        # it can simply terminate all threads.
+                thread.join(to)
+        self.notifyTerminate(threads)
+    def notifyTerminate(self, threads):
+        """Assume these are daemon threads.
+        We will attempt to join them all quickly, but non-daemon threads may
+        eventually block the program from quitting.
+        """
+        pass #self.join(threads, 1)
+        # TODO: Terminate only the jobs for 'threads'.
+        # For now, use 'known' instead of 'infer' b/c we
+        # also want to kill merely queued jobs, though that is currently difficult.
+        watcher_args = {
+            'jobids': list(self.__running),
+            'which': 'known',
+        }
+        with fs_based.process_watcher(self.__state_directory) as watcher:
+            q = watcher.delete(**watcher_args)
+        log.debug('In notifyTerminate(), result of delete:%s' %repr(q))
+
+
+    # And our special methods.
+    def enqueue(self, fred):
+        self.__jobq.append(fred)
+    def __init__(self, state_directory, job_type, job_queue=None):
+        """
+        job_type and job_queue are defaults, possibly over-ridden for specific jobs.
+        Note: job_queue is a string, not a collection. If None, then it would need to
+        come via per-job settings.
+        """
+        self.__state_directory = state_directory
+        self.__job_type = job_type
+        self.__job_queue = job_queue
+        self.__jobq = collections.deque()
+        self.__running = set()
+        self.__known = dict()
+
+class MyFakePypeThreadTaskBase(PypeThreadTaskBase):
+    """Fake for PypeConcurrentWorkflow.
+    It demands a subclass, even though we do not use threads at all.
+    Here, we override everything that it overrides. PypeTaskBase defaults are fine.
+    """
+    @property
+    def nSlots(self):
+        """(I am not sure what happend if > 1, but we will not need that. ~cdunn)
+        Return the required number of slots to run, total number of slots is determined by
+        PypeThreadWorkflow.MAX_NUMBER_TASK_SLOT, increase this number by passing desired number
+        through the "parameters" argument (e.g parameters={"nSlots":2}) to avoid high computationa
+        intensive job running concurrently in local machine One can set the max number of thread
+        of a workflow by PypeThreadWorkflow.setNumThreadAllowed()
+        """
+        try:
+            nSlots = self.parameters["nSlots"]
+        except AttributeError:
+            nSlots = 1
+        except KeyError:
+            nSlots = 1
+        return nSlots
+
+    def setMessageQueue(self, q):
+        self._queue = q
+
+    def setShutdownEvent(self, e):
+        self.shutdown_event = e
+
+    def __call__(self, *argv, **kwargv):
+        """Trap all exceptions, set fail flag, SEND MESSAGE, log, and re-raise.
+        """
+        try:
+            return self.runInThisThread(*argv, **kwargv)
+        except: # and re-raise
+            #log.exception('%s __call__ failed:\n%r' %(type(self).__name__, self))
+            self._status = pypeflow.task.TaskFail  # TODO: Do not touch internals of base class.
+            self._queue.put( (self.URL, pypeflow.task.TaskFail) )
+            raise
+
+    def runInThisThread(self, *argv, **kwargv):
+        """
+        Similar to the PypeTaskBase.run(), but it provide some machinary to pass information
+        back to the main thread that run this task in a sepearated thread through the standard python
+        queue from the Queue module.
+
+        We expect this to be used *only* for tasks which generate run-scripts.
+        Our version does not actually run the script. Instead, we expect the script-filename to be returned
+        by run().
+        """
+        if self._queue == None:
+            raise Exception('There seems to be a case when self.queue==None, so we need to let this block simply return.')
+        self._queue.put( (self.URL, "started, runflag: %d" % True) )
+        return self.run(*argv, **kwargv)
+
+    # We must override this from PypeTaskBase b/c we do *not* produce outputs
+    # immediately.
+    def run(self, *argv, **kwargv):
+        argv = list(argv)
+        argv.extend(self._argv)
+        kwargv.update(self._kwargv)
+
+        inputDataObjs = self.inputDataObjs
+        self.syncDirectories([o.localFileName for o in inputDataObjs.values()])
+
+        outputDataObjs = self.outputDataObjs
+        parameters = self.parameters
+
+        log.info('Running task from function %s()' %(self._taskFun.__name__))
+        rtn = self._runTask(self, *argv, **kwargv)
+
+        if self.inputDataObjs != inputDataObjs or self.parameters != parameters:
+            raise TaskFunctionError("The 'inputDataObjs' and 'parameters' should not be modified in %s" % self.URL)
+            # Jason, note that this only tests whether self.parameters was rebound.
+            # If it is altered, then so is parameters, so the check would pass.
+            # TODO(CD): What is the importance of this test? Should it be fixed or deleted?
+
+        return True # to indicate that it run, since we no longer rely on runFlag
+
+    def check_missing(self):
+        timeout_s = 30
+        sleep_s = .1
+        self.syncDirectories([o.localFileName for o in self.outputDataObjs.values()]) # Sometimes helps in NFS.
+        lastUpdate = datetime.datetime.now()
+        while timeout_s > (datetime.datetime.now()-lastUpdate).seconds:
+            missing = [(k,o) for (k,o) in self.outputDataObjs.iteritems() if not o.exists]
+            if missing:
+                log.debug("%s failed to generate all outputs; %s; missing:\n%s" %(
+                    self.URL, repr(self._status),
+                    pprint.pformat(missing),
+                ))
+                #import commands
+                #cmd = 'pstree -pg -u cdunn'
+                #output = commands.getoutput(cmd)
+                #log.debug('`%s`:\n%s' %(cmd, output))
+                dirs = set(os.path.dirname(o.localFileName) for o in self.outputDataObjs.itervalues())
+                for d in dirs:
+                    log.debug('listdir(%s): %s' %(d, repr(os.listdir(d))))
+                #self._status = pypeflow.task.TaskFail
+                time.sleep(sleep_s)
+                sleep_s *= 2.0
+            else:
+                self._status = pypeflow.task.TaskDone
+                break
+        else:
+            log.info('timeout(%ss) in check_missing()' %timeout_s)
+            self._status = pypeflow.task.TaskFail
+
+    # And our own special methods.
+    def finish(self):
+        self.syncDirectories([o.localFileName for o in self.outputDataObjs.values()])
+        self._queue.put( (self.URL, self._status) )
diff --git a/pypeFLOW/pypeflow/task.py b/pypeFLOW/pypeflow/task.py
new file mode 100644
index 0000000..32564ab
--- /dev/null
+++ b/pypeFLOW/pypeflow/task.py
@@ -0,0 +1,892 @@
+
+# @author Jason Chin
+#
+# Copyright (C) 2010 by Jason Chin 
+# Copyright (C) 2011 by Jason Chin, Pacific Biosciences
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+"""
+
+PypeTask: This module provides the PypeTask class and the decorators that can convert 
+a regular python funtion into a PypeTask instance. 
+
+"""
+
+import pprint
+import inspect
+import hashlib
+import logging
+import copy
+import sys
+import time
+
+PYTHONVERSION = sys.version_info[:2]
+if PYTHONVERSION == (2,5):
+    import simplejson as json
+else:
+    import json
+
+import os
+import shlex
+
+from common import PypeError, PypeObject, pypeNS, runShellCmd, Graph, URIRef, Literal
+from data import FileNotExistError, PypeSplittableLocalFile, makePypeLocalFile
+
+logger = logging.getLogger(__name__)
+
+class TaskFunctionError(PypeError):
+    pass
+
+# These must be strings.
+TaskInitialized = "TaskInitialized"
+TaskDone = "done"
+TaskFail = "fail"
+# TODO(CD): Make user-code compare by variable name.
+
+class PypeTaskBase(PypeObject):
+    """
+    Represent a PypeTask. Subclass it to for different kind of
+    task.
+    """
+
+    supportedURLScheme = ["task"]
+
+    def __init__(self, URL, *argv, **kwargv):
+
+        """
+        Constructor of a PypeTask.
+        """
+
+        PypeObject.__init__(self, URL, **kwargv)
+
+        self._argv = argv
+        self._kwargv = kwargv
+        self._taskFun = kwargv['_taskFun']
+        self._referenceMD5 = None
+        self._status = TaskInitialized
+        self._queue = None
+        self.shutdown_event = None
+        
+
+        for defaultAttr in ["inputDataObjs", "outputDataObjs", "parameters", "mutableDataObjs"]:
+            if defaultAttr not in self.__dict__:
+                self.__dict__[defaultAttr] = {}
+
+        # "input" and "output" short cut
+        if "inputs" in kwargv:
+            self.inputDataObjs.update(kwargv["inputs"])
+            del kwargv["inputs"]
+
+        if "outputs" in kwargv:
+            self.outputDataObjs.update(kwargv["outputs"])
+            del kwargv["outputs"]
+
+        if "mutables" in kwargv:
+            self.mutableDataObjs.update(kwargv["mutables"])
+            del kwargv["mutables"]
+
+        #the keys in inputDataObjs/outputDataObjs/parameters will become a task attribute 
+        for defaultAttr in ["inputDataObjs", "outputDataObjs", "mutableDataObjs", "parameters"]:
+            vars(self).update(self.__dict__[defaultAttr]) 
+
+        if "chunk_id" in kwargv:
+            self.chunk_id = kwargv["chunk_id"]
+
+        self._codeMD5digest = kwargv.get("_codeMD5digest", "")
+        self._paramMD5digest = kwargv.get("_paramMD5digest", "")
+        self._compareFunctions = kwargv.get("_compareFunctions", [ timeStampCompare ])
+
+        for o in self.outputDataObjs.values():
+            if o.readOnly == True:
+                raise PypeError, "Cannot assign read only data object %s for task %s" % (o.URL, self.URL) 
+        
+    @property
+    def status(self):
+        return self._status
+        
+    def setInputs( self, inputDataObjs ):
+        self.inputDataObjs = inputDataObjs
+        vars(self).update( inputDataObjs )
+        
+    def setOutputs( self, outputDataObjs ):
+        self.outputDataObjs = outputDataObjs
+        vars(self).update( outputDataObjs )
+        
+    def setReferenceMD5(self, md5Str):
+        self._referenceMD5 = md5Str
+
+    def _getRunFlag(self):
+        """Determine whether the PypeTask should be run. It can be overridden in
+        subclass to allow more flexible rules.
+        """
+        runFlag = False
+        if self._referenceMD5 is not None and self._referenceMD5 != self._codeMD5digest:
+            self._referenceMD5 = self._codeMD5digest
+            # Code has changed.
+            return True
+        return any( [ f(self.inputDataObjs, self.outputDataObjs, self.parameters) for f in self._compareFunctions] )
+
+    def isSatisfied(self):
+        """Compare dependencies. (Kinda expensive.)
+        Note: Do not call this while the task is actually running!
+        """
+        return not self._getRunFlag()
+
+    def getStatus(self):
+        """
+        Note: Do not call this while the task is actually running!
+        """
+        return self._status
+
+    def setStatus(self, status):
+        """
+        Note: Do not call this while the task is actually running!
+        """
+        assert status in (TaskInitialized, TaskDone, TaskFail)
+        self._status = status
+
+    def _runTask(self, *argv, **kwargv):
+        """ 
+        The method to run the decorated function _taskFun(). It is called through run() of
+        the PypeTask object and it should never be called directly
+
+        TODO: the arg porcessing is still a mess, need to find a better way to do this 
+        """
+        if PYTHONVERSION == (2,5): #TODO(CD): Does this even work anymore?
+            (args, varargs, varkw, defaults)  = inspect.getargspec(self._taskFun)
+            #print  (args, varargs, varkw, defaults)
+        else:
+            argspec = inspect.getargspec(self._taskFun)
+            (args, varargs, varkw, defaults) = argspec.args, argspec.varargs, argspec.keywords, argspec.defaults
+
+        if varkw != None:
+            return self._taskFun(self, *argv, **kwargv)
+        elif varargs != None:
+            return self._taskFun(self, *argv)
+        elif len(args) != 0:
+            nkwarg = {}
+            if defaults != None:
+                defaultArg = args[-len(defaults):]
+                for a in defaultArg:
+                    nkwarg[a] = kwargv[a]
+                return self._taskFun(self, *argv, **nkwarg)
+            else:
+                return self._taskFun(self)
+        else:
+            return self._taskFun(self)
+
+    @property
+    def _RDFGraph(self):
+        graph = Graph()
+        for k,v in self.__dict__.iteritems():
+            if k == "URL": continue
+            if k[0] == "_": continue
+            if k in ["inputDataObjs", "outputDataObjs", "mutableDataObjs", "parameters"]:
+                if k == "inputDataObjs":
+                    for ft, f in v.iteritems():
+                        graph.add( (URIRef(self.URL), pypeNS["prereq"], URIRef(f.URL) ) )
+                elif k == "outputDataObjs":
+                    for ft, f in v.iteritems():
+                        graph.add( (URIRef(f.URL), pypeNS["prereq"], URIRef(self.URL) ) )
+                elif k == "mutableDataObjs":
+                    for ft, f in v.iteritems():
+                        graph.add( (URIRef(self.URL), pypeNS["hasMutable"], URIRef(f.URL)   ) )
+                elif k == "parameters":
+                    graph.add( (URIRef(self.URL), pypeNS["hasParameters"], Literal(json.dumps(v)) ) )
+            
+                continue
+
+            if k in self.inputDataObjs:
+                graph.add( ( URIRef(self.URL), pypeNS["inputDataObject"], URIRef(v.URL) ) )
+                continue
+
+            if k in self.outputDataObjs:
+                graph.add( ( URIRef(self.URL), pypeNS["outputDataObject"], URIRef(v.URL) ) )
+                continue
+
+            if k in self.mutableDataObjs:
+                graph.add( ( URIRef(self.URL), pypeNS["mutableDataObject"], URIRef(v.URL) ) )
+                continue
+
+            if hasattr(v, "URL"):
+                graph.add( ( URIRef(self.URL), pypeNS[k], URIRef(v.URL) ) )
+
+            graph.add(  ( URIRef(self.URL), pypeNS["codeMD5digest"], Literal(self._codeMD5digest) ) )
+            graph.add(  ( URIRef(self.URL), pypeNS["parameterMD5digest"], Literal(self._paramMD5digest) ) )
+
+        return graph
+
+    def __call__(self, *argv, **kwargv):
+        """Trap all exceptions, set fail flag, log, and re-raise.
+        If you need to do more, then over-ride this method.
+        """
+        try:
+            return self.run(*argv, **kwargv)
+        except: # and re-raise
+            logger.exception('PypeTaskBase failed unexpectedly:\n%r' %self)
+            self._status = TaskFail
+            raise
+
+    @staticmethod
+    def syncDirectories(fns):
+        # need the following loop to force the stupid Islon to update the metadata in the directory
+        # otherwise, the file would be appearing as non-existence... sigh, this is a >5 hours hard earned hacks
+        # Yes, a friend at AMD had this problem too. Painful. ~cd
+        for d in set(os.path.dirname(fn) for fn in fns):
+            try:
+                os.listdir(d)
+            except OSError:
+                pass
+
+    def run(self, *argv, **kwargv):
+        """Determine whether a task should be run when called.
+        If the dependency is not satisified,
+        then the _taskFun() will be called to generate the output data objects.
+
+        Derived class can over-ride this method, but if __call__ is over-ridden,
+        then derived must call this explicitly.
+        """
+        argv = list(argv)
+        argv.extend(self._argv)
+        kwargv.update(self._kwargv)
+
+        inputDataObjs = self.inputDataObjs
+        self.syncDirectories([o.localFileName for o in inputDataObjs.values()])
+
+        outputDataObjs = self.outputDataObjs
+        parameters = self.parameters
+
+        logger.info('Running task from function %s()' %(self._taskFun.__name__))
+        rtn = self._runTask(self, *argv, **kwargv)
+
+        if self.inputDataObjs != inputDataObjs or self.parameters != parameters:
+            raise TaskFunctionError("The 'inputDataObjs' and 'parameters' should not be modified in %s" % self.URL)
+        missing = [(k,o) for (k,o) in self.outputDataObjs.iteritems() if not o.exists]
+        if missing:
+            logger.debug("%s fails to generate all outputs; missing:\n%s" %(self.URL, pprint.pformat(missing)))
+            self._status = TaskFail
+        else:
+            self._status = TaskDone
+
+        return True # to indicate that it run, since we no longer rely on runFlag
+
+    def __repr__(self):
+        r = dict()
+        r['_status'] = self._status
+        r['inputDataObjs'] = self.inputDataObjs
+        r['outputDataObjs'] = self.outputDataObjs
+        r['mutableDataObjs'] = self.mutableDataObjs
+        r['parameters'] = self.parameters
+        r['URL'] = getattr(self, 'URL', 'No URL?')
+        r['__class__.__name__'] = self.__class__.__name__
+        return pprint.pformat(r)
+    def brief(self):
+        r = dict()
+        r['URL'] = self.URL
+        return pprint.pformat(r)
+
+    def finalize(self): 
+        """ 
+        This method is intended to be overriden by subclass to provide extra processing that is not 
+        directed related to the processing the input and output data. For the thread workflow, this
+        method will be called in the main thread after a take is finished regardless the job status.
+        """
+        pass
+
+class PypeThreadTaskBase(PypeTaskBase):
+
+    """
+    Represent a PypeTask that can be run within a thread. 
+    Subclass it to for different kind of task.
+    """
+
+    @property
+    def nSlots(self):
+        """
+        Return the required number of slots to run, total number of slots is determined by 
+        PypeThreadWorkflow.MAX_NUMBER_TASK_SLOT, increase this number by passing desired number 
+        through the "parameters" argument (e.g parameters={"nSlots":2}) to avoid high computationa 
+        intensive job running concurrently in local machine One can set the max number of thread 
+        of a workflow by PypeThreadWorkflow.setNumThreadAllowed()
+        """
+        try:
+            nSlots = self.parameters["nSlots"]
+        except AttributeError:
+            nSlots = 1
+        except KeyError:
+            nSlots = 1
+        return nSlots
+
+
+    def setMessageQueue(self, q):
+        self._queue = q
+
+    def setShutdownEvent(self, e):
+        self.shutdown_event = e
+
+    def __call__(self, *argv, **kwargv):
+        """Trap all exceptions, set fail flag, SEND MESSAGE, log, and re-raise.
+        """
+        try:
+            return self.runInThisThread(*argv, **kwargv)
+        except: # and re-raise
+            logger.exception('PypeTaskBase failed:\n%r' %self)
+            self._status = TaskFail  # TODO: Do not touch internals of base class.
+            self._queue.put( (self.URL, TaskFail) )
+            raise
+
+    def runInThisThread(self, *argv, **kwargv):
+        """
+        Similar to the PypeTaskBase.run(), but it provide some machinary to pass information
+        back to the main thread that run this task in a sepearated thread through the standard python
+        queue from the Queue module.
+        """
+        if self._queue == None:
+            logger.debug('Testing threads w/out queue?')
+            self.run(*argv, **kwargv)
+            # return
+            # raise until we know what this should do.
+            raise Exception('There seems to be a case when self.queue==None, so we need to let this block simply return.')
+
+        self._queue.put( (self.URL, "started, runflag: %d" % True) )
+        self.run(*argv, **kwargv)
+
+        self.syncDirectories([o.localFileName for o in self.outputDataObjs.values()])
+
+        self._queue.put( (self.URL, self._status) )
+
+class PypeDistributiableTaskBase(PypeThreadTaskBase):
+
+    """
+    Represent a PypeTask that can be run within a thread or submit to
+    a grid-engine like job scheduling system. 
+    Subclass it to for different kind of task.
+    """
+
+    def __init__(self, URL, *argv, **kwargv):
+        PypeTaskBase.__init__(self, URL, *argv, **kwargv)
+        self.distributed = True
+
+
+class PypeTaskCollection(PypeObject):
+
+    """
+    Represent an object that encapsules a number of tasks
+    """
+
+    supportedURLScheme = ["tasks"]
+    def __init__(self, URL, tasks = [], scatterGatherTasks = [], **kwargv):
+        PypeObject.__init__(self, URL, **kwargv)
+        self._tasks = tasks[:]
+        self._scatterGatherTasks = scatterGatherTasks[:]
+
+    def addTask(self, task):
+        self._tasks.append(task)
+
+    def getTasks(self):
+        return self._tasks
+
+    def addScatterGatherTask(self, task):
+        self._scatterGatherTasks.append(task)
+
+    def getScatterGatherTasks(self):
+        return self._scatterGatherTasks
+
+    def __getitem__(self, k):
+        return self._tasks[k]
+
+_auto_names = set()
+def _unique_name(name):
+    """
+    >>> def foo(): pass
+    >>> _unique_name('foo')
+    'foo'
+    >>> _unique_name('foo')
+    'foo.01'
+    >>> _unique_name('foo')
+    'foo.02'
+    """
+    if name in _auto_names:
+        n = 0
+        while True:
+            n += 1
+            try_name = '%s.%02d' %(name, n)
+            if try_name not in _auto_names:
+                break
+        name = try_name
+    _auto_names.add(name)
+    return name
+def _auto_task_url(taskFun):
+    # Note: in doctest, the filename would be weird.
+    return "task://" + inspect.getfile(taskFun) + "/"+ _unique_name(taskFun.func_name)
+
+def PypeTask(**kwargv):
+
+    """
+    A decorator that converts a function into a PypeTaskBase object.
+
+    >>> import os, time 
+    >>> from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+    >>> from pypeflow.task import *
+    >>> try:
+    ...     os.makedirs("/tmp/pypetest")
+    ...     _ = os.system("rm -f /tmp/pypetest/*")   
+    ... except Exception:
+    ...     pass
+    >>> time.sleep(.1)
+    >>> fin = makePypeLocalFile("/tmp/pypetest/testfile_in", readOnly=False)
+    >>> fout = makePypeLocalFile("/tmp/pypetest/testfile_out", readOnly=False)
+    >>> @PypeTask(outputs={"test_out":fout},
+    ...           inputs={"test_in":fin},
+    ...           parameters={"a":'I am "a"'}, **{"b":'I am "b"'})
+    ... def test(self):
+    ...     print test.test_in.localFileName
+    ...     print test.test_out.localFileName
+    ...     os.system( "touch %s" % fn(test.test_out) )
+    ...     print self.test_in.localFileName
+    ...     print self.test_out.localFileName
+    ...     pass
+    >>> type(test) 
+    <class 'pypeflow.task.PypeTaskBase'>
+    >>> test.test_in.localFileName
+    '/tmp/pypetest/testfile_in'
+    >>> test.test_out.localFileName
+    '/tmp/pypetest/testfile_out'
+    >>> os.system( "touch %s" %  ( fn(fin))  )
+    0
+    >>> timeStampCompare(test.inputDataObjs, test.outputDataObjs, test.parameters)
+    True
+    >>> print test._getRunFlag()
+    True
+    >>> test()
+    /tmp/pypetest/testfile_in
+    /tmp/pypetest/testfile_out
+    /tmp/pypetest/testfile_in
+    /tmp/pypetest/testfile_out
+    True
+    >>> timeStampCompare(test.inputDataObjs, test.outputDataObjs, test.parameters)
+    False
+    >>> print test._getRunFlag()
+    False
+    >>> print test.a
+    I am "a"
+    >>> print test.b
+    I am "b"
+    >>> os.system( "touch %s" %  (fn(fin))  )
+    0
+    >>> # test PypeTask.finalize()
+    >>> from controller import PypeWorkflow
+    >>> wf = PypeWorkflow()
+    >>> wf.addTask(test)
+    >>> def finalize(self):
+    ...     def f():
+    ...         print "in finalize:", self._status
+    ...     return f
+    >>> test.finalize = finalize(test)  # For testing only. Please don't do this in your code. The PypeTask.finalized() is intended to be overriden by subclasses. 
+    >>> wf.refreshTargets( objs = [fout] )
+    /tmp/pypetest/testfile_in
+    /tmp/pypetest/testfile_out
+    /tmp/pypetest/testfile_in
+    /tmp/pypetest/testfile_out
+    in finalize: done
+    True
+    >>> #The following code show how to set up a task with a PypeThreadWorkflow that allows running multitple tasks in parallel. 
+    >>> from pypeflow.controller import PypeThreadWorkflow
+    >>> wf = PypeThreadWorkflow()
+    >>> @PypeTask(outputDataObjs={"test_out":fout},
+    ...           inputDataObjs={"test_in":fin},
+    ...           TaskType=PypeThreadTaskBase,
+    ...           parameters={"a":'I am "a"'}, **{"b":'I am "b"'})
+    ... def test(self):
+    ...     print test.test_in.localFileName
+    ...     print test.test_out.localFileName
+    ...     os.system( "touch %s" % fn(test.test_out) )
+    ...     print self.test_in.localFileName
+    ...     print self.test_out.localFileName
+    >>> wf.addTask(test)
+    >>> def finalize(self):
+    ...     def f():
+    ...         print "in finalize:", self._status
+    ...     return f
+    >>> test.finalize = finalize(test)  # For testing only. Please don't do this in your code. The PypeTask.finalized() is intended to be overided by subclasses. 
+    >>> wf.refreshTargets( objs = [fout] ) #doctest: +SKIP
+    """
+
+    def f(taskFun):
+
+        TaskType = kwargv.get("TaskType", PypeTaskBase)
+
+        if "TaskType" in kwargv:
+            del kwargv["TaskType"]
+
+        kwargv["_taskFun"] = taskFun
+
+        if kwargv.get("URL",None) == None:
+            kwargv["URL"] = _auto_task_url(taskFun)
+        try:
+            kwargv["_codeMD5digest"] = hashlib.md5(inspect.getsource(taskFun)).hexdigest()
+        except IOError: #python2.7 seems having problem to get source code from docstring, this is a work around to make docstring test working
+            kwargv["_codeMD5digest"] = ""
+        kwargv["_paramMD5digest"] = hashlib.md5(repr(kwargv)).hexdigest()
+
+        newKwargv = copy.copy(kwargv)
+        inputDataObjs = kwargv.get("inputDataObjs",{}) 
+        inputDataObjs.update(kwargv.get("inputs", {}))
+        outputDataObjs = kwargv.get("outputDataObjs",{}) 
+        outputDataObjs.update(kwargv.get("outputs", {}))
+        newInputs = {}
+        for inputKey, inputDO in inputDataObjs.items():
+            if isinstance(inputDO, PypeSplittableLocalFile):
+                newInputs[inputKey] = inputDO._completeFile
+            else:
+                newInputs[inputKey] = inputDO
+
+        newOutputs = {}
+        for outputKey, outputDO in outputDataObjs.items():
+            if isinstance(outputDO, PypeSplittableLocalFile):
+                newOutputs[outputKey] = outputDO._completeFile
+            else:
+                newOutputs[outputKey] = outputDO
+
+        newKwargv["inputDataObjs"] = newInputs
+        newKwargv["outputDataObjs"] = newOutputs
+        task = TaskType(**newKwargv)
+        task.__doc__ = taskFun.__doc__
+        return task
+
+    return f
+
+def PypeShellTask(**kwargv):
+
+    """
+    A function that converts a shell script into a PypeTaskBase object.
+
+    >>> import os, time 
+    >>> from pypeflow.data import PypeLocalFile, makePypeLocalFile, fn
+    >>> from pypeflow.task import *
+    >>> try:
+    ...     os.makedirs("/tmp/pypetest")
+    ...     _ = os.system("rm -f /tmp/pypetest/*")
+    ... except Exception:
+    ...     pass
+    >>> time.sleep(.1)
+    >>> fin = makePypeLocalFile("/tmp/pypetest/testfile_in", readOnly=False)
+    >>> fout = makePypeLocalFile("/tmp/pypetest/testfile_out", readOnly=False)
+    >>> f = open("/tmp/pypetest/shellTask.sh","w")
+    >>> f.write( "touch %s" % (fn(fout)))
+    >>> f.close()
+    >>> shellTask = PypeShellTask(outputDataObjs={"test_out":fout},
+    ...                           inputDataObjs={"test_in":fin},
+    ...                           parameters={"a":'I am "a"'}, **{"b":'I am "b"'}) 
+    >>> shellTask = shellTask("/tmp/pypetest/shellTask.sh")
+    >>> type(shellTask) 
+    <class 'pypeflow.task.PypeTaskBase'>
+    >>> print fn(shellTask.test_in)
+    /tmp/pypetest/testfile_in
+    >>> os.system( "touch %s" %  fn(fin)  ) 
+    0
+    >>> timeStampCompare(shellTask.inputDataObjs, shellTask.outputDataObjs, shellTask.parameters)
+    True
+    >>> print shellTask._getRunFlag()
+    True
+    >>> shellTask() # run task
+    True
+    >>> timeStampCompare(shellTask.inputDataObjs, shellTask.outputDataObjs, shellTask.parameters)
+    False
+    >>> print shellTask._getRunFlag()
+    False
+    >>> shellTask()
+    True
+    """
+
+    def f(scriptToRun):
+        def taskFun(self):
+            """make shell script using a template"""
+            """run shell command"""
+            shellCmd = "/bin/bash %s" % scriptToRun
+            runShellCmd(shlex.split(shellCmd))
+
+        kwargv["script"] = scriptToRun
+        return PypeTask(**kwargv)(taskFun)
+
+    return f
+
+
+def PypeSGETask(**kwargv):
+
+    """
+    Similar to PypeShellTask, but the shell script job will be executed through SGE.
+    """
+
+    def f(scriptToRun):
+
+        def taskFun():
+            """make shell script using the template"""
+            """run shell command"""
+            shellCmd = "qsub -sync y -S /bin/bash %s" % scriptToRun
+            runShellCmd(shlex.split(shellCmd))
+
+        kwargv["script"] = scriptToRun
+
+        return PypeTask(**kwargv)(taskFun)
+
+    return f
+
+def PypeDistributibleTask(**kwargv):
+
+    """
+    Similar to PypeShellTask and PypeSGETask, with an additional argument "distributed" to decide
+    whether a job to be run through local shell or SGE.
+    """
+
+    distributed = kwargv.get("distributed", False)
+    def f(scriptToRun):
+        def taskFun(self):
+            """make shell script using the template"""
+            """run shell command"""
+            if distributed == True:
+                shellCmd = "qsub -sync y -S /bin/bash %s" % scriptToRun
+            else:
+                shellCmd = "/bin/bash %s" % scriptToRun
+
+            runShellCmd(shlex.split(shellCmd))
+
+        kwargv["script"] = scriptToRun
+        return PypeTask(**kwargv)(taskFun)
+
+    return f
+
+
+def PypeScatteredTasks(**kwargv):
+
+    def f(taskFun):
+
+        TaskType = kwargv.get("TaskType", PypeTaskBase)
+
+        if "TaskType" in kwargv:
+            del kwargv["TaskType"]
+
+        kwargv["_taskFun"] = taskFun
+
+        inputDataObjs = kwargv["inputDataObjs"]
+        outputDataObjs = kwargv["outputDataObjs"]
+        nChunk = None
+        scatteredInput  = []
+
+        if kwargv.get("URL", None) == None:
+            kwargv["URL"] = "tasks://" + inspect.getfile(taskFun) + "/"+ taskFun.func_name
+
+        tasks = PypeTaskCollection(kwargv["URL"])
+
+        for inputKey, inputDO in inputDataObjs.items():
+            if hasattr(inputDO, "nChunk"):
+                if nChunk != None:
+                    assert inputDO.nChunk == nChunk
+                else:
+                    nChunk = inputDO.nChunk
+                    if inputDO.getScatterTask() != None:
+                        tasks.addScatterGatherTask( inputDO.getScatterTask() )
+
+                scatteredInput.append( inputKey )
+
+        for outputKey, outputDO in outputDataObjs.items():
+            if hasattr(outputDO, "nChunk"):
+                if nChunk != None:
+                    assert outputDO.nChunk == nChunk
+                    if outputDO.getGatherTask() != None:
+                        tasks.addScatterGatherTask( outputDO.getGatherTask() )
+                else:
+                    nChunk = outputDO.nChunk
+
+
+        for i in range(nChunk):
+
+            newKwargv = copy.copy(kwargv)
+
+            subTaskInput = {}
+            for inputKey, inputDO in inputDataObjs.items():
+                if inputKey in scatteredInput:
+                    subTaskInput[inputKey] = inputDO.getSplittedFiles()[i]
+                else:
+                    subTaskInput[inputKey] = inputDO
+
+            subTaskOutput = {}
+            for outputKey, outputDO in outputDataObjs.items():
+                subTaskOutput[outputKey] = outputDO.getSplittedFiles()[i]
+
+            newKwargv["inputDataObjs"] = subTaskInput
+            newKwargv["outputDataObjs"] = subTaskOutput
+
+            #newKwargv["URL"] = "task://" + inspect.getfile(taskFun) + "/"+ taskFun.func_name + "/%03d" % i
+            newKwargv["URL"] = kwargv["URL"].replace("tasks","task") + "/%03d" % i
+
+            try:
+                newKwargv["_codeMD5digest"] = hashlib.md5(inspect.getsource(taskFun)).hexdigest()
+            except IOError: 
+                # python2.7 seems having problem to get source code from docstring, 
+                # this is a work around to make docstring test working
+                newKwargv["_codeMD5digest"] = ""
+
+            newKwargv["_paramMD5digest"] = hashlib.md5(repr(kwargv)).hexdigest()
+            newKwargv["chunk_id"] = i
+
+            
+            tasks.addTask( TaskType(**newKwargv) )
+        return tasks
+    return f
+
+getPypeScatteredTasks = PypeScatteredTasks
+
+def PypeFOFNMapTasks(**kwargv):
+    """
+    A special decorator that takes a FOFN (file of file names) as the main
+    input and generate the tasks with the inputs are the files specified in
+    the FOFN
+
+    Example:
+
+        def outTemplate(fn):
+            return fn + ".out"
+
+        def task(self, **kwargv):
+            in_f = self.in_f
+            out_f = self.out_f
+            #do something with in_f, and write something to out_f
+
+        tasks = PypeFOFNMapTasks(FOFNFileName = "./file.fofn", 
+                outTemplateFunc = outTemplate, 
+                TaskType = PypeThreadTaskBase,
+                parameters = dict(nSlots = 8))( alignTask )
+    """
+
+    def f(taskFun):
+
+        TaskType = kwargv.get("TaskType", PypeTaskBase)
+
+        if "TaskType" in kwargv:
+            del kwargv["TaskType"]
+
+        kwargv["_taskFun"] = taskFun
+
+        FOFNFileName = kwargv["FOFNFileName"]
+        outTemplateFunc = kwargv["outTemplateFunc"]
+
+        if kwargv.get("URL", None) == None:
+            kwargv["URL"] = "tasks://" + inspect.getfile(taskFun) + "/"+ taskFun.func_name
+
+        tasks = PypeTaskCollection(kwargv["URL"])
+
+        with open(FOFNFileName,"r") as FOFN:
+
+            newKwargv = copy.copy(kwargv)
+            
+            for fn in FOFN:
+
+                fn = fn.strip()
+
+                if len(fn) == 0:
+                    continue
+
+                newKwargv["inputDataObjs"] = {"in_f": makePypeLocalFile(fn) } 
+                outfileName = outTemplateFunc(fn)
+                newKwargv["outputDataObjs"] = {"out_f": makePypeLocalFile(outfileName) } 
+                newKwargv["URL"] = kwargv["URL"].replace("tasks","task") + "/%s" % hashlib.md5(fn).hexdigest() 
+
+                try:
+                    newKwargv["_codeMD5digest"] = hashlib.md5(inspect.getsource(taskFun)).hexdigest()
+                except IOError: 
+                    # python2.7 seems having problem to get source code from docstring, 
+                    # this is a work around to make docstring test working
+                    newKwargv["_codeMD5digest"] = ""
+
+
+                newKwargv["_paramMD5digest"] = hashlib.md5(repr(kwargv)).hexdigest()
+
+                tasks.addTask( TaskType(**newKwargv) )
+
+            allFOFNOutDataObjs = dict( [ ("FOFNout%03d" % t[0], t[1].in_f) for t in enumerate(tasks) ] )
+
+            def pseudoScatterTask(**kwargv):
+                pass
+
+            newKwargv = dict( inputDataObjs = {"FOFNin": makePypeLocalFile(FOFNFileName)}, 
+                              outputDataObjs = allFOFNOutDataObjs,
+                              _taskFun = pseudoScatterTask,
+                              _compareFunctions = [lambda inObjs, outObj, params: False], #this task is never meant to be run
+                              URL = "task://pseudoScatterTask/%s" % FOFNFileName)
+
+            tasks.addTask( TaskType(**newKwargv) )
+
+        return tasks
+
+    return f
+
+getFOFNMapTasks = PypeFOFNMapTasks
+
+def timeStampCompare( inputDataObjs, outputDataObjs, parameters) :
+
+    """
+    Given the inputDataObjs and the outputDataObjs, determine whether any
+    object in the inputDataObjs is created or modified later than any object
+    in outputDataObjects.
+    """
+
+    runFlag = False
+
+    inputDataObjsTS = []
+    for ft, f in inputDataObjs.iteritems():
+        if not f.exists:
+            wait_s = 60
+            logger.warning('input does not exist yet (in this filesystem): %r - waiting up to %ds' %(f, wait_s))
+            for i in range(wait_s):
+                time.sleep(1)
+                if f.exists:
+                    logger.warning('now exists: %r (after only %ds)' %(f, i))
+                    break
+            # At this point, if it still does not exist, the entire workflow will fail.
+            # What else can we do? The user's filesystem has too much latency.
+        inputDataObjsTS.append((f.timeStamp, 'A', f))
+
+    outputDataObjsTS = []
+    for ft, f in outputDataObjs.iteritems():
+        if not f.exists:
+            logger.debug('output does not exist yet: %r'%f)
+            runFlag = True
+            break
+        else:
+            # 'A' < 'B', so outputs are 'later' if timestamps match.
+            outputDataObjsTS.append((f.timeStamp, 'B', f))
+
+    if not outputDataObjs:
+        # 0 outputs => always run
+        runFlag = True
+
+    if not runFlag and inputDataObjs: # 0 inputs would imply that existence of outputs is enough.
+        minOut = min(outputDataObjsTS)
+        maxIn = max(inputDataObjsTS)
+        if minOut < maxIn:
+            logger.debug('timestamp of output < input: %r < %r'%(minOut, maxIn))
+            runFlag = True
+
+    return runFlag
+
+if __name__ == "__main__":
+    import doctest
+    doctest.testmod()
diff --git a/pypeFLOW/readme.slurm.md b/pypeFLOW/readme.slurm.md
new file mode 100644
index 0000000..5cdac75
--- /dev/null
+++ b/pypeFLOW/readme.slurm.md
@@ -0,0 +1,112 @@
+```
+Usage: sbatch [OPTIONS...] executable [args...]
+
+Parallel run options:
+  -a, --array=indexes         job array index values
+  -A, --account=name          charge job to specified account
+      --bb=<spec>             burst buffer specifications
+      --begin=time            defer job until HH:MM MM/DD/YY
+  -M, --clusters=names        Comma separated list of clusters to issue
+                              commands to.  Default is current cluster.
+                              Name of 'all' will submit to run on all clusters.
+      --comment=name          arbitrary comment
+      --cpu-freq=min[-max[:gov]] requested cpu frequency (and governor)
+  -c, --cpus-per-task=ncpus   number of cpus required per task
+  -d, --dependency=type:jobid defer job until condition on jobid is satisfied
+  -D, --workdir=directory     set working directory for batch script
+  -e, --error=err             file for batch script's standard error
+      --export[=names]        specify environment variables to export
+      --export-file=file|fd   specify environment variables file or file
+                              descriptor to export
+      --get-user-env          load environment from local cluster
+      --gid=group_id          group ID to run job as (user root only)
+      --gres=list             required generic resources
+  -H, --hold                  submit job in held state
+      --ignore-pbs            Ignore #PBS options in the batch script
+  -i, --input=in              file for batch script's standard input
+  -I, --immediate             exit if resources are not immediately available
+      --jobid=id              run under already allocated job
+  -J, --job-name=jobname      name of job
+  -k, --no-kill               do not kill job on node failure
+  -L, --licenses=names        required license, comma separated
+  -m, --distribution=type     distribution method for processes to nodes
+                              (type = block|cyclic|arbitrary)
+      --mail-type=type        notify on state change: BEGIN, END, FAIL or ALL
+      --mail-user=user        who to send email notification for job state
+                              changes
+  -n, --ntasks=ntasks         number of tasks to run
+      --nice[=value]          decrease scheduling priority by value
+      --no-requeue            if set, do not permit the job to be requeued
+      --ntasks-per-node=n     number of tasks to invoke on each node
+  -N, --nodes=N               number of nodes on which to run (N = min[-max])
+  -o, --output=out            file for batch script's standard output
+  -O, --overcommit            overcommit resources
+  -p, --partition=partition   partition requested
+      --parsable              outputs only the jobid and cluster name (if present),
+                              separated by semicolon, only on successful submission.
+      --power=flags           power management options
+      --priority=value        set the priority of the job to value
+      --profile=value         enable acct_gather_profile for detailed data
+                              value is all or none or any combination of
+                              energy, lustre, network or task
+      --propagate[=rlimits]   propagate all [or specific list of] rlimits
+      --qos=qos               quality of service
+  -Q, --quiet                 quiet mode (suppress informational messages)
+      --reboot                reboot compute nodes before starting job
+      --requeue               if set, permit the job to be requeued
+  -s, --share                 share nodes with other jobs
+  -S, --core-spec=cores       count of reserved cores
+      --sicp                  If specified, signifies job is to receive
+      --signal=[B:]num[@time] send signal when time limit within time seconds
+      --switches=max-switches{@max-time-to-wait}
+                              Optimum switches and max time to wait for optimum
+      --thread-spec=threads   count of reserved threads
+  -t, --time=minutes          time limit
+      --time-min=minutes      minimum time limit (if distinct)
+      --uid=user_id           user ID to run job as (user root only)
+  -v, --verbose               verbose mode (multiple -v's increase verbosity)
+      --wckey=wckey           wckey to run job under
+      --wrap[=command string] wrap command string in a sh script and submit
+
+Constraint options:
+      --contiguous            demand a contiguous range of nodes
+  -C, --constraint=list       specify a list of constraints
+  -F, --nodefile=filename     request a specific list of hosts
+      --mem=MB                minimum amount of real memory
+      --mincpus=n             minimum number of logical processors (threads)
+                              per node
+      --reservation=name      allocate resources from named reservation
+      --tmp=MB                minimum amount of temporary disk
+  -w, --nodelist=hosts...     request a specific list of hosts
+  -x, --exclude=hosts...      exclude a specific list of hosts
+
+Consumable resources related options:
+      --exclusive[=user]      allocate nodes in exclusive mode when
+                              cpu consumable resource is enabled
+      --mem-per-cpu=MB        maximum amount of real memory per allocated
+                              cpu required by the job.
+                              --mem >= --mem-per-cpu if --mem is specified.
+
+Affinity/Multi-core options: (when the task/affinity plugin is enabled)
+  -B  --extra-node-info=S[:C[:T]]            Expands to:
+       --sockets-per-node=S   number of sockets per node to allocate
+       --cores-per-socket=C   number of cores per socket to allocate
+       --threads-per-core=T   number of threads per core to allocate
+                              each field can be 'min' or wildcard '*'
+                              total cpus requested = (N x S x C x T)
+
+      --ntasks-per-core=n     number of tasks to invoke on each core
+      --ntasks-per-socket=n   number of tasks to invoke on each socket
+
+
+Help options:
+  -h, --help                  show this help message
+  -u, --usage                 display brief usage message
+
+Other options:
+  -V, --version               output version information and exit
+```
+
+* https://github.com/PacificBiosciences/FALCON-integrate/issues/53
+* http://slurm.schedmd.com/
+* http://slurm.schedmd.com/sbatch.html
diff --git a/pypeFLOW/setup.py b/pypeFLOW/setup.py
new file mode 100644
index 0000000..97f80b9
--- /dev/null
+++ b/pypeFLOW/setup.py
@@ -0,0 +1,27 @@
+from setuptools import setup, Extension, find_packages
+
+setup(
+    name = 'pypeflow',
+    version='0.1.1',
+    author='J. Chin',
+    author_email='cschin at infoecho.net',
+    license='LICENSE.txt',
+    packages = [
+        'pypeflow',
+        'pwatcher', # a separate package for here for convenience, for now
+        'pwatcher.mains',
+    ],
+    package_dir = {'':'.'},
+    zip_safe = False,
+    install_requires=[
+        'rdflib == 3.4.0',
+        'rdfextras >= 0.1',
+        'html5lib == 0.999999',
+    ],
+    entry_points = {'console_scripts': [
+            'pwatcher-main=pwatcher.mains.pwatcher:main',
+            'pwatcher-pypeflow-example=pwatcher.mains.pypeflow_example:main',
+            'heartbeat-wrapper=pwatcher.mains.fs_heartbeat:main',
+        ],
+    },
+)
diff --git a/falcon_kit/mains/__init__.py b/pypeFLOW/src/__init__.py
similarity index 100%
rename from falcon_kit/mains/__init__.py
rename to pypeFLOW/src/__init__.py
diff --git a/pypeFLOW/src/tests/test_pypeflow_common.py b/pypeFLOW/src/tests/test_pypeflow_common.py
new file mode 100644
index 0000000..fd0b29b
--- /dev/null
+++ b/pypeFLOW/src/tests/test_pypeflow_common.py
@@ -0,0 +1,23 @@
+from nose.tools import assert_equal
+from nose import SkipTest
+
+class TestPypeObject:
+    def TestRDFXML(self):
+        # pype_object = PypeObject(URL, **attributes)
+        # assert_equal(expected, pype_object.RDFXML())
+        raise SkipTest # TODO: implement your test here
+
+    def test___init__(self):
+        # pype_object = PypeObject(URL, **attributes)
+        raise SkipTest # TODO: implement your test here
+
+class TestRunShellCmd:
+    def test_run_shell_cmd(self):
+        # assert_equal(expected, runShellCmd(args, **kwargs))
+        raise SkipTest # TODO: implement your test here
+
+class TestRunSgeSyncJob:
+    def test_run_sge_sync_job(self):
+        # assert_equal(expected, runSgeSyncJob(args))
+        raise SkipTest # TODO: implement your test here
+
diff --git a/pypeFLOW/src/tests/test_pypeflow_controller.py b/pypeFLOW/src/tests/test_pypeflow_controller.py
new file mode 100644
index 0000000..18806dc
--- /dev/null
+++ b/pypeFLOW/src/tests/test_pypeflow_controller.py
@@ -0,0 +1,497 @@
+from nose import SkipTest
+from nose.tools import assert_equal
+import pypeflow.task
+import pypeflow.data
+import pypeflow.controller
+
+class TestPypeNode:
+    def test___init__(self):
+        # pype_node = PypeNode(obj)
+        raise SkipTest # TODO: implement your test here
+
+    def test_addAnInNode(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.addAnInNode(obj))
+        raise SkipTest # TODO: implement your test here
+
+    def test_addAnOutNode(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.addAnOutNode(obj))
+        raise SkipTest # TODO: implement your test here
+
+    def test_depth(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.depth())
+        raise SkipTest # TODO: implement your test here
+
+    def test_inDegree(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.inDegree())
+        raise SkipTest # TODO: implement your test here
+
+    def test_outDegree(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.outDegree())
+        raise SkipTest # TODO: implement your test here
+
+    def test_removeAnInNode(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.removeAnInNode(obj))
+        raise SkipTest # TODO: implement your test here
+
+    def test_removeAnOutNode(self):
+        # pype_node = PypeNode(obj)
+        # assert_equal(expected, pype_node.removeAnOutNode(obj))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeGraph:
+    def test___getitem__(self):
+        # pype_graph = PypeGraph(RDFGraph, subGraphNodes)
+        # assert_equal(expected, pype_graph.__getitem__(url))
+        raise SkipTest # TODO: implement your test here
+
+    def test___init__(self):
+        # pype_graph = PypeGraph(RDFGraph, subGraphNodes)
+        raise SkipTest # TODO: implement your test here
+
+    def test_tSort(self):
+        # pype_graph = PypeGraph(RDFGraph, subGraphNodes)
+        # assert_equal(expected, pype_graph.tSort())
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeWorkflow:
+    def test___init__(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        raise SkipTest # TODO: implement your test here
+
+    def test_addObject(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.addObject(obj))
+        raise SkipTest # TODO: implement your test here
+
+    def test_addObjects(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.addObjects(objs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_addTask(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.addTask(taskObj))
+        raise SkipTest # TODO: implement your test here
+
+    def test_addTasks(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.addTasks(taskObjs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_dataObjects(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.dataObjects())
+        raise SkipTest # TODO: implement your test here
+
+    def test_graphvizDot(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.graphvizDot())
+        raise SkipTest # TODO: implement your test here
+
+    def test_graphvizShortNameDot(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.graphvizShortNameDot())
+        raise SkipTest # TODO: implement your test here
+
+    def test_makeFileStr(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.makeFileStr())
+        raise SkipTest # TODO: implement your test here
+
+    def test_refreshTargets(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.refreshTargets(objs, callback))
+        raise SkipTest # TODO: implement your test here
+
+    def test_removeObjects(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.removeObjects(objs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_removeTask(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.removeTask(taskObj))
+        raise SkipTest # TODO: implement your test here
+
+    def test_removeTasks(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.removeTasks(taskObjs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_setReferenceRDFGraph(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.setReferenceRDFGraph(fn))
+        raise SkipTest # TODO: implement your test here
+
+    def test_tasks(self):
+        # pype_workflow = PypeWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_workflow.tasks())
+        raise SkipTest # TODO: implement your test here
+
+    def test_scatterTask(self):
+        
+        import os
+        os.system("rm -rf /tmp/pypetest/*")
+        nChunk = 3 
+
+        infileObj0 =\
+        pypeflow.data.PypeLocalFile(
+                      "file://localhost/tmp/pypetest/test_in_0.txt")
+        with open(infileObj0.localFileName,"w") as f:
+            f.write("prefix4:")
+
+        infileObj4 =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_in_4.txt", 
+                      nChunk = nChunk)
+
+        with open(infileObj4.localFileName, "w") as f:
+            for i in range(nChunk):
+                f.write("file%02d\n" % i)
+
+        def scatter(*argv, **kwargv):
+            outputObjs = sorted( kwargv["outputDataObjs"].items() )
+            nOut = len(outputObjs)
+            outputObjs = [ (o[0], o[1], open(o[1].localFileName, "w")) for o in outputObjs]
+            with open(kwargv["inputDataObjs"]["completeFile"].localFileName,"r") as f:
+                i = 0
+                for l in f:
+                    outf = outputObjs[i % nOut][2]
+                    outf.write(l)
+                    i += 1
+            for o in outputObjs:
+                o[2].close()
+
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTask = pypeflow.task.PypeTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        infileObj4.setScatterTask(PypeTask, PypeTaskBase, scatter)
+        
+        def gather(*argv, **kwargv):
+            inputObjs = sorted( kwargv["inputDataObjs"].items() )
+            with open(kwargv["outputDataObjs"]["completeFile"].localFileName,"w") as outf:
+                for k, subfile in inputObjs:
+                    f = open(subfile.localFileName)
+                    outf.write(f.read())
+                    f.close()
+
+        outfileObj4 =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_out_4.txt", 
+                      nChunk = nChunk)
+
+        outfileObj4.setGatherTask(PypeTask, PypeTaskBase, gather)
+
+        PypeScatteredTasks = pypeflow.task.PypeScatteredTasks
+
+        @PypeScatteredTasks( inputDataObjs = {"inf":infileObj4, "prefix":infileObj0},
+                             outputDataObjs = {"outf":outfileObj4},
+                             URL="tasks://test_fun_4")
+        def test_fun_4(*argv, **kwargv):
+            chunk_id = kwargv["chunk_id"]
+            self = test_fun_4[chunk_id]
+
+            assert self.inf._path == "/tmp/pypetest/%03d_test_in_4.txt" % chunk_id
+            with open( self.prefix.localFileName, "r") as f:
+                prefix = f.read()
+
+            with open( self.outf._path, "w") as f:
+                in_f = open(self.inf.localFileName,"r")
+                f.write(prefix + in_f.read())
+                in_f.close()
+            return self.inf._path
+
+        outfileObj5 =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_out_5.txt", 
+                      nChunk = nChunk)
+        outfileObj5.setGatherTask(PypeTask, PypeTaskBase, gather)
+
+        @PypeScatteredTasks( inputDataObjs = {"inf":infileObj4, "prefix":infileObj0},
+                             outputDataObjs = {"outf":outfileObj5},
+                             URL="tasks://test_fun_5")
+        def test_fun_5(*argv, **kwargv):
+            chunk_id = kwargv["chunk_id"]
+            self = test_fun_5[chunk_id]
+
+            assert self.inf._path == "/tmp/pypetest/%03d_test_in_4.txt" % chunk_id
+            with open( self.prefix.localFileName, "r") as f:
+                prefix = f.read()
+
+            with open( self.outf._path, "w") as f:
+                in_f = open(self.inf.localFileName,"r")
+                f.write(prefix +"2:"+ in_f.read())
+                in_f.close()
+            return self.inf._path
+        assert len(test_fun_4.getTasks()) == nChunk 
+
+        wf = pypeflow.controller.PypeWorkflow()
+        wf.addTasks( [test_fun_4, test_fun_5] )
+        print wf.graphvizDot
+        wf.refreshTargets( [outfileObj4, outfileObj5] )
+    
+class TestPypeThreadWorkflow:
+    def test___init__(self):
+        # pype_thread_workflow = PypeThreadWorkflow(URL, **attributes)
+        raise SkipTest # TODO: implement your test here
+
+    def test_addTasks(self):
+        # pype_thread_workflow = PypeThreadWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_thread_workflow.addTasks(taskObjs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_refreshTargets(self):
+        # pype_thread_workflow = PypeThreadWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_thread_workflow.refreshTargets(objs, callback, updateFreq, exitOnFailure))
+        raise SkipTest # TODO: implement your test here
+
+    def test_setNumThreadAllowed(self):
+        # pype_thread_workflow = PypeThreadWorkflow(URL, **attributes)
+        # assert_equal(expected, pype_thread_workflow.setNumThreadAllowed(nT, nS))
+        raise SkipTest # TODO: implement your test here
+
+    def test_mutableDataObjects(self):
+
+        infileObj =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_in.txt")
+
+        outfileObj =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out.txt")
+
+        out1 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out1.txt")
+
+        out2 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out2.txt")
+
+        out3 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out3.txt")
+
+        import os
+        os.system("rm -rf /tmp/pypetest/*")
+
+        with open(infileObj.localFileName,"w") as f:
+            f.write("test")
+
+        PypeThreadWorkflow = pypeflow.controller.PypeThreadWorkflow
+        PypeThreadTaskBase = pypeflow.controller.PypeThreadTaskBase
+        PypeTask = pypeflow.task.PypeTask
+        wf = PypeThreadWorkflow()
+
+        @PypeTask(mutableDataObjs={"out":outfileObj},
+                  outputDataObjs={"out1":out1},
+                  inputDataObjs={"in":infileObj},
+                  TaskType=PypeThreadTaskBase)
+        def task1(task):
+            with open(task.out.localFileName, "a") as f:
+                print >>f, "written by task1"
+            with open(task.out1.localFileName, "w") as f:
+                print >>f, "written by task1"
+
+        @PypeTask(mutableDataObjs={"out":outfileObj},
+                  outputDataObjs={"out2":out2},
+                  inputDataObjs={"in":infileObj},
+                  TaskType=PypeThreadTaskBase)
+        def task2(task):
+            with open(task.out.localFileName, "a") as f:
+                print >>f, "written by task2"
+            with open(task.out2.localFileName, "w") as f:
+                print >>f, "written by task2"
+
+        @PypeTask(mutableDataObjs={"out":outfileObj},
+                  outputDataObjs={"out3":out3},
+                  inputDataObjs={"in":infileObj},
+                  TaskType=PypeThreadTaskBase)
+        def task3(task):
+            with open(task.out.localFileName, "a") as f:
+                print >>f, "written by task3"
+            with open(task.out3.localFileName, "w") as f:
+                print >>f, "written by task3"
+
+        wf = PypeThreadWorkflow()
+        wf.addTasks([task1, task2, task3])
+
+        wf.refreshTargets()
+
+        outputSet = set()
+        outputSet.add("written by task1")
+        outputSet.add("written by task2")
+        outputSet.add("written by task3")
+
+        with open(outfileObj.localFileName) as f:
+            i = 0
+            for l in f:
+                l = l.strip()
+                assert l in outputSet
+                i += 1
+            assert_equal(i, 3)
+
+    def test_stateDataObjects(self):
+
+        infileObj =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_in.txt")
+
+        outfileObj =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out.txt")
+
+        out1 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out1.txt")
+
+        out2 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out2.txt")
+
+        out3 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out3.txt")
+
+        s1 =\
+        pypeflow.data.PypeLocalFile("state://localhost/tmp/pypetest/.state1")
+
+        s2 =\
+        pypeflow.data.PypeLocalFile("state://localhost/tmp/pypetest/.state2")
+
+        s3 =\
+        pypeflow.data.PypeLocalFile("state://localhost/tmp/pypetest/.state3")
+
+        import os
+        import time
+        os.system("rm -rf /tmp/pypetest/*")
+        time.sleep(2)
+
+        with open(infileObj.localFileName,"w") as f:
+            f.write("test")
+
+        PypeThreadWorkflow = pypeflow.controller.PypeThreadWorkflow
+        PypeThreadTaskBase = pypeflow.controller.PypeThreadTaskBase
+        PypeTask = pypeflow.task.PypeTask
+        wf = PypeThreadWorkflow()
+
+        @PypeTask(mutableDataObjs = {"out":outfileObj},
+                  outputDataObjs = {"out1":out1, "s1":s1},
+                  inputDataObjs = {"in":infileObj},
+                  TaskType=PypeThreadTaskBase)
+        def task1(task):
+            with open(task.out.localFileName, "a") as f:
+                print >>f, "written by task1"
+            with open(task.s1.localFileName, "w") as f:
+                print >>f, "state set"
+            with open(task.out1.localFileName, "w") as f:
+                print >>f, "written by task1"
+
+        @PypeTask(mutableDataObjs = {"out":outfileObj},
+                  outputDataObjs = {"out2":out2, "s2":s2},
+                  inputDataObjs = {"in":infileObj, "s1":s1},
+                  TaskType=PypeThreadTaskBase)
+        def task2(task):
+            with open(task.out.localFileName, "a") as f:
+                print >>f, "written by task2"
+            with open(task.s2.localFileName, "w") as f:
+                print >>f, "state set"
+            with open(task.out2.localFileName, "w") as f:
+                print >>f, "written by task2"
+
+        @PypeTask(mutableDataObjs = {"out":outfileObj},
+                  outputDataObjs = {"out3":out3, "s3":s3},
+                  inputDataObjs = {"in":infileObj, "s2":s2},
+                  TaskType=PypeThreadTaskBase)
+        def task3(task):
+            with open(task.out.localFileName, "a") as f:
+                print >>f, "written by task3"
+            with open(task.s3.localFileName, "w") as f:
+                print >>f, "state set"
+            with open(task.out3.localFileName, "w") as f:
+                print >>f, "written by task3"
+
+        wf = PypeThreadWorkflow()
+        wf.addTasks([task1, task2, task3])
+
+        wf.refreshTargets()
+
+        with open(outfileObj.localFileName) as f:
+            i = 0
+            for l in f:
+                i += 1
+                l = l.strip()
+                assert l == "written by task%d" % i
+        assert i == 3
+
+    def test_stateDataObjects2(self):
+
+        infileObj =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_in.txt")
+
+        outfileObj =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out.txt")
+
+        out1 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out1.txt")
+
+        out2 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out2.txt")
+
+        out3 =\
+        pypeflow.data.PypeLocalFile("file://localhost/tmp/pypetest/test_for_shared_output_out3.txt")
+
+        s1 =\
+        pypeflow.data.PypeLocalFile("state://localhost/tmp/pypetest/.state1")
+
+        s2 =\
+        pypeflow.data.PypeLocalFile("state://localhost/tmp/pypetest/.state2")
+
+        s3 =\
+        pypeflow.data.PypeLocalFile("state://localhost/tmp/pypetest/.state3")
+
+        import os
+        import time
+        os.system("rm -rf /tmp/pypetest/*")
+        time.sleep(2)
+
+        with open(infileObj.localFileName,"w") as f:
+            f.write("test")
+
+        PypeThreadWorkflow = pypeflow.controller.PypeThreadWorkflow
+        PypeThreadTaskBase = pypeflow.controller.PypeThreadTaskBase
+        PypeTask = pypeflow.task.PypeTask
+        wf = PypeThreadWorkflow()
+
+        @PypeTask( outputDataObjs = {"out1":out1, "s1":s1},
+                  inputDataObjs = {"in":infileObj},
+                  TaskType=PypeThreadTaskBase)
+        def task1(task):
+            with open(task.s1.localFileName, "w") as f:
+                print >>f, "state set"
+            with open(task.out1.localFileName, "w") as f:
+                print >>f, "written by task1"
+
+        @PypeTask(outputDataObjs = {"out2":out2, "s2":s2},
+                  inputDataObjs = {"in":infileObj, "s1":s1},
+                  TaskType=PypeThreadTaskBase)
+        def task2(task):
+            with open(task.s2.localFileName, "w") as f:
+                print >>f, "state set"
+            with open(task.out2.localFileName, "w") as f:
+                print >>f, "written by task2"
+
+        @PypeTask(outputDataObjs = {"out3":out3, "s3":s3},
+                  inputDataObjs = {"in":infileObj, "s2":s2},
+                  TaskType=PypeThreadTaskBase)
+        def task3(task):
+            with open(task.s3.localFileName, "w") as f:
+                print >>f, "state set"
+            with open(task.out3.localFileName, "w") as f:
+                print >>f, "written by task3"
+
+        wf = PypeThreadWorkflow()
+        wf.addTasks([task1, task2, task3])
+
+        wf.refreshTargets([s3])
+
+        for i in range(1,4):
+            with open("/tmp/pypetest/test_for_shared_output_out%d.txt" % i) as f:
+                l = f.read().strip()
+                assert l == "written by task%d" % i
diff --git a/pypeFLOW/src/tests/test_pypeflow_data.py b/pypeFLOW/src/tests/test_pypeflow_data.py
new file mode 100644
index 0000000..2b010e5
--- /dev/null
+++ b/pypeFLOW/src/tests/test_pypeflow_data.py
@@ -0,0 +1,202 @@
+from nose.tools import assert_equal
+from nose import SkipTest
+import tempfile
+import pypeflow.data
+import pypeflow.task
+import os
+
+PypeLocalFileCollection = pypeflow.data.PypeLocalFileCollection
+PypeLocalFile = pypeflow.data.PypeLocalFile
+fn = pypeflow.data.fn
+
+class TestFn:
+    def test_fn(self):
+        file = PypeLocalFile("file://localhost/test1")
+        assert fn(file) == "/test1"
+        file = PypeLocalFile("file://localhost/test1/")
+        assert fn(file) == "/test1/"
+        file = PypeLocalFile("file://localhost/tmp/test1")
+        assert fn(file) == "/tmp/test1"
+        file = PypeLocalFile("file://localhost"+ os.path.abspath("./test1"))
+        assert fn(file) == os.path.abspath("./test1") 
+
+class TestPypeDataObjectBase: #this class can not be tested directly
+    pass
+
+class TestPypeLocalFile:
+    def test___init__(self):
+        obj = PypeLocalFile("file://localhost/test")
+        assert fn(obj) == "/test"
+        obj = PypeLocalFile("file://localhost/test", **{"x":123})
+        assert obj.x == 123
+
+    def test_clean(self):
+        # pype_local_file = PypeLocalFile(URL, readOnly, **attributes)
+        # assert_equal(expected, pype_local_file.clean())
+        raise SkipTest # TODO: implement your test here
+
+    def test_exists(self):
+        obj = PypeLocalFile("file://localhost/tmp/pypetest/test")
+        os.system("mkdir -p /tmp/pypetest/; touch /tmp/pypetest/test")
+        assert obj.exists == True
+        os.system("rm /tmp/pypetest/test")
+        assert obj.exists == False
+
+
+        # pype_local_file = PypeLocalFile(URL, readOnly, **attributes)
+        # assert_equal(expected, pype_local_file.exists())
+        raise SkipTest # TODO: implement your test here
+
+    def test_path(self):
+        # pype_local_file = PypeLocalFile(URL, readOnly, **attributes)
+        # assert_equal(expected, pype_local_file.path())
+        raise SkipTest # TODO: implement your test here
+
+    def test_timeStamp(self):
+        # pype_local_file = PypeLocalFile(URL, readOnly, **attributes)
+        # assert_equal(expected, pype_local_file.timeStamp())
+        raise SkipTest # TODO: implement your test here
+
+    def test_verify(self):
+        # pype_local_file = PypeLocalFile(URL, readOnly, **attributes)
+        # assert_equal(expected, pype_local_file.verify())
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeLocalFileColletion:
+
+    def test___init__(self):
+        files = PypeLocalFileCollection("files://localhost/tmp/pypetest/test1")
+        assert files.URL == "files://localhost/tmp/pypetest/test1"
+        assert files.localFileName == None
+
+    def test_addLocalFile(self):
+        files = PypeLocalFileCollection("files://localhost/tmp/pypetest/test1")
+        aNewFile = PypeLocalFile("file://localhost/tmp/pypetest/test2")
+        files.addLocalFile(aNewFile)
+        assert files.localFileName == files.localFiles[0].localFileName 
+        assert fn(files) == fn(files.localFiles[0])
+
+    def test_timeStamp(self):
+        raise SkipTest # TODO: implement your test here
+
+    def exists(self):
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeHDF5Dataset:
+    pass
+
+class TestPypeLocalCompositeFile:
+    def test___init__(self):
+        # pype_local_composite_file = PypeLocalCompositeFile(URL, readOnly, **attributes)
+        raise SkipTest # TODO: implement your test here
+
+class TestMakePypeLocalFile:
+    def test_make_pype_local_file(self):
+        # assert_equal(expected, makePypeLocalFile(aLocalFileName, readOnly, **attributes))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeSplittableLocalFile:
+    def test___init__(self):
+        pype_splittable_local_file =\
+        pypeflow.data.PypeSplittableLocalFile("splittablefile://localhost/./test.txt", 
+                                              nChunk=5)
+        for i in range(5):
+            assert pype_splittable_local_file._splittedFiles[i].URL ==\
+            'file://localhost/./%03d_test.txt' % i
+
+    def test_setGatherTask(self):
+
+        for i in range(5):
+            with open("/tmp/pypetest/%03d_test_fofn.txt" % i, "w") as f:
+                f.write("file%02d\n" % i)
+
+        pype_splittable_local_file =\
+        pypeflow.data.PypeSplittableLocalFile("splittablefile://localhost/tmp/pypetest/test_fofn.txt", 
+                                              nChunk=5)
+        with open("/tmp/pypetest/gather.sh", "w") as f:
+            f.write("#!/bin/bash\n")
+            f.write("if [ -e /tmp/pypetest/test_fofn.txt ]; then rm /tmp/pypetest/test_fofn.txt; fi\n")
+            f.write("for f in %s;" % " ".join( ["%03d" % i for i in range(5)] )) 
+            f.write('do cat /tmp/pypetest/$f"_test_fofn.txt" >> /tmp/pypetest/test_fofn.txt\n')
+            f.write("done\n")
+
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        pype_splittable_local_file.setGatherTask(PypeShellTask, 
+                                                 PypeTaskBase, 
+                                                 "/tmp/pypetest/gather.sh")
+        pype_splittable_local_file.getGatherTask()()
+
+        with open("/tmp/pypetest/test_fofn.txt") as f:
+            i = 0
+            for l in f:
+                l = l.strip()
+                assert l == "file%02d" % i
+                i += 1
+
+        import os
+        for i in range(5):
+            os.system(" rm  /tmp/pypetest/%03d_test_fofn.txt" % i)
+
+    def test_setScatterTask(self):
+        
+        with open("/tmp/pypetest/test_fofn.txt", "w") as f:
+            for i in range(5):
+                f.write("file%02d\n" % i)
+
+        pype_splittable_local_file =\
+        pypeflow.data.PypeSplittableLocalFile("splittablefile://localhost/tmp/pypetest/test_fofn.txt", 
+                                              nChunk=5)
+
+        with open("/tmp/pypetest/scatter.sh", "w") as f:
+            f.write("#!/bin/bash\n")
+            f.write("for f in %s;" % " ".join( ["%03d" % i for i in range(5)] )) 
+            f.write('do if [ -e /tmp/pypetest/%f"_test_fofn.txt" ]; \
+                        then rm /tmp/pypetest/$f"_test_fofn.txt"; fi\n')
+            f.write("done\n")
+            for i in range(5):
+                f.write("echo file%02d > /tmp/pypetest/%03d_test_fofn.txt\n" % (i, i))
+
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        pype_splittable_local_file.setScatterTask(PypeShellTask, 
+                                                  PypeTaskBase, 
+                                                  "/tmp/pypetest/scatter.sh")
+        pype_splittable_local_file.getScatterTask()()
+
+        for i in range(5):
+            with open("/tmp/pypetest/%03d_test_fofn.txt" % i) as f:
+                l = f.read().strip()
+                assert l == "file%02d" % i
+
+
+    def test_getGatherTask(self):
+        pype_splittable_local_file =\
+        pypeflow.data.PypeSplittableLocalFile("splittablefile://localhost/tmp/pypetest/test_fofn.txt", 
+                                              nChunk=5)
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        pype_splittable_local_file.setGatherTask(PypeShellTask, PypeTaskBase, "/tmp/pypetest/gather.sh")
+        assert pype_splittable_local_file.getGatherTask() == pype_splittable_local_file._gatherTask
+        assert pype_splittable_local_file.getScatterTask() == None
+
+    def test_getScatterTask(self):
+        pype_splittable_local_file =\
+        pypeflow.data.PypeSplittableLocalFile("splittablefile://localhost/tmp/pypetest/test_fofn.txt", 
+                                              nChunk=5)
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        pype_splittable_local_file.setScatterTask(PypeShellTask, PypeTaskBase, "/tmp/pypetest/scatter.sh")
+        #pype_splittable_local_file.getScatterTask()
+        assert pype_splittable_local_file.getScatterTask() == pype_splittable_local_file._scatterTask
+        assert pype_splittable_local_file.getGatherTask() == None
+
+    def test_getSplittedFiles(self):
+        pype_splittable_local_file =\
+        pypeflow.data.PypeSplittableLocalFile("splittablefile://localhost/tmp/pypetest/test.txt", 
+                                              nChunk=5)
+        i = 0
+        for f in pype_splittable_local_file.getSplittedFiles():
+            assert f.URL ==\
+            'file://localhost/tmp/pypetest/%03d_test.txt' % i
+            i += 1
diff --git a/pypeFLOW/src/tests/test_pypeflow_task.py b/pypeFLOW/src/tests/test_pypeflow_task.py
new file mode 100644
index 0000000..0b08ebb
--- /dev/null
+++ b/pypeFLOW/src/tests/test_pypeflow_task.py
@@ -0,0 +1,326 @@
+from nose.tools import assert_equal
+from nose import SkipTest
+import pypeflow.task
+import pypeflow.data
+
+class TestPypeTaskBase:
+    def test___call__(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        # assert_equal(expected, pype_task_base.__call__(*argv, **kwargv))
+        raise SkipTest # TODO: implement your test here
+
+    def test___init__(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        raise SkipTest # TODO: implement your test here
+
+    def test_finalize(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        # assert_equal(expected, pype_task_base.finalize())
+        raise SkipTest # TODO: implement your test here
+
+    def test_setInputs(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        # assert_equal(expected, pype_task_base.setInputs(inputDataObjs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_setOutputs(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        # assert_equal(expected, pype_task_base.setOutputs(outputDataObjs))
+        raise SkipTest # TODO: implement your test here
+
+    def test_setReferenceMD5(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        # assert_equal(expected, pype_task_base.setReferenceMD5(md5Str))
+        raise SkipTest # TODO: implement your test here
+
+    def test_status(self):
+        # pype_task_base = PypeTaskBase(URL, *argv, **kwargv)
+        # assert_equal(expected, pype_task_base.status())
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeThreadTaskBase:
+    def test___call__(self):
+        # pype_thread_task_base = PypeThreadTaskBase()
+        # assert_equal(expected, pype_thread_task_base.__call__(*argv, **kwargv))
+        raise SkipTest # TODO: implement your test here
+
+    def test_nSlots(self):
+        # pype_thread_task_base = PypeThreadTaskBase()
+        # assert_equal(expected, pype_thread_task_base.nSlots())
+        raise SkipTest # TODO: implement your test here
+
+    def test_setMessageQueue(self):
+        # pype_thread_task_base = PypeThreadTaskBase()
+        # assert_equal(expected, pype_thread_task_base.setMessageQueue(q))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeDistributiableTaskBase:
+    def test___init__(self):
+        # pype_distributiable_task_base = PypeDistributiableTaskBase(URL, *argv, **kwargv)
+        raise SkipTest # TODO: implement your test here
+
+
+class TestPypeTask:
+    def test_pype_task(self):
+        # assert_equal(expected, PypeTask(*argv, **kwargv))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeShellTask:
+    def test_pype_shell_task(self):
+        # assert_equal(expected, PypeShellTask(*argv, **kwargv))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeSGETask:
+    def test_pype_sge_task(self):
+        # assert_equal(expected, PypeSGETask(*argv, **kwargv))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeDistributibleTask:
+    def test_pype_distributible_task(self):
+        # assert_equal(expected, PypeDistributibleTask(*argv, **kwargv))
+        raise SkipTest # TODO: implement your test here
+
+
+class TestTimeStampCompare:
+    def test_time_stamp_compare(self):
+        # assert_equal(expected, timeStampCompare(inputDataObjs, outputDataObjs, parameters))
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeTaskCollectionBase:
+    def test___init__(self):
+        # pype_task_collection_base = PypeTaskCollectionBase(URL, tasks)
+        raise SkipTest # TODO: implement your test here
+
+    def test_getTasks(self):
+        # pype_task_collection_base = PypeTaskCollectionBase(URL, tasks)
+        # assert_equal(expected, pype_task_collection_base.getTasks())
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeTaskCollection:
+    def test___init__(self):
+        # pype_task_collection = PypeTaskCollection(URL, tasks)
+        raise SkipTest # TODO: implement your test here
+
+    def test_addTask(self):
+        # pype_task_collection = PypeTaskCollection(URL, tasks)
+        # assert_equal(expected, pype_task_collection.addTask(task))
+        raise SkipTest # TODO: implement your test here
+
+    def test_getTasks(self):
+        # pype_task_collection = PypeTaskCollection(URL, tasks)
+        # assert_equal(expected, pype_task_collection.getTasks())
+        raise SkipTest # TODO: implement your test here
+
+class TestPypeScatteredTasks:
+
+    def test_pype_scattered_tasks(self):
+        import os
+        #os.system("rm -rf /tmp/pypetest/*")
+        nChunk = 5 
+
+        infileObj =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_in_1.txt", 
+                      nChunk = nChunk)
+
+        with open(infileObj.localFileName, "w") as f:
+            for i in range(nChunk):
+                f.write("file%02d\n" % i)
+
+        def scatter(*argv, **kwargv):
+            outputObjs = sorted( kwargv["outputDataObjs"].items() )
+            nOut = len(outputObjs)
+            outputObjs = [ (o[0], o[1], open(o[1].localFileName, "w")) for o in outputObjs]
+            with open(kwargv["inputDataObjs"]["completeFile"].localFileName,"r") as f:
+                i = 0
+                for l in f:
+                   outf = outputObjs[i % nOut][2]
+                   outf.write(l)
+                   i += 1
+            for o in outputObjs:
+                o[2].close()
+
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTask = pypeflow.task.PypeTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        infileObj.setScatterTask(PypeTask, PypeTaskBase, scatter)
+        infileObj.getScatterTask()()
+        
+        def gather(*argv, **kwargv):
+            inputObjs = sorted( kwargv["inputDataObjs"].items() )
+            with open(kwargv["outputDataObjs"]["completeFile"].localFileName,"w") as outf:
+                for k, subfile in inputObjs:
+                    f = open(subfile.localFileName)
+                    outf.write(f.read())
+                    f.close()
+
+        outfileObj =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_out_1.txt", 
+                      nChunk = nChunk)
+
+        outfileObj.setGatherTask(PypeTask, PypeTaskBase, gather)
+
+        PypeScatteredTasks = pypeflow.task.PypeScatteredTasks
+
+        @PypeScatteredTasks( inputDataObjs = {"inf":infileObj},
+                             outputDataObjs = {"outf":outfileObj} )
+        def test_fun(*argv, **kwargv):
+            chunk_id = kwargv["chunk_id"]
+            self = test_fun[chunk_id]
+            assert self.inf._path == "/tmp/pypetest/%03d_test_in_1.txt" % chunk_id
+            with open(  self.outf._path , "w") as f:
+                in_f = open(self.inf.localFileName,"r")
+                f.write("out:"+in_f.read())
+                in_f.close()
+            return self.inf._path
+
+        assert len(test_fun.getTasks()) == nChunk 
+        for i in range(nChunk):
+            test_fun[i]()
+
+        outfileObj.getGatherTask()()
+        
+    def test_pype_scattered_tasks_2(self):
+        import os
+        #os.system("rm -rf /tmp/pypetest/*")
+
+        nChunk = 5 
+
+        infileObj =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_in_2.txt", 
+                      nChunk = nChunk)
+
+        with open(infileObj.localFileName, "w") as f:
+            for i in range(nChunk):
+                f.write("file%02d\n" % i)
+
+        with open("/tmp/pypetest/scatter.sh", "w") as f:
+            f.write("#!/bin/bash\n")
+            f.write("for f in %s;" % " ".join( ["%03d" % i for i in range(nChunk)] )) 
+            f.write('do if [ -e /tmp/pypetest/%f"_test_in.txt" ];\
+                        then rm /tmp/pypetest/$f"_test_in.txt"; fi;\n')
+            f.write("done\n")
+            for i in range(nChunk):
+                f.write("echo file%02d > /tmp/pypetest/%03d_test_in_2.txt\n" % (i, i))
+
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTask = pypeflow.task.PypeTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        infileObj.setScatterTask(PypeShellTask, PypeTaskBase, "/tmp/pypetest/scatter.sh")
+        infileObj.getScatterTask()()
+        
+        def gather(*argv, **kwargv):
+            inputObjs = sorted( kwargv["inputDataObjs"].items() )
+            with open(kwargv["outputDataObjs"]["completeFile"].localFileName,"w") as outf:
+                for k, subfile in inputObjs:
+                    f = open(subfile.localFileName)
+                    outf.write("out:"+f.read())
+                    f.close()
+
+        outfileObj =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_out_2.txt", 
+                      nChunk = nChunk)
+
+        outfileObj.setGatherTask(PypeTask, PypeTaskBase, gather)
+
+        PypeScatteredTasks = pypeflow.task.PypeScatteredTasks
+
+        @PypeScatteredTasks( inputDataObjs = {"inf":infileObj},
+                             outputDataObjs = {"outf":outfileObj},
+                             comment="xyz")
+        def test_fun_2(*argv, **kwargv):
+            assert kwargv["comment"] == "xyz"
+            chunk_id = kwargv["chunk_id"]
+            self = test_fun_2[chunk_id]
+            assert self.inf._path == "/tmp/pypetest/%03d_test_in_2.txt" % chunk_id
+            with open(  self.outf._path , "w") as f:
+                f.write("file%02d\n" % chunk_id)
+            return self.inf._path
+
+        assert len(test_fun_2.getTasks()) == nChunk 
+        for i in range(nChunk):
+            test_fun_2[i]()
+
+        outfileObj.getGatherTask()()
+
+    def test_pype_scattered_tasks_3(self):
+        import os
+        #os.system("rm -rf /tmp/pypetest/*")
+        nChunk = 5 
+
+
+        infileObj0 =\
+        pypeflow.data.PypeLocalFile(
+                      "file://localhost/tmp/pypetest/test_in_0.txt")
+        with open(infileObj0.localFileName,"w") as f:
+            f.write("prefix:")
+
+        infileObj =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_in_3.txt", 
+                      nChunk = nChunk)
+
+        with open(infileObj.localFileName, "w") as f:
+            for i in range(nChunk):
+                f.write("file%02d\n" % i)
+
+        def scatter(*argv, **kwargv):
+            outputObjs = sorted( kwargv["outputDataObjs"].items() )
+            nOut = len(outputObjs)
+            outputObjs = [ (o[0], o[1], open(o[1].localFileName, "w")) for o in outputObjs]
+            with open(kwargv["inputDataObjs"]["completeFile"].localFileName,"r") as f:
+                i = 0
+                for l in f:
+                    outf = outputObjs[i % nOut][2]
+                    outf.write(l)
+                    i += 1
+            for o in outputObjs:
+                o[2].close()
+
+        PypeShellTask = pypeflow.task.PypeShellTask
+        PypeTask = pypeflow.task.PypeTask
+        PypeTaskBase = pypeflow.task.PypeTaskBase
+        infileObj.setScatterTask(PypeTask, PypeTaskBase, scatter)
+        infileObj.getScatterTask()()
+        
+        def gather(*argv, **kwargv):
+            inputObjs = sorted( kwargv["inputDataObjs"].items() )
+            with open(kwargv["outputDataObjs"]["completeFile"].localFileName,"w") as outf:
+                for k, subfile in inputObjs:
+                    f = open(subfile.localFileName)
+                    outf.write(f.read())
+                    f.close()
+
+        outfileObj3 =\
+        pypeflow.data.PypeSplittableLocalFile(
+                      "splittablefile://localhost/tmp/pypetest/test_out_3.txt", 
+                      nChunk = nChunk)
+
+        outfileObj3.setGatherTask(PypeTask, PypeTaskBase, gather)
+
+        PypeScatteredTasks = pypeflow.task.PypeScatteredTasks
+
+        @PypeScatteredTasks( inputDataObjs = {"inf":infileObj, "prefix":infileObj0},
+                             outputDataObjs = {"outf":outfileObj3} )
+        def test_fun_3(*argv, **kwargv):
+            chunk_id = kwargv["chunk_id"]
+            self = test_fun_3[chunk_id]
+
+            assert self.inf._path == "/tmp/pypetest/%03d_test_in_3.txt" % chunk_id
+            with open( self.prefix.localFileName, "r") as f:
+                prefix = f.read()
+
+            with open( self.outf._path, "w") as f:
+                in_f = open(self.inf.localFileName,"r")
+                f.write(prefix + in_f.read())
+                in_f.close()
+            return self.inf._path
+
+        assert len(test_fun_3.getTasks()) == nChunk 
+        for i in range(nChunk):
+            test_fun_3[i]()
+
+        outfileObj3.getGatherTask()()
diff --git a/pypeFLOW/travis.sh b/pypeFLOW/travis.sh
new file mode 100755
index 0000000..651c8a8
--- /dev/null
+++ b/pypeFLOW/travis.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# -e: fail on error
+# -v: show commands
+# -x: show expanded commands
+set -vex
+
+#env | sort
+sudo mkdir -p /tmp
+sudo chmod a+wrx /tmp
+python setup.py install
+nosetests --with-doctest -v pypeflow/
diff --git a/travis.sh b/travis.sh
index 27dcfb9..439a78e 100755
--- a/travis.sh
+++ b/travis.sh
@@ -1,20 +1,14 @@
-#!/bin/sh
+#!/bin/bash
 # -e: fail on error
 # -v: show commands
 # -x: show expanded commands
 set -vex
 
 #env | sort
-mkdir -p fc-env
-rm -f fc-env/bin/python
-virtualenv -p python2.7 fc-env || ../virtualenv/virtualenv.py fc-env
-. fc-env/bin/activate
-python setup.py -v install
-python -c 'import falcon_kit; print falcon_kit.falcon'
-
-# When doctests are passing, add this:
-pip install nose
-nosetests -v test/
-nosetests -v --with-doctest falcon_kit/functional.py
-# We cannot run that on *all* modules because some include dependencies.
-# Just pypeFLOW for now, but I would rather not test dependencies.
+#sudo pip install virtualenv
+time date  # sanity check, since we use 'time' and 'date' in our scripts
+make init # Travis pulls submodules for us, but not --recursive
+source env.sh
+make config-edit-user
+make -j all
+make test

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/falcon.git



More information about the debian-med-commit mailing list